ZGlmZiAtLWdpdCBhLy5naXRhdHRyaWJ1dGVzIGIvLmdpdGF0dHJpYnV0ZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM4ZDBjZgotLS0gL2Rldi9udWxsCisrKyBiLy5naXRhdHRyaWJ1dGVzCkBAIC0wLDAgKzEsNDIgQEAKKyMgQmluYXJ5IGRhdGEgdHlwZXMKKyouYWlmIGJpbmFyeQorKi5haWZjIGJpbmFyeQorKi5haWZmIGJpbmFyeQorKi5hdSBiaW5hcnkKKyouYm1wIGJpbmFyeQorKi5kYiBiaW5hcnkKKyouZXhlIGJpbmFyeQorKi5pY25zIGJpbmFyeQorKi5naWYgYmluYXJ5CisqLmljbyBiaW5hcnkKKyouanBnIGJpbmFyeQorKi5wY2sgYmluYXJ5CisqLnBuZyBiaW5hcnkKKyoudGFyIGJpbmFyeQorKi53YXYgYmluYXJ5CisqLndobCBiaW5hcnkKKyouemlwIGJpbmFyeQorCisjIFNwZWNpZmljIGJpbmFyeSBmaWxlcworTGliL3Rlc3Qvc25kaGRyZGF0YS9zbmRoZHIuKiBiaW5hcnkKKworIyBUZXh0IGZpbGVzIHRoYXQgc2hvdWxkIG5vdCBiZSBzdWJqZWN0IHRvIGVvbCBjb252ZXJzaW9uCitMaWIvdGVzdC9jamtlbmNvZGluZ3MvKiAtdGV4dAorTGliL3Rlc3QvZGVjaW1hbHRlc3RkYXRhLyouZGVjVGVzdCAtdGV4dAorTGliL2VtYWlsL3Rlc3QvZGF0YS8qLnR4dCAtdGV4dAorTGliL3Rlc3QveG1sdGVzdGRhdGEvKiAtdGV4dAorCisjIFNwZWNpYWwgZmlsZXMgaW4gdGhpcmQgcGFydHkgY29kZQorTW9kdWxlcy96bGliL3psaWIubWFwIC10ZXh0CisKKyMgQ1JMRiBmaWxlcworKi5iYXQgdGV4dCBlb2w9Y3JsZgorKi5wczEgdGV4dCBlb2w9Y3JsZgorKi5zbG4gdGV4dCBlb2w9Y3JsZgorKi52Y3hwcm9qKiB0ZXh0IGVvbD1jcmxmCisqLnZjcHJvaiB0ZXh0IGVvbD1jcmxmCisqLnZzcHJvcHMgdGV4dCBlb2w9Y3JsZgorKi5wcm9wcyB0ZXh0IGVvbD1jcmxmCisqLnByb2ogdGV4dCBlb2w9Y3JsZgorUENidWlsZC9yZWFkbWUudHh0IHRleHQgZW9sPWNybGYKK1BDL3JlYWRtZS50eHQgdGV4dCBlb2w9Y3JsZgpkaWZmIC0tZ2l0IGEvLmdpdGh1Yi9hcHB2ZXlvci55bWwgYi8uZ2l0aHViL2FwcHZleW9yLnltbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODMwNjY2Ci0tLSAvZGV2L251bGwKKysrIGIvLmdpdGh1Yi9hcHB2ZXlvci55bWwKQEAgLTAsMCArMSwzNiBAQAordmVyc2lvbjogMi43YnVpbGR7YnVpbGR9CitjbG9uZV9kZXB0aDogNQorYnJhbmNoZXM6CisgIG9ubHk6CisgICAgLSBtYXN0ZXIKKyAgICAtIC9cZFwuXGQvCisgICAgLSBidWlsZGJvdC1jdXN0b20KK2NhY2hlOgorICAtIGV4dGVybmFscyAtPiBQQ2J1aWxkXCoKK2JlZm9yZV9idWlsZDoKKyAgLSBwczogfCsKKyAgICAgIGlmICgkZW52OkFQUFZFWU9SX1JFX0JVSUxEKSB7CisgICAgICAgIGVjaG8gJ0RvaW5nIGZ1bGwgYnVpbGQgZHVlIHRvIHJlLWJ1aWxkIHJlcXVlc3QuJworICAgICAgfSBlbHNlaWYgKCEkZW52OkFQUFZFWU9SX1BVTExfUkVRVUVTVF9IRUFEX0NPTU1JVCkgeworICAgICAgICBlY2hvICdOb3QgYSBQUiwgZG9pbmcgZnVsbCBidWlsZC4nCisgICAgICB9IGVsc2UgeworICAgICAgICBnaXQgZmV0Y2ggLXEgb3JpZ2luICtyZWZzL2hlYWRzLyRlbnY6QVBQVkVZT1JfUkVQT19CUkFOQ0gKKyAgICAgICAgJG1lcmdlYmFzZSA9IGdpdCBtZXJnZS1iYXNlIEhFQUQgRkVUQ0hfSEVBRAorICAgICAgICAkY2hhbmdlcyA9IGdpdCBkaWZmIC0tbmFtZS1vbmx5IEhFQUQgJG1lcmdlYmFzZSB8IGdyZXAgLXZFICcoXC5yc3QkKXwoXkRvYyl8KF5NaXNjKScKKyAgICAgICAgSWYgKCEkY2hhbmdlcykgeworICAgICAgICAgIGVjaG8gJ09ubHkgZG9jcyB3ZXJlIHVwZGF0ZWQsIHN0b3BwaW5nIGJ1aWxkIHByb2Nlc3MuJworICAgICAgICAgIEV4aXQtQXBwdmV5b3JCdWlsZAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGVjaG8gJ0RvaW5nIGZ1bGwgYnVpbGQgZHVlIHRvIG5vbi1kb2MgY2hhbmdlcyBpbiB0aGVzZSBmaWxlczonCisgICAgICAgICAgZWNobyAkY2hhbmdlcworICAgICAgICB9CisgICAgICB9CisKKworYnVpbGRfc2NyaXB0OgorICAtIGNtZDogUENidWlsZFxidWlsZC5iYXQgLWUKKyAgLSBjbWQ6IFBDYnVpbGRccHl0aG9uLmV4ZSAtbSB0ZXN0LnB5dGhvbmluZm8KK3Rlc3Rfc2NyaXB0OgorICAtIGNtZDogUENidWlsZFxydC5iYXQgLXEgLXVhbGwgLXUtY3B1IC11LWxhcmdlZmlsZSAtcndXIC0tc2xvd2VzdCAtajIKK2Vudmlyb25tZW50OgorICBIT1NUX1BZVEhPTjogQzpcUHl0aG9uMzZccHl0aG9uLmV4ZQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9yZSBiLy5naXRpZ25vcmUKaW5kZXggYTgyMWYxMC4uYjEyZjkwMSAxMDA2NDQKLS0tIGEvLmdpdGlnbm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xLDMgKzEsNyBAQAorIyBUd28tdHJpY2sgcG9ueSBmb3IgT1NYIGFuZCBvdGhlciBjYXNlIGluc2Vuc2l0aXZlIGZpbGUgc3lzdGVtczoKKyMgSWdub3JlIC4vcHl0aG9uIGJpbmFyeSBvbiBVbml4IGJ1dCBzdGlsbCBsb29rIGludG8gLi9QeXRob24vIGRpcmVjdG9yeS4KKy9weXRob24KKyEvUHl0aG9uLwogKi5jb3ZlcgogKi5vCiAqLm9yaWcKQEAgLTUsNiArOSw3IEBACiAqLnB5ZAogKi5weW8KICoucmVqCisqLnN3cAogKn4KICouZ2M/PwogKi5wcm9mY2xhbmc/CkBAIC0xNiwxMiArMjEsMzEgQEAKIERvYy90b29scy9weWdtZW50cy8KIERvYy90b29scy9zcGhpbngvCiBMaWIvbGliMnRvMy8qLnBpY2tsZQorTWFrZWZpbGUKIE1ha2VmaWxlLnByZQogTWlzYy9weXRob24ucGMKIE1vZHVsZXMvU2V0dXAKIE1vZHVsZXMvU2V0dXAuY29uZmlnCiBNb2R1bGVzL1NldHVwLmxvY2FsCiBNb2R1bGVzL2xkX3NvX2FpeAorUEMvcHl0aG9uX250Ki5oCitQQy9weXRob25udF9yYyouaAorUEMvKi8qLmV4ZQorUEMvKi8qLmV4cAorUEMvKi8qLmxpYgorUEMvKi8qLmJzYworUEMvKi8qLmRsbAorUEMvKi8qLnBkYgorUEMvKi8qLnVzZXIKK1BDLyovKi5uY2IKK1BDLyovKi5zdW8KK1BDLyovV2luMzItdGVtcC0qCitQQy8qL3g2NC10ZW1wLSoKK1BDLyovYW1kNjQKK1BDYnVpbGQvKi5pbGsKK1BDYnVpbGQvKi51c2VyCitQQ2J1aWxkLyouc3VvCitQQ2J1aWxkLyouKnNkZgogUENidWlsZC8qLmJzYwogUENidWlsZC8qLmRsbAogUENidWlsZC8qLmV4ZQpAQCAtMzEsMTggKzU1LDMyIEBACiBQQ2J1aWxkLyoubwogUENidWlsZC8qLnBkYgogUENidWlsZC9XaW4zMi10ZW1wLSoKK1BDYnVpbGQvKi5WQy5kYgorUENidWlsZC8qLlZDLm9wZW5kYgorUENidWlsZC9hbWQ2NC8KK1BDYnVpbGQvb2JqLworUENidWlsZC93aW4zMi8KIFBhcnNlci9wZ2VuCiBQYXJzZXIvcGdlbi5zdGFtcAogYXV0b200dGUuY2FjaGUKIGJ1aWxkLworY29uZmlnLmNhY2hlCiBjb25maWcubG9nCiBjb25maWcuc3RhdHVzCiBsaWJweXRob24qLmEKIGxpYnB5dGhvbiouc28qCitsaWJweXRob24qLmR5bGliCitsaWJweXRob24qLmRsbAorcGxhdGZvcm0KK3B5YnVpbGRkaXIudHh0CiBweXRob24kCi1weXRob24tZ2RiLnB5CitweXRob24uYmF0CitweXRob24uZXhlCitweXRob24qLWdkYi5weQogdGFncworVEFHUwogLmNvdmVyYWdlCiBjb3ZlcmFnZS8KIGV4dGVybmFscy8KIGh0bWxjb3YvCitnbW9uLm91dApkaWZmIC0tZ2l0IGEvLmhnZW9sIGIvLmhnZW9sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGJlODI4Li4wMDAwMDAwCi0tLSBhLy5oZ2VvbAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVtwYXR0ZXJuc10KLQotIyBOb24gaHVtYW4tZWRpdGFibGUgZmlsZXMgYXJlIGJpbmFyeQotCi0qKi5kc3AgID0gQklOCi0qKi5kc3cgID0gQklOCi0qKi5tayAgID0gQklOCi0qKi5zbG4gID0gQklOCi0qKi52Y3Byb2ogID0gQklOCi0qKi52c3Byb3BzID0gQklOCi0KLSoqLmFpZiAgPSBCSU4KLSoqLmFpZmMgPSBCSU4KLSoqLmFpZmYgPSBCSU4KLSoqLmF1ICAgPSBCSU4KLSoqLmJtcCAgPSBCSU4KLSoqLmJsb2IgPSBCSU4KLSoqLmRiICAgPSBCSU4KLSoqLmV4ZSAgPSBCSU4KLSoqLmljbnMgPSBCSU4KLSoqLmdpZiAgPSBCSU4KLSoqLmljbyAgPSBCSU4KLSoqLmluZm8gPSBCSU4KLSoqLmpwZyAgPSBCSU4KLSoqLnBjayAgPSBCSU4KLSoqLnBuZyAgPSBCSU4KLSoqLnBzZCAgPSBCSU4KLSoqLnRhciAgPSBCSU4KLSoqLndhdiAgPSBCSU4KLSoqLndobCAgPSBCSU4KLSoqLnhhciAgPSBCSU4KLSoqLnppcCAgPSBCSU4KLQotTGliL2VtYWlsL3Rlc3QvZGF0YS9tc2dfMjYudHh0ID0gQklOCi1MaWIvdGVzdC9jamtlbmNvZGluZ3MvKiA9IEJJTgotTGliL3Rlc3QvZGVjaW1hbHRlc3RkYXRhLyouZGVjVGVzdCA9IEJJTgotTGliL3Rlc3Qvc25kaGRyZGF0YS9zbmRoZHIuKiA9IEJJTgotCi0jIFdpbmRvd3MgYmF0Y2ggZmlsZXMgd29yayBiZXN0IHdpdGggQ1JMRiwgdGhlcmUgY2FuIGJlIHN1YnRsZSBwcm9ibGVtcyB3aXRoIExGCi0qKi5iYXQgPSBDUkxGCi0KLSMgVGhlIFdpbmRvd3MgcmVhZG1lIGlzIGxpa2VseSB0byBiZSByZWFkIGluIE5vdGVwYWQsIHNvIG1ha2UgaXQgcmVhZGFibGUKLVBDYnVpbGQvcmVhZG1lLnR4dCA9IENSTEYKLVBDL1ZTOS4wL3JlYWRtZS50eHQgPSBDUkxGCi0KLSMgQWxsIG90aGVyIGZpbGVzICh3aGljaCBwcmVzdW1hYmx5IGFyZSBodW1hbi1lZGl0YWJsZSkgYXJlICJuYXRpdmUiLgotIyBUaGlzIG11c3QgYmUgdGhlIGxhc3QgcnVsZSEKLQotKiogPSBuYXRpdmUKLQotW3JlcG9zaXRvcnldCi1uYXRpdmUgPSBMRgpkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNjY2MmEwLi4wMDAwMDAwCi0tLSBhLy5oZ2lnbm9yZQorKysgL2Rldi9udWxsCkBAIC0xLDkyICswLDAgQEAKLS5nZGJfaGlzdG9yeQotLnB1cmlmeQotLnN2bi8KLV4uaWRlYS8KLS5EU19TdG9yZQotTWFrZWZpbGUkCi1NYWtlZmlsZS5wcmUkCi1UQUdTJAotYXV0b200dGUuY2FjaGUkCi1idWlsZC8KLWJ1aWxkbm8kCi1jb25maWcuY2FjaGUKLWNvbmZpZy5sb2cKLWNvbmZpZy5zdGF0dXMKLWNvbmZpZy5zdGF0dXMubGluZW5vCi1kYl9ob21lCi1wbGF0Zm9ybSQKLXB5Y29uZmlnLmgkCi1weXRob24kCi1weXRob24uYmF0JAotcHl0aG9uLmV4ZSQKLXJlZmxvZy50eHQkCi10YWdzJAotTGliL3BsYXQtbWFjL2Vycm9ycy5yc3JjLmRmLnJzcmMKLU1pc2MvcHl0aG9uLnBjCi1Nb2R1bGVzL1NldHVwJAotTW9kdWxlcy9TZXR1cC5jb25maWcKLU1vZHVsZXMvU2V0dXAubG9jYWwKLU1vZHVsZXMvY29uZmlnLmMKLU1vZHVsZXMvbGRfc29fYWl4JAotUGFyc2VyL3BnZW4kCi1QYXJzZXIvcGdlbi5zdGFtcCQKLV5sY292LXJlcG9ydC8KLV5jb3JlCi1ecHl0aG9uLWdkYi5weQotXnB5YnVpbGRkaXIudHh0Ci0KLXN5bnRheDogZ2xvYgotcHl0aG9uLmV4ZS1nZGIucHkKLWxpYnB5dGhvbiouYQotbGlicHl0aG9uKi5zbyoKLSouc3dwCi0qLm8KLSoucHljCi0qLnB5bwotKi5weWQKLSouY292ZXIKLSp+Ci0qLmdjPz8KLSoucHJvZmNsYW5nPwotKi5wcm9mcmF3Ci0qLmR5bgotTGliL2Rpc3R1dGlscy9jb21tYW5kLyoucGRiCi1MaWIvbGliMnRvMy8qLnBpY2tsZQotTGliL3Rlc3QvZGF0YS8qCi1NaXNjLyoud3B1Ci1QQy9weXRob25fbnQqLmgKLVBDL3B5dGhvbm50X3JjKi5oCi1QQy8qLyouZXhlCi1QQy8qLyouZXhwCi1QQy8qLyoubGliCi1QQy8qLyouYnNjCi1QQy8qLyouZGxsCi1QQy8qLyoucGRiCi1QQy8qLyoudXNlcgotUEMvKi8qLm5jYgotUEMvKi8qLnN1bwotUEMvKi9XaW4zMi10ZW1wLSoKLVBDLyoveDY0LXRlbXAtKgotUEMvKi9hbWQ2NAotUENidWlsZC8qLnVzZXIKLVBDYnVpbGQvKi5zdW8KLVBDYnVpbGQvKi4qc2RmCi1QQ2J1aWxkLyotcGdpCi1QQ2J1aWxkLyotcGdvCi1QQ2J1aWxkLy52cwotUENidWlsZC8qLmRsbAotUENidWlsZC8qLmV4cAotUENidWlsZC8qLmV4ZQotUENidWlsZC8qLmlsawotUENidWlsZC8qLmxpYgotUENidWlsZC8qLnBkYgotUENidWlsZC9hbWQ2NAotUENidWlsZC9vYmoKLSouZ2NkYQotKi5nY25vCi0qLmdjb3YKLWNvdmVyYWdlLmluZm8KLS5jb3ZlcmFnZQotY292ZXJhZ2UvCi1leHRlcm5hbHMvCi1odG1sY292LwpkaWZmIC0tZ2l0IGEvLmhndGFncyBiLy5oZ3RhZ3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmYjY0MmUuLjAwMDAwMDAKLS0tIGEvLmhndGFncworKysgL2Rldi9udWxsCkBAIC0xLDE3NyArMCwwIEBACi02NGNjNTQzOWUxMGE2ZmRmOTg0ZWZmYWYwMTQxZTk0ZmE0Y2MxMDA0IHYwLjkuOAotNzhhN2VkNjk1MzAyNWU3ZWNkZGU5NTg1MDk5YjAxYTZhZTQwYjc2YSB2MC45LjkKLWIxNWI4Y2M5YjhkMTBlMDM1MmEwYjhiN2U4ZDUxZmEzMDlkYjZkZjMgdjEuMC4xCi0wMzI2YjVkNjE0NDVlZTNhOGQzZGUyODExOWY5NjUyY2I3MmQyZTNmIHYxLjAuMgotODMyNjE1ZWMwNzY0NmUzMTBjODUzMTZiOGJhNmJjOWIxN2FkMzU0NyB2MS4xCi05ODk1NDc1ZDE4YzdiNWYzMmFkYWY3OGY3MTg4NmFlMDQxZTRkMTBjIHYxLjEuMQotMTZlYjRjNTFlZTk3MTY5MDQ2MzQwOTk4ZTg1MGE2M2M2NTIyNWIwYSB2MS4yYjEKLWI0NWM2ODg3NTZkMDRmYjg0ZDRhMGQ1MThmYzNkN2UzY2IyNWZhOGQgdjEuMmIyCi05ZTgyZGFmNzYwNWJhZDc5NzZhOWFiYzk5N2NiNWUwYWJlNDM0MDc4IHYxLjJiMwotMDY1ZTMxY2Y1ODYyZTI3NTIxY2Y1NzI1YjAwM2FlZDIxMWYwOTFiMiB2MS4yYjQKLWU3MjI1N2U2NTU0NTRkNTY5NDY4ZGE4YjExODllMGVjMzM2ZjM1MzYgdjEuMgotZTYzZDgzZjgyNzU4NTNhYWFhM2QxOTcyY2I4NjU2NDUwNWU2NTU4MyB2MS4zYjEKLTdkNzQzYzg2NWE5YWE2YmRlOGI2MDNlMzJlMDU0MjAzMWJiYTNjMzMgdjEuMwotNGZjODVjODJjYzIyMjU1NGFlNmI5YzBiODc3NzZlZDVmMmI3MGM2ZSB2MS40YjEKLTEyOWYxMjk5ZDRlOTdlODg0YmJiYmRkMDBiYWYxMDFkMTc4OTczZTYgdjEuNGIyCi00NGE4MmFjNjU0YTQxNzU1NjlkZWVkOGU4YTk0YjBjYzhlZGVlMDhkIHYxLjRiMwotZGI0OTQ5NGM5M2RjNzNkZTA2ZDU3MjFjNzRlYWI1MzNhOTQ3YTkyYyB2MS40Ci0wNjJhZWQ4YTRjZTJjOTFjODFiODBlMjlmMDJmYWZmMWNmNWE3NjFiIHYxLjVhMQotYzk0OThhYzk4ODM3MjU3NWNmNzAyOGI4NjM5NWI5MDBjOWIwYTg0MCB2MS41YTIKLWRjNWM5NjhlYzk5MmFhYjNkNDBhNzE4OWRmMGM0NDNkMWM3YTFhNjggdjEuNWEzCi03NDY2NTRhMGFmNjgwYzdkOWI4MTRiMjEwYTAyNmViOTFiZWM5NTMzIHYxLjVhNAotOGZmNThiNTczMGYwNmJlMDhmYmJkYzJiZjU5MjIyNmY3YTczNjIwMSB2MS41YjEKLWViNzg2NThkODE5ZmIwYWYwOWE4ZTZmOWJlZGNiNjcwODA1ZWQ1ZjYgdjEuNWIyCi04NDQ2MTAxMWExYTBhYjQwMmUzNTJmMDY3NDhmMjlmYjViNTU1OWU1IHYxLjUKLTQ0YWJhNGQyNmIwMWZiYWUwNDAzZWZlNjU0ZjlmZDAzNDc2MDY3MzIgdjEuNS4xCi1mZWQ2M2NjYmU2ZGMzYWM2NjNiZmU5N2EyZjcwMDZiMWIyODU2OGY5IHYxLjUuMmExCi0yMWQ3MWYyZTI3MjQ4YTBmNGUzOTNkMGZjMzIxZWNmOWI4OTMyMWQyIHYxLjUuMmEyCi1mMDhjN2EyYTU2ZjgwNzQxZjVmMTkyZmQwZWJlMGIwOTY3YTIwM2NmIHYxLjUuMmIxCi04ZmU3ZWM0YjRmYzE1MThmY2FjODllNmJmNjc0ZmJiY2UxNjE1MGE5IHYxLjUuMmIyCi0zOWZiMGRjYzgzZGMzNzVjMTU2NWJhNjVkYmNlMGVkNTliMTM1OWM5IHYxLjUuMmMxCi02MWM5MWM3ZjEwMWJhYjMxNDlhZGZjZDU2NDZhZTQwZTA0OGRlNzEyIHYxLjUuMgotNjA1ZWI5MzI2ZmZlMWZkMWU0M2Y0MGUyMzM4ZDY2NTJhYjQ0OWZkZiB2MS42YTEKLTAxMWJlZThmZDlmN2Y0ZGE0NTdlYzcxNTk2NDg0ZmIwODgyYzA2MTQgdjEuNmEyCi0zNWM0ZmMxNDE0YTU5ODg4NjE0YjliZTc4NGEyNWYyMzNiYTY3OTg0IHYyLjBiMQotNTViYmExOTdkNDg3MGNkYWU2MmFlY2EwMGUyMDI0MGE3NTZiODRmOCB2Mi4wYjIKLWUyNzYzMjljY2UwMzZhNWY5ZTlkMzQ1MTI1NmRjYTU5ODRlNTQzZGMgdjIuMGMxCi0yZmE0ZTM1MDgzZTAyMzQyY2EwMTRiZjViZmJhNDZhZWNiODE2YzMxIHYyLjAKLTgzNDU5Y2MxOTFjMWM5YzhjYzZiMDhhZGE5OWMwMmYwYWY2YWQ1NGYgdjIuMC4xYzEKLTczZGU5NGE3MjJkMjA2YTQ1YzBiNDlkMzAxMWM2MjllYWQ0ZDYyYjEgdjIuMC4xCi1iNjA4MzFlZWFiNWEwNmRkM2M1ZTgyOTdhOTllMzkyOTdhYTg3OTRiIHYyLjFhMQotYjM4MmYxZjA3ZWM2YjJjOTU1NTE2NThiMzBjNjEzOWVlYjMyMDc3YSB2Mi4xYTIKLWQwYzgzMGRiNWU2OGVkZDRhYWEzNDAxMjE2ZTYxMGM5ZmYxNDU4MjYgdjIuMWIxCi1iNTlhNTM2YWUxZWYzNzc0ZmQ4NWMxN2Y2MjNlODkyNmI3YjZjMDk1IHYyLjFiMgotZDYxMTI3NmU5YWQ1M2I1ZDMyZDFlODA2NWUxZDgxMWMzMmY3ZDk2ZiB2Mi4xYzEKLWZmMDY1ZTY3NGFmNmM5YWI4OTViZDllZmY3ZDllOTAzOWEzNzZjN2QgdjIuMWMyCi0wMjBlOTVkODE4MGQ3OTQzZmU1NDcwMWUxZGIwYTdkN2Q4N2UyYjFlIHYyLjEKLTIyYmVkMmRkMWIyODY1NjRkZWE0ZDlhNjdkNGVkODBkYzMyMjUxOTMgdjIuMS4xYzEKLTU3MjUzM2EzMDM4ZDE4MzJjOGEyMDBmYjg3MTgxMTJkZDgzNzU4ZTkgdjIuMS4xCi1mNzZhNDI1YjE0ZTRlZThhZGU1ZTkyMzk1OTg1Mzg1MzRiM2E5MGE0IHYyLjEuMmMxCi1jZjMxYjEwZTQ1YjQ4NjE1MDk0Y2FlOTBlM2M1YmQwNzI1ODdkOGU2IHYyLjEuMgotN2QxNTA0YzgwZmEwNzJiNGJhODZlZGRhMTNhMTNiMGEwNWFlOGVhYiB2Mi4xLjMKLTA4Nzk2YTEzN2YxYWRhMjQ2MmY3YTMxNzczMDZkZjVmNjdhNzY3ZTEgdjIuMmEzCi03NjU0MzRlN2FhMDE5YzFiYjgyZjk4MTNiODAyNTgzMDg2N2NiZGMwIHYyLjIuMWMxCi0xMWM5NTJjN2Q0YmU2NjM4MDQwNzY0OTEwYmU4MGJkOWMzYzE3ZGU2IHYyLjIuMWMyCi00MDQ1ZTZlOTJmYWZhYmFkNDJmNmM5OTg5YjY3MDc2ZmJhZDQ1MmNhIHYyLjIKLTM5NDc5MDMxNmFhMzgwZDIyZTRkNjcwYmM2OWE2MzllNzI1ZjAzMDAgdjIuMi4xCi0wMTI4MzEzYzI4NTVkNzE3NTNmMDBmY2NjNjBiYjM5ZWQ5MmEwYzU0IHYyLjIuMmIxCi02MWQ1MzE1MzNhODYyMjRhMWMyNjkxN2MxODAxM2Q5MWY1OTJmYmZiIHYyLjIuMgotYWM3N2I5MTM0MjUzNGQwOWIxZTQzMmUxZGMzYjcwZGJiZWMzYTkxOSB2Mi4yLjNjMQotZjRmMTM0YWQ0NmFiZDBiYzk3M2QzZjYwOTRlYTU2ZTYyYWM1YzQ5MiB2Mi4yLjMKLWQwNTRjMjk2NDdmOTBiY2NiODM0NWJkNzc5YmNhMWVlY2YyZGQ3ZjIgdjIuM2MxCi1mY2U1YzllOWFiYzcyMjM5NGNiMmU5MDliN2UyYTM5MDgwZDQ0NDhlIHYyLjNjMgotZmE2NWY2NTI3ZmUxMzRhYTk3ZTAzZTFiMmFmMzY1ZDQ0M2I2N2RjNyB2Mi4zLjEKLTdkNzM2MmE3MTI1M2JmZjRmYzFiMGM4MjVjMTQ1Njk3NzhkYjhjMzYgdjIuMy4yYzEKLWJlMjUzM2ZiMTBhNTg3YzhkYTg5YjE4YzVmMzgxZjQ3OGQ3MjA1OTMgdjIuMy4yCi1kMjFkNGJhMmY5NzM0NjdkMzA3OTRhM2QyYWM0OTM2NTgxODBlNTAzIHYyLjMuM2MxCi1hOGYxMjg2ZjIxNzEyOWNkYjUzZTMyMGVlMTI1ZDJjMmM4MGUxMzc3IHYyLjMuMwotMzYzOTg2MWQwMjY0NmFmMWRhMzEyM2MyNTU2MGM0ZGIzZDdlZGJjZSB2Mi4zLjRjMQotYTc0ZjkwODFjNjk3MDg3OGNhYmUxNTFmOTY5NjE3NTg3OTE1NDAwYyB2Mi4zLjQKLTI2MzliMTBkYWE5ODViMjBiM2NhYmVjNDUxNjlkNTIzY2FjMjlkNjggdjIuMy41YzEKLWQyMjg1MDk0MjQxNzJmOTc3ZWRhZDRmNzg2MGE5Yzc0N2NkNjU1YzggdjIuMy41Ci1iMjE0MjdmZjI2NDc1ZjljN2Y0YTcwMWRhMzI0ZTk1MWMyYjE2MmZlIHYyLjMuNmMxCi0zYjZmYjU0MzljMTA2MWE5NDE0MDEyNDUwNzZjMzE1YmVhZmNjNzg3IHYyLjMuNgotODkzYzdiZDRhOTJiZDg4OWE4NWU2OTFmNDkxODhjMzdiMGE3MjM1NyB2Mi4zLjdjMQotMjAyMjk0M2FkNDUwYzQxZDY0NzA4ZmI1Y2FjYTJkMjY3MmI1YjhmOCB2Mi4zLjcKLTkyY2E2NThmZDQyMDA5NWI2Mjg0YzljZTZlOTA4MmE4MDI4NWVjOWMgdjIuNGExCi0wNTVmYzY5NTVmM2M2NTIyYmZlYjdlZDRjNjcxYzk3ZDViYWFhYWMyIHYyLjRhMgotMTg2YjcyNTUwZTUzNTMzZWY2MTc1ZjY0MTFmOTMyYzEyOTgxOTNkNyB2Mi40YTMKLTUzY2ZmMDQyODM4NTVhZGY4OGVkMGMwZmQzNjk4ODI3Y2E4NDM2MzcgdjIuNGIxCi03ZTM4N2E5ZGNjNzk5NTRhNzc2OTVhZGVmOGI1OTNkYTM1YmUxMjE0IHYyLjRiMgotZmY4MGQ4YmJlZjZlMTM0MjZjOGE4NWQ3ZjlkODM3YjhmOGY4OTgzNCB2Mi40YzEKLWYzMWUxOGQzMTNjN2E0ZmM2NjkxNGIyZDI3ZTEzMGEwZjcyYzBiNjkgdjIuNAotMTE5NWY5YmEzNDM5MDk3Y2M1YjVhMzY3ZTNhZTFiNDNmMTU3YjI2NCB2Mi40LjFjMQotMzMzY2YzMDM1NDNiNjgwZWM1ZTNmZGY3ZThjOTY2MWY5NDg4YTUwZSB2Mi40LjFjMgotZjkwNTRkMjM1ODcwMDI5YWZhMzNlZjk0NWJjYTdlY2U5OTYxNmMxMCB2Mi40LjEKLWQwMmQzODc1NTRlMjAwYmVmY2VlYzk5OWI3ODhmNDU5M2I0MzRiNDkgdjIuNC4yYzEKLThkMzcyNzZmZGYwNzdkNmQyM2Q5NjNkM2Y3Zjk1MzgxZDAwZjE5MjYgdjIuNC4yCi03YzViZTdjMGZkZmRiYmMwYWMxZDkxYzA3MDM4YmM4MTQxMmRhNDEyIHYyLjQuM2MxCi04Y2NhMjQ5MjYyNmNlNDA4Y2Q1NjcxMTA4MTFjMDY5MmZkMWQzN2RkIHYyLjQuMwotYmFhZWVhNzIyYjFjOTdjYTAzMTc5ZTVhMDJhNDcxN2U3MDE3YmEyYSB2Mi40LjRjMQotNTkyYWM5MzUzMmVmZGZhOWE0MGY0N2I5NmIxYzEyMzFkMmVhZTBlNSB2Mi40LjQKLTFmN2Q2MjhjNzBhOWFlZmU3NjJjMmMzMjIxMDg3NmZhZjhkNjRjNzggdjIuNC41YzEKLWQ4ZGY0YWEwNjI2MWRlNWU0YzBhYTA1MWU0NDg2OTdkNDc5MWU0MzcgdjIuNC41Ci1hNmMzYzcxNWUyYjcwNzQwYzRiNmI0ZjdkYzZmNDdiMTZhN2U1OTA1IHYyLjQuNmMxCi1mM2YxZjE0NjJjODI1MzZiYjIzNzk2ZTcwYzg1NTIyMTQ0ZWUyNGRiIHYyLjQuNgotNjcxOTJkYTNlNjljOTg1YmIxMjcyZGE5MzJkN2RlNjA3MzAzM2ZhZCB2Mi41YTAKLTg5NmY5ZmVhZDE3ZTcyMGVjNGEyMWRlM2FjMjE0NTE4ZGE4NDg0NWYgdjIuNWExCi0yNmQwNzcwZjJiN2VlMjg5YTM5YTNiNTVkY2VjMWMxZWU2NTg0OWM1IHYyLjVhMgotZDQ5YjE5OGY1NDVjZDgyZmJmNzM1YTIyOTc5YzMzMmI4YTk3ZWVjYiB2Mi41YjEKLTAzYjZmZTU3Y2Q2ZGY1YmIzNGNhMTlmNGI3NjBiOTQzMTg2Y2M4MDYgdjIuNWIyCi1jMGFiYjE4Mjk5YjQ0MmUxMTYwZDJmOTU4YmNlMThmNjY4NTBjYWE5IHYyLjViMwotMmRjNjRkNTcwZThkN2E0NDk4YWI4NTAxMDhjODU3MDljMjc2ZGY5MyB2Mi41YzEKLWNjM2NiM2E4MjM3ZWE1NDVkYjkxN2Q4NGM0OWQ4YTBhNWUxNzVjYzEgdjIuNWMyCi1jMTBhNzFjZjE2ZTQ3MTQyNWU2ZDc1NjRlM2Y3YTY0OGYxNGI3MDJlIHYyLjUKLTQ3NzdjNDAwN2I1YjE5NDQyMzk1M2Q0MWIxZTVlNmFkYWFiYTZjNWQgdjIuNS4xYzEKLTQ5MGQ4YzA5YWJjYjgxNDk1MGJlN2JiN2EyNWMzZmYyMDQ3YzdlYjUgdjIuNS4xCi0wYThhYWU1NzVjZGRkYmYzZDEzM2ZjYjRlZWQ5MTA4MGUzZmU0MWYzIHYyLjUuMmMxCi0xZDUwOGJiYmRiNDlhMmIxMTYyOWVlMTg2YTYzOTI4MjkxYjA4Njk0IHYyLjUuMgotOTUzMGQzMzRkMjYyNDIxOWU3ZWUxYWVjYWYzMzUzMmU5MTAyNjZiYyB2Mi41LjNjMQotM2NjMDU2ZDIxYzJmNDQzNWE1MzRkMjMzNDViYWQ5YzBhOWQ5YjNjYiB2Mi41LjMKLWEwYTZkOTkwOTMxMmFkOWMxZDg0NGFmNjZlOWM5MTkzMWI5Mzg1MmEgdjIuNS40Ci02NTdmMTY1ODI5NDM3MzliOTA2ZjY2ZjdlZmFkNDAxNDQ5MmM4YjFjIHYyLjUuNWMxCi0xZGM5MWU5ZGQ1YzEzYTRiYzJkM2JiN2Q0YjU4OTZhYjI2NGYyMzI1IHYyLjUuNWMyCi03MDk4YTQ2ZjBiNzVlNWFhY2ZhZjgxZDY1ZDcyZTM2MTNiMDIzNTMyIHYyLjUuNQotYTg3YzdiOTY2NzJiNjlkZmZlZjY0YzU5YjU2ZmJhNWJiMjA1OWI5OSB2Mi41LjZjMQotZGUzNGM3YjA5N2U4ZDY2YjExNDBjMjExZGJkNjFkNDhiMzFiYTQ4MyB2Mi41LjYKLTJkMGJkMDk1YzQyMGIwNzExMDAwZDliZTY2ODQ4ZjZjZmQ5NzJiM2IgdjIuNmExCi1lZWMxNDQ5MTdhMTg5YmUxMWVkNWVmYTM1YzY2MDRkMDNiYzYyYmNjIHYyLjZhMgotNDhlOWZiMGE3MjE3OTk4NzdmMjZlZGFlZjAxYWM2ZTYwMjliNjgxMiB2Mi42YTMKLTJmMmYzMmFmOGM0ZWU4ZjY1OThmNjMyZGM4MzcwMWEyMDcyNmQxMGEgdjIuNmIxCi04MWVjODI2M2JkNmUyNWM5YTg4NTVjZDBjZTlhZTg4MTczMjk3MmJlIHYyLjZiMgotYzYyODYyZDczZjllYzY0ZDY1NTQ5NGNmMWY2MTQ0MzQ0NmYyZGVhMiB2Mi42YjMKLTFlYmIyYThjYzA2Yzk0NDcxZDcyYjU0NzZjMjA1MGM0ZDExNWExYWEgdjIuNnJjMQotNTI1NzkyMDk3YzYzMDhhNzhhNzZiN2I1ZjU2YmJkOGEyNGMyNmFjZiB2Mi42cmMyCi05NWZmZjVhNmEyNzY1MjBiMmU3ZTBmNzVmZTMwM2Y0OTM3NjU2N2E1IHYyLjYKLWNhYmYzMDNlNzg3YWE1Y2Q3MjA5YjQwZTNiMmNhYmEzZWU3NWM1YTUgdjIuNi4xCi0wMWYxYWU4MzYzMWFlODJiZDg1OThhMTFjMTdlM2Y5YjNmNTZjMzhhIHYyLjYuMmMxCi00ZmViYTA5YTgyNmJhOTllNWI0ODI3MDdiM2Q5NjQzZWJhMzQxNTZmIHYyLjYuMgotMTg3MzU0MmMwMDAwMGM0YjdjZTJjNzk5MmQxZjJkODdmODY2MjMyYSB2Mi42LjNyYzEKLTAwYzMzOTZkN2E4YzRhYjRjMmM4NDFkNjEwMTNhMDczYWU5MjFkMGYgdjIuNi4zCi0yNWFhOTBhNjg2NWI2MzEzMzk2MmRkNjQ2MjZjNTNjN2I2ZmQ0N2Q1IHYyLjYuNHJjMQotZWExZmRhZmJlNGZlMjQ1OGFjMTcyODdlMGQ2YzcwOWVkMDBmY2U1YyB2Mi42LjRyYzIKLTg4MDNjM2Q2MWRhMjc1YzcxY2FiZTllOWQwMjc0ZGFjOTkwMmUyYzAgdjIuNi40Ci1jOWY2OGU0MmFiNzk2YTNiYWI0ZjhjZjNjYzY5Y2UxMDUwM2NiOTkwIHYyLjYuNXJjMQotZmE0NjMwOTE2Njk5MDQ2MzU3YTVhYzE2ODg0ZjNmYzQ3YmQwZWFhNiB2Mi42LjVyYzIKLTk5YWY0YjQ0ZTdlNDkwMzkwODE3YTU5N2E1NDI1NDZkNzQ5ZTY5OGUgdjIuNi41Ci1jMWRjOWU3OTg2YTJhOGUxMDcwZWM3YmVlNzQ4NTIwZmViZWYzODJlIHYyLjYuNnJjMQotZTE4OWRjOGZkNjYxNTRlZjQ2ZDljZDIyNTg0ZDU2NjY5YjU0NGNhMyB2Mi42LjZyYzIKLTlmODc3MWUwOTA1Mjc3ZjhiM2MyNzk5MTEzYTA2MmZkYTQxNjQ5OTUgdjIuNi42Ci1jYWFiMDhjZDJiM2ViNWE2Zjc4NDc5YjI1MTNiNjVkMzZjNzU0ZjQxIHYyLjYuOHJjMQotMWQxYjdiOWZhZDQ4YmQwZGM2MGRjOGEwNmNjYTQ0NTllZjI3MzEyNyB2Mi42LjhyYzIKLWM5OTEwZmQwMjJmYzg0MmU1NTc4ZTFiZjVhMzBiYTU1YTM3MjM5ZmMgdjIuNi44Ci1iNDEwN2ViMDBiNDI3MWZiNzNhOWUxYjczNmQ0ZjIzNDYwOTUwNzc4IHYyLjdhMQotYWRjODVlYmM3MjcxY2MyMmUyNGU4MTY3ODJiYjJiOGQ3ZmEzYTZiMyB2Mi43YTIKLTQxODA1NTdiN2E5YmI5ZGQ1MzQxYTE4YWYxOTlmODQzZjE5OWU0NmUgdjIuN2EzCi1kMmUxMDI3ZWRkZTg0YTAyODUzZmNmOTc5MGYzMTFmMTBmNDZjZjBhIHYyLjdhNAotNjE1NTBhMTMwMmIwN2E3MzE0MzZhODRiMmQ4NmViMmJhYjNiMmZiMCB2Mi43YjEKLTZiYjk4OTFkNDI3NWJkNDJhNjliM2Q5MDNkMTNiNjg3NTQzYzkxNWQgdjIuN2IyCi0zODFjNWVlYjUxMTAzOGQwOTFkOGUwODA4YzRiODUwODdlZDJmNjg0IHYyLjdyYzEKLTEzZTViMGIyMDcxYTJhNDIwNjdmYjAzZmFjYzkzMTQwOWZhNmJhNTAgdjIuN3JjMgotMjE0NTU5M2QxMDhkZTYyZWJmNzcwOTg3YTRhYzJhNTdkMjY4YzlkMSB2Mi43Ci02M2Q5ZjAwZmVhMDczMGMxYzQzN2E1MGY2NGE0MmI3NzkyYmRjYmZiIHYyLjcuMXJjMQotNTM5NWY5NjU4OGQ0ZjAxOTlkMzI5Y2I3OWViMTA5NjQ4ZGM0ZWY1ZSB2Mi43LjEKLWY0ODc1NjY4NTQwNmU4ZDBmYTlkMjNkODQxZmNlYjA3ZTM2YTU2NTYgdjIuNy4ycmMxCi04NTI3NDI3OTE0YTI5ZDg5NWJjYjMwYmU3NmE0NjUxNDM5OTNhNzkzIHYyLjcuMgotYjJjNmFmZjk2ZTEyNTFhNGYwM2NmODY2ZTdlNzVmYjgyMzI4NjlmMiB2Mi43LjNyYzEKLWQ0NmMxOTczZDNjNDA3ZWNhYTZhOGVlMTZkM2ZhZDNlZjUwNmI1MWYgdjIuNy4zcmMyCi03MDI3NGQ1M2MxZGRjNjBjNWY5YTJiOGE0MjJhNDk4ODQwMjE0NDdjIHYyLjcuMwotYThkMTg3ODBiYzJiY2NmMTZiZjU4MDU4N2UxZTNjOTM0YTk4ZjZhNyB2Mi43LjRyYzEKLTAyNmVlMDA1N2UyZDMzMDVmOTBhOWRhNDFkYWY3YzNmOWViMWU4MTQgdjIuNy40Ci1hYjA1ZTdkZDI3ODg5YjkzZjIwZDk3YmFlODYxNzBhYWJmZTQ1YWNlIHYyLjcuNQotYTAwMjUwMzdmMTFhNzNkZjVhN2RkMDNlNWE0MDI3YWRhZDRjYjk0ZSB2Mi42LjlyYzEKLWZjYjNlYzI4NDJmOTk0NTQzMjI0OTJkZDBlYzJjZjAxMzIyZGYwOTMgdjIuNi45Ci00OTEzZDBlOWJlMzA2NjYyMThjYzRkNzEzOTM3ZTgxYzBlN2YzNDZhIHYyLjcuNnJjMQotM2ExZGIwZDI3NDdlYzJkNDdhODY5M2VkNTY1MGYzNTY3MTYxYTIwMCB2Mi43LjYKLWUzMmUzYTlmMzkwMjEyNDYzYzIyNTA5ZDBmOWFlYWQ4MDUxY2VlNjMgdjIuNy43cmMxCi1mODkyMTYwNTllZGY3NzY2MGVmMWViMmE5OGU4ODM1MjU1MWRhMWQ2IHYyLjcuNwotZWU4NzljMGZmYTExY2FhYTM0YmYwMTUzN2UxYzQ0MTFkZDk0ODU1MiB2Mi43LjgKLTQwZWFkYTI3ODcwMjM0OWEyYjJmMzM0YWE5ZDkxZmE3MDkwZWExZTMgdjIuNy45cmMxCi02NDhkY2FmYTdlNWY0MGRhMzEwNzliYzdhN2YwYzQ0NWYxZWE0YWI5IHYyLjcuOQotODBjY2NlMjQ4YmEyNjU3ZWQ1ZGEzY2NmNzk5OWYzNWI3ODgyN2Y1ZSB2Mi43LjEwcmMxCi0xNWM5NWI3ZDgxZGNmODIxZGFhZGUzNjA3NDFlMDA3MTQ2Njc2NTNmIHYyLjcuMTAKLTgyZGQ5NTQ1YmQ5M2Q2ZTdhOTgyMWUxZGFiYzdiMjU1MDhkMGZhM2EgdjIuNy4xMXJjMQotNmQxYjZhNjhmNzc1ZmFkYTk4NzdkMjk1ZTYyOTU4YmFmYTFjYTExZSB2Mi43LjExCi0xMzkxMmNkMWU3ZThmYzY5ODZmNDI4MjJmNTQzOWFlMWYyYmMwZDdkIHYyLjcuMTJyYzEKLWQzM2UwY2Y5MTU1NjcyM2ZiOGNlYmVmZGFkMWYzYmNlNDNiMjI0NGQgdjIuNy4xMgotNGQ2ZmQ0OWVlYjE0YmI0N2Y3MDAzMjVlYjkwZDc5ODlmYzllNDAyMCB2Mi43LjEzcmMxCmRpZmYgLS1naXQgYS8udHJhdmlzLnltbCBiLy50cmF2aXMueW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMWMyZWYKLS0tIC9kZXYvbnVsbAorKysgYi8udHJhdmlzLnltbApAQCAtMCwwICsxLDExMSBAQAorbGFuZ3VhZ2U6IGMKK2Rpc3Q6IHRydXN0eQorc3VkbzogZmFsc2UKK2dyb3VwOiBiZXRhCisKKyMgVG8gY2FjaGUgZG9jLWJ1aWxkaW5nIGRlcGVuZGVuY2llcyBhbmQgQyBjb21waWxlciBvdXRwdXQuCitjYWNoZToKKyAgLSBwaXAKKyAgLSBjY2FjaGUKKworZW52OgorICBnbG9iYWw6CisgICAgIyBVc2UgLU8zIGJlY2F1c2Ugd2UgZG9uJ3QgdXNlIGRlYnVnZ2VyIG9uIFRyYXZpcy1DSQorICAgIC0gQ0ZMQUdTPSItTzMiCisKK2JyYW5jaGVzOgorICBvbmx5OgorICAgIC0gbWFzdGVyCisgICAgLSAvXlxkXC5cZCQvCisgICAgLSBidWlsZGJvdC1jdXN0b20KKworbWF0cml4OgorICBmYXN0X2ZpbmlzaDogdHJ1ZQorICBhbGxvd19mYWlsdXJlczoKKyAgICAtIGVudjogT1BUSU9OQUw9dHJ1ZQorICBpbmNsdWRlOgorICAgIC0gb3M6IGxpbnV4CisgICAgICBsYW5ndWFnZTogYworICAgICAgY29tcGlsZXI6IGNsYW5nCisgICAgICAjIGdjYyBhbHNvIHdvcmtzLCBidXQgdG8ga2VlcCB0aGUgIyBvZiBjb25jdXJyZW50IGJ1aWxkcyBkb3duLCB3ZSB1c2Ugb25lIEMKKyAgICAgICMgY29tcGlsZXIgaGVyZSBhbmQgdGhlIG90aGVyIHRvIHJ1biB0aGUgY292ZXJhZ2UgYnVpbGQuIENsYW5nIGlzIHByZWZlcnJlZAorICAgICAgIyBpbiB0aGlzIGluc3RhbmNlIGZvciBpdHMgYmV0dGVyIGVycm9yIG1lc3NhZ2VzLgorICAgICAgZW52OiBURVNUSU5HPWNweXRob24KKyAgICAgIGFkZG9uczoKKyAgICAgICAgYXB0OgorICAgICAgICAgIHBhY2thZ2VzOgorICAgICAgICAgICAgLSB4dmZiCisgICAgLSBvczogbGludXgKKyAgICAgIGxhbmd1YWdlOiBweXRob24KKyAgICAgIHB5dGhvbjogMi43CisgICAgICBlbnY6IFRFU1RJTkc9ZG9jcworICAgICAgYmVmb3JlX3NjcmlwdDoKKyAgICAgICAgLSBjZCBEb2MKKyAgICAgICAgIyBTcGhpbnggaXMgcGlubmVkIHNvIHRoYXQgbmV3IHZlcnNpb25zIHRoYXQgaW50cm9kdWNlIG5ldyB3YXJuaW5ncyB3b24ndCBzdWRkZW5seSBjYXVzZSBidWlsZCBmYWlsdXJlcy4KKyAgICAgICAgIyAoVXBkYXRpbmcgdGhlIHZlcnNpb24gaXMgZmluZSBhcyBsb25nIGFzIG5vIHdhcm5pbmdzIGFyZSByYWlzZWQgYnkgZG9pbmcgc28uKQorICAgICAgICAtIHB5dGhvbiAtbSBwaXAgaW5zdGFsbCBzcGhpbnh+PTEuNi4xCisgICAgICBzY3JpcHQ6CisgICAgICAgIC0gbWFrZSBjaGVjayBzdXNwaWNpb3VzIGh0bWwgU1BISU5YT1BUUz0iLXEgLVcgLWo0IgorCisKK2JlZm9yZV9pbnN0YWxsOgorICAtIHNldCAtZQorICAtIHwKKyAgICAgICMgQ2hlY2sgc2hvcnQtY2lyY3VpdCBjb25kaXRpb25zCisgICAgICBpZiBbICIke1RFU1RJTkd9IiAhPSAiZG9jcyIgXQorICAgICAgdGhlbgorICAgICAgICBpZiBbICIkVFJBVklTX1BVTExfUkVRVUVTVCIgPSAiZmFsc2UiIF0KKyAgICAgICAgdGhlbgorICAgICAgICAgIGVjaG8gIk5vdCBhIFBSLCBkb2luZyBmdWxsIGJ1aWxkLiIKKyAgICAgICAgZWxzZQorICAgICAgICAgICMgUHVsbCByZXF1ZXN0cyBhcmUgc2xpZ2h0bHkgY29tcGxpY2F0ZWQgYmVjYXVzZSAkVFJBVklTX0NPTU1JVF9SQU5HRQorICAgICAgICAgICMgbWF5IGluY2x1ZGUgbW9yZSBjaGFuZ2VzIHRoYW4gZGVzaXJlZCBpZiB0aGUgaGlzdG9yeSBpcyBjb252b2x1dGVkLgorICAgICAgICAgICMgSW5zdGVhZCwgZXhwbGljaXRseSBmZXRjaCB0aGUgYmFzZSBicmFuY2ggYW5kIGNvbXBhcmUgYWdhaW5zdCB0aGUKKyAgICAgICAgICAjIG1lcmdlLWJhc2UgY29tbWl0LgorICAgICAgICAgIGdpdCBmZXRjaCAtcSBvcmlnaW4gK3JlZnMvaGVhZHMvJFRSQVZJU19CUkFOQ0gKKyAgICAgICAgICBjaGFuZ2VzPSQoZ2l0IGRpZmYgLS1uYW1lLW9ubHkgSEVBRCAkKGdpdCBtZXJnZS1iYXNlIEhFQUQgRkVUQ0hfSEVBRCkpCisgICAgICAgICAgZWNobyAiRmlsZXMgY2hhbmdlZDoiCisgICAgICAgICAgZWNobyAiJGNoYW5nZXMiCisgICAgICAgICAgaWYgISBlY2hvICIkY2hhbmdlcyIgfCBncmVwIC1xdkUgJyhcLnJzdCQpfCheRG9jKXwoXk1pc2MpJworICAgICAgICAgIHRoZW4KKyAgICAgICAgICAgIGVjaG8gIk9ubHkgZG9jcyB3ZXJlIHVwZGF0ZWQsIHN0b3BwaW5nIGJ1aWxkIHByb2Nlc3MuIgorICAgICAgICAgICAgZXhpdAorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorCisKKyMgVHJhdmlzIHByb3ZpZGVzIG9ubHkgMiBjb3Jlcywgc28gZG9uJ3Qgb3ZlcmRvIHRoZSBwYXJhbGxlbGlzbSBhbmQgd2FzdGUgbWVtb3J5LgorYmVmb3JlX3NjcmlwdDoKKyAgLSAuL2NvbmZpZ3VyZSAtLXdpdGgtcHlkZWJ1ZworICAtIG1ha2UgLWo0IHJlZ2VuLWFsbAorICAtIGNoYW5nZXM9YGdpdCBzdGF0dXMgLS1wb3JjZWxhaW5gCisgIC0gfAorICAgICAgIyBDaGVjayBmb3IgY2hhbmdlcyBpbiByZWdlbmVyYXRlZCBmaWxlcworICAgICAgaWYgISB0ZXN0IC16ICIkY2hhbmdlcyIKKyAgICAgIHRoZW4KKyAgICAgICAgZWNobyAiR2VuZXJhdGVkIGZpbGVzIG5vdCB1cCB0byBkYXRlIgorICAgICAgICBlY2hvICIkY2hhbmdlcyIKKyAgICAgICAgZXhpdCAxCisgICAgICBmaQorICAtIG1ha2UgLWo0CisgIC0gbWFrZSBweXRob25pbmZvCisKK3NjcmlwdDoKKyAgIyBDaGVjayB0aGF0IGFsbCBzeW1ib2xzIGV4cG9ydGVkIGJ5IGxpYnB5dGhvbiBzdGFydCB3aXRoICJQeSIgb3IgIl9QeSIKKyAgLSBtYWtlIHNtZWxseQorICAjIGAtciAtd2AgaW1wbGljaXRseSBwcm92aWRlZCB0aHJvdWdoIGBtYWtlIGJ1aWxkYm90dGVzdGAuCisgIC0gaWYgW1sgIiRUUkFWSVNfT1NfTkFNRSIgPT0gImxpbnV4IiBdXTsgdGhlbiBYVkZCX1JVTj14dmZiLXJ1bjsgZmk7ICRYVkZCX1JVTiBtYWtlIGJ1aWxkYm90dGVzdCBURVNUT1BUUz0iLWo0IC11YWxsLC1jcHUiCisKK25vdGlmaWNhdGlvbnM6CisgIGVtYWlsOiBmYWxzZQorICBpcmM6CisgICAgY2hhbm5lbHM6CisgICAgICAjIFRoaXMgaXMgc2V0IHRvIGEgc2VjdXJlIHZhcmlhYmxlIHRvIHByZXZlbnQgZm9ya3MgZnJvbSBub3RpZnlpbmcgdGhlCisgICAgICAjIElSQyBjaGFubmVsIHdoZW5ldmVyIHRoZXkgZmFpbCBhIGJ1aWxkLiBUaGlzIGNhbiBiZSByZW1vdmVkIHdoZW4gdHJhdmlzCisgICAgICAjIGltcGxlbWVudHMgaHR0cHM6Ly9naXRodWIuY29tL3RyYXZpcy1jaS90cmF2aXMtY2kvaXNzdWVzLzEwOTQuCisgICAgICAjIFRoZSBhY3R1YWwgdmFsdWUgaGVyZSBpczogaXJjLmZyZWVub2RlLm5ldCNweXRob24tZGV2CisgICAgICAtIHNlY3VyZTogInM3a0FrcGNvbTJ5VUo4WHF5akZJMG9iSm1oQUdybjF4bW9pdmRhUGRnQklBKytYNDdUQnAxeDRwZ0RzYkVzb2FsZWY3YkV3YTRsMDdLZFQ0cWErRE9kL2M0UXhhV29tN2ZiTjNCdUxWc1p1VmZPRG5sNzkrZ1lxL1RBYkdmeUgreURzMThEWHJVZlBnd0Q3QzVhVzMydWdzcUFPZDRpV3pmR0pRNU9yT1p6cXpHallkWVFVRWtKRlhneERFSWI0YUh2eE5EV0dPM1BvOXVLSVNyaGI1c2FRMGw3NzZ5TG8xVXI3TTRveGw4UlRiQ2RnWDB2ZjVUelBnNTJCZ3ZacE9ndDNESE9VWVBlaUpMS05qQUU2aWJnMFU5NXNFdk1mSFg3N256NGFGWTQvM1VJNkZGYVJsYTM0clorbVlLcm4wVGR4T2hlcmExUU9nUG1NNkh6ZE80SzQ0RnBmSzFEUzBYeGs5VTkvdUFwcStjRzBiVTNXK2NWVUhEQmU1KzkwbHBSQkFYSGVIQ2dUN1RJOGdlYzYxNGFpVDhsRXIzK3lIOE9CUllHemtqTks4RTJMSlovU3huVnhEZTdhTEY2QVdjb1dMZlM2L3ppQUlCRlE1TmM0VTcyQ1Q4ZkdWU2tsOHl3UGlSbHZpeEtkdlRPRE1TWm8wak1xbGZaU05hQVBUc05SeDR3dTVVaXM0cWVrd2UzMkZ6NGFCNktHcHN1dVZqQmkrSDZ2MFJLeE5KTkdZM0pLRGlFSDJUSzBVRTJhdUo1R3ZMVzQ4YVVWRmNRTUI3ZXVDV1lYbFNXVlJIaDNXTFU4UVhGMjlEdzRKZHVSWnFVcE9kUmdNSFU3OVVIUnErbWtFMGpBUy9uQmNTNkN2c214Q3BUU3JmVll1TU91MzJ5dDE4UVFvVHlVPSIKKyAgICBvbl9zdWNjZXNzOiBjaGFuZ2UKKyAgICBvbl9mYWlsdXJlOiBhbHdheXMKKyAgICBza2lwX2pvaW46IHRydWUKZGlmZiAtLWdpdCBhL0FuZHJvaWQuYnAgYi9BbmRyb2lkLmJwCmluZGV4IDhmOTczZmEuLjgyZDI5M2UgMTAwNjQ0Ci0tLSBhL0FuZHJvaWQuYnAKKysrIGIvQW5kcm9pZC5icApAQCAtMjUsMTAgKzI1LDExIEBACiAgICAgICAgICItV3N0cmljdC1wcm90b3R5cGVzIiwKICAgICAgICAgIi1EUHlfQlVJTERfQ09SRSIsCiAgICAgICAgICItV2Vycm9yIiwKLSAgICAgICAgIi1Xbm8tZXJyb3I9aW52YWxpZC1zb3VyY2UtZW5jb2RpbmciLAotICAgICAgICAiLVduby1lcnJvcj1tYWNyby1yZWRlZmluZWQiLAorICAgICAgICAiLVduby1pbnZhbGlkLXNvdXJjZS1lbmNvZGluZyIsCiAgICAgICAgICItV25vLWludC1jb252ZXJzaW9uIiwKICAgICAgICAgIi1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiLAorICAgICAgICAiLVduby1udWxsLXBvaW50ZXItYXJpdGhtZXRpYyIsCisgICAgICAgICItV25vLXJlZ2lzdGVyIiwKICAgICAgICAgIi1Xbm8tc2hpZnQtY291bnQtb3ZlcmZsb3ciLAogICAgICAgICAiLVduby1zaWduLWNvbXBhcmUiLAogICAgICAgICAiLVduby10YXV0b2xvZ2ljYWwtY29tcGFyZSIsCkBAIC00NywxMyArNDgsMTUgQEAKICAgICAgICAgYW5kcm9pZF94ODY6IHsKICAgICAgICAgICAgIGxvY2FsX2luY2x1ZGVfZGlyczogWyJhbmRyb2lkX3g4Ni9weWNvbmZpZyJdLAogICAgICAgICB9LAorICAgICAgICBsaW51eF9iaW9uaWM6IHsKKyAgICAgICAgICAgIC8vIE5CIGxpbnV4X2Jpb25pYyBpcyBhICdob3N0JyBhcmNoaXRlY3R1cmUgYnV0IGl0IHVzZXMgdGhlIGJpb25pYyBsaWJjIGxpa2UgJ2FuZHJvaWQnCisgICAgICAgICAgICAvLyB0YXJnZXRzIHNvIHVzZSB0aGUgYW5kcm9pZCBweWNvbmZpZy4KKyAgICAgICAgICAgIGxvY2FsX2luY2x1ZGVfZGlyczogWyJhbmRyb2lkX3g4Nl82NC9weWNvbmZpZyJdLAorICAgICAgICB9LAogICAgICAgICBhbmRyb2lkX3g4Nl82NDogewogICAgICAgICAgICAgbG9jYWxfaW5jbHVkZV9kaXJzOiBbImFuZHJvaWRfeDg2XzY0L3B5Y29uZmlnIl0sCiAgICAgICAgIH0sCiAgICAgICAgIC8vIFJlZ2VuZXJhdGUgaW5jbHVkZSBkaXJzIHdpdGggYW5kcm9pZF9yZWdlbi5zaAotICAgICAgICBkYXJ3aW5feDg2OiB7Ci0gICAgICAgICAgICBlbmFibGVkOiBmYWxzZSwKLSAgICAgICAgfSwKICAgICAgICAgZGFyd2luX3g4Nl82NDogewogICAgICAgICAgICAgbG9jYWxfaW5jbHVkZV9kaXJzOiBbImRhcndpbl94ODZfNjQvcHljb25maWciXSwKICAgICAgICAgICAgIGNmbGFnczogWwpAQCAtMjEzLDIxICsyMTYsNTMgQEAKICAgICBdLAogfQogCi1jY19iaW5hcnkgewotICAgIG5hbWU6ICJweTItbGF1bmNoZXIiLAorY2NfZGVmYXVsdHMgeworICAgIG5hbWU6ICJweTItbGF1bmNoZXItZGVmYXVsdHMiLAogICAgIGRlZmF1bHRzOiBbInB5Mi1pbnRlcnAtZGVmYXVsdHMiXSwKICAgICBjZmxhZ3M6IFsKICAgICAgICAgIi1EVkVSU0lPTj1cIjIuN1wiIiwKICAgICAgICAgIi1EVlBBVEg9XCJcIiIsCiAgICAgICAgICItRFBSRUZJWD1cIlwiIiwKICAgICAgICAgIi1ERVhFQ19QUkVGSVg9XCJcIiIsCi0gICAgICAgICItRFBZVEhPTlBBVEg9XCJcIiIsCi0gICAgICAgICItRERBVEU9XCJ4eC94eC94eFwiIiwKLSAgICAgICAgIi1EVElNRT1cInh4Onh4Onh4XCIiLAorICAgICAgICAiLURQWVRIT05QQVRIPVwiLi46XCIiLAorICAgICAgICAiLURBTkRST0lEX1NLSVBfWklQX1BBVEgiLAorICAgICAgICAiLURBTkRST0lEX1NLSVBfRVhFQ19QUkVGSVhfUEFUSCIsCisgICAgICAgICItREFORFJPSURfTElCX1BZVEhPTl9QQVRIPVwiaW50ZXJuYWwvc3RkbGliXCIiLAorICAgICAgICAiLUREQVRFPVwiRGVjIDMxIDE5NjlcIiIsCisgICAgICAgICItRFRJTUU9XCIyMzo1OTo1OVwiIiwKICAgICBdLAorICAgIHN0YXRpY19saWJzOiBbCisgICAgICAgICJsaWJiYXNlIiwKKyAgICAgICAgImxpYmNyeXB0byIsCisgICAgICAgICJsaWJleHBhdCIsCisgICAgICAgICJsaWJzc2wiLAorICAgICAgICAibGlieiIsCisgICAgXSwKKyAgICB0YXJnZXQ6IHsKKyAgICAgICAgbGludXhfZ2xpYmNfeDg2XzY0OiB7CisgICAgICAgICAgICBob3N0X2xkbGliczogWyItbHV0aWwiXSwKKyAgICAgICAgfSwKKyAgICAgICAgZGFyd2luOiB7CisgICAgICAgICAgICBob3N0X2xkbGliczogWworICAgICAgICAgICAgICAgICItZnJhbWV3b3JrIFN5c3RlbUNvbmZpZ3VyYXRpb24iLAorICAgICAgICAgICAgICAgICItZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uIiwKKyAgICAgICAgICAgIF0sCisgICAgICAgIH0sCisgICAgICAgIGhvc3Q6IHsKKyAgICAgICAgICAgIHN0YXRpY19saWJzOiBbImxpYnNxbGl0ZSJdLAorICAgICAgICB9LAorICAgICAgICAvLyBVc2Ugc2hhcmVkIGxpYnNxbGl0ZSBmb3IgZGV2aWNlIHNpZGUsIG90aGVyd2lzZQorICAgICAgICAvLyB0aGUgZXhlY3V0YWJsZSBzaXplIHdpbGwgYmUgcmVhbGx5IGh1Z2UuCisgICAgICAgIGFuZHJvaWQ6IHsKKyAgICAgICAgICAgIHNoYXJlZF9saWJzOiBbImxpYnNxbGl0ZSJdLAorICAgICAgICB9LAorICAgIH0sCit9CisKK2NjX2xpYnJhcnlfc3RhdGljIHsKKyAgICBuYW1lOiAicHkyLWxhdW5jaGVyLWxpYiIsCisgICAgZGVmYXVsdHM6IFsicHkyLWxhdW5jaGVyLWRlZmF1bHRzIl0sCiAgICAgc3JjczogWwotICAgICAgICAiTGF1bmNoZXIvbGF1bmNoZXJfbWFpbi5jcHAiLAotICAgICAgICAiTGF1bmNoZXIvbGF1bmNoZXJfaW50ZXJuYWwuY3BwIiwKICAgICAgICAgIk1vZHVsZXMvZ2Ntb2R1bGUuYyIsCiAgICAgICAgICJNb2R1bGVzL2dldHBhdGguYyIsCiAgICAgICAgICJNb2R1bGVzL2NvbmZpZy5jIiwKQEAgLTI0MywxMyArMjc4LDEwIEBACiAgICAgICAgICJNb2R1bGVzL193ZWFrcmVmLmMiLAogICAgICAgICAiTW9kdWxlcy96aXBpbXBvcnQuYyIsCiAgICAgICAgICJNb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMiLAotICAgIF0sCi0gICAgbG9jYWxfaW5jbHVkZV9kaXJzOiBbCi0gICAgICAgICJMYXVuY2hlciIsCisgICAgICAgICJNb2R1bGVzL21haW4uYyIsCiAgICAgXSwKICAgICAvLyBOT1RFOiBQbGVhc2UgdXBkYXRlIE1vZHVsZXMvY29uZmlnLmMgaWYgbmV3IGxpYiBnZXQgYWRkZWQgaW4gdGhlIHN0YXRpY19saWJzLgotICAgIHN0YXRpY19saWJzOiBbCi0gICAgICAgICJsaWJiYXNlIiwKKyAgICB3aG9sZV9zdGF0aWNfbGliczogWwogICAgICAgICAvLyBCZSBjYXJlZnVsIHRoZSBvcmRlciBvZiB0aGVzZSB0aHJlZSBzdGF0aWMgbGlicmFyaWVzIGJlbG93IGR1ZSB0bwogICAgICAgICAvLyBtaXNzaW5nIHN5bWJvbHMgaXNzdWVzLgogICAgICAgICAicHkyLWludGVycC1vYmplY3QiLApAQCAtMjc4LDYgKzMxMCw3IEBACiAgICAgICAgICJweTItYy1tb2R1bGUtX2NzdiIsCiAgICAgICAgICJweTItYy1tb2R1bGUtX3NvY2tldCIsCiAgICAgICAgICJweTItYy1tb2R1bGUtdGVybWlvcyIsCisgICAgICAgICJweTItYy1tb2R1bGUtX3NzbCIsCiAgICAgICAgICJweTItYy1tb2R1bGUtX21kNSIsCiAgICAgICAgICJweTItYy1tb2R1bGUtX3NoYSIsCiAgICAgICAgICJweTItYy1tb2R1bGUtX3NoYTI1NiIsCkBAIC0zMDgsMjcgKzM0MSwzOSBAQAogICAgICAgICAicHkyLWMtbW9kdWxlLV9zcWxpdGUzIiwKICAgICAgICAgInB5Mi1jLW1vZHVsZS1fY3R5cGVzX3Rlc3QiLAogICAgICAgICAicHkyLWMtbW9kdWxlLV9jdHlwZXMiLAotICAgICAgICAibGlieiIsCi0gICAgICAgICJsaWJleHBhdCIsCiAgICAgXSwKICAgICB0YXJnZXQ6IHsKLSAgICAgICAgbGludXhfZ2xpYmNfeDg2XzY0OiB7Ci0gICAgICAgICAgICBob3N0X2xkbGliczogWyItbHV0aWwiXSwKLSAgICAgICAgICAgIHN0YXRpY19saWJzOiBbCi0gICAgICAgICAgICAgICAgImxpYnNxbGl0ZSIsCi0gICAgICAgICAgICBdLAorICAgICAgICBkYXJ3aW46IHsKKyAgICAgICAgICAgIHdob2xlX3N0YXRpY19saWJzOiBbInB5Mi1jLW1vZHVsZS1fc2Nwcm94eSJdLAogICAgICAgICB9LAotICAgICAgICBkYXJ3aW5feDg2XzY0OiB7Ci0gICAgICAgICAgICBzdGF0aWNfbGliczogWwotICAgICAgICAgICAgICAgICJsaWJzcWxpdGUiLAotICAgICAgICAgICAgXSwKKyAgICB9LAorfQorCitjY19iaW5hcnkgeworICAgIG5hbWU6ICJweTItbGF1bmNoZXIiLAorICAgIGRlZmF1bHRzOiBbInB5Mi1sYXVuY2hlci1kZWZhdWx0cyJdLAorICAgIHNyY3M6IFsiTGF1bmNoZXIvbGF1bmNoZXJfbWFpbi5jcHAiXSwKKyAgICBzdGF0aWNfbGliczogWyJweTItbGF1bmNoZXItbGliIl0sCit9CisKK2NjX2JpbmFyeSB7CisgICAgbmFtZTogInB5Mi1sYXVuY2hlci1hdXRvcnVuIiwKKyAgICBkZWZhdWx0czogWyJweTItbGF1bmNoZXItZGVmYXVsdHMiXSwKKyAgICBzcmNzOiBbIkxhdW5jaGVyL2xhdW5jaGVyX21haW4uY3BwIl0sCisgICAgc3RhdGljX2xpYnM6IFsicHkyLWxhdW5jaGVyLWxpYiJdLAorICAgIGNmbGFnczogWyItREFORFJPSURfQVVUT1JVTiJdLAorfQorCitweXRob25fYmluYXJ5X2hvc3QgeworICAgIG5hbWU6ICJweTItY21kIiwKKyAgICBhdXRvcnVuOiBmYWxzZSwKKyAgICB2ZXJzaW9uOiB7CisgICAgICAgIHB5MjogeworICAgICAgICAgICAgZW5hYmxlZDogdHJ1ZSwKKyAgICAgICAgICAgIGVtYmVkZGVkX2xhdW5jaGVyOiB0cnVlLAogICAgICAgICB9LAotICAgICAgICAvLyBVc2Ugc2hhcmVkIGxpYnNxbGl0ZSBmb3IgZGV2aWNlIHNpZGUsIG90aGVyd2lzZQotICAgICAgICAvLyB0aGUgZXhlY3V0YWJsZSBzaXplIHdpbGwgYmUgcmVhbGx5IGh1Z2UuCi0gICAgICAgIGFuZHJvaWQ6IHsKLSAgICAgICAgICAgIHNoYXJlZF9saWJzOiBbCi0gICAgICAgICAgICAgICAgImxpYnNxbGl0ZSIsCi0gICAgICAgICAgICBdLAorICAgICAgICBweTM6IHsKKyAgICAgICAgICAgIGVuYWJsZWQ6IGZhbHNlLAogICAgICAgICB9LAogICAgIH0sCiB9CkBAIC01MzIsNiArNTc3LDE3IEBACiB9CiAKIGNjX2xpYnJhcnlfc3RhdGljIHsKKyAgICBuYW1lOiAicHkyLWMtbW9kdWxlLV9zc2wiLAorICAgIGRlZmF1bHRzOiBbInB5Mi1pbnRlcnAtZGVmYXVsdHMiXSwKKyAgICBzcmNzOiBbIk1vZHVsZXMvX3NzbC5jIl0sCisgICAgY2ZsYWdzOiBbIi1Xbm8taW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXMtZGlzY2FyZHMtcXVhbGlmaWVycyJdLAorICAgIHN0YXRpY19saWJzOiBbCisgICAgICAgICJsaWJzc2wiLAorICAgICAgICAibGliY3J5cHRvIiwKKyAgICBdLAorfQorCitjY19saWJyYXJ5X3N0YXRpYyB7CiAgICAgbmFtZTogInB5Mi1jLW1vZHVsZS1fbWQ1IiwKICAgICBkZWZhdWx0czogWyJweTItaW50ZXJwLWRlZmF1bHRzIl0sCiAgICAgc3JjczogWwpAQCAtNzgzLDEyICs4MzksNyBAQAogICAgICAgICAiTW9kdWxlcy9fc3FsaXRlL3V0aWwuYyIsCiAgICAgXSwKICAgICB0YXJnZXQ6IHsKLSAgICAgICAgbGludXhfZ2xpYmNfeDg2XzY0OiB7Ci0gICAgICAgICAgICBzdGF0aWNfbGliczogWwotICAgICAgICAgICAgICAgICJsaWJzcWxpdGUiLAotICAgICAgICAgICAgXSwKLSAgICAgICAgfSwKLSAgICAgICAgZGFyd2luX3g4Nl82NDogeworICAgICAgICBob3N0OiB7CiAgICAgICAgICAgICBzdGF0aWNfbGliczogWwogICAgICAgICAgICAgICAgICJsaWJzcWxpdGUiLAogICAgICAgICAgICAgXSwKQEAgLTc5Niw3ICs4NDcsNyBAQAogICAgICAgICBhbmRyb2lkOiB7CiAgICAgICAgICAgICBzaGFyZWRfbGliczogWwogICAgICAgICAgICAgICAgICJsaWJzcWxpdGUiLAotICAgICAgICAgICAgXQorICAgICAgICAgICAgXSwKICAgICAgICAgfSwKICAgICB9LAogfQpAQCAtODUzLDcgKzkwNCw3IEBACiAgICAgICAgICAgICAgICAgIk1vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9mZmkuYyIsCiAgICAgICAgICAgICAgICAgIk1vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FybS9zeXN2LlMiLAogICAgICAgICAgICAgICAgICJNb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hcm0vdHJhbXBvbGluZS5TIiwKLSAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0sCiAgICAgICAgIH0sCiAgICAgICAgIGFybTY0OiB7CiAgICAgICAgICAgICAvLyBhcml0aG1ldGljIG9uIGEgcG9pbnRlciBpbiBfY3R5cGVzL2xpYmZmaS9zcmMvYWFyY2g2NC9mZmkuYwpAQCAtODY1LDcgKzkxNiw3IEBACiAgICAgICAgICAgICBzcmNzOiBbCiAgICAgICAgICAgICAgICAgIk1vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL2FhcmNoNjQvZmZpLmMiLAogICAgICAgICAgICAgICAgICJNb2R1bGVzL19jdHlwZXMvbGliZmZpL3NyYy9hYXJjaDY0L3N5c3YuUyIsCi0gICAgICAgICAgICBdCisgICAgICAgICAgICBdLAogICAgICAgICB9LAogICAgIH0sCiAgICAgdGFyZ2V0OiB7CkBAIC04NzcsNiArOTI4LDEyIEBACiAgICAgICAgICAgICAgICAgIk1vZHVsZXMvX2N0eXBlcy9saWJmZmkvc3JjL3g4Ni9kYXJ3aW42NC5TIiwKICAgICAgICAgICAgIF0sCiAgICAgICAgIH0sCisgICAgICAgIGxpbnV4X2Jpb25pYzogeworICAgICAgICAgICAgbG9jYWxfaW5jbHVkZV9kaXJzOiBbImxpbnV4X3g4Nl82NC9saWJmZmkiXSwKKyAgICAgICAgICAgIHNyY3M6IFsKKyAgICAgICAgICAgICAgICAiTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9zcmMveDg2L3VuaXg2NC5TIiwKKyAgICAgICAgICAgIF0sCisgICAgICAgIH0sCiAgICAgICAgIGxpbnV4X2dsaWJjX3g4Nl82NDogewogICAgICAgICAgICAgbG9jYWxfaW5jbHVkZV9kaXJzOiBbImxpbnV4X3g4Nl82NC9saWJmZmkiXSwKICAgICAgICAgICAgIHNyY3M6IFsKQEAgLTg5NywzICs5NTQsMTQgQEAKICAgICAgICAgfSwKICAgICB9LAogfQorCitjY19saWJyYXJ5X2hvc3Rfc3RhdGljIHsKKyAgICBuYW1lOiAicHkyLWMtbW9kdWxlLV9zY3Byb3h5IiwKKyAgICBkZWZhdWx0czogWyJweTItaW50ZXJwLWRlZmF1bHRzIl0sCisgICAgc3JjczogWyJNYWMvTW9kdWxlcy9fc2Nwcm94eS5jIl0sCisgICAgdGFyZ2V0OiB7CisgICAgICAgIGxpbnV4OiB7CisgICAgICAgICAgICBlbmFibGVkOiBmYWxzZSwKKyAgICAgICAgfSwKKyAgICB9LAorfQpkaWZmIC0tZ2l0IGEvRGVtby90dXJ0bGUvdGRlbW9fdHdvX2NhbnZhc2VzLnB5IGIvRGVtby90dXJ0bGUvdGRlbW9fdHdvX2NhbnZhc2VzLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0RvYy9NYWtlZmlsZSBiL0RvYy9NYWtlZmlsZQppbmRleCBjM2YxYjM3Li5lYmFiYzAyIDEwMDY0NAotLS0gYS9Eb2MvTWFrZWZpbGUKKysrIGIvRG9jL01ha2VmaWxlCkBAIC0xMCw3ICsxMCw3IEBACiBTT1VSQ0VTICAgICAgPQogRElTVFZFUlNJT04gID0gJChzaGVsbCAkKFBZVEhPTikgdG9vbHMvZXh0ZW5zaW9ucy9wYXRjaGxldmVsLnB5KQogCi1BTExTUEhJTlhPUFRTID0gLWIgJChCVUlMREVSKSAtZCBidWlsZC9kb2N0cmVlcyAtRCBsYXRleF9wYXBlcl9zaXplPSQoUEFQRVIpIFwKK0FMTFNQSElOWE9QVFMgPSAtYiAkKEJVSUxERVIpIC1kIGJ1aWxkL2RvY3RyZWVzIC1EIGxhdGV4X2VsZW1lbnRzLnBhcGVyc2l6ZT0kKFBBUEVSKSBcCiAgICAgICAgICAgICAgICAgJChTUEhJTlhPUFRTKSAuIGJ1aWxkLyQoQlVJTERFUikgJChTT1VSQ0VTKQogCiAuUEhPTlk6IGhlbHAgYnVpbGQgaHRtbCBodG1saGVscCBsYXRleCB0ZXh0IGNoYW5nZXMgbGlua2NoZWNrIFwKQEAgLTE1NywxMiArMTU3LDEyIEBACiAKICMgZm9yIGRldmVsb3BtZW50IHJlbGVhc2VzOiBhbHdheXMgYnVpbGQKIGF1dG9idWlsZC1kZXY6Ci0JbWFrZSBkaXN0IFNQSElOWE9QVFM9JyQoU1BISU5YT1BUUykgLUEgZGFpbHk9MSAtQSB2ZXJzaW9uc3dpdGNoZXI9MScKKwltYWtlIGRpc3QgU1BISU5YT1BUUz0nJChTUEhJTlhPUFRTKSAtQSBkYWlseT0xIC1BIHN3aXRjaGVycz0xJwogCS1tYWtlIHN1c3BpY2lvdXMKIAogIyBmb3IgcXVpY2sgcmVidWlsZHMgKEhUTUwgb25seSkKIGF1dG9idWlsZC1kZXYtaHRtbDoKLQltYWtlIGh0bWwgU1BISU5YT1BUUz0nJChTUEhJTlhPUFRTKSAtQSBkYWlseT0xIC1BIHZlcnNpb25zd2l0Y2hlcj0xJworCW1ha2UgaHRtbCBTUEhJTlhPUFRTPSckKFNQSElOWE9QVFMpIC1BIGRhaWx5PTEgLUEgc3dpdGNoZXJzPTEnCiAKICMgZm9yIHN0YWJsZSByZWxlYXNlczogb25seSBidWlsZCBpZiBub3QgaW4gcHJlLXJlbGVhc2Ugc3RhZ2UgKGFscGhhLCBiZXRhKQogIyByZWxlYXNlIGNhbmRpZGF0ZSBkb3dubG9hZHMgYXJlIG9rYXksIHNpbmNlIHRoZSBzdGFibGUgdHJlZSBjYW4gYmUgaW4gdGhhdCBzdGFnZQpkaWZmIC0tZ2l0IGEvRG9jL1JFQURNRS50eHQgYi9Eb2MvUkVBRE1FLnR4dAppbmRleCA0ZjhlOWY4Li5hMzYyZWNjIDEwMDY0NAotLS0gYS9Eb2MvUkVBRE1FLnR4dAorKysgYi9Eb2MvUkVBRE1FLnR4dApAQCAtMTUsNyArMTUsNyBAQAogCiBZb3UgbmVlZCB0byBoYXZlIFNwaGlueCA8aHR0cDovL3NwaGlueC1kb2Mub3JnLz4gaW5zdGFsbGVkOyBpdCBpcyB0aGUgdG9vbHNldAogdXNlZCB0byBidWlsZCB0aGUgZG9jcy4gIEl0IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzIHRyZWUsIGJ1dCBtYWludGFpbmVkCi1zZXBhcmF0ZWx5IGFuZCBhdmFpbGFibGUgZnJvbSBQeVBJIDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL1NwaGlueD4uCitzZXBhcmF0ZWx5IGFuZCBhdmFpbGFibGUgZnJvbSBQeVBJIDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvU3BoaW54Pi4KIAogCiBVc2luZyBtYWtlCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYnVmZmVyLnJzdCBiL0RvYy9jLWFwaS9idWZmZXIucnN0CmluZGV4IDA1MGRiNTUuLjRlNWEwNDMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9idWZmZXIucnN0CisrKyBiL0RvYy9jLWFwaS9idWZmZXIucnN0CkBAIC0yNzgsNyArMjc4LDcgQEAKICAgICgqZm9ydHJhbiogaXMgYGAnQSdgYCkuICBSZXR1cm4gYGAwYGAgb3RoZXJ3aXNlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcyhpbnQgbmRpbSwgUHlfc3NpemVfdCAqc2hhcGUsIFB5X3NzaXplX3QgKnN0cmlkZXMsIFB5X3NzaXplX3QgaXRlbXNpemUsIGNoYXIgZm9ydHJhbikKKy4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5QnVmZmVyX0ZpbGxDb250aWd1b3VzU3RyaWRlcyhpbnQgbmRpbXMsIFB5X3NzaXplX3QgKnNoYXBlLCBQeV9zc2l6ZV90ICpzdHJpZGVzLCBpbnQgaXRlbXNpemUsIGNoYXIgZm9ydHJhbikKIAogICAgRmlsbCB0aGUgKnN0cmlkZXMqIGFycmF5IHdpdGggYnl0ZS1zdHJpZGVzIG9mIGEgY29udGlndW91cyAoQy1zdHlsZSBpZgogICAgKmZvcnRyYW4qIGlzIGBgJ0MnYGAgb3IgRm9ydHJhbi1zdHlsZSBpZiAqZm9ydHJhbiogaXMgYGAnRidgYCkgYXJyYXkgb2YgdGhlCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvY2Fwc3VsZS5yc3QgYi9Eb2MvYy1hcGkvY2Fwc3VsZS5yc3QKaW5kZXggYjg2NDJkMC4uZmQ0Mjc5YyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL2NhcHN1bGUucnN0CisrKyBiL0RvYy9jLWFwaS9jYXBzdWxlLnJzdApAQCAtOSw2ICs5LDggQEAKIAogUmVmZXIgdG8gOnJlZjpgdXNpbmctY2Fwc3VsZXNgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZXNlIG9iamVjdHMuCiAKKy4uIHZlcnNpb25hZGRlZDo6IDIuNworCiAKIC4uIGM6dHlwZTo6IFB5Q2Fwc3VsZQogCkBAIC0xOSw2ICsyMSw3IEBACiAgICByZWd1bGFyIGltcG9ydCBtZWNoYW5pc20gY2FuIGJlIHVzZWQgdG8gYWNjZXNzIEMgQVBJcyBkZWZpbmVkIGluIGR5bmFtaWNhbGx5CiAgICBsb2FkZWQgbW9kdWxlcy4KIAorCiAuLiBjOnR5cGU6OiBQeUNhcHN1bGVfRGVzdHJ1Y3RvcgogCiAgICBUaGUgdHlwZSBvZiBhIGRlc3RydWN0b3IgY2FsbGJhY2sgZm9yIGEgY2Fwc3VsZS4gIERlZmluZWQgYXM6OgpAQCAtMTA0LDggKzEwNyw4IEBACiAgICBpbXBvcnQgdGhlIG1vZHVsZSBjb252ZW50aW9uYWxseSAodXNpbmcgOmM6ZnVuYzpgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYCkuCiAKICAgIFJldHVybiB0aGUgY2Fwc3VsZSdzIGludGVybmFsICpwb2ludGVyKiBvbiBzdWNjZXNzLiAgT24gZmFpbHVyZSwgc2V0IGFuCi0gICBleGNlcHRpb24gYW5kIHJldHVybiAqTlVMTCouICBIb3dldmVyLCBpZiA6YzpmdW5jOmBQeUNhcHN1bGVfSW1wb3J0YCBmYWlsZWQgdG8KLSAgIGltcG9ydCB0aGUgbW9kdWxlLCBhbmQgKm5vX2Jsb2NrKiB3YXMgdHJ1ZSwgbm8gZXhjZXB0aW9uIGlzIHNldC4KKyAgIGV4Y2VwdGlvbiBhbmQgcmV0dXJuICpOVUxMKi4KKwogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5Q2Fwc3VsZV9Jc1ZhbGlkKFB5T2JqZWN0ICpjYXBzdWxlLCBjb25zdCBjaGFyICpuYW1lKQogCkBAIC0xMjIsMTggKzEyNSwyMSBAQAogICAgUmV0dXJuIGEgbm9uemVybyB2YWx1ZSBpZiB0aGUgb2JqZWN0IGlzIHZhbGlkIGFuZCBtYXRjaGVzIHRoZSBuYW1lIHBhc3NlZCBpbi4KICAgIFJldHVybiBgYDBgYCBvdGhlcndpc2UuICBUaGlzIGZ1bmN0aW9uIHdpbGwgbm90IGZhaWwuCiAKKwogLi4gYzpmdW5jdGlvbjo6IGludCBQeUNhcHN1bGVfU2V0Q29udGV4dChQeU9iamVjdCAqY2Fwc3VsZSwgdm9pZCAqY29udGV4dCkKIAogICAgU2V0IHRoZSBjb250ZXh0IHBvaW50ZXIgaW5zaWRlICpjYXBzdWxlKiB0byAqY29udGV4dCouCiAKICAgIFJldHVybiBgYDBgYCBvbiBzdWNjZXNzLiAgUmV0dXJuIG5vbnplcm8gYW5kIHNldCBhbiBleGNlcHRpb24gb24gZmFpbHVyZS4KIAorCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yKFB5T2JqZWN0ICpjYXBzdWxlLCBQeUNhcHN1bGVfRGVzdHJ1Y3RvciBkZXN0cnVjdG9yKQogCiAgICBTZXQgdGhlIGRlc3RydWN0b3IgaW5zaWRlICpjYXBzdWxlKiB0byAqZGVzdHJ1Y3RvciouCiAKICAgIFJldHVybiBgYDBgYCBvbiBzdWNjZXNzLiAgUmV0dXJuIG5vbnplcm8gYW5kIHNldCBhbiBleGNlcHRpb24gb24gZmFpbHVyZS4KIAorCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5Q2Fwc3VsZV9TZXROYW1lKFB5T2JqZWN0ICpjYXBzdWxlLCBjb25zdCBjaGFyICpuYW1lKQogCiAgICBTZXQgdGhlIG5hbWUgaW5zaWRlICpjYXBzdWxlKiB0byAqbmFtZSouICBJZiBub24tKk5VTEwqLCB0aGUgbmFtZSBtdXN0CkBAIC0xNDIsNiArMTQ4LDcgQEAKIAogICAgUmV0dXJuIGBgMGBgIG9uIHN1Y2Nlc3MuICBSZXR1cm4gbm9uemVybyBhbmQgc2V0IGFuIGV4Y2VwdGlvbiBvbiBmYWlsdXJlLgogCisKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlDYXBzdWxlX1NldFBvaW50ZXIoUHlPYmplY3QgKmNhcHN1bGUsIHZvaWQgKnBvaW50ZXIpCiAKICAgIFNldCB0aGUgdm9pZCBwb2ludGVyIGluc2lkZSAqY2Fwc3VsZSogdG8gKnBvaW50ZXIqLiAgVGhlIHBvaW50ZXIgbWF5IG5vdCBiZQpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IDEwZTJjNGMuLmRiMzAyZDggMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTI4NiwxNiArMjg2LDExIEBACiAgICBleGNlcHRpb24gaGFuZGxpbmcgKGZvciBleGFtcGxlLCA6YzpmdW5jOmBQeV9ERUNSRUZgIG93bmVkIHJlZmVyZW5jZXMgYW5kIHJldHVybgogICAgYW4gZXJyb3IgdmFsdWUpLgogCi0gICBXYXJuaW5nIGNhdGVnb3JpZXMgbXVzdCBiZSBzdWJjbGFzc2VzIG9mIDpjOmRhdGE6YFdhcm5pbmdgOyB0aGUgZGVmYXVsdCB3YXJuaW5nCi0gICBjYXRlZ29yeSBpcyA6YzpkYXRhOmBSdW50aW1lV2FybmluZ2AuICBUaGUgc3RhbmRhcmQgUHl0aG9uIHdhcm5pbmcgY2F0ZWdvcmllcyBhcmUKLSAgIGF2YWlsYWJsZSBhcyBnbG9iYWwgdmFyaWFibGVzIHdob3NlIG5hbWVzIGFyZSBgYFB5RXhjX2BgIGZvbGxvd2VkIGJ5IHRoZSBQeXRob24KLSAgIGV4Y2VwdGlvbiBuYW1lLiBUaGVzZSBoYXZlIHRoZSB0eXBlIDpjOnR5cGU6YFB5T2JqZWN0XCpgOyB0aGV5IGFyZSBhbGwgY2xhc3MKLSAgIG9iamVjdHMuIFRoZWlyIG5hbWVzIGFyZSA6YzpkYXRhOmBQeUV4Y19XYXJuaW5nYCwgOmM6ZGF0YTpgUHlFeGNfVXNlcldhcm5pbmdgLAotICAgOmM6ZGF0YTpgUHlFeGNfVW5pY29kZVdhcm5pbmdgLCA6YzpkYXRhOmBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmdgLAotICAgOmM6ZGF0YTpgUHlFeGNfU3ludGF4V2FybmluZ2AsIDpjOmRhdGE6YFB5RXhjX1J1bnRpbWVXYXJuaW5nYCwgYW5kCi0gICA6YzpkYXRhOmBQeUV4Y19GdXR1cmVXYXJuaW5nYC4gIDpjOmRhdGE6YFB5RXhjX1dhcm5pbmdgIGlzIGEgc3ViY2xhc3Mgb2YKLSAgIDpjOmRhdGE6YFB5RXhjX0V4Y2VwdGlvbmA7IHRoZSBvdGhlciB3YXJuaW5nIGNhdGVnb3JpZXMgYXJlIHN1YmNsYXNzZXMgb2YKLSAgIDpjOmRhdGE6YFB5RXhjX1dhcm5pbmdgLgorICAgV2FybmluZyBjYXRlZ29yaWVzIG11c3QgYmUgc3ViY2xhc3NlcyBvZiA6YzpkYXRhOmBQeUV4Y19XYXJuaW5nYDsKKyAgIDpjOmRhdGE6YFB5RXhjX1dhcm5pbmdgIGlzIGEgc3ViY2xhc3Mgb2YgOmM6ZGF0YTpgUHlFeGNfRXhjZXB0aW9uYDsKKyAgIHRoZSBkZWZhdWx0IHdhcm5pbmcgY2F0ZWdvcnkgaXMgOmM6ZGF0YTpgUHlFeGNfUnVudGltZVdhcm5pbmdgLiBUaGUgc3RhbmRhcmQKKyAgIFB5dGhvbiB3YXJuaW5nIGNhdGVnb3JpZXMgYXJlIGF2YWlsYWJsZSBhcyBnbG9iYWwgdmFyaWFibGVzIHdob3NlIG5hbWVzIGFyZQorICAgZW51bWVyYXRlZCBhdCA6cmVmOmBzdGFuZGFyZHdhcm5pbmdjYXRlZ29yaWVzYC4KIAogICAgRm9yIGluZm9ybWF0aW9uIGFib3V0IHdhcm5pbmcgY29udHJvbCwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUKICAgIDptb2Q6YHdhcm5pbmdzYCBtb2R1bGUgYW5kIHRoZSA6b3B0aW9uOmAtV2Agb3B0aW9uIGluIHRoZSBjb21tYW5kIGxpbmUKQEAgLTUyNSw4NCArNTIwLDI1IEBACiA6Yzp0eXBlOmBQeU9iamVjdFwqYDsgdGhleSBhcmUgYWxsIGNsYXNzIG9iamVjdHMuICBGb3IgY29tcGxldGVuZXNzLCBoZXJlIGFyZSBhbGwKIHRoZSB2YXJpYWJsZXM6CiAKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgQyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQeXRob24gTmFtZSAgICAgICAgICAgICAgICB8IE5vdGVzICAgIHwKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PSsKLXwgOmM6ZGF0YTpgUHlFeGNfQmFzZUV4Y2VwdGlvbmAgICAgICAgfCA6ZXhjOmBCYXNlRXhjZXB0aW9uYCAgICAgICB8ICgxKSwgKDQpIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRXhjZXB0aW9uYCAgICAgICAgICAgfCA6ZXhjOmBFeGNlcHRpb25gICAgICAgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfU3RhbmRhcmRFcnJvcmAgICAgICAgfCA6ZXhjOmBTdGFuZGFyZEVycm9yYCAgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfQXJpdGhtZXRpY0Vycm9yYCAgICAgfCA6ZXhjOmBBcml0aG1ldGljRXJyb3JgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTG9va3VwRXJyb3JgICAgICAgICAgfCA6ZXhjOmBMb29rdXBFcnJvcmAgICAgICAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfQXNzZXJ0aW9uRXJyb3JgICAgICAgfCA6ZXhjOmBBc3NlcnRpb25FcnJvcmAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfQXR0cmlidXRlRXJyb3JgICAgICAgfCA6ZXhjOmBBdHRyaWJ1dGVFcnJvcmAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRU9GRXJyb3JgICAgICAgICAgICAgfCA6ZXhjOmBFT0ZFcnJvcmAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRW52aXJvbm1lbnRFcnJvcmAgICAgfCA6ZXhjOmBFbnZpcm9ubWVudEVycm9yYCAgICB8IFwoMSkgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yYCAgfCA6ZXhjOmBGbG9hdGluZ1BvaW50RXJyb3JgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfSU9FcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBJT0Vycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgfCA6ZXhjOmBJbXBvcnRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgfCA6ZXhjOmBJbmRleEVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfS2V5RXJyb3JgICAgICAgICAgICAgfCA6ZXhjOmBLZXlFcnJvcmAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHRgICAgfCA6ZXhjOmBLZXlib2FyZEludGVycnVwdGAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTWVtb3J5RXJyb3JgICAgICAgICAgfCA6ZXhjOmBNZW1vcnlFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTmFtZUVycm9yYCAgICAgICAgICAgfCA6ZXhjOmBOYW1lRXJyb3JgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcmAgfCA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfT1NFcnJvcmAgICAgICAgICAgICAgfCA6ZXhjOmBPU0Vycm9yYCAgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfT3ZlcmZsb3dFcnJvcmAgICAgICAgfCA6ZXhjOmBPdmVyZmxvd0Vycm9yYCAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfUmVmZXJlbmNlRXJyb3JgICAgICAgfCA6ZXhjOmBSZWZlcmVuY2VFcnJvcmAgICAgICB8IFwoMikgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfUnVudGltZUVycm9yYCAgICAgICAgfCA6ZXhjOmBSdW50aW1lRXJyb3JgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfU3ludGF4RXJyb3JgICAgICAgICAgfCA6ZXhjOmBTeW50YXhFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfU3lzdGVtRXJyb3JgICAgICAgICAgfCA6ZXhjOmBTeXN0ZW1FcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfU3lzdGVtRXhpdGAgICAgICAgICAgfCA6ZXhjOmBTeXN0ZW1FeGl0YCAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfVHlwZUVycm9yYCAgICAgICAgICAgfCA6ZXhjOmBUeXBlRXJyb3JgICAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfVmFsdWVFcnJvcmAgICAgICAgICAgfCA6ZXhjOmBWYWx1ZUVycm9yYCAgICAgICAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfV2luZG93c0Vycm9yYCAgICAgICAgfCA6ZXhjOmBXaW5kb3dzRXJyb3JgICAgICAgICB8IFwoMykgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLXwgOmM6ZGF0YTpgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3JgICAgfCA6ZXhjOmBaZXJvRGl2aXNpb25FcnJvcmAgICB8ICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKLQogLi4gaW5kZXg6OgogICAgc2luZ2xlOiBQeUV4Y19CYXNlRXhjZXB0aW9uCiAgICBzaW5nbGU6IFB5RXhjX0V4Y2VwdGlvbgogICAgc2luZ2xlOiBQeUV4Y19TdGFuZGFyZEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0FyaXRobWV0aWNFcnJvcgotICAgc2luZ2xlOiBQeUV4Y19Mb29rdXBFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19Bc3NlcnRpb25FcnJvcgogICAgc2luZ2xlOiBQeUV4Y19BdHRyaWJ1dGVFcnJvcgotICAgc2luZ2xlOiBQeUV4Y19FT0ZFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19CdWZmZXJFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19FbnZpcm9ubWVudEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0VPRkVycm9yCiAgICBzaW5nbGU6IFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcgotICAgc2luZ2xlOiBQeUV4Y19JT0Vycm9yCisgICBzaW5nbGU6IFB5RXhjX0dlbmVyYXRvckV4aXQKICAgIHNpbmdsZTogUHlFeGNfSW1wb3J0RXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfSW5kZW50YXRpb25FcnJvcgogICAgc2luZ2xlOiBQeUV4Y19JbmRleEVycm9yCisgICBzaW5nbGU6IFB5RXhjX0lPRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfS2V5RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQKKyAgIHNpbmdsZTogUHlFeGNfTG9va3VwRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfTWVtb3J5RXJyb3IKICAgIHNpbmdsZTogUHlFeGNfTmFtZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IKQEAgLTYxMCwxNCArNTQ2LDEwNiBAQAogICAgc2luZ2xlOiBQeUV4Y19PdmVyZmxvd0Vycm9yCiAgICBzaW5nbGU6IFB5RXhjX1JlZmVyZW5jZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1J1bnRpbWVFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19TdG9wSXRlcmF0aW9uCiAgICBzaW5nbGU6IFB5RXhjX1N5bnRheEVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1N5c3RlbUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1N5c3RlbUV4aXQKKyAgIHNpbmdsZTogUHlFeGNfVGFiRXJyb3IKICAgIHNpbmdsZTogUHlFeGNfVHlwZUVycm9yCisgICBzaW5nbGU6IFB5RXhjX1VuYm91bmRMb2NhbEVycm9yCisgICBzaW5nbGU6IFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3IKKyAgIHNpbmdsZTogUHlFeGNfVW5pY29kZUVycm9yCisgICBzaW5nbGU6IFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcgorICAgc2luZ2xlOiBQeUV4Y19WTVNFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19WYWx1ZUVycm9yCiAgICBzaW5nbGU6IFB5RXhjX1dpbmRvd3NFcnJvcgogICAgc2luZ2xlOiBQeUV4Y19aZXJvRGl2aXNpb25FcnJvcgogCisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IEMgTmFtZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBOYW1lICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT0rCit8IDpjOmRhdGE6YFB5RXhjX0Jhc2VFeGNlcHRpb25gICAgICAgICAgICB8IDpleGM6YEJhc2VFeGNlcHRpb25gICAgICAgICAgICAgfCAoMSksICg0KSB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0V4Y2VwdGlvbmAgICAgICAgICAgICAgICB8IDpleGM6YEV4Y2VwdGlvbmAgICAgICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N0YW5kYXJkRXJyb3JgICAgICAgICAgICB8IDpleGM6YFN0YW5kYXJkRXJyb3JgICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0FyaXRobWV0aWNFcnJvcmAgICAgICAgICB8IDpleGM6YEFyaXRobWV0aWNFcnJvcmAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Fzc2VydGlvbkVycm9yYCAgICAgICAgICB8IDpleGM6YEFzc2VydGlvbkVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0F0dHJpYnV0ZUVycm9yYCAgICAgICAgICB8IDpleGM6YEF0dHJpYnV0ZUVycm9yYCAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0J1ZmZlckVycm9yYCAgICAgICAgICAgICB8IDpleGM6YEJ1ZmZlckVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Vudmlyb25tZW50RXJyb3JgICAgICAgICB8IDpleGM6YEVudmlyb25tZW50RXJyb3JgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0VPRkVycm9yYCAgICAgICAgICAgICAgICB8IDpleGM6YEVPRkVycm9yYCAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcmAgICAgICB8IDpleGM6YEZsb2F0aW5nUG9pbnRFcnJvcmAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0dlbmVyYXRvckV4aXRgICAgICAgICAgICB8IDpleGM6YEdlbmVyYXRvckV4aXRgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0ltcG9ydEVycm9yYCAgICAgICAgICAgICB8IDpleGM6YEltcG9ydEVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0luZGVudGF0aW9uRXJyb3JgICAgICAgICB8IDpleGM6YEluZGVudGF0aW9uRXJyb3JgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0luZGV4RXJyb3JgICAgICAgICAgICAgICB8IDpleGM6YEluZGV4RXJyb3JgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0lPRXJyb3JgICAgICAgICAgICAgICAgICB8IDpleGM6YElPRXJyb3JgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0tleUVycm9yYCAgICAgICAgICAgICAgICB8IDpleGM6YEtleUVycm9yYCAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0tleWJvYXJkSW50ZXJydXB0YCAgICAgICB8IDpleGM6YEtleWJvYXJkSW50ZXJydXB0YCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0xvb2t1cEVycm9yYCAgICAgICAgICAgICB8IDpleGM6YExvb2t1cEVycm9yYCAgICAgICAgICAgICAgfCBcKDEpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX01lbW9yeUVycm9yYCAgICAgICAgICAgICB8IDpleGM6YE1lbW9yeUVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX05hbWVFcnJvcmAgICAgICAgICAgICAgICB8IDpleGM6YE5hbWVFcnJvcmAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3JgICAgICB8IDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX09TRXJyb3JgICAgICAgICAgICAgICAgICB8IDpleGM6YE9TRXJyb3JgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX092ZXJmbG93RXJyb3JgICAgICAgICAgICB8IDpleGM6YE92ZXJmbG93RXJyb3JgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1JlZmVyZW5jZUVycm9yYCAgICAgICAgICB8IDpleGM6YFJlZmVyZW5jZUVycm9yYCAgICAgICAgICAgfCBcKDIpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1J1bnRpbWVFcnJvcmAgICAgICAgICAgICB8IDpleGM6YFJ1bnRpbWVFcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N0b3BJdGVyYXRpb25gICAgICAgICAgICB8IDpleGM6YFN0b3BJdGVyYXRpb25gICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N5bnRheEVycm9yYCAgICAgICAgICAgICB8IDpleGM6YFN5bnRheEVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N5c3RlbUVycm9yYCAgICAgICAgICAgICB8IDpleGM6YFN5c3RlbUVycm9yYCAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N5c3RlbUV4aXRgICAgICAgICAgICAgICB8IDpleGM6YFN5c3RlbUV4aXRgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1RhYkVycm9yYCAgICAgICAgICAgICAgICB8IDpleGM6YFRhYkVycm9yYCAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1R5cGVFcnJvcmAgICAgICAgICAgICAgICB8IDpleGM6YFR5cGVFcnJvcmAgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1VuYm91bmRMb2NhbEVycm9yYCAgICAgICB8IDpleGM6YFVuYm91bmRMb2NhbEVycm9yYCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcmAgICAgICB8IDpleGM6YFVuaWNvZGVEZWNvZGVFcnJvcmAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvcmAgICAgICB8IDpleGM6YFVuaWNvZGVFbmNvZGVFcnJvcmAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1VuaWNvZGVFcnJvcmAgICAgICAgICAgICB8IDpleGM6YFVuaWNvZGVFcnJvcmAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcmAgICB8IDpleGM6YFVuaWNvZGVUcmFuc2xhdGVFcnJvcmAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1ZNU0Vycm9yYCAgICAgICAgICAgICAgICB8IDpleGM6YFZNU0Vycm9yYCAgICAgICAgICAgICAgICAgfCBcKDUpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1ZhbHVlRXJyb3JgICAgICAgICAgICAgICB8IDpleGM6YFZhbHVlRXJyb3JgICAgICAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1dpbmRvd3NFcnJvcmAgICAgICAgICAgICB8IDpleGM6YFdpbmRvd3NFcnJvcmAgICAgICAgICAgICAgfCBcKDMpICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1plcm9EaXZpc2lvbkVycm9yYCAgICAgICB8IDpleGM6YFplcm9EaXZpc2lvbkVycm9yYCAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisKIE5vdGVzOgogCiAoMSkKQEAgLTYzMyw2ICs2NjEsNjAgQEAKICg0KQogICAgLi4gdmVyc2lvbmFkZGVkOjogMi41CiAKKyg1KQorICAgT25seSBkZWZpbmVkIG9uIFZNUzsgcHJvdGVjdCBjb2RlIHRoYXQgdXNlcyB0aGlzIGJ5IHRlc3RpbmcgdGhhdCB0aGUKKyAgIHByZXByb2Nlc3NvciBtYWNybyBgYF9fVk1TYGAgaXMgZGVmaW5lZC4KKworLi4gX3N0YW5kYXJkd2FybmluZ2NhdGVnb3JpZXM6CisKK1N0YW5kYXJkIFdhcm5pbmcgQ2F0ZWdvcmllcworPT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0FsbCBzdGFuZGFyZCBQeXRob24gd2FybmluZyBjYXRlZ29yaWVzIGFyZSBhdmFpbGFibGUgYXMgZ2xvYmFsIHZhcmlhYmxlcyB3aG9zZQorbmFtZXMgYXJlIGBgUHlFeGNfYGAgZm9sbG93ZWQgYnkgdGhlIFB5dGhvbiBleGNlcHRpb24gbmFtZS4gVGhlc2UgaGF2ZSB0aGUgdHlwZQorOmM6dHlwZTpgUHlPYmplY3RcKmA7IHRoZXkgYXJlIGFsbCBjbGFzcyBvYmplY3RzLiBGb3IgY29tcGxldGVuZXNzLCBoZXJlIGFyZSBhbGwKK3RoZSB2YXJpYWJsZXM6CisKKy4uIGluZGV4OjoKKyAgIHNpbmdsZTogUHlFeGNfV2FybmluZworICAgc2luZ2xlOiBQeUV4Y19CeXRlc1dhcm5pbmcKKyAgIHNpbmdsZTogUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nCisgICBzaW5nbGU6IFB5RXhjX0Z1dHVyZVdhcm5pbmcKKyAgIHNpbmdsZTogUHlFeGNfSW1wb3J0V2FybmluZworICAgc2luZ2xlOiBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nCisgICBzaW5nbGU6IFB5RXhjX1J1bnRpbWVXYXJuaW5nCisgICBzaW5nbGU6IFB5RXhjX1N5bnRheFdhcm5pbmcKKyAgIHNpbmdsZTogUHlFeGNfVW5pY29kZVdhcm5pbmcKKyAgIHNpbmdsZTogUHlFeGNfVXNlcldhcm5pbmcKKworKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgQyBOYW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFB5dGhvbiBOYW1lICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICB8CisrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09KworfCA6YzpkYXRhOmBQeUV4Y19XYXJuaW5nYCAgICAgICAgICAgICAgICAgIHwgOmV4YzpgV2FybmluZ2AgICAgICAgICAgICAgICAgICB8IFwoMSkgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0J5dGVzV2FybmluZ2AgICAgICAgICAgICAgfCA6ZXhjOmBCeXRlc1dhcm5pbmdgICAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nYCAgICAgICB8IDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19GdXR1cmVXYXJuaW5nYCAgICAgICAgICAgIHwgOmV4YzpgRnV0dXJlV2FybmluZ2AgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX0ltcG9ydFdhcm5pbmdgICAgICAgICAgICAgfCA6ZXhjOmBJbXBvcnRXYXJuaW5nYCAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZ2B8IDpleGM6YFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmdgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19SdW50aW1lV2FybmluZ2AgICAgICAgICAgIHwgOmV4YzpgUnVudGltZVdhcm5pbmdgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCit8IDpjOmRhdGE6YFB5RXhjX1N5bnRheFdhcm5pbmdgICAgICAgICAgICAgfCA6ZXhjOmBTeW50YXhXYXJuaW5nYCAgICAgICAgICAgIHwgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfVW5pY29kZVdhcm5pbmdgICAgICAgICAgICB8IDpleGM6YFVuaWNvZGVXYXJuaW5nYCAgICAgICAgICAgfCAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKworfCA6YzpkYXRhOmBQeUV4Y19Vc2VyV2FybmluZ2AgICAgICAgICAgICAgIHwgOmV4YzpgVXNlcldhcm5pbmdgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rCisKK05vdGVzOgorCisoMSkKKyAgIFRoaXMgaXMgYSBiYXNlIGNsYXNzIGZvciBvdGhlciBzdGFuZGFyZCB3YXJuaW5nIGNhdGVnb3JpZXMuCiAKIFN0cmluZyBFeGNlcHRpb25zCiA9PT09PT09PT09PT09PT09PQpAQCAtNjQwLDQgKzcyMiwzIEBACiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNgogICAgQWxsIGV4Y2VwdGlvbnMgdG8gYmUgcmFpc2VkIG9yIGNhdWdodCBtdXN0IGJlIGRlcml2ZWQgZnJvbSA6ZXhjOmBCYXNlRXhjZXB0aW9uYC4KICAgIFRyeWluZyB0byByYWlzZSBhIHN0cmluZyBleGNlcHRpb24gbm93IHJhaXNlcyA6ZXhjOmBUeXBlRXJyb3JgLgotCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvZ2NzdXBwb3J0LnJzdCBiL0RvYy9jLWFwaS9nY3N1cHBvcnQucnN0CmluZGV4IDk0MzhmZWEuLjE4ZWNkMDcgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9nY3N1cHBvcnQucnN0CisrKyBiL0RvYy9jLWFwaS9nY3N1cHBvcnQucnN0CkBAIC01Niw3ICs1Niw3IEBACiAuLiBjOmZ1bmN0aW9uOjogVFlQRSogUHlPYmplY3RfR0NfUmVzaXplKFRZUEUsIFB5VmFyT2JqZWN0ICpvcCwgUHlfc3NpemVfdCBuZXdzaXplKQogCiAgICBSZXNpemUgYW4gb2JqZWN0IGFsbG9jYXRlZCBieSA6YzpmdW5jOmBQeU9iamVjdF9OZXdWYXJgLiAgUmV0dXJucyB0aGUKLSAgIHJlc2l6ZWQgb2JqZWN0IG9yICpOVUxMKiBvbiBmYWlsdXJlLgorICAgcmVzaXplZCBvYmplY3Qgb3IgKk5VTEwqIG9uIGZhaWx1cmUuICAqb3AqIG11c3Qgbm90IGJlIHRyYWNrZWQgYnkgdGhlIGNvbGxlY3RvciB5ZXQuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMi41CiAgICAgICBUaGlzIGZ1bmN0aW9uIHVzZWQgYW4gOmM6dHlwZTpgaW50YCB0eXBlIGZvciAqbmV3c2l6ZSouIFRoaXMgbWlnaHQKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCA3NjQzYTM3Li4yMjljYWU1IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC05ODMsMTIgKzk4MywxMiBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgVmFsdWUgb2YgKndoYXQqICAgICAgICAgICAgICB8IE1lYW5pbmcgb2YgKmFyZyogICAgICAgICAgICAgICAgICAgICB8CiAgICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwotICAgfCA6Y29uc3Q6YFB5VHJhY2VfQ0FMTGAgICAgICAgIHwgQWx3YXlzICpOVUxMKi4gICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgOmNvbnN0OmBQeVRyYWNlX0NBTExgICAgICAgICB8IEFsd2F5cyA6YzpkYXRhOmBQeV9Ob25lYC4gICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA6Y29uc3Q6YFB5VHJhY2VfRVhDRVBUSU9OYCAgIHwgRXhjZXB0aW9uIGluZm9ybWF0aW9uIGFzIHJldHVybmVkIGJ5IHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBzeXMuZXhjX2luZm9gLiAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YFB5VHJhY2VfTElORWAgICAgICAgIHwgQWx3YXlzICpOVUxMKi4gICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgOmNvbnN0OmBQeVRyYWNlX0xJTkVgICAgICAgICB8IEFsd2F5cyA6YzpkYXRhOmBQeV9Ob25lYC4gICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA6Y29uc3Q6YFB5VHJhY2VfUkVUVVJOYCAgICAgIHwgVmFsdWUgYmVpbmcgcmV0dXJuZWQgdG8gdGhlIGNhbGxlciwgIHwKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICpOVUxMKiBpZiBjYXVzZWQgYnkgYW4gZXhjZXB0aW9uLiB8CkBAIC0xMDMwLDcgKzEwMzAsNyBAQAogLi4gYzp2YXI6OiBpbnQgUHlUcmFjZV9SRVRVUk4KIAogICAgVGhlIHZhbHVlIGZvciB0aGUgKndoYXQqIHBhcmFtZXRlciB0byA6Yzp0eXBlOmBQeV90cmFjZWZ1bmNgIGZ1bmN0aW9ucyB3aGVuIGEKLSAgIGNhbGwgaXMgcmV0dXJuaW5nIHdpdGhvdXQgcHJvcGFnYXRpbmcgYW4gZXhjZXB0aW9uLgorICAgY2FsbCBpcyBhYm91dCB0byByZXR1cm4uCiAKIAogLi4gYzp2YXI6OiBpbnQgUHlUcmFjZV9DX0NBTEwKQEAgLTEwNTcsMTUgKzEwNTcsMTkgQEAKICAgIGZ1bmN0aW9uIGFzIGl0cyBmaXJzdCBwYXJhbWV0ZXIsIGFuZCBtYXkgYmUgYW55IFB5dGhvbiBvYmplY3QsIG9yICpOVUxMKi4gIElmCiAgICB0aGUgcHJvZmlsZSBmdW5jdGlvbiBuZWVkcyB0byBtYWludGFpbiBzdGF0ZSwgdXNpbmcgYSBkaWZmZXJlbnQgdmFsdWUgZm9yICpvYmoqCiAgICBmb3IgZWFjaCB0aHJlYWQgcHJvdmlkZXMgYSBjb252ZW5pZW50IGFuZCB0aHJlYWQtc2FmZSBwbGFjZSB0byBzdG9yZSBpdC4gIFRoZQotICAgcHJvZmlsZSBmdW5jdGlvbiBpcyBjYWxsZWQgZm9yIGFsbCBtb25pdG9yZWQgZXZlbnRzIGV4Y2VwdCB0aGUgbGluZS1udW1iZXIKLSAgIGV2ZW50cy4KKyAgIHByb2ZpbGUgZnVuY3Rpb24gaXMgY2FsbGVkIGZvciBhbGwgbW9uaXRvcmVkIGV2ZW50cyBleGNlcHQgOmNvbnN0OmBQeVRyYWNlX0xJTkVgCisgICBhbmQgOmNvbnN0OmBQeVRyYWNlX0VYQ0VQVElPTmAuCiAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlFdmFsX1NldFRyYWNlKFB5X3RyYWNlZnVuYyBmdW5jLCBQeU9iamVjdCAqb2JqKQogCiAgICBTZXQgdGhlIHRyYWNpbmcgZnVuY3Rpb24gdG8gKmZ1bmMqLiAgVGhpcyBpcyBzaW1pbGFyIHRvCiAgICA6YzpmdW5jOmBQeUV2YWxfU2V0UHJvZmlsZWAsIGV4Y2VwdCB0aGUgdHJhY2luZyBmdW5jdGlvbiBkb2VzIHJlY2VpdmUgbGluZS1udW1iZXIKLSAgIGV2ZW50cy4KKyAgIGV2ZW50cyBhbmQgZG9lcyBub3QgcmVjZWl2ZSBhbnkgZXZlbnQgcmVsYXRlZCB0byBDIGZ1bmN0aW9uIG9iamVjdHMgYmVpbmcgY2FsbGVkLiBBbnkKKyAgIHRyYWNlIGZ1bmN0aW9uIHJlZ2lzdGVyZWQgdXNpbmcgOmM6ZnVuYzpgUHlFdmFsX1NldFRyYWNlYCB3aWxsIG5vdCByZWNlaXZlCisgICA6Y29uc3Q6YFB5VHJhY2VfQ19DQUxMYCwgOmNvbnN0OmBQeVRyYWNlX0NfRVhDRVBUSU9OYCBvciA6Y29uc3Q6YFB5VHJhY2VfQ19SRVRVUk5gCisgICBhcyBhIHZhbHVlIGZvciB0aGUgKndoYXQqIHBhcmFtZXRlci4KKwogCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXZhbF9HZXRDYWxsU3RhdHMoUHlPYmplY3QgKnNlbGYpCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9tZW1vcnkucnN0IGIvRG9jL2MtYXBpL21lbW9yeS5yc3QKaW5kZXggNTQ2NTU3MS4uMmI5ZmI3MyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL21lbW9yeS5yc3QKKysrIGIvRG9jL2MtYXBpL21lbW9yeS5yc3QKQEAgLTM1LDcgKzM1LDcgQEAKIAogSXQgaXMgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhhdCB0aGUgbWFuYWdlbWVudCBvZiB0aGUgUHl0aG9uIGhlYXAgaXMKIHBlcmZvcm1lZCBieSB0aGUgaW50ZXJwcmV0ZXIgaXRzZWxmIGFuZCB0aGF0IHRoZSB1c2VyIGhhcyBubyBjb250cm9sIG92ZXIgaXQsCi1ldmVuIGlmIHNoZSByZWd1bGFybHkgbWFuaXB1bGF0ZXMgb2JqZWN0IHBvaW50ZXJzIHRvIG1lbW9yeSBibG9ja3MgaW5zaWRlIHRoYXQKK2V2ZW4gaWYgdGhleSByZWd1bGFybHkgbWFuaXB1bGF0ZSBvYmplY3QgcG9pbnRlcnMgdG8gbWVtb3J5IGJsb2NrcyBpbnNpZGUgdGhhdAogaGVhcC4gIFRoZSBhbGxvY2F0aW9uIG9mIGhlYXAgc3BhY2UgZm9yIFB5dGhvbiBvYmplY3RzIGFuZCBvdGhlciBpbnRlcm5hbAogYnVmZmVycyBpcyBwZXJmb3JtZWQgb24gZGVtYW5kIGJ5IHRoZSBQeXRob24gbWVtb3J5IG1hbmFnZXIgdGhyb3VnaCB0aGUgUHl0aG9uL0MKIEFQSSBmdW5jdGlvbnMgbGlzdGVkIGluIHRoaXMgZG9jdW1lbnQuCkBAIC0xNTUsNiArMTU1LDg4IEBACiA6YzpmdW5jOmBQeU1lbV9ORVdgLCA6YzpmdW5jOmBQeU1lbV9SRVNJWkVgLCA6YzpmdW5jOmBQeU1lbV9ERUxgLgogCiAKK09iamVjdCBhbGxvY2F0b3JzCis9PT09PT09PT09PT09PT09PQorCitUaGUgZm9sbG93aW5nIGZ1bmN0aW9uIHNldHMsIG1vZGVsZWQgYWZ0ZXIgdGhlIEFOU0kgQyBzdGFuZGFyZCwgYnV0IHNwZWNpZnlpbmcKK2JlaGF2aW9yIHdoZW4gcmVxdWVzdGluZyB6ZXJvIGJ5dGVzLCBhcmUgYXZhaWxhYmxlIGZvciBhbGxvY2F0aW5nIGFuZCByZWxlYXNpbmcKK21lbW9yeSBmcm9tIHRoZSBQeXRob24gaGVhcC4KKworQnkgZGVmYXVsdCwgdGhlc2UgZnVuY3Rpb25zIHVzZSA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yIDxweW1hbGxvYz5gLgorCisuLiB3YXJuaW5nOjoKKworICAgVGhlIDp0ZXJtOmBHSUwgPGdsb2JhbCBpbnRlcnByZXRlciBsb2NrPmAgbXVzdCBiZSBoZWxkIHdoZW4gdXNpbmcgdGhlc2UKKyAgIGZ1bmN0aW9ucy4KKworLi4gYzpmdW5jdGlvbjo6IHZvaWQqIFB5T2JqZWN0X01hbGxvYyhzaXplX3QgbikKKworICAgQWxsb2NhdGVzICpuKiBieXRlcyBhbmQgcmV0dXJucyBhIHBvaW50ZXIgb2YgdHlwZSA6Yzp0eXBlOmB2b2lkXCpgIHRvIHRoZQorICAgYWxsb2NhdGVkIG1lbW9yeSwgb3IgKk5VTEwqIGlmIHRoZSByZXF1ZXN0IGZhaWxzLgorCisgICBSZXF1ZXN0aW5nIHplcm8gYnl0ZXMgcmV0dXJucyBhIGRpc3RpbmN0IG5vbi0qTlVMTCogcG9pbnRlciBpZiBwb3NzaWJsZSwgYXMKKyAgIGlmIGBgUHlPYmplY3RfTWFsbG9jKDEpYGAgaGFkIGJlZW4gY2FsbGVkIGluc3RlYWQuIFRoZSBtZW1vcnkgd2lsbCBub3QgaGF2ZQorICAgYmVlbiBpbml0aWFsaXplZCBpbiBhbnkgd2F5LgorCisKKy4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU9iamVjdF9SZWFsbG9jKHZvaWQgKnAsIHNpemVfdCBuKQorCisgICBSZXNpemVzIHRoZSBtZW1vcnkgYmxvY2sgcG9pbnRlZCB0byBieSAqcCogdG8gKm4qIGJ5dGVzLiBUaGUgY29udGVudHMgd2lsbCBiZQorICAgdW5jaGFuZ2VkIHRvIHRoZSBtaW5pbXVtIG9mIHRoZSBvbGQgYW5kIHRoZSBuZXcgc2l6ZXMuCisKKyAgIElmICpwKiBpcyAqTlVMTCosIHRoZSBjYWxsIGlzIGVxdWl2YWxlbnQgdG8gYGBQeU9iamVjdF9NYWxsb2MobilgYDsgZWxzZSBpZiAqbioKKyAgIGlzIGVxdWFsIHRvIHplcm8sIHRoZSBtZW1vcnkgYmxvY2sgaXMgcmVzaXplZCBidXQgaXMgbm90IGZyZWVkLCBhbmQgdGhlCisgICByZXR1cm5lZCBwb2ludGVyIGlzIG5vbi0qTlVMTCouCisKKyAgIFVubGVzcyAqcCogaXMgKk5VTEwqLCBpdCBtdXN0IGhhdmUgYmVlbiByZXR1cm5lZCBieSBhIHByZXZpb3VzIGNhbGwgdG8KKyAgIDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X1JlYWxsb2NgIG9yIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AuCisKKyAgIElmIHRoZSByZXF1ZXN0IGZhaWxzLCA6YzpmdW5jOmBQeU9iamVjdF9SZWFsbG9jYCByZXR1cm5zICpOVUxMKiBhbmQgKnAqIHJlbWFpbnMKKyAgIGEgdmFsaWQgcG9pbnRlciB0byB0aGUgcHJldmlvdXMgbWVtb3J5IGFyZWEuCisKKworLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlPYmplY3RfRnJlZSh2b2lkICpwKQorCisgICBGcmVlcyB0aGUgbWVtb3J5IGJsb2NrIHBvaW50ZWQgdG8gYnkgKnAqLCB3aGljaCBtdXN0IGhhdmUgYmVlbiByZXR1cm5lZCBieSBhCisgICBwcmV2aW91cyBjYWxsIHRvIDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X1JlYWxsb2NgIG9yCisgICA6YzpmdW5jOmBQeU9iamVjdF9DYWxsb2NgLiAgT3RoZXJ3aXNlLCBvciBpZiBgYFB5T2JqZWN0X0ZyZWUocClgYCBoYXMgYmVlbiBjYWxsZWQKKyAgIGJlZm9yZSwgdW5kZWZpbmVkIGJlaGF2aW9yIG9jY3Vycy4KKworICAgSWYgKnAqIGlzICpOVUxMKiwgbm8gb3BlcmF0aW9uIGlzIHBlcmZvcm1lZC4KKworCitJbiBhZGRpdGlvbiwgdGhlIGZvbGxvd2luZyBtYWNybyBzZXRzIGFyZSBwcm92aWRlZDoKKworKiA6YzpmdW5jOmBQeU9iamVjdF9NQUxMT0NgOiBhbGlhcyB0byA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgCisqIDpjOmZ1bmM6YFB5T2JqZWN0X1JFQUxMT0NgOiBhbGlhcyB0byA6YzpmdW5jOmBQeU9iamVjdF9SZWFsbG9jYAorKiA6YzpmdW5jOmBQeU9iamVjdF9GUkVFYDogYWxpYXMgdG8gOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKKyogOmM6ZnVuYzpgUHlPYmplY3RfRGVsYDogYWxpYXMgdG8gOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKKyogOmM6ZnVuYzpgUHlPYmplY3RfREVMYDogYWxpYXMgdG8gOmM6ZnVuYzpgUHlPYmplY3RfRlJFRWAgKHNvIGZpbmFsbHkgYW4gYWxpYXMKKyAgdG8gOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWApCisKKworLi4gX3B5bWFsbG9jOgorCitUaGUgcHltYWxsb2MgYWxsb2NhdG9yCis9PT09PT09PT09PT09PT09PT09PT09CisKK1B5dGhvbiBoYXMgYSAqcHltYWxsb2MqIGFsbG9jYXRvciBvcHRpbWl6ZWQgZm9yIHNtYWxsIG9iamVjdHMgKHNtYWxsZXIgb3IgZXF1YWwKK3RvIDUxMiBieXRlcykgd2l0aCBhIHNob3J0IGxpZmV0aW1lLiBJdCB1c2VzIG1lbW9yeSBtYXBwaW5ncyBjYWxsZWQgImFyZW5hcyIKK3dpdGggYSBmaXhlZCBzaXplIG9mIDI1NiBLaUIuIEl0IGZhbGxzIGJhY2sgdG8gOmM6ZnVuYzpgbWFsbG9jYCBhbmQKKzpjOmZ1bmM6YHJlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIgdGhhbiA1MTIgYnl0ZXMuCisKKypweW1hbGxvYyogaXMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIG9mIDpjOmZ1bmM6YFB5T2JqZWN0X01hbGxvY2AuCisKK1RoZSBhcmVuYSBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKKworKiA6YzpmdW5jOmBtbWFwYCBhbmQgOmM6ZnVuYzpgbXVubWFwYCBpZiBhdmFpbGFibGUsCisqIDpjOmZ1bmM6YG1hbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgIG90aGVyd2lzZS4KKworLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjcuNworICAgVGhlIHRocmVzaG9sZCBjaGFuZ2VkIGZyb20gMjU2IHRvIDUxMiBieXRlcy4gVGhlIGFyZW5hIGFsbG9jYXRvciBub3cKKyAgIHVzZXMgOmM6ZnVuYzpgbW1hcGAgaWYgYXZhaWxhYmxlLgorCisKIC4uIF9tZW1vcnlleGFtcGxlczoKIAogRXhhbXBsZXMKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9zZXF1ZW5jZS5yc3QgYi9Eb2MvYy1hcGkvc2VxdWVuY2UucnN0CmluZGV4IGQ4MmE3YjAuLmQ5NWVmMjMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zZXF1ZW5jZS5yc3QKKysrIGIvRG9jL2MtYXBpL3NlcXVlbmNlLnJzdApAQCAtMTcsOSArMTcsOCBAQAogCiAgICAuLiBpbmRleDo6IGJ1aWx0aW46IGxlbgogCi0gICBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBpbiBzZXF1ZW5jZSAqbyogb24gc3VjY2VzcywgYW5kIGBgLTFgYCBvbiBmYWlsdXJlLgotICAgRm9yIG9iamVjdHMgdGhhdCBkbyBub3QgcHJvdmlkZSBzZXF1ZW5jZSBwcm90b2NvbCwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZQotICAgUHl0aG9uIGV4cHJlc3Npb24gYGBsZW4obylgYC4KKyAgIFJldHVybnMgdGhlIG51bWJlciBvZiBvYmplY3RzIGluIHNlcXVlbmNlICpvKiBvbiBzdWNjZXNzLCBhbmQgYGAtMWBgIG9uCisgICBmYWlsdXJlLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIHRoZSBQeXRob24gZXhwcmVzc2lvbiBgYGxlbihvKWBgLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNQogICAgICAgVGhlc2UgZnVuY3Rpb25zIHJldHVybmVkIGFuIDpjOnR5cGU6YGludGAgdHlwZS4gVGhpcyBtaWdodCByZXF1aXJlCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc2xpY2UucnN0IGIvRG9jL2MtYXBpL3NsaWNlLnJzdAppbmRleCAwZGU5NTBhLi4wOGQ1Yjk0IDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvc2xpY2UucnN0CisrKyBiL0RvYy9jLWFwaS9zbGljZS5yc3QKQEAgLTY2LDMgKzY2LDE0IEBACiAgICAgICA6Yzp0eXBlOmBpbnQgKmAgdHlwZSBmb3IgKnN0YXJ0KiwgKnN0b3AqLCAqc3RlcCosIGFuZCAqc2xpY2VsZW5ndGgqLiBUaGlzCiAgICAgICBtaWdodCByZXF1aXJlIGNoYW5nZXMgaW4geW91ciBjb2RlIGZvciBwcm9wZXJseSBzdXBwb3J0aW5nIDY0LWJpdAogICAgICAgc3lzdGVtcy4KKworCitFbGxpcHNpcyBPYmplY3QKKy0tLS0tLS0tLS0tLS0tLQorCisKKy4uIGM6dmFyOjogUHlPYmplY3QgKlB5X0VsbGlwc2lzCisKKyAgIFRoZSBQeXRob24gYGBFbGxpcHNpc2BgIG9iamVjdC4gIFRoaXMgb2JqZWN0IGhhcyBubyBtZXRob2RzLiAgSXQgbmVlZHMgdG8gYmUKKyAgIHRyZWF0ZWQganVzdCBsaWtlIGFueSBvdGhlciBvYmplY3Qgd2l0aCByZXNwZWN0IHRvIHJlZmVyZW5jZSBjb3VudHMuICBMaWtlCisgICA6YzpkYXRhOmBQeV9Ob25lYCBpdCBpcyBhIHNpbmdsZXRvbiBvYmplY3QuCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QgYi9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QKaW5kZXggZmRlZTVmOS4uYWY2YThjMyAxMDA2NDQKLS0tIGEvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0CisrKyBiL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdApAQCAtMjY1LDcgKzI2NSw3IEBACiAgICArPT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKICAgIHwgOmF0dHI6YG5hbWVgICAgICB8IGNoYXIgXCogICAgIHwgbmFtZSBvZiB0aGUgbWVtYmVyICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDphdHRyOmB0eXBlYCAgICAgfCBpbnQgICAgICAgICB8IHRoZSB0eXBlIG9mIHRoZSBtZW1iZXIgaW4gdGhlIHwKKyAgIHwgOmF0dHI6YCF0eXBlYCAgICB8IGludCAgICAgICAgIHwgdGhlIHR5cGUgb2YgdGhlIG1lbWJlciBpbiB0aGUgfAogICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfCBDIHN0cnVjdCAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgOmF0dHI6YG9mZnNldGAgICB8IFB5X3NzaXplX3QgIHwgdGhlIG9mZnNldCBpbiBieXRlcyB0aGF0IHRoZSAgfApAQCAtMjgwLDcgKzI4MCw3IEBACiAgICB8ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8IGRvY3N0cmluZyAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCi0gICA6YXR0cjpgdHlwZWAgY2FuIGJlIG9uZSBvZiBtYW55IGBgVF9gYCBtYWNyb3MgY29ycmVzcG9uZGluZyB0byB2YXJpb3VzIEMKKyAgIDphdHRyOmAhdHlwZWAgY2FuIGJlIG9uZSBvZiBtYW55IGBgVF9gYCBtYWNyb3MgY29ycmVzcG9uZGluZyB0byB2YXJpb3VzIEMKICAgIHR5cGVzLiAgV2hlbiB0aGUgbWVtYmVyIGlzIGFjY2Vzc2VkIGluIFB5dGhvbiwgaXQgd2lsbCBiZSBjb252ZXJ0ZWQgdG8gdGhlCiAgICBlcXVpdmFsZW50IFB5dGhvbiB0eXBlLgogCkBAIC0zMjAsNiArMzIwLDQ2IEBACiAgICBtZW1iZXJzIGNhbiBiZSBkZWxldGVkLiAgKFRoZXkgYXJlIHNldCB0byAqTlVMTCopLgogCiAKKy4uIGM6dHlwZTo6IFB5R2V0U2V0RGVmCisKKyAgIFN0cnVjdHVyZSB0byBkZWZpbmUgcHJvcGVydHktbGlrZSBhY2Nlc3MgZm9yIGEgdHlwZS4gU2VlIGFsc28gZGVzY3JpcHRpb24gb2YKKyAgIHRoZSA6YzptZW1iZXI6YFB5VHlwZU9iamVjdC50cF9nZXRzZXRgIHNsb3QuCisKKyAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgRmllbGQgICAgICAgfCBDIFR5cGUgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICs9PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgbmFtZSAgICAgICAgfCBjaGFyIFwqICAgICAgICAgIHwgYXR0cmlidXRlIG5hbWUgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgZ2V0ICAgICAgICAgfCBnZXR0ZXIgICAgICAgICAgIHwgQyBGdW5jdGlvbiB0byBnZXQgdGhlIGF0dHJpYnV0ZSAgIHwKKyAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgc2V0ICAgICAgICAgfCBzZXR0ZXIgICAgICAgICAgIHwgb3B0aW9uYWwgQyBmdW5jdGlvbiB0byBzZXQgb3IgICAgIHwKKyAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgZGVsZXRlIHRoZSBhdHRyaWJ1dGUsIGlmIG9taXR0ZWQgIHwKKyAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgdGhlIGF0dHJpYnV0ZSBpcyByZWFkb25seSAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgZG9jICAgICAgICAgfCBjaGFyIFwqICAgICAgICAgIHwgb3B0aW9uYWwgZG9jc3RyaW5nICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgY2xvc3VyZSAgICAgfCB2b2lkIFwqICAgICAgICAgIHwgb3B0aW9uYWwgZnVuY3Rpb24gcG9pbnRlciwgICAgICAgIHwKKyAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgcHJvdmlkaW5nIGFkZGl0aW9uYWwgZGF0YSBmb3IgICAgIHwKKyAgIHwgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgIHwgZ2V0dGVyIGFuZCBzZXR0ZXIgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKworICAgVGhlIGBgZ2V0YGAgZnVuY3Rpb24gdGFrZXMgb25lIDpjOnR5cGU6YFB5T2JqZWN0XCpgIHBhcmFtZXRlciAodGhlCisgICBpbnN0YW5jZSkgYW5kIGEgZnVuY3Rpb24gcG9pbnRlciAodGhlIGFzc29jaWF0ZWQgYGBjbG9zdXJlYGApOjoKKworICAgICAgdHlwZWRlZiBQeU9iamVjdCAqKCpnZXR0ZXIpKFB5T2JqZWN0ICosIHZvaWQgKik7CisKKyAgIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgcmVmZXJlbmNlIG9uIHN1Y2Nlc3Mgb3IgKk5VTEwqIHdpdGggYSBzZXQgZXhjZXB0aW9uCisgICBvbiBmYWlsdXJlLgorCisgICBgYHNldGBgIGZ1bmN0aW9ucyB0YWtlIHR3byA6Yzp0eXBlOmBQeU9iamVjdFwqYCBwYXJhbWV0ZXJzICh0aGUgaW5zdGFuY2UgYW5kCisgICB0aGUgdmFsdWUgdG8gYmUgc2V0KSBhbmQgYSBmdW5jdGlvbiBwb2ludGVyICh0aGUgYXNzb2NpYXRlZCBgYGNsb3N1cmVgYCk6OgorCisgICAgICB0eXBlZGVmIGludCAoKnNldHRlcikoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgdm9pZCAqKTsKKworICAgSW4gY2FzZSB0aGUgYXR0cmlidXRlIHNob3VsZCBiZSBkZWxldGVkIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzICpOVUxMKi4KKyAgIFNob3VsZCByZXR1cm4gYGAwYGAgb24gc3VjY2VzcyBvciBgYC0xYGAgd2l0aCBhIHNldCBleGNlcHRpb24gb24gZmFpbHVyZS4KKworCiAuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5X0ZpbmRNZXRob2QoUHlNZXRob2REZWYgdGFibGVbXSwgUHlPYmplY3QgKm9iLCBjaGFyICpuYW1lKQogCiAgICBSZXR1cm4gYSBib3VuZCBtZXRob2Qgb2JqZWN0IGZvciBhbiBleHRlbnNpb24gdHlwZSBpbXBsZW1lbnRlZCBpbiBDLiAgVGhpcwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3R5cGVvYmoucnN0IGIvRG9jL2MtYXBpL3R5cGVvYmoucnN0CmluZGV4IDkyMzMyNzguLmYwY2NmMmUgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS90eXBlb2JqLnJzdAorKysgYi9Eb2MvYy1hcGkvdHlwZW9iai5yc3QKQEAgLTgyNSwyMSArODI1LDYgQEAKICAgIFRoaXMgZmllbGQgaXMgbm90IGluaGVyaXRlZCBieSBzdWJ0eXBlcyAoY29tcHV0ZWQgYXR0cmlidXRlcyBhcmUgaW5oZXJpdGVkCiAgICB0aHJvdWdoIGEgZGlmZmVyZW50IG1lY2hhbmlzbSkuCiAKLSAgIC4uIFhYWCBiZWxvbmdzIGVsc2V3aGVyZQotCi0gICBEb2NzIGZvciBQeUdldFNldERlZjo6Ci0KLSAgICAgIHR5cGVkZWYgUHlPYmplY3QgKigqZ2V0dGVyKShQeU9iamVjdCAqLCB2b2lkICopOwotICAgICAgdHlwZWRlZiBpbnQgKCpzZXR0ZXIpKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIHZvaWQgKik7Ci0KLSAgICAgIHR5cGVkZWYgc3RydWN0IFB5R2V0U2V0RGVmIHsKLSAgICAgICAgICBjaGFyICpuYW1lOyAgICAvKiBhdHRyaWJ1dGUgbmFtZSAqLwotICAgICAgICAgIGdldHRlciBnZXQ7ICAgIC8qIEMgZnVuY3Rpb24gdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgKi8KLSAgICAgICAgICBzZXR0ZXIgc2V0OyAgICAvKiBDIGZ1bmN0aW9uIHRvIHNldCBvciBkZWxldGUgdGhlIGF0dHJpYnV0ZSAqLwotICAgICAgICAgIGNoYXIgKmRvYzsgICAgIC8qIG9wdGlvbmFsIGRvYyBzdHJpbmcgKi8KLSAgICAgICAgICB2b2lkICpjbG9zdXJlOyAvKiBvcHRpb25hbCBhZGRpdGlvbmFsIGRhdGEgZm9yIGdldHRlciBhbmQgc2V0dGVyICovCi0gICAgICB9IFB5R2V0U2V0RGVmOwotCiAKIC4uIGM6bWVtYmVyOjogUHlUeXBlT2JqZWN0KiBQeVR5cGVPYmplY3QudHBfYmFzZQogCkBAIC0xMTE2LDcgKzExMDEsNyBAQAogVGhlIHJlbWFpbmluZyBmaWVsZHMgYXJlIG9ubHkgZGVmaW5lZCBpZiB0aGUgZmVhdHVyZSB0ZXN0IG1hY3JvCiA6Y29uc3Q6YENPVU5UX0FMTE9DU2AgaXMgZGVmaW5lZCwgYW5kIGFyZSBmb3IgaW50ZXJuYWwgdXNlIG9ubHkuIFRoZXkgYXJlCiBkb2N1bWVudGVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy4gIE5vbmUgb2YgdGhlc2UgZmllbGRzIGFyZSBpbmhlcml0ZWQgYnkKLXN1YnR5cGVzLgorc3VidHlwZXMuIFNlZSB0aGUgOmVudnZhcjpgUFlUSE9OU0hPV0FMTE9DQ09VTlRgIGVudmlyb25tZW50IHZhcmlhYmxlLgogCiAKIC4uIGM6bWVtYmVyOjogUHlfc3NpemVfdCBQeVR5cGVPYmplY3QudHBfYWxsb2NzCkBAIC0xMzc3LDIzICsxMzYyLDIzIEBACiAgICBTdHJ1Y3R1cmUgdXNlZCB0byBob2xkIHRoZSBmdW5jdGlvbiBwb2ludGVycyB3aGljaCBkZWZpbmUgYW4gaW1wbGVtZW50YXRpb24gb2YKICAgIHRoZSBidWZmZXIgcHJvdG9jb2wuCiAKLSAgIFRoZSBmaXJzdCBzbG90IGlzIDphdHRyOmBiZl9nZXRyZWFkYnVmZmVyYCwgb2YgdHlwZSA6Yzp0eXBlOmBnZXRyZWFkYnVmZmVycHJvY2AuCisgICBUaGUgZmlyc3Qgc2xvdCBpcyA6YXR0cjpgYmZfZ2V0cmVhZGJ1ZmZlcmAsIG9mIHR5cGUgOmM6dHlwZTpgcmVhZGJ1ZmZlcnByb2NgLgogICAgSWYgdGhpcyBzbG90IGlzICpOVUxMKiwgdGhlbiB0aGUgb2JqZWN0IGRvZXMgbm90IHN1cHBvcnQgcmVhZGluZyBmcm9tIHRoZQogICAgaW50ZXJuYWwgZGF0YS4gIFRoaXMgaXMgbm9uLXNlbnNpY2FsLCBzbyBpbXBsZW1lbnRvcnMgc2hvdWxkIGZpbGwgdGhpcyBpbiwgYnV0CiAgICBjYWxsZXJzIHNob3VsZCB0ZXN0IHRoYXQgdGhlIHNsb3QgY29udGFpbnMgYSBub24tKk5VTEwqIHZhbHVlLgogCiAgICBUaGUgbmV4dCBzbG90IGlzIDphdHRyOmBiZl9nZXR3cml0ZWJ1ZmZlcmAgaGF2aW5nIHR5cGUKLSAgIDpjOnR5cGU6YGdldHdyaXRlYnVmZmVycHJvY2AuICBUaGlzIHNsb3QgbWF5IGJlICpOVUxMKiBpZiB0aGUgb2JqZWN0IGRvZXMgbm90CisgICA6Yzp0eXBlOmB3cml0ZWJ1ZmZlcnByb2NgLiAgVGhpcyBzbG90IG1heSBiZSAqTlVMTCogaWYgdGhlIG9iamVjdCBkb2VzIG5vdAogICAgYWxsb3cgd3JpdGluZyBpbnRvIGl0cyByZXR1cm5lZCBidWZmZXJzLgogCi0gICBUaGUgdGhpcmQgc2xvdCBpcyA6YXR0cjpgYmZfZ2V0c2VnY291bnRgLCB3aXRoIHR5cGUgOmM6dHlwZTpgZ2V0c2VnY291bnRwcm9jYC4KKyAgIFRoZSB0aGlyZCBzbG90IGlzIDphdHRyOmBiZl9nZXRzZWdjb3VudGAsIHdpdGggdHlwZSA6Yzp0eXBlOmBzZWdjb3VudHByb2NgLgogICAgVGhpcyBzbG90IG11c3Qgbm90IGJlICpOVUxMKiBhbmQgaXMgdXNlZCB0byBpbmZvcm0gdGhlIGNhbGxlciBob3cgbWFueSBzZWdtZW50cwogICAgdGhlIG9iamVjdCBjb250YWlucy4gIFNpbXBsZSBvYmplY3RzIHN1Y2ggYXMgOmM6dHlwZTpgUHlTdHJpbmdfVHlwZWAgYW5kCiAgICA6Yzp0eXBlOmBQeUJ1ZmZlcl9UeXBlYCBvYmplY3RzIGNvbnRhaW4gYSBzaW5nbGUgc2VnbWVudC4KIAogICAgLi4gaW5kZXg6OiBzaW5nbGU6IFB5VHlwZV9IYXNGZWF0dXJlKCkKIAotICAgVGhlIGxhc3Qgc2xvdCBpcyA6YXR0cjpgYmZfZ2V0Y2hhcmJ1ZmZlcmAsIG9mIHR5cGUgOmM6dHlwZTpgZ2V0Y2hhcmJ1ZmZlcnByb2NgLgorICAgVGhlIGxhc3Qgc2xvdCBpcyA6YXR0cjpgYmZfZ2V0Y2hhcmJ1ZmZlcmAsIG9mIHR5cGUgOmM6dHlwZTpgY2hhcmJ1ZmZlcnByb2NgLgogICAgVGhpcyBzbG90IHdpbGwgb25seSBiZSBwcmVzZW50IGlmIHRoZSA6Y29uc3Q6YFB5X1RQRkxBR1NfSEFWRV9HRVRDSEFSQlVGRkVSYAogICAgZmxhZyBpcyBwcmVzZW50IGluIHRoZSA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfZmxhZ3NgIGZpZWxkIG9mIHRoZSBvYmplY3QncwogICAgOmM6dHlwZTpgUHlUeXBlT2JqZWN0YC4gQmVmb3JlIHVzaW5nIHRoaXMgc2xvdCwgdGhlIGNhbGxlciBzaG91bGQgdGVzdCB3aGV0aGVyIGl0CmRpZmYgLS1naXQgYS9Eb2MvY29uZi5weSBiL0RvYy9jb25mLnB5CmluZGV4IDJjMjcxZTguLjU1N2ZlMWUgMTAwNjQ0Ci0tLSBhL0RvYy9jb25mLnB5CisrKyBiL0RvYy9jb25mLnB5CkBAIC04MiwxMSArODIsMjggQEAKICMgT3B0aW9ucyBmb3IgTGFUZVggb3V0cHV0CiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisjIEdldCBMYVRlWCB0byBoYW5kbGUgVW5pY29kZSBjb3JyZWN0bHkKK2xhdGV4X2VsZW1lbnRzID0geworICAgICdpbnB1dGVuYyc6IHInXHVzZXBhY2thZ2VbdXRmOHhde2lucHV0ZW5jfScsCisgICAgJ3V0ZjhleHRyYSc6ICcnLAorICAgICdmb250ZW5jJzogcidcdXNlcGFja2FnZVtUMSxUMkFde2ZvbnRlbmN9JywKK30KKworIyBBZGRpdGlvbmFsIHN0dWZmIGZvciB0aGUgTGFUZVggcHJlYW1ibGUuCitsYXRleF9lbGVtZW50c1sncHJlYW1ibGUnXSA9IHInJycKK1xhdXRob3JhZGRyZXNzeworICBcc3BoaW54c3Ryb25ne1B5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9ufVxcCisgIEVtYWlsOiBcc3BoaW54ZW1haWx7ZG9jc0BweXRob24ub3JnfQorfQorXGxldFxWZXJiYXRpbT1cT3JpZ2luYWxWZXJiYXRpbQorXGxldFxlbmRWZXJiYXRpbT1cZW5kT3JpZ2luYWxWZXJiYXRpbQorJycnCisKICMgVGhlIHBhcGVyIHNpemUgKCdsZXR0ZXInIG9yICdhNCcpLgotbGF0ZXhfcGFwZXJfc2l6ZSA9ICdhNCcKK2xhdGV4X2VsZW1lbnRzWydwYXBlcnNpemUnXSA9ICdhNCcKIAogIyBUaGUgZm9udCBzaXplICgnMTBwdCcsICcxMXB0JyBvciAnMTJwdCcpLgotbGF0ZXhfZm9udF9zaXplID0gJzEwcHQnCitsYXRleF9lbGVtZW50c1sncG9pbnRzaXplJ10gPSAnMTBwdCcKIAogIyBHcm91cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIExhVGVYIGZpbGVzLiBMaXN0IG9mIHR1cGxlcwogIyAoc291cmNlIHN0YXJ0IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRsZSwgYXV0aG9yLCBkb2N1bWVudCBjbGFzcyBbaG93dG8vbWFudWFsXSkuCkBAIC0xMTksMzAgKzEzNiwxNSBAQAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gb3MubGlzdGRpcignaG93dG8nKQogICAgICAgICAgICAgICAgICAgICAgICBpZiBmbi5lbmRzd2l0aCgnLnJzdCcpIGFuZCBmbiAhPSAnaW5kZXgucnN0JykKIAotIyBBZGRpdGlvbmFsIHN0dWZmIGZvciB0aGUgTGFUZVggcHJlYW1ibGUuCi1sYXRleF9wcmVhbWJsZSA9IHInJycKLVxhdXRob3JhZGRyZXNzewotICBcc3Ryb25ne1B5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9ufVxcCi0gIEVtYWlsOiBcZW1haWx7ZG9jc0BweXRob24ub3JnfQotfQotXGxldFxWZXJiYXRpbT1cT3JpZ2luYWxWZXJiYXRpbQotXGxldFxlbmRWZXJiYXRpbT1cZW5kT3JpZ2luYWxWZXJiYXRpbQotJycnCi0KICMgRG9jdW1lbnRzIHRvIGFwcGVuZCBhcyBhbiBhcHBlbmRpeCB0byBhbGwgbWFudWFscy4KIGxhdGV4X2FwcGVuZGljZXMgPSBbJ2dsb3NzYXJ5JywgJ2Fib3V0JywgJ2xpY2Vuc2UnLCAnY29weXJpZ2h0J10KIAotIyBHZXQgTGFUZVggdG8gaGFuZGxlIFVuaWNvZGUgY29ycmVjdGx5Ci1sYXRleF9lbGVtZW50cyA9IHsnaW5wdXRlbmMnOiByJ1x1c2VwYWNrYWdlW3V0Zjh4XXtpbnB1dGVuY30nLCAndXRmOGV4dHJhJzogJyd9Ci0KLQogIyBPcHRpb25zIGZvciBFcHViIG91dHB1dAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBlcHViX2F1dGhvciA9ICdQeXRob24gRG9jdW1lbnRhdGlvbiBBdXRob3JzJwogZXB1Yl9wdWJsaXNoZXIgPSAnUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24nCiAKLQogIyBPcHRpb25zIGZvciB0aGUgY292ZXJhZ2UgY2hlY2tlcgogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvY29weXJpZ2h0LnJzdCBiL0RvYy9jb3B5cmlnaHQucnN0CmluZGV4IDIyZDc3MDUuLjU0MGZmNWUgMTAwNjQ0Ci0tLSBhL0RvYy9jb3B5cmlnaHQucnN0CisrKyBiL0RvYy9jb3B5cmlnaHQucnN0CkBAIC00LDcgKzQsNyBAQAogCiBQeXRob24gYW5kIHRoaXMgZG9jdW1lbnRhdGlvbiBpczoKIAotQ29weXJpZ2h0IMKpIDIwMDEtMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KK0NvcHlyaWdodCDCqSAyMDAxLTIwMTggUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKIENvcHlyaWdodCDCqSAyMDAwIEJlT3Blbi5jb20uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy9kaXN0cmlidXRpbmcvaW5kZXgucnN0IGIvRG9jL2Rpc3RyaWJ1dGluZy9pbmRleC5yc3QKaW5kZXggODJlY2QyYy4uYjBkY2NiMyAxMDA2NDQKLS0tIGEvRG9jL2Rpc3RyaWJ1dGluZy9pbmRleC5yc3QKKysrIGIvRG9jL2Rpc3RyaWJ1dGluZy9pbmRleC5yc3QKQEAgLTMxLDcgKzMxLDcgQEAKIEtleSB0ZXJtcwogPT09PT09PT09CiAKLSogdGhlIGBQeXRob24gUGFja2FnaW5nIEluZGV4IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPmBfXyBpcyBhIHB1YmxpYworKiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgSW5kZXggPGh0dHBzOi8vcHlwaS5vcmc+YF9fIGlzIGEgcHVibGljCiAgIHJlcG9zaXRvcnkgb2Ygb3BlbiBzb3VyY2UgbGljZW5zZWQgcGFja2FnZXMgbWFkZSBhdmFpbGFibGUgZm9yIHVzZSBieQogICBvdGhlciBQeXRob24gdXNlcnMKICogdGhlIGBQeXRob24gUGFja2FnaW5nIEF1dGhvcml0eQpkaWZmIC0tZ2l0IGEvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0IGIvRG9jL2Rpc3R1dGlscy9hcGlyZWYucnN0CmluZGV4IDE4ODQ0ZGQuLjM0YTNjYjMgMTAwNjQ0Ci0tLSBhL0RvYy9kaXN0dXRpbHMvYXBpcmVmLnJzdAorKysgYi9Eb2MvZGlzdHV0aWxzL2FwaXJlZi5yc3QKQEAgLTc4LDcgKzc4LDcgQEAKICAgIHwgICAgICAgICAgICAgICAgICAgIHwgYmUgYnVpbHQgICAgICAgICAgICAgICAgICAgICAgIHwgOmNsYXNzOmBkaXN0dXRpbHMuY29yZS5FeHRlbnNpb25gICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8ICpjbGFzc2lmaWVycyogICAgICB8IEEgbGlzdCBvZiBjYXRlZ29yaWVzIGZvciB0aGUgICB8IGEgbGlzdCBvZiBzdHJpbmdzOyB2YWxpZCBjbGFzc2lmaWVycyBhcmUgbGlzdGVkIG9uIGBQeVBJICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgIHwgcGFja2FnZSAgICAgICAgICAgICAgICAgICAgICAgIHwgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk/OmFjdGlvbj1saXN0X2NsYXNzaWZpZXJzPmBfLiAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgfCBwYWNrYWdlICAgICAgICAgICAgICAgICAgICAgICAgfCA8aHR0cHM6Ly9weXBpLm9yZy9jbGFzc2lmaWVycz5gXy4gICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgKmRpc3RjbGFzcyogICAgICAgIHwgdGhlIDpjbGFzczpgRGlzdHJpYnV0aW9uYCAgICAgIHwgYSBzdWJjbGFzcyBvZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgfCAgICAgICAgICAgICAgICAgICAgfCBjbGFzcyB0byB1c2UgICAgICAgICAgICAgICAgICAgfCA6Y2xhc3M6YGRpc3R1dGlscy5jb3JlLkRpc3RyaWJ1dGlvbmAgICAgICAgICAgICAgICAgICAgICAgICB8CmRpZmYgLS1naXQgYS9Eb2MvZGlzdHV0aWxzL2J1aWx0ZGlzdC5yc3QgYi9Eb2MvZGlzdHV0aWxzL2J1aWx0ZGlzdC5yc3QKaW5kZXggMTVhYjNiMy4uYWNkNDk5YSAxMDA2NDQKLS0tIGEvRG9jL2Rpc3R1dGlscy9idWlsdGRpc3QucnN0CisrKyBiL0RvYy9kaXN0dXRpbHMvYnVpbHRkaXN0LnJzdApAQCAtMjEsNyArMjEsNyBAQAogaW50ZXJtZWRpYXJ5IHNwZWNpZXMgY2FsbGVkICpwYWNrYWdlcnMqIHNwcmluZ3MgdXAgdG8gdHVybiBzb3VyY2UgZGlzdHJpYnV0aW9ucwogaW50byBidWlsdCBkaXN0cmlidXRpb25zIGZvciBhcyBtYW55IHBsYXRmb3JtcyBhcyB0aGVyZSBhcmUgcGFja2FnZXJzLgogCi1PZiBjb3Vyc2UsIHRoZSBtb2R1bGUgZGV2ZWxvcGVyIGNvdWxkIGJlIGhpcyBvd24gcGFja2FnZXI7IG9yIHRoZSBwYWNrYWdlciBjb3VsZAorT2YgY291cnNlLCB0aGUgbW9kdWxlIGRldmVsb3BlciBjb3VsZCBiZSB0aGVpciBvd24gcGFja2FnZXI7IG9yIHRoZSBwYWNrYWdlciBjb3VsZAogYmUgYSB2b2x1bnRlZXIgIm91dCB0aGVyZSIgc29tZXdoZXJlIHdobyBoYXMgYWNjZXNzIHRvIGEgcGxhdGZvcm0gd2hpY2ggdGhlCiBvcmlnaW5hbCBkZXZlbG9wZXIgZG9lcyBub3Q7IG9yIGl0IGNvdWxkIGJlIHNvZnR3YXJlIHBlcmlvZGljYWxseSBncmFiYmluZyBuZXcKIHNvdXJjZSBkaXN0cmlidXRpb25zIGFuZCB0dXJuaW5nIHRoZW0gaW50byBidWlsdCBkaXN0cmlidXRpb25zIGZvciBhcyBtYW55CmRpZmYgLS1naXQgYS9Eb2MvZGlzdHV0aWxzL2ludHJvZHVjdGlvbi5yc3QgYi9Eb2MvZGlzdHV0aWxzL2ludHJvZHVjdGlvbi5yc3QKaW5kZXggZmM2MTg0Zi4uNDg4NjE5ZSAxMDA2NDQKLS0tIGEvRG9jL2Rpc3R1dGlscy9pbnRyb2R1Y3Rpb24ucnN0CisrKyBiL0RvYy9kaXN0dXRpbHMvaW50cm9kdWN0aW9uLnJzdApAQCAtOTQsNyArOTQsNyBAQAogVGhlIGFyY2hpdmUgZmlsZSB3aWxsIGJlIG5hbWVkIDpmaWxlOmBmb28tMS4wLnRhci5nemAgKG9yIDpmaWxlOmAuemlwYCksIGFuZAogd2lsbCB1bnBhY2sgaW50byBhIGRpcmVjdG9yeSA6ZmlsZTpgZm9vLTEuMGAuCiAKLUlmIGFuIGVuZC11c2VyIHdpc2hlcyB0byBpbnN0YWxsIHlvdXIgOm1vZDpgZm9vYCBtb2R1bGUsIGFsbCBzaGUgaGFzIHRvIGRvIGlzCitJZiBhbiBlbmQtdXNlciB3aXNoZXMgdG8gaW5zdGFsbCB5b3VyIDptb2Q6YGZvb2AgbW9kdWxlLCBhbGwgdGhleSBoYXZlIHRvIGRvIGlzCiBkb3dubG9hZCA6ZmlsZTpgZm9vLTEuMC50YXIuZ3pgIChvciA6ZmlsZTpgLnppcGApLCB1bnBhY2sgaXQsIGFuZC0tLWZyb20gdGhlCiA6ZmlsZTpgZm9vLTEuMGAgZGlyZWN0b3J5LS0tcnVuIDo6CiAKQEAgLTE5Myw4ICsxOTMsOCBAQAogbW9kdWxlIGRpc3RyaWJ1dGlvbgogICAgYSBjb2xsZWN0aW9uIG9mIFB5dGhvbiBtb2R1bGVzIGRpc3RyaWJ1dGVkIHRvZ2V0aGVyIGFzIGEgc2luZ2xlIGRvd25sb2FkYWJsZQogICAgcmVzb3VyY2UgYW5kIG1lYW50IHRvIGJlIGluc3RhbGxlZCAqZW4gbWFzc2UqLiAgRXhhbXBsZXMgb2Ygc29tZSB3ZWxsLWtub3duCi0gICBtb2R1bGUgZGlzdHJpYnV0aW9ucyBhcmUgTnVtZXJpYyBQeXRob24sIFB5WE1MLCBQSUwgKHRoZSBQeXRob24gSW1hZ2luZwotICAgTGlicmFyeSksIG9yIG14QmFzZS4gIChUaGlzIHdvdWxkIGJlIGNhbGxlZCBhICpwYWNrYWdlKiwgZXhjZXB0IHRoYXQgdGVybSBpcworICAgbW9kdWxlIGRpc3RyaWJ1dGlvbnMgYXJlIE51bWVyaWMgUHl0aG9uLCBQeVhNTCwgUGlsbG93LAorICAgb3IgbXhCYXNlLiAgKFRoaXMgd291bGQgYmUgY2FsbGVkIGEgKnBhY2thZ2UqLCBleGNlcHQgdGhhdCB0ZXJtIGlzCiAgICBhbHJlYWR5IHRha2VuIGluIHRoZSBQeXRob24gY29udGV4dDogYSBzaW5nbGUgbW9kdWxlIGRpc3RyaWJ1dGlvbiBtYXkgY29udGFpbgogICAgemVybywgb25lLCBvciBtYW55IFB5dGhvbiBwYWNrYWdlcy4pCiAKZGlmZiAtLWdpdCBhL0RvYy9kaXN0dXRpbHMvcGFja2FnZWluZGV4LnJzdCBiL0RvYy9kaXN0dXRpbHMvcGFja2FnZWluZGV4LnJzdAppbmRleCA4MDg3NTg0Li5jZDExZjIwIDEwMDY0NAotLS0gYS9Eb2MvZGlzdHV0aWxzL3BhY2thZ2VpbmRleC5yc3QKKysrIGIvRG9jL2Rpc3R1dGlscy9wYWNrYWdlaW5kZXgucnN0CkBAIC0yNDgsNCArMjQ4LDQgQEAKIHN1Y2Nlc3NmdWxseS4KIAogCi0uLiBfUHl0aG9uIFBhY2thZ2UgSW5kZXggKFB5UEkpOiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpCisuLiBfUHl0aG9uIFBhY2thZ2UgSW5kZXggKFB5UEkpOiBodHRwczovL3B5cGkub3JnCmRpZmYgLS1naXQgYS9Eb2MvZGlzdHV0aWxzL3NldHVwc2NyaXB0LnJzdCBiL0RvYy9kaXN0dXRpbHMvc2V0dXBzY3JpcHQucnN0CmluZGV4IDZiODJjNDAuLjkyYWI1NzMgMTAwNjQ0Ci0tLSBhL0RvYy9kaXN0dXRpbHMvc2V0dXBzY3JpcHQucnN0CisrKyBiL0RvYy9kaXN0dXRpbHMvc2V0dXBzY3JpcHQucnN0CkBAIC02MDYsNyArNjA2LDcgQEAKICg0KQogICAgIFRoZXNlIGZpZWxkcyBzaG91bGQgbm90IGJlIHVzZWQgaWYgeW91ciBwYWNrYWdlIGlzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBQeXRob24KICAgICB2ZXJzaW9ucyBwcmlvciB0byAyLjIuMyBvciAyLjMuICBUaGUgbGlzdCBpcyBhdmFpbGFibGUgZnJvbSB0aGUgYFB5UEkgd2Vic2l0ZQotICAgIDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPmBfLgorICAgIDxodHRwczovL3B5cGkub3JnPmBfLgogCiAoNSkKICAgICBUaGUgYGBsb25nX2Rlc2NyaXB0aW9uYGAgZmllbGQgaXMgdXNlZCBieSBQeVBJIHdoZW4geW91IGFyZQpkaWZmIC0tZ2l0IGEvRG9jL2RvY3V0aWxzLmNvbmYgYi9Eb2MvZG9jdXRpbHMuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGE0ZjVkCi0tLSAvZGV2L251bGwKKysrIGIvRG9jL2RvY3V0aWxzLmNvbmYKQEAgLTAsMCArMSwyIEBACitbcmVzdHJ1Y3R1cmVkdGV4dCBwYXJzZXJdCitzbWFydHF1b3Rlcy1sb2NhbGVzOiBqYTogIiInJwpkaWZmIC0tZ2l0IGEvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0IGIvRG9jL2V4dGVuZGluZy9leHRlbmRpbmcucnN0CmluZGV4IDMyZDMwOTcuLjk5MTI4OWMgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvZXh0ZW5kaW5nLnJzdAorKysgYi9Eb2MvZXh0ZW5kaW5nL2V4dGVuZGluZy5yc3QKQEAgLTQwLDcgKzQwLDcgQEAKIAogTGV0J3MgY3JlYXRlIGFuIGV4dGVuc2lvbiBtb2R1bGUgY2FsbGVkIGBgc3BhbWBgICh0aGUgZmF2b3JpdGUgZm9vZCBvZiBNb250eQogUHl0aG9uIGZhbnMuLi4pIGFuZCBsZXQncyBzYXkgd2Ugd2FudCB0byBjcmVhdGUgYSBQeXRob24gaW50ZXJmYWNlIHRvIHRoZSBDCi1saWJyYXJ5IGZ1bmN0aW9uIDpjOmZ1bmM6YHN5c3RlbWAuIFsjXV8gVGhpcyBmdW5jdGlvbiB0YWtlcyBhIG51bGwtdGVybWluYXRlZAorbGlicmFyeSBmdW5jdGlvbiA6YzpmdW5jOmBzeXN0ZW1gIFsjXV8uIFRoaXMgZnVuY3Rpb24gdGFrZXMgYSBudWxsLXRlcm1pbmF0ZWQKIGNoYXJhY3RlciBzdHJpbmcgYXMgYXJndW1lbnQgYW5kIHJldHVybnMgYW4gaW50ZWdlci4gIFdlIHdhbnQgdGhpcyBmdW5jdGlvbiB0bwogYmUgY2FsbGFibGUgZnJvbSBQeXRob24gYXMgZm9sbG93czo6CiAKQEAgLTg5MCw3ICs4OTAsNyBAQAogYm9ycm93ZXIgb2YgYSByZWZlcmVuY2Ugc2hvdWxkIG5vdCBjYWxsIDpjOmZ1bmM6YFB5X0RFQ1JFRmAuICBUaGUgYm9ycm93ZXIgbXVzdAogbm90IGhvbGQgb24gdG8gdGhlIG9iamVjdCBsb25nZXIgdGhhbiB0aGUgb3duZXIgZnJvbSB3aGljaCBpdCB3YXMgYm9ycm93ZWQuCiBVc2luZyBhIGJvcnJvd2VkIHJlZmVyZW5jZSBhZnRlciB0aGUgb3duZXIgaGFzIGRpc3Bvc2VkIG9mIGl0IHJpc2tzIHVzaW5nIGZyZWVkCi1tZW1vcnkgYW5kIHNob3VsZCBiZSBhdm9pZGVkIGNvbXBsZXRlbHkuIFsjXV8KK21lbW9yeSBhbmQgc2hvdWxkIGJlIGF2b2lkZWQgY29tcGxldGVseSBbI11fLgogCiBUaGUgYWR2YW50YWdlIG9mIGJvcnJvd2luZyBvdmVyIG93bmluZyBhIHJlZmVyZW5jZSBpcyB0aGF0IHlvdSBkb24ndCBuZWVkIHRvCiB0YWtlIGNhcmUgb2YgZGlzcG9zaW5nIG9mIHRoZSByZWZlcmVuY2Ugb24gYWxsIHBvc3NpYmxlIHBhdGhzIHRocm91Z2ggdGhlIGNvZGUKQEAgLTEwNjEsNyArMTA2MSw3IEBACiAKIFRoZSBDIGZ1bmN0aW9uIGNhbGxpbmcgbWVjaGFuaXNtIGd1YXJhbnRlZXMgdGhhdCB0aGUgYXJndW1lbnQgbGlzdCBwYXNzZWQgdG8gQwogZnVuY3Rpb25zIChgYGFyZ3NgYCBpbiB0aGUgZXhhbXBsZXMpIGlzIG5ldmVyICpOVUxMKiAtLS0gaW4gZmFjdCBpdCBndWFyYW50ZWVzCi10aGF0IGl0IGlzIGFsd2F5cyBhIHR1cGxlLiBbI11fCit0aGF0IGl0IGlzIGFsd2F5cyBhIHR1cGxlIFsjXV8uCiAKIEl0IGlzIGEgc2V2ZXJlIGVycm9yIHRvIGV2ZXIgbGV0IGEgKk5VTEwqIHBvaW50ZXIgImVzY2FwZSIgdG8gdGhlIFB5dGhvbiB1c2VyLgogCmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL25ld3R5cGVzLnJzdCBiL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CmluZGV4IDZlMjc1ZTUuLmE2MGMwMjQgMTAwNjQ0Ci0tLSBhL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvbmV3dHlwZXMucnN0CkBAIC03OSwyNyArNzksMjYgQEAKIE1vdmluZyBvbiwgd2UgY29tZSB0byB0aGUgY3J1bmNoIC0tLSB0aGUgdHlwZSBvYmplY3QuIDo6CiAKICAgIHN0YXRpYyBQeVR5cGVPYmplY3Qgbm9kZHlfTm9kZHlUeXBlID0gewotICAgICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQotICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qb2Jfc2l6ZSovCi0gICAgICAgIm5vZGR5Lk5vZGR5IiwgICAgICAgICAgICAgLyp0cF9uYW1lKi8KLSAgICAgICBzaXplb2Yobm9kZHlfTm9kZHlPYmplY3QpLCAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZWFsbG9jKi8KLSAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlKi8KLSAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAvKnRwX2ZsYWdzKi8KKyAgICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAgICAibm9kZHkuTm9kZHkiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgICAgc2l6ZW9mKG5vZGR5X05vZGR5T2JqZWN0KSwgLyogdHBfYmFzaWNzaXplICovCisgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICAgICAiTm9kZHkgb2JqZWN0cyIsICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgIH07CiAKQEAgLTExMSwyMyArMTEwLDE2IEBACiBUaGlzIGlzIHNvIGltcG9ydGFudCB0aGF0IHdlJ3JlIGdvaW5nIHRvIHBpY2sgdGhlIHRvcCBvZiBpdCBhcGFydCBzdGlsbAogZnVydGhlcjo6CiAKLSAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQorICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAKIFRoaXMgbGluZSBpcyBhIGJpdCBvZiBhIHdhcnQ7IHdoYXQgd2UnZCBsaWtlIHRvIHdyaXRlIGlzOjoKIAotICAgUHlPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSkKKyAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAKIGFzIHRoZSB0eXBlIG9mIGEgdHlwZSBvYmplY3QgaXMgInR5cGUiLCBidXQgdGhpcyBpc24ndCBzdHJpY3RseSBjb25mb3JtaW5nIEMgYW5kCiBzb21lIGNvbXBpbGVycyBjb21wbGFpbi4gIEZvcnR1bmF0ZWx5LCB0aGlzIG1lbWJlciB3aWxsIGJlIGZpbGxlZCBpbiBmb3IgdXMgYnkKIDpjOmZ1bmM6YFB5VHlwZV9SZWFkeWAuIDo6CiAKLSAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvYl9zaXplICovCi0KLVRoZSA6YXR0cjpgb2Jfc2l6ZWAgZmllbGQgb2YgdGhlIGhlYWRlciBpcyBub3QgdXNlZDsgaXRzIHByZXNlbmNlIGluIHRoZSB0eXBlCi1zdHJ1Y3R1cmUgaXMgYSBoaXN0b3JpY2FsIGFydGlmYWN0IHRoYXQgaXMgbWFpbnRhaW5lZCBmb3IgYmluYXJ5IGNvbXBhdGliaWxpdHkKLXdpdGggZXh0ZW5zaW9uIG1vZHVsZXMgY29tcGlsZWQgZm9yIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbi4gIEFsd2F5cyBzZXQgdGhpcwotZmllbGQgdG8gemVyby4gOjoKLQogICAgIm5vZGR5Lk5vZGR5IiwgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KIAogVGhlIG5hbWUgb2Ygb3VyIHR5cGUuICBUaGlzIHdpbGwgYXBwZWFyIGluIHRoZSBkZWZhdWx0IHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YKQEAgLTEzNSw3ICsxMjcsNyBAQAogCiAgICA+Pj4gIiIgKyBub2RkeS5uZXdfbm9kZHkoKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICBUeXBlRXJyb3I6IGNhbm5vdCBhZGQgdHlwZSAibm9kZHkuTm9kZHkiIHRvIHN0cmluZwogCiBOb3RlIHRoYXQgdGhlIG5hbWUgaXMgYSBkb3R0ZWQgbmFtZSB0aGF0IGluY2x1ZGVzIGJvdGggdGhlIG1vZHVsZSBuYW1lIGFuZCB0aGUKQEAgLTE3MSw3ICsxNjMsNyBAQAogU2tpcHBpbmcgYSBudW1iZXIgb2YgdHlwZSBtZXRob2RzIHRoYXQgd2UgZG9uJ3QgcHJvdmlkZSwgd2Ugc2V0IHRoZSBjbGFzcyBmbGFncwogdG8gOmNvbnN0OmBQeV9UUEZMQUdTX0RFRkFVTFRgLiA6OgogCi0gICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAvKnRwX2ZsYWdzKi8KKyAgIFB5X1RQRkxBR1NfREVGQVVMVCwgICAgICAgIC8qIHRwX2ZsYWdzICovCiAKIEFsbCB0eXBlcyBzaG91bGQgaW5jbHVkZSB0aGlzIGNvbnN0YW50IGluIHRoZWlyIGZsYWdzLiAgSXQgZW5hYmxlcyBhbGwgb2YgdGhlCiBtZW1iZXJzIGRlZmluZWQgYnkgdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBQeXRob24uCkBAIC0yNDQsNyArMjM2LDcgQEAKIEFkZGluZyBkYXRhIGFuZCBtZXRob2RzIHRvIHRoZSBCYXNpYyBleGFtcGxlCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1MZXQncyBleHBlbmQgdGhlIGJhc2ljIGV4YW1wbGUgdG8gYWRkIHNvbWUgZGF0YSBhbmQgbWV0aG9kcy4gIExldCdzIGFsc28gbWFrZQorTGV0J3MgZXh0ZW5kIHRoZSBiYXNpYyBleGFtcGxlIHRvIGFkZCBzb21lIGRhdGEgYW5kIG1ldGhvZHMuICBMZXQncyBhbHNvIG1ha2UKIHRoZSB0eXBlIHVzYWJsZSBhcyBhIGJhc2UgY2xhc3MuIFdlJ2xsIGNyZWF0ZSBhIG5ldyBtb2R1bGUsIDptb2Q6YG5vZGR5MmAgdGhhdAogYWRkcyB0aGVzZSBjYXBhYmlsaXRpZXM6CiAKQEAgLTI4NCw3ICsyNzYsNyBAQAogICAgewogICAgICAgIFB5X1hERUNSRUYoc2VsZi0+Zmlyc3QpOwogICAgICAgIFB5X1hERUNSRUYoc2VsZi0+bGFzdCk7Ci0gICAgICAgc2VsZi0+b2JfdHlwZS0+dHBfZnJlZSgoUHlPYmplY3QqKXNlbGYpOworICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0KilzZWxmKTsKICAgIH0KIAogd2hpY2ggaXMgYXNzaWduZWQgdG8gdGhlIDpjOm1lbWJlcjpgflB5VHlwZU9iamVjdC50cF9kZWFsbG9jYCBtZW1iZXI6OgpAQCAtNDk3LDcgKzQ4OSw3IEBACiBUaGUgbWV0aG9kIGlzIGltcGxlbWVudGVkIGFzIGEgQyBmdW5jdGlvbiB0aGF0IHRha2VzIGEgOmNsYXNzOmBOb2RkeWAgKG9yCiA6Y2xhc3M6YE5vZGR5YCBzdWJjbGFzcykgaW5zdGFuY2UgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiAgTWV0aG9kcyBhbHdheXMgdGFrZSBhbgogaW5zdGFuY2UgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LiBNZXRob2RzIG9mdGVuIHRha2UgcG9zaXRpb25hbCBhbmQga2V5d29yZAotYXJndW1lbnRzIGFzIHdlbGwsIGJ1dCBpbiB0aGlzIGNhc2VkIHdlIGRvbid0IHRha2UgYW55IGFuZCBkb24ndCBuZWVkIHRvIGFjY2VwdAorYXJndW1lbnRzIGFzIHdlbGwsIGJ1dCBpbiB0aGlzIGNhc2Ugd2UgZG9uJ3QgdGFrZSBhbnkgYW5kIGRvbid0IG5lZWQgdG8gYWNjZXB0CiBhIHBvc2l0aW9uYWwgYXJndW1lbnQgdHVwbGUgb3Iga2V5d29yZCBhcmd1bWVudCBkaWN0aW9uYXJ5LiBUaGlzIG1ldGhvZCBpcwogZXF1aXZhbGVudCB0byB0aGUgUHl0aG9uIG1ldGhvZDo6CiAKQEAgLTY5Myw3ICs2ODUsNyBAQAogdGhlIGxpc3QgaXMgZ2FyYmFnZSBhbmQgZnJlZSBpdC4KIAogSW4gdGhlIHNlY29uZCB2ZXJzaW9uIG9mIHRoZSA6Y2xhc3M6YE5vZGR5YCBleGFtcGxlLCB3ZSBhbGxvd2VkIGFueSBraW5kIG9mCi1vYmplY3QgdG8gYmUgc3RvcmVkIGluIHRoZSA6YXR0cjpgZmlyc3RgIG9yIDphdHRyOmBsYXN0YCBhdHRyaWJ1dGVzLiBbI11fIFRoaXMKK29iamVjdCB0byBiZSBzdG9yZWQgaW4gdGhlIDphdHRyOmBmaXJzdGAgb3IgOmF0dHI6YGxhc3RgIGF0dHJpYnV0ZXMgWyNdXy4gVGhpcwogbWVhbnMgdGhhdCA6Y2xhc3M6YE5vZGR5YCBvYmplY3RzIGNhbiBwYXJ0aWNpcGF0ZSBpbiBjeWNsZXM6OgogCiAgICA+Pj4gaW1wb3J0IG5vZGR5MgpAQCAtNzU2LDggKzc0OCw5IEBACiAgICB1bmlmb3JtaXR5IGFjcm9zcyB0aGVzZSBib3JpbmcgaW1wbGVtZW50YXRpb25zLgogCiBXZSBhbHNvIG5lZWQgdG8gcHJvdmlkZSBhIG1ldGhvZCBmb3IgY2xlYXJpbmcgYW55IHN1Ym9iamVjdHMgdGhhdCBjYW4KLXBhcnRpY2lwYXRlIGluIGN5Y2xlcy4gIFdlIGltcGxlbWVudCB0aGUgbWV0aG9kIGFuZCByZWltcGxlbWVudCB0aGUgZGVhbGxvY2F0b3IKLXRvIHVzZSBpdDo6CitwYXJ0aWNpcGF0ZSBpbiBjeWNsZXMuCisKKzo6CiAKICAgIHN0YXRpYyBpbnQKICAgIE5vZGR5X2NsZWFyKE5vZGR5ICpzZWxmKQpAQCAtNzc1LDEzICs3NjgsNiBAQAogICAgICAgIHJldHVybiAwOwogICAgfQogCi0gICBzdGF0aWMgdm9pZAotICAgTm9kZHlfZGVhbGxvYyhOb2RkeSogc2VsZikKLSAgIHsKLSAgICAgICBOb2RkeV9jbGVhcihzZWxmKTsKLSAgICAgICBzZWxmLT5vYl90eXBlLT50cF9mcmVlKChQeU9iamVjdCopc2VsZik7Ci0gICB9Ci0KIE5vdGljZSB0aGUgdXNlIG9mIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIGluIDpjOmZ1bmM6YE5vZGR5X2NsZWFyYC4gV2UgdXNlIHRoZQogdGVtcG9yYXJ5IHZhcmlhYmxlIHNvIHRoYXQgd2UgY2FuIHNldCBlYWNoIG1lbWJlciB0byAqTlVMTCogYmVmb3JlIGRlY3JlbWVudGluZwogaXRzIHJlZmVyZW5jZSBjb3VudC4gIFdlIGRvIHRoaXMgYmVjYXVzZSwgYXMgd2FzIGRpc2N1c3NlZCBlYXJsaWVyLCBpZiB0aGUKQEAgLTgwNCw5ICs3OTAsMjYgQEAKICAgICAgICByZXR1cm4gMDsKICAgIH0KIAorTm90ZSB0aGF0IDpjOmZ1bmM6YE5vZGR5X2RlYWxsb2NgIG1heSBjYWxsIGFyYml0cmFyeSBmdW5jdGlvbnMgdGhyb3VnaAorYGBfX2RlbF9fYGAgbWV0aG9kIG9yIHdlYWtyZWYgY2FsbGJhY2suIEl0IG1lYW5zIGNpcmN1bGFyIEdDIGNhbiBiZQordHJpZ2dlcmVkIGluc2lkZSB0aGUgZnVuY3Rpb24uICBTaW5jZSBHQyBhc3N1bWVzIHJlZmVyZW5jZSBjb3VudCBpcyBub3QgemVybywKK3dlIG5lZWQgdG8gdW50cmFjayB0aGUgb2JqZWN0IGZyb20gR0MgYnkgY2FsbGluZyA6YzpmdW5jOmBQeU9iamVjdF9HQ19VblRyYWNrYAorYmVmb3JlIGNsZWFyaW5nIG1lbWJlcnMuIEhlcmUgaXMgcmVpbXBsZW1lbnRlZCBkZWFsbG9jYXRvciB3aGljaCB1c2VzCis6YzpmdW5jOmBQeU9iamVjdF9HQ19VblRyYWNrYCBhbmQgOmM6ZnVuYzpgTm9kZHlfY2xlYXJgLgorCis6OgorCisgICBzdGF0aWMgdm9pZAorICAgTm9kZHlfZGVhbGxvYyhOb2RkeSogc2VsZikKKyAgIHsKKyAgICAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOworICAgICAgIE5vZGR5X2NsZWFyKHNlbGYpOworICAgICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0KilzZWxmKTsKKyAgIH0KKwogRmluYWxseSwgd2UgYWRkIHRoZSA6Y29uc3Q6YFB5X1RQRkxBR1NfSEFWRV9HQ2AgZmxhZyB0byB0aGUgY2xhc3MgZmxhZ3M6OgogCi0gICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKnRwX2ZsYWdzKi8KKyAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUgfCBQeV9UUEZMQUdTX0hBVkVfR0MsIC8qIHRwX2ZsYWdzICovCiAKIFRoYXQncyBwcmV0dHkgbXVjaCBpdC4gIElmIHdlIGhhZCB3cml0dGVuIGN1c3RvbSA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfYWxsb2NgIG9yCiA6YzptZW1iZXI6YH5QeVR5cGVPYmplY3QudHBfZnJlZWAgc2xvdHMsIHdlJ2QgbmVlZCB0byBtb2RpZnkgdGhlbSBmb3IgY3ljbGljLWdhcmJhZ2UgY29sbGVjdGlvbi4KQEAgLTk2NSwxNCArOTY4LDE1IEBACiAKIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gdGhlIHJlZmVyZW5jZSBjb3VudCBvZiB0aGUgaW5zdGFuY2Ugb2YgeW91ciB0eXBlIGlzCiByZWR1Y2VkIHRvIHplcm8gYW5kIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgd2FudHMgdG8gcmVjbGFpbSBpdC4gIElmIHlvdXIgdHlwZQotaGFzIG1lbW9yeSB0byBmcmVlIG9yIG90aGVyIGNsZWFuLXVwIHRvIHBlcmZvcm0sIHB1dCBpdCBoZXJlLiAgVGhlIG9iamVjdCBpdHNlbGYKLW5lZWRzIHRvIGJlIGZyZWVkIGhlcmUgYXMgd2VsbC4gIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB0aGlzIGZ1bmN0aW9uOjoKK2hhcyBtZW1vcnkgdG8gZnJlZSBvciBvdGhlciBjbGVhbi11cCB0byBwZXJmb3JtLCB5b3UgY2FuIHB1dCBpdCBoZXJlLiAgVGhlCitvYmplY3QgaXRzZWxmIG5lZWRzIHRvIGJlIGZyZWVkIGhlcmUgYXMgd2VsbC4gIEhlcmUgaXMgYW4gZXhhbXBsZSBvZiB0aGlzCitmdW5jdGlvbjo6CiAKICAgIHN0YXRpYyB2b2lkCiAgICBuZXdkYXRhdHlwZV9kZWFsbG9jKG5ld2RhdGF0eXBlb2JqZWN0ICogb2JqKQogICAgewogICAgICAgIGZyZWUob2JqLT5vYmpfVW5kZXJseWluZ0RhdGF0eXBlUHRyKTsKLSAgICAgICBvYmotPm9iX3R5cGUtPnRwX2ZyZWUob2JqKTsKKyAgICAgICBQeV9UWVBFKG9iaiktPnRwX2ZyZWUob2JqKTsKICAgIH0KIAogLi4gaW5kZXg6OgpAQCAtMTAxNSw3ICsxMDE5LDcgQEAKIAogICAgICAgICAgICBQeV9ERUNSRUYoc2VsZi0+bXlfY2FsbGJhY2spOwogICAgICAgIH0KLSAgICAgICBvYmotPm9iX3R5cGUtPnRwX2ZyZWUoKFB5T2JqZWN0KilzZWxmKTsKKyAgICAgICBQeV9UWVBFKG9iaiktPnRwX2ZyZWUoKFB5T2JqZWN0KilzZWxmKTsKICAgIH0KIAogCmRpZmYgLS1naXQgYS9Eb2MvZmFxL2Rlc2lnbi5yc3QgYi9Eb2MvZmFxL2Rlc2lnbi5yc3QKaW5kZXggMGE4Y2ZkZC4uODU4OGRhYSAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9kZXNpZ24ucnN0CisrKyBiL0RvYy9mYXEvZGVzaWduLnJzdApAQCAtMiw2ICsyLDExIEBACiBEZXNpZ24gYW5kIEhpc3RvcnkgRkFRCiA9PT09PT09PT09PT09PT09PT09PT09CiAKKy4uIG9ubHk6OiBodG1sCisKKyAgIC4uIGNvbnRlbnRzOjoKKworCiBXaHkgZG9lcyBQeXRob24gdXNlIGluZGVudGF0aW9uIGZvciBncm91cGluZyBvZiBzdGF0ZW1lbnRzPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjIxLDI0ICsyMjYsMjUgQEAKIFdoeSBkb2VzIFB5dGhvbiB1c2UgbWV0aG9kcyBmb3Igc29tZSBmdW5jdGlvbmFsaXR5IChlLmcuIGxpc3QuaW5kZXgoKSkgYnV0IGZ1bmN0aW9ucyBmb3Igb3RoZXIgKGUuZy4gbGVuKGxpc3QpKT8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotVGhlIG1ham9yIHJlYXNvbiBpcyBoaXN0b3J5LiBGdW5jdGlvbnMgd2VyZSB1c2VkIGZvciB0aG9zZSBvcGVyYXRpb25zIHRoYXQgd2VyZQotZ2VuZXJpYyBmb3IgYSBncm91cCBvZiB0eXBlcyBhbmQgd2hpY2ggd2VyZSBpbnRlbmRlZCB0byB3b3JrIGV2ZW4gZm9yIG9iamVjdHMKLXRoYXQgZGlkbid0IGhhdmUgbWV0aG9kcyBhdCBhbGwgKGUuZy4gdHVwbGVzKS4gIEl0IGlzIGFsc28gY29udmVuaWVudCB0byBoYXZlIGEKLWZ1bmN0aW9uIHRoYXQgY2FuIHJlYWRpbHkgYmUgYXBwbGllZCB0byBhbiBhbW9ycGhvdXMgY29sbGVjdGlvbiBvZiBvYmplY3RzIHdoZW4KLXlvdSB1c2UgdGhlIGZ1bmN0aW9uYWwgZmVhdHVyZXMgb2YgUHl0aG9uIChgYG1hcCgpYGAsIGBgemlwKClgYCBldCBhbCkuCitBcyBHdWlkbyBzYWlkOgogCi1JbiBmYWN0LCBpbXBsZW1lbnRpbmcgYGBsZW4oKWBgLCBgYG1heCgpYGAsIGBgbWluKClgYCBhcyBhIGJ1aWx0LWluIGZ1bmN0aW9uIGlzCi1hY3R1YWxseSBsZXNzIGNvZGUgdGhhbiBpbXBsZW1lbnRpbmcgdGhlbSBhcyBtZXRob2RzIGZvciBlYWNoIHR5cGUuICBPbmUgY2FuCi1xdWliYmxlIGFib3V0IGluZGl2aWR1YWwgY2FzZXMgYnV0IGl0J3MgYSBwYXJ0IG9mIFB5dGhvbiwgYW5kIGl0J3MgdG9vIGxhdGUgdG8KLW1ha2Ugc3VjaCBmdW5kYW1lbnRhbCBjaGFuZ2VzIG5vdy4gVGhlIGZ1bmN0aW9ucyBoYXZlIHRvIHJlbWFpbiB0byBhdm9pZCBtYXNzaXZlCi1jb2RlIGJyZWFrYWdlLgorICAgIChhKSBGb3Igc29tZSBvcGVyYXRpb25zLCBwcmVmaXggbm90YXRpb24ganVzdCByZWFkcyBiZXR0ZXIgdGhhbgorICAgIHBvc3RmaXggLS0gcHJlZml4IChhbmQgaW5maXghKSBvcGVyYXRpb25zIGhhdmUgYSBsb25nIHRyYWRpdGlvbiBpbgorICAgIG1hdGhlbWF0aWNzIHdoaWNoIGxpa2VzIG5vdGF0aW9ucyB3aGVyZSB0aGUgdmlzdWFscyBoZWxwIHRoZQorICAgIG1hdGhlbWF0aWNpYW4gdGhpbmtpbmcgYWJvdXQgYSBwcm9ibGVtLiBDb21wYXJlIHRoZSBlYXN5IHdpdGggd2hpY2ggd2UKKyAgICByZXdyaXRlIGEgZm9ybXVsYSBsaWtlIHgqKGErYikgaW50byB4KmEgKyB4KmIgdG8gdGhlIGNsdW1zaW5lc3Mgb2YKKyAgICBkb2luZyB0aGUgc2FtZSB0aGluZyB1c2luZyBhIHJhdyBPTyBub3RhdGlvbi4KIAotLi4gWFhYIHRhbGsgYWJvdXQgcHJvdG9jb2xzPworICAgIChiKSBXaGVuIEkgcmVhZCBjb2RlIHRoYXQgc2F5cyBsZW4oeCkgSSAqa25vdyogdGhhdCBpdCBpcyBhc2tpbmcgZm9yCisgICAgdGhlIGxlbmd0aCBvZiBzb21ldGhpbmcuIFRoaXMgdGVsbHMgbWUgdHdvIHRoaW5nczogdGhlIHJlc3VsdCBpcyBhbgorICAgIGludGVnZXIsIGFuZCB0aGUgYXJndW1lbnQgaXMgc29tZSBraW5kIG9mIGNvbnRhaW5lci4gVG8gdGhlIGNvbnRyYXJ5LAorICAgIHdoZW4gSSByZWFkIHgubGVuKCksIEkgaGF2ZSB0byBhbHJlYWR5IGtub3cgdGhhdCB4IGlzIHNvbWUga2luZCBvZgorICAgIGNvbnRhaW5lciBpbXBsZW1lbnRpbmcgYW4gaW50ZXJmYWNlIG9yIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHRoYXQKKyAgICBoYXMgYSBzdGFuZGFyZCBsZW4oKS4gV2l0bmVzcyB0aGUgY29uZnVzaW9uIHdlIG9jY2FzaW9uYWxseSBoYXZlIHdoZW4KKyAgICBhIGNsYXNzIHRoYXQgaXMgbm90IGltcGxlbWVudGluZyBhIG1hcHBpbmcgaGFzIGEgZ2V0KCkgb3Iga2V5cygpCisgICAgbWV0aG9kLCBvciBzb21ldGhpbmcgdGhhdCBpc24ndCBhIGZpbGUgaGFzIGEgd3JpdGUoKSBtZXRob2QuCiAKLS4uIG5vdGU6OgotCi0gICBGb3Igc3RyaW5nIG9wZXJhdGlvbnMsIFB5dGhvbiBoYXMgbW92ZWQgZnJvbSBleHRlcm5hbCBmdW5jdGlvbnMgKHRoZQotICAgYGBzdHJpbmdgYCBtb2R1bGUpIHRvIG1ldGhvZHMuICBIb3dldmVyLCBgYGxlbigpYGAgaXMgc3RpbGwgYSBmdW5jdGlvbi4KKyAgICAtLSBodHRwczovL21haWwucHl0aG9uLm9yZy9waXBlcm1haWwvcHl0aG9uLTMwMDAvMjAwNi1Ob3ZlbWJlci8wMDQ2NDMuaHRtbAogCiAKIFdoeSBpcyBqb2luKCkgYSBzdHJpbmcgbWV0aG9kIGluc3RlYWQgb2YgYSBsaXN0IG9yIHR1cGxlIG1ldGhvZD8KQEAgLTM5MSw1MCArMzk3LDExIEBACiBDYW4gUHl0aG9uIGJlIGNvbXBpbGVkIHRvIG1hY2hpbmUgY29kZSwgQyBvciBzb21lIG90aGVyIGxhbmd1YWdlPwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotTm90IGVhc2lseS4gIFB5dGhvbidzIGhpZ2ggbGV2ZWwgZGF0YSB0eXBlcywgZHluYW1pYyB0eXBpbmcgb2Ygb2JqZWN0cyBhbmQKLXJ1bi10aW1lIGludm9jYXRpb24gb2YgdGhlIGludGVycHJldGVyICh1c2luZyA6ZnVuYzpgZXZhbGAgb3IgOmtleXdvcmQ6YGV4ZWNgKQotdG9nZXRoZXIgbWVhbiB0aGF0IGEgImNvbXBpbGVkIiBQeXRob24gcHJvZ3JhbSB3b3VsZCBwcm9iYWJseSBjb25zaXN0IG1vc3RseSBvZgotY2FsbHMgaW50byB0aGUgUHl0aG9uIHJ1bi10aW1lIHN5c3RlbSwgZXZlbiBmb3Igc2VlbWluZ2x5IHNpbXBsZSBvcGVyYXRpb25zIGxpa2UKLWBgeCsxYGAuCi0KLVNldmVyYWwgcHJvamVjdHMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gbmV3c2dyb3VwIG9yIGF0IHBhc3QgYFB5dGhvbgotY29uZmVyZW5jZXMgPGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvY29tbXVuaXR5L3dvcmtzaG9wcy8+YF8gaGF2ZSBzaG93biB0aGF0IHRoaXMKLWFwcHJvYWNoIGlzIGZlYXNpYmxlLCBhbHRob3VnaCB0aGUgc3BlZWR1cHMgcmVhY2hlZCBzbyBmYXIgYXJlIG9ubHkgbW9kZXN0Ci0oZS5nLiAyeCkuICBKeXRob24gdXNlcyB0aGUgc2FtZSBzdHJhdGVneSBmb3IgY29tcGlsaW5nIHRvIEphdmEgYnl0ZWNvZGUuICAoSmltCi1IdWd1bmluIGhhcyBkZW1vbnN0cmF0ZWQgdGhhdCBpbiBjb21iaW5hdGlvbiB3aXRoIHdob2xlLXByb2dyYW0gYW5hbHlzaXMsCi1zcGVlZHVwcyBvZiAxMDAweCBhcmUgZmVhc2libGUgZm9yIHNtYWxsIGRlbW8gcHJvZ3JhbXMuICBTZWUgdGhlIHByb2NlZWRpbmdzCi1mcm9tIHRoZSBgMTk5NyBQeXRob24gY29uZmVyZW5jZQotPGh0dHA6Ly9sZWdhY3kucHl0aG9uLm9yZy93b3Jrc2hvcHMvMTk5Ny0xMC9wcm9jZWVkaW5ncy8+YF8gZm9yIG1vcmUgaW5mb3JtYXRpb24uKQotCi1JbnRlcm5hbGx5LCBQeXRob24gc291cmNlIGNvZGUgaXMgYWx3YXlzIHRyYW5zbGF0ZWQgaW50byBhIGJ5dGVjb2RlCi1yZXByZXNlbnRhdGlvbiwgYW5kIHRoaXMgYnl0ZWNvZGUgaXMgdGhlbiBleGVjdXRlZCBieSB0aGUgUHl0aG9uIHZpcnR1YWwKLW1hY2hpbmUuICBJbiBvcmRlciB0byBhdm9pZCB0aGUgb3ZlcmhlYWQgb2YgcmVwZWF0ZWRseSBwYXJzaW5nIGFuZCB0cmFuc2xhdGluZwotbW9kdWxlcyB0aGF0IHJhcmVseSBjaGFuZ2UsIHRoaXMgYnl0ZSBjb2RlIGlzIHdyaXR0ZW4gaW50byBhIGZpbGUgd2hvc2UgbmFtZQotZW5kcyBpbiAiLnB5YyIgd2hlbmV2ZXIgYSBtb2R1bGUgaXMgcGFyc2VkLiAgV2hlbiB0aGUgY29ycmVzcG9uZGluZyAucHkgZmlsZSBpcwotY2hhbmdlZCwgaXQgaXMgcGFyc2VkIGFuZCB0cmFuc2xhdGVkIGFnYWluIGFuZCB0aGUgLnB5YyBmaWxlIGlzIHJld3JpdHRlbi4KLQotVGhlcmUgaXMgbm8gcGVyZm9ybWFuY2UgZGlmZmVyZW5jZSBvbmNlIHRoZSAucHljIGZpbGUgaGFzIGJlZW4gbG9hZGVkLCBhcyB0aGUKLWJ5dGVjb2RlIHJlYWQgZnJvbSB0aGUgLnB5YyBmaWxlIGlzIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIGJ5dGVjb2RlIGNyZWF0ZWQgYnkKLWRpcmVjdCB0cmFuc2xhdGlvbi4gIFRoZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBsb2FkaW5nIGNvZGUgZnJvbSBhIC5weWMgZmlsZQotaXMgZmFzdGVyIHRoYW4gcGFyc2luZyBhbmQgdHJhbnNsYXRpbmcgYSAucHkgZmlsZSwgc28gdGhlIHByZXNlbmNlIG9mCi1wcmVjb21waWxlZCAucHljIGZpbGVzIGltcHJvdmVzIHRoZSBzdGFydC11cCB0aW1lIG9mIFB5dGhvbiBzY3JpcHRzLiAgSWYKLWRlc2lyZWQsIHRoZSBMaWIvY29tcGlsZWFsbC5weSBtb2R1bGUgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIHZhbGlkIC5weWMgZmlsZXMgZm9yCi1hIGdpdmVuIHNldCBvZiBtb2R1bGVzLgotCi1Ob3RlIHRoYXQgdGhlIG1haW4gc2NyaXB0IGV4ZWN1dGVkIGJ5IFB5dGhvbiwgZXZlbiBpZiBpdHMgZmlsZW5hbWUgZW5kcyBpbiAucHksCi1pcyBub3QgY29tcGlsZWQgdG8gYSAucHljIGZpbGUuICBJdCBpcyBjb21waWxlZCB0byBieXRlY29kZSwgYnV0IHRoZSBieXRlY29kZSBpcwotbm90IHNhdmVkIHRvIGEgZmlsZS4gIFVzdWFsbHkgbWFpbiBzY3JpcHRzIGFyZSBxdWl0ZSBzaG9ydCwgc28gdGhpcyBkb2Vzbid0IGNvc3QKLW11Y2ggc3BlZWQuCi0KLS4uIFhYWCBjaGVjayB3aGljaCBvZiB0aGVzZSBwcm9qZWN0cyBhcmUgc3RpbGwgYWxpdmUKLQotVGhlcmUgYXJlIGFsc28gc2V2ZXJhbCBwcm9ncmFtcyB3aGljaCBtYWtlIGl0IGVhc2llciB0byBpbnRlcm1pbmdsZSBQeXRob24gYW5kIEMKLWNvZGUgaW4gdmFyaW91cyB3YXlzIHRvIGluY3JlYXNlIHBlcmZvcm1hbmNlLiAgU2VlLCBmb3IgZXhhbXBsZSwgYEN5dGhvbiA8aHR0cDovL2N5dGhvbi5vcmcvPmBfICwgYFBzeWNvCi08aHR0cDovL3BzeWNvLnNvdXJjZWZvcmdlLm5ldC8+YF8sIGBQeXJleAotPGh0dHBzOi8vd3d3LmNvc2MuY2FudGVyYnVyeS5hYy5uei9+Z3JlZy9weXRob24vUHlyZXgvPmBfLCBgUHlJbmxpbmUKLTxodHRwOi8vcHlpbmxpbmUuc291cmNlZm9yZ2UubmV0Lz5gXywgYFB5MkNtb2QKLTxodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3B5MmNtb2QvPmBfLCBhbmQKLWBXZWF2ZSA8aHR0cHM6Ly9kb2NzLnNjaXB5Lm9yZy9kb2Mvc2NpcHktZGV2L3JlZmVyZW5jZS90dXRvcmlhbC93ZWF2ZS5odG1sPmBfLgorYEN5dGhvbiA8aHR0cDovL2N5dGhvbi5vcmcvPmBfIGNvbXBpbGVzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiBQeXRob24gd2l0aAorb3B0aW9uYWwgYW5ub3RhdGlvbnMgaW50byBDIGV4dGVuc2lvbnMuICBgTnVpdGthIDxodHRwOi8vd3d3Lm51aXRrYS5uZXQvPmBfIGlzCithbiB1cC1hbmQtY29taW5nIGNvbXBpbGVyIG9mIFB5dGhvbiBpbnRvIEMrKyBjb2RlLCBhaW1pbmcgdG8gc3VwcG9ydCB0aGUgZnVsbAorUHl0aG9uIGxhbmd1YWdlLiBGb3IgY29tcGlsaW5nIHRvIEphdmEgeW91IGNhbiBjb25zaWRlcgorYFZPQyA8aHR0cHM6Ly92b2MucmVhZHRoZWRvY3MuaW8+YF8uCiAKIAogSG93IGRvZXMgUHl0aG9uIG1hbmFnZSBtZW1vcnk/CkBAIC01MzcsMTAgKzUwNCwxMCBAQAogZGljdGlvbmFyeSBrZXlzLCBhbmQgaGVuY2Ugb25seSB0dXBsZXMgYW5kIG5vdCBsaXN0cyBjYW4gYmUgdXNlZCBhcyBrZXlzLgogCiAKLUhvdyBhcmUgbGlzdHMgaW1wbGVtZW50ZWQ/Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSG93IGFyZSBsaXN0cyBpbXBsZW1lbnRlZCBpbiBDUHl0aG9uPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QeXRob24ncyBsaXN0cyBhcmUgcmVhbGx5IHZhcmlhYmxlLWxlbmd0aCBhcnJheXMsIG5vdCBMaXNwLXN0eWxlIGxpbmtlZCBsaXN0cy4KK0NQeXRob24ncyBsaXN0cyBhcmUgcmVhbGx5IHZhcmlhYmxlLWxlbmd0aCBhcnJheXMsIG5vdCBMaXNwLXN0eWxlIGxpbmtlZCBsaXN0cy4KIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIGEgY29udGlndW91cyBhcnJheSBvZiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsIGFuZAoga2VlcHMgYSBwb2ludGVyIHRvIHRoaXMgYXJyYXkgYW5kIHRoZSBhcnJheSdzIGxlbmd0aCBpbiBhIGxpc3QgaGVhZCBzdHJ1Y3R1cmUuCiAKQEAgLTU1MywxMCArNTIwLDEwIEBACiB0aW1lcyBkb24ndCByZXF1aXJlIGFuIGFjdHVhbCByZXNpemUuCiAKIAotSG93IGFyZSBkaWN0aW9uYXJpZXMgaW1wbGVtZW50ZWQ/Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0hvdyBhcmUgZGljdGlvbmFyaWVzIGltcGxlbWVudGVkIGluIENQeXRob24/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1QeXRob24ncyBkaWN0aW9uYXJpZXMgYXJlIGltcGxlbWVudGVkIGFzIHJlc2l6YWJsZSBoYXNoIHRhYmxlcy4gIENvbXBhcmVkIHRvCitDUHl0aG9uJ3MgZGljdGlvbmFyaWVzIGFyZSBpbXBsZW1lbnRlZCBhcyByZXNpemFibGUgaGFzaCB0YWJsZXMuICBDb21wYXJlZCB0bwogQi10cmVlcywgdGhpcyBnaXZlcyBiZXR0ZXIgcGVyZm9ybWFuY2UgZm9yIGxvb2t1cCAodGhlIG1vc3QgY29tbW9uIG9wZXJhdGlvbiBieQogZmFyKSB1bmRlciBtb3N0IGNpcmN1bXN0YW5jZXMsIGFuZCB0aGUgaW1wbGVtZW50YXRpb24gaXMgc2ltcGxlci4KIApkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9leHRlbmRpbmcucnN0IGIvRG9jL2ZhcS9leHRlbmRpbmcucnN0CmluZGV4IGMzODA2NDUuLjRiZTU4ZDYgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvZXh0ZW5kaW5nLnJzdAorKysgYi9Eb2MvZmFxL2V4dGVuZGluZy5yc3QKQEAgLTU2LDcgKzU2LDcgQEAKIDxodHRwczovL3JpdmVyYmFua2NvbXB1dGluZy5jb20vc29mdHdhcmUvc2lwL2ludHJvPmBfXywgYENYWAogPGh0dHA6Ly9jeHguc291cmNlZm9yZ2UubmV0Lz5gXyBgQm9vc3QKIDxodHRwOi8vd3d3LmJvb3N0Lm9yZy9saWJzL3B5dGhvbi9kb2MvaW5kZXguaHRtbD5gXywgb3IgYFdlYXZlCi08aHR0cHM6Ly9zY2lweS5naXRodWIuaW8vZGV2ZG9jcy90dXRvcmlhbC93ZWF2ZS5odG1sPmBfIGFyZSBhbHNvCis8aHR0cHM6Ly9naXRodWIuY29tL3NjaXB5L3dlYXZlPmBfIGFyZSBhbHNvCiBhbHRlcm5hdGl2ZXMgZm9yIHdyYXBwaW5nIEMrKyBsaWJyYXJpZXMuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9nZW5lcmFsLnJzdCBiL0RvYy9mYXEvZ2VuZXJhbC5yc3QKaW5kZXggMmRlMzc4ZC4uZWIxYmQxNiAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9nZW5lcmFsLnJzdAorKysgYi9Eb2MvZmFxL2dlbmVyYWwucnN0CkBAIC0xMTcsNyArMTE3LDcgQEAKIFB5dGhvbiBjb2RlKSwgYW5kIG9wZXJhdGluZyBzeXN0ZW0gaW50ZXJmYWNlcyAoc3lzdGVtIGNhbGxzLCBmaWxlc3lzdGVtcywgVENQL0lQCiBzb2NrZXRzKS4gIExvb2sgYXQgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIGZvciA6cmVmOmBsaWJyYXJ5LWluZGV4YCB0byBnZXQgYW4gaWRlYQogb2Ygd2hhdCdzIGF2YWlsYWJsZS4gIEEgd2lkZSB2YXJpZXR5IG9mIHRoaXJkLXBhcnR5IGV4dGVuc2lvbnMgYXJlIGFsc28KLWF2YWlsYWJsZS4gIENvbnN1bHQgYHRoZSBQeXRob24gUGFja2FnZSBJbmRleCA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT5gXyB0bworYXZhaWxhYmxlLiAgQ29uc3VsdCBgdGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4IDxodHRwczovL3B5cGkub3JnPmBfIHRvCiBmaW5kIHBhY2thZ2VzIG9mIGludGVyZXN0IHRvIHlvdS4KIAogCkBAIC0xNTksNyArMTU5LDcgQEAKIAogVGhlIGxhdGVzdCBQeXRob24gc291cmNlIGRpc3RyaWJ1dGlvbiBpcyBhbHdheXMgYXZhaWxhYmxlIGZyb20gcHl0aG9uLm9yZywgYXQKIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLy4gIFRoZSBsYXRlc3QgZGV2ZWxvcG1lbnQgc291cmNlcyBjYW4gYmUgb2J0YWluZWQKLXZpYSBhbm9ueW1vdXMgTWVyY3VyaWFsIGFjY2VzcyBhdCBodHRwczovL2hnLnB5dGhvbi5vcmcvY3B5dGhvbi4KK2F0IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi8uCiAKIFRoZSBzb3VyY2UgZGlzdHJpYnV0aW9uIGlzIGEgZ3ppcHBlZCB0YXIgZmlsZSBjb250YWluaW5nIHRoZSBjb21wbGV0ZSBDIHNvdXJjZSwKIFNwaGlueC1mb3JtYXR0ZWQgZG9jdW1lbnRhdGlvbiwgUHl0aG9uIGxpYnJhcnkgbW9kdWxlcywgZXhhbXBsZSBwcm9ncmFtcywgYW5kCkBAIC0yMjIsOCArMjIyLDggQEAKIG5ld3Nncm91cHMgYW5kIG9uIHRoZSBQeXRob24gaG9tZSBwYWdlIGF0IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvOyBhbiBSU1MgZmVlZCBvZgogbmV3cyBpcyBhdmFpbGFibGUuCiAKLVlvdSBjYW4gYWxzbyBhY2Nlc3MgdGhlIGRldmVsb3BtZW50IHZlcnNpb24gb2YgUHl0aG9uIHRocm91Z2ggTWVyY3VyaWFsLiAgU2VlCi1odHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS9mYXEuaHRtbCBmb3IgZGV0YWlscy4KK1lvdSBjYW4gYWxzbyBhY2Nlc3MgdGhlIGRldmVsb3BtZW50IHZlcnNpb24gb2YgUHl0aG9uIHRocm91Z2ggR2l0LiAgU2VlCitgVGhlIFB5dGhvbiBEZXZlbG9wZXIncyBHdWlkZSA8aHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvPmBfIGZvciBkZXRhaWxzLgogCiAKIEhvdyBkbyBJIHN1Ym1pdCBidWcgcmVwb3J0cyBhbmQgcGF0Y2hlcyBmb3IgUHl0aG9uPwpkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9ndWkucnN0IGIvRG9jL2ZhcS9ndWkucnN0CmluZGV4IDgzMmMxZTAuLjkyMjhmZGQgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvZ3VpLnJzdAorKysgYi9Eb2MvZmFxL2d1aS5yc3QKQEAgLTcwLDE1ICs3MCw2IEBACiBwb3dlcmZ1bCBhbmQgbWF0dXJlIGNyb3NzLXBsYXRmb3JtIHdpbmRvd2luZyBzeXN0ZW0sIGFyZSBhdmFpbGFibGUgZnJvbSBgdGhlCiBQeUZMVEsgcHJvamVjdCA8aHR0cDovL3B5Zmx0ay5zb3VyY2Vmb3JnZS5uZXQ+YF8uCiAKLQotRk9YCi0tLS0tCi0KLUEgd3JhcHBlciBmb3IgYHRoZSBGT1ggdG9vbGtpdCA8aHR0cDovL3d3dy5mb3gtdG9vbGtpdC5vcmcvPmBfIGNhbGxlZCBgRlhweQotPGh0dHA6Ly9meHB5LnNvdXJjZWZvcmdlLm5ldC8+YF8gaXMgYXZhaWxhYmxlLiAgRk9YIHN1cHBvcnRzIGJvdGggVW5peCB2YXJpYW50cwotYW5kIFdpbmRvd3MuCi0KLQogT3BlbkdMCiAtLS0tLS0KIApkaWZmIC0tZ2l0IGEvRG9jL2ZhcS9saWJyYXJ5LnJzdCBiL0RvYy9mYXEvbGlicmFyeS5yc3QKaW5kZXggZDFiM2VmYi4uYTI1OTQ2NSAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9saWJyYXJ5LnJzdAorKysgYi9Eb2MvZmFxL2xpYnJhcnkucnN0CkBAIC0xOSw3ICsxOSw3IEBACiBsaWJyYXJ5IGFuZCB3aWxsIGJlIGFibGUgdG8gc2tpcCB0aGlzIHN0ZXAuKQogCiBGb3IgdGhpcmQtcGFydHkgcGFja2FnZXMsIHNlYXJjaCB0aGUgYFB5dGhvbiBQYWNrYWdlIEluZGV4Ci08aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT5gXyBvciB0cnkgYEdvb2dsZSA8aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbT5gXyBvcgorPGh0dHBzOi8vcHlwaS5vcmc+YF8gb3IgdHJ5IGBHb29nbGUgPGh0dHBzOi8vd3d3Lmdvb2dsZS5jb20+YF8gb3IKIGFub3RoZXIgV2ViIHNlYXJjaCBlbmdpbmUuICBTZWFyY2hpbmcgZm9yICJQeXRob24iIHBsdXMgYSBrZXl3b3JkIG9yIHR3byBmb3IKIHlvdXIgdG9waWMgb2YgaW50ZXJlc3Qgd2lsbCB1c3VhbGx5IGZpbmQgc29tZXRoaW5nIGhlbHBmdWwuCiAKQEAgLTU4NSw3ICs1ODUsNyBAQAogKCJwdHlzIikgaW5zdGVhZCBvZiBwaXBlcy4gT3IgeW91IGNhbiB1c2UgYSBQeXRob24gaW50ZXJmYWNlIHRvIERvbiBMaWJlcycKICJleHBlY3QiIGxpYnJhcnkuICBBIFB5dGhvbiBleHRlbnNpb24gdGhhdCBpbnRlcmZhY2VzIHRvIGV4cGVjdCBpcyBjYWxsZWQgImV4cHkiCiBhbmQgYXZhaWxhYmxlIGZyb20gaHR0cDovL2V4cGVjdHB5LnNvdXJjZWZvcmdlLm5ldC4gIEEgcHVyZSBQeXRob24gc29sdXRpb24gdGhhdAotd29ya3MgbGlrZSBleHBlY3QgaXMgYHBleHBlY3QgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcGV4cGVjdC8+YF8uCit3b3JrcyBsaWtlIGV4cGVjdCBpcyBgcGV4cGVjdCA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3BleHBlY3QvPmBfLgogCiAKIEhvdyBkbyBJIGFjY2VzcyB0aGUgc2VyaWFsIChSUzIzMikgcG9ydD8KZGlmZiAtLWdpdCBhL0RvYy9mYXEvd2luZG93cy5yc3QgYi9Eb2MvZmFxL3dpbmRvd3MucnN0CmluZGV4IDI1YzczYjguLmY4ZTIzY2YgMTAwNjQ0Ci0tLSBhL0RvYy9mYXEvd2luZG93cy5yc3QKKysrIGIvRG9jL2ZhcS93aW5kb3dzLnJzdApAQCAtMjk1LDcgKzI5NSw3IEBACiBzaXplIiB0byA0LCBhbmQgc2VsZWN0IHRoZSAiSW5zZXJ0IHNwYWNlcyIgcmFkaW8gYnV0dG9uLgogCiBJZiB5b3Ugc3VzcGVjdCBtaXhlZCB0YWJzIGFuZCBzcGFjZXMgYXJlIGNhdXNpbmcgcHJvYmxlbXMgaW4gbGVhZGluZyB3aGl0ZXNwYWNlLAotcnVuIFB5dGhvbiB3aXRoIHRoZSA6b3B0aW9uOmAtdGAgc3dpdGNoIG9yIHJ1biBgYFRvb2xzL1NjcmlwdHMvdGFibmFubnkucHlgYCB0bworcnVuIFB5dGhvbiB3aXRoIHRoZSA6b3B0aW9uOmAtdGAgc3dpdGNoIG9yIHJ1biB0aGUgOm1vZDpgdGFibmFubnlgIG1vZHVsZSB0bwogY2hlY2sgYSBkaXJlY3RvcnkgdHJlZSBpbiBiYXRjaCBtb2RlLgogCiAKZGlmZiAtLWdpdCBhL0RvYy9nbG9zc2FyeS5yc3QgYi9Eb2MvZ2xvc3NhcnkucnN0CmluZGV4IGNiZDEyMzcuLjllNmJmMjMgMTAwNjQ0Ci0tLSBhL0RvYy9nbG9zc2FyeS5yc3QKKysrIGIvRG9jL2dsb3NzYXJ5LnJzdApAQCAtMTQsOCArMTQsOSBAQAogCiAgICBgYC4uLmBgCiAgICAgICBUaGUgZGVmYXVsdCBQeXRob24gcHJvbXB0IG9mIHRoZSBpbnRlcmFjdGl2ZSBzaGVsbCB3aGVuIGVudGVyaW5nIGNvZGUgZm9yCi0gICAgICBhbiBpbmRlbnRlZCBjb2RlIGJsb2NrIG9yIHdpdGhpbiBhIHBhaXIgb2YgbWF0Y2hpbmcgbGVmdCBhbmQgcmlnaHQKLSAgICAgIGRlbGltaXRlcnMgKHBhcmVudGhlc2VzLCBzcXVhcmUgYnJhY2tldHMgb3IgY3VybHkgYnJhY2VzKS4KKyAgICAgIGFuIGluZGVudGVkIGNvZGUgYmxvY2ssIHdoZW4gd2l0aGluIGEgcGFpciBvZiBtYXRjaGluZyBsZWZ0IGFuZCByaWdodAorICAgICAgZGVsaW1pdGVycyAocGFyZW50aGVzZXMsIHNxdWFyZSBicmFja2V0cywgY3VybHkgYnJhY2VzIG9yIHRyaXBsZSBxdW90ZXMpLAorICAgICAgb3IgYWZ0ZXIgc3BlY2lmeWluZyBhIGRlY29yYXRvci4KIAogICAgMnRvMwogICAgICAgQSB0b29sIHRoYXQgdHJpZXMgdG8gY29udmVydCBQeXRob24gMi54IGNvZGUgdG8gUHl0aG9uIDMueCBjb2RlIGJ5CkBAIC0yOTYsNyArMjk3LDcgQEAKICAgICAgIHRoZSA6ZnVuYzpgbmV4dGAgZnVuY3Rpb24uIEVhY2ggOmtleXdvcmQ6YHlpZWxkYCB0ZW1wb3JhcmlseSBzdXNwZW5kcwogICAgICAgcHJvY2Vzc2luZywgcmVtZW1iZXJpbmcgdGhlIGxvY2F0aW9uIGV4ZWN1dGlvbiBzdGF0ZSAoaW5jbHVkaW5nIGxvY2FsCiAgICAgICB2YXJpYWJsZXMgYW5kIHBlbmRpbmcgdHJ5LXN0YXRlbWVudHMpLiAgV2hlbiB0aGUgZ2VuZXJhdG9yIHJlc3VtZXMsIGl0Ci0gICAgICBwaWNrcy11cCB3aGVyZSBpdCBsZWZ0LW9mZiAoaW4gY29udHJhc3QgdG8gZnVuY3Rpb25zIHdoaWNoIHN0YXJ0IGZyZXNoIG9uCisgICAgICBwaWNrcyB1cCB3aGVyZSBpdCBsZWZ0IG9mZiAoaW4gY29udHJhc3QgdG8gZnVuY3Rpb25zIHdoaWNoIHN0YXJ0IGZyZXNoIG9uCiAgICAgICBldmVyeSBpbnZvY2F0aW9uKS4KIAogICAgICAgLi4gaW5kZXg6OiBzaW5nbGU6IGdlbmVyYXRvciBleHByZXNzaW9uCkBAIC00NTcsNyArNDU4LDcgQEAKICAgIGxhbWJkYQogICAgICAgQW4gYW5vbnltb3VzIGlubGluZSBmdW5jdGlvbiBjb25zaXN0aW5nIG9mIGEgc2luZ2xlIDp0ZXJtOmBleHByZXNzaW9uYAogICAgICAgd2hpY2ggaXMgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gIFRoZSBzeW50YXggdG8gY3JlYXRlCi0gICAgICBhIGxhbWJkYSBmdW5jdGlvbiBpcyBgYGxhbWJkYSBbYXJndW1lbnRzXTogZXhwcmVzc2lvbmBgCisgICAgICBhIGxhbWJkYSBmdW5jdGlvbiBpcyBgYGxhbWJkYSBbcGFyYW1ldGVyc106IGV4cHJlc3Npb25gYAogCiAgICBMQllMCiAgICAgICBMb29rIGJlZm9yZSB5b3UgbGVhcC4gIFRoaXMgY29kaW5nIHN0eWxlIGV4cGxpY2l0bHkgdGVzdHMgZm9yCkBAIC00NzQsNyArNDc1LDcgQEAKICAgIGxpc3QKICAgICAgIEEgYnVpbHQtaW4gUHl0aG9uIDp0ZXJtOmBzZXF1ZW5jZWAuICBEZXNwaXRlIGl0cyBuYW1lIGl0IGlzIG1vcmUgYWtpbgogICAgICAgdG8gYW4gYXJyYXkgaW4gb3RoZXIgbGFuZ3VhZ2VzIHRoYW4gdG8gYSBsaW5rZWQgbGlzdCBzaW5jZSBhY2Nlc3MgdG8KLSAgICAgIGVsZW1lbnRzIGFyZSBPKDEpLgorICAgICAgZWxlbWVudHMgaXMgTygxKS4KIAogICAgbGlzdCBjb21wcmVoZW5zaW9uCiAgICAgICBBIGNvbXBhY3Qgd2F5IHRvIHByb2Nlc3MgYWxsIG9yIHBhcnQgb2YgdGhlIGVsZW1lbnRzIGluIGEgc2VxdWVuY2UgYW5kCkBAIC02MjUsNiArNjI2LDIxIEBACiAgICAgICA6cmVmOmB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGFyZ3VtZW50cyBhbmQgcGFyYW1ldGVycwogICAgICAgPGZhcS1hcmd1bWVudC12cy1wYXJhbWV0ZXI+YCwgYW5kIHRoZSA6cmVmOmBmdW5jdGlvbmAgc2VjdGlvbi4KIAorICAgUEVQCisgICAgICBQeXRob24gRW5oYW5jZW1lbnQgUHJvcG9zYWwuIEEgUEVQIGlzIGEgZGVzaWduIGRvY3VtZW50CisgICAgICBwcm92aWRpbmcgaW5mb3JtYXRpb24gdG8gdGhlIFB5dGhvbiBjb21tdW5pdHksIG9yIGRlc2NyaWJpbmcgYSBuZXcKKyAgICAgIGZlYXR1cmUgZm9yIFB5dGhvbiBvciBpdHMgcHJvY2Vzc2VzIG9yIGVudmlyb25tZW50LiBQRVBzIHNob3VsZAorICAgICAgcHJvdmlkZSBhIGNvbmNpc2UgdGVjaG5pY2FsIHNwZWNpZmljYXRpb24gYW5kIGEgcmF0aW9uYWxlIGZvciBwcm9wb3NlZAorICAgICAgZmVhdHVyZXMuCisKKyAgICAgIFBFUHMgYXJlIGludGVuZGVkIHRvIGJlIHRoZSBwcmltYXJ5IG1lY2hhbmlzbXMgZm9yIHByb3Bvc2luZyBtYWpvciBuZXcKKyAgICAgIGZlYXR1cmVzLCBmb3IgY29sbGVjdGluZyBjb21tdW5pdHkgaW5wdXQgb24gYW4gaXNzdWUsIGFuZCBmb3IgZG9jdW1lbnRpbmcKKyAgICAgIHRoZSBkZXNpZ24gZGVjaXNpb25zIHRoYXQgaGF2ZSBnb25lIGludG8gUHl0aG9uLiBUaGUgUEVQIGF1dGhvciBpcworICAgICAgcmVzcG9uc2libGUgZm9yIGJ1aWxkaW5nIGNvbnNlbnN1cyB3aXRoaW4gdGhlIGNvbW11bml0eSBhbmQgZG9jdW1lbnRpbmcKKyAgICAgIGRpc3NlbnRpbmcgb3BpbmlvbnMuCisKKyAgICAgIFNlZSA6cGVwOmAxYC4KKwogICAgcG9zaXRpb25hbCBhcmd1bWVudAogICAgICAgU2VlIDp0ZXJtOmBhcmd1bWVudGAuCiAKQEAgLTY5NCw3ICs3MTAsNyBAQAogCiAgICBzdHJ1Y3Qgc2VxdWVuY2UKICAgICAgIEEgdHVwbGUgd2l0aCBuYW1lZCBlbGVtZW50cy4gU3RydWN0IHNlcXVlbmNlcyBleHBvc2UgYW4gaW50ZXJmYWNlIHNpbWlsaWFyCi0gICAgICB0byA6dGVybTpgbmFtZWQgdHVwbGVgIGluIHRoYXQgZWxlbWVudHMgY2FuIGVpdGhlciBiZSBhY2Nlc3NlZCBlaXRoZXIgYnkKKyAgICAgIHRvIDp0ZXJtOmBuYW1lZCB0dXBsZWAgaW4gdGhhdCBlbGVtZW50cyBjYW4gYmUgYWNjZXNzZWQgZWl0aGVyIGJ5CiAgICAgICBpbmRleCBvciBhcyBhbiBhdHRyaWJ1dGUuIEhvd2V2ZXIsIHRoZXkgZG8gbm90IGhhdmUgYW55IG9mIHRoZSBuYW1lZCB0dXBsZQogICAgICAgbWV0aG9kcyBsaWtlIDptZXRoOmB+Y29sbGVjdGlvbnMuc29tZW5hbWVkdHVwbGUuX21ha2VgIG9yCiAgICAgICA6bWV0aDpgfmNvbGxlY3Rpb25zLnNvbWVuYW1lZHR1cGxlLl9hc2RpY3RgLiBFeGFtcGxlcyBvZiBzdHJ1Y3Qgc2VxdWVuY2VzCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vYXJncGFyc2UucnN0IGIvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdAppbmRleCAwMmJmYzcwLi42M2IwYjI4IDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vYXJncGFyc2UucnN0CisrKyBiL0RvYy9ob3d0by9hcmdwYXJzZS5yc3QKQEAgLTIyMyw3ICsyMjMsNyBAQAogSW50cm9kdWNpbmcgT3B0aW9uYWwgYXJndW1lbnRzCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotU28gZmFyIHdlLCBoYXZlIGJlZW4gcGxheWluZyB3aXRoIHBvc2l0aW9uYWwgYXJndW1lbnRzLiBMZXQgdXMKK1NvIGZhciB3ZSBoYXZlIGJlZW4gcGxheWluZyB3aXRoIHBvc2l0aW9uYWwgYXJndW1lbnRzLiBMZXQgdXMKIGhhdmUgYSBsb29rIG9uIGhvdyB0byBhZGQgb3B0aW9uYWwgb25lczo6CiAKICAgIGltcG9ydCBhcmdwYXJzZQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2Rlc2NyaXB0b3IucnN0IGIvRG9jL2hvd3RvL2Rlc2NyaXB0b3IucnN0CmluZGV4IDQ5M2Y2YWUuLjM3YmE2YTggMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9kZXNjcmlwdG9yLnJzdAorKysgYi9Eb2MvaG93dG8vZGVzY3JpcHRvci5yc3QKQEAgLTI1OCwxMCArMjU4LDEwIEBACiAKICAgICBjbGFzcyBDZWxsKG9iamVjdCk6CiAgICAgICAgIC4gLiAuCi0gICAgICAgIGRlZiBnZXR2YWx1ZShzZWxmLCBvYmopOgotICAgICAgICAgICAgIlJlY2FsY3VsYXRlIGNlbGwgYmVmb3JlIHJldHVybmluZyB2YWx1ZSIKKyAgICAgICAgZGVmIGdldHZhbHVlKHNlbGYpOgorICAgICAgICAgICAgIlJlY2FsY3VsYXRlIHRoZSBjZWxsIGJlZm9yZSByZXR1cm5pbmcgdmFsdWUiCiAgICAgICAgICAgICBzZWxmLnJlY2FsYygpCi0gICAgICAgICAgICByZXR1cm4gb2JqLl92YWx1ZQorICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ZhbHVlCiAgICAgICAgIHZhbHVlID0gcHJvcGVydHkoZ2V0dmFsdWUpCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2RvYW5kZG9udC5yc3QgYi9Eb2MvaG93dG8vZG9hbmRkb250LnJzdAppbmRleCA5OGRiYWQxLi4zNWUxNTgzIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vZG9hbmRkb250LnJzdAorKysgYi9Eb2MvaG93dG8vZG9hbmRkb250LnJzdApAQCAtMjg1LDcgKzI4NSw3IEBACiBmb3Igc29tZSByZWFzb246IDpmdW5jOmBtaW5gIGFuZCA6ZnVuYzpgbWF4YCBjYW4gZmluZCB0aGUgbWluaW11bS9tYXhpbXVtIG9mCiBhbnkgc2VxdWVuY2Ugd2l0aCBjb21wYXJhYmxlIHNlbWFudGljcywgZm9yIGV4YW1wbGUsIHlldCBtYW55IHBlb3BsZSB3cml0ZQogdGhlaXIgb3duIDpmdW5jOmBtYXhgLzpmdW5jOmBtaW5gLiBBbm90aGVyIGhpZ2hseSB1c2VmdWwgZnVuY3Rpb24gaXMKLTpmdW5jOmByZWR1Y2VgIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHJlcGVhdGx5IGFwcGx5IGEgYmluYXJ5IG9wZXJhdGlvbiB0byBhCis6ZnVuYzpgcmVkdWNlYCB3aGljaCBjYW4gYmUgdXNlZCB0byByZXBlYXRlZGx5IGFwcGx5IGEgYmluYXJ5IG9wZXJhdGlvbiB0byBhCiBzZXF1ZW5jZSwgcmVkdWNpbmcgaXQgdG8gYSBzaW5nbGUgdmFsdWUuICBGb3IgZXhhbXBsZSwgY29tcHV0ZSBhIGZhY3RvcmlhbAogd2l0aCBhIHNlcmllcyBvZiBtdWx0aXBseSBvcGVyYXRpb25zOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0IGIvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CmluZGV4IGVlOWE1ZjZkLi5hMDZlMjljIDEwMDY0NAotLS0gYS9Eb2MvaG93dG8vZnVuY3Rpb25hbC5yc3QKKysrIGIvRG9jL2hvd3RvL2Z1bmN0aW9uYWwucnN0CkBAIC0yMDcsNyArMjA3LDcgQEAKICAgICAzCiAgICAgPj4+IGl0Lm5leHQoKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KKyAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICAgU3RvcEl0ZXJhdGlvbgogICAgID4+PgogCkBAIC00NzcsNyArNDc3LDcgQEAKICAgICAyCiAgICAgPj4+IGdlbi5uZXh0KCkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICBGaWxlICJzdGRpbiIsIGxpbmUgMSwgaW4gPworICAgICAgRmlsZSAic3RkaW4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICAgICBGaWxlICJzdGRpbiIsIGxpbmUgMiwgaW4gZ2VuZXJhdGVfaW50cwogICAgIFN0b3BJdGVyYXRpb24KIApAQCAtNTgxLDcgKzU4MSw3IEBACiAgICAgOQogICAgID4+PiBwcmludCBpdC5uZXh0KCkKICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgICBGaWxlICJ0LnB5IiwgbGluZSAxNSwgaW4gPworICAgICAgRmlsZSAidC5weSIsIGxpbmUgMTUsIGluIDxtb2R1bGU+CiAgICAgICAgIHByaW50IGl0Lm5leHQoKQogICAgIFN0b3BJdGVyYXRpb24KIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0IGIvRG9jL2hvd3RvL2xvZ2dpbmctY29va2Jvb2sucnN0CmluZGV4IGI3ZjBmYTUuLjUwZmY3NmUgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9sb2dnaW5nLWNvb2tib29rLnJzdAorKysgYi9Eb2MvaG93dG8vbG9nZ2luZy1jb29rYm9vay5yc3QKQEAgLTY1MCw3ICs2NTAsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBzZWN0aW9uYXV0aG9yOjogRG91ZyBIZWxsbWFubiwgVmluYXkgU2FqaXAgKGNoYW5nZXMpCi0uLiAoc2VlIDxodHRwOi8vYmxvZy5kb3VnaGVsbG1hbm4uY29tLzIwMDcvMDUvcHltb3R3LWxvZ2dpbmcuaHRtbD4pCisuLiAoc2VlIDxodHRwczovL3B5bW90dy5jb20vMy9sb2dnaW5nLz4pCiAKIFNvbWV0aW1lcyB5b3Ugd2FudCB0byBsZXQgYSBsb2cgZmlsZSBncm93IHRvIGEgY2VydGFpbiBzaXplLCB0aGVuIG9wZW4gYSBuZXcKIGZpbGUgYW5kIGxvZyB0byB0aGF0LiBZb3UgbWF5IHdhbnQgdG8ga2VlcCBhIGNlcnRhaW4gbnVtYmVyIG9mIHRoZXNlIGZpbGVzLCBhbmQKQEAgLTgxNCw3ICs4MTQsNyBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBBbHRob3VnaCBtb3N0IGxvZ2dpbmcgbWVzc2FnZXMgYXJlIGludGVuZGVkIGZvciByZWFkaW5nIGJ5IGh1bWFucywgYW5kIHRodXMgbm90Ci1yZWFkaWx5IG1hY2hpbmUtcGFyc2VhYmxlLCB0aGVyZSBtaWdodCBiZSBjaXJ1bXN0YW5jZXMgd2hlcmUgeW91IHdhbnQgdG8gb3V0cHV0CityZWFkaWx5IG1hY2hpbmUtcGFyc2VhYmxlLCB0aGVyZSBtaWdodCBiZSBjaXJjdW1zdGFuY2VzIHdoZXJlIHlvdSB3YW50IHRvIG91dHB1dAogbWVzc2FnZXMgaW4gYSBzdHJ1Y3R1cmVkIGZvcm1hdCB3aGljaCAqaXMqIGNhcGFibGUgb2YgYmVpbmcgcGFyc2VkIGJ5IGEgcHJvZ3JhbQogKHdpdGhvdXQgbmVlZGluZyBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnMgdG8gcGFyc2UgdGhlIGxvZyBtZXNzYWdlKS4gVGhpcyBpcwogc3RyYWlnaHRmb3J3YXJkIHRvIGFjaGlldmUgdXNpbmcgdGhlIGxvZ2dpbmcgcGFja2FnZS4gVGhlcmUgYXJlIGEgbnVtYmVyIG9mCkBAIC0xMTc5LDggKzExNzksOCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGVyZSBtaWdodCBiZSBzaXR1YXRpb25zIHdoZW4gaXQgaXMgZGVzaXJhYmxlIHRvIGhhdmUgbG9nZ2luZyBtZXNzYWdlcyByZW5kZXJlZAotaW4gYW4gYXVkaWJsZSByYXRoZXIgdGhhbiBhIHZpc2libGUgZm9ybWF0LiBUaGlzIGlzIGVhc3kgdG8gZG8gaWYgeW91IGhhdmUgdGV4dC0KLXRvLXNwZWVjaCAoVFRTKSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBpbiB5b3VyIHN5c3RlbSwgZXZlbiBpZiBpdCBkb2Vzbid0IGhhdmUKK2luIGFuIGF1ZGlibGUgcmF0aGVyIHRoYW4gYSB2aXNpYmxlIGZvcm1hdC4gVGhpcyBpcyBlYXN5IHRvIGRvIGlmIHlvdSBoYXZlCit0ZXh0LXRvLXNwZWVjaCAoVFRTKSBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZSBpbiB5b3VyIHN5c3RlbSwgZXZlbiBpZiBpdCBkb2Vzbid0IGhhdmUKIGEgUHl0aG9uIGJpbmRpbmcuIE1vc3QgVFRTIHN5c3RlbXMgaGF2ZSBhIGNvbW1hbmQgbGluZSBwcm9ncmFtIHlvdSBjYW4gcnVuLCBhbmQKIHRoaXMgY2FuIGJlIGludm9rZWQgZnJvbSBhIGhhbmRsZXIgdXNpbmcgOm1vZDpgc3VicHJvY2Vzc2AuIEl0J3MgYXNzdW1lZCBoZXJlCiB0aGF0IFRUUyBjb21tYW5kIGxpbmUgcHJvZ3JhbXMgd29uJ3QgZXhwZWN0IHRvIGludGVyYWN0IHdpdGggdXNlcnMgb3IgdGFrZSBhCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vcHlwb3J0aW5nLnJzdCBiL0RvYy9ob3d0by9weXBvcnRpbmcucnN0CmluZGV4IDU5YjI4M2EuLjg4YjAxNzcgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9weXBvcnRpbmcucnN0CisrKyBiL0RvYy9ob3d0by9weXBvcnRpbmcucnN0CkBAIC0xNyw3ICsxNyw4IEBACiAgICBwbGVhc2Ugc2VlIDpyZWY6YGNwb3J0aW5nLWhvd3RvYC4KIAogICAgSWYgeW91IHdvdWxkIGxpa2UgdG8gcmVhZCBvbmUgY29yZSBQeXRob24gZGV2ZWxvcGVyJ3MgdGFrZSBvbiB3aHkgUHl0aG9uIDMKLSAgIGNhbWUgaW50byBleGlzdGVuY2UsIHlvdSBjYW4gcmVhZCBOaWNrIENvZ2hsYW4ncyBgUHl0aG9uIDMgUSAmIEFgXy4KKyAgIGNhbWUgaW50byBleGlzdGVuY2UsIHlvdSBjYW4gcmVhZCBOaWNrIENvZ2hsYW4ncyBgUHl0aG9uIDMgUSAmIEFgXyBvcgorICAgQnJldHQgQ2Fubm9uJ3MgYFdoeSBQeXRob24gMyBleGlzdHNgXy4KIAogICAgRm9yIGhlbHAgd2l0aCBwb3J0aW5nLCB5b3UgY2FuIGVtYWlsIHRoZSBweXRob24tcG9ydGluZ18gbWFpbGluZyBsaXN0IHdpdGgKICAgIHF1ZXN0aW9ucy4KQEAgLTI4LDI0ICsyOSwyMSBAQAogVG8gbWFrZSB5b3VyIHByb2plY3QgYmUgc2luZ2xlLXNvdXJjZSBQeXRob24gMi8zIGNvbXBhdGlibGUsIHRoZSBiYXNpYyBzdGVwcwogYXJlOgogCi0jLiBVcGRhdGUgeW91ciBjb2RlIHRvIGRyb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuNSBvciBvbGRlciAoc3VwcG9ydGluZyBvbmx5Ci0gICBQeXRob24gMi43IGlzIGlkZWFsKQorIy4gT25seSB3b3JyeSBhYm91dCBzdXBwb3J0aW5nIFB5dGhvbiAyLjcKICMuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBnb29kIHRlc3QgY292ZXJhZ2UgKGNvdmVyYWdlLnB5XyBjYW4gaGVscDsKICAgIGBgcGlwIGluc3RhbGwgY292ZXJhZ2VgYCkKICMuIExlYXJuIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFB5dGhvbiAyICYgMwotIy4gVXNlIE1vZGVybml6ZV8gb3IgRnV0dXJpemVfIHRvIHVwZGF0ZSB5b3VyIGNvZGUgKGBgcGlwIGluc3RhbGwgbW9kZXJuaXplYGAgb3IKLSAgIGBgcGlwIGluc3RhbGwgZnV0dXJlYGAsIHJlc3BlY3RpdmVseSkKKyMuIFVzZSBGdXR1cml6ZV8gKG9yIE1vZGVybml6ZV8pIHRvIHVwZGF0ZSB5b3VyIGNvZGUgKGUuZy4gYGBwaXAgaW5zdGFsbCBmdXR1cmVgYCkKICMuIFVzZSBQeWxpbnRfIHRvIGhlbHAgbWFrZSBzdXJlIHlvdSBkb24ndCByZWdyZXNzIG9uIHlvdXIgUHl0aG9uIDMgc3VwcG9ydAotICAgKGlmIG9ubHkgc3VwcG9ydGluZyBQeXRob24gMi43LzMuNCBvciBuZXdlcjsgYGBwaXAgaW5zdGFsbCBweWxpbnRgYCkKKyAgIChgYHBpcCBpbnN0YWxsIHB5bGludGBgKQogIy4gVXNlIGNhbml1c2VweXRob24zXyB0byBmaW5kIG91dCB3aGljaCBvZiB5b3VyIGRlcGVuZGVuY2llcyBhcmUgYmxvY2tpbmcgeW91cgogICAgdXNlIG9mIFB5dGhvbiAzIChgYHBpcCBpbnN0YWxsIGNhbml1c2VweXRob24zYGApCiAjLiBPbmNlIHlvdXIgZGVwZW5kZW5jaWVzIGFyZSBubyBsb25nZXIgYmxvY2tpbmcgeW91LCB1c2UgY29udGludW91cyBpbnRlZ3JhdGlvbgogICAgdG8gbWFrZSBzdXJlIHlvdSBzdGF5IGNvbXBhdGlibGUgd2l0aCBQeXRob24gMiAmIDMgKHRveF8gY2FuIGhlbHAgdGVzdAogICAgYWdhaW5zdCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob247IGBgcGlwIGluc3RhbGwgdG94YGApCi0KLUlmIHlvdSBhcmUgZHJvcHBpbmcgc3VwcG9ydCBmb3IgUHl0aG9uIDIgZW50aXJlbHksIHRoZW4gYWZ0ZXIgeW91IGxlYXJuIHRoZQotZGlmZmVyZW5jZXMgYmV0d2VlbiBQeXRob24gMiAmIDMgeW91IGNhbiBydW4gMnRvM18gb3ZlciB5b3VyIGNvZGUgYW5kIHNraXAgdGhlCi1yZXN0IG9mIHRoZSBzdGVwcyBvdXRsaW5lZCBhYm92ZS4KKyMuIENvbnNpZGVyIHVzaW5nIG9wdGlvbmFsIHN0YXRpYyB0eXBlIGNoZWNraW5nIHRvIG1ha2Ugc3VyZSB5b3VyIHR5cGUgdXNhZ2UKKyAgIHdvcmtzIGluIGJvdGggUHl0aG9uIDIgJiAzIChlLmcuIHVzZSBteXB5XyB0byBjaGVjayB5b3VyIHR5cGluZyB1bmRlciBib3RoCisgICBQeXRob24gMiAmIFB5dGhvbiAzKS4KIAogCiBEZXRhaWxzCkBAIC01NSw3ICs1Myw3IEBACiAqKnRvZGF5KiohIEV2ZW4gaWYgeW91ciBkZXBlbmRlbmNpZXMgYXJlIG5vdCBzdXBwb3J0aW5nIFB5dGhvbiAzIHlldCB0aGF0IGRvZXMKIG5vdCBtZWFuIHlvdSBjYW4ndCBtb2Rlcm5pemUgeW91ciBjb2RlICoqbm93KiogdG8gc3VwcG9ydCBQeXRob24gMy4gTW9zdCBjaGFuZ2VzCiByZXF1aXJlZCB0byBzdXBwb3J0IFB5dGhvbiAzIGxlYWQgdG8gY2xlYW5lciBjb2RlIHVzaW5nIG5ld2VyIHByYWN0aWNlcyBldmVuIGluCi1QeXRob24gMi4KK1B5dGhvbiAyIGNvZGUuCiAKIEFub3RoZXIga2V5IHBvaW50IGlzIHRoYXQgbW9kZXJuaXppbmcgeW91ciBQeXRob24gMiBjb2RlIHRvIGFsc28gc3VwcG9ydAogUHl0aG9uIDMgaXMgbGFyZ2VseSBhdXRvbWF0ZWQgZm9yIHlvdS4gV2hpbGUgeW91IG1pZ2h0IGhhdmUgdG8gbWFrZSBzb21lIEFQSQpAQCAtNjcsMjYgKzY1LDI4IEBACiB5b3VyIGNvZGUgdG8gc3VwcG9ydCBQeXRob24gMiAmIDMgc2ltdWx0YW5lb3VzbHkuCiAKIAotRHJvcCBzdXBwb3J0IGZvciBQeXRob24gMi41IGFuZCBvbGRlciAoYXQgbGVhc3QpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0Ryb3Agc3VwcG9ydCBmb3IgUHl0aG9uIDIuNiBhbmQgb2xkZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogV2hpbGUgeW91IGNhbiBtYWtlIFB5dGhvbiAyLjUgd29yayB3aXRoIFB5dGhvbiAzLCBpdCBpcyAqKm11Y2gqKiBlYXNpZXIgaWYgeW91Ci1vbmx5IGhhdmUgdG8gd29yayB3aXRoIFB5dGhvbiAyLjYgb3IgbmV3ZXIgKGFuZCBlYXNpZXIgc3RpbGwgaWYgeW91IG9ubHkgaGF2ZQotdG8gd29yayB3aXRoIFB5dGhvbiAyLjcpLiBJZiBkcm9wcGluZyBQeXRob24gMi41IGlzIG5vdCBhbiBvcHRpb24gdGhlbiB0aGUgc2l4XwotcHJvamVjdCBjYW4gaGVscCB5b3Ugc3VwcG9ydCBQeXRob24gMi41ICYgMyBzaW11bHRhbmVvdXNseQorb25seSBoYXZlIHRvIHdvcmsgd2l0aCBQeXRob24gMi43LiBJZiBkcm9wcGluZyBQeXRob24gMi41IGlzIG5vdCBhbgorb3B0aW9uIHRoZW4gdGhlIHNpeF8gcHJvamVjdCBjYW4gaGVscCB5b3Ugc3VwcG9ydCBQeXRob24gMi41ICYgMyBzaW11bHRhbmVvdXNseQogKGBgcGlwIGluc3RhbGwgc2l4YGApLiBEbyByZWFsaXplLCB0aG91Z2gsIHRoYXQgbmVhcmx5IGFsbCB0aGUgcHJvamVjdHMgbGlzdGVkCiBpbiB0aGlzIEhPV1RPIHdpbGwgbm90IGJlIGF2YWlsYWJsZSB0byB5b3UuCiAKLUlmIHlvdSBhcmUgYWJsZSB0byBvbmx5IHN1cHBvcnQgUHl0aG9uIDIuNiBvciBuZXdlciwgdGhlbiB0aGUgcmVxdWlyZWQgY2hhbmdlcworSWYgeW91IGFyZSBhYmxlIHRvIHNraXAgUHl0aG9uIDIuNSBhbmQgb2xkZXIsIHRoZW4gdGhlIHJlcXVpcmVkIGNoYW5nZXMKIHRvIHlvdXIgY29kZSBzaG91bGQgY29udGludWUgdG8gbG9vayBhbmQgZmVlbCBsaWtlIGlkaW9tYXRpYyBQeXRob24gY29kZS4gQXQKIHdvcnN0IHlvdSB3aWxsIGhhdmUgdG8gdXNlIGEgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG1ldGhvZCBpbiBzb21lIGluc3RhbmNlcyBvcgogaGF2ZSB0byBpbXBvcnQgYSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHVzaW5nIGEgYnVpbHQtaW4gb25lLCBidXQgb3RoZXJ3aXNlIHRoZQogb3ZlcmFsbCB0cmFuc2Zvcm1hdGlvbiBzaG91bGQgbm90IGZlZWwgZm9yZWlnbiB0byB5b3UuCiAKLUJ1dCBwbGVhc2UgYWltIGZvciBQeXRob24gMi43LiBCdWdmaXhlcyBmb3IgdGhhdCB2ZXJzaW9uIG9mIFB5dGhvbiB3aWxsIGNvbnRpbnVlCi11bnRpbCAyMDIwIHdoaWxlIFB5dGhvbiAyLjYgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gVGhlcmUgYXJlIGFsc28gc29tZSB0b29scwotbWVudGlvbmVkIGluIHRoaXMgSE9XVE8gd2hpY2ggZG8gbm90IHN1cHBvcnQgUHl0aG9uIDIuNiAoZS5nLiwgUHlsaW50XyksIGFuZAotdGhpcyB3aWxsIGJlY29tZSBtb3JlIGNvbW1vbnBsYWNlIGFzIHRpbWUgZ29lcyBvbi4KK0J1dCB5b3Ugc2hvdWxkIGFpbSBmb3Igb25seSBzdXBwb3J0aW5nIFB5dGhvbiAyLjcuIFB5dGhvbiAyLjYgaXMgbm8gbG9uZ2VyCitmcmVlbHkgc3VwcG9ydGVkIGFuZCB0aHVzIGlzIG5vdCByZWNlaXZpbmcgYnVnZml4ZXMuIFRoaXMgbWVhbnMgKip5b3UqKiB3aWxsIGhhdmUKK3RvIHdvcmsgYXJvdW5kIGFueSBpc3N1ZXMgeW91IGNvbWUgYWNyb3NzIHdpdGggUHl0aG9uIDIuNi4gVGhlcmUgYXJlIGFsc28gc29tZQordG9vbHMgbWVudGlvbmVkIGluIHRoaXMgSE9XVE8gd2hpY2ggZG8gbm90IHN1cHBvcnQgUHl0aG9uIDIuNiAoZS5nLiwgUHlsaW50XyksCithbmQgdGhpcyB3aWxsIGJlY29tZSBtb3JlIGNvbW1vbnBsYWNlIGFzIHRpbWUgZ29lcyBvbi4gSXQgd2lsbCBzaW1wbHkgYmUgZWFzaWVyCitmb3IgeW91IGlmIHlvdSBvbmx5IHN1cHBvcnQgdGhlIHZlcnNpb25zIG9mIFB5dGhvbiB0aGF0IHlvdSBoYXZlIHRvIHN1cHBvcnQuCisKIAogTWFrZSBzdXJlIHlvdSBzcGVjaWZ5IHRoZSBwcm9wZXIgdmVyc2lvbiBzdXBwb3J0IGluIHlvdXIgYGBzZXR1cC5weWBgIGZpbGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC05OCw2ICs5OCw3IEBACiBhbHNvIHNwZWNpZnkgZWFjaCBtYWpvci9taW5vciB2ZXJzaW9uIG9mIFB5dGhvbiB0aGF0IHlvdSBkbyBzdXBwb3J0LCBlLmcuCiBgYFByb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyLjdgYC4KIAorCiBIYXZlIGdvb2QgdGVzdCBjb3ZlcmFnZQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMTA2LDkgKzEwNywxMCBAQAogdGh1bWIgaXMgdGhhdCBpZiB5b3Ugd2FudCB0byBiZSBjb25maWRlbnQgZW5vdWdoIGluIHlvdXIgdGVzdCBzdWl0ZSB0aGF0IGFueQogZmFpbHVyZXMgdGhhdCBhcHBlYXIgYWZ0ZXIgaGF2aW5nIHRvb2xzIHJld3JpdGUgeW91ciBjb2RlIGFyZSBhY3R1YWwgYnVncyBpbiB0aGUKIHRvb2xzIGFuZCBub3QgaW4geW91ciBjb2RlLiBJZiB5b3Ugd2FudCBhIG51bWJlciB0byBhaW0gZm9yLCB0cnkgdG8gZ2V0IG92ZXIgODAlCi1jb3ZlcmFnZSAoYW5kIGRvbid0IGZlZWwgYmFkIGlmIHlvdSBjYW4ndCBlYXNpbHkgZ2V0IHBhc3QgOTAlKS4gSWYgeW91Ci1kb24ndCBhbHJlYWR5IGhhdmUgYSB0b29sIHRvIG1lYXN1cmUgdGVzdCBjb3ZlcmFnZSB0aGVuIGNvdmVyYWdlLnB5XyBpcwotcmVjb21tZW5kZWQuCitjb3ZlcmFnZSAoYW5kIGRvbid0IGZlZWwgYmFkIGlmIHlvdSBmaW5kIGl0IGhhcmQgdG8gZ2V0IGJldHRlciB0aGFuIDkwJQorY292ZXJhZ2UpLiBJZiB5b3UgZG9uJ3QgYWxyZWFkeSBoYXZlIGEgdG9vbCB0byBtZWFzdXJlIHRlc3QgY292ZXJhZ2UgdGhlbgorY292ZXJhZ2UucHlfIGlzIHJlY29tbWVuZGVkLgorCiAKIExlYXJuIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFB5dGhvbiAyICYgMwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTI3LDEzICsxMjksMTUgQEAKIAogT25jZSB5b3UgZmVlbCBsaWtlIHlvdSBrbm93IHdoYXQgaXMgZGlmZmVyZW50IGluIFB5dGhvbiAzIGNvbXBhcmVkIHRvIFB5dGhvbiAyLAogaXQncyB0aW1lIHRvIHVwZGF0ZSB5b3VyIGNvZGUhIFlvdSBoYXZlIGEgY2hvaWNlIGJldHdlZW4gdHdvIHRvb2xzIGluIHBvcnRpbmcKLXlvdXIgY29kZSBhdXRvbWF0aWNhbGx5OiBNb2Rlcm5pemVfIGFuZCBGdXR1cml6ZV8uIFdoaWNoIHRvb2wgeW91IGNob29zZSB3aWxsCit5b3VyIGNvZGUgYXV0b21hdGljYWxseTogRnV0dXJpemVfIGFuZCBNb2Rlcm5pemVfLiBXaGljaCB0b29sIHlvdSBjaG9vc2Ugd2lsbAogZGVwZW5kIG9uIGhvdyBtdWNoIGxpa2UgUHl0aG9uIDMgeW91IHdhbnQgeW91ciBjb2RlIHRvIGJlLiBGdXR1cml6ZV8gZG9lcyBpdHMKIGJlc3QgdG8gbWFrZSBQeXRob24gMyBpZGlvbXMgYW5kIHByYWN0aWNlcyBleGlzdCBpbiBQeXRob24gMiwgZS5nLiBiYWNrcG9ydGluZwogdGhlIGBgYnl0ZXNgYCB0eXBlIGZyb20gUHl0aG9uIDMgc28gdGhhdCB5b3UgaGF2ZSBzZW1hbnRpYyBwYXJpdHkgYmV0d2VlbiB0aGUKIG1ham9yIHZlcnNpb25zIG9mIFB5dGhvbi4gTW9kZXJuaXplXywKIG9uIHRoZSBvdGhlciBoYW5kLCBpcyBtb3JlIGNvbnNlcnZhdGl2ZSBhbmQgdGFyZ2V0cyBhIFB5dGhvbiAyLzMgc3Vic2V0IG9mCi1QeXRob24sIHJlbHlpbmcgb24gc2l4XyB0byBoZWxwIHByb3ZpZGUgY29tcGF0aWJpbGl0eS4KK1B5dGhvbiwgZGlyZWN0bHkgcmVseWluZyBvbiBzaXhfIHRvIGhlbHAgcHJvdmlkZSBjb21wYXRpYmlsaXR5LiBBcyBQeXRob24gMyBpcwordGhlIGZ1dHVyZSwgaXQgbWlnaHQgYmUgYmVzdCB0byBjb25zaWRlciBGdXR1cml6ZSB0byBiZWdpbiBhZGp1c3RpbmcgdG8gYW55IG5ldworcHJhY3RpY2VzIHRoYXQgUHl0aG9uIDMgaW50cm9kdWNlcyB3aGljaCB5b3UgYXJlIG5vdCBhY2N1c3RvbWVkIHRvIHlldC4KIAogUmVnYXJkbGVzcyBvZiB3aGljaCB0b29sIHlvdSBjaG9vc2UsIHRoZXkgd2lsbCB1cGRhdGUgeW91ciBjb2RlIHRvIHJ1biB1bmRlcgogUHl0aG9uIDMgd2hpbGUgc3RheWluZyBjb21wYXRpYmxlIHdpdGggdGhlIHZlcnNpb24gb2YgUHl0aG9uIDIgeW91IHN0YXJ0ZWQgd2l0aC4KQEAgLTE1Myw2ICsxNTcsNyBAQAogdGhvdWdoLCB0aGVyZSBhcmUgb25seSBhIGNvdXBsZSBvZiB0aGluZ3MgdG8gd2F0Y2ggb3V0IGZvciB3aGljaCBjYW4gYmUKIGNvbnNpZGVyZWQgbGFyZ2UgaXNzdWVzIHRoYXQgbWF5IGJlIGhhcmQgdG8gZGVidWcgaWYgbm90IHdhdGNoZWQgZm9yLgogCisKIERpdmlzaW9uCiArKysrKysrKwogCkBAIC0xNjksOCArMTc0LDEwIEBACiAgICBkaXZpc2lvbiBvciBjb250aW51ZSB1c2luZyBgYC9gYCBhbmQgZXhwZWN0IGEgZmxvYXQKIAogVGhlIHJlYXNvbiB0aGF0IGBgL2BgIGlzbid0IHNpbXBseSB0cmFuc2xhdGVkIHRvIGBgLy9gYCBhdXRvbWF0aWNhbGx5IGlzIHRoYXQgaWYKLWFuIG9iamVjdCBkZWZpbmVzIGl0cyBvd24gYGBfX2Rpdl9fYGAgbWV0aG9kIGJ1dCBub3QgYGBfX2Zsb29yZGl2X19gYCB0aGVuIHlvdXIKLWNvZGUgd291bGQgYmVnaW4gdG8gZmFpbC4KK2FuIG9iamVjdCBkZWZpbmVzIGEgYGBfX3RydWVkaXZfX2BgIG1ldGhvZCBidXQgbm90IGBgX19mbG9vcmRpdl9fYGAgdGhlbiB5b3VyCitjb2RlIHdvdWxkIGJlZ2luIHRvIGZhaWwgKGUuZy4gYSB1c2VyLWRlZmluZWQgY2xhc3MgdGhhdCB1c2VzIGBgL2BgIHRvCitzaWduaWZ5IHNvbWUgb3BlcmF0aW9uIGJ1dCBub3QgYGAvL2BgIGZvciB0aGUgc2FtZSB0aGluZyBvciBhdCBhbGwpLgorCiAKIFRleHQgdmVyc3VzIGJpbmFyeSBkYXRhCiArKysrKysrKysrKysrKysrKysrKysrKwpAQCAtMTg4LDcgKzE5NSw3IEBACiBwcm9ub3VuY2VkLCBQeXRob24gMyBkaWQgd2hhdCBtb3N0IGxhbmd1YWdlcyBjcmVhdGVkIGluIHRoZSBhZ2Ugb2YgdGhlIGludGVybmV0CiBoYXZlIGRvbmUgYW5kIG1hZGUgdGV4dCBhbmQgYmluYXJ5IGRhdGEgZGlzdGluY3QgdHlwZXMgdGhhdCBjYW5ub3QgYmxpbmRseSBiZQogbWl4ZWQgdG9nZXRoZXIgKFB5dGhvbiBwcmVkYXRlcyB3aWRlc3ByZWFkIGFjY2VzcyB0byB0aGUgaW50ZXJuZXQpLiBGb3IgYW55IGNvZGUKLXRoYXQgb25seSBkZWFscyB3aXRoIHRleHQgb3Igb25seSBiaW5hcnkgZGF0YSwgdGhpcyBzZXBhcmF0aW9uIGRvZXNuJ3QgcG9zZSBhbgordGhhdCBkZWFscyBvbmx5IHdpdGggdGV4dCBvciBvbmx5IGJpbmFyeSBkYXRhLCB0aGlzIHNlcGFyYXRpb24gZG9lc24ndCBwb3NlIGFuCiBpc3N1ZS4gQnV0IGZvciBjb2RlIHRoYXQgaGFzIHRvIGRlYWwgd2l0aCBib3RoLCBpdCBkb2VzIG1lYW4geW91IG1pZ2h0IGhhdmUgdG8KIG5vdyBjYXJlIGFib3V0IHdoZW4geW91IGFyZSB1c2luZyB0ZXh0IGNvbXBhcmVkIHRvIGJpbmFyeSBkYXRhLCB3aGljaCBpcyB3aHkKIHRoaXMgY2Fubm90IGJlIGVudGlyZWx5IGF1dG9tYXRlZC4KQEAgLTE5NywyMiArMjA0LDIxIEBACiAoaXQgaXMgKipoaWdobHkqKiByZWNvbW1lbmRlZCB5b3UgZG9uJ3QgZGVzaWduIEFQSXMgdGhhdCBjYW4gdGFrZSBib3RoIGR1ZSB0bwogdGhlIGRpZmZpY3VsdHkgb2Yga2VlcGluZyB0aGUgY29kZSB3b3JraW5nOyBhcyBzdGF0ZWQgZWFybGllciBpdCBpcyBkaWZmaWN1bHQgdG8KIGRvIHdlbGwpLiBJbiBQeXRob24gMiB0aGlzIG1lYW5zIG1ha2luZyBzdXJlIHRoZSBBUElzIHRoYXQgdGFrZSB0ZXh0IGNhbiB3b3JrCi13aXRoIGBgdW5pY29kZWBgIGluIFB5dGhvbiAyIGFuZCB0aG9zZSB0aGF0IHdvcmsgd2l0aCBiaW5hcnkgZGF0YSB3b3JrIHdpdGggdGhlCi1gYGJ5dGVzYGAgdHlwZSBmcm9tIFB5dGhvbiAzIGFuZCB0aHVzIGEgc3Vic2V0IG9mIGBgc3RyYGAgaW4gUHl0aG9uIDIgKHdoaWNoIHRoZQotYGBieXRlc2BgIHR5cGUgaW4gUHl0aG9uIDIgaXMgYW4gYWxpYXMgZm9yKS4gVXN1YWxseSB0aGUgYmlnZ2VzdCBpc3N1ZSBpcwotcmVhbGl6aW5nIHdoaWNoIG1ldGhvZHMgZXhpc3QgZm9yIHdoaWNoIHR5cGVzIGluIFB5dGhvbiAyICYgMyBzaW11bHRhbmVvdXNseQord2l0aCBgYHVuaWNvZGVgYCBhbmQgdGhvc2UgdGhhdCB3b3JrIHdpdGggYmluYXJ5IGRhdGEgd29yayB3aXRoIHRoZQorYGBieXRlc2BgIHR5cGUgZnJvbSBQeXRob24gMyAod2hpY2ggaXMgYSBzdWJzZXQgb2YgYGBzdHJgYCBpbiBQeXRob24gMiBhbmQgYWN0cworYXMgYW4gYWxpYXMgZm9yIGBgYnl0ZXNgYCB0eXBlIGluIFB5dGhvbiAyKS4gVXN1YWxseSB0aGUgYmlnZ2VzdCBpc3N1ZSBpcworcmVhbGl6aW5nIHdoaWNoIG1ldGhvZHMgZXhpc3Qgb24gd2hpY2ggdHlwZXMgaW4gUHl0aG9uIDIgJiAzIHNpbXVsdGFuZW91c2x5CiAoZm9yIHRleHQgdGhhdCdzIGBgdW5pY29kZWBgIGluIFB5dGhvbiAyIGFuZCBgYHN0cmBgIGluIFB5dGhvbiAzLCBmb3IgYmluYXJ5CiB0aGF0J3MgYGBzdHJgYC9gYGJ5dGVzYGAgaW4gUHl0aG9uIDIgYW5kIGBgYnl0ZXNgYCBpbiBQeXRob24gMykuIFRoZSBmb2xsb3dpbmcKIHRhYmxlIGxpc3RzIHRoZSAqKnVuaXF1ZSoqIG1ldGhvZHMgb2YgZWFjaCBkYXRhIHR5cGUgYWNyb3NzIFB5dGhvbiAyICYgMwogKGUuZy4sIHRoZSBgYGRlY29kZSgpYGAgbWV0aG9kIGlzIHVzYWJsZSBvbiB0aGUgZXF1aXZhbGVudCBiaW5hcnkgZGF0YSB0eXBlIGluCi1laXRoZXIgUHl0aG9uIDIgb3IgMywgYnV0IGl0IGNhbid0IGJlIHVzZWQgYnkgdGhlIHRleHQgZGF0YSB0eXBlIGNvbnNpc3RlbnRseQotYmV0d2VlbiBQeXRob24gMiBhbmQgMyBiZWNhdXNlIGBgc3RyYGAgaW4gUHl0aG9uIDMgZG9lc24ndCBoYXZlIHRoZSBtZXRob2QpLgorZWl0aGVyIFB5dGhvbiAyIG9yIDMsIGJ1dCBpdCBjYW4ndCBiZSB1c2VkIGJ5IHRoZSB0ZXh0dWFsIGRhdGEgdHlwZSBjb25zaXN0ZW50bHkKK2JldHdlZW4gUHl0aG9uIDIgYW5kIDMgYmVjYXVzZSBgYHN0cmBgIGluIFB5dGhvbiAzIGRvZXNuJ3QgaGF2ZSB0aGUgbWV0aG9kKS4gRG8KK25vdGUgdGhhdCBhcyBvZiBQeXRob24gMy41IHRoZSBgYF9fbW9kX19gYCBtZXRob2Qgd2FzIGFkZGVkIHRvIHRoZSBieXRlcyB0eXBlLgogCiA9PT09PT09PT09PT09PT09PT09PT09PT0gPT09PT09PT09PT09PT09PT09PT09CiAqKlRleHQgZGF0YSoqICAgICAgICAgICAgKipCaW5hcnkgZGF0YSoqCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1fX21vZF9fIChgYCVgYCBvcGVyYXRvcikKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFwgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KIGVuY29kZQpAQCAtMjMyLDEwICsyMzgsMTEgQEAKIGhhdmluZyB0byBrZWVwIHRyYWNrIG9mIHdoYXQgdHlwZSBvZiBkYXRhIHlvdSBhcmUgd29ya2luZyB3aXRoLgogCiBUaGUgbmV4dCBpc3N1ZSBpcyBtYWtpbmcgc3VyZSB5b3Uga25vdyB3aGV0aGVyIHRoZSBzdHJpbmcgbGl0ZXJhbHMgaW4geW91ciBjb2RlCi1yZXByZXNlbnQgdGV4dCBvciBiaW5hcnkgZGF0YS4gQXQgbWluaW11bSB5b3Ugc2hvdWxkIGFkZCBhIGBgYmBgIHByZWZpeCB0byBhbnkKLWxpdGVyYWwgdGhhdCBwcmVzZW50cyBiaW5hcnkgZGF0YS4gRm9yIHRleHQgeW91IHNob3VsZCBlaXRoZXIgdXNlIHRoZQotYGBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHNgYCBzdGF0ZW1lbnQgb3IgYWRkIGEgYGB1YGAgcHJlZml4IHRvCi10aGUgdGV4dCBsaXRlcmFsLgorcmVwcmVzZW50IHRleHQgb3IgYmluYXJ5IGRhdGEuIFlvdSBzaG91bGQgYWRkIGEgYGBiYGAgcHJlZml4IHRvIGFueQorbGl0ZXJhbCB0aGF0IHByZXNlbnRzIGJpbmFyeSBkYXRhLiBGb3IgdGV4dCB5b3Ugc2hvdWxkIGFkZCBhIGBgdWBgIHByZWZpeCB0bwordGhlIHRleHQgbGl0ZXJhbC4gKHRoZXJlIGlzIGEgOm1vZDpgX19mdXR1cmVfX2AgaW1wb3J0IHRvIGZvcmNlIGFsbCB1bnNwZWNpZmllZAorbGl0ZXJhbHMgdG8gYmUgVW5pY29kZSwgYnV0IHVzYWdlIGhhcyBzaG93biBpdCBpc24ndCBhcyBlZmZlY3RpdmUgYXMgYWRkaW5nIGEKK2BgYmBgIG9yIGBgdWBgIHByZWZpeCB0byBhbGwgbGl0ZXJhbHMgZXhwbGljaXRseSkKIAogQXMgcGFydCBvZiB0aGlzIGRpY2hvdG9teSB5b3UgYWxzbyBuZWVkIHRvIGJlIGNhcmVmdWwgYWJvdXQgb3BlbmluZyBmaWxlcy4KIFVubGVzcyB5b3UgaGF2ZSBiZWVuIHdvcmtpbmcgb24gV2luZG93cywgdGhlcmUgaXMgYSBjaGFuY2UgeW91IGhhdmUgbm90IGFsd2F5cwpAQCAtMjQzLDExICsyNTAsMTMgQEAKIGJpbmFyeSByZWFkaW5nKS4gIFVuZGVyIFB5dGhvbiAzLCBiaW5hcnkgZmlsZXMgYW5kIHRleHQgZmlsZXMgYXJlIGNsZWFybHkKIGRpc3RpbmN0IGFuZCBtdXR1YWxseSBpbmNvbXBhdGlibGU7IHNlZSB0aGUgOm1vZDpgaW9gIG1vZHVsZSBmb3IgZGV0YWlscy4KIFRoZXJlZm9yZSwgeW91ICoqbXVzdCoqIG1ha2UgYSBkZWNpc2lvbiBvZiB3aGV0aGVyIGEgZmlsZSB3aWxsIGJlIHVzZWQgZm9yCi1iaW5hcnkgYWNjZXNzIChhbGxvd2luZyBiaW5hcnkgZGF0YSB0byBiZSByZWFkIGFuZC9vciB3cml0dGVuKSBvciB0ZXh0IGFjY2VzcworYmluYXJ5IGFjY2VzcyAoYWxsb3dpbmcgYmluYXJ5IGRhdGEgdG8gYmUgcmVhZCBhbmQvb3Igd3JpdHRlbikgb3IgdGV4dHVhbCBhY2Nlc3MKIChhbGxvd2luZyB0ZXh0IGRhdGEgdG8gYmUgcmVhZCBhbmQvb3Igd3JpdHRlbikuIFlvdSBzaG91bGQgYWxzbyB1c2UgOmZ1bmM6YGlvLm9wZW5gCiBmb3Igb3BlbmluZyBmaWxlcyBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiA6ZnVuYzpgb3BlbmAgZnVuY3Rpb24gYXMgdGhlIDptb2Q6YGlvYAogbW9kdWxlIGlzIGNvbnNpc3RlbnQgZnJvbSBQeXRob24gMiB0byAzIHdoaWxlIHRoZSBidWlsdC1pbiA6ZnVuYzpgb3BlbmAgZnVuY3Rpb24KLWlzIG5vdCAoaW4gUHl0aG9uIDMgaXQncyBhY3R1YWxseSA6ZnVuYzpgaW8ub3BlbmApLgoraXMgbm90IChpbiBQeXRob24gMyBpdCdzIGFjdHVhbGx5IDpmdW5jOmBpby5vcGVuYCkuIERvIG5vdCBib3RoZXIgd2l0aCB0aGUKK291dGRhdGVkIHByYWN0aWNlIG9mIHVzaW5nIDpmdW5jOmBjb2RlY3Mub3BlbmAgYXMgdGhhdCdzIG9ubHkgbmVjZXNzYXJ5IGZvcgora2VlcGluZyBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDIuNS4KIAogVGhlIGNvbnN0cnVjdG9ycyBvZiBib3RoIGBgc3RyYGAgYW5kIGBgYnl0ZXNgYCBoYXZlIGRpZmZlcmVudCBzZW1hbnRpY3MgZm9yIHRoZQogc2FtZSBhcmd1bWVudHMgYmV0d2VlbiBQeXRob24gMiAmIDMuIFBhc3NpbmcgYW4gaW50ZWdlciB0byBgYGJ5dGVzYGAgaW4gUHl0aG9uIDIKQEAgLTI3NCwxMyArMjgzLDU4IEBACiAjLiBNYWtlIHN1cmUgdGhhdCB5b3VyIGNvZGUgdGhhdCB3b3JrcyB3aXRoIHRleHQgYWxzbyB3b3JrcyB3aXRoIGBgdW5pY29kZWBgIGFuZAogICAgY29kZSBmb3IgYmluYXJ5IGRhdGEgd29ya3Mgd2l0aCBgYGJ5dGVzYGAgaW4gUHl0aG9uIDIgKHNlZSB0aGUgdGFibGUgYWJvdmUKICAgIGZvciB3aGF0IG1ldGhvZHMgeW91IGNhbm5vdCB1c2UgZm9yIGVhY2ggdHlwZSkKLSMuIE1hcmsgYWxsIGJpbmFyeSBsaXRlcmFscyB3aXRoIGEgYGBiYGAgcHJlZml4LCB1c2UgYSBgYHVgYCBwcmVmaXggb3IKLSAgIDptb2Q6YF9fZnV0dXJlX19gIGltcG9ydCBzdGF0ZW1lbnQgZm9yIHRleHQgbGl0ZXJhbHMKKyMuIE1hcmsgYWxsIGJpbmFyeSBsaXRlcmFscyB3aXRoIGEgYGBiYGAgcHJlZml4LCB0ZXh0dWFsIGxpdGVyYWxzIHdpdGggYSBgYHVgYAorICAgcHJlZml4CiAjLiBEZWNvZGUgYmluYXJ5IGRhdGEgdG8gdGV4dCBhcyBzb29uIGFzIHBvc3NpYmxlLCBlbmNvZGUgdGV4dCBhcyBiaW5hcnkgZGF0YSBhcwogICAgbGF0ZSBhcyBwb3NzaWJsZQogIy4gT3BlbiBmaWxlcyB1c2luZyA6ZnVuYzpgaW8ub3BlbmAgYW5kIG1ha2Ugc3VyZSB0byBzcGVjaWZ5IHRoZSBgYGJgYCBtb2RlIHdoZW4KICAgIGFwcHJvcHJpYXRlCi0jLiBCZSBjYXJlZnVsIHdoZW4gaW5kZXhpbmcgYmluYXJ5IGRhdGEKKyMuIEJlIGNhcmVmdWwgd2hlbiBpbmRleGluZyBpbnRvIGJpbmFyeSBkYXRhCisKKworVXNlIGZlYXR1cmUgZGV0ZWN0aW9uIGluc3RlYWQgb2YgdmVyc2lvbiBkZXRlY3Rpb24KKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisKK0luZXZpdGFibHkgeW91IHdpbGwgaGF2ZSBjb2RlIHRoYXQgaGFzIHRvIGNob29zZSB3aGF0IHRvIGRvIGJhc2VkIG9uIHdoYXQKK3ZlcnNpb24gb2YgUHl0aG9uIGlzIHJ1bm5pbmcuIFRoZSBiZXN0IHdheSB0byBkbyB0aGlzIGlzIHdpdGggZmVhdHVyZSBkZXRlY3Rpb24KK29mIHdoZXRoZXIgdGhlIHZlcnNpb24gb2YgUHl0aG9uIHlvdSdyZSBydW5uaW5nIHVuZGVyIHN1cHBvcnRzIHdoYXQgeW91IG5lZWQuCitJZiBmb3Igc29tZSByZWFzb24gdGhhdCBkb2Vzbid0IHdvcmsgdGhlbiB5b3Ugc2hvdWxkIG1ha2UgdGhlIHZlcnNpb24gY2hlY2sgYmUKK2FnYWluc3QgUHl0aG9uIDIgYW5kIG5vdCBQeXRob24gMy4gVG8gaGVscCBleHBsYWluIHRoaXMsIGxldCdzIGxvb2sgYXQgYW4KK2V4YW1wbGUuCisKK0xldCdzIHByZXRlbmQgdGhhdCB5b3UgbmVlZCBhY2Nlc3MgdG8gYSBmZWF0dXJlIG9mIGltcG9ydGxpYl8gdGhhdAoraXMgYXZhaWxhYmxlIGluIFB5dGhvbidzIHN0YW5kYXJkIGxpYnJhcnkgc2luY2UgUHl0aG9uIDMuMyBhbmQgYXZhaWxhYmxlIGZvcgorUHl0aG9uIDIgdGhyb3VnaCBpbXBvcnRsaWIyXyBvbiBQeVBJLiBZb3UgbWlnaHQgYmUgdGVtcHRlZCB0byB3cml0ZSBjb2RlIHRvCithY2Nlc3MgZS5nLiB0aGUgYGBpbXBvcnRsaWIuYWJjYGAgbW9kdWxlIGJ5IGRvaW5nIHRoZSBmb2xsb3dpbmc6OgorCisgIGltcG9ydCBzeXMKKworICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID09IDM6CisgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgYWJjCisgIGVsc2U6CisgICAgICBmcm9tIGltcG9ydGxpYjIgaW1wb3J0IGFiYworCitUaGUgcHJvYmxlbSB3aXRoIHRoaXMgY29kZSBpcyB3aGF0IGhhcHBlbnMgd2hlbiBQeXRob24gNCBjb21lcyBvdXQ/IEl0IHdvdWxkCitiZSBiZXR0ZXIgdG8gdHJlYXQgUHl0aG9uIDIgYXMgdGhlIGV4Y2VwdGlvbmFsIGNhc2UgaW5zdGVhZCBvZiBQeXRob24gMyBhbmQKK2Fzc3VtZSB0aGF0IGZ1dHVyZSBQeXRob24gdmVyc2lvbnMgd2lsbCBiZSBtb3JlIGNvbXBhdGlibGUgd2l0aCBQeXRob24gMyB0aGFuCitQeXRob24gMjo6CisKKyAgaW1wb3J0IHN5cworCisgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gPiAyOgorICAgICAgZnJvbSBpbXBvcnRsaWIgaW1wb3J0IGFiYworICBlbHNlOgorICAgICAgZnJvbSBpbXBvcnRsaWIyIGltcG9ydCBhYmMKKworVGhlIGJlc3Qgc29sdXRpb24sIHRob3VnaCwgaXMgdG8gZG8gbm8gdmVyc2lvbiBkZXRlY3Rpb24gYXQgYWxsIGFuZCBpbnN0ZWFkIHJlbHkKK29uIGZlYXR1cmUgZGV0ZWN0aW9uLiBUaGF0IGF2b2lkcyBhbnkgcG90ZW50aWFsIGlzc3VlcyBvZiBnZXR0aW5nIHRoZSB2ZXJzaW9uCitkZXRlY3Rpb24gd3JvbmcgYW5kIGhlbHBzIGtlZXAgeW91IGZ1dHVyZS1jb21wYXRpYmxlOjoKKworICB0cnk6CisgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgYWJjCisgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgIGZyb20gaW1wb3J0bGliMiBpbXBvcnQgYWJjCisKIAogUHJldmVudCBjb21wYXRpYmlsaXR5IHJlZ3Jlc3Npb25zCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI5NiwxNCArMzUwLDEyIEBACiAgICAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKICAgICBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uCiAgICAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwogCiBZb3UgY2FuIGFsc28gcnVuIFB5dGhvbiAyIHdpdGggdGhlIGBgLTNgYCBmbGFnIHRvIGJlIHdhcm5lZCBhYm91dCB2YXJpb3VzCiBjb21wYXRpYmlsaXR5IGlzc3VlcyB5b3VyIGNvZGUgdHJpZ2dlcnMgZHVyaW5nIGV4ZWN1dGlvbi4gSWYgeW91IHR1cm4gd2FybmluZ3MKIGludG8gZXJyb3JzIHdpdGggYGAtV2Vycm9yYGAgdGhlbiB5b3UgY2FuIG1ha2Ugc3VyZSB0aGF0IHlvdSBkb24ndCBhY2NpZGVudGFsbHkKIG1pc3MgYSB3YXJuaW5nLgogCi0KIFlvdSBjYW4gYWxzbyB1c2UgdGhlIFB5bGludF8gcHJvamVjdCBhbmQgaXRzIGBgLS1weTNrYGAgZmxhZyB0byBsaW50IHlvdXIgY29kZQogdG8gcmVjZWl2ZSB3YXJuaW5ncyB3aGVuIHlvdXIgY29kZSBiZWdpbnMgdG8gZGV2aWF0ZSBmcm9tIFB5dGhvbiAzCiBjb21wYXRpYmlsaXR5LiBUaGlzIGFsc28gcHJldmVudHMgeW91IGZyb20gaGF2aW5nIHRvIHJ1biBNb2Rlcm5pemVfIG9yIEZ1dHVyaXplXwpAQCAtMzIwLDIyICszNzIsMjMgQEAKIHByb2plY3Qgd2FzIGNyZWF0ZWQgdG8gaGVscCB5b3UgZGV0ZXJtaW5lIHdoaWNoIHByb2plY3RzCiAtLSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IC0tIGFyZSBibG9ja2luZyB5b3UgZnJvbSBzdXBwb3J0aW5nIFB5dGhvbiAzLiBUaGVyZQogaXMgYm90aCBhIGNvbW1hbmQtbGluZSB0b29sIGFzIHdlbGwgYXMgYSB3ZWIgaW50ZXJmYWNlIGF0Ci1odHRwczovL2Nhbml1c2VweXRob24zLmNvbSAuCitodHRwczovL2Nhbml1c2VweXRob24zLmNvbS4KIAogVGhlIHByb2plY3QgYWxzbyBwcm92aWRlcyBjb2RlIHdoaWNoIHlvdSBjYW4gaW50ZWdyYXRlIGludG8geW91ciB0ZXN0IHN1aXRlIHNvCiB0aGF0IHlvdSB3aWxsIGhhdmUgYSBmYWlsaW5nIHRlc3Qgd2hlbiB5b3Ugbm8gbG9uZ2VyIGhhdmUgZGVwZW5kZW5jaWVzIGJsb2NraW5nCiB5b3UgZnJvbSB1c2luZyBQeXRob24gMy4gVGhpcyBhbGxvd3MgeW91IHRvIGF2b2lkIGhhdmluZyB0byBtYW51YWxseSBjaGVjayB5b3VyCiBkZXBlbmRlbmNpZXMgYW5kIHRvIGJlIG5vdGlmaWVkIHF1aWNrbHkgd2hlbiB5b3UgY2FuIHN0YXJ0IHJ1bm5pbmcgb24gUHl0aG9uIDMuCiAKKwogVXBkYXRlIHlvdXIgYGBzZXR1cC5weWBgIGZpbGUgdG8gZGVub3RlIFB5dGhvbiAzIGNvbXBhdGliaWxpdHkKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIE9uY2UgeW91ciBjb2RlIHdvcmtzIHVuZGVyIFB5dGhvbiAzLCB5b3Ugc2hvdWxkIHVwZGF0ZSB0aGUgY2xhc3NpZmllcnMgaW4KIHlvdXIgYGBzZXR1cC5weWBgIHRvIGNvbnRhaW4gYGBQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogM2BgIGFuZCB0byBub3QKLXNwZWNpZnkgc29sZSBQeXRob24gMiBzdXBwb3J0LiBUaGlzIHdpbGwgdGVsbAotYW55b25lIHVzaW5nIHlvdXIgY29kZSB0aGF0IHlvdSBzdXBwb3J0IFB5dGhvbiAyICoqYW5kKiogMy4gSWRlYWxseSB5b3Ugd2lsbAotYWxzbyB3YW50IHRvIGFkZCBjbGFzc2lmaWVycyBmb3IgZWFjaCBtYWpvci9taW5vciB2ZXJzaW9uIG9mIFB5dGhvbiB5b3Ugbm93Ci1zdXBwb3J0Lgorc3BlY2lmeSBzb2xlIFB5dGhvbiAyIHN1cHBvcnQuIFRoaXMgd2lsbCB0ZWxsIGFueW9uZSB1c2luZyB5b3VyIGNvZGUgdGhhdCB5b3UKK3N1cHBvcnQgUHl0aG9uIDIgKiphbmQqKiAzLiBJZGVhbGx5IHlvdSB3aWxsIGFsc28gd2FudCB0byBhZGQgY2xhc3NpZmllcnMgZm9yCitlYWNoIG1ham9yL21pbm9yIHZlcnNpb24gb2YgUHl0aG9uIHlvdSBub3cgc3VwcG9ydC4KKwogCiBVc2UgY29udGludW91cyBpbnRlZ3JhdGlvbiB0byBzdGF5IGNvbXBhdGlibGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMzQ3LDEwICs0MDAsMTIgQEAKIFB5dGhvbiAyIG9yIDMgc3VwcG9ydC4KIAogWW91IG1heSBhbHNvIHdhbnQgdG8gdXNlIHRoZSBgYC1iYmBgIGZsYWcgd2l0aCB0aGUgUHl0aG9uIDMgaW50ZXJwcmV0ZXIgdG8KLXRyaWdnZXIgYW4gZXhjZXB0aW9uIHdoZW4geW91IGFyZSBjb21wYXJpbmcgYnl0ZXMgdG8gc3RyaW5ncy4gVXN1YWxseSBpdCdzCi1zaW1wbHkgYGBGYWxzZWBgLCBidXQgaWYgeW91IG1hZGUgYSBtaXN0YWtlIGluIHlvdXIgc2VwYXJhdGlvbiBvZiB0ZXh0L2JpbmFyeQotZGF0YSBoYW5kbGluZyB5b3UgbWF5IGJlIGFjY2lkZW50YWxseSBjb21wYXJpbmcgdGV4dCBhbmQgYmluYXJ5IGRhdGEuIFRoaXMgZmxhZwotd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGF0IG9jY3VycyB0byBoZWxwIHRyYWNrIGRvd24gc3VjaCBjYXNlcy4KK3RyaWdnZXIgYW4gZXhjZXB0aW9uIHdoZW4geW91IGFyZSBjb21wYXJpbmcgYnl0ZXMgdG8gc3RyaW5ncyBvciBieXRlcyB0byBhbiBpbnQKKyh0aGUgbGF0dGVyIGlzIGF2YWlsYWJsZSBzdGFydGluZyBpbiBQeXRob24gMy41KS4gQnkgZGVmYXVsdCB0eXBlLWRpZmZlcmluZworY29tcGFyaXNvbnMgc2ltcGx5IHJldHVybiBgYEZhbHNlYGAsIGJ1dCBpZiB5b3UgbWFkZSBhIG1pc3Rha2UgaW4geW91cgorc2VwYXJhdGlvbiBvZiB0ZXh0L2JpbmFyeSBkYXRhIGhhbmRsaW5nIG9yIGluZGV4aW5nIG9uIGJ5dGVzIHlvdSB3b3VsZG4ndCBlYXNpbHkKK2ZpbmQgdGhlIG1pc3Rha2UuIFRoaXMgZmxhZyB3aWxsIHJhaXNlIGFuIGV4Y2VwdGlvbiB3aGVuIHRoZXNlIGtpbmRzIG9mCitjb21wYXJpc29ucyBvY2N1ciwgbWFraW5nIHRoZSBtaXN0YWtlIG11Y2ggZWFzaWVyIHRvIHRyYWNrIGRvd24uCiAKIEFuZCB0aGF0J3MgbW9zdGx5IGl0ISBBdCB0aGlzIHBvaW50IHlvdXIgY29kZSBiYXNlIGlzIGNvbXBhdGlibGUgd2l0aCBib3RoCiBQeXRob24gMiBhbmQgMyBzaW11bHRhbmVvdXNseS4gWW91ciB0ZXN0aW5nIHdpbGwgYWxzbyBiZSBzZXQgdXAgc28gdGhhdCB5b3UKQEAgLTM1OCwzNSArNDEzLDQwIEBACiB5b3UgdHlwaWNhbGx5IHJ1biB5b3VyIHRlc3RzIHVuZGVyIHdoaWxlIGRldmVsb3BpbmcuCiAKIAotRHJvcHBpbmcgUHl0aG9uIDIgc3VwcG9ydCBjb21wbGV0ZWx5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0NvbnNpZGVyIHVzaW5nIG9wdGlvbmFsIHN0YXRpYyB0eXBlIGNoZWNraW5nCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1JZiB5b3UgYXJlIGFibGUgdG8gZnVsbHkgZHJvcCBzdXBwb3J0IGZvciBQeXRob24gMiwgdGhlbiB0aGUgc3RlcHMgcmVxdWlyZWQKLXRvIHRyYW5zaXRpb24gdG8gUHl0aG9uIDMgc2ltcGxpZnkgZ3JlYXRseS4KLQotIy4gVXBkYXRlIHlvdXIgY29kZSB0byBvbmx5IHN1cHBvcnQgUHl0aG9uIDIuNwotIy4gTWFrZSBzdXJlIHlvdSBoYXZlIGdvb2QgdGVzdCBjb3ZlcmFnZSAoY292ZXJhZ2UucHlfIGNhbiBoZWxwKQotIy4gTGVhcm4gdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gUHl0aG9uIDIgJiAzCi0jLiBVc2UgMnRvM18gdG8gcmV3cml0ZSB5b3VyIGNvZGUgdG8gcnVuIG9ubHkgdW5kZXIgUHl0aG9uIDMKLQotQWZ0ZXIgdGhpcyB5b3VyIGNvZGUgd2lsbCBiZSBmdWxseSBQeXRob24gMyBjb21wbGlhbnQgYnV0IGluIGEgd2F5IHRoYXQgaXMgbm90Ci1zdXBwb3J0ZWQgYnkgUHl0aG9uIDIuIFlvdSBzaG91bGQgYWxzbyB1cGRhdGUgdGhlIGNsYXNzaWZpZXJzIGluIHlvdXIKLWBgc2V0dXAucHlgYCB0byBjb250YWluIGBgUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjogUHl0aG9uIDo6IDMgOjogT25seWBgLgorQW5vdGhlciB3YXkgdG8gaGVscCBwb3J0IHlvdXIgY29kZSBpcyB0byB1c2UgYSBzdGF0aWMgdHlwZSBjaGVja2VyIGxpa2UKK215cHlfIG9yIHB5dHlwZV8gb24geW91ciBjb2RlLiBUaGVzZSB0b29scyBjYW4gYmUgdXNlZCB0byBhbmFseXplIHlvdXIgY29kZSBhcworaWYgaXQncyBiZWluZyBydW4gdW5kZXIgUHl0aG9uIDIsIHRoZW4geW91IGNhbiBydW4gdGhlIHRvb2wgYSBzZWNvbmQgdGltZSBhcyBpZgoreW91ciBjb2RlIGlzIHJ1bm5pbmcgdW5kZXIgUHl0aG9uIDMuIEJ5IHJ1bm5pbmcgYSBzdGF0aWMgdHlwZSBjaGVja2VyIHR3aWNlIGxpa2UKK3RoaXMgeW91IGNhbiBkaXNjb3ZlciBpZiB5b3UncmUgZS5nLiBtaXN1c2luZyBiaW5hcnkgZGF0YSB0eXBlIGluIG9uZSB2ZXJzaW9uCitvZiBQeXRob24gY29tcGFyZWQgdG8gYW5vdGhlci4gSWYgeW91IGFkZCBvcHRpb25hbCB0eXBlIGhpbnRzIHRvIHlvdXIgY29kZSB5b3UKK2NhbiBhbHNvIGV4cGxpY2l0bHkgc3RhdGUgd2hldGhlciB5b3VyIEFQSXMgdXNlIHRleHR1YWwgb3IgYmluYXJ5IGRhdGEsIGhlbHBpbmcKK3RvIG1ha2Ugc3VyZSBldmVyeXRoaW5nIGZ1bmN0aW9ucyBhcyBleHBlY3RlZCBpbiBib3RoIHZlcnNpb25zIG9mIFB5dGhvbi4KIAogCiAuLiBfMnRvMzogaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5LzJ0bzMuaHRtbAotLi4gX2Nhbml1c2VweXRob24zOiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2Nhbml1c2VweXRob24zCisuLiBfY2FuaXVzZXB5dGhvbjM6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9jYW5pdXNlcHl0aG9uMwogLi4gX2NoZWF0IHNoZWV0OiBodHRwOi8vcHl0aG9uLWZ1dHVyZS5vcmcvY29tcGF0aWJsZV9pZGlvbXMuaHRtbAotLi4gX2NvdmVyYWdlLnB5OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2NvdmVyYWdlCisuLiBfY292ZXJhZ2UucHk6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9jb3ZlcmFnZQogLi4gX0Z1dHVyaXplOiBodHRwOi8vcHl0aG9uLWZ1dHVyZS5vcmcvYXV0b21hdGljX2NvbnZlcnNpb24uaHRtbAorLi4gX2ltcG9ydGxpYjogaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2ltcG9ydGxpYi5odG1sI21vZHVsZS1pbXBvcnRsaWIKKy4uIF9pbXBvcnRsaWIyOiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvaW1wb3J0bGliMgogLi4gX01vZGVybml6ZTogaHR0cHM6Ly9weXRob24tbW9kZXJuaXplLnJlYWR0aGVkb2NzLm9yZy9lbi9sYXRlc3QvCisuLiBfbXlweTogaHR0cDovL215cHktbGFuZy5vcmcvCiAuLiBfUG9ydGluZyB0byBQeXRob24gMzogaHR0cDovL3B5dGhvbjNwb3J0aW5nLmNvbS8KLS4uIF9QeWxpbnQ6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHlsaW50CisuLiBfUHlsaW50OiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvcHlsaW50CisKIC4uIF9QeXRob24gMyBRICYgQTogaHR0cHM6Ly9uY29naGxhbi1kZXZzLXB5dGhvbi1ub3Rlcy5yZWFkdGhlZG9jcy5vcmcvZW4vbGF0ZXN0L3B5dGhvbjMvcXVlc3Rpb25zX2FuZF9hbnN3ZXJzLmh0bWwKIAorLi4gX3B5dHlwZTogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9weXR5cGUKIC4uIF9weXRob24tZnV0dXJlOiBodHRwOi8vcHl0aG9uLWZ1dHVyZS5vcmcvCiAuLiBfcHl0aG9uLXBvcnRpbmc6IGh0dHBzOi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLXBvcnRpbmcKLS4uIF9zaXg6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc2l4Ci0uLiBfdG94OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3RveAotLi4gX3Ryb3ZlIGNsYXNzaWZpZXI6IGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk/JTNBYWN0aW9uPWxpc3RfY2xhc3NpZmllcnMKKy4uIF9zaXg6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9zaXgKKy4uIF90b3g6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC90b3gKKy4uIF90cm92ZSBjbGFzc2lmaWVyOiBodHRwczovL3B5cGkub3JnL2NsYXNzaWZpZXJzCisKIC4uIF8iV2hhdCdzIE5ldyI6IGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvd2hhdHNuZXcvaW5kZXguaHRtbAorCisuLiBfV2h5IFB5dGhvbiAzIGV4aXN0czogaHR0cDovL3d3dy5zbmFya3kuY2Evd2h5LXB5dGhvbi0zLWV4aXN0cwpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3JlZ2V4LnJzdCBiL0RvYy9ob3d0by9yZWdleC5yc3QKaW5kZXggMGQwZTlmNS4uMDgyZmMwMSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3JlZ2V4LnJzdAorKysgYi9Eb2MvaG93dG8vcmVnZXgucnN0CkBAIC04NDAsNyArODQwLDcgQEAKIAogRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgUkUgZGV0ZWN0cyBkb3VibGVkIHdvcmRzIGluIGEgc3RyaW5nLiA6OgogCi0gICA+Pj4gcCA9IHJlLmNvbXBpbGUocicoXGJcdyspXHMrXDEnKQorICAgPj4+IHAgPSByZS5jb21waWxlKHInXGIoXHcrKVxzK1wxXGInKQogICAgPj4+IHAuc2VhcmNoKCdQYXJpcyBpbiB0aGUgdGhlIHNwcmluZycpLmdyb3VwKCkKICAgICd0aGUgdGhlJwogCkBAIC05NDcsOSArOTQ3LDkgQEAKIGluc3RlYWQgb2YgdGhlIG51bWJlci4gVGhpcyBpcyBhbm90aGVyIFB5dGhvbiBleHRlbnNpb246IGBgKD9QPW5hbWUpYGAgaW5kaWNhdGVzCiB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUgZ3JvdXAgY2FsbGVkICpuYW1lKiBzaG91bGQgYWdhaW4gYmUgbWF0Y2hlZCBhdCB0aGUKIGN1cnJlbnQgcG9pbnQuICBUaGUgcmVndWxhciBleHByZXNzaW9uIGZvciBmaW5kaW5nIGRvdWJsZWQgd29yZHMsCi1gYChcYlx3KylccytcMWBgIGNhbiBhbHNvIGJlIHdyaXR0ZW4gYXMgYGAoP1A8d29yZD5cYlx3KylccysoP1A9d29yZClgYDo6CitgYFxiKFx3KylccytcMVxiYGAgY2FuIGFsc28gYmUgd3JpdHRlbiBhcyBgYFxiKD9QPHdvcmQ+XHcrKVxzKyg/UD13b3JkKVxiYGA6OgogCi0gICA+Pj4gcCA9IHJlLmNvbXBpbGUocicoP1A8d29yZD5cYlx3KylccysoP1A9d29yZCknKQorICAgPj4+IHAgPSByZS5jb21waWxlKHInXGIoP1A8d29yZD5cdyspXHMrKD9QPXdvcmQpXGInKQogICAgPj4+IHAuc2VhcmNoKCdQYXJpcyBpbiB0aGUgdGhlIHNwcmluZycpLmdyb3VwKCkKICAgICd0aGUgdGhlJwogCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vdW5pY29kZS5yc3QgYi9Eb2MvaG93dG8vdW5pY29kZS5yc3QKaW5kZXggYmY3ZWJmZi4uNjcyNDAzOSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3VuaWNvZGUucnN0CisrKyBiL0RvYy9ob3d0by91bmljb2RlLnJzdApAQCAtNDMsOSArNDMsOSBAQAogbWFjaGluZXMgYXNzaWduZWQgdmFsdWVzIGJldHdlZW4gMTI4IGFuZCAyNTUgdG8gYWNjZW50ZWQgY2hhcmFjdGVycy4gIERpZmZlcmVudAogbWFjaGluZXMgaGFkIGRpZmZlcmVudCBjb2RlcywgaG93ZXZlciwgd2hpY2ggbGVkIHRvIHByb2JsZW1zIGV4Y2hhbmdpbmcgZmlsZXMuCiBFdmVudHVhbGx5IHZhcmlvdXMgY29tbW9ubHkgdXNlZCBzZXRzIG9mIHZhbHVlcyBmb3IgdGhlIDEyOC0tMjU1IHJhbmdlIGVtZXJnZWQuCi1Tb21lIHdlcmUgdHJ1ZSBzdGFuZGFyZHMsIGRlZmluZWQgYnkgdGhlIEludGVybmF0aW9uYWwgU3RhbmRhcmRzIE9yZ2FuaXphdGlvbiwKLWFuZCBzb21lIHdlcmUgKipkZSBmYWN0byoqIGNvbnZlbnRpb25zIHRoYXQgd2VyZSBpbnZlbnRlZCBieSBvbmUgY29tcGFueSBvcgotYW5vdGhlciBhbmQgbWFuYWdlZCB0byBjYXRjaCBvbi4KK1NvbWUgd2VyZSB0cnVlIHN0YW5kYXJkcywgZGVmaW5lZCBieSB0aGUgSW50ZXJuYXRpb25hbCBPcmdhbml6YXRpb24gZm9yCitTdGFuZGFyZGl6YXRpb24sIGFuZCBzb21lIHdlcmUgKmRlIGZhY3RvKiBjb252ZW50aW9ucyB0aGF0IHdlcmUgaW52ZW50ZWQgYnkgb25lCitjb21wYW55IG9yIGFub3RoZXIgYW5kIG1hbmFnZWQgdG8gY2F0Y2ggb24uCiAKIDI1NSBjaGFyYWN0ZXJzIGFyZW4ndCB2ZXJ5IG1hbnkuICBGb3IgZXhhbXBsZSwgeW91IGNhbid0IGZpdCBib3RoIHRoZSBhY2NlbnRlZAogY2hhcmFjdGVycyB1c2VkIGluIFdlc3Rlcm4gRXVyb3BlIGFuZCB0aGUgQ3lyaWxsaWMgYWxwaGFiZXQgdXNlZCBmb3IgUnVzc2lhbgpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL3VybGxpYjIucnN0IGIvRG9jL2hvd3RvL3VybGxpYjIucnN0CmluZGV4IGY2Y2JhNzUuLmNlNjM5NDggMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by91cmxsaWIyLnJzdAorKysgYi9Eb2MvaG93dG8vdXJsbGliMi5yc3QKQEAgLTM0LDggKzM0LDggQEAKIG9uLiBUaGVzZSBhcmUgcHJvdmlkZWQgYnkgb2JqZWN0cyBjYWxsZWQgaGFuZGxlcnMgYW5kIG9wZW5lcnMuCiAKIHVybGxpYjIgc3VwcG9ydHMgZmV0Y2hpbmcgVVJMcyBmb3IgbWFueSAiVVJMIHNjaGVtZXMiIChpZGVudGlmaWVkIGJ5IHRoZSBzdHJpbmcKLWJlZm9yZSB0aGUgIjoiIGluIFVSTCAtIGZvciBleGFtcGxlICJmdHAiIGlzIHRoZSBVUkwgc2NoZW1lIG9mCi0iZnRwOi8vcHl0aG9uLm9yZy8iKSB1c2luZyB0aGVpciBhc3NvY2lhdGVkIG5ldHdvcmsgcHJvdG9jb2xzIChlLmcuIEZUUCwgSFRUUCkuCitiZWZvcmUgdGhlIGBgIjoiYGAgaW4gVVJMIC0gZm9yIGV4YW1wbGUgYGAiZnRwImBgIGlzIHRoZSBVUkwgc2NoZW1lIG9mCitgYCJmdHA6Ly9weXRob24ub3JnLyJgYCkgdXNpbmcgdGhlaXIgYXNzb2NpYXRlZCBuZXR3b3JrIHByb3RvY29scyAoZS5nLiBGVFAsIEhUVFApLgogVGhpcyB0dXRvcmlhbCBmb2N1c2VzIG9uIHRoZSBtb3N0IGNvbW1vbiBjYXNlLCBIVFRQLgogCiBGb3Igc3RyYWlnaHRmb3J3YXJkIHNpdHVhdGlvbnMgKnVybG9wZW4qIGlzIHZlcnkgZWFzeSB0byB1c2UuIEJ1dCBhcyBzb29uIGFzIHlvdQpAQCAtMjAzLDcgKzIwMyw3IEBACiAKICAgICA+Pj4gcmVxID0gdXJsbGliMi5SZXF1ZXN0KCdodHRwOi8vd3d3LnByZXRlbmRfc2VydmVyLm9yZycpCiAgICAgPj4+IHRyeTogdXJsbGliMi51cmxvcGVuKHJlcSkKLSAgICAuLi4gZXhjZXB0IFVSTEVycm9yIGFzIGU6CisgICAgLi4uIGV4Y2VwdCB1cmxsaWIyLlVSTEVycm9yIGFzIGU6CiAgICAgLi4uICAgIHByaW50IGUucmVhc29uICAgI2RvY3Rlc3Q6ICtTS0lQCiAgICAgLi4uCiAgICAgKDQsICdnZXRhZGRyaW5mbyBmYWlsZWQnKQpAQCAtNDk4LDEwICs0OTgsMTAgQEAKIAogYGB0b3BfbGV2ZWxfdXJsYGAgaXMgaW4gZmFjdCAqZWl0aGVyKiBhIGZ1bGwgVVJMIChpbmNsdWRpbmcgdGhlICdodHRwOicgc2NoZW1lCiBjb21wb25lbnQgYW5kIHRoZSBob3N0bmFtZSBhbmQgb3B0aW9uYWxseSB0aGUgcG9ydCBudW1iZXIpCi1lLmcuICJodHRwOi8vZXhhbXBsZS5jb20vIiAqb3IqIGFuICJhdXRob3JpdHkiIChpLmUuIHRoZSBob3N0bmFtZSwKLW9wdGlvbmFsbHkgaW5jbHVkaW5nIHRoZSBwb3J0IG51bWJlcikgZS5nLiAiZXhhbXBsZS5jb20iIG9yICJleGFtcGxlLmNvbTo4MDgwIgorZS5nLiBgYCJodHRwOi8vZXhhbXBsZS5jb20vImBgICpvciogYW4gImF1dGhvcml0eSIgKGkuZS4gdGhlIGhvc3RuYW1lLAorb3B0aW9uYWxseSBpbmNsdWRpbmcgdGhlIHBvcnQgbnVtYmVyKSBlLmcuIGBgImV4YW1wbGUuY29tImBgIG9yIGBgImV4YW1wbGUuY29tOjgwODAiYGAKICh0aGUgbGF0dGVyIGV4YW1wbGUgaW5jbHVkZXMgYSBwb3J0IG51bWJlcikuICBUaGUgYXV0aG9yaXR5LCBpZiBwcmVzZW50LCBtdXN0Ci1OT1QgY29udGFpbiB0aGUgInVzZXJpbmZvIiBjb21wb25lbnQgLSBmb3IgZXhhbXBsZSAiam9lOnBhc3N3b3JkQGV4YW1wbGUuY29tIiBpcworTk9UIGNvbnRhaW4gdGhlICJ1c2VyaW5mbyIgY29tcG9uZW50IC0gZm9yIGV4YW1wbGUgYGAiam9lOnBhc3N3b3JkQGV4YW1wbGUuY29tImBgIGlzCiBub3QgY29ycmVjdC4KIAogCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vd2Vic2VydmVycy5yc3QgYi9Eb2MvaG93dG8vd2Vic2VydmVycy5yc3QKaW5kZXggYTU1NTA4My4uNTA3MWE4YSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL3dlYnNlcnZlcnMucnN0CisrKyBiL0RvYy9ob3d0by93ZWJzZXJ2ZXJzLnJzdApAQCAtMzAxLDcgKzMwMSw3IEBACiAgICAgV1NHSVNlcnZlcihhcHApLnJ1bigpCiAKIFRoaXMgaXMgYSBzaW1wbGUgV1NHSSBhcHBsaWNhdGlvbiwgYnV0IHlvdSBuZWVkIHRvIGluc3RhbGwgYGZsdXAKLTxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2ZsdXAvMS4wPmBfIGZpcnN0LCBhcyBmbHVwIGhhbmRsZXMgdGhlIGxvdyBsZXZlbAorPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9mbHVwLzEuMD5gXyBmaXJzdCwgYXMgZmx1cCBoYW5kbGVzIHRoZSBsb3cgbGV2ZWwKIEZhc3RDR0kgYWNjZXNzLgogCiAuLiBzZWVhbHNvOjoKQEAgLTU4Myw3ICs1ODMsNyBAQAogICAgICBoZWxwcyB3aXRoIGNob29zaW5nIGEgbWV0aG9kIGZvciBzYXZpbmcgZGF0YQogCiAgICAqIGBTUUxBbGNoZW15IDxodHRwOi8vd3d3LnNxbGFsY2hlbXkub3JnLz5gXywgdGhlIG1vc3QgcG93ZXJmdWwgT1ItTWFwcGVyCi0gICAgIGZvciBQeXRob24sIGFuZCBgRWxpeGlyIDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL0VsaXhpcj5gXywgd2hpY2ggbWFrZXMKKyAgICAgZm9yIFB5dGhvbiwgYW5kIGBFbGl4aXIgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9FbGl4aXI+YF8sIHdoaWNoIG1ha2VzCiAgICAgIFNRTEFsY2hlbXkgZWFzaWVyIHRvIHVzZQogCiAgICAqIGBTUUxPYmplY3QgPGh0dHA6Ly93d3cuc3Fsb2JqZWN0Lm9yZy8+YF8sIGFub3RoZXIgcG9wdWxhciBPUi1NYXBwZXIKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9ub2RkeS5jIGIvRG9jL2luY2x1ZGVzL25vZGR5LmMKaW5kZXggZWMyZDY2OS4uOWQ4MGJiZSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL25vZGR5LmMKKysrIGIvRG9jL2luY2x1ZGVzL25vZGR5LmMKQEAgLTYsMjcgKzYsMjYgQEAKIH0gbm9kZHlfTm9kZHlPYmplY3Q7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3Qgbm9kZHlfTm9kZHlUeXBlID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qb2Jfc2l6ZSovCi0gICAgIm5vZGR5Lk5vZGR5IiwgICAgICAgICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2Yobm9kZHlfTm9kZHlPYmplY3QpLCAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQsICAgICAgICAvKnRwX2ZsYWdzKi8KKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAibm9kZHkuTm9kZHkiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKG5vZGR5X05vZGR5T2JqZWN0KSwgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxULCAgICAgICAgLyogdHBfZmxhZ3MgKi8KICAgICAiTm9kZHkgb2JqZWN0cyIsICAgICAgICAgICAvKiB0cF9kb2MgKi8KIH07CiAKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9ub2RkeTIuYyBiL0RvYy9pbmNsdWRlcy9ub2RkeTIuYwppbmRleCAyY2FmOTg1Li45NGI5MmJlIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvbm9kZHkyLmMKKysrIGIvRG9jL2luY2x1ZGVzL25vZGR5Mi5jCkBAIC0xMyw3ICsxMyw3IEBACiB7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5maXJzdCk7CiAgICAgUHlfWERFQ1JFRihzZWxmLT5sYXN0KTsKLSAgICBzZWxmLT5vYl90eXBlLT50cF9mcmVlKChQeU9iamVjdCopc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QqKXNlbGYpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMjQsMTggKzI0LDE2IEBACiAgICAgc2VsZiA9IChOb2RkeSAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwogICAgIGlmIChzZWxmICE9IE5VTEwpIHsKICAgICAgICAgc2VsZi0+Zmlyc3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpCi0gICAgICAgICAgeworICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgfQotICAgICAgICAKKyAgICAgICAgfQorCiAgICAgICAgIHNlbGYtPmxhc3QgPSBQeVN0cmluZ19Gcm9tU3RyaW5nKCIiKTsKLSAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KKyAgICAgICAgfQogCiAgICAgICAgIHNlbGYtPm51bWJlciA9IDA7CiAgICAgfQpAQCAtNTAsMTAgKzQ4LDEwIEBACiAKICAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7ImZpcnN0IiwgImxhc3QiLCAibnVtYmVyIiwgTlVMTH07CiAKLSAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LCAKKyAgICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgInxPT2kiLCBrd2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzZWxmLT5udW1iZXIpKQotICAgICAgICByZXR1cm4gLTE7IAorICAgICAgICByZXR1cm4gLTE7CiAKICAgICBpZiAoZmlyc3QpIHsKICAgICAgICAgdG1wID0gc2VsZi0+Zmlyc3Q7CkBAIC0xMTEsNyArMTA5LDcgQEAKIAogICAgIHJlc3VsdCA9IFB5U3RyaW5nX0Zvcm1hdChmb3JtYXQsIGFyZ3MpOwogICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAKKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTEyMywzNCArMTIxLDM0IEBACiB9OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IE5vZGR5VHlwZSA9IHsKLSAgICBQeU9iamVjdF9IRUFEX0lOSVQoTlVMTCkKLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKm9iX3NpemUqLwotICAgICJub2RkeS5Ob2RkeSIsICAgICAgICAgICAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKE5vZGR5KSwgICAgICAgICAgICAgLyp0cF9iYXNpY3NpemUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwotICAgIChkZXN0cnVjdG9yKU5vZGR5X2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9wcmludCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY29tcGFyZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9yZXByKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19zZXF1ZW5jZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19tYXBwaW5nKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NhbGwqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc3RyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3NldGF0dHJvKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX2J1ZmZlciovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSwgLyp0cF9mbGFncyovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIm5vZGR5Lk5vZGR5IiwgICAgICAgICAgICAgLyogdHBfbmFtZSAqLworICAgIHNpemVvZihOb2RkeSksICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCisgICAgKGRlc3RydWN0b3IpTm9kZHlfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8CisgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsICAgLyogdHBfZmxhZ3MgKi8KICAgICAiTm9kZHkgb2JqZWN0cyIsICAgICAgICAgICAvKiB0cF9kb2MgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCiAgICAgTm9kZHlfbWV0aG9kcywgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLwogICAgIE5vZGR5X21lbWJlcnMsICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRzZXQgKi8KQEAgLTE3Miw3ICsxNzAsNyBAQAogI2RlZmluZSBQeU1PRElOSVRfRlVOQyB2b2lkCiAjZW5kaWYKIFB5TU9ESU5JVF9GVU5DCi1pbml0bm9kZHkyKHZvaWQpIAoraW5pdG5vZGR5Mih2b2lkKQogewogICAgIFB5T2JqZWN0KiBtOwogCkBAIC0xODMsNyArMTgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIkV4YW1wbGUgbW9kdWxlIHRoYXQgY3JlYXRlcyBhbiBleHRlbnNpb24gdHlwZS4iKTsKIAogICAgIGlmIChtID09IE5VTEwpCi0gICAgICByZXR1cm47CisgICAgICAgIHJldHVybjsKIAogICAgIFB5X0lOQ1JFRigmTm9kZHlUeXBlKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIk5vZGR5IiwgKFB5T2JqZWN0ICopJk5vZGR5VHlwZSk7CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvbm9kZHkzLmMgYi9Eb2MvaW5jbHVkZXMvbm9kZHkzLmMKaW5kZXggNjAyNjBhZC4uNDNlYzQyYiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL25vZGR5My5jCisrKyBiL0RvYy9pbmNsdWRlcy9ub2RkeTMuYwpAQCAtMTMsNyArMTMsNyBAQAogewogICAgIFB5X1hERUNSRUYoc2VsZi0+Zmlyc3QpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+bGFzdCk7Ci0gICAgc2VsZi0+b2JfdHlwZS0+dHBfZnJlZSgoUHlPYmplY3QqKXNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0KilzZWxmKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI0LDE4ICsyNCwxNiBAQAogICAgIHNlbGYgPSAoTm9kZHkgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKICAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CiAgICAgICAgIHNlbGYtPmZpcnN0ID0gUHlTdHJpbmdfRnJvbVN0cmluZygiIik7Ci0gICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKQotICAgICAgICAgIHsKKyAgICAgICAgaWYgKHNlbGYtPmZpcnN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgIH0KLSAgICAgICAgCisgICAgICAgIH0KKwogICAgICAgICBzZWxmLT5sYXN0ID0gUHlTdHJpbmdfRnJvbVN0cmluZygiIik7Ci0gICAgICAgIGlmIChzZWxmLT5sYXN0ID09IE5VTEwpCi0gICAgICAgICAgeworICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBzZWxmLT5udW1iZXIgPSAwOwogICAgIH0KQEAgLTUwLDEwICs0OCwxMCBAQAogCiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJmaXJzdCIsICJsYXN0IiwgIm51bWJlciIsIE5VTEx9OwogCi0gICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8U1NpIiwga3dsaXN0LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmbGFzdCwgCisgICAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8U1NpIiwga3dsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3QsICZsYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc2VsZi0+bnVtYmVyKSkKLSAgICAgICAgcmV0dXJuIC0xOyAKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgaWYgKGZpcnN0KSB7CiAgICAgICAgIHRtcCA9IHNlbGYtPmZpcnN0OwpAQCAtODgsMjIgKzg2LDIyIEBACiBzdGF0aWMgaW50CiBOb2RkeV9zZXRmaXJzdChOb2RkeSAqc2VsZiwgUHlPYmplY3QgKnZhbHVlLCB2b2lkICpjbG9zdXJlKQogewotICBpZiAodmFsdWUgPT0gTlVMTCkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJDYW5ub3QgZGVsZXRlIHRoZSBmaXJzdCBhdHRyaWJ1dGUiKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgCi0gIGlmICghIFB5U3RyaW5nX0NoZWNrKHZhbHVlKSkgewotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsIAotICAgICAgICAgICAgICAgICAgICAiVGhlIGZpcnN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gICAgICAKLSAgUHlfREVDUkVGKHNlbGYtPmZpcnN0KTsKLSAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgc2VsZi0+Zmlyc3QgPSB2YWx1ZTsgICAgCisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGZpcnN0IGF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gIHJldHVybiAwOworICAgIGlmICghIFB5U3RyaW5nX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaXJzdCBhdHRyaWJ1dGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKHNlbGYtPmZpcnN0KTsKKyAgICBQeV9JTkNSRUYodmFsdWUpOworICAgIHNlbGYtPmZpcnN0ID0gdmFsdWU7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExNiwzMCArMTE0LDMwIEBACiBzdGF0aWMgaW50CiBOb2RkeV9zZXRsYXN0KE5vZGR5ICpzZWxmLCBQeU9iamVjdCAqdmFsdWUsIHZvaWQgKmNsb3N1cmUpCiB7Ci0gIGlmICh2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgIkNhbm5vdCBkZWxldGUgdGhlIGxhc3QgYXR0cmlidXRlIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIAotICBpZiAoISBQeVN0cmluZ19DaGVjayh2YWx1ZSkpIHsKLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAKLSAgICAgICAgICAgICAgICAgICAgIlRoZSBsYXN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gICAgICAKLSAgUHlfREVDUkVGKHNlbGYtPmxhc3QpOwotICBQeV9JTkNSRUYodmFsdWUpOwotICBzZWxmLT5sYXN0ID0gdmFsdWU7ICAgIAorICAgIGlmICh2YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJDYW5ub3QgZGVsZXRlIHRoZSBsYXN0IGF0dHJpYnV0ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCi0gIHJldHVybiAwOworICAgIGlmICghIFB5U3RyaW5nX0NoZWNrKHZhbHVlKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBsYXN0IGF0dHJpYnV0ZSB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoc2VsZi0+bGFzdCk7CisgICAgUHlfSU5DUkVGKHZhbHVlKTsKKyAgICBzZWxmLT5sYXN0ID0gdmFsdWU7CisKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5R2V0U2V0RGVmIE5vZGR5X2dldHNldGVyc1tdID0gewotICAgIHsiZmlyc3QiLCAKKyAgICB7ImZpcnN0IiwKICAgICAgKGdldHRlcilOb2RkeV9nZXRmaXJzdCwgKHNldHRlcilOb2RkeV9zZXRmaXJzdCwKICAgICAgImZpcnN0IG5hbWUiLAogICAgICBOVUxMfSwKLSAgICB7Imxhc3QiLCAKKyAgICB7Imxhc3QiLAogICAgICAoZ2V0dGVyKU5vZGR5X2dldGxhc3QsIChzZXR0ZXIpTm9kZHlfc2V0bGFzdCwKICAgICAgImxhc3QgbmFtZSIsCiAgICAgIE5VTEx9LApAQCAtMTY0LDcgKzE2Miw3IEBACiAKICAgICByZXN1bHQgPSBQeVN0cmluZ19Gb3JtYXQoZm9ybWF0LCBhcmdzKTsKICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgCisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xNzYsMzQgKzE3NCwzNCBAQAogfTsKIAogc3RhdGljIFB5VHlwZU9iamVjdCBOb2RkeVR5cGUgPSB7Ci0gICAgUHlPYmplY3RfSEVBRF9JTklUKE5VTEwpCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLypvYl9zaXplKi8KLSAgICAibm9kZHkuTm9kZHkiLCAgICAgICAgICAgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihOb2RkeSksICAgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KLSAgICAoZGVzdHJ1Y3RvcilOb2RkeV9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NvbXBhcmUqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19udW1iZXIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfc2VxdWVuY2UqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9oYXNoICovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jYWxsKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3N0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zZXRhdHRybyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9hc19idWZmZXIqLwotICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJub2RkeS5Ob2RkeSIsICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2YoTm9kZHkpLCAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLworICAgIChkZXN0cnVjdG9yKU5vZGR5X2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfAorICAgICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgIC8qIHRwX2ZsYWdzICovCiAgICAgIk5vZGR5IG9iamVjdHMiLCAgICAgICAgICAgLyogdHBfZG9jICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KLSAgICAwLAkJICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIE5vZGR5X21ldGhvZHMsICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBOb2RkeV9tZW1iZXJzLCAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgTm9kZHlfZ2V0c2V0ZXJzLCAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCkBAIC0yMjUsNyArMjIzLDcgQEAKICNkZWZpbmUgUHlNT0RJTklUX0ZVTkMgdm9pZAogI2VuZGlmCiBQeU1PRElOSVRfRlVOQwotaW5pdG5vZGR5Myh2b2lkKSAKK2luaXRub2RkeTModm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApAQCAtMjM2LDcgKzIzNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICJFeGFtcGxlIG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW4gZXh0ZW5zaW9uIHR5cGUuIik7CiAKICAgICBpZiAobSA9PSBOVUxMKQotICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm47CiAKICAgICBQeV9JTkNSRUYoJk5vZGR5VHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJOb2RkeSIsIChQeU9iamVjdCAqKSZOb2RkeVR5cGUpOwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL25vZGR5NC5jIGIvRG9jL2luY2x1ZGVzL25vZGR5NC5jCmluZGV4IDg3OGUwODYuLjBmZDRkYzMgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9ub2RkeTQuYworKysgYi9Eb2MvaW5jbHVkZXMvbm9kZHk0LmMKQEAgLTI3LDcgKzI3LDcgQEAKICAgICByZXR1cm4gMDsKIH0KIAotc3RhdGljIGludCAKK3N0YXRpYyBpbnQKIE5vZGR5X2NsZWFyKE5vZGR5ICpzZWxmKQogewogICAgIFB5T2JqZWN0ICp0bXA7CkBAIC00Niw4ICs0Niw5IEBACiBzdGF0aWMgdm9pZAogTm9kZHlfZGVhbGxvYyhOb2RkeSogc2VsZikKIHsKKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKHNlbGYpOwogICAgIE5vZGR5X2NsZWFyKHNlbGYpOwotICAgIHNlbGYtPm9iX3R5cGUtPnRwX2ZyZWUoKFB5T2JqZWN0KilzZWxmKTsKKyAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKChQeU9iamVjdCopc2VsZik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC01OCwxOCArNTksMTYgQEAKICAgICBzZWxmID0gKE5vZGR5ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CiAgICAgaWYgKHNlbGYgIT0gTlVMTCkgewogICAgICAgICBzZWxmLT5maXJzdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+Zmlyc3QgPT0gTlVMTCkKLSAgICAgICAgICB7CisgICAgICAgIGlmIChzZWxmLT5maXJzdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICB9Ci0gICAgICAgIAorICAgICAgICB9CisKICAgICAgICAgc2VsZi0+bGFzdCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcoIiIpOwotICAgICAgICBpZiAoc2VsZi0+bGFzdCA9PSBOVUxMKQotICAgICAgICAgIHsKKyAgICAgICAgaWYgKHNlbGYtPmxhc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgc2VsZi0+bnVtYmVyID0gMDsKICAgICB9CkBAIC04NCwxMCArODMsMTAgQEAKIAogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiZmlyc3QiLCAibGFzdCIsICJudW1iZXIiLCBOVUxMfTsKIAotICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PaSIsIGt3bGlzdCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmaXJzdCwgJmxhc3QsIAorICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAifE9PaSIsIGt3bGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZpcnN0LCAmbGFzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlbGYtPm51bWJlcikpCi0gICAgICAgIHJldHVybiAtMTsgCisgICAgICAgIHJldHVybiAtMTsKIAogICAgIGlmIChmaXJzdCkgewogICAgICAgICB0bXAgPSBzZWxmLT5maXJzdDsKQEAgLTE0NSw3ICsxNDQsNyBAQAogCiAgICAgcmVzdWx0ID0gUHlTdHJpbmdfRm9ybWF0KGZvcm1hdCwgYXJncyk7CiAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgIAorCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTU3LDM0ICsxNTYsMzUgQEAKIH07CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgTm9kZHlUeXBlID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qb2Jfc2l6ZSovCi0gICAgIm5vZGR5Lk5vZGR5IiwgICAgICAgICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YoTm9kZHkpLCAgICAgICAgICAgICAvKnRwX2Jhc2ljc2l6ZSovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCi0gICAgKGRlc3RydWN0b3IpTm9kZHlfZGVhbGxvYywgLyp0cF9kZWFsbG9jKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3ByaW50Ki8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2dldGF0dHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9jb21wYXJlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JlcHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbnVtYmVyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2FzX21hcHBpbmcqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaGFzaCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCovCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9zdHIqLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8qLwotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAvKnRwX2ZsYWdzKi8KKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAibm9kZHkuTm9kZHkiLCAgICAgICAgICAgICAvKiB0cF9uYW1lICovCisgICAgc2l6ZW9mKE5vZGR5KSwgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilOb2RkeV9kZWFsbG9jLCAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwKKyAgICAgICAgUHlfVFBGTEFHU19CQVNFVFlQRSB8CisgICAgICAgIFB5X1RQRkxBR1NfSEFWRV9HQywgICAgLyogdHBfZmxhZ3MgKi8KICAgICAiTm9kZHkgb2JqZWN0cyIsICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAodHJhdmVyc2Vwcm9jKU5vZGR5X3RyYXZlcnNlLCAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgKGlucXVpcnkpTm9kZHlfY2xlYXIsICAgICAgICAgICAvKiB0cF9jbGVhciAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLwotICAgIDAsCQkgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCi0gICAgMCwJCSAgICAgICAgICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLwogICAgIE5vZGR5X21ldGhvZHMsICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KICAgICBOb2RkeV9tZW1iZXJzLCAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0c2V0ICovCkBAIC0yMDYsNyArMjA2LDcgQEAKICNkZWZpbmUgUHlNT0RJTklUX0ZVTkMgdm9pZAogI2VuZGlmCiBQeU1PRElOSVRfRlVOQwotaW5pdG5vZGR5NCh2b2lkKSAKK2luaXRub2RkeTQodm9pZCkKIHsKICAgICBQeU9iamVjdCogbTsKIApAQCAtMjE3LDcgKzIxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICJFeGFtcGxlIG1vZHVsZSB0aGF0IGNyZWF0ZXMgYW4gZXh0ZW5zaW9uIHR5cGUuIik7CiAKICAgICBpZiAobSA9PSBOVUxMKQotICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm47CiAKICAgICBQeV9JTkNSRUYoJk5vZGR5VHlwZSk7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJOb2RkeSIsIChQeU9iamVjdCAqKSZOb2RkeVR5cGUpOwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMgYi9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYwppbmRleCA1YTdkZjBkLi44Mjc2YjAxIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYworKysgYi9Eb2MvaW5jbHVkZXMvcnVuLWZ1bmMuYwpAQCAtMyw3ICszLDcgQEAKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogewotICAgIFB5T2JqZWN0ICpwTmFtZSwgKnBNb2R1bGUsICpwRGljdCwgKnBGdW5jOworICAgIFB5T2JqZWN0ICpwTmFtZSwgKnBNb2R1bGUsICpwRnVuYzsKICAgICBQeU9iamVjdCAqcEFyZ3MsICpwVmFsdWU7CiAgICAgaW50IGk7CiAKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9zZXR1cC5weSBiL0RvYy9pbmNsdWRlcy9zZXR1cC5weQppbmRleCBiODUzZDIzLi5hMzhhMzlkIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvc2V0dXAucHkKKysrIGIvRG9jL2luY2x1ZGVzL3NldHVwLnB5CkBAIC01LDQgKzUsNSBAQAogICAgICAgICAgRXh0ZW5zaW9uKCJub2RkeTIiLCBbIm5vZGR5Mi5jIl0pLAogICAgICAgICAgRXh0ZW5zaW9uKCJub2RkeTMiLCBbIm5vZGR5My5jIl0pLAogICAgICAgICAgRXh0ZW5zaW9uKCJub2RkeTQiLCBbIm5vZGR5NC5jIl0pLAorICAgICAgICAgRXh0ZW5zaW9uKCJzaG9kZHkiLCBbInNob2RkeS5jIl0pLAogICAgICAgICAgXSkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9zaG9kZHkuYyBiL0RvYy9pbmNsdWRlcy9zaG9kZHkuYwppbmRleCAwN2E0MTc3Li40Y2IzOWRiIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvc2hvZGR5LmMKKysrIGIvRG9jL2luY2x1ZGVzL3Nob2RkeS5jCkBAIC0zMSw4ICszMSw3IEBACiAKIAogc3RhdGljIFB5VHlwZU9iamVjdCBTaG9kZHlUeXBlID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiBvYl9zaXplICovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgInNob2RkeS5TaG9kZHkiLCAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoU2hvZGR5KSwgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCkBAIC01Miw3ICs1MSw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLwogICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8Ci0gICAgICBQeV9UUEZMQUdTX0JBU0VUWVBFLCAgIC8qIHRwX2ZsYWdzICovCisgICAgICAgIFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qIHRwX2ZsYWdzICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL3NxbGl0ZTMvbG9hZF9leHRlbnNpb24ucHkgYi9Eb2MvaW5jbHVkZXMvc3FsaXRlMy9sb2FkX2V4dGVuc2lvbi5weQppbmRleCA3Zjg5M2M5Li5mMWE5MmIzIDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvc3FsaXRlMy9sb2FkX2V4dGVuc2lvbi5weQorKysgYi9Eb2MvaW5jbHVkZXMvc3FsaXRlMy9sb2FkX2V4dGVuc2lvbi5weQpAQCAtMTEsNyArMTEsNyBAQAogIyBhbHRlcm5hdGl2ZWx5IHlvdSBjYW4gbG9hZCB0aGUgZXh0ZW5zaW9uIHVzaW5nIGFuIEFQSSBjYWxsOgogIyBjb24ubG9hZF9leHRlbnNpb24oIi4vZnRzMy5zbyIpCiAKLSMgZGlzYWJsZSBleHRlbnNpb24gbGFvZGluZyBhZ2FpbgorIyBkaXNhYmxlIGV4dGVuc2lvbiBsb2FkaW5nIGFnYWluCiBjb24uZW5hYmxlX2xvYWRfZXh0ZW5zaW9uKEZhbHNlKQogCiAjIGV4YW1wbGUgZnJvbSBTUUxpdGUgd2lraQpkaWZmIC0tZ2l0IGEvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0IGIvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0CmluZGV4IGU1YjMxNjUuLjliODlkMDggMTAwNjQ0Ci0tLSBhL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdAorKysgYi9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QKQEAgLTM5LDkgKzM5LDggQEAKICAgYmVpbmcgaW5zdGFsbGVkIHN5c3RlbSB3aWRlCiAqIGBgdmlydHVhbGVudmBgIGlzIGEgdGhpcmQgcGFydHkgdG9vbHMgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLCBpdAogICBpcyBkZWZhdWx0cyB0byBpbnN0YWxsaW5nIGBgcGlwYGAgaW50byBhbGwgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50cy4KLSogdGhlIGBQeXRob24gUGFja2FnaW5nIEluZGV4IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPmBfXyBpcyBhIHB1YmxpYwotICByZXBvc2l0b3J5IG9mIG9wZW4gc291cmNlIGxpY2Vuc2VkIHBhY2thZ2VzIG1hZGUgYXZhaWxhYmxlIGZvciB1c2UgYnkKLSAgb3RoZXIgUHl0aG9uIHVzZXJzCisqIHRoZSBgUHl0aG9uIFBhY2thZ2luZyBJbmRleCA8aHR0cHM6Ly9weXBpLm9yZz5gX18gaXMgYSBwdWJsaWMgcmVwb3NpdG9yeSBvZgorICBvcGVuIHNvdXJjZSBsaWNlbnNlZCBwYWNrYWdlcyBtYWRlIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IG90aGVyIFB5dGhvbiB1c2VycwogKiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgQXV0aG9yaXR5CiAgIDxodHRwczovL3d3dy5weXBhLmlvL2VuL2xhdGVzdC8+YF9fIGFyZSB0aGUgZ3JvdXAgb2YKICAgZGV2ZWxvcGVycyBhbmQgZG9jdW1lbnRhdGlvbiBhdXRob3JzIHJlc3BvbnNpYmxlIGZvciB0aGUgbWFpbnRlbmFuY2UgYW5kCkBAIC0xOTMsNiArMTkyLDE3IEBACiBwZXItdXNlciBpbnN0YWxsYXRpb24gd2hlbiBpbnN0YWxsaW5nIHBhY2thZ2VzIHdpdGggYGBwaXBgYC4KIAogCitQaXAgbm90IGluc3RhbGxlZAorLS0tLS0tLS0tLS0tLS0tLS0KKworSXQgaXMgcG9zc2libGUgdGhhdCBgYHBpcGBgIGRvZXMgbm90IGdldCBpbnN0YWxsZWQgYnkgZGVmYXVsdC4gT25lIHBvdGVudGlhbCBmaXggaXM6OgorCisgICAgcHl0aG9uIC1tIGVuc3VyZXBpcCAtLWRlZmF1bHQtcGlwCisKK1RoZXJlIGFyZSBhbHNvIGFkZGl0aW9uYWwgcmVzb3VyY2VzIGZvciBgaW5zdGFsbGluZyBwaXAuCis8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy90dXRvcmlhbHMvaW5zdGFsbGluZy1wYWNrYWdlcy8jaW5zdGFsbC1waXAtc2V0dXB0b29scy1hbmQtd2hlZWw+YF9fCisKKwogSW5zdGFsbGluZyBiaW5hcnkgZXh0ZW5zaW9ucwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS8ydG8zLnJzdCBiL0RvYy9saWJyYXJ5LzJ0bzMucnN0CmluZGV4IDA2MzJmM2MuLmI3ODI4NzUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5LzJ0bzMucnN0CisrKyBiL0RvYy9saWJyYXJ5LzJ0bzMucnN0CkBAIC0xOTksMTMgKzE5OSw2IEBACiAgICBiZWNhdXNlIHRoZSA6Y2xhc3M6YG1lbW9yeXZpZXdgIEFQSSBpcyBzaW1pbGFyIGJ1dCBub3QgZXhhY3RseSB0aGUgc2FtZSBhcwogICAgdGhhdCBvZiA6Y2xhc3M6YGJ1ZmZlcmAuCiAKLS4uIDJ0bzNmaXhlcjo6IGNhbGxhYmxlCi0KLSAgIENvbnZlcnRzIGBgY2FsbGFibGUoeClgYCB0byBgYGlzaW5zdGFuY2UoeCwgY29sbGVjdGlvbnMuQ2FsbGFibGUpYGAsIGFkZGluZwotICAgYW4gaW1wb3J0IHRvIDptb2Q6YGNvbGxlY3Rpb25zYCBpZiBuZWVkZWQuIE5vdGUgYGBjYWxsYWJsZSh4KWBgIGhhcyByZXR1cm5lZAotICAgaW4gUHl0aG9uIDMuMiwgc28gaWYgeW91IGRvIG5vdCBpbnRlbmQgdG8gc3VwcG9ydCBQeXRob24gMy4xLCB5b3UgY2FuIGRpc2FibGUKLSAgIHRoaXMgZml4ZXIuCi0KIC4uIDJ0bzNmaXhlcjo6IGRpY3QKIAogICAgRml4ZXMgZGljdGlvbmFyeSBpdGVyYXRpb24gbWV0aG9kcy4gIDptZXRoOmBkaWN0Lml0ZXJpdGVtc2AgaXMgY29udmVydGVkIHRvCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9fd2lucmVnLnJzdCBiL0RvYy9saWJyYXJ5L193aW5yZWcucnN0CmluZGV4IDNkOTA0MmMuLmE4N2NiOWMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L193aW5yZWcucnN0CisrKyBiL0RvYy9saWJyYXJ5L193aW5yZWcucnN0CkBAIC0xLDUgKzEsNSBAQAotOm1vZDpgX3dpbnJlZ2AgLS0gV2luZG93cyByZWdpc3RyeSBhY2Nlc3MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis6bW9kOmBfd2lucmVnYCAtLS0gV2luZG93cyByZWdpc3RyeSBhY2Nlc3MKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCiAuLiBtb2R1bGU6OiBfd2lucmVnCiAgICA6cGxhdGZvcm06IFdpbmRvd3MKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L2FyZ3BhcnNlLnJzdAppbmRleCA0Y2U2ODM1Li43OTkzMzYwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hcmdwYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXJncGFyc2UucnN0CkBAIC0xNzMsNyArMTczLDcgQEAKICAgICogY29uZmxpY3RfaGFuZGxlcl8gLSBUaGUgc3RyYXRlZ3kgZm9yIHJlc29sdmluZyBjb25mbGljdGluZyBvcHRpb25hbHMKICAgICAgKHVzdWFsbHkgdW5uZWNlc3NhcnkpCiAKLSAgICogYWRkX2hlbHBfIC0gQWRkIGEgLWgvLS1oZWxwIG9wdGlvbiB0byB0aGUgcGFyc2VyIChkZWZhdWx0OiBgYFRydWVgYCkKKyAgICogYWRkX2hlbHBfIC0gQWRkIGEgYGAtaC8tLWhlbHBgYCBvcHRpb24gdG8gdGhlIHBhcnNlciAoZGVmYXVsdDogYGBUcnVlYGApCiAKIFRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgZGVzY3JpYmUgaG93IGVhY2ggb2YgdGhlc2UgYXJlIHVzZWQuCiAKQEAgLTIwNCw3ICsyMDQsNyBAQAogICAgIC1oLCAtLWhlbHAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKICAgICAtLWZvbyBGT08gICBmb28gaGVscAogICAgJCBjZCAuLgotICAgJCBweXRob24gc3ViZGlyXG15cHJvZ3JhbS5weSAtLWhlbHAKKyAgICQgcHl0aG9uIHN1YmRpci9teXByb2dyYW0ucHkgLS1oZWxwCiAgICB1c2FnZTogbXlwcm9ncmFtLnB5IFstaF0gWy0tZm9vIEZPT10KIAogICAgb3B0aW9uYWwgYXJndW1lbnRzOgpAQCAtNDE5LDcgKzQxOSw5IEBACiAgICAgLWgsIC0taGVscCAgc2hvdyB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAogCiA6Y2xhc3M6YFJhd1RleHRIZWxwRm9ybWF0dGVyYCBtYWludGFpbnMgd2hpdGVzcGFjZSBmb3IgYWxsIHNvcnRzIG9mIGhlbHAgdGV4dCwKLWluY2x1ZGluZyBhcmd1bWVudCBkZXNjcmlwdGlvbnMuCitpbmNsdWRpbmcgYXJndW1lbnQgZGVzY3JpcHRpb25zLiBIb3dldmVyLCBtdWx0aXBsZSBuZXcgbGluZXMgYXJlIHJlcGxhY2VkIHdpdGgKK29uZS4gSWYgeW91IHdpc2ggdG8gcHJlc2VydmUgbXVsdGlwbGUgYmxhbmsgbGluZXMsIGFkZCBzcGFjZXMgYmV0d2VlbiB0aGUKK25ld2xpbmVzLgogCiBUaGUgb3RoZXIgZm9ybWF0dGVyIGNsYXNzIGF2YWlsYWJsZSwgOmNsYXNzOmBBcmd1bWVudERlZmF1bHRzSGVscEZvcm1hdHRlcmAsCiB3aWxsIGFkZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGVmYXVsdCB2YWx1ZSBvZiBlYWNoIG9mIHRoZSBhcmd1bWVudHM6OgpAQCAtODUyLDYgKzg1NCw4IEBACiAgICAgIHVzYWdlOiBQUk9HIFstaF0gZm9vIFtmb28gLi4uXQogICAgICBQUk9HOiBlcnJvcjogdG9vIGZldyBhcmd1bWVudHMKIAorLi4gX2BhcmdwYXJzZS5SRU1BSU5ERVJgOgorCiAqIGBgYXJncGFyc2UuUkVNQUlOREVSYGAuICBBbGwgdGhlIHJlbWFpbmluZyBjb21tYW5kLWxpbmUgYXJndW1lbnRzIGFyZSBnYXRoZXJlZAogICBpbnRvIGEgbGlzdC4gIFRoaXMgaXMgY29tbW9ubHkgdXNlZnVsIGZvciBjb21tYW5kIGxpbmUgdXRpbGl0aWVzIHRoYXQgZGlzcGF0Y2gKICAgdG8gb3RoZXIgY29tbWFuZCBsaW5lIHV0aWxpdGllczo6CkBAIC0xMjczLDggKzEyNzcsMTEgQEAKICAgIGNyZWF0ZWQgYW5kIGhvdyB0aGV5IGFyZSBhc3NpZ25lZC4gU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvcgogICAgOm1ldGg6YGFkZF9hcmd1bWVudGAgZm9yIGRldGFpbHMuCiAKLSAgIEJ5IGRlZmF1bHQsIHRoZSBhcmd1bWVudCBzdHJpbmdzIGFyZSB0YWtlbiBmcm9tIDpkYXRhOmBzeXMuYXJndmAsIGFuZCBhIG5ldyBlbXB0eQotICAgOmNsYXNzOmBOYW1lc3BhY2VgIG9iamVjdCBpcyBjcmVhdGVkIGZvciB0aGUgYXR0cmlidXRlcy4KKyAgICogYXJnc18gLSBMaXN0IG9mIHN0cmluZ3MgdG8gcGFyc2UuICBUaGUgZGVmYXVsdCBpcyB0YWtlbiBmcm9tCisgICAgIDpkYXRhOmBzeXMuYXJndmAuCisKKyAgICogbmFtZXNwYWNlXyAtIEFuIG9iamVjdCB0byB0YWtlIHRoZSBhdHRyaWJ1dGVzLiAgVGhlIGRlZmF1bHQgaXMgYSBuZXcgZW1wdHkKKyAgICAgOmNsYXNzOmBOYW1lc3BhY2VgIG9iamVjdC4KIAogCiBPcHRpb24gdmFsdWUgc3ludGF4CkBAIC0xNDE1LDYgKzE0MjIsNyBAQAogCiBBbiBlcnJvciBpcyBwcm9kdWNlZCBmb3IgYXJndW1lbnRzIHRoYXQgY291bGQgcHJvZHVjZSBtb3JlIHRoYW4gb25lIG9wdGlvbnMuCiAKKy4uIF9hcmdzOgogCiBCZXlvbmQgYGBzeXMuYXJndmBgCiBeXl5eXl5eXl5eXl5eXl5eXl5eCkBAIC0xNDM2LDYgKzE0NDQsNyBAQAogICAgPj4+IHBhcnNlci5wYXJzZV9hcmdzKFsnMScsICcyJywgJzMnLCAnNCcsICctLXN1bSddKQogICAgTmFtZXNwYWNlKGFjY3VtdWxhdGU9PGJ1aWx0LWluIGZ1bmN0aW9uIHN1bT4sIGludGVnZXJzPVsxLCAyLCAzLCA0XSkKIAorLi4gX25hbWVzcGFjZToKIAogVGhlIE5hbWVzcGFjZSBvYmplY3QKIF5eXl5eXl5eXl5eXl5eXl5eXl5eCkBAIC0xOTQxLDcgKzE5NTAsMTIgQEAKICogUmVwbGFjZSBgYChvcHRpb25zLCBhcmdzKSA9IHBhcnNlci5wYXJzZV9hcmdzKClgYCB3aXRoIGBgYXJncyA9CiAgIHBhcnNlci5wYXJzZV9hcmdzKClgYCBhbmQgYWRkIGFkZGl0aW9uYWwgOm1ldGg6YEFyZ3VtZW50UGFyc2VyLmFkZF9hcmd1bWVudGAKICAgY2FsbHMgZm9yIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gS2VlcCBpbiBtaW5kIHRoYXQgd2hhdCB3YXMgcHJldmlvdXNseQotICBjYWxsZWQgYGBvcHRpb25zYGAsIG5vdyBpbiA6bW9kOmBhcmdwYXJzZWAgY29udGV4dCBpcyBjYWxsZWQgYGBhcmdzYGAuCisgIGNhbGxlZCBgYG9wdGlvbnNgYCwgbm93IGluIHRoZSA6bW9kOmBhcmdwYXJzZWAgY29udGV4dCBpcyBjYWxsZWQgYGBhcmdzYGAuCisKKyogUmVwbGFjZSA6bWV0aDpgb3B0cGFyc2UuT3B0aW9uUGFyc2VyLmRpc2FibGVfaW50ZXJzcGVyc2VkX2FyZ3NgCisgIGJ5IHNldHRpbmcgYGBuYXJnc2BgIG9mIGEgcG9zaXRpb25hbCBhcmd1bWVudCB0byBgYXJncGFyc2UuUkVNQUlOREVSYF8sIG9yCisgIHVzZSA6bWV0aDpgfkFyZ3VtZW50UGFyc2VyLnBhcnNlX2tub3duX2FyZ3NgIHRvIGNvbGxlY3QgdW5wYXJzZWQgYXJndW1lbnQKKyAgc3RyaW5ncyBpbiBhIHNlcGFyYXRlIGxpc3QuCiAKICogUmVwbGFjZSBjYWxsYmFjayBhY3Rpb25zIGFuZCB0aGUgYGBjYWxsYmFja18qYGAga2V5d29yZCBhcmd1bWVudHMgd2l0aAogICBgYHR5cGVgYCBvciBgYGFjdGlvbmBgIGFyZ3VtZW50cy4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2F0ZXhpdC5yc3QgYi9Eb2MvbGlicmFyeS9hdGV4aXQucnN0CmluZGV4IDBiNWUxMjEuLjA2YmJmNjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2F0ZXhpdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXRleGl0LnJzdApAQCAtMzcsNyArMzcsNyBAQAogOm1vZDpgYXRleGl0YCBhbmQgcmVnaXN0ZXIgdGhlIGZ1bmN0aW9uIHRoYXQgaGFkIGJlZW4gYm91bmQgdG8gYGBzeXMuZXhpdGZ1bmNgYC4KIAogCi0uLiBmdW5jdGlvbjo6IHJlZ2lzdGVyKGZ1bmNbLCAqYXJnc1ssICoqa2FyZ3NdXSkKKy4uIGZ1bmN0aW9uOjogcmVnaXN0ZXIoZnVuY1ssICphcmdzWywgKiprd2FyZ3NdXSkKIAogICAgUmVnaXN0ZXIgKmZ1bmMqIGFzIGEgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgYXQgdGVybWluYXRpb24uICBBbnkgb3B0aW9uYWwKICAgIGFyZ3VtZW50cyB0aGF0IGFyZSB0byBiZSBwYXNzZWQgdG8gKmZ1bmMqIG11c3QgYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0bwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0IGIvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CmluZGV4IDVlYjdjNGIuLjM4ZjYxNmEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKQEAgLTEwMSw4ICsxMDEsMTAgQEAKIAogLi4gZnVuY3Rpb246OiBjcmNfaHF4KGRhdGEsIGNyYykKIAotICAgQ29tcHV0ZSB0aGUgYmluaGV4NCBjcmMgdmFsdWUgb2YgKmRhdGEqLCBzdGFydGluZyB3aXRoIGFuIGluaXRpYWwgKmNyYyogYW5kCi0gICByZXR1cm5pbmcgdGhlIHJlc3VsdC4KKyAgIENvbXB1dGUgYSAxNi1iaXQgQ1JDIHZhbHVlIG9mICpkYXRhKiwgc3RhcnRpbmcgd2l0aCBhbiBpbml0aWFsICpjcmMqIGFuZAorICAgcmV0dXJuaW5nIHRoZSByZXN1bHQuICBUaGlzIHVzZXMgdGhlIENSQy1DQ0lUVCBwb2x5bm9taWFsCisgICAqeCo6c3VwOmAxNmAgKyAqeCo6c3VwOmAxMmAgKyAqeCo6c3VwOmA1YCArIDEsIG9mdGVuIHJlcHJlc2VudGVkIGFzCisgICAweDEwMjEuICBUaGlzIENSQyBpcyB1c2VkIGluIHRoZSBiaW5oZXg0IGZvcm1hdC4KIAogCiAuLiBmdW5jdGlvbjo6IGNyYzMyKGRhdGFbLCBjcmNdKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYnoyLnJzdCBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKaW5kZXggNzE5NTdlYy4uZTc2NGYzOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYnoyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iejIucnN0CkBAIC03NCw3ICs3NCw3IEBACiAgICAgICBpbnB1dCBmaWxlLCBvbmx5IHRoZSBmaXJzdCBzdHJlYW0gd2lsbCBiZSBhY2Nlc3NpYmxlLiBJZiB5b3UgcmVxdWlyZQogICAgICAgc3VwcG9ydCBmb3IgbXVsdGktc3RyZWFtIGZpbGVzLCBjb25zaWRlciB1c2luZyB0aGUgdGhpcmQtcGFydHkKICAgICAgIDptb2Q6YGJ6MmZpbGVgIG1vZHVsZSAoYXZhaWxhYmxlIGZyb20KLSAgICAgIGBQeVBJIDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2J6MmZpbGU+YF8pLiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhCisgICAgICBgUHlQSSA8aHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2J6MmZpbGU+YF8pLiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhCiAgICAgICBiYWNrcG9ydCBvZiBQeXRob24gMy4zJ3MgOmNsYXNzOmBCWjJGaWxlYCBjbGFzcywgd2hpY2ggZG9lcyBzdXBwb3J0CiAgICAgICBtdWx0aS1zdHJlYW0gZmlsZXMuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdCBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAppbmRleCAzYzhjMDVmLi45NjEwNDE5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CkBAIC0yMDAsNiArMjAwLDcgQEAKICAgICAgIGFkYXB0ZWQgZm9yIFB5dGhvbiAyLjUgYW5kIGFuIGVhcmx5IGBCYWcgcmVjaXBlCiAgICAgICA8aHR0cHM6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzI1OTE3NC8+YF8gZm9yIFB5dGhvbiAyLjQuCiAKKyAgICAqIGBCYWcgY2xhc3MgPGh0dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc21hbGx0YWxrL21hbnVhbC1iYXNlL2h0bWxfbm9kZS9CYWcuaHRtbD5gXwogICAgICAgaW4gU21hbGx0YWxrLgogCiAgICAgKiBXaWtpcGVkaWEgZW50cnkgZm9yIGBNdWx0aXNldHMgPGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL011bHRpc2V0PmBfLgpAQCAtMjk5LDcgKzMwMCw3IEBACiAKICAgIC4uIG1ldGhvZDo6IHJlbW92ZSh2YWx1ZSkKIAotICAgICAgUmVtb3ZlZCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqdmFsdWUqLiAgSWYgbm90IGZvdW5kLCByYWlzZXMgYQorICAgICAgUmVtb3ZlIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICp2YWx1ZSouICBJZiBub3QgZm91bmQsIHJhaXNlcyBhCiAgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4KIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMi41CkBAIC0zMTAsMTEgKzMxMSwxNCBAQAogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjcKIAotICAgLi4gbWV0aG9kOjogcm90YXRlKG4pCisgICAuLiBtZXRob2Q6OiByb3RhdGUobj0xKQogCiAgICAgICBSb3RhdGUgdGhlIGRlcXVlICpuKiBzdGVwcyB0byB0aGUgcmlnaHQuICBJZiAqbiogaXMgbmVnYXRpdmUsIHJvdGF0ZSB0bwotICAgICAgdGhlIGxlZnQuICBSb3RhdGluZyBvbmUgc3RlcCB0byB0aGUgcmlnaHQgaXMgZXF1aXZhbGVudCB0bzoKLSAgICAgIGBgZC5hcHBlbmRsZWZ0KGQucG9wKCkpYGAuCisgICAgICB0aGUgbGVmdC4KKworICAgICAgV2hlbiB0aGUgZGVxdWUgaXMgbm90IGVtcHR5LCByb3RhdGluZyBvbmUgc3RlcCB0byB0aGUgcmlnaHQgaXMgZXF1aXZhbGVudCB0bworICAgICAgYGBkLmFwcGVuZGxlZnQoZC5wb3AoKSlgYCwgYW5kIHJvdGF0aW5nIG9uZSBzdGVwIHRvIHRoZSBsZWZ0IGlzCisgICAgICBlcXVpdmFsZW50IHRvIGBgZC5hcHBlbmQoZC5wb3BsZWZ0KCkpYGAuCiAKIAogICAgRGVxdWUgb2JqZWN0cyBhbHNvIHByb3ZpZGUgb25lIHJlYWQtb25seSBhdHRyaWJ1dGU6CkBAIC03MDMsNyArNzA3LDcgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMi43CiAgICAgICBSZXR1cm5zIGFuIDpjbGFzczpgT3JkZXJlZERpY3RgIGluc3RlYWQgb2YgYSByZWd1bGFyIDpjbGFzczpgZGljdGAuCiAKLS4uIG1ldGhvZDo6IHNvbWVuYW1lZHR1cGxlLl9yZXBsYWNlKGt3YXJncykKKy4uIG1ldGhvZDo6IHNvbWVuYW1lZHR1cGxlLl9yZXBsYWNlKCoqa3dhcmdzKQogCiAgICBSZXR1cm4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIG5hbWVkIHR1cGxlIHJlcGxhY2luZyBzcGVjaWZpZWQgZmllbGRzIHdpdGggbmV3CiAgICB2YWx1ZXM6OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29uZmlncGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2NvbmZpZ3BhcnNlci5yc3QKaW5kZXggYjgzMzk3Yy4uNWM0MGY1YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29uZmlncGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb25maWdwYXJzZXIucnN0CkBAIC0zNSw4ICszNSw4IEBACiAuLiBzZWVhbHNvOjoKIAogICAgTW9kdWxlIDptb2Q6YHNobGV4YAotICAgICAgU3VwcG9ydCBmb3IgYSBjcmVhdGluZyBVbml4IHNoZWxsLWxpa2UgbWluaS1sYW5ndWFnZXMgd2hpY2ggY2FuIGJlIHVzZWQKLSAgICAgIGFzIGFuIGFsdGVybmF0ZSBmb3JtYXQgZm9yIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgICAgICBTdXBwb3J0IGZvciBjcmVhdGluZyBVbml4IHNoZWxsLWxpa2UgbWluaS1sYW5ndWFnZXMgd2hpY2ggY2FuIGJlIHVzZWQgYXMKKyAgICAgIGFuIGFsdGVybmF0ZSBmb3JtYXQgZm9yIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAKICAgIE1vZHVsZSA6bW9kOmBqc29uYAogICAgICAgVGhlIGpzb24gbW9kdWxlIGltcGxlbWVudHMgYSBzdWJzZXQgb2YgSmF2YVNjcmlwdCBzeW50YXggd2hpY2ggY2FuIGFsc28KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QgYi9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CmluZGV4IDBkYjgzMzcuLmE4YjRjN2EgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdApAQCAtNzMsOSArNzMsMTMgQEAKICAgIHNwZWNpZmllZCBleGl0IGNvZGUuCiAKIC4uIGRhdGE6OiBjb3B5cmlnaHQKLSAgICAgICAgICBsaWNlbnNlCiAgICAgICAgICAgY3JlZGl0cwogCi0gICBPYmplY3RzIHRoYXQgd2hlbiBwcmludGVkLCBwcmludCBhIG1lc3NhZ2UgbGlrZSAiVHlwZSBsaWNlbnNlKCkgdG8gc2VlIHRoZQotICAgZnVsbCBsaWNlbnNlIHRleHQiLCBhbmQgd2hlbiBjYWxsZWQsIGRpc3BsYXkgdGhlIGNvcnJlc3BvbmRpbmcgdGV4dCBpbiBhCisgICBPYmplY3RzIHRoYXQgd2hlbiBwcmludGVkIG9yIGNhbGxlZCwgcHJpbnQgdGhlIHRleHQgb2YgY29weXJpZ2h0IG9yCisgICBjcmVkaXRzLCByZXNwZWN0aXZlbHkuCisKKy4uIGRhdGE6OiBsaWNlbnNlCisKKyAgIE9iamVjdCB0aGF0IHdoZW4gcHJpbnRlZCwgcHJpbnRzIHRoZSBtZXNzYWdlICJUeXBlIGxpY2Vuc2UoKSB0byBzZWUgdGhlCisgICBmdWxsIGxpY2Vuc2UgdGV4dCIsIGFuZCB3aGVuIGNhbGxlZCwgZGlzcGxheXMgdGhlIGZ1bGwgbGljZW5zZSB0ZXh0IGluIGEKICAgIHBhZ2VyLWxpa2UgZmFzaGlvbiAob25lIHNjcmVlbiBhdCBhIHRpbWUpLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAppbmRleCBjODhkZDIzLi4xODNkYTcwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb250ZXh0bGliLnJzdApAQCAtMjQsMjIgKzI0LDI4IEBACiAgICBmdW5jdGlvbiBmb3IgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBjb250ZXh0IG1hbmFnZXJzLCB3aXRob3V0IG5lZWRpbmcgdG8KICAgIGNyZWF0ZSBhIGNsYXNzIG9yIHNlcGFyYXRlIDptZXRoOmBfX2VudGVyX19gIGFuZCA6bWV0aDpgX19leGl0X19gIG1ldGhvZHMuCiAKLSAgIEEgc2ltcGxlIGV4YW1wbGUgKHRoaXMgaXMgbm90IHJlY29tbWVuZGVkIGFzIGEgcmVhbCB3YXkgb2YgZ2VuZXJhdGluZyBIVE1MISk6OgorICAgV2hpbGUgbWFueSBvYmplY3RzIG5hdGl2ZWx5IHN1cHBvcnQgdXNlIGluIHdpdGggc3RhdGVtZW50cywgc29tZXRpbWVzIGEKKyAgIHJlc291cmNlIG5lZWRzIHRvIGJlIG1hbmFnZWQgdGhhdCBpc24ndCBhIGNvbnRleHQgbWFuYWdlciBpbiBpdHMgb3duIHJpZ2h0LAorICAgYW5kIGRvZXNuJ3QgaW1wbGVtZW50IGEgYGBjbG9zZSgpYGAgbWV0aG9kIGZvciB1c2Ugd2l0aCBgYGNvbnRleHRsaWIuY2xvc2luZ2BgCisKKyAgIEFuIGFic3RyYWN0IGV4YW1wbGUgd291bGQgYmUgdGhlIGZvbGxvd2luZyB0byBlbnN1cmUgY29ycmVjdCByZXNvdXJjZQorICAgbWFuYWdlbWVudDo6CiAKICAgICAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIKIAogICAgICAgQGNvbnRleHRtYW5hZ2VyCi0gICAgICBkZWYgdGFnKG5hbWUpOgotICAgICAgICAgIHByaW50ICI8JXM+IiAlIG5hbWUKLSAgICAgICAgICB5aWVsZAotICAgICAgICAgIHByaW50ICI8LyVzPiIgJSBuYW1lCisgICAgICBkZWYgbWFuYWdlZF9yZXNvdXJjZSgqYXJncywgKiprd2RzKToKKyAgICAgICAgICAjIENvZGUgdG8gYWNxdWlyZSByZXNvdXJjZSwgZS5nLjoKKyAgICAgICAgICByZXNvdXJjZSA9IGFjcXVpcmVfcmVzb3VyY2UoKmFyZ3MsICoqa3dkcykKKyAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgIHlpZWxkIHJlc291cmNlCisgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgIyBDb2RlIHRvIHJlbGVhc2UgcmVzb3VyY2UsIGUuZy46CisgICAgICAgICAgICAgIHJlbGVhc2VfcmVzb3VyY2UocmVzb3VyY2UpCiAKLSAgICAgID4+PiB3aXRoIHRhZygiaDEiKToKLSAgICAgIC4uLiAgICBwcmludCAiZm9vIgotICAgICAgLi4uCi0gICAgICA8aDE+Ci0gICAgICBmb28KLSAgICAgIDwvaDE+CisgICAgICA+Pj4gd2l0aCBtYW5hZ2VkX3Jlc291cmNlKHRpbWVvdXQ9MzYwMCkgYXMgcmVzb3VyY2U6CisgICAgICAuLi4gICAgICMgUmVzb3VyY2UgaXMgcmVsZWFzZWQgYXQgdGhlIGVuZCBvZiB0aGlzIGJsb2NrLAorICAgICAgLi4uICAgICAjIGV2ZW4gaWYgY29kZSBpbiB0aGUgYmxvY2sgcmFpc2VzIGFuIGV4Y2VwdGlvbgogCiAgICBUaGUgZnVuY3Rpb24gYmVpbmcgZGVjb3JhdGVkIG11c3QgcmV0dXJuIGEgOnRlcm06YGdlbmVyYXRvcmAtaXRlcmF0b3Igd2hlbgogICAgY2FsbGVkLiBUaGlzIGl0ZXJhdG9yIG11c3QgeWllbGQgZXhhY3RseSBvbmUgdmFsdWUsIHdoaWNoIHdpbGwgYmUgYm91bmQgdG8KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvcHkucnN0IGIvRG9jL2xpYnJhcnkvY29weS5yc3QKaW5kZXggYTUzNzhlNS4uNjdjZjY1YSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29weS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29weS5yc3QKQEAgLTQzLDggKzQzLDggQEAKICogUmVjdXJzaXZlIG9iamVjdHMgKGNvbXBvdW5kIG9iamVjdHMgdGhhdCwgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSwgY29udGFpbiBhCiAgIHJlZmVyZW5jZSB0byB0aGVtc2VsdmVzKSBtYXkgY2F1c2UgYSByZWN1cnNpdmUgbG9vcC4KIAotKiBCZWNhdXNlIGRlZXAgY29weSBjb3BpZXMgKmV2ZXJ5dGhpbmcqIGl0IG1heSBjb3B5IHRvbyBtdWNoLCBlLmcuLAotICBldmVuIGFkbWluaXN0cmF0aXZlIGRhdGEgc3RydWN0dXJlcyB0aGF0IHNob3VsZCBiZSBzaGFyZWQgZXZlbiBiZXR3ZWVuIGNvcGllcy4KKyogQmVjYXVzZSBkZWVwIGNvcHkgY29waWVzIGV2ZXJ5dGhpbmcgaXQgbWF5IGNvcHkgdG9vIG11Y2gsIHN1Y2ggYXMgZGF0YQorICB3aGljaCBpcyBpbnRlbmRlZCB0byBiZSBzaGFyZWQgYmV0d2VlbiBjb3BpZXMuCiAKIFRoZSA6ZnVuYzpgZGVlcGNvcHlgIGZ1bmN0aW9uIGF2b2lkcyB0aGVzZSBwcm9ibGVtcyBieToKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3N2LnJzdCBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKaW5kZXggZGJlZjYwZi4uYWQ2YjcxNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3N2LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jc3YucnN0CkBAIC0xNjUsNyArMTY1LDcgQEAKIFRoZSA6bW9kOmBjc3ZgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3NlczoKIAogCi0uLiBjbGFzczo6IERpY3RSZWFkZXIoY3N2ZmlsZSwgZmllbGRuYW1lcz1Ob25lLCByZXN0a2V5PU5vbmUsIHJlc3R2YWw9Tm9uZSwgXAorLi4gY2xhc3M6OiBEaWN0UmVhZGVyKGYsIGZpZWxkbmFtZXM9Tm9uZSwgcmVzdGtleT1Ob25lLCByZXN0dmFsPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgICBkaWFsZWN0PSdleGNlbCcsICphcmdzLCAqKmt3ZHMpCiAKICAgIENyZWF0ZSBhbiBvYmplY3Qgd2hpY2ggb3BlcmF0ZXMgbGlrZSBhIHJlZ3VsYXIgcmVhZGVyIGJ1dCBtYXBzIHRoZQpAQCAtMTc0LDcgKzE3NCw3IEBACiAgICA8Y29sbGVjdGlvbnMtYWJzdHJhY3QtYmFzZS1jbGFzc2VzPmAgd2hvc2UgZWxlbWVudHMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUKICAgIGZpZWxkcyBvZiB0aGUgaW5wdXQgZGF0YSBpbiBvcmRlci4gVGhlc2UgZWxlbWVudHMgYmVjb21lIHRoZSBrZXlzIG9mIHRoZQogICAgcmVzdWx0aW5nIGRpY3Rpb25hcnkuICBJZiB0aGUgKmZpZWxkbmFtZXMqIHBhcmFtZXRlciBpcyBvbWl0dGVkLCB0aGUgdmFsdWVzCi0gICBpbiB0aGUgZmlyc3Qgcm93IG9mIHRoZSAqY3N2ZmlsZSogd2lsbCBiZSB1c2VkIGFzIHRoZSBmaWVsZG5hbWVzLiAgSWYgdGhlCisgICBpbiB0aGUgZmlyc3Qgcm93IG9mIHRoZSBmaWxlICpmKiB3aWxsIGJlIHVzZWQgYXMgdGhlIGZpZWxkbmFtZXMuICBJZiB0aGUKICAgIHJvdyByZWFkIGhhcyBtb3JlIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGRhdGEgaXMKICAgIGFkZGVkIGFzIGEgc2VxdWVuY2Uga2V5ZWQgYnkgdGhlIHZhbHVlIG9mICpyZXN0a2V5Ki4gIElmIHRoZSByb3cgcmVhZCBoYXMKICAgIGZld2VyIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGtleXMgdGFrZSB0aGUgdmFsdWUKQEAgLTE5NCwxNCArMTk0LDE0IEBACiAgICAgICAgV29uZGVyZnVsIFNwYW0KIAogCi0uLiBjbGFzczo6IERpY3RXcml0ZXIoY3N2ZmlsZSwgZmllbGRuYW1lcywgcmVzdHZhbD0nJywgZXh0cmFzYWN0aW9uPSdyYWlzZScsIFwKKy4uIGNsYXNzOjogRGljdFdyaXRlcihmLCBmaWVsZG5hbWVzLCByZXN0dmFsPScnLCBleHRyYXNhY3Rpb249J3JhaXNlJywgXAogICAgICAgICAgICAgICAgICAgICAgIGRpYWxlY3Q9J2V4Y2VsJywgKmFyZ3MsICoqa3dkcykKIAogICAgQ3JlYXRlIGFuIG9iamVjdCB3aGljaCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciB3cml0ZXIgYnV0IG1hcHMgZGljdGlvbmFyaWVzCiAgICBvbnRvIG91dHB1dCByb3dzLiAgVGhlICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIgaXMgYSA6cmVmOmBzZXF1ZW5jZQogICAgPGNvbGxlY3Rpb25zLWFic3RyYWN0LWJhc2UtY2xhc3Nlcz5gIG9mIGtleXMgdGhhdCBpZGVudGlmeSB0aGUgb3JkZXIgaW4KICAgIHdoaWNoIHZhbHVlcyBpbiB0aGUgZGljdGlvbmFyeSBwYXNzZWQgdG8gdGhlIDptZXRoOmB3cml0ZXJvd2AgbWV0aG9kIGFyZQotICAgd3JpdHRlbiB0byB0aGUgKmNzdmZpbGUqLiAgVGhlIG9wdGlvbmFsICpyZXN0dmFsKiBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZQorICAgd3JpdHRlbiB0byB0aGUgZmlsZSAqZiouICBUaGUgb3B0aW9uYWwgKnJlc3R2YWwqIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlCiAgICB2YWx1ZSB0byBiZSB3cml0dGVuIGlmIHRoZSBkaWN0aW9uYXJ5IGlzIG1pc3NpbmcgYSBrZXkgaW4gKmZpZWxkbmFtZXMqLiAgSWYKICAgIHRoZSBkaWN0aW9uYXJ5IHBhc3NlZCB0byB0aGUgOm1ldGg6YHdyaXRlcm93YCBtZXRob2QgY29udGFpbnMgYSBrZXkgbm90CiAgICBmb3VuZCBpbiAqZmllbGRuYW1lcyosIHRoZSBvcHRpb25hbCAqZXh0cmFzYWN0aW9uKiBwYXJhbWV0ZXIgaW5kaWNhdGVzIHdoYXQKQEAgLTIxMyw3ICsyMTMsNyBAQAogICAgTm90ZSB0aGF0IHVubGlrZSB0aGUgOmNsYXNzOmBEaWN0UmVhZGVyYCBjbGFzcywgdGhlICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIKICAgIG9mIHRoZSA6Y2xhc3M6YERpY3RXcml0ZXJgIGlzIG5vdCBvcHRpb25hbC4gIFNpbmNlIFB5dGhvbidzIDpjbGFzczpgZGljdGAKICAgIG9iamVjdHMgYXJlIG5vdCBvcmRlcmVkLCB0aGVyZSBpcyBub3QgZW5vdWdoIGluZm9ybWF0aW9uIGF2YWlsYWJsZSB0byBkZWR1Y2UKLSAgIHRoZSBvcmRlciBpbiB3aGljaCB0aGUgcm93IHNob3VsZCBiZSB3cml0dGVuIHRvIHRoZSAqY3N2ZmlsZSouCisgICB0aGUgb3JkZXIgaW4gd2hpY2ggdGhlIHJvdyBzaG91bGQgYmUgd3JpdHRlbiB0byB0aGUgZmlsZSAqZiouCiAKICAgIEEgc2hvcnQgdXNhZ2UgZXhhbXBsZTo6CiAKQEAgLTQ1Myw4ICs0NTMsOSBAQAogCiAuLiBtZXRob2Q6OiBjc3Z3cml0ZXIud3JpdGVyb3dzKHJvd3MpCiAKLSAgIFdyaXRlIGFsbCB0aGUgKnJvd3MqIHBhcmFtZXRlcnMgKGEgbGlzdCBvZiAqcm93KiBvYmplY3RzIGFzIGRlc2NyaWJlZCBhYm92ZSkgdG8KLSAgIHRoZSB3cml0ZXIncyBmaWxlIG9iamVjdCwgZm9ybWF0dGVkIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBkaWFsZWN0LgorICAgV3JpdGUgYWxsIGVsZW1lbnRzIGluICpyb3dzKiAoYW4gaXRlcmFibGUgb2YgKnJvdyogb2JqZWN0cyBhcyBkZXNjcmliZWQKKyAgIGFib3ZlKSB0byB0aGUgd3JpdGVyJ3MgZmlsZSBvYmplY3QsIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQKKyAgIGRpYWxlY3QuCiAKIFdyaXRlciBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBwdWJsaWMgYXR0cmlidXRlOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAppbmRleCAwNTJjZGVlLi5kZjljY2JmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKQEAgLTg3LDcgKzg3LDcgQEAKICAgIDxfRnVuY1B0ciBvYmplY3QgYXQgMHguLi4+CiAgICA+Pj4gcHJpbnQgd2luZGxsLmtlcm5lbDMyLk15T3duRnVuY3Rpb24gICAgICMgZG9jdGVzdDogK1dJTkRPV1MKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPworICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICBGaWxlICJjdHlwZXMucHkiLCBsaW5lIDIzOSwgaW4gX19nZXRhdHRyX18KICAgICAgICBmdW5jID0gX1N0ZGNhbGxGdW5jUHRyKG5hbWUsIHNlbGYpCiAgICBBdHRyaWJ1dGVFcnJvcjogZnVuY3Rpb24gJ015T3duRnVuY3Rpb24nIG5vdCBmb3VuZApAQCAtMTI2LDcgKzEyNiw3IEBACiAgICA8X0Z1bmNQdHIgb2JqZWN0IGF0IDB4Li4uPgogICAgPj4+IGNkbGwua2VybmVsMzJbMF0gICMgZG9jdGVzdDogK1dJTkRPV1MKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPworICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICBGaWxlICJjdHlwZXMucHkiLCBsaW5lIDMxMCwgaW4gX19nZXRpdGVtX18KICAgICAgICBmdW5jID0gX1N0ZGNhbGxGdW5jUHRyKG5hbWUsIHNlbGYpCiAgICBBdHRyaWJ1dGVFcnJvcjogZnVuY3Rpb24gb3JkaW5hbCAwIG5vdCBmb3VuZApAQCAtMTU5LDExICsxNTksMTEgQEAKIAogICAgPj4+IHdpbmRsbC5rZXJuZWwzMi5HZXRNb2R1bGVIYW5kbGVBKCkgICAgICAjIGRvY3Rlc3Q6ICtXSU5ET1dTCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgIFZhbHVlRXJyb3I6IFByb2NlZHVyZSBwcm9iYWJseSBjYWxsZWQgd2l0aCBub3QgZW5vdWdoIGFyZ3VtZW50cyAoNCBieXRlcyBtaXNzaW5nKQogICAgPj4+IHdpbmRsbC5rZXJuZWwzMi5HZXRNb2R1bGVIYW5kbGVBKDAsIDApICAjIGRvY3Rlc3Q6ICtXSU5ET1dTCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgIFZhbHVlRXJyb3I6IFByb2NlZHVyZSBwcm9iYWJseSBjYWxsZWQgd2l0aCB0b28gbWFueSBhcmd1bWVudHMgKDQgYnl0ZXMgaW4gZXhjZXNzKQogICAgPj4+CiAKQEAgLTE3MiwxMyArMTcyLDEzIEBACiAKICAgID4+PiBjZGxsLmtlcm5lbDMyLkdldE1vZHVsZUhhbmRsZUEoTm9uZSkgICMgZG9jdGVzdDogK1dJTkRPV1MKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPworICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgVmFsdWVFcnJvcjogUHJvY2VkdXJlIHByb2JhYmx5IGNhbGxlZCB3aXRoIG5vdCBlbm91Z2ggYXJndW1lbnRzICg0IGJ5dGVzIG1pc3NpbmcpCiAgICA+Pj4KIAogICAgPj4+IHdpbmRsbC5tc3ZjcnQucHJpbnRmKCJzcGFtIikgICMgZG9jdGVzdDogK1dJTkRPV1MKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPworICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgVmFsdWVFcnJvcjogUHJvY2VkdXJlIHByb2JhYmx5IGNhbGxlZCB3aXRoIHRvbyBtYW55IGFyZ3VtZW50cyAoNCBieXRlcyBpbiBleGNlc3MpCiAgICA+Pj4KIApAQCAtMTkxLDcgKzE5MSw3IEBACiAKICAgID4+PiB3aW5kbGwua2VybmVsMzIuR2V0TW9kdWxlSGFuZGxlQSgzMikgICMgZG9jdGVzdDogK1dJTkRPV1MKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPworICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgV2luZG93c0Vycm9yOiBleGNlcHRpb246IGFjY2VzcyB2aW9sYXRpb24gcmVhZGluZyAweDAwMDAwMDIwCiAgICA+Pj4KIApAQCAtMzU0LDcgKzM1NCw3IEBACiAgICAxOQogICAgPj4+IHByaW50ZigiJWYgYm90dGxlcyBvZiBiZWVyXG4iLCA0Mi41KQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICBBcmd1bWVudEVycm9yOiBhcmd1bWVudCAyOiBleGNlcHRpb25zLlR5cGVFcnJvcjogRG9uJ3Qga25vdyBob3cgdG8gY29udmVydCBwYXJhbWV0ZXIgMgogICAgPj4+CiAKQEAgLTQxNyw3ICs0MTcsNyBAQAogCiAgICA+Pj4gcHJpbnRmKCIlZCAlZCAlZCIsIDEsIDIsIDMpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgIEFyZ3VtZW50RXJyb3I6IGFyZ3VtZW50IDI6IGV4Y2VwdGlvbnMuVHlwZUVycm9yOiB3cm9uZyB0eXBlCiAgICA+Pj4gcHJpbnRmKCIlcyAlZCAlZlxuIiwgIlgiLCAyLCAzKQogICAgWCAyIDMuMDAwMDAwCkBAIC00NjcsNyArNDY3LDcgQEAKICAgICdkZWYnCiAgICA+Pj4gc3RyY2hyKCJhYmNkZWYiLCAiZGVmIikKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPworICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgQXJndW1lbnRFcnJvcjogYXJndW1lbnQgMjogZXhjZXB0aW9ucy5UeXBlRXJyb3I6IG9uZSBjaGFyYWN0ZXIgc3RyaW5nIGV4cGVjdGVkCiAgICA+Pj4gcHJpbnQgc3RyY2hyKCJhYmNkZWYiLCAieCIpCiAgICBOb25lCkBAIC00OTMsNyArNDkzLDcgQEAKICAgIDQ4NjUzOTI2NAogICAgPj4+IEdldE1vZHVsZUhhbmRsZSgic29tZXRoaW5nIHNpbGx5IikgICMgZG9jdGVzdDogK1dJTkRPV1MKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPworICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAzLCBpbiBWYWxpZEhhbmRsZQogICAgV2luZG93c0Vycm9yOiBbRXJybm8gMTI2XSBUaGUgc3BlY2lmaWVkIG1vZHVsZSBjb3VsZCBub3QgYmUgZm91bmQuCiAgICA+Pj4KQEAgLTU2NCw3ICs1NjQsNyBAQAogICAgMCA1CiAgICA+Pj4gUE9JTlQoMSwgMiwgMykKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPworICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgVmFsdWVFcnJvcjogdG9vIG1hbnkgaW5pdGlhbGl6ZXJzCiAgICA+Pj4KIApAQCAtNzY3LDcgKzc2Nyw3IEBACiAgICA8Y2xhc3MgJ2N0eXBlcy5MUF9jX2xvbmcnPgogICAgPj4+IFBJKDQyKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICBUeXBlRXJyb3I6IGV4cGVjdGVkIGNfbG9uZyBpbnN0ZWFkIG9mIGludAogICAgPj4+IFBJKGNfaW50KDQyKSkKICAgIDxjdHlwZXMuTFBfY19sb25nIG9iamVjdCBhdCAweC4uLj4KQEAgLTg0Myw3ICs4NDMsNyBAQAogCiAgICA+Pj4gYmFyLnZhbHVlcyA9IChjX2J5dGUgKiA0KSgpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgIFR5cGVFcnJvcjogaW5jb21wYXRpYmxlIHR5cGVzLCBjX2J5dGVfQXJyYXlfNCBpbnN0YW5jZSBpbnN0ZWFkIG9mIExQX2NfbG9uZyBpbnN0YW5jZQogICAgPj4+CiAKQEAgLTg5NCw3ICs4OTQsNyBAQAogICAgLi4uICAgICAgICAgICAgICAgICAoIm5leHQiLCBQT0lOVEVSKGNlbGwpKV0KICAgIC4uLgogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIGNlbGwKICAgIE5hbWVFcnJvcjogbmFtZSAnY2VsbCcgaXMgbm90IGRlZmluZWQKICAgID4+PgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdCBiL0RvYy9saWJyYXJ5L2N1cnNlcy5yc3QKaW5kZXggYzcwYWZlMy4uNWVhMjQ2YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3Vyc2VzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdXJzZXMucnN0CkBAIC02NjMsNiArNjYzLDEyIEBACiAgICBjaGFyYWN0ZXIgcHJldmlvdXNseSBwYWludGVyIGF0IHRoYXQgbG9jYXRpb24uICBCeSBkZWZhdWx0LCB0aGUgY2hhcmFjdGVyCiAgICBwb3NpdGlvbiBhbmQgYXR0cmlidXRlcyBhcmUgdGhlIGN1cnJlbnQgc2V0dGluZ3MgZm9yIHRoZSB3aW5kb3cgb2JqZWN0LgogCisgICAuLiBub3RlOjoKKworICAgICAgV3JpdGluZyBvdXRzaWRlIHRoZSB3aW5kb3csIHN1YndpbmRvdywgb3IgcGFkIHJhaXNlcyBhIDpleGM6YGN1cnNlcy5lcnJvcmAuCisgICAgICBBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHRoZSBsb3dlciByaWdodCBjb3JuZXIgb2YgYSB3aW5kb3csIHN1YndpbmRvdywKKyAgICAgIG9yIHBhZCB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlvbiB0byBiZSByYWlzZWQgYWZ0ZXIgdGhlIGNoYXJhY3RlciBpcyBwcmludGVkLgorCiAKIC4uIG1ldGhvZDo6IHdpbmRvdy5hZGRuc3RyKHN0ciwgblssIGF0dHJdKQogICAgICAgICAgICAgd2luZG93LmFkZG5zdHIoeSwgeCwgc3RyLCBuWywgYXR0cl0pCkBAIC02NzcsNiArNjgzLDEyIEBACiAgICBQYWludCB0aGUgc3RyaW5nICpzdHIqIGF0IGBgKHksIHgpYGAgd2l0aCBhdHRyaWJ1dGVzICphdHRyKiwgb3ZlcndyaXRpbmcKICAgIGFueXRoaW5nIHByZXZpb3VzbHkgb24gdGhlIGRpc3BsYXkuCiAKKyAgIC4uIG5vdGU6OgorCisgICAgICBXcml0aW5nIG91dHNpZGUgdGhlIHdpbmRvdywgc3Vid2luZG93LCBvciBwYWQgcmFpc2VzIDpleGM6YGN1cnNlcy5lcnJvcmAuCisgICAgICBBdHRlbXB0aW5nIHRvIHdyaXRlIHRvIHRoZSBsb3dlciByaWdodCBjb3JuZXIgb2YgYSB3aW5kb3csIHN1YndpbmRvdywKKyAgICAgIG9yIHBhZCB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlvbiB0byBiZSByYWlzZWQgYWZ0ZXIgdGhlIHN0cmluZyBpcyBwcmludGVkLgorCiAKIC4uIG1ldGhvZDo6IHdpbmRvdy5hdHRyb2ZmKGF0dHIpCiAKQEAgLTc2NSwxMSArNzc3LDExIEBACiAgICAgICAgICAgICB3aW5kb3cuY2hnYXQoeSwgeCwgbnVtLCBhdHRyKQogCiAgICBTZXQgdGhlIGF0dHJpYnV0ZXMgb2YgKm51bSogY2hhcmFjdGVycyBhdCB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24sIG9yIGF0Ci0gICBwb3NpdGlvbiBgYCh5LCB4KWBgIGlmIHN1cHBsaWVkLiBJZiBubyB2YWx1ZSBvZiAqbnVtKiBpcyBnaXZlbiBvciAqbnVtKiA9IC0xLAotICAgdGhlIGF0dHJpYnV0ZSB3aWxsICBiZSBzZXQgb24gYWxsIHRoZSBjaGFyYWN0ZXJzIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuICBUaGlzCi0gICBmdW5jdGlvbiBkb2VzIG5vdCBtb3ZlIHRoZSBjdXJzb3IuIFRoZSBjaGFuZ2VkIGxpbmUgd2lsbCBiZSB0b3VjaGVkIHVzaW5nIHRoZQotICAgOm1ldGg6YHRvdWNobGluZWAgbWV0aG9kIHNvIHRoYXQgdGhlIGNvbnRlbnRzIHdpbGwgYmUgcmVkaXNwbGF5ZWQgYnkgdGhlIG5leHQKLSAgIHdpbmRvdyByZWZyZXNoLgorICAgcG9zaXRpb24gYGAoeSwgeClgYCBpZiBzdXBwbGllZC4gSWYgKm51bSogaXMgbm90IGdpdmVuIG9yIGlzIGBgLTFgYCwKKyAgIHRoZSBhdHRyaWJ1dGUgd2lsbCBiZSBzZXQgb24gYWxsIHRoZSBjaGFyYWN0ZXJzIHRvIHRoZSBlbmQgb2YgdGhlIGxpbmUuICBUaGlzCisgICBmdW5jdGlvbiBtb3ZlcyBjdXJzb3IgdG8gcG9zaXRpb24gYGAoeSwgeClgYCBpZiBzdXBwbGllZC4gVGhlIGNoYW5nZWQgbGluZQorICAgd2lsbCBiZSB0b3VjaGVkIHVzaW5nIHRoZSA6bWV0aDpgdG91Y2hsaW5lYCBtZXRob2Qgc28gdGhhdCB0aGUgY29udGVudHMgd2lsbAorICAgYmUgcmVkaXNwbGF5ZWQgYnkgdGhlIG5leHQgd2luZG93IHJlZnJlc2guCiAKIAogLi4gbWV0aG9kOjogd2luZG93LmNsZWFyKCkKQEAgLTEyMzQsMjcgKzEyNDYsNjMgQEAKICAgIEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCB2ZXJzaW9uIG9mIHRoZSBtb2R1bGUuICBBbHNvIGF2YWlsYWJsZSBhcwogICAgOmNvbnN0OmBfX3ZlcnNpb25fX2AuCiAKLVNldmVyYWwgY29uc3RhbnRzIGFyZSBhdmFpbGFibGUgdG8gc3BlY2lmeSBjaGFyYWN0ZXIgY2VsbCBhdHRyaWJ1dGVzOgorU29tZSBjb25zdGFudHMgYXJlIGF2YWlsYWJsZSB0byBzcGVjaWZ5IGNoYXJhY3RlciBjZWxsIGF0dHJpYnV0ZXMuCitUaGUgZXhhY3QgY29uc3RhbnRzIGF2YWlsYWJsZSBhcmUgc3lzdGVtIGRlcGVuZGVudC4KIAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBBdHRyaWJ1dGUgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgfAogKz09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09KwotfCBgYEFfQUxUQ0hBUlNFVGBgIHwgQWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgbW9kZS4gfAorfCBgYEFfQUxUQ0hBUlNFVGBgIHwgQWx0ZXJuYXRlIGNoYXJhY3RlciBzZXQgbW9kZSAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYEFfQkxJTktgYCAgICAgIHwgQmxpbmsgbW9kZS4gICAgICAgICAgICAgICAgICAgfAorfCBgYEFfQkxJTktgYCAgICAgIHwgQmxpbmsgbW9kZSAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYEFfQk9MRGBgICAgICAgIHwgQm9sZCBtb2RlLiAgICAgICAgICAgICAgICAgICAgfAorfCBgYEFfQk9MRGBgICAgICAgIHwgQm9sZCBtb2RlICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYEFfRElNYGAgICAgICAgIHwgRGltIG1vZGUuICAgICAgICAgICAgICAgICAgICAgfAorfCBgYEFfRElNYGAgICAgICAgIHwgRGltIG1vZGUgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYEFfTk9STUFMYGAgICAgIHwgTm9ybWFsIGF0dHJpYnV0ZS4gICAgICAgICAgICAgfAorfCBgYEFfSU5WSVNgYCAgICAgIHwgSW52aXNpYmxlIG9yIGJsYW5rIG1vZGUgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYEFfTk9STUFMYGAgICAgIHwgTm9ybWFsIGF0dHJpYnV0ZSAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYEFfUFJPVEVDVGBgICAgIHwgUHJvdGVjdGVkIG1vZGUgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBgYEFfUkVWRVJTRWBgICAgIHwgUmV2ZXJzZSBiYWNrZ3JvdW5kIGFuZCAgICAgICAgfAotfCAgICAgICAgICAgICAgICAgIHwgZm9yZWdyb3VuZCBjb2xvcnMuICAgICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgIHwgZm9yZWdyb3VuZCBjb2xvcnMgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYEFfU1RBTkRPVVRgYCAgIHwgU3RhbmRvdXQgbW9kZS4gICAgICAgICAgICAgICAgfAorfCBgYEFfU1RBTkRPVVRgYCAgIHwgU3RhbmRvdXQgbW9kZSAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYEFfVU5ERVJMSU5FYGAgIHwgVW5kZXJsaW5lIG1vZGUuICAgICAgICAgICAgICAgfAorfCBgYEFfVU5ERVJMSU5FYGAgIHwgVW5kZXJsaW5lIG1vZGUgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYEFfSE9SSVpPTlRBTGBgIHwgSG9yaXpvbnRhbCBoaWdobGlnaHQgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYEFfTEVGVGBgICAgICAgIHwgTGVmdCBoaWdobGlnaHQgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYEFfTE9XYGAgICAgICAgIHwgTG93IGhpZ2hsaWdodCAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYEFfUklHSFRgYCAgICAgIHwgUmlnaHQgaGlnaGxpZ2h0ICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYEFfVE9QYGAgICAgICAgIHwgVG9wIGhpZ2hsaWdodCAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYEFfVkVSVElDQUxgYCAgIHwgVmVydGljYWwgaGlnaGxpZ2h0ICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworfCBgYEFfQ0hBUlRFWFRgYCAgIHwgQml0LW1hc2sgdG8gZXh0cmFjdCBhICAgICAgICAgfAorfCAgICAgICAgICAgICAgICAgIHwgY2hhcmFjdGVyICAgICAgICAgICAgICAgICAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworCitTZXZlcmFsIGNvbnN0YW50cyBhcmUgYXZhaWxhYmxlIHRvIGV4dHJhY3QgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGVzIHJldHVybmVkCitieSBzb21lIG1ldGhvZHMuCisKKystLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgQml0LW1hc2sgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgIHwKKys9PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKK3wgYGBBX0FUVFJJQlVURVNgYCB8IEJpdC1tYXNrIHRvIGV4dHJhY3QgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXMgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBBX0NIQVJURVhUYGAgICB8IEJpdC1tYXNrIHRvIGV4dHJhY3QgYSAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICB8IGNoYXJhY3RlciAgICAgICAgICAgICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgYGBBX0NPTE9SYGAgICAgICB8IEJpdC1tYXNrIHRvIGV4dHJhY3QgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICB8IGNvbG9yLXBhaXIgZmllbGQgaW5mb3JtYXRpb24gIHwKICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogS2V5cyBhcmUgcmVmZXJyZWQgdG8gYnkgaW50ZWdlciBjb25zdGFudHMgd2l0aCBuYW1lcyBzdGFydGluZyB3aXRoICBgYEtFWV9gYC4KQEAgLTE0MDYsNyArMTQ1NCw3IEBACiArLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgYGBLRVlfU0VPTGBgICAgICAgfCBTaGlmdGVkIENsZWFyIGxpbmUgICAgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgS0VZX1NFWElUYGAgICAgIHwgU2hpZnRlZCBEeGl0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgYGBLRVlfU0VYSVRgYCAgICAgfCBTaGlmdGVkIEV4aXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IGBgS0VZX1NGSU5EYGAgICAgIHwgU2hpZnRlZCBGaW5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0IGIvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CmluZGV4IDVjNGZmMzguLmQyYzFjNTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKQEAgLTEzMjMsNyArMTMyMyw3IEBACiAKIEV4YW1wbGU6CiAKLSAgICA+Pj4gZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZSwgdHppbmZvCisgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IHRpbWUsIHR6aW5mbywgdGltZWRlbHRhCiAgICAgPj4+IGNsYXNzIEdNVDEodHppbmZvKToKICAgICAuLi4gICAgIGRlZiB1dGNvZmZzZXQoc2VsZiwgZHQpOgogICAgIC4uLiAgICAgICAgIHJldHVybiB0aW1lZGVsdGEoaG91cnM9MSkKQEAgLTE1NjYsNyArMTU2Niw3IEBACiAKIC4uIHNlZWFsc286OgogCi0gICBgcHl0eiA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXR6Lz5gXworICAgYHB5dHogPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXR6Lz5gXwogICAgICAgVGhlIHN0YW5kYXJkIGxpYnJhcnkgaGFzIG5vIDpjbGFzczpgdHppbmZvYCBpbnN0YW5jZXMsIGJ1dAogICAgICAgdGhlcmUgZXhpc3RzIGEgdGhpcmQtcGFydHkgbGlicmFyeSB3aGljaCBicmluZ3MgdGhlICpJQU5BIHRpbWV6b25lCiAgICAgICBkYXRhYmFzZSogKGFsc28ga25vd24gYXMgdGhlIE9sc29uIGRhdGFiYXNlKSB0byBQeXRob246ICpweXR6Ki4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RpZmZsaWIucnN0IGIvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKaW5kZXggYzZiZjNlZi4uMDFhM2JmYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlmZmxpYi5yc3QKQEAgLTc1Nyw4ICs3NTcsMTAgQEAKICAgICAgICAjIHdlJ3JlIHBhc3NpbmcgdGhlc2UgYXMgYXJndW1lbnRzIHRvIHRoZSBkaWZmIGZ1bmN0aW9uCiAgICAgICAgZnJvbWRhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQoZnJvbWZpbGUpLnN0X210aW1lKQogICAgICAgIHRvZGF0ZSA9IHRpbWUuY3RpbWUob3Muc3RhdCh0b2ZpbGUpLnN0X210aW1lKQotICAgICAgIGZyb21saW5lcyA9IG9wZW4oZnJvbWZpbGUsICdVJykucmVhZGxpbmVzKCkKLSAgICAgICB0b2xpbmVzID0gb3Blbih0b2ZpbGUsICdVJykucmVhZGxpbmVzKCkKKyAgICAgICB3aXRoIG9wZW4oZnJvbWZpbGUsICdVJykgYXMgZjoKKyAgICAgICAgICAgZnJvbWxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgICAgIHdpdGggb3Blbih0b2ZpbGUsICdVJykgYXMgZjoKKyAgICAgICAgICAgdG9saW5lcyA9IGYucmVhZGxpbmVzKCkKIAogICAgICAgIGlmIG9wdGlvbnMudToKICAgICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsIHRvZmlsZSwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Rpc3RyaWJ1dGlvbi5yc3QgYi9Eb2MvbGlicmFyeS9kaXN0cmlidXRpb24ucnN0CmluZGV4IGI1NjA5OTkuLjIxZGQxOGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Rpc3RyaWJ1dGlvbi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGlzdHJpYnV0aW9uLnJzdApAQCAtNCw3ICs0LDcgQEAKIAogVGhlc2UgbGlicmFyaWVzIGhlbHAgeW91IHdpdGggcHVibGlzaGluZyBhbmQgaW5zdGFsbGluZyBQeXRob24gc29mdHdhcmUuCiBXaGlsZSB0aGVzZSBtb2R1bGVzIGFyZSBkZXNpZ25lZCB0byB3b3JrIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlCi1gUHl0aG9uIFBhY2thZ2UgSW5kZXggPGh0dHBzOi8vcHlwaS5weXRob24ub3JnPmBfXywgdGhleSBjYW4gYWxzbyBiZSB1c2VkCitgUHl0aG9uIFBhY2thZ2UgSW5kZXggPGh0dHBzOi8vcHlwaS5vcmc+YF9fLCB0aGV5IGNhbiBhbHNvIGJlIHVzZWQKIHdpdGggYSBsb2NhbCBpbmRleCBzZXJ2ZXIsIG9yIHdpdGhvdXQgYW55IGluZGV4IHNlcnZlciBhdCBhbGwuCiAKIC4uIHRvY3RyZWU6OgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZG9jdGVzdC5yc3QgYi9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdAppbmRleCA0NTA2ODA1Li5jZjY3YjIzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9kb2N0ZXN0LnJzdApAQCAtNDI1LDcgKzQyNSw3IEBACiAKICAgID4+PiBbMSwgMiwgM10ucmVtb3ZlKDQyKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICBWYWx1ZUVycm9yOiBsaXN0LnJlbW92ZSh4KTogeCBub3QgaW4gbGlzdAogCiBUaGF0IGRvY3Rlc3Qgc3VjY2VlZHMgaWYgOmV4YzpgVmFsdWVFcnJvcmAgaXMgcmFpc2VkLCB3aXRoIHRoZSBgYGxpc3QucmVtb3ZlKHgpOgpAQCAtNDQ5LDcgKzQ0OSw3IEBACiAKICAgID4+PiByYWlzZSBWYWx1ZUVycm9yKCdtdWx0aVxuICAgIGxpbmVcbmRldGFpbCcpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgIFZhbHVlRXJyb3I6IG11bHRpCiAgICAgICAgbGluZQogICAgZGV0YWlsCkBAIC01MzAsOCArNTMwLDggQEAKIAogQSBudW1iZXIgb2Ygb3B0aW9uIGZsYWdzIGNvbnRyb2wgdmFyaW91cyBhc3BlY3RzIG9mIGRvY3Rlc3QncyBiZWhhdmlvci4KIFN5bWJvbGljIG5hbWVzIGZvciB0aGUgZmxhZ3MgYXJlIHN1cHBsaWVkIGFzIG1vZHVsZSBjb25zdGFudHMsIHdoaWNoIGNhbiBiZQotb3InZWQgdG9nZXRoZXIgYW5kIHBhc3NlZCB0byB2YXJpb3VzIGZ1bmN0aW9ucy4gIFRoZSBuYW1lcyBjYW4gYWxzbyBiZSB1c2VkIGluCi06cmVmOmBkb2N0ZXN0IGRpcmVjdGl2ZXMgPGRvY3Rlc3QtZGlyZWN0aXZlcz5gLgorOnJlZjpgYml0d2lzZSBPUmVkIDxiaXR3aXNlPmAgdG9nZXRoZXIgYW5kIHBhc3NlZCB0byB2YXJpb3VzIGZ1bmN0aW9ucy4KK1RoZSBuYW1lcyBjYW4gYWxzbyBiZSB1c2VkIGluIDpyZWY6YGRvY3Rlc3QgZGlyZWN0aXZlcyA8ZG9jdGVzdC1kaXJlY3RpdmVzPmAuCiAKIFRoZSBmaXJzdCBncm91cCBvZiBvcHRpb25zIGRlZmluZSB0ZXN0IHNlbWFudGljcywgY29udHJvbGxpbmcgYXNwZWN0cyBvZiBob3cKIGRvY3Rlc3QgZGVjaWRlcyB3aGV0aGVyIGFjdHVhbCBvdXRwdXQgbWF0Y2hlcyBhbiBleGFtcGxlJ3MgZXhwZWN0ZWQgb3V0cHV0OgpAQCAtNjA3LDcgKzYwNyw3IEBACiAKICAgICAgID4+PiAoMSwgMilbM10gPSAnbW9vJwogICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CisgICAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICAgICBUeXBlRXJyb3I6IG9iamVjdCBkb2Vzbid0IHN1cHBvcnQgaXRlbSBhc3NpZ25tZW50CiAKICAgIHBhc3NlcyB1bmRlciBQeXRob24gMi4zIGFuZCBsYXRlciBQeXRob24gdmVyc2lvbnMgd2l0aCB0aGUgZmxhZyBzcGVjaWZpZWQsCkBAIC0xMTYxLDEwICsxMTYxLDExIEBACiAgICB0aGUgb3B0aW9uIGZsYWdzIHNwZWNpZmllZCBmb3IgdGhlIHRlc3QgY2FzZSB3aGVuIHRoZSA6Y2xhc3M6YERvY1Rlc3RDYXNlYAogICAgaW5zdGFuY2Ugd2FzIGNvbnN0cnVjdGVkLiAgSWYgbm8gcmVwb3J0aW5nIGZsYWdzIHdlcmUgc3BlY2lmaWVkICh3aGljaCBpcyB0aGUKICAgIHR5cGljYWwgYW5kIGV4cGVjdGVkIGNhc2UpLCA6bW9kOmBkb2N0ZXN0YCdzIDptb2Q6YHVuaXR0ZXN0YCByZXBvcnRpbmcgZmxhZ3MgYXJlCi0gICBvcidlZCBpbnRvIHRoZSBvcHRpb24gZmxhZ3MsIGFuZCB0aGUgb3B0aW9uIGZsYWdzIHNvIGF1Z21lbnRlZCBhcmUgcGFzc2VkIHRvIHRoZQotICAgOmNsYXNzOmBEb2NUZXN0UnVubmVyYCBpbnN0YW5jZSBjcmVhdGVkIHRvIHJ1biB0aGUgZG9jdGVzdC4gIElmIGFueSByZXBvcnRpbmcKLSAgIGZsYWdzIHdlcmUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgRG9jVGVzdENhc2VgIGluc3RhbmNlIHdhcyBjb25zdHJ1Y3RlZCwKLSAgIDptb2Q6YGRvY3Rlc3RgJ3MgOm1vZDpgdW5pdHRlc3RgIHJlcG9ydGluZyBmbGFncyBhcmUgaWdub3JlZC4KKyAgIDpyZWY6YGJpdHdpc2UgT1JlZCA8Yml0d2lzZT5gIGludG8gdGhlIG9wdGlvbiBmbGFncywgYW5kIHRoZSBvcHRpb24gZmxhZ3MKKyAgIHNvIGF1Z21lbnRlZCBhcmUgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YERvY1Rlc3RSdW5uZXJgIGluc3RhbmNlIGNyZWF0ZWQgdG8KKyAgIHJ1biB0aGUgZG9jdGVzdC4gIElmIGFueSByZXBvcnRpbmcgZmxhZ3Mgd2VyZSBzcGVjaWZpZWQgd2hlbiB0aGUKKyAgIDpjbGFzczpgRG9jVGVzdENhc2VgIGluc3RhbmNlIHdhcyBjb25zdHJ1Y3RlZCwgOm1vZDpgZG9jdGVzdGAncworICAgOm1vZDpgdW5pdHRlc3RgIHJlcG9ydGluZyBmbGFncyBhcmUgaWdub3JlZC4KIAogICAgVGhlIHZhbHVlIG9mIHRoZSA6bW9kOmB1bml0dGVzdGAgcmVwb3J0aW5nIGZsYWdzIGluIGVmZmVjdCBiZWZvcmUgdGhlIGZ1bmN0aW9uCiAgICB3YXMgY2FsbGVkIGlzIHJldHVybmVkIGJ5IHRoZSBmdW5jdGlvbi4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKaW5kZXggZGNmN2I1OS4uNWNiYjRkZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwubWltZS5yc3QKQEAgLTIxMCw3ICsyMTAsNyBAQAogCiAgICBVbmxlc3MgdGhlIGBgX2NoYXJzZXRgYCBwYXJhbWV0ZXIgaXMgZXhwbGljaXRseSBzZXQgdG8gYGBOb25lYGAsIHRoZQogICAgTUlNRVRleHQgb2JqZWN0IGNyZWF0ZWQgd2lsbCBoYXZlIGJvdGggYSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIKLSAgIHdpdGggYSBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIGFuZCBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuZGNvZGluZ2AKKyAgIHdpdGggYSBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIGFuZCBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAogICAgaGVhZGVyLiAgVGhpcyBtZWFucyB0aGF0IGEgc3Vic2VxdWVudCBgYHNldF9wYXlsb2FkYGAgY2FsbCB3aWxsIG5vdCByZXN1bHQKICAgIGluIGFuIGVuY29kZWQgcGF5bG9hZCwgZXZlbiBpZiBhIGNoYXJzZXQgaXMgcGFzc2VkIGluIHRoZSBgYHNldF9wYXlsb2FkYGAKICAgIGNvbW1hbmQuICBZb3UgY2FuICJyZXNldCIgdGhpcyBiZWhhdmlvciBieSBkZWxldGluZyB0aGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2Vuc3VyZXBpcC5yc3QgYi9Eb2MvbGlicmFyeS9lbnN1cmVwaXAucnN0CmluZGV4IGE2MzU4ZTQuLmI2ZjcxMjAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2Vuc3VyZXBpcC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW5zdXJlcGlwLnJzdApAQCAtNzYsNiArNzYsOSBAQAogKiBgYC0tbm8tZGVmYXVsdC1waXBgYDogaWYgYSBub24tZGVmYXVsdCBpbnN0YWxsYXRpb24gaXMgcmVxdWVzdCwgdGhlIGBgcGlwYGAKICAgc2NyaXB0IHdpbGwgKm5vdCogYmUgaW5zdGFsbGVkLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNy4xNQorICAgVGhlIGV4aXQgc3RhdHVzIGlzIG5vbi16ZXJvIGlmIHRoZSBjb21tYW5kIGZhaWxzLgorCiAKIE1vZHVsZSBBUEkKIC0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2V4Y2VwdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKaW5kZXggZmUxNDY1Ni4uODc1N2M2YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZXhjZXB0aW9ucy5yc3QKQEAgLTQzOSw3ICs0MzksNyBAQAogCiAuLiBleGNlcHRpb246OiBWYWx1ZUVycm9yCiAKLSAgIFJhaXNlZCB3aGVuIGEgYnVpbHQtaW4gb3BlcmF0aW9uIG9yIGZ1bmN0aW9uIHJlY2VpdmVzIGFuIGFyZ3VtZW50IHRoYXQgaGFzIHRoZQorICAgUmFpc2VkIHdoZW4gYW4gb3BlcmF0aW9uIG9yIGZ1bmN0aW9uIHJlY2VpdmVzIGFuIGFyZ3VtZW50IHRoYXQgaGFzIHRoZQogICAgcmlnaHQgdHlwZSBidXQgYW4gaW5hcHByb3ByaWF0ZSB2YWx1ZSwgYW5kIHRoZSBzaXR1YXRpb24gaXMgbm90IGRlc2NyaWJlZCBieSBhCiAgICBtb3JlIHByZWNpc2UgZXhjZXB0aW9uIHN1Y2ggYXMgOmV4YzpgSW5kZXhFcnJvcmAuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ZubWF0Y2gucnN0IGIvRG9jL2xpYnJhcnkvZm5tYXRjaC5yc3QKaW5kZXggM2RmZWMyZC4uNDJiYmY3NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZm5tYXRjaC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZm5tYXRjaC5yc3QKQEAgLTQ0LDkgKzQ0LDggQEAKIC4uIGZ1bmN0aW9uOjogZm5tYXRjaChmaWxlbmFtZSwgcGF0dGVybikKIAogICAgVGVzdCB3aGV0aGVyIHRoZSAqZmlsZW5hbWUqIHN0cmluZyBtYXRjaGVzIHRoZSAqcGF0dGVybiogc3RyaW5nLCByZXR1cm5pbmcKLSAgIDpjb25zdDpgVHJ1ZWAgb3IgOmNvbnN0OmBGYWxzZWAuICBJZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBpcyBjYXNlLWluc2Vuc2l0aXZlLAotICAgdGhlbiBib3RoIHBhcmFtZXRlcnMgd2lsbCBiZSBub3JtYWxpemVkIHRvIGFsbCBsb3dlci0gb3IgdXBwZXItY2FzZSBiZWZvcmUKLSAgIHRoZSBjb21wYXJpc29uIGlzIHBlcmZvcm1lZC4gIDpmdW5jOmBmbm1hdGNoY2FzZWAgY2FuIGJlIHVzZWQgdG8gcGVyZm9ybSBhCisgICA6Y29uc3Q6YFRydWVgIG9yIDpjb25zdDpgRmFsc2VgLiAgQm90aCBwYXJhbWV0ZXJzIGFyZSBjYXNlLW5vcm1hbGl6ZWQKKyAgIHVzaW5nIDpmdW5jOmBvcy5wYXRoLm5vcm1jYXNlYC4gOmZ1bmM6YGZubWF0Y2hjYXNlYCBjYW4gYmUgdXNlZCB0byBwZXJmb3JtIGEKICAgIGNhc2Utc2Vuc2l0aXZlIGNvbXBhcmlzb24sIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGF0J3Mgc3RhbmRhcmQgZm9yIHRoZQogICAgb3BlcmF0aW5nIHN5c3RlbS4KIApAQCAtNjQsNyArNjMsOCBAQAogLi4gZnVuY3Rpb246OiBmbm1hdGNoY2FzZShmaWxlbmFtZSwgcGF0dGVybikKIAogICAgVGVzdCB3aGV0aGVyICpmaWxlbmFtZSogbWF0Y2hlcyAqcGF0dGVybiosIHJldHVybmluZyA6Y29uc3Q6YFRydWVgIG9yCi0gICA6Y29uc3Q6YEZhbHNlYDsgdGhlIGNvbXBhcmlzb24gaXMgY2FzZS1zZW5zaXRpdmUuCisgICA6Y29uc3Q6YEZhbHNlYDsgdGhlIGNvbXBhcmlzb24gaXMgY2FzZS1zZW5zaXRpdmUgYW5kIGRvZXMgbm90IGFwcGx5CisgICA6ZnVuYzpgb3MucGF0aC5ub3JtY2FzZWAuCiAKIAogLi4gZnVuY3Rpb246OiBmaWx0ZXIobmFtZXMsIHBhdHRlcm4pCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mcGVjdGwucnN0IGIvRG9jL2xpYnJhcnkvZnBlY3RsLnJzdAppbmRleCA4Y2E2NzFiLi5kNDhiODIwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mcGVjdGwucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ZwZWN0bC5yc3QKQEAgLTg4LDcgKzg4LDcgQEAKICAgID4+PiBpbXBvcnQgbWF0aAogICAgPj4+IG1hdGguZXhwKDEwMDApCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgIEZsb2F0aW5nUG9pbnRFcnJvcjogaW4gbWF0aF8xCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2Z0cGxpYi5yc3QKaW5kZXggYjE1NWRhZi4uNGZlNDA3NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZnRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9mdHBsaWIucnN0CkBAIC0yNDMsMTcgKzI0MywxNyBAQAogICAgdGhlIHRyYWlsaW5nIENSTEYgc3RyaXBwZWQuICBUaGUgZGVmYXVsdCAqY2FsbGJhY2sqIHByaW50cyB0aGUgbGluZSB0byBgYHN5cy5zdGRvdXRgYC4KIAogCi0uLiBtZXRob2Q6OiBGVFAuc2V0X3Bhc3YoYm9vbGVhbikKKy4uIG1ldGhvZDo6IEZUUC5zZXRfcGFzdih2YWwpCiAKLSAgIEVuYWJsZSAicGFzc2l2ZSIgbW9kZSBpZiAqYm9vbGVhbiogaXMgdHJ1ZSwgb3RoZXIgZGlzYWJsZSBwYXNzaXZlIG1vZGUuICAoSW4KKyAgIEVuYWJsZSAicGFzc2l2ZSIgbW9kZSBpZiAqdmFsKiBpcyB0cnVlLCBvdGhlcndpc2UgZGlzYWJsZSBwYXNzaXZlIG1vZGUuICAoSW4KICAgIFB5dGhvbiAyLjAgYW5kIGJlZm9yZSwgcGFzc2l2ZSBtb2RlIHdhcyBvZmYgYnkgZGVmYXVsdDsgaW4gUHl0aG9uIDIuMSBhbmQgbGF0ZXIsCiAgICBpdCBpcyBvbiBieSBkZWZhdWx0LikKIAogCi0uLiBtZXRob2Q6OiBGVFAuc3RvcmJpbmFyeShjb21tYW5kLCBmaWxlWywgYmxvY2tzaXplLCBjYWxsYmFjaywgcmVzdF0pCisuLiBtZXRob2Q6OiBGVFAuc3RvcmJpbmFyeShjb21tYW5kLCBmcFssIGJsb2Nrc2l6ZSwgY2FsbGJhY2ssIHJlc3RdKQogCiAgICBTdG9yZSBhIGZpbGUgaW4gYmluYXJ5IHRyYW5zZmVyIG1vZGUuICAqY29tbWFuZCogc2hvdWxkIGJlIGFuIGFwcHJvcHJpYXRlCi0gICBgYFNUT1JgYCBjb21tYW5kOiBgYCJTVE9SIGZpbGVuYW1lImBgLiAqZmlsZSogaXMgYW4gb3BlbiBmaWxlIG9iamVjdCB3aGljaCBpcworICAgYGBTVE9SYGAgY29tbWFuZDogYGAiU1RPUiBmaWxlbmFtZSJgYC4gKmZwKiBpcyBhbiBvcGVuIGZpbGUgb2JqZWN0IHdoaWNoIGlzCiAgICByZWFkIHVudGlsIEVPRiB1c2luZyBpdHMgOm1ldGg6YHJlYWRgIG1ldGhvZCBpbiBibG9ja3Mgb2Ygc2l6ZSAqYmxvY2tzaXplKiB0bwogICAgcHJvdmlkZSB0aGUgZGF0YSB0byBiZSBzdG9yZWQuICBUaGUgKmJsb2Nrc2l6ZSogYXJndW1lbnQgZGVmYXVsdHMgdG8gODE5Mi4KICAgICpjYWxsYmFjayogaXMgYW4gb3B0aW9uYWwgc2luZ2xlIHBhcmFtZXRlciBjYWxsYWJsZSB0aGF0IGlzIGNhbGxlZApAQCAtMjY5LDExICsyNjksMTEgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMi43CiAgICAgICAqcmVzdCogcGFyYW1ldGVyIGFkZGVkLgogCi0uLiBtZXRob2Q6OiBGVFAuc3RvcmxpbmVzKGNvbW1hbmQsIGZpbGVbLCBjYWxsYmFja10pCisuLiBtZXRob2Q6OiBGVFAuc3RvcmxpbmVzKGNvbW1hbmQsIGZwWywgY2FsbGJhY2tdKQogCiAgICBTdG9yZSBhIGZpbGUgaW4gQVNDSUkgdHJhbnNmZXIgbW9kZS4gICpjb21tYW5kKiBzaG91bGQgYmUgYW4gYXBwcm9wcmlhdGUKICAgIGBgU1RPUmBgIGNvbW1hbmQgKHNlZSA6bWV0aDpgc3RvcmJpbmFyeWApLiAgTGluZXMgYXJlIHJlYWQgdW50aWwgRU9GIGZyb20gdGhlCi0gICBvcGVuIGZpbGUgb2JqZWN0ICpmaWxlKiB1c2luZyBpdHMgOm1ldGg6YH5maWxlLnJlYWRsaW5lYCBtZXRob2QgdG8gcHJvdmlkZQorICAgb3BlbiBmaWxlIG9iamVjdCAqZnAqIHVzaW5nIGl0cyA6bWV0aDpgfmZpbGUucmVhZGxpbmVgIG1ldGhvZCB0byBwcm92aWRlCiAgICB0aGUgZGF0YSB0byBiZSBzdG9yZWQuICAqY2FsbGJhY2sqIGlzIGFuIG9wdGlvbmFsIHNpbmdsZSBwYXJhbWV0ZXIgY2FsbGFibGUKICAgIHRoYXQgaXMgY2FsbGVkIG9uIGVhY2ggbGluZSBhZnRlciBpdCBpcyBzZW50LgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvZnVuY3Rpb25zLnJzdAppbmRleCBmMjk0YjZlLi40Mzg2ZTYwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9mdW5jdGlvbnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Z1bmN0aW9ucy5yc3QKQEAgLTE2LDcgKzE2LDcgQEAKIDpmdW5jOmBiYXNlc3RyaW5nYCAgIDpmdW5jOmBleGVjZmlsZWAgICA6ZnVuYzpgaXNzdWJjbGFzc2AgIDpmdW5jOmBwcmludGAgICAgICA6ZnVuYzpgc3VwZXJgCiA6ZnVuYzpgYmluYCAgICAgICAgICA6ZnVuYzpgZmlsZWAgICAgICAgOmZ1bmM6YGl0ZXJgICAgICAgICA6ZnVuYzpgcHJvcGVydHlgICAgOmZ1bmM6YHR1cGxlYAogOmZ1bmM6YGJvb2xgICAgICAgICAgOmZ1bmM6YGZpbHRlcmAgICAgIDpmdW5jOmBsZW5gICAgICAgICAgOmZ1bmM6YHJhbmdlYCAgICAgIDpmdW5jOmB0eXBlYAotOmZ1bmM6YGJ5dGVhcnJheWAgICAgOmZ1bmM6YGZsb2F0YCAgICAgIDpmdW5jOmBsaXN0YCAgICAgICAgOmZ1bmM6YHJhd19pbnB1dGAgIDpmdW5jOmB1bmljaHJgCis6ZnVuYzpgYnl0ZWFycmF5YCAgICA6ZnVuYzpgZmxvYXRgICAgICAgfGZ1bmMtbGlzdHxfICAgICAgICA6ZnVuYzpgcmF3X2lucHV0YCAgOmZ1bmM6YHVuaWNocmAKIDpmdW5jOmBjYWxsYWJsZWAgICAgIDpmdW5jOmBmb3JtYXRgICAgICA6ZnVuYzpgbG9jYWxzYCAgICAgIDpmdW5jOmByZWR1Y2VgICAgICA6ZnVuYzpgdW5pY29kZWAKIDpmdW5jOmBjaHJgICAgICAgICAgIHxmdW5jLWZyb3plbnNldHxfICA6ZnVuYzpgbG9uZ2AgICAgICAgIDpmdW5jOmByZWxvYWRgICAgICA6ZnVuYzpgdmFyc2AKIDpmdW5jOmBjbGFzc21ldGhvZGAgIDpmdW5jOmBnZXRhdHRyYCAgICA6ZnVuYzpgbWFwYCAgICAgICAgIHxmdW5jLXJlcHJ8XyAgICAgICA6ZnVuYzpgeHJhbmdlYApAQCAtMzgsNiArMzgsNyBAQAogCiAuLiB8ZnVuYy1kaWN0fCByZXBsYWNlOjogYGBkaWN0KClgYAogLi4gfGZ1bmMtZnJvemVuc2V0fCByZXBsYWNlOjogYGBmcm96ZW5zZXQoKWBgCisuLiB8ZnVuYy1saXN0fCByZXBsYWNlOjogYGBsaXN0KClgYAogLi4gfGZ1bmMtbWVtb3J5dmlld3wgcmVwbGFjZTo6IGBgbWVtb3J5dmlldygpYGAKIC4uIHxmdW5jLXJlcHJ8IHJlcGxhY2U6OiBgYHJlcHIoKWBgCiAuLiB8ZnVuYy1zZXR8IHJlcGxhY2U6OiBgYHNldCgpYGAKQEAgLTYxNyw3ICs2MTgsNyBAQAogICAgICAgJzB4MUwnCiAKICAgIElmIHggaXMgbm90IGEgUHl0aG9uIDpjbGFzczpgaW50YCBvciA6Y2xhc3M6YGxvbmdgIG9iamVjdCwgaXQgaGFzIHRvCi0gICBkZWZpbmUgYW4gX19pbmRleF9fKCkgbWV0aG9kIHRoYXQgcmV0dXJucyBhbiBpbnRlZ2VyLgorICAgZGVmaW5lIGEgX19oZXhfXygpIG1ldGhvZCB0aGF0IHJldHVybnMgYSBzdHJpbmcuCiAKICAgIFNlZSBhbHNvIDpmdW5jOmBpbnRgIGZvciBjb252ZXJ0aW5nIGEgaGV4YWRlY2ltYWwgc3RyaW5nIHRvIGFuCiAgICBpbnRlZ2VyIHVzaW5nIGEgYmFzZSBvZiAxNi4KQEAgLTc0MCw3ICs3NDEsOSBAQAogICAgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5LCBzZXQsIG9yIGZyb3plbiBzZXQpLgogCiAKKy4uIF9mdW5jLWxpc3Q6CiAuLiBjbGFzczo6IGxpc3QoW2l0ZXJhYmxlXSkKKyAgIDpub2luZGV4OgogCiAgICBSZXR1cm4gYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlIHNhbWUgb3JkZXIgYXMgKml0ZXJhYmxlKidzCiAgICBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciBhIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9nZXR0ZXh0LnJzdCBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CmluZGV4IGY4ODVhZmIuLjRiNDg4M2EgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CisrKyBiL0RvYy9saWJyYXJ5L2dldHRleHQucnN0CkBAIC0xNDksNyArMTQ5LDcgQEAKIAogVGhlIGNsYXNzLWJhc2VkIEFQSSBvZiB0aGUgOm1vZDpgZ2V0dGV4dGAgbW9kdWxlIGdpdmVzIHlvdSBtb3JlIGZsZXhpYmlsaXR5IGFuZAogZ3JlYXRlciBjb252ZW5pZW5jZSB0aGFuIHRoZSBHTlUgOnByb2dyYW06YGdldHRleHRgIEFQSS4gIEl0IGlzIHRoZSByZWNvbW1lbmRlZAotd2F5IG9mIGxvY2FsaXppbmcgeW91ciBQeXRob24gYXBwbGljYXRpb25zIGFuZCBtb2R1bGVzLiAgOm1vZDpgZ2V0dGV4dGAgZGVmaW5lcword2F5IG9mIGxvY2FsaXppbmcgeW91ciBQeXRob24gYXBwbGljYXRpb25zIGFuZCBtb2R1bGVzLiAgOm1vZDpgIWdldHRleHRgIGRlZmluZXMKIGEgInRyYW5zbGF0aW9ucyIgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyB0aGUgcGFyc2luZyBvZiBHTlUgOmZpbGU6YC5tb2AgZm9ybWF0CiBmaWxlcywgYW5kIGhhcyBtZXRob2RzIGZvciByZXR1cm5pbmcgZWl0aGVyIHN0YW5kYXJkIDgtYml0IHN0cmluZ3Mgb3IgVW5pY29kZQogc3RyaW5ncy4gSW5zdGFuY2VzIG9mIHRoaXMgInRyYW5zbGF0aW9ucyIgY2xhc3MgY2FuIGFsc28gaW5zdGFsbCB0aGVtc2VsdmVzICBpbgpAQCAtMjM5LDcgKzIzOSw3IEBACiBzb3VyY2UgZmlsZSBtZXNzYWdlIHN0cmluZ3MgdG8gdHJhbnNsYXRlZCBtZXNzYWdlIHN0cmluZ3MuIFRoZSBiYXNlIGNsYXNzIHVzZWQKIGJ5IGFsbCB0cmFuc2xhdGlvbiBjbGFzc2VzIGlzIDpjbGFzczpgTnVsbFRyYW5zbGF0aW9uc2A7IHRoaXMgcHJvdmlkZXMgdGhlIGJhc2ljCiBpbnRlcmZhY2UgeW91IGNhbiB1c2UgdG8gd3JpdGUgeW91ciBvd24gc3BlY2lhbGl6ZWQgdHJhbnNsYXRpb24gY2xhc3Nlcy4gIEhlcmUKLWFyZSB0aGUgbWV0aG9kcyBvZiA6Y2xhc3M6YE51bGxUcmFuc2xhdGlvbnNgOgorYXJlIHRoZSBtZXRob2RzIG9mIDpjbGFzczpgIU51bGxUcmFuc2xhdGlvbnNgOgogCiAKIC4uIGNsYXNzOjogTnVsbFRyYW5zbGF0aW9ucyhbZnBdKQpAQCAtMjY4LDE0ICsyNjgsMTQgQEAKIAogICAgLi4gbWV0aG9kOjogZ2V0dGV4dChtZXNzYWdlKQogCi0gICAgICBJZiBhIGZhbGxiYWNrIGhhcyBiZWVuIHNldCwgZm9yd2FyZCA6bWV0aDpgZ2V0dGV4dGAgdG8gdGhlCisgICAgICBJZiBhIGZhbGxiYWNrIGhhcyBiZWVuIHNldCwgZm9yd2FyZCA6bWV0aDpgIWdldHRleHRgIHRvIHRoZQogICAgICAgZmFsbGJhY2suIE90aGVyd2lzZSwgcmV0dXJuIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UuICBPdmVycmlkZGVuIGluIGRlcml2ZWQKICAgICAgIGNsYXNzZXMuCiAKIAogICAgLi4gbWV0aG9kOjogbGdldHRleHQobWVzc2FnZSkKIAotICAgICAgSWYgYSBmYWxsYmFjayBoYXMgYmVlbiBzZXQsIGZvcndhcmQgOm1ldGg6YGxnZXR0ZXh0YCB0byB0aGUKKyAgICAgIElmIGEgZmFsbGJhY2sgaGFzIGJlZW4gc2V0LCBmb3J3YXJkIDptZXRoOmAhbGdldHRleHRgIHRvIHRoZQogICAgICAgZmFsbGJhY2suIE90aGVyd2lzZSwgcmV0dXJuIHRoZSB0cmFuc2xhdGVkIG1lc3NhZ2UuICBPdmVycmlkZGVuIGluIGRlcml2ZWQKICAgICAgIGNsYXNzZXMuCiAKQEAgLTI4NCwxNCArMjg0LDE0IEBACiAKICAgIC4uIG1ldGhvZDo6IHVnZXR0ZXh0KG1lc3NhZ2UpCiAKLSAgICAgIElmIGEgZmFsbGJhY2sgaGFzIGJlZW4gc2V0LCBmb3J3YXJkIDptZXRoOmB1Z2V0dGV4dGAgdG8gdGhlCisgICAgICBJZiBhIGZhbGxiYWNrIGhhcyBiZWVuIHNldCwgZm9yd2FyZCA6bWV0aDpgIXVnZXR0ZXh0YCB0byB0aGUKICAgICAgIGZhbGxiYWNrLiBPdGhlcndpc2UsIHJldHVybiB0aGUgdHJhbnNsYXRlZCBtZXNzYWdlIGFzIGEgVW5pY29kZQogICAgICAgc3RyaW5nLiBPdmVycmlkZGVuIGluIGRlcml2ZWQgY2xhc3Nlcy4KIAogCiAgICAuLiBtZXRob2Q6OiBuZ2V0dGV4dChzaW5ndWxhciwgcGx1cmFsLCBuKQogCi0gICAgICBJZiBhIGZhbGxiYWNrIGhhcyBiZWVuIHNldCwgZm9yd2FyZCA6bWV0aDpgbmdldHRleHRgIHRvIHRoZQorICAgICAgSWYgYSBmYWxsYmFjayBoYXMgYmVlbiBzZXQsIGZvcndhcmQgOm1ldGg6YCFuZ2V0dGV4dGAgdG8gdGhlCiAgICAgICBmYWxsYmFjay4gT3RoZXJ3aXNlLCByZXR1cm4gdGhlIHRyYW5zbGF0ZWQgbWVzc2FnZS4gIE92ZXJyaWRkZW4gaW4gZGVyaXZlZAogICAgICAgY2xhc3Nlcy4KIApAQCAtMzAwLDcgKzMwMCw3IEBACiAKICAgIC4uIG1ldGhvZDo6IGxuZ2V0dGV4dChzaW5ndWxhciwgcGx1cmFsLCBuKQogCi0gICAgICBJZiBhIGZhbGxiYWNrIGhhcyBiZWVuIHNldCwgZm9yd2FyZCA6bWV0aDpgbG5nZXR0ZXh0YCB0byB0aGUKKyAgICAgIElmIGEgZmFsbGJhY2sgaGFzIGJlZW4gc2V0LCBmb3J3YXJkIDptZXRoOmAhbG5nZXR0ZXh0YCB0byB0aGUKICAgICAgIGZhbGxiYWNrLiBPdGhlcndpc2UsIHJldHVybiB0aGUgdHJhbnNsYXRlZCBtZXNzYWdlLiAgT3ZlcnJpZGRlbiBpbiBkZXJpdmVkCiAgICAgICBjbGFzc2VzLgogCkBAIC0zMDksNyArMzA5LDcgQEAKIAogICAgLi4gbWV0aG9kOjogdW5nZXR0ZXh0KHNpbmd1bGFyLCBwbHVyYWwsIG4pCiAKLSAgICAgIElmIGEgZmFsbGJhY2sgaGFzIGJlZW4gc2V0LCBmb3J3YXJkIDptZXRoOmB1bmdldHRleHRgIHRvIHRoZSBmYWxsYmFjay4KKyAgICAgIElmIGEgZmFsbGJhY2sgaGFzIGJlZW4gc2V0LCBmb3J3YXJkIDptZXRoOmAhdW5nZXR0ZXh0YCB0byB0aGUgZmFsbGJhY2suCiAgICAgICBPdGhlcndpc2UsIHJldHVybiB0aGUgdHJhbnNsYXRlZCBtZXNzYWdlIGFzIGEgVW5pY29kZSBzdHJpbmcuIE92ZXJyaWRkZW4KICAgICAgIGluIGRlcml2ZWQgY2xhc3Nlcy4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaHR0cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9odHRwbGliLnJzdAppbmRleCAwYTlhNmRjLi44YmM4OTQ3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9odHRwbGliLnJzdApAQCAtNDczLDcgKzQ3Myw3IEBACiAuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5zZXRfdHVubmVsKGhvc3QscG9ydD1Ob25lLCBoZWFkZXJzPU5vbmUpCiAKICAgIFNldCB0aGUgaG9zdCBhbmQgdGhlIHBvcnQgZm9yIEhUVFAgQ29ubmVjdCBUdW5uZWxsaW5nLiBOb3JtYWxseSB1c2VkIHdoZW4KLSAgIGl0IGlzIHJlcXVpcmVkIHRvIGRvIEhUVFBTIENvbmVjdGlvbiB0aHJvdWdoIGEgcHJveHkgc2VydmVyLgorICAgaXQgaXMgcmVxdWlyZWQgdG8gZG8gSFRUUFMgQ29ubmVjdGlvbiB0aHJvdWdoIGEgcHJveHkgc2VydmVyLgogCiAgICBUaGUgaGVhZGVycyBhcmd1bWVudCBzaG91bGQgYmUgYSBtYXBwaW5nIG9mIGV4dHJhIEhUVFAgaGVhZGVycyB0byBzZW5kCiAgICB3aXRoIHRoZSBDT05ORUNUIHJlcXVlc3QuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pZGxlLnJzdCBiL0RvYy9saWJyYXJ5L2lkbGUucnN0CmluZGV4IDM0ZjlhODkuLjM4NDgyMzEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2lkbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2lkbGUucnN0CkBAIC0yNDAsNyArMjQwLDcgQEAKICAgIHNpbmdsZTogc3RhY2sgdmlld2VyCiAKIERlYnVnZ2VyICh0b2dnbGUpCi0gICBXaGVuIGFjdGl2ZWQsIGNvZGUgZW50ZXJlZCBpbiB0aGUgU2hlbGwgb3IgcnVuIGZyb20gYW4gRWRpdG9yIHdpbGwgcnVuCisgICBXaGVuIGFjdGl2YXRlZCwgY29kZSBlbnRlcmVkIGluIHRoZSBTaGVsbCBvciBydW4gZnJvbSBhbiBFZGl0b3Igd2lsbCBydW4KICAgIHVuZGVyIHRoZSBkZWJ1Z2dlci4gIEluIHRoZSBFZGl0b3IsIGJyZWFrcG9pbnRzIGNhbiBiZSBzZXQgd2l0aCB0aGUgY29udGV4dAogICAgbWVudS4gIFRoaXMgZmVhdHVyZSBpcyBzdGlsbCBpbmNvbXBsZXRlIGFuZCBzb21ld2hhdCBleHBlcmltZW50YWwuCiAKQEAgLTM2OCw3ICszNjgsNyBAQAogCiAgICAqIDprYmQ6YEMtbGAgY2VudGVyIHdpbmRvdyBhcm91bmQgdGhlIGluc2VydGlvbiBwb2ludAogCi0gICAqIDprYmQ6YEMtYmAgZ28gYmFja3dhcmRzIG9uZSBjaGFyYWN0ZXIgd2l0aG91dCBkZWxldGluZyAodXN1YWxseSB5b3UgY2FuCisgICAqIDprYmQ6YEMtYmAgZ28gYmFja3dhcmQgb25lIGNoYXJhY3RlciB3aXRob3V0IGRlbGV0aW5nICh1c3VhbGx5IHlvdSBjYW4KICAgICAgYWxzbyB1c2UgdGhlIGN1cnNvciBrZXkgZm9yIHRoaXMpCiAKICAgICogOmtiZDpgQy1mYCBnbyBmb3J3YXJkIG9uZSBjaGFyYWN0ZXIgd2l0aG91dCBkZWxldGluZyAodXN1YWxseSB5b3UgY2FuCkBAIC0zOTAsNyArMzkwLDcgQEAKIFB5dGhvbiBTaGVsbCB3aW5kb3cgYnkgb25lIHRhYikuICBBZnRlciBjZXJ0YWluIGtleXdvcmRzIChicmVhaywgcmV0dXJuIGV0Yy4pCiB0aGUgbmV4dCBsaW5lIGlzIGRlZGVudGVkLiAgSW4gbGVhZGluZyBpbmRlbnRhdGlvbiwgOmtiZDpgQmFja3NwYWNlYCBkZWxldGVzIHVwCiB0byA0IHNwYWNlcyBpZiB0aGV5IGFyZSB0aGVyZS4gOmtiZDpgVGFiYCBpbnNlcnRzIHNwYWNlcyAoaW4gdGhlIFB5dGhvbgotU2hlbGwgd2luZG93IG9uZSB0YWIpLCBudW1iZXIgZGVwZW5kcyBvbiBJbmRlbnQgd2lkdGguIEN1cnJlbnRseSB0YWJzCitTaGVsbCB3aW5kb3cgb25lIHRhYiksIG51bWJlciBkZXBlbmRzIG9uIEluZGVudCB3aWR0aC4gQ3VycmVudGx5LCB0YWJzCiBhcmUgcmVzdHJpY3RlZCB0byBmb3VyIHNwYWNlcyBkdWUgdG8gVGNsL1RrIGxpbWl0YXRpb25zLgogCiBTZWUgYWxzbyB0aGUgaW5kZW50L2RlZGVudCByZWdpb24gY29tbWFuZHMgaW4gdGhlIGVkaXQgbWVudS4KQEAgLTQxNCw3ICs0MTQsNyBAQAogOmtiZDpgQy1zcGFjZWAgd2lsbCBvcGVuIGEgY29tcGxldGlvbnMgd2luZG93LiBJbiBhbiBlbXB0eQogc3RyaW5nLCB0aGlzIHdpbGwgY29udGFpbiB0aGUgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiBPbiBhCiBibGFuayBsaW5lLCBpdCB3aWxsIGNvbnRhaW4gdGhlIGJ1aWx0LWluIGFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIGFuZAotY2xhc3NlcyBpbiB0aGUgY3VycmVudCBuYW1lIHNwYWNlcywgcGx1cyBhbnkgbW9kdWxlcyBpbXBvcnRlZC4gSWYgc29tZQorY2xhc3NlcyBpbiB0aGUgY3VycmVudCBuYW1lc3BhY2VzLCBwbHVzIGFueSBtb2R1bGVzIGltcG9ydGVkLiBJZiBzb21lCiBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBlbnRlcmVkLCB0aGUgQUNXIHdpbGwgYXR0ZW1wdCB0byBiZSBtb3JlIHNwZWNpZmljLgogCiBJZiBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGlzIHR5cGVkLCB0aGUgQUNXIHNlbGVjdGlvbiB3aWxsIGp1bXAgdG8gdGhlCkBAIC00NDIsNyArNDQyLDcgQEAKIENhbGx0aXBzCiBeXl5eXl5eXgogCi1BIGNhbGx0aXAgaXMgc2hvd24gd2hlbiBvbmUgdHlwZXMgOmtiZDpgKGAgYWZ0ZXIgdGhlIG5hbWUgb2YgYW4gKmFjY2Nlc3NpYmxlKgorQSBjYWxsdGlwIGlzIHNob3duIHdoZW4gb25lIHR5cGVzIDprYmQ6YChgIGFmdGVyIHRoZSBuYW1lIG9mIGFuICphY2Nlc3NpYmxlKgogZnVuY3Rpb24uICBBIG5hbWUgZXhwcmVzc2lvbiBtYXkgaW5jbHVkZSBkb3RzIGFuZCBzdWJzY3JpcHRzLiAgQSBjYWxsdGlwCiByZW1haW5zIHVudGlsIGl0IGlzIGNsaWNrZWQsIHRoZSBjdXJzb3IgaXMgbW92ZWQgb3V0IG9mIHRoZSBhcmd1bWVudCBhcmVhLAogb3IgOmtiZDpgKWAgaXMgdHlwZWQuICBXaGVuIHRoZSBjdXJzb3IgaXMgaW4gdGhlIGFyZ3VtZW50IHBhcnQgb2YgYSBkZWZpbml0aW9uLApAQCAtNTUzLDcgKzU1Myw3IEBACiAKIEFzIG11Y2ggYXMgcG9zc2libGUsIHRoZSByZXN1bHQgb2YgZXhlY3V0aW5nIFB5dGhvbiBjb2RlIHdpdGggSURMRSBpcyB0aGUKIHNhbWUgYXMgZXhlY3V0aW5nIHRoZSBzYW1lIGNvZGUgaW4gYSBjb25zb2xlIHdpbmRvdy4gIEhvd2V2ZXIsIHRoZSBkaWZmZXJlbnQKLWludGVyZmFjZSBhbmQgb3BlcmF0aW9uIG9jY2FzaW9uYWxseSBhZmZlY3RzIHZpc2libGUgcmVzdWx0cy4gIEZvciBpbnN0YW5jZSwKK2ludGVyZmFjZSBhbmQgb3BlcmF0aW9uIG9jY2FzaW9uYWxseSBhZmZlY3QgdmlzaWJsZSByZXN1bHRzLiAgRm9yIGluc3RhbmNlLAogYGBzeXMubW9kdWxlc2BgIHN0YXJ0cyB3aXRoIG1vcmUgZW50cmllcy4KIAogSURMRSBhbHNvIHJlcGxhY2VzIGBgc3lzLnN0ZGluYGAsIGBgc3lzLnN0ZG91dGBgLCBhbmQgYGBzeXMuc3RkZXJyYGAgd2l0aApAQCAtNTc5LDcgKzU3OSw3IEBACiAKIElmIHRoZSBhdHRlbXB0IHRvIG1ha2UgdGhlIHNvY2tldCBjb25uZWN0aW9uIGZhaWxzLCBJZGxlIHdpbGwgbm90aWZ5IHlvdS4KIFN1Y2ggZmFpbHVyZXMgYXJlIHNvbWV0aW1lcyB0cmFuc2llbnQsIGJ1dCBpZiBwZXJzaXN0ZW50LCB0aGUgcHJvYmxlbQotbWF5IGJlIGVpdGhlciBhIGZpcmV3YWxsIGJsb2NraW5nIHRoZSBjb25uZWN0b24gb3IgbWlzY29uZmlndXJhdGlvbiBvZgorbWF5IGJlIGVpdGhlciBhIGZpcmV3YWxsIGJsb2NraW5nIHRoZSBjb25uZWN0aW9uIG9yIG1pc2NvbmZpZ3VyYXRpb24gb2YKIGEgcGFydGljdWxhciBzeXN0ZW0uICBVbnRpbCB0aGUgcHJvYmxlbSBpcyBmaXhlZCwgb25lIGNhbiBydW4gSWRsZSB3aXRoCiB0aGUgLW4gY29tbWFuZCBsaW5lIHN3aXRjaC4KIApAQCAtNjE1LDE0ICs2MTUsMTQgQEAKIAogVGhlIGZvbnQgcHJlZmVyZW5jZXMsIGhpZ2hsaWdodGluZywga2V5cywgYW5kIGdlbmVyYWwgcHJlZmVyZW5jZXMgY2FuIGJlCiBjaGFuZ2VkIHZpYSBDb25maWd1cmUgSURMRSBvbiB0aGUgT3B0aW9uIG1lbnUuICBLZXlzIGNhbiBiZSB1c2VyIGRlZmluZWQ7Ci1JRExFIHNoaXBzIHdpdGggZm91ciBidWlsdCBpbiBrZXkgc2V0cy4gSW4gYWRkaXRpb24gYSB1c2VyIGNhbiBjcmVhdGUgYQorSURMRSBzaGlwcyB3aXRoIGZvdXIgYnVpbHQtaW4ga2V5IHNldHMuIEluIGFkZGl0aW9uLCBhIHVzZXIgY2FuIGNyZWF0ZSBhCiBjdXN0b20ga2V5IHNldCBpbiB0aGUgQ29uZmlndXJlIElETEUgZGlhbG9nIHVuZGVyIHRoZSBrZXlzIHRhYi4KIAogCiBFeHRlbnNpb25zCiBeXl5eXl5eXl5eCiAKLUlETEUgY29udGFpbnMgYW4gZXh0ZW5zaW9uIGZhY2lsaXR5LiAgUGVmZXJlbmNlcyBmb3IgZXh0ZW5zaW9ucyBjYW4gYmUKK0lETEUgY29udGFpbnMgYW4gZXh0ZW5zaW9uIGZhY2lsaXR5LiAgUHJlZmVyZW5jZXMgZm9yIGV4dGVuc2lvbnMgY2FuIGJlCiBjaGFuZ2VkIHdpdGggQ29uZmlndXJlIEV4dGVuc2lvbnMuIFNlZSB0aGUgYmVnaW5uaW5nIG9mIGNvbmZpZy1leHRlbnNpb25zLmRlZgogaW4gdGhlIGlkbGVsaWIgZGlyZWN0b3J5IGZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLiAgVGhlIGRlZmF1bHQgZXh0ZW5zaW9ucwogYXJlIGN1cnJlbnRseToKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CmluZGV4IGM0MzA3YjUuLmY5M2U5NDUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdApAQCAtMSw1ICsxLDUgQEAKLTptb2Q6YGltcG9ydGxpYmAgLS0gQ29udmVuaWVuY2Ugd3JhcHBlcnMgZm9yIDpmdW5jOmBfX2ltcG9ydF9fYAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cis6bW9kOmBpbXBvcnRsaWJgIC0tLSBDb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgOmZ1bmM6YF9faW1wb3J0X19gCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIG1vZHVsZTo6IGltcG9ydGxpYgogICAgOnN5bm9wc2lzOiBDb252ZW5pZW5jZSB3cmFwcGVycyBmb3IgX19pbXBvcnRfXwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaW5kZXgucnN0IGIvRG9jL2xpYnJhcnkvaW5kZXgucnN0CmluZGV4IDk3Y2YzZWEuLjMxY2E2ZGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luZGV4LnJzdAorKysgYi9Eb2MvbGlicmFyeS9pbmRleC5yc3QKQEAgLTMwLDcgKzMwLDcgQEAKIEluIGFkZGl0aW9uIHRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LCB0aGVyZSBpcyBhIGdyb3dpbmcgY29sbGVjdGlvbiBvZgogc2V2ZXJhbCB0aG91c2FuZCBjb21wb25lbnRzIChmcm9tIGluZGl2aWR1YWwgcHJvZ3JhbXMgYW5kIG1vZHVsZXMgdG8KIHBhY2thZ2VzIGFuZCBlbnRpcmUgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgZnJhbWV3b3JrcyksIGF2YWlsYWJsZSBmcm9tCi10aGUgYFB5dGhvbiBQYWNrYWdlIEluZGV4IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpPmBfLgordGhlIGBQeXRob24gUGFja2FnZSBJbmRleCA8aHR0cHM6Ly9weXBpLm9yZz5gXy4KIAogCiAuLiB0b2N0cmVlOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2lvLnJzdCBiL0RvYy9saWJyYXJ5L2lvLnJzdAppbmRleCBiOTkzMjRjLi5kY2RkMDFjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pby5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaW8ucnN0CkBAIC03MjQsNyArNzI0LDcgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMi43CiAKLSAgIC4uIG1ldGhvZDo6IHJlYWQobikKKyAgIC4uIG1ldGhvZDo6IHJlYWQobj0tMSkKIAogICAgICAgUmVhZCBhbmQgcmV0dXJuIGF0IG1vc3QgKm4qIGNoYXJhY3RlcnMgZnJvbSB0aGUgc3RyZWFtIGFzIGEgc2luZ2xlCiAgICAgICA6Y2xhc3M6YHVuaWNvZGVgLiAgSWYgKm4qIGlzIG5lZ2F0aXZlIG9yIGBgTm9uZWBgLCByZWFkcyB1bnRpbCBFT0YuCkBAIC04MDksNyArODA5LDcgQEAKICAgICAgdGhlIGdpdmVuIHN0cmluZy4KIAogICAgSWYgKmxpbmVfYnVmZmVyaW5nKiBpcyBgYFRydWVgYCwgOm1ldGg6YGZsdXNoYCBpcyBpbXBsaWVkIHdoZW4gYSBjYWxsIHRvCi0gICB3cml0ZSBjb250YWlucyBhIG5ld2xpbmUgY2hhcmFjdGVyLgorICAgd3JpdGUgY29udGFpbnMgYSBuZXdsaW5lIGNoYXJhY3RlciBvciBhIGNhcnJpYWdlIHJldHVybi4KIAogICAgOmNsYXNzOmBUZXh0SU9XcmFwcGVyYCBwcm92aWRlcyBvbmUgYXR0cmlidXRlIGluIGFkZGl0aW9uIHRvIHRob3NlIG9mCiAgICA6Y2xhc3M6YFRleHRJT0Jhc2VgIGFuZCBpdHMgcGFyZW50czoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CmluZGV4IDU3YmE0ZDQuLjE3MzAzZGQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdApAQCAtNDExLDEyICs0MTEsMjQgQEAKICAgICAgICAgICAjIGlzbGljZSgnQUJDREVGRycsIDIsIE5vbmUpIC0tPiBDIEQgRSBGIEcKICAgICAgICAgICAjIGlzbGljZSgnQUJDREVGRycsIDAsIE5vbmUsIDIpIC0tPiBBIEMgRSBHCiAgICAgICAgICAgcyA9IHNsaWNlKCphcmdzKQotICAgICAgICAgIGl0ID0gaXRlcih4cmFuZ2Uocy5zdGFydCBvciAwLCBzLnN0b3Agb3Igc3lzLm1heGludCwgcy5zdGVwIG9yIDEpKQotICAgICAgICAgIG5leHRpID0gbmV4dChpdCkKLSAgICAgICAgICBmb3IgaSwgZWxlbWVudCBpbiBlbnVtZXJhdGUoaXRlcmFibGUpOgotICAgICAgICAgICAgICBpZiBpID09IG5leHRpOgotICAgICAgICAgICAgICAgICAgeWllbGQgZWxlbWVudAotICAgICAgICAgICAgICAgICAgbmV4dGkgPSBuZXh0KGl0KQorICAgICAgICAgIHN0YXJ0LCBzdG9wLCBzdGVwID0gcy5zdGFydCBvciAwLCBzLnN0b3Agb3Igc3lzLm1heGludCwgcy5zdGVwIG9yIDEKKyAgICAgICAgICBpdCA9IGl0ZXIoeHJhbmdlKHN0YXJ0LCBzdG9wLCBzdGVwKSkpCisgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICBuZXh0aSA9IG5leHQoaXQpCisgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICMgQ29uc3VtZSAqaXRlcmFibGUqIHVwIHRvIHRoZSAqc3RhcnQqIHBvc2l0aW9uLgorICAgICAgICAgICAgICBmb3IgaSwgZWxlbWVudCBpbiBpemlwKHhyYW5nZShzdGFydCksIGl0ZXJhYmxlKToKKyAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICBmb3IgaSwgZWxlbWVudCBpbiBlbnVtZXJhdGUoaXRlcmFibGUpOgorICAgICAgICAgICAgICAgICAgaWYgaSA9PSBuZXh0aToKKyAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbGVtZW50CisgICAgICAgICAgICAgICAgICAgICAgbmV4dGkgPSBuZXh0KGl0KQorICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAjIENvbnN1bWUgdG8gKnN0b3AqLgorICAgICAgICAgICAgICBmb3IgaSwgZWxlbWVudCBpbiBpemlwKHhyYW5nZShpICsgMSwgc3RvcCksIGl0ZXJhYmxlKToKKyAgICAgICAgICAgICAgICAgIHBhc3MKIAogICAgSWYgKnN0YXJ0KiBpcyBgYE5vbmVgYCwgdGhlbiBpdGVyYXRpb24gc3RhcnRzIGF0IHplcm8uIElmICpzdGVwKiBpcyBgYE5vbmVgYCwKICAgIHRoZW4gdGhlIHN0ZXAgZGVmYXVsdHMgdG8gb25lLgpAQCAtNjgxLDggKzY5Myw4IEBACiAgICAgICAgIlJldHVybiBmdW5jdGlvbigwKSwgZnVuY3Rpb24oMSksIC4uLiIKICAgICAgICByZXR1cm4gaW1hcChmdW5jdGlvbiwgY291bnQoc3RhcnQpKQogCi0gICBkZWYgY29uc3VtZShpdGVyYXRvciwgbik6Ci0gICAgICAgIkFkdmFuY2UgdGhlIGl0ZXJhdG9yIG4tc3RlcHMgYWhlYWQuIElmIG4gaXMgbm9uZSwgY29uc3VtZSBlbnRpcmVseS4iCisgICBkZWYgY29uc3VtZShpdGVyYXRvciwgbj1Ob25lKToKKyAgICAgICAiQWR2YW5jZSB0aGUgaXRlcmF0b3Igbi1zdGVwcyBhaGVhZC4gSWYgbiBpcyBOb25lLCBjb25zdW1lIGVudGlyZWx5LiIKICAgICAgICAjIFVzZSBmdW5jdGlvbnMgdGhhdCBjb25zdW1lIGl0ZXJhdG9ycyBhdCBDIHNwZWVkLgogICAgICAgIGlmIG4gaXMgTm9uZToKICAgICAgICAgICAgIyBmZWVkIHRoZSBlbnRpcmUgaXRlcmF0b3IgaW50byBhIHplcm8tbGVuZ3RoIGRlcXVlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9qc29uLnJzdCBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CmluZGV4IGM0ZDVlZTYuLjg3ZGMwNTQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2pzb24ucnN0CisrKyBiL0RvYy9saWJyYXJ5L2pzb24ucnN0CkBAIC04OSw3ICs4OSw3IEBACiAgICAgLi4uICAgICAgICAgIyBMZXQgdGhlIGJhc2UgY2xhc3MgZGVmYXVsdCBtZXRob2QgcmFpc2UgdGhlIFR5cGVFcnJvcgogICAgIC4uLiAgICAgICAgIHJldHVybiBqc29uLkpTT05FbmNvZGVyLmRlZmF1bHQoc2VsZiwgb2JqKQogICAgIC4uLgotICAgID4+PiBkdW1wcygyICsgMWosIGNscz1Db21wbGV4RW5jb2RlcikKKyAgICA+Pj4ganNvbi5kdW1wcygyICsgMWosIGNscz1Db21wbGV4RW5jb2RlcikKICAgICAnWzIuMCwgMS4wXScKICAgICA+Pj4gQ29tcGxleEVuY29kZXIoKS5lbmNvZGUoMiArIDFqKQogICAgICdbMi4wLCAxLjBdJwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdCBiL0RvYy9saWJyYXJ5L2xvY2FsZS5yc3QKaW5kZXggMGIwMjY4NS4uZTE2ZjEzMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9jYWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9sb2NhbGUucnN0CkBAIC01NTIsMTcgKzU1MiwyMyBAQAogQWNjZXNzIHRvIG1lc3NhZ2UgY2F0YWxvZ3MKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKKy4uIGZ1bmN0aW9uOjogZ2V0dGV4dChtc2cpCisuLiBmdW5jdGlvbjo6IGRnZXR0ZXh0KGRvbWFpbiwgbXNnKQorLi4gZnVuY3Rpb246OiBkY2dldHRleHQoZG9tYWluLCBtc2csIGNhdGVnb3J5KQorLi4gZnVuY3Rpb246OiB0ZXh0ZG9tYWluKGRvbWFpbikKKy4uIGZ1bmN0aW9uOjogYmluZHRleHRkb21haW4oZG9tYWluLCBkaXIpCisKIFRoZSBsb2NhbGUgbW9kdWxlIGV4cG9zZXMgdGhlIEMgbGlicmFyeSdzIGdldHRleHQgaW50ZXJmYWNlIG9uIHN5c3RlbXMgdGhhdAotcHJvdmlkZSB0aGlzIGludGVyZmFjZS4gIEl0IGNvbnNpc3RzIG9mIHRoZSBmdW5jdGlvbnMgOmZ1bmM6YGdldHRleHRgLAotOmZ1bmM6YGRnZXR0ZXh0YCwgOmZ1bmM6YGRjZ2V0dGV4dGAsIDpmdW5jOmB0ZXh0ZG9tYWluYCwgOmZ1bmM6YGJpbmR0ZXh0ZG9tYWluYCwKLWFuZCA6ZnVuYzpgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXRgLiAgVGhlc2UgYXJlIHNpbWlsYXIgdG8gdGhlIHNhbWUgZnVuY3Rpb25zIGluCitwcm92aWRlIHRoaXMgaW50ZXJmYWNlLiAgSXQgY29uc2lzdHMgb2YgdGhlIGZ1bmN0aW9ucyA6ZnVuYzpgIWdldHRleHRgLAorOmZ1bmM6YCFkZ2V0dGV4dGAsIDpmdW5jOmAhZGNnZXR0ZXh0YCwgOmZ1bmM6YCF0ZXh0ZG9tYWluYCwgOmZ1bmM6YCFiaW5kdGV4dGRvbWFpbmAsCithbmQgOmZ1bmM6YCFiaW5kX3RleHRkb21haW5fY29kZXNldGAuICBUaGVzZSBhcmUgc2ltaWxhciB0byB0aGUgc2FtZSBmdW5jdGlvbnMgaW4KIHRoZSA6bW9kOmBnZXR0ZXh0YCBtb2R1bGUsIGJ1dCB1c2UgdGhlIEMgbGlicmFyeSdzIGJpbmFyeSBmb3JtYXQgZm9yIG1lc3NhZ2UKIGNhdGFsb2dzLCBhbmQgdGhlIEMgbGlicmFyeSdzIHNlYXJjaCBhbGdvcml0aG1zIGZvciBsb2NhdGluZyBtZXNzYWdlIGNhdGFsb2dzLgogCiBQeXRob24gYXBwbGljYXRpb25zIHNob3VsZCBub3JtYWxseSBmaW5kIG5vIG5lZWQgdG8gaW52b2tlIHRoZXNlIGZ1bmN0aW9ucywgYW5kCiBzaG91bGQgdXNlIDptb2Q6YGdldHRleHRgIGluc3RlYWQuICBBIGtub3duIGV4Y2VwdGlvbiB0byB0aGlzIHJ1bGUgYXJlCiBhcHBsaWNhdGlvbnMgdGhhdCBsaW5rIHdpdGggYWRkaXRpb25hbCBDIGxpYnJhcmllcyB3aGljaCBpbnRlcm5hbGx5IGludm9rZQotOmM6ZnVuYzpgZ2V0dGV4dGAgb3IgOmZ1bmM6YGRjZ2V0dGV4dGAuICBGb3IgdGhlc2UgYXBwbGljYXRpb25zLCBpdCBtYXkgYmUKKzpjOmZ1bmM6YGdldHRleHRgIG9yIDpjOmZ1bmM6YGRjZ2V0dGV4dGAuICBGb3IgdGhlc2UgYXBwbGljYXRpb25zLCBpdCBtYXkgYmUKIG5lY2Vzc2FyeSB0byBiaW5kIHRoZSB0ZXh0IGRvbWFpbiwgc28gdGhhdCB0aGUgbGlicmFyaWVzIGNhbiBwcm9wZXJseSBsb2NhdGUKIHRoZWlyIG1lc3NhZ2UgY2F0YWxvZ3MuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuY29uZmlnLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcuY29uZmlnLnJzdAppbmRleCAyMzMzM2VkLi5iMzMxZmJiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9sb2dnaW5nLmNvbmZpZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5jb25maWcucnN0CkBAIC05Myw4ICs5Myw4IEBACiAgICA6cGFyYW0gZGlzYWJsZV9leGlzdGluZ19sb2dnZXJzOiBJZiBzcGVjaWZpZWQgYXMgYGBGYWxzZWBgLCBsb2dnZXJzIHdoaWNoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGlzdCB3aGVuIHRoaXMgY2FsbCBpcyBtYWRlIGFyZSBsZWZ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVkLiBUaGUgZGVmYXVsdCBpcyBgYFRydWVgYCBiZWNhdXNlIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZXMgb2xkIGJlaGF2aW91ciBpbiBhIGJhY2t3YXJkLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSB3YXkuIFRoaXMgYmVoYXZpb3VyIGlzIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVzIG9sZCBiZWhhdmlvdXIgaW4gYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja3dhcmQtY29tcGF0aWJsZSB3YXkuIFRoaXMgYmVoYXZpb3VyIGlzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlIGFueSBleGlzdGluZyBsb2dnZXJzIHVubGVzcyB0aGV5IG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVpciBhbmNlc3RvcnMgYXJlIGV4cGxpY2l0bHkgbmFtZWQgaW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnaW5nIGNvbmZpZ3VyYXRpb24uCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9sb2dnaW5nLnJzdCBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CmluZGV4IGJhMmFiODMuLjA5Y2FlMTggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L2xvZ2dpbmcucnN0CkBAIC05NSwxMCArOTUsMTAgQEAKICAgICAgIHNjZW5hcmlvIGlzIHRvIGF0dGFjaCBoYW5kbGVycyBvbmx5IHRvIHRoZSByb290IGxvZ2dlciwgYW5kIHRvIGxldAogICAgICAgcHJvcGFnYXRpb24gdGFrZSBjYXJlIG9mIHRoZSByZXN0LgogCi0uLiBtZXRob2Q6OiBMb2dnZXIuc2V0TGV2ZWwobHZsKQorLi4gbWV0aG9kOjogTG9nZ2VyLnNldExldmVsKGxldmVsKQogCi0gICBTZXRzIHRoZSB0aHJlc2hvbGQgZm9yIHRoaXMgbG9nZ2VyIHRvICpsdmwqLiBMb2dnaW5nIG1lc3NhZ2VzIHdoaWNoIGFyZSBsZXNzCi0gICBzZXZlcmUgdGhhbiAqbHZsKiB3aWxsIGJlIGlnbm9yZWQuIFdoZW4gYSBsb2dnZXIgaXMgY3JlYXRlZCwgdGhlIGxldmVsIGlzIHNldCB0bworICAgU2V0cyB0aGUgdGhyZXNob2xkIGZvciB0aGlzIGxvZ2dlciB0byAqbGV2ZWwqLiBMb2dnaW5nIG1lc3NhZ2VzIHdoaWNoIGFyZSBsZXNzCisgICBzZXZlcmUgdGhhbiAqbGV2ZWwqIHdpbGwgYmUgaWdub3JlZC4gV2hlbiBhIGxvZ2dlciBpcyBjcmVhdGVkLCB0aGUgbGV2ZWwgaXMgc2V0IHRvCiAgICA6Y29uc3Q6YE5PVFNFVGAgKHdoaWNoIGNhdXNlcyBhbGwgbWVzc2FnZXMgdG8gYmUgcHJvY2Vzc2VkIHdoZW4gdGhlIGxvZ2dlciBpcwogICAgdGhlIHJvb3QgbG9nZ2VyLCBvciBkZWxlZ2F0aW9uIHRvIHRoZSBwYXJlbnQgd2hlbiB0aGUgbG9nZ2VyIGlzIGEgbm9uLXJvb3QKICAgIGxvZ2dlcikuIE5vdGUgdGhhdCB0aGUgcm9vdCBsb2dnZXIgaXMgY3JlYXRlZCB3aXRoIGxldmVsIDpjb25zdDpgV0FSTklOR2AuCkBAIC0yMzIsMTQgKzIzMiwxNCBAQAogICAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gYW4gZXhjZXB0aW9uIGhhbmRsZXIuCiAKIAotLi4gbWV0aG9kOjogTG9nZ2VyLmFkZEZpbHRlcihmaWx0KQorLi4gbWV0aG9kOjogTG9nZ2VyLmFkZEZpbHRlcihmaWx0ZXIpCiAKLSAgIEFkZHMgdGhlIHNwZWNpZmllZCBmaWx0ZXIgKmZpbHQqIHRvIHRoaXMgbG9nZ2VyLgorICAgQWRkcyB0aGUgc3BlY2lmaWVkIGZpbHRlciAqZmlsdGVyKiB0byB0aGlzIGxvZ2dlci4KIAogCi0uLiBtZXRob2Q6OiBMb2dnZXIucmVtb3ZlRmlsdGVyKGZpbHQpCisuLiBtZXRob2Q6OiBMb2dnZXIucmVtb3ZlRmlsdGVyKGZpbHRlcikKIAotICAgUmVtb3ZlcyB0aGUgc3BlY2lmaWVkIGZpbHRlciAqZmlsdCogZnJvbSB0aGlzIGxvZ2dlci4KKyAgIFJlbW92ZXMgdGhlIHNwZWNpZmllZCBmaWx0ZXIgKmZpbHRlciogZnJvbSB0aGlzIGxvZ2dlci4KIAogCiAuLiBtZXRob2Q6OiBMb2dnZXIuZmlsdGVyKHJlY29yZCkKQEAgLTM0OSwyNyArMzQ5LDI3IEBACiAgICBSZWxlYXNlcyB0aGUgdGhyZWFkIGxvY2sgYWNxdWlyZWQgd2l0aCA6bWV0aDpgYWNxdWlyZWAuCiAKIAotLi4gbWV0aG9kOjogSGFuZGxlci5zZXRMZXZlbChsdmwpCisuLiBtZXRob2Q6OiBIYW5kbGVyLnNldExldmVsKGxldmVsKQogCi0gICBTZXRzIHRoZSB0aHJlc2hvbGQgZm9yIHRoaXMgaGFuZGxlciB0byAqbHZsKi4gTG9nZ2luZyBtZXNzYWdlcyB3aGljaCBhcmUgbGVzcwotICAgc2V2ZXJlIHRoYW4gKmx2bCogd2lsbCBiZSBpZ25vcmVkLiBXaGVuIGEgaGFuZGxlciBpcyBjcmVhdGVkLCB0aGUgbGV2ZWwgaXMgc2V0CisgICBTZXRzIHRoZSB0aHJlc2hvbGQgZm9yIHRoaXMgaGFuZGxlciB0byAqbGV2ZWwqLiBMb2dnaW5nIG1lc3NhZ2VzIHdoaWNoIGFyZSBsZXNzCisgICBzZXZlcmUgdGhhbiAqbGV2ZWwqIHdpbGwgYmUgaWdub3JlZC4gV2hlbiBhIGhhbmRsZXIgaXMgY3JlYXRlZCwgdGhlIGxldmVsIGlzIHNldAogICAgdG8gOmNvbnN0OmBOT1RTRVRgICh3aGljaCBjYXVzZXMgYWxsIG1lc3NhZ2VzIHRvIGJlIHByb2Nlc3NlZCkuCiAKICAgIFNlZSA6cmVmOmBsZXZlbHNgIGZvciBhIGxpc3Qgb2YgbGV2ZWxzLgogCi0uLiBtZXRob2Q6OiBIYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtKQorLi4gbWV0aG9kOjogSGFuZGxlci5zZXRGb3JtYXR0ZXIoZm10KQogCi0gICBTZXRzIHRoZSA6Y2xhc3M6YEZvcm1hdHRlcmAgZm9yIHRoaXMgaGFuZGxlciB0byAqZm9ybSouCisgICBTZXRzIHRoZSA6Y2xhc3M6YEZvcm1hdHRlcmAgZm9yIHRoaXMgaGFuZGxlciB0byAqZm10Ki4KIAogCi0uLiBtZXRob2Q6OiBIYW5kbGVyLmFkZEZpbHRlcihmaWx0KQorLi4gbWV0aG9kOjogSGFuZGxlci5hZGRGaWx0ZXIoZmlsdGVyKQogCi0gICBBZGRzIHRoZSBzcGVjaWZpZWQgZmlsdGVyICpmaWx0KiB0byB0aGlzIGhhbmRsZXIuCisgICBBZGRzIHRoZSBzcGVjaWZpZWQgZmlsdGVyICpmaWx0ZXIqIHRvIHRoaXMgaGFuZGxlci4KIAogCi0uLiBtZXRob2Q6OiBIYW5kbGVyLnJlbW92ZUZpbHRlcihmaWx0KQorLi4gbWV0aG9kOjogSGFuZGxlci5yZW1vdmVGaWx0ZXIoZmlsdGVyKQogCi0gICBSZW1vdmVzIHRoZSBzcGVjaWZpZWQgZmlsdGVyICpmaWx0KiBmcm9tIHRoaXMgaGFuZGxlci4KKyAgIFJlbW92ZXMgdGhlIHNwZWNpZmllZCBmaWx0ZXIgKmZpbHRlciogZnJvbSB0aGlzIGhhbmRsZXIuCiAKIAogLi4gbWV0aG9kOjogSGFuZGxlci5maWx0ZXIocmVjb3JkKQpAQCAtOTQ5LDI2ICs5NDksMjYgQEAKICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAgICB8IEZvcm1hdCAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKz09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgYGBmaWxlbmFtZWBgIHwgU3BlY2lmaWVzIHRoYXQgYSBGaWxlSGFuZGxlciBiZSBjcmVhdGVkLCAgICB8CisgICB8ICpmaWxlbmFtZSogICB8IFNwZWNpZmllcyB0aGF0IGEgRmlsZUhhbmRsZXIgYmUgY3JlYXRlZCwgICAgfAogICAgfCAgICAgICAgICAgICAgfCB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lLCByYXRoZXIgdGhhbiBhIHwKICAgIHwgICAgICAgICAgICAgIHwgU3RyZWFtSGFuZGxlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYGZpbGVtb2RlYGAgfCBTcGVjaWZpZXMgdGhlIG1vZGUgdG8gb3BlbiB0aGUgZmlsZSwgaWYgICAgIHwKLSAgIHwgICAgICAgICAgICAgIHwgZmlsZW5hbWUgaXMgc3BlY2lmaWVkIChpZiBmaWxlbW9kZSBpcyAgICAgICB8Ci0gICB8ICAgICAgICAgICAgICB8IHVuc3BlY2lmaWVkLCBpdCBkZWZhdWx0cyB0byAnYScpLiAgICAgICAgICAgfAorICAgfCAqZmlsZW1vZGUqICAgfCBJZiAqZmlsZW5hbWUqIGlzIHNwZWNpZmllZCwgb3BlbiB0aGUgZmlsZSAgIHwKKyAgIHwgICAgICAgICAgICAgIHwgaW4gdGhpcyBtb2RlLiBEZWZhdWx0cyB0byBgYCdhJ2BgLiAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYGZvcm1hdGBgICAgfCBVc2UgdGhlIHNwZWNpZmllZCBmb3JtYXQgc3RyaW5nIGZvciB0aGUgICAgIHwKKyAgIHwgKmZvcm1hdCogICAgIHwgVXNlIHRoZSBzcGVjaWZpZWQgZm9ybWF0IHN0cmluZyBmb3IgdGhlICAgICB8CiAgICB8ICAgICAgICAgICAgICB8IGhhbmRsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGBkYXRlZm10YGAgIHwgVXNlIHRoZSBzcGVjaWZpZWQgZGF0ZS90aW1lIGZvcm1hdC4gICAgICAgICB8CisgICB8ICpkYXRlZm10KiAgICB8IFVzZSB0aGUgc3BlY2lmaWVkIGRhdGUvdGltZSBmb3JtYXQsIGFzICAgICAgfAorICAgfCAgICAgICAgICAgICAgfCBhY2NlcHRlZCBieSA6ZnVuYzpgdGltZS5zdHJmdGltZWAuICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgbGV2ZWxgYCAgICB8IFNldCB0aGUgcm9vdCBsb2dnZXIgbGV2ZWwgdG8gdGhlIHNwZWNpZmllZCAgfAotICAgfCAgICAgICAgICAgICAgfCBsZXZlbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgKmxldmVsKiAgICAgIHwgU2V0IHRoZSByb290IGxvZ2dlciBsZXZlbCB0byB0aGUgc3BlY2lmaWVkICB8CisgICB8ICAgICAgICAgICAgICB8IDpyZWY6YGxldmVsIDxsZXZlbHM+YC4gICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGBzdHJlYW1gYCAgIHwgVXNlIHRoZSBzcGVjaWZpZWQgc3RyZWFtIHRvIGluaXRpYWxpemUgdGhlICB8CisgICB8ICpzdHJlYW0qICAgICB8IFVzZSB0aGUgc3BlY2lmaWVkIHN0cmVhbSB0byBpbml0aWFsaXplIHRoZSAgfAogICAgfCAgICAgICAgICAgICAgfCBTdHJlYW1IYW5kbGVyLiBOb3RlIHRoYXQgdGhpcyBhcmd1bWVudCBpcyAgIHwKLSAgIHwgICAgICAgICAgICAgIHwgaW5jb21wYXRpYmxlIHdpdGggJ2ZpbGVuYW1lJyAtIGlmIGJvdGggYXJlICB8Ci0gICB8ICAgICAgICAgICAgICB8IHByZXNlbnQsICdzdHJlYW0nIGlzIGlnbm9yZWQuICAgICAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgfCBpbmNvbXBhdGlibGUgd2l0aCAqZmlsZW5hbWUqIC0gaWYgYm90aCBhcmUgIHwKKyAgIHwgICAgICAgICAgICAgIHwgcHJlc2VudCwgKnN0cmVhbSogaXMgaWdub3JlZC4gICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21haWxib3gucnN0IGIvRG9jL2xpYnJhcnkvbWFpbGJveC5yc3QKaW5kZXggOWY4OTRjYS4uOWM5NDUyZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbWFpbGJveC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbWFpbGJveC5yc3QKQEAgLTQ3NCw3ICs0NzQsNyBAQAogICAgYENvbmZpZ3VyaW5nIE5ldHNjYXBlIE1haWwgb24gVW5peDogV2h5IFRoZSBDb250ZW50LUxlbmd0aCBGb3JtYXQgaXMgQmFkIDxodHRwczovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfCiAgICAgICBBbiBhcmd1bWVudCBmb3IgdXNpbmcgdGhlIG9yaWdpbmFsIG1ib3ggZm9ybWF0IHJhdGhlciB0aGFuIGEgdmFyaWF0aW9uLgogCi0gICBgIm1ib3giIGlzIGEgZmFtaWx5IG9mIHNldmVyYWwgbXV0dWFsbHkgaW5jb21wYXRpYmxlIG1haWxib3ggZm9ybWF0cyA8aHR0cDovL2hvbWVwYWdlLm50bHdvcmxkLmNvbS9qb25hdGhhbi5kZWJveW5lcG9sbGFyZC9GR0EvbWFpbC1tYm94LWZvcm1hdHMuaHRtbD5gXworICAgYCJtYm94IiBpcyBhIGZhbWlseSBvZiBzZXZlcmFsIG11dHVhbGx5IGluY29tcGF0aWJsZSBtYWlsYm94IGZvcm1hdHMgPGh0dHBzOi8vd3d3LmxvYy5nb3YvcHJlc2VydmF0aW9uL2RpZ2l0YWwvZm9ybWF0cy9mZGQvZmRkMDAwMzgzLnNodG1sPmBfCiAgICAgICBBIGhpc3Rvcnkgb2YgbWJveCB2YXJpYXRpb25zLgogCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21pbWV0eXBlcy5yc3QgYi9Eb2MvbGlicmFyeS9taW1ldHlwZXMucnN0CmluZGV4IDQzYzRlYTAuLmM2ZTE1N2MgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21pbWV0eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbWltZXR5cGVzLnJzdApAQCAtMTg2LDc4ICsxODYsNzggQEAKICAgIGxvYWRlZCAib24gdG9wIiBvZiB0aGUgZGVmYXVsdCBkYXRhYmFzZS4KIAogCi0uLiBhdHRyaWJ1dGU6OiBNaW1lVHlwZXMuc3VmZml4X21hcAorICAgLi4gYXR0cmlidXRlOjogTWltZVR5cGVzLnN1ZmZpeF9tYXAKIAotICAgRGljdGlvbmFyeSBtYXBwaW5nIHN1ZmZpeGVzIHRvIHN1ZmZpeGVzLiAgVGhpcyBpcyB1c2VkIHRvIGFsbG93IHJlY29nbml0aW9uIG9mCi0gICBlbmNvZGVkIGZpbGVzIGZvciB3aGljaCB0aGUgZW5jb2RpbmcgYW5kIHRoZSB0eXBlIGFyZSBpbmRpY2F0ZWQgYnkgdGhlIHNhbWUKLSAgIGV4dGVuc2lvbi4gIEZvciBleGFtcGxlLCB0aGUgOmZpbGU6YC50Z3pgIGV4dGVuc2lvbiBpcyBtYXBwZWQgdG8gOmZpbGU6YC50YXIuZ3pgCi0gICB0byBhbGxvdyB0aGUgZW5jb2RpbmcgYW5kIHR5cGUgdG8gYmUgcmVjb2duaXplZCBzZXBhcmF0ZWx5LiAgVGhpcyBpcyBpbml0aWFsbHkgYQotICAgY29weSBvZiB0aGUgZ2xvYmFsIDpkYXRhOmBzdWZmaXhfbWFwYCBkZWZpbmVkIGluIHRoZSBtb2R1bGUuCisgICAgICBEaWN0aW9uYXJ5IG1hcHBpbmcgc3VmZml4ZXMgdG8gc3VmZml4ZXMuICBUaGlzIGlzIHVzZWQgdG8gYWxsb3cgcmVjb2duaXRpb24gb2YKKyAgICAgIGVuY29kZWQgZmlsZXMgZm9yIHdoaWNoIHRoZSBlbmNvZGluZyBhbmQgdGhlIHR5cGUgYXJlIGluZGljYXRlZCBieSB0aGUgc2FtZQorICAgICAgZXh0ZW5zaW9uLiAgRm9yIGV4YW1wbGUsIHRoZSA6ZmlsZTpgLnRnemAgZXh0ZW5zaW9uIGlzIG1hcHBlZCB0byA6ZmlsZTpgLnRhci5nemAKKyAgICAgIHRvIGFsbG93IHRoZSBlbmNvZGluZyBhbmQgdHlwZSB0byBiZSByZWNvZ25pemVkIHNlcGFyYXRlbHkuICBUaGlzIGlzIGluaXRpYWxseSBhCisgICAgICBjb3B5IG9mIHRoZSBnbG9iYWwgOmRhdGE6YHN1ZmZpeF9tYXBgIGRlZmluZWQgaW4gdGhlIG1vZHVsZS4KIAogCi0uLiBhdHRyaWJ1dGU6OiBNaW1lVHlwZXMuZW5jb2RpbmdzX21hcAorICAgLi4gYXR0cmlidXRlOjogTWltZVR5cGVzLmVuY29kaW5nc19tYXAKIAotICAgRGljdGlvbmFyeSBtYXBwaW5nIGZpbGVuYW1lIGV4dGVuc2lvbnMgdG8gZW5jb2RpbmcgdHlwZXMuICBUaGlzIGlzIGluaXRpYWxseSBhCi0gICBjb3B5IG9mIHRoZSBnbG9iYWwgOmRhdGE6YGVuY29kaW5nc19tYXBgIGRlZmluZWQgaW4gdGhlIG1vZHVsZS4KKyAgICAgIERpY3Rpb25hcnkgbWFwcGluZyBmaWxlbmFtZSBleHRlbnNpb25zIHRvIGVuY29kaW5nIHR5cGVzLiAgVGhpcyBpcyBpbml0aWFsbHkgYQorICAgICAgY29weSBvZiB0aGUgZ2xvYmFsIDpkYXRhOmBlbmNvZGluZ3NfbWFwYCBkZWZpbmVkIGluIHRoZSBtb2R1bGUuCiAKIAotLi4gYXR0cmlidXRlOjogTWltZVR5cGVzLnR5cGVzX21hcAorICAgLi4gYXR0cmlidXRlOjogTWltZVR5cGVzLnR5cGVzX21hcAogCi0gICBUdXBsZSBjb250YWluaW5nIHR3byBkaWN0aW9uYXJpZXMsIG1hcHBpbmcgZmlsZW5hbWUgZXh0ZW5zaW9ucyB0byBNSU1FIHR5cGVzOgotICAgdGhlIGZpcnN0IGRpY3Rpb25hcnkgaXMgZm9yIHRoZSBub24tc3RhbmRhcmRzIHR5cGVzIGFuZCB0aGUgc2Vjb25kIG9uZSBpcyBmb3IKLSAgIHRoZSBzdGFuZGFyZCB0eXBlcy4gVGhleSBhcmUgaW5pdGlhbGl6ZWQgYnkgOmRhdGE6YGNvbW1vbl90eXBlc2AgYW5kCi0gICA6ZGF0YTpgdHlwZXNfbWFwYC4KKyAgICAgIFR1cGxlIGNvbnRhaW5pbmcgdHdvIGRpY3Rpb25hcmllcywgbWFwcGluZyBmaWxlbmFtZSBleHRlbnNpb25zIHRvIE1JTUUgdHlwZXM6CisgICAgICB0aGUgZmlyc3QgZGljdGlvbmFyeSBpcyBmb3IgdGhlIG5vbi1zdGFuZGFyZHMgdHlwZXMgYW5kIHRoZSBzZWNvbmQgb25lIGlzIGZvcgorICAgICAgdGhlIHN0YW5kYXJkIHR5cGVzLiBUaGV5IGFyZSBpbml0aWFsaXplZCBieSA6ZGF0YTpgY29tbW9uX3R5cGVzYCBhbmQKKyAgICAgIDpkYXRhOmB0eXBlc19tYXBgLgogCiAKLS4uIGF0dHJpYnV0ZTo6IE1pbWVUeXBlcy50eXBlc19tYXBfaW52CisgICAuLiBhdHRyaWJ1dGU6OiBNaW1lVHlwZXMudHlwZXNfbWFwX2ludgogCi0gICBUdXBsZSBjb250YWluaW5nIHR3byBkaWN0aW9uYXJpZXMsIG1hcHBpbmcgTUlNRSB0eXBlcyB0byBhIGxpc3Qgb2YgZmlsZW5hbWUKLSAgIGV4dGVuc2lvbnM6IHRoZSBmaXJzdCBkaWN0aW9uYXJ5IGlzIGZvciB0aGUgbm9uLXN0YW5kYXJkcyB0eXBlcyBhbmQgdGhlCi0gICBzZWNvbmQgb25lIGlzIGZvciB0aGUgc3RhbmRhcmQgdHlwZXMuIFRoZXkgYXJlIGluaXRpYWxpemVkIGJ5Ci0gICA6ZGF0YTpgY29tbW9uX3R5cGVzYCBhbmQgOmRhdGE6YHR5cGVzX21hcGAuCisgICAgICBUdXBsZSBjb250YWluaW5nIHR3byBkaWN0aW9uYXJpZXMsIG1hcHBpbmcgTUlNRSB0eXBlcyB0byBhIGxpc3Qgb2YgZmlsZW5hbWUKKyAgICAgIGV4dGVuc2lvbnM6IHRoZSBmaXJzdCBkaWN0aW9uYXJ5IGlzIGZvciB0aGUgbm9uLXN0YW5kYXJkcyB0eXBlcyBhbmQgdGhlCisgICAgICBzZWNvbmQgb25lIGlzIGZvciB0aGUgc3RhbmRhcmQgdHlwZXMuIFRoZXkgYXJlIGluaXRpYWxpemVkIGJ5CisgICAgICA6ZGF0YTpgY29tbW9uX3R5cGVzYCBhbmQgOmRhdGE6YHR5cGVzX21hcGAuCiAKIAotLi4gbWV0aG9kOjogTWltZVR5cGVzLmd1ZXNzX2V4dGVuc2lvbih0eXBlLCBzdHJpY3Q9VHJ1ZSkKKyAgIC4uIG1ldGhvZDo6IE1pbWVUeXBlcy5ndWVzc19leHRlbnNpb24odHlwZSwgc3RyaWN0PVRydWUpCiAKLSAgIFNpbWlsYXIgdG8gdGhlIDpmdW5jOmBndWVzc19leHRlbnNpb25gIGZ1bmN0aW9uLCB1c2luZyB0aGUgdGFibGVzIHN0b3JlZCBhcyBwYXJ0Ci0gICBvZiB0aGUgb2JqZWN0LgorICAgICAgU2ltaWxhciB0byB0aGUgOmZ1bmM6YGd1ZXNzX2V4dGVuc2lvbmAgZnVuY3Rpb24sIHVzaW5nIHRoZSB0YWJsZXMgc3RvcmVkIGFzIHBhcnQKKyAgICAgIG9mIHRoZSBvYmplY3QuCiAKIAotLi4gbWV0aG9kOjogTWltZVR5cGVzLmd1ZXNzX3R5cGUodXJsLCBzdHJpY3Q9VHJ1ZSkKKyAgIC4uIG1ldGhvZDo6IE1pbWVUeXBlcy5ndWVzc190eXBlKHVybCwgc3RyaWN0PVRydWUpCiAKLSAgIFNpbWlsYXIgdG8gdGhlIDpmdW5jOmBndWVzc190eXBlYCBmdW5jdGlvbiwgdXNpbmcgdGhlIHRhYmxlcyBzdG9yZWQgYXMgcGFydCBvZgotICAgdGhlIG9iamVjdC4KKyAgICAgIFNpbWlsYXIgdG8gdGhlIDpmdW5jOmBndWVzc190eXBlYCBmdW5jdGlvbiwgdXNpbmcgdGhlIHRhYmxlcyBzdG9yZWQgYXMgcGFydCBvZgorICAgICAgdGhlIG9iamVjdC4KIAogCi0uLiBtZXRob2Q6OiBNaW1lVHlwZXMuZ3Vlc3NfYWxsX2V4dGVuc2lvbnModHlwZSwgc3RyaWN0PVRydWUpCisgICAuLiBtZXRob2Q6OiBNaW1lVHlwZXMuZ3Vlc3NfYWxsX2V4dGVuc2lvbnModHlwZSwgc3RyaWN0PVRydWUpCiAKLSAgIFNpbWlsYXIgdG8gdGhlIDpmdW5jOmBndWVzc19hbGxfZXh0ZW5zaW9uc2AgZnVuY3Rpb24sIHVzaW5nIHRoZSB0YWJsZXMgc3RvcmVkCi0gICBhcyBwYXJ0IG9mIHRoZSBvYmplY3QuCisgICAgICBTaW1pbGFyIHRvIHRoZSA6ZnVuYzpgZ3Vlc3NfYWxsX2V4dGVuc2lvbnNgIGZ1bmN0aW9uLCB1c2luZyB0aGUgdGFibGVzIHN0b3JlZAorICAgICAgYXMgcGFydCBvZiB0aGUgb2JqZWN0LgogCiAKLS4uIG1ldGhvZDo6IE1pbWVUeXBlcy5yZWFkKGZpbGVuYW1lLCBzdHJpY3Q9VHJ1ZSkKKyAgIC4uIG1ldGhvZDo6IE1pbWVUeXBlcy5yZWFkKGZpbGVuYW1lLCBzdHJpY3Q9VHJ1ZSkKIAotICAgTG9hZCBNSU1FIGluZm9ybWF0aW9uIGZyb20gYSBmaWxlIG5hbWVkICpmaWxlbmFtZSouICBUaGlzIHVzZXMgOm1ldGg6YHJlYWRmcGAgdG8KLSAgIHBhcnNlIHRoZSBmaWxlLgorICAgICAgTG9hZCBNSU1FIGluZm9ybWF0aW9uIGZyb20gYSBmaWxlIG5hbWVkICpmaWxlbmFtZSouICBUaGlzIHVzZXMgOm1ldGg6YHJlYWRmcGAgdG8KKyAgICAgIHBhcnNlIHRoZSBmaWxlLgogCi0gICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCwgaW5mb3JtYXRpb24gd2lsbCBiZSBhZGRlZCB0byBsaXN0IG9mIHN0YW5kYXJkIHR5cGVzLAotICAgZWxzZSB0byB0aGUgbGlzdCBvZiBub24tc3RhbmRhcmQgdHlwZXMuCisgICAgICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCwgaW5mb3JtYXRpb24gd2lsbCBiZSBhZGRlZCB0byBsaXN0IG9mIHN0YW5kYXJkIHR5cGVzLAorICAgICAgZWxzZSB0byB0aGUgbGlzdCBvZiBub24tc3RhbmRhcmQgdHlwZXMuCiAKIAotLi4gbWV0aG9kOjogTWltZVR5cGVzLnJlYWRmcChmcCwgc3RyaWN0PVRydWUpCisgICAuLiBtZXRob2Q6OiBNaW1lVHlwZXMucmVhZGZwKGZwLCBzdHJpY3Q9VHJ1ZSkKIAotICAgTG9hZCBNSU1FIHR5cGUgaW5mb3JtYXRpb24gZnJvbSBhbiBvcGVuIGZpbGUgKmZwKi4gIFRoZSBmaWxlIG11c3QgaGF2ZSB0aGUgZm9ybWF0IG9mCi0gICB0aGUgc3RhbmRhcmQgOmZpbGU6YG1pbWUudHlwZXNgIGZpbGVzLgorICAgICAgTG9hZCBNSU1FIHR5cGUgaW5mb3JtYXRpb24gZnJvbSBhbiBvcGVuIGZpbGUgKmZwKi4gIFRoZSBmaWxlIG11c3QgaGF2ZSB0aGUgZm9ybWF0IG9mCisgICAgICB0aGUgc3RhbmRhcmQgOmZpbGU6YG1pbWUudHlwZXNgIGZpbGVzLgogCi0gICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCwgaW5mb3JtYXRpb24gd2lsbCBiZSBhZGRlZCB0byB0aGUgbGlzdCBvZiBzdGFuZGFyZAotICAgdHlwZXMsIGVsc2UgdG8gdGhlIGxpc3Qgb2Ygbm9uLXN0YW5kYXJkIHR5cGVzLgorICAgICAgSWYgKnN0cmljdCogaXMgYGBUcnVlYGAsIGluZm9ybWF0aW9uIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGxpc3Qgb2Ygc3RhbmRhcmQKKyAgICAgIHR5cGVzLCBlbHNlIHRvIHRoZSBsaXN0IG9mIG5vbi1zdGFuZGFyZCB0eXBlcy4KIAogCi0uLiBtZXRob2Q6OiBNaW1lVHlwZXMucmVhZF93aW5kb3dzX3JlZ2lzdHJ5KHN0cmljdD1UcnVlKQorICAgLi4gbWV0aG9kOjogTWltZVR5cGVzLnJlYWRfd2luZG93c19yZWdpc3RyeShzdHJpY3Q9VHJ1ZSkKIAotICAgTG9hZCBNSU1FIHR5cGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgV2luZG93cyByZWdpc3RyeS4gIEF2YWlsYWJpbGl0eTogV2luZG93cy4KKyAgICAgIExvYWQgTUlNRSB0eXBlIGluZm9ybWF0aW9uIGZyb20gdGhlIFdpbmRvd3MgcmVnaXN0cnkuICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCiAKLSAgIElmICpzdHJpY3QqIGlzIGBgVHJ1ZWBgLCBpbmZvcm1hdGlvbiB3aWxsIGJlIGFkZGVkIHRvIHRoZSBsaXN0IG9mIHN0YW5kYXJkCi0gICB0eXBlcywgZWxzZSB0byB0aGUgbGlzdCBvZiBub24tc3RhbmRhcmQgdHlwZXMuCisgICAgICBJZiAqc3RyaWN0KiBpcyBgYFRydWVgYCwgaW5mb3JtYXRpb24gd2lsbCBiZSBhZGRlZCB0byB0aGUgbGlzdCBvZiBzdGFuZGFyZAorICAgICAgdHlwZXMsIGVsc2UgdG8gdGhlIGxpc3Qgb2Ygbm9uLXN0YW5kYXJkIHR5cGVzLgogCi0gICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjcKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDIuNwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvbXNpbGliLnJzdCBiL0RvYy9saWJyYXJ5L21zaWxpYi5yc3QKaW5kZXggYTRkMzgyYy4uNTU3ODViZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbXNpbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9tc2lsaWIucnN0CkBAIC0zMTEsNyArMzExLDcgQEAKIEVycm9ycwogLS0tLS0tCiAKLUFsbCB3cmFwcGVycyBhcm91bmQgTVNJIGZ1bmN0aW9ucyByYWlzZSA6ZXhjOmBNc2lFcnJvcmA7IHRoZSBzdHJpbmcgaW5zaWRlIHRoZQorQWxsIHdyYXBwZXJzIGFyb3VuZCBNU0kgZnVuY3Rpb25zIHJhaXNlIDpleGM6YE1TSUVycm9yYDsgdGhlIHN0cmluZyBpbnNpZGUgdGhlCiBleGNlcHRpb24gd2lsbCBjb250YWluIG1vcmUgZGV0YWlsLgogCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21zdmNydC5yc3QgYi9Eb2MvbGlicmFyeS9tc3ZjcnQucnN0CmluZGV4IDg3YjgxNjYuLjVlNmQ1MjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21zdmNydC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbXN2Y3J0LnJzdApAQCAtMSw2ICsxLDYgQEAKIAotOm1vZDpgbXN2Y3J0YCAtLSBVc2VmdWwgcm91dGluZXMgZnJvbSB0aGUgTVMgVkMrKyBydW50aW1lCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKzptb2Q6YG1zdmNydGAgLS0tIFVzZWZ1bCByb3V0aW5lcyBmcm9tIHRoZSBNUyBWQysrIHJ1bnRpbWUKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogLi4gbW9kdWxlOjogbXN2Y3J0CiAgICA6cGxhdGZvcm06IFdpbmRvd3MKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CmluZGV4IGIzOTNhZDEuLjJkODY2MGEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdApAQCAtODAzLDEwICs4MDMsMTMgQEAKIENvbm5lY3Rpb24gT2JqZWN0cwogfn5+fn5+fn5+fn5+fn5+fn5+CiAKKy4uIGN1cnJlbnRtb2R1bGU6OiBOb25lCisKIENvbm5lY3Rpb24gb2JqZWN0cyBhbGxvdyB0aGUgc2VuZGluZyBhbmQgcmVjZWl2aW5nIG9mIHBpY2tsYWJsZSBvYmplY3RzIG9yCiBzdHJpbmdzLiAgVGhleSBjYW4gYmUgdGhvdWdodCBvZiBhcyBtZXNzYWdlIG9yaWVudGVkIGNvbm5lY3RlZCBzb2NrZXRzLgogCi1Db25uZWN0aW9uIG9iamVjdHMgYXJlIHVzdWFsbHkgY3JlYXRlZCB1c2luZyA6ZnVuYzpgUGlwZWAgLS0gc2VlIGFsc28KK0Nvbm5lY3Rpb24gb2JqZWN0cyBhcmUgdXN1YWxseSBjcmVhdGVkIHVzaW5nCis6ZnVuYzpgUGlwZSA8bXVsdGlwcm9jZXNzaW5nLlBpcGU+YCAtLSBzZWUgYWxzbwogOnJlZjpgbXVsdGlwcm9jZXNzaW5nLWxpc3RlbmVycy1jbGllbnRzYC4KIAogLi4gY2xhc3M6OiBDb25uZWN0aW9uCkBAIC04MjIsNyArODI1LDcgQEAKICAgIC4uIG1ldGhvZDo6IHJlY3YoKQogCiAgICAgICBSZXR1cm4gYW4gb2JqZWN0IHNlbnQgZnJvbSB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjb25uZWN0aW9uIHVzaW5nCi0gICAgICA6bWV0aDpgc2VuZGAuICBCbG9ja3MgdW50aWwgdGhlcmUgaXRzIHNvbWV0aGluZyB0byByZWNlaXZlLiAgUmFpc2VzCisgICAgICA6bWV0aDpgc2VuZGAuICBCbG9ja3MgdW50aWwgdGhlcmUgaXMgc29tZXRoaW5nIHRvIHJlY2VpdmUuICBSYWlzZXMKICAgICAgIDpleGM6YEVPRkVycm9yYCBpZiB0aGVyZSBpcyBub3RoaW5nIGxlZnQgdG8gcmVjZWl2ZQogICAgICAgYW5kIHRoZSBvdGhlciBlbmQgd2FzIGNsb3NlZC4KIApAQCAtOTI2LDYgKzkyOSw4IEBACiBTeW5jaHJvbml6YXRpb24gcHJpbWl0aXZlcwogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAorLi4gY3VycmVudG1vZHVsZTo6IG11bHRpcHJvY2Vzc2luZworCiBHZW5lcmFsbHkgc3luY2hyb25pemF0aW9uIHByaW1pdGl2ZXMgYXJlIG5vdCBhcyBuZWNlc3NhcnkgaW4gYSBtdWx0aXByb2Nlc3MKIHByb2dyYW0gYXMgdGhleSBhcmUgaW4gYSBtdWx0aXRocmVhZGVkIHByb2dyYW0uICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCiA6bW9kOmB0aHJlYWRpbmdgIG1vZHVsZS4KQEAgLTE5NDMsOCArMTk0OCw3IEBACiAgICA6c3lub3BzaXM6IEFQSSBmb3IgZGVhbGluZyB3aXRoIHNvY2tldHMuCiAKIFVzdWFsbHkgbWVzc2FnZSBwYXNzaW5nIGJldHdlZW4gcHJvY2Vzc2VzIGlzIGRvbmUgdXNpbmcgcXVldWVzIG9yIGJ5IHVzaW5nCi06Y2xhc3M6YH5tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbmAgb2JqZWN0cyByZXR1cm5lZCBieQotOmZ1bmM6YH5tdWx0aXByb2Nlc3NpbmcuUGlwZWAuCis6Y2xhc3M6YENvbm5lY3Rpb25gIG9iamVjdHMgcmV0dXJuZWQgYnkgOmZ1bmM6YH5tdWx0aXByb2Nlc3NpbmcuUGlwZWAuCiAKIEhvd2V2ZXIsIHRoZSA6bW9kOmBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbmAgbW9kdWxlIGFsbG93cyBzb21lIGV4dHJhCiBmbGV4aWJpbGl0eS4gIEl0IGJhc2ljYWxseSBnaXZlcyBhIGhpZ2ggbGV2ZWwgbWVzc2FnZSBvcmllbnRlZCBBUEkgZm9yIGRlYWxpbmcKQEAgLTE5NzIsNyArMTk3Niw3IEBACiAuLiBmdW5jdGlvbjo6IENsaWVudChhZGRyZXNzWywgZmFtaWx5WywgYXV0aGVudGljYXRlWywgYXV0aGtleV1dXSkKIAogICAgQXR0ZW1wdCB0byBzZXQgdXAgYSBjb25uZWN0aW9uIHRvIHRoZSBsaXN0ZW5lciB3aGljaCBpcyB1c2luZyBhZGRyZXNzCi0gICAqYWRkcmVzcyosIHJldHVybmluZyBhIDpjbGFzczpgfm11bHRpcHJvY2Vzc2luZy5Db25uZWN0aW9uYC4KKyAgICphZGRyZXNzKiwgcmV0dXJuaW5nIGEgOmNsYXNzOmBDb25uZWN0aW9uYC4KIAogICAgVGhlIHR5cGUgb2YgdGhlIGNvbm5lY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSAqZmFtaWx5KiBhcmd1bWVudCwgYnV0IHRoaXMgY2FuCiAgICBnZW5lcmFsbHkgYmUgb21pdHRlZCBzaW5jZSBpdCBjYW4gdXN1YWxseSBiZSBpbmZlcnJlZCBmcm9tIHRoZSBmb3JtYXQgb2YKQEAgLTIwMjgsOCArMjAzMiw4IEBACiAgICAuLiBtZXRob2Q6OiBhY2NlcHQoKQogCiAgICAgICBBY2NlcHQgYSBjb25uZWN0aW9uIG9uIHRoZSBib3VuZCBzb2NrZXQgb3IgbmFtZWQgcGlwZSBvZiB0aGUgbGlzdGVuZXIKLSAgICAgIG9iamVjdCBhbmQgcmV0dXJuIGEgOmNsYXNzOmB+bXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb25gIG9iamVjdC4gIElmCi0gICAgICBhdXRoZW50aWNhdGlvbiBpcyBhdHRlbXB0ZWQgYW5kIGZhaWxzLCB0aGVuCisgICAgICBvYmplY3QgYW5kIHJldHVybiBhIDpjbGFzczpgQ29ubmVjdGlvbmAgb2JqZWN0LgorICAgICAgSWYgYXV0aGVudGljYXRpb24gaXMgYXR0ZW1wdGVkIGFuZCBmYWlscywgdGhlbgogICAgICAgOmV4Yzpgfm11bHRpcHJvY2Vzc2luZy5BdXRoZW50aWNhdGlvbkVycm9yYCBpcyByYWlzZWQuCiAKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKQEAgLTIwNTAsMTEgKzIwNTQsMjQgQEAKICAgICAgIHVuYXZhaWxhYmxlIHRoZW4gaXQgaXMgYGBOb25lYGAuCiAKIAotVGhlIG1vZHVsZSBkZWZpbmVzIHR3byBleGNlcHRpb25zOgorVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uczoKKworLi4gZXhjZXB0aW9uOjogUHJvY2Vzc0Vycm9yCisKKyAgIFRoZSBiYXNlIGNsYXNzIG9mIGFsbCA6bW9kOmBtdWx0aXByb2Nlc3NpbmdgIGV4Y2VwdGlvbnMuCisKKy4uIGV4Y2VwdGlvbjo6IEJ1ZmZlclRvb1Nob3J0CisKKyAgIEV4Y2VwdGlvbiByYWlzZWQgYnkgOm1ldGg6YENvbm5lY3Rpb24ucmVjdl9ieXRlc19pbnRvKClgIHdoZW4gdGhlIHN1cHBsaWVkCisgICBidWZmZXIgb2JqZWN0IGlzIHRvbyBzbWFsbCBmb3IgdGhlIG1lc3NhZ2UgcmVhZC4KIAogLi4gZXhjZXB0aW9uOjogQXV0aGVudGljYXRpb25FcnJvcgogCi0gICBFeGNlcHRpb24gcmFpc2VkIHdoZW4gdGhlcmUgaXMgYW4gYXV0aGVudGljYXRpb24gZXJyb3IuCisgICBSYWlzZWQgd2hlbiB0aGVyZSBpcyBhbiBhdXRoZW50aWNhdGlvbiBlcnJvci4KKworLi4gZXhjZXB0aW9uOjogVGltZW91dEVycm9yCisKKyAgIFJhaXNlZCBieSBtZXRob2RzIHdpdGggYSB0aW1lb3V0IHdoZW4gdGhlIHRpbWVvdXQgZXhwaXJlcy4KIAogCiAqKkV4YW1wbGVzKioKQEAgLTIxMjYsNyArMjE0Myw3IEBACiBBdXRoZW50aWNhdGlvbiBrZXlzCiB+fn5+fn5+fn5+fn5+fn5+fn5+CiAKLVdoZW4gb25lIHVzZXMgOm1ldGg6YENvbm5lY3Rpb24ucmVjdiA8bXVsdGlwcm9jZXNzaW5nLkNvbm5lY3Rpb24ucmVjdj5gLCB0aGUKK1doZW4gb25lIHVzZXMgOm1ldGg6YENvbm5lY3Rpb24ucmVjdmAsIHRoZQogZGF0YSByZWNlaXZlZCBpcyBhdXRvbWF0aWNhbGx5CiB1bnBpY2tsZWQuICBVbmZvcnR1bmF0ZWx5IHVucGlja2xpbmcgZGF0YSBmcm9tIGFuIHVudHJ1c3RlZCBzb3VyY2UgaXMgYSBzZWN1cml0eQogcmlzay4gIFRoZXJlZm9yZSA6Y2xhc3M6YExpc3RlbmVyYCBhbmQgOmZ1bmM6YENsaWVudGAgdXNlIHRoZSA6bW9kOmBobWFjYCBtb2R1bGUKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29wdHBhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L29wdHBhcnNlLnJzdAppbmRleCA0YWY3NWExLi42MjdlYjdkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9vcHRwYXJzZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3B0cGFyc2UucnN0CkBAIC0xNjc5LDcgKzE2NzksNyBAQAogcHJvYmxlbXMgd2l0aCB0aGUgb3B0aW9uIG9yIGl0cyBhcmd1bWVudChzKS4gIDptb2Q6YG9wdHBhcnNlYCBjYXRjaGVzIHRoaXMgYW5kCiB0ZXJtaW5hdGVzIHRoZSBwcm9ncmFtLCBwcmludGluZyB0aGUgZXJyb3IgbWVzc2FnZSB5b3Ugc3VwcGx5IHRvIHN0ZGVyci4gIFlvdXIKIG1lc3NhZ2Ugc2hvdWxkIGJlIGNsZWFyLCBjb25jaXNlLCBhY2N1cmF0ZSwgYW5kIG1lbnRpb24gdGhlIG9wdGlvbiBhdCBmYXVsdC4KLU90aGVyd2lzZSwgdGhlIHVzZXIgd2lsbCBoYXZlIGEgaGFyZCB0aW1lIGZpZ3VyaW5nIG91dCB3aGF0IGhlIGRpZCB3cm9uZy4KK090aGVyd2lzZSwgdGhlIHVzZXIgd2lsbCBoYXZlIGEgaGFyZCB0aW1lIGZpZ3VyaW5nIG91dCB3aGF0IHRoZXkgZGlkIHdyb25nLgogCiAKIC4uIF9vcHRwYXJzZS1jYWxsYmFjay1leGFtcGxlLTE6CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9vcy5yc3QgYi9Eb2MvbGlicmFyeS9vcy5yc3QKaW5kZXggOWNhZWJmMS4uNWJmYTM1MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L29zLnJzdApAQCAtMzI5LDcgKzMyOSw3IEBACiAKIC4uIGZ1bmN0aW9uOjogc2V0cGdycCgpCiAKLSAgIENhbGwgdGhlIHN5c3RlbSBjYWxsIDpjOmZ1bmM6YHNldHBncnBgIG9yIDpjOmZ1bmM6YHNldHBncnAoMCwgMClgIGRlcGVuZGluZyBvbgorICAgQ2FsbCB0aGUgc3lzdGVtIGNhbGwgOmM6ZnVuYzpgc2V0cGdycGAgb3IgYGBzZXRwZ3JwKDAsIDApYGAgZGVwZW5kaW5nIG9uCiAgICB3aGljaCB2ZXJzaW9uIGlzIGltcGxlbWVudGVkIChpZiBhbnkpLiAgU2VlIHRoZSBVbml4IG1hbnVhbCBmb3IgdGhlIHNlbWFudGljcy4KIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGRiLnJzdCBiL0RvYy9saWJyYXJ5L3BkYi5yc3QKaW5kZXggOTE3N2Y5NS4uMzNkNzc1MCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcGRiLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wZGIucnN0CkBAIC03MCw3ICs3MCw3IEBACiAgICA+Pj4gaW1wb3J0IG15bW9kdWxlCiAgICA+Pj4gbXltb2R1bGUudGVzdCgpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgNCwgaW4gdGVzdAogICAgICAgIHRlc3QyKCkKICAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QgYi9Eb2MvbGlicmFyeS9waWNrbGUucnN0CmluZGV4IDQxYmUyYzQuLjY3ZjI3ZGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdApAQCAtNDE4LDEwICs0MTgsMTEgQEAKICAgIFdoZW4gYSBwaWNrbGVkIGNsYXNzIGluc3RhbmNlIGlzIHVucGlja2xlZCwgaXRzIDptZXRoOmBfX2luaXRfX2AgbWV0aG9kIGlzCiAgICBub3JtYWxseSAqbm90KiBpbnZva2VkLiAgSWYgaXQgaXMgZGVzaXJhYmxlIHRoYXQgdGhlIDptZXRoOmBfX2luaXRfX2AgbWV0aG9kCiAgICBiZSBjYWxsZWQgb24gdW5waWNrbGluZywgYW4gb2xkLXN0eWxlIGNsYXNzIGNhbiBkZWZpbmUgYSBtZXRob2QKLSAgIDptZXRoOmBfX2dldGluaXRhcmdzX19gLCB3aGljaCBzaG91bGQgcmV0dXJuIGEgKnR1cGxlKiBjb250YWluaW5nIHRoZQorICAgOm1ldGg6YF9fZ2V0aW5pdGFyZ3NfX2AsIHdoaWNoIHNob3VsZCByZXR1cm4gYSAqdHVwbGUqIG9mIHBvc2l0aW9uYWwKICAgIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yICg6bWV0aDpgX19pbml0X19gIGZvcgotICAgZXhhbXBsZSkuICBUaGUgOm1ldGg6YF9fZ2V0aW5pdGFyZ3NfX2AgbWV0aG9kIGlzIGNhbGxlZCBhdCBwaWNrbGUgdGltZTsgdGhlCi0gICB0dXBsZSBpdCByZXR1cm5zIGlzIGluY29ycG9yYXRlZCBpbiB0aGUgcGlja2xlIGZvciB0aGUgaW5zdGFuY2UuCisgICBleGFtcGxlKS4gIEtleXdvcmQgYXJndW1lbnRzIGFyZSBub3Qgc3VwcG9ydGVkLiAgVGhlIDptZXRoOmBfX2dldGluaXRhcmdzX19gCisgICBtZXRob2QgaXMgY2FsbGVkIGF0IHBpY2tsZSB0aW1lOyB0aGUgdHVwbGUgaXQgcmV0dXJucyBpcyBpbmNvcnBvcmF0ZWQgaW4gdGhlCisgICBwaWNrbGUgZm9yIHRoZSBpbnN0YW5jZS4KIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0bmV3YXJnc19fKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0IGIvRG9jL2xpYnJhcnkvcGxhdGZvcm0ucnN0CmluZGV4IDI4YjZmMDguLjNkMDc0M2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BsYXRmb3JtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wbGF0Zm9ybS5yc3QKQEAgLTMzLDggKzMzLDggQEAKICAgIHJldHVybmVkIGFzIHN0cmluZ3MuCiAKICAgIFZhbHVlcyB0aGF0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIGFyZSByZXR1cm5lZCBhcyBnaXZlbiBieSB0aGUgcGFyYW1ldGVyIHByZXNldHMuCi0gICBJZiBiaXRzIGlzIGdpdmVuIGFzIGBgJydgYCwgdGhlIDpjOmZ1bmM6YHNpemVvZihwb2ludGVyKWAgKG9yCi0gICA6YzpmdW5jOmBzaXplb2YobG9uZylgIG9uIFB5dGhvbiB2ZXJzaW9uIDwgMS41LjIpIGlzIHVzZWQgYXMgaW5kaWNhdG9yIGZvciB0aGUKKyAgIElmIGJpdHMgaXMgZ2l2ZW4gYXMgYGAnJ2BgLCB0aGUgYGBzaXplb2YocG9pbnRlcilgYCAob3IKKyAgIGBgc2l6ZW9mKGxvbmcpYGAgb24gUHl0aG9uIHZlcnNpb24gPCAxLjUuMikgaXMgdXNlZCBhcyBpbmRpY2F0b3IgZm9yIHRoZQogICAgc3VwcG9ydGVkIHBvaW50ZXIgc2l6ZS4KIAogICAgVGhlIGZ1bmN0aW9uIHJlbGllcyBvbiB0aGUgc3lzdGVtJ3MgOmZpbGU6YGZpbGVgIGNvbW1hbmQgdG8gZG8gdGhlIGFjdHVhbCB3b3JrLgpAQCAtMjcwLDYgKzI3MCwxMCBAQAogICAgcGFyYW1ldGVycy4gIGBgaWRgYCBpcyB0aGUgaXRlbSBpbiBwYXJlbnRoZXNlcyBhZnRlciB0aGUgdmVyc2lvbiBudW1iZXIuICBJdAogICAgaXMgdXN1YWxseSB0aGUgdmVyc2lvbiBjb2RlbmFtZS4KIAorICAgLi4gbm90ZTo6CisgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDMuNSBhbmQgcmVtb3ZlZCBpbiBQeXRob24gMy44LgorICAgICAgU2VlIGFsdGVybmF0aXZlIGxpa2UgdGhlIGBkaXN0cm8gPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9kaXN0cm8+YF8gcGFja2FnZS4KKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMi42CiAKIC4uIGZ1bmN0aW9uOjogbGliY192ZXIoZXhlY3V0YWJsZT1zeXMuZXhlY3V0YWJsZSwgbGliPScnLCB2ZXJzaW9uPScnLCBjaHVua3NpemU9MjA0OCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BwcmludC5yc3QgYi9Eb2MvbGlicmFyeS9wcHJpbnQucnN0CmluZGV4IGZmYTI3ZDQuLjNmMDliMjEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BwcmludC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcHByaW50LnJzdApAQCAtMjM0LDQgKzIzNCwzIEBACiAgICAgWydhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEnLAogICAgICAnYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiJ10sCiAgICAgWydjY2NjY2NjY2NjY2NjY2NjY2NjYycsICdkZGRkZGRkZGRkZGRkZGRkZGRkZCddXQotCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wcm9maWxlLnJzdCBiL0RvYy9saWJyYXJ5L3Byb2ZpbGUucnN0CmluZGV4IDIxMGU5OWMuLjA5MjYzNzMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Byb2ZpbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Byb2ZpbGUucnN0CkBAIC0zMzMsMTEgKzMzMywxMiBAQAogICAgY29ycmVzcG9uZGluZyB2ZXJzaW9uIG9mIDptb2Q6YHByb2ZpbGVgIG9yIDptb2Q6YGNQcm9maWxlYC4gIFRvIGJlIHNwZWNpZmljLAogICAgdGhlcmUgaXMgKm5vKiBmaWxlIGNvbXBhdGliaWxpdHkgZ3VhcmFudGVlZCB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGlzCiAgICBwcm9maWxlciwgYW5kIHRoZXJlIGlzIG5vIGNvbXBhdGliaWxpdHkgd2l0aCBmaWxlcyBwcm9kdWNlZCBieSBvdGhlcgotICAgcHJvZmlsZXJzLiAgSWYgc2V2ZXJhbCBmaWxlcyBhcmUgcHJvdmlkZWQsIGFsbCB0aGUgc3RhdGlzdGljcyBmb3IgaWRlbnRpY2FsCi0gICBmdW5jdGlvbnMgd2lsbCBiZSBjb2FsZXNjZWQsIHNvIHRoYXQgYW4gb3ZlcmFsbCB2aWV3IG9mIHNldmVyYWwgcHJvY2Vzc2VzIGNhbgotICAgYmUgY29uc2lkZXJlZCBpbiBhIHNpbmdsZSByZXBvcnQuICBJZiBhZGRpdGlvbmFsIGZpbGVzIG5lZWQgdG8gYmUgY29tYmluZWQKLSAgIHdpdGggZGF0YSBpbiBhbiBleGlzdGluZyA6Y2xhc3M6YH5wc3RhdHMuU3RhdHNgIG9iamVjdCwgdGhlCi0gICA6bWV0aDpgfnBzdGF0cy5TdGF0cy5hZGRgIG1ldGhvZCBjYW4gYmUgdXNlZC4KKyAgIHByb2ZpbGVycywgb3IgdGhlIHNhbWUgcHJvZmlsZXIgcnVuIG9uIGEgZGlmZmVyZW50IG9wZXJhdGluZyBzeXN0ZW0uICBJZgorICAgc2V2ZXJhbCBmaWxlcyBhcmUgcHJvdmlkZWQsIGFsbCB0aGUgc3RhdGlzdGljcyBmb3IgaWRlbnRpY2FsIGZ1bmN0aW9ucyB3aWxsCisgICBiZSBjb2FsZXNjZWQsIHNvIHRoYXQgYW4gb3ZlcmFsbCB2aWV3IG9mIHNldmVyYWwgcHJvY2Vzc2VzIGNhbiBiZSBjb25zaWRlcmVkCisgICBpbiBhIHNpbmdsZSByZXBvcnQuICBJZiBhZGRpdGlvbmFsIGZpbGVzIG5lZWQgdG8gYmUgY29tYmluZWQgd2l0aCBkYXRhIGluIGFuCisgICBleGlzdGluZyA6Y2xhc3M6YH5wc3RhdHMuU3RhdHNgIG9iamVjdCwgdGhlIDptZXRoOmB+cHN0YXRzLlN0YXRzLmFkZGAgbWV0aG9kCisgICBjYW4gYmUgdXNlZC4KIAogICAgSW5zdGVhZCBvZiByZWFkaW5nIHRoZSBwcm9maWxlIGRhdGEgZnJvbSBhIGZpbGUsIGEgOmNsYXNzOmBjUHJvZmlsZS5Qcm9maWxlYAogICAgb3IgOmNsYXNzOmBwcm9maWxlLlByb2ZpbGVgIG9iamVjdCBjYW4gYmUgdXNlZCBhcyB0aGUgcHJvZmlsZSBkYXRhIHNvdXJjZS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3B5ZXhwYXQucnN0IGIvRG9jL2xpYnJhcnkvcHlleHBhdC5yc3QKaW5kZXggZmZhMDQyYi4uOWFjNTU3MiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcHlleHBhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcHlleHBhdC5yc3QKQEAgLTkxMSw3ICs5MTEsNyBAQAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIFRoZSBlbmNvZGluZyBzdHJpbmcgaW5jbHVkZWQgaW4gWE1MIG91dHB1dCBzaG91bGQgY29uZm9ybSB0byB0aGUKKy4uIFsxXSBUaGUgZW5jb2Rpbmcgc3RyaW5nIGluY2x1ZGVkIGluIFhNTCBvdXRwdXQgc2hvdWxkIGNvbmZvcm0gdG8gdGhlCiAgICBhcHByb3ByaWF0ZSBzdGFuZGFyZHMuIEZvciBleGFtcGxlLCAiVVRGLTgiIGlzIHZhbGlkLCBidXQgIlVURjgiIGlzCiAgICBub3QuIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvMjAwNi9SRUMteG1sMTEtMjAwNjA4MTYvI05ULUVuY29kaW5nRGVjbAogICAgYW5kIGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJhY3Rlci1zZXRzL2NoYXJhY3Rlci1zZXRzLnhodG1sLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdCBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKaW5kZXggMmEzYzNhZi4uODUyZmU3YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CkBAIC03MSwxNyArNzEsMTcgQEAKIEJvb2trZWVwaW5nIGZ1bmN0aW9uczoKIAogCi0uLiBmdW5jdGlvbjo6IHNlZWQoW3hdKQorLi4gZnVuY3Rpb246OiBzZWVkKGE9Tm9uZSkKIAotICAgSW5pdGlhbGl6ZSB0aGUgYmFzaWMgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuIE9wdGlvbmFsIGFyZ3VtZW50ICp4KiBjYW4gYmUgYW55Ci0gICA6dGVybTpgaGFzaGFibGVgIG9iamVjdC4gSWYgKngqIGlzIG9taXR0ZWQgb3IgYGBOb25lYGAsIGN1cnJlbnQgc3lzdGVtIHRpbWUgaXMgdXNlZDsKLSAgIGN1cnJlbnQgc3lzdGVtIHRpbWUgaXMgYWxzbyB1c2VkIHRvIGluaXRpYWxpemUgdGhlIGdlbmVyYXRvciB3aGVuIHRoZSBtb2R1bGUgaXMKLSAgIGZpcnN0IGltcG9ydGVkLiAgSWYgcmFuZG9tbmVzcyBzb3VyY2VzIGFyZSBwcm92aWRlZCBieSB0aGUgb3BlcmF0aW5nIHN5c3RlbSwKLSAgIHRoZXkgYXJlIHVzZWQgaW5zdGVhZCBvZiB0aGUgc3lzdGVtIHRpbWUgKHNlZSB0aGUgOmZ1bmM6YG9zLnVyYW5kb21gIGZ1bmN0aW9uCi0gICBmb3IgZGV0YWlscyBvbiBhdmFpbGFiaWxpdHkpLgorICAgSW5pdGlhbGl6ZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IuCiAKLSAgIElmIGEgOnRlcm06YGhhc2hhYmxlYCBvYmplY3QgaXMgZ2l2ZW4sIGRldGVybWluaXN0aWMgcmVzdWx0cyBhcmUgb25seSBhc3N1cmVkCi0gICB3aGVuIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYCBpcyBkaXNhYmxlZC4KKyAgIGBgTm9uZWBgIG9yIG5vIGFyZ3VtZW50IHNlZWRzIGZyb20gY3VycmVudCB0aW1lIG9yIGZyb20gYW4gb3BlcmF0aW5nCisgICBzeXN0ZW0gc3BlY2lmaWMgcmFuZG9tbmVzcyBzb3VyY2UgaWYgYXZhaWxhYmxlIChzZWUgdGhlIDpmdW5jOmBvcy51cmFuZG9tYAorICAgZnVuY3Rpb24gZm9yIGRldGFpbHMgb24gYXZhaWxhYmlsaXR5KS4KKworICAgSWYgKmEqIGlzIG5vdCBgYE5vbmVgYCBvciBhbiA6Y2xhc3M6YGludGAgb3IgYSA6Y2xhc3M6YGxvbmdgLCB0aGVuCisgICBgYGhhc2goYSlgYCBpcyB1c2VkIGluc3RlYWQuICBOb3RlIHRoYXQgdGhlIGhhc2ggdmFsdWVzIGZvciBzb21lIHR5cGVzCisgICBhcmUgbm9uZGV0ZXJtaW5pc3RpYyB3aGVuIDplbnZ2YXI6YFBZVEhPTkhBU0hTRUVEYCBpcyBlbmFibGVkLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNAogICAgICAgZm9ybWVybHksIG9wZXJhdGluZyBzeXN0ZW0gcmVzb3VyY2VzIHdlcmUgbm90IHVzZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yZS5yc3QgYi9Eb2MvbGlicmFyeS9yZS5yc3QKaW5kZXggN2I3NmQwYy4uYzcwOGEyOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcmUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JlLnJzdApAQCAtMzMsNiArMzMsMTIgQEAKIHNob3J0Y3V0cyB0aGF0IGRvbid0IHJlcXVpcmUgeW91IHRvIGNvbXBpbGUgYSByZWdleCBvYmplY3QgZmlyc3QsIGJ1dCBtaXNzIHNvbWUKIGZpbmUtdHVuaW5nIHBhcmFtZXRlcnMuCiAKKy4uIHNlZWFsc286OgorCisgICBUaGUgdGhpcmQtcGFydHkgYHJlZ2V4IDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvcmVnZXgvPmBfIG1vZHVsZSwKKyAgIHdoaWNoIGhhcyBhbiBBUEkgY29tcGF0aWJsZSB3aXRoIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IDptb2Q6YHJlYCBtb2R1bGUsCisgICBidXQgb2ZmZXJzIGFkZGl0aW9uYWwgZnVuY3Rpb25hbGl0eSBhbmQgYSBtb3JlIHRob3JvdWdoIFVuaWNvZGUgc3VwcG9ydC4KKwogCiAuLiBfcmUtc3ludGF4OgogCkBAIC00ODAsNyArNDg2LDkgQEAKICAgICAgICAgICBJR05PUkVDQVNFCiAKICAgIFBlcmZvcm0gY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaGluZzsgZXhwcmVzc2lvbnMgbGlrZSBgYFtBLVpdYGAgd2lsbCBtYXRjaAotICAgbG93ZXJjYXNlIGxldHRlcnMsIHRvby4gIFRoaXMgaXMgbm90IGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IGxvY2FsZS4KKyAgIGxvd2VyY2FzZSBsZXR0ZXJzLCB0b28uICBUaGlzIGlzIG5vdCBhZmZlY3RlZCBieSB0aGUgY3VycmVudCBsb2NhbGUuICBUbworICAgZ2V0IHRoaXMgZWZmZWN0IG9uIG5vbi1BU0NJSSBVbmljb2RlIGNoYXJhY3RlcnMgc3VjaCBhcyBgYMO8YGAgYW5kIGBgw5xgYCwKKyAgIGFkZCB0aGUgOmNvbnN0OmBVTklDT0RFYCBmbGFnLgogCiAKIC4uIGRhdGE6OiBMCkBAIC01MTEsOCArNTE5LDkgQEAKIC4uIGRhdGE6OiBVCiAgICAgICAgICAgVU5JQ09ERQogCi0gICBNYWtlIGBgXHdgYCwgYGBcV2BgLCBgYFxiYGAsIGBgXEJgYCwgYGBcZGBgLCBgYFxEYGAsIGBgXHNgYCBhbmQgYGBcU2BgIGRlcGVuZGVudAotICAgb24gdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHByb3BlcnRpZXMgZGF0YWJhc2UuCisgICBNYWtlIHRoZSBgYFx3YGAsIGBgXFdgYCwgYGBcYmBgLCBgYFxCYGAsIGBgXGRgYCwgYGBcRGBgLCBgYFxzYGAgYW5kIGBgXFNgYAorICAgc2VxdWVuY2VzIGRlcGVuZGVudCBvbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgcHJvcGVydGllcyBkYXRhYmFzZS4gQWxzbworICAgZW5hYmxlcyBub24tQVNDSUkgbWF0Y2hpbmcgZm9yIDpjb25zdDpgSUdOT1JFQ0FTRWAuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDIuMAogCkBAIC01MjMsNyArNTMyLDggQEAKICAgIFRoaXMgZmxhZyBhbGxvd3MgeW91IHRvIHdyaXRlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhhdCBsb29rIG5pY2VyIGFuZCBhcmUKICAgIG1vcmUgcmVhZGFibGUgYnkgYWxsb3dpbmcgeW91IHRvIHZpc3VhbGx5IHNlcGFyYXRlIGxvZ2ljYWwgc2VjdGlvbnMgb2YgdGhlCiAgICBwYXR0ZXJuIGFuZCBhZGQgY29tbWVudHMuIFdoaXRlc3BhY2Ugd2l0aGluIHRoZSBwYXR0ZXJuIGlzIGlnbm9yZWQsIGV4Y2VwdAotICAgd2hlbiBpbiBhIGNoYXJhY3RlciBjbGFzcyBvciB3aGVuIHByZWNlZGVkIGJ5IGFuIHVuZXNjYXBlZCBiYWNrc2xhc2guCisgICB3aGVuIGluIGEgY2hhcmFjdGVyIGNsYXNzLCBvciB3aGVuIHByZWNlZGVkIGJ5IGFuIHVuZXNjYXBlZCBiYWNrc2xhc2gsCisgICBvciB3aXRoaW4gdG9rZW5zIGxpa2UgYGAqP2BgLCBgYCg/OmBgIG9yIGBgKD9QPC4uLj5gYC4KICAgIFdoZW4gYSBsaW5lIGNvbnRhaW5zIGEgYGAjYGAgdGhhdCBpcyBub3QgaW4gYSBjaGFyYWN0ZXIgY2xhc3MgYW5kIGlzIG5vdAogICAgcHJlY2VkZWQgYnkgYW4gdW5lc2NhcGVkIGJhY2tzbGFzaCwgYWxsIGNoYXJhY3RlcnMgZnJvbSB0aGUgbGVmdG1vc3Qgc3VjaAogICAgYGAjYGAgdGhyb3VnaCB0aGUgZW5kIG9mIHRoZSBsaW5lIGFyZSBpZ25vcmVkLgpAQCAtNjAxLDE0ICs2MTEsMjEgQEAKICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCBmbGFncyBhcmd1bWVudC4KIAogCisKIC4uIGZ1bmN0aW9uOjogZmluZGFsbChwYXR0ZXJuLCBzdHJpbmcsIGZsYWdzPTApCiAKICAgIFJldHVybiBhbGwgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgb2YgKnBhdHRlcm4qIGluICpzdHJpbmcqLCBhcyBhIGxpc3Qgb2YKICAgIHN0cmluZ3MuICBUaGUgKnN0cmluZyogaXMgc2Nhbm5lZCBsZWZ0LXRvLXJpZ2h0LCBhbmQgbWF0Y2hlcyBhcmUgcmV0dXJuZWQgaW4KICAgIHRoZSBvcmRlciBmb3VuZC4gIElmIG9uZSBvciBtb3JlIGdyb3VwcyBhcmUgcHJlc2VudCBpbiB0aGUgcGF0dGVybiwgcmV0dXJuIGEKICAgIGxpc3Qgb2YgZ3JvdXBzOyB0aGlzIHdpbGwgYmUgYSBsaXN0IG9mIHR1cGxlcyBpZiB0aGUgcGF0dGVybiBoYXMgbW9yZSB0aGFuCi0gICBvbmUgZ3JvdXAuICBFbXB0eSBtYXRjaGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IHVubGVzcyB0aGV5IHRvdWNoIHRoZQotICAgYmVnaW5uaW5nIG9mIGFub3RoZXIgbWF0Y2guCisgICBvbmUgZ3JvdXAuICBFbXB0eSBtYXRjaGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0LgorCisgICAuLiBub3RlOjoKKworICAgICAgRHVlIHRvIHRoZSBsaW1pdGF0aW9uIG9mIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHRoZSBjaGFyYWN0ZXIKKyAgICAgIGZvbGxvd2luZyBhbiBlbXB0eSBtYXRjaCBpcyBub3QgaW5jbHVkZWQgaW4gYSBuZXh0IG1hdGNoLCBzbworICAgICAgYGBmaW5kYWxsKHInXnxcdysnLCAndHdvIHdvcmRzJylgYCByZXR1cm5zIGBgWycnLCAnd28nLCAnd29yZHMnXWBgCisgICAgICAobm90ZSBtaXNzZWQgInQiKS4gIFRoaXMgaXMgY2hhbmdlZCBpbiBQeXRob24gMy43LgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAxLjUuMgogCkBAIC02MjEsOCArNjM4LDcgQEAKICAgIFJldHVybiBhbiA6dGVybTpgaXRlcmF0b3JgIHlpZWxkaW5nIDpjbGFzczpgTWF0Y2hPYmplY3RgIGluc3RhbmNlcyBvdmVyIGFsbAogICAgbm9uLW92ZXJsYXBwaW5nIG1hdGNoZXMgZm9yIHRoZSBSRSAqcGF0dGVybiogaW4gKnN0cmluZyouICBUaGUgKnN0cmluZyogaXMKICAgIHNjYW5uZWQgbGVmdC10by1yaWdodCwgYW5kIG1hdGNoZXMgYXJlIHJldHVybmVkIGluIHRoZSBvcmRlciBmb3VuZC4gIEVtcHR5Ci0gICBtYXRjaGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0IHVubGVzcyB0aGV5IHRvdWNoIHRoZSBiZWdpbm5pbmcgb2YgYW5vdGhlcgotICAgbWF0Y2guCisgICBtYXRjaGVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0LiAgU2VlIGFsc28gdGhlIG5vdGUgYWJvdXQgOmZ1bmM6YGZpbmRhbGxgLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjIKIApAQCAtNjg5LDExICs3MDUsMjIgQEAKICAgICAgIEFkZGVkIHRoZSBvcHRpb25hbCBmbGFncyBhcmd1bWVudC4KIAogCi0uLiBmdW5jdGlvbjo6IGVzY2FwZShzdHJpbmcpCisuLiBmdW5jdGlvbjo6IGVzY2FwZShwYXR0ZXJuKQogCi0gICBSZXR1cm4gKnN0cmluZyogd2l0aCBhbGwgbm9uLWFscGhhbnVtZXJpY3MgYmFja3NsYXNoZWQ7IHRoaXMgaXMgdXNlZnVsIGlmIHlvdQotICAgd2FudCB0byBtYXRjaCBhbiBhcmJpdHJhcnkgbGl0ZXJhbCBzdHJpbmcgdGhhdCBtYXkgaGF2ZSByZWd1bGFyIGV4cHJlc3Npb24KLSAgIG1ldGFjaGFyYWN0ZXJzIGluIGl0LgorICAgRXNjYXBlIGFsbCB0aGUgY2hhcmFjdGVycyBpbiAqcGF0dGVybiogZXhjZXB0IEFTQ0lJIGxldHRlcnMgYW5kIG51bWJlcnMuCisgICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBtYXRjaCBhbiBhcmJpdHJhcnkgbGl0ZXJhbCBzdHJpbmcgdGhhdCBtYXkKKyAgIGhhdmUgcmVndWxhciBleHByZXNzaW9uIG1ldGFjaGFyYWN0ZXJzIGluIGl0LiAgRm9yIGV4YW1wbGU6OgorCisgICAgICA+Pj4gcHJpbnQgcmUuZXNjYXBlKCdweXRob24uZXhlJykKKyAgICAgIHB5dGhvblwuZXhlCisKKyAgICAgID4+PiBsZWdhbF9jaGFycyA9IHN0cmluZy5hc2NpaV9sb3dlcmNhc2UgKyBzdHJpbmcuZGlnaXRzICsgIiEjJCUmJyorLS5eX2B8fjoiCisgICAgICA+Pj4gcHJpbnQgJ1slc10rJyAlIHJlLmVzY2FwZShsZWdhbF9jaGFycykKKyAgICAgIFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIVwjXCRcJVwmXCdcKlwrXC1cLlxeXF9cYFx8XH5cOl0rCisKKyAgICAgID4+PiBvcGVyYXRvcnMgPSBbJysnLCAnLScsICcqJywgJy8nLCAnKionXQorICAgICAgPj4+IHByaW50ICd8Jy5qb2luKG1hcChyZS5lc2NhcGUsIHNvcnRlZChvcGVyYXRvcnMsIHJldmVyc2U9VHJ1ZSkpKQorICAgICAgXC98XC18XCt8XCpcKnxcKgogCiAKIC4uIGZ1bmN0aW9uOjogcHVyZ2UoKQpAQCAtMTIyOSw4ICsxMjU2LDggQEAKIF5eXl5eXl5eXl5eXl5eXl5eXl4KIAogOmZ1bmM6YGZpbmRhbGxgIG1hdGNoZXMgKmFsbCogb2NjdXJyZW5jZXMgb2YgYSBwYXR0ZXJuLCBub3QganVzdCB0aGUgZmlyc3QKLW9uZSBhcyA6ZnVuYzpgc2VhcmNoYCBkb2VzLiAgRm9yIGV4YW1wbGUsIGlmIG9uZSB3YXMgYSB3cml0ZXIgYW5kIHdhbnRlZCB0bwotZmluZCBhbGwgb2YgdGhlIGFkdmVyYnMgaW4gc29tZSB0ZXh0LCBoZSBvciBzaGUgbWlnaHQgdXNlIDpmdW5jOmBmaW5kYWxsYCBpbgorb25lIGFzIDpmdW5jOmBzZWFyY2hgIGRvZXMuICBGb3IgZXhhbXBsZSwgaWYgYSB3cml0ZXIgd2FudGVkIHRvCitmaW5kIGFsbCBvZiB0aGUgYWR2ZXJicyBpbiBzb21lIHRleHQsIHRoZXkgbWlnaHQgdXNlIDpmdW5jOmBmaW5kYWxsYCBpbgogdGhlIGZvbGxvd2luZyBtYW5uZXI6CiAKICAgID4+PiB0ZXh0ID0gIkhlIHdhcyBjYXJlZnVsbHkgZGlzZ3Vpc2VkIGJ1dCBjYXB0dXJlZCBxdWlja2x5IGJ5IHBvbGljZS4iCkBAIC0xMjQ0LDggKzEyNzEsOCBAQAogSWYgb25lIHdhbnRzIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYWxsIG1hdGNoZXMgb2YgYSBwYXR0ZXJuIHRoYW4gdGhlIG1hdGNoZWQKIHRleHQsIDpmdW5jOmBmaW5kaXRlcmAgaXMgdXNlZnVsIGFzIGl0IHByb3ZpZGVzIGluc3RhbmNlcyBvZgogOmNsYXNzOmBNYXRjaE9iamVjdGAgaW5zdGVhZCBvZiBzdHJpbmdzLiAgQ29udGludWluZyB3aXRoIHRoZSBwcmV2aW91cyBleGFtcGxlLAotaWYgb25lIHdhcyBhIHdyaXRlciB3aG8gd2FudGVkIHRvIGZpbmQgYWxsIG9mIHRoZSBhZHZlcmJzICphbmQgdGhlaXIgcG9zaXRpb25zKgotaW4gc29tZSB0ZXh0LCBoZSBvciBzaGUgd291bGQgdXNlIDpmdW5jOmBmaW5kaXRlcmAgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXI6CitpZiBhIHdyaXRlciB3YW50ZWQgdG8gZmluZCBhbGwgb2YgdGhlIGFkdmVyYnMgKmFuZCB0aGVpciBwb3NpdGlvbnMqCitpbiBzb21lIHRleHQsIHRoZXkgd291bGQgdXNlIDpmdW5jOmBmaW5kaXRlcmAgaW4gdGhlIGZvbGxvd2luZyBtYW5uZXI6CiAKICAgID4+PiB0ZXh0ID0gIkhlIHdhcyBjYXJlZnVsbHkgZGlzZ3Vpc2VkIGJ1dCBjYXB0dXJlZCBxdWlja2x5IGJ5IHBvbGljZS4iCiAgICA+Pj4gZm9yIG0gaW4gcmUuZmluZGl0ZXIociJcdytseSIsIHRleHQpOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2NoZWQucnN0IGIvRG9jL2xpYnJhcnkvc2NoZWQucnN0CmluZGV4IGViZTZjMGEuLjFmYmE4YmEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NjaGVkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zY2hlZC5yc3QKQEAgLTg0LDcgKzg0LDcgQEAKICAgIFNjaGVkdWxlIGEgbmV3IGV2ZW50LiBUaGUgKnRpbWUqIGFyZ3VtZW50IHNob3VsZCBiZSBhIG51bWVyaWMgdHlwZSBjb21wYXRpYmxlCiAgICB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlICp0aW1lZnVuYyogZnVuY3Rpb24gcGFzc2VkICB0byB0aGUgY29uc3RydWN0b3IuCiAgICBFdmVudHMgc2NoZWR1bGVkIGZvciB0aGUgc2FtZSAqdGltZSogd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgb3JkZXIgb2YgdGhlaXIKLSAgICpwcmlvcml0eSouCisgICAqcHJpb3JpdHkqLiBBIGxvd2VyIG51bWJlciByZXByZXNlbnRzIGEgaGlnaGVyIHByaW9yaXR5LgogCiAgICBFeGVjdXRpbmcgdGhlIGV2ZW50IG1lYW5zIGV4ZWN1dGluZyBgYGFjdGlvbigqYXJndW1lbnQpYGAuICAqYXJndW1lbnQqIG11c3QgYmUgYQogICAgc2VxdWVuY2UgaG9sZGluZyB0aGUgcGFyYW1ldGVycyBmb3IgKmFjdGlvbiouCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZ21sbGliLnJzdCBiL0RvYy9saWJyYXJ5L3NnbWxsaWIucnN0CmluZGV4IDFmYzY1MGMuLmZmZDAxMDIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NnbWxsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NnbWxsaWIucnN0CkBAIC0xNjYsNyArMTY2LDcgQEAKICAgIHBhc3NpbmcgaXQgdG8gOm1ldGg6YGNvbnZlcnRfZW50aXR5cmVmYC4gIElmIGEgdHJhbnNsYXRpb24gaXMgcmV0dXJuZWQsIGl0IGNhbGxzCiAgICB0aGUgbWV0aG9kIDptZXRoOmBoYW5kbGVfZGF0YWAgd2l0aCB0aGUgdHJhbnNsYXRpb247IG90aGVyd2lzZSwgaXQgY2FsbHMgdGhlCiAgICBtZXRob2QgYGB1bmtub3duX2VudGl0eXJlZihyZWYpYGAuIFRoZSBkZWZhdWx0IDphdHRyOmBlbnRpdHlkZWZzYCBkZWZpbmVzCi0gICB0cmFuc2xhdGlvbnMgZm9yIGBgJmFtcDtgYCwgYGAmYXBvc2BgLCBgYCZndDtgYCwgYGAmbHQ7YGAsIGFuZCBgYCZxdW90O2BgLgorICAgdHJhbnNsYXRpb25zIGZvciBgYCZhbXA7YGAsIGBgJmFwb3M7YGAsIGBgJmd0O2BgLCBgYCZsdDtgYCwgYW5kIGBgJnF1b3Q7YGAuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMi41CiAgICAgICBVc2UgOm1ldGg6YGNvbnZlcnRfZW50aXR5cmVmYCBpbnN0ZWFkIG9mIGhhcmQtY29kaW5nIHRoZSBjb252ZXJzaW9uLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdCBiL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKaW5kZXggNTI3Y2JkMC4uNmJkOGYwNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CkBAIC0yNjcsNyArMjY3LDkgQEAKIAogICAgKmJhc2VfbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgdG8gY3JlYXRlLCBpbmNsdWRpbmcgdGhlIHBhdGgsIG1pbnVzCiAgICBhbnkgZm9ybWF0LXNwZWNpZmljIGV4dGVuc2lvbi4gKmZvcm1hdCogaXMgdGhlIGFyY2hpdmUgZm9ybWF0OiBvbmUgb2YKLSAgICJ6aXAiLCAidGFyIiwgImJ6dGFyIiBvciAiZ3p0YXIiLgorICAgInppcCIgKGlmIHRoZSA6bW9kOmB6bGliYCBtb2R1bGUgb3IgZXh0ZXJuYWwgYGB6aXBgYCBleGVjdXRhYmxlIGlzCisgICBhdmFpbGFibGUpLCAidGFyIiwgImd6dGFyIiAoaWYgdGhlIDptb2Q6YHpsaWJgIG1vZHVsZSBpcyBhdmFpbGFibGUpLCBvcgorICAgImJ6dGFyIiAoaWYgdGhlIDptb2Q6YGJ6MmAgbW9kdWxlIGlzIGF2YWlsYWJsZSkuCiAKICAgICpyb290X2RpciogaXMgYSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUKICAgIGFyY2hpdmU7IGllLiB3ZSB0eXBpY2FsbHkgY2hkaXIgaW50byAqcm9vdF9kaXIqIGJlZm9yZSBjcmVhdGluZyB0aGUKQEAgLTI5NSwxMCArMjk3LDExIEBACiAKICAgIEJ5IGRlZmF1bHQgOm1vZDpgc2h1dGlsYCBwcm92aWRlcyB0aGVzZSBmb3JtYXRzOgogCi0gICAtICpnenRhcio6IGd6aXAnZWQgdGFyLWZpbGUKLSAgIC0gKmJ6dGFyKjogYnppcDInZWQgdGFyLWZpbGUKLSAgIC0gKnRhcio6IHVuY29tcHJlc3NlZCB0YXIgZmlsZQotICAgLSAqemlwKjogWklQIGZpbGUKKyAgIC0gKnppcCo6IFpJUCBmaWxlIChpZiB0aGUgOm1vZDpgemxpYmAgbW9kdWxlIG9yIGV4dGVybmFsIGBgemlwYGAKKyAgICAgZXhlY3V0YWJsZSBpcyBhdmFpbGFibGUpLgorICAgLSAqdGFyKjogdW5jb21wcmVzc2VkIHRhciBmaWxlLgorICAgLSAqZ3p0YXIqOiBnemlwJ2VkIHRhci1maWxlIChpZiB0aGUgOm1vZDpgemxpYmAgbW9kdWxlIGlzIGF2YWlsYWJsZSkuCisgICAtICpienRhcio6IGJ6aXAyJ2VkIHRhci1maWxlIChpZiB0aGUgOm1vZDpgYnoyYCBtb2R1bGUgaXMgYXZhaWxhYmxlKS4KIAogICAgWW91IGNhbiByZWdpc3RlciBuZXcgZm9ybWF0cyBvciBwcm92aWRlIHlvdXIgb3duIGFyY2hpdmVyIGZvciBhbnkgZXhpc3RpbmcKICAgIGZvcm1hdHMsIGJ5IHVzaW5nIDpmdW5jOmByZWdpc3Rlcl9hcmNoaXZlX2Zvcm1hdGAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaWduYWwucnN0IGIvRG9jL2xpYnJhcnkvc2lnbmFsLnJzdAppbmRleCBmZTc5ODNiLi4zYjAyYTM5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zaWduYWwucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpZ25hbC5yc3QKQEAgLTE5Nyw4ICsxOTcsMTAgQEAKICAgIHdyaXR0ZW4gdG8gdGhlIGZkLiAgVGhpcyBjYW4gYmUgdXNlZCBieSBhIGxpYnJhcnkgdG8gd2FrZXVwIGEgcG9sbCBvciBzZWxlY3QKICAgIGNhbGwsIGFsbG93aW5nIHRoZSBzaWduYWwgdG8gYmUgZnVsbHkgcHJvY2Vzc2VkLgogCi0gICBUaGUgb2xkIHdha2V1cCBmZCBpcyByZXR1cm5lZC4gICpmZCogbXVzdCBiZSBub24tYmxvY2tpbmcuICBJdCBpcyB1cCB0byB0aGUKLSAgIGxpYnJhcnkgdG8gcmVtb3ZlIGFueSBieXRlcyBiZWZvcmUgY2FsbGluZyBwb2xsIG9yIHNlbGVjdCBhZ2Fpbi4KKyAgIFRoZSBvbGQgd2FrZXVwIGZkIGlzIHJldHVybmVkIChvciAtMSBpZiBmaWxlIGRlc2NyaXB0b3Igd2FrZXVwIHdhcyBub3QKKyAgIGVuYWJsZWQpLiAgSWYgKmZkKiBpcyAtMSwgZmlsZSBkZXNjcmlwdG9yIHdha2V1cCBpcyBkaXNhYmxlZC4KKyAgIElmIG5vdCAtMSwgKmZkKiBtdXN0IGJlIG5vbi1ibG9ja2luZy4gIEl0IGlzIHVwIHRvIHRoZSBsaWJyYXJ5IHRvIHJlbW92ZQorICAgYW55IGJ5dGVzIGZyb20gKmZkKiBiZWZvcmUgY2FsbGluZyBwb2xsIG9yIHNlbGVjdCBhZ2Fpbi4KIAogICAgV2hlbiB0aHJlYWRzIGFyZSBlbmFibGVkLCB0aGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBmcm9tIHRoZSBtYWluIHRocmVhZDsKICAgIGF0dGVtcHRpbmcgdG8gY2FsbCBpdCBmcm9tIG90aGVyIHRocmVhZHMgd2lsbCBjYXVzZSBhIDpleGM6YFZhbHVlRXJyb3JgCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaXRlLnJzdCBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CmluZGV4IGZmNzE5NWQuLjFjMmQ2M2UgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NpdGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CkBAIC0yMDYsNyArMjA2LDcgQEAKIElmIGJvdGggb3B0aW9ucyBhcmUgZ2l2ZW4sIHVzZXIgYmFzZSBhbmQgdXNlciBzaXRlIHdpbGwgYmUgcHJpbnRlZCAoYWx3YXlzIGluCiB0aGlzIG9yZGVyKSwgc2VwYXJhdGVkIGJ5IDpkYXRhOmBvcy5wYXRoc2VwYC4KIAotSWYgYW55IG9wdGlvbiBpcyBnaXZlbiwgdGhlIHNjcmlwdCB3aWxsIGV4aXQgd2l0aCBvbmUgb2YgdGhlc2UgdmFsdWVzOiBgYE9gYCBpZgorSWYgYW55IG9wdGlvbiBpcyBnaXZlbiwgdGhlIHNjcmlwdCB3aWxsIGV4aXQgd2l0aCBvbmUgb2YgdGhlc2UgdmFsdWVzOiBgYDBgYCBpZgogdGhlIHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcnkgaXMgZW5hYmxlZCwgYGAxYGAgaWYgaXQgd2FzIGRpc2FibGVkIGJ5IHRoZQogdXNlciwgYGAyYGAgaWYgaXQgaXMgZGlzYWJsZWQgZm9yIHNlY3VyaXR5IHJlYXNvbnMgb3IgYnkgYW4gYWRtaW5pc3RyYXRvciwgYW5kIGEKIHZhbHVlIGdyZWF0ZXIgdGhhbiAyIGlmIHRoZXJlIGlzIGFuIGVycm9yLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKaW5kZXggYTgxMjE0ZS4uMWFkNGI2OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CkBAIC0yODQsNyArMjg0LDcgQEAKICAgIC4uIFhYWCBzaG91bGQgdGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb25zIG9mIHRoZXNlIGJlIGRvY3VtZW50ZWQsIG9yIHNob3VsZAogICAgICAgaXQgYmUgYXNzdW1lZCB0aGF0IHRoZSB1c2VyIHdpbGwgbG9vayBhdCBTb2NrZXRTZXJ2ZXIucHk/CiAKLSAgIC4uIG1ldGhvZDo6IGZpbmlzaF9yZXF1ZXN0KCkKKyAgIC4uIG1ldGhvZDo6IGZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQogCiAgICAgICBBY3R1YWxseSBwcm9jZXNzZXMgdGhlIHJlcXVlc3QgYnkgaW5zdGFudGlhdGluZyA6YXR0cjpgUmVxdWVzdEhhbmRsZXJDbGFzc2AgYW5kCiAgICAgICBjYWxsaW5nIGl0cyA6bWV0aDpgfkJhc2VSZXF1ZXN0SGFuZGxlci5oYW5kbGVgIG1ldGhvZC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NxbGl0ZTMucnN0IGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKaW5kZXggYmQ1ZGQxNC4uY2U1M2U4NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QKQEAgLTIwNiw4ICsyMDYsOCBAQAogICAgUmVnaXN0ZXJzIGEgY2FsbGFibGUgdG8gY29udmVydCBhIGJ5dGVzdHJpbmcgZnJvbSB0aGUgZGF0YWJhc2UgaW50byBhIGN1c3RvbQogICAgUHl0aG9uIHR5cGUuIFRoZSBjYWxsYWJsZSB3aWxsIGJlIGludm9rZWQgZm9yIGFsbCBkYXRhYmFzZSB2YWx1ZXMgdGhhdCBhcmUgb2YKICAgIHRoZSB0eXBlICp0eXBlbmFtZSouIENvbmZlciB0aGUgcGFyYW1ldGVyICpkZXRlY3RfdHlwZXMqIG9mIHRoZSA6ZnVuYzpgY29ubmVjdGAKLSAgIGZ1bmN0aW9uIGZvciBob3cgdGhlIHR5cGUgZGV0ZWN0aW9uIHdvcmtzLiBOb3RlIHRoYXQgdGhlIGNhc2Ugb2YgKnR5cGVuYW1lKiBhbmQKLSAgIHRoZSBuYW1lIG9mIHRoZSB0eXBlIGluIHlvdXIgcXVlcnkgbXVzdCBtYXRjaCEKKyAgIGZ1bmN0aW9uIGZvciBob3cgdGhlIHR5cGUgZGV0ZWN0aW9uIHdvcmtzLiBOb3RlIHRoYXQgKnR5cGVuYW1lKiBhbmQgdGhlIG5hbWUgb2YKKyAgIHRoZSB0eXBlIGluIHlvdXIgcXVlcnkgYXJlIG1hdGNoZWQgaW4gY2FzZS1pbnNlbnNpdGl2ZSBtYW5uZXIuCiAKIAogLi4gZnVuY3Rpb246OiByZWdpc3Rlcl9hZGFwdGVyKHR5cGUsIGNhbGxhYmxlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKaW5kZXggODg0OWQwZi4uMDQyMTAzMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CkBAIC0yNCw2ICsyNCw5IEBACiBsaWJyYXJ5LiBJdCBpcyBhdmFpbGFibGUgb24gYWxsIG1vZGVybiBVbml4IHN5c3RlbXMsIFdpbmRvd3MsIE1hYyBPUyBYLCBhbmQKIHByb2JhYmx5IGFkZGl0aW9uYWwgcGxhdGZvcm1zLCBhcyBsb25nIGFzIE9wZW5TU0wgaXMgaW5zdGFsbGVkIG9uIHRoYXQgcGxhdGZvcm0uCiAKKy4uIHZlcnNpb25jaGFuZ2VkOjogMi43LjEzCisgICBVcGRhdGVkIHRvIHN1cHBvcnQgbGlua2luZyB3aXRoIE9wZW5TU0wgMS4xLjAKKwogLi4gbm90ZTo6CiAKICAgIFNvbWUgYmVoYXZpb3IgbWF5IGJlIHBsYXRmb3JtIGRlcGVuZGVudCwgc2luY2UgY2FsbHMgYXJlIG1hZGUgdG8gdGhlCkBAIC0xOTIsMTIgKzE5NSwxNyBAQAogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tCiAgICAgICAgICpTU0x2MiogICAgICAgICAgICAgICAgICAgIHllcyAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KICAgICAgICAgKlNTTHYzKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubwotICAgICAgICAqU1NMdjIzKiAgICAgICAgICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgIHllcworICAgICAgICAqU1NMdjIzKiBbMV1fICAgICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgIHllcwogICAgICAgICAqVExTdjEqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgeWVzICAgICAgICBubyAgICAgICAgIG5vCiAgICAgICAgICpUTFN2MS4xKiAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgbm8KICAgICAgICAgKlRMU3YxLjIqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMKICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQogCisgICAuLiBydWJyaWM6OiBGb290bm90ZXMKKyAgIC4uIFsxXSBUTFMgMS4zIHByb3RvY29sIHdpbGwgYmUgYXZhaWxhYmxlIHdpdGggOmRhdGE6YFBST1RPQ09MX1NTTHYyM2AgaW4KKyAgICAgIE9wZW5TU0wgPj0gMS4xLjEuIFRoZXJlIGlzIG5vIGRlZGljYXRlZCBQUk9UT0NPTCBjb25zdGFudCBmb3IganVzdAorICAgICAgVExTIDEuMy4KKwogICAgLi4gbm90ZTo6CiAKICAgICAgIFdoaWNoIGNvbm5lY3Rpb25zIHN1Y2NlZWQgd2lsbCB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgdmVyc2lvbiBvZgpAQCAtMjA2LDcgKzIxNCw3IEBACiAKICAgIFRoZSAqY2lwaGVycyogcGFyYW1ldGVyIHNldHMgdGhlIGF2YWlsYWJsZSBjaXBoZXJzIGZvciB0aGlzIFNTTCBvYmplY3QuCiAgICBJdCBzaG91bGQgYmUgYSBzdHJpbmcgaW4gdGhlIGBPcGVuU1NMIGNpcGhlciBsaXN0IGZvcm1hdAotICAgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvYXBwcy9jaXBoZXJzLmh0bWwjQ0lQSEVSLUxJU1QtRk9STUFUPmBfLgorICAgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvbWFubWFzdGVyL21hbjEvY2lwaGVycy5odG1sPmBfLgogCiAgICBUaGUgcGFyYW1ldGVyIGBgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3RgYCBzcGVjaWZpZXMgd2hldGhlciB0byBkbyB0aGUgU1NMCiAgICBoYW5kc2hha2UgYXV0b21hdGljYWxseSBhZnRlciBkb2luZyBhIDptZXRoOmBzb2NrZXQuY29ubmVjdGAsIG9yIHdoZXRoZXIgdGhlCkBAIC0yODYsNiArMjk0LDExIEBACiAKICAgICAgM0RFUyB3YXMgZHJvcHBlZCBmcm9tIHRoZSBkZWZhdWx0IGNpcGhlciBzdHJpbmcuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMi43LjE1CisKKyAgICAgVExTIDEuMyBjaXBoZXIgc3VpdGVzIFRMU19BRVNfMTI4X0dDTV9TSEEyNTYsIFRMU19BRVNfMjU2X0dDTV9TSEEzODQsCisgICAgIGFuZCBUTFNfQ0hBQ0hBMjBfUE9MWTEzMDVfU0hBMjU2IHdlcmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KKwogLi4gZnVuY3Rpb246OiBfaHR0cHNfdmVyaWZ5X2NlcnRpZmljYXRlcyhlbmFibGU9VHJ1ZSkKIAogICAgU3BlY2lmaWVzIHdoZXRoZXIgb3Igbm90IHNlcnZlciBjZXJ0aWZpY2F0ZXMgYXJlIHZlcmlmaWVkIHdoZW4gY3JlYXRpbmcKQEAgLTcwMSw2ICs3MTQsMTYgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMi43LjkKIAorLi4gZGF0YTo6IE9QX05PX1RMU3YxXzMKKworICAgUHJldmVudHMgYSBUTFN2MS4zIGNvbm5lY3Rpb24uIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXBwbGljYWJsZSBpbiBjb25qdW5jdGlvbgorICAgd2l0aCA6Y29uc3Q6YFBST1RPQ09MX1RMU2AuIEl0IHByZXZlbnRzIHRoZSBwZWVycyBmcm9tIGNob29zaW5nIFRMU3YxLjMgYXMKKyAgIHRoZSBwcm90b2NvbCB2ZXJzaW9uLiBUTFMgMS4zIGlzIGF2YWlsYWJsZSB3aXRoIE9wZW5TU0wgMS4xLjEgb3IgbGF0ZXIuCisgICBXaGVuIFB5dGhvbiBoYXMgYmVlbiBjb21waWxlZCBhZ2FpbnN0IGFuIG9sZGVyIHZlcnNpb24gb2YgT3BlblNTTCwgdGhlCisgICBmbGFnIGRlZmF1bHRzIHRvICowKi4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMi43LjE1CisKIC4uIGRhdGE6OiBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UKIAogICAgVXNlIHRoZSBzZXJ2ZXIncyBjaXBoZXIgb3JkZXJpbmcgcHJlZmVyZW5jZSwgcmF0aGVyIHRoYW4gdGhlIGNsaWVudCdzLgpAQCAtNzY1LDYgKzc4OCwxMiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjcuOQogCisuLiBkYXRhOjogSEFTX1RMU3YxXzMKKworICAgV2hldGhlciB0aGUgT3BlblNTTCBsaWJyYXJ5IGhhcyBidWlsdC1pbiBzdXBwb3J0IGZvciB0aGUgVExTIDEuMyBwcm90b2NvbC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMi43LjE1CisKIC4uIGRhdGE6OiBDSEFOTkVMX0JJTkRJTkdfVFlQRVMKIAogICAgTGlzdCBvZiBzdXBwb3J0ZWQgVExTIGNoYW5uZWwgYmluZGluZyB0eXBlcy4gIFN0cmluZ3MgaW4gdGhpcyBsaXN0CkBAIC0xMTA4LDcgKzExMzcsNyBAQAogICAgVGhlICpjYXBhdGgqIHN0cmluZywgaWYgcHJlc2VudCwgaXMKICAgIHRoZSBwYXRoIHRvIGEgZGlyZWN0b3J5IGNvbnRhaW5pbmcgc2V2ZXJhbCBDQSBjZXJ0aWZpY2F0ZXMgaW4gUEVNIGZvcm1hdCwKICAgIGZvbGxvd2luZyBhbiBgT3BlblNTTCBzcGVjaWZpYyBsYXlvdXQKLSAgIDxodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL3NzbC9TU0xfQ1RYX2xvYWRfdmVyaWZ5X2xvY2F0aW9ucy5odG1sPmBfLgorICAgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvbWFuMS4xLjAvc3NsL1NTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zLmh0bWw+YF8uCiAKICAgIFRoZSAqY2FkYXRhKiBvYmplY3QsIGlmIHByZXNlbnQsIGlzIGVpdGhlciBhbiBBU0NJSSBzdHJpbmcgb2Ygb25lIG9yIG1vcmUKICAgIFBFTS1lbmNvZGVkIGNlcnRpZmljYXRlcyBvciBhIGJ5dGVzLWxpa2Ugb2JqZWN0IG9mIERFUi1lbmNvZGVkCkBAIC0xMTI0LDYgKzExNTMsMTAgQEAKICAgIGRvZXMgbm90IGNvbnRhaW4gY2VydGlmaWNhdGVzIGZyb20gKmNhcGF0aCogdW5sZXNzIGEgY2VydGlmaWNhdGUgd2FzCiAgICByZXF1ZXN0ZWQgYW5kIGxvYWRlZCBieSBhIFNTTCBjb25uZWN0aW9uLgogCisgICAuLiBub3RlOjoKKyAgICAgIENlcnRpZmljYXRlcyBpbiBhIGNhcGF0aCBkaXJlY3RvcnkgYXJlbid0IGxvYWRlZCB1bmxlc3MgdGhleSBoYXZlCisgICAgICBiZWVuIHVzZWQgYXQgbGVhc3Qgb25jZS4KKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCiAgICBMb2FkIGEgc2V0IG9mIGRlZmF1bHQgImNlcnRpZmljYXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcyBmcm9tCkBAIC0xMTM3LDcgKzExNzAsNyBAQAogCiAgICBTZXQgdGhlIGF2YWlsYWJsZSBjaXBoZXJzIGZvciBzb2NrZXRzIGNyZWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuCiAgICBJdCBzaG91bGQgYmUgYSBzdHJpbmcgaW4gdGhlIGBPcGVuU1NMIGNpcGhlciBsaXN0IGZvcm1hdAotICAgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvYXBwcy9jaXBoZXJzLmh0bWwjQ0lQSEVSLUxJU1QtRk9STUFUPmBfLgorICAgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvbWFubWFzdGVyL21hbjEvY2lwaGVycy5odG1sPmBfLgogICAgSWYgbm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCAoYmVjYXVzZSBjb21waWxlLXRpbWUgb3B0aW9ucyBvciBvdGhlcgogICAgY29uZmlndXJhdGlvbiBmb3JiaWRzIHVzZSBvZiBhbGwgdGhlIHNwZWNpZmllZCBjaXBoZXJzKSwgYW4KICAgIDpjbGFzczpgU1NMRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgpAQCAtMTE1OCw4ICsxMTkxLDkgQEAKICAgIFRoaXMgbWV0aG9kIHdpbGwgcmFpc2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgaWYgOmRhdGE6YEhBU19BTFBOYCBpcwogICAgRmFsc2UuCiAKLSAgIE9wZW5TU0wgMS4xLjArIHdpbGwgYWJvcnQgdGhlIGhhbmRzaGFrZSBhbmQgcmFpc2UgOmV4YzpgU1NMRXJyb3JgIHdoZW4KLSAgIGJvdGggc2lkZXMgc3VwcG9ydCBBTFBOIGJ1dCBjYW5ub3QgYWdyZWUgb24gYSBwcm90b2NvbC4KKyAgIE9wZW5TU0wgMS4xLjAgdG8gMS4xLjBlIHdpbGwgYWJvcnQgdGhlIGhhbmRzaGFrZSBhbmQgcmFpc2UgOmV4YzpgU1NMRXJyb3JgCisgICB3aGVuIGJvdGggc2lkZXMgc3VwcG9ydCBBTFBOIGJ1dCBjYW5ub3QgYWdyZWUgb24gYSBwcm90b2NvbC4gMS4xLjBmKworICAgYmVoYXZlcyBsaWtlIDEuMC4yLCA6bWV0aDpgU1NMU29ja2V0LnNlbGVjdGVkX2FscG5fcHJvdG9jb2xgIHJldHVybnMgTm9uZS4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMi43LjEwCiAKQEAgLTEyNzksNyArMTMxMyw3IEBACiAKICAgIEdldCBzdGF0aXN0aWNzIGFib3V0IHRoZSBTU0wgc2Vzc2lvbnMgY3JlYXRlZCBvciBtYW5hZ2VkIGJ5IHRoaXMgY29udGV4dC4KICAgIEEgZGljdGlvbmFyeSBpcyByZXR1cm5lZCB3aGljaCBtYXBzIHRoZSBuYW1lcyBvZiBlYWNoIGBwaWVjZSBvZiBpbmZvcm1hdGlvbgotICAgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3Mvc3NsL1NTTF9DVFhfc2Vzc19udW1iZXIuaHRtbD5gXyB0byB0aGVpcgorICAgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvbWFuMS4xLjAvc3NsL1NTTF9DVFhfc2Vzc19udW1iZXIuaHRtbD5gXyB0byB0aGVpcgogICAgbnVtZXJpYyB2YWx1ZXMuICBGb3IgZXhhbXBsZSwgaGVyZSBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGhpdHMgYW5kIG1pc3NlcwogICAgaW4gdGhlIHNlc3Npb24gY2FjaGUgc2luY2UgdGhlIGNvbnRleHQgd2FzIGNyZWF0ZWQ6OgogCkBAIC0xMjg3LDE2ICsxMzIxLDYgQEAKICAgICAgID4+PiBzdGF0c1snaGl0cyddLCBzdGF0c1snbWlzc2VzJ10KICAgICAgICgwLCAwKQogCi0uLiBtZXRob2Q6OiBTU0xDb250ZXh0LmdldF9jYV9jZXJ0cyhiaW5hcnlfZm9ybT1GYWxzZSkKLQotICAgUmV0dXJucyBhIGxpc3Qgb2YgZGljdHMgd2l0aCBpbmZvcm1hdGlvbiBvZiBsb2FkZWQgQ0EgY2VydHMuIElmIHRoZQotICAgb3B0aW9uYWwgYXJndW1lbnQgaXMgdHJ1ZSwgcmV0dXJucyBhIERFUi1lbmNvZGVkIGNvcHkgb2YgdGhlIENBCi0gICBjZXJ0aWZpY2F0ZS4KLQotICAgLi4gbm90ZTo6Ci0gICAgICBDZXJ0aWZpY2F0ZXMgaW4gYSBjYXBhdGggZGlyZWN0b3J5IGFyZW4ndCBsb2FkZWQgdW5sZXNzIHRoZXkgaGF2ZQotICAgICAgYmVlbiB1c2VkIGF0IGxlYXN0IG9uY2UuCi0KIC4uIGF0dHJpYnV0ZTo6IFNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWUKIAogICAgV2V0aGVyIHRvIG1hdGNoIHRoZSBwZWVyIGNlcnQncyBob3N0bmFtZSB3aXRoIDpmdW5jOmBtYXRjaF9ob3N0bmFtZWAgaW4KQEAgLTEzMDksNyArMTMzMyw3IEBACiAKICAgICAgIGltcG9ydCBzb2NrZXQsIHNzbAogCi0gICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFMpCiAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKICAgICAgIGNvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBUcnVlCiAgICAgICBjb250ZXh0LmxvYWRfZGVmYXVsdF9jZXJ0cygpCkBAIC0xMzcxLDcgKzEzOTUsNyBAQAogCiBBIGNlcnRpZmljYXRlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHR3byBwcmluY2lwYWxzLiAgSXQgY29udGFpbnMgdGhlIG5hbWUKIG9mIGEgKnN1YmplY3QqLCBhbmQgdGhlIHN1YmplY3QncyBwdWJsaWMga2V5LiAgSXQgYWxzbyBjb250YWlucyBhIHN0YXRlbWVudCBieSBhCi1zZWNvbmQgcHJpbmNpcGFsLCB0aGUgKmlzc3VlciosIHRoYXQgdGhlIHN1YmplY3QgaXMgd2hvIGhlIGNsYWltcyB0byBiZSwgYW5kCitzZWNvbmQgcHJpbmNpcGFsLCB0aGUgKmlzc3VlciosIHRoYXQgdGhlIHN1YmplY3QgaXMgd2hvIHRoZXkgY2xhaW0gdG8gYmUsIGFuZAogdGhhdCB0aGlzIGlzIGluZGVlZCB0aGUgc3ViamVjdCdzIHB1YmxpYyBrZXkuICBUaGUgaXNzdWVyJ3Mgc3RhdGVtZW50IGlzIHNpZ25lZAogd2l0aCB0aGUgaXNzdWVyJ3MgcHJpdmF0ZSBrZXksIHdoaWNoIG9ubHkgdGhlIGlzc3VlciBrbm93cy4gIEhvd2V2ZXIsIGFueW9uZSBjYW4KIHZlcmlmeSB0aGUgaXNzdWVyJ3Mgc3RhdGVtZW50IGJ5IGZpbmRpbmcgdGhlIGlzc3VlcidzIHB1YmxpYyBrZXksIGRlY3J5cHRpbmcgdGhlCkBAIC0xNTE1LDcgKzE1MzksNyBAQAogYSBjb250ZXh0IGZyb20gc2NyYXRjaCAoYnV0IGJld2FyZSB0aGF0IHlvdSBtaWdodCBub3QgZ2V0IHRoZSBzZXR0aW5ncwogcmlnaHQpOjoKIAotICAgPj4+IGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgPj4+IGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTKQogICAgPj4+IGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAogICAgPj4+IGNvbnRleHQuY2hlY2tfaG9zdG5hbWUgPSBUcnVlCiAgICA+Pj4gY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoIi9ldGMvc3NsL2NlcnRzL2NhLWJ1bmRsZS5jcnQiKQpAQCAtMTU2NSw3ICsxNTg5LDcgQEAKICAgICAgICAgICAgICAgICAoKCdjb21tb25OYW1lJywgJ3d3dy5weXRob24ub3JnJyksKSksCiAgICAgJ3N1YmplY3RBbHROYW1lJzogKCgnRE5TJywgJ3d3dy5weXRob24ub3JnJyksCiAgICAgICAgICAgICAgICAgICAgICAgICgnRE5TJywgJ3B5dGhvbi5vcmcnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCdETlMnLCAncHlwaS5weXRob24ub3JnJyksCisgICAgICAgICAgICAgICAgICAgICAgICgnRE5TJywgJ3B5cGkub3JnJyksCiAgICAgICAgICAgICAgICAgICAgICAgICgnRE5TJywgJ2RvY3MucHl0aG9uLm9yZycpLAogICAgICAgICAgICAgICAgICAgICAgICAoJ0ROUycsICd0ZXN0cHlwaS5weXRob24ub3JnJyksCiAgICAgICAgICAgICAgICAgICAgICAgICgnRE5TJywgJ2J1Z3MucHl0aG9uLm9yZycpLApAQCAtMTc4Nyw2ICsxODExLDIzIEBACiA6ZnVuYzpgfnNzbC5SQU5EX3BzZXVkb19ieXRlc2AgaXMgc3VmZmljaWVudC4KIAogCisuLiBzc2wtbGlicmVzc2w6CisKK0xpYnJlU1NMIHN1cHBvcnQKKy0tLS0tLS0tLS0tLS0tLS0KKworTGlicmVTU0wgaXMgYSBmb3JrIG9mIE9wZW5TU0wgMS4wLjEuIFRoZSBzc2wgbW9kdWxlIGhhcyBsaW1pdGVkIHN1cHBvcnQgZm9yCitMaWJyZVNTTC4gU29tZSBmZWF0dXJlcyBhcmUgbm90IGF2YWlsYWJsZSB3aGVuIHRoZSBzc2wgbW9kdWxlIGlzIGNvbXBpbGVkCit3aXRoIExpYnJlU1NMLgorCisqIExpYnJlU1NMID49IDIuNi4xIG5vIGxvbmdlciBzdXBwb3J0cyBOUE4uIFRoZSBtZXRob2RzCisgIDptZXRoOmBTU0xDb250ZXh0LnNldF9ucG5fcHJvdG9jb2xzYCBhbmQKKyAgOm1ldGg6YFNTTFNvY2tldC5zZWxlY3RlZF9ucG5fcHJvdG9jb2xgIGFyZSBub3QgYXZhaWxhYmxlLgorKiA6bWV0aDpgU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHNgIGlnbm9yZXMgdGhlIGVudiB2YXJzCisgIDplbnZ2YXI6YFNTTF9DRVJUX0ZJTEVgIGFuZCA6ZW52dmFyOmBTU0xfQ0VSVF9QQVRIYCBhbHRob3VnaAorICA6ZnVuYzpgZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzYCBzdGlsbCByZXBvcnRzIHRoZW0uCisKKwogLi4gc2VlYWxzbzo6CiAKICAgIENsYXNzIDpjbGFzczpgc29ja2V0LnNvY2tldGAKQEAgLTE4MTUsMyArMTg1Niw5IEBACiAKICAgIGBJQU5BIFRMUzogVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpIFBhcmFtZXRlcnMgPGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL3Rscy1wYXJhbWV0ZXJzL3Rscy1wYXJhbWV0ZXJzLnhtbD5gXwogICAgICAgIElBTkEKKworICAgYFJGQyA3NTI1OiBSZWNvbW1lbmRhdGlvbnMgZm9yIFNlY3VyZSBVc2Ugb2YgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpIGFuZCBEYXRhZ3JhbSBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgKERUTFMpIDxodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzUyNT5gXworICAgICAgIElFVEYKKworICAgYE1vemlsbGEncyBTZXJ2ZXIgU2lkZSBUTFMgcmVjb21tZW5kYXRpb25zIDxodHRwczovL3dpa2kubW96aWxsYS5vcmcvU2VjdXJpdHkvU2VydmVyX1NpZGVfVExTPmBfCisgICAgICAgTW96aWxsYQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0IGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CmluZGV4IDlmNTI1NWEuLmZmNjg3MzggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKQEAgLTExMywxMSArMTEzLDExIEBACiAKICgxKQogICAgVGhpcyBpcyBhIHNob3J0LWNpcmN1aXQgb3BlcmF0b3IsIHNvIGl0IG9ubHkgZXZhbHVhdGVzIHRoZSBzZWNvbmQKLSAgIGFyZ3VtZW50IGlmIHRoZSBmaXJzdCBvbmUgaXMgOmNvbnN0OmBGYWxzZWAuCisgICBhcmd1bWVudCBpZiB0aGUgZmlyc3Qgb25lIGlzIGZhbHNlLgogCiAoMikKICAgIFRoaXMgaXMgYSBzaG9ydC1jaXJjdWl0IG9wZXJhdG9yLCBzbyBpdCBvbmx5IGV2YWx1YXRlcyB0aGUgc2Vjb25kCi0gICBhcmd1bWVudCBpZiB0aGUgZmlyc3Qgb25lIGlzIDpjb25zdDpgVHJ1ZWAuCisgICBhcmd1bWVudCBpZiB0aGUgZmlyc3Qgb25lIGlzIHRydWUuCiAKICgzKQogICAgYGBub3RgYCBoYXMgYSBsb3dlciBwcmlvcml0eSB0aGFuIG5vbi1Cb29sZWFuIG9wZXJhdG9ycywgc28gYGBub3QgYSA9PSBiYGAgaXMKQEAgLTQyMywxMCArNDIzLDEyIEBACiAgICBwYWlyOiBiaXR3aXNlOyBvcGVyYXRpb25zCiAgICBwYWlyOiBzaGlmdGluZzsgb3BlcmF0aW9ucwogICAgcGFpcjogbWFza2luZzsgb3BlcmF0aW9ucworICAgb3BlcmF0b3I6IHwKICAgIG9wZXJhdG9yOiBeCiAgICBvcGVyYXRvcjogJgogICAgb3BlcmF0b3I6IDw8CiAgICBvcGVyYXRvcjogPj4KKyAgIG9wZXJhdG9yOiB+CiAKIEJpdHdpc2Ugb3BlcmF0aW9ucyBvbmx5IG1ha2Ugc2Vuc2UgZm9yIGludGVnZXJzLiAgTmVnYXRpdmUgbnVtYmVycyBhcmUgdHJlYXRlZAogYXMgdGhlaXIgMidzIGNvbXBsZW1lbnQgdmFsdWUgKHRoaXMgYXNzdW1lcyBhIHN1ZmZpY2llbnRseSBsYXJnZSBudW1iZXIgb2YgYml0cwpAQCAtODE5LDcgKzgyMSw3IEBACiAgICA6cmVmOmBmYXEtbXVsdGlkaW1lbnNpb25hbC1saXN0YC4KIAogKDMpCi0gICBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nOgorICAgSWYgKmkqIG9yICpqKiBpcyBuZWdhdGl2ZSwgdGhlIGluZGV4IGlzIHJlbGF0aXZlIHRvIHRoZSBlbmQgb2Ygc2VxdWVuY2UgKnMqOgogICAgYGBsZW4ocykgKyBpYGAgb3IgYGBsZW4ocykgKyBqYGAgaXMgc3Vic3RpdHV0ZWQuICBCdXQgbm90ZSB0aGF0IGBgLTBgYCBpcyBzdGlsbAogICAgYGAwYGAuCiAKQEAgLTgzNCw4ICs4MzYsMTAgQEAKICAgIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyB0aGUgc2VxdWVuY2Ugb2YKICAgIGl0ZW1zIHdpdGggaW5kZXggIGBgeCA9IGkgKyBuKmtgYCBzdWNoIHRoYXQgYGAwIDw9IG4gPCAoai1pKS9rYGAuICBJbiBvdGhlciB3b3JkcywKICAgIHRoZSBpbmRpY2VzIGFyZSBgYGlgYCwgYGBpK2tgYCwgYGBpKzIqa2BgLCBgYGkrMyprYGAgYW5kIHNvIG9uLCBzdG9wcGluZyB3aGVuCi0gICAqaiogaXMgcmVhY2hlZCAoYnV0IG5ldmVyIGluY2x1ZGluZyAqaiopLiAgSWYgKmkqIG9yICpqKiBpcyBncmVhdGVyIHRoYW4KLSAgIGBgbGVuKHMpYGAsIHVzZSBgYGxlbihzKWBgLiAgSWYgKmkqIG9yICpqKiBhcmUgb21pdHRlZCBvciBgYE5vbmVgYCwgdGhleSBiZWNvbWUKKyAgICpqKiBpcyByZWFjaGVkIChidXQgbmV2ZXIgaW5jbHVkaW5nICpqKikuICBXaGVuICprKiBpcyBwb3NpdGl2ZSwKKyAgICppKiBhbmQgKmoqIGFyZSByZWR1Y2VkIHRvIGBgbGVuKHMpYGAgaWYgdGhleSBhcmUgZ3JlYXRlci4KKyAgIFdoZW4gKmsqIGlzIG5lZ2F0aXZlLCAqaSogYW5kICpqKiBhcmUgcmVkdWNlZCB0byBgYGxlbihzKSAtIDFgYCBpZgorICAgdGhleSBhcmUgZ3JlYXRlci4gIElmICppKiBvciAqaiogYXJlIG9taXR0ZWQgb3IgYGBOb25lYGAsIHRoZXkgYmVjb21lCiAgICAiZW5kIiB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqayogY2Fubm90IGJlIHplcm8uCiAgICBJZiAqayogaXMgYGBOb25lYGAsIGl0IGlzIHRyZWF0ZWQgbGlrZSBgYDFgYC4KIApAQCAtMTA2Niw4ICsxMDcwLDEwIEBACiAKIC4uIG1ldGhvZDo6IHN0ci5qb2luKGl0ZXJhYmxlKQogCi0gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlCi0gICA6dGVybTpgaXRlcmFibGVgICppdGVyYWJsZSouICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlIHN0cmluZworICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluICppdGVyYWJsZSouCisgICBJZiB0aGVyZSBpcyBhbnkgVW5pY29kZSBvYmplY3QgaW4gKml0ZXJhYmxlKiwgcmV0dXJuIGEgVW5pY29kZSBpbnN0ZWFkLgorICAgQSA6ZXhjOmBUeXBlRXJyb3JgIHdpbGwgYmUgcmFpc2VkIGlmIHRoZXJlIGFyZSBhbnkgbm9uLXN0cmluZyBvciBub24gVW5pY29kZQorICAgb2JqZWN0IHZhbHVlcyBpbiAqaXRlcmFibGUqLiAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcKICAgIHByb3ZpZGluZyB0aGlzIG1ldGhvZC4KIAogCkBAIC0xMzc1LDcgKzEzODEsNyBAQAogLi4gbWV0aG9kOjogc3RyLnVwcGVyKCkKIAogICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XV8gY29udmVydGVkIHRvCi0gICB1cHBlcmNhc2UuICBOb3RlIHRoYXQgYGBzdHIudXBwZXIoKS5pc3VwcGVyKClgYCBtaWdodCBiZSBgYEZhbHNlYGAgaWYgYGBzYGAKKyAgIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCBgYHMudXBwZXIoKS5pc3VwcGVyKClgYCBtaWdodCBiZSBgYEZhbHNlYGAgaWYgYGBzYGAKICAgIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZSBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nCiAgICBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLgogCkBAIC0xNTUxLDkgKzE1NTcsNyBAQAogCiAoMikKICAgIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgYSBsZWFkaW5nIGBgJzB4J2BgIG9yIGBgJzBYJ2BgIChkZXBlbmRpbmcgb24gd2hldGhlcgotICAgdGhlIGBgJ3gnYGAgb3IgYGAnWCdgYCBmb3JtYXQgd2FzIHVzZWQpIHRvIGJlIGluc2VydGVkIGJldHdlZW4gbGVmdC1oYW5kIHBhZGRpbmcKLSAgIGFuZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbnVtYmVyIGlmIHRoZSBsZWFkaW5nIGNoYXJhY3RlciBvZiB0aGUgcmVzdWx0IGlzIG5vdAotICAgYWxyZWFkeSBhIHplcm8uCisgICB0aGUgYGAneCdgYCBvciBgYCdYJ2BgIGZvcm1hdCB3YXMgdXNlZCkgdG8gYmUgaW5zZXJ0ZWQgYmVmb3JlIHRoZSBmaXJzdCBkaWdpdC4KIAogKDMpCiAgICBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgdG8gYWx3YXlzIGNvbnRhaW4gYSBkZWNpbWFsIHBvaW50LCBldmVuIGlmCkBAIC0yMDAzLDkgKzIwMDcsNyBAQAogCiAgICBOb3RlLCB0aGUgKmVsZW0qIGFyZ3VtZW50IHRvIHRoZSA6bWV0aDpgX19jb250YWluc19fYCwgOm1ldGg6YHJlbW92ZWAsIGFuZAogICAgOm1ldGg6YGRpc2NhcmRgIG1ldGhvZHMgbWF5IGJlIGEgc2V0LiAgVG8gc3VwcG9ydCBzZWFyY2hpbmcgZm9yIGFuIGVxdWl2YWxlbnQKLSAgIGZyb3plbnNldCwgdGhlICplbGVtKiBzZXQgaXMgdGVtcG9yYXJpbHkgbXV0YXRlZCBkdXJpbmcgdGhlIHNlYXJjaCBhbmQgdGhlbgotICAgcmVzdG9yZWQuICBEdXJpbmcgdGhlIHNlYXJjaCwgdGhlICplbGVtKiBzZXQgc2hvdWxkIG5vdCBiZSByZWFkIG9yIG11dGF0ZWQKLSAgIHNpbmNlIGl0IGRvZXMgbm90IGhhdmUgYSBtZWFuaW5nZnVsIHZhbHVlLgorICAgZnJvemVuc2V0LCBhIHRlbXBvcmFyeSBvbmUgaXMgY3JlYXRlZCBmcm9tICplbGVtKi4KIAogCiAuLiBzZWVhbHNvOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QgYi9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CmluZGV4IGMyYWY0NDYuLmY4ZDQxZjkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdApAQCAtMjU3LDggKzI1Nyw5IEBACiBkb2VzIGFuIGluZGV4IGxvb2t1cCB1c2luZyA6ZnVuYzpgX19nZXRpdGVtX19gLgogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNwotICAgVGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVycyBjYW4gYmUgb21pdHRlZCwgc28gYGAne30ge30nYGAgaXMKLSAgIGVxdWl2YWxlbnQgdG8gYGAnezB9IHsxfSdgYC4KKyAgIFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgY2FuIGJlIG9taXR0ZWQgZm9yIDptZXRoOmBzdHIuZm9ybWF0YCBhbmQKKyAgIDptZXRoOmB1bmljb2RlLmZvcm1hdGAsIHNvIGBgJ3t9IHt9J2BgIGlzIGVxdWl2YWxlbnQgdG8gYGAnezB9IHsxfSdgYCwKKyAgIGBgdSd7fSB7fSdgYCBpcyBlcXVpdmFsZW50IHRvIGBgdSd7MH0gezF9J2BgLgogCiBTb21lIHNpbXBsZSBmb3JtYXQgc3RyaW5nIGV4YW1wbGVzOjoKIApAQCAtNDYzLDEwICs0NjQsMTAgQEAKICAgIHwgYGAnRSdgYCB8IEV4cG9uZW50IG5vdGF0aW9uLiBTYW1lIGFzIGBgJ2UnYGAgZXhjZXB0IGl0IHVzZXMgYW4gICAgIHwKICAgIHwgICAgICAgICB8IHVwcGVyIGNhc2UgJ0UnIGFzIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyLiAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnZidgYCB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgZml4ZWQtcG9pbnQgICAgICAgIHwKLSAgIHwgICAgICAgICB8IG51bWJlci4gIFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyBgYDZgYC4gICAgICAgICAgICAgICAgIHwKKyAgIHwgYGAnZidgYCB8IEZpeGVkLXBvaW50IG5vdGF0aW9uLiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgICAgICAgICAgIHwKKyAgIHwgICAgICAgICB8IGZpeGVkLXBvaW50IG51bWJlci4gIFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyBgYDZgYC4gICAgIHwKICAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnRidgYCB8IEZpeGVkIHBvaW50LiBTYW1lIGFzIGBgJ2YnYGAuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgYGAnRidgYCB8IEZpeGVkIHBvaW50IG5vdGF0aW9uLiBTYW1lIGFzIGBgJ2YnYGAuICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGAnZydgYCB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uIGBgcCA+PSAxYGAsICAgICAgIHwKICAgIHwgICAgICAgICB8IHRoaXMgcm91bmRzIHRoZSBudW1iZXIgdG8gYGBwYGAgc2lnbmlmaWNhbnQgZGlnaXRzIGFuZCAgIHwKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N1YnByb2Nlc3MucnN0IGIvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKaW5kZXggMjg0Y2Y0NC4uNTNhMDE2MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QKQEAgLTMyLDcgKzMyLDcgQEAKIAogICAgOnBlcDpgMzI0YCAtLSBQRVAgcHJvcG9zaW5nIHRoZSBzdWJwcm9jZXNzIG1vZHVsZQogCi0uLiBfc3VicHJvY2VzczMyOiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3N1YnByb2Nlc3MzMi8KKy4uIF9zdWJwcm9jZXNzMzI6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9zdWJwcm9jZXNzMzIvCiAKIFVzaW5nIHRoZSA6bW9kOmBzdWJwcm9jZXNzYCBNb2R1bGUKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N1bmF1LnJzdCBiL0RvYy9saWJyYXJ5L3N1bmF1LnJzdAppbmRleCA1ZDU3ZDRiLi41YmY0ODAzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdW5hdS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3VuYXUucnN0CkBAIC0xMTcsNyArMTE3LDcgQEAKIAogLi4gbWV0aG9kOjogQVVfcmVhZC5nZXRuY2hhbm5lbHMoKQogCi0gICBSZXR1cm5zIG51bWJlciBvZiBhdWRpbyBjaGFubmVscyAoMSBmb3IgbW9uZSwgMiBmb3Igc3RlcmVvKS4KKyAgIFJldHVybnMgbnVtYmVyIG9mIGF1ZGlvIGNoYW5uZWxzICgxIGZvciBtb25vLCAyIGZvciBzdGVyZW8pLgogCiAKIC4uIG1ldGhvZDo6IEFVX3JlYWQuZ2V0c2FtcHdpZHRoKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5cy5yc3QgYi9Eb2MvbGlicmFyeS9zeXMucnN0CmluZGV4IDMxZTY0NGUuLjVhNzY0N2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzLnJzdApAQCAtODU3LDEzICs4NTcsMzggQEAKICAgIFNldCB0aGUgc3lzdGVtJ3MgcHJvZmlsZSBmdW5jdGlvbiwgd2hpY2ggYWxsb3dzIHlvdSB0byBpbXBsZW1lbnQgYSBQeXRob24gc291cmNlCiAgICBjb2RlIHByb2ZpbGVyIGluIFB5dGhvbi4gIFNlZSBjaGFwdGVyIDpyZWY6YHByb2ZpbGVgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZQogICAgUHl0aG9uIHByb2ZpbGVyLiAgVGhlIHN5c3RlbSdzIHByb2ZpbGUgZnVuY3Rpb24gaXMgY2FsbGVkIHNpbWlsYXJseSB0byB0aGUKLSAgIHN5c3RlbSdzIHRyYWNlIGZ1bmN0aW9uIChzZWUgOmZ1bmM6YHNldHRyYWNlYCksIGJ1dCBpdCBpc24ndCBjYWxsZWQgZm9yIGVhY2gKLSAgIGV4ZWN1dGVkIGxpbmUgb2YgY29kZSAob25seSBvbiBjYWxsIGFuZCByZXR1cm4sIGJ1dCB0aGUgcmV0dXJuIGV2ZW50IGlzIHJlcG9ydGVkCi0gICBldmVuIHdoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIHNldCkuICBUaGUgZnVuY3Rpb24gaXMgdGhyZWFkLXNwZWNpZmljLCBidXQKLSAgIHRoZXJlIGlzIG5vIHdheSBmb3IgdGhlIHByb2ZpbGVyIHRvIGtub3cgYWJvdXQgY29udGV4dCBzd2l0Y2hlcyBiZXR3ZWVuIHRocmVhZHMsCi0gICBzbyBpdCBkb2VzIG5vdCBtYWtlIHNlbnNlIHRvIHVzZSB0aGlzIGluIHRoZSBwcmVzZW5jZSBvZiBtdWx0aXBsZSB0aHJlYWRzLiBBbHNvLAorICAgc3lzdGVtJ3MgdHJhY2UgZnVuY3Rpb24gKHNlZSA6ZnVuYzpgc2V0dHJhY2VgKSwgYnV0IGl0IGlzIGNhbGxlZCB3aXRoIGRpZmZlcmVudCBldmVudHMsCisgICBmb3IgZXhhbXBsZSBpdCBpc24ndCBjYWxsZWQgZm9yIGVhY2ggZXhlY3V0ZWQgbGluZSBvZiBjb2RlIChvbmx5IG9uIGNhbGwgYW5kIHJldHVybiwKKyAgIGJ1dCB0aGUgcmV0dXJuIGV2ZW50IGlzIHJlcG9ydGVkIGV2ZW4gd2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gc2V0KS4gVGhlIGZ1bmN0aW9uIGlzCisgICB0aHJlYWQtc3BlY2lmaWMsIGJ1dCB0aGVyZSBpcyBubyB3YXkgZm9yIHRoZSBwcm9maWxlciB0byBrbm93IGFib3V0IGNvbnRleHQgc3dpdGNoZXMgYmV0d2VlbgorICAgdGhyZWFkcywgc28gaXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byB1c2UgdGhpcyBpbiB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlwbGUgdGhyZWFkcy4gQWxzbywKICAgIGl0cyByZXR1cm4gdmFsdWUgaXMgbm90IHVzZWQsIHNvIGl0IGNhbiBzaW1wbHkgcmV0dXJuIGBgTm9uZWBgLgogCisgICBQcm9maWxlIGZ1bmN0aW9ucyBzaG91bGQgaGF2ZSB0aHJlZSBhcmd1bWVudHM6ICpmcmFtZSosICpldmVudCosIGFuZAorICAgKmFyZyouICpmcmFtZSogaXMgdGhlIGN1cnJlbnQgc3RhY2sgZnJhbWUuICAqZXZlbnQqIGlzIGEgc3RyaW5nOiBgYCdjYWxsJ2BgLAorICAgYGAncmV0dXJuJ2BgLCBgYCdjX2NhbGwnYGAsIGBgJ2NfcmV0dXJuJ2BgLCBvciBgYCdjX2V4Y2VwdGlvbidgYC4gKmFyZyogZGVwZW5kcworICAgb24gdGhlIGV2ZW50IHR5cGUuCisKKyAgIFRoZSBldmVudHMgaGF2ZSB0aGUgZm9sbG93aW5nIG1lYW5pbmc6CisKKyAgIGBgJ2NhbGwnYGAKKyAgICAgIEEgZnVuY3Rpb24gaXMgY2FsbGVkIChvciBzb21lIG90aGVyIGNvZGUgYmxvY2sgZW50ZXJlZCkuICBUaGUKKyAgICAgIHByb2ZpbGUgZnVuY3Rpb24gaXMgY2FsbGVkOyAqYXJnKiBpcyBgYE5vbmVgYC4KKworICAgYGAncmV0dXJuJ2BgCisgICAgICBBIGZ1bmN0aW9uIChvciBvdGhlciBjb2RlIGJsb2NrKSBpcyBhYm91dCB0byByZXR1cm4uICBUaGUgcHJvZmlsZQorICAgICAgZnVuY3Rpb24gaXMgY2FsbGVkOyAqYXJnKiBpcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHJldHVybmVkLCBvciBgYE5vbmVgYAorICAgICAgaWYgdGhlIGV2ZW50IGlzIGNhdXNlZCBieSBhbiBleGNlcHRpb24gYmVpbmcgcmFpc2VkLgorCisgICBgYCdjX2NhbGwnYGAKKyAgICAgIEEgQyBmdW5jdGlvbiBpcyBhYm91dCB0byBiZSBjYWxsZWQuICBUaGlzIG1heSBiZSBhbiBleHRlbnNpb24gZnVuY3Rpb24gb3IKKyAgICAgIGEgYnVpbHQtaW4uICAqYXJnKiBpcyB0aGUgQyBmdW5jdGlvbiBvYmplY3QuCisKKyAgIGBgJ2NfcmV0dXJuJ2BgCisgICAgICBBIEMgZnVuY3Rpb24gaGFzIHJldHVybmVkLiAqYXJnKiBpcyB0aGUgQyBmdW5jdGlvbiBvYmplY3QuCisKKyAgIGBgJ2NfZXhjZXB0aW9uJ2BgCisgICAgICBBIEMgZnVuY3Rpb24gaGFzIHJhaXNlZCBhbiBleGNlcHRpb24uICAqYXJnKiBpcyB0aGUgQyBmdW5jdGlvbiBvYmplY3QuCiAKIC4uIGZ1bmN0aW9uOjogc2V0cmVjdXJzaW9ubGltaXQobGltaXQpCiAKQEAgLTg5MCw4ICs5MTUsOCBAQAogCiAgICBUcmFjZSBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgdGhyZWUgYXJndW1lbnRzOiAqZnJhbWUqLCAqZXZlbnQqLCBhbmQKICAgICphcmcqLiAqZnJhbWUqIGlzIHRoZSBjdXJyZW50IHN0YWNrIGZyYW1lLiAgKmV2ZW50KiBpcyBhIHN0cmluZzogYGAnY2FsbCdgYCwKLSAgIGBgJ2xpbmUnYGAsIGBgJ3JldHVybidgYCwgYGAnZXhjZXB0aW9uJ2BgLCBgYCdjX2NhbGwnYGAsIGBgJ2NfcmV0dXJuJ2BgLCBvcgotICAgYGAnY19leGNlcHRpb24nYGAuICphcmcqIGRlcGVuZHMgb24gdGhlIGV2ZW50IHR5cGUuCisgICBgYCdsaW5lJ2BgLCBgYCdyZXR1cm4nYGAgb3IgYGAnZXhjZXB0aW9uJ2BgLiAgKmFyZyogZGVwZW5kcyBvbgorICAgdGhlIGV2ZW50IHR5cGUuCiAKICAgIFRoZSB0cmFjZSBmdW5jdGlvbiBpcyBpbnZva2VkICh3aXRoICpldmVudCogc2V0IHRvIGBgJ2NhbGwnYGApIHdoZW5ldmVyIGEgbmV3CiAgICBsb2NhbCBzY29wZSBpcyBlbnRlcmVkOyBpdCBzaG91bGQgcmV0dXJuIGEgcmVmZXJlbmNlIHRvIGEgbG9jYWwgdHJhY2UKQEAgLTkyNiwxNiArOTUxLDYgQEAKICAgICAgIHR1cGxlIGBgKGV4Y2VwdGlvbiwgdmFsdWUsIHRyYWNlYmFjaylgYDsgdGhlIHJldHVybiB2YWx1ZSBzcGVjaWZpZXMgdGhlCiAgICAgICBuZXcgbG9jYWwgdHJhY2UgZnVuY3Rpb24uCiAKLSAgIGBgJ2NfY2FsbCdgYAotICAgICAgQSBDIGZ1bmN0aW9uIGlzIGFib3V0IHRvIGJlIGNhbGxlZC4gIFRoaXMgbWF5IGJlIGFuIGV4dGVuc2lvbiBmdW5jdGlvbiBvcgotICAgICAgYSBidWlsdC1pbi4gICphcmcqIGlzIHRoZSBDIGZ1bmN0aW9uIG9iamVjdC4KLQotICAgYGAnY19yZXR1cm4nYGAKLSAgICAgIEEgQyBmdW5jdGlvbiBoYXMgcmV0dXJuZWQuICphcmcqIGlzIHRoZSBDIGZ1bmN0aW9uIG9iamVjdC4KLQotICAgYGAnY19leGNlcHRpb24nYGAKLSAgICAgIEEgQyBmdW5jdGlvbiBoYXMgcmFpc2VkIGFuIGV4Y2VwdGlvbi4gICphcmcqIGlzIHRoZSBDIGZ1bmN0aW9uIG9iamVjdC4KLQogICAgTm90ZSB0aGF0IGFzIGFuIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIGRvd24gdGhlIGNoYWluIG9mIGNhbGxlcnMsIGFuCiAgICBgYCdleGNlcHRpb24nYGAgZXZlbnQgaXMgZ2VuZXJhdGVkIGF0IGVhY2ggbGV2ZWwuCiAKQEAgLTEwNzgsNCArMTA5MywzIEBACiAuLiBydWJyaWM6OiBDaXRhdGlvbnMKIAogLi4gW0M5OV0gSVNPL0lFQyA5ODk5OjE5OTkuICAiUHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzIC0tIEMuIiAgQSBwdWJsaWMgZHJhZnQgb2YgdGhpcyBzdGFuZGFyZCBpcyBhdmFpbGFibGUgYXQgaHR0cDovL3d3dy5vcGVuLXN0ZC5vcmcvanRjMS9zYzIyL3dnMTQvd3d3L2RvY3MvbjEyNTYucGRmXCAuCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QgYi9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0CmluZGV4IGU4ZmMwOWUuLjNiNTgyNjYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdApAQCAtODMsNyArODMsNyBAQAogLSAqbnQqOiBzY2hlbWUgZm9yIE5UIHBsYXRmb3JtcyBsaWtlIFdpbmRvd3MuCiAtICpudF91c2VyKjogc2NoZW1lIGZvciBOVCBwbGF0Zm9ybXMsIHdoZW4gdGhlICp1c2VyKiBvcHRpb24gaXMgdXNlZC4KIC0gKm9zMio6IHNjaGVtZSBmb3IgT1MvMiBwbGF0Zm9ybXMuCi0tICpvczJfaG9tZSo6IHNjaGVtZSBmb3IgT1MvMiBwYXRmb3Jtcywgd2hlbiB0aGUgKnVzZXIqIG9wdGlvbiBpcyB1c2VkLgorLSAqb3MyX2hvbWUqOiBzY2hlbWUgZm9yIE9TLzIgcGxhdGZvcm1zLCB3aGVuIHRoZSAqdXNlciogb3B0aW9uIGlzIHVzZWQuCiAKIEVhY2ggc2NoZW1lIGlzIGl0c2VsZiBjb21wb3NlZCBvZiBhIHNlcmllcyBvZiBwYXRocyBhbmQgZWFjaCBwYXRoIGhhcyBhIHVuaXF1ZQogaWRlbnRpZmllci4gIFB5dGhvbiBjdXJyZW50bHkgdXNlcyBlaWdodCBwYXRoczoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RhYm5hbm55LnJzdCBiL0RvYy9saWJyYXJ5L3RhYm5hbm55LnJzdAppbmRleCBmNDQ3ZjEyLi5mMjQxY2VmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90YWJuYW5ueS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGFibmFubnkucnN0CkBAIC00NywxNCArNDcsMTQgQEAKIAogLi4gZXhjZXB0aW9uOjogTmFubnlOYWcKIAotICAgUmFpc2VkIGJ5IDpmdW5jOmB0b2tlbmVhdGVyYCBpZiBkZXRlY3RpbmcgYW4gYW1iaWd1b3VzIGluZGVudC4gQ2FwdHVyZWQgYW5kCisgICBSYWlzZWQgYnkgOmZ1bmM6YHByb2Nlc3NfdG9rZW5zYCBpZiBkZXRlY3RpbmcgYW4gYW1iaWd1b3VzIGluZGVudC4gQ2FwdHVyZWQgYW5kCiAgICBoYW5kbGVkIGluIDpmdW5jOmBjaGVja2AuCiAKIAotLi4gZnVuY3Rpb246OiB0b2tlbmVhdGVyKHR5cGUsIHRva2VuLCBzdGFydCwgZW5kLCBsaW5lKQorLi4gZnVuY3Rpb246OiBwcm9jZXNzX3Rva2Vucyh0b2tlbnMpCiAKLSAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSA6ZnVuYzpgY2hlY2tgIGFzIGEgY2FsbGJhY2sgcGFyYW1ldGVyIHRvIHRoZSBmdW5jdGlvbgotICAgOmZ1bmM6YHRva2VuaXplLnRva2VuaXplYC4KKyAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSA6ZnVuYzpgY2hlY2tgIHRvIHByb2Nlc3MgdG9rZW5zIGdlbmVyYXRlZCBieSB0aGUKKyAgIDptb2Q6YHRva2VuaXplYCBtb2R1bGUuCiAKIC4uIFhYWCBkb2N1bWVudCBlcnJwcmludCwgZm9ybWF0X3dpdG5lc3NlcywgV2hpdGVzcGFjZSwgY2hlY2tfZXF1YWwsIGluZGVudHMsCiAgICByZXNldF9nbG9iYWxzCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IGJlNWE5ZTkuLmVlZjVkMTYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC0xNSw4ICsxNSw4IEBACiAKIAogVGhlIDptb2Q6YHRlc3RgIHBhY2thZ2UgY29udGFpbnMgYWxsIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIFB5dGhvbiBhcyB3ZWxsIGFzIHRoZQotbW9kdWxlcyA6bW9kOmB0ZXN0LnRlc3Rfc3VwcG9ydGAgYW5kIDptb2Q6YHRlc3QucmVncnRlc3RgLgotOm1vZDpgdGVzdC50ZXN0X3N1cHBvcnRgIGlzIHVzZWQgdG8gZW5oYW5jZSB5b3VyIHRlc3RzIHdoaWxlCittb2R1bGVzIDptb2Q6YHRlc3Quc3VwcG9ydGAgYW5kIDptb2Q6YHRlc3QucmVncnRlc3RgLgorOm1vZDpgdGVzdC5zdXBwb3J0YCBpcyB1c2VkIHRvIGVuaGFuY2UgeW91ciB0ZXN0cyB3aGlsZQogOm1vZDpgdGVzdC5yZWdydGVzdGAgZHJpdmVzIHRoZSB0ZXN0aW5nIHN1aXRlLgogCiBFYWNoIG1vZHVsZSBpbiB0aGUgOm1vZDpgdGVzdGAgcGFja2FnZSB3aG9zZSBuYW1lIHN0YXJ0cyB3aXRoIGBgdGVzdF9gYCBpcyBhCkBAIC01NCw3ICs1NCw3IEBACiBBIGJhc2ljIGJvaWxlcnBsYXRlIGlzIG9mdGVuIHVzZWQ6OgogCiAgICBpbXBvcnQgdW5pdHRlc3QKLSAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9zdXBwb3J0CisgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogICAgY2xhc3MgTXlUZXN0Q2FzZTEodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC04MiwxMCArODIsMTAgQEAKICAgIC4uLiBtb3JlIHRlc3QgY2xhc3NlcyAuLi4KIAogICAgZGVmIHRlc3RfbWFpbigpOgotICAgICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoTXlUZXN0Q2FzZTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNeVRlc3RDYXNlMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLiBsaXN0IG90aGVyIHRlc3RzIC4uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTXlUZXN0Q2FzZTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTXlUZXN0Q2FzZTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIGxpc3Qgb3RoZXIgdGVzdHMgLi4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogCiAgICBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgICAgIHRlc3RfbWFpbigpCkBAIC0xODUsMTkgKzE4NSwyNCBAQAogOnByb2dyYW06YHJ0LmJhdGAgZnJvbSB5b3VyIDpmaWxlOmBQQ0J1aWxkYCBkaXJlY3Rvcnkgd2lsbCBydW4gYWxsIHJlZ3Jlc3Npb24KIHRlc3RzLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNy4xNAorICAgVGhlIDptb2Q6YHRlc3RgIHBhY2thZ2UgY2FuIGJlIHJ1biBhcyBhIHNjcmlwdDogOnByb2dyYW06YHB5dGhvbiAtbSB0ZXN0YC4KKyAgIFRoaXMgd29ya3MgdGhlIHNhbWUgYXMgcnVubmluZyB0aGUgOm1vZDpgdGVzdC5yZWdydGVzdGAgbW9kdWxlLgogCi06bW9kOmB0ZXN0LnRlc3Rfc3VwcG9ydGAgLS0tIFV0aWxpdHkgZnVuY3Rpb25zIGZvciB0ZXN0cwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotLi4gbW9kdWxlOjogdGVzdC50ZXN0X3N1cHBvcnQKKzptb2Q6YHRlc3Quc3VwcG9ydGAgLS0tIFV0aWxpdHkgZnVuY3Rpb25zIGZvciB0ZXN0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKy4uIG1vZHVsZTo6IHRlc3Quc3VwcG9ydAogICAgOnN5bm9wc2lzOiBTdXBwb3J0IGZvciBQeXRob24gcmVncmVzc2lvbiB0ZXN0cy4KIAogLi4gbm90ZTo6CiAKICAgIFRoZSA6bW9kOmB0ZXN0LnRlc3Rfc3VwcG9ydGAgbW9kdWxlIGhhcyBiZWVuIHJlbmFtZWQgdG8gOm1vZDpgdGVzdC5zdXBwb3J0YAotICAgaW4gUHl0aG9uIDMueC4KKyAgIGluIFB5dGhvbiAzLnggYW5kIDIuNy4xNC4gIFRoZSBuYW1lIGBgdGVzdC50ZXN0X3N1cHBvcnRgYCBoYXMgYmVlbiByZXRhaW5lZAorICAgYXMgYW4gYWxpYXMgaW4gMi43LgogCi1UaGUgOm1vZDpgdGVzdC50ZXN0X3N1cHBvcnRgIG1vZHVsZSBwcm92aWRlcyBzdXBwb3J0IGZvciBQeXRob24ncyByZWdyZXNzaW9uCitUaGUgOm1vZDpgdGVzdC5zdXBwb3J0YCBtb2R1bGUgcHJvdmlkZXMgc3VwcG9ydCBmb3IgUHl0aG9uJ3MgcmVncmVzc2lvbgogdGVzdHMuCiAKIFRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBleGNlcHRpb25zOgpAQCAtMjE2LDcgKzIyMSw3IEBACiAgICBuZXR3b3JrIGNvbm5lY3Rpb24pIGlzIG5vdCBhdmFpbGFibGUuIFJhaXNlZCBieSB0aGUgOmZ1bmM6YHJlcXVpcmVzYAogICAgZnVuY3Rpb24uCiAKLVRoZSA6bW9kOmB0ZXN0LnRlc3Rfc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjb25zdGFudHM6CitUaGUgOm1vZDpgdGVzdC5zdXBwb3J0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNvbnN0YW50czoKIAogCiAuLiBkYXRhOjogdmVyYm9zZQpAQCAtMjQxLDcgKzI0Niw3IEBACiAgICBTZXQgdG8gYSBuYW1lIHRoYXQgaXMgc2FmZSB0byB1c2UgYXMgdGhlIG5hbWUgb2YgYSB0ZW1wb3JhcnkgZmlsZS4gIEFueQogICAgdGVtcG9yYXJ5IGZpbGUgdGhhdCBpcyBjcmVhdGVkIHNob3VsZCBiZSBjbG9zZWQgYW5kIHVubGlua2VkIChyZW1vdmVkKS4KIAotVGhlIDptb2Q6YHRlc3QudGVzdF9zdXBwb3J0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKK1RoZSA6bW9kOmB0ZXN0LnN1cHBvcnRgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAKIC4uIGZ1bmN0aW9uOjogZm9yZ2V0KG1vZHVsZV9uYW1lKQpAQCAtMjg0LDcgKzI4OSw3IEBACiAgICBmb2xsb3dpbmcgOmZ1bmM6YHRlc3RfbWFpbmAgZnVuY3Rpb246OgogCiAgICAgICBkZWYgdGVzdF9tYWluKCk6Ci0gICAgICAgICAgdGVzdF9zdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKKyAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChfX25hbWVfXykKIAogICAgVGhpcyB3aWxsIHJ1biBhbGwgdGVzdHMgZGVmaW5lZCBpbiB0aGUgbmFtZWQgbW9kdWxlLgogCkBAIC00MzMsNyArNDM4LDcgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDIuNwogCiAKLVRoZSA6bW9kOmB0ZXN0LnRlc3Rfc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgorVGhlIDptb2Q6YHRlc3Quc3VwcG9ydGAgbW9kdWxlIGRlZmluZXMgdGhlIGZvbGxvd2luZyBjbGFzc2VzOgogCiAuLiBjbGFzczo6IFRyYW5zaWVudFJlc291cmNlKGV4Y1ssICoqa3dhcmdzXSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZS5yc3QgYi9Eb2MvbGlicmFyeS90aW1lLnJzdAppbmRleCBiNGRlNjQzLi40OGEwMWRiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90aW1lLnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1lLnJzdApAQCAtMjM2LDcgKzIzNiw3IEBACiAgICBhcmd1bWVudC4gIElmICp0KiBpcyBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IHRpbWUgYXMgcmV0dXJuZWQgYnkKICAgIDpmdW5jOmBsb2NhbHRpbWVgIGlzIHVzZWQuICAqZm9ybWF0KiBtdXN0IGJlIGEgc3RyaW5nLiAgOmV4YzpgVmFsdWVFcnJvcmAgaXMKICAgIHJhaXNlZCBpZiBhbnkgZmllbGQgaW4gKnQqIGlzIG91dHNpZGUgb2YgdGhlIGFsbG93ZWQgcmFuZ2UuIDpmdW5jOmBzdHJmdGltZWAKLSAgIHJldHVybnMgYSBsb2NhbGUgZGVwZWRlbnQgYnl0ZSBzdHJpbmc7IHRoZSByZXN1bHQgbWF5IGJlIGNvbnZlcnRlZCB0byB1bmljb2RlCisgICByZXR1cm5zIGEgbG9jYWxlIGRlcGVuZGVudCBieXRlIHN0cmluZzsgdGhlIHJlc3VsdCBtYXkgYmUgY29udmVydGVkIHRvIHVuaWNvZGUKICAgIGJ5IGRvaW5nIGBgc3RyZnRpbWUoPG15Zm9ybWF0PikuZGVjb2RlKGxvY2FsZS5nZXRsb2NhbGUoKVsxXSlgYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjEKQEAgLTQ2NCw4ICs0NjQsMTMgQEAKIAogLi4gZnVuY3Rpb246OiB0enNldCgpCiAKLSAgIFJlc2V0cyB0aGUgdGltZSBjb252ZXJzaW9uIHJ1bGVzIHVzZWQgYnkgdGhlIGxpYnJhcnkgcm91dGluZXMuIFRoZSBlbnZpcm9ubWVudAotICAgdmFyaWFibGUgOmVudnZhcjpgVFpgIHNwZWNpZmllcyBob3cgdGhpcyBpcyBkb25lLgorICAgUmVzZXQgdGhlIHRpbWUgY29udmVyc2lvbiBydWxlcyB1c2VkIGJ5IHRoZSBsaWJyYXJ5IHJvdXRpbmVzLiBUaGUgZW52aXJvbm1lbnQKKyAgIHZhcmlhYmxlIDplbnZ2YXI6YFRaYCBzcGVjaWZpZXMgaG93IHRoaXMgaXMgZG9uZS4gSXQgd2lsbCBhbHNvIHNldCB0aGUgdmFyaWFibGVzCisgICBgYHR6bmFtZWBgIChmcm9tIHRoZSA6ZW52dmFyOmBUWmAgZW52aXJvbm1lbnQgdmFyaWFibGUpLCBgYHRpbWV6b25lYGAgKG5vbi1EU1QKKyAgIHNlY29uZHMgV2VzdCBvZiBVVEMpLCBgYGFsdHpvbmVgYCAoRFNUIHNlY29uZHMgd2VzdCBvZiBVVEMpIGFuZCBgYGRheWxpZ2h0YGAKKyAgICh0byAwIGlmIHRoaXMgdGltZXpvbmUgZG9lcyBub3QgaGF2ZSBhbnkgZGF5bGlnaHQgc2F2aW5nIHRpbWUgcnVsZXMsIG9yIHRvCisgICBub256ZXJvIGlmIHRoZXJlIGlzIGEgdGltZSwgcGFzdCwgcHJlc2VudCBvciBmdXR1cmUgd2hlbiBkYXlsaWdodCBzYXZpbmcgdGltZQorICAgYXBwbGllcykuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDIuMwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90a2ludGVyLnJzdCBiL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0CmluZGV4IGFiMWRhNTIuLjMzNTZlNGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RraW50ZXIucnN0CkBAIC0xMSw2ICsxMSwxMSBAQAogcGxhdGZvcm1zLCBhcyB3ZWxsIGFzIG9uIFdpbmRvd3Mgc3lzdGVtcy4gIChUayBpdHNlbGYgaXMgbm90IHBhcnQgb2YgUHl0aG9uOyBpdAogaXMgbWFpbnRhaW5lZCBhdCBBY3RpdmVTdGF0ZS4pCiAKK1J1bm5pbmcgYGBweXRob24gLW0gVGtpbnRlcmBgIGZyb20gdGhlIGNvbW1hbmQgbGluZSBzaG91bGQgb3BlbiBhIHdpbmRvdworZGVtb25zdHJhdGluZyBhIHNpbXBsZSBUayBpbnRlcmZhY2UsIGxldHRpbmcgeW91IGtub3cgdGhhdCA6bW9kOmBUa2ludGVyYCBpcworcHJvcGVybHkgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtLCBhbmQgYWxzbyBzaG93aW5nIHdoYXQgdmVyc2lvbiBvZiBUY2wvVGsgaXMKK2luc3RhbGxlZCwgc28geW91IGNhbiByZWFkIHRoZSBUY2wvVGsgZG9jdW1lbnRhdGlvbiBzcGVjaWZpYyB0byB0aGF0IHZlcnNpb24uCisKIC4uIG5vdGU6OgogCiAgICA6bW9kOmBUa2ludGVyYCBoYXMgYmVlbiByZW5hbWVkIHRvIDptb2Q6YHRraW50ZXJgIGluIFB5dGhvbiAzLiAgVGhlCkBAIC0xOSw2ICsyNCw4IEBACiAKIC4uIHNlZWFsc286OgogCisgICBUa2ludGVyIGRvY3VtZW50YXRpb246CisKICAgIGBQeXRob24gVGtpbnRlciBSZXNvdXJjZXMgPGh0dHBzOi8vd2lraS5weXRob24ub3JnL21vaW4vVGtJbnRlcj5gXwogICAgICAgVGhlIFB5dGhvbiBUa2ludGVyIFRvcGljIEd1aWRlIHByb3ZpZGVzIGEgZ3JlYXQgZGVhbCBvZiBpbmZvcm1hdGlvbiBvbiB1c2luZyBUawogICAgICAgZnJvbSBQeXRob24gYW5kIGxpbmtzIHRvIG90aGVyIHNvdXJjZXMgb2YgaW5mb3JtYXRpb24gb24gVGsuCkBAIC0zMiwxNyArMzksMzIgQEAKICAgIGBUa2ludGVyIGRvY3MgZnJvbSBlZmZib3QgPGh0dHA6Ly9lZmZib3Qub3JnL3RraW50ZXJib29rLz5gXwogICAgICAgT25saW5lIHJlZmVyZW5jZSBmb3IgdGtpbnRlciBzdXBwb3J0ZWQgYnkgZWZmYm90Lm9yZy4KIAotICAgYFRjbC9UayBtYW51YWwgPGh0dHBzOi8vd3d3LnRjbC50ay9tYW4vdGNsOC41Lz5gXwotICAgICAgT2ZmaWNpYWwgbWFudWFsIGZvciB0aGUgbGF0ZXN0IHRjbC90ayB2ZXJzaW9uLgotCi0gICBgUHJvZ3JhbW1pbmcgUHl0aG9uIDxodHRwOi8vbGVhcm5pbmctcHl0aG9uLmNvbS9ib29rcy9hYm91dC1wcDRlLmh0bWw+YF8KKyAgIGBQcm9ncmFtbWluZyBQeXRob24gPGh0dHA6Ly9sZWFybmluZy1weXRob24uY29tL2Fib3V0LXBwNGUuaHRtbD5gXwogICAgICAgQm9vayBieSBNYXJrIEx1dHosIGhhcyBleGNlbGxlbnQgY292ZXJhZ2Ugb2YgVGtpbnRlci4KIAotICAgYE1vZGVybiBUa2ludGVyIGZvciBCdXN5IFB5dGhvbiBEZXZlbG9wZXJzIDxodHRwOi8vd3d3LmFtYXpvbi5jb20vTW9kZXJuLVRraW50ZXItUHl0aG9uLURldmVsb3BlcnMtZWJvb2svZHAvQjAwNzFRRE5MTy8+YF8KKyAgIGBNb2Rlcm4gVGtpbnRlciBmb3IgQnVzeSBQeXRob24gRGV2ZWxvcGVycyA8aHR0cHM6Ly93d3cuYW1hem9uLmNvbS9Nb2Rlcm4tVGtpbnRlci1QeXRob24tRGV2ZWxvcGVycy1lYm9vay9kcC9CMDA3MVFETkxPLz5gXwogICAgICAgQm9vayBieSBNYXJrIFJvemVybWFuIGFib3V0IGJ1aWxkaW5nIGF0dHJhY3RpdmUgYW5kIG1vZGVybiBncmFwaGljYWwgdXNlciBpbnRlcmZhY2VzIHdpdGggUHl0aG9uIGFuZCBUa2ludGVyLgogCiAgICBgUHl0aG9uIGFuZCBUa2ludGVyIFByb2dyYW1taW5nIDxodHRwczovL3d3dy5tYW5uaW5nLmNvbS9ib29rcy9weXRob24tYW5kLXRraW50ZXItcHJvZ3JhbW1pbmc+YF8KLSAgICAgIFRoZSBib29rIGJ5IEpvaG4gR3JheXNvbiAoSVNCTiAxLTg4NDc3Ny04MS0zKS4KKyAgICAgIEJvb2sgYnkgSm9obiBHcmF5c29uIChJU0JOIDEtODg0Nzc3LTgxLTMpLgorCisgICBUY2wvVGsgZG9jdW1lbnRhdGlvbjoKKworICAgYFRrIGNvbW1hbmRzIDxodHRwczovL3d3dy50Y2wudGsvbWFuL3RjbDguNi9Ua0NtZC9jb250ZW50cy5odG0+YF8KKyAgICAgIE1vc3QgY29tbWFuZHMgYXJlIGF2YWlsYWJsZSBhcyA6bW9kOmBUa2ludGVyYCBvciA6bW9kOmBUa2ludGVyLnR0a2AgY2xhc3Nlcy4KKyAgICAgIENoYW5nZSAnOC42JyB0byBtYXRjaCB0aGUgdmVyc2lvbiBvZiB5b3VyIFRjbC9UayBpbnN0YWxsYXRpb24uCisKKyAgIGBUY2wvVGsgcmVjZW50IG1hbiBwYWdlcyA8aHR0cHM6Ly93d3cudGNsLnRrL2RvYy8+YF8KKyAgICAgIFJlY2VudCBUY2wvVGsgbWFudWFscyBvbiB3d3cudGNsLnRrLgorCisgICBgQWN0aXZlU3RhdGUgVGNsIEhvbWUgUGFnZSA8aHR0cDovL3RjbC5hY3RpdmVzdGF0ZS5jb20vPmBfCisgICAgICBUaGUgVGsvVGNsIGRldmVsb3BtZW50IGlzIGxhcmdlbHkgdGFraW5nIHBsYWNlIGF0IEFjdGl2ZVN0YXRlLgorCisgICBgVGNsIGFuZCB0aGUgVGsgVG9vbGtpdCA8aHR0cHM6Ly93d3cuYW1hem9uLmNvbS9leGVjL29iaWRvcy9BU0lOLzAyMDE2MzMzN1g+YF8KKyAgICAgIEJvb2sgYnkgSm9obiBPdXN0ZXJob3V0LCB0aGUgaW52ZW50b3Igb2YgVGNsLgorCisgICBgUHJhY3RpY2FsIFByb2dyYW1taW5nIGluIFRjbCBhbmQgVGsgPGh0dHA6Ly93d3cuYmVlZHViLmNvbS9ib29rLz5gXworICAgICAgQnJlbnQgV2VsY2gncyBlbmN5Y2xvcGVkaWMgYm9vay4KIAogCiBUa2ludGVyIE1vZHVsZXMKQEAgLTE2MSw3ICsxODMsNyBAQAogaGFuZHkgcmVmZXJlbmNlLgogCiBXaGVuIHRyeWluZyB0byBhbnN3ZXIgcXVlc3Rpb25zIG9mIHRoZSBmb3JtICJob3cgZG8gSSBkbyBibGFoIiwgaXQgaXMgb2Z0ZW4gYmVzdAotdG8gZmluZCBvdXQgaG93IHRvIGRvImJsYWgiIGluIHN0cmFpZ2h0IFRrLCBhbmQgdGhlbiBjb252ZXJ0IHRoaXMgYmFjayBpbnRvIHRoZQordG8gZmluZCBvdXQgaG93IHRvIGRvICJibGFoIiBpbiBzdHJhaWdodCBUaywgYW5kIHRoZW4gY29udmVydCB0aGlzIGJhY2sgaW50byB0aGUKIGNvcnJlc3BvbmRpbmcgOm1vZDpgVGtpbnRlcmAgY2FsbC4gUHl0aG9uIHByb2dyYW1tZXJzIGNhbiBvZnRlbiBndWVzcyBhdCB0aGUKIGNvcnJlY3QgUHl0aG9uIGNvbW1hbmQgYnkgbG9va2luZyBhdCB0aGUgVGsgZG9jdW1lbnRhdGlvbi4gVGhpcyBtZWFucyB0aGF0IGluCiBvcmRlciB0byB1c2UgVGtpbnRlciwgeW91IHdpbGwgaGF2ZSB0byBrbm93IGEgbGl0dGxlIGJpdCBhYm91dCBUay4gVGhpcyBkb2N1bWVudApAQCAtMTgyLDE4ICsyMDQsNiBAQAogICB3aGVuIG5vdGhpbmcgZWxzZSBtYWtlcyBzZW5zZS4KIAogCi0uLiBzZWVhbHNvOjoKLQotICAgYEFjdGl2ZVN0YXRlIFRjbCBIb21lIFBhZ2UgPGh0dHA6Ly90Y2wuYWN0aXZlc3RhdGUuY29tLz5gXwotICAgICAgVGhlIFRrL1RjbCBkZXZlbG9wbWVudCBpcyBsYXJnZWx5IHRha2luZyBwbGFjZSBhdCBBY3RpdmVTdGF0ZS4KLQotICAgYFRjbCBhbmQgdGhlIFRrIFRvb2xraXQgPGh0dHA6Ly93d3cuYW1hem9uLmNvbS9leGVjL29iaWRvcy9BU0lOLzAyMDE2MzMzN1g+YF8KLSAgICAgIFRoZSBib29rIGJ5IEpvaG4gT3VzdGVyaG91dCwgdGhlIGludmVudG9yIG9mIFRjbC4KLQotICAgYFByYWN0aWNhbCBQcm9ncmFtbWluZyBpbiBUY2wgYW5kIFRrIDxodHRwOi8vd3d3LmJlZWR1Yi5jb20vYm9vay8+YF8KLSAgICAgIEJyZW50IFdlbGNoJ3MgZW5jeWNsb3BlZGljIGJvb2suCi0KLQogQSBTaW1wbGUgSGVsbG8gV29ybGQgUHJvZ3JhbQogXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCkBAIC04MDEsMTIgKzgxMSwxMyBAQAogSW1hZ2VzCiBeXl5eXl4KIAotQml0bWFwL1BpeGVsbWFwIGltYWdlcyBjYW4gYmUgY3JlYXRlZCB0aHJvdWdoIHRoZSBzdWJjbGFzc2VzIG9mCi06Y2xhc3M6YFRraW50ZXIuSW1hZ2VgOgorSW1hZ2VzIG9mIGRpZmZlcmVudCBmb3JtYXRzIGNhbiBiZSBjcmVhdGVkIHRocm91Z2ggdGhlIGNvcnJlc3BvbmRpbmcgc3ViY2xhc3MKK29mIDpjbGFzczpgVGtpbnRlci5JbWFnZWA6CiAKLSogOmNsYXNzOmBCaXRtYXBJbWFnZWAgY2FuIGJlIHVzZWQgZm9yIFgxMSBiaXRtYXAgZGF0YS4KKyogOmNsYXNzOmBCaXRtYXBJbWFnZWAgZm9yIGltYWdlcyBpbiBYQk0gZm9ybWF0LgogCi0qIDpjbGFzczpgUGhvdG9JbWFnZWAgY2FuIGJlIHVzZWQgZm9yIEdJRiBhbmQgUFBNL1BHTSBjb2xvciBiaXRtYXBzLgorKiA6Y2xhc3M6YFBob3RvSW1hZ2VgIGZvciBpbWFnZXMgaW4gUEdNLCBQUE0sIEdJRiBhbmQgUE5HIGZvcm1hdHMuIFRoZSBsYXR0ZXIKKyAgaXMgc3VwcG9ydGVkIHN0YXJ0aW5nIHdpdGggVGsgOC42LgogCiBFaXRoZXIgdHlwZSBvZiBpbWFnZSBpcyBjcmVhdGVkIHRocm91Z2ggZWl0aGVyIHRoZSBgYGZpbGVgYCBvciB0aGUgYGBkYXRhYGAKIG9wdGlvbiAob3RoZXIgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIGFzIHdlbGwpLgpAQCAtODE3LDYgKzgyOCwxMCBAQAogZGVsZXRlZCwgdGhlIGltYWdlIGRhdGEgaXMgZGVsZXRlZCBhcyB3ZWxsLCBhbmQgVGsgd2lsbCBkaXNwbGF5IGFuIGVtcHR5IGJveAogd2hlcmV2ZXIgdGhlIGltYWdlIHdhcyB1c2VkLgogCisuLiBzZWVhbHNvOjoKKworICAgIFRoZSBgUGlsbG93IDxodHRwOi8vcHl0aG9uLXBpbGxvdy5vcmcvPmBfIHBhY2thZ2UgYWRkcyBzdXBwb3J0IGZvcgorICAgIGZvcm1hdHMgc3VjaCBhcyBCTVAsIEpQRUcsIFRJRkYsIGFuZCBXZWJQLCBhbW9uZyBvdGhlcnMuCiAKIC4uIF90a2ludGVyLWZpbGUtaGFuZGxlcnM6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CmluZGV4IDdjNzgyMzUuLjVlNjExNDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdApAQCAtNjcsNyArNjcsNyBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIHByaW50cyBhIHN0YWNrIHRyYWNlIGZyb20gaXRzIGludm9jYXRpb24gcG9pbnQuIFRoZSBvcHRpb25hbAogICAgKmYqIGFyZ3VtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgYW4gYWx0ZXJuYXRlIHN0YWNrIGZyYW1lIHRvIHN0YXJ0LiBUaGUKLSAgIG9wdGlvbmFsIGxpbWl0KiBhbmQgKmZpbGUqIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYXMgZm9yCisgICBvcHRpb25hbCAqbGltaXQqIGFuZCAqZmlsZSogYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IKICAgIDpmdW5jOmBwcmludF9leGNlcHRpb25gLgogCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R1cnRsZS5yc3QgYi9Eb2MvbGlicmFyeS90dXJ0bGUucnN0CmluZGV4IGNhNGYzN2UuLjFjOGE5NjcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3R1cnRsZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHVydGxlLnJzdApAQCAtMjIxOSw3ICsyMjE5LDcgQEAKIHwgd2lraXBlZGlhICAgICAgfCBhIHBhdHRlcm4gZnJvbSB0aGUgd2lraXBlZGlhIHwgOmZ1bmM6YGNsb25lYCwgICAgICAgIHwKIHwgICAgICAgICAgICAgICAgfCBhcnRpY2xlIG9uIHR1cnRsZSBncmFwaGljcyAgIHwgOmZ1bmM6YHVuZG9gICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgeWluZ3lhbmcgICAgICAgfCBhbm90aGVyIGVsZW1lbnRhcnkgZXhhbXBsZSAgIHwgOmZ1bmM6YGNpcmNsZWAgICAgICAgIHwKK3wgeWlueWFuZyAgICAgICAgfCBhbm90aGVyIGVsZW1lbnRhcnkgZXhhbXBsZSAgIHwgOmZ1bmM6YGNpcmNsZWAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogSGF2ZSBmdW4hCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKaW5kZXggYTNhN2M5Ni4uZDdjNDhjNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdApAQCAtMTYxLDcgKzE2MSw3IEBACiAgICA5CiAgICA+Pj4gdW5pY29kZWRhdGEuZGVjaW1hbCh1J2EnKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICBWYWx1ZUVycm9yOiBub3QgYSBkZWNpbWFsCiAgICA+Pj4gdW5pY29kZWRhdGEuY2F0ZWdvcnkodSdBJykgICMgJ0wnZXR0ZXIsICd1J3BwZXJjYXNlCiAgICAnTHUnCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKaW5kZXggYjBlYWFlNi4uMDYzNjhmYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdApAQCAtNzgsNyArNzgsNyBAQAogICAgTW9kdWxlIDptb2Q6YGRvY3Rlc3RgCiAgICAgICBBbm90aGVyIHRlc3Qtc3VwcG9ydCBtb2R1bGUgd2l0aCBhIHZlcnkgZGlmZmVyZW50IGZsYXZvci4KIAotICAgYHVuaXR0ZXN0MjogQSBiYWNrcG9ydCBvZiBuZXcgdW5pdHRlc3QgZmVhdHVyZXMgZm9yIFB5dGhvbiAyLjQtMi42IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3VuaXR0ZXN0Mj5gXworICAgYHVuaXR0ZXN0MjogQSBiYWNrcG9ydCBvZiBuZXcgdW5pdHRlc3QgZmVhdHVyZXMgZm9yIFB5dGhvbiAyLjQtMi42IDxodHRwczovL3B5cGkub3JnL3Byb2plY3QvdW5pdHRlc3QyPmBfCiAgICAgICBNYW55IG5ldyBmZWF0dXJlcyB3ZXJlIGFkZGVkIHRvIHVuaXR0ZXN0IGluIFB5dGhvbiAyLjcsIGluY2x1ZGluZyB0ZXN0CiAgICAgICBkaXNjb3ZlcnkuIHVuaXR0ZXN0MiBhbGxvd3MgeW91IHRvIHVzZSB0aGVzZSBmZWF0dXJlcyB3aXRoIGVhcmxpZXIKICAgICAgIHZlcnNpb25zIG9mIFB5dGhvbi4KQEAgLTczMCw3ICs3MzAsNyBAQAogCiAgICAuLiBtZXRob2Q6OiBzZXRVcENsYXNzKCkKIAotICAgICAgQSBjbGFzcyBtZXRob2QgY2FsbGVkIGJlZm9yZSB0ZXN0cyBpbiBhbiBpbmRpdmlkdWFsIGNsYXNzIHJ1bi4KKyAgICAgIEEgY2xhc3MgbWV0aG9kIGNhbGxlZCBiZWZvcmUgdGVzdHMgaW4gYW4gaW5kaXZpZHVhbCBjbGFzcyBhcmUgcnVuLgogICAgICAgYGBzZXRVcENsYXNzYGAgaXMgY2FsbGVkIHdpdGggdGhlIGNsYXNzIGFzIHRoZSBvbmx5IGFyZ3VtZW50CiAgICAgICBhbmQgbXVzdCBiZSBkZWNvcmF0ZWQgYXMgYSA6ZnVuYzpgY2xhc3NtZXRob2RgOjoKIApAQCAtMTEzOCw3ICsxMTM4LDcgQEAKICAgICAgIFRlc3QgdGhhdCB0aGUgbXVsdGlsaW5lIHN0cmluZyAqZmlyc3QqIGlzIGVxdWFsIHRvIHRoZSBzdHJpbmcgKnNlY29uZCouCiAgICAgICBXaGVuIG5vdCBlcXVhbCBhIGRpZmYgb2YgdGhlIHR3byBzdHJpbmdzIGhpZ2hsaWdodGluZyB0aGUgZGlmZmVyZW5jZXMKICAgICAgIHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2UuIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgZGVmYXVsdAotICAgICAgd2hlbiBjb21wYXJpbmcgc3RyaW5ncyB3aXRoIDptZXRoOmBhc3NlcnRFcXVhbGAuCisgICAgICB3aGVuIGNvbXBhcmluZyBVbmljb2RlIHN0cmluZ3Mgd2l0aCA6bWV0aDpgYXNzZXJ0RXF1YWxgLgogCiAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjcKIApAQCAtMTM1Miw3ICsxMzUyLDcgQEAKIAogLi4gY2xhc3M6OiBUZXN0U3VpdGUodGVzdHM9KCkpCiAKLSAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbiBhZ2dyZWdhdGlvbiBvZiBpbmRpdmlkdWFsIHRlc3RzIGNhc2VzIGFuZCB0ZXN0IHN1aXRlcy4KKyAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhbiBhZ2dyZWdhdGlvbiBvZiBpbmRpdmlkdWFsIHRlc3QgY2FzZXMgYW5kIHRlc3Qgc3VpdGVzLgogICAgVGhlIGNsYXNzIHByZXNlbnRzIHRoZSBpbnRlcmZhY2UgbmVlZGVkIGJ5IHRoZSB0ZXN0IHJ1bm5lciB0byBhbGxvdyBpdCB0byBiZSBydW4KICAgIGFzIGFueSBvdGhlciB0ZXN0IGNhc2UuICBSdW5uaW5nIGEgOmNsYXNzOmBUZXN0U3VpdGVgIGluc3RhbmNlIGlzIHRoZSBzYW1lIGFzCiAgICBpdGVyYXRpbmcgb3ZlciB0aGUgc3VpdGUsIHJ1bm5pbmcgZWFjaCB0ZXN0IGluZGl2aWR1YWxseS4KQEAgLTE0MzcsMTMgKzE0MzcsMTMgQEAKIAogICAgLi4gbWV0aG9kOjogbG9hZFRlc3RzRnJvbVRlc3RDYXNlKHRlc3RDYXNlQ2xhc3MpCiAKLSAgICAgIFJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gdGhlIDpjbGFzczpgVGVzdENhc2VgXCAtZGVyaXZlZAorICAgICAgUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3QgY2FzZXMgY29udGFpbmVkIGluIHRoZSA6Y2xhc3M6YFRlc3RDYXNlYFwgLWRlcml2ZWQKICAgICAgIDpjbGFzczpgdGVzdENhc2VDbGFzc2AuCiAKIAogICAgLi4gbWV0aG9kOjogbG9hZFRlc3RzRnJvbU1vZHVsZShtb2R1bGUpCiAKLSAgICAgIFJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gdGhlIGdpdmVuIG1vZHVsZS4gVGhpcworICAgICAgUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3QgY2FzZXMgY29udGFpbmVkIGluIHRoZSBnaXZlbiBtb2R1bGUuIFRoaXMKICAgICAgIG1ldGhvZCBzZWFyY2hlcyAqbW9kdWxlKiBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb20gOmNsYXNzOmBUZXN0Q2FzZWAgYW5kCiAgICAgICBjcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyBmb3IgZWFjaCB0ZXN0IG1ldGhvZCBkZWZpbmVkIGZvciB0aGUKICAgICAgIGNsYXNzLgpAQCAtMTQ2Niw3ICsxNDY2LDcgQEAKIAogICAgLi4gbWV0aG9kOjogbG9hZFRlc3RzRnJvbU5hbWUobmFtZSwgbW9kdWxlPU5vbmUpCiAKLSAgICAgIFJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBnaXZlbiBhIHN0cmluZyBzcGVjaWZpZXIuCisgICAgICBSZXR1cm4gYSBzdWl0ZSBvZiBhbGwgdGVzdCBjYXNlcyBnaXZlbiBhIHN0cmluZyBzcGVjaWZpZXIuCiAKICAgICAgIFRoZSBzcGVjaWZpZXIgKm5hbWUqIGlzIGEgImRvdHRlZCBuYW1lIiB0aGF0IG1heSByZXNvbHZlIGVpdGhlciB0byBhCiAgICAgICBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhIHRlc3QgbWV0aG9kIHdpdGhpbiBhIHRlc3QgY2FzZSBjbGFzcywgYQpAQCAtMjAzOCw3ICsyMDM4LDcgQEAKIAogICAgV2hlbiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMgdGhpcyBmdW5jdGlvbiByZW1vdmVzIHRoZSBjb250cm9sLWMgaGFuZGxlcgogICAgaWYgaXQgaGFzIGJlZW4gaW5zdGFsbGVkLiBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIGJlIHVzZWQgYXMgYSB0ZXN0IGRlY29yYXRvcgotICAgdG8gdGVtcG9yYXJpbHkgcmVtb3ZlIHRoZSBoYW5kbGVyIHdoaWxzdCB0aGUgdGVzdCBpcyBiZWluZyBleGVjdXRlZDo6CisgICB0byB0ZW1wb3JhcmlseSByZW1vdmUgdGhlIGhhbmRsZXIgd2hpbGUgdGhlIHRlc3QgaXMgYmVpbmcgZXhlY3V0ZWQ6OgogCiAgICAgICBAdW5pdHRlc3QucmVtb3ZlSGFuZGxlcgogICAgICAgZGVmIHRlc3Rfc2lnbmFsX2hhbmRsaW5nKHNlbGYpOgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yc3QKaW5kZXggNjllZjhmNy4uYzI0ZjQzNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucnN0CkBAIC0yNiwxMSArMjYsMTYgQEAKIAogLi4gc2VlYWxzbzo6CiAKLSAgICBUaGUgYFJlcXVlc3RzIHBhY2thZ2UgPGh0dHA6Ly9yZXF1ZXN0cy5yZWFkdGhlZG9jcy5vcmcvPmBfCisgICAgVGhlIGBSZXF1ZXN0cyBwYWNrYWdlIDxodHRwOi8vZG9jcy5weXRob24tcmVxdWVzdHMub3JnLz5gXwogICAgIGlzIHJlY29tbWVuZGVkIGZvciBhIGhpZ2hlci1sZXZlbCBIVFRQIGNsaWVudCBpbnRlcmZhY2UuCiAKLS4uIHdhcm5pbmc6OiBXaGVuIG9wZW5pbmcgSFRUUFMgVVJMcywgaXQgZG9lcyBub3QgYXR0ZW1wdCB0byB2YWxpZGF0ZSB0aGUKLSAgIHNlcnZlciBjZXJ0aWZpY2F0ZS4gIFVzZSBhdCB5b3VyIG93biByaXNrIQorLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjcuOQorCisgICAgRm9yIEhUVFBTIFVSSXMsIDptb2Q6YHVybGxpYmAgcGVyZm9ybXMgYWxsIHRoZSBuZWNjZXNzYXJ5IGNlcnRpZmljYXRlIGFuZCBob3N0bmFtZSBjaGVja3MgYnkgZGVmYXVsdC4KKworLi4gd2FybmluZzo6CisKKyAgICBGb3IgUHl0aG9uIHZlcnNpb25zIGVhcmxpZXIgdGhhbiAyLjcuOSwgdXJsbGliIGRvZXMgbm90IGF0dGVtcHQgdG8gdmFsaWRhdGUgdGhlIHNlcnZlciBjZXJ0aWZpY2F0ZXMgb2YgSFRUUFMgVVJJcy4gVXNlIGF0IHlvdXIgb3duIHJpc2shCiAKIAogSGlnaC1sZXZlbCBpbnRlcmZhY2UKQEAgLTE0Miw3ICsxNDcsNyBAQAogICAgICAgOmVudnZhcjpgbm9fcHJveHlgIGVudmlyb25tZW50IHZhcmlhYmxlLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNy45Ci0gICAgICBUaGUgKmNvbnRleHQqIHBhcmFtZXRlciB3YXMgYWRkZWQuCisgICAgICBUaGUgKmNvbnRleHQqIHBhcmFtZXRlciB3YXMgYWRkZWQuIEFsbCB0aGUgbmVjY2Vzc2FyeSBjZXJ0aWZpY2F0ZSBhbmQgaG9zdG5hbWUgY2hlY2tzIGFyZSBkb25lIGJ5IGRlZmF1bHQuCiAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAyLjYKICAgICAgIFRoZSA6ZnVuYzpgdXJsb3BlbmAgZnVuY3Rpb24gaGFzIGJlZW4gcmVtb3ZlZCBpbiBQeXRob24gMyBpbiBmYXZvcgpAQCAtMTYxLDkgKzE2Niw5IEBACiAKICAgIFRoZSBzZWNvbmQgYXJndW1lbnQsIGlmIHByZXNlbnQsIHNwZWNpZmllcyB0aGUgZmlsZSBsb2NhdGlvbiB0byBjb3B5IHRvIChpZgogICAgYWJzZW50LCB0aGUgbG9jYXRpb24gd2lsbCBiZSBhIHRlbXBmaWxlIHdpdGggYSBnZW5lcmF0ZWQgbmFtZSkuIFRoZSB0aGlyZAotICAgYXJndW1lbnQsIGlmIHByZXNlbnQsIGlzIGEgaG9vayBmdW5jdGlvbiB0aGF0IHdpbGwgYmUgY2FsbGVkIG9uY2Ugb24KKyAgIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBpcyBhIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSBjYWxsZWQgb25jZSBvbgogICAgZXN0YWJsaXNobWVudCBvZiB0aGUgbmV0d29yayBjb25uZWN0aW9uIGFuZCBvbmNlIGFmdGVyIGVhY2ggYmxvY2sgcmVhZAotICAgdGhlcmVhZnRlci4gIFRoZSBob29rIHdpbGwgYmUgcGFzc2VkIHRocmVlIGFyZ3VtZW50czsgYSBjb3VudCBvZiBibG9ja3MKKyAgIHRoZXJlYWZ0ZXIuICBUaGUgY2FsbGFibGUgd2lsbCBiZSBwYXNzZWQgdGhyZWUgYXJndW1lbnRzOyBhIGNvdW50IG9mIGJsb2NrcwogICAgdHJhbnNmZXJyZWQgc28gZmFyLCBhIGJsb2NrIHNpemUgaW4gYnl0ZXMsIGFuZCB0aGUgdG90YWwgc2l6ZSBvZiB0aGUgZmlsZS4gIFRoZQogICAgdGhpcmQgYXJndW1lbnQgbWF5IGJlIGBgLTFgYCBvbiBvbGRlciBGVFAgc2VydmVycyB3aGljaCBkbyBub3QgcmV0dXJuIGEgZmlsZQogICAgc2l6ZSBpbiByZXNwb25zZSB0byBhIHJldHJpZXZhbCByZXF1ZXN0LgpAQCAtMjk1LDE1ICszMDAsMTUgQEAKICAgIElmIGJvdGggbG93ZXJjYXNlIGFuZCB1cHBlcmNhc2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGV4aXN0IChhbmQgZGlzYWdyZWUpLAogICAgbG93ZXJjYXNlIGlzIHByZWZlcnJlZC4KIAotICAgIC4uIG5vdGU6OgorICAgLi4gbm90ZTo6CiAKLSAgICAgICAgSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBgUkVRVUVTVF9NRVRIT0RgYCBpcyBzZXQsIHdoaWNoIHVzdWFsbHkKLSAgICAgICAgaW5kaWNhdGVzIHlvdXIgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gYSBDR0kgZW52aXJvbm1lbnQsIHRoZSBlbnZpcm9ubWVudAotICAgICAgICB2YXJpYWJsZSBgYEhUVFBfUFJPWFlgYCAodXBwZXJjYXNlIGBgX1BST1hZYGApIHdpbGwgYmUgaWdub3JlZC4gVGhpcyBpcwotICAgICAgICBiZWNhdXNlIHRoYXQgdmFyaWFibGUgY2FuIGJlIGluamVjdGVkIGJ5IGEgY2xpZW50IHVzaW5nIHRoZSAiUHJveHk6IgotICAgICAgICBIVFRQIGhlYWRlci4gSWYgeW91IG5lZWQgdG8gdXNlIGFuIEhUVFAgcHJveHkgaW4gYSBDR0kgZW52aXJvbm1lbnQsCi0gICAgICAgIGVpdGhlciB1c2UgYGBQcm94eUhhbmRsZXJgYCBleHBsaWNpdGx5LCBvciBtYWtlIHN1cmUgdGhlIHZhcmlhYmxlIG5hbWUKLSAgICAgICAgaXMgaW4gbG93ZXJjYXNlIChvciBhdCBsZWFzdCB0aGUgYGBfcHJveHlgYCBzdWZmaXgpLgorICAgICAgSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIGBgUkVRVUVTVF9NRVRIT0RgYCBpcyBzZXQsIHdoaWNoIHVzdWFsbHkKKyAgICAgIGluZGljYXRlcyB5b3VyIHNjcmlwdCBpcyBydW5uaW5nIGluIGEgQ0dJIGVudmlyb25tZW50LCB0aGUgZW52aXJvbm1lbnQKKyAgICAgIHZhcmlhYmxlIGBgSFRUUF9QUk9YWWBgICh1cHBlcmNhc2UgYGBfUFJPWFlgYCkgd2lsbCBiZSBpZ25vcmVkLiBUaGlzIGlzCisgICAgICBiZWNhdXNlIHRoYXQgdmFyaWFibGUgY2FuIGJlIGluamVjdGVkIGJ5IGEgY2xpZW50IHVzaW5nIHRoZSAiUHJveHk6IiBIVFRQCisgICAgICBoZWFkZXIuIElmIHlvdSBuZWVkIHRvIHVzZSBhbiBIVFRQIHByb3h5IGluIGEgQ0dJIGVudmlyb25tZW50LCBlaXRoZXIgdXNlCisgICAgICBgYFByb3h5SGFuZGxlcmBgIGV4cGxpY2l0bHksIG9yIG1ha2Ugc3VyZSB0aGUgdmFyaWFibGUgbmFtZSBpcyBpbgorICAgICAgbG93ZXJjYXNlIChvciBhdCBsZWFzdCB0aGUgYGBfcHJveHlgYCBzdWZmaXgpLgogCiAuLiBub3RlOjoKICAgICB1cmxsaWIgYWxzbyBleHBvc2VzIGNlcnRhaW4gdXRpbGl0eSBmdW5jdGlvbnMgbGlrZSBzcGxpdHR5cGUsIHNwbGl0aG9zdCBhbmQKQEAgLTM0NCw0NyArMzQ5LDQ3IEBACiAgICA6Y2xhc3M6YFVSTG9wZW5lcmAgb2JqZWN0cyB3aWxsIHJhaXNlIGFuIDpleGM6YElPRXJyb3JgIGV4Y2VwdGlvbiBpZiB0aGUgc2VydmVyCiAgICByZXR1cm5zIGFuIGVycm9yIGNvZGUuCiAKLSAgICAuLiBtZXRob2Q6OiBvcGVuKGZ1bGx1cmxbLCBkYXRhXSkKKyAgIC4uIG1ldGhvZDo6IG9wZW4oZnVsbHVybFssIGRhdGFdKQogCi0gICAgICAgT3BlbiAqZnVsbHVybCogdXNpbmcgdGhlIGFwcHJvcHJpYXRlIHByb3RvY29sLiAgVGhpcyBtZXRob2Qgc2V0cyB1cCBjYWNoZSBhbmQKLSAgICAgICBwcm94eSBpbmZvcm1hdGlvbiwgdGhlbiBjYWxscyB0aGUgYXBwcm9wcmlhdGUgb3BlbiBtZXRob2Qgd2l0aCBpdHMgaW5wdXQKLSAgICAgICBhcmd1bWVudHMuICBJZiB0aGUgc2NoZW1lIGlzIG5vdCByZWNvZ25pemVkLCA6bWV0aDpgb3Blbl91bmtub3duYCBpcyBjYWxsZWQuCi0gICAgICAgVGhlICpkYXRhKiBhcmd1bWVudCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgKmRhdGEqIGFyZ3VtZW50IG9mCi0gICAgICAgOmZ1bmM6YHVybG9wZW5gLgorICAgICAgT3BlbiAqZnVsbHVybCogdXNpbmcgdGhlIGFwcHJvcHJpYXRlIHByb3RvY29sLiAgVGhpcyBtZXRob2Qgc2V0cyB1cCBjYWNoZSBhbmQKKyAgICAgIHByb3h5IGluZm9ybWF0aW9uLCB0aGVuIGNhbGxzIHRoZSBhcHByb3ByaWF0ZSBvcGVuIG1ldGhvZCB3aXRoIGl0cyBpbnB1dAorICAgICAgYXJndW1lbnRzLiAgSWYgdGhlIHNjaGVtZSBpcyBub3QgcmVjb2duaXplZCwgOm1ldGg6YG9wZW5fdW5rbm93bmAgaXMgY2FsbGVkLgorICAgICAgVGhlICpkYXRhKiBhcmd1bWVudCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcyB0aGUgKmRhdGEqIGFyZ3VtZW50IG9mCisgICAgICA6ZnVuYzpgdXJsb3BlbmAuCiAKIAotICAgIC4uIG1ldGhvZDo6IG9wZW5fdW5rbm93bihmdWxsdXJsWywgZGF0YV0pCisgICAuLiBtZXRob2Q6OiBvcGVuX3Vua25vd24oZnVsbHVybFssIGRhdGFdKQogCi0gICAgICAgT3ZlcnJpZGFibGUgaW50ZXJmYWNlIHRvIG9wZW4gdW5rbm93biBVUkwgdHlwZXMuCisgICAgICBPdmVycmlkYWJsZSBpbnRlcmZhY2UgdG8gb3BlbiB1bmtub3duIFVSTCB0eXBlcy4KIAogCi0gICAgLi4gbWV0aG9kOjogcmV0cmlldmUodXJsWywgZmlsZW5hbWVbLCByZXBvcnRob29rWywgZGF0YV1dXSkKKyAgIC4uIG1ldGhvZDo6IHJldHJpZXZlKHVybFssIGZpbGVuYW1lWywgcmVwb3J0aG9va1ssIGRhdGFdXV0pCiAKLSAgICAgICBSZXRyaWV2ZXMgdGhlIGNvbnRlbnRzIG9mICp1cmwqIGFuZCBwbGFjZXMgaXQgaW4gKmZpbGVuYW1lKi4gIFRoZSByZXR1cm4gdmFsdWUKLSAgICAgICBpcyBhIHR1cGxlIGNvbnNpc3Rpbmcgb2YgYSBsb2NhbCBmaWxlbmFtZSBhbmQgZWl0aGVyIGEKLSAgICAgICA6Y2xhc3M6YG1pbWV0b29scy5NZXNzYWdlYCBvYmplY3QgY29udGFpbmluZyB0aGUgcmVzcG9uc2UgaGVhZGVycyAoZm9yIHJlbW90ZQotICAgICAgIFVSTHMpIG9yIGBgTm9uZWBgIChmb3IgbG9jYWwgVVJMcykuICBUaGUgY2FsbGVyIG11c3QgdGhlbiBvcGVuIGFuZCByZWFkIHRoZQotICAgICAgIGNvbnRlbnRzIG9mICpmaWxlbmFtZSouICBJZiAqZmlsZW5hbWUqIGlzIG5vdCBnaXZlbiBhbmQgdGhlIFVSTCByZWZlcnMgdG8gYQotICAgICAgIGxvY2FsIGZpbGUsIHRoZSBpbnB1dCBmaWxlbmFtZSBpcyByZXR1cm5lZC4gIElmIHRoZSBVUkwgaXMgbm9uLWxvY2FsIGFuZAotICAgICAgICpmaWxlbmFtZSogaXMgbm90IGdpdmVuLCB0aGUgZmlsZW5hbWUgaXMgdGhlIG91dHB1dCBvZiA6ZnVuYzpgdGVtcGZpbGUubWt0ZW1wYAotICAgICAgIHdpdGggYSBzdWZmaXggdGhhdCBtYXRjaGVzIHRoZSBzdWZmaXggb2YgdGhlIGxhc3QgcGF0aCBjb21wb25lbnQgb2YgdGhlIGlucHV0Ci0gICAgICAgVVJMLiAgSWYgKnJlcG9ydGhvb2sqIGlzIGdpdmVuLCBpdCBtdXN0IGJlIGEgZnVuY3Rpb24gYWNjZXB0aW5nIHRocmVlIG51bWVyaWMKLSAgICAgICBwYXJhbWV0ZXJzLiAgSXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgZWFjaCBjaHVuayBvZiBkYXRhIGlzIHJlYWQgZnJvbSB0aGUKLSAgICAgICBuZXR3b3JrLiAgKnJlcG9ydGhvb2sqIGlzIGlnbm9yZWQgZm9yIGxvY2FsIFVSTHMuCisgICAgICBSZXRyaWV2ZXMgdGhlIGNvbnRlbnRzIG9mICp1cmwqIGFuZCBwbGFjZXMgaXQgaW4gKmZpbGVuYW1lKi4gIFRoZSByZXR1cm4gdmFsdWUKKyAgICAgIGlzIGEgdHVwbGUgY29uc2lzdGluZyBvZiBhIGxvY2FsIGZpbGVuYW1lIGFuZCBlaXRoZXIgYQorICAgICAgOmNsYXNzOmBtaW1ldG9vbHMuTWVzc2FnZWAgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlc3BvbnNlIGhlYWRlcnMgKGZvciByZW1vdGUKKyAgICAgIFVSTHMpIG9yIGBgTm9uZWBgIChmb3IgbG9jYWwgVVJMcykuICBUaGUgY2FsbGVyIG11c3QgdGhlbiBvcGVuIGFuZCByZWFkIHRoZQorICAgICAgY29udGVudHMgb2YgKmZpbGVuYW1lKi4gIElmICpmaWxlbmFtZSogaXMgbm90IGdpdmVuIGFuZCB0aGUgVVJMIHJlZmVycyB0byBhCisgICAgICBsb2NhbCBmaWxlLCB0aGUgaW5wdXQgZmlsZW5hbWUgaXMgcmV0dXJuZWQuICBJZiB0aGUgVVJMIGlzIG5vbi1sb2NhbCBhbmQKKyAgICAgICpmaWxlbmFtZSogaXMgbm90IGdpdmVuLCB0aGUgZmlsZW5hbWUgaXMgdGhlIG91dHB1dCBvZiA6ZnVuYzpgdGVtcGZpbGUubWt0ZW1wYAorICAgICAgd2l0aCBhIHN1ZmZpeCB0aGF0IG1hdGNoZXMgdGhlIHN1ZmZpeCBvZiB0aGUgbGFzdCBwYXRoIGNvbXBvbmVudCBvZiB0aGUgaW5wdXQKKyAgICAgIFVSTC4gIElmICpyZXBvcnRob29rKiBpcyBnaXZlbiwgaXQgbXVzdCBiZSBhIGZ1bmN0aW9uIGFjY2VwdGluZyB0aHJlZSBudW1lcmljCisgICAgICBwYXJhbWV0ZXJzLiAgSXQgd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgZWFjaCBjaHVuayBvZiBkYXRhIGlzIHJlYWQgZnJvbSB0aGUKKyAgICAgIG5ldHdvcmsuICAqcmVwb3J0aG9vayogaXMgaWdub3JlZCBmb3IgbG9jYWwgVVJMcy4KIAotICAgICAgIElmIHRoZSAqdXJsKiB1c2VzIHRoZSA6ZmlsZTpgaHR0cDpgIHNjaGVtZSBpZGVudGlmaWVyLCB0aGUgb3B0aW9uYWwgKmRhdGEqCi0gICAgICAgYXJndW1lbnQgbWF5IGJlIGdpdmVuIHRvIHNwZWNpZnkgYSBgYFBPU1RgYCByZXF1ZXN0IChub3JtYWxseSB0aGUgcmVxdWVzdCB0eXBlCi0gICAgICAgaXMgYGBHRVRgYCkuICBUaGUgKmRhdGEqIGFyZ3VtZW50IG11c3QgaW4gc3RhbmRhcmQKLSAgICAgICA6bWltZXR5cGU6YGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgZm9ybWF0OyBzZWUgdGhlIDpmdW5jOmB1cmxlbmNvZGVgCi0gICAgICAgZnVuY3Rpb24gYmVsb3cuCisgICAgICBJZiB0aGUgKnVybCogdXNlcyB0aGUgOmZpbGU6YGh0dHA6YCBzY2hlbWUgaWRlbnRpZmllciwgdGhlIG9wdGlvbmFsICpkYXRhKgorICAgICAgYXJndW1lbnQgbWF5IGJlIGdpdmVuIHRvIHNwZWNpZnkgYSBgYFBPU1RgYCByZXF1ZXN0IChub3JtYWxseSB0aGUgcmVxdWVzdCB0eXBlCisgICAgICBpcyBgYEdFVGBgKS4gIFRoZSAqZGF0YSogYXJndW1lbnQgbXVzdCBpbiBzdGFuZGFyZAorICAgICAgOm1pbWV0eXBlOmBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGZvcm1hdDsgc2VlIHRoZSA6ZnVuYzpgdXJsZW5jb2RlYAorICAgICAgZnVuY3Rpb24gYmVsb3cuCiAKIAotICAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KKyAgIC4uIGF0dHJpYnV0ZTo6IHZlcnNpb24KIAotICAgICAgIFZhcmlhYmxlIHRoYXQgc3BlY2lmaWVzIHRoZSB1c2VyIGFnZW50IG9mIHRoZSBvcGVuZXIgb2JqZWN0LiAgVG8gZ2V0Ci0gICAgICAgOm1vZDpgdXJsbGliYCB0byB0ZWxsIHNlcnZlcnMgdGhhdCBpdCBpcyBhIHBhcnRpY3VsYXIgdXNlciBhZ2VudCwgc2V0IHRoaXMgaW4gYQotICAgICAgIHN1YmNsYXNzIGFzIGEgY2xhc3MgdmFyaWFibGUgb3IgaW4gdGhlIGNvbnN0cnVjdG9yIGJlZm9yZSBjYWxsaW5nIHRoZSBiYXNlCi0gICAgICAgY29uc3RydWN0b3IuCisgICAgICBWYXJpYWJsZSB0aGF0IHNwZWNpZmllcyB0aGUgdXNlciBhZ2VudCBvZiB0aGUgb3BlbmVyIG9iamVjdC4gIFRvIGdldAorICAgICAgOm1vZDpgdXJsbGliYCB0byB0ZWxsIHNlcnZlcnMgdGhhdCBpdCBpcyBhIHBhcnRpY3VsYXIgdXNlciBhZ2VudCwgc2V0IHRoaXMgaW4gYQorICAgICAgc3ViY2xhc3MgYXMgYSBjbGFzcyB2YXJpYWJsZSBvciBpbiB0aGUgY29uc3RydWN0b3IgYmVmb3JlIGNhbGxpbmcgdGhlIGJhc2UKKyAgICAgIGNvbnN0cnVjdG9yLgogCiAKIC4uIGNsYXNzOjogRmFuY3lVUkxvcGVuZXIoLi4uKQpAQCAtNDE1LDE4ICs0MjAsMTggQEAKICAgICAgIHVzZXJzIGZvciB0aGUgcmVxdWlyZWQgaW5mb3JtYXRpb24gb24gdGhlIGNvbnRyb2xsaW5nIHRlcm1pbmFsLiAgQSBzdWJjbGFzcyBtYXkKICAgICAgIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIHN1cHBvcnQgbW9yZSBhcHByb3ByaWF0ZSBiZWhhdmlvciBpZiBuZWVkZWQuCiAKLSAgICBUaGUgOmNsYXNzOmBGYW5jeVVSTG9wZW5lcmAgY2xhc3Mgb2ZmZXJzIG9uZSBhZGRpdGlvbmFsIG1ldGhvZCB0aGF0IHNob3VsZCBiZQotICAgIG92ZXJsb2FkZWQgdG8gcHJvdmlkZSB0aGUgYXBwcm9wcmlhdGUgYmVoYXZpb3I6CisgICBUaGUgOmNsYXNzOmBGYW5jeVVSTG9wZW5lcmAgY2xhc3Mgb2ZmZXJzIG9uZSBhZGRpdGlvbmFsIG1ldGhvZCB0aGF0IHNob3VsZCBiZQorICAgb3ZlcmxvYWRlZCB0byBwcm92aWRlIHRoZSBhcHByb3ByaWF0ZSBiZWhhdmlvcjoKIAotICAgIC4uIG1ldGhvZDo6IHByb21wdF91c2VyX3Bhc3N3ZChob3N0LCByZWFsbSkKKyAgIC4uIG1ldGhvZDo6IHByb21wdF91c2VyX3Bhc3N3ZChob3N0LCByZWFsbSkKIAotICAgICAgIFJldHVybiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyIGF0IHRoZSBnaXZlbiBob3N0IGluIHRoZQotICAgICAgIHNwZWNpZmllZCBzZWN1cml0eSByZWFsbS4gIFRoZSByZXR1cm4gdmFsdWUgc2hvdWxkIGJlIGEgdHVwbGUsIGBgKHVzZXIsCi0gICAgICAgcGFzc3dvcmQpYGAsIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBiYXNpYyBhdXRoZW50aWNhdGlvbi4KKyAgICAgIFJldHVybiBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gYXV0aGVudGljYXRlIHRoZSB1c2VyIGF0IHRoZSBnaXZlbiBob3N0IGluIHRoZQorICAgICAgc3BlY2lmaWVkIHNlY3VyaXR5IHJlYWxtLiAgVGhlIHJldHVybiB2YWx1ZSBzaG91bGQgYmUgYSB0dXBsZSwgYGAodXNlciwKKyAgICAgIHBhc3N3b3JkKWBgLCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgYmFzaWMgYXV0aGVudGljYXRpb24uCiAKLSAgICAgICBUaGUgaW1wbGVtZW50YXRpb24gcHJvbXB0cyBmb3IgdGhpcyBpbmZvcm1hdGlvbiBvbiB0aGUgdGVybWluYWw7IGFuIGFwcGxpY2F0aW9uCi0gICAgICAgc2hvdWxkIG92ZXJyaWRlIHRoaXMgbWV0aG9kIHRvIHVzZSBhbiBhcHByb3ByaWF0ZSBpbnRlcmFjdGlvbiBtb2RlbCBpbiB0aGUgbG9jYWwKLSAgICAgICBlbnZpcm9ubWVudC4KKyAgICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBwcm9tcHRzIGZvciB0aGlzIGluZm9ybWF0aW9uIG9uIHRoZSB0ZXJtaW5hbDsgYW4gYXBwbGljYXRpb24KKyAgICAgIHNob3VsZCBvdmVycmlkZSB0aGlzIG1ldGhvZCB0byB1c2UgYW4gYXBwcm9wcmlhdGUgaW50ZXJhY3Rpb24gbW9kZWwgaW4gdGhlIGxvY2FsCisgICAgICBlbnZpcm9ubWVudC4KIAogLi4gZXhjZXB0aW9uOjogQ29udGVudFRvb1Nob3J0RXJyb3IobXNnWywgY29udGVudF0pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3V1aWQucnN0IGIvRG9jL2xpYnJhcnkvdXVpZC5yc3QKaW5kZXggODg1ZGIzZC4uZDI4MDhjZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXVpZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdXVpZC5yc3QKQEAgLTIzLDEyICsyMywxMyBAQAogLi4gY2xhc3M6OiBVVUlEKFtoZXhbLCBieXRlc1ssIGJ5dGVzX2xlWywgZmllbGRzWywgaW50WywgdmVyc2lvbl1dXV1dXSkKIAogICAgQ3JlYXRlIGEgVVVJRCBmcm9tIGVpdGhlciBhIHN0cmluZyBvZiAzMiBoZXhhZGVjaW1hbCBkaWdpdHMsIGEgc3RyaW5nIG9mIDE2Ci0gICBieXRlcyBhcyB0aGUgKmJ5dGVzKiBhcmd1bWVudCwgYSBzdHJpbmcgb2YgMTYgYnl0ZXMgaW4gbGl0dGxlLWVuZGlhbiBvcmRlciBhcwotICAgdGhlICpieXRlc19sZSogYXJndW1lbnQsIGEgdHVwbGUgb2Ygc2l4IGludGVnZXJzICgzMi1iaXQgKnRpbWVfbG93KiwgMTYtYml0Ci0gICAqdGltZV9taWQqLCAxNi1iaXQgKnRpbWVfaGlfdmVyc2lvbiosIDgtYml0ICpjbG9ja19zZXFfaGlfdmFyaWFudCosIDgtYml0Ci0gICAqY2xvY2tfc2VxX2xvdyosIDQ4LWJpdCAqbm9kZSopIGFzIHRoZSAqZmllbGRzKiBhcmd1bWVudCwgb3IgYSBzaW5nbGUgMTI4LWJpdAotICAgaW50ZWdlciBhcyB0aGUgKmludCogYXJndW1lbnQuICBXaGVuIGEgc3RyaW5nIG9mIGhleCBkaWdpdHMgaXMgZ2l2ZW4sIGN1cmx5Ci0gICBicmFjZXMsIGh5cGhlbnMsIGFuZCBhIFVSTiBwcmVmaXggYXJlIGFsbCBvcHRpb25hbC4gIEZvciBleGFtcGxlLCB0aGVzZQorICAgYnl0ZXMgaW4gYmlnLWVuZGlhbiBvcmRlciBhcyB0aGUgKmJ5dGVzKiBhcmd1bWVudCwgYSBzdHJpbmcgb2YgMTYgYnl0ZXMgaW4KKyAgIGxpdHRsZS1lbmRpYW4gb3JkZXIgYXMgdGhlICpieXRlc19sZSogYXJndW1lbnQsIGEgdHVwbGUgb2Ygc2l4IGludGVnZXJzCisgICAoMzItYml0ICp0aW1lX2xvdyosIDE2LWJpdCAqdGltZV9taWQqLCAxNi1iaXQgKnRpbWVfaGlfdmVyc2lvbiosCisgICA4LWJpdCAqY2xvY2tfc2VxX2hpX3ZhcmlhbnQqLCA4LWJpdCAqY2xvY2tfc2VxX2xvdyosIDQ4LWJpdCAqbm9kZSopIGFzIHRoZQorICAgKmZpZWxkcyogYXJndW1lbnQsIG9yIGEgc2luZ2xlIDEyOC1iaXQgaW50ZWdlciBhcyB0aGUgKmludCogYXJndW1lbnQuCisgICBXaGVuIGEgc3RyaW5nIG9mIGhleCBkaWdpdHMgaXMgZ2l2ZW4sIGN1cmx5IGJyYWNlcywgaHlwaGVucywKKyAgIGFuZCBhIFVSTiBwcmVmaXggYXJlIGFsbCBvcHRpb25hbC4gIEZvciBleGFtcGxlLCB0aGVzZQogICAgZXhwcmVzc2lvbnMgYWxsIHlpZWxkIHRoZSBzYW1lIFVVSUQ6OgogCiAgICAgICBVVUlEKCd7MTIzNDU2NzgtMTIzNC01Njc4LTEyMzQtNTY3ODEyMzQ1Njc4fScpCkBAIC0xMDQsNyArMTA1LDcgQEAKIC4uIGF0dHJpYnV0ZTo6IFVVSUQudmFyaWFudAogCiAgICBUaGUgVVVJRCB2YXJpYW50LCB3aGljaCBkZXRlcm1pbmVzIHRoZSBpbnRlcm5hbCBsYXlvdXQgb2YgdGhlIFVVSUQuIFRoaXMgd2lsbCBiZQotICAgb25lIG9mIHRoZSBpbnRlZ2VyIGNvbnN0YW50cyA6Y29uc3Q6YFJFU0VSVkVEX05DU2AsIDpjb25zdDpgUkZDXzQxMjJgLAorICAgb25lIG9mIHRoZSBjb25zdGFudHMgOmNvbnN0OmBSRVNFUlZFRF9OQ1NgLCA6Y29uc3Q6YFJGQ180MTIyYCwKICAgIDpjb25zdDpgUkVTRVJWRURfTUlDUk9TT0ZUYCwgb3IgOmNvbnN0OmBSRVNFUlZFRF9GVVRVUkVgLgogCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dlYWtyZWYucnN0IGIvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QKaW5kZXggYWZiZDYxMS4uMDc4MWU2NyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2Vha3JlZi5yc3QKQEAgLTE4OSw4ICsxODksOCBAQAogICAgICAgbWFnaWMiIChhcyBhIHNpZGUgZWZmZWN0IG9mIGdhcmJhZ2UgY29sbGVjdGlvbikuCiAKIDpjbGFzczpgV2Vha1ZhbHVlRGljdGlvbmFyeWAgb2JqZWN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2RzLgotVGhlc2UgbWV0aG9kIGhhdmUgdGhlIHNhbWUgaXNzdWVzIGFzIHRoZSA6bWV0aDpgaXRlcmtleXJlZnNgIGFuZCA6bWV0aDpga2V5cmVmc2AKLW1ldGhvZHMgb2YgOmNsYXNzOmBXZWFrS2V5RGljdGlvbmFyeWAgb2JqZWN0cy4KK1RoZXNlIG1ldGhvZHMgaGF2ZSB0aGUgc2FtZSBpc3N1ZXMgYXMgdGhlIDptZXRoOmBpdGVya2V5cmVmc2AgYW5kCis6bWV0aDpga2V5cmVmc2AgbWV0aG9kcyBvZiA6Y2xhc3M6YFdlYWtLZXlEaWN0aW9uYXJ5YCBvYmplY3RzLgogCiAKIC4uIG1ldGhvZDo6IFdlYWtWYWx1ZURpY3Rpb25hcnkuaXRlcnZhbHVlcmVmcygpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWwuZG9tLm1pbmlkb20ucnN0IGIvRG9jL2xpYnJhcnkveG1sLmRvbS5taW5pZG9tLnJzdAppbmRleCBhMWQ3OTUxLi5mOTEyNTlhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWwuZG9tLm1pbmlkb20ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbC5kb20ubWluaWRvbS5yc3QKQEAgLTI3Myw3ICsyNzMsNyBAQAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIFRoZSBlbmNvZGluZyBzdHJpbmcgaW5jbHVkZWQgaW4gWE1MIG91dHB1dCBzaG91bGQgY29uZm9ybSB0byB0aGUKKy4uIFsxXSBUaGUgZW5jb2Rpbmcgc3RyaW5nIGluY2x1ZGVkIGluIFhNTCBvdXRwdXQgc2hvdWxkIGNvbmZvcm0gdG8gdGhlCiAgICBhcHByb3ByaWF0ZSBzdGFuZGFyZHMuIEZvciBleGFtcGxlLCAiVVRGLTgiIGlzIHZhbGlkLCBidXQgIlVURjgiIGlzCiAgICBub3QuIFNlZSBodHRwczovL3d3dy53My5vcmcvVFIvMjAwNi9SRUMteG1sMTEtMjAwNjA4MTYvI05ULUVuY29kaW5nRGVjbAogICAgYW5kIGh0dHBzOi8vd3d3LmlhbmEub3JnL2Fzc2lnbm1lbnRzL2NoYXJhY3Rlci1zZXRzL2NoYXJhY3Rlci1zZXRzLnhodG1sLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdCBiL0RvYy9saWJyYXJ5L3htbC5ldHJlZS5lbGVtZW50dHJlZS5yc3QKaW5kZXggMDhiNjc3Yi4uZTEzZGExMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkveG1sLmV0cmVlLmVsZW1lbnR0cmVlLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWwuZXRyZWUuZWxlbWVudHRyZWUucnN0CkBAIC0yNzQsNyArMjc0LDcgQEAKIHdpdGggcHJlZml4ZXMgaW4gdGhlIGZvcm0gYGBwcmVmaXg6c29tZXRhZ2BgIGdldCBleHBhbmRlZCB0bwogYGB7dXJpfXNvbWV0YWdgYCB3aGVyZSB0aGUgKnByZWZpeCogaXMgcmVwbGFjZWQgYnkgdGhlIGZ1bGwgKlVSSSouCiBBbHNvLCBpZiB0aGVyZSBpcyBhIGBkZWZhdWx0IG5hbWVzcGFjZQotPGh0dHBzOi8vd3d3LnczLm9yZy9UUi8yMDA2L1JFQy14bWwtbmFtZXMtMjAwNjA4MTYvI2RlZmF1bHRpbmc+YF9fLAorPGh0dHBzOi8vd3d3LnczLm9yZy9UUi94bWwtbmFtZXMvI2RlZmF1bHRpbmc+YF9fLAogdGhhdCBmdWxsIFVSSSBnZXRzIHByZXBlbmRlZCB0byBhbGwgb2YgdGhlIG5vbi1wcmVmaXhlZCB0YWdzLgogCiBIZXJlIGlzIGFuIFhNTCBleGFtcGxlIHRoYXQgaW5jb3Jwb3JhdGVzIHR3byBuYW1lc3BhY2VzLCBvbmUgd2l0aCB0aGUKQEAgLTEwMzEsNyArMTAzMSw3IEBACiAKIC4uIHJ1YnJpYzo6IEZvb3Rub3RlcwogCi0uLiBbI10gVGhlIGVuY29kaW5nIHN0cmluZyBpbmNsdWRlZCBpbiBYTUwgb3V0cHV0IHNob3VsZCBjb25mb3JtIHRvIHRoZQorLi4gWzFdIFRoZSBlbmNvZGluZyBzdHJpbmcgaW5jbHVkZWQgaW4gWE1MIG91dHB1dCBzaG91bGQgY29uZm9ybSB0byB0aGUKICAgIGFwcHJvcHJpYXRlIHN0YW5kYXJkcy4gIEZvciBleGFtcGxlLCAiVVRGLTgiIGlzIHZhbGlkLCBidXQgIlVURjgiIGlzCiAgICBub3QuICBTZWUgaHR0cHM6Ly93d3cudzMub3JnL1RSLzIwMDYvUkVDLXhtbDExLTIwMDYwODE2LyNOVC1FbmNvZGluZ0RlY2wKICAgIGFuZCBodHRwczovL3d3dy5pYW5hLm9yZy9hc3NpZ25tZW50cy9jaGFyYWN0ZXItc2V0cy9jaGFyYWN0ZXItc2V0cy54aHRtbC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3htbC5yc3QgYi9Eb2MvbGlicmFyeS94bWwucnN0CmluZGV4IGE4ZjIwY2QuLmIxMDdjMjkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkveG1sLnJzdApAQCAtMTI5LDggKzEyOSw4IEBACiB3ZWxsLWRlZmluZWQgWE1MIGZlYXR1cmVzLgogCiAKLS4uIF9kZWZ1c2VkeG1sOiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2RlZnVzZWR4bWwvCi0uLiBfZGVmdXNlZGV4cGF0OiBodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2RlZnVzZWRleHBhdC8KKy4uIF9kZWZ1c2VkeG1sOiBodHRwczovL3B5cGkub3JnL3Byb2plY3QvZGVmdXNlZHhtbC8KKy4uIF9kZWZ1c2VkZXhwYXQ6IGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9kZWZ1c2VkZXhwYXQvCiAuLiBfQmlsbGlvbiBMYXVnaHM6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0JpbGxpb25fbGF1Z2hzCiAuLiBfWklQIGJvbWI6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1ppcF9ib21iCiAuLiBfRFREOiBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Eb2N1bWVudF90eXBlX2RlZmluaXRpb24KZGlmZiAtLWdpdCBhL0RvYy9saWNlbnNlLnJzdCBiL0RvYy9saWNlbnNlLnJzdAppbmRleCBlYTM3YjVhLi5mMzM0OTVhIDEwMDY0NAotLS0gYS9Eb2MvbGljZW5zZS5yc3QKKysrIGIvRG9jL2xpY2Vuc2UucnN0CkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICBhbmFseXplLCB0ZXN0LCBwZXJmb3JtIGFuZC9vciBkaXNwbGF5IHB1YmxpY2x5LCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3MsCiAgICAgICBkaXN0cmlidXRlLCBhbmQgb3RoZXJ3aXNlIHVzZSBQeXRob24gfHJlbGVhc2V8IGFsb25lIG9yIGluIGFueSBkZXJpdmF0aXZlCiAgICAgICB2ZXJzaW9uLCBwcm92aWRlZCwgaG93ZXZlciwgdGhhdCBQU0YncyBMaWNlbnNlIEFncmVlbWVudCBhbmQgUFNGJ3Mgbm90aWNlIG9mCi0gICAgICBjb3B5cmlnaHQsIGkuZS4sICJDb3B5cmlnaHQgwqkgMjAwMS0yMDE2IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzCisgICAgICBjb3B5cmlnaHQsIGkuZS4sICJDb3B5cmlnaHQgwqkgMjAwMS0yMDE4IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzCiAgICAgICBSZXNlcnZlZCIgYXJlIHJldGFpbmVkIGluIFB5dGhvbiB8cmVsZWFzZXwgYWxvbmUgb3IgaW4gYW55IGRlcml2YXRpdmUgdmVyc2lvbgogICAgICAgcHJlcGFyZWQgYnkgTGljZW5zZWUuCiAKZGlmZiAtLWdpdCBhL0RvYy9tYWtlLmJhdCBiL0RvYy9tYWtlLmJhdAppbmRleCAyNTFmODIyLi44OGY0ZTllIDEwMDY0NAotLS0gYS9Eb2MvbWFrZS5iYXQKKysrIGIvRG9jL21ha2UuYmF0CkBAIC0xLDEyNCArMSwxNDIgQEAKLUBlY2hvIG9mZg0KLXNldGxvY2FsDQotDQotcHVzaGQgJX5kcDANCi0NCi1zZXQgdGhpcz0lfm4wDQotDQotaWYgIiVTUEhJTlhCVUlMRCUiIEVRVSAiIiBzZXQgU1BISU5YQlVJTEQ9c3BoaW54LWJ1aWxkDQotaWYgIiVQWVRIT04lIiBFUVUgIiIgc2V0IFBZVEhPTj1weQ0KLQ0KLWlmIERFRklORUQgUHJvZ3JhbUZpbGVzKHg4Nikgc2V0IF9QUkdNRkxTPSVQcm9ncmFtRmlsZXMoeDg2KSUNCi1pZiBOT1QgREVGSU5FRCBQcm9ncmFtRmlsZXMoeDg2KSBzZXQgX1BSR01GTFM9JVByb2dyYW1GaWxlcyUNCi1pZiAiJUhUTUxIRUxQJSIgRVFVICIiIHNldCBIVE1MSEVMUD0lX1BSR01GTFMlXEhUTUwgSGVscCBXb3Jrc2hvcFxoaGMuZXhlDQotDQotaWYgIiVESVNUVkVSU0lPTiUiIEVRVSAiIiBmb3IgL2YgInVzZWJhY2txIiAlJXYgaW4gKGAlUFlUSE9OJSB0b29scy9leHRlbnNpb25zL3BhdGNobGV2ZWwucHlgKSBkbyBzZXQgRElTVFZFUlNJT049JSV2DQotDQotaWYgIiVCVUlMRERJUiUiIEVRVSAiIiBzZXQgQlVJTERESVI9YnVpbGQNCi0NCi1yZW0gVGFyZ2V0cyB0aGF0IGRvbid0IHJlcXVpcmUgc3BoaW54LWJ1aWxkDQotaWYgIiUxIiBFUVUgIiIgZ290byBoZWxwDQotaWYgIiUxIiBFUVUgImhlbHAiIGdvdG8gaGVscA0KLWlmICIlMSIgRVFVICJjaGVjayIgZ290byBjaGVjaw0KLWlmICIlMSIgRVFVICJzZXJ2ZSIgZ290byBzZXJ2ZQ0KLWlmICIlMSIgPT0gImNsZWFuIiAoDQotICAgIHJtZGlyIC9xIC9zICVCVUlMRERJUiUNCi0gICAgZ290byBlbmQNCi0pDQotDQotJVNQSElOWEJVSUxEJSAyPiBudWwNCi1pZiBlcnJvcmxldmVsIDkwMDkgKA0KLSAgICBlY2hvLg0KLSAgICBlY2hvLlRoZSAnc3BoaW54LWJ1aWxkJyBjb21tYW5kIHdhcyBub3QgZm91bmQuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBTcGhpbngNCi0gICAgZWNoby5pbnN0YWxsZWQsIHRoZW4gc2V0IHRoZSBTUEhJTlhCVUlMRCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBwb2ludA0KLSAgICBlY2hvLnRvIHRoZSBmdWxsIHBhdGggb2YgdGhlICdzcGhpbngtYnVpbGQnIGV4ZWN1dGFibGUuIEFsdGVybmF0aXZlbHkgeW91DQotICAgIGVjaG8ubWF5IGFkZCB0aGUgU3BoaW54IGRpcmVjdG9yeSB0byBQQVRILg0KLSAgICBlY2hvLg0KLSAgICBlY2hvLklmIHlvdSBkb24ndCBoYXZlIFNwaGlueCBpbnN0YWxsZWQsIGdyYWIgaXQgZnJvbQ0KLSAgICBlY2hvLmh0dHA6Ly9zcGhpbngtZG9jLm9yZy8NCi0gICAgZ290byBlbmQNCi0pDQotDQotcmVtIFRhcmdldHMgdGhhdCBkbyByZXF1aXJlIHNwaGlueC1idWlsZCBhbmQgaGF2ZSB0aGVpciBvd24gbGFiZWwNCi1pZiAiJTEiIEVRVSAiaHRtbHZpZXciIGdvdG8gaHRtbHZpZXcNCi0NCi1yZW0gRXZlcnl0aGluZyBlbHNlDQotZ290byBidWlsZA0KLQ0KLTpoZWxwDQotZWNoby51c2FnZTogJXRoaXMlIEJVSUxERVIgW2ZpbGVuYW1lIC4uLl0NCi1lY2hvLg0KLWVjaG8uQ2FsbCAldGhpcyUgd2l0aCB0aGUgZGVzaXJlZCBTcGhpbnggYnVpbGRlciBhcyB0aGUgZmlyc3QgYXJndW1lbnQsIGUuZy4NCi1lY2hvLmBgJXRoaXMlIGh0bWxgYCBvciBgYCV0aGlzJSBkb2N0ZXN0YGAuICBJbnRlcmVzdGluZyB0YXJnZXRzIHRoYXQgYXJlDQotZWNoby5hbHdheXMgYXZhaWxhYmxlIGluY2x1ZGU6DQotZWNoby4NCi1lY2hvLiAgIFByb3ZpZGVkIGJ5IFNwaGlueDoNCi1lY2hvLiAgICAgIGh0bWwsIGh0bWxoZWxwLCBsYXRleCwgdGV4dA0KLWVjaG8uICAgICAgc3VzcGljaW91cywgbGlua2NoZWNrLCBjaGFuZ2VzLCBkb2N0ZXN0DQotZWNoby4gICBQcm92aWRlZCBieSB0aGlzIHNjcmlwdDoNCi1lY2hvLiAgICAgIGNsZWFuLCBjaGVjaywgc2VydmUsIGh0bWx2aWV3DQotZWNoby4NCi1lY2hvLkFsbCBhcmd1bWVudHMgcGFzdCB0aGUgZmlyc3Qgb25lIGFyZSBwYXNzZWQgdGhyb3VnaCB0byBzcGhpbngtYnVpbGQgYXMNCi1lY2hvLmZpbGVuYW1lcyB0byBidWlsZCBvciBhcmUgaWdub3JlZC4gIFNlZSBSRUFETUUudHh0IGluIHRoaXMgZGlyZWN0b3J5IG9yDQotZWNoby50aGUgZG9jdW1lbnRhdGlvbiBmb3IgeW91ciB2ZXJzaW9uIG9mIFNwaGlueCBmb3IgbW9yZSBleGhhdXN0aXZlIGxpc3RzDQotZWNoby5vZiBhdmFpbGFibGUgdGFyZ2V0cyBhbmQgZGVzY3JpcHRpb25zIG9mIGVhY2guDQotZWNoby4NCi1lY2hvLlRoaXMgc2NyaXB0IGFzc3VtZXMgdGhhdCB0aGUgU1BISU5YQlVJTEQgZW52aXJvbm1lbnQgdmFyaWFibGUgY29udGFpbnMNCi1lY2hvLmEgbGVnaXRpbWF0ZSBjb21tYW5kIGZvciBjYWxsaW5nIHNwaGlueC1idWlsZCwgb3IgdGhhdCBzcGhpbngtYnVpbGQgaXMNCi1lY2hvLm9uIHlvdXIgUEFUSCBpZiBTUEhJTlhCVUlMRCBpcyBub3Qgc2V0LiAgT3B0aW9ucyBmb3Igc3BoaW54LWJ1aWxkIGNhbg0KLWVjaG8uYmUgcGFzc2VkIGJ5IHNldHRpbmcgdGhlIFNQSElOWE9QVFMgZW52aXJvbm1lbnQgdmFyaWFibGUuDQotZ290byBlbmQNCi0NCi06YnVpbGQNCi1pZiBOT1QgIiVQQVBFUiUiID09ICIiICgNCi0gICAgc2V0IFNQSElOWE9QVFM9LUQgbGF0ZXhfcGFwZXJfc2l6ZT0lUEFQRVIlICVTUEhJTlhPUFRTJQ0KLSkNCi1jbWQgL0MgJVNQSElOWEJVSUxEJSAlU1BISU5YT1BUUyUgLWIlMSAtZGJ1aWxkXGRvY3RyZWVzIC4gJUJVSUxERElSJVwlKg0KLQ0KLWlmICIlMSIgRVFVICJodG1saGVscCIgKA0KLSAgICBpZiAgbm90IGV4aXN0ICIlSFRNTEhFTFAlIiAoDQotICAgICAgICBlY2hvLg0KLSAgICAgICAgZWNoby5UaGUgSFRNTCBIZWxwIFdvcmtzaG9wIHdhcyBub3QgZm91bmQuICBTZXQgdGhlIEhUTUxIRUxQIHZhcmlhYmxlDQotICAgICAgICBlY2hvLnRvIHRoZSBwYXRoIHRvIGhoYy5leGUgb3IgZG93bmxvYWQgYW5kIGluc3RhbGwgaXQgZnJvbQ0KLSAgICAgICAgZWNoby5odHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2Njk5ODUNCi0gICAgICAgIHJlbSBTZXQgZXJyb3JsZXZlbCB0byAxIGFuZCBleGl0DQotICAgICAgICBjbWQgL0MgZXhpdCAvYiAxDQotICAgICAgICBnb3RvIGVuZA0KLSAgICApDQotICAgIGNtZCAvQyAiJUhUTUxIRUxQJSIgYnVpbGRcaHRtbGhlbHBccHl0aG9uJURJU1RWRVJTSU9OOi49JS5oaHANCi0gICAgcmVtIGhoYy5leGUgc2VlbXMgdG8gYWx3YXlzIGV4aXQgd2l0aCBjb2RlIDEsIHJlc2V0IHRvIDAgZm9yIGxlc3MgdGhhbiAyDQotICAgIGlmIG5vdCBlcnJvcmxldmVsIDIgY21kIC9DIGV4aXQgL2IgMA0KLSkNCi0NCi1lY2hvLg0KLWlmIGVycm9ybGV2ZWwgMSAoDQotICAgIGVjaG8uQnVpbGQgZmFpbGVkIChleGl0IGNvZGUgJUVSUk9STEVWRUwlXiksIGNoZWNrIGZvciBlcnJvciBtZXNzYWdlcw0KLSAgICBlY2hvLmFib3ZlLiAgQW55IG91dHB1dCB3aWxsIGJlIGZvdW5kIGluICVCVUlMRERJUiVcJTENCi0pIGVsc2UgKA0KLSAgICBlY2hvLkJ1aWxkIHN1Y2NlZWRlZC4gQWxsIG91dHB1dCBzaG91bGQgYmUgaW4gJUJVSUxERElSJVwlMQ0KLSkNCi1nb3RvIGVuZA0KLQ0KLTpodG1sdmlldw0KLWlmIE5PVCAiJTIiIEVRVSAiIiAoDQotICAgIGVjaG8uQ2FuJ3Qgc3BlY2lmeSBmaWxlbmFtZXMgdG8gYnVpbGQgd2l0aCBodG1sdmlldyB0YXJnZXQsIGlnbm9yaW5nLg0KLSkNCi1jbWQgL0MgJXRoaXMlIGh0bWwNCi0NCi1pZiBFWElTVCAlQlVJTERESVIlXGh0bWxcaW5kZXguaHRtbCAoDQotICAgIGVjaG8uT3BlbmluZyAlQlVJTERESVIlXGh0bWxcaW5kZXguaHRtbCBpbiB0aGUgZGVmYXVsdCB3ZWIgYnJvd3Nlci4uLg0KLSAgICBzdGFydCAlQlVJTERESVIlXGh0bWxcaW5kZXguaHRtbA0KLSkNCi0NCi1nb3RvIGVuZA0KLQ0KLTpjaGVjaw0KLWNtZCAvQyAlUFlUSE9OJSB0b29sc1xyc3RsaW50LnB5IC1pIHRvb2xzDQotZ290byBlbmQNCi0NCi06c2VydmUNCi1jbWQgL0MgJVBZVEhPTiUgLi5cVG9vbHNcc2NyaXB0c1xzZXJ2ZS5weSAlQlVJTERESVIlXGh0bWwNCi1nb3RvIGVuZA0KLQ0KLTplbmQNCi1wb3BkDQorQGVjaG8gb2ZmCitzZXRsb2NhbAorCitwdXNoZCAlfmRwMAorCitzZXQgdGhpcz0lfm4wCisKK2NhbGwgLi5cUENidWlsZFxmaW5kX3B5dGhvbi5iYXQgJVBZVEhPTiUKKworaWYgbm90IGRlZmluZWQgUFlUSE9OIHNldCBQWVRIT049cHkKKworaWYgbm90IGRlZmluZWQgU1BISU5YQlVJTEQgKAorICAgICVQWVRIT04lIC1jICJpbXBvcnQgc3BoaW54IiA+IG51bCAyPiBudWwKKyAgICBpZiBlcnJvcmxldmVsIDEgKAorICAgICAgICBlY2hvIEluc3RhbGxpbmcgc3BoaW54IHdpdGggJVBZVEhPTiUKKyAgICAgICAgJVBZVEhPTiUgLW0gcGlwIGluc3RhbGwgc3BoaW54CisgICAgICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CCisgICAgKQorICAgIHNldCBTUEhJTlhCVUlMRD0lUFlUSE9OJSAtYyAiaW1wb3J0IHNwaGlueCwgc3lzOyBzeXMuYXJndlswXSA9ICdzcGhpbngtYnVpbGQnOyBzeXMuZXhpdChzcGhpbngubWFpbigpKSIKKykKKworaWYgIiUxIiBORVEgImh0bWxoZWxwIiBnb3RvIDpza2lwaGhjc2VhcmNoCitpZiBleGlzdCAiJUhUTUxIRUxQJSIgZ290byA6c2tpcGhoY3NlYXJjaAorCityZW0gU2VhcmNoIGZvciBISEMgaW4gbGlrZWx5IHBsYWNlcworc2V0IEhUTUxIRUxQPQord2hlcmUgaGhjIC9xICYmIHNldCBIVE1MSEVMUD1oaGMgJiYgZ290byA6c2tpcGhoY3NlYXJjaAord2hlcmUgL1IgLi5cZXh0ZXJuYWxzIGhoYyA+ICIlVEVNUCVcaGhjLmxvYyIgMj4gbnVsICYmIHNldCAvUCBIVE1MSEVMUD0gPCAiJVRFTVAlXGhoYy5sb2MiICYgZGVsICIlVEVNUCVcaGhjLmxvYyIKK2lmIG5vdCBleGlzdCAiJUhUTUxIRUxQJSIgd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMoeDg2KSUiIGhoYyA+ICIlVEVNUCVcaGhjLmxvYyIgMj4gbnVsICYmIHNldCAvUCBIVE1MSEVMUD0gPCAiJVRFTVAlXGhoYy5sb2MiICYgZGVsICIlVEVNUCVcaGhjLmxvYyIKK2lmIG5vdCBleGlzdCAiJUhUTUxIRUxQJSIgd2hlcmUgL1IgIiVQcm9ncmFtRmlsZXMlIiBoaGMgPiAiJVRFTVAlXGhoYy5sb2MiIDI+IG51bCAmJiBzZXQgL1AgSFRNTEhFTFA9IDwgIiVURU1QJVxoaGMubG9jIiAmIGRlbCAiJVRFTVAlXGhoYy5sb2MiCitpZiBub3QgZXhpc3QgIiVIVE1MSEVMUCUiICgKKyAgICBlY2hvLgorICAgIGVjaG8uVGhlIEhUTUwgSGVscCBXb3Jrc2hvcCB3YXMgbm90IGZvdW5kLiAgU2V0IHRoZSBIVE1MSEVMUCB2YXJpYWJsZQorICAgIGVjaG8udG8gdGhlIHBhdGggdG8gaGhjLmV4ZSBvciBkb3dubG9hZCBhbmQgaW5zdGFsbCBpdCBmcm9tCisgICAgZWNoby5odHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM2Njk5ODUKKyAgICBleGl0IC9CIDEKKykKKzpza2lwaGhjc2VhcmNoCisKK2lmICIlRElTVFZFUlNJT04lIiBFUVUgIiIgZm9yIC9mICJ1c2ViYWNrcSIgJSV2IGluIChgJVBZVEhPTiUgdG9vbHMvZXh0ZW5zaW9ucy9wYXRjaGxldmVsLnB5YCkgZG8gc2V0IERJU1RWRVJTSU9OPSUldgorCitpZiAiJUJVSUxERElSJSIgRVFVICIiIHNldCBCVUlMRERJUj1idWlsZAorCityZW0gVGFyZ2V0cyB0aGF0IGRvbid0IHJlcXVpcmUgc3BoaW54LWJ1aWxkCitpZiAiJTEiIEVRVSAiIiBnb3RvIGhlbHAKK2lmICIlMSIgRVFVICJoZWxwIiBnb3RvIGhlbHAKK2lmICIlMSIgRVFVICJjaGVjayIgZ290byBjaGVjaworaWYgIiUxIiBFUVUgInNlcnZlIiBnb3RvIHNlcnZlCitpZiAiJTEiID09ICJjbGVhbiIgKAorICAgIHJtZGlyIC9xIC9zICIlQlVJTERESVIlIgorICAgIGdvdG8gZW5kCispCisKKyVTUEhJTlhCVUlMRCUgPm51bCAyPiBudWwKK2lmIGVycm9ybGV2ZWwgOTAwOSAoCisgICAgZWNoby4KKyAgICBlY2hvLlRoZSAnc3BoaW54LWJ1aWxkJyBjb21tYW5kIHdhcyBub3QgZm91bmQuIE1ha2Ugc3VyZSB5b3UgaGF2ZSBTcGhpbngKKyAgICBlY2hvLmluc3RhbGxlZCwgdGhlbiBzZXQgdGhlIFNQSElOWEJVSUxEIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHBvaW50CisgICAgZWNoby50byB0aGUgZnVsbCBwYXRoIG9mIHRoZSAnc3BoaW54LWJ1aWxkJyBleGVjdXRhYmxlLiBBbHRlcm5hdGl2ZWx5IHlvdQorICAgIGVjaG8ubWF5IGFkZCB0aGUgU3BoaW54IGRpcmVjdG9yeSB0byBQQVRILgorICAgIGVjaG8uCisgICAgZWNoby5JZiB5b3UgZG9uJ3QgaGF2ZSBTcGhpbnggaW5zdGFsbGVkLCBncmFiIGl0IGZyb20KKyAgICBlY2hvLmh0dHA6Ly9zcGhpbngtZG9jLm9yZy8KKyAgICBwb3BkCisgICAgZXhpdCAvQiAxCispCisKK3JlbSBUYXJnZXRzIHRoYXQgZG8gcmVxdWlyZSBzcGhpbngtYnVpbGQgYW5kIGhhdmUgdGhlaXIgb3duIGxhYmVsCitpZiAiJTEiIEVRVSAiaHRtbHZpZXciIGdvdG8gaHRtbHZpZXcKKworcmVtIEV2ZXJ5dGhpbmcgZWxzZQorZ290byBidWlsZAorCis6aGVscAorZWNoby51c2FnZTogJXRoaXMlIEJVSUxERVIgW2ZpbGVuYW1lIC4uLl0KK2VjaG8uCitlY2hvLkNhbGwgJXRoaXMlIHdpdGggdGhlIGRlc2lyZWQgU3BoaW54IGJ1aWxkZXIgYXMgdGhlIGZpcnN0IGFyZ3VtZW50LCBlLmcuCitlY2hvLmBgJXRoaXMlIGh0bWxgYCBvciBgYCV0aGlzJSBkb2N0ZXN0YGAuICBJbnRlcmVzdGluZyB0YXJnZXRzIHRoYXQgYXJlCitlY2hvLmFsd2F5cyBhdmFpbGFibGUgaW5jbHVkZToKK2VjaG8uCitlY2hvLiAgIFByb3ZpZGVkIGJ5IFNwaGlueDoKK2VjaG8uICAgICAgaHRtbCwgaHRtbGhlbHAsIGxhdGV4LCB0ZXh0CitlY2hvLiAgICAgIHN1c3BpY2lvdXMsIGxpbmtjaGVjaywgY2hhbmdlcywgZG9jdGVzdAorZWNoby4gICBQcm92aWRlZCBieSB0aGlzIHNjcmlwdDoKK2VjaG8uICAgICAgY2xlYW4sIGNoZWNrLCBzZXJ2ZSwgaHRtbHZpZXcKK2VjaG8uCitlY2hvLkFsbCBhcmd1bWVudHMgcGFzdCB0aGUgZmlyc3Qgb25lIGFyZSBwYXNzZWQgdGhyb3VnaCB0byBzcGhpbngtYnVpbGQgYXMKK2VjaG8uZmlsZW5hbWVzIHRvIGJ1aWxkIG9yIGFyZSBpZ25vcmVkLiAgU2VlIFJFQURNRS50eHQgaW4gdGhpcyBkaXJlY3Rvcnkgb3IKK2VjaG8udGhlIGRvY3VtZW50YXRpb24gZm9yIHlvdXIgdmVyc2lvbiBvZiBTcGhpbnggZm9yIG1vcmUgZXhoYXVzdGl2ZSBsaXN0cworZWNoby5vZiBhdmFpbGFibGUgdGFyZ2V0cyBhbmQgZGVzY3JpcHRpb25zIG9mIGVhY2guCitlY2hvLgorZWNoby5UaGlzIHNjcmlwdCBhc3N1bWVzIHRoYXQgdGhlIFNQSElOWEJVSUxEIGVudmlyb25tZW50IHZhcmlhYmxlIGNvbnRhaW5zCitlY2hvLmEgbGVnaXRpbWF0ZSBjb21tYW5kIGZvciBjYWxsaW5nIHNwaGlueC1idWlsZCwgb3IgdGhhdCBzcGhpbngtYnVpbGQgaXMKK2VjaG8ub24geW91ciBQQVRIIGlmIFNQSElOWEJVSUxEIGlzIG5vdCBzZXQuICBPcHRpb25zIGZvciBzcGhpbngtYnVpbGQgY2FuCitlY2hvLmJlIHBhc3NlZCBieSBzZXR0aW5nIHRoZSBTUEhJTlhPUFRTIGVudmlyb25tZW50IHZhcmlhYmxlLgorZ290byBlbmQKKworOmJ1aWxkCitpZiBub3QgZXhpc3QgIiVCVUlMRERJUiUiIG1rZGlyICIlQlVJTERESVIlIgoraWYgTk9UICIlUEFQRVIlIiA9PSAiIiAoCisgICAgc2V0IFNQSElOWE9QVFM9LUQgbGF0ZXhfZWxlbWVudHMucGFwZXJzaXplPSVQQVBFUiUgJVNQSElOWE9QVFMlCispCitjbWQgL1MgL0MgIiVTUEhJTlhCVUlMRCUgJVNQSElOWE9QVFMlIC1iJTEgLWRidWlsZFxkb2N0cmVlcyAuICIlQlVJTERESVIlXCUxIiAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOSIKKworaWYgIiUxIiBFUVUgImh0bWxoZWxwIiAoCisgICAgIiVIVE1MSEVMUCUiICIlQlVJTERESVIlXGh0bWxoZWxwXHB5dGhvbiVESVNUVkVSU0lPTjouPSUuaGhwIgorICAgIHJlbSBoaGMuZXhlIHNlZW1zIHRvIGFsd2F5cyBleGl0IHdpdGggY29kZSAxLCByZXNldCB0byAwIGZvciBsZXNzIHRoYW4gMgorICAgIGlmIG5vdCBlcnJvcmxldmVsIDIgY21kIC9DIGV4aXQgL2IgMAorKQorCitlY2hvLgoraWYgZXJyb3JsZXZlbCAxICgKKyAgICBlY2hvLkJ1aWxkIGZhaWxlZCAoZXhpdCBjb2RlICVFUlJPUkxFVkVMJV4pLCBjaGVjayBmb3IgZXJyb3IgbWVzc2FnZXMKKyAgICBlY2hvLmFib3ZlLiAgQW55IG91dHB1dCB3aWxsIGJlIGZvdW5kIGluICVCVUlMRERJUiVcJTEKKykgZWxzZSAoCisgICAgZWNoby5CdWlsZCBzdWNjZWVkZWQuIEFsbCBvdXRwdXQgc2hvdWxkIGJlIGluICVCVUlMRERJUiVcJTEKKykKK2dvdG8gZW5kCisKKzpodG1sdmlldworaWYgTk9UICIlMiIgRVFVICIiICgKKyAgICBlY2hvLkNhbid0IHNwZWNpZnkgZmlsZW5hbWVzIHRvIGJ1aWxkIHdpdGggaHRtbHZpZXcgdGFyZ2V0LCBpZ25vcmluZy4KKykKK2NtZCAvQyAldGhpcyUgaHRtbAorCitpZiBFWElTVCAiJUJVSUxERElSJVxodG1sXGluZGV4Lmh0bWwiICgKKyAgICBlY2hvLk9wZW5pbmcgIiVCVUlMRERJUiVcaHRtbFxpbmRleC5odG1sIiBpbiB0aGUgZGVmYXVsdCB3ZWIgYnJvd3Nlci4uLgorICAgIHN0YXJ0ICIiICIlQlVJTERESVIlXGh0bWxcaW5kZXguaHRtbCIKKykKKworZ290byBlbmQKKworOmNoZWNrCitjbWQgL1MgL0MgIiVQWVRIT04lIHRvb2xzXHJzdGxpbnQucHkgLWkgdG9vbHMiCitnb3RvIGVuZAorCis6c2VydmUKK2NtZCAvUyAvQyAiJVBZVEhPTiUgLi5cVG9vbHNcc2NyaXB0c1xzZXJ2ZS5weSAiJUJVSUxERElSJVxodG1sIiIKK2dvdG8gZW5kCisKKzplbmQKK3BvcGQKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvY29tcG91bmRfc3RtdHMucnN0IGIvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKaW5kZXggNjZhZTUzMC4uOTJjZTNjZCAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QKQEAgLTE4NSw3ICsxODUsNyBAQAogICAgICAgc2luZ2xlOiBtdXRhYmxlIHNlcXVlbmNlOyBsb29wIG92ZXIKIAogICAgVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGUgbG9vcCAodGhpcyBjYW4KLSAgIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gQW4gaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvCisgICBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgZS5nLiBsaXN0cykuIEFuIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0bwogICAga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCwgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaAogICAgaXRlcmF0aW9uLiAgV2hlbiB0aGlzIGNvdW50ZXIgaGFzIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AKICAgIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKaW5kZXggZGIyZmExNy4uN2JkYjE0MSAxMDA2NDQKLS0tIGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdApAQCAtMTQwOSw4ICsxNDA5LDEyIEBACiAgICBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nIDpjbGFzczpgc2V0YCwgOmNsYXNzOmBmcm96ZW5zZXRgLCBhbmQKICAgIDpjbGFzczpgZGljdGAuICA6bWV0aDpgX19oYXNoX19gIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5IHJlcXVpcmVkCiAgICBwcm9wZXJ0eSBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWU7IGl0IGlzCi0gICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2ggdmFsdWVzIGZvcgotICAgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzLgorICAgYWR2aXNlZCB0byBtaXggdG9nZXRoZXIgdGhlIGhhc2ggdmFsdWVzIG9mIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdAorICAgYWxzbyBwbGF5IGEgcGFydCBpbiBjb21wYXJpc29uIG9mIG9iamVjdHMgYnkgcGFja2luZyB0aGVtIGludG8gYSB0dXBsZSBhbmQKKyAgIGhhc2hpbmcgdGhlIHR1cGxlLiBFeGFtcGxlOjoKKworICAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKKyAgICAgICAgICAgcmV0dXJuIGhhc2goKHNlbGYubmFtZSwgc2VsZi5uaWNrLCBzZWxmLmNvbG9yKSkKIAogICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYSA6bWV0aDpgX19jbXBfX2Agb3IgOm1ldGg6YF9fZXFfX2AgbWV0aG9kIGl0CiAgICBzaG91bGQgbm90IGRlZmluZSBhIDptZXRoOmBfX2hhc2hfX2Agb3BlcmF0aW9uIGVpdGhlcjsgaWYgaXQgZGVmaW5lcwpAQCAtMTg4Nyw2ICsxODkxLDE0IEBACiAgICA6bWV0aDpgX19ub256ZXJvX19gIG1ldGhvZCBhbmQgd2hvc2UgOm1ldGg6YF9fbGVuX19gIG1ldGhvZCByZXR1cm5zIHplcm8gaXMKICAgIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuCiAKKyAgIC4uIGltcGwtZGV0YWlsOjoKKworICAgICAgSW4gQ1B5dGhvbiwgdGhlIGxlbmd0aCBpcyByZXF1aXJlZCB0byBiZSBhdCBtb3N0IDphdHRyOmBzeXMubWF4c2l6ZWAuCisgICAgICBJZiB0aGUgbGVuZ3RoIGlzIGxhcmdlciB0aGFuIDphdHRyOmAhc3lzLm1heHNpemVgIHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMKKyAgICAgIDpmdW5jOmBsZW5gKSBtYXkgcmFpc2UgOmV4YzpgT3ZlcmZsb3dFcnJvcmAuICBUbyBwcmV2ZW50IHJhaXNpbmcKKyAgICAgIDpleGM6YCFPdmVyZmxvd0Vycm9yYCBieSB0cnV0aCB2YWx1ZSB0ZXN0aW5nLCBhbiBvYmplY3QgbXVzdCBkZWZpbmUgYQorICAgICAgOm1ldGg6YF9fbm9uemVyb19fYCBtZXRob2QuCisKIAogLi4gbWV0aG9kOjogb2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSkKIApkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9leHByZXNzaW9ucy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdAppbmRleCBmMTg5ODRiLi42YWZjODY3IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2V4cHJlc3Npb25zLnJzdApAQCAtNTgxLDcgKzU4MSw3IEBACiB2YWx1ZSBpbiB0aGUgbWFwcGluZyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoYXQga2V5LiAgKFRoZSBleHByZXNzaW9uIGxpc3QgaXMgYQogdHVwbGUgZXhjZXB0IGlmIGl0IGhhcyBleGFjdGx5IG9uZSBpdGVtLikKIAotSWYgdGhlIHByaW1hcnkgaXMgYSBzZXF1ZW5jZSwgdGhlIGV4cHJlc3Npb24gKGxpc3QpIG11c3QgZXZhbHVhdGUgdG8gYSBwbGFpbgorSWYgdGhlIHByaW1hcnkgaXMgYSBzZXF1ZW5jZSwgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0IGV2YWx1YXRlIHRvIGEgcGxhaW4KIGludGVnZXIuICBJZiB0aGlzIHZhbHVlIGlzIG5lZ2F0aXZlLCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSBpcyBhZGRlZCB0byBpdAogKHNvIHRoYXQsIGUuZy4sIGBgeFstMV1gYCBzZWxlY3RzIHRoZSBsYXN0IGl0ZW0gb2YgYGB4YGAuKSAgVGhlIHJlc3VsdGluZyB2YWx1ZQogbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gdGhlIHNlcXVlbmNlLCBhbmQKQEAgLTc2Nyw3ICs3NjcsNyBAQAogICAgMiAxCiAgICA+Pj4gZihhPTEsICooMiwpKQogICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/CisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICdhJwogICAgPj4+IGYoMSwgKigyLCkpCiAgICAxIDIKQEAgLTEwNTgsMTAgKzEwNTgsNiBAQAogCiAKIC4uIF9jb21wYXJpc29uczoKLS4uIF9pczoKLS4uIF9pcyBub3Q6Ci0uLiBfaW46Ci0uLiBfbm90IGluOgogCiBDb21wYXJpc29ucwogPT09PT09PT09PT0KQEAgLTExMDEsMzkgKzEwOTcsOTggQEAKIHByZWZlcnJlZDsgd2hlcmUgYGAhPWBgIGlzIG1lbnRpb25lZCBiZWxvdyBgYDw+YGAgaXMgYWxzbyBhY2NlcHRlZC4gIFRoZSBgYDw+YGAKIHNwZWxsaW5nIGlzIGNvbnNpZGVyZWQgb2Jzb2xlc2NlbnQuCiAKK1ZhbHVlIGNvbXBhcmlzb25zCistLS0tLS0tLS0tLS0tLS0tLQorCiBUaGUgb3BlcmF0b3JzIGBgPGBgLCBgYD5gYCwgYGA9PWBgLCBgYD49YGAsIGBgPD1gYCwgYW5kIGBgIT1gYCBjb21wYXJlIHRoZQotdmFsdWVzIG9mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgbmVlZCBub3QgaGF2ZSB0aGUgc2FtZSB0eXBlLiBJZiBib3RoIGFyZQotbnVtYmVycywgdGhleSBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBPdGhlcndpc2UsIG9iamVjdHMgb2YgZGlmZmVyZW50Ci10eXBlcyAqYWx3YXlzKiBjb21wYXJlIHVuZXF1YWwsIGFuZCBhcmUgb3JkZXJlZCBjb25zaXN0ZW50bHkgYnV0IGFyYml0cmFyaWx5LgotWW91IGNhbiBjb250cm9sIGNvbXBhcmlzb24gYmVoYXZpb3Igb2Ygb2JqZWN0cyBvZiBub24tYnVpbHQtaW4gdHlwZXMgYnkgZGVmaW5pbmcKLWEgYGBfX2NtcF9fYGAgbWV0aG9kIG9yIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGxpa2UgYGBfX2d0X19gYCwgZGVzY3JpYmVkIGluCi1zZWN0aW9uIDpyZWY6YHNwZWNpYWxuYW1lc2AuCit2YWx1ZXMgb2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBkbyBub3QgbmVlZCB0byBoYXZlIHRoZSBzYW1lIHR5cGUuCisKK0NoYXB0ZXIgOnJlZjpgb2JqZWN0c2Agc3RhdGVzIHRoYXQgb2JqZWN0cyBoYXZlIGEgdmFsdWUgKGluIGFkZGl0aW9uIHRvIHR5cGUKK2FuZCBpZGVudGl0eSkuICBUaGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzIGEgcmF0aGVyIGFic3RyYWN0IG5vdGlvbiBpbiBQeXRob246CitGb3IgZXhhbXBsZSwgdGhlcmUgaXMgbm8gY2Fub25pY2FsIGFjY2VzcyBtZXRob2QgZm9yIGFuIG9iamVjdCdzIHZhbHVlLiAgQWxzbywKK3RoZXJlIGlzIG5vIHJlcXVpcmVtZW50IHRoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBzaG91bGQgYmUgY29uc3RydWN0ZWQgaW4gYQorcGFydGljdWxhciB3YXksIGUuZy4gY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9ycworaW1wbGVtZW50IGEgcGFydGljdWxhciBub3Rpb24gb2Ygd2hhdCB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzLiAgT25lIGNhbiB0aGluaworb2YgdGhlbSBhcyBkZWZpbmluZyB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGluZGlyZWN0bHksIGJ5IG1lYW5zIG9mIHRoZWlyCitjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLgorCitUeXBlcyBjYW4gY3VzdG9taXplIHRoZWlyIGNvbXBhcmlzb24gYmVoYXZpb3IgYnkgaW1wbGVtZW50aW5nCithIDptZXRoOmBfX2NtcF9fYCBtZXRob2Qgb3IKKzpkZm46YHJpY2ggY29tcGFyaXNvbiBtZXRob2RzYCBsaWtlIDptZXRoOmBfX2x0X19gLCBkZXNjcmliZWQgaW4KKzpyZWY6YGN1c3RvbWl6YXRpb25gLgorCitUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgZXF1YWxpdHkgY29tcGFyaXNvbiAoYGA9PWBgIGFuZCBgYCE9YGApIGlzIGJhc2VkIG9uCit0aGUgaWRlbnRpdHkgb2YgdGhlIG9iamVjdHMuICBIZW5jZSwgZXF1YWxpdHkgY29tcGFyaXNvbiBvZiBpbnN0YW5jZXMgd2l0aCB0aGUKK3NhbWUgaWRlbnRpdHkgcmVzdWx0cyBpbiBlcXVhbGl0eSwgYW5kIGVxdWFsaXR5IGNvbXBhcmlzb24gb2YgaW5zdGFuY2VzIHdpdGgKK2RpZmZlcmVudCBpZGVudGl0aWVzIHJlc3VsdHMgaW4gaW5lcXVhbGl0eS4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0CitiZWhhdmlvciBpcyB0aGUgZGVzaXJlIHRoYXQgYWxsIG9iamVjdHMgc2hvdWxkIGJlIHJlZmxleGl2ZSAoaS5lLiBgYHggaXMgeWBgCitpbXBsaWVzIGBgeCA9PSB5YGApLgorCitUaGUgZGVmYXVsdCBvcmRlciBjb21wYXJpc29uIChgYDxgYCwgYGA+YGAsIGBgPD1gYCwgYW5kIGBgPj1gYCkgZ2l2ZXMgYQorY29uc2lzdGVudCBidXQgYXJiaXRyYXJ5IG9yZGVyLgogCiAoVGhpcyB1bnVzdWFsIGRlZmluaXRpb24gb2YgY29tcGFyaXNvbiB3YXMgdXNlZCB0byBzaW1wbGlmeSB0aGUgZGVmaW5pdGlvbiBvZgogb3BlcmF0aW9ucyBsaWtlIHNvcnRpbmcgYW5kIHRoZSA6a2V5d29yZDpgaW5gIGFuZCA6a2V5d29yZDpgbm90IGluYCBvcGVyYXRvcnMuCiBJbiB0aGUgZnV0dXJlLCB0aGUgY29tcGFyaXNvbiBydWxlcyBmb3Igb2JqZWN0cyBvZiBkaWZmZXJlbnQgdHlwZXMgYXJlIGxpa2VseSB0bwogY2hhbmdlLikKIAotQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUgZGVwZW5kcyBvbiB0aGUgdHlwZToKK1RoZSBiZWhhdmlvciBvZiB0aGUgZGVmYXVsdCBlcXVhbGl0eSBjb21wYXJpc29uLCB0aGF0IGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudAoraWRlbnRpdGllcyBhcmUgYWx3YXlzIHVuZXF1YWwsIG1heSBiZSBpbiBjb250cmFzdCB0byB3aGF0IHR5cGVzIHdpbGwgbmVlZCB0aGF0CitoYXZlIGEgc2Vuc2libGUgZGVmaW5pdGlvbiBvZiBvYmplY3QgdmFsdWUgYW5kIHZhbHVlLWJhc2VkIGVxdWFsaXR5LiAgU3VjaAordHlwZXMgd2lsbCBuZWVkIHRvIGN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yLCBhbmQgaW4gZmFjdCwgYSBudW1iZXIKK29mIGJ1aWx0LWluIHR5cGVzIGhhdmUgZG9uZSB0aGF0LgogCi0qIE51bWJlcnMgYXJlIGNvbXBhcmVkIGFyaXRobWV0aWNhbGx5LgorVGhlIGZvbGxvd2luZyBsaXN0IGRlc2NyaWJlcyB0aGUgY29tcGFyaXNvbiBiZWhhdmlvciBvZiB0aGUgbW9zdCBpbXBvcnRhbnQKK2J1aWx0LWluIHR5cGVzLgogCi0qIFN0cmluZ3MgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIGVxdWl2YWxlbnRzICh0aGUKLSAgcmVzdWx0IG9mIHRoZSBidWlsdC1pbiBmdW5jdGlvbiA6ZnVuYzpgb3JkYCkgb2YgdGhlaXIgY2hhcmFjdGVycy4gIFVuaWNvZGUgYW5kCi0gIDgtYml0IHN0cmluZ3MgYXJlIGZ1bGx5IGludGVyb3BlcmFibGUgaW4gdGhpcyBiZWhhdmlvci4gWyNdXworKiBOdW1iZXJzIG9mIGJ1aWx0LWluIG51bWVyaWMgdHlwZXMgKDpyZWY6YHR5cGVzbnVtZXJpY2ApIGFuZCBvZiB0aGUgc3RhbmRhcmQKKyAgbGlicmFyeSB0eXBlcyA6Y2xhc3M6YGZyYWN0aW9ucy5GcmFjdGlvbmAgYW5kIDpjbGFzczpgZGVjaW1hbC5EZWNpbWFsYCBjYW4gYmUKKyAgY29tcGFyZWQgd2l0aGluIGFuZCBhY3Jvc3MgdGhlaXIgdHlwZXMsIHdpdGggdGhlIHJlc3RyaWN0aW9uIHRoYXQgY29tcGxleAorICBudW1iZXJzIGRvIG5vdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24uICBXaXRoaW4gdGhlIGxpbWl0cyBvZiB0aGUgdHlwZXMKKyAgaW52b2x2ZWQsIHRoZXkgY29tcGFyZSBtYXRoZW1hdGljYWxseSAoYWxnb3JpdGhtaWNhbGx5KSBjb3JyZWN0IHdpdGhvdXQgbG9zcworICBvZiBwcmVjaXNpb24uCiAKLSogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZgotICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2ggZWxlbWVudCBtdXN0Ci0gIGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZQotICBsZW5ndGguCisqIFN0cmluZ3MgKGluc3RhbmNlcyBvZiA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmB1bmljb2RlYCkKKyAgY29tcGFyZSBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpYyBlcXVpdmFsZW50cyAodGhlCisgIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YG9yZGApIG9mIHRoZWlyIGNoYXJhY3RlcnMuIFsjXV8KKyAgV2hlbiBjb21wYXJpbmcgYW4gOC1iaXQgc3RyaW5nIGFuZCBhIFVuaWNvZGUgc3RyaW5nLCB0aGUgOC1iaXQgc3RyaW5nCisgIGlzIGNvbnZlcnRlZCB0byBVbmljb2RlLiAgSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSBzdHJpbmdzCisgIGFyZSBjb25zaWRlcmVkIHVuZXF1YWwuCiAKLSAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0IGRpZmZlcmluZwotICBlbGVtZW50cy4gIEZvciBleGFtcGxlLCBgYGNtcChbMSwyLHhdLCBbMSwyLHldKWBgIHJldHVybnMgdGhlIHNhbWUgYXMKLSAgYGBjbXAoeCx5KWBgLiAgSWYgdGhlIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdCBleGlzdCwgdGhlIHNob3J0ZXIgc2VxdWVuY2UKLSAgaXMgb3JkZXJlZCBmaXJzdCAoZm9yIGV4YW1wbGUsIGBgWzEsMl0gPCBbMSwyLDNdYGApLgorKiBJbnN0YW5jZXMgb2YgOmNsYXNzOmB0dXBsZWAgb3IgOmNsYXNzOmBsaXN0YCBjYW4gYmUgY29tcGFyZWQgb25seQorICB3aXRoaW4gZWFjaCBvZiB0aGVpciB0eXBlcy4gIEVxdWFsaXR5IGNvbXBhcmlzb24gYWNyb3NzIHRoZXNlIHR5cGVzCisgIHJlc3VsdHMgaW4gdW5lcXVhbGl0eSwgYW5kIG9yZGVyaW5nIGNvbXBhcmlzb24gYWNyb3NzIHRoZXNlIHR5cGVzCisgIGdpdmVzIGFuIGFyYml0cmFyeSBvcmRlci4KIAotKiBNYXBwaW5ncyAoZGljdGlvbmFyaWVzKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZWlyIHNvcnRlZCAoa2V5LCB2YWx1ZSkKLSAgbGlzdHMgY29tcGFyZSBlcXVhbC4gWyNdXyBPdXRjb21lcyBvdGhlciB0aGFuIGVxdWFsaXR5IGFyZSByZXNvbHZlZAorICBUaGVzZSBzZXF1ZW5jZXMgY29tcGFyZSBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uIG9mIGNvcnJlc3BvbmRpbmcKKyAgZWxlbWVudHMsIHdoZXJlYnkgcmVmbGV4aXZpdHkgb2YgdGhlIGVsZW1lbnRzIGlzIGVuZm9yY2VkLgorCisgIEluIGVuZm9yY2luZyByZWZsZXhpdml0eSBvZiBlbGVtZW50cywgdGhlIGNvbXBhcmlzb24gb2YgY29sbGVjdGlvbnMgYXNzdW1lcworICB0aGF0IGZvciBhIGNvbGxlY3Rpb24gZWxlbWVudCBgYHhgYCwgYGB4ID09IHhgYCBpcyBhbHdheXMgdHJ1ZS4gIEJhc2VkIG9uCisgIHRoYXQgYXNzdW1wdGlvbiwgZWxlbWVudCBpZGVudGl0eSBpcyBjb21wYXJlZCBmaXJzdCwgYW5kIGVsZW1lbnQgY29tcGFyaXNvbgorICBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgZWxlbWVudHMuICBUaGlzIGFwcHJvYWNoIHlpZWxkcyB0aGUgc2FtZQorICByZXN1bHQgYXMgYSBzdHJpY3QgZWxlbWVudCBjb21wYXJpc29uIHdvdWxkLCBpZiB0aGUgY29tcGFyZWQgZWxlbWVudHMgYXJlCisgIHJlZmxleGl2ZS4gIEZvciBub24tcmVmbGV4aXZlIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvcgorICBzdHJpY3QgZWxlbWVudCBjb21wYXJpc29uLgorCisgIExleGljb2dyYXBoaWNhbCBjb21wYXJpc29uIGJldHdlZW4gYnVpbHQtaW4gY29sbGVjdGlvbnMgd29ya3MgYXMgZm9sbG93czoKKworICAtIEZvciB0d28gY29sbGVjdGlvbnMgdG8gY29tcGFyZSBlcXVhbCwgdGhleSBtdXN0IGJlIG9mIHRoZSBzYW1lIHR5cGUsIGhhdmUKKyAgICB0aGUgc2FtZSBsZW5ndGgsIGFuZCBlYWNoIHBhaXIgb2YgY29ycmVzcG9uZGluZyBlbGVtZW50cyBtdXN0IGNvbXBhcmUKKyAgICBlcXVhbCAoZm9yIGV4YW1wbGUsIGBgWzEsMl0gPT0gKDEsMilgYCBpcyBmYWxzZSBiZWNhdXNlIHRoZSB0eXBlIGlzIG5vdCB0aGUKKyAgICBzYW1lKS4KKworICAtIENvbGxlY3Rpb25zIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyCisgICAgZmlyc3QgdW5lcXVhbCBlbGVtZW50cyAoZm9yIGV4YW1wbGUsIGBgY21wKFsxLDIseF0sIFsxLDIseV0pYGAgcmV0dXJucyB0aGUKKyAgICBzYW1lIGFzIGBgY21wKHgseSlgYCkuICBJZiBhIGNvcnJlc3BvbmRpbmcgZWxlbWVudCBkb2VzIG5vdCBleGlzdCwgdGhlCisgICAgc2hvcnRlciBjb2xsZWN0aW9uIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCBgYFsxLDJdIDwgWzEsMiwzXWBgIGlzCisgICAgdHJ1ZSkuCisKKyogTWFwcGluZ3MgKGluc3RhbmNlcyBvZiA6Y2xhc3M6YGRpY3RgKSBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZQorICBlcXVhbCBgKGtleSwgdmFsdWUpYCBwYWlycy4gRXF1YWxpdHkgY29tcGFyaXNvbiBvZiB0aGUga2V5cyBhbmQgdmFsdWVzCisgIGVuZm9yY2VzIHJlZmxleGl2aXR5LgorCisgIE91dGNvbWVzIG90aGVyIHRoYW4gZXF1YWxpdHkgYXJlIHJlc29sdmVkCiAgIGNvbnNpc3RlbnRseSwgYnV0IGFyZSBub3Qgb3RoZXJ3aXNlIGRlZmluZWQuIFsjXV8KIAogKiBNb3N0IG90aGVyIG9iamVjdHMgb2YgYnVpbHQtaW4gdHlwZXMgY29tcGFyZSB1bmVxdWFsIHVubGVzcyB0aGV5IGFyZSB0aGUgc2FtZQpAQCAtMTE0MSwzOSArMTE5Niw4MyBAQAogICBhbm90aGVyIG9uZSBpcyBtYWRlIGFyYml0cmFyaWx5IGJ1dCBjb25zaXN0ZW50bHkgd2l0aGluIG9uZSBleGVjdXRpb24gb2YgYQogICBwcm9ncmFtLgogCitVc2VyLWRlZmluZWQgY2xhc3NlcyB0aGF0IGN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yIHNob3VsZCBmb2xsb3cKK3NvbWUgY29uc2lzdGVuY3kgcnVsZXMsIGlmIHBvc3NpYmxlOgorCisqIEVxdWFsaXR5IGNvbXBhcmlzb24gc2hvdWxkIGJlIHJlZmxleGl2ZS4KKyAgSW4gb3RoZXIgd29yZHMsIGlkZW50aWNhbCBvYmplY3RzIHNob3VsZCBjb21wYXJlIGVxdWFsOgorCisgICAgYGB4IGlzIHlgYCBpbXBsaWVzIGBgeCA9PSB5YGAKKworKiBDb21wYXJpc29uIHNob3VsZCBiZSBzeW1tZXRyaWMuCisgIEluIG90aGVyIHdvcmRzLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDoKKworICAgIGBgeCA9PSB5YGAgYW5kIGBgeSA9PSB4YGAKKworICAgIGBgeCAhPSB5YGAgYW5kIGBgeSAhPSB4YGAKKworICAgIGBgeCA8IHlgYCBhbmQgYGB5ID4geGBgCisKKyAgICBgYHggPD0geWBgIGFuZCBgYHkgPj0geGBgCisKKyogQ29tcGFyaXNvbiBzaG91bGQgYmUgdHJhbnNpdGl2ZS4KKyAgVGhlIGZvbGxvd2luZyAobm9uLWV4aGF1c3RpdmUpIGV4YW1wbGVzIGlsbHVzdHJhdGUgdGhhdDoKKworICAgIGBgeCA+IHkgYW5kIHkgPiB6YGAgaW1wbGllcyBgYHggPiB6YGAKKworICAgIGBgeCA8IHkgYW5kIHkgPD0gemBgIGltcGxpZXMgYGB4IDwgemBgCisKKyogSW52ZXJzZSBjb21wYXJpc29uIHNob3VsZCByZXN1bHQgaW4gdGhlIGJvb2xlYW4gbmVnYXRpb24uCisgIEluIG90aGVyIHdvcmRzLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDoKKworICAgIGBgeCA9PSB5YGAgYW5kIGBgbm90IHggIT0geWBgCisKKyAgICBgYHggPCB5YGAgYW5kIGBgbm90IHggPj0geWBgIChmb3IgdG90YWwgb3JkZXJpbmcpCisKKyAgICBgYHggPiB5YGAgYW5kIGBgbm90IHggPD0geWBgIChmb3IgdG90YWwgb3JkZXJpbmcpCisKKyAgVGhlIGxhc3QgdHdvIGV4cHJlc3Npb25zIGFwcGx5IHRvIHRvdGFsbHkgb3JkZXJlZCBjb2xsZWN0aW9ucyAoZS5nLiB0bworICBzZXF1ZW5jZXMsIGJ1dCBub3QgdG8gc2V0cyBvciBtYXBwaW5ncykuIFNlZSBhbHNvIHRoZQorICA6ZnVuYzpgfmZ1bmN0b29scy50b3RhbF9vcmRlcmluZ2AgZGVjb3JhdG9yLgorCisqIFRoZSA6ZnVuYzpgaGFzaGAgcmVzdWx0IHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggZXF1YWxpdHkuCisgIE9iamVjdHMgdGhhdCBhcmUgZXF1YWwgc2hvdWxkIGVpdGhlciBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWUsCisgIG9yIGJlIG1hcmtlZCBhcyB1bmhhc2hhYmxlLgorCitQeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy4KKworCisuLiBfaW46CisuLiBfbm90IGluOgogLi4gX21lbWJlcnNoaXAtdGVzdC1kZXRhaWxzOgogCi1UaGUgb3BlcmF0b3JzIDprZXl3b3JkOmBpbmAgYW5kIDprZXl3b3JkOmBub3QgaW5gIHRlc3QgZm9yIGNvbGxlY3Rpb24KLW1lbWJlcnNoaXAuICBgYHggaW4gc2BgIGV2YWx1YXRlcyB0byB0cnVlIGlmICp4KiBpcyBhIG1lbWJlciBvZiB0aGUgY29sbGVjdGlvbgotKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgYGB4IG5vdCBpbiBzYGAgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgYGB4IGluIHNgYC4KLVRoZSBjb2xsZWN0aW9uIG1lbWJlcnNoaXAgdGVzdCBoYXMgdHJhZGl0aW9uYWxseSBiZWVuIGJvdW5kIHRvIHNlcXVlbmNlczsgYW4KLW9iamVjdCBpcyBhIG1lbWJlciBvZiBhIGNvbGxlY3Rpb24gaWYgdGhlIGNvbGxlY3Rpb24gaXMgYSBzZXF1ZW5jZSBhbmQgY29udGFpbnMKLWFuIGVsZW1lbnQgZXF1YWwgdG8gdGhhdCBvYmplY3QuICBIb3dldmVyLCBpdCBtYWtlIHNlbnNlIGZvciBtYW55IG90aGVyIG9iamVjdAotdHlwZXMgdG8gc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzIHdpdGhvdXQgYmVpbmcgYSBzZXF1ZW5jZS4gIEluIHBhcnRpY3VsYXIsCi1kaWN0aW9uYXJpZXMgKGZvciBrZXlzKSBhbmQgc2V0cyBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdGluZy4KK01lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1Gb3IgdGhlIGxpc3QgYW5kIHR1cGxlIHR5cGVzLCBgYHggaW4geWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgZXhpc3RzIGFuCi1pbmRleCAqaSogc3VjaCB0aGF0IGVpdGhlciBgYHggaXMgeVtpXWBgIG9yIGBgeCA9PSB5W2ldYGAgaXMgdHJ1ZS4KK1RoZSBvcGVyYXRvcnMgOmtleXdvcmQ6YGluYCBhbmQgOmtleXdvcmQ6YG5vdCBpbmAgdGVzdCBmb3IgbWVtYmVyc2hpcC4gIGBgeCBpbgorc2BgIGV2YWx1YXRlcyB0byBgYFRydWVgYCBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgYGBGYWxzZWBgIG90aGVyd2lzZS4KK2BgeCBub3QgaW4gc2BgIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mIGBgeCBpbiBzYGAuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzIGFuZAorc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCA6a2V5d29yZDpgaW5gIHRlc3RzCit3aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzIGxpc3QsIHR1cGxlLAorc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGUgZXhwcmVzc2lvbiBgYHggaW4geWBgIGlzIGVxdWl2YWxlbnQKK3RvIGBgYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW4geSlgYC4KIAotRm9yIHRoZSBVbmljb2RlIGFuZCBzdHJpbmcgdHlwZXMsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogaXMgYQotc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyBgYHkuZmluZCh4KSAhPSAtMWBgLiAgTm90ZSwgKngqIGFuZCAqeSoKLW5lZWQgbm90IGJlIHRoZSBzYW1lIHR5cGU7IGNvbnNlcXVlbnRseSwgYGB1J2FiJyBpbiAnYWJjJ2BgIHdpbGwgcmV0dXJuCi1gYFRydWVgYC4gRW1wdHkgc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyCi1zdHJpbmcsIHNvIGBgIiIgaW4gImFiYyJgYCB3aWxsIHJldHVybiBgYFRydWVgYC4KLQotLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjMKLSAgIFByZXZpb3VzbHksICp4KiB3YXMgcmVxdWlyZWQgdG8gYmUgYSBzdHJpbmcgb2YgbGVuZ3RoIGBgMWBgLgorRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCBgYHggaW4geWBgIGlzIGBgVHJ1ZWBgIGlmIGFuZCBvbmx5IGlmICp4KiBpcyBhCitzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzIGBgeS5maW5kKHgpICE9IC0xYGAuICBFbXB0eSBzdHJpbmdzIGFyZQorYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyIHN0cmluZywgc28gYGAiIiBpbiAiYWJjImBgIHdpbGwKK3JldHVybiBgYFRydWVgYC4KIAogRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgOm1ldGg6YF9fY29udGFpbnNfX2AgbWV0aG9kLCBgYHggaW4KLXlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIGBgeS5fX2NvbnRhaW5zX18oeClgYCBpcyB0cnVlLgoreWBgIHJldHVybnMgYGBUcnVlYGAgaWYgYGB5Ll9fY29udGFpbnNfXyh4KWBgIHJldHVybnMgYSB0cnVlIHZhbHVlLCBhbmQKK2BgRmFsc2VgYCBvdGhlcndpc2UuCiAKIEZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lIDptZXRoOmBfX2NvbnRhaW5zX19gIGJ1dCBkbyBkZWZpbmUKLTptZXRoOmBfX2l0ZXJfX2AsIGBgeCBpbiB5YGAgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlIGBgemBgIHdpdGggYGB4ID09IHpgYCBpcworOm1ldGg6YF9faXRlcl9fYCwgYGB4IGluIHlgYCBpcyBgYFRydWVgYCBpZiBzb21lIHZhbHVlIGBgemBgIHdpdGggYGB4ID09IHpgYCBpcwogcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgYGB5YGAuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIGR1cmluZyB0aGUKIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgOmtleXdvcmQ6YGluYCByYWlzZWQgdGhhdCBleGNlcHRpb24uCiAKIExhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lcwotOm1ldGg6YF9fZ2V0aXRlbV9fYCwgYGB4IGluIHlgYCBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLW5lZ2F0aXZlCis6bWV0aDpgX19nZXRpdGVtX19gLCBgYHggaW4geWBgIGlzIGBgVHJ1ZWBgIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLW5lZ2F0aXZlCiBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgYGB4ID09IHlbaV1gYCwgYW5kIGFsbCBsb3dlciBpbnRlZ2VyIGluZGljZXMgZG8gbm90CiByYWlzZSA6ZXhjOmBJbmRleEVycm9yYCBleGNlcHRpb24uIChJZiBhbnkgb3RoZXIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMKIGlmIDprZXl3b3JkOmBpbmAgcmFpc2VkIHRoYXQgZXhjZXB0aW9uKS4KQEAgLTExOTIsNiArMTI5MSwxMyBAQAogICAgb3BlcmF0b3I6IGlzIG5vdAogICAgcGFpcjogaWRlbnRpdHk7IHRlc3QKIAorCisuLiBfaXM6CisuLiBfaXMgbm90OgorCitJZGVudGl0eSBjb21wYXJpc29ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogVGhlIG9wZXJhdG9ycyA6a2V5d29yZDpgaXNgIGFuZCA6a2V5d29yZDpgaXMgbm90YCB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6IGBgeAogaXMgeWBgIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGFuZCAqeSogYXJlIHRoZSBzYW1lIG9iamVjdC4gIGBgeCBpcyBub3QgeWBgCiB5aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFsjXV8KQEAgLTEyODQsMTAgKzEzOTAsMTAgQEAKIAogTGFtYmRhIGV4cHJlc3Npb25zIChzb21ldGltZXMgY2FsbGVkIGxhbWJkYSBmb3JtcykgaGF2ZSB0aGUgc2FtZSBzeW50YWN0aWMgcG9zaXRpb24gYXMKIGV4cHJlc3Npb25zLiAgVGhleSBhcmUgYSBzaG9ydGhhbmQgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnM7IHRoZSBleHByZXNzaW9uCi1gYGxhbWJkYSBhcmd1bWVudHM6IGV4cHJlc3Npb25gYCB5aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QKK2BgbGFtYmRhIHBhcmFtZXRlcnM6IGV4cHJlc3Npb25gYCB5aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QKIGJlaGF2ZXMgbGlrZSBhIGZ1bmN0aW9uIG9iamVjdCBkZWZpbmVkIHdpdGggOjoKIAotICAgZGVmIG5hbWUoYXJndW1lbnRzKToKKyAgIGRlZiA8bGFtYmRhPihwYXJhbWV0ZXJzKToKICAgICAgICByZXR1cm4gZXhwcmVzc2lvbgogCiBTZWUgc2VjdGlvbiA6cmVmOmBmdW5jdGlvbmAgZm9yIHRoZSBzeW50YXggb2YgcGFyYW1ldGVyIGxpc3RzLiAgTm90ZSB0aGF0CkBAIC0xNDE4LDE1ICsxNTI0LDI0IEBACiAgICBjYXNlcywgUHl0aG9uIHJldHVybnMgdGhlIGxhdHRlciByZXN1bHQsIGluIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQKICAgIGBgZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHlgYCBiZSB2ZXJ5IGNsb3NlIHRvIGBgeGBgLgogCi0uLiBbI10gV2hpbGUgY29tcGFyaXNvbnMgYmV0d2VlbiB1bmljb2RlIHN0cmluZ3MgbWFrZSBzZW5zZSBhdCB0aGUgYnl0ZQotICAgbGV2ZWwsIHRoZXkgbWF5IGJlIGNvdW50ZXItaW50dWl0aXZlIHRvIHVzZXJzLiBGb3IgZXhhbXBsZSwgdGhlCi0gICBzdHJpbmdzIGBgdSJcdTAwQzciYGAgYW5kIGBgdSJcdTAwNDNcdTAzMjciYGAgY29tcGFyZSBkaWZmZXJlbnRseSwKLSAgIGV2ZW4gdGhvdWdoIHRoZXkgYm90aCByZXByZXNlbnQgdGhlIHNhbWUgdW5pY29kZSBjaGFyYWN0ZXIgKExBVElOCi0gICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSkuIFRvIGNvbXBhcmUgc3RyaW5ncyBpbiBhIGh1bWFuCi0gICByZWNvZ25pemFibGUgd2F5LCBjb21wYXJlIHVzaW5nIDpmdW5jOmB1bmljb2RlZGF0YS5ub3JtYWxpemVgLgorLi4gWyNdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiA6ZGZuOmBjb2RlIHBvaW50c2AKKyAgIChlLmcuIFUrMDA0MSkgYW5kIDpkZm46YGFic3RyYWN0IGNoYXJhY3RlcnNgIChlLmcuICJMQVRJTiBDQVBJVEFMIExFVFRFUiBBIikuCisgICBXaGlsZSBtb3N0IGFic3RyYWN0IGNoYXJhY3RlcnMgaW4gVW5pY29kZSBhcmUgb25seSByZXByZXNlbnRlZCB1c2luZyBvbmUKKyAgIGNvZGUgcG9pbnQsIHRoZXJlIGlzIGEgbnVtYmVyIG9mIGFic3RyYWN0IGNoYXJhY3RlcnMgdGhhdCBjYW4gaW4gYWRkaXRpb24gYmUKKyAgIHJlcHJlc2VudGVkIHVzaW5nIGEgc2VxdWVuY2Ugb2YgbW9yZSB0aGFuIG9uZSBjb2RlIHBvaW50LiAgRm9yIGV4YW1wbGUsIHRoZQorICAgYWJzdHJhY3QgY2hhcmFjdGVyICJMQVRJTiBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkCisgICBhcyBhIHNpbmdsZSA6ZGZuOmBwcmVjb21wb3NlZCBjaGFyYWN0ZXJgIGF0IGNvZGUgcG9zaXRpb24gVSswMEM3LCBvciBhcyBhCisgICBzZXF1ZW5jZSBvZiBhIDpkZm46YGJhc2UgY2hhcmFjdGVyYCBhdCBjb2RlIHBvc2l0aW9uIFUrMDA0MyAoTEFUSU4gQ0FQSVRBTAorICAgTEVUVEVSIEMpLCBmb2xsb3dlZCBieSBhIDpkZm46YGNvbWJpbmluZyBjaGFyYWN0ZXJgIGF0IGNvZGUgcG9zaXRpb24gVSswMzI3CisgICAoQ09NQklOSU5HIENFRElMTEEpLgogCi0uLiBbI10gVGhlIGltcGxlbWVudGF0aW9uIGNvbXB1dGVzIHRoaXMgZWZmaWNpZW50bHksIHdpdGhvdXQgY29uc3RydWN0aW5nIGxpc3RzIG9yCi0gICBzb3J0aW5nLgorICAgVGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzIG9uIHVuaWNvZGUgc3RyaW5ncyBjb21wYXJlIGF0IHRoZSBsZXZlbCBvZiBVbmljb2RlIGNvZGUKKyAgIHBvaW50cy4gVGhpcyBtYXkgYmUgY291bnRlci1pbnR1aXRpdmUgdG8gaHVtYW5zLiAgRm9yIGV4YW1wbGUsCisgICBgYHUiXHUwMEM3IiA9PSB1Ilx1MDA0M1x1MDMyNyJgYCBpcyBgYEZhbHNlYGAsIGV2ZW4gdGhvdWdoIGJvdGggc3RyaW5ncworICAgcmVwcmVzZW50IHRoZSBzYW1lIGFic3RyYWN0IGNoYXJhY3RlciAiTEFUSU4gQ0FQSVRBTCBMRVRURVIgQyBXSVRIIENFRElMTEEiLgorCisgICBUbyBjb21wYXJlIHN0cmluZ3MgYXQgdGhlIGxldmVsIG9mIGFic3RyYWN0IGNoYXJhY3RlcnMgKHRoYXQgaXMsIGluIGEgd2F5CisgICBpbnR1aXRpdmUgdG8gaHVtYW5zKSwgdXNlIDpmdW5jOmB1bmljb2RlZGF0YS5ub3JtYWxpemVgLgogCiAuLiBbI10gRWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24gdXNlZCBsZXhpY29ncmFwaGljIGNvbXBhcmlzb24gb2YgdGhlIHNvcnRlZCAoa2V5LAogICAgdmFsdWUpIGxpc3RzLCBidXQgdGhpcyB3YXMgdmVyeSBleHBlbnNpdmUgZm9yIHRoZSBjb21tb24gY2FzZSBvZiBjb21wYXJpbmcgZm9yCmRpZmYgLS1naXQgYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0IGIvRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdAppbmRleCA5ZjY5ZWY3Li40MzVkZmM1IDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMucnN0CisrKyBiL0RvYy9yZWZlcmVuY2UvbGV4aWNhbF9hbmFseXNpcy5yc3QKQEAgLTczLDExICs3MywxMiBAQAogLS0tLS0tLS0tLS0tLS0KIAogQSBwaHlzaWNhbCBsaW5lIGlzIGEgc2VxdWVuY2Ugb2YgY2hhcmFjdGVycyB0ZXJtaW5hdGVkIGJ5IGFuIGVuZC1vZi1saW5lCi1zZXF1ZW5jZS4gIEluIHNvdXJjZSBmaWxlcywgYW55IG9mIHRoZSBzdGFuZGFyZCBwbGF0Zm9ybSBsaW5lIHRlcm1pbmF0aW9uCi1zZXF1ZW5jZXMgY2FuIGJlIHVzZWQgLSB0aGUgVW5peCBmb3JtIHVzaW5nIEFTQ0lJIExGIChsaW5lZmVlZCksIHRoZSBXaW5kb3dzCi1mb3JtIHVzaW5nIHRoZSBBU0NJSSBzZXF1ZW5jZSBDUiBMRiAocmV0dXJuIGZvbGxvd2VkIGJ5IGxpbmVmZWVkKSwgb3IgdGhlIG9sZAotTWFjaW50b3NoIGZvcm0gdXNpbmcgdGhlIEFTQ0lJIENSIChyZXR1cm4pIGNoYXJhY3Rlci4gIEFsbCBvZiB0aGVzZSBmb3JtcyBjYW4gYmUKLXVzZWQgZXF1YWxseSwgcmVnYXJkbGVzcyBvZiBwbGF0Zm9ybS4KK3NlcXVlbmNlLiAgSW4gc291cmNlIGZpbGVzIGFuZCBzdHJpbmdzLCBhbnkgb2YgdGhlIHN0YW5kYXJkIHBsYXRmb3JtIGxpbmUKK3Rlcm1pbmF0aW9uIHNlcXVlbmNlcyBjYW4gYmUgdXNlZCAtIHRoZSBVbml4IGZvcm0gdXNpbmcgQVNDSUkgTEYgKGxpbmVmZWVkKSwKK3RoZSBXaW5kb3dzIGZvcm0gdXNpbmcgdGhlIEFTQ0lJIHNlcXVlbmNlIENSIExGIChyZXR1cm4gZm9sbG93ZWQgYnkgbGluZWZlZWQpLAorb3IgdGhlIG9sZCBNYWNpbnRvc2ggZm9ybSB1c2luZyB0aGUgQVNDSUkgQ1IgKHJldHVybikgY2hhcmFjdGVyLiAgQWxsIG9mIHRoZXNlCitmb3JtcyBjYW4gYmUgdXNlZCBlcXVhbGx5LCByZWdhcmRsZXNzIG9mIHBsYXRmb3JtLiBUaGUgZW5kIG9mIGlucHV0IGFsc28gc2VydmVzCithcyBhbiBpbXBsaWNpdCB0ZXJtaW5hdG9yIGZvciB0aGUgZmluYWwgcGh5c2ljYWwgbGluZS4KIAogV2hlbiBlbWJlZGRpbmcgUHl0aG9uLCBzb3VyY2UgY29kZSBzdHJpbmdzIHNob3VsZCBiZSBwYXNzZWQgdG8gUHl0aG9uIEFQSXMgdXNpbmcKIHRoZSBzdGFuZGFyZCBDIGNvbnZlbnRpb25zIGZvciBuZXdsaW5lIGNoYXJhY3RlcnMgKHRoZSBgYFxuYGAgY2hhcmFjdGVyLApkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0IGIvRG9jL3JlZmVyZW5jZS9zaW1wbGVfc3RtdHMucnN0CmluZGV4IDg0OGJiOWUuLjQzOTM1ZGEgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2Uvc2ltcGxlX3N0bXRzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL3NpbXBsZV9zdG10cy5yc3QKQEAgLTk3Miw3ICs5NzIsNyBAQAogICAgYnVpbHRpbjogZXhlY2ZpbGUKICAgIGJ1aWx0aW46IGNvbXBpbGUKIAotKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiB0aGUgOmtleXdvcmQ6YGdsb2JhbGAgaXMgYSBkaXJlY3RpdmUgdG8gdGhlIHBhcnNlci4gIEl0CisqKlByb2dyYW1tZXIncyBub3RlOioqIDprZXl3b3JkOmBnbG9iYWxgIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBwYXJzZXIuICBJdAogYXBwbGllcyBvbmx5IHRvIGNvZGUgcGFyc2VkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlIDprZXl3b3JkOmBnbG9iYWxgIHN0YXRlbWVudC4KIEluIHBhcnRpY3VsYXIsIGEgOmtleXdvcmQ6YGdsb2JhbGAgc3RhdGVtZW50IGNvbnRhaW5lZCBpbiBhbiA6a2V5d29yZDpgZXhlY2AKIHN0YXRlbWVudCBkb2VzIG5vdCBhZmZlY3QgdGhlIGNvZGUgYmxvY2sgKmNvbnRhaW5pbmcqIHRoZSA6a2V5d29yZDpgZXhlY2AKZGlmZiAtLWdpdCBhL0RvYy9yZWZlcmVuY2UvdG9wbGV2ZWxfY29tcG9uZW50cy5yc3QgYi9Eb2MvcmVmZXJlbmNlL3RvcGxldmVsX2NvbXBvbmVudHMucnN0CmluZGV4IDMwNGFiYWMuLjQ0MTk2ZjcgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvdG9wbGV2ZWxfY29tcG9uZW50cy5yc3QKKysrIGIvRG9jL3JlZmVyZW5jZS90b3BsZXZlbF9jb21wb25lbnRzLnJzdApAQCAtNTEsMTEgKzUxLDExIEBACiAgICBzaW5nbGU6IGNvbW1hbmQgbGluZQogICAgc2luZ2xlOiBzdGFuZGFyZCBpbnB1dAogCi1VbmRlciBVbml4LCBhIGNvbXBsZXRlIHByb2dyYW0gY2FuIGJlIHBhc3NlZCB0byB0aGUgaW50ZXJwcmV0ZXIgaW4gdGhyZWUgZm9ybXM6Ci13aXRoIHRoZSA6b3B0aW9uOmAtY2AgKnN0cmluZyogY29tbWFuZCBsaW5lIG9wdGlvbiwgYXMgYSBmaWxlIHBhc3NlZCBhcyB0aGUKLWZpcnN0IGNvbW1hbmQgbGluZSBhcmd1bWVudCwgb3IgYXMgc3RhbmRhcmQgaW5wdXQuIElmIHRoZSBmaWxlIG9yIHN0YW5kYXJkIGlucHV0Ci1pcyBhIHR0eSBkZXZpY2UsIHRoZSBpbnRlcnByZXRlciBlbnRlcnMgaW50ZXJhY3RpdmUgbW9kZTsgb3RoZXJ3aXNlLCBpdCBleGVjdXRlcwotdGhlIGZpbGUgYXMgYSBjb21wbGV0ZSBwcm9ncmFtLgorQSBjb21wbGV0ZSBwcm9ncmFtIGNhbiBiZSBwYXNzZWQgdG8gdGhlIGludGVycHJldGVyCitpbiB0aHJlZSBmb3Jtczogd2l0aCB0aGUgOm9wdGlvbjpgLWNgICpzdHJpbmcqIGNvbW1hbmQgbGluZSBvcHRpb24sIGFzIGEgZmlsZQorcGFzc2VkIGFzIHRoZSBmaXJzdCBjb21tYW5kIGxpbmUgYXJndW1lbnQsIG9yIGFzIHN0YW5kYXJkIGlucHV0LiBJZiB0aGUgZmlsZQorb3Igc3RhbmRhcmQgaW5wdXQgaXMgYSB0dHkgZGV2aWNlLCB0aGUgaW50ZXJwcmV0ZXIgZW50ZXJzIGludGVyYWN0aXZlIG1vZGU7CitvdGhlcndpc2UsIGl0IGV4ZWN1dGVzIHRoZSBmaWxlIGFzIGEgY29tcGxldGUgcHJvZ3JhbS4KIAogCiAuLiBfZmlsZS1pbnB1dDoKZGlmZiAtLWdpdCBhL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkgYi9Eb2MvdG9vbHMvZXh0ZW5zaW9ucy9weXNwZWNpZmljLnB5CmluZGV4IDFiNmIwZTIuLjhjNDUyNzQgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy9leHRlbnNpb25zL3B5c3BlY2lmaWMucHkKKysrIGIvRG9jL3Rvb2xzL2V4dGVuc2lvbnMvcHlzcGVjaWZpYy5weQpAQCAtMTAsMTQgKzEwLDE2IEBACiAiIiIKIAogSVNTVUVfVVJJID0gJ2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlJXMnCi1TT1VSQ0VfVVJJID0gJ2h0dHBzOi8vaGcucHl0aG9uLm9yZy9jcHl0aG9uL2ZpbGUvMi43LyVzJworU09VUkNFX1VSSSA9ICdodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vdHJlZS8yLjcvJXMnCiAKIGZyb20gZG9jdXRpbHMgaW1wb3J0IG5vZGVzLCB1dGlscworZnJvbSBkb2N1dGlscy5wYXJzZXJzLnJzdCBpbXBvcnQgRGlyZWN0aXZlCiAKK2Zyb20gc3BoaW54LnV0aWwgaW1wb3J0IHN0YXR1c19pdGVyYXRvcgogZnJvbSBzcGhpbngudXRpbC5ub2RlcyBpbXBvcnQgc3BsaXRfZXhwbGljaXRfdGl0bGUKLWZyb20gc3BoaW54LnV0aWwuY29tcGF0IGltcG9ydCBEaXJlY3RpdmUKIGZyb20gc3BoaW54LndyaXRlcnMuaHRtbCBpbXBvcnQgSFRNTFRyYW5zbGF0b3IKIGZyb20gc3BoaW54LndyaXRlcnMubGF0ZXggaW1wb3J0IExhVGVYVHJhbnNsYXRvcgorZnJvbSBzcGhpbngud3JpdGVycy50ZXh0IGltcG9ydCBUZXh0VHJhbnNsYXRvcgogCiAjIG1vbmtleS1wYXRjaCByZVNUIHBhcnNlciB0byBkaXNhYmxlIGFscGhhYmV0aWMgYW5kIHJvbWFuIGVudW1lcmF0ZWQgbGlzdHMKIGZyb20gZG9jdXRpbHMucGFyc2Vycy5yc3Quc3RhdGVzIGltcG9ydCBCb2R5CkBAIC01OCw3ICs2MCw3IEBACiAKIGRlZiBpc3N1ZV9yb2xlKHR5cCwgcmF3dGV4dCwgdGV4dCwgbGluZW5vLCBpbmxpbmVyLCBvcHRpb25zPXt9LCBjb250ZW50PVtdKToKICAgICBpc3N1ZSA9IHV0aWxzLnVuZXNjYXBlKHRleHQpCi0gICAgdGV4dCA9ICdpc3N1ZSAnICsgaXNzdWUKKyAgICB0ZXh0ID0gJ2Jwby0nKyBpc3N1ZQogICAgIHJlZm5vZGUgPSBub2Rlcy5yZWZlcmVuY2UodGV4dCwgdGV4dCwgcmVmdXJpPUlTU1VFX1VSSSAlIGlzc3VlKQogICAgIHJldHVybiBbcmVmbm9kZV0sIFtdCiAKQEAgLTE1OCw4ICsxNjAsMTEgQEAKIGNsYXNzIFB5ZG9jVG9waWNzQnVpbGRlcihCdWlsZGVyKToKICAgICBuYW1lID0gJ3B5ZG9jLXRvcGljcycKIAorICAgIGRlZmF1bHRfdHJhbnNsYXRvcl9jbGFzcyA9IFRleHRUcmFuc2xhdG9yCisKICAgICBkZWYgaW5pdChzZWxmKToKICAgICAgICAgc2VsZi50b3BpY3MgPSB7fQorICAgICAgICBzZWxmLnNlY251bWJlcnMgPSB7fQogCiAgICAgZGVmIGdldF9vdXRkYXRlZF9kb2NzKHNlbGYpOgogICAgICAgICByZXR1cm4gJ2FsbCBweWRvYyB0b3BpY3MnCkBAIC0xNjksOSArMTc0LDkgQEAKIAogICAgIGRlZiB3cml0ZShzZWxmLCAqaWdub3JlZCk6CiAgICAgICAgIHdyaXRlciA9IFRleHRXcml0ZXIoc2VsZikKLSAgICAgICAgZm9yIGxhYmVsIGluIHNlbGYuc3RhdHVzX2l0ZXJhdG9yKHB5ZG9jX3RvcGljX2xhYmVscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidWlsZGluZyB0b3BpY3MuLi4gJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbmd0aD1sZW4ocHlkb2NfdG9waWNfbGFiZWxzKSk6CisgICAgICAgIGZvciBsYWJlbCBpbiBzdGF0dXNfaXRlcmF0b3IocHlkb2NfdG9waWNfbGFiZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidWlsZGluZyB0b3BpY3MuLi4gJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW5ndGg9bGVuKHB5ZG9jX3RvcGljX2xhYmVscykpOgogICAgICAgICAgICAgaWYgbGFiZWwgbm90IGluIHNlbGYuZW52LmRvbWFpbmRhdGFbJ3N0ZCddWydsYWJlbHMnXToKICAgICAgICAgICAgICAgICBzZWxmLndhcm4oJ2xhYmVsICVyIG5vdCBpbiBkb2N1bWVudGF0aW9uJyAlIGxhYmVsKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3RhdGljL3N3aXRjaGVycy5qcyBiL0RvYy90b29scy9zdGF0aWMvc3dpdGNoZXJzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMDUxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvdG9vbHMvc3RhdGljL3N3aXRjaGVycy5qcwpAQCAtMCwwICsxLDE0NiBAQAorKGZ1bmN0aW9uKCkgeworICAndXNlIHN0cmljdCc7CisKKyAgLy8gUGFyc2VzIHZlcnNpb25zIGluIFVSTCBzZWdtZW50cyBsaWtlOgorICAvLyAiMyIsICJkZXYiLCAicmVsZWFzZS8yLjciIG9yICIzLjZyYzIiCisgIHZhciB2ZXJzaW9uX3JlZ2V4cyA9IFsKKyAgICAnKD86XFxkKScsCisgICAgJyg/OlxcZFxcLlxcZFtcXHdcXGRcXC5dKiknLAorICAgICcoPzpkZXYpJywKKyAgICAnKD86cmVsZWFzZS9cXGQuXFxkW1xceFxcZFxcLl0qKSddOworCisgIHZhciBhbGxfdmVyc2lvbnMgPSB7CisgICAgJzMuOCc6ICdkZXYgKDMuOCknLAorICAgICczLjcnOiAnMy43JywKKyAgICAnMy42JzogJzMuNicsCisgICAgJzMuNSc6ICczLjUnLAorICAgICcyLjcnOiAnMi43JywKKyAgfTsKKworICB2YXIgYWxsX2xhbmd1YWdlcyA9IHsKKyAgICAgICdlbic6ICdFbmdsaXNoJywKKyAgICAgICdmcic6ICdGcmVuY2gnLAorICAgICAgJ2phJzogJ0phcGFuZXNlJywKKyAgfTsKKworICBmdW5jdGlvbiBidWlsZF92ZXJzaW9uX3NlbGVjdChjdXJyZW50X3ZlcnNpb24sIGN1cnJlbnRfcmVsZWFzZSkgeworICAgIHZhciBidWYgPSBbJzxzZWxlY3Q+J107CisKKyAgICAkLmVhY2goYWxsX3ZlcnNpb25zLCBmdW5jdGlvbih2ZXJzaW9uLCB0aXRsZSkgeworICAgICAgYnVmLnB1c2goJzxvcHRpb24gdmFsdWU9IicgKyB2ZXJzaW9uICsgJyInKTsKKyAgICAgIGlmICh2ZXJzaW9uID09IGN1cnJlbnRfdmVyc2lvbikKKyAgICAgICAgYnVmLnB1c2goJyBzZWxlY3RlZD0ic2VsZWN0ZWQiPicgKyBjdXJyZW50X3JlbGVhc2UgKyAnPC9vcHRpb24+Jyk7CisgICAgICBlbHNlCisgICAgICAgIGJ1Zi5wdXNoKCc+JyArIHRpdGxlICsgJzwvb3B0aW9uPicpOworICAgIH0pOworCisgICAgYnVmLnB1c2goJzwvc2VsZWN0PicpOworICAgIHJldHVybiBidWYuam9pbignJyk7CisgIH0KKworICBmdW5jdGlvbiBidWlsZF9sYW5ndWFnZV9zZWxlY3QoY3VycmVudF9sYW5ndWFnZSkgeworICAgIHZhciBidWYgPSBbJzxzZWxlY3Q+J107CisKKyAgICAkLmVhY2goYWxsX2xhbmd1YWdlcywgZnVuY3Rpb24obGFuZ3VhZ2UsIHRpdGxlKSB7CisgICAgICBpZiAobGFuZ3VhZ2UgPT0gY3VycmVudF9sYW5ndWFnZSkKKyAgICAgICAgYnVmLnB1c2goJzxvcHRpb24gdmFsdWU9IicgKyBsYW5ndWFnZSArICciIHNlbGVjdGVkPSJzZWxlY3RlZCI+JyArCisgICAgICAgICAgICAgICAgIGFsbF9sYW5ndWFnZXNbY3VycmVudF9sYW5ndWFnZV0gKyAnPC9vcHRpb24+Jyk7CisgICAgICBlbHNlCisgICAgICAgIGJ1Zi5wdXNoKCc8b3B0aW9uIHZhbHVlPSInICsgbGFuZ3VhZ2UgKyAnIj4nICsgdGl0bGUgKyAnPC9vcHRpb24+Jyk7CisgICAgfSk7CisgICAgYnVmLnB1c2goJzwvc2VsZWN0PicpOworICAgIHJldHVybiBidWYuam9pbignJyk7CisgIH0KKworICBmdW5jdGlvbiBuYXZpZ2F0ZV90b19maXJzdF9leGlzdGluZyh1cmxzKSB7CisgICAgLy8gTmF2aWdhdGUgdG8gdGhlIGZpcnN0IGV4aXN0aW5nIFVSTCBpbiB1cmxzLgorICAgIHZhciB1cmwgPSB1cmxzLnNoaWZ0KCk7CisgICAgaWYgKHVybHMubGVuZ3RoID09IDApIHsKKyAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gdXJsOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICAkLmFqYXgoeworICAgICAgdXJsOiB1cmwsCisgICAgICBzdWNjZXNzOiBmdW5jdGlvbigpIHsKKyAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSB1cmw7CisgICAgICB9LAorICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkgeworICAgICAgICBuYXZpZ2F0ZV90b19maXJzdF9leGlzdGluZyh1cmxzKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfQorCisgIGZ1bmN0aW9uIG9uX3ZlcnNpb25fc3dpdGNoKCkgeworICAgIHZhciBzZWxlY3RlZF92ZXJzaW9uID0gJCh0aGlzKS5jaGlsZHJlbignb3B0aW9uOnNlbGVjdGVkJykuYXR0cigndmFsdWUnKSArICcvJzsKKyAgICB2YXIgdXJsID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CisgICAgdmFyIGN1cnJlbnRfbGFuZ3VhZ2UgPSBsYW5ndWFnZV9zZWdtZW50X2Zyb21fdXJsKHVybCk7CisgICAgdmFyIGN1cnJlbnRfdmVyc2lvbiA9IHZlcnNpb25fc2VnbWVudF9pbl91cmwodXJsKTsKKyAgICB2YXIgbmV3X3VybCA9IHVybC5yZXBsYWNlKCcub3JnLycgKyBjdXJyZW50X2xhbmd1YWdlICsgY3VycmVudF92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5vcmcvJyArIGN1cnJlbnRfbGFuZ3VhZ2UgKyBzZWxlY3RlZF92ZXJzaW9uKTsKKyAgICBpZiAobmV3X3VybCAhPSB1cmwpIHsKKyAgICAgIG5hdmlnYXRlX3RvX2ZpcnN0X2V4aXN0aW5nKFsKKyAgICAgICAgbmV3X3VybCwKKyAgICAgICAgdXJsLnJlcGxhY2UoJy5vcmcvJyArIGN1cnJlbnRfbGFuZ3VhZ2UgKyBjdXJyZW50X3ZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICcub3JnLycgKyBzZWxlY3RlZF92ZXJzaW9uKSwKKyAgICAgICAgJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnLycgKyBjdXJyZW50X2xhbmd1YWdlICsgc2VsZWN0ZWRfdmVyc2lvbiwKKyAgICAgICAgJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnLycgKyBzZWxlY3RlZF92ZXJzaW9uLAorICAgICAgICAnaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvJworICAgICAgXSk7CisgICAgfQorICB9CisKKyAgZnVuY3Rpb24gb25fbGFuZ3VhZ2Vfc3dpdGNoKCkgeworICAgIHZhciBzZWxlY3RlZF9sYW5ndWFnZSA9ICQodGhpcykuY2hpbGRyZW4oJ29wdGlvbjpzZWxlY3RlZCcpLmF0dHIoJ3ZhbHVlJykgKyAnLyc7CisgICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmOworICAgIHZhciBjdXJyZW50X2xhbmd1YWdlID0gbGFuZ3VhZ2Vfc2VnbWVudF9mcm9tX3VybCh1cmwpOworICAgIHZhciBjdXJyZW50X3ZlcnNpb24gPSB2ZXJzaW9uX3NlZ21lbnRfaW5fdXJsKHVybCk7CisgICAgaWYgKHNlbGVjdGVkX2xhbmd1YWdlID09ICdlbi8nKSAvLyBTcGVjaWFsICdkZWZhdWx0JyBjYXNlIGZvciBlbmdsaXNoLgorICAgICAgc2VsZWN0ZWRfbGFuZ3VhZ2UgPSAnJzsKKyAgICB2YXIgbmV3X3VybCA9IHVybC5yZXBsYWNlKCcub3JnLycgKyBjdXJyZW50X2xhbmd1YWdlICsgY3VycmVudF92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy5vcmcvJyArIHNlbGVjdGVkX2xhbmd1YWdlICsgY3VycmVudF92ZXJzaW9uKTsKKyAgICBpZiAobmV3X3VybCAhPSB1cmwpIHsKKyAgICAgIG5hdmlnYXRlX3RvX2ZpcnN0X2V4aXN0aW5nKFsKKyAgICAgICAgbmV3X3VybCwKKyAgICAgICAgJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnLycKKyAgICAgIF0pOworICAgIH0KKyAgfQorCisgIC8vIFJldHVybnMgdGhlIHBhdGggc2VnbWVudCBvZiB0aGUgbGFuZ3VhZ2UgYXMgYSBzdHJpbmcsIGxpa2UgJ2ZyLycKKyAgLy8gb3IgJycgaWYgbm90IGZvdW5kLgorICBmdW5jdGlvbiBsYW5ndWFnZV9zZWdtZW50X2Zyb21fdXJsKHVybCkgeworICAgIHZhciBsYW5ndWFnZV9yZWdleHAgPSAnXC5vcmcvKFthLXpdezJ9KD86LVthLXpdezJ9KT8vKSc7CisgICAgdmFyIG1hdGNoID0gdXJsLm1hdGNoKGxhbmd1YWdlX3JlZ2V4cCk7CisgICAgaWYgKG1hdGNoICE9PSBudWxsKQorICAgICAgICByZXR1cm4gbWF0Y2hbMV07CisgICAgcmV0dXJuICcnOworICB9CisKKyAgLy8gUmV0dXJucyB0aGUgcGF0aCBzZWdtZW50IG9mIHRoZSB2ZXJzaW9uIGFzIGEgc3RyaW5nLCBsaWtlICczLjYvJworICAvLyBvciAnJyBpZiBub3QgZm91bmQuCisgIGZ1bmN0aW9uIHZlcnNpb25fc2VnbWVudF9pbl91cmwodXJsKSB7CisgICAgdmFyIGxhbmd1YWdlX3NlZ21lbnQgPSAnKD86W2Etel17Mn0oPzotW2Etel17Mn0pPy8pJzsKKyAgICB2YXIgdmVyc2lvbl9zZWdtZW50ID0gJyg/Oig/OicgKyB2ZXJzaW9uX3JlZ2V4cy5qb2luKCd8JykgKyAnKS8pJzsKKyAgICB2YXIgdmVyc2lvbl9yZWdleHAgPSAnXFwub3JnLycgKyBsYW5ndWFnZV9zZWdtZW50ICsgJz8oJyArIHZlcnNpb25fc2VnbWVudCArICcpJzsKKyAgICB2YXIgbWF0Y2ggPSB1cmwubWF0Y2godmVyc2lvbl9yZWdleHApOworICAgIGlmIChtYXRjaCAhPT0gbnVsbCkKKyAgICAgIHJldHVybiBtYXRjaFsxXTsKKyAgICByZXR1cm4gJycKKyAgfQorCisgICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworICAgIHZhciByZWxlYXNlID0gRE9DVU1FTlRBVElPTl9PUFRJT05TLlZFUlNJT047CisgICAgdmFyIGxhbmd1YWdlX3NlZ21lbnQgPSBsYW5ndWFnZV9zZWdtZW50X2Zyb21fdXJsKHdpbmRvdy5sb2NhdGlvbi5ocmVmKTsKKyAgICB2YXIgY3VycmVudF9sYW5ndWFnZSA9IGxhbmd1YWdlX3NlZ21lbnQucmVwbGFjZSgvXC8rJC9nLCAnJykgfHwgJ2VuJzsKKyAgICB2YXIgdmVyc2lvbiA9IHJlbGVhc2Uuc3Vic3RyKDAsIDMpOworICAgIHZhciB2ZXJzaW9uX3NlbGVjdCA9IGJ1aWxkX3ZlcnNpb25fc2VsZWN0KHZlcnNpb24sIHJlbGVhc2UpOworCisgICAgJCgnLnZlcnNpb25fc3dpdGNoZXJfcGxhY2Vob2xkZXInKS5odG1sKHZlcnNpb25fc2VsZWN0KTsKKyAgICAkKCcudmVyc2lvbl9zd2l0Y2hlcl9wbGFjZWhvbGRlciBzZWxlY3QnKS5iaW5kKCdjaGFuZ2UnLCBvbl92ZXJzaW9uX3N3aXRjaCk7CisKKyAgICB2YXIgbGFuZ3VhZ2Vfc2VsZWN0ID0gYnVpbGRfbGFuZ3VhZ2Vfc2VsZWN0KGN1cnJlbnRfbGFuZ3VhZ2UpOworCisgICAgJCgnLmxhbmd1YWdlX3N3aXRjaGVyX3BsYWNlaG9sZGVyJykuaHRtbChsYW5ndWFnZV9zZWxlY3QpOworICAgICQoJy5sYW5ndWFnZV9zd2l0Y2hlcl9wbGFjZWhvbGRlciBzZWxlY3QnKS5iaW5kKCdjaGFuZ2UnLCBvbl9sYW5ndWFnZV9zd2l0Y2gpOworICB9KTsKK30pKCk7CmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvc3RhdGljL3ZlcnNpb25fc3dpdGNoLmpzIGIvRG9jL3Rvb2xzL3N0YXRpYy92ZXJzaW9uX3N3aXRjaC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGIzNmE2MS4uMDAwMDAwMAotLS0gYS9Eb2MvdG9vbHMvc3RhdGljL3ZlcnNpb25fc3dpdGNoLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotKGZ1bmN0aW9uKCkgewotICAndXNlIHN0cmljdCc7Ci0KLSAgdmFyIGFsbF92ZXJzaW9ucyA9IHsKLSAgICAnMy43JzogJ2RldiAoMy43KScsCi0gICAgJzMuNic6ICczLjYnLAotICAgICczLjUnOiAnMy41JywKLSAgICAnMy40JzogJzMuNCcsCi0gICAgJzMuMyc6ICczLjMnLAotICAgICcyLjcnOiAnMi43JywKLSAgfTsKLQotICBmdW5jdGlvbiBidWlsZF9zZWxlY3QoY3VycmVudF92ZXJzaW9uLCBjdXJyZW50X3JlbGVhc2UpIHsKLSAgICB2YXIgYnVmID0gWyc8c2VsZWN0PiddOwotCi0gICAgJC5lYWNoKGFsbF92ZXJzaW9ucywgZnVuY3Rpb24odmVyc2lvbiwgdGl0bGUpIHsKLSAgICAgIGJ1Zi5wdXNoKCc8b3B0aW9uIHZhbHVlPSInICsgdmVyc2lvbiArICciJyk7Ci0gICAgICBpZiAodmVyc2lvbiA9PSBjdXJyZW50X3ZlcnNpb24pCi0gICAgICAgIGJ1Zi5wdXNoKCcgc2VsZWN0ZWQ9InNlbGVjdGVkIj4nICsgY3VycmVudF9yZWxlYXNlICsgJzwvb3B0aW9uPicpOwotICAgICAgZWxzZQotICAgICAgICBidWYucHVzaCgnPicgKyB0aXRsZSArICc8L29wdGlvbj4nKTsKLSAgICB9KTsKLQotICAgIGJ1Zi5wdXNoKCc8L3NlbGVjdD4nKTsKLSAgICByZXR1cm4gYnVmLmpvaW4oJycpOwotICB9Ci0KLSAgZnVuY3Rpb24gcGF0Y2hfdXJsKHVybCwgbmV3X3ZlcnNpb24pIHsKLSAgICB2YXIgdXJsX3JlID0gL1wub3JnXC8oXGR8cHkza3xkZXZ8KChyZWxlYXNlXC8pP1xkXC5cZFtcd1xkXC5dKikpXC8vLAotICAgICAgICBuZXdfdXJsID0gdXJsLnJlcGxhY2UodXJsX3JlLCAnLm9yZy8nICsgbmV3X3ZlcnNpb24gKyAnLycpOwotCi0gICAgaWYgKG5ld191cmwgPT0gdXJsICYmICFuZXdfdXJsLm1hdGNoKHVybF9yZSkpIHsKLSAgICAgIC8vIHB5dGhvbiAyIHVybCB3aXRob3V0IHZlcnNpb24/Ci0gICAgICBuZXdfdXJsID0gdXJsLnJlcGxhY2UoL1wub3JnXC8vLCAnLm9yZy8nICsgbmV3X3ZlcnNpb24gKyAnLycpOwotICAgIH0KLSAgICByZXR1cm4gbmV3X3VybDsKLSAgfQotCi0gIGZ1bmN0aW9uIG9uX3N3aXRjaCgpIHsKLSAgICB2YXIgc2VsZWN0ZWQgPSAkKHRoaXMpLmNoaWxkcmVuKCdvcHRpb246c2VsZWN0ZWQnKS5hdHRyKCd2YWx1ZScpOwotCi0gICAgdmFyIHVybCA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLAotICAgICAgICBuZXdfdXJsID0gcGF0Y2hfdXJsKHVybCwgc2VsZWN0ZWQpOwotCi0gICAgaWYgKG5ld191cmwgIT0gdXJsKSB7Ci0gICAgICAvLyBjaGVjayBiZWZvcmVoYW5kIGlmIHVybCBleGlzdHMsIGVsc2UgcmVkaXJlY3QgdG8gdmVyc2lvbidzIHN0YXJ0IHBhZ2UKLSAgICAgICQuYWpheCh7Ci0gICAgICAgIHVybDogbmV3X3VybCwKLSAgICAgICAgc3VjY2VzczogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbmV3X3VybDsKLSAgICAgICAgfSwKLSAgICAgICAgZXJyb3I6IGZ1bmN0aW9uKCkgewotICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9ICdodHRwczovL2RvY3MucHl0aG9uLm9yZy8nICsgc2VsZWN0ZWQ7Ci0gICAgICAgIH0KLSAgICAgIH0pOwotICAgIH0KLSAgfQotCi0gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgewotICAgIHZhciByZWxlYXNlID0gRE9DVU1FTlRBVElPTl9PUFRJT05TLlZFUlNJT047Ci0gICAgdmFyIHZlcnNpb24gPSByZWxlYXNlLnN1YnN0cigwLCAzKTsKLSAgICB2YXIgc2VsZWN0ID0gYnVpbGRfc2VsZWN0KHZlcnNpb24sIHJlbGVhc2UpOwotCi0gICAgJCgnLnZlcnNpb25fc3dpdGNoZXJfcGxhY2Vob2xkZXInKS5odG1sKHNlbGVjdCk7Ci0gICAgJCgnLnZlcnNpb25fc3dpdGNoZXJfcGxhY2Vob2xkZXIgc2VsZWN0JykuYmluZCgnY2hhbmdlJywgb25fc3dpdGNoKTsKLSAgfSk7Ci19KSgpOwpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3N1c3AtaWdub3JlZC5jc3YgYi9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgppbmRleCAxN2IyMzY2Li5mN2QyM2UyIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgorKysgYi9Eb2MvdG9vbHMvc3VzcC1pZ25vcmVkLmNzdgpAQCAtNDYsNyArNDYsNyBAQAogaG93dG8vcHlwb3J0aW5nLCw6OixQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMwogaG93dG8vcmVnZXgsLDo6LAogaG93dG8vcmVnZXgsLDpmb28sKD86Zm9vKQotaG93dG8vdXJsbGliMiwsOnBhc3N3b3JkLCJmb3IgZXhhbXBsZSAiImpvZTpwYXNzd29yZEBleGFtcGxlLmNvbSIiIgoraG93dG8vdXJsbGliMiwsOnBhc3N3b3JkLCIiImpvZTpwYXNzd29yZEBleGFtcGxlLmNvbSIiIgogbGlicmFyeS9hdWRpb29wLCw6aXBvcywiIyBmYWN0b3IgPSBhdWRpb29wLmZpbmRmYWN0b3IoaW5fdGVzdFtpcG9zKjI6aXBvcyoyK2xlbihvdXRfdGVzdCldLCIKIGxpYnJhcnkvYmlzZWN0LCw6aGksYWxsKHZhbCA+PSB4IGZvciB2YWwgaW4gYVtpOmhpXSkKIGxpYnJhcnkvYmlzZWN0LCw6aGksYWxsKHZhbCA+IHggZm9yIHZhbCBpbiBhW2k6aGldKQpAQCAtOTksNiArOTksOCBAQAogbGlicmFyeS9wcm9maWxlLCw6bGluZW5vLGZpbGVuYW1lOmxpbmVubyhmdW5jdGlvbikKIGxpYnJhcnkvcHlleHBhdCwsOmVsZW0xLDxweTplbGVtMSAvPgogbGlicmFyeS9weWV4cGF0LCw6cHksInhtbG5zOnB5ID0gIiJodHRwOi8vd3d3LnB5dGhvbi5vcmcvbnMvIiI+IgorbGlicmFyeS9yZSwsYCwhIyQlJicqKy0uXl9gfH46CitsaWJyYXJ5L3JlLCxgLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIVwjXCRcJVwmXCdcKlwrXC1cLlxeXF9cYFx8XH5cOl0rCiBsaWJyYXJ5L3NtdHBsaWIsLDpwb3J0LG1ldGhvZCBtdXN0IHN1cHBvcnQgdGhhdCBhcyB3ZWxsIGFzIGEgcmVndWxhciBob3N0OnBvcnQKIGxpYnJhcnkvc29ja2V0LCw6OiwnNWFlZjoyYjo6OCcKIGxpYnJhcnkvc3FsaXRlMywsOm1lbW9yeSwKQEAgLTE1MCw3ICsxNTIsNyBAQAogcmVmZXJlbmNlL2RhdGFtb2RlbCwsOm1heCwKIHJlZmVyZW5jZS9leHByZXNzaW9ucywsOmluZGV4LHhbaW5kZXg6aW5kZXhdCiByZWZlcmVuY2UvZXhwcmVzc2lvbnMsLGAsYGV4cHJlc3Npb25zLi4uYAotcmVmZXJlbmNlL2V4cHJlc3Npb25zLCxgLCIiImAiIiIKK3JlZmVyZW5jZS9leHByZXNzaW9ucywzNTAsYCxgCiByZWZlcmVuY2UvZ3JhbW1hciwsYCwnYCcgdGVzdGxpc3QxICdgJwogcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMsLDpmaWxlZW5jb2RpbmcsIyB2aW06ZmlsZWVuY29kaW5nPTxlbmNvZGluZy1uYW1lPgogcmVmZXJlbmNlL2xleGljYWxfYW5hbHlzaXMsLGAsIiwgICAgICAgOiAgICAgICAuICAgICAgIGAgICAgICAgPSAgICAgICA7IgpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3RlbXBsYXRlcy9kb3dubG9hZC5odG1sIGIvRG9jL3Rvb2xzL3RlbXBsYXRlcy9kb3dubG9hZC5odG1sCmluZGV4IDJhODg1ZDcuLjI5OGRjNWMgMTAwNjQ0Ci0tLSBhL0RvYy90b29scy90ZW1wbGF0ZXMvZG93bmxvYWQuaHRtbAorKysgYi9Eb2MvdG9vbHMvdGVtcGxhdGVzL2Rvd25sb2FkLmh0bWwKQEAgLTI3LDM0ICsyNywzNCBAQAogICAgIDx0ZD4KICAgICAgIDxhIGhyZWY9Int7IGRsYmFzZSB9fS9weXRob24te3sgcmVsZWFzZSB9fS1kb2NzLXBkZi1sZXR0ZXIuemlwIj4KICAgICAgICAgeyUgdHJhbnMgJX1Eb3dubG9hZHslIGVuZHRyYW5zICV9Ci0gICAgICA8L2E+IHslIHRyYW5zICV9KGNhLiA4IE1CKXslIGVuZHRyYW5zICV9CisgICAgICA8L2E+IHslIHRyYW5zICV9KGNhLiAxMSBNQil7JSBlbmR0cmFucyAlfQogICAgIDwvdGQ+CiAgICAgPHRkPgogICAgICAgPGEgaHJlZj0ie3sgZGxiYXNlIH19L3B5dGhvbi17eyByZWxlYXNlIH19LWRvY3MtcGRmLWxldHRlci50YXIuYnoyIj4KICAgICAgICAgeyUgdHJhbnMgJX1Eb3dubG9hZHslIGVuZHRyYW5zICV9Ci0gICAgICA8L2E+IHslIHRyYW5zICV9KGNhLiA4IE1CKXslIGVuZHRyYW5zICV9CisgICAgICA8L2E+IHslIHRyYW5zICV9KGNhLiAxMSBNQil7JSBlbmR0cmFucyAlfQogICAgIDwvdGQ+CiAgIDwvdHI+CiAgIDx0cj48dGQ+eyUgdHJhbnMgJX1QREYgKEE0IHBhcGVyIHNpemUpeyUgZW5kdHJhbnMgJX08L3RkPgogICAgIDx0ZD4KICAgICAgIDxhIGhyZWY9Int7IGRsYmFzZSB9fS9weXRob24te3sgcmVsZWFzZSB9fS1kb2NzLXBkZi1hNC56aXAiPgogICAgICAgICB7JSB0cmFucyAlfURvd25sb2FkeyUgZW5kdHJhbnMgJX0KLSAgICAgIDwvYT4geyUgdHJhbnMgJX0oY2EuIDggTUIpeyUgZW5kdHJhbnMgJX08L3RkPgorICAgICAgPC9hPiB7JSB0cmFucyAlfShjYS4gMTEgTUIpeyUgZW5kdHJhbnMgJX08L3RkPgogICAgIDx0ZD4KICAgICAgIDxhIGhyZWY9Int7IGRsYmFzZSB9fS9weXRob24te3sgcmVsZWFzZSB9fS1kb2NzLXBkZi1hNC50YXIuYnoyIj4KICAgICAgICAgeyUgdHJhbnMgJX1Eb3dubG9hZHslIGVuZHRyYW5zICV9Ci0gICAgICA8L2E+IHslIHRyYW5zICV9KGNhLiA4IE1CKXslIGVuZHRyYW5zICV9PC90ZD4KKyAgICAgIDwvYT4geyUgdHJhbnMgJX0oY2EuIDExIE1CKXslIGVuZHRyYW5zICV9PC90ZD4KICAgPC90cj4KICAgPHRyPjx0ZD57JSB0cmFucyAlfUhUTUx7JSBlbmR0cmFucyAlfTwvdGQ+CiAgICAgPHRkPgogICAgICAgPGEgaHJlZj0ie3sgZGxiYXNlIH19L3B5dGhvbi17eyByZWxlYXNlIH19LWRvY3MtaHRtbC56aXAiPgogICAgICAgICB7JSB0cmFucyAlfURvd25sb2FkeyUgZW5kdHJhbnMgJX0KLSAgICAgIDwvYT4geyUgdHJhbnMgJX0oY2EuIDYgTUIpeyUgZW5kdHJhbnMgJX0KKyAgICAgIDwvYT4geyUgdHJhbnMgJX0oY2EuIDcuNSBNQil7JSBlbmR0cmFucyAlfQogICAgIDwvdGQ+CiAgICAgPHRkPgogICAgICAgPGEgaHJlZj0ie3sgZGxiYXNlIH19L3B5dGhvbi17eyByZWxlYXNlIH19LWRvY3MtaHRtbC50YXIuYnoyIj4KICAgICAgICAgeyUgdHJhbnMgJX1Eb3dubG9hZHslIGVuZHRyYW5zICV9Ci0gICAgICA8L2E+IHslIHRyYW5zICV9KGNhLiA0IE1CKXslIGVuZHRyYW5zICV9CisgICAgICA8L2E+IHslIHRyYW5zICV9KGNhLiA1IE1CKXslIGVuZHRyYW5zICV9CiAgICAgPC90ZD4KICAgPC90cj4KICAgPHRyPgpAQCAtNjIsMTIgKzYyLDEyIEBACiAgICAgPHRkPgogICAgICAgPGEgaHJlZj0ie3sgZGxiYXNlIH19L3B5dGhvbi17eyByZWxlYXNlIH19LWRvY3MtdGV4dC56aXAiPgogICAgICAgICB7JSB0cmFucyAlfURvd25sb2FkeyUgZW5kdHJhbnMgJX0KLSAgICAgIDwvYT4geyUgdHJhbnMgJX0oY2EuIDIgTUIpeyUgZW5kdHJhbnMgJX0KKyAgICAgIDwvYT4geyUgdHJhbnMgJX0oY2EuIDIuNSBNQil7JSBlbmR0cmFucyAlfQogICAgIDwvdGQ+CiAgICAgPHRkPgogICAgICAgPGEgaHJlZj0ie3sgZGxiYXNlIH19L3B5dGhvbi17eyByZWxlYXNlIH19LWRvY3MtdGV4dC50YXIuYnoyIj4KICAgICAgICAgeyUgdHJhbnMgJX1Eb3dubG9hZHslIGVuZHRyYW5zICV9Ci0gICAgICA8L2E+IHslIHRyYW5zICV9KGNhLiAxLjUgTUIpeyUgZW5kdHJhbnMgJX0KKyAgICAgIDwvYT4geyUgdHJhbnMgJX0oY2EuIDIgTUIpeyUgZW5kdHJhbnMgJX0KICAgICA8L3RkPgogICA8L3RyPgogPC90YWJsZT4KQEAgLTc1LDkgKzc1LDkgQEAKIDxwPnslIHRyYW5zICV9VGhlc2UgYXJjaGl2ZXMgY29udGFpbiBhbGwgdGhlIGNvbnRlbnQgaW4gdGhlCiBkb2N1bWVudGF0aW9uLnslIGVuZHRyYW5zICV9PC9wPgogCi08cD57JSB0cmFucyBkb3dubG9hZF9wYWdlPSJodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzL3t7IHJlbGVhc2VbOjVdIH19LyIgJX1IVE1MIEhlbHAKLSg8dHQ+LmNobTwvdHQ+KSBmaWxlcyBhcmUgbWFkZSBhdmFpbGFibGUgaW4gdGhlICJXaW5kb3dzIiBzZWN0aW9uCi1vbiB0aGUgPGEgaHJlZj17eyBkb3dubG9hZF9wYWdlIH19PlB5dGhvbiBkb3dubG9hZCBwYWdlPC9hPi57JSBlbmR0cmFucyAlfTwvcD4KKzxwPnslIHRyYW5zIGRvd25sb2FkX3BhZ2U9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzL3JlbGVhc2UvcHl0aG9uLSIgKyByZWxlYXNlLnJlcGxhY2UoJy4nLCAnJykgKyAiLyIgJX1IVE1MIEhlbHAKKyg8dHQ+LmNobTwvdHQ+KSBmaWxlcyBhcmUgbWFkZSBhdmFpbGFibGUgaW4gdGhlICJGaWxlcyIgc2VjdGlvbgorb24gdGhlIDxhIGhyZWY9Int7IGRvd25sb2FkX3BhZ2UgfX0iPlB5dGhvbiBkb3dubG9hZCBwYWdlPC9hPi57JSBlbmR0cmFucyAlfTwvcD4KIAogCiA8aDI+eyUgdHJhbnMgJX1VbnBhY2tpbmd7JSBlbmR0cmFucyAlfTwvaDI+CmRpZmYgLS1naXQgYS9Eb2MvdG9vbHMvdGVtcGxhdGVzL2luZGV4Y29udGVudC5odG1sIGIvRG9jL3Rvb2xzL3RlbXBsYXRlcy9pbmRleGNvbnRlbnQuaHRtbAppbmRleCA2NDg4YzE2Li41Y2JhOTczIDEwMDY0NAotLS0gYS9Eb2MvdG9vbHMvdGVtcGxhdGVzL2luZGV4Y29udGVudC5odG1sCisrKyBiL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhjb250ZW50Lmh0bWwKQEAgLTEsNSArMSwxMiBAQAoteyUgZXh0ZW5kcyAiZGVmaW5kZXguaHRtbCIgJX0KLXslIGJsb2NrIHRhYmxlcyAlfQoreyUgZXh0ZW5kcyAibGF5b3V0Lmh0bWwiICV9Cit7JS0gYmxvY2sgaHRtbHRpdGxlIC0lfQorPHRpdGxlPnt7IHNob3J0dGl0bGUgfX08L3RpdGxlPgoreyUtIGVuZGJsb2NrIC0lfQoreyUgYmxvY2sgYm9keSAlfQorICA8aDE+e3sgZG9jc3RpdGxlfGUgfX08L2gxPgorICA8cD4KKyAgeyUgdHJhbnMgJX1XZWxjb21lISBUaGlzIGlzIHRoZSBkb2N1bWVudGF0aW9uIGZvciBQeXRob24ge3sgcmVsZWFzZSB9fS57JSBlbmR0cmFucyAlfQorICA8L3A+CiAgIDxwPjxzdHJvbmc+eyUgdHJhbnMgJX1QYXJ0cyBvZiB0aGUgZG9jdW1lbnRhdGlvbjp7JSBlbmR0cmFucyAlfTwvc3Ryb25nPjwvcD4KICAgPHRhYmxlIGNsYXNzPSJjb250ZW50c3RhYmxlIiBhbGlnbj0iY2VudGVyIj48dHI+CiAgICAgPHRkIHdpZHRoPSI1MCUiPgpkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3RlbXBsYXRlcy9pbmRleHNpZGViYXIuaHRtbCBiL0RvYy90b29scy90ZW1wbGF0ZXMvaW5kZXhzaWRlYmFyLmh0bWwKaW5kZXggZDkzMDIxZC4uZDZiMDU0ZSAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3RlbXBsYXRlcy9pbmRleHNpZGViYXIuaHRtbAorKysgYi9Eb2MvdG9vbHMvdGVtcGxhdGVzL2luZGV4c2lkZWJhci5odG1sCkBAIC0yLDggKzIsMTAgQEAKIDxwPjxhIGhyZWY9Int7IHBhdGh0bygnZG93bmxvYWQnKSB9fSI+eyUgdHJhbnMgJX1Eb3dubG9hZCB0aGVzZSBkb2N1bWVudHN7JSBlbmR0cmFucyAlfTwvYT48L3A+CiA8aDM+eyUgdHJhbnMgJX1Eb2NzIGZvciBvdGhlciB2ZXJzaW9uc3slIGVuZHRyYW5zICV9PC9oMz4KIDx1bD4KLSAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNC8iPnslIHRyYW5zICV9UHl0aG9uIDMuNCAoc3RhYmxlKXslIGVuZHRyYW5zICV9PC9hPjwvbGk+Ci0gIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjUvIj57JSB0cmFucyAlfVB5dGhvbiAzLjUgKGluIGRldmVsb3BtZW50KXslIGVuZHRyYW5zICV9PC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjgvIj57JSB0cmFucyAlfVB5dGhvbiAzLjggKGluIGRldmVsb3BtZW50KXslIGVuZHRyYW5zICV9PC9hPjwvbGk+CisgIDxsaT48YSBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjcvIj57JSB0cmFucyAlfVB5dGhvbiAzLjcgKHN0YWJsZSl7JSBlbmR0cmFucyAlfTwvYT48L2xpPgorICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy42LyI+eyUgdHJhbnMgJX1QeXRob24gMy42IChzdGFibGUpeyUgZW5kdHJhbnMgJX08L2E+PC9saT4KKyAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNS8iPnslIHRyYW5zICV9UHl0aG9uIDMuNSAoc2VjdXJpdHktZml4ZXMpeyUgZW5kdHJhbnMgJX08L2E+PC9saT4KICAgPGxpPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG9jL3ZlcnNpb25zLyI+eyUgdHJhbnMgJX1PbGQgdmVyc2lvbnN7JSBlbmR0cmFucyAlfTwvYT48L2xpPgogPC91bD4KIApkaWZmIC0tZ2l0IGEvRG9jL3Rvb2xzL3RlbXBsYXRlcy9sYXlvdXQuaHRtbCBiL0RvYy90b29scy90ZW1wbGF0ZXMvbGF5b3V0Lmh0bWwKaW5kZXggNzhiM2IyNy4uOGQ2ZDNlNSAxMDA2NDQKLS0tIGEvRG9jL3Rvb2xzL3RlbXBsYXRlcy9sYXlvdXQuaHRtbAorKysgYi9Eb2MvdG9vbHMvdGVtcGxhdGVzL2xheW91dC5odG1sCkBAIC00LDcgKzQsOCBAQAogICAgICAgICAgICAgICAgICBzdHlsZT0idmVydGljYWwtYWxpZ246IG1pZGRsZTsgbWFyZ2luLXRvcDogLTFweCIvPjwvbGk+CiAgICAgICAgIDxsaT48YSBocmVmPSJodHRwczovL3d3dy5weXRob24ub3JnLyI+UHl0aG9uPC9hPnt7IHJlbGRlbGltMSB9fTwvbGk+CiAgICAgICAgIDxsaT4KLSAgICAgICAgICB7JS0gaWYgdmVyc2lvbnN3aXRjaGVyIGlzIGRlZmluZWQgJX0KKyAgICAgICAgICB7JS0gaWYgc3dpdGNoZXJzIGlzIGRlZmluZWQgJX0KKyAgICAgICAgICA8c3BhbiBjbGFzcz0ibGFuZ3VhZ2Vfc3dpdGNoZXJfcGxhY2Vob2xkZXIiPnt7IGxhbmd1YWdlIG9yICdlbicgfX08L3NwYW4+CiAgICAgICAgICAgPHNwYW4gY2xhc3M9InZlcnNpb25fc3dpdGNoZXJfcGxhY2Vob2xkZXIiPnt7IHJlbGVhc2UgfX08L3NwYW4+CiAgICAgICAgICAgPGEgaHJlZj0ie3sgcGF0aHRvKCdpbmRleCcpIH19Ij57JSB0cmFucyAlfURvY3VtZW50YXRpb257JSBlbmR0cmFucyAlfTwvYT57eyByZWxkZWxpbTEgfX0KICAgICAgICAgICB7JS0gZWxzZSAlfQpAQCAtMTYsOCArMTcsOSBAQAogeyUgYmxvY2sgcmVsYmFyMiAlfSB7JSBpZiBidWlsZGVyICE9ICdxdGhlbHAnICV9IHt7IHJlbGJhcigpIH19IHslIGVuZGlmICV9IHslIGVuZGJsb2NrICV9CiB7JSBibG9jayBleHRyYWhlYWQgJX0KICAgICA8bGluayByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3BuZyIgaHJlZj0ie3sgcGF0aHRvKCdfc3RhdGljL3B5LnBuZycsIDEpIH19IiAvPgorICAgIDxsaW5rIHJlbD0iY2Fub25pY2FsIiBocmVmPSJodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL3t7cGFnZW5hbWV9fS5odG1sIiAvPgogICAgIHslIGlmIG5vdCBlbWJlZGRlZCAlfTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Int7IHBhdGh0bygnX3N0YXRpYy9jb3B5YnV0dG9uLmpzJywgMSkgfX0iPjwvc2NyaXB0PnslIGVuZGlmICV9Ci0gICAgeyUgaWYgdmVyc2lvbnN3aXRjaGVyIGlzIGRlZmluZWQgYW5kIG5vdCBlbWJlZGRlZCAlfTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Int7IHBhdGh0bygnX3N0YXRpYy92ZXJzaW9uX3N3aXRjaC5qcycsIDEpIH19Ij48L3NjcmlwdD57JSBlbmRpZiAlfQorICAgIHslIGlmIHN3aXRjaGVycyBpcyBkZWZpbmVkIGFuZCBub3QgZW1iZWRkZWQgJX08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ7eyBwYXRodG8oJ19zdGF0aWMvc3dpdGNoZXJzLmpzJywgMSkgfX0iPjwvc2NyaXB0PnslIGVuZGlmICV9CiB7eyBzdXBlcigpIH19CiAgICAgeyUgaWYgYnVpbGRlciA9PSAncXRoZWxwJyAlfQogICAgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CkBAIC00NCw4ICs0Niw5IEBACiA8aDM+e3sgXygnVGhpcyBQYWdlJykgfX08L2gzPgogPHVsIGNsYXNzPSJ0aGlzLXBhZ2UtbWVudSI+CiAgIDxsaT48YSBocmVmPSJ7eyBwYXRodG8oJ2J1Z3MnKSB9fSI+eyUgdHJhbnMgJX1SZXBvcnQgYSBCdWd7JSBlbmR0cmFucyAlfTwvYT48L2xpPgotICA8bGk+PGEgaHJlZj0ie3sgcGF0aHRvKCdfc291cmNlcy8nICsgc291cmNlbmFtZSwgdHJ1ZSl8ZSB9fSIKLSAgICAgICAgIHJlbD0ibm9mb2xsb3ciPnslIHRyYW5zICV9U2hvdyBTb3VyY2V7JSBlbmR0cmFucyAlfTwvYT48L2xpPgorICA8bGk+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2Jsb2Ive3sgdmVyc2lvbiB9fS9Eb2Mve3sgc291cmNlbmFtZXxyZXBsYWNlKCcucnN0LnR4dCcsICcucnN0JykgfX0iCisgICAgICAgICByZWw9Im5vZm9sbG93Ij57JSB0cmFucyAlfVNob3cgU291cmNleyUgZW5kdHJhbnMgJX08L2E+CisgIDwvbGk+CiA8L3VsPgogeyUtIGVuZGlmICV9CiB7JSBlbmRibG9jayAlfQpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0IGIvRG9jL3R1dG9yaWFsL2NsYXNzZXMucnN0CmluZGV4IDk2MzU4MWIuLjEwNThiNzcgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9jbGFzc2VzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvY2xhc3Nlcy5yc3QKQEAgLTMyOCw4ICszMjgsOCBAQAogdGhlIG1ldGhvZCdzIG9iamVjdCBiZWZvcmUgdGhlIGZpcnN0IGFyZ3VtZW50LgogCiBJZiB5b3Ugc3RpbGwgZG9uJ3QgdW5kZXJzdGFuZCBob3cgbWV0aG9kcyB3b3JrLCBhIGxvb2sgYXQgdGhlIGltcGxlbWVudGF0aW9uIGNhbgotcGVyaGFwcyBjbGFyaWZ5IG1hdHRlcnMuICBXaGVuIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBpcyByZWZlcmVuY2VkIHRoYXQgaXNuJ3QgYQotZGF0YSBhdHRyaWJ1dGUsIGl0cyBjbGFzcyBpcyBzZWFyY2hlZC4gIElmIHRoZSBuYW1lIGRlbm90ZXMgYSB2YWxpZCBjbGFzcworcGVyaGFwcyBjbGFyaWZ5IG1hdHRlcnMuICBXaGVuIGEgbm9uLWRhdGEgYXR0cmlidXRlIG9mIGFuIGluc3RhbmNlIGlzCityZWZlcmVuY2VkLCB0aGUgaW5zdGFuY2UncyBjbGFzcyBpcyBzZWFyY2hlZC4gIElmIHRoZSBuYW1lIGRlbm90ZXMgYSB2YWxpZCBjbGFzcwogYXR0cmlidXRlIHRoYXQgaXMgYSBmdW5jdGlvbiBvYmplY3QsIGEgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHBhY2tpbmcKIChwb2ludGVycyB0bykgdGhlIGluc3RhbmNlIG9iamVjdCBhbmQgdGhlIGZ1bmN0aW9uIG9iamVjdCBqdXN0IGZvdW5kIHRvZ2V0aGVyIGluCiBhbiBhYnN0cmFjdCBvYmplY3Q6IHRoaXMgaXMgdGhlIG1ldGhvZCBvYmplY3QuICBXaGVuIHRoZSBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZApAQCAtNzg3LDcgKzc4Nyw3IEBACiAgICAnYycKICAgID4+PiBpdC5uZXh0KCkKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPworICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgogICAgICAgIGl0Lm5leHQoKQogICAgU3RvcEl0ZXJhdGlvbgogCkBAIC04NzMsOSArODczLDkgQEAKID09PT09PT09PT09PT09PT09PT09PQogCiBTb21lIHNpbXBsZSBnZW5lcmF0b3JzIGNhbiBiZSBjb2RlZCBzdWNjaW5jdGx5IGFzIGV4cHJlc3Npb25zIHVzaW5nIGEgc3ludGF4Ci1zaW1pbGFyIHRvIGxpc3QgY29tcHJlaGVuc2lvbnMgYnV0IHdpdGggcGFyZW50aGVzZXMgaW5zdGVhZCBvZiBicmFja2V0cy4gIFRoZXNlCi1leHByZXNzaW9ucyBhcmUgZGVzaWduZWQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGdlbmVyYXRvciBpcyB1c2VkIHJpZ2h0IGF3YXkKLWJ5IGFuIGVuY2xvc2luZyBmdW5jdGlvbi4gIEdlbmVyYXRvciBleHByZXNzaW9ucyBhcmUgbW9yZSBjb21wYWN0IGJ1dCBsZXNzCitzaW1pbGFyIHRvIGxpc3QgY29tcHJlaGVuc2lvbnMgYnV0IHdpdGggcGFyZW50aGVzZXMgaW5zdGVhZCBvZiBzcXVhcmUgYnJhY2tldHMuCitUaGVzZSBleHByZXNzaW9ucyBhcmUgZGVzaWduZWQgZm9yIHNpdHVhdGlvbnMgd2hlcmUgdGhlIGdlbmVyYXRvciBpcyB1c2VkIHJpZ2h0Cithd2F5IGJ5IGFuIGVuY2xvc2luZyBmdW5jdGlvbi4gIEdlbmVyYXRvciBleHByZXNzaW9ucyBhcmUgbW9yZSBjb21wYWN0IGJ1dCBsZXNzCiB2ZXJzYXRpbGUgdGhhbiBmdWxsIGdlbmVyYXRvciBkZWZpbml0aW9ucyBhbmQgdGVuZCB0byBiZSBtb3JlIG1lbW9yeSBmcmllbmRseQogdGhhbiBlcXVpdmFsZW50IGxpc3QgY29tcHJlaGVuc2lvbnMuCiAKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QgYi9Eb2MvdHV0b3JpYWwvY29udHJvbGZsb3cucnN0CmluZGV4IGUxYWM4OWYuLmMxYzNkMjggMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9jb250cm9sZmxvdy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2NvbnRyb2xmbG93LnJzdApAQCAtMTI2LDcgKzEyNiw3IEBACiA6a2V5d29yZDpgYnJlYWtgIGFuZCA6a2V5d29yZDpgY29udGludWVgIFN0YXRlbWVudHMsIGFuZCA6a2V5d29yZDpgZWxzZWAgQ2xhdXNlcyBvbiBMb29wcwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIDprZXl3b3JkOmBicmVha2Agc3RhdGVtZW50LCBsaWtlIGluIEMsIGJyZWFrcyBvdXQgb2YgdGhlIHNtYWxsZXN0IGVuY2xvc2luZworVGhlIDprZXl3b3JkOmBicmVha2Agc3RhdGVtZW50LCBsaWtlIGluIEMsIGJyZWFrcyBvdXQgb2YgdGhlIGlubmVybW9zdCBlbmNsb3NpbmcKIDprZXl3b3JkOmBmb3JgIG9yIDprZXl3b3JkOmB3aGlsZWAgbG9vcC4KIAogTG9vcCBzdGF0ZW1lbnRzIG1heSBoYXZlIGFuIGBgZWxzZWBgIGNsYXVzZTsgaXQgaXMgZXhlY3V0ZWQgd2hlbiB0aGUgbG9vcApAQCAtNDQ0LDcgKzQ0NCw3IEBACiAgICAuLi4KICAgID4+PiBmdW5jdGlvbigwLCBhPTApCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgIFR5cGVFcnJvcjogZnVuY3Rpb24oKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICdhJwogCiBXaGVuIGEgZmluYWwgZm9ybWFsIHBhcmFtZXRlciBvZiB0aGUgZm9ybSBgYCoqbmFtZWBgIGlzIHByZXNlbnQsIGl0IHJlY2VpdmVzIGEKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QgYi9Eb2MvdHV0b3JpYWwvZGF0YXN0cnVjdHVyZXMucnN0CmluZGV4IDBlNTg5MWEuLjRlNjBlMzIgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9kYXRhc3RydWN0dXJlcy5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2RhdGFzdHJ1Y3R1cmVzLnJzdApAQCAtMTA3LDcgKzEwNyw3IEBACiAKIFlvdSBtaWdodCBoYXZlIG5vdGljZWQgdGhhdCBtZXRob2RzIGxpa2UgYGBpbnNlcnRgYCwgYGByZW1vdmVgYCBvciBgYHNvcnRgYCB0aGF0CiBvbmx5IG1vZGlmeSB0aGUgbGlzdCBoYXZlIG5vIHJldHVybiB2YWx1ZSBwcmludGVkIC0tIHRoZXkgcmV0dXJuIHRoZSBkZWZhdWx0Ci1gYE5vbmVgYC4gWzFdXyAgVGhpcyBpcyBhIGRlc2lnbiBwcmluY2lwbGUgZm9yIGFsbCBtdXRhYmxlIGRhdGEgc3RydWN0dXJlcyBpbgorYGBOb25lYGAuICBUaGlzIGlzIGEgZGVzaWduIHByaW5jaXBsZSBmb3IgYWxsIG11dGFibGUgZGF0YSBzdHJ1Y3R1cmVzIGluCiBQeXRob24uCiAKIApAQCAtMzExLDcgKzMxMSw3IEBACiAgICBbKDAsIDApLCAoMSwgMSksICgyLCA0KSwgKDMsIDkpLCAoNCwgMTYpLCAoNSwgMjUpXQogICAgPj4+ICMgdGhlIHR1cGxlIG11c3QgYmUgcGFyZW50aGVzaXplZCwgb3RoZXJ3aXNlIGFuIGVycm9yIGlzIHJhaXNlZAogICAgPj4+IFt4LCB4KioyIGZvciB4IGluIHJhbmdlKDYpXQotICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxCisgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+CiAgICAgICAgW3gsIHgqKjIgZm9yIHggaW4gcmFuZ2UoNildCiAgICAgICAgICAgICAgICAgICBeCiAgICBTeW50YXhFcnJvcjogaW52YWxpZCBzeW50YXgKZGlmZiAtLWdpdCBhL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QgYi9Eb2MvdHV0b3JpYWwvaW5wdXRvdXRwdXQucnN0CmluZGV4IDNlMzJhZjIuLjc4ZDZiYTMgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9pbnB1dG91dHB1dC5yc3QKKysrIGIvRG9jL3R1dG9yaWFsL2lucHV0b3V0cHV0LnJzdApAQCAtMTAxLDcgKzEwMSw3IEBACiAgICAxMCAxMDAgMTAwMAogCiAoTm90ZSB0aGF0IGluIHRoZSBmaXJzdCBleGFtcGxlLCBvbmUgc3BhY2UgYmV0d2VlbiBlYWNoIGNvbHVtbiB3YXMgYWRkZWQgYnkgdGhlCi13YXkgOmtleXdvcmQ6YHByaW50YCB3b3JrczogaXQgYWx3YXlzIGFkZHMgc3BhY2VzIGJldHdlZW4gaXRzIGFyZ3VtZW50cy4pCit3YXkgOmtleXdvcmQ6YHByaW50YCB3b3JrczogYnkgZGVmYXVsdCBpdCBhZGRzIHNwYWNlcyBiZXR3ZWVuIGl0cyBhcmd1bWVudHMuKQogCiBUaGlzIGV4YW1wbGUgZGVtb25zdHJhdGVzIHRoZSA6bWV0aDpgc3RyLnJqdXN0YCBtZXRob2Qgb2Ygc3RyaW5nCiBvYmplY3RzLCB3aGljaCByaWdodC1qdXN0aWZpZXMgYSBzdHJpbmcgaW4gYSBmaWVsZCBvZiBhIGdpdmVuIHdpZHRoIGJ5IHBhZGRpbmcKQEAgLTM0MCw3ICszNDAsNyBAQAogICAgPj4+IGYuY2xvc2UoKQogICAgPj4+IGYucmVhZCgpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID8KKyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT4KICAgIFZhbHVlRXJyb3I6IEkvTyBvcGVyYXRpb24gb24gY2xvc2VkIGZpbGUKIAogSXQgaXMgZ29vZCBwcmFjdGljZSB0byB1c2UgdGhlIDprZXl3b3JkOmB3aXRoYCBrZXl3b3JkIHdoZW4gZGVhbGluZyB3aXRoIGZpbGUKQEAgLTM5MCw2ICszOTAsNyBAQAogSWYgeW91IGhhdmUgYW4gb2JqZWN0IGBgeGBgLCB5b3UgY2FuIHZpZXcgaXRzIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIHdpdGggYQogc2ltcGxlIGxpbmUgb2YgY29kZTo6CiAKKyAgID4+PiBpbXBvcnQganNvbgogICAgPj4+IGpzb24uZHVtcHMoWzEsICdzaW1wbGUnLCAnbGlzdCddKQogICAgJ1sxLCAic2ltcGxlIiwgImxpc3QiXScKIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdCBiL0RvYy90dXRvcmlhbC9pbnRlcnByZXRlci5yc3QKaW5kZXggNTBlNTBjNy4uYjcyN2JlMCAxMDA2NDQKLS0tIGEvRG9jL3R1dG9yaWFsL2ludGVycHJldGVyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW50ZXJwcmV0ZXIucnN0CkBAIC0xMjYsNDAgKzEyNiwyMyBAQAogU291cmNlIENvZGUgRW5jb2RpbmcKIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUl0IGlzIHBvc3NpYmxlIHRvIHVzZSBlbmNvZGluZ3MgZGlmZmVyZW50IHRoYW4gQVNDSUkgaW4gUHl0aG9uIHNvdXJjZSBmaWxlcy4gVGhlCi1iZXN0IHdheSB0byBkbyBpdCBpcyB0byBwdXQgb25lIG1vcmUgc3BlY2lhbCBjb21tZW50IGxpbmUgcmlnaHQgYWZ0ZXIgdGhlIGBgIyFgYAotbGluZSB0byBkZWZpbmUgdGhlIHNvdXJjZSBmaWxlIGVuY29kaW5nOjoKK0J5IGRlZmF1bHQsIFB5dGhvbiBzb3VyY2UgZmlsZXMgYXJlIHRyZWF0ZWQgYXMgZW5jb2RlZCBpbiBBU0NJSS4KK1RvIGRlY2xhcmUgYW4gZW5jb2Rpbmcgb3RoZXIgdGhhbiB0aGUgZGVmYXVsdCBvbmUsIGEgc3BlY2lhbCBjb21tZW50IGxpbmUKK3Nob3VsZCBiZSBhZGRlZCBhcyB0aGUgKmZpcnN0KiBsaW5lIG9mIHRoZSBmaWxlLiAgVGhlIHN5bnRheCBpcyBhcyBmb2xsb3dzOjoKIAogICAgIyAtKi0gY29kaW5nOiBlbmNvZGluZyAtKi0KIAord2hlcmUgKmVuY29kaW5nKiBpcyBvbmUgb2YgdGhlIHZhbGlkIDptb2Q6YGNvZGVjc2Agc3VwcG9ydGVkIGJ5IFB5dGhvbi4KIAotV2l0aCB0aGF0IGRlY2xhcmF0aW9uLCBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc291cmNlIGZpbGUgd2lsbCBiZSB0cmVhdGVkIGFzCi1oYXZpbmcgdGhlIGVuY29kaW5nICplbmNvZGluZyosIGFuZCBpdCB3aWxsIGJlIHBvc3NpYmxlIHRvIGRpcmVjdGx5IHdyaXRlCi1Vbmljb2RlIHN0cmluZyBsaXRlcmFscyBpbiB0aGUgc2VsZWN0ZWQgZW5jb2RpbmcuICBUaGUgbGlzdCBvZiBwb3NzaWJsZQotZW5jb2RpbmdzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLCBpbiB0aGUgc2VjdGlvbiBvbgotOm1vZDpgY29kZWNzYC4KK0ZvciBleGFtcGxlLCB0byBkZWNsYXJlIHRoYXQgV2luZG93cy0xMjUyIGVuY29kaW5nIGlzIHRvIGJlIHVzZWQsIHRoZSBmaXJzdAorbGluZSBvZiB5b3VyIHNvdXJjZSBjb2RlIGZpbGUgc2hvdWxkIGJlOjoKIAotRm9yIGV4YW1wbGUsIHRvIHdyaXRlIFVuaWNvZGUgbGl0ZXJhbHMgaW5jbHVkaW5nIHRoZSBFdXJvIGN1cnJlbmN5IHN5bWJvbCwgdGhlCi1JU08tODg1OS0xNSBlbmNvZGluZyBjYW4gYmUgdXNlZCwgd2l0aCB0aGUgRXVybyBzeW1ib2wgaGF2aW5nIHRoZSBvcmRpbmFsIHZhbHVlCi0xNjQuICBUaGlzIHNjcmlwdCwgd2hlbiBzYXZlZCBpbiB0aGUgSVNPLTg4NTktMTUgZW5jb2RpbmcsIHdpbGwgcHJpbnQgdGhlIHZhbHVlCi04MzY0ICh0aGUgVW5pY29kZSBjb2RlIHBvaW50IGNvcnJlc3BvbmRpbmcgdG8gdGhlIEV1cm8gc3ltYm9sKSBhbmQgdGhlbiBleGl0OjoKKyAgICMgLSotIGNvZGluZzogY3AxMjUyIC0qLQogCi0gICAjIC0qLSBjb2Rpbmc6IGlzby04ODU5LTE1IC0qLQorT25lIGV4Y2VwdGlvbiB0byB0aGUgKmZpcnN0IGxpbmUqIHJ1bGUgaXMgd2hlbiB0aGUgc291cmNlIGNvZGUgc3RhcnRzIHdpdGggYQorOnJlZjpgVU5JWCAic2hlYmFuZyIgbGluZSA8dHV0LXNjcmlwdHM+YC4gIEluIHRoaXMgY2FzZSwgdGhlIGVuY29kaW5nCitkZWNsYXJhdGlvbiBzaG91bGQgYmUgYWRkZWQgYXMgdGhlIHNlY29uZCBsaW5lIG9mIHRoZSBmaWxlLiAgRm9yIGV4YW1wbGU6OgogCi0gICBjdXJyZW5jeSA9IHUi4oKsIgotICAgcHJpbnQgb3JkKGN1cnJlbmN5KQotCi1JZiB5b3VyIGVkaXRvciBzdXBwb3J0cyBzYXZpbmcgZmlsZXMgYXMgYGBVVEYtOGBgIHdpdGggYSBVVEYtOCAqYnl0ZSBvcmRlciBtYXJrKgotKGFrYSBCT00pLCB5b3UgY2FuIHVzZSB0aGF0IGluc3RlYWQgb2YgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24uIElETEUgc3VwcG9ydHMKLXRoaXMgY2FwYWJpbGl0eSBpZiBgYE9wdGlvbnMvR2VuZXJhbC9EZWZhdWx0IFNvdXJjZSBFbmNvZGluZy9VVEYtOGBgIGlzIHNldC4KLU5vdGljZSB0aGF0IHRoaXMgc2lnbmF0dXJlIGlzIG5vdCB1bmRlcnN0b29kIGluIG9sZGVyIFB5dGhvbiByZWxlYXNlcyAoMi4yIGFuZAotZWFybGllciksIGFuZCBhbHNvIG5vdCB1bmRlcnN0b29kIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtIGZvciBzY3JpcHQgZmlsZXMgd2l0aAotYGAjIWBgIGxpbmVzIChvbmx5IHVzZWQgb24gVW5peCBzeXN0ZW1zKS4KLQotQnkgdXNpbmcgVVRGLTggKGVpdGhlciB0aHJvdWdoIHRoZSBzaWduYXR1cmUgb3IgYW4gZW5jb2RpbmcgZGVjbGFyYXRpb24pLAotY2hhcmFjdGVycyBvZiBtb3N0IGxhbmd1YWdlcyBpbiB0aGUgd29ybGQgY2FuIGJlIHVzZWQgc2ltdWx0YW5lb3VzbHkgaW4gc3RyaW5nCi1saXRlcmFscyBhbmQgY29tbWVudHMuICBVc2luZyBub24tQVNDSUkgY2hhcmFjdGVycyBpbiBpZGVudGlmaWVycyBpcyBub3QKLXN1cHBvcnRlZC4gVG8gZGlzcGxheSBhbGwgdGhlc2UgY2hhcmFjdGVycyBwcm9wZXJseSwgeW91ciBlZGl0b3IgbXVzdCByZWNvZ25pemUKLXRoYXQgdGhlIGZpbGUgaXMgVVRGLTgsIGFuZCBpdCBtdXN0IHVzZSBhIGZvbnQgdGhhdCBzdXBwb3J0cyBhbGwgdGhlIGNoYXJhY3RlcnMKLWluIHRoZSBmaWxlLgorICAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisgICAjIC0qLSBjb2Rpbmc6IGNwMTI1MiAtKi0KIApkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL2ludHJvZHVjdGlvbi5yc3QgYi9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdAppbmRleCBiN2JlMDBlLi4yZmY3NzZlIDEwMDY0NAotLS0gYS9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvaW50cm9kdWN0aW9uLnJzdApAQCAtMTQ5LDEyICsxNDksMTIgQEAKICAgICJkb2Vzbid0IgogICAgPj4+ICJkb2Vzbid0IiAgIyAuLi5vciB1c2UgZG91YmxlIHF1b3RlcyBpbnN0ZWFkCiAgICAiZG9lc24ndCIKLSAgID4+PiAnIlllcywiIGhlIHNhaWQuJwotICAgJyJZZXMsIiBoZSBzYWlkLicKLSAgID4+PiAiXCJZZXMsXCIgaGUgc2FpZC4iCi0gICAnIlllcywiIGhlIHNhaWQuJwotICAgPj4+ICciSXNuXCd0LCIgc2hlIHNhaWQuJwotICAgJyJJc25cJ3QsIiBzaGUgc2FpZC4nCisgICA+Pj4gJyJZZXMsIiB0aGV5IHNhaWQuJworICAgJyJZZXMsIiB0aGV5IHNhaWQuJworICAgPj4+ICJcIlllcyxcIiB0aGV5IHNhaWQuIgorICAgJyJZZXMsIiB0aGV5IHNhaWQuJworICAgPj4+ICciSXNuXCd0LCIgdGhleSBzYWlkLicKKyAgICciSXNuXCd0LCIgdGhleSBzYWlkLicKIAogSW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyLCB0aGUgb3V0cHV0IHN0cmluZyBpcyBlbmNsb3NlZCBpbiBxdW90ZXMgYW5kCiBzcGVjaWFsIGNoYXJhY3RlcnMgYXJlIGVzY2FwZWQgd2l0aCBiYWNrc2xhc2hlcy4gIFdoaWxlIHRoaXMgbWlnaHQgc29tZXRpbWVzCkBAIC0xNjUsMTAgKzE2NSwxMCBAQAogcmVhZGFibGUgb3V0cHV0LCBieSBvbWl0dGluZyB0aGUgZW5jbG9zaW5nIHF1b3RlcyBhbmQgYnkgcHJpbnRpbmcgZXNjYXBlZAogYW5kIHNwZWNpYWwgY2hhcmFjdGVyczo6CiAKLSAgID4+PiAnIklzblwndCwiIHNoZSBzYWlkLicKLSAgICciSXNuXCd0LCIgc2hlIHNhaWQuJwotICAgPj4+IHByaW50ICciSXNuXCd0LCIgc2hlIHNhaWQuJwotICAgIklzbid0LCIgc2hlIHNhaWQuCisgICA+Pj4gJyJJc25cJ3QsIiB0aGV5IHNhaWQuJworICAgJyJJc25cJ3QsIiB0aGV5IHNhaWQuJworICAgPj4+IHByaW50ICciSXNuXCd0LCIgdGhleSBzYWlkLicKKyAgICJJc24ndCwiIHRoZXkgc2FpZC4KICAgID4+PiBzID0gJ0ZpcnN0IGxpbmUuXG5TZWNvbmQgbGluZS4nICAjIFxuIG1lYW5zIG5ld2xpbmUKICAgID4+PiBzICAjIHdpdGhvdXQgcHJpbnQsIFxuIGlzIGluY2x1ZGVkIGluIHRoZSBvdXRwdXQKICAgICdGaXJzdCBsaW5lLlxuU2Vjb25kIGxpbmUuJwpAQCAtMjE4LDYgKzIxOCwxMyBAQAogICAgPj4+ICdQeScgJ3Rob24nCiAgICAnUHl0aG9uJwogCitUaGlzIGZlYXR1cmUgaXMgcGFydGljdWxhcmx5IHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIGJyZWFrIGxvbmcgc3RyaW5nczo6CisKKyAgID4+PiB0ZXh0ID0gKCdQdXQgc2V2ZXJhbCBzdHJpbmdzIHdpdGhpbiBwYXJlbnRoZXNlcyAnCisgICAuLi4gICAgICAgICAndG8gaGF2ZSB0aGVtIGpvaW5lZCB0b2dldGhlci4nKQorICAgPj4+IHRleHQKKyAgICdQdXQgc2V2ZXJhbCBzdHJpbmdzIHdpdGhpbiBwYXJlbnRoZXNlcyB0byBoYXZlIHRoZW0gam9pbmVkIHRvZ2V0aGVyLicKKwogVGhpcyBvbmx5IHdvcmtzIHdpdGggdHdvIGxpdGVyYWxzIHRob3VnaCwgbm90IHdpdGggdmFyaWFibGVzIG9yIGV4cHJlc3Npb25zOjoKIAogICAgPj4+IHByZWZpeCA9ICdQeScKQEAgLTIzMywxMyArMjQwLDYgQEAKICAgID4+PiBwcmVmaXggKyAndGhvbicKICAgICdQeXRob24nCiAKLVRoaXMgZmVhdHVyZSBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gYnJlYWsgbG9uZyBzdHJpbmdzOjoKLQotICAgPj4+IHRleHQgPSAoJ1B1dCBzZXZlcmFsIHN0cmluZ3Mgd2l0aGluIHBhcmVudGhlc2VzICcKLSAgIC4uLiAgICAgICAgICd0byBoYXZlIHRoZW0gam9pbmVkIHRvZ2V0aGVyLicpCi0gICA+Pj4gdGV4dAotICAgJ1B1dCBzZXZlcmFsIHN0cmluZ3Mgd2l0aGluIHBhcmVudGhlc2VzIHRvIGhhdmUgdGhlbSBqb2luZWQgdG9nZXRoZXIuJwotCiBTdHJpbmdzIGNhbiBiZSAqaW5kZXhlZCogKHN1YnNjcmlwdGVkKSwgd2l0aCB0aGUgZmlyc3QgY2hhcmFjdGVyIGhhdmluZyBpbmRleCAwLgogVGhlcmUgaXMgbm8gc2VwYXJhdGUgY2hhcmFjdGVyIHR5cGU7IGEgY2hhcmFjdGVyIGlzIHNpbXBseSBhIHN0cmluZyBvZiBzaXplCiBvbmU6OgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0IGIvRG9jL3R1dG9yaWFsL21vZHVsZXMucnN0CmluZGV4IDZmYjRmZmQuLjA0MmQyMzMgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9tb2R1bGVzLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvbW9kdWxlcy5yc3QKQEAgLTEwOCw2ICsxMDgsMjUgQEAKIGZyb3duZWQgdXBvbiwgc2luY2UgaXQgb2Z0ZW4gY2F1c2VzIHBvb3JseSByZWFkYWJsZSBjb2RlLiBIb3dldmVyLCBpdCBpcyBva2F5IHRvCiB1c2UgaXQgdG8gc2F2ZSB0eXBpbmcgaW4gaW50ZXJhY3RpdmUgc2Vzc2lvbnMuCiAKK0lmIHRoZSBtb2R1bGUgbmFtZSBpcyBmb2xsb3dlZCBieSA6a2V5d29yZDpgYXNgLCB0aGVuIHRoZSBuYW1lCitmb2xsb3dpbmcgOmtleXdvcmQ6YGFzYCBpcyBib3VuZCBkaXJlY3RseSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlLgorCis6OgorCisgICA+Pj4gaW1wb3J0IGZpYm8gYXMgZmliCisgICA+Pj4gZmliLmZpYig1MDApCisgICAwIDEgMSAyIDMgNSA4IDEzIDIxIDM0IDU1IDg5IDE0NCAyMzMgMzc3CisKK1RoaXMgaXMgZWZmZWN0aXZlbHkgaW1wb3J0aW5nIHRoZSBtb2R1bGUgaW4gdGhlIHNhbWUgd2F5IHRoYXQgYGBpbXBvcnQgZmlib2BgCit3aWxsIGRvLCB3aXRoIHRoZSBvbmx5IGRpZmZlcmVuY2Ugb2YgaXQgYmVpbmcgYXZhaWxhYmxlIGFzIGBgZmliYGAuCisKK0l0IGNhbiBhbHNvIGJlIHVzZWQgd2hlbiB1dGlsaXNpbmcgOmtleXdvcmQ6YGZyb21gIHdpdGggc2ltaWxhciBlZmZlY3RzOjoKKworICAgPj4+IGZyb20gZmlibyBpbXBvcnQgZmliIGFzIGZpYm9uYWNjaQorICAgPj4+IGZpYm9uYWNjaSg1MDApCisgICAwIDEgMSAyIDMgNSA4IDEzIDIxIDM0IDU1IDg5IDE0NCAyMzMgMzc3CisKKwogLi4gbm90ZTo6CiAKICAgIEZvciBlZmZpY2llbmN5IHJlYXNvbnMsIGVhY2ggbW9kdWxlIGlzIG9ubHkgaW1wb3J0ZWQgb25jZSBwZXIgaW50ZXJwcmV0ZXIKQEAgLTM1OCw3ICszNzcsNyBAQAogbmFtZWQgYGBCYGAgaW4gYSBwYWNrYWdlIG5hbWVkIGBgQWBgLiAgSnVzdCBsaWtlIHRoZSB1c2Ugb2YgbW9kdWxlcyBzYXZlcyB0aGUKIGF1dGhvcnMgb2YgZGlmZmVyZW50IG1vZHVsZXMgZnJvbSBoYXZpbmcgdG8gd29ycnkgYWJvdXQgZWFjaCBvdGhlcidzIGdsb2JhbAogdmFyaWFibGUgbmFtZXMsIHRoZSB1c2Ugb2YgZG90dGVkIG1vZHVsZSBuYW1lcyBzYXZlcyB0aGUgYXV0aG9ycyBvZiBtdWx0aS1tb2R1bGUKLXBhY2thZ2VzIGxpa2UgTnVtUHkgb3IgdGhlIFB5dGhvbiBJbWFnaW5nIExpYnJhcnkgZnJvbSBoYXZpbmcgdG8gd29ycnkgYWJvdXQKK3BhY2thZ2VzIGxpa2UgTnVtUHkgb3IgUGlsbG93IGZyb20gaGF2aW5nIHRvIHdvcnJ5IGFib3V0CiBlYWNoIG90aGVyJ3MgbW9kdWxlIG5hbWVzLgogCiBTdXBwb3NlIHlvdSB3YW50IHRvIGRlc2lnbiBhIGNvbGxlY3Rpb24gb2YgbW9kdWxlcyAoYSAicGFja2FnZSIpIGZvciB0aGUgdW5pZm9ybQpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0IGIvRG9jL3R1dG9yaWFsL3N0ZGxpYjIucnN0CmluZGV4IDUwYjc0ZDEuLjIyYzJhNGYgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC9zdGRsaWIyLnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvc3RkbGliMi5yc3QKQEAgLTEsOCArMSw4IEBACiAuLiBfdHV0LWJyaWVmdG91cnR3bzoKIAotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi1CcmllZiBUb3VyIG9mIHRoZSBTdGFuZGFyZCBMaWJyYXJ5IC0tIFBhcnQgSUkKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorQnJpZWYgVG91ciBvZiB0aGUgU3RhbmRhcmQgTGlicmFyeSAtLS0gUGFydCBJSQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogCiBUaGlzIHNlY29uZCB0b3VyIGNvdmVycyBtb3JlIGFkdmFuY2VkIG1vZHVsZXMgdGhhdCBzdXBwb3J0IHByb2Zlc3Npb25hbAogcHJvZ3JhbW1pbmcgbmVlZHMuICBUaGVzZSBtb2R1bGVzIHJhcmVseSBvY2N1ciBpbiBzbWFsbCBzY3JpcHRzLgpkaWZmIC0tZ2l0IGEvRG9jL3R1dG9yaWFsL3doYXRub3cucnN0IGIvRG9jL3R1dG9yaWFsL3doYXRub3cucnN0CmluZGV4IDg5ZGZhNmEuLmY2Y2U0ZjQgMTAwNjQ0Ci0tLSBhL0RvYy90dXRvcmlhbC93aGF0bm93LnJzdAorKysgYi9Eb2MvdHV0b3JpYWwvd2hhdG5vdy5yc3QKQEAgLTM4LDcgKzM4LDcgQEAKIAogKiBodHRwczovL2RvY3MucHl0aG9uLm9yZzogIEZhc3QgYWNjZXNzIHRvIFB5dGhvbidzICBkb2N1bWVudGF0aW9uLgogCi0qIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk6IFRoZSBQeXRob24gUGFja2FnZSBJbmRleCwgcHJldmlvdXNseSBhbHNvIG5pY2tuYW1lZAorKiBodHRwczovL3B5cGkub3JnOiBUaGUgUHl0aG9uIFBhY2thZ2UgSW5kZXgsIHByZXZpb3VzbHkgYWxzbyBuaWNrbmFtZWQKICAgdGhlIENoZWVzZSBTaG9wLCBpcyBhbiBpbmRleCBvZiB1c2VyLWNyZWF0ZWQgUHl0aG9uIG1vZHVsZXMgdGhhdCBhcmUgYXZhaWxhYmxlCiAgIGZvciBkb3dubG9hZC4gIE9uY2UgeW91IGJlZ2luIHJlbGVhc2luZyBjb2RlLCB5b3UgY2FuIHJlZ2lzdGVyIGl0IGhlcmUgc28gdGhhdAogICBvdGhlcnMgY2FuIGZpbmQgaXQuCmRpZmYgLS1naXQgYS9Eb2MvdXNpbmcvY21kbGluZS5yc3QgYi9Eb2MvdXNpbmcvY21kbGluZS5yc3QKaW5kZXggYzZiMzcyYi4uYzI3ZWM0ZiAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL2NtZGxpbmUucnN0CisrKyBiL0RvYy91c2luZy9jbWRsaW5lLnJzdApAQCAtMjQsNyArMjQsNyBAQAogCiBXaGVuIGludm9raW5nIFB5dGhvbiwgeW91IG1heSBzcGVjaWZ5IGFueSBvZiB0aGVzZSBvcHRpb25zOjoKIAotICAgIHB5dGhvbiBbLUJkRWlPUXNSU3R1VXZWV3hYMz9dIFstYyBjb21tYW5kIHwgLW0gbW9kdWxlLW5hbWUgfCBzY3JpcHQgfCAtIF0gW2FyZ3NdCisgICAgcHl0aG9uIFstYkJkRWlPUXNSU3R1VXZWV3hYMz9dIFstYyBjb21tYW5kIHwgLW0gbW9kdWxlLW5hbWUgfCBzY3JpcHQgfCAtIF0gW2FyZ3NdCiAKIFRoZSBtb3N0IGNvbW1vbiB1c2UgY2FzZSBpcywgb2YgY291cnNlLCBhIHNpbXBsZSBpbnZvY2F0aW9uIG9mIGEgc2NyaXB0OjoKIApAQCAtMTkxLDYgKzE5MSwxOSBAQAogTWlzY2VsbGFuZW91cyBvcHRpb25zCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn4KIAorLi4gY21kb3B0aW9uOjogLWIKKworICAgSXNzdWUgYSB3YXJuaW5nIHdoZW4gY29tcGFyaW5nIDpjbGFzczpgdW5pY29kZWAgd2l0aCA6Y2xhc3M6YGJ5dGVhcnJheWAuCisgICBJc3N1ZSBhbiBlcnJvciB3aGVuIHRoZSBvcHRpb24gaXMgZ2l2ZW4gdHdpY2UgKDpvcHRpb246YCEtYmJgKS4KKworICAgTm90ZSB0aGF0LCB1bmxpa2UgdGhlIGNvcnJlc3BvbmRpbmcgUHl0aG9uIDMueCBmbGFnLCB0aGlzIHdpbGwgKipub3QqKiBlbWl0CisgICB3YXJuaW5ncyBmb3IgY29tcGFyaXNvbnMgYmV0d2VlbiA6Y2xhc3M6YHN0cmAgYW5kIDpjbGFzczpgdW5pY29kZWAuCisgICBJbnN0ZWFkLCB0aGUgYGBzdHJgYCBpbnN0YW5jZSB3aWxsIGJlIGltcGxpY2l0bHkgZGVjb2RlZCB0byBgYHVuaWNvZGVgYCBhbmQKKyAgIFVuaWNvZGUgY29tcGFyaXNvbiB1c2VkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjYKKworCiAuLiBjbWRvcHRpb246OiAtQgogCiAgICBJZiBnaXZlbiwgUHl0aG9uIHdvbid0IHRyeSB0byB3cml0ZSBgYC5weWNgYCBvciBgYC5weW9gYCBmaWxlcyBvbiB0aGUKQEAgLTM5OCwxNiArNDExLDE2IEBACiAgICBTa2lwIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzb3VyY2UsIGFsbG93aW5nIHVzZSBvZiBub24tVW5peCBmb3JtcyBvZgogICAgYGAjIWNtZGBgLiAgVGhpcyBpcyBpbnRlbmRlZCBmb3IgYSBET1Mgc3BlY2lmaWMgaGFjayBvbmx5LgogCi0gICAuLiBub3RlOjogVGhlIGxpbmUgbnVtYmVycyBpbiBlcnJvciBtZXNzYWdlcyB3aWxsIGJlIG9mZiBieSBvbmUuCi0KIC4uIGNtZG9wdGlvbjo6IC0zCiAKICAgIFdhcm4gYWJvdXQgUHl0aG9uIDMueCBwb3NzaWJsZSBpbmNvbXBhdGliaWxpdGllcyBieSBlbWl0dGluZyBhCiAgICA6ZXhjOmBEZXByZWNhdGlvbldhcm5pbmdgIGZvciBmZWF0dXJlcyB0aGF0IGFyZSByZW1vdmVkIG9yIHNpZ25pZmljYW50bHkKLSAgIGNoYW5nZWQgaW4gUHl0aG9uIDMuCisgICBjaGFuZ2VkIGluIFB5dGhvbiAzIGFuZCBjYW4ndCBiZSBkZXRlY3RlZCB1c2luZyBzdGF0aWMgY29kZSBhbmFseXNpcy4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMi42CiAKKyAgIFNlZSA6ZG9jOmAvaG93dG8vcHlwb3J0aW5nYCBmb3IgbW9yZSBkZXRhaWxzLgorCiBPcHRpb25zIHlvdSBzaG91bGRuJ3QgdXNlCiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CiAKQEAgLTY0OCwzICs2NjEsMTcgQEAKIAogICAgSWYgc2V0LCBQeXRob24gd2lsbCBwcmludCBtZW1vcnkgYWxsb2NhdGlvbiBzdGF0aXN0aWNzIGV2ZXJ5IHRpbWUgYSBuZXcKICAgIG9iamVjdCBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCisKKy4uIGVudnZhcjo6IFBZVEhPTlNIT1dBTExPQ0NPVU5UCisKKyAgIElmIHNldCBhbmQgUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIGBgQ09VTlRfQUxMT0NTYGAgZGVmaW5lZCwgUHl0aG9uIHdpbGwKKyAgIGR1bXAgYWxsb2NhdGlvbnMgY291bnRzIGludG8gc3RkZXJyIG9uIHNodXRkb3duLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjcuMTUKKworLi4gZW52dmFyOjogUFlUSE9OU0hPV1JFRkNPVU5UCisKKyAgIElmIHNldCwgUHl0aG9uIHdpbGwgcHJpbnQgdGhlIHRvdGFsIHJlZmVyZW5jZSBjb3VudCB3aGVuIHRoZSBwcm9ncmFtCisgICBmaW5pc2hlcyBvciBhZnRlciBlYWNoIHN0YXRlbWVudCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDIuNy4xNQpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL2luZGV4LnJzdCBiL0RvYy91c2luZy9pbmRleC5yc3QKaW5kZXggMTIwMTE1My4uOTZiZDRiMCAxMDA2NDQKLS0tIGEvRG9jL3VzaW5nL2luZGV4LnJzdAorKysgYi9Eb2MvdXNpbmcvaW5kZXgucnN0CkBAIC02LDcgKzYsNyBAQAogCiAKIFRoaXMgcGFydCBvZiB0aGUgZG9jdW1lbnRhdGlvbiBpcyBkZXZvdGVkIHRvIGdlbmVyYWwgaW5mb3JtYXRpb24gb24gdGhlIHNldHVwCi1vZiB0aGUgUHl0aG9uIGVudmlyb25tZW50IG9uIGRpZmZlcmVudCBwbGF0Zm9ybSwgdGhlIGludm9jYXRpb24gb2YgdGhlCitvZiB0aGUgUHl0aG9uIGVudmlyb25tZW50IG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMsIHRoZSBpbnZvY2F0aW9uIG9mIHRoZQogaW50ZXJwcmV0ZXIgYW5kIHRoaW5ncyB0aGF0IG1ha2Ugd29ya2luZyB3aXRoIFB5dGhvbiBlYXNpZXIuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3VuaXgucnN0IGIvRG9jL3VzaW5nL3VuaXgucnN0CmluZGV4IGRkNzU0YTYuLjc3MTliYWEgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy91bml4LnJzdAorKysgYi9Eb2MvdXNpbmcvdW5peC5yc3QKQEAgLTQxLDkgKzQxLDExIEBACiAKICogRnJlZUJTRCB1c2VycywgdG8gYWRkIHRoZSBwYWNrYWdlIHVzZTo6CiAKLSAgICAgcGtnX2FkZCAtciBweXRob24KKyAgICAgcGtnIGluc3RhbGwgcHl0aG9uMwogCi0qIE9wZW5CU0QgdXNlcnMgdXNlOjoKKyogT3BlbkJTRCB1c2VycywgdG8gYWRkIHRoZSBwYWNrYWdlIHVzZTo6CisKKyAgICAgcGtnX2FkZCAtciBweXRob24KIAogICAgICBwa2dfYWRkIGZ0cDovL2Z0cC5vcGVuYnNkLm9yZy9wdWIvT3BlbkJTRC80LjIvcGFja2FnZXMvPGluc2VydCB5b3VyIGFyY2hpdGVjdHVyZSBoZXJlPi9weXRob24tPHZlcnNpb24+LnRnegogCkBAIC0xMzYsMTcgKzEzOCwxMiBAQAogVG8gdXNlIHNoZWxsIGNvbW1hbmRzIGluIHlvdXIgUHl0aG9uIHNjcmlwdHMsIGxvb2sgYXQgdGhlIDptb2Q6YHN1YnByb2Nlc3NgIG1vZHVsZS4KIAogCi1FZGl0b3JzCi09PT09PT09CitFZGl0b3JzIGFuZCBJREVzCis9PT09PT09PT09PT09PT09CiAKLVZpbSBhbmQgRW1hY3MgYXJlIGV4Y2VsbGVudCBlZGl0b3JzIHdoaWNoIHN1cHBvcnQgUHl0aG9uIHZlcnkgd2VsbC4gIEZvciBtb3JlCi1pbmZvcm1hdGlvbiBvbiBob3cgdG8gY29kZSBpbiBQeXRob24gaW4gdGhlc2UgZWRpdG9ycywgbG9vayBhdDoKK1RoZXJlIGFyZSBhIG51bWJlciBvZiBJREVzIHRoYXQgc3VwcG9ydCBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UuCitNYW55IGVkaXRvcnMgYW5kIElERXMgcHJvdmlkZSBzeW50YXggaGlnaGxpZ2h0aW5nLCBkZWJ1Z2dpbmcgdG9vbHMsIGFuZCBQRVAtOCBjaGVja3MuCiAKLSogaHR0cDovL3d3dy52aW0ub3JnL3NjcmlwdHMvc2NyaXB0LnBocD9zY3JpcHRfaWQ9NzkwCi0qIGh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3B5dGhvbi1tb2RlCi0KLUdlYW55IGlzIGFuIGV4Y2VsbGVudCBJREUgd2l0aCBzdXBwb3J0IGZvciBhIGxvdCBvZiBsYW5ndWFnZXMuIEZvciBtb3JlCi1pbmZvcm1hdGlvbiwgcmVhZDogaHR0cHM6Ly93d3cuZ2Vhbnkub3JnLwotCi1Lb21vZG8gZWRpdCBpcyBhbm90aGVyIGV4dHJlbWVseSBnb29kIElERS4gIEl0IGFsc28gaGFzIHN1cHBvcnQgZm9yIGEgbG90IG9mCi1sYW5ndWFnZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCByZWFkIGh0dHBzOi8va29tb2RvaWRlLmNvbS8uCitQbGVhc2UgZ28gdG8gYFB5dGhvbiBFZGl0b3JzIDxodHRwczovL3dpa2kucHl0aG9uLm9yZy9tb2luL1B5dGhvbkVkaXRvcnM+YF8gYW5kCitgSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudHMgPGh0dHBzOi8vd2lraS5weXRob24ub3JnL21vaW4vSW50ZWdyYXRlZERldmVsb3BtZW50RW52aXJvbm1lbnRzPmBfCitmb3IgYSBjb21wcmVoZW5zaXZlIGxpc3QuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvRG9jL3VzaW5nL3dpbmRvd3MucnN0IGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CmluZGV4IGY1OTc0NzYuLjc3OGI4ODQgMTAwNjQ0Ci0tLSBhL0RvYy91c2luZy93aW5kb3dzLnJzdAorKysgYi9Eb2MvdXNpbmcvd2luZG93cy5yc3QKQEAgLTI0Miw3ICsyNDIsNyBAQAogUHlXaW4zMgogLS0tLS0tLQogCi1UaGUgYFB5V2luMzIgPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHl3aW4zMj5gXyBtb2R1bGUgYnkgTWFyayBIYW1tb25kCitUaGUgYFB5V2luMzIgPGh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weXdpbjMyPmBfIG1vZHVsZSBieSBNYXJrIEhhbW1vbmQKIGlzIGEgY29sbGVjdGlvbiBvZiBtb2R1bGVzIGZvciBhZHZhbmNlZCBXaW5kb3dzLXNwZWNpZmljIHN1cHBvcnQuICBUaGlzIGluY2x1ZGVzCiB1dGlsaXRpZXMgZm9yOgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi4wLnJzdCBiL0RvYy93aGF0c25ldy8yLjAucnN0CmluZGV4IDZkM2Y1NmUuLmEzNTcyOGEgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjAucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjAucnN0CkBAIC0xNDUsOCArMTQ1LDggQEAKIDgtYml0IG51bWJlciB1c2VkIGJ5IEFTQ0lJLCBtZWFuaW5nIHRoYXQgNjUsNTM2IGRpc3RpbmN0IGNoYXJhY3RlcnMgY2FuIGJlCiBzdXBwb3J0ZWQuCiAKLVRoZSBmaW5hbCBpbnRlcmZhY2UgZm9yIFVuaWNvZGUgc3VwcG9ydCB3YXMgYXJyaXZlZCBhdCB0aHJvdWdoIGNvdW50bGVzcyBvZnRlbi0KLXN0b3JteSBkaXNjdXNzaW9ucyBvbiB0aGUgcHl0aG9uLWRldiBtYWlsaW5nIGxpc3QsIGFuZCBtb3N0bHkgaW1wbGVtZW50ZWQgYnkKK1RoZSBmaW5hbCBpbnRlcmZhY2UgZm9yIFVuaWNvZGUgc3VwcG9ydCB3YXMgYXJyaXZlZCBhdCB0aHJvdWdoIGNvdW50bGVzcworb2Z0ZW4tc3Rvcm15IGRpc2N1c3Npb25zIG9uIHRoZSBweXRob24tZGV2IG1haWxpbmcgbGlzdCwgYW5kIG1vc3RseSBpbXBsZW1lbnRlZCBieQogTWFyYy1BbmRyw6kgTGVtYnVyZywgYmFzZWQgb24gYSBVbmljb2RlIHN0cmluZyB0eXBlIGltcGxlbWVudGF0aW9uIGJ5IEZyZWRyaWsKIEx1bmRoLiAgQSBkZXRhaWxlZCBleHBsYW5hdGlvbiBvZiB0aGUgaW50ZXJmYWNlIHdhcyB3cml0dGVuIHVwIGFzIDpwZXA6YDEwMGAsCiAiUHl0aG9uIFVuaWNvZGUgSW50ZWdyYXRpb24iLiBUaGlzIGFydGljbGUgd2lsbCBzaW1wbHkgY292ZXIgdGhlIG1vc3QKQEAgLTE2Niw3ICsxNjYsNyBAQAogcmVnaXN0ZXJpbmcgbmV3IGVuY29kaW5ncyB0aGF0IGFyZSB0aGVuIGF2YWlsYWJsZSB0aHJvdWdob3V0IGEgUHl0aG9uIHByb2dyYW0uCiBJZiBhbiBlbmNvZGluZyBpc24ndCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IGVuY29kaW5nIGlzIHVzdWFsbHkgNy1iaXQgQVNDSUksCiB0aG91Z2ggaXQgY2FuIGJlIGNoYW5nZWQgZm9yIHlvdXIgUHl0aG9uIGluc3RhbGxhdGlvbiBieSBjYWxsaW5nIHRoZQotOmZ1bmM6YHN5cy5zZXRkZWZhdWx0ZW5jb2RpbmcoZW5jb2RpbmcpYCBmdW5jdGlvbiBpbiBhIGN1c3RvbWlzZWQgdmVyc2lvbiBvZgorYGBzeXMuc2V0ZGVmYXVsdGVuY29kaW5nKGVuY29kaW5nKWBgIGZ1bmN0aW9uIGluIGEgY3VzdG9taXNlZCB2ZXJzaW9uIG9mCiA6ZmlsZTpgc2l0ZS5weWAuCiAKIENvbWJpbmluZyA4LWJpdCBhbmQgVW5pY29kZSBzdHJpbmdzIGFsd2F5cyBjb2VyY2VzIHRvIFVuaWNvZGUsIHVzaW5nIHRoZSBkZWZhdWx0CkBAIC0yMDMsNyArMjAzLDcgQEAKIAogVGhlIDptb2Q6YGNvZGVjc2AgbW9kdWxlIGNvbnRhaW5zIGZ1bmN0aW9ucyB0byBsb29rIHVwIGV4aXN0aW5nIGVuY29kaW5ncyBhbmQKIHJlZ2lzdGVyIG5ldyBvbmVzLiAgVW5sZXNzIHlvdSB3YW50IHRvIGltcGxlbWVudCBhIG5ldyBlbmNvZGluZywgeW91J2xsIG1vc3QKLW9mdGVuIHVzZSB0aGUgOmZ1bmM6YGNvZGVjcy5sb29rdXAoZW5jb2RpbmcpYCBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBhCitvZnRlbiB1c2UgdGhlIGBgY29kZWNzLmxvb2t1cChlbmNvZGluZylgYCBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBhCiA0LWVsZW1lbnQgdHVwbGU6IGBgKGVuY29kZV9mdW5jLCBkZWNvZGVfZnVuYywgc3RyZWFtX3JlYWRlciwgc3RyZWFtX3dyaXRlcilgYC4KIAogKiAqZW5jb2RlX2Z1bmMqIGlzIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBhIFVuaWNvZGUgc3RyaW5nLCBhbmQgcmV0dXJucyBhIDItdHVwbGUKQEAgLTYwMCw3ICs2MDAsNyBAQAogQ2hhbmdlcyB0byBCdWlsdC1pbiBGdW5jdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUEgbmV3IGJ1aWx0LWluLCA6ZnVuYzpgemlwKHNlcTEsIHNlcTIsIC4uLilgLCBoYXMgYmVlbiBhZGRlZC4gIDpmdW5jOmB6aXBgCitBIG5ldyBidWlsdC1pbiwgYGB6aXAoc2VxMSwgc2VxMiwgLi4uKWBgLCBoYXMgYmVlbiBhZGRlZC4gIDpmdW5jOmB6aXBgCiByZXR1cm5zIGEgbGlzdCBvZiB0dXBsZXMgd2hlcmUgZWFjaCB0dXBsZSBjb250YWlucyB0aGUgaS10aCBlbGVtZW50IGZyb20gZWFjaCBvZgogdGhlIGFyZ3VtZW50IHNlcXVlbmNlcy4gIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gOmZ1bmM6YHppcGAgYW5kIGBgbWFwKE5vbmUsCiBzZXExLCBzZXEyKWBgIGlzIHRoYXQgOmZ1bmM6YG1hcGAgcGFkcyB0aGUgc2VxdWVuY2VzIHdpdGggYGBOb25lYGAgaWYgdGhlCkBAIC02MTksNyArNjE5LDcgQEAKIHdvdWxkIGJlIGBgKDIsIDAsIDEsICdiZXRhJywgMSlgYC4gKmxldmVsKiBpcyBhIHN0cmluZyBzdWNoIGFzIGBgImFscGhhImBgLAogYGAiYmV0YSJgYCwgb3IgYGAiZmluYWwiYGAgZm9yIGEgZmluYWwgcmVsZWFzZS4KIAotRGljdGlvbmFyaWVzIGhhdmUgYW4gb2RkIG5ldyBtZXRob2QsIDptZXRoOmBzZXRkZWZhdWx0KGtleSwgZGVmYXVsdClgLCB3aGljaAorRGljdGlvbmFyaWVzIGhhdmUgYW4gb2RkIG5ldyBtZXRob2QsIGBgc2V0ZGVmYXVsdChrZXksIGRlZmF1bHQpYGAsIHdoaWNoCiBiZWhhdmVzIHNpbWlsYXJseSB0byB0aGUgZXhpc3RpbmcgOm1ldGg6YGdldGAgbWV0aG9kLiAgSG93ZXZlciwgaWYgdGhlIGtleSBpcwogbWlzc2luZywgOm1ldGg6YHNldGRlZmF1bHRgIGJvdGggcmV0dXJucyB0aGUgdmFsdWUgb2YgKmRlZmF1bHQqIGFzIDptZXRoOmBnZXRgCiB3b3VsZCBkbywgYW5kIGFsc28gaW5zZXJ0cyBpdCBpbnRvIHRoZSBkaWN0aW9uYXJ5IGFzIHRoZSB2YWx1ZSBmb3IgKmtleSouICBUaHVzLApAQCAtODg1LDggKzg4NSw4IEBACiBBUEkgZm9yIFhNTCkgcHJvdmlkZXMgYW4gZXZlbnQtZHJpdmVuIGludGVyZmFjZSB3aXRoIHNvbWUgc2ltaWxhcml0aWVzIHRvCiA6bW9kOmB4bWxsaWJgLCBhbmQgdGhlIERPTSAoRG9jdW1lbnQgT2JqZWN0IE1vZGVsKSBwcm92aWRlcyBhIHRyZWUtYmFzZWQKIGludGVyZmFjZSwgdHJhbnNmb3JtaW5nIGFuIFhNTCBkb2N1bWVudCBpbnRvIGEgdHJlZSBvZiBub2RlcyB0aGF0IGNhbiBiZQotdHJhdmVyc2VkIGFuZCBtb2RpZmllZC4gIFB5dGhvbiAyLjAgaW5jbHVkZXMgYSBTQVgyIGludGVyZmFjZSBhbmQgYSBzdHJpcHBlZC0KLWRvd24gRE9NIGludGVyZmFjZSBhcyBwYXJ0IG9mIHRoZSA6bW9kOmB4bWxgIHBhY2thZ2UuIEhlcmUgd2Ugd2lsbCBnaXZlIGEgYnJpZWYKK3RyYXZlcnNlZCBhbmQgbW9kaWZpZWQuICBQeXRob24gMi4wIGluY2x1ZGVzIGEgU0FYMiBpbnRlcmZhY2UgYW5kIGEgc3RyaXBwZWQtZG93bgorRE9NIGludGVyZmFjZSBhcyBwYXJ0IG9mIHRoZSA6bW9kOmB4bWxgIHBhY2thZ2UuIEhlcmUgd2Ugd2lsbCBnaXZlIGEgYnJpZWYKIG92ZXJ2aWV3IG9mIHRoZXNlIG5ldyBpbnRlcmZhY2VzOyBjb25zdWx0IHRoZSBQeXRob24gZG9jdW1lbnRhdGlvbiBvciB0aGUgc291cmNlCiBjb2RlIGZvciBjb21wbGV0ZSBkZXRhaWxzLiBUaGUgUHl0aG9uIFhNTCBTSUcgaXMgYWxzbyB3b3JraW5nIG9uIGltcHJvdmVkCiBkb2N1bWVudGF0aW9uLgpAQCAtMTAzOCw3ICsxMDM4LDcgQEAKIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBTZWN1cmUgU29ja2V0IExheWVyLCB3aGljaCBlbmNyeXB0cyB0aGUgZGF0YSBiZWluZwogc2VudCBvdmVyIGEgc29ja2V0LiAgV2hlbiBjb21waWxpbmcgUHl0aG9uLCB5b3UgY2FuIGVkaXQgOmZpbGU6YE1vZHVsZXMvU2V0dXBgCiB0byBpbmNsdWRlIFNTTCBzdXBwb3J0LCB3aGljaCBhZGRzIGFuIGFkZGl0aW9uYWwgZnVuY3Rpb24gdG8gdGhlIDptb2Q6YHNvY2tldGAKLW1vZHVsZTogOmZ1bmM6YHNvY2tldC5zc2woc29ja2V0LCBrZXlmaWxlLCBjZXJ0ZmlsZSlgLCB3aGljaCB0YWtlcyBhIHNvY2tldAorbW9kdWxlOiBgYHNvY2tldC5zc2woc29ja2V0LCBrZXlmaWxlLCBjZXJ0ZmlsZSlgYCwgd2hpY2ggdGFrZXMgYSBzb2NrZXQKIG9iamVjdCBhbmQgcmV0dXJucyBhbiBTU0wgc29ja2V0LiAgVGhlIDptb2Q6YGh0dHBsaWJgIGFuZCA6bW9kOmB1cmxsaWJgIG1vZHVsZXMKIHdlcmUgYWxzbyBjaGFuZ2VkIHRvIHN1cHBvcnQgYGBodHRwczovL2BgIFVSTHMsIHRob3VnaCBubyBvbmUgaGFzIGltcGxlbWVudGVkCiBGVFAgb3IgU01UUCBvdmVyIFNTTC4KZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjEucnN0IGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKaW5kZXggZjhiYjExYS4uZjEzZDU1YiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMS5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKQEAgLTE1OSw4ICsxNTksOCBAQAogUEVQIDIwNzogUmljaCBDb21wYXJpc29ucwogPT09PT09PT09PT09PT09PT09PT09PT09PQogCi1JbiBlYXJsaWVyIHZlcnNpb25zLCBQeXRob24ncyBzdXBwb3J0IGZvciBpbXBsZW1lbnRpbmcgY29tcGFyaXNvbnMgb24gdXNlci0KLWRlZmluZWQgY2xhc3NlcyBhbmQgZXh0ZW5zaW9uIHR5cGVzIHdhcyBxdWl0ZSBzaW1wbGUuIENsYXNzZXMgY291bGQgaW1wbGVtZW50IGEKK0luIGVhcmxpZXIgdmVyc2lvbnMsIFB5dGhvbidzIHN1cHBvcnQgZm9yIGltcGxlbWVudGluZyBjb21wYXJpc29ucyBvbiB1c2VyLWRlZmluZWQKK2NsYXNzZXMgYW5kIGV4dGVuc2lvbiB0eXBlcyB3YXMgcXVpdGUgc2ltcGxlLiBDbGFzc2VzIGNvdWxkIGltcGxlbWVudCBhCiA6bWV0aDpgX19jbXBfX2AgbWV0aG9kIHRoYXQgd2FzIGdpdmVuIHR3byBpbnN0YW5jZXMgb2YgYSBjbGFzcywgYW5kIGNvdWxkIG9ubHkKIHJldHVybiAwIGlmIHRoZXkgd2VyZSBlcXVhbCBvciArMSBvciAtMSBpZiB0aGV5IHdlcmVuJ3Q7IHRoZSBtZXRob2QgY291bGRuJ3QKIHJhaXNlIGFuIGV4Y2VwdGlvbiBvciByZXR1cm4gYW55dGhpbmcgb3RoZXIgdGhhbiBhIEJvb2xlYW4gdmFsdWUuICBVc2VycyBvZgpAQCAtMjA0LDcgKzIwNCw3IEBACiBsaXN0LCBvciBhbnkgb3RoZXIgUHl0aG9uIG9iamVjdC4gIEFsdGVybmF0aXZlbHkgdGhleSBjYW4gcmFpc2UgYW4gZXhjZXB0aW9uIGlmCiB0aGUgY29tcGFyaXNvbiBpcyBpbXBvc3NpYmxlLCBpbmNvbnNpc3RlbnQsIG9yIG90aGVyd2lzZSBtZWFuaW5nbGVzcy4KIAotVGhlIGJ1aWx0LWluIDpmdW5jOmBjbXAoQSxCKWAgZnVuY3Rpb24gY2FuIHVzZSB0aGUgcmljaCBjb21wYXJpc29uIG1hY2hpbmVyeSwKK1RoZSBidWlsdC1pbiBgYGNtcChBLEIpYGAgZnVuY3Rpb24gY2FuIHVzZSB0aGUgcmljaCBjb21wYXJpc29uIG1hY2hpbmVyeSwKIGFuZCBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZ5aW5nIHdoaWNoIGNvbXBhcmlzb24gb3BlcmF0aW9uIHRvCiB1c2U7IHRoaXMgaXMgZ2l2ZW4gYXMgb25lIG9mIHRoZSBzdHJpbmdzIGBgIjwiYGAsIGBgIjw9ImBgLCBgYCI+ImBgLCBgYCI+PSJgYCwKIGBgIj09ImBgLCBvciBgYCIhPSJgYC4gIElmIGNhbGxlZCB3aXRob3V0IHRoZSBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCwKQEAgLTM1MCw3ICszNTAsNyBAQAogYW5kIGFub3RoZXIgYmVpbmcgY2lyY3VsYXIgcmVmZXJlbmNlcyBpbiBkYXRhIHN0cnVjdHVyZXMgc3VjaCBhcyB0cmVlcy4KIAogRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgbWVtb2l6aW5nIGZ1bmN0aW9uIHRoYXQgY2FjaGVzIHRoZSByZXN1bHRzIG9mIGFub3RoZXIKLWZ1bmN0aW9uIDpmdW5jOmBmKHgpYCBieSBzdG9yaW5nIHRoZSBmdW5jdGlvbidzIGFyZ3VtZW50IGFuZCBpdHMgcmVzdWx0IGluIGEKK2Z1bmN0aW9uIGBgZih4KWBgIGJ5IHN0b3JpbmcgdGhlIGZ1bmN0aW9uJ3MgYXJndW1lbnQgYW5kIGl0cyByZXN1bHQgaW4gYQogZGljdGlvbmFyeTo6CiAKICAgIF9jYWNoZSA9IHt9CkBAIC00NjUsMTEgKzQ2NSwxMSBAQAogZGlzdGluZ3Vpc2ggdGhlIGZpbGVuYW1lcyBgYEZJTEUuUFlgYCBhbmQgYGBmaWxlLnB5YGAsIGV2ZW4gdGhvdWdoIHRoZXkgZG8gc3RvcmUKIHRoZSBmaWxlJ3MgbmFtZSAgaW4gaXRzIG9yaWdpbmFsIGNhc2UgKHRoZXkncmUgY2FzZS1wcmVzZXJ2aW5nLCB0b28pLgogCi1JbiBQeXRob24gMi4xLCB0aGUgOmtleXdvcmQ6YGltcG9ydGAgc3RhdGVtZW50IHdpbGwgd29yayB0byBzaW11bGF0ZSBjYXNlLQotc2Vuc2l0aXZpdHkgb24gY2FzZS1pbnNlbnNpdGl2ZSBwbGF0Zm9ybXMuICBQeXRob24gd2lsbCBub3cgc2VhcmNoIGZvciB0aGUgZmlyc3QKK0luIFB5dGhvbiAyLjEsIHRoZSA6a2V5d29yZDpgaW1wb3J0YCBzdGF0ZW1lbnQgd2lsbCB3b3JrIHRvIHNpbXVsYXRlIGNhc2Utc2Vuc2l0aXZpdHkKK29uIGNhc2UtaW5zZW5zaXRpdmUgcGxhdGZvcm1zLiAgUHl0aG9uIHdpbGwgbm93IHNlYXJjaCBmb3IgdGhlIGZpcnN0CiBjYXNlLXNlbnNpdGl2ZSBtYXRjaCBieSBkZWZhdWx0LCByYWlzaW5nIGFuIDpleGM6YEltcG9ydEVycm9yYCBpZiBubyBzdWNoIGZpbGUKLWlzIGZvdW5kLCBzbyBgYGltcG9ydCBmaWxlYGAgd2lsbCBub3QgaW1wb3J0IGEgbW9kdWxlIG5hbWVkIGBgRklMRS5QWWBgLiAgQ2FzZS0KLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGNhbiBiZSByZXF1ZXN0ZWQgYnkgc2V0dGluZyB0aGUgOmVudnZhcjpgUFlUSE9OQ0FTRU9LYAoraXMgZm91bmQsIHNvIGBgaW1wb3J0IGZpbGVgYCB3aWxsIG5vdCBpbXBvcnQgYSBtb2R1bGUgbmFtZWQgYGBGSUxFLlBZYGAuCitDYXNlLWluc2Vuc2l0aXZlIG1hdGNoaW5nIGNhbiBiZSByZXF1ZXN0ZWQgYnkgc2V0dGluZyB0aGUgOmVudnZhcjpgUFlUSE9OQ0FTRU9LYAogZW52aXJvbm1lbnQgdmFyaWFibGUgYmVmb3JlIHN0YXJ0aW5nIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuCiAKIC4uID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTQ4MSw4ICs0ODEsOCBAQAogV2hlbiB1c2luZyB0aGUgUHl0aG9uIGludGVycHJldGVyIGludGVyYWN0aXZlbHksIHRoZSBvdXRwdXQgb2YgY29tbWFuZHMgaXMKIGRpc3BsYXllZCB1c2luZyB0aGUgYnVpbHQtaW4gOmZ1bmM6YHJlcHJgIGZ1bmN0aW9uLiBJbiBQeXRob24gMi4xLCB0aGUgdmFyaWFibGUKIDpmdW5jOmBzeXMuZGlzcGxheWhvb2tgIGNhbiBiZSBzZXQgdG8gYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2ggd2lsbCBiZSBjYWxsZWQKLWluc3RlYWQgb2YgOmZ1bmM6YHJlcHJgLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBzZXQgaXQgdG8gYSBzcGVjaWFsIHByZXR0eS0KLXByaW50aW5nIGZ1bmN0aW9uOjoKK2luc3RlYWQgb2YgOmZ1bmM6YHJlcHJgLiBGb3IgZXhhbXBsZSwgeW91IGNhbiBzZXQgaXQgdG8gYSBzcGVjaWFsCitwcmV0dHktcHJpbnRpbmcgZnVuY3Rpb246OgogCiAgICA+Pj4gIyBDcmVhdGUgYSByZWN1cnNpdmUgZGF0YSBzdHJ1Y3R1cmUKICAgIC4uLiBMID0gWzEsMiwzXQpAQCAtNjU2LDcgKzY1Niw3IEBACiAgIHVzZSA6bW9kOmBmdHBsaWJgIHRvIHJldHJpZXZlIGZpbGVzIGFuZCB0aGVuIGRvbid0IHdvcmsgZnJvbSBiZWhpbmQgYSBmaXJld2FsbC4KICAgSXQncyBkZWVtZWQgdW5saWtlbHkgdGhhdCB0aGlzIHdpbGwgY2F1c2UgcHJvYmxlbXMgZm9yIGFueW9uZSwgYmVjYXVzZSBOZXRzY2FwZQogICBkZWZhdWx0cyB0byBwYXNzaXZlIG1vZGUgYW5kIGZldyBwZW9wbGUgY29tcGxhaW4sIGJ1dCBpZiBwYXNzaXZlIG1vZGUgaXMKLSAgdW5zdWl0YWJsZSBmb3IgeW91ciBhcHBsaWNhdGlvbiBvciBuZXR3b3JrIHNldHVwLCBjYWxsIDptZXRoOmBzZXRfcGFzdigwKWAgb24KKyAgdW5zdWl0YWJsZSBmb3IgeW91ciBhcHBsaWNhdGlvbiBvciBuZXR3b3JrIHNldHVwLCBjYWxsIGBgc2V0X3Bhc3YoMClgYCBvbgogICBGVFAgb2JqZWN0cyB0byBkaXNhYmxlIHBhc3NpdmUgbW9kZS4KIAogKiBTdXBwb3J0IGZvciByYXcgc29ja2V0IGFjY2VzcyBoYXMgYmVlbiBhZGRlZCB0byB0aGUgOm1vZDpgc29ja2V0YCBtb2R1bGUsCkBAIC02NjYsNyArNjY2LDcgQEAKICAgZm9yIGRpc3BsYXlpbmcgdGltaW5nIHByb2ZpbGVzIGZvciBQeXRob24gcHJvZ3JhbXMsIGludm9rZWQgd2hlbiB0aGUgbW9kdWxlIGlzCiAgIHJ1biBhcyBhIHNjcmlwdC4gIENvbnRyaWJ1dGVkIGJ5ICBFcmljIFMuIFJheW1vbmQuCiAKLSogQSBuZXcgaW1wbGVtZW50YXRpb24tZGVwZW5kZW50IGZ1bmN0aW9uLCA6ZnVuYzpgc3lzLl9nZXRmcmFtZShbZGVwdGhdKWAsIGhhcworKiBBIG5ldyBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgZnVuY3Rpb24sIGBgc3lzLl9nZXRmcmFtZShbZGVwdGhdKWBgLCBoYXMKICAgYmVlbiBhZGRlZCB0byByZXR1cm4gYSBnaXZlbiBmcmFtZSBvYmplY3QgZnJvbSB0aGUgY3VycmVudCBjYWxsIHN0YWNrLgogICA6ZnVuYzpgc3lzLl9nZXRmcmFtZWAgcmV0dXJucyB0aGUgZnJhbWUgYXQgdGhlIHRvcCBvZiB0aGUgY2FsbCBzdGFjazsgIGlmIHRoZQogICBvcHRpb25hbCBpbnRlZ2VyIGFyZ3VtZW50ICpkZXB0aCogaXMgc3VwcGxpZWQsIHRoZSBmdW5jdGlvbiByZXR1cm5zIHRoZSBmcmFtZQpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuMi5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi4yLnJzdAppbmRleCBkZmIxNDYwLi5iMjMxOTY3IDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi4yLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi4yLnJzdApAQCAtMTczLDEyICsxNzMsMTIgQEAKIAogKiA6YXR0cjpgX19kb2NfX2AgaXMgdGhlIGF0dHJpYnV0ZSdzIGRvY3N0cmluZy4KIAotKiA6bWV0aDpgX19nZXRfXyhvYmplY3QpYCBpcyBhIG1ldGhvZCB0aGF0IHJldHJpZXZlcyB0aGUgYXR0cmlidXRlIHZhbHVlIGZyb20KKyogYGBfX2dldF9fKG9iamVjdClgYCBpcyBhIG1ldGhvZCB0aGF0IHJldHJpZXZlcyB0aGUgYXR0cmlidXRlIHZhbHVlIGZyb20KICAgKm9iamVjdCouCiAKLSogOm1ldGg6YF9fc2V0X18ob2JqZWN0LCB2YWx1ZSlgIHNldHMgdGhlIGF0dHJpYnV0ZSBvbiAqb2JqZWN0KiB0byAqdmFsdWUqLgorKiBgYF9fc2V0X18ob2JqZWN0LCB2YWx1ZSlgYCBzZXRzIHRoZSBhdHRyaWJ1dGUgb24gKm9iamVjdCogdG8gKnZhbHVlKi4KIAotKiA6bWV0aDpgX19kZWxldGVfXyhvYmplY3QsIHZhbHVlKWAgZGVsZXRlcyB0aGUgKnZhbHVlKiAgYXR0cmlidXRlIG9mICpvYmplY3QqLgorKiBgYF9fZGVsZXRlX18ob2JqZWN0LCB2YWx1ZSlgYCBkZWxldGVzIHRoZSAqdmFsdWUqICBhdHRyaWJ1dGUgb2YgKm9iamVjdCouCiAKIEZvciBleGFtcGxlLCB3aGVuIHlvdSB3cml0ZSBgYG9iai54YGAsIHRoZSBzdGVwcyB0aGF0IFB5dGhvbiBhY3R1YWxseSBwZXJmb3JtcwogYXJlOjoKQEAgLTI4OCw3ICsyODgsNyBAQAogd2hpY2ggaXMgdGhlIGJlaGF2aW91ciB3ZSdyZSBhZnRlci4gIFRoaXMgbG9va3VwIHJ1bGUgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZQogZm9sbG93ZWQgYnkgQ29tbW9uIExpc3AuICBBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgOmZ1bmM6YHN1cGVyYCwgcHJvdmlkZXMgYSB3YXkKIHRvIGdldCBhdCBhIGNsYXNzJ3Mgc3VwZXJjbGFzc2VzIHdpdGhvdXQgaGF2aW5nIHRvIHJlaW1wbGVtZW50IFB5dGhvbidzCi1hbGdvcml0aG0uIFRoZSBtb3N0IGNvbW1vbmx5IHVzZWQgZm9ybSB3aWxsIGJlICA6ZnVuYzpgc3VwZXIoY2xhc3MsIG9iailgLCB3aGljaAorYWxnb3JpdGhtLiBUaGUgbW9zdCBjb21tb25seSB1c2VkIGZvcm0gd2lsbCBiZSAgYGBzdXBlcihjbGFzcywgb2JqKWBgLCB3aGljaAogcmV0dXJucyAgYSBib3VuZCBzdXBlcmNsYXNzIG9iamVjdCAobm90IHRoZSBhY3R1YWwgY2xhc3Mgb2JqZWN0KS4gIFRoaXMgZm9ybQogd2lsbCBiZSB1c2VkIGluIG1ldGhvZHMgdG8gY2FsbCBhIG1ldGhvZCBpbiB0aGUgc3VwZXJjbGFzczsgZm9yIGV4YW1wbGUsCiA6Y2xhc3M6YERgJ3MgOm1ldGg6YHNhdmVgIG1ldGhvZCB3b3VsZCBsb29rIGxpa2UgdGhpczo6CkBAIC0zMDEsNyArMzAxLDcgQEAKICAgICAgICAgICAgLi4uCiAKIDpmdW5jOmBzdXBlcmAgY2FuIGFsc28gcmV0dXJuIHVuYm91bmQgc3VwZXJjbGFzcyBvYmplY3RzIHdoZW4gY2FsbGVkIGFzCi06ZnVuYzpgc3VwZXIoY2xhc3MpYCBvciA6ZnVuYzpgc3VwZXIoY2xhc3MxLCBjbGFzczIpYCwgYnV0IHRoaXMgcHJvYmFibHkgd29uJ3QKK2Bgc3VwZXIoY2xhc3MpYGAgb3IgYGBzdXBlcihjbGFzczEsIGNsYXNzMilgYCwgYnV0IHRoaXMgcHJvYmFibHkgd29uJ3QKIG9mdGVuIGJlIHVzZWZ1bC4KIAogCkBAIC0zMTQsMTMgKzMxNCwxMyBAQAogYGBvYmoucGFyZW50YGAgaW50byBhIG1ldGhvZCBjYWxsIHN1Y2ggYXMgYGBvYmouZ2V0X3BhcmVudGBgLiAgUHl0aG9uIDIuMiBhZGRzCiBzb21lIG5ldyB3YXlzIG9mIGNvbnRyb2xsaW5nIGF0dHJpYnV0ZSBhY2Nlc3MuCiAKLUZpcnN0LCA6bWV0aDpgX19nZXRhdHRyX18oYXR0cl9uYW1lKWAgaXMgc3RpbGwgc3VwcG9ydGVkIGJ5IG5ldy1zdHlsZSBjbGFzc2VzLAorRmlyc3QsIGBgX19nZXRhdHRyX18oYXR0cl9uYW1lKWBgIGlzIHN0aWxsIHN1cHBvcnRlZCBieSBuZXctc3R5bGUgY2xhc3NlcywKIGFuZCBub3RoaW5nIGFib3V0IGl0IGhhcyBjaGFuZ2VkLiAgQXMgYmVmb3JlLCBpdCB3aWxsIGJlIGNhbGxlZCB3aGVuIGFuIGF0dGVtcHQKIGlzIG1hZGUgdG8gYWNjZXNzIGBgb2JqLmZvb2BgIGFuZCBubyBhdHRyaWJ1dGUgbmFtZWQgYGBmb29gYCBpcyBmb3VuZCBpbiB0aGUKIGluc3RhbmNlJ3MgZGljdGlvbmFyeS4KIAogTmV3LXN0eWxlIGNsYXNzZXMgYWxzbyBzdXBwb3J0IGEgbmV3IG1ldGhvZCwKLTptZXRoOmBfX2dldGF0dHJpYnV0ZV9fKGF0dHJfbmFtZSlgLiAgVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIG1ldGhvZHMgaXMKK2BgX19nZXRhdHRyaWJ1dGVfXyhhdHRyX25hbWUpYGAuICBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSB0d28gbWV0aG9kcyBpcwogdGhhdCA6bWV0aDpgX19nZXRhdHRyaWJ1dGVfX2AgaXMgKmFsd2F5cyogY2FsbGVkIHdoZW5ldmVyIGFueSBhdHRyaWJ1dGUgaXMKIGFjY2Vzc2VkLCB3aGlsZSB0aGUgb2xkIDptZXRoOmBfX2dldGF0dHJfX2AgaXMgb25seSBjYWxsZWQgaWYgYGBmb29gYCBpc24ndAogZm91bmQgaW4gdGhlIGluc3RhbmNlJ3MgZGljdGlvbmFyeS4KQEAgLTQ0MSw4ICs0NDEsOCBAQAogCiBJbiBQeXRob24gMi4yLCBpdGVyYXRpb24gY2FuIGJlIGltcGxlbWVudGVkIHNlcGFyYXRlbHksIGFuZCA6bWV0aDpgX19nZXRpdGVtX19gCiBtZXRob2RzIGNhbiBiZSBsaW1pdGVkIHRvIGNsYXNzZXMgdGhhdCByZWFsbHkgZG8gc3VwcG9ydCByYW5kb20gYWNjZXNzLiAgVGhlCi1iYXNpYyBpZGVhIG9mIGl0ZXJhdG9ycyBpcyAgc2ltcGxlLiAgQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmBpdGVyKG9iailgCi1vciBgYGl0ZXIoQywgc2VudGluZWwpYGAsIGlzIHVzZWQgdG8gZ2V0IGFuIGl0ZXJhdG9yLiA6ZnVuYzpgaXRlcihvYmopYCByZXR1cm5zCitiYXNpYyBpZGVhIG9mIGl0ZXJhdG9ycyBpcyAgc2ltcGxlLiAgQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIGBgaXRlcihvYmopYGAKK29yIGBgaXRlcihDLCBzZW50aW5lbClgYCwgaXMgdXNlZCB0byBnZXQgYW4gaXRlcmF0b3IuIGBgaXRlcihvYmopYGAgcmV0dXJucwogYW4gaXRlcmF0b3IgZm9yIHRoZSBvYmplY3QgKm9iaiosIHdoaWxlIGBgaXRlcihDLCBzZW50aW5lbClgYCByZXR1cm5zIGFuCiBpdGVyYXRvciB0aGF0IHdpbGwgaW52b2tlIHRoZSBjYWxsYWJsZSBvYmplY3QgKkMqIHVudGlsIGl0IHJldHVybnMgKnNlbnRpbmVsKiB0bwogc2lnbmFsIHRoYXQgdGhlIGl0ZXJhdG9yIGlzIGRvbmUuCkBAIC03OTMsNyArNzkzLDcgQEAKIAogQW5vdGhlciBjaGFuZ2UgaXMgc2ltcGxlciB0byBleHBsYWluLiBTaW5jZSB0aGVpciBpbnRyb2R1Y3Rpb24sIFVuaWNvZGUgc3RyaW5ncwogaGF2ZSBzdXBwb3J0ZWQgYW4gOm1ldGg6YGVuY29kZWAgbWV0aG9kIHRvIGNvbnZlcnQgdGhlIHN0cmluZyB0byBhIHNlbGVjdGVkCi1lbmNvZGluZyBzdWNoIGFzIFVURi04IG9yIExhdGluLTEuICBBIHN5bW1ldHJpYyA6bWV0aDpgZGVjb2RlKFsqZW5jb2RpbmcqXSlgCitlbmNvZGluZyBzdWNoIGFzIFVURi04IG9yIExhdGluLTEuICBBIHN5bW1ldHJpYyBgYGRlY29kZShbKmVuY29kaW5nKl0pYGAKIG1ldGhvZCBoYXMgYmVlbiBhZGRlZCB0byA4LWJpdCBzdHJpbmdzICh0aG91Z2ggbm90IHRvIFVuaWNvZGUgc3RyaW5ncykgaW4gMi4yLgogOm1ldGg6YGRlY29kZWAgYXNzdW1lcyB0aGF0IHRoZSBzdHJpbmcgaXMgaW4gdGhlIHNwZWNpZmllZCBlbmNvZGluZyBhbmQgZGVjb2RlcwogaXQsIHJldHVybmluZyB3aGF0ZXZlciBpcyByZXR1cm5lZCBieSB0aGUgY29kZWMuCkBAIC05NjIsOCArOTYyLDggQEAKICogVGhlIG5ldyA6bW9kOmBobWFjYCBtb2R1bGUgaW1wbGVtZW50cyB0aGUgSE1BQyBhbGdvcml0aG0gZGVzY3JpYmVkIGJ5CiAgIDpyZmM6YDIxMDRgLiAoQ29udHJpYnV0ZWQgYnkgR2VyaGFyZCBIw6RyaW5nLikKIAotKiBTZXZlcmFsIGZ1bmN0aW9ucyB0aGF0IG9yaWdpbmFsbHkgcmV0dXJuZWQgbGVuZ3RoeSB0dXBsZXMgbm93IHJldHVybiBwc2V1ZG8tCi0gIHNlcXVlbmNlcyB0aGF0IHN0aWxsIGJlaGF2ZSBsaWtlIHR1cGxlcyBidXQgYWxzbyBoYXZlIG1uZW1vbmljIGF0dHJpYnV0ZXMgc3VjaAorKiBTZXZlcmFsIGZ1bmN0aW9ucyB0aGF0IG9yaWdpbmFsbHkgcmV0dXJuZWQgbGVuZ3RoeSB0dXBsZXMgbm93IHJldHVybgorICBwc2V1ZG8tc2VxdWVuY2VzIHRoYXQgc3RpbGwgYmVoYXZlIGxpa2UgdHVwbGVzIGJ1dCBhbHNvIGhhdmUgbW5lbW9uaWMgYXR0cmlidXRlcyBzdWNoCiAgIGFzIG1lbWJlcnN0X210aW1lIG9yIDphdHRyOmB0bV95ZWFyYC4gVGhlIGVuaGFuY2VkIGZ1bmN0aW9ucyBpbmNsdWRlCiAgIDpmdW5jOmBzdGF0YCwgOmZ1bmM6YGZzdGF0YCwgOmZ1bmM6YHN0YXR2ZnNgLCBhbmQgOmZ1bmM6YGZzdGF0dmZzYCBpbiB0aGUKICAgOm1vZDpgb3NgIG1vZHVsZSwgYW5kIDpmdW5jOmBsb2NhbHRpbWVgLCA6ZnVuYzpgZ210aW1lYCwgYW5kIDpmdW5jOmBzdHJwdGltZWAgaW4KQEAgLTExNDEsOCArMTE0MSw4IEBACiAKICAgVGhlIG1vc3Qgc2lnbmlmaWNhbnQgY2hhbmdlIGlzIHRoZSBhYmlsaXR5IHRvIGJ1aWxkIFB5dGhvbiBhcyBhIGZyYW1ld29yaywKICAgZW5hYmxlZCBieSBzdXBwbHlpbmcgdGhlIDpvcHRpb246YCEtLWVuYWJsZS1mcmFtZXdvcmtgIG9wdGlvbiB0byB0aGUgY29uZmlndXJlCi0gIHNjcmlwdCB3aGVuIGNvbXBpbGluZyBQeXRob24uICBBY2NvcmRpbmcgdG8gSmFjayBKYW5zZW4sICJUaGlzIGluc3RhbGxzIGEgc2VsZi0KLSAgY29udGFpbmVkIFB5dGhvbiBpbnN0YWxsYXRpb24gcGx1cyB0aGUgT1MgWCBmcmFtZXdvcmsgImdsdWUiIGludG8KKyAgc2NyaXB0IHdoZW4gY29tcGlsaW5nIFB5dGhvbi4gIEFjY29yZGluZyB0byBKYWNrIEphbnNlbiwgIlRoaXMgaW5zdGFsbHMgYQorICBzZWxmLWNvbnRhaW5lZCBQeXRob24gaW5zdGFsbGF0aW9uIHBsdXMgdGhlIE9TIFggZnJhbWV3b3JrICJnbHVlIiBpbnRvCiAgIDpmaWxlOmAvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmtgIChvciBhbm90aGVyIGxvY2F0aW9uIG9mIGNob2ljZSkuCiAgIEZvciBub3cgdGhlcmUgaXMgbGl0dGxlIGltbWVkaWF0ZSBhZGRlZCBiZW5lZml0IHRvIHRoaXMgKGFjdHVhbGx5LCB0aGVyZSBpcyB0aGUKICAgZGlzYWR2YW50YWdlIHRoYXQgeW91IGhhdmUgdG8gY2hhbmdlIHlvdXIgUEFUSCB0byBiZSBhYmxlIHRvIGZpbmQgUHl0aG9uKSwgYnV0CkBAIC0xMjAzLDcgKzEyMDMsNyBAQAogICB0byBhbiBNQkNTIGVuY29kZWQgc3RyaW5nLCBhcyB1c2VkIGJ5IHRoZSBNaWNyb3NvZnQgZmlsZSBBUElzLiAgQXMgTUJDUyBpcwogICBleHBsaWNpdGx5IHVzZWQgYnkgdGhlIGZpbGUgQVBJcywgUHl0aG9uJ3MgY2hvaWNlIG9mIEFTQ0lJIGFzIHRoZSBkZWZhdWx0CiAgIGVuY29kaW5nIHR1cm5zIG91dCB0byBiZSBhbiBhbm5veWFuY2UuICBPbiBVbml4LCB0aGUgbG9jYWxlJ3MgY2hhcmFjdGVyIHNldCBpcwotICB1c2VkIGlmIDpmdW5jOmBsb2NhbGUubmxfbGFuZ2luZm8oQ09ERVNFVClgIGlzIGF2YWlsYWJsZS4gIChXaW5kb3dzIHN1cHBvcnQgd2FzCisgIHVzZWQgaWYgYGBsb2NhbGUubmxfbGFuZ2luZm8oQ09ERVNFVClgYCBpcyBhdmFpbGFibGUuICAoV2luZG93cyBzdXBwb3J0IHdhcwogICBjb250cmlidXRlZCBieSBNYXJrIEhhbW1vbmQgd2l0aCBhc3Npc3RhbmNlIGZyb20gTWFyYy1BbmRyw6kgTGVtYnVyZy4gVW5peAogICBzdXBwb3J0IHdhcyBhZGRlZCBieSBNYXJ0aW4gdm9uIEzDtndpcy4pCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjMucnN0IGIvRG9jL3doYXRzbmV3LzIuMy5yc3QKaW5kZXggMTNjNjk2MC4uMWVmMmNiNSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMy5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMy5yc3QKQEAgLTg2LDggKzg2LDggQEAKIEl0J3MgYWxzbyBwb3NzaWJsZSB0byB0YWtlIHRoZSBzeW1tZXRyaWMgZGlmZmVyZW5jZSBvZiB0d28gc2V0cy4gIFRoaXMgaXMgdGhlCiBzZXQgb2YgYWxsIGVsZW1lbnRzIGluIHRoZSB1bmlvbiB0aGF0IGFyZW4ndCBpbiB0aGUgaW50ZXJzZWN0aW9uLiAgQW5vdGhlciB3YXkKIG9mIHB1dHRpbmcgaXQgaXMgdGhhdCB0aGUgc3ltbWV0cmljIGRpZmZlcmVuY2UgY29udGFpbnMgYWxsIGVsZW1lbnRzIHRoYXQgYXJlIGluCi1leGFjdGx5IG9uZSBzZXQuICBBZ2FpbiwgdGhlcmUncyBhbiBhbHRlcm5hdGl2ZSBub3RhdGlvbiAoYGBeYGApLCBhbmQgYW4gaW4tCi1wbGFjZSB2ZXJzaW9uIHdpdGggdGhlIHVuZ2Fpbmx5IG5hbWUgOm1ldGg6YHN5bW1ldHJpY19kaWZmZXJlbmNlX3VwZGF0ZWAuIDo6CitleGFjdGx5IG9uZSBzZXQuICBBZ2FpbiwgdGhlcmUncyBhbiBhbHRlcm5hdGl2ZSBub3RhdGlvbiAoYGBeYGApLCBhbmQgYW4KK2luLXBsYWNlIHZlcnNpb24gd2l0aCB0aGUgdW5nYWlubHkgbmFtZSA6bWV0aDpgc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlYC4gOjoKIAogICAgPj4+IFMxID0gc2V0cy5TZXQoWzEsMiwzLDRdKQogICAgPj4+IFMyID0gc2V0cy5TZXQoWzMsNCw1LDZdKQpAQCAtMjg4LDggKzI4OCw4IEBACiBQRVAgMjczOiBJbXBvcnRpbmcgTW9kdWxlcyBmcm9tIFpJUCBBcmNoaXZlcwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIG5ldyA6bW9kOmB6aXBpbXBvcnRgIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIGltcG9ydGluZyBtb2R1bGVzIGZyb20gYSBaSVAtCi1mb3JtYXQgYXJjaGl2ZS4gIFlvdSBkb24ndCBuZWVkIHRvIGltcG9ydCB0aGUgbW9kdWxlIGV4cGxpY2l0bHk7IGl0IHdpbGwgYmUKK1RoZSBuZXcgOm1vZDpgemlwaW1wb3J0YCBtb2R1bGUgYWRkcyBzdXBwb3J0IGZvciBpbXBvcnRpbmcgbW9kdWxlcyBmcm9tIGEKK1pJUC1mb3JtYXQgYXJjaGl2ZS4gIFlvdSBkb24ndCBuZWVkIHRvIGltcG9ydCB0aGUgbW9kdWxlIGV4cGxpY2l0bHk7IGl0IHdpbGwgYmUKIGF1dG9tYXRpY2FsbHkgaW1wb3J0ZWQgaWYgYSBaSVAgYXJjaGl2ZSdzIGZpbGVuYW1lIGlzIGFkZGVkIHRvIGBgc3lzLnBhdGhgYC4KIEZvciBleGFtcGxlOgogCkBAIC0zNzUsOCArMzc1LDggQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogVGhlIHRocmVlIG1ham9yIG9wZXJhdGluZyBzeXN0ZW1zIHVzZWQgdG9kYXkgYXJlIE1pY3Jvc29mdCBXaW5kb3dzLCBBcHBsZSdzCi1NYWNpbnRvc2ggT1MsIGFuZCB0aGUgdmFyaW91cyBVbml4IGRlcml2YXRpdmVzLiAgQSBtaW5vciBpcnJpdGF0aW9uIG9mIGNyb3NzLQotcGxhdGZvcm0gd29yayAgaXMgdGhhdCB0aGVzZSB0aHJlZSBwbGF0Zm9ybXMgYWxsIHVzZSBkaWZmZXJlbnQgY2hhcmFjdGVycyB0bworTWFjaW50b3NoIE9TLCBhbmQgdGhlIHZhcmlvdXMgVW5peCBkZXJpdmF0aXZlcy4gIEEgbWlub3IgaXJyaXRhdGlvbiBvZgorY3Jvc3MtcGxhdGZvcm0gd29yayAgaXMgdGhhdCB0aGVzZSB0aHJlZSBwbGF0Zm9ybXMgYWxsIHVzZSBkaWZmZXJlbnQgY2hhcmFjdGVycyB0bwogbWFyayB0aGUgZW5kcyBvZiBsaW5lcyBpbiB0ZXh0IGZpbGVzLiAgVW5peCB1c2VzIHRoZSBsaW5lZmVlZCAoQVNDSUkgY2hhcmFjdGVyCiAxMCksIE1hY09TIHVzZXMgdGhlIGNhcnJpYWdlIHJldHVybiAoQVNDSUkgY2hhcmFjdGVyIDEzKSwgYW5kIFdpbmRvd3MgdXNlcyBhCiB0d28tY2hhcmFjdGVyIHNlcXVlbmNlIG9mIGEgY2FycmlhZ2UgcmV0dXJuIHBsdXMgYSBuZXdsaW5lLgpAQCAtNTA2LDggKzUwNiw4IEBACiAgICBaZXJvRGl2aXNpb25FcnJvcjogaW50ZWdlciBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVybwogCiBTbGlnaHRseSBtb3JlIGFkdmFuY2VkIHByb2dyYW1zIHdpbGwgdXNlIGEgbG9nZ2VyIG90aGVyIHRoYW4gdGhlIHJvb3QgbG9nZ2VyLgotVGhlIDpmdW5jOmBnZXRMb2dnZXIobmFtZSlgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZ2V0IGEgcGFydGljdWxhciBsb2csIGNyZWF0aW5nCi1pdCBpZiBpdCBkb2Vzbid0IGV4aXN0IHlldC4gOmZ1bmM6YGdldExvZ2dlcihOb25lKWAgcmV0dXJucyB0aGUgcm9vdCBsb2dnZXIuIDo6CitUaGUgYGBnZXRMb2dnZXIobmFtZSlgYCBmdW5jdGlvbiBpcyB1c2VkIHRvIGdldCBhIHBhcnRpY3VsYXIgbG9nLCBjcmVhdGluZworaXQgaWYgaXQgZG9lc24ndCBleGlzdCB5ZXQuIGBgZ2V0TG9nZ2VyKE5vbmUpYGAgcmV0dXJucyB0aGUgcm9vdCBsb2dnZXIuIDo6CiAKICAgIGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdzZXJ2ZXInKQogICAgIC4uLgpAQCAtNjU5LDcgKzY1OSw3IEBACiBSdW5uaW5nIGBgcHl0aG9uIHNldHVwLnB5IHJlZ2lzdGVyYGAgd2lsbCBjb2xsZWN0IHRoZSBtZXRhZGF0YSBkZXNjcmliaW5nIGEKIHBhY2thZ2UsIHN1Y2ggYXMgaXRzIG5hbWUsIHZlcnNpb24sIG1haW50YWluZXIsIGRlc2NyaXB0aW9uLCAmYy4sIGFuZCBzZW5kIGl0IHRvCiBhIGNlbnRyYWwgY2F0YWxvZyBzZXJ2ZXIuICBUaGUgcmVzdWx0aW5nIGNhdGFsb2cgaXMgYXZhaWxhYmxlIGZyb20KLWh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkuCitodHRwczovL3B5cGkub3JnLgogCiBUbyBtYWtlIHRoZSBjYXRhbG9nIGEgYml0IG1vcmUgdXNlZnVsLCBhIG5ldyBvcHRpb25hbCAqY2xhc3NpZmllcnMqIGtleXdvcmQKIGFyZ3VtZW50IGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBEaXN0dXRpbHMgOmZ1bmM6YHNldHVwYCBmdW5jdGlvbi4gIEEgbGlzdCBvZgpAQCAtNzI2LDEwICs3MjYsMTAgQEAKICAgb2JqZWN0cyB0byBpdC4gIEFkZGl0aW9uYWwgYnVpbHQtaW4gYW5kIGZyb3plbiBtb2R1bGVzIGNhbiBiZSBpbXBvcnRlZCBieSBhbgogICBvYmplY3QgYWRkZWQgdG8gdGhpcyBsaXN0LgogCi1JbXBvcnRlciBvYmplY3RzIG11c3QgaGF2ZSBhIHNpbmdsZSBtZXRob2QsIDptZXRoOmBmaW5kX21vZHVsZShmdWxsbmFtZSwKLXBhdGg9Tm9uZSlgLiAgKmZ1bGxuYW1lKiB3aWxsIGJlIGEgbW9kdWxlIG9yIHBhY2thZ2UgbmFtZSwgZS5nLiBgYHN0cmluZ2BgIG9yCitJbXBvcnRlciBvYmplY3RzIG11c3QgaGF2ZSBhIHNpbmdsZSBtZXRob2QsIGBgZmluZF9tb2R1bGUoZnVsbG5hbWUsCitwYXRoPU5vbmUpYGAuICAqZnVsbG5hbWUqIHdpbGwgYmUgYSBtb2R1bGUgb3IgcGFja2FnZSBuYW1lLCBlLmcuIGBgc3RyaW5nYGAgb3IKIGBgZGlzdHV0aWxzLmNvcmVgYC4gIDptZXRoOmBmaW5kX21vZHVsZWAgbXVzdCByZXR1cm4gYSBsb2FkZXIgb2JqZWN0IHRoYXQgaGFzIGEKLXNpbmdsZSBtZXRob2QsIDptZXRoOmBsb2FkX21vZHVsZShmdWxsbmFtZSlgLCB0aGF0IGNyZWF0ZXMgYW5kIHJldHVybnMgdGhlCitzaW5nbGUgbWV0aG9kLCBgYGxvYWRfbW9kdWxlKGZ1bGxuYW1lKWBgLCB0aGF0IGNyZWF0ZXMgYW5kIHJldHVybnMgdGhlCiBjb3JyZXNwb25kaW5nIG1vZHVsZSBvYmplY3QuCiAKIFBzZXVkby1jb2RlIGZvciBQeXRob24ncyBuZXcgaW1wb3J0IGxvZ2ljLCB0aGVyZWZvcmUsIGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXMKQEAgLTkzNyw3ICs5MzcsNyBAQAogICAgWzAsIDIsIDRdCiAKIFRvIHNpbXBsaWZ5IGltcGxlbWVudGluZyBzZXF1ZW5jZXMgdGhhdCBzdXBwb3J0IGV4dGVuZGVkIHNsaWNpbmcsIHNsaWNlIG9iamVjdHMKLW5vdyBoYXZlIGEgbWV0aG9kIDptZXRoOmBpbmRpY2VzKGxlbmd0aClgIHdoaWNoLCBnaXZlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UsCitub3cgaGF2ZSBhIG1ldGhvZCBgYGluZGljZXMobGVuZ3RoKWBgIHdoaWNoLCBnaXZlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UsCiByZXR1cm5zIGEgYGAoc3RhcnQsIHN0b3AsIHN0ZXApYGAgdHVwbGUgdGhhdCBjYW4gYmUgcGFzc2VkIGRpcmVjdGx5IHRvCiA6ZnVuYzpgcmFuZ2VgLiA6bWV0aDpgaW5kaWNlc2AgaGFuZGxlcyBvbWl0dGVkIGFuZCBvdXQtb2YtYm91bmRzIGluZGljZXMgaW4gYQogbWFubmVyIGNvbnNpc3RlbnQgd2l0aCByZWd1bGFyIHNsaWNlcyAoYW5kIHRoaXMgaW5ub2N1b3VzIHBocmFzZSBoaWRlcyBhIHdlbHRlcgpAQCAtOTg2LDcgKzk4Niw3IEBACiAqIEJ1aWx0LWluIHR5cGVzIG5vdyBzdXBwb3J0IHRoZSBleHRlbmRlZCBzbGljaW5nIHN5bnRheCwgYXMgZGVzY3JpYmVkIGluCiAgIHNlY3Rpb24gOnJlZjpgc2VjdGlvbi1zbGljZXNgIG9mIHRoaXMgZG9jdW1lbnQuCiAKLSogQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIDpmdW5jOmBzdW0oaXRlcmFibGUsIHN0YXJ0PTApYCwgIGFkZHMgdXAgdGhlIG51bWVyaWMKKyogQSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24sIGBgc3VtKGl0ZXJhYmxlLCBzdGFydD0wKWBgLCAgYWRkcyB1cCB0aGUgbnVtZXJpYwogICBpdGVtcyBpbiB0aGUgaXRlcmFibGUgb2JqZWN0IGFuZCByZXR1cm5zIHRoZWlyIHN1bS4gIDpmdW5jOmBzdW1gIG9ubHkgYWNjZXB0cwogICBudW1iZXJzLCBtZWFuaW5nIHRoYXQgeW91IGNhbid0IHVzZSBpdCB0byBjb25jYXRlbmF0ZSBhIGJ1bmNoIG9mIHN0cmluZ3MuCiAgIChDb250cmlidXRlZCBieSBBbGV4IE1hcnRlbGxpLikKQEAgLTEwMDAsNyArMTAwMCw3IEBACiAgIGl0cyBpbmRleCwgbm93IHRha2VzIG9wdGlvbmFsICAqc3RhcnQqIGFuZCAqc3RvcCogYXJndW1lbnRzIHRvIGxpbWl0IHRoZSBzZWFyY2gKICAgdG8gIG9ubHkgcGFydCBvZiB0aGUgbGlzdC4KIAotKiBEaWN0aW9uYXJpZXMgaGF2ZSBhIG5ldyBtZXRob2QsIDptZXRoOmBwb3Aoa2V5WywgKmRlZmF1bHQqXSlgLCB0aGF0IHJldHVybnMKKyogRGljdGlvbmFyaWVzIGhhdmUgYSBuZXcgbWV0aG9kLCBgYHBvcChrZXlbLCAqZGVmYXVsdCpdKWBgLCB0aGF0IHJldHVybnMKICAgdGhlIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gKmtleSogYW5kIHJlbW92ZXMgdGhhdCBrZXkvdmFsdWUgcGFpciBmcm9tIHRoZQogICBkaWN0aW9uYXJ5LiAgSWYgdGhlIHJlcXVlc3RlZCBrZXkgaXNuJ3QgcHJlc2VudCBpbiB0aGUgZGljdGlvbmFyeSwgKmRlZmF1bHQqIGlzCiAgIHJldHVybmVkIGlmIGl0J3Mgc3BlY2lmaWVkIGFuZCA6ZXhjOmBLZXlFcnJvcmAgcmFpc2VkIGlmIGl0IGlzbid0LiA6OgpAQCAtMTAyMiw3ICsxMDIyLDcgQEAKICAgICAge30KICAgICAgPj4+CiAKLSAgVGhlcmUncyBhbHNvIGEgbmV3IGNsYXNzIG1ldGhvZCwgIDptZXRoOmBkaWN0LmZyb21rZXlzKGl0ZXJhYmxlLCB2YWx1ZSlgLCB0aGF0CisgIFRoZXJlJ3MgYWxzbyBhIG5ldyBjbGFzcyBtZXRob2QsICBgYGRpY3QuZnJvbWtleXMoaXRlcmFibGUsIHZhbHVlKWBgLCB0aGF0CiAgIGNyZWF0ZXMgYSBkaWN0aW9uYXJ5IHdpdGgga2V5cyB0YWtlbiBmcm9tIHRoZSBzdXBwbGllZCBpdGVyYXRvciAqaXRlcmFibGUqIGFuZAogICBhbGwgdmFsdWVzIHNldCB0byAqdmFsdWUqLCBkZWZhdWx0aW5nIHRvIGBgTm9uZWBgLgogCkBAIC0xMDk1LDcgKzEwOTUsNyBAQAogICAxMDAgYnl0ZWNvZGVzLCBzcGVlZGluZyB1cCBzaW5nbGUtdGhyZWFkZWQgYXBwbGljYXRpb25zIGJ5IHJlZHVjaW5nIHRoZQogICBzd2l0Y2hpbmcgb3ZlcmhlYWQuICBTb21lIG11bHRpdGhyZWFkZWQgYXBwbGljYXRpb25zIG1heSBzdWZmZXIgc2xvd2VyIHJlc3BvbnNlCiAgIHRpbWUsIGJ1dCB0aGF0J3MgZWFzaWx5IGZpeGVkIGJ5IHNldHRpbmcgdGhlIGxpbWl0IGJhY2sgdG8gYSBsb3dlciBudW1iZXIgdXNpbmcKLSAgOmZ1bmM6YHN5cy5zZXRjaGVja2ludGVydmFsKE4pYC4gVGhlIGxpbWl0IGNhbiBiZSByZXRyaWV2ZWQgd2l0aCB0aGUgbmV3CisgIGBgc3lzLnNldGNoZWNraW50ZXJ2YWwoTilgYC4gVGhlIGxpbWl0IGNhbiBiZSByZXRyaWV2ZWQgd2l0aCB0aGUgbmV3CiAgIDpmdW5jOmBzeXMuZ2V0Y2hlY2tpbnRlcnZhbGAgZnVuY3Rpb24uCiAKICogT25lIG1pbm9yIGJ1dCBmYXItcmVhY2hpbmcgY2hhbmdlIGlzIHRoYXQgdGhlIG5hbWVzIG9mIGV4dGVuc2lvbiB0eXBlcyBkZWZpbmVkCkBAIC0xMjc0LDEwICsxMjc0LDEwIEBACiAKICogUHJldmlvdXNseSB0aGUgOm1vZDpgZG9jdGVzdGAgbW9kdWxlIHdvdWxkIG9ubHkgc2VhcmNoIHRoZSBkb2NzdHJpbmdzIG9mCiAgIHB1YmxpYyBtZXRob2RzIGFuZCBmdW5jdGlvbnMgZm9yIHRlc3QgY2FzZXMsIGJ1dCBpdCBub3cgYWxzbyBleGFtaW5lcyBwcml2YXRlCi0gIG9uZXMgYXMgd2VsbC4gIFRoZSA6ZnVuYzpgRG9jVGVzdFN1aXRlKGAgZnVuY3Rpb24gY3JlYXRlcyBhCisgIG9uZXMgYXMgd2VsbC4gIFRoZSA6ZnVuYzpgRG9jVGVzdFN1aXRlYCBmdW5jdGlvbiBjcmVhdGVzIGEKICAgOmNsYXNzOmB1bml0dGVzdC5UZXN0U3VpdGVgIG9iamVjdCBmcm9tIGEgc2V0IG9mIDptb2Q6YGRvY3Rlc3RgIHRlc3RzLgogCi0qIFRoZSBuZXcgOmZ1bmM6YGdjLmdldF9yZWZlcmVudHMob2JqZWN0KWAgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZQorKiBUaGUgbmV3IGBgZ2MuZ2V0X3JlZmVyZW50cyhvYmplY3QpYGAgZnVuY3Rpb24gcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRoZQogICBvYmplY3RzIHJlZmVyZW5jZWQgYnkgKm9iamVjdCouCiAKICogVGhlIDptb2Q6YGdldG9wdGAgbW9kdWxlIGdhaW5lZCBhIG5ldyBmdW5jdGlvbiwgOmZ1bmM6YGdudV9nZXRvcHRgLCB0aGF0CkBAIC0xMzQ5LDggKzEzNDksOCBAQAogICBkb2N1bWVudGF0aW9uIGZvciBkZXRhaWxzLgogICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCi0qIFR3byBuZXcgZnVuY3Rpb25zIGluIHRoZSA6bW9kOmBtYXRoYCBtb2R1bGUsIDpmdW5jOmBkZWdyZWVzKHJhZHMpYCBhbmQKLSAgOmZ1bmM6YHJhZGlhbnMoZGVncylgLCBjb252ZXJ0IGJldHdlZW4gcmFkaWFucyBhbmQgZGVncmVlcy4gIE90aGVyIGZ1bmN0aW9ucyBpbgorKiBUd28gbmV3IGZ1bmN0aW9ucyBpbiB0aGUgOm1vZDpgbWF0aGAgbW9kdWxlLCBgYGRlZ3JlZXMocmFkcylgYCBhbmQKKyAgYGByYWRpYW5zKGRlZ3MpYGAsIGNvbnZlcnQgYmV0d2VlbiByYWRpYW5zIGFuZCBkZWdyZWVzLiAgT3RoZXIgZnVuY3Rpb25zIGluCiAgIHRoZSA6bW9kOmBtYXRoYCBtb2R1bGUgc3VjaCBhcyA6ZnVuYzpgbWF0aC5zaW5gIGFuZCA6ZnVuYzpgbWF0aC5jb3NgIGhhdmUgYWx3YXlzCiAgIHJlcXVpcmVkIGlucHV0IHZhbHVlcyBtZWFzdXJlZCBpbiByYWRpYW5zLiAgQWxzbywgYW4gb3B0aW9uYWwgKmJhc2UqIGFyZ3VtZW50CiAgIHdhcyBhZGRlZCB0byA6ZnVuYzpgbWF0aC5sb2dgIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvbXB1dGUgbG9nYXJpdGhtcyBmb3IgYmFzZXMKQEAgLTE0MDcsNyArMTQwNyw3IEBACiAgIGFuZCB0aGVyZWZvcmUgZmFzdGVyIHBlcmZvcm1hbmNlLiAgU2V0dGluZyB0aGUgcGFyc2VyIG9iamVjdCdzCiAgIDphdHRyOmBidWZmZXJfdGV4dGAgYXR0cmlidXRlIHRvIDpjb25zdDpgVHJ1ZWAgd2lsbCBlbmFibGUgYnVmZmVyaW5nLgogCi0qIFRoZSA6ZnVuYzpgc2FtcGxlKHBvcHVsYXRpb24sIGspYCBmdW5jdGlvbiB3YXMgYWRkZWQgdG8gdGhlIDptb2Q6YHJhbmRvbWAKKyogVGhlIGBgc2FtcGxlKHBvcHVsYXRpb24sIGspYGAgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmByYW5kb21gCiAgIG1vZHVsZS4gICpwb3B1bGF0aW9uKiBpcyBhIHNlcXVlbmNlIG9yIDpjbGFzczpgeHJhbmdlYCBvYmplY3QgY29udGFpbmluZyB0aGUKICAgZWxlbWVudHMgb2YgYSBwb3B1bGF0aW9uLCBhbmQgOmZ1bmM6YHNhbXBsZWAgY2hvb3NlcyAqayogZWxlbWVudHMgZnJvbSB0aGUKICAgcG9wdWxhdGlvbiB3aXRob3V0IHJlcGxhY2luZyBjaG9zZW4gZWxlbWVudHMuICAqayogY2FuIGJlIGFueSB2YWx1ZSB1cCB0bwpAQCAtMTQ1Myw3ICsxNDUzLDcgQEAKICAgZW5jcnlwdGlvbiBpcyBub3QgYmVsaWV2ZWQgdG8gYmUgc2VjdXJlLiAgSWYgeW91IG5lZWQgZW5jcnlwdGlvbiwgdXNlIG9uZSBvZiB0aGUKICAgc2V2ZXJhbCBBRVMgUHl0aG9uIG1vZHVsZXMgdGhhdCBhcmUgYXZhaWxhYmxlIHNlcGFyYXRlbHkuCiAKLSogVGhlIDptb2Q6YHNodXRpbGAgbW9kdWxlIGdhaW5lZCBhIDpmdW5jOmBtb3ZlKHNyYywgZGVzdClgIGZ1bmN0aW9uIHRoYXQKKyogVGhlIDptb2Q6YHNodXRpbGAgbW9kdWxlIGdhaW5lZCBhIGBgbW92ZShzcmMsIGRlc3QpYGAgZnVuY3Rpb24gdGhhdAogICByZWN1cnNpdmVseSBtb3ZlcyBhIGZpbGUgb3IgZGlyZWN0b3J5IHRvIGEgbmV3IGxvY2F0aW9uLgogCiAqIFN1cHBvcnQgZm9yIG1vcmUgYWR2YW5jZWQgUE9TSVggc2lnbmFsIGhhbmRsaW5nIHdhcyBhZGRlZCB0byB0aGUgOm1vZDpgc2lnbmFsYApAQCAtMTQ2MSw3ICsxNDYxLDcgQEAKICAgcGxhdGZvcm1zLgogCiAqIFRoZSA6bW9kOmBzb2NrZXRgIG1vZHVsZSBub3cgc3VwcG9ydHMgdGltZW91dHMuICBZb3UgY2FuIGNhbGwgdGhlCi0gIDptZXRoOmBzZXR0aW1lb3V0KHQpYCBtZXRob2Qgb24gYSBzb2NrZXQgb2JqZWN0IHRvIHNldCBhIHRpbWVvdXQgb2YgKnQqIHNlY29uZHMuCisgIGBgc2V0dGltZW91dCh0KWBgIG1ldGhvZCBvbiBhIHNvY2tldCBvYmplY3QgdG8gc2V0IGEgdGltZW91dCBvZiAqdCogc2Vjb25kcy4KICAgU3Vic2VxdWVudCBzb2NrZXQgb3BlcmF0aW9ucyB0aGF0IHRha2UgbG9uZ2VyIHRoYW4gKnQqIHNlY29uZHMgdG8gY29tcGxldGUgd2lsbAogICBhYm9ydCBhbmQgcmFpc2UgYSA6ZXhjOmBzb2NrZXQudGltZW91dGAgZXhjZXB0aW9uLgogCkBAIC0xNDgyLDkgKzE0ODIsOSBAQAogICA6cHJvZ3JhbTpgdGFyYFwgLWZvcm1hdCBhcmNoaXZlIGZpbGVzLiAoQ29udHJpYnV0ZWQgYnkgTGFycyBHdXN0w6RiZWwuKQogCiAqIFRoZSBuZXcgOm1vZDpgdGV4dHdyYXBgIG1vZHVsZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIHdyYXBwaW5nIHN0cmluZ3MKLSAgY29udGFpbmluZyBwYXJhZ3JhcGhzIG9mIHRleHQuICBUaGUgOmZ1bmM6YHdyYXAodGV4dCwgd2lkdGgpYCBmdW5jdGlvbiB0YWtlcyBhCisgIGNvbnRhaW5pbmcgcGFyYWdyYXBocyBvZiB0ZXh0LiAgVGhlIGBgd3JhcCh0ZXh0LCB3aWR0aClgYCBmdW5jdGlvbiB0YWtlcyBhCiAgIHN0cmluZyBhbmQgcmV0dXJucyBhIGxpc3QgY29udGFpbmluZyB0aGUgdGV4dCBzcGxpdCBpbnRvIGxpbmVzIG9mIG5vIG1vcmUgdGhhbgotICB0aGUgY2hvc2VuIHdpZHRoLiAgVGhlIDpmdW5jOmBmaWxsKHRleHQsIHdpZHRoKWAgZnVuY3Rpb24gcmV0dXJucyBhIHNpbmdsZQorICB0aGUgY2hvc2VuIHdpZHRoLiAgVGhlIGBgZmlsbCh0ZXh0LCB3aWR0aClgYCBmdW5jdGlvbiByZXR1cm5zIGEgc2luZ2xlCiAgIHN0cmluZywgcmVmb3JtYXR0ZWQgdG8gZml0IGludG8gbGluZXMgbm8gbG9uZ2VyIHRoYW4gdGhlIGNob3NlbiB3aWR0aC4gKEFzIHlvdQogICBjYW4gZ3Vlc3MsIDpmdW5jOmBmaWxsYCBpcyBidWlsdCBvbiB0b3Agb2YgOmZ1bmM6YHdyYXBgLiAgRm9yIGV4YW1wbGU6OgogCkBAIC0xOTA5LDcgKzE5MDksNyBAQAogICBzaG9ydCBpbnRgLCAgYGBJYGAgZm9yIDpjOnR5cGU6YHVuc2lnbmVkIGludGAsICBhbmQgYGBLYGAgZm9yIDpjOnR5cGU6YHVuc2lnbmVkCiAgIGxvbmcgbG9uZ2AuCiAKLSogQSBuZXcgZnVuY3Rpb24sIDpjOmZ1bmM6YFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmcobWFwcGluZywgY2hhciBcKmtleSlgIHdhcyBhZGRlZAorKiBBIG5ldyBmdW5jdGlvbiwgYGBQeU9iamVjdF9EZWxJdGVtU3RyaW5nKG1hcHBpbmcsIGNoYXIgKmtleSlgYCB3YXMgYWRkZWQKICAgYXMgc2hvcnRoYW5kIGZvciBgYFB5T2JqZWN0X0RlbEl0ZW0obWFwcGluZywgUHlTdHJpbmdfTmV3KGtleSkpYGAuCiAKICogRmlsZSBvYmplY3RzIG5vdyBtYW5hZ2UgdGhlaXIgaW50ZXJuYWwgc3RyaW5nIGJ1ZmZlciBkaWZmZXJlbnRseSwgaW5jcmVhc2luZwpkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzIuNC5yc3QgYi9Eb2Mvd2hhdHNuZXcvMi40LnJzdAppbmRleCBkMDAzY2RiLi40MjFkYzBjIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMi40LnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMi40LnJzdApAQCAtMzcsNyArMzcsNyBAQAogCiBQeXRob24gMi4zIGludHJvZHVjZWQgdGhlIDptb2Q6YHNldHNgIG1vZHVsZS4gIEMgaW1wbGVtZW50YXRpb25zIG9mIHNldCBkYXRhCiB0eXBlcyBoYXZlIG5vdyBiZWVuIGFkZGVkIHRvIHRoZSBQeXRob24gY29yZSBhcyB0d28gbmV3IGJ1aWx0LWluIHR5cGVzLAotOmZ1bmM6YHNldChpdGVyYWJsZSlgIGFuZCA6ZnVuYzpgZnJvemVuc2V0KGl0ZXJhYmxlKWAuICBUaGV5IHByb3ZpZGUgaGlnaCBzcGVlZAorYGBzZXQoaXRlcmFibGUpYGAgYW5kIGBgZnJvemVuc2V0KGl0ZXJhYmxlKWBgLiAgVGhleSBwcm92aWRlIGhpZ2ggc3BlZWQKIG9wZXJhdGlvbnMgZm9yIG1lbWJlcnNoaXAgdGVzdGluZywgZm9yIGVsaW1pbmF0aW5nIGR1cGxpY2F0ZXMgZnJvbSBzZXF1ZW5jZXMsCiBhbmQgZm9yIG1hdGhlbWF0aWNhbCBvcGVyYXRpb25zIGxpa2UgdW5pb25zLCBpbnRlcnNlY3Rpb25zLCBkaWZmZXJlbmNlcywgYW5kCiBzeW1tZXRyaWMgZGlmZmVyZW5jZXMuIDo6CkBAIC0zNDYsNyArMzQ2LDcgQEAKIFBFUCAzMjI6IFJldmVyc2UgSXRlcmF0aW9uCiA9PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1BIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgOmZ1bmM6YHJldmVyc2VkKHNlcSlgLCB0YWtlcyBhIHNlcXVlbmNlIGFuZCByZXR1cm5zIGFuCitBIG5ldyBidWlsdC1pbiBmdW5jdGlvbiwgYGByZXZlcnNlZChzZXEpYGAsIHRha2VzIGEgc2VxdWVuY2UgYW5kIHJldHVybnMgYW4KIGl0ZXJhdG9yIHRoYXQgbG9vcHMgb3ZlciB0aGUgZWxlbWVudHMgb2YgdGhlIHNlcXVlbmNlICBpbiByZXZlcnNlIG9yZGVyLiAgIDo6CiAKICAgID4+PiBmb3IgaSBpbiByZXZlcnNlZCh4cmFuZ2UoMSw0KSk6CkBAIC0zODQsNyArMzg0LDcgQEAKIAogVGhlIHN0YW5kYXJkIGxpYnJhcnkgcHJvdmlkZXMgYSBudW1iZXIgb2Ygd2F5cyB0byBleGVjdXRlIGEgc3VicHJvY2Vzcywgb2ZmZXJpbmcKIGRpZmZlcmVudCBmZWF0dXJlcyBhbmQgZGlmZmVyZW50IGxldmVscyBvZiBjb21wbGV4aXR5LgotOmZ1bmM6YG9zLnN5c3RlbShjb21tYW5kKWAgaXMgZWFzeSB0byB1c2UsIGJ1dCBzbG93IChpdCBydW5zIGEgc2hlbGwgcHJvY2VzcworYGBvcy5zeXN0ZW0oY29tbWFuZClgYCBpcyBlYXN5IHRvIHVzZSwgYnV0IHNsb3cgKGl0IHJ1bnMgYSBzaGVsbCBwcm9jZXNzCiB3aGljaCBleGVjdXRlcyB0aGUgY29tbWFuZCkgYW5kIGRhbmdlcm91cyAoeW91IGhhdmUgdG8gYmUgY2FyZWZ1bCBhYm91dCBlc2NhcGluZwogdGhlIHNoZWxsJ3MgbWV0YWNoYXJhY3RlcnMpLiAgVGhlIDptb2Q6YHBvcGVuMmAgbW9kdWxlIG9mZmVycyBjbGFzc2VzIHRoYXQgY2FuCiBjYXB0dXJlIHN0YW5kYXJkIG91dHB1dCBhbmQgc3RhbmRhcmQgZXJyb3IgZnJvbSB0aGUgc3VicHJvY2VzcywgYnV0IHRoZSBuYW1pbmcKQEAgLTQzMSw4ICs0MzEsOCBAQAogCiBPbmNlIHlvdSd2ZSBjcmVhdGVkIHRoZSA6Y2xhc3M6YFBvcGVuYCBpbnN0YW5jZSwgIHlvdSBjYW4gY2FsbCBpdHMgOm1ldGg6YHdhaXRgCiBtZXRob2QgdG8gcGF1c2UgdW50aWwgdGhlIHN1YnByb2Nlc3MgaGFzIGV4aXRlZCwgOm1ldGg6YHBvbGxgIHRvIGNoZWNrIGlmIGl0J3MKLWV4aXRlZCB3aXRob3V0IHBhdXNpbmcsICBvciA6bWV0aDpgY29tbXVuaWNhdGUoZGF0YSlgIHRvIHNlbmQgdGhlIHN0cmluZyAqZGF0YSoKLXRvIHRoZSBzdWJwcm9jZXNzJ3Mgc3RhbmRhcmQgaW5wdXQuICAgOm1ldGg6YGNvbW11bmljYXRlKGRhdGEpYCAgdGhlbiByZWFkcyBhbnkKK2V4aXRlZCB3aXRob3V0IHBhdXNpbmcsICBvciBgYGNvbW11bmljYXRlKGRhdGEpYGAgdG8gc2VuZCB0aGUgc3RyaW5nICpkYXRhKgordG8gdGhlIHN1YnByb2Nlc3MncyBzdGFuZGFyZCBpbnB1dC4gICBgYGNvbW11bmljYXRlKGRhdGEpYGAgIHRoZW4gcmVhZHMgYW55CiBkYXRhIHRoYXQgdGhlIHN1YnByb2Nlc3MgaGFzIHNlbnQgdG8gaXRzIHN0YW5kYXJkIG91dHB1dCAgb3Igc3RhbmRhcmQgZXJyb3IsCiByZXR1cm5pbmcgYSB0dXBsZSBgYChzdGRvdXRfZGF0YSwgc3RkZXJyX2RhdGEpYGAuCiAKQEAgLTUxNyw4ICs1MTcsOCBAQAogICAgPj4+IDEuMQogICAgMS4xMDAwMDAwMDAwMDAwMDAxCiAKLVRoZSBpbmFjY3VyYWN5IGlzbid0IGFsd2F5cyB2aXNpYmxlIHdoZW4geW91IHByaW50IHRoZSBudW1iZXIgYmVjYXVzZSB0aGUgRlAtdG8tCi1kZWNpbWFsLXN0cmluZyBjb252ZXJzaW9uIGlzIHByb3ZpZGVkIGJ5IHRoZSBDIGxpYnJhcnksIGFuZCBtb3N0IEMgbGlicmFyaWVzIHRyeQorVGhlIGluYWNjdXJhY3kgaXNuJ3QgYWx3YXlzIHZpc2libGUgd2hlbiB5b3UgcHJpbnQgdGhlIG51bWJlciBiZWNhdXNlIHRoZQorRlAtdG8tZGVjaW1hbC1zdHJpbmcgY29udmVyc2lvbiBpcyBwcm92aWRlZCBieSB0aGUgQyBsaWJyYXJ5LCBhbmQgbW9zdCBDIGxpYnJhcmllcyB0cnkKIHRvIHByb2R1Y2Ugc2Vuc2libGUgb3V0cHV0LiAgRXZlbiBpZiBpdCdzIG5vdCBkaXNwbGF5ZWQsIGhvd2V2ZXIsIHRoZSBpbmFjY3VyYWN5CiBpcyBzdGlsbCB0aGVyZSBhbmQgc3Vic2VxdWVudCBvcGVyYXRpb25zIGNhbiBtYWduaWZ5IHRoZSBlcnJvci4KIApAQCAtNTk1LDggKzU5NSw4IEBACiAgICAgIC4uLgogICAgZGVjaW1hbC5JbnZhbGlkT3BlcmF0aW9uOiB4ICoqIChub24taW50ZWdlcikKIAotWW91IGNhbiBjb21iaW5lIDpjbGFzczpgRGVjaW1hbGAgaW5zdGFuY2VzIHdpdGggaW50ZWdlcnMsIGJ1dCBub3Qgd2l0aCBmbG9hdGluZy0KLXBvaW50IG51bWJlcnM6OgorWW91IGNhbiBjb21iaW5lIDpjbGFzczpgRGVjaW1hbGAgaW5zdGFuY2VzIHdpdGggaW50ZWdlcnMsIGJ1dCBub3Qgd2l0aAorZmxvYXRpbmctcG9pbnQgbnVtYmVyczo6CiAKICAgID4+PiBhICsgNAogICAgRGVjaW1hbCgiMzkuNzIiKQpAQCAtNjg0LDggKzY4NCw4IEBACiAgICAgICBSYXltb25kIEhldHRpbmdlciwgQWFoeiwgYW5kIFRpbSBQZXRlcnMuCiAKICAgIGh0dHA6Ly93d3cubGFoZXkuY29tL2Zsb2F0Lmh0bQotICAgICAgVGhlIGFydGljbGUgdXNlcyBGb3J0cmFuIGNvZGUgdG8gaWxsdXN0cmF0ZSBtYW55IG9mIHRoZSBwcm9ibGVtcyB0aGF0IGZsb2F0aW5nLQotICAgICAgcG9pbnQgaW5hY2N1cmFjeSBjYW4gY2F1c2UuCisgICAgICBUaGUgYXJ0aWNsZSB1c2VzIEZvcnRyYW4gY29kZSB0byBpbGx1c3RyYXRlIG1hbnkgb2YgdGhlIHByb2JsZW1zIHRoYXQKKyAgICAgIGZsb2F0aW5nLXBvaW50IGluYWNjdXJhY3kgY2FuIGNhdXNlLgogCiAgICBodHRwOi8vc3BlbGVvdHJvdmUuY29tL2RlY2ltYWwvCiAgICAgICBBIGRlc2NyaXB0aW9uIG9mIGEgZGVjaW1hbC1iYXNlZCByZXByZXNlbnRhdGlvbi4gIFRoaXMgcmVwcmVzZW50YXRpb24gaXMgYmVpbmcKQEAgLTc0MSwxOCArNzQxLDE4IEBACiB0byB0aGUgYGAnQydgYCBsb2NhbGUuICBPZnRlbiB0aGlzIHdhcyBiZWNhdXNlIHRoZSBjb2RlIHdhcyB1c2luZyB0aGUgQwogbGlicmFyeSdzIDpjOmZ1bmM6YGF0b2ZgIGZ1bmN0aW9uLgogCi1Ob3Qgc2V0dGluZyB0aGUgbnVtZXJpYyBsb2NhbGUgY2F1c2VkIHRyb3VibGUgZm9yIGV4dGVuc2lvbnMgdGhhdCB1c2VkIHRoaXJkLQotcGFydHkgQyBsaWJyYXJpZXMsIGhvd2V2ZXIsIGJlY2F1c2UgdGhleSB3b3VsZG4ndCBoYXZlIHRoZSBjb3JyZWN0IGxvY2FsZSBzZXQuCitOb3Qgc2V0dGluZyB0aGUgbnVtZXJpYyBsb2NhbGUgY2F1c2VkIHRyb3VibGUgZm9yIGV4dGVuc2lvbnMgdGhhdCB1c2VkIHRoaXJkLXBhcnR5CitDIGxpYnJhcmllcywgaG93ZXZlciwgYmVjYXVzZSB0aGV5IHdvdWxkbid0IGhhdmUgdGhlIGNvcnJlY3QgbG9jYWxlIHNldC4KIFRoZSBtb3RpdmF0aW5nIGV4YW1wbGUgd2FzIEdUSyssIHdob3NlIHVzZXIgaW50ZXJmYWNlIHdpZGdldHMgd2VyZW4ndCBkaXNwbGF5aW5nCiBudW1iZXJzIGluIHRoZSBjdXJyZW50IGxvY2FsZS4KIAogVGhlIHNvbHV0aW9uIGRlc2NyaWJlZCBpbiB0aGUgUEVQIGlzIHRvIGFkZCB0aHJlZSBuZXcgZnVuY3Rpb25zIHRvIHRoZSBQeXRob24KIEFQSSB0aGF0IHBlcmZvcm0gQVNDSUktb25seSBjb252ZXJzaW9ucywgaWdub3JpbmcgdGhlIGxvY2FsZSBzZXR0aW5nOgogCi0qIDpjOmZ1bmM6YFB5T1NfYXNjaWlfc3RydG9kKHN0ciwgcHRyKWAgIGFuZCA6YzpmdW5jOmBQeU9TX2FzY2lpX2F0b2Yoc3RyLCBwdHIpYAorKiBgYFB5T1NfYXNjaWlfc3RydG9kKHN0ciwgcHRyKWBgICBhbmQgYGBQeU9TX2FzY2lpX2F0b2Yoc3RyLCBwdHIpYGAKICAgYm90aCBjb252ZXJ0IGEgc3RyaW5nIHRvIGEgQyA6Yzp0eXBlOmBkb3VibGVgLgogCi0qIDpjOmZ1bmM6YFB5T1NfYXNjaWlfZm9ybWF0ZChidWZmZXIsIGJ1Zl9sZW4sIGZvcm1hdCwgZClgIGNvbnZlcnRzIGEKKyogYGBQeU9TX2FzY2lpX2Zvcm1hdGQoYnVmZmVyLCBidWZfbGVuLCBmb3JtYXQsIGQpYGAgY29udmVydHMgYQogICA6Yzp0eXBlOmBkb3VibGVgIHRvIGFuIEFTQ0lJIHN0cmluZy4KIAogVGhlIGNvZGUgZm9yIHRoZXNlIGZ1bmN0aW9ucyBjYW1lIGZyb20gdGhlIEdMaWIgbGlicmFyeQpAQCAtNzc4LDcgKzc3OCw3IEBACiAqIERlY29yYXRvcnMgZm9yIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyB3ZXJlIGFkZGVkICg6cGVwOmAzMThgKS4KIAogKiBCdWlsdC1pbiA6ZnVuYzpgc2V0YCBhbmQgOmZ1bmM6YGZyb3plbnNldGAgdHlwZXMgd2VyZSAgYWRkZWQgKDpwZXA6YDIxOGApLgotICBPdGhlciBuZXcgYnVpbHQtaW5zIGluY2x1ZGUgdGhlIDpmdW5jOmByZXZlcnNlZChzZXEpYCBmdW5jdGlvbiAoOnBlcDpgMzIyYCkuCisgIE90aGVyIG5ldyBidWlsdC1pbnMgaW5jbHVkZSB0aGUgYGByZXZlcnNlZChzZXEpYGAgZnVuY3Rpb24gKDpwZXA6YDMyMmApLgogCiAqIEdlbmVyYXRvciBleHByZXNzaW9ucyB3ZXJlIGFkZGVkICg6cGVwOmAyODlgKS4KIApAQCAtODU3LDcgKzg1Nyw3IEBACiAKICAgKEFsbCBjaGFuZ2VzIHRvIDptZXRoOmBzb3J0YCBjb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKLSogVGhlcmUgaXMgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gOmZ1bmM6YHNvcnRlZChpdGVyYWJsZSlgIHRoYXQgd29ya3MgbGlrZSB0aGUKKyogVGhlcmUgaXMgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24gYGBzb3J0ZWQoaXRlcmFibGUpYGAgdGhhdCB3b3JrcyBsaWtlIHRoZQogICBpbi1wbGFjZSA6bWV0aDpgbGlzdC5zb3J0YCBtZXRob2QgYnV0IGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zLiAgVGhlCiAgIGRpZmZlcmVuY2VzIGFyZToKIApAQCAtODk4LDggKzg5OCw4IEBACiAgIEZvciBleGFtcGxlLCAgeW91IGNhbiBub3cgcnVuIHRoZSBQeXRob24gcHJvZmlsZXIgd2l0aCBgYHB5dGhvbiAtbSBwcm9maWxlYGAuCiAgIChDb250cmlidXRlZCBieSBOaWNrIENvZ2hsYW4uKQogCi0qIFRoZSA6ZnVuYzpgZXZhbChleHByLCBnbG9iYWxzLCBsb2NhbHMpYCBhbmQgOmZ1bmM6YGV4ZWNmaWxlKGZpbGVuYW1lLCBnbG9iYWxzLAotICBsb2NhbHMpYCBmdW5jdGlvbnMgYW5kIHRoZSA6a2V5d29yZDpgZXhlY2Agc3RhdGVtZW50IG5vdyBhY2NlcHQgYW55IG1hcHBpbmcgdHlwZQorKiBUaGUgYGBldmFsKGV4cHIsIGdsb2JhbHMsIGxvY2FscylgYCBhbmQgYGBleGVjZmlsZShmaWxlbmFtZSwgZ2xvYmFscywKKyAgbG9jYWxzKWBgIGZ1bmN0aW9ucyBhbmQgdGhlIDprZXl3b3JkOmBleGVjYCBzdGF0ZW1lbnQgbm93IGFjY2VwdCBhbnkgbWFwcGluZyB0eXBlCiAgIGZvciB0aGUgKmxvY2FscyogcGFyYW1ldGVyLiAgUHJldmlvdXNseSB0aGlzIGhhZCB0byBiZSBhIHJlZ3VsYXIgUHl0aG9uCiAgIGRpY3Rpb25hcnkuICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCkBAIC05MTgsOCArOTE4LDggQEAKIAogICAoQ29udHJpYnV0ZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIuKQogCi0qIEVuY291bnRlcmluZyBhIGZhaWx1cmUgd2hpbGUgaW1wb3J0aW5nIGEgbW9kdWxlIG5vIGxvbmdlciBsZWF2ZXMgYSBwYXJ0aWFsbHktCi0gIGluaXRpYWxpemVkIG1vZHVsZSBvYmplY3QgaW4gYGBzeXMubW9kdWxlc2BgLiAgVGhlIGluY29tcGxldGUgbW9kdWxlIG9iamVjdCBsZWZ0CisqIEVuY291bnRlcmluZyBhIGZhaWx1cmUgd2hpbGUgaW1wb3J0aW5nIGEgbW9kdWxlIG5vIGxvbmdlciBsZWF2ZXMgYSBwYXJ0aWFsbHktaW5pdGlhbGl6ZWQKKyAgbW9kdWxlIG9iamVjdCBpbiBgYHN5cy5tb2R1bGVzYGAuICBUaGUgaW5jb21wbGV0ZSBtb2R1bGUgb2JqZWN0IGxlZnQKICAgYmVoaW5kIHdvdWxkIGZvb2wgZnVydGhlciBpbXBvcnRzIG9mIHRoZSBzYW1lIG1vZHVsZSBpbnRvIHN1Y2NlZWRpbmcsIGxlYWRpbmcgdG8KICAgY29uZnVzaW5nIGVycm9ycy4gICAoRml4ZWQgYnkgVGltIFBldGVycy4pCiAKQEAgLTEwMjgsOCArMTAyOCw4IEBACiAgIHByZXZpb3VzIG9uZXMgbGVmdCBvZmYuICAoSW1wbGVtZW50ZWQgYnkgV2FsdGVyIETDtnJ3YWxkLikKIAogKiBUaGVyZSBpcyBhIG5ldyA6bW9kOmBjb2xsZWN0aW9uc2AgbW9kdWxlIGZvciAgdmFyaW91cyBzcGVjaWFsaXplZCBjb2xsZWN0aW9uCi0gIGRhdGF0eXBlcy4gICBDdXJyZW50bHkgaXQgY29udGFpbnMganVzdCBvbmUgdHlwZSwgOmNsYXNzOmBkZXF1ZWAsICBhIGRvdWJsZS0KLSAgZW5kZWQgcXVldWUgdGhhdCBzdXBwb3J0cyBlZmZpY2llbnRseSBhZGRpbmcgYW5kIHJlbW92aW5nIGVsZW1lbnRzIGZyb20gZWl0aGVyCisgIGRhdGF0eXBlcy4gIEN1cnJlbnRseSBpdCBjb250YWlucyBqdXN0IG9uZSB0eXBlLCA6Y2xhc3M6YGRlcXVlYCwgYSBkb3VibGUtZW5kZWQKKyAgcXVldWUgdGhhdCBzdXBwb3J0cyBlZmZpY2llbnRseSBhZGRpbmcgYW5kIHJlbW92aW5nIGVsZW1lbnRzIGZyb20gZWl0aGVyCiAgIGVuZDo6CiAKICAgICAgPj4+IGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCkBAIC0xMDkwLDcgKzEwOTAsNyBAQAogICBZdmVzIERpb25uZSkgYW5kIG5ldyA6bWV0aDpgZGVsZXRlYWNsYCBhbmQgOm1ldGg6YG15cmlnaHRzYCBtZXRob2RzIChjb250cmlidXRlZAogICBieSBBcm5hdWQgTWF6aW4pLgogCi0qIFRoZSA6bW9kOmBpdGVydG9vbHNgIG1vZHVsZSBnYWluZWQgYSA6ZnVuYzpgZ3JvdXBieShpdGVyYWJsZVssICpmdW5jKl0pYAorKiBUaGUgOm1vZDpgaXRlcnRvb2xzYCBtb2R1bGUgZ2FpbmVkIGEgYGBncm91cGJ5KGl0ZXJhYmxlWywgKmZ1bmMqXSlgYAogICBmdW5jdGlvbi4gKml0ZXJhYmxlKiBpcyBzb21ldGhpbmcgdGhhdCBjYW4gYmUgaXRlcmF0ZWQgb3ZlciB0byByZXR1cm4gYSBzdHJlYW0KICAgb2YgZWxlbWVudHMsIGFuZCB0aGUgb3B0aW9uYWwgKmZ1bmMqIHBhcmFtZXRlciBpcyBhIGZ1bmN0aW9uIHRoYXQgdGFrZXMgYW4KICAgZWxlbWVudCBhbmQgcmV0dXJucyBhIGtleSB2YWx1ZTsgaWYgb21pdHRlZCwgdGhlIGtleSBpcyBzaW1wbHkgdGhlIGVsZW1lbnQKQEAgLTExMzksNyArMTEzOSw3IEBACiAKICAgKENvbnRyaWJ1dGVkIGJ5IEh5ZS1TaGlrIENoYW5nLikKIAotKiA6bW9kOmBpdGVydG9vbHNgIGFsc28gZ2FpbmVkIGEgZnVuY3Rpb24gbmFtZWQgOmZ1bmM6YHRlZShpdGVyYXRvciwgTilgIHRoYXQKKyogOm1vZDpgaXRlcnRvb2xzYCBhbHNvIGdhaW5lZCBhIGZ1bmN0aW9uIG5hbWVkIGBgdGVlKGl0ZXJhdG9yLCBOKWBgIHRoYXQKICAgcmV0dXJucyAqTiogaW5kZXBlbmRlbnQgaXRlcmF0b3JzIHRoYXQgcmVwbGljYXRlICppdGVyYXRvciouICBJZiAqTiogaXMgb21pdHRlZCwKICAgdGhlIGRlZmF1bHQgaXMgMi4gOjoKIApAQCAtMTE3Nyw3ICsxMTc3LDcgQEAKICAgICAgICAgIGxldmVsPTAsICAjIExvZyBhbGwgbWVzc2FnZXMKICAgICAgICAgIGZvcm1hdD0nJShsZXZlbG5hbWUpOiUocHJvY2Vzcyk6JSh0aHJlYWQpOiUobWVzc2FnZSknKQogCi0gIE90aGVyIGFkZGl0aW9ucyB0byB0aGUgOm1vZDpgbG9nZ2luZ2AgcGFja2FnZSBpbmNsdWRlIGEgOm1ldGg6YGxvZyhsZXZlbCwgbXNnKWAKKyAgT3RoZXIgYWRkaXRpb25zIHRvIHRoZSA6bW9kOmBsb2dnaW5nYCBwYWNrYWdlIGluY2x1ZGUgYSBgYGxvZyhsZXZlbCwgbXNnKWBgCiAgIGNvbnZlbmllbmNlIG1ldGhvZCwgYXMgd2VsbCBhcyBhIDpjbGFzczpgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyYCBjbGFzcyB0aGF0CiAgIHJvdGF0ZXMgaXRzIGxvZyBmaWxlcyBhdCBhIHRpbWVkIGludGVydmFsLiAgVGhlIG1vZHVsZSBhbHJlYWR5IGhhZAogICA6Y2xhc3M6YFJvdGF0aW5nRmlsZUhhbmRsZXJgLCB3aGljaCByb3RhdGVkIGxvZ3Mgb25jZSB0aGUgZmlsZSBleGNlZWRlZCBhCkBAIC0xMTk2LDcgKzExOTYsNyBAQAogICBncm91cCBvciBmb3IgYSByYW5nZSBvZiBncm91cHMuIChDb250cmlidXRlZCBieSBKw7xyZ2VuIEEuIEVyaGFyZC4pCiAKICogVHdvIG5ldyBmdW5jdGlvbnMgd2VyZSBhZGRlZCB0byB0aGUgOm1vZDpgb3BlcmF0b3JgIG1vZHVsZSwKLSAgOmZ1bmM6YGF0dHJnZXR0ZXIoYXR0cilgIGFuZCA6ZnVuYzpgaXRlbWdldHRlcihpbmRleClgLiBCb3RoIGZ1bmN0aW9ucyByZXR1cm4KKyAgYGBhdHRyZ2V0dGVyKGF0dHIpYGAgYW5kIGBgaXRlbWdldHRlcihpbmRleClgYC4gQm90aCBmdW5jdGlvbnMgcmV0dXJuCiAgIGNhbGxhYmxlcyB0aGF0IHRha2UgYSBzaW5nbGUgYXJndW1lbnQgYW5kIHJldHVybiB0aGUgY29ycmVzcG9uZGluZyBhdHRyaWJ1dGUgb3IKICAgaXRlbTsgdGhlc2UgY2FsbGFibGVzIG1ha2UgZXhjZWxsZW50IGRhdGEgZXh0cmFjdG9ycyB3aGVuIHVzZWQgd2l0aCA6ZnVuYzpgbWFwYAogICBvciA6ZnVuYzpgc29ydGVkYC4gIEZvciBleGFtcGxlOjoKQEAgLTEyMjMsMTQgKzEyMjMsMTQgQEAKICAgcmVwbGFjZW1lbnQgZm9yIDpmdW5jOmByZmM4MjIuZm9ybWF0ZGF0ZWAuICBZb3UgbWF5IHdhbnQgdG8gd3JpdGUgbmV3IGUtbWFpbAogICBwcm9jZXNzaW5nIGNvZGUgd2l0aCB0aGlzIGluIG1pbmQuICAoQ2hhbmdlIGltcGxlbWVudGVkIGJ5IEFudGhvbnkgQmF4dGVyLikKIAotKiBBIG5ldyA6ZnVuYzpgdXJhbmRvbShuKWAgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmBvc2AgbW9kdWxlLCByZXR1cm5pbmcKKyogQSBuZXcgYGB1cmFuZG9tKG4pYGAgZnVuY3Rpb24gd2FzIGFkZGVkIHRvIHRoZSA6bW9kOmBvc2AgbW9kdWxlLCByZXR1cm5pbmcKICAgYSBzdHJpbmcgY29udGFpbmluZyAqbiogYnl0ZXMgb2YgcmFuZG9tIGRhdGEuICBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGFjY2VzcyB0bwogICBwbGF0Zm9ybS1zcGVjaWZpYyBzb3VyY2VzIG9mIHJhbmRvbW5lc3Mgc3VjaCBhcyA6ZmlsZTpgL2Rldi91cmFuZG9tYCBvbiBMaW51eCBvcgogICB0aGUgV2luZG93cyBDcnlwdG9BUEkuICAoQ29udHJpYnV0ZWQgYnkgVHJldm9yIFBlcnJpbi4pCiAKLSogQW5vdGhlciBuZXcgZnVuY3Rpb246IDpmdW5jOmBvcy5wYXRoLmxleGlzdHMocGF0aClgICByZXR1cm5zIHRydWUgaWYgdGhlIGZpbGUKKyogQW5vdGhlciBuZXcgZnVuY3Rpb246IGBgb3MucGF0aC5sZXhpc3RzKHBhdGgpYGAgIHJldHVybnMgdHJ1ZSBpZiB0aGUgZmlsZQogICBzcGVjaWZpZWQgYnkgKnBhdGgqIGV4aXN0cywgd2hldGhlciBvciBub3QgaXQncyBhIHN5bWJvbGljIGxpbmsuICBUaGlzIGRpZmZlcnMKLSAgZnJvbSB0aGUgZXhpc3RpbmcgOmZ1bmM6YG9zLnBhdGguZXhpc3RzKHBhdGgpYCBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBmYWxzZSBpZgorICBmcm9tIHRoZSBleGlzdGluZyBgYG9zLnBhdGguZXhpc3RzKHBhdGgpYGAgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgZmFsc2UgaWYKICAgKnBhdGgqIGlzIGEgc3ltbGluayB0aGF0IHBvaW50cyB0byBhIGRlc3RpbmF0aW9uIHRoYXQgZG9lc24ndCBleGlzdC4KICAgKENvbnRyaWJ1dGVkIGJ5IEJlbmkgQ2hlcm5pYXZza3kuKQogCkBAIC0xMjQzLDcgKzEyNDMsNyBAQAogKiBUaGUgOm1vZDpgcHJvZmlsZWAgbW9kdWxlIGNhbiBub3cgcHJvZmlsZSBDIGV4dGVuc2lvbiBmdW5jdGlvbnMuIChDb250cmlidXRlZAogICBieSBOaWNrIEJhc3Rpbi4pCiAKLSogVGhlIDptb2Q6YHJhbmRvbWAgbW9kdWxlIGhhcyBhIG5ldyBtZXRob2QgY2FsbGVkIDptZXRoOmBnZXRyYW5kYml0cyhOKWAgdGhhdAorKiBUaGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUgaGFzIGEgbmV3IG1ldGhvZCBjYWxsZWQgYGBnZXRyYW5kYml0cyhOKWBgIHRoYXQKICAgcmV0dXJucyBhIGxvbmcgaW50ZWdlciAqTiogYml0cyBpbiBsZW5ndGguICBUaGUgZXhpc3RpbmcgOm1ldGg6YHJhbmRyYW5nZWAKICAgbWV0aG9kIG5vdyB1c2VzIDptZXRoOmBnZXRyYW5kYml0c2Agd2hlcmUgYXBwcm9wcmlhdGUsIG1ha2luZyBnZW5lcmF0aW9uIG9mCiAgIGFyYml0cmFyaWx5IGxhcmdlIHJhbmRvbSBudW1iZXJzIG1vcmUgZWZmaWNpZW50LiAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQKQEAgLTEyNzIsNyArMTI3Miw3IEBACiAgIHRoaXMsIGJ1dCAyLjQgd2lsbCByYWlzZSBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgZXhjZXB0aW9uLgogCiAqIFR3byBuZXcgZnVuY3Rpb25zIHdlcmUgYWRkZWQgdG8gdGhlIDptb2Q6YHNvY2tldGAgbW9kdWxlLiA6ZnVuYzpgc29ja2V0cGFpcmAKLSAgcmV0dXJucyBhIHBhaXIgb2YgY29ubmVjdGVkIHNvY2tldHMgYW5kIDpmdW5jOmBnZXRzZXJ2Ynlwb3J0KHBvcnQpYCBsb29rcyB1cCB0aGUKKyAgcmV0dXJucyBhIHBhaXIgb2YgY29ubmVjdGVkIHNvY2tldHMgYW5kIGBgZ2V0c2VydmJ5cG9ydChwb3J0KWBgIGxvb2tzIHVwIHRoZQogICBzZXJ2aWNlIG5hbWUgZm9yIGEgZ2l2ZW4gcG9ydCBudW1iZXIuIChDb250cmlidXRlZCBieSBEYXZlIENvbGUgYW5kIEJhcnJ5CiAgIFdhcnNhdy4pCiAKQEAgLTE0NTYsMTEgKzE0NTYsMTEgQEAKICogQW5vdGhlciBuZXcgbWFjcm8sIDpjOm1hY3JvOmBQeV9DTEVBUihvYmopYCwgIGRlY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50IG9mCiAgICpvYmoqIGFuZCBzZXRzICpvYmoqIHRvIHRoZSBudWxsIHBvaW50ZXIuICAoQ29udHJpYnV0ZWQgYnkgSmltIEZ1bHRvbi4pCiAKLSogQSBuZXcgZnVuY3Rpb24sIDpjOmZ1bmM6YFB5VHVwbGVfUGFjayhOLCBvYmoxLCBvYmoyLCAuLi4sIG9iak4pYCwgY29uc3RydWN0cworKiBBIG5ldyBmdW5jdGlvbiwgYGBQeVR1cGxlX1BhY2soTiwgb2JqMSwgb2JqMiwgLi4uLCBvYmpOKWBgLCBjb25zdHJ1Y3RzCiAgIHR1cGxlcyBmcm9tIGEgdmFyaWFibGUgbGVuZ3RoIGFyZ3VtZW50IGxpc3Qgb2YgUHl0aG9uIG9iamVjdHMuICAoQ29udHJpYnV0ZWQgYnkKICAgUmF5bW9uZCBIZXR0aW5nZXIuKQogCi0qIEEgbmV3IGZ1bmN0aW9uLCA6YzpmdW5jOmBQeURpY3RfQ29udGFpbnMoZCwgaylgLCBpbXBsZW1lbnRzIGZhc3QgZGljdGlvbmFyeQorKiBBIG5ldyBmdW5jdGlvbiwgYGBQeURpY3RfQ29udGFpbnMoZCwgaylgYCwgaW1wbGVtZW50cyBmYXN0IGRpY3Rpb25hcnkKICAgbG9va3VwcyB3aXRob3V0IG1hc2tpbmcgZXhjZXB0aW9ucyByYWlzZWQgZHVyaW5nIHRoZSBsb29rLXVwIHByb2Nlc3MuCiAgIChDb250cmlidXRlZCBieSBSYXltb25kIEhldHRpbmdlci4pCiAKQEAgLTE0ODUsOCArMTQ4NSw4IEBACiAgIGludGVuZGVkIGFzIGFuIGFpZCB0byBwZW9wbGUgZGV2ZWxvcGluZyB0aGUgUHl0aG9uIGNvcmUuICBQcm92aWRpbmcKICAgOm9wdGlvbjpgIS0tZW5hYmxlLXByb2ZpbGluZ2AgdG8gdGhlIDpwcm9ncmFtOmBjb25maWd1cmVgIHNjcmlwdCB3aWxsIGxldCB5b3UKICAgcHJvZmlsZSB0aGUgaW50ZXJwcmV0ZXIgd2l0aCA6cHJvZ3JhbTpgZ3Byb2ZgLCBhbmQgcHJvdmlkaW5nIHRoZQotICA6b3B0aW9uOmAhLS13aXRoLXRzY2Agc3dpdGNoIGVuYWJsZXMgcHJvZmlsaW5nIHVzaW5nIHRoZSBQZW50aXVtJ3MgVGltZS1TdGFtcC0KLSAgQ291bnRlciByZWdpc3Rlci4gIE5vdGUgdGhhdCB0aGUgOm9wdGlvbjpgIS0td2l0aC10c2NgIHN3aXRjaCBpcyBzbGlnaHRseQorICA6b3B0aW9uOmAhLS13aXRoLXRzY2Agc3dpdGNoIGVuYWJsZXMgcHJvZmlsaW5nIHVzaW5nIHRoZSBQZW50aXVtJ3MKKyAgVGltZS1TdGFtcC1Db3VudGVyIHJlZ2lzdGVyLiAgTm90ZSB0aGF0IHRoZSA6b3B0aW9uOmAhLS13aXRoLXRzY2Agc3dpdGNoIGlzIHNsaWdodGx5CiAgIG1pc25hbWVkLCBiZWNhdXNlIHRoZSBwcm9maWxpbmcgZmVhdHVyZSBhbHNvIHdvcmtzIG9uIHRoZSBQb3dlclBDIHBsYXRmb3JtLAogICB0aG91Z2ggdGhhdCBwcm9jZXNzb3IgYXJjaGl0ZWN0dXJlIGRvZXNuJ3QgY2FsbCB0aGF0IHJlZ2lzdGVyICJ0aGUgVFNDCiAgIHJlZ2lzdGVyIi4gIChDb250cmlidXRlZCBieSBKZXJlbXkgSHlsdG9uLikKQEAgLTE1NDAsOCArMTU0MCw4IEBACiAKICogVGhlIDptb2Q6YHRhcmZpbGVgIG1vZHVsZSBub3cgZ2VuZXJhdGVzIEdOVS1mb3JtYXQgdGFyIGZpbGVzIGJ5IGRlZmF1bHQuCiAKLSogRW5jb3VudGVyaW5nIGEgZmFpbHVyZSB3aGlsZSBpbXBvcnRpbmcgYSBtb2R1bGUgbm8gbG9uZ2VyIGxlYXZlcyBhIHBhcnRpYWxseS0KLSAgaW5pdGlhbGl6ZWQgbW9kdWxlIG9iamVjdCBpbiBgYHN5cy5tb2R1bGVzYGAuCisqIEVuY291bnRlcmluZyBhIGZhaWx1cmUgd2hpbGUgaW1wb3J0aW5nIGEgbW9kdWxlIG5vIGxvbmdlciBsZWF2ZXMgYQorICBwYXJ0aWFsbHktaW5pdGlhbGl6ZWQgbW9kdWxlIG9iamVjdCBpbiBgYHN5cy5tb2R1bGVzYGAuCiAKICogOmNvbnN0OmBOb25lYCBpcyBub3cgYSBjb25zdGFudDsgY29kZSB0aGF0IGJpbmRzIGEgbmV3IHZhbHVlIHRvICB0aGUgbmFtZQogICBgYE5vbmVgYCBpcyBub3cgYSBzeW50YXggZXJyb3IuCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi41LnJzdCBiL0RvYy93aGF0c25ldy8yLjUucnN0CmluZGV4IGMxYjI2ZjQuLjY0MDBiYjEgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjUucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjUucnN0CkBAIC0xNTcsOCArMTU3LDggQEAKICAgIHNlcnZlcl9sb2cgPSBmdW5jdG9vbHMucGFydGlhbChsb2csIHN1YnN5c3RlbT0nc2VydmVyJykKICAgIHNlcnZlcl9sb2coJ1VuYWJsZSB0byBvcGVuIHNvY2tldCcpCiAKLUhlcmUncyBhbm90aGVyIGV4YW1wbGUsIGZyb20gYSBwcm9ncmFtIHRoYXQgdXNlcyBQeUdUSy4gIEhlcmUgYSBjb250ZXh0LQotc2Vuc2l0aXZlIHBvcC11cCBtZW51IGlzIGJlaW5nIGNvbnN0cnVjdGVkIGR5bmFtaWNhbGx5LiAgVGhlIGNhbGxiYWNrIHByb3ZpZGVkCitIZXJlJ3MgYW5vdGhlciBleGFtcGxlLCBmcm9tIGEgcHJvZ3JhbSB0aGF0IHVzZXMgUHlHVEsuICBIZXJlIGEgY29udGV4dC1zZW5zaXRpdmUKK3BvcC11cCBtZW51IGlzIGJlaW5nIGNvbnN0cnVjdGVkIGR5bmFtaWNhbGx5LiAgVGhlIGNhbGxiYWNrIHByb3ZpZGVkCiBmb3IgdGhlIG1lbnUgb3B0aW9uIGlzIGEgcGFydGlhbGx5IGFwcGxpZWQgdmVyc2lvbiBvZiB0aGUgOm1ldGg6YG9wZW5faXRlbWAKIG1ldGhvZCwgd2hlcmUgdGhlIGZpcnN0IGFyZ3VtZW50IGhhcyBiZWVuIHByb3ZpZGVkLiA6OgogCkBAIC0xNzEsOCArMTcxLDggQEAKICAgICAgICAgICAgcG9wdXBfbWVudS5hcHBlbmQoICgiT3BlbiIsIG9wZW5fZnVuYywgMSkgKQogCiBBbm90aGVyIGZ1bmN0aW9uIGluIHRoZSA6bW9kOmBmdW5jdG9vbHNgIG1vZHVsZSBpcyB0aGUKLTpmdW5jOmB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB3cmFwcGVkKWAgZnVuY3Rpb24gdGhhdCBoZWxwcyB5b3Ugd3JpdGUgd2VsbC0KLWJlaGF2ZWQgZGVjb3JhdG9ycy4gIDpmdW5jOmB1cGRhdGVfd3JhcHBlcmAgY29waWVzIHRoZSBuYW1lLCBtb2R1bGUsIGFuZAorYGB1cGRhdGVfd3JhcHBlcih3cmFwcGVyLCB3cmFwcGVkKWBgIGZ1bmN0aW9uIHRoYXQgaGVscHMgeW91IHdyaXRlCit3ZWxsLWJlaGF2ZWQgZGVjb3JhdG9ycy4gIDpmdW5jOmB1cGRhdGVfd3JhcHBlcmAgY29waWVzIHRoZSBuYW1lLCBtb2R1bGUsIGFuZAogZG9jc3RyaW5nIGF0dHJpYnV0ZSB0byBhIHdyYXBwZXIgZnVuY3Rpb24gc28gdGhhdCB0cmFjZWJhY2tzIGluc2lkZSB0aGUgd3JhcHBlZAogZnVuY3Rpb24gYXJlIGVhc2llciB0byB1bmRlcnN0YW5kLiAgRm9yIGV4YW1wbGUsIHlvdSBtaWdodCB3cml0ZTo6CiAKQEAgLTIyOSw3ICsyMjksNyBAQAogICAgICAgICApCiAKIEFub3RoZXIgbmV3IGVuaGFuY2VtZW50IHRvIHRoZSBQeXRob24gcGFja2FnZSBpbmRleCBhdAotaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcgaXMgc3RvcmluZyBzb3VyY2UgYW5kIGJpbmFyeSBhcmNoaXZlcyBmb3IgYQoraHR0cHM6Ly9weXBpLm9yZyBpcyBzdG9yaW5nIHNvdXJjZSBhbmQgYmluYXJ5IGFyY2hpdmVzIGZvciBhCiBwYWNrYWdlLiAgVGhlIG5ldyA6Y29tbWFuZDpgdXBsb2FkYCBEaXN0dXRpbHMgY29tbWFuZCB3aWxsIHVwbG9hZCBhIHBhY2thZ2UgdG8KIHRoZSByZXBvc2l0b3J5LgogCkBAIC0yOTcsOCArMjk3LDggQEAKIGFkZGVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLgogCiBJbiBQeXRob24gMi41LCB5b3UgY2FuIHN3aXRjaCA6a2V5d29yZDpgaW1wb3J0YCdzIGJlaGF2aW91ciB0byAgYWJzb2x1dGUgaW1wb3J0cwotdXNpbmcgYSBgYGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0YGAgZGlyZWN0aXZlLiAgVGhpcyBhYnNvbHV0ZS0KLWltcG9ydCBiZWhhdmlvdXIgd2lsbCBiZWNvbWUgdGhlIGRlZmF1bHQgaW4gYSBmdXR1cmUgdmVyc2lvbiAocHJvYmFibHkgUHl0aG9uCit1c2luZyBhIGBgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnRgYCBkaXJlY3RpdmUuICBUaGlzIGFic29sdXRlLWltcG9ydAorYmVoYXZpb3VyIHdpbGwgYmVjb21lIHRoZSBkZWZhdWx0IGluIGEgZnV0dXJlIHZlcnNpb24gKHByb2JhYmx5IFB5dGhvbgogMi43KS4gIE9uY2UgYWJzb2x1dGUgaW1wb3J0cyAgYXJlIHRoZSBkZWZhdWx0LCBgYGltcG9ydCBzdHJpbmdgYCB3aWxsIGFsd2F5cwogZmluZCB0aGUgc3RhbmRhcmQgbGlicmFyeSdzIHZlcnNpb24uIEl0J3Mgc3VnZ2VzdGVkIHRoYXQgdXNlcnMgc2hvdWxkIGJlZ2luCiB1c2luZyBhYnNvbHV0ZSBpbXBvcnRzIGFzIG11Y2ggYXMgcG9zc2libGUsIHNvIGl0J3MgcHJlZmVyYWJsZSB0byBiZWdpbiB3cml0aW5nCkBAIC00NTQsNyArNDU0LDcgQEAKIGBgdmFsID0geWllbGQgaWBgIGJ1dCBoYXZlIHRvIHVzZSBwYXJlbnRoZXNlcyB3aGVuIHRoZXJlJ3MgYW4gb3BlcmF0aW9uLCBhcyBpbgogYGB2YWwgPSAoeWllbGQgaSkgKyAxMmBgLikKIAotVmFsdWVzIGFyZSBzZW50IGludG8gYSBnZW5lcmF0b3IgYnkgY2FsbGluZyBpdHMgOm1ldGg6YHNlbmQodmFsdWUpYCBtZXRob2QuICBUaGUKK1ZhbHVlcyBhcmUgc2VudCBpbnRvIGEgZ2VuZXJhdG9yIGJ5IGNhbGxpbmcgaXRzIGBgc2VuZCh2YWx1ZSlgYCBtZXRob2QuICBUaGUKIGdlbmVyYXRvcidzIGNvZGUgaXMgdGhlbiByZXN1bWVkIGFuZCB0aGUgOmtleXdvcmQ6YHlpZWxkYCBleHByZXNzaW9uIHJldHVybnMgdGhlCiBzcGVjaWZpZWQgKnZhbHVlKi4gIElmIHRoZSByZWd1bGFyIDptZXRoOmBuZXh0YCBtZXRob2QgaXMgY2FsbGVkLCB0aGUKIDprZXl3b3JkOmB5aWVsZGAgcmV0dXJucyA6Y29uc3Q6YE5vbmVgLgpAQCAtNDk2LDcgKzQ5Niw3IEBACiAKIEluIGFkZGl0aW9uIHRvIDptZXRoOmBzZW5kYCwgdGhlcmUgYXJlIHR3byBvdGhlciBuZXcgbWV0aG9kcyBvbiBnZW5lcmF0b3JzOgogCi0qIDptZXRoOmB0aHJvdyh0eXBlLCB2YWx1ZT1Ob25lLCB0cmFjZWJhY2s9Tm9uZSlgIGlzIHVzZWQgdG8gcmFpc2UgYW4gZXhjZXB0aW9uCisqIGBgdGhyb3codHlwZSwgdmFsdWU9Tm9uZSwgdHJhY2ViYWNrPU5vbmUpYGAgaXMgdXNlZCB0byByYWlzZSBhbiBleGNlcHRpb24KICAgaW5zaWRlIHRoZSBnZW5lcmF0b3I7IHRoZSBleGNlcHRpb24gaXMgcmFpc2VkIGJ5IHRoZSA6a2V5d29yZDpgeWllbGRgIGV4cHJlc3Npb24KICAgd2hlcmUgdGhlIGdlbmVyYXRvcidzIGV4ZWN1dGlvbiBpcyBwYXVzZWQuCiAKQEAgLTYwMiw4ICs2MDIsOCBAQAogICAgICAgICAgICAuLi4gbW9yZSBwcm9jZXNzaW5nIGNvZGUgLi4uCiAKIEFmdGVyIHRoaXMgc3RhdGVtZW50IGhhcyBleGVjdXRlZCwgdGhlIGZpbGUgb2JqZWN0IGluICpmKiB3aWxsIGhhdmUgYmVlbgotYXV0b21hdGljYWxseSBjbG9zZWQsIGV2ZW4gaWYgdGhlIDprZXl3b3JkOmBmb3JgIGxvb3AgcmFpc2VkIGFuIGV4Y2VwdGlvbiBwYXJ0LQotd2F5IHRocm91Z2ggdGhlIGJsb2NrLgorYXV0b21hdGljYWxseSBjbG9zZWQsIGV2ZW4gaWYgdGhlIDprZXl3b3JkOmBmb3JgIGxvb3AgcmFpc2VkIGFuIGV4Y2VwdGlvbgorcGFydC13YXkgdGhyb3VnaCB0aGUgYmxvY2suCiAKIC4uIG5vdGU6OgogCkBAIC02NjAsNyArNjYwLDcgQEAKIAogKiBUaGUgY29kZSBpbiAqQkxPQ0sqIGlzIGV4ZWN1dGVkLgogCi0qIElmICpCTE9DSyogcmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIDptZXRoOmBfX2V4aXRfXyh0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKWAKKyogSWYgKkJMT0NLKiByYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgYGBfX2V4aXRfXyh0eXBlLCB2YWx1ZSwgdHJhY2ViYWNrKWBgCiAgIGlzIGNhbGxlZCB3aXRoIHRoZSBleGNlcHRpb24gZGV0YWlscywgdGhlIHNhbWUgdmFsdWVzIHJldHVybmVkIGJ5CiAgIDpmdW5jOmBzeXMuZXhjX2luZm9gLiAgVGhlIG1ldGhvZCdzIHJldHVybiB2YWx1ZSBjb250cm9scyB3aGV0aGVyIHRoZSBleGNlcHRpb24KICAgaXMgcmUtcmFpc2VkOiBhbnkgZmFsc2UgdmFsdWUgcmUtcmFpc2VzIHRoZSBleGNlcHRpb24sIGFuZCBgYFRydWVgYCB3aWxsIHJlc3VsdApAQCAtNzczLDcgKzc3Myw3IEBACiAgICB3aXRoIGRiX3RyYW5zYWN0aW9uKGRiKSBhcyBjdXJzb3I6CiAgICAgICAgLi4uCiAKLVRoZSA6bW9kOmBjb250ZXh0bGliYCBtb2R1bGUgYWxzbyBoYXMgYSA6ZnVuYzpgbmVzdGVkKG1ncjEsIG1ncjIsIC4uLilgIGZ1bmN0aW9uCitUaGUgOm1vZDpgY29udGV4dGxpYmAgbW9kdWxlIGFsc28gaGFzIGEgYGBuZXN0ZWQobWdyMSwgbWdyMiwgLi4uKWBgIGZ1bmN0aW9uCiB0aGF0IGNvbWJpbmVzIGEgbnVtYmVyIG9mIGNvbnRleHQgbWFuYWdlcnMgc28geW91IGRvbid0IG5lZWQgdG8gd3JpdGUgbmVzdGVkCiAnOmtleXdvcmQ6YHdpdGhgJyBzdGF0ZW1lbnRzLiAgSW4gdGhpcyBleGFtcGxlLCB0aGUgc2luZ2xlICc6a2V5d29yZDpgd2l0aGAnCiBzdGF0ZW1lbnQgYm90aCBzdGFydHMgYSBkYXRhYmFzZSB0cmFuc2FjdGlvbiBhbmQgYWNxdWlyZXMgYSB0aHJlYWQgbG9jazo6CkBAIC03ODIsNyArNzgyLDcgQEAKICAgIHdpdGggbmVzdGVkIChkYl90cmFuc2FjdGlvbihkYiksIGxvY2spIGFzIChjdXJzb3IsIGxvY2tlZCk6CiAgICAgICAgLi4uCiAKLUZpbmFsbHksIHRoZSA6ZnVuYzpgY2xvc2luZyhvYmplY3QpYCBmdW5jdGlvbiByZXR1cm5zICpvYmplY3QqIHNvIHRoYXQgaXQgY2FuIGJlCitGaW5hbGx5LCB0aGUgYGBjbG9zaW5nKG9iamVjdClgYCBmdW5jdGlvbiByZXR1cm5zICpvYmplY3QqIHNvIHRoYXQgaXQgY2FuIGJlCiBib3VuZCB0byBhIHZhcmlhYmxlLCBhbmQgY2FsbHMgYGBvYmplY3QuY2xvc2VgYCBhdCB0aGUgZW5kIG9mIHRoZSBibG9jay4gOjoKIAogICAgaW1wb3J0IHVybGxpYiwgc3lzCkBAIC05NTUsNyArOTU1LDcgQEAKIAogQSBjb3JyZXNwb25kaW5nIDphdHRyOmBuYl9pbmRleGAgc2xvdCB3YXMgYWRkZWQgdG8gdGhlIEMtbGV2ZWwKIDpjOnR5cGU6YFB5TnVtYmVyTWV0aG9kc2Agc3RydWN0dXJlIHRvIGxldCBDIGV4dGVuc2lvbnMgaW1wbGVtZW50IHRoaXMgcHJvdG9jb2wuCi06YzpmdW5jOmBQeU51bWJlcl9JbmRleChvYmopYCBjYW4gYmUgdXNlZCBpbiBleHRlbnNpb24gY29kZSB0byBjYWxsIHRoZQorYGBQeU51bWJlcl9JbmRleChvYmopYGAgY2FuIGJlIHVzZWQgaW4gZXh0ZW5zaW9uIGNvZGUgdG8gY2FsbCB0aGUKIDptZXRoOmBfX2luZGV4X19gIGZ1bmN0aW9uIGFuZCByZXRyaWV2ZSBpdHMgcmVzdWx0LgogCiAKQEAgLTk3Niw3ICs5NzYsNyBAQAogCiAqIFRoZSA6Y2xhc3M6YGRpY3RgIHR5cGUgaGFzIGEgbmV3IGhvb2sgZm9yIGxldHRpbmcgc3ViY2xhc3NlcyBwcm92aWRlIGEgZGVmYXVsdAogICB2YWx1ZSB3aGVuIGEga2V5IGlzbid0IGNvbnRhaW5lZCBpbiB0aGUgZGljdGlvbmFyeS4gV2hlbiBhIGtleSBpc24ndCBmb3VuZCwgdGhlCi0gIGRpY3Rpb25hcnkncyA6bWV0aDpgX19taXNzaW5nX18oa2V5KWAgbWV0aG9kIHdpbGwgYmUgY2FsbGVkLiAgVGhpcyBob29rIGlzIHVzZWQKKyAgZGljdGlvbmFyeSdzIGBgX19taXNzaW5nX18oa2V5KWBgIG1ldGhvZCB3aWxsIGJlIGNhbGxlZC4gIFRoaXMgaG9vayBpcyB1c2VkCiAgIHRvIGltcGxlbWVudCB0aGUgbmV3IDpjbGFzczpgZGVmYXVsdGRpY3RgIGNsYXNzIGluIHRoZSA6bW9kOmBjb2xsZWN0aW9uc2AKICAgbW9kdWxlLiAgVGhlIGZvbGxvd2luZyBleGFtcGxlIGRlZmluZXMgYSBkaWN0aW9uYXJ5ICB0aGF0IHJldHVybnMgemVybyBmb3IgYW55CiAgIG1pc3Npbmcga2V5OjoKQEAgLTk4OSwxNiArOTg5LDE2IEBACiAgICAgIHByaW50IGRbMV0sIGRbMl0gICAjIFByaW50cyAxLCAyCiAgICAgIHByaW50IGRbM10sIGRbNF0gICAjIFByaW50cyAwLCAwCiAKLSogQm90aCA4LWJpdCBhbmQgVW5pY29kZSBzdHJpbmdzIGhhdmUgbmV3IDptZXRoOmBwYXJ0aXRpb24oc2VwKWAgIGFuZAotICA6bWV0aDpgcnBhcnRpdGlvbihzZXApYCBtZXRob2RzIHRoYXQgc2ltcGxpZnkgYSBjb21tb24gdXNlIGNhc2UuCisqIEJvdGggOC1iaXQgYW5kIFVuaWNvZGUgc3RyaW5ncyBoYXZlIG5ldyBgYHBhcnRpdGlvbihzZXApYGAgIGFuZAorICBgYHJwYXJ0aXRpb24oc2VwKWBgIG1ldGhvZHMgdGhhdCBzaW1wbGlmeSBhIGNvbW1vbiB1c2UgY2FzZS4KIAotICBUaGUgOm1ldGg6YGZpbmQoUylgIG1ldGhvZCBpcyBvZnRlbiB1c2VkIHRvIGdldCBhbiBpbmRleCB3aGljaCBpcyB0aGVuIHVzZWQgdG8KKyAgVGhlIGBgZmluZChTKWBgIG1ldGhvZCBpcyBvZnRlbiB1c2VkIHRvIGdldCBhbiBpbmRleCB3aGljaCBpcyB0aGVuIHVzZWQgdG8KICAgc2xpY2UgdGhlIHN0cmluZyBhbmQgb2J0YWluIHRoZSBwaWVjZXMgdGhhdCBhcmUgYmVmb3JlIGFuZCBhZnRlciB0aGUgc2VwYXJhdG9yLgotICA6bWV0aDpgcGFydGl0aW9uKHNlcClgIGNvbmRlbnNlcyB0aGlzIHBhdHRlcm4gaW50byBhIHNpbmdsZSBtZXRob2QgY2FsbCB0aGF0CisgIGBgcGFydGl0aW9uKHNlcClgYCBjb25kZW5zZXMgdGhpcyBwYXR0ZXJuIGludG8gYSBzaW5nbGUgbWV0aG9kIGNhbGwgdGhhdAogICByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdWJzdHJpbmcgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3IKICAgaXRzZWxmLCBhbmQgdGhlIHN1YnN0cmluZyBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpc24ndCBmb3VuZCwKICAgdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGlzIHRoZSBlbnRpcmUgc3RyaW5nIGFuZCB0aGUgb3RoZXIgdHdvIGVsZW1lbnRzCi0gIGFyZSBlbXB0eS4gIDptZXRoOmBycGFydGl0aW9uKHNlcClgIGFsc28gcmV0dXJucyBhIDMtdHVwbGUgYnV0IHN0YXJ0cyBzZWFyY2hpbmcKKyAgYXJlIGVtcHR5LiAgYGBycGFydGl0aW9uKHNlcClgYCBhbHNvIHJldHVybnMgYSAzLXR1cGxlIGJ1dCBzdGFydHMgc2VhcmNoaW5nCiAgIGZyb20gdGhlIGVuZCBvZiB0aGUgc3RyaW5nOyB0aGUgYGByYGAgc3RhbmRzIGZvciAncmV2ZXJzZScuCiAKICAgU29tZSBleGFtcGxlczo6CkBAIC0xMTU3LDcgKzExNTcsNyBAQAogCiAgIC4uIFBhdGNoIDEzMTM5MzksIDEzNTk2MTgKIAotKiBUaGUgOmZ1bmM6YGxvbmcoc3RyLCBiYXNlKWAgZnVuY3Rpb24gaXMgbm93IGZhc3RlciBvbiBsb25nIGRpZ2l0IHN0cmluZ3MKKyogVGhlIGBgbG9uZyhzdHIsIGJhc2UpYGAgZnVuY3Rpb24gaXMgbm93IGZhc3RlciBvbiBsb25nIGRpZ2l0IHN0cmluZ3MKICAgYmVjYXVzZSBmZXdlciBpbnRlcm1lZGlhdGUgcmVzdWx0cyBhcmUgY2FsY3VsYXRlZC4gIFRoZSBwZWFrIGlzIGZvciBzdHJpbmdzIG9mCiAgIGFyb3VuZCA4MDAtLTEwMDAgZGlnaXRzIHdoZXJlICB0aGUgZnVuY3Rpb24gaXMgNiB0aW1lcyBmYXN0ZXIuIChDb250cmlidXRlZCBieQogICBBbGFuIE1jSW50eXJlIGFuZCBjb21taXR0ZWQgYXQgdGhlIE5lZWRGb3JTcGVlZCBzcHJpbnQuKQpAQCAtMTI2OCw3ICsxMjY4LDcgQEAKICAgKENvbnRyaWJ1dGVkIGJ5IEd1aWRvIHZhbiBSb3NzdW0uKQogCiAqIFRoZSA6Y2xhc3M6YGRlcXVlYCBkb3VibGUtZW5kZWQgcXVldWUgdHlwZSBzdXBwbGllZCBieSB0aGUgOm1vZDpgY29sbGVjdGlvbnNgCi0gIG1vZHVsZSBub3cgaGFzIGEgOm1ldGg6YHJlbW92ZSh2YWx1ZSlgIG1ldGhvZCB0aGF0IHJlbW92ZXMgdGhlIGZpcnN0IG9jY3VycmVuY2UKKyAgbW9kdWxlIG5vdyBoYXMgYSBgYHJlbW92ZSh2YWx1ZSlgYCBtZXRob2QgdGhhdCByZW1vdmVzIHRoZSBmaXJzdCBvY2N1cnJlbmNlCiAgIG9mICp2YWx1ZSogaW4gdGhlIHF1ZXVlLCByYWlzaW5nIDpleGM6YFZhbHVlRXJyb3JgIGlmIHRoZSB2YWx1ZSBpc24ndCBmb3VuZC4KICAgKENvbnRyaWJ1dGVkIGJ5IFJheW1vbmQgSGV0dGluZ2VyLikKIApAQCAtMTI5MSw3ICsxMjkxLDcgQEAKICogVGhlIDptb2Q6YGNzdmAgbW9kdWxlLCB3aGljaCBwYXJzZXMgZmlsZXMgaW4gY29tbWEtc2VwYXJhdGVkIHZhbHVlIGZvcm1hdCwKICAgcmVjZWl2ZWQgc2V2ZXJhbCBlbmhhbmNlbWVudHMgYW5kIGEgbnVtYmVyIG9mIGJ1Z2ZpeGVzLiAgWW91IGNhbiBub3cgc2V0IHRoZQogICBtYXhpbXVtIHNpemUgaW4gYnl0ZXMgb2YgYSBmaWVsZCBieSBjYWxsaW5nIHRoZQotICA6bWV0aDpgY3N2LmZpZWxkX3NpemVfbGltaXQobmV3X2xpbWl0KWAgZnVuY3Rpb247IG9taXR0aW5nIHRoZSAqbmV3X2xpbWl0KgorICBgYGNzdi5maWVsZF9zaXplX2xpbWl0KG5ld19saW1pdClgYCBmdW5jdGlvbjsgb21pdHRpbmcgdGhlICpuZXdfbGltaXQqCiAgIGFyZ3VtZW50IHdpbGwgcmV0dXJuIHRoZSBjdXJyZW50bHktc2V0IGxpbWl0LiAgVGhlIDpjbGFzczpgcmVhZGVyYCBjbGFzcyBub3cgaGFzCiAgIGEgOmF0dHI6YGxpbmVfbnVtYCBhdHRyaWJ1dGUgdGhhdCBjb3VudHMgdGhlIG51bWJlciBvZiBwaHlzaWNhbCBsaW5lcyByZWFkIGZyb20KICAgdGhlIHNvdXJjZTsgcmVjb3JkcyBjYW4gc3BhbiBtdWx0aXBsZSBwaHlzaWNhbCBsaW5lcywgc28gOmF0dHI6YGxpbmVfbnVtYCBpcyBub3QKQEAgLTEzMDgsNyArMTMwOCw3IEBACiAgIChDb250cmlidXRlZCBieSBTa2lwIE1vbnRhbmFybyBhbmQgQW5kcmV3IE1jTmFtYXJhLikKIAogKiBUaGUgOmNsYXNzOmB+ZGF0ZXRpbWUuZGF0ZXRpbWVgIGNsYXNzIGluIHRoZSA6bW9kOmBkYXRldGltZWAgIG1vZHVsZSBub3cgaGFzIGEKLSAgOm1ldGg6YHN0cnB0aW1lKHN0cmluZywgZm9ybWF0KWAgIG1ldGhvZCBmb3IgcGFyc2luZyBkYXRlIHN0cmluZ3MsIGNvbnRyaWJ1dGVkCisgIGBgc3RycHRpbWUoc3RyaW5nLCBmb3JtYXQpYGAgIG1ldGhvZCBmb3IgcGFyc2luZyBkYXRlIHN0cmluZ3MsIGNvbnRyaWJ1dGVkCiAgIGJ5IEpvc2ggU3BvZXJyaS4gSXQgdXNlcyB0aGUgc2FtZSBmb3JtYXQgY2hhcmFjdGVycyBhcyA6ZnVuYzpgdGltZS5zdHJwdGltZWAgYW5kCiAgIDpmdW5jOmB0aW1lLnN0cmZ0aW1lYDo6CiAKQEAgLTE0MDMsNyArMTQwMyw3IEBACiAqIFRoZSA6bW9kOmBtYWlsYm94YCBtb2R1bGUgdW5kZXJ3ZW50IGEgbWFzc2l2ZSByZXdyaXRlIHRvIGFkZCB0aGUgY2FwYWJpbGl0eSB0bwogICBtb2RpZnkgbWFpbGJveGVzIGluIGFkZGl0aW9uIHRvIHJlYWRpbmcgdGhlbS4gIEEgbmV3IHNldCBvZiBjbGFzc2VzIHRoYXQgaW5jbHVkZQogICA6Y2xhc3M6YG1ib3hgLCA6Y2xhc3M6YE1IYCwgYW5kIDpjbGFzczpgTWFpbGRpcmAgYXJlIHVzZWQgdG8gcmVhZCBtYWlsYm94ZXMsIGFuZAotICBoYXZlIGFuIDptZXRoOmBhZGQobWVzc2FnZSlgIG1ldGhvZCB0byBhZGQgbWVzc2FnZXMsIDptZXRoOmByZW1vdmUoa2V5KWAgdG8KKyAgaGF2ZSBhbiBgYGFkZChtZXNzYWdlKWBgIG1ldGhvZCB0byBhZGQgbWVzc2FnZXMsIGBgcmVtb3ZlKGtleSlgYCB0bwogICByZW1vdmUgbWVzc2FnZXMsIGFuZCA6bWV0aDpgbG9ja2AvOm1ldGg6YHVubG9ja2AgdG8gbG9jay91bmxvY2sgdGhlIG1haWxib3guCiAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBjb252ZXJ0cyBhIG1haWxkaXItZm9ybWF0IG1haWxib3ggaW50byBhbiBtYm94LWZvcm1hdAogICBvbmU6OgpAQCAtMTQ1OCw3ICsxNDU4LDcgQEAKICAgOmZ1bmM6YHdhaXQ0YCByZXR1cm4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIDpmdW5jOmB3YWl0M2AgZG9lc24ndCB0YWtlIGEKICAgcHJvY2VzcyBJRCBhcyBpbnB1dCwgc28gaXQgd2FpdHMgZm9yIGFueSBjaGlsZCBwcm9jZXNzIHRvIGV4aXQgYW5kIHJldHVybnMgYQogICAzLXR1cGxlIG9mICpwcm9jZXNzLWlkKiwgKmV4aXQtc3RhdHVzKiwgKnJlc291cmNlLXVzYWdlKiBhcyByZXR1cm5lZCBmcm9tIHRoZQotICA6ZnVuYzpgcmVzb3VyY2UuZ2V0cnVzYWdlYCBmdW5jdGlvbi4gOmZ1bmM6YHdhaXQ0KHBpZClgIGRvZXMgdGFrZSBhIHByb2Nlc3MgSUQuCisgIDpmdW5jOmByZXNvdXJjZS5nZXRydXNhZ2VgIGZ1bmN0aW9uLiBgYHdhaXQ0KHBpZClgYCBkb2VzIHRha2UgYSBwcm9jZXNzIElELgogICAoQ29udHJpYnV0ZWQgYnkgQ2hhZCBKLiBTY2hyb2VkZXIuKQogCiAgIE9uIEZyZWVCU0QsIHRoZSA6ZnVuYzpgb3Muc3RhdGAgZnVuY3Rpb24gbm93IHJldHVybnMgIHRpbWVzIHdpdGggbmFub3NlY29uZApAQCAtMTUzMiw4ICsxNTMyLDggQEAKICAgSW4gUHl0aG9uIGNvZGUsIG5ldGxpbmsgYWRkcmVzc2VzIGFyZSByZXByZXNlbnRlZCBhcyBhIHR1cGxlIG9mIDIgaW50ZWdlcnMsCiAgIGBgKHBpZCwgZ3JvdXBfbWFzaylgYC4KIAotICBUd28gbmV3IG1ldGhvZHMgb24gc29ja2V0IG9iamVjdHMsIDptZXRoOmByZWN2X2ludG8oYnVmZmVyKWAgYW5kCi0gIDptZXRoOmByZWN2ZnJvbV9pbnRvKGJ1ZmZlcilgLCBzdG9yZSB0aGUgcmVjZWl2ZWQgZGF0YSBpbiBhbiBvYmplY3QgIHRoYXQKKyAgVHdvIG5ldyBtZXRob2RzIG9uIHNvY2tldCBvYmplY3RzLCBgYHJlY3ZfaW50byhidWZmZXIpYGAgYW5kCisgIGBgcmVjdmZyb21faW50byhidWZmZXIpYGAsIHN0b3JlIHRoZSByZWNlaXZlZCBkYXRhIGluIGFuIG9iamVjdCAgdGhhdAogICBzdXBwb3J0cyB0aGUgYnVmZmVyIHByb3RvY29sIGluc3RlYWQgb2YgcmV0dXJuaW5nIHRoZSBkYXRhIGFzIGEgc3RyaW5nLiAgVGhpcwogICBtZWFucyB5b3UgY2FuIHB1dCB0aGUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LW1hcHBlZCBmaWxlLgogCkBAIC0xNTU3LDkgKzE1NTcsOSBAQAogICAgICB5ZWFyLCBudW1iZXIsIG5hbWUgPSBzLnVucGFjayhkYXRhKQogCiAgIFlvdSBjYW4gYWxzbyBwYWNrIGFuZCB1bnBhY2sgZGF0YSB0byBhbmQgZnJvbSBidWZmZXIgb2JqZWN0cyBkaXJlY3RseSB1c2luZyB0aGUKLSAgOm1ldGg6YHBhY2tfaW50byhidWZmZXIsIG9mZnNldCwgdjEsIHYyLCAuLi4pYCBhbmQgOm1ldGg6YHVucGFja19mcm9tKGJ1ZmZlciwKLSAgb2Zmc2V0KWAgbWV0aG9kcy4gIFRoaXMgbGV0cyB5b3Ugc3RvcmUgZGF0YSBkaXJlY3RseSBpbnRvIGFuIGFycmF5IG9yIGEgbWVtb3J5LQotICBtYXBwZWQgZmlsZS4KKyAgYGBwYWNrX2ludG8oYnVmZmVyLCBvZmZzZXQsIHYxLCB2MiwgLi4uKWBgIGFuZCBgYHVucGFja19mcm9tKGJ1ZmZlciwKKyAgb2Zmc2V0KWBgIG1ldGhvZHMuICBUaGlzIGxldHMgeW91IHN0b3JlIGRhdGEgZGlyZWN0bHkgaW50byBhbiBhcnJheSBvciBhCisgIG1lbW9yeS1tYXBwZWQgZmlsZS4KIAogICAoOmNsYXNzOmBTdHJ1Y3RgIG9iamVjdHMgd2VyZSBpbXBsZW1lbnRlZCBieSBCb2IgSXBwb2xpdG8gYXQgdGhlIE5lZWRGb3JTcGVlZAogICBzcHJpbnQuICBTdXBwb3J0IGZvciBidWZmZXIgb2JqZWN0cyB3YXMgYWRkZWQgYnkgTWFydGluIEJsYWlzLCBhbHNvIGF0IHRoZQpAQCAtMTU5Miw3ICsxNTkyLDcgQEAKICAgLi4gcGF0Y2ggOTE4MTAxCiAKICogVGhlIDptb2Q6YHRocmVhZGluZ2AgbW9kdWxlIG5vdyBsZXRzIHlvdSBzZXQgdGhlIHN0YWNrIHNpemUgdXNlZCB3aGVuIG5ldwotICB0aHJlYWRzIGFyZSBjcmVhdGVkLiBUaGUgOmZ1bmM6YHN0YWNrX3NpemUoWypzaXplKl0pYCBmdW5jdGlvbiByZXR1cm5zIHRoZQorICB0aHJlYWRzIGFyZSBjcmVhdGVkLiBUaGUgYGBzdGFja19zaXplKFsqc2l6ZSpdKWBgIGZ1bmN0aW9uIHJldHVybnMgdGhlCiAgIGN1cnJlbnRseSBjb25maWd1cmVkIHN0YWNrIHNpemUsIGFuZCBzdXBwbHlpbmcgdGhlIG9wdGlvbmFsICpzaXplKiBwYXJhbWV0ZXIKICAgc2V0cyBhIG5ldyB2YWx1ZS4gIE5vdCBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgY2hhbmdpbmcgdGhlIHN0YWNrIHNpemUsIGJ1dAogICBXaW5kb3dzLCBQT1NJWCB0aHJlYWRpbmcsIGFuZCBPUy8yIGFsbCBkby4gKENvbnRyaWJ1dGVkIGJ5IEFuZHJldyBNYWNJbnR5cmUuKQpAQCAtMTkxMSw3ICsxOTExLDcgQEAKICAgIGggPSBoYXNobGliLm5ldygnbWQ1JykgICAgICAgICAgIyBQcm92aWRlIGFsZ29yaXRobSBhcyBhIHN0cmluZwogCiBPbmNlIGEgaGFzaCBvYmplY3QgaGFzIGJlZW4gY3JlYXRlZCwgaXRzIG1ldGhvZHMgYXJlIHRoZSBzYW1lIGFzIGJlZm9yZToKLTptZXRoOmB1cGRhdGUoc3RyaW5nKWAgaGFzaGVzIHRoZSBzcGVjaWZpZWQgc3RyaW5nIGludG8gdGhlICBjdXJyZW50IGRpZ2VzdAorYGB1cGRhdGUoc3RyaW5nKWBgIGhhc2hlcyB0aGUgc3BlY2lmaWVkIHN0cmluZyBpbnRvIHRoZSAgY3VycmVudCBkaWdlc3QKIHN0YXRlLCA6bWV0aDpgZGlnZXN0YCBhbmQgOm1ldGg6YGhleGRpZ2VzdGAgcmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgYXMgYSBiaW5hcnkKIHN0cmluZyBvciBhIHN0cmluZyBvZiBoZXggZGlnaXRzLCBhbmQgOm1ldGg6YGNvcHlgIHJldHVybnMgYSBuZXcgaGFzaGluZyBvYmplY3QKIHdpdGggdGhlIHNhbWUgZGlnZXN0IHN0YXRlLgpAQCAtMjE2OCwyMCArMjE2OCwyMCBAQAogCiAqIFR3byBuZXcgbWFjcm9zIGNhbiBiZSB1c2VkIHRvIGluZGljYXRlIEMgZnVuY3Rpb25zIHRoYXQgYXJlIGxvY2FsIHRvIHRoZQogICBjdXJyZW50IGZpbGUgc28gdGhhdCBhIGZhc3RlciBjYWxsaW5nIGNvbnZlbnRpb24gY2FuIGJlIHVzZWQuCi0gIDpjOmZ1bmM6YFB5X0xPQ0FMKHR5cGUpYCBkZWNsYXJlcyB0aGUgZnVuY3Rpb24gYXMgcmV0dXJuaW5nIGEgdmFsdWUgb2YgdGhlCisgIGBgUHlfTE9DQUwodHlwZSlgYCBkZWNsYXJlcyB0aGUgZnVuY3Rpb24gYXMgcmV0dXJuaW5nIGEgdmFsdWUgb2YgdGhlCiAgIHNwZWNpZmllZCAqdHlwZSogYW5kIHVzZXMgYSBmYXN0LWNhbGxpbmcgcXVhbGlmaWVyLgotICA6YzpmdW5jOmBQeV9MT0NBTF9JTkxJTkUodHlwZSlgIGRvZXMgdGhlIHNhbWUgdGhpbmcgYW5kIGFsc28gcmVxdWVzdHMgdGhlCisgIGBgUHlfTE9DQUxfSU5MSU5FKHR5cGUpYGAgZG9lcyB0aGUgc2FtZSB0aGluZyBhbmQgYWxzbyByZXF1ZXN0cyB0aGUKICAgZnVuY3Rpb24gYmUgaW5saW5lZC4gIElmIDpjOmZ1bmM6YFBZX0xPQ0FMX0FHR1JFU1NJVkVgIGlzIGRlZmluZWQgYmVmb3JlCiAgIDpmaWxlOmBweXRob24uaGAgaXMgaW5jbHVkZWQsIGEgc2V0IG9mIG1vcmUgYWdncmVzc2l2ZSBvcHRpbWl6YXRpb25zIGFyZSBlbmFibGVkCiAgIGZvciB0aGUgbW9kdWxlOyB5b3Ugc2hvdWxkIGJlbmNobWFyayB0aGUgcmVzdWx0cyB0byBmaW5kIG91dCBpZiB0aGVzZQogICBvcHRpbWl6YXRpb25zIGFjdHVhbGx5IG1ha2UgdGhlIGNvZGUgZmFzdGVyLiAgKENvbnRyaWJ1dGVkIGJ5IEZyZWRyaWsgTHVuZGggYXQKICAgdGhlIE5lZWRGb3JTcGVlZCBzcHJpbnQuKQogCi0qIDpjOmZ1bmM6YFB5RXJyX05ld0V4Y2VwdGlvbihuYW1lLCBiYXNlLCBkaWN0KWAgY2FuIG5vdyBhY2NlcHQgYSB0dXBsZSBvZiBiYXNlCisqIGBgUHlFcnJfTmV3RXhjZXB0aW9uKG5hbWUsIGJhc2UsIGRpY3QpYGAgY2FuIG5vdyBhY2NlcHQgYSB0dXBsZSBvZiBiYXNlCiAgIGNsYXNzZXMgYXMgaXRzICpiYXNlKiBhcmd1bWVudC4gIChDb250cmlidXRlZCBieSBHZW9yZyBCcmFuZGwuKQogCiAqIFRoZSA6YzpmdW5jOmBQeUVycl9XYXJuYCBmdW5jdGlvbiBmb3IgaXNzdWluZyB3YXJuaW5ncyBpcyBub3cgZGVwcmVjYXRlZCBpbgotICBmYXZvdXIgb2YgOmM6ZnVuYzpgUHlFcnJfV2FybkV4KGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja2xldmVsKWAgd2hpY2ggbGV0cyB5b3UKKyAgZmF2b3VyIG9mIGBgUHlFcnJfV2FybkV4KGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja2xldmVsKWBgIHdoaWNoIGxldHMgeW91CiAgIHNwZWNpZnkgdGhlIG51bWJlciBvZiBzdGFjayBmcmFtZXMgc2VwYXJhdGluZyB0aGlzIGZ1bmN0aW9uIGFuZCB0aGUgY2FsbGVyLiAgQQogICAqc3RhY2tsZXZlbCogb2YgMSBpcyB0aGUgZnVuY3Rpb24gY2FsbGluZyA6YzpmdW5jOmBQeUVycl9XYXJuRXhgLCAyIGlzIHRoZQogICBmdW5jdGlvbiBhYm92ZSB0aGF0LCBhbmQgc28gZm9ydGguICAoQWRkZWQgYnkgTmVhbCBOb3J3aXR6LikKQEAgLTIyODEsOCArMjI4MSw4IEBACiAKIFRoZSBhdXRob3Igd291bGQgbGlrZSB0byB0aGFuayB0aGUgZm9sbG93aW5nIHBlb3BsZSBmb3Igb2ZmZXJpbmcgc3VnZ2VzdGlvbnMsCiBjb3JyZWN0aW9ucyBhbmQgYXNzaXN0YW5jZSB3aXRoIHZhcmlvdXMgZHJhZnRzIG9mIHRoaXMgYXJ0aWNsZTogR2VvcmcgQnJhbmRsLAotTmljayBDb2dobGFuLCBQaGlsbGlwIEouIEVieSwgTGFycyBHdXN0w6RiZWwsIFJheW1vbmQgSGV0dGluZ2VyLCBSYWxmIFcuIEdyb3NzZS0KLUt1bnN0bGV2ZSwgS2VudCBKb2huc29uLCBJYWluIExvd2UsIE1hcnRpbiB2b24gTMO2d2lzLCBGcmVkcmlrIEx1bmRoLCBBbmRyZXcKK05pY2sgQ29naGxhbiwgUGhpbGxpcCBKLiBFYnksIExhcnMgR3VzdMOkYmVsLCBSYXltb25kIEhldHRpbmdlciwgUmFsZiBXLgorR3Jvc3NlLUt1bnN0bGV2ZSwgS2VudCBKb2huc29uLCBJYWluIExvd2UsIE1hcnRpbiB2b24gTMO2d2lzLCBGcmVkcmlrIEx1bmRoLCBBbmRyZXcKIE1jTmFtYXJhLCBTa2lwIE1vbnRhbmFybywgR3VzdGF2byBOaWVtZXllciwgUGF1bCBQcmVzY29kLCBKYW1lcyBQcnlvciwgTWlrZQogUm92bmVyLCBTY290dCBXZWlrYXJ0LCBCYXJyeSBXYXJzYXcsIFRob21hcyBXb3V0ZXJzLgogCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi42LnJzdCBiL0RvYy93aGF0c25ldy8yLjYucnN0CmluZGV4IDcxYTNiN2EuLmY0Yzc0MmUgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjYucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjYucnN0CkBAIC0yODYsOCArMjg2LDggQEAKICAgICAgICAgICAgLi4uIG1vcmUgcHJvY2Vzc2luZyBjb2RlIC4uLgogCiBBZnRlciB0aGlzIHN0YXRlbWVudCBoYXMgZXhlY3V0ZWQsIHRoZSBmaWxlIG9iamVjdCBpbiAqZiogd2lsbCBoYXZlIGJlZW4KLWF1dG9tYXRpY2FsbHkgY2xvc2VkLCBldmVuIGlmIHRoZSA6a2V5d29yZDpgZm9yYCBsb29wIHJhaXNlZCBhbiBleGNlcHRpb24gcGFydC0KLXdheSB0aHJvdWdoIHRoZSBibG9jay4KK2F1dG9tYXRpY2FsbHkgY2xvc2VkLCBldmVuIGlmIHRoZSA6a2V5d29yZDpgZm9yYCBsb29wIHJhaXNlZCBhbiBleGNlcHRpb24KK3BhcnQtd2F5IHRocm91Z2ggdGhlIGJsb2NrLgogCiAuLiBub3RlOjoKIApAQCAtMjYwNyw3ICsyNjA3LDcgQEAKIAogKiBUaGUgWE1MLVJQQyA6Y2xhc3M6YH5TaW1wbGVYTUxSUENTZXJ2ZXIuU2ltcGxlWE1MUlBDU2VydmVyYCBhbmQgOmNsYXNzOmB+RG9jWE1MUlBDU2VydmVyLkRvY1hNTFJQQ1NlcnZlcmAKICAgY2xhc3NlcyBjYW4gbm93IGJlIHByZXZlbnRlZCBmcm9tIGltbWVkaWF0ZWx5IG9wZW5pbmcgYW5kIGJpbmRpbmcgdG8KLSAgdGhlaXIgc29ja2V0IGJ5IHBhc3NpbmcgVHJ1ZSBhcyB0aGUgYGBiaW5kX2FuZF9hY3RpdmF0ZWBgCisgIHRoZWlyIHNvY2tldCBieSBwYXNzaW5nIGBgRmFsc2VgYCBhcyB0aGUgKmJpbmRfYW5kX2FjdGl2YXRlKgogICBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIuICBUaGlzIGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgaW5zdGFuY2UncwogICA6YXR0cjpgYWxsb3dfcmV1c2VfYWRkcmVzc2AgYXR0cmlidXRlIGJlZm9yZSBjYWxsaW5nIHRoZQogICA6bWV0aDpgc2VydmVyX2JpbmRgIGFuZCA6bWV0aDpgc2VydmVyX2FjdGl2YXRlYCBtZXRob2RzIHRvCmRpZmYgLS1naXQgYS9Eb2Mvd2hhdHNuZXcvMi43LnJzdCBiL0RvYy93aGF0c25ldy8yLjcucnN0CmluZGV4IDI4YThkNGIuLjk5MjY1OGUgMTAwNjQ0Ci0tLSBhL0RvYy93aGF0c25ldy8yLjcucnN0CisrKyBiL0RvYy93aGF0c25ldy8yLjcucnN0CkBAIC0xNTMwLDcgKzE1MzAsNyBAQAogICAqY2lwaGVycyogYXJndW1lbnQgdGhhdCdzIGEgc3RyaW5nIGxpc3RpbmcgdGhlIGVuY3J5cHRpb24gYWxnb3JpdGhtcwogICB0byBiZSBhbGxvd2VkOyB0aGUgZm9ybWF0IG9mIHRoZSBzdHJpbmcgaXMgZGVzY3JpYmVkCiAgIGBpbiB0aGUgT3BlblNTTCBkb2N1bWVudGF0aW9uCi0gIDxodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL2FwcHMvY2lwaGVycy5odG1sI0NJUEhFUi1MSVNULUZPUk1BVD5gX18uCisgIDxodHRwczovL3d3dy5vcGVuc3NsLm9yZy9kb2NzL21hbm1hc3Rlci9tYW4xL2NpcGhlcnMuaHRtbCNDSVBIRVItTElTVC1GT1JNQVQ+YF9fLgogICAoQWRkZWQgYnkgQW50b2luZSBQaXRyb3U7IDppc3N1ZTpgODMyMmAuKQogCiAgIEFub3RoZXIgY2hhbmdlIG1ha2VzIHRoZSBleHRlbnNpb24gbG9hZCBhbGwgb2YgT3BlblNTTCdzIGNpcGhlcnMgYW5kCkBAIC0xNzg1LDcgKzE3ODUsNyBAQAogVHRrIHRoZW1lIGVuZ2luZSwgYXZhaWxhYmxlIGF0CiBodHRwczovL3d3dy50Y2wudGsvbWFuL3RjbDguNS9Ua0NtZC90dGtfaW50cm8uaHRtLiBTb21lCiBzY3JlZW5zaG90cyBvZiB0aGUgUHl0aG9uL1R0ayBjb2RlIGluIHVzZSBhcmUgYXQKLWh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9weXRob24tdHRrL3dpa2kvU2NyZWVuc2hvdHMuCitodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9hcmNoaXZlL3AvcHl0aG9uLXR0ay93aWtpcy9TY3JlZW5zaG90cy53aWtpLgogCiBUaGUgOm1vZDpgdHRrYCBtb2R1bGUgd2FzIHdyaXR0ZW4gYnkgR3VpbGhlcm1lIFBvbG8gYW5kIGFkZGVkIGluCiA6aXNzdWU6YDI5ODNgLiAgQW4gYWx0ZXJuYXRlIHZlcnNpb24gY2FsbGVkIGBgVGlsZS5weWBgLCB3cml0dGVuIGJ5CkBAIC0xODA0LDEyICsxODA0LDEyIEBACiBieSBNaWNoYWVsIEZvb3JkLCB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkLiAgVGhlIGVuaGFuY2VkIHZlcnNpb24gb2YKIHRoZSBtb2R1bGUgaXMgZG93bmxvYWRhYmxlIHNlcGFyYXRlbHkgZm9yIHVzZSB3aXRoIFB5dGhvbiB2ZXJzaW9ucyAyLjQgdG8gMi42LAogcGFja2FnZWQgYXMgdGhlIDptb2Q6YHVuaXR0ZXN0MmAgcGFja2FnZSwgZnJvbQotaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS91bml0dGVzdDIuCitodHRwczovL3B5cGkub3JnL3Byb2plY3QvdW5pdHRlc3QyLgogCiBXaGVuIHVzZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lLCB0aGUgbW9kdWxlIGNhbiBhdXRvbWF0aWNhbGx5IGRpc2NvdmVyCiB0ZXN0cy4gIEl0J3Mgbm90IGFzIGZhbmN5IGFzIGBweS50ZXN0IDxodHRwOi8vcHl0ZXN0Lm9yZz5gX18gb3IKLWBub3NlIDxodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcHl0aG9uLW5vc2UvPmBfXywgYnV0IHByb3ZpZGVzIGEgc2ltcGxlIHdheQotdG8gcnVuIHRlc3RzIGtlcHQgd2l0aGluIGEgc2V0IG9mIHBhY2thZ2UgZGlyZWN0b3JpZXMuICBGb3IgZXhhbXBsZSwKK2Bub3NlIDxodHRwczovL25vc2UucmVhZHRoZWRvY3MuaW8vPmBfXywgYnV0IHByb3ZpZGVzIGEKK3NpbXBsZSB3YXkgdG8gcnVuIHRlc3RzIGtlcHQgd2l0aGluIGEgc2V0IG9mIHBhY2thZ2UgZGlyZWN0b3JpZXMuICBGb3IgZXhhbXBsZSwKIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB3aWxsIHNlYXJjaCB0aGUgOmZpbGU6YHRlc3QvYCBzdWJkaXJlY3RvcnkgZm9yCiBhbnkgaW1wb3J0YWJsZSB0ZXN0IGZpbGVzIG5hbWVkIGBgdGVzdCoucHlgYDo6CiAKQEAgLTI1NDAsNiArMjU0MCwyMSBAQAogbWFpbnRlbmFuY2UgcmVsZWFzZS4KIAogCitUd28gbmV3IGVudmlyb25tZW50IHZhcmlhYmxlcyBmb3IgZGVidWcgbW9kZQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSW4gZGVidWcgbW9kZSwgdGhlIGBgW3h4eCByZWZzXWBgIHN0YXRpc3RpYyBpcyBub3Qgd3JpdHRlbiBieSBkZWZhdWx0LCB0aGUKKzplbnZ2YXI6YFBZVEhPTlNIT1dSRUZDT1VOVGAgZW52aXJvbm1lbnQgdmFyaWFibGUgbm93IG11c3QgYWxzbyBiZSBzZXQuCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXI7IDppc3N1ZTpgMzE3MzNgLikKKworV2hlbiBQeXRob24gaXMgY29tcGlsZWQgd2l0aCBgYENPVU5UX0FMTE9DYGAgZGVmaW5lZCwgYWxsb2NhdGlvbiBjb3VudHMgYXJlIG5vCitsb25nZXIgZHVtcGVkIGJ5IGRlZmF1bHQgYW55bW9yZTogdGhlIDplbnZ2YXI6YFBZVEhPTlNIT1dBTExPQ0NPVU5UYCBlbnZpcm9ubWVudAordmFyaWFibGUgbXVzdCBub3cgYWxzbyBiZSBzZXQuIE1vcmVvdmVyLCBhbGxvY2F0aW9uIGNvdW50cyBhcmUgbm93IGR1bXBlZCBpbnRvCitzdGRlcnIsIHJhdGhlciB0aGFuIHN0ZG91dC4gKENvbnRyaWJ1dGVkIGJ5IFZpY3RvciBTdGlubmVyOyA6aXNzdWU6YDMxNjkyYC4pCisKKy4uIHZlcnNpb25hZGRlZDo6IDIuNy4xNQorCisKIFBFUCA0MzQ6IElETEUgRW5oYW5jZW1lbnQgRXhjZXB0aW9uIGZvciBBbGwgQnJhbmNoZXMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApAQCAtMjcwOCw2ICsyNzIzLDM5IEBACiBvdmVyYWxsIGFwcGxpY2F0aW9uIGNhbiBiZSwgdGhlIG5ldyA6ZnVuYzpgc3NsLl9odHRwc192ZXJpZnlfY2VydGlmaWNhdGVzYAogZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gYWRqdXN0IHRoZSBkZWZhdWx0IGJlaGF2aW91ciBhdCBydW50aW1lLgogCisKK05ldyBgYG1ha2UgcmVnZW4tYWxsYGAgYnVpbGQgdGFyZ2V0CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUbyBzaW1wbGlmeSBjcm9zcy1jb21waWxhdGlvbiwgYW5kIHRvIGVuc3VyZSB0aGF0IENQeXRob24gY2FuIHJlbGlhYmx5IGJlCitjb21waWxlZCB3aXRob3V0IHJlcXVpcmluZyBhbiBleGlzdGluZyB2ZXJzaW9uIG9mIFB5dGhvbiB0byBhbHJlYWR5IGJlCithdmFpbGFibGUsIHRoZSBhdXRvdG9vbHMtYmFzZWQgYnVpbGQgc3lzdGVtIG5vIGxvbmdlciBhdHRlbXB0cyB0byBpbXBsaWNpdGx5CityZWNvbXBpbGUgZ2VuZXJhdGVkIGZpbGVzIGJhc2VkIG9uIGZpbGUgbW9kaWZpY2F0aW9uIHRpbWVzLgorCitJbnN0ZWFkLCBhIG5ldyBgYG1ha2UgcmVnZW4tYWxsYGAgY29tbWFuZCBoYXMgYmVlbiBhZGRlZCB0byBmb3JjZSByZWdlbmVyYXRpb24KK29mIHRoZXNlIGZpbGVzIHdoZW4gZGVzaXJlZCAoZS5nLiBhZnRlciBhbiBpbml0aWFsIHZlcnNpb24gb2YgUHl0aG9uIGhhcworYWxyZWFkeSBiZWVuIGJ1aWx0IGJhc2VkIG9uIHRoZSBwcmVnZW5lcmF0ZWQgdmVyc2lvbnMpLgorCitNb3JlIHNlbGVjdGl2ZSByZWdlbmVyYXRpb24gdGFyZ2V0cyBhcmUgYWxzbyBkZWZpbmVkIC0gc2VlCis6c291cmNlOmBNYWtlZmlsZS5wcmUuaW5gIGZvciBkZXRhaWxzLgorCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMzQwNGAuKQorCisuLiB2ZXJzaW9uYWRkZWQ6OiAyLjcuMTQKKworCitSZW1vdmFsIG9mIGBgbWFrZSB0b3VjaGBgIGJ1aWxkIHRhcmdldAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIGBgbWFrZSB0b3VjaGBgIGJ1aWxkIHRhcmdldCBwcmV2aW91c2x5IHVzZWQgdG8gcmVxdWVzdCBpbXBsaWNpdCByZWdlbmVyYXRpb24KK29mIGdlbmVyYXRlZCBmaWxlcyBieSB1cGRhdGluZyB0aGVpciBtb2RpZmljYXRpb24gdGltZXMgaGFzIGJlZW4gcmVtb3ZlZC4KKworSXQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgdGhlIG5ldyBgYG1ha2UgcmVnZW4tYWxsYGAgdGFyZ2V0LgorCisoQ29udHJpYnV0ZWQgYnkgVmljdG9yIFN0aW5uZXIgaW4gOmlzc3VlOmAyMzQwNGAuKQorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuNy4xNAorCiAuLiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIC4uIF9hY2tzMjc6CmRpZmYgLS1naXQgYS9JbmNsdWRlL1B5dGhvbi5oIGIvSW5jbHVkZS9QeXRob24uaAppbmRleCA3NzU0MTJiLi5hOTMyN2IwIDEwMDY0NAotLS0gYS9JbmNsdWRlL1B5dGhvbi5oCisrKyBiL0luY2x1ZGUvUHl0aG9uLmgKQEAgLTQzLDYgKzQzLDkgQEAKICNpZmRlZiBIQVZFX1VOSVNURF9ICiAjaW5jbHVkZSA8dW5pc3RkLmg+CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0NSWVBUX0gKKyNpbmNsdWRlIDxjcnlwdC5oPgorI2VuZGlmCiAKIC8qIEZvciBzaXplX3Q/ICovCiAjaWZkZWYgSEFWRV9TVERERUZfSApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9jZXZhbC5oIGIvSW5jbHVkZS9jZXZhbC5oCmluZGV4IDM3MzVmMDAuLmY0NjE2MDEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvY2V2YWwuaAorKysgYi9JbmNsdWRlL2NldmFsLmgKQEAgLTE0NSw2ICsxNDUsNyBAQAogI2VuZGlmIC8qICFXSVRIX1RIUkVBRCAqLwogCiBQeUFQSV9GVU5DKGludCkgX1B5RXZhbF9TbGljZUluZGV4KFB5T2JqZWN0ICosIFB5X3NzaXplX3QgKik7CitQeUFQSV9GVU5DKGludCkgX1B5RXZhbF9TbGljZUluZGV4Tm90Tm9uZShQeU9iamVjdCAqLCBQeV9zc2l6ZV90ICopOwogCiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9kaWN0b2JqZWN0LmggYi9JbmNsdWRlL2RpY3RvYmplY3QuaAppbmRleCBlZjUyNGE0Li41YTFlOWZlIDEwMDY0NAotLS0gYS9JbmNsdWRlL2RpY3RvYmplY3QuaAorKysgYi9JbmNsdWRlL2RpY3RvYmplY3QuaApAQCAtMTExLDYgKzExMSw5IEBACiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfR2V0SXRlbVdpdGhFcnJvcihQeU9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXkpOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9TZXRJdGVtKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlPYmplY3QgKml0ZW0pOwogUHlBUElfRlVOQyhpbnQpIFB5RGljdF9EZWxJdGVtKFB5T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSk7CitQeUFQSV9GVU5DKGludCkgX1B5RGljdF9EZWxJdGVtSWYoUHlPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAoKnByZWRpY2F0ZSkoUHlPYmplY3QgKnZhbHVlKSk7CisKIFB5QVBJX0ZVTkModm9pZCkgUHlEaWN0X0NsZWFyKFB5T2JqZWN0ICptcCk7CiBQeUFQSV9GVU5DKGludCkgUHlEaWN0X05leHQoCiAgICAgUHlPYmplY3QgKm1wLCBQeV9zc2l6ZV90ICpwb3MsIFB5T2JqZWN0ICoqa2V5LCBQeU9iamVjdCAqKnZhbHVlKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvZXJyY29kZS5oIGIvSW5jbHVkZS9lcnJjb2RlLmgKaW5kZXggYmVjZWM4MC4uNWM1YTBmNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9lcnJjb2RlLmgKKysrIGIvSW5jbHVkZS9lcnJjb2RlLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNkZWZpbmUgRV9FT0ZTCQkyMwkvKiBFT0YgaW4gdHJpcGxlLXF1b3RlZCBzdHJpbmcgKi8KICNkZWZpbmUgRV9FT0xTCQkyNAkvKiBFT0wgaW4gc2luZ2xlLXF1b3RlZCBzdHJpbmcgKi8KICNkZWZpbmUgRV9MSU5FQ09OVAkyNQkvKiBVbmV4cGVjdGVkIGNoYXJhY3RlcnMgYWZ0ZXIgYSBsaW5lIGNvbnRpbnVhdGlvbiAqLworI2RlZmluZSBFX0lPICAgIAkyNgkvKiBJL08gZXJyb3IgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL2ZyYW1lb2JqZWN0LmggYi9JbmNsdWRlL2ZyYW1lb2JqZWN0LmgKaW5kZXggMTdlNzY3OS4uODQzOTA4MSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9mcmFtZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvZnJhbWVvYmplY3QuaApAQCAtNTQsNyArNTQsNyBAQAogCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlGcmFtZV9UeXBlOwogCi0jZGVmaW5lIFB5RnJhbWVfQ2hlY2sob3ApICgob3ApLT5vYl90eXBlID09ICZQeUZyYW1lX1R5cGUpCisjZGVmaW5lIFB5RnJhbWVfQ2hlY2sob3ApIChQeV9UWVBFKG9wKSA9PSAmUHlGcmFtZV9UeXBlKQogI2RlZmluZSBQeUZyYW1lX0lzUmVzdHJpY3RlZChmKSBcCiAJKChmKS0+Zl9idWlsdGlucyAhPSAoZiktPmZfdHN0YXRlLT5pbnRlcnAtPmJ1aWx0aW5zKQogCmRpZmYgLS1naXQgYS9JbmNsdWRlL2dyYW1tYXIuaCBiL0luY2x1ZGUvZ3JhbW1hci5oCmluZGV4IDg0MjZkYTMuLmRlY2YyZTYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvZ3JhbW1hci5oCisrKyBiL0luY2x1ZGUvZ3JhbW1hci5oCkBAIC02OSw2ICs2OSw3IEBACiAvKiBGVU5DVElPTlMgKi8KIAogZ3JhbW1hciAqbmV3Z3JhbW1hcihpbnQgc3RhcnQpOwordm9pZCBmcmVlZ3JhbW1hcihncmFtbWFyICpnKTsKIGRmYSAqYWRkZGZhKGdyYW1tYXIgKmcsIGludCB0eXBlLCBjaGFyICpuYW1lKTsKIGludCBhZGRzdGF0ZShkZmEgKmQpOwogdm9pZCBhZGRhcmMoZGZhICpkLCBpbnQgZnJvbSwgaW50IHRvLCBpbnQgbGJsKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvaW50b2JqZWN0LmggYi9JbmNsdWRlL2ludG9iamVjdC5oCmluZGV4IDI1MmVlYTkuLmQxOTg1NzQgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvaW50b2JqZWN0LmgKKysrIGIvSW5jbHVkZS9pbnRvYmplY3QuaApAQCAtMjgsOCArMjgsMTEgQEAKIFB5QVBJX0RBVEEoUHlUeXBlT2JqZWN0KSBQeUludF9UeXBlOwogCiAjZGVmaW5lIFB5SW50X0NoZWNrKG9wKSBcCi0JCSBQeVR5cGVfRmFzdFN1YmNsYXNzKChvcCktPm9iX3R5cGUsIFB5X1RQRkxBR1NfSU5UX1NVQkNMQVNTKQotI2RlZmluZSBQeUludF9DaGVja0V4YWN0KG9wKSAoKG9wKS0+b2JfdHlwZSA9PSAmUHlJbnRfVHlwZSkKKwkJIFB5VHlwZV9GYXN0U3ViY2xhc3MoUHlfVFlQRShvcCksIFB5X1RQRkxBR1NfSU5UX1NVQkNMQVNTKQorI2RlZmluZSBQeUludF9DaGVja0V4YWN0KG9wKSAoUHlfVFlQRShvcCkgPT0gJlB5SW50X1R5cGUpCisKKyNkZWZpbmUgX1B5QW55SW50X0NoZWNrKG9wKSAoUHlJbnRfQ2hlY2sob3ApIHx8IFB5TG9uZ19DaGVjayhvcCkpCisjZGVmaW5lIF9QeUFueUludF9DaGVja0V4YWN0KG9wKSAoUHlJbnRfQ2hlY2tFeGFjdChvcCkgfHwgUHlMb25nX0NoZWNrRXhhY3Qob3ApKQogCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5SW50X0Zyb21TdHJpbmcoY2hhciosIGNoYXIqKiwgaW50KTsKICNpZmRlZiBQeV9VU0lOR19VTklDT0RFCmRpZmYgLS1naXQgYS9JbmNsdWRlL29iamltcGwuaCBiL0luY2x1ZGUvb2JqaW1wbC5oCmluZGV4IDU1ZTgzZWMuLmNiZjZiYzMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb2JqaW1wbC5oCisrKyBiL0luY2x1ZGUvb2JqaW1wbC5oCkBAIC01Niw3ICs1Niw3IEBACiBvcGVyYXRvciBuZXcpLCB5b3UgbXVzdCBmaXJzdCBhbGxvY2F0ZSB0aGUgb2JqZWN0IHdpdGggeW91ciBjdXN0b20gYWxsb2NhdG9yLAogdGhlbiBwYXNzIGl0cyBwb2ludGVyIHRvIFB5T2JqZWN0X3tJbml0LCBJbml0VmFyfSBmb3IgZmlsbGluZyBpbiBpdHMgUHl0aG9uLQogc3BlY2lmaWMgZmllbGRzOiAgcmVmZXJlbmNlIGNvdW50LCB0eXBlIHBvaW50ZXIsIHBvc3NpYmx5IG90aGVycy4gIFlvdSBzaG91bGQKLWJlIGF3YXJlIHRoYXQgUHl0aG9uIG5vIGNvbnRyb2wgb3ZlciB0aGVzZSBvYmplY3RzIGJlY2F1c2UgdGhleSBkb24ndAorYmUgYXdhcmUgdGhhdCBQeXRob24gaGFzIG5vIGNvbnRyb2wgb3ZlciB0aGVzZSBvYmplY3RzIGJlY2F1c2UgdGhleSBkb24ndAogY29vcGVyYXRlIHdpdGggdGhlIFB5dGhvbiBtZW1vcnkgbWFuYWdlci4gIFN1Y2ggb2JqZWN0cyBtYXkgbm90IGJlIGVsaWdpYmxlCiBmb3IgYXV0b21hdGljIGdhcmJhZ2UgY29sbGVjdGlvbiBhbmQgeW91IGhhdmUgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBhcmUKIHJlbGVhc2VkIGFjY29yZGluZ2x5IHdoZW5ldmVyIHRoZWlyIGRlc3RydWN0b3IgZ2V0cyBjYWxsZWQgKGNmLiB0aGUgc3BlY2lmaWMKQEAgLTI0OCw2ICsyNDgsMjAgQEAKIC8qIGZvciBzb3VyY2UgY29tcGF0aWJpbGl0eSB3aXRoIDIuMiAqLwogI2RlZmluZSBfUHlPYmplY3RfR0NfRGVsIFB5T2JqZWN0X0dDX0RlbAogCisvKgorICogRm9ybWVyIG92ZXItYWxpZ25lZCBkZWZpbml0aW9uIG9mIFB5R0NfSGVhZCwgdXNlZCB0byBjb21wdXRlIHRoZSBzaXplIG9mIHRoZQorICogcGFkZGluZyBmb3IgdGhlIG5ldyB2ZXJzaW9uIGJlbG93LgorICovCit1bmlvbiBfZ2NfaGVhZDsKK3VuaW9uIF9nY19oZWFkX29sZCB7CisgICAgc3RydWN0IHsKKyAgICAgICAgdW5pb24gX2djX2hlYWRfb2xkICpnY19uZXh0OworICAgICAgICB1bmlvbiBfZ2NfaGVhZF9vbGQgKmdjX3ByZXY7CisgICAgICAgIFB5X3NzaXplX3QgZ2NfcmVmczsKKyAgICB9IGdjOworICAgIGxvbmcgZG91YmxlIGR1bW15OworfTsKKwogLyogR0MgaW5mb3JtYXRpb24gaXMgc3RvcmVkIEJFRk9SRSB0aGUgb2JqZWN0IHN0cnVjdHVyZS4gKi8KIHR5cGVkZWYgdW5pb24gX2djX2hlYWQgewogICAgIHN0cnVjdCB7CkBAIC0yNTUsNyArMjY5LDggQEAKICAgICAgICAgdW5pb24gX2djX2hlYWQgKmdjX3ByZXY7CiAgICAgICAgIFB5X3NzaXplX3QgZ2NfcmVmczsKICAgICB9IGdjOwotICAgIGxvbmcgZG91YmxlIGR1bW15OyAgLyogZm9yY2Ugd29yc3QtY2FzZSBhbGlnbm1lbnQgKi8KKyAgICBkb3VibGUgZHVtbXk7IC8qIEZvcmNlIGF0IGxlYXN0IDgtYnl0ZSBhbGlnbm1lbnQuICovCisgICAgY2hhciBkdW1teV9wYWRkaW5nW3NpemVvZih1bmlvbiBfZ2NfaGVhZF9vbGQpXTsKIH0gUHlHQ19IZWFkOwogCiBleHRlcm4gUHlHQ19IZWFkICpfUHlHQ19nZW5lcmF0aW9uMDsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKaW5kZXggNTI2OWUzMS4uOGEwNGE5MCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9wYXRjaGxldmVsLmgKKysrIGIvSW5jbHVkZS9wYXRjaGxldmVsLmgKQEAgLTIyLDEyICsyMiwxMiBAQAogLyotLXN0YXJ0IGNvbnN0YW50cy0tKi8KICNkZWZpbmUgUFlfTUFKT1JfVkVSU0lPTgkyCiAjZGVmaW5lIFBZX01JTk9SX1ZFUlNJT04JNwotI2RlZmluZSBQWV9NSUNST19WRVJTSU9OCTEzCisjZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMTUKICNkZWZpbmUgUFlfUkVMRUFTRV9MRVZFTAlQWV9SRUxFQVNFX0xFVkVMX0ZJTkFMCiAjZGVmaW5lIFBZX1JFTEVBU0VfU0VSSUFMCTAKIAogLyogVmVyc2lvbiBhcyBhIHN0cmluZyAqLwotI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIyLjcuMTMiCisjZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjIuNy4xNSsiCiAvKi0tZW5kIGNvbnN0YW50cy0tKi8KIAogLyogU3VidmVyc2lvbiBSZXZpc2lvbiBudW1iZXIgb2YgdGhpcyBmaWxlIChub3Qgb2YgdGhlIHJlcG9zaXRvcnkpLiBFbXB0eQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weV9jdXJzZXMuaCBiL0luY2x1ZGUvcHlfY3Vyc2VzLmgKaW5kZXggNjU3ODE2Yy4uZWI3N2UzNSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weV9jdXJzZXMuaAorKysgYi9JbmNsdWRlL3B5X2N1cnNlcy5oCkBAIC03LDE0ICs3LDkgQEAKICoqIE9uIE1hYyBPUyBYIDEwLjIgW25dY3Vyc2VzLmggYW5kIHN0ZGxpYi5oIHVzZSBkaWZmZXJlbnQgZ3VhcmRzCiAqKiBhZ2FpbnN0IG11bHRpcGxlIGRlZmluaXRpb24gb2Ygd2NoYXJfdC4KICovCi0jaWZkZWYJX0JTRF9XQ0hBUl9UX0RFRklORURfCisjaWZkZWYgX0JTRF9XQ0hBUl9UX0RFRklORURfCiAjZGVmaW5lIF9XQ0hBUl9UCiAjZW5kaWYKLQotLyogdGhlIGZvbGxvd2luZyBkZWZpbmUgaXMgbmVjZXNzYXJ5IGZvciBPUyBYIDEwLjY7IHdpdGhvdXQgaXQsIHRoZQotICAgQXBwbGUtc3VwcGxpZWQgbmN1cnNlcy5oIHNldHMgTkNVUlNFU19PUEFRVUUgdG8gMSwgYW5kIHRoZW4gUHl0aG9uCi0gICBjYW4ndCBnZXQgYXQgdGhlIFdJTkRPVyBmbGFncyBmaWVsZC4gKi8KLSNkZWZpbmUgTkNVUlNFU19PUEFRVUUgMAogI2VuZGlmIC8qIF9fQVBQTEVfXyAqLwogCiAjaWZkZWYgX19GcmVlQlNEX18KQEAgLTIyLDcgKzE3LDcgQEAKICoqIE9uIEZyZWVCU0QsIFtuXWN1cnNlcy5oIGFuZCBzdGRsaWIuaC93Y2hhci5oIHVzZSBkaWZmZXJlbnQgZ3VhcmRzCiAqKiBhZ2FpbnN0IG11bHRpcGxlIGRlZmluaXRpb24gb2Ygd2NoYXJfdCBhbmQgd2ludF90LgogKi8KLSNpZmRlZglfWE9QRU5fU09VUkNFX0VYVEVOREVECisjaWZkZWYgX1hPUEVOX1NPVVJDRV9FWFRFTkRFRAogI2lmbmRlZiBfX0ZyZWVCU0RfdmVyc2lvbgogI2luY2x1ZGUgPG9zcmVsZGF0ZS5oPgogI2VuZGlmCkBAIC00NCwyMiArMzksMjggQEAKICNlbmRpZgogI2VuZGlmCiAKKyNpZiAhZGVmaW5lZChIQVZFX0NVUlNFU19JU19QQUQpICYmIGRlZmluZWQoV0lORE9XX0hBU19GTEFHUykKKy8qIFRoZSBmb2xsb3dpbmcgZGVmaW5pdGlvbiBpcyBuZWNlc3NhcnkgZm9yIG5jdXJzZXMgNS43OyB3aXRob3V0IGl0LAorICAgc29tZSBvZiBbbl1jdXJzZXMuaCBzZXQgTkNVUlNFU19PUEFRVUUgdG8gMSwgYW5kIHRoZW4gUHl0aG9uCisgICBjYW4ndCBnZXQgYXQgdGhlIFdJTkRPVyBmbGFncyBmaWVsZC4gKi8KKyNkZWZpbmUgTkNVUlNFU19PUEFRVUUgMAorI2VuZGlmCisKICNpZmRlZiBIQVZFX05DVVJTRVNfSAogI2luY2x1ZGUgPG5jdXJzZXMuaD4KICNlbHNlCiAjaW5jbHVkZSA8Y3Vyc2VzLmg+Ci0jaWZkZWYgSEFWRV9URVJNX0gKLS8qIGZvciB0aWdldHN0ciwgd2hpY2ggaXMgbm90IGRlY2xhcmVkIGluIFN5c1YgY3Vyc2VzICovCi0jaW5jbHVkZSA8dGVybS5oPgotI2VuZGlmCiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfTkNVUlNFU19ICiAvKiBjb25maWd1cmUgd2FzIGNoZWNraW5nIDxjdXJzZXMuaD4sIGJ1dCB3ZSB3aWxsCi0gICB1c2UgPG5jdXJzZXMuaD4sIHdoaWNoIGhhcyBhbGwgdGhlc2UgZmVhdHVyZXMuICovCi0jaWZuZGVmIFdJTkRPV19IQVNfRkxBR1MKKyAgIHVzZSA8bmN1cnNlcy5oPiwgd2hpY2ggaGFzIHNvbWUgb3IgYWxsIHRoZXNlIGZlYXR1cmVzLiAqLworI2lmICFkZWZpbmVkKFdJTkRPV19IQVNfRkxBR1MpICYmICEoTkNVUlNFU19PUEFRVUUrMCkKICNkZWZpbmUgV0lORE9XX0hBU19GTEFHUyAxCiAjZW5kaWYKKyNpZiAhZGVmaW5lZChIQVZFX0NVUlNFU19JU19QQUQpICYmIE5DVVJTRVNfVkVSU0lPTl9QQVRDSCswID49IDIwMDkwOTA2CisjZGVmaW5lIEhBVkVfQ1VSU0VTX0lTX1BBRCAxCisjZW5kaWYKICNpZm5kZWYgTVZXREVMQ0hfSVNfRVhQUkVTU0lPTgogI2RlZmluZSBNVldERUxDSF9JU19FWFBSRVNTSU9OIDEKICNlbmRpZgpAQCAtNzQsMTEgKzc1LDExIEBACiAvKiBUeXBlIGRlY2xhcmF0aW9ucyAqLwogCiB0eXBlZGVmIHN0cnVjdCB7Ci0JUHlPYmplY3RfSEVBRAotCVdJTkRPVyAqd2luOworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBXSU5ET1cgKndpbjsKIH0gUHlDdXJzZXNXaW5kb3dPYmplY3Q7CiAKLSNkZWZpbmUgUHlDdXJzZXNXaW5kb3dfQ2hlY2sodikJIChQeV9UWVBFKHYpID09ICZQeUN1cnNlc1dpbmRvd19UeXBlKQorI2RlZmluZSBQeUN1cnNlc1dpbmRvd19DaGVjayh2KSAgKFB5X1RZUEUodikgPT0gJlB5Q3Vyc2VzV2luZG93X1R5cGUpCiAKICNkZWZpbmUgUHlDdXJzZXNfQ0FQU1VMRV9OQU1FICJfY3Vyc2VzLl9DX0FQSSIKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weW1lbS5oIGIvSW5jbHVkZS9weW1lbS5oCmluZGV4IDEwYjViZWEuLjJjMjM5ZGYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltZW0uaAorKysgYi9JbmNsdWRlL3B5bWVtLmgKQEAgLTcyLDkgKzcyLDkgQEAKIC8qIFJldHVybnMgTlVMTCB0byBpbmRpY2F0ZSBlcnJvciBpZiBhIG5lZ2F0aXZlIHNpemUgb3Igc2l6ZSBsYXJnZXIgdGhhbgogICAgUHlfc3NpemVfdCBjYW4gcmVwcmVzZW50IGlzIHN1cHBsaWVkLiAgSGVscHMgcHJldmVudHMgc2VjdXJpdHkgaG9sZXMuICovCiAjZGVmaW5lIFB5TWVtX01BTExPQyhuKQkJKChzaXplX3QpKG4pID4gKHNpemVfdClQWV9TU0laRV9UX01BWCA/IE5VTEwgXAotCQkJCTogbWFsbG9jKChuKSA/IChuKSA6IDEpKQorCQkJCTogbWFsbG9jKCgobikgIT0gMCkgPyAobikgOiAxKSkKICNkZWZpbmUgUHlNZW1fUkVBTExPQyhwLCBuKQkoKHNpemVfdCkobikgPiAoc2l6ZV90KVBZX1NTSVpFX1RfTUFYICA/IE5VTEwgXAotCQkJCTogcmVhbGxvYygocCksIChuKSA/IChuKSA6IDEpKQorCQkJCTogcmVhbGxvYygocCksICgobikgIT0gMCkgPyAobikgOiAxKSkKICNkZWZpbmUgUHlNZW1fRlJFRQkJZnJlZQogCiAjZW5kaWYJLyogUFlNQUxMT0NfREVCVUcgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCmluZGV4IGNmYjAyYjAuLmYwZjRlMzggMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKKysrIGIvSW5jbHVkZS9weXRob25ydW4uaApAQCAtMTExLDExICsxMTEsMTAgQEAKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0Q29tcGlsZXIodm9pZCk7CiBQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0QnVpbGRJbmZvKHZvaWQpOwotUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9zdm52ZXJzaW9uKHZvaWQpOwogUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X1N1YnZlcnNpb25SZXZpc2lvbih2b2lkKTsKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9TdWJ2ZXJzaW9uU2hvcnRCcmFuY2godm9pZCk7Ci1QeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgX1B5X2hnaWRlbnRpZmllcih2b2lkKTsKLVB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBfUHlfaGd2ZXJzaW9uKHZvaWQpOworUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9naXRpZGVudGlmaWVyKHZvaWQpOworUHlBUElfRlVOQyhjb25zdCBjaGFyICopIF9QeV9naXR2ZXJzaW9uKHZvaWQpOwogCiAvKiBJbnRlcm5hbCAtLSB2YXJpb3VzIG9uZS10aW1lIGluaXRpYWxpemF0aW9ucyAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlCdWlsdGluX0luaXQodm9pZCk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3NsaWNlb2JqZWN0LmggYi9JbmNsdWRlL3NsaWNlb2JqZWN0LmgKaW5kZXggOGFiNjJkZC4uYTEwY2MwNSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zbGljZW9iamVjdC5oCisrKyBiL0luY2x1ZGUvc2xpY2VvYmplY3QuaApAQCAtMzgsNiArMzgsMTIgQEAKIAkJCQkgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKnN0b3AsIAogCQkJCSAgICBQeV9zc2l6ZV90ICpzdGVwLCBQeV9zc2l6ZV90ICpzbGljZWxlbmd0aCk7CiAKK1B5QVBJX0ZVTkMoaW50KSBfUHlTbGljZV9VbnBhY2soUHlPYmplY3QgKnNsaWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqc3RvcCwgUHlfc3NpemVfdCAqc3RlcCk7CitQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeVNsaWNlX0FkanVzdEluZGljZXMoUHlfc3NpemVfdCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKnN0b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGVwKTsKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xJQ0VOU0UgYi9MSUNFTlNFCmluZGV4IDg0YTMzMzcuLjFhZmJlZGIgMTAwNjQ0Ci0tLSBhL0xJQ0VOU0UKKysrIGIvTElDRU5TRQpAQCAtMTMsMTIgKzEzLDExIEBACiAKIEluIE1heSAyMDAwLCBHdWlkbyBhbmQgdGhlIFB5dGhvbiBjb3JlIGRldmVsb3BtZW50IHRlYW0gbW92ZWQgdG8KIEJlT3Blbi5jb20gdG8gZm9ybSB0aGUgQmVPcGVuIFB5dGhvbkxhYnMgdGVhbS4gIEluIE9jdG9iZXIgb2YgdGhlIHNhbWUKLXllYXIsIHRoZSBQeXRob25MYWJzIHRlYW0gbW92ZWQgdG8gRGlnaXRhbCBDcmVhdGlvbnMgKG5vdyBab3BlCi1Db3Jwb3JhdGlvbiwgc2VlIGh0dHA6Ly93d3cuem9wZS5jb20pLiAgSW4gMjAwMSwgdGhlIFB5dGhvbiBTb2Z0d2FyZQotRm91bmRhdGlvbiAoUFNGLCBzZWUgaHR0cDovL3d3dy5weXRob24ub3JnL3BzZi8pIHdhcyBmb3JtZWQsIGEKLW5vbi1wcm9maXQgb3JnYW5pemF0aW9uIGNyZWF0ZWQgc3BlY2lmaWNhbGx5IHRvIG93biBQeXRob24tcmVsYXRlZAotSW50ZWxsZWN0dWFsIFByb3BlcnR5LiAgWm9wZSBDb3Jwb3JhdGlvbiBpcyBhIHNwb25zb3JpbmcgbWVtYmVyIG9mCi10aGUgUFNGLgoreWVhciwgdGhlIFB5dGhvbkxhYnMgdGVhbSBtb3ZlZCB0byBEaWdpdGFsIENyZWF0aW9ucywgd2hpY2ggYmVjYW1lCitab3BlIENvcnBvcmF0aW9uLiAgSW4gMjAwMSwgdGhlIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIChQU0YsIHNlZQoraHR0cHM6Ly93d3cucHl0aG9uLm9yZy9wc2YvKSB3YXMgZm9ybWVkLCBhIG5vbi1wcm9maXQgb3JnYW5pemF0aW9uCitjcmVhdGVkIHNwZWNpZmljYWxseSB0byBvd24gUHl0aG9uLXJlbGF0ZWQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LgorWm9wZSBDb3Jwb3JhdGlvbiB3YXMgYSBzcG9uc29yaW5nIG1lbWJlciBvZiB0aGUgUFNGLgogCiBBbGwgUHl0aG9uIHJlbGVhc2VzIGFyZSBPcGVuIFNvdXJjZSAoc2VlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcgZm9yCiB0aGUgT3BlbiBTb3VyY2UgRGVmaW5pdGlvbikuICBIaXN0b3JpY2FsbHksIG1vc3QsIGJ1dCBub3QgYWxsLCBQeXRob24KQEAgLTc0LDkgKzczLDkgQEAKIGRpc3RyaWJ1dGUsIGFuZCBvdGhlcndpc2UgdXNlIFB5dGhvbiBhbG9uZSBvciBpbiBhbnkgZGVyaXZhdGl2ZSB2ZXJzaW9uLAogcHJvdmlkZWQsIGhvd2V2ZXIsIHRoYXQgUFNGJ3MgTGljZW5zZSBBZ3JlZW1lbnQgYW5kIFBTRidzIG5vdGljZSBvZiBjb3B5cmlnaHQsCiBpLmUuLCAiQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLAotMjAxMSwgMjAxMiwgMjAxMywgMjAxNCwgMjAxNSwgMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbjsgQWxsIFJpZ2h0cwotUmVzZXJ2ZWQiIGFyZSByZXRhaW5lZCBpbiBQeXRob24gYWxvbmUgb3IgaW4gYW55IGRlcml2YXRpdmUgdmVyc2lvbiBwcmVwYXJlZCBieQotTGljZW5zZWUuCisyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2LCAyMDE3LCAyMDE4IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwKK1JpZ2h0cyBSZXNlcnZlZCIgYXJlIHJldGFpbmVkIGluIFB5dGhvbiBhbG9uZSBvciBpbiBhbnkgZGVyaXZhdGl2ZSB2ZXJzaW9uCitwcmVwYXJlZCBieSBMaWNlbnNlZS4KIAogMy4gSW4gdGhlIGV2ZW50IExpY2Vuc2VlIHByZXBhcmVzIGEgZGVyaXZhdGl2ZSB3b3JrIHRoYXQgaXMgYmFzZWQgb24KIG9yIGluY29ycG9yYXRlcyBQeXRob24gb3IgYW55IHBhcnQgdGhlcmVvZiwgYW5kIHdhbnRzIHRvIG1ha2UKZGlmZiAtLWdpdCBhL0xhdW5jaGVyL2xhdW5jaGVyX2ludGVybmFsLmNwcCBiL0xhdW5jaGVyL2xhdW5jaGVyX2ludGVybmFsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDEyNzRiYi4uMDAwMDAwMAotLS0gYS9MYXVuY2hlci9sYXVuY2hlcl9pbnRlcm5hbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTcgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLS8vIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLS8vIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotLy8KLS8vICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLS8vCi0vLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0vLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0vLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0vLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLQotI2luY2x1ZGUgImxhdW5jaGVyX2ludGVybmFsLmgiCi0KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi1leHRlcm4gIkMiIHsKLS8vIENweXRob24gYnVpbHQtaW4gQyBmdW5jdGlvbnMuCi0vKgotICAgcmVhZF9kaXJlY3RvcnkoYXJjaGl2ZSkgLT4gZmlsZXMgZGljdCAobmV3IHJlZmVyZW5jZSkKLQotICAgR2l2ZW4gYSBwYXRoIHRvIGEgWmlwIGFyY2hpdmUsIGJ1aWxkIGEgZGljdCwgbWFwcGluZyBmaWxlIG5hbWVzCi0gICAobG9jYWwgdG8gdGhlIGFyY2hpdmUsIHVzaW5nIFNFUCBhcyBhIHNlcGFyYXRvcikgdG8gdG9jIGVudHJpZXMuCi0qLwotUHlPYmplY3QgKnJlYWRfZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmFyY2hpdmUpOwotCi0vKiBHaXZlbiBhIHBhdGggdG8gYSBaaXAgZmlsZSBhbmQgYSB0b2NfZW50cnksIHJldHVybiB0aGUgKHVuY29tcHJlc3NlZCkKLSAgIGRhdGEgYXMgYSBuZXcgcmVmZXJlbmNlLiAqLwotUHlPYmplY3QgKmdldF9kYXRhKGNvbnN0IGNoYXIgKmFyY2hpdmUsIFB5T2JqZWN0ICp0b2NfZW50cnkpOwotfQotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci1uYW1lc3BhY2UgY3B5dGhvbjIgewotbmFtZXNwYWNlIHB5dGhvbl9sYXVuY2hlciB7Ci1uYW1lc3BhY2UgaW50ZXJuYWwgewotCi1pbnQgUnVuTW9kdWxlKGNvbnN0IGNoYXIgKm1vZHVsZSwgaW50IHNldF9hcmd2MCkgewotICBQeU9iamVjdCAqcnVucHksICpydW5tb2R1bGUsICpydW5hcmdzLCAqcmVzdWx0OwotICBydW5weSA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgicnVucHkiKTsKLSAgaWYgKHJ1bnB5ID09IE5VTEwpIHsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIkNvdWxkIG5vdCBpbXBvcnQgcnVucHkgbW9kdWxlXG4iKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgcnVubW9kdWxlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhydW5weSwgIl9ydW5fbW9kdWxlX2FzX21haW4iKTsKLSAgaWYgKHJ1bm1vZHVsZSA9PSBOVUxMKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsICJDb3VsZCBub3QgYWNjZXNzIHJ1bnB5Ll9ydW5fbW9kdWxlX2FzX21haW5cbiIpOwotICAgIFB5X0RFQ1JFRihydW5weSk7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIHJ1bmFyZ3MgPSBQeV9CdWlsZFZhbHVlKCIoc2kpIiwgbW9kdWxlLCBzZXRfYXJndjApOwotICBpZiAocnVuYXJncyA9PSBOVUxMKSB7Ci0gICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAiQ291bGQgbm90IGNyZWF0ZSBhcmd1bWVudHMgZm9yIHJ1bnB5Ll9ydW5fbW9kdWxlX2FzX21haW5cbiIpOwotICAgIFB5X0RFQ1JFRihydW5weSk7Ci0gICAgUHlfREVDUkVGKHJ1bm1vZHVsZSk7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwocnVubW9kdWxlLCBydW5hcmdzLCBOVUxMKTsKLSAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7Ci0gICAgUHlFcnJfUHJpbnQoKTsKLSAgfQotICBQeV9ERUNSRUYocnVucHkpOwotICBQeV9ERUNSRUYocnVubW9kdWxlKTsKLSAgUHlfREVDUkVGKHJ1bmFyZ3MpOwotICBpZiAocmVzdWx0ID09IE5VTEwpIHsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gIHJldHVybiAwOwotfQotCi1zdGQ6OnN0cmluZyBHZXRFbnRyeVBvaW50RmlsZVBhdGgoY29uc3QgY2hhciAqbGF1bmNoZXJfcGF0aCkgewotICBQeU9iamVjdCAqZmlsZXM7Ci0gIGZpbGVzID0gcmVhZF9kaXJlY3RvcnkobGF1bmNoZXJfcGF0aCk7Ci0gIGlmIChmaWxlcyA9PSBOVUxMKSB7Ci0gICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7Ci0gIH0KLSAgUHlPYmplY3QgKnRvY19lbnRyeTsKLSAgLy8gUmV0dXJuIHZhbHVlOiBCb3Jyb3dlZCByZWZlcmVuY2UuCi0gIHRvY19lbnRyeSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGZpbGVzLCBFTlRSWVBPSU5UX0ZJTEUpOwotICBpZiAodG9jX2VudHJ5ID09IE5VTEwpIHsKLSAgICBQeV9ERUNSRUYoZmlsZXMpOwotICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwotICB9Ci0gIFB5T2JqZWN0ICpweV9kYXRhOwotICBweV9kYXRhID0gZ2V0X2RhdGEobGF1bmNoZXJfcGF0aCwgdG9jX2VudHJ5KTsKLSAgaWYgKHB5X2RhdGEgPT0gTlVMTCkgewotICAgIFB5X0RFQ1JFRihmaWxlcyk7Ci0gICAgcmV0dXJuIHN0ZDo6c3RyaW5nKCk7Ci0gIH0KLSAgLy8gUHlTdHJpbmdfQXNTdHJpbmcgcmV0dXJucyBhIE5VTC10ZXJtaW5hdGVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSAicHlfZGF0YSIsCi0gIC8vICJkYXRhIiBtdXN0IG5vdCBiZSBtb2RpZmllZCBpbiBhbnkgd2F5LiBBbmQgaXQgbXVzdCBub3QgYmUgZGVhbGxvY2F0ZWQuCi0gIGNoYXIgKmRhdGEgPSBQeVN0cmluZ19Bc1N0cmluZyhweV9kYXRhKTsKLSAgaWYgKGRhdGEgPT0gTlVMTCkgewotICAgIFB5X0RFQ1JFRihweV9kYXRhKTsKLSAgICBQeV9ERUNSRUYoZmlsZXMpOwotICAgIHJldHVybiBzdGQ6OnN0cmluZygpOwotICB9Ci0KLSAgY2hhciAqcmVzID0gc3RyZHVwKGRhdGEpOyAvKiBkZWVwIGNvcHkgb2YgZGF0YSAqLwotICBQeV9ERUNSRUYocHlfZGF0YSk7Ci0gIFB5X0RFQ1JFRihmaWxlcyk7Ci0KLSAgaW50IGkgPSAwOwotICAvKiBTdHJpcCBuZXdsaW5lIGFuZCBvdGhlciB0cmFpbGluZyB3aGl0ZXNwYWNlLiAqLwotICBmb3IgKGkgPSBzdHJsZW4ocmVzKSAtIDE7IGkgPj0gMCAmJiBpc3NwYWNlKHJlc1tpXSk7IGktLSkgewotICAgIHJlc1tpXSA9ICdcMCc7Ci0gIH0KLSAgLyogQ2hlY2sgZm9yIHRoZSBmaWxlIGV4dGVuc2lvbi4gKi8KLSAgaSA9IHN0cmxlbihyZXMpOwotICBpZiAoaSA+IDMgJiYgc3RyY21wKHJlcyArIGkgLSAzLCAiLnB5IikgPT0gMCkgewotICAgIHJlc1tpIC0gM10gPSAnXDAnOwotICB9IGVsc2UgewotICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiSW52YWxpZCBlbnRyeXBvaW50IGluICVzOiAlcyIsCi0gICAgICAgICAgICAgICAgIEVOVFJZUE9JTlRfRklMRSwgcmVzKTsKLSAgICByZXR1cm4gc3RkOjpzdHJpbmcoKTsKLSAgfQotICByZXR1cm4gc3RkOjpzdHJpbmcocmVzKTsKLX0KLQotaW50IFJ1bk1vZHVsZU5hbWVGcm9tRW50cnlQb2ludChjb25zdCBjaGFyICpsYXVuY2hlcl9wYXRoLCBzdGQ6OnN0cmluZyBlbnRyeXBvaW50KSB7Ci0gIGlmIChlbnRyeXBvaW50LmVtcHR5KCkpIHsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgLy8gSGFzIHRvIHBhc3MgdG8gZnJlZSB0byBhdm9pZCBhIG1lbW9yeSBsZWFrIGFmdGVyIHVzZS4KLSAgY2hhciAqYXJyID0gc3RyZHVwKGVudHJ5cG9pbnQuY19zdHIoKSk7Ci0gIC8vIFJlcGxhY2UgZmlsZSBzeXN0ZW0gcGF0aCBzZXBlcmF0b3Igd2l0aCBQeXRob24gcGFja2FnZS9tb2R1bGUgc2VwZXJhdG9yLgotICBjaGFyICpjaDsKLSAgZm9yIChjaCA9IGFycjsgKmNoOyBjaCsrKSB7Ci0gICAgaWYgKCpjaCA9PSAnLycpIHsKLSAgICAgICpjaCA9ICcuJzsKLSAgICB9Ci0gIH0KLQotICBpZiAoQWRkUGF0aFRvUHl0aG9uU3lzUGF0aChsYXVuY2hlcl9wYXRoKSA8IDApIHsKLSAgICBmcmVlKGFycik7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0gIC8vIENhbGN1bGF0ZSB0aGUgcnVuZmlsZXMgcGF0aCBzaXplLiBFeHRyYSBzcGFjZSBmb3IgJ1wwJy4KLSAgc2l6ZV90IHNpemUgPSBzbnByaW50ZihudWxscHRyLCAwLCAiJXMvJXMiLCBsYXVuY2hlcl9wYXRoLCBSVU5GSUxFUykgKyAxOwotICBjaGFyIHJ1bmZpbGVzX3BhdGhbc2l6ZV07Ci0gIHNucHJpbnRmKHJ1bmZpbGVzX3BhdGgsIHNpemUsICIlcy8lcyIsIGxhdW5jaGVyX3BhdGgsIFJVTkZJTEVTKTsKLSAgaWYgKEFkZFBhdGhUb1B5dGhvblN5c1BhdGgocnVuZmlsZXNfcGF0aCkgPCAwKSB7Ci0gICAgZnJlZShhcnIpOwotICAgIHJldHVybiAtMTsKLSAgfQotICBpbnQgcmV0ID0gIFJ1bk1vZHVsZShhcnIsIDApOwotICBmcmVlKGFycik7Ci0gIHJldHVybiByZXQ7Ci19Ci0KLWludCBBZGRQYXRoVG9QeXRob25TeXNQYXRoKGNvbnN0IGNoYXIgKnBhdGgpIHsKLSAgaWYgKHBhdGggPT0gTlVMTCkgewotICAgIHJldHVybiAtMTsKLSAgfQotICBQeU9iamVjdCAqcHlfcGF0aDsKLSAgcHlfcGF0aCA9IFB5U3RyaW5nX0Zyb21TdHJpbmcocGF0aCk7Ci0gIGlmIChweV9wYXRoID09IE5VTEwpIHsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgUHlPYmplY3QgKnN5c19wYXRoOwotICAvLyBSZXR1cm4gdmFsdWU6IEJvcnJvd2VkIHJlZmVyZW5jZS4KLSAgc3lzX3BhdGggPSBQeVN5c19HZXRPYmplY3QoY29uc3RfY2FzdDxjaGFyKj4oInBhdGgiKSk7Ci0gIGlmIChzeXNfcGF0aCA9PSBOVUxMKSB7Ci0gICAgUHlfREVDUkVGKHB5X3BhdGgpOwotICAgIHJldHVybiAtMTsKLSAgfQotICBQeUxpc3RfSW5zZXJ0KHN5c19wYXRoLCAwLCBweV9wYXRoKTsKLSAgUHlfREVDUkVGKHB5X3BhdGgpOwotICByZXR1cm4gMDsKLX0KLQotaW50IFJ1bk1haW5Gcm9tSW1wb3J0ZXIoY29uc3QgY2hhciAqbGF1bmNoZXJfcGF0aCkgewotICBQeU9iamVjdCAqcHlfbGF1bmNoZXJfcGF0aCwgKmltcG9ydGVyOwotICBweV9sYXVuY2hlcl9wYXRoID0gUHlTdHJpbmdfRnJvbVN0cmluZyhsYXVuY2hlcl9wYXRoKTsKLSAgaWYgKHB5X2xhdW5jaGVyX3BhdGggPT0gTlVMTCkgewotICAgIHJldHVybiAtMTsKLSAgfQotICBpbXBvcnRlciA9IFB5SW1wb3J0X0dldEltcG9ydGVyKHB5X2xhdW5jaGVyX3BhdGgpOwotICBpZiAoaW1wb3J0ZXIgPT0gTlVMTCkgewotICAgIFB5X0RFQ1JFRihweV9sYXVuY2hlcl9wYXRoKTsKLSAgICByZXR1cm4gLTE7Ci0gIH0KLSAgaWYgKGltcG9ydGVyICE9IFB5X05vbmUgJiYgaW1wb3J0ZXItPm9iX3R5cGUgIT0gJlB5TnVsbEltcG9ydGVyX1R5cGUpIHsKLSAgICAvKiBMYXVuY2hlciBwYXRoIGlzIHVzYWJsZSBhcyBhbiBpbXBvcnQgc291cmNlLCBzbwotICAgICAgIHB1dCBpdCBpbiBzeXMucGF0aFswXSBhbmQgaW1wb3J0IF9fbWFpbl9fICovCi0gICAgaWYgKEFkZFBhdGhUb1B5dGhvblN5c1BhdGgobGF1bmNoZXJfcGF0aCkgPCAwKSB7Ci0gICAgICBQeV9ERUNSRUYoaW1wb3J0ZXIpOwotICAgICAgUHlfREVDUkVGKHB5X2xhdW5jaGVyX3BhdGgpOwotICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgfQotICBQeV9ERUNSRUYoaW1wb3J0ZXIpOwotICBQeV9ERUNSRUYocHlfbGF1bmNoZXJfcGF0aCk7Ci0gIHJldHVybiBSdW5Nb2R1bGUoIl9fbWFpbl9fIiwgMCk7Ci19Ci19ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKLQotaW50IFJ1bkVudHJ5UG9pbnRPck1haW5Nb2R1bGUoY29uc3QgY2hhciAqbGF1bmNoZXJfcGF0aCkgewotICBzdGQ6OnN0cmluZyBlbnRyeXBvaW50ID0gaW50ZXJuYWw6OkdldEVudHJ5UG9pbnRGaWxlUGF0aChsYXVuY2hlcl9wYXRoKTsKLSAgaWYgKGVudHJ5cG9pbnQuZW1wdHkoKSkgewotICAgIC8vIElmIGVudHJ5IHBvaW50IGNhbiBub3QgYmUgZm91bmQgb3IgY2FuIG5vdCBiZSBleGVjdXRlZCwgd2UgdHJ5IHRvCi0gICAgLy8gcnVuIF9fbWFpbl9fLnB5IHdpdGhpbiB0aGUgLnBhciBmaWxlLgotICAgIGZwcmludGYoc3RkZXJyLCAiQ2Fubm90IGZpbmQgdmFsaWQgZW50cnkgcG9pbnQgdG8gZXhlY3V0ZSBwYXIgZmlsZSFcbiIpOwotICAgIGZwcmludGYoc3Rkb3V0LCAiU3RhcnQgdHJ5aW5nIHRvIHJ1biBfX21haW5fXyBtb2R1bGUgd2l0aGluIHBhciBmaWxlLlxuIik7Ci0gICAgcmV0dXJuIGludGVybmFsOjpSdW5NYWluRnJvbUltcG9ydGVyKGxhdW5jaGVyX3BhdGgpOwotICB9Ci0gIHJldHVybiBpbnRlcm5hbDo6UnVuTW9kdWxlTmFtZUZyb21FbnRyeVBvaW50KGxhdW5jaGVyX3BhdGgsIGVudHJ5cG9pbnQpOwotfQotfSAgLy8gbmFtZXNwYWNlIHB5dGhvbl9sYXVuY2hlcgotfSAgLy8gbmFtZXNwYWNlIGNweXRob24yCi19ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvTGF1bmNoZXIvbGF1bmNoZXJfaW50ZXJuYWwuaCBiL0xhdW5jaGVyL2xhdW5jaGVyX2ludGVybmFsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4NTE3NmEuLjAwMDAwMDAKLS0tIGEvTGF1bmNoZXIvbGF1bmNoZXJfaW50ZXJuYWwuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8vIENvcHlyaWdodCAyMDE3IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwotLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0vLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0vLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLS8vCi0vLyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0vLwotLy8gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotLy8gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLS8vIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotLy8gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotLy8gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0KLSNpZm5kZWYgQU5EUk9JRF9DUFlUSE9OMl9QWVRIT05fTEFVTkNIRVJfSU5URVJOQUxfSAotI2RlZmluZSBBTkRST0lEX0NQWVRIT04yX1BZVEhPTl9MQVVOQ0hFUl9JTlRFUk5BTF9ICi0KLSNpbmNsdWRlIDxQeXRob24uaD4KLQotI2luY2x1ZGUgPHN0cmluZz4KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotbmFtZXNwYWNlIGNweXRob24yIHsKLW5hbWVzcGFjZSBweXRob25fbGF1bmNoZXIgewotCi1uYW1lc3BhY2UgaW50ZXJuYWx7Ci0jZGVmaW5lIEVOVFJZUE9JTlRfRklMRSAiZW50cnlfcG9pbnQudHh0IgotI2RlZmluZSBSVU5GSUxFUyAicnVuZmlsZXMiCi0KLS8vIFVzZSAicnVucHkiIG1vZHVsZSB0byBsb2NhdGUgYW5kIHJ1biBQeXRob24gc2NyaXB0IHVzaW5nIFB5dGhvbiBtb2R1bGUKLS8vIG5hbWVzcGFjZSByYXRoZXIgdGhhbiB0aGUgZmlsZXN5c3RlbS4KLS8vIFRoZSBjYWxsZXIgb3ducyAibW9kdWxlIiBwb2ludGVyLCB3aGljaCBjYW5ub3QgYmUgTlVMTC4KLWludCBSdW5Nb2R1bGUoY29uc3QgY2hhciAqbW9kdWxlLCBpbnQgc2V0X2FyZ3YwKTsKLQotLy8gR2V0IHZhbGlkIGVudHJ5cG9pbnQgZmlsZSBwYXRoLgotLy8gVGhlIGNhbGxlciBvd25zICJsYXVuY2hlcl9wYXRoIiBwb2ludGVyLCB3aGljaCBjYW5ub3QgYmUgTlVMTC4KLS8vIFJldHVybiBub24tZW1wdHkgc3RyaW5nIGFzIHN1Y2Nlc3MuIE90aGVyd2lzZSwgcmV0dXJuIGVtcHR5IHN0cmluZy4KLXN0ZDo6c3RyaW5nIEdldEVudHJ5UG9pbnRGaWxlUGF0aChjb25zdCBjaGFyICpsYXVuY2hlcl9wYXRoKTsKLQotLy8gUnVuIHRoZSBQeXRob24gc2NyaXB0IGVtYmVkZGVkIGluIEVOVFJZUE9JTlRfRklMRS4KLS8vIFRoZSBjYWxsZXIgb3ducyAibGF1bmNoZXJfcGF0aCIgcG9pbnRlciwgd2hpY2ggY2Fubm90IGJlIE5VTEwuCi1pbnQgUnVuTW9kdWxlTmFtZUZyb21FbnRyeVBvaW50KGNvbnN0IGNoYXIgKmxhdW5jaGVyX3BhdGgsIHN0ZDo6c3RyaW5nIGVudHJ5cG9pbnQpOwotCi0vLyBBZGQgcGF0aCB0byBQeXRob24gc3lzLnBhdGggbGlzdC4KLS8vIFRoZSBjYWxsZXIgb3ducyAicGF0aCIgcG9pbnRlciwgd2hpY2ggY2Fubm90IGJlIE5VTEwuCi1pbnQgQWRkUGF0aFRvUHl0aG9uU3lzUGF0aChjb25zdCBjaGFyICpwYXRoKTsKLQotLy8gUnVuIF9fbWFpbl9fIG1vZHVsZSB3aXRoaW4gdGhlIGhlcm1ldGljIC5wYXIgZmlsZS4KLS8vIFRoZSBjYWxsZXIgb3ducyAibGF1bmNoZXJfcGF0aCIgcG9pbnRlciwgd2hpY2ggY2Fubm90IGJlIE5VTEwuCi0vLyBSZXR1cm4gMCBhcyBzdWNjZXNzLiBPdGhlcndpc2UsIHJldHVybiAtMS4KLWludCBSdW5NYWluRnJvbUltcG9ydGVyKGNvbnN0IGNoYXIgKmxhdW5jaGVyX3BhdGgpOwotfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCi0KLS8vIFRyeSB0byBydW4gdGhlIFB5dGhvbiBzY3JpcHQgZW1iZWRkZWQgaW4gRU5UUllQT0lOVF9GSUxFLiBPdGhlcndpc2UsCi0vLyBydW4gX19tYWluX18gbW9kdWxlIGFzIGZhbGxiYWNrLgotLy8gVGhlIGNhbGxlciBvd25zICJsYXVuY2hlcl9wYXRoIiBwb2ludGVyLCB3aGljaCBjYW5ub3QgYmUgTlVMTC4KLWludCBSdW5FbnRyeVBvaW50T3JNYWluTW9kdWxlKGNvbnN0IGNoYXIgKmxhdW5jaGVyX3BhdGgpOwotfSAgLy8gbmFtZXNwYWNlIHB5dGhvbl9sYXVuY2hlcgotfSAgLy8gbmFtZXNwYWNlIGNweXRob24yCi19ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAotCi0jZW5kaWYgIC8vIEFORFJPSURfQ1BZVEhPTjJfUFlUSE9OX0xBVU5DSEVSX0lOVEVSTkFMX0gKZGlmZiAtLWdpdCBhL0xhdW5jaGVyL2xhdW5jaGVyX21haW4uY3BwIGIvTGF1bmNoZXIvbGF1bmNoZXJfbWFpbi5jcHAKaW5kZXggYTQ5OTk4Yy4uMGEzNGMxOCAxMDA2NDQKLS0tIGEvTGF1bmNoZXIvbGF1bmNoZXJfbWFpbi5jcHAKKysrIGIvTGF1bmNoZXIvbGF1bmNoZXJfbWFpbi5jcHAKQEAgLTEyLDggKzEyLDYgQEAKIC8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKIC8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogCi0jaW5jbHVkZSAibGF1bmNoZXJfaW50ZXJuYWwuaCIKLQogI2luY2x1ZGUgPFB5dGhvbi5oPgogI2luY2x1ZGUgPGFuZHJvaWQtYmFzZS9maWxlLmg+CiAjaW5jbHVkZSA8b3NkZWZzLmg+CkBAIC0yMiwxMDMgKzIwLDQ5IEBACiAjaW5jbHVkZSA8c3RyaW5nPgogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKSB7Ci0gIGludCByZXN1bHQgPSAwIC8qIFVzZWQgdG8gbWFyayBpZiBjdXJyZW50IHByb2dyYW0gcnVucyB3aXRoIHN1Y2Nlc3MvZmFpbHVyZS4gKi87Ci0KLSAgLy8gQ2xlYXIgUFlUSE9OUEFUSCBhbmQgUFlUSE9OSE9NRSBzbyBQeXRob24gZG9lc24ndCBhdHRlbXB0IHRvIGNoZWNrIHRoZSBsb2NhbAotICAvLyBkaXNrIGZvciBQeXRob24gbW9kdWxlcyB0byBsb2FkLiBUaGUgdmFsdWUgb2YgUFlUSE9OSE9NRSB3aWxsIHJlcGxhY2UgInByZWZpeCIKLSAgLy8gYW5kICJleGVfcHJlZml4IiBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb24gaW4gZ2V0cGF0aC5jLgotICAvLyBQbGVhc2UgZG9uJ3QgdXNlIFBZVEhPTlBBVEggYW5kIFBZVEhPTkhPTUUgd2l0aGluIHVzZXIgcHJvZ3JhbS4KLSAgLy8gVE9ETyhuYW56aGFuZyk6IGZpZ3VyZSBvdXQgaWYgdW5zZXRlbnYoIlBZVEhPTlBBVEgiKSBpcyBiZXR0ZXIuCi0gIHVuc2V0ZW52KGNvbnN0X2Nhc3Q8Y2hhciAqPigiUFlUSE9OUEFUSCIpKTsKLSAgLy8gVE9ETyhuYW56aGFuZyk6IGZpZ3VyZSBvdXQgaWYgUHlfU2V0UHl0aG9uSG9tZSgpIGlzIGJldHRlci4KLSAgdW5zZXRlbnYoY29uc3RfY2FzdDxjaGFyICo+KCJQWVRIT05IT01FIikpOwogICAvLyBQWVRIT05FWEVDVVRBQkxFIGlzIG9ubHkgdXNlZCBvbiBNYWNPcyBYLCB3aGVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIKICAgLy8gZW1iZWRkZWQgaW4gYW4gYXBwbGljYXRpb24gYnVuZGxlLiBJdCBpcyBub3Qgc3VyZSB0aGF0IHdlIGhhdmUgdGhpcyB1c2UgY2FzZQotICAvLyBmb3IgQW5kcm9pZCBoZXJtZXRpYyBQeXRob24uIFNvIG92ZXJyaWRlIHRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gZW1wdHkKLSAgLy8gZm9yIG5vdyB0byBtYWtlIG91ciBzZWxmLWNvbnRhaW5lZCBlbnZpcm9ubWVudCBtb3JlIHN0cmljdC4KKyAgLy8gZm9yIEFuZHJvaWQgaGVybWV0aWMgUHl0aG9uLiBTbyByZW1vdmUgdGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBtYWtlCisgIC8vIG91ciBzZWxmLWNvbnRhaW5lZCBlbnZpcm9ubWVudCBtb3JlIHN0cmljdC4KICAgLy8gRm9yIHVzZXIgKC5weSkgcHJvZ3JhbSwgaXQgY2FuIGFjY2VzcyBoZXJtZXRpYyAucGFyIGZpbGUgcGF0aCB0aHJvdWdoCiAgIC8vIHN5cy5hcmd2WzBdLgogICB1bnNldGVudihjb25zdF9jYXN0PGNoYXIgKj4oIlBZVEhPTkVYRUNVVEFCTEUiKSk7CiAKKyAgLy8gQWx3YXlzIGVuYWJsZSBQeXRob24gIi1zIiBvcHRpb24uIFdlIGRvbid0IG5lZWQgdXNlci1zaXRlIGRpcmVjdG9yaWVzLAorICAvLyBldmVyeXRoaW5nJ3Mgc3VwcG9zZWQgdG8gYmUgaGVybWV0aWMuCisgIFB5X05vVXNlclNpdGVEaXJlY3RvcnkgPSAxOworCisgIC8vIElnbm9yZSBQWVRIT05QQVRIIGFuZCBQWVRIT05IT01FIGZyb20gdGhlIGVudmlyb25tZW50LiBVbmxlc3Mgd2UncmUgbm90CisgIC8vIHJ1bm5pbmcgZnJvbSBpbnNpZGUgdGhlIHppcCBmaWxlLCBpbiB3aGljaCBjYXNlIHRoZSB1c2VyIG1heSBoYXZlCisgIC8vIHNwZWNpZmllZCBhIFBZVEhPTlBBVEguCisjaWZkZWYgQU5EUk9JRF9BVVRPUlVOCisgIFB5X0lnbm9yZUVudmlyb25tZW50RmxhZyA9IDE7CisjZW5kaWYKKworICBQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcgPSAxOworCiAgIC8vIFJlc29sdmluZyBhYnNvbHV0ZSBwYXRoIGJhc2VkIG9uIGFyZ3ZbMF0gaXMgbm90IHJlbGlhYmxlIHNpbmNlIGl0IG1heQogICAvLyBpbmNsdWRlIHNvbWV0aGluZyB1bnVzYWJsZSwgdG9vIGJhZC4KICAgLy8gYW5kcm9pZDo6YmFzZTo6R2V0RXhlY3V0YWJsZVBhdGgoKSBhbHNvIGhhbmRsZXMgZm9yIERhcndpbi9XaW5kb3dzLgogICBzdGQ6OnN0cmluZyBleGVjdXRhYmxlX3BhdGggPSBhbmRyb2lkOjpiYXNlOjpHZXRFeGVjdXRhYmxlUGF0aCgpOwogCi0gIGFyZ3ZbMF0gPSBzdHJkdXAoZXhlY3V0YWJsZV9wYXRoLmNfc3RyKCkpOwotICAvLyBhcmd2WzBdIGlzIHVzZWQgZm9yIHNldHRpbmcgaW50ZXJuYWwgcGF0aCwgYW5kIFB5dGhvbiBzeXMuYXJndlswXS4gSXQKLSAgLy8gc2hvdWxkIG5vdCBleGNlZWQgTUFYUEFUSExFTiBkZWZpbmVkIGZvciBDUHl0aG9uLgotICBpZiAoIWFyZ3ZbMF0gfHwgc3RybGVuKGFyZ3ZbMF0pID4gTUFYUEFUSExFTikgewotICAgIGZwcmludGYoc3RkZXJyLCAiVGhlIGV4ZWN1dGFibGUgcGF0aCAlcyBpcyBOVUxMIG9yIG9mIGludmFsaWQgbGVuZ3RoLlxuIiwgYXJndlswXSk7Ci0gICAgcmV0dXJuIDE7CisgIC8vIFNldCB0aGUgZXF1aXZhbGVudCBvZiBQWVRIT05IT01FIGludGVybmFsbHkuCisgIFB5X1NldFB5dGhvbkhvbWUoc3RyZHVwKGV4ZWN1dGFibGVfcGF0aC5jX3N0cigpKSk7CisKKyNpZmRlZiBBTkRST0lEX0FVVE9SVU4KKyAgYXJnYyArPSAxOworICBjaGFyICoqbmV3X2FyZ3YgPSByZWludGVycHJldF9jYXN0PGNoYXIqKj4oY2FsbG9jKGFyZ2MsIHNpemVvZigqYXJndikpKTsKKworICAvLyBJbmplY3QgdGhlIHBhdGggdG8gb3VyIGJpbmFyeSBpbnRvIGFyZ3ZbMV0gc28gdGhlIFB5X01haW4gd29uJ3QgcGFyc2UgYW55CisgIC8vIG90aGVyIG9wdGlvbnMsIGFuZCB3aWxsIGV4ZWN1dGUgdGhlIF9fbWFpbl9fLnB5IHNjcmlwdCBpbnNpZGUgdGhlIHppcCBmaWxlCisgIC8vIGF0dGFjaGVkIHRvIG91ciBleGVjdXRhYmxlLgorICBuZXdfYXJndlswXSA9IGFyZ3ZbMF07CisgIG5ld19hcmd2WzFdID0gc3RyZHVwKGV4ZWN1dGFibGVfcGF0aC5jX3N0cigpKTsKKyAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdjIC0gMTsgaSsrKSB7CisgICAgbmV3X2FyZ3ZbaSsxXSA9IGFyZ3ZbaV07CiAgIH0KKyAgYXJndiA9IG5ld19hcmd2OworI2VuZGlmCiAKLSAgLy8gRm9yIGRlYnVnZ2luZy9sb2dnaW5nIHB1cnBvc2UsIHNldCBzdGRpbi9zdGRvdXQvc3RkZXJyIHVuYnVmZmVyZWQgdGhyb3VnaAotICAvLyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSAgLy8gVE9ETyhuYW56aGFuZyk6IFNldCBQeV9WZXJib3NlRmxhZyBpZiBtb3JlIGRlYnVnZ2luZyByZXF1ZXN0cyBuZWVkZWQuCi0gIGNvbnN0IGNoYXIgKnVuYnVmZmVyZWRfZW52ID0gZ2V0ZW52KCJQWVRIT05VTkJVRkZFUkVEIik7Ci0gIGlmICh1bmJ1ZmZlcmVkX2VudiAmJiB1bmJ1ZmZlcmVkX2VudlswXSkgewotICAgICNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpIHx8IGRlZmluZWQoX19DWUdXSU5fXykKLSAgICAgIF9zZXRtb2RlKGZpbGVubyhzdGRpbiksIE9fQklOQVJZKTsKLSAgICAgIF9zZXRtb2RlKGZpbGVubyhzdGRvdXQpLCBPX0JJTkFSWSk7Ci0gICAgI2VuZGlmCi0gICAgI2lmZGVmIEhBVkVfU0VUVkJVRgotICAgICAgc2V0dmJ1ZihzdGRpbiwgIChjaGFyICopTlVMTCwgX0lPTkJGLCBCVUZTSVopOwotICAgICAgc2V0dmJ1ZihzdGRvdXQsIChjaGFyICopTlVMTCwgX0lPTkJGLCBCVUZTSVopOwotICAgICAgc2V0dmJ1ZihzdGRlcnIsIChjaGFyICopTlVMTCwgX0lPTkJGLCBCVUZTSVopOwotICAgICNlbHNlIC8qICFIQVZFX1NFVFZCVUYgKi8KLSAgICAgIHNldGJ1ZihzdGRpbiwgIChjaGFyICopTlVMTCk7Ci0gICAgICBzZXRidWYoc3Rkb3V0LCAoY2hhciAqKU5VTEwpOwotICAgICAgc2V0YnVmKHN0ZGVyciwgKGNoYXIgKilOVUxMKTsKLSAgICAjZW5kaWYgLyogIUhBVkVfU0VUVkJVRiAqLwotICB9Ci0gIC8vRm9yIGRlYnVnZ2luZy9sb2dnaW5nIHB1cnBvc2UsIFdhcm5pbmcgY29udHJvbC4KLSAgLy9QeXRob27igJlzIHdhcm5pbmcgbWFjaGluZXJ5IGJ5IGRlZmF1bHQgcHJpbnRzIHdhcm5pbmcgbWVzc2FnZXMgdG8gc3lzLnN0ZGVyci4KLSAgLy9UaGUgZnVsbCBmb3JtIG9mIGFyZ3VtZW50IGlzOmFjdGlvbjptZXNzYWdlOmNhdGVnb3J5Om1vZHVsZTpsaW5lCi0gIGNoYXIgKndhcm5pbmdzX2VudiA9IGdldGVudigiUFlUSE9OV0FSTklOR1MiKTsKLSAgaWYgKHdhcm5pbmdzX2VudiAmJiB3YXJuaW5nc19lbnZbMF0pIHsKLSAgICAgIGNoYXIgKndhcm5pbmdzX2J1ZiwgKndhcm5pbmc7Ci0KLSAgICAgIC8vIE5vdGU6ICJuZXciIG9wZXJhdGlvbjsgd2UgbmVlZCBmcmVlIHRoaXMgY2h1Y2sgb2YgZGF0YSBhZnRlciB1c2UuCi0gICAgICB3YXJuaW5nc19idWYgPSBuZXcgY2hhcltzdHJsZW4od2FybmluZ3NfZW52KSArIDFdOwotICAgICAgaWYgKHdhcm5pbmdzX2J1ZiA9PSBOVUxMKQotICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoCi0gICAgICAgICAgICAgIm5vdCBlbm91Z2ggbWVtb3J5IHRvIGNvcHkgUFlUSE9OV0FSTklOR1MiKTsKLSAgICAgIHN0cmNweSh3YXJuaW5nc19idWYsIHdhcm5pbmdzX2Vudik7Ci0gICAgICBmb3IgKHdhcm5pbmcgPSBzdHJ0b2sod2FybmluZ3NfYnVmLCAiLCIpOwotICAgICAgICAgICB3YXJuaW5nICE9IE5VTEw7Ci0gICAgICAgICAgIHdhcm5pbmcgPSBzdHJ0b2soTlVMTCwgIiwiKSkKLSAgICAgICAgICBQeVN5c19BZGRXYXJuT3B0aW9uKHdhcm5pbmcpOwotICAgICAgZGVsZXRlW10gd2FybmluZ3NfYnVmOwotICB9Ci0KLSAgLy8gQWx3YXlzIGVuYWJsZSBQeXRob24gIi1zIiBvcHRpb24uIFdlIGRvbid0IG5lZWQgdXNlci1zaXRlIGRpcmVjdG9yaWVzLAotICAvLyBldmVyeXRoaW5nJ3Mgc3VwcG9zZWQgdG8gYmUgaGVybWV0aWMuCi0gIFB5X05vVXNlclNpdGVEaXJlY3RvcnkgPSAxOwotCi0gIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pOwotICBQeV9Jbml0aWFsaXplKCk7Ci0gIFB5U3lzX1NldEFyZ3ZFeChhcmdjLCBhcmd2LCAwKTsKLQotICAvLyBTZXQgc3lzLmV4ZWN1dGFibGUgdG8gTm9uZS4gVGhlIHJlYWwgZXhlY3V0YWJsZSBpcyBhdmFpbGFibGUgYXMKLSAgLy8gc3lzLmFyZ3ZbMF0sIGFuZCB0b28gbWFueSB0aGluZ3MgYXNzdW1lIHN5cy5leGVjdXRhYmxlIGlzIGEgcmVndWxhciBQeXRob24KLSAgLy8gYmluYXJ5LCB3aGljaCBpc24ndCBhdmFpbGFibGUuIEJ5IHNldHRpbmcgaXQgdG8gTm9uZSB3ZSBnZXQgY2xlYXIgZXJyb3JzCi0gIC8vIHdoZW4gcGVvcGxlIHRyeSB0byB1c2UgaXQuCi0gIGlmIChQeVN5c19TZXRPYmplY3QoY29uc3RfY2FzdDxjaGFyICo+KCJleGVjdXRhYmxlIiksIFB5X05vbmUpIDwgMCkgewotICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgcmVzdWx0ID0gMTsKLSAgICBnb3RvIGVycm9yOwotICB9Ci0KLSAgcmVzdWx0ID0gYW5kcm9pZDo6Y3B5dGhvbjI6OnB5dGhvbl9sYXVuY2hlcjo6UnVuRW50cnlQb2ludE9yTWFpbk1vZHVsZShhcmd2WzBdKTsKLSAgaWYgKHJlc3VsdCA8IDApIHsKLSAgICBQeUVycl9QcmludCgpOwotICAgIGdvdG8gZXJyb3I7Ci0gIH0KLQotZXJyb3I6Ci0gIFB5X0ZpbmFsaXplKCk7Ci0KLSAgZnJlZShhcmd2WzBdKTsKLSAgZXhpdChhYnMocmVzdWx0KSk7CisgIHJldHVybiBQeV9NYWluKGFyZ2MsIGFyZ3YpOwogfQpkaWZmIC0tZ2l0IGEvTGliL0FuZHJvaWQuYnAgYi9MaWIvQW5kcm9pZC5icAppbmRleCA1ODY1OWRjLi40OGU1Y2FhIDEwMDY0NAotLS0gYS9MaWIvQW5kcm9pZC5icAorKysgYi9MaWIvQW5kcm9pZC5icApAQCAtMjAsNiArMjAsNyBAQAogICAgICAgICAiKi5weSIsCiAgICAgICAgICJjb21waWxlci8qKi8qLnB5IiwKICAgICAgICAgImN0eXBlcy8qKi8qLnB5IiwKKyAgICAgICAgImRpc3R1dGlscy8qKi8qLnB5IiwKICAgICAgICAgImVtYWlsLyoqLyoucHkiLAogICAgICAgICAiZW5jb2RpbmdzLyoqLyoucHkiLAogICAgICAgICAiaG90c2hvdC8qKi8qLnB5IiwKQEAgLTI4LDYgKzI5LDcgQEAKICAgICAgICAgImxvZ2dpbmcvKiovKi5weSIsCiAgICAgICAgICJtdWx0aXByb2Nlc3NpbmcvKiovKi5weSIsCiAgICAgICAgICJweWRvY19kYXRhLyoqLyoucHkiLAorICAgICAgICAic3FsaXRlMy8qKi8qLnB5IiwKICAgICAgICAgInVuaXR0ZXN0LyoqLyoucHkiLAogICAgICAgICAid3NnaXJlZi8qKi8qLnB5IiwKICAgICAgICAgInhtbC8qKi8qLnB5IiwKZGlmZiAtLWdpdCBhL0xpYi9IVE1MUGFyc2VyLnB5IGIvTGliL0hUTUxQYXJzZXIucHkKaW5kZXggM2Y5NzgzMC4uZmI5MzgwZSAxMDA2NDQKLS0tIGEvTGliL0hUTUxQYXJzZXIucHkKKysrIGIvTGliL0hUTUxQYXJzZXIucHkKQEAgLTQ2MiwxMSArNDYyLDEyIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgQ2Fubm90IHVzZSBuYW1lMmNvZGVwb2ludCBkaXJlY3RseSwgYmVjYXVzZSBIVE1MUGFyc2VyIHN1cHBvcnRzIGFwb3MsCiAgICAgICAgICAgICAgICAgIyB3aGljaCBpcyBub3QgcGFydCBvZiBIVE1MIDQKLSAgICAgICAgICAgICAgICBpbXBvcnQgaHRtbGVudGl0eWRlZnMKICAgICAgICAgICAgICAgICBpZiBIVE1MUGFyc2VyLmVudGl0eWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZW50aXR5ZGVmcyA9IEhUTUxQYXJzZXIuZW50aXR5ZGVmcyA9IHsnYXBvcyc6dSInIn0KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGh0bWxlbnRpdHlkZWZzCisgICAgICAgICAgICAgICAgICAgIGVudGl0eWRlZnMgPSB7J2Fwb3MnOnUiJyJ9CiAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGh0bWxlbnRpdHlkZWZzLm5hbWUyY29kZXBvaW50Lml0ZXJpdGVtcygpOgogICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5ZGVmc1trXSA9IHVuaWNocih2KQorICAgICAgICAgICAgICAgICAgICBIVE1MUGFyc2VyLmVudGl0eWRlZnMgPSBlbnRpdHlkZWZzCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5lbnRpdHlkZWZzW3NdCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL19weWlvLnB5IGIvTGliL19weWlvLnB5CmluZGV4IGYwMjJhNGUuLjk4YzJkNTggMTAwNjQ0Ci0tLSBhL0xpYi9fcHlpby5weQorKysgYi9MaWIvX3B5aW8ucHkKQEAgLTE2MTksNiArMTYxOSw3IEBACiAgICAgICAgIHNlbGYuYnVmZmVyLndyaXRlKGIpCiAgICAgICAgIGlmIHNlbGYuX2xpbmVfYnVmZmVyaW5nIGFuZCAoaGFzbGYgb3IgIlxyIiBpbiBzKToKICAgICAgICAgICAgIHNlbGYuZmx1c2goKQorICAgICAgICBzZWxmLl9zZXRfZGVjb2RlZF9jaGFycygnJykKICAgICAgICAgc2VsZi5fc25hcHNob3QgPSBOb25lCiAgICAgICAgIGlmIHNlbGYuX2RlY29kZXI6CiAgICAgICAgICAgICBzZWxmLl9kZWNvZGVyLnJlc2V0KCkKZGlmZiAtLWdpdCBhL0xpYi9fc3RycHRpbWUucHkgYi9MaWIvX3N0cnB0aW1lLnB5CmluZGV4IGZlYWMwNWEuLjhlYjI3MTggMTAwNjQ0Ci0tLSBhL0xpYi9fc3RycHRpbWUucHkKKysrIGIvTGliL19zdHJwdGltZS5weQpAQCAtMjU0LDggKzI1NCw4IEBACiAgICAgICAgICMgZm9ybWF0IGRpcmVjdGl2ZXMgKCVtLCBldGMuKS4KICAgICAgICAgcmVnZXhfY2hhcnMgPSByZV9jb21waWxlKHIiKFtcXC5eJCorP1woXCl7fVxbXF18XSkiKQogICAgICAgICBmb3JtYXQgPSByZWdleF9jaGFycy5zdWIociJcXFwxIiwgZm9ybWF0KQotICAgICAgICB3aGl0ZXNwYWNlX3JlcGxhY2VtZW50ID0gcmVfY29tcGlsZSgnXHMrJykKLSAgICAgICAgZm9ybWF0ID0gd2hpdGVzcGFjZV9yZXBsYWNlbWVudC5zdWIoJ1xzKycsIGZvcm1hdCkKKyAgICAgICAgd2hpdGVzcGFjZV9yZXBsYWNlbWVudCA9IHJlX2NvbXBpbGUocidccysnKQorICAgICAgICBmb3JtYXQgPSB3aGl0ZXNwYWNlX3JlcGxhY2VtZW50LnN1YihyJ1xccysnLCBmb3JtYXQpCiAgICAgICAgIHdoaWxlICclJyBpbiBmb3JtYXQ6CiAgICAgICAgICAgICBkaXJlY3RpdmVfaW5kZXggPSBmb3JtYXQuaW5kZXgoJyUnKSsxCiAgICAgICAgICAgICBwcm9jZXNzZWRfZm9ybWF0ID0gIiVzJXMlcyIgJSAocHJvY2Vzc2VkX2Zvcm1hdCwKZGlmZiAtLWdpdCBhL0xpYi9fdGhyZWFkaW5nX2xvY2FsLnB5IGIvTGliL190aHJlYWRpbmdfbG9jYWwucHkKaW5kZXggMDlhMzUxNS4uMTQ4MDMyOSAxMDA2NDQKLS0tIGEvTGliL190aHJlYWRpbmdfbG9jYWwucHkKKysrIGIvTGliL190aHJlYWRpbmdfbG9jYWwucHkKQEAgLTU3LDExICs1Nyw3IEBACiAKICAgPj4+IGNsYXNzIE15TG9jYWwobG9jYWwpOgogICAuLi4gICAgIG51bWJlciA9IDIKLSAgLi4uICAgICBpbml0aWFsaXplZCA9IEZhbHNlCiAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsICoqa3cpOgotICAuLi4gICAgICAgICBpZiBzZWxmLmluaXRpYWxpemVkOgotICAuLi4gICAgICAgICAgICAgcmFpc2UgU3lzdGVtRXJyb3IoJ19faW5pdF9fIGNhbGxlZCB0b28gbWFueSB0aW1lcycpCi0gIC4uLiAgICAgICAgIHNlbGYuaW5pdGlhbGl6ZWQgPSBUcnVlCiAgIC4uLiAgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGt3KQogICAuLi4gICAgIGRlZiBzcXVhcmVkKHNlbGYpOgogICAuLi4gICAgICAgICByZXR1cm4gc2VsZi5udW1iZXIgKiogMgpAQCAtOTgsNyArOTQsNyBAQAogICA+Pj4gdGhyZWFkLnN0YXJ0KCkKICAgPj4+IHRocmVhZC5qb2luKCkKICAgPj4+IGxvZwotICBbWygnY29sb3InLCAncmVkJyksICgnaW5pdGlhbGl6ZWQnLCBUcnVlKV0sIDExXQorICBbWygnY29sb3InLCAncmVkJyldLCAxMV0KIAogd2l0aG91dCBhZmZlY3RpbmcgdGhpcyB0aHJlYWQncyBkYXRhOgogCmRpZmYgLS1naXQgYS9MaWIvYWlmYy5weSBiL0xpYi9haWZjLnB5CmluZGV4IGM5YTAyMWUuLjk4MWY4MDEgMTAwNjQ0Ci0tLSBhL0xpYi9haWZjLnB5CisrKyBiL0xpYi9haWZjLnB5CkBAIC0yODgsNiArMjg4LDggQEAKICAgICAjIF9zc25kX2NodW5rIC0tIGluc3RhbnRpYXRpb24gb2YgYSBjaHVuayBjbGFzcyBmb3IgdGhlIFNTTkQgY2h1bmsKICAgICAjIF9mcmFtZXNpemUgLS0gc2l6ZSBvZiBvbmUgZnJhbWUgaW4gdGhlIGZpbGUKIAorICAgIF9maWxlID0gTm9uZSAgIyBTZXQgaGVyZSBzaW5jZSBfX2RlbF9fIGNoZWNrcyBpdAorCiAgICAgZGVmIGluaXRmcChzZWxmLCBmaWxlKToKICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IDAKICAgICAgICAgc2VsZi5fZGVjb21wID0gTm9uZQpAQCAtMzA2LDYgKzMwOCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBFcnJvciwgJ25vdCBhbiBBSUZGIG9yIEFJRkYtQyBmaWxlJwogICAgICAgICBzZWxmLl9jb21tX2NodW5rX3JlYWQgPSAwCisgICAgICAgIHNlbGYuX3NzbmRfY2h1bmsgPSBOb25lCiAgICAgICAgIHdoaWxlIDE6CiAgICAgICAgICAgICBzZWxmLl9zc25kX3NlZWtfbmVlZGVkID0gMQogICAgICAgICAgICAgdHJ5OgpAQCAtMzQxLDEwICszNDQsMTYgQEAKICAgICAgICAgICAgIHNlbGYuX2RlY29tcC5TZXRQYXJhbXMocGFyYW1zKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGYpOgotICAgICAgICBpZiB0eXBlKGYpID09IHR5cGUoJycpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGYsIGJhc2VzdHJpbmcpOgogICAgICAgICAgICAgZiA9IF9fYnVpbHRpbl9fLm9wZW4oZiwgJ3JiJykKLSAgICAgICAgIyBlbHNlLCBhc3N1bWUgaXQgaXMgYW4gb3BlbiBmaWxlIG9iamVjdCBhbHJlYWR5Ci0gICAgICAgIHNlbGYuaW5pdGZwKGYpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5pbml0ZnAoZikKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBhc3N1bWUgaXQgaXMgYW4gb3BlbiBmaWxlIG9iamVjdCBhbHJlYWR5CisgICAgICAgICAgICBzZWxmLmluaXRmcChmKQogCiAgICAgIwogICAgICMgVXNlciB2aXNpYmxlIG1ldGhvZHMuCkBAIC01NjIsOCArNTcxLDEwIEBACiAgICAgIyBfZGF0YWxlbmd0aCAtLSB0aGUgc2l6ZSBvZiB0aGUgYXVkaW8gc2FtcGxlcyB3cml0dGVuIHRvIHRoZSBoZWFkZXIKICAgICAjIF9kYXRhd3JpdHRlbiAtLSB0aGUgc2l6ZSBvZiB0aGUgYXVkaW8gc2FtcGxlcyBhY3R1YWxseSB3cml0dGVuCiAKKyAgICBfZmlsZSA9IE5vbmUgICMgU2V0IGhlcmUgc2luY2UgX19kZWxfXyBjaGVja3MgaXQKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmKToKLSAgICAgICAgaWYgdHlwZShmKSA9PSB0eXBlKCcnKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShmLCBiYXNlc3RyaW5nKToKICAgICAgICAgICAgIGZpbGVuYW1lID0gZgogICAgICAgICAgICAgZiA9IF9fYnVpbHRpbl9fLm9wZW4oZiwgJ3diJykKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9hcmdwYXJzZS5weSBiL0xpYi9hcmdwYXJzZS5weQppbmRleCAxYjIzM2I4Li5kMDAwNDg2IDEwMDY0NAotLS0gYS9MaWIvYXJncGFyc2UucHkKKysrIGIvTGliL2FyZ3BhcnNlLnB5CkBAIC0zMjQsNyArMzI0LDExIEBACiAgICAgICAgICAgICBpZiBsZW4ocHJlZml4KSArIGxlbih1c2FnZSkgPiB0ZXh0X3dpZHRoOgogCiAgICAgICAgICAgICAgICAgIyBicmVhayB1c2FnZSBpbnRvIHdyYXBwYWJsZSBwYXJ0cwotICAgICAgICAgICAgICAgIHBhcnRfcmVnZXhwID0gcidcKC4qP1wpK3xcWy4qP1xdK3xcUysnCisgICAgICAgICAgICAgICAgcGFydF9yZWdleHAgPSAoCisgICAgICAgICAgICAgICAgICAgIHInXCguKj9cKSsoPz1cc3wkKXwnCisgICAgICAgICAgICAgICAgICAgIHInXFsuKj9cXSsoPz1cc3wkKXwnCisgICAgICAgICAgICAgICAgICAgIHInXFMrJworICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICBvcHRfdXNhZ2UgPSBmb3JtYXQob3B0aW9uYWxzLCBncm91cHMpCiAgICAgICAgICAgICAgICAgcG9zX3VzYWdlID0gZm9ybWF0KHBvc2l0aW9uYWxzLCBncm91cHMpCiAgICAgICAgICAgICAgICAgb3B0X3BhcnRzID0gX3JlLmZpbmRhbGwocGFydF9yZWdleHAsIG9wdF91c2FnZSkKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2hhdC5weSBiL0xpYi9hc3luY2hhdC5weQppbmRleCA1NzQ1OWEwLi4zOTJlZTYxIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNoYXQucHkKKysrIGIvTGliL2FzeW5jaGF0LnB5CkBAIC0xMzMsNyArMTMzLDcgQEAKICAgICAgICAgICAgICAgICAjIG5vIHRlcm1pbmF0b3IsIGNvbGxlY3QgaXQgYWxsCiAgICAgICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2luY29taW5nX2RhdGEgKHNlbGYuYWNfaW5fYnVmZmVyKQogICAgICAgICAgICAgICAgIHNlbGYuYWNfaW5fYnVmZmVyID0gJycKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh0ZXJtaW5hdG9yLCBpbnQpIG9yIGlzaW5zdGFuY2UodGVybWluYXRvciwgbG9uZyk6CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodGVybWluYXRvciwgKGludCwgbG9uZykpOgogICAgICAgICAgICAgICAgICMgbnVtZXJpYyB0ZXJtaW5hdG9yCiAgICAgICAgICAgICAgICAgbiA9IHRlcm1pbmF0b3IKICAgICAgICAgICAgICAgICBpZiBsYiA8IG46CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNvcmUucHkgYi9MaWIvYXN5bmNvcmUucHkKaW5kZXggMjkwOTliZC4uMTA1OTgyZiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jb3JlLnB5CisrKyBiL0xpYi9hc3luY29yZS5weQpAQCAtNjMzLDcgKzYzMywxMSBAQAogICAgICAgICB3cml0ZSA9IHNlbmQKIAogICAgICAgICBkZWYgY2xvc2Uoc2VsZik6Ci0gICAgICAgICAgICBvcy5jbG9zZShzZWxmLmZkKQorICAgICAgICAgICAgaWYgc2VsZi5mZCA8IDA6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBmZCA9IHNlbGYuZmQKKyAgICAgICAgICAgIHNlbGYuZmQgPSAtMQorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCiAKICAgICAgICAgZGVmIGZpbGVubyhzZWxmKToKICAgICAgICAgICAgIHJldHVybiBzZWxmLmZkCmRpZmYgLS1naXQgYS9MaWIvYnNkZGIvdGVzdC90ZXN0X2Fzc29jaWF0ZS5weSBiL0xpYi9ic2RkYi90ZXN0L3Rlc3RfYXNzb2NpYXRlLnB5CmluZGV4IDdhNDllMTEuLjRhOGQyYWUgMTAwNjQ0Ci0tLSBhL0xpYi9ic2RkYi90ZXN0L3Rlc3RfYXNzb2NpYXRlLnB5CisrKyBiL0xpYi9ic2RkYi90ZXN0L3Rlc3RfYXNzb2NpYXRlLnB5CkBAIC0xMTQsNiArMTE0LDIyIEBACiAgICAgICAgICAgICBkdXBEQi5jbG9zZSgpCiAgICAgICAgICAgICBzZWxmLmZhaWwoIkRCRXJyb3IgZXhjZXB0aW9uIHdhcyBleHBlY3RlZCIpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhkYi52ZXJzaW9uKCkgPj0gKDQsIDYpLCAnTmVlZHMgNC42KycpCisgICAgZGVmIHRlc3RfYXNzb2NpYXRlTGlzdEVycm9yKHNlbGYpOgorICAgICAgICBkYjEgPSBkYi5EQihzZWxmLmVudikKKyAgICAgICAgZGIxLm9wZW4oJ2JhZC5kYicsICJhLmRiIiwgZGIuREJfQlRSRUUsIGRiLkRCX0NSRUFURSkKKyAgICAgICAgZGIyID0gZGIuREIoc2VsZi5lbnYpCisgICAgICAgIGRiMi5vcGVuKCdiYWQuZGInLCAiYi5kYiIsIGRiLkRCX0JUUkVFLCBkYi5EQl9DUkVBVEUpCisKKyAgICAgICAgZGIxLmFzc29jaWF0ZShkYjIsIGxhbWJkYSBhLCBiOiBbMF0pCisKKyAgICAgICAgbXNnID0gIlR5cGVFcnJvcjogVGhlIGxpc3QgcmV0dXJuZWQgYnkgREItPmFzc29jaWF0ZSBjYWxsYmFjayIgXAorICAgICAgICAgICAgICAiIHNob3VsZCBiZSBhIGxpc3Qgb2Ygc3RyaW5ncy4iCisgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LmNhcHR1cmVkX291dHB1dCgic3RkZXJyIikgYXMgczoKKyAgICAgICAgICAgIGRiMS5wdXQoIjAiLCAiMSIpCisgICAgICAgIGRiMS5jbG9zZSgpCisgICAgICAgIGRiMi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHMuZ2V0dmFsdWUoKS5zdHJpcCgpLCBtc2cpCiAKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTIzMyw3ICsyNDksNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHMsIE5vbmUsIHZhbHMpCiAKICAgICAgICAgdmFscyA9IHNlY0RCLnBnZXQoJ1Vua25vd24nLCB0eG49dHhuKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsc1swXSA9PSA5OSBvciB2YWxzWzBdID09ICc5OScsIHZhbHMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odmFsc1swXSwgKDk5LCAnOTknKSwgdmFscykKICAgICAgICAgdmFsc1sxXS5pbmRleCgnVW5rbm93bicpCiAgICAgICAgIHZhbHNbMV0uaW5kZXgoJ1VubmFtZWQnKQogICAgICAgICB2YWxzWzFdLmluZGV4KCd1bmtub3duJykKQEAgLTI0Nyw3ICsyNjMsOCBAQAogICAgICAgICAgICAgaWYgdHlwZShzZWxmLmtleXR5cGUpID09IHR5cGUoJycpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpbnQocmVjWzBdKSkgICMgZm9yIHByaW1hcnkgZGIsIGtleSBpcyBhIG51bWJlcgogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVjWzBdIGFuZCB0eXBlKHJlY1swXSkgPT0gdHlwZSgwKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmVjWzBdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyZWNbMF0pLCBpbnQpCiAgICAgICAgICAgICBjb3VudCA9IGNvdW50ICsgMQogICAgICAgICAgICAgaWYgdmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCByZWMKQEAgLTI2Miw3ICsyNzksNyBAQAogCiAgICAgICAgICMgdGVzdCBjdXJzb3IgcGdldAogICAgICAgICB2YWxzID0gc2VsZi5jdXIucGdldCgnVW5rbm93bicsIGZsYWdzPWRiLkRCX0xBU1QpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2YWxzWzFdID09IDk5IG9yIHZhbHNbMV0gPT0gJzk5JywgdmFscykKKyAgICAgICAgc2VsZi5hc3NlcnRJbih2YWxzWzFdLCAoOTksICc5OScpLCB2YWxzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHNbMF0sICdVbmtub3duJykKICAgICAgICAgdmFsc1syXS5pbmRleCgnVW5rbm93bicpCiAgICAgICAgIHZhbHNbMl0uaW5kZXgoJ1VubmFtZWQnKQpkaWZmIC0tZ2l0IGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9iYXNpY3MucHkgYi9MaWIvYnNkZGIvdGVzdC90ZXN0X2Jhc2ljcy5weQppbmRleCAxNDU5ZDM2Li42YjhjZjdkIDEwMDY0NAotLS0gYS9MaWIvYnNkZGIvdGVzdC90ZXN0X2Jhc2ljcy5weQorKysgYi9MaWIvYnNkZGIvdGVzdC90ZXN0X2Jhc2ljcy5weQpAQCAtNTk3LDcgKzU5Nyw3IEBACiAKICAgICAgICAgZC5wdXQoImFiY2RlIiwgIkFCQ0RFIik7CiAgICAgICAgIG51bSA9IGQudHJ1bmNhdGUoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobnVtID49IDEsICJ0cnVuY2F0ZSByZXR1cm5lZCA8PSAwIG9uIG5vbi1lbXB0eSBkYXRhYmFzZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKG51bSwgMSwgInRydW5jYXRlIHJldHVybmVkIDw9IDAgb24gbm9uLWVtcHR5IGRhdGFiYXNlIikKICAgICAgICAgbnVtID0gZC50cnVuY2F0ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtLCAwLAogICAgICAgICAgICAgICAgICJ0cnVuY2F0ZSBvbiBlbXB0eSBEQiByZXR1cm5lZCBub256ZXJvICglcikiICUgKG51bSwpKQpAQCAtNjE2LDkgKzYxNiw5IEBACiAgICAgaWYgZGIudmVyc2lvbigpID49ICg0LCA2KToKICAgICAgICAgZGVmIHRlc3QwOF9leGlzdHMoc2VsZikgOgogICAgICAgICAgICAgc2VsZi5kLnB1dCgiYWJjZGUiLCAiQUJDREUiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZC5leGlzdHMoImFiY2RlIikgPT0gVHJ1ZSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kLmV4aXN0cygiYWJjZGUiKSwgVHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgIkRCLT5leGlzdHMoKSByZXR1cm5zIHdyb25nIHZhbHVlIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmQuZXhpc3RzKCJ4IikgPT0gRmFsc2UsCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZC5leGlzdHMoIngiKSwgRmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICJEQi0+ZXhpc3RzKCkgcmV0dXJucyB3cm9uZyB2YWx1ZSIpCiAKICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNzczLDcgKzc3Myw3IEBACiAgICAgICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgICAgIHByaW50ICdsb2cgZmlsZTogJyArIGxvZwogICAgICAgICAgICAgbG9ncyA9IHNlbGYuZW52LmxvZ19hcmNoaXZlKGRiLkRCX0FSQ0hfUkVNT1ZFKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCBsb2dzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShsb2dzKQogCiAgICAgICAgIHNlbGYudHhuID0gc2VsZi5lbnYudHhuX2JlZ2luKCkKIApAQCAtNzg1LDkgKzc4NSw5IEBACiAgICAgICAgICAgICBzZWxmLmQucHV0KCJhYmNkZSIsICJBQkNERSIsIHR4bj10eG4pCiAgICAgICAgICAgICB0eG4uY29tbWl0KCkKICAgICAgICAgICAgIHR4biA9IHNlbGYuZW52LnR4bl9iZWdpbigpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kLmV4aXN0cygiYWJjZGUiLCB0eG49dHhuKSA9PSBUcnVlLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmQuZXhpc3RzKCJhYmNkZSIsIHR4bj10eG4pLCBUcnVlLAogICAgICAgICAgICAgICAgICAgICAiREItPmV4aXN0cygpIHJldHVybnMgd3JvbmcgdmFsdWUiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZC5leGlzdHMoIngiLCB0eG49dHhuKSA9PSBGYWxzZSwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kLmV4aXN0cygieCIsIHR4bj10eG4pLCBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAgIkRCLT5leGlzdHMoKSByZXR1cm5zIHdyb25nIHZhbHVlIikKICAgICAgICAgICAgIHR4bi5hYm9ydCgpCiAKQEAgLTgwMiw3ICs4MDIsNyBAQAogICAgICAgICBkLnB1dCgiYWJjZGUiLCAiQUJDREUiKTsKICAgICAgICAgdHhuID0gc2VsZi5lbnYudHhuX2JlZ2luKCkKICAgICAgICAgbnVtID0gZC50cnVuY2F0ZSh0eG4pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShudW0gPj0gMSwgInRydW5jYXRlIHJldHVybmVkIDw9IDAgb24gbm9uLWVtcHR5IGRhdGFiYXNlIikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobnVtLCAxLCAidHJ1bmNhdGUgcmV0dXJuZWQgPD0gMCBvbiBub24tZW1wdHkgZGF0YWJhc2UiKQogICAgICAgICBudW0gPSBkLnRydW5jYXRlKHR4bikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChudW0sIDAsCiAgICAgICAgICAgICAgICAgInRydW5jYXRlIG9uIGVtcHR5IERCIHJldHVybmVkIG5vbnplcm8gKCVyKSIgJSAobnVtLCkpCkBAIC0xMDg2LDcgKzEwODYsNyBAQAogICAgICAgICBhID0gImV4YW1wbGUgb2YgcHJpdmF0ZSBvYmplY3QiCiAgICAgICAgIHNlbGYub2JqLnNldF9wcml2YXRlKGEpCiAgICAgICAgIGIgPSBzZWxmLm9iai5nZXRfcHJpdmF0ZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhIGlzIGIpICAjIE9iamVjdCBpZGVudGl0eQorICAgICAgICBzZWxmLmFzc2VydElzKGEsIGIpICAjIE9iamVjdCBpZGVudGl0eQogCiAgICAgZGVmIHRlc3QwM19sZWFrX2Fzc2lnbm1lbnQoc2VsZikgOgogICAgICAgICBhID0gImV4YW1wbGUgb2YgcHJpdmF0ZSBvYmplY3QiCmRpZmYgLS1naXQgYS9MaWIvYnNkZGIvdGVzdC90ZXN0X2RiZW52LnB5IGIvTGliL2JzZGRiL3Rlc3QvdGVzdF9kYmVudi5weQppbmRleCA3NmVmN2RiLi41NDI5Y2E1IDEwMDY0NAotLS0gYS9MaWIvYnNkZGIvdGVzdC90ZXN0X2RiZW52LnB5CisrKyBiL0xpYi9ic2RkYi90ZXN0L3Rlc3RfZGJlbnYucHkKQEAgLTU0LDE1ICs1NCwxNSBAQAogICAgICAgICAgICAgICAgIHNlbGYuZW52LnNldF9jYWNoZV9tYXgoMCwgc2l6ZSkKICAgICAgICAgICAgICAgICBzaXplMiA9IHNlbGYuZW52LmdldF9jYWNoZV9tYXgoKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgc2l6ZTJbMF0pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNpemUgPD0gc2l6ZTJbMV0pCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDIqc2l6ZSA+IHNpemUyWzFdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHNpemUsIHNpemUyWzFdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcigyKnNpemUsIHNpemUyWzFdKQogCiAgICAgaWYgZGIudmVyc2lvbigpID49ICg0LCA0KSA6CiAgICAgICAgIGRlZiB0ZXN0X211dGV4X3N0YXQoc2VsZikgOgogICAgICAgICAgICAgc2VsZi5lbnYub3BlbihzZWxmLmhvbWVEaXIsIGRiLkRCX0NSRUFURSB8IGRiLkRCX0lOSVRfTVBPT0wgfAogICAgICAgICAgICAgICAgICAgICBkYi5EQl9JTklUX0xPQ0spCiAgICAgICAgICAgICBzdGF0ID0gc2VsZi5lbnYubXV0ZXhfc3RhdCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoIm11dGV4X2ludXNlX21heCIgaW4gc3RhdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm11dGV4X2ludXNlX21heCIsIHN0YXQpCiAKICAgICAgICAgZGVmIHRlc3RfbGdfZmlsZW1vZGUoc2VsZikgOgogICAgICAgICAgICAgZm9yIGkgaW4gWzA2MDAsIDA2NjAsIDA2NjZdIDoKQEAgLTEyOCw4ICsxMjgsOCBAQAogICAgICAgICAgICAgICAgIGkgPSBpKjEwMjQqMTAyNAogICAgICAgICAgICAgICAgIHNlbGYuZW52LnNldF9sZ19yZWdpb25tYXgoaSkKICAgICAgICAgICAgICAgICBqID0gc2VsZi5lbnYuZ2V0X2xnX3JlZ2lvbm1heCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGkgPD0gaikKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoMippID4gaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChpLCBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcigyKmksIGopCiAKICAgICAgICAgZGVmIHRlc3RfbGtfZGV0ZWN0KHNlbGYpIDoKICAgICAgICAgICAgIGZsYWdzPSBbZGIuREJfTE9DS19ERUZBVUxULCBkYi5EQl9MT0NLX0VYUElSRSwgZGIuREJfTE9DS19NQVhMT0NLUywKQEAgLTE1MCwxMCArMTUwLDEwIEBACiAgICAgICAgIGRlZiB0ZXN0X2xnX2JzaXplKHNlbGYpIDoKICAgICAgICAgICAgIGxvZ19zaXplID0gNzAqMTAyNAogICAgICAgICAgICAgc2VsZi5lbnYuc2V0X2xnX2JzaXplKGxvZ19zaXplKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZW52LmdldF9sZ19ic2l6ZSgpID49IGxvZ19zaXplKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZW52LmdldF9sZ19ic2l6ZSgpIDwgNCpsb2dfc2l6ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlbGYuZW52LmdldF9sZ19ic2l6ZSgpLCBsb2dfc2l6ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzZWxmLmVudi5nZXRfbGdfYnNpemUoKSwgNCpsb2dfc2l6ZSkKICAgICAgICAgICAgIHNlbGYuZW52LnNldF9sZ19ic2l6ZSg0KmxvZ19zaXplKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZW52LmdldF9sZ19ic2l6ZSgpID49IDQqbG9nX3NpemUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzZWxmLmVudi5nZXRfbGdfYnNpemUoKSwgNCpsb2dfc2l6ZSkKIAogICAgICAgICBkZWYgdGVzdF9zZXRnZXRfZGF0YV9kaXJzKHNlbGYpIDoKICAgICAgICAgICAgIGRpcnMgPSAoImEiLCAiYiIsICJjIiwgImQiKQpAQCAtMTg1LDcgKzE4NSw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhY2hlc2l6ZTJbMF0sIGNhY2hlc2l6ZTNbMF0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhY2hlc2l6ZTJbMl0sIGNhY2hlc2l6ZTNbMl0pCiAgICAgICAgICAgICAjIEluIEJlcmtlbGV5IERCIDUuMSwgdGhlIGNhY2hlc2l6ZSBjYW4gY2hhbmdlIHdoZW4gb3BlbmluZyB0aGUgRW52Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2FjaGVzaXplMlsxXSA8PSBjYWNoZXNpemUzWzFdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoY2FjaGVzaXplMlsxXSwgY2FjaGVzaXplM1sxXSkKIAogICAgICAgICBkZWYgdGVzdF9zZXRfY2FjaGVzaXplX2RiZW52X2RiKHNlbGYpIDoKICAgICAgICAgICAgICMgWW91IGNhbiBub3QgY29uZmlndXJlIHRoZSBjYWNoZXNpemUgdXNpbmcKQEAgLTI5OSw3ICsyOTksNyBAQAogICAgICAgICAgICAgbXNnID0gIlRoaXMgaXMgYSB0ZXN0Li4uIgogICAgICAgICAgICAgc2VsZi5lbnYubG9nX3ByaW50Zihtc2cpCiAgICAgICAgICAgICBsb2djID0gc2VsZi5lbnYubG9nX2N1cnNvcigpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobXNnIGluIChsb2djLmxhc3QoKVsxXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKG1zZywgbG9nYy5sYXN0KClbMV0pCiAKICAgICBpZiBkYi52ZXJzaW9uKCkgPj0gKDQsIDcpIDoKICAgICAgICAgZGVmIHRlc3RfbG9nX2NvbmZpZyhzZWxmKSA6CkBAIC0zNDEsMjEgKzM0MSwyMSBAQAogICAgICAgICAgICAgdHhuLmNvbW1pdCgpCiAgICAgICAgICAgICBsb2djID0gc2VsZi5lbnYubG9nX2N1cnNvcigpCiAgICAgICAgICAgICBsb2djLmxhc3QoKSAgIyBTa2lwIHRoZSBjb21taXQKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtc2cgaW4gKGxvZ2MucHJldigpWzFdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obXNnLCBsb2djLnByZXYoKVsxXSkKIAogICAgICAgICAgICAgbXNnID0gIlRoaXMgaXMgYW5vdGhlciB0ZXN0Li4uIgogICAgICAgICAgICAgdHhuID0gc2VsZi5lbnYudHhuX2JlZ2luKCkKICAgICAgICAgICAgIHNlbGYuZW52LmxvZ19wcmludGYobXNnLCB0eG49dHhuKQogICAgICAgICAgICAgdHhuLmFib3J0KCkgICMgRG8gbm90IHN0b3JlIHRoZSBuZXcgbWVzc2FnZQogICAgICAgICAgICAgbG9nYy5sYXN0KCkgICMgU2tpcCB0aGUgYWJvcnQKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtc2cgbm90IGluIChsb2djLnByZXYoKVsxXSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKG1zZywgbG9nYy5wcmV2KClbMV0pCiAKICAgICAgICAgICAgIG1zZyA9ICJUaGlzIGlzIGEgdGhpcmQgdGVzdC4uLiIKICAgICAgICAgICAgIHR4biA9IHNlbGYuZW52LnR4bl9iZWdpbigpCiAgICAgICAgICAgICBzZWxmLmVudi5sb2dfcHJpbnRmKG1zZywgdHhuPXR4bikKICAgICAgICAgICAgIHR4bi5jb21taXQoKSAgIyBEbyBub3Qgc3RvcmUgdGhlIG5ldyBtZXNzYWdlCiAgICAgICAgICAgICBsb2djLmxhc3QoKSAgIyBTa2lwIHRoZSBjb21taXQKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtc2cgaW4gKGxvZ2MucHJldigpWzFdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obXNnLCBsb2djLnByZXYoKVsxXSkKIAogCiBjbGFzcyBEQkVudl9tZW1wKERCRW52KToKQEAgLTM3MiwzOSArMzcyLDM5IEBACiAKICAgICBkZWYgdGVzdF9tZW1wXzFfdHJpY2tsZShzZWxmKSA6CiAgICAgICAgIHNlbGYuZGIucHV0KCJoaSIsICJieWUiKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5lbnYubWVtcF90cmlja2xlKDEwMCkgPiAwKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2VsZi5lbnYubWVtcF90cmlja2xlKDEwMCksIDApCiAKICMgUHJlc2VydmUgdGhlIG9yZGVyLCBkbyAibWVtcF90cmlja2xlIiB0ZXN0IGZpcnN0CiAgICAgZGVmIHRlc3RfbWVtcF8yX3N5bmMoc2VsZikgOgogICAgICAgICBzZWxmLmRiLnB1dCgiaGkiLCAiYnllIikKICAgICAgICAgc2VsZi5lbnYubWVtcF9zeW5jKCkgICMgRnVsbCBmbHVzaAogICAgICAgICAjIE5vdGhpbmcgdG8gZG8uLi4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZW52Lm1lbXBfdHJpY2tsZSgxMDApID09IDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5lbnYubWVtcF90cmlja2xlKDEwMCksIDApCiAKICAgICAgICAgc2VsZi5kYi5wdXQoImhpIiwgImJ5ZTIiKQogICAgICAgICBzZWxmLmVudi5tZW1wX3N5bmMoKDEsIDApKSAgIyBOT1AsIHByb2JhYmx5CiAgICAgICAgICMgU29tZXRoaW5nIHRvIGRvLi4uIG9yIG5vdAotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5lbnYubWVtcF90cmlja2xlKDEwMCkgPj0gMCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoc2VsZi5lbnYubWVtcF90cmlja2xlKDEwMCksIDApCiAKICAgICAgICAgc2VsZi5kYi5wdXQoImhpIiwgImJ5ZTMiKQogICAgICAgICBzZWxmLmVudi5tZW1wX3N5bmMoKDEyMywgOTkpKSAgIyBGdWxsIGZsdXNoCiAgICAgICAgICMgTm90aGluZyB0byBkby4uLgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5lbnYubWVtcF90cmlja2xlKDEwMCkgPT0gMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmVudi5tZW1wX3RyaWNrbGUoMTAwKSwgMCkKIAogICAgIGRlZiB0ZXN0X21lbXBfc3RhdF8xKHNlbGYpIDoKICAgICAgICAgc3RhdHMgPSBzZWxmLmVudi5tZW1wX3N0YXQoKSAgIyBObyBwYXJhbQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHN0YXRzKT09MikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJjYWNoZV9taXNzIiBpbiBzdGF0c1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3RhdHMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEluKCJjYWNoZV9taXNzIiwgc3RhdHNbMF0pCiAgICAgICAgIHN0YXRzID0gc2VsZi5lbnYubWVtcF9zdGF0KGRiLkRCX1NUQVRfQ0xFQVIpICAjIFBvc2l0aW9uYWwgcGFyYW0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJjYWNoZV9taXNzIiBpbiBzdGF0c1swXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigiY2FjaGVfbWlzcyIsIHN0YXRzWzBdKQogICAgICAgICBzdGF0cyA9IHNlbGYuZW52Lm1lbXBfc3RhdChmbGFncz0wKSAgIyBLZXl3b3JkIHBhcmFtCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiY2FjaGVfbWlzcyIgaW4gc3RhdHNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oImNhY2hlX21pc3MiLCBzdGF0c1swXSkKIAogICAgIGRlZiB0ZXN0X21lbXBfc3RhdF8yKHNlbGYpIDoKICAgICAgICAgc3RhdHM9c2VsZi5lbnYubWVtcF9zdGF0KClbMV0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihzdGF0cykpPT0xCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgidGVzdCIgaW4gc3RhdHMpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgicGFnZV9pbiIgaW4gc3RhdHNbInRlc3QiXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oc3RhdHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEluKCJ0ZXN0Iiwgc3RhdHMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInBhZ2VfaW4iLCBzdGF0c1sidGVzdCJdKQogCiBjbGFzcyBEQkVudl9sb2djdXJzb3IoREJFbnYpOgogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTQyNiwyOCArNDI2LDI4IEBACiAgICAgICAgIERCRW52LnRlYXJEb3duKHNlbGYpCiAKICAgICBkZWYgX2NoZWNrX3JldHVybihzZWxmLCB2YWx1ZSkgOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmFsdWUsIHR1cGxlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih2YWx1ZSksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHZhbHVlWzBdLCB0dXBsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2YWx1ZVswXSwgdHVwbGUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHZhbHVlWzBdKSwgMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UodmFsdWVbMF1bMF0sIGludCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKHZhbHVlWzBdWzFdLCBpbnQpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZSh2YWx1ZVsxXSwgc3RyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHZhbHVlWzBdWzBdLCBpbnQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh2YWx1ZVswXVsxXSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmFsdWVbMV0sIHN0cikKIAogICAgICMgUHJlc2VydmUgdGVzdCBvcmRlcgogICAgIGRlZiB0ZXN0XzFfZmlyc3Qoc2VsZikgOgogICAgICAgICBsb2djID0gc2VsZi5lbnYubG9nX2N1cnNvcigpCiAgICAgICAgIHYgPSBsb2djLmZpcnN0KCkKICAgICAgICAgc2VsZi5fY2hlY2tfcmV0dXJuKHYpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgoMSwgMSkgPCB2WzBdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHZbMV0pPjApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcygoMSwgMSksIHZbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4odlsxXSksIDApCiAKICAgICBkZWYgdGVzdF8yX2xhc3Qoc2VsZikgOgogICAgICAgICBsb2djID0gc2VsZi5lbnYubG9nX2N1cnNvcigpCiAgICAgICAgIGxzbl9maXJzdCA9IGxvZ2MuZmlyc3QoKVswXQogICAgICAgICB2ID0gbG9nYy5sYXN0KCkKICAgICAgICAgc2VsZi5fY2hlY2tfcmV0dXJuKHYpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsc25fZmlyc3QgPCB2WzBdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MobHNuX2ZpcnN0LCB2WzBdKQogCiAgICAgZGVmIHRlc3RfM19uZXh0KHNlbGYpIDoKICAgICAgICAgbG9nYyA9IHNlbGYuZW52LmxvZ19jdXJzb3IoKQpAQCAtNDU2LDE2ICs0NTYsMTYgQEAKICAgICAgICAgbHNuX2ZpcnN0ID0gbG9nYy5maXJzdCgpWzBdCiAgICAgICAgIHYgPSBsb2djLm5leHQoKQogICAgICAgICBzZWxmLl9jaGVja19yZXR1cm4odikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxzbl9maXJzdCA8IHZbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsc25fbGFzdCA+IHZbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsc25fZmlyc3QsIHZbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsc25fbGFzdCwgdlswXSkKIAogICAgICAgICB2MiA9IGxvZ2MubmV4dCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2MlswXSA+IHZbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsc25fbGFzdCA+IHYyWzBdKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIodjJbMF0sIHZbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsc25fbGFzdCwgdjJbMF0pCiAKICAgICAgICAgdjMgPSBsb2djLm5leHQoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodjNbMF0gPiB2MlswXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxzbl9sYXN0ID4gdjNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih2M1swXSwgdjJbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsc25fbGFzdCwgdjNbMF0pCiAKICAgICBkZWYgdGVzdF80X3ByZXYoc2VsZikgOgogICAgICAgICBsb2djID0gc2VsZi5lbnYubG9nX2N1cnNvcigpCkBAIC00NzQsMTYgKzQ3NCwxNiBAQAogICAgICAgICBsc25fbGFzdCA9IGxvZ2MubGFzdCgpWzBdCiAgICAgICAgIHYgPSBsb2djLnByZXYoKQogICAgICAgICBzZWxmLl9jaGVja19yZXR1cm4odikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxzbl9maXJzdCA8IHZbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsc25fbGFzdCA+IHZbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsc25fZmlyc3QsIHZbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsc25fbGFzdCwgdlswXSkKIAogICAgICAgICB2MiA9IGxvZ2MucHJldigpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2MlswXSA8IHZbMF0pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsc25fZmlyc3QgPCB2MlswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHYyWzBdLCB2WzBdKQorICAgICAgICBzZWxmLmFzc2VydExlc3MobHNuX2ZpcnN0LCB2MlswXSkKIAogICAgICAgICB2MyA9IGxvZ2MucHJldigpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2M1swXSA8IHYyWzBdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobHNuX2ZpcnN0IDwgdjNbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyh2M1swXSwgdjJbMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsc25fZmlyc3QsIHYzWzBdKQogCiAgICAgZGVmIHRlc3RfNV9jdXJyZW50KHNlbGYpIDoKICAgICAgICAgbG9nYyA9IHNlbGYuZW52LmxvZ19jdXJzb3IoKQpkaWZmIC0tZ2l0IGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9kYnNoZWx2ZS5weSBiL0xpYi9ic2RkYi90ZXN0L3Rlc3RfZGJzaGVsdmUucHkKaW5kZXggZTU2MDljNS4uNmVjMWUyOCAxMDA2NDQKLS0tIGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9kYnNoZWx2ZS5weQorKysgYi9MaWIvYnNkZGIvdGVzdC90ZXN0X2Ric2hlbHZlLnB5CkBAIC0yNDgsNyArMjQ4LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUuTCwgW3hdICogMTApCiAKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwLCAnVW5rbm93biBrZXkgdHlwZSwgZml4IHRoZSB0ZXN0JykKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5rbm93biBrZXkgdHlwZSwgZml4IHRoZSB0ZXN0JykKIAogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9kYnRhYmxlcy5weSBiL0xpYi9ic2RkYi90ZXN0L3Rlc3RfZGJ0YWJsZXMucHkKaW5kZXggMjUwYzQ5Mi4uYWQ4NTY1ZCAxMDA2NDQKLS0tIGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9kYnRhYmxlcy5weQorKysgYi9MaWIvYnNkZGIvdGVzdC90ZXN0X2RidGFibGVzLnB5CkBAIC04Miw4ICs4Miw4IEBACiAgICAgICAgICAgICBjb2x2YWwgPSBwaWNrbGUubG9hZHModmFsdWVzWzBdW2NvbG5hbWVdKQogICAgICAgICBlbHNlIDoKICAgICAgICAgICAgIGNvbHZhbCA9IHBpY2tsZS5sb2FkcyhieXRlcyh2YWx1ZXNbMF1bY29sbmFtZV0sICJpc284ODU5LTEiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbHZhbCA+IDMuMTQxKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoY29sdmFsIDwgMy4xNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihjb2x2YWwsIDMuMTQxKQorICAgICAgICBzZWxmLmFzc2VydExlc3MoY29sdmFsLCAzLjE0MikKIAogCiAgICAgZGVmIHRlc3QwMihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9ic2RkYi90ZXN0L3Rlc3RfZGlzdHJpYnV0ZWRfdHJhbnNhY3Rpb25zLnB5IGIvTGliL2JzZGRiL3Rlc3QvdGVzdF9kaXN0cmlidXRlZF90cmFuc2FjdGlvbnMucHkKaW5kZXggOTA1ODU3NS4uNjVhY2U5YyAxMDA2NDQKLS0tIGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9kaXN0cmlidXRlZF90cmFuc2FjdGlvbnMucHkKKysrIGIvTGliL2JzZGRiL3Rlc3QvdGVzdF9kaXN0cmlidXRlZF90cmFuc2FjdGlvbnMucHkKQEAgLTc5LDcgKzc5LDcgQEAKICAgICAgICAgcmVjb3ZlcmVkX3R4bnM9c2VsZi5kYmVudi50eG5fcmVjb3ZlcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5udW1fdHhucyxsZW4ocmVjb3ZlcmVkX3R4bnMpKQogICAgICAgICBmb3IgZ2lkLHR4biBpbiByZWNvdmVyZWRfdHhucyA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZ2lkIGluIHR4bnMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGdpZCwgdHhucykKICAgICAgICAgZGVsIHR4bgogICAgICAgICBkZWwgcmVjb3ZlcmVkX3R4bnMKIApAQCAtMTIyLDcgKzEyMiw3IEBACiAgICAgIyBCZSBzdXJlIHRoZXJlIGFyZSBub3QgcGVuZGluZyB0cmFuc2FjdGlvbnMuCiAgICAgIyBDaGVjayBhbHNvIGRhdGFiYXNlIHNpemUuCiAgICAgICAgIHJlY292ZXJlZF90eG5zPXNlbGYuZGJlbnYudHhuX3JlY292ZXIoKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHJlY292ZXJlZF90eG5zKT09MCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocmVjb3ZlcmVkX3R4bnMpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjb21taXR0ZWRfdHhucyksc2VsZi5kYi5zdGF0KClbIm5rZXlzIl0pCiAKIGNsYXNzIERCVHhuX2Rpc3RyaWJ1dGVkU1lOQyhEQlR4bl9kaXN0cmlidXRlZCk6CmRpZmYgLS1naXQgYS9MaWIvYnNkZGIvdGVzdC90ZXN0X2xvY2sucHkgYi9MaWIvYnNkZGIvdGVzdC90ZXN0X2xvY2sucHkKaW5kZXggZmQ4N2VhMi4uMjJiZjhjZCAxMDA2NDQKLS0tIGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9sb2NrLnB5CisrKyBiL0xpYi9ic2RkYi90ZXN0L3Rlc3RfbG9jay5weQpAQCAtMiw2ICsyLDcgQEAKIFRlc3RDYXNlcyBmb3IgdGVzdGluZyB0aGUgbG9ja2luZyBzdWItc3lzdGVtLgogIiIiCiAKK2ltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiAKIGltcG9ydCB1bml0dGVzdApAQCAtMTAsNyArMTEsNiBAQAogCiBpZiBoYXZlX3RocmVhZHMgOgogICAgIGZyb20gdGhyZWFkaW5nIGltcG9ydCBUaHJlYWQKLSAgICBpbXBvcnQgc3lzCiAgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDMgOgogICAgICAgICBmcm9tIHRocmVhZGluZyBpbXBvcnQgY3VycmVudFRocmVhZAogICAgIGVsc2UgOgpAQCAtMTI5LDcgKzEyOSwxNCBAQAogICAgICAgICBlbmRfdGltZT10aW1lLnRpbWUoKQogICAgICAgICBkZWFkbG9ja19kZXRlY3Rpb24uZW5kPVRydWUKICAgICAgICAgIyBGbG9hdGluZyBwb2ludCByb3VuZGluZwotICAgICAgICBzZWxmLmFzc2VydFRydWUoKGVuZF90aW1lLXN0YXJ0X3RpbWUpID49IDAuMDk5OSkKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICAjIGJwby0zMDg1MDogT24gV2luZG93cywgdG9sZXJhdGUgNTAgbXMgd2hlcmVhcyAxMDAgbXMgaXMgZXhwZWN0ZWQuCisgICAgICAgICAgICAjIFRoZSBsb2NrIHNvbWV0aW1lcyB0aW1lcyBvdXQgYWZ0ZXIgb25seSA1OCBtcy4gV2luZG93cyBjbG9ja3MKKyAgICAgICAgICAgICMgaGF2ZSBhIGJhZCByZXNvbHV0aW9uIGFuZCBiYWQgYWNjdXJhY3kuCisgICAgICAgICAgICBtaW5fZHQgPSAwLjA1MAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWluX2R0ID0gMC4wOTk5CisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGVuZF90aW1lLXN0YXJ0X3RpbWUsIG1pbl9kdCkKICAgICAgICAgc2VsZi5lbnYubG9ja19wdXQobG9jaykKICAgICAgICAgdC5qb2luKCkKIApAQCAtMTM3LDcgKzE0NCw3IEBACiAgICAgICAgIHNlbGYuZW52LmxvY2tfaWRfZnJlZShhbklEMikKIAogICAgICAgICBpZiBkYi52ZXJzaW9uKCkgPj0gKDQsNik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZGVhZGxvY2tfZGV0ZWN0aW9uLmNvdW50PjApCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZGVhZGxvY2tfZGV0ZWN0aW9uLmNvdW50LCAwKQogCiAgICAgZGVmIHRoZVRocmVhZChzZWxmLCBsb2NrVHlwZSk6CiAgICAgICAgIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL0xpYi9ic2RkYi90ZXN0L3Rlc3RfbWlzYy5weSBiL0xpYi9ic2RkYi90ZXN0L3Rlc3RfbWlzYy5weQppbmRleCBiMWU5MjhmLi5lMmZmMmFmIDEwMDY0NAotLS0gYS9MaWIvYnNkZGIvdGVzdC90ZXN0X21pc2MucHkKKysrIGIvTGliL2JzZGRiL3Rlc3QvdGVzdF9taXNjLnB5CkBAIC0yNSw3ICsyNSw3IEBACiAgICAgZGVmIHRlc3QwMl9kYl9ob21lKHNlbGYpOgogICAgICAgICBlbnYgPSBkYi5EQkVudigpCiAgICAgICAgICMgY2hlY2sgZm9yIGNyYXNoIGZpeGVkIHdoZW4gZGJfaG9tZSBpcyB1c2VkIGJlZm9yZSBvcGVuKCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGVudi5kYl9ob21lIGlzIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGVudi5kYl9ob21lKQogICAgICAgICBlbnYub3BlbihzZWxmLmhvbWVEaXIsIGRiLkRCX0NSRUFURSkKICAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDMgOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhvbWVEaXIsIGVudi5kYl9ob21lKQpkaWZmIC0tZ2l0IGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9yZWNuby5weSBiL0xpYi9ic2RkYi90ZXN0L3Rlc3RfcmVjbm8ucHkKaW5kZXggYjBlMzBkZS4uMTA5NzQyMCAxMDA2NDQKLS0tIGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9yZWNuby5weQorKysgYi9MaWIvYnNkZGIvdGVzdC90ZXN0X3JlY25vLnB5CkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgIGRlZiBhc3NlcnRJc0luc3RhbmNlKHNlbGYsIG9iaiwgZGF0YXR5cGUsIG1zZz1Ob25lKSA6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5hc3NlcnRFcXVhbCh0eXBlKG9iaiksIGRhdGF0eXBlLCBtc2c9bXNnKQogICAgICAgICBkZWYgYXNzZXJ0R3JlYXRlckVxdWFsKHNlbGYsIGEsIGIsIG1zZz1Ob25lKSA6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5hc3NlcnRUcnVlKGE+PWIsIG1zZz1tc2cpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwoYSwgYiwgbXNnPW1zZykKIAogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9yZXBsaWNhdGlvbi5weSBiL0xpYi9ic2RkYi90ZXN0L3Rlc3RfcmVwbGljYXRpb24ucHkKaW5kZXggMTJhYjJkZC4uNTM2ZDI1ZCAxMDA2NDQKLS0tIGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9yZXBsaWNhdGlvbi5weQorKysgYi9MaWIvYnNkZGIvdGVzdC90ZXN0X3JlcGxpY2F0aW9uLnB5CkBAIC0xODYsMjAgKzE4NiwxOCBAQAogICAgICAgICBkID0gZC52YWx1ZXMoKVswXSAgIyBUaGVyZSBpcyBvbmx5IG9uZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbMF0sICIxMjcuMC4wLjEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRbMV0sIGNsaWVudF9wb3J0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUoKGRbMl09PWRiLkRCX1JFUE1HUl9DT05ORUNURUQpIG9yIFwKLSAgICAgICAgICAgICAgICAoZFsyXT09ZGIuREJfUkVQTUdSX0RJU0NPTk5FQ1RFRCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oZFsyXSwgKGRiLkRCX1JFUE1HUl9DT05ORUNURUQsIGRiLkRCX1JFUE1HUl9ESVNDT05ORUNURUQpKQogCiAgICAgICAgIGQgPSBzZWxmLmRiZW52Q2xpZW50LnJlcG1ncl9zaXRlX2xpc3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkKSwgMSkKICAgICAgICAgZCA9IGQudmFsdWVzKClbMF0gICMgVGhlcmUgaXMgb25seSBvbmUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWzBdLCAiMTI3LjAuMC4xIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkWzFdLCBtYXN0ZXJfcG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKChkWzJdPT1kYi5EQl9SRVBNR1JfQ09OTkVDVEVEKSBvciBcCi0gICAgICAgICAgICAgICAgKGRbMl09PWRiLkRCX1JFUE1HUl9ESVNDT05ORUNURUQpKQorICAgICAgICBzZWxmLmFzc2VydEluKGRbMl0sIChkYi5EQl9SRVBNR1JfQ09OTkVDVEVELCBkYi5EQl9SRVBNR1JfRElTQ09OTkVDVEVEKSkKIAogICAgICAgICBpZiBkYi52ZXJzaW9uKCkgPj0gKDQsNikgOgogICAgICAgICAgICAgZCA9IHNlbGYuZGJlbnZNYXN0ZXIucmVwbWdyX3N0YXQoZmxhZ3M9ZGIuREJfU1RBVF9DTEVBUik7Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoIm1zZ3NfcXVldWVkIiBpbiBkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibXNnc19xdWV1ZWQiLCBkKQogCiAgICAgICAgIHNlbGYuZGJNYXN0ZXI9ZGIuREIoc2VsZi5kYmVudk1hc3RlcikKICAgICAgICAgdHhuPXNlbGYuZGJlbnZNYXN0ZXIudHhuX2JlZ2luKCkKQEAgLTI0Nyw3ICsyNDUsNyBAQAogICAgICAgICBpZiB0aW1lLnRpbWUoKT49dGltZW91dCBhbmQgc3RhcnR1cF90aW1lb3V0OgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgicmVwbGljYXRpb24gdGVzdCBza2lwcGVkIGR1ZSB0byByYW5kb20gZmFpbHVyZSwgIgogICAgICAgICAgICAgICAgICJzZWUgaXNzdWUgMzg5MiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0aW1lLnRpbWUoKTx0aW1lb3V0KQorICAgICAgICBzZWxmLmFzc2VydExlc3ModGltZS50aW1lKCksIHRpbWVvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjEyMyIsIHYpCiAKICAgICAgICAgdHhuPXNlbGYuZGJlbnZNYXN0ZXIudHhuX2JlZ2luKCkKQEAgLTI2MCw3ICsyNTgsNyBAQAogICAgICAgICAgICAgdHhuLmNvbW1pdCgpCiAgICAgICAgICAgICBpZiB2IGlzIE5vbmUgOgogICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWUudGltZSgpPHRpbWVvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyh0aW1lLnRpbWUoKSwgdGltZW91dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCB2KQogCiBjbGFzcyBEQkJhc2VSZXBsaWNhdGlvbihEQlJlcGxpY2F0aW9uKSA6CkBAIC0zODEsNyArMzc5LDcgQEAKICAgICAgICAgd2hpbGUgKHRpbWUudGltZSgpPHRpbWVvdXQpIGFuZCBub3QgKHNlbGYuY29uZmlybWVkX21hc3RlciBhbmQKICAgICAgICAgICAgICAgICBzZWxmLmNsaWVudF9zdGFydHVwZG9uZSkgOgogICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodGltZS50aW1lKCk8dGltZW91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHRpbWUudGltZSgpLCB0aW1lb3V0KQogCiAgICAgICAgIHNlbGYuZGJNYXN0ZXI9ZGIuREIoc2VsZi5kYmVudk1hc3RlcikKICAgICAgICAgdHhuPXNlbGYuZGJlbnZNYXN0ZXIudHhuX2JlZ2luKCkKQEAgLTQxMCw3ICs0MDgsNyBAQAogICAgICAgICAgICAgYnJlYWsKIAogICAgICAgICBkID0gc2VsZi5kYmVudk1hc3Rlci5yZXBfc3RhdChmbGFncz1kYi5EQl9TVEFUX0NMRUFSKTsKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJtYXN0ZXJfY2hhbmdlcyIgaW4gZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbigibWFzdGVyX2NoYW5nZXMiLCBkKQogCiAgICAgICAgIHR4bj1zZWxmLmRiZW52TWFzdGVyLnR4bl9iZWdpbigpCiAgICAgICAgIHNlbGYuZGJNYXN0ZXIucHV0KCJBQkMiLCAiMTIzIiwgdHhuPXR4bikKQEAgLTQyNCw3ICs0MjIsNyBAQAogICAgICAgICAgICAgdHhuLmNvbW1pdCgpCiAgICAgICAgICAgICBpZiB2IGlzIE5vbmUgOgogICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHRpbWUudGltZSgpPHRpbWVvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyh0aW1lLnRpbWUoKSwgdGltZW91dCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiMTIzIiwgdikKIAogICAgICAgICB0eG49c2VsZi5kYmVudk1hc3Rlci50eG5fYmVnaW4oKQpAQCAtNDM3LDcgKzQzNSw3IEBACiAgICAgICAgICAgICB0eG4uY29tbWl0KCkKICAgICAgICAgICAgIGlmIHYgaXMgTm9uZSA6CiAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUodGltZS50aW1lKCk8dGltZW91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHRpbWUudGltZSgpLCB0aW1lb3V0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHYpCiAKICAgICBpZiBkYi52ZXJzaW9uKCkgPj0gKDQsNykgOgpkaWZmIC0tZ2l0IGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9zZXF1ZW5jZS5weSBiL0xpYi9ic2RkYi90ZXN0L3Rlc3Rfc2VxdWVuY2UucHkKaW5kZXggZjBhYTEyYS4uNzYzYTk0NyAxMDA2NDQKLS0tIGEvTGliL2JzZGRiL3Rlc3QvdGVzdF9zZXF1ZW5jZS5weQorKysgYi9MaWIvYnNkZGIvdGVzdC90ZXN0X3NlcXVlbmNlLnB5CkBAIC04Miw3ICs4Miw3IEBACiAgICAgICAgIHN0YXQgPSBzZWxmLnNlcS5zdGF0KCkKICAgICAgICAgZm9yIHBhcmFtIGluICgnbm93YWl0JywgJ21pbicsICdtYXgnLCAndmFsdWUnLCAnY3VycmVudCcsCiAgICAgICAgICAgICAgICAgICAgICAgJ2ZsYWdzJywgJ2NhY2hlX3NpemUnLCAnbGFzdF92YWx1ZScsICd3YWl0Jyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocGFyYW0gaW4gc3RhdCwgInBhcmFtZXRlciAlcyBpc24ndCBpbiBzdGF0IGluZm8iICUgcGFyYW0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhcmFtLCBzdGF0LCAicGFyYW1ldGVyICVzIGlzbid0IGluIHN0YXQgaW5mbyIgJSBwYXJhbSkKIAogICAgIGlmIGRiLnZlcnNpb24oKSA+PSAoNCw3KSA6CiAgICAgICAgICMgVGhpcyBjb2RlIGNoZWNrcyBhIGNyYXNoIHNvbHZlZCBpbiBCZXJrZWxleSBEQiA0LjcKZGlmZiAtLWdpdCBhL0xpYi9ic2RkYi90ZXN0L3Rlc3RfdGhyZWFkLnB5IGIvTGliL2JzZGRiL3Rlc3QvdGVzdF90aHJlYWQucHkKaW5kZXggNDIyMTJlOS4uY2U0OTYzZCAxMDA2NDQKLS0tIGEvTGliL2JzZGRiL3Rlc3QvdGVzdF90aHJlYWQucHkKKysrIGIvTGliL2JzZGRiL3Rlc3QvdGVzdF90aHJlYWQucHkKQEAgLTg1LDcgKzg1LDcgQEAKICAgICAgICAgcmVhZGVyc19wZXJfd3JpdGVyPXNlbGYucmVhZGVycy8vc2VsZi53cml0ZXJzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvcmRzLHNlbGYud3JpdGVycypyZWNvcmRzX3Blcl93cml0ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWFkZXJzLHNlbGYud3JpdGVycypyZWFkZXJzX3Blcl93cml0ZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgocmVjb3Jkc19wZXJfd3JpdGVyJXJlYWRlcnNfcGVyX3dyaXRlcik9PTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3Jkc19wZXJfd3JpdGVyJXJlYWRlcnNfcGVyX3dyaXRlciwgMCkKICAgICAgICAgcmVhZGVycyA9IFtdCiAKICAgICAgICAgZm9yIHggaW4geHJhbmdlKHNlbGYucmVhZGVycyk6CkBAIC0yMTMsNyArMjEzLDcgQEAKICAgICAgICAgcmVhZGVyc19wZXJfd3JpdGVyPXNlbGYucmVhZGVycy8vc2VsZi53cml0ZXJzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvcmRzLHNlbGYud3JpdGVycypyZWNvcmRzX3Blcl93cml0ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWFkZXJzLHNlbGYud3JpdGVycypyZWFkZXJzX3Blcl93cml0ZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgocmVjb3Jkc19wZXJfd3JpdGVyJXJlYWRlcnNfcGVyX3dyaXRlcik9PTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3Jkc19wZXJfd3JpdGVyJXJlYWRlcnNfcGVyX3dyaXRlciwgMCkKIAogICAgICAgICByZWFkZXJzID0gW10KICAgICAgICAgZm9yIHggaW4geHJhbmdlKHNlbGYucmVhZGVycyk6CkBAIC0zMzksNyArMzM5LDcgQEAKICAgICAgICAgcmVhZGVyc19wZXJfd3JpdGVyPXNlbGYucmVhZGVycy8vc2VsZi53cml0ZXJzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWNvcmRzLHNlbGYud3JpdGVycypyZWNvcmRzX3Blcl93cml0ZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yZWFkZXJzLHNlbGYud3JpdGVycypyZWFkZXJzX3Blcl93cml0ZXIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgocmVjb3Jkc19wZXJfd3JpdGVyJXJlYWRlcnNfcGVyX3dyaXRlcik9PTApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjb3Jkc19wZXJfd3JpdGVyJXJlYWRlcnNfcGVyX3dyaXRlciwgMCkKIAogICAgICAgICByZWFkZXJzPVtdCiAgICAgICAgIGZvciB4IGluIHhyYW5nZShzZWxmLnJlYWRlcnMpOgpkaWZmIC0tZ2l0IGEvTGliL2NQcm9maWxlLnB5IGIvTGliL2NQcm9maWxlLnB5CmluZGV4IGIyZWZkMDQuLmQzNzcwOTQgMTAwNzU1Ci0tLSBhL0xpYi9jUHJvZmlsZS5weQorKysgYi9MaWIvY1Byb2ZpbGUucHkKQEAgLTY0LDExICs2NCwxMSBAQAogIyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KIAogY2xhc3MgUHJvZmlsZShfbHNwcm9mLlByb2ZpbGVyKToKLSAgICAiIiJQcm9maWxlKGN1c3RvbV90aW1lcj1Ob25lLCB0aW1lX3VuaXQ9Tm9uZSwgc3ViY2FsbHM9VHJ1ZSwgYnVpbHRpbnM9VHJ1ZSkKKyAgICAiIiJQcm9maWxlKHRpbWVyPU5vbmUsIHRpbWV1bml0PU5vbmUsIHN1YmNhbGxzPVRydWUsIGJ1aWx0aW5zPVRydWUpCiAKICAgICBCdWlsZHMgYSBwcm9maWxlciBvYmplY3QgdXNpbmcgdGhlIHNwZWNpZmllZCB0aW1lciBmdW5jdGlvbi4KICAgICBUaGUgZGVmYXVsdCB0aW1lciBpcyBhIGZhc3QgYnVpbHQtaW4gb25lIGJhc2VkIG9uIHJlYWwgdGltZS4KLSAgICBGb3IgY3VzdG9tIHRpbWVyIGZ1bmN0aW9ucyByZXR1cm5pbmcgaW50ZWdlcnMsIHRpbWVfdW5pdCBjYW4KKyAgICBGb3IgY3VzdG9tIHRpbWVyIGZ1bmN0aW9ucyByZXR1cm5pbmcgaW50ZWdlcnMsIHRpbWV1bml0IGNhbgogICAgIGJlIGEgZmxvYXQgc3BlY2lmeWluZyBhIHNjYWxlIChpLmUuIGhvdyBsb25nIGVhY2ggaW50ZWdlciB1bml0CiAgICAgaXMsIGluIHNlY29uZHMpLgogICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL2NnaXRiLnB5IGIvTGliL2NnaXRiLnB5CmluZGV4IDhhY2M0YjcuLjM2ODlmOGEgMTAwNjQ0Ci0tLSBhL0xpYi9jZ2l0Yi5weQorKysgYi9MaWIvY2dpdGIucHkKQEAgLTEyNSw3ICsxMjUsNyBAQAogICAgICAgICBhcmdzLCB2YXJhcmdzLCB2YXJrdywgbG9jYWxzID0gaW5zcGVjdC5nZXRhcmd2YWx1ZXMoZnJhbWUpCiAgICAgICAgIGNhbGwgPSAnJwogICAgICAgICBpZiBmdW5jICE9ICc/JzoKLSAgICAgICAgICAgIGNhbGwgPSAnaW4gJyArIHN0cm9uZyhmdW5jKSArIFwKKyAgICAgICAgICAgIGNhbGwgPSAnaW4gJyArIHN0cm9uZyhweWRvYy5odG1sLmVzY2FwZShmdW5jKSkgKyBcCiAgICAgICAgICAgICAgICAgaW5zcGVjdC5mb3JtYXRhcmd2YWx1ZXMoYXJncywgdmFyYXJncywgdmFya3csIGxvY2FscywKICAgICAgICAgICAgICAgICAgICAgZm9ybWF0dmFsdWU9bGFtYmRhIHZhbHVlOiAnPScgKyBweWRvYy5odG1sLnJlcHIodmFsdWUpKQogCkBAIC0yODUsNyArMjg1LDcgQEAKIAogICAgICAgICBpZiBzZWxmLmRpc3BsYXk6CiAgICAgICAgICAgICBpZiBwbGFpbjoKLSAgICAgICAgICAgICAgICBkb2MgPSBkb2MucmVwbGFjZSgnJicsICcmYW1wOycpLnJlcGxhY2UoJzwnLCAnJmx0OycpCisgICAgICAgICAgICAgICAgZG9jID0gcHlkb2MuaHRtbC5lc2NhcGUoZG9jKQogICAgICAgICAgICAgICAgIHNlbGYuZmlsZS53cml0ZSgnPHByZT4nICsgZG9jICsgJzwvcHJlPlxuJykKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlLndyaXRlKGRvYyArICdcbicpCmRpZmYgLS1naXQgYS9MaWIvY29kZWNzLnB5IGIvTGliL2NvZGVjcy5weQppbmRleCA1OTAyMzhlLi5lMTIwZDYzIDEwMDY0NAotLS0gYS9MaWIvY29kZWNzLnB5CisrKyBiL0xpYi9jb2RlY3MucHkKQEAgLTQ3MiwxNSArNDcyLDE3IEBACiAgICAgICAgICAgICBzZWxmLmNoYXJidWZmZXIgPSAiIi5qb2luKHNlbGYubGluZWJ1ZmZlcikKICAgICAgICAgICAgIHNlbGYubGluZWJ1ZmZlciA9IE5vbmUKIAorICAgICAgICBpZiBjaGFycyA8IDA6CisgICAgICAgICAgICAjIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb3RoZXIgcmVhZCgpIG1ldGhvZHMgdGhhdCB0YWtlIGEKKyAgICAgICAgICAgICMgc2luZ2xlIGFyZ3VtZW50CisgICAgICAgICAgICBjaGFycyA9IHNpemUKKwogICAgICAgICAjIHJlYWQgdW50aWwgd2UgZ2V0IHRoZSByZXF1aXJlZCBudW1iZXIgb2YgY2hhcmFjdGVycyAoaWYgYXZhaWxhYmxlKQogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgIyBjYW4gdGhlIHJlcXVlc3QgYmUgc2F0aXNmaWVkIGZyb20gdGhlIGNoYXJhY3RlciBidWZmZXI/CiAgICAgICAgICAgICBpZiBjaGFycyA+PSAwOgogICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLmNoYXJidWZmZXIpID49IGNoYXJzOgogICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxpZiBzaXplID49IDA6Ci0gICAgICAgICAgICAgICAgaWYgbGVuKHNlbGYuY2hhcmJ1ZmZlcikgPj0gc2l6ZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICMgd2UgbmVlZCBtb3JlIGRhdGEKICAgICAgICAgICAgIGlmIHNpemUgPCAwOgogICAgICAgICAgICAgICAgIG5ld2RhdGEgPSBzZWxmLnN0cmVhbS5yZWFkKCkKZGlmZiAtLWdpdCBhL0xpYi9jb21waWxlci9weWFzc2VtLnB5IGIvTGliL2NvbXBpbGVyL3B5YXNzZW0ucHkKaW5kZXggZjUyZjdkMC4uYjgyMDczZSAxMDA2NDQKLS0tIGEvTGliL2NvbXBpbGVyL3B5YXNzZW0ucHkKKysrIGIvTGliL2NvbXBpbGVyL3B5YXNzZW0ucHkKQEAgLTU4MSw3ICs1ODEsNyBAQAogCiBkZWYgdHdvYnl0ZSh2YWwpOgogICAgICIiIkNvbnZlcnQgYW4gaW50IGFyZ3VtZW50IGludG8gaGlnaCBhbmQgbG93IGJ5dGVzIiIiCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsLCBpbnQpCisgICAgYXNzZXJ0IGlzaW5zdGFuY2UodmFsLCAoaW50LCBsb25nKSkKICAgICByZXR1cm4gZGl2bW9kKHZhbCwgMjU2KQogCiBjbGFzcyBMaW5lQWRkclRhYmxlOgpkaWZmIC0tZ2l0IGEvTGliL2NvbXBpbGVyL3RyYW5zZm9ybWVyLnB5IGIvTGliL2NvbXBpbGVyL3RyYW5zZm9ybWVyLnB5CmluZGV4IGQ0ZjQ2MTMuLmJhNWMwM2MgMTAwNjQ0Ci0tLSBhL0xpYi9jb21waWxlci90cmFuc2Zvcm1lci5weQorKysgYi9MaWIvY29tcGlsZXIvdHJhbnNmb3JtZXIucHkKQEAgLTE1MjYsNyArMTUyNiw3IEBACiBkZWYgZGVidWdfdHJlZSh0cmVlKToKICAgICBsID0gW10KICAgICBmb3IgZWx0IGluIHRyZWU6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoZWx0LCBpbnQpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGVsdCwgKGludCwgbG9uZykpOgogICAgICAgICAgICAgbC5hcHBlbmQoX25hbWVzLmdldChlbHQsIGVsdCkpCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShlbHQsIHN0cik6CiAgICAgICAgICAgICBsLmFwcGVuZChlbHQpCmRpZmYgLS1naXQgYS9MaWIvY29weV9yZWcucHkgYi9MaWIvY29weV9yZWcucHkKaW5kZXggZGIxNzE1MC4uODk0MzA3NyAxMDA2NDQKLS0tIGEvTGliL2NvcHlfcmVnLnB5CisrKyBiL0xpYi9jb3B5X3JlZy5weQpAQCAtMTI3LDcgKzEyNywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgIyBtYW5nbGVkIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgbmFtZS5zdGFydHN3aXRoKCdfXycpIGFuZCBub3QgbmFtZS5lbmRzd2l0aCgnX18nKToKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZCgnXyVzJXMnICUgKGMuX19uYW1lX18sIG5hbWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3RyaXBwZWQgPSBjLl9fbmFtZV9fLmxzdHJpcCgnXycpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdHJpcHBlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoJ18lcyVzJyAlIChzdHJpcHBlZCwgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFwcGVuZChuYW1lKQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG5hbWUpCiAKZGlmZiAtLWdpdCBhL0xpYi9jc3YucHkgYi9MaWIvY3N2LnB5CmluZGV4IGMxNTVhZGEuLjcwYzUzYWUgMTAwNjQ0Ci0tLSBhL0xpYi9jc3YucHkKKysrIGIvTGliL2Nzdi5weQpAQCAtMjE3LDcgKzIxNyw3IEBACiAgICAgICAgIG1hdGNoZXMgPSBbXQogICAgICAgICBmb3IgcmVzdHIgaW4gKCcoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A9ZGVsaW0pJywgIyAsIi4qPyIsCiAgICAgICAgICAgICAgICAgICAgICAgJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pJywgICAjICAiLio/IiwKLSAgICAgICAgICAgICAgICAgICAgICAnKD9QPGRlbGltPj5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJywgICMgLCIuKj8iCisgICAgICAgICAgICAgICAgICAgICAgJyg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJywgICAjICwiLio/IgogICAgICAgICAgICAgICAgICAgICAgICcoPzpefFxuKSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD86JHxcbiknKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIi4qPyIgKG5vIGRlbGltLCBubyBzcGFjZSkKICAgICAgICAgICAgIHJlZ2V4cCA9IHJlLmNvbXBpbGUocmVzdHIsIHJlLkRPVEFMTCB8IHJlLk1VTFRJTElORSkKICAgICAgICAgICAgIG1hdGNoZXMgPSByZWdleHAuZmluZGFsbChkYXRhKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy9fX2luaXRfXy5weSBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKaW5kZXggZTI0Y2ZkMi4uODhjODVmZiAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9fX2luaXRfXy5weQorKysgYi9MaWIvY3R5cGVzL19faW5pdF9fLnB5CkBAIC0zNDIsNiArMzQyLDEwIEBACiAgICAgIiIiCiAgICAgX2Z1bmNfZmxhZ3NfID0gX0ZVTkNGTEFHX0NERUNMCiAgICAgX2Z1bmNfcmVzdHlwZV8gPSBjX2ludAorICAgICMgZGVmYXVsdCB2YWx1ZXMgZm9yIHJlcHIKKyAgICBfbmFtZSA9ICc8dW5pbml0aWFsaXplZD4nCisgICAgX2hhbmRsZSA9IDAKKyAgICBfRnVuY1B0ciA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBtb2RlPURFRkFVTFRfTU9ERSwgaGFuZGxlPU5vbmUsCiAgICAgICAgICAgICAgICAgIHVzZV9lcnJubz1GYWxzZSwKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvbWFjaG9saWIvZmV0Y2hfbWFjaG9saWIuYmF0IGIvTGliL2N0eXBlcy9tYWNob2xpYi9mZXRjaF9tYWNob2xpYi5iYXQKaW5kZXggZjQ3NGQ1Yy4uZjllMWMwZCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy9tYWNob2xpYi9mZXRjaF9tYWNob2xpYi5iYXQKKysrIGIvTGliL2N0eXBlcy9tYWNob2xpYi9mZXRjaF9tYWNob2xpYi5iYXQKQEAgLTEgKzEgQEAKLXN2biBleHBvcnQgLS1mb3JjZSBodHRwOi8vc3ZuLnJlZC1iZWFuLmNvbS9ib2IvbWFjaG9saWIvdHJ1bmsvbWFjaG9saWIvIC4NCitzdm4gZXhwb3J0IC0tZm9yY2UgaHR0cDovL3N2bi5yZWQtYmVhbi5jb20vYm9iL21hY2hvbGliL3RydW5rL21hY2hvbGliLyAuCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9hbm9uLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYW5vbi5weQppbmRleCBkODkyYjU5Li4yYzI4YjdmIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9hbm9uLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Fub24ucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjcHl0aG9uX29ubHkKIGZyb20gY3R5cGVzIGltcG9ydCAqCiAKIGNsYXNzIEFub25UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTM1LDYgKzM2LDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Il9maWVsZHNfIjogW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9hbm9ueW1vdXNfIjogWyJ4Il19KSkKIAorICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9pc3N1ZTMxNDkwKHNlbGYpOgorICAgICAgICAjIFRoZXJlIHNob3VsZG4ndCBiZSBhbiBhc3NlcnRpb24gZmFpbHVyZSBpbiBjYXNlIHRoZSBjbGFzcyBoYXMgYW4KKyAgICAgICAgIyBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyBzcGVjaWZpZWQgaW4gX2Fub255bW91c18gYnV0IG5vdCBpbiBfZmllbGRzXy4KKworICAgICAgICAjIEF0dHJpYnV0ZUVycm9yOiAneCcgaXMgc3BlY2lmaWVkIGluIF9hbm9ueW1vdXNfIGJ1dCBub3QgaW4gX2ZpZWxkc18KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBOYW1lKFN0cnVjdHVyZSk6CisgICAgICAgICAgICAgICAgX2ZpZWxkc18gPSBbXQorICAgICAgICAgICAgICAgIF9hbm9ueW1vdXNfID0gWyJ4Il0KKyAgICAgICAgICAgICAgICB4ID0gNDIKKwogICAgIGRlZiB0ZXN0X25lc3RlZChzZWxmKToKICAgICAgICAgY2xhc3MgQU5PTl9TKFN0cnVjdHVyZSk6CiAgICAgICAgICAgICBfZmllbGRzXyA9IFsoImEiLCBjX2ludCldCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9hc19wYXJhbWV0ZXIucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9hc19wYXJhbWV0ZXIucHkKaW5kZXggZjJmZTEwYS4uZGU3MzBlOSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYXNfcGFyYW1ldGVyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2FzX3BhcmFtZXRlci5weQpAQCAtMjQsNyArMjQsNyBAQAogICAgICAgICBmLmFyZ3R5cGVzID0gW2NfYnl0ZSwgY193Y2hhciwgY19pbnQsIGNfbG9uZywgY19mbG9hdCwgY19kb3VibGVdCiAgICAgICAgIHJlc3VsdCA9IGYoc2VsZi53cmFwKDEpLCBzZWxmLndyYXAodSJ4IiksIHNlbGYud3JhcCgzKSwgc2VsZi53cmFwKDQpLCBzZWxmLndyYXAoNS4wKSwgc2VsZi53cmFwKDYuMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCAxMzkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh0eXBlKHJlc3VsdCksIGludCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJlc3VsdCksIGludCkKIAogICAgIGRlZiB0ZXN0X3BvaW50ZXJzKHNlbGYpOgogICAgICAgICBmID0gZGxsLl90ZXN0ZnVuY19wX3AKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2NhbGxiYWNrcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2NhbGxiYWNrcy5weQppbmRleCBiZjg5NGQ0Li5kYjNkOWU3IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9jYWxsYmFja3MucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfY2FsbGJhY2tzLnB5CkBAIC0yNTAsNiArMjUwLDcgQEAKICAgICBkZWYgdGVzdF9jYWxsYmFja19sYXJnZV9zdHJ1Y3Qoc2VsZik6CiAgICAgICAgIGNsYXNzIENoZWNrOiBwYXNzCiAKKyAgICAgICAgIyBUaGlzIHNob3VsZCBtaXJyb3IgdGhlIHN0cnVjdHVyZSBpbiBNb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMKICAgICAgICAgY2xhc3MgWChTdHJ1Y3R1cmUpOgogICAgICAgICAgICAgX2ZpZWxkc18gPSBbCiAgICAgICAgICAgICAgICAgKCdmaXJzdCcsIGNfdWxvbmcpLApAQCAtMjYxLDYgKzI2MiwxMSBAQAogICAgICAgICAgICAgY2hlY2suZmlyc3QgPSBzLmZpcnN0CiAgICAgICAgICAgICBjaGVjay5zZWNvbmQgPSBzLnNlY29uZAogICAgICAgICAgICAgY2hlY2sudGhpcmQgPSBzLnRoaXJkCisgICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMjk1NjUuCisgICAgICAgICAgICAjIFRoZSBzdHJ1Y3R1cmUgc2hvdWxkIGJlIHBhc3NlZCBieSB2YWx1ZSwgc28KKyAgICAgICAgICAgICMgYW55IGNoYW5nZXMgdG8gaXQgc2hvdWxkIG5vdCBiZSByZWZsZWN0ZWQgaW4KKyAgICAgICAgICAgICMgdGhlIHZhbHVlIHBhc3NlZAorICAgICAgICAgICAgcy5maXJzdCA9IHMuc2Vjb25kID0gcy50aGlyZCA9IDB4MGJhZGYwMGQKIAogICAgICAgICBjaGVjayA9IENoZWNrKCkKICAgICAgICAgcyA9IFgoKQpAQCAtMjgxLDYgKzI4NywxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrLmZpcnN0LCAweGRlYWRiZWVmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrLnNlY29uZCwgMHhjYWZlYmFiZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVjay50aGlyZCwgMHgwYmFkMWRlYSkKKyAgICAgICAgIyBTZWUgaXNzdWUgIzI5NTY1LgorICAgICAgICAjIEVuc3VyZSB0aGF0IHRoZSBvcmlnaW5hbCBzdHJ1Y3QgaXMgdW5jaGFuZ2VkLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZmlyc3QsIGNoZWNrLmZpcnN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vjb25kLCBjaGVjay5zZWNvbmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy50aGlyZCwgY2hlY2sudGhpcmQpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnJvbWJ1ZmZlci5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Zyb21idWZmZXIucHkKaW5kZXggZDcwOGVkNi4uOTljMzJlMCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnJvbWJ1ZmZlci5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mcm9tYnVmZmVyLnB5CkBAIC03OCwxMiArNzgsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNfaW50ICogMSkuZnJvbV9idWZmZXJfY29weSwgYSwgMTYgKiBzaXplb2YoY19pbnQpKQogCiAgICAgZGVmIHRlc3RfYWJzdHJhY3Qoc2VsZik6CisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBfUG9pbnRlciwgX1NpbXBsZUNEYXRhLCBfQ0Z1bmNQdHIKKwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIEFycmF5LmZyb21fYnVmZmVyLCBieXRlYXJyYXkoMTApKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIFN0cnVjdHVyZS5mcm9tX2J1ZmZlciwgYnl0ZWFycmF5KDEwKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBVbmlvbi5mcm9tX2J1ZmZlciwgYnl0ZWFycmF5KDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfQ0Z1bmNQdHIuZnJvbV9idWZmZXIsIGJ5dGVhcnJheSgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX1BvaW50ZXIuZnJvbV9idWZmZXIsIGJ5dGVhcnJheSgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX1NpbXBsZUNEYXRhLmZyb21fYnVmZmVyLCBieXRlYXJyYXkoMTApKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQXJyYXkuZnJvbV9idWZmZXJfY29weSwgYiIxMjMiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIFN0cnVjdHVyZS5mcm9tX2J1ZmZlcl9jb3B5LCBiIjEyMyIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgVW5pb24uZnJvbV9idWZmZXJfY29weSwgYiIxMjMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9DRnVuY1B0ci5mcm9tX2J1ZmZlcl9jb3B5LCBiIjEyMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX1BvaW50ZXIuZnJvbV9idWZmZXJfY29weSwgYiIxMjMiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9TaW1wbGVDRGF0YS5mcm9tX2J1ZmZlcl9jb3B5LCBiIjEyMyIpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnVuY3B0ci5weQppbmRleCA1OGNiYjQ3Li41NzUwMzAzIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Z1bmNwdHIucHkKQEAgLTEyMyw1ICsxMjMsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJ0b2soTm9uZSwgIlxuIiksICJjIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJ0b2soTm9uZSwgIlxuIiksIE5vbmUpCiAKKyAgICBkZWYgdGVzdF9hYnN0cmFjdChzZWxmKToKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IF9DRnVuY1B0cgorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX0NGdW5jUHRyLCAxMywgIm5hbWUiLCA0MiwgImlpZCIpCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQppbmRleCA4MWEyN2UzLi5lNjRmZmY3IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKQEAgLTMsNiArMyw3IEBACiBpbXBvcnQgb3MKIGZyb20gY3R5cGVzLnV0aWwgaW1wb3J0IGZpbmRfbGlicmFyeQogZnJvbSBjdHlwZXMudGVzdCBpbXBvcnQgaXNfcmVzb3VyY2VfZW5hYmxlZAoraW1wb3J0IHRlc3QudGVzdF9zdXBwb3J0IGFzIHN1cHBvcnQKIAogbGliY19uYW1lID0gTm9uZQogaWYgb3MubmFtZSA9PSAibnQiOgpAQCAtMjcsNiArMjgsMTIgQEAKICAgICAgICAgQ0RMTChvcy5wYXRoLmJhc2VuYW1lKGxpYmNfbmFtZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIENETEwsIHNlbGYudW5rbm93bmRsbCkKIAorICAgIEBzdXBwb3J0LnJlcXVpcmVzX3VuaWNvZGUKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhsaWJjX25hbWUgaXMgbm90IE5vbmUsICdjb3VsZCBub3QgZmluZCBsaWJjJykKKyAgICBkZWYgdGVzdF9sb2FkX3VuaWNvZGUoc2VsZik6CisgICAgICAgIENETEwodW5pY29kZShsaWJjX25hbWUpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBDRExMLCB1bmljb2RlKHNlbGYudW5rbm93bmRsbCkpCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhsaWJjX25hbWUgaXMgbm90IE5vbmUsICdjb3VsZCBub3QgZmluZCBsaWJjJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhsaWJjX25hbWUgaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5iYXNlbmFtZShsaWJjX25hbWUpID09ICJsaWJjLnNvLjYiLApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKaW5kZXggMTkyZDllZC4uMjNjMWI2ZSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CkBAIC0xLDUgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0LCBzeXMKIGZyb20gY3R5cGVzLnRlc3QgaW1wb3J0IG5lZWRfc3ltYm9sCitpbXBvcnQgdGVzdC5zdXBwb3J0CiAKIGNsYXNzIFNpbXBsZVR5cGVzVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xNzQsNiArMTc1LDM2IEBACiAgICAgICAgICMgQXJndW1lbnRFcnJvcjogYXJndW1lbnQgMTogVmFsdWVFcnJvcjogOTkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXJndW1lbnRFcnJvciwgZnVuYywgOTkpCiAKKyAgICBkZWYgdGVzdF9hYnN0cmFjdChzZWxmKToKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IChBcnJheSwgU3RydWN0dXJlLCBVbmlvbiwgX1BvaW50ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1NpbXBsZUNEYXRhLCBfQ0Z1bmNQdHIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBBcnJheS5mcm9tX3BhcmFtLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBTdHJ1Y3R1cmUuZnJvbV9wYXJhbSwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgVW5pb24uZnJvbV9wYXJhbSwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgX0NGdW5jUHRyLmZyb21fcGFyYW0sIDQyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9Qb2ludGVyLmZyb21fcGFyYW0sIDQyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9TaW1wbGVDRGF0YS5mcm9tX3BhcmFtLCA0MikKKworICAgIEB0ZXN0LnN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfaXNzdWUzMTMxMShzZWxmKToKKyAgICAgICAgIyBfX3NldHN0YXRlX18gc2hvdWxkIG5laXRoZXIgcmFpc2UgYSBTeXN0ZW1FcnJvciBub3IgY3Jhc2ggaW4gY2FzZQorICAgICAgICAjIG9mIGEgYmFkIF9fZGljdF9fLgorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgU3RydWN0dXJlCisKKyAgICAgICAgY2xhc3MgQmFkU3RydWN0KFN0cnVjdHVyZSk6CisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBfX2RpY3RfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIEJhZFN0cnVjdCgpLl9fc2V0c3RhdGVfXyh7fSwgYidmb28nKQorCisgICAgICAgIGNsYXNzIFdvcnNlU3RydWN0KFN0cnVjdHVyZSk6CisgICAgICAgICAgICBAcHJvcGVydHkKKyAgICAgICAgICAgIGRlZiBfX2RpY3RfXyhzZWxmKToKKyAgICAgICAgICAgICAgICAxLzAuMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIFdvcnNlU3RydWN0KCkuX19zZXRzdGF0ZV9fKHt9LCBiJ2ZvbycpCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKaW5kZXggM2UwMDdlMS4uNDlhMTM1NiAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CkBAIC0xMDksNiArMTA5LDM0IEBACiAjIFRoaXMgdGFibGUgY29udGFpbnMgZm9ybWF0IHN0cmluZ3MgYXMgdGhleSBsb29rIG9uIGxpdHRsZSBlbmRpYW4KICMgbWFjaGluZXMuICBUaGUgdGVzdCByZXBsYWNlcyAnPCcgd2l0aCAnPicgb24gYmlnIGVuZGlhbiBtYWNoaW5lcy4KICMKKworIyBQbGF0Zm9ybS1zcGVjaWZpYyB0eXBlIGNvZGVzCitzX2Jvb2wgPSB7MTogJz8nLCAyOiAnSCcsIDQ6ICdMJywgODogJ1EnfVtzaXplb2YoY19ib29sKV0KK3Nfc2hvcnQgPSB7MjogJ2gnLCA0OiAnbCcsIDg6ICdxJ31bc2l6ZW9mKGNfc2hvcnQpXQorc191c2hvcnQgPSB7MjogJ0gnLCA0OiAnTCcsIDg6ICdRJ31bc2l6ZW9mKGNfdXNob3J0KV0KK3NfaW50ID0gezI6ICdoJywgNDogJ2knLCA4OiAncSd9W3NpemVvZihjX2ludCldCitzX3VpbnQgPSB7MjogJ0gnLCA0OiAnSScsIDg6ICdRJ31bc2l6ZW9mKGNfdWludCldCitzX2xvbmcgPSB7NDogJ2wnLCA4OiAncSd9W3NpemVvZihjX2xvbmcpXQorc191bG9uZyA9IHs0OiAnTCcsIDg6ICdRJ31bc2l6ZW9mKGNfdWxvbmcpXQorc19sb25nbG9uZyA9ICJxIgorc191bG9uZ2xvbmcgPSAiUSIKK3NfZmxvYXQgPSAiZiIKK3NfZG91YmxlID0gImQiCitzX2xvbmdkb3VibGUgPSAiZyIKKworIyBBbGlhcyBkZWZpbml0aW9ucyBpbiBjdHlwZXMvX19pbml0X18ucHkKK2lmIGNfaW50IGlzIGNfbG9uZzoKKyAgICBzX2ludCA9IHNfbG9uZworaWYgY191aW50IGlzIGNfdWxvbmc6CisgICAgc191aW50ID0gc191bG9uZworaWYgY19sb25nbG9uZyBpcyBjX2xvbmc6CisgICAgc19sb25nbG9uZyA9IHNfbG9uZworaWYgY191bG9uZ2xvbmcgaXMgY191bG9uZzoKKyAgICBzX3Vsb25nbG9uZyA9IHNfdWxvbmcKK2lmIGNfbG9uZ2RvdWJsZSBpcyBjX2RvdWJsZToKKyAgICBzX2xvbmdkb3VibGUgPSBzX2RvdWJsZQorCisKIG5hdGl2ZV90eXBlcyA9IFsKICAgICAjIHR5cGUgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0ICAgICAgICAgICAgICAgICAgc2hhcGUgICAgICAgICAgIGNhbGMgaXRlbXNpemUKIApAQCAtMTE3LDUyICsxNDUsNTEgQEAKICAgICAoY19jaGFyLCAgICAgICAgICAgICAgICAgICAgIjxjIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfY2hhciksCiAgICAgKGNfYnl0ZSwgICAgICAgICAgICAgICAgICAgICI8YiIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2J5dGUpLAogICAgIChjX3VieXRlLCAgICAgICAgICAgICAgICAgICAiPEIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191Ynl0ZSksCi0gICAgKGNfc2hvcnQsICAgICAgICAgICAgICAgICAgICI8aCIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3Nob3J0KSwKLSAgICAoY191c2hvcnQsICAgICAgICAgICAgICAgICAgIjxIIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdXNob3J0KSwKKyAgICAoY19zaG9ydCwgICAgICAgICAgICAgICAgICAgIjwiICsgc19zaG9ydCwgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfc2hvcnQpLAorICAgIChjX3VzaG9ydCwgICAgICAgICAgICAgICAgICAiPCIgKyBzX3VzaG9ydCwgICAgICAgICBOb25lLCAgICAgICAgICAgY191c2hvcnQpLAogCi0gICAgIyBjX2ludCBhbmQgY191aW50IG1heSBiZSBhbGlhc2VzIHRvIGNfbG9uZwotICAgICMoY19pbnQsICAgICAgICAgICAgICAgICAgICAgIjxpIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfaW50KSwKLSAgICAjKGNfdWludCwgICAgICAgICAgICAgICAgICAgICI8SSIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX3VpbnQpLAorICAgIChjX2ludCwgICAgICAgICAgICAgICAgICAgICAiPCIgKyBzX2ludCwgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19pbnQpLAorICAgIChjX3VpbnQsICAgICAgICAgICAgICAgICAgICAiPCIgKyBzX3VpbnQsICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191aW50KSwKIAotICAgIChjX2xvbmcsICAgICAgICAgICAgICAgICAgICAiPGwiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19sb25nKSwKLSAgICAoY191bG9uZywgICAgICAgICAgICAgICAgICAgIjxMIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdWxvbmcpLAorICAgIChjX2xvbmcsICAgICAgICAgICAgICAgICAgICAiPCIgKyBzX2xvbmcsICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19sb25nKSwKKyAgICAoY191bG9uZywgICAgICAgICAgICAgICAgICAgIjwiICsgc191bG9uZywgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfdWxvbmcpLAogCi0gICAgIyBjX2xvbmdsb25nIGFuZCBjX3Vsb25nbG9uZyBhcmUgYWxpYXNlcyBvbiA2NC1iaXQgcGxhdGZvcm1zCi0gICAgIyhjX2xvbmdsb25nLCAgICAgICAgICAgICAgICAiPHEiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19sb25nbG9uZyksCi0gICAgIyhjX3Vsb25nbG9uZywgICAgICAgICAgICAgICAiPFEiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY191bG9uZ2xvbmcpLAorICAgIChjX2xvbmdsb25nLCAgICAgICAgICAgICAgICAiPCIgKyBzX2xvbmdsb25nLCAgICAgICBOb25lLCAgICAgICAgICAgY19sb25nbG9uZyksCisgICAgKGNfdWxvbmdsb25nLCAgICAgICAgICAgICAgICI8IiArIHNfdWxvbmdsb25nLCAgICAgIE5vbmUsICAgICAgICAgICBjX3Vsb25nbG9uZyksCiAKICAgICAoY19mbG9hdCwgICAgICAgICAgICAgICAgICAgIjxmIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIGNfZmxvYXQpLAogICAgIChjX2RvdWJsZSwgICAgICAgICAgICAgICAgICAiPGQiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19kb3VibGUpLAotICAgICMgY19sb25nZG91YmxlIG1heSBiZSBhbiBhbGlhcyB0byBjX2RvdWJsZQogCi0gICAgKGNfYm9vbCwgICAgICAgICAgICAgICAgICAgICI8PyIsICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBjX2Jvb2wpLAorICAgIChjX2xvbmdkb3VibGUsICAgICAgICAgICAgICAiPCIgKyBzX2xvbmdkb3VibGUsICAgICBOb25lLCAgICAgICAgICAgY19sb25nZG91YmxlKSwKKworICAgIChjX2Jvb2wsICAgICAgICAgICAgICAgICAgICAiPCIgKyBzX2Jvb2wsICAgICAgICAgICBOb25lLCAgICAgICAgICAgY19ib29sKSwKICAgICAocHlfb2JqZWN0LCAgICAgICAgICAgICAgICAgIjxPIiwgICAgICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIHB5X29iamVjdCksCiAKICAgICAjIyBwb2ludGVycwogCiAgICAgKFBPSU5URVIoY19ieXRlKSwgICAgICAgICAgICImPGIiLCAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKGNfYnl0ZSkpLAotICAgIChQT0lOVEVSKFBPSU5URVIoY19sb25nKSksICAiJiY8bCIsICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihQT0lOVEVSKGNfbG9uZykpKSwKKyAgICAoUE9JTlRFUihQT0lOVEVSKGNfbG9uZykpLCAgIiYmPCIgKyBzX2xvbmcsICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoUE9JTlRFUihjX2xvbmcpKSksCiAKICAgICAjIyBhcnJheXMgYW5kIHBvaW50ZXJzCiAKICAgICAoY19kb3VibGUgKiA0LCAgICAgICAgICAgICAgIjxkIiwgICAgICAgICAgICAgICAgICAgKDQsKSwgICAgICAgICAgIGNfZG91YmxlKSwKICAgICAoY19mbG9hdCAqIDQgKiAzICogMiwgICAgICAgIjxmIiwgICAgICAgICAgICAgICAgICAgKDIsMyw0KSwgICAgICAgIGNfZmxvYXQpLAotICAgIChQT0lOVEVSKGNfc2hvcnQpICogMiwgICAgICAiJjxoIiwgICAgICAgICAgICAgICAgICAoMiwpLCAgICAgICAgICAgUE9JTlRFUihjX3Nob3J0KSksCi0gICAgKFBPSU5URVIoY19zaG9ydCkgKiAyICogMywgICImPGgiLCAgICAgICAgICAgICAgICAgICgzLDIsKSwgICAgICAgICBQT0lOVEVSKGNfc2hvcnQpKSwKLSAgICAoUE9JTlRFUihjX3Nob3J0ICogMiksICAgICAgIiYoMik8aCIsICAgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoY19zaG9ydCkpLAorICAgIChQT0lOVEVSKGNfc2hvcnQpICogMiwgICAgICAiJjwiICsgc19zaG9ydCwgICAgICAgICAoMiwpLCAgICAgICAgICAgUE9JTlRFUihjX3Nob3J0KSksCisgICAgKFBPSU5URVIoY19zaG9ydCkgKiAyICogMywgICImPCIgKyBzX3Nob3J0LCAgICAgICAgICgzLDIsKSwgICAgICAgICBQT0lOVEVSKGNfc2hvcnQpKSwKKyAgICAoUE9JTlRFUihjX3Nob3J0ICogMiksICAgICAgIiYoMik8IiArIHNfc2hvcnQsICAgICAgTm9uZSwgICAgICAgICAgICAgUE9JTlRFUihjX3Nob3J0KSksCiAKICAgICAjIyBzdHJ1Y3R1cmVzIGFuZCB1bmlvbnMKIAotICAgIChQb2ludCwgICAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICBOb25lLCAgICAgICAgICAgUG9pbnQpLAorICAgIChQb2ludCwgICAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIucmVwbGFjZSgnbCcsIHNfbG9uZyksICBOb25lLCAgUG9pbnQpLAogICAgICMgcGFja2VkIHN0cnVjdHVyZXMgZG8gbm90IGltcGxlbWVudCB0aGUgcGVwCi0gICAgKFBhY2tlZFBvaW50LCAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBQYWNrZWRQb2ludCksCi0gICAgKFBvaW50MiwgICAgICAgICAgICAgICAgICAgICJUezxsOng6PGw6eTp9IiwgICAgICAgIE5vbmUsICAgICAgICAgICBQb2ludDIpLAotICAgIChFbXB0eVN0cnVjdCwgICAgICAgICAgICAgICAiVHt9IiwgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgRW1wdHlTdHJ1Y3QpLAorICAgIChQYWNrZWRQb2ludCwgICAgICAgICAgICAgICAiQiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCAgUGFja2VkUG9pbnQpLAorICAgIChQb2ludDIsICAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIucmVwbGFjZSgnbCcsIHNfbG9uZyksICBOb25lLCAgUG9pbnQyKSwKKyAgICAoRW1wdHlTdHJ1Y3QsICAgICAgICAgICAgICAgIlR7fSIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgIEVtcHR5U3RydWN0KSwKICAgICAjIHRoZSBwZXAgZG9lcyd0IHN1cHBvcnQgdW5pb25zCi0gICAgKGFVbmlvbiwgICAgICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBhVW5pb24pLAorICAgIChhVW5pb24sICAgICAgICAgICAgICAgICAgICAiQiIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lLCAgYVVuaW9uKSwKICAgICAjIHN0cnVjdHVyZSB3aXRoIHN1Yi1hcnJheXMKLSAgICAoU3RydWN0V2l0aEFycmF5cywgICAgICAgICAgIlR7KDIsMyk8bDp4Oig0KVR7PGw6eDo8bDp5On06eTp9IiwgTm9uZSwgIFN0cnVjdFdpdGhBcnJheXMpLAotICAgIChTdHJ1Y3RXaXRoQXJyYXlzICogMywgICAgICAiVHsoMiwzKTxsOng6KDQpVHs8bDp4OjxsOnk6fTp5On0iLCAoMywpLCAgU3RydWN0V2l0aEFycmF5cyksCisgICAgKFN0cnVjdFdpdGhBcnJheXMsICJUeygyLDMpPGw6eDooNClUezxsOng6PGw6eTp9Onk6fSIucmVwbGFjZSgnbCcsIHNfbG9uZyksIE5vbmUsIFN0cnVjdFdpdGhBcnJheXMpLAorICAgIChTdHJ1Y3RXaXRoQXJyYXlzICogMywgIlR7KDIsMyk8bDp4Oig0KVR7PGw6eDo8bDp5On06eTp9Ii5yZXBsYWNlKCdsJywgc19sb25nKSwgKDMsKSwgU3RydWN0V2l0aEFycmF5cyksCiAKICAgICAjIyBwb2ludGVyIHRvIGluY29tcGxldGUgc3RydWN0dXJlCiAgICAgKEluY29tcGxldGUsICAgICAgICAgICAgICAgICJCIiwgICAgICAgICAgICAgICAgICAgIE5vbmUsICAgICAgICAgICBJbmNvbXBsZXRlKSwKQEAgLTE3MCw3ICsxOTcsNyBAQAogCiAgICAgIyAnQ29tcGxldGUnIGlzIGEgc3RydWN0dXJlIHRoYXQgc3RhcnRzIGluY29tcGxldGUsIGJ1dCBpcyBjb21wbGV0ZWQgYWZ0ZXIgdGhlCiAgICAgIyBwb2ludGVyIHR5cGUgdG8gaXQgaGFzIGJlZW4gY3JlYXRlZC4KLSAgICAoQ29tcGxldGUsICAgICAgICAgICAgICAgICAgIlR7PGw6YTp9IiwgICAgICAgICAgICAgTm9uZSwgICAgICAgICAgIENvbXBsZXRlKSwKKyAgICAoQ29tcGxldGUsICAgICAgICAgICAgICAgICAgIlR7PGw6YTp9Ii5yZXBsYWNlKCdsJywgc19sb25nKSwgTm9uZSwgQ29tcGxldGUpLAogICAgICMgVW5mb3J0dW5hdGVseSB0aGUgcG9pbnRlciBmb3JtYXQgc3RyaW5nIGlzIG5vdCBmaXhlZC4uLgogICAgIChQT0lOVEVSKENvbXBsZXRlKSwgICAgICAgICAiJkIiLCAgICAgICAgICAgICAgICAgICBOb25lLCAgICAgICAgICAgUE9JTlRFUihDb21wbGV0ZSkpLAogCkBAIC0xOTMsMTAgKzIyMCwxMCBAQAogIyBhbmQgbGl0dGxlIGVuZGlhbiBtYWNoaW5lcy4KICMKIGVuZGlhbl90eXBlcyA9IFsKLSAgICAoQkVQb2ludCwgICAgICAgICAgICAgICAgICAgIlR7Pmw6eDo+bDp5On0iLCAgICAgICAgTm9uZSwgICAgICAgICAgIEJFUG9pbnQpLAotICAgIChMRVBvaW50LCAgICAgICAgICAgICAgICAgICAiVHs8bDp4OjxsOnk6fSIsICAgICAgICBOb25lLCAgICAgICAgICAgTEVQb2ludCksCi0gICAgKFBPSU5URVIoQkVQb2ludCksICAgICAgICAgICImVHs+bDp4Oj5sOnk6fSIsICAgICAgIE5vbmUsICAgICAgICAgICBQT0lOVEVSKEJFUG9pbnQpKSwKLSAgICAoUE9JTlRFUihMRVBvaW50KSwgICAgICAgICAgIiZUezxsOng6PGw6eTp9IiwgICAgICAgTm9uZSwgICAgICAgICAgIFBPSU5URVIoTEVQb2ludCkpLAorICAgIChCRVBvaW50LCAiVHs+bDp4Oj5sOnk6fSIucmVwbGFjZSgnbCcsIHNfbG9uZyksIE5vbmUsIEJFUG9pbnQpLAorICAgIChMRVBvaW50LCAiVHs8bDp4OjxsOnk6fSIucmVwbGFjZSgnbCcsIHNfbG9uZyksIE5vbmUsIExFUG9pbnQpLAorICAgIChQT0lOVEVSKEJFUG9pbnQpLCAiJlR7Pmw6eDo+bDp5On0iLnJlcGxhY2UoJ2wnLCBzX2xvbmcpLCBOb25lLCBQT0lOVEVSKEJFUG9pbnQpKSwKKyAgICAoUE9JTlRFUihMRVBvaW50KSwgIiZUezxsOng6PGw6eTp9Ii5yZXBsYWNlKCdsJywgc19sb25nKSwgTm9uZSwgUE9JTlRFUihMRVBvaW50KSksCiAgICAgXQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcG9pbnRlcnMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wb2ludGVycy5weQppbmRleCAyNGIwNTQ2Li40YTg4ODdjIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wb2ludGVycy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wb2ludGVycy5weQpAQCAtMjEwLDYgKzIxMCwxMSBAQAogICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgX3BvaW50ZXJfdHlwZV9jYWNoZQogICAgICAgICBkZWwgX3BvaW50ZXJfdHlwZV9jYWNoZVtpZChQKV0KIAorICAgIGRlZiB0ZXN0X2Fic3RyYWN0KHNlbGYpOgorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgX1BvaW50ZXIKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF9Qb2ludGVyLnNldF90eXBlLCA0MikKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0X2ZpZWxkcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdF9maWVsZHMucHkKaW5kZXggMjJlYjNiMC4uODA0NWNjOCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0X2ZpZWxkcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3RfZmllbGRzLnB5CkBAIC00Niw1ICs0NiwyOSBAQAogICAgICAgICBZLl9maWVsZHNfID0gW10KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIFgsICJfZmllbGRzXyIsIFtdKQogCisgICAgIyBfX3NldF9fIGFuZCBfX2dldF9fIHNob3VsZCByYWlzZSBhIFR5cGVFcnJvciBpbiBjYXNlIHRoZWlyIHNlbGYKKyAgICAjIGFyZ3VtZW50IGlzIG5vdCBhIGN0eXBlIGluc3RhbmNlLgorICAgIGRlZiB0ZXN0X19fc2V0X18oc2VsZik6CisgICAgICAgIGNsYXNzIE15Q1N0cnVjdChTdHJ1Y3R1cmUpOgorICAgICAgICAgICAgX2ZpZWxkc18gPSAoKCJmaWVsZCIsIGNfaW50KSwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTXlDU3RydWN0LmZpZWxkLl9fc2V0X18sICd3cm9uZyB0eXBlIHNlbGYnLCA0MikKKworICAgICAgICBjbGFzcyBNeUNVbmlvbihVbmlvbik6CisgICAgICAgICAgICBfZmllbGRzXyA9ICgoImZpZWxkIiwgY19pbnQpLCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBNeUNVbmlvbi5maWVsZC5fX3NldF9fLCAnd3JvbmcgdHlwZSBzZWxmJywgNDIpCisKKyAgICBkZWYgdGVzdF9fX2dldF9fKHNlbGYpOgorICAgICAgICBjbGFzcyBNeUNTdHJ1Y3QoU3RydWN0dXJlKToKKyAgICAgICAgICAgIF9maWVsZHNfID0gKCgiZmllbGQiLCBjX2ludCksKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIE15Q1N0cnVjdC5maWVsZC5fX2dldF9fLCAnd3JvbmcgdHlwZSBzZWxmJywgNDIpCisKKyAgICAgICAgY2xhc3MgTXlDVW5pb24oVW5pb24pOgorICAgICAgICAgICAgX2ZpZWxkc18gPSAoKCJmaWVsZCIsIGNfaW50KSwpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTXlDVW5pb24uZmllbGQuX19nZXRfXywgJ3dyb25nIHR5cGUgc2VsZicsIDQyKQorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0dXJlcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdHVyZXMucHkKaW5kZXggNTY1MDE4OS4uOWE4NjNjOSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0dXJlcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5CkBAIC0zLDYgKzMsNyBAQAogZnJvbSBjdHlwZXMudGVzdCBpbXBvcnQgbmVlZF9zeW1ib2wKIGZyb20gc3RydWN0IGltcG9ydCBjYWxjc2l6ZQogaW1wb3J0IF90ZXN0Y2FwaQoraW1wb3J0IF9jdHlwZXNfdGVzdAogCiBjbGFzcyBTdWJjbGFzc2VzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfc3ViY2xhc3Moc2VsZik6CkBAIC00MDEsNiArNDAyLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgKDEsIDAsIDAsIDAsIDAsIDApKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogWigxLCAyLCAzLCA0LCA1LCA2LCA3KSkKIAorICAgIGRlZiB0ZXN0X3Bhc3NfYnlfdmFsdWUoc2VsZik6CisgICAgICAgICMgVGhpcyBzaG91bGQgbWlycm9yIHRoZSBzdHJ1Y3R1cmUgaW4gTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jCisgICAgICAgIGNsYXNzIFgoU3RydWN0dXJlKToKKyAgICAgICAgICAgIF9maWVsZHNfID0gWworICAgICAgICAgICAgICAgICgnZmlyc3QnLCBjX3Vsb25nKSwKKyAgICAgICAgICAgICAgICAoJ3NlY29uZCcsIGNfdWxvbmcpLAorICAgICAgICAgICAgICAgICgndGhpcmQnLCBjX3Vsb25nKSwKKyAgICAgICAgICAgIF0KKworICAgICAgICBzID0gWCgpCisgICAgICAgIHMuZmlyc3QgPSAweGRlYWRiZWVmCisgICAgICAgIHMuc2Vjb25kID0gMHhjYWZlYmFiZQorICAgICAgICBzLnRoaXJkID0gMHgwYmFkMWRlYQorICAgICAgICBkbGwgPSBDRExMKF9jdHlwZXNfdGVzdC5fX2ZpbGVfXykKKyAgICAgICAgZnVuYyA9IGRsbC5fdGVzdGZ1bmNfbGFyZ2Vfc3RydWN0X3VwZGF0ZV92YWx1ZQorICAgICAgICBmdW5jLmFyZ3R5cGVzID0gKFgsKQorICAgICAgICBmdW5jLnJlc3R5cGUgPSBOb25lCisgICAgICAgIGZ1bmMocykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmZpcnN0LCAweGRlYWRiZWVmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vjb25kLCAweGNhZmViYWJlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMudGhpcmQsIDB4MGJhZDFkZWEpCisKIGNsYXNzIFBvaW50ZXJNZW1iZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9jdXJzZXMvYXNjaWkucHkgYi9MaWIvY3Vyc2VzL2FzY2lpLnB5CmluZGV4IDZhNDY2ZTAuLjViMjQzYmUgMTAwNjQ0Ci0tLSBhL0xpYi9jdXJzZXMvYXNjaWkucHkKKysrIGIvTGliL2N1cnNlcy9hc2NpaS5weQpAQCAtNTMsMTkgKzUzLDE5IEBACiAKIGRlZiBpc2FsbnVtKGMpOiByZXR1cm4gaXNhbHBoYShjKSBvciBpc2RpZ2l0KGMpCiBkZWYgaXNhbHBoYShjKTogcmV0dXJuIGlzdXBwZXIoYykgb3IgaXNsb3dlcihjKQotZGVmIGlzYXNjaWkoYyk6IHJldHVybiBfY3RvaShjKSA8PSAxMjcgICAgICAgICAgIyA/CitkZWYgaXNhc2NpaShjKTogcmV0dXJuIDAgPD0gX2N0b2koYykgPD0gMTI3ICAgICAgICAgICMgPwogZGVmIGlzYmxhbmsoYyk6IHJldHVybiBfY3RvaShjKSBpbiAoOSwgMzIpCi1kZWYgaXNjbnRybChjKTogcmV0dXJuIF9jdG9pKGMpIDw9IDMxIG9yIF9jdG9pKGMpID09IDEyNwotZGVmIGlzZGlnaXQoYyk6IHJldHVybiBfY3RvaShjKSA+PSA0OCBhbmQgX2N0b2koYykgPD0gNTcKLWRlZiBpc2dyYXBoKGMpOiByZXR1cm4gX2N0b2koYykgPj0gMzMgYW5kIF9jdG9pKGMpIDw9IDEyNgotZGVmIGlzbG93ZXIoYyk6IHJldHVybiBfY3RvaShjKSA+PSA5NyBhbmQgX2N0b2koYykgPD0gMTIyCi1kZWYgaXNwcmludChjKTogcmV0dXJuIF9jdG9pKGMpID49IDMyIGFuZCBfY3RvaShjKSA8PSAxMjYKK2RlZiBpc2NudHJsKGMpOiByZXR1cm4gMCA8PSBfY3RvaShjKSA8PSAzMSBvciBfY3RvaShjKSA9PSAxMjcKK2RlZiBpc2RpZ2l0KGMpOiByZXR1cm4gNDggPD0gX2N0b2koYykgPD0gNTcKK2RlZiBpc2dyYXBoKGMpOiByZXR1cm4gMzMgPD0gX2N0b2koYykgPD0gMTI2CitkZWYgaXNsb3dlcihjKTogcmV0dXJuIDk3IDw9IF9jdG9pKGMpIDw9IDEyMgorZGVmIGlzcHJpbnQoYyk6IHJldHVybiAzMiA8PSBfY3RvaShjKSA8PSAxMjYKIGRlZiBpc3B1bmN0KGMpOiByZXR1cm4gaXNncmFwaChjKSBhbmQgbm90IGlzYWxudW0oYykKIGRlZiBpc3NwYWNlKGMpOiByZXR1cm4gX2N0b2koYykgaW4gKDksIDEwLCAxMSwgMTIsIDEzLCAzMikKLWRlZiBpc3VwcGVyKGMpOiByZXR1cm4gX2N0b2koYykgPj0gNjUgYW5kIF9jdG9pKGMpIDw9IDkwCitkZWYgaXN1cHBlcihjKTogcmV0dXJuIDY1IDw9IF9jdG9pKGMpIDw9IDkwCiBkZWYgaXN4ZGlnaXQoYyk6IHJldHVybiBpc2RpZ2l0KGMpIG9yIFwKLSAgICAoX2N0b2koYykgPj0gNjUgYW5kIF9jdG9pKGMpIDw9IDcwKSBvciAoX2N0b2koYykgPj0gOTcgYW5kIF9jdG9pKGMpIDw9IDEwMikKLWRlZiBpc2N0cmwoYyk6IHJldHVybiBfY3RvaShjKSA8IDMyCisgICAgKDY1IDw9IF9jdG9pKGMpIDw9IDcwKSBvciAoOTcgPD0gX2N0b2koYykgPD0gMTAyKQorZGVmIGlzY3RybChjKTogcmV0dXJuIDAgPD0gX2N0b2koYykgPCAzMgogZGVmIGlzbWV0YShjKTogcmV0dXJuIF9jdG9pKGMpID4gMTI3CiAKIGRlZiBhc2NpaShjKToKZGlmZiAtLWdpdCBhL0xpYi9jdXJzZXMvaGFzX2tleS5weSBiL0xpYi9jdXJzZXMvaGFzX2tleS5weQppbmRleCAxZGQ1YTNiLi42MGI3YmU5IDEwMDY0NAotLS0gYS9MaWIvY3Vyc2VzL2hhc19rZXkucHkKKysrIGIvTGliL2N1cnNlcy9oYXNfa2V5LnB5CkBAIC0xODIsNyArMTgyLDcgQEAKICAgICAgICAgTCA9IFtdCiAgICAgICAgIF9jdXJzZXMuaW5pdHNjcigpCiAgICAgICAgIGZvciBrZXkgaW4gX2NhcGFiaWxpdHlfbmFtZXMua2V5cygpOgotICAgICAgICAgICAgc3lzdGVtID0ga2V5IGluIF9jdXJzZXMKKyAgICAgICAgICAgIHN5c3RlbSA9IF9jdXJzZXMuaGFzX2tleShrZXkpCiAgICAgICAgICAgICBweXRob24gPSBoYXNfa2V5KGtleSkKICAgICAgICAgICAgIGlmIHN5c3RlbSAhPSBweXRob246CiAgICAgICAgICAgICAgICAgTC5hcHBlbmQoICdNaXNtYXRjaCBmb3Iga2V5ICVzLCBzeXN0ZW09JWksIFB5dGhvbj0laScKZGlmZiAtLWdpdCBhL0xpYi9jdXJzZXMvdGV4dHBhZC5weSBiL0xpYi9jdXJzZXMvdGV4dHBhZC5weQppbmRleCBjNDUzNjFjLi5iNTBjMDNhIDEwMDY0NAotLS0gYS9MaWIvY3Vyc2VzL3RleHRwYWQucHkKKysrIGIvTGliL2N1cnNlcy90ZXh0cGFkLnB5CkBAIC00MywxNiArNDMsMjAgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgd2luLCBpbnNlcnRfbW9kZT1GYWxzZSk6CiAgICAgICAgIHNlbGYud2luID0gd2luCiAgICAgICAgIHNlbGYuaW5zZXJ0X21vZGUgPSBpbnNlcnRfbW9kZQotICAgICAgICAoc2VsZi5tYXh5LCBzZWxmLm1heHgpID0gd2luLmdldG1heHl4KCkKLSAgICAgICAgc2VsZi5tYXh5ID0gc2VsZi5tYXh5IC0gMQotICAgICAgICBzZWxmLm1heHggPSBzZWxmLm1heHggLSAxCisgICAgICAgIHNlbGYuX3VwZGF0ZV9tYXhfeXgoKQogICAgICAgICBzZWxmLnN0cmlwc3BhY2VzID0gMQogICAgICAgICBzZWxmLmxhc3RjbWQgPSBOb25lCiAgICAgICAgIHdpbi5rZXlwYWQoMSkKIAorICAgIGRlZiBfdXBkYXRlX21heF95eChzZWxmKToKKyAgICAgICAgbWF4eSwgbWF4eCA9IHNlbGYud2luLmdldG1heHl4KCkKKyAgICAgICAgc2VsZi5tYXh5ID0gbWF4eSAtIDEKKyAgICAgICAgc2VsZi5tYXh4ID0gbWF4eCAtIDEKKwogICAgIGRlZiBfZW5kX29mX2xpbmUoc2VsZiwgeSk6CiAgICAgICAgICIiIkdvIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QgYmxhbmsgb24gdGhlIGdpdmVuIGxpbmUsCiAgICAgICAgIHJldHVybmluZyB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLWJsYW5rIGNoYXJhY3Rlci4iIiIKKyAgICAgICAgc2VsZi5fdXBkYXRlX21heF95eCgpCiAgICAgICAgIGxhc3QgPSBzZWxmLm1heHgKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIGlmIGN1cnNlcy5hc2NpaS5hc2NpaShzZWxmLndpbi5pbmNoKHksIGxhc3QpKSAhPSBjdXJzZXMuYXNjaWkuU1A6CkBAIC02NCw4ICs2OCwxMCBAQAogICAgICAgICByZXR1cm4gbGFzdAogCiAgICAgZGVmIF9pbnNlcnRfcHJpbnRhYmxlX2NoYXIoc2VsZiwgY2gpOgorICAgICAgICBzZWxmLl91cGRhdGVfbWF4X3l4KCkKICAgICAgICAgKHksIHgpID0gc2VsZi53aW4uZ2V0eXgoKQotICAgICAgICBpZiB5IDwgc2VsZi5tYXh5IG9yIHggPCBzZWxmLm1heHg6CisgICAgICAgIGJhY2t5eCA9IE5vbmUKKyAgICAgICAgd2hpbGUgeSA8IHNlbGYubWF4eSBvciB4IDwgc2VsZi5tYXh4OgogICAgICAgICAgICAgaWYgc2VsZi5pbnNlcnRfbW9kZToKICAgICAgICAgICAgICAgICBvbGRjaCA9IHNlbGYud2luLmluY2goKQogICAgICAgICAgICAgIyBUaGUgdHJ5LWNhdGNoIGlnbm9yZXMgdGhlIGVycm9yIHdlIHRyaWdnZXIgZnJvbSBzb21lIGN1cnNlcwpAQCAtNzUsMTQgKzgxLDIwIEBACiAgICAgICAgICAgICAgICAgc2VsZi53aW4uYWRkY2goY2gpCiAgICAgICAgICAgICBleGNlcHQgY3Vyc2VzLmVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGlmIHNlbGYuaW5zZXJ0X21vZGU6Ci0gICAgICAgICAgICAgICAgKGJhY2t5LCBiYWNreCkgPSBzZWxmLndpbi5nZXR5eCgpCi0gICAgICAgICAgICAgICAgaWYgY3Vyc2VzLmFzY2lpLmlzcHJpbnQob2xkY2gpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLl9pbnNlcnRfcHJpbnRhYmxlX2NoYXIob2xkY2gpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYud2luLm1vdmUoYmFja3ksIGJhY2t4KQorICAgICAgICAgICAgaWYgbm90IHNlbGYuaW5zZXJ0X21vZGUgb3Igbm90IGN1cnNlcy5hc2NpaS5pc3ByaW50KG9sZGNoKToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgY2ggPSBvbGRjaAorICAgICAgICAgICAgKHksIHgpID0gc2VsZi53aW4uZ2V0eXgoKQorICAgICAgICAgICAgIyBSZW1lbWJlciB3aGVyZSB0byBwdXQgdGhlIGN1cnNvciBiYWNrIHNpbmNlIHdlIGFyZSBpbiBpbnNlcnRfbW9kZQorICAgICAgICAgICAgaWYgYmFja3l4IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYmFja3l4ID0geSwgeAorCisgICAgICAgIGlmIGJhY2t5eCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNlbGYud2luLm1vdmUoKmJhY2t5eCkKIAogICAgIGRlZiBkb19jb21tYW5kKHNlbGYsIGNoKToKICAgICAgICAgIlByb2Nlc3MgYSBzaW5nbGUgZWRpdGluZyBjb21tYW5kLiIKKyAgICAgICAgc2VsZi5fdXBkYXRlX21heF95eCgpCiAgICAgICAgICh5LCB4KSA9IHNlbGYud2luLmdldHl4KCkKICAgICAgICAgc2VsZi5sYXN0Y21kID0gY2gKICAgICAgICAgaWYgY3Vyc2VzLmFzY2lpLmlzcHJpbnQoY2gpOgpAQCAtMTQ4LDYgKzE2MCw3IEBACiAgICAgZGVmIGdhdGhlcihzZWxmKToKICAgICAgICAgIkNvbGxlY3QgYW5kIHJldHVybiB0aGUgY29udGVudHMgb2YgdGhlIHdpbmRvdy4iCiAgICAgICAgIHJlc3VsdCA9ICIiCisgICAgICAgIHNlbGYuX3VwZGF0ZV9tYXhfeXgoKQogICAgICAgICBmb3IgeSBpbiByYW5nZShzZWxmLm1heHkrMSk6CiAgICAgICAgICAgICBzZWxmLndpbi5tb3ZlKHksIDApCiAgICAgICAgICAgICBzdG9wID0gc2VsZi5fZW5kX29mX2xpbmUoeSkKZGlmZiAtLWdpdCBhL0xpYi9kaWZmbGliLnB5IGIvTGliL2RpZmZsaWIucHkKaW5kZXggMWM2ZmJkYi4uNzg4YTkyZCAxMDA2NDQKLS0tIGEvTGliL2RpZmZsaWIucHkKKysrIGIvTGliL2RpZmZsaWIucHkKQEAgLTExMDMsNyArMTEwMyw3IEBACiAKIGltcG9ydCByZQogCi1kZWYgSVNfTElORV9KVU5LKGxpbmUsIHBhdD1yZS5jb21waWxlKHIiXHMqIz9ccyokIikubWF0Y2gpOgorZGVmIElTX0xJTkVfSlVOSyhsaW5lLCBwYXQ9cmUuY29tcGlsZShyIlxzKig/OiNccyopPyQiKS5tYXRjaCk6CiAgICAgciIiIgogICAgIFJldHVybiAxIGZvciBpZ25vcmFibGUgbGluZTogaWZmIGBsaW5lYCBpcyBibGFuayBvciBjb250YWlucyBhIHNpbmdsZSAnIycuCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jY29tcGlsZXIucHkKaW5kZXggNjI1MDZhNi4uODhhOTEwYyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jY29tcGlsZXIucHkKQEAgLTE2MCw3ICsxNjAsNyBAQAogICAgICAgICAgICAgc2VsZi5zZXRfZXhlY3V0YWJsZShrZXksIGFyZ3Nba2V5XSkKIAogICAgIGRlZiBzZXRfZXhlY3V0YWJsZShzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgYmFzZXN0cmluZyk6CiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIGtleSwgc3BsaXRfcXVvdGVkKHZhbHVlKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwga2V5LCB2YWx1ZSkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC91cGxvYWQucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvdXBsb2FkLnB5CmluZGV4IGI3NzNmNDcuLmZmMDQzZDIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC91cGxvYWQucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3VwbG9hZC5weQpAQCAtNTUsNyArNTUsOSBAQAogCiAgICAgZGVmIHJ1bihzZWxmKToKICAgICAgICAgaWYgbm90IHNlbGYuZGlzdHJpYnV0aW9uLmRpc3RfZmlsZXM6Ci0gICAgICAgICAgICByYWlzZSBEaXN0dXRpbHNPcHRpb25FcnJvcigiTm8gZGlzdCBmaWxlIGNyZWF0ZWQgaW4gZWFybGllciBjb21tYW5kIikKKyAgICAgICAgICAgIG1zZyA9ICgiTXVzdCBjcmVhdGUgYW5kIHVwbG9hZCBmaWxlcyBpbiBvbmUgY29tbWFuZCAiCisgICAgICAgICAgICAgICAgICAgIihlLmcuIHNldHVwLnB5IHNkaXN0IHVwbG9hZCkiKQorICAgICAgICAgICAgcmFpc2UgRGlzdHV0aWxzT3B0aW9uRXJyb3IobXNnKQogICAgICAgICBmb3IgY29tbWFuZCwgcHl2ZXJzaW9uLCBmaWxlbmFtZSBpbiBzZWxmLmRpc3RyaWJ1dGlvbi5kaXN0X2ZpbGVzOgogICAgICAgICAgICAgc2VsZi51cGxvYWRfZmlsZShjb21tYW5kLCBweXZlcnNpb24sIGZpbGVuYW1lKQogCkBAIC0xNTUsOCArMTU3LDYgQEAKICAgICAgICAgICAgICAgICBib2R5LndyaXRlKGZuKQogICAgICAgICAgICAgICAgIGJvZHkud3JpdGUoIlxyXG5cclxuIikKICAgICAgICAgICAgICAgICBib2R5LndyaXRlKHZhbHVlKQotICAgICAgICAgICAgICAgIGlmIHZhbHVlIGFuZCB2YWx1ZVstMV0gPT0gJ1xyJzoKLSAgICAgICAgICAgICAgICAgICAgYm9keS53cml0ZSgnXG4nKSAgIyB3cml0ZSBhbiBleHRyYSBuZXdsaW5lIChsdXJ2ZSBNYWNzKQogICAgICAgICBib2R5LndyaXRlKGVuZF9ib3VuZGFyeSkKICAgICAgICAgYm9keSA9IGJvZHkuZ2V0dmFsdWUoKQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3NwYXduLnB5IGIvTGliL2Rpc3R1dGlscy9zcGF3bi5weQppbmRleCAzMjEzNDRhLi43MzdiMjkzIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3NwYXduLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvc3Bhd24ucHkKQEAgLTIwOCw3ICsyMDgsOCBAQAogICAgIG9zLmVudmlyb25bJ1BBVEgnXS4gIFJldHVybnMgdGhlIGNvbXBsZXRlIGZpbGVuYW1lIG9yIE5vbmUgaWYgbm90IGZvdW5kLgogICAgICIiIgogICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQorICAgICAgICBwYXRoID0gb3MuZW52aXJvbi5nZXQoJ1BBVEgnLCBvcy5kZWZwYXRoKQorCiAgICAgcGF0aHMgPSBwYXRoLnNwbGl0KG9zLnBhdGhzZXApCiAgICAgYmFzZSwgZXh0ID0gb3MucGF0aC5zcGxpdGV4dChleGVjdXRhYmxlKQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQppbmRleCA0NzVhODI3Li44MjQ4YzA4IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKQEAgLTk5LDcgKzk5LDcgQEAKICAgICBAdW5pdHRlc3Quc2tpcElmKGZpbmRfZXhlY3V0YWJsZSgncnBtYnVpbGQnKSBpcyBOb25lLAogICAgICAgICAgICAgICAgICAgICAgJ3RoZSBycG1idWlsZCBjb21tYW5kIGlzIG5vdCBmb3VuZCcpCiAgICAgZGVmIHRlc3Rfbm9fb3B0aW1pemVfZmxhZyhzZWxmKToKLSAgICAgICAgIyBsZXQncyBjcmVhdGUgYSBwYWNrYWdlIHRoYXQgYnJha2VzIGJkaXN0X3JwbQorICAgICAgICAjIGxldCdzIGNyZWF0ZSBhIHBhY2thZ2UgdGhhdCBicmVha3MgYmRpc3RfcnBtCiAgICAgICAgIHRtcF9kaXIgPSBzZWxmLm1rZHRlbXAoKQogICAgICAgICBvcy5lbnZpcm9uWydIT01FJ10gPSB0bXBfZGlyICAgIyB0byBjb25maW5lIGRpciAnLnJwbWRiJyBjcmVhdGlvbgogICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKHRtcF9kaXIsICdmb28nKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKaW5kZXggYTQ0OTRkYi4uYTZkMmQyZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CkBAIC0yMCw2ICsyMCw3IEBACiAKIGNsYXNzIEJ1aWxkRXh0VGVzdENhc2Uoc3VwcG9ydC5UZW1wZGlyTWFuYWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydC5Mb2dnaW5nU2lsZW5jZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQuRW52aXJvbkd1YXJkLAogICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzdXBlcihCdWlsZEV4dFRlc3RDYXNlLCBzZWxmKS5zZXRVcCgpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2Njb21waWxlci5weQppbmRleCA0NDZlYWMyLi40OTc2MDk4IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2NvbXBpbGVyLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jY29tcGlsZXIucHkKQEAgLTI0LDYgKzI0LDMwIEBACiAKIGNsYXNzIENDb21waWxlclRlc3RDYXNlKHN1cHBvcnQuRW52aXJvbkd1YXJkLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKKyAgICBkZWYgdGVzdF9zZXRfZXhlY3V0YWJsZXMoc2VsZik6CisgICAgICAgIGNsYXNzIE15Q0NvbXBpbGVyKENDb21waWxlcik6CisgICAgICAgICAgICBleGVjdXRhYmxlcyA9IHsnY29tcGlsZXInOiAnJywgJ2NvbXBpbGVyX2N4eCc6ICcnLCAnbGlua2VyJzogJyd9CisKKyAgICAgICAgY29tcGlsZXIgPSBNeUNDb21waWxlcigpCisKKyAgICAgICAgIyBzZXQgZXhlY3V0YWJsZSBhcyBsaXN0CisgICAgICAgIGNvbXBpbGVyLnNldF9leGVjdXRhYmxlcyhjb21waWxlcj1bJ2VudicsICdPTVBJX01QSUNDPWNsYW5nJywgJ21waWNjJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIuY29tcGlsZXIsIFsnZW52JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdPTVBJX01QSUNDPWNsYW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtcGljYyddKQorCisgICAgICAgICMgc2V0IGV4ZWN1dGFibGUgYXMgc3RyaW5nCisgICAgICAgIGNvbXBpbGVyLnNldF9leGVjdXRhYmxlcyhjb21waWxlcl9jeHg9J2VudiBPTVBJX01QSUNYWD1jbGFuZysrIG1waWN4eCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIuY29tcGlsZXJfY3h4LCBbJ2VudicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ09NUElfTVBJQ1hYPWNsYW5nKysnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtcGljeHgnXSkKKworICAgICAgICAjIHNldCBleGVjdXRhYmxlIGFzIHVuaWNvZGUgc3RyaW5nCisgICAgICAgIGNvbXBpbGVyLnNldF9leGVjdXRhYmxlcyhsaW5rZXI9dSdlbnYgT01QSV9NUElDWFg9Y2xhbmcrKyBtcGlDQycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIubGlua2VyLCBbdSdlbnYnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUnT01QSV9NUElDWFg9Y2xhbmcrKycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSdtcGlDQyddKQorCiAgICAgZGVmIHRlc3RfZ2VuX2xpYl9vcHRpb25zKHNlbGYpOgogICAgICAgICBjb21waWxlciA9IEZha2VDb21waWxlcigpCiAgICAgICAgIGxpYmRpcnMgPSBbJ2xpYjEnLCAnbGliMiddCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2hlY2sucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2hlY2sucHkKaW5kZXggODEwNThiMS4uZTk0NjQ3ZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NoZWNrLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jaGVjay5weQpAQCAtOCw2ICs4LDEyIEBACiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNTZXR1cEVycm9yCiAKK3RyeToKKyAgICBpbXBvcnQgcHlnbWVudHMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBweWdtZW50cyA9IE5vbmUKKworCiBjbGFzcyBDaGVja1Rlc3RDYXNlKHN1cHBvcnQuTG9nZ2luZ1NpbGVuY2VyLAogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LlRlbXBkaXJNYW5hZ2VyLAogICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMjAsOSArMTI2LDE1IEBACiAgICAgICAgICAgICBwa2dfaW5mbywgZGlzdCA9IHNlbGYuY3JlYXRlX2Rpc3QobG9uZ19kZXNjcmlwdGlvbj1yZXN0X3dpdGhfY29kZSkKICAgICAgICAgICAgIGNtZCA9IGNoZWNrKGRpc3QpCiAgICAgICAgICAgICBjbWQuY2hlY2tfcmVzdHJ1Y3R1cmVkdGV4dCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZC5fd2FybmluZ3MsIDApCiAgICAgICAgICAgICBtc2dzID0gY21kLl9jaGVja19yc3RfZGF0YShyZXN0X3dpdGhfY29kZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZ3MpLCAwKQorICAgICAgICAgICAgaWYgcHlnbWVudHMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obXNncyksIDApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG1zZ3MpLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgIHN0cihtc2dzWzBdWzFdKSwKKyAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBhbmFseXplIGNvZGUuIFB5Z21lbnRzIHBhY2thZ2Ugbm90IGZvdW5kLicKKyAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgdGVzdF9jaGVja19hbGwoc2VsZik6CiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGwucHkKaW5kZXggYzM0OTJiOC4uMzk3ZTJhNyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGwucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGwucHkKQEAgLTI2LDYgKzI2LDcgQEAKIAogCiBjbGFzcyBJbnN0YWxsVGVzdENhc2Uoc3VwcG9ydC5UZW1wZGlyTWFuYWdlciwKKyAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LkVudmlyb25HdWFyZCwKICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0LkxvZ2dpbmdTaWxlbmNlciwKICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weQppbmRleCBkZWZhNTRkLi4wNjFhNzJmIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5CkBAIC0xLDggKzEsMTEgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuc3Bhd24uIiIiCi1pbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcworaW1wb3J0IHN0YXQKK2ltcG9ydCBzeXMKIGltcG9ydCB0aW1lCi1mcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQsIHJ1bl91bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3Rkb3V0LCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCBhcyB0ZXN0X3N1cHBvcnQKIAogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IF9udF9xdW90ZV9hcmdzCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24sIGZpbmRfZXhlY3V0YWJsZQpAQCAtNTMsNiArNTYsNDggQEAKICAgICAgICAgb3MuY2htb2QoZXhlLCAwNzc3KQogICAgICAgICBzcGF3bihbZXhlXSkgICMgc2hvdWxkIHdvcmsgd2l0aG91dCBhbnkgZXJyb3IKIAorICAgIGRlZiB0ZXN0X2ZpbmRfZXhlY3V0YWJsZShzZWxmKToKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQudGVtcF9kaXIoKSBhcyB0bXBfZGlyOgorICAgICAgICAgICAgIyB1c2UgVEVTVEZOIHRvIGdldCBhIHBzZXVkby11bmlxdWUgZmlsZW5hbWUKKyAgICAgICAgICAgIHByb2dyYW1fbm9lZXh0ID0gdGVzdF9zdXBwb3J0LlRFU1RGTgorICAgICAgICAgICAgIyBHaXZlIHRoZSB0ZW1wb3JhcnkgcHJvZ3JhbSBhbiAiLmV4ZSIgc3VmZml4IGZvciBhbGwuCisgICAgICAgICAgICAjIEl0J3MgbmVlZGVkIG9uIFdpbmRvd3MgYW5kIG5vdCBoYXJtZnVsIG9uIG90aGVyIHBsYXRmb3Jtcy4KKyAgICAgICAgICAgIHByb2dyYW0gPSBwcm9ncmFtX25vZWV4dCArICIuZXhlIgorCisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbih0bXBfZGlyLCBwcm9ncmFtKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAid2IiKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBvcy5jaG1vZChmaWxlbmFtZSwgc3RhdC5TX0lYVVNSKQorCisgICAgICAgICAgICAjIHRlc3QgcGF0aCBwYXJhbWV0ZXIKKyAgICAgICAgICAgIHJ2ID0gZmluZF9leGVjdXRhYmxlKHByb2dyYW0sIHBhdGg9dG1wX2RpcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIGZpbGVuYW1lKQorCisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICAgICAjIHRlc3Qgd2l0aG91dCAiLmV4ZSIgZXh0ZW5zaW9uCisgICAgICAgICAgICAgICAgcnYgPSBmaW5kX2V4ZWN1dGFibGUocHJvZ3JhbV9ub2VleHQsIHBhdGg9dG1wX2RpcikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJ2LCBmaWxlbmFtZSkKKworICAgICAgICAgICAgIyB0ZXN0IGZpbmQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5CisgICAgICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5jaGFuZ2VfY3dkKHRtcF9kaXIpOgorICAgICAgICAgICAgICAgIHJ2ID0gZmluZF9leGVjdXRhYmxlKHByb2dyYW0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydiwgcHJvZ3JhbSkKKworICAgICAgICAgICAgIyB0ZXN0IG5vbi1leGlzdGVudCBwcm9ncmFtCisgICAgICAgICAgICBkb250X2V4aXN0X3Byb2dyYW0gPSAiZG9udGV4aXN0XyIgKyBwcm9ncmFtCisgICAgICAgICAgICBydiA9IGZpbmRfZXhlY3V0YWJsZShkb250X2V4aXN0X3Byb2dyYW0gLCBwYXRoPXRtcF9kaXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShydikKKworICAgICAgICAgICAgIyB0ZXN0IG9zLmRlZnBhdGg6IG1pc3NpbmcgUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZQorICAgICAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudjoKKyAgICAgICAgICAgICAgICBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3Bhd24KKyAgICAgICAgICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5zd2FwX2F0dHIoc3Bhd24ub3MsICdkZWZwYXRoJywgdG1wX2Rpcik6CisgICAgICAgICAgICAgICAgICAgIGVudi5wb3AoJ1BBVEgnKQorCisgICAgICAgICAgICAgICAgICAgIHJ2ID0gZmluZF9leGVjdXRhYmxlKHByb2dyYW0pCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnYsIGZpbGVuYW1lKQorCisKIGRlZiB0ZXN0X3N1aXRlKCk6CiAgICAgcmV0dXJuIHVuaXR0ZXN0Lm1ha2VTdWl0ZShTcGF3blRlc3RDYXNlKQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXBsb2FkLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VwbG9hZC5weQppbmRleCAzZDRmMzA1Li5kMjI1NzU0IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXBsb2FkLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF91cGxvYWQucHkKQEAgLTEyOCw2ICsxMjgsMzIgQEAKICAgICAgICAgYXV0aCA9IHNlbGYubGFzdF9vcGVuLnJlcS5oZWFkZXJzWydBdXRob3JpemF0aW9uJ10KICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignXG4nLCBhdXRoKQogCisgICAgIyBicG8tMzIzMDQ6IGFyY2hpdmVzIHdob3NlIGxhc3QgYnl0ZSB3YXMgYidccicgd2VyZSBjb3JydXB0ZWQgZHVlIHRvCisgICAgIyBub3JtYWxpemF0aW9uIGludGVuZGVkIGZvciBNYWMgT1MgOS4KKyAgICBkZWYgdGVzdF91cGxvYWRfY29ycmVjdF9jcihzZWxmKToKKyAgICAgICAgIyBjb250ZW50IHRoYXQgZW5kcyB3aXRoIFxyIHNob3VsZCBub3QgYmUgbW9kaWZpZWQuCisgICAgICAgIHRtcCA9IHNlbGYubWtkdGVtcCgpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4odG1wLCAneHh4JykKKyAgICAgICAgc2VsZi53cml0ZV9maWxlKHBhdGgsIGNvbnRlbnQ9J3l5XHInKQorICAgICAgICBjb21tYW5kLCBweXZlcnNpb24sIGZpbGVuYW1lID0gJ3h4eCcsICcyLjYnLCBwYXRoCisgICAgICAgIGRpc3RfZmlsZXMgPSBbKGNvbW1hbmQsIHB5dmVyc2lvbiwgZmlsZW5hbWUpXQorICAgICAgICBzZWxmLndyaXRlX2ZpbGUoc2VsZi5yYywgUFlQSVJDX0xPTkdfUEFTU1dPUkQpCisKKyAgICAgICAgIyBvdGhlciBmaWVsZHMgdGhhdCBlbmRlZCB3aXRoIFxyIHVzZWQgdG8gYmUgbW9kaWZpZWQsIG5vdyBhcmUKKyAgICAgICAgIyBwcmVzZXJ2ZWQuCisgICAgICAgIHBrZ19kaXIsIGRpc3QgPSBzZWxmLmNyZWF0ZV9kaXN0KAorICAgICAgICAgICAgZGlzdF9maWxlcz1kaXN0X2ZpbGVzLAorICAgICAgICAgICAgZGVzY3JpcHRpb249J2xvbmcgZGVzY3JpcHRpb25ccicKKyAgICAgICAgKQorICAgICAgICBjbWQgPSB1cGxvYWQoZGlzdCkKKyAgICAgICAgY21kLmVuc3VyZV9maW5hbGl6ZWQoKQorICAgICAgICBjbWQucnVuKCkKKworICAgICAgICBoZWFkZXJzID0gZGljdChzZWxmLmxhc3Rfb3Blbi5yZXEuaGVhZGVycykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydDb250ZW50LWxlbmd0aCddLCAnMjE3MCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYidsb25nIGRlc2NyaXB0aW9uXHInLCBzZWxmLmxhc3Rfb3Blbi5yZXEuZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiJ2xvbmcgZGVzY3JpcHRpb25cclxuJywgc2VsZi5sYXN0X29wZW4ucmVxLmRhdGEpCisKICAgICBkZWYgdGVzdF91cGxvYWRfZmFpbHMoc2VsZik6CiAgICAgICAgIHNlbGYubmV4dF9tc2cgPSAiTm90IEZvdW5kIgogICAgICAgICBzZWxmLm5leHRfY29kZSA9IDQwNApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3V0aWwucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQppbmRleCAyZDdiMTAxLi43ODk4ZTA3IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdXRpbC5weQpAQCAtNCwxMCArNCwxMSBAQAogZnJvbSB0ZXN0LnRlc3Rfc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzQnl0ZUNvbXBpbGVFcnJvcgorZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKIGZyb20gZGlzdHV0aWxzLnV0aWwgaW1wb3J0IGJ5dGVfY29tcGlsZSwgZ3Jva19lbnZpcm9ubWVudF9lcnJvcgogCiAKLWNsYXNzIFV0aWxUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBVdGlsVGVzdENhc2Uoc3VwcG9ydC5FbnZpcm9uR3VhcmQsIHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2RvbnRfd3JpdGVfYnl0ZWNvZGUoc2VsZik6CiAgICAgICAgICMgbWFrZXMgc3VyZSBieXRlX2NvbXBpbGUgcmFpc2UgYSBEaXN0dXRpbHNFcnJvcgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL3V0aWxzLnB5IGIvTGliL2VtYWlsL3V0aWxzLnB5CmluZGV4IGFjMTNmNDkuLjViMjI1MjEgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC91dGlscy5weQorKysgYi9MaWIvZW1haWwvdXRpbHMucHkKQEAgLTIxMSw2ICsyMTEsMTIgQEAKIAogCiBkZWYgcGFyc2VhZGRyKGFkZHIpOgorICAgICIiIgorICAgIFBhcnNlIGFkZHIgaW50byBpdHMgY29uc3RpdHVlbnQgcmVhbG5hbWUgYW5kIGVtYWlsIGFkZHJlc3MgcGFydHMuCisKKyAgICBSZXR1cm4gYSB0dXBsZSBvZiByZWFsbmFtZSBhbmQgZW1haWwgYWRkcmVzcywgdW5sZXNzIHRoZSBwYXJzZSBmYWlscywgaW4KKyAgICB3aGljaCBjYXNlIHJldHVybiBhIDItdHVwbGUgb2YgKCcnLCAnJykuCisgICAgIiIiCiAgICAgYWRkcnMgPSBfQWRkcmVzc0xpc3QoYWRkcikuYWRkcmVzc2xpc3QKICAgICBpZiBub3QgYWRkcnM6CiAgICAgICAgIHJldHVybiAnJywgJycKZGlmZiAtLWdpdCBhL0xpYi9lbnN1cmVwaXAvX19pbml0X18ucHkgYi9MaWIvZW5zdXJlcGlwL19faW5pdF9fLnB5CmluZGV4IGMyYWJlZDguLjNjNjc5ZTUgMTAwNjQ0Ci0tLSBhL0xpYi9lbnN1cmVwaXAvX19pbml0X18ucHkKKysrIGIvTGliL2Vuc3VyZXBpcC9fX2luaXRfXy5weQpAQCAtMTIsOSArMTIsOSBAQAogX19hbGxfXyA9IFsidmVyc2lvbiIsICJib290c3RyYXAiXQogCiAKLV9TRVRVUFRPT0xTX1ZFUlNJT04gPSAiMjguOC4wIgorX1NFVFVQVE9PTFNfVkVSU0lPTiA9ICIzOS4wLjEiCiAKLV9QSVBfVkVSU0lPTiA9ICI5LjAuMSIKK19QSVBfVkVSU0lPTiA9ICIxMC4wLjEiCiAKIF9QUk9KRUNUUyA9IFsKICAgICAoInNldHVwdG9vbHMiLCBfU0VUVVBUT09MU19WRVJTSU9OKSwKQEAgLTI4LDggKzI4LDggQEAKICAgICAgICAgc3lzLnBhdGggPSBhZGRpdGlvbmFsX3BhdGhzICsgc3lzLnBhdGgKIAogICAgICMgSW5zdGFsbCB0aGUgYnVuZGxlZCBzb2Z0d2FyZQotICAgIGltcG9ydCBwaXAKLSAgICBwaXAubWFpbihhcmdzKQorICAgIGltcG9ydCBwaXAuX2ludGVybmFsCisgICAgcmV0dXJuIHBpcC5faW50ZXJuYWwubWFpbihhcmdzKQogCiAKIGRlZiB2ZXJzaW9uKCk6CkBAIC02MCw2ICs2MCwyMSBAQAogCiAgICAgTm90ZSB0aGF0IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aWxsIGFsdGVyIGJvdGggc3lzLnBhdGggYW5kIG9zLmVudmlyb24uCiAgICAgIiIiCisgICAgIyBEaXNjYXJkIHRoZSByZXR1cm4gdmFsdWUKKyAgICBfYm9vdHN0cmFwKHJvb3Q9cm9vdCwgdXBncmFkZT11cGdyYWRlLCB1c2VyPXVzZXIsCisgICAgICAgICAgICAgICBhbHRpbnN0YWxsPWFsdGluc3RhbGwsIGRlZmF1bHRfcGlwPWRlZmF1bHRfcGlwLAorICAgICAgICAgICAgICAgdmVyYm9zaXR5PXZlcmJvc2l0eSkKKworCitkZWYgX2Jvb3RzdHJhcChyb290PU5vbmUsIHVwZ3JhZGU9RmFsc2UsIHVzZXI9RmFsc2UsCisgICAgICAgICAgICAgICBhbHRpbnN0YWxsPUZhbHNlLCBkZWZhdWx0X3BpcD1UcnVlLAorICAgICAgICAgICAgICAgdmVyYm9zaXR5PTApOgorICAgICIiIgorICAgIEJvb3RzdHJhcCBwaXAgaW50byB0aGUgY3VycmVudCBQeXRob24gaW5zdGFsbGF0aW9uIChvciB0aGUgZ2l2ZW4gcm9vdAorICAgIGRpcmVjdG9yeSkuIFJldHVybnMgcGlwIGNvbW1hbmQgc3RhdHVzIGNvZGUuCisKKyAgICBOb3RlIHRoYXQgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIHdpbGwgYWx0ZXIgYm90aCBzeXMucGF0aCBhbmQgb3MuZW52aXJvbi4KKyAgICAiIiIKICAgICBpZiBhbHRpbnN0YWxsIGFuZCBkZWZhdWx0X3BpcDoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IHVzZSBhbHRpbnN0YWxsIGFuZCBkZWZhdWx0X3BpcCB0b2dldGhlciIpCiAKQEAgLTEwNSwxMSArMTIwLDEwIEBACiAgICAgICAgIGlmIHZlcmJvc2l0eToKICAgICAgICAgICAgIGFyZ3MgKz0gWyItIiArICJ2IiAqIHZlcmJvc2l0eV0KIAotICAgICAgICBfcnVuX3BpcChhcmdzICsgW3BbMF0gZm9yIHAgaW4gX1BST0pFQ1RTXSwgYWRkaXRpb25hbF9wYXRocykKKyAgICAgICAgcmV0dXJuIF9ydW5fcGlwKGFyZ3MgKyBbcFswXSBmb3IgcCBpbiBfUFJPSkVDVFNdLCBhZGRpdGlvbmFsX3BhdGhzKQogICAgIGZpbmFsbHk6CiAgICAgICAgIHNodXRpbC5ybXRyZWUodG1wZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCiAKLQogZGVmIF91bmluc3RhbGxfaGVscGVyKHZlcmJvc2l0eT0wKToKICAgICAiIiJIZWxwZXIgdG8gc3VwcG9ydCBhIGNsZWFuIGRlZmF1bHQgdW5pbnN0YWxsIHByb2Nlc3Mgb24gV2luZG93cwogCkBAIC0xMzUsNyArMTQ5LDcgQEAKICAgICBpZiB2ZXJib3NpdHk6CiAgICAgICAgIGFyZ3MgKz0gWyItIiArICJ2IiAqIHZlcmJvc2l0eV0KIAotICAgIF9ydW5fcGlwKGFyZ3MgKyBbcFswXSBmb3IgcCBpbiByZXZlcnNlZChfUFJPSkVDVFMpXSkKKyAgICByZXR1cm4gX3J1bl9waXAoYXJncyArIFtwWzBdIGZvciBwIGluIHJldmVyc2VkKF9QUk9KRUNUUyldKQogCiAKIGRlZiBfbWFpbihhcmd2PU5vbmUpOgpAQCAtMTc2LDggKzE5MCw4IEBACiAgICAgICAgICItLWFsdGluc3RhbGwiLAogICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICBkZWZhdWx0PUZhbHNlLAotICAgICAgICBoZWxwPSgiTWFrZSBhbiBhbHRlcm5hdGUgaW5zdGFsbCwgaW5zdGFsbGluZyBvbmx5IHRoZSBYLlkgdmVyc2lvbmVkIgotICAgICAgICAgICAgICAic2NyaXB0cyAoRGVmYXVsdDogcGlwWCwgcGlwWC5ZLCBlYXN5X2luc3RhbGwtWC5ZKSIpLAorICAgICAgICBoZWxwPSgiTWFrZSBhbiBhbHRlcm5hdGUgaW5zdGFsbCwgaW5zdGFsbGluZyBvbmx5IHRoZSBYLlkgdmVyc2lvbmVkICIKKyAgICAgICAgICAgICAgInNjcmlwdHMgKERlZmF1bHQ6IHBpcFgsIHBpcFguWSwgZWFzeV9pbnN0YWxsLVguWSkuIiksCiAgICAgKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICItLWRlZmF1bHQtcGlwIiwKQEAgLTE5Niw3ICsyMTAsNyBAQAogCiAgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKLSAgICBib290c3RyYXAoCisgICAgcmV0dXJuIF9ib290c3RyYXAoCiAgICAgICAgIHJvb3Q9YXJncy5yb290LAogICAgICAgICB1cGdyYWRlPWFyZ3MudXBncmFkZSwKICAgICAgICAgdXNlcj1hcmdzLnVzZXIsCmRpZmYgLS1naXQgYS9MaWIvZW5zdXJlcGlwL19fbWFpbl9fLnB5IGIvTGliL2Vuc3VyZXBpcC9fX21haW5fXy5weQppbmRleCA3NzUyN2Q3Li4wM2VlZjBkIDEwMDY0NAotLS0gYS9MaWIvZW5zdXJlcGlwL19fbWFpbl9fLnB5CisrKyBiL0xpYi9lbnN1cmVwaXAvX19tYWluX18ucHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgZW5zdXJlcGlwCitpbXBvcnQgc3lzCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgZW5zdXJlcGlwLl9tYWluKCkKKyAgICBzeXMuZXhpdChlbnN1cmVwaXAuX21haW4oKSkKZGlmZiAtLWdpdCBhL0xpYi9lbnN1cmVwaXAvX2J1bmRsZWQvcGlwLTEwLjAuMS1weTIucHkzLW5vbmUtYW55LndobCBiL0xpYi9lbnN1cmVwaXAvX2J1bmRsZWQvcGlwLTEwLjAuMS1weTIucHkzLW5vbmUtYW55LndobApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODM3MDkyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2Vuc3VyZXBpcC9fYnVuZGxlZC9waXAtMTAuMC4xLXB5Mi5weTMtbm9uZS1hbnkud2hsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL0xpYi9lbnN1cmVwaXAvX2J1bmRsZWQvcGlwLTkuMC4xLXB5Mi5weTMtbm9uZS1hbnkud2hsIGIvTGliL2Vuc3VyZXBpcC9fYnVuZGxlZC9waXAtOS4wLjEtcHkyLnB5My1ub25lLWFueS53aGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiOGVjYzYuLjAwMDAwMDAKLS0tIGEvTGliL2Vuc3VyZXBpcC9fYnVuZGxlZC9waXAtOS4wLjEtcHkyLnB5My1ub25lLWFueS53aGwKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9MaWIvZW5zdXJlcGlwL19idW5kbGVkL3NldHVwdG9vbHMtMjguOC4wLXB5Mi5weTMtbm9uZS1hbnkud2hsIGIvTGliL2Vuc3VyZXBpcC9fYnVuZGxlZC9zZXR1cHRvb2xzLTI4LjguMC1weTIucHkzLW5vbmUtYW55LndobApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAyZTNjYi4uMDAwMDAwMAotLS0gYS9MaWIvZW5zdXJlcGlwL19idW5kbGVkL3NldHVwdG9vbHMtMjguOC4wLXB5Mi5weTMtbm9uZS1hbnkud2hsCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2Vuc3VyZXBpcC9fYnVuZGxlZC9zZXR1cHRvb2xzLTM5LjAuMS1weTIucHkzLW5vbmUtYW55LndobCBiL0xpYi9lbnN1cmVwaXAvX2J1bmRsZWQvc2V0dXB0b29scy0zOS4wLjEtcHkyLnB5My1ub25lLWFueS53aGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWRjM2NhMgotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9lbnN1cmVwaXAvX2J1bmRsZWQvc2V0dXB0b29scy0zOS4wLjEtcHkyLnB5My1ub25lLWFueS53aGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvTGliL2Vuc3VyZXBpcC9fdW5pbnN0YWxsLnB5IGIvTGliL2Vuc3VyZXBpcC9fdW5pbnN0YWxsLnB5CmluZGV4IDc1MDM2NWUuLmIyNTc5MDQgMTAwNjQ0Ci0tLSBhL0xpYi9lbnN1cmVwaXAvX3VuaW5zdGFsbC5weQorKysgYi9MaWIvZW5zdXJlcGlwL191bmluc3RhbGwucHkKQEAgLTIsNiArMiw3IEBACiAKIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGVuc3VyZXBpcAoraW1wb3J0IHN5cwogCiAKIGRlZiBfbWFpbihhcmd2PU5vbmUpOgpAQCAtMjMsOCArMjQsOCBAQAogCiAgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3YpCiAKLSAgICBlbnN1cmVwaXAuX3VuaW5zdGFsbF9oZWxwZXIodmVyYm9zaXR5PWFyZ3MudmVyYm9zaXR5KQorICAgIHJldHVybiBlbnN1cmVwaXAuX3VuaW5zdGFsbF9oZWxwZXIodmVyYm9zaXR5PWFyZ3MudmVyYm9zaXR5KQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgX21haW4oKQorICAgIHN5cy5leGl0KF9tYWluKCkpCmRpZmYgLS1naXQgYS9MaWIvZnBmb3JtYXQucHkgYi9MaWIvZnBmb3JtYXQucHkKaW5kZXggNzFjYmIyNS4uMDUzN2EyNyAxMDA2NDQKLS0tIGEvTGliL2ZwZm9ybWF0LnB5CisrKyBiL0xpYi9mcGZvcm1hdC5weQpAQCAtMTksNyArMTksNyBAQAogX19hbGxfXyA9IFsiZml4Iiwic2NpIiwiTm90QU51bWJlciJdCiAKICMgQ29tcGlsZWQgcmVndWxhciBleHByZXNzaW9uIHRvICJkZWNvZGUiIGEgbnVtYmVyCi1kZWNvZGVyID0gcmUuY29tcGlsZShyJ14oWy0rXT8pMCooXGQqKSgoPzpcLlxkKik/KSgoW2VFXVstK10/XGQrKT8pJCcpCitkZWNvZGVyID0gcmUuY29tcGlsZShyJ14oWy0rXT8pKFxkKikoKD86XC5cZCopPykoKFtlRV1bLStdP1xkKyk/KSQnKQogIyBcMCB0aGUgd2hvbGUgdGhpbmcKICMgXDEgbGVhZGluZyBzaWduIG9yIGVtcHR5CiAjIFwyIGRpZ2l0cyBsZWZ0IG9mIGRlY2ltYWwgcG9pbnQKQEAgLTQxLDYgKzQxLDcgQEAKICAgICByZXMgPSBkZWNvZGVyLm1hdGNoKHMpCiAgICAgaWYgcmVzIGlzIE5vbmU6IHJhaXNlIE5vdEFOdW1iZXIsIHMKICAgICBzaWduLCBpbnRwYXJ0LCBmcmFjdGlvbiwgZXhwcGFydCA9IHJlcy5ncm91cCgxLDIsMyw0KQorICAgIGludHBhcnQgPSBpbnRwYXJ0LmxzdHJpcCgnMCcpOwogICAgIGlmIHNpZ24gPT0gJysnOiBzaWduID0gJycKICAgICBpZiBmcmFjdGlvbjogZnJhY3Rpb24gPSBmcmFjdGlvblsxOl0KICAgICBpZiBleHBwYXJ0OiBleHBvID0gaW50KGV4cHBhcnRbMTpdKQpkaWZmIC0tZ2l0IGEvTGliL2Z0cGxpYi5weSBiL0xpYi9mdHBsaWIucHkKaW5kZXggMzczOTc0MS4uNjY0NDU1NCAxMDA2NDQKLS0tIGEvTGliL2Z0cGxpYi5weQorKysgYi9MaWIvZnRwbGliLnB5CkBAIC0xNzEsNiArMTcxLDggQEAKIAogICAgICMgSW50ZXJuYWw6IHNlbmQgb25lIGxpbmUgdG8gdGhlIHNlcnZlciwgYXBwZW5kaW5nIENSTEYKICAgICBkZWYgcHV0bGluZShzZWxmLCBsaW5lKToKKyAgICAgICAgaWYgJ1xyJyBpbiBsaW5lIG9yICdcbicgaW4gbGluZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2FuIGlsbGVnYWwgbmV3bGluZSBjaGFyYWN0ZXIgc2hvdWxkIG5vdCBiZSBjb250YWluZWQnKQogICAgICAgICBsaW5lID0gbGluZSArIENSTEYKICAgICAgICAgaWYgc2VsZi5kZWJ1Z2dpbmcgPiAxOiBwcmludCAnKnB1dConLCBzZWxmLnNhbml0aXplKGxpbmUpCiAgICAgICAgIHNlbGYuc29jay5zZW5kYWxsKGxpbmUpCkBAIC00MTIsMTIgKzQxNCwxNCBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEknKQogICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQsIHJlc3QpCi0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICBkYXRhID0gY29ubi5yZWN2KGJsb2Nrc2l6ZSkKLSAgICAgICAgICAgIGlmIG5vdCBkYXRhOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBjYWxsYmFjayhkYXRhKQotICAgICAgICBjb25uLmNsb3NlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICBkYXRhID0gY29ubi5yZWN2KGJsb2Nrc2l6ZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgZGF0YToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBjYWxsYmFjayhkYXRhKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgIGRlZiByZXRybGluZXMoc2VsZiwgY21kLCBjYWxsYmFjayA9IE5vbmUpOgpAQCAtNDM1LDIxICs0MzksMjUgQEAKICAgICAgICAgaWYgY2FsbGJhY2sgaXMgTm9uZTogY2FsbGJhY2sgPSBwcmludF9saW5lCiAgICAgICAgIHJlc3AgPSBzZWxmLnNlbmRjbWQoJ1RZUEUgQScpCiAgICAgICAgIGNvbm4gPSBzZWxmLnRyYW5zZmVyY21kKGNtZCkKLSAgICAgICAgZnAgPSBjb25uLm1ha2VmaWxlKCdyYicpCi0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICBsaW5lID0gZnAucmVhZGxpbmUoc2VsZi5tYXhsaW5lICsgMSkKLSAgICAgICAgICAgIGlmIGxlbihsaW5lKSA+IHNlbGYubWF4bGluZToKLSAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiZ290IG1vcmUgdGhhbiAlZCBieXRlcyIgJSBzZWxmLm1heGxpbmUpCi0gICAgICAgICAgICBpZiBzZWxmLmRlYnVnZ2luZyA+IDI6IHByaW50ICcqcmV0cionLCByZXByKGxpbmUpCi0gICAgICAgICAgICBpZiBub3QgbGluZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgbGluZVstMjpdID09IENSTEY6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0yXQotICAgICAgICAgICAgZWxpZiBsaW5lWy0xOl0gPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZVs6LTFdCi0gICAgICAgICAgICBjYWxsYmFjayhsaW5lKQotICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgIGNvbm4uY2xvc2UoKQorICAgICAgICBmcCA9IE5vbmUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZnAgPSBjb25uLm1ha2VmaWxlKCdyYicpCisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIGxpbmUgPSBmcC5yZWFkbGluZShzZWxmLm1heGxpbmUgKyAxKQorICAgICAgICAgICAgICAgIGlmIGxlbihsaW5lKSA+IHNlbGYubWF4bGluZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXJyb3IoImdvdCBtb3JlIHRoYW4gJWQgYnl0ZXMiICUgc2VsZi5tYXhsaW5lKQorICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdnaW5nID4gMjogcHJpbnQgJypyZXRyKicsIHJlcHIobGluZSkKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBsaW5lWy0yOl0gPT0gQ1JMRjoKKyAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0yXQorICAgICAgICAgICAgICAgIGVsaWYgbGluZVstMTpdID09ICdcbic6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lWzotMV0KKyAgICAgICAgICAgICAgICBjYWxsYmFjayhsaW5lKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgaWYgZnA6CisgICAgICAgICAgICAgICAgZnAuY2xvc2UoKQorICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgIGRlZiBzdG9yYmluYXJ5KHNlbGYsIGNtZCwgZnAsIGJsb2Nrc2l6ZT04MTkyLCBjYWxsYmFjaz1Ob25lLCByZXN0PU5vbmUpOgpAQCAtNDY5LDEyICs0NzcsMTQgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYudm9pZGNtZCgnVFlQRSBJJykKICAgICAgICAgY29ubiA9IHNlbGYudHJhbnNmZXJjbWQoY21kLCByZXN0KQotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgYnVmID0gZnAucmVhZChibG9ja3NpemUpCi0gICAgICAgICAgICBpZiBub3QgYnVmOiBicmVhawotICAgICAgICAgICAgY29ubi5zZW5kYWxsKGJ1ZikKLSAgICAgICAgICAgIGlmIGNhbGxiYWNrOiBjYWxsYmFjayhidWYpCi0gICAgICAgIGNvbm4uY2xvc2UoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aGlsZSAxOgorICAgICAgICAgICAgICAgIGJ1ZiA9IGZwLnJlYWQoYmxvY2tzaXplKQorICAgICAgICAgICAgICAgIGlmIG5vdCBidWY6IGJyZWFrCisgICAgICAgICAgICAgICAgY29ubi5zZW5kYWxsKGJ1ZikKKyAgICAgICAgICAgICAgICBpZiBjYWxsYmFjazogY2FsbGJhY2soYnVmKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgY29ubi5jbG9zZSgpCiAgICAgICAgIHJldHVybiBzZWxmLnZvaWRyZXNwKCkKIAogICAgIGRlZiBzdG9ybGluZXMoc2VsZiwgY21kLCBmcCwgY2FsbGJhY2s9Tm9uZSk6CkBAIC00OTEsMTcgKzUwMSwxOSBAQAogICAgICAgICAiIiIKICAgICAgICAgc2VsZi52b2lkY21kKCdUWVBFIEEnKQogICAgICAgICBjb25uID0gc2VsZi50cmFuc2ZlcmNtZChjbWQpCi0gICAgICAgIHdoaWxlIDE6Ci0gICAgICAgICAgICBidWYgPSBmcC5yZWFkbGluZShzZWxmLm1heGxpbmUgKyAxKQotICAgICAgICAgICAgaWYgbGVuKGJ1ZikgPiBzZWxmLm1heGxpbmU6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXJyb3IoImdvdCBtb3JlIHRoYW4gJWQgYnl0ZXMiICUgc2VsZi5tYXhsaW5lKQotICAgICAgICAgICAgaWYgbm90IGJ1ZjogYnJlYWsKLSAgICAgICAgICAgIGlmIGJ1ZlstMjpdICE9IENSTEY6Ci0gICAgICAgICAgICAgICAgaWYgYnVmWy0xXSBpbiBDUkxGOiBidWYgPSBidWZbOi0xXQotICAgICAgICAgICAgICAgIGJ1ZiA9IGJ1ZiArIENSTEYKLSAgICAgICAgICAgIGNvbm4uc2VuZGFsbChidWYpCi0gICAgICAgICAgICBpZiBjYWxsYmFjazogY2FsbGJhY2soYnVmKQotICAgICAgICBjb25uLmNsb3NlKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2hpbGUgMToKKyAgICAgICAgICAgICAgICBidWYgPSBmcC5yZWFkbGluZShzZWxmLm1heGxpbmUgKyAxKQorICAgICAgICAgICAgICAgIGlmIGxlbihidWYpID4gc2VsZi5tYXhsaW5lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigiZ290IG1vcmUgdGhhbiAlZCBieXRlcyIgJSBzZWxmLm1heGxpbmUpCisgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZjogYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBidWZbLTI6XSAhPSBDUkxGOgorICAgICAgICAgICAgICAgICAgICBpZiBidWZbLTFdIGluIENSTEY6IGJ1ZiA9IGJ1Zls6LTFdCisgICAgICAgICAgICAgICAgICAgIGJ1ZiA9IGJ1ZiArIENSTEYKKyAgICAgICAgICAgICAgICBjb25uLnNlbmRhbGwoYnVmKQorICAgICAgICAgICAgICAgIGlmIGNhbGxiYWNrOiBjYWxsYmFjayhidWYpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBjb25uLmNsb3NlKCkKICAgICAgICAgcmV0dXJuIHNlbGYudm9pZHJlc3AoKQogCiAgICAgZGVmIGFjY3Qoc2VsZiwgcGFzc3dvcmQpOgpkaWZmIC0tZ2l0IGEvTGliL2Z1bmN0b29scy5weSBiL0xpYi9mdW5jdG9vbHMucHkKaW5kZXggNTM2ODBiOC4uNWQ3NTVkNCAxMDA2NDQKLS0tIGEvTGliL2Z1bmN0b29scy5weQorKysgYi9MaWIvZnVuY3Rvb2xzLnB5CkBAIC01NSwyMyArNTUsMjggQEAKICAgICBjb252ZXJ0ID0gewogICAgICAgICAnX19sdF9fJzogWygnX19ndF9fJywgbGFtYmRhIHNlbGYsIG90aGVyOiBub3QgKHNlbGYgPCBvdGhlciBvciBzZWxmID09IG90aGVyKSksCiAgICAgICAgICAgICAgICAgICAgKCdfX2xlX18nLCBsYW1iZGEgc2VsZiwgb3RoZXI6IHNlbGYgPCBvdGhlciBvciBzZWxmID09IG90aGVyKSwKKyAgICAgICAgICAgICAgICAgICAoJ19fbmVfXycsIGxhbWJkYSBzZWxmLCBvdGhlcjogbm90IHNlbGYgPT0gb3RoZXIpLAogICAgICAgICAgICAgICAgICAgICgnX19nZV9fJywgbGFtYmRhIHNlbGYsIG90aGVyOiBub3Qgc2VsZiA8IG90aGVyKV0sCiAgICAgICAgICdfX2xlX18nOiBbKCdfX2dlX18nLCBsYW1iZGEgc2VsZiwgb3RoZXI6IG5vdCBzZWxmIDw9IG90aGVyIG9yIHNlbGYgPT0gb3RoZXIpLAogICAgICAgICAgICAgICAgICAgICgnX19sdF9fJywgbGFtYmRhIHNlbGYsIG90aGVyOiBzZWxmIDw9IG90aGVyIGFuZCBub3Qgc2VsZiA9PSBvdGhlciksCisgICAgICAgICAgICAgICAgICAgKCdfX25lX18nLCBsYW1iZGEgc2VsZiwgb3RoZXI6IG5vdCBzZWxmID09IG90aGVyKSwKICAgICAgICAgICAgICAgICAgICAoJ19fZ3RfXycsIGxhbWJkYSBzZWxmLCBvdGhlcjogbm90IHNlbGYgPD0gb3RoZXIpXSwKICAgICAgICAgJ19fZ3RfXyc6IFsoJ19fbHRfXycsIGxhbWJkYSBzZWxmLCBvdGhlcjogbm90IChzZWxmID4gb3RoZXIgb3Igc2VsZiA9PSBvdGhlcikpLAogICAgICAgICAgICAgICAgICAgICgnX19nZV9fJywgbGFtYmRhIHNlbGYsIG90aGVyOiBzZWxmID4gb3RoZXIgb3Igc2VsZiA9PSBvdGhlciksCisgICAgICAgICAgICAgICAgICAgKCdfX25lX18nLCBsYW1iZGEgc2VsZiwgb3RoZXI6IG5vdCBzZWxmID09IG90aGVyKSwKICAgICAgICAgICAgICAgICAgICAoJ19fbGVfXycsIGxhbWJkYSBzZWxmLCBvdGhlcjogbm90IHNlbGYgPiBvdGhlcildLAogICAgICAgICAnX19nZV9fJzogWygnX19sZV9fJywgbGFtYmRhIHNlbGYsIG90aGVyOiAobm90IHNlbGYgPj0gb3RoZXIpIG9yIHNlbGYgPT0gb3RoZXIpLAogICAgICAgICAgICAgICAgICAgICgnX19ndF9fJywgbGFtYmRhIHNlbGYsIG90aGVyOiBzZWxmID49IG90aGVyIGFuZCBub3Qgc2VsZiA9PSBvdGhlciksCisgICAgICAgICAgICAgICAgICAgKCdfX25lX18nLCBsYW1iZGEgc2VsZiwgb3RoZXI6IG5vdCBzZWxmID09IG90aGVyKSwKICAgICAgICAgICAgICAgICAgICAoJ19fbHRfXycsIGxhbWJkYSBzZWxmLCBvdGhlcjogbm90IHNlbGYgPj0gb3RoZXIpXQogICAgIH0KLSAgICByb290cyA9IHNldChkaXIoY2xzKSkgJiBzZXQoY29udmVydCkKKyAgICBkZWZpbmVkX21ldGhvZHMgPSBzZXQoZGlyKGNscykpCisgICAgcm9vdHMgPSBkZWZpbmVkX21ldGhvZHMgJiBzZXQoY29udmVydCkKICAgICBpZiBub3Qgcm9vdHM6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ211c3QgZGVmaW5lIGF0IGxlYXN0IG9uZSBvcmRlcmluZyBvcGVyYXRpb246IDwgPiA8PSA+PScpCiAgICAgcm9vdCA9IG1heChyb290cykgICAgICAgIyBwcmVmZXIgX19sdF9fIHRvIF9fbGVfXyB0byBfX2d0X18gdG8gX19nZV9fCiAgICAgZm9yIG9wbmFtZSwgb3BmdW5jIGluIGNvbnZlcnRbcm9vdF06Ci0gICAgICAgIGlmIG9wbmFtZSBub3QgaW4gcm9vdHM6CisgICAgICAgIGlmIG9wbmFtZSBub3QgaW4gZGVmaW5lZF9tZXRob2RzOgogICAgICAgICAgICAgb3BmdW5jLl9fbmFtZV9fID0gb3BuYW1lCiAgICAgICAgICAgICBvcGZ1bmMuX19kb2NfXyA9IGdldGF0dHIoaW50LCBvcG5hbWUpLl9fZG9jX18KICAgICAgICAgICAgIHNldGF0dHIoY2xzLCBvcG5hbWUsIG9wZnVuYykKZGlmZiAtLWdpdCBhL0xpYi9nemlwLnB5IGIvTGliL2d6aXAucHkKaW5kZXggMDdjNmRiNC4uNzZhY2UzOSAxMDA2NDQKLS0tIGEvTGliL2d6aXAucHkKKysrIGIvTGliL2d6aXAucHkKQEAgLTk1LDkgKzk1LDggQEAKICAgICAgICAgaWYgZmlsZW5hbWUgaXMgTm9uZToKICAgICAgICAgICAgICMgSXNzdWUgIzEzNzgxOiBvcy5mZG9wZW4oKSBjcmVhdGVzIGEgZmlsZW9iaiB3aXRoIGEgYm9ndXMgbmFtZQogICAgICAgICAgICAgIyBhdHRyaWJ1dGUuIEF2b2lkIHNhdmluZyB0aGlzIGluIHRoZSBnemlwIGhlYWRlcidzIGZpbGVuYW1lIGZpZWxkLgotICAgICAgICAgICAgaWYgaGFzYXR0cihmaWxlb2JqLCAnbmFtZScpIGFuZCBmaWxlb2JqLm5hbWUgIT0gJzxmZG9wZW4+JzoKLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpbGVvYmoubmFtZQotICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gZ2V0YXR0cihmaWxlb2JqLCAnbmFtZScsICcnKQorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsZW5hbWUsIGJhc2VzdHJpbmcpIG9yIGZpbGVuYW1lID09ICc8ZmRvcGVuPic6CiAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAnJwogICAgICAgICBpZiBtb2RlIGlzIE5vbmU6CiAgICAgICAgICAgICBpZiBoYXNhdHRyKGZpbGVvYmosICdtb2RlJyk6IG1vZGUgPSBmaWxlb2JqLm1vZGUKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NhbGxUaXBXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9DYWxsVGlwV2luZG93LnB5CmluZGV4IGU2MzE2NGIuLjJhNDUzZDAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NhbGxUaXBXaW5kb3cucHkKKysrIGIvTGliL2lkbGVsaWIvQ2FsbFRpcFdpbmRvdy5weQpAQCAtNzIsNiArNzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZD0iI2ZmZmZlMCIsIHJlbGllZj1TT0xJRCwgYm9yZGVyd2lkdGg9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnQgPSBzZWxmLndpZGdldFsnZm9udCddKQogICAgICAgICBzZWxmLmxhYmVsLnBhY2soKQorICAgICAgICB0dy51cGRhdGVfaWRsZXRhc2tzKCkKICAgICAgICAgdHcubGlmdCgpICAjIHdvcmsgYXJvdW5kIGJ1ZyBpbiBUayA4LjUuMTgrIChpc3N1ZSAjMjQ1NzApCiAKICAgICAgICAgc2VsZi5jaGVja2hpZGVpZCA9IHNlbGYud2lkZ2V0LmJpbmQoQ0hFQ0tISURFX1ZJUlRVQUxfRVZFTlRfTkFNRSwKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1B5U2hlbGwucHkgYi9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5CmluZGV4IDNlYTFhN2QuLjMzNzUzMGEgMTAwNzU1Ci0tLSBhL0xpYi9pZGxlbGliL1B5U2hlbGwucHkKKysrIGIvTGliL2lkbGVsaWIvUHlTaGVsbC5weQpAQCAtMTA0MCw3ICsxMDQwLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuc2hlbGxfdGl0bGUKIAogICAgIENPUFlSSUdIVCA9IFwKLSAgICAgICAgICAnVHlwZSAiY29weXJpZ2h0IiwgImNyZWRpdHMiIG9yICJsaWNlbnNlKCkiIGZvciBtb3JlIGluZm9ybWF0aW9uLicKKyAgICAgICAgICAnVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3JlZGl0cyIgb3IgImxpY2Vuc2UoKSIgZm9yIG1vcmUgaW5mb3JtYXRpb24uJwogCiAgICAgZGVmIGJlZ2luKHNlbGYpOgogICAgICAgICBzZWxmLnJlc2V0b3V0cHV0KCkKQEAgLTEzNzAsNyArMTM3MCw3IEBACiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQogICAgICAgICBpZiBzaXplIGlzIE5vbmU6CiAgICAgICAgICAgICBzaXplID0gLTEKLSAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIChpbnQsIGxvbmcpKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKICAgICAgICAgcmVzdWx0ID0gc2VsZi5fbGluZV9idWZmZXIKICAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSAnJwpAQCAtMTM5Myw3ICsxMzkzLDcgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCiAgICAgICAgIGlmIHNpemUgaXMgTm9uZToKICAgICAgICAgICAgIHNpemUgPSAtMQotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6CisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgKGludCwgbG9uZykpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQogICAgICAgICBsaW5lID0gc2VsZi5fbGluZV9idWZmZXIgb3Igc2VsZi5zaGVsbC5yZWFkbGluZSgpCiAgICAgICAgIGlmIHNpemUgPCAwOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvYWJvdXREaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9hYm91dERpYWxvZy5weQppbmRleCBjOWFkYzA4Li44N2Q2YzNjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9hYm91dERpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9hYm91dERpYWxvZy5weQpAQCAtMTQxLDYgKzE0MSw3IEBACiAgICAgICAgIHRleHRWaWV3LnZpZXdfZmlsZShzZWxmLCB0aXRsZSwgZm4sIGVuY29kaW5nKQogCiAgICAgZGVmIE9rKHNlbGYsIGV2ZW50PU5vbmUpOgorICAgICAgICBzZWxmLmdyYWJfcmVsZWFzZSgpCiAgICAgICAgIHNlbGYuZGVzdHJveSgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9jb25maWdEaWFsb2cucHkKaW5kZXggZDUzZjVmZi4uM2MyOWFmMSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZ0RpYWxvZy5weQpAQCAtMTE5NywxMCArMTE5NywxMiBAQAogICAgICAgICAgICAgaW5zdGFuY2UucmVzZXRfaGVscF9tZW51X2VudHJpZXMoKQogCiAgICAgZGVmIENhbmNlbChzZWxmKToKKyAgICAgICAgc2VsZi5ncmFiX3JlbGVhc2UoKQogICAgICAgICBzZWxmLmRlc3Ryb3koKQogCiAgICAgZGVmIE9rKHNlbGYpOgogICAgICAgICBzZWxmLkFwcGx5KCkKKyAgICAgICAgc2VsZi5ncmFiX3JlbGVhc2UoKQogICAgICAgICBzZWxmLmRlc3Ryb3koKQogCiAgICAgZGVmIEFwcGx5KHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnSGVscFNvdXJjZUVkaXQucHkgYi9MaWIvaWRsZWxpYi9jb25maWdIZWxwU291cmNlRWRpdC5weQppbmRleCA1ODE2NDQ5Li42MmIwMTBhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdIZWxwU291cmNlRWRpdC5weQorKysgYi9MaWIvaWRsZWxpYi9jb25maWdIZWxwU291cmNlRWRpdC5weQpAQCAtMTU1LDEwICsxNTUsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgIyBNYWMgU2FmYXJpIGluc2lzdHMgb24gdXNpbmcgdGhlIFVSSSBmb3JtIGZvciBsb2NhbCBmaWxlcwogICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IGxpc3Qoc2VsZi5yZXN1bHQpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0WzFdID0gImZpbGU6Ly8iICsgcGF0aAorICAgICAgICAgICAgc2VsZi5ncmFiX3JlbGVhc2UoKQogICAgICAgICAgICAgc2VsZi5kZXN0cm95KCkKIAogICAgIGRlZiBDYW5jZWwoc2VsZiwgZXZlbnQ9Tm9uZSk6CiAgICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQorICAgICAgICBzZWxmLmdyYWJfcmVsZWFzZSgpCiAgICAgICAgIHNlbGYuZGVzdHJveSgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weSBiL0xpYi9pZGxlbGliL2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5CmluZGV4IGMwOWRjYTguLmYyOGRjMWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5CkBAIC04MCwxMCArODAsMTMgQEAKICAgICAgICAgbmFtZSA9IHNlbGYubmFtZV9vaygpCiAgICAgICAgIGlmIG5hbWU6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IG5hbWUKKyAgICAgICAgICAgIHNlbGYuZ3JhYl9yZWxlYXNlKCkKICAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCiAgICAgZGVmIENhbmNlbChzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgc2VsZi5yZXN1bHQgPSAnJworICAgICAgICBzZWxmLmdyYWJfcmVsZWFzZSgpCiAgICAgICAgIHNlbGYuZGVzdHJveSgpCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHVuaXR0ZXN0CiAgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9jb25maWdfbmFtZScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaGVscC5odG1sIGIvTGliL2lkbGVsaWIvaGVscC5odG1sCmluZGV4IDFjNDU5OGIuLjlhMjBjMzkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2hlbHAuaHRtbAorKysgYi9MaWIvaWRsZWxpYi9oZWxwLmh0bWwKQEAgLTcwMCw3ICs3MDAsNyBAQAogICAgICAgPC91bD4KICAgICA8L2Rpdj4KICAgICA8ZGl2IGNsYXNzPSJmb290ZXIiPgotICAgICZjb3B5OyA8YSBocmVmPSIuLi9jb3B5cmlnaHQuaHRtbCI+Q29weXJpZ2h0PC9hPiAxOTkwLTIwMTYsIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICAgICZjb3B5OyA8YSBocmVmPSIuLi9jb3B5cmlnaHQuaHRtbCI+Q29weXJpZ2h0PC9hPiAxOTkwLTIwMTcsIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLgogICAgIDxiciAvPgogICAgIFRoZSBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiBpcyBhIG5vbi1wcm9maXQgY29ycG9yYXRpb24uCiAgICAgPGEgaHJlZj0iaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9wc2YvZG9uYXRpb25zLyI+UGxlYXNlIGRvbmF0ZS48L2E+CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlLmJhdCBiL0xpYi9pZGxlbGliL2lkbGUuYmF0CmluZGV4IDNkNjE5YTMuLmU3N2I5NmUgMTAwNzU1Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGUuYmF0CisrKyBiL0xpYi9pZGxlbGliL2lkbGUuYmF0CkBAIC0xLDQgKzEsNCBAQAotQGVjaG8gb2ZmDQotcmVtIFN0YXJ0IElETEUgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIFB5dGhvbiBpbnRlcnByZXRlcg0KLXNldCBDVVJSRElSPSV+ZHAwDQotc3RhcnQgIklETEUiICIlQ1VSUkRJUiUuLlwuLlxweXRob253LmV4ZSIgIiVDVVJSRElSJWlkbGUucHl3IiAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQ0KK0BlY2hvIG9mZgorcmVtIFN0YXJ0IElETEUgdXNpbmcgdGhlIGFwcHJvcHJpYXRlIFB5dGhvbiBpbnRlcnByZXRlcgorc2V0IENVUlJESVI9JX5kcDAKK3N0YXJ0ICJJRExFIiAiJUNVUlJESVIlLi5cLi5ccHl0aG9udy5leGUiICIlQ1VSUkRJUiVpZGxlLnB5dyIgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19uYW1lLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKaW5kZXggNDQwM2Y4Ny4uMmE0ZGY2YSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkKQEAgLTE1LDYgKzE1LDggQEAKICAgICBuYW1lID0gVmFyKCkKICAgICByZXN1bHQgPSBOb25lCiAgICAgZGVzdHJveWVkID0gRmFsc2UKKyAgICBkZWYgZ3JhYl9yZWxlYXNlKHNlbGYpOgorICAgICAgICBwYXNzCiAgICAgZGVmIGRlc3Ryb3koc2VsZik6CiAgICAgICAgIHNlbGYuZGVzdHJveWVkID0gVHJ1ZQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIva2V5YmluZGluZ0RpYWxvZy5weQppbmRleCA0ZDMyY2E5Li43NTVmMWFmIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2tleWJpbmRpbmdEaWFsb2cucHkKQEAgLTIxNywxMCArMjE3LDEyIEBACiAgICAgZGVmIE9LKHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICBpZiBzZWxmLmFkdmFuY2VkIG9yIHNlbGYuS2V5c09LKCk6ICAjIGRvZXNuJ3QgY2hlY2sgYWR2YW5jZWQgc3RyaW5nIHlldAogICAgICAgICAgICAgc2VsZi5yZXN1bHQ9c2VsZi5rZXlTdHJpbmcuZ2V0KCkKKyAgICAgICAgICAgIHNlbGYuZ3JhYl9yZWxlYXNlKCkKICAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCiAKICAgICBkZWYgQ2FuY2VsKHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICBzZWxmLnJlc3VsdD0nJworICAgICAgICBzZWxmLmdyYWJfcmVsZWFzZSgpCiAgICAgICAgIHNlbGYuZGVzdHJveSgpCiAKICAgICBkZWYgS2V5c09LKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvdGV4dFZpZXcucHkgYi9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weQppbmRleCBiOGM0YWMxLi5lYzgzN2Y4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weQorKysgYi9MaWIvaWRsZWxpYi90ZXh0Vmlldy5weQpAQCAtMzksNyArMzksOCBAQAogICAgICAgICBzZWxmLnRleHRWaWV3Lmluc2VydCgwLjAsIHRleHQpCiAgICAgICAgIHNlbGYudGV4dFZpZXcuY29uZmlnKHN0YXRlPURJU0FCTEVEKQogCi0gICAgICAgIGlmIG1vZGFsOgorICAgICAgICBzZWxmLmlzX21vZGFsID0gbW9kYWwKKyAgICAgICAgaWYgc2VsZi5pc19tb2RhbDoKICAgICAgICAgICAgIHNlbGYudHJhbnNpZW50KHBhcmVudCkKICAgICAgICAgICAgIHNlbGYuZ3JhYl9zZXQoKQogICAgICAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCkBAIC02Miw2ICs2Myw4IEBACiAgICAgICAgIGZyYW1lVGV4dC5wYWNrKHNpZGU9VE9QLGV4cGFuZD1UUlVFLGZpbGw9Qk9USCkKIAogICAgIGRlZiBPayhzZWxmLCBldmVudD1Ob25lKToKKyAgICAgICAgaWYgc2VsZi5pc19tb2RhbDoKKyAgICAgICAgICAgIHNlbGYuZ3JhYl9yZWxlYXNlKCkKICAgICAgICAgc2VsZi5kZXN0cm95KCkKIAogCmRpZmYgLS1naXQgYS9MaWIvaW1hcGxpYi5weSBiL0xpYi9pbWFwbGliLnB5CmluZGV4IDgyNmVlYTIuLjJlNTUxMWUgMTAwNjQ0Ci0tLSBhL0xpYi9pbWFwbGliLnB5CisrKyBiL0xpYi9pbWFwbGliLnB5CkBAIC03MCw2ICs3MCw3IEBACiAgICAgICAgICdMT0dJTic6ICAgICAgICAoJ05PTkFVVEgnLCksCiAgICAgICAgICdMT0dPVVQnOiAgICAgICAoJ05PTkFVVEgnLCAnQVVUSCcsICdTRUxFQ1RFRCcsICdMT0dPVVQnKSwKICAgICAgICAgJ0xTVUInOiAgICAgICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAorICAgICAgICAnTU9WRSc6ICAgICAgICAgKCdTRUxFQ1RFRCcsKSwKICAgICAgICAgJ05BTUVTUEFDRSc6ICAgICgnQVVUSCcsICdTRUxFQ1RFRCcpLAogICAgICAgICAnTk9PUCc6ICAgICAgICAgKCdOT05BVVRIJywgJ0FVVEgnLCAnU0VMRUNURUQnLCAnTE9HT1VUJyksCiAgICAgICAgICdQQVJUSUFMJzogICAgICAoJ1NFTEVDVEVEJywpLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE5COiBvYnNvbGV0ZQpAQCAtMjY0LDggKzI2NSwxMCBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLnNvY2suc2h1dGRvd24oc29ja2V0LlNIVVRfUkRXUikKICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBlOgotICAgICAgICAgICAgIyBUaGUgc2VydmVyIG1pZ2h0IGFscmVhZHkgaGF2ZSBjbG9zZWQgdGhlIGNvbm5lY3Rpb24KLSAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PVENPTk46CisgICAgICAgICAgICAjIFRoZSBzZXJ2ZXIgbWlnaHQgYWxyZWFkeSBoYXZlIGNsb3NlZCB0aGUgY29ubmVjdGlvbi4KKyAgICAgICAgICAgICMgT24gV2luZG93cywgdGhpcyBtYXkgcmVzdWx0IGluIFdTQUVJTlZBTCAoZXJyb3IgMTAwMjIpOgorICAgICAgICAgICAgIyBBbiBpbnZhbGlkIG9wZXJhdGlvbiB3YXMgYXR0ZW1wdGVkLgorICAgICAgICAgICAgaWYgZS5lcnJubyBub3QgaW4gKGVycm5vLkVOT1RDT05OLCAxMDAyMik6CiAgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc29jay5jbG9zZSgpCkBAIC0xNDA5LDcgKzE0MTIsNyBAQAogICAgIGJlIGluIHRoZSBjb3JyZWN0IGZvcm1hdC4KICAgICAiIiIKIAotICAgIGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCAoaW50LCBmbG9hdCkpOgorICAgIGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCAoaW50LCBsb25nLCBmbG9hdCkpOgogICAgICAgICB0dCA9IHRpbWUubG9jYWx0aW1lKGRhdGVfdGltZSkKICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0ZV90aW1lLCAodHVwbGUsIHRpbWUuc3RydWN0X3RpbWUpKToKICAgICAgICAgdHQgPSBkYXRlX3RpbWUKZGlmZiAtLWdpdCBhL0xpYi9pbnNwZWN0LnB5IGIvTGliL2luc3BlY3QucHkKaW5kZXggNmQ2NDViZC4uY2JjZWQxNyAxMDA2NDQKLS0tIGEvTGliL2luc3BlY3QucHkKKysrIGIvTGliL2luc3BlY3QucHkKQEAgLTY4OCw4ICs2ODgsMTUgQEAKICAgICByYWlzZWQgaWYgdGhlIHNvdXJjZSBjb2RlIGNhbm5vdCBiZSByZXRyaWV2ZWQuIiIiCiAgICAgbGluZXMsIGxudW0gPSBmaW5kc291cmNlKG9iamVjdCkKIAotICAgIGlmIGlzbW9kdWxlKG9iamVjdCk6IHJldHVybiBsaW5lcywgMAotICAgIGVsc2U6IHJldHVybiBnZXRibG9jayhsaW5lc1tsbnVtOl0pLCBsbnVtICsgMQorICAgIGlmIGlzdHJhY2ViYWNrKG9iamVjdCk6CisgICAgICAgIG9iamVjdCA9IG9iamVjdC50Yl9mcmFtZQorCisgICAgIyBmb3IgbW9kdWxlIG9yIGZyYW1lIHRoYXQgY29ycmVzcG9uZHMgdG8gbW9kdWxlLCByZXR1cm4gYWxsIHNvdXJjZSBsaW5lcworICAgIGlmIChpc21vZHVsZShvYmplY3QpIG9yCisgICAgICAgIChpc2ZyYW1lKG9iamVjdCkgYW5kIG9iamVjdC5mX2NvZGUuY29fbmFtZSA9PSAiPG1vZHVsZT4iKSk6CisgICAgICAgIHJldHVybiBsaW5lcywgMAorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBnZXRibG9jayhsaW5lc1tsbnVtOl0pLCBsbnVtICsgMQogCiBkZWYgZ2V0c291cmNlKG9iamVjdCk6CiAgICAgIiIiUmV0dXJuIHRoZSB0ZXh0IG9mIHRoZSBzb3VyY2UgY29kZSBmb3IgYW4gb2JqZWN0LgpAQCAtNzY5LDggKzc3NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICBpZiBvcG5hbWUgaW4gKCdVTlBBQ0tfVFVQTEUnLCAnVU5QQUNLX1NFUVVFTkNFJyk6CiAgICAgICAgICAgICAgICAgICAgICAgICByZW1haW4uYXBwZW5kKHZhbHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgY291bnQuYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBlbGlmIG9wbmFtZSA9PSAnU1RPUkVfRkFTVCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5hcHBlbmQobmFtZXNbdmFsdWVdKQorICAgICAgICAgICAgICAgICAgICBlbGlmIG9wbmFtZSBpbiAoJ1NUT1JFX0ZBU1QnLCAnU1RPUkVfREVSRUYnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9wbmFtZSA9PSAnU1RPUkVfRkFTVCc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKG5hbWVzW3ZhbHVlXSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKGNvLmNvX2NlbGx2YXJzW3ZhbHVlXSkKIAogICAgICAgICAgICAgICAgICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIHN1Ymxpc3RzIG9mIGxlbmd0aCAxOiBkZWYgZm9vKChiYXIpKQogICAgICAgICAgICAgICAgICAgICAgICAgIyBkb2Vzbid0IGdlbmVyYXRlIHRoZSBVTlBBQ0tfVFVQTEUgYnl0ZWNvZGUsIHNvIGlmCmRpZmYgLS1naXQgYS9MaWIvanNvbi9fX2luaXRfXy5weSBiL0xpYi9qc29uL19faW5pdF9fLnB5CmluZGV4IGQxYmUwNDEuLmNlNjIzNjEgMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL19faW5pdF9fLnB5CisrKyBiL0xpYi9qc29uL19faW5pdF9fLnB5CkBAIC03OCw3ICs3OCw3IEBACiAgICAgPj4+IGRlZiBlbmNvZGVfY29tcGxleChvYmopOgogICAgIC4uLiAgICAgaWYgaXNpbnN0YW5jZShvYmosIGNvbXBsZXgpOgogICAgIC4uLiAgICAgICAgIHJldHVybiBbb2JqLnJlYWwsIG9iai5pbWFnXQotICAgIC4uLiAgICAgcmFpc2UgVHlwZUVycm9yKHJlcHIobykgKyAiIGlzIG5vdCBKU09OIHNlcmlhbGl6YWJsZSIpCisgICAgLi4uICAgICByYWlzZSBUeXBlRXJyb3IocmVwcihvYmopICsgIiBpcyBub3QgSlNPTiBzZXJpYWxpemFibGUiKQogICAgIC4uLgogICAgID4+PiBqc29uLmR1bXBzKDIgKyAxaiwgZGVmYXVsdD1lbmNvZGVfY29tcGxleCkKICAgICAnWzIuMCwgMS4wXScKZGlmZiAtLWdpdCBhL0xpYi9qc29uL3Rlc3RzL3Rlc3Rfc3BlZWR1cHMucHkgYi9MaWIvanNvbi90ZXN0cy90ZXN0X3NwZWVkdXBzLnB5CmluZGV4IDcxODZhNDAuLmE2YjdjMzggMTAwNjQ0Ci0tLSBhL0xpYi9qc29uL3Rlc3RzL3Rlc3Rfc3BlZWR1cHMucHkKKysrIGIvTGliL2pzb24vdGVzdHMvdGVzdF9zcGVlZHVwcy5weQpAQCAtMSw2ICsxLDExIEBACiBmcm9tIGpzb24udGVzdHMgaW1wb3J0IENUZXN0CiAKIAorY2xhc3MgQmFkQm9vbDoKKyAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisgICAgICAgIDEvMC4wCisKKwogY2xhc3MgVGVzdFNwZWVkdXBzKENUZXN0KToKICAgICBkZWYgdGVzdF9zY2Fuc3RyaW5nKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuanNvbi5kZWNvZGVyLnNjYW5zdHJpbmcuX19tb2R1bGVfXywgIl9qc29uIikKQEAgLTE2LDggKzIxLDMxIEBACiAgICAgZGVmIHRlc3RfbWFrZV9zY2FubmVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2VsZi5qc29uLnNjYW5uZXIuY19tYWtlX3NjYW5uZXIsIDEpCiAKKyAgICBkZWYgdGVzdF9iYWRfYm9vbF9hcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdCh2YWx1ZSk6CisgICAgICAgICAgICBzZWxmLmpzb24uZGVjb2Rlci5KU09ORGVjb2RlcihzdHJpY3Q9QmFkQm9vbCgpKS5kZWNvZGUodmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCB0ZXN0LCAnIiInKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgdGVzdCwgJ3t9JykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHRlc3QsIHUnIiInKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgdGVzdCwgdSd7fScpCisKKworY2xhc3MgVGVzdEVuY29kZShDVGVzdCk6CiAgICAgZGVmIHRlc3RfbWFrZV9lbmNvZGVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuanNvbi5lbmNvZGVyLmNfbWFrZV9lbmNvZGVyLAogICAgICAgICAgICAgTm9uZSwKICAgICAgICAgICAgICJceENEXHg3RFx4M0RceDRFXHgxMlx4NENceEY5XHg3OVx4RDdceDUyXHhCQVx4ODJceEYyXHgyN1x4NEFceDdEXHhBMFx4Q0FceDc1IiwKICAgICAgICAgICAgIE5vbmUpCisKKyAgICBkZWYgdGVzdF9iYWRfYm9vbF9hcmdzKHNlbGYpOgorICAgICAgICBkZWYgdGVzdChuYW1lKToKKyAgICAgICAgICAgIHNlbGYuanNvbi5lbmNvZGVyLkpTT05FbmNvZGVyKCoqe25hbWU6IEJhZEJvb2woKX0pLmVuY29kZSh7J2EnOiAxfSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHRlc3QsICdza2lwa2V5cycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCB0ZXN0LCAnZW5zdXJlX2FzY2lpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHRlc3QsICdjaGVja19jaXJjdWxhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCB0ZXN0LCAnYWxsb3dfbmFuJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHRlc3QsICdzb3J0X2tleXMnKQorCisgICAgZGVmIHRlc3RfYmFkX2VuY29kaW5nKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVFbmNvZGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLmpzb24uZW5jb2Rlci5KU09ORW5jb2RlcihlbmNvZGluZz11J1x1ZGNmZicpLmVuY29kZSh7J2tleSc6IDEyM30pCmRpZmYgLS1naXQgYS9MaWIvbGliLXRrL1RpeC5weSBiL0xpYi9saWItdGsvVGl4LnB5CmluZGV4IDQ1ZThhOTAuLmQwZjhmZTcgMTAwNjQ0Ci0tLSBhL0xpYi9saWItdGsvVGl4LnB5CisrKyBiL0xpYi9saWItdGsvVGl4LnB5CkBAIC0xLDcgKzEsMyBAQAotIyAtKi1tb2RlOiBweXRob247IGZpbGwtY29sdW1uOiA3NTsgdGFiLXdpZHRoOiA4OyBjb2Rpbmc6IGlzby1sYXRpbi0xLXVuaXggLSotCi0jCi0jICRJZCQKLSMKICMgVGl4LnB5IC0tIFRpeCB3aWRnZXQgd3JhcHBlcnMuCiAjCiAjICAgICAgIEZvciBUaXgsIHNlZSBodHRwOi8vdGl4LnNvdXJjZWZvcmdlLm5ldApkaWZmIC0tZ2l0IGEvTGliL2xpYi10ay9Ua2ludGVyLnB5IGIvTGliL2xpYi10ay9Ua2ludGVyLnB5CmluZGV4IDY0ZTk5MjQuLjJmM2EzZjEgMTAwNjQ0Ci0tLSBhL0xpYi9saWItdGsvVGtpbnRlci5weQorKysgYi9MaWIvbGliLXRrL1RraW50ZXIucHkKQEAgLTcxLDcgKzcxLDcgQEAKICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAobGlzdCwgdHVwbGUpKToKICAgICAgICAgaWYgbGVuKHZhbHVlKSA9PSAxOgogICAgICAgICAgICAgdmFsdWUgPSBfc3RyaW5naWZ5KHZhbHVlWzBdKQotICAgICAgICAgICAgaWYgdmFsdWVbMF0gPT0gJ3snOgorICAgICAgICAgICAgaWYgX21hZ2ljX3JlLnNlYXJjaCh2YWx1ZSk6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSAneyVzfScgJSB2YWx1ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgdmFsdWUgPSAneyVzfScgJSBfam9pbih2YWx1ZSkKQEAgLTg1LDcgKzg1LDEwIEBACiAgICAgICAgIGVsaWYgX21hZ2ljX3JlLnNlYXJjaCh2YWx1ZSk6CiAgICAgICAgICAgICAjIGFkZCAnXCcgYmVmb3JlIHNwZWNpYWwgY2hhcmFjdGVycyBhbmQgc3BhY2VzCiAgICAgICAgICAgICB2YWx1ZSA9IF9tYWdpY19yZS5zdWIocidcXFwxJywgdmFsdWUpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJ1xuJywgcidcbicpCiAgICAgICAgICAgICB2YWx1ZSA9IF9zcGFjZV9yZS5zdWIocidcXFwxJywgdmFsdWUpCisgICAgICAgICAgICBpZiB2YWx1ZVswXSA9PSAnIic6CisgICAgICAgICAgICAgICAgdmFsdWUgPSAnXFwnICsgdmFsdWUKICAgICAgICAgZWxpZiB2YWx1ZVswXSA9PSAnIicgb3IgX3NwYWNlX3JlLnNlYXJjaCh2YWx1ZSk6CiAgICAgICAgICAgICB2YWx1ZSA9ICd7JXN9JyAlIHZhbHVlCiAgICAgcmV0dXJuIHZhbHVlCkBAIC01ODYsNiArNTg5LDcgQEAKICAgICAgICAgaWYgbm90IGZ1bmM6CiAgICAgICAgICAgICAjIEknZCByYXRoZXIgdXNlIHRpbWUuc2xlZXAobXMqMC4wMDEpCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ2FmdGVyJywgbXMpCisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZGVmIGNhbGxpdCgpOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTYwOSwxMSArNjEzLDEzIEBACiAgICAgICAgICIiIkNhbmNlbCBzY2hlZHVsaW5nIG9mIGZ1bmN0aW9uIGlkZW50aWZpZWQgd2l0aCBJRC4KIAogICAgICAgICBJZGVudGlmaWVyIHJldHVybmVkIGJ5IGFmdGVyIG9yIGFmdGVyX2lkbGUgbXVzdCBiZQotICAgICAgICBnaXZlbiBhcyBmaXJzdCBwYXJhbWV0ZXIuIiIiCisgICAgICAgIGdpdmVuIGFzIGZpcnN0IHBhcmFtZXRlci4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBpZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ2lkIG11c3QgYmUgYSB2YWxpZCBpZGVudGlmaWVyIHJldHVybmVkIGZyb20gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWZ0ZXIgb3IgYWZ0ZXJfaWRsZScpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnRrLmNhbGwoJ2FmdGVyJywgJ2luZm8nLCBpZCkKLSAgICAgICAgICAgICMgSW4gVGsgOC4zLCBzcGxpdGxpc3QgcmV0dXJuczogKHNjcmlwdCwgdHlwZSkKLSAgICAgICAgICAgICMgSW4gVGsgOC40LCBzcGxpdGxpc3QgbWF5IHJldHVybiAoc2NyaXB0LCB0eXBlKSBvciAoc2NyaXB0LCkKICAgICAgICAgICAgIHNjcmlwdCA9IHNlbGYudGsuc3BsaXRsaXN0KGRhdGEpWzBdCiAgICAgICAgICAgICBzZWxmLmRlbGV0ZWNvbW1hbmQoc2NyaXB0KQogICAgICAgICBleGNlcHQgVGNsRXJyb3I6CkBAIC04NDQsOCArODUwLDcgQEAKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnaGVpZ2h0Jywgc2VsZi5fdykpCiAgICAgZGVmIHdpbmZvX2lkKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gaWRlbnRpZmllciBJRCBmb3IgdGhpcyB3aWRnZXQuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLmdldGludCgKLSAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnaWQnLCBzZWxmLl93KSkKKyAgICAgICAgcmV0dXJuIGludChzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2lkJywgc2VsZi5fdyksIDApCiAgICAgZGVmIHdpbmZvX2ludGVycHMoc2VsZiwgZGlzcGxheW9mPTApOgogICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgYWxsIFRjbCBpbnRlcnByZXRlcnMgZm9yIHRoaXMgZGlzcGxheS4iIiIKICAgICAgICAgYXJncyA9ICgnd2luZm8nLCAnaW50ZXJwcycpICsgc2VsZi5fZGlzcGxheW9mKGRpc3BsYXlvZikKQEAgLTg1NSw3ICs4NjAsNyBAQAogICAgICAgICByZXR1cm4gZ2V0aW50KAogICAgICAgICAgICAgc2VsZi50ay5jYWxsKCd3aW5mbycsICdpc21hcHBlZCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19tYW5hZ2VyKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIHdpbmRvdyBtYW5hbmdlciBuYW1lIGZvciB0aGlzIHdpZGdldC4iIiIKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB3aW5kb3cgbWFuYWdlciBuYW1lIGZvciB0aGlzIHdpZGdldC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd2luZm8nLCAnbWFuYWdlcicsIHNlbGYuX3cpCiAgICAgZGVmIHdpbmZvX25hbWUoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgbmFtZSBvZiB0aGlzIHdpZGdldC4iIiIKQEAgLTExNzQsOSArMTE3OSw5IEBACiAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHYsICh0dXBsZSwgbGlzdCkpOgogICAgICAgICAgICAgICAgICAgICBudiA9IFtdCiAgICAgICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHY6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdGVtLCAoYmFzZXN0cmluZywgaW50KSk6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShpdGVtLCAoYmFzZXN0cmluZywgaW50LCBsb25nKSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShpdGVtLCBpbnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGl0ZW0sIChpbnQsIGxvbmcpKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudi5hcHBlbmQoJyVkJyAlIGl0ZW0pCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZm9ybWF0IGl0IHRvIHByb3BlciBUY2wgY29kZSBpZiBpdCBjb250YWlucyBzcGFjZQpAQCAtMTUyMiw3ICsxNTI3LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbCgnaW1hZ2UnLCAnbmFtZXMnKSkKIAogICAgIGRlZiBpbWFnZV90eXBlcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIGltYWdlIHR5cGVzIChlLmcuIHBob3RlIGJpdG1hcCkuIiIiCisgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIGF2YWlsYWJsZSBpbWFnZSB0eXBlcyAoZS5nLiBwaG90byBiaXRtYXApLiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKCdpbWFnZScsICd0eXBlcycpKQogCiAKQEAgLTIzNjQsNyArMjM2OSw3IEBACiAgICAgICAgICIiIlJldHVybiBpdGVtIHdoaWNoIGlzIGNsb3Nlc3QgdG8gcGl4ZWwgYXQgWCwgWS4KICAgICAgICAgSWYgc2V2ZXJhbCBtYXRjaCB0YWtlIHRoZSB0b3AtbW9zdC4KICAgICAgICAgQWxsIGl0ZW1zIGNsb3NlciB0aGFuIEhBTE8gYXJlIGNvbnNpZGVyZWQgb3ZlcmxhcHBpbmcgKGFsbCBhcmUKLSAgICAgICAgY2xvc2VzdHMpLiBJZiBTVEFSVCBpcyBzcGVjaWZpZWQgdGhlIG5leHQgYmVsb3cgdGhpcyB0YWcgaXMgdGFrZW4uIiIiCisgICAgICAgIGNsb3Nlc3QpLiBJZiBTVEFSVCBpcyBzcGVjaWZpZWQgdGhlIG5leHQgYmVsb3cgdGhpcyB0YWcgaXMgdGFrZW4uIiIiCiAgICAgICAgIHJldHVybiBzZWxmLmZpbmQoJ2Nsb3Nlc3QnLCB4LCB5LCBoYWxvLCBzdGFydCkKICAgICBkZWYgZmluZF9lbmNsb3NlZChzZWxmLCB4MSwgeTEsIHgyLCB5Mik6CiAgICAgICAgICIiIlJldHVybiBhbGwgaXRlbXMgaW4gcmVjdGFuZ2xlIGRlZmluZWQKQEAgLTI0MjQsNyArMjQyOSw3IEBACiAgICAgICAgICIiIlByaW50IHRoZSBjb250ZW50cyBvZiB0aGUgY2FudmFzIHRvIGEgcG9zdHNjcmlwdAogICAgICAgICBmaWxlLiBWYWxpZCBvcHRpb25zOiBjb2xvcm1hcCwgY29sb3Jtb2RlLCBmaWxlLCBmb250bWFwLAogICAgICAgICBoZWlnaHQsIHBhZ2VhbmNob3IsIHBhZ2VoZWlnaHQsIHBhZ2V3aWR0aCwgcGFnZXgsIHBhZ2V5LAotICAgICAgICByb3RhdGUsIHdpdGRoLCB4LCB5LiIiIgorICAgICAgICByb3RhdGUsIHdpZHRoLCB4LCB5LiIiIgogICAgICAgICByZXR1cm4gc2VsZi50ay5jYWxsKChzZWxmLl93LCAncG9zdHNjcmlwdCcpICsKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucyhjbmYsIGt3KSkKICAgICBkZWYgdGFnX3JhaXNlKHNlbGYsICphcmdzKToKQEAgLTMzNTUsNyArMzM2MCw3IEBACiAgICAgICAgIHJldHVybiBnZXRpbnQoCiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ2ltYWdlJywgJ2hlaWdodCcsIHNlbGYubmFtZSkpCiAgICAgZGVmIHR5cGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgdHlwZSBvZiB0aGUgaW1nYWdlLCBlLmcuICJwaG90byIgb3IgImJpdG1hcCIuIiIiCisgICAgICAgICIiIlJldHVybiB0aGUgdHlwZSBvZiB0aGUgaW1hZ2UsIGUuZy4gInBob3RvIiBvciAiYml0bWFwIi4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnaW1hZ2UnLCAndHlwZScsIHNlbGYubmFtZSkKICAgICBkZWYgd2lkdGgoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgd2lkdGggb2YgdGhlIGltYWdlLiIiIgpAQCAtMzM2Myw3ICszMzY4LDcgQEAKICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnaW1hZ2UnLCAnd2lkdGgnLCBzZWxmLm5hbWUpKQogCiBjbGFzcyBQaG90b0ltYWdlKEltYWdlKToKLSAgICAiIiJXaWRnZXQgd2hpY2ggY2FuIGRpc3BsYXkgY29sb3JlZCBpbWFnZXMgaW4gR0lGLCBQUE0vUEdNIGZvcm1hdC4iIiIKKyAgICAiIiJXaWRnZXQgd2hpY2ggY2FuIGRpc3BsYXkgaW1hZ2VzIGluIFBHTSwgUFBNLCBHSUYsIFBORyBmb3JtYXQuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWU9Tm9uZSwgY25mPXt9LCBtYXN0ZXI9Tm9uZSwgKiprdyk6CiAgICAgICAgICIiIkNyZWF0ZSBhbiBpbWFnZSB3aXRoIE5BTUUuCiAKQEAgLTM0MjcsNyArMzQzMiw3IEBACiAgICAgICAgIHNlbGYudGsuY2FsbChhcmdzKQogCiBjbGFzcyBCaXRtYXBJbWFnZShJbWFnZSk6Ci0gICAgIiIiV2lkZ2V0IHdoaWNoIGNhbiBkaXNwbGF5IGEgYml0bWFwLiIiIgorICAgICIiIldpZGdldCB3aGljaCBjYW4gZGlzcGxheSBpbWFnZXMgaW4gWEJNIGZvcm1hdC4iIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZT1Ob25lLCBjbmY9e30sIG1hc3Rlcj1Ob25lLCAqKmt3KToKICAgICAgICAgIiIiQ3JlYXRlIGEgYml0bWFwIHdpdGggTkFNRS4KIApkaWZmIC0tZ2l0IGEvTGliL2xpYi10ay90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X2ZvbnQucHkgYi9MaWIvbGliLXRrL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfZm9udC5weQppbmRleCA0Y2JmODJlLi44MzBjNWE2IDEwMDY0NAotLS0gYS9MaWIvbGliLXRrL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfZm9udC5weQorKysgYi9MaWIvbGliLXRrL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfZm9udC5weQpAQCAtMSw3ICsxLDcgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IFRraW50ZXIgYXMgdGtpbnRlcgogaW1wb3J0IHRrRm9udCBhcyBmb250Ci1mcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCByZXF1aXJlcywgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCByZXF1aXJlcywgcnVuX3VuaXR0ZXN0LCBnY19jb2xsZWN0CiBmcm9tIHRlc3RfdHRrLnN1cHBvcnQgaW1wb3J0IEFic3RyYWN0VGtUZXN0CiAKIHJlcXVpcmVzKCdndWknKQpAQCAtMzUsNiArMzUsMTYgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLmZvbnQuY2dldChrZXkpLCBzaXpldHlwZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLmZvbnRba2V5XSwgc2l6ZXR5cGUpCiAKKyAgICBkZWYgdGVzdF91bmljb2RlX2ZhbWlseShzZWxmKToKKyAgICAgICAgZmFtaWx5ID0gdSdNUyBcdTMwYjRcdTMwYjdcdTMwYzNcdTMwYWYnCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBmb250LkZvbnQocm9vdD1zZWxmLnJvb3QsIGZhbWlseT1mYW1pbHksIGV4aXN0cz1UcnVlKQorICAgICAgICBleGNlcHQgdGtpbnRlci5UY2xFcnJvcjoKKyAgICAgICAgICAgIGYgPSBmb250LkZvbnQocm9vdD1zZWxmLnJvb3QsIGZhbWlseT1mYW1pbHksIGV4aXN0cz1GYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmNnZXQoJ2ZhbWlseScpLCBmYW1pbHkpCisgICAgICAgIGRlbCBmCisgICAgICAgIGdjX2NvbGxlY3QoKQorCiAgICAgZGVmIHRlc3RfYWN0dWFsKHNlbGYpOgogICAgICAgICBvcHRpb25zID0gc2VsZi5mb250LmFjdHVhbCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNldChvcHRpb25zKSwKZGlmZiAtLWdpdCBhL0xpYi9saWItdGsvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5IGIvTGliL2xpYi10ay90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2MjY5ZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9saWItdGsvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CkBAIC0wLDAgKzEsMTIyIEBACitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBUa2ludGVyIGFzIHRraW50ZXIKK2Zyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IHJlcXVpcmVzLCBydW5fdW5pdHRlc3QKK2Zyb20gdGVzdF90dGsuc3VwcG9ydCBpbXBvcnQgQWJzdHJhY3RUa1Rlc3QKKworcmVxdWlyZXMoJ2d1aScpCisKK2NsYXNzIE1pc2NUZXN0KEFic3RyYWN0VGtUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hZnRlcihzZWxmKToKKyAgICAgICAgcm9vdCA9IHNlbGYucm9vdAorICAgICAgICBjYmNvdW50ID0geydjb3VudCc6IDB9CisKKyAgICAgICAgZGVmIGNhbGxiYWNrKHN0YXJ0PTAsIHN0ZXA9MSk6CisgICAgICAgICAgICBjYmNvdW50Wydjb3VudCddID0gc3RhcnQgKyBzdGVwCisKKyAgICAgICAgIyBXaXRob3V0IGZ1bmN0aW9uLCBzbGVlcHMgZm9yIG1zLgorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyb290LmFmdGVyKDEpKQorCisgICAgICAgICMgU2V0IHVwIHdpdGggY2FsbGJhY2sgd2l0aCBubyBhcmdzLgorICAgICAgICBjYmNvdW50Wydjb3VudCddID0gMAorICAgICAgICB0aW1lcjEgPSByb290LmFmdGVyKDAsIGNhbGxiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEluKHRpbWVyMSwgcm9vdC50ay5jYWxsKCdhZnRlcicsICdpbmZvJykpCisgICAgICAgIChzY3JpcHQsIF8pID0gcm9vdC50ay5zcGxpdGxpc3Qocm9vdC50ay5jYWxsKCdhZnRlcicsICdpbmZvJywgdGltZXIxKSkKKyAgICAgICAgcm9vdC51cGRhdGUoKSAgIyBQcm9jZXNzIGFsbCBwZW5kaW5nIGV2ZW50cy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYmNvdW50Wydjb3VudCddLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IpOgorICAgICAgICAgICAgcm9vdC50ay5jYWxsKHNjcmlwdCkKKworICAgICAgICAjIFNldCB1cCB3aXRoIGNhbGxiYWNrIHdpdGggYXJncy4KKyAgICAgICAgY2Jjb3VudFsnY291bnQnXSA9IDAKKyAgICAgICAgdGltZXIxID0gcm9vdC5hZnRlcigwLCBjYWxsYmFjaywgNDIsIDExKQorICAgICAgICByb290LnVwZGF0ZSgpICAjIFByb2Nlc3MgYWxsIHBlbmRpbmcgZXZlbnRzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNiY291bnRbJ2NvdW50J10sIDUzKQorCisgICAgICAgICMgQ2FuY2VsIGJlZm9yZSBjYWxsZWQuCisgICAgICAgIHRpbWVyMSA9IHJvb3QuYWZ0ZXIoMTAwMCwgY2FsbGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SW4odGltZXIxLCByb290LnRrLmNhbGwoJ2FmdGVyJywgJ2luZm8nKSkKKyAgICAgICAgKHNjcmlwdCwgXykgPSByb290LnRrLnNwbGl0bGlzdChyb290LnRrLmNhbGwoJ2FmdGVyJywgJ2luZm8nLCB0aW1lcjEpKQorICAgICAgICByb290LmFmdGVyX2NhbmNlbCh0aW1lcjEpICAjIENhbmNlbCB0aGlzIGV2ZW50LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNiY291bnRbJ2NvdW50J10sIDUzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IpOgorICAgICAgICAgICAgcm9vdC50ay5jYWxsKHNjcmlwdCkKKworICAgIGRlZiB0ZXN0X2FmdGVyX2lkbGUoc2VsZik6CisgICAgICAgIHJvb3QgPSBzZWxmLnJvb3QKKyAgICAgICAgY2Jjb3VudCA9IHsnY291bnQnOiAwfQorCisgICAgICAgIGRlZiBjYWxsYmFjayhzdGFydD0wLCBzdGVwPTEpOgorICAgICAgICAgICAgY2Jjb3VudFsnY291bnQnXSA9IHN0YXJ0ICsgc3RlcAorCisgICAgICAgICMgU2V0IHVwIHdpdGggY2FsbGJhY2sgd2l0aCBubyBhcmdzLgorICAgICAgICBjYmNvdW50Wydjb3VudCddID0gMAorICAgICAgICBpZGxlMSA9IHJvb3QuYWZ0ZXJfaWRsZShjYWxsYmFjaykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihpZGxlMSwgcm9vdC50ay5jYWxsKCdhZnRlcicsICdpbmZvJykpCisgICAgICAgIChzY3JpcHQsIF8pID0gcm9vdC50ay5zcGxpdGxpc3Qocm9vdC50ay5jYWxsKCdhZnRlcicsICdpbmZvJywgaWRsZTEpKQorICAgICAgICByb290LnVwZGF0ZV9pZGxldGFza3MoKSAgIyBQcm9jZXNzIGFsbCBwZW5kaW5nIGV2ZW50cy4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYmNvdW50Wydjb3VudCddLCAxKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IpOgorICAgICAgICAgICAgcm9vdC50ay5jYWxsKHNjcmlwdCkKKworICAgICAgICAjIFNldCB1cCB3aXRoIGNhbGxiYWNrIHdpdGggYXJncy4KKyAgICAgICAgY2Jjb3VudFsnY291bnQnXSA9IDAKKyAgICAgICAgaWRsZTEgPSByb290LmFmdGVyX2lkbGUoY2FsbGJhY2ssIDQyLCAxMSkKKyAgICAgICAgcm9vdC51cGRhdGVfaWRsZXRhc2tzKCkgICMgUHJvY2VzcyBhbGwgcGVuZGluZyBldmVudHMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Jjb3VudFsnY291bnQnXSwgNTMpCisKKyAgICAgICAgIyBDYW5jZWwgYmVmb3JlIGNhbGxlZC4KKyAgICAgICAgaWRsZTEgPSByb290LmFmdGVyX2lkbGUoY2FsbGJhY2spCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaWRsZTEsIHJvb3QudGsuY2FsbCgnYWZ0ZXInLCAnaW5mbycpKQorICAgICAgICAoc2NyaXB0LCBfKSA9IHJvb3QudGsuc3BsaXRsaXN0KHJvb3QudGsuY2FsbCgnYWZ0ZXInLCAnaW5mbycsIGlkbGUxKSkKKyAgICAgICAgcm9vdC5hZnRlcl9jYW5jZWwoaWRsZTEpICAjIENhbmNlbCB0aGlzIGV2ZW50LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNiY291bnRbJ2NvdW50J10sIDUzKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IpOgorICAgICAgICAgICAgcm9vdC50ay5jYWxsKHNjcmlwdCkKKworICAgIGRlZiB0ZXN0X2FmdGVyX2NhbmNlbChzZWxmKToKKyAgICAgICAgcm9vdCA9IHNlbGYucm9vdAorICAgICAgICBjYmNvdW50ID0geydjb3VudCc6IDB9CisKKyAgICAgICAgZGVmIGNhbGxiYWNrKCk6CisgICAgICAgICAgICBjYmNvdW50Wydjb3VudCddICs9IDEKKworICAgICAgICB0aW1lcjEgPSByb290LmFmdGVyKDUwMDAsIGNhbGxiYWNrKQorICAgICAgICBpZGxlMSA9IHJvb3QuYWZ0ZXJfaWRsZShjYWxsYmFjaykKKworICAgICAgICAjIE5vIHZhbHVlIGZvciBpZCByYWlzZXMgYSBWYWx1ZUVycm9yLgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgcm9vdC5hZnRlcl9jYW5jZWwoTm9uZSkKKworICAgICAgICAjIENhbmNlbCB0aW1lciBldmVudC4KKyAgICAgICAgY2Jjb3VudFsnY291bnQnXSA9IDAKKyAgICAgICAgKHNjcmlwdCwgXykgPSByb290LnRrLnNwbGl0bGlzdChyb290LnRrLmNhbGwoJ2FmdGVyJywgJ2luZm8nLCB0aW1lcjEpKQorICAgICAgICByb290LnRrLmNhbGwoc2NyaXB0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNiY291bnRbJ2NvdW50J10sIDEpCisgICAgICAgIHJvb3QuYWZ0ZXJfY2FuY2VsKHRpbWVyMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0a2ludGVyLlRjbEVycm9yKToKKyAgICAgICAgICAgIHJvb3QudGsuY2FsbChzY3JpcHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Jjb3VudFsnY291bnQnXSwgMSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh0a2ludGVyLlRjbEVycm9yKToKKyAgICAgICAgICAgIHJvb3QudGsuY2FsbCgnYWZ0ZXInLCAnaW5mbycsIHRpbWVyMSkKKworICAgICAgICAjIENhbmNlbCBzYW1lIGV2ZW50IC0gbm90aGluZyBoYXBwZW5zLgorICAgICAgICByb290LmFmdGVyX2NhbmNlbCh0aW1lcjEpCisKKyAgICAgICAgIyBDYW5jZWwgaWRsZSBldmVudC4KKyAgICAgICAgY2Jjb3VudFsnY291bnQnXSA9IDAKKyAgICAgICAgKHNjcmlwdCwgXykgPSByb290LnRrLnNwbGl0bGlzdChyb290LnRrLmNhbGwoJ2FmdGVyJywgJ2luZm8nLCBpZGxlMSkpCisgICAgICAgIHJvb3QudGsuY2FsbChzY3JpcHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2Jjb3VudFsnY291bnQnXSwgMSkKKyAgICAgICAgcm9vdC5hZnRlcl9jYW5jZWwoaWRsZTEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGtpbnRlci5UY2xFcnJvcik6CisgICAgICAgICAgICByb290LnRrLmNhbGwoc2NyaXB0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNiY291bnRbJ2NvdW50J10sIDEpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXModGtpbnRlci5UY2xFcnJvcik6CisgICAgICAgICAgICByb290LnRrLmNhbGwoJ2FmdGVyJywgJ2luZm8nLCBpZGxlMSkKKworCit0ZXN0c19ndWkgPSAoTWlzY1Rlc3QsICkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBydW5fdW5pdHRlc3QoKnRlc3RzX2d1aSkKZGlmZiAtLWdpdCBhL0xpYi9saWItdGsvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5IGIvTGliL2xpYi10ay90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKaW5kZXggNGRhMzA5Ni4uZGIyY2Q5ZCAxMDA2NDQKLS0tIGEvTGliL2xpYi10ay90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKKysrIGIvTGliL2xpYi10ay90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKQEAgLTg4LDkgKzg4LDEwIEBACiAgICAgICAgIHdpZGdldCA9IHNlbGYuY3JlYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXRbJ3VzZSddLCAnJykKICAgICAgICAgcGFyZW50ID0gc2VsZi5jcmVhdGUoY29udGFpbmVyPVRydWUpCi0gICAgICAgIHdpZCA9IHBhcmVudC53aW5mb19pZCgpCisgICAgICAgICMgaGV4KCkgYWRkcyB0aGUgJ0wnIHN1ZmZpeCBmb3IgbG9uZ3MKKyAgICAgICAgd2lkID0gJyUjeCcgJSBwYXJlbnQud2luZm9faWQoKQogICAgICAgICB3aWRnZXQyID0gc2VsZi5jcmVhdGUodXNlPXdpZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQod2lkZ2V0MlsndXNlJ10pLCB3aWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2lkZ2V0MlsndXNlJ10sIHdpZCkKIAogCiBAYWRkX3N0YW5kYXJkX29wdGlvbnMoU3RhbmRhcmRPcHRpb25zVGVzdHMpCkBAIC02OTksNyArNzAwLDcgQEAKICAgICAgICAgJ2Rpc2FibGVkZm9yZWdyb3VuZCcsICdleHBvcnRzZWxlY3Rpb24nLAogICAgICAgICAnZm9udCcsICdmb3JlZ3JvdW5kJywgJ2hlaWdodCcsCiAgICAgICAgICdoaWdobGlnaHRiYWNrZ3JvdW5kJywgJ2hpZ2hsaWdodGNvbG9yJywgJ2hpZ2hsaWdodHRoaWNrbmVzcycsCi0gICAgICAgICdsaXN0dmFyaWFibGUnLCAncmVsaWVmJywKKyAgICAgICAgJ2p1c3RpZnknLCAnbGlzdHZhcmlhYmxlJywgJ3JlbGllZicsCiAgICAgICAgICdzZWxlY3RiYWNrZ3JvdW5kJywgJ3NlbGVjdGJvcmRlcndpZHRoJywgJ3NlbGVjdGZvcmVncm91bmQnLAogICAgICAgICAnc2VsZWN0bW9kZScsICdzZXRncmlkJywgJ3N0YXRlJywKICAgICAgICAgJ3Rha2Vmb2N1cycsICd3aWR0aCcsICd4c2Nyb2xsY29tbWFuZCcsICd5c2Nyb2xsY29tbWFuZCcsCkBAIC03MTMsNiArNzE0LDggQEAKICAgICAgICAgc2VsZi5jaGVja0VudW1QYXJhbSh3aWRnZXQsICdhY3RpdmVzdHlsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RvdGJveCcsICdub25lJywgJ3VuZGVybGluZScpCiAKKyAgICB0ZXN0X2p1c3RpZnkgPSByZXF1aXJlc190Y2woOCwgNiwgNSkoU3RhbmRhcmRPcHRpb25zVGVzdHMudGVzdF9qdXN0aWZ5LmltX2Z1bmMpCisKICAgICBkZWYgdGVzdF9saXN0dmFyaWFibGUoc2VsZik6CiAgICAgICAgIHdpZGdldCA9IHNlbGYuY3JlYXRlKCkKICAgICAgICAgdmFyID0gdGtpbnRlci5Eb3VibGVWYXIoc2VsZi5yb290KQpAQCAtOTQ2LDcgKzk0OSw5IEBACiAgICAgT1BUSU9OUyA9ICgKICAgICAgICAgJ2JhY2tncm91bmQnLCAnYm9yZGVyd2lkdGgnLCAnY3Vyc29yJywKICAgICAgICAgJ2hhbmRsZXBhZCcsICdoYW5kbGVzaXplJywgJ2hlaWdodCcsCi0gICAgICAgICdvcGFxdWVyZXNpemUnLCAnb3JpZW50JywgJ3JlbGllZicsCisgICAgICAgICdvcGFxdWVyZXNpemUnLCAnb3JpZW50JywKKyAgICAgICAgJ3Byb3h5YmFja2dyb3VuZCcsICdwcm94eWJvcmRlcndpZHRoJywgJ3Byb3h5cmVsaWVmJywKKyAgICAgICAgJ3JlbGllZicsCiAgICAgICAgICdzYXNoY3Vyc29yJywgJ3Nhc2hwYWQnLCAnc2FzaHJlbGllZicsICdzYXNod2lkdGgnLAogICAgICAgICAnc2hvd2hhbmRsZScsICd3aWR0aCcsCiAgICAgKQpAQCAtOTczLDYgKzk3OCwyMyBAQAogICAgICAgICB3aWRnZXQgPSBzZWxmLmNyZWF0ZSgpCiAgICAgICAgIHNlbGYuY2hlY2tCb29sZWFuUGFyYW0od2lkZ2V0LCAnb3BhcXVlcmVzaXplJykKIAorICAgIEByZXF1aXJlc190Y2woOCwgNiwgNSkKKyAgICBkZWYgdGVzdF9wcm94eWJhY2tncm91bmQoc2VsZik6CisgICAgICAgIHdpZGdldCA9IHNlbGYuY3JlYXRlKCkKKyAgICAgICAgc2VsZi5jaGVja0NvbG9yUGFyYW0od2lkZ2V0LCAncHJveHliYWNrZ3JvdW5kJykKKworICAgIEByZXF1aXJlc190Y2woOCwgNiwgNSkKKyAgICBkZWYgdGVzdF9wcm94eWJvcmRlcndpZHRoKHNlbGYpOgorICAgICAgICB3aWRnZXQgPSBzZWxmLmNyZWF0ZSgpCisgICAgICAgIHNlbGYuY2hlY2tQaXhlbHNQYXJhbSh3aWRnZXQsICdwcm94eWJvcmRlcndpZHRoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEuMywgMi45LCA2LCAtMiwgJzEwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252PW5vY29udikKKworICAgIEByZXF1aXJlc190Y2woOCwgNiwgNSkKKyAgICBkZWYgdGVzdF9wcm94eXJlbGllZihzZWxmKToKKyAgICAgICAgd2lkZ2V0ID0gc2VsZi5jcmVhdGUoKQorICAgICAgICBzZWxmLmNoZWNrUmVsaWVmUGFyYW0od2lkZ2V0LCAncHJveHlyZWxpZWYnKQorCiAgICAgZGVmIHRlc3Rfc2FzaGN1cnNvcihzZWxmKToKICAgICAgICAgd2lkZ2V0ID0gc2VsZi5jcmVhdGUoKQogICAgICAgICBzZWxmLmNoZWNrQ3Vyc29yUGFyYW0od2lkZ2V0LCAnc2FzaGN1cnNvcicpCmRpZmYgLS1naXQgYS9MaWIvbGliLXRrL3Rlc3QvdGVzdF90dGsvc3VwcG9ydC5weSBiL0xpYi9saWItdGsvdGVzdC90ZXN0X3R0ay9zdXBwb3J0LnB5CmluZGV4IGM0ZDg0MmEuLmNiOGVhZTIgMTAwNjQ0Ci0tLSBhL0xpYi9saWItdGsvdGVzdC90ZXN0X3R0ay9zdXBwb3J0LnB5CisrKyBiL0xpYi9saWItdGsvdGVzdC90ZXN0X3R0ay9zdXBwb3J0LnB5CkBAIC0xLDMgKzEsNCBAQAoraW1wb3J0IGZ1bmN0b29scwogaW1wb3J0IHJlCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBUa2ludGVyIGFzIHRraW50ZXIKQEAgLTU0LDkgKzU1LDIwIEBACiB0Y2xfdmVyc2lvbiA9IHR1cGxlKG1hcChpbnQsIF90a2ludGVyLlRDTF9WRVJTSU9OLnNwbGl0KCcuJykpKQogCiBkZWYgcmVxdWlyZXNfdGNsKCp2ZXJzaW9uKToKLSAgICByZXR1cm4gdW5pdHRlc3Quc2tpcFVubGVzcyh0Y2xfdmVyc2lvbiA+PSB2ZXJzaW9uLAorICAgIGlmIGxlbih2ZXJzaW9uKSA8PSAyOgorICAgICAgICByZXR1cm4gdW5pdHRlc3Quc2tpcFVubGVzcyh0Y2xfdmVyc2lvbiA+PSB2ZXJzaW9uLAogICAgICAgICAgICAgJ3JlcXVpcmVzIFRjbCB2ZXJzaW9uID49ICcgKyAnLicuam9pbihtYXAoc3RyLCB2ZXJzaW9uKSkpCiAKKyAgICBkZWYgZGVjbyh0ZXN0KToKKyAgICAgICAgQGZ1bmN0b29scy53cmFwcyh0ZXN0KQorICAgICAgICBkZWYgbmV3dGVzdChzZWxmKToKKyAgICAgICAgICAgIGlmIGdldF90a19wYXRjaGxldmVsKCkgPCAoOCwgNiwgNSk6CisgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgncmVxdWlyZXMgVGNsIHZlcnNpb24gPj0gJyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcuJy5qb2luKG1hcChzdHIsIGdldF90a19wYXRjaGxldmVsKCkpKSkKKyAgICAgICAgICAgIHRlc3Qoc2VsZikKKyAgICAgICAgcmV0dXJuIG5ld3Rlc3QKKyAgICByZXR1cm4gZGVjbworCiBfdGtfcGF0Y2hsZXZlbCA9IE5vbmUKIGRlZiBnZXRfdGtfcGF0Y2hsZXZlbCgpOgogICAgIGdsb2JhbCBfdGtfcGF0Y2hsZXZlbApkaWZmIC0tZ2l0IGEvTGliL2xpYi10ay90ZXN0L3Rlc3RfdHRrL3Rlc3RfZXh0ZW5zaW9ucy5weSBiL0xpYi9saWItdGsvdGVzdC90ZXN0X3R0ay90ZXN0X2V4dGVuc2lvbnMucHkKaW5kZXggNTdmZmRkZC4uNzBiMmY5YyAxMDA2NDQKLS0tIGEvTGliL2xpYi10ay90ZXN0L3Rlc3RfdHRrL3Rlc3RfZXh0ZW5zaW9ucy5weQorKysgYi9MaWIvbGliLXRrL3Rlc3QvdGVzdF90dGsvdGVzdF9leHRlbnNpb25zLnB5CkBAIC0yODQsNiArMjg0LDMxIEBACiAKICAgICAgICAgb3B0bWVudS5kZXN0cm95KCkKIAorICAgIGRlZiB0ZXN0X3VuaXF1ZV9yYWRpb2J1dHRvbnMoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCByYWRpb2J1dHRvbnMgYXJlIHVuaXF1ZSBhY3Jvc3MgaW5zdGFuY2VzIChicG8yNTY4NCkKKyAgICAgICAgaXRlbXMgPSAoJ2EnLCAnYicsICdjJykKKyAgICAgICAgZGVmYXVsdCA9ICdhJworICAgICAgICBvcHRtZW51ID0gdHRrLk9wdGlvbk1lbnUoc2VsZi5yb290LCBzZWxmLnRleHR2YXIsIGRlZmF1bHQsICppdGVtcykKKyAgICAgICAgdGV4dHZhcjIgPSB0a2ludGVyLlN0cmluZ1ZhcihzZWxmLnJvb3QpCisgICAgICAgIG9wdG1lbnUyID0gdHRrLk9wdGlvbk1lbnUoc2VsZi5yb290LCB0ZXh0dmFyMiwgZGVmYXVsdCwgKml0ZW1zKQorICAgICAgICBvcHRtZW51LnBhY2soKQorICAgICAgICBvcHRtZW51LndhaXRfdmlzaWJpbGl0eSgpCisgICAgICAgIG9wdG1lbnUyLnBhY2soKQorICAgICAgICBvcHRtZW51Mi53YWl0X3Zpc2liaWxpdHkoKQorICAgICAgICBvcHRtZW51WydtZW51J10uaW52b2tlKDEpCisgICAgICAgIG9wdG1lbnUyWydtZW51J10uaW52b2tlKDIpCisgICAgICAgIG9wdG1lbnVfc3RyaW5ndmFyX25hbWUgPSBvcHRtZW51WydtZW51J10uZW50cnljZ2V0KDAsICd2YXJpYWJsZScpCisgICAgICAgIG9wdG1lbnUyX3N0cmluZ3Zhcl9uYW1lID0gb3B0bWVudTJbJ21lbnUnXS5lbnRyeWNnZXQoMCwgJ3ZhcmlhYmxlJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcHRtZW51X3N0cmluZ3Zhcl9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdG1lbnUyX3N0cmluZ3Zhcl9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucm9vdC50ay5nbG9iYWxnZXR2YXIob3B0bWVudV9zdHJpbmd2YXJfbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5yb290LnRrLmdsb2JhbGdldHZhcihvcHRtZW51Ml9zdHJpbmd2YXJfbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbXNbMl0pCisKKyAgICAgICAgb3B0bWVudS5kZXN0cm95KCkKKyAgICAgICAgb3B0bWVudTIuZGVzdHJveSgpCisKIAogdGVzdHNfZ3VpID0gKExhYmVsZWRTY2FsZVRlc3QsIE9wdGlvbk1lbnVUZXN0KQogCmRpZmYgLS1naXQgYS9MaWIvbGliLXRrL3Rlc3QvdGVzdF90dGsvdGVzdF93aWRnZXRzLnB5IGIvTGliL2xpYi10ay90ZXN0L3Rlc3RfdHRrL3Rlc3Rfd2lkZ2V0cy5weQppbmRleCBhODQ5NjBkLi4zZDU2ODNjIDEwMDY0NAotLS0gYS9MaWIvbGliLXRrL3Rlc3QvdGVzdF90dGsvdGVzdF93aWRnZXRzLnB5CisrKyBiL0xpYi9saWItdGsvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKQEAgLTE0ODUsNiArMTQ4NSwxNSBAQAogICAgICAgICAgICAgc2VsZi50di5pbnNlcnQoJycsICdlbmQnLCB0ZXh0PXZhbHVlKSwgdGV4dD1Ob25lKSwKICAgICAgICAgICAgIHZhbHVlKQogCisgICAgICAgICMgdGVzdCBmb3IgdmFsdWVzIHdoaWNoIGFyZSBub3QgTm9uZQorICAgICAgICBpdGVtaWQgPSBzZWxmLnR2Lmluc2VydCgnJywgJ2VuZCcsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbWlkLCAnMCcpCisgICAgICAgIGl0ZW1pZCA9IHNlbGYudHYuaW5zZXJ0KCcnLCAnZW5kJywgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW1pZCwgJzAuMCcpCisgICAgICAgICMgdGhpcyBpcyBiZWNhdXNlIEZhbHNlIHJlc29sdmVzIHRvIDAgYW5kIGVsZW1lbnQgd2l0aCAwIGlpZCBpcyBhbHJlYWR5IHByZXNlbnQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGtpbnRlci5UY2xFcnJvciwgc2VsZi50di5pbnNlcnQsICcnLCAnZW5kJywgRmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IsIHNlbGYudHYuaW5zZXJ0LCAnJywgJ2VuZCcsICcnKQorCiAKICAgICBkZWYgdGVzdF9zZWxlY3Rpb24oc2VsZik6CiAgICAgICAgICMgaXRlbSAnbm9uZScgZG9lc24ndCBleGlzdApkaWZmIC0tZ2l0IGEvTGliL2xpYi10ay90a0ZvbnQucHkgYi9MaWIvbGliLXRrL3RrRm9udC5weQppbmRleCAxMTNjOTgzLi5iMjQ1NjIzIDEwMDY0NAotLS0gYS9MaWIvbGliLXRrL3RrRm9udC5weQorKysgYi9MaWIvbGliLXRrL3RrRm9udC5weQpAQCAtNDcsOCArNDcsMTAgQEAKICAgICBkZWYgX3NldChzZWxmLCBrdyk6CiAgICAgICAgIG9wdGlvbnMgPSBbXQogICAgICAgICBmb3IgaywgdiBpbiBrdy5pdGVtcygpOgorICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodiwgYmFzZXN0cmluZyk6CisgICAgICAgICAgICAgICAgdiA9IHN0cih2KQogICAgICAgICAgICAgb3B0aW9ucy5hcHBlbmQoIi0iK2spCi0gICAgICAgICAgICBvcHRpb25zLmFwcGVuZChzdHIodikpCisgICAgICAgICAgICBvcHRpb25zLmFwcGVuZCh2KQogICAgICAgICByZXR1cm4gdHVwbGUob3B0aW9ucykKIAogICAgIGRlZiBfZ2V0KHNlbGYsIGFyZ3MpOgpkaWZmIC0tZ2l0IGEvTGliL2xpYi10ay90dGsucHkgYi9MaWIvbGliLXRrL3R0ay5weQppbmRleCAxMTI1NDM5Li5kNGRmNDA4IDEwMDY0NAotLS0gYS9MaWIvbGliLXRrL3R0ay5weQorKysgYi9MaWIvbGliLXRrL3R0ay5weQpAQCAtMTMzMiw3ICsxMzMyLDcgQEAKICAgICAgICAgYWxyZWFkeSBleGlzdCBpbiB0aGUgdHJlZS4gT3RoZXJ3aXNlLCBhIG5ldyB1bmlxdWUgaWRlbnRpZmllcgogICAgICAgICBpcyBnZW5lcmF0ZWQuIiIiCiAgICAgICAgIG9wdHMgPSBfZm9ybWF0X29wdGRpY3Qoa3cpCi0gICAgICAgIGlmIGlpZDoKKyAgICAgICAgaWYgaWlkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgcmVzID0gc2VsZi50ay5jYWxsKHNlbGYuX3csICJpbnNlcnQiLCBwYXJlbnQsIGluZGV4LAogICAgICAgICAgICAgICAgICItaWQiLCBpaWQsICpvcHRzKQogICAgICAgICBlbHNlOgpAQCAtMTUyMSw3ICsxNTIxLDkgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRlbCBzZWxmLl92YXJpYWJsZQotICAgICAgICAgICAgRnJhbWUuZGVzdHJveShzZWxmKQorICAgICAgICBGcmFtZS5kZXN0cm95KHNlbGYpCisgICAgICAgIHNlbGYubGFiZWwgPSBOb25lCisgICAgICAgIHNlbGYuc2NhbGUgPSBOb25lCiAKIAogICAgIGRlZiBfYWRqdXN0KHNlbGYsICphcmdzKToKQEAgLTE2MTIsNyArMTYxNCw4IEBACiAgICAgICAgIG1lbnUuZGVsZXRlKDAsICdlbmQnKQogICAgICAgICBmb3IgdmFsIGluIHZhbHVlczoKICAgICAgICAgICAgIG1lbnUuYWRkX3JhZGlvYnV0dG9uKGxhYmVsPXZhbCwKLSAgICAgICAgICAgICAgICBjb21tYW5kPVRraW50ZXIuX3NldGl0KHNlbGYuX3ZhcmlhYmxlLCB2YWwsIHNlbGYuX2NhbGxiYWNrKSkKKyAgICAgICAgICAgICAgICBjb21tYW5kPVRraW50ZXIuX3NldGl0KHNlbGYuX3ZhcmlhYmxlLCB2YWwsIHNlbGYuX2NhbGxiYWNrKSwKKyAgICAgICAgICAgICAgICB2YXJpYWJsZT1zZWxmLl92YXJpYWJsZSkKIAogICAgICAgICBpZiBkZWZhdWx0OgogICAgICAgICAgICAgc2VsZi5fdmFyaWFibGUuc2V0KGRlZmF1bHQpCkBAIC0xNjIwLDUgKzE2MjMsOCBAQAogCiAgICAgZGVmIGRlc3Ryb3koc2VsZik6CiAgICAgICAgICIiIkRlc3Ryb3kgdGhpcyB3aWRnZXQgYW5kIGl0cyBhc3NvY2lhdGVkIHZhcmlhYmxlLiIiIgotICAgICAgICBkZWwgc2VsZi5fdmFyaWFibGUKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHNlbGYuX3ZhcmlhYmxlCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKICAgICAgICAgTWVudWJ1dHRvbi5kZXN0cm95KHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvbGliLXRrL3R1cnRsZS5weSBiL0xpYi9saWItdGsvdHVydGxlLnB5CmluZGV4IDI2NDMxOGUuLjUyZTY2OWIgMTAwNjQ0Ci0tLSBhL0xpYi9saWItdGsvdHVydGxlLnB5CisrKyBiL0xpYi9saWItdGsvdHVydGxlLnB5CkBAIC0yNzYsNyArMjc2LDcgQEAKICAgICAgICAgICAgIHJldHVybiBzZWxmWzBdKm90aGVyWzBdK3NlbGZbMV0qb3RoZXJbMV0KICAgICAgICAgcmV0dXJuIFZlYzJEKHNlbGZbMF0qb3RoZXIsIHNlbGZbMV0qb3RoZXIpCiAgICAgZGVmIF9fcm11bF9fKHNlbGYsIG90aGVyKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgaW50KSBvciBpc2luc3RhbmNlKG90aGVyLCBmbG9hdCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIChpbnQsIGxvbmcsIGZsb2F0KSk6CiAgICAgICAgICAgICByZXR1cm4gVmVjMkQoc2VsZlswXSpvdGhlciwgc2VsZlsxXSpvdGhlcikKICAgICBkZWYgX19zdWJfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgIHJldHVybiBWZWMyRChzZWxmWzBdLW90aGVyWzBdLCBzZWxmWzFdLW90aGVyWzFdKQpAQCAtMjM1Miw3ICsyMzUyLDcgQEAKICAgICAgICAgICAgIHNlbGYuX3Jlc2l6ZW1vZGUgPSBwWyJyZXNpemVtb2RlIl0KICAgICAgICAgaWYgInN0cmV0Y2hmYWN0b3IiIGluIHA6CiAgICAgICAgICAgICBzZiA9IHBbInN0cmV0Y2hmYWN0b3IiXQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzZiwgKGludCwgZmxvYXQpKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2YsIChpbnQsIGxvbmcsIGZsb2F0KSk6CiAgICAgICAgICAgICAgICAgc2YgPSAoc2YsIHNmKQogICAgICAgICAgICAgc2VsZi5fc3RyZXRjaGZhY3RvciA9IHNmCiAgICAgICAgIGlmICJvdXRsaW5lIiBpbiBwOgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXJfYmFzZS5weSBiL0xpYi9saWIydG8zL2ZpeGVyX2Jhc2UucHkKaW5kZXggZDQzN2I5Ni4uMmY1MGFkMyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXJfYmFzZS5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcl9iYXNlLnB5CkBAIC00LDcgKzQsNiBAQAogIiIiQmFzZSBjbGFzcyBmb3IgZml4ZXJzIChvcHRpb25hbCwgYnV0IHJlY29tbWVuZGVkKS4iIiIKIAogIyBQeXRob24gaW1wb3J0cwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBpdGVydG9vbHMKIAogIyBMb2NhbCBpbXBvcnRzCkBAIC03NSw3ICs3NCw2IEBACiAgICAgICAgIFRoZSBtYWluIHJlZmFjdG9yaW5nIHRvb2wgc2hvdWxkIGNhbGwgdGhpcy4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQotICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKGZpbGVuYW1lKQogCiAgICAgZGVmIG1hdGNoKHNlbGYsIG5vZGUpOgogICAgICAgICAiIiJSZXR1cm5zIG1hdGNoIGZvciBhIGdpdmVuIHBhcnNlIHRyZWUgbm9kZS4KZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3BhdGNvbXAucHkgYi9MaWIvbGliMnRvMy9wYXRjb21wLnB5CmluZGV4IGQzMWE5ZGEuLjQ5ZWQ2NjggMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3BhdGNvbXAucHkKKysrIGIvTGliL2xpYjJ0bzMvcGF0Y29tcC5weQpAQCAtMTEsNyArMTEsNiBAQAogX19hdXRob3JfXyA9ICJHdWlkbyB2YW4gUm9zc3VtIDxndWlkb0BweXRob24ub3JnPiIKIAogIyBQeXRob24gaW1wb3J0cwotaW1wb3J0IG9zCiBpbXBvcnQgU3RyaW5nSU8KIAogIyBGYWlybHkgbG9jYWwgaW1wb3J0cwpAQCAtMjEsMTAgKzIwLDYgQEAKIGZyb20gLiBpbXBvcnQgcHl0cmVlCiBmcm9tIC4gaW1wb3J0IHB5Z3JhbQogCi0jIFRoZSBwYXR0ZXJuIGdyYW1tYXIgZmlsZQotX1BBVFRFUk5fR1JBTU1BUl9GSUxFID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlBhdHRlcm5HcmFtbWFyLnR4dCIpCi0KIAogY2xhc3MgUGF0dGVyblN5bnRheEVycm9yKEV4Y2VwdGlvbik6CiAgICAgcGFzcwpAQCAtNDIsMTMgKzM3LDE3IEBACiAKIGNsYXNzIFBhdHRlcm5Db21waWxlcihvYmplY3QpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGdyYW1tYXJfZmlsZT1fUEFUVEVSTl9HUkFNTUFSX0ZJTEUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBncmFtbWFyX2ZpbGU9Tm9uZSk6CiAgICAgICAgICIiIkluaXRpYWxpemVyLgogCiAgICAgICAgIFRha2VzIGFuIG9wdGlvbmFsIGFsdGVybmF0aXZlIGZpbGVuYW1lIGZvciB0aGUgcGF0dGVybiBncmFtbWFyLgogICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5ncmFtbWFyID0gZHJpdmVyLmxvYWRfZ3JhbW1hcihncmFtbWFyX2ZpbGUpCi0gICAgICAgIHNlbGYuc3ltcyA9IHB5Z3JhbS5TeW1ib2xzKHNlbGYuZ3JhbW1hcikKKyAgICAgICAgaWYgZ3JhbW1hcl9maWxlIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLmdyYW1tYXIgPSBweWdyYW0ucGF0dGVybl9ncmFtbWFyCisgICAgICAgICAgICBzZWxmLnN5bXMgPSBweWdyYW0ucGF0dGVybl9zeW1ib2xzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmdyYW1tYXIgPSBkcml2ZXIubG9hZF9ncmFtbWFyKGdyYW1tYXJfZmlsZSkKKyAgICAgICAgICAgIHNlbGYuc3ltcyA9IHB5Z3JhbS5TeW1ib2xzKHNlbGYuZ3JhbW1hcikKICAgICAgICAgc2VsZi5weWdyYW1tYXIgPSBweWdyYW0ucHl0aG9uX2dyYW1tYXIKICAgICAgICAgc2VsZi5weXN5bXMgPSBweWdyYW0ucHl0aG9uX3N5bWJvbHMKICAgICAgICAgc2VsZi5kcml2ZXIgPSBkcml2ZXIuRHJpdmVyKHNlbGYuZ3JhbW1hciwgY29udmVydD1wYXR0ZXJuX2NvbnZlcnQpCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9wZ2VuMi9kcml2ZXIucHkgYi9MaWIvbGliMnRvMy9wZ2VuMi9kcml2ZXIucHkKaW5kZXggY2U2MDFiYi4uYTUxMzMzMCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcGdlbjIvZHJpdmVyLnB5CisrKyBiL0xpYi9saWIydG8zL3BnZW4yL2RyaXZlci5weQpAQCAtMTksNiArMTksNyBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IG9zCiBpbXBvcnQgbG9nZ2luZworaW1wb3J0IHBrZ3V0aWwKIGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHN5cwogCkBAIC0xNDMsNiArMTQ0LDI2IEBACiAgICAgcmV0dXJuIG9zLnBhdGguZ2V0bXRpbWUoYSkgPj0gb3MucGF0aC5nZXRtdGltZShiKQogCiAKK2RlZiBsb2FkX3BhY2thZ2VkX2dyYW1tYXIocGFja2FnZSwgZ3JhbW1hcl9zb3VyY2UpOgorICAgICIiIk5vcm1hbGx5LCBsb2FkcyBhIHBpY2tsZWQgZ3JhbW1hciBieSBkb2luZworICAgICAgICBwa2d1dGlsLmdldF9kYXRhKHBhY2thZ2UsIHBpY2tsZWRfZ3JhbW1hcikKKyAgICB3aGVyZSAqcGlja2xlZF9ncmFtbWFyKiBpcyBjb21wdXRlZCBmcm9tICpncmFtbWFyX3NvdXJjZSogYnkgYWRkaW5nIHRoZQorICAgIFB5dGhvbiB2ZXJzaW9uIGFuZCB1c2luZyBhIGBgLnBpY2tsZWBgIGV4dGVuc2lvbi4KKworICAgIEhvd2V2ZXIsIGlmICpncmFtbWFyX3NvdXJjZSogaXMgYW4gZXh0YW50IGZpbGUsIGxvYWRfZ3JhbW1hcihncmFtbWFyX3NvdXJjZSkKKyAgICBpcyBjYWxsZWQgaW5zdGVhZC4gVGhpcyBmYWNpbGl0YXRlcyB1c2luZyBhIHBhY2thZ2VkIGdyYW1tYXIgZmlsZSB3aGVuIG5lZWRlZAorICAgIGJ1dCBwcmVzZXJ2ZXMgbG9hZF9ncmFtbWFyJ3MgYXV0b21hdGljIHJlZ2VuZXJhdGlvbiBiZWhhdmlvciB3aGVuIHBvc3NpYmxlLgorCisgICAgIiIiCisgICAgaWYgb3MucGF0aC5pc2ZpbGUoZ3JhbW1hcl9zb3VyY2UpOgorICAgICAgICByZXR1cm4gbG9hZF9ncmFtbWFyKGdyYW1tYXJfc291cmNlKQorICAgIHBpY2tsZWRfbmFtZSA9IF9nZW5lcmF0ZV9waWNrbGVfbmFtZShvcy5wYXRoLmJhc2VuYW1lKGdyYW1tYXJfc291cmNlKSkKKyAgICBkYXRhID0gcGtndXRpbC5nZXRfZGF0YShwYWNrYWdlLCBwaWNrbGVkX25hbWUpCisgICAgZyA9IGdyYW1tYXIuR3JhbW1hcigpCisgICAgZy5sb2FkcyhkYXRhKQorICAgIHJldHVybiBnCisKKwogZGVmIG1haW4oKmFyZ3MpOgogICAgICIiIk1haW4gcHJvZ3JhbSwgd2hlbiBydW4gYXMgYSBzY3JpcHQ6IHByb2R1Y2UgZ3JhbW1hciBwaWNrbGUgZmlsZXMuCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3BnZW4yL2dyYW1tYXIucHkgYi9MaWIvbGliMnRvMy9wZ2VuMi9ncmFtbWFyLnB5CmluZGV4IDc1MjU1ZTkuLjBiNmQ4NmIgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3BnZW4yL2dyYW1tYXIucHkKKysrIGIvTGliL2xpYjJ0bzMvcGdlbjIvZ3JhbW1hci5weQpAQCAtMTA5LDYgKzEwOSwxMCBAQAogICAgICAgICBmLmNsb3NlKCkKICAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUoZCkKIAorICAgIGRlZiBsb2FkcyhzZWxmLCBwa2wpOgorICAgICAgICAiIiJMb2FkIHRoZSBncmFtbWFyIHRhYmxlcyBmcm9tIGEgcGlja2xlIGJ5dGVzIG9iamVjdC4iIiIKKyAgICAgICAgc2VsZi5fX2RpY3RfXy51cGRhdGUocGlja2xlLmxvYWRzKHBrbCkpCisKICAgICBkZWYgY29weShzZWxmKToKICAgICAgICAgIiIiCiAgICAgICAgIENvcHkgdGhlIGdyYW1tYXIuCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9wZ2VuMi9wZ2VuLnB5IGIvTGliL2xpYjJ0bzMvcGdlbjIvcGdlbi5weQppbmRleCBlZDE2OTkyLi5iZTRmY2FkIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9wZ2VuMi9wZ2VuLnB5CisrKyBiL0xpYi9saWIydG8zL3BnZW4yL3BnZW4ucHkKQEAgLTc0LDcgKzc0LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBBIG5hbWVkIHRva2VuIChOQU1FLCBOVU1CRVIsIFNUUklORykKICAgICAgICAgICAgICAgICBpdG9rZW4gPSBnZXRhdHRyKHRva2VuLCBsYWJlbCwgTm9uZSkKLSAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdG9rZW4sIGludCksIGxhYmVsCisgICAgICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaXRva2VuLCAoaW50LCBsb25nKSksIGxhYmVsCiAgICAgICAgICAgICAgICAgYXNzZXJ0IGl0b2tlbiBpbiB0b2tlbi50b2tfbmFtZSwgbGFiZWwKICAgICAgICAgICAgICAgICBpZiBpdG9rZW4gaW4gYy50b2tlbnM6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjLnRva2Vuc1tpdG9rZW5dCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9weWdyYW0ucHkgYi9MaWIvbGliMnRvMy9weWdyYW0ucHkKaW5kZXggNjIxZmYyNC4uN2U2N2U0YSAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcHlncmFtLnB5CisrKyBiL0xpYi9saWIydG8zL3B5Z3JhbS5weQpAQCAtMjksMTIgKzI5LDEyIEBACiAgICAgICAgICAgICBzZXRhdHRyKHNlbGYsIG5hbWUsIHN5bWJvbCkKIAogCi1weXRob25fZ3JhbW1hciA9IGRyaXZlci5sb2FkX2dyYW1tYXIoX0dSQU1NQVJfRklMRSkKK3B5dGhvbl9ncmFtbWFyID0gZHJpdmVyLmxvYWRfcGFja2FnZWRfZ3JhbW1hcigibGliMnRvMyIsIF9HUkFNTUFSX0ZJTEUpCiAKIHB5dGhvbl9zeW1ib2xzID0gU3ltYm9scyhweXRob25fZ3JhbW1hcikKIAogcHl0aG9uX2dyYW1tYXJfbm9fcHJpbnRfc3RhdGVtZW50ID0gcHl0aG9uX2dyYW1tYXIuY29weSgpCiBkZWwgcHl0aG9uX2dyYW1tYXJfbm9fcHJpbnRfc3RhdGVtZW50LmtleXdvcmRzWyJwcmludCJdCiAKLXBhdHRlcm5fZ3JhbW1hciA9IGRyaXZlci5sb2FkX2dyYW1tYXIoX1BBVFRFUk5fR1JBTU1BUl9GSUxFKQorcGF0dGVybl9ncmFtbWFyID0gZHJpdmVyLmxvYWRfcGFja2FnZWRfZ3JhbW1hcigibGliMnRvMyIsIF9QQVRURVJOX0dSQU1NQVJfRklMRSkKIHBhdHRlcm5fc3ltYm9scyA9IFN5bWJvbHMocGF0dGVybl9ncmFtbWFyKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQppbmRleCBlYmY4NDQxLi5kMjI1NGYxIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weQpAQCAtMTEsMTEgKzExLDE0IEBACiBmcm9tIC5zdXBwb3J0IGltcG9ydCBkcml2ZXIsIHRlc3RfZGlyCiAKICMgUHl0aG9uIGltcG9ydHMKK2ltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCitpbXBvcnQgcGlja2xlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogCiAjIExvY2FsIGltcG9ydHMKQEAgLTk3LDYgKzEwMCwxOCBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc2h1dGlsLnJtdHJlZSh0bXBkaXIpCiAKKyAgICBkZWYgdGVzdF9sb2FkX3BhY2thZ2VkX2dyYW1tYXIoc2VsZik6CisgICAgICAgIG1vZG5hbWUgPSBfX25hbWVfXyArICcubG9hZF90ZXN0JworICAgICAgICBjbGFzcyBNeUxvYWRlcjoKKyAgICAgICAgICAgIGRlZiBnZXRfZGF0YShzZWxmLCB3aGVyZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHBpY2tsZS5kdW1wcyh7J2VsZXBoYW50JzogMTl9KQorICAgICAgICBjbGFzcyBNeU1vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKKyAgICAgICAgICAgIF9fZmlsZV9fID0gJ3BhcnNlcnRlc3Rtb2R1bGUnCisgICAgICAgICAgICBfX2xvYWRlcl9fID0gTXlMb2FkZXIoKQorICAgICAgICBzeXMubW9kdWxlc1ttb2RuYW1lXSA9IE15TW9kdWxlKG1vZG5hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcGVyYXRvci5kZWxpdGVtLCBzeXMubW9kdWxlcywgbW9kbmFtZSkKKyAgICAgICAgZyA9IHBnZW4yX2RyaXZlci5sb2FkX3BhY2thZ2VkX2dyYW1tYXIobW9kbmFtZSwgJ0dyYW1tYXIudHh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLmVsZXBoYW50LCAxOSkKIAogCiBjbGFzcyBHcmFtbWFyVGVzdChzdXBwb3J0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi9sb2NhbGUucHkgYi9MaWIvbG9jYWxlLnB5CmluZGV4IDVhYWIxNjMuLjUxOTA5ZjggMTAwNjQ0Ci0tLSBhL0xpYi9sb2NhbGUucHkKKysrIGIvTGliL2xvY2FsZS5weQpAQCAtNjE4LDkgKzYxOCwxOCBAQAogICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbmxfbGFuZ2luZm8oQ09ERVNFVCkKICAgICAgICAgICAgICAgICBzZXRsb2NhbGUoTENfQ1RZUEUsIG9sZGxvYykKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0CiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBubF9sYW5naW5mbyhDT0RFU0VUKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IG5sX2xhbmdpbmZvKENPREVTRVQpCisKKyAgICAgICAgICAgIGlmIG5vdCByZXN1bHQgYW5kIHN5cy5wbGF0Zm9ybSA9PSAnZGFyd2luJzoKKyAgICAgICAgICAgICAgICAjIG5sX2xhbmdpbmZvIGNhbiByZXR1cm4gYW4gZW1wdHkgc3RyaW5nCisgICAgICAgICAgICAgICAgIyB3aGVuIHRoZSBzZXR0aW5nIGhhcyBhbiBpbnZhbGlkIHZhbHVlLgorICAgICAgICAgICAgICAgICMgRGVmYXVsdCB0byBVVEYtOCBpbiB0aGF0IGNhc2UgYmVjYXVzZQorICAgICAgICAgICAgICAgICMgVVRGLTggaXMgdGhlIGRlZmF1bHQgY2hhcnNldCBvbiBPU1ggYW5kCisgICAgICAgICAgICAgICAgIyByZXR1cm5pbmcgbm90aGluZyB3aWxsIGNyYXNoIHRoZQorICAgICAgICAgICAgICAgICMgaW50ZXJwcmV0ZXIuCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gJ1VURi04JworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKICMjIyBEYXRhYmFzZQpAQCAtNzg5LDYgKzc5OCwxNyBAQAogIwogIyBTUyAyMDE0LTEwLTAxOgogIyBVcGRhdGVkIGFsaWFzIG1hcHBpbmcgd2l0aCBnbGliYyAyLjE5IHN1cHBvcnRlZCBsb2NhbGVzLgorIworIyBTUyAyMDE4LTA1LTA1OgorIyBVcGRhdGVkIGFsaWFzIG1hcHBpbmcgd2l0aCBnbGliYyAyLjI3IHN1cHBvcnRlZCBsb2NhbGVzLgorIworIyBUaGVzZSBhcmUgdGhlIGRpZmZlcmVuY2VzIGNvbXBhcmVkIHRvIHRoZSBvbGQgbWFwcGluZyAoUHl0aG9uIDIuNy4xNQorIyBhbmQgb2xkZXIpOgorIworIyAgICB1cGRhdGVkICdjYV9lc0B2YWxlbmNpYScgLT4gJ2NhX0VTLklTTzg4NTktMTVAdmFsZW5jaWEnIHRvICdjYV9FUy5VVEYtOEB2YWxlbmNpYScKKyMgICAgdXBkYXRlZCAnZW5nbGlzaC5pc284ODU5MScgLT4gJ2VuX0VOLklTTzg4NTktMScgdG8gJ2VuX1VTLklTTzg4NTktMScKKyMgICAgdXBkYXRlZCAna2tfa3onIC0+ICdra19LWi5SSzEwNDgnIHRvICdra19LWi5wdGNwMTU0JworIyAgICB1cGRhdGVkICdydXNzaWFuJyAtPiAncnVfUlUuSVNPODg1OS01JyB0byAncnVfUlUuS09JOC1SJwogCiBsb2NhbGVfYWxpYXMgPSB7CiAgICAgJ2EzJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhel9BWi5LT0k4LUMnLApAQCAtODAxLDExICs4MjEsMTQgQEAKICAgICAnYWYnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FmX1pBLklTTzg4NTktMScsCiAgICAgJ2FmX3phJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhZl9aQS5JU084ODU5LTEnLAogICAgICdhZl96YS5pc284ODU5MSc6ICAgICAgICAgICAgICAgICAgICAgICAnYWZfWkEuSVNPODg1OS0xJywKKyAgICAnYWdyX3BlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Fncl9QRS5VVEYtOCcsCisgICAgJ2FrX2doJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdha19HSC5VVEYtOCcsCiAgICAgJ2FtJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbV9FVC5VVEYtOCcsCiAgICAgJ2FtX2V0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbV9FVC5VVEYtOCcsCiAgICAgJ2FtZXJpY2FuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9VUy5JU084ODU5LTEnLAogICAgICdhbWVyaWNhbi5pc284ODU5MSc6ICAgICAgICAgICAgICAgICAgICAnZW5fVVMuSVNPODg1OS0xJywKICAgICAnYW5fZXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FuX0VTLklTTzg4NTktMTUnLAorICAgICdhbnBfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYW5wX0lOLlVURi04JywKICAgICAnYXInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX0FBLklTTzg4NTktNicsCiAgICAgJ2FyX2FhJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcl9BQS5JU084ODU5LTYnLAogICAgICdhcl9hYS5pc284ODU5Nic6ICAgICAgICAgICAgICAgICAgICAgICAnYXJfQUEuSVNPODg1OS02JywKQEAgLTgzOCw2ICs4NjEsNyBAQAogICAgICdhcl9zYS5pc284ODU5Nic6ICAgICAgICAgICAgICAgICAgICAgICAnYXJfU0EuSVNPODg1OS02JywKICAgICAnYXJfc2QnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FyX1NELklTTzg4NTktNicsCiAgICAgJ2FyX3NkLmlzbzg4NTk2JzogICAgICAgICAgICAgICAgICAgICAgICdhcl9TRC5JU084ODU5LTYnLAorICAgICdhcl9zcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJfU1MuVVRGLTgnLAogICAgICdhcl9zeSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXJfU1kuSVNPODg1OS02JywKICAgICAnYXJfc3kuaXNvODg1OTYnOiAgICAgICAgICAgICAgICAgICAgICAgJ2FyX1NZLklTTzg4NTktNicsCiAgICAgJ2FyX3RuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcl9UTi5JU084ODU5LTYnLApAQCAtODUzLDYgKzg3Nyw3IEBACiAgICAgJ2F6JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhel9BWi5JU084ODU5LTlFJywKICAgICAnYXpfYXonOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F6X0FaLklTTzg4NTktOUUnLAogICAgICdhel9hei5pc284ODU5OWUnOiAgICAgICAgICAgICAgICAgICAgICAnYXpfQVouSVNPODg1OS05RScsCisgICAgJ2F6X2lyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhel9JUi5VVEYtOCcsCiAgICAgJ2JlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiZV9CWS5DUDEyNTEnLAogICAgICdiZUBsYXRpbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmVfQlkuVVRGLThAbGF0aW4nLAogICAgICdiZV9iZy51dGY4JzogICAgICAgICAgICAgICAgICAgICAgICAgICAnYmdfQkcuVVRGLTgnLApAQCAtODcwLDcgKzg5NSwxMCBAQAogICAgICdiZ19iZy5pc284ODU5NSc6ICAgICAgICAgICAgICAgICAgICAgICAnYmdfQkcuSVNPODg1OS01JywKICAgICAnYmdfYmcua29pOHInOiAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JnX0JHLktPSTgtUicsCiAgICAgJ2JnX2JnLm1pY3Jvc29mdGNwMTI1MSc6ICAgICAgICAgICAgICAgICdiZ19CRy5DUDEyNTEnLAorICAgICdiaGJfaW4udXRmOCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAnYmhiX0lOLlVURi04JywKICAgICAnYmhvX2luJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Job19JTi5VVEYtOCcsCisgICAgJ2Job19ucCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiaG9fTlAuVVRGLTgnLAorICAgICdiaV92dSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYmlfVlUuVVRGLTgnLAogICAgICdibl9iZCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm5fQkQuVVRGLTgnLAogICAgICdibl9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm5fSU4uVVRGLTgnLAogICAgICdib19jbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYm9fQ04uVVRGLTgnLApAQCAtOTEyLDggKzk0MCw4IEBACiAgICAgJ2NhX2VzLmlzbzg4NTkxNSc6ICAgICAgICAgICAgICAgICAgICAgICdjYV9FUy5JU084ODU5LTE1JywKICAgICAnY2FfZXMuaXNvODg1OTE1QGV1cm8nOiAgICAgICAgICAgICAgICAgJ2NhX0VTLklTTzg4NTktMTUnLAogICAgICdjYV9lcy51dGY4QGV1cm8nOiAgICAgICAgICAgICAgICAgICAgICAnY2FfRVMuVVRGLTgnLAotICAgICdjYV9lc0B2YWxlbmNpYSc6ICAgICAgICAgICAgICAgICAgICAgICAnY2FfRVMuSVNPODg1OS0xNUB2YWxlbmNpYScsCiAgICAgJ2NhX2VzQGV1cm8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYV9FUy5JU084ODU5LTE1JywKKyAgICAnY2FfZXNAdmFsZW5jaWEnOiAgICAgICAgICAgICAgICAgICAgICAgJ2NhX0VTLlVURi04QHZhbGVuY2lhJywKICAgICAnY2FfZnInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NhX0ZSLklTTzg4NTktMScsCiAgICAgJ2NhX2ZyLmlzbzg4NTkxJzogICAgICAgICAgICAgICAgICAgICAgICdjYV9GUi5JU084ODU5LTEnLAogICAgICdjYV9mci5pc284ODU5MTUnOiAgICAgICAgICAgICAgICAgICAgICAnY2FfRlIuSVNPODg1OS0xNScsCkBAIC05MjcsMTAgKzk1NSwxNCBAQAogICAgICdjYV9pdC51dGY4QGV1cm8nOiAgICAgICAgICAgICAgICAgICAgICAnY2FfSVQuVVRGLTgnLAogICAgICdjYV9pdEBldXJvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnY2FfSVQuSVNPODg1OS0xNScsCiAgICAgJ2NhdGFsYW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjYV9FUy5JU084ODU5LTEnLAorICAgICdjZV9ydSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2VfUlUuVVRGLTgnLAogICAgICdjZXh0ZW5kJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fVVMuSVNPODg1OS0xJywKICAgICAnY2V4dGVuZC5lbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1VTLklTTzg4NTktMScsCiAgICAgJ2NoaW5lc2Utcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aF9DTi5ldWNDTicsCiAgICAgJ2NoaW5lc2UtdCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICd6aF9UVy5ldWNUVycsCisgICAgJ2Nocl91cyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaHJfVVMuVVRGLTgnLAorICAgICdja2JfaXEnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2tiX0lRLlVURi04JywKKyAgICAnY21uX3R3JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Ntbl9UVy5VVEYtOCcsCiAgICAgJ2NyaF91YSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjcmhfVUEuVVRGLTgnLAogICAgICdjcm9hdGlhbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaHJfSFIuSVNPODg1OS0yJywKICAgICAnY3MnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NzX0NaLklTTzg4NTktMicsCkBAIC05ODcsNiArMTAxOSw3IEBACiAgICAgJ2RlX2RlLmlzbzg4NTkxNUBldXJvJzogICAgICAgICAgICAgICAgICdkZV9ERS5JU084ODU5LTE1JywKICAgICAnZGVfZGUudXRmOEBldXJvJzogICAgICAgICAgICAgICAgICAgICAgJ2RlX0RFLlVURi04JywKICAgICAnZGVfZGVAZXVybyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlX0RFLklTTzg4NTktMTUnLAorICAgICdkZV9pdCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVfSVQuSVNPODg1OS0xJywKICAgICAnZGVfbGkudXRmOCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlX0xJLlVURi04JywKICAgICAnZGVfbHUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlX0xVLklTTzg4NTktMScsCiAgICAgJ2RlX2x1Lmlzbzg4NTkxJzogICAgICAgICAgICAgICAgICAgICAgICdkZV9MVS5JU084ODU5LTEnLApAQCAtMTAyMSw2ICsxMDU0LDggQEAKICAgICAnZW5fY2EnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0NBLklTTzg4NTktMScsCiAgICAgJ2VuX2NhLmlzbzg4NTkxJzogICAgICAgICAgICAgICAgICAgICAgICdlbl9DQS5JU084ODU5LTEnLAogICAgICdlbl9kayc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fREsuSVNPODg1OS0xJywKKyAgICAnZW5fZGsuaXNvODg1OTEnOiAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0RLLklTTzg4NTktMScsCisgICAgJ2VuX2RrLmlzbzg4NTkxNSc6ICAgICAgICAgICAgICAgICAgICAgICdlbl9ESy5JU084ODU5LTE1JywKICAgICAnZW5fZGwudXRmOCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0RMLlVURi04JywKICAgICAnZW5fZ2InOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0dCLklTTzg4NTktMScsCiAgICAgJ2VuX2diLjg4NTkxJzogICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9HQi5JU084ODU5LTEnLApAQCAtMTAzNSwxMiArMTA3MCwxNCBAQAogICAgICdlbl9pZS5pc284ODU5MTVAZXVybyc6ICAgICAgICAgICAgICAgICAnZW5fSUUuSVNPODg1OS0xNScsCiAgICAgJ2VuX2llLnV0ZjhAZXVybyc6ICAgICAgICAgICAgICAgICAgICAgICdlbl9JRS5VVEYtOCcsCiAgICAgJ2VuX2llQGV1cm8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9JRS5JU084ODU5LTE1JywKKyAgICAnZW5faWwnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0lMLlVURi04JywKICAgICAnZW5faW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0lOLklTTzg4NTktMScsCiAgICAgJ2VuX25nJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9ORy5VVEYtOCcsCiAgICAgJ2VuX256JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9OWi5JU084ODU5LTEnLAogICAgICdlbl9uei5pc284ODU5MSc6ICAgICAgICAgICAgICAgICAgICAgICAnZW5fTlouSVNPODg1OS0xJywKICAgICAnZW5fcGgnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1BILklTTzg4NTktMScsCiAgICAgJ2VuX3BoLmlzbzg4NTkxJzogICAgICAgICAgICAgICAgICAgICAgICdlbl9QSC5JU084ODU5LTEnLAorICAgICdlbl9zYy51dGY4JzogICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fU0MuVVRGLTgnLAogICAgICdlbl9zZyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fU0cuSVNPODg1OS0xJywKICAgICAnZW5fc2cuaXNvODg1OTEnOiAgICAgICAgICAgICAgICAgICAgICAgJ2VuX1NHLklTTzg4NTktMScsCiAgICAgJ2VuX3VrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9HQi5JU084ODU5LTEnLApAQCAtMTA2NCw3ICsxMTAxLDcgQEAKICAgICAnZW5nX2diJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuX0dCLklTTzg4NTktMScsCiAgICAgJ2VuZ19nYi44ODU5JzogICAgICAgICAgICAgICAgICAgICAgICAgICdlbl9HQi5JU084ODU5LTEnLAogICAgICdlbmdsaXNoJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fRU4uSVNPODg1OS0xJywKLSAgICAnZW5nbGlzaC5pc284ODU5MSc6ICAgICAgICAgICAgICAgICAgICAgJ2VuX0VOLklTTzg4NTktMScsCisgICAgJ2VuZ2xpc2guaXNvODg1OTEnOiAgICAgICAgICAgICAgICAgICAgICdlbl9VUy5JU084ODU5LTEnLAogICAgICdlbmdsaXNoX3VrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnZW5fR0IuSVNPODg1OS0xJywKICAgICAnZW5nbGlzaF91ay44ODU5JzogICAgICAgICAgICAgICAgICAgICAgJ2VuX0dCLklTTzg4NTktMScsCiAgICAgJ2VuZ2xpc2hfdW5pdGVkLXN0YXRlcyc6ICAgICAgICAgICAgICAgICdlbl9VUy5JU084ODU5LTEnLApAQCAtMTI1OSw2ICsxMjk2LDcgQEAKICAgICAnZ3ZfZ2IuaXNvODg1OTE1JzogICAgICAgICAgICAgICAgICAgICAgJ2d2X0dCLklTTzg4NTktMTUnLAogICAgICdndl9nYkBldXJvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnZ3ZfR0IuSVNPODg1OS0xNScsCiAgICAgJ2hhX25nJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYV9ORy5VVEYtOCcsCisgICAgJ2hha190dyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYWtfVFcuVVRGLTgnLAogICAgICdoZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVfSUwuSVNPODg1OS04JywKICAgICAnaGVfaWwnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlX0lMLklTTzg4NTktOCcsCiAgICAgJ2hlX2lsLmNwMTI1NSc6ICAgICAgICAgICAgICAgICAgICAgICAgICdoZV9JTC5DUDEyNTUnLApAQCAtMTI2OSw2ICsxMzA3LDcgQEAKICAgICAnaGknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hpX0lOLklTQ0lJLURFVicsCiAgICAgJ2hpX2luJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoaV9JTi5JU0NJSS1ERVYnLAogICAgICdoaV9pbi5pc2NpaWRldic6ICAgICAgICAgICAgICAgICAgICAgICAnaGlfSU4uSVNDSUktREVWJywKKyAgICAnaGlmX2ZqJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hpZl9GSi5VVEYtOCcsCiAgICAgJ2huZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdobmVfSU4uVVRGLTgnLAogICAgICdobmVfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaG5lX0lOLlVURi04JywKICAgICAnaHInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hyX0hSLklTTzg4NTktMicsCkBAIC0xMzUyLDcgKzEzOTEsOCBAQAogICAgICdrYV9nZS5nZW9yZ2lhbmFjYWRlbXknOiAgICAgICAgICAgICAgICAna2FfR0UuR0VPUkdJQU4tQUNBREVNWScsCiAgICAgJ2thX2dlLmdlb3JnaWFucHMnOiAgICAgICAgICAgICAgICAgICAgICdrYV9HRS5HRU9SR0lBTi1QUycsCiAgICAgJ2thX2dlLmdlb3JnaWFucnMnOiAgICAgICAgICAgICAgICAgICAgICdrYV9HRS5HRU9SR0lBTi1BQ0FERU1ZJywKLSAgICAna2tfa3onOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2trX0taLlJLMTA0OCcsCisgICAgJ2thYl9keic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrYWJfRFouVVRGLTgnLAorICAgICdra19reic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2tfS1oucHRjcDE1NCcsCiAgICAgJ2tsJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdrbF9HTC5JU084ODU5LTEnLAogICAgICdrbF9nbCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna2xfR0wuSVNPODg1OS0xJywKICAgICAna2xfZ2wuaXNvODg1OTEnOiAgICAgICAgICAgICAgICAgICAgICAgJ2tsX0dMLklTTzg4NTktMScsCkBAIC0xMzcwLDYgKzE0MTAsNyBAQAogICAgICdrb3JlYW4uZXVjJzogICAgICAgICAgICAgICAgICAgICAgICAgICAna29fS1IuZXVjS1InLAogICAgICdrcyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna3NfSU4uVVRGLTgnLAogICAgICdrc19pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna3NfSU4uVVRGLTgnLAorICAgICdrc19pbi51dGY4QGRldmFuYWdhcmknOiAgICAgICAgICAgICAgICAna3NfSU4uVVRGLThAZGV2YW5hZ2FyaScsCiAgICAgJ2tzX2luQGRldmFuYWdhcmknOiAgICAgICAgICAgICAgICAgICAgICdrc19JTi5VVEYtOEBkZXZhbmFnYXJpJywKICAgICAna3NfaW5AZGV2YW5hZ2FyaS51dGY4JzogICAgICAgICAgICAgICAgJ2tzX0lOLlVURi04QGRldmFuYWdhcmknLAogICAgICdrdV90cic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAna3VfVFIuSVNPODg1OS05JywKQEAgLTEzODcsNiArMTQyOCw3IEBACiAgICAgJ2xpX25sJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaV9OTC5VVEYtOCcsCiAgICAgJ2xpal9pdCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsaWpfSVQuVVRGLTgnLAogICAgICdsaXRodWFuaWFuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnbHRfTFQuSVNPODg1OS0xMycsCisgICAgJ2xuX2NkJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsbl9DRC5VVEYtOCcsCiAgICAgJ2xvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsb19MQS5NVUxFTEFPLTEnLAogICAgICdsb19sYSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbG9fTEEuTVVMRUxBTy0xJywKICAgICAnbG9fbGEuY3AxMTMzJzogICAgICAgICAgICAgICAgICAgICAgICAgJ2xvX0xBLklCTS1DUDExMzMnLApAQCAtMTQwMCwxNCArMTQ0MiwxOSBAQAogICAgICdsdl9sdic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbHZfTFYuSVNPODg1OS0xMycsCiAgICAgJ2x2X2x2Lmlzbzg4NTkxMyc6ICAgICAgICAgICAgICAgICAgICAgICdsdl9MVi5JU084ODU5LTEzJywKICAgICAnbHZfbHYuaXNvODg1OTQnOiAgICAgICAgICAgICAgICAgICAgICAgJ2x2X0xWLklTTzg4NTktNCcsCisgICAgJ2x6aF90dyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsemhfVFcuVVRGLTgnLAogICAgICdtYWdfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFnX0lOLlVURi04JywKICAgICAnbWFpJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21haV9JTi5VVEYtOCcsCiAgICAgJ21haV9pbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtYWlfSU4uVVRGLTgnLAorICAgICdtYWlfbnAnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWFpX05QLlVURi04JywKKyAgICAnbWZlX211JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21mZV9NVS5VVEYtOCcsCiAgICAgJ21nX21nJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtZ19NRy5JU084ODU5LTE1JywKICAgICAnbWhyX3J1JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21ocl9SVS5VVEYtOCcsCiAgICAgJ21pJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaV9OWi5JU084ODU5LTEnLAogICAgICdtaV9ueic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlfTlouSVNPODg1OS0xJywKICAgICAnbWlfbnouaXNvODg1OTEnOiAgICAgICAgICAgICAgICAgICAgICAgJ21pX05aLklTTzg4NTktMScsCisgICAgJ21pcV9uaSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtaXFfTkkuVVRGLTgnLAorICAgICdtandfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWp3X0lOLlVURi04JywKICAgICAnbWsnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21rX01LLklTTzg4NTktNScsCiAgICAgJ21rX21rJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdta19NSy5JU084ODU5LTUnLAogICAgICdta19tay5jcDEyNTEnOiAgICAgICAgICAgICAgICAgICAgICAgICAnbWtfTUsuQ1AxMjUxJywKQEAgLTE0MjYsNyArMTQ3Myw3IEBACiAgICAgJ210X210JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtdF9NVC5JU084ODU5LTMnLAogICAgICdtdF9tdC5pc284ODU5Myc6ICAgICAgICAgICAgICAgICAgICAgICAnbXRfTVQuSVNPODg1OS0zJywKICAgICAnbXlfbW0nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ215X01NLlVURi04JywKLSAgICAnbmFuX3R3QGxhdGluJzogICAgICAgICAgICAgICAgICAgICAgICAgJ25hbl9UVy5VVEYtOEBsYXRpbicsCisgICAgJ25hbl90dyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICduYW5fVFcuVVRGLTgnLAogICAgICduYic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbmJfTk8uSVNPODg1OS0xJywKICAgICAnbmJfbm8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25iX05PLklTTzg4NTktMScsCiAgICAgJ25iX25vLjg4NTkxJzogICAgICAgICAgICAgICAgICAgICAgICAgICduYl9OTy5JU084ODU5LTEnLApAQCAtMTUwMCw2ICsxNTQ3LDggQEAKICAgICAncGFfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhX0lOLlVURi04JywKICAgICAncGFfcGsnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhX1BLLlVURi04JywKICAgICAncGFwX2FuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhcF9BTi5VVEYtOCcsCisgICAgJ3BhcF9hdyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwYXBfQVcuVVRGLTgnLAorICAgICdwYXBfY3cnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGFwX0NXLlVURi04JywKICAgICAncGQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BkX1VTLklTTzg4NTktMScsCiAgICAgJ3BkX2RlJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwZF9ERS5JU084ODU5LTEnLAogICAgICdwZF9kZS5pc284ODU5MSc6ICAgICAgICAgICAgICAgICAgICAgICAncGRfREUuSVNPODg1OS0xJywKQEAgLTE1NDAsNiArMTU4OSw4IEBACiAgICAgJ3B0X3B0Lmlzbzg4NTkxNUBldXJvJzogICAgICAgICAgICAgICAgICdwdF9QVC5JU084ODU5LTE1JywKICAgICAncHRfcHQudXRmOEBldXJvJzogICAgICAgICAgICAgICAgICAgICAgJ3B0X1BULlVURi04JywKICAgICAncHRfcHRAZXVybyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B0X1BULklTTzg4NTktMTUnLAorICAgICdxdXpfcGUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV6X1BFLlVURi04JywKKyAgICAncmFqX2luJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jhal9JTi5VVEYtOCcsCiAgICAgJ3JvJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb19STy5JU084ODU5LTInLAogICAgICdyb19ybyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9fUk8uSVNPODg1OS0yJywKICAgICAncm9fcm8uaXNvODg1OTInOiAgICAgICAgICAgICAgICAgICAgICAgJ3JvX1JPLklTTzg4NTktMicsCkBAIC0xNTU2LDcgKzE2MDcsNyBAQAogICAgICdydV91YS5rb2k4dSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAncnVfVUEuS09JOC1VJywKICAgICAncnVfdWEubWljcm9zb2Z0Y3AxMjUxJzogICAgICAgICAgICAgICAgJ3J1X1VBLkNQMTI1MScsCiAgICAgJ3J1bWFuaWFuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb19STy5JU084ODU5LTInLAotICAgICdydXNzaWFuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncnVfUlUuSVNPODg1OS01JywKKyAgICAncnVzc2lhbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3J1X1JVLktPSTgtUicsCiAgICAgJ3J3JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyd19SVy5JU084ODU5LTEnLAogICAgICdyd19ydyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncndfUlcuSVNPODg1OS0xJywKICAgICAncndfcncuaXNvODg1OTEnOiAgICAgICAgICAgICAgICAgICAgICAgJ3J3X1JXLklTTzg4NTktMScsCkBAIC0xNTY2LDE3ICsxNjE3LDIwIEBACiAgICAgJ3NkJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZF9JTi5VVEYtOCcsCiAgICAgJ3NkQGRldmFuYWdhcmknOiAgICAgICAgICAgICAgICAgICAgICAgICdzZF9JTi5VVEYtOEBkZXZhbmFnYXJpJywKICAgICAnc2RfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NkX0lOLlVURi04JywKKyAgICAnc2RfaW4udXRmOEBkZXZhbmFnYXJpJzogICAgICAgICAgICAgICAgJ3NkX0lOLlVURi04QGRldmFuYWdhcmknLAogICAgICdzZF9pbkBkZXZhbmFnYXJpJzogICAgICAgICAgICAgICAgICAgICAnc2RfSU4uVVRGLThAZGV2YW5hZ2FyaScsCiAgICAgJ3NkX2luQGRldmFuYWdhcmkudXRmOCc6ICAgICAgICAgICAgICAgICdzZF9JTi5VVEYtOEBkZXZhbmFnYXJpJywKICAgICAnc2RfcGsnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NkX1BLLlVURi04JywKICAgICAnc2Vfbm8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlX05PLlVURi04JywKICAgICAnc2VyYm9jcm9hdGlhbic6ICAgICAgICAgICAgICAgICAgICAgICAgJ3NyX1JTLlVURi04QGxhdGluJywKKyAgICAnc2dzX2x0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nnc19MVC5VVEYtOCcsCiAgICAgJ3NoJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcl9SUy5VVEYtOEBsYXRpbicsCiAgICAgJ3NoX2JhLmlzbzg4NTkyQGJvc25pYSc6ICAgICAgICAgICAgICAgICdzcl9DUy5JU084ODU5LTInLAogICAgICdzaF9ocic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hfSFIuSVNPODg1OS0yJywKICAgICAnc2hfaHIuaXNvODg1OTInOiAgICAgICAgICAgICAgICAgICAgICAgJ2hyX0hSLklTTzg4NTktMicsCiAgICAgJ3NoX3NwJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzcl9DUy5JU084ODU5LTInLAogICAgICdzaF95dSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfUlMuVVRGLThAbGF0aW4nLAorICAgICdzaG5fbW0nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2huX01NLlVURi04JywKICAgICAnc2hzX2NhJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Noc19DQS5VVEYtOCcsCiAgICAgJ3NpJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaV9MSy5VVEYtOCcsCiAgICAgJ3NpX2xrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaV9MSy5VVEYtOCcsCkBAIC0xNTkyLDYgKzE2NDYsNyBAQAogICAgICdzbG92YWsnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2tfU0suSVNPODg1OS0yJywKICAgICAnc2xvdmVuZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NsX1NJLklTTzg4NTktMicsCiAgICAgJ3Nsb3Zlbmlhbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzbF9TSS5JU084ODU5LTInLAorICAgICdzbV93cyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc21fV1MuVVRGLTgnLAogICAgICdzb19kaic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc29fREouSVNPODg1OS0xJywKICAgICAnc29fZXQnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvX0VULlVURi04JywKICAgICAnc29fa2UnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NvX0tFLklTTzg4NTktMScsCkBAIC0xNjE4LDYgKzE2NzMsNyBAQAogICAgICdzcl9jc0BsYXRuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfQ1MuVVRGLThAbGF0aW4nLAogICAgICdzcl9tZSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfTUUuVVRGLTgnLAogICAgICdzcl9ycyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfUlMuVVRGLTgnLAorICAgICdzcl9ycy51dGY4QGxhdG4nOiAgICAgICAgICAgICAgICAgICAgICAnc3JfUlMuVVRGLThAbGF0aW4nLAogICAgICdzcl9yc0BsYXRpbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfUlMuVVRGLThAbGF0aW4nLAogICAgICdzcl9yc0BsYXRuJzogICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfUlMuVVRGLThAbGF0aW4nLAogICAgICdzcl9zcCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3JfQ1MuSVNPODg1OS0yJywKQEAgLTE2NTksNiArMTcxNSw3IEBACiAgICAgJ3RhX2luLnRzY2lpJzogICAgICAgICAgICAgICAgICAgICAgICAgICd0YV9JTi5UU0NJSS0wJywKICAgICAndGFfaW4udHNjaWkwJzogICAgICAgICAgICAgICAgICAgICAgICAgJ3RhX0lOLlRTQ0lJLTAnLAogICAgICd0YV9sayc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGFfTEsuVVRGLTgnLAorICAgICd0Y3lfaW4udXRmOCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAndGN5X0lOLlVURi04JywKICAgICAndGUnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RlX0lOLlVURi04JywKICAgICAndGVfaW4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RlX0lOLlVURi04JywKICAgICAndGcnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RnX1RKLktPSTgtQycsCkBAIC0xNjcwLDYgKzE3MjcsNyBAQAogICAgICd0aF90aC50YWN0aXMnOiAgICAgICAgICAgICAgICAgICAgICAgICAndGhfVEguVElTNjIwJywKICAgICAndGhfdGgudGlzNjIwJzogICAgICAgICAgICAgICAgICAgICAgICAgJ3RoX1RILlRJUzYyMCcsCiAgICAgJ3RoYWknOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aF9USC5JU084ODU5LTExJywKKyAgICAndGhlX25wJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZV9OUC5VVEYtOCcsCiAgICAgJ3RpX2VyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aV9FUi5VVEYtOCcsCiAgICAgJ3RpX2V0JzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aV9FVC5VVEYtOCcsCiAgICAgJ3RpZ19lcic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0aWdfRVIuVVRGLTgnLApAQCAtMTY4MCw2ICsxNzM4LDggQEAKICAgICAndG4nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RuX1pBLklTTzg4NTktMTUnLAogICAgICd0bl96YSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG5fWkEuSVNPODg1OS0xNScsCiAgICAgJ3RuX3phLmlzbzg4NTkxNSc6ICAgICAgICAgICAgICAgICAgICAgICd0bl9aQS5JU084ODU5LTE1JywKKyAgICAndG9fdG8nOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RvX1RPLlVURi04JywKKyAgICAndHBpX3BnJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RwaV9QRy5VVEYtOCcsCiAgICAgJ3RyJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0cl9UUi5JU084ODU5LTknLAogICAgICd0cl9jeSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHJfQ1kuSVNPODg1OS05JywKICAgICAndHJfdHInOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RyX1RSLklTTzg4NTktOScsCkBAIC0xNzQxLDYgKzE4MDEsNyBAQAogICAgICd5aV91cy5taWNyb3NvZnRjcDEyNTUnOiAgICAgICAgICAgICAgICAneWlfVVMuQ1AxMjU1JywKICAgICAneW9fbmcnOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3lvX05HLlVURi04JywKICAgICAneXVlX2hrJzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3l1ZV9ISy5VVEYtOCcsCisgICAgJ3l1d19wZyc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd5dXdfUEcuVVRGLTgnLAogICAgICd6aCc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnemhfQ04uZXVjQ04nLAogICAgICd6aF9jbic6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnemhfQ04uZ2IyMzEyJywKICAgICAnemhfY24uYmlnNSc6ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3poX1RXLmJpZzUnLApkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkgYi9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQppbmRleCBjYWYxNTFkLi5jYzI0YjMwIDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQorKysgYi9MaWIvbG9nZ2luZy9fX2luaXRfXy5weQpAQCAtNjM2LDEyICs2MzYsMTkgQEAKICAgICAjIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zIGFuZCBmYWlsdXJlcyBkdXJpbmcgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCiAgICAgYWNxdWlyZSwgcmVsZWFzZSwgaGFuZGxlcnMgPSBfYWNxdWlyZUxvY2ssIF9yZWxlYXNlTG9jaywgX2hhbmRsZXJMaXN0CiAgICAgaWYgYWNxdWlyZSBhbmQgcmVsZWFzZSBhbmQgaGFuZGxlcnM6Ci0gICAgICAgIGFjcXVpcmUoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpZiB3ciBpbiBoYW5kbGVyczoKLSAgICAgICAgICAgICAgICBoYW5kbGVycy5yZW1vdmUod3IpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICByZWxlYXNlKCkKKyAgICAgICAgICAgIGFjcXVpcmUoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIHdyIGluIGhhbmRsZXJzOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVycy5yZW1vdmUod3IpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHJlbGVhc2UoKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgIyBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIxMTQ5IC0gSWYgdGhlIFJMb2NrIG9iamVjdCBiZWhpbmQKKyAgICAgICAgICAgICMgYWNxdWlyZSgpIGFuZCByZWxlYXNlKCkgaGFzIGJlZW4gcGFydGlhbGx5IGZpbmFsaXplZCB5b3UgbWF5IHNlZQorICAgICAgICAgICAgIyBhbiBlcnJvciBhYm91dCBOb25lVHlwZSBub3QgYmVpbmcgY2FsbGFibGUuICBBYnNvbHV0ZWx5IG5vdGhpbmcKKyAgICAgICAgICAgICMgd2UgY2FuIGRvIGluIHRoaXMgR0MgZHVyaW5nIHByb2Nlc3Mgc2h1dGRvd24gc2l0dWF0aW9uLiAgRWF0IGl0LgorICAgICAgICAgICAgcGFzcwogCiBkZWYgX2FkZEhhbmRsZXJSZWYoaGFuZGxlcik6CiAgICAgIiIiCkBAIC0xMjIyLDcgKzEyMjksNyBAQAogCiAgICAgICAgIGxvZ2dlci5sb2cobGV2ZWwsICJXZSBoYXZlIGEgJXMiLCAibXlzdGVyaW91cyBwcm9ibGVtIiwgZXhjX2luZm89MSkKICAgICAgICAgIiIiCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGxldmVsLCBpbnQpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShsZXZlbCwgKGludCwgbG9uZykpOgogICAgICAgICAgICAgaWYgcmFpc2VFeGNlcHRpb25zOgogICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibGV2ZWwgbXVzdCBiZSBhbiBpbnRlZ2VyIikKICAgICAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9MaWIvbG9nZ2luZy9oYW5kbGVycy5weSBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CmluZGV4IGU0MzBhYjcuLmUwYjkzNWMgMTAwNjQ0Ci0tLSBhL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CisrKyBiL0xpYi9sb2dnaW5nL2hhbmRsZXJzLnB5CkBAIC03NjAsMTQgKzc2MCwyOSBAQAogICAgICAgICAgICAgc2VsZi51bml4c29ja2V0ID0gMQogICAgICAgICAgICAgc2VsZi5fY29ubmVjdF91bml4c29ja2V0KGFkZHJlc3MpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnVuaXhzb2NrZXQgPSAwCisgICAgICAgICAgICBzZWxmLnVuaXhzb2NrZXQgPSBGYWxzZQogICAgICAgICAgICAgaWYgc29ja3R5cGUgaXMgTm9uZToKICAgICAgICAgICAgICAgICBzb2NrdHlwZSA9IHNvY2tldC5TT0NLX0RHUkFNCi0gICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2t0eXBlKQotICAgICAgICAgICAgaWYgc29ja3R5cGUgPT0gc29ja2V0LlNPQ0tfU1RSRUFNOgotICAgICAgICAgICAgICAgIHNlbGYuc29ja2V0LmNvbm5lY3QoYWRkcmVzcykKKyAgICAgICAgICAgIGhvc3QsIHBvcnQgPSBhZGRyZXNzCisgICAgICAgICAgICByZXNzID0gc29ja2V0LmdldGFkZHJpbmZvKGhvc3QsIHBvcnQsIDAsIHNvY2t0eXBlKQorICAgICAgICAgICAgaWYgbm90IHJlc3M6CisgICAgICAgICAgICAgICAgcmFpc2Ugc29ja2V0LmVycm9yKCJnZXRhZGRyaW5mbyByZXR1cm5zIGFuIGVtcHR5IGxpc3QiKQorICAgICAgICAgICAgZm9yIHJlcyBpbiByZXNzOgorICAgICAgICAgICAgICAgIGFmLCBzb2NrdHlwZSwgcHJvdG8sIF8sIHNhID0gcmVzCisgICAgICAgICAgICAgICAgZXJyID0gc29jayA9IE5vbmUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KGFmLCBzb2NrdHlwZSwgcHJvdG8pCisgICAgICAgICAgICAgICAgICAgIGlmIHNvY2t0eXBlID09IHNvY2tldC5TT0NLX1NUUkVBTToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvY2suY29ubmVjdChzYSkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICAgICAgZXJyID0gZXhjCisgICAgICAgICAgICAgICAgICAgIGlmIHNvY2sgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgICAgICBzb2NrLmNsb3NlKCkKKyAgICAgICAgICAgIGlmIGVyciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBlcnIKKyAgICAgICAgICAgIHNlbGYuc29ja2V0ID0gc29jawogICAgICAgICAgICAgc2VsZi5zb2NrdHlwZSA9IHNvY2t0eXBlCi0gICAgICAgIHNlbGYuZm9ybWF0dGVyID0gTm9uZQogCiAgICAgZGVmIF9jb25uZWN0X3VuaXhzb2NrZXQoc2VsZiwgYWRkcmVzcyk6CiAgICAgICAgIHVzZV9zb2NrdHlwZSA9IHNlbGYuc29ja3R5cGUKQEAgLTgxMiw3ICs4MjcsNyBAQAogICAgICAgICAgICAgcHJpb3JpdHkgPSBzZWxmLnByaW9yaXR5X25hbWVzW3ByaW9yaXR5XQogICAgICAgICByZXR1cm4gKGZhY2lsaXR5IDw8IDMpIHwgcHJpb3JpdHkKIAotICAgIGRlZiBjbG9zZSAoc2VsZik6CisgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgQ2xvc2VzIHRoZSBzb2NrZXQuCiAgICAgICAgICIiIgpkaWZmIC0tZ2l0IGEvTGliL21pbWV0eXBlcy5weSBiL0xpYi9taW1ldHlwZXMucHkKaW5kZXggMTU3ZDQ1NS4uY2FlY2MxMSAxMDA2NDQKLS0tIGEvTGliL21pbWV0eXBlcy5weQorKysgYi9MaWIvbWltZXR5cGVzLnB5CkBAIC00NDIsNiArNDQyLDcgQEAKICAgICAgICAgJy5qcGVnJyAgIDogJ2ltYWdlL2pwZWcnLAogICAgICAgICAnLmpwZycgICAgOiAnaW1hZ2UvanBlZycsCiAgICAgICAgICcuanMnICAgICA6ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0JywKKyAgICAgICAgJy5qc29uJyAgIDogJ2FwcGxpY2F0aW9uL2pzb24nLAogICAgICAgICAnLmtzaCcgICAgOiAndGV4dC9wbGFpbicsCiAgICAgICAgICcubGF0ZXgnICA6ICdhcHBsaWNhdGlvbi94LWxhdGV4JywKICAgICAgICAgJy5tMXYnICAgIDogJ3ZpZGVvL21wZWcnLApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3JraW5nLnB5CmluZGV4IGQzOTM4MTcuLjk0MTJlYjEgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya2luZy5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtpbmcucHkKQEAgLTQwNSw3ICs0MDUsOCBAQAogICAgICAgICBpZiBfbG9nZ2VyIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZFsnbG9nX2xldmVsJ10gPSBfbG9nZ2VyLmdldEVmZmVjdGl2ZUxldmVsKCkKIAotICAgICAgICBpZiBub3QgV0lORVhFIGFuZCBub3QgV0lOU0VSVklDRToKKyAgICAgICAgaWYgbm90IFdJTkVYRSBhbmQgbm90IFdJTlNFUlZJQ0UgYW5kIFwKKyAgICAgICAgICAgbm90IGRbJ3N5c19hcmd2J11bMF0ubG93ZXIoKS5lbmRzd2l0aCgncHl0aG9uc2VydmljZS5leGUnKToKICAgICAgICAgICAgIG1haW5fcGF0aCA9IGdldGF0dHIoc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10sICdfX2ZpbGVfXycsIE5vbmUpCiAgICAgICAgICAgICBpZiBub3QgbWFpbl9wYXRoIGFuZCBzeXMuYXJndlswXSBub3QgaW4gKCcnLCAnLWMnKToKICAgICAgICAgICAgICAgICBtYWluX3BhdGggPSBzeXMuYXJndlswXQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CmluZGV4IDk5MWY4N2YuLmE0N2NkMGYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKQEAgLTg2LDcgKzg2LDcgQEAKIAogCiBkZWYgd29ya2VyKGlucXVldWUsIG91dHF1ZXVlLCBpbml0aWFsaXplcj1Ob25lLCBpbml0YXJncz0oKSwgbWF4dGFza3M9Tm9uZSk6Ci0gICAgYXNzZXJ0IG1heHRhc2tzIGlzIE5vbmUgb3IgKHR5cGUobWF4dGFza3MpID09IGludCBhbmQgbWF4dGFza3MgPiAwKQorICAgIGFzc2VydCBtYXh0YXNrcyBpcyBOb25lIG9yICh0eXBlKG1heHRhc2tzKSBpbiAoaW50LCBsb25nKSBhbmQgbWF4dGFza3MgPiAwKQogICAgIHB1dCA9IG91dHF1ZXVlLnB1dAogICAgIGdldCA9IGlucXVldWUuZ2V0CiAgICAgaWYgaGFzYXR0cihpbnF1ZXVlLCAnX3dyaXRlcicpOgpAQCAtMTIwLDYgKzEyMCw4IEBACiAgICAgICAgICAgICBkZWJ1ZygiUG9zc2libGUgZW5jb2RpbmcgZXJyb3Igd2hpbGUgc2VuZGluZyByZXN1bHQ6ICVzIiAlICgKICAgICAgICAgICAgICAgICB3cmFwcGVkKSkKICAgICAgICAgICAgIHB1dCgoam9iLCBpLCAoRmFsc2UsIHdyYXBwZWQpKSkKKworICAgICAgICB0YXNrID0gam9iID0gcmVzdWx0ID0gZnVuYyA9IGFyZ3MgPSBrd2RzID0gTm9uZQogICAgICAgICBjb21wbGV0ZWQgKz0gMQogICAgIGRlYnVnKCd3b3JrZXIgZXhpdGluZyBhZnRlciAlZCB0YXNrcycgJSBjb21wbGV0ZWQpCiAKQEAgLTM2MiwxMCArMzY0LDExIEBACiAgICAgICAgICAgICAgICAgaWYgc2V0X2xlbmd0aDoKICAgICAgICAgICAgICAgICAgICAgZGVidWcoJ2RvaW5nIHNldF9sZW5ndGgoKScpCiAgICAgICAgICAgICAgICAgICAgIHNldF9sZW5ndGgoaSsxKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB0YXNrID0gdGFza3NlcSA9IGpvYiA9IE5vbmUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRlYnVnKCd0YXNrIGhhbmRsZXIgZ290IHNlbnRpbmVsJykKIAotCiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgdGVsbCByZXN1bHQgaGFuZGxlciB0byBmaW5pc2ggd2hlbiBjYWNoZSBpcyBlbXB0eQogICAgICAgICAgICAgZGVidWcoJ3Rhc2sgaGFuZGxlciBzZW5kaW5nIHNlbnRpbmVsIHRvIHJlc3VsdCBoYW5kbGVyJykKQEAgLTQwNSw2ICs0MDgsNyBAQAogICAgICAgICAgICAgICAgIGNhY2hlW2pvYl0uX3NldChpLCBvYmopCiAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgdGFzayA9IGpvYiA9IG9iaiA9IE5vbmUKIAogICAgICAgICB3aGlsZSBjYWNoZSBhbmQgdGhyZWFkLl9zdGF0ZSAhPSBURVJNSU5BVEU6CiAgICAgICAgICAgICB0cnk6CkBAIC00MjEsNiArNDI1LDcgQEAKICAgICAgICAgICAgICAgICBjYWNoZVtqb2JdLl9zZXQoaSwgb2JqKQogICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHRhc2sgPSBqb2IgPSBvYmogPSBOb25lCiAKICAgICAgICAgaWYgaGFzYXR0cihvdXRxdWV1ZSwgJ19yZWFkZXInKToKICAgICAgICAgICAgIGRlYnVnKCdlbnN1cmluZyB0aGF0IG91dHF1ZXVlIGlzIG5vdCBmdWxsJykKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcHJvY2Vzcy5weQppbmRleCA0NGMxZTQ0Li4xMWM4ZmNhIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3Byb2Nlc3MucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9wcm9jZXNzLnB5CkBAIC0xMjgsNiArMTI4LDkgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZyb20gLmZvcmtpbmcgaW1wb3J0IFBvcGVuCiAgICAgICAgIHNlbGYuX3BvcGVuID0gUG9wZW4oc2VsZikKKyAgICAgICAgIyBBdm9pZCBhIHJlZmN5Y2xlIGlmIHRoZSB0YXJnZXQgZnVuY3Rpb24gaG9sZHMgYW4gaW5kaXJlY3QKKyAgICAgICAgIyByZWZlcmVuY2UgdG8gdGhlIHByb2Nlc3Mgb2JqZWN0IChzZWUgYnBvLTMwNzc1KQorICAgICAgICBkZWwgc2VsZi5fdGFyZ2V0LCBzZWxmLl9hcmdzLCBzZWxmLl9rd2FyZ3MKICAgICAgICAgX2N1cnJlbnRfcHJvY2Vzcy5fY2hpbGRyZW4uYWRkKHNlbGYpCiAKICAgICBkZWYgdGVybWluYXRlKHNlbGYpOgpAQCAtMTUzLDEwICsxNTYsMTYgQEAKICAgICAgICAgaWYgc2VsZiBpcyBfY3VycmVudF9wcm9jZXNzOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgYXNzZXJ0IHNlbGYuX3BhcmVudF9waWQgPT0gb3MuZ2V0cGlkKCksICdjYW4gb25seSB0ZXN0IGEgY2hpbGQgcHJvY2VzcycKKwogICAgICAgICBpZiBzZWxmLl9wb3BlbiBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHNlbGYuX3BvcGVuLnBvbGwoKQotICAgICAgICByZXR1cm4gc2VsZi5fcG9wZW4ucmV0dXJuY29kZSBpcyBOb25lCisKKyAgICAgICAgcmV0dXJuY29kZSA9IHNlbGYuX3BvcGVuLnBvbGwoKQorICAgICAgICBpZiByZXR1cm5jb2RlIGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgX2N1cnJlbnRfcHJvY2Vzcy5fY2hpbGRyZW4uZGlzY2FyZChzZWxmKQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZShzZWxmKToKQEAgLTIyNyw3ICsyMzYsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzdGF0dXMgPSAnc3RhcnRlZCcKIAotICAgICAgICBpZiB0eXBlKHN0YXR1cykgaXMgaW50OgorICAgICAgICBpZiB0eXBlKHN0YXR1cykgaW4gKGludCwgbG9uZyk6CiAgICAgICAgICAgICBpZiBzdGF0dXMgPT0gMDoKICAgICAgICAgICAgICAgICBzdGF0dXMgPSAnc3RvcHBlZCcKICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjIsOCArMjcxLDggQEAKICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQsIGU6CiAgICAgICAgICAgICBpZiBub3QgZS5hcmdzOgogICAgICAgICAgICAgICAgIGV4aXRjb2RlID0gMQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGUuYXJnc1swXSwgaW50KToKLSAgICAgICAgICAgICAgICBleGl0Y29kZSA9IGUuYXJnc1swXQorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGUuYXJnc1swXSwgKGludCwgbG9uZykpOgorICAgICAgICAgICAgICAgIGV4aXRjb2RlID0gaW50KGUuYXJnc1swXSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShzdHIoZS5hcmdzWzBdKSArICdcbicpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3F1ZXVlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CmluZGV4IGE4OGUyOTguLjA3OWNkMzUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5CkBAIC0xMjgsNyArMTI4LDcgQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBpZiBibG9jazoKICAgICAgICAgICAgICAgICAgICAgdGltZW91dCA9IGRlYWRsaW5lIC0gdGltZS50aW1lKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgdGltZW91dCA8IDAgb3Igbm90IHNlbGYuX3BvbGwodGltZW91dCk6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wb2xsKHRpbWVvdXQpOgogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRW1wdHkKICAgICAgICAgICAgICAgICBlbGlmIG5vdCBzZWxmLl9wb2xsKCk6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEVtcHR5CkBAIC0yNDQsOCArMjQ0LDggQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHdhY3F1aXJlID0gTm9uZQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxlIDE6CisgICAgICAgIHdoaWxlIDE6CisgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgbmFjcXVpcmUoKQogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGJ1ZmZlcjoKQEAgLTI3MCwxOSArMjcwLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyZWxlYXNlKCkKICAgICAgICAgICAgICAgICBleGNlcHQgSW5kZXhFcnJvcjoKICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgIyBTaW5jZSB0aGlzIHJ1bnMgaW4gYSBkYWVtb24gdGhyZWFkIHRoZSByZXNvdXJjZXMgaXQgdXNlcwotICAgICAgICAgICAgIyBtYXkgYmUgYmVjb21lIHVudXNhYmxlIHdoaWxlIHRoZSBwcm9jZXNzIGlzIGNsZWFuaW5nIHVwLgotICAgICAgICAgICAgIyBXZSBpZ25vcmUgZXJyb3JzIHdoaWNoIGhhcHBlbiBhZnRlciB0aGUgcHJvY2VzcyBoYXMKLSAgICAgICAgICAgICMgc3RhcnRlZCB0byBjbGVhbnVwLgotICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICMgU2luY2UgdGhpcyBydW5zIGluIGEgZGFlbW9uIHRocmVhZCB0aGUgcmVzb3VyY2VzIGl0IHVzZXMKKyAgICAgICAgICAgICAgICAjIG1heSBiZSBiZWNvbWUgdW51c2FibGUgd2hpbGUgdGhlIHByb2Nlc3MgaXMgY2xlYW5pbmcgdXAuCisgICAgICAgICAgICAgICAgIyBXZSBpZ25vcmUgZXJyb3JzIHdoaWNoIGhhcHBlbiBhZnRlciB0aGUgcHJvY2VzcyBoYXMKKyAgICAgICAgICAgICAgICAjIHN0YXJ0ZWQgdG8gY2xlYW51cC4KICAgICAgICAgICAgICAgICBpZiBpc19leGl0aW5nKCk6CiAgICAgICAgICAgICAgICAgICAgIGluZm8oJ2Vycm9yIGluIHF1ZXVlIHRocmVhZDogJXMnLCBlKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBpbXBvcnQgdHJhY2ViYWNrCiAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICBwYXNzCiAKIF9zZW50aW5lbCA9IG9iamVjdCgpCiAKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvdXRpbC5weQppbmRleCAwOTJiNjFjLi4yOTIwZjI0IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3V0aWwucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy91dGlsLnB5CkBAIC0xNzQsNyArMTc0LDcgQEAKICAgICBDbGFzcyB3aGljaCBzdXBwb3J0cyBvYmplY3QgZmluYWxpemF0aW9uIHVzaW5nIHdlYWtyZWZzCiAgICAgJycnCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG9iaiwgY2FsbGJhY2ssIGFyZ3M9KCksIGt3YXJncz1Ob25lLCBleGl0cHJpb3JpdHk9Tm9uZSk6Ci0gICAgICAgIGFzc2VydCBleGl0cHJpb3JpdHkgaXMgTm9uZSBvciB0eXBlKGV4aXRwcmlvcml0eSkgaXMgaW50CisgICAgICAgIGFzc2VydCBleGl0cHJpb3JpdHkgaXMgTm9uZSBvciB0eXBlKGV4aXRwcmlvcml0eSkgaW4gKGludCwgbG9uZykKIAogICAgICAgICBpZiBvYmogaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLl93ZWFrcmVmID0gd2Vha3JlZi5yZWYob2JqLCBzZWxmKQpAQCAtMjY1LDYgKzI2NSw5IEBACiAgICAgZWxzZToKICAgICAgICAgZiA9IGxhbWJkYSBwIDogcFswXVswXSBpcyBub3QgTm9uZSBhbmQgcFswXVswXSA+PSBtaW5wcmlvcml0eQogCisgICAgIyBDYXJlZnVsOiBfZmluYWxpemVyX3JlZ2lzdHJ5IG1heSBiZSBtdXRhdGVkIHdoaWxlIHRoaXMgZnVuY3Rpb24KKyAgICAjIGlzIHJ1bm5pbmcgKGVpdGhlciBieSBhIEdDIHJ1biBvciBieSBhbm90aGVyIHRocmVhZCkuCisKICAgICBpdGVtcyA9IFt4IGZvciB4IGluIF9maW5hbGl6ZXJfcmVnaXN0cnkuaXRlbXMoKSBpZiBmKHgpXQogICAgIGl0ZW1zLnNvcnQocmV2ZXJzZT1UcnVlKQogCmRpZmYgLS1naXQgYS9MaWIvbmV0cmMucHkgYi9MaWIvbmV0cmMucHkKaW5kZXggNGIxODk3My4uMTZiYzM0NyAxMDA2NDQKLS0tIGEvTGliL25ldHJjLnB5CisrKyBiL0xpYi9uZXRyYy5weQpAQCAtMTMwLDE1ICsxMzAsMTUgQEAKICAgICAgICAgcmVwID0gIiIKICAgICAgICAgZm9yIGhvc3QgaW4gc2VsZi5ob3N0cy5rZXlzKCk6CiAgICAgICAgICAgICBhdHRycyA9IHNlbGYuaG9zdHNbaG9zdF0KLSAgICAgICAgICAgIHJlcCA9IHJlcCArICJtYWNoaW5lICIrIGhvc3QgKyAiXG5cdGxvZ2luICIgKyByZXByKGF0dHJzWzBdKSArICJcbiIKKyAgICAgICAgICAgIHJlcCArPSAibWFjaGluZSB7aG9zdH1cblx0bG9naW4ge2F0dHJzWzBdfVxuIi5mb3JtYXQoaG9zdD1ob3N0LCBhdHRycz1hdHRycykKICAgICAgICAgICAgIGlmIGF0dHJzWzFdOgotICAgICAgICAgICAgICAgIHJlcCA9IHJlcCArICJhY2NvdW50ICIgKyByZXByKGF0dHJzWzFdKQotICAgICAgICAgICAgcmVwID0gcmVwICsgIlx0cGFzc3dvcmQgIiArIHJlcHIoYXR0cnNbMl0pICsgIlxuIgorICAgICAgICAgICAgICAgIHJlcCArPSAiXHRhY2NvdW50IHthdHRyc1sxXX1cbiIuZm9ybWF0KGF0dHJzPWF0dHJzKQorICAgICAgICAgICAgcmVwICs9ICJcdHBhc3N3b3JkIHthdHRyc1syXX1cbiIuZm9ybWF0KGF0dHJzPWF0dHJzKQogICAgICAgICBmb3IgbWFjcm8gaW4gc2VsZi5tYWNyb3Mua2V5cygpOgotICAgICAgICAgICAgcmVwID0gcmVwICsgIm1hY2RlZiAiICsgbWFjcm8gKyAiXG4iCisgICAgICAgICAgICByZXAgKz0gIm1hY2RlZiB7bWFjcm99XG4iLmZvcm1hdChtYWNybz1tYWNybykKICAgICAgICAgICAgIGZvciBsaW5lIGluIHNlbGYubWFjcm9zW21hY3JvXToKLSAgICAgICAgICAgICAgICByZXAgPSByZXAgKyBsaW5lCi0gICAgICAgICAgICByZXAgPSByZXAgKyAiXG4iCisgICAgICAgICAgICAgICAgcmVwICs9IGxpbmUKKyAgICAgICAgICAgIHJlcCArPSAiXG4iCiAgICAgICAgIHJldHVybiByZXAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9waWNrbGV0b29scy5weSBiL0xpYi9waWNrbGV0b29scy5weQppbmRleCA4ZGU1M2RkLi5jOTM2NmM4IDEwMDY0NAotLS0gYS9MaWIvcGlja2xldG9vbHMucHkKKysrIGIvTGliL3BpY2tsZXRvb2xzLnB5CkBAIC0xODUsNyArMTg1LDcgQEAKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobmFtZSwgc3RyKQogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobiwgaW50KSBhbmQgKG4gPj0gMCBvcgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShuLCAoaW50LCBsb25nKSkgYW5kIChuID49IDAgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gaW4gKFVQX1RPX05FV0xJTkUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUtFTl9GUk9NX0FSR1VNRU5UMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBS0VOX0ZST01fQVJHVU1FTlQ0KSkKQEAgLTg3Myw3ICs4NzMsNyBAQAogICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoeCwgU3RhY2tPYmplY3QpCiAgICAgICAgIHNlbGYuc3RhY2tfYWZ0ZXIgPSBzdGFja19hZnRlcgogCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHByb3RvLCBpbnQpIGFuZCAwIDw9IHByb3RvIDw9IDIKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocHJvdG8sIChpbnQsIGxvbmcpKSBhbmQgMCA8PSBwcm90byA8PSAyCiAgICAgICAgIHNlbGYucHJvdG8gPSBwcm90bwogCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRvYywgc3RyKQpkaWZmIC0tZ2l0IGEvTGliL3BrZ3V0aWwucHkgYi9MaWIvcGtndXRpbC5weQppbmRleCBjZTA3MmVjLi42OGNhNzJiIDEwMDY0NAotLS0gYS9MaWIvcGtndXRpbC5weQorKysgYi9MaWIvcGtndXRpbC5weQpAQCAtMSw4ICsxLDUgQEAKICIiIlV0aWxpdGllcyB0byBzdXBwb3J0IHBhY2thZ2VzLiIiIgogCi0jIE5PVEU6IFRoaXMgbW9kdWxlIG11c3QgcmVtYWluIGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi4zLCBhcyBpdCBpcyBzaGFyZWQKLSMgYnkgc2V0dXB0b29scyBmb3IgZGlzdHJpYnV0aW9uIHdpdGggUHl0aG9uIDIuMyBhbmQgdXAuCi0KIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IGltcApAQCAtMjUyLDcgKzI0OSw4IEBACiAgICAgICAgIHJldHVybiBtb2QKIAogICAgIGRlZiBnZXRfZGF0YShzZWxmLCBwYXRobmFtZSk6Ci0gICAgICAgIHJldHVybiBvcGVuKHBhdGhuYW1lLCAicmIiKS5yZWFkKCkKKyAgICAgICAgd2l0aCBvcGVuKHBhdGhuYW1lLCAicmIiKSBhcyBmaWxlOgorICAgICAgICAgICAgcmV0dXJuIGZpbGUucmVhZCgpCiAKICAgICBkZWYgX3Jlb3BlbihzZWxmKToKICAgICAgICAgaWYgc2VsZi5maWxlIGFuZCBzZWxmLmZpbGUuY2xvc2VkOgpkaWZmIC0tZ2l0IGEvTGliL3BsYXRmb3JtLnB5IGIvTGliL3BsYXRmb3JtLnB5CmluZGV4IDU1ZjJmYTguLjYyYTU0NzYgMTAwNzU1Ci0tLSBhL0xpYi9wbGF0Zm9ybS5weQorKysgYi9MaWIvcGxhdGZvcm0ucHkKQEAgLTEzMiw2ICsxMzIsMzUgQEAKICAgICAgICAgIyBTdGFuZGFyZCBVbml4IHVzZXMgL2Rldi9udWxsCiAgICAgICAgIERFVl9OVUxMID0gJy9kZXYvbnVsbCcKIAorIyBIZWxwZXIgZm9yIGNvbXBhcmluZyB0d28gdmVyc2lvbiBudW1iZXIgc3RyaW5ncy4KKyMgQmFzZWQgb24gdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBQSFAncyB2ZXJzaW9uX2NvbXBhcmUoKToKKyMgaHR0cDovL3BocC5uZXQvbWFudWFsL2VuL2Z1bmN0aW9uLnZlcnNpb24tY29tcGFyZS5waHAKKworX3Zlcl9zdGFnZXMgPSB7CisgICAgIyBhbnkgc3RyaW5nIG5vdCBmb3VuZCBpbiB0aGlzIGRpY3QsIHdpbGwgZ2V0IDAgYXNzaWduZWQKKyAgICAnZGV2JzogMTAsCisgICAgJ2FscGhhJzogMjAsICdhJzogMjAsCisgICAgJ2JldGEnOiAzMCwgJ2InOiAzMCwKKyAgICAnYyc6IDQwLAorICAgICdSQyc6IDUwLCAncmMnOiA1MCwKKyAgICAjIG51bWJlciwgd2lsbCBnZXQgMTAwIGFzc2lnbmVkCisgICAgJ3BsJzogMjAwLCAncCc6IDIwMCwKK30KKworX2NvbXBvbmVudF9yZSA9IHJlLmNvbXBpbGUocicoWzAtOV0rfFsuXystXSknKQorCitkZWYgX2NvbXBhcmFibGVfdmVyc2lvbih2ZXJzaW9uKToKKyAgICByZXN1bHQgPSBbXQorICAgIGZvciB2IGluIF9jb21wb25lbnRfcmUuc3BsaXQodmVyc2lvbik6CisgICAgICAgIGlmIHYgbm90IGluICcuXystJzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2ID0gaW50KHYsIDEwKQorICAgICAgICAgICAgICAgIHQgPSAxMDAKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHQgPSBfdmVyX3N0YWdlcy5nZXQodiwgMCkKKyAgICAgICAgICAgIHJlc3VsdC5leHRlbmQoKHQsIHYpKQorICAgIHJldHVybiByZXN1bHQKKwogIyMjIFBsYXRmb3JtIHNwZWNpZmljIEFQSXMKIAogX2xpYmNfc2VhcmNoID0gcmUuY29tcGlsZShyJyhfX2xpYmNfaW5pdCknCkBAIC0xNDAsOSArMTY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3wnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICcobGliYyhfXHcrKT9cLnNvKD86XC4oXGRbMC05Ll0qKSk/KScpCiAKLWRlZiBsaWJjX3ZlcihleGVjdXRhYmxlPXN5cy5leGVjdXRhYmxlLGxpYj0nJyx2ZXJzaW9uPScnLAotCi0gICAgICAgICAgICAgY2h1bmtzaXplPTIwNDgpOgorZGVmIGxpYmNfdmVyKGV4ZWN1dGFibGU9c3lzLmV4ZWN1dGFibGUsbGliPScnLHZlcnNpb249JycsIGNodW5rc2l6ZT0yMDQ4KToKIAogICAgICIiIiBUcmllcyB0byBkZXRlcm1pbmUgdGhlIGxpYmMgdmVyc2lvbiB0aGF0IHRoZSBmaWxlIGV4ZWN1dGFibGUKICAgICAgICAgKHdoaWNoIGRlZmF1bHRzIHRvIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIpIGlzIGxpbmtlZCBhZ2FpbnN0LgpAQCAtMTU3LDQwICsxODQsNDIgQEAKICAgICAgICAgVGhlIGZpbGUgaXMgcmVhZCBhbmQgc2Nhbm5lZCBpbiBjaHVua3Mgb2YgY2h1bmtzaXplIGJ5dGVzLgogCiAgICAgIiIiCisgICAgViA9IF9jb21wYXJhYmxlX3ZlcnNpb24KICAgICBpZiBoYXNhdHRyKG9zLnBhdGgsICdyZWFscGF0aCcpOgogICAgICAgICAjIFB5dGhvbiAyLjIgaW50cm9kdWNlZCBvcy5wYXRoLnJlYWxwYXRoKCk7IGl0IGlzIHVzZWQKICAgICAgICAgIyBoZXJlIHRvIHdvcmsgYXJvdW5kIHByb2JsZW1zIHdpdGggQ3lnd2luIG5vdCBiZWluZwogICAgICAgICAjIGFibGUgdG8gb3BlbiBzeW1saW5rcyBmb3IgcmVhZGluZwogICAgICAgICBleGVjdXRhYmxlID0gb3MucGF0aC5yZWFscGF0aChleGVjdXRhYmxlKQotICAgIGYgPSBvcGVuKGV4ZWN1dGFibGUsJ3JiJykKLSAgICBiaW5hcnkgPSBmLnJlYWQoY2h1bmtzaXplKQotICAgIHBvcyA9IDAKLSAgICB3aGlsZSAxOgotICAgICAgICBtID0gX2xpYmNfc2VhcmNoLnNlYXJjaChiaW5hcnkscG9zKQotICAgICAgICBpZiBub3QgbToKLSAgICAgICAgICAgIGJpbmFyeSA9IGYucmVhZChjaHVua3NpemUpCi0gICAgICAgICAgICBpZiBub3QgYmluYXJ5OgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBwb3MgPSAwCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBsaWJjaW5pdCxnbGliYyxnbGliY3ZlcnNpb24sc28sdGhyZWFkcyxzb3ZlcnNpb24gPSBtLmdyb3VwcygpCi0gICAgICAgIGlmIGxpYmNpbml0IGFuZCBub3QgbGliOgotICAgICAgICAgICAgbGliID0gJ2xpYmMnCi0gICAgICAgIGVsaWYgZ2xpYmM6Ci0gICAgICAgICAgICBpZiBsaWIgIT0gJ2dsaWJjJzoKLSAgICAgICAgICAgICAgICBsaWIgPSAnZ2xpYmMnCi0gICAgICAgICAgICAgICAgdmVyc2lvbiA9IGdsaWJjdmVyc2lvbgotICAgICAgICAgICAgZWxpZiBnbGliY3ZlcnNpb24gPiB2ZXJzaW9uOgotICAgICAgICAgICAgICAgIHZlcnNpb24gPSBnbGliY3ZlcnNpb24KLSAgICAgICAgZWxpZiBzbzoKLSAgICAgICAgICAgIGlmIGxpYiAhPSAnZ2xpYmMnOgorICAgIHdpdGggb3BlbihleGVjdXRhYmxlLCAncmInKSBhcyBmOgorICAgICAgICBiaW5hcnkgPSBmLnJlYWQoY2h1bmtzaXplKQorICAgICAgICBwb3MgPSAwCisgICAgICAgIHdoaWxlIHBvcyA8IGxlbihiaW5hcnkpOgorICAgICAgICAgICAgbSA9IF9saWJjX3NlYXJjaC5zZWFyY2goYmluYXJ5LHBvcykKKyAgICAgICAgICAgIGlmIG5vdCBtIG9yIG0uZW5kKCkgPT0gbGVuKGJpbmFyeSk6CisgICAgICAgICAgICAgICAgY2h1bmsgPSBmLnJlYWQoY2h1bmtzaXplKQorICAgICAgICAgICAgICAgIGlmIGNodW5rOgorICAgICAgICAgICAgICAgICAgICBiaW5hcnkgPSBiaW5hcnlbbWF4KHBvcywgbGVuKGJpbmFyeSkgLSAxMDAwKTpdICsgY2h1bmsKKyAgICAgICAgICAgICAgICAgICAgcG9zID0gMAorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIG5vdCBtOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgbGliY2luaXQsZ2xpYmMsZ2xpYmN2ZXJzaW9uLHNvLHRocmVhZHMsc292ZXJzaW9uID0gbS5ncm91cHMoKQorICAgICAgICAgICAgaWYgbGliY2luaXQgYW5kIG5vdCBsaWI6CiAgICAgICAgICAgICAgICAgbGliID0gJ2xpYmMnCi0gICAgICAgICAgICAgICAgaWYgc292ZXJzaW9uIGFuZCBzb3ZlcnNpb24gPiB2ZXJzaW9uOgotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc292ZXJzaW9uCi0gICAgICAgICAgICAgICAgaWYgdGhyZWFkcyBhbmQgdmVyc2lvblstbGVuKHRocmVhZHMpOl0gIT0gdGhyZWFkczoKLSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb24gKyB0aHJlYWRzCi0gICAgICAgIHBvcyA9IG0uZW5kKCkKLSAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIGVsaWYgZ2xpYmM6CisgICAgICAgICAgICAgICAgaWYgbGliICE9ICdnbGliYyc6CisgICAgICAgICAgICAgICAgICAgIGxpYiA9ICdnbGliYycKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IGdsaWJjdmVyc2lvbgorICAgICAgICAgICAgICAgIGVsaWYgVihnbGliY3ZlcnNpb24pID4gVih2ZXJzaW9uKToKKyAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IGdsaWJjdmVyc2lvbgorICAgICAgICAgICAgZWxpZiBzbzoKKyAgICAgICAgICAgICAgICBpZiBsaWIgIT0gJ2dsaWJjJzoKKyAgICAgICAgICAgICAgICAgICAgbGliID0gJ2xpYmMnCisgICAgICAgICAgICAgICAgICAgIGlmIHNvdmVyc2lvbiBhbmQgKG5vdCB2ZXJzaW9uIG9yIFYoc292ZXJzaW9uKSA+IFYodmVyc2lvbikpOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHNvdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICBpZiB0aHJlYWRzIGFuZCB2ZXJzaW9uWy1sZW4odGhyZWFkcyk6XSAhPSB0aHJlYWRzOgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IHZlcnNpb24gKyB0aHJlYWRzCisgICAgICAgICAgICBwb3MgPSBtLmVuZCgpCiAgICAgcmV0dXJuIGxpYix2ZXJzaW9uCiAKIGRlZiBfZGlzdF90cnlfaGFyZGVyKGRpc3RuYW1lLHZlcnNpb24saWQpOgpAQCAtNDUxLDYgKzQ4MCw3IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHBvcGVuKGNtZCxtb2RlLGJ1ZnNpemUpCiAKKwogZGVmIF9ub3JtX3ZlcnNpb24odmVyc2lvbiwgYnVpbGQ9JycpOgogCiAgICAgIiIiIE5vcm1hbGl6ZSB0aGUgdmVyc2lvbiBhbmQgYnVpbGQgc3RyaW5ncyBhbmQgcmV0dXJuIGEgc2luZ2xlCmRpZmYgLS1naXQgYS9MaWIvcG9wbGliLnB5IGIvTGliL3BvcGxpYi5weQppbmRleCBiOTFlNWY3Li5hMjM4NTEwIDEwMDY0NAotLS0gYS9MaWIvcG9wbGliLnB5CisrKyBiL0xpYi9wb3BsaWIucHkKQEAgLTI3NCw3ICsyNzQsNyBAQAogICAgICAgICByZXR1cm4gc2VsZi5fc2hvcnRjbWQoJ1JQT1AgJXMnICUgdXNlcikKIAogCi0gICAgdGltZXN0YW1wID0gcmUuY29tcGlsZShyJ1wrT0suKig8W14+XSs+KScpCisgICAgdGltZXN0YW1wID0gcmUuY29tcGlsZShicidcK09LLltePF0qKDwuKj4pJykKIAogICAgIGRlZiBhcG9wKHNlbGYsIHVzZXIsIHNlY3JldCk6CiAgICAgICAgICIiIkF1dGhvcmlzYXRpb24KZGlmZiAtLWdpdCBhL0xpYi9weWRvYy5weSBiL0xpYi9weWRvYy5weQppbmRleCBiNGIxOTBmLi42MmNjMjYyIDEwMDc1NQotLS0gYS9MaWIvcHlkb2MucHkKKysrIGIvTGliL3B5ZG9jLnB5CkBAIC0xNjQ3LDggKzE2NDcsOSBAQAogICAgIH0KICAgICAjIEVpdGhlciBhZGQgc3ltYm9scyB0byB0aGlzIGRpY3Rpb25hcnkgb3IgdG8gdGhlIHN5bWJvbHMgZGljdGlvbmFyeQogICAgICMgZGlyZWN0bHk6IFdoaWNoZXZlciBpcyBlYXNpZXIuIFRoZXkgYXJlIG1lcmdlZCBsYXRlci4KKyAgICBfc3RycHJlZml4ZXMgPSB0dXBsZShwICsgcSBmb3IgcCBpbiAoJ2InLCAncicsICd1JykgZm9yIHEgaW4gKCInIiwgJyInKSkKICAgICBfc3ltYm9sc19pbnZlcnNlID0gewotICAgICAgICAnU1RSSU5HUycgOiAoIiciLCAiJycnIiwgInInIiwgInUnIiwgJyIiIicsICciJywgJ3IiJywgJ3UiJyksCisgICAgICAgICdTVFJJTkdTJyA6ICgiJyIsICInJyciLCAnIiIiJywgJyInKSArIF9zdHJwcmVmaXhlcywKICAgICAgICAgJ09QRVJBVE9SUycgOiAoJysnLCAnLScsICcqJywgJyoqJywgJy8nLCAnLy8nLCAnJScsICc8PCcsICc+PicsICcmJywKICAgICAgICAgICAgICAgICAgICAgICAgJ3wnLCAnXicsICd+JywgJzwnLCAnPicsICc8PScsICc+PScsICc9PScsICchPScsICc8PicpLAogICAgICAgICAnQ09NUEFSSVNPTicgOiAoJzwnLCAnPicsICc8PScsICc+PScsICc9PScsICchPScsICc8PicpLApAQCAtMTgxMSw3ICsxODEyLDEyIEBACiAgICAgICAgICAgICAgICAgaWYgbm90IHJlcXVlc3Q6IGJyZWFrCiAgICAgICAgICAgICBleGNlcHQgKEtleWJvYXJkSW50ZXJydXB0LCBFT0ZFcnJvcik6CiAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHJlcXVlc3QgPSBzdHJpcChyZXBsYWNlKHJlcXVlc3QsICciJywgJycsICInIiwgJycpKQorICAgICAgICAgICAgcmVxdWVzdCA9IHN0cmlwKHJlcXVlc3QpCisgICAgICAgICAgICAjIE1ha2Ugc3VyZSBzaWduaWZpY2FudCB0cmFpbGluZyBxdW90YXRpb24gbWFya3Mgb2YgbGl0ZXJhbHMgZG9uJ3QKKyAgICAgICAgICAgICMgZ2V0IGRlbGV0ZWQgd2hpbGUgY2xlYW5pbmcgaW5wdXQKKyAgICAgICAgICAgIGlmIChsZW4ocmVxdWVzdCkgPiAyIGFuZCByZXF1ZXN0WzBdID09IHJlcXVlc3RbLTFdIGluICgiJyIsICciJykKKyAgICAgICAgICAgICAgICAgICAgYW5kIHJlcXVlc3RbMF0gbm90IGluIHJlcXVlc3RbMTotMV0pOgorICAgICAgICAgICAgICAgIHJlcXVlc3QgPSByZXF1ZXN0WzE6LTFdCiAgICAgICAgICAgICBpZiBsb3dlcihyZXF1ZXN0KSBpbiAoJ3EnLCAncXVpdCcpOiBicmVhawogICAgICAgICAgICAgc2VsZi5oZWxwKHJlcXVlc3QpCiAKZGlmZiAtLWdpdCBhL0xpYi9weWRvY19kYXRhL3RvcGljcy5weSBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQppbmRleCAxOGQ0MzZmLi41ZmM4NGE4IDEwMDY0NAotLS0gYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKKysrIGIvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CkBAIC0xLDgxICsxLDEzNTc4IEBACiAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotIyBBdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueCBvbiBTYXQgRGVjICAzIDEyOjM2OjIwIDIwMTYKLXRvcGljcyA9IHsnYXNzZXJ0JzogdSdcblRoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyBhc3NlcnRpb25zXG5pbnRvIGEgcHJvZ3JhbTpcblxuICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuXG5UaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cblxuICAgaWYgX19kZWJ1Z19fOlxuICAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuXG5UaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyBlcXVpdmFsZW50IHRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuXG5UaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgcmVmZXJcbnRvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxubm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkIChjb21tYW5kXG5saW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgTm90ZVxudGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIGV4cHJlc3Npb25cbnRoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mIHRoZVxuc3RhY2sgdHJhY2UuXG5cbkFzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgYnVpbHQtaW5cbnZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKLSAnYXNzaWdubWVudCc6IHUnXG5Bc3NpZ25tZW50IHN0YXRlbWVudHNcbioqKioqKioqKioqKioqKioqKioqKlxuXG5Bc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCB0b1xubW9kaWZ5IGF0dHJpYnV0ZXMgb3IgaXRlbXMgb2YgbXV0YWJsZSBvYmplY3RzOlxuXG4gICBhc3NpZ25tZW50X3N0bXQgOjo9ICh0YXJnZXRfbGlzdCAiPSIpKyAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbiAgIHRhcmdldCAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgICAgICAgICB8ICIoIiB0YXJnZXRfbGlzdCAiKSJcbiAgICAgICAgICAgICAgfCAiWyIgW3RhcmdldF9saXN0XSAiXSJcbiAgICAgICAgICAgICAgfCBhdHRyaWJ1dGVyZWZcbiAgICAgICAgICAgICAgfCBzdWJzY3JpcHRpb25cbiAgICAgICAgICAgICAgfCBzbGljaW5nXG5cbihTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgZm9yIHRoZSBsYXN0IHRocmVlXG5zeW1ib2xzLilcblxuQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgKHJlbWVtYmVyIHRoYXRcbnRoaXMgY2FuIGJlIGEgc2luZ2xlIGV4cHJlc3Npb24gb3IgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgdGhlIGxhdHRlclxueWllbGRpbmcgYSB0dXBsZSkgYW5kIGFzc2lnbnMgdGhlIHNpbmdsZSByZXN1bHRpbmcgb2JqZWN0IHRvIGVhY2ggb2ZcbnRoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cblxuQXNzaWdubWVudCBpcyBkZWZpbmVkIHJlY3Vyc2l2ZWx5IGRlcGVuZGluZyBvbiB0aGUgZm9ybSBvZiB0aGUgdGFyZ2V0XG4obGlzdCkuIFdoZW4gYSB0YXJnZXQgaXMgcGFydCBvZiBhIG11dGFibGUgb2JqZWN0IChhbiBhdHRyaWJ1dGVcbnJlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxudWx0aW1hdGVseSBwZXJmb3JtIHRoZSBhc3NpZ25tZW50IGFuZCBkZWNpZGUgYWJvdXQgaXRzIHZhbGlkaXR5LCBhbmRcbm1heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlIHJ1bGVzXG5vYnNlcnZlZCBieSB2YXJpb3VzIHR5cGVzIGFuZCB0aGUgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGdpdmVuIHdpdGggdGhlXG5kZWZpbml0aW9uIG9mIHRoZSBvYmplY3QgdHlwZXMgKHNlZSBzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlXG5oaWVyYXJjaHkpLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0IGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgYXNcbmZvbGxvd3MuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgc2luZ2xlIHRhcmdldDogVGhlIG9iamVjdCBpcyBhc3NpZ25lZCB0b1xuICB0aGF0IHRhcmdldC5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzOiBUaGVcbiAgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXMgYXMgdGhlcmVcbiAgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbVxuICBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG5Bc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHNpbmdsZSB0YXJnZXQgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhc1xuZm9sbG93cy5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuXG4gICogSWYgdGhlIG5hbWUgZG9lcyBub3Qgb2NjdXIgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaW4gdGhlXG4gICAgY3VycmVudCBjb2RlIGJsb2NrOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZSBjdXJyZW50XG4gICAgbG9jYWwgbmFtZXNwYWNlLlxuXG4gICogT3RoZXJ3aXNlOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZSBjdXJyZW50IGdsb2JhbFxuICAgIG5hbWVzcGFjZS5cblxuICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgdGhlXG4gIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIG9iamVjdCBwcmV2aW91c2x5IGJvdW5kIHRvIHRoZSBuYW1lIHRvIHJlYWNoXG4gIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzIGRlc3RydWN0b3IgKGlmIGl0XG4gIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGEgdGFyZ2V0IGxpc3QgZW5jbG9zZWQgaW4gcGFyZW50aGVzZXMgb3IgaW5cbiAgc3F1YXJlIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXJcbiAgb2YgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgaXRzIGl0ZW1zIGFyZVxuICBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpblxuICB0aGUgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBhbiBvYmplY3Qgd2l0aFxuICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiBpc1xuICByYWlzZWQuICBUaGF0IG9iamVjdCBpcyB0aGVuIGFza2VkIHRvIGFzc2lnbiB0aGUgYXNzaWduZWQgb2JqZWN0IHRvXG4gIHRoZSBnaXZlbiBhdHRyaWJ1dGU7IGlmIGl0IGNhbm5vdCBwZXJmb3JtIHRoZSBhc3NpZ25tZW50LCBpdCByYWlzZXNcbiAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgIkF0dHJpYnV0ZUVycm9yIikuXG5cbiAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlIHJlZmVyZW5jZVxuICBvY2N1cnMgb24gYm90aCBzaWRlcyBvZiB0aGUgYXNzaWdubWVudCBvcGVyYXRvciwgdGhlIFJIUyBleHByZXNzaW9uLFxuICAiYS54IiBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vIGluc3RhbmNlXG4gIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgaXMgYWx3YXlzXG4gIHNldCBhcyBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGNyZWF0aW5nIGl0IGlmIG5lY2Vzc2FyeS4gIFRodXMsIHRoZVxuICB0d28gb2NjdXJyZW5jZXMgb2YgImEueCIgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZSBzYW1lXG4gIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzIGF0dHJpYnV0ZSwgdGhlXG4gIExIUyBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIGF0dHJpYnV0ZSBhcyB0aGUgdGFyZ2V0IG9mIHRoZVxuICBhc3NpZ25tZW50OlxuXG4gICAgIGNsYXNzIENsczpcbiAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbiAgICAgaW5zdCA9IENscygpXG4gICAgIGluc3QueCA9IGluc3QueCArIDEgICAjIHdyaXRlcyBpbnN0LnggYXMgNCBsZWF2aW5nIENscy54IGFzIDNcblxuICBUaGlzIGRlc2NyaXB0aW9uIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGFwcGx5IHRvIGRlc2NyaXB0b3JcbiAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhIHN1YnNjcmlwdGlvbjogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGVcbiAgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBlaXRoZXIgYSBtdXRhYmxlIHNlcXVlbmNlXG4gIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KS5cbiAgTmV4dCwgdGhlIHN1YnNjcmlwdCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZC5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGEgbGlzdCksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhIHBsYWluIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlXG4gIHNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGFcbiAgbm9ubmVnYXRpdmUgaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCwgYW5kIHRoZVxuICBzZXF1ZW5jZSBpcyBhc2tlZCB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoXG4gIHRoYXQgaW5kZXguICBJZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCAiSW5kZXhFcnJvciIgaXMgcmFpc2VkXG4gIChhc3NpZ25tZW50IHRvIGEgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYVxuICBsaXN0KS5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCBoYXZlIGEgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmdcJ3Mga2V5IHR5cGUsXG4gIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyIHdoaWNoIG1hcHNcbiAgdGhlIHN1YnNjcmlwdCB0byB0aGUgYXNzaWduZWQgb2JqZWN0LiAgVGhpcyBjYW4gZWl0aGVyIHJlcGxhY2UgYW5cbiAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCBhIG5ld1xuICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4gIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdFxuICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvYmplY3RcbiAgb2YgdGhlIHNhbWUgdHlwZS4gIE5leHQsIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmQgZXhwcmVzc2lvbnMgYXJlXG4gIGV2YWx1YXRlZCwgaW5zb2ZhciB0aGV5IGFyZSBwcmVzZW50OyBkZWZhdWx0cyBhcmUgemVybyBhbmQgdGhlXG4gIHNlcXVlbmNlXCdzIGxlbmd0aC4gIFRoZSBib3VuZHMgc2hvdWxkIGV2YWx1YXRlIHRvIChzbWFsbCkgaW50ZWdlcnMuXG4gIElmIGVpdGhlciBib3VuZCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC5cbiAgVGhlIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlXG4gIHNlcXVlbmNlXCdzIGxlbmd0aCwgaW5jbHVzaXZlLiAgRmluYWxseSwgdGhlIHNlcXVlbmNlIG9iamVjdCBpcyBhc2tlZFxuICB0byByZXBsYWNlIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGVcbiAgbGVuZ3RoIG9mIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgYXNzaWduZWRcbiAgc2VxdWVuY2UsIHRodXMgY2hhbmdpbmcgdGhlIGxlbmd0aCBvZiB0aGUgdGFyZ2V0IHNlcXVlbmNlLCBpZiB0aGVcbiAgb2JqZWN0IGFsbG93cyBpdC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlXG5zeW50YXggZm9yIHRhcmdldHMgaXMgdGFrZW4gdG8gYmUgdGhlIHNhbWUgYXMgZm9yIGV4cHJlc3Npb25zLCBhbmRcbmludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCBjYXVzaW5nXG5sZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuXG5XQVJOSU5HOiBBbHRob3VnaCB0aGUgZGVmaW5pdGlvbiBvZiBhc3NpZ25tZW50IGltcGxpZXMgdGhhdCBvdmVybGFwc1xuYmV0d2VlbiB0aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlIFwnc2FmZVwnIChmb3JcbmV4YW1wbGUgImEsIGIgPSBiLCBhIiBzd2FwcyB0d28gdmFyaWFibGVzKSwgb3ZlcmxhcHMgKndpdGhpbiogdGhlXG5jb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBhcmUgbm90IHNhZmUhICBGb3IgaW5zdGFuY2UsIHRoZVxuZm9sbG93aW5nIHByb2dyYW0gcHJpbnRzICJbMCwgMl0iOlxuXG4gICB4ID0gWzAsIDFdXG4gICBpID0gMFxuICAgaSwgeFtpXSA9IDEsIDJcbiAgIHByaW50IHhcblxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LCBvZiBhXG5iaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcblxuICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wIChleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8IHN1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbiAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICIvPSIgfCAiLy89IiB8ICIlPSIgfCAiKio9IlxuICAgICAgICAgICAgIHwgIj4+PSIgfCAiPDw9IiB8ICImPSIgfCAiXj0iIHwgInw9IlxuXG4oU2VlIHNlY3Rpb24gUHJpbWFyaWVzIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvciB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cbldpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzIGluIGFcbnNpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbnN0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiBTaW1pbGFybHksXG53aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSBiaW5hcnlcbm9wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG5vcm1hbFxuYmluYXJ5IG9wZXJhdGlvbnMuXG5cbkZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKLSAnYXRvbS1pZGVudGlmaWVycyc6IHUnXG5JZGVudGlmaWVycyAoTmFtZXMpXG4qKioqKioqKioqKioqKioqKioqXG5cbkFuIGlkZW50aWZpZXIgb2NjdXJyaW5nIGFzIGFuIGF0b20gaXMgYSBuYW1lLiAgU2VlIHNlY3Rpb24gSWRlbnRpZmllcnNcbmFuZCBrZXl3b3JkcyBmb3IgbGV4aWNhbCBkZWZpbml0aW9uIGFuZCBzZWN0aW9uIE5hbWluZyBhbmQgYmluZGluZyBmb3JcbmRvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuXG5XaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgYXRvbSB5aWVsZHNcbnRoYXQgb2JqZWN0LiBXaGVuIGEgbmFtZSBpcyBub3QgYm91bmQsIGFuIGF0dGVtcHQgdG8gZXZhbHVhdGUgaXRcbnJhaXNlcyBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbi5cblxuKipQcml2YXRlIG5hbWUgbWFuZ2xpbmc6KiogV2hlbiBhbiBpZGVudGlmaWVyIHRoYXQgdGV4dHVhbGx5IG9jY3VycyBpblxuYSBjbGFzcyBkZWZpbml0aW9uIGJlZ2lucyB3aXRoIHR3byBvciBtb3JlIHVuZGVyc2NvcmUgY2hhcmFjdGVycyBhbmRcbmRvZXMgbm90IGVuZCBpbiB0d28gb3IgbW9yZSB1bmRlcnNjb3JlcywgaXQgaXMgY29uc2lkZXJlZCBhICpwcml2YXRlXG5uYW1lKiBvZiB0aGF0IGNsYXNzLiBQcml2YXRlIG5hbWVzIGFyZSB0cmFuc2Zvcm1lZCB0byBhIGxvbmdlciBmb3JtXG5iZWZvcmUgY29kZSBpcyBnZW5lcmF0ZWQgZm9yIHRoZW0uICBUaGUgdHJhbnNmb3JtYXRpb24gaW5zZXJ0cyB0aGVcbmNsYXNzIG5hbWUsIHdpdGggbGVhZGluZyB1bmRlcnNjb3JlcyByZW1vdmVkIGFuZCBhIHNpbmdsZSB1bmRlcnNjb3JlXG5pbnNlcnRlZCwgaW4gZnJvbnQgb2YgdGhlIG5hbWUuICBGb3IgZXhhbXBsZSwgdGhlIGlkZW50aWZpZXIgIl9fc3BhbSJcbm9jY3VycmluZyBpbiBhIGNsYXNzIG5hbWVkICJIYW0iIHdpbGwgYmUgdHJhbnNmb3JtZWQgdG8gIl9IYW1fX3NwYW0iLlxuVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZiB0aGUgc3ludGFjdGljYWwgY29udGV4dCBpbiB3aGljaFxudGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZSB0cmFuc2Zvcm1lZCBuYW1lIGlzIGV4dHJlbWVseSBsb25nXG4obG9uZ2VyIHRoYW4gMjU1IGNoYXJhY3RlcnMpLCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIHRydW5jYXRpb24gbWF5XG5oYXBwZW4uIElmIHRoZSBjbGFzcyBuYW1lIGNvbnNpc3RzIG9ubHkgb2YgdW5kZXJzY29yZXMsIG5vXG50cmFuc2Zvcm1hdGlvbiBpcyBkb25lLlxuJywKLSAnYXRvbS1saXRlcmFscyc6IHUiXG5MaXRlcmFsc1xuKioqKioqKipcblxuUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBsaXRlcmFscyBhbmQgdmFyaW91cyBudW1lcmljIGxpdGVyYWxzOlxuXG4gICBsaXRlcmFsIDo6PSBzdHJpbmdsaXRlcmFsIHwgaW50ZWdlciB8IGxvbmdpbnRlZ2VyXG4gICAgICAgICAgICAgICB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuXG5FdmFsdWF0aW9uIG9mIGEgbGl0ZXJhbCB5aWVsZHMgYW4gb2JqZWN0IG9mIHRoZSBnaXZlbiB0eXBlIChzdHJpbmcsXG5pbnRlZ2VyLCBsb25nIGludGVnZXIsIGZsb2F0aW5nIHBvaW50IG51bWJlciwgY29tcGxleCBudW1iZXIpIHdpdGggdGhlXG5naXZlbiB2YWx1ZS4gIFRoZSB2YWx1ZSBtYXkgYmUgYXBwcm94aW1hdGVkIGluIHRoZSBjYXNlIG9mIGZsb2F0aW5nXG5wb2ludCBhbmQgaW1hZ2luYXJ5IChjb21wbGV4KSBsaXRlcmFscy4gIFNlZSBzZWN0aW9uIExpdGVyYWxzIGZvclxuZGV0YWlscy5cblxuQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSB0aGVcbm9iamVjdCdzIGlkZW50aXR5IGlzIGxlc3MgaW1wb3J0YW50IHRoYW4gaXRzIHZhbHVlLiAgTXVsdGlwbGVcbmV2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgc2FtZVxub2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpIG1heSBvYnRhaW5cbnRoZSBzYW1lIG9iamVjdCBvciBhIGRpZmZlcmVudCBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZS5cbiIsCi0gJ2F0dHJpYnV0ZS1hY2Nlc3MnOiB1J1xuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICJ4Lm5hbWUiKSBmb3JcbmNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlIG5hbWUuIFRoaXNcbiAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgZG9uZSBib3RoIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAiX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGUgdGhhdCBhdFxuICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnkgbm90XG4gICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBpbiBuZXctc3R5bGUgY2xhc3Nlcy5cblxub2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzIGlzIGNhbGxlZFxuICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gdGhlXG4gICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgbm90IHNpbXBseSBleGVjdXRlICJzZWxmLm5hbWUgPSB2YWx1ZSIgLS0tIHRoaXMgd291bGQgY2F1c2VcbiAgIGEgcmVjdXJzaXZlIGNhbGwgdG8gaXRzZWxmLiAgSW5zdGVhZCwgaXQgc2hvdWxkIGluc2VydCB0aGUgdmFsdWUgaW5cbiAgIHRoZSBkaWN0aW9uYXJ5IG9mIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGUuZy4sICJzZWxmLl9fZGljdF9fW25hbWVdID1cbiAgIHZhbHVlIi4gIEZvciBuZXctc3R5bGUgY2xhc3NlcywgcmF0aGVyIHRoYW4gYWNjZXNzaW5nIHRoZSBpbnN0YW5jZVxuICAgZGljdGlvbmFyeSwgaXQgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWVcbiAgIG5hbWUsIGZvciBleGFtcGxlLCAib2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKSIuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiAiZGVsIG9iai5uYW1lIiBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxuXG5Nb3JlIGF0dHJpYnV0ZSBhY2Nlc3MgZm9yIG5ldy1zdHlsZSBjbGFzc2VzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHRvIG5ldy1zdHlsZSBjbGFzc2VzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICJfX2dldGF0dHJfXygpIixcbiAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAiX19nZXRhdHRyaWJ1dGVfXygpIiBlaXRoZXJcbiAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuIFRoaXMgbWV0aG9kXG4gICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpblxuICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3NcbiAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3JcbiAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbFxuICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4XG4gICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlIFNwZWNpYWwgbWV0aG9kIGxvb2t1cCBmb3IgbmV3LXN0eWxlXG4gICAgIGNsYXNzZXMuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICJOb25lIiB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gIkF0dHJpYnV0ZUVycm9yIlxuICAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsIGl0XG5pcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICJhLngiIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4idHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbiJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLiAgTm90ZSB0aGF0IGRlc2NyaXB0b3JzIGFyZSBvbmx5IGludm9rZWQgZm9yIG5ld1xuc3R5bGUgb2JqZWN0cyBvciBjbGFzc2VzIChvbmVzIHRoYXQgc3ViY2xhc3MgIm9iamVjdCgpIiBvciAidHlwZSgpIikuXG5cblRoZSBzdGFydGluZyBwb2ludCBmb3IgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGlzIGEgYmluZGluZywgImEueCIuIEhvd1xudGhlIGFyZ3VtZW50cyBhcmUgYXNzZW1ibGVkIGRlcGVuZHMgb24gImEiOlxuXG5EaXJlY3QgQ2FsbFxuICAgVGhlIHNpbXBsZXN0IGFuZCBsZWFzdCBjb21tb24gY2FsbCBpcyB3aGVuIHVzZXIgY29kZSBkaXJlY3RseVxuICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cblxuSW5zdGFuY2UgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIG5ldy1zdHlsZSBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzIHRyYW5zZm9ybWVkXG4gICBpbnRvIHRoZSBjYWxsOiAidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhhLCB0eXBlKGEpKSIuXG5cbkNsYXNzIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBuZXctc3R5bGUgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlXG4gICBjYWxsOiAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICJzdXBlcihCLFxuICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSBjbGFzcyAiQSJcbiAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvciB3aXRoIHRoZVxuICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGwgcmV0dXJuXG50aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZSBvYmplY3RcJ3Ncbmluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiIGFuZC9vclxuIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzIG5laXRoZXIsIGl0IGlzXG5hIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgYm90aFxuIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlXG4iX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICJfX2dldF9fKCkiXG5kZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW5cbmNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgImNsYXNzbWV0aG9kKCkiKSBhcmVcbmltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG49PT09PT09PT1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGJvdGggb2xkIGFuZCBuZXctc3R5bGUgY2xhc3NlcyBoYXZlIGFcbmRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZSBzdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHNcbmhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZSB2YXJpYWJsZXMuICBUaGUgc3BhY2UgY29uc3VtcHRpb24gY2FuIGJlY29tZVxuYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZSBudW1iZXJzIG9mIGluc3RhbmNlcy5cblxuVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gYSBuZXctc3R5bGVcbmNsYXNzIGRlZmluaXRpb24uICBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZlxuaW5zdGFuY2UgdmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvXG5ob2xkIGEgdmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXNcbm5vdCBjcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgZGVmaW5lZCBpbiBhXG4gICBuZXctc3R5bGUgY2xhc3MsICpfX3Nsb3RzX18qIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWRcbiAgIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgdGhlIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZFxuICAgKl9fd2Vha3JlZl9fKiBmb3IgZWFjaCBpbnN0YW5jZS5cblxuICAgTmV3IGluIHZlcnNpb24gMi4yLlxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuXG4qIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICpfX2RpY3RfXypcbiAgYXR0cmlidXRlIG9mIHRoYXQgY2xhc3Mgd2lsbCBhbHdheXMgYmUgYWNjZXNzaWJsZSwgc28gYSAqX19zbG90c19fKlxuICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cblxuKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSBhc3NpZ25lZCBuZXdcbiAgdmFyaWFibGVzIG5vdCBsaXN0ZWQgaW4gdGhlICpfX3Nsb3RzX18qIGRlZmluaXRpb24uICBBdHRlbXB0cyB0b1xuICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgIkF0dHJpYnV0ZUVycm9yIi4gSWZcbiAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiBhZGRcbiAgIlwnX19kaWN0X19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4gIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFByZXZpb3VzbHksIGFkZGluZyAiXCdfX2RpY3RfX1wnIiB0byB0aGVcbiAgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gd291bGQgbm90IGVuYWJsZSB0aGUgYXNzaWdubWVudCBvZiBuZXdcbiAgYXR0cmlidXRlcyBub3Qgc3BlY2lmaWNhbGx5IGxpc3RlZCBpbiB0aGUgc2VxdWVuY2Ugb2YgaW5zdGFuY2VcbiAgdmFyaWFibGUgbmFtZXMuXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXNcbiAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0c1xuICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogUHJldmlvdXNseSwgYWRkaW5nICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZVxuICAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB3b3VsZCBub3QgZW5hYmxlIHN1cHBvcnQgZm9yIHdlYWtcbiAgcmVmZXJlbmNlcy5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzIChJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMpIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBcyBhXG4gIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZVxuICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlXG4gIChleGNlcHQgYnkgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS5cbiAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJsb25nIiwgInN0ciIgYW5kICJ0dXBsZSIuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5nc1xuICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cbiAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNjogUHJldmlvdXNseSwgKl9fY2xhc3NfXyogYXNzaWdubWVudCByYWlzZWQgYW5cbiAgZXJyb3IgaWYgZWl0aGVyIG5ldyBvciBvbGQgY2xhc3MgaGFkICpfX3Nsb3RzX18qLlxuJywKLSAnYXR0cmlidXRlLXJlZmVyZW5jZXMnOiB1J1xuQXR0cmlidXRlIHJlZmVyZW5jZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkFuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgYSBwcmltYXJ5IGZvbGxvd2VkIGJ5IGEgcGVyaW9kIGFuZCBhIG5hbWU6XG5cbiAgIGF0dHJpYnV0ZXJlZiA6Oj0gcHJpbWFyeSAiLiIgaWRlbnRpZmllclxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCBvZiBhIHR5cGUgdGhhdCBzdXBwb3J0c1xuYXR0cmlidXRlIHJlZmVyZW5jZXMsIGUuZy4sIGEgbW9kdWxlLCBsaXN0LCBvciBhbiBpbnN0YW5jZS4gIFRoaXNcbm9iamVjdCBpcyB0aGVuIGFza2VkIHRvIHByb2R1Y2UgdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzIHRoZVxuaWRlbnRpZmllci4gIElmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBleGNlcHRpb25cbiJBdHRyaWJ1dGVFcnJvciIgaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiB0aGVcbm9iamVjdCBwcm9kdWNlZCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBvYmplY3QuICBNdWx0aXBsZSBldmFsdWF0aW9ucyBvZlxudGhlIHNhbWUgYXR0cmlidXRlIHJlZmVyZW5jZSBtYXkgeWllbGQgZGlmZmVyZW50IG9iamVjdHMuXG4nLAotICdhdWdhc3NpZ24nOiB1J1xuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbiAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcblxuKFNlZSBzZWN0aW9uIFByaW1hcmllcyBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgdGhyZWVcbnN5bWJvbHMuKVxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSBub3JtYWxcbmFzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSBleHByZXNzaW9uXG5saXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiBhc3NpZ25tZW50XG5vbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCB0YXJnZXQuXG5UaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgcmV3cml0dGVuIGFzXG4ieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gSW4gdGhlXG5hdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gcG9zc2libGUsXG50aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0IHJhdGhlciB0aGFuXG5jcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgb2JqZWN0XG5pcyBtb2RpZmllZCBpbnN0ZWFkLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lIGNhdmVhdCBhYm91dFxuY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMgYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCi0gJ2JpbmFyeSc6IHUnXG5CaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGhhdmUgdGhlIGNvbnZlbnRpb25hbCBwcmlvcml0eVxubGV2ZWxzLiAgTm90ZSB0aGF0IHNvbWUgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbHNvIGFwcGx5IHRvIGNlcnRhaW4gbm9uLVxubnVtZXJpYyB0eXBlcy4gIEFwYXJ0IGZyb20gdGhlIHBvd2VyIG9wZXJhdG9yLCB0aGVyZSBhcmUgb25seSB0d29cbmxldmVscywgb25lIGZvciBtdWx0aXBsaWNhdGl2ZSBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmVcbm9wZXJhdG9yczpcblxuICAgbV9leHByIDo6PSB1X2V4cHIgfCBtX2V4cHIgIioiIHVfZXhwciB8IG1fZXhwciAiLy8iIHVfZXhwciB8IG1fZXhwciAiLyIgdV9leHByXG4gICAgICAgICAgICAgIHwgbV9leHByICIlIiB1X2V4cHJcbiAgIGFfZXhwciA6Oj0gbV9leHByIHwgYV9leHByICIrIiBtX2V4cHIgfCBhX2V4cHIgIi0iIG1fZXhwclxuXG5UaGUgIioiIChtdWx0aXBsaWNhdGlvbikgb3BlcmF0b3IgeWllbGRzIHRoZSBwcm9kdWN0IG9mIGl0cyBhcmd1bWVudHMuXG5UaGUgYXJndW1lbnRzIG11c3QgZWl0aGVyIGJvdGggYmUgbnVtYmVycywgb3Igb25lIGFyZ3VtZW50IG11c3QgYmUgYW5cbmludGVnZXIgKHBsYWluIG9yIGxvbmcpIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGVcbmZvcm1lciBjYXNlLCB0aGUgbnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW5cbm11bHRpcGxpZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXNcbnBlcmZvcm1lZDsgYSBuZWdhdGl2ZSByZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG5cblRoZSAiLyIgKGRpdmlzaW9uKSBhbmQgIi8vIiAoZmxvb3IgZGl2aXNpb24pIG9wZXJhdG9ycyB5aWVsZCB0aGVcbnF1b3RpZW50IG9mIHRoZWlyIGFyZ3VtZW50cy4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiBQbGFpbiBvciBsb25nIGludGVnZXIgZGl2aXNpb24geWllbGRzIGFuXG5pbnRlZ2VyIG9mIHRoZSBzYW1lIHR5cGU7IHRoZSByZXN1bHQgaXMgdGhhdCBvZiBtYXRoZW1hdGljYWwgZGl2aXNpb25cbndpdGggdGhlIFwnZmxvb3JcJyBmdW5jdGlvbiBhcHBsaWVkIHRvIHRoZSByZXN1bHQuIERpdmlzaW9uIGJ5IHplcm9cbnJhaXNlcyB0aGUgIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uXG5cblRoZSAiJSIgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gb2ZcbnRoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyBwb2ludFxubnVtYmVycywgZS5nLiwgIjMuMTQlMC43IiBlcXVhbHMgIjAuMzQiIChzaW5jZSAiMy4xNCIgZXF1YWxzICI0KjAuNyArXG4wLjM0Ii4pICBUaGUgbW9kdWxvIG9wZXJhdG9yIGFsd2F5cyB5aWVsZHMgYSByZXN1bHQgd2l0aCB0aGUgc2FtZSBzaWduXG5hcyBpdHMgc2Vjb25kIG9wZXJhbmQgKG9yIHplcm8pOyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHJlc3VsdCBpc1xuc3RyaWN0bHkgc21hbGxlciB0aGFuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgWzJdLlxuXG5UaGUgaW50ZWdlciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZVxuZm9sbG93aW5nIGlkZW50aXR5OiAieCA9PSAoeC95KSp5ICsgKHgleSkiLiAgSW50ZWdlciBkaXZpc2lvbiBhbmRcbm1vZHVsbyBhcmUgYWxzbyBjb25uZWN0ZWQgd2l0aCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImRpdm1vZCgpIjpcbiJkaXZtb2QoeCwgeSkgPT0gKHgveSwgeCV5KSIuICBUaGVzZSBpZGVudGl0aWVzIGRvblwndCBob2xkIGZvclxuZmxvYXRpbmcgcG9pbnQgbnVtYmVyczsgdGhlcmUgc2ltaWxhciBpZGVudGl0aWVzIGhvbGQgYXBwcm94aW1hdGVseVxud2hlcmUgIngveSIgaXMgcmVwbGFjZWQgYnkgImZsb29yKHgveSkiIG9yICJmbG9vcih4L3kpIC0gMSIgWzNdLlxuXG5JbiBhZGRpdGlvbiB0byBwZXJmb3JtaW5nIHRoZSBtb2R1bG8gb3BlcmF0aW9uIG9uIG51bWJlcnMsIHRoZSAiJSJcbm9wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgYW5kIHVuaWNvZGUgb2JqZWN0cyB0byBwZXJmb3JtXG5zdHJpbmcgZm9ybWF0dGluZyAoYWxzbyBrbm93biBhcyBpbnRlcnBvbGF0aW9uKS4gVGhlIHN5bnRheCBmb3Igc3RyaW5nXG5mb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLCBzZWN0aW9uXG5TdHJpbmcgRm9ybWF0dGluZyBPcGVyYXRpb25zLlxuXG5EZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMi4zOiBUaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG9cbm9wZXJhdG9yLCBhbmQgdGhlICJkaXZtb2QoKSIgZnVuY3Rpb24gYXJlIG5vIGxvbmdlciBkZWZpbmVkIGZvclxuY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB1c2luZ1xudGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG5cblRoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiBUaGVcbmFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBzZXF1ZW5jZXMgb2YgdGhlIHNhbWVcbnR5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZVxuYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG5jb25jYXRlbmF0ZWQuXG5cblRoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzIGFyZ3VtZW50cy5cblRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAotICdiaXR3aXNlJzogdSdcbkJpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSBsZXZlbDpcblxuICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuICAgeG9yX2V4cHIgOjo9IGFuZF9leHByIHwgeG9yX2V4cHIgIl4iIGFuZF9leHByXG4gICBvcl9leHByICA6Oj0geG9yX2V4cHIgfCBvcl9leHByICJ8IiB4b3JfZXhwclxuXG5UaGUgIiYiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggbXVzdFxuYmUgcGxhaW4gb3IgbG9uZyBpbnRlZ2Vycy4gIFRoZSBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vblxudHlwZS5cblxuVGhlICJeIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIHBsYWluIG9yIGxvbmcgaW50ZWdlcnMuICBUaGUgYXJndW1lbnRzIGFyZVxuY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG5cblRoZSAifCIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIChpbmNsdXNpdmUpIE9SIG9mIGl0cyBhcmd1bWVudHMsXG53aGljaCBtdXN0IGJlIHBsYWluIG9yIGxvbmcgaW50ZWdlcnMuICBUaGUgYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG9cbmEgY29tbW9uIHR5cGUuXG4nLAotICdibHRpbi1jb2RlLW9iamVjdHMnOiB1J1xuQ29kZSBPYmplY3RzXG4qKioqKioqKioqKipcblxuQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byByZXByZXNlbnQgInBzZXVkby1cbmNvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiBib2R5LiBUaGV5IGRpZmZlclxuZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb25cJ3QgY29udGFpbiBhIHJlZmVyZW5jZSB0byB0aGVpclxuZ2xvYmFsIGV4ZWN1dGlvbiBlbnZpcm9ubWVudC4gIENvZGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQgYnkgdGhlIGJ1aWx0LVxuaW4gImNvbXBpbGUoKSIgZnVuY3Rpb24gYW5kIGNhbiBiZSBleHRyYWN0ZWQgZnJvbSBmdW5jdGlvbiBvYmplY3RzXG50aHJvdWdoIHRoZWlyICJmdW5jX2NvZGUiIGF0dHJpYnV0ZS4gU2VlIGFsc28gdGhlICJjb2RlIiBtb2R1bGUuXG5cbkEgY29kZSBvYmplY3QgY2FuIGJlIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCBieSBwYXNzaW5nIGl0IChpbnN0ZWFkIG9mIGFcbnNvdXJjZSBzdHJpbmcpIHRvIHRoZSAiZXhlYyIgc3RhdGVtZW50IG9yIHRoZSBidWlsdC1pbiAiZXZhbCgpIlxuZnVuY3Rpb24uXG5cblNlZSBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICdibHRpbi1lbGxpcHNpcy1vYmplY3QnOiB1J1xuVGhlIEVsbGlwc2lzIE9iamVjdFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyB1c2VkIGJ5IGV4dGVuZGVkIHNsaWNlIG5vdGF0aW9uIChzZWUgU2xpY2luZ3MpLiAgSXRcbnN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIGVsbGlwc2lzIG9iamVjdCxcbm5hbWVkICJFbGxpcHNpcyIgKGEgYnVpbHQtaW4gbmFtZSkuXG5cbkl0IGlzIHdyaXR0ZW4gYXMgIkVsbGlwc2lzIi4gIFdoZW4gaW4gYSBzdWJzY3JpcHQsIGl0IGNhbiBhbHNvIGJlXG53cml0dGVuIGFzICIuLi4iLCBmb3IgZXhhbXBsZSAic2VxWy4uLl0iLlxuJywKLSAnYmx0aW4tZmlsZS1vYmplY3RzJzogdSdcbkZpbGUgT2JqZWN0c1xuKioqKioqKioqKioqXG5cbkZpbGUgb2JqZWN0cyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgQ1wncyAic3RkaW8iIHBhY2thZ2UgYW5kIGNhbiBiZVxuY3JlYXRlZCB3aXRoIHRoZSBidWlsdC1pbiAib3BlbigpIiBmdW5jdGlvbi4gIEZpbGUgb2JqZWN0cyBhcmUgYWxzb1xucmV0dXJuZWQgYnkgc29tZSBvdGhlciBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMsIHN1Y2ggYXNcbiJvcy5wb3BlbigpIiBhbmQgIm9zLmZkb3BlbigpIiBhbmQgdGhlICJtYWtlZmlsZSgpIiBtZXRob2Qgb2Ygc29ja2V0XG5vYmplY3RzLiBUZW1wb3JhcnkgZmlsZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdGhlICJ0ZW1wZmlsZSIgbW9kdWxlLFxuYW5kIGhpZ2gtbGV2ZWwgZmlsZSBvcGVyYXRpb25zIHN1Y2ggYXMgY29weWluZywgbW92aW5nLCBhbmQgZGVsZXRpbmdcbmZpbGVzIGFuZCBkaXJlY3RvcmllcyBjYW4gYmUgYWNoaWV2ZWQgd2l0aCB0aGUgInNodXRpbCIgbW9kdWxlLlxuXG5XaGVuIGEgZmlsZSBvcGVyYXRpb24gZmFpbHMgZm9yIGFuIEkvTy1yZWxhdGVkIHJlYXNvbiwgdGhlIGV4Y2VwdGlvblxuIklPRXJyb3IiIGlzIHJhaXNlZC4gIFRoaXMgaW5jbHVkZXMgc2l0dWF0aW9ucyB3aGVyZSB0aGUgb3BlcmF0aW9uIGlzXG5ub3QgZGVmaW5lZCBmb3Igc29tZSByZWFzb24sIGxpa2UgInNlZWsoKSIgb24gYSB0dHkgZGV2aWNlIG9yIHdyaXRpbmdcbmEgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcuXG5cbkZpbGVzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOlxuXG5maWxlLmNsb3NlKClcblxuICAgQ2xvc2UgdGhlIGZpbGUuICBBIGNsb3NlZCBmaWxlIGNhbm5vdCBiZSByZWFkIG9yIHdyaXR0ZW4gYW55IG1vcmUuXG4gICBBbnkgb3BlcmF0aW9uIHdoaWNoIHJlcXVpcmVzIHRoYXQgdGhlIGZpbGUgYmUgb3BlbiB3aWxsIHJhaXNlIGFcbiAgICJWYWx1ZUVycm9yIiBhZnRlciB0aGUgZmlsZSBoYXMgYmVlbiBjbG9zZWQuICBDYWxsaW5nICJjbG9zZSgpIlxuICAgbW9yZSB0aGFuIG9uY2UgaXMgYWxsb3dlZC5cblxuICAgQXMgb2YgUHl0aG9uIDIuNSwgeW91IGNhbiBhdm9pZCBoYXZpbmcgdG8gY2FsbCB0aGlzIG1ldGhvZFxuICAgZXhwbGljaXRseSBpZiB5b3UgdXNlIHRoZSAid2l0aCIgc3RhdGVtZW50LiAgRm9yIGV4YW1wbGUsIHRoZVxuICAgZm9sbG93aW5nIGNvZGUgd2lsbCBhdXRvbWF0aWNhbGx5IGNsb3NlICpmKiB3aGVuIHRoZSAid2l0aCIgYmxvY2tcbiAgIGlzIGV4aXRlZDpcblxuICAgICAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudCAjIFRoaXMgaXNuXCd0IHJlcXVpcmVkIGluIFB5dGhvbiAyLjZcblxuICAgICAgd2l0aCBvcGVuKCJoZWxsby50eHQiKSBhcyBmOlxuICAgICAgICAgIGZvciBsaW5lIGluIGY6XG4gICAgICAgICAgICAgIHByaW50IGxpbmUsXG5cbiAgIEluIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbiwgeW91IHdvdWxkIGhhdmUgbmVlZGVkIHRvIGRvIHRoaXMgdG9cbiAgIGdldCB0aGUgc2FtZSBlZmZlY3Q6XG5cbiAgICAgIGYgPSBvcGVuKCJoZWxsby50eHQiKVxuICAgICAgdHJ5OlxuICAgICAgICAgIGZvciBsaW5lIGluIGY6XG4gICAgICAgICAgICAgIHByaW50IGxpbmUsXG4gICAgICBmaW5hbGx5OlxuICAgICAgICAgIGYuY2xvc2UoKVxuXG4gICBOb3RlOiBOb3QgYWxsICJmaWxlLWxpa2UiIHR5cGVzIGluIFB5dGhvbiBzdXBwb3J0IHVzZSBhcyBhXG4gICAgIGNvbnRleHQgbWFuYWdlciBmb3IgdGhlICJ3aXRoIiBzdGF0ZW1lbnQuICBJZiB5b3VyIGNvZGUgaXNcbiAgICAgaW50ZW5kZWQgdG8gd29yayB3aXRoIGFueSBmaWxlLWxpa2Ugb2JqZWN0LCB5b3UgY2FuIHVzZSB0aGVcbiAgICAgZnVuY3Rpb24gImNvbnRleHRsaWIuY2xvc2luZygpIiBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBvYmplY3RcbiAgICAgZGlyZWN0bHkuXG5cbmZpbGUuZmx1c2goKVxuXG4gICBGbHVzaCB0aGUgaW50ZXJuYWwgYnVmZmVyLCBsaWtlICJzdGRpbyJcJ3MgImZmbHVzaCgpIi4gIFRoaXMgbWF5IGJlXG4gICBhIG5vLW9wIG9uIHNvbWUgZmlsZS1saWtlIG9iamVjdHMuXG5cbiAgIE5vdGU6ICJmbHVzaCgpIiBkb2VzIG5vdCBuZWNlc3NhcmlseSB3cml0ZSB0aGUgZmlsZVwncyBkYXRhIHRvXG4gICAgIGRpc2suIFVzZSAiZmx1c2goKSIgZm9sbG93ZWQgYnkgIm9zLmZzeW5jKCkiIHRvIGVuc3VyZSB0aGlzXG4gICAgIGJlaGF2aW9yLlxuXG5maWxlLmZpbGVubygpXG5cbiAgIFJldHVybiB0aGUgaW50ZWdlciAiZmlsZSBkZXNjcmlwdG9yIiB0aGF0IGlzIHVzZWQgYnkgdGhlIHVuZGVybHlpbmdcbiAgIGltcGxlbWVudGF0aW9uIHRvIHJlcXVlc3QgSS9PIG9wZXJhdGlvbnMgZnJvbSB0aGUgb3BlcmF0aW5nIHN5c3RlbS5cbiAgIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igb3RoZXIsIGxvd2VyIGxldmVsIGludGVyZmFjZXMgdGhhdCB1c2UgZmlsZVxuICAgZGVzY3JpcHRvcnMsIHN1Y2ggYXMgdGhlICJmY250bCIgbW9kdWxlIG9yICJvcy5yZWFkKCkiIGFuZCBmcmllbmRzLlxuXG4gICBOb3RlOiBGaWxlLWxpa2Ugb2JqZWN0cyB3aGljaCBkbyBub3QgaGF2ZSBhIHJlYWwgZmlsZSBkZXNjcmlwdG9yXG4gICAgIHNob3VsZCAqbm90KiBwcm92aWRlIHRoaXMgbWV0aG9kIVxuXG5maWxlLmlzYXR0eSgpXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIGZpbGUgaXMgY29ubmVjdGVkIHRvIGEgdHR5KC1saWtlKSBkZXZpY2UsIGVsc2VcbiAgICJGYWxzZSIuXG5cbiAgIE5vdGU6IElmIGEgZmlsZS1saWtlIG9iamVjdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGEgcmVhbCBmaWxlLFxuICAgICB0aGlzIG1ldGhvZCBzaG91bGQgKm5vdCogYmUgaW1wbGVtZW50ZWQuXG5cbmZpbGUubmV4dCgpXG5cbiAgIEEgZmlsZSBvYmplY3QgaXMgaXRzIG93biBpdGVyYXRvciwgZm9yIGV4YW1wbGUgIml0ZXIoZikiIHJldHVybnNcbiAgICpmKiAodW5sZXNzICpmKiBpcyBjbG9zZWQpLiAgV2hlbiBhIGZpbGUgaXMgdXNlZCBhcyBhbiBpdGVyYXRvcixcbiAgIHR5cGljYWxseSBpbiBhICJmb3IiIGxvb3AgKGZvciBleGFtcGxlLCAiZm9yIGxpbmUgaW4gZjogcHJpbnRcbiAgIGxpbmUuc3RyaXAoKSIpLCB0aGUgIm5leHQoKSIgbWV0aG9kIGlzIGNhbGxlZCByZXBlYXRlZGx5LiAgVGhpc1xuICAgbWV0aG9kIHJldHVybnMgdGhlIG5leHQgaW5wdXQgbGluZSwgb3IgcmFpc2VzICJTdG9wSXRlcmF0aW9uIiB3aGVuXG4gICBFT0YgaXMgaGl0IHdoZW4gdGhlIGZpbGUgaXMgb3BlbiBmb3IgcmVhZGluZyAoYmVoYXZpb3IgaXMgdW5kZWZpbmVkXG4gICB3aGVuIHRoZSBmaWxlIGlzIG9wZW4gZm9yIHdyaXRpbmcpLiAgSW4gb3JkZXIgdG8gbWFrZSBhICJmb3IiIGxvb3BcbiAgIHRoZSBtb3N0IGVmZmljaWVudCB3YXkgb2YgbG9vcGluZyBvdmVyIHRoZSBsaW5lcyBvZiBhIGZpbGUgKGEgdmVyeVxuICAgY29tbW9uIG9wZXJhdGlvbiksIHRoZSAibmV4dCgpIiBtZXRob2QgdXNlcyBhIGhpZGRlbiByZWFkLWFoZWFkXG4gICBidWZmZXIuICBBcyBhIGNvbnNlcXVlbmNlIG9mIHVzaW5nIGEgcmVhZC1haGVhZCBidWZmZXIsIGNvbWJpbmluZ1xuICAgIm5leHQoKSIgd2l0aCBvdGhlciBmaWxlIG1ldGhvZHMgKGxpa2UgInJlYWRsaW5lKCkiKSBkb2VzIG5vdCB3b3JrXG4gICByaWdodC4gIEhvd2V2ZXIsIHVzaW5nICJzZWVrKCkiIHRvIHJlcG9zaXRpb24gdGhlIGZpbGUgdG8gYW5cbiAgIGFic29sdXRlIHBvc2l0aW9uIHdpbGwgZmx1c2ggdGhlIHJlYWQtYWhlYWQgYnVmZmVyLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAyLjMuXG5cbmZpbGUucmVhZChbc2l6ZV0pXG5cbiAgIFJlYWQgYXQgbW9zdCAqc2l6ZSogYnl0ZXMgZnJvbSB0aGUgZmlsZSAobGVzcyBpZiB0aGUgcmVhZCBoaXRzIEVPRlxuICAgYmVmb3JlIG9idGFpbmluZyAqc2l6ZSogYnl0ZXMpLiAgSWYgdGhlICpzaXplKiBhcmd1bWVudCBpcyBuZWdhdGl2ZVxuICAgb3Igb21pdHRlZCwgcmVhZCBhbGwgZGF0YSB1bnRpbCBFT0YgaXMgcmVhY2hlZC4gIFRoZSBieXRlcyBhcmVcbiAgIHJldHVybmVkIGFzIGEgc3RyaW5nIG9iamVjdC4gIEFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZCB3aGVuIEVPRlxuICAgaXMgZW5jb3VudGVyZWQgaW1tZWRpYXRlbHkuICAoRm9yIGNlcnRhaW4gZmlsZXMsIGxpa2UgdHR5cywgaXRcbiAgIG1ha2VzIHNlbnNlIHRvIGNvbnRpbnVlIHJlYWRpbmcgYWZ0ZXIgYW4gRU9GIGlzIGhpdC4pICBOb3RlIHRoYXRcbiAgIHRoaXMgbWV0aG9kIG1heSBjYWxsIHRoZSB1bmRlcmx5aW5nIEMgZnVuY3Rpb24gImZyZWFkKCkiIG1vcmUgdGhhblxuICAgb25jZSBpbiBhbiBlZmZvcnQgdG8gYWNxdWlyZSBhcyBjbG9zZSB0byAqc2l6ZSogYnl0ZXMgYXMgcG9zc2libGUuXG4gICBBbHNvIG5vdGUgdGhhdCB3aGVuIGluIG5vbi1ibG9ja2luZyBtb2RlLCBsZXNzIGRhdGEgdGhhbiB3YXNcbiAgIHJlcXVlc3RlZCBtYXkgYmUgcmV0dXJuZWQsIGV2ZW4gaWYgbm8gKnNpemUqIHBhcmFtZXRlciB3YXMgZ2l2ZW4uXG5cbiAgIE5vdGU6IFRoaXMgZnVuY3Rpb24gaXMgc2ltcGx5IGEgd3JhcHBlciBmb3IgdGhlIHVuZGVybHlpbmdcbiAgICAgImZyZWFkKCkiIEMgZnVuY3Rpb24sIGFuZCB3aWxsIGJlaGF2ZSB0aGUgc2FtZSBpbiBjb3JuZXIgY2FzZXMsXG4gICAgIHN1Y2ggYXMgd2hldGhlciB0aGUgRU9GIHZhbHVlIGlzIGNhY2hlZC5cblxuZmlsZS5yZWFkbGluZShbc2l6ZV0pXG5cbiAgIFJlYWQgb25lIGVudGlyZSBsaW5lIGZyb20gdGhlIGZpbGUuICBBIHRyYWlsaW5nIG5ld2xpbmUgY2hhcmFjdGVyXG4gICBpcyBrZXB0IGluIHRoZSBzdHJpbmcgKGJ1dCBtYXkgYmUgYWJzZW50IHdoZW4gYSBmaWxlIGVuZHMgd2l0aCBhblxuICAgaW5jb21wbGV0ZSBsaW5lKS4gWzZdIElmIHRoZSAqc2l6ZSogYXJndW1lbnQgaXMgcHJlc2VudCBhbmQgbm9uLVxuICAgbmVnYXRpdmUsIGl0IGlzIGEgbWF4aW11bSBieXRlIGNvdW50IChpbmNsdWRpbmcgdGhlIHRyYWlsaW5nXG4gICBuZXdsaW5lKSBhbmQgYW4gaW5jb21wbGV0ZSBsaW5lIG1heSBiZSByZXR1cm5lZC4gV2hlbiAqc2l6ZSogaXMgbm90XG4gICAwLCBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQgKm9ubHkqIHdoZW4gRU9GIGlzIGVuY291bnRlcmVkXG4gICBpbW1lZGlhdGVseS5cblxuICAgTm90ZTogVW5saWtlICJzdGRpbyJcJ3MgImZnZXRzKCkiLCB0aGUgcmV0dXJuZWQgc3RyaW5nIGNvbnRhaW5zXG4gICAgIG51bGwgY2hhcmFjdGVycyAoIlwnXFwwXCciKSBpZiB0aGV5IG9jY3VycmVkIGluIHRoZSBpbnB1dC5cblxuZmlsZS5yZWFkbGluZXMoW3NpemVoaW50XSlcblxuICAgUmVhZCB1bnRpbCBFT0YgdXNpbmcgInJlYWRsaW5lKCkiIGFuZCByZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlXG4gICBsaW5lcyB0aHVzIHJlYWQuICBJZiB0aGUgb3B0aW9uYWwgKnNpemVoaW50KiBhcmd1bWVudCBpcyBwcmVzZW50LFxuICAgaW5zdGVhZCBvZiByZWFkaW5nIHVwIHRvIEVPRiwgd2hvbGUgbGluZXMgdG90YWxsaW5nIGFwcHJveGltYXRlbHlcbiAgICpzaXplaGludCogYnl0ZXMgKHBvc3NpYmx5IGFmdGVyIHJvdW5kaW5nIHVwIHRvIGFuIGludGVybmFsIGJ1ZmZlclxuICAgc2l6ZSkgYXJlIHJlYWQuICBPYmplY3RzIGltcGxlbWVudGluZyBhIGZpbGUtbGlrZSBpbnRlcmZhY2UgbWF5XG4gICBjaG9vc2UgdG8gaWdub3JlICpzaXplaGludCogaWYgaXQgY2Fubm90IGJlIGltcGxlbWVudGVkLCBvciBjYW5ub3RcbiAgIGJlIGltcGxlbWVudGVkIGVmZmljaWVudGx5LlxuXG5maWxlLnhyZWFkbGluZXMoKVxuXG4gICBUaGlzIG1ldGhvZCByZXR1cm5zIHRoZSBzYW1lIHRoaW5nIGFzICJpdGVyKGYpIi5cblxuICAgTmV3IGluIHZlcnNpb24gMi4xLlxuXG4gICBEZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMi4zOiBVc2UgImZvciBsaW5lIGluIGZpbGUiIGluc3RlYWQuXG5cbmZpbGUuc2VlayhvZmZzZXRbLCB3aGVuY2VdKVxuXG4gICBTZXQgdGhlIGZpbGVcJ3MgY3VycmVudCBwb3NpdGlvbiwgbGlrZSAic3RkaW8iXCdzICJmc2VlaygpIi4gVGhlXG4gICAqd2hlbmNlKiBhcmd1bWVudCBpcyBvcHRpb25hbCBhbmQgZGVmYXVsdHMgdG8gICJvcy5TRUVLX1NFVCIgb3IgIjAiXG4gICAoYWJzb2x1dGUgZmlsZSBwb3NpdGlvbmluZyk7IG90aGVyIHZhbHVlcyBhcmUgIm9zLlNFRUtfQ1VSIiBvciAiMSJcbiAgIChzZWVrIHJlbGF0aXZlIHRvIHRoZSBjdXJyZW50IHBvc2l0aW9uKSBhbmQgIm9zLlNFRUtfRU5EIiBvciAiMiJcbiAgIChzZWVrIHJlbGF0aXZlIHRvIHRoZSBmaWxlXCdzIGVuZCkuICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUuXG5cbiAgIEZvciBleGFtcGxlLCAiZi5zZWVrKDIsIG9zLlNFRUtfQ1VSKSIgYWR2YW5jZXMgdGhlIHBvc2l0aW9uIGJ5IHR3b1xuICAgYW5kICJmLnNlZWsoLTMsIG9zLlNFRUtfRU5EKSIgc2V0cyB0aGUgcG9zaXRpb24gdG8gdGhlIHRoaXJkIHRvXG4gICBsYXN0LlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGZpbGUgaXMgb3BlbmVkIGZvciBhcHBlbmRpbmcgKG1vZGUgIlwnYVwnIiBvclxuICAgIlwnYStcJyIpLCBhbnkgInNlZWsoKSIgb3BlcmF0aW9ucyB3aWxsIGJlIHVuZG9uZSBhdCB0aGUgbmV4dCB3cml0ZS5cbiAgIElmIHRoZSBmaWxlIGlzIG9ubHkgb3BlbmVkIGZvciB3cml0aW5nIGluIGFwcGVuZCBtb2RlIChtb2RlICJcJ2FcJyIpLFxuICAgdGhpcyBtZXRob2QgaXMgZXNzZW50aWFsbHkgYSBuby1vcCwgYnV0IGl0IHJlbWFpbnMgdXNlZnVsIGZvciBmaWxlc1xuICAgb3BlbmVkIGluIGFwcGVuZCBtb2RlIHdpdGggcmVhZGluZyBlbmFibGVkIChtb2RlICJcJ2ErXCciKS4gIElmIHRoZVxuICAgZmlsZSBpcyBvcGVuZWQgaW4gdGV4dCBtb2RlICh3aXRob3V0ICJcJ2JcJyIpLCBvbmx5IG9mZnNldHMgcmV0dXJuZWRcbiAgIGJ5ICJ0ZWxsKCkiIGFyZSBsZWdhbC4gIFVzZSBvZiBvdGhlciBvZmZzZXRzIGNhdXNlcyB1bmRlZmluZWRcbiAgIGJlaGF2aW9yLlxuXG4gICBOb3RlIHRoYXQgbm90IGFsbCBmaWxlIG9iamVjdHMgYXJlIHNlZWthYmxlLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi42OiBQYXNzaW5nIGZsb2F0IHZhbHVlcyBhcyBvZmZzZXQgaGFzIGJlZW5cbiAgIGRlcHJlY2F0ZWQuXG5cbmZpbGUudGVsbCgpXG5cbiAgIFJldHVybiB0aGUgZmlsZVwncyBjdXJyZW50IHBvc2l0aW9uLCBsaWtlICJzdGRpbyJcJ3MgImZ0ZWxsKCkiLlxuXG4gICBOb3RlOiBPbiBXaW5kb3dzLCAidGVsbCgpIiBjYW4gcmV0dXJuIGlsbGVnYWwgdmFsdWVzIChhZnRlciBhblxuICAgICAiZmdldHMoKSIpIHdoZW4gcmVhZGluZyBmaWxlcyB3aXRoIFVuaXgtc3R5bGUgbGluZS1lbmRpbmdzLiBVc2VcbiAgICAgYmluYXJ5IG1vZGUgKCJcJ3JiXCciKSB0byBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbS5cblxuZmlsZS50cnVuY2F0ZShbc2l6ZV0pXG5cbiAgIFRydW5jYXRlIHRoZSBmaWxlXCdzIHNpemUuICBJZiB0aGUgb3B0aW9uYWwgKnNpemUqIGFyZ3VtZW50IGlzXG4gICBwcmVzZW50LCB0aGUgZmlsZSBpcyB0cnVuY2F0ZWQgdG8gKGF0IG1vc3QpIHRoYXQgc2l6ZS4gIFRoZSBzaXplXG4gICBkZWZhdWx0cyB0byB0aGUgY3VycmVudCBwb3NpdGlvbi4gVGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbiBpcyBub3RcbiAgIGNoYW5nZWQuICBOb3RlIHRoYXQgaWYgYSBzcGVjaWZpZWQgc2l6ZSBleGNlZWRzIHRoZSBmaWxlXCdzIGN1cnJlbnRcbiAgIHNpemUsIHRoZSByZXN1bHQgaXMgcGxhdGZvcm0tZGVwZW5kZW50OiAgcG9zc2liaWxpdGllcyBpbmNsdWRlIHRoYXRcbiAgIHRoZSBmaWxlIG1heSByZW1haW4gdW5jaGFuZ2VkLCBpbmNyZWFzZSB0byB0aGUgc3BlY2lmaWVkIHNpemUgYXMgaWZcbiAgIHplcm8tZmlsbGVkLCBvciBpbmNyZWFzZSB0byB0aGUgc3BlY2lmaWVkIHNpemUgd2l0aCB1bmRlZmluZWQgbmV3XG4gICBjb250ZW50LiBBdmFpbGFiaWxpdHk6ICBXaW5kb3dzLCBtYW55IFVuaXggdmFyaWFudHMuXG5cbmZpbGUud3JpdGUoc3RyKVxuXG4gICBXcml0ZSBhIHN0cmluZyB0byB0aGUgZmlsZS4gIFRoZXJlIGlzIG5vIHJldHVybiB2YWx1ZS4gIER1ZSB0b1xuICAgYnVmZmVyaW5nLCB0aGUgc3RyaW5nIG1heSBub3QgYWN0dWFsbHkgc2hvdyB1cCBpbiB0aGUgZmlsZSB1bnRpbFxuICAgdGhlICJmbHVzaCgpIiBvciAiY2xvc2UoKSIgbWV0aG9kIGlzIGNhbGxlZC5cblxuZmlsZS53cml0ZWxpbmVzKHNlcXVlbmNlKVxuXG4gICBXcml0ZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3MgdG8gdGhlIGZpbGUuICBUaGUgc2VxdWVuY2UgY2FuIGJlIGFueVxuICAgaXRlcmFibGUgb2JqZWN0IHByb2R1Y2luZyBzdHJpbmdzLCB0eXBpY2FsbHkgYSBsaXN0IG9mIHN0cmluZ3MuXG4gICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUuIChUaGUgbmFtZSBpcyBpbnRlbmRlZCB0byBtYXRjaFxuICAgInJlYWRsaW5lcygpIjsgIndyaXRlbGluZXMoKSIgZG9lcyBub3QgYWRkIGxpbmUgc2VwYXJhdG9ycy4pXG5cbkZpbGVzIHN1cHBvcnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sLiAgRWFjaCBpdGVyYXRpb24gcmV0dXJucyB0aGUgc2FtZVxucmVzdWx0IGFzICJyZWFkbGluZSgpIiwgYW5kIGl0ZXJhdGlvbiBlbmRzIHdoZW4gdGhlICJyZWFkbGluZSgpIlxubWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuXG5GaWxlIG9iamVjdHMgYWxzbyBvZmZlciBhIG51bWJlciBvZiBvdGhlciBpbnRlcmVzdGluZyBhdHRyaWJ1dGVzLlxuVGhlc2UgYXJlIG5vdCByZXF1aXJlZCBmb3IgZmlsZS1saWtlIG9iamVjdHMsIGJ1dCBzaG91bGQgYmVcbmltcGxlbWVudGVkIGlmIHRoZXkgbWFrZSBzZW5zZSBmb3IgdGhlIHBhcnRpY3VsYXIgb2JqZWN0LlxuXG5maWxlLmNsb3NlZFxuXG4gICBib29sIGluZGljYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGZpbGUgb2JqZWN0LiAgVGhpcyBpcyBhXG4gICByZWFkLW9ubHkgYXR0cmlidXRlOyB0aGUgImNsb3NlKCkiIG1ldGhvZCBjaGFuZ2VzIHRoZSB2YWx1ZS4gSXQgbWF5XG4gICBub3QgYmUgYXZhaWxhYmxlIG9uIGFsbCBmaWxlLWxpa2Ugb2JqZWN0cy5cblxuZmlsZS5lbmNvZGluZ1xuXG4gICBUaGUgZW5jb2RpbmcgdGhhdCB0aGlzIGZpbGUgdXNlcy4gV2hlbiBVbmljb2RlIHN0cmluZ3MgYXJlIHdyaXR0ZW5cbiAgIHRvIGEgZmlsZSwgdGhleSB3aWxsIGJlIGNvbnZlcnRlZCB0byBieXRlIHN0cmluZ3MgdXNpbmcgdGhpc1xuICAgZW5jb2RpbmcuIEluIGFkZGl0aW9uLCB3aGVuIHRoZSBmaWxlIGlzIGNvbm5lY3RlZCB0byBhIHRlcm1pbmFsLFxuICAgdGhlIGF0dHJpYnV0ZSBnaXZlcyB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgdGVybWluYWwgaXMgbGlrZWx5IHRvIHVzZVxuICAgKHRoYXQgIGluZm9ybWF0aW9uIG1pZ2h0IGJlIGluY29ycmVjdCBpZiB0aGUgdXNlciBoYXMgbWlzY29uZmlndXJlZFxuICAgdGhlICB0ZXJtaW5hbCkuIFRoZSBhdHRyaWJ1dGUgaXMgcmVhZC1vbmx5IGFuZCBtYXkgbm90IGJlIHByZXNlbnRcbiAgIG9uIGFsbCBmaWxlLWxpa2Ugb2JqZWN0cy4gSXQgbWF5IGFsc28gYmUgIk5vbmUiLCBpbiB3aGljaCBjYXNlIHRoZVxuICAgZmlsZSB1c2VzIHRoZSBzeXN0ZW0gZGVmYXVsdCBlbmNvZGluZyBmb3IgY29udmVydGluZyBVbmljb2RlXG4gICBzdHJpbmdzLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAyLjMuXG5cbmZpbGUuZXJyb3JzXG5cbiAgIFRoZSBVbmljb2RlIGVycm9yIGhhbmRsZXIgdXNlZCBhbG9uZyB3aXRoIHRoZSBlbmNvZGluZy5cblxuICAgTmV3IGluIHZlcnNpb24gMi42LlxuXG5maWxlLm1vZGVcblxuICAgVGhlIEkvTyBtb2RlIGZvciB0aGUgZmlsZS4gIElmIHRoZSBmaWxlIHdhcyBjcmVhdGVkIHVzaW5nIHRoZVxuICAgIm9wZW4oKSIgYnVpbHQtaW4gZnVuY3Rpb24sIHRoaXMgd2lsbCBiZSB0aGUgdmFsdWUgb2YgdGhlICptb2RlKlxuICAgcGFyYW1ldGVyLiAgVGhpcyBpcyBhIHJlYWQtb25seSBhdHRyaWJ1dGUgYW5kIG1heSBub3QgYmUgcHJlc2VudCBvblxuICAgYWxsIGZpbGUtbGlrZSBvYmplY3RzLlxuXG5maWxlLm5hbWVcblxuICAgSWYgdGhlIGZpbGUgb2JqZWN0IHdhcyBjcmVhdGVkIHVzaW5nICJvcGVuKCkiLCB0aGUgbmFtZSBvZiB0aGVcbiAgIGZpbGUuIE90aGVyd2lzZSwgc29tZSBzdHJpbmcgdGhhdCBpbmRpY2F0ZXMgdGhlIHNvdXJjZSBvZiB0aGUgZmlsZVxuICAgb2JqZWN0LCBvZiB0aGUgZm9ybSAiPC4uLj4iLiAgVGhpcyBpcyBhIHJlYWQtb25seSBhdHRyaWJ1dGUgYW5kIG1heVxuICAgbm90IGJlIHByZXNlbnQgb24gYWxsIGZpbGUtbGlrZSBvYmplY3RzLlxuXG5maWxlLm5ld2xpbmVzXG5cbiAgIElmIFB5dGhvbiB3YXMgYnVpbHQgd2l0aCAqdW5pdmVyc2FsIG5ld2xpbmVzKiBlbmFibGVkICh0aGUgZGVmYXVsdClcbiAgIHRoaXMgcmVhZC1vbmx5IGF0dHJpYnV0ZSBleGlzdHMsIGFuZCBmb3IgZmlsZXMgb3BlbmVkIGluIHVuaXZlcnNhbFxuICAgbmV3bGluZSByZWFkIG1vZGUgaXQga2VlcHMgdHJhY2sgb2YgdGhlIHR5cGVzIG9mIG5ld2xpbmVzXG4gICBlbmNvdW50ZXJlZCB3aGlsZSByZWFkaW5nIHRoZSBmaWxlLiBUaGUgdmFsdWVzIGl0IGNhbiB0YWtlIGFyZVxuICAgIlwnXFxyXCciLCAiXCdcXG5cJyIsICJcJ1xcclxcblwnIiwgIk5vbmUiICh1bmtub3duLCBubyBuZXdsaW5lcyByZWFkIHlldCkgb3JcbiAgIGEgdHVwbGUgY29udGFpbmluZyBhbGwgdGhlIG5ld2xpbmUgdHlwZXMgc2VlbiwgdG8gaW5kaWNhdGUgdGhhdFxuICAgbXVsdGlwbGUgbmV3bGluZSBjb252ZW50aW9ucyB3ZXJlIGVuY291bnRlcmVkLiBGb3IgZmlsZXMgbm90IG9wZW5lZFxuICAgaW4gdW5pdmVyc2FsIG5ld2xpbmVzIHJlYWQgbW9kZSB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgd2lsbCBiZVxuICAgIk5vbmUiLlxuXG5maWxlLnNvZnRzcGFjZVxuXG4gICBCb29sZWFuIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgYSBzcGFjZSBjaGFyYWN0ZXIgbmVlZHMgdG8gYmVcbiAgIHByaW50ZWQgYmVmb3JlIGFub3RoZXIgdmFsdWUgd2hlbiB1c2luZyB0aGUgInByaW50IiBzdGF0ZW1lbnQuXG4gICBDbGFzc2VzIHRoYXQgYXJlIHRyeWluZyB0byBzaW11bGF0ZSBhIGZpbGUgb2JqZWN0IHNob3VsZCBhbHNvIGhhdmVcbiAgIGEgd3JpdGFibGUgInNvZnRzcGFjZSIgYXR0cmlidXRlLCB3aGljaCBzaG91bGQgYmUgaW5pdGlhbGl6ZWQgdG9cbiAgIHplcm8uICBUaGlzIHdpbGwgYmUgYXV0b21hdGljIGZvciBtb3N0IGNsYXNzZXMgaW1wbGVtZW50ZWQgaW5cbiAgIFB5dGhvbiAoY2FyZSBtYXkgYmUgbmVlZGVkIGZvciBvYmplY3RzIHRoYXQgb3ZlcnJpZGUgYXR0cmlidXRlXG4gICBhY2Nlc3MpOyB0eXBlcyBpbXBsZW1lbnRlZCBpbiBDIHdpbGwgaGF2ZSB0byBwcm92aWRlIGEgd3JpdGFibGVcbiAgICJzb2Z0c3BhY2UiIGF0dHJpYnV0ZS5cblxuICAgTm90ZTogVGhpcyBhdHRyaWJ1dGUgaXMgbm90IHVzZWQgdG8gY29udHJvbCB0aGUgInByaW50IlxuICAgICBzdGF0ZW1lbnQsIGJ1dCB0byBhbGxvdyB0aGUgaW1wbGVtZW50YXRpb24gb2YgInByaW50IiB0byBrZWVwXG4gICAgIHRyYWNrIG9mIGl0cyBpbnRlcm5hbCBzdGF0ZS5cbicsCi0gJ2JsdGluLW51bGwtb2JqZWN0JzogdSdcblRoZSBOdWxsIE9iamVjdFxuKioqKioqKioqKioqKioqXG5cblRoaXMgb2JqZWN0IGlzIHJldHVybmVkIGJ5IGZ1bmN0aW9ucyB0aGF0IGRvblwndCBleHBsaWNpdGx5IHJldHVybiBhXG52YWx1ZS4gIEl0IHN1cHBvcnRzIG5vIHNwZWNpYWwgb3BlcmF0aW9ucy4gIFRoZXJlIGlzIGV4YWN0bHkgb25lIG51bGxcbm9iamVjdCwgbmFtZWQgIk5vbmUiIChhIGJ1aWx0LWluIG5hbWUpLlxuXG5JdCBpcyB3cml0dGVuIGFzICJOb25lIi5cbicsCi0gJ2JsdGluLXR5cGUtb2JqZWN0cyc6IHUnXG5UeXBlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5UeXBlIG9iamVjdHMgcmVwcmVzZW50IHRoZSB2YXJpb3VzIG9iamVjdCB0eXBlcy4gIEFuIG9iamVjdFwncyB0eXBlIGlzXG5hY2Nlc3NlZCBieSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInR5cGUoKSIuICBUaGVyZSBhcmUgbm8gc3BlY2lhbFxub3BlcmF0aW9ucyBvbiB0eXBlcy4gIFRoZSBzdGFuZGFyZCBtb2R1bGUgInR5cGVzIiBkZWZpbmVzIG5hbWVzIGZvclxuYWxsIHN0YW5kYXJkIGJ1aWx0LWluIHR5cGVzLlxuXG5UeXBlcyBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8dHlwZSBcJ2ludFwnPiIuXG4nLAotICdib29sZWFucyc6IHUnXG5Cb29sZWFuIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKlxuXG4gICBvcl90ZXN0ICA6Oj0gYW5kX3Rlc3QgfCBvcl90ZXN0ICJvciIgYW5kX3Rlc3RcbiAgIGFuZF90ZXN0IDo6PSBub3RfdGVzdCB8IGFuZF90ZXN0ICJhbmQiIG5vdF90ZXN0XG4gICBub3RfdGVzdCA6Oj0gY29tcGFyaXNvbiB8ICJub3QiIG5vdF90ZXN0XG5cbkluIHRoZSBjb250ZXh0IG9mIEJvb2xlYW4gb3BlcmF0aW9ucywgYW5kIGFsc28gd2hlbiBleHByZXNzaW9ucyBhcmVcbnVzZWQgYnkgY29udHJvbCBmbG93IHN0YXRlbWVudHMsIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBpbnRlcnByZXRlZFxuYXMgZmFsc2U6ICJGYWxzZSIsICJOb25lIiwgbnVtZXJpYyB6ZXJvIG9mIGFsbCB0eXBlcywgYW5kIGVtcHR5XG5zdHJpbmdzIGFuZCBjb250YWluZXJzIChpbmNsdWRpbmcgc3RyaW5ncywgdHVwbGVzLCBsaXN0cyxcbmRpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSBpbnRlcnByZXRlZFxuYXMgdHJ1ZS4gIChTZWUgdGhlICJfX25vbnplcm9fXygpIiBzcGVjaWFsIG1ldGhvZCBmb3IgYSB3YXkgdG8gY2hhbmdlXG50aGlzLilcblxuVGhlIG9wZXJhdG9yICJub3QiIHlpZWxkcyAiVHJ1ZSIgaWYgaXRzIGFyZ3VtZW50IGlzIGZhbHNlLCAiRmFsc2UiXG5vdGhlcndpc2UuXG5cblRoZSBleHByZXNzaW9uICJ4IGFuZCB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgZmFsc2UsIGl0c1xudmFsdWUgaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyB2YWx1ZVxuaXMgcmV0dXJuZWQuXG5cblRoZSBleHByZXNzaW9uICJ4IG9yIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCBpdHMgdmFsdWVcbmlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgdmFsdWUgaXNcbnJldHVybmVkLlxuXG4oTm90ZSB0aGF0IG5laXRoZXIgImFuZCIgbm9yICJvciIgcmVzdHJpY3QgdGhlIHZhbHVlIGFuZCB0eXBlIHRoZXlcbnJldHVybiB0byAiRmFsc2UiIGFuZCAiVHJ1ZSIsIGJ1dCByYXRoZXIgcmV0dXJuIHRoZSBsYXN0IGV2YWx1YXRlZFxuYXJndW1lbnQuIFRoaXMgaXMgc29tZXRpbWVzIHVzZWZ1bCwgZS5nLiwgaWYgInMiIGlzIGEgc3RyaW5nIHRoYXRcbnNob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSBleHByZXNzaW9uXG4icyBvciBcJ2Zvb1wnIiB5aWVsZHMgdGhlIGRlc2lyZWQgdmFsdWUuICBCZWNhdXNlICJub3QiIGhhcyB0byBpbnZlbnQgYVxudmFsdWUgYW55d2F5LCBpdCBkb2VzIG5vdCBib3RoZXIgdG8gcmV0dXJuIGEgdmFsdWUgb2YgdGhlIHNhbWUgdHlwZSBhc1xuaXRzIGFyZ3VtZW50LCBzbyBlLmcuLCAibm90IFwnZm9vXCciIHlpZWxkcyAiRmFsc2UiLCBub3QgIlwnXCciLilcbicsCi0gJ2JyZWFrJzogdSdcblRoZSAiYnJlYWsiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGJyZWFrX3N0bXQgOjo9ICJicmVhayJcblxuImJyZWFrIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gdGhhdFxubG9vcC5cblxuSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICJlbHNlIlxuY2xhdXNlIGlmIHRoZSBsb29wIGhhcyBvbmUuXG5cbklmIGEgImZvciIgbG9vcCBpcyB0ZXJtaW5hdGVkIGJ5ICJicmVhayIsIHRoZSBsb29wIGNvbnRyb2wgdGFyZ2V0XG5rZWVwcyBpdHMgY3VycmVudCB2YWx1ZS5cblxuV2hlbiAiYnJlYWsiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgImZpbmFsbHkiXG5jbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgdGhlXG5sb29wLlxuJywKLSAnY2FsbGFibGUtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicsCi0gJ2NhbGxzJzogdSdcbkNhbGxzXG4qKioqKlxuXG5BIGNhbGwgY2FsbHMgYSBjYWxsYWJsZSBvYmplY3QgKGUuZy4sIGEgKmZ1bmN0aW9uKikgd2l0aCBhIHBvc3NpYmx5XG5lbXB0eSBzZXJpZXMgb2YgKmFyZ3VtZW50cyo6XG5cbiAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXVxuICAgICAgICAgICAgfCBleHByZXNzaW9uIGdlbmV4cHJfZm9yXSAiKSJcbiAgIGFyZ3VtZW50X2xpc3QgICAgICAgIDo6PSBwb3NpdGlvbmFsX2FyZ3VtZW50cyBbIiwiIGtleXdvcmRfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiICIqIiBleHByZXNzaW9uXSBbIiwiIGtleXdvcmRfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgICBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZF9hcmd1bWVudHMgWyIsIiAiKiIgZXhwcmVzc2lvbl1cbiAgICAgICAgICAgICAgICAgICAgICAgWyIsIiAiKioiIGV4cHJlc3Npb25dXG4gICAgICAgICAgICAgICAgICAgICB8ICIqIiBleHByZXNzaW9uIFsiLCIga2V5d29yZF9hcmd1bWVudHNdIFsiLCIgIioqIiBleHByZXNzaW9uXVxuICAgICAgICAgICAgICAgICAgICAgfCAiKioiIGV4cHJlc3Npb25cbiAgIHBvc2l0aW9uYWxfYXJndW1lbnRzIDo6PSBleHByZXNzaW9uICgiLCIgZXhwcmVzc2lvbikqXG4gICBrZXl3b3JkX2FyZ3VtZW50cyAgICA6Oj0ga2V5d29yZF9pdGVtICgiLCIga2V5d29yZF9pdGVtKSpcbiAgIGtleXdvcmRfaXRlbSAgICAgICAgIDo6PSBpZGVudGlmaWVyICI9IiBleHByZXNzaW9uXG5cbkEgdHJhaWxpbmcgY29tbWEgbWF5IGJlIHByZXNlbnQgYWZ0ZXIgdGhlIHBvc2l0aW9uYWwgYW5kIGtleXdvcmRcbmFyZ3VtZW50cyBidXQgZG9lcyBub3QgYWZmZWN0IHRoZSBzZW1hbnRpY3MuXG5cblRoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYSBjYWxsYWJsZSBvYmplY3QgKHVzZXItZGVmaW5lZFxuZnVuY3Rpb25zLCBidWlsdC1pbiBmdW5jdGlvbnMsIG1ldGhvZHMgb2YgYnVpbHQtaW4gb2JqZWN0cywgY2xhc3Ncbm9iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgY2VydGFpbiBjbGFzcyBpbnN0YW5jZXNcbnRoZW1zZWx2ZXMgYXJlIGNhbGxhYmxlOyBleHRlbnNpb25zIG1heSBkZWZpbmUgYWRkaXRpb25hbCBjYWxsYWJsZVxub2JqZWN0IHR5cGVzKS4gIEFsbCBhcmd1bWVudCBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGJlZm9yZSB0aGUgY2FsbFxuaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb24gRnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIHRoZVxuc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiBsaXN0cy5cblxuSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIGZpcnN0IGNvbnZlcnRlZCB0b1xucG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzIGlzXG5jcmVhdGVkIGZvciB0aGUgZm9ybWFsIHBhcmFtZXRlcnMuICBJZiB0aGVyZSBhcmUgTiBwb3NpdGlvbmFsXG5hcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG5rZXl3b3JkIGFyZ3VtZW50LCB0aGUgaWRlbnRpZmllciBpcyB1c2VkIHRvIGRldGVybWluZSB0aGVcbmNvcnJlc3BvbmRpbmcgc2xvdCAoaWYgdGhlIGlkZW50aWZpZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0IGZvcm1hbFxucGFyYW1ldGVyIG5hbWUsIHRoZSBmaXJzdCBzbG90IGlzIHVzZWQsIGFuZCBzbyBvbikuICBJZiB0aGUgc2xvdCBpc1xuYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbnZhbHVlIG9mIHRoZSBhcmd1bWVudCBpcyBwbGFjZWQgaW4gdGhlIHNsb3QsIGZpbGxpbmcgaXQgKGV2ZW4gaWYgdGhlXG5leHByZXNzaW9uIGlzICJOb25lIiwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbmJlZW4gcHJvY2Vzc2VkLCB0aGUgc2xvdHMgdGhhdCBhcmUgc3RpbGwgdW5maWxsZWQgYXJlIGZpbGxlZCB3aXRoIHRoZVxuY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAoRGVmYXVsdFxudmFsdWVzIGFyZSBjYWxjdWxhdGVkLCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkOyB0aHVzLCBhXG5tdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSB3aWxsXG5iZSBzaGFyZWQgYnkgYWxsIGNhbGxzIHRoYXQgZG9uXCd0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yIHRoZVxuY29ycmVzcG9uZGluZyBzbG90OyB0aGlzIHNob3VsZCB1c3VhbGx5IGJlIGF2b2lkZWQuKSAgSWYgdGhlcmUgYXJlIGFueVxudW5maWxsZWQgc2xvdHMgZm9yIHdoaWNoIG5vIGRlZmF1bHQgdmFsdWUgaXMgc3BlY2lmaWVkLCBhICJUeXBlRXJyb3IiXG5leGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCBhc1xudGhlIGFyZ3VtZW50IGxpc3QgZm9yIHRoZSBjYWxsLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEFuIGltcGxlbWVudGF0aW9uIG1heSBwcm92aWRlXG5idWlsdC1pbiBmdW5jdGlvbnMgd2hvc2UgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIG5hbWVzLCBldmVuXG5pZiB0aGV5IGFyZSBcJ25hbWVkXCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxudGhlcmVmb3JlIGNhbm5vdCBiZSBzdXBwbGllZCBieSBrZXl3b3JkLiAgSW4gQ1B5dGhvbiwgdGhpcyBpcyB0aGUgY2FzZVxuZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvIHBhcnNlXG50aGVpciBhcmd1bWVudHMuXG5cbklmIHRoZXJlIGFyZSBtb3JlIHBvc2l0aW9uYWwgYXJndW1lbnRzIHRoYW4gdGhlcmUgYXJlIGZvcm1hbCBwYXJhbWV0ZXJcbnNsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgZm9ybWFsXG5wYXJhbWV0ZXIgcmVjZWl2ZXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHNcbihvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG5cbklmIGFueSBrZXl3b3JkIGFyZ3VtZW50IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBmb3JtYWwgcGFyYW1ldGVyXG5uYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbnVzaW5nIHRoZSBzeW50YXggIioqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0IGZvcm1hbFxucGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuYXJndW1lbnRzICh1c2luZyB0aGUga2V5d29yZHMgYXMga2V5cyBhbmQgdGhlIGFyZ3VtZW50IHZhbHVlcyBhc1xuY29ycmVzcG9uZGluZyB2YWx1ZXMpLCBvciBhIChuZXcpIGVtcHR5IGRpY3Rpb25hcnkgaWYgdGhlcmUgd2VyZSBub1xuZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLlxuXG5JZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgImV4cHJlc3Npb24iXG5tdXN0IGV2YWx1YXRlIHRvIGFuIGl0ZXJhYmxlLiAgRWxlbWVudHMgZnJvbSB0aGlzIGl0ZXJhYmxlIGFyZSB0cmVhdGVkXG5hcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50czsgaWYgdGhlcmUgYXJlXG5wb3NpdGlvbmFsIGFyZ3VtZW50cyAqeDEqLCAuLi4sICp4TiosIGFuZCAiZXhwcmVzc2lvbiIgZXZhbHVhdGVzIHRvIGFcbnNlcXVlbmNlICp5MSosIC4uLiwgKnlNKiwgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgY2FsbCB3aXRoIE0rTlxucG9zaXRpb25hbCBhcmd1bWVudHMgKngxKiwgLi4uLCAqeE4qLCAqeTEqLCAuLi4sICp5TSouXG5cbkEgY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyB0aGF0IGFsdGhvdWdoIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheCBtYXlcbmFwcGVhciAqYWZ0ZXIqIHNvbWUga2V5d29yZCBhcmd1bWVudHMsIGl0IGlzIHByb2Nlc3NlZCAqYmVmb3JlKiB0aGVcbmtleXdvcmQgYXJndW1lbnRzIChhbmQgdGhlICIqKmV4cHJlc3Npb24iIGFyZ3VtZW50LCBpZiBhbnkgLS0gc2VlXG5iZWxvdykuICBTbzpcblxuICAgPj4+IGRlZiBmKGEsIGIpOlxuICAgLi4uICAgICBwcmludCBhLCBiXG4gICAuLi5cbiAgID4+PiBmKGI9MSwgKigyLCkpXG4gICAyIDFcbiAgID4+PiBmKGE9MSwgKigyLCkpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluID9cbiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgXCdhXCdcbiAgID4+PiBmKDEsICooMiwpKVxuICAgMSAyXG5cbkl0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSAiKmV4cHJlc3Npb24iIHN5bnRheFxudG8gYmUgdXNlZCBpbiB0aGUgc2FtZSBjYWxsLCBzbyBpbiBwcmFjdGljZSB0aGlzIGNvbmZ1c2lvbiBkb2VzIG5vdFxuYXJpc2UuXG5cbklmIHRoZSBzeW50YXggIioqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbiJleHByZXNzaW9uIiBtdXN0IGV2YWx1YXRlIHRvIGEgbWFwcGluZywgdGhlIGNvbnRlbnRzIG9mIHdoaWNoIGFyZVxudHJlYXRlZCBhcyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLiAgSW4gdGhlIGNhc2Ugb2YgYSBrZXl3b3JkXG5hcHBlYXJpbmcgaW4gYm90aCAiZXhwcmVzc2lvbiIgYW5kIGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsIGFcbiJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5cbkZvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIlxuY2Fubm90IGJlIHVzZWQgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBzbG90cyBvciBhcyBrZXl3b3JkIGFyZ3VtZW50XG5uYW1lcy4gIEZvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIihzdWJsaXN0KSIgY2Fubm90IGJlIHVzZWRcbmFzIGtleXdvcmQgYXJndW1lbnQgbmFtZXM7IHRoZSBvdXRlcm1vc3Qgc3VibGlzdCBjb3JyZXNwb25kcyB0byBhXG5zaW5nbGUgdW5uYW1lZCBhcmd1bWVudCBzbG90LCBhbmQgdGhlIGFyZ3VtZW50IHZhbHVlIGlzIGFzc2lnbmVkIHRvXG50aGUgc3VibGlzdCB1c2luZyB0aGUgdXN1YWwgdHVwbGUgYXNzaWdubWVudCBydWxlcyBhZnRlciBhbGwgb3RoZXJcbnBhcmFtZXRlciBwcm9jZXNzaW5nIGlzIGRvbmUuXG5cbkEgY2FsbCBhbHdheXMgcmV0dXJucyBzb21lIHZhbHVlLCBwb3NzaWJseSAiTm9uZSIsIHVubGVzcyBpdCByYWlzZXMgYW5cbmV4Y2VwdGlvbi4gIEhvdyB0aGlzIHZhbHVlIGlzIGNvbXB1dGVkIGRlcGVuZHMgb24gdGhlIHR5cGUgb2YgdGhlXG5jYWxsYWJsZSBvYmplY3QuXG5cbklmIGl0IGlzLS0tXG5cbmEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uOlxuICAgVGhlIGNvZGUgYmxvY2sgZm9yIHRoZSBmdW5jdGlvbiBpcyBleGVjdXRlZCwgcGFzc2luZyBpdCB0aGVcbiAgIGFyZ3VtZW50IGxpc3QuICBUaGUgZmlyc3QgdGhpbmcgdGhlIGNvZGUgYmxvY2sgd2lsbCBkbyBpcyBiaW5kIHRoZVxuICAgZm9ybWFsIHBhcmFtZXRlcnMgdG8gdGhlIGFyZ3VtZW50czsgdGhpcyBpcyBkZXNjcmliZWQgaW4gc2VjdGlvblxuICAgRnVuY3Rpb24gZGVmaW5pdGlvbnMuICBXaGVuIHRoZSBjb2RlIGJsb2NrIGV4ZWN1dGVzIGEgInJldHVybiJcbiAgIHN0YXRlbWVudCwgdGhpcyBzcGVjaWZpZXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gY2FsbC5cblxuYSBidWlsdC1pbiBmdW5jdGlvbiBvciBtZXRob2Q6XG4gICBUaGUgcmVzdWx0IGlzIHVwIHRvIHRoZSBpbnRlcnByZXRlcjsgc2VlIEJ1aWx0LWluIEZ1bmN0aW9ucyBmb3IgdGhlXG4gICBkZXNjcmlwdGlvbnMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFuZCBtZXRob2RzLlxuXG5hIGNsYXNzIG9iamVjdDpcbiAgIEEgbmV3IGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgaXMgcmV0dXJuZWQuXG5cbmEgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuICAgVGhlIGNvcnJlc3BvbmRpbmcgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgd2l0aCBhbiBhcmd1bWVudFxuICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4gICBpbnN0YW5jZSBiZWNvbWVzIHRoZSBmaXJzdCBhcmd1bWVudC5cblxuYSBjbGFzcyBpbnN0YW5jZTpcbiAgIFRoZSBjbGFzcyBtdXN0IGRlZmluZSBhICJfX2NhbGxfXygpIiBtZXRob2Q7IHRoZSBlZmZlY3QgaXMgdGhlbiB0aGVcbiAgIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCi0gJ2NsYXNzJzogdSdcbkNsYXNzIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKlxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSk6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbZXhwcmVzc2lvbl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0IGZpcnN0IGV2YWx1YXRlcyB0aGVcbmluaGVyaXRhbmNlIGxpc3QsIGlmIHByZXNlbnQuICBFYWNoIGl0ZW0gaW4gdGhlIGluaGVyaXRhbmNlIGxpc3RcbnNob3VsZCBldmFsdWF0ZSB0byBhIGNsYXNzIG9iamVjdCBvciBjbGFzcyB0eXBlIHdoaWNoIGFsbG93c1xuc3ViY2xhc3NpbmcuICBUaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb25cbmZyYW1lIChzZWUgc2VjdGlvbiBOYW1pbmcgYW5kIGJpbmRpbmcpLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWxcbm5hbWVzcGFjZSBhbmQgdGhlIG9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGVcbmNvbnRhaW5zIG9ubHkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXNcbmV4ZWN1dGlvbiwgaXRzIGV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXNcbnNhdmVkLiBbNF0gQSBjbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0XG5mb3IgdGhlIGJhc2UgY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZVxuZGljdGlvbmFyeS4gIFRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZVxub3JpZ2luYWwgbG9jYWwgbmFtZXNwYWNlLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIHZhcmlhYmxlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGFsbCBpbnN0YW5jZXMuICBUbyBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcywgdGhleSBjYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGhcbmNsYXNzIGFuZCBpbnN0YW5jZSB2YXJpYWJsZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbiIic2VsZi5uYW1lIiIsIGFuZCBhbiBpbnN0YW5jZSB2YXJpYWJsZSBoaWRlcyBhIGNsYXNzIHZhcmlhYmxlIHdpdGhcbnRoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gQ2xhc3MgdmFyaWFibGVzIGNhbiBiZSB1c2VkXG5hcyBkZWZhdWx0cyBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuXG5sZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gIEZvciAqbmV3LXN0eWxlIGNsYXNzKmVzLCBkZXNjcmlwdG9ycyBjYW5cbmJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlIHZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvblxuZGV0YWlscy5cblxuQ2xhc3MgZGVmaW5pdGlvbnMsIGxpa2UgZnVuY3Rpb24gZGVmaW5pdGlvbnMsIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvclxubW9yZSAqZGVjb3JhdG9yKiBleHByZXNzaW9ucy4gIFRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yXG5leHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yIGZ1bmN0aW9ucy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzXG5vYmplY3QsIHdoaWNoIGlzIHRoZW4gYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzc1xuICAgIHRoZXJlIGlzIGEgImZpbmFsbHkiIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXJcbiAgICBleGNlcHRpb24uIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZlxuICAgIGFuIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgInJldHVybiIsICJjb250aW51ZSIsIG9yXG4gICAgImJyZWFrIiBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZVxuICAgIGZ1bmN0aW9uIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgIl9fZG9jX18iXG4gICAgYXR0cmlidXRlIGFuZCB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyAiX19kb2NfXyIgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKLSAnY29tcGFyaXNvbnMnOiB1J1xuQ29tcGFyaXNvbnNcbioqKioqKioqKioqXG5cblVubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LFxud2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciBiaXR3aXNlXG5vcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlICJhIDwgYiA8IGMiIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIjw+IiB8ICIhPSJcbiAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG5cbkNvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cblxuQ29tcGFyaXNvbnMgY2FuIGJlIGNoYWluZWQgYXJiaXRyYXJpbHksIGUuZy4sICJ4IDwgeSA8PSB6IiBpc1xuZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyBldmFsdWF0ZWQgb25seVxub25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCB5IiBpc1xuZm91bmQgdG8gYmUgZmFsc2UpLlxuXG5Gb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICpvcDEqLFxuKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiBjIC4uLiB5XG5vcE4geiIgaXMgZXF1aXZhbGVudCB0byAiYSBvcDEgYiBhbmQgYiBvcDIgYyBhbmQgLi4uIHkgb3BOIHoiLCBleGNlcHRcbnRoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG5cbk5vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgY29tcGFyaXNvbiBiZXR3ZWVuXG4qYSogYW5kICpjKiwgc28gdGhhdCwgZS5nLiwgInggPCB5ID4geiIgaXMgcGVyZmVjdGx5IGxlZ2FsICh0aG91Z2hcbnBlcmhhcHMgbm90IHByZXR0eSkuXG5cblRoZSBmb3JtcyAiPD4iIGFuZCAiIT0iIGFyZSBlcXVpdmFsZW50OyBmb3IgY29uc2lzdGVuY3kgd2l0aCBDLCAiIT0iXG5pcyBwcmVmZXJyZWQ7IHdoZXJlICIhPSIgaXMgbWVudGlvbmVkIGJlbG93ICI8PiIgaXMgYWxzbyBhY2NlcHRlZC5cblRoZSAiPD4iIHNwZWxsaW5nIGlzIGNvbnNpZGVyZWQgb2Jzb2xlc2NlbnQuXG5cblRoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgdGhlIHZhbHVlc1xub2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBuZWVkIG5vdCBoYXZlIHRoZSBzYW1lIHR5cGUuIElmIGJvdGggYXJlXG5udW1iZXJzLCB0aGV5IGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIE90aGVyd2lzZSwgb2JqZWN0cyBvZlxuZGlmZmVyZW50IHR5cGVzICphbHdheXMqIGNvbXBhcmUgdW5lcXVhbCwgYW5kIGFyZSBvcmRlcmVkIGNvbnNpc3RlbnRseVxuYnV0IGFyYml0cmFyaWx5LiBZb3UgY2FuIGNvbnRyb2wgY29tcGFyaXNvbiBiZWhhdmlvciBvZiBvYmplY3RzIG9mXG5ub24tYnVpbHQtaW4gdHlwZXMgYnkgZGVmaW5pbmcgYSAiX19jbXBfXyIgbWV0aG9kIG9yIHJpY2ggY29tcGFyaXNvblxubWV0aG9kcyBsaWtlICJfX2d0X18iLCBkZXNjcmliZWQgaW4gc2VjdGlvbiBTcGVjaWFsIG1ldGhvZCBuYW1lcy5cblxuKFRoaXMgdW51c3VhbCBkZWZpbml0aW9uIG9mIGNvbXBhcmlzb24gd2FzIHVzZWQgdG8gc2ltcGxpZnkgdGhlXG5kZWZpbml0aW9uIG9mIG9wZXJhdGlvbnMgbGlrZSBzb3J0aW5nIGFuZCB0aGUgImluIiBhbmQgIm5vdCBpbiJcbm9wZXJhdG9ycy4gSW4gdGhlIGZ1dHVyZSwgdGhlIGNvbXBhcmlzb24gcnVsZXMgZm9yIG9iamVjdHMgb2ZcbmRpZmZlcmVudCB0eXBlcyBhcmUgbGlrZWx5IHRvIGNoYW5nZS4pXG5cbkNvbXBhcmlzb24gb2Ygb2JqZWN0cyBvZiB0aGUgc2FtZSB0eXBlIGRlcGVuZHMgb24gdGhlIHR5cGU6XG5cbiogTnVtYmVycyBhcmUgY29tcGFyZWQgYXJpdGhtZXRpY2FsbHkuXG5cbiogU3RyaW5ncyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWNcbiAgZXF1aXZhbGVudHMgKHRoZSByZXN1bHQgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJvcmQoKSIpIG9mIHRoZWlyXG4gIGNoYXJhY3RlcnMuIFVuaWNvZGUgYW5kIDgtYml0IHN0cmluZ3MgYXJlIGZ1bGx5IGludGVyb3BlcmFibGUgaW5cbiAgdGhpcyBiZWhhdmlvci4gWzRdXG5cbiogVHVwbGVzIGFuZCBsaXN0cyBhcmUgY29tcGFyZWQgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvblxuICBvZiBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLiAgVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGVhY2hcbiAgZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbiAgdHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguXG5cbiAgSWYgbm90IGVxdWFsLCB0aGUgc2VxdWVuY2VzIGFyZSBvcmRlcmVkIHRoZSBzYW1lIGFzIHRoZWlyIGZpcnN0XG4gIGRpZmZlcmluZyBlbGVtZW50cy4gIEZvciBleGFtcGxlLCAiY21wKFsxLDIseF0sIFsxLDIseV0pIiByZXR1cm5zXG4gIHRoZSBzYW1lIGFzICJjbXAoeCx5KSIuICBJZiB0aGUgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXMgbm90XG4gIGV4aXN0LCB0aGUgc2hvcnRlciBzZXF1ZW5jZSBpcyBvcmRlcmVkIGZpcnN0IChmb3IgZXhhbXBsZSwgIlsxLDJdIDxcbiAgWzEsMiwzXSIpLlxuXG4qIE1hcHBpbmdzIChkaWN0aW9uYXJpZXMpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhlaXIgc29ydGVkXG4gIChrZXksIHZhbHVlKSBsaXN0cyBjb21wYXJlIGVxdWFsLiBbNV0gT3V0Y29tZXMgb3RoZXIgdGhhbiBlcXVhbGl0eVxuICBhcmUgcmVzb2x2ZWQgY29uc2lzdGVudGx5LCBidXQgYXJlIG5vdCBvdGhlcndpc2UgZGVmaW5lZC4gWzZdXG5cbiogTW9zdCBvdGhlciBvYmplY3RzIG9mIGJ1aWx0LWluIHR5cGVzIGNvbXBhcmUgdW5lcXVhbCB1bmxlc3MgdGhleVxuICBhcmUgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyBjb25zaWRlcmVkXG4gIHNtYWxsZXIgb3IgbGFyZ2VyIHRoYW4gYW5vdGhlciBvbmUgaXMgbWFkZSBhcmJpdHJhcmlseSBidXRcbiAgY29uc2lzdGVudGx5IHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cblxuVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBjb2xsZWN0aW9uIG1lbWJlcnNoaXAuICAieCBpblxucyIgZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uICpzKiwgYW5kXG5mYWxzZSBvdGhlcndpc2UuICAieCBub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuIFRoZVxuY29sbGVjdGlvbiBtZW1iZXJzaGlwIHRlc3QgaGFzIHRyYWRpdGlvbmFsbHkgYmVlbiBib3VuZCB0byBzZXF1ZW5jZXM7XG5hbiBvYmplY3QgaXMgYSBtZW1iZXIgb2YgYSBjb2xsZWN0aW9uIGlmIHRoZSBjb2xsZWN0aW9uIGlzIGEgc2VxdWVuY2VcbmFuZCBjb250YWlucyBhbiBlbGVtZW50IGVxdWFsIHRvIHRoYXQgb2JqZWN0LiAgSG93ZXZlciwgaXQgbWFrZSBzZW5zZVxuZm9yIG1hbnkgb3RoZXIgb2JqZWN0IHR5cGVzIHRvIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0cyB3aXRob3V0IGJlaW5nXG5hIHNlcXVlbmNlLiAgSW4gcGFydGljdWxhciwgZGljdGlvbmFyaWVzIChmb3Iga2V5cykgYW5kIHNldHMgc3VwcG9ydFxubWVtYmVyc2hpcCB0ZXN0aW5nLlxuXG5Gb3IgdGhlIGxpc3QgYW5kIHR1cGxlIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlXG5leGlzdHMgYW4gaW5kZXggKmkqIHN1Y2ggdGhhdCBlaXRoZXIgInggaXMgeVtpXSIgb3IgInggPT0geVtpXSIgaXNcbnRydWUuXG5cbkZvciB0aGUgVW5pY29kZSBhbmQgc3RyaW5nIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KlxuaXMgYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLlxuTm90ZSwgKngqIGFuZCAqeSogbmVlZCBub3QgYmUgdGhlIHNhbWUgdHlwZTsgY29uc2VxdWVudGx5LCAidVwnYWJcJyBpblxuXCdhYmNcJyIgd2lsbCByZXR1cm4gIlRydWUiLiBFbXB0eSBzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhXG5zdWJzdHJpbmcgb2YgYW55IG90aGVyIHN0cmluZywgc28gIiIiIGluICJhYmMiIiB3aWxsIHJldHVybiAiVHJ1ZSIuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFByZXZpb3VzbHksICp4KiB3YXMgcmVxdWlyZWQgdG8gYmUgYSBzdHJpbmcgb2Zcbmxlbmd0aCAiMSIuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG5cbkZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkbyBub3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIgYnV0IGRvXG5kZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIHNvbWUgdmFsdWUgInoiIHdpdGggInggPT0geiJcbmlzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbmR1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cblxuTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4iX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSBub24tXG5uZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgbG93ZXJcbmludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbiJpbiIuXG5cblRoZSBvcGVyYXRvcnMgImlzIiBhbmQgImlzIG5vdCIgdGVzdCBmb3Igb2JqZWN0IGlkZW50aXR5OiAieCBpcyB5IiBpc1xudHJ1ZSBpZiBhbmQgb25seSBpZiAqeCogYW5kICp5KiBhcmUgdGhlIHNhbWUgb2JqZWN0LiAgInggaXMgbm90IHkiXG55aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs3XVxuJywKLSAnY29tcG91bmQnOiB1J1xuQ29tcG91bmQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnRhaW4gKGdyb3VwcyBvZikgb3RoZXIgc3RhdGVtZW50czsgdGhleSBhZmZlY3Rcbm9yIGNvbnRyb2wgdGhlIGV4ZWN1dGlvbiBvZiB0aG9zZSBvdGhlciBzdGF0ZW1lbnRzIGluIHNvbWUgd2F5LiAgSW5cbmdlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gc2ltcGxlXG5pbmNhcm5hdGlvbnMgYSB3aG9sZSBjb21wb3VuZCBzdGF0ZW1lbnQgbWF5IGJlIGNvbnRhaW5lZCBpbiBvbmUgbGluZS5cblxuVGhlICJpZiIsICJ3aGlsZSIgYW5kICJmb3IiIHN0YXRlbWVudHMgaW1wbGVtZW50IHRyYWRpdGlvbmFsIGNvbnRyb2xcbmZsb3cgY29uc3RydWN0cy4gICJ0cnkiIHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXBcbmNvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cy4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyBhcmVcbmFsc28gc3ludGFjdGljYWxseSBjb21wb3VuZCBzdGF0ZW1lbnRzLlxuXG5Db21wb3VuZCBzdGF0ZW1lbnRzIGNvbnNpc3Qgb2Ygb25lIG9yIG1vcmUgXCdjbGF1c2VzLlwnICBBIGNsYXVzZVxuY29uc2lzdHMgb2YgYSBoZWFkZXIgYW5kIGEgXCdzdWl0ZS5cJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbnBhcnRpY3VsYXIgY29tcG91bmQgc3RhdGVtZW50IGFyZSBhbGwgYXQgdGhlIHNhbWUgaW5kZW50YXRpb24gbGV2ZWwuXG5FYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkIGFuZCBlbmRzXG53aXRoIGEgY29sb24uICBBIHN1aXRlIGlzIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cyBjb250cm9sbGVkIGJ5IGFcbmNsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG5zdGF0ZW1lbnRzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGhlYWRlciwgZm9sbG93aW5nIHRoZSBoZWFkZXJcJ3NcbmNvbG9uLCBvciBpdCBjYW4gYmUgb25lIG9yIG1vcmUgaW5kZW50ZWQgc3RhdGVtZW50cyBvbiBzdWJzZXF1ZW50XG5saW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCBjb21wb3VuZFxuc3RhdGVtZW50czsgdGhlIGZvbGxvd2luZyBpcyBpbGxlZ2FsLCBtb3N0bHkgYmVjYXVzZSBpdCB3b3VsZG5cJ3QgYmVcbmNsZWFyIHRvIHdoaWNoICJpZiIgY2xhdXNlIGEgZm9sbG93aW5nICJlbHNlIiBjbGF1c2Ugd291bGQgYmVsb25nOlxuXG4gICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50IHhcblxuQWxzbyBub3RlIHRoYXQgdGhlIHNlbWljb2xvbiBiaW5kcyB0aWdodGVyIHRoYW4gdGhlIGNvbG9uIGluIHRoaXNcbmNvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgdGhlXG4icHJpbnQiIHN0YXRlbWVudHMgYXJlIGV4ZWN1dGVkOlxuXG4gICBpZiB4IDwgeSA8IHo6IHByaW50IHg7IHByaW50IHk7IHByaW50IHpcblxuU3VtbWFyaXppbmc6XG5cbiAgIGNvbXBvdW5kX3N0bXQgOjo9IGlmX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCBmb3Jfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB0cnlfc3RtdFxuICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZnVuY2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBjbGFzc2RlZlxuICAgICAgICAgICAgICAgICAgICAgfCBkZWNvcmF0ZWRcbiAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgc3RhdGVtZW50KyBERURFTlRcbiAgIHN0YXRlbWVudCAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgY29tcG91bmRfc3RtdFxuICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG5cbk5vdGUgdGhhdCBzdGF0ZW1lbnRzIGFsd2F5cyBlbmQgaW4gYSAiTkVXTElORSIgcG9zc2libHkgZm9sbG93ZWQgYnkgYVxuIkRFREVOVCIuIEFsc28gbm90ZSB0aGF0IG9wdGlvbmFsIGNvbnRpbnVhdGlvbiBjbGF1c2VzIGFsd2F5cyBiZWdpblxud2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG5hbWJpZ3VpdGllcyAodGhlIFwnZGFuZ2xpbmcgImVsc2UiXCcgcHJvYmxlbSBpcyBzb2x2ZWQgaW4gUHl0aG9uIGJ5XG5yZXF1aXJpbmcgbmVzdGVkICJpZiIgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG5cblRoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgcGxhY2VzXG5lYWNoIGNsYXVzZSBvbiBhIHNlcGFyYXRlIGxpbmUgZm9yIGNsYXJpdHkuXG5cblxuVGhlICJpZiIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT1cblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uIEJvb2xlYW4gb3BlcmF0aW9uc1xuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cblxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyBiYWNrXG50byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuXG5cblRoZSAiZm9yIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT1cblxuVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSBzZXF1ZW5jZVxuKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcblxuICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbm9iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG4iZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG5pdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuZm9yIGFzc2lnbm1lbnRzLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXMgZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmVcbmV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgZW1wdHkpLCB0aGUgc3VpdGVcbmluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG50ZXJtaW5hdGVzLlxuXG5BICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG53aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbmV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kIGNvbnRpbnVlc1xud2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIHdhcyBubyBuZXh0XG5pdGVtLlxuXG5UaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzIGRvZXNcbm5vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cblxuVGhlIHRhcmdldCBsaXN0IGlzIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsIGJ1dCBpZiB0aGVcbnNlcXVlbmNlIGlzIGVtcHR5LCBpdCB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXQgYWxsIGJ5IHRoZVxubG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhIHNlcXVlbmNlIG9mXG5pbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzICJmb3IgaSA6PSBhIHRvIGJcbmRvIjsgZS5nLiwgInJhbmdlKDMpIiByZXR1cm5zIHRoZSBsaXN0ICJbMCwgMSwgMl0iLlxuXG5Ob3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZVxuICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuIEFuXG4gIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzIG1lYW5zXG4gIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSB0aGVcbiAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCBvZlxuICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgdGhlXG4gIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbiAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbiAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG5cbiAgICAgZm9yIHggaW4gYVs6XTpcbiAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuXG5cblRoZSAidHJ5IiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT1cblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWygiYXMiIHwgIiwiKSBpZGVudGlmaWVyXV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMi41OiBJbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBQeXRob24sXG4idHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiIGRpZCBub3Qgd29yay4gInRyeSIuLi4iZXhjZXB0IiBoYWQgdG8gYmVcbm5lc3RlZCBpbiAidHJ5Ii4uLiJmaW5hbGx5Ii5cblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3QsIG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCByYWlzZWRcbnRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdFxuY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdCBjbGF1c2VzIG11c3QgaGF2ZSBhblxuZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzIHJlYWNoZWQsIGV4ZWN1dGlvblxuY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC4gIChUaGlzIG1lYW5zIHRoYXRcbmlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbiwgYW5kIHRoZSBleGNlcHRpb25cbm9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlIG91dGVyIGhhbmRsZXIgd2lsbFxubm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIGFzc2lnbmVkIHRvIHRocmVlIHZhcmlhYmxlcyBpbiB0aGUgInN5cyIgbW9kdWxlOlxuInN5cy5leGNfdHlwZSIgcmVjZWl2ZXMgdGhlIG9iamVjdCBpZGVudGlmeWluZyB0aGUgZXhjZXB0aW9uO1xuInN5cy5leGNfdmFsdWUiIHJlY2VpdmVzIHRoZSBleGNlcHRpb25cJ3MgcGFyYW1ldGVyO1xuInN5cy5leGNfdHJhY2ViYWNrIiByZWNlaXZlcyBhIHRyYWNlYmFjayBvYmplY3QgKHNlZSBzZWN0aW9uIFRoZVxuc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpbiB0aGUgcHJvZ3JhbSB3aGVyZVxudGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gVGhlc2UgZGV0YWlscyBhcmUgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGVcbiJzeXMuZXhjX2luZm8oKSIgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgYSB0dXBsZSAiKGV4Y190eXBlLFxuZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrKSIuICBVc2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGVzIGlzXG5kZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoaXMgZnVuY3Rpb24sIHNpbmNlIHRoZWlyIHVzZSBpcyB1bnNhZmUgaW4gYVxudGhyZWFkZWQgcHJvZ3JhbS4gIEFzIG9mIFB5dGhvbiAxLjUsIHRoZSB2YXJpYWJsZXMgYXJlIHJlc3RvcmVkIHRvXG50aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmcgZnJvbSBhIGZ1bmN0aW9uXG50aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24sIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZVxuImZpbmFsbHkiIGNsYXVzZS4gSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uIG9yXG5leGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uIGlzXG5kaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0byBnZW5lcmF0ZVxuZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiBUaGUgcmFpc2Ugc3RhdGVtZW50LlxuXG5cblRoZSAid2l0aCIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09PVxuXG5OZXcgaW4gdmVyc2lvbiAyLjUuXG5cblRoZSAid2l0aCIgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxubWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiBXaXRoIFN0YXRlbWVudFxuQ29udGV4dCBNYW5hZ2VycykuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG51c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCBhbHdheXMgYmVcbiAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiBJZiBhblxuICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCB0aHJlZVxuICAgIk5vbmUiIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyByZXJhaXNlZC5cbiAgIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgYW5kXG4gICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICJ3aXRoIlxuICAgc3RhdGVtZW50LlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgdGhlXG4gICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiBwcm9jZWVkc1xuICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cblxuV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbm11bHRpcGxlICJ3aXRoIiBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuTm90ZTogSW4gUHl0aG9uIDIuNSwgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgb25seSBhbGxvd2VkIHdoZW4gdGhlXG4gICJ3aXRoX3N0YXRlbWVudCIgZmVhdHVyZSBoYXMgYmVlbiBlbmFibGVkLiAgSXQgaXMgYWx3YXlzIGVuYWJsZWQgaW5cbiAgUHl0aG9uIDIuNi5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNzogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286XG5cbiAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSk6XG5cbiAgIGRlY29yYXRlZCAgICAgIDo6PSBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYpXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFthcmd1bWVudF9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGZ1bmNkZWYgICAgICAgIDo6PSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgIjoiIHN1aXRlXG4gICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbiAgICAgICAgICAgICAgICAgICAgICAoICAiKiIgaWRlbnRpZmllciBbIiwiICIqKiIgaWRlbnRpZmllcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgaWRlbnRpZmllclxuICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbiAgIGRlZnBhcmFtZXRlciAgIDo6PSBwYXJhbWV0ZXIgWyI9IiBleHByZXNzaW9uXVxuICAgc3VibGlzdCAgICAgICAgOjo9IHBhcmFtZXRlciAoIiwiIHBhcmFtZXRlcikqIFsiLCJdXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciB8ICIoIiBzdWJsaXN0ICIpIlxuICAgZnVuY25hbWUgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiBiaW5kc1xudGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gb2JqZWN0XG4oYSB3cmFwcGVyIGFyb3VuZCB0aGUgZXhlY3V0YWJsZSBjb2RlIGZvciB0aGUgZnVuY3Rpb24pLiAgVGhpc1xuZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCBuYW1lc3BhY2VcbmFzIHRoZSBnbG9iYWwgbmFtZXNwYWNlIHRvIGJlIHVzZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLlxuXG5UaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzIGdldHNcbmV4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvciBtb3JlICpkZWNvcmF0b3IqXG5leHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gaXNcbmRlZmluZWQsIGluIHRoZSBzY29wZSB0aGF0IGNvbnRhaW5zIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgVGhlXG5yZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uIG9iamVjdFxuYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgZnVuY3Rpb24gbmFtZVxuaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LiAgTXVsdGlwbGUgZGVjb3JhdG9ycyBhcmUgYXBwbGllZCBpblxubmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGU6XG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0bzpcblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgdG9wLWxldmVsICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuKmV4cHJlc3Npb24qLCB0aGUgZnVuY3Rpb24gaXMgc2FpZCB0byBoYXZlICJkZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMuIlxuRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAqYXJndW1lbnQqIG1heVxuYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyXCdzIGRlZmF1bHQgdmFsdWUgaXNcbnN1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xucGFyYW1ldGVycyBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXMgaXMgYSBzeW50YWN0aWNcbnJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uXG5pcyBleGVjdXRlZC4qKiAgVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBvbmNlLCB3aGVuXG50aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgaXNcbnVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB3aGVuIGFcbmRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgZGljdGlvbmFyeTpcbmlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtIHRvIGFcbmxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuIFRoaXMgaXMgZ2VuZXJhbGx5IG5vdFxud2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyAgaXMgdG8gdXNlICJOb25lIiBhcyB0aGVcbmRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvbiBDYWxscy5cbkEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgbWVudGlvbmVkIGluXG50aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbSBrZXl3b3JkXG5hcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybSAiIippZGVudGlmaWVyIiIgaXNcbnByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueSBleGNlc3MgcG9zaXRpb25hbFxucGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGUgZm9ybVxuIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ldyBkaWN0aW9uYXJ5XG5yZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ldyBlbXB0eVxuZGljdGlvbmFyeS5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhXG5leHByZXNzaW9ucywgZGVzY3JpYmVkIGluIHNlY3Rpb24gTGFtYmRhcy4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhXG5leHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247XG5hIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvclxuYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGFcbmV4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgIiJkZWYiIlxuZm9ybSBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbCBmdW5jdGlvblxudGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWQgaW4gdGhlXG5uZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gTmFtaW5nIGFuZCBiaW5kaW5nIGZvciBkZXRhaWxzLlxuXG5cbkNsYXNzIGRlZmluaXRpb25zXG49PT09PT09PT09PT09PT09PVxuXG5BIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSk6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbZXhwcmVzc2lvbl9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0IGZpcnN0IGV2YWx1YXRlcyB0aGVcbmluaGVyaXRhbmNlIGxpc3QsIGlmIHByZXNlbnQuICBFYWNoIGl0ZW0gaW4gdGhlIGluaGVyaXRhbmNlIGxpc3RcbnNob3VsZCBldmFsdWF0ZSB0byBhIGNsYXNzIG9iamVjdCBvciBjbGFzcyB0eXBlIHdoaWNoIGFsbG93c1xuc3ViY2xhc3NpbmcuICBUaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb25cbmZyYW1lIChzZWUgc2VjdGlvbiBOYW1pbmcgYW5kIGJpbmRpbmcpLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWxcbm5hbWVzcGFjZSBhbmQgdGhlIG9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGVcbmNvbnRhaW5zIG9ubHkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXNcbmV4ZWN1dGlvbiwgaXRzIGV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXNcbnNhdmVkLiBbNF0gQSBjbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0XG5mb3IgdGhlIGJhc2UgY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZVxuZGljdGlvbmFyeS4gIFRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluIHRoZVxub3JpZ2luYWwgbG9jYWwgbmFtZXNwYWNlLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBhcmVcbmNsYXNzIHZhcmlhYmxlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGFsbCBpbnN0YW5jZXMuICBUbyBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcywgdGhleSBjYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGhcbmNsYXNzIGFuZCBpbnN0YW5jZSB2YXJpYWJsZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbiIic2VsZi5uYW1lIiIsIGFuZCBhbiBpbnN0YW5jZSB2YXJpYWJsZSBoaWRlcyBhIGNsYXNzIHZhcmlhYmxlIHdpdGhcbnRoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gQ2xhc3MgdmFyaWFibGVzIGNhbiBiZSB1c2VkXG5hcyBkZWZhdWx0cyBmb3IgaW5zdGFuY2UgdmFyaWFibGVzLCBidXQgdXNpbmcgbXV0YWJsZSB2YWx1ZXMgdGhlcmUgY2FuXG5sZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4gIEZvciAqbmV3LXN0eWxlIGNsYXNzKmVzLCBkZXNjcmlwdG9ycyBjYW5cbmJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlIHZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvblxuZGV0YWlscy5cblxuQ2xhc3MgZGVmaW5pdGlvbnMsIGxpa2UgZnVuY3Rpb24gZGVmaW5pdGlvbnMsIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSBvclxubW9yZSAqZGVjb3JhdG9yKiBleHByZXNzaW9ucy4gIFRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yXG5leHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yIGZ1bmN0aW9ucy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzXG5vYmplY3QsIHdoaWNoIGlzIHRoZW4gYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzc1xuICAgIHRoZXJlIGlzIGEgImZpbmFsbHkiIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXJcbiAgICBleGNlcHRpb24uIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZlxuICAgIGFuIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgInJldHVybiIsICJjb250aW51ZSIsIG9yXG4gICAgImJyZWFrIiBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZVxuICAgIGZ1bmN0aW9uIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgIl9fZG9jX18iXG4gICAgYXR0cmlidXRlIGFuZCB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyAiX19kb2NfXyIgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKLSAnY29udGV4dC1tYW5hZ2Vycyc6IHUnXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbk5ldyBpbiB2ZXJzaW9uIDIuNS5cblxuQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lIGNvbnRleHQgdG9cbmJlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlIGNvbnRleHQgbWFuYWdlclxuaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkIHJ1bnRpbWUgY29udGV4dFxuZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzIGFyZSBub3JtYWxseVxuaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gVGhlIHdpdGhcbnN0YXRlbWVudCksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyIG1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlIENvbnRleHQgTWFuYWdlciBUeXBlcy5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAid2l0aCJcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSAiTm9uZSIuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286XG5cbiAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG4nLAotICdjb250aW51ZSc6IHUnXG5UaGUgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG5cbiJjb250aW51ZSIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG5sb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgImZpbmFsbHkiXG5jbGF1c2Ugd2l0aGluIHRoYXQgbG9vcC4gIEl0IGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGN5Y2xlIG9mIHRoZVxubmVhcmVzdCBlbmNsb3NpbmcgbG9vcC5cblxuV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbiJmaW5hbGx5IiBjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5XG5zdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKLSAnY29udmVyc2lvbnMnOiB1J1xuQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuKioqKioqKioqKioqKioqKioqKioqKlxuXG5XaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSBwaHJhc2VcbiJ0aGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCIgdGhlIGFyZ3VtZW50c1xuYXJlIGNvZXJjZWQgdXNpbmcgdGhlIGNvZXJjaW9uIHJ1bGVzIGxpc3RlZCBhdCAgQ29lcmNpb24gcnVsZXMuICBJZlxuYm90aCBhcmd1bWVudHMgYXJlIHN0YW5kYXJkIG51bWVyaWMgdHlwZXMsIHRoZSBmb2xsb3dpbmcgY29lcmNpb25zIGFyZVxuYXBwbGllZDpcblxuKiBJZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBjb21wbGV4IG51bWJlciwgdGhlIG90aGVyIGlzIGNvbnZlcnRlZCB0b1xuICBjb21wbGV4O1xuXG4qIG90aGVyd2lzZSwgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCB0aGVcbiAgb3RoZXIgaXMgY29udmVydGVkIHRvIGZsb2F0aW5nIHBvaW50O1xuXG4qIG90aGVyd2lzZSwgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgbG9uZyBpbnRlZ2VyLCB0aGUgb3RoZXIgaXNcbiAgY29udmVydGVkIHRvIGxvbmcgaW50ZWdlcjtcblxuKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBwbGFpbiBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpc1xuICBuZWNlc3NhcnkuXG5cblNvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgc3RyaW5nIGxlZnRcbmFyZ3VtZW50IHRvIHRoZSBcJyVcJyBvcGVyYXRvcikuIEV4dGVuc2lvbnMgY2FuIGRlZmluZSB0aGVpciBvd25cbmNvZXJjaW9ucy5cbicsCi0gJ2N1c3RvbWl6YXRpb24nOiB1J1xuQmFzaWMgY3VzdG9taXphdGlvblxuKioqKioqKioqKioqKioqKioqKlxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y190cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgbGF0dGVyIHR3byBzaXR1YXRpb25zIGNhbiBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpblxuICAgICAic3lzLmV4Y190cmFjZWJhY2siIG9yICJzeXMubGFzdF90cmFjZWJhY2siLiAgQ2lyY3VsYXIgcmVmZXJlbmNlc1xuICAgICB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzXG4gICAgIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZVxuICAgICBhcmUgbm8gUHl0aG9uLWxldmVsICJfX2RlbF9fKCkiIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZVxuICAgICBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93XG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGN5Y2xlIGRldGVjdG9yLFxuICAgICBwYXJ0aWN1bGFybHkgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAiZ2FyYmFnZSIgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbiAgIFNlZSBhbHNvIHRoZSAiLVIiIGNvbW1hbmQtbGluZSBvcHRpb24uXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIGFuZCBieSBzdHJpbmcgY29udmVyc2lvbnNcbiAgIChyZXZlcnNlIHF1b3RlcykgdG8gY29tcHV0ZSB0aGUgIm9mZmljaWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2ZcbiAgIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpcyBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWRcbiAgIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZCB0byByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGVcbiAgIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90XG4gICBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm0gIjwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj4iXG4gICBzaG91bGQgYmUgcmV0dXJuZWQuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhXG4gICBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXQgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIlxuICAgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzXG4gICBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgInN0cigpIiBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYnkgdGhlICJwcmludCJcbiAgIHN0YXRlbWVudCB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiAgVGhpcyBkaWZmZXJzIGZyb20gIl9fcmVwcl9fKCkiIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZSB0b1xuICAgYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgTmV3IGluIHZlcnNpb24gMi4xLlxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLCBhbmQgYXJlIGNhbGxlZFxuICAgZm9yIGNvbXBhcmlzb24gb3BlcmF0b3JzIGluIHByZWZlcmVuY2UgdG8gIl9fY21wX18oKSIgYmVsb3cuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6ICJ4PHkiIGNhbGxzICJ4Ll9fbHRfXyh5KSIsICJ4PD15IiBjYWxscyAieC5fX2xlX18oeSkiLFxuICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBhbmQgIng8PnkiIGNhbGwgInguX19uZV9fKHkpIixcbiAgICJ4PnkiIGNhbGxzICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAiTm90SW1wbGVtZW50ZWQiXG4gICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mXG4gICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgZm9yIGFcbiAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuIGFueSB2YWx1ZSxcbiAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuIGNvbnRleHQgKGUuZy4sXG4gICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAiYm9vbCgpIlxuICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIFRoZXJlIGFyZSBubyBpbXBsaWVkIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLlxuICAgVGhlIHRydXRoIG9mICJ4PT15IiBkb2VzIG5vdCBpbXBseSB0aGF0ICJ4IT15IiBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nICJfX2VxX18oKSIsIG9uZSBzaG91bGQgYWxzbyBkZWZpbmVcbiAgICJfX25lX18oKSIgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlIHRoZVxuICAgcGFyYWdyYXBoIG9uICJfX2hhc2hfXygpIiBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb24gY3JlYXRpbmdcbiAgICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uIG9wZXJhdGlvbnMgYW5kXG4gICBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyByZWZsZWN0aW9uLFxuICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG5cbm9iamVjdC5fX2NtcF9fKHNlbGYsIG90aGVyKVxuXG4gICBDYWxsZWQgYnkgY29tcGFyaXNvbiBvcGVyYXRpb25zIGlmIHJpY2ggY29tcGFyaXNvbiAoc2VlIGFib3ZlKSBpc1xuICAgbm90IGRlZmluZWQuICBTaG91bGQgcmV0dXJuIGEgbmVnYXRpdmUgaW50ZWdlciBpZiAic2VsZiA8IG90aGVyIixcbiAgIHplcm8gaWYgInNlbGYgPT0gb3RoZXIiLCBhIHBvc2l0aXZlIGludGVnZXIgaWYgInNlbGYgPiBvdGhlciIuICBJZlxuICAgbm8gIl9fY21wX18oKSIsICJfX2VxX18oKSIgb3IgIl9fbmVfXygpIiBvcGVyYXRpb24gaXMgZGVmaW5lZCxcbiAgIGNsYXNzIGluc3RhbmNlcyBhcmUgY29tcGFyZWQgYnkgb2JqZWN0IGlkZW50aXR5ICgiYWRkcmVzcyIpLiAgU2VlXG4gICBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuIChOb3RlOiB0aGVcbiAgIHJlc3RyaWN0aW9uIHRoYXQgZXhjZXB0aW9ucyBhcmUgbm90IHByb3BhZ2F0ZWQgYnkgIl9fY21wX18oKSIgaGFzXG4gICBiZWVuIHJlbW92ZWQgc2luY2UgUHl0aG9uIDEuNS4pXG5cbm9iamVjdC5fX3JjbXBfXyhzZWxmLCBvdGhlcilcblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMTogTm8gbG9uZ2VyIHN1cHBvcnRlZC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgb24gbWVtYmVyc1xuICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAiZGljdCIuXG4gICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgcHJvcGVydHlcbiAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZTsgaXQgaXNcbiAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaFxuICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgcGFydCBpblxuICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhICJfX2NtcF9fKCkiIG9yICJfX2VxX18oKSIgbWV0aG9kIGl0XG4gICBzaG91bGQgbm90IGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzXG4gICAiX19jbXBfXygpIiBvciAiX19lcV9fKCkiIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGxcbiAgIG5vdCBiZSB1c2FibGUgaW4gaGFzaGVkIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGVcbiAgIG9iamVjdHMgYW5kIGltcGxlbWVudHMgYSAiX19jbXBfXygpIiBvciAiX19lcV9fKCkiIG1ldGhvZCwgaXRcbiAgIHNob3VsZCBub3QgaW1wbGVtZW50ICJfX2hhc2hfXygpIiwgc2luY2UgaGFzaGFibGUgY29sbGVjdGlvblxuICAgaW1wbGVtZW50YXRpb25zIHJlcXVpcmUgdGhhdCBhbiBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGVcbiAgIChpZiB0aGUgb2JqZWN0XCdzIGhhc2ggdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaFxuICAgYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19jbXBfXygpIiBhbmQgIl9faGFzaF9fKCkiIG1ldGhvZHMgYnlcbiAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYSByZXN1bHQgZGVyaXZlZCBmcm9tXG4gICAiaWQoeCkiLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSAiX19oYXNoX18oKSIgbWV0aG9kIGZyb20gYSBwYXJlbnQgY2xhc3MgYnV0XG4gICBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgIl9fY21wX18oKSIgb3IgIl9fZXFfXygpIiBzdWNoIHRoYXQgdGhlIGhhc2hcbiAgIHZhbHVlIHJldHVybmVkIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSAoZS5nLiBieSBzd2l0Y2hpbmcgdG8gYVxuICAgdmFsdWUtYmFzZWQgY29uY2VwdCBvZiBlcXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGlkZW50aXR5XG4gICBiYXNlZCBlcXVhbGl0eSkgY2FuIGV4cGxpY2l0bHkgZmxhZyB0aGVtc2VsdmVzIGFzIGJlaW5nIHVuaGFzaGFibGVcbiAgIGJ5IHNldHRpbmcgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uIERvaW5nIHNvXG4gICBtZWFucyB0aGF0IG5vdCBvbmx5IHdpbGwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyByYWlzZSBhblxuICAgYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXJcbiAgIGhhc2ggdmFsdWUsIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIlxuICAgKHVubGlrZSBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGVpciBvd24gIl9faGFzaF9fKCkiIHRvIGV4cGxpY2l0bHlcbiAgIHJhaXNlICJUeXBlRXJyb3IiKS5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNTogIl9faGFzaF9fKCkiIG1heSBub3cgYWxzbyByZXR1cm4gYSBsb25nXG4gICBpbnRlZ2VyIG9iamVjdDsgdGhlIDMyLWJpdCBpbnRlZ2VyIGlzIHRoZW4gZGVyaXZlZCBmcm9tIHRoZSBoYXNoIG9mXG4gICB0aGF0IG9iamVjdC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNjogIl9faGFzaF9fIiBtYXkgbm93IGJlIHNldCB0byAiTm9uZSIgdG9cbiAgIGV4cGxpY2l0bHkgZmxhZyBpbnN0YW5jZXMgb2YgYSBjbGFzcyBhcyB1bmhhc2hhYmxlLlxuXG5vYmplY3QuX19ub256ZXJvX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIiwgb3IgdGhlaXIgaW50ZWdlclxuICAgZXF1aXZhbGVudHMgIjAiIG9yICIxIi4gIFdoZW4gdGhpcyBtZXRob2QgaXMgbm90IGRlZmluZWQsXG4gICAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0IGlzXG4gICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX25vbnplcm9fXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG5cbm9iamVjdC5fX3VuaWNvZGVfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJ1bmljb2RlKCkiIGJ1aWx0LWluOyBzaG91bGQgcmV0dXJuIGEgVW5pY29kZVxuICAgb2JqZWN0LiBXaGVuIHRoaXMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCBzdHJpbmcgY29udmVyc2lvbiBpc1xuICAgYXR0ZW1wdGVkLCBhbmQgdGhlIHJlc3VsdCBvZiBzdHJpbmcgY29udmVyc2lvbiBpcyBjb252ZXJ0ZWQgdG9cbiAgIFVuaWNvZGUgdXNpbmcgdGhlIHN5c3RlbSBkZWZhdWx0IGVuY29kaW5nLlxuJywKLSAnZGVidWdnZXInOiB1J1xuInBkYiIgLS0tIFRoZSBQeXRob24gRGVidWdnZXJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbioqU291cmNlIGNvZGU6KiogTGliL3BkYi5weVxuXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBtb2R1bGUgInBkYiIgZGVmaW5lcyBhbiBpbnRlcmFjdGl2ZSBzb3VyY2UgY29kZSBkZWJ1Z2dlciBmb3JcblB5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyBhbmRcbnNpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgZnJhbWVzLFxuc291cmNlIGNvZGUgbGlzdGluZywgYW5kIGV2YWx1YXRpb24gb2YgYXJiaXRyYXJ5IFB5dGhvbiBjb2RlIGluIHRoZVxuY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtIGRlYnVnZ2luZ1xuYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuXG5UaGUgZGVidWdnZXIgaXMgZXh0ZW5zaWJsZSAtLS0gaXQgaXMgYWN0dWFsbHkgZGVmaW5lZCBhcyB0aGUgY2xhc3NcbiJQZGIiLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5IHJlYWRpbmdcbnRoZSBzb3VyY2UuICBUaGUgZXh0ZW5zaW9uIGludGVyZmFjZSB1c2VzIHRoZSBtb2R1bGVzICJiZGIiIGFuZCAiY21kIi5cblxuVGhlIGRlYnVnZ2VyXCdzIHByb21wdCBpcyAiKFBkYikiLiBUeXBpY2FsIHVzYWdlIHRvIHJ1biBhIHByb2dyYW0gdW5kZXJcbmNvbnRyb2wgb2YgdGhlIGRlYnVnZ2VyIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IHBkYi5ydW4oXCdteW1vZHVsZS50ZXN0KClcJylcbiAgID4gPHN0cmluZz4oMCk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgTmFtZUVycm9yOiBcJ3NwYW1cJ1xuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYilcblxuInBkYi5weSIgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciBzY3JpcHRzLiAgRm9yXG5leGFtcGxlOlxuXG4gICBweXRob24gLW0gcGRiIG15c2NyaXB0LnB5XG5cbldoZW4gaW52b2tlZCBhcyBhIHNjcmlwdCwgcGRiIHdpbGwgYXV0b21hdGljYWxseSBlbnRlciBwb3N0LW1vcnRlbVxuZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuIEFmdGVyIHBvc3QtXG5tb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiB3aWxsXG5yZXN0YXJ0IHRoZSBwcm9ncmFtLiBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiXCdzIHN0YXRlIChzdWNoXG5hcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyB0aGVcbmRlYnVnZ2VyIHVwb24gcHJvZ3JhbVwncyBleGl0LlxuXG5OZXcgaW4gdmVyc2lvbiAyLjQ6IFJlc3RhcnRpbmcgcG9zdC1tb3J0ZW0gYmVoYXZpb3IgYWRkZWQuXG5cblRoZSB0eXBpY2FsIHVzYWdlIHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyIGZyb20gYSBydW5uaW5nIHByb2dyYW0gaXNcbnRvIGluc2VydFxuXG4gICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcblxuYXQgdGhlIGxvY2F0aW9uIHlvdSB3YW50IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyLiAgWW91IGNhbiB0aGVuXG5zdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgcnVubmluZ1xud2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlICJjIiBjb21tYW5kLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBpbnNwZWN0IGEgY3Jhc2hlZCBwcm9ncmFtIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbiAgICAgICB0ZXN0MigpXG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDMsIGluIHRlc3QyXG4gICAgICAgcHJpbnQgc3BhbVxuICAgTmFtZUVycm9yOiBzcGFtXG4gICA+Pj4gcGRiLnBtKClcbiAgID4gLi9teW1vZHVsZS5weSgzKXRlc3QyKClcbiAgIC0+IHByaW50IHNwYW1cbiAgIChQZGIpXG5cblRoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlIGRlYnVnZ2VyXG5pbiBhIHNsaWdodGx5IGRpZmZlcmVudCB3YXk6XG5cbnBkYi5ydW4oc3RhdGVtZW50WywgZ2xvYmFsc1ssIGxvY2Fsc11dKVxuXG4gICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcpIHVuZGVyIGRlYnVnZ2VyIGNvbnRyb2wuXG4gICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnMgYmVmb3JlIGFueSBjb2RlIGlzIGV4ZWN1dGVkOyB5b3UgY2FuXG4gICBzZXQgYnJlYWtwb2ludHMgYW5kIHR5cGUgImNvbnRpbnVlIiwgb3IgeW91IGNhbiBzdGVwIHRocm91Z2ggdGhlXG4gICBzdGF0ZW1lbnQgdXNpbmcgInN0ZXAiIG9yICJuZXh0IiAoYWxsIHRoZXNlIGNvbW1hbmRzIGFyZSBleHBsYWluZWRcbiAgIGJlbG93KS4gIFRoZSBvcHRpb25hbCAqZ2xvYmFscyogYW5kICpsb2NhbHMqIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZVxuICAgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgZXhlY3V0ZWQ7IGJ5IGRlZmF1bHQgdGhlXG4gICBkaWN0aW9uYXJ5IG9mIHRoZSBtb2R1bGUgIl9fbWFpbl9fIiBpcyB1c2VkLiAgKFNlZSB0aGUgZXhwbGFuYXRpb25cbiAgIG9mIHRoZSAiZXhlYyIgc3RhdGVtZW50IG9yIHRoZSAiZXZhbCgpIiBidWlsdC1pbiBmdW5jdGlvbi4pXG5cbnBkYi5ydW5ldmFsKGV4cHJlc3Npb25bLCBnbG9iYWxzWywgbG9jYWxzXV0pXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nKSB1bmRlciBkZWJ1Z2dlclxuICAgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlXG4gICBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciB0byAicnVuKCkiLlxuXG5wZGIucnVuY2FsbChmdW5jdGlvblssIGFyZ3VtZW50LCAuLi5dKVxuXG4gICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhIHN0cmluZylcbiAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gInJ1bmNhbGwoKSIgcmV0dXJucywgaXQgcmV0dXJuc1xuICAgd2hhdGV2ZXIgdGhlIGZ1bmN0aW9uIGNhbGwgcmV0dXJuZWQuICBUaGUgZGVidWdnZXIgcHJvbXB0IGFwcGVhcnNcbiAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG5cbnBkYi5zZXRfdHJhY2UoKVxuXG4gICBFbnRlciB0aGUgZGVidWdnZXIgYXQgdGhlIGNhbGxpbmcgc3RhY2sgZnJhbWUuICBUaGlzIGlzIHVzZWZ1bCB0b1xuICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiB0aGVcbiAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuIGFzc2VydGlvblxuICAgZmFpbHMpLlxuXG5wZGIucG9zdF9tb3J0ZW0oW3RyYWNlYmFja10pXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgZ2l2ZW4gKnRyYWNlYmFjayogb2JqZWN0LiAgSWYgbm9cbiAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGlzXG4gICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCBpZiB0aGVcbiAgIGRlZmF1bHQgaXMgdG8gYmUgdXNlZCkuXG5cbnBkYi5wbSgpXG5cbiAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4gICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cblxuVGhlICJydW4qIiBmdW5jdGlvbnMgYW5kICJzZXRfdHJhY2UoKSIgYXJlIGFsaWFzZXMgZm9yIGluc3RhbnRpYXRpbmdcbnRoZSAiUGRiIiBjbGFzcyBhbmQgY2FsbGluZyB0aGUgbWV0aG9kIG9mIHRoZSBzYW1lIG5hbWUuICBJZiB5b3Ugd2FudFxudG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG5cbmNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9XCd0YWJcJywgc3RkaW49Tm9uZSwgc3Rkb3V0PU5vbmUsIHNraXA9Tm9uZSlcblxuICAgIlBkYiIgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuXG4gICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlXG4gICB1bmRlcmx5aW5nICJjbWQuQ21kIiBjbGFzczsgc2VlIHRoZSBkZXNjcmlwdGlvbiB0aGVyZS5cblxuICAgVGhlICpza2lwKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgZ2xvYi1zdHlsZVxuICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyB0aGF0XG4gICBvcmlnaW5hdGUgaW4gYSBtb2R1bGUgdGhhdCBtYXRjaGVzIG9uZSBvZiB0aGVzZSBwYXR0ZXJucy4gWzFdXG5cbiAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcblxuICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVtcJ2RqYW5nby4qXCddKS5zZXRfdHJhY2UoKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAyLjc6IFRoZSAqc2tpcCogYXJndW1lbnQuXG5cbiAgIHJ1bihzdGF0ZW1lbnRbLCBnbG9iYWxzWywgbG9jYWxzXV0pXG4gICBydW5ldmFsKGV4cHJlc3Npb25bLCBnbG9iYWxzWywgbG9jYWxzXV0pXG4gICBydW5jYWxsKGZ1bmN0aW9uWywgYXJndW1lbnQsIC4uLl0pXG4gICBzZXRfdHJhY2UoKVxuXG4gICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuJywKLSAnZGVsJzogdSdcblRoZSAiZGVsIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuICAgZGVsX3N0bXQgOjo9ICJkZWwiIHRhcmdldF9saXN0XG5cbkRlbGV0aW9uIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgdmVyeSBzaW1pbGFyIHRvIHRoZSB3YXkgYXNzaWdubWVudCBpc1xuZGVmaW5lZC4gUmF0aGVyIHRoYW4gc3BlbGxpbmcgaXQgb3V0IGluIGZ1bGwgZGV0YWlscywgaGVyZSBhcmUgc29tZVxuaGludHMuXG5cbkRlbGV0aW9uIG9mIGEgdGFyZ2V0IGxpc3QgcmVjdXJzaXZlbHkgZGVsZXRlcyBlYWNoIHRhcmdldCwgZnJvbSBsZWZ0XG50byByaWdodC5cblxuRGVsZXRpb24gb2YgYSBuYW1lIHJlbW92ZXMgdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lICBmcm9tIHRoZSBsb2NhbCBvclxuZ2xvYmFsIG5hbWVzcGFjZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIG5hbWUgb2NjdXJzIGluIGEgImdsb2JhbCJcbnN0YXRlbWVudCBpbiB0aGUgc2FtZSBjb2RlIGJsb2NrLiAgSWYgdGhlIG5hbWUgaXMgdW5ib3VuZCwgYVxuIk5hbWVFcnJvciIgZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2VkLlxuXG5JdCBpcyBpbGxlZ2FsIHRvIGRlbGV0ZSBhIG5hbWUgZnJvbSB0aGUgbG9jYWwgbmFtZXNwYWNlIGlmIGl0IG9jY3Vyc1xuYXMgYSBmcmVlIHZhcmlhYmxlIGluIGEgbmVzdGVkIGJsb2NrLlxuXG5EZWxldGlvbiBvZiBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgc3Vic2NyaXB0aW9ucyBhbmQgc2xpY2luZ3MgaXMgcGFzc2VkXG50byB0aGUgcHJpbWFyeSBvYmplY3QgaW52b2x2ZWQ7IGRlbGV0aW9uIG9mIGEgc2xpY2luZyBpcyBpbiBnZW5lcmFsXG5lcXVpdmFsZW50IHRvIGFzc2lnbm1lbnQgb2YgYW4gZW1wdHkgc2xpY2Ugb2YgdGhlIHJpZ2h0IHR5cGUgKGJ1dCBldmVuXG50aGlzIGlzIGRldGVybWluZWQgYnkgdGhlIHNsaWNlZCBvYmplY3QpLlxuJywKLSAnZGljdCc6IHUnXG5EaWN0aW9uYXJ5IGRpc3BsYXlzXG4qKioqKioqKioqKioqKioqKioqXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGtleS9kYXR1bSBwYWlyc1xuZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzOlxuXG4gICBkaWN0X2Rpc3BsYXkgICAgICAgOjo9ICJ7IiBba2V5X2RhdHVtX2xpc3QgfCBkaWN0X2NvbXByZWhlbnNpb25dICJ9IlxuICAga2V5X2RhdHVtX2xpc3QgICAgIDo6PSBrZXlfZGF0dW0gKCIsIiBrZXlfZGF0dW0pKiBbIiwiXVxuICAga2V5X2RhdHVtICAgICAgICAgIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uXG4gICBkaWN0X2NvbXByZWhlbnNpb24gOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gY29tcF9mb3JcblxuQSBkaWN0aW9uYXJ5IGRpc3BsYXkgeWllbGRzIGEgbmV3IGRpY3Rpb25hcnkgb2JqZWN0LlxuXG5JZiBhIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZSBvZiBrZXkvZGF0dW0gcGFpcnMgaXMgZ2l2ZW4sIHRoZXkgYXJlXG5ldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHRvIGRlZmluZSB0aGUgZW50cmllcyBvZiB0aGUgZGljdGlvbmFyeTpcbmVhY2gga2V5IG9iamVjdCBpcyB1c2VkIGFzIGEga2V5IGludG8gdGhlIGRpY3Rpb25hcnkgdG8gc3RvcmUgdGhlXG5jb3JyZXNwb25kaW5nIGRhdHVtLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gc3BlY2lmeSB0aGUgc2FtZSBrZXlcbm11bHRpcGxlIHRpbWVzIGluIHRoZSBrZXkvZGF0dW0gbGlzdCwgYW5kIHRoZSBmaW5hbCBkaWN0aW9uYXJ5XCdzIHZhbHVlXG5mb3IgdGhhdCBrZXkgd2lsbCBiZSB0aGUgbGFzdCBvbmUgZ2l2ZW4uXG5cbkEgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG5uZWVkcyB0d28gZXhwcmVzc2lvbnMgc2VwYXJhdGVkIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSB0aGUgdXN1YWxcbiJmb3IiIGFuZCAiaWYiIGNsYXVzZXMuIFdoZW4gdGhlIGNvbXByZWhlbnNpb24gaXMgcnVuLCB0aGUgcmVzdWx0aW5nXG5rZXkgYW5kIHZhbHVlIGVsZW1lbnRzIGFyZSBpbnNlcnRlZCBpbiB0aGUgbmV3IGRpY3Rpb25hcnkgaW4gdGhlIG9yZGVyXG50aGV5IGFyZSBwcm9kdWNlZC5cblxuUmVzdHJpY3Rpb25zIG9uIHRoZSB0eXBlcyBvZiB0aGUga2V5IHZhbHVlcyBhcmUgbGlzdGVkIGVhcmxpZXIgaW5cbnNlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5LiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSB0eXBlXG5zaG91bGQgYmUgKmhhc2hhYmxlKiwgd2hpY2ggZXhjbHVkZXMgYWxsIG11dGFibGUgb2JqZWN0cy4pICBDbGFzaGVzXG5iZXR3ZWVuIGR1cGxpY2F0ZSBrZXlzIGFyZSBub3QgZGV0ZWN0ZWQ7IHRoZSBsYXN0IGRhdHVtICh0ZXh0dWFsbHlcbnJpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCi0gJ2R5bmFtaWMtZmVhdHVyZXMnOiB1J1xuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImltcG9ydCAqIiAtLS0gaXMgdXNlZCBpbiBhXG5mdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG9yIGlzIGEgbmVzdGVkIGJsb2NrIHdpdGggZnJlZVxudmFyaWFibGVzLCB0aGUgY29tcGlsZXIgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cbklmICJleGVjIiBpcyB1c2VkIGluIGEgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyBhXG5uZXN0ZWQgYmxvY2sgd2l0aCBmcmVlIHZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYVxuIlN5bnRheEVycm9yIiB1bmxlc3MgdGhlIGV4ZWMgZXhwbGljaXRseSBzcGVjaWZpZXMgdGhlIGxvY2FsIG5hbWVzcGFjZVxuZm9yIHRoZSAiZXhlYyIuICAoSW4gb3RoZXIgd29yZHMsICJleGVjIG9iaiIgd291bGQgYmUgaWxsZWdhbCwgYnV0XG4iZXhlYyBvYmogaW4gbnMiIHdvdWxkIGJlIGxlZ2FsLilcblxuVGhlICJldmFsKCkiLCAiZXhlY2ZpbGUoKSIsIGFuZCAiaW5wdXQoKSIgZnVuY3Rpb25zIGFuZCB0aGUgImV4ZWMiXG5zdGF0ZW1lbnQgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsIGVudmlyb25tZW50IGZvciByZXNvbHZpbmdcbm5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbCBhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2ZcbnRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZ1xubmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuIFsxXSBUaGUgImV4ZWMiIHN0YXRlbWVudCBhbmRcbnRoZSAiZXZhbCgpIiBhbmQgImV4ZWNmaWxlKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAotICdlbHNlJzogdSdcblRoZSAiaWYiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqXG5cblRoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuIG9wZXJhdGlvbnNcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAotICdleGNlcHRpb25zJzogdSdcbkV4Y2VwdGlvbnNcbioqKioqKioqKipcblxuRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mIGNvbnRyb2xcbm9mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG5jb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZXJyb3IgaXNcbmRldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yIGJ5IGFueVxuY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayB3aGVyZVxudGhlIGVycm9yIG9jY3VycmVkLlxuXG5UaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgcnVuLXRpbWVcbmVycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuIEV4Y2VwdGlvblxuaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgVGhlXG4iZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBjbGVhbnVwXG5jb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgd2hldGhlciBhblxuZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG5cblB5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiBleGNlcHRpb25cbmhhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiBvdXRlclxubGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5IHRoZVxuZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mIGNvZGVcbmZyb20gdGhlIHRvcCkuXG5cbldoZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyIHRlcm1pbmF0ZXNcbmV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiBsb29wLiAgSW5cbmVpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSBleGNlcHRpb24gaXNcbiJTeXN0ZW1FeGl0Ii5cblxuRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgY2xhdXNlIGlzXG5zZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCByZWZlcmVuY2UgdGhlXG5jbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgY2FuIGJlXG5yZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG5leGNlcHRpb25hbCBjb25kaXRpb24uXG5cbkV4Y2VwdGlvbnMgY2FuIGFsc28gYmUgaWRlbnRpZmllZCBieSBzdHJpbmdzLCBpbiB3aGljaCBjYXNlIHRoZVxuImV4Y2VwdCIgY2xhdXNlIGlzIHNlbGVjdGVkIGJ5IG9iamVjdCBpZGVudGl0eS4gIEFuIGFyYml0cmFyeSB2YWx1ZVxuY2FuIGJlIHJhaXNlZCBhbG9uZyB3aXRoIHRoZSBpZGVudGlmeWluZyBzdHJpbmcgd2hpY2ggY2FuIGJlIHBhc3NlZCB0b1xudGhlIGhhbmRsZXIuXG5cbk5vdGU6IE1lc3NhZ2VzIHRvIGV4Y2VwdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSB0cnlcbnN0YXRlbWVudCBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgcmFpc2Ugc3RhdGVtZW50LlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGJ5XG4gICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgaXNcbiAgICBjb21waWxlZC5cbicsCi0gJ2V4ZWMnOiB1J1xuVGhlICJleGVjIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGV4ZWNfc3RtdCA6Oj0gImV4ZWMiIG9yX2V4cHIgWyJpbiIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXVxuXG5UaGlzIHN0YXRlbWVudCBzdXBwb3J0cyBkeW5hbWljIGV4ZWN1dGlvbiBvZiBQeXRob24gY29kZS4gIFRoZSBmaXJzdFxuZXhwcmVzc2lvbiBzaG91bGQgZXZhbHVhdGUgdG8gZWl0aGVyIGEgVW5pY29kZSBzdHJpbmcsIGEgKkxhdGluLTEqXG5lbmNvZGVkIHN0cmluZywgYW4gb3BlbiBmaWxlIG9iamVjdCwgYSBjb2RlIG9iamVjdCwgb3IgYSB0dXBsZS4gIElmIGl0XG5pcyBhIHN0cmluZywgdGhlIHN0cmluZyBpcyBwYXJzZWQgYXMgYSBzdWl0ZSBvZiBQeXRob24gc3RhdGVtZW50c1xud2hpY2ggaXMgdGhlbiBleGVjdXRlZCAodW5sZXNzIGEgc3ludGF4IGVycm9yIG9jY3VycykuIFsxXSBJZiBpdCBpcyBhblxub3BlbiBmaWxlLCB0aGUgZmlsZSBpcyBwYXJzZWQgdW50aWwgRU9GIGFuZCBleGVjdXRlZC4gSWYgaXQgaXMgYSBjb2RlXG5vYmplY3QsIGl0IGlzIHNpbXBseSBleGVjdXRlZC4gIEZvciB0aGUgaW50ZXJwcmV0YXRpb24gb2YgYSB0dXBsZSwgc2VlXG5iZWxvdy4gIEluIGFsbCBjYXNlcywgdGhlIGNvZGUgdGhhdFwncyBleGVjdXRlZCBpcyBleHBlY3RlZCB0byBiZSB2YWxpZFxuYXMgZmlsZSBpbnB1dCAoc2VlIHNlY3Rpb24gRmlsZSBpbnB1dCkuICBCZSBhd2FyZSB0aGF0IHRoZSAicmV0dXJuIlxuYW5kICJ5aWVsZCIgc3RhdGVtZW50cyBtYXkgbm90IGJlIHVzZWQgb3V0c2lkZSBvZiBmdW5jdGlvbiBkZWZpbml0aW9uc1xuZXZlbiB3aXRoaW4gdGhlIGNvbnRleHQgb2YgY29kZSBwYXNzZWQgdG8gdGhlICJleGVjIiBzdGF0ZW1lbnQuXG5cbkluIGFsbCBjYXNlcywgaWYgdGhlIG9wdGlvbmFsIHBhcnRzIGFyZSBvbWl0dGVkLCB0aGUgY29kZSBpcyBleGVjdXRlZFxuaW4gdGhlIGN1cnJlbnQgc2NvcGUuICBJZiBvbmx5IHRoZSBmaXJzdCBleHByZXNzaW9uIGFmdGVyICJpbiIgaXNcbnNwZWNpZmllZCwgaXQgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSwgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciBib3RoIHRoZVxuZ2xvYmFsIGFuZCB0aGUgbG9jYWwgdmFyaWFibGVzLiAgSWYgdHdvIGV4cHJlc3Npb25zIGFyZSBnaXZlbiwgdGhleVxuYXJlIHVzZWQgZm9yIHRoZSBnbG9iYWwgYW5kIGxvY2FsIHZhcmlhYmxlcywgcmVzcGVjdGl2ZWx5LiBJZlxucHJvdmlkZWQsICpsb2NhbHMqIGNhbiBiZSBhbnkgbWFwcGluZyBvYmplY3QuIFJlbWVtYmVyIHRoYXQgYXQgbW9kdWxlXG5sZXZlbCwgZ2xvYmFscyBhbmQgbG9jYWxzIGFyZSB0aGUgc2FtZSBkaWN0aW9uYXJ5LiBJZiB0d28gc2VwYXJhdGVcbm9iamVjdHMgYXJlIGdpdmVuIGFzICpnbG9iYWxzKiBhbmQgKmxvY2FscyosIHRoZSBjb2RlIHdpbGwgYmUgZXhlY3V0ZWRcbmFzIGlmIGl0IHdlcmUgZW1iZWRkZWQgaW4gYSBjbGFzcyBkZWZpbml0aW9uLlxuXG5UaGUgZmlyc3QgZXhwcmVzc2lvbiBtYXkgYWxzbyBiZSBhIHR1cGxlIG9mIGxlbmd0aCAyIG9yIDMuICBJbiB0aGlzXG5jYXNlLCB0aGUgb3B0aW9uYWwgcGFydHMgbXVzdCBiZSBvbWl0dGVkLiAgVGhlIGZvcm0gImV4ZWMoZXhwcixcbmdsb2JhbHMpIiBpcyBlcXVpdmFsZW50IHRvICJleGVjIGV4cHIgaW4gZ2xvYmFscyIsIHdoaWxlIHRoZSBmb3JtXG4iZXhlYyhleHByLCBnbG9iYWxzLCBsb2NhbHMpIiBpcyBlcXVpdmFsZW50IHRvICJleGVjIGV4cHIgaW4gZ2xvYmFscyxcbmxvY2FscyIuICBUaGUgdHVwbGUgZm9ybSBvZiAiZXhlYyIgcHJvdmlkZXMgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvblxuMywgd2hlcmUgImV4ZWMiIGlzIGEgZnVuY3Rpb24gcmF0aGVyIHRoYW4gYSBzdGF0ZW1lbnQuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAyLjQ6IEZvcm1lcmx5LCAqbG9jYWxzKiB3YXMgcmVxdWlyZWQgdG8gYmUgYVxuZGljdGlvbmFyeS5cblxuQXMgYSBzaWRlIGVmZmVjdCwgYW4gaW1wbGVtZW50YXRpb24gbWF5IGluc2VydCBhZGRpdGlvbmFsIGtleXMgaW50b1xudGhlIGRpY3Rpb25hcmllcyBnaXZlbiBiZXNpZGVzIHRob3NlIGNvcnJlc3BvbmRpbmcgdG8gdmFyaWFibGUgbmFtZXNcbnNldCBieSB0aGUgZXhlY3V0ZWQgY29kZS4gIEZvciBleGFtcGxlLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBtYXlcbmFkZCBhIHJlZmVyZW5jZSB0byB0aGUgZGljdGlvbmFyeSBvZiB0aGUgYnVpbHQtaW4gbW9kdWxlICJfX2J1aWx0aW5fXyJcbnVuZGVyIHRoZSBrZXkgIl9fYnVpbHRpbnNfXyIgKCEpLlxuXG4qKlByb2dyYW1tZXJcJ3MgaGludHM6KiogZHluYW1pYyBldmFsdWF0aW9uIG9mIGV4cHJlc3Npb25zIGlzIHN1cHBvcnRlZFxuYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJldmFsKCkiLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZ2xvYmFscygpIlxuYW5kICJsb2NhbHMoKSIgcmV0dXJuIHRoZSBjdXJyZW50IGdsb2JhbCBhbmQgbG9jYWwgZGljdGlvbmFyeSxcbnJlc3BlY3RpdmVseSwgd2hpY2ggbWF5IGJlIHVzZWZ1bCB0byBwYXNzIGFyb3VuZCBmb3IgdXNlIGJ5ICJleGVjIi5cblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBOb3RlIHRoYXQgdGhlIHBhcnNlciBvbmx5IGFjY2VwdHMgdGhlIFVuaXgtc3R5bGUgZW5kIG9mIGxpbmVcbiAgICBjb252ZW50aW9uLiBJZiB5b3UgYXJlIHJlYWRpbmcgdGhlIGNvZGUgZnJvbSBhIGZpbGUsIG1ha2Ugc3VyZSB0b1xuICAgIHVzZSAqdW5pdmVyc2FsIG5ld2xpbmVzKiBtb2RlIHRvIGNvbnZlcnQgV2luZG93cyBvciBNYWMtc3R5bGVcbiAgICBuZXdsaW5lcy5cbicsCi0gJ2V4ZWNtb2RlbCc6IHUnXG5FeGVjdXRpb24gbW9kZWxcbioqKioqKioqKioqKioqKlxuXG5cbk5hbWluZyBhbmQgYmluZGluZ1xuPT09PT09PT09PT09PT09PT09XG5cbipOYW1lcyogcmVmZXIgdG8gb2JqZWN0cy4gIE5hbWVzIGFyZSBpbnRyb2R1Y2VkIGJ5IG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy4gRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0b1xudGhlICpiaW5kaW5nKiBvZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgaW4gdGhlIGlubmVybW9zdCBmdW5jdGlvbiBibG9ja1xuY29udGFpbmluZyB0aGUgdXNlLlxuXG5BICpibG9jayogaXMgYSBwaWVjZSBvZiBQeXRob24gcHJvZ3JhbSB0ZXh0IHRoYXQgaXMgZXhlY3V0ZWQgYXMgYVxudW5pdC4gVGhlIGZvbGxvd2luZyBhcmUgYmxvY2tzOiBhIG1vZHVsZSwgYSBmdW5jdGlvbiBib2R5LCBhbmQgYSBjbGFzc1xuZGVmaW5pdGlvbi4gRWFjaCBjb21tYW5kIHR5cGVkIGludGVyYWN0aXZlbHkgaXMgYSBibG9jay4gIEEgc2NyaXB0XG5maWxlIChhIGZpbGUgZ2l2ZW4gYXMgc3RhbmRhcmQgaW5wdXQgdG8gdGhlIGludGVycHJldGVyIG9yIHNwZWNpZmllZFxub24gdGhlIGludGVycHJldGVyIGNvbW1hbmQgbGluZSB0aGUgZmlyc3QgYXJndW1lbnQpIGlzIGEgY29kZSBibG9jay5cbkEgc2NyaXB0IGNvbW1hbmQgKGEgY29tbWFuZCBzcGVjaWZpZWQgb24gdGhlIGludGVycHJldGVyIGNvbW1hbmQgbGluZVxud2l0aCB0aGUgXCcqKi1jKipcJyBvcHRpb24pIGlzIGEgY29kZSBibG9jay4gIFRoZSBmaWxlIHJlYWQgYnkgdGhlXG5idWlsdC1pbiBmdW5jdGlvbiAiZXhlY2ZpbGUoKSIgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIHN0cmluZyBhcmd1bWVudFxucGFzc2VkIHRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZXZhbCgpIiBhbmQgdG8gdGhlICJleGVjIiBzdGF0ZW1lbnRcbmlzIGEgY29kZSBibG9jay4gVGhlIGV4cHJlc3Npb24gcmVhZCBhbmQgZXZhbHVhdGVkIGJ5IHRoZSBidWlsdC1pblxuZnVuY3Rpb24gImlucHV0KCkiIGlzIGEgY29kZSBibG9jay5cblxuQSBjb2RlIGJsb2NrIGlzIGV4ZWN1dGVkIGluIGFuICpleGVjdXRpb24gZnJhbWUqLiAgQSBmcmFtZSBjb250YWluc1xuc29tZSBhZG1pbmlzdHJhdGl2ZSBpbmZvcm1hdGlvbiAodXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgZGV0ZXJtaW5lc1xud2hlcmUgYW5kIGhvdyBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSBjb2RlIGJsb2NrXCdzIGV4ZWN1dGlvbiBoYXNcbmNvbXBsZXRlZC5cblxuQSAqc2NvcGUqIGRlZmluZXMgdGhlIHZpc2liaWxpdHkgb2YgYSBuYW1lIHdpdGhpbiBhIGJsb2NrLiAgSWYgYSBsb2NhbFxudmFyaWFibGUgaXMgZGVmaW5lZCBpbiBhIGJsb2NrLCBpdHMgc2NvcGUgaW5jbHVkZXMgdGhhdCBibG9jay4gIElmIHRoZVxuZGVmaW5pdGlvbiBvY2N1cnMgaW4gYSBmdW5jdGlvbiBibG9jaywgdGhlIHNjb3BlIGV4dGVuZHMgdG8gYW55IGJsb2Nrc1xuY29udGFpbmVkIHdpdGhpbiB0aGUgZGVmaW5pbmcgb25lLCB1bmxlc3MgYSBjb250YWluZWQgYmxvY2sgaW50cm9kdWNlc1xuYSBkaWZmZXJlbnQgYmluZGluZyBmb3IgdGhlIG5hbWUuICBUaGUgc2NvcGUgb2YgbmFtZXMgZGVmaW5lZCBpbiBhXG5jbGFzcyBibG9jayBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzcyBibG9jazsgaXQgZG9lcyBub3QgZXh0ZW5kIHRvIHRoZVxuY29kZSBibG9ja3Mgb2YgbWV0aG9kcyAtLSB0aGlzIGluY2x1ZGVzIGdlbmVyYXRvciBleHByZXNzaW9ucyBzaW5jZVxudGhleSBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGVcbmZvbGxvd2luZyB3aWxsIGZhaWw6XG5cbiAgIGNsYXNzIEE6XG4gICAgICAgYSA9IDQyXG4gICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuXG5XaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlIG5lYXJlc3RcbmVuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlIGJsb2NrXG5pcyBjYWxsZWQgdGhlIGJsb2NrXCdzICplbnZpcm9ubWVudCouXG5cbklmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgYmxvY2suXG5JZiBhIG5hbWUgaXMgYm91bmQgYXQgdGhlIG1vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgdmFyaWFibGUuICAoVGhlXG52YXJpYWJsZXMgb2YgdGhlIG1vZHVsZSBjb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmIGFcbnZhcmlhYmxlIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAqZnJlZVxudmFyaWFibGUqLlxuXG5XaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG5JZiB0aGUgbmFtZSByZWZlcnMgdG8gYSBsb2NhbCB2YXJpYWJsZSB0aGF0IGhhcyBub3QgYmVlbiBib3VuZCwgYVxuIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiAgIlVuYm91bmRMb2NhbEVycm9yIiBpcyBhXG5zdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cblxuVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvIGZ1bmN0aW9ucyxcbiJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCB0aGVcbmNsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCBhcmVcbmlkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgaW4gdGhlXG5zZWNvbmQgcG9zaXRpb24gb2YgYW4gImV4Y2VwdCIgY2xhdXNlIGhlYWRlciBvciBhZnRlciAiYXMiIGluIGEgIndpdGgiXG5zdGF0ZW1lbnQuICBUaGUgImltcG9ydCIgc3RhdGVtZW50IG9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiJcbmJpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZSBpbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmdcbndpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgZm9ybSBtYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG5cbkEgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgZm9yXG50aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSBuYW1lKS4gIEl0XG5pcyBpbGxlZ2FsIHRvIHVuYmluZCBhIG5hbWUgdGhhdCBpcyByZWZlcmVuY2VkIGJ5IGFuIGVuY2xvc2luZyBzY29wZTtcbnRoZSBjb21waWxlciB3aWxsIHJlcG9ydCBhICJTeW50YXhFcnJvciIuXG5cbkVhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayBkZWZpbmVkIGJ5IGFcbmNsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlIHRvcC1sZXZlbFxuY29kZSBibG9jaykuXG5cbklmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSBibG9jaywgYWxsXG51c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byB0aGVcbmN1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkIHdpdGhpbiBhXG5ibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gbGFja3NcbmRlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyIGFueXdoZXJlXG53aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuIGJlXG5kZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy5cblxuSWYgdGhlIGdsb2JhbCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiB0aGUgbmFtZVxuc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluIHRoZVxudG9wLWxldmVsIG5hbWVzcGFjZS4gTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgbmFtZXNwYWNlIGJ5XG5zZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlXG5jb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlIG5hbWVzcGFjZVxub2YgdGhlIG1vZHVsZSAiX19idWlsdGluX18iLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgZmlyc3QuXG5JZiB0aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgc2VhcmNoZWQuXG5UaGUgZ2xvYmFsIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG5cblRoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlIGJsb2NrXG5pcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyBnbG9iYWxcbm5hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgbGF0dGVyIGNhc2VcbnRoZSBtb2R1bGVcJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICJfX21haW5fXyJcbm1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiX19idWlsdGluX18iIChub3RlOiBub1xuXCdzXCcpOyB3aGVuIGluIGFueSBvdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGVcbmRpY3Rpb25hcnkgb2YgdGhlICJfX2J1aWx0aW5fXyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZVxuc2V0IHRvIGEgdXNlci1jcmVhdGVkIGRpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWRcbmV4ZWN1dGlvbi5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4iX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbndhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICJpbXBvcnQiXG50aGUgIl9fYnVpbHRpbl9fIiAobm8gXCdzXCcpIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzXG5hcHByb3ByaWF0ZWx5LlxuXG5UaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgYVxubW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgY2FsbGVkXG4iX19tYWluX18iLlxuXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyBvcGVyYXRpb25cbmluIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgdmFyaWFibGVcbmNvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhIGdsb2JhbC5cblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lXG5uYW1lcy4gVGhlc2UgcmVmZXJlbmNlcyBmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uLlxuVGhlIG5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeVxub2YgdGhlIGNsYXNzLiAgTmFtZXMgZGVmaW5lZCBhdCB0aGUgY2xhc3Mgc2NvcGUgYXJlIG5vdCB2aXNpYmxlIGluXG5tZXRob2RzLlxuXG5cbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gdXNlZFxuaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cblxuSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCB0b1xuZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG5cbklmIHRoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJpbXBvcnQgKiIgLS0tIGlzIHVzZWQgaW4gYVxuZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyBhIG5lc3RlZCBibG9jayB3aXRoIGZyZWVcbnZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuXG5JZiAiZXhlYyIgaXMgdXNlZCBpbiBhIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gY29udGFpbnMgb3IgaXMgYVxubmVzdGVkIGJsb2NrIHdpdGggZnJlZSB2YXJpYWJsZXMsIHRoZSBjb21waWxlciB3aWxsIHJhaXNlIGFcbiJTeW50YXhFcnJvciIgdW5sZXNzIHRoZSBleGVjIGV4cGxpY2l0bHkgc3BlY2lmaWVzIHRoZSBsb2NhbCBuYW1lc3BhY2VcbmZvciB0aGUgImV4ZWMiLiAgKEluIG90aGVyIHdvcmRzLCAiZXhlYyBvYmoiIHdvdWxkIGJlIGlsbGVnYWwsIGJ1dFxuImV4ZWMgb2JqIGluIG5zIiB3b3VsZCBiZSBsZWdhbC4pXG5cblRoZSAiZXZhbCgpIiwgImV4ZWNmaWxlKCkiLCBhbmQgImlucHV0KCkiIGZ1bmN0aW9ucyBhbmQgdGhlICJleGVjIlxuc3RhdGVtZW50IGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbCBlbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nXG5uYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWwgYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mXG50aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZCBpbiB0aGUgbmVhcmVzdCBlbmNsb3Npbmdcbm5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBbMV0gVGhlICJleGVjIiBzdGF0ZW1lbnQgYW5kXG50aGUgImV2YWwoKSIgYW5kICJleGVjZmlsZSgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuXG5cbkV4Y2VwdGlvbnNcbj09PT09PT09PT1cblxuRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mIGNvbnRyb2xcbm9mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG5jb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZXJyb3IgaXNcbmRldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yIGJ5IGFueVxuY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayB3aGVyZVxudGhlIGVycm9yIG9jY3VycmVkLlxuXG5UaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgcnVuLXRpbWVcbmVycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuIEV4Y2VwdGlvblxuaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgVGhlXG4iZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBjbGVhbnVwXG5jb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgd2hldGhlciBhblxuZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG5cblB5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiBleGNlcHRpb25cbmhhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiBvdXRlclxubGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5IHRoZVxuZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mIGNvZGVcbmZyb20gdGhlIHRvcCkuXG5cbldoZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyIHRlcm1pbmF0ZXNcbmV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiBsb29wLiAgSW5cbmVpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSBleGNlcHRpb24gaXNcbiJTeXN0ZW1FeGl0Ii5cblxuRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgY2xhdXNlIGlzXG5zZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCByZWZlcmVuY2UgdGhlXG5jbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgY2FuIGJlXG5yZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG5leGNlcHRpb25hbCBjb25kaXRpb24uXG5cbkV4Y2VwdGlvbnMgY2FuIGFsc28gYmUgaWRlbnRpZmllZCBieSBzdHJpbmdzLCBpbiB3aGljaCBjYXNlIHRoZVxuImV4Y2VwdCIgY2xhdXNlIGlzIHNlbGVjdGVkIGJ5IG9iamVjdCBpZGVudGl0eS4gIEFuIGFyYml0cmFyeSB2YWx1ZVxuY2FuIGJlIHJhaXNlZCBhbG9uZyB3aXRoIHRoZSBpZGVudGlmeWluZyBzdHJpbmcgd2hpY2ggY2FuIGJlIHBhc3NlZCB0b1xudGhlIGhhbmRsZXIuXG5cbk5vdGU6IE1lc3NhZ2VzIHRvIGV4Y2VwdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgVGhlaXJcbiAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCB3aXRob3V0XG4gIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gdW5kZXJcbiAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuXG5TZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSB0cnlcbnN0YXRlbWVudCBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgcmFpc2Ugc3RhdGVtZW50LlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGJ5XG4gICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgaXNcbiAgICBjb21waWxlZC5cbicsCi0gJ2V4cHJsaXN0cyc6IHUnXG5FeHByZXNzaW9uIGxpc3RzXG4qKioqKioqKioqKioqKioqXG5cbiAgIGV4cHJlc3Npb25fbGlzdCA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG5cbkFuIGV4cHJlc3Npb24gbGlzdCBjb250YWluaW5nIGF0IGxlYXN0IG9uZSBjb21tYSB5aWVsZHMgYSB0dXBsZS4gIFRoZVxubGVuZ3RoIG9mIHRoZSB0dXBsZSBpcyB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoZSBsaXN0LiAgVGhlXG5leHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodC5cblxuVGhlIHRyYWlsaW5nIGNvbW1hIGlzIHJlcXVpcmVkIG9ubHkgdG8gY3JlYXRlIGEgc2luZ2xlIHR1cGxlIChhLmsuYS4gYVxuKnNpbmdsZXRvbiopOyBpdCBpcyBvcHRpb25hbCBpbiBhbGwgb3RoZXIgY2FzZXMuICBBIHNpbmdsZSBleHByZXNzaW9uXG53aXRob3V0IGEgdHJhaWxpbmcgY29tbWEgZG9lc25cJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgeWllbGRzIHRoZVxudmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gZW1wdHkgcGFpclxub2YgcGFyZW50aGVzZXM6ICIoKSIuKVxuJywKLSAnZmxvYXRpbmcnOiB1J1xuRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqXG5cbkZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsXG5kZWZpbml0aW9uczpcblxuICAgZmxvYXRudW1iZXIgICA6Oj0gcG9pbnRmbG9hdCB8IGV4cG9uZW50ZmxvYXRcbiAgIHBvaW50ZmxvYXQgICAgOjo9IFtpbnRwYXJ0XSBmcmFjdGlvbiB8IGludHBhcnQgIi4iXG4gICBleHBvbmVudGZsb2F0IDo6PSAoaW50cGFydCB8IHBvaW50ZmxvYXQpIGV4cG9uZW50XG4gICBpbnRwYXJ0ICAgICAgIDo6PSBkaWdpdCtcbiAgIGZyYWN0aW9uICAgICAgOjo9ICIuIiBkaWdpdCtcbiAgIGV4cG9uZW50ICAgICAgOjo9ICgiZSIgfCAiRSIpIFsiKyIgfCAiLSJdIGRpZ2l0K1xuXG5Ob3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIG9mIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgY2FuXG5sb29rIGxpa2Ugb2N0YWwgaW50ZWdlcnMsIGJ1dCBhcmUgaW50ZXJwcmV0ZWQgdXNpbmcgcmFkaXggMTAuICBGb3JcbmV4YW1wbGUsICIwNzdlMDEwIiBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWUgbnVtYmVyIGFzICI3N2UxMCIuXG5UaGUgYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpcyBpbXBsZW1lbnRhdGlvbi1cbmRlcGVuZGVudC4gU29tZSBleGFtcGxlcyBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFsczpcblxuICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICItMSJcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yICItIiBhbmQgdGhlXG5saXRlcmFsICIxIi5cbicsCi0gJ2Zvcic6IHUnXG5UaGUgImZvciIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgc2VxdWVuY2VcbihzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG5cbiAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG5vYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbnByb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIG9mIGFzY2VuZGluZyBpbmRpY2VzLiAgRWFjaFxuaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbmZvciBhc3NpZ25tZW50cywgYW5kIHRoZW4gdGhlIHN1aXRlIGlzIGV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlXG5leGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGVtcHR5KSwgdGhlIHN1aXRlXG5pbiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgbG9vcFxudGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBjb250aW51ZXNcbndpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSB3YXMgbm8gbmV4dFxuaXRlbS5cblxuVGhlIHN1aXRlIG1heSBhc3NpZ24gdG8gdGhlIHZhcmlhYmxlKHMpIGluIHRoZSB0YXJnZXQgbGlzdDsgdGhpcyBkb2VzXG5ub3QgYWZmZWN0IHRoZSBuZXh0IGl0ZW0gYXNzaWduZWQgdG8gaXQuXG5cblRoZSB0YXJnZXQgbGlzdCBpcyBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLCBidXQgaWYgdGhlXG5zZXF1ZW5jZSBpcyBlbXB0eSwgaXQgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0IGFsbCBieSB0aGVcbmxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYSBzZXF1ZW5jZSBvZlxuaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGkgOj0gYSB0byBiXG5kbyI7IGUuZy4sICJyYW5nZSgzKSIgcmV0dXJucyB0aGUgbGlzdCAiWzAsIDEsIDJdIi5cblxuTm90ZTogVGhlcmUgaXMgYSBzdWJ0bGV0eSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBiZWluZyBtb2RpZmllZCBieSB0aGVcbiAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiBBblxuICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbiAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbiAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyBtZWFuc1xuICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gdGhlXG4gIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggb2ZcbiAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmIHRoZVxuICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbiAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4gIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4gIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuXG4gICAgIGZvciB4IGluIGFbOl06XG4gICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcbicsCi0gJ2Zvcm1hdHN0cmluZ3MnOiB1J1xuRm9ybWF0IFN0cmluZyBTeW50YXhcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QgYW5kIHRoZSAiRm9ybWF0dGVyIiBjbGFzcyBzaGFyZSB0aGUgc2FtZVxuc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgIkZvcm1hdHRlciIsXG5zdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS5cblxuRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5IGN1cmx5IGJyYWNlc1xuInt9Ii4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWxcbnRleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkIHRvIGluY2x1ZGVcbmEgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkIGJ5IGRvdWJsaW5nOlxuInt7IiBhbmQgIn19Ii5cblxuVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcblxuICAgICAgcmVwbGFjZW1lbnRfZmllbGQgOjo9ICJ7IiBbZmllbGRfbmFtZV0gWyIhIiBjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbiAgICAgIGZpZWxkX25hbWUgICAgICAgIDo6PSBhcmdfbmFtZSAoIi4iIGF0dHJpYnV0ZV9uYW1lIHwgIlsiIGVsZW1lbnRfaW5kZXggIl0iKSpcbiAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4gICAgICBhdHRyaWJ1dGVfbmFtZSAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgZWxlbWVudF9pbmRleCAgICAgOjo9IGludGVnZXIgfCBpbmRleF9zdHJpbmdcbiAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJdIj4gK1xuICAgICAgY29udmVyc2lvbiAgICAgICAgOjo9ICJyIiB8ICJzIlxuICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbj5cblxuSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgd2l0aCBhXG4qZmllbGRfbmFtZSogdGhhdCBzcGVjaWZpZXMgdGhlIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB0byBiZSBmb3JtYXR0ZWRcbmFuZCBpbnNlcnRlZCBpbnRvIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiB0aGUgcmVwbGFjZW1lbnQgZmllbGQuIFRoZVxuKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qIGZpZWxkLCB3aGljaCBpc1xucHJlY2VkZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgIlwnIVwnIiwgYW5kIGEgKmZvcm1hdF9zcGVjKiwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGEgY29sb24gIlwnOlwnIi4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCBmb3JtYXQgZm9yIHRoZVxucmVwbGFjZW1lbnQgdmFsdWUuXG5cblNlZSBhbHNvIHRoZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlIHNlY3Rpb24uXG5cblRoZSAqZmllbGRfbmFtZSogaXRzZWxmIGJlZ2lucyB3aXRoIGFuICphcmdfbmFtZSogdGhhdCBpcyBlaXRoZXIgYVxubnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0XCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSBwb3NpdGlvbmFsXG5hcmd1bWVudCwgYW5kIGlmIGl0XCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQga2V5d29yZFxuYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgYXJlIDAsIDEsIDIsXG4uLi4gaW4gc2VxdWVuY2UsIHRoZXkgY2FuIGFsbCBiZSBvbWl0dGVkIChub3QganVzdCBzb21lKSBhbmQgdGhlXG5udW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCBvcmRlci5cbkJlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgcG9zc2libGUgdG9cbnNwZWNpZnkgYXJiaXRyYXJ5IGRpY3Rpb25hcnkga2V5cyAoZS5nLiwgdGhlIHN0cmluZ3MgIlwnMTBcJyIgb3JcbiJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlIGZvbGxvd2VkIGJ5IGFueVxubnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybVxuIlwnLm5hbWVcJyIgc2VsZWN0cyB0aGUgbmFtZWQgYXR0cmlidXRlIHVzaW5nICJnZXRhdHRyKCkiLCB3aGlsZSBhblxuZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwIHVzaW5nXG4iX19nZXRpdGVtX18oKSIuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAyLjc6IFRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IHNwZWNpZmllcnMgY2FuIGJlXG5vbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG5cblNvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG5cbiAgICJGaXJzdCwgdGhvdSBzaGFsdCBjb3VudCB0byB7MH0iICAjIFJlZmVyZW5jZXMgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSByZWZlcmVuY2VzIHRoZSBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byB7MX0iXG4gICAiTXkgcXVlc3QgaXMge25hbWV9IiAgICAgICAgICAgICAgIyBSZWZlcmVuY2VzIGtleXdvcmQgYXJndW1lbnQgXCduYW1lXCdcbiAgICJXZWlnaHQgaW4gdG9ucyB7MC53ZWlnaHR9IiAgICAgICAjIFwnd2VpZ2h0XCcgYXR0cmlidXRlIG9mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4gICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAgIyBGaXJzdCBlbGVtZW50IG9mIGtleXdvcmQgYXJndW1lbnQgXCdwbGF5ZXJzXCcuXG5cblRoZSAqY29udmVyc2lvbiogZmllbGQgY2F1c2VzIGEgdHlwZSBjb2VyY2lvbiBiZWZvcmUgZm9ybWF0dGluZy5cbk5vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAiX19mb3JtYXRfXygpIlxubWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzIGl0IGlzIGRlc2lyYWJsZSB0b1xuZm9yY2UgYSB0eXBlIHRvIGJlIGZvcm1hdHRlZCBhcyBhIHN0cmluZywgb3ZlcnJpZGluZyBpdHMgb3duXG5kZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhIHN0cmluZyBiZWZvcmVcbmNhbGxpbmcgIl9fZm9ybWF0X18oKSIsIHRoZSBub3JtYWwgZm9ybWF0dGluZyBsb2dpYyBpcyBieXBhc3NlZC5cblxuVHdvIGNvbnZlcnNpb24gZmxhZ3MgYXJlIGN1cnJlbnRseSBzdXBwb3J0ZWQ6ICJcJyFzXCciIHdoaWNoIGNhbGxzXG4ic3RyKCkiIG9uIHRoZSB2YWx1ZSwgYW5kICJcJyFyXCciIHdoaWNoIGNhbGxzICJyZXByKCkiLlxuXG5Tb21lIGV4YW1wbGVzOlxuXG4gICAiSGFyb2xkXCdzIGEgY2xldmVyIHswIXN9IiAgICAgICAgIyBDYWxscyBzdHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuXG5UaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSB2YWx1ZVxuc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCB3aWR0aCwgYWxpZ25tZW50LFxucGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiBkZWZpbmUgaXRzXG5vd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICpmb3JtYXRfc3BlYyouXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UsIHdoaWNoXG5pcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cblxuQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkc1xud2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIG1heSBjb250YWluIGEgZmllbGQgbmFtZSxcbmNvbnZlcnNpb24gZmxhZyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb24sIGJ1dCBkZWVwZXIgbmVzdGluZyBpcyBub3RcbmFsbG93ZWQuICBUaGUgcmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgYXJlXG5zdWJzdGl0dXRlZCBiZWZvcmUgdGhlICpmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiBUaGlzXG5hbGxvd3MgdGhlIGZvcm1hdHRpbmcgb2YgYSB2YWx1ZSB0byBiZSBkeW5hbWljYWxseSBzcGVjaWZpZWQuXG5cblNlZSB0aGUgRm9ybWF0IGV4YW1wbGVzIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG5cblxuRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZFxud2l0aGluIGEgZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWRcbihzZWUgRm9ybWF0IFN0cmluZyBTeW50YXgpLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlXG5idWlsdC1pbiAiZm9ybWF0KCkiIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93XG50aGUgZm9ybWF0IHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBmb3IgZm9ybWF0XG5zcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSBvbmx5XG5zdXBwb3J0ZWQgYnkgdGhlIG51bWVyaWMgdHlwZXMuXG5cbkEgZ2VuZXJhbCBjb252ZW50aW9uIGlzIHRoYXQgYW4gZW1wdHkgZm9ybWF0IHN0cmluZyAoIiIiIikgcHJvZHVjZXNcbnRoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCAic3RyKCkiIG9uIHRoZSB2YWx1ZS4gQSBub24tZW1wdHlcbmZvcm1hdCBzdHJpbmcgdHlwaWNhbGx5IG1vZGlmaWVzIHRoZSByZXN1bHQuXG5cblRoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6XG5cbiAgIGZvcm1hdF9zcGVjIDo6PSBbW2ZpbGxdYWxpZ25dW3NpZ25dWyNdWzBdW3dpZHRoXVssXVsucHJlY2lzaW9uXVt0eXBlXVxuICAgZmlsbCAgICAgICAgOjo9IDxhbnkgY2hhcmFjdGVyPlxuICAgYWxpZ24gICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuICAgc2lnbiAgICAgICAgOjo9ICIrIiB8ICItIiB8ICIgIlxuICAgd2lkdGggICAgICAgOjo9IGludGVnZXJcbiAgIHByZWNpc2lvbiAgIDo6PSBpbnRlZ2VyXG4gICB0eXBlICAgICAgICA6Oj0gImIiIHwgImMiIHwgImQiIHwgImUiIHwgIkUiIHwgImYiIHwgIkYiIHwgImciIHwgIkciIHwgIm4iIHwgIm8iIHwgInMiIHwgIngiIHwgIlgiIHwgIiUiXG5cbklmIGEgdmFsaWQgKmFsaWduKiB2YWx1ZSBpcyBzcGVjaWZpZWQsIGl0IGNhbiBiZSBwcmVjZWRlZCBieSBhICpmaWxsKlxuY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgc3BhY2UgaWZcbm9taXR0ZWQuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgYSBsaXRlcmFsIGN1cmx5IGJyYWNlICgiInsiIiBvclxuIiJ9IiIpIGFzIHRoZSAqZmlsbCogY2hhcmFjdGVyIHdoZW4gdXNpbmcgdGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZC5cbkhvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGluc2VydCBhIGN1cmx5IGJyYWNlIHdpdGggYSBuZXN0ZWRcbnJlcGxhY2VtZW50IGZpZWxkLiAgVGhpcyBsaW1pdGF0aW9uIGRvZXNuXCd0IGFmZmVjdCB0aGUgImZvcm1hdCgpIlxuZnVuY3Rpb24uXG5cblRoZSBtZWFuaW5nIG9mIHRoZSB2YXJpb3VzIGFsaWdubWVudCBvcHRpb25zIGlzIGFzIGZvbGxvd3M6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnPFwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG1vc3Qgb2JqZWN0cykuICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCc+XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJz1cJyIgICAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciB0aGUgc2lnbiAoaWYgYW55KSAgICB8XG4gICB8ICAgICAgICAgICB8IGJ1dCBiZWZvcmUgdGhlIGRpZ2l0cy4gIFRoaXMgaXMgdXNlZCBmb3IgcHJpbnRpbmcgZmllbGRzICAgfFxuICAgfCAgICAgICAgICAgfCBpbiB0aGUgZm9ybSBcJyswMDAwMDAxMjBcJy4gVGhpcyBhbGlnbm1lbnQgb3B0aW9uIGlzIG9ubHkgICAgfFxuICAgfCAgICAgICAgICAgfCB2YWxpZCBmb3IgbnVtZXJpYyB0eXBlcy4gIEl0IGJlY29tZXMgdGhlIGRlZmF1bHQgd2hlbiBcJzBcJyAgfFxuICAgfCAgICAgICAgICAgfCBpbW1lZGlhdGVseSBwcmVjZWRlcyB0aGUgZmllbGQgd2lkdGguICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ15cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBjZW50ZXJlZCB3aXRoaW4gdGhlIGF2YWlsYWJsZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZSB0aGF0IHVubGVzcyBhIG1pbmltdW0gZmllbGQgd2lkdGggaXMgZGVmaW5lZCwgdGhlIGZpZWxkIHdpZHRoXG53aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvIHRoYXQgdGhlXG5hbGlnbm1lbnQgb3B0aW9uIGhhcyBubyBtZWFuaW5nIGluIHRoaXMgY2FzZS5cblxuVGhlICpzaWduKiBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgbnVtYmVyIHR5cGVzLCBhbmQgY2FuIGJlIG9uZSBvZlxudGhlIGZvbGxvd2luZzpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3B0aW9uICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCcrXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgYm90aCBwb3NpdGl2ZSBhcyAgfFxuICAgfCAgICAgICAgICAgfCB3ZWxsIGFzIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJy1cJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIG9ubHkgZm9yIG5lZ2F0aXZlICAgICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMgKHRoaXMgaXMgdGhlIGRlZmF1bHQgYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSB1c2VkIG9uIHBvc2l0aXZlICB8XG4gICB8ICAgICAgICAgICB8IG51bWJlcnMsIGFuZCBhIG1pbnVzIHNpZ24gb24gbmVnYXRpdmUgbnVtYmVycy4gICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuVGhlICJcJyNcJyIgb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIGludGVnZXJzLCBhbmQgb25seSBmb3IgYmluYXJ5LFxub2N0YWwsIG9yIGhleGFkZWNpbWFsIG91dHB1dC4gIElmIHByZXNlbnQsIGl0IHNwZWNpZmllcyB0aGF0IHRoZVxub3V0cHV0IHdpbGwgYmUgcHJlZml4ZWQgYnkgIlwnMGJcJyIsICJcJzBvXCciLCBvciAiXCcweFwnIiwgcmVzcGVjdGl2ZWx5LlxuXG5UaGUgIlwnLFwnIiBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGEgY29tbWEgZm9yIGEgdGhvdXNhbmRzIHNlcGFyYXRvci5cbkZvciBhIGxvY2FsZSBhd2FyZSBzZXBhcmF0b3IsIHVzZSB0aGUgIlwnblwnIiBpbnRlZ2VyIHByZXNlbnRhdGlvbiB0eXBlXG5pbnN0ZWFkLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMi43OiBBZGRlZCB0aGUgIlwnLFwnIiBvcHRpb24gKHNlZSBhbHNvICoqUEVQIDM3OCoqKS5cblxuKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdFxuc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuXG5cbldoZW4gbm8gZXhwbGljaXQgYWxpZ25tZW50IGlzIGdpdmVuLCBwcmVjZWRpbmcgdGhlICp3aWR0aCogZmllbGQgYnkgYVxuemVybyAoIlwnMFwnIikgY2hhcmFjdGVyIGVuYWJsZXMgc2lnbi1hd2FyZSB6ZXJvLXBhZGRpbmcgZm9yIG51bWVyaWNcbnR5cGVzLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGEgKmZpbGwqIGNoYXJhY3RlciBvZiAiXCcwXCciIHdpdGggYW5cbiphbGlnbm1lbnQqIHR5cGUgb2YgIlwnPVwnIi5cblxuVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSBkaWdpdHMgc2hvdWxkXG5iZSBkaXNwbGF5ZWQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnQgZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWVcbmZvcm1hdHRlZCB3aXRoICJcJ2ZcJyIgYW5kICJcJ0ZcJyIsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIGRlY2ltYWwgcG9pbnRcbmZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoICJcJ2dcJyIgb3IgIlwnR1wnIi4gIEZvciBub24tXG5udW1iZXIgdHlwZXMgdGhlIGZpZWxkIGluZGljYXRlcyB0aGUgbWF4aW11bSBmaWVsZCBzaXplIC0gaW4gb3RoZXJcbndvcmRzLCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBmcm9tIHRoZSBmaWVsZCBjb250ZW50LiBUaGVcbipwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cblxuRmluYWxseSwgdGhlICp0eXBlKiBkZXRlcm1pbmVzIGhvdyB0aGUgZGF0YSBzaG91bGQgYmUgcHJlc2VudGVkLlxuXG5UaGUgYXZhaWxhYmxlIHN0cmluZyBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJ3NcJyIgICAgIHwgU3RyaW5nIGZvcm1hdC4gVGhpcyBpcyB0aGUgZGVmYXVsdCB0eXBlIGZvciBzdHJpbmdzIGFuZCAgICB8XG4gICB8ICAgICAgICAgICB8IG1heSBiZSBvbWl0dGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgIlwnc1wnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSBhdmFpbGFibGUgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJ2JcJyIgICAgIHwgQmluYXJ5IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMi4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdjXCciICAgICB8IENoYXJhY3Rlci4gQ29udmVydHMgdGhlIGludGVnZXIgdG8gdGhlIGNvcnJlc3BvbmRpbmcgICAgICAgfFxuICAgfCAgICAgICAgICAgfCB1bmljb2RlIGNoYXJhY3RlciBiZWZvcmUgcHJpbnRpbmcuICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2RcJyIgICAgIHwgRGVjaW1hbCBJbnRlZ2VyLiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxMC4gICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdvXCciICAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgOC4gICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwneFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgbG93ZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdYXCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDE2LCB1c2luZyB1cHBlci0gICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2RcJyIsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgdGhlIHxcbiAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlIG51bWJlciAgICB8XG4gICB8ICAgICAgICAgICB8IHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgIlwnZFwnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbkluIGFkZGl0aW9uIHRvIHRoZSBhYm92ZSBwcmVzZW50YXRpb24gdHlwZXMsIGludGVnZXJzIGNhbiBiZSBmb3JtYXR0ZWRcbndpdGggdGhlIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBsaXN0ZWQgYmVsb3cgKGV4Y2VwdCAiXCduXCciXG5hbmQgIk5vbmUiKS4gV2hlbiBkb2luZyBzbywgImZsb2F0KCkiIGlzIHVzZWQgdG8gY29udmVydCB0aGUgaW50ZWdlclxudG8gYSBmbG9hdGluZyBwb2ludCBudW1iZXIgYmVmb3JlIGZvcm1hdHRpbmcuXG5cblRoZSBhdmFpbGFibGUgcHJlc2VudGF0aW9uIHR5cGVzIGZvciBmbG9hdGluZyBwb2ludCBhbmQgZGVjaW1hbCB2YWx1ZXNcbmFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCdlXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiBzY2llbnRpZmljICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBub3RhdGlvbiB1c2luZyB0aGUgbGV0dGVyIFwnZVwnIHRvIGluZGljYXRlIHRoZSBleHBvbmVudC4gICAgfFxuICAgfCAgICAgICAgICAgfCBUaGUgZGVmYXVsdCBwcmVjaXNpb24gaXMgIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ0VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgIlwnZVwnIiBleGNlcHQgaXQgdXNlcyBhbiB1cHBlciAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBcJ0VcJyBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3Rlci4gICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ2ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIERpc3BsYXlzIHRoZSBudW1iZXIgYXMgYSBmaXhlZC1wb2ludCBudW1iZXIuICB8XG4gICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnRlwnIiAgICAgfCBGaXhlZCBwb2ludC4gU2FtZSBhcyAiXCdmXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnZ1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiAicCA+PSAxIiwgdGhpcyAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcm91bmRzIHRoZSBudW1iZXIgdG8gInAiIHNpZ25pZmljYW50IGRpZ2l0cyBhbmQgdGhlbiAgICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgZm9ybWF0IG9yIGluICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzIG1hZ25pdHVkZS4gIFRoZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzZSBydWxlcyBhcmUgYXMgZm9sbG93czogc3VwcG9zZSB0aGF0IHRoZSByZXN1bHQgICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgYW5kIHByZWNpc2lvbiAicC0xIiB8XG4gICB8ICAgICAgICAgICB8IHdvdWxkIGhhdmUgZXhwb25lbnQgImV4cCIuICBUaGVuIGlmICItNCA8PSBleHAgPCBwIiwgdGhlICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXIgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZlwnIiBhbmQgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNpb24gInAtMS1leHAiLiAgT3RoZXJ3aXNlLCB0aGUgbnVtYmVyIGlzIGZvcm1hdHRlZCAgIHxcbiAgIHwgICAgICAgICAgIHwgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCBwcmVjaXNpb24gInAtMSIuIEluIGJvdGggIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZXMgaW5zaWduaWZpY2FudCB0cmFpbGluZyB6ZXJvcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSAgICB8XG4gICB8ICAgICAgICAgICB8IHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgYWxzbyByZW1vdmVkIGlmICAgICAgfFxuICAgfCAgICAgICAgICAgfCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgaXQuICBQb3NpdGl2ZSBhbmQgIHxcbiAgIHwgICAgICAgICAgIHwgbmVnYXRpdmUgaW5maW5pdHksIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB6ZXJvLCBhbmQgbmFucywgICB8XG4gICB8ICAgICAgICAgICB8IGFyZSBmb3JtYXR0ZWQgYXMgImluZiIsICItaW5mIiwgIjAiLCAiLTAiIGFuZCAibmFuIiAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlIHByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIHxcbiAgIHwgICAgICAgICAgIHwgIjAiIGlzIHRyZWF0ZWQgYXMgZXF1aXZhbGVudCB0byBhIHByZWNpc2lvbiBvZiAiMSIuIFRoZSAgICB8XG4gICB8ICAgICAgICAgICB8IGRlZmF1bHQgcHJlY2lzaW9uIGlzICI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnR1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gU2FtZSBhcyAiXCdnXCciIGV4Y2VwdCBzd2l0Y2hlcyB0byAiXCdFXCciIGlmICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSByZXByZXNlbnRhdGlvbnMgb2YgaW5maW5pdHkgfFxuICAgfCAgICAgICAgICAgfCBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCB0b28uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2dcJyIsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgdGhlIHxcbiAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlIG51bWJlciAgICB8XG4gICB8ICAgICAgICAgICB8IHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnJVwnIiAgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwIGFuZCBkaXNwbGF5cyBpbiAgIHxcbiAgIHwgICAgICAgICAgIHwgZml4ZWQgKCJcJ2ZcJyIpIGZvcm1hdCwgZm9sbG93ZWQgYnkgYSBwZXJjZW50IHNpZ24uICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzICJcJ2dcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5cbkZvcm1hdCBleGFtcGxlc1xuPT09PT09PT09PT09PT09XG5cblRoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgInN0ci5mb3JtYXQoKSIgc3ludGF4IGFuZFxuY29tcGFyaXNvbiB3aXRoIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcuXG5cbkluIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLFxud2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlICJ7fSIgYW5kIHdpdGggIjoiIHVzZWQgaW5zdGVhZCBvZiAiJSIuIEZvclxuZXhhbXBsZSwgIlwnJTAzLjJmXCciIGNhbiBiZSB0cmFuc2xhdGVkIHRvICJcJ3s6MDMuMmZ9XCciLlxuXG5UaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCBvcHRpb25zLCBzaG93blxuaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBwb3NpdGlvbjpcblxuICAgPj4+IFwnezB9LCB7MX0sIHsyfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdhLCBiLCBjXCdcbiAgID4+PiBcJ3t9LCB7fSwge31cJy5mb3JtYXQoXCdhXCcsIFwnYlwnLCBcJ2NcJykgICMgMi43KyBvbmx5XG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3syfSwgezF9LCB7MH1cJy5mb3JtYXQoKlwnYWJjXCcpICAgICAgIyB1bnBhY2tpbmcgYXJndW1lbnQgc2VxdWVuY2VcbiAgIFwnYywgYiwgYVwnXG4gICA+Pj4gXCd7MH17MX17MH1cJy5mb3JtYXQoXCdhYnJhXCcsIFwnY2FkXCcpICAgIyBhcmd1bWVudHNcJyBpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuICAgXCdhYnJhY2FkYWJyYVwnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHMgYnkgbmFtZTpcblxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KGxhdGl0dWRlPVwnMzcuMjROXCcsIGxvbmdpdHVkZT1cJy0xMTUuODFXXCcpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcbiAgID4+PiBjb29yZCA9IHtcJ2xhdGl0dWRlXCc6IFwnMzcuMjROXCcsIFwnbG9uZ2l0dWRlXCc6IFwnLTExNS44MVdcJ31cbiAgID4+PiBcJ0Nvb3JkaW5hdGVzOiB7bGF0aXR1ZGV9LCB7bG9uZ2l0dWRlfVwnLmZvcm1hdCgqKmNvb3JkKVxuICAgXCdDb29yZGluYXRlczogMzcuMjROLCAtMTE1LjgxV1wnXG5cbkFjY2Vzc2luZyBhcmd1bWVudHNcJyBhdHRyaWJ1dGVzOlxuXG4gICA+Pj4gYyA9IDMtNWpcbiAgID4+PiAoXCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgezAucmVhbH0gXCdcbiAgIC4uLiAgXCdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LlwnKS5mb3JtYXQoYylcbiAgIFwnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0IDMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuXCdcbiAgID4+PiBjbGFzcyBQb2ludChvYmplY3QpOlxuICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgeCwgeSk6XG4gICAuLi4gICAgICAgICBzZWxmLngsIHNlbGYueSA9IHgsIHlcbiAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCdQb2ludCh7c2VsZi54fSwge3NlbGYueX0pXCcuZm9ybWF0KHNlbGY9c2VsZilcbiAgIC4uLlxuICAgPj4+IHN0cihQb2ludCg0LCAyKSlcbiAgIFwnUG9pbnQoNCwgMilcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgaXRlbXM6XG5cbiAgID4+PiBjb29yZCA9ICgzLCA1KVxuICAgPj4+IFwnWDogezBbMF19OyAgWTogezBbMV19XCcuZm9ybWF0KGNvb3JkKVxuICAgXCdYOiAzOyAgWTogNVwnXG5cblJlcGxhY2luZyAiJXMiIGFuZCAiJXIiOlxuXG4gICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiB7IXN9Ii5mb3JtYXQoXCd0ZXN0MVwnLCBcJ3Rlc3QyXCcpXG4gICAicmVwcigpIHNob3dzIHF1b3RlczogXCd0ZXN0MVwnOyBzdHIoKSBkb2VzblwndDogdGVzdDIiXG5cbkFsaWduaW5nIHRoZSB0ZXh0IGFuZCBzcGVjaWZ5aW5nIGEgd2lkdGg6XG5cbiAgID4+PiBcJ3s6PDMwfVwnLmZvcm1hdChcJ2xlZnQgYWxpZ25lZFwnKVxuICAgXCdsZWZ0IGFsaWduZWQgICAgICAgICAgICAgICAgICBcJ1xuICAgPj4+IFwnezo+MzB9XCcuZm9ybWF0KFwncmlnaHQgYWxpZ25lZFwnKVxuICAgXCcgICAgICAgICAgICAgICAgIHJpZ2h0IGFsaWduZWRcJ1xuICAgPj4+IFwnezpeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJylcbiAgIFwnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6Kl4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKSAgIyB1c2UgXCcqXCcgYXMgYSBmaWxsIGNoYXJcbiAgIFwnKioqKioqKioqKipjZW50ZXJlZCoqKioqKioqKioqXCdcblxuUmVwbGFjaW5nICIlK2YiLCAiJS1mIiwgYW5kICIlIGYiIGFuZCBzcGVjaWZ5aW5nIGEgc2lnbjpcblxuICAgPj4+IFwnezorZn07IHs6K2Z9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGl0IGFsd2F5c1xuICAgXCcrMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7OiBmfTsgezogZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgYSBzcGFjZSBmb3IgcG9zaXRpdmUgbnVtYmVyc1xuICAgXCcgMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7Oi1mfTsgezotZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgbWludXMgLS0gc2FtZSBhcyBcJ3s6Zn07IHs6Zn1cJ1xuICAgXCczLjE0MDAwMDsgLTMuMTQwMDAwXCdcblxuUmVwbGFjaW5nICIleCIgYW5kICIlbyIgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGRpZmZlcmVudCBiYXNlczpcblxuICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6eH07ICBvY3Q6IHswOm99OyAgYmluOiB7MDpifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAyYTsgIG9jdDogNTI7ICBiaW46IDEwMTAxMFwnXG4gICA+Pj4gIyB3aXRoIDB4LCAwbywgb3IgMGIgYXMgcHJlZml4OlxuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogezA6I2J9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDB4MmE7ICBvY3Q6IDBvNTI7ICBiaW46IDBiMTAxMDEwXCdcblxuVXNpbmcgdGhlIGNvbW1hIGFzIGEgdGhvdXNhbmRzIHNlcGFyYXRvcjpcblxuICAgPj4+IFwnezosfVwnLmZvcm1hdCgxMjM0NTY3ODkwKVxuICAgXCcxLDIzNCw1NjcsODkwXCdcblxuRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG5cbiAgID4+PiBwb2ludHMgPSAxOS41XG4gICA+Pj4gdG90YWwgPSAyMlxuICAgPj4+IFwnQ29ycmVjdCBhbnN3ZXJzOiB7Oi4yJX1cJy5mb3JtYXQocG9pbnRzL3RvdGFsKVxuICAgXCdDb3JyZWN0IGFuc3dlcnM6IDg4LjY0JVwnXG5cblVzaW5nIHR5cGUtc3BlY2lmaWMgZm9ybWF0dGluZzpcblxuICAgPj4+IGltcG9ydCBkYXRldGltZVxuICAgPj4+IGQgPSBkYXRldGltZS5kYXRldGltZSgyMDEwLCA3LCA0LCAxMiwgMTUsIDU4KVxuICAgPj4+IFwnezolWS0lbS0lZCAlSDolTTolU31cJy5mb3JtYXQoZClcbiAgIFwnMjAxMC0wNy0wNCAxMjoxNTo1OFwnXG5cbk5lc3RpbmcgYXJndW1lbnRzIGFuZCBtb3JlIGNvbXBsZXggZXhhbXBsZXM6XG5cbiAgID4+PiBmb3IgYWxpZ24sIHRleHQgaW4gemlwKFwnPF4+XCcsIFtcJ2xlZnRcJywgXCdjZW50ZXJcJywgXCdyaWdodFwnXSk6XG4gICAuLi4gICAgIFwnezA6e2ZpbGx9e2FsaWdufTE2fVwnLmZvcm1hdCh0ZXh0LCBmaWxsPWFsaWduLCBhbGlnbj1hbGlnbilcbiAgIC4uLlxuICAgXCdsZWZ0PDw8PDw8PDw8PDw8XCdcbiAgIFwnXl5eXl5jZW50ZXJeXl5eXlwnXG4gICBcJz4+Pj4+Pj4+Pj4+cmlnaHRcJ1xuICAgPj4+XG4gICA+Pj4gb2N0ZXRzID0gWzE5MiwgMTY4LCAwLCAxXVxuICAgPj4+IFwnezowMlh9ezowMlh9ezowMlh9ezowMlh9XCcuZm9ybWF0KCpvY3RldHMpXG4gICBcJ0MwQTgwMDAxXCdcbiAgID4+PiBpbnQoXywgMTYpXG4gICAzMjMyMjM1NTIxXG4gICA+Pj5cbiAgID4+PiB3aWR0aCA9IDVcbiAgID4+PiBmb3IgbnVtIGluIHJhbmdlKDUsMTIpOlxuICAgLi4uICAgICBmb3IgYmFzZSBpbiBcJ2RYb2JcJzpcbiAgIC4uLiAgICAgICAgIHByaW50IFwnezA6e3dpZHRofXtiYXNlfX1cJy5mb3JtYXQobnVtLCBiYXNlPWJhc2UsIHdpZHRoPXdpZHRoKSxcbiAgIC4uLiAgICAgcHJpbnRcbiAgIC4uLlxuICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbiAgICAgICA2ICAgICA2ICAgICA2ICAgMTEwXG4gICAgICAgNyAgICAgNyAgICAgNyAgIDExMVxuICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbiAgICAgICA5ICAgICA5ICAgIDExICAxMDAxXG4gICAgICAxMCAgICAgQSAgICAxMiAgMTAxMFxuICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCi0gJ2Z1bmN0aW9uJzogdSdcbkZ1bmN0aW9uIGRlZmluaXRpb25zXG4qKioqKioqKioqKioqKioqKioqKlxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgKHNlZVxuc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpOlxuXG4gICBkZWNvcmF0ZWQgICAgICA6Oj0gZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmKVxuICAgZGVjb3JhdG9ycyAgICAgOjo9IGRlY29yYXRvcitcbiAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXV0gIikiXSBORVdMSU5FXG4gICBmdW5jZGVmICAgICAgICA6Oj0gImRlZiIgZnVuY25hbWUgIigiIFtwYXJhbWV0ZXJfbGlzdF0gIikiICI6IiBzdWl0ZVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgKCAgIioiIGlkZW50aWZpZXIgWyIsIiAiKioiIGlkZW50aWZpZXJdXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKioiIGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIHN1Ymxpc3QgICAgICAgIDo6PSBwYXJhbWV0ZXIgKCIsIiBwYXJhbWV0ZXIpKiBbIiwiXVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgfCAiKCIgc3VibGlzdCAiKSJcbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlOlxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG86XG5cbiAgIGRlZiBmdW5jKCk6IHBhc3NcbiAgIGZ1bmMgPSBmMShhcmcpKGYyKGZ1bmMpKVxuXG5XaGVuIG9uZSBvciBtb3JlIHRvcC1sZXZlbCAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgKmFyZ3VtZW50KiBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSB0aGlzIGlzIGEgc3ludGFjdGljXG5yZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG5cbioqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvblxuaXMgZXhlY3V0ZWQuKiogIFRoaXMgbWVhbnMgdGhhdCB0aGUgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQgb25jZSwgd2hlblxudGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlIGlzXG51c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgd2hlbiBhXG5kZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGEgbGlzdCBvciBhIGRpY3Rpb25hcnk6XG5pZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSB0byBhXG5saXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzIGdlbmVyYWxseSBub3RcbndoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgIGlzIHRvIHVzZSAiTm9uZSIgYXMgdGhlXG5kZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb24gQ2FsbHMuXG5BIGZ1bmN0aW9uIGNhbGwgYWx3YXlzIGFzc2lnbnMgdmFsdWVzIHRvIGFsbCBwYXJhbWV0ZXJzIG1lbnRpb25lZCBpblxudGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20ga2V5d29yZFxuYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm0gIiIqaWRlbnRpZmllciIiIGlzXG5wcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIHR1cGxlIHJlY2VpdmluZyBhbnkgZXhjZXNzIHBvc2l0aW9uYWxcbnBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlIGZvcm1cbiIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcgZGljdGlvbmFyeVxucmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXcgZW1wdHlcbmRpY3Rpb25hcnkuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uIExhbWJkYXMuICBOb3RlIHRoYXQgdGhlIGxhbWJkYVxuZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiBkZWZpbml0aW9uO1xuYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgb3JcbmFzc2lnbmVkIHRvIGFub3RoZXIgbmFtZSBqdXN0IGxpa2UgYSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGEgbGFtYmRhXG5leHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlIGl0XG5hbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIiZGVmIiJcbmZvcm0gZXhlY3V0ZWQgaW5zaWRlIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgbG9jYWwgZnVuY3Rpb25cbnRoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluIHRoZVxubmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbmNvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uIE5hbWluZyBhbmQgYmluZGluZyBmb3IgZGV0YWlscy5cbicsCi0gJ2dsb2JhbCc6IHUnXG5UaGUgImdsb2JhbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGdsb2JhbF9zdG10IDo6PSAiZ2xvYmFsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaXMgYSBkZWNsYXJhdGlvbiB3aGljaCBob2xkcyBmb3IgdGhlIGVudGlyZVxuY3VycmVudCBjb2RlIGJsb2NrLiAgSXQgbWVhbnMgdGhhdCB0aGUgbGlzdGVkIGlkZW50aWZpZXJzIGFyZSB0byBiZVxuaW50ZXJwcmV0ZWQgYXMgZ2xvYmFscy4gIEl0IHdvdWxkIGJlIGltcG9zc2libGUgdG8gYXNzaWduIHRvIGEgZ2xvYmFsXG52YXJpYWJsZSB3aXRob3V0ICJnbG9iYWwiLCBhbHRob3VnaCBmcmVlIHZhcmlhYmxlcyBtYXkgcmVmZXIgdG9cbmdsb2JhbHMgd2l0aG91dCBiZWluZyBkZWNsYXJlZCBnbG9iYWwuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSB1c2VkIGluIHRoZSBzYW1lIGNvZGVcbmJsb2NrIHRleHR1YWxseSBwcmVjZWRpbmcgdGhhdCAiZ2xvYmFsIiBzdGF0ZW1lbnQuXG5cbk5hbWVzIGxpc3RlZCBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBtdXN0IG5vdCBiZSBkZWZpbmVkIGFzIGZvcm1hbFxucGFyYW1ldGVycyBvciBpbiBhICJmb3IiIGxvb3AgY29udHJvbCB0YXJnZXQsICJjbGFzcyIgZGVmaW5pdGlvbixcbmZ1bmN0aW9uIGRlZmluaXRpb24sIG9yICJpbXBvcnQiIHN0YXRlbWVudC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdFxuZW5mb3JjZSB0aGUgbGF0dGVyIHR3byByZXN0cmljdGlvbnMsIGJ1dCBwcm9ncmFtcyBzaG91bGQgbm90IGFidXNlXG50aGlzIGZyZWVkb20sIGFzIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGVuZm9yY2UgdGhlbSBvciBzaWxlbnRseVxuY2hhbmdlIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiB0aGUgImdsb2JhbCIgaXMgYSBkaXJlY3RpdmUgdG8gdGhlIHBhcnNlci4gIEl0XG5hcHBsaWVzIG9ubHkgdG8gY29kZSBwYXJzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgImdsb2JhbCJcbnN0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGFuICJleGVjIlxuc3RhdGVtZW50IGRvZXMgbm90IGFmZmVjdCB0aGUgY29kZSBibG9jayAqY29udGFpbmluZyogdGhlICJleGVjIlxuc3RhdGVtZW50LCBhbmQgY29kZSBjb250YWluZWQgaW4gYW4gImV4ZWMiIHN0YXRlbWVudCBpcyB1bmFmZmVjdGVkIGJ5XG4iZ2xvYmFsIiBzdGF0ZW1lbnRzIGluIHRoZSBjb2RlIGNvbnRhaW5pbmcgdGhlICJleGVjIiBzdGF0ZW1lbnQuICBUaGVcbnNhbWUgYXBwbGllcyB0byB0aGUgImV2YWwoKSIsICJleGVjZmlsZSgpIiBhbmQgImNvbXBpbGUoKSIgZnVuY3Rpb25zLlxuJywKLSAnaWQtY2xhc3Nlcyc6IHUnXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbiJfKiJcbiAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllciAiXyJcbiAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlXG4gICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgIl9fYnVpbHRpbl9fIiBtb2R1bGUuICBXaGVuXG4gICBub3QgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdFxuICAgZGVmaW5lZC4gU2VlIHNlY3Rpb24gVGhlIGltcG9ydCBzdGF0ZW1lbnQuXG5cbiAgIE5vdGU6IFRoZSBuYW1lICJfIiBpcyBvZnRlbiB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGhcbiAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbiAgICAgImdldHRleHQiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIGNvbnZlbnRpb24uXG5cbiJfXypfXyJcbiAgIFN5c3RlbS1kZWZpbmVkIG5hbWVzLiBUaGVzZSBuYW1lcyBhcmUgZGVmaW5lZCBieSB0aGUgaW50ZXJwcmV0ZXJcbiAgIGFuZCBpdHMgaW1wbGVtZW50YXRpb24gKGluY2x1ZGluZyB0aGUgc3RhbmRhcmQgbGlicmFyeSkuICBDdXJyZW50XG4gICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgU3BlY2lhbCBtZXRob2QgbmFtZXMgc2VjdGlvbiBhbmRcbiAgIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2ZcbiAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiAiX18qX18iIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCBkb2VzIG5vdFxuICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2Ugd2l0aG91dFxuICAgd2FybmluZy5cblxuIl9fKiJcbiAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgd2l0aGluIHRoZVxuICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhIG1hbmdsZWQgZm9ybVxuICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiBiYXNlIGFuZFxuICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiBJZGVudGlmaWVycyAoTmFtZXMpLlxuJywKLSAnaWRlbnRpZmllcnMnOiB1J1xuSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSB0aGVcbmZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBpZGVudGlmaWVyIDo6PSAobGV0dGVyfCJfIikgKGxldHRlciB8IGRpZ2l0IHwgIl8iKSpcbiAgIGxldHRlciAgICAgOjo9IGxvd2VyY2FzZSB8IHVwcGVyY2FzZVxuICAgbG93ZXJjYXNlICA6Oj0gImEiLi4uInoiXG4gICB1cHBlcmNhc2UgIDo6PSAiQSIuLi4iWiJcbiAgIGRpZ2l0ICAgICAgOjo9ICIwIi4uLiI5IlxuXG5JZGVudGlmaWVycyBhcmUgdW5saW1pdGVkIGluIGxlbmd0aC4gIENhc2UgaXMgc2lnbmlmaWNhbnQuXG5cblxuS2V5d29yZHNcbj09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgYXJlIHVzZWQgYXMgcmVzZXJ2ZWQgd29yZHMsIG9yICprZXl3b3Jkcyogb2ZcbnRoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgVGhleSBtdXN0XG5iZSBzcGVsbGVkIGV4YWN0bHkgYXMgd3JpdHRlbiBoZXJlOlxuXG4gICBhbmQgICAgICAgZGVsICAgICAgIGZyb20gICAgICBub3QgICAgICAgd2hpbGVcbiAgIGFzICAgICAgICBlbGlmICAgICAgZ2xvYmFsICAgIG9yICAgICAgICB3aXRoXG4gICBhc3NlcnQgICAgZWxzZSAgICAgIGlmICAgICAgICBwYXNzICAgICAgeWllbGRcbiAgIGJyZWFrICAgICBleGNlcHQgICAgaW1wb3J0ICAgIHByaW50XG4gICBjbGFzcyAgICAgZXhlYyAgICAgIGluICAgICAgICByYWlzZVxuICAgY29udGludWUgIGZpbmFsbHkgICBpcyAgICAgICAgcmV0dXJuXG4gICBkZWYgICAgICAgZm9yICAgICAgIGxhbWJkYSAgICB0cnlcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogIk5vbmUiIGJlY2FtZSBhIGNvbnN0YW50IGFuZCBpcyBub3cgcmVjb2duaXplZFxuYnkgdGhlIGNvbXBpbGVyIGFzIGEgbmFtZSBmb3IgdGhlIGJ1aWx0LWluIG9iamVjdCAiTm9uZSIuICBBbHRob3VnaCBpdFxuaXMgbm90IGEga2V5d29yZCwgeW91IGNhbm5vdCBhc3NpZ24gYSBkaWZmZXJlbnQgb2JqZWN0IHRvIGl0LlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMi41OiBVc2luZyAiYXMiIGFuZCAid2l0aCIgYXMgaWRlbnRpZmllcnMgdHJpZ2dlcnNcbmEgd2FybmluZy4gIFRvIHVzZSB0aGVtIGFzIGtleXdvcmRzLCBlbmFibGUgdGhlICJ3aXRoX3N0YXRlbWVudCJcbmZ1dHVyZSBmZWF0dXJlIC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNjogImFzIiBhbmQgIndpdGgiIGFyZSBmdWxsIGtleXdvcmRzLlxuXG5cblJlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlIHNwZWNpYWxcbm1lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgbGVhZGluZyBhbmRcbnRyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcblxuIl8qIlxuICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCBpZGVudGlmaWVyICJfIlxuICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGVcbiAgIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSAiX19idWlsdGluX18iIG1vZHVsZS4gIFdoZW5cbiAgIG5vdCBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90XG4gICBkZWZpbmVkLiBTZWUgc2VjdGlvbiBUaGUgaW1wb3J0IHN0YXRlbWVudC5cblxuICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuIl9fKl9fIlxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSBTcGVjaWFsIG1ldGhvZCBuYW1lcyBzZWN0aW9uIGFuZFxuICAgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZlxuICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0IGRvZXMgbm90XG4gICBmb2xsb3cgZXhwbGljaXRseSBkb2N1bWVudGVkIHVzZSwgaXMgc3ViamVjdCB0byBicmVha2FnZSB3aXRob3V0XG4gICB3YXJuaW5nLlxuXG4iX18qIlxuICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCB3aXRoaW4gdGhlXG4gICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgbWFuZ2xlZCBmb3JtXG4gICB0byBoZWxwIGF2b2lkIG5hbWUgY2xhc2hlcyBiZXR3ZWVuICJwcml2YXRlIiBhdHRyaWJ1dGVzIG9mIGJhc2UgYW5kXG4gICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uIElkZW50aWZpZXJzIChOYW1lcykuXG4nLAotICdpZic6IHUnXG5UaGUgImlmIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gQm9vbGVhbiBvcGVyYXRpb25zXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKLSAnaW1hZ2luYXJ5JzogdSdcbkltYWdpbmFyeSBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqXG5cbkltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW1hZ251bWJlciA6Oj0gKGZsb2F0bnVtYmVyIHwgaW50cGFydCkgKCJqIiB8ICJKIilcblxuQW4gaW1hZ2luYXJ5IGxpdGVyYWwgeWllbGRzIGEgY29tcGxleCBudW1iZXIgd2l0aCBhIHJlYWwgcGFydCBvZiAwLjAuXG5Db21wbGV4IG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGFzIGEgcGFpciBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzXG5hbmQgaGF2ZSB0aGUgc2FtZSByZXN0cmljdGlvbnMgb24gdGhlaXIgcmFuZ2UuICBUbyBjcmVhdGUgYSBjb21wbGV4XG5udW1iZXIgd2l0aCBhIG5vbnplcm8gcmVhbCBwYXJ0LCBhZGQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gaXQsXG5lLmcuLCAiKDMrNGopIi4gIFNvbWUgZXhhbXBsZXMgb2YgaW1hZ2luYXJ5IGxpdGVyYWxzOlxuXG4gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqXG4nLAotICdpbXBvcnQnOiB1J1xuVGhlICJpbXBvcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbiAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbiAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5JbXBvcnQgc3RhdGVtZW50cyBhcmUgZXhlY3V0ZWQgaW4gdHdvIHN0ZXBzOiAoMSkgZmluZCBhIG1vZHVsZSwgYW5kXG5pbml0aWFsaXplIGl0IGlmIG5lY2Vzc2FyeTsgKDIpIGRlZmluZSBhIG5hbWUgb3IgbmFtZXMgaW4gdGhlIGxvY2FsXG5uYW1lc3BhY2UgKG9mIHRoZSBzY29wZSB3aGVyZSB0aGUgImltcG9ydCIgc3RhdGVtZW50IG9jY3VycykuIFRoZVxuc3RhdGVtZW50IGNvbWVzIGluIHR3byBmb3JtcyBkaWZmZXJpbmcgb24gd2hldGhlciBpdCB1c2VzIHRoZSAiZnJvbSJcbmtleXdvcmQuIFRoZSBmaXJzdCBmb3JtICh3aXRob3V0ICJmcm9tIikgcmVwZWF0cyB0aGVzZSBzdGVwcyBmb3IgZWFjaFxuaWRlbnRpZmllciBpbiB0aGUgbGlzdC4gVGhlIGZvcm0gd2l0aCAiZnJvbSIgcGVyZm9ybXMgc3RlcCAoMSkgb25jZSxcbmFuZCB0aGVuIHBlcmZvcm1zIHN0ZXAgKDIpIHJlcGVhdGVkbHkuXG5cblRvIHVuZGVyc3RhbmQgaG93IHN0ZXAgKDEpIG9jY3Vycywgb25lIG11c3QgZmlyc3QgdW5kZXJzdGFuZCBob3dcblB5dGhvbiBoYW5kbGVzIGhpZXJhcmNoaWNhbCBuYW1pbmcgb2YgbW9kdWxlcy4gVG8gaGVscCBvcmdhbml6ZVxubW9kdWxlcyBhbmQgcHJvdmlkZSBhIGhpZXJhcmNoeSBpbiBuYW1pbmcsIFB5dGhvbiBoYXMgYSBjb25jZXB0IG9mXG5wYWNrYWdlcy4gQSBwYWNrYWdlIGNhbiBjb250YWluIG90aGVyIHBhY2thZ2VzIGFuZCBtb2R1bGVzIHdoaWxlXG5tb2R1bGVzIGNhbm5vdCBjb250YWluIG90aGVyIG1vZHVsZXMgb3IgcGFja2FnZXMuIEZyb20gYSBmaWxlIHN5c3RlbVxucGVyc3BlY3RpdmUsIHBhY2thZ2VzIGFyZSBkaXJlY3RvcmllcyBhbmQgbW9kdWxlcyBhcmUgZmlsZXMuXG5cbk9uY2UgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBpcyBrbm93biAodW5sZXNzIG90aGVyd2lzZSBzcGVjaWZpZWQsIHRoZVxudGVybSAibW9kdWxlIiB3aWxsIHJlZmVyIHRvIGJvdGggcGFja2FnZXMgYW5kIG1vZHVsZXMpLCBzZWFyY2hpbmcgZm9yXG50aGUgbW9kdWxlIG9yIHBhY2thZ2UgY2FuIGJlZ2luLiBUaGUgZmlyc3QgcGxhY2UgY2hlY2tlZCBpc1xuInN5cy5tb2R1bGVzIiwgdGhlIGNhY2hlIG9mIGFsbCBtb2R1bGVzIHRoYXQgaGF2ZSBiZWVuIGltcG9ydGVkXG5wcmV2aW91c2x5LiBJZiB0aGUgbW9kdWxlIGlzIGZvdW5kIHRoZXJlIHRoZW4gaXQgaXMgdXNlZCBpbiBzdGVwICgyKVxub2YgaW1wb3J0LlxuXG5JZiB0aGUgbW9kdWxlIGlzIG5vdCBmb3VuZCBpbiB0aGUgY2FjaGUsIHRoZW4gInN5cy5tZXRhX3BhdGgiIGlzXG5zZWFyY2hlZCAodGhlIHNwZWNpZmljYXRpb24gZm9yICJzeXMubWV0YV9wYXRoIiBjYW4gYmUgZm91bmQgaW4gKipQRVBcbjMwMioqKS4gVGhlIG9iamVjdCBpcyBhIGxpc3Qgb2YgKmZpbmRlciogb2JqZWN0cyB3aGljaCBhcmUgcXVlcmllZCBpblxub3JkZXIgYXMgdG8gd2hldGhlciB0aGV5IGtub3cgaG93IHRvIGxvYWQgdGhlIG1vZHVsZSBieSBjYWxsaW5nIHRoZWlyXG4iZmluZF9tb2R1bGUoKSIgbWV0aG9kIHdpdGggdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4gSWYgdGhlIG1vZHVsZVxuaGFwcGVucyB0byBiZSBjb250YWluZWQgd2l0aGluIGEgcGFja2FnZSAoYXMgZGVub3RlZCBieSB0aGUgZXhpc3RlbmNlXG5vZiBhIGRvdCBpbiB0aGUgbmFtZSksIHRoZW4gYSBzZWNvbmQgYXJndW1lbnQgdG8gImZpbmRfbW9kdWxlKCkiIGlzXG5naXZlbiBhcyB0aGUgdmFsdWUgb2YgdGhlICJfX3BhdGhfXyIgYXR0cmlidXRlIGZyb20gdGhlIHBhcmVudCBwYWNrYWdlXG4oZXZlcnl0aGluZyB1cCB0byB0aGUgbGFzdCBkb3QgaW4gdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBiZWluZ1xuaW1wb3J0ZWQpLiBJZiBhIGZpbmRlciBjYW4gZmluZCB0aGUgbW9kdWxlIGl0IHJldHVybnMgYSAqbG9hZGVyKlxuKGRpc2N1c3NlZCBsYXRlcikgb3IgcmV0dXJucyAiTm9uZSIuXG5cbklmIG5vbmUgb2YgdGhlIGZpbmRlcnMgb24gInN5cy5tZXRhX3BhdGgiIGFyZSBhYmxlIHRvIGZpbmQgdGhlIG1vZHVsZVxudGhlbiBzb21lIGltcGxpY2l0bHkgZGVmaW5lZCBmaW5kZXJzIGFyZSBxdWVyaWVkLiBJbXBsZW1lbnRhdGlvbnMgb2ZcblB5dGhvbiB2YXJ5IGluIHdoYXQgaW1wbGljaXQgbWV0YSBwYXRoIGZpbmRlcnMgYXJlIGRlZmluZWQuIFRoZSBvbmVcbnRoZXkgYWxsIGRvIGRlZmluZSwgdGhvdWdoLCBpcyBvbmUgdGhhdCBoYW5kbGVzICJzeXMucGF0aF9ob29rcyIsXG4ic3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUiLCBhbmQgInN5cy5wYXRoIi5cblxuVGhlIGltcGxpY2l0IGZpbmRlciBzZWFyY2hlcyBmb3IgdGhlIHJlcXVlc3RlZCBtb2R1bGUgaW4gdGhlICJwYXRocyJcbnNwZWNpZmllZCBpbiBvbmUgb2YgdHdvIHBsYWNlcyAoInBhdGhzIiBkbyBub3QgaGF2ZSB0byBiZSBmaWxlIHN5c3RlbVxucGF0aHMpLiBJZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzIHN1cHBvc2VkIHRvIGJlIGNvbnRhaW5lZFxud2l0aGluIGEgcGFja2FnZSB0aGVuIHRoZSBzZWNvbmQgYXJndW1lbnQgcGFzc2VkIHRvICJmaW5kX21vZHVsZSgpIixcbiJfX3BhdGhfXyIgb24gdGhlIHBhcmVudCBwYWNrYWdlLCBpcyB1c2VkIGFzIHRoZSBzb3VyY2Ugb2YgcGF0aHMuIElmXG50aGUgbW9kdWxlIGlzIG5vdCBjb250YWluZWQgaW4gYSBwYWNrYWdlIHRoZW4gInN5cy5wYXRoIiBpcyB1c2VkIGFzXG50aGUgc291cmNlIG9mIHBhdGhzLlxuXG5PbmNlIHRoZSBzb3VyY2Ugb2YgcGF0aHMgaXMgY2hvc2VuIGl0IGlzIGl0ZXJhdGVkIG92ZXIgdG8gZmluZCBhXG5maW5kZXIgdGhhdCBjYW4gaGFuZGxlIHRoYXQgcGF0aC4gVGhlIGRpY3QgYXRcbiJzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSIgY2FjaGVzIGZpbmRlcnMgZm9yIHBhdGhzIGFuZCBpcyBjaGVja2VkIGZvclxuYSBmaW5kZXIuIElmIHRoZSBwYXRoIGRvZXMgbm90IGhhdmUgYSBmaW5kZXIgY2FjaGVkIHRoZW5cbiJzeXMucGF0aF9ob29rcyIgaXMgc2VhcmNoZWQgYnkgY2FsbGluZyBlYWNoIG9iamVjdCBpbiB0aGUgbGlzdCB3aXRoIGFcbnNpbmdsZSBhcmd1bWVudCBvZiB0aGUgcGF0aCwgcmV0dXJuaW5nIGEgZmluZGVyIG9yIHJhaXNlc1xuIkltcG9ydEVycm9yIi4gSWYgYSBmaW5kZXIgaXMgcmV0dXJuZWQgdGhlbiBpdCBpcyBjYWNoZWQgaW5cbiJzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSIgYW5kIHRoZW4gdXNlZCBmb3IgdGhhdCBwYXRoIGVudHJ5LiBJZiBub1xuZmluZGVyIGNhbiBiZSBmb3VuZCBidXQgdGhlIHBhdGggZXhpc3RzIHRoZW4gYSB2YWx1ZSBvZiAiTm9uZSIgaXNcbnN0b3JlZCBpbiAic3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUiIHRvIHNpZ25pZnkgdGhhdCBhbiBpbXBsaWNpdCwgZmlsZS1cbmJhc2VkIGZpbmRlciB0aGF0IGhhbmRsZXMgbW9kdWxlcyBzdG9yZWQgYXMgaW5kaXZpZHVhbCBmaWxlcyBzaG91bGQgYmVcbnVzZWQgZm9yIHRoYXQgcGF0aC4gSWYgdGhlIHBhdGggZG9lcyBub3QgZXhpc3QgdGhlbiBhIGZpbmRlciB3aGljaFxuYWx3YXlzIHJldHVybnMgIk5vbmUiIGlzIHBsYWNlZCBpbiB0aGUgY2FjaGUgZm9yIHRoZSBwYXRoLlxuXG5JZiBubyBmaW5kZXIgY2FuIGZpbmQgdGhlIG1vZHVsZSB0aGVuICJJbXBvcnRFcnJvciIgaXMgcmFpc2VkLlxuT3RoZXJ3aXNlIHNvbWUgZmluZGVyIHJldHVybmVkIGEgbG9hZGVyIHdob3NlICJsb2FkX21vZHVsZSgpIiBtZXRob2RcbmlzIGNhbGxlZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdG8gbG9hZCAoc2VlICoqUEVQIDMwMioqIGZvciB0aGVcbm9yaWdpbmFsIGRlZmluaXRpb24gb2YgbG9hZGVycykuIEEgbG9hZGVyIGhhcyBzZXZlcmFsIHJlc3BvbnNpYmlsaXRpZXNcbnRvIHBlcmZvcm0gb24gYSBtb2R1bGUgaXQgbG9hZHMuIEZpcnN0LCBpZiB0aGUgbW9kdWxlIGFscmVhZHkgZXhpc3RzXG5pbiAic3lzLm1vZHVsZXMiIChhIHBvc3NpYmlsaXR5IGlmIHRoZSBsb2FkZXIgaXMgY2FsbGVkIG91dHNpZGUgb2YgdGhlXG5pbXBvcnQgbWFjaGluZXJ5KSB0aGVuIGl0IGlzIHRvIHVzZSB0aGF0IG1vZHVsZSBmb3IgaW5pdGlhbGl6YXRpb24gYW5kXG5ub3QgYSBuZXcgbW9kdWxlLiBCdXQgaWYgdGhlIG1vZHVsZSBkb2VzIG5vdCBleGlzdCBpbiAic3lzLm1vZHVsZXMiXG50aGVuIGl0IGlzIHRvIGJlIGFkZGVkIHRvIHRoYXQgZGljdCBiZWZvcmUgaW5pdGlhbGl6YXRpb24gYmVnaW5zLiBJZlxuYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIG9mIHRoZSBtb2R1bGUgYW5kIGl0IHdhcyBhZGRlZCB0b1xuInN5cy5tb2R1bGVzIiBpdCBpcyB0byBiZSByZW1vdmVkIGZyb20gdGhlIGRpY3QuIElmIGFuIGVycm9yIG9jY3Vyc1xuYnV0IHRoZSBtb2R1bGUgd2FzIGFscmVhZHkgaW4gInN5cy5tb2R1bGVzIiBpdCBpcyBsZWZ0IGluIHRoZSBkaWN0LlxuXG5UaGUgbG9hZGVyIG11c3Qgc2V0IHNldmVyYWwgYXR0cmlidXRlcyBvbiB0aGUgbW9kdWxlLiAiX19uYW1lX18iIGlzIHRvXG5iZSBzZXQgdG8gdGhlIG5hbWUgb2YgdGhlIG1vZHVsZS4gIl9fZmlsZV9fIiBpcyB0byBiZSB0aGUgInBhdGgiIHRvXG50aGUgZmlsZSB1bmxlc3MgdGhlIG1vZHVsZSBpcyBidWlsdC1pbiAoYW5kIHRodXMgbGlzdGVkIGluXG4ic3lzLmJ1aWx0aW5fbW9kdWxlX25hbWVzIikgaW4gd2hpY2ggY2FzZSB0aGUgYXR0cmlidXRlIGlzIG5vdCBzZXQuIElmXG53aGF0IGlzIGJlaW5nIGltcG9ydGVkIGlzIGEgcGFja2FnZSB0aGVuICJfX3BhdGhfXyIgaXMgdG8gYmUgc2V0IHRvIGFcbmxpc3Qgb2YgcGF0aHMgdG8gYmUgc2VhcmNoZWQgd2hlbiBsb29raW5nIGZvciBtb2R1bGVzIGFuZCBwYWNrYWdlc1xuY29udGFpbmVkIHdpdGhpbiB0aGUgcGFja2FnZSBiZWluZyBpbXBvcnRlZC4gIl9fcGFja2FnZV9fIiBpcyBvcHRpb25hbFxuYnV0IHNob3VsZCBiZSBzZXQgdG8gdGhlIG5hbWUgb2YgcGFja2FnZSB0aGF0IGNvbnRhaW5zIHRoZSBtb2R1bGUgb3JcbnBhY2thZ2UgKHRoZSBlbXB0eSBzdHJpbmcgaXMgdXNlZCBmb3IgbW9kdWxlIG5vdCBjb250YWluZWQgaW4gYVxucGFja2FnZSkuICJfX2xvYWRlcl9fIiBpcyBhbHNvIG9wdGlvbmFsIGJ1dCBzaG91bGQgYmUgc2V0IHRvIHRoZVxubG9hZGVyIG9iamVjdCB0aGF0IGlzIGxvYWRpbmcgdGhlIG1vZHVsZS5cblxuSWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyBsb2FkaW5nIHRoZW4gdGhlIGxvYWRlciByYWlzZXMgIkltcG9ydEVycm9yIlxuaWYgc29tZSBvdGhlciBleGNlcHRpb24gaXMgbm90IGFscmVhZHkgYmVpbmcgcHJvcGFnYXRlZC4gT3RoZXJ3aXNlIHRoZVxubG9hZGVyIHJldHVybnMgdGhlIG1vZHVsZSB0aGF0IHdhcyBsb2FkZWQgYW5kIGluaXRpYWxpemVkLlxuXG5XaGVuIHN0ZXAgKDEpIGZpbmlzaGVzIHdpdGhvdXQgcmFpc2luZyBhbiBleGNlcHRpb24sIHN0ZXAgKDIpIGNhblxuYmVnaW4uXG5cblRoZSBmaXJzdCBmb3JtIG9mICJpbXBvcnQiIHN0YXRlbWVudCBiaW5kcyB0aGUgbW9kdWxlIG5hbWUgaW4gdGhlXG5sb2NhbCBuYW1lc3BhY2UgdG8gdGhlIG1vZHVsZSBvYmplY3QsIGFuZCB0aGVuIGdvZXMgb24gdG8gaW1wb3J0IHRoZVxubmV4dCBpZGVudGlmaWVyLCBpZiBhbnkuICBJZiB0aGUgbW9kdWxlIG5hbWUgaXMgZm9sbG93ZWQgYnkgImFzIiwgdGhlXG5uYW1lIGZvbGxvd2luZyAiYXMiIGlzIHVzZWQgYXMgdGhlIGxvY2FsIG5hbWUgZm9yIHRoZSBtb2R1bGUuXG5cblRoZSAiZnJvbSIgZm9ybSBkb2VzIG5vdCBiaW5kIHRoZSBtb2R1bGUgbmFtZTogaXQgZ29lcyB0aHJvdWdoIHRoZVxubGlzdCBvZiBpZGVudGlmaWVycywgbG9va3MgZWFjaCBvbmUgb2YgdGhlbSB1cCBpbiB0aGUgbW9kdWxlIGZvdW5kIGluXG5zdGVwICgxKSwgYW5kIGJpbmRzIHRoZSBuYW1lIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgdG8gdGhlIG9iamVjdCB0aHVzXG5mb3VuZC4gIEFzIHdpdGggdGhlIGZpcnN0IGZvcm0gb2YgImltcG9ydCIsIGFuIGFsdGVybmF0ZSBsb2NhbCBuYW1lXG5jYW4gYmUgc3VwcGxpZWQgYnkgc3BlY2lmeWluZyAiImFzIiBsb2NhbG5hbWUiLiAgSWYgYSBuYW1lIGlzIG5vdFxuZm91bmQsICJJbXBvcnRFcnJvciIgaXMgcmFpc2VkLiAgSWYgdGhlIGxpc3Qgb2YgaWRlbnRpZmllcnMgaXNcbnJlcGxhY2VkIGJ5IGEgc3RhciAoIlwnKlwnIiksIGFsbCBwdWJsaWMgbmFtZXMgZGVmaW5lZCBpbiB0aGUgbW9kdWxlIGFyZVxuYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBvZiB0aGUgImltcG9ydCIgc3RhdGVtZW50Li5cblxuVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgdGhlXG5tb2R1bGVcJ3MgbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkICJfX2FsbF9fIjsgaWYgZGVmaW5lZCwgaXQgbXVzdFxuYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5IHRoYXRcbm1vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiAiX19hbGxfXyIgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyBhbmRcbmFyZSByZXF1aXJlZCB0byBleGlzdC4gIElmICJfX2FsbF9fIiBpcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiBwdWJsaWNcbm5hbWVzIGluY2x1ZGVzIGFsbCBuYW1lcyBmb3VuZCBpbiB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSB3aGljaCBkbyBub3RcbmJlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKCJcJ19cJyIpLiAiX19hbGxfXyIgc2hvdWxkIGNvbnRhaW5cbnRoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5IGV4cG9ydGluZ1xuaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggd2VyZVxuaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuXG5UaGUgImZyb20iIGZvcm0gd2l0aCAiKiIgbWF5IG9ubHkgb2NjdXIgaW4gYSBtb2R1bGUgc2NvcGUuICBJZiB0aGVcbndpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImltcG9ydCAqIiAtLS0gaXMgdXNlZCBpbiBhIGZ1bmN0aW9uIGFuZFxudGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG9yIGlzIGEgbmVzdGVkIGJsb2NrIHdpdGggZnJlZSB2YXJpYWJsZXMsIHRoZVxuY29tcGlsZXIgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cbldoZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgdGhlXG5hYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyBjb250YWluZWRcbndpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCB3aXRoaW5cbnRoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gQnlcbnVzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyICJmcm9tIiB5b3VcbmNhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG53aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxucGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgdXBcbm9uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91IGV4ZWN1dGVcbiJmcm9tIC4gaW1wb3J0IG1vZCIgZnJvbSBhIG1vZHVsZSBpbiB0aGUgInBrZyIgcGFja2FnZSB0aGVuIHlvdSB3aWxsXG5lbmQgdXAgaW1wb3J0aW5nICJwa2cubW9kIi4gSWYgeW91IGV4ZWN1dGUgImZyb20gLi5zdWJwa2cyIGltcG9ydCBtb2QiXG5mcm9tIHdpdGhpbiAicGtnLnN1YnBrZzEiIHlvdSB3aWxsIGltcG9ydCAicGtnLnN1YnBrZzIubW9kIi4gVGhlXG5zcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzIGNvbnRhaW5lZCB3aXRoaW4gKipQRVAgMzI4KiouXG5cbiJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyB0aGF0XG5kZXRlcm1pbmUgd2hpY2ggbW9kdWxlcyBuZWVkIHRvIGJlIGxvYWRlZCBkeW5hbWljYWxseS5cblxuXG5GdXR1cmUgc3RhdGVtZW50c1xuPT09PT09PT09PT09PT09PT1cblxuQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSBwYXJ0aWN1bGFyXG5tb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsIGJlXG5hdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uLiAgVGhlIGZ1dHVyZVxuc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSB2ZXJzaW9ucyBvZiBQeXRob25cbnRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gIEl0IGFsbG93cyB1c2Ugb2ZcbnRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGUgcmVsZWFzZSBpbiB3aGljaCB0aGVcbmZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cblxuICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlIFsiYXMiIG5hbWVdXG4gICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbiAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcblxuQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlIG9ubHlcbmxpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcblxuKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcblxuKiBjb21tZW50cyxcblxuKiBibGFuayBsaW5lcywgYW5kXG5cbiogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG5cblRoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAyLjYgYXJlICJ1bmljb2RlX2xpdGVyYWxzIixcbiJwcmludF9mdW5jdGlvbiIsICJhYnNvbHV0ZV9pbXBvcnQiLCAiZGl2aXNpb24iLCAiZ2VuZXJhdG9ycyIsXG4ibmVzdGVkX3Njb3BlcyIgYW5kICJ3aXRoX3N0YXRlbWVudCIuICAiZ2VuZXJhdG9ycyIsICJ3aXRoX3N0YXRlbWVudCIsXG4ibmVzdGVkX3Njb3BlcyIgYXJlIHJlZHVuZGFudCBpbiBQeXRob24gdmVyc2lvbiAyLjYgYW5kIGFib3ZlIGJlY2F1c2VcbnRoZXkgYXJlIGFsd2F5cyBlbmFibGVkLlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxudGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbmltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgY2FzZVxudGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSBuZXdcbnJlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbm1vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG5ydW50aW1lLlxuXG5Gb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzIGhhdmVcbmJlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSBzdGF0ZW1lbnRcbmNvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG5cblRoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0IHN0YXRlbWVudDpcbnRoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlICJfX2Z1dHVyZV9fIiwgZGVzY3JpYmVkIGxhdGVyLCBhbmQgaXQgd2lsbFxuYmUgaW1wb3J0ZWQgaW4gdGhlIHVzdWFsIHdheSBhdCB0aGUgdGltZSB0aGUgZnV0dXJlIHN0YXRlbWVudCBpc1xuZXhlY3V0ZWQuXG5cblRoZSBpbnRlcmVzdGluZyBydW50aW1lIHNlbWFudGljcyBkZXBlbmQgb24gdGhlIHNwZWNpZmljIGZlYXR1cmVcbmVuYWJsZWQgYnkgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuXG5cbk5vdGUgdGhhdCB0aGVyZSBpcyBub3RoaW5nIHNwZWNpYWwgYWJvdXQgdGhlIHN0YXRlbWVudDpcblxuICAgaW1wb3J0IF9fZnV0dXJlX18gW2FzIG5hbWVdXG5cblRoYXQgaXMgbm90IGEgZnV0dXJlIHN0YXRlbWVudDsgaXRcJ3MgYW4gb3JkaW5hcnkgaW1wb3J0IHN0YXRlbWVudCB3aXRoXG5ubyBzcGVjaWFsIHNlbWFudGljcyBvciBzeW50YXggcmVzdHJpY3Rpb25zLlxuXG5Db2RlIGNvbXBpbGVkIGJ5IGFuICJleGVjIiBzdGF0ZW1lbnQgb3IgY2FsbHMgdG8gdGhlIGJ1aWx0LWluXG5mdW5jdGlvbnMgImNvbXBpbGUoKSIgYW5kICJleGVjZmlsZSgpIiB0aGF0IG9jY3VyIGluIGEgbW9kdWxlICJNIlxuY29udGFpbmluZyBhIGZ1dHVyZSBzdGF0ZW1lbnQgd2lsbCwgYnkgZGVmYXVsdCwgdXNlIHRoZSBuZXcgIHN5bnRheCBvclxuc2VtYW50aWNzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZnV0dXJlIHN0YXRlbWVudC4gIFRoaXMgY2FuLCBzdGFydGluZ1xud2l0aCBQeXRob24gMi4yIGJlIGNvbnRyb2xsZWQgYnkgb3B0aW9uYWwgYXJndW1lbnRzIHRvICJjb21waWxlKCkiIC0tLVxuc2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoYXQgZnVuY3Rpb24gZm9yIGRldGFpbHMuXG5cbkEgZnV0dXJlIHN0YXRlbWVudCB0eXBlZCBhdCBhbiBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciBwcm9tcHQgd2lsbFxudGFrZSBlZmZlY3QgZm9yIHRoZSByZXN0IG9mIHRoZSBpbnRlcnByZXRlciBzZXNzaW9uLiAgSWYgYW5cbmludGVycHJldGVyIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgIi1pIiBvcHRpb24sIGlzIHBhc3NlZCBhIHNjcmlwdCBuYW1lXG50byBleGVjdXRlLCBhbmQgdGhlIHNjcmlwdCBpbmNsdWRlcyBhIGZ1dHVyZSBzdGF0ZW1lbnQsIGl0IHdpbGwgYmUgaW5cbmVmZmVjdCBpbiB0aGUgaW50ZXJhY3RpdmUgc2Vzc2lvbiBzdGFydGVkIGFmdGVyIHRoZSBzY3JpcHQgaXNcbmV4ZWN1dGVkLlxuXG5TZWUgYWxzbzpcblxuICAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cbiAgICAgVGhlIG9yaWdpbmFsIHByb3Bvc2FsIGZvciB0aGUgX19mdXR1cmVfXyBtZWNoYW5pc20uXG4nLAotICdpbic6IHUnXG5Db21wYXJpc29uc1xuKioqKioqKioqKipcblxuVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHksXG53aGljaCBpcyBsb3dlciB0aGFuIHRoYXQgb2YgYW55IGFyaXRobWV0aWMsIHNoaWZ0aW5nIG9yIGJpdHdpc2Vcbm9wZXJhdGlvbi4gIEFsc28gdW5saWtlIEMsIGV4cHJlc3Npb25zIGxpa2UgImEgPCBiIDwgYyIgaGF2ZSB0aGVcbmludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuXG4gICBjb21wYXJpc29uICAgIDo6PSBvcl9leHByICggY29tcF9vcGVyYXRvciBvcl9leHByICkqXG4gICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiPD4iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6ICJUcnVlIiBvciAiRmFsc2UiLlxuXG5Db21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiIGlzXG5lcXVpdmFsZW50IHRvICJ4IDwgeSBhbmQgeSA8PSB6IiwgZXhjZXB0IHRoYXQgInkiIGlzIGV2YWx1YXRlZCBvbmx5XG5vbmNlIChidXQgaW4gYm90aCBjYXNlcyAieiIgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiAieCA8IHkiIGlzXG5mb3VuZCB0byBiZSBmYWxzZSkuXG5cbkZvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgKm9wMSosXG4qb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gImEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4geiIsIGV4Y2VwdFxudGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0ICJhIG9wMSBiIG9wMiBjIiBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiBjb21wYXJpc29uIGJldHdlZW5cbiphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgKHRob3VnaFxucGVyaGFwcyBub3QgcHJldHR5KS5cblxuVGhlIGZvcm1zICI8PiIgYW5kICIhPSIgYXJlIGVxdWl2YWxlbnQ7IGZvciBjb25zaXN0ZW5jeSB3aXRoIEMsICIhPSJcbmlzIHByZWZlcnJlZDsgd2hlcmUgIiE9IiBpcyBtZW50aW9uZWQgYmVsb3cgIjw+IiBpcyBhbHNvIGFjY2VwdGVkLlxuVGhlICI8PiIgc3BlbGxpbmcgaXMgY29uc2lkZXJlZCBvYnNvbGVzY2VudC5cblxuVGhlIG9wZXJhdG9ycyAiPCIsICI+IiwgIj09IiwgIj49IiwgIjw9IiwgYW5kICIhPSIgY29tcGFyZSB0aGUgdmFsdWVzXG5vZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIG5lZWQgbm90IGhhdmUgdGhlIHNhbWUgdHlwZS4gSWYgYm90aCBhcmVcbm51bWJlcnMsIHRoZXkgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgT3RoZXJ3aXNlLCBvYmplY3RzIG9mXG5kaWZmZXJlbnQgdHlwZXMgKmFsd2F5cyogY29tcGFyZSB1bmVxdWFsLCBhbmQgYXJlIG9yZGVyZWQgY29uc2lzdGVudGx5XG5idXQgYXJiaXRyYXJpbHkuIFlvdSBjYW4gY29udHJvbCBjb21wYXJpc29uIGJlaGF2aW9yIG9mIG9iamVjdHMgb2Zcbm5vbi1idWlsdC1pbiB0eXBlcyBieSBkZWZpbmluZyBhICJfX2NtcF9fIiBtZXRob2Qgb3IgcmljaCBjb21wYXJpc29uXG5tZXRob2RzIGxpa2UgIl9fZ3RfXyIsIGRlc2NyaWJlZCBpbiBzZWN0aW9uIFNwZWNpYWwgbWV0aG9kIG5hbWVzLlxuXG4oVGhpcyB1bnVzdWFsIGRlZmluaXRpb24gb2YgY29tcGFyaXNvbiB3YXMgdXNlZCB0byBzaW1wbGlmeSB0aGVcbmRlZmluaXRpb24gb2Ygb3BlcmF0aW9ucyBsaWtlIHNvcnRpbmcgYW5kIHRoZSAiaW4iIGFuZCAibm90IGluIlxub3BlcmF0b3JzLiBJbiB0aGUgZnV0dXJlLCB0aGUgY29tcGFyaXNvbiBydWxlcyBmb3Igb2JqZWN0cyBvZlxuZGlmZmVyZW50IHR5cGVzIGFyZSBsaWtlbHkgdG8gY2hhbmdlLilcblxuQ29tcGFyaXNvbiBvZiBvYmplY3RzIG9mIHRoZSBzYW1lIHR5cGUgZGVwZW5kcyBvbiB0aGUgdHlwZTpcblxuKiBOdW1iZXJzIGFyZSBjb21wYXJlZCBhcml0aG1ldGljYWxseS5cblxuKiBTdHJpbmdzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpY1xuICBlcXVpdmFsZW50cyAodGhlIHJlc3VsdCBvZiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gIm9yZCgpIikgb2YgdGhlaXJcbiAgY2hhcmFjdGVycy4gVW5pY29kZSBhbmQgOC1iaXQgc3RyaW5ncyBhcmUgZnVsbHkgaW50ZXJvcGVyYWJsZSBpblxuICB0aGlzIGJlaGF2aW9yLiBbNF1cblxuKiBUdXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uXG4gIG9mIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMuICBUaGlzIG1lYW5zIHRoYXQgdG8gY29tcGFyZSBlcXVhbCwgZWFjaFxuICBlbGVtZW50IG11c3QgY29tcGFyZSBlcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZVxuICB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lIGxlbmd0aC5cblxuICBJZiBub3QgZXF1YWwsIHRoZSBzZXF1ZW5jZXMgYXJlIG9yZGVyZWQgdGhlIHNhbWUgYXMgdGhlaXIgZmlyc3RcbiAgZGlmZmVyaW5nIGVsZW1lbnRzLiAgRm9yIGV4YW1wbGUsICJjbXAoWzEsMix4XSwgWzEsMix5XSkiIHJldHVybnNcbiAgdGhlIHNhbWUgYXMgImNtcCh4LHkpIi4gIElmIHRoZSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lcyBub3RcbiAgZXhpc3QsIHRoZSBzaG9ydGVyIHNlcXVlbmNlIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCAiWzEsMl0gPFxuICBbMSwyLDNdIikuXG5cbiogTWFwcGluZ3MgKGRpY3Rpb25hcmllcykgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGVpciBzb3J0ZWRcbiAgKGtleSwgdmFsdWUpIGxpc3RzIGNvbXBhcmUgZXF1YWwuIFs1XSBPdXRjb21lcyBvdGhlciB0aGFuIGVxdWFsaXR5XG4gIGFyZSByZXNvbHZlZCBjb25zaXN0ZW50bHksIGJ1dCBhcmUgbm90IG90aGVyd2lzZSBkZWZpbmVkLiBbNl1cblxuKiBNb3N0IG90aGVyIG9iamVjdHMgb2YgYnVpbHQtaW4gdHlwZXMgY29tcGFyZSB1bmVxdWFsIHVubGVzcyB0aGV5XG4gIGFyZSB0aGUgc2FtZSBvYmplY3Q7IHRoZSBjaG9pY2Ugd2hldGhlciBvbmUgb2JqZWN0IGlzIGNvbnNpZGVyZWRcbiAgc21hbGxlciBvciBsYXJnZXIgdGhhbiBhbm90aGVyIG9uZSBpcyBtYWRlIGFyYml0cmFyaWx5IGJ1dFxuICBjb25zaXN0ZW50bHkgd2l0aGluIG9uZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtLlxuXG5UaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIGNvbGxlY3Rpb24gbWVtYmVyc2hpcC4gICJ4IGluXG5zIiBldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24gKnMqLCBhbmRcbmZhbHNlIG90aGVyd2lzZS4gICJ4IG5vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gVGhlXG5jb2xsZWN0aW9uIG1lbWJlcnNoaXAgdGVzdCBoYXMgdHJhZGl0aW9uYWxseSBiZWVuIGJvdW5kIHRvIHNlcXVlbmNlcztcbmFuIG9iamVjdCBpcyBhIG1lbWJlciBvZiBhIGNvbGxlY3Rpb24gaWYgdGhlIGNvbGxlY3Rpb24gaXMgYSBzZXF1ZW5jZVxuYW5kIGNvbnRhaW5zIGFuIGVsZW1lbnQgZXF1YWwgdG8gdGhhdCBvYmplY3QuICBIb3dldmVyLCBpdCBtYWtlIHNlbnNlXG5mb3IgbWFueSBvdGhlciBvYmplY3QgdHlwZXMgdG8gc3VwcG9ydCBtZW1iZXJzaGlwIHRlc3RzIHdpdGhvdXQgYmVpbmdcbmEgc2VxdWVuY2UuICBJbiBwYXJ0aWN1bGFyLCBkaWN0aW9uYXJpZXMgKGZvciBrZXlzKSBhbmQgc2V0cyBzdXBwb3J0XG5tZW1iZXJzaGlwIHRlc3RpbmcuXG5cbkZvciB0aGUgbGlzdCBhbmQgdHVwbGUgdHlwZXMsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgdGhlcmVcbmV4aXN0cyBhbiBpbmRleCAqaSogc3VjaCB0aGF0IGVpdGhlciAieCBpcyB5W2ldIiBvciAieCA9PSB5W2ldIiBpc1xudHJ1ZS5cblxuRm9yIHRoZSBVbmljb2RlIGFuZCBzdHJpbmcgdHlwZXMsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqXG5pcyBhIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuXG5Ob3RlLCAqeCogYW5kICp5KiBuZWVkIG5vdCBiZSB0aGUgc2FtZSB0eXBlOyBjb25zZXF1ZW50bHksICJ1XCdhYlwnIGluXG5cJ2FiY1wnIiB3aWxsIHJldHVybiAiVHJ1ZSIuIEVtcHR5IHN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGFcbnN1YnN0cmluZyBvZiBhbnkgb3RoZXIgc3RyaW5nLCBzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogUHJldmlvdXNseSwgKngqIHdhcyByZXF1aXJlZCB0byBiZSBhIHN0cmluZyBvZlxubGVuZ3RoICIxIi5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG5pbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbmRlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbiJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAoSWYgYW55IG90aGVyXG5leGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuImluIi5cblxuVGhlIG9wZXJhdG9ycyAiaXMiIGFuZCAiaXMgbm90IiB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6ICJ4IGlzIHkiIGlzXG50cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBhbmQgKnkqIGFyZSB0aGUgc2FtZSBvYmplY3QuICAieCBpcyBub3QgeSJcbnlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzddXG4nLAotICdpbnRlZ2Vycyc6IHUnXG5JbnRlZ2VyIGFuZCBsb25nIGludGVnZXIgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5JbnRlZ2VyIGFuZCBsb25nIGludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nXG5sZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBsb25naW50ZWdlciAgICA6Oj0gaW50ZWdlciAoImwiIHwgIkwiKVxuICAgaW50ZWdlciAgICAgICAgOjo9IGRlY2ltYWxpbnRlZ2VyIHwgb2N0aW50ZWdlciB8IGhleGludGVnZXIgfCBiaW5pbnRlZ2VyXG4gICBkZWNpbWFsaW50ZWdlciA6Oj0gbm9uemVyb2RpZ2l0IGRpZ2l0KiB8ICIwIlxuICAgb2N0aW50ZWdlciAgICAgOjo9ICIwIiAoIm8iIHwgIk8iKSBvY3RkaWdpdCsgfCAiMCIgb2N0ZGlnaXQrXG4gICBoZXhpbnRlZ2VyICAgICA6Oj0gIjAiICgieCIgfCAiWCIpIGhleGRpZ2l0K1xuICAgYmluaW50ZWdlciAgICAgOjo9ICIwIiAoImIiIHwgIkIiKSBiaW5kaWdpdCtcbiAgIG5vbnplcm9kaWdpdCAgIDo6PSAiMSIuLi4iOSJcbiAgIG9jdGRpZ2l0ICAgICAgIDo6PSAiMCIuLi4iNyJcbiAgIGJpbmRpZ2l0ICAgICAgIDo6PSAiMCIgfCAiMSJcbiAgIGhleGRpZ2l0ICAgICAgIDo6PSBkaWdpdCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIlxuXG5BbHRob3VnaCBib3RoIGxvd2VyIGNhc2UgIlwnbFwnIiBhbmQgdXBwZXIgY2FzZSAiXCdMXCciIGFyZSBhbGxvd2VkIGFzXG5zdWZmaXggZm9yIGxvbmcgaW50ZWdlcnMsIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGFsd2F5cyB1c2VcbiJcJ0xcJyIsIHNpbmNlIHRoZSBsZXR0ZXIgIlwnbFwnIiBsb29rcyB0b28gbXVjaCBsaWtlIHRoZSBkaWdpdCAiXCcxXCciLlxuXG5QbGFpbiBpbnRlZ2VyIGxpdGVyYWxzIHRoYXQgYXJlIGFib3ZlIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgcGxhaW5cbmludGVnZXIgKGUuZy4sIDIxNDc0ODM2NDcgd2hlbiB1c2luZyAzMi1iaXQgYXJpdGhtZXRpYykgYXJlIGFjY2VwdGVkXG5hcyBpZiB0aGV5IHdlcmUgbG9uZyBpbnRlZ2VycyBpbnN0ZWFkLiBbMV0gIFRoZXJlIGlzIG5vIGxpbWl0IGZvciBsb25nXG5pbnRlZ2VyIGxpdGVyYWxzIGFwYXJ0IGZyb20gd2hhdCBjYW4gYmUgc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuXG5cblNvbWUgZXhhbXBsZXMgb2YgcGxhaW4gaW50ZWdlciBsaXRlcmFscyAoZmlyc3Qgcm93KSBhbmQgbG9uZyBpbnRlZ2VyXG5saXRlcmFscyAoc2Vjb25kIGFuZCB0aGlyZCByb3dzKTpcblxuICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDAxNzdcbiAgIDNMICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2TCAgICAwMzc3TCAgIDB4MTAwMDAwMDAwTFxuICAgICAgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzYgICAgICAgICAgICAgMHhkZWFkYmVlZlxuJywKLSAnbGFtYmRhJzogdSdcbkxhbWJkYXNcbioqKioqKipcblxuICAgbGFtYmRhX2V4cHIgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4gICBvbGRfbGFtYmRhX2V4cHIgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IG9sZF9leHByZXNzaW9uXG5cbkxhbWJkYSBleHByZXNzaW9ucyAoc29tZXRpbWVzIGNhbGxlZCBsYW1iZGEgZm9ybXMpIGhhdmUgdGhlIHNhbWVcbnN5bnRhY3RpYyBwb3NpdGlvbiBhcyBleHByZXNzaW9ucy4gIFRoZXkgYXJlIGEgc2hvcnRoYW5kIHRvIGNyZWF0ZVxuYW5vbnltb3VzIGZ1bmN0aW9uczsgdGhlIGV4cHJlc3Npb24gImxhbWJkYSBhcmd1bWVudHM6IGV4cHJlc3Npb24iXG55aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QgYmVoYXZlcyBsaWtlIGEgZnVuY3Rpb25cbm9iamVjdCBkZWZpbmVkIHdpdGhcblxuICAgZGVmIG5hbWUoYXJndW1lbnRzKTpcbiAgICAgICByZXR1cm4gZXhwcmVzc2lvblxuXG5TZWUgc2VjdGlvbiBGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgbGlzdHMuXG5Ob3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZXhwcmVzc2lvbnMgY2Fubm90IGNvbnRhaW5cbnN0YXRlbWVudHMuXG4nLAotICdsaXN0cyc6IHUnXG5MaXN0IGRpc3BsYXlzXG4qKioqKioqKioqKioqXG5cbkEgbGlzdCBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGV4cHJlc3Npb25zIGVuY2xvc2VkIGluXG5zcXVhcmUgYnJhY2tldHM6XG5cbiAgIGxpc3RfZGlzcGxheSAgICAgICAgOjo9ICJbIiBbZXhwcmVzc2lvbl9saXN0IHwgbGlzdF9jb21wcmVoZW5zaW9uXSAiXSJcbiAgIGxpc3RfY29tcHJlaGVuc2lvbiAgOjo9IGV4cHJlc3Npb24gbGlzdF9mb3JcbiAgIGxpc3RfZm9yICAgICAgICAgICAgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgb2xkX2V4cHJlc3Npb25fbGlzdCBbbGlzdF9pdGVyXVxuICAgb2xkX2V4cHJlc3Npb25fbGlzdCA6Oj0gb2xkX2V4cHJlc3Npb24gWygiLCIgb2xkX2V4cHJlc3Npb24pKyBbIiwiXV1cbiAgIG9sZF9leHByZXNzaW9uICAgICAgOjo9IG9yX3Rlc3QgfCBvbGRfbGFtYmRhX2V4cHJcbiAgIGxpc3RfaXRlciAgICAgICAgICAgOjo9IGxpc3RfZm9yIHwgbGlzdF9pZlxuICAgbGlzdF9pZiAgICAgICAgICAgICA6Oj0gImlmIiBvbGRfZXhwcmVzc2lvbiBbbGlzdF9pdGVyXVxuXG5BIGxpc3QgZGlzcGxheSB5aWVsZHMgYSBuZXcgbGlzdCBvYmplY3QuICBJdHMgY29udGVudHMgYXJlIHNwZWNpZmllZFxuYnkgcHJvdmlkaW5nIGVpdGhlciBhIGxpc3Qgb2YgZXhwcmVzc2lvbnMgb3IgYSBsaXN0IGNvbXByZWhlbnNpb24uXG5XaGVuIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgaXMgc3VwcGxpZWQsIGl0cyBlbGVtZW50c1xuYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgYW5kIHBsYWNlZCBpbnRvIHRoZSBsaXN0IG9iamVjdCBpblxudGhhdCBvcmRlci4gIFdoZW4gYSBsaXN0IGNvbXByZWhlbnNpb24gaXMgc3VwcGxpZWQsIGl0IGNvbnNpc3RzIG9mIGFcbnNpbmdsZSBleHByZXNzaW9uIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSAiZm9yIiBjbGF1c2UgYW5kIHplcm8gb3Jcbm1vcmUgImZvciIgb3IgImlmIiBjbGF1c2VzLiAgSW4gdGhpcyBjYXNlLCB0aGUgZWxlbWVudHMgb2YgdGhlIG5ld1xubGlzdCBhcmUgdGhvc2UgdGhhdCB3b3VsZCBiZSBwcm9kdWNlZCBieSBjb25zaWRlcmluZyBlYWNoIG9mIHRoZSAiZm9yIlxub3IgImlmIiBjbGF1c2VzIGEgYmxvY2ssIG5lc3RpbmcgZnJvbSBsZWZ0IHRvIHJpZ2h0LCBhbmQgZXZhbHVhdGluZ1xudGhlIGV4cHJlc3Npb24gdG8gcHJvZHVjZSBhIGxpc3QgZWxlbWVudCBlYWNoIHRpbWUgdGhlIGlubmVybW9zdCBibG9ja1xuaXMgcmVhY2hlZCBbMV0uXG4nLAotICduYW1pbmcnOiB1J1xuTmFtaW5nIGFuZCBiaW5kaW5nXG4qKioqKioqKioqKioqKioqKipcblxuKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLiBFYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvXG50aGUgKmJpbmRpbmcqIG9mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBpbiB0aGUgaW5uZXJtb3N0IGZ1bmN0aW9uIGJsb2NrXG5jb250YWluaW5nIHRoZSB1c2UuXG5cbkEgKmJsb2NrKiBpcyBhIHBpZWNlIG9mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhXG51bml0LiBUaGUgZm9sbG93aW5nIGFyZSBibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhIGNsYXNzXG5kZWZpbml0aW9uLiBFYWNoIGNvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSBzY3JpcHRcbmZpbGUgKGEgZmlsZSBnaXZlbiBhcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3Igc3BlY2lmaWVkXG5vbiB0aGUgaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIHRoZSBmaXJzdCBhcmd1bWVudCkgaXMgYSBjb2RlIGJsb2NrLlxuQSBzY3JpcHQgY29tbWFuZCAoYSBjb21tYW5kIHNwZWNpZmllZCBvbiB0aGUgaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lXG53aXRoIHRoZSBcJyoqLWMqKlwnIG9wdGlvbikgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIGZpbGUgcmVhZCBieSB0aGVcbmJ1aWx0LWluIGZ1bmN0aW9uICJleGVjZmlsZSgpIiBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50XG5wYXNzZWQgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJldmFsKCkiIGFuZCB0byB0aGUgImV4ZWMiIHN0YXRlbWVudFxuaXMgYSBjb2RlIGJsb2NrLiBUaGUgZXhwcmVzc2lvbiByZWFkIGFuZCBldmFsdWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG5mdW5jdGlvbiAiaW5wdXQoKSIgaXMgYSBjb2RlIGJsb2NrLlxuXG5BIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lIGNvbnRhaW5zXG5zb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCBkZXRlcm1pbmVzXG53aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2tcJ3MgZXhlY3V0aW9uIGhhc1xuY29tcGxldGVkLlxuXG5BICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhIGxvY2FsXG52YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgdGhlXG5kZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgYmxvY2tzXG5jb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayBpbnRyb2R1Y2VzXG5hIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS4gIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGFcbmNsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlXG5jb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tIHRoaXMgaW5jbHVkZXMgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIHNpbmNlXG50aGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpcyBtZWFucyB0aGF0IHRoZVxuZm9sbG93aW5nIHdpbGwgZmFpbDpcblxuICAgY2xhc3MgQTpcbiAgICAgICBhID0gNDJcbiAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG5cbldoZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgbmVhcmVzdFxuZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgYmxvY2tcbmlzIGNhbGxlZCB0aGUgYmxvY2tcJ3MgKmVudmlyb25tZW50Ki5cblxuSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCBibG9jay5cbklmIGEgbmFtZSBpcyBib3VuZCBhdCB0aGUgbW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGVcbnZhcmlhYmxlcyBvZiB0aGUgbW9kdWxlIGNvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYVxudmFyaWFibGUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlXG52YXJpYWJsZSouXG5cbldoZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbklmIHRoZSBuYW1lIHJlZmVycyB0byBhIGxvY2FsIHZhcmlhYmxlIHRoYXQgaGFzIG5vdCBiZWVuIGJvdW5kLCBhXG4iVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuICAiVW5ib3VuZExvY2FsRXJyb3IiIGlzIGFcbnN1YmNsYXNzIG9mICJOYW1lRXJyb3IiLlxuXG5UaGUgZm9sbG93aW5nIGNvbnN0cnVjdHMgYmluZCBuYW1lczogZm9ybWFsIHBhcmFtZXRlcnMgdG8gZnVuY3Rpb25zLFxuImltcG9ydCIgc3RhdGVtZW50cywgY2xhc3MgYW5kIGZ1bmN0aW9uIGRlZmluaXRpb25zICh0aGVzZSBiaW5kIHRoZVxuY2xhc3Mgb3IgZnVuY3Rpb24gbmFtZSBpbiB0aGUgZGVmaW5pbmcgYmxvY2spLCBhbmQgdGFyZ2V0cyB0aGF0IGFyZVxuaWRlbnRpZmllcnMgaWYgb2NjdXJyaW5nIGluIGFuIGFzc2lnbm1lbnQsICJmb3IiIGxvb3AgaGVhZGVyLCBpbiB0aGVcbnNlY29uZCBwb3NpdGlvbiBvZiBhbiAiZXhjZXB0IiBjbGF1c2UgaGVhZGVyIG9yIGFmdGVyICJhcyIgaW4gYSAid2l0aCJcbnN0YXRlbWVudC4gIFRoZSAiaW1wb3J0IiBzdGF0ZW1lbnQgb2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIlxuYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlIGltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZ1xud2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyBmb3JtIG1heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cblxuQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCBib3VuZCBmb3JcbnRoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlIG5hbWUpLiAgSXRcbmlzIGlsbGVnYWwgdG8gdW5iaW5kIGEgbmFtZSB0aGF0IGlzIHJlZmVyZW5jZWQgYnkgYW4gZW5jbG9zaW5nIHNjb3BlO1xudGhlIGNvbXBpbGVyIHdpbGwgcmVwb3J0IGEgIlN5bnRheEVycm9yIi5cblxuRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgYnkgYVxuY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgdG9wLWxldmVsXG5jb2RlIGJsb2NrKS5cblxuSWYgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uIG9jY3VycyBhbnl3aGVyZSB3aXRoaW4gYSBjb2RlIGJsb2NrLCBhbGxcbnVzZXMgb2YgdGhlIG5hbWUgd2l0aGluIHRoZSBibG9jayBhcmUgdHJlYXRlZCBhcyByZWZlcmVuY2VzIHRvIHRoZVxuY3VycmVudCBibG9jay4gIFRoaXMgY2FuIGxlYWQgdG8gZXJyb3JzIHdoZW4gYSBuYW1lIGlzIHVzZWQgd2l0aGluIGFcbmJsb2NrIGJlZm9yZSBpdCBpcyBib3VuZC4gVGhpcyBydWxlIGlzIHN1YnRsZS4gIFB5dGhvbiBsYWNrc1xuZGVjbGFyYXRpb25zIGFuZCBhbGxvd3MgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbnMgdG8gb2NjdXIgYW55d2hlcmVcbndpdGhpbiBhIGNvZGUgYmxvY2suICBUaGUgbG9jYWwgdmFyaWFibGVzIG9mIGEgY29kZSBibG9jayBjYW4gYmVcbmRldGVybWluZWQgYnkgc2Nhbm5pbmcgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBibG9jayBmb3IgbmFtZSBiaW5kaW5nXG5vcGVyYXRpb25zLlxuXG5JZiB0aGUgZ2xvYmFsIHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2ssIGFsbCB1c2VzIG9mIHRoZSBuYW1lXG5zcGVjaWZpZWQgaW4gdGhlIHN0YXRlbWVudCByZWZlciB0byB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgaW4gdGhlXG50b3AtbGV2ZWwgbmFtZXNwYWNlLiBOYW1lcyBhcmUgcmVzb2x2ZWQgaW4gdGhlIHRvcC1sZXZlbCBuYW1lc3BhY2UgYnlcbnNlYXJjaGluZyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgaS5lLiB0aGUgbmFtZXNwYWNlIG9mIHRoZSBtb2R1bGVcbmNvbnRhaW5pbmcgdGhlIGNvZGUgYmxvY2ssIGFuZCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlLCB0aGUgbmFtZXNwYWNlXG5vZiB0aGUgbW9kdWxlICJfX2J1aWx0aW5fXyIuICBUaGUgZ2xvYmFsIG5hbWVzcGFjZSBpcyBzZWFyY2hlZCBmaXJzdC5cbklmIHRoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyBzZWFyY2hlZC5cblRoZSBnbG9iYWwgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cblxuVGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhIGNvZGUgYmxvY2tcbmlzIGFjdHVhbGx5IGZvdW5kIGJ5IGxvb2tpbmcgdXAgdGhlIG5hbWUgIl9fYnVpbHRpbnNfXyIgaW4gaXRzIGdsb2JhbFxubmFtZXNwYWNlOyB0aGlzIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtb2R1bGUgKGluIHRoZSBsYXR0ZXIgY2FzZVxudGhlIG1vZHVsZVwncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIl9fbWFpbl9fIlxubW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJfX2J1aWx0aW5fXyIgKG5vdGU6IG5vXG5cJ3NcJyk7IHdoZW4gaW4gYW55IG90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZVxuZGljdGlvbmFyeSBvZiB0aGUgIl9fYnVpbHRpbl9fIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlXG5zZXQgdG8gYSB1c2VyLWNyZWF0ZWQgZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZFxuZXhlY3V0aW9uLlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbiJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBVc2Vyc1xud2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgImltcG9ydCJcbnRoZSAiX19idWlsdGluX18iIChubyBcJ3NcJykgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXNcbmFwcHJvcHJpYXRlbHkuXG5cblRoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgdGltZSBhXG5tb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyBjYWxsZWRcbiJfX21haW5fXyIuXG5cblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvblxuaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSB2YXJpYWJsZVxuY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgZ2xvYmFsLlxuXG5BIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCBkZWZpbmVcbm5hbWVzLiBUaGVzZSByZWZlcmVuY2VzIGZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lIHJlc29sdXRpb24uXG5UaGUgbmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5XG5vZiB0aGUgY2xhc3MuICBOYW1lcyBkZWZpbmVkIGF0IHRoZSBjbGFzcyBzY29wZSBhcmUgbm90IHZpc2libGUgaW5cbm1ldGhvZHMuXG5cblxuSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgd2hlbiB1c2VkXG5pbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuXG5JZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyBpbGxlZ2FsIHRvXG5kZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cblxuSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImltcG9ydCAqIiAtLS0gaXMgdXNlZCBpbiBhXG5mdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG9yIGlzIGEgbmVzdGVkIGJsb2NrIHdpdGggZnJlZVxudmFyaWFibGVzLCB0aGUgY29tcGlsZXIgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG5cbklmICJleGVjIiBpcyB1c2VkIGluIGEgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyBhXG5uZXN0ZWQgYmxvY2sgd2l0aCBmcmVlIHZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYVxuIlN5bnRheEVycm9yIiB1bmxlc3MgdGhlIGV4ZWMgZXhwbGljaXRseSBzcGVjaWZpZXMgdGhlIGxvY2FsIG5hbWVzcGFjZVxuZm9yIHRoZSAiZXhlYyIuICAoSW4gb3RoZXIgd29yZHMsICJleGVjIG9iaiIgd291bGQgYmUgaWxsZWdhbCwgYnV0XG4iZXhlYyBvYmogaW4gbnMiIHdvdWxkIGJlIGxlZ2FsLilcblxuVGhlICJldmFsKCkiLCAiZXhlY2ZpbGUoKSIsIGFuZCAiaW5wdXQoKSIgZnVuY3Rpb25zIGFuZCB0aGUgImV4ZWMiXG5zdGF0ZW1lbnQgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsIGVudmlyb25tZW50IGZvciByZXNvbHZpbmdcbm5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbCBhbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2ZcbnRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkIGluIHRoZSBuZWFyZXN0IGVuY2xvc2luZ1xubmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuIFsxXSBUaGUgImV4ZWMiIHN0YXRlbWVudCBhbmRcbnRoZSAiZXZhbCgpIiBhbmQgImV4ZWNmaWxlKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xub3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlIGlzXG5zcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAotICdudW1iZXJzJzogdSdcbk51bWVyaWMgbGl0ZXJhbHNcbioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIGZvdXIgdHlwZXMgb2YgbnVtZXJpYyBsaXRlcmFsczogcGxhaW4gaW50ZWdlcnMsIGxvbmdcbmludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBhbmQgaW1hZ2luYXJ5IG51bWJlcnMuICBUaGVyZSBhcmUgbm9cbmNvbXBsZXggbGl0ZXJhbHMgKGNvbXBsZXggbnVtYmVycyBjYW4gYmUgZm9ybWVkIGJ5IGFkZGluZyBhIHJlYWxcbm51bWJlciBhbmQgYW4gaW1hZ2luYXJ5IG51bWJlcikuXG5cbk5vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAiLTEiXG5pcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciBcJyItIlwnIGFuZCB0aGVcbmxpdGVyYWwgIjEiLlxuJywKLSAnbnVtZXJpYy10eXBlcyc6IHUnXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLCAicG93KCkiLCAiKioiLFxuICAgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZVxuICAgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhblxuICAgIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuICBUaGUgIl9fZGl2bW9kX18oKSJcbiAgIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgIl9fZmxvb3JkaXZfXygpIiBhbmRcbiAgICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8gIl9fdHJ1ZWRpdl9fKCkiIChkZXNjcmliZWRcbiAgIGJlbG93KS4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW5cbiAgIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluXG4gICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZSBkaXZpc2lvbiBvcGVyYXRvciAoIi8iKSBpcyBpbXBsZW1lbnRlZCBieSB0aGVzZSBtZXRob2RzLiAgVGhlXG4gICAiX190cnVlZGl2X18oKSIgbWV0aG9kIGlzIHVzZWQgd2hlbiAiX19mdXR1cmVfXy5kaXZpc2lvbiIgaXMgaW5cbiAgIGVmZmVjdCwgb3RoZXJ3aXNlICJfX2Rpdl9fKCkiIGlzIHVzZWQuICBJZiBvbmx5IG9uZSBvZiB0aGVzZSB0d29cbiAgIG1ldGhvZHMgaXMgZGVmaW5lZCwgdGhlIG9iamVjdCB3aWxsIG5vdCBzdXBwb3J0IGRpdmlzaW9uIGluIHRoZVxuICAgYWx0ZXJuYXRlIGNvbnRleHQ7ICJUeXBlRXJyb3IiIHdpbGwgYmUgcmFpc2VkIGluc3RlYWQuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIi8iLCAiJSIsICJkaXZtb2QoKSIsICJwb3coKSIsICIqKiIsXG4gICAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZCkgb3BlcmFuZHMuXG4gICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcyBub3RcbiAgIHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mXG4gICBkaWZmZXJlbnQgdHlwZXMuIFsyXSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4IC1cbiAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19yc3ViX18oKSJcbiAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICJfX3Jwb3dfXygpIiAodGhlXG4gICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZFxuICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzXG4gICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiLz0iLCAiLy89IiwgIiU9IiwgIioqPSIsICI8PD0iLFxuICAgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGVcbiAgIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaFxuICAgY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsXG4gICBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCB0byBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgInggKz0geSIsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19pYWRkX18oKSIgbWV0aG9kLFxuICAgInguX19pYWRkX18oeSkiIGlzIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXRcbiAgIGRvZXMgbm90IGRlZmluZSBhICJfX2lhZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGFuZFxuICAgInkuX19yYWRkX18oeCkiIGFyZSBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19sb25nX18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImxvbmcoKSIsIGFuZCAiZmxvYXQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19vY3RfXyhzZWxmKVxub2JqZWN0Ll9faGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJvY3QoKSIgYW5kICJoZXgoKSIuXG4gICBTaG91bGQgcmV0dXJuIGEgc3RyaW5nIHZhbHVlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLiAgQWxzbyBjYWxsZWQgd2hlbmV2ZXJcbiAgIFB5dGhvbiBuZWVkcyBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaCBhcyBpbiBzbGljaW5nKS4gIE11c3QgcmV0dXJuXG4gICBhbiBpbnRlZ2VyIChpbnQgb3IgbG9uZykuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNS5cblxub2JqZWN0Ll9fY29lcmNlX18oc2VsZiwgb3RoZXIpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm1peGVkLW1vZGUiIG51bWVyaWMgYXJpdGhtZXRpYy4gIFNob3VsZCBlaXRoZXJcbiAgIHJldHVybiBhIDItdHVwbGUgY29udGFpbmluZyAqc2VsZiogYW5kICpvdGhlciogY29udmVydGVkIHRvIGFcbiAgIGNvbW1vbiBudW1lcmljIHR5cGUsIG9yICJOb25lIiBpZiBjb252ZXJzaW9uIGlzIGltcG9zc2libGUuICBXaGVuXG4gICB0aGUgY29tbW9uIHR5cGUgd291bGQgYmUgdGhlIHR5cGUgb2YgIm90aGVyIiwgaXQgaXMgc3VmZmljaWVudCB0b1xuICAgcmV0dXJuICJOb25lIiwgc2luY2UgdGhlIGludGVycHJldGVyIHdpbGwgYWxzbyBhc2sgdGhlIG90aGVyIG9iamVjdFxuICAgdG8gYXR0ZW1wdCBhIGNvZXJjaW9uIChidXQgc29tZXRpbWVzLCBpZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlXG4gICBvdGhlciB0eXBlIGNhbm5vdCBiZSBjaGFuZ2VkLCBpdCBpcyB1c2VmdWwgdG8gZG8gdGhlIGNvbnZlcnNpb24gdG9cbiAgIHRoZSBvdGhlciB0eXBlIGhlcmUpLiAgQSByZXR1cm4gdmFsdWUgb2YgIk5vdEltcGxlbWVudGVkIiBpc1xuICAgZXF1aXZhbGVudCB0byByZXR1cm5pbmcgIk5vbmUiLlxuJywKLSAnb2JqZWN0cyc6IHUnXG5PYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cbipPYmplY3RzKiBhcmUgUHl0aG9uXCdzIGFic3RyYWN0aW9uIGZvciBkYXRhLiAgQWxsIGRhdGEgaW4gYSBQeXRob25cbnByb2dyYW0gaXMgcmVwcmVzZW50ZWQgYnkgb2JqZWN0cyBvciBieSByZWxhdGlvbnMgYmV0d2VlbiBvYmplY3RzLiAoSW5cbmEgc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbnByb2dyYW0gY29tcHV0ZXIsIiBjb2RlIGlzIGFsc28gcmVwcmVzZW50ZWQgYnkgb2JqZWN0cy4pXG5cbkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdFwnc1xuKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayBvZiBpdFxuYXMgdGhlIG9iamVjdFwncyBhZGRyZXNzIGluIG1lbW9yeS4gIFRoZSBcJyJpcyJcJyBvcGVyYXRvciBjb21wYXJlcyB0aGVcbmlkZW50aXR5IG9mIHR3byBvYmplY3RzOyB0aGUgImlkKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gaW50ZWdlclxucmVwcmVzZW50aW5nIGl0cyBpZGVudGl0eSAoY3VycmVudGx5IGltcGxlbWVudGVkIGFzIGl0cyBhZGRyZXNzKS4gQW5cbm9iamVjdFwncyAqdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXSBBbiBvYmplY3RcJ3MgdHlwZSBkZXRlcm1pbmVzXG50aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3Qgc3VwcG9ydHMgKGUuZy4sICJkb2VzIGl0IGhhdmUgYVxubGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlcyBmb3Igb2JqZWN0cyBvZiB0aGF0XG50eXBlLiAgVGhlICJ0eXBlKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XCdzIHR5cGUgKHdoaWNoIGlzIGFuXG5vYmplY3QgaXRzZWxmKS4gIFRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0c1xud2hvc2UgdmFsdWUgY2FuIGNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWVcbmlzIHVuY2hhbmdlYWJsZSBvbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZVxudmFsdWUgb2YgYW4gaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhXG5tdXRhYmxlIG9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlclwncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyXG50aGUgY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uIG9mXG5vYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbnN0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgc3VidGxlLilcbkFuIG9iamVjdFwncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbm51bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgYW5kXG5saXN0cyBhcmUgbXV0YWJsZS5cblxuT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbmFsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gaXQgaXNcbmEgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG5yZWFjaGFibGUuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhIHJlZmVyZW5jZS1cbmNvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSBsaW5rZWRcbmdhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG5jaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAiZ2MiIG1vZHVsZSBmb3JcbmluZm9ybWF0aW9uIG9uIGNvbnRyb2xsaW5nIHRoZSBjb2xsZWN0aW9uIG9mIGN5Y2xpYyBnYXJiYWdlLiBPdGhlclxuaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgZGVwZW5kXG5vbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAoZXg6XG5hbHdheXMgY2xvc2UgZmlsZXMpLlxuXG5Ob3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb25cJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbmZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIGNvbGxlY3RhYmxlLlxuQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJyJ0cnkiLi4uImV4Y2VwdCJcJ1xuc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyBvcGVuXG5maWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgZnJlZWRcbndoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xubm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0IHdheSB0b1xucmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSAiY2xvc2UoKSIgbWV0aG9kLiBQcm9ncmFtc1xuYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgVGhlXG5cJyJ0cnkiLi4uImZpbmFsbHkiXCcgc3RhdGVtZW50IHByb3ZpZGVzIGEgY29udmVuaWVudCB3YXkgdG8gZG8gdGhpcy5cblxuU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgY2FsbGVkXG4qY29udGFpbmVycyouIEV4YW1wbGVzIG9mIGNvbnRhaW5lcnMgYXJlIHR1cGxlcywgbGlzdHMgYW5kXG5kaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lclwncyB2YWx1ZS4gIEluXG5tb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSB0aGVcbnZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgd2hlbiB3ZVxudGFsayBhYm91dCB0aGUgbXV0YWJpbGl0eSBvZiBhIGNvbnRhaW5lciwgb25seSB0aGUgaWRlbnRpdGllcyBvZiB0aGVcbmltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuY29udGFpbmVyIChsaWtlIGEgdHVwbGUpIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgbXV0YWJsZSBvYmplY3QsIGl0c1xudmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG5cblR5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbmltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciBpbW11dGFibGVcbnR5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxucmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgd2hpbGVcbmZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyICJhID0gMTsgYiA9IDEiLFxuImEiIGFuZCAiYiIgbWF5IG9yIG1heSBub3QgcmVmZXIgdG8gdGhlIHNhbWUgb2JqZWN0IHdpdGggdGhlIHZhbHVlXG5vbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciAiYyA9IFtdOyBkID0gW10iLCAiYyJcbmFuZCAiZCIgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCwgdW5pcXVlLCBuZXdseVxuY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCAiYyA9IGQgPSBbXSIgYXNzaWducyB0aGUgc2FtZSBvYmplY3RcbnRvIGJvdGggImMiIGFuZCAiZCIuKVxuJywKLSAnb3BlcmF0b3Itc3VtbWFyeSc6IHUnXG5PcGVyYXRvciBwcmVjZWRlbmNlXG4qKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZXMgaW4gUHl0aG9uLFxuZnJvbSBsb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCBwcmVjZWRlbmNlIChtb3N0XG5iaW5kaW5nKS4gT3BlcmF0b3JzIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lIHByZWNlZGVuY2UuICBVbmxlc3NcbnRoZSBzeW50YXggaXMgZXhwbGljaXRseSBnaXZlbiwgb3BlcmF0b3JzIGFyZSBiaW5hcnkuICBPcGVyYXRvcnMgaW5cbnRoZSBzYW1lIGJveCBncm91cCBsZWZ0IHRvIHJpZ2h0IChleGNlcHQgZm9yIGNvbXBhcmlzb25zLCBpbmNsdWRpbmdcbnRlc3RzLCB3aGljaCBhbGwgaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBjaGFpbiBmcm9tIGxlZnQgdG8gcmlnaHRcbi0tLSBzZWUgc2VjdGlvbiBDb21wYXJpc29ucyAtLS0gYW5kIGV4cG9uZW50aWF0aW9uLCB3aGljaCBncm91cHMgZnJvbVxucmlnaHQgdG8gbGVmdCkuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgT3BlcmF0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbnwgImxhbWJkYSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImlmIiAtLSAiZWxzZSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIm9yIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImFuZCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIm5vdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImluIiwgIm5vdCBpbiIsICJpcyIsICJpcyBub3QiLCAiPCIsICI8PSIsICI+IiwgfCBDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbnwgIj49IiwgIjw+IiwgIiE9IiwgIj09IiAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0ZXN0cyBhbmQgaWRlbnRpdHkgdGVzdHMgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIl4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIFhPUiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIiYiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBCaXR3aXNlIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIjw8IiwgIj4+IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTaGlmdHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIisiLCAiLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBZGRpdGlvbiBhbmQgc3VidHJhY3Rpb24gICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIioiLCAiLyIsICIvLyIsICIlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBNdWx0aXBsaWNhdGlvbiwgZGl2aXNpb24sIHJlbWFpbmRlciAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbOF0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIit4IiwgIi14IiwgIn54IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIioqIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBFeHBvbmVudGlhdGlvbiBbOV0gICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInhbaW5kZXhdIiwgInhbaW5kZXg6aW5kZXhdIiwgICAgICAgICAgICAgICAgICAgfCBTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbnwgIngoYXJndW1lbnRzLi4uKSIsICJ4LmF0dHJpYnV0ZSIgICAgICAgICAgICAgICAgfCBhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIihleHByZXNzaW9ucy4uLikiLCAiW2V4cHJlc3Npb25zLi4uXSIsICJ7a2V5OiAgfCBCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbnwgdmFsdWUuLi59IiwgImBleHByZXNzaW9ucy4uLmAiICAgICAgICAgICAgICAgICAgfCBkaXNwbGF5LCBkaWN0aW9uYXJ5IGRpc3BsYXksIHN0cmluZyAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb252ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuLVsgRm9vdG5vdGVzIF0tXG5cblsxXSBJbiBQeXRob24gMi4zIGFuZCBsYXRlciByZWxlYXNlcywgYSBsaXN0IGNvbXByZWhlbnNpb24gImxlYWtzIlxuICAgIHRoZSBjb250cm9sIHZhcmlhYmxlcyBvZiBlYWNoICJmb3IiIGl0IGNvbnRhaW5zIGludG8gdGhlXG4gICAgY29udGFpbmluZyBzY29wZS4gIEhvd2V2ZXIsIHRoaXMgYmVoYXZpb3IgaXMgZGVwcmVjYXRlZCwgYW5kXG4gICAgcmVseWluZyBvbiBpdCB3aWxsIG5vdCB3b3JrIGluIFB5dGhvbiAzLlxuXG5bMl0gV2hpbGUgImFicyh4JXkpIDwgYWJzKHkpIiBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCBmb3IgZmxvYXRzXG4gICAgaXQgbWF5IG5vdCBiZSB0cnVlIG51bWVyaWNhbGx5IGR1ZSB0byByb3VuZG9mZi4gIEZvciBleGFtcGxlLCBhbmRcbiAgICBhc3N1bWluZyBhIHBsYXRmb3JtIG9uIHdoaWNoIGEgUHl0aG9uIGZsb2F0IGlzIGFuIElFRUUgNzU0IGRvdWJsZS1cbiAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0ICItMWUtMTAwICUgMWUxMDAiIGhhdmUgdGhlIHNhbWVcbiAgICBzaWduIGFzICIxZTEwMCIsIHRoZSBjb21wdXRlZCByZXN1bHQgaXMgIi0xZS0xMDAgKyAxZTEwMCIsIHdoaWNoXG4gICAgaXMgbnVtZXJpY2FsbHkgZXhhY3RseSBlcXVhbCB0byAiMWUxMDAiLiAgVGhlIGZ1bmN0aW9uXG4gICAgIm1hdGguZm1vZCgpIiByZXR1cm5zIGEgcmVzdWx0IHdob3NlIHNpZ24gbWF0Y2hlcyB0aGUgc2lnbiBvZiB0aGVcbiAgICBmaXJzdCBhcmd1bWVudCBpbnN0ZWFkLCBhbmQgc28gcmV0dXJucyAiLTFlLTEwMCIgaW4gdGhpcyBjYXNlLlxuICAgIFdoaWNoIGFwcHJvYWNoIGlzIG1vcmUgYXBwcm9wcmlhdGUgZGVwZW5kcyBvbiB0aGUgYXBwbGljYXRpb24uXG5cblszXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiB5LCBpdFwnc1xuICAgIHBvc3NpYmxlIGZvciAiZmxvb3IoeC95KSIgdG8gYmUgb25lIGxhcmdlciB0aGFuICIoeC14JXkpL3kiIGR1ZSB0b1xuICAgIHJvdW5kaW5nLiAgSW4gc3VjaCBjYXNlcywgUHl0aG9uIHJldHVybnMgdGhlIGxhdHRlciByZXN1bHQsIGluXG4gICAgb3JkZXIgdG8gcHJlc2VydmUgdGhhdCAiZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHkiIGJlIHZlcnkgY2xvc2VcbiAgICB0byAieCIuXG5cbls0XSBXaGlsZSBjb21wYXJpc29ucyBiZXR3ZWVuIHVuaWNvZGUgc3RyaW5ncyBtYWtlIHNlbnNlIGF0IHRoZVxuICAgIGJ5dGUgbGV2ZWwsIHRoZXkgbWF5IGJlIGNvdW50ZXItaW50dWl0aXZlIHRvIHVzZXJzLiBGb3IgZXhhbXBsZSxcbiAgICB0aGUgc3RyaW5ncyAidSJcXHUwMEM3IiIgYW5kICJ1IlxcdTAwNDNcXHUwMzI3IiIgY29tcGFyZSBkaWZmZXJlbnRseSxcbiAgICBldmVuIHRob3VnaCB0aGV5IGJvdGggcmVwcmVzZW50IHRoZSBzYW1lIHVuaWNvZGUgY2hhcmFjdGVyIChMQVRJTlxuICAgIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBKS4gVG8gY29tcGFyZSBzdHJpbmdzIGluIGEgaHVtYW5cbiAgICByZWNvZ25pemFibGUgd2F5LCBjb21wYXJlIHVzaW5nICJ1bmljb2RlZGF0YS5ub3JtYWxpemUoKSIuXG5cbls1XSBUaGUgaW1wbGVtZW50YXRpb24gY29tcHV0ZXMgdGhpcyBlZmZpY2llbnRseSwgd2l0aG91dFxuICAgIGNvbnN0cnVjdGluZyBsaXN0cyBvciBzb3J0aW5nLlxuXG5bNl0gRWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24gdXNlZCBsZXhpY29ncmFwaGljIGNvbXBhcmlzb24gb2ZcbiAgICB0aGUgc29ydGVkIChrZXksIHZhbHVlKSBsaXN0cywgYnV0IHRoaXMgd2FzIHZlcnkgZXhwZW5zaXZlIGZvciB0aGVcbiAgICBjb21tb24gY2FzZSBvZiBjb21wYXJpbmcgZm9yIGVxdWFsaXR5LiAgQW4gZXZlbiBlYXJsaWVyIHZlcnNpb24gb2ZcbiAgICBQeXRob24gY29tcGFyZWQgZGljdGlvbmFyaWVzIGJ5IGlkZW50aXR5IG9ubHksIGJ1dCB0aGlzIGNhdXNlZFxuICAgIHN1cnByaXNlcyBiZWNhdXNlIHBlb3BsZSBleHBlY3RlZCB0byBiZSBhYmxlIHRvIHRlc3QgYSBkaWN0aW9uYXJ5XG4gICAgZm9yIGVtcHRpbmVzcyBieSBjb21wYXJpbmcgaXQgdG8gInt9Ii5cblxuWzddIER1ZSB0byBhdXRvbWF0aWMgZ2FyYmFnZS1jb2xsZWN0aW9uLCBmcmVlIGxpc3RzLCBhbmQgdGhlXG4gICAgZHluYW1pYyBuYXR1cmUgb2YgZGVzY3JpcHRvcnMsIHlvdSBtYXkgbm90aWNlIHNlZW1pbmdseSB1bnVzdWFsXG4gICAgYmVoYXZpb3VyIGluIGNlcnRhaW4gdXNlcyBvZiB0aGUgImlzIiBvcGVyYXRvciwgbGlrZSB0aG9zZVxuICAgIGludm9sdmluZyBjb21wYXJpc29ucyBiZXR3ZWVuIGluc3RhbmNlIG1ldGhvZHMsIG9yIGNvbnN0YW50cy5cbiAgICBDaGVjayB0aGVpciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8uXG5cbls4XSBUaGUgIiUiIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nIGZvcm1hdHRpbmc7IHRoZSBzYW1lXG4gICAgcHJlY2VkZW5jZSBhcHBsaWVzLlxuXG5bOV0gVGhlIHBvd2VyIG9wZXJhdG9yICIqKiIgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gYXJpdGhtZXRpY1xuICAgIG9yIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCAiMioqLTEiIGlzICIwLjUiLlxuJywKLSAncGFzcyc6IHUnXG5UaGUgInBhc3MiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuICAgcGFzc19zdG10IDo6PSAicGFzcyJcblxuInBhc3MiIGlzIGEgbnVsbCBvcGVyYXRpb24gLS0tIHdoZW4gaXQgaXMgZXhlY3V0ZWQsIG5vdGhpbmcgaGFwcGVucy5cbkl0IGlzIHVzZWZ1bCBhcyBhIHBsYWNlaG9sZGVyIHdoZW4gYSBzdGF0ZW1lbnQgaXMgcmVxdWlyZWRcbnN5bnRhY3RpY2FsbHksIGJ1dCBubyBjb2RlIG5lZWRzIHRvIGJlIGV4ZWN1dGVkLCBmb3IgZXhhbXBsZTpcblxuICAgZGVmIGYoYXJnKTogcGFzcyAgICAjIGEgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdGhpbmcgKHlldClcblxuICAgY2xhc3MgQzogcGFzcyAgICAgICAjIGEgY2xhc3Mgd2l0aCBubyBtZXRob2RzICh5ZXQpXG4nLAotICdwb3dlcic6IHUnXG5UaGUgcG93ZXIgb3BlcmF0b3JcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgYmluZHMgbW9yZSB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0c1xubGVmdDsgaXQgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0cyByaWdodC4gIFRoZVxuc3ludGF4IGlzOlxuXG4gICBwb3dlciA6Oj0gcHJpbWFyeSBbIioqIiB1X2V4cHJdXG5cblRodXMsIGluIGFuIHVucGFyZW50aGVzaXplZCBzZXF1ZW5jZSBvZiBwb3dlciBhbmQgdW5hcnkgb3BlcmF0b3JzLCB0aGVcbm9wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCBjb25zdHJhaW5cbnRoZSBldmFsdWF0aW9uIG9yZGVyIGZvciB0aGUgb3BlcmFuZHMpOiAiLTEqKjIiIHJlc3VsdHMgaW4gIi0xIi5cblxuVGhlIHBvd2VyIG9wZXJhdG9yIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhlIGJ1aWx0LWluICJwb3coKSJcbmZ1bmN0aW9uLCB3aGVuIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHM6IGl0IHlpZWxkcyBpdHMgbGVmdCBhcmd1bWVudFxucmFpc2VkIHRvIHRoZSBwb3dlciBvZiBpdHMgcmlnaHQgYXJndW1lbnQuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlXG5maXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIFRoZSByZXN1bHQgdHlwZSBpcyB0aGF0IG9mIHRoZVxuYXJndW1lbnRzIGFmdGVyIGNvZXJjaW9uLlxuXG5XaXRoIG1peGVkIG9wZXJhbmQgdHlwZXMsIHRoZSBjb2VyY2lvbiBydWxlcyBmb3IgYmluYXJ5IGFyaXRobWV0aWNcbm9wZXJhdG9ycyBhcHBseS4gRm9yIGludCBhbmQgbG9uZyBpbnQgb3BlcmFuZHMsIHRoZSByZXN1bHQgaGFzIHRoZVxuc2FtZSB0eXBlIGFzIHRoZSBvcGVyYW5kcyAoYWZ0ZXIgY29lcmNpb24pIHVubGVzcyB0aGUgc2Vjb25kIGFyZ3VtZW50XG5pcyBuZWdhdGl2ZTsgaW4gdGhhdCBjYXNlLCBhbGwgYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGFcbmZsb2F0IHJlc3VsdCBpcyBkZWxpdmVyZWQuIEZvciBleGFtcGxlLCAiMTAqKjIiIHJldHVybnMgIjEwMCIsIGJ1dFxuIjEwKiotMiIgcmV0dXJucyAiMC4wMSIuIChUaGlzIGxhc3QgZmVhdHVyZSB3YXMgYWRkZWQgaW4gUHl0aG9uIDIuMi5cbkluIFB5dGhvbiAyLjEgYW5kIGJlZm9yZSwgaWYgYm90aCBhcmd1bWVudHMgd2VyZSBvZiBpbnRlZ2VyIHR5cGVzIGFuZFxudGhlIHNlY29uZCBhcmd1bWVudCB3YXMgbmVnYXRpdmUsIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkKS5cblxuUmFpc2luZyAiMC4wIiB0byBhIG5lZ2F0aXZlIHBvd2VyIHJlc3VsdHMgaW4gYSAiWmVyb0RpdmlzaW9uRXJyb3IiLlxuUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXIgcmVzdWx0cyBpbiBhXG4iVmFsdWVFcnJvciIuXG4nLAotICdwcmludCc6IHUnXG5UaGUgInByaW50IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBwcmludF9zdG10IDo6PSAicHJpbnQiIChbZXhwcmVzc2lvbiAoIiwiIGV4cHJlc3Npb24pKiBbIiwiXV1cbiAgICAgICAgICAgICAgICAgIHwgIj4+IiBleHByZXNzaW9uIFsoIiwiIGV4cHJlc3Npb24pKyBbIiwiXV0pXG5cbiJwcmludCIgZXZhbHVhdGVzIGVhY2ggZXhwcmVzc2lvbiBpbiB0dXJuIGFuZCB3cml0ZXMgdGhlIHJlc3VsdGluZ1xub2JqZWN0IHRvIHN0YW5kYXJkIG91dHB1dCAoc2VlIGJlbG93KS4gIElmIGFuIG9iamVjdCBpcyBub3QgYSBzdHJpbmcsXG5pdCBpcyBmaXJzdCBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdXNpbmcgdGhlIHJ1bGVzIGZvciBzdHJpbmdcbmNvbnZlcnNpb25zLiAgVGhlIChyZXN1bHRpbmcgb3Igb3JpZ2luYWwpIHN0cmluZyBpcyB0aGVuIHdyaXR0ZW4uICBBXG5zcGFjZSBpcyB3cml0dGVuIGJlZm9yZSBlYWNoIG9iamVjdCBpcyAoY29udmVydGVkIGFuZCkgd3JpdHRlbiwgdW5sZXNzXG50aGUgb3V0cHV0IHN5c3RlbSBiZWxpZXZlcyBpdCBpcyBwb3NpdGlvbmVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgYVxubGluZS4gIFRoaXMgaXMgdGhlIGNhc2UgKDEpIHdoZW4gbm8gY2hhcmFjdGVycyBoYXZlIHlldCBiZWVuIHdyaXR0ZW5cbnRvIHN0YW5kYXJkIG91dHB1dCwgKDIpIHdoZW4gdGhlIGxhc3QgY2hhcmFjdGVyIHdyaXR0ZW4gdG8gc3RhbmRhcmRcbm91dHB1dCBpcyBhIHdoaXRlc3BhY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXCcgXCciLCBvciAoMykgd2hlbiB0aGUgbGFzdFxud3JpdGUgb3BlcmF0aW9uIG9uIHN0YW5kYXJkIG91dHB1dCB3YXMgbm90IGEgInByaW50IiBzdGF0ZW1lbnQuIChJblxuc29tZSBjYXNlcyBpdCBtYXkgYmUgZnVuY3Rpb25hbCB0byB3cml0ZSBhbiBlbXB0eSBzdHJpbmcgdG8gc3RhbmRhcmRcbm91dHB1dCBmb3IgdGhpcyByZWFzb24uKVxuXG5Ob3RlOiBPYmplY3RzIHdoaWNoIGFjdCBsaWtlIGZpbGUgb2JqZWN0cyBidXQgd2hpY2ggYXJlIG5vdCB0aGVcbiAgYnVpbHQtaW4gZmlsZSBvYmplY3RzIG9mdGVuIGRvIG5vdCBwcm9wZXJseSBlbXVsYXRlIHRoaXMgYXNwZWN0IG9mXG4gIHRoZSBmaWxlIG9iamVjdFwncyBiZWhhdmlvciwgc28gaXQgaXMgYmVzdCBub3QgdG8gcmVseSBvbiB0aGlzLlxuXG5BICJcJ1xcblwnIiBjaGFyYWN0ZXIgaXMgd3JpdHRlbiBhdCB0aGUgZW5kLCB1bmxlc3MgdGhlICJwcmludCIgc3RhdGVtZW50XG5lbmRzIHdpdGggYSBjb21tYS4gIFRoaXMgaXMgdGhlIG9ubHkgYWN0aW9uIGlmIHRoZSBzdGF0ZW1lbnQgY29udGFpbnNcbmp1c3QgdGhlIGtleXdvcmQgInByaW50Ii5cblxuU3RhbmRhcmQgb3V0cHV0IGlzIGRlZmluZWQgYXMgdGhlIGZpbGUgb2JqZWN0IG5hbWVkICJzdGRvdXQiIGluIHRoZVxuYnVpbHQtaW4gbW9kdWxlICJzeXMiLiAgSWYgbm8gc3VjaCBvYmplY3QgZXhpc3RzLCBvciBpZiBpdCBkb2VzIG5vdFxuaGF2ZSBhICJ3cml0ZSgpIiBtZXRob2QsIGEgIlJ1bnRpbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cblxuInByaW50IiBhbHNvIGhhcyBhbiBleHRlbmRlZCBmb3JtLCBkZWZpbmVkIGJ5IHRoZSBzZWNvbmQgcG9ydGlvbiBvZlxudGhlIHN5bnRheCBkZXNjcmliZWQgYWJvdmUuIFRoaXMgZm9ybSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXNcbiIicHJpbnQiIGNoZXZyb24uIiBJbiB0aGlzIGZvcm0sIHRoZSBmaXJzdCBleHByZXNzaW9uIGFmdGVyIHRoZSAiPj4iXG5tdXN0IGV2YWx1YXRlIHRvIGEgImZpbGUtbGlrZSIgb2JqZWN0LCBzcGVjaWZpY2FsbHkgYW4gb2JqZWN0IHRoYXQgaGFzXG5hICJ3cml0ZSgpIiBtZXRob2QgYXMgZGVzY3JpYmVkIGFib3ZlLiAgV2l0aCB0aGlzIGV4dGVuZGVkIGZvcm0sIHRoZVxuc3Vic2VxdWVudCBleHByZXNzaW9ucyBhcmUgcHJpbnRlZCB0byB0aGlzIGZpbGUgb2JqZWN0LiAgSWYgdGhlIGZpcnN0XG5leHByZXNzaW9uIGV2YWx1YXRlcyB0byAiTm9uZSIsIHRoZW4gInN5cy5zdGRvdXQiIGlzIHVzZWQgYXMgdGhlIGZpbGVcbmZvciBvdXRwdXQuXG4nLAotICdyYWlzZSc6IHUnXG5UaGUgInJhaXNlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG4gICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiLCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXV1cblxuSWYgbm8gZXhwcmVzc2lvbnMgYXJlIHByZXNlbnQsICJyYWlzZSIgcmUtcmFpc2VzIHRoZSBsYXN0IGV4Y2VwdGlvblxudGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSBpblxudGhlIGN1cnJlbnQgc2NvcGUsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbmRpY2F0aW5nIHRoYXRcbnRoaXMgaXMgYW4gZXJyb3IgKGlmIHJ1bm5pbmcgdW5kZXIgSURMRSwgYSAiUXVldWUuRW1wdHkiIGV4Y2VwdGlvbiBpc1xucmFpc2VkIGluc3RlYWQpLlxuXG5PdGhlcndpc2UsICJyYWlzZSIgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9ucyB0byBnZXQgdGhyZWUgb2JqZWN0cyxcbnVzaW5nICJOb25lIiBhcyB0aGUgdmFsdWUgb2Ygb21pdHRlZCBleHByZXNzaW9ucy4gIFRoZSBmaXJzdCB0d29cbm9iamVjdHMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSAqdHlwZSogYW5kICp2YWx1ZSogb2YgdGhlIGV4Y2VwdGlvbi5cblxuSWYgdGhlIGZpcnN0IG9iamVjdCBpcyBhbiBpbnN0YW5jZSwgdGhlIHR5cGUgb2YgdGhlIGV4Y2VwdGlvbiBpcyB0aGVcbmNsYXNzIG9mIHRoZSBpbnN0YW5jZSwgdGhlIGluc3RhbmNlIGl0c2VsZiBpcyB0aGUgdmFsdWUsIGFuZCB0aGVcbnNlY29uZCBvYmplY3QgbXVzdCBiZSAiTm9uZSIuXG5cbklmIHRoZSBmaXJzdCBvYmplY3QgaXMgYSBjbGFzcywgaXQgYmVjb21lcyB0aGUgdHlwZSBvZiB0aGUgZXhjZXB0aW9uLlxuVGhlIHNlY29uZCBvYmplY3QgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGV4Y2VwdGlvbiB2YWx1ZTogSWYgaXQgaXNcbmFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcywgdGhlIGluc3RhbmNlIGJlY29tZXMgdGhlIGV4Y2VwdGlvbiB2YWx1ZS4gSWZcbnRoZSBzZWNvbmQgb2JqZWN0IGlzIGEgdHVwbGUsIGl0IGlzIHVzZWQgYXMgdGhlIGFyZ3VtZW50IGxpc3QgZm9yIHRoZVxuY2xhc3MgY29uc3RydWN0b3I7IGlmIGl0IGlzICJOb25lIiwgYW4gZW1wdHkgYXJndW1lbnQgbGlzdCBpcyB1c2VkLFxuYW5kIGFueSBvdGhlciBvYmplY3QgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSBhcmd1bWVudCB0byB0aGVcbmNvbnN0cnVjdG9yLiAgVGhlIGluc3RhbmNlIHNvIGNyZWF0ZWQgYnkgY2FsbGluZyB0aGUgY29uc3RydWN0b3IgaXNcbnVzZWQgYXMgdGhlIGV4Y2VwdGlvbiB2YWx1ZS5cblxuSWYgYSB0aGlyZCBvYmplY3QgaXMgcHJlc2VudCBhbmQgbm90ICJOb25lIiwgaXQgbXVzdCBiZSBhIHRyYWNlYmFja1xub2JqZWN0IChzZWUgc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpLCBhbmQgaXQgaXNcbnN1YnN0aXR1dGVkIGluc3RlYWQgb2YgdGhlIGN1cnJlbnQgbG9jYXRpb24gYXMgdGhlIHBsYWNlIHdoZXJlIHRoZVxuZXhjZXB0aW9uIG9jY3VycmVkLiAgSWYgdGhlIHRoaXJkIG9iamVjdCBpcyBwcmVzZW50IGFuZCBub3QgYVxudHJhY2ViYWNrIG9iamVjdCBvciAiTm9uZSIsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gIFRoZVxudGhyZWUtZXhwcmVzc2lvbiBmb3JtIG9mICJyYWlzZSIgaXMgdXNlZnVsIHRvIHJlLXJhaXNlIGFuIGV4Y2VwdGlvblxudHJhbnNwYXJlbnRseSBpbiBhbiBleGNlcHQgY2xhdXNlLCBidXQgInJhaXNlIiB3aXRoIG5vIGV4cHJlc3Npb25zXG5zaG91bGQgYmUgcHJlZmVycmVkIGlmIHRoZSBleGNlcHRpb24gdG8gYmUgcmUtcmFpc2VkIHdhcyB0aGUgbW9zdFxucmVjZW50bHkgYWN0aXZlIGV4Y2VwdGlvbiBpbiB0aGUgY3VycmVudCBzY29wZS5cblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG5FeGNlcHRpb25zLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiBzZWN0aW9uXG5UaGUgdHJ5IHN0YXRlbWVudC5cbicsCi0gJ3JldHVybic6IHUnXG5UaGUgInJldHVybiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJldHVybl9zdG10IDo6PSAicmV0dXJuIiBbZXhwcmVzc2lvbl9saXN0XVxuXG4icmV0dXJuIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24sXG5ub3Qgd2l0aGluIGEgbmVzdGVkIGNsYXNzIGRlZmluaXRpb24uXG5cbklmIGFuIGV4cHJlc3Npb24gbGlzdCBpcyBwcmVzZW50LCBpdCBpcyBldmFsdWF0ZWQsIGVsc2UgIk5vbmUiIGlzXG5zdWJzdGl0dXRlZC5cblxuInJldHVybiIgbGVhdmVzIHRoZSBjdXJyZW50IGZ1bmN0aW9uIGNhbGwgd2l0aCB0aGUgZXhwcmVzc2lvbiBsaXN0IChvclxuIk5vbmUiKSBhcyByZXR1cm4gdmFsdWUuXG5cbldoZW4gInJldHVybiIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAiZmluYWxseSJcbmNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyB0aGVcbmZ1bmN0aW9uLlxuXG5JbiBhIGdlbmVyYXRvciBmdW5jdGlvbiwgdGhlICJyZXR1cm4iIHN0YXRlbWVudCBpcyBub3QgYWxsb3dlZCB0b1xuaW5jbHVkZSBhbiAiZXhwcmVzc2lvbl9saXN0Ii4gIEluIHRoYXQgY29udGV4dCwgYSBiYXJlICJyZXR1cm4iXG5pbmRpY2F0ZXMgdGhhdCB0aGUgZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgIlN0b3BJdGVyYXRpb24iIHRvXG5iZSByYWlzZWQuXG4nLAotICdzZXF1ZW5jZS10eXBlcyc6IHUnXG5FbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyIG9iamVjdHMuXG5Db250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpIG9yIG1hcHBpbmdzXG4obGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzIHdlbGwuICBUaGVcbmZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciB0b1xuZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsIHRoZVxuYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoICIwIDw9IGsgPCBOIiB3aGVyZVxuKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaCBkZWZpbmUgYVxucmFuZ2Ugb2YgaXRlbXMuIChGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBtZXRob2RcbiJfX2dldHNsaWNlX18oKSIgKHNlZSBiZWxvdykgY2FuIGFsc28gYmUgZGVmaW5lZCB0byBoYW5kbGUgc2ltcGxlLCBidXRcbm5vdCBleHRlbmRlZCBzbGljZXMuKSBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZSB0aGVcbm1ldGhvZHMgImtleXMoKSIsICJ2YWx1ZXMoKSIsICJpdGVtcygpIiwgImhhc19rZXkoKSIsICJnZXQoKSIsXG4iY2xlYXIoKSIsICJzZXRkZWZhdWx0KCkiLCAiaXRlcmtleXMoKSIsICJpdGVydmFsdWVzKCkiLFxuIml0ZXJpdGVtcygpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgInVwZGF0ZSgpIiBiZWhhdmluZ1xuc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uXCdzIHN0YW5kYXJkIGRpY3Rpb25hcnkgb2JqZWN0cy4gIFRoZVxuIlVzZXJEaWN0IiBtb2R1bGUgcHJvdmlkZXMgYSAiRGljdE1peGluIiBjbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZVxubWV0aG9kcyBmcm9tIGEgYmFzZSBzZXQgb2YgIl9fZ2V0aXRlbV9fKCkiLCAiX19zZXRpdGVtX18oKSIsXG4iX19kZWxpdGVtX18oKSIsIGFuZCAia2V5cygpIi4gTXV0YWJsZSBzZXF1ZW5jZXMgc2hvdWxkIHByb3ZpZGVcbm1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsICJpbnNlcnQoKSIsXG4icG9wKCkiLCAicmVtb3ZlKCkiLCAicmV2ZXJzZSgpIiBhbmQgInNvcnQoKSIsIGxpa2UgUHl0aG9uIHN0YW5kYXJkXG5saXN0IG9iamVjdHMuICBGaW5hbGx5LCBzZXF1ZW5jZSB0eXBlcyBzaG91bGQgaW1wbGVtZW50IGFkZGl0aW9uXG4obWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmcgcmVwZXRpdGlvbikgYnlcbmRlZmluaW5nIHRoZSBtZXRob2RzICJfX2FkZF9fKCkiLCAiX19yYWRkX18oKSIsICJfX2lhZGRfXygpIixcbiJfX211bF9fKCkiLCAiX19ybXVsX18oKSIgYW5kICJfX2ltdWxfXygpIiBkZXNjcmliZWQgYmVsb3c7IHRoZXlcbnNob3VsZCBub3QgZGVmaW5lICJfX2NvZXJjZV9fKCkiIG9yIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICBJdCBpc1xucmVjb21tZW5kZWQgdGhhdCBib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZVxuIl9fY29udGFpbnNfXygpIiBtZXRob2QgdG8gYWxsb3cgZWZmaWNpZW50IHVzZSBvZiB0aGUgImluIiBvcGVyYXRvcjtcbmZvciBtYXBwaW5ncywgImluIiBzaG91bGQgYmUgZXF1aXZhbGVudCBvZiAiaGFzX2tleSgpIjsgZm9yIHNlcXVlbmNlcyxcbml0IHNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCB0aGF0XG5ib3RoIG1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvIGFsbG93XG5lZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAiX19pdGVyX18oKSJcbnNob3VsZCBiZSB0aGUgc2FtZSBhcyAiaXRlcmtleXMoKSI7IGZvciBzZXF1ZW5jZXMsIGl0IHNob3VsZCBpdGVyYXRlXG50aHJvdWdoIHRoZSB2YWx1ZXMuXG5cbm9iamVjdC5fX2xlbl9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIuICBTaG91bGQgcmV0dXJuXG4gICB0aGUgbGVuZ3RoIG9mIHRoZSBvYmplY3QsIGFuIGludGVnZXIgIj49IiAwLiAgQWxzbywgYW4gb2JqZWN0IHRoYXRcbiAgIGRvZXNuXCd0IGRlZmluZSBhICJfX25vbnplcm9fXygpIiBtZXRob2QgYW5kIHdob3NlICJfX2xlbl9fKCkiXG4gICBtZXRob2QgcmV0dXJucyB6ZXJvIGlzIGNvbnNpZGVyZWQgdG8gYmUgZmFsc2UgaW4gYSBCb29sZWFuIGNvbnRleHQuXG5cbm9iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yIHNlcXVlbmNlIHR5cGVzLFxuICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgTm90ZSB0aGF0XG4gICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgY2xhc3Mgd2lzaGVzXG4gICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4gICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSByYWlzZWQ7IGlmIG9mXG4gICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgKGFmdGVyIGFueVxuICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4gICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gdGhlXG4gICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG5cbiAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlIHJhaXNlZCBmb3JcbiAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiB0aGVcbiAgICAgc2VxdWVuY2UuXG5cbm9iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiBmb3IgZGljdFxuICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbm9iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmIG5ldyBrZXlzXG4gICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlIHJlcGxhY2VkLiAgVGhlXG4gICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvclxuICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgYXMgZm9yXG4gICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciBtYXBwaW5ncyBpZlxuICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHNcbiAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmVcbiAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9faXRlcl9fKHNlbGYpXG5cbiAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhIGNvbnRhaW5lci5cbiAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuIGl0ZXJhdGVcbiAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0IHNob3VsZFxuICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIsIGFuZCBzaG91bGQgYWxzbyBiZSBtYWRlXG4gICBhdmFpbGFibGUgYXMgdGhlIG1ldGhvZCAiaXRlcmtleXMoKSIuXG5cbiAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSBhcmVcbiAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gaXRlcmF0b3JcbiAgIG9iamVjdHMsIHNlZSBJdGVyYXRvciBUeXBlcy5cblxub2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuXG4gICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSAicmV2ZXJzZWQoKSIgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlICJfX3JldmVyc2VkX18oKSIgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlICJyZXZlcnNlZCgpIlxuICAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlIHByb3RvY29sICgiX19sZW5fXygpIlxuICAgYW5kICJfX2dldGl0ZW1fXygpIikuICBPYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2xcbiAgIHNob3VsZCBvbmx5IHByb3ZpZGUgIl9fcmV2ZXJzZWRfXygpIiBpZiB0aGV5IGNhbiBwcm92aWRlIGFuXG4gICBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSBwcm92aWRlZCBieVxuICAgInJldmVyc2VkKCkiLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAyLjYuXG5cblRoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlIG5vcm1hbGx5XG5pbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgY29udGFpbmVyXG5vYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSBlZmZpY2llbnRcbmltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhIHNlcXVlbmNlLlxuXG5vYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCByZXR1cm4gdHJ1ZVxuICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgb2JqZWN0cywgdGhpc1xuICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSB2YWx1ZXMgb3JcbiAgIHRoZSBrZXktaXRlbSBwYWlycy5cblxuICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSBtZW1iZXJzaGlwIHRlc3RcbiAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgc2VxdWVuY2VcbiAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgdGhpcyBzZWN0aW9uIGluIHRoZVxuICAgbGFuZ3VhZ2UgcmVmZXJlbmNlLlxuJywKLSAnc2hpZnRpbmcnOiB1J1xuU2hpZnRpbmcgb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgc2hpZnRpbmcgb3BlcmF0aW9ucyBoYXZlIGxvd2VyIHByaW9yaXR5IHRoYW4gdGhlIGFyaXRobWV0aWNcbm9wZXJhdGlvbnM6XG5cbiAgIHNoaWZ0X2V4cHIgOjo9IGFfZXhwciB8IHNoaWZ0X2V4cHIgKCAiPDwiIHwgIj4+IiApIGFfZXhwclxuXG5UaGVzZSBvcGVyYXRvcnMgYWNjZXB0IHBsYWluIG9yIGxvbmcgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgVGhlXG5hcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgVGhleSBzaGlmdCB0aGUgZmlyc3RcbmFyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSB0aGVcbnNlY29uZCBhcmd1bWVudC5cblxuQSByaWdodCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIGRpdmlzaW9uIGJ5ICJwb3coMiwgbikiLiAgQVxubGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggInBvdygyLCBuKSIuXG5OZWdhdGl2ZSBzaGlmdCBjb3VudHMgcmFpc2UgYSAiVmFsdWVFcnJvciIgZXhjZXB0aW9uLlxuXG5Ob3RlOiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiwgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpc1xuICByZXF1aXJlZCB0byBiZSBhdCBtb3N0ICJzeXMubWF4c2l6ZSIuICBJZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4gIGxhcmdlciB0aGFuICJzeXMubWF4c2l6ZSIgYW4gIk92ZXJmbG93RXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAotICdzbGljaW5ncyc6IHUnXG5TbGljaW5nc1xuKioqKioqKipcblxuQSBzbGljaW5nIHNlbGVjdHMgYSByYW5nZSBvZiBpdGVtcyBpbiBhIHNlcXVlbmNlIG9iamVjdCAoZS5nLiwgYVxuc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yIGFzXG50YXJnZXRzIGluIGFzc2lnbm1lbnQgb3IgImRlbCIgc3RhdGVtZW50cy4gIFRoZSBzeW50YXggZm9yIGEgc2xpY2luZzpcblxuICAgc2xpY2luZyAgICAgICAgICA6Oj0gc2ltcGxlX3NsaWNpbmcgfCBleHRlbmRlZF9zbGljaW5nXG4gICBzaW1wbGVfc2xpY2luZyAgIDo6PSBwcmltYXJ5ICJbIiBzaG9ydF9zbGljZSAiXSJcbiAgIGV4dGVuZGVkX3NsaWNpbmcgOjo9IHByaW1hcnkgIlsiIHNsaWNlX2xpc3QgIl0iXG4gICBzbGljZV9saXN0ICAgICAgIDo6PSBzbGljZV9pdGVtICgiLCIgc2xpY2VfaXRlbSkqIFsiLCJdXG4gICBzbGljZV9pdGVtICAgICAgIDo6PSBleHByZXNzaW9uIHwgcHJvcGVyX3NsaWNlIHwgZWxsaXBzaXNcbiAgIHByb3Blcl9zbGljZSAgICAgOjo9IHNob3J0X3NsaWNlIHwgbG9uZ19zbGljZVxuICAgc2hvcnRfc2xpY2UgICAgICA6Oj0gW2xvd2VyX2JvdW5kXSAiOiIgW3VwcGVyX2JvdW5kXVxuICAgbG9uZ19zbGljZSAgICAgICA6Oj0gc2hvcnRfc2xpY2UgIjoiIFtzdHJpZGVdXG4gICBsb3dlcl9ib3VuZCAgICAgIDo6PSBleHByZXNzaW9uXG4gICB1cHBlcl9ib3VuZCAgICAgIDo6PSBleHByZXNzaW9uXG4gICBzdHJpZGUgICAgICAgICAgIDo6PSBleHByZXNzaW9uXG4gICBlbGxpcHNpcyAgICAgICAgIDo6PSAiLi4uIlxuXG5UaGVyZSBpcyBhbWJpZ3VpdHkgaW4gdGhlIGZvcm1hbCBzeW50YXggaGVyZTogYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlXG5hbiBleHByZXNzaW9uIGxpc3QgYWxzbyBsb29rcyBsaWtlIGEgc2xpY2UgbGlzdCwgc28gYW55IHN1YnNjcmlwdGlvblxuY2FuIGJlIGludGVycHJldGVkIGFzIGEgc2xpY2luZy4gIFJhdGhlciB0aGFuIGZ1cnRoZXIgY29tcGxpY2F0aW5nIHRoZVxuc3ludGF4LCB0aGlzIGlzIGRpc2FtYmlndWF0ZWQgYnkgZGVmaW5pbmcgdGhhdCBpbiB0aGlzIGNhc2UgdGhlXG5pbnRlcnByZXRhdGlvbiBhcyBhIHN1YnNjcmlwdGlvbiB0YWtlcyBwcmlvcml0eSBvdmVyIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzbGljaW5nICh0aGlzIGlzIHRoZSBjYXNlIGlmIHRoZSBzbGljZSBsaXN0XG5jb250YWlucyBubyBwcm9wZXIgc2xpY2Ugbm9yIGVsbGlwc2VzKS4gIFNpbWlsYXJseSwgd2hlbiB0aGUgc2xpY2Vcbmxpc3QgaGFzIGV4YWN0bHkgb25lIHNob3J0IHNsaWNlIGFuZCBubyB0cmFpbGluZyBjb21tYSwgdGhlXG5pbnRlcnByZXRhdGlvbiBhcyBhIHNpbXBsZSBzbGljaW5nIHRha2VzIHByaW9yaXR5IG92ZXIgdGhhdCBhcyBhblxuZXh0ZW5kZWQgc2xpY2luZy5cblxuVGhlIHNlbWFudGljcyBmb3IgYSBzaW1wbGUgc2xpY2luZyBhcmUgYXMgZm9sbG93cy4gIFRoZSBwcmltYXJ5IG11c3RcbmV2YWx1YXRlIHRvIGEgc2VxdWVuY2Ugb2JqZWN0LiAgVGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCBleHByZXNzaW9ucyxcbmlmIHByZXNlbnQsIG11c3QgZXZhbHVhdGUgdG8gcGxhaW4gaW50ZWdlcnM7IGRlZmF1bHRzIGFyZSB6ZXJvIGFuZCB0aGVcbiJzeXMubWF4aW50IiwgcmVzcGVjdGl2ZWx5LiAgSWYgZWl0aGVyIGJvdW5kIGlzIG5lZ2F0aXZlLCB0aGVcbnNlcXVlbmNlXCdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSBzbGljaW5nIG5vdyBzZWxlY3RzIGFsbCBpdGVtc1xud2l0aCBpbmRleCAqayogc3VjaCB0aGF0ICJpIDw9IGsgPCBqIiB3aGVyZSAqaSogYW5kICpqKiBhcmUgdGhlXG5zcGVjaWZpZWQgbG93ZXIgYW5kIHVwcGVyIGJvdW5kcy4gIFRoaXMgbWF5IGJlIGFuIGVtcHR5IHNlcXVlbmNlLiAgSXRcbmlzIG5vdCBhbiBlcnJvciBpZiAqaSogb3IgKmoqIGxpZSBvdXRzaWRlIHRoZSByYW5nZSBvZiB2YWxpZCBpbmRleGVzXG4oc3VjaCBpdGVtcyBkb25cJ3QgZXhpc3Qgc28gdGhleSBhcmVuXCd0IHNlbGVjdGVkKS5cblxuVGhlIHNlbWFudGljcyBmb3IgYW4gZXh0ZW5kZWQgc2xpY2luZyBhcmUgYXMgZm9sbG93cy4gIFRoZSBwcmltYXJ5XG5tdXN0IGV2YWx1YXRlIHRvIGEgbWFwcGluZyBvYmplY3QsIGFuZCBpdCBpcyBpbmRleGVkIHdpdGggYSBrZXkgdGhhdFxuaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgc2xpY2UgbGlzdCwgYXMgZm9sbG93cy4gIElmIHRoZSBzbGljZSBsaXN0XG5jb250YWlucyBhdCBsZWFzdCBvbmUgY29tbWEsIHRoZSBrZXkgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZVxuY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlIGxvbmVcbnNsaWNlIGl0ZW0gaXMgdGhlIGtleS4gIFRoZSBjb252ZXJzaW9uIG9mIGEgc2xpY2UgaXRlbSB0aGF0IGlzIGFuXG5leHByZXNzaW9uIGlzIHRoYXQgZXhwcmVzc2lvbi4gIFRoZSBjb252ZXJzaW9uIG9mIGFuIGVsbGlwc2lzIHNsaWNlXG5pdGVtIGlzIHRoZSBidWlsdC1pbiAiRWxsaXBzaXMiIG9iamVjdC4gIFRoZSBjb252ZXJzaW9uIG9mIGEgcHJvcGVyXG5zbGljZSBpcyBhIHNsaWNlIG9iamVjdCAoc2VlIHNlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KVxud2hvc2UgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGVcbmV4cHJlc3Npb25zIGdpdmVuIGFzIGxvd2VyIGJvdW5kLCB1cHBlciBib3VuZCBhbmQgc3RyaWRlLFxucmVzcGVjdGl2ZWx5LCBzdWJzdGl0dXRpbmcgIk5vbmUiIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKLSAnc3BlY2lhbGF0dHJzJzogdSdcblNwZWNpYWwgQXR0cmlidXRlc1xuKioqKioqKioqKioqKioqKioqXG5cblRoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgZmV3IHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgdG8gc2V2ZXJhbFxub2JqZWN0IHR5cGVzLCB3aGVyZSB0aGV5IGFyZSByZWxldmFudC4gIFNvbWUgb2YgdGhlc2UgYXJlIG5vdCByZXBvcnRlZFxuYnkgdGhlICJkaXIoKSIgYnVpbHQtaW4gZnVuY3Rpb24uXG5cbm9iamVjdC5fX2RpY3RfX1xuXG4gICBBIGRpY3Rpb25hcnkgb3Igb3RoZXIgbWFwcGluZyBvYmplY3QgdXNlZCB0byBzdG9yZSBhbiBvYmplY3RcJ3NcbiAgICh3cml0YWJsZSkgYXR0cmlidXRlcy5cblxub2JqZWN0Ll9fbWV0aG9kc19fXG5cbiAgIERlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAyLjI6IFVzZSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImRpcigpIiB0b1xuICAgZ2V0IGEgbGlzdCBvZiBhbiBvYmplY3RcJ3MgYXR0cmlidXRlcy4gVGhpcyBhdHRyaWJ1dGUgaXMgbm8gbG9uZ2VyXG4gICBhdmFpbGFibGUuXG5cbm9iamVjdC5fX21lbWJlcnNfX1xuXG4gICBEZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMi4yOiBVc2UgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJkaXIoKSIgdG9cbiAgIGdldCBhIGxpc3Qgb2YgYW4gb2JqZWN0XCdzIGF0dHJpYnV0ZXMuIFRoaXMgYXR0cmlidXRlIGlzIG5vIGxvbmdlclxuICAgYXZhaWxhYmxlLlxuXG5pbnN0YW5jZS5fX2NsYXNzX19cblxuICAgVGhlIGNsYXNzIHRvIHdoaWNoIGEgY2xhc3MgaW5zdGFuY2UgYmVsb25ncy5cblxuY2xhc3MuX19iYXNlc19fXG5cbiAgIFRoZSB0dXBsZSBvZiBiYXNlIGNsYXNzZXMgb2YgYSBjbGFzcyBvYmplY3QuXG5cbmRlZmluaXRpb24uX19uYW1lX19cblxuICAgVGhlIG5hbWUgb2YgdGhlIGNsYXNzLCB0eXBlLCBmdW5jdGlvbiwgbWV0aG9kLCBkZXNjcmlwdG9yLCBvclxuICAgZ2VuZXJhdG9yIGluc3RhbmNlLlxuXG5UaGUgZm9sbG93aW5nIGF0dHJpYnV0ZXMgYXJlIG9ubHkgc3VwcG9ydGVkIGJ5ICpuZXctc3R5bGUgY2xhc3MqZXMuXG5cbmNsYXNzLl9fbXJvX19cblxuICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlblxuICAgbG9va2luZyBmb3IgYmFzZSBjbGFzc2VzIGR1cmluZyBtZXRob2QgcmVzb2x1dGlvbi5cblxuY2xhc3MubXJvKClcblxuICAgVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBtZXRhY2xhc3MgdG8gY3VzdG9taXplIHRoZVxuICAgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgZm9yIGl0cyBpbnN0YW5jZXMuICBJdCBpcyBjYWxsZWQgYXQgY2xhc3NcbiAgIGluc3RhbnRpYXRpb24sIGFuZCBpdHMgcmVzdWx0IGlzIHN0b3JlZCBpbiAiX19tcm9fXyIuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBuZXctc3R5bGUgY2xhc3Mga2VlcHMgYSBsaXN0IG9mIHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgIGltbWVkaWF0ZSBzdWJjbGFzc2VzLiAgVGhpcyBtZXRob2QgcmV0dXJucyBhIGxpc3Qgb2YgYWxsIHRob3NlXG4gICByZWZlcmVuY2VzIHN0aWxsIGFsaXZlLiBFeGFtcGxlOlxuXG4gICAgICA+Pj4gaW50Ll9fc3ViY2xhc3Nlc19fKClcbiAgICAgIFs8dHlwZSBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kXG4gICAgaW4gdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsIChCYXNpYyBjdXN0b21pemF0aW9uKS5cblxuWzJdIEFzIGEgY29uc2VxdWVuY2UsIHRoZSBsaXN0ICJbMSwgMl0iIGlzIGNvbnNpZGVyZWQgZXF1YWwgdG9cbiAgICAiWzEuMCwgMi4wXSIsIGFuZCBzaW1pbGFybHkgZm9yIHR1cGxlcy5cblxuWzNdIFRoZXkgbXVzdCBoYXZlIHNpbmNlIHRoZSBwYXJzZXIgY2FuXCd0IHRlbGwgdGhlIHR5cGUgb2YgdGhlXG4gICAgb3BlcmFuZHMuXG5cbls0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgcHJvcGVydHlcbiAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsIGxvd2VyY2FzZSksXG4gICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuXG5bNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbiAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSBmb3JtYXR0ZWQuXG5cbls2XSBUaGUgYWR2YW50YWdlIG9mIGxlYXZpbmcgdGhlIG5ld2xpbmUgb24gaXMgdGhhdCByZXR1cm5pbmcgYW5cbiAgICBlbXB0eSBzdHJpbmcgaXMgdGhlbiBhbiB1bmFtYmlndW91cyBFT0YgaW5kaWNhdGlvbi4gIEl0IGlzIGFsc29cbiAgICBwb3NzaWJsZSAoaW4gY2FzZXMgd2hlcmUgaXQgbWlnaHQgbWF0dGVyLCBmb3IgZXhhbXBsZSwgaWYgeW91IHdhbnRcbiAgICB0byBtYWtlIGFuIGV4YWN0IGNvcHkgb2YgYSBmaWxlIHdoaWxlIHNjYW5uaW5nIGl0cyBsaW5lcykgdG8gdGVsbFxuICAgIHdoZXRoZXIgdGhlIGxhc3QgbGluZSBvZiBhIGZpbGUgZW5kZWQgaW4gYSBuZXdsaW5lIG9yIG5vdCAoeWVzXG4gICAgdGhpcyBoYXBwZW5zISkuXG4nLAotICdzcGVjaWFsbmFtZXMnOiB1J1xuU3BlY2lhbCBtZXRob2QgbmFtZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSBzcGVjaWFsXG5zeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgc2xpY2luZykgYnlcbmRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvblwncyBhcHByb2FjaCB0b1xuKm9wZXJhdG9yIG92ZXJsb2FkaW5nKiwgYWxsb3dpbmcgY2xhc3NlcyB0byBkZWZpbmUgdGhlaXIgb3duIGJlaGF2aW9yXG53aXRoIHJlc3BlY3QgdG8gbGFuZ3VhZ2Ugb3BlcmF0b3JzLiAgRm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGRlZmluZXNcbmEgbWV0aG9kIG5hbWVkICJfX2dldGl0ZW1fXygpIiwgYW5kICJ4IiBpcyBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLFxudGhlbiAieFtpXSIgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvICJ4Ll9fZ2V0aXRlbV9fKGkpIiBmb3Igb2xkLXN0eWxlXG5jbGFzc2VzIGFuZCAidHlwZSh4KS5fX2dldGl0ZW1fXyh4LCBpKSIgZm9yIG5ldy1zdHlsZSBjbGFzc2VzLiAgRXhjZXB0XG53aGVyZSBtZW50aW9uZWQsIGF0dGVtcHRzIHRvIGV4ZWN1dGUgYW4gb3BlcmF0aW9uIHJhaXNlIGFuIGV4Y2VwdGlvblxud2hlbiBubyBhcHByb3ByaWF0ZSBtZXRob2QgaXMgZGVmaW5lZCAodHlwaWNhbGx5ICJBdHRyaWJ1dGVFcnJvciIgb3JcbiJUeXBlRXJyb3IiKS5cblxuV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCBpdCBpc1xuaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSBkZWdyZWUgdGhhdCBpdFxubWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgc29tZVxuc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCBlbGVtZW50cywgYnV0XG5leHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgaXMgdGhlXG4iTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG5cblxuQmFzaWMgY3VzdG9taXphdGlvblxuPT09PT09PT09PT09PT09PT09PVxuXG5vYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuXG4gICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgIl9fbmV3X18oKSIgaXMgYVxuICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCBhcyBzdWNoKVxuICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCBhcyBpdHNcbiAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCB0byB0aGVcbiAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgVGhlIHJldHVyblxuICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICh1c3VhbGx5IGFuXG4gICBpbnN0YW5jZSBvZiAqY2xzKikuXG5cbiAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgY2xhc3MgYnlcbiAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoIGFwcHJvcHJpYXRlXG4gICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlIGFzXG4gICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cblxuICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4gICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgYW5kIHRoZVxuICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIuXG5cbiAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgbmV3XG4gICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG5cbiAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mIGltbXV0YWJsZVxuICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgY3JlYXRpb24uICBJdFxuICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiBvcmRlciB0b1xuICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuXG5vYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG5cbiAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgIl9fbmV3X18oKSIpLCBidXRcbiAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgdGhvc2VcbiAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYW5cbiAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiBtZXRob2QsIGlmXG4gICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4gICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbiAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG5cbiAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluIGNvbnN0cnVjdGluZ1xuICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvIGN1c3RvbWlzZVxuICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7IGRvaW5nIHNvXG4gICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG5cbm9iamVjdC5fX2RlbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzIGlzIGFsc29cbiAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgbWV0aG9kLCB0aGVcbiAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0XG4gICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlLlxuICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yIHRoZVxuICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSBpbnN0YW5jZSBieVxuICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0IGEgbGF0ZXJcbiAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCBndWFyYW50ZWVkIHRoYXRcbiAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsIGV4aXN0IHdoZW5cbiAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cblxuICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tIHRoZSBmb3JtZXJcbiAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlIGxhdHRlciBpc1xuICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgU29tZSBjb21tb25cbiAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gb2JqZWN0IGZyb21cbiAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gb2JqZWN0cyAoZS5nLixcbiAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggcGFyZW50IGFuZFxuICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIG9mXG4gICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmV4Y190cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgcmVmZXJlbmNlXG4gICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuIHVuaGFuZGxlZFxuICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSBmaXJzdFxuICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyB0aGUgY3ljbGVzO1xuICAgICB0aGUgbGF0dGVyIHR3byBzaXR1YXRpb25zIGNhbiBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpblxuICAgICAic3lzLmV4Y190cmFjZWJhY2siIG9yICJzeXMubGFzdF90cmFjZWJhY2siLiAgQ2lyY3VsYXIgcmVmZXJlbmNlc1xuICAgICB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgd2hlbiB0aGUgb3B0aW9uIGN5Y2xlIGRldGVjdG9yIGlzXG4gICAgIGVuYWJsZWQgKGl0XCdzIG9uIGJ5IGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCB1cCBpZiB0aGVyZVxuICAgICBhcmUgbm8gUHl0aG9uLWxldmVsICJfX2RlbF9fKCkiIG1ldGhvZHMgaW52b2x2ZWQuIFJlZmVyIHRvIHRoZVxuICAgICBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93XG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGN5Y2xlIGRldGVjdG9yLFxuICAgICBwYXJ0aWN1bGFybHkgdGhlIGRlc2NyaXB0aW9uIG9mIHRoZSAiZ2FyYmFnZSIgdmFsdWUuXG5cbiAgIFdhcm5pbmc6IER1ZSB0byB0aGUgcHJlY2FyaW91cyBjaXJjdW1zdGFuY2VzIHVuZGVyIHdoaWNoXG4gICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciBkdXJpbmdcbiAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgdG9cbiAgICAgInN5cy5zdGRlcnIiIGluc3RlYWQuIEFsc28sIHdoZW4gIl9fZGVsX18oKSIgaXMgaW52b2tlZCBpblxuICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuIGV4ZWN1dGlvbiBvZiB0aGVcbiAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAiX19kZWxfXygpIlxuICAgICBtZXRob2QgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIGRlbGV0ZWQgb3IgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmdcbiAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgRm9yIHRoaXNcbiAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgbWluaW11bSBuZWVkZWRcbiAgICAgdG8gbWFpbnRhaW4gZXh0ZXJuYWwgaW52YXJpYW50cy4gIFN0YXJ0aW5nIHdpdGggdmVyc2lvbiAxLjUsXG4gICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoIGEgc2luZ2xlXG4gICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyIGdsb2JhbHMgYXJlXG4gICAgIGRlbGV0ZWQ7IGlmIG5vIG90aGVyIHJlZmVyZW5jZXMgdG8gc3VjaCBnbG9iYWxzIGV4aXN0LCB0aGlzIG1heVxuICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgYXZhaWxhYmxlIGF0IHRoZVxuICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG5cbiAgIFNlZSBhbHNvIHRoZSAiLVIiIGNvbW1hbmQtbGluZSBvcHRpb24uXG5cbm9iamVjdC5fX3JlcHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgdGhlICJyZXByKCkiIGJ1aWx0LWluIGZ1bmN0aW9uIGFuZCBieSBzdHJpbmcgY29udmVyc2lvbnNcbiAgIChyZXZlcnNlIHF1b3RlcykgdG8gY29tcHV0ZSB0aGUgIm9mZmljaWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2ZcbiAgIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpcyBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWRcbiAgIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZCB0byByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGVcbiAgIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90XG4gICBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm0gIjwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj4iXG4gICBzaG91bGQgYmUgcmV0dXJuZWQuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhXG4gICBjbGFzcyBkZWZpbmVzICJfX3JlcHJfXygpIiBidXQgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIlxuICAgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzXG4gICBvZiB0aGF0IGNsYXNzIGlzIHJlcXVpcmVkLlxuXG4gICBUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciBkZWJ1Z2dpbmcsIHNvIGl0IGlzIGltcG9ydGFudCB0aGF0IHRoZVxuICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG5cbm9iamVjdC5fX3N0cl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgInN0cigpIiBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYnkgdGhlICJwcmludCJcbiAgIHN0YXRlbWVudCB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiAgVGhpcyBkaWZmZXJzIGZyb20gIl9fcmVwcl9fKCkiIGluIHRoYXQgaXQgZG9lcyBub3QgaGF2ZSB0b1xuICAgYmUgYSB2YWxpZCBQeXRob24gZXhwcmVzc2lvbjogYSBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZVxuICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGFcbiAgIHN0cmluZyBvYmplY3QuXG5cbm9iamVjdC5fX2x0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19sZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX25lX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19ndF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcblxuICAgTmV3IGluIHZlcnNpb24gMi4xLlxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLCBhbmQgYXJlIGNhbGxlZFxuICAgZm9yIGNvbXBhcmlzb24gb3BlcmF0b3JzIGluIHByZWZlcmVuY2UgdG8gIl9fY21wX18oKSIgYmVsb3cuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6ICJ4PHkiIGNhbGxzICJ4Ll9fbHRfXyh5KSIsICJ4PD15IiBjYWxscyAieC5fX2xlX18oeSkiLFxuICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBhbmQgIng8PnkiIGNhbGwgInguX19uZV9fKHkpIixcbiAgICJ4PnkiIGNhbGxzICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAiTm90SW1wbGVtZW50ZWQiXG4gICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mXG4gICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgZm9yIGFcbiAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuIGFueSB2YWx1ZSxcbiAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuIGNvbnRleHQgKGUuZy4sXG4gICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAiYm9vbCgpIlxuICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIFRoZXJlIGFyZSBubyBpbXBsaWVkIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLlxuICAgVGhlIHRydXRoIG9mICJ4PT15IiBkb2VzIG5vdCBpbXBseSB0aGF0ICJ4IT15IiBpcyBmYWxzZS5cbiAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nICJfX2VxX18oKSIsIG9uZSBzaG91bGQgYWxzbyBkZWZpbmVcbiAgICJfX25lX18oKSIgc28gdGhhdCB0aGUgb3BlcmF0b3JzIHdpbGwgYmVoYXZlIGFzIGV4cGVjdGVkLiAgU2VlIHRoZVxuICAgcGFyYWdyYXBoIG9uICJfX2hhc2hfXygpIiBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb24gY3JlYXRpbmdcbiAgICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uIG9wZXJhdGlvbnMgYW5kXG4gICBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyByZWZsZWN0aW9uLFxuICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLlxuXG4gICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG5cbiAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3RcbiAgIG9wZXJhdGlvbiwgc2VlICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG5cbm9iamVjdC5fX2NtcF9fKHNlbGYsIG90aGVyKVxuXG4gICBDYWxsZWQgYnkgY29tcGFyaXNvbiBvcGVyYXRpb25zIGlmIHJpY2ggY29tcGFyaXNvbiAoc2VlIGFib3ZlKSBpc1xuICAgbm90IGRlZmluZWQuICBTaG91bGQgcmV0dXJuIGEgbmVnYXRpdmUgaW50ZWdlciBpZiAic2VsZiA8IG90aGVyIixcbiAgIHplcm8gaWYgInNlbGYgPT0gb3RoZXIiLCBhIHBvc2l0aXZlIGludGVnZXIgaWYgInNlbGYgPiBvdGhlciIuICBJZlxuICAgbm8gIl9fY21wX18oKSIsICJfX2VxX18oKSIgb3IgIl9fbmVfXygpIiBvcGVyYXRpb24gaXMgZGVmaW5lZCxcbiAgIGNsYXNzIGluc3RhbmNlcyBhcmUgY29tcGFyZWQgYnkgb2JqZWN0IGlkZW50aXR5ICgiYWRkcmVzcyIpLiAgU2VlXG4gICBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuIChOb3RlOiB0aGVcbiAgIHJlc3RyaWN0aW9uIHRoYXQgZXhjZXB0aW9ucyBhcmUgbm90IHByb3BhZ2F0ZWQgYnkgIl9fY21wX18oKSIgaGFzXG4gICBiZWVuIHJlbW92ZWQgc2luY2UgUHl0aG9uIDEuNS4pXG5cbm9iamVjdC5fX3JjbXBfXyhzZWxmLCBvdGhlcilcblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMTogTm8gbG9uZ2VyIHN1cHBvcnRlZC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgb24gbWVtYmVyc1xuICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAiZGljdCIuXG4gICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgcHJvcGVydHlcbiAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZTsgaXQgaXNcbiAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaFxuICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgcGFydCBpblxuICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhICJfX2NtcF9fKCkiIG9yICJfX2VxX18oKSIgbWV0aG9kIGl0XG4gICBzaG91bGQgbm90IGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzXG4gICAiX19jbXBfXygpIiBvciAiX19lcV9fKCkiIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGxcbiAgIG5vdCBiZSB1c2FibGUgaW4gaGFzaGVkIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzIG11dGFibGVcbiAgIG9iamVjdHMgYW5kIGltcGxlbWVudHMgYSAiX19jbXBfXygpIiBvciAiX19lcV9fKCkiIG1ldGhvZCwgaXRcbiAgIHNob3VsZCBub3QgaW1wbGVtZW50ICJfX2hhc2hfXygpIiwgc2luY2UgaGFzaGFibGUgY29sbGVjdGlvblxuICAgaW1wbGVtZW50YXRpb25zIHJlcXVpcmUgdGhhdCBhbiBvYmplY3RcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGVcbiAgIChpZiB0aGUgb2JqZWN0XCdzIGhhc2ggdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaFxuICAgYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19jbXBfXygpIiBhbmQgIl9faGFzaF9fKCkiIG1ldGhvZHMgYnlcbiAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgd2l0aFxuICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYSByZXN1bHQgZGVyaXZlZCBmcm9tXG4gICAiaWQoeCkiLlxuXG4gICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSAiX19oYXNoX18oKSIgbWV0aG9kIGZyb20gYSBwYXJlbnQgY2xhc3MgYnV0XG4gICBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgIl9fY21wX18oKSIgb3IgIl9fZXFfXygpIiBzdWNoIHRoYXQgdGhlIGhhc2hcbiAgIHZhbHVlIHJldHVybmVkIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSAoZS5nLiBieSBzd2l0Y2hpbmcgdG8gYVxuICAgdmFsdWUtYmFzZWQgY29uY2VwdCBvZiBlcXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0IGlkZW50aXR5XG4gICBiYXNlZCBlcXVhbGl0eSkgY2FuIGV4cGxpY2l0bHkgZmxhZyB0aGVtc2VsdmVzIGFzIGJlaW5nIHVuaGFzaGFibGVcbiAgIGJ5IHNldHRpbmcgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uIERvaW5nIHNvXG4gICBtZWFucyB0aGF0IG5vdCBvbmx5IHdpbGwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyByYWlzZSBhblxuICAgYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gcmV0cmlldmUgdGhlaXJcbiAgIGhhc2ggdmFsdWUsIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIlxuICAgKHVubGlrZSBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGVpciBvd24gIl9faGFzaF9fKCkiIHRvIGV4cGxpY2l0bHlcbiAgIHJhaXNlICJUeXBlRXJyb3IiKS5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNTogIl9faGFzaF9fKCkiIG1heSBub3cgYWxzbyByZXR1cm4gYSBsb25nXG4gICBpbnRlZ2VyIG9iamVjdDsgdGhlIDMyLWJpdCBpbnRlZ2VyIGlzIHRoZW4gZGVyaXZlZCBmcm9tIHRoZSBoYXNoIG9mXG4gICB0aGF0IG9iamVjdC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNjogIl9faGFzaF9fIiBtYXkgbm93IGJlIHNldCB0byAiTm9uZSIgdG9cbiAgIGV4cGxpY2l0bHkgZmxhZyBpbnN0YW5jZXMgb2YgYSBjbGFzcyBhcyB1bmhhc2hhYmxlLlxuXG5vYmplY3QuX19ub256ZXJvX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gb3BlcmF0aW9uXG4gICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIiwgb3IgdGhlaXIgaW50ZWdlclxuICAgZXF1aXZhbGVudHMgIjAiIG9yICIxIi4gIFdoZW4gdGhpcyBtZXRob2QgaXMgbm90IGRlZmluZWQsXG4gICAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0IGlzXG4gICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX25vbnplcm9fXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG5cbm9iamVjdC5fX3VuaWNvZGVfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJ1bmljb2RlKCkiIGJ1aWx0LWluOyBzaG91bGQgcmV0dXJuIGEgVW5pY29kZVxuICAgb2JqZWN0LiBXaGVuIHRoaXMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCBzdHJpbmcgY29udmVyc2lvbiBpc1xuICAgYXR0ZW1wdGVkLCBhbmQgdGhlIHJlc3VsdCBvZiBzdHJpbmcgY29udmVyc2lvbiBpcyBjb252ZXJ0ZWQgdG9cbiAgIFVuaWNvZGUgdXNpbmcgdGhlIHN5c3RlbSBkZWZhdWx0IGVuY29kaW5nLlxuXG5cbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3Ncbj09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAieC5uYW1lIikgZm9yXG5jbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLiBUaGlzXG4gICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzIGRvbmUgYm90aCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbiAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlIHRoYXQgYXRcbiAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5IG5vdFxuICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgaW4gbmV3LXN0eWxlIGNsYXNzZXMuXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIG5vdCBzaW1wbHkgZXhlY3V0ZSAic2VsZi5uYW1lID0gdmFsdWUiIC0tLSB0aGlzIHdvdWxkIGNhdXNlXG4gICBhIHJlY3Vyc2l2ZSBjYWxsIHRvIGl0c2VsZi4gIEluc3RlYWQsIGl0IHNob3VsZCBpbnNlcnQgdGhlIHZhbHVlIGluXG4gICB0aGUgZGljdGlvbmFyeSBvZiBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBlLmcuLCAic2VsZi5fX2RpY3RfX1tuYW1lXSA9XG4gICB2YWx1ZSIuICBGb3IgbmV3LXN0eWxlIGNsYXNzZXMsIHJhdGhlciB0aGFuIGFjY2Vzc2luZyB0aGUgaW5zdGFuY2VcbiAgIGRpY3Rpb25hcnksIGl0IHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lXG4gICBuYW1lLCBmb3IgZXhhbXBsZSwgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuXG5vYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcblxuICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCBvZlxuICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCBvYmoubmFtZSIgaXNcbiAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG5cblxuTW9yZSBhdHRyaWJ1dGUgYWNjZXNzIGZvciBuZXctc3R5bGUgY2xhc3Nlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB0byBuZXctc3R5bGUgY2xhc3Nlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcblxuICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzIGZvclxuICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAiX19nZXRhdHRyX18oKSIsXG4gICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgZWl0aGVyXG4gICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzIG1ldGhvZFxuICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSByZWN1cnNpb24gaW5cbiAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSBiYXNlIGNsYXNzXG4gICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCBuZWVkcywgZm9yXG4gICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuXG4gICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwIHNwZWNpYWxcbiAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhIGxhbmd1YWdlIHN5bnRheFxuICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSBTcGVjaWFsIG1ldGhvZCBsb29rdXAgZm9yIG5ldy1zdHlsZVxuICAgICBjbGFzc2VzLlxuXG5cbkltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzXG5jb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgYXBwZWFycyBpbiBhblxuKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyXCdzIGNsYXNzXG5kaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzIHBhcmVudHMpLiAgSW4gdGhlXG5leGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXNcbnRoZSBrZXkgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBvd25lciBjbGFzc1wnICJfX2RpY3RfXyIuXG5cbm9iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcblxuICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgYXR0cmlidXRlXG4gICBhY2Nlc3MpIG9yIG9mIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MgKGluc3RhbmNlIGF0dHJpYnV0ZVxuICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAqaW5zdGFuY2UqIGlzIHRoZVxuICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAiTm9uZSIgd2hlblxuICAgdGhlIGF0dHJpYnV0ZSBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAqb3duZXIqLiAgVGhpcyBtZXRob2Qgc2hvdWxkXG4gICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICJBdHRyaWJ1dGVFcnJvciJcbiAgIGV4Y2VwdGlvbi5cblxub2JqZWN0Ll9fc2V0X18oc2VsZiwgaW5zdGFuY2UsIHZhbHVlKVxuXG4gICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXJcbiAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuXG5vYmplY3QuX19kZWxldGVfXyhzZWxmLCBpbnN0YW5jZSlcblxuICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlXG4gICBvd25lciBjbGFzcy5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCBhbmRcbiJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LCBpdFxuaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiYS54IiBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG4idHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC4gIE5vdGUgdGhhdCBkZXNjcmlwdG9ycyBhcmUgb25seSBpbnZva2VkIGZvciBuZXdcbnN0eWxlIG9iamVjdHMgb3IgY2xhc3NlcyAob25lcyB0aGF0IHN1YmNsYXNzICJvYmplY3QoKSIgb3IgInR5cGUoKSIpLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICJhLngiLiBIb3dcbnRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYSBuZXctc3R5bGUgb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZFxuICAgaW50byB0aGUgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgbmV3LXN0eWxlIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAic3VwZXIoQixcbiAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlIGJhc2UgY2xhc3MgIkEiXG4gICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3Igd2l0aCB0aGVcbiAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXykiLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbmRvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsIHJldHVyblxudGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGUgb2JqZWN0XCdzXG5pbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiBhbmQvb3JcbiJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyBuZWl0aGVyLCBpdCBpc1xuYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lIGJvdGhcbiJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZVxuIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAiX19nZXRfXygpIlxuZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluXG5jb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICJjbGFzc21ldGhvZCgpIikgYXJlXG5pbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuLS0tLS0tLS0tXG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBib3RoIG9sZCBhbmQgbmV3LXN0eWxlIGNsYXNzZXMgaGF2ZSBhXG5kaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGUgc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzXG5oYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2UgdmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWVcbmFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2UgbnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgbmV3LXN0eWxlXG5jbGFzcyBkZWZpbml0aW9uLiAgVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgc2VxdWVuY2Ugb2Zcbmluc3RhbmNlIHZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCBpbnN0YW5jZSB0b1xuaG9sZCBhIHZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAqX19kaWN0X18qIGlzXG5ub3QgY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cblxuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gIElmIGRlZmluZWQgaW4gYVxuICAgbmV3LXN0eWxlIGNsYXNzLCAqX19zbG90c19fKiByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkXG4gICB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZSBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmRcbiAgICpfX3dlYWtyZWZfXyogZm9yIGVhY2ggaW5zdGFuY2UuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuMi5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICJBdHRyaWJ1dGVFcnJvciIuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuICBDaGFuZ2VkIGluIHZlcnNpb24gMi4zOiBQcmV2aW91c2x5LCBhZGRpbmcgIlwnX19kaWN0X19cJyIgdG8gdGhlXG4gICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHdvdWxkIG5vdCBlbmFibGUgdGhlIGFzc2lnbm1lbnQgb2YgbmV3XG4gIGF0dHJpYnV0ZXMgbm90IHNwZWNpZmljYWxseSBsaXN0ZWQgaW4gdGhlIHNlcXVlbmNlIG9mIGluc3RhbmNlXG4gIHZhcmlhYmxlIG5hbWVzLlxuXG4qIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCBjbGFzc2VzXG4gIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byBpdHNcbiAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbiAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICpfX3Nsb3RzX18qXG4gIGRlY2xhcmF0aW9uLlxuXG4gIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFByZXZpb3VzbHksIGFkZGluZyAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGVcbiAgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gd291bGQgbm90IGVuYWJsZSBzdXBwb3J0IGZvciB3ZWFrXG4gIHJlZmVyZW5jZXMuXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKSBmb3IgZWFjaCB2YXJpYWJsZSBuYW1lLiAgQXMgYVxuICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgdmFsdWVzIGZvclxuICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgY2xhc3NcbiAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuXG4qIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSBjbGFzc1xuICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgKl9fZGljdF9fKlxuICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5IGNvbnRhaW4gbmFtZXNcbiAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG5cbiogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCB0aGVcbiAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzIGluYWNjZXNzaWJsZVxuICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgYmFzZSBjbGFzcykuXG4gIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgZnV0dXJlLCBhXG4gIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG5cbiogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkIGZyb21cbiAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAibG9uZyIsICJzdHIiIGFuZCAidHVwbGUiLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3NcbiAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuXG4gIENoYW5nZWQgaW4gdmVyc2lvbiAyLjY6IFByZXZpb3VzbHksICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgcmFpc2VkIGFuXG4gIGVycm9yIGlmIGVpdGhlciBuZXcgb3Igb2xkIGNsYXNzIGhhZCAqX19zbG90c19fKi5cblxuXG5DdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuQnkgZGVmYXVsdCwgbmV3LXN0eWxlIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBBIGNsYXNzXG5kZWZpbml0aW9uIGlzIHJlYWQgaW50byBhIHNlcGFyYXRlIG5hbWVzcGFjZSBhbmQgdGhlIHZhbHVlIG9mIGNsYXNzXG5uYW1lIGlzIGJvdW5kIHRvIHRoZSByZXN1bHQgb2YgInR5cGUobmFtZSwgYmFzZXMsIGRpY3QpIi5cblxuV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyByZWFkLCBpZiAqX19tZXRhY2xhc3NfXyogaXMgZGVmaW5lZCB0aGVuXG50aGUgY2FsbGFibGUgYXNzaWduZWQgdG8gaXQgd2lsbCBiZSBjYWxsZWQgaW5zdGVhZCBvZiAidHlwZSgpIi4gVGhpc1xuYWxsb3dzIGNsYXNzZXMgb3IgZnVuY3Rpb25zIHRvIGJlIHdyaXR0ZW4gd2hpY2ggbW9uaXRvciBvciBhbHRlciB0aGVcbmNsYXNzIGNyZWF0aW9uIHByb2Nlc3M6XG5cbiogTW9kaWZ5aW5nIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IHByaW9yIHRvIHRoZSBjbGFzcyBiZWluZyBjcmVhdGVkLlxuXG4qIFJldHVybmluZyBhbiBpbnN0YW5jZSBvZiBhbm90aGVyIGNsYXNzIC0tIGVzc2VudGlhbGx5IHBlcmZvcm1pbmdcbiAgdGhlIHJvbGUgb2YgYSBmYWN0b3J5IGZ1bmN0aW9uLlxuXG5UaGVzZSBzdGVwcyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGluIHRoZSBtZXRhY2xhc3NcJ3MgIl9fbmV3X18oKSJcbm1ldGhvZCAtLSAidHlwZS5fX25ld19fKCkiIGNhbiB0aGVuIGJlIGNhbGxlZCBmcm9tIHRoaXMgbWV0aG9kIHRvXG5jcmVhdGUgYSBjbGFzcyB3aXRoIGRpZmZlcmVudCBwcm9wZXJ0aWVzLiAgVGhpcyBleGFtcGxlIGFkZHMgYSBuZXdcbmVsZW1lbnQgdG8gdGhlIGNsYXNzIGRpY3Rpb25hcnkgYmVmb3JlIGNyZWF0aW5nIHRoZSBjbGFzczpcblxuICAgY2xhc3MgbWV0YWNscyh0eXBlKTpcbiAgICAgICBkZWYgX19uZXdfXyhtY3MsIG5hbWUsIGJhc2VzLCBkaWN0KTpcbiAgICAgICAgICAgZGljdFtcJ2Zvb1wnXSA9IFwnbWV0YWNscyB3YXMgaGVyZVwnXG4gICAgICAgICAgIHJldHVybiB0eXBlLl9fbmV3X18obWNzLCBuYW1lLCBiYXNlcywgZGljdClcblxuWW91IGNhbiBvZiBjb3Vyc2UgYWxzbyBvdmVycmlkZSBvdGhlciBjbGFzcyBtZXRob2RzIChvciBhZGQgbmV3XG5tZXRob2RzKTsgZm9yIGV4YW1wbGUgZGVmaW5pbmcgYSBjdXN0b20gIl9fY2FsbF9fKCkiIG1ldGhvZCBpbiB0aGVcbm1ldGFjbGFzcyBhbGxvd3MgY3VzdG9tIGJlaGF2aW9yIHdoZW4gdGhlIGNsYXNzIGlzIGNhbGxlZCwgZS5nLiBub3RcbmFsd2F5cyBjcmVhdGluZyBhIG5ldyBpbnN0YW5jZS5cblxuX19tZXRhY2xhc3NfX1xuXG4gICBUaGlzIHZhcmlhYmxlIGNhbiBiZSBhbnkgY2FsbGFibGUgYWNjZXB0aW5nIGFyZ3VtZW50cyBmb3IgIm5hbWUiLFxuICAgImJhc2VzIiwgYW5kICJkaWN0Ii4gIFVwb24gY2xhc3MgY3JlYXRpb24sIHRoZSBjYWxsYWJsZSBpcyB1c2VkXG4gICBpbnN0ZWFkIG9mIHRoZSBidWlsdC1pbiAidHlwZSgpIi5cblxuICAgTmV3IGluIHZlcnNpb24gMi4yLlxuXG5UaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGlzIGRldGVybWluZWQgYnkgdGhlIGZvbGxvd2luZyBwcmVjZWRlbmNlXG5ydWxlczpcblxuKiBJZiAiZGljdFtcJ19fbWV0YWNsYXNzX19cJ10iIGV4aXN0cywgaXQgaXMgdXNlZC5cblxuKiBPdGhlcndpc2UsIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBiYXNlIGNsYXNzLCBpdHMgbWV0YWNsYXNzIGlzXG4gIHVzZWQgKHRoaXMgbG9va3MgZm9yIGEgKl9fY2xhc3NfXyogYXR0cmlidXRlIGZpcnN0IGFuZCBpZiBub3QgZm91bmQsXG4gIHVzZXMgaXRzIHR5cGUpLlxuXG4qIE90aGVyd2lzZSwgaWYgYSBnbG9iYWwgdmFyaWFibGUgbmFtZWQgX19tZXRhY2xhc3NfXyBleGlzdHMsIGl0IGlzXG4gIHVzZWQuXG5cbiogT3RoZXJ3aXNlLCB0aGUgb2xkLXN0eWxlLCBjbGFzc2ljIG1ldGFjbGFzcyAodHlwZXMuQ2xhc3NUeXBlKSBpc1xuICB1c2VkLlxuXG5UaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgdGhhdCBoYXZlXG5iZWVuIGV4cGxvcmVkIGluY2x1ZGluZyBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsIGF1dG9tYXRpY1xuZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCBmcmFtZXdvcmtzLCBhbmRcbmF1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cblxuXG5DdXN0b21pemluZyBpbnN0YW5jZSBhbmQgc3ViY2xhc3MgY2hlY2tzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbk5ldyBpbiB2ZXJzaW9uIDIuNi5cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZVxuImlzaW5zdGFuY2UoKSIgYW5kICJpc3N1YmNsYXNzKCkiIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuSW4gcGFydGljdWxhciwgdGhlIG1ldGFjbGFzcyAiYWJjLkFCQ01ldGEiIGltcGxlbWVudHMgdGhlc2UgbWV0aG9kcyBpblxub3JkZXIgdG8gYWxsb3cgdGhlIGFkZGl0aW9uIG9mIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoQUJDcykgYXNcbiJ2aXJ0dWFsIGJhc2UgY2xhc3NlcyIgdG8gYW55IGNsYXNzIG9yIHR5cGUgKGluY2x1ZGluZyBidWlsdC1pblxudHlwZXMpLCBpbmNsdWRpbmcgb3RoZXIgQUJDcy5cblxuY2xhc3MuX19pbnN0YW5jZWNoZWNrX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIFJldHVybiB0cnVlIGlmICppbnN0YW5jZSogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0IG9yXG4gICBpbmRpcmVjdCkgaW5zdGFuY2Ugb2YgKmNsYXNzKi4gSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgImlzaW5zdGFuY2UoaW5zdGFuY2UsIGNsYXNzKSIuXG5cbmNsYXNzLl9fc3ViY2xhc3NjaGVja19fKHNlbGYsIHN1YmNsYXNzKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqc3ViY2xhc3MqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIHN1YmNsYXNzIG9mICpjbGFzcyouICBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gaW1wbGVtZW50XG4gICAiaXNzdWJjbGFzcyhzdWJjbGFzcywgY2xhc3MpIi5cblxuTm90ZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIGxvb2tlZCB1cCBvbiB0aGUgdHlwZSAobWV0YWNsYXNzKSBvZiBhXG5jbGFzcy4gIFRoZXkgY2Fubm90IGJlIGRlZmluZWQgYXMgY2xhc3MgbWV0aG9kcyBpbiB0aGUgYWN0dWFsIGNsYXNzLlxuVGhpcyBpcyBjb25zaXN0ZW50IHdpdGggdGhlIGxvb2t1cCBvZiBzcGVjaWFsIG1ldGhvZHMgdGhhdCBhcmUgY2FsbGVkXG5vbiBpbnN0YW5jZXMsIG9ubHkgaW4gdGhpcyBjYXNlIHRoZSBpbnN0YW5jZSBpcyBpdHNlbGYgYSBjbGFzcy5cblxuU2VlIGFsc286XG5cbiAgKipQRVAgMzExOSoqIC0gSW50cm9kdWNpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzXG4gICAgIEluY2x1ZGVzIHRoZSBzcGVjaWZpY2F0aW9uIGZvciBjdXN0b21pemluZyAiaXNpbnN0YW5jZSgpIiBhbmRcbiAgICAgImlzc3ViY2xhc3MoKSIgYmVoYXZpb3IgdGhyb3VnaCAiX19pbnN0YW5jZWNoZWNrX18oKSIgYW5kXG4gICAgICJfX3N1YmNsYXNzY2hlY2tfXygpIiwgd2l0aCBtb3RpdmF0aW9uIGZvciB0aGlzIGZ1bmN0aW9uYWxpdHkgaW5cbiAgICAgdGhlIGNvbnRleHQgb2YgYWRkaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3NlcyAoc2VlIHRoZSAiYWJjIlxuICAgICBtb2R1bGUpIHRvIHRoZSBsYW5ndWFnZS5cblxuXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT09PT1cblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbiAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuXG5cbkVtdWxhdGluZyBjb250YWluZXIgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGltcGxlbWVudCBjb250YWluZXIgb2JqZWN0cy5cbkNvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgb3IgbWFwcGluZ3NcbihsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgd2VsbC4gIFRoZVxuZmlyc3Qgc2V0IG9mIG1ldGhvZHMgaXMgdXNlZCBlaXRoZXIgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIG9yIHRvXG5lbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgdGhlXG5hbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gayA8IE4iIHdoZXJlXG4qTiogaXMgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UsIG9yIHNsaWNlIG9iamVjdHMsIHdoaWNoIGRlZmluZSBhXG5yYW5nZSBvZiBpdGVtcy4gKEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSwgdGhlIG1ldGhvZFxuIl9fZ2V0c2xpY2VfXygpIiAoc2VlIGJlbG93KSBjYW4gYWxzbyBiZSBkZWZpbmVkIHRvIGhhbmRsZSBzaW1wbGUsIGJ1dFxubm90IGV4dGVuZGVkIHNsaWNlcy4pIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyBwcm92aWRlIHRoZVxubWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiaGFzX2tleSgpIiwgImdldCgpIixcbiJjbGVhcigpIiwgInNldGRlZmF1bHQoKSIsICJpdGVya2V5cygpIiwgIml0ZXJ2YWx1ZXMoKSIsXG4iaXRlcml0ZW1zKCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAidXBkYXRlKCkiIGJlaGF2aW5nXG5zaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLiAgVGhlXG4iVXNlckRpY3QiIG1vZHVsZSBwcm92aWRlcyBhICJEaWN0TWl4aW4iIGNsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlXG5tZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsICJfX3NldGl0ZW1fXygpIixcbiJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlcyBzaG91bGQgcHJvdmlkZVxubWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIiwgImluc2VydCgpIixcbiJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob24gc3RhbmRhcmRcbmxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnQgYWRkaXRpb25cbihtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZyByZXBldGl0aW9uKSBieVxuZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIiwgIl9faWFkZF9fKCkiLFxuIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZCBiZWxvdzsgdGhleVxuc2hvdWxkIG5vdCBkZWZpbmUgIl9fY29lcmNlX18oKSIgb3Igb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0IGlzXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4iX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iIG9wZXJhdG9yO1xuZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBiZSBlcXVpdmFsZW50IG9mICJoYXNfa2V5KCkiOyBmb3Igc2VxdWVuY2VzLFxuaXQgc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyIHJlY29tbWVuZGVkIHRoYXRcbmJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlICJfX2l0ZXJfXygpIiBtZXRob2QgdG8gYWxsb3dcbmVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICJfX2l0ZXJfXygpIlxuc2hvdWxkIGJlIHRoZSBzYW1lIGFzICJpdGVya2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGVcbnRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiBvYmplY3QgdGhhdFxuICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fbm9uemVyb19fKCkiIG1ldGhvZCBhbmQgd2hvc2UgIl9fbGVuX18oKSJcbiAgIG1ldGhvZCByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3Igc2VxdWVuY2UgdHlwZXMsXG4gICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICBOb3RlIHRoYXRcbiAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSBjbGFzcyB3aXNoZXNcbiAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbiAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlIHJhaXNlZDsgaWYgb2ZcbiAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55XG4gICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiBzaG91bGQgYmVcbiAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGVcbiAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iIGZvciBkaWN0XG4gICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lciwgYW5kIHNob3VsZCBhbHNvIGJlIG1hZGVcbiAgIGF2YWlsYWJsZSBhcyB0aGUgbWV0aG9kICJpdGVya2V5cygpIi5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlIEl0ZXJhdG9yIFR5cGVzLlxuXG5vYmplY3QuX19yZXZlcnNlZF9fKHNlbGYpXG5cbiAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byBpbXBsZW1lbnRcbiAgIHJldmVyc2UgaXRlcmF0aW9uLiAgSXQgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdFxuICAgaXRlcmF0ZXMgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lciBpbiByZXZlcnNlIG9yZGVyLlxuXG4gICBJZiB0aGUgIl9fcmV2ZXJzZWRfXygpIiBtZXRob2QgaXMgbm90IHByb3ZpZGVkLCB0aGUgInJldmVyc2VkKCkiXG4gICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgKCJfX2xlbl9fKCkiXG4gICBhbmQgIl9fZ2V0aXRlbV9fKCkiKS4gIE9iamVjdHMgdGhhdCBzdXBwb3J0IHRoZSBzZXF1ZW5jZSBwcm90b2NvbFxuICAgc2hvdWxkIG9ubHkgcHJvdmlkZSAiX19yZXZlcnNlZF9fKCkiIGlmIHRoZXkgY2FuIHByb3ZpZGUgYW5cbiAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lIHByb3ZpZGVkIGJ5XG4gICAicmV2ZXJzZWQoKSIuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNi5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlIG1lbWJlcnNoaXAgdGVzdFxuICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCBzZXF1ZW5jZVxuICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSB0aGlzIHNlY3Rpb24gaW4gdGhlXG4gICBsYW5ndWFnZSByZWZlcmVuY2UuXG5cblxuQWRkaXRpb25hbCBtZXRob2RzIGZvciBlbXVsYXRpb24gb2Ygc2VxdWVuY2UgdHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgb3B0aW9uYWwgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBmdXJ0aGVyIGVtdWxhdGVcbnNlcXVlbmNlIG9iamVjdHMuICBJbW11dGFibGUgc2VxdWVuY2VzIG1ldGhvZHMgc2hvdWxkIGF0IG1vc3Qgb25seVxuZGVmaW5lICJfX2dldHNsaWNlX18oKSI7IG11dGFibGUgc2VxdWVuY2VzIG1pZ2h0IGRlZmluZSBhbGwgdGhyZWVcbm1ldGhvZHMuXG5cbm9iamVjdC5fX2dldHNsaWNlX18oc2VsZiwgaSwgailcblxuICAgRGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDIuMDogU3VwcG9ydCBzbGljZSBvYmplY3RzIGFzIHBhcmFtZXRlcnNcbiAgIHRvIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLiAoSG93ZXZlciwgYnVpbHQtaW4gdHlwZXMgaW4gQ1B5dGhvblxuICAgY3VycmVudGx5IHN0aWxsIGltcGxlbWVudCAiX19nZXRzbGljZV9fKCkiLiAgVGhlcmVmb3JlLCB5b3UgaGF2ZSB0b1xuICAgb3ZlcnJpZGUgaXQgaW4gZGVyaXZlZCBjbGFzc2VzIHdoZW4gaW1wbGVtZW50aW5nIHNsaWNpbmcuKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgInNlbGZbaTpqXSIuIFRoZSByZXR1cm5lZCBvYmplY3RcbiAgIHNob3VsZCBiZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzZWxmKi4gIE5vdGUgdGhhdCBtaXNzaW5nICppKiBvciAqaipcbiAgIGluIHRoZSBzbGljZSBleHByZXNzaW9uIGFyZSByZXBsYWNlZCBieSB6ZXJvIG9yICJzeXMubWF4c2l6ZSIsXG4gICByZXNwZWN0aXZlbHkuICBJZiBuZWdhdGl2ZSBpbmRleGVzIGFyZSB1c2VkIGluIHRoZSBzbGljZSwgdGhlXG4gICBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIGlzIGFkZGVkIHRvIHRoYXQgaW5kZXguIElmIHRoZSBpbnN0YW5jZSBkb2VzXG4gICBub3QgaW1wbGVtZW50IHRoZSAiX19sZW5fXygpIiBtZXRob2QsIGFuICJBdHRyaWJ1dGVFcnJvciIgaXNcbiAgIHJhaXNlZC4gTm8gZ3VhcmFudGVlIGlzIG1hZGUgdGhhdCBpbmRleGVzIGFkanVzdGVkIHRoaXMgd2F5IGFyZSBub3RcbiAgIHN0aWxsIG5lZ2F0aXZlLiAgSW5kZXhlcyB3aGljaCBhcmUgZ3JlYXRlciB0aGFuIHRoZSBsZW5ndGggb2YgdGhlXG4gICBzZXF1ZW5jZSBhcmUgbm90IG1vZGlmaWVkLiBJZiBubyAiX19nZXRzbGljZV9fKCkiIGlzIGZvdW5kLCBhIHNsaWNlXG4gICBvYmplY3QgaXMgY3JlYXRlZCBpbnN0ZWFkLCBhbmQgcGFzc2VkIHRvICJfX2dldGl0ZW1fXygpIiBpbnN0ZWFkLlxuXG5vYmplY3QuX19zZXRzbGljZV9fKHNlbGYsIGksIGosIHNlcXVlbmNlKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZbaTpqXSIuIFNhbWUgbm90ZXMgZm9yICppKlxuICAgYW5kICpqKiBhcyBmb3IgIl9fZ2V0c2xpY2VfXygpIi5cblxuICAgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gSWYgbm8gIl9fc2V0c2xpY2VfXygpIiBpcyBmb3VuZCwgb3IgZm9yXG4gICBleHRlbmRlZCBzbGljaW5nIG9mIHRoZSBmb3JtICJzZWxmW2k6ajprXSIsIGEgc2xpY2Ugb2JqZWN0IGlzXG4gICBjcmVhdGVkLCBhbmQgcGFzc2VkIHRvICJfX3NldGl0ZW1fXygpIiwgaW5zdGVhZCBvZiAiX19zZXRzbGljZV9fKCkiXG4gICBiZWluZyBjYWxsZWQuXG5cbm9iamVjdC5fX2RlbHNsaWNlX18oc2VsZiwgaSwgailcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltpOmpdIi4gU2FtZSBub3RlcyBmb3IgKmkqIGFuZFxuICAgKmoqIGFzIGZvciAiX19nZXRzbGljZV9fKCkiLiBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLiBJZiBub1xuICAgIl9fZGVsc2xpY2VfXygpIiBpcyBmb3VuZCwgb3IgZm9yIGV4dGVuZGVkIHNsaWNpbmcgb2YgdGhlIGZvcm1cbiAgICJzZWxmW2k6ajprXSIsIGEgc2xpY2Ugb2JqZWN0IGlzIGNyZWF0ZWQsIGFuZCBwYXNzZWQgdG9cbiAgICJfX2RlbGl0ZW1fXygpIiwgaW5zdGVhZCBvZiAiX19kZWxzbGljZV9fKCkiIGJlaW5nIGNhbGxlZC5cblxuTm90aWNlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgb25seSBpbnZva2VkIHdoZW4gYSBzaW5nbGUgc2xpY2Ugd2l0aCBhXG5zaW5nbGUgY29sb24gaXMgdXNlZCwgYW5kIHRoZSBzbGljZSBtZXRob2QgaXMgYXZhaWxhYmxlLiAgRm9yIHNsaWNlXG5vcGVyYXRpb25zIGludm9sdmluZyBleHRlbmRlZCBzbGljZSBub3RhdGlvbiwgb3IgaW4gYWJzZW5jZSBvZiB0aGVcbnNsaWNlIG1ldGhvZHMsICJfX2dldGl0ZW1fXygpIiwgIl9fc2V0aXRlbV9fKCkiIG9yICJfX2RlbGl0ZW1fXygpIiBpc1xuY2FsbGVkIHdpdGggYSBzbGljZSBvYmplY3QgYXMgYXJndW1lbnQuXG5cblRoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZSBob3cgdG8gbWFrZSB5b3VyIHByb2dyYW0gb3IgbW9kdWxlXG5jb21wYXRpYmxlIHdpdGggZWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24gKGFzc3VtaW5nIHRoYXQgbWV0aG9kc1xuIl9fZ2V0aXRlbV9fKCkiLCAiX19zZXRpdGVtX18oKSIgYW5kICJfX2RlbGl0ZW1fXygpIiBzdXBwb3J0IHNsaWNlXG5vYmplY3RzIGFzIGFyZ3VtZW50cyk6XG5cbiAgIGNsYXNzIE15Q2xhc3M6XG4gICAgICAgLi4uXG4gICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGluZGV4KTpcbiAgICAgICAgICAgLi4uXG4gICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGluZGV4LCB2YWx1ZSk6XG4gICAgICAgICAgIC4uLlxuICAgICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBpbmRleCk6XG4gICAgICAgICAgIC4uLlxuXG4gICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgyLCAwKTpcbiAgICAgICAgICAgIyBUaGV5IHdvblwndCBiZSBkZWZpbmVkIGlmIHZlcnNpb24gaXMgYXQgbGVhc3QgMi4wIGZpbmFsXG5cbiAgICAgICAgICAgZGVmIF9fZ2V0c2xpY2VfXyhzZWxmLCBpLCBqKTpcbiAgICAgICAgICAgICAgIHJldHVybiBzZWxmW21heCgwLCBpKTptYXgoMCwgaik6XVxuICAgICAgICAgICBkZWYgX19zZXRzbGljZV9fKHNlbGYsIGksIGosIHNlcSk6XG4gICAgICAgICAgICAgICBzZWxmW21heCgwLCBpKTptYXgoMCwgaik6XSA9IHNlcVxuICAgICAgICAgICBkZWYgX19kZWxzbGljZV9fKHNlbGYsIGksIGopOlxuICAgICAgICAgICAgICAgZGVsIHNlbGZbbWF4KDAsIGkpOm1heCgwLCBqKTpdXG4gICAgICAgLi4uXG5cbk5vdGUgdGhlIGNhbGxzIHRvICJtYXgoKSI7IHRoZXNlIGFyZSBuZWNlc3NhcnkgYmVjYXVzZSBvZiB0aGUgaGFuZGxpbmdcbm9mIG5lZ2F0aXZlIGluZGljZXMgYmVmb3JlIHRoZSAiX18qc2xpY2VfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQuXG5XaGVuIG5lZ2F0aXZlIGluZGV4ZXMgYXJlIHVzZWQsIHRoZSAiX18qaXRlbV9fKCkiIG1ldGhvZHMgcmVjZWl2ZSB0aGVtXG5hcyBwcm92aWRlZCwgYnV0IHRoZSAiX18qc2xpY2VfXygpIiBtZXRob2RzIGdldCBhICJjb29rZWQiIGZvcm0gb2YgdGhlXG5pbmRleCB2YWx1ZXMuICBGb3IgZWFjaCBuZWdhdGl2ZSBpbmRleCB2YWx1ZSwgdGhlIGxlbmd0aCBvZiB0aGVcbnNlcXVlbmNlIGlzIGFkZGVkIHRvIHRoZSBpbmRleCBiZWZvcmUgY2FsbGluZyB0aGUgbWV0aG9kICh3aGljaCBtYXlcbnN0aWxsIHJlc3VsdCBpbiBhIG5lZ2F0aXZlIGluZGV4KTsgdGhpcyBpcyB0aGUgY3VzdG9tYXJ5IGhhbmRsaW5nIG9mXG5uZWdhdGl2ZSBpbmRleGVzIGJ5IHRoZSBidWlsdC1pbiBzZXF1ZW5jZSB0eXBlcywgYW5kIHRoZSAiX18qaXRlbV9fKCkiXG5tZXRob2RzIGFyZSBleHBlY3RlZCB0byBkbyB0aGlzIGFzIHdlbGwuICBIb3dldmVyLCBzaW5jZSB0aGV5IHNob3VsZFxuYWxyZWFkeSBiZSBkb2luZyB0aGF0LCBuZWdhdGl2ZSBpbmRleGVzIGNhbm5vdCBiZSBwYXNzZWQgaW47IHRoZXkgbXVzdFxuYmUgY29uc3RyYWluZWQgdG8gdGhlIGJvdW5kcyBvZiB0aGUgc2VxdWVuY2UgYmVmb3JlIGJlaW5nIHBhc3NlZCB0b1xudGhlICJfXyppdGVtX18oKSIgbWV0aG9kcy4gQ2FsbGluZyAibWF4KDAsIGkpIiBjb252ZW5pZW50bHkgcmV0dXJuc1xudGhlIHByb3BlciB2YWx1ZS5cblxuXG5FbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyBvYmplY3RzLlxuTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGVcbnBhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2Ugb3BlcmF0aW9ucyBmb3Jcbm5vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG5cbm9iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxub2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLCAicG93KCkiLCAiKioiLFxuICAgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZVxuICAgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhblxuICAgIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuICBUaGUgIl9fZGl2bW9kX18oKSJcbiAgIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgIl9fZmxvb3JkaXZfXygpIiBhbmRcbiAgICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8gIl9fdHJ1ZWRpdl9fKCkiIChkZXNjcmliZWRcbiAgIGJlbG93KS4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byBhY2NlcHQgYW5cbiAgIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlIGJ1aWx0LWluXG4gICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cblxuICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIHdpdGggdGhlXG4gICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cblxub2JqZWN0Ll9fZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZSBkaXZpc2lvbiBvcGVyYXRvciAoIi8iKSBpcyBpbXBsZW1lbnRlZCBieSB0aGVzZSBtZXRob2RzLiAgVGhlXG4gICAiX190cnVlZGl2X18oKSIgbWV0aG9kIGlzIHVzZWQgd2hlbiAiX19mdXR1cmVfXy5kaXZpc2lvbiIgaXMgaW5cbiAgIGVmZmVjdCwgb3RoZXJ3aXNlICJfX2Rpdl9fKCkiIGlzIHVzZWQuICBJZiBvbmx5IG9uZSBvZiB0aGVzZSB0d29cbiAgIG1ldGhvZHMgaXMgZGVmaW5lZCwgdGhlIG9iamVjdCB3aWxsIG5vdCBzdXBwb3J0IGRpdmlzaW9uIGluIHRoZVxuICAgYWx0ZXJuYXRlIGNvbnRleHQ7ICJUeXBlRXJyb3IiIHdpbGwgYmUgcmFpc2VkIGluc3RlYWQuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIi8iLCAiJSIsICJkaXZtb2QoKSIsICJwb3coKSIsICIqKiIsXG4gICAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZCkgb3BlcmFuZHMuXG4gICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcyBub3RcbiAgIHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mXG4gICBkaWZmZXJlbnQgdHlwZXMuIFsyXSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4IC1cbiAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19yc3ViX18oKSJcbiAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICJfX3Jwb3dfXygpIiAodGhlXG4gICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZFxuICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzXG4gICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiLz0iLCAiLy89IiwgIiU9IiwgIioqPSIsICI8PD0iLFxuICAgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0byBkbyB0aGVcbiAgIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0ICh3aGljaFxuICAgY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpYyBtZXRob2RcbiAgIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGUgbm9ybWFsXG4gICBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCB0byBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgInggKz0geSIsIHdoZXJlXG4gICAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19pYWRkX18oKSIgbWV0aG9kLFxuICAgInguX19pYWRkX18oeSkiIGlzIGNhbGxlZC4gIElmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXRcbiAgIGRvZXMgbm90IGRlZmluZSBhICJfX2lhZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGFuZFxuICAgInkuX19yYWRkX18oeCkiIGFyZSBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuXG5cbm9iamVjdC5fX25lZ19fKHNlbGYpXG5vYmplY3QuX19wb3NfXyhzZWxmKVxub2JqZWN0Ll9fYWJzX18oc2VsZilcbm9iamVjdC5fX2ludmVydF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAiKyIsXG4gICAiYWJzKCkiIGFuZCAifiIpLlxuXG5vYmplY3QuX19jb21wbGV4X18oc2VsZilcbm9iamVjdC5fX2ludF9fKHNlbGYpXG5vYmplY3QuX19sb25nX18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAiaW50KCkiLFxuICAgImxvbmcoKSIsIGFuZCAiZmxvYXQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlXG4gICB0eXBlLlxuXG5vYmplY3QuX19vY3RfXyhzZWxmKVxub2JqZWN0Ll9faGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJvY3QoKSIgYW5kICJoZXgoKSIuXG4gICBTaG91bGQgcmV0dXJuIGEgc3RyaW5nIHZhbHVlLlxuXG5vYmplY3QuX19pbmRleF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLiAgQWxzbyBjYWxsZWQgd2hlbmV2ZXJcbiAgIFB5dGhvbiBuZWVkcyBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaCBhcyBpbiBzbGljaW5nKS4gIE11c3QgcmV0dXJuXG4gICBhbiBpbnRlZ2VyIChpbnQgb3IgbG9uZykuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNS5cblxub2JqZWN0Ll9fY29lcmNlX18oc2VsZiwgb3RoZXIpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm1peGVkLW1vZGUiIG51bWVyaWMgYXJpdGhtZXRpYy4gIFNob3VsZCBlaXRoZXJcbiAgIHJldHVybiBhIDItdHVwbGUgY29udGFpbmluZyAqc2VsZiogYW5kICpvdGhlciogY29udmVydGVkIHRvIGFcbiAgIGNvbW1vbiBudW1lcmljIHR5cGUsIG9yICJOb25lIiBpZiBjb252ZXJzaW9uIGlzIGltcG9zc2libGUuICBXaGVuXG4gICB0aGUgY29tbW9uIHR5cGUgd291bGQgYmUgdGhlIHR5cGUgb2YgIm90aGVyIiwgaXQgaXMgc3VmZmljaWVudCB0b1xuICAgcmV0dXJuICJOb25lIiwgc2luY2UgdGhlIGludGVycHJldGVyIHdpbGwgYWxzbyBhc2sgdGhlIG90aGVyIG9iamVjdFxuICAgdG8gYXR0ZW1wdCBhIGNvZXJjaW9uIChidXQgc29tZXRpbWVzLCBpZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlXG4gICBvdGhlciB0eXBlIGNhbm5vdCBiZSBjaGFuZ2VkLCBpdCBpcyB1c2VmdWwgdG8gZG8gdGhlIGNvbnZlcnNpb24gdG9cbiAgIHRoZSBvdGhlciB0eXBlIGhlcmUpLiAgQSByZXR1cm4gdmFsdWUgb2YgIk5vdEltcGxlbWVudGVkIiBpc1xuICAgZXF1aXZhbGVudCB0byByZXR1cm5pbmcgIk5vbmUiLlxuXG5cbkNvZXJjaW9uIHJ1bGVzXG49PT09PT09PT09PT09PVxuXG5UaGlzIHNlY3Rpb24gdXNlZCB0byBkb2N1bWVudCB0aGUgcnVsZXMgZm9yIGNvZXJjaW9uLiAgQXMgdGhlIGxhbmd1YWdlXG5oYXMgZXZvbHZlZCwgdGhlIGNvZXJjaW9uIHJ1bGVzIGhhdmUgYmVjb21lIGhhcmQgdG8gZG9jdW1lbnRcbnByZWNpc2VseTsgZG9jdW1lbnRpbmcgd2hhdCBvbmUgdmVyc2lvbiBvZiBvbmUgcGFydGljdWxhclxuaW1wbGVtZW50YXRpb24gZG9lcyBpcyB1bmRlc2lyYWJsZS4gIEluc3RlYWQsIGhlcmUgYXJlIHNvbWUgaW5mb3JtYWxcbmd1aWRlbGluZXMgcmVnYXJkaW5nIGNvZXJjaW9uLiAgSW4gUHl0aG9uIDMsIGNvZXJjaW9uIHdpbGwgbm90IGJlXG5zdXBwb3J0ZWQuXG5cbiogSWYgdGhlIGxlZnQgb3BlcmFuZCBvZiBhICUgb3BlcmF0b3IgaXMgYSBzdHJpbmcgb3IgVW5pY29kZSBvYmplY3QsXG4gIG5vIGNvZXJjaW9uIHRha2VzIHBsYWNlIGFuZCB0aGUgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uIGlzXG4gIGludm9rZWQgaW5zdGVhZC5cblxuKiBJdCBpcyBubyBsb25nZXIgcmVjb21tZW5kZWQgdG8gZGVmaW5lIGEgY29lcmNpb24gb3BlcmF0aW9uLiBNaXhlZC1cbiAgbW9kZSBvcGVyYXRpb25zIG9uIHR5cGVzIHRoYXQgZG9uXCd0IGRlZmluZSBjb2VyY2lvbiBwYXNzIHRoZVxuICBvcmlnaW5hbCBhcmd1bWVudHMgdG8gdGhlIG9wZXJhdGlvbi5cblxuKiBOZXctc3R5bGUgY2xhc3NlcyAodGhvc2UgZGVyaXZlZCBmcm9tICJvYmplY3QiKSBuZXZlciBpbnZva2UgdGhlXG4gICJfX2NvZXJjZV9fKCkiIG1ldGhvZCBpbiByZXNwb25zZSB0byBhIGJpbmFyeSBvcGVyYXRvcjsgdGhlIG9ubHlcbiAgdGltZSAiX19jb2VyY2VfXygpIiBpcyBpbnZva2VkIGlzIHdoZW4gdGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICJjb2VyY2UoKSIgaXMgY2FsbGVkLlxuXG4qIEZvciBtb3N0IGludGVudHMgYW5kIHB1cnBvc2VzLCBhbiBvcGVyYXRvciB0aGF0IHJldHVybnNcbiAgIk5vdEltcGxlbWVudGVkIiBpcyB0cmVhdGVkIHRoZSBzYW1lIGFzIG9uZSB0aGF0IGlzIG5vdCBpbXBsZW1lbnRlZFxuICBhdCBhbGwuXG5cbiogQmVsb3csICJfX29wX18oKSIgYW5kICJfX3JvcF9fKCkiIGFyZSB1c2VkIHRvIHNpZ25pZnkgdGhlIGdlbmVyaWNcbiAgbWV0aG9kIG5hbWVzIGNvcnJlc3BvbmRpbmcgdG8gYW4gb3BlcmF0b3I7ICJfX2lvcF9fKCkiIGlzIHVzZWQgZm9yXG4gIHRoZSBjb3JyZXNwb25kaW5nIGluLXBsYWNlIG9wZXJhdG9yLiAgRm9yIGV4YW1wbGUsIGZvciB0aGUgb3BlcmF0b3JcbiAgXCciKyJcJywgIl9fYWRkX18oKSIgYW5kICJfX3JhZGRfXygpIiBhcmUgdXNlZCBmb3IgdGhlIGxlZnQgYW5kIHJpZ2h0XG4gIHZhcmlhbnQgb2YgdGhlIGJpbmFyeSBvcGVyYXRvciwgYW5kICJfX2lhZGRfXygpIiBmb3IgdGhlIGluLXBsYWNlXG4gIHZhcmlhbnQuXG5cbiogRm9yIG9iamVjdHMgKngqIGFuZCAqeSosIGZpcnN0ICJ4Ll9fb3BfXyh5KSIgaXMgdHJpZWQuICBJZiB0aGlzIGlzXG4gIG5vdCBpbXBsZW1lbnRlZCBvciByZXR1cm5zICJOb3RJbXBsZW1lbnRlZCIsICJ5Ll9fcm9wX18oeCkiIGlzXG4gIHRyaWVkLiAgSWYgdGhpcyBpcyBhbHNvIG5vdCBpbXBsZW1lbnRlZCBvciByZXR1cm5zICJOb3RJbXBsZW1lbnRlZCIsXG4gIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gIEJ1dCBzZWUgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG5cbiogRXhjZXB0aW9uIHRvIHRoZSBwcmV2aW91cyBpdGVtOiBpZiB0aGUgbGVmdCBvcGVyYW5kIGlzIGFuIGluc3RhbmNlXG4gIG9mIGEgYnVpbHQtaW4gdHlwZSBvciBhIG5ldy1zdHlsZSBjbGFzcywgYW5kIHRoZSByaWdodCBvcGVyYW5kIGlzIGFuXG4gIGluc3RhbmNlIG9mIGEgcHJvcGVyIHN1YmNsYXNzIG9mIHRoYXQgdHlwZSBvciBjbGFzcyBhbmQgb3ZlcnJpZGVzXG4gIHRoZSBiYXNlXCdzICJfX3JvcF9fKCkiIG1ldGhvZCwgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgIl9fcm9wX18oKSJcbiAgbWV0aG9kIGlzIHRyaWVkICpiZWZvcmUqIHRoZSBsZWZ0IG9wZXJhbmRcJ3MgIl9fb3BfXygpIiBtZXRob2QuXG5cbiAgVGhpcyBpcyBkb25lIHNvIHRoYXQgYSBzdWJjbGFzcyBjYW4gY29tcGxldGVseSBvdmVycmlkZSBiaW5hcnlcbiAgb3BlcmF0b3JzLiBPdGhlcndpc2UsIHRoZSBsZWZ0IG9wZXJhbmRcJ3MgIl9fb3BfXygpIiBtZXRob2Qgd291bGRcbiAgYWx3YXlzIGFjY2VwdCB0aGUgcmlnaHQgb3BlcmFuZDogd2hlbiBhbiBpbnN0YW5jZSBvZiBhIGdpdmVuIGNsYXNzXG4gIGlzIGV4cGVjdGVkLCBhbiBpbnN0YW5jZSBvZiBhIHN1YmNsYXNzIG9mIHRoYXQgY2xhc3MgaXMgYWx3YXlzXG4gIGFjY2VwdGFibGUuXG5cbiogV2hlbiBlaXRoZXIgb3BlcmFuZCB0eXBlIGRlZmluZXMgYSBjb2VyY2lvbiwgdGhpcyBjb2VyY2lvbiBpc1xuICBjYWxsZWQgYmVmb3JlIHRoYXQgdHlwZVwncyAiX19vcF9fKCkiIG9yICJfX3JvcF9fKCkiIG1ldGhvZCBpc1xuICBjYWxsZWQsIGJ1dCBubyBzb29uZXIuICBJZiB0aGUgY29lcmNpb24gcmV0dXJucyBhbiBvYmplY3Qgb2YgYVxuICBkaWZmZXJlbnQgdHlwZSBmb3IgdGhlIG9wZXJhbmQgd2hvc2UgY29lcmNpb24gaXMgaW52b2tlZCwgcGFydCBvZlxuICB0aGUgcHJvY2VzcyBpcyByZWRvbmUgdXNpbmcgdGhlIG5ldyBvYmplY3QuXG5cbiogV2hlbiBhbiBpbi1wbGFjZSBvcGVyYXRvciAobGlrZSBcJyIrPSJcJykgaXMgdXNlZCwgaWYgdGhlIGxlZnRcbiAgb3BlcmFuZCBpbXBsZW1lbnRzICJfX2lvcF9fKCkiLCBpdCBpcyBpbnZva2VkIHdpdGhvdXQgYW55IGNvZXJjaW9uLlxuICBXaGVuIHRoZSBvcGVyYXRpb24gZmFsbHMgYmFjayB0byAiX19vcF9fKCkiIGFuZC9vciAiX19yb3BfXygpIiwgdGhlXG4gIG5vcm1hbCBjb2VyY2lvbiBydWxlcyBhcHBseS5cblxuKiBJbiAieCArIHkiLCBpZiAqeCogaXMgYSBzZXF1ZW5jZSB0aGF0IGltcGxlbWVudHMgc2VxdWVuY2VcbiAgY29uY2F0ZW5hdGlvbiwgc2VxdWVuY2UgY29uY2F0ZW5hdGlvbiBpcyBpbnZva2VkLlxuXG4qIEluICJ4ICogeSIsIGlmIG9uZSBvcGVyYW5kIGlzIGEgc2VxdWVuY2UgdGhhdCBpbXBsZW1lbnRzIHNlcXVlbmNlXG4gIHJlcGV0aXRpb24sIGFuZCB0aGUgb3RoZXIgaXMgYW4gaW50ZWdlciAoImludCIgb3IgImxvbmciKSwgc2VxdWVuY2VcbiAgcmVwZXRpdGlvbiBpcyBpbnZva2VkLlxuXG4qIFJpY2ggY29tcGFyaXNvbnMgKGltcGxlbWVudGVkIGJ5IG1ldGhvZHMgIl9fZXFfXygpIiBhbmQgc28gb24pXG4gIG5ldmVyIHVzZSBjb2VyY2lvbi4gIFRocmVlLXdheSBjb21wYXJpc29uIChpbXBsZW1lbnRlZCBieVxuICAiX19jbXBfXygpIikgZG9lcyB1c2UgY29lcmNpb24gdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBvdGhlclxuICBiaW5hcnkgb3BlcmF0aW9ucyB1c2UgaXQuXG5cbiogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSBidWlsdC1pbiBudW1lcmljIHR5cGVzICJpbnQiLFxuICAibG9uZyIsICJmbG9hdCIsIGFuZCAiY29tcGxleCIgZG8gbm90IHVzZSBjb2VyY2lvbi4gQWxsIHRoZXNlIHR5cGVzXG4gIGltcGxlbWVudCBhICJfX2NvZXJjZV9fKCkiIG1ldGhvZCwgZm9yIHVzZSBieSB0aGUgYnVpbHQtaW5cbiAgImNvZXJjZSgpIiBmdW5jdGlvbi5cblxuICBDaGFuZ2VkIGluIHZlcnNpb24gMi43OiBUaGUgY29tcGxleCB0eXBlIG5vIGxvbmdlciBtYWtlcyBpbXBsaWNpdFxuICBjYWxscyB0byB0aGUgIl9fY29lcmNlX18oKSIgbWV0aG9kIGZvciBtaXhlZC10eXBlIGJpbmFyeSBhcml0aG1ldGljXG4gIG9wZXJhdGlvbnMuXG5cblxuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5OZXcgaW4gdmVyc2lvbiAyLjUuXG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0IG1hbmFnZXJcbmhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lIGNvbnRleHRcbmZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmUgbm9ybWFsbHlcbmludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uIFRoZSB3aXRoXG5zdGF0ZW1lbnQpLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciBtZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSBDb250ZXh0IE1hbmFnZXIgVHlwZXMuXG5cbm9iamVjdC5fX2VudGVyX18oc2VsZilcblxuICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgIndpdGgiXG4gICBzdGF0ZW1lbnQgd2lsbCBiaW5kIHRoaXMgbWV0aG9kXCdzIHJldHVybiB2YWx1ZSB0byB0aGUgdGFyZ2V0KHMpXG4gICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cblxub2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcblxuICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSBwYXJhbWV0ZXJzXG4gICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlIGV4aXRlZC4gSWYgdGhlXG4gICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSBhcmd1bWVudHMgd2lsbFxuICAgYmUgIk5vbmUiLlxuXG4gICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byBzdXBwcmVzcyB0aGVcbiAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCBzaG91bGRcbiAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlIHByb2Nlc3NlZFxuICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG5cbiAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlIHBhc3NlZC1pblxuICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXJcJ3MgcmVzcG9uc2liaWxpdHkuXG5cblNlZSBhbHNvOlxuXG4gICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuXG5cblNwZWNpYWwgbWV0aG9kIGxvb2t1cCBmb3Igb2xkLXN0eWxlIGNsYXNzZXNcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIG9sZC1zdHlsZSBjbGFzc2VzLCBzcGVjaWFsIG1ldGhvZHMgYXJlIGFsd2F5cyBsb29rZWQgdXAgaW4gZXhhY3RseVxudGhlIHNhbWUgd2F5IGFzIGFueSBvdGhlciBtZXRob2Qgb3IgYXR0cmlidXRlLiBUaGlzIGlzIHRoZSBjYXNlXG5yZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhlIG1ldGhvZCBpcyBiZWluZyBsb29rZWQgdXAgZXhwbGljaXRseSBhcyBpblxuInguX19nZXRpdGVtX18oaSkiIG9yIGltcGxpY2l0bHkgYXMgaW4gInhbaV0iLlxuXG5UaGlzIGJlaGF2aW91ciBtZWFucyB0aGF0IHNwZWNpYWwgbWV0aG9kcyBtYXkgZXhoaWJpdCBkaWZmZXJlbnRcbmJlaGF2aW91ciBmb3IgZGlmZmVyZW50IGluc3RhbmNlcyBvZiBhIHNpbmdsZSBvbGQtc3R5bGUgY2xhc3MgaWYgdGhlXG5hcHByb3ByaWF0ZSBzcGVjaWFsIGF0dHJpYnV0ZXMgYXJlIHNldCBkaWZmZXJlbnRseTpcblxuICAgPj4+IGNsYXNzIEM6XG4gICAuLi4gICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMxID0gQygpXG4gICA+Pj4gYzIgPSBDKClcbiAgID4+PiBjMS5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gYzIuX19sZW5fXyA9IGxhbWJkYTogOVxuICAgPj4+IGxlbihjMSlcbiAgIDVcbiAgID4+PiBsZW4oYzIpXG4gICA5XG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwIGZvciBuZXctc3R5bGUgY2xhc3Nlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5Gb3IgbmV3LXN0eWxlIGNsYXNzZXMsIGltcGxpY2l0IGludm9jYXRpb25zIG9mIHNwZWNpYWwgbWV0aG9kcyBhcmVcbm9ubHkgZ3VhcmFudGVlZCB0byB3b3JrIGNvcnJlY3RseSBpZiBkZWZpbmVkIG9uIGFuIG9iamVjdFwncyB0eXBlLCBub3RcbmluIHRoZSBvYmplY3RcJ3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSByZWFzb24gd2h5XG50aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbiAodW5saWtlIHRoZSBlcXVpdmFsZW50IGV4YW1wbGVcbndpdGggb2xkLXN0eWxlIGNsYXNzZXMpOlxuXG4gICA+Pj4gY2xhc3MgQyhvYmplY3QpOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzICJfX2hhc2hfXygpIiBhbmQgIl9fcmVwcl9fKCkiIHRoYXQgYXJlIGltcGxlbWVudGVkIGJ5XG5hbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0IGxvb2t1cCBvZiB0aGVzZVxubWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgZmFpbCB3aGVuXG5pbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG5cbiAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciBcJ19faGFzaF9fXCcgb2YgXCdpbnRcJyBvYmplY3QgbmVlZHMgYW4gYXJndW1lbnRcblxuSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSBjbGFzcyBpbiB0aGlzXG53YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFwnbWV0YWNsYXNzIGNvbmZ1c2lvblwnLCBhbmQgaXMgYXZvaWRlZFxuYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzOlxuXG4gICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4gICBUcnVlXG5cbkluIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgaW50ZXJlc3Qgb2ZcbmNvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gYnlwYXNzZXNcbnRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgIHByaW50ICJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiXG4gICAuLi4gICAgICAgcmV0dXJuIHR5cGUuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGNsYXNzIEMob2JqZWN0KTpcbiAgIC4uLiAgICAgX19tZXRhY2xhc3NfXyA9IE1ldGFcbiAgIC4uLiAgICAgZGVmIF9fbGVuX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gMTBcbiAgIC4uLiAgICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpOlxuICAgLi4uICAgICAgICAgcHJpbnQgIkNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIlxuICAgLi4uICAgICAgICAgcmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKCphcmdzKVxuICAgLi4uXG4gICA+Pj4gYyA9IEMoKVxuICAgPj4+IGMuX19sZW5fXygpICAgICAgICAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgaW5zdGFuY2VcbiAgIENsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IHR5cGUoYykuX19sZW5fXyhjKSAgICAgICAgICAjIEV4cGxpY2l0IGxvb2t1cCB2aWEgdHlwZVxuICAgTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkXG4gICAxMFxuICAgPj4+IGxlbihjKSAgICAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0IGxvb2t1cFxuICAgMTBcblxuQnlwYXNzaW5nIHRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtYWNoaW5lcnkgaW4gdGhpcyBmYXNoaW9uIHByb3ZpZGVzXG5zaWduaWZpY2FudCBzY29wZSBmb3Igc3BlZWQgb3B0aW1pc2F0aW9ucyB3aXRoaW4gdGhlIGludGVycHJldGVyLCBhdFxudGhlIGNvc3Qgb2Ygc29tZSBmbGV4aWJpbGl0eSBpbiB0aGUgaGFuZGxpbmcgb2Ygc3BlY2lhbCBtZXRob2RzICh0aGVcbnNwZWNpYWwgbWV0aG9kICptdXN0KiBiZSBzZXQgb24gdGhlIGNsYXNzIG9iamVjdCBpdHNlbGYgaW4gb3JkZXIgdG8gYmVcbmNvbnNpc3RlbnRseSBpbnZva2VkIGJ5IHRoZSBpbnRlcnByZXRlcikuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gSXQgKmlzKiBwb3NzaWJsZSBpbiBzb21lIGNhc2VzIHRvIGNoYW5nZSBhbiBvYmplY3RcJ3MgdHlwZSxcbiAgICB1bmRlciBjZXJ0YWluIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzblwndCBhIGdvb2RcbiAgICBpZGVhIHRob3VnaCwgc2luY2UgaXQgY2FuIGxlYWQgdG8gc29tZSB2ZXJ5IHN0cmFuZ2UgYmVoYXZpb3VyIGlmXG4gICAgaXQgaXMgaGFuZGxlZCBpbmNvcnJlY3RseS5cblxuWzJdIEZvciBvcGVyYW5kcyBvZiB0aGUgc2FtZSB0eXBlLCBpdCBpcyBhc3N1bWVkIHRoYXQgaWYgdGhlIG5vbi1cbiAgICByZWZsZWN0ZWQgbWV0aG9kIChzdWNoIGFzICJfX2FkZF9fKCkiKSBmYWlscyB0aGUgb3BlcmF0aW9uIGlzIG5vdFxuICAgIHN1cHBvcnRlZCwgd2hpY2ggaXMgd2h5IHRoZSByZWZsZWN0ZWQgbWV0aG9kIGlzIG5vdCBjYWxsZWQuXG4nLAotICdzdHJpbmctbWV0aG9kcyc6IHUnXG5TdHJpbmcgTWV0aG9kc1xuKioqKioqKioqKioqKipcblxuQmVsb3cgYXJlIGxpc3RlZCB0aGUgc3RyaW5nIG1ldGhvZHMgd2hpY2ggYm90aCA4LWJpdCBzdHJpbmdzIGFuZFxuVW5pY29kZSBvYmplY3RzIHN1cHBvcnQuICBTb21lIG9mIHRoZW0gYXJlIGFsc28gYXZhaWxhYmxlIG9uXG4iYnl0ZWFycmF5IiBvYmplY3RzLlxuXG5JbiBhZGRpdGlvbiwgUHl0aG9uXCdzIHN0cmluZ3Mgc3VwcG9ydCB0aGUgc2VxdWVuY2UgdHlwZSBtZXRob2RzXG5kZXNjcmliZWQgaW4gdGhlIFNlcXVlbmNlIFR5cGVzIC0tLSBzdHIsIHVuaWNvZGUsIGxpc3QsIHR1cGxlLFxuYnl0ZWFycmF5LCBidWZmZXIsIHhyYW5nZSBzZWN0aW9uLiBUbyBvdXRwdXQgZm9ybWF0dGVkIHN0cmluZ3MgdXNlXG50ZW1wbGF0ZSBzdHJpbmdzIG9yIHRoZSAiJSIgb3BlcmF0b3IgZGVzY3JpYmVkIGluIHRoZSBTdHJpbmdcbkZvcm1hdHRpbmcgT3BlcmF0aW9ucyBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlICJyZSIgbW9kdWxlIGZvciBzdHJpbmdcbmZ1bmN0aW9ucyBiYXNlZCBvbiByZWd1bGFyIGV4cHJlc3Npb25zLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG4gICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhIHNwYWNlKS5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgdGhlICpmaWxsY2hhciogYXJndW1lbnQuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZGVjb2RlKFtlbmNvZGluZ1ssIGVycm9yc11dKVxuXG4gICBEZWNvZGVzIHRoZSBzdHJpbmcgdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yICplbmNvZGluZyouXG4gICAqZW5jb2RpbmcqIGRlZmF1bHRzIHRvIHRoZSBkZWZhdWx0IHN0cmluZyBlbmNvZGluZy4gICplcnJvcnMqIG1heVxuICAgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIFRoZSBkZWZhdWx0IGlzXG4gICAiXCdzdHJpY3RcJyIsIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgIlVuaWNvZGVFcnJvciIuXG4gICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiBhbmQgYW55IG90aGVyXG4gICBuYW1lIHJlZ2lzdGVyZWQgdmlhICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKSIsIHNlZSBzZWN0aW9uIENvZGVjXG4gICBCYXNlIENsYXNzZXMuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuMi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogU3VwcG9ydCBmb3Igb3RoZXIgZXJyb3IgaGFuZGxpbmcgc2NoZW1lc1xuICAgYWRkZWQuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjc6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5jb2RlKFtlbmNvZGluZ1ssIGVycm9yc11dKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuICBEZWZhdWx0IGVuY29kaW5nIGlzIHRoZVxuICAgY3VycmVudCBkZWZhdWx0IHN0cmluZyBlbmNvZGluZy4gICplcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgYVxuICAgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpc1xuICAgIlwnc3RyaWN0XCciLCBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuXG4gICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIixcbiAgICJcJ3htbGNoYXJyZWZyZXBsYWNlXCciLCAiXCdiYWNrc2xhc2hyZXBsYWNlXCciIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gQ29kZWMgQmFzZVxuICAgQ2xhc3Nlcy4gRm9yIGEgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uIFN0YW5kYXJkXG4gICBFbmNvZGluZ3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuMC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogU3VwcG9ydCBmb3IgIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIgYW5kXG4gICAiXCdiYWNrc2xhc2hyZXBsYWNlXCciIGFuZCBvdGhlciBlcnJvciBoYW5kbGluZyBzY2hlbWVzIGFkZGVkLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi43OiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhZGRlZC5cblxuc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAqc3VmZml4KixcbiAgIG90aGVyd2lzZSByZXR1cm4gIkZhbHNlIi4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2Ygc3VmZml4ZXNcbiAgIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjU6IEFjY2VwdCB0dXBsZXMgYXMgKnN1ZmZpeCouXG5cbnN0ci5leHBhbmR0YWJzKFt0YWJzaXplXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWRcbiAgIGJ5IG9uZSBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlXG4gICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqIGNoYXJhY3RlcnNcbiAgIChkZWZhdWx0IGlzIDgsIGdpdmluZyB0YWIgcG9zaXRpb25zIGF0IGNvbHVtbnMgMCwgOCwgMTYgYW5kIHNvIG9uKS5cbiAgIFRvIGV4cGFuZCB0aGUgc3RyaW5nLCB0aGUgY3VycmVudCBjb2x1bW4gaXMgc2V0IHRvIHplcm8gYW5kIHRoZVxuICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgY2hhcmFjdGVyIGlzIGFcbiAgIHRhYiAoIlxcdCIpLCBvbmUgb3IgbW9yZSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSBpbnNlcnRlZCBpbiB0aGUgcmVzdWx0XG4gICB1bnRpbCB0aGUgY3VycmVudCBjb2x1bW4gaXMgZXF1YWwgdG8gdGhlIG5leHQgdGFiIHBvc2l0aW9uLiAoVGhlXG4gICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgaXMgYSBuZXdsaW5lXG4gICAoIlxcbiIpIG9yIHJldHVybiAoIlxcciIpLCBpdCBpcyBjb3BpZWQgYW5kIHRoZSBjdXJyZW50IGNvbHVtbiBpc1xuICAgcmVzZXQgdG8gemVyby4gIEFueSBvdGhlciBjaGFyYWN0ZXIgaXMgY29waWVkIHVuY2hhbmdlZCBhbmQgdGhlXG4gICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiBob3cgdGhlXG4gICBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgd2hlbiBwcmludGVkLlxuXG4gICA+Pj4gXCcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNFwnLmV4cGFuZHRhYnMoKVxuICAgXCcwMSAgICAgIDAxMiAgICAgMDEyMyAgICAwMTIzNFwnXG4gICA+Pj4gXCcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNFwnLmV4cGFuZHRhYnMoNClcbiAgIFwnMDEgIDAxMiAwMTIzICAgIDAxMjM0XCdcblxuc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kIHdpdGhpbiB0aGUgc2xpY2UgInNbc3RhcnQ6ZW5kXSIuICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KlxuICAgYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4gIFJldHVybiAiLTEiIGlmXG4gICAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93XG4gICAgIHRoZSBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCxcbiAgICAgdXNlIHRoZSAiaW4iIG9wZXJhdG9yOlxuXG4gICAgICAgID4+PiBcJ1B5XCcgaW4gXCdQeXRob25cJ1xuICAgICAgICBUcnVlXG5cbnN0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuXG4gICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCB0aGlzXG4gICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciByZXBsYWNlbWVudCBmaWVsZHNcbiAgIGRlbGltaXRlZCBieSBicmFjZXMgInt9Ii4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSBGb3JtYXQgU3RyaW5nIFN5bnRheCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuICAgVGhpcyBtZXRob2Qgb2Ygc3RyaW5nIGZvcm1hdHRpbmcgaXMgdGhlIG5ldyBzdGFuZGFyZCBpbiBQeXRob24gMyxcbiAgIGFuZCBzaG91bGQgYmUgcHJlZmVycmVkIHRvIHRoZSAiJSIgZm9ybWF0dGluZyBkZXNjcmliZWQgaW4gU3RyaW5nXG4gICBGb3JtYXR0aW5nIE9wZXJhdGlvbnMgaW4gbmV3IGNvZGUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgImZpbmQoKSIsIGJ1dCByYWlzZSAiVmFsdWVFcnJvciIgd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdFxuICAgZm91bmQuXG5cbnN0ci5pc2FsbnVtKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFudW1lcmljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG4gICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG4gICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbiAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbiAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG4gICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlXG4gICBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgdGhlICpmaWxsY2hhciogYXJndW1lbnQuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbiAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICBcJ3NwYWNpb3VzICAgXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlLmNvbVwnXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjIuMjogU3VwcG9ydCBmb3IgdGhlICpjaGFycyogYXJndW1lbnQuXG5cbnN0ci5wYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCBmb2xsb3dlZCBieVxuICAgdHdvIGVtcHR5IHN0cmluZ3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNS5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgdGhlICpmaWxsY2hhciogYXJndW1lbnQuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNS5cblxuc3RyLnJzcGxpdChbc2VwWywgbWF4c3BsaXRdXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCogc3BsaXRzXG4gICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yXG4gICAiTm9uZSIsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3Igc3BsaXR0aW5nXG4gICBmcm9tIHRoZSByaWdodCwgInJzcGxpdCgpIiBiZWhhdmVzIGxpa2UgInNwbGl0KCkiIHdoaWNoIGlzXG4gICBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAyLjQuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICBcJyAgIHNwYWNpb3VzXCdcbiAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICBcJ21pc3Npc3NcJ1xuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi4yLjI6IFN1cHBvcnQgZm9yIHRoZSAqY2hhcnMqIGFyZ3VtZW50LlxuXG5zdHIuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KlxuICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAibWF4c3BsaXQrMSJcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCBvciAiLTEiLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgICJcJzEsLDJcJy5zcGxpdChcJyxcJykiIHJldHVybnMgIltcJzFcJywgXCdcJywgXCcyXCddIikuICBUaGUgKnNlcCogYXJndW1lbnRcbiAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgIlwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJykiIHJldHVybnMgIltcJzFcJywgXCcyXCcsIFwnM1wnXSIpLiBTcGxpdHRpbmcgYW5cbiAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICJbXCdcJ10iLlxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICJOb25lIiwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgIk5vbmUiIHNlcGFyYXRvciByZXR1cm5zICJbXSIuXG5cbiAgIEZvciBleGFtcGxlLCAiXCcgMSAgMiAgIDMgIFwnLnNwbGl0KCkiIHJldHVybnMgIltcJzFcJywgXCcyXCcsIFwnM1wnXSIsIGFuZFxuICAgIlwnICAxICAyICAgMyAgXCcuc3BsaXQoTm9uZSwgMSkiIHJldHVybnMgIltcJzFcJywgXCcyICAgMyAgXCddIi5cblxuc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZVxuICAgYm91bmRhcmllcy4gVGhpcyBtZXRob2QgdXNlcyB0aGUgKnVuaXZlcnNhbCBuZXdsaW5lcyogYXBwcm9hY2ggdG9cbiAgIHNwbGl0dGluZyBsaW5lcy4gTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG4gICBQeXRob24gcmVjb2duaXplcyAiIlxcciIiLCAiIlxcbiIiLCBhbmQgIiJcXHJcXG4iIiBhcyBsaW5lIGJvdW5kYXJpZXNcbiAgIGZvciA4LWJpdCBzdHJpbmdzLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKClcbiAgICAgIFtcJ2FiIGNcJywgXCdcJywgXCdkZSBmZ1wnLCBcJ2tsXCddXG4gICAgICA+Pj4gXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoVHJ1ZSlcbiAgICAgIFtcJ2FiIGNcXG5cJywgXCdcXG5cJywgXCdkZSBmZ1xcclwnLCBcJ2tsXFxyXFxuXCddXG5cbiAgIFVubGlrZSAic3BsaXQoKSIgd2hlbiBhIGRlbGltaXRlciBzdHJpbmcgKnNlcCogaXMgZ2l2ZW4sIHRoaXNcbiAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCBhIHRlcm1pbmFsXG4gICBsaW5lIGJyZWFrIGRvZXMgbm90IHJlc3VsdCBpbiBhbiBleHRyYSBsaW5lOlxuXG4gICAgICA+Pj4gIiIuc3BsaXRsaW5lcygpXG4gICAgICBbXVxuICAgICAgPj4+ICJPbmUgbGluZVxcbiIuc3BsaXRsaW5lcygpXG4gICAgICBbXCdPbmUgbGluZVwnXVxuXG4gICBGb3IgY29tcGFyaXNvbiwgInNwbGl0KFwnXFxuXCcpIiBnaXZlczpcblxuICAgICAgPj4+IFwnXCcuc3BsaXQoXCdcXG5cJylcbiAgICAgIFtcJ1wnXVxuICAgICAgPj4+IFwnVHdvIGxpbmVzXFxuXCcuc3BsaXQoXCdcXG5cJylcbiAgICAgIFtcJ1R3byBsaW5lc1wnLCBcJ1wnXVxuXG51bmljb2RlLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgbGlrZSAic3RyLnNwbGl0bGluZXMoKSIuXG4gICBIb3dldmVyLCB0aGUgVW5pY29kZSBtZXRob2Qgc3BsaXRzIG9uIHRoZSBmb2xsb3dpbmcgbGluZVxuICAgYm91bmRhcmllcywgd2hpY2ggYXJlIGEgc3VwZXJzZXQgb2YgdGhlICp1bml2ZXJzYWwgbmV3bGluZXMqXG4gICByZWNvZ25pemVkIGZvciA4LWJpdCBzdHJpbmdzLlxuXG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBSZXByZXNlbnRhdGlvbiAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcXG4iICAgICAgICAgICAgICAgICAgICB8IExpbmUgRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHIiICAgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHJcXG4iICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gKyBMaW5lIEZlZWQgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx2IiBvciAiXFx4MGIiICAgICAgICAgIHwgTGluZSBUYWJ1bGF0aW9uICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcZiIgb3IgIlxceDBjIiAgICAgICAgICB8IEZvcm0gRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxYyIgICAgICAgICAgICAgICAgICB8IEZpbGUgU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxZCIgICAgICAgICAgICAgICAgICB8IEdyb3VwIFNlcGFyYXRvciAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxZSIgICAgICAgICAgICAgICAgICB8IFJlY29yZCBTZXBhcmF0b3IgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHg4NSIgICAgICAgICAgICAgICAgICB8IE5leHQgTGluZSAoQzEgQ29udHJvbCBDb2RlKSAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHUyMDI4IiAgICAgICAgICAgICAgICB8IExpbmUgU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHUyMDI5IiAgICAgICAgICAgICAgICB8IFBhcmFncmFwaCBTZXBhcmF0b3IgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjc6ICJcXHYiIGFuZCAiXFxmIiBhZGRlZCB0byBsaXN0IG9mIGxpbmVcbiAgIGJvdW5kYXJpZXMuXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlIHJldHVyblxuICAgIkZhbHNlIi4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rIGZvci5cbiAgIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG4gICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNTogQWNjZXB0IHR1cGxlcyBhcyAqcHJlZml4Ki5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpc1xuICAgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlXG4gICBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICBcJ3NwYWNpb3VzXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGVcJ1xuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi4yLjI6IFN1cHBvcnQgZm9yIHRoZSAqY2hhcnMqIGFyZ3VtZW50LlxuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS5cblxuICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbiAgICAgIC4uLlxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG5cbnN0ci50cmFuc2xhdGUodGFibGVbLCBkZWxldGVjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlXG4gICBvcHRpb25hbCBhcmd1bWVudCAqZGVsZXRlY2hhcnMqIGFyZSByZW1vdmVkLCBhbmQgdGhlIHJlbWFpbmluZ1xuICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLFxuICAgd2hpY2ggbXVzdCBiZSBhIHN0cmluZyBvZiBsZW5ndGggMjU2LlxuXG4gICBZb3UgY2FuIHVzZSB0aGUgIm1ha2V0cmFucygpIiBoZWxwZXIgZnVuY3Rpb24gaW4gdGhlICJzdHJpbmciXG4gICBtb2R1bGUgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gdGFibGUuIEZvciBzdHJpbmcgb2JqZWN0cywgc2V0IHRoZVxuICAgKnRhYmxlKiBhcmd1bWVudCB0byAiTm9uZSIgZm9yIHRyYW5zbGF0aW9ucyB0aGF0IG9ubHkgZGVsZXRlXG4gICBjaGFyYWN0ZXJzOlxuXG4gICA+Pj4gXCdyZWFkIHRoaXMgc2hvcnQgdGV4dFwnLnRyYW5zbGF0ZShOb25lLCBcJ2FlaW91XCcpXG4gICBcJ3JkIHRocyBzaHJ0IHR4dFwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNjogU3VwcG9ydCBmb3IgYSAiTm9uZSIgKnRhYmxlKiBhcmd1bWVudC5cblxuICAgRm9yIFVuaWNvZGUgb2JqZWN0cywgdGhlICJ0cmFuc2xhdGUoKSIgbWV0aG9kIGRvZXMgbm90IGFjY2VwdCB0aGVcbiAgIG9wdGlvbmFsICpkZWxldGVjaGFycyogYXJndW1lbnQuICBJbnN0ZWFkLCBpdCByZXR1cm5zIGEgY29weSBvZiB0aGVcbiAgICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuXG4gICB0cmFuc2xhdGlvbiB0YWJsZSB3aGljaCBtdXN0IGJlIGEgbWFwcGluZyBvZiBVbmljb2RlIG9yZGluYWxzIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBVbmljb2RlIHN0cmluZ3Mgb3IgIk5vbmUiLiBVbm1hcHBlZCBjaGFyYWN0ZXJzXG4gICBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvICJOb25lIiBhcmUgZGVsZXRlZC4gIE5vdGUsXG4gICBhIG1vcmUgZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgY3VzdG9tIGNoYXJhY3RlciBtYXBwaW5nXG4gICBjb2RlYyB1c2luZyB0aGUgImNvZGVjcyIgbW9kdWxlIChzZWUgImVuY29kaW5ncy5jcDEyNTEiIGZvciBhblxuICAgZXhhbXBsZSkuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgInN0ci51cHBlcigpLmlzdXBwZXIoKSIgbWlnaHQgYmVcbiAgICJGYWxzZSIgaWYgInMiIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIHRoZSBudW1lcmljIHN0cmluZyBsZWZ0IGZpbGxlZCB3aXRoIHplcm9zIGluIGEgc3RyaW5nIG9mXG4gICBsZW5ndGggKndpZHRoKi4gIEEgc2lnbiBwcmVmaXggaXMgaGFuZGxlZCBjb3JyZWN0bHkuICBUaGUgb3JpZ2luYWxcbiAgIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgTmV3IGluIHZlcnNpb24gMi4yLjIuXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgcHJlc2VudCBvbmx5IG9uIHVuaWNvZGUgb2JqZWN0czpcblxudW5pY29kZS5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHRoZXJlIGFyZSBvbmx5IG51bWVyaWMgY2hhcmFjdGVycyBpbiBTLCAiRmFsc2UiXG4gICBvdGhlcndpc2UuIE51bWVyaWMgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGxcbiAgIGNoYXJhY3RlcnMgdGhhdCBoYXZlIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy5cbiAgIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSC5cblxudW5pY29kZS5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHRoZXJlIGFyZSBvbmx5IGRlY2ltYWwgY2hhcmFjdGVycyBpbiBTLCAiRmFsc2UiXG4gICBvdGhlcndpc2UuIERlY2ltYWwgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGxcbiAgIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0byBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLlxuICAgVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cbicsCi0gJ3N0cmluZ3MnOiB1J1xuU3RyaW5nIGxpdGVyYWxzXG4qKioqKioqKioqKioqKipcblxuU3RyaW5nIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsIGRlZmluaXRpb25zOlxuXG4gICBzdHJpbmdsaXRlcmFsICAgOjo9IFtzdHJpbmdwcmVmaXhdKHNob3J0c3RyaW5nIHwgbG9uZ3N0cmluZylcbiAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgInUiIHwgInVyIiB8ICJSIiB8ICJVIiB8ICJVUiIgfCAiVXIiIHwgInVSIlxuICAgICAgICAgICAgICAgICAgICB8ICJiIiB8ICJCIiB8ICJiciIgfCAiQnIiIHwgImJSIiB8ICJCUiJcbiAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4gICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIlxuICAgICAgICAgICAgICAgICAgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4gICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IGVzY2FwZXNlcVxuICAgbG9uZ3N0cmluZ2l0ZW0gIDo6PSBsb25nc3RyaW5nY2hhciB8IGVzY2FwZXNlcVxuICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nc3RyaW5nY2hhciAgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIj5cbiAgIGVzY2FwZXNlcSAgICAgICA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgInN0cmluZ3ByZWZpeCIgYW5kIHRoZSByZXN0IG9mXG50aGUgc3RyaW5nIGxpdGVyYWwuIFRoZSBzb3VyY2UgY2hhcmFjdGVyIHNldCBpcyBkZWZpbmVkIGJ5IHRoZVxuZW5jb2RpbmcgZGVjbGFyYXRpb247IGl0IGlzIEFTQ0lJIGlmIG5vIGVuY29kaW5nIGRlY2xhcmF0aW9uIGlzIGdpdmVuXG5pbiB0aGUgc291cmNlIGZpbGU7IHNlZSBzZWN0aW9uIEVuY29kaW5nIGRlY2xhcmF0aW9ucy5cblxuSW4gcGxhaW4gRW5nbGlzaDogU3RyaW5nIGxpdGVyYWxzIGNhbiBiZSBlbmNsb3NlZCBpbiBtYXRjaGluZyBzaW5nbGVcbnF1b3RlcyAoIlwnIikgb3IgZG91YmxlIHF1b3RlcyAoIiIiKS4gIFRoZXkgY2FuIGFsc28gYmUgZW5jbG9zZWQgaW5cbm1hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2UgYXJlIGdlbmVyYWxseVxucmVmZXJyZWQgdG8gYXMgKnRyaXBsZS1xdW90ZWQgc3RyaW5ncyopLiAgVGhlIGJhY2tzbGFzaCAoIlxcIilcbmNoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYSBzcGVjaWFsXG5tZWFuaW5nLCBzdWNoIGFzIG5ld2xpbmUsIGJhY2tzbGFzaCBpdHNlbGYsIG9yIHRoZSBxdW90ZSBjaGFyYWN0ZXIuXG5TdHJpbmcgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhIGxldHRlciAiXCdyXCciIG9yXG4iXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZCB1c2UgZGlmZmVyZW50IHJ1bGVzXG5mb3IgaW50ZXJwcmV0aW5nIGJhY2tzbGFzaCBlc2NhcGUgc2VxdWVuY2VzLiAgQSBwcmVmaXggb2YgIlwndVwnIiBvclxuIlwnVVwnIiBtYWtlcyB0aGUgc3RyaW5nIGEgVW5pY29kZSBzdHJpbmcuICBVbmljb2RlIHN0cmluZ3MgdXNlIHRoZVxuVW5pY29kZSBjaGFyYWN0ZXIgc2V0IGFzIGRlZmluZWQgYnkgdGhlIFVuaWNvZGUgQ29uc29ydGl1bSBhbmQgSVNPXG4xMDY0Ni4gIFNvbWUgYWRkaXRpb25hbCBlc2NhcGUgc2VxdWVuY2VzLCBkZXNjcmliZWQgYmVsb3csIGFyZVxuYXZhaWxhYmxlIGluIFVuaWNvZGUgc3RyaW5ncy4gQSBwcmVmaXggb2YgIlwnYlwnIiBvciAiXCdCXCciIGlzIGlnbm9yZWQgaW5cblB5dGhvbiAyOyBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUgbGl0ZXJhbCBzaG91bGQgYmVjb21lIGEgYnl0ZXMgbGl0ZXJhbFxuaW4gUHl0aG9uIDMgKGUuZy4gd2hlbiBjb2RlIGlzIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHdpdGggMnRvMykuICBBXG4iXCd1XCciIG9yICJcJ2JcJyIgcHJlZml4IG1heSBiZSBmb2xsb3dlZCBieSBhbiAiXCdyXCciIHByZWZpeC5cblxuSW4gdHJpcGxlLXF1b3RlZCBzdHJpbmdzLCB1bmVzY2FwZWQgbmV3bGluZXMgYW5kIHF1b3RlcyBhcmUgYWxsb3dlZFxuKGFuZCBhcmUgcmV0YWluZWQpLCBleGNlcHQgdGhhdCB0aHJlZSB1bmVzY2FwZWQgcXVvdGVzIGluIGEgcm93XG50ZXJtaW5hdGUgdGhlIHN0cmluZy4gIChBICJxdW90ZSIgaXMgdGhlIGNoYXJhY3RlciB1c2VkIHRvIG9wZW4gdGhlXG5zdHJpbmcsIGkuZS4gZWl0aGVyICJcJyIgb3IgIiIiLilcblxuVW5sZXNzIGFuICJcJ3JcJyIgb3IgIlwnUlwnIiBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyBpblxuc3RyaW5ncyBhcmUgaW50ZXJwcmV0ZWQgYWNjb3JkaW5nIHRvIHJ1bGVzIHNpbWlsYXIgdG8gdGhvc2UgdXNlZCBieVxuU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICB8XG4rPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG58ICJcXG5ld2xpbmUiICAgICAgICB8IElnbm9yZWQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxcXCIgICAgICAgICAgICAgIHwgQmFja3NsYXNoICgiXFwiKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxcJyIgICAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlICgiXCciKSAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFwiIiAgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKCIiIikgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcYSIgICAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGIiICAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxmIiAgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcbiIgICAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXE57bmFtZX0iICAgICAgICB8IENoYXJhY3RlciBuYW1lZCAqbmFtZSogaW4gdGhlICAgICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgKFVuaWNvZGUgb25seSkgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxyIiAgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcdCIgICAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHV4eHh4IiAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICgxKSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAoVW5pY29kZSBvbmx5KSAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxVeHh4eHh4eHgiICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAoMikgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqIChVbmljb2RlIG9ubHkpICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcdiIgICAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXG9vbyIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICgzLDUpICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFx4aGgiICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAoNCw1KSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuIEluZGl2aWR1YWwgY29kZSB1bml0cyB3aGljaCBmb3JtIHBhcnRzIG9mIGEgc3Vycm9nYXRlIHBhaXIgY2FuXG4gICBiZSBlbmNvZGVkIHVzaW5nIHRoaXMgZXNjYXBlIHNlcXVlbmNlLlxuXG4yLiBBbnkgVW5pY29kZSBjaGFyYWN0ZXIgY2FuIGJlIGVuY29kZWQgdGhpcyB3YXksIGJ1dCBjaGFyYWN0ZXJzXG4gICBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIGFcbiAgIHN1cnJvZ2F0ZSBwYWlyIGlmIFB5dGhvbiBpcyBjb21waWxlZCB0byB1c2UgMTYtYml0IGNvZGUgdW5pdHMgKHRoZVxuICAgZGVmYXVsdCkuXG5cbjMuIEFzIGluIFN0YW5kYXJkIEMsIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBhcmUgYWNjZXB0ZWQuXG5cbjQuIFVubGlrZSBpbiBTdGFuZGFyZCBDLCBleGFjdGx5IHR3byBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuNS4gSW4gYSBzdHJpbmcgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlIHRoZVxuICAgYnl0ZSB3aXRoIHRoZSBnaXZlbiB2YWx1ZTsgaXQgaXMgbm90IG5lY2Vzc2FyeSB0aGF0IHRoZSBieXRlXG4gICBlbmNvZGVzIGEgY2hhcmFjdGVyIGluIHRoZSBzb3VyY2UgY2hhcmFjdGVyIHNldC4gSW4gYSBVbmljb2RlXG4gICBsaXRlcmFsLCB0aGVzZSBlc2NhcGVzIGRlbm90ZSBhIFVuaWNvZGUgY2hhcmFjdGVyIHdpdGggdGhlIGdpdmVuXG4gICB2YWx1ZS5cblxuVW5saWtlIFN0YW5kYXJkIEMsIGFsbCB1bnJlY29nbml6ZWQgZXNjYXBlIHNlcXVlbmNlcyBhcmUgbGVmdCBpbiB0aGVcbnN0cmluZyB1bmNoYW5nZWQsIGkuZS4sICp0aGUgYmFja3NsYXNoIGlzIGxlZnQgaW4gdGhlIHN0cmluZyouICAoVGhpc1xuYmVoYXZpb3IgaXMgdXNlZnVsIHdoZW4gZGVidWdnaW5nOiBpZiBhbiBlc2NhcGUgc2VxdWVuY2UgaXMgbWlzdHlwZWQsXG50aGUgcmVzdWx0aW5nIG91dHB1dCBpcyBtb3JlIGVhc2lseSByZWNvZ25pemVkIGFzIGJyb2tlbi4pICBJdCBpcyBhbHNvXG5pbXBvcnRhbnQgdG8gbm90ZSB0aGF0IHRoZSBlc2NhcGUgc2VxdWVuY2VzIG1hcmtlZCBhcyAiKFVuaWNvZGUgb25seSkiXG5pbiB0aGUgdGFibGUgYWJvdmUgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyBmb3Jcbm5vbi1Vbmljb2RlIHN0cmluZyBsaXRlcmFscy5cblxuV2hlbiBhbiAiXCdyXCciIG9yICJcJ1JcJyIgcHJlZml4IGlzIHByZXNlbnQsIGEgY2hhcmFjdGVyIGZvbGxvd2luZyBhXG5iYWNrc2xhc2ggaXMgaW5jbHVkZWQgaW4gdGhlIHN0cmluZyB3aXRob3V0IGNoYW5nZSwgYW5kICphbGxcbmJhY2tzbGFzaGVzIGFyZSBsZWZ0IGluIHRoZSBzdHJpbmcqLiAgRm9yIGV4YW1wbGUsIHRoZSBzdHJpbmcgbGl0ZXJhbFxuInIiXFxuIiIgY29uc2lzdHMgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhIGxvd2VyY2FzZSAiXCduXCciLlxuU3RyaW5nIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCBidXQgdGhlIGJhY2tzbGFzaFxucmVtYWlucyBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbFxuY29uc2lzdGluZyBvZiB0d28gY2hhcmFjdGVyczogYSBiYWNrc2xhc2ggYW5kIGEgZG91YmxlIHF1b3RlOyAiciJcXCIiXG5pcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhdyBzdHJpbmcgY2Fubm90IGVuZCBpbiBhbiBvZGRcbm51bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyBzdHJpbmcgY2Fubm90IGVuZCBpbiBhXG5zaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaCB3b3VsZCBlc2NhcGUgdGhlIGZvbGxvd2luZ1xucXVvdGUgY2hhcmFjdGVyKS4gIE5vdGUgYWxzbyB0aGF0IGEgc2luZ2xlIGJhY2tzbGFzaCBmb2xsb3dlZCBieSBhXG5uZXdsaW5lIGlzIGludGVycHJldGVkIGFzIHRob3NlIHR3byBjaGFyYWN0ZXJzIGFzIHBhcnQgb2YgdGhlIHN0cmluZyxcbipub3QqIGFzIGEgbGluZSBjb250aW51YXRpb24uXG5cbldoZW4gYW4gIlwnclwnIiBvciAiXCdSXCciIHByZWZpeCBpcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSAiXCd1XCciIG9yXG4iXCdVXCciIHByZWZpeCwgdGhlbiB0aGUgIlxcdVhYWFgiIGFuZCAiXFxVWFhYWFhYWFgiIGVzY2FwZSBzZXF1ZW5jZXMgYXJlXG5wcm9jZXNzZWQgd2hpbGUgICphbGwgb3RoZXIgYmFja3NsYXNoZXMgYXJlIGxlZnQgaW4gdGhlIHN0cmluZyouIEZvclxuZXhhbXBsZSwgdGhlIHN0cmluZyBsaXRlcmFsICJ1ciJcXHUwMDYyXFxuIiIgY29uc2lzdHMgb2YgdGhyZWUgVW5pY29kZVxuY2hhcmFjdGVyczogXCdMQVRJTiBTTUFMTCBMRVRURVIgQlwnLCBcJ1JFVkVSU0UgU09MSURVU1wnLCBhbmQgXCdMQVRJTlxuU01BTEwgTEVUVEVSIE5cJy4gQmFja3NsYXNoZXMgY2FuIGJlIGVzY2FwZWQgd2l0aCBhIHByZWNlZGluZ1xuYmFja3NsYXNoOyBob3dldmVyLCBib3RoIHJlbWFpbiBpbiB0aGUgc3RyaW5nLiAgQXMgYSByZXN1bHQsICJcXHVYWFhYIlxuZXNjYXBlIHNlcXVlbmNlcyBhcmUgb25seSByZWNvZ25pemVkIHdoZW4gdGhlcmUgYXJlIGFuIG9kZCBudW1iZXIgb2ZcbmJhY2tzbGFzaGVzLlxuJywKLSAnc3Vic2NyaXB0aW9ucyc6IHUnXG5TdWJzY3JpcHRpb25zXG4qKioqKioqKioqKioqXG5cbkEgc3Vic2NyaXB0aW9uIHNlbGVjdHMgYW4gaXRlbSBvZiBhIHNlcXVlbmNlIChzdHJpbmcsIHR1cGxlIG9yIGxpc3QpXG5vciBtYXBwaW5nIChkaWN0aW9uYXJ5KSBvYmplY3Q6XG5cbiAgIHN1YnNjcmlwdGlvbiA6Oj0gcHJpbWFyeSAiWyIgZXhwcmVzc2lvbl9saXN0ICJdIlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCBvZiBhIHNlcXVlbmNlIG9yIG1hcHBpbmcgdHlwZS5cblxuSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nLCB0aGUgZXhwcmVzc2lvbiBsaXN0IG11c3QgZXZhbHVhdGUgdG8gYW5cbm9iamVjdCB3aG9zZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcsIGFuZCB0aGVcbnN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSB2YWx1ZSBpbiB0aGUgbWFwcGluZyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoYXRcbmtleS4gIChUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGEgdHVwbGUgZXhjZXB0IGlmIGl0IGhhcyBleGFjdGx5IG9uZVxuaXRlbS4pXG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgc2VxdWVuY2UsIHRoZSBleHByZXNzaW9uIChsaXN0KSBtdXN0IGV2YWx1YXRlIHRvIGFcbnBsYWluIGludGVnZXIuICBJZiB0aGlzIHZhbHVlIGlzIG5lZ2F0aXZlLCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZVxuaXMgYWRkZWQgdG8gaXQgKHNvIHRoYXQsIGUuZy4sICJ4Wy0xXSIgc2VsZWN0cyB0aGUgbGFzdCBpdGVtIG9mICJ4Ii4pXG5UaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIGxlc3MgdGhhbiB0aGUgbnVtYmVyXG5vZiBpdGVtcyBpbiB0aGUgc2VxdWVuY2UsIGFuZCB0aGUgc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIGl0ZW0gd2hvc2VcbmluZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuXG5cbkEgc3RyaW5nXCdzIGl0ZW1zIGFyZSBjaGFyYWN0ZXJzLiAgQSBjaGFyYWN0ZXIgaXMgbm90IGEgc2VwYXJhdGUgZGF0YVxudHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKLSAndHJ1dGgnOiB1J1xuVHJ1dGggVmFsdWUgVGVzdGluZ1xuKioqKioqKioqKioqKioqKioqKlxuXG5Bbnkgb2JqZWN0IGNhbiBiZSB0ZXN0ZWQgZm9yIHRydXRoIHZhbHVlLCBmb3IgdXNlIGluIGFuICJpZiIgb3JcbiJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gVGhlXG5mb2xsb3dpbmcgdmFsdWVzIGFyZSBjb25zaWRlcmVkIGZhbHNlOlxuXG4qICJOb25lIlxuXG4qICJGYWxzZSJcblxuKiB6ZXJvIG9mIGFueSBudW1lcmljIHR5cGUsIGZvciBleGFtcGxlLCAiMCIsICIwTCIsICIwLjAiLCAiMGoiLlxuXG4qIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsICJcJ1wnIiwgIigpIiwgIltdIi5cblxuKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG5cbiogaW5zdGFuY2VzIG9mIHVzZXItZGVmaW5lZCBjbGFzc2VzLCBpZiB0aGUgY2xhc3MgZGVmaW5lcyBhXG4gICJfX25vbnplcm9fXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyB0aGVcbiAgaW50ZWdlciB6ZXJvIG9yICJib29sIiB2YWx1ZSAiRmFsc2UiLiBbMV1cblxuQWxsIG90aGVyIHZhbHVlcyBhcmUgY29uc2lkZXJlZCB0cnVlIC0tLSBzbyBvYmplY3RzIG9mIG1hbnkgdHlwZXMgYXJlXG5hbHdheXMgdHJ1ZS5cblxuT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0IGFsd2F5c1xucmV0dXJuICIwIiBvciAiRmFsc2UiIGZvciBmYWxzZSBhbmQgIjEiIG9yICJUcnVlIiBmb3IgdHJ1ZSwgdW5sZXNzXG5vdGhlcndpc2Ugc3RhdGVkLiAoSW1wb3J0YW50IGV4Y2VwdGlvbjogdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyAib3IiXG5hbmQgImFuZCIgYWx3YXlzIHJldHVybiBvbmUgb2YgdGhlaXIgb3BlcmFuZHMuKVxuJywKLSAndHJ5JzogdSdcblRoZSAidHJ5IiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbmZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG5cbiAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4gICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWygiYXMiIHwgIiwiKSBpZGVudGlmaWVyXV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMi41OiBJbiBwcmV2aW91cyB2ZXJzaW9ucyBvZiBQeXRob24sXG4idHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiIGRpZCBub3Qgd29yay4gInRyeSIuLi4iZXhjZXB0IiBoYWQgdG8gYmVcbm5lc3RlZCBpbiAidHJ5Ii4uLiJmaW5hbGx5Ii5cblxuVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiBub1xuZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciBhblxuZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgY2xhdXNlc1xuaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiBleHByZXNzaW9uLVxubGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG5leGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxud2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgZXhjZXB0aW9uXG5vYmplY3QsIG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCByYWlzZWRcbnRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdFxuY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdCBjbGF1c2VzIG11c3QgaGF2ZSBhblxuZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzIHJlYWNoZWQsIGV4ZWN1dGlvblxuY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC4gIChUaGlzIG1lYW5zIHRoYXRcbmlmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbiwgYW5kIHRoZSBleGNlcHRpb25cbm9jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlIG91dGVyIGhhbmRsZXIgd2lsbFxubm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIGFzc2lnbmVkIHRvIHRocmVlIHZhcmlhYmxlcyBpbiB0aGUgInN5cyIgbW9kdWxlOlxuInN5cy5leGNfdHlwZSIgcmVjZWl2ZXMgdGhlIG9iamVjdCBpZGVudGlmeWluZyB0aGUgZXhjZXB0aW9uO1xuInN5cy5leGNfdmFsdWUiIHJlY2VpdmVzIHRoZSBleGNlcHRpb25cJ3MgcGFyYW1ldGVyO1xuInN5cy5leGNfdHJhY2ViYWNrIiByZWNlaXZlcyBhIHRyYWNlYmFjayBvYmplY3QgKHNlZSBzZWN0aW9uIFRoZVxuc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpbiB0aGUgcHJvZ3JhbSB3aGVyZVxudGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gVGhlc2UgZGV0YWlscyBhcmUgYWxzbyBhdmFpbGFibGUgdGhyb3VnaCB0aGVcbiJzeXMuZXhjX2luZm8oKSIgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgYSB0dXBsZSAiKGV4Y190eXBlLFxuZXhjX3ZhbHVlLCBleGNfdHJhY2ViYWNrKSIuICBVc2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFyaWFibGVzIGlzXG5kZXByZWNhdGVkIGluIGZhdm9yIG9mIHRoaXMgZnVuY3Rpb24sIHNpbmNlIHRoZWlyIHVzZSBpcyB1bnNhZmUgaW4gYVxudGhyZWFkZWQgcHJvZ3JhbS4gIEFzIG9mIFB5dGhvbiAxLjUsIHRoZSB2YXJpYWJsZXMgYXJlIHJlc3RvcmVkIHRvXG50aGVpciBwcmV2aW91cyB2YWx1ZXMgKGJlZm9yZSB0aGUgY2FsbCkgd2hlbiByZXR1cm5pbmcgZnJvbSBhIGZ1bmN0aW9uXG50aGF0IGhhbmRsZWQgYW4gZXhjZXB0aW9uLlxuXG5UaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzIG9mZlxudGhlIGVuZCBvZiB0aGUgInRyeSIgY2xhdXNlLiBbMl0gRXhjZXB0aW9ucyBpbiB0aGUgImVsc2UiIGNsYXVzZSBhcmVcbm5vdCBoYW5kbGVkIGJ5IHRoZSBwcmVjZWRpbmcgImV4Y2VwdCIgY2xhdXNlcy5cblxuSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICBUaGUgInRyeSJcbmNsYXVzZSBpcyBleGVjdXRlZCwgaW5jbHVkaW5nIGFueSAiZXhjZXB0IiBhbmQgImVsc2UiIGNsYXVzZXMuICBJZiBhblxuZXhjZXB0aW9uIG9jY3VycyBpbiBhbnkgb2YgdGhlIGNsYXVzZXMgYW5kIGlzIG5vdCBoYW5kbGVkLCB0aGVcbmV4Y2VwdGlvbiBpcyB0ZW1wb3JhcmlseSBzYXZlZC4gVGhlICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQuICBJZlxudGhlcmUgaXMgYSBzYXZlZCBleGNlcHRpb24sIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZVxuImZpbmFsbHkiIGNsYXVzZS4gSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uIG9yXG5leGVjdXRlcyBhICJyZXR1cm4iIG9yICJicmVhayIgc3RhdGVtZW50LCB0aGUgc2F2ZWQgZXhjZXB0aW9uIGlzXG5kaXNjYXJkZWQ6XG5cbiAgID4+PiBkZWYgZigpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICAxLzBcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuICAgLi4uXG4gICA+Pj4gZigpXG4gICA0MlxuXG5UaGUgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0gZHVyaW5nXG5leGVjdXRpb24gb2YgdGhlICJmaW5hbGx5IiBjbGF1c2UuXG5cbldoZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiB0aGVcbiJ0cnkiIHN1aXRlIG9mIGEgInRyeSIuLi4iZmluYWxseSIgc3RhdGVtZW50LCB0aGUgImZpbmFsbHkiIGNsYXVzZSBpc1xuYWxzbyBleGVjdXRlZCBcJ29uIHRoZSB3YXkgb3V0LlwnIEEgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgaWxsZWdhbCBpblxudGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG5pbXBsZW1lbnRhdGlvbiAtLS0gdGhpcyByZXN0cmljdGlvbiBtYXkgYmUgbGlmdGVkIGluIHRoZSBmdXR1cmUpLlxuXG5UaGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gaXMgZGV0ZXJtaW5lZCBieSB0aGUgbGFzdCAicmV0dXJuIlxuc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCBhXG4icmV0dXJuIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlICJmaW5hbGx5IiBjbGF1c2Ugd2lsbCBhbHdheXMgYmUgdGhlXG5sYXN0IG9uZSBleGVjdXRlZDpcblxuICAgPj4+IGRlZiBmb28oKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwndHJ5XCdcbiAgIC4uLiAgICAgZmluYWxseTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ2ZpbmFsbHlcJ1xuICAgLi4uXG4gICA+Pj4gZm9vKClcbiAgIFwnZmluYWxseVwnXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0byBnZW5lcmF0ZVxuZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiBUaGUgcmFpc2Ugc3RhdGVtZW50LlxuJywKLSAndHlwZXMnOiB1J1xuVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5XG4qKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQmVsb3cgaXMgYSBsaXN0IG9mIHRoZSB0eXBlcyB0aGF0IGFyZSBidWlsdCBpbnRvIFB5dGhvbi4gIEV4dGVuc2lvblxubW9kdWxlcyAod3JpdHRlbiBpbiBDLCBKYXZhLCBvciBvdGhlciBsYW5ndWFnZXMsIGRlcGVuZGluZyBvbiB0aGVcbmltcGxlbWVudGF0aW9uKSBjYW4gZGVmaW5lIGFkZGl0aW9uYWwgdHlwZXMuICBGdXR1cmUgdmVyc2lvbnMgb2ZcblB5dGhvbiBtYXkgYWRkIHR5cGVzIHRvIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiwgcmF0aW9uYWwgbnVtYmVycyxcbmVmZmljaWVudGx5IHN0b3JlZCBhcnJheXMgb2YgaW50ZWdlcnMsIGV0Yy4pLlxuXG5Tb21lIG9mIHRoZSB0eXBlIGRlc2NyaXB0aW9ucyBiZWxvdyBjb250YWluIGEgcGFyYWdyYXBoIGxpc3Rpbmdcblwnc3BlY2lhbCBhdHRyaWJ1dGVzLlwnICBUaGVzZSBhcmUgYXR0cmlidXRlcyB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvIHRoZVxuaW1wbGVtZW50YXRpb24gYW5kIGFyZSBub3QgaW50ZW5kZWQgZm9yIGdlbmVyYWwgdXNlLiAgVGhlaXIgZGVmaW5pdGlvblxubWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuXG5Ob25lXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWUgIk5vbmUiLiBJdFxuICAgaXMgdXNlZCB0byBzaWduaWZ5IHRoZSBhYnNlbmNlIG9mIGEgdmFsdWUgaW4gbWFueSBzaXR1YXRpb25zLCBlLmcuLFxuICAgaXQgaXMgcmV0dXJuZWQgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb25cJ3QgZXhwbGljaXRseSByZXR1cm5cbiAgIGFueXRoaW5nLiBJdHMgdHJ1dGggdmFsdWUgaXMgZmFsc2UuXG5cbk5vdEltcGxlbWVudGVkXG4gICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggdGhpc1xuICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWVcbiAgICJOb3RJbXBsZW1lbnRlZCIuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHMgbWF5XG4gICByZXR1cm4gdGhpcyB2YWx1ZSBpZiB0aGV5IGRvIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgdGhlXG4gICBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGUgcmVmbGVjdGVkXG4gICBvcGVyYXRpb24sIG9yIHNvbWUgb3RoZXIgZmFsbGJhY2ssIGRlcGVuZGluZyBvbiB0aGUgb3BlcmF0b3IuKSAgSXRzXG4gICB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG5FbGxpcHNpc1xuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4gICAiRWxsaXBzaXMiLiBJdCBpcyB1c2VkIHRvIGluZGljYXRlIHRoZSBwcmVzZW5jZSBvZiB0aGUgIi4uLiIgc3ludGF4XG4gICBpbiBhIHNsaWNlLiAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG5cbiJudW1iZXJzLk51bWJlciJcbiAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgYnlcbiAgIGFyaXRobWV0aWMgb3BlcmF0b3JzIGFuZCBhcml0aG1ldGljIGJ1aWx0LWluIGZ1bmN0aW9ucy4gIE51bWVyaWNcbiAgIG9iamVjdHMgYXJlIGltbXV0YWJsZTsgb25jZSBjcmVhdGVkIHRoZWlyIHZhbHVlIG5ldmVyIGNoYW5nZXMuXG4gICBQeXRob24gbnVtYmVycyBhcmUgb2YgY291cnNlIHN0cm9uZ2x5IHJlbGF0ZWQgdG8gbWF0aGVtYXRpY2FsXG4gICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsIHJlcHJlc2VudGF0aW9uXG4gICBpbiBjb21wdXRlcnMuXG5cbiAgIFB5dGhvbiBkaXN0aW5ndWlzaGVzIGJldHdlZW4gaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZFxuICAgY29tcGxleCBudW1iZXJzOlxuXG4gICAibnVtYmVycy5JbnRlZ3JhbCJcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBlbGVtZW50cyBmcm9tIHRoZSBtYXRoZW1hdGljYWwgc2V0IG9mIGludGVnZXJzXG4gICAgICAocG9zaXRpdmUgYW5kIG5lZ2F0aXZlKS5cblxuICAgICAgVGhlcmUgYXJlIHRocmVlIHR5cGVzIG9mIGludGVnZXJzOlxuXG4gICAgICBQbGFpbiBpbnRlZ2Vyc1xuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gdGhlIHJhbmdlIC0yMTQ3NDgzNjQ4IHRocm91Z2hcbiAgICAgICAgIDIxNDc0ODM2NDcuIChUaGUgcmFuZ2UgbWF5IGJlIGxhcmdlciBvbiBtYWNoaW5lcyB3aXRoIGFcbiAgICAgICAgIGxhcmdlciBuYXR1cmFsIHdvcmQgc2l6ZSwgYnV0IG5vdCBzbWFsbGVyLikgIFdoZW4gdGhlIHJlc3VsdFxuICAgICAgICAgb2YgYW4gb3BlcmF0aW9uIHdvdWxkIGZhbGwgb3V0c2lkZSB0aGlzIHJhbmdlLCB0aGUgcmVzdWx0IGlzXG4gICAgICAgICBub3JtYWxseSByZXR1cm5lZCBhcyBhIGxvbmcgaW50ZWdlciAoaW4gc29tZSBjYXNlcywgdGhlXG4gICAgICAgICBleGNlcHRpb24gIk92ZXJmbG93RXJyb3IiIGlzIHJhaXNlZCBpbnN0ZWFkKS4gIEZvciB0aGVcbiAgICAgICAgIHB1cnBvc2Ugb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9ucywgaW50ZWdlcnMgYXJlIGFzc3VtZWQgdG9cbiAgICAgICAgIGhhdmUgYSBiaW5hcnksIDJcJ3MgY29tcGxlbWVudCBub3RhdGlvbiB1c2luZyAzMiBvciBtb3JlIGJpdHMsXG4gICAgICAgICBhbmQgaGlkaW5nIG5vIGJpdHMgZnJvbSB0aGUgdXNlciAoaS5lLiwgYWxsIDQyOTQ5NjcyOTZcbiAgICAgICAgIGRpZmZlcmVudCBiaXQgcGF0dGVybnMgY29ycmVzcG9uZCB0byBkaWZmZXJlbnQgdmFsdWVzKS5cblxuICAgICAgTG9uZyBpbnRlZ2Vyc1xuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4gICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mIHNoaWZ0XG4gICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCBhbmRcbiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyXCdzXG4gICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgb2ZcbiAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG5cbiAgICAgIEJvb2xlYW5zXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgdGhlIHRydXRoIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZS4gIFRoZSB0d29cbiAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSB0aGVcbiAgICAgICAgIG9ubHkgQm9vbGVhbiBvYmplY3RzLiBUaGUgQm9vbGVhbiB0eXBlIGlzIGEgc3VidHlwZSBvZiBwbGFpblxuICAgICAgICAgaW50ZWdlcnMsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgYW5kIDEsXG4gICAgICAgICByZXNwZWN0aXZlbHksIGluIGFsbW9zdCBhbGwgY29udGV4dHMsIHRoZSBleGNlcHRpb24gYmVpbmdcbiAgICAgICAgIHRoYXQgd2hlbiBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcsIHRoZSBzdHJpbmdzICIiRmFsc2UiIiBvclxuICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG5cbiAgICAgIFRoZSBydWxlcyBmb3IgaW50ZWdlciByZXByZXNlbnRhdGlvbiBhcmUgaW50ZW5kZWQgdG8gZ2l2ZSB0aGVcbiAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4gICAgICBpbnZvbHZpbmcgbmVnYXRpdmUgaW50ZWdlcnMgYW5kIHRoZSBsZWFzdCBzdXJwcmlzZXMgd2hlblxuICAgICAgc3dpdGNoaW5nIGJldHdlZW4gdGhlIHBsYWluIGFuZCBsb25nIGludGVnZXIgZG9tYWlucy4gIEFueVxuICAgICAgb3BlcmF0aW9uLCBpZiBpdCB5aWVsZHMgYSByZXN1bHQgaW4gdGhlIHBsYWluIGludGVnZXIgZG9tYWluLFxuICAgICAgd2lsbCB5aWVsZCB0aGUgc2FtZSByZXN1bHQgaW4gdGhlIGxvbmcgaW50ZWdlciBkb21haW4gb3Igd2hlblxuICAgICAgdXNpbmcgbWl4ZWQgb3BlcmFuZHMuICBUaGUgc3dpdGNoIGJldHdlZW4gZG9tYWlucyBpcyB0cmFuc3BhcmVudFxuICAgICAgdG8gdGhlIHByb2dyYW1tZXIuXG5cbiAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuICAgICAgVGhlc2UgcmVwcmVzZW50IG1hY2hpbmUtbGV2ZWwgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludFxuICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuICAgICAgYXJjaGl0ZWN0dXJlIChhbmQgQyBvciBKYXZhIGltcGxlbWVudGF0aW9uKSBmb3IgdGhlIGFjY2VwdGVkXG4gICAgICByYW5nZSBhbmQgaGFuZGxpbmcgb2Ygb3ZlcmZsb3cuIFB5dGhvbiBkb2VzIG5vdCBzdXBwb3J0IHNpbmdsZS1cbiAgICAgIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzOyB0aGUgc2F2aW5ncyBpbiBwcm9jZXNzb3IgYW5kXG4gICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbiAgICAgIGR3YXJmZWQgYnkgdGhlIG92ZXJoZWFkIG9mIHVzaW5nIG9iamVjdHMgaW4gUHl0aG9uLCBzbyB0aGVyZSBpc1xuICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mIGZsb2F0aW5nXG4gICAgICBwb2ludCBudW1iZXJzLlxuXG4gICAibnVtYmVycy5Db21wbGV4IlxuICAgICAgVGhlc2UgcmVwcmVzZW50IGNvbXBsZXggbnVtYmVycyBhcyBhIHBhaXIgb2YgbWFjaGluZS1sZXZlbFxuICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyBhcHBseVxuICAgICAgYXMgZm9yIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuIFRoZSByZWFsIGFuZCBpbWFnaW5hcnkgcGFydHMgb2YgYVxuICAgICAgY29tcGxleCBudW1iZXIgInoiIGNhbiBiZSByZXRyaWV2ZWQgdGhyb3VnaCB0aGUgcmVhZC1vbmx5XG4gICAgICBhdHRyaWJ1dGVzICJ6LnJlYWwiIGFuZCAiei5pbWFnIi5cblxuU2VxdWVuY2VzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIG9yZGVyZWQgc2V0cyBpbmRleGVkIGJ5IG5vbi1uZWdhdGl2ZVxuICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zXG4gICBvZiBhIHNlcXVlbmNlLiBXaGVuIHRoZSBsZW5ndGggb2YgYSBzZXF1ZW5jZSBpcyAqbiosIHRoZSBpbmRleCBzZXRcbiAgIGNvbnRhaW5zIHRoZSBudW1iZXJzIDAsIDEsIC4uLiwgKm4qLTEuICBJdGVtICppKiBvZiBzZXF1ZW5jZSAqYSogaXNcbiAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cblxuICAgU2VxdWVuY2VzIGFsc28gc3VwcG9ydCBzbGljaW5nOiAiYVtpOmpdIiBzZWxlY3RzIGFsbCBpdGVtcyB3aXRoXG4gICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4gICBleHByZXNzaW9uLCBhIHNsaWNlIGlzIGEgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZS4gIFRoaXMgaW1wbGllc1xuICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cblxuICAgU29tZSBzZXF1ZW5jZXMgYWxzbyBzdXBwb3J0ICJleHRlbmRlZCBzbGljaW5nIiB3aXRoIGEgdGhpcmQgInN0ZXAiXG4gICBwYXJhbWV0ZXI6ICJhW2k6ajprXSIgc2VsZWN0cyBhbGwgaXRlbXMgb2YgKmEqIHdpdGggaW5kZXggKngqIHdoZXJlXG4gICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuXG4gICBTZXF1ZW5jZXMgYXJlIGRpc3Rpbmd1aXNoZWQgYWNjb3JkaW5nIHRvIHRoZWlyIG11dGFiaWxpdHk6XG5cbiAgIEltbXV0YWJsZSBzZXF1ZW5jZXNcbiAgICAgIEFuIG9iamVjdCBvZiBhbiBpbW11dGFibGUgc2VxdWVuY2UgdHlwZSBjYW5ub3QgY2hhbmdlIG9uY2UgaXQgaXNcbiAgICAgIGNyZWF0ZWQuICAoSWYgdGhlIG9iamVjdCBjb250YWlucyByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHMsXG4gICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgaG93ZXZlcixcbiAgICAgIHRoZSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgZGlyZWN0bHkgcmVmZXJlbmNlZCBieSBhbiBpbW11dGFibGVcbiAgICAgIG9iamVjdCBjYW5ub3QgY2hhbmdlLilcblxuICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcblxuICAgICAgU3RyaW5nc1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgc3RyaW5nIGFyZSBjaGFyYWN0ZXJzLiAgVGhlcmUgaXMgbm8gc2VwYXJhdGVcbiAgICAgICAgIGNoYXJhY3RlciB0eXBlOyBhIGNoYXJhY3RlciBpcyByZXByZXNlbnRlZCBieSBhIHN0cmluZyBvZiBvbmVcbiAgICAgICAgIGl0ZW0uIENoYXJhY3RlcnMgcmVwcmVzZW50IChhdCBsZWFzdCkgOC1iaXQgYnl0ZXMuICBUaGVcbiAgICAgICAgIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY2hyKCkiIGFuZCAib3JkKCkiIGNvbnZlcnQgYmV0d2VlblxuICAgICAgICAgY2hhcmFjdGVycyBhbmQgbm9ubmVnYXRpdmUgaW50ZWdlcnMgcmVwcmVzZW50aW5nIHRoZSBieXRlXG4gICAgICAgICB2YWx1ZXMuICBCeXRlcyB3aXRoIHRoZSB2YWx1ZXMgMC0tMTI3IHVzdWFsbHkgcmVwcmVzZW50IHRoZVxuICAgICAgICAgY29ycmVzcG9uZGluZyBBU0NJSSB2YWx1ZXMsIGJ1dCB0aGUgaW50ZXJwcmV0YXRpb24gb2YgdmFsdWVzXG4gICAgICAgICBpcyB1cCB0byB0aGUgcHJvZ3JhbS4gIFRoZSBzdHJpbmcgZGF0YSB0eXBlIGlzIGFsc28gdXNlZCB0b1xuICAgICAgICAgcmVwcmVzZW50IGFycmF5cyBvZiBieXRlcywgZS5nLiwgdG8gaG9sZCBkYXRhIHJlYWQgZnJvbSBhXG4gICAgICAgICBmaWxlLlxuXG4gICAgICAgICAoT24gc3lzdGVtcyB3aG9zZSBuYXRpdmUgY2hhcmFjdGVyIHNldCBpcyBub3QgQVNDSUksIHN0cmluZ3NcbiAgICAgICAgIG1heSB1c2UgRUJDRElDIGluIHRoZWlyIGludGVybmFsIHJlcHJlc2VudGF0aW9uLCBwcm92aWRlZCB0aGVcbiAgICAgICAgIGZ1bmN0aW9ucyAiY2hyKCkiIGFuZCAib3JkKCkiIGltcGxlbWVudCBhIG1hcHBpbmcgYmV0d2VlblxuICAgICAgICAgQVNDSUkgYW5kIEVCQ0RJQywgYW5kIHN0cmluZyBjb21wYXJpc29uIHByZXNlcnZlcyB0aGUgQVNDSUlcbiAgICAgICAgIG9yZGVyLiBPciBwZXJoYXBzIHNvbWVvbmUgY2FuIHByb3Bvc2UgYSBiZXR0ZXIgcnVsZT8pXG5cbiAgICAgIFVuaWNvZGVcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIFVuaWNvZGUgb2JqZWN0IGFyZSBVbmljb2RlIGNvZGUgdW5pdHMuICBBXG4gICAgICAgICBVbmljb2RlIGNvZGUgdW5pdCBpcyByZXByZXNlbnRlZCBieSBhIFVuaWNvZGUgb2JqZWN0IG9mIG9uZVxuICAgICAgICAgaXRlbSBhbmQgY2FuIGhvbGQgZWl0aGVyIGEgMTYtYml0IG9yIDMyLWJpdCB2YWx1ZVxuICAgICAgICAgcmVwcmVzZW50aW5nIGEgVW5pY29kZSBvcmRpbmFsICh0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhlXG4gICAgICAgICBvcmRpbmFsIGlzIGdpdmVuIGluICJzeXMubWF4dW5pY29kZSIsIGFuZCBkZXBlbmRzIG9uIGhvd1xuICAgICAgICAgUHl0aG9uIGlzIGNvbmZpZ3VyZWQgYXQgY29tcGlsZSB0aW1lKS4gIFN1cnJvZ2F0ZSBwYWlycyBtYXlcbiAgICAgICAgIGJlIHByZXNlbnQgaW4gdGhlIFVuaWNvZGUgb2JqZWN0LCBhbmQgd2lsbCBiZSByZXBvcnRlZCBhcyB0d29cbiAgICAgICAgIHNlcGFyYXRlIGl0ZW1zLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAidW5pY2hyKCkiIGFuZFxuICAgICAgICAgIm9yZCgpIiBjb252ZXJ0IGJldHdlZW4gY29kZSB1bml0cyBhbmQgbm9ubmVnYXRpdmUgaW50ZWdlcnNcbiAgICAgICAgIHJlcHJlc2VudGluZyB0aGUgVW5pY29kZSBvcmRpbmFscyBhcyBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICAgICAgICBTdGFuZGFyZCAzLjAuIENvbnZlcnNpb24gZnJvbSBhbmQgdG8gb3RoZXIgZW5jb2RpbmdzIGFyZVxuICAgICAgICAgcG9zc2libGUgdGhyb3VnaCB0aGUgVW5pY29kZSBtZXRob2QgImVuY29kZSgpIiBhbmQgdGhlIGJ1aWx0LVxuICAgICAgICAgaW4gZnVuY3Rpb24gInVuaWNvZGUoKSIuXG5cbiAgICAgIFR1cGxlc1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgdHVwbGUgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gVHVwbGVzIG9mXG4gICAgICAgICB0d28gb3IgbW9yZSBpdGVtcyBhcmUgZm9ybWVkIGJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyBvZlxuICAgICAgICAgZXhwcmVzc2lvbnMuICBBIHR1cGxlIG9mIG9uZSBpdGVtIChhIFwnc2luZ2xldG9uXCcpIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFmZml4aW5nIGEgY29tbWEgdG8gYW4gZXhwcmVzc2lvbiAoYW4gZXhwcmVzc2lvbiBieVxuICAgICAgICAgaXRzZWxmIGRvZXMgbm90IGNyZWF0ZSBhIHR1cGxlLCBzaW5jZSBwYXJlbnRoZXNlcyBtdXN0IGJlXG4gICAgICAgICB1c2FibGUgZm9yIGdyb3VwaW5nIG9mIGV4cHJlc3Npb25zKS4gIEFuIGVtcHR5IHR1cGxlIGNhbiBiZVxuICAgICAgICAgZm9ybWVkIGJ5IGFuIGVtcHR5IHBhaXIgb2YgcGFyZW50aGVzZXMuXG5cbiAgIE11dGFibGUgc2VxdWVuY2VzXG4gICAgICBNdXRhYmxlIHNlcXVlbmNlcyBjYW4gYmUgY2hhbmdlZCBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiAgVGhlXG4gICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgb2ZcbiAgICAgIGFzc2lnbm1lbnQgYW5kICJkZWwiIChkZWxldGUpIHN0YXRlbWVudHMuXG5cbiAgICAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzOlxuXG4gICAgICBMaXN0c1xuICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgbGlzdCBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiAgTGlzdHMgYXJlXG4gICAgICAgICBmb3JtZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zIGluXG4gICAgICAgICBzcXVhcmUgYnJhY2tldHMuIChOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIHNwZWNpYWwgY2FzZXMgbmVlZGVkXG4gICAgICAgICB0byBmb3JtIGxpc3RzIG9mIGxlbmd0aCAwIG9yIDEuKVxuXG4gICAgICBCeXRlIEFycmF5c1xuICAgICAgICAgQSBieXRlYXJyYXkgb2JqZWN0IGlzIGEgbXV0YWJsZSBhcnJheS4gVGhleSBhcmUgY3JlYXRlZCBieVxuICAgICAgICAgdGhlIGJ1aWx0LWluICJieXRlYXJyYXkoKSIgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4gICAgICAgICBtdXRhYmxlIChhbmQgaGVuY2UgdW5oYXNoYWJsZSksIGJ5dGUgYXJyYXlzIG90aGVyd2lzZSBwcm92aWRlXG4gICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4gICAgICAgICBvYmplY3RzLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSAiYXJyYXkiIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSBvZiBhXG4gICAgICBtdXRhYmxlIHNlcXVlbmNlIHR5cGUuXG5cblNldCB0eXBlc1xuICAgVGhlc2UgcmVwcmVzZW50IHVub3JkZXJlZCwgZmluaXRlIHNldHMgb2YgdW5pcXVlLCBpbW11dGFibGVcbiAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gSG93ZXZlcixcbiAgIHRoZXkgY2FuIGJlIGl0ZXJhdGVkIG92ZXIsIGFuZCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIlxuICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgZmFzdFxuICAgbWVtYmVyc2hpcCB0ZXN0aW5nLCByZW1vdmluZyBkdXBsaWNhdGVzIGZyb20gYSBzZXF1ZW5jZSwgYW5kXG4gICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuICAgZGlmZmVyZW5jZSwgYW5kIHN5bW1ldHJpYyBkaWZmZXJlbmNlLlxuXG4gICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4gICBkaWN0aW9uYXJ5IGtleXMuIE5vdGUgdGhhdCBudW1lcmljIHR5cGVzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3JcbiAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuICAgIjEuMCIpLCBvbmx5IG9uZSBvZiB0aGVtIGNhbiBiZSBjb250YWluZWQgaW4gYSBzZXQuXG5cbiAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG5cbiAgIFNldHNcbiAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInNldCgpIiBjb25zdHJ1Y3RvciBhbmQgY2FuIGJlIG1vZGlmaWVkIGFmdGVyd2FyZHMgYnkgc2V2ZXJhbFxuICAgICAgbWV0aG9kcywgc3VjaCBhcyAiYWRkKCkiLlxuXG4gICBGcm96ZW4gc2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGFuIGltbXV0YWJsZSBzZXQuICBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gImZyb3plbnNldCgpIiBjb25zdHJ1Y3Rvci4gIEFzIGEgZnJvemVuc2V0IGlzIGltbXV0YWJsZVxuICAgICAgYW5kICpoYXNoYWJsZSosIGl0IGNhbiBiZSB1c2VkIGFnYWluIGFzIGFuIGVsZW1lbnQgb2YgYW5vdGhlclxuICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuXG5NYXBwaW5nc1xuICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgaW5kZXhcbiAgIHNldHMuIFRoZSBzdWJzY3JpcHQgbm90YXRpb24gImFba10iIHNlbGVjdHMgdGhlIGl0ZW0gaW5kZXhlZCBieSAiayJcbiAgIGZyb20gdGhlIG1hcHBpbmcgImEiOyB0aGlzIGNhbiBiZSB1c2VkIGluIGV4cHJlc3Npb25zIGFuZCBhcyB0aGVcbiAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb25cbiAgICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgbWFwcGluZy5cblxuICAgVGhlcmUgaXMgY3VycmVudGx5IGEgc2luZ2xlIGludHJpbnNpYyBtYXBwaW5nIHR5cGU6XG5cbiAgIERpY3Rpb25hcmllc1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBuZWFybHlcbiAgICAgIGFyYml0cmFyeSB2YWx1ZXMuICBUaGUgb25seSB0eXBlcyBvZiB2YWx1ZXMgbm90IGFjY2VwdGFibGUgYXNcbiAgICAgIGtleXMgYXJlIHZhbHVlcyBjb250YWluaW5nIGxpc3RzIG9yIGRpY3Rpb25hcmllcyBvciBvdGhlclxuICAgICAgbXV0YWJsZSB0eXBlcyB0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbiAgICAgIGlkZW50aXR5LCB0aGUgcmVhc29uIGJlaW5nIHRoYXQgdGhlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiBvZlxuICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5XCdzIGhhc2ggdmFsdWUgdG8gcmVtYWluIGNvbnN0YW50LlxuICAgICAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciBrZXlzIG9iZXkgdGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpY1xuICAgICAgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZCAiMS4wIilcbiAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbiAgICAgIGRpY3Rpb25hcnkgZW50cnkuXG5cbiAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuICAgICAgbm90YXRpb24gKHNlZSBzZWN0aW9uIERpY3Rpb25hcnkgZGlzcGxheXMpLlxuXG4gICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgImRibSIsICJnZGJtIiwgYW5kICJic2RkYiIgcHJvdmlkZVxuICAgICAgYWRkaXRpb25hbCBleGFtcGxlcyBvZiBtYXBwaW5nIHR5cGVzLlxuXG5DYWxsYWJsZSB0eXBlc1xuICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuICAgc2VjdGlvbiBDYWxscykgY2FuIGJlIGFwcGxpZWQ6XG5cbiAgIFVzZXItZGVmaW5lZCBmdW5jdGlvbnNcbiAgICAgIEEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGEgZnVuY3Rpb25cbiAgICAgIGRlZmluaXRpb24gKHNlZSBzZWN0aW9uIEZ1bmN0aW9uIGRlZmluaXRpb25zKS4gIEl0IHNob3VsZCBiZVxuICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtc1xuICAgICAgYXMgdGhlIGZ1bmN0aW9uXCdzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cblxuICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuXG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgQXR0cmlidXRlICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4gICAgICB8ICJfX2RvY19fIiAiZnVuY19kb2MiICAgIHwgVGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nLCBvciAiTm9uZSIgaWYgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX25hbWVfXyIgImZ1bmNfbmFtZSIgIHwgVGhlIGZ1bmN0aW9uXCdzIG5hbWUgICAgICAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fbW9kdWxlX18iICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uIHdhcyBkZWZpbmVkIGluLCBvciAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19kZWZhdWx0c19fIiAgICAgICAgICB8IEEgdHVwbGUgY29udGFpbmluZyBkZWZhdWx0ICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICJmdW5jX2RlZmF1bHRzIiAgICAgICAgIHwgYXJndW1lbnQgdmFsdWVzIGZvciB0aG9zZSAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IG9yICJOb25lIiBpZiBubyBhcmd1bWVudHMgaGF2ZSAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSBkZWZhdWx0IHZhbHVlLiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19jb2RlX18iICJmdW5jX2NvZGUiICB8IFRoZSBjb2RlIG9iamVjdCByZXByZXNlbnRpbmcgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIGJvZHkuICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19nbG9iYWxzX18iICAgICAgICAgICB8IEEgcmVmZXJlbmNlIHRvIHRoZSBkaWN0aW9uYXJ5ICAgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICJmdW5jX2dsb2JhbHMiICAgICAgICAgIHwgdGhhdCBob2xkcyB0aGUgZnVuY3Rpb25cJ3MgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoaWNoIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZC4gfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGljdF9fIiAiZnVuY19kaWN0IiAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyYml0cmFyeSBmdW5jdGlvbiBhdHRyaWJ1dGVzLiAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY2xvc3VyZV9fIiAgICAgICAgICAgfCAiTm9uZSIgb3IgYSB0dXBsZSBvZiBjZWxscyB0aGF0IHwgUmVhZC1vbmx5ICAgfFxuICAgICAgfCAiZnVuY19jbG9zdXJlIiAgICAgICAgICB8IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25cJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcblxuICAgICAgTW9zdCBvZiB0aGUgYXR0cmlidXRlcyBsYWJlbGxlZCAiV3JpdGFibGUiIGNoZWNrIHRoZSB0eXBlIG9mIHRoZVxuICAgICAgYXNzaWduZWQgdmFsdWUuXG5cbiAgICAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjQ6ICJmdW5jX25hbWUiIGlzIG5vdyB3cml0YWJsZS5cblxuICAgICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNjogVGhlIGRvdWJsZS11bmRlcnNjb3JlIGF0dHJpYnV0ZXNcbiAgICAgICJfX2Nsb3N1cmVfXyIsICJfX2NvZGVfXyIsICJfX2RlZmF1bHRzX18iLCBhbmQgIl9fZ2xvYmFsc19fIlxuICAgICAgd2VyZSBpbnRyb2R1Y2VkIGFzIGFsaWFzZXMgZm9yIHRoZSBjb3JyZXNwb25kaW5nICJmdW5jXyoiXG4gICAgICBhdHRyaWJ1dGVzIGZvciBmb3J3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuXG5cbiAgICAgIEZ1bmN0aW9uIG9iamVjdHMgYWxzbyBzdXBwb3J0IGdldHRpbmcgYW5kIHNldHRpbmcgYXJiaXRyYXJ5XG4gICAgICBhdHRyaWJ1dGVzLCB3aGljaCBjYW4gYmUgdXNlZCwgZm9yIGV4YW1wbGUsIHRvIGF0dGFjaCBtZXRhZGF0YVxuICAgICAgdG8gZnVuY3Rpb25zLiAgUmVndWxhciBhdHRyaWJ1dGUgZG90LW5vdGF0aW9uIGlzIHVzZWQgdG8gZ2V0IGFuZFxuICAgICAgc2V0IHN1Y2ggYXR0cmlidXRlcy4gKk5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5XG4gICAgICBzdXBwb3J0cyBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuIEZ1bmN0aW9uXG4gICAgICBhdHRyaWJ1dGVzIG9uIGJ1aWx0LWluIGZ1bmN0aW9ucyBtYXkgYmUgc3VwcG9ydGVkIGluIHRoZVxuICAgICAgZnV0dXJlLipcblxuICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZ1bmN0aW9uXCdzIGRlZmluaXRpb24gY2FuIGJlXG4gICAgICByZXRyaWV2ZWQgZnJvbSBpdHMgY29kZSBvYmplY3Q7IHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgaW50ZXJuYWxcbiAgICAgIHR5cGVzIGJlbG93LlxuXG4gICBVc2VyLWRlZmluZWQgbWV0aG9kc1xuICAgICAgQSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlXG4gICAgICAob3IgIk5vbmUiKSBhbmQgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWRcbiAgICAgIGZ1bmN0aW9uKS5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImltX3NlbGYiIGlzIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgb2JqZWN0LCAiaW1fZnVuYyIgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgImltX2NsYXNzIiBpcyB0aGVcbiAgICAgIGNsYXNzIG9mICJpbV9zZWxmIiBmb3IgYm91bmQgbWV0aG9kcyBvciB0aGUgY2xhc3MgdGhhdCBhc2tlZCBmb3JcbiAgICAgIHRoZSBtZXRob2QgZm9yIHVuYm91bmQgbWV0aG9kczsgIl9fZG9jX18iIGlzIHRoZSBtZXRob2RcJ3NcbiAgICAgIGRvY3VtZW50YXRpb24gKHNhbWUgYXMgImltX2Z1bmMuX19kb2NfXyIpOyAiX19uYW1lX18iIGlzIHRoZVxuICAgICAgbWV0aG9kIG5hbWUgKHNhbWUgYXMgImltX2Z1bmMuX19uYW1lX18iKTsgIl9fbW9kdWxlX18iIGlzIHRoZVxuICAgICAgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWQgaW4sIG9yICJOb25lIiBpZlxuICAgICAgdW5hdmFpbGFibGUuXG5cbiAgICAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjI6ICJpbV9zZWxmIiB1c2VkIHRvIHJlZmVyIHRvIHRoZSBjbGFzc1xuICAgICAgdGhhdCBkZWZpbmVkIHRoZSBtZXRob2QuXG5cbiAgICAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjY6IEZvciBQeXRob24gMyBmb3J3YXJkLWNvbXBhdGliaWxpdHksXG4gICAgICAiaW1fZnVuYyIgaXMgYWxzbyBhdmFpbGFibGUgYXMgIl9fZnVuY19fIiwgYW5kICJpbV9zZWxmIiBhc1xuICAgICAgIl9fc2VsZl9fIi5cblxuICAgICAgTWV0aG9kcyBhbHNvIHN1cHBvcnQgYWNjZXNzaW5nIChidXQgbm90IHNldHRpbmcpIHRoZSBhcmJpdHJhcnlcbiAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4gICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyAocGVyaGFwcyB2aWEgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyksIGlmXG4gICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QsIGFuIHVuYm91bmRcbiAgICAgIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0LCBvciBhIGNsYXNzIG1ldGhvZCBvYmplY3QuIFdoZW4gdGhlXG4gICAgICBhdHRyaWJ1dGUgaXMgYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCwgYSBuZXcgbWV0aG9kIG9iamVjdFxuICAgICAgaXMgb25seSBjcmVhdGVkIGlmIHRoZSBjbGFzcyBmcm9tIHdoaWNoIGl0IGlzIGJlaW5nIHJldHJpZXZlZCBpc1xuICAgICAgdGhlIHNhbWUgYXMsIG9yIGEgZGVyaXZlZCBjbGFzcyBvZiwgdGhlIGNsYXNzIHN0b3JlZCBpbiB0aGVcbiAgICAgIG9yaWdpbmFsIG1ldGhvZCBvYmplY3Q7IG90aGVyd2lzZSwgdGhlIG9yaWdpbmFsIG1ldGhvZCBvYmplY3QgaXNcbiAgICAgIHVzZWQgYXMgaXQgaXMuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYVxuICAgICAgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBmcm9tIGEgY2xhc3MsIGl0cyAiaW1fc2VsZiJcbiAgICAgIGF0dHJpYnV0ZSBpcyAiTm9uZSIgYW5kIHRoZSBtZXRob2Qgb2JqZWN0IGlzIHNhaWQgdG8gYmUgdW5ib3VuZC5cbiAgICAgIFdoZW4gb25lIGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3RcbiAgICAgIGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsIGl0cyAiaW1fc2VsZiIgYXR0cmlidXRlXG4gICAgICBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kIG9iamVjdCBpcyBzYWlkIHRvIGJlIGJvdW5kLiBJblxuICAgICAgZWl0aGVyIGNhc2UsIHRoZSBuZXcgbWV0aG9kXCdzICJpbV9jbGFzcyIgYXR0cmlidXRlIGlzIHRoZSBjbGFzc1xuICAgICAgZnJvbSB3aGljaCB0aGUgcmV0cmlldmFsIHRha2VzIHBsYWNlLCBhbmQgaXRzICJpbV9mdW5jIlxuICAgICAgYXR0cmlidXRlIGlzIHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBvYmplY3QuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbiAgICAgIGFub3RoZXIgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIHRoZSBiZWhhdmlvdXIgaXNcbiAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlICJpbV9mdW5jIlxuICAgICAgYXR0cmlidXRlIG9mIHRoZSBuZXcgaW5zdGFuY2UgaXMgbm90IHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0XG4gICAgICBidXQgaXRzICJpbV9mdW5jIiBhdHRyaWJ1dGUuXG5cbiAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYVxuICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyAiaW1fc2VsZiJcbiAgICAgIGF0dHJpYnV0ZSBpcyB0aGUgY2xhc3MgaXRzZWxmLCBhbmQgaXRzICJpbV9mdW5jIiBhdHRyaWJ1dGUgaXNcbiAgICAgIHRoZSBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuXG4gICAgICBXaGVuIGFuIHVuYm91bmQgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGVcbiAgICAgIHVuZGVybHlpbmcgZnVuY3Rpb24gKCJpbV9mdW5jIikgaXMgY2FsbGVkLCB3aXRoIHRoZSByZXN0cmljdGlvblxuICAgICAgdGhhdCB0aGUgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiB0aGUgcHJvcGVyIGNsYXNzXG4gICAgICAoImltX2NsYXNzIikgb3Igb2YgYSBkZXJpdmVkIGNsYXNzIHRoZXJlb2YuXG5cbiAgICAgIFdoZW4gYSBib3VuZCB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjYWxsZWQsIHRoZVxuICAgICAgdW5kZXJseWluZyBmdW5jdGlvbiAoImltX2Z1bmMiKSBpcyBjYWxsZWQsIGluc2VydGluZyB0aGUgY2xhc3NcbiAgICAgIGluc3RhbmNlICgiaW1fc2VsZiIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yXG4gICAgICBpbnN0YW5jZSwgd2hlbiAiQyIgaXMgYSBjbGFzcyB3aGljaCBjb250YWlucyBhIGRlZmluaXRpb24gZm9yIGFcbiAgICAgIGZ1bmN0aW9uICJmKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAieC5mKDEpIlxuICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nICJDLmYoeCwgMSkiLlxuXG4gICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgZGVyaXZlZCBmcm9tIGEgY2xhc3MgbWV0aG9kXG4gICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiaW1fc2VsZiIgd2lsbCBhY3R1YWxseVxuICAgICAgYmUgdGhlIGNsYXNzIGl0c2VsZiwgc28gdGhhdCBjYWxsaW5nIGVpdGhlciAieC5mKDEpIiBvciAiQy5mKDEpIlxuICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nICJmKEMsMSkiIHdoZXJlICJmIiBpcyB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gKHVuYm91bmQgb3JcbiAgICAgIGJvdW5kKSBtZXRob2Qgb2JqZWN0IGhhcHBlbnMgZWFjaCB0aW1lIHRoZSBhdHRyaWJ1dGUgaXNcbiAgICAgIHJldHJpZXZlZCBmcm9tIHRoZSBjbGFzcyBvciBpbnN0YW5jZS4gSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bFxuICAgICAgb3B0aW1pemF0aW9uIGlzIHRvIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kXG4gICAgICBjYWxsIHRoYXQgbG9jYWwgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvblxuICAgICAgb25seSBoYXBwZW5zIGZvciB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzXG4gICAgICAoYW5kIGFsbCBub24tY2FsbGFibGUgb2JqZWN0cykgYXJlIHJldHJpZXZlZCB3aXRob3V0XG4gICAgICB0cmFuc2Zvcm1hdGlvbi4gIEl0IGlzIGFsc28gaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB1c2VyLWRlZmluZWRcbiAgICAgIGZ1bmN0aW9ucyB3aGljaCBhcmUgYXR0cmlidXRlcyBvZiBhIGNsYXNzIGluc3RhbmNlIGFyZSBub3RcbiAgICAgIGNvbnZlcnRlZCB0byBib3VuZCBtZXRob2RzOyB0aGlzICpvbmx5KiBoYXBwZW5zIHdoZW4gdGhlXG4gICAgICBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGUgb2YgdGhlIGNsYXNzLlxuXG4gICBHZW5lcmF0b3IgZnVuY3Rpb25zXG4gICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCB1c2VzIHRoZSAieWllbGQiIHN0YXRlbWVudCAoc2VlXG4gICAgICBzZWN0aW9uIFRoZSB5aWVsZCBzdGF0ZW1lbnQpIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgZnVuY3Rpb24qLlxuICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3Igb2JqZWN0XG4gICAgICB3aGljaCBjYW4gYmUgdXNlZCB0byBleGVjdXRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbjogIGNhbGxpbmdcbiAgICAgIHRoZSBpdGVyYXRvclwncyAibmV4dCgpIiBtZXRob2Qgd2lsbCBjYXVzZSB0aGUgZnVuY3Rpb24gdG9cbiAgICAgIGV4ZWN1dGUgdW50aWwgaXQgcHJvdmlkZXMgYSB2YWx1ZSB1c2luZyB0aGUgInlpZWxkIiBzdGF0ZW1lbnQuXG4gICAgICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCBvciBmYWxscyBvZmYgdGhlXG4gICAgICBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZSBpdGVyYXRvciB3aWxsXG4gICAgICBoYXZlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgc2V0IG9mIHZhbHVlcyB0byBiZSByZXR1cm5lZC5cblxuICAgQnVpbHQtaW4gZnVuY3Rpb25zXG4gICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyBmdW5jdGlvbi5cbiAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgImxlbigpIiBhbmQgIm1hdGguc2luKCkiXG4gICAgICAoIm1hdGgiIGlzIGEgc3RhbmRhcmQgYnVpbHQtaW4gbW9kdWxlKS4gVGhlIG51bWJlciBhbmQgdHlwZSBvZlxuICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCByZWFkLVxuICAgICAgb25seSBhdHRyaWJ1dGVzOiAiX19kb2NfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb25cbiAgICAgIHN0cmluZywgb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlOyAiX19uYW1lX18iIGlzIHRoZSBmdW5jdGlvblwnc1xuICAgICAgbmFtZTsgIl9fc2VsZl9fIiBpcyBzZXQgdG8gIk5vbmUiIChidXQgc2VlIHRoZSBuZXh0IGl0ZW0pO1xuICAgICAgIl9fbW9kdWxlX18iIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIGZ1bmN0aW9uIHdhcyBkZWZpbmVkXG4gICAgICBpbiBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGUuXG5cbiAgIEJ1aWx0LWluIG1ldGhvZHNcbiAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sIHRoaXNcbiAgICAgIHRpbWUgY29udGFpbmluZyBhbiBvYmplY3QgcGFzc2VkIHRvIHRoZSBDIGZ1bmN0aW9uIGFzIGFuXG4gICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbiAgICAgICJhbGlzdC5hcHBlbmQoKSIsIGFzc3VtaW5nICphbGlzdCogaXMgYSBsaXN0IG9iamVjdC4gSW4gdGhpc1xuICAgICAgY2FzZSwgdGhlIHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZSAiX19zZWxmX18iIGlzIHNldCB0byB0aGVcbiAgICAgIG9iamVjdCBkZW5vdGVkIGJ5ICphbGlzdCouXG5cbiAgIENsYXNzIFR5cGVzXG4gICAgICBDbGFzcyB0eXBlcywgb3IgIm5ldy1zdHlsZSBjbGFzc2VzLCIgYXJlIGNhbGxhYmxlLiAgVGhlc2VcbiAgICAgIG9iamVjdHMgbm9ybWFsbHkgYWN0IGFzIGZhY3RvcmllcyBmb3IgbmV3IGluc3RhbmNlcyBvZlxuICAgICAgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlIGZvciBjbGFzcyB0eXBlcyB0aGF0XG4gICAgICBvdmVycmlkZSAiX19uZXdfXygpIi4gIFRoZSBhcmd1bWVudHMgb2YgdGhlIGNhbGwgYXJlIHBhc3NlZCB0b1xuICAgICAgIl9fbmV3X18oKSIgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0byAiX19pbml0X18oKSIgdG9cbiAgICAgIGluaXRpYWxpemUgdGhlIG5ldyBpbnN0YW5jZS5cblxuICAgQ2xhc3NpYyBDbGFzc2VzXG4gICAgICBDbGFzcyBvYmplY3RzIGFyZSBkZXNjcmliZWQgYmVsb3cuICBXaGVuIGEgY2xhc3Mgb2JqZWN0IGlzXG4gICAgICBjYWxsZWQsIGEgbmV3IGNsYXNzIGluc3RhbmNlIChhbHNvIGRlc2NyaWJlZCBiZWxvdykgaXMgY3JlYXRlZFxuICAgICAgYW5kIHJldHVybmVkLiAgVGhpcyBpbXBsaWVzIGEgY2FsbCB0byB0aGUgY2xhc3NcJ3MgIl9faW5pdF9fKCkiXG4gICAgICBtZXRob2QgaWYgaXQgaGFzIG9uZS4gIEFueSBhcmd1bWVudHMgYXJlIHBhc3NlZCBvbiB0byB0aGVcbiAgICAgICJfX2luaXRfXygpIiBtZXRob2QuICBJZiB0aGVyZSBpcyBubyAiX19pbml0X18oKSIgbWV0aG9kLCB0aGVcbiAgICAgIGNsYXNzIG11c3QgYmUgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLlxuXG4gICBDbGFzcyBpbnN0YW5jZXNcbiAgICAgIENsYXNzIGluc3RhbmNlcyBhcmUgZGVzY3JpYmVkIGJlbG93LiAgQ2xhc3MgaW5zdGFuY2VzIGFyZVxuICAgICAgY2FsbGFibGUgb25seSB3aGVuIHRoZSBjbGFzcyBoYXMgYSAiX19jYWxsX18oKSIgbWV0aG9kO1xuICAgICAgIngoYXJndW1lbnRzKSIgaXMgYSBzaG9ydGhhbmQgZm9yICJ4Ll9fY2FsbF9fKGFyZ3VtZW50cykiLlxuXG5Nb2R1bGVzXG4gICBNb2R1bGVzIGFyZSBpbXBvcnRlZCBieSB0aGUgImltcG9ydCIgc3RhdGVtZW50IChzZWUgc2VjdGlvbiBUaGVcbiAgIGltcG9ydCBzdGF0ZW1lbnQpLiBBIG1vZHVsZSBvYmplY3QgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGJ5IGFcbiAgIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlXG4gICBmdW5jX2dsb2JhbHMgYXR0cmlidXRlIG9mIGZ1bmN0aW9ucyBkZWZpbmVkIGluIHRoZSBtb2R1bGUpLlxuICAgQXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksXG4gICBlLmcuLCAibS54IiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0iLiBBIG1vZHVsZSBvYmplY3RcbiAgIGRvZXMgbm90IGNvbnRhaW4gdGhlIGNvZGUgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlXG4gICAoc2luY2UgaXQgaXNuXCd0IG5lZWRlZCBvbmNlIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgIm0ueCA9IDEiIGlzIGVxdWl2YWxlbnQgdG8gIm0uX19kaWN0X19bIngiXSA9IDEiLlxuXG4gICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6ICJfX2RpY3RfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2VcbiAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbiAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkXG4gICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgaGFzXG4gICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgdGhlXG4gICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgbW9kdWxlXCdzIG5hbWU7XG4gICAiX19kb2NfXyIgaXMgdGhlIG1vZHVsZVwncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgIk5vbmUiIGlmXG4gICB1bmF2YWlsYWJsZTsgIl9fZmlsZV9fIiBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGVcbiAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgIl9fZmlsZV9fIlxuICAgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50IGZvciBDIG1vZHVsZXMgdGhhdCBhcmUgc3RhdGljYWxseSBsaW5rZWRcbiAgIGludG8gdGhlIGludGVycHJldGVyOyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb21cbiAgIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgZmlsZS5cblxuQ2xhc3Nlc1xuICAgQm90aCBjbGFzcyB0eXBlcyAobmV3LXN0eWxlIGNsYXNzZXMpIGFuZCBjbGFzcyBvYmplY3RzIChvbGQtXG4gICBzdHlsZS9jbGFzc2ljIGNsYXNzZXMpIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9uc1xuICAgKHNlZSBzZWN0aW9uIENsYXNzIGRlZmluaXRpb25zKS4gIEEgY2xhc3MgaGFzIGEgbmFtZXNwYWNlXG4gICBpbXBsZW1lbnRlZCBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmVcbiAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJDLngiIGlzIHRyYW5zbGF0ZWRcbiAgIHRvICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCBmb3IgbmV3LXN0eWxlIGNsYXNzZXMgaW4gcGFydGljdWxhclxuICAgdGhlcmUgYXJlIGEgbnVtYmVyIG9mIGhvb2tzIHdoaWNoIGFsbG93IGZvciBvdGhlciBtZWFucyBvZiBsb2NhdGluZ1xuICAgYXR0cmlidXRlcykuIFdoZW4gdGhlIGF0dHJpYnV0ZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlXG4gICBhdHRyaWJ1dGUgc2VhcmNoIGNvbnRpbnVlcyBpbiB0aGUgYmFzZSBjbGFzc2VzLiAgRm9yIG9sZC1zdHlsZVxuICAgY2xhc3NlcywgdGhlIHNlYXJjaCBpcyBkZXB0aC1maXJzdCwgbGVmdC10by1yaWdodCBpbiB0aGUgb3JkZXIgb2ZcbiAgIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdC4gTmV3LXN0eWxlIGNsYXNzZXMgdXNlIHRoZSBtb3JlXG4gICBjb21wbGV4IEMzIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW5cbiAgIHRoZSBwcmVzZW5jZSBvZiBcJ2RpYW1vbmRcJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZVxuICAgbXVsdGlwbGUgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLlxuICAgQWRkaXRpb25hbCBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBuZXctc3R5bGUgY2xhc3NlcyBjYW4gYmVcbiAgIGZvdW5kIGluIHRoZSBkb2N1bWVudGF0aW9uIGFjY29tcGFueWluZyB0aGUgMi4zIHJlbGVhc2UgYXRcbiAgIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG5cbiAgIFdoZW4gYSBjbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlIChmb3IgY2xhc3MgIkMiLCBzYXkpIHdvdWxkIHlpZWxkIGFcbiAgIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYW4gdW5ib3VuZCB1c2VyLWRlZmluZWQgbWV0aG9kXG4gICBvYmplY3Qgd2hvc2UgYXNzb2NpYXRlZCBjbGFzcyBpcyBlaXRoZXIgIkMiIG9yIG9uZSBvZiBpdHMgYmFzZVxuICAgY2xhc3NlcywgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiB1bmJvdW5kIHVzZXItZGVmaW5lZCBtZXRob2RcbiAgIG9iamVjdCB3aG9zZSAiaW1fY2xhc3MiIGF0dHJpYnV0ZSBpcyAiQyIuIFdoZW4gaXQgd291bGQgeWllbGQgYVxuICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhIGJvdW5kIHVzZXItZGVmaW5lZFxuICAgbWV0aG9kIG9iamVjdCB3aG9zZSAiaW1fc2VsZiIgYXR0cmlidXRlIGlzICJDIi4gIFdoZW4gaXQgd291bGRcbiAgIHlpZWxkIGEgc3RhdGljIG1ldGhvZCBvYmplY3QsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG9iamVjdFxuICAgd3JhcHBlZCBieSB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uIEltcGxlbWVudGluZ1xuICAgRGVzY3JpcHRvcnMgZm9yIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYVxuICAgY2xhc3MgbWF5IGRpZmZlciBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgIl9fZGljdF9fIlxuICAgKG5vdGUgdGhhdCBvbmx5IG5ldy1zdHlsZSBjbGFzc2VzIHN1cHBvcnQgZGVzY3JpcHRvcnMpLlxuXG4gICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzc1wncyBkaWN0aW9uYXJ5LCBuZXZlclxuICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuXG4gICBBIGNsYXNzIG9iamVjdCBjYW4gYmUgY2FsbGVkIChzZWUgYWJvdmUpIHRvIHlpZWxkIGEgY2xhc3MgaW5zdGFuY2VcbiAgIChzZWUgYmVsb3cpLlxuXG4gICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIGNsYXNzIG5hbWU7ICJfX21vZHVsZV9fIiBpc1xuICAgdGhlIG1vZHVsZSBuYW1lIGluIHdoaWNoIHRoZSBjbGFzcyB3YXMgZGVmaW5lZDsgIl9fZGljdF9fIiBpcyB0aGVcbiAgIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3NcJ3MgbmFtZXNwYWNlOyAiX19iYXNlc19fIiBpcyBhIHR1cGxlXG4gICAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgaW4gdGhlXG4gICBvcmRlciBvZiB0aGVpciBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3Q7ICJfX2RvY19fIiBpcyB0aGVcbiAgIGNsYXNzXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuXG5DbGFzcyBpbnN0YW5jZXNcbiAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgYWJvdmUpLlxuICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5IHdoaWNoXG4gICBpcyB0aGUgZmlyc3QgcGxhY2UgaW4gd2hpY2ggYXR0cmlidXRlIHJlZmVyZW5jZXMgYXJlIHNlYXJjaGVkLlxuICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlXCdzIGNsYXNzIGhhc1xuICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbiAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgdXNlci1kZWZpbmVkXG4gICBmdW5jdGlvbiBvYmplY3Qgb3IgYW4gdW5ib3VuZCB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCB3aG9zZVxuICAgYXNzb2NpYXRlZCBjbGFzcyBpcyB0aGUgY2xhc3MgKGNhbGwgaXQgIkMiKSBvZiB0aGUgaW5zdGFuY2UgZm9yXG4gICB3aGljaCB0aGUgYXR0cmlidXRlIHJlZmVyZW5jZSB3YXMgaW5pdGlhdGVkIG9yIG9uZSBvZiBpdHMgYmFzZXMsIGl0XG4gICBpcyB0cmFuc2Zvcm1lZCBpbnRvIGEgYm91bmQgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3Qgd2hvc2VcbiAgICJpbV9jbGFzcyIgYXR0cmlidXRlIGlzICJDIiBhbmQgd2hvc2UgImltX3NlbGYiIGF0dHJpYnV0ZSBpcyB0aGVcbiAgIGluc3RhbmNlLiBTdGF0aWMgbWV0aG9kIGFuZCBjbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgYWxzb1xuICAgdHJhbnNmb3JtZWQsIGFzIGlmIHRoZXkgaGFkIGJlZW4gcmV0cmlldmVkIGZyb20gY2xhc3MgIkMiOyBzZWVcbiAgIGFib3ZlIHVuZGVyICJDbGFzc2VzIi4gU2VlIHNlY3Rpb24gSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzIGZvclxuICAgYW5vdGhlciB3YXkgaW4gd2hpY2ggYXR0cmlidXRlcyBvZiBhIGNsYXNzIHJldHJpZXZlZCB2aWEgaXRzXG4gICBpbnN0YW5jZXMgbWF5IGRpZmZlciBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGVcbiAgIGNsYXNzXCdzICJfX2RpY3RfXyIuIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZVxuICAgb2JqZWN0XCdzIGNsYXNzIGhhcyBhICJfX2dldGF0dHJfXygpIiBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvXG4gICBzYXRpc2Z5IHRoZSBsb29rdXAuXG5cbiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50cyBhbmQgZGVsZXRpb25zIHVwZGF0ZSB0aGUgaW5zdGFuY2VcJ3NcbiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3NcJ3MgZGljdGlvbmFyeS4gIElmIHRoZSBjbGFzcyBoYXMgYVxuICAgIl9fc2V0YXR0cl9fKCkiIG9yICJfX2RlbGF0dHJfXygpIiBtZXRob2QsIHRoaXMgaXMgY2FsbGVkIGluc3RlYWRcbiAgIG9mIHVwZGF0aW5nIHRoZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBDbGFzcyBpbnN0YW5jZXMgY2FuIHByZXRlbmQgdG8gYmUgbnVtYmVycywgc2VxdWVuY2VzLCBvciBtYXBwaW5nc1xuICAgaWYgdGhleSBoYXZlIG1ldGhvZHMgd2l0aCBjZXJ0YWluIHNwZWNpYWwgbmFtZXMuICBTZWUgc2VjdGlvblxuICAgU3BlY2lhbCBtZXRob2QgbmFtZXMuXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fZGljdF9fIiBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4gICAiX19jbGFzc19fIiBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG5cbkZpbGVzXG4gICBBIGZpbGUgb2JqZWN0IHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgRmlsZSBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5XG4gICB0aGUgIm9wZW4oKSIgYnVpbHQtaW4gZnVuY3Rpb24sIGFuZCBhbHNvIGJ5ICJvcy5wb3BlbigpIixcbiAgICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiIG1ldGhvZCBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kXG4gICBwZXJoYXBzIGJ5IG90aGVyIGZ1bmN0aW9ucyBvciBtZXRob2RzIHByb3ZpZGVkIGJ5IGV4dGVuc2lvblxuICAgbW9kdWxlcykuICBUaGUgb2JqZWN0cyAic3lzLnN0ZGluIiwgInN5cy5zdGRvdXQiIGFuZCAic3lzLnN0ZGVyciJcbiAgIGFyZSBpbml0aWFsaXplZCB0byBmaWxlIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgaW50ZXJwcmV0ZXJcJ3NcbiAgIHN0YW5kYXJkIGlucHV0LCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXMuICBTZWUgRmlsZSBPYmplY3RzIGZvclxuICAgY29tcGxldGUgZG9jdW1lbnRhdGlvbiBvZiBmaWxlIG9iamVjdHMuXG5cbkludGVybmFsIHR5cGVzXG4gICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvIHRoZVxuICAgdXNlci4gVGhlaXIgZGVmaW5pdGlvbnMgbWF5IGNoYW5nZSB3aXRoIGZ1dHVyZSB2ZXJzaW9ucyBvZiB0aGVcbiAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cblxuICAgQ29kZSBvYmplY3RzXG4gICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlLFxuICAgICAgb3IgKmJ5dGVjb2RlKi4gVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBhIGNvZGUgb2JqZWN0IGFuZCBhXG4gICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuIGV4cGxpY2l0XG4gICAgICByZWZlcmVuY2UgdG8gdGhlIGZ1bmN0aW9uXCdzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgd2FzXG4gICAgICBkZWZpbmVkKSwgd2hpbGUgYSBjb2RlIG9iamVjdCBjb250YWlucyBubyBjb250ZXh0OyBhbHNvIHRoZVxuICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCBub3RcbiAgICAgIGluIHRoZSBjb2RlIG9iamVjdCAoYmVjYXVzZSB0aGV5IHJlcHJlc2VudCB2YWx1ZXMgY2FsY3VsYXRlZCBhdFxuICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgaW1tdXRhYmxlXG4gICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byBtdXRhYmxlXG4gICAgICBvYmplY3RzLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiY29fbmFtZSIgZ2l2ZXMgdGhlIGZ1bmN0aW9uIG5hbWU7XG4gICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgKGluY2x1ZGluZ1xuICAgICAgYXJndW1lbnRzIHdpdGggZGVmYXVsdCB2YWx1ZXMpOyAiY29fbmxvY2FscyIgaXMgdGhlIG51bWJlciBvZlxuICAgICAgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmcgYXJndW1lbnRzKTtcbiAgICAgICJjb192YXJuYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiB0aGUgbG9jYWxcbiAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiIGlzIGFcbiAgICAgIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGxvY2FsIHZhcmlhYmxlcyB0aGF0IGFyZVxuICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbiAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWUgdmFyaWFibGVzOyAiY29fY29kZSIgaXMgYSBzdHJpbmdcbiAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAiY29fY29uc3RzIlxuICAgICAgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBsaXRlcmFscyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSBieXRlY29kZTtcbiAgICAgICJjb19maWxlbmFtZSIgaXMgdGhlIGZpbGVuYW1lIGZyb20gd2hpY2ggdGhlIGNvZGUgd2FzIGNvbXBpbGVkO1xuICAgICAgImNvX2ZpcnN0bGluZW5vIiBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuICAgICAgImNvX2xub3RhYiIgaXMgYSBzdHJpbmcgZW5jb2RpbmcgdGhlIG1hcHBpbmcgZnJvbSBieXRlY29kZVxuICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgdGhlXG4gICAgICBpbnRlcnByZXRlcik7ICJjb19zdGFja3NpemUiIGlzIHRoZSByZXF1aXJlZCBzdGFjayBzaXplXG4gICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciBlbmNvZGluZyBhXG4gICAgICBudW1iZXIgb2YgZmxhZ3MgZm9yIHRoZSBpbnRlcnByZXRlci5cblxuICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yICJjb19mbGFncyI6IGJpdCAiMHgwNCJcbiAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgYW5cbiAgICAgIGFyYml0cmFyeSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHM7IGJpdCAiMHgwOCIgaXMgc2V0IGlmXG4gICAgICB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIioqa2V5d29yZHMiIHN5bnRheCB0byBhY2NlcHQgYXJiaXRyYXJ5XG4gICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbiAgICAgIGdlbmVyYXRvci5cblxuICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiIpXG4gICAgICBhbHNvIHVzZSBiaXRzIGluICJjb19mbGFncyIgdG8gaW5kaWNhdGUgd2hldGhlciBhIGNvZGUgb2JqZWN0XG4gICAgICB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXQgIjB4MjAwMCIgaXNcbiAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uIGVuYWJsZWQ7XG4gICAgICBiaXRzICIweDEwIiBhbmQgIjB4MTAwMCIgd2VyZSB1c2VkIGluIGVhcmxpZXIgdmVyc2lvbnMgb2ZcbiAgICAgIFB5dGhvbi5cblxuICAgICAgT3RoZXIgYml0cyBpbiAiY29fZmxhZ3MiIGFyZSByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlLlxuXG4gICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbiAgICAgICJjb19jb25zdHMiIGlzIHRoZSBkb2N1bWVudGF0aW9uIHN0cmluZyBvZiB0aGUgZnVuY3Rpb24sIG9yXG4gICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuXG4gICBGcmFtZSBvYmplY3RzXG4gICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbiAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgc3RhY2tcbiAgICAgIGZyYW1lICh0b3dhcmRzIHRoZSBjYWxsZXIpLCBvciAiTm9uZSIgaWYgdGhpcyBpcyB0aGUgYm90dG9tXG4gICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluIHRoaXNcbiAgICAgIGZyYW1lOyAiZl9sb2NhbHMiIGlzIHRoZSBkaWN0aW9uYXJ5IHVzZWQgdG8gbG9vayB1cCBsb2NhbFxuICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuICAgICAgImZfYnVpbHRpbnMiIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzO1xuICAgICAgImZfcmVzdHJpY3RlZCIgaXMgYSBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgZnVuY3Rpb24gaXNcbiAgICAgIGV4ZWN1dGluZyBpbiByZXN0cmljdGVkIGV4ZWN1dGlvbiBtb2RlOyAiZl9sYXN0aSIgZ2l2ZXMgdGhlXG4gICAgICBwcmVjaXNlIGluc3RydWN0aW9uICh0aGlzIGlzIGFuIGluZGV4IGludG8gdGhlIGJ5dGVjb2RlIHN0cmluZ1xuICAgICAgb2YgdGhlIGNvZGUgb2JqZWN0KS5cblxuICAgICAgU3BlY2lhbCB3cml0YWJsZSBhdHRyaWJ1dGVzOiAiZl90cmFjZSIsIGlmIG5vdCAiTm9uZSIsIGlzIGFcbiAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzIGlzXG4gICAgICB1c2VkIGJ5IHRoZSBkZWJ1Z2dlcik7ICJmX2V4Y190eXBlIiwgImZfZXhjX3ZhbHVlIixcbiAgICAgICJmX2V4Y190cmFjZWJhY2siIHJlcHJlc2VudCB0aGUgbGFzdCBleGNlcHRpb24gcmFpc2VkIGluIHRoZVxuICAgICAgcGFyZW50IGZyYW1lIHByb3ZpZGVkIGFub3RoZXIgZXhjZXB0aW9uIHdhcyBldmVyIHJhaXNlZCBpbiB0aGVcbiAgICAgIGN1cnJlbnQgZnJhbWUgKGluIGFsbCBvdGhlciBjYXNlcyB0aGV5IGFyZSAiTm9uZSIpOyAiZl9saW5lbm8iXG4gICAgICBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlciBvZiB0aGUgZnJhbWUgLS0tIHdyaXRpbmcgdG8gdGhpcyBmcm9tXG4gICAgICB3aXRoaW4gYSB0cmFjZSBmdW5jdGlvbiBqdW1wcyB0byB0aGUgZ2l2ZW4gbGluZSAob25seSBmb3IgdGhlXG4gICAgICBib3R0b20tbW9zdCBmcmFtZSkuICBBIGRlYnVnZ2VyIGNhbiBpbXBsZW1lbnQgYSBKdW1wIGNvbW1hbmRcbiAgICAgIChha2EgU2V0IE5leHQgU3RhdGVtZW50KSBieSB3cml0aW5nIHRvIGZfbGluZW5vLlxuXG4gICBUcmFjZWJhY2sgb2JqZWN0c1xuICAgICAgVHJhY2ViYWNrIG9iamVjdHMgcmVwcmVzZW50IGEgc3RhY2sgdHJhY2Ugb2YgYW4gZXhjZXB0aW9uLiAgQVxuICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gdGhlXG4gICAgICBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHVud2luZHMgdGhlIGV4ZWN1dGlvbiBzdGFjaywgYXRcbiAgICAgIGVhY2ggdW53b3VuZCBsZXZlbCBhIHRyYWNlYmFjayBvYmplY3QgaXMgaW5zZXJ0ZWQgaW4gZnJvbnQgb2ZcbiAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgZW50ZXJlZCxcbiAgICAgIHRoZSBzdGFjayB0cmFjZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbS4gKFNlZSBzZWN0aW9uXG4gICAgICBUaGUgdHJ5IHN0YXRlbWVudC4pIEl0IGlzIGFjY2Vzc2libGUgYXMgInN5cy5leGNfdHJhY2ViYWNrIiwgYW5kXG4gICAgICBhbHNvIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZSB0dXBsZSByZXR1cm5lZCBieVxuICAgICAgInN5cy5leGNfaW5mbygpIi4gIFRoZSBsYXR0ZXIgaXMgdGhlIHByZWZlcnJlZCBpbnRlcmZhY2UsIHNpbmNlXG4gICAgICBpdCB3b3JrcyBjb3JyZWN0bHkgd2hlbiB0aGUgcHJvZ3JhbSBpcyB1c2luZyBtdWx0aXBsZSB0aHJlYWRzLlxuICAgICAgV2hlbiB0aGUgcHJvZ3JhbSBjb250YWlucyBubyBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2VcbiAgICAgIGlzIHdyaXR0ZW4gKG5pY2VseSBmb3JtYXR0ZWQpIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmXG4gICAgICB0aGUgaW50ZXJwcmV0ZXIgaXMgaW50ZXJhY3RpdmUsIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlXG4gICAgICB1c2VyIGFzICJzeXMubGFzdF90cmFjZWJhY2siLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAidGJfbmV4dCIgaXMgdGhlIG5leHQgbGV2ZWwgaW4gdGhlXG4gICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksIG9yXG4gICAgICAiTm9uZSIgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgInRiX2ZyYW1lIiBwb2ludHMgdG8gdGhlXG4gICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSBsaW5lXG4gICAgICBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZDsgInRiX2xhc3RpIiBpbmRpY2F0ZXMgdGhlXG4gICAgICBwcmVjaXNlIGluc3RydWN0aW9uLiAgVGhlIGxpbmUgbnVtYmVyIGFuZCBsYXN0IGluc3RydWN0aW9uIGluXG4gICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4gICAgICBvYmplY3QgaWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCBpbiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIG5vXG4gICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cblxuICAgU2xpY2Ugb2JqZWN0c1xuICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIHdoZW4gKmV4dGVuZGVkIHNsaWNlXG4gICAgICBzeW50YXgqIGlzIHVzZWQuIFRoaXMgaXMgYSBzbGljZSB1c2luZyB0d28gY29sb25zLCBvciBtdWx0aXBsZVxuICAgICAgc2xpY2VzIG9yIGVsbGlwc2VzIHNlcGFyYXRlZCBieSBjb21tYXMsIGUuZy4sICJhW2k6ajpzdGVwXSIsXG4gICAgICAiYVtpOmosIGs6bF0iLCBvciAiYVsuLi4sIGk6al0iLiAgVGhleSBhcmUgYWxzbyBjcmVhdGVkIGJ5IHRoZVxuICAgICAgYnVpbHQtaW4gInNsaWNlKCkiIGZ1bmN0aW9uLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAic3RhcnQiIGlzIHRoZSBsb3dlciBib3VuZDsgInN0b3AiXG4gICAgICBpcyB0aGUgdXBwZXIgYm91bmQ7ICJzdGVwIiBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpcyAiTm9uZSIgaWZcbiAgICAgIG9taXR0ZWQuICBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBoYXZlIGFueSB0eXBlLlxuXG4gICAgICBTbGljZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcblxuICAgICAgc2xpY2UuaW5kaWNlcyhzZWxmLCBsZW5ndGgpXG5cbiAgICAgICAgIFRoaXMgbWV0aG9kIHRha2VzIGEgc2luZ2xlIGludGVnZXIgYXJndW1lbnQgKmxlbmd0aCogYW5kXG4gICAgICAgICBjb21wdXRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXh0ZW5kZWQgc2xpY2UgdGhhdCB0aGUgc2xpY2VcbiAgICAgICAgIG9iamVjdCB3b3VsZCBkZXNjcmliZSBpZiBhcHBsaWVkIHRvIGEgc2VxdWVuY2Ugb2YgKmxlbmd0aCpcbiAgICAgICAgIGl0ZW1zLiAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHlcbiAgICAgICAgIHRoZXNlIGFyZSB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3JcbiAgICAgICAgIHN0cmlkZSBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlc1xuICAgICAgICAgYXJlIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICAgICAgICBOZXcgaW4gdmVyc2lvbiAyLjMuXG5cbiAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0c1xuICAgICAgU3RhdGljIG1ldGhvZCBvYmplY3RzIHByb3ZpZGUgYSB3YXkgb2YgZGVmZWF0aW5nIHRoZVxuICAgICAgdHJhbnNmb3JtYXRpb24gb2YgZnVuY3Rpb24gb2JqZWN0cyB0byBtZXRob2Qgb2JqZWN0cyBkZXNjcmliZWRcbiAgICAgIGFib3ZlLiBBIHN0YXRpYyBtZXRob2Qgb2JqZWN0IGlzIGEgd3JhcHBlciBhcm91bmQgYW55IG90aGVyXG4gICAgICBvYmplY3QsIHVzdWFsbHkgYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdC4gV2hlbiBhIHN0YXRpY1xuICAgICAgbWV0aG9kIG9iamVjdCBpcyByZXRyaWV2ZWQgZnJvbSBhIGNsYXNzIG9yIGEgY2xhc3MgaW5zdGFuY2UsIHRoZVxuICAgICAgb2JqZWN0IGFjdHVhbGx5IHJldHVybmVkIGlzIHRoZSB3cmFwcGVkIG9iamVjdCwgd2hpY2ggaXMgbm90XG4gICAgICBzdWJqZWN0IHRvIGFueSBmdXJ0aGVyIHRyYW5zZm9ybWF0aW9uLiBTdGF0aWMgbWV0aG9kIG9iamVjdHMgYXJlXG4gICAgICBub3QgdGhlbXNlbHZlcyBjYWxsYWJsZSwgYWx0aG91Z2ggdGhlIG9iamVjdHMgdGhleSB3cmFwIHVzdWFsbHlcbiAgICAgIGFyZS4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IHRoZSBidWlsdC1pblxuICAgICAgInN0YXRpY21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cblxuICAgQ2xhc3MgbWV0aG9kIG9iamVjdHNcbiAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhIHdyYXBwZXJcbiAgICAgIGFyb3VuZCBhbm90aGVyIG9iamVjdCB0aGF0IGFsdGVycyB0aGUgd2F5IGluIHdoaWNoIHRoYXQgb2JqZWN0XG4gICAgICBpcyByZXRyaWV2ZWQgZnJvbSBjbGFzc2VzIGFuZCBjbGFzcyBpbnN0YW5jZXMuIFRoZSBiZWhhdmlvdXIgb2ZcbiAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuICAgICAgdW5kZXIgIlVzZXItZGVmaW5lZCBtZXRob2RzIi4gQ2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGNyZWF0ZWRcbiAgICAgIGJ5IHRoZSBidWlsdC1pbiAiY2xhc3NtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nLAotICd0eXBlc2Z1bmN0aW9ucyc6IHUnXG5GdW5jdGlvbnNcbioqKioqKioqKlxuXG5GdW5jdGlvbiBvYmplY3RzIGFyZSBjcmVhdGVkIGJ5IGZ1bmN0aW9uIGRlZmluaXRpb25zLiAgVGhlIG9ubHlcbm9wZXJhdGlvbiBvbiBhIGZ1bmN0aW9uIG9iamVjdCBpcyB0byBjYWxsIGl0OiAiZnVuYyhhcmd1bWVudC1saXN0KSIuXG5cblRoZXJlIGFyZSByZWFsbHkgdHdvIGZsYXZvcnMgb2YgZnVuY3Rpb24gb2JqZWN0czogYnVpbHQtaW4gZnVuY3Rpb25zXG5hbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gIEJvdGggc3VwcG9ydCB0aGUgc2FtZSBvcGVyYXRpb24gKHRvIGNhbGxcbnRoZSBmdW5jdGlvbiksIGJ1dCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZGlmZmVyZW50LCBoZW5jZSB0aGVcbmRpZmZlcmVudCBvYmplY3QgdHlwZXMuXG5cblNlZSBGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ3R5cGVzbWFwcGluZyc6IHUnXG5NYXBwaW5nIFR5cGVzIC0tLSAiZGljdCJcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy5cbk1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmRcbm1hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0XG5pbiAibGlzdCIsICJzZXQiLCBhbmQgInR1cGxlIiBjbGFzc2VzLCBhbmQgdGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlLilcblxuQSBkaWN0aW9uYXJ5XCdzIGtleXMgYXJlICphbG1vc3QqIGFyYml0cmFyeSB2YWx1ZXMuICBWYWx1ZXMgdGhhdCBhcmVcbm5vdCAqaGFzaGFibGUqLCB0aGF0IGlzLCB2YWx1ZXMgY29udGFpbmluZyBsaXN0cywgZGljdGlvbmFyaWVzIG9yXG5vdGhlciBtdXRhYmxlIHR5cGVzICh0aGF0IGFyZSBjb21wYXJlZCBieSB2YWx1ZSByYXRoZXIgdGhhbiBieSBvYmplY3RcbmlkZW50aXR5KSBtYXkgbm90IGJlIHVzZWQgYXMga2V5cy4gIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5XG50aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljIGNvbXBhcmlzb246IGlmIHR3byBudW1iZXJzIGNvbXBhcmUgZXF1YWxcbihzdWNoIGFzICIxIiBhbmQgIjEuMCIpIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXhcbnRoZSBzYW1lIGRpY3Rpb25hcnkgZW50cnkuICAoTm90ZSBob3dldmVyLCB0aGF0IHNpbmNlIGNvbXB1dGVycyBzdG9yZVxuZmxvYXRpbmctcG9pbnQgbnVtYmVycyBhcyBhcHByb3hpbWF0aW9ucyBpdCBpcyB1c3VhbGx5IHVud2lzZSB0byB1c2VcbnRoZW0gYXMgZGljdGlvbmFyeSBrZXlzLilcblxuRGljdGlvbmFyaWVzIGNhbiBiZSBjcmVhdGVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiAia2V5OlxudmFsdWUiIHBhaXJzIHdpdGhpbiBicmFjZXMsIGZvciBleGFtcGxlOiAie1wnamFja1wnOiA0MDk4LCBcJ3Nqb2VyZFwnOlxuNDEyN30iIG9yICJ7NDA5ODogXCdqYWNrXCcsIDQxMjc6IFwnc2pvZXJkXCd9Iiwgb3IgYnkgdGhlICJkaWN0IlxuY29uc3RydWN0b3IuXG5cbmNsYXNzIGRpY3QoKiprd2FyZylcbmNsYXNzIGRpY3QobWFwcGluZywgKiprd2FyZylcbmNsYXNzIGRpY3QoaXRlcmFibGUsICoqa3dhcmcpXG5cbiAgIFJldHVybiBhIG5ldyBkaWN0aW9uYXJ5IGluaXRpYWxpemVkIGZyb20gYW4gb3B0aW9uYWwgcG9zaXRpb25hbFxuICAgYXJndW1lbnQgYW5kIGEgcG9zc2libHkgZW1wdHkgc2V0IG9mIGtleXdvcmQgYXJndW1lbnRzLlxuXG4gICBJZiBubyBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuLCBhbiBlbXB0eSBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQuXG4gICBJZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4gYW5kIGl0IGlzIGEgbWFwcGluZyBvYmplY3QsIGFcbiAgIGRpY3Rpb25hcnkgaXMgY3JlYXRlZCB3aXRoIHRoZSBzYW1lIGtleS12YWx1ZSBwYWlycyBhcyB0aGUgbWFwcGluZ1xuICAgb2JqZWN0LiAgT3RoZXJ3aXNlLCB0aGUgcG9zaXRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGFuICppdGVyYWJsZSpcbiAgIG9iamVjdC4gIEVhY2ggaXRlbSBpbiB0aGUgaXRlcmFibGUgbXVzdCBpdHNlbGYgYmUgYW4gaXRlcmFibGUgd2l0aFxuICAgZXhhY3RseSB0d28gb2JqZWN0cy4gIFRoZSBmaXJzdCBvYmplY3Qgb2YgZWFjaCBpdGVtIGJlY29tZXMgYSBrZXlcbiAgIGluIHRoZSBuZXcgZGljdGlvbmFyeSwgYW5kIHRoZSBzZWNvbmQgb2JqZWN0IHRoZSBjb3JyZXNwb25kaW5nXG4gICB2YWx1ZS4gIElmIGEga2V5IG9jY3VycyBtb3JlIHRoYW4gb25jZSwgdGhlIGxhc3QgdmFsdWUgZm9yIHRoYXQga2V5XG4gICBiZWNvbWVzIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBuZXcgZGljdGlvbmFyeS5cblxuICAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIGdpdmVuLCB0aGUga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZWlyXG4gICB2YWx1ZXMgYXJlIGFkZGVkIHRvIHRoZSBkaWN0aW9uYXJ5IGNyZWF0ZWQgZnJvbSB0aGUgcG9zaXRpb25hbFxuICAgYXJndW1lbnQuICBJZiBhIGtleSBiZWluZyBhZGRlZCBpcyBhbHJlYWR5IHByZXNlbnQsIHRoZSB2YWx1ZSBmcm9tXG4gICB0aGUga2V5d29yZCBhcmd1bWVudCByZXBsYWNlcyB0aGUgdmFsdWUgZnJvbSB0aGUgcG9zaXRpb25hbFxuICAgYXJndW1lbnQuXG5cbiAgIFRvIGlsbHVzdHJhdGUsIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgYWxsIHJldHVybiBhIGRpY3Rpb25hcnkgZXF1YWxcbiAgIHRvICJ7Im9uZSI6IDEsICJ0d28iOiAyLCAidGhyZWUiOiAzfSI6XG5cbiAgICAgID4+PiBhID0gZGljdChvbmU9MSwgdHdvPTIsIHRocmVlPTMpXG4gICAgICA+Pj4gYiA9IHtcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyLCBcJ3RocmVlXCc6IDN9XG4gICAgICA+Pj4gYyA9IGRpY3QoemlwKFtcJ29uZVwnLCBcJ3R3b1wnLCBcJ3RocmVlXCddLCBbMSwgMiwgM10pKVxuICAgICAgPj4+IGQgPSBkaWN0KFsoXCd0d29cJywgMiksIChcJ29uZVwnLCAxKSwgKFwndGhyZWVcJywgMyldKVxuICAgICAgPj4+IGUgPSBkaWN0KHtcJ3RocmVlXCc6IDMsIFwnb25lXCc6IDEsIFwndHdvXCc6IDJ9KVxuICAgICAgPj4+IGEgPT0gYiA9PSBjID09IGQgPT0gZVxuICAgICAgVHJ1ZVxuXG4gICBQcm92aWRpbmcga2V5d29yZCBhcmd1bWVudHMgYXMgaW4gdGhlIGZpcnN0IGV4YW1wbGUgb25seSB3b3JrcyBmb3JcbiAgIGtleXMgdGhhdCBhcmUgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXJzLiAgT3RoZXJ3aXNlLCBhbnkgdmFsaWQga2V5c1xuICAgY2FuIGJlIHVzZWQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuMi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogU3VwcG9ydCBmb3IgYnVpbGRpbmcgYSBkaWN0aW9uYXJ5IGZyb21cbiAgIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG4gICBUaGVzZSBhcmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBkaWN0aW9uYXJpZXMgc3VwcG9ydCAoYW5kIHRoZXJlZm9yZSxcbiAgIGN1c3RvbSBtYXBwaW5nIHR5cGVzIHNob3VsZCBzdXBwb3J0IHRvbyk6XG5cbiAgIGxlbihkKVxuXG4gICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqZCouXG5cbiAgIGRba2V5XVxuXG4gICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgKmQqIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEgIktleUVycm9yIiBpZlxuICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG5cbiAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kICJfX21pc3NpbmdfXygpIiBhbmQgKmtleSpcbiAgICAgIGlzIG5vdCBwcmVzZW50LCB0aGUgImRba2V5XSIgb3BlcmF0aW9uIGNhbGxzIHRoYXQgbWV0aG9kIHdpdGhcbiAgICAgIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgImRba2V5XSIgb3BlcmF0aW9uIHRoZW4gcmV0dXJuc1xuICAgICAgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbiAgICAgICJfX21pc3NpbmdfXyhrZXkpIiBjYWxsLiBObyBvdGhlciBvcGVyYXRpb25zIG9yIG1ldGhvZHMgaW52b2tlXG4gICAgICAiX19taXNzaW5nX18oKSIuIElmICJfX21pc3NpbmdfXygpIiBpcyBub3QgZGVmaW5lZCwgIktleUVycm9yIlxuICAgICAgaXMgcmFpc2VkLiAiX19taXNzaW5nX18oKSIgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90IGJlIGFuXG4gICAgICBpbnN0YW5jZSB2YXJpYWJsZTpcblxuICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4gICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMFxuICAgICAgICAgPj4+IGNbXCdyZWRcJ10gKz0gMVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDFcblxuICAgICAgVGhlIGV4YW1wbGUgYWJvdmUgc2hvd3MgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgICJjb2xsZWN0aW9ucy5Db3VudGVyIi4gIEEgZGlmZmVyZW50ICJfX21pc3NpbmdfXyIgbWV0aG9kIGlzIHVzZWRcbiAgICAgIGJ5ICJjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdCIuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDIuNTogUmVjb2duaXRpb24gb2YgX19taXNzaW5nX18gbWV0aG9kcyBvZiBkaWN0XG4gICAgICBzdWJjbGFzc2VzLlxuXG4gICBkW2tleV0gPSB2YWx1ZVxuXG4gICAgICBTZXQgImRba2V5XSIgdG8gKnZhbHVlKi5cblxuICAgZGVsIGRba2V5XVxuXG4gICAgICBSZW1vdmUgImRba2V5XSIgZnJvbSAqZCouICBSYWlzZXMgYSAiS2V5RXJyb3IiIGlmICprZXkqIGlzIG5vdFxuICAgICAgaW4gdGhlIG1hcC5cblxuICAga2V5IGluIGRcblxuICAgICAgUmV0dXJuICJUcnVlIiBpZiAqZCogaGFzIGEga2V5ICprZXkqLCBlbHNlICJGYWxzZSIuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDIuMi5cblxuICAga2V5IG5vdCBpbiBkXG5cbiAgICAgIEVxdWl2YWxlbnQgdG8gIm5vdCBrZXkgaW4gZCIuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDIuMi5cblxuICAgaXRlcihkKVxuXG4gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgZGljdGlvbmFyeS4gIFRoaXMgaXMgYVxuICAgICAgc2hvcnRjdXQgZm9yICJpdGVya2V5cygpIi5cblxuICAgY2xlYXIoKVxuXG4gICAgICBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGNvcHkoKVxuXG4gICAgICBSZXR1cm4gYSBzaGFsbG93IGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkuXG5cbiAgIGZyb21rZXlzKHNlcVssIHZhbHVlXSlcblxuICAgICAgQ3JlYXRlIGEgbmV3IGRpY3Rpb25hcnkgd2l0aCBrZXlzIGZyb20gKnNlcSogYW5kIHZhbHVlcyBzZXQgdG9cbiAgICAgICp2YWx1ZSouXG5cbiAgICAgICJmcm9ta2V5cygpIiBpcyBhIGNsYXNzIG1ldGhvZCB0aGF0IHJldHVybnMgYSBuZXcgZGljdGlvbmFyeS5cbiAgICAgICp2YWx1ZSogZGVmYXVsdHMgdG8gIk5vbmUiLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAyLjMuXG5cbiAgIGdldChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIGVsc2VcbiAgICAgICpkZWZhdWx0Ki4gSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gIk5vbmUiLCBzb1xuICAgICAgdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSAiS2V5RXJyb3IiLlxuXG4gICBoYXNfa2V5KGtleSlcblxuICAgICAgVGVzdCBmb3IgdGhlIHByZXNlbmNlIG9mICprZXkqIGluIHRoZSBkaWN0aW9uYXJ5LiAgImhhc19rZXkoKSJcbiAgICAgIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgImtleSBpbiBkIi5cblxuICAgaXRlbXMoKVxuXG4gICAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGxpc3Qgb2YgIihrZXksIHZhbHVlKSIgcGFpcnMuXG5cbiAgICAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogS2V5cyBhbmQgdmFsdWVzIGFyZSBsaXN0ZWQgaW5cbiAgICAgIGFuIGFyYml0cmFyeSBvcmRlciB3aGljaCBpcyBub24tcmFuZG9tLCB2YXJpZXMgYWNyb3NzIFB5dGhvblxuICAgICAgaW1wbGVtZW50YXRpb25zLCBhbmQgZGVwZW5kcyBvbiB0aGUgZGljdGlvbmFyeVwncyBoaXN0b3J5IG9mXG4gICAgICBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMuXG5cbiAgICAgIElmICJpdGVtcygpIiwgImtleXMoKSIsICJ2YWx1ZXMoKSIsICJpdGVyaXRlbXMoKSIsICJpdGVya2V5cygpIixcbiAgICAgIGFuZCAiaXRlcnZhbHVlcygpIiBhcmUgY2FsbGVkIHdpdGggbm8gaW50ZXJ2ZW5pbmcgbW9kaWZpY2F0aW9uc1xuICAgICAgdG8gdGhlIGRpY3Rpb25hcnksIHRoZSBsaXN0cyB3aWxsIGRpcmVjdGx5IGNvcnJlc3BvbmQuICBUaGlzXG4gICAgICBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mICIodmFsdWUsIGtleSkiIHBhaXJzIHVzaW5nICJ6aXAoKSI6XG4gICAgICAicGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpIi4gIFRoZSBzYW1lIHJlbGF0aW9uc2hpcFxuICAgICAgaG9sZHMgZm9yIHRoZSAiaXRlcmtleXMoKSIgYW5kICJpdGVydmFsdWVzKCkiIG1ldGhvZHM6ICJwYWlycyA9XG4gICAgICB6aXAoZC5pdGVydmFsdWVzKCksIGQuaXRlcmtleXMoKSkiIHByb3ZpZGVzIHRoZSBzYW1lIHZhbHVlIGZvclxuICAgICAgInBhaXJzIi4gQW5vdGhlciB3YXkgdG8gY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKVxuICAgICAgZm9yIChrLCB2KSBpbiBkLml0ZXJpdGVtcygpXSIuXG5cbiAgIGl0ZXJpdGVtcygpXG5cbiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBkaWN0aW9uYXJ5XCdzICIoa2V5LCB2YWx1ZSkiIHBhaXJzLlxuICAgICAgU2VlIHRoZSBub3RlIGZvciAiZGljdC5pdGVtcygpIi5cblxuICAgICAgVXNpbmcgIml0ZXJpdGVtcygpIiB3aGlsZSBhZGRpbmcgb3IgZGVsZXRpbmcgZW50cmllcyBpbiB0aGVcbiAgICAgIGRpY3Rpb25hcnkgbWF5IHJhaXNlIGEgIlJ1bnRpbWVFcnJvciIgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXJcbiAgICAgIGFsbCBlbnRyaWVzLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAyLjIuXG5cbiAgIGl0ZXJrZXlzKClcblxuICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGRpY3Rpb25hcnlcJ3Mga2V5cy4gIFNlZSB0aGUgbm90ZSBmb3JcbiAgICAgICJkaWN0Lml0ZW1zKCkiLlxuXG4gICAgICBVc2luZyAiaXRlcmtleXMoKSIgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlXG4gICAgICBkaWN0aW9uYXJ5IG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyXG4gICAgICBhbGwgZW50cmllcy5cblxuICAgICAgTmV3IGluIHZlcnNpb24gMi4yLlxuXG4gICBpdGVydmFsdWVzKClcblxuICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGRpY3Rpb25hcnlcJ3MgdmFsdWVzLiAgU2VlIHRoZSBub3RlXG4gICAgICBmb3IgImRpY3QuaXRlbXMoKSIuXG5cbiAgICAgIFVzaW5nICJpdGVydmFsdWVzKCkiIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZVxuICAgICAgZGljdGlvbmFyeSBtYXkgcmFpc2UgYSAiUnVudGltZUVycm9yIiBvciBmYWlsIHRvIGl0ZXJhdGUgb3ZlclxuICAgICAgYWxsIGVudHJpZXMuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDIuMi5cblxuICAga2V5cygpXG5cbiAgICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgbGlzdCBvZiBrZXlzLiAgU2VlIHRoZSBub3RlXG4gICAgICBmb3IgImRpY3QuaXRlbXMoKSIuXG5cbiAgIHBvcChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJlbW92ZSBpdCBhbmQgcmV0dXJuIGl0cyB2YWx1ZSxcbiAgICAgIGVsc2UgcmV0dXJuICpkZWZhdWx0Ki4gIElmICpkZWZhdWx0KiBpcyBub3QgZ2l2ZW4gYW5kICprZXkqIGlzXG4gICAgICBub3QgaW4gdGhlIGRpY3Rpb25hcnksIGEgIktleUVycm9yIiBpcyByYWlzZWQuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDIuMy5cblxuICAgcG9waXRlbSgpXG5cbiAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSAiKGtleSwgdmFsdWUpIiBwYWlyIGZyb20gdGhlXG4gICAgICBkaWN0aW9uYXJ5LlxuXG4gICAgICAicG9waXRlbSgpIiBpcyB1c2VmdWwgdG8gZGVzdHJ1Y3RpdmVseSBpdGVyYXRlIG92ZXIgYVxuICAgICAgZGljdGlvbmFyeSwgYXMgb2Z0ZW4gdXNlZCBpbiBzZXQgYWxnb3JpdGhtcy4gIElmIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyBlbXB0eSwgY2FsbGluZyAicG9waXRlbSgpIiByYWlzZXMgYSAiS2V5RXJyb3IiLlxuXG4gICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmIG5vdCwgaW5zZXJ0XG4gICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gKmRlZmF1bHQqLiAgKmRlZmF1bHQqXG4gICAgICBkZWZhdWx0cyB0byAiTm9uZSIuXG5cbiAgIHVwZGF0ZShbb3RoZXJdKVxuXG4gICAgICBVcGRhdGUgdGhlIGRpY3Rpb25hcnkgd2l0aCB0aGUga2V5L3ZhbHVlIHBhaXJzIGZyb20gKm90aGVyKixcbiAgICAgIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGtleXMuICBSZXR1cm4gIk5vbmUiLlxuXG4gICAgICAidXBkYXRlKCkiIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3Qgb3IgYW5cbiAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyIGl0ZXJhYmxlcyBvZlxuICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiAiZC51cGRhdGUocmVkPTEsXG4gICAgICBibHVlPTIpIi5cblxuICAgICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogQWxsb3dlZCB0aGUgYXJndW1lbnQgdG8gYmUgYW4gaXRlcmFibGVcbiAgICAgIG9mIGtleS92YWx1ZSBwYWlycyBhbmQgYWxsb3dlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuICAgdmFsdWVzKClcblxuICAgICAgUmV0dXJuIGEgY29weSBvZiB0aGUgZGljdGlvbmFyeVwncyBsaXN0IG9mIHZhbHVlcy4gIFNlZSB0aGUgbm90ZVxuICAgICAgZm9yICJkaWN0Lml0ZW1zKCkiLlxuXG4gICB2aWV3aXRlbXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksIHZhbHVlKSJcbiAgICAgIHBhaXJzKS4gIFNlZSBiZWxvdyBmb3IgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDIuNy5cblxuICAgdmlld2tleXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBrZXlzLiAgU2VlIGJlbG93IGZvclxuICAgICAgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG5cbiAgICAgIE5ldyBpbiB2ZXJzaW9uIDIuNy5cblxuICAgdmlld3ZhbHVlcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIHZhbHVlcy4gIFNlZSBiZWxvdyBmb3JcbiAgICAgIGRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzLlxuXG4gICAgICBOZXcgaW4gdmVyc2lvbiAyLjcuXG5cbiAgIERpY3Rpb25hcmllcyBjb21wYXJlIGVxdWFsIGlmIGFuZCBvbmx5IGlmIHRoZXkgaGF2ZSB0aGUgc2FtZSAiKGtleSxcbiAgIHZhbHVlKSIgcGFpcnMuXG5cblxuRGljdGlvbmFyeSB2aWV3IG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvYmplY3RzIHJldHVybmVkIGJ5ICJkaWN0LnZpZXdrZXlzKCkiLCAiZGljdC52aWV3dmFsdWVzKCkiIGFuZFxuImRpY3Qudmlld2l0ZW1zKCkiIGFyZSAqdmlldyBvYmplY3RzKi4gIFRoZXkgcHJvdmlkZSBhIGR5bmFtaWMgdmlldyBvblxudGhlIGRpY3Rpb25hcnlcJ3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSBkaWN0aW9uYXJ5XG5jaGFuZ2VzLCB0aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuXG5EaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyIHJlc3BlY3RpdmUgZGF0YSxcbmFuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG5cbmxlbihkaWN0dmlldylcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cblxuaXRlcihkaWN0dmlldylcblxuICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAocmVwcmVzZW50ZWQgYXNcbiAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG5cbiAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgd2hpY2ggaXNcbiAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kIGRlcGVuZHMgb25cbiAgIHRoZSBkaWN0aW9uYXJ5XCdzIGhpc3Rvcnkgb2YgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLiBJZiBrZXlzLFxuICAgdmFsdWVzIGFuZCBpdGVtcyB2aWV3cyBhcmUgaXRlcmF0ZWQgb3ZlciB3aXRoIG5vIGludGVydmVuaW5nXG4gICBtb2RpZmljYXRpb25zIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgb3JkZXIgb2YgaXRlbXMgd2lsbCBkaXJlY3RseVxuICAgY29ycmVzcG9uZC4gIFRoaXMgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiBwYWlycyB1c2luZ1xuICAgInppcCgpIjogInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBBbm90aGVyIHdheSB0b1xuICAgY3JlYXRlIHRoZSBzYW1lIGxpc3QgaXMgInBhaXJzID0gWyh2LCBrKSBmb3IgKGssIHYpIGluIGQuaXRlbXMoKV0iLlxuXG4gICBJdGVyYXRpbmcgdmlld3Mgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gdGhlIGRpY3Rpb25hcnlcbiAgIG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gaXRlcmF0ZSBvdmVyIGFsbCBlbnRyaWVzLlxuXG54IGluIGRpY3R2aWV3XG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgKngqIGlzIGluIHRoZSB1bmRlcmx5aW5nIGRpY3Rpb25hcnlcJ3Mga2V5cywgdmFsdWVzXG4gICBvciBpdGVtcyAoaW4gdGhlIGxhdHRlciBjYXNlLCAqeCogc2hvdWxkIGJlIGEgIihrZXksIHZhbHVlKSJcbiAgIHR1cGxlKS5cblxuS2V5cyB2aWV3cyBhcmUgc2V0LWxpa2Ugc2luY2UgdGhlaXIgZW50cmllcyBhcmUgdW5pcXVlIGFuZCBoYXNoYWJsZS5cbklmIGFsbCB2YWx1ZXMgYXJlIGhhc2hhYmxlLCBzbyB0aGF0IChrZXksIHZhbHVlKSBwYWlycyBhcmUgdW5pcXVlIGFuZFxuaGFzaGFibGUsIHRoZW4gdGhlIGl0ZW1zIHZpZXcgaXMgYWxzbyBzZXQtbGlrZS4gIChWYWx1ZXMgdmlld3MgYXJlIG5vdFxudHJlYXRlZCBhcyBzZXQtbGlrZSBzaW5jZSB0aGUgZW50cmllcyBhcmUgZ2VuZXJhbGx5IG5vdCB1bmlxdWUuKSAgVGhlblxudGhlc2Ugc2V0IG9wZXJhdGlvbnMgYXJlIGF2YWlsYWJsZSAoIm90aGVyIiByZWZlcnMgZWl0aGVyIHRvIGFub3RoZXJcbnZpZXcgb3IgYSBzZXQpOlxuXG5kaWN0dmlldyAmIG90aGVyXG5cbiAgIFJldHVybiB0aGUgaW50ZXJzZWN0aW9uIG9mIHRoZSBkaWN0dmlldyBhbmQgdGhlIG90aGVyIG9iamVjdCBhcyBhXG4gICBuZXcgc2V0LlxuXG5kaWN0dmlldyB8IG90aGVyXG5cbiAgIFJldHVybiB0aGUgdW5pb24gb2YgdGhlIGRpY3R2aWV3IGFuZCB0aGUgb3RoZXIgb2JqZWN0IGFzIGEgbmV3IHNldC5cblxuZGljdHZpZXcgLSBvdGhlclxuXG4gICBSZXR1cm4gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgZGljdHZpZXcgYW5kIHRoZSBvdGhlciBvYmplY3RcbiAgIChhbGwgZWxlbWVudHMgaW4gKmRpY3R2aWV3KiB0aGF0IGFyZW5cJ3QgaW4gKm90aGVyKikgYXMgYSBuZXcgc2V0LlxuXG5kaWN0dmlldyBeIG90aGVyXG5cbiAgIFJldHVybiB0aGUgc3ltbWV0cmljIGRpZmZlcmVuY2UgKGFsbCBlbGVtZW50cyBlaXRoZXIgaW4gKmRpY3R2aWV3KlxuICAgb3IgKm90aGVyKiwgYnV0IG5vdCBpbiBib3RoKSBvZiB0aGUgZGljdHZpZXcgYW5kIHRoZSBvdGhlciBvYmplY3RcbiAgIGFzIGEgbmV3IHNldC5cblxuQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG5cbiAgID4+PiBkaXNoZXMgPSB7XCdlZ2dzXCc6IDIsIFwnc2F1c2FnZVwnOiAxLCBcJ2JhY29uXCc6IDEsIFwnc3BhbVwnOiA1MDB9XG4gICA+Pj4ga2V5cyA9IGRpc2hlcy52aWV3a2V5cygpXG4gICA+Pj4gdmFsdWVzID0gZGlzaGVzLnZpZXd2YWx1ZXMoKVxuXG4gICA+Pj4gIyBpdGVyYXRpb25cbiAgID4+PiBuID0gMFxuICAgPj4+IGZvciB2YWwgaW4gdmFsdWVzOlxuICAgLi4uICAgICBuICs9IHZhbFxuICAgPj4+IHByaW50KG4pXG4gICA1MDRcblxuICAgPj4+ICMga2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIHRoZSBzYW1lIG9yZGVyXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2F1c2FnZVwnLCBcJ3NwYW1cJ11cbiAgID4+PiBsaXN0KHZhbHVlcylcbiAgIFsyLCAxLCAxLCA1MDBdXG5cbiAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbiAgID4+PiBkZWwgZGlzaGVzW1wnZWdnc1wnXVxuICAgPj4+IGRlbCBkaXNoZXNbXCdzYXVzYWdlXCddXG4gICA+Pj4gbGlzdChrZXlzKVxuICAgW1wnc3BhbVwnLCBcJ2JhY29uXCddXG5cbiAgID4+PiAjIHNldCBvcGVyYXRpb25zXG4gICA+Pj4ga2V5cyAmIHtcJ2VnZ3NcJywgXCdiYWNvblwnLCBcJ3NhbGFkXCd9XG4gICB7XCdiYWNvblwnfVxuJywKLSAndHlwZXNtZXRob2RzJzogdSdcbk1ldGhvZHNcbioqKioqKipcblxuTWV0aG9kcyBhcmUgZnVuY3Rpb25zIHRoYXQgYXJlIGNhbGxlZCB1c2luZyB0aGUgYXR0cmlidXRlIG5vdGF0aW9uLlxuVGhlcmUgYXJlIHR3byBmbGF2b3JzOiBidWlsdC1pbiBtZXRob2RzIChzdWNoIGFzICJhcHBlbmQoKSIgb24gbGlzdHMpXG5hbmQgY2xhc3MgaW5zdGFuY2UgbWV0aG9kcy4gIEJ1aWx0LWluIG1ldGhvZHMgYXJlIGRlc2NyaWJlZCB3aXRoIHRoZVxudHlwZXMgdGhhdCBzdXBwb3J0IHRoZW0uXG5cblRoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIHR3byBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzIHRvIGNsYXNzXG5pbnN0YW5jZSBtZXRob2RzOiAibS5pbV9zZWxmIiBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRob2Rcbm9wZXJhdGVzLCBhbmQgIm0uaW1fZnVuYyIgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGluZyB0aGUgbWV0aG9kLlxuQ2FsbGluZyAibShhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIiBpcyBjb21wbGV0ZWx5IGVxdWl2YWxlbnQgdG9cbmNhbGxpbmcgIm0uaW1fZnVuYyhtLmltX3NlbGYsIGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiLlxuXG5DbGFzcyBpbnN0YW5jZSBtZXRob2RzIGFyZSBlaXRoZXIgKmJvdW5kKiBvciAqdW5ib3VuZCosIHJlZmVycmluZyB0b1xud2hldGhlciB0aGUgbWV0aG9kIHdhcyBhY2Nlc3NlZCB0aHJvdWdoIGFuIGluc3RhbmNlIG9yIGEgY2xhc3MsXG5yZXNwZWN0aXZlbHkuICBXaGVuIGEgbWV0aG9kIGlzIHVuYm91bmQsIGl0cyAiaW1fc2VsZiIgYXR0cmlidXRlIHdpbGxcbmJlICJOb25lIiBhbmQgaWYgY2FsbGVkLCBhbiBleHBsaWNpdCAic2VsZiIgb2JqZWN0IG11c3QgYmUgcGFzc2VkIGFzXG50aGUgZmlyc3QgYXJndW1lbnQuICBJbiB0aGlzIGNhc2UsICJzZWxmIiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIHRoZVxudW5ib3VuZCBtZXRob2RcJ3MgY2xhc3MgKG9yIGEgc3ViY2xhc3Mgb2YgdGhhdCBjbGFzcyksIG90aGVyd2lzZSBhXG4iVHlwZUVycm9yIiBpcyByYWlzZWQuXG5cbkxpa2UgZnVuY3Rpb24gb2JqZWN0cywgbWV0aG9kcyBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyBhcmJpdHJhcnlcbmF0dHJpYnV0ZXMuIEhvd2V2ZXIsIHNpbmNlIG1ldGhvZCBhdHRyaWJ1dGVzIGFyZSBhY3R1YWxseSBzdG9yZWQgb25cbnRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdCAoIm1ldGguaW1fZnVuYyIpLCBzZXR0aW5nIG1ldGhvZFxuYXR0cmlidXRlcyBvbiBlaXRoZXIgYm91bmQgb3IgdW5ib3VuZCBtZXRob2RzIGlzIGRpc2FsbG93ZWQuXG5BdHRlbXB0aW5nIHRvIHNldCBhbiBhdHRyaWJ1dGUgb24gYSBtZXRob2QgcmVzdWx0cyBpbiBhblxuIkF0dHJpYnV0ZUVycm9yIiBiZWluZyByYWlzZWQuICBJbiBvcmRlciB0byBzZXQgYSBtZXRob2QgYXR0cmlidXRlLFxueW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0OlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKTpcbiAgIC4uLiAgICAgICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLm1ldGhvZC53aG9hbWkgPSBcJ215IG5hbWUgaXMgbWV0aG9kXCcgICMgY2FuXCd0IHNldCBvbiB0aGUgbWV0aG9kXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBBdHRyaWJ1dGVFcnJvcjogXCdpbnN0YW5jZW1ldGhvZFwnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlIFwnd2hvYW1pXCdcbiAgID4+PiBjLm1ldGhvZC5pbV9mdW5jLndob2FtaSA9IFwnbXkgbmFtZSBpcyBtZXRob2RcJ1xuICAgPj4+IGMubWV0aG9kLndob2FtaVxuICAgXCdteSBuYW1lIGlzIG1ldGhvZFwnXG5cblNlZSBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4nLAotICd0eXBlc21vZHVsZXMnOiB1J1xuTW9kdWxlc1xuKioqKioqKlxuXG5UaGUgb25seSBzcGVjaWFsIG9wZXJhdGlvbiBvbiBhIG1vZHVsZSBpcyBhdHRyaWJ1dGUgYWNjZXNzOiAibS5uYW1lIixcbndoZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkIGluICptKlwnc1xuc3ltYm9sIHRhYmxlLiBNb2R1bGUgYXR0cmlidXRlcyBjYW4gYmUgYXNzaWduZWQgdG8uICAoTm90ZSB0aGF0IHRoZVxuImltcG9ydCIgc3RhdGVtZW50IGlzIG5vdCwgc3RyaWN0bHkgc3BlYWtpbmcsIGFuIG9wZXJhdGlvbiBvbiBhIG1vZHVsZVxub2JqZWN0OyAiaW1wb3J0IGZvbyIgZG9lcyBub3QgcmVxdWlyZSBhIG1vZHVsZSBvYmplY3QgbmFtZWQgKmZvbyogdG9cbmV4aXN0LCByYXRoZXIgaXQgcmVxdWlyZXMgYW4gKGV4dGVybmFsKSAqZGVmaW5pdGlvbiogZm9yIGEgbW9kdWxlXG5uYW1lZCAqZm9vKiBzb21ld2hlcmUuKVxuXG5BIHNwZWNpYWwgYXR0cmlidXRlIG9mIGV2ZXJ5IG1vZHVsZSBpcyAiX19kaWN0X18iLiBUaGlzIGlzIHRoZVxuZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBtb2R1bGVcJ3Mgc3ltYm9sIHRhYmxlLiBNb2RpZnlpbmcgdGhpc1xuZGljdGlvbmFyeSB3aWxsIGFjdHVhbGx5IGNoYW5nZSB0aGUgbW9kdWxlXCdzIHN5bWJvbCB0YWJsZSwgYnV0IGRpcmVjdFxuYXNzaWdubWVudCB0byB0aGUgIl9fZGljdF9fIiBhdHRyaWJ1dGUgaXMgbm90IHBvc3NpYmxlICh5b3UgY2FuIHdyaXRlXG4ibS5fX2RpY3RfX1tcJ2FcJ10gPSAxIiwgd2hpY2ggZGVmaW5lcyAibS5hIiB0byBiZSAiMSIsIGJ1dCB5b3UgY2FuXCd0XG53cml0ZSAibS5fX2RpY3RfXyA9IHt9IikuICBNb2RpZnlpbmcgIl9fZGljdF9fIiBkaXJlY3RseSBpcyBub3RcbnJlY29tbWVuZGVkLlxuXG5Nb2R1bGVzIGJ1aWx0IGludG8gdGhlIGludGVycHJldGVyIGFyZSB3cml0dGVuIGxpa2UgdGhpczogIjxtb2R1bGVcblwnc3lzXCcgKGJ1aWx0LWluKT4iLiAgSWYgbG9hZGVkIGZyb20gYSBmaWxlLCB0aGV5IGFyZSB3cml0dGVuIGFzXG4iPG1vZHVsZSBcJ29zXCcgZnJvbSBcJy91c3IvbG9jYWwvbGliL3B5dGhvblguWS9vcy5weWNcJz4iLlxuJywKLSAndHlwZXNzZXEnOiB1J1xuU2VxdWVuY2UgVHlwZXMgLS0tICJzdHIiLCAidW5pY29kZSIsICJsaXN0IiwgInR1cGxlIiwgImJ5dGVhcnJheSIsICJidWZmZXIiLCAieHJhbmdlIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGVyZSBhcmUgc2V2ZW4gc2VxdWVuY2UgdHlwZXM6IHN0cmluZ3MsIFVuaWNvZGUgc3RyaW5ncywgbGlzdHMsXG50dXBsZXMsIGJ5dGVhcnJheXMsIGJ1ZmZlcnMsIGFuZCB4cmFuZ2Ugb2JqZWN0cy5cblxuRm9yIG90aGVyIGNvbnRhaW5lcnMgc2VlIHRoZSBidWlsdCBpbiAiZGljdCIgYW5kICJzZXQiIGNsYXNzZXMsIGFuZFxudGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlLlxuXG5TdHJpbmcgbGl0ZXJhbHMgYXJlIHdyaXR0ZW4gaW4gc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXM6ICJcJ3h5enp5XCciLFxuIiJmcm9ib3p6IiIuICBTZWUgU3RyaW5nIGxpdGVyYWxzIGZvciBtb3JlIGFib3V0IHN0cmluZyBsaXRlcmFscy5cblVuaWNvZGUgc3RyaW5ncyBhcmUgbXVjaCBsaWtlIHN0cmluZ3MsIGJ1dCBhcmUgc3BlY2lmaWVkIGluIHRoZSBzeW50YXhcbnVzaW5nIGEgcHJlY2VkaW5nICJcJ3VcJyIgY2hhcmFjdGVyOiAidVwnYWJjXCciLCAidSJkZWYiIi4gSW4gYWRkaXRpb24gdG9cbnRoZSBmdW5jdGlvbmFsaXR5IGRlc2NyaWJlZCBoZXJlLCB0aGVyZSBhcmUgYWxzbyBzdHJpbmctc3BlY2lmaWNcbm1ldGhvZHMgZGVzY3JpYmVkIGluIHRoZSBTdHJpbmcgTWV0aG9kcyBzZWN0aW9uLiBMaXN0cyBhcmUgY29uc3RydWN0ZWRcbndpdGggc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiW2EsIGIsIGNdIi5cblR1cGxlcyBhcmUgY29uc3RydWN0ZWQgYnkgdGhlIGNvbW1hIG9wZXJhdG9yIChub3Qgd2l0aGluIHNxdWFyZVxuYnJhY2tldHMpLCB3aXRoIG9yIHdpdGhvdXQgZW5jbG9zaW5nIHBhcmVudGhlc2VzLCBidXQgYW4gZW1wdHkgdHVwbGVcbm11c3QgaGF2ZSB0aGUgZW5jbG9zaW5nIHBhcmVudGhlc2VzLCBzdWNoIGFzICJhLCBiLCBjIiBvciAiKCkiLiAgQVxuc2luZ2xlIGl0ZW0gdHVwbGUgbXVzdCBoYXZlIGEgdHJhaWxpbmcgY29tbWEsIHN1Y2ggYXMgIihkLCkiLlxuXG5CeXRlYXJyYXkgb2JqZWN0cyBhcmUgY3JlYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuImJ5dGVhcnJheSgpIi5cblxuQnVmZmVyIG9iamVjdHMgYXJlIG5vdCBkaXJlY3RseSBzdXBwb3J0ZWQgYnkgUHl0aG9uIHN5bnRheCwgYnV0IGNhbiBiZVxuY3JlYXRlZCBieSBjYWxsaW5nIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiYnVmZmVyKCkiLiAgVGhleSBkb25cJ3RcbnN1cHBvcnQgY29uY2F0ZW5hdGlvbiBvciByZXBldGl0aW9uLlxuXG5PYmplY3RzIG9mIHR5cGUgeHJhbmdlIGFyZSBzaW1pbGFyIHRvIGJ1ZmZlcnMgaW4gdGhhdCB0aGVyZSBpcyBub1xuc3BlY2lmaWMgc3ludGF4IHRvIGNyZWF0ZSB0aGVtLCBidXQgdGhleSBhcmUgY3JlYXRlZCB1c2luZyB0aGVcbiJ4cmFuZ2UoKSIgZnVuY3Rpb24uICBUaGV5IGRvblwndCBzdXBwb3J0IHNsaWNpbmcsIGNvbmNhdGVuYXRpb24gb3JcbnJlcGV0aXRpb24sIGFuZCB1c2luZyAiaW4iLCAibm90IGluIiwgIm1pbigpIiBvciAibWF4KCkiIG9uIHRoZW0gaXNcbmluZWZmaWNpZW50LlxuXG5Nb3N0IHNlcXVlbmNlIHR5cGVzIHN1cHBvcnQgdGhlIGZvbGxvd2luZyBvcGVyYXRpb25zLiAgVGhlICJpbiIgYW5kXG4ibm90IGluIiBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGUgY29tcGFyaXNvblxub3BlcmF0aW9ucy4gIFRoZSAiKyIgYW5kICIqIiBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlXG5jb3JyZXNwb25kaW5nIG51bWVyaWMgb3BlcmF0aW9ucy4gWzNdIEFkZGl0aW9uYWwgbWV0aG9kcyBhcmUgcHJvdmlkZWRcbmZvciBNdXRhYmxlIFNlcXVlbmNlIFR5cGVzLlxuXG5UaGlzIHRhYmxlIGxpc3RzIHRoZSBzZXF1ZW5jZSBvcGVyYXRpb25zIHNvcnRlZCBpbiBhc2NlbmRpbmcgcHJpb3JpdHkuXG5JbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZTsgKm4qLCAqaSogYW5kXG4qaiogYXJlIGludGVnZXJzOlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT0rXG58ICJ4IGluIHMiICAgICAgICAgICB8ICJUcnVlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiRmFsc2UiICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJ4IG5vdCBpbiBzIiAgICAgICB8ICJGYWxzZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiVHJ1ZSIgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzICsgdCIgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqIHwgKDYpICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzICogbiwgbiAqIHMiICAgICB8IGVxdWl2YWxlbnQgdG8gYWRkaW5nICpzKiB0byAgICAgIHwgKDIpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICB8IGl0c2VsZiAqbiogdGltZXMgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2ldIiAgICAgICAgICAgICB8ICppKnRoIGl0ZW0gb2YgKnMqLCBvcmlnaW4gMCAgICAgIHwgKDMpICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2k6al0iICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDQpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2k6ajprXSIgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgICB8IHdpdGggc3RlcCAqayogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJsZW4ocykiICAgICAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJtaW4ocykiICAgICAgICAgICB8IHNtYWxsZXN0IGl0ZW0gb2YgKnMqICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJtYXgocykiICAgICAgICAgICB8IGxhcmdlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzLmluZGV4KHgpIiAgICAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzLmNvdW50KHgpIiAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiAgIHwgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG5cblNlcXVlbmNlIHR5cGVzIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gSW4gcGFydGljdWxhciwgdHVwbGVzIGFuZFxubGlzdHMgYXJlIGNvbXBhcmVkIGxleGljb2dyYXBoaWNhbGx5IGJ5IGNvbXBhcmluZyBjb3JyZXNwb25kaW5nXG5lbGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5IGVsZW1lbnQgbXVzdCBjb21wYXJlXG5lcXVhbCBhbmQgdGhlIHR3byBzZXF1ZW5jZXMgbXVzdCBiZSBvZiB0aGUgc2FtZSB0eXBlIGFuZCBoYXZlIHRoZSBzYW1lXG5sZW5ndGguIChGb3IgZnVsbCBkZXRhaWxzIHNlZSBDb21wYXJpc29ucyBpbiB0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLilcblxuTm90ZXM6XG5cbjEuIFdoZW4gKnMqIGlzIGEgc3RyaW5nIG9yIFVuaWNvZGUgc3RyaW5nIG9iamVjdCB0aGUgImluIiBhbmQgIm5vdFxuICAgaW4iIG9wZXJhdGlvbnMgYWN0IGxpa2UgYSBzdWJzdHJpbmcgdGVzdC4gIEluIFB5dGhvbiB2ZXJzaW9uc1xuICAgYmVmb3JlIDIuMywgKngqIGhhZCB0byBiZSBhIHN0cmluZyBvZiBsZW5ndGggMS4gSW4gUHl0aG9uIDIuMyBhbmRcbiAgIGJleW9uZCwgKngqIG1heSBiZSBhIHN0cmluZyBvZiBhbnkgbGVuZ3RoLlxuXG4yLiBWYWx1ZXMgb2YgKm4qIGxlc3MgdGhhbiAiMCIgYXJlIHRyZWF0ZWQgYXMgIjAiICh3aGljaCB5aWVsZHMgYW5cbiAgIGVtcHR5IHNlcXVlbmNlIG9mIHRoZSBzYW1lIHR5cGUgYXMgKnMqKS4gIE5vdGUgdGhhdCBpdGVtcyBpbiB0aGVcbiAgIHNlcXVlbmNlICpzKiBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZSB0aW1lcy5cbiAgIFRoaXMgb2Z0ZW4gaGF1bnRzIG5ldyBQeXRob24gcHJvZ3JhbW1lcnM7IGNvbnNpZGVyOlxuXG4gICA+Pj4gbGlzdHMgPSBbW11dICogM1xuICAgPj4+IGxpc3RzXG4gICBbW10sIFtdLCBbXV1cbiAgID4+PiBsaXN0c1swXS5hcHBlbmQoMylcbiAgID4+PiBsaXN0c1xuICAgW1szXSwgWzNdLCBbM11dXG5cbiAgIFdoYXQgaGFzIGhhcHBlbmVkIGlzIHRoYXQgIltbXV0iIGlzIGEgb25lLWVsZW1lbnQgbGlzdCBjb250YWluaW5nXG4gICBhbiBlbXB0eSBsaXN0LCBzbyBhbGwgdGhyZWUgZWxlbWVudHMgb2YgIltbXV0gKiAzIiBhcmUgcmVmZXJlbmNlc1xuICAgdG8gdGhpcyBzaW5nbGUgZW1wdHkgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mXG4gICAibGlzdHMiIG1vZGlmaWVzIHRoaXMgc2luZ2xlIGxpc3QuIFlvdSBjYW4gY3JlYXRlIGEgbGlzdCBvZlxuICAgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OlxuXG4gICA+Pj4gbGlzdHMgPSBbW10gZm9yIGkgaW4gcmFuZ2UoMyldXG4gICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICA+Pj4gbGlzdHNbMV0uYXBwZW5kKDUpXG4gICA+Pj4gbGlzdHNbMl0uYXBwZW5kKDcpXG4gICA+Pj4gbGlzdHNcbiAgIFtbM10sIFs1XSwgWzddXVxuXG4gICBGdXJ0aGVyIGV4cGxhbmF0aW9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgRkFRIGVudHJ5IEhvdyBkbyBJIGNyZWF0ZSBhXG4gICBtdWx0aWRpbWVuc2lvbmFsIGxpc3Q/LlxuXG4zLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZlxuICAgdGhlIHN0cmluZzogImxlbihzKSArIGkiIG9yICJsZW4ocykgKyBqIiBpcyBzdWJzdGl0dXRlZC4gIEJ1dCBub3RlXG4gICB0aGF0ICItMCIgaXMgc3RpbGwgIjAiLlxuXG40LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSBvZlxuICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0ICJpIDw9IGsgPCBqIi4gIElmICppKiBvciAqaiogaXNcbiAgIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3IgIk5vbmUiLFxuICAgdXNlICIwIi4gIElmICpqKiBpcyBvbWl0dGVkIG9yICJOb25lIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqIGlzXG4gICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKmoqLCB0aGUgc2xpY2UgaXMgZW1wdHkuXG5cbjUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyB0aGVcbiAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggICJ4ID0gaSArIG4qayIgc3VjaCB0aGF0ICIwIDw9IG4gPFxuICAgKGotaSkvayIuICBJbiBvdGhlciB3b3JkcywgdGhlIGluZGljZXMgYXJlICJpIiwgImkrayIsICJpKzIqayIsXG4gICAiaSszKmsiIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0IG5ldmVyXG4gICBpbmNsdWRpbmcgKmoqKS4gIElmICppKiBvciAqaiogaXMgZ3JlYXRlciB0aGFuICJsZW4ocykiLCB1c2VcbiAgICJsZW4ocykiLiAgSWYgKmkqIG9yICpqKiBhcmUgb21pdHRlZCBvciAiTm9uZSIsIHRoZXkgYmVjb21lICJlbmQiXG4gICB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqayogY2Fubm90IGJlXG4gICB6ZXJvLiBJZiAqayogaXMgIk5vbmUiLCBpdCBpcyB0cmVhdGVkIGxpa2UgIjEiLlxuXG42LiAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIElmICpzKiBhbmQgKnQqIGFyZSBib3RoXG4gICBzdHJpbmdzLCBzb21lIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgc3VjaCBhcyBDUHl0aG9uIGNhbiB1c3VhbGx5XG4gICBwZXJmb3JtIGFuIGluLXBsYWNlIG9wdGltaXphdGlvbiBmb3IgYXNzaWdubWVudHMgb2YgdGhlIGZvcm0gInMgPSBzXG4gICArIHQiIG9yICJzICs9IHQiLiAgV2hlbiBhcHBsaWNhYmxlLCB0aGlzIG9wdGltaXphdGlvbiBtYWtlc1xuICAgcXVhZHJhdGljIHJ1bi10aW1lIG11Y2ggbGVzcyBsaWtlbHkuICBUaGlzIG9wdGltaXphdGlvbiBpcyBib3RoXG4gICB2ZXJzaW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQuICBGb3IgcGVyZm9ybWFuY2Ugc2Vuc2l0aXZlXG4gICBjb2RlLCBpdCBpcyBwcmVmZXJhYmxlIHRvIHVzZSB0aGUgInN0ci5qb2luKCkiIG1ldGhvZCB3aGljaCBhc3N1cmVzXG4gICBjb25zaXN0ZW50IGxpbmVhciBjb25jYXRlbmF0aW9uIHBlcmZvcm1hbmNlIGFjcm9zcyB2ZXJzaW9ucyBhbmRcbiAgIGltcGxlbWVudGF0aW9ucy5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogRm9ybWVybHksIHN0cmluZyBjb25jYXRlbmF0aW9uIG5ldmVyXG4gICBvY2N1cnJlZCBpbi1wbGFjZS5cblxuXG5TdHJpbmcgTWV0aG9kc1xuPT09PT09PT09PT09PT1cblxuQmVsb3cgYXJlIGxpc3RlZCB0aGUgc3RyaW5nIG1ldGhvZHMgd2hpY2ggYm90aCA4LWJpdCBzdHJpbmdzIGFuZFxuVW5pY29kZSBvYmplY3RzIHN1cHBvcnQuICBTb21lIG9mIHRoZW0gYXJlIGFsc28gYXZhaWxhYmxlIG9uXG4iYnl0ZWFycmF5IiBvYmplY3RzLlxuXG5JbiBhZGRpdGlvbiwgUHl0aG9uXCdzIHN0cmluZ3Mgc3VwcG9ydCB0aGUgc2VxdWVuY2UgdHlwZSBtZXRob2RzXG5kZXNjcmliZWQgaW4gdGhlIFNlcXVlbmNlIFR5cGVzIC0tLSBzdHIsIHVuaWNvZGUsIGxpc3QsIHR1cGxlLFxuYnl0ZWFycmF5LCBidWZmZXIsIHhyYW5nZSBzZWN0aW9uLiBUbyBvdXRwdXQgZm9ybWF0dGVkIHN0cmluZ3MgdXNlXG50ZW1wbGF0ZSBzdHJpbmdzIG9yIHRoZSAiJSIgb3BlcmF0b3IgZGVzY3JpYmVkIGluIHRoZSBTdHJpbmdcbkZvcm1hdHRpbmcgT3BlcmF0aW9ucyBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlICJyZSIgbW9kdWxlIGZvciBzdHJpbmdcbmZ1bmN0aW9ucyBiYXNlZCBvbiByZWd1bGFyIGV4cHJlc3Npb25zLlxuXG5zdHIuY2FwaXRhbGl6ZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgY2FwaXRhbGl6ZWRcbiAgIGFuZCB0aGUgcmVzdCBsb3dlcmNhc2VkLlxuXG4gICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cblxuc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIGNlbnRlcmVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBQYWRkaW5nIGlzIGRvbmVcbiAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhIHNwYWNlKS5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgdGhlICpmaWxsY2hhciogYXJndW1lbnQuXG5cbnN0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICpzdWIqXG4gICBpbiB0aGUgcmFuZ2UgWypzdGFydCosICplbmQqXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyAqc3RhcnQqIGFuZFxuICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXG5zdHIuZGVjb2RlKFtlbmNvZGluZ1ssIGVycm9yc11dKVxuXG4gICBEZWNvZGVzIHRoZSBzdHJpbmcgdXNpbmcgdGhlIGNvZGVjIHJlZ2lzdGVyZWQgZm9yICplbmNvZGluZyouXG4gICAqZW5jb2RpbmcqIGRlZmF1bHRzIHRvIHRoZSBkZWZhdWx0IHN0cmluZyBlbmNvZGluZy4gICplcnJvcnMqIG1heVxuICAgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIFRoZSBkZWZhdWx0IGlzXG4gICAiXCdzdHJpY3RcJyIsIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgIlVuaWNvZGVFcnJvciIuXG4gICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiBhbmQgYW55IG90aGVyXG4gICBuYW1lIHJlZ2lzdGVyZWQgdmlhICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKSIsIHNlZSBzZWN0aW9uIENvZGVjXG4gICBCYXNlIENsYXNzZXMuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuMi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogU3VwcG9ydCBmb3Igb3RoZXIgZXJyb3IgaGFuZGxpbmcgc2NoZW1lc1xuICAgYWRkZWQuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjc6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzIGFkZGVkLlxuXG5zdHIuZW5jb2RlKFtlbmNvZGluZ1ssIGVycm9yc11dKVxuXG4gICBSZXR1cm4gYW4gZW5jb2RlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuICBEZWZhdWx0IGVuY29kaW5nIGlzIHRoZVxuICAgY3VycmVudCBkZWZhdWx0IHN0cmluZyBlbmNvZGluZy4gICplcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgYVxuICAgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiBpc1xuICAgIlwnc3RyaWN0XCciLCBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlIGEgIlVuaWNvZGVFcnJvciIuXG4gICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIixcbiAgICJcJ3htbGNoYXJyZWZyZXBsYWNlXCciLCAiXCdiYWNrc2xhc2hyZXBsYWNlXCciIGFuZCBhbnkgb3RoZXIgbmFtZVxuICAgcmVnaXN0ZXJlZCB2aWEgImNvZGVjcy5yZWdpc3Rlcl9lcnJvcigpIiwgc2VlIHNlY3Rpb24gQ29kZWMgQmFzZVxuICAgQ2xhc3Nlcy4gRm9yIGEgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uIFN0YW5kYXJkXG4gICBFbmNvZGluZ3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuMC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogU3VwcG9ydCBmb3IgIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIgYW5kXG4gICAiXCdiYWNrc2xhc2hyZXBsYWNlXCciIGFuZCBvdGhlciBlcnJvciBoYW5kbGluZyBzY2hlbWVzIGFkZGVkLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi43OiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhZGRlZC5cblxuc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAqc3VmZml4KixcbiAgIG90aGVyd2lzZSByZXR1cm4gIkZhbHNlIi4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2Ygc3VmZml4ZXNcbiAgIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjU6IEFjY2VwdCB0dXBsZXMgYXMgKnN1ZmZpeCouXG5cbnN0ci5leHBhbmR0YWJzKFt0YWJzaXplXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWRcbiAgIGJ5IG9uZSBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlXG4gICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqIGNoYXJhY3RlcnNcbiAgIChkZWZhdWx0IGlzIDgsIGdpdmluZyB0YWIgcG9zaXRpb25zIGF0IGNvbHVtbnMgMCwgOCwgMTYgYW5kIHNvIG9uKS5cbiAgIFRvIGV4cGFuZCB0aGUgc3RyaW5nLCB0aGUgY3VycmVudCBjb2x1bW4gaXMgc2V0IHRvIHplcm8gYW5kIHRoZVxuICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgY2hhcmFjdGVyIGlzIGFcbiAgIHRhYiAoIlxcdCIpLCBvbmUgb3IgbW9yZSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSBpbnNlcnRlZCBpbiB0aGUgcmVzdWx0XG4gICB1bnRpbCB0aGUgY3VycmVudCBjb2x1bW4gaXMgZXF1YWwgdG8gdGhlIG5leHQgdGFiIHBvc2l0aW9uLiAoVGhlXG4gICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgaXMgYSBuZXdsaW5lXG4gICAoIlxcbiIpIG9yIHJldHVybiAoIlxcciIpLCBpdCBpcyBjb3BpZWQgYW5kIHRoZSBjdXJyZW50IGNvbHVtbiBpc1xuICAgcmVzZXQgdG8gemVyby4gIEFueSBvdGhlciBjaGFyYWN0ZXIgaXMgY29waWVkIHVuY2hhbmdlZCBhbmQgdGhlXG4gICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiBob3cgdGhlXG4gICBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgd2hlbiBwcmludGVkLlxuXG4gICA+Pj4gXCcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNFwnLmV4cGFuZHRhYnMoKVxuICAgXCcwMSAgICAgIDAxMiAgICAgMDEyMyAgICAwMTIzNFwnXG4gICA+Pj4gXCcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNFwnLmV4cGFuZHRhYnMoNClcbiAgIFwnMDEgIDAxMiAwMTIzICAgIDAxMjM0XCdcblxuc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kIHdpdGhpbiB0aGUgc2xpY2UgInNbc3RhcnQ6ZW5kXSIuICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KlxuICAgYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4gIFJldHVybiAiLTEiIGlmXG4gICAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93XG4gICAgIHRoZSBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCxcbiAgICAgdXNlIHRoZSAiaW4iIG9wZXJhdG9yOlxuXG4gICAgICAgID4+PiBcJ1B5XCcgaW4gXCdQeXRob25cJ1xuICAgICAgICBUcnVlXG5cbnN0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuXG4gICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCB0aGlzXG4gICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciByZXBsYWNlbWVudCBmaWVsZHNcbiAgIGRlbGltaXRlZCBieSBicmFjZXMgInt9Ii4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSBGb3JtYXQgU3RyaW5nIFN5bnRheCBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgdmFyaW91c1xuICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgc3RyaW5ncy5cblxuICAgVGhpcyBtZXRob2Qgb2Ygc3RyaW5nIGZvcm1hdHRpbmcgaXMgdGhlIG5ldyBzdGFuZGFyZCBpbiBQeXRob24gMyxcbiAgIGFuZCBzaG91bGQgYmUgcHJlZmVycmVkIHRvIHRoZSAiJSIgZm9ybWF0dGluZyBkZXNjcmliZWQgaW4gU3RyaW5nXG4gICBGb3JtYXR0aW5nIE9wZXJhdGlvbnMgaW4gbmV3IGNvZGUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgImZpbmQoKSIsIGJ1dCByYWlzZSAiVmFsdWVFcnJvciIgd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdFxuICAgZm91bmQuXG5cbnN0ci5pc2FsbnVtKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFudW1lcmljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG4gICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG4gICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cblxuc3RyLmlzZGlnaXQoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kIHRoZXJlIGlzXG4gICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbiAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuXG5zdHIuaXNsb3dlcigpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nIGFyZSBsb3dlcmNhc2VcbiAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG5cbiAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuXG5zdHIuaXNzcGFjZSgpXG5cbiAgIFJldHVybiB0cnVlIGlmIHRoZXJlIGFyZSBvbmx5IHdoaXRlc3BhY2UgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG4gICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG5cbnN0ci5pc3VwcGVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlIHVwcGVyY2FzZVxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cblxuICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG5cbnN0ci5qb2luKGl0ZXJhYmxlKVxuXG4gICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlXG4gICAqaXRlcmFibGUqICppdGVyYWJsZSouICBUaGUgc2VwYXJhdG9yIGJldHdlZW4gZWxlbWVudHMgaXMgdGhlXG4gICBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhXG4gICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgdGhlICpmaWxsY2hhciogYXJndW1lbnQuXG5cbnN0ci5sb3dlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG5cbiAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICBcJ3NwYWNpb3VzICAgXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgXCdleGFtcGxlLmNvbVwnXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjIuMjogU3VwcG9ydCBmb3IgdGhlICpjaGFycyogYXJndW1lbnQuXG5cbnN0ci5wYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBzdHJpbmcgaXRzZWxmLCBmb2xsb3dlZCBieVxuICAgdHdvIGVtcHR5IHN0cmluZ3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNS5cblxuc3RyLnJlcGxhY2Uob2xkLCBuZXdbLCBjb3VudF0pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCBvY2N1cnJlbmNlcyBvZiBzdWJzdHJpbmcgKm9sZCpcbiAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgZ2l2ZW4sIG9ubHlcbiAgIHRoZSBmaXJzdCAqY291bnQqIG9jY3VycmVuY2VzIGFyZSByZXBsYWNlZC5cblxuc3RyLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgZm91bmQsIHN1Y2ggdGhhdCAqc3ViKiBpcyBjb250YWluZWQgd2l0aGluICJzW3N0YXJ0OmVuZF0iLlxuICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZVxuICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuXG5zdHIucmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyAqc3ViKiBpc1xuICAgbm90IGZvdW5kLlxuXG5zdHIucmp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi5cbiAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgaXMgYVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgdGhlICpmaWxsY2hhciogYXJndW1lbnQuXG5cbnN0ci5ycGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgbGFzdCBvY2N1cnJlbmNlIG9mICpzZXAqLCBhbmQgcmV0dXJuIGFcbiAgIDMtdHVwbGUgY29udGFpbmluZyB0aGUgcGFydCBiZWZvcmUgdGhlIHNlcGFyYXRvciwgdGhlIHNlcGFyYXRvclxuICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgaXMgbm90XG4gICBmb3VuZCwgcmV0dXJuIGEgMy10dXBsZSBjb250YWluaW5nIHR3byBlbXB0eSBzdHJpbmdzLCBmb2xsb3dlZCBieVxuICAgdGhlIHN0cmluZyBpdHNlbGYuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNS5cblxuc3RyLnJzcGxpdChbc2VwWywgbWF4c3BsaXRdXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogYXMgdGhlXG4gICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICptYXhzcGxpdCogc3BsaXRzXG4gICBhcmUgZG9uZSwgdGhlICpyaWdodG1vc3QqIG9uZXMuICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yXG4gICAiTm9uZSIsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3Igc3BsaXR0aW5nXG4gICBmcm9tIHRoZSByaWdodCwgInJzcGxpdCgpIiBiZWhhdmVzIGxpa2UgInNwbGl0KCkiIHdoaWNoIGlzXG4gICBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAyLjQuXG5cbnN0ci5yc3RyaXAoW2NoYXJzXSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLnJzdHJpcCgpXG4gICBcJyAgIHNwYWNpb3VzXCdcbiAgID4+PiBcJ21pc3Npc3NpcHBpXCcucnN0cmlwKFwnaXB6XCcpXG4gICBcJ21pc3Npc3NcJ1xuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi4yLjI6IFN1cHBvcnQgZm9yIHRoZSAqY2hhcnMqIGFyZ3VtZW50LlxuXG5zdHIuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KlxuICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAibWF4c3BsaXQrMSJcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCBvciAiLTEiLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgICJcJzEsLDJcJy5zcGxpdChcJyxcJykiIHJldHVybnMgIltcJzFcJywgXCdcJywgXCcyXCddIikuICBUaGUgKnNlcCogYXJndW1lbnRcbiAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgIlwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJykiIHJldHVybnMgIltcJzFcJywgXCcyXCcsIFwnM1wnXSIpLiBTcGxpdHRpbmcgYW5cbiAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICJbXCdcJ10iLlxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICJOb25lIiwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgIk5vbmUiIHNlcGFyYXRvciByZXR1cm5zICJbXSIuXG5cbiAgIEZvciBleGFtcGxlLCAiXCcgMSAgMiAgIDMgIFwnLnNwbGl0KCkiIHJldHVybnMgIltcJzFcJywgXCcyXCcsIFwnM1wnXSIsIGFuZFxuICAgIlwnICAxICAyICAgMyAgXCcuc3BsaXQoTm9uZSwgMSkiIHJldHVybnMgIltcJzFcJywgXCcyICAgMyAgXCddIi5cblxuc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgbGluZVxuICAgYm91bmRhcmllcy4gVGhpcyBtZXRob2QgdXNlcyB0aGUgKnVuaXZlcnNhbCBuZXdsaW5lcyogYXBwcm9hY2ggdG9cbiAgIHNwbGl0dGluZyBsaW5lcy4gTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIGxpc3RcbiAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuXG4gICBQeXRob24gcmVjb2duaXplcyAiIlxcciIiLCAiIlxcbiIiLCBhbmQgIiJcXHJcXG4iIiBhcyBsaW5lIGJvdW5kYXJpZXNcbiAgIGZvciA4LWJpdCBzdHJpbmdzLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKClcbiAgICAgIFtcJ2FiIGNcJywgXCdcJywgXCdkZSBmZ1wnLCBcJ2tsXCddXG4gICAgICA+Pj4gXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoVHJ1ZSlcbiAgICAgIFtcJ2FiIGNcXG5cJywgXCdcXG5cJywgXCdkZSBmZ1xcclwnLCBcJ2tsXFxyXFxuXCddXG5cbiAgIFVubGlrZSAic3BsaXQoKSIgd2hlbiBhIGRlbGltaXRlciBzdHJpbmcgKnNlcCogaXMgZ2l2ZW4sIHRoaXNcbiAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCBhIHRlcm1pbmFsXG4gICBsaW5lIGJyZWFrIGRvZXMgbm90IHJlc3VsdCBpbiBhbiBleHRyYSBsaW5lOlxuXG4gICAgICA+Pj4gIiIuc3BsaXRsaW5lcygpXG4gICAgICBbXVxuICAgICAgPj4+ICJPbmUgbGluZVxcbiIuc3BsaXRsaW5lcygpXG4gICAgICBbXCdPbmUgbGluZVwnXVxuXG4gICBGb3IgY29tcGFyaXNvbiwgInNwbGl0KFwnXFxuXCcpIiBnaXZlczpcblxuICAgICAgPj4+IFwnXCcuc3BsaXQoXCdcXG5cJylcbiAgICAgIFtcJ1wnXVxuICAgICAgPj4+IFwnVHdvIGxpbmVzXFxuXCcuc3BsaXQoXCdcXG5cJylcbiAgICAgIFtcJ1R3byBsaW5lc1wnLCBcJ1wnXVxuXG51bmljb2RlLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcblxuICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgbGlrZSAic3RyLnNwbGl0bGluZXMoKSIuXG4gICBIb3dldmVyLCB0aGUgVW5pY29kZSBtZXRob2Qgc3BsaXRzIG9uIHRoZSBmb2xsb3dpbmcgbGluZVxuICAgYm91bmRhcmllcywgd2hpY2ggYXJlIGEgc3VwZXJzZXQgb2YgdGhlICp1bml2ZXJzYWwgbmV3bGluZXMqXG4gICByZWNvZ25pemVkIGZvciA4LWJpdCBzdHJpbmdzLlxuXG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBSZXByZXNlbnRhdGlvbiAgICAgICAgICB8IERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcXG4iICAgICAgICAgICAgICAgICAgICB8IExpbmUgRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHIiICAgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHJcXG4iICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gKyBMaW5lIEZlZWQgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx2IiBvciAiXFx4MGIiICAgICAgICAgIHwgTGluZSBUYWJ1bGF0aW9uICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcZiIgb3IgIlxceDBjIiAgICAgICAgICB8IEZvcm0gRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxYyIgICAgICAgICAgICAgICAgICB8IEZpbGUgU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxZCIgICAgICAgICAgICAgICAgICB8IEdyb3VwIFNlcGFyYXRvciAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHgxZSIgICAgICAgICAgICAgICAgICB8IFJlY29yZCBTZXBhcmF0b3IgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHg4NSIgICAgICAgICAgICAgICAgICB8IE5leHQgTGluZSAoQzEgQ29udHJvbCBDb2RlKSAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHUyMDI4IiAgICAgICAgICAgICAgICB8IExpbmUgU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXHUyMDI5IiAgICAgICAgICAgICAgICB8IFBhcmFncmFwaCBTZXBhcmF0b3IgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjc6ICJcXHYiIGFuZCAiXFxmIiBhZGRlZCB0byBsaXN0IG9mIGxpbmVcbiAgIGJvdW5kYXJpZXMuXG5cbnN0ci5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlIHJldHVyblxuICAgIkZhbHNlIi4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byBsb29rIGZvci5cbiAgIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBzdHJpbmcgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG4gICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNTogQWNjZXB0IHR1cGxlcyBhcyAqcHJlZml4Ki5cblxuc3RyLnN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuICAgY2hhcmFjdGVycyByZW1vdmVkLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZVxuICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqXG4gICBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKiBhcmd1bWVudCBpc1xuICAgbm90IGEgcHJlZml4IG9yIHN1ZmZpeDsgcmF0aGVyLCBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlXG4gICBzdHJpcHBlZDpcblxuICAgPj4+IFwnICAgc3BhY2lvdXMgICBcJy5zdHJpcCgpXG4gICBcJ3NwYWNpb3VzXCdcbiAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLnN0cmlwKFwnY21vd3ouXCcpXG4gICBcJ2V4YW1wbGVcJ1xuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi4yLjI6IFN1cHBvcnQgZm9yIHRoZSAqY2hhcnMqIGFyZ3VtZW50LlxuXG5zdHIuc3dhcGNhc2UoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyBjb252ZXJ0ZWQgdG9cbiAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS5cblxuICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG5cbnN0ci50aXRsZSgpXG5cbiAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzIHN0YXJ0IHdpdGggYW5cbiAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbG93ZXJjYXNlLlxuXG4gICBUaGUgYWxnb3JpdGhtIHVzZXMgYSBzaW1wbGUgbGFuZ3VhZ2UtaW5kZXBlbmRlbnQgZGVmaW5pdGlvbiBvZiBhXG4gICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgaW5cbiAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gY29udHJhY3Rpb25zIGFuZFxuICAgcG9zc2Vzc2l2ZXMgZm9ybSB3b3JkIGJvdW5kYXJpZXMsIHdoaWNoIG1heSBub3QgYmUgdGhlIGRlc2lyZWRcbiAgIHJlc3VsdDpcblxuICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbiAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG5cbiAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nIHJlZ3VsYXJcbiAgIGV4cHJlc3Npb25zOlxuXG4gICAgICA+Pj4gaW1wb3J0IHJlXG4gICAgICA+Pj4gZGVmIHRpdGxlY2FzZShzKTpcbiAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW8uZ3JvdXAoMClbMTpdLmxvd2VyKCksXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgcylcbiAgICAgIC4uLlxuICAgICAgPj4+IHRpdGxlY2FzZSgidGhleVwncmUgYmlsbFwncyBmcmllbmRzLiIpXG4gICAgICAiVGhleVwncmUgQmlsbFwncyBGcmllbmRzLiJcblxuICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG5cbnN0ci50cmFuc2xhdGUodGFibGVbLCBkZWxldGVjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlXG4gICBvcHRpb25hbCBhcmd1bWVudCAqZGVsZXRlY2hhcnMqIGFyZSByZW1vdmVkLCBhbmQgdGhlIHJlbWFpbmluZ1xuICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLFxuICAgd2hpY2ggbXVzdCBiZSBhIHN0cmluZyBvZiBsZW5ndGggMjU2LlxuXG4gICBZb3UgY2FuIHVzZSB0aGUgIm1ha2V0cmFucygpIiBoZWxwZXIgZnVuY3Rpb24gaW4gdGhlICJzdHJpbmciXG4gICBtb2R1bGUgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gdGFibGUuIEZvciBzdHJpbmcgb2JqZWN0cywgc2V0IHRoZVxuICAgKnRhYmxlKiBhcmd1bWVudCB0byAiTm9uZSIgZm9yIHRyYW5zbGF0aW9ucyB0aGF0IG9ubHkgZGVsZXRlXG4gICBjaGFyYWN0ZXJzOlxuXG4gICA+Pj4gXCdyZWFkIHRoaXMgc2hvcnQgdGV4dFwnLnRyYW5zbGF0ZShOb25lLCBcJ2FlaW91XCcpXG4gICBcJ3JkIHRocyBzaHJ0IHR4dFwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDIuNjogU3VwcG9ydCBmb3IgYSAiTm9uZSIgKnRhYmxlKiBhcmd1bWVudC5cblxuICAgRm9yIFVuaWNvZGUgb2JqZWN0cywgdGhlICJ0cmFuc2xhdGUoKSIgbWV0aG9kIGRvZXMgbm90IGFjY2VwdCB0aGVcbiAgIG9wdGlvbmFsICpkZWxldGVjaGFycyogYXJndW1lbnQuICBJbnN0ZWFkLCBpdCByZXR1cm5zIGEgY29weSBvZiB0aGVcbiAgICpzKiB3aGVyZSBhbGwgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuXG4gICB0cmFuc2xhdGlvbiB0YWJsZSB3aGljaCBtdXN0IGJlIGEgbWFwcGluZyBvZiBVbmljb2RlIG9yZGluYWxzIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBVbmljb2RlIHN0cmluZ3Mgb3IgIk5vbmUiLiBVbm1hcHBlZCBjaGFyYWN0ZXJzXG4gICBhcmUgbGVmdCB1bnRvdWNoZWQuIENoYXJhY3RlcnMgbWFwcGVkIHRvICJOb25lIiBhcmUgZGVsZXRlZC4gIE5vdGUsXG4gICBhIG1vcmUgZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgY3VzdG9tIGNoYXJhY3RlciBtYXBwaW5nXG4gICBjb2RlYyB1c2luZyB0aGUgImNvZGVjcyIgbW9kdWxlIChzZWUgImVuY29kaW5ncy5jcDEyNTEiIGZvciBhblxuICAgZXhhbXBsZSkuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgInN0ci51cHBlcigpLmlzdXBwZXIoKSIgbWlnaHQgYmVcbiAgICJGYWxzZSIgaWYgInMiIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG5cbnN0ci56ZmlsbCh3aWR0aClcblxuICAgUmV0dXJuIHRoZSBudW1lcmljIHN0cmluZyBsZWZ0IGZpbGxlZCB3aXRoIHplcm9zIGluIGEgc3RyaW5nIG9mXG4gICBsZW5ndGggKndpZHRoKi4gIEEgc2lnbiBwcmVmaXggaXMgaGFuZGxlZCBjb3JyZWN0bHkuICBUaGUgb3JpZ2luYWxcbiAgIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAibGVuKHMpIi5cblxuICAgTmV3IGluIHZlcnNpb24gMi4yLjIuXG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgcHJlc2VudCBvbmx5IG9uIHVuaWNvZGUgb2JqZWN0czpcblxudW5pY29kZS5pc251bWVyaWMoKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHRoZXJlIGFyZSBvbmx5IG51bWVyaWMgY2hhcmFjdGVycyBpbiBTLCAiRmFsc2UiXG4gICBvdGhlcndpc2UuIE51bWVyaWMgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGxcbiAgIGNoYXJhY3RlcnMgdGhhdCBoYXZlIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy5cbiAgIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSC5cblxudW5pY29kZS5pc2RlY2ltYWwoKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHRoZXJlIGFyZSBvbmx5IGRlY2ltYWwgY2hhcmFjdGVycyBpbiBTLCAiRmFsc2UiXG4gICBvdGhlcndpc2UuIERlY2ltYWwgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGxcbiAgIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgdXNlZCB0byBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLlxuICAgVSswNjYwLCBBUkFCSUMtSU5ESUMgRElHSVQgWkVSTy5cblxuXG5TdHJpbmcgRm9ybWF0dGluZyBPcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblN0cmluZyBhbmQgVW5pY29kZSBvYmplY3RzIGhhdmUgb25lIHVuaXF1ZSBidWlsdC1pbiBvcGVyYXRpb246IHRoZSAiJSJcbm9wZXJhdG9yIChtb2R1bG8pLiAgVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yXG4qaW50ZXJwb2xhdGlvbiogb3BlcmF0b3IuICBHaXZlbiAiZm9ybWF0ICUgdmFsdWVzIiAod2hlcmUgKmZvcm1hdCogaXNcbmEgc3RyaW5nIG9yIFVuaWNvZGUgb2JqZWN0KSwgIiUiIGNvbnZlcnNpb24gc3BlY2lmaWNhdGlvbnMgaW4gKmZvcm1hdCpcbmFyZSByZXBsYWNlZCB3aXRoIHplcm8gb3IgbW9yZSBlbGVtZW50cyBvZiAqdmFsdWVzKi4gIFRoZSBlZmZlY3QgaXNcbnNpbWlsYXIgdG8gdGhlIHVzaW5nICJzcHJpbnRmKCkiIGluIHRoZSBDIGxhbmd1YWdlLiAgSWYgKmZvcm1hdCogaXMgYVxuVW5pY29kZSBvYmplY3QsIG9yIGlmIGFueSBvZiB0aGUgb2JqZWN0cyBiZWluZyBjb252ZXJ0ZWQgdXNpbmcgdGhlXG4iJXMiIGNvbnZlcnNpb24gYXJlIFVuaWNvZGUgb2JqZWN0cywgdGhlIHJlc3VsdCB3aWxsIGFsc28gYmUgYSBVbmljb2RlXG5vYmplY3QuXG5cbklmICpmb3JtYXQqIHJlcXVpcmVzIGEgc2luZ2xlIGFyZ3VtZW50LCAqdmFsdWVzKiBtYXkgYmUgYSBzaW5nbGUgbm9uLVxudHVwbGUgb2JqZWN0LiBbNV0gIE90aGVyd2lzZSwgKnZhbHVlcyogbXVzdCBiZSBhIHR1cGxlIHdpdGggZXhhY3RseVxudGhlIG51bWJlciBvZiBpdGVtcyBzcGVjaWZpZWQgYnkgdGhlIGZvcm1hdCBzdHJpbmcsIG9yIGEgc2luZ2xlXG5tYXBwaW5nIG9iamVjdCAoZm9yIGV4YW1wbGUsIGEgZGljdGlvbmFyeSkuXG5cbkEgY29udmVyc2lvbiBzcGVjaWZpZXIgY29udGFpbnMgdHdvIG9yIG1vcmUgY2hhcmFjdGVycyBhbmQgaGFzIHRoZVxuZm9sbG93aW5nIGNvbXBvbmVudHMsIHdoaWNoIG11c3Qgb2NjdXIgaW4gdGhpcyBvcmRlcjpcblxuMS4gVGhlICJcJyVcJyIgY2hhcmFjdGVyLCB3aGljaCBtYXJrcyB0aGUgc3RhcnQgb2YgdGhlIHNwZWNpZmllci5cblxuMi4gTWFwcGluZyBrZXkgKG9wdGlvbmFsKSwgY29uc2lzdGluZyBvZiBhIHBhcmVudGhlc2lzZWQgc2VxdWVuY2VcbiAgIG9mIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLCAiKHNvbWVuYW1lKSIpLlxuXG4zLiBDb252ZXJzaW9uIGZsYWdzIChvcHRpb25hbCksIHdoaWNoIGFmZmVjdCB0aGUgcmVzdWx0IG9mIHNvbWVcbiAgIGNvbnZlcnNpb24gdHlwZXMuXG5cbjQuIE1pbmltdW0gZmllbGQgd2lkdGggKG9wdGlvbmFsKS4gIElmIHNwZWNpZmllZCBhcyBhbiAiXCcqXCciXG4gICAoYXN0ZXJpc2spLCB0aGUgYWN0dWFsIHdpZHRoIGlzIHJlYWQgZnJvbSB0aGUgbmV4dCBlbGVtZW50IG9mIHRoZVxuICAgdHVwbGUgaW4gKnZhbHVlcyosIGFuZCB0aGUgb2JqZWN0IHRvIGNvbnZlcnQgY29tZXMgYWZ0ZXIgdGhlXG4gICBtaW5pbXVtIGZpZWxkIHdpZHRoIGFuZCBvcHRpb25hbCBwcmVjaXNpb24uXG5cbjUuIFByZWNpc2lvbiAob3B0aW9uYWwpLCBnaXZlbiBhcyBhICJcJy5cJyIgKGRvdCkgZm9sbG93ZWQgYnkgdGhlXG4gICBwcmVjaXNpb24uICBJZiBzcGVjaWZpZWQgYXMgIlwnKlwnIiAoYW4gYXN0ZXJpc2spLCB0aGUgYWN0dWFsIHdpZHRoXG4gICBpcyByZWFkIGZyb20gdGhlIG5leHQgZWxlbWVudCBvZiB0aGUgdHVwbGUgaW4gKnZhbHVlcyosIGFuZCB0aGVcbiAgIHZhbHVlIHRvIGNvbnZlcnQgY29tZXMgYWZ0ZXIgdGhlIHByZWNpc2lvbi5cblxuNi4gTGVuZ3RoIG1vZGlmaWVyIChvcHRpb25hbCkuXG5cbjcuIENvbnZlcnNpb24gdHlwZS5cblxuV2hlbiB0aGUgcmlnaHQgYXJndW1lbnQgaXMgYSBkaWN0aW9uYXJ5IChvciBvdGhlciBtYXBwaW5nIHR5cGUpLCB0aGVuXG50aGUgZm9ybWF0cyBpbiB0aGUgc3RyaW5nICptdXN0KiBpbmNsdWRlIGEgcGFyZW50aGVzaXNlZCBtYXBwaW5nIGtleVxuaW50byB0aGF0IGRpY3Rpb25hcnkgaW5zZXJ0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlICJcJyVcJyIgY2hhcmFjdGVyLlxuVGhlIG1hcHBpbmcga2V5IHNlbGVjdHMgdGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZCBmcm9tIHRoZSBtYXBwaW5nLlxuRm9yIGV4YW1wbGU6XG5cbj4+PiBwcmludCBcJyUobGFuZ3VhZ2UpcyBoYXMgJShudW1iZXIpMDNkIHF1b3RlIHR5cGVzLlwnICUgXFxcbi4uLiAgICAgICB7Imxhbmd1YWdlIjogIlB5dGhvbiIsICJudW1iZXIiOiAyfVxuUHl0aG9uIGhhcyAwMDIgcXVvdGUgdHlwZXMuXG5cbkluIHRoaXMgY2FzZSBubyAiKiIgc3BlY2lmaWVycyBtYXkgb2NjdXIgaW4gYSBmb3JtYXQgKHNpbmNlIHRoZXlcbnJlcXVpcmUgYSBzZXF1ZW50aWFsIHBhcmFtZXRlciBsaXN0KS5cblxuVGhlIGNvbnZlcnNpb24gZmxhZyBjaGFyYWN0ZXJzIGFyZTpcblxuKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBGbGFnICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xufCAiXCcjXCciICAgICB8IFRoZSB2YWx1ZSBjb252ZXJzaW9uIHdpbGwgdXNlIHRoZSAiYWx0ZXJuYXRlIGZvcm0iICh3aGVyZSBkZWZpbmVkICAgICB8XG58ICAgICAgICAgICB8IGJlbG93KS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJcJzBcJyIgICAgIHwgVGhlIGNvbnZlcnNpb24gd2lsbCBiZSB6ZXJvIHBhZGRlZCBmb3IgbnVtZXJpYyB2YWx1ZXMuICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIlwnLVwnIiAgICAgfCBUaGUgY29udmVydGVkIHZhbHVlIGlzIGxlZnQgYWRqdXN0ZWQgKG92ZXJyaWRlcyB0aGUgIlwnMFwnIiBjb252ZXJzaW9uICB8XG58ICAgICAgICAgICB8IGlmIGJvdGggYXJlIGdpdmVuKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJcJyBcJyIgICAgIHwgKGEgc3BhY2UpIEEgYmxhbmsgc2hvdWxkIGJlIGxlZnQgYmVmb3JlIGEgcG9zaXRpdmUgbnVtYmVyIChvciBlbXB0eSAgIHxcbnwgICAgICAgICAgIHwgc3RyaW5nKSBwcm9kdWNlZCBieSBhIHNpZ25lZCBjb252ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgIlwnK1wnIiAgICAgfCBBIHNpZ24gY2hhcmFjdGVyICgiXCcrXCciIG9yICJcJy1cJyIpIHdpbGwgcHJlY2VkZSB0aGUgY29udmVyc2lvbiAgICAgICAgIHxcbnwgICAgICAgICAgIHwgKG92ZXJyaWRlcyBhICJzcGFjZSIgZmxhZykuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuQSBsZW5ndGggbW9kaWZpZXIgKCJoIiwgImwiLCBvciAiTCIpIG1heSBiZSBwcmVzZW50LCBidXQgaXMgaWdub3JlZCBhc1xuaXQgaXMgbm90IG5lY2Vzc2FyeSBmb3IgUHl0aG9uIC0tIHNvIGUuZy4gIiVsZCIgaXMgaWRlbnRpY2FsIHRvICIlZCIuXG5cblRoZSBjb252ZXJzaW9uIHR5cGVzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBDb252ZXJzaW9uICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCAiXCdkXCciICAgICAgICB8IFNpZ25lZCBpbnRlZ2VyIGRlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcJ2lcJyIgICAgICAgIHwgU2lnbmVkIGludGVnZXIgZGVjaW1hbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlwnb1wnIiAgICAgICAgfCBTaWduZWQgb2N0YWwgdmFsdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgxKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXCd1XCciICAgICAgICB8IE9ic29sZXRlIHR5cGUgLS0gaXQgaXMgaWRlbnRpY2FsIHRvICJcJ2RcJyIuICAgICAgICAgICAgfCAoNykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlwneFwnIiAgICAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgKGxvd2VyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgICB8ICgyKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXCdYXCciICAgICAgICB8IFNpZ25lZCBoZXhhZGVjaW1hbCAodXBwZXJjYXNlKS4gICAgICAgICAgICAgICAgICAgICAgIHwgKDIpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcJ2VcJyIgICAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZXhwb25lbnRpYWwgZm9ybWF0IChsb3dlcmNhc2UpLiAgICAgICAgfCAoMykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlwnRVwnIiAgICAgICAgfCBGbG9hdGluZyBwb2ludCBleHBvbmVudGlhbCBmb3JtYXQgKHVwcGVyY2FzZSkuICAgICAgICB8ICgzKSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXCdmXCciICAgICAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDMpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcJ0ZcJyIgICAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZGVjaW1hbCBmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgfCAoMykgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlwnZ1wnIiAgICAgICAgfCBGbG9hdGluZyBwb2ludCBmb3JtYXQuIFVzZXMgbG93ZXJjYXNlIGV4cG9uZW50aWFsICAgICB8ICg0KSAgICAgfFxufCAgICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzIHRoYW4gICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0IG90aGVyd2lzZS4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXCdHXCciICAgICAgICB8IEZsb2F0aW5nIHBvaW50IGZvcm1hdC4gVXNlcyB1cHBlcmNhc2UgZXhwb25lbnRpYWwgICAgIHwgKDQpICAgICB8XG58ICAgICAgICAgICAgICB8IGZvcm1hdCBpZiBleHBvbmVudCBpcyBsZXNzIHRoYW4gLTQgb3Igbm90IGxlc3MgdGhhbiAgIHwgICAgICAgICB8XG58ICAgICAgICAgICAgICB8IHByZWNpc2lvbiwgZGVjaW1hbCBmb3JtYXQgb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcJ2NcJyIgICAgICAgIHwgU2luZ2xlIGNoYXJhY3RlciAoYWNjZXB0cyBpbnRlZ2VyIG9yIHNpbmdsZSBjaGFyYWN0ZXIgfCAgICAgICAgIHxcbnwgICAgICAgICAgICAgIHwgc3RyaW5nKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlwnclwnIiAgICAgICAgfCBTdHJpbmcgKGNvbnZlcnRzIGFueSBQeXRob24gb2JqZWN0IHVzaW5nIHJlcHIoKSkuICAgICB8ICg1KSAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXCdzXCciICAgICAgICB8IFN0cmluZyAoY29udmVydHMgYW55IFB5dGhvbiBvYmplY3QgdXNpbmcgInN0cigpIikuICAgIHwgKDYpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcJyVcJyIgICAgICAgIHwgTm8gYXJndW1lbnQgaXMgY29udmVydGVkLCByZXN1bHRzIGluIGEgIlwnJVwnIiAgICAgICAgICB8ICAgICAgICAgfFxufCAgICAgICAgICAgICAgfCBjaGFyYWN0ZXIgaW4gdGhlIHJlc3VsdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgemVybyAoIlwnMFwnIikgdG8gYmUgaW5zZXJ0ZWRcbiAgIGJldHdlZW4gbGVmdC1oYW5kIHBhZGRpbmcgYW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBudW1iZXIgaWYgdGhlXG4gICBsZWFkaW5nIGNoYXJhY3RlciBvZiB0aGUgcmVzdWx0IGlzIG5vdCBhbHJlYWR5IGEgemVyby5cblxuMi4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgIlwnMHhcJyIgb3IgIlwnMFhcJyIgKGRlcGVuZGluZ1xuICAgb24gd2hldGhlciB0aGUgIlwneFwnIiBvciAiXCdYXCciIGZvcm1hdCB3YXMgdXNlZCkgdG8gYmUgaW5zZXJ0ZWRcbiAgIGJldHdlZW4gbGVmdC1oYW5kIHBhZGRpbmcgYW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSBudW1iZXIgaWYgdGhlXG4gICBsZWFkaW5nIGNoYXJhY3RlciBvZiB0aGUgcmVzdWx0IGlzIG5vdCBhbHJlYWR5IGEgemVyby5cblxuMy4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IHRvIGFsd2F5cyBjb250YWluIGEgZGVjaW1hbFxuICAgcG9pbnQsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC5cblxuICAgVGhlIHByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSBkZWNpbWFsXG4gICBwb2ludCBhbmQgZGVmYXVsdHMgdG8gNi5cblxuNC4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IHRvIGFsd2F5cyBjb250YWluIGEgZGVjaW1hbFxuICAgcG9pbnQsIGFuZCB0cmFpbGluZyB6ZXJvZXMgYXJlIG5vdCByZW1vdmVkIGFzIHRoZXkgd291bGQgb3RoZXJ3aXNlXG4gICBiZS5cblxuICAgVGhlIHByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzIGJlZm9yZVxuICAgYW5kIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGFuZCBkZWZhdWx0cyB0byA2LlxuXG41LiBUaGUgIiVyIiBjb252ZXJzaW9uIHdhcyBhZGRlZCBpbiBQeXRob24gMi4wLlxuXG4gICBUaGUgcHJlY2lzaW9uIGRldGVybWluZXMgdGhlIG1heGltYWwgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdXNlZC5cblxuNi4gSWYgdGhlIG9iamVjdCBvciBmb3JtYXQgcHJvdmlkZWQgaXMgYSAidW5pY29kZSIgc3RyaW5nLCB0aGVcbiAgIHJlc3VsdGluZyBzdHJpbmcgd2lsbCBhbHNvIGJlICJ1bmljb2RlIi5cblxuICAgVGhlIHByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBtYXhpbWFsIG51bWJlciBvZiBjaGFyYWN0ZXJzIHVzZWQuXG5cbjcuIFNlZSAqKlBFUCAyMzcqKi5cblxuU2luY2UgUHl0aG9uIHN0cmluZ3MgaGF2ZSBhbiBleHBsaWNpdCBsZW5ndGgsICIlcyIgY29udmVyc2lvbnMgZG8gbm90XG5hc3N1bWUgdGhhdCAiXCdcXDBcJyIgaXMgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMi43OiAiJWYiIGNvbnZlcnNpb25zIGZvciBudW1iZXJzIHdob3NlIGFic29sdXRlXG52YWx1ZSBpcyBvdmVyIDFlNTAgYXJlIG5vIGxvbmdlciByZXBsYWNlZCBieSAiJWciIGNvbnZlcnNpb25zLlxuXG5BZGRpdGlvbmFsIHN0cmluZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIGluIHN0YW5kYXJkIG1vZHVsZXMgInN0cmluZyJcbmFuZCAicmUiLlxuXG5cblhSYW5nZSBUeXBlXG49PT09PT09PT09PVxuXG5UaGUgInhyYW5nZSIgdHlwZSBpcyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugd2hpY2ggaXMgY29tbW9ubHkgdXNlZCBmb3Jcbmxvb3BpbmcuICBUaGUgYWR2YW50YWdlIG9mIHRoZSAieHJhbmdlIiB0eXBlIGlzIHRoYXQgYW4gInhyYW5nZSJcbm9iamVjdCB3aWxsIGFsd2F5cyB0YWtlIHRoZSBzYW1lIGFtb3VudCBvZiBtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZVxub2YgdGhlIHJhbmdlIGl0IHJlcHJlc2VudHMuICBUaGVyZSBhcmUgbm8gY29uc2lzdGVudCBwZXJmb3JtYW5jZVxuYWR2YW50YWdlcy5cblxuWFJhbmdlIG9iamVjdHMgaGF2ZSB2ZXJ5IGxpdHRsZSBiZWhhdmlvcjogdGhleSBvbmx5IHN1cHBvcnQgaW5kZXhpbmcsXG5pdGVyYXRpb24sIGFuZCB0aGUgImxlbigpIiBmdW5jdGlvbi5cblxuXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09XG5cbkxpc3QgYW5kICJieXRlYXJyYXkiIG9iamVjdHMgc3VwcG9ydCBhZGRpdGlvbmFsIG9wZXJhdGlvbnMgdGhhdCBhbGxvd1xuaW4tcGxhY2UgbW9kaWZpY2F0aW9uIG9mIHRoZSBvYmplY3QuIE90aGVyIG11dGFibGUgc2VxdWVuY2UgdHlwZXNcbih3aGVuIGFkZGVkIHRvIHRoZSBsYW5ndWFnZSkgc2hvdWxkIGFsc28gc3VwcG9ydCB0aGVzZSBvcGVyYXRpb25zLlxuU3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXM6IHN1Y2ggb2JqZWN0cyBjYW5ub3RcbmJlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkIG9uXG5tdXRhYmxlIHNlcXVlbmNlIHR5cGVzICh3aGVyZSAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCk6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSBbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlIGxpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tsZW4ocyk6bGVuKHMpXSA9IFt4XSIgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmV4dGVuZCh0KSIgb3IgInMgKz0gdCIgICAgICB8IGZvciB0aGUgbW9zdCBwYXJ0IHRoZSBzYW1lIGFzICAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSB0IiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzIGNvbnRlbnRzICAgIHwgKDExKSAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qIHRpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmNvdW50KHgpIiAgICAgICAgICAgICAgICAgICB8IHJldHVybiBudW1iZXIgb2YgKmkqXCdzIGZvciB3aGljaCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2ldID09IHgiICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5pbmRleCh4WywgaVssIGpdXSkiICAgICAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggdGhhdCAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2tdID09IHgiIGFuZCAiaSA8PSBrIDwgaiIgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6aV0gPSBbeF0iICAgICAgICAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAieCA9IHNbaV07IGRlbCBzW2ldOyAgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXR1cm4geCIgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAiZGVsIHNbcy5pbmRleCh4KV0iICAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogaW4gICAgIHwgKDcpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLnNvcnQoW2NtcFssIGtleVssICAgICAgICAgICB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiBwbGFjZSAgIHwgKDcpKDgpKDkpKDEwKSAgICAgICAgIHxcbnwgcmV2ZXJzZV1dXSkiICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGVzOlxuXG4xLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgIHJlcGxhY2luZy5cblxuMi4gVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIGhhcyBoaXN0b3JpY2FsbHkgYWNjZXB0ZWRcbiAgIG11bHRpcGxlIHBhcmFtZXRlcnMgYW5kIGltcGxpY2l0bHkgam9pbmVkIHRoZW0gaW50byBhIHR1cGxlOyB0aGlzXG4gICBubyBsb25nZXIgd29ya3MgaW4gUHl0aG9uIDIuMC4gIFVzZSBvZiB0aGlzIG1pc2ZlYXR1cmUgaGFzIGJlZW5cbiAgIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDEuNC5cblxuMy4gKnQqIGNhbiBiZSBhbnkgaXRlcmFibGUgb2JqZWN0LlxuXG40LiBSYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW4gYVxuICAgbmVnYXRpdmUgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBzZWNvbmQgb3IgdGhpcmQgcGFyYW1ldGVyIHRvIHRoZVxuICAgImluZGV4KCkiIG1ldGhvZCwgdGhlIGxpc3QgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy5cbiAgIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlXG4gICBpbmRpY2VzLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi4zOiBQcmV2aW91c2x5LCAiaW5kZXgoKSIgZGlkblwndCBoYXZlIGFyZ3VtZW50c1xuICAgZm9yIHNwZWNpZnlpbmcgc3RhcnQgYW5kIHN0b3AgcG9zaXRpb25zLlxuXG41LiBXaGVuIGEgbmVnYXRpdmUgaW5kZXggaXMgcGFzc2VkIGFzIHRoZSBmaXJzdCBwYXJhbWV0ZXIgdG8gdGhlXG4gICAiaW5zZXJ0KCkiIG1ldGhvZCwgdGhlIGxpc3QgbGVuZ3RoIGlzIGFkZGVkLCBhcyBmb3Igc2xpY2UgaW5kaWNlcy5cbiAgIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yIHNsaWNlXG4gICBpbmRpY2VzLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi4zOiBQcmV2aW91c2x5LCBhbGwgbmVnYXRpdmUgaW5kaWNlcyB3ZXJlXG4gICB0cnVuY2F0ZWQgdG8gemVyby5cblxuNi4gVGhlICJwb3AoKSIgbWV0aG9kXCdzIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzb1xuICAgdGhhdCBieSBkZWZhdWx0IHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG5cbjcuIFRoZSAic29ydCgpIiBhbmQgInJldmVyc2UoKSIgbWV0aG9kcyBtb2RpZnkgdGhlIGxpc3QgaW4gcGxhY2VcbiAgIGZvciBlY29ub215IG9mIHNwYWNlIHdoZW4gc29ydGluZyBvciByZXZlcnNpbmcgYSBsYXJnZSBsaXN0LiAgVG9cbiAgIHJlbWluZCB5b3UgdGhhdCB0aGV5IG9wZXJhdGUgYnkgc2lkZSBlZmZlY3QsIHRoZXkgZG9uXCd0IHJldHVybiB0aGVcbiAgIHNvcnRlZCBvciByZXZlcnNlZCBsaXN0LlxuXG44LiBUaGUgInNvcnQoKSIgbWV0aG9kIHRha2VzIG9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgY29udHJvbGxpbmcgdGhlXG4gICBjb21wYXJpc29ucy5cblxuICAgKmNtcCogc3BlY2lmaWVzIGEgY3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gb2YgdHdvIGFyZ3VtZW50cyAobGlzdFxuICAgaXRlbXMpIHdoaWNoIHNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSwgemVybyBvciBwb3NpdGl2ZSBudW1iZXJcbiAgIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBmaXJzdCBhcmd1bWVudCBpcyBjb25zaWRlcmVkIHNtYWxsZXIgdGhhbixcbiAgIGVxdWFsIHRvLCBvciBsYXJnZXIgdGhhbiB0aGUgc2Vjb25kIGFyZ3VtZW50OiAiY21wPWxhbWJkYSB4LHk6XG4gICBjbXAoeC5sb3dlcigpLCB5Lmxvd2VyKCkpIi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzICJOb25lIi5cblxuICAgKmtleSogc3BlY2lmaWVzIGEgZnVuY3Rpb24gb2Ygb25lIGFyZ3VtZW50IHRoYXQgaXMgdXNlZCB0byBleHRyYWN0XG4gICBhIGNvbXBhcmlzb24ga2V5IGZyb20gZWFjaCBsaXN0IGVsZW1lbnQ6ICJrZXk9c3RyLmxvd2VyIi4gIFRoZVxuICAgZGVmYXVsdCB2YWx1ZSBpcyAiTm9uZSIuXG5cbiAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gIlRydWUiLCB0aGVuIHRoZSBsaXN0XG4gICBlbGVtZW50cyBhcmUgc29ydGVkIGFzIGlmIGVhY2ggY29tcGFyaXNvbiB3ZXJlIHJldmVyc2VkLlxuXG4gICBJbiBnZW5lcmFsLCB0aGUgKmtleSogYW5kICpyZXZlcnNlKiBjb252ZXJzaW9uIHByb2Nlc3NlcyBhcmUgbXVjaFxuICAgZmFzdGVyIHRoYW4gc3BlY2lmeWluZyBhbiBlcXVpdmFsZW50ICpjbXAqIGZ1bmN0aW9uLiAgVGhpcyBpc1xuICAgYmVjYXVzZSAqY21wKiBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgZm9yIGVhY2ggbGlzdCBlbGVtZW50IHdoaWxlXG4gICAqa2V5KiBhbmQgKnJldmVyc2UqIHRvdWNoIGVhY2ggZWxlbWVudCBvbmx5IG9uY2UuICBVc2VcbiAgICJmdW5jdG9vbHMuY21wX3RvX2tleSgpIiB0byBjb252ZXJ0IGFuIG9sZC1zdHlsZSAqY21wKiBmdW5jdGlvbiB0b1xuICAgYSAqa2V5KiBmdW5jdGlvbi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogU3VwcG9ydCBmb3IgIk5vbmUiIGFzIGFuIGVxdWl2YWxlbnQgdG9cbiAgIG9taXR0aW5nICpjbXAqIHdhcyBhZGRlZC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgKmtleSogYW5kICpyZXZlcnNlKiB3YXMgYWRkZWQuXG5cbjkuIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDIuMywgdGhlICJzb3J0KCkiIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvXG4gICBiZSBzdGFibGUuICBBIHNvcnQgaXMgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGVcbiAgIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsXG4gICBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsXG4gICB0aGVuIGJ5IHNhbGFyeSBncmFkZSkuXG5cbjEwLiAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyBiZWluZ1xuICAgIHNvcnRlZCwgdGhlIGVmZmVjdCBvZiBhdHRlbXB0aW5nIHRvIG11dGF0ZSwgb3IgZXZlbiBpbnNwZWN0LCB0aGVcbiAgICBsaXN0IGlzIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiAyLjMgYW5kIG5ld2VyXG4gICAgbWFrZXMgdGhlIGxpc3QgYXBwZWFyIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXNcbiAgICAiVmFsdWVFcnJvciIgaWYgaXQgY2FuIGRldGVjdCB0aGF0IHRoZSBsaXN0IGhhcyBiZWVuIG11dGF0ZWRcbiAgICBkdXJpbmcgYSBzb3J0LlxuXG4xMS4gVGhlIHZhbHVlICpuKiBpcyBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3QgaW1wbGVtZW50aW5nXG4gICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgdGhlXG4gICAgc2VxdWVuY2UuICBJdGVtcyBpbiB0aGUgc2VxdWVuY2UgYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlXG4gICAgcmVmZXJlbmNlZCBtdWx0aXBsZSB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyIFNlcXVlbmNlXG4gICAgVHlwZXMgLS0tIHN0ciwgdW5pY29kZSwgbGlzdCwgdHVwbGUsIGJ5dGVhcnJheSwgYnVmZmVyLCB4cmFuZ2UuXG4nLAotICd0eXBlc3NlcS1tdXRhYmxlJzogdSdcbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbioqKioqKioqKioqKioqKioqKioqKipcblxuTGlzdCBhbmQgImJ5dGVhcnJheSIgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0IGFsbG93XG5pbi1wbGFjZSBtb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gT3RoZXIgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlc1xuKHdoZW4gYWRkZWQgdG8gdGhlIGxhbmd1YWdlKSBzaG91bGQgYWxzbyBzdXBwb3J0IHRoZXNlIG9wZXJhdGlvbnMuXG5TdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczogc3VjaCBvYmplY3RzIGNhbm5vdFxuYmUgbW9kaWZpZWQgb25jZSBjcmVhdGVkLiBUaGUgZm9sbG93aW5nIG9wZXJhdGlvbnMgYXJlIGRlZmluZWQgb25cbm11dGFibGUgc2VxdWVuY2UgdHlwZXMgKHdoZXJlICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0KTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgInNbaTpqXSA9IFtdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAic1tpOmo6a10gPSB0IiAgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgInNbaTpqOmtdIiBhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2xlbihzKTpsZW4ocyldID0gW3hdIiB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZm9yIHRoZSBtb3N0IHBhcnQgdGhlIHNhbWUgYXMgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9IHQiICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMgKj0gbiIgICAgICAgICAgICAgICAgICAgICAgIHwgdXBkYXRlcyAqcyogd2l0aCBpdHMgY29udGVudHMgICAgfCAoMTEpICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBlYXRlZCAqbiogdGltZXMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuY291bnQoeCkiICAgICAgICAgICAgICAgICAgIHwgcmV0dXJuIG51bWJlciBvZiAqaSpcJ3MgZm9yIHdoaWNoIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbaV0gPT0geCIgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmluZGV4KHhbLCBpWywgal1dKSIgICAgICAgICB8IHJldHVybiBzbWFsbGVzdCAqayogc3VjaCB0aGF0ICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNba10gPT0geCIgYW5kICJpIDw9IGsgPCBqIiAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IHNhbWUgYXMgInNbaTppXSA9IFt4XSIgICAgICAgICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5wb3AoW2ldKSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJ4ID0gc1tpXTsgZGVsIHNbaV07ICAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJldHVybiB4IiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJkZWwgc1tzLmluZGV4KHgpXSIgICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuc29ydChbY21wWywga2V5WywgICAgICAgICAgIHwgc29ydCB0aGUgaXRlbXMgb2YgKnMqIGluIHBsYWNlICAgfCAoNykoOCkoOSkoMTApICAgICAgICAgfFxufCByZXZlcnNlXV1dKSIgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyAgcmVwbGFjaW5nLlxuXG4yLiBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gaGFzIGhpc3RvcmljYWxseSBhY2NlcHRlZFxuICAgbXVsdGlwbGUgcGFyYW1ldGVycyBhbmQgaW1wbGljaXRseSBqb2luZWQgdGhlbSBpbnRvIGEgdHVwbGU7IHRoaXNcbiAgIG5vIGxvbmdlciB3b3JrcyBpbiBQeXRob24gMi4wLiAgVXNlIG9mIHRoaXMgbWlzZmVhdHVyZSBoYXMgYmVlblxuICAgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMS40LlxuXG4zLiAqdCogY2FuIGJlIGFueSBpdGVyYWJsZSBvYmplY3QuXG5cbjQuIFJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhXG4gICBuZWdhdGl2ZSBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCBwYXJhbWV0ZXIgdG8gdGhlXG4gICAiaW5kZXgoKSIgbWV0aG9kLCB0aGUgbGlzdCBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLlxuICAgSWYgaXQgaXMgc3RpbGwgbmVnYXRpdmUsIGl0IGlzIHRydW5jYXRlZCB0byB6ZXJvLCBhcyBmb3Igc2xpY2VcbiAgIGluZGljZXMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFByZXZpb3VzbHksICJpbmRleCgpIiBkaWRuXCd0IGhhdmUgYXJndW1lbnRzXG4gICBmb3Igc3BlY2lmeWluZyBzdGFydCBhbmQgc3RvcCBwb3NpdGlvbnMuXG5cbjUuIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlciB0byB0aGVcbiAgICJpbnNlcnQoKSIgbWV0aG9kLCB0aGUgbGlzdCBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSBpbmRpY2VzLlxuICAgSWYgaXQgaXMgc3RpbGwgbmVnYXRpdmUsIGl0IGlzIHRydW5jYXRlZCB0byB6ZXJvLCBhcyBmb3Igc2xpY2VcbiAgIGluZGljZXMuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFByZXZpb3VzbHksIGFsbCBuZWdhdGl2ZSBpbmRpY2VzIHdlcmVcbiAgIHRydW5jYXRlZCB0byB6ZXJvLlxuXG42LiBUaGUgInBvcCgpIiBtZXRob2RcJ3Mgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvXG4gICB0aGF0IGJ5IGRlZmF1bHQgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cblxuNy4gVGhlICJzb3J0KCkiIGFuZCAicmV2ZXJzZSgpIiBtZXRob2RzIG1vZGlmeSB0aGUgbGlzdCBpbiBwbGFjZVxuICAgZm9yIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiBzb3J0aW5nIG9yIHJldmVyc2luZyBhIGxhcmdlIGxpc3QuICBUb1xuICAgcmVtaW5kIHlvdSB0aGF0IHRoZXkgb3BlcmF0ZSBieSBzaWRlIGVmZmVjdCwgdGhleSBkb25cJ3QgcmV0dXJuIHRoZVxuICAgc29ydGVkIG9yIHJldmVyc2VkIGxpc3QuXG5cbjguIFRoZSAic29ydCgpIiBtZXRob2QgdGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzIGZvciBjb250cm9sbGluZyB0aGVcbiAgIGNvbXBhcmlzb25zLlxuXG4gICAqY21wKiBzcGVjaWZpZXMgYSBjdXN0b20gY29tcGFyaXNvbiBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzIChsaXN0XG4gICBpdGVtcykgd2hpY2ggc2hvdWxkIHJldHVybiBhIG5lZ2F0aXZlLCB6ZXJvIG9yIHBvc2l0aXZlIG51bWJlclxuICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGNvbnNpZGVyZWQgc21hbGxlciB0aGFuLFxuICAgZXF1YWwgdG8sIG9yIGxhcmdlciB0aGFuIHRoZSBzZWNvbmQgYXJndW1lbnQ6ICJjbXA9bGFtYmRhIHgseTpcbiAgIGNtcCh4Lmxvd2VyKCksIHkubG93ZXIoKSkiLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgIk5vbmUiLlxuXG4gICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvIGV4dHJhY3RcbiAgIGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudDogImtleT1zdHIubG93ZXIiLiAgVGhlXG4gICBkZWZhdWx0IHZhbHVlIGlzICJOb25lIi5cblxuICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byAiVHJ1ZSIsIHRoZW4gdGhlIGxpc3RcbiAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgIEluIGdlbmVyYWwsIHRoZSAqa2V5KiBhbmQgKnJldmVyc2UqIGNvbnZlcnNpb24gcHJvY2Vzc2VzIGFyZSBtdWNoXG4gICBmYXN0ZXIgdGhhbiBzcGVjaWZ5aW5nIGFuIGVxdWl2YWxlbnQgKmNtcCogZnVuY3Rpb24uICBUaGlzIGlzXG4gICBiZWNhdXNlICpjbXAqIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBmb3IgZWFjaCBsaXN0IGVsZW1lbnQgd2hpbGVcbiAgICprZXkqIGFuZCAqcmV2ZXJzZSogdG91Y2ggZWFjaCBlbGVtZW50IG9ubHkgb25jZS4gIFVzZVxuICAgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHRvIGNvbnZlcnQgYW4gb2xkLXN0eWxlICpjbXAqIGZ1bmN0aW9uIHRvXG4gICBhICprZXkqIGZ1bmN0aW9uLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi4zOiBTdXBwb3J0IGZvciAiTm9uZSIgYXMgYW4gZXF1aXZhbGVudCB0b1xuICAgb21pdHRpbmcgKmNtcCogd2FzIGFkZGVkLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMi40OiBTdXBwb3J0IGZvciAqa2V5KiBhbmQgKnJldmVyc2UqIHdhcyBhZGRlZC5cblxuOS4gU3RhcnRpbmcgd2l0aCBQeXRob24gMi4zLCB0aGUgInNvcnQoKSIgbWV0aG9kIGlzIGd1YXJhbnRlZWQgdG9cbiAgIGJlIHN0YWJsZS4gIEEgc29ydCBpcyBzdGFibGUgaWYgaXQgZ3VhcmFudGVlcyBub3QgdG8gY2hhbmdlIHRoZVxuICAgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdCBjb21wYXJlIGVxdWFsIC0tLSB0aGlzIGlzIGhlbHBmdWxcbiAgIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3NlcyAoZm9yIGV4YW1wbGUsIHNvcnQgYnkgZGVwYXJ0bWVudCxcbiAgIHRoZW4gYnkgc2FsYXJ5IGdyYWRlKS5cblxuMTAuICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nXG4gICAgc29ydGVkLCB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuIGluc3BlY3QsIHRoZVxuICAgIGxpc3QgaXMgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIDIuMyBhbmQgbmV3ZXJcbiAgICBtYWtlcyB0aGUgbGlzdCBhcHBlYXIgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlc1xuICAgICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZFxuICAgIGR1cmluZyBhIHNvcnQuXG5cbjExLiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCBpbXBsZW1lbnRpbmdcbiAgICAiX19pbmRleF9fKCkiLiAgWmVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIG9mICpuKiBjbGVhciB0aGVcbiAgICBzZXF1ZW5jZS4gIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmVcbiAgICByZWZlcmVuY2VkIG11bHRpcGxlIHRpbWVzLCBhcyBleHBsYWluZWQgZm9yICJzICogbiIgdW5kZXIgU2VxdWVuY2VcbiAgICBUeXBlcyAtLS0gc3RyLCB1bmljb2RlLCBsaXN0LCB0dXBsZSwgYnl0ZWFycmF5LCBidWZmZXIsIHhyYW5nZS5cbicsCi0gJ3VuYXJ5JzogdSdcblVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkFsbCB1bmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eTpcblxuICAgdV9leHByIDo6PSBwb3dlciB8ICItIiB1X2V4cHIgfCAiKyIgdV9leHByIHwgIn4iIHVfZXhwclxuXG5UaGUgdW5hcnkgIi0iIChtaW51cykgb3BlcmF0b3IgeWllbGRzIHRoZSBuZWdhdGlvbiBvZiBpdHMgbnVtZXJpY1xuYXJndW1lbnQuXG5cblRoZSB1bmFyeSAiKyIgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCB1bmNoYW5nZWQuXG5cblRoZSB1bmFyeSAifiIgKGludmVydCkgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiBpdHNcbnBsYWluIG9yIGxvbmcgaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAieCIgaXNcbmRlZmluZWQgYXMgIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cblxuSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsIGFcbiJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nLAotICd3aGlsZSc6IHUnXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyBiYWNrXG50byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKLSAnd2l0aCc6IHUnXG5UaGUgIndpdGgiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuTmV3IGluIHZlcnNpb24gMi41LlxuXG5UaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gV2l0aCBTdGF0ZW1lbnRcbkNvbnRleHQgTWFuYWdlcnMpLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxudXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuXG4gICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbiAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG5cblRoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG5mb2xsb3dzOlxuXG4xLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4gICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuXG4yLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cblxuMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuXG40LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbiAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cblxuICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4gICAgIG1ldGhvZCByZXR1cm5zIHdpdGhvdXQgYW4gZXJyb3IsIHRoZW4gIl9fZXhpdF9fKCkiIHdpbGwgYWx3YXlzIGJlXG4gICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbiAgICAgdGFyZ2V0IGxpc3QsIGl0IHdpbGwgYmUgdHJlYXRlZCB0aGUgc2FtZSBhcyBhbiBlcnJvciBvY2N1cnJpbmdcbiAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cblxuNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuXG42LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgdGhyZWVcbiAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgcmVyYWlzZWQuXG4gICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbiAgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbk5vdGU6IEluIFB5dGhvbiAyLjUsIHRoZSAid2l0aCIgc3RhdGVtZW50IGlzIG9ubHkgYWxsb3dlZCB3aGVuIHRoZVxuICAid2l0aF9zdGF0ZW1lbnQiIGZlYXR1cmUgaGFzIGJlZW4gZW5hYmxlZC4gIEl0IGlzIGFsd2F5cyBlbmFibGVkIGluXG4gIFB5dGhvbiAyLjYuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAyLjc6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOlxuXG4gICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuJywKLSAneWllbGQnOiB1J1xuVGhlICJ5aWVsZCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuICAgeWllbGRfc3RtdCA6Oj0geWllbGRfZXhwcmVzc2lvblxuXG5UaGUgInlpZWxkIiBzdGF0ZW1lbnQgaXMgb25seSB1c2VkIHdoZW4gZGVmaW5pbmcgYSBnZW5lcmF0b3IgZnVuY3Rpb24sXG5hbmQgaXMgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSBnZW5lcmF0b3IgZnVuY3Rpb24uIFVzaW5nIGFcbiJ5aWVsZCIgc3RhdGVtZW50IGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvIGNhdXNlIHRoYXRcbmRlZmluaXRpb24gdG8gY3JlYXRlIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGluc3RlYWQgb2YgYSBub3JtYWxcbmZ1bmN0aW9uLlxuXG5XaGVuIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGNhbGxlZCwgaXQgcmV0dXJucyBhbiBpdGVyYXRvciBrbm93biBhcyBhXG5nZW5lcmF0b3IgaXRlcmF0b3IsIG9yIG1vcmUgY29tbW9ubHksIGEgZ2VuZXJhdG9yLiAgVGhlIGJvZHkgb2YgdGhlXG5nZW5lcmF0b3IgZnVuY3Rpb24gaXMgZXhlY3V0ZWQgYnkgY2FsbGluZyB0aGUgZ2VuZXJhdG9yXCdzICJuZXh0KCkiXG5tZXRob2QgcmVwZWF0ZWRseSB1bnRpbCBpdCByYWlzZXMgYW4gZXhjZXB0aW9uLlxuXG5XaGVuIGEgInlpZWxkIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQsIHRoZSBzdGF0ZSBvZiB0aGUgZ2VuZXJhdG9yIGlzXG5mcm96ZW4gYW5kIHRoZSB2YWx1ZSBvZiAiZXhwcmVzc2lvbl9saXN0IiBpcyByZXR1cm5lZCB0byAibmV4dCgpIlwnc1xuY2FsbGVyLiAgQnkgImZyb3plbiIgd2UgbWVhbiB0aGF0IGFsbCBsb2NhbCBzdGF0ZSBpcyByZXRhaW5lZCxcbmluY2x1ZGluZyB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiBsb2NhbCB2YXJpYWJsZXMsIHRoZSBpbnN0cnVjdGlvblxucG9pbnRlciwgYW5kIHRoZSBpbnRlcm5hbCBldmFsdWF0aW9uIHN0YWNrOiBlbm91Z2ggaW5mb3JtYXRpb24gaXNcbnNhdmVkIHNvIHRoYXQgdGhlIG5leHQgdGltZSAibmV4dCgpIiBpcyBpbnZva2VkLCB0aGUgZnVuY3Rpb24gY2FuXG5wcm9jZWVkIGV4YWN0bHkgYXMgaWYgdGhlICJ5aWVsZCIgc3RhdGVtZW50IHdlcmUganVzdCBhbm90aGVyIGV4dGVybmFsXG5jYWxsLlxuXG5BcyBvZiBQeXRob24gdmVyc2lvbiAyLjUsIHRoZSAieWllbGQiIHN0YXRlbWVudCBpcyBub3cgYWxsb3dlZCBpbiB0aGVcbiJ0cnkiIGNsYXVzZSBvZiBhICJ0cnkiIC4uLiAgImZpbmFsbHkiIGNvbnN0cnVjdC4gIElmIHRoZSBnZW5lcmF0b3IgaXNcbm5vdCByZXN1bWVkIGJlZm9yZSBpdCBpcyBmaW5hbGl6ZWQgKGJ5IHJlYWNoaW5nIGEgemVybyByZWZlcmVuY2UgY291bnRcbm9yIGJ5IGJlaW5nIGdhcmJhZ2UgY29sbGVjdGVkKSwgdGhlIGdlbmVyYXRvci1pdGVyYXRvclwncyAiY2xvc2UoKSJcbm1ldGhvZCB3aWxsIGJlIGNhbGxlZCwgYWxsb3dpbmcgYW55IHBlbmRpbmcgImZpbmFsbHkiIGNsYXVzZXMgdG9cbmV4ZWN1dGUuXG5cbkZvciBmdWxsIGRldGFpbHMgb2YgInlpZWxkIiBzZW1hbnRpY3MsIHJlZmVyIHRvIHRoZSBZaWVsZCBleHByZXNzaW9uc1xuc2VjdGlvbi5cblxuTm90ZTogSW4gUHl0aG9uIDIuMiwgdGhlICJ5aWVsZCIgc3RhdGVtZW50IHdhcyBvbmx5IGFsbG93ZWQgd2hlbiB0aGVcbiAgImdlbmVyYXRvcnMiIGZlYXR1cmUgaGFzIGJlZW4gZW5hYmxlZC4gIFRoaXMgIl9fZnV0dXJlX18iIGltcG9ydFxuICBzdGF0ZW1lbnQgd2FzIHVzZWQgdG8gZW5hYmxlIHRoZSBmZWF0dXJlOlxuXG4gICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZ2VuZXJhdG9yc1xuXG5TZWUgYWxzbzpcblxuICAqKlBFUCAyNTUqKiAtIFNpbXBsZSBHZW5lcmF0b3JzXG4gICAgIFRoZSBwcm9wb3NhbCBmb3IgYWRkaW5nIGdlbmVyYXRvcnMgYW5kIHRoZSAieWllbGQiIHN0YXRlbWVudCB0b1xuICAgICBQeXRob24uXG5cbiAgKipQRVAgMzQyKiogLSBDb3JvdXRpbmVzIHZpYSBFbmhhbmNlZCBHZW5lcmF0b3JzXG4gICAgIFRoZSBwcm9wb3NhbCB0aGF0LCBhbW9uZyBvdGhlciBnZW5lcmF0b3IgZW5oYW5jZW1lbnRzLCBwcm9wb3NlZFxuICAgICBhbGxvd2luZyAieWllbGQiIHRvIGFwcGVhciBpbnNpZGUgYSAidHJ5IiAuLi4gImZpbmFsbHkiIGJsb2NrLlxuJ30KKyMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gU2F0IEF1ZyAyNiAxMToxNjoyOCAyMDE3Cit0b3BpY3MgPSB7J2Fzc2VydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiYXNzZXJ0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQXNzZXJ0IHN0YXRlbWVudHMgYXJlIGEgY29udmVuaWVudCB3YXkgdG8gaW5zZXJ0IGRlYnVnZ2luZyAnCisgICAgICAgICAgICdhc3NlcnRpb25zXG4nCisgICAgICAgICAgICdpbnRvIGEgcHJvZ3JhbTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgYXNzZXJ0X3N0bXQgOjo9ICJhc3NlcnQiIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgc2ltcGxlIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbiIsIGlzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaWYgX19kZWJ1Z19fOlxuJworICAgICAgICAgICAnICAgICAgIGlmIG5vdCBleHByZXNzaW9uOiByYWlzZSBBc3NlcnRpb25FcnJvclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZXh0ZW5kZWQgZm9ybSwgImFzc2VydCBleHByZXNzaW9uMSwgZXhwcmVzc2lvbjIiLCBpcyAnCisgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGlmIF9fZGVidWdfXzpcbicKKyAgICAgICAgICAgJyAgICAgICBpZiBub3QgZXhwcmVzc2lvbjE6IHJhaXNlIEFzc2VydGlvbkVycm9yKGV4cHJlc3Npb24yKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGVzZSBlcXVpdmFsZW5jZXMgYXNzdW1lIHRoYXQgIl9fZGVidWdfXyIgYW5kICJBc3NlcnRpb25FcnJvciIgJworICAgICAgICAgICAncmVmZXJcbicKKyAgICAgICAgICAgJ3RvIHRoZSBidWlsdC1pbiB2YXJpYWJsZXMgd2l0aCB0aG9zZSBuYW1lcy4gIEluIHRoZSBjdXJyZW50XG4nCisgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgdGhlIGJ1aWx0LWluIHZhcmlhYmxlICJfX2RlYnVnX18iIGlzICJUcnVlIiB1bmRlclxuJworICAgICAgICAgICAnbm9ybWFsIGNpcmN1bXN0YW5jZXMsICJGYWxzZSIgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgJyhjb21tYW5kXG4nCisgICAgICAgICAgICdsaW5lIG9wdGlvbiAtTykuICBUaGUgY3VycmVudCBjb2RlIGdlbmVyYXRvciBlbWl0cyBubyBjb2RlIGZvciBhblxuJworICAgICAgICAgICAnYXNzZXJ0IHN0YXRlbWVudCB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgYXQgY29tcGlsZSB0aW1lLiAgJworICAgICAgICAgICAnTm90ZVxuJworICAgICAgICAgICAndGhhdCBpdCBpcyB1bm5lY2Vzc2FyeSB0byBpbmNsdWRlIHRoZSBzb3VyY2UgY29kZSBmb3IgdGhlICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgJ3RoYXQgZmFpbGVkIGluIHRoZSBlcnJvciBtZXNzYWdlOyBpdCB3aWxsIGJlIGRpc3BsYXllZCBhcyBwYXJ0IG9mICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc3RhY2sgdHJhY2UuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Fzc2lnbm1lbnRzIHRvICJfX2RlYnVnX18iIGFyZSBpbGxlZ2FsLiAgVGhlIHZhbHVlIGZvciB0aGUgJworICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRldGVybWluZWQgd2hlbiB0aGUgaW50ZXJwcmV0ZXIgc3RhcnRzLlxuJywKKyAnYXNzaWdubWVudCc6ICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IHN0YXRlbWVudHMgYXJlIHVzZWQgdG8gKHJlKWJpbmQgbmFtZXMgdG8gdmFsdWVzIGFuZCAnCisgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICdtb2RpZnkgYXR0cmlidXRlcyBvciBpdGVtcyBvZiBtdXRhYmxlIG9iamVjdHM6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKGV4cHJlc3Npb25fbGlzdCB8ICcKKyAgICAgICAgICAgICAgICd5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIHRhcmdldF9saXN0ICAgICA6Oj0gdGFyZ2V0ICgiLCIgdGFyZ2V0KSogWyIsIl1cbicKKyAgICAgICAgICAgICAgICcgICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIigiIHRhcmdldF9saXN0ICIpIlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCAiWyIgW3RhcmdldF9saXN0XSAiXSJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgYXR0cmlidXRlcmVmXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IHN1YnNjcmlwdGlvblxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBzbGljaW5nXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKFNlZSBzZWN0aW9uIFByaW1hcmllcyBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgJworICAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICAnc3ltYm9scy4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAgICAgJyhyZW1lbWJlciB0aGF0XG4nCisgICAgICAgICAgICAgICAndGhpcyBjYW4gYmUgYSBzaW5nbGUgZXhwcmVzc2lvbiBvciBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCB0aGUgJworICAgICAgICAgICAgICAgJ2xhdHRlclxuJworICAgICAgICAgICAgICAgJ3lpZWxkaW5nIGEgdHVwbGUpIGFuZCBhc3NpZ25zIHRoZSBzaW5nbGUgcmVzdWx0aW5nIG9iamVjdCB0byAnCisgICAgICAgICAgICAgICAnZWFjaCBvZlxuJworICAgICAgICAgICAgICAgJ3RoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IGlzIGRlZmluZWQgcmVjdXJzaXZlbHkgZGVwZW5kaW5nIG9uIHRoZSBmb3JtIG9mIHRoZSAnCisgICAgICAgICAgICAgICAndGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnKGxpc3QpLiBXaGVuIGEgdGFyZ2V0IGlzIHBhcnQgb2YgYSBtdXRhYmxlIG9iamVjdCAoYW4gJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxuJworICAgICAgICAgICAgICAgJ3VsdGltYXRlbHkgcGVyZm9ybSB0aGUgYXNzaWdubWVudCBhbmQgZGVjaWRlIGFib3V0IGl0cyAnCisgICAgICAgICAgICAgICAndmFsaWRpdHksIGFuZFxuJworICAgICAgICAgICAgICAgJ21heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlICcKKyAgICAgICAgICAgICAgICdydWxlc1xuJworICAgICAgICAgICAgICAgJ29ic2VydmVkIGJ5IHZhcmlvdXMgdHlwZXMgYW5kIHRoZSBleGNlcHRpb25zIHJhaXNlZCBhcmUgZ2l2ZW4gJworICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiB0aGUgb2JqZWN0IHR5cGVzIChzZWUgc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZVxuJworICAgICAgICAgICAgICAgJ2hpZXJhcmNoeSkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXNzaWdubWVudCBvZiBhbiBvYmplY3QgdG8gYSB0YXJnZXQgbGlzdCBpcyByZWN1cnNpdmVseSAnCisgICAgICAgICAgICAgICAnZGVmaW5lZCBhc1xuJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBzaW5nbGUgdGFyZ2V0OiBUaGUgb2JqZWN0IGlzICcKKyAgICAgICAgICAgICAgICdhc3NpZ25lZCB0b1xuJworICAgICAgICAgICAgICAgJyAgdGhhdCB0YXJnZXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzOiAnCisgICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICAnICBvYmplY3QgbXVzdCBiZSBhbiBpdGVyYWJsZSB3aXRoIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyBhcyAnCisgICAgICAgICAgICAgICAndGhlcmVcbicKKyAgICAgICAgICAgICAgICcgIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSBpdGVtcyBhcmUgYXNzaWduZWQsICcKKyAgICAgICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgICAgICAnICBsZWZ0IHRvIHJpZ2h0LCB0byB0aGUgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fzc2lnbm1lbnQgb2YgYW4gb2JqZWN0IHRvIGEgc2luZ2xlIHRhcmdldCBpcyByZWN1cnNpdmVseSAnCisgICAgICAgICAgICAgICAnZGVmaW5lZCBhc1xuJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBJZiB0aGUgbmFtZSBkb2VzIG5vdCBvY2N1ciBpbiBhICJnbG9iYWwiIHN0YXRlbWVudCBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgY3VycmVudCBjb2RlIGJsb2NrOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0IGluIHRoZSAnCisgICAgICAgICAgICAgICAnY3VycmVudFxuJworICAgICAgICAgICAgICAgJyAgICBsb2NhbCBuYW1lc3BhY2UuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICAgICAnICAgIG5hbWVzcGFjZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoZSBuYW1lIGlzIHJlYm91bmQgaWYgaXQgd2FzIGFscmVhZHkgYm91bmQuICBUaGlzIG1heSBjYXVzZSAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgbmFtZSAnCisgICAgICAgICAgICAgICAndG8gcmVhY2hcbicKKyAgICAgICAgICAgICAgICcgIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzICcKKyAgICAgICAgICAgICAgICdkZXN0cnVjdG9yIChpZiBpdFxuJworICAgICAgICAgICAgICAgJyAgaGFzIG9uZSkgdG8gYmUgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhIHRhcmdldCBsaXN0IGVuY2xvc2VkIGluIHBhcmVudGhlc2VzIG9yICcKKyAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgJyAgc3F1YXJlIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgJworICAgICAgICAgICAgICAgJ3NhbWUgbnVtYmVyXG4nCisgICAgICAgICAgICAgICAnICBvZiBpdGVtcyBhcyB0aGVyZSBhcmUgdGFyZ2V0cyBpbiB0aGUgdGFyZ2V0IGxpc3QsIGFuZCBpdHMgJworICAgICAgICAgICAgICAgJ2l0ZW1zIGFyZVxuJworICAgICAgICAgICAgICAgJyAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYW4gYXR0cmlidXRlIHJlZmVyZW5jZTogVGhlIHByaW1hcnkgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaW5cbicKKyAgICAgICAgICAgICAgICcgIHRoZSByZWZlcmVuY2UgaXMgZXZhbHVhdGVkLiAgSXQgc2hvdWxkIHlpZWxkIGFuIG9iamVjdCB3aXRoXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25hYmxlIGF0dHJpYnV0ZXM7IGlmIHRoaXMgaXMgbm90IHRoZSBjYXNlLCAiVHlwZUVycm9yIiAnCisgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICcgIHJhaXNlZC4gIFRoYXQgb2JqZWN0IGlzIHRoZW4gYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCAnCisgICAgICAgICAgICAgICAnb2JqZWN0IHRvXG4nCisgICAgICAgICAgICAgICAnICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgJworICAgICAgICAgICAgICAgJ3JhaXNlc1xuJworICAgICAgICAgICAgICAgJyAgYW4gZXhjZXB0aW9uICh1c3VhbGx5IGJ1dCBub3QgbmVjZXNzYXJpbHkgJworICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgTm90ZTogSWYgdGhlIG9iamVjdCBpcyBhIGNsYXNzIGluc3RhbmNlIGFuZCB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9jY3VycyBvbiBib3RoIHNpZGVzIG9mIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCB0aGUgUkhTICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uLFxuJworICAgICAgICAgICAgICAgJyAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyAnCisgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBleGlzdHMpIGEgY2xhc3MgYXR0cmlidXRlLiAgVGhlIExIUyB0YXJnZXQgImEueCIgJworICAgICAgICAgICAgICAgJ2lzIGFsd2F5c1xuJworICAgICAgICAgICAgICAgJyAgc2V0IGFzIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSwgY3JlYXRpbmcgaXQgaWYgbmVjZXNzYXJ5LiAgJworICAgICAgICAgICAgICAgJ1RodXMsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgJworICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZTogaWYgdGhlIFJIUyBleHByZXNzaW9uIHJlZmVycyB0byBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIHRoZVxuJworICAgICAgICAgICAgICAgJyAgTEhTIGNyZWF0ZXMgYSBuZXcgaW5zdGFuY2UgYXR0cmlidXRlIGFzIHRoZSB0YXJnZXQgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAnICBhc3NpZ25tZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgICAgY2xhc3MgQ2xzOlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgIHggPSAzICAgICAgICAgICAgICMgY2xhc3MgdmFyaWFibGVcbicKKyAgICAgICAgICAgICAgICcgICAgIGluc3QgPSBDbHMoKVxuJworICAgICAgICAgICAgICAgJyAgICAgaW5zdC54ID0gaW5zdC54ICsgMSAgICMgd3JpdGVzIGluc3QueCBhcyA0IGxlYXZpbmcgQ2xzLnggJworICAgICAgICAgICAgICAgJ2FzIDNcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoaXMgZGVzY3JpcHRpb24gZG9lcyBub3QgbmVjZXNzYXJpbHkgYXBwbHkgdG8gZGVzY3JpcHRvclxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGNyZWF0ZWQgd2l0aCAicHJvcGVydHkoKSIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc3Vic2NyaXB0aW9uOiBUaGUgcHJpbWFyeSBleHByZXNzaW9uIGluICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICcgIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpIG9yIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICAgICAnZGljdGlvbmFyeSkuXG4nCisgICAgICAgICAgICAgICAnICBOZXh0LCB0aGUgc3Vic2NyaXB0IGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgICAgICdsaXN0KSwgdGhlXG4nCisgICAgICAgICAgICAgICAnICBzdWJzY3JpcHQgbXVzdCB5aWVsZCBhIHBsYWluIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgIiAgc2VxdWVuY2UncyBsZW5ndGggaXMgYWRkZWQgdG8gaXQuIFRoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCAiCisgICAgICAgICAgICAgICAnYmUgYVxuJworICAgICAgICAgICAgICAgIiAgbm9ubmVnYXRpdmUgaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNlcXVlbmNlJ3MgbGVuZ3RoLCBhbmQgIgorICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgc2VxdWVuY2UgaXMgYXNrZWQgdG8gYXNzaWduIHRoZSBhc3NpZ25lZCBvYmplY3QgdG8gaXRzIGl0ZW0gJworICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICcgIHRoYXQgaW5kZXguICBJZiB0aGUgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCAiSW5kZXhFcnJvciIgaXMgJworICAgICAgICAgICAgICAgJ3JhaXNlZFxuJworICAgICAgICAgICAgICAgJyAgKGFzc2lnbm1lbnQgdG8gYSBzdWJzY3JpcHRlZCBzZXF1ZW5jZSBjYW5ub3QgYWRkIG5ldyBpdGVtcyAnCisgICAgICAgICAgICAgICAndG8gYVxuJworICAgICAgICAgICAgICAgJyAgbGlzdCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHN1YnNjcmlwdCBtdXN0IGhhdmUgYSB0eXBlIGNvbXBhdGlibGUgd2l0aCB0aGUgbWFwcGluZydzIGtleSAiCisgICAgICAgICAgICAgICAndHlwZSxcbicKKyAgICAgICAgICAgICAgICcgIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyICcKKyAgICAgICAgICAgICAgICd3aGljaCBtYXBzXG4nCisgICAgICAgICAgICAgICAnICB0aGUgc3Vic2NyaXB0IHRvIHRoZSBhc3NpZ25lZCBvYmplY3QuICBUaGlzIGNhbiBlaXRoZXIgJworICAgICAgICAgICAgICAgJ3JlcGxhY2UgYW5cbicKKyAgICAgICAgICAgICAgICcgIGV4aXN0aW5nIGtleS92YWx1ZSBwYWlyIHdpdGggdGhlIHNhbWUga2V5IHZhbHVlLCBvciBpbnNlcnQgYSAnCisgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAnICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYSBtdXRhYmxlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAgICcgIChzdWNoIGFzIGEgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAgICcgIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9ucyBhcmVcbicKKyAgICAgICAgICAgICAgICcgIGV2YWx1YXRlZCwgaW5zb2ZhciB0aGV5IGFyZSBwcmVzZW50OyBkZWZhdWx0cyBhcmUgemVybyBhbmQgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgIiAgc2VxdWVuY2UncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byAoc21hbGwpICIKKyAgICAgICAgICAgICAgICdpbnRlZ2Vycy5cbicKKyAgICAgICAgICAgICAgICIgIElmIGVpdGhlciBib3VuZCBpcyBuZWdhdGl2ZSwgdGhlIHNlcXVlbmNlJ3MgbGVuZ3RoIGlzIGFkZGVkICIKKyAgICAgICAgICAgICAgICd0byBpdC5cbicKKyAgICAgICAgICAgICAgICcgIFRoZSByZXN1bHRpbmcgYm91bmRzIGFyZSBjbGlwcGVkIHRvIGxpZSBiZXR3ZWVuIHplcm8gYW5kICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICIgIHNlcXVlbmNlJ3MgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0ICIKKyAgICAgICAgICAgICAgICdpcyBhc2tlZFxuJworICAgICAgICAgICAgICAgJyAgdG8gcmVwbGFjZSB0aGUgc2xpY2Ugd2l0aCB0aGUgaXRlbXMgb2YgdGhlIGFzc2lnbmVkICcKKyAgICAgICAgICAgICAgICdzZXF1ZW5jZS4gIFRoZVxuJworICAgICAgICAgICAgICAgJyAgbGVuZ3RoIG9mIHRoZSBzbGljZSBtYXkgYmUgZGlmZmVyZW50IGZyb20gdGhlIGxlbmd0aCBvZiB0aGUgJworICAgICAgICAgICAgICAgJ2Fzc2lnbmVkXG4nCisgICAgICAgICAgICAgICAnICBzZXF1ZW5jZSwgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsICcKKyAgICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAgICcgIG9iamVjdCBhbGxvd3MgaXQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHRoZVxuJworICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgZXhwcmVzc2lvbnMsICcKKyAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICdpbnZhbGlkIHN5bnRheCBpcyByZWplY3RlZCBkdXJpbmcgdGhlIGNvZGUgZ2VuZXJhdGlvbiBwaGFzZSwgJworICAgICAgICAgICAgICAgJ2NhdXNpbmdcbicKKyAgICAgICAgICAgICAgICdsZXNzIGRldGFpbGVkIGVycm9yIG1lc3NhZ2VzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1dBUk5JTkc6IEFsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0ICcKKyAgICAgICAgICAgICAgICdvdmVybGFwc1xuJworICAgICAgICAgICAgICAgImJldHdlZW4gdGhlIGxlZnQtaGFuZCBzaWRlIGFuZCB0aGUgcmlnaHQtaGFuZCBzaWRlIGFyZSAnc2FmZScgIgorICAgICAgICAgICAgICAgJyhmb3JcbicKKyAgICAgICAgICAgICAgICdleGFtcGxlICJhLCBiID0gYiwgYSIgc3dhcHMgdHdvIHZhcmlhYmxlcyksIG92ZXJsYXBzICp3aXRoaW4qICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICdjb2xsZWN0aW9uIG9mIGFzc2lnbmVkLXRvIHZhcmlhYmxlcyBhcmUgbm90IHNhZmUhICBGb3IgJworICAgICAgICAgICAgICAgJ2luc3RhbmNlLCB0aGVcbicKKyAgICAgICAgICAgICAgICdmb2xsb3dpbmcgcHJvZ3JhbSBwcmludHMgIlswLCAyXSI6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgeCA9IFswLCAxXVxuJworICAgICAgICAgICAgICAgJyAgIGkgPSAwXG4nCisgICAgICAgICAgICAgICAnICAgaSwgeFtpXSA9IDEsIDJcbicKKyAgICAgICAgICAgICAgICcgICBwcmludCB4XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQsIG9mIGFcbicKKyAgICAgICAgICAgICAgICdiaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhdWdtZW50ZWRfYXNzaWdubWVudF9zdG10IDo6PSBhdWd0YXJnZXQgYXVnb3AgJworICAgICAgICAgICAgICAgJyhleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuJworICAgICAgICAgICAgICAgJyAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCAnCisgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAgJyAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICIvPSIgfCAnCisgICAgICAgICAgICAgICAnIi8vPSIgfCAiJT0iIHwgIioqPSJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKFNlZSBzZWN0aW9uIFByaW1hcmllcyBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgJworICAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICAnc3ltYm9scy4pXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2UgJworICAgICAgICAgICAgICAgJ25vcm1hbFxuJworICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAgJ2xpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mICcKKyAgICAgICAgICAgICAgICdhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICAnb24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICAgJ3RhcmdldC5cbicKKyAgICAgICAgICAgICAgICdUaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSAnCisgICAgICAgICAgICAgICAncmV3cml0dGVuIGFzXG4nCisgICAgICAgICAgICAgICAnInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCAnCisgICAgICAgICAgICAgICAnZWZmZWN0LiBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICdhdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gJworICAgICAgICAgICAgICAgJ3Bvc3NpYmxlLFxuJworICAgICAgICAgICAgICAgJ3RoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgJworICAgICAgICAgICAgICAgJ3JhdGhlciB0aGFuXG4nCisgICAgICAgICAgICAgICAnY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgJworICAgICAgICAgICAgICAgJ29sZCBvYmplY3RcbicKKyAgICAgICAgICAgICAgICdpcyBtb2RpZmllZCBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1dpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzICcKKyAgICAgICAgICAgICAgICdpbiBhXG4nCisgICAgICAgICAgICAgICAnc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiAnCisgICAgICAgICAgICAgICAnU2ltaWxhcmx5LFxuJworICAgICAgICAgICAgICAgJ3dpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlICcKKyAgICAgICAgICAgICAgICdiaW5hcnlcbicKKyAgICAgICAgICAgICAgICdvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAnCisgICAgICAgICAgICAgICAnbm9ybWFsXG4nCisgICAgICAgICAgICAgICAnYmluYXJ5IG9wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSBjYXZlYXQgJworICAgICAgICAgICAgICAgJ2Fib3V0XG4nCisgICAgICAgICAgICAgICAnY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMgYXBwbGllcyBhcyBmb3IgcmVndWxhciAnCisgICAgICAgICAgICAgICAnYXNzaWdubWVudHMuXG4nLAorICdhdG9tLWlkZW50aWZpZXJzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIChOYW1lcylcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQW4gaWRlbnRpZmllciBvY2N1cnJpbmcgYXMgYW4gYXRvbSBpcyBhIG5hbWUuICBTZWUgJworICAgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24gSWRlbnRpZmllcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICdhbmQga2V5d29yZHMgZm9yIGxleGljYWwgZGVmaW5pdGlvbiBhbmQgc2VjdGlvbiBOYW1pbmcgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCBiaW5kaW5nIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJ2RvY3VtZW50YXRpb24gb2YgbmFtaW5nIGFuZCBiaW5kaW5nLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1doZW4gdGhlIG5hbWUgaXMgYm91bmQgdG8gYW4gb2JqZWN0LCBldmFsdWF0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXRvbSB5aWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGF0IG9iamVjdC4gV2hlbiBhIG5hbWUgaXMgbm90IGJvdW5kLCBhbiBhdHRlbXB0IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdldmFsdWF0ZSBpdFxuJworICAgICAgICAgICAgICAgICAgICAgJ3JhaXNlcyBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKlByaXZhdGUgbmFtZSBtYW5nbGluZzoqKiBXaGVuIGFuIGlkZW50aWZpZXIgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgICAndGV4dHVhbGx5IG9jY3VycyBpblxuJworICAgICAgICAgICAgICAgICAgICAgJ2EgY2xhc3MgZGVmaW5pdGlvbiBiZWdpbnMgd2l0aCB0d28gb3IgbW9yZSB1bmRlcnNjb3JlICcKKyAgICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2RvZXMgbm90IGVuZCBpbiB0d28gb3IgbW9yZSB1bmRlcnNjb3JlcywgaXQgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnNpZGVyZWQgYSAqcHJpdmF0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJ25hbWUqIG9mIHRoYXQgY2xhc3MuIFByaXZhdGUgbmFtZXMgYXJlIHRyYW5zZm9ybWVkIHRvIGEgJworICAgICAgICAgICAgICAgICAgICAgJ2xvbmdlciBmb3JtXG4nCisgICAgICAgICAgICAgICAgICAgICAnYmVmb3JlIGNvZGUgaXMgZ2VuZXJhdGVkIGZvciB0aGVtLiAgVGhlIHRyYW5zZm9ybWF0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnNlcnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzIG5hbWUsIHdpdGggbGVhZGluZyB1bmRlcnNjb3JlcyByZW1vdmVkIGFuZCBhICcKKyAgICAgICAgICAgICAgICAgICAgICdzaW5nbGUgdW5kZXJzY29yZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2luc2VydGVkLCBpbiBmcm9udCBvZiB0aGUgbmFtZS4gIEZvciBleGFtcGxlLCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXIgIl9fc3BhbSJcbicKKyAgICAgICAgICAgICAgICAgICAgICdvY2N1cnJpbmcgaW4gYSBjbGFzcyBuYW1lZCAiSGFtIiB3aWxsIGJlIHRyYW5zZm9ybWVkIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICciX0hhbV9fc3BhbSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhpcyB0cmFuc2Zvcm1hdGlvbiBpcyBpbmRlcGVuZGVudCBvZiB0aGUgc3ludGFjdGljYWwgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQgaW4gd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgaWRlbnRpZmllciBpcyB1c2VkLiAgSWYgdGhlIHRyYW5zZm9ybWVkIG5hbWUgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2V4dHJlbWVseSBsb25nXG4nCisgICAgICAgICAgICAgICAgICAgICAnKGxvbmdlciB0aGFuIDI1NSBjaGFyYWN0ZXJzKSwgaW1wbGVtZW50YXRpb24gZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICAgICAndHJ1bmNhdGlvbiBtYXlcbicKKyAgICAgICAgICAgICAgICAgICAgICdoYXBwZW4uIElmIHRoZSBjbGFzcyBuYW1lIGNvbnNpc3RzIG9ubHkgb2YgdW5kZXJzY29yZXMsICcKKyAgICAgICAgICAgICAgICAgICAgICdub1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RyYW5zZm9ybWF0aW9uIGlzIGRvbmUuXG4nLAorICdhdG9tLWxpdGVyYWxzJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ0xpdGVyYWxzXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdQeXRob24gc3VwcG9ydHMgc3RyaW5nIGxpdGVyYWxzIGFuZCB2YXJpb3VzIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAgJ2xpdGVyYWxzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIGxpdGVyYWwgOjo9IHN0cmluZ2xpdGVyYWwgfCBpbnRlZ2VyIHwgbG9uZ2ludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICB8IGZsb2F0bnVtYmVyIHwgaW1hZ251bWJlclxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0V2YWx1YXRpb24gb2YgYSBsaXRlcmFsIHlpZWxkcyBhbiBvYmplY3Qgb2YgdGhlIGdpdmVuIHR5cGUgJworICAgICAgICAgICAgICAgICAgJyhzdHJpbmcsXG4nCisgICAgICAgICAgICAgICAgICAnaW50ZWdlciwgbG9uZyBpbnRlZ2VyLCBmbG9hdGluZyBwb2ludCBudW1iZXIsIGNvbXBsZXggJworICAgICAgICAgICAgICAgICAgJ251bWJlcikgd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdnaXZlbiB2YWx1ZS4gIFRoZSB2YWx1ZSBtYXkgYmUgYXBwcm94aW1hdGVkIGluIHRoZSBjYXNlIG9mICcKKyAgICAgICAgICAgICAgICAgICdmbG9hdGluZ1xuJworICAgICAgICAgICAgICAgICAgJ3BvaW50IGFuZCBpbWFnaW5hcnkgKGNvbXBsZXgpIGxpdGVyYWxzLiAgU2VlIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAgJ0xpdGVyYWxzIGZvclxuJworICAgICAgICAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWxsIGxpdGVyYWxzIGNvcnJlc3BvbmQgdG8gaW1tdXRhYmxlIGRhdGEgdHlwZXMsIGFuZCBoZW5jZSAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaWRlbnRpdHkgaXMgbGVzcyBpbXBvcnRhbnQgdGhhbiBpdHMgdmFsdWUuICAiCisgICAgICAgICAgICAgICAgICAnTXVsdGlwbGVcbicKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0aW9ucyBvZiBsaXRlcmFscyB3aXRoIHRoZSBzYW1lIHZhbHVlIChlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgICAnb2NjdXJyZW5jZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IG9yIGEgZGlmZmVyZW50IG9jY3VycmVuY2UpICcKKyAgICAgICAgICAgICAgICAgICdtYXkgb2J0YWluXG4nCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgb2JqZWN0IG9yIGEgZGlmZmVyZW50IG9iamVjdCB3aXRoIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZS5cbicsCisgJ2F0dHJpYnV0ZS1hY2Nlc3MnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuJworICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnbWVhbmluZyBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBhY2Nlc3MgKHVzZSBvZiwgYXNzaWdubWVudCB0bywgb3IgZGVsZXRpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgJyJ4Lm5hbWUiKSBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzcyBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGxvb2t1cCBoYXMgbm90IGZvdW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3IgaXMgaXQgZm91bmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBuYW1lLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlICcKKyAgICAgICAgICAgICAgICAgICAgICdvciByYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdub3JtYWwgbWVjaGFuaXNtLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBpcyBub3QgY2FsbGVkLiAgKFRoaXMgaXMgYW4gJworICAgICAgICAgICAgICAgICAgICAgJ2ludGVudGlvbmFsIGFzeW1tZXRyeVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdkb25lIGJvdGggZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAnCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBubyB3YXkgdG8gYWNjZXNzIG90aGVyIGF0dHJpYnV0ZXMgb2YgdGhlIGluc3RhbmNlLiAgJworICAgICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCBhdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCAnCisgICAgICAgICAgICAgICAgICAgICAnY29udHJvbCBieSBub3RcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IChidXRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIGluc2VydGluZyB0aGVtIGluIGFub3RoZXIgb2JqZWN0KS4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvICcKKyAgICAgICAgICAgICAgICAgICAgICdhY3R1YWxseSBnZXQgdG90YWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250cm9sIGluIG5ldy1zdHlsZSBjbGFzc2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICAnCisgICAgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAnCisgICAgICAgICAgICAgICAgICAgICAnKnZhbHVlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG5vdCBzaW1wbHkgZXhlY3V0ZSAic2VsZi5uYW1lID0gdmFsdWUiIC0tLSAnCisgICAgICAgICAgICAgICAgICAgICAndGhpcyB3b3VsZCBjYXVzZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGEgcmVjdXJzaXZlIGNhbGwgdG8gaXRzZWxmLiAgSW5zdGVhZCwgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnNlcnQgdGhlIHZhbHVlIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhlIGRpY3Rpb25hcnkgb2YgaW5zdGFuY2UgYXR0cmlidXRlcywgZS5nLiwgJworICAgICAgICAgICAgICAgICAgICAgJyJzZWxmLl9fZGljdF9fW25hbWVdID1cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSIuICBGb3IgbmV3LXN0eWxlIGNsYXNzZXMsIHJhdGhlciB0aGFuIGFjY2Vzc2luZyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGluc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGljdGlvbmFyeSwgaXQgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbmFtZSwgZm9yIGV4YW1wbGUsICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RlYWQgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiAiZGVsICcKKyAgICAgICAgICAgICAgICAgICAgICdvYmoubmFtZSIgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ01vcmUgYXR0cmlidXRlIGFjY2VzcyBmb3IgbmV3LXN0eWxlIGNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgdG8gbmV3LXN0eWxlIGNsYXNzZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAgICAgJ2FjY2Vzc2VzIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJfXygpIixcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuICcKKyAgICAgICAgICAgICAgICAgICAgICdUaGlzIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlICcKKyAgICAgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCAnCisgICAgICAgICAgICAgICAgICAgICAnaW5maW5pdGUgcmVjdXJzaW9uIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBiYXNlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgJworICAgICAgICAgICAgICAgICAgICAgJ25lZWRzLCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgJworICAgICAgICAgICAgICAgICAgICAgJ3VwIHNwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSAnCisgICAgICAgICAgICAgICAgICAgICAnbGFuZ3VhZ2Ugc3ludGF4XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSBTcGVjaWFsIG1ldGhvZCBsb29rdXAgJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciBuZXctc3R5bGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIGNsYXNzZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpICcKKyAgICAgICAgICAgICAgICAgICAgICdhcHBlYXJzIGluIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICJvd25lcidzIGNsYXNzXG4iCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyAnCisgICAgICAgICAgICAgICAgICAgICAncGFyZW50cykuICBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdleGFtcGxlcyBiZWxvdywgInRoZSBhdHRyaWJ1dGUiIHJlZmVycyB0byB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICd3aG9zZSBuYW1lIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAidGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzJyAiCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGdldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBvd25lciBjbGFzcyAoY2xhc3MgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgJworICAgICAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgdGhhdCB0aGUgYXR0cmlidXRlIHdhcyBhY2Nlc3NlZCB0aHJvdWdoLCBvciAnCisgICAgICAgICAgICAgICAgICAgICAnIk5vbmUiIHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdtZXRob2Qgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogJworICAgICAgICAgICAgICAgICAgICAgJ29mIHRoZSBvd25lclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRvIGEgbmV3IHZhbHVlLCAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnKmluc3RhbmNlKiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvd25lciBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnZva2luZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAnImJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuICcKKyAgICAgICAgICAgICAgICAgICAgICdvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2FuIG9iamVjdCwgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsICcKKyAgICAgICAgICAgICAgICAgICAgICdzZXQsIG9yIGRlbGV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgInRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3QncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICIKKyAgICAgICAgICAgICAgICAgICAgICciYS54IiBoYXMgYVxuJworICAgICAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcidHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzc2VzIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdIb3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyAnCisgICAgICAgICAgICAgICAgICAgICAnb25lIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAgICdiZWhhdmlvciBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICAgICAnd2VyZSBkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2hvdyB0aGV5IHdlcmUgY2FsbGVkLiAgTm90ZSB0aGF0IGRlc2NyaXB0b3JzIGFyZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnZva2VkIGZvciBuZXdcbicKKyAgICAgICAgICAgICAgICAgICAgICdzdHlsZSBvYmplY3RzIG9yIGNsYXNzZXMgKG9uZXMgdGhhdCBzdWJjbGFzcyAib2JqZWN0KCkiICcKKyAgICAgICAgICAgICAgICAgICAgICdvciAidHlwZSgpIikuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSAnCisgICAgICAgICAgICAgICAgICAgICAnYmluZGluZywgImEueCIuIEhvd1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdEaXJlY3QgQ2FsbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgJworICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnN0YW5jZSBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhIG5ldy1zdHlsZSBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm1lZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGludG8gdGhlIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsICcKKyAgICAgICAgICAgICAgICAgICAgICd0eXBlKGEpKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQ2xhc3MgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGJpbmRpbmcgdG8gYSBuZXctc3R5bGUgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdTdXBlciBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgJworICAgICAgICAgICAgICAgICAgICAgJyJzdXBlcihCLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzICJBIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3Igd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosICcKKyAgICAgICAgICAgICAgICAgICAgICdvYmouX19jbGFzc19fKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnZvY2F0aW9uIGRlcGVuZHNcbicKKyAgICAgICAgICAgICAgICAgICAgICdvbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciBjYW4gZGVmaW5lXG4nCisgICAgICAgICAgICAgICAgICAgICAnYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdkb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHdpbGwgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiAnCisgICAgICAgICAgICAgICAgICAgICAidGhlIG9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgZGljdGlvbmFyeS4gIElmIHRoZSBkZXNjcmlwdG9yIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgICAgJyJfX3NldF9fKCkiIGFuZC9vclxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAgICAnbmVpdGhlciwgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyAnCisgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lIGJvdGhcbicKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBhbmQgIl9fc2V0X18oKSIsIHdoaWxlIG5vbi1kYXRhIGRlc2NyaXB0b3JzICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIGp1c3QgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICAgICdhbmQgIl9fZ2V0X18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS4gIEluXG4nCisgICAgICAgICAgICAgICAgICAgICAnY29udHJhc3QsIG5vbi1kYXRhIGRlc2NyaXB0b3JzIGNhbiBiZSBvdmVycmlkZGVuIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uIG1ldGhvZHMgKGluY2x1ZGluZyAic3RhdGljbWV0aG9kKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAnImNsYXNzbWV0aG9kKCkiKSBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIGNhblxuJworICAgICAgICAgICAgICAgICAgICAgJ3JlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnYWNxdWlyZSBiZWhhdmlvcnMgdGhhdCBkaWZmZXIgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSAicHJvcGVydHkoKSIgZnVuY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMgYSBkYXRhICcKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAgICAgJ0FjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhICcKKyAgICAgICAgICAgICAgICAgICAgICdwcm9wZXJ0eS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdfX3Nsb3RzX19cbicKKyAgICAgICAgICAgICAgICAgICAgICc9PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdCeSBkZWZhdWx0LCBpbnN0YW5jZXMgb2YgYm90aCBvbGQgYW5kIG5ldy1zdHlsZSBjbGFzc2VzICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGUgc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZSB2YXJpYWJsZXMuICBUaGUgc3BhY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnN1bXB0aW9uIGNhbiBiZWNvbWVcbicKKyAgICAgICAgICAgICAgICAgICAgICdhY3V0ZSB3aGVuIGNyZWF0aW5nIGxhcmdlIG51bWJlcnMgb2YgaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluICcKKyAgICAgICAgICAgICAgICAgICAgICdhIG5ldy1zdHlsZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzIGRlZmluaXRpb24uICBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2Ugb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSB2YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluICcKKyAgICAgICAgICAgICAgICAgICAgICdlYWNoIGluc3RhbmNlIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnaG9sZCBhIHZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKiBpc1xuJworICAgICAgICAgICAgICAgICAgICAgJ25vdCBjcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCAnCisgICAgICAgICAgICAgICAgICAgICAnaXRlcmFibGUsIG9yIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgSWYgJworICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgaW4gYVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG5ldy1zdHlsZSBjbGFzcywgKl9fc2xvdHNfXyogcmVzZXJ2ZXMgc3BhY2UgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVjbGFyZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZSBhdXRvbWF0aWMgY3JlYXRpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgJypfX2RpY3RfXyogYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgKl9fd2Vha3JlZl9fKiBmb3IgZWFjaCBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAyLjIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdoZW4gaW5oZXJpdGluZyBmcm9tIGEgY2xhc3Mgd2l0aG91dCAqX19zbG90c19fKiwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyAnCisgICAgICAgICAgICAgICAgICAgICAnYSAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fZGljdF9fKiB2YXJpYWJsZSwgaW5zdGFuY2VzIGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXNzaWduZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICAgICAnICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAgICAgICAgICdBdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICcKKyAgICAgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiLiBJZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZHluYW1pYyBhc3NpZ25tZW50IG9mIG5ldyB2YXJpYWJsZXMgaXMgZGVzaXJlZCwgdGhlbiAnCisgICAgICAgICAgICAgICAgICAgICAnYWRkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFByZXZpb3VzbHksIGFkZGluZyAnCisgICAgICAgICAgICAgICAgICAgICAnIlwnX19kaWN0X19cJyIgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB3b3VsZCBub3QgZW5hYmxlIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXNzaWdubWVudCBvZiBuZXdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZXMgbm90IHNwZWNpZmljYWxseSBsaXN0ZWQgaW4gdGhlIHNlcXVlbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgdmFyaWFibGUgbmFtZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuICcKKyAgICAgICAgICAgICAgICAgICAgICdhZGRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlY2xhcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogUHJldmlvdXNseSwgYWRkaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICciXCdfX3dlYWtyZWZfX1wnIiB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHdvdWxkIG5vdCBlbmFibGUgc3VwcG9ydCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ3dlYWtcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5ICcKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgZGVzY3JpcHRvcnMgKEltcGxlbWVudGluZyBEZXNjcmlwdG9ycykgZm9yIGVhY2ggJworICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlIG5hbWUuICBBcyBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsICcKKyAgICAgICAgICAgICAgICAgICAgICdoYXZlIGEgKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGFpbiBuYW1lc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnaW5hY2Nlc3NpYmxlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3MpLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJsb25nIiwgInN0ciIgJworICAgICAgICAgICAgICAgICAgICAgJ2FuZCAidHVwbGUiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19zbG90c19fKi4gTWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgJworICAgICAgICAgICAgICAgICAgICAgJ21lYW5pbmcgbWF5IGJlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAqX19zbG90c19fKi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjY6IFByZXZpb3VzbHksICpfX2NsYXNzX18qICcKKyAgICAgICAgICAgICAgICAgICAgICdhc3NpZ25tZW50IHJhaXNlZCBhblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgZXJyb3IgaWYgZWl0aGVyIG5ldyBvciBvbGQgY2xhc3MgaGFkICpfX3Nsb3RzX18qLlxuJywKKyAnYXR0cmlidXRlLXJlZmVyZW5jZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0F0dHJpYnV0ZSByZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdBbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIGlzIGEgcHJpbWFyeSBmb2xsb3dlZCBieSBhICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAncGVyaW9kIGFuZCBhIG5hbWU6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICcgICBhdHRyaWJ1dGVyZWYgOjo9IHByaW1hcnkgIi4iIGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IG9mIGEgdHlwZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoYXQgc3VwcG9ydHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIHJlZmVyZW5jZXMsIGUuZy4sIGEgbW9kdWxlLCBsaXN0LCBvciBhbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdvYmplY3QgaXMgdGhlbiBhc2tlZCB0byBwcm9kdWNlIHRoZSBhdHRyaWJ1dGUgd2hvc2UgJworICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdpZGVudGlmaWVyLiAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IGF2YWlsYWJsZSwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIgaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZSB0eXBlIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdvYmplY3QgcHJvZHVjZWQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgb2JqZWN0LiAgJworICAgICAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsZSBldmFsdWF0aW9ucyBvZlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBhdHRyaWJ1dGUgcmVmZXJlbmNlIG1heSB5aWVsZCBkaWZmZXJlbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJywKKyAnYXVnYXNzaWduJzogJ1xuJworICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgJworICAgICAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICAgICAnYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAnCisgICAgICAgICAgICAgICcoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbicKKyAgICAgICAgICAgICAgJyAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCAnCisgICAgICAgICAgICAgICdzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4nCisgICAgICAgICAgICAgICcgICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiLz0iIHwgJworICAgICAgICAgICAgICAnIi8vPSIgfCAiJT0iIHwgIioqPSJcbicKKyAgICAgICAgICAgICAgJyAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnKFNlZSBzZWN0aW9uIFByaW1hcmllcyBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgdGhlIGxhc3QgJworICAgICAgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICAgICAgJ3N5bWJvbHMuKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSAnCisgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSAnCisgICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgICdsaXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiAnCisgICAgICAgICAgICAgICdhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICdvbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCAnCisgICAgICAgICAgICAgICd0YXJnZXQuXG4nCisgICAgICAgICAgICAgICdUaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgJworICAgICAgICAgICAgICAncmV3cml0dGVuIGFzXG4nCisgICAgICAgICAgICAgICcieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gJworICAgICAgICAgICAgICAnSW4gdGhlXG4nCisgICAgICAgICAgICAgICdhdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gJworICAgICAgICAgICAgICAncG9zc2libGUsXG4nCisgICAgICAgICAgICAgICd0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0ICcKKyAgICAgICAgICAgICAgJ3JhdGhlciB0aGFuXG4nCisgICAgICAgICAgICAgICdjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgJworICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICdpcyBtb2RpZmllZCBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyAnCisgICAgICAgICAgICAgICdpbiBhXG4nCisgICAgICAgICAgICAgICdzaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gJworICAgICAgICAgICAgICAnU2ltaWxhcmx5LFxuJworICAgICAgICAgICAgICAnd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgJworICAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgICdvcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSAnCisgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdGb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lIGNhdmVhdCAnCisgICAgICAgICAgICAgICdhYm91dFxuJworICAgICAgICAgICAgICAnY2xhc3MgYW5kIGluc3RhbmNlIGF0dHJpYnV0ZXMgYXBwbGllcyBhcyBmb3IgcmVndWxhciAnCisgICAgICAgICAgICAgICdhc3NpZ25tZW50cy5cbicsCisgJ2JpbmFyeSc6ICdcbicKKyAgICAgICAgICAgJ0JpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgaGF2ZSB0aGUgY29udmVudGlvbmFsIHByaW9yaXR5XG4nCisgICAgICAgICAgICdsZXZlbHMuICBOb3RlIHRoYXQgc29tZSBvZiB0aGVzZSBvcGVyYXRpb25zIGFsc28gYXBwbHkgdG8gY2VydGFpbiAnCisgICAgICAgICAgICdub24tXG4nCisgICAgICAgICAgICdudW1lcmljIHR5cGVzLiAgQXBhcnQgZnJvbSB0aGUgcG93ZXIgb3BlcmF0b3IsIHRoZXJlIGFyZSBvbmx5IHR3b1xuJworICAgICAgICAgICAnbGV2ZWxzLCBvbmUgZm9yIG11bHRpcGxpY2F0aXZlIG9wZXJhdG9ycyBhbmQgb25lIGZvciBhZGRpdGl2ZVxuJworICAgICAgICAgICAnb3BlcmF0b3JzOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBtX2V4cHIgOjo9IHVfZXhwciB8IG1fZXhwciAiKiIgdV9leHByIHwgbV9leHByICIvLyIgdV9leHByIHwgJworICAgICAgICAgICAnbV9leHByICIvIiB1X2V4cHJcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBtX2V4cHIgIiUiIHVfZXhwclxuJworICAgICAgICAgICAnICAgYV9leHByIDo6PSBtX2V4cHIgfCBhX2V4cHIgIisiIG1fZXhwciB8IGFfZXhwciAiLSIgbV9leHByXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiKiIgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzICcKKyAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgJ1RoZSBhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzLCBvciBvbmUgYXJndW1lbnQgbXVzdCBiZSAnCisgICAgICAgICAgICdhblxuJworICAgICAgICAgICAnaW50ZWdlciAocGxhaW4gb3IgbG9uZykgYW5kIHRoZSBvdGhlciBtdXN0IGJlIGEgc2VxdWVuY2UuIEluIHRoZVxuJworICAgICAgICAgICAnZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSBhbmQgdGhlblxuJworICAgICAgICAgICAnbXVsdGlwbGllZCB0b2dldGhlci4gIEluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpc1xuJworICAgICAgICAgICAncGVyZm9ybWVkOyBhIG5lZ2F0aXZlIHJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICIvIiAoZGl2aXNpb24pIGFuZCAiLy8iIChmbG9vciBkaXZpc2lvbikgb3BlcmF0b3JzIHlpZWxkIHRoZVxuJworICAgICAgICAgICAncXVvdGllbnQgb2YgdGhlaXIgYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuJworICAgICAgICAgICAnY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuIFBsYWluIG9yIGxvbmcgaW50ZWdlciBkaXZpc2lvbiB5aWVsZHMgJworICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgJ2ludGVnZXIgb2YgdGhlIHNhbWUgdHlwZTsgdGhlIHJlc3VsdCBpcyB0aGF0IG9mIG1hdGhlbWF0aWNhbCAnCisgICAgICAgICAgICdkaXZpc2lvblxuJworICAgICAgICAgICAid2l0aCB0aGUgJ2Zsb29yJyBmdW5jdGlvbiBhcHBsaWVkIHRvIHRoZSByZXN1bHQuIERpdmlzaW9uIGJ5IHplcm9cbiIKKyAgICAgICAgICAgJ3JhaXNlcyB0aGUgIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiJSIgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gJworICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgJ3RoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSAnCisgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAnY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuJworICAgICAgICAgICAnIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyAnCisgICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICAnbnVtYmVycywgZS5nLiwgIjMuMTQlMC43IiBlcXVhbHMgIjAuMzQiIChzaW5jZSAiMy4xNCIgZXF1YWxzICcKKyAgICAgICAgICAgJyI0KjAuNyArXG4nCisgICAgICAgICAgICcwLjM0Ii4pICBUaGUgbW9kdWxvIG9wZXJhdG9yIGFsd2F5cyB5aWVsZHMgYSByZXN1bHQgd2l0aCB0aGUgc2FtZSAnCisgICAgICAgICAgICdzaWduXG4nCisgICAgICAgICAgICdhcyBpdHMgc2Vjb25kIG9wZXJhbmQgKG9yIHplcm8pOyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHJlc3VsdCAnCisgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAnc3RyaWN0bHkgc21hbGxlciB0aGFuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgJworICAgICAgICAgICAnWzJdLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgaW50ZWdlciBkaXZpc2lvbiBhbmQgbW9kdWxvIG9wZXJhdG9ycyBhcmUgY29ubmVjdGVkIGJ5IHRoZVxuJworICAgICAgICAgICAnZm9sbG93aW5nIGlkZW50aXR5OiAieCA9PSAoeC95KSp5ICsgKHgleSkiLiAgSW50ZWdlciBkaXZpc2lvbiBhbmRcbicKKyAgICAgICAgICAgJ21vZHVsbyBhcmUgYWxzbyBjb25uZWN0ZWQgd2l0aCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImRpdm1vZCgpIjpcbicKKyAgICAgICAgICAgJyJkaXZtb2QoeCwgeSkgPT0gKHgveSwgeCV5KSIuICBUaGVzZSBpZGVudGl0aWVzIGRvblwndCBob2xkIGZvclxuJworICAgICAgICAgICAnZmxvYXRpbmcgcG9pbnQgbnVtYmVyczsgdGhlcmUgc2ltaWxhciBpZGVudGl0aWVzIGhvbGQgJworICAgICAgICAgICAnYXBwcm94aW1hdGVseVxuJworICAgICAgICAgICAnd2hlcmUgIngveSIgaXMgcmVwbGFjZWQgYnkgImZsb29yKHgveSkiIG9yICJmbG9vcih4L3kpIC0gMSIgWzNdLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBwZXJmb3JtaW5nIHRoZSBtb2R1bG8gb3BlcmF0aW9uIG9uIG51bWJlcnMsIHRoZSAnCisgICAgICAgICAgICciJSJcbicKKyAgICAgICAgICAgJ29wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgYW5kIHVuaWNvZGUgb2JqZWN0cyB0byAnCisgICAgICAgICAgICdwZXJmb3JtXG4nCisgICAgICAgICAgICdzdHJpbmcgZm9ybWF0dGluZyAoYWxzbyBrbm93biBhcyBpbnRlcnBvbGF0aW9uKS4gVGhlIHN5bnRheCBmb3IgJworICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICdmb3JtYXR0aW5nIGlzIGRlc2NyaWJlZCBpbiB0aGUgUHl0aG9uIExpYnJhcnkgUmVmZXJlbmNlLCBzZWN0aW9uXG4nCisgICAgICAgICAgICdTdHJpbmcgRm9ybWF0dGluZyBPcGVyYXRpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdEZXByZWNhdGVkIHNpbmNlIHZlcnNpb24gMi4zOiBUaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSAnCisgICAgICAgICAgICdtb2R1bG9cbicKKyAgICAgICAgICAgJ29wZXJhdG9yLCBhbmQgdGhlICJkaXZtb2QoKSIgZnVuY3Rpb24gYXJlIG5vIGxvbmdlciBkZWZpbmVkIGZvclxuJworICAgICAgICAgICAnY29tcGxleCBudW1iZXJzLiAgSW5zdGVhZCwgY29udmVydCB0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciAnCisgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAndGhlICJhYnMoKSIgZnVuY3Rpb24gaWYgYXBwcm9wcmlhdGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiKyIgKGFkZGl0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHN1bSBvZiBpdHMgYXJndW1lbnRzLiBUaGVcbicKKyAgICAgICAgICAgJ2FyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBzZXF1ZW5jZXMgb2YgdGhlICcKKyAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgJ3R5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gJworICAgICAgICAgICAndHlwZVxuJworICAgICAgICAgICAnYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuICBJbiB0aGUgbGF0dGVyIGNhc2UsIHRoZSBzZXF1ZW5jZXMgYXJlXG4nCisgICAgICAgICAgICdjb25jYXRlbmF0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiLSIgKHN1YnRyYWN0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIGRpZmZlcmVuY2Ugb2YgaXRzICcKKyAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgJ1RoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3QgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuXG4nLAorICdiaXR3aXNlJzogJ1xuJworICAgICAgICAgICAgJ0JpbmFyeSBiaXR3aXNlIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnRWFjaCBvZiB0aGUgdGhyZWUgYml0d2lzZSBvcGVyYXRpb25zIGhhcyBhIGRpZmZlcmVudCBwcmlvcml0eSAnCisgICAgICAgICAgICAnbGV2ZWw6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnICAgYW5kX2V4cHIgOjo9IHNoaWZ0X2V4cHIgfCBhbmRfZXhwciAiJiIgc2hpZnRfZXhwclxuJworICAgICAgICAgICAgJyAgIHhvcl9leHByIDo6PSBhbmRfZXhwciB8IHhvcl9leHByICJeIiBhbmRfZXhwclxuJworICAgICAgICAgICAgJyAgIG9yX2V4cHIgIDo6PSB4b3JfZXhwciB8IG9yX2V4cHIgInwiIHhvcl9leHByXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVGhlICImIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgQU5EIG9mIGl0cyBhcmd1bWVudHMsIHdoaWNoICcKKyAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAnYmUgcGxhaW4gb3IgbG9uZyBpbnRlZ2Vycy4gIFRoZSBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBhICcKKyAgICAgICAgICAgICdjb21tb25cbicKKyAgICAgICAgICAgICd0eXBlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZSAiXiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIFhPUiAoZXhjbHVzaXZlIE9SKSBvZiBpdHNcbicKKyAgICAgICAgICAgICdhcmd1bWVudHMsIHdoaWNoIG11c3QgYmUgcGxhaW4gb3IgbG9uZyBpbnRlZ2Vycy4gIFRoZSBhcmd1bWVudHMgJworICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgJ2NvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZSAifCIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIChpbmNsdXNpdmUpIE9SIG9mIGl0cyAnCisgICAgICAgICAgICAnYXJndW1lbnRzLFxuJworICAgICAgICAgICAgJ3doaWNoIG11c3QgYmUgcGxhaW4gb3IgbG9uZyBpbnRlZ2Vycy4gIFRoZSBhcmd1bWVudHMgYXJlICcKKyAgICAgICAgICAgICdjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAgICdhIGNvbW1vbiB0eXBlLlxuJywKKyAnYmx0aW4tY29kZS1vYmplY3RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBPYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQ29kZSBvYmplY3RzIGFyZSB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnQgInBzZXVkby1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBpbGVkIiBleGVjdXRhYmxlIFB5dGhvbiBjb2RlIHN1Y2ggYXMgYSBmdW5jdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICdib2R5LiBUaGV5IGRpZmZlclxuJworICAgICAgICAgICAgICAgICAgICAgICAiZnJvbSBmdW5jdGlvbiBvYmplY3RzIGJlY2F1c2UgdGhleSBkb24ndCBjb250YWluIGEgIgorICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIHRvIHRoZWlyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdnbG9iYWwgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgQ29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBieSB0aGUgYnVpbHQtXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdpbiAiY29tcGlsZSgpIiBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlaXIgImZ1bmNfY29kZSIgYXR0cmlidXRlLiBTZWUgYWxzbyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAnImNvZGUiIG1vZHVsZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnQSBjb2RlIG9iamVjdCBjYW4gYmUgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkIGJ5IHBhc3NpbmcgJworICAgICAgICAgICAgICAgICAgICAgICAnaXQgKGluc3RlYWQgb2YgYVxuJworICAgICAgICAgICAgICAgICAgICAgICAnc291cmNlIHN0cmluZykgdG8gdGhlICJleGVjIiBzdGF0ZW1lbnQgb3IgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyJldmFsKCkiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnU2VlIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSBmb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdpbmZvcm1hdGlvbi5cbicsCisgJ2JsdGluLWVsbGlwc2lzLW9iamVjdCc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBFbGxpcHNpcyBPYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhpcyBvYmplY3QgaXMgdXNlZCBieSBleHRlbmRlZCBzbGljZSBub3RhdGlvbiAoc2VlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NsaWNpbmdzKS4gIEl0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJ29uZSBlbGxpcHNpcyBvYmplY3QsXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICduYW1lZCAiRWxsaXBzaXMiIChhIGJ1aWx0LWluIG5hbWUpLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdJdCBpcyB3cml0dGVuIGFzICJFbGxpcHNpcyIuICBXaGVuIGluIGEgc3Vic2NyaXB0LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdpdCBjYW4gYWxzbyBiZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JpdHRlbiBhcyAiLi4uIiwgZm9yIGV4YW1wbGUgInNlcVsuLi5dIi5cbicsCisgJ2JsdGluLWZpbGUtb2JqZWN0cyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGUgT2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGUgb2JqZWN0cyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgQ1wncyAic3RkaW8iICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3BhY2thZ2UgYW5kIGNhbiBiZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlZCB3aXRoIHRoZSBidWlsdC1pbiAib3BlbigpIiBmdW5jdGlvbi4gIEZpbGUgJworICAgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0cyBhcmUgYWxzb1xuJworICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgYnkgc29tZSBvdGhlciBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMsICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3N1Y2ggYXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyJvcy5wb3BlbigpIiBhbmQgIm9zLmZkb3BlbigpIiBhbmQgdGhlICJtYWtlZmlsZSgpIiAnCisgICAgICAgICAgICAgICAgICAgICAgICdtZXRob2Qgb2Ygc29ja2V0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICdvYmplY3RzLiBUZW1wb3JhcnkgZmlsZXMgY2FuIGJlIGNyZWF0ZWQgdXNpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyJ0ZW1wZmlsZSIgbW9kdWxlLFxuJworICAgICAgICAgICAgICAgICAgICAgICAnYW5kIGhpZ2gtbGV2ZWwgZmlsZSBvcGVyYXRpb25zIHN1Y2ggYXMgY29weWluZywgJworICAgICAgICAgICAgICAgICAgICAgICAnbW92aW5nLCBhbmQgZGVsZXRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVzIGFuZCBkaXJlY3RvcmllcyBjYW4gYmUgYWNoaWV2ZWQgd2l0aCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAnInNodXRpbCIgbW9kdWxlLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdXaGVuIGEgZmlsZSBvcGVyYXRpb24gZmFpbHMgZm9yIGFuIEkvTy1yZWxhdGVkIHJlYXNvbiwgJworICAgICAgICAgICAgICAgICAgICAgICAndGhlIGV4Y2VwdGlvblxuJworICAgICAgICAgICAgICAgICAgICAgICAnIklPRXJyb3IiIGlzIHJhaXNlZC4gIFRoaXMgaW5jbHVkZXMgc2l0dWF0aW9ucyB3aGVyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICd0aGUgb3BlcmF0aW9uIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdub3QgZGVmaW5lZCBmb3Igc29tZSByZWFzb24sIGxpa2UgInNlZWsoKSIgb24gYSB0dHkgJworICAgICAgICAgICAgICAgICAgICAgICAnZGV2aWNlIG9yIHdyaXRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2EgZmlsZSBvcGVuZWQgZm9yIHJlYWRpbmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGVzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzOlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLmNsb3NlKClcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgQ2xvc2UgdGhlIGZpbGUuICBBIGNsb3NlZCBmaWxlIGNhbm5vdCBiZSByZWFkIG9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3dyaXR0ZW4gYW55IG1vcmUuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBBbnkgb3BlcmF0aW9uIHdoaWNoIHJlcXVpcmVzIHRoYXQgdGhlIGZpbGUgYmUgb3BlbiAnCisgICAgICAgICAgICAgICAgICAgICAgICd3aWxsIHJhaXNlIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgICJWYWx1ZUVycm9yIiBhZnRlciB0aGUgZmlsZSBoYXMgYmVlbiBjbG9zZWQuICAnCisgICAgICAgICAgICAgICAgICAgICAgICdDYWxsaW5nICJjbG9zZSgpIlxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgbW9yZSB0aGFuIG9uY2UgaXMgYWxsb3dlZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgQXMgb2YgUHl0aG9uIDIuNSwgeW91IGNhbiBhdm9pZCBoYXZpbmcgdG8gY2FsbCB0aGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgZXhwbGljaXRseSBpZiB5b3UgdXNlIHRoZSAid2l0aCIgc3RhdGVtZW50LiAgRm9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgZm9sbG93aW5nIGNvZGUgd2lsbCBhdXRvbWF0aWNhbGx5IGNsb3NlICpmKiB3aGVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSAid2l0aCIgYmxvY2tcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGlzIGV4aXRlZDpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudCAjIFRoaXMgJworICAgICAgICAgICAgICAgICAgICAgICAiaXNuJ3QgcmVxdWlyZWQgaW4gUHl0aG9uIDIuNlxuIgorICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAgICB3aXRoIG9wZW4oImhlbGxvLnR4dCIpIGFzIGY6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgZm9yIGxpbmUgaW4gZjpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgcHJpbnQgbGluZSxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgSW4gb2xkZXIgdmVyc2lvbnMgb2YgUHl0aG9uLCB5b3Ugd291bGQgaGF2ZSBuZWVkZWQgJworICAgICAgICAgICAgICAgICAgICAgICAndG8gZG8gdGhpcyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgZ2V0IHRoZSBzYW1lIGVmZmVjdDpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICAgZiA9IG9wZW4oImhlbGxvLnR4dCIpXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAgICB0cnk6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgZm9yIGxpbmUgaW4gZjpcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgcHJpbnQgbGluZSxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAgICAgICAgZi5jbG9zZSgpXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IE5vdCBhbGwgImZpbGUtbGlrZSIgdHlwZXMgaW4gUHl0aG9uIHN1cHBvcnQgJworICAgICAgICAgICAgICAgICAgICAgICAndXNlIGFzIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgY29udGV4dCBtYW5hZ2VyIGZvciB0aGUgIndpdGgiIHN0YXRlbWVudC4gIElmICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3lvdXIgY29kZSBpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICBpbnRlbmRlZCB0byB3b3JrIHdpdGggYW55IGZpbGUtbGlrZSBvYmplY3QsIHlvdSAnCisgICAgICAgICAgICAgICAgICAgICAgICdjYW4gdXNlIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICBmdW5jdGlvbiAiY29udGV4dGxpYi5jbG9zaW5nKCkiIGluc3RlYWQgb2YgdXNpbmcgJworICAgICAgICAgICAgICAgICAgICAgICAndGhlIG9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICBkaXJlY3RseS5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnZmlsZS5mbHVzaCgpXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIEZsdXNoIHRoZSBpbnRlcm5hbCBidWZmZXIsIGxpa2UgInN0ZGlvIlwncyAnCisgICAgICAgICAgICAgICAgICAgICAgICciZmZsdXNoKCkiLiAgVGhpcyBtYXkgYmVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGEgbm8tb3Agb24gc29tZSBmaWxlLWxpa2Ugb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImZsdXNoKCkiIGRvZXMgbm90IG5lY2Vzc2FyaWx5IHdyaXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICJmaWxlJ3MgZGF0YSB0b1xuIgorICAgICAgICAgICAgICAgICAgICAgICAnICAgICBkaXNrLiBVc2UgImZsdXNoKCkiIGZvbGxvd2VkIGJ5ICJvcy5mc3luYygpIiB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICdlbnN1cmUgdGhpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICBiZWhhdmlvci5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnZmlsZS5maWxlbm8oKVxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGludGVnZXIgImZpbGUgZGVzY3JpcHRvciIgdGhhdCBpcyB1c2VkICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2J5IHRoZSB1bmRlcmx5aW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiB0byByZXF1ZXN0IEkvTyBvcGVyYXRpb25zIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ29wZXJhdGluZyBzeXN0ZW0uXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIG90aGVyLCBsb3dlciBsZXZlbCAnCisgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcmZhY2VzIHRoYXQgdXNlIGZpbGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0b3JzLCBzdWNoIGFzIHRoZSAiZmNudGwiIG1vZHVsZSBvciAnCisgICAgICAgICAgICAgICAgICAgICAgICcib3MucmVhZCgpIiBhbmQgZnJpZW5kcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogRmlsZS1saWtlIG9iamVjdHMgd2hpY2ggZG8gbm90IGhhdmUgYSByZWFsICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGUgZGVzY3JpcHRvclxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICBzaG91bGQgKm5vdCogcHJvdmlkZSB0aGlzIG1ldGhvZCFcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnZmlsZS5pc2F0dHkoKVxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gIlRydWUiIGlmIHRoZSBmaWxlIGlzIGNvbm5lY3RlZCB0byBhICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3R0eSgtbGlrZSkgZGV2aWNlLCBlbHNlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAiRmFsc2UiLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBJZiBhIGZpbGUtbGlrZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICdhIHJlYWwgZmlsZSxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgICAgdGhpcyBtZXRob2Qgc2hvdWxkICpub3QqIGJlIGltcGxlbWVudGVkLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLm5leHQoKVxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBBIGZpbGUgb2JqZWN0IGlzIGl0cyBvd24gaXRlcmF0b3IsIGZvciBleGFtcGxlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyJpdGVyKGYpIiByZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAqZiogKHVubGVzcyAqZiogaXMgY2xvc2VkKS4gIFdoZW4gYSBmaWxlIGlzIHVzZWQgYXMgJworICAgICAgICAgICAgICAgICAgICAgICAnYW4gaXRlcmF0b3IsXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICB0eXBpY2FsbHkgaW4gYSAiZm9yIiBsb29wIChmb3IgZXhhbXBsZSwgImZvciBsaW5lICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2luIGY6IHByaW50XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBsaW5lLnN0cmlwKCkiKSwgdGhlICJuZXh0KCkiIG1ldGhvZCBpcyBjYWxsZWQgJworICAgICAgICAgICAgICAgICAgICAgICAncmVwZWF0ZWRseS4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXR1cm5zIHRoZSBuZXh0IGlucHV0IGxpbmUsIG9yIHJhaXNlcyAnCisgICAgICAgICAgICAgICAgICAgICAgICciU3RvcEl0ZXJhdGlvbiIgd2hlblxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgRU9GIGlzIGhpdCB3aGVuIHRoZSBmaWxlIGlzIG9wZW4gZm9yIHJlYWRpbmcgJworICAgICAgICAgICAgICAgICAgICAgICAnKGJlaGF2aW9yIGlzIHVuZGVmaW5lZFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgd2hlbiB0aGUgZmlsZSBpcyBvcGVuIGZvciB3cml0aW5nKS4gIEluIG9yZGVyIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ21ha2UgYSAiZm9yIiBsb29wXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgbW9zdCBlZmZpY2llbnQgd2F5IG9mIGxvb3Bpbmcgb3ZlciB0aGUgbGluZXMgb2YgJworICAgICAgICAgICAgICAgICAgICAgICAnYSBmaWxlIChhIHZlcnlcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGNvbW1vbiBvcGVyYXRpb24pLCB0aGUgIm5leHQoKSIgbWV0aG9kIHVzZXMgYSAnCisgICAgICAgICAgICAgICAgICAgICAgICdoaWRkZW4gcmVhZC1haGVhZFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgYnVmZmVyLiAgQXMgYSBjb25zZXF1ZW5jZSBvZiB1c2luZyBhIHJlYWQtYWhlYWQgJworICAgICAgICAgICAgICAgICAgICAgICAnYnVmZmVyLCBjb21iaW5pbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgICJuZXh0KCkiIHdpdGggb3RoZXIgZmlsZSBtZXRob2RzIChsaWtlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyJyZWFkbGluZSgpIikgZG9lcyBub3Qgd29ya1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgcmlnaHQuICBIb3dldmVyLCB1c2luZyAic2VlaygpIiB0byByZXBvc2l0aW9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlIHRvIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBhYnNvbHV0ZSBwb3NpdGlvbiB3aWxsIGZsdXNoIHRoZSByZWFkLWFoZWFkICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2J1ZmZlci5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi4zLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLnJlYWQoW3NpemVdKVxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBSZWFkIGF0IG1vc3QgKnNpemUqIGJ5dGVzIGZyb20gdGhlIGZpbGUgKGxlc3MgaWYgJworICAgICAgICAgICAgICAgICAgICAgICAndGhlIHJlYWQgaGl0cyBFT0ZcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGJlZm9yZSBvYnRhaW5pbmcgKnNpemUqIGJ5dGVzKS4gIElmIHRoZSAqc2l6ZSogJworICAgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgaXMgbmVnYXRpdmVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIG9yIG9taXR0ZWQsIHJlYWQgYWxsIGRhdGEgdW50aWwgRU9GIGlzIHJlYWNoZWQuICAnCisgICAgICAgICAgICAgICAgICAgICAgICdUaGUgYnl0ZXMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICByZXR1cm5lZCBhcyBhIHN0cmluZyBvYmplY3QuICBBbiBlbXB0eSBzdHJpbmcgaXMgJworICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgd2hlbiBFT0ZcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGlzIGVuY291bnRlcmVkIGltbWVkaWF0ZWx5LiAgKEZvciBjZXJ0YWluIGZpbGVzLCAnCisgICAgICAgICAgICAgICAgICAgICAgICdsaWtlIHR0eXMsIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBtYWtlcyBzZW5zZSB0byBjb250aW51ZSByZWFkaW5nIGFmdGVyIGFuIEVPRiBpcyAnCisgICAgICAgICAgICAgICAgICAgICAgICdoaXQuKSAgTm90ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICB0aGlzIG1ldGhvZCBtYXkgY2FsbCB0aGUgdW5kZXJseWluZyBDIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyJmcmVhZCgpIiBtb3JlIHRoYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIG9uY2UgaW4gYW4gZWZmb3J0IHRvIGFjcXVpcmUgYXMgY2xvc2UgdG8gKnNpemUqICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2J5dGVzIGFzIHBvc3NpYmxlLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgQWxzbyBub3RlIHRoYXQgd2hlbiBpbiBub24tYmxvY2tpbmcgbW9kZSwgbGVzcyBkYXRhICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3RoYW4gd2FzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICByZXF1ZXN0ZWQgbWF5IGJlIHJldHVybmVkLCBldmVuIGlmIG5vICpzaXplKiAnCisgICAgICAgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXIgd2FzIGdpdmVuLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGlzIGZ1bmN0aW9uIGlzIHNpbXBseSBhIHdyYXBwZXIgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICd1bmRlcmx5aW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAgICJmcmVhZCgpIiBDIGZ1bmN0aW9uLCBhbmQgd2lsbCBiZWhhdmUgdGhlIHNhbWUgaW4gJworICAgICAgICAgICAgICAgICAgICAgICAnY29ybmVyIGNhc2VzLFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICBzdWNoIGFzIHdoZXRoZXIgdGhlIEVPRiB2YWx1ZSBpcyBjYWNoZWQuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGUucmVhZGxpbmUoW3NpemVdKVxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBSZWFkIG9uZSBlbnRpcmUgbGluZSBmcm9tIHRoZSBmaWxlLiAgQSB0cmFpbGluZyAnCisgICAgICAgICAgICAgICAgICAgICAgICduZXdsaW5lIGNoYXJhY3RlclxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgaXMga2VwdCBpbiB0aGUgc3RyaW5nIChidXQgbWF5IGJlIGFic2VudCB3aGVuIGEgJworICAgICAgICAgICAgICAgICAgICAgICAnZmlsZSBlbmRzIHdpdGggYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGluY29tcGxldGUgbGluZSkuIFs2XSBJZiB0aGUgKnNpemUqIGFyZ3VtZW50IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3ByZXNlbnQgYW5kIG5vbi1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIG5lZ2F0aXZlLCBpdCBpcyBhIG1heGltdW0gYnl0ZSBjb3VudCAoaW5jbHVkaW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICd0cmFpbGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgbmV3bGluZSkgYW5kIGFuIGluY29tcGxldGUgbGluZSBtYXkgYmUgcmV0dXJuZWQuICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ1doZW4gKnNpemUqIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgMCwgYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkICpvbmx5KiB3aGVuIEVPRiBpcyAnCisgICAgICAgICAgICAgICAgICAgICAgICdlbmNvdW50ZXJlZFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFVubGlrZSAic3RkaW8iXCdzICJmZ2V0cygpIiwgdGhlIHJldHVybmVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBjb250YWluc1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICBudWxsIGNoYXJhY3RlcnMgKCJcJ1xcMFwnIikgaWYgdGhleSBvY2N1cnJlZCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICd0aGUgaW5wdXQuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGUucmVhZGxpbmVzKFtzaXplaGludF0pXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIFJlYWQgdW50aWwgRU9GIHVzaW5nICJyZWFkbGluZSgpIiBhbmQgcmV0dXJuIGEgbGlzdCAnCisgICAgICAgICAgICAgICAgICAgICAgICdjb250YWluaW5nIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgbGluZXMgdGh1cyByZWFkLiAgSWYgdGhlIG9wdGlvbmFsICpzaXplaGludCogJworICAgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgaXMgcHJlc2VudCxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgb2YgcmVhZGluZyB1cCB0byBFT0YsIHdob2xlIGxpbmVzIHRvdGFsbGluZyAnCisgICAgICAgICAgICAgICAgICAgICAgICdhcHByb3hpbWF0ZWx5XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAqc2l6ZWhpbnQqIGJ5dGVzIChwb3NzaWJseSBhZnRlciByb3VuZGluZyB1cCB0byBhbiAnCisgICAgICAgICAgICAgICAgICAgICAgICdpbnRlcm5hbCBidWZmZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIHNpemUpIGFyZSByZWFkLiAgT2JqZWN0cyBpbXBsZW1lbnRpbmcgYSBmaWxlLWxpa2UgJworICAgICAgICAgICAgICAgICAgICAgICAnaW50ZXJmYWNlIG1heVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgY2hvb3NlIHRvIGlnbm9yZSAqc2l6ZWhpbnQqIGlmIGl0IGNhbm5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCwgb3IgY2Fubm90XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBiZSBpbXBsZW1lbnRlZCBlZmZpY2llbnRseS5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnZmlsZS54cmVhZGxpbmVzKClcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgc2FtZSB0aGluZyBhcyAiaXRlcihmKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuMS5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgRGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uIDIuMzogVXNlICJmb3IgbGluZSBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlIiBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLnNlZWsob2Zmc2V0Wywgd2hlbmNlXSlcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgU2V0IHRoZSBmaWxlXCdzIGN1cnJlbnQgcG9zaXRpb24sIGxpa2UgInN0ZGlvIlwncyAnCisgICAgICAgICAgICAgICAgICAgICAgICciZnNlZWsoKSIuIFRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgKndoZW5jZSogYXJndW1lbnQgaXMgb3B0aW9uYWwgYW5kIGRlZmF1bHRzIHRvICAnCisgICAgICAgICAgICAgICAgICAgICAgICcib3MuU0VFS19TRVQiIG9yICIwIlxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgKGFic29sdXRlIGZpbGUgcG9zaXRpb25pbmcpOyBvdGhlciB2YWx1ZXMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyJvcy5TRUVLX0NVUiIgb3IgIjEiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAoc2VlayByZWxhdGl2ZSB0byB0aGUgY3VycmVudCBwb3NpdGlvbikgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyJvcy5TRUVLX0VORCIgb3IgIjIiXG4nCisgICAgICAgICAgICAgICAgICAgICAgICIgICAoc2VlayByZWxhdGl2ZSB0byB0aGUgZmlsZSdzIGVuZCkuICBUaGVyZSBpcyBubyAiCisgICAgICAgICAgICAgICAgICAgICAgICdyZXR1cm4gdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlLCAiZi5zZWVrKDIsIG9zLlNFRUtfQ1VSKSIgYWR2YW5jZXMgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uIGJ5IHR3b1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgYW5kICJmLnNlZWsoLTMsIG9zLlNFRUtfRU5EKSIgc2V0cyB0aGUgcG9zaXRpb24gdG8gJworICAgICAgICAgICAgICAgICAgICAgICAndGhlIHRoaXJkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBsYXN0LlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaWYgdGhlIGZpbGUgaXMgb3BlbmVkIGZvciBhcHBlbmRpbmcgKG1vZGUgJworICAgICAgICAgICAgICAgICAgICAgICAnIlwnYVwnIiBvclxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgIlwnYStcJyIpLCBhbnkgInNlZWsoKSIgb3BlcmF0aW9ucyB3aWxsIGJlIHVuZG9uZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdhdCB0aGUgbmV4dCB3cml0ZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIElmIHRoZSBmaWxlIGlzIG9ubHkgb3BlbmVkIGZvciB3cml0aW5nIGluIGFwcGVuZCAnCisgICAgICAgICAgICAgICAgICAgICAgICdtb2RlIChtb2RlICJcJ2FcJyIpLFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgdGhpcyBtZXRob2QgaXMgZXNzZW50aWFsbHkgYSBuby1vcCwgYnV0IGl0IHJlbWFpbnMgJworICAgICAgICAgICAgICAgICAgICAgICAndXNlZnVsIGZvciBmaWxlc1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgb3BlbmVkIGluIGFwcGVuZCBtb2RlIHdpdGggcmVhZGluZyBlbmFibGVkIChtb2RlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyJcJ2ErXCciKS4gIElmIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgZmlsZSBpcyBvcGVuZWQgaW4gdGV4dCBtb2RlICh3aXRob3V0ICJcJ2JcJyIpLCBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ29mZnNldHMgcmV0dXJuZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGJ5ICJ0ZWxsKCkiIGFyZSBsZWdhbC4gIFVzZSBvZiBvdGhlciBvZmZzZXRzIGNhdXNlcyAnCisgICAgICAgICAgICAgICAgICAgICAgICd1bmRlZmluZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGJlaGF2aW9yLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgbm90IGFsbCBmaWxlIG9iamVjdHMgYXJlIHNlZWthYmxlLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMi42OiBQYXNzaW5nIGZsb2F0IHZhbHVlcyBhcyAnCisgICAgICAgICAgICAgICAgICAgICAgICdvZmZzZXQgaGFzIGJlZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGRlcHJlY2F0ZWQuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGUudGVsbCgpXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgIiAgIFJldHVybiB0aGUgZmlsZSdzIGN1cnJlbnQgcG9zaXRpb24sIGxpa2UgIgorICAgICAgICAgICAgICAgICAgICAgICAnInN0ZGlvIlwncyAiZnRlbGwoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IE9uIFdpbmRvd3MsICJ0ZWxsKCkiIGNhbiByZXR1cm4gaWxsZWdhbCAnCisgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZXMgKGFmdGVyIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAgICJmZ2V0cygpIikgd2hlbiByZWFkaW5nIGZpbGVzIHdpdGggVW5peC1zdHlsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdsaW5lLWVuZGluZ3MuIFVzZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICBiaW5hcnkgbW9kZSAoIlwncmJcJyIpIHRvIGNpcmN1bXZlbnQgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAgICdwcm9ibGVtLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLnRydW5jYXRlKFtzaXplXSlcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAiICAgVHJ1bmNhdGUgdGhlIGZpbGUncyBzaXplLiAgSWYgdGhlIG9wdGlvbmFsICpzaXplKiAiCisgICAgICAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgcHJlc2VudCwgdGhlIGZpbGUgaXMgdHJ1bmNhdGVkIHRvIChhdCBtb3N0KSB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3NpemUuICBUaGUgc2l6ZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgcG9zaXRpb24uIFRoZSBjdXJyZW50IGZpbGUgJworICAgICAgICAgICAgICAgICAgICAgICAncG9zaXRpb24gaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBjaGFuZ2VkLiAgTm90ZSB0aGF0IGlmIGEgc3BlY2lmaWVkIHNpemUgZXhjZWVkcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAiZmlsZSdzIGN1cnJlbnRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIHNpemUsIHRoZSByZXN1bHQgaXMgcGxhdGZvcm0tZGVwZW5kZW50OiAgJworICAgICAgICAgICAgICAgICAgICAgICAncG9zc2liaWxpdGllcyBpbmNsdWRlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBmaWxlIG1heSByZW1haW4gdW5jaGFuZ2VkLCBpbmNyZWFzZSB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIHNpemUgYXMgaWZcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIHplcm8tZmlsbGVkLCBvciBpbmNyZWFzZSB0byB0aGUgc3BlY2lmaWVkIHNpemUgd2l0aCAnCisgICAgICAgICAgICAgICAgICAgICAgICd1bmRlZmluZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBjb250ZW50LiBBdmFpbGFiaWxpdHk6ICBXaW5kb3dzLCBtYW55IFVuaXggJworICAgICAgICAgICAgICAgICAgICAgICAndmFyaWFudHMuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGUud3JpdGUoc3RyKVxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBXcml0ZSBhIHN0cmluZyB0byB0aGUgZmlsZS4gIFRoZXJlIGlzIG5vIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZS4gIER1ZSB0b1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgYnVmZmVyaW5nLCB0aGUgc3RyaW5nIG1heSBub3QgYWN0dWFsbHkgc2hvdyB1cCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICd0aGUgZmlsZSB1bnRpbFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgdGhlICJmbHVzaCgpIiBvciAiY2xvc2UoKSIgbWV0aG9kIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnZmlsZS53cml0ZWxpbmVzKHNlcXVlbmNlKVxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBXcml0ZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3MgdG8gdGhlIGZpbGUuICBUaGUgJworICAgICAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgY2FuIGJlIGFueVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgaXRlcmFibGUgb2JqZWN0IHByb2R1Y2luZyBzdHJpbmdzLCB0eXBpY2FsbHkgYSBsaXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ29mIHN0cmluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWUuIChUaGUgbmFtZSBpcyBpbnRlbmRlZCB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICdtYXRjaFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgInJlYWRsaW5lcygpIjsgIndyaXRlbGluZXMoKSIgZG9lcyBub3QgYWRkIGxpbmUgJworICAgICAgICAgICAgICAgICAgICAgICAnc2VwYXJhdG9ycy4pXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGVzIHN1cHBvcnQgdGhlIGl0ZXJhdG9yIHByb3RvY29sLiAgRWFjaCBpdGVyYXRpb24gJworICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJucyB0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgICAncmVzdWx0IGFzICJyZWFkbGluZSgpIiwgYW5kIGl0ZXJhdGlvbiBlbmRzIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyJyZWFkbGluZSgpIlxuJworICAgICAgICAgICAgICAgICAgICAgICAnbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdGaWxlIG9iamVjdHMgYWxzbyBvZmZlciBhIG51bWJlciBvZiBvdGhlciBpbnRlcmVzdGluZyAnCisgICAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnVGhlc2UgYXJlIG5vdCByZXF1aXJlZCBmb3IgZmlsZS1saWtlIG9iamVjdHMsIGJ1dCAnCisgICAgICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGlmIHRoZXkgbWFrZSBzZW5zZSBmb3IgdGhlIHBhcnRpY3VsYXIgJworICAgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLmNsb3NlZFxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBib29sIGluZGljYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGZpbGUgJworICAgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0LiAgVGhpcyBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICByZWFkLW9ubHkgYXR0cmlidXRlOyB0aGUgImNsb3NlKCkiIG1ldGhvZCBjaGFuZ2VzICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSB2YWx1ZS4gSXQgbWF5XG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBub3QgYmUgYXZhaWxhYmxlIG9uIGFsbCBmaWxlLWxpa2Ugb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnZmlsZS5lbmNvZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBUaGUgZW5jb2RpbmcgdGhhdCB0aGlzIGZpbGUgdXNlcy4gV2hlbiBVbmljb2RlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MgYXJlIHdyaXR0ZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIHRvIGEgZmlsZSwgdGhleSB3aWxsIGJlIGNvbnZlcnRlZCB0byBieXRlIHN0cmluZ3MgJworICAgICAgICAgICAgICAgICAgICAgICAndXNpbmcgdGhpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgZW5jb2RpbmcuIEluIGFkZGl0aW9uLCB3aGVuIHRoZSBmaWxlIGlzIGNvbm5lY3RlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICd0byBhIHRlcm1pbmFsLFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgdGhlIGF0dHJpYnV0ZSBnaXZlcyB0aGUgZW5jb2RpbmcgdGhhdCB0aGUgdGVybWluYWwgJworICAgICAgICAgICAgICAgICAgICAgICAnaXMgbGlrZWx5IHRvIHVzZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgKHRoYXQgIGluZm9ybWF0aW9uIG1pZ2h0IGJlIGluY29ycmVjdCBpZiB0aGUgdXNlciAnCisgICAgICAgICAgICAgICAgICAgICAgICdoYXMgbWlzY29uZmlndXJlZFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgdGhlICB0ZXJtaW5hbCkuIFRoZSBhdHRyaWJ1dGUgaXMgcmVhZC1vbmx5IGFuZCBtYXkgJworICAgICAgICAgICAgICAgICAgICAgICAnbm90IGJlIHByZXNlbnRcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIG9uIGFsbCBmaWxlLWxpa2Ugb2JqZWN0cy4gSXQgbWF5IGFsc28gYmUgIk5vbmUiLCBpbiAnCisgICAgICAgICAgICAgICAgICAgICAgICd3aGljaCBjYXNlIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgZmlsZSB1c2VzIHRoZSBzeXN0ZW0gZGVmYXVsdCBlbmNvZGluZyBmb3IgJworICAgICAgICAgICAgICAgICAgICAgICAnY29udmVydGluZyBVbmljb2RlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAyLjMuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbGUuZXJyb3JzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBVbmljb2RlIGVycm9yIGhhbmRsZXIgdXNlZCBhbG9uZyB3aXRoIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICdlbmNvZGluZy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi42LlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLm1vZGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgVGhlIEkvTyBtb2RlIGZvciB0aGUgZmlsZS4gIElmIHRoZSBmaWxlIHdhcyBjcmVhdGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3VzaW5nIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgIm9wZW4oKSIgYnVpbHQtaW4gZnVuY3Rpb24sIHRoaXMgd2lsbCBiZSB0aGUgdmFsdWUgJworICAgICAgICAgICAgICAgICAgICAgICAnb2YgdGhlICptb2RlKlxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgcGFyYW1ldGVyLiAgVGhpcyBpcyBhIHJlYWQtb25seSBhdHRyaWJ1dGUgYW5kIG1heSAnCisgICAgICAgICAgICAgICAgICAgICAgICdub3QgYmUgcHJlc2VudCBvblxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgYWxsIGZpbGUtbGlrZSBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLm5hbWVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgSWYgdGhlIGZpbGUgb2JqZWN0IHdhcyBjcmVhdGVkIHVzaW5nICJvcGVuKCkiLCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAnbmFtZSBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGZpbGUuIE90aGVyd2lzZSwgc29tZSBzdHJpbmcgdGhhdCBpbmRpY2F0ZXMgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZSBvZiB0aGUgZmlsZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LCBvZiB0aGUgZm9ybSAiPC4uLj4iLiAgVGhpcyBpcyBhIHJlYWQtb25seSAnCisgICAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgYW5kIG1heVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgbm90IGJlIHByZXNlbnQgb24gYWxsIGZpbGUtbGlrZSBvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLm5ld2xpbmVzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIElmIFB5dGhvbiB3YXMgYnVpbHQgd2l0aCAqdW5pdmVyc2FsIG5ld2xpbmVzKiAnCisgICAgICAgICAgICAgICAgICAgICAgICdlbmFibGVkICh0aGUgZGVmYXVsdClcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIHRoaXMgcmVhZC1vbmx5IGF0dHJpYnV0ZSBleGlzdHMsIGFuZCBmb3IgZmlsZXMgJworICAgICAgICAgICAgICAgICAgICAgICAnb3BlbmVkIGluIHVuaXZlcnNhbFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgbmV3bGluZSByZWFkIG1vZGUgaXQga2VlcHMgdHJhY2sgb2YgdGhlIHR5cGVzIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ25ld2xpbmVzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBlbmNvdW50ZXJlZCB3aGlsZSByZWFkaW5nIHRoZSBmaWxlLiBUaGUgdmFsdWVzIGl0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NhbiB0YWtlIGFyZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgIlwnXFxyXCciLCAiXCdcXG5cJyIsICJcJ1xcclxcblwnIiwgIk5vbmUiICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyh1bmtub3duLCBubyBuZXdsaW5lcyByZWFkIHlldCkgb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGEgdHVwbGUgY29udGFpbmluZyBhbGwgdGhlIG5ld2xpbmUgdHlwZXMgc2VlbiwgdG8gJworICAgICAgICAgICAgICAgICAgICAgICAnaW5kaWNhdGUgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgbXVsdGlwbGUgbmV3bGluZSBjb252ZW50aW9ucyB3ZXJlIGVuY291bnRlcmVkLiBGb3IgJworICAgICAgICAgICAgICAgICAgICAgICAnZmlsZXMgbm90IG9wZW5lZFxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgaW4gdW5pdmVyc2FsIG5ld2xpbmVzIHJlYWQgbW9kZSB0aGUgdmFsdWUgb2YgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgd2lsbCBiZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdmaWxlLnNvZnRzcGFjZVxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBCb29sZWFuIHRoYXQgaW5kaWNhdGVzIHdoZXRoZXIgYSBzcGFjZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICAgICAnbmVlZHMgdG8gYmVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIHByaW50ZWQgYmVmb3JlIGFub3RoZXIgdmFsdWUgd2hlbiB1c2luZyB0aGUgInByaW50IiAnCisgICAgICAgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBDbGFzc2VzIHRoYXQgYXJlIHRyeWluZyB0byBzaW11bGF0ZSBhIGZpbGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBhbHNvIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIGEgd3JpdGFibGUgInNvZnRzcGFjZSIgYXR0cmlidXRlLCB3aGljaCBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgICAgICAnaW5pdGlhbGl6ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIHplcm8uICBUaGlzIHdpbGwgYmUgYXV0b21hdGljIGZvciBtb3N0IGNsYXNzZXMgJworICAgICAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgIFB5dGhvbiAoY2FyZSBtYXkgYmUgbmVlZGVkIGZvciBvYmplY3RzIHRoYXQgJworICAgICAgICAgICAgICAgICAgICAgICAnb3ZlcnJpZGUgYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpOyB0eXBlcyBpbXBsZW1lbnRlZCBpbiBDIHdpbGwgaGF2ZSB0byAnCisgICAgICAgICAgICAgICAgICAgICAgICdwcm92aWRlIGEgd3JpdGFibGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyAgICJzb2Z0c3BhY2UiIGF0dHJpYnV0ZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhpcyBhdHRyaWJ1dGUgaXMgbm90IHVzZWQgdG8gY29udHJvbCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAnInByaW50IlxuJworICAgICAgICAgICAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQsIGJ1dCB0byBhbGxvdyB0aGUgaW1wbGVtZW50YXRpb24gb2YgJworICAgICAgICAgICAgICAgICAgICAgICAnInByaW50IiB0byBrZWVwXG4nCisgICAgICAgICAgICAgICAgICAgICAgICcgICAgIHRyYWNrIG9mIGl0cyBpbnRlcm5hbCBzdGF0ZS5cbicsCisgJ2JsdGluLW51bGwtb2JqZWN0JzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICdUaGUgTnVsbCBPYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICJUaGlzIG9iamVjdCBpcyByZXR1cm5lZCBieSBmdW5jdGlvbnMgdGhhdCBkb24ndCAiCisgICAgICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgcmV0dXJuIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICAndmFsdWUuICBJdCBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyAnCisgICAgICAgICAgICAgICAgICAgICAgJ2V4YWN0bHkgb25lIG51bGxcbicKKyAgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0LCBuYW1lZCAiTm9uZSIgKGEgYnVpbHQtaW4gbmFtZSkuXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICdJdCBpcyB3cml0dGVuIGFzICJOb25lIi5cbicsCisgJ2JsdGluLXR5cGUtb2JqZWN0cyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGUgT2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGUgb2JqZWN0cyByZXByZXNlbnQgdGhlIHZhcmlvdXMgb2JqZWN0IHR5cGVzLiAgQW4gJworICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0J3MgdHlwZSBpc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAnYWNjZXNzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJ0eXBlKCkiLiAgVGhlcmUgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMgb24gdHlwZXMuICBUaGUgc3RhbmRhcmQgbW9kdWxlICJ0eXBlcyIgJworICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyBuYW1lcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCBzdGFuZGFyZCBidWlsdC1pbiB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnVHlwZXMgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAiPHR5cGUgXCdpbnRcJz4iLlxuJywKKyAnYm9vbGVhbnMnOiAnXG4nCisgICAgICAgICAgICAgJ0Jvb2xlYW4gb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIG9yX3Rlc3QgIDo6PSBhbmRfdGVzdCB8IG9yX3Rlc3QgIm9yIiBhbmRfdGVzdFxuJworICAgICAgICAgICAgICcgICBhbmRfdGVzdCA6Oj0gbm90X3Rlc3QgfCBhbmRfdGVzdCAiYW5kIiBub3RfdGVzdFxuJworICAgICAgICAgICAgICcgICBub3RfdGVzdCA6Oj0gY29tcGFyaXNvbiB8ICJub3QiIG5vdF90ZXN0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbiB0aGUgY29udGV4dCBvZiBCb29sZWFuIG9wZXJhdGlvbnMsIGFuZCBhbHNvIHdoZW4gZXhwcmVzc2lvbnMgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAndXNlZCBieSBjb250cm9sIGZsb3cgc3RhdGVtZW50cywgdGhlIGZvbGxvd2luZyB2YWx1ZXMgYXJlICcKKyAgICAgICAgICAgICAnaW50ZXJwcmV0ZWRcbicKKyAgICAgICAgICAgICAnYXMgZmFsc2U6ICJGYWxzZSIsICJOb25lIiwgbnVtZXJpYyB6ZXJvIG9mIGFsbCB0eXBlcywgYW5kIGVtcHR5XG4nCisgICAgICAgICAgICAgJ3N0cmluZ3MgYW5kIGNvbnRhaW5lcnMgKGluY2x1ZGluZyBzdHJpbmdzLCB0dXBsZXMsIGxpc3RzLFxuJworICAgICAgICAgICAgICdkaWN0aW9uYXJpZXMsIHNldHMgYW5kIGZyb3plbnNldHMpLiAgQWxsIG90aGVyIHZhbHVlcyBhcmUgJworICAgICAgICAgICAgICdpbnRlcnByZXRlZFxuJworICAgICAgICAgICAgICdhcyB0cnVlLiAgKFNlZSB0aGUgIl9fbm9uemVyb19fKCkiIHNwZWNpYWwgbWV0aG9kIGZvciBhIHdheSB0byAnCisgICAgICAgICAgICAgJ2NoYW5nZVxuJworICAgICAgICAgICAgICd0aGlzLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvciAibm90IiB5aWVsZHMgIlRydWUiIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSwgJworICAgICAgICAgICAgICciRmFsc2UiXG4nCisgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IGFuZCB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgZmFsc2UsICcKKyAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgJ3ZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uICJ4IG9yIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyB0cnVlLCBpdHMgJworICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICdpcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAncmV0dXJuZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcoTm90ZSB0aGF0IG5laXRoZXIgImFuZCIgbm9yICJvciIgcmVzdHJpY3QgdGhlIHZhbHVlIGFuZCB0eXBlICcKKyAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICdyZXR1cm4gdG8gIkZhbHNlIiBhbmQgIlRydWUiLCBidXQgcmF0aGVyIHJldHVybiB0aGUgbGFzdCAnCisgICAgICAgICAgICAgJ2V2YWx1YXRlZFxuJworICAgICAgICAgICAgICdhcmd1bWVudC4gVGhpcyBpcyBzb21ldGltZXMgdXNlZnVsLCBlLmcuLCBpZiAicyIgaXMgYSBzdHJpbmcgJworICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgJ3Nob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnInMgb3IgXCdmb29cJyIgeWllbGRzIHRoZSBkZXNpcmVkIHZhbHVlLiAgQmVjYXVzZSAibm90IiBoYXMgdG8gJworICAgICAgICAgICAgICdpbnZlbnQgYVxuJworICAgICAgICAgICAgICd2YWx1ZSBhbnl3YXksIGl0IGRvZXMgbm90IGJvdGhlciB0byByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ3R5cGUgYXNcbicKKyAgICAgICAgICAgICAnaXRzIGFyZ3VtZW50LCBzbyBlLmcuLCAibm90IFwnZm9vXCciIHlpZWxkcyAiRmFsc2UiLCBub3QgJworICAgICAgICAgICAgICciXCdcJyIuKVxuJywKKyAnYnJlYWsnOiAnXG4nCisgICAgICAgICAgJ1RoZSAiYnJlYWsiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGJyZWFrX3N0bXQgOjo9ICJicmVhayJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyJicmVhayIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG4nCisgICAgICAgICAgJ2xvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gdGhhdFxuJworICAgICAgICAgICdsb29wLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICcKKyAgICAgICAgICAnImVsc2UiXG4nCisgICAgICAgICAgJ2NsYXVzZSBpZiB0aGUgbG9vcCBoYXMgb25lLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgYSAiZm9yIiBsb29wIGlzIHRlcm1pbmF0ZWQgYnkgImJyZWFrIiwgdGhlIGxvb3AgY29udHJvbCB0YXJnZXRcbicKKyAgICAgICAgICAna2VlcHMgaXRzIGN1cnJlbnQgdmFsdWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdXaGVuICJicmVhayIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAnCisgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICdjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnbG9vcC5cbicsCisgJ2NhbGxhYmxlLXR5cGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiAnCisgICAgICAgICAgICAgICAgICAgJ3RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicsCisgJ2NhbGxzJzogJ1xuJworICAgICAgICAgICdDYWxsc1xuJworICAgICAgICAgICcqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjYWxsIGNhbGxzIGEgY2FsbGFibGUgb2JqZWN0IChlLmcuLCBhICpmdW5jdGlvbiopIHdpdGggYSAnCisgICAgICAgICAgJ3Bvc3NpYmx5XG4nCisgICAgICAgICAgJ2VtcHR5IHNlcmllcyBvZiAqYXJndW1lbnRzKjpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXVxuJworICAgICAgICAgICcgICAgICAgICAgICB8IGV4cHJlc3Npb24gZ2VuZXhwcl9mb3JdICIpIlxuJworICAgICAgICAgICcgICBhcmd1bWVudF9saXN0ICAgICAgICA6Oj0gcG9zaXRpb25hbF9hcmd1bWVudHMgWyIsIiAnCisgICAgICAgICAgJ2tleXdvcmRfYXJndW1lbnRzXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioiIGV4cHJlc3Npb25dIFsiLCIgJworICAgICAgICAgICdrZXl3b3JkX2FyZ3VtZW50c11cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICBbIiwiICIqKiIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkX2FyZ3VtZW50cyBbIiwiICIqIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgIFsiLCIgIioqIiBleHByZXNzaW9uXVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8ICIqIiBleHByZXNzaW9uIFsiLCIga2V5d29yZF9hcmd1bWVudHNdIFsiLCIgJworICAgICAgICAgICciKioiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBleHByZXNzaW9uXG4nCisgICAgICAgICAgJyAgIHBvc2l0aW9uYWxfYXJndW1lbnRzIDo6PSBleHByZXNzaW9uICgiLCIgZXhwcmVzc2lvbikqXG4nCisgICAgICAgICAgJyAgIGtleXdvcmRfYXJndW1lbnRzICAgIDo6PSBrZXl3b3JkX2l0ZW0gKCIsIiBrZXl3b3JkX2l0ZW0pKlxuJworICAgICAgICAgICcgICBrZXl3b3JkX2l0ZW0gICAgICAgICA6Oj0gaWRlbnRpZmllciAiPSIgZXhwcmVzc2lvblxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCBhbmQga2V5d29yZFxuJworICAgICAgICAgICdhcmd1bWVudHMgYnV0IGRvZXMgbm90IGFmZmVjdCB0aGUgc2VtYW50aWNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG4nCisgICAgICAgICAgJ2Z1bmN0aW9ucywgYnVpbHQtaW4gZnVuY3Rpb25zLCBtZXRob2RzIG9mIGJ1aWx0LWluIG9iamVjdHMsIGNsYXNzXG4nCisgICAgICAgICAgJ29iamVjdHMsIG1ldGhvZHMgb2YgY2xhc3MgaW5zdGFuY2VzLCBhbmQgY2VydGFpbiBjbGFzcyBpbnN0YW5jZXNcbicKKyAgICAgICAgICAndGhlbXNlbHZlcyBhcmUgY2FsbGFibGU7IGV4dGVuc2lvbnMgbWF5IGRlZmluZSBhZGRpdGlvbmFsIGNhbGxhYmxlXG4nCisgICAgICAgICAgJ29iamVjdCB0eXBlcykuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBiZWZvcmUgdGhlICcKKyAgICAgICAgICAnY2FsbFxuJworICAgICAgICAgICdpcyBhdHRlbXB0ZWQuICBQbGVhc2UgcmVmZXIgdG8gc2VjdGlvbiBGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnc3ludGF4IG9mIGZvcm1hbCAqcGFyYW1ldGVyKiBsaXN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudHMsIGFzIGZvbGxvd3MuICBGaXJzdCwgYSBsaXN0IG9mIHVuZmlsbGVkIHNsb3RzICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuJworICAgICAgICAgICdhcmd1bWVudHMsIHRoZXkgYXJlIHBsYWNlZCBpbiB0aGUgZmlyc3QgTiBzbG90cy4gIE5leHQsIGZvciBlYWNoXG4nCisgICAgICAgICAgJ2tleXdvcmQgYXJndW1lbnQsIHRoZSBpZGVudGlmaWVyIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZVxuJworICAgICAgICAgICdjb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ2Zvcm1hbFxuJworICAgICAgICAgICdwYXJhbWV0ZXIgbmFtZSwgdGhlIGZpcnN0IHNsb3QgaXMgdXNlZCwgYW5kIHNvIG9uKS4gIElmIHRoZSBzbG90ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnYWxyZWFkeSBmaWxsZWQsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gT3RoZXJ3aXNlLCB0aGVcbicKKyAgICAgICAgICAndmFsdWUgb2YgdGhlIGFyZ3VtZW50IGlzIHBsYWNlZCBpbiB0aGUgc2xvdCwgZmlsbGluZyBpdCAoZXZlbiBpZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdleHByZXNzaW9uIGlzICJOb25lIiwgaXQgZmlsbHMgdGhlIHNsb3QpLiAgV2hlbiBhbGwgYXJndW1lbnRzIGhhdmVcbicKKyAgICAgICAgICAnYmVlbiBwcm9jZXNzZWQsIHRoZSBzbG90cyB0aGF0IGFyZSBzdGlsbCB1bmZpbGxlZCBhcmUgZmlsbGVkIHdpdGggJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyBkZWZhdWx0IHZhbHVlIGZyb20gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgJyhEZWZhdWx0XG4nCisgICAgICAgICAgJ3ZhbHVlcyBhcmUgY2FsY3VsYXRlZCwgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZDsgdGh1cywgYVxuJworICAgICAgICAgICdtdXRhYmxlIG9iamVjdCBzdWNoIGFzIGEgbGlzdCBvciBkaWN0aW9uYXJ5IHVzZWQgYXMgZGVmYXVsdCB2YWx1ZSAnCisgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAiYmUgc2hhcmVkIGJ5IGFsbCBjYWxscyB0aGF0IGRvbid0IHNwZWNpZnkgYW4gYXJndW1lbnQgdmFsdWUgZm9yICIKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgc2xvdDsgdGhpcyBzaG91bGQgdXN1YWxseSBiZSBhdm9pZGVkLikgIElmIHRoZXJlIGFyZSAnCisgICAgICAgICAgJ2FueVxuJworICAgICAgICAgICd1bmZpbGxlZCBzbG90cyBmb3Igd2hpY2ggbm8gZGVmYXVsdCB2YWx1ZSBpcyBzcGVjaWZpZWQsIGEgJworICAgICAgICAgICciVHlwZUVycm9yIlxuJworICAgICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLiAgT3RoZXJ3aXNlLCB0aGUgbGlzdCBvZiBmaWxsZWQgc2xvdHMgaXMgdXNlZCAnCisgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgJ3RoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQW4gaW1wbGVtZW50YXRpb24gbWF5IHByb3ZpZGVcbicKKyAgICAgICAgICAnYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgJworICAgICAgICAgICdldmVuXG4nCisgICAgICAgICAgImlmIHRoZXkgYXJlICduYW1lZCcgZm9yIHRoZSBwdXJwb3NlIG9mIGRvY3VtZW50YXRpb24sIGFuZCB3aGljaFxuIgorICAgICAgICAgICd0aGVyZWZvcmUgY2Fubm90IGJlIHN1cHBsaWVkIGJ5IGtleXdvcmQuICBJbiBDUHl0aG9uLCB0aGlzIGlzIHRoZSAnCisgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAnZm9yIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZCBpbiBDIHRoYXQgdXNlICJQeUFyZ19QYXJzZVR1cGxlKCkiIHRvICcKKyAgICAgICAgICAncGFyc2VcbicKKyAgICAgICAgICAndGhlaXIgYXJndW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlcmUgYXJlIG1vcmUgcG9zaXRpb25hbCBhcmd1bWVudHMgdGhhbiB0aGVyZSBhcmUgZm9ybWFsICcKKyAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgJ3Nsb3RzLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCAnCisgICAgICAgICAgJ3BhcmFtZXRlclxuJworICAgICAgICAgICd1c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0ICcKKyAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgJ3BhcmFtZXRlciByZWNlaXZlcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBwb3NpdGlvbmFsICcKKyAgICAgICAgICAnYXJndW1lbnRzXG4nCisgICAgICAgICAgJyhvciBhbiBlbXB0eSB0dXBsZSBpZiB0aGVyZSB3ZXJlIG5vIGV4Y2VzcyBwb3NpdGlvbmFsIGFyZ3VtZW50cykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiBhbnkga2V5d29yZCBhcmd1bWVudCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZm9ybWFsIHBhcmFtZXRlclxuJworICAgICAgICAgICduYW1lLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQsIHVubGVzcyBhIGZvcm1hbCBwYXJhbWV0ZXJcbicKKyAgICAgICAgICAndXNpbmcgdGhlIHN5bnRheCAiKippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgJworICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAncGFyYW1ldGVyIHJlY2VpdmVzIGEgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBleGNlc3Mga2V5d29yZFxuJworICAgICAgICAgICdhcmd1bWVudHMgKHVzaW5nIHRoZSBrZXl3b3JkcyBhcyBrZXlzIGFuZCB0aGUgYXJndW1lbnQgdmFsdWVzIGFzXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgdmFsdWVzKSwgb3IgYSAobmV3KSBlbXB0eSBkaWN0aW9uYXJ5IGlmIHRoZXJlIHdlcmUgJworICAgICAgICAgICdub1xuJworICAgICAgICAgICdleGNlc3Mga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGUgc3ludGF4ICIqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCwgJworICAgICAgICAgICciZXhwcmVzc2lvbiJcbicKKyAgICAgICAgICAnbXVzdCBldmFsdWF0ZSB0byBhbiBpdGVyYWJsZS4gIEVsZW1lbnRzIGZyb20gdGhpcyBpdGVyYWJsZSBhcmUgJworICAgICAgICAgICd0cmVhdGVkXG4nCisgICAgICAgICAgJ2FzIGlmIHRoZXkgd2VyZSBhZGRpdGlvbmFsIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBpZiB0aGVyZSBhcmVcbicKKyAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudHMgKngxKiwgLi4uLCAqeE4qLCBhbmQgImV4cHJlc3Npb24iIGV2YWx1YXRlcyB0byAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnc2VxdWVuY2UgKnkxKiwgLi4uLCAqeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHdpdGggTStOXG4nCisgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnRzICp4MSosIC4uLiwgKnhOKiwgKnkxKiwgLi4uLCAqeU0qLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYWx0aG91Z2ggdGhlICIqZXhwcmVzc2lvbiIgc3ludGF4ICcKKyAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgJ2FwcGVhciAqYWZ0ZXIqIHNvbWUga2V5d29yZCBhcmd1bWVudHMsIGl0IGlzIHByb2Nlc3NlZCAqYmVmb3JlKiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdrZXl3b3JkIGFyZ3VtZW50cyAoYW5kIHRoZSAiKipleHByZXNzaW9uIiBhcmd1bWVudCwgaWYgYW55IC0tIHNlZVxuJworICAgICAgICAgICdiZWxvdykuICBTbzpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgID4+PiBkZWYgZihhLCBiKTpcbicKKyAgICAgICAgICAnICAgLi4uICAgICBwcmludCBhLCBiXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICA+Pj4gZihiPTEsICooMiwpKVxuJworICAgICAgICAgICcgICAyIDFcbicKKyAgICAgICAgICAnICAgPj4+IGYoYT0xLCAqKDIsKSlcbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgIiAgIFR5cGVFcnJvcjogZigpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJ2EnXG4iCisgICAgICAgICAgJyAgID4+PiBmKDEsICooMiwpKVxuJworICAgICAgICAgICcgICAxIDJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0l0IGlzIHVudXN1YWwgZm9yIGJvdGgga2V5d29yZCBhcmd1bWVudHMgYW5kIHRoZSAiKmV4cHJlc3Npb24iICcKKyAgICAgICAgICAnc3ludGF4XG4nCisgICAgICAgICAgJ3RvIGJlIHVzZWQgaW4gdGhlIHNhbWUgY2FsbCwgc28gaW4gcHJhY3RpY2UgdGhpcyBjb25mdXNpb24gZG9lcyAnCisgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICdhcmlzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIHRoZSBzeW50YXggIioqZXhwcmVzc2lvbiIgYXBwZWFycyBpbiB0aGUgZnVuY3Rpb24gY2FsbCxcbicKKyAgICAgICAgICAnImV4cHJlc3Npb24iIG11c3QgZXZhbHVhdGUgdG8gYSBtYXBwaW5nLCB0aGUgY29udGVudHMgb2Ygd2hpY2ggYXJlXG4nCisgICAgICAgICAgJ3RyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIEluIHRoZSBjYXNlIG9mIGEga2V5d29yZFxuJworICAgICAgICAgICdhcHBlYXJpbmcgaW4gYm90aCAiZXhwcmVzc2lvbiIgYW5kIGFzIGFuIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnQsICcKKyAgICAgICAgICAnYVxuJworICAgICAgICAgICciVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnRm9ybWFsIHBhcmFtZXRlcnMgdXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiXG4nCisgICAgICAgICAgJ2Nhbm5vdCBiZSB1c2VkIGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgc2xvdHMgb3IgYXMga2V5d29yZCBhcmd1bWVudFxuJworICAgICAgICAgICduYW1lcy4gIEZvcm1hbCBwYXJhbWV0ZXJzIHVzaW5nIHRoZSBzeW50YXggIihzdWJsaXN0KSIgY2Fubm90IGJlICcKKyAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICdhcyBrZXl3b3JkIGFyZ3VtZW50IG5hbWVzOyB0aGUgb3V0ZXJtb3N0IHN1Ymxpc3QgY29ycmVzcG9uZHMgdG8gYVxuJworICAgICAgICAgICdzaW5nbGUgdW5uYW1lZCBhcmd1bWVudCBzbG90LCBhbmQgdGhlIGFyZ3VtZW50IHZhbHVlIGlzIGFzc2lnbmVkICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAndGhlIHN1Ymxpc3QgdXNpbmcgdGhlIHVzdWFsIHR1cGxlIGFzc2lnbm1lbnQgcnVsZXMgYWZ0ZXIgYWxsIG90aGVyXG4nCisgICAgICAgICAgJ3BhcmFtZXRlciBwcm9jZXNzaW5nIGlzIGRvbmUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNhbGwgYWx3YXlzIHJldHVybnMgc29tZSB2YWx1ZSwgcG9zc2libHkgIk5vbmUiLCB1bmxlc3MgaXQgcmFpc2VzICcKKyAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAnZXhjZXB0aW9uLiAgSG93IHRoaXMgdmFsdWUgaXMgY29tcHV0ZWQgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiB0aGVcbicKKyAgICAgICAgICAnY2FsbGFibGUgb2JqZWN0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgaXQgaXMtLS1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgdXNlci1kZWZpbmVkIGZ1bmN0aW9uOlxuJworICAgICAgICAgICcgICBUaGUgY29kZSBibG9jayBmb3IgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLCBwYXNzaW5nIGl0IHRoZVxuJworICAgICAgICAgICcgICBhcmd1bWVudCBsaXN0LiAgVGhlIGZpcnN0IHRoaW5nIHRoZSBjb2RlIGJsb2NrIHdpbGwgZG8gaXMgYmluZCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBmb3JtYWwgcGFyYW1ldGVycyB0byB0aGUgYXJndW1lbnRzOyB0aGlzIGlzIGRlc2NyaWJlZCBpbiAnCisgICAgICAgICAgJ3NlY3Rpb25cbicKKyAgICAgICAgICAnICAgRnVuY3Rpb24gZGVmaW5pdGlvbnMuICBXaGVuIHRoZSBjb2RlIGJsb2NrIGV4ZWN1dGVzIGEgInJldHVybiJcbicKKyAgICAgICAgICAnICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiAnCisgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbicKKyAgICAgICAgICAnICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSBCdWlsdC1pbiBGdW5jdGlvbnMgZm9yICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIGRlc2NyaXB0aW9ucyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGNsYXNzIG9iamVjdDpcbicKKyAgICAgICAgICAnICAgQSBuZXcgaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyBpcyByZXR1cm5lZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuJworICAgICAgICAgICcgICBUaGUgY29ycmVzcG9uZGluZyB1c2VyLWRlZmluZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCB3aXRoIGFuICcKKyAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAnICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4nCisgICAgICAgICAgJyAgIGluc3RhbmNlIGJlY29tZXMgdGhlIGZpcnN0IGFyZ3VtZW50LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBjbGFzcyBpbnN0YW5jZTpcbicKKyAgICAgICAgICAnICAgVGhlIGNsYXNzIG11c3QgZGVmaW5lIGEgIl9fY2FsbF9fKCkiIG1ldGhvZDsgdGhlIGVmZmVjdCBpcyB0aGVuICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCisgJ2NsYXNzJzogJ1xuJworICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uc1xuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgJ3R5cGUgaGllcmFyY2h5KTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzZGVmICAgIDo6PSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICI6IiBzdWl0ZVxuJworICAgICAgICAgICcgICBpbmhlcml0YW5jZSA6Oj0gIigiIFtleHByZXNzaW9uX2xpc3RdICIpIlxuJworICAgICAgICAgICcgICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXQgZmlyc3QgZXZhbHVhdGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2luaGVyaXRhbmNlIGxpc3QsIGlmIHByZXNlbnQuICBFYWNoIGl0ZW0gaW4gdGhlIGluaGVyaXRhbmNlIGxpc3RcbicKKyAgICAgICAgICAnc2hvdWxkIGV2YWx1YXRlIHRvIGEgY2xhc3Mgb2JqZWN0IG9yIGNsYXNzIHR5cGUgd2hpY2ggYWxsb3dzXG4nCisgICAgICAgICAgInN1YmNsYXNzaW5nLiAgVGhlIGNsYXNzJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyAiCisgICAgICAgICAgJ2V4ZWN1dGlvblxuJworICAgICAgICAgICdmcmFtZSAoc2VlIHNlY3Rpb24gTmFtaW5nIGFuZCBiaW5kaW5nKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkICcKKyAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAnbmFtZXNwYWNlIGFuZCB0aGUgb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSBzdWl0ZVxuJworICAgICAgICAgICJjb250YWlucyBvbmx5IGZ1bmN0aW9uIGRlZmluaXRpb25zLikgIFdoZW4gdGhlIGNsYXNzJ3Mgc3VpdGUgIgorICAgICAgICAgICdmaW5pc2hlc1xuJworICAgICAgICAgICdleGVjdXRpb24sIGl0cyBleGVjdXRpb24gZnJhbWUgaXMgZGlzY2FyZGVkIGJ1dCBpdHMgbG9jYWwgbmFtZXNwYWNlICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnc2F2ZWQuIFs0XSBBIGNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlICcKKyAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICdmb3IgdGhlIGJhc2UgY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlICcKKyAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgJ2RpY3Rpb25hcnkuICBUaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGVcbicKKyAgICAgICAgICAnb3JpZ2luYWwgbG9jYWwgbmFtZXNwYWNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAiCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdjbGFzcyB2YXJpYWJsZXM7IHRoZXkgYXJlIHNoYXJlZCBieSBhbGwgaW5zdGFuY2VzLiAgVG8gY3JlYXRlICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAndmFyaWFibGVzLCB0aGV5IGNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgJworICAgICAgICAgICdCb3RoXG4nCisgICAgICAgICAgJ2NsYXNzIGFuZCBpbnN0YW5jZSB2YXJpYWJsZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb25cbicKKyAgICAgICAgICAnIiJzZWxmLm5hbWUiIiwgYW5kIGFuIGluc3RhbmNlIHZhcmlhYmxlIGhpZGVzIGEgY2xhc3MgdmFyaWFibGUgJworICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgJ3RoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gQ2xhc3MgdmFyaWFibGVzIGNhbiBiZSAnCisgICAgICAgICAgJ3VzZWRcbicKKyAgICAgICAgICAnYXMgZGVmYXVsdHMgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzIHRoZXJlICcKKyAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgJ2xlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzLiAgRm9yICpuZXctc3R5bGUgY2xhc3MqZXMsIGRlc2NyaXB0b3JzICcKKyAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgJ2JlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlIHZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvblxuJworICAgICAgICAgICdkZXRhaWxzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbnMsIGxpa2UgZnVuY3Rpb24gZGVmaW5pdGlvbnMsIG1heSBiZSB3cmFwcGVkIGJ5IG9uZSAnCisgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgJ21vcmUgKmRlY29yYXRvciogZXhwcmVzc2lvbnMuICBUaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlICcKKyAgICAgICAgICAnZGVjb3JhdG9yXG4nCisgICAgICAgICAgJ2V4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyBmb3IgZnVuY3Rpb25zLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgJworICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICdvYmplY3QsIHdoaWNoIGlzIHRoZW4gYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1sxXSBUaGUgZXhjZXB0aW9uIGlzIHByb3BhZ2F0ZWQgdG8gdGhlIGludm9jYXRpb24gc3RhY2sgdW5sZXNzXG4nCisgICAgICAgICAgJyAgICB0aGVyZSBpcyBhICJmaW5hbGx5IiBjbGF1c2Ugd2hpY2ggaGFwcGVucyB0byByYWlzZSBhbm90aGVyXG4nCisgICAgICAgICAgJyAgICBleGNlcHRpb24uIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1syXSBDdXJyZW50bHksIGNvbnRyb2wgImZsb3dzIG9mZiB0aGUgZW5kIiBleGNlcHQgaW4gdGhlIGNhc2Ugb2ZcbicKKyAgICAgICAgICAnICAgIGFuIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgInJldHVybiIsICJjb250aW51ZSIsIG9yXG4nCisgICAgICAgICAgJyAgICAiYnJlYWsiIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1szXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZVxuJworICAgICAgICAgICcgICAgZnVuY3Rpb24gYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyAiX19kb2NfXyJcbicKKyAgICAgICAgICAiICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvbidzICpkb2NzdHJpbmcqLlxuIgorICAgICAgICAgICdcbicKKyAgICAgICAgICAnWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlIGNsYXNzXG4nCisgICAgICAgICAgJyAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyAiX19kb2NfXyIgaXRlbSBhbmRcbicKKyAgICAgICAgICAiICAgIHRoZXJlZm9yZSB0aGUgY2xhc3MncyAqZG9jc3RyaW5nKi5cbiIsCisgJ2NvbXBhcmlzb25zJzogJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVW5saWtlIEMsIGFsbCBjb21wYXJpc29uIG9wZXJhdGlvbnMgaW4gUHl0aG9uIGhhdmUgdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICdwcmlvcml0eSxcbicKKyAgICAgICAgICAgICAgICAnd2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciAnCisgICAgICAgICAgICAgICAgJ2JpdHdpc2VcbicKKyAgICAgICAgICAgICAgICAnb3BlcmF0aW9uLiAgQWxzbyB1bmxpa2UgQywgZXhwcmVzc2lvbnMgbGlrZSAiYSA8IGIgPCBjIiBoYXZlICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIHRoYXQgaXMgY29udmVudGlvbmFsIGluIG1hdGhlbWF0aWNzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuJworICAgICAgICAgICAgICAgICcgICBjb21wX29wZXJhdG9yIDo6PSAiPCIgfCAiPiIgfCAiPT0iIHwgIj49IiB8ICI8PSIgfCAiPD4iIHwgJworICAgICAgICAgICAgICAgICciIT0iXG4nCisgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgImlzIiBbIm5vdCJdIHwgWyJub3QiXSAiaW4iXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyB5aWVsZCBib29sZWFuIHZhbHVlczogIlRydWUiIG9yICJGYWxzZSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDb21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0byAieCA8IHkgYW5kIHkgPD0geiIsIGV4Y2VwdCB0aGF0ICJ5IiBpcyAnCisgICAgICAgICAgICAgICAgJ2V2YWx1YXRlZCBvbmx5XG4nCisgICAgICAgICAgICAgICAgJ29uY2UgKGJ1dCBpbiBib3RoIGNhc2VzICJ6IiBpcyBub3QgZXZhbHVhdGVkIGF0IGFsbCB3aGVuICJ4IDwgJworICAgICAgICAgICAgICAgICd5IiBpc1xuJworICAgICAgICAgICAgICAgICdmb3VuZCB0byBiZSBmYWxzZSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3JtYWxseSwgaWYgKmEqLCAqYiosICpjKiwgLi4uLCAqeSosICp6KiBhcmUgZXhwcmVzc2lvbnMgYW5kICcKKyAgICAgICAgICAgICAgICAnKm9wMSosXG4nCisgICAgICAgICAgICAgICAgJypvcDIqLCAuLi4sICpvcE4qIGFyZSBjb21wYXJpc29uIG9wZXJhdG9ycywgdGhlbiAiYSBvcDEgYiBvcDIgJworICAgICAgICAgICAgICAgICdjIC4uLiB5XG4nCisgICAgICAgICAgICAgICAgJ29wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4gJworICAgICAgICAgICAgICAgICd6IiwgZXhjZXB0XG4nCisgICAgICAgICAgICAgICAgJ3RoYXQgZWFjaCBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBhdCBtb3N0IG9uY2UuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgImEgb3AxIGIgb3AyIGMiIGRvZXNuXCd0IGltcGx5IGFueSBraW5kIG9mICcKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBiZXR3ZWVuXG4nCisgICAgICAgICAgICAgICAgJyphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgJworICAgICAgICAgICAgICAgICcodGhvdWdoXG4nCisgICAgICAgICAgICAgICAgJ3BlcmhhcHMgbm90IHByZXR0eSkuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgZm9ybXMgIjw+IiBhbmQgIiE9IiBhcmUgZXF1aXZhbGVudDsgZm9yIGNvbnNpc3RlbmN5IHdpdGggJworICAgICAgICAgICAgICAgICdDLCAiIT0iXG4nCisgICAgICAgICAgICAgICAgJ2lzIHByZWZlcnJlZDsgd2hlcmUgIiE9IiBpcyBtZW50aW9uZWQgYmVsb3cgIjw+IiBpcyBhbHNvICcKKyAgICAgICAgICAgICAgICAnYWNjZXB0ZWQuXG4nCisgICAgICAgICAgICAgICAgJ1RoZSAiPD4iIHNwZWxsaW5nIGlzIGNvbnNpZGVyZWQgb2Jzb2xlc2NlbnQuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVmFsdWUgY29tcGFyaXNvbnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvcnMgIjwiLCAiPiIsICI9PSIsICI+PSIsICI8PSIsIGFuZCAiIT0iIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICd0aGUgdmFsdWVzXG4nCisgICAgICAgICAgICAgICAgJ29mIHR3byBvYmplY3RzLiAgVGhlIG9iamVjdHMgZG8gbm90IG5lZWQgdG8gaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgJ3R5cGUuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDaGFwdGVyIE9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXMgc3RhdGVzIHRoYXQgb2JqZWN0cyBoYXZlIGEgJworICAgICAgICAgICAgICAgICd2YWx1ZSAoaW5cbicKKyAgICAgICAgICAgICAgICAnYWRkaXRpb24gdG8gdHlwZSBhbmQgaWRlbnRpdHkpLiAgVGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcyBhICcKKyAgICAgICAgICAgICAgICAncmF0aGVyXG4nCisgICAgICAgICAgICAgICAgJ2Fic3RyYWN0IG5vdGlvbiBpbiBQeXRob246IEZvciBleGFtcGxlLCB0aGVyZSBpcyBubyBjYW5vbmljYWwgJworICAgICAgICAgICAgICAgICdhY2Nlc3NcbicKKyAgICAgICAgICAgICAgICAibWV0aG9kIGZvciBhbiBvYmplY3QncyB2YWx1ZS4gIEFsc28sIHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50ICIKKyAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAndmFsdWUgb2YgYW4gb2JqZWN0IHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBpbiBhIHBhcnRpY3VsYXIgd2F5LCAnCisgICAgICAgICAgICAgICAgJ2UuZy5cbicKKyAgICAgICAgICAgICAgICAnY29tcHJpc2VkIG9mIGFsbCBpdHMgZGF0YSBhdHRyaWJ1dGVzLiBDb21wYXJpc29uIG9wZXJhdG9ycyAnCisgICAgICAgICAgICAgICAgJ2ltcGxlbWVudCBhXG4nCisgICAgICAgICAgICAgICAgJ3BhcnRpY3VsYXIgbm90aW9uIG9mIHdoYXQgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpcy4gIE9uZSBjYW4gJworICAgICAgICAgICAgICAgICd0aGluayBvZlxuJworICAgICAgICAgICAgICAgICd0aGVtIGFzIGRlZmluaW5nIHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaW5kaXJlY3RseSwgYnkgbWVhbnMgJworICAgICAgICAgICAgICAgICdvZiB0aGVpclxuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGltcGxlbWVudGF0aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVHlwZXMgY2FuIGN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yIGJ5IGltcGxlbWVudGluZyAnCisgICAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgICAnIl9fY21wX18oKSIgbWV0aG9kIG9yICpyaWNoIGNvbXBhcmlzb24gbWV0aG9kcyogbGlrZSAnCisgICAgICAgICAgICAgICAgJyJfX2x0X18oKSIsXG4nCisgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZCBpbiBCYXNpYyBjdXN0b21pemF0aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGVxdWFsaXR5IGNvbXBhcmlzb24gKCI9PSIgYW5kICIhPSIpICcKKyAgICAgICAgICAgICAgICAnaXMgYmFzZWRcbicKKyAgICAgICAgICAgICAgICAnb24gdGhlIGlkZW50aXR5IG9mIHRoZSBvYmplY3RzLiAgSGVuY2UsIGVxdWFsaXR5IGNvbXBhcmlzb24gJworICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBpZGVudGl0eSByZXN1bHRzIGluIGVxdWFsaXR5LCBhbmQgJworICAgICAgICAgICAgICAgICdlcXVhbGl0eVxuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIG9mIGluc3RhbmNlcyB3aXRoIGRpZmZlcmVudCBpZGVudGl0aWVzIHJlc3VsdHMgaW5cbicKKyAgICAgICAgICAgICAgICAnaW5lcXVhbGl0eS4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0IGJlaGF2aW9yIGlzIHRoZSAnCisgICAgICAgICAgICAgICAgJ2Rlc2lyZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgJ2FsbCBvYmplY3RzIHNob3VsZCBiZSByZWZsZXhpdmUgKGkuZS4gInggaXMgeSIgaW1wbGllcyAieCA9PSAnCisgICAgICAgICAgICAgICAgJ3kiKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IG9yZGVyIGNvbXBhcmlzb24gKCI8IiwgIj4iLCAiPD0iLCBhbmQgIj49IikgZ2l2ZXMgJworICAgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICAgJ2NvbnNpc3RlbnQgYnV0IGFyYml0cmFyeSBvcmRlci5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyhUaGlzIHVudXN1YWwgZGVmaW5pdGlvbiBvZiBjb21wYXJpc29uIHdhcyB1c2VkIHRvIHNpbXBsaWZ5ICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2Ygb3BlcmF0aW9ucyBsaWtlIHNvcnRpbmcgYW5kIHRoZSAiaW4iIGFuZCAibm90ICcKKyAgICAgICAgICAgICAgICAnaW4iXG4nCisgICAgICAgICAgICAgICAgJ29wZXJhdG9ycy4gSW4gdGhlIGZ1dHVyZSwgdGhlIGNvbXBhcmlzb24gcnVsZXMgZm9yIG9iamVjdHMgJworICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgdHlwZXMgYXJlIGxpa2VseSB0byBjaGFuZ2UuKVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IGVxdWFsaXR5IGNvbXBhcmlzb24sIHRoYXQgJworICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgd2l0aFxuJworICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgaWRlbnRpdGllcyBhcmUgYWx3YXlzIHVuZXF1YWwsIG1heSBiZSBpbiBjb250cmFzdCAnCisgICAgICAgICAgICAgICAgJ3RvIHdoYXRcbicKKyAgICAgICAgICAgICAgICAndHlwZXMgd2lsbCBuZWVkIHRoYXQgaGF2ZSBhIHNlbnNpYmxlIGRlZmluaXRpb24gb2Ygb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAndmFsdWUgYW5kXG4nCisgICAgICAgICAgICAgICAgJ3ZhbHVlLWJhc2VkIGVxdWFsaXR5LiAgU3VjaCB0eXBlcyB3aWxsIG5lZWQgdG8gY3VzdG9taXplICcKKyAgICAgICAgICAgICAgICAndGhlaXJcbicKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBiZWhhdmlvciwgYW5kIGluIGZhY3QsIGEgbnVtYmVyIG9mIGJ1aWx0LWluIHR5cGVzICcKKyAgICAgICAgICAgICAgICAnaGF2ZSBkb25lXG4nCisgICAgICAgICAgICAgICAgJ3RoYXQuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZSBjb21wYXJpc29uIGJlaGF2aW9yIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgJ21vc3RcbicKKyAgICAgICAgICAgICAgICAnaW1wb3J0YW50IGJ1aWx0LWluIHR5cGVzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBOdW1iZXJzIG9mIGJ1aWx0LWluIG51bWVyaWMgdHlwZXMgKE51bWVyaWMgVHlwZXMgLS0tIGludCwgJworICAgICAgICAgICAgICAgICdmbG9hdCxcbicKKyAgICAgICAgICAgICAgICAnICBsb25nLCBjb21wbGV4KSBhbmQgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAnICAiZnJhY3Rpb25zLkZyYWN0aW9uIiBhbmQgImRlY2ltYWwuRGVjaW1hbCIgY2FuIGJlIGNvbXBhcmVkICcKKyAgICAgICAgICAgICAgICAnd2l0aGluXG4nCisgICAgICAgICAgICAgICAgJyAgYW5kIGFjcm9zcyB0aGVpciB0eXBlcywgd2l0aCB0aGUgcmVzdHJpY3Rpb24gdGhhdCBjb21wbGV4ICcKKyAgICAgICAgICAgICAgICAnbnVtYmVycyBkb1xuJworICAgICAgICAgICAgICAgICcgIG5vdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24uICBXaXRoaW4gdGhlIGxpbWl0cyBvZiB0aGUgJworICAgICAgICAgICAgICAgICd0eXBlc1xuJworICAgICAgICAgICAgICAgICcgIGludm9sdmVkLCB0aGV5IGNvbXBhcmUgbWF0aGVtYXRpY2FsbHkgKGFsZ29yaXRobWljYWxseSkgJworICAgICAgICAgICAgICAgICdjb3JyZWN0XG4nCisgICAgICAgICAgICAgICAgJyAgd2l0aG91dCBsb3NzIG9mIHByZWNpc2lvbi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogU3RyaW5ncyAoaW5zdGFuY2VzIG9mICJzdHIiIG9yICJ1bmljb2RlIikgY29tcGFyZVxuJworICAgICAgICAgICAgICAgICcgIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIHRoZSBudW1lcmljIGVxdWl2YWxlbnRzICh0aGUgcmVzdWx0ICcKKyAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgJyAgYnVpbHQtaW4gZnVuY3Rpb24gIm9yZCgpIikgb2YgdGhlaXIgY2hhcmFjdGVycy4gWzRdIFdoZW4gJworICAgICAgICAgICAgICAgICdjb21wYXJpbmdcbicKKyAgICAgICAgICAgICAgICAnICBhbiA4LWJpdCBzdHJpbmcgYW5kIGEgVW5pY29kZSBzdHJpbmcsIHRoZSA4LWJpdCBzdHJpbmcgaXMgJworICAgICAgICAgICAgICAgICdjb252ZXJ0ZWRcbicKKyAgICAgICAgICAgICAgICAnICB0byBVbmljb2RlLiAgSWYgdGhlIGNvbnZlcnNpb24gZmFpbHMsIHRoZSBzdHJpbmdzIGFyZSAnCisgICAgICAgICAgICAgICAgJ2NvbnNpZGVyZWRcbicKKyAgICAgICAgICAgICAgICAnICB1bmVxdWFsLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBJbnN0YW5jZXMgb2YgInR1cGxlIiBvciAibGlzdCIgY2FuIGJlIGNvbXBhcmVkIG9ubHkgd2l0aGluICcKKyAgICAgICAgICAgICAgICAnZWFjaCBvZlxuJworICAgICAgICAgICAgICAgICcgIHRoZWlyIHR5cGVzLiAgRXF1YWxpdHkgY29tcGFyaXNvbiBhY3Jvc3MgdGhlc2UgdHlwZXMgJworICAgICAgICAgICAgICAgICdyZXN1bHRzIGluXG4nCisgICAgICAgICAgICAgICAgJyAgdW5lcXVhbGl0eSwgYW5kIG9yZGVyaW5nIGNvbXBhcmlzb24gYWNyb3NzIHRoZXNlIHR5cGVzICcKKyAgICAgICAgICAgICAgICAnZ2l2ZXMgYW5cbicKKyAgICAgICAgICAgICAgICAnICBhcmJpdHJhcnkgb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFRoZXNlIHNlcXVlbmNlcyBjb21wYXJlIGxleGljb2dyYXBoaWNhbGx5IHVzaW5nIGNvbXBhcmlzb24gJworICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICcgIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMsIHdoZXJlYnkgcmVmbGV4aXZpdHkgb2YgdGhlIGVsZW1lbnRzICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnICBlbmZvcmNlZC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgSW4gZW5mb3JjaW5nIHJlZmxleGl2aXR5IG9mIGVsZW1lbnRzLCB0aGUgY29tcGFyaXNvbiBvZiAnCisgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgJyAgYXNzdW1lcyB0aGF0IGZvciBhIGNvbGxlY3Rpb24gZWxlbWVudCAieCIsICJ4ID09IHgiIGlzICcKKyAgICAgICAgICAgICAgICAnYWx3YXlzIHRydWUuXG4nCisgICAgICAgICAgICAgICAgJyAgQmFzZWQgb24gdGhhdCBhc3N1bXB0aW9uLCBlbGVtZW50IGlkZW50aXR5IGlzIGNvbXBhcmVkICcKKyAgICAgICAgICAgICAgICAnZmlyc3QsIGFuZFxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnQgY29tcGFyaXNvbiBpcyBwZXJmb3JtZWQgb25seSBmb3IgZGlzdGluY3QgJworICAgICAgICAgICAgICAgICdlbGVtZW50cy4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAnICBhcHByb2FjaCB5aWVsZHMgdGhlIHNhbWUgcmVzdWx0IGFzIGEgc3RyaWN0IGVsZW1lbnQgJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgJyAgd291bGQsIGlmIHRoZSBjb21wYXJlZCBlbGVtZW50cyBhcmUgcmVmbGV4aXZlLiAgRm9yICcKKyAgICAgICAgICAgICAgICAnbm9uLXJlZmxleGl2ZVxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnRzLCB0aGUgcmVzdWx0IGlzIGRpZmZlcmVudCB0aGFuIGZvciBzdHJpY3QgZWxlbWVudFxuJworICAgICAgICAgICAgICAgICcgIGNvbXBhcmlzb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIExleGljb2dyYXBoaWNhbCBjb21wYXJpc29uIGJldHdlZW4gYnVpbHQtaW4gY29sbGVjdGlvbnMgJworICAgICAgICAgICAgICAgICd3b3JrcyBhc1xuJworICAgICAgICAgICAgICAgICcgIGZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICogRm9yIHR3byBjb2xsZWN0aW9ucyB0byBjb21wYXJlIGVxdWFsLCB0aGV5IG11c3QgYmUgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICcgICAgdHlwZSwgaGF2ZSB0aGUgc2FtZSBsZW5ndGgsIGFuZCBlYWNoIHBhaXIgb2YgJworICAgICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nXG4nCisgICAgICAgICAgICAgICAgJyAgICBlbGVtZW50cyBtdXN0IGNvbXBhcmUgZXF1YWwgKGZvciBleGFtcGxlLCAiWzEsMl0gPT0gJworICAgICAgICAgICAgICAgICcoMSwyKSIgaXNcbicKKyAgICAgICAgICAgICAgICAnICAgIGZhbHNlIGJlY2F1c2UgdGhlIHR5cGUgaXMgbm90IHRoZSBzYW1lKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgKiBDb2xsZWN0aW9ucyBhcmUgb3JkZXJlZCB0aGUgc2FtZSBhcyB0aGVpciBmaXJzdCB1bmVxdWFsICcKKyAgICAgICAgICAgICAgICAnZWxlbWVudHNcbicKKyAgICAgICAgICAgICAgICAnICAgIChmb3IgZXhhbXBsZSwgImNtcChbMSwyLHhdLCBbMSwyLHldKSIgcmV0dXJucyB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgICAgJyAgICAiY21wKHgseSkiKS4gIElmIGEgY29ycmVzcG9uZGluZyBlbGVtZW50IGRvZXMgbm90IGV4aXN0LCAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICcgICAgc2hvcnRlciBjb2xsZWN0aW9uIGlzIG9yZGVyZWQgZmlyc3QgKGZvciBleGFtcGxlLCAiWzEsMl0gJworICAgICAgICAgICAgICAgICc8XG4nCisgICAgICAgICAgICAgICAgJyAgICBbMSwyLDNdIiBpcyB0cnVlKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTWFwcGluZ3MgKGluc3RhbmNlcyBvZiAiZGljdCIpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgJworICAgICAgICAgICAgICAgICd0aGV5XG4nCisgICAgICAgICAgICAgICAgJyAgaGF2ZSBlcXVhbCAqKGtleSwgdmFsdWUpKiBwYWlycy4gRXF1YWxpdHkgY29tcGFyaXNvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICdrZXlzIGFuZFxuJworICAgICAgICAgICAgICAgICcgIHZhbHVlcyBlbmZvcmNlcyByZWZsZXhpdml0eS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgT3V0Y29tZXMgb3RoZXIgdGhhbiBlcXVhbGl0eSBhcmUgcmVzb2x2ZWQgY29uc2lzdGVudGx5LCBidXQgJworICAgICAgICAgICAgICAgICdhcmUgbm90XG4nCisgICAgICAgICAgICAgICAgJyAgb3RoZXJ3aXNlIGRlZmluZWQuIFs1XVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBNb3N0IG90aGVyIG9iamVjdHMgb2YgYnVpbHQtaW4gdHlwZXMgY29tcGFyZSB1bmVxdWFsIHVubGVzcyAnCisgICAgICAgICAgICAgICAgJ3RoZXlcbicKKyAgICAgICAgICAgICAgICAnICBhcmUgdGhlIHNhbWUgb2JqZWN0OyB0aGUgY2hvaWNlIHdoZXRoZXIgb25lIG9iamVjdCBpcyAnCisgICAgICAgICAgICAgICAgJ2NvbnNpZGVyZWRcbicKKyAgICAgICAgICAgICAgICAnICBzbWFsbGVyIG9yIGxhcmdlciB0aGFuIGFub3RoZXIgb25lIGlzIG1hZGUgYXJiaXRyYXJpbHkgYnV0XG4nCisgICAgICAgICAgICAgICAgJyAgY29uc2lzdGVudGx5IHdpdGhpbiBvbmUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1VzZXItZGVmaW5lZCBjbGFzc2VzIHRoYXQgY3VzdG9taXplIHRoZWlyIGNvbXBhcmlzb24gYmVoYXZpb3IgJworICAgICAgICAgICAgICAgICdzaG91bGRcbicKKyAgICAgICAgICAgICAgICAnZm9sbG93IHNvbWUgY29uc2lzdGVuY3kgcnVsZXMsIGlmIHBvc3NpYmxlOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBFcXVhbGl0eSBjb21wYXJpc29uIHNob3VsZCBiZSByZWZsZXhpdmUuIEluIG90aGVyIHdvcmRzLCAnCisgICAgICAgICAgICAgICAgJ2lkZW50aWNhbFxuJworICAgICAgICAgICAgICAgICcgIG9iamVjdHMgc2hvdWxkIGNvbXBhcmUgZXF1YWw6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4IGlzIHkiIGltcGxpZXMgInggPT0geSJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogQ29tcGFyaXNvbiBzaG91bGQgYmUgc3ltbWV0cmljLiBJbiBvdGhlciB3b3JkcywgdGhlICcKKyAgICAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgICAgJyAgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgcmVzdWx0OlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA9PSB5IiBhbmQgInkgPT0geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggIT0geSIgYW5kICJ5ICE9IHgiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4IDwgeSIgYW5kICJ5ID4geCJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPD0geSIgYW5kICJ5ID49IHgiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIENvbXBhcmlzb24gc2hvdWxkIGJlIHRyYW5zaXRpdmUuIFRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICcobm9uLWV4aGF1c3RpdmUpXG4nCisgICAgICAgICAgICAgICAgJyAgZXhhbXBsZXMgaWxsdXN0cmF0ZSB0aGF0OlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA+IHkgYW5kIHkgPiB6IiBpbXBsaWVzICJ4ID4geiJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPCB5IGFuZCB5IDw9IHoiIGltcGxpZXMgInggPCB6IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBJbnZlcnNlIGNvbXBhcmlzb24gc2hvdWxkIHJlc3VsdCBpbiB0aGUgYm9vbGVhbiBuZWdhdGlvbi4gJworICAgICAgICAgICAgICAgICdJbiBvdGhlclxuJworICAgICAgICAgICAgICAgICcgIHdvcmRzLCB0aGUgZm9sbG93aW5nIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAncmVzdWx0OlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA9PSB5IiBhbmQgIm5vdCB4ICE9IHkiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4IDwgeSIgYW5kICJub3QgeCA+PSB5IiAoZm9yIHRvdGFsIG9yZGVyaW5nKVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA+IHkiIGFuZCAibm90IHggPD0geSIgKGZvciB0b3RhbCBvcmRlcmluZylcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgVGhlIGxhc3QgdHdvIGV4cHJlc3Npb25zIGFwcGx5IHRvIHRvdGFsbHkgb3JkZXJlZCAnCisgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zIChlLmcuXG4nCisgICAgICAgICAgICAgICAgJyAgdG8gc2VxdWVuY2VzLCBidXQgbm90IHRvIHNldHMgb3IgbWFwcGluZ3MpLiBTZWUgYWxzbyB0aGVcbicKKyAgICAgICAgICAgICAgICAnICAidG90YWxfb3JkZXJpbmcoKSIgZGVjb3JhdG9yLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBUaGUgImhhc2goKSIgcmVzdWx0IHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggZXF1YWxpdHkuICcKKyAgICAgICAgICAgICAgICAnT2JqZWN0c1xuJworICAgICAgICAgICAgICAgICcgIHRoYXQgYXJlIGVxdWFsIHNob3VsZCBlaXRoZXIgaGF2ZSB0aGUgc2FtZSBoYXNoIHZhbHVlLCBvciAnCisgICAgICAgICAgICAgICAgJ2JlIG1hcmtlZFxuJworICAgICAgICAgICAgICAgICcgIGFzIHVuaGFzaGFibGUuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdQeXRob24gZG9lcyBub3QgZW5mb3JjZSB0aGVzZSBjb25zaXN0ZW5jeSBydWxlcy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdNZW1iZXJzaGlwIHRlc3Qgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gJworICAgICAgICAgICAgICAgICdzIlxuJworICAgICAgICAgICAgICAgICdldmFsdWF0ZXMgdG8gIlRydWUiIGlmICp4KiBpcyBhIG1lbWJlciBvZiAqcyosIGFuZCAiRmFsc2UiICcKKyAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICcieCBub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICdzZXF1ZW5jZXNcbicKKyAgICAgICAgICAgICAgICAnYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggJworICAgICAgICAgICAgICAgICciaW4iIHRlc3RzXG4nCisgICAgICAgICAgICAgICAgJ3doZXRoZXIgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzICcKKyAgICAgICAgICAgICAgICAnc3VjaCBhc1xuJworICAgICAgICAgICAgICAgICdsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbicKKyAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSAnCisgICAgICAgICAgICAgICAgJ2ZvciBlIGluXG4nCisgICAgICAgICAgICAgICAgJ3kpIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0ZvciB0aGUgc3RyaW5nIGFuZCBieXRlcyB0eXBlcywgInggaW4geSIgaXMgIlRydWUiIGlmIGFuZCAnCisgICAgICAgICAgICAgICAgJ29ubHkgaWYgKngqXG4nCisgICAgICAgICAgICAgICAgJ2lzIGEgc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9ICcKKyAgICAgICAgICAgICAgICAnLTEiLlxuJworICAgICAgICAgICAgICAgICdFbXB0eSBzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgJworICAgICAgICAgICAgICAgICdvdGhlclxuJworICAgICAgICAgICAgICAgICdzdHJpbmcsIHNvICIiIiBpbiAiYWJjIiIgd2lsbCByZXR1cm4gIlRydWUiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiAnCisgICAgICAgICAgICAgICAgJ21ldGhvZCwgInhcbicKKyAgICAgICAgICAgICAgICAnaW4geSIgcmV0dXJucyAiVHJ1ZSIgaWYgInkuX19jb250YWluc19fKHgpIiByZXR1cm5zIGEgdHJ1ZSAnCisgICAgICAgICAgICAgICAgJ3ZhbHVlLCBhbmRcbicKKyAgICAgICAgICAgICAgICAnIkZhbHNlIiBvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSAiX19jb250YWluc19fKCkiICcKKyAgICAgICAgICAgICAgICAnYnV0IGRvXG4nCisgICAgICAgICAgICAgICAgJ2RlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzICJUcnVlIiBpZiBzb21lIHZhbHVlICJ6IiAnCisgICAgICAgICAgICAgICAgJ3dpdGggInggPT1cbicKKyAgICAgICAgICAgICAgICAneiIgaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAgICAncmFpc2VkXG4nCisgICAgICAgICAgICAgICAgJ2R1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgJ2RlZmluZXNcbicKKyAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLCAieCBpbiB5IiBpcyAiVHJ1ZSIgaWYgYW5kIG9ubHkgaWYgdGhlcmUgaXMgYSAnCisgICAgICAgICAgICAgICAgJ25vbi1cbicKKyAgICAgICAgICAgICAgICAnbmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsICcKKyAgICAgICAgICAgICAgICAnbG93ZXJcbicKKyAgICAgICAgICAgICAgICAnaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAoSWYgYW55ICcKKyAgICAgICAgICAgICAgICAnb3RoZXJcbicKKyAgICAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCAnCisgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbikuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgJworICAgICAgICAgICAgICAgICd2YWx1ZSBvZlxuJworICAgICAgICAgICAgICAgICciaW4iLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aXR5IGNvbXBhcmlzb25zXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3JzICJpcyIgYW5kICJpcyBub3QiIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogInggJworICAgICAgICAgICAgICAgICdpcyB5IiBpc1xuJworICAgICAgICAgICAgICAgICd0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBhbmQgKnkqIGFyZSB0aGUgc2FtZSBvYmplY3QuICAieCBpcyAnCisgICAgICAgICAgICAgICAgJ25vdCB5IlxuJworICAgICAgICAgICAgICAgICd5aWVsZHMgdGhlIGludmVyc2UgdHJ1dGggdmFsdWUuIFs2XVxuJywKKyAnY29tcG91bmQnOiAnXG4nCisgICAgICAgICAgICAgJ0NvbXBvdW5kIHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgJworICAgICAgICAgICAgICdhZmZlY3RcbicKKyAgICAgICAgICAgICAnb3IgY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRob3NlIG90aGVyIHN0YXRlbWVudHMgaW4gc29tZSB3YXkuICAnCisgICAgICAgICAgICAgJ0luXG4nCisgICAgICAgICAgICAgJ2dlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gJworICAgICAgICAgICAgICdzaW1wbGVcbicKKyAgICAgICAgICAgICAnaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lICcKKyAgICAgICAgICAgICAnbGluZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaWYiLCAid2hpbGUiIGFuZCAiZm9yIiBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbCAnCisgICAgICAgICAgICAgJ2NvbnRyb2xcbicKKyAgICAgICAgICAgICAnZmxvdyBjb25zdHJ1Y3RzLiAgInRyeSIgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgJworICAgICAgICAgICAgICdjbGVhbnVwXG4nCisgICAgICAgICAgICAgJ2NvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cy4gIEZ1bmN0aW9uIGFuZCBjbGFzcyBkZWZpbml0aW9ucyAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdhbHNvIHN5bnRhY3RpY2FsbHkgY29tcG91bmQgc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkNvbXBvdW5kIHN0YXRlbWVudHMgY29uc2lzdCBvZiBvbmUgb3IgbW9yZSAnY2xhdXNlcy4nICBBIGNsYXVzZVxuIgorICAgICAgICAgICAgICJjb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSAnc3VpdGUuJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbiIKKyAgICAgICAgICAgICAncGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiAnCisgICAgICAgICAgICAgJ2xldmVsLlxuJworICAgICAgICAgICAgICdFYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkICcKKyAgICAgICAgICAgICAnYW5kIGVuZHNcbicKKyAgICAgICAgICAgICAnd2l0aCBhIGNvbG9uLiAgQSBzdWl0ZSBpcyBhIGdyb3VwIG9mIHN0YXRlbWVudHMgY29udHJvbGxlZCBieSBhXG4nCisgICAgICAgICAgICAgJ2NsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlICcKKyAgICAgICAgICAgICAiaGVhZGVyJ3NcbiIKKyAgICAgICAgICAgICAnY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uICcKKyAgICAgICAgICAgICAnc3Vic2VxdWVudFxuJworICAgICAgICAgICAgICdsaW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCAnCisgICAgICAgICAgICAgJ2NvbXBvdW5kXG4nCisgICAgICAgICAgICAgInN0YXRlbWVudHM7IHRoZSBmb2xsb3dpbmcgaXMgaWxsZWdhbCwgbW9zdGx5IGJlY2F1c2UgaXQgd291bGRuJ3QgIgorICAgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAgICdjbGVhciB0byB3aGljaCAiaWYiIGNsYXVzZSBhIGZvbGxvd2luZyAiZWxzZSIgY2xhdXNlIHdvdWxkICcKKyAgICAgICAgICAgICAnYmVsb25nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaWYgdGVzdDE6IGlmIHRlc3QyOiBwcmludCB4XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2NvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnInByaW50IiBzdGF0ZW1lbnRzIGFyZSBleGVjdXRlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGlmIHggPCB5IDwgejogcHJpbnQgeDsgcHJpbnQgeTsgcHJpbnQgelxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU3VtbWFyaXppbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBjb21wb3VuZF9zdG10IDo6PSBpZl9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgdHJ5X3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgY2xhc3NkZWZcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBkZWNvcmF0ZWRcbicKKyAgICAgICAgICAgICAnICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCAnCisgICAgICAgICAgICAgJ3N0YXRlbWVudCsgREVERU5UXG4nCisgICAgICAgICAgICAgJyAgIHN0YXRlbWVudCAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgY29tcG91bmRfc3RtdFxuJworICAgICAgICAgICAgICcgICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCBzdGF0ZW1lbnRzIGFsd2F5cyBlbmQgaW4gYSAiTkVXTElORSIgcG9zc2libHkgZm9sbG93ZWQgJworICAgICAgICAgICAgICdieSBhXG4nCisgICAgICAgICAgICAgJyJERURFTlQiLiBBbHNvIG5vdGUgdGhhdCBvcHRpb25hbCBjb250aW51YXRpb24gY2xhdXNlcyBhbHdheXMgJworICAgICAgICAgICAgICdiZWdpblxuJworICAgICAgICAgICAgICd3aXRoIGEga2V5d29yZCB0aGF0IGNhbm5vdCBzdGFydCBhIHN0YXRlbWVudCwgdGh1cyB0aGVyZSBhcmUgbm9cbicKKyAgICAgICAgICAgICAnYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nICJlbHNlIlwnIHByb2JsZW0gaXMgc29sdmVkIGluIFB5dGhvbiAnCisgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgJ3JlcXVpcmluZyBuZXN0ZWQgImlmIiBzdGF0ZW1lbnRzIHRvIGJlIGluZGVudGVkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb3JtYXR0aW5nIG9mIHRoZSBncmFtbWFyIHJ1bGVzIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMgJworICAgICAgICAgICAgICdwbGFjZXNcbicKKyAgICAgICAgICAgICAnZWFjaCBjbGF1c2Ugb24gYSBzZXBhcmF0ZSBsaW5lIGZvciBjbGFyaXR5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgb25lXG4nCisgICAgICAgICAgICAgJ2J5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gQm9vbGVhbiAnCisgICAgICAgICAgICAgJ29wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAnZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICAgICAnKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciAnCisgICAgICAgICAgICAgJ2V2YWx1YXRlZCkuXG4nCisgICAgICAgICAgICAgJ0lmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgJworICAgICAgICAgICAgICdpZlxuJworICAgICAgICAgICAgICdwcmVzZW50LCBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzIHRydWU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgJworICAgICAgICAgICAgICdleGVjdXRlcyB0aGVcbicKKyAgICAgICAgICAgICAnZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0ICcKKyAgICAgICAgICAgICAndGltZVxuJworICAgICAgICAgICAgICdpdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgJworICAgICAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgICAgICdhbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlICcKKyAgICAgICAgICAgICAnbG9vcFxuJworICAgICAgICAgICAgICd3aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiAnCisgICAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAgICdleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzICcKKyAgICAgICAgICAgICAnYmFja1xuJworICAgICAgICAgICAgICd0byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJyhzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBmb3Jfc3RtdCA6Oj0gImZvciIgdGFyZ2V0X2xpc3QgImluIiBleHByZXNzaW9uX2xpc3QgIjoiICcKKyAgICAgICAgICAgICAnc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuICcKKyAgICAgICAgICAgICAnaXRlcmFibGVcbicKKyAgICAgICAgICAgICAnb2JqZWN0LiAgQW4gaXRlcmF0b3IgaXMgY3JlYXRlZCBmb3IgdGhlIHJlc3VsdCBvZiB0aGVcbicKKyAgICAgICAgICAgICAnImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoICcKKyAgICAgICAgICAgICAnaXRlbVxuJworICAgICAgICAgICAgICdwcm92aWRlZCBieSB0aGUgaXRlcmF0b3IsIGluIHRoZSBvcmRlciBvZiBhc2NlbmRpbmcgaW5kaWNlcy4gICcKKyAgICAgICAgICAgICAnRWFjaFxuJworICAgICAgICAgICAgICdpdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCAnCisgICAgICAgICAgICAgJ3J1bGVzXG4nCisgICAgICAgICAgICAgJ2ZvciBhc3NpZ25tZW50cywgYW5kIHRoZW4gdGhlIHN1aXRlIGlzIGV4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSB3aGVuIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSksIHRoZSAnCisgICAgICAgICAgICAgJ3N1aXRlXG4nCisgICAgICAgICAgICAgJ2luIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG4nCisgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSAnCisgICAgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgJworICAgICAgICAgICAgICdjb250aW51ZXNcbicKKyAgICAgICAgICAgICAnd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIHdhcyBubyAnCisgICAgICAgICAgICAgJ25leHRcbicKKyAgICAgICAgICAgICAnaXRlbS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBzdWl0ZSBtYXkgYXNzaWduIHRvIHRoZSB2YXJpYWJsZShzKSBpbiB0aGUgdGFyZ2V0IGxpc3Q7IHRoaXMgJworICAgICAgICAgICAgICdkb2VzXG4nCisgICAgICAgICAgICAgJ25vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSB0YXJnZXQgbGlzdCBpcyBub3QgZGVsZXRlZCB3aGVuIHRoZSBsb29wIGlzIGZpbmlzaGVkLCBidXQgaWYgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnc2VxdWVuY2UgaXMgZW1wdHksIGl0IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdCBhbGwgYnkgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnaW50ZWdlcnMgc3VpdGFibGUgdG8gZW11bGF0ZSB0aGUgZWZmZWN0IG9mIFBhc2NhbFwncyAiZm9yIGkgOj0gYSAnCisgICAgICAgICAgICAgJ3RvIGJcbicKKyAgICAgICAgICAgICAnZG8iOyBlLmcuLCAicmFuZ2UoMykiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAnCisgICAgICAgICAgICAgJ0FuXG4nCisgICAgICAgICAgICAgJyAgaW50ZXJuYWwgY291bnRlciBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hpY2ggaXRlbSBpcyB1c2VkICcKKyAgICAgICAgICAgICAnbmV4dCxcbicKKyAgICAgICAgICAgICAnICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyICcKKyAgICAgICAgICAgICAnaGFzXG4nCisgICAgICAgICAgICAgJyAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyAnCisgICAgICAgICAgICAgJ21lYW5zXG4nCisgICAgICAgICAgICAgJyAgdGhhdCBpZiB0aGUgc3VpdGUgZGVsZXRlcyB0aGUgY3VycmVudCAob3IgYSBwcmV2aW91cykgaXRlbSAnCisgICAgICAgICAgICAgJ2Zyb20gdGhlXG4nCisgICAgICAgICAgICAgJyAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSAnCisgICAgICAgICAgICAgJ2luZGV4IG9mXG4nCisgICAgICAgICAgICAgJyAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsICcKKyAgICAgICAgICAgICAnaWYgdGhlXG4nCisgICAgICAgICAgICAgJyAgc3VpdGUgaW5zZXJ0cyBhbiBpdGVtIGluIHRoZSBzZXF1ZW5jZSBiZWZvcmUgdGhlIGN1cnJlbnQgaXRlbSwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICdsb29wLlxuJworICAgICAgICAgICAgICcgIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4nCisgICAgICAgICAgICAgJyAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgIGZvciB4IGluIGFbOl06XG4nCisgICAgICAgICAgICAgJyAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAidHJ5IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwICcKKyAgICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAgICdmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWygiYXMiIHwgIiwiKSAnCisgICAgICAgICAgICAgJ2lkZW50aWZpZXJdXSAiOiIgc3VpdGUpK1xuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICAgICcgICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAyLjU6IEluIHByZXZpb3VzIHZlcnNpb25zIG9mIFB5dGhvbixcbicKKyAgICAgICAgICAgICAnInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IiBkaWQgbm90IHdvcmsuICJ0cnkiLi4uImV4Y2VwdCIgaGFkICcKKyAgICAgICAgICAgICAndG8gYmVcbicKKyAgICAgICAgICAgICAnbmVzdGVkIGluICJ0cnkiLi4uImZpbmFsbHkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gJworICAgICAgICAgICAgICdXaGVuIG5vXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoICcKKyAgICAgICAgICAgICAnZm9yIGFuXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0ICcKKyAgICAgICAgICAgICAnY2xhdXNlc1xuJworICAgICAgICAgICAgICdpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi1cbicKKyAgICAgICAgICAgICAnbGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlICcKKyAgICAgICAgICAgICAncmVzdWx0aW5nXG4nCisgICAgICAgICAgICAgJ29iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzICcKKyAgICAgICAgICAgICAnY29tcGF0aWJsZVxuJworICAgICAgICAgICAgICd3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICdvYmplY3QsIG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uICcKKyAgICAgICAgICAgICAnc3RhY2suXG4nCisgICAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCAnCisgICAgICAgICAgICAgJ2NsYXVzZVxuJworICAgICAgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgJworICAgICAgICAgICAgICdjYW5jZWxlZCBhbmRcbicKKyAgICAgICAgICAgICAnYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSAnCisgICAgICAgICAgICAgJ2FuZCBvblxuJworICAgICAgICAgICAgICd0aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCAnCisgICAgICAgICAgICAgJ3JhaXNlZFxuJworICAgICAgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG9cbicKKyAgICAgICAgICAgICAndGhlIHRhcmdldCBzcGVjaWZpZWQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBhbmQgdGhlICcKKyAgICAgICAgICAgICAnZXhjZXB0XG4nCisgICAgICAgICAgICAgImNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdCBjbGF1c2VzIG11c3QgaGF2ZSBhblxuIgorICAgICAgICAgICAgICdleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXMgcmVhY2hlZCwgJworICAgICAgICAgICAgICdleGVjdXRpb25cbicKKyAgICAgICAgICAgICAnY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC4gIChUaGlzIG1lYW5zICcKKyAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICdpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sIGFuZCB0aGUgJworICAgICAgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgICAgICAnb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGUgb3V0ZXIgaGFuZGxlciAnCisgICAgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAgICAnbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG4iCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBhcmUgYXNzaWduZWQgdG8gdGhyZWUgdmFyaWFibGVzIGluIHRoZSAic3lzIiBtb2R1bGU6XG4nCisgICAgICAgICAgICAgJyJzeXMuZXhjX3R5cGUiIHJlY2VpdmVzIHRoZSBvYmplY3QgaWRlbnRpZnlpbmcgdGhlIGV4Y2VwdGlvbjtcbicKKyAgICAgICAgICAgICAnInN5cy5leGNfdmFsdWUiIHJlY2VpdmVzIHRoZSBleGNlcHRpb25cJ3MgcGFyYW1ldGVyO1xuJworICAgICAgICAgICAgICcic3lzLmV4Y190cmFjZWJhY2siIHJlY2VpdmVzIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlIHNlY3Rpb24gJworICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAnc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpbiB0aGUgcHJvZ3JhbSAnCisgICAgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgICAgJ3RoZSBleGNlcHRpb24gb2NjdXJyZWQuIFRoZXNlIGRldGFpbHMgYXJlIGFsc28gYXZhaWxhYmxlIHRocm91Z2ggJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnInN5cy5leGNfaW5mbygpIiBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBhIHR1cGxlICIoZXhjX3R5cGUsXG4nCisgICAgICAgICAgICAgJ2V4Y192YWx1ZSwgZXhjX3RyYWNlYmFjaykiLiAgVXNlIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhcmlhYmxlcyAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhpcyBmdW5jdGlvbiwgc2luY2UgdGhlaXIgdXNlIGlzIHVuc2FmZSAnCisgICAgICAgICAgICAgJ2luIGFcbicKKyAgICAgICAgICAgICAndGhyZWFkZWQgcHJvZ3JhbS4gIEFzIG9mIFB5dGhvbiAxLjUsIHRoZSB2YXJpYWJsZXMgYXJlIHJlc3RvcmVkICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAndGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nIGZyb20gYSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgJ3RoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzICcKKyAgICAgICAgICAgICAnb2ZmXG4nCisgICAgICAgICAgICAgJ3RoZSBlbmQgb2YgdGhlICJ0cnkiIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlICJlbHNlIiBjbGF1c2UgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICAnCisgICAgICAgICAgICAgJ1RoZSAidHJ5IlxuJworICAgICAgICAgICAgICdjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgImV4Y2VwdCIgYW5kICJlbHNlIiBjbGF1c2VzLiAgJworICAgICAgICAgICAgICdJZiBhblxuJworICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuJworICAgICAgICAgICAgICdleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSAiZmluYWxseSIgY2xhdXNlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWQuICBJZlxuJworICAgICAgICAgICAgICd0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiwgaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlXG4nCisgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2UuIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyICcKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIG9yXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb24gJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdkaXNjYXJkZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gZGVmIGYoKTpcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIDEvMFxuJworICAgICAgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuJworICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAnICAgPj4+IGYoKVxuJworICAgICAgICAgICAgICcgICA0MlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtICcKKyAgICAgICAgICAgICAnZHVyaW5nXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcidHJ5IiBzdWl0ZSBvZiBhICJ0cnkiLi4uImZpbmFsbHkiIHN0YXRlbWVudCwgdGhlICJmaW5hbGx5IiAnCisgICAgICAgICAgICAgJ2NsYXVzZSBpc1xuJworICAgICAgICAgICAgICdhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyAnCisgICAgICAgICAgICAgJ2lsbGVnYWwgaW5cbicKKyAgICAgICAgICAgICAndGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG4nCisgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAnZnV0dXJlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAnInJldHVybiJcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnInJldHVybiIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSAiZmluYWxseSIgY2xhdXNlIHdpbGwgYWx3YXlzICcKKyAgICAgICAgICAgICAnYmUgdGhlXG4nCisgICAgICAgICAgICAgJ2xhc3Qgb25lIGV4ZWN1dGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGRlZiBmb28oKTpcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAndHJ5J1xuIgorICAgICAgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAnZmluYWxseSdcbiIKKyAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgJyAgID4+PiBmb28oKVxuJworICAgICAgICAgICAgICIgICAnZmluYWxseSdcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuJworICAgICAgICAgICAgICdFeGNlcHRpb25zLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvICcKKyAgICAgICAgICAgICAnZ2VuZXJhdGVcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiBUaGUgcmFpc2Ugc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAyLjUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrICcKKyAgICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAgICdtZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uIFdpdGggJworICAgICAgICAgICAgICdTdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnQ29udGV4dCBNYW5hZ2VycykuIFRoaXMgYWxsb3dzIGNvbW1vbiAnCisgICAgICAgICAgICAgJyJ0cnkiLi4uImV4Y2VwdCIuLi4iZmluYWxseSJcbicKKyAgICAgICAgICAgICAndXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhlY3V0aW9uIG9mIHRoZSAid2l0aCIgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyAnCisgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcxLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgJworICAgICAgICAgICAgICcid2l0aF9pdGVtIilcbicKKyAgICAgICAgICAgICAnICAgaXMgZXZhbHVhdGVkIHRvIG9idGFpbiBhIGNvbnRleHQgbWFuYWdlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSAid2l0aCIgc3RhdGVtZW50LCB0aGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSAid2l0aCIgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgJworICAgICAgICAgICAgICciX19lbnRlcl9fKCkiXG4nCisgICAgICAgICAgICAgJyAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCAnCisgICAgICAgICAgICAgJ2Fsd2F5cyBiZVxuJworICAgICAgICAgICAgICcgICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3IgJworICAgICAgICAgICAgICdvY2N1cnJpbmdcbicKKyAgICAgICAgICAgICAnICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgbWV0aG9kIGlzIGludm9rZWQuIElmIGFuXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcgICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsICcKKyAgICAgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICAgICAnICAgIk5vbmUiIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiAnCisgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgJyAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAncmVyYWlzZWQuXG4nCisgICAgICAgICAgICAgJyAgIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbicKKyAgICAgICAgICAgICAnICAgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiwgdGhlXG4nCisgICAgICAgICAgICAgJyAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uICcKKyAgICAgICAgICAgICAncHJvY2VlZHNcbicKKyAgICAgICAgICAgICAnICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1dpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzICcKKyAgICAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAgICAnbXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbicKKyAgICAgICAgICAgICAnICAgICAgIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhOlxuJworICAgICAgICAgICAgICcgICAgICAgd2l0aCBCKCkgYXMgYjpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZTogSW4gUHl0aG9uIDIuNSwgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgb25seSBhbGxvd2VkIHdoZW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAid2l0aF9zdGF0ZW1lbnQiIGZlYXR1cmUgaGFzIGJlZW4gZW5hYmxlZC4gIEl0IGlzIGFsd2F5cyAnCisgICAgICAgICAgICAgJ2VuYWJsZWQgaW5cbicKKyAgICAgICAgICAgICAnICBQeXRob24gMi42LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNzogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICcKKyAgICAgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Z1bmN0aW9uIGRlZmluaXRpb25zXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgJworICAgICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgICAgJ3NlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRlZCAgICAgIDo6PSBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYpXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRvciAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXV0gJworICAgICAgICAgICAgICciKSJdIE5FV0xJTkVcbicKKyAgICAgICAgICAgICAnICAgZnVuY2RlZiAgICAgICAgOjo9ICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiAnCisgICAgICAgICAgICAgJyI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICBkb3R0ZWRfbmFtZSAgICA6Oj0gaWRlbnRpZmllciAoIi4iIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgKCAgIioiIGlkZW50aWZpZXIgWyIsIiAiKioiIGlkZW50aWZpZXJdXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgaWRlbnRpZmllclxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuJworICAgICAgICAgICAgICcgICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnICAgc3VibGlzdCAgICAgICAgOjo9IHBhcmFtZXRlciAoIiwiIHBhcmFtZXRlcikqIFsiLCJdXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlciAgICAgIDo6PSBpZGVudGlmaWVyIHwgIigiIHN1Ymxpc3QgIikiXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uICcKKyAgICAgICAgICAgICAnYmluZHNcbicKKyAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCAnCisgICAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAgICdhcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgJworICAgICAgICAgICAgICdnZXRzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBpc1xuJworICAgICAgICAgICAgICdkZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgJ3Jlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBuYW1lXG4nCisgICAgICAgICAgICAgJ2luc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgJworICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICduZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICAgICcgICBkZWYgZnVuYygpOiBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZGVmIGZ1bmMoKTogcGFzc1xuJworICAgICAgICAgICAgICcgICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gb25lIG9yIG1vcmUgdG9wLWxldmVsICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICcKKyAgICAgICAgICAgICAnKnBhcmFtZXRlciogIj0iXG4nCisgICAgICAgICAgICAgJypleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgJworICAgICAgICAgICAgICd2YWx1ZXMuIlxuJworICAgICAgICAgICAgICdGb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAgICAnKmFyZ3VtZW50KiBtYXlcbicKKyAgICAgICAgICAgICAiYmUgb21pdHRlZCBmcm9tIGEgY2FsbCwgaW4gd2hpY2ggY2FzZSB0aGUgcGFyYW1ldGVyJ3MgZGVmYXVsdCAiCisgICAgICAgICAgICAgJ3ZhbHVlIGlzXG4nCisgICAgICAgICAgICAgJ3N1YnN0aXR1dGVkLiAgSWYgYSBwYXJhbWV0ZXIgaGFzIGEgZGVmYXVsdCB2YWx1ZSwgYWxsIGZvbGxvd2luZ1xuJworICAgICAgICAgICAgICdwYXJhbWV0ZXJzIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gdGhpcyBpcyBhICcKKyAgICAgICAgICAgICAnc3ludGFjdGljXG4nCisgICAgICAgICAgICAgJ3Jlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyoqRGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgJ2lzIGV4ZWN1dGVkLioqICBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkICcKKyAgICAgICAgICAgICAnb25jZSwgd2hlblxuJworICAgICAgICAgICAgICd0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1jb21wdXRlZCIgdmFsdWUgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICd1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgJworICAgICAgICAgICAgICd3aGVuIGFcbicKKyAgICAgICAgICAgICAnZGVmYXVsdCBwYXJhbWV0ZXIgaXMgYSBtdXRhYmxlIG9iamVjdCwgc3VjaCBhcyBhIGxpc3Qgb3IgYSAnCisgICAgICAgICAgICAgJ2RpY3Rpb25hcnk6XG4nCisgICAgICAgICAgICAgJ2lmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5IGFwcGVuZGluZyBhbiBpdGVtICcKKyAgICAgICAgICAgICAndG8gYVxuJworICAgICAgICAgICAgICdsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLiBUaGlzIGlzICcKKyAgICAgICAgICAgICAnZ2VuZXJhbGx5IG5vdFxuJworICAgICAgICAgICAgICd3aGF0IHdhcyBpbnRlbmRlZC4gIEEgd2F5IGFyb3VuZCB0aGlzICBpcyB0byB1c2UgIk5vbmUiIGFzIHRoZVxuJworICAgICAgICAgICAgICdkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb24sICcKKyAgICAgICAgICAgICAnZS5nLjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBwZW5ndWluID0gW11cbicKKyAgICAgICAgICAgICAnICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbicKKyAgICAgICAgICAgICAnICAgICAgIHJldHVybiBwZW5ndWluXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICdDYWxscy5cbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ21lbnRpb25lZCBpblxuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbSAnCisgICAgICAgICAgICAgJ2tleXdvcmRcbicKKyAgICAgICAgICAgICAnYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm0gIiIqaWRlbnRpZmllciIiICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAncHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmcgYW55IGV4Y2VzcyAnCisgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAncGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGUgZm9ybVxuJworICAgICAgICAgICAgICciIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3ICcKKyAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICdyZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ldyAnCisgICAgICAgICAgICAgJ2VtcHR5XG4nCisgICAgICAgICAgICAgJ2RpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGNyZWF0ZSBhbm9ueW1vdXMgZnVuY3Rpb25zIChmdW5jdGlvbnMgbm90ICcKKyAgICAgICAgICAgICAnYm91bmRcbicKKyAgICAgICAgICAgICAndG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLCBkZXNjcmliZWQgaW4gc2VjdGlvbiBMYW1iZGFzLiAgTm90ZSB0aGF0IHRoZSAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbjtcbicKKyAgICAgICAgICAgICAnYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgIiJkZWYiIiBzdGF0ZW1lbnQgY2FuIGJlIHBhc3NlZCBhcm91bmQgJworICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICdhc3NpZ25lZCB0byBhbm90aGVyIG5hbWUganVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhICcKKyAgICAgICAgICAgICAnbGFtYmRhXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgJworICAgICAgICAgICAgICdpdFxuJworICAgICAgICAgICAgICdhbGxvd3MgdGhlIGV4ZWN1dGlvbiBvZiBtdWx0aXBsZSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIKKyAgICAgICAgICAgICAnIiJkZWYiIlxuJworICAgICAgICAgICAgICdmb3JtIGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsICcKKyAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAndGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWQgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZ1bmN0aW9uIGNhbiBhY2Nlc3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAnY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gTmFtaW5nIGFuZCBiaW5kaW5nIGZvciAnCisgICAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2xhc3MgZGVmaW5pdGlvbnNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiBUaGUgJworICAgICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICAgICd0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBjbGFzc2RlZiAgICA6Oj0gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgaW5oZXJpdGFuY2UgOjo9ICIoIiBbZXhwcmVzc2lvbl9saXN0XSAiKSJcbicKKyAgICAgICAgICAgICAnICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0IGZpcnN0ICcKKyAgICAgICAgICAgICAnZXZhbHVhdGVzIHRoZVxuJworICAgICAgICAgICAgICdpbmhlcml0YW5jZSBsaXN0LCBpZiBwcmVzZW50LiAgRWFjaCBpdGVtIGluIHRoZSBpbmhlcml0YW5jZSAnCisgICAgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAgICAnc2hvdWxkIGV2YWx1YXRlIHRvIGEgY2xhc3Mgb2JqZWN0IG9yIGNsYXNzIHR5cGUgd2hpY2ggYWxsb3dzXG4nCisgICAgICAgICAgICAgInN1YmNsYXNzaW5nLiAgVGhlIGNsYXNzJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyAiCisgICAgICAgICAgICAgJ2V4ZWN1dGlvblxuJworICAgICAgICAgICAgICdmcmFtZSAoc2VlIHNlY3Rpb24gTmFtaW5nIGFuZCBiaW5kaW5nKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkICcKKyAgICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgICAnbmFtZXNwYWNlIGFuZCB0aGUgb3JpZ2luYWwgZ2xvYmFsIG5hbWVzcGFjZS4gKFVzdWFsbHksIHRoZSAnCisgICAgICAgICAgICAgJ3N1aXRlXG4nCisgICAgICAgICAgICAgImNvbnRhaW5zIG9ubHkgZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3MncyBzdWl0ZSAiCisgICAgICAgICAgICAgJ2ZpbmlzaGVzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiwgaXRzIGV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCAnCisgICAgICAgICAgICAgJ25hbWVzcGFjZSBpc1xuJworICAgICAgICAgICAgICdzYXZlZC4gWzRdIEEgY2xhc3Mgb2JqZWN0IGlzIHRoZW4gY3JlYXRlZCB1c2luZyB0aGUgaW5oZXJpdGFuY2UgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJ2ZvciB0aGUgYmFzZSBjbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgJworICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAnZGljdGlvbmFyeS4gIFRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kIHRvIHRoaXMgY2xhc3Mgb2JqZWN0IGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ29yaWdpbmFsIGxvY2FsIG5hbWVzcGFjZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gIgorICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnY2xhc3MgdmFyaWFibGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgYWxsIGluc3RhbmNlcy4gIFRvIGNyZWF0ZSAnCisgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgJ3ZhcmlhYmxlcywgdGhleSBjYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9ICcKKyAgICAgICAgICAgICAndmFsdWUiLiAgQm90aFxuJworICAgICAgICAgICAgICdjbGFzcyBhbmQgaW5zdGFuY2UgdmFyaWFibGVzIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAnbm90YXRpb25cbicKKyAgICAgICAgICAgICAnIiJzZWxmLm5hbWUiIiwgYW5kIGFuIGluc3RhbmNlIHZhcmlhYmxlIGhpZGVzIGEgY2xhc3MgdmFyaWFibGUgJworICAgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICAgJ3RoZSBzYW1lIG5hbWUgd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gQ2xhc3MgdmFyaWFibGVzIGNhbiBiZSAnCisgICAgICAgICAgICAgJ3VzZWRcbicKKyAgICAgICAgICAgICAnYXMgZGVmYXVsdHMgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzICcKKyAgICAgICAgICAgICAndGhlcmUgY2FuXG4nCisgICAgICAgICAgICAgJ2xlYWQgdG8gdW5leHBlY3RlZCByZXN1bHRzLiAgRm9yICpuZXctc3R5bGUgY2xhc3MqZXMsICcKKyAgICAgICAgICAgICAnZGVzY3JpcHRvcnMgY2FuXG4nCisgICAgICAgICAgICAgJ2JlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlIHZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCAnCisgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uXG4nCisgICAgICAgICAgICAgJ2RldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9ucywgbGlrZSBmdW5jdGlvbiBkZWZpbml0aW9ucywgbWF5IGJlIHdyYXBwZWQgYnkgJworICAgICAgICAgICAgICdvbmUgb3JcbicKKyAgICAgICAgICAgICAnbW9yZSAqZGVjb3JhdG9yKiBleHByZXNzaW9ucy4gIFRoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgJworICAgICAgICAgICAgICdkZWNvcmF0b3JcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvciBmdW5jdGlvbnMuICBUaGUgcmVzdWx0IG11c3QgYmUgYSAnCisgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgJ29iamVjdCwgd2hpY2ggaXMgdGhlbiBib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbicKKyAgICAgICAgICAgICAnICAgIHRoZXJlIGlzIGEgImZpbmFsbHkiIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXJcbicKKyAgICAgICAgICAgICAnICAgIGV4Y2VwdGlvbi4gVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSAnCisgICAgICAgICAgICAgJ2xvc3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgIGFuIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgInJldHVybiIsICJjb250aW51ZSIsIG9yXG4nCisgICAgICAgICAgICAgJyAgICAiYnJlYWsiIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1szXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZVxuJworICAgICAgICAgICAgICcgICAgZnVuY3Rpb24gYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyAiX19kb2NfXyJcbicKKyAgICAgICAgICAgICAiICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvbidzICpkb2NzdHJpbmcqLlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlICcKKyAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAnICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzICJfX2RvY19fIiBpdGVtICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgIiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzJ3MgKmRvY3N0cmluZyouXG4iLAorICdjb250ZXh0LW1hbmFnZXJzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1dpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMi41LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0EgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dCB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ2JlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0IG1hbmFnZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICdoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgJworICAgICAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dFxuJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICAgICAnbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RhdGVtZW50KSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZWlyIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN0b3JpbmcgdmFyaW91c1xuJworICAgICAgICAgICAgICAgICAgICAgJ2tpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgJworICAgICAgICAgICAgICAgICAgICAgJ2Nsb3Npbmcgb3BlbmVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnZmlsZXMsIGV0Yy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICAgICAnTWFuYWdlciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19lbnRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2QncyByZXR1cm4gdmFsdWUgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICd0YXJnZXQocylcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmICcKKyAgICAgICAgICAgICAgICAgICAgICdhbnkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnZXhpdGVkLiBJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ3N1cHByZXNzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCAnCisgICAgICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICAgJ3Byb2Nlc3NlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXNzZWQtaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICIgICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LlxuIgorICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdQeXRob24gIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nLAorICdjb250aW51ZSc6ICdcbicKKyAgICAgICAgICAgICAnVGhlICJjb250aW51ZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY29udGludWVfc3RtdCA6Oj0gImNvbnRpbnVlIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnImNvbnRpbnVlIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICcKKyAgICAgICAgICAgICAnIndoaWxlIlxuJworICAgICAgICAgICAgICdsb29wLCBidXQgbm90IG5lc3RlZCBpbiBhIGZ1bmN0aW9uIG9yIGNsYXNzIGRlZmluaXRpb24gb3IgJworICAgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIHdpdGhpbiB0aGF0IGxvb3AuICBJdCBjb250aW51ZXMgd2l0aCB0aGUgbmV4dCBjeWNsZSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICduZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiAiY29udGludWUiIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGFcbicKKyAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgJ3JlYWxseVxuJworICAgICAgICAgICAgICdzdGFydGluZyB0aGUgbmV4dCBsb29wIGN5Y2xlLlxuJywKKyAnY29udmVyc2lvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0FyaXRobWV0aWMgY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnV2hlbiBhIGRlc2NyaXB0aW9uIG9mIGFuIGFyaXRobWV0aWMgb3BlcmF0b3IgYmVsb3cgdXNlcyB0aGUgJworICAgICAgICAgICAgICAgICdwaHJhc2VcbicKKyAgICAgICAgICAgICAgICAnInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGUgJworICAgICAgICAgICAgICAgICdhcmd1bWVudHNcbicKKyAgICAgICAgICAgICAgICAnYXJlIGNvZXJjZWQgdXNpbmcgdGhlIGNvZXJjaW9uIHJ1bGVzIGxpc3RlZCBhdCAgQ29lcmNpb24gJworICAgICAgICAgICAgICAgICdydWxlcy4gIElmXG4nCisgICAgICAgICAgICAgICAgJ2JvdGggYXJndW1lbnRzIGFyZSBzdGFuZGFyZCBudW1lcmljIHR5cGVzLCB0aGUgZm9sbG93aW5nICcKKyAgICAgICAgICAgICAgICAnY29lcmNpb25zIGFyZVxuJworICAgICAgICAgICAgICAgICdhcHBsaWVkOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBJZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBjb21wbGV4IG51bWJlciwgdGhlIG90aGVyIGlzICcKKyAgICAgICAgICAgICAgICAnY29udmVydGVkIHRvXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGxleDtcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogb3RoZXJ3aXNlLCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJyAgb3RoZXIgaXMgY29udmVydGVkIHRvIGZsb2F0aW5nIHBvaW50O1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBvdGhlcndpc2UsIGlmIGVpdGhlciBhcmd1bWVudCBpcyBhIGxvbmcgaW50ZWdlciwgdGhlIG90aGVyICcKKyAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAnICBjb252ZXJ0ZWQgdG8gbG9uZyBpbnRlZ2VyO1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBwbGFpbiBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiAnCisgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgJyAgbmVjZXNzYXJ5LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnU29tZSBhZGRpdGlvbmFsIHJ1bGVzIGFwcGx5IGZvciBjZXJ0YWluIG9wZXJhdG9ycyAoZS5nLiwgYSAnCisgICAgICAgICAgICAgICAgJ3N0cmluZyBsZWZ0XG4nCisgICAgICAgICAgICAgICAgImFyZ3VtZW50IHRvIHRoZSAnJScgb3BlcmF0b3IpLiBFeHRlbnNpb25zIGNhbiBkZWZpbmUgdGhlaXIgIgorICAgICAgICAgICAgICAgICdvd25cbicKKyAgICAgICAgICAgICAgICAnY29lcmNpb25zLlxuJywKKyAnY3VzdG9taXphdGlvbic6ICdcbicKKyAgICAgICAgICAgICAgICAgICdCYXNpYyBjdXN0b21pemF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICcKKyAgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCAnCisgICAgICAgICAgICAgICAgICAnYXMgc3VjaClcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgICAgICAgICdhcyBpdHNcbicKKyAgICAgICAgICAgICAgICAgICcgICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSAnCisgICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgJworICAgICAgICAgICAgICAgICAgJ1RoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgJyh1c3VhbGx5IGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NsYXNzIGJ5XG4nCisgICAgICAgICAgICAgICAgICAnICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGFuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCAnCisgICAgICAgICAgICAgICAgICAndGhlbiB0aGUgbmV3XG4nCisgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICAgICAgICcgICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAnY3JlYXRpb24uICBJdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gJworICAgICAgICAgICAgICAgICAgJ29yZGVyIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICcKKyAgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiksIGJ1dFxuJworICAgICAgICAgICAgICAgICAgJyAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgJworICAgICAgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzcyBoYXMgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgaWZcbicKKyAgICAgICAgICAgICAgICAgICcgICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgJworICAgICAgICAgICAgICAgICAgJ2luaXRpYWxpemF0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgJyAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdGluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byAnCisgICAgICAgICAgICAgICAgICAnY3VzdG9taXNlXG4nCisgICAgICAgICAgICAgICAgICAnICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAnCisgICAgICAgICAgICAgICAgICAnIl9faW5pdF9fKCkiOyBkb2luZyBzb1xuJworICAgICAgICAgICAgICAgICAgJyAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICdpcyBhbHNvXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiAnCisgICAgICAgICAgICAgICAgICAnbWV0aG9kLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGNhbGwgaXRcbicKKyAgICAgICAgICAgICAgICAgICcgICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGJ5XG4nCisgICAgICAgICAgICAgICAgICAnICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgICdhdCBhIGxhdGVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICdndWFyYW50ZWVkIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCAnCisgICAgICAgICAgICAgICAgICAnZXhpc3Qgd2hlblxuJworICAgICAgICAgICAgICAgICAgJyAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAnbGF0dGVyIGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgJworICAgICAgICAgICAgICAgICAgJ1NvbWUgY29tbW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0IGZyb21cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3RzIChlLmcuLFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3BhcmVudCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ3N0YWNrIGZyYW1lIG9mXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayAnCisgICAgICAgICAgICAgICAgICAnc3RvcmVkIGluXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAic3lzLmV4Y190cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgJworICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gJworICAgICAgICAgICAgICAgICAgJ3VuaGFuZGxlZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkICcKKyAgICAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gICcKKyAgICAgICAgICAgICAgICAgICdUaGUgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nICcKKyAgICAgICAgICAgICAgICAgICd0aGUgY3ljbGVzO1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgdGhlIGxhdHRlciB0d28gc2l0dWF0aW9ucyBjYW4gYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAnCisgICAgICAgICAgICAgICAgICAnIk5vbmUiIGluXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAic3lzLmV4Y190cmFjZWJhY2siIG9yICJzeXMubGFzdF90cmFjZWJhY2siLiAgQ2lyY3VsYXIgJworICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCB3aGVuIHRoZSBvcHRpb24gY3ljbGUgJworICAgICAgICAgICAgICAgICAgJ2RldGVjdG9yIGlzXG4nCisgICAgICAgICAgICAgICAgICAiICAgICBlbmFibGVkIChpdCdzIG9uIGJ5IGRlZmF1bHQpLCBidXQgY2FuIG9ubHkgYmUgY2xlYW5lZCAiCisgICAgICAgICAgICAgICAgICAndXAgaWYgdGhlcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGFyZSBubyBQeXRob24tbGV2ZWwgIl9fZGVsX18oKSIgbWV0aG9kcyBpbnZvbHZlZC4gJworICAgICAgICAgICAgICAgICAgJ1JlZmVyIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uICcKKyAgICAgICAgICAgICAgICAgICdhYm91dCBob3dcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGhhbmRsZWQgYnkgdGhlIGN5Y2xlICcKKyAgICAgICAgICAgICAgICAgICdkZXRlY3RvcixcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHBhcnRpY3VsYXJseSB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJnYXJiYWdlIiB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciAnCisgICAgICAgICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGludm9rZWQsIGV4Y2VwdGlvbnMgdGhhdCBvY2N1ciAnCisgICAgICAgICAgICAgICAgICAnZHVyaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCAnCisgICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJzeXMuc3RkZXJyIiBpbnN0ZWFkLiBBbHNvLCB3aGVuICJfX2RlbF9fKCkiIGlzICcKKyAgICAgICAgICAgICAgICAgICdpbnZva2VkIGluXG4nCisgICAgICAgICAgICAgICAgICAnICAgICByZXNwb25zZSB0byBhIG1vZHVsZSBiZWluZyBkZWxldGVkIChlLmcuLCB3aGVuICcKKyAgICAgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICciX19kZWxfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmUgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzICcKKyAgICAgICAgICAgICAgICAgICdvZiBiZWluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG9ybiBkb3duIChlLmcuIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHNodXR0aW5nIGRvd24pLiAgJworICAgICAgICAgICAgICAgICAgJ0ZvciB0aGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSAnCisgICAgICAgICAgICAgICAgICAnbWluaW11bSBuZWVkZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvIG1haW50YWluIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoICcKKyAgICAgICAgICAgICAgICAgICd2ZXJzaW9uIDEuNSxcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbiBndWFyYW50ZWVzIHRoYXQgZ2xvYmFscyB3aG9zZSBuYW1lIGJlZ2lucyB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdhIHNpbmdsZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgJworICAgICAgICAgICAgICAgICAgJ2dsb2JhbHMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgJworICAgICAgICAgICAgICAgICAgJ3RoaXMgbWF5XG4nCisgICAgICAgICAgICAgICAgICAnICAgICBoZWxwIGluIGFzc3VyaW5nIHRoYXQgaW1wb3J0ZWQgbW9kdWxlcyBhcmUgc3RpbGwgJworICAgICAgICAgICAgICAgICAgJ2F2YWlsYWJsZSBhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBTZWUgYWxzbyB0aGUgIi1SIiBjb21tYW5kLWxpbmUgb3B0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JlcHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbnNcbicKKyAgICAgICAgICAgICAgICAgICcgICAocmV2ZXJzZSBxdW90ZXMpIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCIgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICdyZXByZXNlbnRhdGlvbiBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpcyBzaG91bGQgbG9vayBsaWtlIGEgJworICAgICAgICAgICAgICAgICAgJ3ZhbGlkXG4nCisgICAgICAgICAgICAgICAgICAnICAgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkIHRvIHJlY3JlYXRlIGFuICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3Qgd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZSBlbnZpcm9ubWVudCkuICBJZiB0aGlzICcKKyAgICAgICAgICAgICAgICAgICdpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICcgICBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm0gIjwuLi5zb21lIHVzZWZ1bCAnCisgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24uLi4+IlxuJworICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBiZSByZXR1cm5lZC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0LiBJZiBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2xhc3MgZGVmaW5lcyAiX19yZXByX18oKSIgYnV0IG5vdCAiX19zdHJfXygpIiwgdGhlbiAnCisgICAgICAgICAgICAgICAgICAnIl9fcmVwcl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgaXMgYWxzbyB1c2VkIHdoZW4gYW4gImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9mIHRoYXQgY2xhc3MgaXMgcmVxdWlyZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgJworICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gaXMgaW5mb3JtYXRpb24tcmljaCBhbmQgdW5hbWJpZ3VvdXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc3RyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJzdHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnInByaW50IlxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0YXRlbWVudCB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAncmVwcmVzZW50YXRpb24gb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBUaGlzIGRpZmZlcnMgZnJvbSAiX19yZXByX18oKSIgaW4gdGhhdCBpdCBkb2VzICcKKyAgICAgICAgICAgICAgICAgICdub3QgaGF2ZSB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGJlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGEgbW9yZSBjb252ZW5pZW50IG9yICcKKyAgICAgICAgICAgICAgICAgICdjb25jaXNlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gbWF5IGJlIHVzZWQgaW5zdGVhZC4gVGhlIHJldHVybiB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICAnbXVzdCBiZSBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAyLjEuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcywgYW5kICcKKyAgICAgICAgICAgICAgICAgICdhcmUgY2FsbGVkXG4nCisgICAgICAgICAgICAgICAgICAnICAgZm9yIGNvbXBhcmlzb24gb3BlcmF0b3JzIGluIHByZWZlcmVuY2UgdG8gIl9fY21wX18oKSIgJworICAgICAgICAgICAgICAgICAgJ2JlbG93LiBUaGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyAnCisgICAgICAgICAgICAgICAgICAnaXMgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgJworICAgICAgICAgICAgICAgICAgJyJ4Ll9fbGVfXyh5KSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBhbmQgIng8PnkiIGNhbGwgJworICAgICAgICAgICAgICAgICAgJyJ4Ll9fbmVfXyh5KSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgIng+eSIgY2FsbHMgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAnCisgICAgICAgICAgICAgICAgICAnInguX19nZV9fKHkpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uICcKKyAgICAgICAgICAgICAgICAgICciTm90SW1wbGVtZW50ZWQiXG4nCisgICAgICAgICAgICAgICAgICAnICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciAnCisgICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgJworICAgICAgICAgICAgICAgICAgJ3JldHVybmVkIGZvciBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhbiByZXR1cm4gJworICAgICAgICAgICAgICAgICAgJ2FueSB2YWx1ZSxcbicKKyAgICAgICAgICAgICAgICAgICcgICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICAnY29udGV4dCAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAnCisgICAgICAgICAgICAgICAgICAnImJvb2woKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHQgaXMgdHJ1ZSBvciAnCisgICAgICAgICAgICAgICAgICAnZmFsc2UuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlcmUgYXJlIG5vIGltcGxpZWQgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgICAnb3BlcmF0b3JzLlxuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZSB0cnV0aCBvZiAieD09eSIgZG9lcyBub3QgaW1wbHkgdGhhdCAieCE9eSIgaXMgJworICAgICAgICAgICAgICAgICAgJ2ZhbHNlLlxuJworICAgICAgICAgICAgICAgICAgJyAgIEFjY29yZGluZ2x5LCB3aGVuIGRlZmluaW5nICJfX2VxX18oKSIsIG9uZSBzaG91bGQgYWxzbyAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fbmVfXygpIiBzbyB0aGF0IHRoZSBvcGVyYXRvcnMgd2lsbCBiZWhhdmUgYXMgJworICAgICAgICAgICAgICAgICAgJ2V4cGVjdGVkLiAgU2VlIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uICcKKyAgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICAgJyh0byBiZSB1c2VkXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAgJ2J1dCB0aGUgcmlnaHRcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSAnCisgICAgICAgICAgICAgICAgICAiZWFjaCBvdGhlcidzXG4iCisgICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyAnCisgICAgICAgICAgICAgICAgICAncmVmbGVjdGlvbixcbicKKyAgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQXJndW1lbnRzIHRvIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzIGFyZSBuZXZlciBjb2VyY2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgJworICAgICAgICAgICAgICAgICAgJ3NpbmdsZSByb290XG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9uLCBzZWUgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19jbXBfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgY29tcGFyaXNvbiBvcGVyYXRpb25zIGlmIHJpY2ggY29tcGFyaXNvbiAoc2VlICcKKyAgICAgICAgICAgICAgICAgICdhYm92ZSkgaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3QgZGVmaW5lZC4gIFNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSBpbnRlZ2VyIGlmICJzZWxmICcKKyAgICAgICAgICAgICAgICAgICc8IG90aGVyIixcbicKKyAgICAgICAgICAgICAgICAgICcgICB6ZXJvIGlmICJzZWxmID09IG90aGVyIiwgYSBwb3NpdGl2ZSBpbnRlZ2VyIGlmICJzZWxmID4gJworICAgICAgICAgICAgICAgICAgJ290aGVyIi4gIElmXG4nCisgICAgICAgICAgICAgICAgICAnICAgbm8gIl9fY21wX18oKSIsICJfX2VxX18oKSIgb3IgIl9fbmVfXygpIiBvcGVyYXRpb24gaXMgJworICAgICAgICAgICAgICAgICAgJ2RlZmluZWQsXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2xhc3MgaW5zdGFuY2VzIGFyZSBjb21wYXJlZCBieSBvYmplY3QgaWRlbnRpdHkgJworICAgICAgICAgICAgICAgICAgJygiYWRkcmVzcyIpLiAgU2VlXG4nCisgICAgICAgICAgICAgICAgICAnICAgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgIl9faGFzaF9fKCkiIGZvciBzb21lIGltcG9ydGFudCAnCisgICAgICAgICAgICAgICAgICAnbm90ZXMgb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy4gKE5vdGU6ICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXN0cmljdGlvbiB0aGF0IGV4Y2VwdGlvbnMgYXJlIG5vdCBwcm9wYWdhdGVkIGJ5ICcKKyAgICAgICAgICAgICAgICAgICciX19jbXBfXygpIiBoYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBiZWVuIHJlbW92ZWQgc2luY2UgUHl0aG9uIDEuNS4pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmNtcF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjE6IE5vIGxvbmdlciBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faGFzaF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICAnb24gbWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgJworICAgICAgICAgICAgICAgICAgJyJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgJworICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkIHByb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICAnICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZTsgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBhZHZpc2VkIHRvIG1peCB0b2dldGhlciB0aGUgaGFzaCB2YWx1ZXMgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdjb21wb25lbnRzIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzIGJ5ICcKKyAgICAgICAgICAgICAgICAgICdwYWNraW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhlbSBpbnRvIGEgdHVwbGUgYW5kIGhhc2hpbmcgdGhlIHR1cGxlLiBFeGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGRlZiBfX2hhc2hfXyhzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgICAgcmV0dXJuIGhhc2goKHNlbGYubmFtZSwgc2VsZi5uaWNrLCBzZWxmLmNvbG9yKSlcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIGRvZXMgbm90IGRlZmluZSBhICJfX2NtcF9fKCkiIG9yICJfX2VxX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCBpdFxuJworICAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBub3QgZGVmaW5lIGEgIl9faGFzaF9fKCkiIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0ICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fY21wX18oKSIgb3IgIl9fZXFfXygpIiBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgd2lsbFxuJworICAgICAgICAgICAgICAgICAgJyAgIG5vdCBiZSB1c2FibGUgaW4gaGFzaGVkIGNvbGxlY3Rpb25zLiAgSWYgYSBjbGFzcyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICdtdXRhYmxlXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhICJfX2NtcF9fKCkiIG9yICJfX2VxX18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgaXRcbicKKyAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgbm90IGltcGxlbWVudCAiX19oYXNoX18oKSIsIHNpbmNlIGhhc2hhYmxlICcKKyAgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uXG4nCisgICAgICAgICAgICAgICAgICAiICAgaW1wbGVtZW50YXRpb25zIHJlcXVpcmUgdGhhdCBhbiBvYmplY3QncyBoYXNoIHZhbHVlIGlzICIKKyAgICAgICAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICAgICAgICIgICAoaWYgdGhlIG9iamVjdCdzIGhhc2ggdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgIgorICAgICAgICAgICAgICAgICAgJ3dyb25nIGhhc2hcbicKKyAgICAgICAgICAgICAgICAgICcgICBidWNrZXQpLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fY21wX18oKSIgYW5kICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICAnbWV0aG9kcyBieVxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgJworICAgICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhIHJlc3VsdCBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgICAgICAgICAnICAgImlkKHgpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSAiX19oYXNoX18oKSIgbWV0aG9kIGZyb20gYSAnCisgICAgICAgICAgICAgICAgICAncGFyZW50IGNsYXNzIGJ1dFxuJworICAgICAgICAgICAgICAgICAgJyAgIGNoYW5nZSB0aGUgbWVhbmluZyBvZiAiX19jbXBfXygpIiBvciAiX19lcV9fKCkiIHN1Y2ggJworICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlIGhhc2hcbicKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSByZXR1cm5lZCBpcyBubyBsb25nZXIgYXBwcm9wcmlhdGUgKGUuZy4gYnkgJworICAgICAgICAgICAgICAgICAgJ3N3aXRjaGluZyB0byBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWUtYmFzZWQgY29uY2VwdCBvZiBlcXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICdpZGVudGl0eVxuJworICAgICAgICAgICAgICAgICAgJyAgIGJhc2VkIGVxdWFsaXR5KSBjYW4gZXhwbGljaXRseSBmbGFnIHRoZW1zZWx2ZXMgYXMgYmVpbmcgJworICAgICAgICAgICAgICAgICAgJ3VuaGFzaGFibGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBieSBzZXR0aW5nICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uLiAnCisgICAgICAgICAgICAgICAgICAnRG9pbmcgc29cbicKKyAgICAgICAgICAgICAgICAgICcgICBtZWFucyB0aGF0IG5vdCBvbmx5IHdpbGwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyByYWlzZSAnCisgICAgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0byAnCisgICAgICAgICAgICAgICAgICAncmV0cmlldmUgdGhlaXJcbicKKyAgICAgICAgICAgICAgICAgICcgICBoYXNoIHZhbHVlLCBidXQgdGhleSB3aWxsIGFsc28gYmUgY29ycmVjdGx5IGlkZW50aWZpZWQgJworICAgICAgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgICAgICAnICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgJworICAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zLkhhc2hhYmxlKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAodW5saWtlIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZWlyIG93biAiX19oYXNoX18oKSIgdG8gJworICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHlcbicKKyAgICAgICAgICAgICAgICAgICcgICByYWlzZSAiVHlwZUVycm9yIikuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNTogIl9faGFzaF9fKCkiIG1heSBub3cgYWxzbyByZXR1cm4gJworICAgICAgICAgICAgICAgICAgJ2EgbG9uZ1xuJworICAgICAgICAgICAgICAgICAgJyAgIGludGVnZXIgb2JqZWN0OyB0aGUgMzItYml0IGludGVnZXIgaXMgdGhlbiBkZXJpdmVkIGZyb20gJworICAgICAgICAgICAgICAgICAgJ3RoZSBoYXNoIG9mXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGhhdCBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNjogIl9faGFzaF9fIiBtYXkgbm93IGJlIHNldCB0byAnCisgICAgICAgICAgICAgICAgICAnIk5vbmUiIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgZXhwbGljaXRseSBmbGFnIGluc3RhbmNlcyBvZiBhIGNsYXNzIGFzIHVuaGFzaGFibGUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbm9uemVyb19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAgJyAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLCBvciB0aGVpciAnCisgICAgICAgICAgICAgICAgICAnaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAgJyAgIGVxdWl2YWxlbnRzICIwIiBvciAiMSIuICBXaGVuIHRoaXMgbWV0aG9kIGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lZCxcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uIElmIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAgJ2RlZmluZXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ub256ZXJvX18oKSIsIGFsbCBpdHMgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHRydWUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fdW5pY29kZV9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAidW5pY29kZSgpIiBidWlsdC1pbjsgc2hvdWxkIHJldHVybiAnCisgICAgICAgICAgICAgICAgICAnYSBVbmljb2RlXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBXaGVuIHRoaXMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24gaXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBhdHRlbXB0ZWQsIGFuZCB0aGUgcmVzdWx0IG9mIHN0cmluZyBjb252ZXJzaW9uIGlzICcKKyAgICAgICAgICAgICAgICAgICdjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICBVbmljb2RlIHVzaW5nIHRoZSBzeXN0ZW0gZGVmYXVsdCBlbmNvZGluZy5cbicsCisgJ2RlYnVnZ2VyJzogJ1xuJworICAgICAgICAgICAgICcicGRiIiAtLS0gVGhlIFB5dGhvbiBEZWJ1Z2dlclxuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKipTb3VyY2UgY29kZToqKiBMaWIvcGRiLnB5XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgbW9kdWxlICJwZGIiIGRlZmluZXMgYW4gaW50ZXJhY3RpdmUgc291cmNlIGNvZGUgZGVidWdnZXIgJworICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAnUHl0aG9uIHByb2dyYW1zLiAgSXQgc3VwcG9ydHMgc2V0dGluZyAoY29uZGl0aW9uYWwpIGJyZWFrcG9pbnRzICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ3NpbmdsZSBzdGVwcGluZyBhdCB0aGUgc291cmNlIGxpbmUgbGV2ZWwsIGluc3BlY3Rpb24gb2Ygc3RhY2sgJworICAgICAgICAgICAgICdmcmFtZXMsXG4nCisgICAgICAgICAgICAgJ3NvdXJjZSBjb2RlIGxpc3RpbmcsIGFuZCBldmFsdWF0aW9uIG9mIGFyYml0cmFyeSBQeXRob24gY29kZSBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdjb250ZXh0IG9mIGFueSBzdGFjayBmcmFtZS4gIEl0IGFsc28gc3VwcG9ydHMgcG9zdC1tb3J0ZW0gJworICAgICAgICAgICAgICdkZWJ1Z2dpbmdcbicKKyAgICAgICAgICAgICAnYW5kIGNhbiBiZSBjYWxsZWQgdW5kZXIgcHJvZ3JhbSBjb250cm9sLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGRlYnVnZ2VyIGlzIGV4dGVuc2libGUgLS0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlICcKKyAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAnIlBkYiIuIFRoaXMgaXMgY3VycmVudGx5IHVuZG9jdW1lbnRlZCBidXQgZWFzaWx5IHVuZGVyc3Rvb2QgYnkgJworICAgICAgICAgICAgICdyZWFkaW5nXG4nCisgICAgICAgICAgICAgJ3RoZSBzb3VyY2UuICBUaGUgZXh0ZW5zaW9uIGludGVyZmFjZSB1c2VzIHRoZSBtb2R1bGVzICJiZGIiIGFuZCAnCisgICAgICAgICAgICAgJyJjbWQiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGRlYnVnZ2VyXCdzIHByb21wdCBpcyAiKFBkYikiLiBUeXBpY2FsIHVzYWdlIHRvIHJ1biBhICcKKyAgICAgICAgICAgICAncHJvZ3JhbSB1bmRlclxuJworICAgICAgICAgICAgICdjb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgcGRiXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgbXltb2R1bGVcbicKKyAgICAgICAgICAgICAiICAgPj4+IHBkYi5ydW4oJ215bW9kdWxlLnRlc3QoKScpXG4iCisgICAgICAgICAgICAgJyAgID4gPHN0cmluZz4oMCk/KClcbicKKyAgICAgICAgICAgICAnICAgKFBkYikgY29udGludWVcbicKKyAgICAgICAgICAgICAnICAgPiA8c3RyaW5nPigxKT8oKVxuJworICAgICAgICAgICAgICcgICAoUGRiKSBjb250aW51ZVxuJworICAgICAgICAgICAgICIgICBOYW1lRXJyb3I6ICdzcGFtJ1xuIgorICAgICAgICAgICAgICcgICA+IDxzdHJpbmc+KDEpPygpXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcicGRiLnB5IiBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyICcKKyAgICAgICAgICAgICAnc2NyaXB0cy4gIEZvclxuJworICAgICAgICAgICAgICdleGFtcGxlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgcHl0aG9uIC1tIHBkYiBteXNjcmlwdC5weVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBpbnZva2VkIGFzIGEgc2NyaXB0LCBwZGIgd2lsbCBhdXRvbWF0aWNhbGx5IGVudGVyICcKKyAgICAgICAgICAgICAncG9zdC1tb3J0ZW1cbicKKyAgICAgICAgICAgICAnZGVidWdnaW5nIGlmIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIGV4aXRzIGFibm9ybWFsbHkuIEFmdGVyICcKKyAgICAgICAgICAgICAncG9zdC1cbicKKyAgICAgICAgICAgICAnbW9ydGVtIGRlYnVnZ2luZyAob3IgYWZ0ZXIgbm9ybWFsIGV4aXQgb2YgdGhlIHByb2dyYW0pLCBwZGIgJworICAgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICAgInJlc3RhcnQgdGhlIHByb2dyYW0uIEF1dG9tYXRpYyByZXN0YXJ0aW5nIHByZXNlcnZlcyBwZGIncyBzdGF0ZSAiCisgICAgICAgICAgICAgJyhzdWNoXG4nCisgICAgICAgICAgICAgJ2FzIGJyZWFrcG9pbnRzKSBhbmQgaW4gbW9zdCBjYXNlcyBpcyBtb3JlIHVzZWZ1bCB0aGFuIHF1aXR0aW5nICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgImRlYnVnZ2VyIHVwb24gcHJvZ3JhbSdzIGV4aXQuXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAyLjQ6IFJlc3RhcnRpbmcgcG9zdC1tb3J0ZW0gYmVoYXZpb3IgYWRkZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgdHlwaWNhbCB1c2FnZSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBmcm9tIGEgcnVubmluZyAnCisgICAgICAgICAgICAgJ3Byb2dyYW0gaXNcbicKKyAgICAgICAgICAgICAndG8gaW5zZXJ0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2F0IHRoZSBsb2NhdGlvbiB5b3Ugd2FudCB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlci4gIFlvdSBjYW4gJworICAgICAgICAgICAgICd0aGVuXG4nCisgICAgICAgICAgICAgJ3N0ZXAgdGhyb3VnaCB0aGUgY29kZSBmb2xsb3dpbmcgdGhpcyBzdGF0ZW1lbnQsIGFuZCBjb250aW51ZSAnCisgICAgICAgICAgICAgJ3J1bm5pbmdcbicKKyAgICAgICAgICAgICAnd2l0aG91dCB0aGUgZGVidWdnZXIgdXNpbmcgdGhlICJjIiBjb21tYW5kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHR5cGljYWwgdXNhZ2UgdG8gaW5zcGVjdCBhIGNyYXNoZWQgcHJvZ3JhbSBpczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgcGRiXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgbXltb2R1bGVcbicKKyAgICAgICAgICAgICAnICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuJworICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAgICAnICAgICBGaWxlICIuL215bW9kdWxlLnB5IiwgbGluZSA0LCBpbiB0ZXN0XG4nCisgICAgICAgICAgICAgJyAgICAgICB0ZXN0MigpXG4nCisgICAgICAgICAgICAgJyAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgMywgaW4gdGVzdDJcbicKKyAgICAgICAgICAgICAnICAgICAgIHByaW50IHNwYW1cbicKKyAgICAgICAgICAgICAnICAgTmFtZUVycm9yOiBzcGFtXG4nCisgICAgICAgICAgICAgJyAgID4+PiBwZGIucG0oKVxuJworICAgICAgICAgICAgICcgICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4nCisgICAgICAgICAgICAgJyAgIC0+IHByaW50IHNwYW1cbicKKyAgICAgICAgICAgICAnICAgKFBkYilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlICcKKyAgICAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAgICAnaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5OlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bihzdGF0ZW1lbnRbLCBnbG9iYWxzWywgbG9jYWxzXV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcpIHVuZGVyIGRlYnVnZ2VyICcKKyAgICAgICAgICAgICAnY29udHJvbC5cbicKKyAgICAgICAgICAgICAnICAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzIGJlZm9yZSBhbnkgY29kZSBpcyBleGVjdXRlZDsgeW91ICcKKyAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgJyAgIHNldCBicmVha3BvaW50cyBhbmQgdHlwZSAiY29udGludWUiLCBvciB5b3UgY2FuIHN0ZXAgdGhyb3VnaCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQgdXNpbmcgInN0ZXAiIG9yICJuZXh0IiAoYWxsIHRoZXNlIGNvbW1hbmRzIGFyZSAnCisgICAgICAgICAgICAgJ2V4cGxhaW5lZFxuJworICAgICAgICAgICAgICcgICBiZWxvdykuICBUaGUgb3B0aW9uYWwgKmdsb2JhbHMqIGFuZCAqbG9jYWxzKiBhcmd1bWVudHMgJworICAgICAgICAgICAgICdzcGVjaWZ5IHRoZVxuJworICAgICAgICAgICAgICcgICBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgY29kZSBpcyBleGVjdXRlZDsgYnkgZGVmYXVsdCB0aGVcbicKKyAgICAgICAgICAgICAnICAgZGljdGlvbmFyeSBvZiB0aGUgbW9kdWxlICJfX21haW5fXyIgaXMgdXNlZC4gIChTZWUgdGhlICcKKyAgICAgICAgICAgICAnZXhwbGFuYXRpb25cbicKKyAgICAgICAgICAgICAnICAgb2YgdGhlICJleGVjIiBzdGF0ZW1lbnQgb3IgdGhlICJldmFsKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5ydW5ldmFsKGV4cHJlc3Npb25bLCBnbG9iYWxzWywgbG9jYWxzXV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFdmFsdWF0ZSB0aGUgKmV4cHJlc3Npb24qIChnaXZlbiBhcyBhIHN0cmluZykgdW5kZXIgZGVidWdnZXJcbicKKyAgICAgICAgICAgICAnICAgY29udHJvbC4gIFdoZW4gInJ1bmV2YWwoKSIgcmV0dXJucywgaXQgcmV0dXJucyB0aGUgdmFsdWUgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgZXhwcmVzc2lvbi4gIE90aGVyd2lzZSB0aGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gInJ1bigpIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5ydW5jYWxsKGZ1bmN0aW9uWywgYXJndW1lbnQsIC4uLl0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDYWxsIHRoZSAqZnVuY3Rpb24qIChhIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QsIG5vdCBhICcKKyAgICAgICAgICAgICAnc3RyaW5nKVxuJworICAgICAgICAgICAgICcgICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuICJydW5jYWxsKCkiIHJldHVybnMsIGl0ICcKKyAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICcgICB3aGF0ZXZlciB0aGUgZnVuY3Rpb24gY2FsbCByZXR1cm5lZC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgJworICAgICAgICAgICAgICdhcHBlYXJzXG4nCisgICAgICAgICAgICAgJyAgIGFzIHNvb24gYXMgdGhlIGZ1bmN0aW9uIGlzIGVudGVyZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIuc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBkZWJ1Z2dlciBhdCB0aGUgY2FsbGluZyBzdGFjayBmcmFtZS4gIFRoaXMgaXMgJworICAgICAgICAgICAgICd1c2VmdWwgdG9cbicKKyAgICAgICAgICAgICAnICAgaGFyZC1jb2RlIGEgYnJlYWtwb2ludCBhdCBhIGdpdmVuIHBvaW50IGluIGEgcHJvZ3JhbSwgZXZlbiBpZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiBhc3NlcnRpb25cbicKKyAgICAgICAgICAgICAnICAgZmFpbHMpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnBvc3RfbW9ydGVtKFt0cmFjZWJhY2tdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW50ZXIgcG9zdC1tb3J0ZW0gZGVidWdnaW5nIG9mIHRoZSBnaXZlbiAqdHJhY2ViYWNrKiBvYmplY3QuICAnCisgICAgICAgICAgICAgJ0lmIG5vXG4nCisgICAgICAgICAgICAgJyAgICp0cmFjZWJhY2sqIGlzIGdpdmVuLCBpdCB1c2VzIHRoZSBvbmUgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgY3VycmVudGx5IGJlaW5nIGhhbmRsZWQgKGFuIGV4Y2VwdGlvbiBtdXN0IGJlIGJlaW5nIGhhbmRsZWQgJworICAgICAgICAgICAgICdpZiB0aGVcbicKKyAgICAgICAgICAgICAnICAgZGVmYXVsdCBpcyB0byBiZSB1c2VkKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5wbSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIHRyYWNlYmFjayBmb3VuZCBpblxuJworICAgICAgICAgICAgICcgICAic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAicnVuKiIgZnVuY3Rpb25zIGFuZCAic2V0X3RyYWNlKCkiIGFyZSBhbGlhc2VzIGZvciAnCisgICAgICAgICAgICAgJ2luc3RhbnRpYXRpbmdcbicKKyAgICAgICAgICAgICAndGhlICJQZGIiIGNsYXNzIGFuZCBjYWxsaW5nIHRoZSBtZXRob2Qgb2YgdGhlIHNhbWUgbmFtZS4gIElmIHlvdSAnCisgICAgICAgICAgICAgJ3dhbnRcbicKKyAgICAgICAgICAgICAndG8gYWNjZXNzIGZ1cnRoZXIgZmVhdHVyZXMsIHlvdSBoYXZlIHRvIGRvIHRoaXMgeW91cnNlbGY6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICJjbGFzcyBwZGIuUGRiKGNvbXBsZXRla2V5PSd0YWInLCBzdGRpbj1Ob25lLCBzdGRvdXQ9Tm9uZSwgIgorICAgICAgICAgICAgICdza2lwPU5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAiUGRiIiBpcyB0aGUgZGVidWdnZXIgY2xhc3MuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgKmNvbXBsZXRla2V5KiwgKnN0ZGluKiBhbmQgKnN0ZG91dCogYXJndW1lbnRzIGFyZSBwYXNzZWQgJworICAgICAgICAgICAgICd0byB0aGVcbicKKyAgICAgICAgICAgICAnICAgdW5kZXJseWluZyAiY21kLkNtZCIgY2xhc3M7IHNlZSB0aGUgZGVzY3JpcHRpb24gdGhlcmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgKnNraXAqIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAnCisgICAgICAgICAgICAgJ2dsb2Itc3R5bGVcbicKKyAgICAgICAgICAgICAnICAgbW9kdWxlIG5hbWUgcGF0dGVybnMuICBUaGUgZGVidWdnZXIgd2lsbCBub3Qgc3RlcCBpbnRvIGZyYW1lcyAnCisgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAnICAgb3JpZ2luYXRlIGluIGEgbW9kdWxlIHRoYXQgbWF0Y2hlcyBvbmUgb2YgdGhlc2UgcGF0dGVybnMuICcKKyAgICAgICAgICAgICAnWzFdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9WydkamFuZ28uKiddKS5zZXRfdHJhY2UoKVxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi43OiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgcnVuKHN0YXRlbWVudFssIGdsb2JhbHNbLCBsb2NhbHNdXSlcbicKKyAgICAgICAgICAgICAnICAgcnVuZXZhbChleHByZXNzaW9uWywgZ2xvYmFsc1ssIGxvY2Fsc11dKVxuJworICAgICAgICAgICAgICcgICBydW5jYWxsKGZ1bmN0aW9uWywgYXJndW1lbnQsIC4uLl0pXG4nCisgICAgICAgICAgICAgJyAgIHNldF90cmFjZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuJywKKyAnZGVsJzogJ1xuJworICAgICAgICAnVGhlICJkZWwiIHN0YXRlbWVudFxuJworICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBkZWxfc3RtdCA6Oj0gImRlbCIgdGFyZ2V0X2xpc3RcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCB2ZXJ5IHNpbWlsYXIgdG8gdGhlIHdheSBhc3NpZ25tZW50ICcKKyAgICAgICAgJ2lzXG4nCisgICAgICAgICdkZWZpbmVkLiBSYXRoZXIgdGhhbiBzcGVsbGluZyBpdCBvdXQgaW4gZnVsbCBkZXRhaWxzLCBoZXJlIGFyZSBzb21lXG4nCisgICAgICAgICdoaW50cy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gb2YgYSB0YXJnZXQgbGlzdCByZWN1cnNpdmVseSBkZWxldGVzIGVhY2ggdGFyZ2V0LCBmcm9tIGxlZnRcbicKKyAgICAgICAgJ3RvIHJpZ2h0LlxuJworICAgICAgICAnXG4nCisgICAgICAgICdEZWxldGlvbiBvZiBhIG5hbWUgcmVtb3ZlcyB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgIGZyb20gdGhlIGxvY2FsICcKKyAgICAgICAgJ29yXG4nCisgICAgICAgICdnbG9iYWwgbmFtZXNwYWNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbmFtZSBvY2N1cnMgaW4gYSAiZ2xvYmFsIlxuJworICAgICAgICAnc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG4nCisgICAgICAgICciTmFtZUVycm9yIiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0l0IGlzIGlsbGVnYWwgdG8gZGVsZXRlIGEgbmFtZSBmcm9tIHRoZSBsb2NhbCBuYW1lc3BhY2UgaWYgaXQgb2NjdXJzXG4nCisgICAgICAgICdhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWQgYmxvY2suXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0RlbGV0aW9uIG9mIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCBzdWJzY3JpcHRpb25zIGFuZCBzbGljaW5ncyBpcyAnCisgICAgICAgICdwYXNzZWRcbicKKyAgICAgICAgJ3RvIHRoZSBwcmltYXJ5IG9iamVjdCBpbnZvbHZlZDsgZGVsZXRpb24gb2YgYSBzbGljaW5nIGlzIGluIGdlbmVyYWxcbicKKyAgICAgICAgJ2VxdWl2YWxlbnQgdG8gYXNzaWdubWVudCBvZiBhbiBlbXB0eSBzbGljZSBvZiB0aGUgcmlnaHQgdHlwZSAoYnV0ICcKKyAgICAgICAgJ2V2ZW5cbicKKyAgICAgICAgJ3RoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2xpY2VkIG9iamVjdCkuXG4nLAorICdkaWN0JzogJ1xuJworICAgICAgICAgJ0RpY3Rpb25hcnkgZGlzcGxheXNcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkaWN0aW9uYXJ5IGRpc3BsYXkgaXMgYSBwb3NzaWJseSBlbXB0eSBzZXJpZXMgb2Yga2V5L2RhdHVtIHBhaXJzXG4nCisgICAgICAgICAnZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGRpY3RfZGlzcGxheSAgICAgICA6Oj0gInsiIFtrZXlfZGF0dW1fbGlzdCB8IGRpY3RfY29tcHJlaGVuc2lvbl0gJworICAgICAgICAgJyJ9IlxuJworICAgICAgICAgJyAgIGtleV9kYXR1bV9saXN0ICAgICA6Oj0ga2V5X2RhdHVtICgiLCIga2V5X2RhdHVtKSogWyIsIl1cbicKKyAgICAgICAgICcgICBrZXlfZGF0dW0gICAgICAgICAgOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb25cbicKKyAgICAgICAgICcgICBkaWN0X2NvbXByZWhlbnNpb24gOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gY29tcF9mb3JcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRpY3Rpb25hcnkgZGlzcGxheSB5aWVsZHMgYSBuZXcgZGljdGlvbmFyeSBvYmplY3QuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnSWYgYSBjb21tYS1zZXBhcmF0ZWQgc2VxdWVuY2Ugb2Yga2V5L2RhdHVtIHBhaXJzIGlzIGdpdmVuLCB0aGV5IGFyZVxuJworICAgICAgICAgJ2V2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgdG8gZGVmaW5lIHRoZSBlbnRyaWVzIG9mIHRoZSAnCisgICAgICAgICAnZGljdGlvbmFyeTpcbicKKyAgICAgICAgICdlYWNoIGtleSBvYmplY3QgaXMgdXNlZCBhcyBhIGtleSBpbnRvIHRoZSBkaWN0aW9uYXJ5IHRvIHN0b3JlIHRoZVxuJworICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgZGF0dW0uICBUaGlzIG1lYW5zIHRoYXQgeW91IGNhbiBzcGVjaWZ5IHRoZSBzYW1lIGtleVxuJworICAgICAgICAgIm11bHRpcGxlIHRpbWVzIGluIHRoZSBrZXkvZGF0dW0gbGlzdCwgYW5kIHRoZSBmaW5hbCBkaWN0aW9uYXJ5J3MgIgorICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAnZm9yIHRoYXQga2V5IHdpbGwgYmUgdGhlIGxhc3Qgb25lIGdpdmVuLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZGljdCBjb21wcmVoZW5zaW9uLCBpbiBjb250cmFzdCB0byBsaXN0IGFuZCBzZXQgY29tcHJlaGVuc2lvbnMsXG4nCisgICAgICAgICAnbmVlZHMgdHdvIGV4cHJlc3Npb25zIHNlcGFyYXRlZCB3aXRoIGEgY29sb24gZm9sbG93ZWQgYnkgdGhlIHVzdWFsXG4nCisgICAgICAgICAnImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSAnCisgICAgICAgICAncmVzdWx0aW5nXG4nCisgICAgICAgICAna2V5IGFuZCB2YWx1ZSBlbGVtZW50cyBhcmUgaW5zZXJ0ZWQgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5IGluIHRoZSAnCisgICAgICAgICAnb3JkZXJcbicKKyAgICAgICAgICd0aGV5IGFyZSBwcm9kdWNlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdSZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuJworICAgICAgICAgJ3NlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5LiAgKFRvIHN1bW1hcml6ZSwgdGhlIGtleSB0eXBlXG4nCisgICAgICAgICAnc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgQ2xhc2hlc1xuJworICAgICAgICAgJ2JldHdlZW4gZHVwbGljYXRlIGtleXMgYXJlIG5vdCBkZXRlY3RlZDsgdGhlIGxhc3QgZGF0dW0gKHRleHR1YWxseVxuJworICAgICAgICAgJ3JpZ2h0bW9zdCBpbiB0aGUgZGlzcGxheSkgc3RvcmVkIGZvciBhIGdpdmVuIGtleSB2YWx1ZSBwcmV2YWlscy5cbicsCisgJ2R5bmFtaWMtZmVhdHVyZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbGxlZ2FsIHdoZW4gdXNlZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2luIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSAnCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0lmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdpbGxlZ2FsIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0lmIHRoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJpbXBvcnQgKiIgLS0tIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICd1c2VkIGluIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG9yIGlzIGEgbmVzdGVkIGJsb2NrICcKKyAgICAgICAgICAgICAgICAgICAgICd3aXRoIGZyZWVcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMsIHRoZSBjb21waWxlciB3aWxsIHJhaXNlIGEgIlN5bnRheEVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJZiAiZXhlYyIgaXMgdXNlZCBpbiBhIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIG9yIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICduZXN0ZWQgYmxvY2sgd2l0aCBmcmVlIHZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgJworICAgICAgICAgICAgICAgICAgICAgJ3JhaXNlIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICciU3ludGF4RXJyb3IiIHVubGVzcyB0aGUgZXhlYyBleHBsaWNpdGx5IHNwZWNpZmllcyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsIG5hbWVzcGFjZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciB0aGUgImV4ZWMiLiAgKEluIG90aGVyIHdvcmRzLCAiZXhlYyBvYmoiIHdvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbGxlZ2FsLCBidXRcbicKKyAgICAgICAgICAgICAgICAgICAgICciZXhlYyBvYmogaW4gbnMiIHdvdWxkIGJlIGxlZ2FsLilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgImV2YWwoKSIsICJleGVjZmlsZSgpIiwgYW5kICJpbnB1dCgpIiBmdW5jdGlvbnMgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgImV4ZWMiXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3RhdGVtZW50IGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbCBlbnZpcm9ubWVudCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJ25hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbCBhbmQgZ2xvYmFsICcKKyAgICAgICAgICAgICAgICAgICAgICduYW1lc3BhY2VzIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICduZWFyZXN0IGVuY2xvc2luZ1xuJworICAgICAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBbMV0gVGhlICJleGVjIiAnCisgICAgICAgICAgICAgICAgICAgICAnc3RhdGVtZW50IGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSAiZXZhbCgpIiBhbmQgImV4ZWNmaWxlKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsICcKKyAgICAgICAgICAgICAgICAgICAgICdhcmd1bWVudHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdvdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSAnCisgICAgICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKKyAnZWxzZSc6ICdcbicKKyAgICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICcgICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuJworICAgICAgICAgJyAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0l0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyAnCisgICAgICAgICAnb25lXG4nCisgICAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuICcKKyAgICAgICAgICdvcGVyYXRpb25zXG4nCisgICAgICAgICAnZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4nCisgICAgICAgICAnKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuJworICAgICAgICAgJ0lmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbicKKyAgICAgICAgICdwcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCisgJ2V4Y2VwdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAnRXhjZXB0aW9uc1xuJworICAgICAgICAgICAgICAgJyoqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgJworICAgICAgICAgICAgICAgJ2NvbnRyb2xcbicKKyAgICAgICAgICAgICAgICdvZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciAnCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uYWxcbicKKyAgICAgICAgICAgICAgICdjb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgJworICAgICAgICAgICAgICAgJ2Vycm9yIGlzXG4nCisgICAgICAgICAgICAgICAnZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgJworICAgICAgICAgICAgICAgJ2J5IGFueVxuJworICAgICAgICAgICAgICAgJ2NvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgJworICAgICAgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgICAgICAndGhlIGVycm9yIG9jY3VycmVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSAnCisgICAgICAgICAgICAgICAncnVuLXRpbWVcbicKKyAgICAgICAgICAgICAgICdlcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbicKKyAgICAgICAgICAgICAgICdleHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAgJ2hhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gICcKKyAgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgICciZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSAnCisgICAgICAgICAgICAgICAnY2xlYW51cFxuJworICAgICAgICAgICAgICAgJ2NvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICAnd2hldGhlciBhblxuJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1B5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiAnCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICAnaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0ICcKKyAgICAgICAgICAgICAgICdhbiBvdXRlclxuJworICAgICAgICAgICAgICAgJ2xldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlICcKKyAgICAgICAgICAgICAgICdvZiBjb2RlXG4nCisgICAgICAgICAgICAgICAnZnJvbSB0aGUgdG9wKS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciAnCisgICAgICAgICAgICAgICAndGVybWluYXRlc1xuJworICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiAnCisgICAgICAgICAgICAgICAnbG9vcC4gIEluXG4nCisgICAgICAgICAgICAgICAnZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICdleGNlcHRpb24gaXNcbicKKyAgICAgICAgICAgICAgICciU3lzdGVtRXhpdCIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgJworICAgICAgICAgICAgICAgJ2NsYXVzZSBpc1xuJworICAgICAgICAgICAgICAgJ3NlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0ICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2UgdGhlXG4nCisgICAgICAgICAgICAgICAnY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgICdyZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gJworICAgICAgICAgICAgICAgJ2Fib3V0IHRoZVxuJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zIGNhbiBhbHNvIGJlIGlkZW50aWZpZWQgYnkgc3RyaW5ncywgaW4gd2hpY2ggY2FzZSAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnImV4Y2VwdCIgY2xhdXNlIGlzIHNlbGVjdGVkIGJ5IG9iamVjdCBpZGVudGl0eS4gIEFuIGFyYml0cmFyeSAnCisgICAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAgICdjYW4gYmUgcmFpc2VkIGFsb25nIHdpdGggdGhlIGlkZW50aWZ5aW5nIHN0cmluZyB3aGljaCBjYW4gYmUgJworICAgICAgICAgICAgICAgJ3Bhc3NlZCB0b1xuJworICAgICAgICAgICAgICAgJ3RoZSBoYW5kbGVyLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ05vdGU6IE1lc3NhZ2VzIHRvIGV4Y2VwdGlvbnMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgJworICAgICAgICAgICAgICAgJ1RoZWlyXG4nCisgICAgICAgICAgICAgICAnICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAnICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuICcKKyAgICAgICAgICAgICAgICd1bmRlclxuJworICAgICAgICAgICAgICAgJyAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1NlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlICcKKyAgICAgICAgICAgICAgICd0cnlcbicKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQgYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlIHJhaXNlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkICcKKyAgICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICAgJyAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSAnCisgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICcgICAgY29tcGlsZWQuXG4nLAorICdleGVjJzogJ1xuJworICAgICAgICAgJ1RoZSAiZXhlYyIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBleGVjX3N0bXQgOjo9ICJleGVjIiBvcl9leHByIFsiaW4iIGV4cHJlc3Npb24gWyIsIiBleHByZXNzaW9uXV1cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGlzIHN0YXRlbWVudCBzdXBwb3J0cyBkeW5hbWljIGV4ZWN1dGlvbiBvZiBQeXRob24gY29kZS4gIFRoZSAnCisgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICdleHByZXNzaW9uIHNob3VsZCBldmFsdWF0ZSB0byBlaXRoZXIgYSBVbmljb2RlIHN0cmluZywgYSAqTGF0aW4tMSpcbicKKyAgICAgICAgICdlbmNvZGVkIHN0cmluZywgYW4gb3BlbiBmaWxlIG9iamVjdCwgYSBjb2RlIG9iamVjdCwgb3IgYSB0dXBsZS4gIElmICcKKyAgICAgICAgICdpdFxuJworICAgICAgICAgJ2lzIGEgc3RyaW5nLCB0aGUgc3RyaW5nIGlzIHBhcnNlZCBhcyBhIHN1aXRlIG9mIFB5dGhvbiBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAnd2hpY2ggaXMgdGhlbiBleGVjdXRlZCAodW5sZXNzIGEgc3ludGF4IGVycm9yIG9jY3VycykuIFsxXSBJZiBpdCBpcyAnCisgICAgICAgICAnYW5cbicKKyAgICAgICAgICdvcGVuIGZpbGUsIHRoZSBmaWxlIGlzIHBhcnNlZCB1bnRpbCBFT0YgYW5kIGV4ZWN1dGVkLiBJZiBpdCBpcyBhICcKKyAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAnb2JqZWN0LCBpdCBpcyBzaW1wbHkgZXhlY3V0ZWQuICBGb3IgdGhlIGludGVycHJldGF0aW9uIG9mIGEgdHVwbGUsICcKKyAgICAgICAgICdzZWVcbicKKyAgICAgICAgICJiZWxvdy4gIEluIGFsbCBjYXNlcywgdGhlIGNvZGUgdGhhdCdzIGV4ZWN1dGVkIGlzIGV4cGVjdGVkIHRvIGJlICIKKyAgICAgICAgICd2YWxpZFxuJworICAgICAgICAgJ2FzIGZpbGUgaW5wdXQgKHNlZSBzZWN0aW9uIEZpbGUgaW5wdXQpLiAgQmUgYXdhcmUgdGhhdCB0aGUgInJldHVybiJcbicKKyAgICAgICAgICdhbmQgInlpZWxkIiBzdGF0ZW1lbnRzIG1heSBub3QgYmUgdXNlZCBvdXRzaWRlIG9mIGZ1bmN0aW9uICcKKyAgICAgICAgICdkZWZpbml0aW9uc1xuJworICAgICAgICAgJ2V2ZW4gd2l0aGluIHRoZSBjb250ZXh0IG9mIGNvZGUgcGFzc2VkIHRvIHRoZSAiZXhlYyIgc3RhdGVtZW50LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0luIGFsbCBjYXNlcywgaWYgdGhlIG9wdGlvbmFsIHBhcnRzIGFyZSBvbWl0dGVkLCB0aGUgY29kZSBpcyAnCisgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICdpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG9ubHkgdGhlIGZpcnN0IGV4cHJlc3Npb24gYWZ0ZXIgImluIiBpc1xuJworICAgICAgICAgJ3NwZWNpZmllZCwgaXQgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSwgd2hpY2ggd2lsbCBiZSB1c2VkIGZvciBib3RoICcKKyAgICAgICAgICd0aGVcbicKKyAgICAgICAgICdnbG9iYWwgYW5kIHRoZSBsb2NhbCB2YXJpYWJsZXMuICBJZiB0d28gZXhwcmVzc2lvbnMgYXJlIGdpdmVuLCB0aGV5XG4nCisgICAgICAgICAnYXJlIHVzZWQgZm9yIHRoZSBnbG9iYWwgYW5kIGxvY2FsIHZhcmlhYmxlcywgcmVzcGVjdGl2ZWx5LiBJZlxuJworICAgICAgICAgJ3Byb3ZpZGVkLCAqbG9jYWxzKiBjYW4gYmUgYW55IG1hcHBpbmcgb2JqZWN0LiBSZW1lbWJlciB0aGF0IGF0ICcKKyAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICdsZXZlbCwgZ2xvYmFscyBhbmQgbG9jYWxzIGFyZSB0aGUgc2FtZSBkaWN0aW9uYXJ5LiBJZiB0d28gc2VwYXJhdGVcbicKKyAgICAgICAgICdvYmplY3RzIGFyZSBnaXZlbiBhcyAqZ2xvYmFscyogYW5kICpsb2NhbHMqLCB0aGUgY29kZSB3aWxsIGJlICcKKyAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgJ2FzIGlmIGl0IHdlcmUgZW1iZWRkZWQgaW4gYSBjbGFzcyBkZWZpbml0aW9uLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSBmaXJzdCBleHByZXNzaW9uIG1heSBhbHNvIGJlIGEgdHVwbGUgb2YgbGVuZ3RoIDIgb3IgMy4gIEluIHRoaXNcbicKKyAgICAgICAgICdjYXNlLCB0aGUgb3B0aW9uYWwgcGFydHMgbXVzdCBiZSBvbWl0dGVkLiAgVGhlIGZvcm0gImV4ZWMoZXhwcixcbicKKyAgICAgICAgICdnbG9iYWxzKSIgaXMgZXF1aXZhbGVudCB0byAiZXhlYyBleHByIGluIGdsb2JhbHMiLCB3aGlsZSB0aGUgZm9ybVxuJworICAgICAgICAgJyJleGVjKGV4cHIsIGdsb2JhbHMsIGxvY2FscykiIGlzIGVxdWl2YWxlbnQgdG8gImV4ZWMgZXhwciBpbiAnCisgICAgICAgICAnZ2xvYmFscyxcbicKKyAgICAgICAgICdsb2NhbHMiLiAgVGhlIHR1cGxlIGZvcm0gb2YgImV4ZWMiIHByb3ZpZGVzIGNvbXBhdGliaWxpdHkgd2l0aCAnCisgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAnMywgd2hlcmUgImV4ZWMiIGlzIGEgZnVuY3Rpb24gcmF0aGVyIHRoYW4gYSBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogRm9ybWVybHksICpsb2NhbHMqIHdhcyByZXF1aXJlZCB0byBiZSBhXG4nCisgICAgICAgICAnZGljdGlvbmFyeS5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBcyBhIHNpZGUgZWZmZWN0LCBhbiBpbXBsZW1lbnRhdGlvbiBtYXkgaW5zZXJ0IGFkZGl0aW9uYWwga2V5cyBpbnRvXG4nCisgICAgICAgICAndGhlIGRpY3Rpb25hcmllcyBnaXZlbiBiZXNpZGVzIHRob3NlIGNvcnJlc3BvbmRpbmcgdG8gdmFyaWFibGUgJworICAgICAgICAgJ25hbWVzXG4nCisgICAgICAgICAnc2V0IGJ5IHRoZSBleGVjdXRlZCBjb2RlLiAgRm9yIGV4YW1wbGUsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICdtYXlcbicKKyAgICAgICAgICdhZGQgYSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgb2YgdGhlIGJ1aWx0LWluIG1vZHVsZSAnCisgICAgICAgICAnIl9fYnVpbHRpbl9fIlxuJworICAgICAgICAgJ3VuZGVyIHRoZSBrZXkgIl9fYnVpbHRpbnNfXyIgKCEpLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgIioqUHJvZ3JhbW1lcidzIGhpbnRzOioqIGR5bmFtaWMgZXZhbHVhdGlvbiBvZiBleHByZXNzaW9ucyBpcyAiCisgICAgICAgICAnc3VwcG9ydGVkXG4nCisgICAgICAgICAnYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJldmFsKCkiLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAnCisgICAgICAgICAnImdsb2JhbHMoKSJcbicKKyAgICAgICAgICdhbmQgImxvY2FscygpIiByZXR1cm4gdGhlIGN1cnJlbnQgZ2xvYmFsIGFuZCBsb2NhbCBkaWN0aW9uYXJ5LFxuJworICAgICAgICAgJ3Jlc3BlY3RpdmVseSwgd2hpY2ggbWF5IGJlIHVzZWZ1bCB0byBwYXNzIGFyb3VuZCBmb3IgdXNlIGJ5ICJleGVjIi5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdbMV0gTm90ZSB0aGF0IHRoZSBwYXJzZXIgb25seSBhY2NlcHRzIHRoZSBVbml4LXN0eWxlIGVuZCBvZiBsaW5lXG4nCisgICAgICAgICAnICAgIGNvbnZlbnRpb24uIElmIHlvdSBhcmUgcmVhZGluZyB0aGUgY29kZSBmcm9tIGEgZmlsZSwgbWFrZSBzdXJlICcKKyAgICAgICAgICd0b1xuJworICAgICAgICAgJyAgICB1c2UgKnVuaXZlcnNhbCBuZXdsaW5lcyogbW9kZSB0byBjb252ZXJ0IFdpbmRvd3Mgb3IgTWFjLXN0eWxlXG4nCisgICAgICAgICAnICAgIG5ld2xpbmVzLlxuJywKKyAnZXhlY21vZGVsJzogJ1xuJworICAgICAgICAgICAgICAnRXhlY3V0aW9uIG1vZGVsXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmdcbicKKyAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcqTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lICcKKyAgICAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbnMuIEVhY2ggb2NjdXJyZW5jZSBvZiBhIG5hbWUgaW4gdGhlIHByb2dyYW0gdGV4dCAnCisgICAgICAgICAgICAgICdyZWZlcnMgdG9cbicKKyAgICAgICAgICAgICAgJ3RoZSAqYmluZGluZyogb2YgdGhhdCBuYW1lIGVzdGFibGlzaGVkIGluIHRoZSBpbm5lcm1vc3QgJworICAgICAgICAgICAgICAnZnVuY3Rpb24gYmxvY2tcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIHVzZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSAqYmxvY2sqIGlzIGEgcGllY2Ugb2YgUHl0aG9uIHByb2dyYW0gdGV4dCB0aGF0IGlzIGV4ZWN1dGVkIGFzICcKKyAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgJ3VuaXQuIFRoZSBmb2xsb3dpbmcgYXJlIGJsb2NrczogYSBtb2R1bGUsIGEgZnVuY3Rpb24gYm9keSwgYW5kICcKKyAgICAgICAgICAgICAgJ2EgY2xhc3NcbicKKyAgICAgICAgICAgICAgJ2RlZmluaXRpb24uIEVhY2ggY29tbWFuZCB0eXBlZCBpbnRlcmFjdGl2ZWx5IGlzIGEgYmxvY2suICBBICcKKyAgICAgICAgICAgICAgJ3NjcmlwdFxuJworICAgICAgICAgICAgICAnZmlsZSAoYSBmaWxlIGdpdmVuIGFzIHN0YW5kYXJkIGlucHV0IHRvIHRoZSBpbnRlcnByZXRlciBvciAnCisgICAgICAgICAgICAgICdzcGVjaWZpZWRcbicKKyAgICAgICAgICAgICAgJ29uIHRoZSBpbnRlcnByZXRlciBjb21tYW5kIGxpbmUgdGhlIGZpcnN0IGFyZ3VtZW50KSBpcyBhIGNvZGUgJworICAgICAgICAgICAgICAnYmxvY2suXG4nCisgICAgICAgICAgICAgICdBIHNjcmlwdCBjb21tYW5kIChhIGNvbW1hbmQgc3BlY2lmaWVkIG9uIHRoZSBpbnRlcnByZXRlciAnCisgICAgICAgICAgICAgICdjb21tYW5kIGxpbmVcbicKKyAgICAgICAgICAgICAgIndpdGggdGhlICcqKi1jKionIG9wdGlvbikgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIGZpbGUgcmVhZCBieSAiCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ2J1aWx0LWluIGZ1bmN0aW9uICJleGVjZmlsZSgpIiBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nICcKKyAgICAgICAgICAgICAgJ2FyZ3VtZW50XG4nCisgICAgICAgICAgICAgICdwYXNzZWQgdG8gdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJldmFsKCkiIGFuZCB0byB0aGUgImV4ZWMiICcKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAgICAnaXMgYSBjb2RlIGJsb2NrLiBUaGUgZXhwcmVzc2lvbiByZWFkIGFuZCBldmFsdWF0ZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICdmdW5jdGlvbiAiaW5wdXQoKSIgaXMgYSBjb2RlIGJsb2NrLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lICcKKyAgICAgICAgICAgICAgJ2NvbnRhaW5zXG4nCisgICAgICAgICAgICAgICdzb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCAnCisgICAgICAgICAgICAgICdkZXRlcm1pbmVzXG4nCisgICAgICAgICAgICAgICJ3aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2sncyAiCisgICAgICAgICAgICAgICdleGVjdXRpb24gaGFzXG4nCisgICAgICAgICAgICAgICdjb21wbGV0ZWQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgKnNjb3BlKiBkZWZpbmVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgbmFtZSB3aXRoaW4gYSBibG9jay4gIElmICcKKyAgICAgICAgICAgICAgJ2EgbG9jYWxcbicKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRlZmluZWQgaW4gYSBibG9jaywgaXRzIHNjb3BlIGluY2x1ZGVzIHRoYXQgYmxvY2suICAnCisgICAgICAgICAgICAgICdJZiB0aGVcbicKKyAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2NjdXJzIGluIGEgZnVuY3Rpb24gYmxvY2ssIHRoZSBzY29wZSBleHRlbmRzIHRvIGFueSAnCisgICAgICAgICAgICAgICdibG9ja3NcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5lZCB3aXRoaW4gdGhlIGRlZmluaW5nIG9uZSwgdW5sZXNzIGEgY29udGFpbmVkIGJsb2NrICcKKyAgICAgICAgICAgICAgJ2ludHJvZHVjZXNcbicKKyAgICAgICAgICAgICAgJ2EgZGlmZmVyZW50IGJpbmRpbmcgZm9yIHRoZSBuYW1lLiAgVGhlIHNjb3BlIG9mIG5hbWVzIGRlZmluZWQgJworICAgICAgICAgICAgICAnaW4gYVxuJworICAgICAgICAgICAgICAnY2xhc3MgYmxvY2sgaXMgbGltaXRlZCB0byB0aGUgY2xhc3MgYmxvY2s7IGl0IGRvZXMgbm90IGV4dGVuZCAnCisgICAgICAgICAgICAgICd0byB0aGVcbicKKyAgICAgICAgICAgICAgJ2NvZGUgYmxvY2tzIG9mIG1ldGhvZHMgLS0gdGhpcyBpbmNsdWRlcyBnZW5lcmF0b3IgZXhwcmVzc2lvbnMgJworICAgICAgICAgICAgICAnc2luY2VcbicKKyAgICAgICAgICAgICAgJ3RoZXkgYXJlIGltcGxlbWVudGVkIHVzaW5nIGEgZnVuY3Rpb24gc2NvcGUuICBUaGlzIG1lYW5zIHRoYXQgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdmb2xsb3dpbmcgd2lsbCBmYWlsOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBjbGFzcyBBOlxuJworICAgICAgICAgICAgICAnICAgICAgIGEgPSA0MlxuJworICAgICAgICAgICAgICAnICAgICAgIGIgPSBsaXN0KGEgKyBpIGZvciBpIGluIHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSAnCisgICAgICAgICAgICAgICduZWFyZXN0XG4nCisgICAgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAgICAiaXMgY2FsbGVkIHRoZSBibG9jaydzICplbnZpcm9ubWVudCouXG4iCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgbmFtZSBpcyBib3VuZCBpbiBhIGJsb2NrLCBpdCBpcyBhIGxvY2FsIHZhcmlhYmxlIG9mIHRoYXQgJworICAgICAgICAgICAgICAnYmxvY2suXG4nCisgICAgICAgICAgICAgICdJZiBhIG5hbWUgaXMgYm91bmQgYXQgdGhlIG1vZHVsZSBsZXZlbCwgaXQgaXMgYSBnbG9iYWwgJworICAgICAgICAgICAgICAndmFyaWFibGUuICAoVGhlXG4nCisgICAgICAgICAgICAgICd2YXJpYWJsZXMgb2YgdGhlIG1vZHVsZSBjb2RlIGJsb2NrIGFyZSBsb2NhbCBhbmQgZ2xvYmFsLikgIElmICcKKyAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrIGJ1dCBub3QgZGVmaW5lZCB0aGVyZSwgaXQgaXMgYSAnCisgICAgICAgICAgICAgICcqZnJlZVxuJworICAgICAgICAgICAgICAndmFyaWFibGUqLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyBub3QgZm91bmQgYXQgYWxsLCBhICJOYW1lRXJyb3IiIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgICdyYWlzZWQuXG4nCisgICAgICAgICAgICAgICdJZiB0aGUgbmFtZSByZWZlcnMgdG8gYSBsb2NhbCB2YXJpYWJsZSB0aGF0IGhhcyBub3QgYmVlbiBib3VuZCwgJworICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAnIlVuYm91bmRMb2NhbEVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiAgIlVuYm91bmRMb2NhbEVycm9yIiAnCisgICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgICdzdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvICcKKyAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAgICAgJyJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCAnCisgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgJworICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICdzZWNvbmQgcG9zaXRpb24gb2YgYW4gImV4Y2VwdCIgY2xhdXNlIGhlYWRlciBvciBhZnRlciAiYXMiIGluIGEgJworICAgICAgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQuICBUaGUgImltcG9ydCIgc3RhdGVtZW50IG9mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgJworICAgICAgICAgICAgICAnKiJcbicKKyAgICAgICAgICAgICAgJ2JpbmRzIGFsbCBuYW1lcyBkZWZpbmVkIGluIHRoZSBpbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSAnCisgICAgICAgICAgICAgICdiZWdpbm5pbmdcbicKKyAgICAgICAgICAgICAgJ3dpdGggYW4gdW5kZXJzY29yZS4gIFRoaXMgZm9ybSBtYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgJworICAgICAgICAgICAgICAnbGV2ZWwuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgJworICAgICAgICAgICAgICAnYm91bmQgZm9yXG4nCisgICAgICAgICAgICAgICd0aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSAnCisgICAgICAgICAgICAgICduYW1lKS4gIEl0XG4nCisgICAgICAgICAgICAgICdpcyBpbGxlZ2FsIHRvIHVuYmluZCBhIG5hbWUgdGhhdCBpcyByZWZlcmVuY2VkIGJ5IGFuIGVuY2xvc2luZyAnCisgICAgICAgICAgICAgICdzY29wZTtcbicKKyAgICAgICAgICAgICAgJ3RoZSBjb21waWxlciB3aWxsIHJlcG9ydCBhICJTeW50YXhFcnJvciIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0VhY2ggYXNzaWdubWVudCBvciBpbXBvcnQgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jayAnCisgICAgICAgICAgICAgICdkZWZpbmVkIGJ5IGFcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIGRlZmluaXRpb24gb3IgYXQgdGhlIG1vZHVsZSBsZXZlbCAodGhlICcKKyAgICAgICAgICAgICAgJ3RvcC1sZXZlbFxuJworICAgICAgICAgICAgICAnY29kZSBibG9jaykuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSAnCisgICAgICAgICAgICAgICdibG9jaywgYWxsXG4nCisgICAgICAgICAgICAgICd1c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ2N1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkICcKKyAgICAgICAgICAgICAgJ3dpdGhpbiBhXG4nCisgICAgICAgICAgICAgICdibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gbGFja3NcbicKKyAgICAgICAgICAgICAgJ2RlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyICcKKyAgICAgICAgICAgICAgJ2FueXdoZXJlXG4nCisgICAgICAgICAgICAgICd3aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuICcKKyAgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgICdkZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgJworICAgICAgICAgICAgICAnYmluZGluZ1xuJworICAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgdGhlIGdsb2JhbCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiB0aGUgJworICAgICAgICAgICAgICAnbmFtZVxuJworICAgICAgICAgICAgICAnc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAndG9wLWxldmVsIG5hbWVzcGFjZS4gTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlIGJ5XG4nCisgICAgICAgICAgICAgICdzZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgJworICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAgICAnb2YgdGhlIG1vZHVsZSAiX19idWlsdGluX18iLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgJworICAgICAgICAgICAgICAnZmlyc3QuXG4nCisgICAgICAgICAgICAgICdJZiB0aGUgbmFtZSBpcyBub3QgZm91bmQgdGhlcmUsIHRoZSBidWlsdGlucyBuYW1lc3BhY2UgaXMgJworICAgICAgICAgICAgICAnc2VhcmNoZWQuXG4nCisgICAgICAgICAgICAgICdUaGUgZ2xvYmFsIHN0YXRlbWVudCBtdXN0IHByZWNlZGUgYWxsIHVzZXMgb2YgdGhlIG5hbWUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlICcKKyAgICAgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgICAgICdpcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyAnCisgICAgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgJworICAgICAgICAgICAgICAnbGF0dGVyIGNhc2VcbicKKyAgICAgICAgICAgICAgInRoZSBtb2R1bGUncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIgorICAgICAgICAgICAgICAnIl9fbWFpbl9fIlxuJworICAgICAgICAgICAgICAnbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJfX2J1aWx0aW5fXyIgJworICAgICAgICAgICAgICAnKG5vdGU6IG5vXG4nCisgICAgICAgICAgICAgICdcJ3NcJyk7IHdoZW4gaW4gYW55IG90aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgJworICAgICAgICAgICAgICAnZm9yIHRoZVxuJworICAgICAgICAgICAgICAnZGljdGlvbmFyeSBvZiB0aGUgIl9fYnVpbHRpbl9fIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgJworICAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgICdzZXQgdG8gYSB1c2VyLWNyZWF0ZWQgZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgJworICAgICAgICAgICAgICAncmVzdHJpY3RlZFxuJworICAgICAgICAgICAgICAnZXhlY3V0aW9uLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbicKKyAgICAgICAgICAgICAgJyJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICAnCisgICAgICAgICAgICAgICdVc2Vyc1xuJworICAgICAgICAgICAgICAnd2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgJworICAgICAgICAgICAgICAnImltcG9ydCJcbicKKyAgICAgICAgICAgICAgJ3RoZSAiX19idWlsdGluX18iIChubyBcJ3NcJykgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXNcbicKKyAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlbHkuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgJworICAgICAgICAgICAgICAndGltZSBhXG4nCisgICAgICAgICAgICAgICdtb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyAnCisgICAgICAgICAgICAgICdjYWxsZWRcbicKKyAgICAgICAgICAgICAgJyJfX21haW5fXyIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgaGFzIHRoZSBzYW1lIHNjb3BlIGFzIGEgbmFtZSBiaW5kaW5nICcKKyAgICAgICAgICAgICAgJ29wZXJhdGlvblxuJworICAgICAgICAgICAgICAnaW4gdGhlIHNhbWUgYmxvY2suICBJZiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgZm9yIGEgZnJlZSAnCisgICAgICAgICAgICAgICd2YXJpYWJsZVxuJworICAgICAgICAgICAgICAnY29udGFpbnMgYSBnbG9iYWwgc3RhdGVtZW50LCB0aGUgZnJlZSB2YXJpYWJsZSBpcyB0cmVhdGVkIGFzIGEgJworICAgICAgICAgICAgICAnZ2xvYmFsLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBIGNsYXNzIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCAnCisgICAgICAgICAgICAgICdkZWZpbmVcbicKKyAgICAgICAgICAgICAgJ25hbWVzLiBUaGVzZSByZWZlcmVuY2VzIGZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lICcKKyAgICAgICAgICAgICAgJ3Jlc29sdXRpb24uXG4nCisgICAgICAgICAgICAgICdUaGUgbmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICdvZiB0aGUgY2xhc3MuICBOYW1lcyBkZWZpbmVkIGF0IHRoZSBjbGFzcyBzY29wZSBhcmUgbm90IHZpc2libGUgJworICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgJ21ldGhvZHMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgJworICAgICAgICAgICAgICAnd2hlbiB1c2VkXG4nCisgICAgICAgICAgICAgICdpbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyAnCisgICAgICAgICAgICAgICdpbGxlZ2FsIHRvXG4nCisgICAgICAgICAgICAgICdkZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgdGhlIHdpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImltcG9ydCAqIiAtLS0gaXMgdXNlZCBpbiAnCisgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICdmdW5jdGlvbiBhbmQgdGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG9yIGlzIGEgbmVzdGVkIGJsb2NrIHdpdGggJworICAgICAgICAgICAgICAnZnJlZVxuJworICAgICAgICAgICAgICAndmFyaWFibGVzLCB0aGUgY29tcGlsZXIgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0lmICJleGVjIiBpcyB1c2VkIGluIGEgZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyAnCisgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICduZXN0ZWQgYmxvY2sgd2l0aCBmcmVlIHZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYVxuJworICAgICAgICAgICAgICAnIlN5bnRheEVycm9yIiB1bmxlc3MgdGhlIGV4ZWMgZXhwbGljaXRseSBzcGVjaWZpZXMgdGhlIGxvY2FsICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAgICAnZm9yIHRoZSAiZXhlYyIuICAoSW4gb3RoZXIgd29yZHMsICJleGVjIG9iaiIgd291bGQgYmUgaWxsZWdhbCwgJworICAgICAgICAgICAgICAnYnV0XG4nCisgICAgICAgICAgICAgICciZXhlYyBvYmogaW4gbnMiIHdvdWxkIGJlIGxlZ2FsLilcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlICJldmFsKCkiLCAiZXhlY2ZpbGUoKSIsIGFuZCAiaW5wdXQoKSIgZnVuY3Rpb25zIGFuZCB0aGUgJworICAgICAgICAgICAgICAnImV4ZWMiXG4nCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSBmdWxsIGVudmlyb25tZW50IGZvciAnCisgICAgICAgICAgICAgICdyZXNvbHZpbmdcbicKKyAgICAgICAgICAgICAgJ25hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSBsb2NhbCBhbmQgZ2xvYmFsICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZXMgb2ZcbicKKyAgICAgICAgICAgICAgJ3RoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90IHJlc29sdmVkIGluIHRoZSBuZWFyZXN0ICcKKyAgICAgICAgICAgICAgJ2VuY2xvc2luZ1xuJworICAgICAgICAgICAgICAnbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuIFsxXSBUaGUgImV4ZWMiICcKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudCBhbmRcbicKKyAgICAgICAgICAgICAgJ3RoZSAiZXZhbCgpIiBhbmQgImV4ZWNmaWxlKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyAnCisgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlICcKKyAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9uc1xuJworICAgICAgICAgICAgICAnPT09PT09PT09PVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgJworICAgICAgICAgICAgICAnY29udHJvbFxuJworICAgICAgICAgICAgICAnb2YgYSBjb2RlIGJsb2NrIGluIG9yZGVyIHRvIGhhbmRsZSBlcnJvcnMgb3Igb3RoZXIgZXhjZXB0aW9uYWxcbicKKyAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMuICBBbiBleGNlcHRpb24gaXMgKnJhaXNlZCogYXQgdGhlIHBvaW50IHdoZXJlIHRoZSAnCisgICAgICAgICAgICAgICdlcnJvciBpc1xuJworICAgICAgICAgICAgICAnZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgJworICAgICAgICAgICAgICAnYnkgYW55XG4nCisgICAgICAgICAgICAgICdjb2RlIGJsb2NrIHRoYXQgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbnZva2VkIHRoZSBjb2RlIGJsb2NrICcKKyAgICAgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgICAgICd0aGUgZXJyb3Igb2NjdXJyZWQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSAnCisgICAgICAgICAgICAgICdydW4tdGltZVxuJworICAgICAgICAgICAgICAnZXJyb3IgKHN1Y2ggYXMgZGl2aXNpb24gYnkgemVybykuICBBIFB5dGhvbiBwcm9ncmFtIGNhbiBhbHNvXG4nCisgICAgICAgICAgICAgICdleHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gJworICAgICAgICAgICAgICAnRXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICdoYW5kbGVycyBhcmUgc3BlY2lmaWVkIHdpdGggdGhlICJ0cnkiIC4uLiAiZXhjZXB0IiBzdGF0ZW1lbnQuICAnCisgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgJyJmaW5hbGx5IiBjbGF1c2Ugb2Ygc3VjaCBhIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5ICcKKyAgICAgICAgICAgICAgJ2NsZWFudXBcbicKKyAgICAgICAgICAgICAgJ2NvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICd3aGV0aGVyIGFuXG4nCisgICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJyZWQgb3Igbm90IGluIHRoZSBwcmVjZWRpbmcgY29kZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnUHl0aG9uIHVzZXMgdGhlICJ0ZXJtaW5hdGlvbiIgbW9kZWwgb2YgZXJyb3IgaGFuZGxpbmc6IGFuICcKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAnaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0IGFuICcKKyAgICAgICAgICAgICAgJ291dGVyXG4nCisgICAgICAgICAgICAgICdsZXZlbCwgYnV0IGl0IGNhbm5vdCByZXBhaXIgdGhlIGNhdXNlIG9mIHRoZSBlcnJvciBhbmQgcmV0cnkgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICdmYWlsaW5nIG9wZXJhdGlvbiAoZXhjZXB0IGJ5IHJlLWVudGVyaW5nIHRoZSBvZmZlbmRpbmcgcGllY2Ugb2YgJworICAgICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAgICAnZnJvbSB0aGUgdG9wKS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhbiBleGNlcHRpb24gaXMgbm90IGhhbmRsZWQgYXQgYWxsLCB0aGUgaW50ZXJwcmV0ZXIgJworICAgICAgICAgICAgICAndGVybWluYXRlc1xuJworICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZSBwcm9ncmFtLCBvciByZXR1cm5zIHRvIGl0cyBpbnRlcmFjdGl2ZSBtYWluICcKKyAgICAgICAgICAgICAgJ2xvb3AuICBJblxuJworICAgICAgICAgICAgICAnZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBpc1xuJworICAgICAgICAgICAgICAnIlN5c3RlbUV4aXQiLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBpZGVudGlmaWVkIGJ5IGNsYXNzIGluc3RhbmNlcy4gIFRoZSAiZXhjZXB0IiAnCisgICAgICAgICAgICAgICdjbGF1c2UgaXNcbicKKyAgICAgICAgICAgICAgJ3NlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0ICcKKyAgICAgICAgICAgICAgJ3JlZmVyZW5jZSB0aGVcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9mIHRoZSBpbnN0YW5jZSBvciBhIGJhc2UgY2xhc3MgdGhlcmVvZi4gIFRoZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgJ3JlY2VpdmVkIGJ5IHRoZSBoYW5kbGVyIGFuZCBjYW4gY2FycnkgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiAnCisgICAgICAgICAgICAgICdhYm91dCB0aGVcbicKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBjYW4gYWxzbyBiZSBpZGVudGlmaWVkIGJ5IHN0cmluZ3MsIGluIHdoaWNoIGNhc2UgJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICciZXhjZXB0IiBjbGF1c2UgaXMgc2VsZWN0ZWQgYnkgb2JqZWN0IGlkZW50aXR5LiAgQW4gYXJiaXRyYXJ5ICcKKyAgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgICdjYW4gYmUgcmFpc2VkIGFsb25nIHdpdGggdGhlIGlkZW50aWZ5aW5nIHN0cmluZyB3aGljaCBjYW4gYmUgJworICAgICAgICAgICAgICAncGFzc2VkIHRvXG4nCisgICAgICAgICAgICAgICd0aGUgaGFuZGxlci5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTm90ZTogTWVzc2FnZXMgdG8gZXhjZXB0aW9ucyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICAnCisgICAgICAgICAgICAgICdUaGVpclxuJworICAgICAgICAgICAgICAnICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgJyAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biAnCisgICAgICAgICAgICAgICd1bmRlclxuJworICAgICAgICAgICAgICAnICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1NlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlICcKKyAgICAgICAgICAgICAgJ3RyeVxuJworICAgICAgICAgICAgICAnc3RhdGVtZW50IGFuZCAicmFpc2UiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSByYWlzZSAnCisgICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdbMV0gVGhpcyBsaW1pdGF0aW9uIG9jY3VycyBiZWNhdXNlIHRoZSBjb2RlIHRoYXQgaXMgZXhlY3V0ZWQgJworICAgICAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAgICAgJyAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSAnCisgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAnICAgIGNvbXBpbGVkLlxuJywKKyAnZXhwcmxpc3RzJzogJ1xuJworICAgICAgICAgICAgICAnRXhwcmVzc2lvbiBsaXN0c1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBleHByZXNzaW9uX2xpc3QgOjo9IGV4cHJlc3Npb24gKCAiLCIgZXhwcmVzc2lvbiApKiBbIiwiXVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBleHByZXNzaW9uIGxpc3QgY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgJworICAgICAgICAgICAgICAndHVwbGUuICBUaGVcbicKKyAgICAgICAgICAgICAgJ2xlbmd0aCBvZiB0aGUgdHVwbGUgaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgbGlzdC4gICcKKyAgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICAnZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAnCisgICAgICAgICAgICAgICcoYS5rLmEuIGFcbicKKyAgICAgICAgICAgICAgJypzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgJworICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAid2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuJ3QgY3JlYXRlIGEgdHVwbGUsIGJ1dCByYXRoZXIgIgorICAgICAgICAgICAgICAneWllbGRzIHRoZVxuJworICAgICAgICAgICAgICAndmFsdWUgb2YgdGhhdCBleHByZXNzaW9uLiAoVG8gY3JlYXRlIGFuIGVtcHR5IHR1cGxlLCB1c2UgYW4gJworICAgICAgICAgICAgICAnZW1wdHkgcGFpclxuJworICAgICAgICAgICAgICAnb2YgcGFyZW50aGVzZXM6ICIoKSIuKVxuJywKKyAnZmxvYXRpbmcnOiAnXG4nCisgICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGbG9hdGluZyBwb2ludCBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbFxuJworICAgICAgICAgICAgICdkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZsb2F0bnVtYmVyICAgOjo9IHBvaW50ZmxvYXQgfCBleHBvbmVudGZsb2F0XG4nCisgICAgICAgICAgICAgJyAgIHBvaW50ZmxvYXQgICAgOjo9IFtpbnRwYXJ0XSBmcmFjdGlvbiB8IGludHBhcnQgIi4iXG4nCisgICAgICAgICAgICAgJyAgIGV4cG9uZW50ZmxvYXQgOjo9IChpbnRwYXJ0IHwgcG9pbnRmbG9hdCkgZXhwb25lbnRcbicKKyAgICAgICAgICAgICAnICAgaW50cGFydCAgICAgICA6Oj0gZGlnaXQrXG4nCisgICAgICAgICAgICAgJyAgIGZyYWN0aW9uICAgICAgOjo9ICIuIiBkaWdpdCtcbicKKyAgICAgICAgICAgICAnICAgZXhwb25lbnQgICAgICA6Oj0gKCJlIiB8ICJFIikgWyIrIiB8ICItIl0gZGlnaXQrXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgdGhlIGludGVnZXIgYW5kIGV4cG9uZW50IHBhcnRzIG9mIGZsb2F0aW5nIHBvaW50ICcKKyAgICAgICAgICAgICAnbnVtYmVycyBjYW5cbicKKyAgICAgICAgICAgICAnbG9vayBsaWtlIG9jdGFsIGludGVnZXJzLCBidXQgYXJlIGludGVycHJldGVkIHVzaW5nIHJhZGl4IDEwLiAgJworICAgICAgICAgICAgICdGb3JcbicKKyAgICAgICAgICAgICAnZXhhbXBsZSwgIjA3N2UwMTAiIGlzIGxlZ2FsLCBhbmQgZGVub3RlcyB0aGUgc2FtZSBudW1iZXIgYXMgJworICAgICAgICAgICAgICciNzdlMTAiLlxuJworICAgICAgICAgICAgICdUaGUgYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpcyBpbXBsZW1lbnRhdGlvbi1cbicKKyAgICAgICAgICAgICAnZGVwZW5kZW50LiBTb21lIGV4YW1wbGVzIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTBcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCBudW1lcmljIGxpdGVyYWxzIGRvIG5vdCBpbmNsdWRlIGEgc2lnbjsgYSBwaHJhc2UgbGlrZSAnCisgICAgICAgICAgICAgJyItMSJcbicKKyAgICAgICAgICAgICAnaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgIi0iIGFuZCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdsaXRlcmFsICIxIi5cbicsCisgJ2Zvcic6ICdcbicKKyAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSAnCisgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAnKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuJworICAgICAgICAnICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbicKKyAgICAgICAgJ29iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG4nCisgICAgICAgICciZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxuJworICAgICAgICAncHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgb2YgYXNjZW5kaW5nIGluZGljZXMuICBFYWNoXG4nCisgICAgICAgICdpdGVtIGluIHR1cm4gaXMgYXNzaWduZWQgdG8gdGhlIHRhcmdldCBsaXN0IHVzaW5nIHRoZSBzdGFuZGFyZCBydWxlc1xuJworICAgICAgICAnZm9yIGFzc2lnbm1lbnRzLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXMgZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmVcbicKKyAgICAgICAgJ2V4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgZW1wdHkpLCB0aGUgJworICAgICAgICAnc3VpdGVcbicKKyAgICAgICAgJ2luIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSBsb29wXG4nCisgICAgICAgICd0ZXJtaW5hdGVzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG4nCisgICAgICAgICd3aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiAnCisgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kICcKKyAgICAgICAgJ2NvbnRpbnVlc1xuJworICAgICAgICAnd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIHdhcyBubyBuZXh0XG4nCisgICAgICAgICdpdGVtLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdUaGUgc3VpdGUgbWF5IGFzc2lnbiB0byB0aGUgdmFyaWFibGUocykgaW4gdGhlIHRhcmdldCBsaXN0OyB0aGlzICcKKyAgICAgICAgJ2RvZXNcbicKKyAgICAgICAgJ25vdCBhZmZlY3QgdGhlIG5leHQgaXRlbSBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIHRhcmdldCBsaXN0IGlzIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsIGJ1dCBpZiB0aGVcbicKKyAgICAgICAgJ3NlcXVlbmNlIGlzIGVtcHR5LCBpdCB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgdG8gYXQgYWxsIGJ5IHRoZVxuJworICAgICAgICAnbG9vcC4gIEhpbnQ6IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAicmFuZ2UoKSIgcmV0dXJucyBhIHNlcXVlbmNlIG9mXG4nCisgICAgICAgICdpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzICJmb3IgaSA6PSBhIHRvICcKKyAgICAgICAgJ2JcbicKKyAgICAgICAgJ2RvIjsgZS5nLiwgInJhbmdlKDMpIiByZXR1cm5zIHRoZSBsaXN0ICJbMCwgMSwgMl0iLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdOb3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZVxuJworICAgICAgICAnICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuIEFuXG4nCisgICAgICAgICcgIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuJworICAgICAgICAnICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuJworICAgICAgICAnICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzICcKKyAgICAgICAgJ21lYW5zXG4nCisgICAgICAgICcgIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJyAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCAnCisgICAgICAgICdvZlxuJworICAgICAgICAnICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgJworICAgICAgICAndGhlXG4nCisgICAgICAgICcgIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuJworICAgICAgICAnICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbicKKyAgICAgICAgJyAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbicKKyAgICAgICAgJyAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgICAgZm9yIHggaW4gYVs6XTpcbicKKyAgICAgICAgJyAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJywKKyAnZm9ybWF0c3RyaW5ncyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgU3RyaW5nIFN5bnRheFxuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBhbmQgdGhlICJGb3JtYXR0ZXIiIGNsYXNzIHNoYXJlICcKKyAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mICcKKyAgICAgICAgICAgICAgICAgICciRm9ybWF0dGVyIixcbicKKyAgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgc3RyaW5ncyBjb250YWluICJyZXBsYWNlbWVudCBmaWVsZHMiIHN1cnJvdW5kZWQgYnkgJworICAgICAgICAgICAgICAgICAgJ2N1cmx5IGJyYWNlc1xuJworICAgICAgICAgICAgICAgICAgJyJ7fSIuIEFueXRoaW5nIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiBicmFjZXMgaXMgJworICAgICAgICAgICAgICAgICAgJ2NvbnNpZGVyZWQgbGl0ZXJhbFxuJworICAgICAgICAgICAgICAgICAgJ3RleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkICcKKyAgICAgICAgICAgICAgICAgICd0byBpbmNsdWRlXG4nCisgICAgICAgICAgICAgICAgICAnYSBicmFjZSBjaGFyYWN0ZXIgaW4gdGhlIGxpdGVyYWwgdGV4dCwgaXQgY2FuIGJlIGVzY2FwZWQgYnkgJworICAgICAgICAgICAgICAgICAgJ2RvdWJsaW5nOlxuJworICAgICAgICAgICAgICAgICAgJyJ7eyIgYW5kICJ9fSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICByZXBsYWNlbWVudF9maWVsZCA6Oj0gInsiIFtmaWVsZF9uYW1lXSBbIiEiICcKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBmaWVsZF9uYW1lICAgICAgICA6Oj0gYXJnX25hbWUgKCIuIiBhdHRyaWJ1dGVfbmFtZSB8ICcKKyAgICAgICAgICAgICAgICAgICciWyIgZWxlbWVudF9pbmRleCAiXSIpKlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgYXR0cmlidXRlX25hbWUgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBlbGVtZW50X2luZGV4ICAgICA6Oj0gaW50ZWdlciB8IGluZGV4X3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICciXSI+ICtcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBjb252ZXJzaW9uICAgICAgICA6Oj0gInIiIHwgInMiXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgJworICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24+XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgICAgJypmaWVsZF9uYW1lKiB0aGF0IHNwZWNpZmllcyB0aGUgb2JqZWN0IHdob3NlIHZhbHVlIGlzIHRvIGJlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgaW5zZXJ0ZWQgaW50byB0aGUgb3V0cHV0IGluc3RlYWQgb2YgdGhlIHJlcGxhY2VtZW50ICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZC4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCwgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICdwcmVjZWRlZCBieSBhbiBleGNsYW1hdGlvbiBwb2ludCAiXCchXCciLCBhbmQgYSAnCisgICAgICAgICAgICAgICAgICAnKmZvcm1hdF9zcGVjKiwgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICdwcmVjZWRlZCBieSBhIGNvbG9uICJcJzpcJyIuICBUaGVzZSBzcGVjaWZ5IGEgbm9uLWRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAncmVwbGFjZW1lbnQgdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU2VlIGFsc28gdGhlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Ugc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmZpZWxkX25hbWUqIGl0c2VsZiBiZWdpbnMgd2l0aCBhbiAqYXJnX25hbWUqIHRoYXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2VpdGhlciBhXG4nCisgICAgICAgICAgICAgICAgICAibnVtYmVyIG9yIGEga2V5d29yZC4gIElmIGl0J3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhICIKKyAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICAiYXJndW1lbnQsIGFuZCBpZiBpdCdzIGEga2V5d29yZCwgaXQgcmVmZXJzIHRvIGEgbmFtZWQgIgorICAgICAgICAgICAgICAgICAgJ2tleXdvcmRcbicKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyAnCisgICAgICAgICAgICAgICAgICAnYXJlIDAsIDEsIDIsXG4nCisgICAgICAgICAgICAgICAgICAnLi4uIGluIHNlcXVlbmNlLCB0aGV5IGNhbiBhbGwgYmUgb21pdHRlZCAobm90IGp1c3Qgc29tZSkgJworICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzIDAsIDEsIDIsIC4uLiB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICAnb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICAnQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAncG9zc2libGUgdG9cbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZ5IGFyYml0cmFyeSBkaWN0aW9uYXJ5IGtleXMgKGUuZy4sIHRoZSBzdHJpbmdzICcKKyAgICAgICAgICAgICAgICAgICciXCcxMFwnIiBvclxuJworICAgICAgICAgICAgICAgICAgJyJcJzotXVwnIikgd2l0aGluIGEgZm9ybWF0IHN0cmluZy4gVGhlICphcmdfbmFtZSogY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgICdmb2xsb3dlZCBieSBhbnlcbicKKyAgICAgICAgICAgICAgICAgICdudW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZm9ybVxuJworICAgICAgICAgICAgICAgICAgJyJcJy5uYW1lXCciIHNlbGVjdHMgdGhlIG5hbWVkIGF0dHJpYnV0ZSB1c2luZyAiZ2V0YXR0cigpIiwgJworICAgICAgICAgICAgICAgICAgJ3doaWxlIGFuXG4nCisgICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAiXCdbaW5kZXhdXCciIGRvZXMgYW4gaW5kZXggbG9va3VwICcKKyAgICAgICAgICAgICAgICAgICd1c2luZ1xuJworICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMi43OiBUaGUgcG9zaXRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXJzICcKKyAgICAgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgICAgICdvbWl0dGVkLCBzbyAiXCd7fSB7fVwnIiBpcyBlcXVpdmFsZW50IHRvICJcJ3swfSB7MX1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiRmlyc3QsIHRob3Ugc2hhbHQgY291bnQgdG8gezB9IiAgIyBSZWZlcmVuY2VzIGZpcnN0ICcKKyAgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkJyaW5nIG1lIGEge30iICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXRseSAnCisgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlcyB0aGUgZmlyc3QgcG9zaXRpb25hbCBhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAgJyAgICJGcm9tIHt9IHRvIHt9IiAgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvICcKKyAgICAgICAgICAgICAgICAgICd7MX0iXG4nCisgICAgICAgICAgICAgICAgICAnICAgIk15IHF1ZXN0IGlzIHtuYW1lfSIgICAgICAgICAgICAgICMgUmVmZXJlbmNlcyBrZXl3b3JkICcKKyAgICAgICAgICAgICAgICAgICJhcmd1bWVudCAnbmFtZSdcbiIKKyAgICAgICAgICAgICAgICAgICcgICAiV2VpZ2h0IGluIHRvbnMgezAud2VpZ2h0fSIgICAgICAgIyBcJ3dlaWdodFwnIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICAnb2YgZmlyc3QgcG9zaXRpb25hbCBhcmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiVW5pdHMgZGVzdHJveWVkOiB7cGxheWVyc1swXX0iICAgIyBGaXJzdCBlbGVtZW50IG9mICcKKyAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICdwbGF5ZXJzJy5cbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKmNvbnZlcnNpb24qIGZpZWxkIGNhdXNlcyBhIHR5cGUgY29lcmNpb24gYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0aW5nLlxuJworICAgICAgICAgICAgICAgICAgJ05vcm1hbGx5LCB0aGUgam9iIG9mIGZvcm1hdHRpbmcgYSB2YWx1ZSBpcyBkb25lIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnIl9fZm9ybWF0X18oKSJcbicKKyAgICAgICAgICAgICAgICAgICdtZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMgaXQgaXMgJworICAgICAgICAgICAgICAgICAgJ2Rlc2lyYWJsZSB0b1xuJworICAgICAgICAgICAgICAgICAgJ2ZvcmNlIGEgdHlwZSB0byBiZSBmb3JtYXR0ZWQgYXMgYSBzdHJpbmcsIG92ZXJyaWRpbmcgaXRzICcKKyAgICAgICAgICAgICAgICAgICdvd25cbicKKyAgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9mIGZvcm1hdHRpbmcuICBCeSBjb252ZXJ0aW5nIHRoZSB2YWx1ZSB0byBhICcKKyAgICAgICAgICAgICAgICAgICdzdHJpbmcgYmVmb3JlXG4nCisgICAgICAgICAgICAgICAgICAnY2FsbGluZyAiX19mb3JtYXRfXygpIiwgdGhlIG5vcm1hbCBmb3JtYXR0aW5nIGxvZ2ljIGlzICcKKyAgICAgICAgICAgICAgICAgICdieXBhc3NlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUd28gY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogIlwnIXNcJyIgJworICAgICAgICAgICAgICAgICAgJ3doaWNoIGNhbGxzXG4nCisgICAgICAgICAgICAgICAgICAnInN0cigpIiBvbiB0aGUgdmFsdWUsIGFuZCAiXCchclwnIiB3aGljaCBjYWxscyAicmVwcigpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdTb21lIGV4YW1wbGVzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJIYXJvbGRcJ3MgYSBjbGV2ZXIgezAhc30iICAgICAgICAjIENhbGxzIHN0cigpIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAiQnJpbmcgb3V0IHRoZSBob2x5IHtuYW1lIXJ9IiAgICAjIENhbGxzIHJlcHIoKSBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGUgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCB3aWR0aCwgJworICAgICAgICAgICAgICAgICAgJ2FsaWdubWVudCxcbicKKyAgICAgICAgICAgICAgICAgICdwYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgY2FuICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmUgaXRzXG4nCisgICAgICAgICAgICAgICAgICAnb3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnKmZvcm1hdF9zcGVjKi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdNb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyAnCisgICAgICAgICAgICAgICAgICAnbWluaS1sYW5ndWFnZSwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICdpcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkc1xuJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBtYXkgY29udGFpbiBhICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCBuYW1lLFxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24gZmxhZyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb24sIGJ1dCBkZWVwZXIgJworICAgICAgICAgICAgICAgICAgJ25lc3RpbmcgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAnYWxsb3dlZC4gIFRoZSByZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyAnCisgICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZSAqZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gJworICAgICAgICAgICAgICAgICAgJ1RoaXNcbicKKyAgICAgICAgICAgICAgICAgICdhbGxvd3MgdGhlIGZvcm1hdHRpbmcgb2YgYSB2YWx1ZSB0byBiZSBkeW5hbWljYWxseSAnCisgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1NlZSB0aGUgRm9ybWF0IGV4YW1wbGVzIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuJworICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICciRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzICcKKyAgICAgICAgICAgICAgICAgICdjb250YWluZWRcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoaW4gYSBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlICcKKyAgICAgICAgICAgICAgICAgICdwcmVzZW50ZWRcbicKKyAgICAgICAgICAgICAgICAgICcoc2VlIEZvcm1hdCBTdHJpbmcgU3ludGF4KS4gIFRoZXkgY2FuIGFsc28gYmUgcGFzc2VkICcKKyAgICAgICAgICAgICAgICAgICdkaXJlY3RseSB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdidWlsdC1pbiAiZm9ybWF0KCkiIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSAnCisgICAgICAgICAgICAgICAgICAnZGVmaW5lIGhvd1xuJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtYXQgc3BlY2lmaWNhdGlvbiBpcyB0byBiZSBpbnRlcnByZXRlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdNb3N0IGJ1aWx0LWluIHR5cGVzIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZm9yICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXRcbicKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpY2F0aW9ucywgYWx0aG91Z2ggc29tZSBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGFyZSAnCisgICAgICAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRlZCBieSB0aGUgbnVtZXJpYyB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBIGdlbmVyYWwgY29udmVudGlvbiBpcyB0aGF0IGFuIGVtcHR5IGZvcm1hdCBzdHJpbmcgKCIiIiIpICcKKyAgICAgICAgICAgICAgICAgICdwcm9kdWNlc1xuJworICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIHJlc3VsdCBhcyBpZiB5b3UgaGFkIGNhbGxlZCAic3RyKCkiIG9uIHRoZSB2YWx1ZS4gJworICAgICAgICAgICAgICAgICAgJ0Egbm9uLWVtcHR5XG4nCisgICAgICAgICAgICAgICAgICAnZm9ybWF0IHN0cmluZyB0eXBpY2FsbHkgbW9kaWZpZXMgdGhlIHJlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdF9zcGVjIDo6PSAnCisgICAgICAgICAgICAgICAgICAnW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV1cbicKKyAgICAgICAgICAgICAgICAgICcgICBmaWxsICAgICAgICA6Oj0gPGFueSBjaGFyYWN0ZXI+XG4nCisgICAgICAgICAgICAgICAgICAnICAgYWxpZ24gICAgICAgOjo9ICI8IiB8ICI+IiB8ICI9IiB8ICJeIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHNpZ24gICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWR0aCAgICAgICA6Oj0gaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAgJyAgIHByZWNpc2lvbiAgIDo6PSBpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZSAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiAnCisgICAgICAgICAgICAgICAgICAnfCAiZyIgfCAiRyIgfCAibiIgfCAibyIgfCAicyIgfCAieCIgfCAiWCIgfCAiJSJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgJworICAgICAgICAgICAgICAgICAgJ2J5IGEgKmZpbGwqXG4nCisgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyIHRoYXQgY2FuIGJlIGFueSBjaGFyYWN0ZXIgYW5kIGRlZmF1bHRzIHRvIGEgc3BhY2UgJworICAgICAgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgICAgICAnb21pdHRlZC4gSXQgaXMgbm90IHBvc3NpYmxlIHRvIHVzZSBhIGxpdGVyYWwgY3VybHkgYnJhY2UgJworICAgICAgICAgICAgICAgICAgJygiInsiIiBvclxuJworICAgICAgICAgICAgICAgICAgJyIifSIiKSBhcyB0aGUgKmZpbGwqIGNoYXJhY3RlciB3aGVuIHVzaW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICAnInN0ci5mb3JtYXQoKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgJ0hvd2V2ZXIsIGl0IGlzIHBvc3NpYmxlIHRvIGluc2VydCBhIGN1cmx5IGJyYWNlIHdpdGggYSAnCisgICAgICAgICAgICAgICAgICAnbmVzdGVkXG4nCisgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgZmllbGQuICBUaGlzIGxpbWl0YXRpb24gZG9lc24ndCBhZmZlY3QgdGhlICIKKyAgICAgICAgICAgICAgICAgICciZm9ybWF0KCkiXG4nCisgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIG1lYW5pbmcgb2YgdGhlIHZhcmlvdXMgYWxpZ25tZW50IG9wdGlvbnMgaXMgYXMgJworICAgICAgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBPcHRpb24gICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnPFwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGxlZnQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzcGFjZSAodGhpcyBpcyB0aGUgZGVmYXVsdCBmb3IgbW9zdCAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cykuICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCc+XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgcmlnaHQtYWxpZ25lZCAnCisgICAgICAgICAgICAgICAgICAnd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycykuICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJz1cJyIgICAgIHwgRm9yY2VzIHRoZSBwYWRkaW5nIHRvIGJlIHBsYWNlZCBhZnRlciAnCisgICAgICAgICAgICAgICAgICAndGhlIHNpZ24gKGlmIGFueSkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgYnV0IGJlZm9yZSB0aGUgZGlnaXRzLiAgVGhpcyBpcyB1c2VkIGZvciAnCisgICAgICAgICAgICAgICAgICAncHJpbnRpbmcgZmllbGRzICAgfFxuJworICAgICAgICAgICAgICAgICAgIiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gJyswMDAwMDAxMjAnLiBUaGlzIGFsaWdubWVudCAiCisgICAgICAgICAgICAgICAgICAnb3B0aW9uIGlzIG9ubHkgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICBJdCBiZWNvbWVzIHRoZSAnCisgICAgICAgICAgICAgICAgICAiZGVmYXVsdCB3aGVuICcwJyAgfFxuIgorICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgaW1tZWRpYXRlbHkgcHJlY2VkZXMgdGhlIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aC4gICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnXlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIGNlbnRlcmVkIHdpdGhpbiAnCisgICAgICAgICAgICAgICAgICAndGhlIGF2YWlsYWJsZSAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnc3BhY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZmllbGQgd2lkdGhcbicKKyAgICAgICAgICAgICAgICAgICd3aWxsIGFsd2F5cyBiZSB0aGUgc2FtZSBzaXplIGFzIHRoZSBkYXRhIHRvIGZpbGwgaXQsIHNvICcKKyAgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2FsaWdubWVudCBvcHRpb24gaGFzIG5vIG1lYW5pbmcgaW4gdGhpcyBjYXNlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiAnCisgICAgICAgICAgICAgICAgICAnYmUgb25lIG9mXG4nCisgICAgICAgICAgICAgICAgICAndGhlIGZvbGxvd2luZzpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE9wdGlvbiAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCcrXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBmb3IgJworICAgICAgICAgICAgICAgICAgJ2JvdGggcG9zaXRpdmUgYXMgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHdlbGwgYXMgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ251bWJlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJy1cJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkICcKKyAgICAgICAgICAgICAgICAgICdvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycyAodGhpcyBpcyB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAnYmVoYXZpb3IpLiAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgc3BhY2UgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBsZWFkaW5nIHNwYWNlIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAndXNlZCBvbiBwb3NpdGl2ZSAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVycywgYW5kIGEgbWludXMgc2lnbiBvbiBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycy4gICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCcjXCciIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VycywgYW5kIG9ubHkgZm9yICcKKyAgICAgICAgICAgICAgICAgICdiaW5hcnksXG4nCisgICAgICAgICAgICAgICAgICAnb2N0YWwsIG9yIGhleGFkZWNpbWFsIG91dHB1dC4gIElmIHByZXNlbnQsIGl0IHNwZWNpZmllcyAnCisgICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdvdXRwdXQgd2lsbCBiZSBwcmVmaXhlZCBieSAiXCcwYlwnIiwgIlwnMG9cJyIsIG9yICJcJzB4XCciLCAnCisgICAgICAgICAgICAgICAgICAncmVzcGVjdGl2ZWx5LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCcsXCciIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSAnCisgICAgICAgICAgICAgICAgICAndGhvdXNhbmRzIHNlcGFyYXRvci5cbicKKyAgICAgICAgICAgICAgICAgICdGb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlICJcJ25cJyIgaW50ZWdlciAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGF0aW9uIHR5cGVcbicKKyAgICAgICAgICAgICAgICAgICdpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAyLjc6IEFkZGVkIHRoZSAiXCcsXCciIG9wdGlvbiAoc2VlIGFsc28gJworICAgICAgICAgICAgICAgICAgJyoqUEVQIDM3OCoqKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcqd2lkdGgqIGlzIGEgZGVjaW1hbCBpbnRlZ2VyIGRlZmluaW5nIHRoZSBtaW5pbXVtIGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICd3aWR0aC4gIElmIG5vdFxuJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnY29udGVudC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdXaGVuIG5vIGV4cGxpY2l0IGFsaWdubWVudCBpcyBnaXZlbiwgcHJlY2VkaW5nIHRoZSAqd2lkdGgqICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCBieSBhXG4nCisgICAgICAgICAgICAgICAgICAnemVybyAoIlwnMFwnIikgY2hhcmFjdGVyIGVuYWJsZXMgc2lnbi1hd2FyZSB6ZXJvLXBhZGRpbmcgJworICAgICAgICAgICAgICAgICAgJ2ZvciBudW1lcmljXG4nCisgICAgICAgICAgICAgICAgICAndHlwZXMuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYSAqZmlsbCogY2hhcmFjdGVyIG9mICJcJzBcJyIgJworICAgICAgICAgICAgICAgICAgJ3dpdGggYW5cbicKKyAgICAgICAgICAgICAgICAgICcqYWxpZ25tZW50KiB0eXBlIG9mICJcJz1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpwcmVjaXNpb24qIGlzIGEgZGVjaW1hbCBudW1iZXIgaW5kaWNhdGluZyBob3cgbWFueSAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzIHNob3VsZFxuJworICAgICAgICAgICAgICAgICAgJ2JlIGRpc3BsYXllZCBhZnRlciB0aGUgZGVjaW1hbCBwb2ludCBmb3IgYSBmbG9hdGluZyBwb2ludCAnCisgICAgICAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWQgd2l0aCAiXCdmXCciIGFuZCAiXCdGXCciLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbCBwb2ludFxuJworICAgICAgICAgICAgICAgICAgJ2ZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlIGZvcm1hdHRlZCB3aXRoICJcJ2dcJyIgb3IgJworICAgICAgICAgICAgICAgICAgJyJcJ0dcJyIuICBGb3Igbm9uLVxuJworICAgICAgICAgICAgICAgICAgJ251bWJlciB0eXBlcyB0aGUgZmllbGQgaW5kaWNhdGVzIHRoZSBtYXhpbXVtIGZpZWxkIHNpemUgLSAnCisgICAgICAgICAgICAgICAgICAnaW4gb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgICd3b3JkcywgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgZnJvbSB0aGUgZmllbGQgJworICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgJypwcmVjaXNpb24qIGlzIG5vdCBhbGxvd2VkIGZvciBpbnRlZ2VyIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGaW5hbGx5LCB0aGUgKnR5cGUqIGRldGVybWluZXMgaG93IHRoZSBkYXRhIHNob3VsZCBiZSAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBhdmFpbGFibGUgc3RyaW5nIHByZXNlbnRhdGlvbiB0eXBlcyBhcmU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBUeXBlICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnc1wnIiAgICAgfCBTdHJpbmcgZm9ybWF0LiBUaGlzIGlzIHRoZSBkZWZhdWx0IHR5cGUgJworICAgICAgICAgICAgICAgICAgJ2ZvciBzdHJpbmdzIGFuZCAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBtYXkgYmUgJworICAgICAgICAgICAgICAgICAgJ29taXR0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAnIlwnc1wnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdiXCciICAgICB8IEJpbmFyeSBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAyLiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2NcJyIgICAgIHwgQ2hhcmFjdGVyLiBDb252ZXJ0cyB0aGUgaW50ZWdlciB0byB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgdW5pY29kZSBjaGFyYWN0ZXIgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICdwcmludGluZy4gICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnZFwnIiAgICAgfCBEZWNpbWFsIEludGVnZXIuIE91dHB1dHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnYmFzZSAxMC4gICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdvXCciICAgICB8IE9jdGFsIGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzguICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ3hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgJworICAgICAgICAgICAgICAgICAgJzE2LCB1c2luZyBsb3dlci0gICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlICcKKyAgICAgICAgICAgICAgICAgICc5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnWFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAnCisgICAgICAgICAgICAgICAgICAnMTYsIHVzaW5nIHVwcGVyLSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgJworICAgICAgICAgICAgICAgICAgJzkuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdkXCciLCAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IHRoYXQgaXQgdXNlcyB0aGUgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2RcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSW4gYWRkaXRpb24gdG8gdGhlIGFib3ZlIHByZXNlbnRhdGlvbiB0eXBlcywgaW50ZWdlcnMgY2FuICcKKyAgICAgICAgICAgICAgICAgICdiZSBmb3JtYXR0ZWRcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgbGlzdGVkIGJlbG93ICcKKyAgICAgICAgICAgICAgICAgICcoZXhjZXB0ICJcJ25cJyJcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgIk5vbmUiKS4gV2hlbiBkb2luZyBzbywgImZsb2F0KCkiIGlzIHVzZWQgdG8gY29udmVydCAnCisgICAgICAgICAgICAgICAgICAndGhlIGludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICd0byBhIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZWZvcmUgZm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kICcKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsIHZhbHVlc1xuJworICAgICAgICAgICAgICAgICAgJ2FyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdlXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnc2NpZW50aWZpYyAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICIgICB8ICAgICAgICAgICB8IG5vdGF0aW9uIHVzaW5nIHRoZSBsZXR0ZXIgJ2UnIHRvIGluZGljYXRlICIKKyAgICAgICAgICAgICAgICAgICd0aGUgZXhwb25lbnQuICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgIlwnZVwnIiAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IGl0IHVzZXMgYW4gdXBwZXIgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBjYXNlICdFJyBhcyB0aGUgc2VwYXJhdG9yICIKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdmXCciICAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgJworICAgICAgICAgICAgICAgICAgJ2ZpeGVkLXBvaW50IG51bWJlci4gIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIFNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2ZcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdnXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uICcKKyAgICAgICAgICAgICAgICAgICcicCA+PSAxIiwgdGhpcyAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvICJwIiBzaWduaWZpY2FudCAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzIGFuZCB0aGVuICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBvciBpbiAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNjaWVudGlmaWMgbm90YXRpb24sIGRlcGVuZGluZyBvbiBpdHMgJworICAgICAgICAgICAgICAgICAgJ21hZ25pdHVkZS4gIFRoZSAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCAnCisgICAgICAgICAgICAgICAgICAndGhlIHJlc3VsdCAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgJworICAgICAgICAgICAgICAgICAgJ2FuZCBwcmVjaXNpb24gInAtMSIgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd291bGQgaGF2ZSBleHBvbmVudCAiZXhwIi4gIFRoZW4gaWYgIi00IDw9ICcKKyAgICAgICAgICAgICAgICAgICdleHAgPCBwIiwgdGhlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICcKKyAgICAgICAgICAgICAgICAgICciXCdmXCciIGFuZCAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwcmVjaXNpb24gInAtMS1leHAiLiAgT3RoZXJ3aXNlLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ251bWJlciBpcyBmb3JtYXR0ZWQgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgYW5kICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24gInAtMSIuIEluIGJvdGggIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlICcKKyAgICAgICAgICAgICAgICAgICdyZW1vdmVkIGZyb20gdGhlICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgYWxzbyAnCisgICAgICAgICAgICAgICAgICAncmVtb3ZlZCBpZiAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgICAnaXQuICBQb3NpdGl2ZSBhbmQgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ3plcm8sIGFuZCBuYW5zLCAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGFyZSBmb3JtYXR0ZWQgYXMgImluZiIsICItaW5mIiwgIjAiLCAiLTAiICcKKyAgICAgICAgICAgICAgICAgICdhbmQgIm5hbiIgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8ICIwIiBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgdG8gYSAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uIG9mICIxIi4gVGhlICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGRlZmF1bHQgcHJlY2lzaW9uIGlzICcKKyAgICAgICAgICAgICAgICAgICciNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgIlwnZ1wnIiBleGNlcHQgJworICAgICAgICAgICAgICAgICAgJ3N3aXRjaGVzIHRvICJcJ0VcJyIgaWYgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSAnCisgICAgICAgICAgICAgICAgICAncmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5IHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGFuZCBOYU4gYXJlIHVwcGVyY2FzZWQsICcKKyAgICAgICAgICAgICAgICAgICd0b28uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2dcJyIsICcKKyAgICAgICAgICAgICAgICAgICdleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlIG51bWJlciAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgJworICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCclXCciICAgICB8IFBlcmNlbnRhZ2UuIE11bHRpcGxpZXMgdGhlIG51bWJlciBieSAxMDAgJworICAgICAgICAgICAgICAgICAgJ2FuZCBkaXNwbGF5cyBpbiAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZpeGVkICgiXCdmXCciKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgJworICAgICAgICAgICAgICAgICAgJ3BlcmNlbnQgc2lnbi4gICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgVGhlIHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgJyJcJ2dcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IGV4YW1wbGVzXG4nCisgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGV4YW1wbGVzIG9mIHRoZSAic3RyLmZvcm1hdCgpIiBzeW50YXggJworICAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gd2l0aCB0aGUgb2xkICIlIi1mb3JtYXR0aW5nLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0luIG1vc3Qgb2YgdGhlIGNhc2VzIHRoZSBzeW50YXggaXMgc2ltaWxhciB0byB0aGUgb2xkICcKKyAgICAgICAgICAgICAgICAgICciJSItZm9ybWF0dGluZyxcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUgInt9IiBhbmQgd2l0aCAiOiIgdXNlZCBpbnN0ZWFkIG9mICcKKyAgICAgICAgICAgICAgICAgICciJSIuIEZvclxuJworICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsICJcJyUwMy4yZlwnIiBjYW4gYmUgdHJhbnNsYXRlZCB0byAiXCd7OjAzLjJmfVwnIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgbmV3IGZvcm1hdCBzeW50YXggYWxzbyBzdXBwb3J0cyBuZXcgYW5kIGRpZmZlcmVudCAnCisgICAgICAgICAgICAgICAgICAnb3B0aW9ucywgc2hvd25cbicKKyAgICAgICAgICAgICAgICAgICdpbiB0aGUgZm9sbG93IGV4YW1wbGVzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FjY2Vzc2luZyBhcmd1bWVudHMgYnkgcG9zaXRpb246XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7MH0sIHsxfSwgezJ9Jy5mb3JtYXQoJ2EnLCAnYicsICdjJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnYSwgYiwgYydcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3t9LCB7fSwge30nLmZvcm1hdCgnYScsICdiJywgJ2MnKSAgIyAyLjcrIG9ubHlcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnYSwgYiwgYydcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3syfSwgezF9LCB7MH0nLmZvcm1hdCgnYScsICdiJywgJ2MnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdjLCBiLCBhJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezJ9LCB7MX0sIHswfScuZm9ybWF0KConYWJjJykgICAgICAjIHVucGFja2luZyAiCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQgc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICIgICAnYywgYiwgYSdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3swfXsxfXswfScuZm9ybWF0KCdhYnJhJywgJ2NhZCcpICAgIyBhcmd1bWVudHMnICIKKyAgICAgICAgICAgICAgICAgICdpbmRpY2VzIGNhbiBiZSByZXBlYXRlZFxuJworICAgICAgICAgICAgICAgICAgIiAgICdhYnJhY2FkYWJyYSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IG5hbWU6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICdDb29yZGluYXRlczoge2xhdGl0dWRlfSwgIgorICAgICAgICAgICAgICAgICAgIntsb25naXR1ZGV9Jy5mb3JtYXQobGF0aXR1ZGU9JzM3LjI0TicsICIKKyAgICAgICAgICAgICAgICAgICJsb25naXR1ZGU9Jy0xMTUuODFXJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVcnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+IGNvb3JkID0geydsYXRpdHVkZSc6ICczNy4yNE4nLCAnbG9uZ2l0dWRlJzogIgorICAgICAgICAgICAgICAgICAgIictMTE1LjgxVyd9XG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICdDb29yZGluYXRlczoge2xhdGl0dWRlfSwgIgorICAgICAgICAgICAgICAgICAgIntsb25naXR1ZGV9Jy5mb3JtYXQoKipjb29yZClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVcnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiQWNjZXNzaW5nIGFyZ3VtZW50cycgYXR0cmlidXRlczpcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gYyA9IDMtNWpcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gKCdUaGUgY29tcGxleCBudW1iZXIgezB9IGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsICIKKyAgICAgICAgICAgICAgICAgICJwYXJ0IHswLnJlYWx9ICdcbiIKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICdhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IHswLmltYWd9LicpLmZvcm1hdChjKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdUaGUgY29tcGxleCBudW1iZXIgKDMtNWopIGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgIgorICAgICAgICAgICAgICAgICAgIjMuMCBhbmQgdGhlIGltYWdpbmFyeSBwYXJ0IC01LjAuJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBQb2ludChvYmplY3QpOlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHgsIHkpOlxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHNlbGYueCwgc2VsZi55ID0geCwgeVxuJworICAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4nCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAgICAgICAgcmV0dXJuICdQb2ludCh7c2VsZi54fSwgIgorICAgICAgICAgICAgICAgICAgIntzZWxmLnl9KScuZm9ybWF0KHNlbGY9c2VsZilcbiIKKyAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gc3RyKFBvaW50KDQsIDIpKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdQb2ludCg0LCAyKSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICJBY2Nlc3NpbmcgYXJndW1lbnRzJyBpdGVtczpcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gY29vcmQgPSAoMywgNSlcbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ1g6IHswWzBdfTsgIFk6IHswWzFdfScuZm9ybWF0KGNvb3JkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICdYOiAzOyAgWTogNSdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiVzIiBhbmQgIiVyIjpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiAnCisgICAgICAgICAgICAgICAgICAneyFzfSIuZm9ybWF0KFwndGVzdDFcJywgXCd0ZXN0MlwnKVxuJworICAgICAgICAgICAgICAgICAgJyAgICJyZXByKCkgc2hvd3MgcXVvdGVzOiBcJ3Rlc3QxXCc7IHN0cigpIGRvZXNuXCd0OiB0ZXN0MiJcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBbGlnbmluZyB0aGUgdGV4dCBhbmQgc3BlY2lmeWluZyBhIHdpZHRoOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezo8MzB9Jy5mb3JtYXQoJ2xlZnQgYWxpZ25lZCcpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2xlZnQgYWxpZ25lZCAgICAgICAgICAgICAgICAgICdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6PjMwfScuZm9ybWF0KCdyaWdodCBhbGlnbmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICAgICAgICByaWdodCBhbGlnbmVkJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezpeMzB9Jy5mb3JtYXQoJ2NlbnRlcmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezoqXjMwfScuZm9ybWF0KCdjZW50ZXJlZCcpICAjIHVzZSAnKicgYXMgYSBmaWxsICIKKyAgICAgICAgICAgICAgICAgICdjaGFyXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyoqKioqKioqKioqY2VudGVyZWQqKioqKioqKioqKidcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiUrZiIsICIlLWYiLCBhbmQgIiUgZiIgYW5kIHNwZWNpZnlpbmcgYSBzaWduOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezorZn07IHs6K2Z9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgaXQgIgorICAgICAgICAgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICAgICAgICAgIiAgICcrMy4xNDAwMDA7IC0zLjE0MDAwMCdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6IGZ9OyB7OiBmfScuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGEgc3BhY2UgIgorICAgICAgICAgICAgICAgICAgJ2ZvciBwb3NpdGl2ZSBudW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyAzLjE0MDAwMDsgLTMuMTQwMDAwJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezotZn07IHs6LWZ9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgIgorICAgICAgICAgICAgICAgICAgIm1pbnVzIC0tIHNhbWUgYXMgJ3s6Zn07IHs6Zn0nXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzMuMTQwMDAwOyAtMy4xNDAwMDAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUmVwbGFjaW5nICIleCIgYW5kICIlbyIgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvICcKKyAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgYmFzZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOnh9OyAgb2N0OiB7MDpvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOmJ9Ii5mb3JtYXQoNDIpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2ludDogNDI7ICBoZXg6IDJhOyAgb2N0OiA1MjsgIGJpbjogMTAxMDEwJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHdpdGggMHgsIDBvLCBvciAwYiBhcyBwcmVmaXg6XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogJworICAgICAgICAgICAgICAgICAgJ3swOiNifSIuZm9ybWF0KDQyKVxuJworICAgICAgICAgICAgICAgICAgIiAgICdpbnQ6IDQyOyAgaGV4OiAweDJhOyAgb2N0OiAwbzUyOyAgYmluOiAwYjEwMTAxMCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdVc2luZyB0aGUgY29tbWEgYXMgYSB0aG91c2FuZHMgc2VwYXJhdG9yOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezosfScuZm9ybWF0KDEyMzQ1Njc4OTApXG4iCisgICAgICAgICAgICAgICAgICAiICAgJzEsMjM0LDU2Nyw4OTAnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IHBvaW50cyA9IDE5LjVcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gdG90YWwgPSAyMlxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnQ29ycmVjdCBhbnN3ZXJzOiB7Oi4yJX0nLmZvcm1hdChwb2ludHMvdG90YWwpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0NvcnJlY3QgYW5zd2VyczogODguNjQlJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1VzaW5nIHR5cGUtc3BlY2lmaWMgZm9ybWF0dGluZzpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGQgPSBkYXRldGltZS5kYXRldGltZSgyMDEwLCA3LCA0LCAxMiwgMTUsIDU4KVxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezolWS0lbS0lZCAlSDolTTolU30nLmZvcm1hdChkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICcyMDEwLTA3LTA0IDEyOjE1OjU4J1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ05lc3RpbmcgYXJndW1lbnRzIGFuZCBtb3JlIGNvbXBsZXggZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoJzxePicsIFsnbGVmdCcsICdjZW50ZXInLCAiCisgICAgICAgICAgICAgICAgICAiJ3JpZ2h0J10pOlxuIgorICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgICAgJ3swOntmaWxsfXthbGlnbn0xNn0nLmZvcm1hdCh0ZXh0LCBmaWxsPWFsaWduLCAiCisgICAgICAgICAgICAgICAgICAnYWxpZ249YWxpZ24pXG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2xlZnQ8PDw8PDw8PDw8PDwnXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ15eXl5eY2VudGVyXl5eXl4nXG4iCisgICAgICAgICAgICAgICAgICAiICAgJz4+Pj4+Pj4+Pj4+cmlnaHQnXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IG9jdGV0cyA9IFsxOTIsIDE2OCwgMCwgMV1cbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6MDJYfXs6MDJYfXs6MDJYfXs6MDJYfScuZm9ybWF0KCpvY3RldHMpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0MwQTgwMDAxJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiBpbnQoXywgMTYpXG4nCisgICAgICAgICAgICAgICAgICAnICAgMzIzMjIzNTUyMVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiB3aWR0aCA9IDVcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTpcbicKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgIGZvciBiYXNlIGluICdkWG9iJzpcbiIKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICAgICBwcmludCAnezA6e3dpZHRofXtiYXNlfX0nLmZvcm1hdChudW0sICIKKyAgICAgICAgICAgICAgICAgICdiYXNlPWJhc2UsIHdpZHRoPXdpZHRoKSxcbicKKyAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIHByaW50XG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDUgICAgIDUgICAgIDUgICAxMDFcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgNiAgICAgNiAgICAgNiAgIDExMFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA3ICAgICA3ICAgICA3ICAgMTExXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDggICAgIDggICAgMTAgIDEwMDBcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgOSAgICAgOSAgICAxMSAgMTAwMVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIDEwICAgICBBICAgIDEyICAxMDEwXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgMTEgICAgIEIgICAgMTMgIDEwMTFcbicsCisgJ2Z1bmN0aW9uJzogJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBkZWZpbml0aW9uc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0ICcKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0ZWQgICAgICA6Oj0gZGVjb3JhdG9ycyAoY2xhc3NkZWYgfCBmdW5jZGVmKVxuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuJworICAgICAgICAgICAgICcgICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl1dICcKKyAgICAgICAgICAgICAnIikiXSBORVdMSU5FXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNkZWYgICAgICAgIDo6PSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgJworICAgICAgICAgICAgICciOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3QgOjo9IChkZWZwYXJhbWV0ZXIgIiwiKSpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICggICIqIiBpZGVudGlmaWVyIFsiLCIgIioqIiBpZGVudGlmaWVyXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgfCAiKioiIGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgIHwgZGVmcGFyYW1ldGVyIFsiLCJdIClcbicKKyAgICAgICAgICAgICAnICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIHN1Ymxpc3QgICAgICAgIDo6PSBwYXJhbWV0ZXIgKCIsIiBwYXJhbWV0ZXIpKiBbIiwiXVxuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciB8ICIoIiBzdWJsaXN0ICIpIlxuJworICAgICAgICAgICAgICcgICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgSXRzIGV4ZWN1dGlvbiAnCisgICAgICAgICAgICAgJ2JpbmRzXG4nCisgICAgICAgICAgICAgJ3RoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJyhhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgJworICAgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgICAnYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBkb2VzIG5vdCBleGVjdXRlIHRoZSBmdW5jdGlvbiBib2R5OyB0aGlzICcKKyAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICdleGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gaXNcbicKKyAgICAgICAgICAgICAnZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICAnCisgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICdyZXN1bHQgbXVzdCBiZSBhIGNhbGxhYmxlLCB3aGljaCBpcyBpbnZva2VkIHdpdGggdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgJ2FzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gbmFtZVxuJworICAgICAgICAgICAgICdpbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkICcKKyAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAnbmVzdGVkIGZhc2hpb24uIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvZGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBAZjEoYXJnKVxuJworICAgICAgICAgICAgICcgICBAZjJcbicKKyAgICAgICAgICAgICAnICAgZGVmIGZ1bmMoKTogcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0bzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIG9uZSBvciBtb3JlIHRvcC1sZXZlbCAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAnCisgICAgICAgICAgICAgJypwYXJhbWV0ZXIqICI9IlxuJworICAgICAgICAgICAgICcqZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyICcKKyAgICAgICAgICAgICAndmFsdWVzLiJcbicKKyAgICAgICAgICAgICAnRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgJyphcmd1bWVudCogbWF5XG4nCisgICAgICAgICAgICAgImJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlcidzIGRlZmF1bHQgIgorICAgICAgICAgICAgICd2YWx1ZSBpc1xuJworICAgICAgICAgICAgICdzdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAncGFyYW1ldGVycyBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXMgaXMgYSAnCisgICAgICAgICAgICAgJ3N5bnRhY3RpY1xuJworICAgICAgICAgICAgICdyZXN0cmljdGlvbiB0aGF0IGlzIG5vdCBleHByZXNzZWQgYnkgdGhlIGdyYW1tYXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcqKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAnZGVmaW5pdGlvblxuJworICAgICAgICAgICAgICdpcyBleGVjdXRlZC4qKiAgVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCAnCisgICAgICAgICAgICAgJ29uY2UsIHdoZW5cbicKKyAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICJwcmUtY29tcHV0ZWQiIHZhbHVlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAndXNlZCBmb3IgZWFjaCBjYWxsLiAgVGhpcyBpcyBlc3BlY2lhbGx5IGltcG9ydGFudCB0byB1bmRlcnN0YW5kICcKKyAgICAgICAgICAgICAnd2hlbiBhXG4nCisgICAgICAgICAgICAgJ2RlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYSBsaXN0IG9yIGEgJworICAgICAgICAgICAgICdkaWN0aW9uYXJ5OlxuJworICAgICAgICAgICAgICdpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieSBhcHBlbmRpbmcgYW4gaXRlbSAnCisgICAgICAgICAgICAgJ3RvIGFcbicKKyAgICAgICAgICAgICAnbGlzdCksIHRoZSBkZWZhdWx0IHZhbHVlIGlzIGluIGVmZmVjdCBtb2RpZmllZC4gVGhpcyBpcyAnCisgICAgICAgICAgICAgJ2dlbmVyYWxseSBub3RcbicKKyAgICAgICAgICAgICAnd2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyAgaXMgdG8gdXNlICJOb25lIiBhcyB0aGVcbicKKyAgICAgICAgICAgICAnZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlIGZ1bmN0aW9uLCAnCisgICAgICAgICAgICAgJ2UuZy46XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBkZWYgd2hhdHNfb25fdGhlX3RlbGx5KHBlbmd1aW49Tm9uZSk6XG4nCisgICAgICAgICAgICAgJyAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4nCisgICAgICAgICAgICAgJyAgICAgICBwZW5ndWluLmFwcGVuZCgicHJvcGVydHkgb2YgdGhlIHpvbyIpXG4nCisgICAgICAgICAgICAgJyAgICAgICByZXR1cm4gcGVuZ3VpblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRnVuY3Rpb24gY2FsbCBzZW1hbnRpY3MgYXJlIGRlc2NyaWJlZCBpbiBtb3JlIGRldGFpbCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAnQ2FsbHMuXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnMgJworICAgICAgICAgICAgICdtZW50aW9uZWQgaW5cbicKKyAgICAgICAgICAgICAndGhlIHBhcmFtZXRlciBsaXN0LCBlaXRoZXIgZnJvbSBwb3NpdGlvbiBhcmd1bWVudHMsIGZyb20gJworICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtICIiKmlkZW50aWZpZXIiIiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ3ByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueSBleGNlc3MgJworICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgJ3BhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLiAgSWYgdGhlIGZvcm1cbicKKyAgICAgICAgICAgICAnIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ldyAnCisgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAncmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYSBuZXcgJworICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICdkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCAnCisgICAgICAgICAgICAgJ2JvdW5kXG4nCisgICAgICAgICAgICAgJ3RvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucywgZGVzY3JpYmVkIGluIHNlY3Rpb24gTGFtYmRhcy4gIE5vdGUgdGhhdCB0aGUgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ2RlZmluaXRpb247XG4nCisgICAgICAgICAgICAgJ2EgZnVuY3Rpb24gZGVmaW5lZCBpbiBhICIiZGVmIiIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlICcKKyAgICAgICAgICAgICAnaXRcbicKKyAgICAgICAgICAgICAnYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGUgc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogRnVuY3Rpb25zIGFyZSBmaXJzdC1jbGFzcyBvYmplY3RzLiAgQSAiCisgICAgICAgICAgICAgJyIiZGVmIiJcbicKKyAgICAgICAgICAgICAnZm9ybSBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbCAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgJ3RoYXQgY2FuIGJlIHJldHVybmVkIG9yIHBhc3NlZCBhcm91bmQuICBGcmVlIHZhcmlhYmxlcyB1c2VkIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ25lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG4nCisgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uIE5hbWluZyBhbmQgYmluZGluZyBmb3IgJworICAgICAgICAgICAgICdkZXRhaWxzLlxuJywKKyAnZ2xvYmFsJzogJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBnbG9iYWxfc3RtdCA6Oj0gImdsb2JhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImdsb2JhbCIgc3RhdGVtZW50IGlzIGEgZGVjbGFyYXRpb24gd2hpY2ggaG9sZHMgZm9yIHRoZSAnCisgICAgICAgICAgICdlbnRpcmVcbicKKyAgICAgICAgICAgJ2N1cnJlbnQgY29kZSBibG9jay4gIEl0IG1lYW5zIHRoYXQgdGhlIGxpc3RlZCBpZGVudGlmaWVycyBhcmUgdG8gJworICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgJ2ludGVycHJldGVkIGFzIGdsb2JhbHMuICBJdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIGFzc2lnbiB0byBhICcKKyAgICAgICAgICAgJ2dsb2JhbFxuJworICAgICAgICAgICAndmFyaWFibGUgd2l0aG91dCAiZ2xvYmFsIiwgYWx0aG91Z2ggZnJlZSB2YXJpYWJsZXMgbWF5IHJlZmVyIHRvXG4nCisgICAgICAgICAgICdnbG9iYWxzIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgZ2xvYmFsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgdXNlZCBpbiB0aGUgc2FtZSAnCisgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICdibG9jayB0ZXh0dWFsbHkgcHJlY2VkaW5nIHRoYXQgImdsb2JhbCIgc3RhdGVtZW50LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyAnCisgICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAgJ3BhcmFtZXRlcnMgb3IgaW4gYSAiZm9yIiBsb29wIGNvbnRyb2wgdGFyZ2V0LCAiY2xhc3MiIGRlZmluaXRpb24sXG4nCisgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uLCBvciAiaW1wb3J0IiBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyAnCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2VuZm9yY2UgdGhlIGxhdHRlciB0d28gcmVzdHJpY3Rpb25zLCBidXQgcHJvZ3JhbXMgc2hvdWxkIG5vdCAnCisgICAgICAgICAgICdhYnVzZVxuJworICAgICAgICAgICAndGhpcyBmcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlIHRoZW0gb3IgJworICAgICAgICAgICAnc2lsZW50bHlcbicKKyAgICAgICAgICAgJ2NoYW5nZSB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogImdsb2JhbCIgaXMgYSBkaXJlY3RpdmUgdG8gdGhlIHBhcnNlci4gICcKKyAgICAgICAgICAgJ0l0XG4nCisgICAgICAgICAgICdhcHBsaWVzIG9ubHkgdG8gY29kZSBwYXJzZWQgYXQgdGhlIHNhbWUgdGltZSBhcyB0aGUgImdsb2JhbCJcbicKKyAgICAgICAgICAgJ3N0YXRlbWVudC4gSW4gcGFydGljdWxhciwgYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgY29udGFpbmVkIGluIGFuICcKKyAgICAgICAgICAgJyJleGVjIlxuJworICAgICAgICAgICAnc3RhdGVtZW50IGRvZXMgbm90IGFmZmVjdCB0aGUgY29kZSBibG9jayAqY29udGFpbmluZyogdGhlICJleGVjIlxuJworICAgICAgICAgICAnc3RhdGVtZW50LCBhbmQgY29kZSBjb250YWluZWQgaW4gYW4gImV4ZWMiIHN0YXRlbWVudCBpcyB1bmFmZmVjdGVkICcKKyAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICciZ2xvYmFsIiBzdGF0ZW1lbnRzIGluIHRoZSBjb2RlIGNvbnRhaW5pbmcgdGhlICJleGVjIiBzdGF0ZW1lbnQuICAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJ3NhbWUgYXBwbGllcyB0byB0aGUgImV2YWwoKSIsICJleGVjZmlsZSgpIiBhbmQgImNvbXBpbGUoKSIgJworICAgICAgICAgICAnZnVuY3Rpb25zLlxuJywKKyAnaWQtY2xhc3Nlcyc6ICdcbicKKyAgICAgICAgICAgICAgICdSZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4nCisgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0NlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSAnCisgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgJ21lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgJworICAgICAgICAgICAgICAgJ2xlYWRpbmcgYW5kXG4nCisgICAgICAgICAgICAgICAndHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyJfKiJcbicKKyAgICAgICAgICAgICAgICcgICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICdpZGVudGlmaWVyICJfIlxuJworICAgICAgICAgICAgICAgJyAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgJworICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgJyAgIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSAiX19idWlsdGluX18iIG1vZHVsZS4gICcKKyAgICAgICAgICAgICAgICdXaGVuXG4nCisgICAgICAgICAgICAgICAnICAgbm90IGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyAnCisgICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICAnICAgZGVmaW5lZC4gU2VlIHNlY3Rpb24gVGhlIGltcG9ydCBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuJworICAgICAgICAgICAgICAgJyAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgICJnZXR0ZXh0IiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyAnCisgICAgICAgICAgICAgICAnY29udmVudGlvbi5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciX18qX18iXG4nCisgICAgICAgICAgICAgICAnICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJcbicKKyAgICAgICAgICAgICAgICcgICBhbmQgaXRzIGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkpLiAgJworICAgICAgICAgICAgICAgJ0N1cnJlbnRcbicKKyAgICAgICAgICAgICAgICcgICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgU3BlY2lhbCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgJ3NlY3Rpb24gYW5kXG4nCisgICAgICAgICAgICAgICAnICAgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyAnCisgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICcgICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgJworICAgICAgICAgICAgICAgJ2RvZXMgbm90XG4nCisgICAgICAgICAgICAgICAnICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2UgJworICAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgICcgICB3YXJuaW5nLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyJfXyoiXG4nCisgICAgICAgICAgICAgICAnICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCAnCisgICAgICAgICAgICAgICAnd2l0aGluIHRoZVxuJworICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSAnCisgICAgICAgICAgICAgICAnbWFuZ2xlZCBmb3JtXG4nCisgICAgICAgICAgICAgICAnICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiAnCisgICAgICAgICAgICAgICAnYmFzZSBhbmRcbicKKyAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uIElkZW50aWZpZXJzIChOYW1lcykuXG4nLAorICdpZGVudGlmaWVycyc6ICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4nCisgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIGlkZW50aWZpZXIgOjo9IChsZXR0ZXJ8Il8iKSAobGV0dGVyIHwgZGlnaXQgfCAiXyIpKlxuJworICAgICAgICAgICAgICAgICcgICBsZXR0ZXIgICAgIDo6PSBsb3dlcmNhc2UgfCB1cHBlcmNhc2VcbicKKyAgICAgICAgICAgICAgICAnICAgbG93ZXJjYXNlICA6Oj0gImEiLi4uInoiXG4nCisgICAgICAgICAgICAgICAgJyAgIHVwcGVyY2FzZSAgOjo9ICJBIi4uLiJaIlxuJworICAgICAgICAgICAgICAgICcgICBkaWdpdCAgICAgIDo6PSAiMCIuLi4iOSJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aWZpZXJzIGFyZSB1bmxpbWl0ZWQgaW4gbGVuZ3RoLiAgQ2FzZSBpcyBzaWduaWZpY2FudC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdLZXl3b3Jkc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBpZGVudGlmaWVycyBhcmUgdXNlZCBhcyByZXNlcnZlZCB3b3Jkcywgb3IgJworICAgICAgICAgICAgICAgICcqa2V5d29yZHMqIG9mXG4nCisgICAgICAgICAgICAgICAgJ3RoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgJworICAgICAgICAgICAgICAgICdUaGV5IG11c3RcbicKKyAgICAgICAgICAgICAgICAnYmUgc3BlbGxlZCBleGFjdGx5IGFzIHdyaXR0ZW4gaGVyZTpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgIGFuZCAgICAgICBkZWwgICAgICAgZnJvbSAgICAgIG5vdCAgICAgICB3aGlsZVxuJworICAgICAgICAgICAgICAgICcgICBhcyAgICAgICAgZWxpZiAgICAgIGdsb2JhbCAgICBvciAgICAgICAgd2l0aFxuJworICAgICAgICAgICAgICAgICcgICBhc3NlcnQgICAgZWxzZSAgICAgIGlmICAgICAgICBwYXNzICAgICAgeWllbGRcbicKKyAgICAgICAgICAgICAgICAnICAgYnJlYWsgICAgIGV4Y2VwdCAgICBpbXBvcnQgICAgcHJpbnRcbicKKyAgICAgICAgICAgICAgICAnICAgY2xhc3MgICAgIGV4ZWMgICAgICBpbiAgICAgICAgcmFpc2VcbicKKyAgICAgICAgICAgICAgICAnICAgY29udGludWUgIGZpbmFsbHkgICBpcyAgICAgICAgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgJyAgIGRlZiAgICAgICBmb3IgICAgICAgbGFtYmRhICAgIHRyeVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogIk5vbmUiIGJlY2FtZSBhIGNvbnN0YW50IGFuZCBpcyBub3cgJworICAgICAgICAgICAgICAgICdyZWNvZ25pemVkXG4nCisgICAgICAgICAgICAgICAgJ2J5IHRoZSBjb21waWxlciBhcyBhIG5hbWUgZm9yIHRoZSBidWlsdC1pbiBvYmplY3QgIk5vbmUiLiAgJworICAgICAgICAgICAgICAgICdBbHRob3VnaCBpdFxuJworICAgICAgICAgICAgICAgICdpcyBub3QgYSBrZXl3b3JkLCB5b3UgY2Fubm90IGFzc2lnbiBhIGRpZmZlcmVudCBvYmplY3QgdG8gJworICAgICAgICAgICAgICAgICdpdC5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAyLjU6IFVzaW5nICJhcyIgYW5kICJ3aXRoIiBhcyBpZGVudGlmaWVycyAnCisgICAgICAgICAgICAgICAgJ3RyaWdnZXJzXG4nCisgICAgICAgICAgICAgICAgJ2Egd2FybmluZy4gIFRvIHVzZSB0aGVtIGFzIGtleXdvcmRzLCBlbmFibGUgdGhlICcKKyAgICAgICAgICAgICAgICAnIndpdGhfc3RhdGVtZW50IlxuJworICAgICAgICAgICAgICAgICdmdXR1cmUgZmVhdHVyZSAuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMi42OiAiYXMiIGFuZCAid2l0aCIgYXJlIGZ1bGwga2V5d29yZHMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgJworICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgJ21lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgJworICAgICAgICAgICAgICAgICdsZWFkaW5nIGFuZFxuJworICAgICAgICAgICAgICAgICd0cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICciXyoiXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgJworICAgICAgICAgICAgICAgICdpZGVudGlmaWVyICJfIlxuJworICAgICAgICAgICAgICAgICcgICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0ICcKKyAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgJyAgIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSAiX19idWlsdGluX18iICcKKyAgICAgICAgICAgICAgICAnbW9kdWxlLiAgV2hlblxuJworICAgICAgICAgICAgICAgICcgICBub3QgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzICcKKyAgICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICAgJyAgIGRlZmluZWQuIFNlZSBzZWN0aW9uIFRoZSBpbXBvcnQgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuJworICAgICAgICAgICAgICAgICcgICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgJworICAgICAgICAgICAgICAgICdjb252ZW50aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl9fKl9fIlxuJworICAgICAgICAgICAgICAgICcgICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJcbicKKyAgICAgICAgICAgICAgICAnICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gICcKKyAgICAgICAgICAgICAgICAnQ3VycmVudFxuJworICAgICAgICAgICAgICAgICcgICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgU3BlY2lhbCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgICdzZWN0aW9uIGFuZFxuJworICAgICAgICAgICAgICAgICcgICBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zICcKKyAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAnICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnZG9lcyBub3RcbicKKyAgICAgICAgICAgICAgICAnICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2UgJworICAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAgJyAgIHdhcm5pbmcuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICciX18qIlxuJworICAgICAgICAgICAgICAgICcgICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkICcKKyAgICAgICAgICAgICAgICAnd2l0aGluIHRoZVxuJworICAgICAgICAgICAgICAgICcgICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgJworICAgICAgICAgICAgICAgICdtYW5nbGVkIGZvcm1cbicKKyAgICAgICAgICAgICAgICAnICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiAnCisgICAgICAgICAgICAgICAgJ2Jhc2UgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gSWRlbnRpZmllcnMgKE5hbWVzKS5cbicsCisgJ2lmJzogJ1xuJworICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnRcbicKKyAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgJ1xuJworICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuJworICAgICAgICdcbicKKyAgICAgICAnICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICcgICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuJworICAgICAgICcgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0l0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyAnCisgICAgICAgJ29uZVxuJworICAgICAgICdieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uIEJvb2xlYW4gb3BlcmF0aW9uc1xuJworICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbicKKyAgICAgICAnKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuJworICAgICAgICdJZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG4nCisgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKKyAnaW1hZ2luYXJ5JzogJ1xuJworICAgICAgICAgICAgICAnSW1hZ2luYXJ5IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSW1hZ2luYXJ5IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBpbWFnbnVtYmVyIDo6PSAoZmxvYXRudW1iZXIgfCBpbnRwYXJ0KSAoImoiIHwgIkoiKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBpbWFnaW5hcnkgbGl0ZXJhbCB5aWVsZHMgYSBjb21wbGV4IG51bWJlciB3aXRoIGEgcmVhbCBwYXJ0ICcKKyAgICAgICAgICAgICAgJ29mIDAuMC5cbicKKyAgICAgICAgICAgICAgJ0NvbXBsZXggbnVtYmVycyBhcmUgcmVwcmVzZW50ZWQgYXMgYSBwYWlyIG9mIGZsb2F0aW5nIHBvaW50ICcKKyAgICAgICAgICAgICAgJ251bWJlcnNcbicKKyAgICAgICAgICAgICAgJ2FuZCBoYXZlIHRoZSBzYW1lIHJlc3RyaWN0aW9ucyBvbiB0aGVpciByYW5nZS4gIFRvIGNyZWF0ZSBhICcKKyAgICAgICAgICAgICAgJ2NvbXBsZXhcbicKKyAgICAgICAgICAgICAgJ251bWJlciB3aXRoIGEgbm9uemVybyByZWFsIHBhcnQsIGFkZCBhIGZsb2F0aW5nIHBvaW50IG51bWJlciB0byAnCisgICAgICAgICAgICAgICdpdCxcbicKKyAgICAgICAgICAgICAgJ2UuZy4sICIoMys0aikiLiAgU29tZSBleGFtcGxlcyBvZiBpbWFnaW5hcnkgbGl0ZXJhbHM6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIDMuMTRqICAgMTAuaiAgICAxMGogICAgIC4wMDFqICAgMWUxMDBqICAzLjE0ZS0xMGpcbicsCisgJ2ltcG9ydCc6ICdcbicKKyAgICAgICAgICAgJ1RoZSAiaW1wb3J0IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaW1wb3J0X3N0bXQgICAgIDo6PSAiaW1wb3J0IiBtb2R1bGUgWyJhcyIgbmFtZV0gKCAiLCIgbW9kdWxlICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiIGlkZW50aWZpZXIgJworICAgICAgICAgICAnWyJhcyIgbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgcmVsYXRpdmVfbW9kdWxlICJpbXBvcnQiICIoIiAnCisgICAgICAgICAgICdpZGVudGlmaWVyIFsiYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgKCAiLCIgaWRlbnRpZmllciBbImFzIiBuYW1lXSApKiBbIiwiXSAiKSJcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiBtb2R1bGUgImltcG9ydCIgIioiXG4nCisgICAgICAgICAgICcgICBtb2R1bGUgICAgICAgICAgOjo9IChpZGVudGlmaWVyICIuIikqIGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJyAgIHJlbGF0aXZlX21vZHVsZSA6Oj0gIi4iKiBtb2R1bGUgfCAiLiIrXG4nCisgICAgICAgICAgICcgICBuYW1lICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSW1wb3J0IHN0YXRlbWVudHMgYXJlIGV4ZWN1dGVkIGluIHR3byBzdGVwczogKDEpIGZpbmQgYSBtb2R1bGUsICcKKyAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAnaW5pdGlhbGl6ZSBpdCBpZiBuZWNlc3Nhcnk7ICgyKSBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAnbmFtZXNwYWNlIChvZiB0aGUgc2NvcGUgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMpLiBUaGVcbicKKyAgICAgICAgICAgJ3N0YXRlbWVudCBjb21lcyBpbiB0d28gZm9ybXMgZGlmZmVyaW5nIG9uIHdoZXRoZXIgaXQgdXNlcyB0aGUgJworICAgICAgICAgICAnImZyb20iXG4nCisgICAgICAgICAgICdrZXl3b3JkLiBUaGUgZmlyc3QgZm9ybSAod2l0aG91dCAiZnJvbSIpIHJlcGVhdHMgdGhlc2Ugc3RlcHMgZm9yICcKKyAgICAgICAgICAgJ2VhY2hcbicKKyAgICAgICAgICAgJ2lkZW50aWZpZXIgaW4gdGhlIGxpc3QuIFRoZSBmb3JtIHdpdGggImZyb20iIHBlcmZvcm1zIHN0ZXAgKDEpICcKKyAgICAgICAgICAgJ29uY2UsXG4nCisgICAgICAgICAgICdhbmQgdGhlbiBwZXJmb3JtcyBzdGVwICgyKSByZXBlYXRlZGx5LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUbyB1bmRlcnN0YW5kIGhvdyBzdGVwICgxKSBvY2N1cnMsIG9uZSBtdXN0IGZpcnN0IHVuZGVyc3RhbmQgaG93XG4nCisgICAgICAgICAgICdQeXRob24gaGFuZGxlcyBoaWVyYXJjaGljYWwgbmFtaW5nIG9mIG1vZHVsZXMuIFRvIGhlbHAgb3JnYW5pemVcbicKKyAgICAgICAgICAgJ21vZHVsZXMgYW5kIHByb3ZpZGUgYSBoaWVyYXJjaHkgaW4gbmFtaW5nLCBQeXRob24gaGFzIGEgY29uY2VwdCAnCisgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAncGFja2FnZXMuIEEgcGFja2FnZSBjYW4gY29udGFpbiBvdGhlciBwYWNrYWdlcyBhbmQgbW9kdWxlcyB3aGlsZVxuJworICAgICAgICAgICAnbW9kdWxlcyBjYW5ub3QgY29udGFpbiBvdGhlciBtb2R1bGVzIG9yIHBhY2thZ2VzLiBGcm9tIGEgZmlsZSAnCisgICAgICAgICAgICdzeXN0ZW1cbicKKyAgICAgICAgICAgJ3BlcnNwZWN0aXZlLCBwYWNrYWdlcyBhcmUgZGlyZWN0b3JpZXMgYW5kIG1vZHVsZXMgYXJlIGZpbGVzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdPbmNlIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgaXMga25vd24gKHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkLCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3Rlcm0gIm1vZHVsZSIgd2lsbCByZWZlciB0byBib3RoIHBhY2thZ2VzIGFuZCBtb2R1bGVzKSwgc2VhcmNoaW5nICcKKyAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAndGhlIG1vZHVsZSBvciBwYWNrYWdlIGNhbiBiZWdpbi4gVGhlIGZpcnN0IHBsYWNlIGNoZWNrZWQgaXNcbicKKyAgICAgICAgICAgJyJzeXMubW9kdWxlcyIsIHRoZSBjYWNoZSBvZiBhbGwgbW9kdWxlcyB0aGF0IGhhdmUgYmVlbiBpbXBvcnRlZFxuJworICAgICAgICAgICAncHJldmlvdXNseS4gSWYgdGhlIG1vZHVsZSBpcyBmb3VuZCB0aGVyZSB0aGVuIGl0IGlzIHVzZWQgaW4gc3RlcCAnCisgICAgICAgICAgICcoMilcbicKKyAgICAgICAgICAgJ29mIGltcG9ydC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgdGhlIG1vZHVsZSBpcyBub3QgZm91bmQgaW4gdGhlIGNhY2hlLCB0aGVuICJzeXMubWV0YV9wYXRoIiBpc1xuJworICAgICAgICAgICAnc2VhcmNoZWQgKHRoZSBzcGVjaWZpY2F0aW9uIGZvciAic3lzLm1ldGFfcGF0aCIgY2FuIGJlIGZvdW5kIGluICcKKyAgICAgICAgICAgJyoqUEVQXG4nCisgICAgICAgICAgICczMDIqKikuIFRoZSBvYmplY3QgaXMgYSBsaXN0IG9mICpmaW5kZXIqIG9iamVjdHMgd2hpY2ggYXJlIHF1ZXJpZWQgJworICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgJ29yZGVyIGFzIHRvIHdoZXRoZXIgdGhleSBrbm93IGhvdyB0byBsb2FkIHRoZSBtb2R1bGUgYnkgY2FsbGluZyAnCisgICAgICAgICAgICd0aGVpclxuJworICAgICAgICAgICAnImZpbmRfbW9kdWxlKCkiIG1ldGhvZCB3aXRoIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuIElmIHRoZSBtb2R1bGVcbicKKyAgICAgICAgICAgJ2hhcHBlbnMgdG8gYmUgY29udGFpbmVkIHdpdGhpbiBhIHBhY2thZ2UgKGFzIGRlbm90ZWQgYnkgdGhlICcKKyAgICAgICAgICAgJ2V4aXN0ZW5jZVxuJworICAgICAgICAgICAnb2YgYSBkb3QgaW4gdGhlIG5hbWUpLCB0aGVuIGEgc2Vjb25kIGFyZ3VtZW50IHRvICJmaW5kX21vZHVsZSgpIiAnCisgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAnZ2l2ZW4gYXMgdGhlIHZhbHVlIG9mIHRoZSAiX19wYXRoX18iIGF0dHJpYnV0ZSBmcm9tIHRoZSBwYXJlbnQgJworICAgICAgICAgICAncGFja2FnZVxuJworICAgICAgICAgICAnKGV2ZXJ5dGhpbmcgdXAgdG8gdGhlIGxhc3QgZG90IGluIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgYmVpbmdcbicKKyAgICAgICAgICAgJ2ltcG9ydGVkKS4gSWYgYSBmaW5kZXIgY2FuIGZpbmQgdGhlIG1vZHVsZSBpdCByZXR1cm5zIGEgKmxvYWRlcipcbicKKyAgICAgICAgICAgJyhkaXNjdXNzZWQgbGF0ZXIpIG9yIHJldHVybnMgIk5vbmUiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBub25lIG9mIHRoZSBmaW5kZXJzIG9uICJzeXMubWV0YV9wYXRoIiBhcmUgYWJsZSB0byBmaW5kIHRoZSAnCisgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgJ3RoZW4gc29tZSBpbXBsaWNpdGx5IGRlZmluZWQgZmluZGVycyBhcmUgcXVlcmllZC4gSW1wbGVtZW50YXRpb25zICcKKyAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICdQeXRob24gdmFyeSBpbiB3aGF0IGltcGxpY2l0IG1ldGEgcGF0aCBmaW5kZXJzIGFyZSBkZWZpbmVkLiBUaGUgJworICAgICAgICAgICAnb25lXG4nCisgICAgICAgICAgICd0aGV5IGFsbCBkbyBkZWZpbmUsIHRob3VnaCwgaXMgb25lIHRoYXQgaGFuZGxlcyAic3lzLnBhdGhfaG9va3MiLFxuJworICAgICAgICAgICAnInN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIiwgYW5kICJzeXMucGF0aCIuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBpbXBsaWNpdCBmaW5kZXIgc2VhcmNoZXMgZm9yIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGluIHRoZSAnCisgICAgICAgICAgICcicGF0aHMiXG4nCisgICAgICAgICAgICdzcGVjaWZpZWQgaW4gb25lIG9mIHR3byBwbGFjZXMgKCJwYXRocyIgZG8gbm90IGhhdmUgdG8gYmUgZmlsZSAnCisgICAgICAgICAgICdzeXN0ZW1cbicKKyAgICAgICAgICAgJ3BhdGhzKS4gSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyBzdXBwb3NlZCB0byBiZSBjb250YWluZWRcbicKKyAgICAgICAgICAgJ3dpdGhpbiBhIHBhY2thZ2UgdGhlbiB0aGUgc2Vjb25kIGFyZ3VtZW50IHBhc3NlZCB0byAnCisgICAgICAgICAgICciZmluZF9tb2R1bGUoKSIsXG4nCisgICAgICAgICAgICciX19wYXRoX18iIG9uIHRoZSBwYXJlbnQgcGFja2FnZSwgaXMgdXNlZCBhcyB0aGUgc291cmNlIG9mIHBhdGhzLiAnCisgICAgICAgICAgICdJZlxuJworICAgICAgICAgICAndGhlIG1vZHVsZSBpcyBub3QgY29udGFpbmVkIGluIGEgcGFja2FnZSB0aGVuICJzeXMucGF0aCIgaXMgdXNlZCAnCisgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAndGhlIHNvdXJjZSBvZiBwYXRocy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnT25jZSB0aGUgc291cmNlIG9mIHBhdGhzIGlzIGNob3NlbiBpdCBpcyBpdGVyYXRlZCBvdmVyIHRvIGZpbmQgYVxuJworICAgICAgICAgICAnZmluZGVyIHRoYXQgY2FuIGhhbmRsZSB0aGF0IHBhdGguIFRoZSBkaWN0IGF0XG4nCisgICAgICAgICAgICcic3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUiIGNhY2hlcyBmaW5kZXJzIGZvciBwYXRocyBhbmQgaXMgY2hlY2tlZCAnCisgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgJ2EgZmluZGVyLiBJZiB0aGUgcGF0aCBkb2VzIG5vdCBoYXZlIGEgZmluZGVyIGNhY2hlZCB0aGVuXG4nCisgICAgICAgICAgICcic3lzLnBhdGhfaG9va3MiIGlzIHNlYXJjaGVkIGJ5IGNhbGxpbmcgZWFjaCBvYmplY3QgaW4gdGhlIGxpc3QgJworICAgICAgICAgICAnd2l0aCBhXG4nCisgICAgICAgICAgICdzaW5nbGUgYXJndW1lbnQgb2YgdGhlIHBhdGgsIHJldHVybmluZyBhIGZpbmRlciBvciByYWlzZXNcbicKKyAgICAgICAgICAgJyJJbXBvcnRFcnJvciIuIElmIGEgZmluZGVyIGlzIHJldHVybmVkIHRoZW4gaXQgaXMgY2FjaGVkIGluXG4nCisgICAgICAgICAgICcic3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUiIGFuZCB0aGVuIHVzZWQgZm9yIHRoYXQgcGF0aCBlbnRyeS4gSWYgJworICAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAgJ2ZpbmRlciBjYW4gYmUgZm91bmQgYnV0IHRoZSBwYXRoIGV4aXN0cyB0aGVuIGEgdmFsdWUgb2YgIk5vbmUiIGlzXG4nCisgICAgICAgICAgICdzdG9yZWQgaW4gInN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlIiB0byBzaWduaWZ5IHRoYXQgYW4gaW1wbGljaXQsICcKKyAgICAgICAgICAgJ2ZpbGUtXG4nCisgICAgICAgICAgICdiYXNlZCBmaW5kZXIgdGhhdCBoYW5kbGVzIG1vZHVsZXMgc3RvcmVkIGFzIGluZGl2aWR1YWwgZmlsZXMgJworICAgICAgICAgICAnc2hvdWxkIGJlXG4nCisgICAgICAgICAgICd1c2VkIGZvciB0aGF0IHBhdGguIElmIHRoZSBwYXRoIGRvZXMgbm90IGV4aXN0IHRoZW4gYSBmaW5kZXIgJworICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgJ2Fsd2F5cyByZXR1cm5zICJOb25lIiBpcyBwbGFjZWQgaW4gdGhlIGNhY2hlIGZvciB0aGUgcGF0aC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgbm8gZmluZGVyIGNhbiBmaW5kIHRoZSBtb2R1bGUgdGhlbiAiSW1wb3J0RXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgJ090aGVyd2lzZSBzb21lIGZpbmRlciByZXR1cm5lZCBhIGxvYWRlciB3aG9zZSAibG9hZF9tb2R1bGUoKSIgJworICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICdpcyBjYWxsZWQgd2l0aCB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIGxvYWQgKHNlZSAqKlBFUCAzMDIqKiBmb3IgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdvcmlnaW5hbCBkZWZpbml0aW9uIG9mIGxvYWRlcnMpLiBBIGxvYWRlciBoYXMgc2V2ZXJhbCAnCisgICAgICAgICAgICdyZXNwb25zaWJpbGl0aWVzXG4nCisgICAgICAgICAgICd0byBwZXJmb3JtIG9uIGEgbW9kdWxlIGl0IGxvYWRzLiBGaXJzdCwgaWYgdGhlIG1vZHVsZSBhbHJlYWR5ICcKKyAgICAgICAgICAgJ2V4aXN0c1xuJworICAgICAgICAgICAnaW4gInN5cy5tb2R1bGVzIiAoYSBwb3NzaWJpbGl0eSBpZiB0aGUgbG9hZGVyIGlzIGNhbGxlZCBvdXRzaWRlIG9mICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnaW1wb3J0IG1hY2hpbmVyeSkgdGhlbiBpdCBpcyB0byB1c2UgdGhhdCBtb2R1bGUgZm9yIGluaXRpYWxpemF0aW9uICcKKyAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAnbm90IGEgbmV3IG1vZHVsZS4gQnV0IGlmIHRoZSBtb2R1bGUgZG9lcyBub3QgZXhpc3QgaW4gJworICAgICAgICAgICAnInN5cy5tb2R1bGVzIlxuJworICAgICAgICAgICAndGhlbiBpdCBpcyB0byBiZSBhZGRlZCB0byB0aGF0IGRpY3QgYmVmb3JlIGluaXRpYWxpemF0aW9uIGJlZ2lucy4gJworICAgICAgICAgICAnSWZcbicKKyAgICAgICAgICAgJ2FuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyBvZiB0aGUgbW9kdWxlIGFuZCBpdCB3YXMgYWRkZWQgdG9cbicKKyAgICAgICAgICAgJyJzeXMubW9kdWxlcyIgaXQgaXMgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBkaWN0LiBJZiBhbiBlcnJvciAnCisgICAgICAgICAgICdvY2N1cnNcbicKKyAgICAgICAgICAgJ2J1dCB0aGUgbW9kdWxlIHdhcyBhbHJlYWR5IGluICJzeXMubW9kdWxlcyIgaXQgaXMgbGVmdCBpbiB0aGUgJworICAgICAgICAgICAnZGljdC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGxvYWRlciBtdXN0IHNldCBzZXZlcmFsIGF0dHJpYnV0ZXMgb24gdGhlIG1vZHVsZS4gIl9fbmFtZV9fIiAnCisgICAgICAgICAgICdpcyB0b1xuJworICAgICAgICAgICAnYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUuICJfX2ZpbGVfXyIgaXMgdG8gYmUgdGhlICJwYXRoIiAnCisgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAndGhlIGZpbGUgdW5sZXNzIHRoZSBtb2R1bGUgaXMgYnVpbHQtaW4gKGFuZCB0aHVzIGxpc3RlZCBpblxuJworICAgICAgICAgICAnInN5cy5idWlsdGluX21vZHVsZV9uYW1lcyIpIGluIHdoaWNoIGNhc2UgdGhlIGF0dHJpYnV0ZSBpcyBub3QgJworICAgICAgICAgICAnc2V0LiBJZlxuJworICAgICAgICAgICAnd2hhdCBpcyBiZWluZyBpbXBvcnRlZCBpcyBhIHBhY2thZ2UgdGhlbiAiX19wYXRoX18iIGlzIHRvIGJlIHNldCAnCisgICAgICAgICAgICd0byBhXG4nCisgICAgICAgICAgICdsaXN0IG9mIHBhdGhzIHRvIGJlIHNlYXJjaGVkIHdoZW4gbG9va2luZyBmb3IgbW9kdWxlcyBhbmQgJworICAgICAgICAgICAncGFja2FnZXNcbicKKyAgICAgICAgICAgJ2NvbnRhaW5lZCB3aXRoaW4gdGhlIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQuICJfX3BhY2thZ2VfXyIgaXMgJworICAgICAgICAgICAnb3B0aW9uYWxcbicKKyAgICAgICAgICAgJ2J1dCBzaG91bGQgYmUgc2V0IHRvIHRoZSBuYW1lIG9mIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlICcKKyAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICdwYWNrYWdlICh0aGUgZW1wdHkgc3RyaW5nIGlzIHVzZWQgZm9yIG1vZHVsZSBub3QgY29udGFpbmVkIGluIGFcbicKKyAgICAgICAgICAgJ3BhY2thZ2UpLiAiX19sb2FkZXJfXyIgaXMgYWxzbyBvcHRpb25hbCBidXQgc2hvdWxkIGJlIHNldCB0byB0aGVcbicKKyAgICAgICAgICAgJ2xvYWRlciBvYmplY3QgdGhhdCBpcyBsb2FkaW5nIHRoZSBtb2R1bGUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgbG9hZGluZyB0aGVuIHRoZSBsb2FkZXIgcmFpc2VzICcKKyAgICAgICAgICAgJyJJbXBvcnRFcnJvciJcbicKKyAgICAgICAgICAgJ2lmIHNvbWUgb3RoZXIgZXhjZXB0aW9uIGlzIG5vdCBhbHJlYWR5IGJlaW5nIHByb3BhZ2F0ZWQuIE90aGVyd2lzZSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2xvYWRlciByZXR1cm5zIHRoZSBtb2R1bGUgdGhhdCB3YXMgbG9hZGVkIGFuZCBpbml0aWFsaXplZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiBzdGVwICgxKSBmaW5pc2hlcyB3aXRob3V0IHJhaXNpbmcgYW4gZXhjZXB0aW9uLCBzdGVwICgyKSBjYW5cbicKKyAgICAgICAgICAgJ2JlZ2luLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZmlyc3QgZm9ybSBvZiAiaW1wb3J0IiBzdGF0ZW1lbnQgYmluZHMgdGhlIG1vZHVsZSBuYW1lIGluIHRoZVxuJworICAgICAgICAgICAnbG9jYWwgbmFtZXNwYWNlIHRvIHRoZSBtb2R1bGUgb2JqZWN0LCBhbmQgdGhlbiBnb2VzIG9uIHRvIGltcG9ydCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ25leHQgaWRlbnRpZmllciwgaWYgYW55LiAgSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5ICJhcyIsICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbmFtZSBmb2xsb3dpbmcgImFzIiBpcyB1c2VkIGFzIHRoZSBsb2NhbCBuYW1lIGZvciB0aGUgbW9kdWxlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImZyb20iIGZvcm0gZG9lcyBub3QgYmluZCB0aGUgbW9kdWxlIG5hbWU6IGl0IGdvZXMgdGhyb3VnaCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2xpc3Qgb2YgaWRlbnRpZmllcnMsIGxvb2tzIGVhY2ggb25lIG9mIHRoZW0gdXAgaW4gdGhlIG1vZHVsZSBmb3VuZCAnCisgICAgICAgICAgICdpblxuJworICAgICAgICAgICAnc3RlcCAoMSksIGFuZCBiaW5kcyB0aGUgbmFtZSBpbiB0aGUgbG9jYWwgbmFtZXNwYWNlIHRvIHRoZSBvYmplY3QgJworICAgICAgICAgICAndGh1c1xuJworICAgICAgICAgICAnZm91bmQuICBBcyB3aXRoIHRoZSBmaXJzdCBmb3JtIG9mICJpbXBvcnQiLCBhbiBhbHRlcm5hdGUgbG9jYWwgJworICAgICAgICAgICAnbmFtZVxuJworICAgICAgICAgICAnY2FuIGJlIHN1cHBsaWVkIGJ5IHNwZWNpZnlpbmcgIiJhcyIgbG9jYWxuYW1lIi4gIElmIGEgbmFtZSBpcyBub3RcbicKKyAgICAgICAgICAgJ2ZvdW5kLCAiSW1wb3J0RXJyb3IiIGlzIHJhaXNlZC4gIElmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzXG4nCisgICAgICAgICAgICdyZXBsYWNlZCBieSBhIHN0YXIgKCJcJypcJyIpLCBhbGwgcHVibGljIG5hbWVzIGRlZmluZWQgaW4gdGhlICcKKyAgICAgICAgICAgJ21vZHVsZSBhcmVcbicKKyAgICAgICAgICAgJ2JvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2Ugb2YgdGhlICJpbXBvcnQiIHN0YXRlbWVudC4uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCAiX19hbGxfXyI7IGlmIGRlZmluZWQsIGl0ICcKKyAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgJ2JlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdtb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gIl9fYWxsX18iIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgJworICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICdhcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZiAiX19hbGxfXyIgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgJworICAgICAgICAgICAncHVibGljXG4nCisgICAgICAgICAgICJuYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSB3aGljaCBkbyAiCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2JlZ2luIHdpdGggYW4gdW5kZXJzY29yZSBjaGFyYWN0ZXIgKCJcJ19cJyIpLiAiX19hbGxfXyIgc2hvdWxkICcKKyAgICAgICAgICAgJ2NvbnRhaW5cbicKKyAgICAgICAgICAgJ3RoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5ICcKKyAgICAgICAgICAgJ2V4cG9ydGluZ1xuJworICAgICAgICAgICAnaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggJworICAgICAgICAgICAnd2VyZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImZyb20iIGZvcm0gd2l0aCAiKiIgbWF5IG9ubHkgb2NjdXIgaW4gYSBtb2R1bGUgc2NvcGUuICBJZiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3dpbGQgY2FyZCBmb3JtIG9mIGltcG9ydCAtLS0gImltcG9ydCAqIiAtLS0gaXMgdXNlZCBpbiBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAndGhlIGZ1bmN0aW9uIGNvbnRhaW5zIG9yIGlzIGEgbmVzdGVkIGJsb2NrIHdpdGggZnJlZSB2YXJpYWJsZXMsICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnY29tcGlsZXIgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdhYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyAnCisgICAgICAgICAgICdjb250YWluZWRcbicKKyAgICAgICAgICAgJ3dpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCAnCisgICAgICAgICAgICd3aXRoaW5cbicKKyAgICAgICAgICAgJ3RoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gJworICAgICAgICAgICAnQnlcbicKKyAgICAgICAgICAgJ3VzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyICJmcm9tIiAnCisgICAgICAgICAgICd5b3VcbicKKyAgICAgICAgICAgJ2NhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG4nCisgICAgICAgICAgICd3aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxuJworICAgICAgICAgICAncGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgJworICAgICAgICAgICAndXBcbicKKyAgICAgICAgICAgJ29uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91ICcKKyAgICAgICAgICAgJ2V4ZWN1dGVcbicKKyAgICAgICAgICAgJyJmcm9tIC4gaW1wb3J0IG1vZCIgZnJvbSBhIG1vZHVsZSBpbiB0aGUgInBrZyIgcGFja2FnZSB0aGVuIHlvdSAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICdlbmQgdXAgaW1wb3J0aW5nICJwa2cubW9kIi4gSWYgeW91IGV4ZWN1dGUgImZyb20gLi5zdWJwa2cyIGltcG9ydCAnCisgICAgICAgICAgICdtb2QiXG4nCisgICAgICAgICAgICdmcm9tIHdpdGhpbiAicGtnLnN1YnBrZzEiIHlvdSB3aWxsIGltcG9ydCAicGtnLnN1YnBrZzIubW9kIi4gVGhlXG4nCisgICAgICAgICAgICdzcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzIGNvbnRhaW5lZCB3aXRoaW4gKipQRVAgJworICAgICAgICAgICAnMzI4KiouXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdkZXRlcm1pbmUgd2hpY2ggbW9kdWxlcyBuZWVkIHRvIGJlIGxvYWRlZCBkeW5hbWljYWxseS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdGdXR1cmUgc3RhdGVtZW50c1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSAqZnV0dXJlIHN0YXRlbWVudCogaXMgYSBkaXJlY3RpdmUgdG8gdGhlIGNvbXBpbGVyIHRoYXQgYSAnCisgICAgICAgICAgICdwYXJ0aWN1bGFyXG4nCisgICAgICAgICAgICdtb2R1bGUgc2hvdWxkIGJlIGNvbXBpbGVkIHVzaW5nIHN5bnRheCBvciBzZW1hbnRpY3MgdGhhdCB3aWxsIGJlXG4nCisgICAgICAgICAgICdhdmFpbGFibGUgaW4gYSBzcGVjaWZpZWQgZnV0dXJlIHJlbGVhc2Ugb2YgUHl0aG9uLiAgVGhlIGZ1dHVyZVxuJworICAgICAgICAgICAnc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSB2ZXJzaW9ucyBvZiAnCisgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgJ3RoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gIEl0IGFsbG93cyAnCisgICAgICAgICAgICd1c2Ugb2ZcbicKKyAgICAgICAgICAgJ3RoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGUgcmVsZWFzZSBpbiB3aGljaCAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2ZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiICcKKyAgICAgICAgICAgJ25hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbicKKyAgICAgICAgICAgJyAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJyAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlICcKKyAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgJ2xpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBjb21tZW50cyxcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBibGFuayBsaW5lcywgYW5kXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAyLjYgYXJlICJ1bmljb2RlX2xpdGVyYWxzIixcbicKKyAgICAgICAgICAgJyJwcmludF9mdW5jdGlvbiIsICJhYnNvbHV0ZV9pbXBvcnQiLCAiZGl2aXNpb24iLCAiZ2VuZXJhdG9ycyIsXG4nCisgICAgICAgICAgICcibmVzdGVkX3Njb3BlcyIgYW5kICJ3aXRoX3N0YXRlbWVudCIuICAiZ2VuZXJhdG9ycyIsICcKKyAgICAgICAgICAgJyJ3aXRoX3N0YXRlbWVudCIsXG4nCisgICAgICAgICAgICcibmVzdGVkX3Njb3BlcyIgYXJlIHJlZHVuZGFudCBpbiBQeXRob24gdmVyc2lvbiAyLjYgYW5kIGFib3ZlICcKKyAgICAgICAgICAgJ2JlY2F1c2VcbicKKyAgICAgICAgICAgJ3RoZXkgYXJlIGFsd2F5cyBlbmFibGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxuJworICAgICAgICAgICAndGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbicKKyAgICAgICAgICAgJ2ltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgJworICAgICAgICAgICAnY2FzZVxuJworICAgICAgICAgICAndGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSAnCisgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgJ3Jlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbicKKyAgICAgICAgICAgJ21vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG4nCisgICAgICAgICAgICdydW50aW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdGb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzICcKKyAgICAgICAgICAgJ2hhdmVcbicKKyAgICAgICAgICAgJ2JlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSAnCisgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJ2NvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0ICcKKyAgICAgICAgICAgJ3N0YXRlbWVudDpcbicKKyAgICAgICAgICAgJ3RoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlICJfX2Z1dHVyZV9fIiwgZGVzY3JpYmVkIGxhdGVyLCBhbmQgaXQgJworICAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICAnYmUgaW1wb3J0ZWQgaW4gdGhlIHVzdWFsIHdheSBhdCB0aGUgdGltZSB0aGUgZnV0dXJlIHN0YXRlbWVudCBpc1xuJworICAgICAgICAgICAnZXhlY3V0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBpbnRlcmVzdGluZyBydW50aW1lIHNlbWFudGljcyBkZXBlbmQgb24gdGhlIHNwZWNpZmljIGZlYXR1cmVcbicKKyAgICAgICAgICAgJ2VuYWJsZWQgYnkgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05vdGUgdGhhdCB0aGVyZSBpcyBub3RoaW5nIHNwZWNpYWwgYWJvdXQgdGhlIHN0YXRlbWVudDpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaW1wb3J0IF9fZnV0dXJlX18gW2FzIG5hbWVdXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgIlRoYXQgaXMgbm90IGEgZnV0dXJlIHN0YXRlbWVudDsgaXQncyBhbiBvcmRpbmFyeSBpbXBvcnQgc3RhdGVtZW50ICIKKyAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgJ25vIHNwZWNpYWwgc2VtYW50aWNzIG9yIHN5bnRheCByZXN0cmljdGlvbnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0NvZGUgY29tcGlsZWQgYnkgYW4gImV4ZWMiIHN0YXRlbWVudCBvciBjYWxscyB0byB0aGUgYnVpbHQtaW5cbicKKyAgICAgICAgICAgJ2Z1bmN0aW9ucyAiY29tcGlsZSgpIiBhbmQgImV4ZWNmaWxlKCkiIHRoYXQgb2NjdXIgaW4gYSBtb2R1bGUgIk0iXG4nCisgICAgICAgICAgICdjb250YWluaW5nIGEgZnV0dXJlIHN0YXRlbWVudCB3aWxsLCBieSBkZWZhdWx0LCB1c2UgdGhlIG5ldyAgJworICAgICAgICAgICAnc3ludGF4IG9yXG4nCisgICAgICAgICAgICdzZW1hbnRpY3MgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdXR1cmUgc3RhdGVtZW50LiAgVGhpcyBjYW4sICcKKyAgICAgICAgICAgJ3N0YXJ0aW5nXG4nCisgICAgICAgICAgICd3aXRoIFB5dGhvbiAyLjIgYmUgY29udHJvbGxlZCBieSBvcHRpb25hbCBhcmd1bWVudHMgdG8gImNvbXBpbGUoKSIgJworICAgICAgICAgICAnLS0tXG4nCisgICAgICAgICAgICdzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiBmb3IgZGV0YWlscy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IHR5cGVkIGF0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyIHByb21wdCAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICd0YWtlIGVmZmVjdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGludGVycHJldGVyIHNlc3Npb24uICBJZiBhblxuJworICAgICAgICAgICAnaW50ZXJwcmV0ZXIgaXMgc3RhcnRlZCB3aXRoIHRoZSAiLWkiIG9wdGlvbiwgaXMgcGFzc2VkIGEgc2NyaXB0ICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ3RvIGV4ZWN1dGUsIGFuZCB0aGUgc2NyaXB0IGluY2x1ZGVzIGEgZnV0dXJlIHN0YXRlbWVudCwgaXQgd2lsbCBiZSAnCisgICAgICAgICAgICdpblxuJworICAgICAgICAgICAnZWZmZWN0IGluIHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9uIHN0YXJ0ZWQgYWZ0ZXIgdGhlIHNjcmlwdCBpc1xuJworICAgICAgICAgICAnZXhlY3V0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICoqUEVQIDIzNioqIC0gQmFjayB0byB0aGUgX19mdXR1cmVfX1xuJworICAgICAgICAgICAnICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCisgJ2luJzogJ1xuJworICAgICAgICdNZW1iZXJzaGlwIHRlc3Qgb3BlcmF0aW9uc1xuJworICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbicKKyAgICAgICAnZXZhbHVhdGVzIHRvICJUcnVlIiBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgIkZhbHNlIiBvdGhlcndpc2UuXG4nCisgICAgICAgJyJ4IG5vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiAnCisgICAgICAgJ3NlcXVlbmNlc1xuJworICAgICAgICdhbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iICcKKyAgICAgICAndGVzdHNcbicKKyAgICAgICAnd2hldGhlciB0aGUgZGljdGlvbmFyeSBoYXMgYSBnaXZlbiBrZXkuIEZvciBjb250YWluZXIgdHlwZXMgc3VjaCBhc1xuJworICAgICAgICdsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbicKKyAgICAgICAnZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSBmb3IgZSBpblxuJworICAgICAgICd5KSIuXG4nCisgICAgICAgJ1xuJworICAgICAgICdGb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsICJ4IGluIHkiIGlzICJUcnVlIiBpZiBhbmQgb25seSBpZiAqeCpcbicKKyAgICAgICAnaXMgYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLlxuJworICAgICAgICdFbXB0eSBzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXJcbicKKyAgICAgICAnc3RyaW5nLCBzbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0ZvciB1c2VyLWRlZmluZWQgY2xhc3NlcyB3aGljaCBkZWZpbmUgdGhlICJfX2NvbnRhaW5zX18oKSIgbWV0aG9kLCAieFxuJworICAgICAgICdpbiB5IiByZXR1cm5zICJUcnVlIiBpZiAieS5fX2NvbnRhaW5zX18oeCkiIHJldHVybnMgYSB0cnVlIHZhbHVlLCBhbmRcbicKKyAgICAgICAnIkZhbHNlIiBvdGhlcndpc2UuXG4nCisgICAgICAgJ1xuJworICAgICAgICdGb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSAiX19jb250YWluc19fKCkiIGJ1dCBkb1xuJworICAgICAgICdkZWZpbmUgIl9faXRlcl9fKCkiLCAieCBpbiB5IiBpcyAiVHJ1ZSIgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PVxuJworICAgICAgICd6IiBpcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkXG4nCisgICAgICAgJ2R1cmluZyB0aGUgaXRlcmF0aW9uLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbi5cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0xhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuJworICAgICAgICciX19nZXRpdGVtX18oKSIsICJ4IGluIHkiIGlzICJUcnVlIiBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbicKKyAgICAgICAnbmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsIGxvd2VyXG4nCisgICAgICAgJ2ludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gKElmIGFueSBvdGhlclxuJworICAgICAgICdleGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG4nCisgICAgICAgJ1xuJworICAgICAgICdUaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbicKKyAgICAgICAnImluIi5cbicsCisgJ2ludGVnZXJzJzogJ1xuJworICAgICAgICAgICAgICdJbnRlZ2VyIGFuZCBsb25nIGludGVnZXIgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbnRlZ2VyIGFuZCBsb25nIGludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgJworICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAnbGV4aWNhbCBkZWZpbml0aW9uczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGxvbmdpbnRlZ2VyICAgIDo6PSBpbnRlZ2VyICgibCIgfCAiTCIpXG4nCisgICAgICAgICAgICAgJyAgIGludGVnZXIgICAgICAgIDo6PSBkZWNpbWFsaW50ZWdlciB8IG9jdGludGVnZXIgfCBoZXhpbnRlZ2VyIHwgJworICAgICAgICAgICAgICdiaW5pbnRlZ2VyXG4nCisgICAgICAgICAgICAgJyAgIGRlY2ltYWxpbnRlZ2VyIDo6PSBub256ZXJvZGlnaXQgZGlnaXQqIHwgIjAiXG4nCisgICAgICAgICAgICAgJyAgIG9jdGludGVnZXIgICAgIDo6PSAiMCIgKCJvIiB8ICJPIikgb2N0ZGlnaXQrIHwgIjAiIG9jdGRpZ2l0K1xuJworICAgICAgICAgICAgICcgICBoZXhpbnRlZ2VyICAgICA6Oj0gIjAiICgieCIgfCAiWCIpIGhleGRpZ2l0K1xuJworICAgICAgICAgICAgICcgICBiaW5pbnRlZ2VyICAgICA6Oj0gIjAiICgiYiIgfCAiQiIpIGJpbmRpZ2l0K1xuJworICAgICAgICAgICAgICcgICBub256ZXJvZGlnaXQgICA6Oj0gIjEiLi4uIjkiXG4nCisgICAgICAgICAgICAgJyAgIG9jdGRpZ2l0ICAgICAgIDo6PSAiMCIuLi4iNyJcbicKKyAgICAgICAgICAgICAnICAgYmluZGlnaXQgICAgICAgOjo9ICIwIiB8ICIxIlxuJworICAgICAgICAgICAgICcgICBoZXhkaWdpdCAgICAgICA6Oj0gZGlnaXQgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FsdGhvdWdoIGJvdGggbG93ZXIgY2FzZSAiXCdsXCciIGFuZCB1cHBlciBjYXNlICJcJ0xcJyIgYXJlICcKKyAgICAgICAgICAgICAnYWxsb3dlZCBhc1xuJworICAgICAgICAgICAgICdzdWZmaXggZm9yIGxvbmcgaW50ZWdlcnMsIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGFsd2F5cyAnCisgICAgICAgICAgICAgJ3VzZVxuJworICAgICAgICAgICAgICciXCdMXCciLCBzaW5jZSB0aGUgbGV0dGVyICJcJ2xcJyIgbG9va3MgdG9vIG11Y2ggbGlrZSB0aGUgZGlnaXQgJworICAgICAgICAgICAgICciXCcxXCciLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnUGxhaW4gaW50ZWdlciBsaXRlcmFscyB0aGF0IGFyZSBhYm92ZSB0aGUgbGFyZ2VzdCByZXByZXNlbnRhYmxlICcKKyAgICAgICAgICAgICAncGxhaW5cbicKKyAgICAgICAgICAgICAnaW50ZWdlciAoZS5nLiwgMjE0NzQ4MzY0NyB3aGVuIHVzaW5nIDMyLWJpdCBhcml0aG1ldGljKSBhcmUgJworICAgICAgICAgICAgICdhY2NlcHRlZFxuJworICAgICAgICAgICAgICdhcyBpZiB0aGV5IHdlcmUgbG9uZyBpbnRlZ2VycyBpbnN0ZWFkLiBbMV0gIFRoZXJlIGlzIG5vIGxpbWl0ICcKKyAgICAgICAgICAgICAnZm9yIGxvbmdcbicKKyAgICAgICAgICAgICAnaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tIHdoYXQgY2FuIGJlIHN0b3JlZCBpbiBhdmFpbGFibGUgJworICAgICAgICAgICAgICdtZW1vcnkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTb21lIGV4YW1wbGVzIG9mIHBsYWluIGludGVnZXIgbGl0ZXJhbHMgKGZpcnN0IHJvdykgYW5kIGxvbmcgJworICAgICAgICAgICAgICdpbnRlZ2VyXG4nCisgICAgICAgICAgICAgJ2xpdGVyYWxzIChzZWNvbmQgYW5kIHRoaXJkIHJvd3MpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDAxNzdcbicKKyAgICAgICAgICAgICAnICAgM0wgICAgNzkyMjgxNjI1MTQyNjQzMzc1OTM1NDM5NTAzMzZMICAgIDAzNzdMICAgMHgxMDAwMDAwMDBMXG4nCisgICAgICAgICAgICAgJyAgICAgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAgICAgICAgIDB4ZGVhZGJlZWZcbicsCisgJ2xhbWJkYSc6ICdcbicKKyAgICAgICAgICAgJ0xhbWJkYXNcbicKKyAgICAgICAgICAgJyoqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgbGFtYmRhX2V4cHIgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4nCisgICAgICAgICAgICcgICBvbGRfbGFtYmRhX2V4cHIgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IG9sZF9leHByZXNzaW9uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0xhbWJkYSBleHByZXNzaW9ucyAoc29tZXRpbWVzIGNhbGxlZCBsYW1iZGEgZm9ybXMpIGhhdmUgdGhlIHNhbWVcbicKKyAgICAgICAgICAgJ3N5bnRhY3RpYyBwb3NpdGlvbiBhcyBleHByZXNzaW9ucy4gIFRoZXkgYXJlIGEgc2hvcnRoYW5kIHRvICcKKyAgICAgICAgICAgJ2NyZWF0ZVxuJworICAgICAgICAgICAnYW5vbnltb3VzIGZ1bmN0aW9uczsgdGhlIGV4cHJlc3Npb24gImxhbWJkYSBhcmd1bWVudHM6ICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb24iXG4nCisgICAgICAgICAgICd5aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QgYmVoYXZlcyBsaWtlIGEgJworICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgJ29iamVjdCBkZWZpbmVkIHdpdGhcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZGVmIG5hbWUoYXJndW1lbnRzKTpcbicKKyAgICAgICAgICAgJyAgICAgICByZXR1cm4gZXhwcmVzc2lvblxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdTZWUgc2VjdGlvbiBGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgJworICAgICAgICAgICAnbGlzdHMuXG4nCisgICAgICAgICAgICdOb3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZXhwcmVzc2lvbnMgY2Fubm90ICcKKyAgICAgICAgICAgJ2NvbnRhaW5cbicKKyAgICAgICAgICAgJ3N0YXRlbWVudHMuXG4nLAorICdsaXN0cyc6ICdcbicKKyAgICAgICAgICAnTGlzdCBkaXNwbGF5c1xuJworICAgICAgICAgICcqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGxpc3QgZGlzcGxheSBpcyBhIHBvc3NpYmx5IGVtcHR5IHNlcmllcyBvZiBleHByZXNzaW9ucyBlbmNsb3NlZCAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJ3NxdWFyZSBicmFja2V0czpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGxpc3RfZGlzcGxheSAgICAgICAgOjo9ICJbIiBbZXhwcmVzc2lvbl9saXN0IHwgJworICAgICAgICAgICdsaXN0X2NvbXByZWhlbnNpb25dICJdIlxuJworICAgICAgICAgICcgICBsaXN0X2NvbXByZWhlbnNpb24gIDo6PSBleHByZXNzaW9uIGxpc3RfZm9yXG4nCisgICAgICAgICAgJyAgIGxpc3RfZm9yICAgICAgICAgICAgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgJworICAgICAgICAgICdvbGRfZXhwcmVzc2lvbl9saXN0IFtsaXN0X2l0ZXJdXG4nCisgICAgICAgICAgJyAgIG9sZF9leHByZXNzaW9uX2xpc3QgOjo9IG9sZF9leHByZXNzaW9uIFsoIiwiIG9sZF9leHByZXNzaW9uKSsgJworICAgICAgICAgICdbIiwiXV1cbicKKyAgICAgICAgICAnICAgb2xkX2V4cHJlc3Npb24gICAgICA6Oj0gb3JfdGVzdCB8IG9sZF9sYW1iZGFfZXhwclxuJworICAgICAgICAgICcgICBsaXN0X2l0ZXIgICAgICAgICAgIDo6PSBsaXN0X2ZvciB8IGxpc3RfaWZcbicKKyAgICAgICAgICAnICAgbGlzdF9pZiAgICAgICAgICAgICA6Oj0gImlmIiBvbGRfZXhwcmVzc2lvbiBbbGlzdF9pdGVyXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBsaXN0IGRpc3BsYXkgeWllbGRzIGEgbmV3IGxpc3Qgb2JqZWN0LiAgSXRzIGNvbnRlbnRzIGFyZSAnCisgICAgICAgICAgJ3NwZWNpZmllZFxuJworICAgICAgICAgICdieSBwcm92aWRpbmcgZWl0aGVyIGEgbGlzdCBvZiBleHByZXNzaW9ucyBvciBhIGxpc3QgY29tcHJlaGVuc2lvbi5cbicKKyAgICAgICAgICAnV2hlbiBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zIGlzIHN1cHBsaWVkLCBpdHMgJworICAgICAgICAgICdlbGVtZW50c1xuJworICAgICAgICAgICdhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCBhbmQgcGxhY2VkIGludG8gdGhlIGxpc3Qgb2JqZWN0ICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAndGhhdCBvcmRlci4gIFdoZW4gYSBsaXN0IGNvbXByZWhlbnNpb24gaXMgc3VwcGxpZWQsIGl0IGNvbnNpc3RzIG9mICcKKyAgICAgICAgICAnYVxuJworICAgICAgICAgICdzaW5nbGUgZXhwcmVzc2lvbiBmb2xsb3dlZCBieSBhdCBsZWFzdCBvbmUgImZvciIgY2xhdXNlIGFuZCB6ZXJvICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnbW9yZSAiZm9yIiBvciAiaWYiIGNsYXVzZXMuICBJbiB0aGlzIGNhc2UsIHRoZSBlbGVtZW50cyBvZiB0aGUgbmV3XG4nCisgICAgICAgICAgJ2xpc3QgYXJlIHRob3NlIHRoYXQgd291bGQgYmUgcHJvZHVjZWQgYnkgY29uc2lkZXJpbmcgZWFjaCBvZiB0aGUgJworICAgICAgICAgICciZm9yIlxuJworICAgICAgICAgICdvciAiaWYiIGNsYXVzZXMgYSBibG9jaywgbmVzdGluZyBmcm9tIGxlZnQgdG8gcmlnaHQsIGFuZCAnCisgICAgICAgICAgJ2V2YWx1YXRpbmdcbicKKyAgICAgICAgICAndGhlIGV4cHJlc3Npb24gdG8gcHJvZHVjZSBhIGxpc3QgZWxlbWVudCBlYWNoIHRpbWUgdGhlIGlubmVybW9zdCAnCisgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgJ2lzIHJlYWNoZWQgWzFdLlxuJywKKyAnbmFtaW5nJzogJ1xuJworICAgICAgICAgICAnTmFtaW5nIGFuZCBiaW5kaW5nXG4nCisgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKk5hbWVzKiByZWZlciB0byBvYmplY3RzLiAgTmFtZXMgYXJlIGludHJvZHVjZWQgYnkgbmFtZSBiaW5kaW5nXG4nCisgICAgICAgICAgICdvcGVyYXRpb25zLiBFYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzICcKKyAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICd0aGUgKmJpbmRpbmcqIG9mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBpbiB0aGUgaW5uZXJtb3N0IGZ1bmN0aW9uICcKKyAgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgICdjb250YWluaW5nIHRoZSB1c2UuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgKmJsb2NrKiBpcyBhIHBpZWNlIG9mIFB5dGhvbiBwcm9ncmFtIHRleHQgdGhhdCBpcyBleGVjdXRlZCBhcyBhXG4nCisgICAgICAgICAgICd1bml0LiBUaGUgZm9sbG93aW5nIGFyZSBibG9ja3M6IGEgbW9kdWxlLCBhIGZ1bmN0aW9uIGJvZHksIGFuZCBhICcKKyAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICdkZWZpbml0aW9uLiBFYWNoIGNvbW1hbmQgdHlwZWQgaW50ZXJhY3RpdmVseSBpcyBhIGJsb2NrLiAgQSAnCisgICAgICAgICAgICdzY3JpcHRcbicKKyAgICAgICAgICAgJ2ZpbGUgKGEgZmlsZSBnaXZlbiBhcyBzdGFuZGFyZCBpbnB1dCB0byB0aGUgaW50ZXJwcmV0ZXIgb3IgJworICAgICAgICAgICAnc3BlY2lmaWVkXG4nCisgICAgICAgICAgICdvbiB0aGUgaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIHRoZSBmaXJzdCBhcmd1bWVudCkgaXMgYSBjb2RlICcKKyAgICAgICAgICAgJ2Jsb2NrLlxuJworICAgICAgICAgICAnQSBzY3JpcHQgY29tbWFuZCAoYSBjb21tYW5kIHNwZWNpZmllZCBvbiB0aGUgaW50ZXJwcmV0ZXIgY29tbWFuZCAnCisgICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgICJ3aXRoIHRoZSAnKiotYyoqJyBvcHRpb24pIGlzIGEgY29kZSBibG9jay4gIFRoZSBmaWxlIHJlYWQgYnkgdGhlXG4iCisgICAgICAgICAgICdidWlsdC1pbiBmdW5jdGlvbiAiZXhlY2ZpbGUoKSIgaXMgYSBjb2RlIGJsb2NrLiAgVGhlIHN0cmluZyAnCisgICAgICAgICAgICdhcmd1bWVudFxuJworICAgICAgICAgICAncGFzc2VkIHRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAiZXZhbCgpIiBhbmQgdG8gdGhlICJleGVjIiAnCisgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJ2lzIGEgY29kZSBibG9jay4gVGhlIGV4cHJlc3Npb24gcmVhZCBhbmQgZXZhbHVhdGVkIGJ5IHRoZSAnCisgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAnZnVuY3Rpb24gImlucHV0KCkiIGlzIGEgY29kZSBibG9jay5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBjb2RlIGJsb2NrIGlzIGV4ZWN1dGVkIGluIGFuICpleGVjdXRpb24gZnJhbWUqLiAgQSBmcmFtZSAnCisgICAgICAgICAgICdjb250YWluc1xuJworICAgICAgICAgICAnc29tZSBhZG1pbmlzdHJhdGl2ZSBpbmZvcm1hdGlvbiAodXNlZCBmb3IgZGVidWdnaW5nKSBhbmQgJworICAgICAgICAgICAnZGV0ZXJtaW5lc1xuJworICAgICAgICAgICAid2hlcmUgYW5kIGhvdyBleGVjdXRpb24gY29udGludWVzIGFmdGVyIHRoZSBjb2RlIGJsb2NrJ3MgZXhlY3V0aW9uICIKKyAgICAgICAgICAgJ2hhc1xuJworICAgICAgICAgICAnY29tcGxldGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhICcKKyAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICd2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdkZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgJworICAgICAgICAgICAnYmxvY2tzXG4nCisgICAgICAgICAgICdjb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayAnCisgICAgICAgICAgICdpbnRyb2R1Y2VzXG4nCisgICAgICAgICAgICdhIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS4gIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgJ2NsYXNzIGJsb2NrIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjb2RlIGJsb2NrcyBvZiBtZXRob2RzIC0tIHRoaXMgaW5jbHVkZXMgZ2VuZXJhdG9yIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAgJ3NpbmNlXG4nCisgICAgICAgICAgICd0aGV5IGFyZSBpbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpcyBtZWFucyB0aGF0IHRoZVxuJworICAgICAgICAgICAnZm9sbG93aW5nIHdpbGwgZmFpbDpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgY2xhc3MgQTpcbicKKyAgICAgICAgICAgJyAgICAgICBhID0gNDJcbicKKyAgICAgICAgICAgJyAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIHVzZWQgaW4gYSBjb2RlIGJsb2NrLCBpdCBpcyByZXNvbHZlZCB1c2luZyB0aGUgJworICAgICAgICAgICAnbmVhcmVzdFxuJworICAgICAgICAgICAnZW5jbG9zaW5nIHNjb3BlLiAgVGhlIHNldCBvZiBhbGwgc3VjaCBzY29wZXMgdmlzaWJsZSB0byBhIGNvZGUgJworICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgImlzIGNhbGxlZCB0aGUgYmxvY2sncyAqZW52aXJvbm1lbnQqLlxuIgorICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIG5hbWUgaXMgYm91bmQgaW4gYSBibG9jaywgaXQgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGF0ICcKKyAgICAgICAgICAgJ2Jsb2NrLlxuJworICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGJvdW5kIGF0IHRoZSBtb2R1bGUgbGV2ZWwsIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgJworICAgICAgICAgICAnKFRoZVxuJworICAgICAgICAgICAndmFyaWFibGVzIG9mIHRoZSBtb2R1bGUgY29kZSBibG9jayBhcmUgbG9jYWwgYW5kIGdsb2JhbC4pICBJZiBhXG4nCisgICAgICAgICAgICd2YXJpYWJsZSBpcyB1c2VkIGluIGEgY29kZSBibG9jayBidXQgbm90IGRlZmluZWQgdGhlcmUsIGl0IGlzIGEgJworICAgICAgICAgICAnKmZyZWVcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlKi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgbm90IGZvdW5kIGF0IGFsbCwgYSAiTmFtZUVycm9yIiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAncmFpc2VkLlxuJworICAgICAgICAgICAnSWYgdGhlIG5hbWUgcmVmZXJzIHRvIGEgbG9jYWwgdmFyaWFibGUgdGhhdCBoYXMgbm90IGJlZW4gYm91bmQsIGFcbicKKyAgICAgICAgICAgJyJVbmJvdW5kTG9jYWxFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gICJVbmJvdW5kTG9jYWxFcnJvciIgaXMgJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAnc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byAnCisgICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgJworICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICdpZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIGluICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnc2Vjb25kIHBvc2l0aW9uIG9mIGFuICJleGNlcHQiIGNsYXVzZSBoZWFkZXIgb3IgYWZ0ZXIgImFzIiBpbiBhICcKKyAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAnc3RhdGVtZW50LiAgVGhlICJpbXBvcnQiIHN0YXRlbWVudCBvZiB0aGUgZm9ybSAiZnJvbSAuLi4gaW1wb3J0ICcKKyAgICAgICAgICAgJyoiXG4nCisgICAgICAgICAgICdiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGUgaW1wb3J0ZWQgbW9kdWxlLCBleGNlcHQgdGhvc2UgJworICAgICAgICAgICAnYmVnaW5uaW5nXG4nCisgICAgICAgICAgICd3aXRoIGFuIHVuZGVyc2NvcmUuICBUaGlzIGZvcm0gbWF5IG9ubHkgYmUgdXNlZCBhdCB0aGUgbW9kdWxlICcKKyAgICAgICAgICAgJ2xldmVsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBIHRhcmdldCBvY2N1cnJpbmcgaW4gYSAiZGVsIiBzdGF0ZW1lbnQgaXMgYWxzbyBjb25zaWRlcmVkIGJvdW5kICcKKyAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAndGhpcyBwdXJwb3NlICh0aG91Z2ggdGhlIGFjdHVhbCBzZW1hbnRpY3MgYXJlIHRvIHVuYmluZCB0aGUgJworICAgICAgICAgICAnbmFtZSkuICBJdFxuJworICAgICAgICAgICAnaXMgaWxsZWdhbCB0byB1bmJpbmQgYSBuYW1lIHRoYXQgaXMgcmVmZXJlbmNlZCBieSBhbiBlbmNsb3NpbmcgJworICAgICAgICAgICAnc2NvcGU7XG4nCisgICAgICAgICAgICd0aGUgY29tcGlsZXIgd2lsbCByZXBvcnQgYSAiU3ludGF4RXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdFYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgZGVmaW5lZCAnCisgICAgICAgICAgICdieSBhXG4nCisgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSAnCisgICAgICAgICAgICd0b3AtbGV2ZWxcbicKKyAgICAgICAgICAgJ2NvZGUgYmxvY2spLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhIG5hbWUgYmluZGluZyBvcGVyYXRpb24gb2NjdXJzIGFueXdoZXJlIHdpdGhpbiBhIGNvZGUgYmxvY2ssICcKKyAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAndXNlcyBvZiB0aGUgbmFtZSB3aXRoaW4gdGhlIGJsb2NrIGFyZSB0cmVhdGVkIGFzIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjdXJyZW50IGJsb2NrLiAgVGhpcyBjYW4gbGVhZCB0byBlcnJvcnMgd2hlbiBhIG5hbWUgaXMgdXNlZCB3aXRoaW4gJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAnYmxvY2sgYmVmb3JlIGl0IGlzIGJvdW5kLiBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG4nCisgICAgICAgICAgICdkZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciBhbnl3aGVyZVxuJworICAgICAgICAgICAnd2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiBiZVxuJworICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lICcKKyAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIHRoZSBnbG9iYWwgc3RhdGVtZW50IG9jY3VycyB3aXRoaW4gYSBibG9jaywgYWxsIHVzZXMgb2YgdGhlICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ3NwZWNpZmllZCBpbiB0aGUgc3RhdGVtZW50IHJlZmVyIHRvIHRoZSBiaW5kaW5nIG9mIHRoYXQgbmFtZSBpbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3RvcC1sZXZlbCBuYW1lc3BhY2UuIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsIG5hbWVzcGFjZSAnCisgICAgICAgICAgICdieVxuJworICAgICAgICAgICAnc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZVxuJworICAgICAgICAgICAnY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSAnCisgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgJ29mIHRoZSBtb2R1bGUgIl9fYnVpbHRpbl9fIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkICcKKyAgICAgICAgICAgJ2ZpcnN0LlxuJworICAgICAgICAgICAnSWYgdGhlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIGlzICcKKyAgICAgICAgICAgJ3NlYXJjaGVkLlxuJworICAgICAgICAgICAnVGhlIGdsb2JhbCBzdGF0ZW1lbnQgbXVzdCBwcmVjZWRlIGFsbCB1c2VzIG9mIHRoZSBuYW1lLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYnVpbHRpbnMgbmFtZXNwYWNlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZXhlY3V0aW9uIG9mIGEgY29kZSAnCisgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAnaXMgYWN0dWFsbHkgZm91bmQgYnkgbG9va2luZyB1cCB0aGUgbmFtZSAiX19idWlsdGluc19fIiBpbiBpdHMgJworICAgICAgICAgICAnZ2xvYmFsXG4nCisgICAgICAgICAgICduYW1lc3BhY2U7IHRoaXMgc2hvdWxkIGJlIGEgZGljdGlvbmFyeSBvciBhIG1vZHVsZSAoaW4gdGhlIGxhdHRlciAnCisgICAgICAgICAgICdjYXNlXG4nCisgICAgICAgICAgICJ0aGUgbW9kdWxlJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICIKKyAgICAgICAgICAgJyJfX21haW5fXyJcbicKKyAgICAgICAgICAgJ21vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiX19idWlsdGluX18iIChub3RlOiAnCisgICAgICAgICAgICdub1xuJworICAgICAgICAgICAnXCdzXCcpOyB3aGVuIGluIGFueSBvdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2RpY3Rpb25hcnkgb2YgdGhlICJfX2J1aWx0aW5fXyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiAnCisgICAgICAgICAgICdiZVxuJworICAgICAgICAgICAnc2V0IHRvIGEgdXNlci1jcmVhdGVkIGRpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mICcKKyAgICAgICAgICAgJ3Jlc3RyaWN0ZWRcbicKKyAgICAgICAgICAgJ2V4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4nCisgICAgICAgICAgICciX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbicKKyAgICAgICAgICAgJ3dhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICcKKyAgICAgICAgICAgJyJpbXBvcnQiXG4nCisgICAgICAgICAgICd0aGUgIl9fYnVpbHRpbl9fIiAobm8gXCdzXCcpIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzXG4nCisgICAgICAgICAgICdhcHByb3ByaWF0ZWx5LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAnbW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgJworICAgICAgICAgICAnY2FsbGVkXG4nCisgICAgICAgICAgICciX19tYWluX18iLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyAnCisgICAgICAgICAgICdvcGVyYXRpb25cbicKKyAgICAgICAgICAgJ2luIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgJworICAgICAgICAgICAndmFyaWFibGVcbicKKyAgICAgICAgICAgJ2NvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhICcKKyAgICAgICAgICAgJ2dsb2JhbC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgJworICAgICAgICAgICAnZGVmaW5lXG4nCisgICAgICAgICAgICduYW1lcy4gVGhlc2UgcmVmZXJlbmNlcyBmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSAnCisgICAgICAgICAgICdyZXNvbHV0aW9uLlxuJworICAgICAgICAgICAnVGhlIG5hbWVzcGFjZSBvZiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBiZWNvbWVzIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAnb2YgdGhlIGNsYXNzLiAgTmFtZXMgZGVmaW5lZCBhdCB0aGUgY2xhc3Mgc2NvcGUgYXJlIG5vdCB2aXNpYmxlICcKKyAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0ludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gJworICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCAnCisgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIHRoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJpbXBvcnQgKiIgLS0tIGlzIHVzZWQgaW4gYVxuJworICAgICAgICAgICAnZnVuY3Rpb24gYW5kIHRoZSBmdW5jdGlvbiBjb250YWlucyBvciBpcyBhIG5lc3RlZCBibG9jayB3aXRoIGZyZWVcbicKKyAgICAgICAgICAgJ3ZhcmlhYmxlcywgdGhlIGNvbXBpbGVyIHdpbGwgcmFpc2UgYSAiU3ludGF4RXJyb3IiLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiAiZXhlYyIgaXMgdXNlZCBpbiBhIGZ1bmN0aW9uIGFuZCB0aGUgZnVuY3Rpb24gY29udGFpbnMgb3IgaXMgYVxuJworICAgICAgICAgICAnbmVzdGVkIGJsb2NrIHdpdGggZnJlZSB2YXJpYWJsZXMsIHRoZSBjb21waWxlciB3aWxsIHJhaXNlIGFcbicKKyAgICAgICAgICAgJyJTeW50YXhFcnJvciIgdW5sZXNzIHRoZSBleGVjIGV4cGxpY2l0bHkgc3BlY2lmaWVzIHRoZSBsb2NhbCAnCisgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgJ2ZvciB0aGUgImV4ZWMiLiAgKEluIG90aGVyIHdvcmRzLCAiZXhlYyBvYmoiIHdvdWxkIGJlIGlsbGVnYWwsICcKKyAgICAgICAgICAgJ2J1dFxuJworICAgICAgICAgICAnImV4ZWMgb2JqIGluIG5zIiB3b3VsZCBiZSBsZWdhbC4pXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiwgImV4ZWNmaWxlKCkiLCBhbmQgImlucHV0KCkiIGZ1bmN0aW9ucyBhbmQgdGhlICcKKyAgICAgICAgICAgJyJleGVjIlxuJworICAgICAgICAgICAnc3RhdGVtZW50IGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgZnVsbCBlbnZpcm9ubWVudCBmb3IgJworICAgICAgICAgICAncmVzb2x2aW5nXG4nCisgICAgICAgICAgICduYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgbG9jYWwgYW5kIGdsb2JhbCBuYW1lc3BhY2VzICcKKyAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICd0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCByZXNvbHZlZCBpbiB0aGUgbmVhcmVzdCAnCisgICAgICAgICAgICdlbmNsb3NpbmdcbicKKyAgICAgICAgICAgJ25hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiBbMV0gVGhlICJleGVjIiBzdGF0ZW1lbnQgJworICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICd0aGUgImV2YWwoKSIgYW5kICJleGVjZmlsZSgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJ292ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSAnCisgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKKyAnbnVtYmVycyc6ICdcbicKKyAgICAgICAgICAgICdOdW1lcmljIGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZXJlIGFyZSBmb3VyIHR5cGVzIG9mIG51bWVyaWMgbGl0ZXJhbHM6IHBsYWluIGludGVnZXJzLCBsb25nXG4nCisgICAgICAgICAgICAnaW50ZWdlcnMsIGZsb2F0aW5nIHBvaW50IG51bWJlcnMsIGFuZCBpbWFnaW5hcnkgbnVtYmVycy4gIFRoZXJlICcKKyAgICAgICAgICAgICdhcmUgbm9cbicKKyAgICAgICAgICAgICdjb21wbGV4IGxpdGVyYWxzIChjb21wbGV4IG51bWJlcnMgY2FuIGJlIGZvcm1lZCBieSBhZGRpbmcgYSByZWFsXG4nCisgICAgICAgICAgICAnbnVtYmVyIGFuZCBhbiBpbWFnaW5hcnkgbnVtYmVyKS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdOb3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgJworICAgICAgICAgICAgJyItMSJcbicKKyAgICAgICAgICAgICdpcyBhY3R1YWxseSBhbiBleHByZXNzaW9uIGNvbXBvc2VkIG9mIHRoZSB1bmFyeSBvcGVyYXRvciBcJyItIlwnICcKKyAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAnbGl0ZXJhbCAiMSIuXG4nLAorICdudW1lcmljLXR5cGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBudW1lcmljIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAgJ01ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgJworICAgICAgICAgICAgICAgICAgJ2J5IHRoZVxuJworICAgICAgICAgICAgICAgICAgJ3BhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2UgJworICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAnbm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX194b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSAnCisgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICIvLyIsICIlIiwgImRpdm1vZCgpIiwgJworICAgICAgICAgICAgICAgICAgJyJwb3coKSIsICIqKiIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgICd0aGF0IGhhcyBhblxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgY2FsbGVkLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICciX19kaXZtb2RfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgJworICAgICAgICAgICAgICAgICAgJyJfX2Zsb29yZGl2X18oKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fbW9kX18oKSI7IGl0IHNob3VsZCBub3QgYmUgcmVsYXRlZCB0byAiX190cnVlZGl2X18oKSIgJworICAgICAgICAgICAgICAgICAgJyhkZXNjcmliZWRcbicKKyAgICAgICAgICAgICAgICAgICcgICBiZWxvdykuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlIGRlZmluZWQgdG8gJworICAgICAgICAgICAgICAgICAgJ2FjY2VwdCBhblxuJworICAgICAgICAgICAgICAgICAgJyAgIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIgZnVuY3Rpb24gaXMgdG8gYmUgc3VwcG9ydGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlIGRpdmlzaW9uIG9wZXJhdG9yICgiLyIpIGlzIGltcGxlbWVudGVkIGJ5IHRoZXNlICcKKyAgICAgICAgICAgICAgICAgICdtZXRob2RzLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9fdHJ1ZWRpdl9fKCkiIG1ldGhvZCBpcyB1c2VkIHdoZW4gJworICAgICAgICAgICAgICAgICAgJyJfX2Z1dHVyZV9fLmRpdmlzaW9uIiBpcyBpblxuJworICAgICAgICAgICAgICAgICAgJyAgIGVmZmVjdCwgb3RoZXJ3aXNlICJfX2Rpdl9fKCkiIGlzIHVzZWQuICBJZiBvbmx5IG9uZSBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlc2UgdHdvXG4nCisgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kcyBpcyBkZWZpbmVkLCB0aGUgb2JqZWN0IHdpbGwgbm90IHN1cHBvcnQgZGl2aXNpb24gJworICAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGFsdGVybmF0ZSBjb250ZXh0OyAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiLyIsICIlIiwgImRpdm1vZCgpIiwgJworICAgICAgICAgICAgICAgICAgJyJwb3coKSIsICIqKiIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgKHN3YXBwZWQpICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYW5kcy5cbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcyAnCisgICAgICAgICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICAgICAgICAnICAgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gYW5kIHRoZSBvcGVyYW5kcyBhcmUgJworICAgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgICAnICAgZGlmZmVyZW50IHR5cGVzLiBbMl0gRm9yIGluc3RhbmNlLCB0byBldmFsdWF0ZSB0aGUgJworICAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gInggLVxuJworICAgICAgICAgICAgICAgICAgJyAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAnCisgICAgICAgICAgICAgICAgICAnIl9fcnN1Yl9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kLCAieS5fX3JzdWJfXyh4KSIgaXMgY2FsbGVkIGlmICJ4Ll9fc3ViX18oeSkiICcKKyAgICAgICAgICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICAnICAgKk5vdEltcGxlbWVudGVkKi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgICciX19ycG93X18oKSIgKHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvZXJjaW9uIHJ1bGVzIHdvdWxkIGJlY29tZSB0b28gY29tcGxpY2F0ZWQpLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgIE5vdGU6IElmIHRoZSByaWdodCBvcGVyYW5kJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSAiCisgICAgICAgICAgICAgICAgICAnbGVmdFxuJworICAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlICIKKyAgICAgICAgICAgICAgICAgICdyZWZsZWN0ZWQgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICd0aGUgbGVmdFxuJworICAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIG5vbi1yZWZsZWN0ZWQgbWV0aG9kLiAgVGhpcyBiZWhhdmlvciBhbGxvd3MgIgorICAgICAgICAgICAgICAgICAgJ3N1YmNsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICIvPSIsICIvLz0iLCAiJT0iLCAiKio9IiwgJworICAgICAgICAgICAgICAgICAgJyI8PD0iLFxuJworICAgICAgICAgICAgICAgICAgJyAgICI+Pj0iLCAiJj0iLCAiXj0iLCAifD0iKS4gIFRoZXNlIG1ldGhvZHMgc2hvdWxkIGF0dGVtcHQgJworICAgICAgICAgICAgICAgICAgJ3RvIGRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgJworICAgICAgICAgICAgICAgICAgJ3Jlc3VsdCAod2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhICcKKyAgICAgICAgICAgICAgICAgICdzcGVjaWZpYyBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgICcgICBpcyBub3QgZGVmaW5lZCwgdGhlIGF1Z21lbnRlZCBhc3NpZ25tZW50IGZhbGxzIGJhY2sgdG8gJworICAgICAgICAgICAgICAgICAgJ3RoZSBub3JtYWxcbicKKyAgICAgICAgICAgICAgICAgICcgICBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCB0byBleGVjdXRlIHRoZSBzdGF0ZW1lbnQgInggKz0gJworICAgICAgICAgICAgICAgICAgJ3kiLCB3aGVyZVxuJworICAgICAgICAgICAgICAgICAgJyAgICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICJfX2lhZGRfXygpIiAnCisgICAgICAgICAgICAgICAgICAnbWV0aG9kLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJ4Ll9faWFkZF9fKHkpIiBpcyBjYWxsZWQuICBJZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSAnCisgICAgICAgICAgICAgICAgICAnY2xhc3MgdGhhdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGRvZXMgbm90IGRlZmluZSBhICJfX2lhZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiICcKKyAgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAieS5fX3JhZGRfXyh4KSIgYXJlIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gJworICAgICAgICAgICAgICAgICAgJ29mICJ4ICsgeSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVnX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19wb3NfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Fic19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSB1bmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICAgICAgJygiLSIsICIrIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAiYWJzKCkiIGFuZCAifiIpLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbG9uZ19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiY29tcGxleCgpIiwgJworICAgICAgICAgICAgICAgICAgJyJpbnQoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgImxvbmcoKSIsIGFuZCAiZmxvYXQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHR5cGUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fb2N0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19oZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAib2N0KCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnImhleCgpIi5cbicKKyAgICAgICAgICAgICAgICAgICcgICBTaG91bGQgcmV0dXJuIGEgc3RyaW5nIHZhbHVlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luZGV4X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIi4gIEFsc28gY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgICd3aGVuZXZlclxuJworICAgICAgICAgICAgICAgICAgJyAgIFB5dGhvbiBuZWVkcyBhbiBpbnRlZ2VyIG9iamVjdCAoc3VjaCBhcyBpbiBzbGljaW5nKS4gICcKKyAgICAgICAgICAgICAgICAgICdNdXN0IHJldHVyblxuJworICAgICAgICAgICAgICAgICAgJyAgIGFuIGludGVnZXIgKGludCBvciBsb25nKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAyLjUuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY29lcmNlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAibWl4ZWQtbW9kZSIgbnVtZXJpYyBhcml0aG1ldGljLiAgJworICAgICAgICAgICAgICAgICAgJ1Nob3VsZCBlaXRoZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICByZXR1cm4gYSAyLXR1cGxlIGNvbnRhaW5pbmcgKnNlbGYqIGFuZCAqb3RoZXIqIGNvbnZlcnRlZCAnCisgICAgICAgICAgICAgICAgICAndG8gYVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbW1vbiBudW1lcmljIHR5cGUsIG9yICJOb25lIiBpZiBjb252ZXJzaW9uIGlzICcKKyAgICAgICAgICAgICAgICAgICdpbXBvc3NpYmxlLiAgV2hlblxuJworICAgICAgICAgICAgICAgICAgJyAgIHRoZSBjb21tb24gdHlwZSB3b3VsZCBiZSB0aGUgdHlwZSBvZiAib3RoZXIiLCBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAnc3VmZmljaWVudCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIHJldHVybiAiTm9uZSIsIHNpbmNlIHRoZSBpbnRlcnByZXRlciB3aWxsIGFsc28gYXNrIHRoZSAnCisgICAgICAgICAgICAgICAgICAnb3RoZXIgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgdG8gYXR0ZW1wdCBhIGNvZXJjaW9uIChidXQgc29tZXRpbWVzLCBpZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIG90aGVyIHR5cGUgY2Fubm90IGJlIGNoYW5nZWQsIGl0IGlzIHVzZWZ1bCB0byBkbyB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24gdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGUgb3RoZXIgdHlwZSBoZXJlKS4gIEEgcmV0dXJuIHZhbHVlIG9mICcKKyAgICAgICAgICAgICAgICAgICciTm90SW1wbGVtZW50ZWQiIGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZXF1aXZhbGVudCB0byByZXR1cm5pbmcgIk5vbmUiLlxuJywKKyAnb2JqZWN0cyc6ICdcbicKKyAgICAgICAgICAgICdPYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIipPYmplY3RzKiBhcmUgUHl0aG9uJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhICIKKyAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICdwcm9ncmFtIGlzIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMgb3IgYnkgcmVsYXRpb25zIGJldHdlZW4gJworICAgICAgICAgICAgJ29iamVjdHMuIChJblxuJworICAgICAgICAgICAgJ2Egc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbicKKyAgICAgICAgICAgICdwcm9ncmFtIGNvbXB1dGVyLCIgY29kZSBpcyBhbHNvIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMuKVxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdCdzXG4iCisgICAgICAgICAgICAnKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayAnCisgICAgICAgICAgICAnb2YgaXRcbicKKyAgICAgICAgICAgICdhcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnImlzIlwnIG9wZXJhdG9yICcKKyAgICAgICAgICAgICdjb21wYXJlcyB0aGVcbicKKyAgICAgICAgICAgICdpZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlICJpZCgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbicKKyAgICAgICAgICAgICdyZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5IChjdXJyZW50bHkgaW1wbGVtZW50ZWQgYXMgaXRzIGFkZHJlc3MpLiAnCisgICAgICAgICAgICAnQW5cbicKKyAgICAgICAgICAgICJvYmplY3QncyAqdHlwZSogaXMgYWxzbyB1bmNoYW5nZWFibGUuIFsxXSBBbiBvYmplY3QncyB0eXBlICIKKyAgICAgICAgICAgICdkZXRlcm1pbmVzXG4nCisgICAgICAgICAgICAndGhlIG9wZXJhdGlvbnMgdGhhdCB0aGUgb2JqZWN0IHN1cHBvcnRzIChlLmcuLCAiZG9lcyBpdCBoYXZlIGFcbicKKyAgICAgICAgICAgICdsZW5ndGg/IikgYW5kIGFsc28gZGVmaW5lcyB0aGUgcG9zc2libGUgdmFsdWVzIGZvciBvYmplY3RzIG9mICcKKyAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAndHlwZS4gIFRoZSAidHlwZSgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIG9iamVjdFwncyB0eXBlICh3aGljaCBpcyAnCisgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICdvYmplY3QgaXRzZWxmKS4gIFRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgJworICAgICAgICAgICAgJ09iamVjdHNcbicKKyAgICAgICAgICAgICd3aG9zZSB2YWx1ZSBjYW4gY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSAnCisgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICdpcyB1bmNoYW5nZWFibGUgb25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouICcKKyAgICAgICAgICAgICcoVGhlXG4nCisgICAgICAgICAgICAndmFsdWUgb2YgYW4gaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSAnCisgICAgICAgICAgICAndG8gYVxuJworICAgICAgICAgICAgIm11dGFibGUgb2JqZWN0IGNhbiBjaGFuZ2Ugd2hlbiB0aGUgbGF0dGVyJ3MgdmFsdWUgaXMgY2hhbmdlZDsgIgorICAgICAgICAgICAgJ2hvd2V2ZXJcbicKKyAgICAgICAgICAgICd0aGUgY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSAnCisgICAgICAgICAgICAnY29sbGVjdGlvbiBvZlxuJworICAgICAgICAgICAgJ29iamVjdHMgaXQgY29udGFpbnMgY2Fubm90IGJlIGNoYW5nZWQuICBTbywgaW1tdXRhYmlsaXR5IGlzIG5vdFxuJworICAgICAgICAgICAgJ3N0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgJworICAgICAgICAgICAgJ3N1YnRsZS4pXG4nCisgICAgICAgICAgICAiQW4gb2JqZWN0J3MgbXV0YWJpbGl0eSBpcyBkZXRlcm1pbmVkIGJ5IGl0cyB0eXBlOyBmb3IgaW5zdGFuY2UsXG4iCisgICAgICAgICAgICAnbnVtYmVycywgc3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUsIHdoaWxlIGRpY3Rpb25hcmllcyAnCisgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAnbGlzdHMgYXJlIG11dGFibGUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSAnCisgICAgICAgICAgICAnYmVjb21lXG4nCisgICAgICAgICAgICAndW5yZWFjaGFibGUgdGhleSBtYXkgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQuICBBbiBpbXBsZW1lbnRhdGlvbiBpc1xuJworICAgICAgICAgICAgJ2FsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gJworICAgICAgICAgICAgJ2l0IGlzXG4nCisgICAgICAgICAgICAnYSBtYXR0ZXIgb2YgaW1wbGVtZW50YXRpb24gcXVhbGl0eSBob3cgZ2FyYmFnZSBjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG4nCisgICAgICAgICAgICAncmVhY2hhYmxlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhICcKKyAgICAgICAgICAgICdyZWZlcmVuY2UtXG4nCisgICAgICAgICAgICAnY291bnRpbmcgc2NoZW1lIHdpdGggKG9wdGlvbmFsKSBkZWxheWVkIGRldGVjdGlvbiBvZiBjeWNsaWNhbGx5ICcKKyAgICAgICAgICAgICdsaW5rZWRcbicKKyAgICAgICAgICAgICdnYXJiYWdlLCB3aGljaCBjb2xsZWN0cyBtb3N0IG9iamVjdHMgYXMgc29vbiBhcyB0aGV5IGJlY29tZVxuJworICAgICAgICAgICAgJ3VucmVhY2hhYmxlLCBidXQgaXMgbm90IGd1YXJhbnRlZWQgdG8gY29sbGVjdCBnYXJiYWdlIGNvbnRhaW5pbmdcbicKKyAgICAgICAgICAgICdjaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAiZ2MiIG1vZHVsZSAnCisgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAnaW5mb3JtYXRpb24gb24gY29udHJvbGxpbmcgdGhlIGNvbGxlY3Rpb24gb2YgY3ljbGljIGdhcmJhZ2UuICcKKyAgICAgICAgICAgICdPdGhlclxuJworICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9ucyBhY3QgZGlmZmVyZW50bHkgYW5kIENQeXRob24gbWF5IGNoYW5nZS4gRG8gbm90ICcKKyAgICAgICAgICAgICdkZXBlbmRcbicKKyAgICAgICAgICAgICdvbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAnCisgICAgICAgICAgICAnKGV4OlxuJworICAgICAgICAgICAgJ2Fsd2F5cyBjbG9zZSBmaWxlcykuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiTm90ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlIGltcGxlbWVudGF0aW9uJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbiIKKyAgICAgICAgICAgICdmYWNpbGl0aWVzIG1heSBrZWVwIG9iamVjdHMgYWxpdmUgdGhhdCB3b3VsZCBub3JtYWxseSBiZSAnCisgICAgICAgICAgICAnY29sbGVjdGFibGUuXG4nCisgICAgICAgICAgICAnQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJyJ0cnkiLi4uImV4Y2VwdCJcJ1xuJworICAgICAgICAgICAgJ3N0YXRlbWVudCBtYXkga2VlcCBvYmplY3RzIGFsaXZlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1NvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyAnCisgICAgICAgICAgICAnb3BlblxuJworICAgICAgICAgICAgJ2ZpbGVzIG9yIHdpbmRvd3MuICBJdCBpcyB1bmRlcnN0b29kIHRoYXQgdGhlc2UgcmVzb3VyY2VzIGFyZSAnCisgICAgICAgICAgICAnZnJlZWRcbicKKyAgICAgICAgICAgICd3aGVuIHRoZSBvYmplY3QgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQsIGJ1dCBzaW5jZSBnYXJiYWdlICcKKyAgICAgICAgICAgICdjb2xsZWN0aW9uIGlzXG4nCisgICAgICAgICAgICAnbm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0ICcKKyAgICAgICAgICAgICd3YXkgdG9cbicKKyAgICAgICAgICAgICdyZWxlYXNlIHRoZSBleHRlcm5hbCByZXNvdXJjZSwgdXN1YWxseSBhICJjbG9zZSgpIiBtZXRob2QuICcKKyAgICAgICAgICAgICdQcm9ncmFtc1xuJworICAgICAgICAgICAgJ2FyZSBzdHJvbmdseSByZWNvbW1lbmRlZCB0byBleHBsaWNpdGx5IGNsb3NlIHN1Y2ggb2JqZWN0cy4gIFRoZVxuJworICAgICAgICAgICAgJ1wnInRyeSIuLi4iZmluYWxseSJcJyBzdGF0ZW1lbnQgcHJvdmlkZXMgYSBjb252ZW5pZW50IHdheSB0byBkbyAnCisgICAgICAgICAgICAndGhpcy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdTb21lIG9iamVjdHMgY29udGFpbiByZWZlcmVuY2VzIHRvIG90aGVyIG9iamVjdHM7IHRoZXNlIGFyZSAnCisgICAgICAgICAgICAnY2FsbGVkXG4nCisgICAgICAgICAgICAnKmNvbnRhaW5lcnMqLiBFeGFtcGxlcyBvZiBjb250YWluZXJzIGFyZSB0dXBsZXMsIGxpc3RzIGFuZFxuJworICAgICAgICAgICAgImRpY3Rpb25hcmllcy4gIFRoZSByZWZlcmVuY2VzIGFyZSBwYXJ0IG9mIGEgY29udGFpbmVyJ3MgdmFsdWUuICAiCisgICAgICAgICAgICAnSW5cbicKKyAgICAgICAgICAgICdtb3N0IGNhc2VzLCB3aGVuIHdlIHRhbGsgYWJvdXQgdGhlIHZhbHVlIG9mIGEgY29udGFpbmVyLCB3ZSBpbXBseSAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAndmFsdWVzLCBub3QgdGhlIGlkZW50aXRpZXMgb2YgdGhlIGNvbnRhaW5lZCBvYmplY3RzOyBob3dldmVyLCAnCisgICAgICAgICAgICAnd2hlbiB3ZVxuJworICAgICAgICAgICAgJ3RhbGsgYWJvdXQgdGhlIG11dGFiaWxpdHkgb2YgYSBjb250YWluZXIsIG9ubHkgdGhlIGlkZW50aXRpZXMgb2YgJworICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgJ2ltbWVkaWF0ZWx5IGNvbnRhaW5lZCBvYmplY3RzIGFyZSBpbXBsaWVkLiAgU28sIGlmIGFuIGltbXV0YWJsZVxuJworICAgICAgICAgICAgJ2NvbnRhaW5lciAobGlrZSBhIHR1cGxlKSBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgJworICAgICAgICAgICAgJ29iamVjdCwgaXRzXG4nCisgICAgICAgICAgICAndmFsdWUgY2hhbmdlcyBpZiB0aGF0IG11dGFibGUgb2JqZWN0IGlzIGNoYW5nZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVHlwZXMgYWZmZWN0IGFsbW9zdCBhbGwgYXNwZWN0cyBvZiBvYmplY3QgYmVoYXZpb3IuICBFdmVuIHRoZVxuJworICAgICAgICAgICAgJ2ltcG9ydGFuY2Ugb2Ygb2JqZWN0IGlkZW50aXR5IGlzIGFmZmVjdGVkIGluIHNvbWUgc2Vuc2U6IGZvciAnCisgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAndHlwZXMsIG9wZXJhdGlvbnMgdGhhdCBjb21wdXRlIG5ldyB2YWx1ZXMgbWF5IGFjdHVhbGx5IHJldHVybiBhXG4nCisgICAgICAgICAgICAncmVmZXJlbmNlIHRvIGFueSBleGlzdGluZyBvYmplY3Qgd2l0aCB0aGUgc2FtZSB0eXBlIGFuZCB2YWx1ZSwgJworICAgICAgICAgICAgJ3doaWxlXG4nCisgICAgICAgICAgICAnZm9yIG11dGFibGUgb2JqZWN0cyB0aGlzIGlzIG5vdCBhbGxvd2VkLiAgRS5nLiwgYWZ0ZXIgImEgPSAxOyBiID0gJworICAgICAgICAgICAgJzEiLFxuJworICAgICAgICAgICAgJyJhIiBhbmQgImIiIG1heSBvciBtYXkgbm90IHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdCB3aXRoIHRoZSAnCisgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICdvbmUsIGRlcGVuZGluZyBvbiB0aGUgaW1wbGVtZW50YXRpb24sIGJ1dCBhZnRlciAiYyA9IFtdOyBkID0gW10iLCAnCisgICAgICAgICAgICAnImMiXG4nCisgICAgICAgICAgICAnYW5kICJkIiBhcmUgZ3VhcmFudGVlZCB0byByZWZlciB0byB0d28gZGlmZmVyZW50LCB1bmlxdWUsIG5ld2x5XG4nCisgICAgICAgICAgICAnY3JlYXRlZCBlbXB0eSBsaXN0cy4gKE5vdGUgdGhhdCAiYyA9IGQgPSBbXSIgYXNzaWducyB0aGUgc2FtZSAnCisgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAndG8gYm90aCAiYyIgYW5kICJkIi4pXG4nLAorICdvcGVyYXRvci1zdW1tYXJ5JzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ09wZXJhdG9yIHByZWNlZGVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyB0YWJsZSBzdW1tYXJpemVzIHRoZSBvcGVyYXRvciBwcmVjZWRlbmNlcyAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gUHl0aG9uLFxuJworICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gbG93ZXN0IHByZWNlZGVuY2UgKGxlYXN0IGJpbmRpbmcpIHRvIGhpZ2hlc3QgJworICAgICAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UgKG1vc3RcbicKKyAgICAgICAgICAgICAgICAgICAgICdiaW5kaW5nKS4gT3BlcmF0b3JzIGluIHRoZSBzYW1lIGJveCBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAgICAgICdwcmVjZWRlbmNlLiAgVW5sZXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIHN5bnRheCBpcyBleHBsaWNpdGx5IGdpdmVuLCBvcGVyYXRvcnMgYXJlIGJpbmFyeS4gICcKKyAgICAgICAgICAgICAgICAgICAgICdPcGVyYXRvcnMgaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvbnMsIGluY2x1ZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzLCB3aGljaCBhbGwgaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBjaGFpbiBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAgICdsZWZ0IHRvIHJpZ2h0XG4nCisgICAgICAgICAgICAgICAgICAgICAnLS0tIHNlZSBzZWN0aW9uIENvbXBhcmlzb25zIC0tLSBhbmQgZXhwb25lbnRpYXRpb24sICcKKyAgICAgICAgICAgICAgICAgICAgICd3aGljaCBncm91cHMgZnJvbVxuJworICAgICAgICAgICAgICAgICAgICAgJ3JpZ2h0IHRvIGxlZnQpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IE9wZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0Rlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJsYW1iZGEiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0xhbWJkYSBleHByZXNzaW9uICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJpZiIgLS0gImVsc2UiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0NvbmRpdGlvbmFsIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJvciIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0Jvb2xlYW4gT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJhbmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0Jvb2xlYW4gQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJub3QiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0Jvb2xlYW4gTk9UICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJpbiIsICJub3QgaW4iLCAiaXMiLCAiaXMgbm90IiwgIjwiLCAiPD0iLCAiPiIsIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0NvbXBhcmlzb25zLCBpbmNsdWRpbmcgbWVtYmVyc2hpcCAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIj49IiwgIjw+IiwgIiE9IiwgIj09IiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAndGVzdHMgYW5kIGlkZW50aXR5IHRlc3RzICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInwiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQml0d2lzZSBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIl4iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQml0d2lzZSBYT1IgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIiYiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQml0d2lzZSBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIjw8IiwgIj4+IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnU2hpZnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIisiLCAiLSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIioiLCAiLyIsICIvLyIsICIlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnTXVsdGlwbGljYXRpb24sIGRpdmlzaW9uLCByZW1haW5kZXIgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdbN10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiK3giLCAiLXgiLCAifngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdQb3NpdGl2ZSwgbmVnYXRpdmUsIGJpdHdpc2UgTk9UICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKioiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdFeHBvbmVudGlhdGlvbiBbOF0gICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAieFtpbmRleF0iLCAieFtpbmRleDppbmRleF0iLCAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdTdWJzY3JpcHRpb24sIHNsaWNpbmcsIGNhbGwsICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJ4KGFyZ3VtZW50cy4uLikiLCAieC5hdHRyaWJ1dGUiICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSByZWZlcmVuY2UgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIoZXhwcmVzc2lvbnMuLi4pIiwgIltleHByZXNzaW9ucy4uLl0iLCAie2tleTogIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpbmRpbmcgb3IgdHVwbGUgZGlzcGxheSwgbGlzdCAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgdmFsdWUuLi59IiwgImBleHByZXNzaW9ucy4uLmAiICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSwgZGljdGlvbmFyeSBkaXNwbGF5LCBzdHJpbmcgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzFdIEluIFB5dGhvbiAyLjMgYW5kIGxhdGVyIHJlbGVhc2VzLCBhIGxpc3QgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbXByZWhlbnNpb24gImxlYWtzIlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB0aGUgY29udHJvbCB2YXJpYWJsZXMgb2YgZWFjaCAiZm9yIiBpdCBjb250YWlucyBpbnRvICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgY29udGFpbmluZyBzY29wZS4gIEhvd2V2ZXIsIHRoaXMgYmVoYXZpb3IgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2RlcHJlY2F0ZWQsIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICByZWx5aW5nIG9uIGl0IHdpbGwgbm90IHdvcmsgaW4gUHl0aG9uIDMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzJdIFdoaWxlICJhYnMoeCV5KSA8IGFicyh5KSIgaXMgdHJ1ZSBtYXRoZW1hdGljYWxseSwgJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciBmbG9hdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaXQgbWF5IG5vdCBiZSB0cnVlIG51bWVyaWNhbGx5IGR1ZSB0byByb3VuZG9mZi4gIEZvciAnCisgICAgICAgICAgICAgICAgICAgICAnZXhhbXBsZSwgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGFzc3VtaW5nIGEgcGxhdGZvcm0gb24gd2hpY2ggYSBQeXRob24gZmxvYXQgaXMgYW4gJworICAgICAgICAgICAgICAgICAgICAgJ0lFRUUgNzU0IGRvdWJsZS1cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcHJlY2lzaW9uIG51bWJlciwgaW4gb3JkZXIgdGhhdCAiLTFlLTEwMCAlIDFlMTAwIiAnCisgICAgICAgICAgICAgICAgICAgICAnaGF2ZSB0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBzaWduIGFzICIxZTEwMCIsIHRoZSBjb21wdXRlZCByZXN1bHQgaXMgIi0xZS0xMDAgKyAnCisgICAgICAgICAgICAgICAgICAgICAnMWUxMDAiLCB3aGljaFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpcyBudW1lcmljYWxseSBleGFjdGx5IGVxdWFsIHRvICIxZTEwMCIuICBUaGUgJworICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICJtYXRoLmZtb2QoKSIgcmV0dXJucyBhIHJlc3VsdCB3aG9zZSBzaWduIG1hdGNoZXMgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzaWduIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBmaXJzdCBhcmd1bWVudCBpbnN0ZWFkLCBhbmQgc28gcmV0dXJucyAiLTFlLTEwMCIgaW4gJworICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgY2FzZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgV2hpY2ggYXBwcm9hY2ggaXMgbW9yZSBhcHByb3ByaWF0ZSBkZXBlbmRzIG9uIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXBwbGljYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzNdIElmIHggaXMgdmVyeSBjbG9zZSB0byBhbiBleGFjdCBpbnRlZ2VyIG11bHRpcGxlIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICJ5LCBpdCdzXG4iCisgICAgICAgICAgICAgICAgICAgICAnICAgIHBvc3NpYmxlIGZvciAiZmxvb3IoeC95KSIgdG8gYmUgb25lIGxhcmdlciB0aGFuICcKKyAgICAgICAgICAgICAgICAgICAgICciKHgteCV5KS95IiBkdWUgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcm91bmRpbmcuICBJbiBzdWNoIGNhc2VzLCBQeXRob24gcmV0dXJucyB0aGUgbGF0dGVyICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXN1bHQsIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgImRpdm1vZCh4LHkpWzBdICogeSArIHggJSB5IiAnCisgICAgICAgICAgICAgICAgICAgICAnYmUgdmVyeSBjbG9zZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB0byAieCIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzRdIFRoZSBVbmljb2RlIHN0YW5kYXJkIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiAqY29kZSAnCisgICAgICAgICAgICAgICAgICAgICAncG9pbnRzKiAoZS5nLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBVKzAwNDEpIGFuZCAqYWJzdHJhY3QgY2hhcmFjdGVycyogKGUuZy4gIkxBVElOICcKKyAgICAgICAgICAgICAgICAgICAgICdDQVBJVEFMIExFVFRFUiBBIikuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFdoaWxlIG1vc3QgYWJzdHJhY3QgY2hhcmFjdGVycyBpbiBVbmljb2RlIGFyZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXByZXNlbnRlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB1c2luZyBvbmUgY29kZSBwb2ludCwgdGhlcmUgaXMgYSBudW1iZXIgb2YgYWJzdHJhY3QgJworICAgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgdGhhdCBjYW4gaW4gYWRkaXRpb24gYmUgcmVwcmVzZW50ZWQgdXNpbmcgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgbW9yZSB0aGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIG9uZSBjb2RlIHBvaW50LiAgRm9yIGV4YW1wbGUsIHRoZSBhYnN0cmFjdCBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICAgJyJMQVRJTlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBDQVBJVEFMIExFVFRFUiBDIFdJVEggQ0VESUxMQSIgY2FuIGJlIHJlcHJlc2VudGVkIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICdhIHNpbmdsZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAqcHJlY29tcG9zZWQgY2hhcmFjdGVyKiBhdCBjb2RlIHBvc2l0aW9uIFUrMDBDNywgb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2FzIGEgc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb2YgYSAqYmFzZSBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMDQzIChMQVRJTiAnCisgICAgICAgICAgICAgICAgICAgICAnQ0FQSVRBTFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBMRVRURVIgQyksIGZvbGxvd2VkIGJ5IGEgKmNvbWJpbmluZyBjaGFyYWN0ZXIqIGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb2RlIHBvc2l0aW9uXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFUrMDMyNyAoQ09NQklOSU5HIENFRElMTEEpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBUaGUgY29tcGFyaXNvbiBvcGVyYXRvcnMgb24gdW5pY29kZSBzdHJpbmdzIGNvbXBhcmUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0IHRoZSBsZXZlbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBvZiBVbmljb2RlIGNvZGUgcG9pbnRzLiBUaGlzIG1heSBiZSAnCisgICAgICAgICAgICAgICAgICAgICAnY291bnRlci1pbnR1aXRpdmUgdG8gaHVtYW5zLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBGb3IgZXhhbXBsZSwgInUiXFx1MDBDNyIgPT0gdSJcXHUwMDQzXFx1MDMyNyIiIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICciRmFsc2UiLCBldmVuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHRob3VnaCBib3RoIHN0cmluZ3MgcmVwcmVzZW50IHRoZSBzYW1lIGFic3RyYWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgIkxBVElOXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVG8gY29tcGFyZSBzdHJpbmdzIGF0IHRoZSBsZXZlbCBvZiBhYnN0cmFjdCAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyAodGhhdCBpcyxcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaW4gYSB3YXkgaW50dWl0aXZlIHRvIGh1bWFucyksIHVzZSAnCisgICAgICAgICAgICAgICAgICAgICAnInVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbNV0gRWFybGllciB2ZXJzaW9ucyBvZiBQeXRob24gdXNlZCBsZXhpY29ncmFwaGljICcKKyAgICAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHRoZSBzb3J0ZWQgKGtleSwgdmFsdWUpIGxpc3RzLCBidXQgdGhpcyB3YXMgdmVyeSAnCisgICAgICAgICAgICAgICAgICAgICAnZXhwZW5zaXZlIGZvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgY29tbW9uIGNhc2Ugb2YgY29tcGFyaW5nIGZvciBlcXVhbGl0eS4gIEFuIGV2ZW4gJworICAgICAgICAgICAgICAgICAgICAgJ2VhcmxpZXIgdmVyc2lvbiBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBQeXRob24gY29tcGFyZWQgZGljdGlvbmFyaWVzIGJ5IGlkZW50aXR5IG9ubHksIGJ1dCAnCisgICAgICAgICAgICAgICAgICAgICAndGhpcyBjYXVzZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgc3VycHJpc2VzIGJlY2F1c2UgcGVvcGxlIGV4cGVjdGVkIHRvIGJlIGFibGUgdG8gdGVzdCAnCisgICAgICAgICAgICAgICAgICAgICAnYSBkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGZvciBlbXB0aW5lc3MgYnkgY29tcGFyaW5nIGl0IHRvICJ7fSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzZdIER1ZSB0byBhdXRvbWF0aWMgZ2FyYmFnZS1jb2xsZWN0aW9uLCBmcmVlIGxpc3RzLCBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBkeW5hbWljIG5hdHVyZSBvZiBkZXNjcmlwdG9ycywgeW91IG1heSBub3RpY2UgJworICAgICAgICAgICAgICAgICAgICAgJ3NlZW1pbmdseSB1bnVzdWFsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGJlaGF2aW91ciBpbiBjZXJ0YWluIHVzZXMgb2YgdGhlICJpcyIgb3BlcmF0b3IsIGxpa2UgJworICAgICAgICAgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGludm9sdmluZyBjb21wYXJpc29ucyBiZXR3ZWVuIGluc3RhbmNlIG1ldGhvZHMsIG9yICcKKyAgICAgICAgICAgICAgICAgICAgICdjb25zdGFudHMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIENoZWNrIHRoZWlyIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mby5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbN10gVGhlICIlIiBvcGVyYXRvciBpcyBhbHNvIHVzZWQgZm9yIHN0cmluZyBmb3JtYXR0aW5nOyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcHJlY2VkZW5jZSBhcHBsaWVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1s4XSBUaGUgcG93ZXIgb3BlcmF0b3IgIioqIiBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBvciBiaXR3aXNlIHVuYXJ5IG9wZXJhdG9yIG9uIGl0cyByaWdodCwgdGhhdCBpcywgJworICAgICAgICAgICAgICAgICAgICAgJyIyKiotMSIgaXMgIjAuNSIuXG4nLAorICdwYXNzJzogJ1xuJworICAgICAgICAgJ1RoZSAicGFzcyIgc3RhdGVtZW50XG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBwYXNzX3N0bXQgOjo9ICJwYXNzIlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyJwYXNzIiBpcyBhIG51bGwgb3BlcmF0aW9uIC0tLSB3aGVuIGl0IGlzIGV4ZWN1dGVkLCBub3RoaW5nICcKKyAgICAgICAgICdoYXBwZW5zLlxuJworICAgICAgICAgJ0l0IGlzIHVzZWZ1bCBhcyBhIHBsYWNlaG9sZGVyIHdoZW4gYSBzdGF0ZW1lbnQgaXMgcmVxdWlyZWRcbicKKyAgICAgICAgICdzeW50YWN0aWNhbGx5LCBidXQgbm8gY29kZSBuZWVkcyB0byBiZSBleGVjdXRlZCwgZm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgZGVmIGYoYXJnKTogcGFzcyAgICAjIGEgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdGhpbmcgKHlldClcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBjbGFzcyBDOiBwYXNzICAgICAgICMgYSBjbGFzcyB3aXRoIG5vIG1ldGhvZHMgKHlldClcbicsCisgJ3Bvd2VyJzogJ1xuJworICAgICAgICAgICdUaGUgcG93ZXIgb3BlcmF0b3JcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgcG93ZXIgb3BlcmF0b3IgYmluZHMgbW9yZSB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0c1xuJworICAgICAgICAgICdsZWZ0OyBpdCBiaW5kcyBsZXNzIHRpZ2h0bHkgdGhhbiB1bmFyeSBvcGVyYXRvcnMgb24gaXRzIHJpZ2h0LiAgJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnc3ludGF4IGlzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcG93ZXIgOjo9IHByaW1hcnkgWyIqKiIgdV9leHByXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGh1cywgaW4gYW4gdW5wYXJlbnRoZXNpemVkIHNlcXVlbmNlIG9mIHBvd2VyIGFuZCB1bmFyeSBvcGVyYXRvcnMsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ29wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCAnCisgICAgICAgICAgJ2NvbnN0cmFpblxuJworICAgICAgICAgICd0aGUgZXZhbHVhdGlvbiBvcmRlciBmb3IgdGhlIG9wZXJhbmRzKTogIi0xKioyIiByZXN1bHRzIGluICItMSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gInBvdygpIlxuJworICAgICAgICAgICdmdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgJworICAgICAgICAgICdhcmd1bWVudFxuJworICAgICAgICAgICdyYWlzZWQgdG8gdGhlIHBvd2VyIG9mIGl0cyByaWdodCBhcmd1bWVudC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdmaXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIFRoZSByZXN1bHQgdHlwZSBpcyB0aGF0IG9mIHRoZVxuJworICAgICAgICAgICdhcmd1bWVudHMgYWZ0ZXIgY29lcmNpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdXaXRoIG1peGVkIG9wZXJhbmQgdHlwZXMsIHRoZSBjb2VyY2lvbiBydWxlcyBmb3IgYmluYXJ5IGFyaXRobWV0aWNcbicKKyAgICAgICAgICAnb3BlcmF0b3JzIGFwcGx5LiBGb3IgaW50IGFuZCBsb25nIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlXG4nCisgICAgICAgICAgJ3NhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgKGFmdGVyIGNvZXJjaW9uKSB1bmxlc3MgdGhlIHNlY29uZCAnCisgICAgICAgICAgJ2FyZ3VtZW50XG4nCisgICAgICAgICAgJ2lzIG5lZ2F0aXZlOyBpbiB0aGF0IGNhc2UsIGFsbCBhcmd1bWVudHMgYXJlIGNvbnZlcnRlZCB0byBmbG9hdCBhbmQgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJ2Zsb2F0IHJlc3VsdCBpcyBkZWxpdmVyZWQuIEZvciBleGFtcGxlLCAiMTAqKjIiIHJldHVybnMgIjEwMCIsIGJ1dFxuJworICAgICAgICAgICciMTAqKi0yIiByZXR1cm5zICIwLjAxIi4gKFRoaXMgbGFzdCBmZWF0dXJlIHdhcyBhZGRlZCBpbiBQeXRob24gJworICAgICAgICAgICcyLjIuXG4nCisgICAgICAgICAgJ0luIFB5dGhvbiAyLjEgYW5kIGJlZm9yZSwgaWYgYm90aCBhcmd1bWVudHMgd2VyZSBvZiBpbnRlZ2VyIHR5cGVzICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJ3RoZSBzZWNvbmQgYXJndW1lbnQgd2FzIG5lZ2F0aXZlLCBhbiBleGNlcHRpb24gd2FzIHJhaXNlZCkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdSYWlzaW5nICIwLjAiIHRvIGEgbmVnYXRpdmUgcG93ZXIgcmVzdWx0cyBpbiBhICcKKyAgICAgICAgICAnIlplcm9EaXZpc2lvbkVycm9yIi5cbicKKyAgICAgICAgICAnUmFpc2luZyBhIG5lZ2F0aXZlIG51bWJlciB0byBhIGZyYWN0aW9uYWwgcG93ZXIgcmVzdWx0cyBpbiBhXG4nCisgICAgICAgICAgJyJWYWx1ZUVycm9yIi5cbicsCisgJ3ByaW50JzogJ1xuJworICAgICAgICAgICdUaGUgInByaW50IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBwcmludF9zdG10IDo6PSAicHJpbnQiIChbZXhwcmVzc2lvbiAoIiwiIGV4cHJlc3Npb24pKiBbIiwiXV1cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgfCAiPj4iIGV4cHJlc3Npb24gWygiLCIgZXhwcmVzc2lvbikrIFsiLCJdXSlcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyJwcmludCIgZXZhbHVhdGVzIGVhY2ggZXhwcmVzc2lvbiBpbiB0dXJuIGFuZCB3cml0ZXMgdGhlIHJlc3VsdGluZ1xuJworICAgICAgICAgICdvYmplY3QgdG8gc3RhbmRhcmQgb3V0cHV0IChzZWUgYmVsb3cpLiAgSWYgYW4gb2JqZWN0IGlzIG5vdCBhICcKKyAgICAgICAgICAnc3RyaW5nLFxuJworICAgICAgICAgICdpdCBpcyBmaXJzdCBjb252ZXJ0ZWQgdG8gYSBzdHJpbmcgdXNpbmcgdGhlIHJ1bGVzIGZvciBzdHJpbmdcbicKKyAgICAgICAgICAnY29udmVyc2lvbnMuICBUaGUgKHJlc3VsdGluZyBvciBvcmlnaW5hbCkgc3RyaW5nIGlzIHRoZW4gd3JpdHRlbi4gICcKKyAgICAgICAgICAnQVxuJworICAgICAgICAgICdzcGFjZSBpcyB3cml0dGVuIGJlZm9yZSBlYWNoIG9iamVjdCBpcyAoY29udmVydGVkIGFuZCkgd3JpdHRlbiwgJworICAgICAgICAgICd1bmxlc3NcbicKKyAgICAgICAgICAndGhlIG91dHB1dCBzeXN0ZW0gYmVsaWV2ZXMgaXQgaXMgcG9zaXRpb25lZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFcbicKKyAgICAgICAgICAnbGluZS4gIFRoaXMgaXMgdGhlIGNhc2UgKDEpIHdoZW4gbm8gY2hhcmFjdGVycyBoYXZlIHlldCBiZWVuICcKKyAgICAgICAgICAnd3JpdHRlblxuJworICAgICAgICAgICd0byBzdGFuZGFyZCBvdXRwdXQsICgyKSB3aGVuIHRoZSBsYXN0IGNoYXJhY3RlciB3cml0dGVuIHRvICcKKyAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAnb3V0cHV0IGlzIGEgd2hpdGVzcGFjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcJyBcJyIsIG9yICgzKSB3aGVuIHRoZSAnCisgICAgICAgICAgJ2xhc3RcbicKKyAgICAgICAgICAnd3JpdGUgb3BlcmF0aW9uIG9uIHN0YW5kYXJkIG91dHB1dCB3YXMgbm90IGEgInByaW50IiBzdGF0ZW1lbnQuICcKKyAgICAgICAgICAnKEluXG4nCisgICAgICAgICAgJ3NvbWUgY2FzZXMgaXQgbWF5IGJlIGZ1bmN0aW9uYWwgdG8gd3JpdGUgYW4gZW1wdHkgc3RyaW5nIHRvICcKKyAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAnb3V0cHV0IGZvciB0aGlzIHJlYXNvbi4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdOb3RlOiBPYmplY3RzIHdoaWNoIGFjdCBsaWtlIGZpbGUgb2JqZWN0cyBidXQgd2hpY2ggYXJlIG5vdCB0aGVcbicKKyAgICAgICAgICAnICBidWlsdC1pbiBmaWxlIG9iamVjdHMgb2Z0ZW4gZG8gbm90IHByb3Blcmx5IGVtdWxhdGUgdGhpcyBhc3BlY3QgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICIgIHRoZSBmaWxlIG9iamVjdCdzIGJlaGF2aW9yLCBzbyBpdCBpcyBiZXN0IG5vdCB0byByZWx5IG9uIHRoaXMuXG4iCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBICJcJ1xcblwnIiBjaGFyYWN0ZXIgaXMgd3JpdHRlbiBhdCB0aGUgZW5kLCB1bmxlc3MgdGhlICJwcmludCIgJworICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnZW5kcyB3aXRoIGEgY29tbWEuICBUaGlzIGlzIHRoZSBvbmx5IGFjdGlvbiBpZiB0aGUgc3RhdGVtZW50ICcKKyAgICAgICAgICAnY29udGFpbnNcbicKKyAgICAgICAgICAnanVzdCB0aGUga2V5d29yZCAicHJpbnQiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU3RhbmRhcmQgb3V0cHV0IGlzIGRlZmluZWQgYXMgdGhlIGZpbGUgb2JqZWN0IG5hbWVkICJzdGRvdXQiIGluICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2J1aWx0LWluIG1vZHVsZSAic3lzIi4gIElmIG5vIHN1Y2ggb2JqZWN0IGV4aXN0cywgb3IgaWYgaXQgZG9lcyAnCisgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICdoYXZlIGEgIndyaXRlKCkiIG1ldGhvZCwgYSAiUnVudGltZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnInByaW50IiBhbHNvIGhhcyBhbiBleHRlbmRlZCBmb3JtLCBkZWZpbmVkIGJ5IHRoZSBzZWNvbmQgcG9ydGlvbiAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJ3RoZSBzeW50YXggZGVzY3JpYmVkIGFib3ZlLiBUaGlzIGZvcm0gaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzXG4nCisgICAgICAgICAgJyIicHJpbnQiIGNoZXZyb24uIiBJbiB0aGlzIGZvcm0sIHRoZSBmaXJzdCBleHByZXNzaW9uIGFmdGVyIHRoZSAnCisgICAgICAgICAgJyI+PiJcbicKKyAgICAgICAgICAnbXVzdCBldmFsdWF0ZSB0byBhICJmaWxlLWxpa2UiIG9iamVjdCwgc3BlY2lmaWNhbGx5IGFuIG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAnaGFzXG4nCisgICAgICAgICAgJ2EgIndyaXRlKCkiIG1ldGhvZCBhcyBkZXNjcmliZWQgYWJvdmUuICBXaXRoIHRoaXMgZXh0ZW5kZWQgZm9ybSwgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnc3Vic2VxdWVudCBleHByZXNzaW9ucyBhcmUgcHJpbnRlZCB0byB0aGlzIGZpbGUgb2JqZWN0LiAgSWYgdGhlICcKKyAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAnZXhwcmVzc2lvbiBldmFsdWF0ZXMgdG8gIk5vbmUiLCB0aGVuICJzeXMuc3Rkb3V0IiBpcyB1c2VkIGFzIHRoZSAnCisgICAgICAgICAgJ2ZpbGVcbicKKyAgICAgICAgICAnZm9yIG91dHB1dC5cbicsCisgJ3JhaXNlJzogJ1xuJworICAgICAgICAgICdUaGUgInJhaXNlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICByYWlzZV9zdG10IDo6PSAicmFpc2UiIFtleHByZXNzaW9uIFsiLCIgZXhwcmVzc2lvbiBbIiwiICcKKyAgICAgICAgICAnZXhwcmVzc2lvbl1dXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgbm8gZXhwcmVzc2lvbnMgYXJlIHByZXNlbnQsICJyYWlzZSIgcmUtcmFpc2VzIHRoZSBsYXN0ICcKKyAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ3RoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkIGluZGljYXRpbmcgJworICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgJ3RoaXMgaXMgYW4gZXJyb3IgKGlmIHJ1bm5pbmcgdW5kZXIgSURMRSwgYSAiUXVldWUuRW1wdHkiIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJ3JhaXNlZCBpbnN0ZWFkKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ090aGVyd2lzZSwgInJhaXNlIiBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb25zIHRvIGdldCB0aHJlZSBvYmplY3RzLFxuJworICAgICAgICAgICd1c2luZyAiTm9uZSIgYXMgdGhlIHZhbHVlIG9mIG9taXR0ZWQgZXhwcmVzc2lvbnMuICBUaGUgZmlyc3QgdHdvXG4nCisgICAgICAgICAgJ29iamVjdHMgYXJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSAqdHlwZSogYW5kICp2YWx1ZSogb2YgdGhlICcKKyAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgdGhlIGZpcnN0IG9iamVjdCBpcyBhbiBpbnN0YW5jZSwgdGhlIHR5cGUgb2YgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdjbGFzcyBvZiB0aGUgaW5zdGFuY2UsIHRoZSBpbnN0YW5jZSBpdHNlbGYgaXMgdGhlIHZhbHVlLCBhbmQgdGhlXG4nCisgICAgICAgICAgJ3NlY29uZCBvYmplY3QgbXVzdCBiZSAiTm9uZSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGUgZmlyc3Qgb2JqZWN0IGlzIGEgY2xhc3MsIGl0IGJlY29tZXMgdGhlIHR5cGUgb2YgdGhlICcKKyAgICAgICAgICAnZXhjZXB0aW9uLlxuJworICAgICAgICAgICdUaGUgc2Vjb25kIG9iamVjdCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgZXhjZXB0aW9uIHZhbHVlOiBJZiBpdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJ2FuIGluc3RhbmNlIG9mIHRoZSBjbGFzcywgdGhlIGluc3RhbmNlIGJlY29tZXMgdGhlIGV4Y2VwdGlvbiB2YWx1ZS4gJworICAgICAgICAgICdJZlxuJworICAgICAgICAgICd0aGUgc2Vjb25kIG9iamVjdCBpcyBhIHR1cGxlLCBpdCBpcyB1c2VkIGFzIHRoZSBhcmd1bWVudCBsaXN0IGZvciAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdjbGFzcyBjb25zdHJ1Y3RvcjsgaWYgaXQgaXMgIk5vbmUiLCBhbiBlbXB0eSBhcmd1bWVudCBsaXN0IGlzICcKKyAgICAgICAgICAndXNlZCxcbicKKyAgICAgICAgICAnYW5kIGFueSBvdGhlciBvYmplY3QgaXMgdHJlYXRlZCBhcyBhIHNpbmdsZSBhcmd1bWVudCB0byB0aGVcbicKKyAgICAgICAgICAnY29uc3RydWN0b3IuICBUaGUgaW5zdGFuY2Ugc28gY3JlYXRlZCBieSBjYWxsaW5nIHRoZSBjb25zdHJ1Y3RvciAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJ3VzZWQgYXMgdGhlIGV4Y2VwdGlvbiB2YWx1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGEgdGhpcmQgb2JqZWN0IGlzIHByZXNlbnQgYW5kIG5vdCAiTm9uZSIsIGl0IG11c3QgYmUgYSAnCisgICAgICAgICAgJ3RyYWNlYmFja1xuJworICAgICAgICAgICdvYmplY3QgKHNlZSBzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSksIGFuZCBpdCBpc1xuJworICAgICAgICAgICdzdWJzdGl0dXRlZCBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IGxvY2F0aW9uIGFzIHRoZSBwbGFjZSB3aGVyZSB0aGVcbicKKyAgICAgICAgICAnZXhjZXB0aW9uIG9jY3VycmVkLiAgSWYgdGhlIHRoaXJkIG9iamVjdCBpcyBwcmVzZW50IGFuZCBub3QgYVxuJworICAgICAgICAgICd0cmFjZWJhY2sgb2JqZWN0IG9yICJOb25lIiwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiAgJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAndGhyZWUtZXhwcmVzc2lvbiBmb3JtIG9mICJyYWlzZSIgaXMgdXNlZnVsIHRvIHJlLXJhaXNlIGFuICcKKyAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ3RyYW5zcGFyZW50bHkgaW4gYW4gZXhjZXB0IGNsYXVzZSwgYnV0ICJyYWlzZSIgd2l0aCBubyBleHByZXNzaW9uc1xuJworICAgICAgICAgICdzaG91bGQgYmUgcHJlZmVycmVkIGlmIHRoZSBleGNlcHRpb24gdG8gYmUgcmUtcmFpc2VkIHdhcyB0aGUgbW9zdFxuJworICAgICAgICAgICdyZWNlbnRseSBhY3RpdmUgZXhjZXB0aW9uIGluIHRoZSBjdXJyZW50IHNjb3BlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4nCisgICAgICAgICAgJ0V4Y2VwdGlvbnMsIGFuZCBpbmZvcm1hdGlvbiBhYm91dCBoYW5kbGluZyBleGNlcHRpb25zIGlzIGluICcKKyAgICAgICAgICAnc2VjdGlvblxuJworICAgICAgICAgICdUaGUgdHJ5IHN0YXRlbWVudC5cbicsCisgJ3JldHVybic6ICdcbicKKyAgICAgICAgICAgJ1RoZSAicmV0dXJuIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJyZXR1cm4iIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb24gJworICAgICAgICAgICAnZGVmaW5pdGlvbixcbicKKyAgICAgICAgICAgJ25vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSAiTm9uZSIgaXNcbicKKyAgICAgICAgICAgJ3N1YnN0aXR1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcicmV0dXJuIiBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3QgJworICAgICAgICAgICAnKG9yXG4nCisgICAgICAgICAgICciTm9uZSIpIGFzIHJldHVybiB2YWx1ZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiAicmV0dXJuIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICcKKyAgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICAnY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0luIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgInJldHVybiIgc3RhdGVtZW50IGlzIG5vdCBhbGxvd2VkIHRvXG4nCisgICAgICAgICAgICdpbmNsdWRlIGFuICJleHByZXNzaW9uX2xpc3QiLiAgSW4gdGhhdCBjb250ZXh0LCBhIGJhcmUgInJldHVybiJcbicKKyAgICAgICAgICAgJ2luZGljYXRlcyB0aGF0IHRoZSBnZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSAnCisgICAgICAgICAgICciU3RvcEl0ZXJhdGlvbiIgdG9cbicKKyAgICAgICAgICAgJ2JlIHJhaXNlZC5cbicsCisgJ3NlcXVlbmNlLXR5cGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICdjb250YWluZXIgb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICAnQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSAnCisgICAgICAgICAgICAgICAgICAgJ29yIG1hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgJyhsaWtlIGRpY3Rpb25hcmllcyksIGJ1dCBjYW4gcmVwcmVzZW50IG90aGVyIGNvbnRhaW5lcnMgYXMgJworICAgICAgICAgICAgICAgICAgICd3ZWxsLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ2ZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgJ29yIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJ2VtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICdhbGxvd2FibGUga2V5cyBzaG91bGQgYmUgdGhlIGludGVnZXJzICprKiBmb3Igd2hpY2ggIjAgPD0gJworICAgICAgICAgICAgICAgICAgICdrIDwgTiIgd2hlcmVcbicKKyAgICAgICAgICAgICAgICAgICAnKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaCAnCisgICAgICAgICAgICAgICAgICAgJ2RlZmluZSBhXG4nCisgICAgICAgICAgICAgICAgICAgJ3JhbmdlIG9mIGl0ZW1zLiAoRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGUgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgJyJfX2dldHNsaWNlX18oKSIgKHNlZSBiZWxvdykgY2FuIGFsc28gYmUgZGVmaW5lZCB0byBoYW5kbGUgJworICAgICAgICAgICAgICAgICAgICdzaW1wbGUsIGJ1dFxuJworICAgICAgICAgICAgICAgICAgICdub3QgZXh0ZW5kZWQgc2xpY2VzLikgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnbWV0aG9kcyAia2V5cygpIiwgInZhbHVlcygpIiwgIml0ZW1zKCkiLCAiaGFzX2tleSgpIiwgJworICAgICAgICAgICAgICAgICAgICciZ2V0KCkiLFxuJworICAgICAgICAgICAgICAgICAgICciY2xlYXIoKSIsICJzZXRkZWZhdWx0KCkiLCAiaXRlcmtleXMoKSIsICJpdGVydmFsdWVzKCkiLFxuJworICAgICAgICAgICAgICAgICAgICciaXRlcml0ZW1zKCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJyJ1cGRhdGUoKSIgYmVoYXZpbmdcbicKKyAgICAgICAgICAgICAgICAgICAic2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnIlVzZXJEaWN0IiBtb2R1bGUgcHJvdmlkZXMgYSAiRGljdE1peGluIiBjbGFzcyB0byBoZWxwICcKKyAgICAgICAgICAgICAgICAgICAnY3JlYXRlIHRob3NlXG4nCisgICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgZnJvbSBhIGJhc2Ugc2V0IG9mICJfX2dldGl0ZW1fXygpIiwgJworICAgICAgICAgICAgICAgICAgICciX19zZXRpdGVtX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlXG4nCisgICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICJleHRlbmQoKSIsICcKKyAgICAgICAgICAgICAgICAgICAnImluc2VydCgpIixcbicKKyAgICAgICAgICAgICAgICAgICAnInBvcCgpIiwgInJlbW92ZSgpIiwgInJldmVyc2UoKSIgYW5kICJzb3J0KCkiLCBsaWtlIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgICAgICAgICAgJ2xpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAgICdhZGRpdGlvblxuJworICAgICAgICAgICAgICAgICAgICcobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gKG1lYW5pbmcgJworICAgICAgICAgICAgICAgICAgICdyZXBldGl0aW9uKSBieVxuJworICAgICAgICAgICAgICAgICAgICdkZWZpbmluZyB0aGUgbWV0aG9kcyAiX19hZGRfXygpIiwgIl9fcmFkZF9fKCkiLCAnCisgICAgICAgICAgICAgICAgICAgJyJfX2lhZGRfXygpIixcbicKKyAgICAgICAgICAgICAgICAgICAnIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZCAnCisgICAgICAgICAgICAgICAgICAgJ2JlbG93OyB0aGV5XG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBub3QgZGVmaW5lICJfX2NvZXJjZV9fKCkiIG9yIG90aGVyIG51bWVyaWNhbCAnCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdG9ycy4gIEl0IGlzXG4nCisgICAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICciX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iICcKKyAgICAgICAgICAgICAgICAgICAnb3BlcmF0b3I7XG4nCisgICAgICAgICAgICAgICAgICAgJ2ZvciBtYXBwaW5ncywgImluIiBzaG91bGQgYmUgZXF1aXZhbGVudCBvZiAiaGFzX2tleSgpIjsgJworICAgICAgICAgICAgICAgICAgICdmb3Igc2VxdWVuY2VzLFxuJworICAgICAgICAgICAgICAgICAgICdpdCBzaG91bGQgc2VhcmNoIHRocm91Z2ggdGhlIHZhbHVlcy4gIEl0IGlzIGZ1cnRoZXIgJworICAgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJ2JvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlICJfX2l0ZXJfXygpIiAnCisgICAgICAgICAgICAgICAgICAgJ21ldGhvZCB0byBhbGxvd1xuJworICAgICAgICAgICAgICAgICAgICdlZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAnCisgICAgICAgICAgICAgICAgICAgJyJfX2l0ZXJfXygpIlxuJworICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgdGhlIHNhbWUgYXMgIml0ZXJrZXlzKCkiOyBmb3Igc2VxdWVuY2VzLCBpdCAnCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlbl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiLiAgJworICAgICAgICAgICAgICAgICAgICdTaG91bGQgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRvZXNuXCd0IGRlZmluZSBhICJfX25vbnplcm9fXygpIiBtZXRob2QgYW5kIHdob3NlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fbGVuX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgJworICAgICAgICAgICAgICAgICAgICdCb29sZWFuIGNvbnRleHQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEluIENQeXRob24sIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2xlbmd0aCBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICByZXF1aXJlZCB0byBiZSBhdCBtb3N0ICJzeXMubWF4c2l6ZSIuIElmIHRoZSBsZW5ndGggaXMgJworICAgICAgICAgICAgICAgICAgICdsYXJnZXIgdGhhblxuJworICAgICAgICAgICAgICAgICAgICcgICAic3lzLm1heHNpemUiIHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgImxlbigpIikgbWF5ICcKKyAgICAgICAgICAgICAgICAgICAncmFpc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIk92ZXJmbG93RXJyb3IiLiAgVG8gcHJldmVudCByYWlzaW5nICJPdmVyZmxvd0Vycm9yIiBieSAnCisgICAgICAgICAgICAgICAgICAgJ3RydXRoIHZhbHVlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRlc3RpbmcsIGFuIG9iamVjdCBtdXN0IGRlZmluZSBhICJfX25vbnplcm9fXygpIiAnCisgICAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgInNlbGZba2V5XSIuIEZvciAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIHR5cGVzLFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cy4gIE5vdGUgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdjbGFzcyB3aXNoZXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiBtZXRob2QuIElmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlICcKKyAgICAgICAgICAgICAgICAgICAncmFpc2VkOyBpZiBvZlxuJworICAgICAgICAgICAgICAgICAgICcgICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICcoYWZ0ZXIgYW55XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgdmFsdWVzKSwgJworICAgICAgICAgICAgICAgICAgICciSW5kZXhFcnJvciIgc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZm9yIiBsb29wcyBleHBlY3QgdGhhdCBhbiAiSW5kZXhFcnJvciIgd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3JhaXNlZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kICcKKyAgICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19taXNzaW5nX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnInNlbGZba2V5XSIgZm9yIGRpY3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgJworICAgICAgICAgICAgICAgICAgICdub3RlIGFzIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciAnCisgICAgICAgICAgICAgICAgICAgJ2lmIG5ldyBrZXlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgJworICAgICAgICAgICAgICAgICAgICdyZXBsYWNlZC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogJworICAgICAgICAgICAgICAgICAgICd2YWx1ZXMgYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgJworICAgICAgICAgICAgICAgICAgICdhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyAnCisgICAgICAgICAgICAgICAgICAgJ2lmIGVsZW1lbnRzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyAnCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0ZXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnYSBjb250YWluZXIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICdjYW4gaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAgICcgICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCAnCisgICAgICAgICAgICAgICAgICAgJ2l0IHNob3VsZFxuJworICAgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lciwgYW5kIHNob3VsZCBhbHNvICcKKyAgICAgICAgICAgICAgICAgICAnYmUgbWFkZVxuJworICAgICAgICAgICAgICAgICAgICcgICBhdmFpbGFibGUgYXMgdGhlIG1ldGhvZCAiaXRlcmtleXMoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7ICcKKyAgICAgICAgICAgICAgICAgICAndGhleSBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiAnCisgICAgICAgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMsIHNlZSBJdGVyYXRvciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JldmVyc2VkX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byAnCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3IgJworICAgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluICcKKyAgICAgICAgICAgICAgICAgICAncmV2ZXJzZSBvcmRlci5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJyJyZXZlcnNlZCgpIlxuJworICAgICAgICAgICAgICAgICAgICcgICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAgICcoIl9fbGVuX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2dldGl0ZW1fXygpIikuICBPYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBwcm90b2NvbFxuJworICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInJldmVyc2VkKCkiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi42LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgJworICAgICAgICAgICAgICAgICAgICdub3JtYWxseVxuJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgJworICAgICAgICAgICAgICAgICAgICdjb250YWluZXJcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhICcKKyAgICAgICAgICAgICAgICAgICAnbW9yZSBlZmZpY2llbnRcbicKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlICcKKyAgICAgICAgICAgICAgICAgICAnYSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiB0cnVlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cywgdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXktaXRlbSBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBvYmplY3RzIHRoYXQgZG9uXCd0IGRlZmluZSAiX19jb250YWluc19fKCkiLCB0aGUgJworICAgICAgICAgICAgICAgICAgICdtZW1iZXJzaGlwIHRlc3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIHJlZmVyZW5jZS5cbicsCisgJ3NoaWZ0aW5nJzogJ1xuJworICAgICAgICAgICAgICdTaGlmdGluZyBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICdvcGVyYXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVzZSBvcGVyYXRvcnMgYWNjZXB0IHBsYWluIG9yIGxvbmcgaW50ZWdlcnMgYXMgYXJndW1lbnRzLiAgJworICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAnYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gIFRoZXkgc2hpZnQgdGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBsZWZ0IG9yIHJpZ2h0IGJ5IHRoZSBudW1iZXIgb2YgYml0cyBnaXZlbiBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdzZWNvbmQgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZGl2aXNpb24gYnkgInBvdygyLCAnCisgICAgICAgICAgICAgJ24pIi4gIEFcbicKKyAgICAgICAgICAgICAnbGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggInBvdygyLCAnCisgICAgICAgICAgICAgJ24pIi5cbicKKyAgICAgICAgICAgICAnTmVnYXRpdmUgc2hpZnQgY291bnRzIHJhaXNlIGEgIlZhbHVlRXJyb3IiIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGU6IEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kIGlzXG4nCisgICAgICAgICAgICAgJyAgcmVxdWlyZWQgdG8gYmUgYXQgbW9zdCAic3lzLm1heHNpemUiLiAgSWYgdGhlIHJpZ2h0LWhhbmQgJworICAgICAgICAgICAgICdvcGVyYW5kIGlzXG4nCisgICAgICAgICAgICAgJyAgbGFyZ2VyIHRoYW4gInN5cy5tYXhzaXplIiBhbiAiT3ZlcmZsb3dFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAncmFpc2VkLlxuJywKKyAnc2xpY2luZ3MnOiAnXG4nCisgICAgICAgICAgICAgJ1NsaWNpbmdzXG4nCisgICAgICAgICAgICAgJyoqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIHNsaWNpbmcgc2VsZWN0cyBhIHJhbmdlIG9mIGl0ZW1zIGluIGEgc2VxdWVuY2Ugb2JqZWN0IChlLmcuLCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnc3RyaW5nLCB0dXBsZSBvciBsaXN0KS4gIFNsaWNpbmdzIG1heSBiZSB1c2VkIGFzIGV4cHJlc3Npb25zIG9yICcKKyAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAndGFyZ2V0cyBpbiBhc3NpZ25tZW50IG9yICJkZWwiIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhICcKKyAgICAgICAgICAgICAnc2xpY2luZzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNpbmcgICAgICAgICAgOjo9IHNpbXBsZV9zbGljaW5nIHwgZXh0ZW5kZWRfc2xpY2luZ1xuJworICAgICAgICAgICAgICcgICBzaW1wbGVfc2xpY2luZyAgIDo6PSBwcmltYXJ5ICJbIiBzaG9ydF9zbGljZSAiXSJcbicKKyAgICAgICAgICAgICAnICAgZXh0ZW5kZWRfc2xpY2luZyA6Oj0gcHJpbWFyeSAiWyIgc2xpY2VfbGlzdCAiXSJcbicKKyAgICAgICAgICAgICAnICAgc2xpY2VfbGlzdCAgICAgICA6Oj0gc2xpY2VfaXRlbSAoIiwiIHNsaWNlX2l0ZW0pKiBbIiwiXVxuJworICAgICAgICAgICAgICcgICBzbGljZV9pdGVtICAgICAgIDo6PSBleHByZXNzaW9uIHwgcHJvcGVyX3NsaWNlIHwgZWxsaXBzaXNcbicKKyAgICAgICAgICAgICAnICAgcHJvcGVyX3NsaWNlICAgICA6Oj0gc2hvcnRfc2xpY2UgfCBsb25nX3NsaWNlXG4nCisgICAgICAgICAgICAgJyAgIHNob3J0X3NsaWNlICAgICAgOjo9IFtsb3dlcl9ib3VuZF0gIjoiIFt1cHBlcl9ib3VuZF1cbicKKyAgICAgICAgICAgICAnICAgbG9uZ19zbGljZSAgICAgICA6Oj0gc2hvcnRfc2xpY2UgIjoiIFtzdHJpZGVdXG4nCisgICAgICAgICAgICAgJyAgIGxvd2VyX2JvdW5kICAgICAgOjo9IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnICAgdXBwZXJfYm91bmQgICAgICA6Oj0gZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICcgICBzdHJpZGUgICAgICAgICAgIDo6PSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyAgIGVsbGlwc2lzICAgICAgICAgOjo9ICIuLi4iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVyZSBpcyBhbWJpZ3VpdHkgaW4gdGhlIGZvcm1hbCBzeW50YXggaGVyZTogYW55dGhpbmcgdGhhdCAnCisgICAgICAgICAgICAgJ2xvb2tzIGxpa2VcbicKKyAgICAgICAgICAgICAnYW4gZXhwcmVzc2lvbiBsaXN0IGFsc28gbG9va3MgbGlrZSBhIHNsaWNlIGxpc3QsIHNvIGFueSAnCisgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvblxuJworICAgICAgICAgICAgICdjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBzbGljaW5nLiAgUmF0aGVyIHRoYW4gZnVydGhlciAnCisgICAgICAgICAgICAgJ2NvbXBsaWNhdGluZyB0aGVcbicKKyAgICAgICAgICAgICAnc3ludGF4LCB0aGlzIGlzIGRpc2FtYmlndWF0ZWQgYnkgZGVmaW5pbmcgdGhhdCBpbiB0aGlzIGNhc2UgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc3Vic2NyaXB0aW9uIHRha2VzIHByaW9yaXR5IG92ZXIgdGhlXG4nCisgICAgICAgICAgICAgJ2ludGVycHJldGF0aW9uIGFzIGEgc2xpY2luZyAodGhpcyBpcyB0aGUgY2FzZSBpZiB0aGUgc2xpY2UgbGlzdFxuJworICAgICAgICAgICAgICdjb250YWlucyBubyBwcm9wZXIgc2xpY2Ugbm9yIGVsbGlwc2VzKS4gIFNpbWlsYXJseSwgd2hlbiB0aGUgJworICAgICAgICAgICAgICdzbGljZVxuJworICAgICAgICAgICAgICdsaXN0IGhhcyBleGFjdGx5IG9uZSBzaG9ydCBzbGljZSBhbmQgbm8gdHJhaWxpbmcgY29tbWEsIHRoZVxuJworICAgICAgICAgICAgICdpbnRlcnByZXRhdGlvbiBhcyBhIHNpbXBsZSBzbGljaW5nIHRha2VzIHByaW9yaXR5IG92ZXIgdGhhdCBhcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4dGVuZGVkIHNsaWNpbmcuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgc2VtYW50aWNzIGZvciBhIHNpbXBsZSBzbGljaW5nIGFyZSBhcyBmb2xsb3dzLiAgVGhlIHByaW1hcnkgJworICAgICAgICAgICAgICdtdXN0XG4nCisgICAgICAgICAgICAgJ2V2YWx1YXRlIHRvIGEgc2VxdWVuY2Ugb2JqZWN0LiAgVGhlIGxvd2VyIGFuZCB1cHBlciBib3VuZCAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLFxuJworICAgICAgICAgICAgICdpZiBwcmVzZW50LCBtdXN0IGV2YWx1YXRlIHRvIHBsYWluIGludGVnZXJzOyBkZWZhdWx0cyBhcmUgemVybyAnCisgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAnInN5cy5tYXhpbnQiLCByZXNwZWN0aXZlbHkuICBJZiBlaXRoZXIgYm91bmQgaXMgbmVnYXRpdmUsIHRoZVxuJworICAgICAgICAgICAgICJzZXF1ZW5jZSdzIGxlbmd0aCBpcyBhZGRlZCB0byBpdC4gIFRoZSBzbGljaW5nIG5vdyBzZWxlY3RzIGFsbCAiCisgICAgICAgICAgICAgJ2l0ZW1zXG4nCisgICAgICAgICAgICAgJ3dpdGggaW5kZXggKmsqIHN1Y2ggdGhhdCAiaSA8PSBrIDwgaiIgd2hlcmUgKmkqIGFuZCAqaiogYXJlIHRoZVxuJworICAgICAgICAgICAgICdzcGVjaWZpZWQgbG93ZXIgYW5kIHVwcGVyIGJvdW5kcy4gIFRoaXMgbWF5IGJlIGFuIGVtcHR5ICcKKyAgICAgICAgICAgICAnc2VxdWVuY2UuICBJdFxuJworICAgICAgICAgICAgICdpcyBub3QgYW4gZXJyb3IgaWYgKmkqIG9yICpqKiBsaWUgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgdmFsaWQgJworICAgICAgICAgICAgICdpbmRleGVzXG4nCisgICAgICAgICAgICAgIihzdWNoIGl0ZW1zIGRvbid0IGV4aXN0IHNvIHRoZXkgYXJlbid0IHNlbGVjdGVkKS5cbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBzZW1hbnRpY3MgZm9yIGFuIGV4dGVuZGVkIHNsaWNpbmcgYXJlIGFzIGZvbGxvd3MuICBUaGUgJworICAgICAgICAgICAgICdwcmltYXJ5XG4nCisgICAgICAgICAgICAgJ211c3QgZXZhbHVhdGUgdG8gYSBtYXBwaW5nIG9iamVjdCwgYW5kIGl0IGlzIGluZGV4ZWQgd2l0aCBhIGtleSAnCisgICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICAnaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgc2xpY2UgbGlzdCwgYXMgZm9sbG93cy4gIElmIHRoZSBzbGljZSAnCisgICAgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAgICAnY29udGFpbnMgYXQgbGVhc3Qgb25lIGNvbW1hLCB0aGUga2V5IGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGVcbicKKyAgICAgICAgICAgICAnY29udmVyc2lvbiBvZiB0aGUgc2xpY2UgaXRlbXM7IG90aGVyd2lzZSwgdGhlIGNvbnZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAnbG9uZVxuJworICAgICAgICAgICAgICdzbGljZSBpdGVtIGlzIHRoZSBrZXkuICBUaGUgY29udmVyc2lvbiBvZiBhIHNsaWNlIGl0ZW0gdGhhdCBpcyAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgdGhhdCBleHByZXNzaW9uLiAgVGhlIGNvbnZlcnNpb24gb2YgYW4gZWxsaXBzaXMgJworICAgICAgICAgICAgICdzbGljZVxuJworICAgICAgICAgICAgICdpdGVtIGlzIHRoZSBidWlsdC1pbiAiRWxsaXBzaXMiIG9iamVjdC4gIFRoZSBjb252ZXJzaW9uIG9mIGEgJworICAgICAgICAgICAgICdwcm9wZXJcbicKKyAgICAgICAgICAgICAnc2xpY2UgaXMgYSBzbGljZSBvYmplY3QgKHNlZSBzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlICcKKyAgICAgICAgICAgICAnaGllcmFyY2h5KVxuJworICAgICAgICAgICAgICd3aG9zZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiBhdHRyaWJ1dGVzIGFyZSB0aGUgdmFsdWVzIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zIGdpdmVuIGFzIGxvd2VyIGJvdW5kLCB1cHBlciBib3VuZCBhbmQgc3RyaWRlLFxuJworICAgICAgICAgICAgICdyZXNwZWN0aXZlbHksIHN1YnN0aXR1dGluZyAiTm9uZSIgZm9yIG1pc3NpbmcgZXhwcmVzc2lvbnMuXG4nLAorICdzcGVjaWFsYXR0cnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIEF0dHJpYnV0ZXNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzICcKKyAgICAgICAgICAgICAgICAgJ3RvIHNldmVyYWxcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSAnCisgICAgICAgICAgICAgICAgICdub3QgcmVwb3J0ZWRcbicKKyAgICAgICAgICAgICAgICAgJ2J5IHRoZSAiZGlyKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaWN0X19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gJworICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgJyAgICh3cml0YWJsZSkgYXR0cmlidXRlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWV0aG9kc19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIERlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAyLjI6IFVzZSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gJworICAgICAgICAgICAgICAgICAnImRpcigpIiB0b1xuJworICAgICAgICAgICAgICAgICAiICAgZ2V0IGEgbGlzdCBvZiBhbiBvYmplY3QncyBhdHRyaWJ1dGVzLiBUaGlzIGF0dHJpYnV0ZSBpcyAiCisgICAgICAgICAgICAgICAgICdubyBsb25nZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGF2YWlsYWJsZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWVtYmVyc19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIERlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAyLjI6IFVzZSB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gJworICAgICAgICAgICAgICAgICAnImRpcigpIiB0b1xuJworICAgICAgICAgICAgICAgICAiICAgZ2V0IGEgbGlzdCBvZiBhbiBvYmplY3QncyBhdHRyaWJ1dGVzLiBUaGlzIGF0dHJpYnV0ZSBpcyAiCisgICAgICAgICAgICAgICAgICdubyBsb25nZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGF2YWlsYWJsZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UuX19jbGFzc19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBjbGFzcyB0byB3aGljaCBhIGNsYXNzIGluc3RhbmNlIGJlbG9uZ3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fYmFzZXNfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgdHVwbGUgb2YgYmFzZSBjbGFzc2VzIG9mIGEgY2xhc3Mgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uLl9fbmFtZV9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcywgdHlwZSwgZnVuY3Rpb24sIG1ldGhvZCwgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciwgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGdlbmVyYXRvciBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzIGFyZSBvbmx5IHN1cHBvcnRlZCBieSAqbmV3LXN0eWxlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzKmVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX21yb19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgYXR0cmlidXRlIGlzIGEgdHVwbGUgb2YgY2xhc3NlcyB0aGF0IGFyZSBjb25zaWRlcmVkICcKKyAgICAgICAgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGxvb2tpbmcgZm9yIGJhc2UgY2xhc3NlcyBkdXJpbmcgbWV0aG9kIHJlc29sdXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLm1ybygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGNhbiBiZSBvdmVycmlkZGVuIGJ5IGEgbWV0YWNsYXNzIHRvIGN1c3RvbWl6ZSAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXNvbHV0aW9uIG9yZGVyIGZvciBpdHMgaW5zdGFuY2VzLiAgSXQgaXMgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgJ2F0IGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW50aWF0aW9uLCBhbmQgaXRzIHJlc3VsdCBpcyBzdG9yZWQgaW4gIl9fbXJvX18iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX3N1YmNsYXNzZXNfXygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEVhY2ggbmV3LXN0eWxlIGNsYXNzIGtlZXBzIGEgbGlzdCBvZiB3ZWFrIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgICAgICcgICBpbW1lZGlhdGUgc3ViY2xhc3Nlcy4gIFRoaXMgbWV0aG9kIHJldHVybnMgYSBsaXN0IG9mIGFsbCAnCisgICAgICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVmZXJlbmNlcyBzdGlsbCBhbGl2ZS4gRXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGludC5fX3N1YmNsYXNzZXNfXygpXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBbPHR5cGUgJ2Jvb2wnPl1cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1sxXSBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZXNlIHNwZWNpYWwgbWV0aG9kcyBtYXkgYmUgJworICAgICAgICAgICAgICAgICAnZm91bmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICBpbiB0aGUgUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgKEJhc2ljIGN1c3RvbWl6YXRpb24pLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgIlsxLCAyXSIgaXMgY29uc2lkZXJlZCBlcXVhbCAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnICAgICJbMS4wLCAyLjBdIiwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJbM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW4ndCB0ZWxsIHRoZSB0eXBlIG9mICIKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgIG9wZXJhbmRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbNF0gQ2FzZWQgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5ICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5XG4nCisgICAgICAgICAgICAgICAgICcgICAgYmVpbmcgb25lIG9mICJMdSIgKExldHRlciwgdXBwZXJjYXNlKSwgIkxsIiAoTGV0dGVyLCAnCisgICAgICAgICAgICAgICAgICdsb3dlcmNhc2UpLFxuJworICAgICAgICAgICAgICAgICAnICAgIG9yICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnWzVdIFRvIGZvcm1hdCBvbmx5IGEgdHVwbGUgeW91IHNob3VsZCB0aGVyZWZvcmUgcHJvdmlkZSBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgc2luZ2xldG9uIHR1cGxlIHdob3NlIG9ubHkgZWxlbWVudCBpcyB0aGUgdHVwbGUgdG8gYmUgJworICAgICAgICAgICAgICAgICAnZm9ybWF0dGVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbNl0gVGhlIGFkdmFudGFnZSBvZiBsZWF2aW5nIHRoZSBuZXdsaW5lIG9uIGlzIHRoYXQgJworICAgICAgICAgICAgICAgICAncmV0dXJuaW5nIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICAgZW1wdHkgc3RyaW5nIGlzIHRoZW4gYW4gdW5hbWJpZ3VvdXMgRU9GIGluZGljYXRpb24uICBJdCAnCisgICAgICAgICAgICAgICAgICdpcyBhbHNvXG4nCisgICAgICAgICAgICAgICAgICcgICAgcG9zc2libGUgKGluIGNhc2VzIHdoZXJlIGl0IG1pZ2h0IG1hdHRlciwgZm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAgICAgJ2lmIHlvdSB3YW50XG4nCisgICAgICAgICAgICAgICAgICcgICAgdG8gbWFrZSBhbiBleGFjdCBjb3B5IG9mIGEgZmlsZSB3aGlsZSBzY2FubmluZyBpdHMgJworICAgICAgICAgICAgICAgICAnbGluZXMpIHRvIHRlbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgICB3aGV0aGVyIHRoZSBsYXN0IGxpbmUgb2YgYSBmaWxlIGVuZGVkIGluIGEgbmV3bGluZSBvciAnCisgICAgICAgICAgICAgICAgICdub3QgKHllc1xuJworICAgICAgICAgICAgICAgICAnICAgIHRoaXMgaGFwcGVucyEpLlxuJywKKyAnc3BlY2lhbG5hbWVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBtZXRob2QgbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgY2xhc3MgY2FuIGltcGxlbWVudCBjZXJ0YWluIG9wZXJhdGlvbnMgdGhhdCBhcmUgaW52b2tlZCBieSAnCisgICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICdzeW50YXggKHN1Y2ggYXMgYXJpdGhtZXRpYyBvcGVyYXRpb25zIG9yIHN1YnNjcmlwdGluZyBhbmQgJworICAgICAgICAgICAgICAgICAnc2xpY2luZykgYnlcbicKKyAgICAgICAgICAgICAgICAgImRlZmluaW5nIG1ldGhvZHMgd2l0aCBzcGVjaWFsIG5hbWVzLiBUaGlzIGlzIFB5dGhvbidzICIKKyAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvXG4nCisgICAgICAgICAgICAgICAgICcqb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3JcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGVmaW5lc1xuJworICAgICAgICAgICAgICAgICAnYSBtZXRob2QgbmFtZWQgIl9fZ2V0aXRlbV9fKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgY2xhc3MsXG4nCisgICAgICAgICAgICAgICAgICd0aGVuICJ4W2ldIiBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gInguX19nZXRpdGVtX18oaSkiIGZvciAnCisgICAgICAgICAgICAgICAgICdvbGQtc3R5bGVcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzZXMgYW5kICJ0eXBlKHgpLl9fZ2V0aXRlbV9fKHgsIGkpIiBmb3IgbmV3LXN0eWxlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzZXMuICBFeGNlcHRcbicKKyAgICAgICAgICAgICAgICAgJ3doZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2UgYW4gJworICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICAgICd3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHkgJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIiBvclxuJworICAgICAgICAgICAgICAgICAnIlR5cGVFcnJvciIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsICcKKyAgICAgICAgICAgICAgICAgJ2l0IGlzXG4nCisgICAgICAgICAgICAgICAgICdpbXBvcnRhbnQgdGhhdCB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RlZ3JlZSB0aGF0IGl0XG4nCisgICAgICAgICAgICAgICAgICdtYWtlcyBzZW5zZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCAnCisgICAgICAgICAgICAgICAgICdzb21lXG4nCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbCBvZiBpbmRpdmlkdWFsICcKKyAgICAgICAgICAgICAgICAgJ2VsZW1lbnRzLCBidXRcbicKKyAgICAgICAgICAgICAgICAgJ2V4dHJhY3RpbmcgYSBzbGljZSBtYXkgbm90IG1ha2Ugc2Vuc2UuICAoT25lIGV4YW1wbGUgb2YgdGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJOb2RlTGlzdCIgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdCYXNpYyBjdXN0b21pemF0aW9uXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAnCisgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiBpcyBhXG4nCisgICAgICAgICAgICAgICAgICcgICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0ICcKKyAgICAgICAgICAgICAgICAgJ2FzIHN1Y2gpXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgICAgICAgJ2FzIGl0c1xuJworICAgICAgICAgICAgICAgICAnICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkICcKKyAgICAgICAgICAgICAgICAgJ3RvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICAnCisgICAgICAgICAgICAgICAgICdUaGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnKHVzdWFsbHkgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlIG9mICpjbHMqKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBieVxuJworICAgICAgICAgICAgICAgICAnICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAnCisgICAgICAgICAgICAgICAgICciX19uZXdfXygpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBuZXdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgJworICAgICAgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAgICAgICcgICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdjcmVhdGlvbi4gIEl0XG4nCisgICAgICAgICAgICAgICAgICcgICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAnCisgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiksIGJ1dFxuJworICAgICAgICAgICAgICAgICAnICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSAnCisgICAgICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICAgICAnICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGhhcyBhblxuJworICAgICAgICAgICAgICAgICAnICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCwgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciAnCisgICAgICAgICAgICAgICAgICdpbml0aWFsaXphdGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAnICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gJworICAgICAgICAgICAgICAgICAnY29uc3RydWN0aW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gJworICAgICAgICAgICAgICAgICAnY3VzdG9taXNlXG4nCisgICAgICAgICAgICAgICAgICcgICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICJfX2luaXRfXygpIjsgJworICAgICAgICAgICAgICAgICAnZG9pbmcgc29cbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgJworICAgICAgICAgICAgICAgICAnaXMgYWxzb1xuJworICAgICAgICAgICAgICAgICAnICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QsIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCAnCisgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGNhbGwgaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgJworICAgICAgICAgICAgICAgICAnYSBsYXRlclxuJworICAgICAgICAgICAgICAgICAnICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgJ2d1YXJhbnRlZWQgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgJworICAgICAgICAgICAgICAgICAnZXhpc3Qgd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gJworICAgICAgICAgICAgICAgICAndGhlIGZvcm1lclxuJworICAgICAgICAgICAgICAgICAnICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnbGF0dGVyIGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICAnCisgICAgICAgICAgICAgICAgICdTb21lIGNvbW1vblxuJworICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzIChlLmcuLFxuJworICAgICAgICAgICAgICAgICAnICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCAnCisgICAgICAgICAgICAgICAgICdwYXJlbnQgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgJworICAgICAgICAgICAgICAgICAnZnJhbWUgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgJworICAgICAgICAgICAgICAgICAnc3RvcmVkIGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMuZXhjX3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSAnCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gJworICAgICAgICAgICAgICAgICAndW5oYW5kbGVkXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuJworICAgICAgICAgICAgICAgICAnICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0XG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBjeWNsZXM7XG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZSBsYXR0ZXIgdHdvIHNpdHVhdGlvbnMgY2FuIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgJworICAgICAgICAgICAgICAgICAnIk5vbmUiIGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMuZXhjX3RyYWNlYmFjayIgb3IgInN5cy5sYXN0X3RyYWNlYmFjayIuICBDaXJjdWxhciAnCisgICAgICAgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCB3aGVuIHRoZSBvcHRpb24gY3ljbGUgJworICAgICAgICAgICAgICAgICAnZGV0ZWN0b3IgaXNcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgZW5hYmxlZCAoaXQncyBvbiBieSBkZWZhdWx0KSwgYnV0IGNhbiBvbmx5IGJlIGNsZWFuZWQgIgorICAgICAgICAgICAgICAgICAndXAgaWYgdGhlcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYXJlIG5vIFB5dGhvbi1sZXZlbCAiX19kZWxfXygpIiBtZXRob2RzIGludm9sdmVkLiBSZWZlciAnCisgICAgICAgICAgICAgICAgICd0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlICJnYyIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ2Fib3V0IGhvd1xuJworICAgICAgICAgICAgICAgICAnICAgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBoYW5kbGVkIGJ5IHRoZSBjeWNsZSBkZXRlY3RvcixcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcGFydGljdWxhcmx5IHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgImdhcmJhZ2UiIHZhbHVlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaFxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgJworICAgICAgICAgICAgICAgICAnZHVyaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkICcKKyAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJzeXMuc3RkZXJyIiBpbnN0ZWFkLiBBbHNvLCB3aGVuICJfX2RlbF9fKCkiIGlzIGludm9rZWQgJworICAgICAgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmcgZGVsZXRlZCAoZS5nLiwgd2hlbiAnCisgICAgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAnIl9fZGVsX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmUgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzICcKKyAgICAgICAgICAgICAgICAgJ29mIGJlaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRvcm4gZG93biAoZS5nLiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gICcKKyAgICAgICAgICAgICAgICAgJ0ZvciB0aGlzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlICcKKyAgICAgICAgICAgICAgICAgJ21pbmltdW0gbmVlZGVkXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRvIG1haW50YWluIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gJworICAgICAgICAgICAgICAgICAnMS41LFxuJworICAgICAgICAgICAgICAgICAnICAgICBQeXRob24gZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhICcKKyAgICAgICAgICAgICAgICAgJ3NpbmdsZVxuJworICAgICAgICAgICAgICAgICAnICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICdnbG9iYWxzIGFyZVxuJworICAgICAgICAgICAgICAgICAnICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgJworICAgICAgICAgICAgICAgICAndGhpcyBtYXlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsICcKKyAgICAgICAgICAgICAgICAgJ2F2YWlsYWJsZSBhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBTZWUgYWxzbyB0aGUgIi1SIiBjb21tYW5kLWxpbmUgb3B0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZXByX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAicmVwcigpIiBidWlsdC1pbiBmdW5jdGlvbiBhbmQgYnkgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb25zXG4nCisgICAgICAgICAgICAgICAgICcgICAocmV2ZXJzZSBxdW90ZXMpIHRvIGNvbXB1dGUgdGhlICJvZmZpY2lhbCIgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGF0aW9uIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsIHRoaXMgc2hvdWxkIGxvb2sgbGlrZSBhICcKKyAgICAgICAgICAgICAgICAgJ3ZhbGlkXG4nCisgICAgICAgICAgICAgICAgICcgICBQeXRob24gZXhwcmVzc2lvbiB0aGF0IGNvdWxkIGJlIHVzZWQgdG8gcmVjcmVhdGUgYW4gJworICAgICAgICAgICAgICAgICAnb2JqZWN0IHdpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzYW1lIHZhbHVlIChnaXZlbiBhbiBhcHByb3ByaWF0ZSBlbnZpcm9ubWVudCkuICBJZiB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ2lzIG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSBmb3JtICI8Li4uc29tZSB1c2VmdWwgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRpb24uLi4+IlxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGJlIHJldHVybmVkLiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdC4gSWYgYVxuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgZGVmaW5lcyAiX19yZXByX18oKSIgYnV0IG5vdCAiX19zdHJfXygpIiwgdGhlbiAnCisgICAgICAgICAgICAgICAgICciX19yZXByX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIGFsc28gdXNlZCB3aGVuIGFuICJpbmZvcm1hbCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlc1xuJworICAgICAgICAgICAgICAgICAnICAgb2YgdGhhdCBjbGFzcyBpcyByZXF1aXJlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgJworICAgICAgICAgICAgICAgICAndGhhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zdHJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJzdHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gYW5kIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICcicHJpbnQiXG4nCisgICAgICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQgdG8gY29tcHV0ZSB0aGUgImluZm9ybWFsIiBzdHJpbmcgcmVwcmVzZW50YXRpb24gJworICAgICAgICAgICAgICAgICAnb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gIFRoaXMgZGlmZmVycyBmcm9tICJfX3JlcHJfXygpIiBpbiB0aGF0IGl0IGRvZXMgJworICAgICAgICAgICAgICAgICAnbm90IGhhdmUgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGEgbW9yZSBjb252ZW5pZW50IG9yICcKKyAgICAgICAgICAgICAgICAgJ2NvbmNpc2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIG1heSBiZSB1c2VkIGluc3RlYWQuIFRoZSByZXR1cm4gdmFsdWUgbXVzdCAnCisgICAgICAgICAgICAgICAgICdiZSBhXG4nCisgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuMS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSBzby1jYWxsZWQgInJpY2ggY29tcGFyaXNvbiIgbWV0aG9kcywgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2FyZSBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZvciBjb21wYXJpc29uIG9wZXJhdG9ycyBpbiBwcmVmZXJlbmNlIHRvICJfX2NtcF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2JlbG93LiBUaGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzICcKKyAgICAgICAgICAgICAgICAgJ2lzIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgJworICAgICAgICAgICAgICAgICAnInguX19sZV9fKHkpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgYW5kICJ4PD55IiBjYWxsICcKKyAgICAgICAgICAgICAgICAgJyJ4Ll9fbmVfXyh5KSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAieD55IiBjYWxscyAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICcKKyAgICAgICAgICAgICAgICAgJyJ4Ll9fZ2VfXyh5KSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEEgcmljaCBjb21wYXJpc29uIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBzaW5nbGV0b24gJworICAgICAgICAgICAgICAgICAnIk5vdEltcGxlbWVudGVkIlxuJworICAgICAgICAgICAgICAgICAnICAgaWYgaXQgZG9lcyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yIGEgZ2l2ZW4gcGFpciAnCisgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlIHJldHVybmVkICcKKyAgICAgICAgICAgICAgICAgJ2ZvciBhXG4nCisgICAgICAgICAgICAgICAgICcgICBzdWNjZXNzZnVsIGNvbXBhcmlzb24uIEhvd2V2ZXIsIHRoZXNlIG1ldGhvZHMgY2FuIHJldHVybiAnCisgICAgICAgICAgICAgICAgICdhbnkgdmFsdWUsXG4nCisgICAgICAgICAgICAgICAgICcgICBzbyBpZiB0aGUgY29tcGFyaXNvbiBvcGVyYXRvciBpcyB1c2VkIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0IChlLmcuLFxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgJworICAgICAgICAgICAgICAgICAnImJvb2woKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9uIHRoZSB2YWx1ZSB0byBkZXRlcm1pbmUgaWYgdGhlIHJlc3VsdCBpcyB0cnVlIG9yICcKKyAgICAgICAgICAgICAgICAgJ2ZhbHNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVyZSBhcmUgbm8gaW1wbGllZCByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdG9ycy5cbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSB0cnV0aCBvZiAieD09eSIgZG9lcyBub3QgaW1wbHkgdGhhdCAieCE9eSIgaXMgZmFsc2UuXG4nCisgICAgICAgICAgICAgICAgICcgICBBY2NvcmRpbmdseSwgd2hlbiBkZWZpbmluZyAiX19lcV9fKCkiLCBvbmUgc2hvdWxkIGFsc28gJworICAgICAgICAgICAgICAgICAnZGVmaW5lXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19uZV9fKCkiIHNvIHRoYXQgdGhlIG9wZXJhdG9ycyB3aWxsIGJlaGF2ZSBhcyAnCisgICAgICAgICAgICAgICAgICdleHBlY3RlZC4gIFNlZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICAnKHRvIGJlIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCAnCisgICAgICAgICAgICAgICAgICd0aGUgcmlnaHRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlICcKKyAgICAgICAgICAgICAgICAgImVhY2ggb3RoZXInc1xuIgorICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyAnCisgICAgICAgICAgICAgICAgICdyZWZsZWN0aW9uLFxuJworICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBcmd1bWVudHMgdG8gcmljaCBjb21wYXJpc29uIG1ldGhvZHMgYXJlIG5ldmVyIGNvZXJjZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgJworICAgICAgICAgICAgICAgICAnc2luZ2xlIHJvb3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbiwgc2VlICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NtcF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgY29tcGFyaXNvbiBvcGVyYXRpb25zIGlmIHJpY2ggY29tcGFyaXNvbiAoc2VlICcKKyAgICAgICAgICAgICAgICAgJ2Fib3ZlKSBpc1xuJworICAgICAgICAgICAgICAgICAnICAgbm90IGRlZmluZWQuICBTaG91bGQgcmV0dXJuIGEgbmVnYXRpdmUgaW50ZWdlciBpZiAic2VsZiA8ICcKKyAgICAgICAgICAgICAgICAgJ290aGVyIixcbicKKyAgICAgICAgICAgICAgICAgJyAgIHplcm8gaWYgInNlbGYgPT0gb3RoZXIiLCBhIHBvc2l0aXZlIGludGVnZXIgaWYgInNlbGYgPiAnCisgICAgICAgICAgICAgICAgICdvdGhlciIuICBJZlxuJworICAgICAgICAgICAgICAgICAnICAgbm8gIl9fY21wX18oKSIsICJfX2VxX18oKSIgb3IgIl9fbmVfXygpIiBvcGVyYXRpb24gaXMgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIGluc3RhbmNlcyBhcmUgY29tcGFyZWQgYnkgb2JqZWN0IGlkZW50aXR5ICcKKyAgICAgICAgICAgICAgICAgJygiYWRkcmVzcyIpLiAgU2VlXG4nCisgICAgICAgICAgICAgICAgICcgICBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50ICcKKyAgICAgICAgICAgICAgICAgJ25vdGVzIG9uXG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gJworICAgICAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuIChOb3RlOiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlc3RyaWN0aW9uIHRoYXQgZXhjZXB0aW9ucyBhcmUgbm90IHByb3BhZ2F0ZWQgYnkgJworICAgICAgICAgICAgICAgICAnIl9fY21wX18oKSIgaGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBiZWVuIHJlbW92ZWQgc2luY2UgUHl0aG9uIDEuNS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JjbXBfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMTogTm8gbG9uZ2VyIHN1cHBvcnRlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faGFzaF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICAgICAnb24gbWVtYmVyc1xuJworICAgICAgICAgICAgICAgICAnICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAnCisgICAgICAgICAgICAgICAgICciZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgJworICAgICAgICAgICAgICAgICAncHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZTsgaXQgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFkdmlzZWQgdG8gbWl4IHRvZ2V0aGVyIHRoZSBoYXNoIHZhbHVlcyBvZiB0aGUgY29tcG9uZW50cyAnCisgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW4gY29tcGFyaXNvbiBvZiBvYmplY3RzIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ3BhY2tpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZW0gaW50byBhIHR1cGxlIGFuZCBoYXNoaW5nIHRoZSB0dXBsZS4gRXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgIHJldHVybiBoYXNoKChzZWxmLm5hbWUsIHNlbGYubmljaywgc2VsZi5jb2xvcikpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGEgIl9fY21wX18oKSIgb3IgIl9fZXFfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QgaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBub3QgZGVmaW5lIGEgIl9faGFzaF9fKCkiIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0ICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2NtcF9fKCkiIG9yICJfX2VxX18oKSIgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgd2lsbFxuJworICAgICAgICAgICAgICAgICAnICAgbm90IGJlIHVzYWJsZSBpbiBoYXNoZWQgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAnbXV0YWJsZVxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cyBhbmQgaW1wbGVtZW50cyBhICJfX2NtcF9fKCkiIG9yICJfX2VxX18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLCBpdFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG5vdCBpbXBsZW1lbnQgIl9faGFzaF9fKCkiLCBzaW5jZSBoYXNoYWJsZSAnCisgICAgICAgICAgICAgICAgICdjb2xsZWN0aW9uXG4nCisgICAgICAgICAgICAgICAgICIgICBpbXBsZW1lbnRhdGlvbnMgcmVxdWlyZSB0aGF0IGFuIG9iamVjdCdzIGhhc2ggdmFsdWUgaXMgIgorICAgICAgICAgICAgICAgICAnaW1tdXRhYmxlXG4nCisgICAgICAgICAgICAgICAgICIgICAoaWYgdGhlIG9iamVjdCdzIGhhc2ggdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgIgorICAgICAgICAgICAgICAgICAnd3JvbmcgaGFzaFxuJworICAgICAgICAgICAgICAgICAnICAgYnVja2V0KS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19jbXBfXygpIiBhbmQgIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgJworICAgICAgICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYSByZXN1bHQgZGVyaXZlZCAnCisgICAgICAgICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgICAgICAgICcgICAiaWQoeCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDbGFzc2VzIHdoaWNoIGluaGVyaXQgYSAiX19oYXNoX18oKSIgbWV0aG9kIGZyb20gYSBwYXJlbnQgJworICAgICAgICAgICAgICAgICAnY2xhc3MgYnV0XG4nCisgICAgICAgICAgICAgICAgICcgICBjaGFuZ2UgdGhlIG1lYW5pbmcgb2YgIl9fY21wX18oKSIgb3IgIl9fZXFfXygpIiBzdWNoIHRoYXQgJworICAgICAgICAgICAgICAgICAndGhlIGhhc2hcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIHJldHVybmVkIGlzIG5vIGxvbmdlciBhcHByb3ByaWF0ZSAoZS5nLiBieSAnCisgICAgICAgICAgICAgICAgICdzd2l0Y2hpbmcgdG8gYVxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUtYmFzZWQgY29uY2VwdCBvZiBlcXVhbGl0eSBpbnN0ZWFkIG9mIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgJ2lkZW50aXR5XG4nCisgICAgICAgICAgICAgICAgICcgICBiYXNlZCBlcXVhbGl0eSkgY2FuIGV4cGxpY2l0bHkgZmxhZyB0aGVtc2VsdmVzIGFzIGJlaW5nICcKKyAgICAgICAgICAgICAgICAgJ3VuaGFzaGFibGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJ5IHNldHRpbmcgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24uICcKKyAgICAgICAgICAgICAgICAgJ0RvaW5nIHNvXG4nCisgICAgICAgICAgICAgICAgICcgICBtZWFucyB0aGF0IG5vdCBvbmx5IHdpbGwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcyByYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAnICAgYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gYXR0ZW1wdHMgdG8gJworICAgICAgICAgICAgICAgICAncmV0cmlldmUgdGhlaXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc2ggdmFsdWUsIGJ1dCB0aGV5IHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCAnCisgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAnICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgJworICAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnMuSGFzaGFibGUpIlxuJworICAgICAgICAgICAgICAgICAnICAgKHVubGlrZSBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGVpciBvd24gIl9faGFzaF9fKCkiIHRvICcKKyAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlICJUeXBlRXJyb3IiKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNTogIl9faGFzaF9fKCkiIG1heSBub3cgYWxzbyByZXR1cm4gJworICAgICAgICAgICAgICAgICAnYSBsb25nXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnRlZ2VyIG9iamVjdDsgdGhlIDMyLWJpdCBpbnRlZ2VyIGlzIHRoZW4gZGVyaXZlZCBmcm9tICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBoYXNoIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGF0IG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNjogIl9faGFzaF9fIiBtYXkgbm93IGJlIHNldCB0byAnCisgICAgICAgICAgICAgICAgICciTm9uZSIgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4cGxpY2l0bHkgZmxhZyBpbnN0YW5jZXMgb2YgYSBjbGFzcyBhcyB1bmhhc2hhYmxlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ub256ZXJvX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIiwgb3IgdGhlaXIgJworICAgICAgICAgICAgICAgICAnaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAnICAgZXF1aXZhbGVudHMgIjAiIG9yICIxIi4gIFdoZW4gdGhpcyBtZXRob2QgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQsXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiBJZiBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX25vbnplcm9fXygpIiwgYWxsIGl0cyAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHRydWUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3VuaWNvZGVfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJ1bmljb2RlKCkiIGJ1aWx0LWluOyBzaG91bGQgcmV0dXJuIGEgJworICAgICAgICAgICAgICAgICAnVW5pY29kZVxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiBXaGVuIHRoaXMgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCBzdHJpbmcgJworICAgICAgICAgICAgICAgICAnY29udmVyc2lvbiBpc1xuJworICAgICAgICAgICAgICAgICAnICAgYXR0ZW1wdGVkLCBhbmQgdGhlIHJlc3VsdCBvZiBzdHJpbmcgY29udmVyc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICdjb252ZXJ0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIFVuaWNvZGUgdXNpbmcgdGhlIHN5c3RlbSBkZWZhdWx0IGVuY29kaW5nLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgJworICAgICAgICAgICAgICAgICAnbWVhbmluZyBvZlxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICcieC5uYW1lIikgZm9yXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyAnCisgICAgICAgICAgICAgICAgICdpdCBmb3VuZFxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICduYW1lLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgJworICAgICAgICAgICAgICAgICAncmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgJworICAgICAgICAgICAgICAgICAnbWVjaGFuaXNtLFxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCAnCisgICAgICAgICAgICAgICAgICdhc3ltbWV0cnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzICcKKyAgICAgICAgICAgICAgICAgJ2RvbmUgYm90aCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgIl9fZ2V0YXR0cl9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ3dvdWxkIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sICcKKyAgICAgICAgICAgICAgICAgJ2J5IG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAgICAgICAgJyhidXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSAnCisgICAgICAgICAgICAgICAgICdnZXQgdG90YWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRyb2wgaW4gbmV3LXN0eWxlIGNsYXNzZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyAnCisgICAgICAgICAgICAgICAgICdpcyBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAnCisgICAgICAgICAgICAgICAgICcqdmFsdWUqIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlLCBpdFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIG5vdCBzaW1wbHkgZXhlY3V0ZSAic2VsZi5uYW1lID0gdmFsdWUiIC0tLSB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ3dvdWxkIGNhdXNlXG4nCisgICAgICAgICAgICAgICAgICcgICBhIHJlY3Vyc2l2ZSBjYWxsIHRvIGl0c2VsZi4gIEluc3RlYWQsIGl0IHNob3VsZCBpbnNlcnQgJworICAgICAgICAgICAgICAgICAndGhlIHZhbHVlIGluXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgZGljdGlvbmFyeSBvZiBpbnN0YW5jZSBhdHRyaWJ1dGVzLCBlLmcuLCAnCisgICAgICAgICAgICAgICAgICcic2VsZi5fX2RpY3RfX1tuYW1lXSA9XG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSIuICBGb3IgbmV3LXN0eWxlIGNsYXNzZXMsIHJhdGhlciB0aGFuIGFjY2Vzc2luZyB0aGUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRpY3Rpb25hcnksIGl0IHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSAnCisgICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgICcgICBuYW1lLCBmb3IgZXhhbXBsZSwgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCAnCisgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCAnCisgICAgICAgICAgICAgICAgICdvYmoubmFtZSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTW9yZSBhdHRyaWJ1dGUgYWNjZXNzIGZvciBuZXctc3R5bGUgY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB0byBuZXctc3R5bGUgY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlIGFjY2Vzc2VzICcKKyAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzcy4gSWYgdGhlIGNsYXNzIGFsc28gZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgbGF0dGVyIHdpbGwgbm90IGJlIGNhbGxlZCB1bmxlc3MgIl9fZ2V0YXR0cmlidXRlX18oKSIgJworICAgICAgICAgICAgICAgICAnZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLiBJbiBvcmRlciB0byBhdm9pZCBpbmZpbml0ZSAnCisgICAgICAgICAgICAgICAgICdyZWN1cnNpb24gaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsIHRoZSAnCisgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIHRvIGFjY2VzcyBhbnkgYXR0cmlidXRlcyBpdCAnCisgICAgICAgICAgICAgICAgICduZWVkcywgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCAib2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nIHVwICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbWV0aG9kcyBhcyB0aGUgcmVzdWx0IG9mIGltcGxpY2l0IGludm9jYXRpb24gdmlhICcKKyAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlIHN5bnRheFxuJworICAgICAgICAgICAgICAgICAnICAgICBvciBidWlsdC1pbiBmdW5jdGlvbnMuIFNlZSBTcGVjaWFsIG1ldGhvZCBsb29rdXAgZm9yICcKKyAgICAgICAgICAgICAgICAgJ25ldy1zdHlsZVxuJworICAgICAgICAgICAgICAgICAnICAgICBjbGFzc2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgJworICAgICAgICAgICAgICAgICAnYXBwZWFycyBpbiBhblxuJworICAgICAgICAgICAgICAgICAiKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyJ3MgIgorICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgJworICAgICAgICAgICAgICAgICAncGFyZW50cykuICBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2V4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnd2hvc2UgbmFtZSBpc1xuJworICAgICAgICAgICAgICAgICAndGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICcKKyAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICcKKyAgICAgICAgICAgICAgICAgJyJOb25lIiB3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIlxuJworICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBvd25lclxuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiAnCisgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG93bmVyIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ludm9raW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgJyJiaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAnbWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAnaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuJworICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QsIGl0XG4nCisgICAgICAgICAgICAgICAgICdpcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yICcKKyAgICAgICAgICAgICAgICAgJ2RlbGV0ZVxuJworICAgICAgICAgICAgICAgICAidGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgIgorICAgICAgICAgICAgICAgICAnImEueCIgaGFzIGFcbicKKyAgICAgICAgICAgICAgICAgJ2xvb2t1cCBjaGFpbiBzdGFydGluZyB3aXRoICJhLl9fZGljdF9fW1wneFwnXSIsIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgJyJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3NlcyBvZlxuJworICAgICAgICAgICAgICAgICAnInR5cGUoYSkiIGV4Y2x1ZGluZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSG93ZXZlciwgaWYgdGhlIGxvb2tlZC11cCB2YWx1ZSBpcyBhbiBvYmplY3QgZGVmaW5pbmcgb25lIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3IgYW5kXG4nCisgICAgICAgICAgICAgICAgICdpbnZva2UgdGhlIGRlc2NyaXB0b3IgbWV0aG9kIGluc3RlYWQuICBXaGVyZSB0aGlzIG9jY3VycyBpbiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3ByZWNlZGVuY2UgY2hhaW4gZGVwZW5kcyBvbiB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgd2VyZSAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFuZFxuJworICAgICAgICAgICAgICAgICAnaG93IHRoZXkgd2VyZSBjYWxsZWQuICBOb3RlIHRoYXQgZGVzY3JpcHRvcnMgYXJlIG9ubHkgJworICAgICAgICAgICAgICAgICAnaW52b2tlZCBmb3IgbmV3XG4nCisgICAgICAgICAgICAgICAgICdzdHlsZSBvYmplY3RzIG9yIGNsYXNzZXMgKG9uZXMgdGhhdCBzdWJjbGFzcyAib2JqZWN0KCkiIG9yICcKKyAgICAgICAgICAgICAgICAgJyJ0eXBlKCkiKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCAnCisgICAgICAgICAgICAgICAgICciYS54Ii4gSG93XG4nCisgICAgICAgICAgICAgICAgICd0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpcmVjdCBDYWxsXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlICcKKyAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbnN0YW5jZSBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBiaW5kaW5nIHRvIGEgbmV3LXN0eWxlIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgJworICAgICAgICAgICAgICAgICAndHJhbnNmb3JtZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGludG8gdGhlIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsICcKKyAgICAgICAgICAgICAgICAgJ3R5cGUoYSkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ2xhc3MgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhIG5ldy1zdHlsZSBjbGFzcywgIkEueCIgaXMgdHJhbnNmb3JtZWQgJworICAgICAgICAgICAgICAgICAnaW50byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJBLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKE5vbmUsIEEpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU3VwZXIgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgImEiIGlzIGFuIGluc3RhbmNlIG9mICJzdXBlciIsIHRoZW4gdGhlIGJpbmRpbmcgJworICAgICAgICAgICAgICAgICAnInN1cGVyKEIsXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSBiYXNlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzICJBIlxuJworICAgICAgICAgICAgICAgICAnICAgaW1tZWRpYXRlbHkgcHJlY2VkaW5nICJCIiBhbmQgdGhlbiBpbnZva2VzIHRoZSBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjYWxsOiAiQS5fX2RpY3RfX1tcJ21cJ10uX19nZXRfXyhvYmosIG9iai5fX2NsYXNzX18pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRm9yIGluc3RhbmNlIGJpbmRpbmdzLCB0aGUgcHJlY2VkZW5jZSBvZiBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb24gZGVwZW5kc1xuJworICAgICAgICAgICAgICAgICAnb24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgZGVzY3JpcHRvciAnCisgICAgICAgICAgICAgICAgICdjYW4gZGVmaW5lXG4nCisgICAgICAgICAgICAgICAgICdhbnkgY29tYmluYXRpb24gb2YgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIi4gIElmIGl0XG4nCisgICAgICAgICAgICAgICAgICdkb2VzIG5vdCBkZWZpbmUgIl9fZ2V0X18oKSIsIHRoZW4gYWNjZXNzaW5nIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnd2lsbCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmQvb3JcbicKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICduZWl0aGVyLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAnYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lICcKKyAgICAgICAgICAgICAgICAgJ2JvdGhcbicKKyAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSAnCisgICAgICAgICAgICAgICAgICdqdXN0IHRoZVxuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICciX19nZXRfXygpIlxuJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeS4gIEluXG4nCisgICAgICAgICAgICAgICAgICdjb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdQeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJjbGFzc21ldGhvZCgpIikgYXJlXG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgJworICAgICAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgICAgICdyZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHRvXG4nCisgICAgICAgICAgICAgICAgICdhY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnc2FtZSBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgJworICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgJ0FjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhICcKKyAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ19fc2xvdHNfX1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBib3RoIG9sZCBhbmQgbmV3LXN0eWxlIGNsYXNzZXMgaGF2ZSAnCisgICAgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGUgc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICdoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2UgdmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uICcKKyAgICAgICAgICAgICAgICAgJ2NhbiBiZWNvbWVcbicKKyAgICAgICAgICAgICAgICAgJ2FjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2UgbnVtYmVycyBvZiBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgJworICAgICAgICAgICAgICAgICAnbmV3LXN0eWxlXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBkZWZpbml0aW9uLiAgVGhlICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHRha2VzIGEgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2Ugb2ZcbicKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIHZhcmlhYmxlcyBhbmQgcmVzZXJ2ZXMganVzdCBlbm91Z2ggc3BhY2UgaW4gZWFjaCAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSB0b1xuJworICAgICAgICAgICAgICAgICAnaG9sZCBhIHZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAnCisgICAgICAgICAgICAgICAgICcqX19kaWN0X18qIGlzXG4nCisgICAgICAgICAgICAgICAgICdub3QgY3JlYXRlZCBmb3IgZWFjaCBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgJworICAgICAgICAgICAgICAgICAnb3Igc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gIElmICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgaW4gYVxuJworICAgICAgICAgICAgICAgICAnICAgbmV3LXN0eWxlIGNsYXNzLCAqX19zbG90c19fKiByZXNlcnZlcyBzcGFjZSBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RlY2xhcmVkXG4nCisgICAgICAgICAgICAgICAgICcgICB2YXJpYWJsZXMgYW5kIHByZXZlbnRzIHRoZSBhdXRvbWF0aWMgY3JlYXRpb24gb2YgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKiBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICpfX3dlYWtyZWZfXyogZm9yIGVhY2ggaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuMi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgJworICAgICAgICAgICAgICAgICAnYXNzaWduZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICcgIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgJworICAgICAgICAgICAgICAgICAnQXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICcKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIuIElmXG4nCisgICAgICAgICAgICAgICAgICcgIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4nCisgICAgICAgICAgICAgICAgICcgICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICBDaGFuZ2VkIGluIHZlcnNpb24gMi4zOiBQcmV2aW91c2x5LCBhZGRpbmcgIlwnX19kaWN0X19cJyIgJworICAgICAgICAgICAgICAgICAndG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIHdvdWxkIG5vdCBlbmFibGUgdGhlIGFzc2lnbm1lbnQgb2YgJworICAgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZXMgbm90IHNwZWNpZmljYWxseSBsaXN0ZWQgaW4gdGhlIHNlcXVlbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICcgIHZhcmlhYmxlIG5hbWVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX193ZWFrcmVmX18qIHZhcmlhYmxlIGZvciBlYWNoIGluc3RhbmNlLCAnCisgICAgICAgICAgICAgICAgICdjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICcgIGRlZmluaW5nICpfX3Nsb3RzX18qIGRvIG5vdCBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiBhZGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIlwnX193ZWFrcmVmX19cJyIgdG8gdGhlIHNlcXVlbmNlIG9mIHN0cmluZ3MgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICcgIGRlY2xhcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFByZXZpb3VzbHksIGFkZGluZyAnCisgICAgICAgICAgICAgICAgICciXCdfX3dlYWtyZWZfX1wnIiB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gd291bGQgbm90IGVuYWJsZSBzdXBwb3J0IGZvciB3ZWFrXG4nCisgICAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSAnCisgICAgICAgICAgICAgICAgICdjcmVhdGluZ1xuJworICAgICAgICAgICAgICAgICAnICBkZXNjcmlwdG9ycyAoSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKSBmb3IgZWFjaCB2YXJpYWJsZSAnCisgICAgICAgICAgICAgICAgICduYW1lLiAgQXMgYVxuJworICAgICAgICAgICAgICAgICAnICByZXN1bHQsIGNsYXNzIGF0dHJpYnV0ZXMgY2Fubm90IGJlIHVzZWQgdG8gc2V0IGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIGZvclxuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZXMgZGVmaW5lZCBieSAqX19zbG90c19fKjsgb3RoZXJ3aXNlLCB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFRoZSBhY3Rpb24gb2YgYSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiBpcyBsaW1pdGVkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICB3aGVyZSBpdCBpcyBkZWZpbmVkLiAgQXMgYSByZXN1bHQsIHN1YmNsYXNzZXMgd2lsbCBoYXZlIGEgJworICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKlxuJworICAgICAgICAgICAgICAgICAnICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW4gbmFtZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgb2YgYW55ICphZGRpdGlvbmFsKiBzbG90cykuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogSWYgYSBjbGFzcyBkZWZpbmVzIGEgc2xvdCBhbHNvIGRlZmluZWQgaW4gYSBiYXNlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzICcKKyAgICAgICAgICAgICAgICAgJ2luYWNjZXNzaWJsZVxuJworICAgICAgICAgICAgICAgICAnICAoZXhjZXB0IGJ5IHJldHJpZXZpbmcgaXRzIGRlc2NyaXB0b3IgZGlyZWN0bHkgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcykuXG4nCisgICAgICAgICAgICAgICAgICcgIFRoaXMgcmVuZGVycyB0aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbSB1bmRlZmluZWQuICBJbiB0aGUgJworICAgICAgICAgICAgICAgICAnZnV0dXJlLCBhXG4nCisgICAgICAgICAgICAgICAgICcgIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogTm9uZW1wdHkgKl9fc2xvdHNfXyogZG9lcyBub3Qgd29yayBmb3IgY2xhc3NlcyBkZXJpdmVkICcKKyAgICAgICAgICAgICAgICAgJ2Zyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgInZhcmlhYmxlLWxlbmd0aCIgYnVpbHQtaW4gdHlwZXMgc3VjaCBhcyAibG9uZyIsICJzdHIiIGFuZCAnCisgICAgICAgICAgICAgICAgICcidHVwbGUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gJworICAgICAgICAgICAgICAgICAnTWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgJyAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nICcKKyAgICAgICAgICAgICAgICAgJ21heSBiZVxuJworICAgICAgICAgICAgICAgICAnICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSAnCisgICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgICcgICpfX3Nsb3RzX18qLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjY6IFByZXZpb3VzbHksICpfX2NsYXNzX18qIGFzc2lnbm1lbnQgJworICAgICAgICAgICAgICAgICAncmFpc2VkIGFuXG4nCisgICAgICAgICAgICAgICAgICcgIGVycm9yIGlmIGVpdGhlciBuZXcgb3Igb2xkIGNsYXNzIGhhZCAqX19zbG90c19fKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvblxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCwgbmV3LXN0eWxlIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICcKKyAgICAgICAgICAgICAgICAgJyJ0eXBlKCkiLiBBIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uIGlzIHJlYWQgaW50byBhIHNlcGFyYXRlIG5hbWVzcGFjZSBhbmQgdGhlIHZhbHVlICcKKyAgICAgICAgICAgICAgICAgJ29mIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICduYW1lIGlzIGJvdW5kIHRvIHRoZSByZXN1bHQgb2YgInR5cGUobmFtZSwgYmFzZXMsIGRpY3QpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyByZWFkLCBpZiAqX19tZXRhY2xhc3NfXyogaXMgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCB0aGVuXG4nCisgICAgICAgICAgICAgICAgICd0aGUgY2FsbGFibGUgYXNzaWduZWQgdG8gaXQgd2lsbCBiZSBjYWxsZWQgaW5zdGVhZCBvZiAnCisgICAgICAgICAgICAgICAgICcidHlwZSgpIi4gVGhpc1xuJworICAgICAgICAgICAgICAgICAnYWxsb3dzIGNsYXNzZXMgb3IgZnVuY3Rpb25zIHRvIGJlIHdyaXR0ZW4gd2hpY2ggbW9uaXRvciBvciAnCisgICAgICAgICAgICAgICAgICdhbHRlciB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGNyZWF0aW9uIHByb2Nlc3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogTW9kaWZ5aW5nIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IHByaW9yIHRvIHRoZSBjbGFzcyBiZWluZyAnCisgICAgICAgICAgICAgICAgICdjcmVhdGVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFJldHVybmluZyBhbiBpbnN0YW5jZSBvZiBhbm90aGVyIGNsYXNzIC0tIGVzc2VudGlhbGx5ICcKKyAgICAgICAgICAgICAgICAgJ3BlcmZvcm1pbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgdGhlIHJvbGUgb2YgYSBmYWN0b3J5IGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJUaGVzZSBzdGVwcyB3aWxsIGhhdmUgdG8gYmUgcGVyZm9ybWVkIGluIHRoZSBtZXRhY2xhc3MncyAiCisgICAgICAgICAgICAgICAgICciX19uZXdfXygpIlxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kIC0tICJ0eXBlLl9fbmV3X18oKSIgY2FuIHRoZW4gYmUgY2FsbGVkIGZyb20gdGhpcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2QgdG9cbicKKyAgICAgICAgICAgICAgICAgJ2NyZWF0ZSBhIGNsYXNzIHdpdGggZGlmZmVyZW50IHByb3BlcnRpZXMuICBUaGlzIGV4YW1wbGUgYWRkcyAnCisgICAgICAgICAgICAgICAgICdhIG5ld1xuJworICAgICAgICAgICAgICAgICAnZWxlbWVudCB0byB0aGUgY2xhc3MgZGljdGlvbmFyeSBiZWZvcmUgY3JlYXRpbmcgdGhlIGNsYXNzOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBtZXRhY2xzKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBfX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpOlxuJworICAgICAgICAgICAgICAgICAiICAgICAgICAgICBkaWN0Wydmb28nXSA9ICdtZXRhY2xzIHdhcyBoZXJlJ1xuIgorICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXR1cm4gdHlwZS5fX25ld19fKG1jcywgbmFtZSwgYmFzZXMsIGRpY3QpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1lvdSBjYW4gb2YgY291cnNlIGFsc28gb3ZlcnJpZGUgb3RoZXIgY2xhc3MgbWV0aG9kcyAob3IgYWRkICcKKyAgICAgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyk7IGZvciBleGFtcGxlIGRlZmluaW5nIGEgY3VzdG9tICJfX2NhbGxfXygpIiBtZXRob2QgJworICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3MgYWxsb3dzIGN1c3RvbSBiZWhhdmlvciB3aGVuIHRoZSBjbGFzcyBpcyBjYWxsZWQsICcKKyAgICAgICAgICAgICAgICAgJ2UuZy4gbm90XG4nCisgICAgICAgICAgICAgICAgICdhbHdheXMgY3JlYXRpbmcgYSBuZXcgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ19fbWV0YWNsYXNzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyB2YXJpYWJsZSBjYW4gYmUgYW55IGNhbGxhYmxlIGFjY2VwdGluZyBhcmd1bWVudHMgZm9yICcKKyAgICAgICAgICAgICAgICAgJyJuYW1lIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJiYXNlcyIsIGFuZCAiZGljdCIuICBVcG9uIGNsYXNzIGNyZWF0aW9uLCB0aGUgY2FsbGFibGUgJworICAgICAgICAgICAgICAgICAnaXMgdXNlZFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBvZiB0aGUgYnVpbHQtaW4gInR5cGUoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuMi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZVxuJworICAgICAgICAgICAgICAgICAncnVsZXM6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogSWYgImRpY3RbXCdfX21ldGFjbGFzc19fXCddIiBleGlzdHMsIGl0IGlzIHVzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogT3RoZXJ3aXNlLCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgYmFzZSBjbGFzcywgaXRzICcKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzcyBpc1xuJworICAgICAgICAgICAgICAgICAnICB1c2VkICh0aGlzIGxvb2tzIGZvciBhICpfX2NsYXNzX18qIGF0dHJpYnV0ZSBmaXJzdCBhbmQgaWYgJworICAgICAgICAgICAgICAgICAnbm90IGZvdW5kLFxuJworICAgICAgICAgICAgICAgICAnICB1c2VzIGl0cyB0eXBlKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBPdGhlcndpc2UsIGlmIGEgZ2xvYmFsIHZhcmlhYmxlIG5hbWVkIF9fbWV0YWNsYXNzX18gJworICAgICAgICAgICAgICAgICAnZXhpc3RzLCBpdCBpc1xuJworICAgICAgICAgICAgICAgICAnICB1c2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIE90aGVyd2lzZSwgdGhlIG9sZC1zdHlsZSwgY2xhc3NpYyBtZXRhY2xhc3MgJworICAgICAgICAgICAgICAgICAnKHR5cGVzLkNsYXNzVHlwZSkgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgdXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHBvdGVudGlhbCB1c2VzIGZvciBtZXRhY2xhc3NlcyBhcmUgYm91bmRsZXNzLiBTb21lIGlkZWFzICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgaGF2ZVxuJworICAgICAgICAgICAgICAgICAnYmVlbiBleHBsb3JlZCBpbmNsdWRpbmcgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCAnCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNcbicKKyAgICAgICAgICAgICAgICAgJ2RlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgJworICAgICAgICAgICAgICAgICAnZnJhbWV3b3JrcywgYW5kXG4nCisgICAgICAgICAgICAgICAgICdhdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAyLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJpc2luc3RhbmNlKCkiIGFuZCAiaXNzdWJjbGFzcygpIiBidWlsdC1pbiBmdW5jdGlvbnMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luIHBhcnRpY3VsYXIsIHRoZSBtZXRhY2xhc3MgImFiYy5BQkNNZXRhIiBpbXBsZW1lbnRzIHRoZXNlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgaW5cbicKKyAgICAgICAgICAgICAgICAgJ29yZGVyIHRvIGFsbG93IHRoZSBhZGRpdGlvbiBvZiBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpICcKKyAgICAgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgICAgICcidmlydHVhbCBiYXNlIGNsYXNzZXMiIHRvIGFueSBjbGFzcyBvciB0eXBlIChpbmNsdWRpbmcgJworICAgICAgICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgICAgICAgJ3R5cGVzKSwgaW5jbHVkaW5nIG90aGVyIEFCQ3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9faW5zdGFuY2VjaGVja19fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiAqaW5zdGFuY2UqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCAnCisgICAgICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICAgICAnICAgaW5kaXJlY3QpIGluc3RhbmNlIG9mICpjbGFzcyouIElmIGRlZmluZWQsIGNhbGxlZCB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJpc2luc3RhbmNlKGluc3RhbmNlLCBjbGFzcykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBzdWJjbGFzcylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgKnN1YmNsYXNzKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3QgJworICAgICAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluZGlyZWN0KSBzdWJjbGFzcyBvZiAqY2xhc3MqLiAgSWYgZGVmaW5lZCwgY2FsbGVkIHRvICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgImlzc3ViY2xhc3Moc3ViY2xhc3MsIGNsYXNzKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCB0aGVzZSBtZXRob2RzIGFyZSBsb29rZWQgdXAgb24gdGhlIHR5cGUgJworICAgICAgICAgICAgICAgICAnKG1ldGFjbGFzcykgb2YgYVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MuICBUaGV5IGNhbm5vdCBiZSBkZWZpbmVkIGFzIGNsYXNzIG1ldGhvZHMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2FjdHVhbCBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBsb29rdXAgb2Ygc3BlY2lhbCBtZXRob2RzIHRoYXQgJworICAgICAgICAgICAgICAgICAnYXJlIGNhbGxlZFxuJworICAgICAgICAgICAgICAgICAnb24gaW5zdGFuY2VzLCBvbmx5IGluIHRoaXMgY2FzZSB0aGUgaW5zdGFuY2UgaXMgaXRzZWxmIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICoqUEVQIDMxMTkqKiAtIEludHJvZHVjaW5nIEFic3RyYWN0IEJhc2UgQ2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAnICAgICBJbmNsdWRlcyB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgY3VzdG9taXppbmcgJworICAgICAgICAgICAgICAgICAnImlzaW5zdGFuY2UoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJpc3N1YmNsYXNzKCkiIGJlaGF2aW9yIHRocm91Z2ggIl9faW5zdGFuY2VjaGVja19fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAnICAgICAiX19zdWJjbGFzc2NoZWNrX18oKSIsIHdpdGggbW90aXZhdGlvbiBmb3IgdGhpcyAnCisgICAgICAgICAgICAgICAgICdmdW5jdGlvbmFsaXR5IGluXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZSBjb250ZXh0IG9mIGFkZGluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKHNlZSB0aGUgJworICAgICAgICAgICAgICAgICAnImFiYyJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgbW9kdWxlKSB0byB0aGUgbGFuZ3VhZ2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiAnCisgICAgICAgICAgICAgICAgICd0aGlzIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdDb250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpICcKKyAgICAgICAgICAgICAgICAgJ29yIG1hcHBpbmdzXG4nCisgICAgICAgICAgICAgICAgICcobGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzICcKKyAgICAgICAgICAgICAgICAgJ3dlbGwuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgJ2ZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoICIwIDw9IGsgJworICAgICAgICAgICAgICAgICAnPCBOIiB3aGVyZVxuJworICAgICAgICAgICAgICAgICAnKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaCAnCisgICAgICAgICAgICAgICAgICdkZWZpbmUgYVxuJworICAgICAgICAgICAgICAgICAncmFuZ2Ugb2YgaXRlbXMuIChGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIHRoZSBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyJfX2dldHNsaWNlX18oKSIgKHNlZSBiZWxvdykgY2FuIGFsc28gYmUgZGVmaW5lZCB0byBoYW5kbGUgJworICAgICAgICAgICAgICAgICAnc2ltcGxlLCBidXRcbicKKyAgICAgICAgICAgICAgICAgJ25vdCBleHRlbmRlZCBzbGljZXMuKSBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgJworICAgICAgICAgICAgICAgICAncHJvdmlkZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgImtleXMoKSIsICJ2YWx1ZXMoKSIsICJpdGVtcygpIiwgImhhc19rZXkoKSIsICcKKyAgICAgICAgICAgICAgICAgJyJnZXQoKSIsXG4nCisgICAgICAgICAgICAgICAgICciY2xlYXIoKSIsICJzZXRkZWZhdWx0KCkiLCAiaXRlcmtleXMoKSIsICJpdGVydmFsdWVzKCkiLFxuJworICAgICAgICAgICAgICAgICAnIml0ZXJpdGVtcygpIiwgInBvcCgpIiwgInBvcGl0ZW0oKSIsICJjb3B5KCkiLCBhbmQgJworICAgICAgICAgICAgICAgICAnInVwZGF0ZSgpIiBiZWhhdmluZ1xuJworICAgICAgICAgICAgICAgICAic2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLiAgIgorICAgICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICAgICciVXNlckRpY3QiIG1vZHVsZSBwcm92aWRlcyBhICJEaWN0TWl4aW4iIGNsYXNzIHRvIGhlbHAgJworICAgICAgICAgICAgICAgICAnY3JlYXRlIHRob3NlXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsICcKKyAgICAgICAgICAgICAgICAgJyJfX3NldGl0ZW1fXygpIixcbicKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlcyBzaG91bGQgJworICAgICAgICAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIiwgJworICAgICAgICAgICAgICAgICAnImluc2VydCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob24gJworICAgICAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAgICAgJ2xpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnQgJworICAgICAgICAgICAgICAgICAnYWRkaXRpb25cbicKKyAgICAgICAgICAgICAgICAgJyhtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZyAnCisgICAgICAgICAgICAgICAgICdyZXBldGl0aW9uKSBieVxuJworICAgICAgICAgICAgICAgICAnZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIiwgJworICAgICAgICAgICAgICAgICAnIl9faWFkZF9fKCkiLFxuJworICAgICAgICAgICAgICAgICAnIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZCBiZWxvdzsgJworICAgICAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIG5vdCBkZWZpbmUgIl9fY29lcmNlX18oKSIgb3Igb3RoZXIgbnVtZXJpY2FsICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdG9ycy4gIEl0IGlzXG4nCisgICAgICAgICAgICAgICAgICdyZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4nCisgICAgICAgICAgICAgICAgICciX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdG9yO1xuJworICAgICAgICAgICAgICAgICAnZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBiZSBlcXVpdmFsZW50IG9mICJoYXNfa2V5KCkiOyBmb3IgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzLFxuJworICAgICAgICAgICAgICAgICAnaXQgc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyICcKKyAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJ2JvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlICJfX2l0ZXJfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QgdG8gYWxsb3dcbicKKyAgICAgICAgICAgICAgICAgJ2VmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgJyJfX2l0ZXJfXygpIlxuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHRoZSBzYW1lIGFzICJpdGVya2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVuX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gICcKKyAgICAgICAgICAgICAgICAgJ1Nob3VsZCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiAnCisgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fbm9uemVyb19fKCkiIG1ldGhvZCBhbmQgd2hvc2UgJworICAgICAgICAgICAgICAgICAnIl9fbGVuX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhICcKKyAgICAgICAgICAgICAgICAgJ0Jvb2xlYW4gY29udGV4dC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBJbiBDUHl0aG9uLCB0aGUgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgICcgICByZXF1aXJlZCB0byBiZSBhdCBtb3N0ICJzeXMubWF4c2l6ZSIuIElmIHRoZSBsZW5ndGggaXMgJworICAgICAgICAgICAgICAgICAnbGFyZ2VyIHRoYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJzeXMubWF4c2l6ZSIgc29tZSBmZWF0dXJlcyAoc3VjaCBhcyAibGVuKCkiKSBtYXkgcmFpc2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICJPdmVyZmxvd0Vycm9yIi4gIFRvIHByZXZlbnQgcmFpc2luZyAiT3ZlcmZsb3dFcnJvciIgYnkgJworICAgICAgICAgICAgICAgICAndHJ1dGggdmFsdWVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRlc3RpbmcsIGFuIG9iamVjdCBtdXN0IGRlZmluZSBhICJfX25vbnplcm9fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZXZhbHVhdGlvbiBvZiAic2VsZltrZXldIi4gRm9yICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIHR5cGVzLFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSBvYmplY3RzLiAgJworICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSBpbmRleGVzIChpZiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3Mgd2lzaGVzXG4nCisgICAgICAgICAgICAgICAgICcgICB0byBlbXVsYXRlIGEgc2VxdWVuY2UgdHlwZSkgaXMgdXAgdG8gdGhlICJfX2dldGl0ZW1fXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QuIElmXG4nCisgICAgICAgICAgICAgICAgICcgICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSAnCisgICAgICAgICAgICAgICAgICdyYWlzZWQ7IGlmIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICBhIHZhbHVlIG91dHNpZGUgdGhlIHNldCBvZiBpbmRleGVzIGZvciB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAnKGFmdGVyIGFueVxuJworICAgICAgICAgICAgICAgICAnICAgc3BlY2lhbCBpbnRlcnByZXRhdGlvbiBvZiBuZWdhdGl2ZSB2YWx1ZXMpLCAiSW5kZXhFcnJvciIgJworICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICcgICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250YWluZXIpLCAiS2V5RXJyb3IiIHNob3VsZCBiZSByYWlzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJmb3IiIGxvb3BzIGV4cGVjdCB0aGF0IGFuICJJbmRleEVycm9yIiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgJ3JhaXNlZCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCBvZiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX21pc3NpbmdfXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAic2VsZltrZXldIiAnCisgICAgICAgICAgICAgICAgICdmb3IgZGljdFxuJworICAgICAgICAgICAgICAgICAnICAgc3ViY2xhc3NlcyB3aGVuIGtleSBpcyBub3QgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lIG5vdGUgJworICAgICAgICAgICAgICAgICAnYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCBjaGFuZ2VzIHRvIHRoZSB2YWx1ZXMgZm9yIGtleXMsIG9yIGlmICcKKyAgICAgICAgICAgICAgICAgJ25ldyBrZXlzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgJ3JlcGxhY2VkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogJworICAgICAgICAgICAgICAgICAndmFsdWVzIGFzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZba2V5XSIuICBTYW1lIG5vdGUgJworICAgICAgICAgICAgICAgICAnYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19nZXRpdGVtX18oKSIuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGZvciAnCisgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgaWYgJworICAgICAgICAgICAgICAgICAnZWxlbWVudHNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbiBiZSByZW1vdmVkIGZyb20gdGhlIHNlcXVlbmNlLiAgVGhlIHNhbWUgZXhjZXB0aW9ucyAnCisgICAgICAgICAgICAgICAgICdzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJhaXNlZCBmb3IgaW1wcm9wZXIgKmtleSogdmFsdWVzIGFzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciBhICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lci5cbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXQgY2FuICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIuICBGb3IgbWFwcGluZ3MsIGl0ICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZFxuJworICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIsIGFuZCBzaG91bGQgYWxzbyAnCisgICAgICAgICAgICAgICAgICdiZSBtYWRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhdmFpbGFibGUgYXMgdGhlIG1ldGhvZCAiaXRlcmtleXMoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEl0ZXJhdG9yIG9iamVjdHMgYWxzbyBuZWVkIHRvIGltcGxlbWVudCB0aGlzIG1ldGhvZDsgdGhleSAnCisgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlcXVpcmVkIHRvIHJldHVybiB0aGVtc2VsdmVzLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gJworICAgICAgICAgICAgICAgICAnaXRlcmF0b3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMsIHNlZSBJdGVyYXRvciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSAicmV2ZXJzZWQoKSIgYnVpbHQtaW4gdG8gJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3IgJworICAgICAgICAgICAgICAgICAnb2JqZWN0IHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSAnCisgICAgICAgICAgICAgICAgICdvcmRlci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgdGhlICJfX3JldmVyc2VkX18oKSIgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJyZXZlcnNlZCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlIHByb3RvY29sICcKKyAgICAgICAgICAgICAgICAgJygiX19sZW5fXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2dldGl0ZW1fXygpIikuICBPYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAncHJvdG9jb2xcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBvbmx5IHByb3ZpZGUgIl9fcmV2ZXJzZWRfXygpIiBpZiB0aGV5IGNhbiBwcm92aWRlICcKKyAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlZCBieVxuJworICAgICAgICAgICAgICAgICAnICAgInJldmVyc2VkKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAyLjYuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzICgiaW4iIGFuZCAibm90IGluIikgYXJlICcKKyAgICAgICAgICAgICAgICAgJ25vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgJworICAgICAgICAgICAgICAgICAnY29udGFpbmVyXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3RzIGNhbiBzdXBwbHkgdGhlIGZvbGxvd2luZyBzcGVjaWFsIG1ldGhvZCB3aXRoIGEgbW9yZSAnCisgICAgICAgICAgICAgICAgICdlZmZpY2llbnRcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB3aGljaCBhbHNvIGRvZXMgbm90IHJlcXVpcmUgdGhlIG9iamVjdCBiZSBhICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb250YWluc19fKHNlbGYsIGl0ZW0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm4gdHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgaWYgKml0ZW0qIGlzIGluICpzZWxmKiwgZmFsc2Ugb3RoZXJ3aXNlLiAgRm9yIG1hcHBpbmcgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cywgdGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGNvbnNpZGVyIHRoZSBrZXlzIG9mIHRoZSBtYXBwaW5nIHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXktaXRlbSBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRm9yIG9iamVjdHMgdGhhdCBkb25cJ3QgZGVmaW5lICJfX2NvbnRhaW5zX18oKSIsIHRoZSAnCisgICAgICAgICAgICAgICAgICdtZW1iZXJzaGlwIHRlc3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IHRyaWVzIGl0ZXJhdGlvbiB2aWEgIl9faXRlcl9fKCkiLCB0aGVuIHRoZSBvbGQgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgdGhpcyBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgbGFuZ3VhZ2UgcmVmZXJlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uYWwgbWV0aG9kcyBmb3IgZW11bGF0aW9uIG9mIHNlcXVlbmNlIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG9wdGlvbmFsIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZnVydGhlciAnCisgICAgICAgICAgICAgICAgICdlbXVsYXRlXG4nCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBvYmplY3RzLiAgSW1tdXRhYmxlIHNlcXVlbmNlcyBtZXRob2RzIHNob3VsZCBhdCAnCisgICAgICAgICAgICAgICAgICdtb3N0IG9ubHlcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluZSAiX19nZXRzbGljZV9fKCkiOyBtdXRhYmxlIHNlcXVlbmNlcyBtaWdodCBkZWZpbmUgYWxsICcKKyAgICAgICAgICAgICAgICAgJ3RocmVlXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRzbGljZV9fKHNlbGYsIGksIGopXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIERlcHJlY2F0ZWQgc2luY2UgdmVyc2lvbiAyLjA6IFN1cHBvcnQgc2xpY2Ugb2JqZWN0cyBhcyAnCisgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgICAgICcgICB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gKEhvd2V2ZXIsIGJ1aWx0LWluIHR5cGVzICcKKyAgICAgICAgICAgICAgICAgJ2luIENQeXRob25cbicKKyAgICAgICAgICAgICAgICAgJyAgIGN1cnJlbnRseSBzdGlsbCBpbXBsZW1lbnQgIl9fZ2V0c2xpY2VfXygpIi4gIFRoZXJlZm9yZSwgJworICAgICAgICAgICAgICAgICAneW91IGhhdmUgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIG92ZXJyaWRlIGl0IGluIGRlcml2ZWQgY2xhc3NlcyB3aGVuIGltcGxlbWVudGluZyAnCisgICAgICAgICAgICAgICAgICdzbGljaW5nLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2k6al0iLiBUaGUgJworICAgICAgICAgICAgICAgICAncmV0dXJuZWQgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgYmUgb2YgdGhlIHNhbWUgdHlwZSBhcyAqc2VsZiouICBOb3RlIHRoYXQgbWlzc2luZyAnCisgICAgICAgICAgICAgICAgICcqaSogb3IgKmoqXG4nCisgICAgICAgICAgICAgICAgICcgICBpbiB0aGUgc2xpY2UgZXhwcmVzc2lvbiBhcmUgcmVwbGFjZWQgYnkgemVybyBvciAnCisgICAgICAgICAgICAgICAgICcic3lzLm1heHNpemUiLFxuJworICAgICAgICAgICAgICAgICAnICAgcmVzcGVjdGl2ZWx5LiAgSWYgbmVnYXRpdmUgaW5kZXhlcyBhcmUgdXNlZCBpbiB0aGUgc2xpY2UsICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSBpcyBhZGRlZCB0byB0aGF0IGluZGV4LiBJZiB0aGUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgZG9lc1xuJworICAgICAgICAgICAgICAgICAnICAgbm90IGltcGxlbWVudCB0aGUgIl9fbGVuX18oKSIgbWV0aG9kLCBhbiAiQXR0cmlidXRlRXJyb3IiICcKKyAgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgICcgICByYWlzZWQuIE5vIGd1YXJhbnRlZSBpcyBtYWRlIHRoYXQgaW5kZXhlcyBhZGp1c3RlZCB0aGlzICcKKyAgICAgICAgICAgICAgICAgJ3dheSBhcmUgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBzdGlsbCBuZWdhdGl2ZS4gIEluZGV4ZXMgd2hpY2ggYXJlIGdyZWF0ZXIgdGhhbiB0aGUgJworICAgICAgICAgICAgICAgICAnbGVuZ3RoIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc2VxdWVuY2UgYXJlIG5vdCBtb2RpZmllZC4gSWYgbm8gIl9fZ2V0c2xpY2VfXygpIiBpcyAnCisgICAgICAgICAgICAgICAgICdmb3VuZCwgYSBzbGljZVxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0IGlzIGNyZWF0ZWQgaW5zdGVhZCwgYW5kIHBhc3NlZCB0byAiX19nZXRpdGVtX18oKSIgJworICAgICAgICAgICAgICAgICAnaW5zdGVhZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0c2xpY2VfXyhzZWxmLCBpLCBqLCBzZXF1ZW5jZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2k6al0iLiBTYW1lIG5vdGVzICcKKyAgICAgICAgICAgICAgICAgJ2ZvciAqaSpcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFuZCAqaiogYXMgZm9yICJfX2dldHNsaWNlX18oKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQuIElmIG5vICJfX3NldHNsaWNlX18oKSIgaXMgJworICAgICAgICAgICAgICAgICAnZm91bmQsIG9yIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgZXh0ZW5kZWQgc2xpY2luZyBvZiB0aGUgZm9ybSAic2VsZltpOmo6a10iLCBhIHNsaWNlICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgY3JlYXRlZCwgYW5kIHBhc3NlZCB0byAiX19zZXRpdGVtX18oKSIsIGluc3RlYWQgb2YgJworICAgICAgICAgICAgICAgICAnIl9fc2V0c2xpY2VfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgYmVpbmcgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxzbGljZV9fKHNlbGYsIGksIGopXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgZGVsZXRpb24gb2YgInNlbGZbaTpqXSIuIFNhbWUgbm90ZXMgJworICAgICAgICAgICAgICAgICAnZm9yICppKiBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICpqKiBhcyBmb3IgIl9fZ2V0c2xpY2VfXygpIi4gVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZC4gJworICAgICAgICAgICAgICAgICAnSWYgbm9cbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2RlbHNsaWNlX18oKSIgaXMgZm91bmQsIG9yIGZvciBleHRlbmRlZCBzbGljaW5nIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdmb3JtXG4nCisgICAgICAgICAgICAgICAgICcgICAic2VsZltpOmo6a10iLCBhIHNsaWNlIG9iamVjdCBpcyBjcmVhdGVkLCBhbmQgcGFzc2VkIHRvXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19kZWxpdGVtX18oKSIsIGluc3RlYWQgb2YgIl9fZGVsc2xpY2VfXygpIiBiZWluZyAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ05vdGljZSB0aGF0IHRoZXNlIG1ldGhvZHMgYXJlIG9ubHkgaW52b2tlZCB3aGVuIGEgc2luZ2xlICcKKyAgICAgICAgICAgICAgICAgJ3NsaWNlIHdpdGggYVxuJworICAgICAgICAgICAgICAgICAnc2luZ2xlIGNvbG9uIGlzIHVzZWQsIGFuZCB0aGUgc2xpY2UgbWV0aG9kIGlzIGF2YWlsYWJsZS4gICcKKyAgICAgICAgICAgICAgICAgJ0ZvciBzbGljZVxuJworICAgICAgICAgICAgICAgICAnb3BlcmF0aW9ucyBpbnZvbHZpbmcgZXh0ZW5kZWQgc2xpY2Ugbm90YXRpb24sIG9yIGluIGFic2VuY2UgJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICdzbGljZSBtZXRob2RzLCAiX19nZXRpdGVtX18oKSIsICJfX3NldGl0ZW1fXygpIiBvciAnCisgICAgICAgICAgICAgICAgICciX19kZWxpdGVtX18oKSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCB3aXRoIGEgc2xpY2Ugb2JqZWN0IGFzIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVtb25zdHJhdGUgaG93IHRvIG1ha2UgeW91ciBwcm9ncmFtICcKKyAgICAgICAgICAgICAgICAgJ29yIG1vZHVsZVxuJworICAgICAgICAgICAgICAgICAnY29tcGF0aWJsZSB3aXRoIGVhcmxpZXIgdmVyc2lvbnMgb2YgUHl0aG9uIChhc3N1bWluZyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHNcbicKKyAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiwgIl9fc2V0aXRlbV9fKCkiIGFuZCAiX19kZWxpdGVtX18oKSIgc3VwcG9ydCAnCisgICAgICAgICAgICAgICAgICdzbGljZVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0cyBhcyBhcmd1bWVudHMpOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNeUNsYXNzOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpbmRleCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpbmRleCwgdmFsdWUpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgaW5kZXgpOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm8gPCAoMiwgMCk6XG4nCisgICAgICAgICAgICAgICAgICIgICAgICAgICAgICMgVGhleSB3b24ndCBiZSBkZWZpbmVkIGlmIHZlcnNpb24gaXMgYXQgbGVhc3QgIgorICAgICAgICAgICAgICAgICAnMi4wIGZpbmFsXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgZGVmIF9fZ2V0c2xpY2VfXyhzZWxmLCBpLCBqKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgIHJldHVybiBzZWxmW21heCgwLCBpKTptYXgoMCwgaik6XVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICBkZWYgX19zZXRzbGljZV9fKHNlbGYsIGksIGosIHNlcSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgICAgICBzZWxmW21heCgwLCBpKTptYXgoMCwgaik6XSA9IHNlcVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICBkZWYgX19kZWxzbGljZV9fKHNlbGYsIGksIGopOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgZGVsIHNlbGZbbWF4KDAsIGkpOm1heCgwLCBqKTpdXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ05vdGUgdGhlIGNhbGxzIHRvICJtYXgoKSI7IHRoZXNlIGFyZSBuZWNlc3NhcnkgYmVjYXVzZSBvZiAnCisgICAgICAgICAgICAgICAgICd0aGUgaGFuZGxpbmdcbicKKyAgICAgICAgICAgICAgICAgJ29mIG5lZ2F0aXZlIGluZGljZXMgYmVmb3JlIHRoZSAiX18qc2xpY2VfXygpIiBtZXRob2RzIGFyZSAnCisgICAgICAgICAgICAgICAgICdjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICdXaGVuIG5lZ2F0aXZlIGluZGV4ZXMgYXJlIHVzZWQsIHRoZSAiX18qaXRlbV9fKCkiIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICAncmVjZWl2ZSB0aGVtXG4nCisgICAgICAgICAgICAgICAgICdhcyBwcm92aWRlZCwgYnV0IHRoZSAiX18qc2xpY2VfXygpIiBtZXRob2RzIGdldCBhICJjb29rZWQiICcKKyAgICAgICAgICAgICAgICAgJ2Zvcm0gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICdpbmRleCB2YWx1ZXMuICBGb3IgZWFjaCBuZWdhdGl2ZSBpbmRleCB2YWx1ZSwgdGhlIGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIGlzIGFkZGVkIHRvIHRoZSBpbmRleCBiZWZvcmUgY2FsbGluZyB0aGUgbWV0aG9kICcKKyAgICAgICAgICAgICAgICAgJyh3aGljaCBtYXlcbicKKyAgICAgICAgICAgICAgICAgJ3N0aWxsIHJlc3VsdCBpbiBhIG5lZ2F0aXZlIGluZGV4KTsgdGhpcyBpcyB0aGUgY3VzdG9tYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ2hhbmRsaW5nIG9mXG4nCisgICAgICAgICAgICAgICAgICduZWdhdGl2ZSBpbmRleGVzIGJ5IHRoZSBidWlsdC1pbiBzZXF1ZW5jZSB0eXBlcywgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICciX18qaXRlbV9fKCkiXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGFyZSBleHBlY3RlZCB0byBkbyB0aGlzIGFzIHdlbGwuICBIb3dldmVyLCBzaW5jZSAnCisgICAgICAgICAgICAgICAgICd0aGV5IHNob3VsZFxuJworICAgICAgICAgICAgICAgICAnYWxyZWFkeSBiZSBkb2luZyB0aGF0LCBuZWdhdGl2ZSBpbmRleGVzIGNhbm5vdCBiZSBwYXNzZWQgaW47ICcKKyAgICAgICAgICAgICAgICAgJ3RoZXkgbXVzdFxuJworICAgICAgICAgICAgICAgICAnYmUgY29uc3RyYWluZWQgdG8gdGhlIGJvdW5kcyBvZiB0aGUgc2VxdWVuY2UgYmVmb3JlIGJlaW5nICcKKyAgICAgICAgICAgICAgICAgJ3Bhc3NlZCB0b1xuJworICAgICAgICAgICAgICAgICAndGhlICJfXyppdGVtX18oKSIgbWV0aG9kcy4gQ2FsbGluZyAibWF4KDAsIGkpIiBjb252ZW5pZW50bHkgJworICAgICAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAndGhlIHByb3BlciB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnTWV0aG9kcyBjb3JyZXNwb25kaW5nIHRvIG9wZXJhdGlvbnMgdGhhdCBhcmUgbm90IHN1cHBvcnRlZCAnCisgICAgICAgICAgICAgICAgICdieSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3BhcnRpY3VsYXIga2luZCBvZiBudW1iZXIgaW1wbGVtZW50ZWQgKGUuZy4sIGJpdHdpc2UgJworICAgICAgICAgICAgICAgICAnb3BlcmF0aW9ucyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJ25vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19tdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIi8vIiwgIiUiLCAiZGl2bW9kKCkiLCAnCisgICAgICAgICAgICAgICAgICcicG93KCkiLCAiKioiLFxuJworICAgICAgICAgICAgICAgICAnICAgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgZXhwcmVzc2lvbiAieCArIHkiLCB3aGVyZSAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICd0aGF0IGhhcyBhblxuJworICAgICAgICAgICAgICAgICAnICAgIl9fYWRkX18oKSIgbWV0aG9kLCAieC5fX2FkZF9fKHkpIiBpcyBjYWxsZWQuICBUaGUgJworICAgICAgICAgICAgICAgICAnIl9fZGl2bW9kX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gdXNpbmcgIl9fZmxvb3JkaXZfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlIHJlbGF0ZWQgdG8gIl9fdHJ1ZWRpdl9fKCkiICcKKyAgICAgICAgICAgICAgICAgJyhkZXNjcmliZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlbG93KS4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCB0byAnCisgICAgICAgICAgICAgICAgICdhY2NlcHQgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICcgICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBkaXZpc2lvbiBvcGVyYXRvciAoIi8iKSBpcyBpbXBsZW1lbnRlZCBieSB0aGVzZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX190cnVlZGl2X18oKSIgbWV0aG9kIGlzIHVzZWQgd2hlbiAiX19mdXR1cmVfXy5kaXZpc2lvbiIgJworICAgICAgICAgICAgICAgICAnaXMgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGVmZmVjdCwgb3RoZXJ3aXNlICJfX2Rpdl9fKCkiIGlzIHVzZWQuICBJZiBvbmx5IG9uZSBvZiAnCisgICAgICAgICAgICAgICAgICd0aGVzZSB0d29cbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZHMgaXMgZGVmaW5lZCwgdGhlIG9iamVjdCB3aWxsIG5vdCBzdXBwb3J0IGRpdmlzaW9uICcKKyAgICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgYWx0ZXJuYXRlIGNvbnRleHQ7ICJUeXBlRXJyb3IiIHdpbGwgYmUgcmFpc2VkIGluc3RlYWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIi8iLCAiJSIsICJkaXZtb2QoKSIsICJwb3coKSIsICcKKyAgICAgICAgICAgICAgICAgJyIqKiIsXG4nCisgICAgICAgICAgICAgICAgICcgICAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAoc3dhcHBlZCkgJworICAgICAgICAgICAgICAgICAnb3BlcmFuZHMuXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lcyAnCisgICAgICAgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgdHlwZXMuIFsyXSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IC1cbicKKyAgICAgICAgICAgICAgICAgJyAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAnCisgICAgICAgICAgICAgICAgICciX19yc3ViX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiAnCisgICAgICAgICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICcgICAqTm90SW1wbGVtZW50ZWQqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgJyJfX3Jwb3dfXygpIiAodGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlICIKKyAgICAgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCAiCisgICAgICAgICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICd0aGUgbGVmdFxuJworICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyAiCisgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICIgICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICIvPSIsICIvLz0iLCAiJT0iLCAiKio9IiwgJworICAgICAgICAgICAgICAgICAnIjw8PSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCBhdHRlbXB0ICcKKyAgICAgICAgICAgICAgICAgJ3RvIGRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuIHRoZSAnCisgICAgICAgICAgICAgICAgICdyZXN1bHQgKHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICcgICBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmljIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAnICAgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyBiYWNrIHRvICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBub3JtYWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIHRvIGV4ZWN1dGUgdGhlIHN0YXRlbWVudCAieCArPSAnCisgICAgICAgICAgICAgICAgICd5Iiwgd2hlcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhIGNsYXNzIHRoYXQgaGFzIGFuICJfX2lhZGRfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QsXG4nCisgICAgICAgICAgICAgICAgICcgICAieC5fX2lhZGRfXyh5KSIgaXMgY2FsbGVkLiAgSWYgKngqIGlzIGFuIGluc3RhbmNlIG9mIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3MgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgZG9lcyBub3QgZGVmaW5lIGEgIl9faWFkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgJworICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICcgICAieS5fX3JhZGRfXyh4KSIgYXJlIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgJworICAgICAgICAgICAgICAgICAnInggKyB5Ii5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbmVnX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Bvc19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hYnNfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zICgiLSIsICcKKyAgICAgICAgICAgICAgICAgJyIrIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJhYnMoKSIgYW5kICJ+IikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW50X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xvbmdfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZmxvYXRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImNvbXBsZXgoKSIsICcKKyAgICAgICAgICAgICAgICAgJyJpbnQoKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAibG9uZygpIiwgYW5kICJmbG9hdCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR5cGUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX29jdF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19oZXhfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgIm9jdCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAnImhleCgpIi5cbicKKyAgICAgICAgICAgICAgICAgJyAgIFNob3VsZCByZXR1cm4gYSBzdHJpbmcgdmFsdWUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luZGV4X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIuICBBbHNvIGNhbGxlZCAnCisgICAgICAgICAgICAgICAgICd3aGVuZXZlclxuJworICAgICAgICAgICAgICAgICAnICAgUHl0aG9uIG5lZWRzIGFuIGludGVnZXIgb2JqZWN0IChzdWNoIGFzIGluIHNsaWNpbmcpLiAgJworICAgICAgICAgICAgICAgICAnTXVzdCByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIGFuIGludGVnZXIgKGludCBvciBsb25nKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi41LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb2VyY2VfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCAibWl4ZWQtbW9kZSIgbnVtZXJpYyBhcml0aG1ldGljLiAgJworICAgICAgICAgICAgICAgICAnU2hvdWxkIGVpdGhlclxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJuIGEgMi10dXBsZSBjb250YWluaW5nICpzZWxmKiBhbmQgKm90aGVyKiBjb252ZXJ0ZWQgJworICAgICAgICAgICAgICAgICAndG8gYVxuJworICAgICAgICAgICAgICAgICAnICAgY29tbW9uIG51bWVyaWMgdHlwZSwgb3IgIk5vbmUiIGlmIGNvbnZlcnNpb24gaXMgJworICAgICAgICAgICAgICAgICAnaW1wb3NzaWJsZS4gIFdoZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBjb21tb24gdHlwZSB3b3VsZCBiZSB0aGUgdHlwZSBvZiAib3RoZXIiLCBpdCBpcyAnCisgICAgICAgICAgICAgICAgICdzdWZmaWNpZW50IHRvXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm4gIk5vbmUiLCBzaW5jZSB0aGUgaW50ZXJwcmV0ZXIgd2lsbCBhbHNvIGFzayB0aGUgJworICAgICAgICAgICAgICAgICAnb3RoZXIgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICcgICB0byBhdHRlbXB0IGEgY29lcmNpb24gKGJ1dCBzb21ldGltZXMsIGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG90aGVyIHR5cGUgY2Fubm90IGJlIGNoYW5nZWQsIGl0IGlzIHVzZWZ1bCB0byBkbyB0aGUgJworICAgICAgICAgICAgICAgICAnY29udmVyc2lvbiB0b1xuJworICAgICAgICAgICAgICAgICAnICAgdGhlIG90aGVyIHR5cGUgaGVyZSkuICBBIHJldHVybiB2YWx1ZSBvZiAiTm90SW1wbGVtZW50ZWQiICcKKyAgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgICcgICBlcXVpdmFsZW50IHRvIHJldHVybmluZyAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ29lcmNpb24gcnVsZXNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoaXMgc2VjdGlvbiB1c2VkIHRvIGRvY3VtZW50IHRoZSBydWxlcyBmb3IgY29lcmNpb24uICBBcyAnCisgICAgICAgICAgICAgICAgICd0aGUgbGFuZ3VhZ2VcbicKKyAgICAgICAgICAgICAgICAgJ2hhcyBldm9sdmVkLCB0aGUgY29lcmNpb24gcnVsZXMgaGF2ZSBiZWNvbWUgaGFyZCB0byAnCisgICAgICAgICAgICAgICAgICdkb2N1bWVudFxuJworICAgICAgICAgICAgICAgICAncHJlY2lzZWx5OyBkb2N1bWVudGluZyB3aGF0IG9uZSB2ZXJzaW9uIG9mIG9uZSBwYXJ0aWN1bGFyXG4nCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiBkb2VzIGlzIHVuZGVzaXJhYmxlLiAgSW5zdGVhZCwgaGVyZSBhcmUgc29tZSAnCisgICAgICAgICAgICAgICAgICdpbmZvcm1hbFxuJworICAgICAgICAgICAgICAgICAnZ3VpZGVsaW5lcyByZWdhcmRpbmcgY29lcmNpb24uICBJbiBQeXRob24gMywgY29lcmNpb24gd2lsbCAnCisgICAgICAgICAgICAgICAgICdub3QgYmVcbicKKyAgICAgICAgICAgICAgICAgJ3N1cHBvcnRlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBJZiB0aGUgbGVmdCBvcGVyYW5kIG9mIGEgJSBvcGVyYXRvciBpcyBhIHN0cmluZyBvciBVbmljb2RlICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCxcbicKKyAgICAgICAgICAgICAgICAgJyAgbm8gY29lcmNpb24gdGFrZXMgcGxhY2UgYW5kIHRoZSBzdHJpbmcgZm9ybWF0dGluZyAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgaW52b2tlZCBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIEl0IGlzIG5vIGxvbmdlciByZWNvbW1lbmRlZCB0byBkZWZpbmUgYSBjb2VyY2lvbiAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb24uIE1peGVkLVxuJworICAgICAgICAgICAgICAgICAiICBtb2RlIG9wZXJhdGlvbnMgb24gdHlwZXMgdGhhdCBkb24ndCBkZWZpbmUgY29lcmNpb24gcGFzcyAiCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgb3JpZ2luYWwgYXJndW1lbnRzIHRvIHRoZSBvcGVyYXRpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogTmV3LXN0eWxlIGNsYXNzZXMgKHRob3NlIGRlcml2ZWQgZnJvbSAib2JqZWN0IikgbmV2ZXIgJworICAgICAgICAgICAgICAgICAnaW52b2tlIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAiX19jb2VyY2VfXygpIiBtZXRob2QgaW4gcmVzcG9uc2UgdG8gYSBiaW5hcnkgb3BlcmF0b3I7ICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBvbmx5XG4nCisgICAgICAgICAgICAgICAgICcgIHRpbWUgIl9fY29lcmNlX18oKSIgaXMgaW52b2tlZCBpcyB3aGVuIHRoZSBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICAgICAnICAiY29lcmNlKCkiIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBGb3IgbW9zdCBpbnRlbnRzIGFuZCBwdXJwb3NlcywgYW4gb3BlcmF0b3IgdGhhdCByZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICcgICJOb3RJbXBsZW1lbnRlZCIgaXMgdHJlYXRlZCB0aGUgc2FtZSBhcyBvbmUgdGhhdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgYXQgYWxsLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIEJlbG93LCAiX19vcF9fKCkiIGFuZCAiX19yb3BfXygpIiBhcmUgdXNlZCB0byBzaWduaWZ5IHRoZSAnCisgICAgICAgICAgICAgICAgICdnZW5lcmljXG4nCisgICAgICAgICAgICAgICAgICcgIG1ldGhvZCBuYW1lcyBjb3JyZXNwb25kaW5nIHRvIGFuIG9wZXJhdG9yOyAiX19pb3BfXygpIiBpcyAnCisgICAgICAgICAgICAgICAgICd1c2VkIGZvclxuJworICAgICAgICAgICAgICAgICAnICB0aGUgY29ycmVzcG9uZGluZyBpbi1wbGFjZSBvcGVyYXRvci4gIEZvciBleGFtcGxlLCBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICcgIFwnIisiXCcsICJfX2FkZF9fKCkiIGFuZCAiX19yYWRkX18oKSIgYXJlIHVzZWQgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICdsZWZ0IGFuZCByaWdodFxuJworICAgICAgICAgICAgICAgICAnICB2YXJpYW50IG9mIHRoZSBiaW5hcnkgb3BlcmF0b3IsIGFuZCAiX19pYWRkX18oKSIgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbi1wbGFjZVxuJworICAgICAgICAgICAgICAgICAnICB2YXJpYW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIEZvciBvYmplY3RzICp4KiBhbmQgKnkqLCBmaXJzdCAieC5fX29wX18oeSkiIGlzIHRyaWVkLiAgSWYgJworICAgICAgICAgICAgICAgICAndGhpcyBpc1xuJworICAgICAgICAgICAgICAgICAnICBub3QgaW1wbGVtZW50ZWQgb3IgcmV0dXJucyAiTm90SW1wbGVtZW50ZWQiLCAnCisgICAgICAgICAgICAgICAgICcieS5fX3JvcF9fKHgpIiBpc1xuJworICAgICAgICAgICAgICAgICAnICB0cmllZC4gIElmIHRoaXMgaXMgYWxzbyBub3QgaW1wbGVtZW50ZWQgb3IgcmV0dXJucyAnCisgICAgICAgICAgICAgICAgICciTm90SW1wbGVtZW50ZWQiLFxuJworICAgICAgICAgICAgICAgICAnICBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuICBCdXQgc2VlIHRoZSBmb2xsb3dpbmcgJworICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIEV4Y2VwdGlvbiB0byB0aGUgcHJldmlvdXMgaXRlbTogaWYgdGhlIGxlZnQgb3BlcmFuZCBpcyBhbiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAnICBvZiBhIGJ1aWx0LWluIHR5cGUgb3IgYSBuZXctc3R5bGUgY2xhc3MsIGFuZCB0aGUgcmlnaHQgJworICAgICAgICAgICAgICAgICAnb3BlcmFuZCBpcyBhblxuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSBvZiBhIHByb3BlciBzdWJjbGFzcyBvZiB0aGF0IHR5cGUgb3IgY2xhc3MgYW5kICcKKyAgICAgICAgICAgICAgICAgJ292ZXJyaWRlc1xuJworICAgICAgICAgICAgICAgICAnICB0aGUgYmFzZVwncyAiX19yb3BfXygpIiBtZXRob2QsIHRoZSByaWdodCBvcGVyYW5kXCdzICcKKyAgICAgICAgICAgICAgICAgJyJfX3JvcF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgIG1ldGhvZCBpcyB0cmllZCAqYmVmb3JlKiB0aGUgbGVmdCBvcGVyYW5kXCdzICJfX29wX18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgIFRoaXMgaXMgZG9uZSBzbyB0aGF0IGEgc3ViY2xhc3MgY2FuIGNvbXBsZXRlbHkgb3ZlcnJpZGUgJworICAgICAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgICAgICcgIG9wZXJhdG9ycy4gT3RoZXJ3aXNlLCB0aGUgbGVmdCBvcGVyYW5kXCdzICJfX29wX18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kIHdvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgIGFsd2F5cyBhY2NlcHQgdGhlIHJpZ2h0IG9wZXJhbmQ6IHdoZW4gYW4gaW5zdGFuY2Ugb2YgYSAnCisgICAgICAgICAgICAgICAgICdnaXZlbiBjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICBpcyBleHBlY3RlZCwgYW4gaW5zdGFuY2Ugb2YgYSBzdWJjbGFzcyBvZiB0aGF0IGNsYXNzIGlzICcKKyAgICAgICAgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICAgICAgICAnICBhY2NlcHRhYmxlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdoZW4gZWl0aGVyIG9wZXJhbmQgdHlwZSBkZWZpbmVzIGEgY29lcmNpb24sIHRoaXMgY29lcmNpb24gJworICAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgY2FsbGVkIGJlZm9yZSB0aGF0IHR5cGVcJ3MgIl9fb3BfXygpIiBvciAiX19yb3BfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgY2FsbGVkLCBidXQgbm8gc29vbmVyLiAgSWYgdGhlIGNvZXJjaW9uIHJldHVybnMgYW4gb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgZGlmZmVyZW50IHR5cGUgZm9yIHRoZSBvcGVyYW5kIHdob3NlIGNvZXJjaW9uIGlzIGludm9rZWQsICcKKyAgICAgICAgICAgICAgICAgJ3BhcnQgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgdGhlIHByb2Nlc3MgaXMgcmVkb25lIHVzaW5nIHRoZSBuZXcgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIFdoZW4gYW4gaW4tcGxhY2Ugb3BlcmF0b3IgKGxpa2UgXCciKz0iXCcpIGlzIHVzZWQsIGlmIHRoZSAnCisgICAgICAgICAgICAgICAgICdsZWZ0XG4nCisgICAgICAgICAgICAgICAgICcgIG9wZXJhbmQgaW1wbGVtZW50cyAiX19pb3BfXygpIiwgaXQgaXMgaW52b2tlZCB3aXRob3V0IGFueSAnCisgICAgICAgICAgICAgICAgICdjb2VyY2lvbi5cbicKKyAgICAgICAgICAgICAgICAgJyAgV2hlbiB0aGUgb3BlcmF0aW9uIGZhbGxzIGJhY2sgdG8gIl9fb3BfXygpIiBhbmQvb3IgJworICAgICAgICAgICAgICAgICAnIl9fcm9wX18oKSIsIHRoZVxuJworICAgICAgICAgICAgICAgICAnICBub3JtYWwgY29lcmNpb24gcnVsZXMgYXBwbHkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogSW4gInggKyB5IiwgaWYgKngqIGlzIGEgc2VxdWVuY2UgdGhhdCBpbXBsZW1lbnRzIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICcgIGNvbmNhdGVuYXRpb24sIHNlcXVlbmNlIGNvbmNhdGVuYXRpb24gaXMgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBJbiAieCAqIHkiLCBpZiBvbmUgb3BlcmFuZCBpcyBhIHNlcXVlbmNlIHRoYXQgaW1wbGVtZW50cyAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAnICByZXBldGl0aW9uLCBhbmQgdGhlIG90aGVyIGlzIGFuIGludGVnZXIgKCJpbnQiIG9yICJsb25nIiksICcKKyAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICcgIHJlcGV0aXRpb24gaXMgaW52b2tlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBSaWNoIGNvbXBhcmlzb25zIChpbXBsZW1lbnRlZCBieSBtZXRob2RzICJfX2VxX18oKSIgYW5kIHNvICcKKyAgICAgICAgICAgICAgICAgJ29uKVxuJworICAgICAgICAgICAgICAgICAnICBuZXZlciB1c2UgY29lcmNpb24uICBUaHJlZS13YXkgY29tcGFyaXNvbiAoaW1wbGVtZW50ZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIl9fY21wX18oKSIpIGRvZXMgdXNlIGNvZXJjaW9uIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgJworICAgICAgICAgICAgICAgICAnYXMgb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgYmluYXJ5IG9wZXJhdGlvbnMgdXNlIGl0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gbnVtZXJpYyB0eXBlcyAnCisgICAgICAgICAgICAgICAgICciaW50IixcbicKKyAgICAgICAgICAgICAgICAgJyAgImxvbmciLCAiZmxvYXQiLCBhbmQgImNvbXBsZXgiIGRvIG5vdCB1c2UgY29lcmNpb24uIEFsbCAnCisgICAgICAgICAgICAgICAgICd0aGVzZSB0eXBlc1xuJworICAgICAgICAgICAgICAgICAnICBpbXBsZW1lbnQgYSAiX19jb2VyY2VfXygpIiBtZXRob2QsIGZvciB1c2UgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICcgICJjb2VyY2UoKSIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNzogVGhlIGNvbXBsZXggdHlwZSBubyBsb25nZXIgbWFrZXMgJworICAgICAgICAgICAgICAgICAnaW1wbGljaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgY2FsbHMgdG8gdGhlICJfX2NvZXJjZV9fKCkiIG1ldGhvZCBmb3IgbWl4ZWQtdHlwZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1dpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMi41LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgJworICAgICAgICAgICAgICAgICAnY29udGV4dCB0b1xuJworICAgICAgICAgICAgICAgICAnYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgJworICAgICAgICAgICAgICAgICAnY29udGV4dCBtYW5hZ2VyXG4nCisgICAgICAgICAgICAgICAgICdoYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgJworICAgICAgICAgICAgICAgICAncnVudGltZSBjb250ZXh0XG4nCisgICAgICAgICAgICAgICAgICdmb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgJworICAgICAgICAgICAgICAgICAnYXJlIG5vcm1hbGx5XG4nCisgICAgICAgICAgICAgICAgICdpbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiBUaGUgJworICAgICAgICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAgICAgICAnc3RhdGVtZW50KSwgYnV0IGNhbiBhbHNvIGJlIHVzZWQgYnkgZGlyZWN0bHkgaW52b2tpbmcgdGhlaXIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVHlwaWNhbCB1c2VzIG9mIGNvbnRleHQgbWFuYWdlcnMgaW5jbHVkZSBzYXZpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgJ3Jlc3RvcmluZyB2YXJpb3VzXG4nCisgICAgICAgICAgICAgICAgICdraW5kcyBvZiBnbG9iYWwgc3RhdGUsIGxvY2tpbmcgYW5kIHVubG9ja2luZyByZXNvdXJjZXMsICcKKyAgICAgICAgICAgICAgICAgJ2Nsb3Npbmcgb3BlbmVkXG4nCisgICAgICAgICAgICAgICAgICdmaWxlcywgZXRjLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBjb250ZXh0IG1hbmFnZXJzLCBzZWUgQ29udGV4dCAnCisgICAgICAgICAgICAgICAgICdNYW5hZ2VyIFR5cGVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19lbnRlcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJyJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAiICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZCdzIHJldHVybiB2YWx1ZSB0byB0aGUgIgorICAgICAgICAgICAgICAgICAndGFyZ2V0KHMpXG4nCisgICAgICAgICAgICAgICAgICcgICBzcGVjaWZpZWQgaW4gdGhlICJhcyIgY2xhdXNlIG9mIHRoZSBzdGF0ZW1lbnQsIGlmIGFueS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjaylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRXhpdCB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAnCisgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJzXG4nCisgICAgICAgICAgICAgICAgICcgICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlICcKKyAgICAgICAgICAgICAgICAgJ2V4aXRlZC4gSWYgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IHdhcyBleGl0ZWQgd2l0aG91dCBhbiBleGNlcHRpb24sIGFsbCB0aHJlZSAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudHMgd2lsbFxuJworICAgICAgICAgICAgICAgICAnICAgYmUgIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byAnCisgICAgICAgICAgICAgICAgICdzdXBwcmVzcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiAoaS5lLiwgcHJldmVudCBpdCBmcm9tIGJlaW5nIHByb3BhZ2F0ZWQpLCBpdCAnCisgICAgICAgICAgICAgICAgICdzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybiBhIHRydWUgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGV4Y2VwdGlvbiB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgJ3Byb2Nlc3NlZFxuJworICAgICAgICAgICAgICAgICAnICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGUgdGhhdCAiX19leGl0X18oKSIgbWV0aG9kcyBzaG91bGQgbm90IHJlcmFpc2UgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Bhc3NlZC1pblxuJworICAgICAgICAgICAgICAgICAiICAgZXhjZXB0aW9uOyB0aGlzIGlzIHRoZSBjYWxsZXIncyByZXNwb25zaWJpbGl0eS5cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAnUHl0aG9uICJ3aXRoIlxuJworICAgICAgICAgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU3BlY2lhbCBtZXRob2QgbG9va3VwIGZvciBvbGQtc3R5bGUgY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3Igb2xkLXN0eWxlIGNsYXNzZXMsIHNwZWNpYWwgbWV0aG9kcyBhcmUgYWx3YXlzIGxvb2tlZCB1cCAnCisgICAgICAgICAgICAgICAgICdpbiBleGFjdGx5XG4nCisgICAgICAgICAgICAgICAgICd0aGUgc2FtZSB3YXkgYXMgYW55IG90aGVyIG1ldGhvZCBvciBhdHRyaWJ1dGUuIFRoaXMgaXMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAgICAgICAgJ3JlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgbWV0aG9kIGlzIGJlaW5nIGxvb2tlZCB1cCAnCisgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGFzIGluXG4nCisgICAgICAgICAgICAgICAgICcieC5fX2dldGl0ZW1fXyhpKSIgb3IgaW1wbGljaXRseSBhcyBpbiAieFtpXSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoaXMgYmVoYXZpb3VyIG1lYW5zIHRoYXQgc3BlY2lhbCBtZXRob2RzIG1heSBleGhpYml0ICcKKyAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudFxuJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3VyIGZvciBkaWZmZXJlbnQgaW5zdGFuY2VzIG9mIGEgc2luZ2xlIG9sZC1zdHlsZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBpZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlIHNwZWNpYWwgYXR0cmlidXRlcyBhcmUgc2V0IGRpZmZlcmVudGx5OlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgQzpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYzEgPSBDKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjMiA9IEMoKVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMxLl9fbGVuX18gPSBsYW1iZGE6IDVcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjMi5fX2xlbl9fID0gbGFtYmRhOiA5XG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGVuKGMxKVxuJworICAgICAgICAgICAgICAgICAnICAgNVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGxlbihjMilcbicKKyAgICAgICAgICAgICAgICAgJyAgIDlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIG1ldGhvZCBsb29rdXAgZm9yIG5ldy1zdHlsZSBjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBuZXctc3R5bGUgY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGFyZVxuJworICAgICAgICAgICAgICAgICAib25seSBndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0J3MgIgorICAgICAgICAgICAgICAgICAndHlwZSwgbm90XG4nCisgICAgICAgICAgICAgICAgICJpbiB0aGUgb2JqZWN0J3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSAiCisgICAgICAgICAgICAgICAgICdyZWFzb24gd2h5XG4nCisgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbiAodW5saWtlIHRoZSAnCisgICAgICAgICAgICAgICAgICdlcXVpdmFsZW50IGV4YW1wbGVcbicKKyAgICAgICAgICAgICAgICAgJ3dpdGggb2xkLXN0eWxlIGNsYXNzZXMpOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgQyhvYmplY3QpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGVuKGMpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlICdDJyBoYXMgbm8gbGVuKClcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHJhdGlvbmFsZSBiZWhpbmQgdGhpcyBiZWhhdmlvdXIgbGllcyB3aXRoIGEgbnVtYmVyIG9mICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgc3VjaCBhcyAiX19oYXNoX18oKSIgYW5kICJfX3JlcHJfXygpIiB0aGF0IGFyZSAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBieVxuJworICAgICAgICAgICAgICAgICAnYWxsIG9iamVjdHMsIGluY2x1ZGluZyB0eXBlIG9iamVjdHMuIElmIHRoZSBpbXBsaWNpdCBsb29rdXAgJworICAgICAgICAgICAgICAgICAnb2YgdGhlc2VcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgdXNlZCB0aGUgY29udmVudGlvbmFsIGxvb2t1cCBwcm9jZXNzLCB0aGV5IHdvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2ZhaWwgd2hlblxuJworICAgICAgICAgICAgICAgICAnaW52b2tlZCBvbiB0aGUgdHlwZSBvYmplY3QgaXRzZWxmOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gMSAuX19oYXNoX18oKSA9PSBoYXNoKDEpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gaW50Ll9faGFzaF9fKCkgPT0gaGFzaChpbnQpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBUeXBlRXJyb3I6IGRlc2NyaXB0b3IgJ19faGFzaF9fJyBvZiAnaW50JyBvYmplY3QgbmVlZHMgYW4gIgorICAgICAgICAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBpbiB0aGlzXG4nCisgICAgICAgICAgICAgICAgICJ3YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzICdtZXRhY2xhc3MgY29uZnVzaW9uJywgYW5kICIKKyAgICAgICAgICAgICAgICAgJ2lzIGF2b2lkZWRcbicKKyAgICAgICAgICAgICAgICAgJ2J5IGJ5cGFzc2luZyB0aGUgaW5zdGFuY2Ugd2hlbiBsb29raW5nIHVwIHNwZWNpYWwgbWV0aG9kczpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoMSkuX19oYXNoX18oMSkgPT0gaGFzaCgxKVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IHR5cGUoaW50KS5fX2hhc2hfXyhpbnQpID09IGhhc2goaW50KVxuJworICAgICAgICAgICAgICAgICAnICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byBieXBhc3NpbmcgYW55IGluc3RhbmNlIGF0dHJpYnV0ZXMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVyZXN0IG9mXG4nCisgICAgICAgICAgICAgICAgICdjb3JyZWN0bmVzcywgaW1wbGljaXQgc3BlY2lhbCBtZXRob2QgbG9va3VwIGdlbmVyYWxseSBhbHNvICcKKyAgICAgICAgICAgICAgICAgJ2J5cGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICd0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGV2ZW4gb2YgdGhlIG9iamVjdFwncyAnCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3M6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBNZXRhKHR5cGUpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICBwcmludCAiTWV0YWNsYXNzIGdldGF0dHJpYnV0ZSBpbnZva2VkIlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgIHJldHVybiB0eXBlLl9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDKG9iamVjdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIF9fbWV0YWNsYXNzX18gPSBNZXRhXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIDEwXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHByaW50ICJDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSBDKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjLl9fbGVuX18oKSAgICAgICAgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICcgICBDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuJworICAgICAgICAgICAgICAgICAnICAgMTBcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiB0eXBlKGMpLl9fbGVuX18oYykgICAgICAgICAgIyBFeHBsaWNpdCBsb29rdXAgdmlhICcKKyAgICAgICAgICAgICAgICAgJ3R5cGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIE1ldGFjbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZFxuJworICAgICAgICAgICAgICAgICAnICAgMTBcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsZW4oYykgICAgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdCBsb29rdXBcbicKKyAgICAgICAgICAgICAgICAgJyAgIDEwXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0J5cGFzc2luZyB0aGUgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWFjaGluZXJ5IGluIHRoaXMgZmFzaGlvbiAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlc1xuJworICAgICAgICAgICAgICAgICAnc2lnbmlmaWNhbnQgc2NvcGUgZm9yIHNwZWVkIG9wdGltaXNhdGlvbnMgd2l0aGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnRlcnByZXRlciwgYXRcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBjb3N0IG9mIHNvbWUgZmxleGliaWxpdHkgaW4gdGhlIGhhbmRsaW5nIG9mIHNwZWNpYWwgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyAodGhlXG4nCisgICAgICAgICAgICAgICAgICdzcGVjaWFsIG1ldGhvZCAqbXVzdCogYmUgc2V0IG9uIHRoZSBjbGFzcyBvYmplY3QgaXRzZWxmIGluICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyIHRvIGJlXG4nCisgICAgICAgICAgICAgICAgICdjb25zaXN0ZW50bHkgaW52b2tlZCBieSB0aGUgaW50ZXJwcmV0ZXIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiWzFdIEl0ICppcyogcG9zc2libGUgaW4gc29tZSBjYXNlcyB0byBjaGFuZ2UgYW4gb2JqZWN0J3MgIgorICAgICAgICAgICAgICAgICAndHlwZSxcbicKKyAgICAgICAgICAgICAgICAgIiAgICB1bmRlciBjZXJ0YWluIGNvbnRyb2xsZWQgY29uZGl0aW9ucy4gSXQgZ2VuZXJhbGx5IGlzbid0ICIKKyAgICAgICAgICAgICAgICAgJ2EgZ29vZFxuJworICAgICAgICAgICAgICAgICAnICAgIGlkZWEgdGhvdWdoLCBzaW5jZSBpdCBjYW4gbGVhZCB0byBzb21lIHZlcnkgc3RyYW5nZSAnCisgICAgICAgICAgICAgICAgICdiZWhhdmlvdXIgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgICBpdCBpcyBoYW5kbGVkIGluY29ycmVjdGx5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbMl0gRm9yIG9wZXJhbmRzIG9mIHRoZSBzYW1lIHR5cGUsIGl0IGlzIGFzc3VtZWQgdGhhdCBpZiB0aGUgJworICAgICAgICAgICAgICAgICAnbm9uLVxuJworICAgICAgICAgICAgICAgICAnICAgIHJlZmxlY3RlZCBtZXRob2QgKHN1Y2ggYXMgIl9fYWRkX18oKSIpIGZhaWxzIHRoZSAnCisgICAgICAgICAgICAgICAgICdvcGVyYXRpb24gaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICAgc3VwcG9ydGVkLCB3aGljaCBpcyB3aHkgdGhlIHJlZmxlY3RlZCBtZXRob2QgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZC5cbicsCisgJ3N0cmluZy1tZXRob2RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdTdHJpbmcgTWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnQmVsb3cgYXJlIGxpc3RlZCB0aGUgc3RyaW5nIG1ldGhvZHMgd2hpY2ggYm90aCA4LWJpdCAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJ1VuaWNvZGUgb2JqZWN0cyBzdXBwb3J0LiAgU29tZSBvZiB0aGVtIGFyZSBhbHNvIGF2YWlsYWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ29uXG4nCisgICAgICAgICAgICAgICAgICAgJyJieXRlYXJyYXkiIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICJJbiBhZGRpdGlvbiwgUHl0aG9uJ3Mgc3RyaW5ncyBzdXBwb3J0IHRoZSBzZXF1ZW5jZSB0eXBlICIKKyAgICAgICAgICAgICAgICAgICAnbWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAgICdkZXNjcmliZWQgaW4gdGhlIFNlcXVlbmNlIFR5cGVzIC0tLSBzdHIsIHVuaWNvZGUsIGxpc3QsICcKKyAgICAgICAgICAgICAgICAgICAndHVwbGUsXG4nCisgICAgICAgICAgICAgICAgICAgJ2J5dGVhcnJheSwgYnVmZmVyLCB4cmFuZ2Ugc2VjdGlvbi4gVG8gb3V0cHV0IGZvcm1hdHRlZCAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MgdXNlXG4nCisgICAgICAgICAgICAgICAgICAgJ3RlbXBsYXRlIHN0cmluZ3Mgb3IgdGhlICIlIiBvcGVyYXRvciBkZXNjcmliZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJ0Zvcm1hdHRpbmcgT3BlcmF0aW9ucyBzZWN0aW9uLiBBbHNvLCBzZWUgdGhlICJyZSIgbW9kdWxlICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYmFzZWQgb24gcmVndWxhciBleHByZXNzaW9ucy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jYXBpdGFsaXplKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdjYXBpdGFsaXplZFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmNlbnRlcih3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gUGFkZGluZyAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGRvbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGEgc3BhY2UpLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgdGhlICpmaWxsY2hhciogJworICAgICAgICAgICAgICAgICAgICdhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpzdWIqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSByYW5nZSBbKnN0YXJ0KiwgKmVuZCpdLiAgT3B0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnKnN0YXJ0KiBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmRlY29kZShbZW5jb2RpbmdbLCBlcnJvcnNdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIERlY29kZXMgdGhlIHN0cmluZyB1c2luZyB0aGUgY29kZWMgcmVnaXN0ZXJlZCBmb3IgJworICAgICAgICAgICAgICAgICAgICcqZW5jb2RpbmcqLlxuJworICAgICAgICAgICAgICAgICAgICcgICAqZW5jb2RpbmcqIGRlZmF1bHRzIHRvIHRoZSBkZWZhdWx0IHN0cmluZyBlbmNvZGluZy4gICcKKyAgICAgICAgICAgICAgICAgICAnKmVycm9ycyogbWF5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJlIGdpdmVuIHRvIHNldCBhIGRpZmZlcmVudCBlcnJvciBoYW5kbGluZyBzY2hlbWUuICBUaGUgJworICAgICAgICAgICAgICAgICAgICdkZWZhdWx0IGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJ3N0cmljdFwnIiwgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSAnCisgICAgICAgICAgICAgICAgICAgJyJVbmljb2RlRXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAgICcgICBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCBhbnkgb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbmFtZSByZWdpc3RlcmVkIHZpYSAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCkiLCBzZWUgJworICAgICAgICAgICAgICAgICAgICdzZWN0aW9uIENvZGVjXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEJhc2UgQ2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuMi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFN1cHBvcnQgZm9yIG90aGVyIGVycm9yICcKKyAgICAgICAgICAgICAgICAgICAnaGFuZGxpbmcgc2NoZW1lc1xuJworICAgICAgICAgICAgICAgICAgICcgICBhZGRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjc6IFN1cHBvcnQgZm9yIGtleXdvcmQgYXJndW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAnYWRkZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZW5jb2RlKFtlbmNvZGluZ1ssIGVycm9yc11dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLiAgRGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAgJ2VuY29kaW5nIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjdXJyZW50IGRlZmF1bHQgc3RyaW5nIGVuY29kaW5nLiAgKmVycm9ycyogbWF5IGJlIGdpdmVuICcKKyAgICAgICAgICAgICAgICAgICAndG8gc2V0IGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIFRoZSBkZWZhdWx0IGZvciAnCisgICAgICAgICAgICAgICAgICAgJyplcnJvcnMqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJ3N0cmljdFwnIiwgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhICcKKyAgICAgICAgICAgICAgICAgICAnIlVuaWNvZGVFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgIlwnaWdub3JlXCciLCAiXCdyZXBsYWNlXCciLFxuJworICAgICAgICAgICAgICAgICAgICcgICAiXCd4bWxjaGFycmVmcmVwbGFjZVwnIiwgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgYW55ICcKKyAgICAgICAgICAgICAgICAgICAnb3RoZXIgbmFtZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZWdpc3RlcmVkIHZpYSAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCkiLCBzZWUgc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJ0NvZGVjIEJhc2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2xhc3Nlcy4gRm9yIGEgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnU3RhbmRhcmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRW5jb2RpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi4wLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogU3VwcG9ydCBmb3IgJworICAgICAgICAgICAgICAgICAgICciXCd4bWxjaGFycmVmcmVwbGFjZVwnIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgb3RoZXIgZXJyb3IgaGFuZGxpbmcgc2NoZW1lcyAnCisgICAgICAgICAgICAgICAgICAgJ2FkZGVkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNzogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgJworICAgICAgICAgICAgICAgICAgICdhZGRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICcKKyAgICAgICAgICAgICAgICAgICAnKnN1ZmZpeCosXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG90aGVyd2lzZSByZXR1cm4gIkZhbHNlIi4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgJworICAgICAgICAgICAgICAgICAgICdvZiBzdWZmaXhlc1xuJworICAgICAgICAgICAgICAgICAgICcgICB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXQgJworICAgICAgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNTogQWNjZXB0IHR1cGxlcyBhcyAqc3VmZml4Ki5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5leHBhbmR0YWJzKFt0YWJzaXplXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdhcmUgcmVwbGFjZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYnkgb25lIG9yIG1vcmUgc3BhY2VzLCBkZXBlbmRpbmcgb24gdGhlIGN1cnJlbnQgY29sdW1uICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICcgICAoZGVmYXVsdCBpcyA4LCBnaXZpbmcgdGFiIHBvc2l0aW9ucyBhdCBjb2x1bW5zIDAsIDgsIDE2ICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHNvIG9uKS5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVG8gZXhwYW5kIHRoZSBzdHJpbmcsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBzZXQgdG8gemVybyAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIgaXMgYVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgKCJcXHQiKSwgb25lIG9yIG1vcmUgc3BhY2UgY2hhcmFjdGVycyBhcmUgaW5zZXJ0ZWQgJworICAgICAgICAgICAgICAgICAgICdpbiB0aGUgcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVudGlsIHRoZSBjdXJyZW50IGNvbHVtbiBpcyBlcXVhbCB0byB0aGUgbmV4dCB0YWIgJworICAgICAgICAgICAgICAgICAgICdwb3NpdGlvbi4gKFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdpcyBhIG5ld2xpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKCJcXG4iKSBvciByZXR1cm4gKCJcXHIiKSwgaXQgaXMgY29waWVkIGFuZCB0aGUgY3VycmVudCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbHVtbiBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICByZXNldCB0byB6ZXJvLiAgQW55IG90aGVyIGNoYXJhY3RlciBpcyBjb3BpZWQgdW5jaGFuZ2VkICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiBob3cgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzQnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoNClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJzAxICAwMTIgMDEyMyAgICAwMTIzNCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJypzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kIHdpdGhpbiB0aGUgc2xpY2UgInNbc3RhcnQ6ZW5kXSIuICBPcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyAqc3RhcnQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uICBSZXR1cm4gJworICAgICAgICAgICAgICAgICAgICciLTEiIGlmXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpzdWIqIGlzIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgJworICAgICAgICAgICAgICAgICAgICduZWVkIHRvIGtub3dcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nIG9yIG5vdCxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICB1c2UgdGhlICJpbiIgb3BlcmF0b3I6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICAgID4+PiAnUHknIGluICdQeXRob24nXG4iCisgICAgICAgICAgICAgICAgICAgJyAgICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiAnCisgICAgICAgICAgICAgICAgICAgJ3doaWNoIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgJworICAgICAgICAgICAgICAgICAgICdyZXBsYWNlbWVudCBmaWVsZHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyAie30iLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5zIGVpdGhlclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lICcKKyAgICAgICAgICAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICAgICAgICAgICcgICBrZXl3b3JkIGFyZ3VtZW50LiAgUmV0dXJucyBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aGVyZSAnCisgICAgICAgICAgICAgICAgICAgJ2VhY2hcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVwbGFjZW1lbnQgZmllbGQgaXMgcmVwbGFjZWQgd2l0aCB0aGUgc3RyaW5nIHZhbHVlIG9mICcKKyAgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuJworICAgICAgICAgICAgICAgICAgICIgICAnVGhlIHN1bSBvZiAxICsgMiBpcyAzJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTdHJpbmcgU3ludGF4IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3ZhcmlvdXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyBvcHRpb25zIHRoYXQgY2FuIGJlIHNwZWNpZmllZCBpbiBmb3JtYXQgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgb2Ygc3RyaW5nIGZvcm1hdHRpbmcgaXMgdGhlIG5ldyBzdGFuZGFyZCBpbiAnCisgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiAzLFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgc2hvdWxkIGJlIHByZWZlcnJlZCB0byB0aGUgIiUiIGZvcm1hdHRpbmcgZGVzY3JpYmVkICcKKyAgICAgICAgICAgICAgICAgICAnaW4gU3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvcm1hdHRpbmcgT3BlcmF0aW9ucyBpbiBuZXcgY29kZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuNi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTGlrZSAiZmluZCgpIiwgYnV0IHJhaXNlICJWYWx1ZUVycm9yIiB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3N1YnN0cmluZyBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbG51bSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhbnVtZXJpYyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNhbHBoYSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FscGhhYmV0aWMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzZGlnaXQoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgZGlnaXRzICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZXJlIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzbG93ZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdhcmUgbG93ZXJjYXNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzc3BhY2UoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluICcKKyAgICAgICAgICAgICAgICAgICAndGhlIHN0cmluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXN0aXRsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAndGhlcmUgaXMgYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdtYXkgb25seVxuJworICAgICAgICAgICAgICAgICAgICcgICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAnY2FzZWQgb25lcy5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzdXBwZXIoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdhcmUgdXBwZXJjYXNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmpvaW4oaXRlcmFibGUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3RyaW5ncyBpblxuJworICAgICAgICAgICAgICAgICAgICcgICAqaXRlcmFibGUqLiBBICJUeXBlRXJyb3IiIHdpbGwgYmUgcmFpc2VkIGlmIHRoZXJlIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2FueSBub24tXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyB2YWx1ZXMgaW4gKml0ZXJhYmxlKiwgaW5jbHVkaW5nICJieXRlcyIgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgJworICAgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggJworICAgICAgICAgICAgICAgICAgICcqd2lkdGgqLlxuJworICAgICAgICAgICAgICAgICAgICcgICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYVxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGFjZSkuICBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgJworICAgICAgICAgICAgICAgICAgICdsZXNzIHRoYW4gb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMi40OiBTdXBwb3J0IGZvciB0aGUgKmZpbGxjaGFyKiAnCisgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmxvd2VyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIFs0XVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIubHN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBsZWFkaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAncHJlZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5sc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnc3BhY2lvdXMgICAnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnd3d3LmV4YW1wbGUuY29tJy5sc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICdleGFtcGxlLmNvbSdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjIuMjogU3VwcG9ydCBmb3IgdGhlICpjaGFycyogJworICAgICAgICAgICAgICAgICAgICdhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5wYXJ0aXRpb24oc2VwKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuIGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvciBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgJworICAgICAgICAgICAgICAgICAgICdmb2xsb3dlZCBieVxuJworICAgICAgICAgICAgICAgICAgICcgICB0d28gZW1wdHkgc3RyaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuNS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpvbGQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgJworICAgICAgICAgICAgICAgICAgICdnaXZlbiwgb25seVxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJypzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiAnCisgICAgICAgICAgICAgICAgICAgJyJzW3N0YXJ0OmVuZF0iLlxuJworICAgICAgICAgICAgICAgICAgICcgICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzICcKKyAgICAgICAgICAgICAgICAgICAnaW4gc2xpY2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTGlrZSAicmZpbmQoKSIgYnV0IHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgKnN1YiogaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbm90IGZvdW5kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgICAgJyp3aWR0aCouXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgdGhlICpmaWxsY2hhciogJworICAgICAgICAgICAgICAgICAgICdhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5ycGFydGl0aW9uKHNlcClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuIGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvciBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgJworICAgICAgICAgICAgICAgICAgICdmb2xsb3dlZCBieVxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgc3RyaW5nIGl0c2VsZi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuNS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZXIgc3RyaW5nLiBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAnKm1heHNwbGl0KiBzcGxpdHNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJOb25lIiwgYW55IHdoaXRlc3BhY2Ugc3RyaW5nIGlzIGEgc2VwYXJhdG9yLiAgRXhjZXB0ICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIHNwbGl0dGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBmcm9tIHRoZSByaWdodCwgInJzcGxpdCgpIiBiZWhhdmVzIGxpa2UgInNwbGl0KCkiIHdoaWNoICcKKyAgICAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuNC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRyYWlsaW5nIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdyZW1vdmVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyB0byBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmYXVsdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3Zpbmcgd2hpdGVzcGFjZS4gIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIG5vdCBhICcKKyAgICAgICAgICAgICAgICAgICAnc3VmZml4OyByYXRoZXIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICA+Pj4gJyAgIHNwYWNpb3VzICAgJy5yc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnICAgc3BhY2lvdXMnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnbWlzc2lzc2lwcGknLnJzdHJpcCgnaXB6JylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJ21pc3Npc3MnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMi4yLjI6IFN1cHBvcnQgZm9yIHRoZSAqY2hhcnMqICcKKyAgICAgICAgICAgICAgICAgICAnYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiAnCisgICAgICAgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZXIgc3RyaW5nLiAgSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyptYXhzcGxpdCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyJtYXhzcGxpdCsxIlxuJworICAgICAgICAgICAgICAgICAgICcgICBlbGVtZW50cykuICBJZiAqbWF4c3BsaXQqIGlzIG5vdCBzcGVjaWZpZWQgb3IgIi0xIiwgJworICAgICAgICAgICAgICAgICAgICd0aGVuIHRoZXJlIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vIGxpbWl0IG9uIHRoZSBudW1iZXIgb2Ygc3BsaXRzIChhbGwgcG9zc2libGUgc3BsaXRzICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIG1hZGUpLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgSWYgKnNlcCogaXMgZ2l2ZW4sIGNvbnNlY3V0aXZlIGRlbGltaXRlcnMgYXJlIG5vdCAnCisgICAgICAgICAgICAgICAgICAgJ2dyb3VwZWQgdG9nZXRoZXJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnMSwsMlwnLnNwbGl0KFwnLFwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJ1wnLCAnCisgICAgICAgICAgICAgICAgICAgJ1wnMlwnXSIpLiAgVGhlICpzZXAqIGFyZ3VtZW50XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICcgICAiXCcxPD4yPD4zXCcuc3BsaXQoXCc8PlwnKSIgcmV0dXJucyAiW1wnMVwnLCBcJzJcJywgJworICAgICAgICAgICAgICAgICAgICdcJzNcJ10iKS4gU3BsaXR0aW5nIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICcKKyAgICAgICAgICAgICAgICAgICAnIltcJ1wnXSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICJOb25lIiwgYSBkaWZmZXJlbnQgJworICAgICAgICAgICAgICAgICAgICdzcGxpdHRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSByZWdhcmRlZFxuJworICAgICAgICAgICAgICAgICAgICcgICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyAnCisgICAgICAgICAgICAgICAgICAgJ2VtcHR5IHN0cmluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yICcKKyAgICAgICAgICAgICAgICAgICAndHJhaWxpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciAnCisgICAgICAgICAgICAgICAgICAgJ2Egc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSAiTm9uZSIgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJucyAiW10iLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGUsICJcJyAxICAyICAgMyAgXCcuc3BsaXQoKSIgcmV0dXJucyAiW1wnMVwnLCAnCisgICAgICAgICAgICAgICAgICAgJ1wnMlwnLCBcJzNcJ10iLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnICAxICAyICAgMyAgXCcuc3BsaXQoTm9uZSwgMSkiIHJldHVybnMgIltcJzFcJywgJworICAgICAgICAgICAgICAgICAgICdcJzIgICAzICBcJ10iLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0ICcKKyAgICAgICAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICBib3VuZGFyaWVzLiBUaGlzIG1ldGhvZCB1c2VzIHRoZSAqdW5pdmVyc2FsIG5ld2xpbmVzKiAnCisgICAgICAgICAgICAgICAgICAgJ2FwcHJvYWNoIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwbGl0dGluZyBsaW5lcy4gTGluZSBicmVha3MgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdyZXN1bHRpbmcgbGlzdFxuJworICAgICAgICAgICAgICAgICAgICcgICB1bmxlc3MgKmtlZXBlbmRzKiBpcyBnaXZlbiBhbmQgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFB5dGhvbiByZWNvZ25pemVzICIiXFxyIiIsICIiXFxuIiIsIGFuZCAiIlxcclxcbiIiIGFzICcKKyAgICAgICAgICAgICAgICAgICAnbGluZSBib3VuZGFyaWVzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvciA4LWJpdCBzdHJpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuJy5zcGxpdGxpbmVzKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydhYiBjJywgJycsICdkZSBmZycsICdrbCddXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG4nLnNwbGl0bGluZXMoVHJ1ZSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydhYiBjXFxuJywgJ1xcbicsICdkZSBmZ1xccicsICdrbFxcclxcbiddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBVbmxpa2UgInNwbGl0KCkiIHdoZW4gYSBkZWxpbWl0ZXIgc3RyaW5nICpzZXAqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZ2l2ZW4sIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kICcKKyAgICAgICAgICAgICAgICAgICAnYSB0ZXJtaW5hbFxuJworICAgICAgICAgICAgICAgICAgICcgICBsaW5lIGJyZWFrIGRvZXMgbm90IHJlc3VsdCBpbiBhbiBleHRyYSBsaW5lOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICIiLnNwbGl0bGluZXMoKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICBbXVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIk9uZSBsaW5lXFxuIi5zcGxpdGxpbmVzKClcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydPbmUgbGluZSddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgY29tcGFyaXNvbiwgInNwbGl0KFwnXFxuXCcpIiBnaXZlczpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnJy5zcGxpdCgnXFxuJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ1R3byBsaW5lc1xcbicuc3BsaXQoJ1xcbicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnVHdvIGxpbmVzJywgJyddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICd1bmljb2RlLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGxpa2UgJworICAgICAgICAgICAgICAgICAgICcic3RyLnNwbGl0bGluZXMoKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEhvd2V2ZXIsIHRoZSBVbmljb2RlIG1ldGhvZCBzcGxpdHMgb24gdGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYm91bmRhcmllcywgd2hpY2ggYXJlIGEgc3VwZXJzZXQgb2YgdGhlICp1bml2ZXJzYWwgJworICAgICAgICAgICAgICAgICAgICduZXdsaW5lcypcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVjb2duaXplZCBmb3IgOC1iaXQgc3RyaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCBSZXByZXNlbnRhdGlvbiAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAnRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcbiIgICAgICAgICAgICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ0ZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxyIiAgICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSAnCisgICAgICAgICAgICAgICAgICAgJ1JldHVybiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHJcXG4iICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gKyBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHYiIG9yICJcXHgwYiIgICAgICAgICAgfCBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnVGFidWxhdGlvbiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXGYiIG9yICJcXHgwYyIgICAgICAgICAgfCBGb3JtICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHgxYyIgICAgICAgICAgICAgICAgICB8IEZpbGUgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDFkIiAgICAgICAgICAgICAgICAgIHwgR3JvdXAgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4MWUiICAgICAgICAgICAgICAgICAgfCBSZWNvcmQgJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHg4NSIgICAgICAgICAgICAgICAgICB8IE5leHQgTGluZSAoQzEgQ29udHJvbCAnCisgICAgICAgICAgICAgICAgICAgJ0NvZGUpICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcdTIwMjgiICAgICAgICAgICAgICAgIHwgTGluZSAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx1MjAyOSIgICAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggJworICAgICAgICAgICAgICAgICAgICdTZXBhcmF0b3IgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNzogIlxcdiIgYW5kICJcXGYiIGFkZGVkIHRvIGxpc3QgJworICAgICAgICAgICAgICAgICAgICdvZiBsaW5lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJvdW5kYXJpZXMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgIkZhbHNlIi4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byAnCisgICAgICAgICAgICAgICAgICAgJ2xvb2sgZm9yLlxuJworICAgICAgICAgICAgICAgICAgICcgICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAncG9zaXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAncG9zaXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMi41OiBBY2NlcHQgdHVwbGVzIGFzICpwcmVmaXgqLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgJworICAgICAgICAgICAgICAgICAgICd0cmFpbGluZ1xuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsICcKKyAgICAgICAgICAgICAgICAgICAndGhlICpjaGFycypcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycyogJworICAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFyZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgID4+PiAnICAgc3BhY2lvdXMgICAnLnN0cmlwKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJ3NwYWNpb3VzJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3d3dy5leGFtcGxlLmNvbScuc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICdleGFtcGxlJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMi4yOiBTdXBwb3J0IGZvciB0aGUgKmNoYXJzKiAnCisgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN3YXBjYXNlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnY29udmVydGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnRpdGxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIHRpdGxlY2FzZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nIHdoZXJlIHdvcmRzICcKKyAgICAgICAgICAgICAgICAgICAnc3RhcnQgd2l0aCBhblxuJworICAgICAgICAgICAgICAgICAgICcgICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnbG93ZXJjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHdvcmQgYXMgZ3JvdXBzIG9mIGNvbnNlY3V0aXZlIGxldHRlcnMuICBUaGUgZGVmaW5pdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJ3dvcmtzIGluXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gJworICAgICAgICAgICAgICAgICAgICdjb250cmFjdGlvbnMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2Rlc2lyZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVzdWx0OlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgIlRoZXlcJ1JlIEJpbGxcJ1MgRnJpZW5kcyBGcm9tIFRoZSBVayJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nICcKKyAgICAgICAgICAgICAgICAgICAncmVndWxhclxuJworICAgICAgICAgICAgICAgICAgICcgICBleHByZXNzaW9uczpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBpbXBvcnQgcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtbzogJworICAgICAgICAgICAgICAgICAgICdtby5ncm91cCgwKVswXS51cHBlcigpICtcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgICdtby5ncm91cCgwKVsxOl0ubG93ZXIoKSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICAgICAgICAgICAgICAgIHMpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gdGl0bGVjYXNlKCJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMuIilcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci50cmFuc2xhdGUodGFibGVbLCBkZWxldGVjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdvY2N1cnJpbmcgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9wdGlvbmFsIGFyZ3VtZW50ICpkZWxldGVjaGFycyogYXJlIHJlbW92ZWQsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgICdyZW1haW5pbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuICcKKyAgICAgICAgICAgICAgICAgICAndHJhbnNsYXRpb24gdGFibGUsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHdoaWNoIG11c3QgYmUgYSBzdHJpbmcgb2YgbGVuZ3RoIDI1Ni5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFlvdSBjYW4gdXNlIHRoZSAibWFrZXRyYW5zKCkiIGhlbHBlciBmdW5jdGlvbiBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICcic3RyaW5nIlxuJworICAgICAgICAgICAgICAgICAgICcgICBtb2R1bGUgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gdGFibGUuIEZvciBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdvYmplY3RzLCBzZXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICp0YWJsZSogYXJndW1lbnQgdG8gIk5vbmUiIGZvciB0cmFuc2xhdGlvbnMgdGhhdCBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAnZGVsZXRlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnM6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3JlYWQgdGhpcyBzaG9ydCB0ZXh0Jy50cmFuc2xhdGUoTm9uZSwgJ2FlaW91JylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgJ3JkIHRocyBzaHJ0IHR4dCdcbiIKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuNjogU3VwcG9ydCBmb3IgYSAiTm9uZSIgKnRhYmxlKiAnCisgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIFVuaWNvZGUgb2JqZWN0cywgdGhlICJ0cmFuc2xhdGUoKSIgbWV0aG9kIGRvZXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnYWNjZXB0IHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBvcHRpb25hbCAqZGVsZXRlY2hhcnMqIGFyZ3VtZW50LiAgSW5zdGVhZCwgaXQgcmV0dXJucyBhICcKKyAgICAgICAgICAgICAgICAgICAnY29weSBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKnMqIHdoZXJlIGFsbCBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBtYXBwZWQgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICAgICAgICdnaXZlblxuJworICAgICAgICAgICAgICAgICAgICcgICB0cmFuc2xhdGlvbiB0YWJsZSB3aGljaCBtdXN0IGJlIGEgbWFwcGluZyBvZiBVbmljb2RlICcKKyAgICAgICAgICAgICAgICAgICAnb3JkaW5hbHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBvcmRpbmFscywgVW5pY29kZSBzdHJpbmdzIG9yICJOb25lIi4gVW5tYXBwZWQgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFyZSBsZWZ0IHVudG91Y2hlZC4gQ2hhcmFjdGVycyBtYXBwZWQgdG8gIk5vbmUiIGFyZSAnCisgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZWQuICBOb3RlLFxuJworICAgICAgICAgICAgICAgICAgICcgICBhIG1vcmUgZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgY3VzdG9tICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyIG1hcHBpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29kZWMgdXNpbmcgdGhlICJjb2RlY3MiIG1vZHVsZSAoc2VlICJlbmNvZGluZ3MuY3AxMjUxIiAnCisgICAgICAgICAgICAgICAgICAgJ2ZvciBhblxuJworICAgICAgICAgICAgICAgICAgICcgICBleGFtcGxlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci51cHBlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBbNF1cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJyJzdHIudXBwZXIoKS5pc3VwcGVyKCkiIG1pZ2h0IGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJGYWxzZSIgaWYgInMiIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdVbmljb2RlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiICcKKyAgICAgICAgICAgICAgICAgICAnKExldHRlcixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuemZpbGwod2lkdGgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIG51bWVyaWMgc3RyaW5nIGxlZnQgZmlsbGVkIHdpdGggemVyb3MgaW4gYSAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZyBvZlxuJworICAgICAgICAgICAgICAgICAgICcgICBsZW5ndGggKndpZHRoKi4gIEEgc2lnbiBwcmVmaXggaXMgaGFuZGxlZCBjb3JyZWN0bHkuICAnCisgICAgICAgICAgICAgICAgICAgJ1RoZSBvcmlnaW5hbFxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gJworICAgICAgICAgICAgICAgICAgICcibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuMi4yLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGFyZSBwcmVzZW50IG9ubHkgb24gdW5pY29kZSAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHM6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICd1bmljb2RlLmlzbnVtZXJpYygpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gIlRydWUiIGlmIHRoZXJlIGFyZSBvbmx5IG51bWVyaWMgY2hhcmFjdGVycyBpbiAnCisgICAgICAgICAgICAgICAgICAgJ1MsICJGYWxzZSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3RoZXJ3aXNlLiBOdW1lcmljIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCBhbGxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyB0aGF0IGhhdmUgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3BlcnR5LCBlLmcuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3VuaWNvZGUuaXNkZWNpbWFsKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlcmUgYXJlIG9ubHkgZGVjaW1hbCBjaGFyYWN0ZXJzIGluICcKKyAgICAgICAgICAgICAgICAgICAnUywgIkZhbHNlIlxuJworICAgICAgICAgICAgICAgICAgICcgICBvdGhlcndpc2UuIERlY2ltYWwgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIGFsbFxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZm9ybSBkZWNpbWFsLXJhZGl4ICcKKyAgICAgICAgICAgICAgICAgICAnbnVtYmVycywgZS5nLlxuJworICAgICAgICAgICAgICAgICAgICcgICBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuJywKKyAnc3RyaW5ncyc6ICdcbicKKyAgICAgICAgICAgICdTdHJpbmcgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICcqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdTdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgJworICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuJworICAgICAgICAgICAgJyAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgInUiIHwgInVyIiB8ICJSIiB8ICJVIiB8ICJVUiIgfCAiVXIiICcKKyAgICAgICAgICAgICd8ICJ1UiJcbicKKyAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgIHwgImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIlxuJworICAgICAgICAgICAgJyAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyAnCisgICAgICAgICAgICAnc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuJworICAgICAgICAgICAgJyAgIGxvbmdzdHJpbmcgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ3N0cmluZ2l0ZW0qICJcJ1wnXCciXG4nCisgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgfCBcJyIiIlwnIGxvbmdzdHJpbmdpdGVtKiBcJyIiIlwnXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmdpdGVtIDo6PSBzaG9ydHN0cmluZ2NoYXIgfCBlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgc2hvcnRzdHJpbmdjaGFyIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgJworICAgICAgICAgICAgJ25ld2xpbmUgb3IgdGhlIHF1b3RlPlxuJworICAgICAgICAgICAgJyAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuJworICAgICAgICAgICAgJyAgIGVzY2FwZXNlcSAgICAgICA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdPbmUgc3ludGFjdGljIHJlc3RyaWN0aW9uIG5vdCBpbmRpY2F0ZWQgYnkgdGhlc2UgcHJvZHVjdGlvbnMgaXMgJworICAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgICd3aGl0ZXNwYWNlIGlzIG5vdCBhbGxvd2VkIGJldHdlZW4gdGhlICJzdHJpbmdwcmVmaXgiIGFuZCB0aGUgcmVzdCAnCisgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICd0aGUgc3RyaW5nIGxpdGVyYWwuIFRoZSBzb3VyY2UgY2hhcmFjdGVyIHNldCBpcyBkZWZpbmVkIGJ5IHRoZVxuJworICAgICAgICAgICAgJ2VuY29kaW5nIGRlY2xhcmF0aW9uOyBpdCBpcyBBU0NJSSBpZiBubyBlbmNvZGluZyBkZWNsYXJhdGlvbiBpcyAnCisgICAgICAgICAgICAnZ2l2ZW5cbicKKyAgICAgICAgICAgICdpbiB0aGUgc291cmNlIGZpbGU7IHNlZSBzZWN0aW9uIEVuY29kaW5nIGRlY2xhcmF0aW9ucy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdJbiBwbGFpbiBFbmdsaXNoOiBTdHJpbmcgbGl0ZXJhbHMgY2FuIGJlIGVuY2xvc2VkIGluIG1hdGNoaW5nICcKKyAgICAgICAgICAgICdzaW5nbGVcbicKKyAgICAgICAgICAgICdxdW90ZXMgKCJcJyIpIG9yIGRvdWJsZSBxdW90ZXMgKCIiIikuICBUaGV5IGNhbiBhbHNvIGJlIGVuY2xvc2VkICcKKyAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgJ21hdGNoaW5nIGdyb3VwcyBvZiB0aHJlZSBzaW5nbGUgb3IgZG91YmxlIHF1b3RlcyAodGhlc2UgYXJlICcKKyAgICAgICAgICAgICdnZW5lcmFsbHlcbicKKyAgICAgICAgICAgICdyZWZlcnJlZCB0byBhcyAqdHJpcGxlLXF1b3RlZCBzdHJpbmdzKikuICBUaGUgYmFja3NsYXNoICgiXFwiKVxuJworICAgICAgICAgICAgJ2NoYXJhY3RlciBpcyB1c2VkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIHRoYXQgb3RoZXJ3aXNlIGhhdmUgYSAnCisgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgJ21lYW5pbmcsIHN1Y2ggYXMgbmV3bGluZSwgYmFja3NsYXNoIGl0c2VsZiwgb3IgdGhlIHF1b3RlICcKKyAgICAgICAgICAgICdjaGFyYWN0ZXIuXG4nCisgICAgICAgICAgICAnU3RyaW5nIGxpdGVyYWxzIG1heSBvcHRpb25hbGx5IGJlIHByZWZpeGVkIHdpdGggYSBsZXR0ZXIgIlwnclwnIiAnCisgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICciXCdSXCciOyBzdWNoIHN0cmluZ3MgYXJlIGNhbGxlZCAqcmF3IHN0cmluZ3MqIGFuZCB1c2UgZGlmZmVyZW50ICcKKyAgICAgICAgICAgICdydWxlc1xuJworICAgICAgICAgICAgJ2ZvciBpbnRlcnByZXRpbmcgYmFja3NsYXNoIGVzY2FwZSBzZXF1ZW5jZXMuICBBIHByZWZpeCBvZiAiXCd1XCciICcKKyAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgJyJcJ1VcJyIgbWFrZXMgdGhlIHN0cmluZyBhIFVuaWNvZGUgc3RyaW5nLiAgVW5pY29kZSBzdHJpbmdzIHVzZSAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnVW5pY29kZSBjaGFyYWN0ZXIgc2V0IGFzIGRlZmluZWQgYnkgdGhlIFVuaWNvZGUgQ29uc29ydGl1bSBhbmQgJworICAgICAgICAgICAgJ0lTT1xuJworICAgICAgICAgICAgJzEwNjQ2LiAgU29tZSBhZGRpdGlvbmFsIGVzY2FwZSBzZXF1ZW5jZXMsIGRlc2NyaWJlZCBiZWxvdywgYXJlXG4nCisgICAgICAgICAgICAnYXZhaWxhYmxlIGluIFVuaWNvZGUgc3RyaW5ncy4gQSBwcmVmaXggb2YgIlwnYlwnIiBvciAiXCdCXCciIGlzICcKKyAgICAgICAgICAgICdpZ25vcmVkIGluXG4nCisgICAgICAgICAgICAnUHl0aG9uIDI7IGl0IGluZGljYXRlcyB0aGF0IHRoZSBsaXRlcmFsIHNob3VsZCBiZWNvbWUgYSBieXRlcyAnCisgICAgICAgICAgICAnbGl0ZXJhbFxuJworICAgICAgICAgICAgJ2luIFB5dGhvbiAzIChlLmcuIHdoZW4gY29kZSBpcyBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB3aXRoICcKKyAgICAgICAgICAgICcydG8zKS4gIEFcbicKKyAgICAgICAgICAgICciXCd1XCciIG9yICJcJ2JcJyIgcHJlZml4IG1heSBiZSBmb2xsb3dlZCBieSBhbiAiXCdyXCciIHByZWZpeC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdJbiB0cmlwbGUtcXVvdGVkIHN0cmluZ3MsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSAnCisgICAgICAgICAgICAnYWxsb3dlZFxuJworICAgICAgICAgICAgJyhhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xuJworICAgICAgICAgICAgJ3Rlcm1pbmF0ZSB0aGUgc3RyaW5nLiAgKEEgInF1b3RlIiBpcyB0aGUgY2hhcmFjdGVyIHVzZWQgdG8gb3BlbiAnCisgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAnc3RyaW5nLCBpLmUuIGVpdGhlciAiXCciIG9yICIiIi4pXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnVW5sZXNzIGFuICJcJ3JcJyIgb3IgIlwnUlwnIiBwcmVmaXggaXMgcHJlc2VudCwgZXNjYXBlIHNlcXVlbmNlcyAnCisgICAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAgICdzdHJpbmdzIGFyZSBpbnRlcnByZXRlZCBhY2NvcmRpbmcgdG8gcnVsZXMgc2ltaWxhciB0byB0aG9zZSB1c2VkICcKKyAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgJ1N0YW5kYXJkIEMuICBUaGUgcmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZTpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG4nCisgICAgICAgICAgICAnfCAiXFxuZXdsaW5lIiAgICAgICAgfCBJZ25vcmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcXFwiICAgICAgICAgICAgICB8IEJhY2tzbGFzaCAoIlxcIikgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcXCciICAgICAgICAgICAgICB8IFNpbmdsZSBxdW90ZSAoIlwnIikgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcIiIgICAgICAgICAgICAgIHwgRG91YmxlIHF1b3RlICgiIiIpICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXGEiICAgICAgICAgICAgICB8IEFTQ0lJIEJlbGwgKEJFTCkgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxiIiAgICAgICAgICAgICAgfCBBU0NJSSBCYWNrc3BhY2UgKEJTKSAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcZiIgICAgICAgICAgICAgIHwgQVNDSUkgRm9ybWZlZWQgKEZGKSAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXG4iICAgICAgICAgICAgICB8IEFTQ0lJIExpbmVmZWVkIChMRikgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxOe25hbWV9IiAgICAgICAgfCBDaGFyYWN0ZXIgbmFtZWQgKm5hbWUqIGluIHRoZSAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICB8IFVuaWNvZGUgZGF0YWJhc2UgKFVuaWNvZGUgb25seSkgICB8ICAgICAgICAgJworICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxyIiAgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcdCIgICAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHV4eHh4IiAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICcKKyAgICAgICAgICAgICcoMSkgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgKnh4eHgqIChVbmljb2RlIG9ubHkpICAgICAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXFV4eHh4eHh4eCIgICAgICB8IENoYXJhY3RlciB3aXRoIDMyLWJpdCBoZXggdmFsdWUgICB8ICcKKyAgICAgICAgICAgICcoMikgICAgIHxcbicKKyAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgIHwgKnh4eHh4eHh4KiAoVW5pY29kZSBvbmx5KSAgICAgICAgIHwgICAgICAgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHYiICAgICAgICAgICAgICB8IEFTQ0lJIFZlcnRpY2FsIFRhYiAoVlQpICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxvb28iICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSAqb29vKiAgfCAnCisgICAgICAgICAgICAnKDMsNSkgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxceGhoIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggaGV4IHZhbHVlICpoaCogICAgIHwgJworICAgICAgICAgICAgJyg0LDUpICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcxLiBJbmRpdmlkdWFsIGNvZGUgdW5pdHMgd2hpY2ggZm9ybSBwYXJ0cyBvZiBhIHN1cnJvZ2F0ZSBwYWlyICcKKyAgICAgICAgICAgICdjYW5cbicKKyAgICAgICAgICAgICcgICBiZSBlbmNvZGVkIHVzaW5nIHRoaXMgZXNjYXBlIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzIuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheSwgYnV0IGNoYXJhY3RlcnNcbicKKyAgICAgICAgICAgICcgICBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKEJNUCkgd2lsbCBiZSBlbmNvZGVkICcKKyAgICAgICAgICAgICd1c2luZyBhXG4nCisgICAgICAgICAgICAnICAgc3Vycm9nYXRlIHBhaXIgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHRvIHVzZSAxNi1iaXQgY29kZSB1bml0cyAnCisgICAgICAgICAgICAnKHRoZVxuJworICAgICAgICAgICAgJyAgIGRlZmF1bHQpLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzMuIEFzIGluIFN0YW5kYXJkIEMsIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBhcmUgYWNjZXB0ZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnNC4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBlc2NhcGVzIGRlbm90ZSB0aGVcbicKKyAgICAgICAgICAgICcgICBieXRlIHdpdGggdGhlIGdpdmVuIHZhbHVlOyBpdCBpcyBub3QgbmVjZXNzYXJ5IHRoYXQgdGhlIGJ5dGVcbicKKyAgICAgICAgICAgICcgICBlbmNvZGVzIGEgY2hhcmFjdGVyIGluIHRoZSBzb3VyY2UgY2hhcmFjdGVyIHNldC4gSW4gYSBVbmljb2RlXG4nCisgICAgICAgICAgICAnICAgbGl0ZXJhbCwgdGhlc2UgZXNjYXBlcyBkZW5vdGUgYSBVbmljb2RlIGNoYXJhY3RlciB3aXRoIHRoZSAnCisgICAgICAgICAgICAnZ2l2ZW5cbicKKyAgICAgICAgICAgICcgICB2YWx1ZS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdVbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICdzdHJpbmcgdW5jaGFuZ2VkLCBpLmUuLCAqdGhlIGJhY2tzbGFzaCBpcyBsZWZ0IGluIHRoZSBzdHJpbmcqLiAgJworICAgICAgICAgICAgJyhUaGlzXG4nCisgICAgICAgICAgICAnYmVoYXZpb3IgaXMgdXNlZnVsIHdoZW4gZGVidWdnaW5nOiBpZiBhbiBlc2NhcGUgc2VxdWVuY2UgaXMgJworICAgICAgICAgICAgJ21pc3R5cGVkLFxuJworICAgICAgICAgICAgJ3RoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzICcKKyAgICAgICAgICAgICdhbHNvXG4nCisgICAgICAgICAgICAnaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgZXNjYXBlIHNlcXVlbmNlcyBtYXJrZWQgYXMgIihVbmljb2RlICcKKyAgICAgICAgICAgICdvbmx5KSJcbicKKyAgICAgICAgICAgICdpbiB0aGUgdGFibGUgYWJvdmUgZmFsbCBpbnRvIHRoZSBjYXRlZ29yeSBvZiB1bnJlY29nbml6ZWQgZXNjYXBlcyAnCisgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAnbm9uLVVuaWNvZGUgc3RyaW5nIGxpdGVyYWxzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1doZW4gYW4gIlwnclwnIiBvciAiXCdSXCciIHByZWZpeCBpcyBwcmVzZW50LCBhIGNoYXJhY3RlciAnCisgICAgICAgICAgICAnZm9sbG93aW5nIGFcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2ggaXMgaW5jbHVkZWQgaW4gdGhlIHN0cmluZyB3aXRob3V0IGNoYW5nZSwgYW5kICphbGxcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2hlcyBhcmUgbGVmdCBpbiB0aGUgc3RyaW5nKi4gIEZvciBleGFtcGxlLCB0aGUgc3RyaW5nICcKKyAgICAgICAgICAgICdsaXRlcmFsXG4nCisgICAgICAgICAgICAnInIiXFxuIiIgY29uc2lzdHMgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhIGxvd2VyY2FzZSAnCisgICAgICAgICAgICAnIlwnblwnIi5cbicKKyAgICAgICAgICAgICdTdHJpbmcgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsIGJ1dCB0aGUgYmFja3NsYXNoXG4nCisgICAgICAgICAgICAncmVtYWlucyBpbiB0aGUgc3RyaW5nOyBmb3IgZXhhbXBsZSwgInIiXFwiIiIgaXMgYSB2YWxpZCBzdHJpbmcgJworICAgICAgICAgICAgJ2xpdGVyYWxcbicKKyAgICAgICAgICAgICdjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYSBkb3VibGUgcXVvdGU7ICcKKyAgICAgICAgICAgICciciJcXCIiXG4nCisgICAgICAgICAgICAnaXMgbm90IGEgdmFsaWQgc3RyaW5nIGxpdGVyYWwgKGV2ZW4gYSByYXcgc3RyaW5nIGNhbm5vdCBlbmQgaW4gYW4gJworICAgICAgICAgICAgJ29kZFxuJworICAgICAgICAgICAgJ251bWJlciBvZiBiYWNrc2xhc2hlcykuICBTcGVjaWZpY2FsbHksICphIHJhdyBzdHJpbmcgY2Fubm90IGVuZCAnCisgICAgICAgICAgICAnaW4gYVxuJworICAgICAgICAgICAgJ3NpbmdsZSBiYWNrc2xhc2gqIChzaW5jZSB0aGUgYmFja3NsYXNoIHdvdWxkIGVzY2FwZSB0aGUgJworICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgJ3F1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZSBiYWNrc2xhc2ggZm9sbG93ZWQgYnkgJworICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICduZXdsaW5lIGlzIGludGVycHJldGVkIGFzIHRob3NlIHR3byBjaGFyYWN0ZXJzIGFzIHBhcnQgb2YgdGhlICcKKyAgICAgICAgICAgICdzdHJpbmcsXG4nCisgICAgICAgICAgICAnKm5vdCogYXMgYSBsaW5lIGNvbnRpbnVhdGlvbi5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdXaGVuIGFuICJcJ3JcJyIgb3IgIlwnUlwnIiBwcmVmaXggaXMgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGEgJworICAgICAgICAgICAgJyJcJ3VcJyIgb3JcbicKKyAgICAgICAgICAgICciXCdVXCciIHByZWZpeCwgdGhlbiB0aGUgIlxcdVhYWFgiIGFuZCAiXFxVWFhYWFhYWFgiIGVzY2FwZSAnCisgICAgICAgICAgICAnc2VxdWVuY2VzIGFyZVxuJworICAgICAgICAgICAgJ3Byb2Nlc3NlZCB3aGlsZSAgKmFsbCBvdGhlciBiYWNrc2xhc2hlcyBhcmUgbGVmdCBpbiB0aGUgc3RyaW5nKi4gJworICAgICAgICAgICAgJ0ZvclxuJworICAgICAgICAgICAgJ2V4YW1wbGUsIHRoZSBzdHJpbmcgbGl0ZXJhbCAidXIiXFx1MDA2MlxcbiIiIGNvbnNpc3RzIG9mIHRocmVlICcKKyAgICAgICAgICAgICdVbmljb2RlXG4nCisgICAgICAgICAgICAiY2hhcmFjdGVyczogJ0xBVElOIFNNQUxMIExFVFRFUiBCJywgJ1JFVkVSU0UgU09MSURVUycsIGFuZCAiCisgICAgICAgICAgICAiJ0xBVElOXG4iCisgICAgICAgICAgICAiU01BTEwgTEVUVEVSIE4nLiBCYWNrc2xhc2hlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgcHJlY2VkaW5nXG4iCisgICAgICAgICAgICAnYmFja3NsYXNoOyBob3dldmVyLCBib3RoIHJlbWFpbiBpbiB0aGUgc3RyaW5nLiAgQXMgYSByZXN1bHQsICcKKyAgICAgICAgICAgICciXFx1WFhYWCJcbicKKyAgICAgICAgICAgICdlc2NhcGUgc2VxdWVuY2VzIGFyZSBvbmx5IHJlY29nbml6ZWQgd2hlbiB0aGVyZSBhcmUgYW4gb2RkIG51bWJlciAnCisgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICdiYWNrc2xhc2hlcy5cbicsCisgJ3N1YnNjcmlwdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAnU3Vic2NyaXB0aW9uc1xuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBIHN1YnNjcmlwdGlvbiBzZWxlY3RzIGFuIGl0ZW0gb2YgYSBzZXF1ZW5jZSAoc3RyaW5nLCB0dXBsZSAnCisgICAgICAgICAgICAgICAgICAnb3IgbGlzdClcbicKKyAgICAgICAgICAgICAgICAgICdvciBtYXBwaW5nIChkaWN0aW9uYXJ5KSBvYmplY3Q6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3Vic2NyaXB0aW9uIDo6PSBwcmltYXJ5ICJbIiBleHByZXNzaW9uX2xpc3QgIl0iXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhbiBvYmplY3Qgb2YgYSBzZXF1ZW5jZSBvciAnCisgICAgICAgICAgICAgICAgICAnbWFwcGluZyB0eXBlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0lmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZywgdGhlIGV4cHJlc3Npb24gbGlzdCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdldmFsdWF0ZSB0byBhblxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdCB3aG9zZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcsIGFuZCAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIHNlbGVjdHMgdGhlIHZhbHVlIGluIHRoZSBtYXBwaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRzIHRvIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICdrZXkuICAoVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBhIHR1cGxlIGV4Y2VwdCBpZiBpdCBoYXMgJworICAgICAgICAgICAgICAgICAgJ2V4YWN0bHkgb25lXG4nCisgICAgICAgICAgICAgICAgICAnaXRlbS4pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSWYgdGhlIHByaW1hcnkgaXMgYSBzZXF1ZW5jZSwgdGhlIGV4cHJlc3Npb24gKGxpc3QpIG11c3QgJworICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIHRvIGFcbicKKyAgICAgICAgICAgICAgICAgICdwbGFpbiBpbnRlZ2VyLiAgSWYgdGhpcyB2YWx1ZSBpcyBuZWdhdGl2ZSwgdGhlIGxlbmd0aCBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAnaXMgYWRkZWQgdG8gaXQgKHNvIHRoYXQsIGUuZy4sICJ4Wy0xXSIgc2VsZWN0cyB0aGUgbGFzdCAnCisgICAgICAgICAgICAgICAgICAnaXRlbSBvZiAieCIuKVxuJworICAgICAgICAgICAgICAgICAgJ1RoZSByZXN1bHRpbmcgdmFsdWUgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIgbGVzcyB0aGFuICcKKyAgICAgICAgICAgICAgICAgICd0aGUgbnVtYmVyXG4nCisgICAgICAgICAgICAgICAgICAnb2YgaXRlbXMgaW4gdGhlIHNlcXVlbmNlLCBhbmQgdGhlIHN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaXRlbSB3aG9zZVxuJworICAgICAgICAgICAgICAgICAgJ2luZGV4IGlzIHRoYXQgdmFsdWUgKGNvdW50aW5nIGZyb20gemVybykuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiQSBzdHJpbmcncyBpdGVtcyBhcmUgY2hhcmFjdGVycy4gIEEgY2hhcmFjdGVyIGlzIG5vdCBhICIKKyAgICAgICAgICAgICAgICAgICdzZXBhcmF0ZSBkYXRhXG4nCisgICAgICAgICAgICAgICAgICAndHlwZSBidXQgYSBzdHJpbmcgb2YgZXhhY3RseSBvbmUgY2hhcmFjdGVyLlxuJywKKyAndHJ1dGgnOiAnXG4nCisgICAgICAgICAgJ1RydXRoIFZhbHVlIFRlc3RpbmdcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQW55IG9iamVjdCBjYW4gYmUgdGVzdGVkIGZvciB0cnV0aCB2YWx1ZSwgZm9yIHVzZSBpbiBhbiAiaWYiIG9yXG4nCisgICAgICAgICAgJyJ3aGlsZSIgY29uZGl0aW9uIG9yIGFzIG9wZXJhbmQgb2YgdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyBiZWxvdy4gJworICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAnZm9sbG93aW5nIHZhbHVlcyBhcmUgY29uc2lkZXJlZCBmYWxzZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogIk5vbmUiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqICJGYWxzZSJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogemVybyBvZiBhbnkgbnVtZXJpYyB0eXBlLCBmb3IgZXhhbXBsZSwgIjAiLCAiMEwiLCAiMC4wIiwgIjBqIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogYW55IGVtcHR5IHNlcXVlbmNlLCBmb3IgZXhhbXBsZSwgIlwnXCciLCAiKCkiLCAiW10iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiBhbnkgZW1wdHkgbWFwcGluZywgZm9yIGV4YW1wbGUsICJ7fSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIGluc3RhbmNlcyBvZiB1c2VyLWRlZmluZWQgY2xhc3NlcywgaWYgdGhlIGNsYXNzIGRlZmluZXMgYVxuJworICAgICAgICAgICcgICJfX25vbnplcm9fXygpIiBvciAiX19sZW5fXygpIiBtZXRob2QsIHdoZW4gdGhhdCBtZXRob2QgcmV0dXJucyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgIGludGVnZXIgemVybyBvciAiYm9vbCIgdmFsdWUgIkZhbHNlIi4gWzFdXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBbGwgb3RoZXIgdmFsdWVzIGFyZSBjb25zaWRlcmVkIHRydWUgLS0tIHNvIG9iamVjdHMgb2YgbWFueSB0eXBlcyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdhbHdheXMgdHJ1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ09wZXJhdGlvbnMgYW5kIGJ1aWx0LWluIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYSBCb29sZWFuIHJlc3VsdCAnCisgICAgICAgICAgJ2Fsd2F5c1xuJworICAgICAgICAgICdyZXR1cm4gIjAiIG9yICJGYWxzZSIgZm9yIGZhbHNlIGFuZCAiMSIgb3IgIlRydWUiIGZvciB0cnVlLCB1bmxlc3NcbicKKyAgICAgICAgICAnb3RoZXJ3aXNlIHN0YXRlZC4gKEltcG9ydGFudCBleGNlcHRpb246IHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgJworICAgICAgICAgICcib3IiXG4nCisgICAgICAgICAgJ2FuZCAiYW5kIiBhbHdheXMgcmV0dXJuIG9uZSBvZiB0aGVpciBvcGVyYW5kcy4pXG4nLAorICd0cnknOiAnXG4nCisgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAidHJ5IiBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG4nCisgICAgICAgICdmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuJworICAgICAgICAnICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsoImFzIiB8ICIsIikgaWRlbnRpZmllcl1dICI6IiAnCisgICAgICAgICdzdWl0ZSkrXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgJyAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNTogSW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgUHl0aG9uLFxuJworICAgICAgICAnInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IiBkaWQgbm90IHdvcmsuICJ0cnkiLi4uImV4Y2VwdCIgaGFkIHRvICcKKyAgICAgICAgJ2JlXG4nCisgICAgICAgICduZXN0ZWQgaW4gInRyeSIuLi4iZmluYWxseSIuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW4gJworICAgICAgICAnbm9cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbicKKyAgICAgICAgJ2V4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCBmb3IgJworICAgICAgICAnYW5cbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0ICcKKyAgICAgICAgJ2NsYXVzZXNcbicKKyAgICAgICAgJ2luIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW4gJworICAgICAgICAnZXhwcmVzc2lvbi1cbicKKyAgICAgICAgJ2xlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuJworICAgICAgICAnZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0IGV4cHJlc3Npb25cbicKKyAgICAgICAgJ2lzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmdcbicKKyAgICAgICAgJ29iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzIGNvbXBhdGlibGVcbicKKyAgICAgICAgJ3dpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlICcKKyAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAnb2JqZWN0LCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuICcKKyAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAnaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uICcKKyAgICAgICAgJ3N0YWNrLlxuJworICAgICAgICAnWzFdXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0lmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG4nCisgICAgICAgICdyYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgJworICAgICAgICAnYW5kXG4nCisgICAgICAgICdhIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxuJworICAgICAgICAndGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgJworICAgICAgICAncmFpc2VkXG4nCisgICAgICAgICd0aGUgZXhjZXB0aW9uKS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbicKKyAgICAgICAgJ3RoZSB0YXJnZXQgc3BlY2lmaWVkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgYW5kIHRoZSAnCisgICAgICAgICdleGNlcHRcbicKKyAgICAgICAgImNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdCBjbGF1c2VzIG11c3QgaGF2ZSBhblxuIgorICAgICAgICAnZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzIHJlYWNoZWQsIGV4ZWN1dGlvblxuJworICAgICAgICAnY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC4gIChUaGlzIG1lYW5zIHRoYXRcbicKKyAgICAgICAgJ2lmIHR3byBuZXN0ZWQgaGFuZGxlcnMgZXhpc3QgZm9yIHRoZSBzYW1lIGV4Y2VwdGlvbiwgYW5kIHRoZSAnCisgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgJ29jY3VycyBpbiB0aGUgdHJ5IGNsYXVzZSBvZiB0aGUgaW5uZXIgaGFuZGxlciwgdGhlIG91dGVyIGhhbmRsZXIgJworICAgICAgICAnd2lsbFxuJworICAgICAgICAnbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcbicKKyAgICAgICAgJ1xuJworICAgICAgICAiQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2UncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbiIKKyAgICAgICAgJ2V4Y2VwdGlvbiBhcmUgYXNzaWduZWQgdG8gdGhyZWUgdmFyaWFibGVzIGluIHRoZSAic3lzIiBtb2R1bGU6XG4nCisgICAgICAgICcic3lzLmV4Y190eXBlIiByZWNlaXZlcyB0aGUgb2JqZWN0IGlkZW50aWZ5aW5nIHRoZSBleGNlcHRpb247XG4nCisgICAgICAgICcic3lzLmV4Y192YWx1ZSIgcmVjZWl2ZXMgdGhlIGV4Y2VwdGlvblwncyBwYXJhbWV0ZXI7XG4nCisgICAgICAgICcic3lzLmV4Y190cmFjZWJhY2siIHJlY2VpdmVzIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlIHNlY3Rpb24gVGhlXG4nCisgICAgICAgICdzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSkgaWRlbnRpZnlpbmcgdGhlIHBvaW50IGluIHRoZSBwcm9ncmFtIHdoZXJlXG4nCisgICAgICAgICd0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiBUaGVzZSBkZXRhaWxzIGFyZSBhbHNvIGF2YWlsYWJsZSB0aHJvdWdoIHRoZVxuJworICAgICAgICAnInN5cy5leGNfaW5mbygpIiBmdW5jdGlvbiwgd2hpY2ggcmV0dXJucyBhIHR1cGxlICIoZXhjX3R5cGUsXG4nCisgICAgICAgICdleGNfdmFsdWUsIGV4Y190cmFjZWJhY2spIi4gIFVzZSBvZiB0aGUgY29ycmVzcG9uZGluZyB2YXJpYWJsZXMgaXNcbicKKyAgICAgICAgJ2RlcHJlY2F0ZWQgaW4gZmF2b3Igb2YgdGhpcyBmdW5jdGlvbiwgc2luY2UgdGhlaXIgdXNlIGlzIHVuc2FmZSBpbiBhXG4nCisgICAgICAgICd0aHJlYWRlZCBwcm9ncmFtLiAgQXMgb2YgUHl0aG9uIDEuNSwgdGhlIHZhcmlhYmxlcyBhcmUgcmVzdG9yZWQgdG9cbicKKyAgICAgICAgJ3RoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZyBmcm9tIGEgJworICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgJ3RoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG4nCisgICAgICAgICd0aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlIGFyZVxuJworICAgICAgICAnbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdJZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAnCisgICAgICAgICcidHJ5IlxuJworICAgICAgICAnY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmICcKKyAgICAgICAgJ2FuXG4nCisgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuJworICAgICAgICAnZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gICcKKyAgICAgICAgJ0lmXG4nCisgICAgICAgICd0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiwgaXQgaXMgcmUtcmFpc2VkIGF0IHRoZSBlbmQgb2YgdGhlXG4nCisgICAgICAgICciZmluYWxseSIgY2xhdXNlLiBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24gJworICAgICAgICAnb3JcbicKKyAgICAgICAgJ2V4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb24gaXNcbicKKyAgICAgICAgJ2Rpc2NhcmRlZDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgPj4+IGRlZiBmKCk6XG4nCisgICAgICAgICcgICAuLi4gICAgIHRyeTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgICAgIDEvMFxuJworICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4nCisgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgJyAgID4+PiBmKClcbicKKyAgICAgICAgJyAgIDQyXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbicKKyAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluIHRoZVxuJworICAgICAgICAnInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlICcKKyAgICAgICAgJ2lzXG4nCisgICAgICAgICdhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsICcKKyAgICAgICAgJ2luXG4nCisgICAgICAgICd0aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbicKKyAgICAgICAgJ2ltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG4nCisgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbicKKyAgICAgICAgJyJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJ2xhc3Qgb25lIGV4ZWN1dGVkOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICA+Pj4gZGVmIGZvbygpOlxuJworICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ3RyeSdcbiIKKyAgICAgICAgJyAgIC4uLiAgICAgZmluYWxseTpcbicKKyAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAnZmluYWxseSdcbiIKKyAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAnICAgPj4+IGZvbygpXG4nCisgICAgICAgICIgICAnZmluYWxseSdcbiIKKyAgICAgICAgJ1xuJworICAgICAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4nCisgICAgICAgICdFeGNlcHRpb25zLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvICcKKyAgICAgICAgJ2dlbmVyYXRlXG4nCisgICAgICAgICdleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uIFRoZSByYWlzZSBzdGF0ZW1lbnQuXG4nLAorICd0eXBlcyc6ICdcbicKKyAgICAgICAgICAnVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQmVsb3cgaXMgYSBsaXN0IG9mIHRoZSB0eXBlcyB0aGF0IGFyZSBidWlsdCBpbnRvIFB5dGhvbi4gICcKKyAgICAgICAgICAnRXh0ZW5zaW9uXG4nCisgICAgICAgICAgJ21vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG4nCisgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uKSBjYW4gZGVmaW5lIGFkZGl0aW9uYWwgdHlwZXMuICBGdXR1cmUgdmVyc2lvbnMgb2ZcbicKKyAgICAgICAgICAnUHl0aG9uIG1heSBhZGQgdHlwZXMgdG8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuLCByYXRpb25hbCAnCisgICAgICAgICAgJ251bWJlcnMsXG4nCisgICAgICAgICAgJ2VmZmljaWVudGx5IHN0b3JlZCBhcnJheXMgb2YgaW50ZWdlcnMsIGV0Yy4pLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU29tZSBvZiB0aGUgdHlwZSBkZXNjcmlwdGlvbnMgYmVsb3cgY29udGFpbiBhIHBhcmFncmFwaCBsaXN0aW5nXG4nCisgICAgICAgICAgIidzcGVjaWFsIGF0dHJpYnV0ZXMuJyAgVGhlc2UgYXJlIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGFjY2VzcyB0byAiCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiBhbmQgYXJlIG5vdCBpbnRlbmRlZCBmb3IgZ2VuZXJhbCB1c2UuICBUaGVpciAnCisgICAgICAgICAgJ2RlZmluaXRpb25cbicKKyAgICAgICAgICAnbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTm9uZVxuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lICJOb25lIi4gJworICAgICAgICAgICdJdFxuJworICAgICAgICAgICcgICBpcyB1c2VkIHRvIHNpZ25pZnkgdGhlIGFic2VuY2Ugb2YgYSB2YWx1ZSBpbiBtYW55IHNpdHVhdGlvbnMsICcKKyAgICAgICAgICAnZS5nLixcbicKKyAgICAgICAgICAiICAgaXQgaXMgcmV0dXJuZWQgZnJvbSBmdW5jdGlvbnMgdGhhdCBkb24ndCBleHBsaWNpdGx5IHJldHVyblxuIgorICAgICAgICAgICcgICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTm90SW1wbGVtZW50ZWRcbicKKyAgICAgICAgICAnICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgYnVpbHQtaW4gbmFtZVxuJworICAgICAgICAgICcgICAiTm90SW1wbGVtZW50ZWQiLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzICcKKyAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgJyAgIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGUgJworICAgICAgICAgICdyZWZsZWN0ZWRcbicKKyAgICAgICAgICAnICAgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdG9yLikgICcKKyAgICAgICAgICAnSXRzXG4nCisgICAgICAgICAgJyAgIHRydXRoIHZhbHVlIGlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdFbGxpcHNpc1xuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4nCisgICAgICAgICAgJyAgICJFbGxpcHNpcyIuIEl0IGlzIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHByZXNlbmNlIG9mIHRoZSAiLi4uIiAnCisgICAgICAgICAgJ3N5bnRheFxuJworICAgICAgICAgICcgICBpbiBhIHNsaWNlLiAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcibnVtYmVycy5OdW1iZXIiXG4nCisgICAgICAgICAgJyAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICBhcml0aG1ldGljIG9wZXJhdG9ycyBhbmQgYXJpdGhtZXRpYyBidWlsdC1pbiBmdW5jdGlvbnMuICAnCisgICAgICAgICAgJ051bWVyaWNcbicKKyAgICAgICAgICAnICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbicKKyAgICAgICAgICAnICAgUHl0aG9uIG51bWJlcnMgYXJlIG9mIGNvdXJzZSBzdHJvbmdseSByZWxhdGVkIHRvIG1hdGhlbWF0aWNhbFxuJworICAgICAgICAgICcgICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsICcKKyAgICAgICAgICAncmVwcmVzZW50YXRpb25cbicKKyAgICAgICAgICAnICAgaW4gY29tcHV0ZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgY29tcGxleCBudW1iZXJzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuSW50ZWdyYWwiXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBlbGVtZW50cyBmcm9tIHRoZSBtYXRoZW1hdGljYWwgc2V0IG9mICcKKyAgICAgICAgICAnaW50ZWdlcnNcbicKKyAgICAgICAgICAnICAgICAgKHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGVyZSBhcmUgdGhyZWUgdHlwZXMgb2YgaW50ZWdlcnM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBQbGFpbiBpbnRlZ2Vyc1xuJworICAgICAgICAgICcgICAgICAgICBUaGVzZSByZXByZXNlbnQgbnVtYmVycyBpbiB0aGUgcmFuZ2UgLTIxNDc0ODM2NDggdGhyb3VnaFxuJworICAgICAgICAgICcgICAgICAgICAyMTQ3NDgzNjQ3LiAoVGhlIHJhbmdlIG1heSBiZSBsYXJnZXIgb24gbWFjaGluZXMgd2l0aCBhXG4nCisgICAgICAgICAgJyAgICAgICAgIGxhcmdlciBuYXR1cmFsIHdvcmQgc2l6ZSwgYnV0IG5vdCBzbWFsbGVyLikgIFdoZW4gdGhlICcKKyAgICAgICAgICAncmVzdWx0XG4nCisgICAgICAgICAgJyAgICAgICAgIG9mIGFuIG9wZXJhdGlvbiB3b3VsZCBmYWxsIG91dHNpZGUgdGhpcyByYW5nZSwgdGhlIHJlc3VsdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgICAgIG5vcm1hbGx5IHJldHVybmVkIGFzIGEgbG9uZyBpbnRlZ2VyIChpbiBzb21lIGNhc2VzLCB0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgZXhjZXB0aW9uICJPdmVyZmxvd0Vycm9yIiBpcyByYWlzZWQgaW5zdGVhZCkuICBGb3IgdGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIHB1cnBvc2Ugb2Ygc2hpZnQgYW5kIG1hc2sgb3BlcmF0aW9ucywgaW50ZWdlcnMgYXJlIGFzc3VtZWQgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICIgICAgICAgICBoYXZlIGEgYmluYXJ5LCAyJ3MgY29tcGxlbWVudCBub3RhdGlvbiB1c2luZyAzMiBvciBtb3JlICIKKyAgICAgICAgICAnYml0cyxcbicKKyAgICAgICAgICAnICAgICAgICAgYW5kIGhpZGluZyBubyBiaXRzIGZyb20gdGhlIHVzZXIgKGkuZS4sIGFsbCA0Mjk0OTY3Mjk2XG4nCisgICAgICAgICAgJyAgICAgICAgIGRpZmZlcmVudCBiaXQgcGF0dGVybnMgY29ycmVzcG9uZCB0byBkaWZmZXJlbnQgdmFsdWVzKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIExvbmcgaW50ZWdlcnNcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4nCisgICAgICAgICAgJyAgICAgICAgIGF2YWlsYWJsZSAodmlydHVhbCkgbWVtb3J5IG9ubHkuICBGb3IgdGhlIHB1cnBvc2Ugb2YgJworICAgICAgICAgICdzaGlmdFxuJworICAgICAgICAgICcgICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICIgICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMidzXG4iCisgICAgICAgICAgJyAgICAgICAgIGNvbXBsZW1lbnQgd2hpY2ggZ2l2ZXMgdGhlIGlsbHVzaW9uIG9mIGFuIGluZmluaXRlIHN0cmluZyAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBCb29sZWFuc1xuJworICAgICAgICAgICcgICAgICAgICBUaGVzZSByZXByZXNlbnQgdGhlIHRydXRoIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZS4gIFRoZSB0d29cbicKKyAgICAgICAgICAnICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIG9ubHkgQm9vbGVhbiBvYmplY3RzLiBUaGUgQm9vbGVhbiB0eXBlIGlzIGEgc3VidHlwZSBvZiAnCisgICAgICAgICAgJ3BsYWluXG4nCisgICAgICAgICAgJyAgICAgICAgIGludGVnZXJzLCBhbmQgQm9vbGVhbiB2YWx1ZXMgYmVoYXZlIGxpa2UgdGhlIHZhbHVlcyAwIGFuZCAnCisgICAgICAgICAgJzEsXG4nCisgICAgICAgICAgJyAgICAgICAgIHJlc3BlY3RpdmVseSwgaW4gYWxtb3N0IGFsbCBjb250ZXh0cywgdGhlIGV4Y2VwdGlvbiBiZWluZ1xuJworICAgICAgICAgICcgICAgICAgICB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgc3RyaW5nLCB0aGUgc3RyaW5ncyAiIkZhbHNlIiIgb3JcbicKKyAgICAgICAgICAnICAgICAgICAgIiJUcnVlIiIgYXJlIHJldHVybmVkLCByZXNwZWN0aXZlbHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgcnVsZXMgZm9yIGludGVnZXIgcmVwcmVzZW50YXRpb24gYXJlIGludGVuZGVkIHRvIGdpdmUgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgaW52b2x2aW5nIG5lZ2F0aXZlIGludGVnZXJzIGFuZCB0aGUgbGVhc3Qgc3VycHJpc2VzIHdoZW5cbicKKyAgICAgICAgICAnICAgICAgc3dpdGNoaW5nIGJldHdlZW4gdGhlIHBsYWluIGFuZCBsb25nIGludGVnZXIgZG9tYWlucy4gIEFueVxuJworICAgICAgICAgICcgICAgICBvcGVyYXRpb24sIGlmIGl0IHlpZWxkcyBhIHJlc3VsdCBpbiB0aGUgcGxhaW4gaW50ZWdlciAnCisgICAgICAgICAgJ2RvbWFpbixcbicKKyAgICAgICAgICAnICAgICAgd2lsbCB5aWVsZCB0aGUgc2FtZSByZXN1bHQgaW4gdGhlIGxvbmcgaW50ZWdlciBkb21haW4gb3IgJworICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgJyAgICAgIHVzaW5nIG1peGVkIG9wZXJhbmRzLiAgVGhlIHN3aXRjaCBiZXR3ZWVuIGRvbWFpbnMgaXMgJworICAgICAgICAgICd0cmFuc3BhcmVudFxuJworICAgICAgICAgICcgICAgICB0byB0aGUgcHJvZ3JhbW1lci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nICcKKyAgICAgICAgICAncG9pbnRcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuJworICAgICAgICAgICcgICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbicKKyAgICAgICAgICAnICAgICAgcmFuZ2UgYW5kIGhhbmRsaW5nIG9mIG92ZXJmbG93LiBQeXRob24gZG9lcyBub3Qgc3VwcG9ydCAnCisgICAgICAgICAgJ3NpbmdsZS1cbicKKyAgICAgICAgICAnICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbicKKyAgICAgICAgICAnICAgICAgZHdhcmZlZCBieSB0aGUgb3ZlcmhlYWQgb2YgdXNpbmcgb2JqZWN0cyBpbiBQeXRob24sIHNvIHRoZXJlICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mICcKKyAgICAgICAgICAnZmxvYXRpbmdcbicKKyAgICAgICAgICAnICAgICAgcG9pbnQgbnVtYmVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICJudW1iZXJzLkNvbXBsZXgiXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBjb21wbGV4IG51bWJlcnMgYXMgYSBwYWlyIG9mIG1hY2hpbmUtbGV2ZWxcbicKKyAgICAgICAgICAnICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyAnCisgICAgICAgICAgJ2FwcGx5XG4nCisgICAgICAgICAgJyAgICAgIGFzIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzLiBUaGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzICcKKyAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICcgICAgICBjb21wbGV4IG51bWJlciAieiIgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSByZWFkLW9ubHlcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyAiei5yZWFsIiBhbmQgInouaW1hZyIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdTZXF1ZW5jZXNcbicKKyAgICAgICAgICAnICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBvcmRlcmVkIHNldHMgaW5kZXhlZCBieSBub24tbmVnYXRpdmVcbicKKyAgICAgICAgICAnICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mICcKKyAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAnICAgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGUgaW5kZXggJworICAgICAgICAgICdzZXRcbicKKyAgICAgICAgICAnICAgY29udGFpbnMgdGhlIG51bWJlcnMgMCwgMSwgLi4uLCAqbiotMS4gIEl0ZW0gKmkqIG9mIHNlcXVlbmNlICphKiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgc2xpY2luZzogImFbaTpqXSIgc2VsZWN0cyBhbGwgaXRlbXMgd2l0aFxuJworICAgICAgICAgICcgICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4nCisgICAgICAgICAgJyAgIGV4cHJlc3Npb24sIGEgc2xpY2UgaXMgYSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlLiAgVGhpcyAnCisgICAgICAgICAgJ2ltcGxpZXNcbicKKyAgICAgICAgICAnICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNvbWUgc2VxdWVuY2VzIGFsc28gc3VwcG9ydCAiZXh0ZW5kZWQgc2xpY2luZyIgd2l0aCBhIHRoaXJkICcKKyAgICAgICAgICAnInN0ZXAiXG4nCisgICAgICAgICAgJyAgIHBhcmFtZXRlcjogImFbaTpqOmtdIiBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCogJworICAgICAgICAgICd3aGVyZVxuJworICAgICAgICAgICcgICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2VxdWVuY2VzIGFyZSBkaXN0aW5ndWlzaGVkIGFjY29yZGluZyB0byB0aGVpciBtdXRhYmlsaXR5OlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgSW1tdXRhYmxlIHNlcXVlbmNlc1xuJworICAgICAgICAgICcgICAgICBBbiBvYmplY3Qgb2YgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUgY2Fubm90IGNoYW5nZSBvbmNlIGl0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgY3JlYXRlZC4gIChJZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gb3RoZXIgJworICAgICAgICAgICdvYmplY3RzLFxuJworICAgICAgICAgICcgICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgJworICAgICAgICAgICdob3dldmVyLFxuJworICAgICAgICAgICcgICAgICB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgYW4gJworICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGNhbm5vdCBjaGFuZ2UuKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFN0cmluZ3NcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlIGl0ZW1zIG9mIGEgc3RyaW5nIGFyZSBjaGFyYWN0ZXJzLiAgVGhlcmUgaXMgbm8gJworICAgICAgICAgICdzZXBhcmF0ZVxuJworICAgICAgICAgICcgICAgICAgICBjaGFyYWN0ZXIgdHlwZTsgYSBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgYnkgYSBzdHJpbmcgb2YgJworICAgICAgICAgICdvbmVcbicKKyAgICAgICAgICAnICAgICAgICAgaXRlbS4gQ2hhcmFjdGVycyByZXByZXNlbnQgKGF0IGxlYXN0KSA4LWJpdCBieXRlcy4gIFRoZVxuJworICAgICAgICAgICcgICAgICAgICBidWlsdC1pbiBmdW5jdGlvbnMgImNocigpIiBhbmQgIm9yZCgpIiBjb252ZXJ0IGJldHdlZW5cbicKKyAgICAgICAgICAnICAgICAgICAgY2hhcmFjdGVycyBhbmQgbm9ubmVnYXRpdmUgaW50ZWdlcnMgcmVwcmVzZW50aW5nIHRoZSBieXRlXG4nCisgICAgICAgICAgJyAgICAgICAgIHZhbHVlcy4gIEJ5dGVzIHdpdGggdGhlIHZhbHVlcyAwLS0xMjcgdXN1YWxseSByZXByZXNlbnQgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgICAgY29ycmVzcG9uZGluZyBBU0NJSSB2YWx1ZXMsIGJ1dCB0aGUgaW50ZXJwcmV0YXRpb24gb2YgJworICAgICAgICAgICd2YWx1ZXNcbicKKyAgICAgICAgICAnICAgICAgICAgaXMgdXAgdG8gdGhlIHByb2dyYW0uICBUaGUgc3RyaW5nIGRhdGEgdHlwZSBpcyBhbHNvIHVzZWQgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICcgICAgICAgICByZXByZXNlbnQgYXJyYXlzIG9mIGJ5dGVzLCBlLmcuLCB0byBob2xkIGRhdGEgcmVhZCBmcm9tIGFcbicKKyAgICAgICAgICAnICAgICAgICAgZmlsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIChPbiBzeXN0ZW1zIHdob3NlIG5hdGl2ZSBjaGFyYWN0ZXIgc2V0IGlzIG5vdCBBU0NJSSwgJworICAgICAgICAgICdzdHJpbmdzXG4nCisgICAgICAgICAgJyAgICAgICAgIG1heSB1c2UgRUJDRElDIGluIHRoZWlyIGludGVybmFsIHJlcHJlc2VudGF0aW9uLCBwcm92aWRlZCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICAgICBmdW5jdGlvbnMgImNocigpIiBhbmQgIm9yZCgpIiBpbXBsZW1lbnQgYSBtYXBwaW5nIGJldHdlZW5cbicKKyAgICAgICAgICAnICAgICAgICAgQVNDSUkgYW5kIEVCQ0RJQywgYW5kIHN0cmluZyBjb21wYXJpc29uIHByZXNlcnZlcyB0aGUgJworICAgICAgICAgICdBU0NJSVxuJworICAgICAgICAgICcgICAgICAgICBvcmRlci4gT3IgcGVyaGFwcyBzb21lb25lIGNhbiBwcm9wb3NlIGEgYmV0dGVyIHJ1bGU/KVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVW5pY29kZVxuJworICAgICAgICAgICcgICAgICAgICBUaGUgaXRlbXMgb2YgYSBVbmljb2RlIG9iamVjdCBhcmUgVW5pY29kZSBjb2RlIHVuaXRzLiAgQVxuJworICAgICAgICAgICcgICAgICAgICBVbmljb2RlIGNvZGUgdW5pdCBpcyByZXByZXNlbnRlZCBieSBhIFVuaWNvZGUgb2JqZWN0IG9mICcKKyAgICAgICAgICAnb25lXG4nCisgICAgICAgICAgJyAgICAgICAgIGl0ZW0gYW5kIGNhbiBob2xkIGVpdGhlciBhIDE2LWJpdCBvciAzMi1iaXQgdmFsdWVcbicKKyAgICAgICAgICAnICAgICAgICAgcmVwcmVzZW50aW5nIGEgVW5pY29kZSBvcmRpbmFsICh0aGUgbWF4aW11bSB2YWx1ZSBmb3IgdGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIG9yZGluYWwgaXMgZ2l2ZW4gaW4gInN5cy5tYXh1bmljb2RlIiwgYW5kIGRlcGVuZHMgb24gaG93XG4nCisgICAgICAgICAgJyAgICAgICAgIFB5dGhvbiBpcyBjb25maWd1cmVkIGF0IGNvbXBpbGUgdGltZSkuICBTdXJyb2dhdGUgcGFpcnMgJworICAgICAgICAgICdtYXlcbicKKyAgICAgICAgICAnICAgICAgICAgYmUgcHJlc2VudCBpbiB0aGUgVW5pY29kZSBvYmplY3QsIGFuZCB3aWxsIGJlIHJlcG9ydGVkIGFzICcKKyAgICAgICAgICAndHdvXG4nCisgICAgICAgICAgJyAgICAgICAgIHNlcGFyYXRlIGl0ZW1zLiAgVGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAidW5pY2hyKCkiIGFuZFxuJworICAgICAgICAgICcgICAgICAgICAib3JkKCkiIGNvbnZlcnQgYmV0d2VlbiBjb2RlIHVuaXRzIGFuZCBub25uZWdhdGl2ZSAnCisgICAgICAgICAgJ2ludGVnZXJzXG4nCisgICAgICAgICAgJyAgICAgICAgIHJlcHJlc2VudGluZyB0aGUgVW5pY29kZSBvcmRpbmFscyBhcyBkZWZpbmVkIGluIHRoZSAnCisgICAgICAgICAgJ1VuaWNvZGVcbicKKyAgICAgICAgICAnICAgICAgICAgU3RhbmRhcmQgMy4wLiBDb252ZXJzaW9uIGZyb20gYW5kIHRvIG90aGVyIGVuY29kaW5ncyBhcmVcbicKKyAgICAgICAgICAnICAgICAgICAgcG9zc2libGUgdGhyb3VnaCB0aGUgVW5pY29kZSBtZXRob2QgImVuY29kZSgpIiBhbmQgdGhlICcKKyAgICAgICAgICAnYnVpbHQtXG4nCisgICAgICAgICAgJyAgICAgICAgIGluIGZ1bmN0aW9uICJ1bmljb2RlKCkiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVHVwbGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgICAgIHR3byBvciBtb3JlIGl0ZW1zIGFyZSBmb3JtZWQgYnkgY29tbWEtc2VwYXJhdGVkIGxpc3RzIG9mXG4nCisgICAgICAgICAgIiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSAnc2luZ2xldG9uJykgY2FuIGJlXG4iCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICAgICAgICBpdHNlbGYgZG9lcyBub3QgY3JlYXRlIGEgdHVwbGUsIHNpbmNlIHBhcmVudGhlc2VzIG11c3QgYmVcbicKKyAgICAgICAgICAnICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gJworICAgICAgICAgICdiZVxuJworICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgYW4gZW1wdHkgcGFpciBvZiBwYXJlbnRoZXNlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIE11dGFibGUgc2VxdWVuY2VzXG4nCisgICAgICAgICAgJyAgICAgIE11dGFibGUgc2VxdWVuY2VzIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuICAnCisgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICcgICAgICBzdWJzY3JpcHRpb24gYW5kIHNsaWNpbmcgbm90YXRpb25zIGNhbiBiZSB1c2VkIGFzIHRoZSB0YXJnZXQgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBhc3NpZ25tZW50IGFuZCAiZGVsIiAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIG11dGFibGUgc2VxdWVuY2UgdHlwZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBMaXN0c1xuJworICAgICAgICAgICcgICAgICAgICBUaGUgaXRlbXMgb2YgYSBsaXN0IGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuICBMaXN0cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzICcKKyAgICAgICAgICAnbmVlZGVkXG4nCisgICAgICAgICAgJyAgICAgICAgIHRvIGZvcm0gbGlzdHMgb2YgbGVuZ3RoIDAgb3IgMS4pXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBCeXRlIEFycmF5c1xuJworICAgICAgICAgICcgICAgICAgICBBIGJ5dGVhcnJheSBvYmplY3QgaXMgYSBtdXRhYmxlIGFycmF5LiBUaGV5IGFyZSBjcmVhdGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIGJ1aWx0LWluICJieXRlYXJyYXkoKSIgY29uc3RydWN0b3IuICBBc2lkZSBmcm9tIGJlaW5nXG4nCisgICAgICAgICAgJyAgICAgICAgIG11dGFibGUgKGFuZCBoZW5jZSB1bmhhc2hhYmxlKSwgYnl0ZSBhcnJheXMgb3RoZXJ3aXNlICcKKyAgICAgICAgICAncHJvdmlkZVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgc2FtZSBpbnRlcmZhY2UgYW5kIGZ1bmN0aW9uYWxpdHkgYXMgaW1tdXRhYmxlIGJ5dGVzXG4nCisgICAgICAgICAgJyAgICAgICAgIG9iamVjdHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZSAiYXJyYXkiIHByb3ZpZGVzIGFuIGFkZGl0aW9uYWwgZXhhbXBsZSAnCisgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAnICAgICAgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU2V0IHR5cGVzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCB1bm9yZGVyZWQsIGZpbml0ZSBzZXRzIG9mIHVuaXF1ZSwgaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gJworICAgICAgICAgICdIb3dldmVyLFxuJworICAgICAgICAgICcgICB0aGV5IGNhbiBiZSBpdGVyYXRlZCBvdmVyLCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSJcbicKKyAgICAgICAgICAnICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgJworICAgICAgICAgICdmYXN0XG4nCisgICAgICAgICAgJyAgIG1lbWJlcnNoaXAgdGVzdGluZywgcmVtb3ZpbmcgZHVwbGljYXRlcyBmcm9tIGEgc2VxdWVuY2UsIGFuZFxuJworICAgICAgICAgICcgICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuJworICAgICAgICAgICcgICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4nCisgICAgICAgICAgJyAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuJworICAgICAgICAgICcgICAiMS4wIiksIG9ubHkgb25lIG9mIHRoZW0gY2FuIGJlIGNvbnRhaW5lZCBpbiBhIHNldC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZXRzXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSAnCisgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgJyAgICAgICJzZXQoKSIgY29uc3RydWN0b3IgYW5kIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIGJ5ICcKKyAgICAgICAgICAnc2V2ZXJhbFxuJworICAgICAgICAgICcgICAgICBtZXRob2RzLCBzdWNoIGFzICJhZGQoKSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBGcm96ZW4gc2V0c1xuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgYW4gaW1tdXRhYmxlIHNldC4gIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGJ1aWx0LWluICJmcm96ZW5zZXQoKSIgY29uc3RydWN0b3IuICBBcyBhIGZyb3plbnNldCBpcyAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBhbmQgKmhhc2hhYmxlKiwgaXQgY2FuIGJlIHVzZWQgYWdhaW4gYXMgYW4gZWxlbWVudCBvZiAnCisgICAgICAgICAgJ2Fub3RoZXJcbicKKyAgICAgICAgICAnICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTWFwcGluZ3NcbicKKyAgICAgICAgICAnICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgJworICAgICAgICAgICdpbmRleFxuJworICAgICAgICAgICcgICBzZXRzLiBUaGUgc3Vic2NyaXB0IG5vdGF0aW9uICJhW2tdIiBzZWxlY3RzIHRoZSBpdGVtIGluZGV4ZWQgYnkgJworICAgICAgICAgICciayJcbicKKyAgICAgICAgICAnICAgZnJvbSB0aGUgbWFwcGluZyAiYSI7IHRoaXMgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMgYW5kIGFzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gJworICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICcgICAibGVuKCkiIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGVyZSBpcyBjdXJyZW50bHkgYSBzaW5nbGUgaW50cmluc2ljIG1hcHBpbmcgdHlwZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIERpY3Rpb25hcmllc1xuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IG5lYXJseVxuJworICAgICAgICAgICcgICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlICcKKyAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAnICAgICAga2V5cyBhcmUgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMgb3IgZGljdGlvbmFyaWVzIG9yIG90aGVyXG4nCisgICAgICAgICAgJyAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgaWRlbnRpdHksIHRoZSByZWFzb24gYmVpbmcgdGhhdCB0aGUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAiICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5J3MgaGFzaCB2YWx1ZSB0byByZW1haW4gY29uc3RhbnQuXG4iCisgICAgICAgICAgJyAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yICcKKyAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICcgICAgICBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kICcKKyAgICAgICAgICAnIjEuMCIpXG4nCisgICAgICAgICAgJyAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbicKKyAgICAgICAgICAnICAgICAgZGljdGlvbmFyeSBlbnRyeS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuJworICAgICAgICAgICcgICAgICBub3RhdGlvbiAoc2VlIHNlY3Rpb24gRGljdGlvbmFyeSBkaXNwbGF5cykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgImRibSIsICJnZGJtIiwgYW5kICJic2RkYiIgcHJvdmlkZVxuJworICAgICAgICAgICcgICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDYWxsYWJsZSB0eXBlc1xuJworICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHR5cGVzIHRvIHdoaWNoIHRoZSBmdW5jdGlvbiBjYWxsIG9wZXJhdGlvbiAoc2VlXG4nCisgICAgICAgICAgJyAgIHNlY3Rpb24gQ2FsbHMpIGNhbiBiZSBhcHBsaWVkOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgVXNlci1kZWZpbmVkIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgaXMgY3JlYXRlZCBieSBhIGZ1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIGRlZmluaXRpb24gKHNlZSBzZWN0aW9uIEZ1bmN0aW9uIGRlZmluaXRpb25zKS4gIEl0IHNob3VsZCBiZVxuJworICAgICAgICAgICcgICAgICBjYWxsZWQgd2l0aCBhbiBhcmd1bWVudCBsaXN0IGNvbnRhaW5pbmcgdGhlIHNhbWUgbnVtYmVyIG9mICcKKyAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAiICAgICAgYXMgdGhlIGZ1bmN0aW9uJ3MgZm9ybWFsIHBhcmFtZXRlciBsaXN0LlxuIgorICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCBhdHRyaWJ1dGVzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kb2NfXyIgImZ1bmNfZG9jIiAgICB8IFRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uICAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdHJpbmcsIG9yICJOb25lIiBpZiAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCB1bmF2YWlsYWJsZS4gICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fbmFtZV9fIiAiZnVuY19uYW1lIiAgfCBUaGUgZnVuY3Rpb25cJ3MgbmFtZSAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX21vZHVsZV9fIiAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICB8ICcKKyAgICAgICAgICAnV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLiAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2RlZmF1bHRzX18iICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICB8ICcKKyAgICAgICAgICAnV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICJmdW5jX2RlZmF1bHRzIiAgICAgICAgIHwgYXJndW1lbnQgdmFsdWVzIGZvciB0aG9zZSAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgIk5vbmUiIGlmIG5vIGFyZ3VtZW50cyBoYXZlICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYSBkZWZhdWx0IHZhbHVlLiAgICAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2NvZGVfXyIgImZ1bmNfY29kZSIgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICB8ICcKKyAgICAgICAgICAnV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGhlIGNvbXBpbGVkIGZ1bmN0aW9uIGJvZHkuICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2dsb2JhbHNfXyIgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICB8ICcKKyAgICAgICAgICAnUmVhZC1vbmx5ICAgfFxuJworICAgICAgICAgICcgICAgICB8ICJmdW5jX2dsb2JhbHMiICAgICAgICAgIHwgdGhhdCBob2xkcyB0aGUgZnVuY3Rpb25cJ3MgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGdsb2JhbCB2YXJpYWJsZXMgLS0tIHRoZSBnbG9iYWwgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoaWNoIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZC4gJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19kaWN0X18iICJmdW5jX2RpY3QiICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgfCAnCisgICAgICAgICAgJ1dyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyYml0cmFyeSBmdW5jdGlvbiBhdHRyaWJ1dGVzLiAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19jbG9zdXJlX18iICAgICAgICAgICB8ICJOb25lIiBvciBhIHR1cGxlIG9mIGNlbGxzIHRoYXQgfCAnCisgICAgICAgICAgJ1JlYWQtb25seSAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAiZnVuY19jbG9zdXJlIiAgICAgICAgICB8IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAiICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGZ1bmN0aW9uJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgIgorICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBhc3NpZ25lZCB2YWx1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjQ6ICJmdW5jX25hbWUiIGlzIG5vdyB3cml0YWJsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjY6IFRoZSBkb3VibGUtdW5kZXJzY29yZSBhdHRyaWJ1dGVzXG4nCisgICAgICAgICAgJyAgICAgICJfX2Nsb3N1cmVfXyIsICJfX2NvZGVfXyIsICJfX2RlZmF1bHRzX18iLCBhbmQgIl9fZ2xvYmFsc19fIlxuJworICAgICAgICAgICcgICAgICB3ZXJlIGludHJvZHVjZWQgYXMgYWxpYXNlcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgImZ1bmNfKiJcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyBmb3IgZm9yd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIFB5dGhvbiAzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnVuY3Rpb24gb2JqZWN0cyBhbHNvIHN1cHBvcnQgZ2V0dGluZyBhbmQgc2V0dGluZyBhcmJpdHJhcnlcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggJworICAgICAgICAgICdtZXRhZGF0YVxuJworICAgICAgICAgICcgICAgICB0byBmdW5jdGlvbnMuICBSZWd1bGFyIGF0dHJpYnV0ZSBkb3Qtbm90YXRpb24gaXMgdXNlZCB0byBnZXQgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgc2V0IHN1Y2ggYXR0cmlidXRlcy4gKk5vdGUgdGhhdCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAnCisgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAnICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiAnCisgICAgICAgICAgJ0Z1bmN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMgb24gYnVpbHQtaW4gZnVuY3Rpb25zIG1heSBiZSBzdXBwb3J0ZWQgaW4gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGZ1dHVyZS4qXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICAgICBBZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IGEgZnVuY3Rpb24ncyBkZWZpbml0aW9uIGNhbiBiZVxuIgorICAgICAgICAgICcgICAgICByZXRyaWV2ZWQgZnJvbSBpdHMgY29kZSBvYmplY3Q7IHNlZSB0aGUgZGVzY3JpcHRpb24gb2YgJworICAgICAgICAgICdpbnRlcm5hbFxuJworICAgICAgICAgICcgICAgICB0eXBlcyBiZWxvdy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFVzZXItZGVmaW5lZCBtZXRob2RzXG4nCisgICAgICAgICAgJyAgICAgIEEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgIChvciAiTm9uZSIpIGFuZCBhbnkgY2FsbGFibGUgb2JqZWN0IChub3JtYWxseSBhIHVzZXItZGVmaW5lZFxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbikuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiaW1fc2VsZiIgaXMgdGhlIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0LCAiaW1fZnVuYyIgaXMgdGhlIGZ1bmN0aW9uIG9iamVjdDsgImltX2NsYXNzIiBpcyB0aGVcbicKKyAgICAgICAgICAnICAgICAgY2xhc3Mgb2YgImltX3NlbGYiIGZvciBib3VuZCBtZXRob2RzIG9yIHRoZSBjbGFzcyB0aGF0IGFza2VkICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBtZXRob2QgZm9yIHVuYm91bmQgbWV0aG9kczsgIl9fZG9jX18iIGlzIHRoZSBtZXRob2RcJ3NcbicKKyAgICAgICAgICAnICAgICAgZG9jdW1lbnRhdGlvbiAoc2FtZSBhcyAiaW1fZnVuYy5fX2RvY19fIik7ICJfX25hbWVfXyIgaXMgdGhlXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBuYW1lIChzYW1lIGFzICJpbV9mdW5jLl9fbmFtZV9fIik7ICJfX21vZHVsZV9fIiBpcyAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIG1ldGhvZCB3YXMgZGVmaW5lZCBpbiwgb3IgIk5vbmUiIGlmXG4nCisgICAgICAgICAgJyAgICAgIHVuYXZhaWxhYmxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMjogImltX3NlbGYiIHVzZWQgdG8gcmVmZXIgdG8gdGhlIGNsYXNzXG4nCisgICAgICAgICAgJyAgICAgIHRoYXQgZGVmaW5lZCB0aGUgbWV0aG9kLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNjogRm9yIFB5dGhvbiAzIGZvcndhcmQtY29tcGF0aWJpbGl0eSxcbicKKyAgICAgICAgICAnICAgICAgImltX2Z1bmMiIGlzIGFsc28gYXZhaWxhYmxlIGFzICJfX2Z1bmNfXyIsIGFuZCAiaW1fc2VsZiIgYXNcbicKKyAgICAgICAgICAnICAgICAgIl9fc2VsZl9fIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE1ldGhvZHMgYWxzbyBzdXBwb3J0IGFjY2Vzc2luZyAoYnV0IG5vdCBzZXR0aW5nKSB0aGUgJworICAgICAgICAgICdhcmJpdHJhcnlcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBVc2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdHMgbWF5IGJlIGNyZWF0ZWQgd2hlbiBnZXR0aW5nIGFuXG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZSBvZiBhIGNsYXNzIChwZXJoYXBzIHZpYSBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzKSwgJworICAgICAgICAgICdpZlxuJworICAgICAgICAgICcgICAgICB0aGF0IGF0dHJpYnV0ZSBpcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QsIGFuIHVuYm91bmRcbicKKyAgICAgICAgICAnICAgICAgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QsIG9yIGEgY2xhc3MgbWV0aG9kIG9iamVjdC4gV2hlbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGUgaXMgYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCwgYSBuZXcgbWV0aG9kICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlzIG9ubHkgY3JlYXRlZCBpZiB0aGUgY2xhc3MgZnJvbSB3aGljaCBpdCBpcyBiZWluZyByZXRyaWV2ZWQgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICB0aGUgc2FtZSBhcywgb3IgYSBkZXJpdmVkIGNsYXNzIG9mLCB0aGUgY2xhc3Mgc3RvcmVkIGluIHRoZVxuJworICAgICAgICAgICcgICAgICBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0OyBvdGhlcndpc2UsIHRoZSBvcmlnaW5hbCBtZXRob2Qgb2JqZWN0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgdXNlZCBhcyBpdCBpcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYVxuJworICAgICAgICAgICcgICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcywgaXRzICJpbV9zZWxmIlxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGUgaXMgIk5vbmUiIGFuZCB0aGUgbWV0aG9kIG9iamVjdCBpcyBzYWlkIHRvIGJlICcKKyAgICAgICAgICAndW5ib3VuZC5cbicKKyAgICAgICAgICAnICAgICAgV2hlbiBvbmUgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyBpbnN0YW5jZXMsIGl0cyAiaW1fc2VsZiIgJworICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIGluc3RhbmNlLCBhbmQgdGhlIG1ldGhvZCBvYmplY3QgaXMgc2FpZCB0byBiZSBib3VuZC4gJworICAgICAgICAgICdJblxuJworICAgICAgICAgICcgICAgICBlaXRoZXIgY2FzZSwgdGhlIG5ldyBtZXRob2RcJ3MgImltX2NsYXNzIiBhdHRyaWJ1dGUgaXMgdGhlICcKKyAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAnICAgICAgZnJvbSB3aGljaCB0aGUgcmV0cmlldmFsIHRha2VzIHBsYWNlLCBhbmQgaXRzICJpbV9mdW5jIlxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGUgaXMgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbicKKyAgICAgICAgICAnICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlICJpbV9mdW5jIlxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGUgb2YgdGhlIG5ldyBpbnN0YW5jZSBpcyBub3QgdGhlIG9yaWdpbmFsIG1ldGhvZCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBidXQgaXRzICJpbV9mdW5jIiBhdHRyaWJ1dGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nIGFcbicKKyAgICAgICAgICAnICAgICAgY2xhc3MgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyAiaW1fc2VsZiJcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgImltX2Z1bmMiIGF0dHJpYnV0ZSAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmdW5jdGlvbiBvYmplY3QgdW5kZXJseWluZyB0aGUgY2xhc3MgbWV0aG9kLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiB1bmJvdW5kIHVzZXItZGVmaW5lZCBtZXRob2Qgb2JqZWN0IGlzIGNhbGxlZCwgdGhlXG4nCisgICAgICAgICAgJyAgICAgIHVuZGVybHlpbmcgZnVuY3Rpb24gKCJpbV9mdW5jIikgaXMgY2FsbGVkLCB3aXRoIHRoZSAnCisgICAgICAgICAgJ3Jlc3RyaWN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgdGhlIHByb3BlciAnCisgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgJyAgICAgICgiaW1fY2xhc3MiKSBvciBvZiBhIGRlcml2ZWQgY2xhc3MgdGhlcmVvZi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYSBib3VuZCB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjYWxsZWQsIHRoZVxuJworICAgICAgICAgICcgICAgICB1bmRlcmx5aW5nIGZ1bmN0aW9uICgiaW1fZnVuYyIpIGlzIGNhbGxlZCwgaW5zZXJ0aW5nIHRoZSAnCisgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgJyAgICAgIGluc3RhbmNlICgiaW1fc2VsZiIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yXG4nCisgICAgICAgICAgJyAgICAgIGluc3RhbmNlLCB3aGVuICJDIiBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uICJmKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mICJDIiwgY2FsbGluZyAnCisgICAgICAgICAgJyJ4LmYoMSkiXG4nCisgICAgICAgICAgJyAgICAgIGlzIGVxdWl2YWxlbnQgdG8gY2FsbGluZyAiQy5mKHgsIDEpIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyAnCisgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICcgICAgICBvYmplY3QsIHRoZSAiY2xhc3MgaW5zdGFuY2UiIHN0b3JlZCBpbiAiaW1fc2VsZiIgd2lsbCAnCisgICAgICAgICAgJ2FjdHVhbGx5XG4nCisgICAgICAgICAgJyAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgJworICAgICAgICAgICciQy5mKDEpIlxuJworICAgICAgICAgICcgICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgImYoQywxKSIgd2hlcmUgImYiIGlzIHRoZSAnCisgICAgICAgICAgJ3VuZGVybHlpbmdcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvICh1bmJvdW5kICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgYm91bmQpIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpc1xuJworICAgICAgICAgICcgICAgICByZXRyaWV2ZWQgZnJvbSB0aGUgY2xhc3Mgb3IgaW5zdGFuY2UuIEluIHNvbWUgY2FzZXMsIGEgJworICAgICAgICAgICdmcnVpdGZ1bFxuJworICAgICAgICAgICcgICAgICBvcHRpbWl6YXRpb24gaXMgdG8gYXNzaWduIHRoZSBhdHRyaWJ1dGUgdG8gYSBsb2NhbCB2YXJpYWJsZSAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICBjYWxsIHRoYXQgbG9jYWwgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyAnCisgICAgICAgICAgJ3RyYW5zZm9ybWF0aW9uXG4nCisgICAgICAgICAgJyAgICAgIG9ubHkgaGFwcGVucyBmb3IgdXNlci1kZWZpbmVkIGZ1bmN0aW9uczsgb3RoZXIgY2FsbGFibGUgJworICAgICAgICAgICdvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIChhbmQgYWxsIG5vbi1jYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXRcbicKKyAgICAgICAgICAnICAgICAgdHJhbnNmb3JtYXRpb24uICBJdCBpcyBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgJworICAgICAgICAgICd1c2VyLWRlZmluZWRcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb25zIHdoaWNoIGFyZSBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdFxuJworICAgICAgICAgICcgICAgICBjb252ZXJ0ZWQgdG8gYm91bmQgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGUgb2YgdGhlIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGZ1bmN0aW9uIG9yIG1ldGhvZCB3aGljaCB1c2VzIHRoZSAieWllbGQiIHN0YXRlbWVudCAoc2VlXG4nCisgICAgICAgICAgJyAgICAgIHNlY3Rpb24gVGhlIHlpZWxkIHN0YXRlbWVudCkgaXMgY2FsbGVkIGEgKmdlbmVyYXRvciAnCisgICAgICAgICAgJ2Z1bmN0aW9uKi5cbicKKyAgICAgICAgICAnICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3IgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZXhlY3V0ZSB0aGUgYm9keSBvZiB0aGUgZnVuY3Rpb246ICAnCisgICAgICAgICAgJ2NhbGxpbmdcbicKKyAgICAgICAgICAnICAgICAgdGhlIGl0ZXJhdG9yXCdzICJuZXh0KCkiIG1ldGhvZCB3aWxsIGNhdXNlIHRoZSBmdW5jdGlvbiB0b1xuJworICAgICAgICAgICcgICAgICBleGVjdXRlIHVudGlsIGl0IHByb3ZpZGVzIGEgdmFsdWUgdXNpbmcgdGhlICJ5aWVsZCIgJworICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgInJldHVybiIgc3RhdGVtZW50IG9yIGZhbGxzIG9mZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBlbmQsIGEgIlN0b3BJdGVyYXRpb24iIGV4Y2VwdGlvbiBpcyByYWlzZWQgYW5kIHRoZSBpdGVyYXRvciAnCisgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAnICAgICAgaGF2ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHNldCBvZiB2YWx1ZXMgdG8gYmUgcmV0dXJuZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBCdWlsdC1pbiBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJyAgICAgIEV4YW1wbGVzIG9mIGJ1aWx0LWluIGZ1bmN0aW9ucyBhcmUgImxlbigpIiBhbmQgIm1hdGguc2luKCkiXG4nCisgICAgICAgICAgJyAgICAgICgibWF0aCIgaXMgYSBzdGFuZGFyZCBidWlsdC1pbiBtb2R1bGUpLiBUaGUgbnVtYmVyIGFuZCB0eXBlICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGFyZ3VtZW50cyBhcmUgZGV0ZXJtaW5lZCBieSB0aGUgQyBmdW5jdGlvbi4gU3BlY2lhbCAnCisgICAgICAgICAgJ3JlYWQtXG4nCisgICAgICAgICAgJyAgICAgIG9ubHkgYXR0cmlidXRlczogIl9fZG9jX18iIGlzIHRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uXG4nCisgICAgICAgICAgJyAgICAgIHN0cmluZywgb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlOyAiX19uYW1lX18iIGlzIHRoZSAnCisgICAgICAgICAgImZ1bmN0aW9uJ3NcbiIKKyAgICAgICAgICAnICAgICAgbmFtZTsgIl9fc2VsZl9fIiBpcyBzZXQgdG8gIk5vbmUiIChidXQgc2VlIHRoZSBuZXh0IGl0ZW0pO1xuJworICAgICAgICAgICcgICAgICAiX19tb2R1bGVfXyIgaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgZnVuY3Rpb24gd2FzICcKKyAgICAgICAgICAnZGVmaW5lZFxuJworICAgICAgICAgICcgICAgICBpbiBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBCdWlsdC1pbiBtZXRob2RzXG4nCisgICAgICAgICAgJyAgICAgIFRoaXMgaXMgcmVhbGx5IGEgZGlmZmVyZW50IGRpc2d1aXNlIG9mIGEgYnVpbHQtaW4gZnVuY3Rpb24sICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICAgICB0aW1lIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBhc3NlZCB0byB0aGUgQyBmdW5jdGlvbiBhcyBhblxuJworICAgICAgICAgICcgICAgICBpbXBsaWNpdCBleHRyYSBhcmd1bWVudC4gIEFuIGV4YW1wbGUgb2YgYSBidWlsdC1pbiBtZXRob2QgaXNcbicKKyAgICAgICAgICAnICAgICAgImFsaXN0LmFwcGVuZCgpIiwgYXNzdW1pbmcgKmFsaXN0KiBpcyBhIGxpc3Qgb2JqZWN0LiBJbiB0aGlzXG4nCisgICAgICAgICAgJyAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgIl9fc2VsZl9fIiBpcyBzZXQgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGRlbm90ZWQgYnkgKmFsaXN0Ki5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzIFR5cGVzXG4nCisgICAgICAgICAgJyAgICAgIENsYXNzIHR5cGVzLCBvciAibmV3LXN0eWxlIGNsYXNzZXMsIiBhcmUgY2FsbGFibGUuICBUaGVzZVxuJworICAgICAgICAgICcgICAgICBvYmplY3RzIG5vcm1hbGx5IGFjdCBhcyBmYWN0b3JpZXMgZm9yIG5ldyBpbnN0YW5jZXMgb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlIGZvciBjbGFzcyB0eXBlcyB0aGF0XG4nCisgICAgICAgICAgJyAgICAgIG92ZXJyaWRlICJfX25ld19fKCkiLiAgVGhlIGFyZ3VtZW50cyBvZiB0aGUgY2FsbCBhcmUgcGFzc2VkICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAnICAgICAgIl9fbmV3X18oKSIgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0byAiX19pbml0X18oKSIgdG9cbicKKyAgICAgICAgICAnICAgICAgaW5pdGlhbGl6ZSB0aGUgbmV3IGluc3RhbmNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3NpYyBDbGFzc2VzXG4nCisgICAgICAgICAgJyAgICAgIENsYXNzIG9iamVjdHMgYXJlIGRlc2NyaWJlZCBiZWxvdy4gIFdoZW4gYSBjbGFzcyBvYmplY3QgaXNcbicKKyAgICAgICAgICAnICAgICAgY2FsbGVkLCBhIG5ldyBjbGFzcyBpbnN0YW5jZSAoYWxzbyBkZXNjcmliZWQgYmVsb3cpIGlzICcKKyAgICAgICAgICAnY3JlYXRlZFxuJworICAgICAgICAgICIgICAgICBhbmQgcmV0dXJuZWQuICBUaGlzIGltcGxpZXMgYSBjYWxsIHRvIHRoZSBjbGFzcydzICIKKyAgICAgICAgICAnIl9faW5pdF9fKCkiXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZCBpZiBpdCBoYXMgb25lLiAgQW55IGFyZ3VtZW50cyBhcmUgcGFzc2VkIG9uIHRvIHRoZVxuJworICAgICAgICAgICcgICAgICAiX19pbml0X18oKSIgbWV0aG9kLiAgSWYgdGhlcmUgaXMgbm8gIl9faW5pdF9fKCkiIG1ldGhvZCwgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgY2xhc3MgbXVzdCBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBpbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgICAgQ2xhc3MgaW5zdGFuY2VzIGFyZSBkZXNjcmliZWQgYmVsb3cuICBDbGFzcyBpbnN0YW5jZXMgYXJlXG4nCisgICAgICAgICAgJyAgICAgIGNhbGxhYmxlIG9ubHkgd2hlbiB0aGUgY2xhc3MgaGFzIGEgIl9fY2FsbF9fKCkiIG1ldGhvZDtcbicKKyAgICAgICAgICAnICAgICAgIngoYXJndW1lbnRzKSIgaXMgYSBzaG9ydGhhbmQgZm9yICJ4Ll9fY2FsbF9fKGFyZ3VtZW50cykiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICcgICBNb2R1bGVzIGFyZSBpbXBvcnRlZCBieSB0aGUgImltcG9ydCIgc3RhdGVtZW50IChzZWUgc2VjdGlvbiBUaGVcbicKKyAgICAgICAgICAnICAgaW1wb3J0IHN0YXRlbWVudCkuIEEgbW9kdWxlIG9iamVjdCBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgJworICAgICAgICAgICdieSBhXG4nCisgICAgICAgICAgJyAgIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzIHRoZSBkaWN0aW9uYXJ5IHJlZmVyZW5jZWQgYnkgdGhlXG4nCisgICAgICAgICAgJyAgIGZ1bmNfZ2xvYmFscyBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuXG4nCisgICAgICAgICAgJyAgIEF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkIHRvIGxvb2t1cHMgaW4gdGhpcyAnCisgICAgICAgICAgJ2RpY3Rpb25hcnksXG4nCisgICAgICAgICAgJyAgIGUuZy4sICJtLngiIGlzIGVxdWl2YWxlbnQgdG8gIm0uX19kaWN0X19bIngiXSIuIEEgbW9kdWxlIG9iamVjdFxuJworICAgICAgICAgICcgICBkb2VzIG5vdCBjb250YWluIHRoZSBjb2RlIG9iamVjdCB1c2VkIHRvIGluaXRpYWxpemUgdGhlIG1vZHVsZVxuJworICAgICAgICAgICIgICAoc2luY2UgaXQgaXNuJ3QgbmVlZGVkIG9uY2UgdGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUpLlxuIgorICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksXG4iCisgICAgICAgICAgJyAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogIl9fZGljdF9fIiBpcyB0aGUgbW9kdWxlXCdzICcKKyAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgJyAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEJlY2F1c2Ugb2YgdGhlIHdheSBDUHl0aG9uXG4nCisgICAgICAgICAgJyAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSAnCisgICAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgICAnICAgd2hlbiB0aGUgbW9kdWxlIGZhbGxzIG91dCBvZiBzY29wZSBldmVuIGlmIHRoZSBkaWN0aW9uYXJ5IHN0aWxsICcKKyAgICAgICAgICAnaGFzXG4nCisgICAgICAgICAgJyAgIGxpdmUgcmVmZXJlbmNlcy4gIFRvIGF2b2lkIHRoaXMsIGNvcHkgdGhlIGRpY3Rpb25hcnkgb3Iga2VlcCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgUHJlZGVmaW5lZCAod3JpdGFibGUpIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIG1vZHVsZVwncyAnCisgICAgICAgICAgJ25hbWU7XG4nCisgICAgICAgICAgJyAgICJfX2RvY19fIiBpcyB0aGUgbW9kdWxlXCdzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciAiTm9uZSIgaWZcbicKKyAgICAgICAgICAnICAgdW5hdmFpbGFibGU7ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSAiX19maWxlX18iXG4nCisgICAgICAgICAgJyAgIGF0dHJpYnV0ZSBpcyBub3QgcHJlc2VudCBmb3IgQyBtb2R1bGVzIHRoYXQgYXJlIHN0YXRpY2FsbHkgJworICAgICAgICAgICdsaW5rZWRcbicKKyAgICAgICAgICAnICAgaW50byB0aGUgaW50ZXJwcmV0ZXI7IGZvciBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgJworICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgJyAgIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgJworICAgICAgICAgICdmaWxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ2xhc3Nlc1xuJworICAgICAgICAgICcgICBCb3RoIGNsYXNzIHR5cGVzIChuZXctc3R5bGUgY2xhc3NlcykgYW5kIGNsYXNzIG9iamVjdHMgKG9sZC1cbicKKyAgICAgICAgICAnICAgc3R5bGUvY2xhc3NpYyBjbGFzc2VzKSBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgJworICAgICAgICAgICdkZWZpbml0aW9uc1xuJworICAgICAgICAgICcgICAoc2VlIHNlY3Rpb24gQ2xhc3MgZGVmaW5pdGlvbnMpLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2VcbicKKyAgICAgICAgICAnICAgaW1wbGVtZW50ZWQgYnkgYSBkaWN0aW9uYXJ5IG9iamVjdC4gQ2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZXMgJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAnICAgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIkMueCIgaXMgJworICAgICAgICAgICd0cmFuc2xhdGVkXG4nCisgICAgICAgICAgJyAgIHRvICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCBmb3IgbmV3LXN0eWxlIGNsYXNzZXMgaW4gJworICAgICAgICAgICdwYXJ0aWN1bGFyXG4nCisgICAgICAgICAgJyAgIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaCBhbGxvdyBmb3Igb3RoZXIgbWVhbnMgb2YgJworICAgICAgICAgICdsb2NhdGluZ1xuJworICAgICAgICAgICcgICBhdHRyaWJ1dGVzKS4gV2hlbiB0aGUgYXR0cmlidXRlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGVcbicKKyAgICAgICAgICAnICAgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2UgY2xhc3Nlcy4gIEZvciBvbGQtc3R5bGVcbicKKyAgICAgICAgICAnICAgY2xhc3NlcywgdGhlIHNlYXJjaCBpcyBkZXB0aC1maXJzdCwgbGVmdC10by1yaWdodCBpbiB0aGUgb3JkZXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICBvY2N1cnJlbmNlIGluIHRoZSBiYXNlIGNsYXNzIGxpc3QuIE5ldy1zdHlsZSBjbGFzc2VzIHVzZSB0aGUgJworICAgICAgICAgICdtb3JlXG4nCisgICAgICAgICAgJyAgIGNvbXBsZXggQzMgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgd2hpY2ggYmVoYXZlcyBjb3JyZWN0bHkgZXZlbiAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgIiAgIHRoZSBwcmVzZW5jZSBvZiAnZGlhbW9uZCcgaW5oZXJpdGFuY2Ugc3RydWN0dXJlcyB3aGVyZSB0aGVyZSAiCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICBtdWx0aXBsZSBpbmhlcml0YW5jZSBwYXRocyBsZWFkaW5nIGJhY2sgdG8gYSBjb21tb24gYW5jZXN0b3IuXG4nCisgICAgICAgICAgJyAgIEFkZGl0aW9uYWwgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgbmV3LXN0eWxlIGNsYXNzZXMgY2FuICcKKyAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAnICAgZm91bmQgaW4gdGhlIGRvY3VtZW50YXRpb24gYWNjb21wYW55aW5nIHRoZSAyLjMgcmVsZWFzZSBhdFxuJworICAgICAgICAgICcgICBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgV2hlbiBhIGNsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2UgKGZvciBjbGFzcyAiQyIsIHNheSkgd291bGQgJworICAgICAgICAgICd5aWVsZCBhXG4nCisgICAgICAgICAgJyAgIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3Qgb3IgYW4gdW5ib3VuZCB1c2VyLWRlZmluZWQgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIG9iamVjdCB3aG9zZSBhc3NvY2lhdGVkIGNsYXNzIGlzIGVpdGhlciAiQyIgb3Igb25lIG9mIGl0cyBiYXNlXG4nCisgICAgICAgICAgJyAgIGNsYXNzZXMsIGl0IGlzIHRyYW5zZm9ybWVkIGludG8gYW4gdW5ib3VuZCB1c2VyLWRlZmluZWQgbWV0aG9kXG4nCisgICAgICAgICAgJyAgIG9iamVjdCB3aG9zZSAiaW1fY2xhc3MiIGF0dHJpYnV0ZSBpcyAiQyIuIFdoZW4gaXQgd291bGQgeWllbGQgYVxuJworICAgICAgICAgICcgICBjbGFzcyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGEgYm91bmQgJworICAgICAgICAgICd1c2VyLWRlZmluZWRcbicKKyAgICAgICAgICAnICAgbWV0aG9kIG9iamVjdCB3aG9zZSAiaW1fc2VsZiIgYXR0cmlidXRlIGlzICJDIi4gIFdoZW4gaXQgd291bGRcbicKKyAgICAgICAgICAnICAgeWllbGQgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0XG4nCisgICAgICAgICAgJyAgIHdyYXBwZWQgYnkgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiBJbXBsZW1lbnRpbmdcbicKKyAgICAgICAgICAnICAgRGVzY3JpcHRvcnMgZm9yIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gJworICAgICAgICAgICdhXG4nCisgICAgICAgICAgJyAgIGNsYXNzIG1heSBkaWZmZXIgZnJvbSB0aG9zZSBhY3R1YWxseSBjb250YWluZWQgaW4gaXRzICcKKyAgICAgICAgICAnIl9fZGljdF9fIlxuJworICAgICAgICAgICcgICAobm90ZSB0aGF0IG9ubHkgbmV3LXN0eWxlIGNsYXNzZXMgc3VwcG9ydCBkZXNjcmlwdG9ycykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICIgICBDbGFzcyBhdHRyaWJ1dGUgYXNzaWdubWVudHMgdXBkYXRlIHRoZSBjbGFzcydzIGRpY3Rpb25hcnksICIKKyAgICAgICAgICAnbmV2ZXJcbicKKyAgICAgICAgICAnICAgdGhlIGRpY3Rpb25hcnkgb2YgYSBiYXNlIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBvYmplY3QgY2FuIGJlIGNhbGxlZCAoc2VlIGFib3ZlKSB0byB5aWVsZCBhIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgKHNlZSBiZWxvdykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX25hbWVfXyIgaXMgdGhlIGNsYXNzIG5hbWU7ICJfX21vZHVsZV9fIiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7ICJfX2RpY3RfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBjbGFzc1wncyBuYW1lc3BhY2U7ICJfX2Jhc2VzX18iIGlzIGEgJworICAgICAgICAgICd0dXBsZVxuJworICAgICAgICAgICcgICAocG9zc2libHkgZW1wdHkgb3IgYSBzaW5nbGV0b24pIGNvbnRhaW5pbmcgdGhlIGJhc2UgY2xhc3NlcywgaW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0OyAiX19kb2NfXyIgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgY2xhc3NcJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmRlZmluZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzcyBpbnN0YW5jZXNcbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSAnCisgICAgICAgICAgJ2Fib3ZlKS5cbicKKyAgICAgICAgICAnICAgQSBjbGFzcyBpbnN0YW5jZSBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgYXMgYSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAnICAgaXMgdGhlIGZpcnN0IHBsYWNlIGluIHdoaWNoIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSBzZWFyY2hlZC5cbicKKyAgICAgICAgICAiICAgV2hlbiBhbiBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kIHRoZXJlLCBhbmQgdGhlIGluc3RhbmNlJ3MgY2xhc3MgIgorICAgICAgICAgICdoYXNcbicKKyAgICAgICAgICAnICAgYW4gYXR0cmlidXRlIGJ5IHRoYXQgbmFtZSwgdGhlIHNlYXJjaCBjb250aW51ZXMgd2l0aCB0aGUgY2xhc3NcbicKKyAgICAgICAgICAnICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSAnCisgICAgICAgICAgJ3VzZXItZGVmaW5lZFxuJworICAgICAgICAgICcgICBmdW5jdGlvbiBvYmplY3Qgb3IgYW4gdW5ib3VuZCB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCB3aG9zZVxuJworICAgICAgICAgICcgICBhc3NvY2lhdGVkIGNsYXNzIGlzIHRoZSBjbGFzcyAoY2FsbCBpdCAiQyIpIG9mIHRoZSBpbnN0YW5jZSBmb3JcbicKKyAgICAgICAgICAnICAgd2hpY2ggdGhlIGF0dHJpYnV0ZSByZWZlcmVuY2Ugd2FzIGluaXRpYXRlZCBvciBvbmUgb2YgaXRzIGJhc2VzLCAnCisgICAgICAgICAgJ2l0XG4nCisgICAgICAgICAgJyAgIGlzIHRyYW5zZm9ybWVkIGludG8gYSBib3VuZCB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCB3aG9zZVxuJworICAgICAgICAgICcgICAiaW1fY2xhc3MiIGF0dHJpYnV0ZSBpcyAiQyIgYW5kIHdob3NlICJpbV9zZWxmIiBhdHRyaWJ1dGUgaXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgaW5zdGFuY2UuIFN0YXRpYyBtZXRob2QgYW5kIGNsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBhbHNvXG4nCisgICAgICAgICAgJyAgIHRyYW5zZm9ybWVkLCBhcyBpZiB0aGV5IGhhZCBiZWVuIHJldHJpZXZlZCBmcm9tIGNsYXNzICJDIjsgc2VlXG4nCisgICAgICAgICAgJyAgIGFib3ZlIHVuZGVyICJDbGFzc2VzIi4gU2VlIHNlY3Rpb24gSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzIGZvclxuJworICAgICAgICAgICcgICBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHNcbicKKyAgICAgICAgICAnICAgaW5zdGFuY2VzIG1heSBkaWZmZXIgZnJvbSB0aGUgb2JqZWN0cyBhY3R1YWxseSBzdG9yZWQgaW4gdGhlXG4nCisgICAgICAgICAgJyAgIGNsYXNzXCdzICJfX2RpY3RfXyIuIElmIG5vIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCwgYW5kIHRoZVxuJworICAgICAgICAgICcgICBvYmplY3RcJ3MgY2xhc3MgaGFzIGEgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG9cbicKKyAgICAgICAgICAnICAgc2F0aXNmeSB0aGUgbG9va3VwLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgQXR0cmlidXRlIGFzc2lnbm1lbnRzIGFuZCBkZWxldGlvbnMgdXBkYXRlIHRoZSBpbnN0YW5jZSdzXG4iCisgICAgICAgICAgIiAgIGRpY3Rpb25hcnksIG5ldmVyIGEgY2xhc3MncyBkaWN0aW9uYXJ5LiAgSWYgdGhlIGNsYXNzIGhhcyBhXG4iCisgICAgICAgICAgJyAgICJfX3NldGF0dHJfXygpIiBvciAiX19kZWxhdHRyX18oKSIgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZCAnCisgICAgICAgICAgJ2luc3RlYWRcbicKKyAgICAgICAgICAnICAgb2YgdXBkYXRpbmcgdGhlIGluc3RhbmNlIGRpY3Rpb25hcnkgZGlyZWN0bHkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDbGFzcyBpbnN0YW5jZXMgY2FuIHByZXRlbmQgdG8gYmUgbnVtYmVycywgc2VxdWVuY2VzLCBvciAnCisgICAgICAgICAgJ21hcHBpbmdzXG4nCisgICAgICAgICAgJyAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbicKKyAgICAgICAgICAnICAgU3BlY2lhbCBtZXRob2QgbmFtZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTcGVjaWFsIGF0dHJpYnV0ZXM6ICJfX2RpY3RfXyIgaXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5O1xuJworICAgICAgICAgICcgICAiX19jbGFzc19fIiBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdGaWxlc1xuJworICAgICAgICAgICcgICBBIGZpbGUgb2JqZWN0IHJlcHJlc2VudHMgYW4gb3BlbiBmaWxlLiAgRmlsZSBvYmplY3RzIGFyZSBjcmVhdGVkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgdGhlICJvcGVuKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLCBhbmQgYWxzbyBieSAib3MucG9wZW4oKSIsXG4nCisgICAgICAgICAgJyAgICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiIG1ldGhvZCBvZiBzb2NrZXQgb2JqZWN0cyAnCisgICAgICAgICAgJyhhbmRcbicKKyAgICAgICAgICAnICAgcGVyaGFwcyBieSBvdGhlciBmdW5jdGlvbnMgb3IgbWV0aG9kcyBwcm92aWRlZCBieSBleHRlbnNpb25cbicKKyAgICAgICAgICAnICAgbW9kdWxlcykuICBUaGUgb2JqZWN0cyAic3lzLnN0ZGluIiwgInN5cy5zdGRvdXQiIGFuZCAnCisgICAgICAgICAgJyJzeXMuc3RkZXJyIlxuJworICAgICAgICAgICcgICBhcmUgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlICcKKyAgICAgICAgICAiaW50ZXJwcmV0ZXInc1xuIgorICAgICAgICAgICcgICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zLiAgU2VlIEZpbGUgT2JqZWN0cyBmb3JcbicKKyAgICAgICAgICAnICAgY29tcGxldGUgZG9jdW1lbnRhdGlvbiBvZiBmaWxlIG9iamVjdHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJbnRlcm5hbCB0eXBlc1xuJworICAgICAgICAgICcgICBBIGZldyB0eXBlcyB1c2VkIGludGVybmFsbHkgYnkgdGhlIGludGVycHJldGVyIGFyZSBleHBvc2VkIHRvICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIHVzZXIuIFRoZWlyIGRlZmluaXRpb25zIG1heSBjaGFuZ2Ugd2l0aCBmdXR1cmUgdmVyc2lvbnMgb2YgdGhlXG4nCisgICAgICAgICAgJyAgIGludGVycHJldGVyLCBidXQgdGhleSBhcmUgbWVudGlvbmVkIGhlcmUgZm9yIGNvbXBsZXRlbmVzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENvZGUgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBDb2RlIG9iamVjdHMgcmVwcmVzZW50ICpieXRlLWNvbXBpbGVkKiBleGVjdXRhYmxlIFB5dGhvbiAnCisgICAgICAgICAgJ2NvZGUsXG4nCisgICAgICAgICAgJyAgICAgIG9yICpieXRlY29kZSouIFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gYSBjb2RlIG9iamVjdCBhbmQgYVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiBvYmplY3QgaXMgdGhhdCB0aGUgZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGFuICcKKyAgICAgICAgICAnZXhwbGljaXRcbicKKyAgICAgICAgICAiICAgICAgcmVmZXJlbmNlIHRvIHRoZSBmdW5jdGlvbidzIGdsb2JhbHMgKHRoZSBtb2R1bGUgaW4gd2hpY2ggaXQgIgorICAgICAgICAgICd3YXNcbicKKyAgICAgICAgICAnICAgICAgZGVmaW5lZCksIHdoaWxlIGEgY29kZSBvYmplY3QgY29udGFpbnMgbm8gY29udGV4dDsgYWxzbyB0aGVcbicKKyAgICAgICAgICAnICAgICAgZGVmYXVsdCBhcmd1bWVudCB2YWx1ZXMgYXJlIHN0b3JlZCBpbiB0aGUgZnVuY3Rpb24gb2JqZWN0LCAnCisgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICcgICAgICBpbiB0aGUgY29kZSBvYmplY3QgKGJlY2F1c2UgdGhleSByZXByZXNlbnQgdmFsdWVzIGNhbGN1bGF0ZWQgJworICAgICAgICAgICdhdFxuJworICAgICAgICAgICcgICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBhbmQgY29udGFpbiBubyByZWZlcmVuY2VzIChkaXJlY3RseSBvciBpbmRpcmVjdGx5KSB0byAnCisgICAgICAgICAgJ211dGFibGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJjb19uYW1lIiBnaXZlcyB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICduYW1lO1xuJworICAgICAgICAgICcgICAgICAiY29fYXJnY291bnQiIGlzIHRoZSBudW1iZXIgb2YgcG9zaXRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICcoaW5jbHVkaW5nXG4nCisgICAgICAgICAgJyAgICAgIGFyZ3VtZW50cyB3aXRoIGRlZmF1bHQgdmFsdWVzKTsgImNvX25sb2NhbHMiIGlzIHRoZSBudW1iZXIgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZyBhcmd1bWVudHMpO1xuJworICAgICAgICAgICcgICAgICAiY29fdmFybmFtZXMiIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgdGhlIGxvY2FsXG4nCisgICAgICAgICAgJyAgICAgIHZhcmlhYmxlcyAoc3RhcnRpbmcgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMpOyAiY29fY2VsbHZhcnMiICcKKyAgICAgICAgICAnaXMgYVxuJworICAgICAgICAgICcgICAgICB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyBvZiBsb2NhbCB2YXJpYWJsZXMgdGhhdCBhcmVcbicKKyAgICAgICAgICAnICAgICAgcmVmZXJlbmNlZCBieSBuZXN0ZWQgZnVuY3Rpb25zOyAiY29fZnJlZXZhcnMiIGlzIGEgdHVwbGVcbicKKyAgICAgICAgICAnICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZSB2YXJpYWJsZXM7ICJjb19jb2RlIiBpcyBhICcKKyAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgJyAgICAgIHJlcHJlc2VudGluZyB0aGUgc2VxdWVuY2Ugb2YgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb25zOyAnCisgICAgICAgICAgJyJjb19jb25zdHMiXG4nCisgICAgICAgICAgJyAgICAgIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbGl0ZXJhbHMgdXNlZCBieSB0aGUgYnl0ZWNvZGU7XG4nCisgICAgICAgICAgJyAgICAgICJjb19uYW1lcyIgaXMgYSB0dXBsZSBjb250YWluaW5nIHRoZSBuYW1lcyB1c2VkIGJ5IHRoZSAnCisgICAgICAgICAgJ2J5dGVjb2RlO1xuJworICAgICAgICAgICcgICAgICAiY29fZmlsZW5hbWUiIGlzIHRoZSBmaWxlbmFtZSBmcm9tIHdoaWNoIHRoZSBjb2RlIHdhcyAnCisgICAgICAgICAgJ2NvbXBpbGVkO1xuJworICAgICAgICAgICcgICAgICAiY29fZmlyc3RsaW5lbm8iIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4nCisgICAgICAgICAgJyAgICAgICJjb19sbm90YWIiIGlzIGEgc3RyaW5nIGVuY29kaW5nIHRoZSBtYXBwaW5nIGZyb20gYnl0ZWNvZGVcbicKKyAgICAgICAgICAnICAgICAgb2Zmc2V0cyB0byBsaW5lIG51bWJlcnMgKGZvciBkZXRhaWxzIHNlZSB0aGUgc291cmNlIGNvZGUgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgaW50ZXJwcmV0ZXIpOyAiY29fc3RhY2tzaXplIiBpcyB0aGUgcmVxdWlyZWQgc3RhY2sgc2l6ZVxuJworICAgICAgICAgICcgICAgICAoaW5jbHVkaW5nIGxvY2FsIHZhcmlhYmxlcyk7ICJjb19mbGFncyIgaXMgYW4gaW50ZWdlciAnCisgICAgICAgICAgJ2VuY29kaW5nIGFcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVyIG9mIGZsYWdzIGZvciB0aGUgaW50ZXJwcmV0ZXIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgImNvX2ZsYWdzIjogYml0ICcKKyAgICAgICAgICAnIjB4MDQiXG4nCisgICAgICAgICAgJyAgICAgIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIiphcmd1bWVudHMiIHN5bnRheCB0byBhY2NlcHQgJworICAgICAgICAgICdhblxuJworICAgICAgICAgICcgICAgICBhcmJpdHJhcnkgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzOyBiaXQgIjB4MDgiIGlzIHNldCAnCisgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKiprZXl3b3JkcyIgc3ludGF4IHRvIGFjY2VwdCAnCisgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICcgICAgICBrZXl3b3JkIGFyZ3VtZW50czsgYml0ICIweDIwIiBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIGlzIGFcbicKKyAgICAgICAgICAnICAgICAgZ2VuZXJhdG9yLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgRnV0dXJlIGZlYXR1cmUgZGVjbGFyYXRpb25zICgiZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCAnCisgICAgICAgICAgJ2RpdmlzaW9uIilcbicKKyAgICAgICAgICAnICAgICAgYWxzbyB1c2UgYml0cyBpbiAiY29fZmxhZ3MiIHRvIGluZGljYXRlIHdoZXRoZXIgYSBjb2RlICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdCAiMHgyMDAwIiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHNldCBpZiB0aGUgZnVuY3Rpb24gd2FzIGNvbXBpbGVkIHdpdGggZnV0dXJlIGRpdmlzaW9uICcKKyAgICAgICAgICAnZW5hYmxlZDtcbicKKyAgICAgICAgICAnICAgICAgYml0cyAiMHgxMCIgYW5kICIweDEwMDAiIHdlcmUgdXNlZCBpbiBlYXJsaWVyIHZlcnNpb25zIG9mXG4nCisgICAgICAgICAgJyAgICAgIFB5dGhvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE90aGVyIGJpdHMgaW4gImNvX2ZsYWdzIiBhcmUgcmVzZXJ2ZWQgZm9yIGludGVybmFsIHVzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuJworICAgICAgICAgICcgICAgICAiY29fY29uc3RzIiBpcyB0aGUgZG9jdW1lbnRhdGlvbiBzdHJpbmcgb2YgdGhlIGZ1bmN0aW9uLCBvclxuJworICAgICAgICAgICcgICAgICAiTm9uZSIgaWYgdW5kZWZpbmVkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRnJhbWUgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBGcmFtZSBvYmplY3RzIHJlcHJlc2VudCBleGVjdXRpb24gZnJhbWVzLiAgVGhleSBtYXkgb2NjdXIgaW5cbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiZl9iYWNrIiBpcyB0byB0aGUgcHJldmlvdXMgJworICAgICAgICAgICdzdGFja1xuJworICAgICAgICAgICcgICAgICBmcmFtZSAodG93YXJkcyB0aGUgY2FsbGVyKSwgb3IgIk5vbmUiIGlmIHRoaXMgaXMgdGhlIGJvdHRvbVxuJworICAgICAgICAgICcgICAgICBzdGFjayBmcmFtZTsgImZfY29kZSIgaXMgdGhlIGNvZGUgb2JqZWN0IGJlaW5nIGV4ZWN1dGVkIGluICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICAgICBmcmFtZTsgImZfbG9jYWxzIiBpcyB0aGUgZGljdGlvbmFyeSB1c2VkIHRvIGxvb2sgdXAgbG9jYWxcbicKKyAgICAgICAgICAnICAgICAgdmFyaWFibGVzOyAiZl9nbG9iYWxzIiBpcyB1c2VkIGZvciBnbG9iYWwgdmFyaWFibGVzO1xuJworICAgICAgICAgICcgICAgICAiZl9idWlsdGlucyIgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7XG4nCisgICAgICAgICAgJyAgICAgICJmX3Jlc3RyaWN0ZWQiIGlzIGEgZmxhZyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIGZ1bmN0aW9uIGlzXG4nCisgICAgICAgICAgJyAgICAgIGV4ZWN1dGluZyBpbiByZXN0cmljdGVkIGV4ZWN1dGlvbiBtb2RlOyAiZl9sYXN0aSIgZ2l2ZXMgdGhlXG4nCisgICAgICAgICAgJyAgICAgIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50byB0aGUgYnl0ZWNvZGUgJworICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAnICAgICAgb2YgdGhlIGNvZGUgb2JqZWN0KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgd3JpdGFibGUgYXR0cmlidXRlczogImZfdHJhY2UiLCBpZiBub3QgIk5vbmUiLCBpcyBhXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyAiZl9leGNfdHlwZSIsICJmX2V4Y192YWx1ZSIsXG4nCisgICAgICAgICAgJyAgICAgICJmX2V4Y190cmFjZWJhY2siIHJlcHJlc2VudCB0aGUgbGFzdCBleGNlcHRpb24gcmFpc2VkIGluIHRoZVxuJworICAgICAgICAgICcgICAgICBwYXJlbnQgZnJhbWUgcHJvdmlkZWQgYW5vdGhlciBleGNlcHRpb24gd2FzIGV2ZXIgcmFpc2VkIGluICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIGN1cnJlbnQgZnJhbWUgKGluIGFsbCBvdGhlciBjYXNlcyB0aGV5IGFyZSAiTm9uZSIpOyAnCisgICAgICAgICAgJyJmX2xpbmVubyJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIGN1cnJlbnQgbGluZSBudW1iZXIgb2YgdGhlIGZyYW1lIC0tLSB3cml0aW5nIHRvIHRoaXMgJworICAgICAgICAgICdmcm9tXG4nCisgICAgICAgICAgJyAgICAgIHdpdGhpbiBhIHRyYWNlIGZ1bmN0aW9uIGp1bXBzIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBib3R0b20tbW9zdCBmcmFtZSkuICBBIGRlYnVnZ2VyIGNhbiBpbXBsZW1lbnQgYSBKdW1wIGNvbW1hbmRcbicKKyAgICAgICAgICAnICAgICAgKGFrYSBTZXQgTmV4dCBTdGF0ZW1lbnQpIGJ5IHdyaXRpbmcgdG8gZl9saW5lbm8uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBUcmFjZWJhY2sgb2JqZWN0cyByZXByZXNlbnQgYSBzdGFjayB0cmFjZSBvZiBhbiBleGNlcHRpb24uICAnCisgICAgICAgICAgJ0FcbicKKyAgICAgICAgICAnICAgICAgdHJhY2ViYWNrIG9iamVjdCBpcyBjcmVhdGVkIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3Vycy4gIFdoZW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssICcKKyAgICAgICAgICAnYXRcbicKKyAgICAgICAgICAnICAgICAgZWFjaCB1bndvdW5kIGxldmVsIGEgdHJhY2ViYWNrIG9iamVjdCBpcyBpbnNlcnRlZCBpbiBmcm9udCAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBjdXJyZW50IHRyYWNlYmFjay4gIFdoZW4gYW4gZXhjZXB0aW9uIGhhbmRsZXIgaXMgJworICAgICAgICAgICdlbnRlcmVkLFxuJworICAgICAgICAgICcgICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJyAgICAgIFRoZSB0cnkgc3RhdGVtZW50LikgSXQgaXMgYWNjZXNzaWJsZSBhcyAic3lzLmV4Y190cmFjZWJhY2siLCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICBhbHNvIGFzIHRoZSB0aGlyZCBpdGVtIG9mIHRoZSB0dXBsZSByZXR1cm5lZCBieVxuJworICAgICAgICAgICcgICAgICAic3lzLmV4Y19pbmZvKCkiLiAgVGhlIGxhdHRlciBpcyB0aGUgcHJlZmVycmVkIGludGVyZmFjZSwgJworICAgICAgICAgICdzaW5jZVxuJworICAgICAgICAgICcgICAgICBpdCB3b3JrcyBjb3JyZWN0bHkgd2hlbiB0aGUgcHJvZ3JhbSBpcyB1c2luZyBtdWx0aXBsZSAnCisgICAgICAgICAgJ3RocmVhZHMuXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gdGhlIHByb2dyYW0gY29udGFpbnMgbm8gc3VpdGFibGUgaGFuZGxlciwgdGhlIHN0YWNrICcKKyAgICAgICAgICAndHJhY2VcbicKKyAgICAgICAgICAnICAgICAgaXMgd3JpdHRlbiAobmljZWx5IGZvcm1hdHRlZCkgdG8gdGhlIHN0YW5kYXJkIGVycm9yIHN0cmVhbTsgJworICAgICAgICAgICdpZlxuJworICAgICAgICAgICcgICAgICB0aGUgaW50ZXJwcmV0ZXIgaXMgaW50ZXJhY3RpdmUsIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgdXNlciBhcyAic3lzLmxhc3RfdHJhY2ViYWNrIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJ0Yl9uZXh0IiBpcyB0aGUgbmV4dCBsZXZlbCBpbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBzdGFjayB0cmFjZSAodG93YXJkcyB0aGUgZnJhbWUgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZCksICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgIk5vbmUiIGlmIHRoZXJlIGlzIG5vIG5leHQgbGV2ZWw7ICJ0Yl9mcmFtZSIgcG9pbnRzIHRvIHRoZVxuJworICAgICAgICAgICcgICAgICBleGVjdXRpb24gZnJhbWUgb2YgdGhlIGN1cnJlbnQgbGV2ZWw7ICJ0Yl9saW5lbm8iIGdpdmVzIHRoZSAnCisgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVyIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQ7ICJ0Yl9sYXN0aSIgaW5kaWNhdGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGUgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gJworICAgICAgICAgICdpblxuJworICAgICAgICAgICcgICAgICB0aGUgdHJhY2ViYWNrIG1heSBkaWZmZXIgZnJvbSB0aGUgbGluZSBudW1iZXIgb2YgaXRzIGZyYW1lXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uIG9jY3VycmVkIGluIGEgInRyeSIgc3RhdGVtZW50IHdpdGggJworICAgICAgICAgICdub1xuJworICAgICAgICAgICcgICAgICBtYXRjaGluZyBleGNlcHQgY2xhdXNlIG9yIHdpdGggYSBmaW5hbGx5IGNsYXVzZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNsaWNlIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgU2xpY2Ugb2JqZWN0cyBhcmUgdXNlZCB0byByZXByZXNlbnQgc2xpY2VzIHdoZW4gKmV4dGVuZGVkICcKKyAgICAgICAgICAnc2xpY2VcbicKKyAgICAgICAgICAnICAgICAgc3ludGF4KiBpcyB1c2VkLiBUaGlzIGlzIGEgc2xpY2UgdXNpbmcgdHdvIGNvbG9ucywgb3IgJworICAgICAgICAgICdtdWx0aXBsZVxuJworICAgICAgICAgICcgICAgICBzbGljZXMgb3IgZWxsaXBzZXMgc2VwYXJhdGVkIGJ5IGNvbW1hcywgZS5nLiwgImFbaTpqOnN0ZXBdIixcbicKKyAgICAgICAgICAnICAgICAgImFbaTpqLCBrOmxdIiwgb3IgImFbLi4uLCBpOmpdIi4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBidWlsdC1pbiAic2xpY2UoKSIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAic3RhcnQiIGlzIHRoZSBsb3dlciBib3VuZDsgJworICAgICAgICAgICcic3RvcCJcbicKKyAgICAgICAgICAnICAgICAgaXMgdGhlIHVwcGVyIGJvdW5kOyAic3RlcCIgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXMgIk5vbmUiICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgb21pdHRlZC4gIFRoZXNlIGF0dHJpYnV0ZXMgY2FuIGhhdmUgYW55IHR5cGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTbGljZSBvYmplY3RzIHN1cHBvcnQgb25lIG1ldGhvZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgVGhpcyBtZXRob2QgdGFrZXMgYSBzaW5nbGUgaW50ZWdlciBhcmd1bWVudCAqbGVuZ3RoKiBhbmRcbicKKyAgICAgICAgICAnICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV4dGVuZGVkIHNsaWNlIHRoYXQgdGhlICcKKyAgICAgICAgICAnc2xpY2VcbicKKyAgICAgICAgICAnICAgICAgICAgb2JqZWN0IHdvdWxkIGRlc2NyaWJlIGlmIGFwcGxpZWQgdG8gYSBzZXF1ZW5jZSBvZiAnCisgICAgICAgICAgJypsZW5ndGgqXG4nCisgICAgICAgICAgJyAgICAgICAgIGl0ZW1zLiAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyAnCisgICAgICAgICAgJ3Jlc3BlY3RpdmVseVxuJworICAgICAgICAgICcgICAgICAgICB0aGVzZSBhcmUgdGhlICpzdGFydCogYW5kICpzdG9wKiBpbmRpY2VzIGFuZCB0aGUgKnN0ZXAqICcKKyAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAnICAgICAgICAgc3RyaWRlIGxlbmd0aCBvZiB0aGUgc2xpY2UuIE1pc3Npbmcgb3Igb3V0LW9mLWJvdW5kcyAnCisgICAgICAgICAgJ2luZGljZXNcbicKKyAgICAgICAgICAnICAgICAgICAgYXJlIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgTmV3IGluIHZlcnNpb24gMi4zLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbicKKyAgICAgICAgICAnICAgICAgdHJhbnNmb3JtYXRpb24gb2YgZnVuY3Rpb24gb2JqZWN0cyB0byBtZXRob2Qgb2JqZWN0cyAnCisgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICcgICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuJworICAgICAgICAgICcgICAgICBvYmplY3QsIHVzdWFsbHkgYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdC4gV2hlbiBhIHN0YXRpY1xuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGFjdHVhbGx5IHJldHVybmVkIGlzIHRoZSB3cmFwcGVkIG9iamVjdCwgd2hpY2ggaXMgbm90XG4nCisgICAgICAgICAgJyAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICBub3QgdGhlbXNlbHZlcyBjYWxsYWJsZSwgYWx0aG91Z2ggdGhlIG9iamVjdHMgdGhleSB3cmFwICcKKyAgICAgICAgICAndXN1YWxseVxuJworICAgICAgICAgICcgICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbicKKyAgICAgICAgICAnICAgICAgInN0YXRpY21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhICcKKyAgICAgICAgICAnd3JhcHBlclxuJworICAgICAgICAgICcgICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0ICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuJworICAgICAgICAgICcgICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgJworICAgICAgICAgICdjcmVhdGVkXG4nCisgICAgICAgICAgJyAgICAgIGJ5IHRoZSBidWlsdC1pbiAiY2xhc3NtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nLAorICd0eXBlc2Z1bmN0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRnVuY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnRnVuY3Rpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFRoZSAnCisgICAgICAgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uIG9uIGEgZnVuY3Rpb24gb2JqZWN0IGlzIHRvIGNhbGwgaXQ6ICcKKyAgICAgICAgICAgICAgICAgICAnImZ1bmMoYXJndW1lbnQtbGlzdCkiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uc1xuJworICAgICAgICAgICAgICAgICAgICdhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gIEJvdGggc3VwcG9ydCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiAodG8gY2FsbFxuJworICAgICAgICAgICAgICAgICAgICd0aGUgZnVuY3Rpb24pLCBidXQgdGhlIGltcGxlbWVudGF0aW9uIGlzIGRpZmZlcmVudCwgaGVuY2UgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1NlZSBGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCisgJ3R5cGVzbWFwcGluZyc6ICdcbicKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmcgVHlwZXMgLS0tICJkaWN0IlxuJworICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgKm1hcHBpbmcqIG9iamVjdCBtYXBzICpoYXNoYWJsZSogdmFsdWVzIHRvIGFyYml0cmFyeSAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSAnCisgICAgICAgICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICAgICAgICAnbWFwcGluZyB0eXBlLCB0aGUgKmRpY3Rpb25hcnkqLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSAnCisgICAgICAgICAgICAgICAgICd0aGUgYnVpbHRcbicKKyAgICAgICAgICAgICAgICAgJ2luICJsaXN0IiwgInNldCIsIGFuZCAidHVwbGUiIGNsYXNzZXMsIGFuZCB0aGUgImNvbGxlY3Rpb25zIiAnCisgICAgICAgICAgICAgICAgICdtb2R1bGUuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICJBIGRpY3Rpb25hcnkncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzICIKKyAgICAgICAgICAgICAgICAgJ3RoYXQgYXJlXG4nCisgICAgICAgICAgICAgICAgICdub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcmllcyBvclxuJworICAgICAgICAgICAgICAgICAnb3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gJworICAgICAgICAgICAgICAgICAnYnkgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICdpZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2tleXMgb2JleVxuJworICAgICAgICAgICAgICAgICAndGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyAnCisgICAgICAgICAgICAgICAgICdjb21wYXJlIGVxdWFsXG4nCisgICAgICAgICAgICAgICAgICcoc3VjaCBhcyAiMSIgYW5kICIxLjAiKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAnaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4XG4nCisgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBkaWN0aW9uYXJ5IGVudHJ5LiAgKE5vdGUgaG93ZXZlciwgdGhhdCBzaW5jZSAnCisgICAgICAgICAgICAgICAgICdjb21wdXRlcnMgc3RvcmVcbicKKyAgICAgICAgICAgICAgICAgJ2Zsb2F0aW5nLXBvaW50IG51bWJlcnMgYXMgYXBwcm94aW1hdGlvbnMgaXQgaXMgdXN1YWxseSAnCisgICAgICAgICAgICAgICAgICd1bndpc2UgdG8gdXNlXG4nCisgICAgICAgICAgICAgICAgICd0aGVtIGFzIGRpY3Rpb25hcnkga2V5cy4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcmllcyBjYW4gYmUgY3JlYXRlZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkICcKKyAgICAgICAgICAgICAgICAgJ2xpc3Qgb2YgImtleTpcbicKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIiBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogIntcJ2phY2tcJzogNDA5OCwgJworICAgICAgICAgICAgICAgICAiJ3Nqb2VyZCc6XG4iCisgICAgICAgICAgICAgICAgICc0MTI3fSIgb3IgIns0MDk4OiBcJ2phY2tcJywgNDEyNzogXCdzam9lcmRcJ30iLCBvciBieSB0aGUgJworICAgICAgICAgICAgICAgICAnImRpY3QiXG4nCisgICAgICAgICAgICAgICAgICdjb25zdHJ1Y3Rvci5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdCgqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdChtYXBwaW5nLCAqKmt3YXJnKVxuJworICAgICAgICAgICAgICAgICAnY2xhc3MgZGljdChpdGVyYWJsZSwgKiprd2FyZylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbmV3IGRpY3Rpb25hcnkgaW5pdGlhbGl6ZWQgZnJvbSBhbiBvcHRpb25hbCAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBhbmQgYSBwb3NzaWJseSBlbXB0eSBzZXQgb2Yga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIG5vIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4sIGFuIGVtcHR5IGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAnaXMgY3JlYXRlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiBhbmQgaXQgaXMgYSBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCwgYVxuJworICAgICAgICAgICAgICAgICAnICAgZGljdGlvbmFyeSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUga2V5LXZhbHVlIHBhaXJzIGFzICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBtYXBwaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuICBPdGhlcndpc2UsIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50IG11c3QgYmUgYW4gJworICAgICAgICAgICAgICAgICAnKml0ZXJhYmxlKlxuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiAgRWFjaCBpdGVtIGluIHRoZSBpdGVyYWJsZSBtdXN0IGl0c2VsZiBiZSBhbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYWJsZSB3aXRoXG4nCisgICAgICAgICAgICAgICAgICcgICBleGFjdGx5IHR3byBvYmplY3RzLiAgVGhlIGZpcnN0IG9iamVjdCBvZiBlYWNoIGl0ZW0gJworICAgICAgICAgICAgICAgICAnYmVjb21lcyBhIGtleVxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LCBhbmQgdGhlIHNlY29uZCBvYmplY3QgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlLiAgSWYgYSBrZXkgb2NjdXJzIG1vcmUgdGhhbiBvbmNlLCB0aGUgbGFzdCB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICdmb3IgdGhhdCBrZXlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlY29tZXMgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgaW4gdGhlIG5ldyBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgZ2l2ZW4sIHRoZSBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgJworICAgICAgICAgICAgICAgICAndGhlaXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBhcmUgYWRkZWQgdG8gdGhlIGRpY3Rpb25hcnkgY3JlYXRlZCBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudC4gIElmIGEga2V5IGJlaW5nIGFkZGVkIGlzIGFscmVhZHkgcHJlc2VudCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlIGZyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXl3b3JkIGFyZ3VtZW50IHJlcGxhY2VzIHRoZSB2YWx1ZSBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdwb3NpdGlvbmFsXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVG8gaWxsdXN0cmF0ZSwgdGhlIGZvbGxvd2luZyBleGFtcGxlcyBhbGwgcmV0dXJuIGEgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSBlcXVhbFxuJworICAgICAgICAgICAgICAgICAnICAgdG8gInsib25lIjogMSwgInR3byI6IDIsICJ0aHJlZSI6IDN9IjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGEgPSBkaWN0KG9uZT0xLCB0d289MiwgdGhyZWU9MylcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBiID0geydvbmUnOiAxLCAndHdvJzogMiwgJ3RocmVlJzogM31cbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgID4+PiBjID0gZGljdCh6aXAoWydvbmUnLCAndHdvJywgJ3RocmVlJ10sIFsxLCAyLCAzXSkpXG4iCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gZCA9IGRpY3QoWygndHdvJywgMiksICgnb25lJywgMSksICgndGhyZWUnLCAzKV0pXG4iCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gZSA9IGRpY3Qoeyd0aHJlZSc6IDMsICdvbmUnOiAxLCAndHdvJzogMn0pXG4iCisgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gYSA9PSBiID09IGMgPT0gZCA9PSBlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFByb3ZpZGluZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpbiB0aGUgZmlyc3QgZXhhbXBsZSBvbmx5ICcKKyAgICAgICAgICAgICAgICAgJ3dvcmtzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAga2V5cyB0aGF0IGFyZSB2YWxpZCBQeXRob24gaWRlbnRpZmllcnMuICBPdGhlcndpc2UsIGFueSAnCisgICAgICAgICAgICAgICAgICd2YWxpZCBrZXlzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgdXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi4yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMi4zOiBTdXBwb3J0IGZvciBidWlsZGluZyBhIGRpY3Rpb25hcnkgJworICAgICAgICAgICAgICAgICAnZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGRpY3Rpb25hcmllcyBzdXBwb3J0IChhbmQgJworICAgICAgICAgICAgICAgICAndGhlcmVmb3JlLFxuJworICAgICAgICAgICAgICAgICAnICAgY3VzdG9tIG1hcHBpbmcgdHlwZXMgc2hvdWxkIHN1cHBvcnQgdG9vKTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgbGVuKGQpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICpkKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgZFtrZXldXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiB0aGUgaXRlbSBvZiAqZCogd2l0aCBrZXkgKmtleSouICBSYWlzZXMgYSAnCisgICAgICAgICAgICAgICAgICciS2V5RXJyb3IiIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqa2V5KiBpcyBub3QgaW4gdGhlIG1hcC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgSWYgYSBzdWJjbGFzcyBvZiBkaWN0IGRlZmluZXMgYSBtZXRob2QgIl9fbWlzc2luZ19fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2FuZCAqa2V5KlxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgbm90IHByZXNlbnQsIHRoZSAiZFtrZXldIiBvcGVyYXRpb24gY2FsbHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdtZXRob2Qgd2l0aFxuJworICAgICAgICAgICAgICAgICAnICAgICAgdGhlIGtleSAqa2V5KiBhcyBhcmd1bWVudC4gIFRoZSAiZFtrZXldIiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAndGhlbiByZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBvciByYWlzZXMgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgIl9fbWlzc2luZ19fKGtleSkiIGNhbGwuIE5vIG90aGVyIG9wZXJhdGlvbnMgb3IgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBpbnZva2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJfX21pc3NpbmdfXygpIi4gSWYgIl9fbWlzc2luZ19fKCkiIGlzIG5vdCBkZWZpbmVkLCAnCisgICAgICAgICAgICAgICAgICciS2V5RXJyb3IiXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyByYWlzZWQuICJfX21pc3NpbmdfXygpIiBtdXN0IGJlIGEgbWV0aG9kOyBpdCBjYW5ub3QgJworICAgICAgICAgICAgICAgICAnYmUgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGluc3RhbmNlIHZhcmlhYmxlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICA+Pj4gY2xhc3MgQ291bnRlcihkaWN0KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAuLi4gICAgICAgICByZXR1cm4gMFxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgPj4+IGMgPSBDb3VudGVyKClcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgICAgID4+PiBjWydyZWQnXVxuIgorICAgICAgICAgICAgICAgICAnICAgICAgICAgMFxuJworICAgICAgICAgICAgICAgICAiICAgICAgICAgPj4+IGNbJ3JlZCddICs9IDFcbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgICAgID4+PiBjWydyZWQnXVxuIgorICAgICAgICAgICAgICAgICAnICAgICAgICAgMVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBUaGUgZXhhbXBsZSBhYm92ZSBzaG93cyBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICAgImNvbGxlY3Rpb25zLkNvdW50ZXIiLiAgQSBkaWZmZXJlbnQgIl9fbWlzc2luZ19fIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QgaXMgdXNlZFxuJworICAgICAgICAgICAgICAgICAnICAgICAgYnkgImNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgTmV3IGluIHZlcnNpb24gMi41OiBSZWNvZ25pdGlvbiBvZiBfX21pc3NpbmdfXyBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgJ29mIGRpY3RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHN1YmNsYXNzZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRba2V5XSA9IHZhbHVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFNldCAiZFtrZXldIiB0byAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBkZWwgZFtrZXldXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSAiZFtrZXldIiBmcm9tICpkKi4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWYgJworICAgICAgICAgICAgICAgICAnKmtleSogaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpbiB0aGUgbWFwLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXkgaW4gZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gIlRydWUiIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgTmV3IGluIHZlcnNpb24gMi4yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXkgbm90IGluIGRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgRXF1aXZhbGVudCB0byAibm90IGtleSBpbiBkIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgTmV3IGluIHZlcnNpb24gMi4yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyKGQpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBrZXlzIG9mIHRoZSBkaWN0aW9uYXJ5LiAgJworICAgICAgICAgICAgICAgICAnVGhpcyBpcyBhXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBzaG9ydGN1dCBmb3IgIml0ZXJrZXlzKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGVhcigpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgY29weSgpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgJworICAgICAgICAgICAgICAgICAndmFsdWVzIHNldCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgICAgKnZhbHVlKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgImZyb21rZXlzKCkiIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIE5ldyBpbiB2ZXJzaW9uIDIuMy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgZ2V0KGtleVssIGRlZmF1bHRdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSwgZWxzZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmRlZmF1bHQqLiBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byAnCisgICAgICAgICAgICAgICAgICciTm9uZSIsIHNvXG4nCisgICAgICAgICAgICAgICAgICcgICAgICB0aGF0IHRoaXMgbWV0aG9kIG5ldmVyIHJhaXNlcyBhICJLZXlFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc19rZXkoa2V5KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBUZXN0IGZvciB0aGUgcHJlc2VuY2Ugb2YgKmtleSogaW4gdGhlIGRpY3Rpb25hcnkuICAnCisgICAgICAgICAgICAgICAgICciaGFzX2tleSgpIlxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAia2V5IGluIGQiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVtcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgbGlzdCBvZiAiKGtleSwgJworICAgICAgICAgICAgICAgICAndmFsdWUpIiBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBLZXlzIGFuZCB2YWx1ZXMgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2xpc3RlZCBpblxuJworICAgICAgICAgICAgICAgICAnICAgICAgYW4gYXJiaXRyYXJ5IG9yZGVyIHdoaWNoIGlzIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgJworICAgICAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBpbXBsZW1lbnRhdGlvbnMsIGFuZCBkZXBlbmRzIG9uIHRoZSBkaWN0aW9uYXJ5J3MgIgorICAgICAgICAgICAgICAgICAnaGlzdG9yeSBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICAgaW5zZXJ0aW9ucyBhbmQgZGVsZXRpb25zLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBJZiAiaXRlbXMoKSIsICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlcml0ZW1zKCkiLCAnCisgICAgICAgICAgICAgICAgICciaXRlcmtleXMoKSIsXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBhbmQgIml0ZXJ2YWx1ZXMoKSIgYXJlIGNhbGxlZCB3aXRoIG5vIGludGVydmVuaW5nICcKKyAgICAgICAgICAgICAgICAgJ21vZGlmaWNhdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHRvIHRoZSBkaWN0aW9uYXJ5LCB0aGUgbGlzdHMgd2lsbCBkaXJlY3RseSAnCisgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiAiKHZhbHVlLCBrZXkpIiBwYWlycyB1c2luZyAnCisgICAgICAgICAgICAgICAgICciemlwKCkiOlxuJworICAgICAgICAgICAgICAgICAnICAgICAgInBhaXJzID0gemlwKGQudmFsdWVzKCksIGQua2V5cygpKSIuICBUaGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICdyZWxhdGlvbnNoaXBcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGhvbGRzIGZvciB0aGUgIml0ZXJrZXlzKCkiIGFuZCAiaXRlcnZhbHVlcygpIiBtZXRob2RzOiAnCisgICAgICAgICAgICAgICAgICcicGFpcnMgPVxuJworICAgICAgICAgICAgICAgICAnICAgICAgemlwKGQuaXRlcnZhbHVlcygpLCBkLml0ZXJrZXlzKCkpIiBwcm92aWRlcyB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICd2YWx1ZSBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJwYWlycyIuIEFub3RoZXIgd2F5IHRvIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzICJwYWlycyAnCisgICAgICAgICAgICAgICAgICc9IFsodiwgaylcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGZvciAoaywgdikgaW4gZC5pdGVyaXRlbXMoKV0iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyaXRlbXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgZGljdGlvbmFyeVwncyAiKGtleSwgJworICAgICAgICAgICAgICAgICAndmFsdWUpIiBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFNlZSB0aGUgbm90ZSBmb3IgImRpY3QuaXRlbXMoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFVzaW5nICJpdGVyaXRlbXMoKSIgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgJworICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5IG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gJworICAgICAgICAgICAgICAgICAnaXRlcmF0ZSBvdmVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBhbGwgZW50cmllcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgTmV3IGluIHZlcnNpb24gMi4yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVya2V5cygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBkaWN0aW9uYXJ5J3Mga2V5cy4gIFNlZSAiCisgICAgICAgICAgICAgICAgICd0aGUgbm90ZSBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJkaWN0Lml0ZW1zKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBVc2luZyAiaXRlcmtleXMoKSIgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgaW4gJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5IG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gJworICAgICAgICAgICAgICAgICAnaXRlcmF0ZSBvdmVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBhbGwgZW50cmllcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgTmV3IGluIHZlcnNpb24gMi4yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVydmFsdWVzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGRpY3Rpb25hcnkncyB2YWx1ZXMuICBTZWUgIgorICAgICAgICAgICAgICAgICAndGhlIG5vdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGZvciAiZGljdC5pdGVtcygpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgVXNpbmcgIml0ZXJ2YWx1ZXMoKSIgd2hpbGUgYWRkaW5nIG9yIGRlbGV0aW5nIGVudHJpZXMgJworICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5IG1heSByYWlzZSBhICJSdW50aW1lRXJyb3IiIG9yIGZhaWwgdG8gJworICAgICAgICAgICAgICAgICAnaXRlcmF0ZSBvdmVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBhbGwgZW50cmllcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgTmV3IGluIHZlcnNpb24gMi4yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXlzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgICAgUmV0dXJuIGEgY29weSBvZiB0aGUgZGljdGlvbmFyeSdzIGxpc3Qgb2Yga2V5cy4gIFNlZSAiCisgICAgICAgICAgICAgICAgICd0aGUgbm90ZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZm9yICJkaWN0Lml0ZW1zKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBwb3Aoa2V5WywgZGVmYXVsdF0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIElmICprZXkqIGlzIGluIHRoZSBkaWN0aW9uYXJ5LCByZW1vdmUgaXQgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgICAgICdpdHMgdmFsdWUsXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBlbHNlIHJldHVybiAqZGVmYXVsdCouICBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuIGFuZCAnCisgICAgICAgICAgICAgICAgICcqa2V5KiBpc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgbm90IGluIHRoZSBkaWN0aW9uYXJ5LCBhICJLZXlFcnJvciIgaXMgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBOZXcgaW4gdmVyc2lvbiAyLjMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBvcGl0ZW0oKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZW1vdmUgYW5kIHJldHVybiBhbiBhcmJpdHJhcnkgIihrZXksIHZhbHVlKSIgcGFpciAnCisgICAgICAgICAgICAgICAgICdmcm9tIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgInBvcGl0ZW0oKSIgaXMgdXNlZnVsIHRvIGRlc3RydWN0aXZlbHkgaXRlcmF0ZSBvdmVyIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGRpY3Rpb25hcnksIGFzIG9mdGVuIHVzZWQgaW4gc2V0IGFsZ29yaXRobXMuICBJZiB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgZW1wdHksIGNhbGxpbmcgInBvcGl0ZW0oKSIgcmFpc2VzIGEgIktleUVycm9yIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgc2V0ZGVmYXVsdChrZXlbLCBkZWZhdWx0XSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgSWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIHJldHVybiBpdHMgdmFsdWUuICBJZiAnCisgICAgICAgICAgICAgICAgICdub3QsIGluc2VydFxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmtleSogd2l0aCBhIHZhbHVlIG9mICpkZWZhdWx0KiBhbmQgcmV0dXJuICpkZWZhdWx0Ki4gICcKKyAgICAgICAgICAgICAgICAgJypkZWZhdWx0KlxuJworICAgICAgICAgICAgICAgICAnICAgICAgZGVmYXVsdHMgdG8gIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICB1cGRhdGUoW290aGVyXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgVXBkYXRlIHRoZSBkaWN0aW9uYXJ5IHdpdGggdGhlIGtleS92YWx1ZSBwYWlycyBmcm9tICcKKyAgICAgICAgICAgICAgICAgJypvdGhlciosXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBvdmVyd3JpdGluZyBleGlzdGluZyBrZXlzLiAgUmV0dXJuICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgInVwZGF0ZSgpIiBhY2NlcHRzIGVpdGhlciBhbm90aGVyIGRpY3Rpb25hcnkgb2JqZWN0IG9yICcKKyAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpdGVyYWJsZSBvZiBrZXkvdmFsdWUgcGFpcnMgKGFzIHR1cGxlcyBvciBvdGhlciAnCisgICAgICAgICAgICAgICAgICdpdGVyYWJsZXMgb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGxlbmd0aCB0d28pLiAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGlzIHRoZW4gdXBkYXRlZCB3aXRoIHRob3NlIGtleS92YWx1ZSBwYWlyczogJworICAgICAgICAgICAgICAgICAnImQudXBkYXRlKHJlZD0xLFxuJworICAgICAgICAgICAgICAgICAnICAgICAgYmx1ZT0yKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjQ6IEFsbG93ZWQgdGhlIGFyZ3VtZW50IHRvIGJlIGFuICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhYmxlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBvZiBrZXkvdmFsdWUgcGFpcnMgYW5kIGFsbG93ZWQga2V5d29yZCBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgIFJldHVybiBhIGNvcHkgb2YgdGhlIGRpY3Rpb25hcnkncyBsaXN0IG9mIHZhbHVlcy4gIFNlZSAiCisgICAgICAgICAgICAgICAgICd0aGUgbm90ZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZm9yICJkaWN0Lml0ZW1zKCkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICB2aWV3aXRlbXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBpdGVtcyAoIihrZXksICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIHBhaXJzKS4gIFNlZSBiZWxvdyBmb3IgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIE5ldyBpbiB2ZXJzaW9uIDIuNy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgdmlld2tleXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGtleXMuICBTZWUgYmVsb3cgIgorICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgTmV3IGluIHZlcnNpb24gMi43LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICB2aWV3dmFsdWVzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyB2YWx1ZXMuICBTZWUgIgorICAgICAgICAgICAgICAgICAnYmVsb3cgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgTmV3IGluIHZlcnNpb24gMi43LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBEaWN0aW9uYXJpZXMgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5IGhhdmUgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3NhbWUgIihrZXksXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSkiIHBhaXJzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcnkgdmlldyBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgb2JqZWN0cyByZXR1cm5lZCBieSAiZGljdC52aWV3a2V5cygpIiwgJworICAgICAgICAgICAgICAgICAnImRpY3Qudmlld3ZhbHVlcygpIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyJkaWN0LnZpZXdpdGVtcygpIiBhcmUgKnZpZXcgb2JqZWN0cyouICBUaGV5IHByb3ZpZGUgYSAnCisgICAgICAgICAgICAgICAgICdkeW5hbWljIHZpZXcgb25cbicKKyAgICAgICAgICAgICAgICAgInRoZSBkaWN0aW9uYXJ5J3MgZW50cmllcywgd2hpY2ggbWVhbnMgdGhhdCB3aGVuIHRoZSAiCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICdjaGFuZ2VzLCB0aGUgdmlldyByZWZsZWN0cyB0aGVzZSBjaGFuZ2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaWN0aW9uYXJ5IHZpZXdzIGNhbiBiZSBpdGVyYXRlZCBvdmVyIHRvIHlpZWxkIHRoZWlyICcKKyAgICAgICAgICAgICAgICAgJ3Jlc3BlY3RpdmUgZGF0YSxcbicKKyAgICAgICAgICAgICAgICAgJ2FuZCBzdXBwb3J0IG1lbWJlcnNoaXAgdGVzdHM6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2xlbihkaWN0dmlldylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnaXRlcihkaWN0dmlldylcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMsIHZhbHVlcyBvciBpdGVtcyAnCisgICAgICAgICAgICAgICAgICcocmVwcmVzZW50ZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHR1cGxlcyBvZiAiKGtleSwgdmFsdWUpIikgaW4gdGhlIGRpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEtleXMgYW5kIHZhbHVlcyBhcmUgaXRlcmF0ZWQgb3ZlciBpbiBhbiBhcmJpdHJhcnkgb3JkZXIgJworICAgICAgICAgICAgICAgICAnd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vbi1yYW5kb20sIHZhcmllcyBhY3Jvc3MgUHl0aG9uIGltcGxlbWVudGF0aW9ucywgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2RlcGVuZHMgb25cbicKKyAgICAgICAgICAgICAgICAgIiAgIHRoZSBkaWN0aW9uYXJ5J3MgaGlzdG9yeSBvZiBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMuIElmICIKKyAgICAgICAgICAgICAgICAgJ2tleXMsXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgYW5kIGl0ZW1zIHZpZXdzIGFyZSBpdGVyYXRlZCBvdmVyIHdpdGggbm8gJworICAgICAgICAgICAgICAgICAnaW50ZXJ2ZW5pbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRpY3Rpb25hcnksIHRoZSBvcmRlciBvZiBpdGVtcyB3aWxsICcKKyAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kLiAgVGhpcyBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mICIodmFsdWUsIGtleSkiICcKKyAgICAgICAgICAgICAgICAgJ3BhaXJzIHVzaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICAiemlwKCkiOiAicGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpIi4gIEFub3RoZXIgJworICAgICAgICAgICAgICAgICAnd2F5IHRvXG4nCisgICAgICAgICAgICAgICAgICcgICBjcmVhdGUgdGhlIHNhbWUgbGlzdCBpcyAicGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW4gJworICAgICAgICAgICAgICAgICAnZC5pdGVtcygpXSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEl0ZXJhdGluZyB2aWV3cyB3aGlsZSBhZGRpbmcgb3IgZGVsZXRpbmcgZW50cmllcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnICAgbWF5IHJhaXNlIGEgIlJ1bnRpbWVFcnJvciIgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsICcKKyAgICAgICAgICAgICAgICAgJ2VudHJpZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ3ggaW4gZGljdHZpZXdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyAnCisgICAgICAgICAgICAgICAgICdrZXlzLCB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSAiKGtleSwgJworICAgICAgICAgICAgICAgICAndmFsdWUpIlxuJworICAgICAgICAgICAgICAgICAnICAgdHVwbGUpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdLZXlzIHZpZXdzIGFyZSBzZXQtbGlrZSBzaW5jZSB0aGVpciBlbnRyaWVzIGFyZSB1bmlxdWUgYW5kICcKKyAgICAgICAgICAgICAgICAgJ2hhc2hhYmxlLlxuJworICAgICAgICAgICAgICAgICAnSWYgYWxsIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgKGtleSwgdmFsdWUpIHBhaXJzIGFyZSAnCisgICAgICAgICAgICAgICAgICd1bmlxdWUgYW5kXG4nCisgICAgICAgICAgICAgICAgICdoYXNoYWJsZSwgdGhlbiB0aGUgaXRlbXMgdmlldyBpcyBhbHNvIHNldC1saWtlLiAgKFZhbHVlcyAnCisgICAgICAgICAgICAgICAgICd2aWV3cyBhcmUgbm90XG4nCisgICAgICAgICAgICAgICAgICd0cmVhdGVkIGFzIHNldC1saWtlIHNpbmNlIHRoZSBlbnRyaWVzIGFyZSBnZW5lcmFsbHkgbm90ICcKKyAgICAgICAgICAgICAgICAgJ3VuaXF1ZS4pICBUaGVuXG4nCisgICAgICAgICAgICAgICAgICd0aGVzZSBzZXQgb3BlcmF0aW9ucyBhcmUgYXZhaWxhYmxlICgib3RoZXIiIHJlZmVycyBlaXRoZXIgdG8gJworICAgICAgICAgICAgICAgICAnYW5vdGhlclxuJworICAgICAgICAgICAgICAgICAndmlldyBvciBhIHNldCk6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2RpY3R2aWV3ICYgb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBpbnRlcnNlY3Rpb24gb2YgdGhlIGRpY3R2aWV3IGFuZCB0aGUgb3RoZXIgJworICAgICAgICAgICAgICAgICAnb2JqZWN0IGFzIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5ldyBzZXQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2RpY3R2aWV3IHwgb3RoZXJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSB1bmlvbiBvZiB0aGUgZGljdHZpZXcgYW5kIHRoZSBvdGhlciBvYmplY3QgYXMgJworICAgICAgICAgICAgICAgICAnYSBuZXcgc2V0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdkaWN0dmlldyAtIG90aGVyXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBkaWN0dmlldyBhbmQgdGhlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgICAgICAiICAgKGFsbCBlbGVtZW50cyBpbiAqZGljdHZpZXcqIHRoYXQgYXJlbid0IGluICpvdGhlciopIGFzIGEgIgorICAgICAgICAgICAgICAgICAnbmV3IHNldC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnZGljdHZpZXcgXiBvdGhlclxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIHN5bW1ldHJpYyBkaWZmZXJlbmNlIChhbGwgZWxlbWVudHMgZWl0aGVyIGluICcKKyAgICAgICAgICAgICAgICAgJypkaWN0dmlldypcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9yICpvdGhlciosIGJ1dCBub3QgaW4gYm90aCkgb2YgdGhlIGRpY3R2aWV3IGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnb3RoZXIgb2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICcgICBhcyBhIG5ldyBzZXQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0FuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICA+Pj4gZGlzaGVzID0geydlZ2dzJzogMiwgJ3NhdXNhZ2UnOiAxLCAnYmFjb24nOiAxLCAiCisgICAgICAgICAgICAgICAgICInc3BhbSc6IDUwMH1cbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBrZXlzID0gZGlzaGVzLnZpZXdrZXlzKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiB2YWx1ZXMgPSBkaXNoZXMudmlld3ZhbHVlcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIGl0ZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IG4gPSAwXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gZm9yIHZhbCBpbiB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIG4gKz0gdmFsXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gcHJpbnQobilcbicKKyAgICAgICAgICAgICAgICAgJyAgIDUwNFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAnb3JkZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsaXN0KGtleXMpXG4nCisgICAgICAgICAgICAgICAgICIgICBbJ2VnZ3MnLCAnYmFjb24nLCAnc2F1c2FnZScsICdzcGFtJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsaXN0KHZhbHVlcylcbicKKyAgICAgICAgICAgICAgICAgJyAgIFsyLCAxLCAxLCA1MDBdXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBkZWwgZGlzaGVzWydlZ2dzJ11cbiIKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBkZWwgZGlzaGVzWydzYXVzYWdlJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsaXN0KGtleXMpXG4nCisgICAgICAgICAgICAgICAgICIgICBbJ3NwYW0nLCAnYmFjb24nXVxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGtleXMgJiB7J2VnZ3MnLCAnYmFjb24nLCAnc2FsYWQnfVxuIgorICAgICAgICAgICAgICAgICAiICAgeydiYWNvbid9XG4iLAorICd0eXBlc21ldGhvZHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGhvZHMgYXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdXNpbmcgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICdub3RhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1RoZXJlIGFyZSB0d28gZmxhdm9yczogYnVpbHQtaW4gbWV0aG9kcyAoc3VjaCBhcyAiYXBwZW5kKCkiICcKKyAgICAgICAgICAgICAgICAgJ29uIGxpc3RzKVxuJworICAgICAgICAgICAgICAgICAnYW5kIGNsYXNzIGluc3RhbmNlIG1ldGhvZHMuICBCdWlsdC1pbiBtZXRob2RzIGFyZSBkZXNjcmliZWQgJworICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3R5cGVzIHRoYXQgc3VwcG9ydCB0aGVtLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgaW1wbGVtZW50YXRpb24gYWRkcyB0d28gc3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlcyB0byAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UgbWV0aG9kczogIm0uaW1fc2VsZiIgaXMgdGhlIG9iamVjdCBvbiB3aGljaCB0aGUgJworICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICdvcGVyYXRlcywgYW5kICJtLmltX2Z1bmMiIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ0NhbGxpbmcgIm0oYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKSIgaXMgY29tcGxldGVseSAnCisgICAgICAgICAgICAgICAgICdlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgICAgICdjYWxsaW5nICJtLmltX2Z1bmMobS5pbV9zZWxmLCBhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ2xhc3MgaW5zdGFuY2UgbWV0aG9kcyBhcmUgZWl0aGVyICpib3VuZCogb3IgKnVuYm91bmQqLCAnCisgICAgICAgICAgICAgICAgICdyZWZlcnJpbmcgdG9cbicKKyAgICAgICAgICAgICAgICAgJ3doZXRoZXIgdGhlIG1ldGhvZCB3YXMgYWNjZXNzZWQgdGhyb3VnaCBhbiBpbnN0YW5jZSBvciBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLFxuJworICAgICAgICAgICAgICAgICAncmVzcGVjdGl2ZWx5LiAgV2hlbiBhIG1ldGhvZCBpcyB1bmJvdW5kLCBpdHMgImltX3NlbGYiICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSB3aWxsXG4nCisgICAgICAgICAgICAgICAgICdiZSAiTm9uZSIgYW5kIGlmIGNhbGxlZCwgYW4gZXhwbGljaXQgInNlbGYiIG9iamVjdCBtdXN0IGJlICcKKyAgICAgICAgICAgICAgICAgJ3Bhc3NlZCBhc1xuJworICAgICAgICAgICAgICAgICAndGhlIGZpcnN0IGFyZ3VtZW50LiAgSW4gdGhpcyBjYXNlLCAic2VsZiIgbXVzdCBiZSBhbiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgInVuYm91bmQgbWV0aG9kJ3MgY2xhc3MgKG9yIGEgc3ViY2xhc3Mgb2YgdGhhdCBjbGFzcyksICIKKyAgICAgICAgICAgICAgICAgJ290aGVyd2lzZSBhXG4nCisgICAgICAgICAgICAgICAgICciVHlwZUVycm9yIiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0xpa2UgZnVuY3Rpb24gb2JqZWN0cywgbWV0aG9kcyBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyAnCisgICAgICAgICAgICAgICAgICdhcmJpdHJhcnlcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMuIEhvd2V2ZXIsIHNpbmNlIG1ldGhvZCBhdHRyaWJ1dGVzIGFyZSBhY3R1YWxseSAnCisgICAgICAgICAgICAgICAgICdzdG9yZWQgb25cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdCAoIm1ldGguaW1fZnVuYyIpLCBzZXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcyBvbiBlaXRoZXIgYm91bmQgb3IgdW5ib3VuZCBtZXRob2RzIGlzICcKKyAgICAgICAgICAgICAgICAgJ2Rpc2FsbG93ZWQuXG4nCisgICAgICAgICAgICAgICAgICdBdHRlbXB0aW5nIHRvIHNldCBhbiBhdHRyaWJ1dGUgb24gYSBtZXRob2QgcmVzdWx0cyBpbiBhblxuJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIiBiZWluZyByYWlzZWQuICBJbiBvcmRlciB0byBzZXQgYSBtZXRob2QgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlLFxuJworICAgICAgICAgICAgICAgICAneW91IG5lZWQgdG8gZXhwbGljaXRseSBzZXQgaXQgb24gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gJworICAgICAgICAgICAgICAgICAnb2JqZWN0OlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgQzpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSBDKClcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBjLm1ldGhvZC53aG9hbWkgPSAnbXkgbmFtZSBpcyBtZXRob2QnICAjIGNhbid0IHNldCBvbiAiCisgICAgICAgICAgICAgICAgICd0aGUgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgICAgICAgICIgICBBdHRyaWJ1dGVFcnJvcjogJ2luc3RhbmNlbWV0aG9kJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAiCisgICAgICAgICAgICAgICAgICInd2hvYW1pJ1xuIgorICAgICAgICAgICAgICAgICAiICAgPj4+IGMubWV0aG9kLmltX2Z1bmMud2hvYW1pID0gJ215IG5hbWUgaXMgbWV0aG9kJ1xuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGMubWV0aG9kLndob2FtaVxuJworICAgICAgICAgICAgICAgICAiICAgJ215IG5hbWUgaXMgbWV0aG9kJ1xuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5IGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKKyAndHlwZXNtb2R1bGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAnTW9kdWxlc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgb25seSBzcGVjaWFsIG9wZXJhdGlvbiBvbiBhIG1vZHVsZSBpcyBhdHRyaWJ1dGUgYWNjZXNzOiAnCisgICAgICAgICAgICAgICAgICcibS5uYW1lIixcbicKKyAgICAgICAgICAgICAgICAgJ3doZXJlICptKiBpcyBhIG1vZHVsZSBhbmQgKm5hbWUqIGFjY2Vzc2VzIGEgbmFtZSBkZWZpbmVkIGluICcKKyAgICAgICAgICAgICAgICAgIiptKidzXG4iCisgICAgICAgICAgICAgICAgICdzeW1ib2wgdGFibGUuIE1vZHVsZSBhdHRyaWJ1dGVzIGNhbiBiZSBhc3NpZ25lZCB0by4gIChOb3RlICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnQgaXMgbm90LCBzdHJpY3RseSBzcGVha2luZywgYW4gb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29uIGEgbW9kdWxlXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3Q7ICJpbXBvcnQgZm9vIiBkb2VzIG5vdCByZXF1aXJlIGEgbW9kdWxlIG9iamVjdCBuYW1lZCAnCisgICAgICAgICAgICAgICAgICcqZm9vKiB0b1xuJworICAgICAgICAgICAgICAgICAnZXhpc3QsIHJhdGhlciBpdCByZXF1aXJlcyBhbiAoZXh0ZXJuYWwpICpkZWZpbml0aW9uKiBmb3IgYSAnCisgICAgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVkICpmb28qIHNvbWV3aGVyZS4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0Egc3BlY2lhbCBhdHRyaWJ1dGUgb2YgZXZlcnkgbW9kdWxlIGlzICJfX2RpY3RfXyIuIFRoaXMgaXMgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nICIKKyAgICAgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZSdzIHN5bWJvbCB0YWJsZSwgIgorICAgICAgICAgICAgICAgICAnYnV0IGRpcmVjdFxuJworICAgICAgICAgICAgICAgICAnYXNzaWdubWVudCB0byB0aGUgIl9fZGljdF9fIiBhdHRyaWJ1dGUgaXMgbm90IHBvc3NpYmxlICh5b3UgJworICAgICAgICAgICAgICAgICAnY2FuIHdyaXRlXG4nCisgICAgICAgICAgICAgICAgICcibS5fX2RpY3RfX1tcJ2FcJ10gPSAxIiwgd2hpY2ggZGVmaW5lcyAibS5hIiB0byBiZSAiMSIsIGJ1dCAnCisgICAgICAgICAgICAgICAgICJ5b3UgY2FuJ3RcbiIKKyAgICAgICAgICAgICAgICAgJ3dyaXRlICJtLl9fZGljdF9fID0ge30iKS4gIE1vZGlmeWluZyAiX19kaWN0X18iIGRpcmVjdGx5IGlzICcKKyAgICAgICAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01vZHVsZXMgYnVpbHQgaW50byB0aGUgaW50ZXJwcmV0ZXIgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAnCisgICAgICAgICAgICAgICAgICciPG1vZHVsZVxuJworICAgICAgICAgICAgICAgICAnXCdzeXNcJyAoYnVpbHQtaW4pPiIuICBJZiBsb2FkZWQgZnJvbSBhIGZpbGUsIHRoZXkgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3dyaXR0ZW4gYXNcbicKKyAgICAgICAgICAgICAgICAgJyI8bW9kdWxlIFwnb3NcJyBmcm9tICcKKyAgICAgICAgICAgICAgICAgJ1wnL3Vzci9sb2NhbC9saWIvcHl0aG9uWC5ZL29zLnB5Y1wnPiIuXG4nLAorICd0eXBlc3NlcSc6ICdcbicKKyAgICAgICAgICAgICAnU2VxdWVuY2UgVHlwZXMgLS0tICJzdHIiLCAidW5pY29kZSIsICJsaXN0IiwgInR1cGxlIiwgJworICAgICAgICAgICAgICciYnl0ZWFycmF5IiwgImJ1ZmZlciIsICJ4cmFuZ2UiXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGFyZSBzZXZlbiBzZXF1ZW5jZSB0eXBlczogc3RyaW5ncywgVW5pY29kZSBzdHJpbmdzLCAnCisgICAgICAgICAgICAgJ2xpc3RzLFxuJworICAgICAgICAgICAgICd0dXBsZXMsIGJ5dGVhcnJheXMsIGJ1ZmZlcnMsIGFuZCB4cmFuZ2Ugb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0ZvciBvdGhlciBjb250YWluZXJzIHNlZSB0aGUgYnVpbHQgaW4gImRpY3QiIGFuZCAic2V0IiBjbGFzc2VzLCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICd0aGUgImNvbGxlY3Rpb25zIiBtb2R1bGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTdHJpbmcgbGl0ZXJhbHMgYXJlIHdyaXR0ZW4gaW4gc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXM6ICcKKyAgICAgICAgICAgICAnIlwneHl6enlcJyIsXG4nCisgICAgICAgICAgICAgJyIiZnJvYm96eiIiLiAgU2VlIFN0cmluZyBsaXRlcmFscyBmb3IgbW9yZSBhYm91dCBzdHJpbmcgJworICAgICAgICAgICAgICdsaXRlcmFscy5cbicKKyAgICAgICAgICAgICAnVW5pY29kZSBzdHJpbmdzIGFyZSBtdWNoIGxpa2Ugc3RyaW5ncywgYnV0IGFyZSBzcGVjaWZpZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAnc3ludGF4XG4nCisgICAgICAgICAgICAgJ3VzaW5nIGEgcHJlY2VkaW5nICJcJ3VcJyIgY2hhcmFjdGVyOiAidVwnYWJjXCciLCAidSJkZWYiIi4gSW4gJworICAgICAgICAgICAgICdhZGRpdGlvbiB0b1xuJworICAgICAgICAgICAgICd0aGUgZnVuY3Rpb25hbGl0eSBkZXNjcmliZWQgaGVyZSwgdGhlcmUgYXJlIGFsc28gJworICAgICAgICAgICAgICdzdHJpbmctc3BlY2lmaWNcbicKKyAgICAgICAgICAgICAnbWV0aG9kcyBkZXNjcmliZWQgaW4gdGhlIFN0cmluZyBNZXRob2RzIHNlY3Rpb24uIExpc3RzIGFyZSAnCisgICAgICAgICAgICAgJ2NvbnN0cnVjdGVkXG4nCisgICAgICAgICAgICAgJ3dpdGggc3F1YXJlIGJyYWNrZXRzLCBzZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiW2EsIGIsICcKKyAgICAgICAgICAgICAnY10iLlxuJworICAgICAgICAgICAgICdUdXBsZXMgYXJlIGNvbnN0cnVjdGVkIGJ5IHRoZSBjb21tYSBvcGVyYXRvciAobm90IHdpdGhpbiBzcXVhcmVcbicKKyAgICAgICAgICAgICAnYnJhY2tldHMpLCB3aXRoIG9yIHdpdGhvdXQgZW5jbG9zaW5nIHBhcmVudGhlc2VzLCBidXQgYW4gZW1wdHkgJworICAgICAgICAgICAgICd0dXBsZVxuJworICAgICAgICAgICAgICdtdXN0IGhhdmUgdGhlIGVuY2xvc2luZyBwYXJlbnRoZXNlcywgc3VjaCBhcyAiYSwgYiwgYyIgb3IgIigpIi4gICcKKyAgICAgICAgICAgICAnQVxuJworICAgICAgICAgICAgICdzaW5nbGUgaXRlbSB0dXBsZSBtdXN0IGhhdmUgYSB0cmFpbGluZyBjb21tYSwgc3VjaCBhcyAiKGQsKSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdCeXRlYXJyYXkgb2JqZWN0cyBhcmUgY3JlYXRlZCB3aXRoIHRoZSBidWlsdC1pbiBmdW5jdGlvblxuJworICAgICAgICAgICAgICciYnl0ZWFycmF5KCkiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQnVmZmVyIG9iamVjdHMgYXJlIG5vdCBkaXJlY3RseSBzdXBwb3J0ZWQgYnkgUHl0aG9uIHN5bnRheCwgYnV0ICcKKyAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgJ2NyZWF0ZWQgYnkgY2FsbGluZyB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImJ1ZmZlcigpIi4gIFRoZXkgJworICAgICAgICAgICAgICJkb24ndFxuIgorICAgICAgICAgICAgICdzdXBwb3J0IGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ09iamVjdHMgb2YgdHlwZSB4cmFuZ2UgYXJlIHNpbWlsYXIgdG8gYnVmZmVycyBpbiB0aGF0IHRoZXJlIGlzICcKKyAgICAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAgICAnc3BlY2lmaWMgc3ludGF4IHRvIGNyZWF0ZSB0aGVtLCBidXQgdGhleSBhcmUgY3JlYXRlZCB1c2luZyB0aGVcbicKKyAgICAgICAgICAgICAnInhyYW5nZSgpIiBmdW5jdGlvbi4gIFRoZXkgZG9uXCd0IHN1cHBvcnQgc2xpY2luZywgY29uY2F0ZW5hdGlvbiAnCisgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgJ3JlcGV0aXRpb24sIGFuZCB1c2luZyAiaW4iLCAibm90IGluIiwgIm1pbigpIiBvciAibWF4KCkiIG9uIHRoZW0gJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdpbmVmZmljaWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ01vc3Qgc2VxdWVuY2UgdHlwZXMgc3VwcG9ydCB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnMuICBUaGUgImluIiAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcibm90IGluIiBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdGllcyBhcyB0aGUgY29tcGFyaXNvblxuJworICAgICAgICAgICAgICdvcGVyYXRpb25zLiAgVGhlICIrIiBhbmQgIioiIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0eSAnCisgICAgICAgICAgICAgJ2FzIHRoZVxuJworICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nIG51bWVyaWMgb3BlcmF0aW9ucy4gWzNdIEFkZGl0aW9uYWwgbWV0aG9kcyBhcmUgJworICAgICAgICAgICAgICdwcm92aWRlZFxuJworICAgICAgICAgICAgICdmb3IgTXV0YWJsZSBTZXF1ZW5jZSBUeXBlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgdGFibGUgbGlzdHMgdGhlIHNlcXVlbmNlIG9wZXJhdGlvbnMgc29ydGVkIGluIGFzY2VuZGluZyAnCisgICAgICAgICAgICAgJ3ByaW9yaXR5LlxuJworICAgICAgICAgICAgICdJbiB0aGUgdGFibGUsICpzKiBhbmQgKnQqIGFyZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgdHlwZTsgKm4qLCAnCisgICAgICAgICAgICAgJyppKiBhbmRcbicKKyAgICAgICAgICAgICAnKmoqIGFyZSBpbnRlZ2VyczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCBPcGVyYXRpb24gICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnTm90ZXMgICAgICB8XG4nCisgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAnfCAieCBpbiBzIiAgICAgICAgICAgfCAiVHJ1ZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgICB8ICcKKyAgICAgICAgICAgICAnKDEpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJGYWxzZSIgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInggbm90IGluIHMiICAgICAgIHwgIkZhbHNlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgfCAnCisgICAgICAgICAgICAgJygxKSAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiVHJ1ZSIgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICsgdCIgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqIHwgJworICAgICAgICAgICAgICcoNikgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICogbiwgbiAqIHMiICAgICB8IGVxdWl2YWxlbnQgdG8gYWRkaW5nICpzKiB0byAgICAgIHwgJworICAgICAgICAgICAgICcoMikgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgfCBpdHNlbGYgKm4qIHRpbWVzICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpXSIgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICB8ICcKKyAgICAgICAgICAgICAnKDMpICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmpdIiAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICcKKyAgICAgICAgICAgICAnKDMpKDQpICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmo6a10iICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICB8ICcKKyAgICAgICAgICAgICAnKDMpKDUpICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImxlbihzKSIgICAgICAgICAgIHwgbGVuZ3RoIG9mICpzKiAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIm1pbihzKSIgICAgICAgICAgIHwgc21hbGxlc3QgaXRlbSBvZiAqcyogICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIm1heChzKSIgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuaW5kZXgoeCkiICAgICAgIHwgaW5kZXggb2YgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNvdW50KHgpIiAgICAgICB8IHRvdGFsIG51bWJlciBvZiBvY2N1cnJlbmNlcyBvZiAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1NlcXVlbmNlIHR5cGVzIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gSW4gcGFydGljdWxhciwgdHVwbGVzICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ2xpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmcgY29ycmVzcG9uZGluZ1xuJworICAgICAgICAgICAgICdlbGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5IGVsZW1lbnQgbXVzdCAnCisgICAgICAgICAgICAgJ2NvbXBhcmVcbicKKyAgICAgICAgICAgICAnZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWUgdHlwZSBhbmQgaGF2ZSAnCisgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgJ2xlbmd0aC4gKEZvciBmdWxsIGRldGFpbHMgc2VlIENvbXBhcmlzb25zIGluIHRoZSBsYW5ndWFnZSAnCisgICAgICAgICAgICAgJ3JlZmVyZW5jZS4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzEuIFdoZW4gKnMqIGlzIGEgc3RyaW5nIG9yIFVuaWNvZGUgc3RyaW5nIG9iamVjdCB0aGUgImluIiBhbmQgJworICAgICAgICAgICAgICcibm90XG4nCisgICAgICAgICAgICAgJyAgIGluIiBvcGVyYXRpb25zIGFjdCBsaWtlIGEgc3Vic3RyaW5nIHRlc3QuICBJbiBQeXRob24gJworICAgICAgICAgICAgICd2ZXJzaW9uc1xuJworICAgICAgICAgICAgICcgICBiZWZvcmUgMi4zLCAqeCogaGFkIHRvIGJlIGEgc3RyaW5nIG9mIGxlbmd0aCAxLiBJbiBQeXRob24gMi4zICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIGJleW9uZCwgKngqIG1heSBiZSBhIHN0cmluZyBvZiBhbnkgbGVuZ3RoLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gIjAiIGFyZSB0cmVhdGVkIGFzICIwIiAod2hpY2ggeWllbGRzICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnICAgZW1wdHkgc2VxdWVuY2Ugb2YgdGhlIHNhbWUgdHlwZSBhcyAqcyopLiAgTm90ZSB0aGF0IGl0ZW1zIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlICpzKiBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCBtdWx0aXBsZSAnCisgICAgICAgICAgICAgJ3RpbWVzLlxuJworICAgICAgICAgICAgICcgICBUaGlzIG9mdGVuIGhhdW50cyBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBsaXN0cyA9IFtbXV0gKiAzXG4nCisgICAgICAgICAgICAgJyAgID4+PiBsaXN0c1xuJworICAgICAgICAgICAgICcgICBbW10sIFtdLCBbXV1cbicKKyAgICAgICAgICAgICAnICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuJworICAgICAgICAgICAgICcgICA+Pj4gbGlzdHNcbicKKyAgICAgICAgICAgICAnICAgW1szXSwgWzNdLCBbM11dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0ICJbW11dIiBpcyBhIG9uZS1lbGVtZW50IGxpc3QgJworICAgICAgICAgICAgICdjb250YWluaW5nXG4nCisgICAgICAgICAgICAgJyAgIGFuIGVtcHR5IGxpc3QsIHNvIGFsbCB0aHJlZSBlbGVtZW50cyBvZiAiW1tdXSAqIDMiIGFyZSAnCisgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAnICAgdG8gdGhpcyBzaW5nbGUgZW1wdHkgbGlzdC4gIE1vZGlmeWluZyBhbnkgb2YgdGhlIGVsZW1lbnRzIG9mXG4nCisgICAgICAgICAgICAgJyAgICJsaXN0cyIgbW9kaWZpZXMgdGhpcyBzaW5nbGUgbGlzdC4gWW91IGNhbiBjcmVhdGUgYSBsaXN0IG9mXG4nCisgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBsaXN0cyA9IFtbXSBmb3IgaSBpbiByYW5nZSgzKV1cbicKKyAgICAgICAgICAgICAnICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuJworICAgICAgICAgICAgICcgICA+Pj4gbGlzdHNbMV0uYXBwZW5kKDUpXG4nCisgICAgICAgICAgICAgJyAgID4+PiBsaXN0c1syXS5hcHBlbmQoNylcbicKKyAgICAgICAgICAgICAnICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgIFtbM10sIFs1XSwgWzddXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRnVydGhlciBleHBsYW5hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIEZBUSBlbnRyeSBIb3cgZG8gSSAnCisgICAgICAgICAgICAgJ2NyZWF0ZSBhXG4nCisgICAgICAgICAgICAgJyAgIG11bHRpZGltZW5zaW9uYWwgbGlzdD8uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICczLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlICpzKjogImxlbihzKSArIGkiIG9yICJsZW4ocykgKyBqIiBpcyBzdWJzdGl0dXRlZC4gICcKKyAgICAgICAgICAgICAnQnV0XG4nCisgICAgICAgICAgICAgJyAgIG5vdGUgdGhhdCAiLTAiIGlzIHN0aWxsICIwIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzQuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzIGRlZmluZWQgYXMgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0ICJpIDw9IGsgPCBqIi4gIElmICppKiBvciAqaiogJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpcyBvbWl0dGVkIG9yICcKKyAgICAgICAgICAgICAnIk5vbmUiLFxuJworICAgICAgICAgICAgICcgICB1c2UgIjAiLiAgSWYgKmoqIGlzIG9taXR0ZWQgb3IgIk5vbmUiLCB1c2UgImxlbihzKSIuICBJZiAqaSogJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKmoqLCB0aGUgc2xpY2UgaXMgZW1wdHkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc1LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2Ugb2YgaXRlbXMgd2l0aCBpbmRleCAgInggPSBpICsgbiprIiBzdWNoIHRoYXQgIjAgPD0gbiAnCisgICAgICAgICAgICAgJzxcbicKKyAgICAgICAgICAgICAnICAgKGotaSkvayIuICBJbiBvdGhlciB3b3JkcywgdGhlIGluZGljZXMgYXJlICJpIiwgImkrayIsICcKKyAgICAgICAgICAgICAnImkrMiprIixcbicKKyAgICAgICAgICAgICAnICAgImkrMyprIiBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dCBuZXZlclxuJworICAgICAgICAgICAgICcgICBpbmNsdWRpbmcgKmoqKS4gIFdoZW4gKmsqIGlzIHBvc2l0aXZlLCAqaSogYW5kICpqKiBhcmUgJworICAgICAgICAgICAgICdyZWR1Y2VkIHRvXG4nCisgICAgICAgICAgICAgJyAgICJsZW4ocykiIGlmIHRoZXkgYXJlIGdyZWF0ZXIuIFdoZW4gKmsqIGlzIG5lZ2F0aXZlLCAqaSogYW5kICcKKyAgICAgICAgICAgICAnKmoqIGFyZVxuJworICAgICAgICAgICAgICcgICByZWR1Y2VkIHRvICJsZW4ocykgLSAxIiBpZiB0aGV5IGFyZSBncmVhdGVyLiAgSWYgKmkqIG9yICpqKiAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICcgICBvbWl0dGVkIG9yICJOb25lIiwgdGhleSBiZWNvbWUgImVuZCIgdmFsdWVzICh3aGljaCBlbmQgJworICAgICAgICAgICAgICdkZXBlbmRzIG9uXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqayogY2Fubm90IGJlIHplcm8uIElmICprKiBpcyAnCisgICAgICAgICAgICAgJyJOb25lIiwgaXRcbicKKyAgICAgICAgICAgICAnICAgaXMgdHJlYXRlZCBsaWtlICIxIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogSWYgKnMqIGFuZCAqdCogYXJlIGJvdGhcbicKKyAgICAgICAgICAgICAnICAgc3RyaW5ncywgc29tZSBQeXRob24gaW1wbGVtZW50YXRpb25zIHN1Y2ggYXMgQ1B5dGhvbiBjYW4gJworICAgICAgICAgICAgICd1c3VhbGx5XG4nCisgICAgICAgICAgICAgJyAgIHBlcmZvcm0gYW4gaW4tcGxhY2Ugb3B0aW1pemF0aW9uIGZvciBhc3NpZ25tZW50cyBvZiB0aGUgZm9ybSAnCisgICAgICAgICAgICAgJyJzID0gc1xuJworICAgICAgICAgICAgICcgICArIHQiIG9yICJzICs9IHQiLiAgV2hlbiBhcHBsaWNhYmxlLCB0aGlzIG9wdGltaXphdGlvbiBtYWtlc1xuJworICAgICAgICAgICAgICcgICBxdWFkcmF0aWMgcnVuLXRpbWUgbXVjaCBsZXNzIGxpa2VseS4gIFRoaXMgb3B0aW1pemF0aW9uIGlzICcKKyAgICAgICAgICAgICAnYm90aFxuJworICAgICAgICAgICAgICcgICB2ZXJzaW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBkZXBlbmRlbnQuICBGb3IgcGVyZm9ybWFuY2UgJworICAgICAgICAgICAgICdzZW5zaXRpdmVcbicKKyAgICAgICAgICAgICAnICAgY29kZSwgaXQgaXMgcHJlZmVyYWJsZSB0byB1c2UgdGhlICJzdHIuam9pbigpIiBtZXRob2Qgd2hpY2ggJworICAgICAgICAgICAgICdhc3N1cmVzXG4nCisgICAgICAgICAgICAgJyAgIGNvbnNpc3RlbnQgbGluZWFyIGNvbmNhdGVuYXRpb24gcGVyZm9ybWFuY2UgYWNyb3NzIHZlcnNpb25zICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjQ6IEZvcm1lcmx5LCBzdHJpbmcgY29uY2F0ZW5hdGlvbiBuZXZlclxuJworICAgICAgICAgICAgICcgICBvY2N1cnJlZCBpbi1wbGFjZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTdHJpbmcgTWV0aG9kc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQmVsb3cgYXJlIGxpc3RlZCB0aGUgc3RyaW5nIG1ldGhvZHMgd2hpY2ggYm90aCA4LWJpdCBzdHJpbmdzICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ1VuaWNvZGUgb2JqZWN0cyBzdXBwb3J0LiAgU29tZSBvZiB0aGVtIGFyZSBhbHNvIGF2YWlsYWJsZSBvblxuJworICAgICAgICAgICAgICciYnl0ZWFycmF5IiBvYmplY3RzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiSW4gYWRkaXRpb24sIFB5dGhvbidzIHN0cmluZ3Mgc3VwcG9ydCB0aGUgc2VxdWVuY2UgdHlwZSBtZXRob2RzXG4iCisgICAgICAgICAgICAgJ2Rlc2NyaWJlZCBpbiB0aGUgU2VxdWVuY2UgVHlwZXMgLS0tIHN0ciwgdW5pY29kZSwgbGlzdCwgdHVwbGUsXG4nCisgICAgICAgICAgICAgJ2J5dGVhcnJheSwgYnVmZmVyLCB4cmFuZ2Ugc2VjdGlvbi4gVG8gb3V0cHV0IGZvcm1hdHRlZCBzdHJpbmdzICcKKyAgICAgICAgICAgICAndXNlXG4nCisgICAgICAgICAgICAgJ3RlbXBsYXRlIHN0cmluZ3Mgb3IgdGhlICIlIiBvcGVyYXRvciBkZXNjcmliZWQgaW4gdGhlIFN0cmluZ1xuJworICAgICAgICAgICAgICdGb3JtYXR0aW5nIE9wZXJhdGlvbnMgc2VjdGlvbi4gQWxzbywgc2VlIHRoZSAicmUiIG1vZHVsZSBmb3IgJworICAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb25zIGJhc2VkIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIuY2FwaXRhbGl6ZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAnY2FwaXRhbGl6ZWRcbicKKyAgICAgICAgICAgICAnICAgYW5kIHRoZSByZXN0IGxvd2VyY2FzZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgJworICAgICAgICAgICAgICdkb25lXG4nCisgICAgICAgICAgICAgJyAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhIHNwYWNlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjQ6IFN1cHBvcnQgZm9yIHRoZSAqZmlsbGNoYXIqIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nICcKKyAgICAgICAgICAgICAnKnN1YipcbicKKyAgICAgICAgICAgICAnICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcgICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIuZGVjb2RlKFtlbmNvZGluZ1ssIGVycm9yc11dKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGVjb2RlcyB0aGUgc3RyaW5nIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciAnCisgICAgICAgICAgICAgJyplbmNvZGluZyouXG4nCisgICAgICAgICAgICAgJyAgICplbmNvZGluZyogZGVmYXVsdHMgdG8gdGhlIGRlZmF1bHQgc3RyaW5nIGVuY29kaW5nLiAgKmVycm9ycyogJworICAgICAgICAgICAgICdtYXlcbicKKyAgICAgICAgICAgICAnICAgYmUgZ2l2ZW4gdG8gc2V0IGEgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIFRoZSAnCisgICAgICAgICAgICAgJ2RlZmF1bHQgaXNcbicKKyAgICAgICAgICAgICAnICAgIlwnc3RyaWN0XCciLCBtZWFuaW5nIHRoYXQgZW5jb2RpbmcgZXJyb3JzIHJhaXNlICcKKyAgICAgICAgICAgICAnIlVuaWNvZGVFcnJvciIuXG4nCisgICAgICAgICAgICAgJyAgIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgIlwnaWdub3JlXCciLCAiXCdyZXBsYWNlXCciIGFuZCBhbnkgJworICAgICAgICAgICAgICdvdGhlclxuJworICAgICAgICAgICAgICcgICBuYW1lIHJlZ2lzdGVyZWQgdmlhICJjb2RlY3MucmVnaXN0ZXJfZXJyb3IoKSIsIHNlZSBzZWN0aW9uICcKKyAgICAgICAgICAgICAnQ29kZWNcbicKKyAgICAgICAgICAgICAnICAgQmFzZSBDbGFzc2VzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogU3VwcG9ydCBmb3Igb3RoZXIgZXJyb3IgaGFuZGxpbmcgJworICAgICAgICAgICAgICdzY2hlbWVzXG4nCisgICAgICAgICAgICAgJyAgIGFkZGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNzogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIuZW5jb2RlKFtlbmNvZGluZ1ssIGVycm9yc11dKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmV0dXJuIGFuIGVuY29kZWQgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLiAgRGVmYXVsdCBlbmNvZGluZyBpcyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBjdXJyZW50IGRlZmF1bHQgc3RyaW5nIGVuY29kaW5nLiAgKmVycm9ycyogbWF5IGJlIGdpdmVuIHRvICcKKyAgICAgICAgICAgICAnc2V0IGFcbicKKyAgICAgICAgICAgICAnICAgZGlmZmVyZW50IGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gIFRoZSBkZWZhdWx0IGZvciAqZXJyb3JzKiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgICJcJ3N0cmljdFwnIiwgbWVhbmluZyB0aGF0IGVuY29kaW5nIGVycm9ycyByYWlzZSBhICcKKyAgICAgICAgICAgICAnIlVuaWNvZGVFcnJvciIuXG4nCisgICAgICAgICAgICAgJyAgIE90aGVyIHBvc3NpYmxlIHZhbHVlcyBhcmUgIlwnaWdub3JlXCciLCAiXCdyZXBsYWNlXCciLFxuJworICAgICAgICAgICAgICcgICAiXCd4bWxjaGFycmVmcmVwbGFjZVwnIiwgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgYW55IG90aGVyICcKKyAgICAgICAgICAgICAnbmFtZVxuJworICAgICAgICAgICAgICcgICByZWdpc3RlcmVkIHZpYSAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCkiLCBzZWUgc2VjdGlvbiBDb2RlYyAnCisgICAgICAgICAgICAgJ0Jhc2VcbicKKyAgICAgICAgICAgICAnICAgQ2xhc3Nlcy4gRm9yIGEgbGlzdCBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICcKKyAgICAgICAgICAgICAnU3RhbmRhcmRcbicKKyAgICAgICAgICAgICAnICAgRW5jb2RpbmdzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi4wLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogU3VwcG9ydCBmb3IgIlwneG1sY2hhcnJlZnJlcGxhY2VcJyIgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgb3RoZXIgZXJyb3IgaGFuZGxpbmcgc2NoZW1lcyAnCisgICAgICAgICAgICAgJ2FkZGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNzogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgYWRkZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAnCisgICAgICAgICAgICAgJypzdWZmaXgqLFxuJworICAgICAgICAgICAgICcgICBvdGhlcndpc2UgcmV0dXJuICJGYWxzZSIuICAqc3VmZml4KiBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mICcKKyAgICAgICAgICAgICAnc3VmZml4ZXNcbicKKyAgICAgICAgICAgICAnICAgdG8gbG9vayBmb3IuICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3QgYmVnaW5uaW5nIGF0IHRoYXRcbicKKyAgICAgICAgICAgICAnICAgcG9zaXRpb24uICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBhdCB0aGF0ICcKKyAgICAgICAgICAgICAncG9zaXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMi41OiBBY2NlcHQgdHVwbGVzIGFzICpzdWZmaXgqLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc3RyLmV4cGFuZHRhYnMoW3RhYnNpemVdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgJworICAgICAgICAgICAgICdyZXBsYWNlZFxuJworICAgICAgICAgICAgICcgICBieSBvbmUgb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gYW5kICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGdpdmVuIHRhYiBzaXplLiAgVGFiIHBvc2l0aW9ucyBvY2N1ciBldmVyeSAqdGFic2l6ZSogJworICAgICAgICAgICAgICdjaGFyYWN0ZXJzXG4nCisgICAgICAgICAgICAgJyAgIChkZWZhdWx0IGlzIDgsIGdpdmluZyB0YWIgcG9zaXRpb25zIGF0IGNvbHVtbnMgMCwgOCwgMTYgYW5kICcKKyAgICAgICAgICAgICAnc28gb24pLlxuJworICAgICAgICAgICAgICcgICBUbyBleHBhbmQgdGhlIHN0cmluZywgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHNldCB0byB6ZXJvIGFuZCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBzdHJpbmcgaXMgZXhhbWluZWQgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4gIElmIHRoZSBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICdpcyBhXG4nCisgICAgICAgICAgICAgJyAgIHRhYiAoIlxcdCIpLCBvbmUgb3IgbW9yZSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSBpbnNlcnRlZCBpbiB0aGUgJworICAgICAgICAgICAgICdyZXN1bHRcbicKKyAgICAgICAgICAgICAnICAgdW50aWwgdGhlIGN1cnJlbnQgY29sdW1uIGlzIGVxdWFsIHRvIHRoZSBuZXh0IHRhYiBwb3NpdGlvbi4gJworICAgICAgICAgICAgICcoVGhlXG4nCisgICAgICAgICAgICAgJyAgIHRhYiBjaGFyYWN0ZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuKSAgSWYgdGhlIGNoYXJhY3RlciBpcyBhICcKKyAgICAgICAgICAgICAnbmV3bGluZVxuJworICAgICAgICAgICAgICcgICAoIlxcbiIpIG9yIHJldHVybiAoIlxcciIpLCBpdCBpcyBjb3BpZWQgYW5kIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAnY29sdW1uIGlzXG4nCisgICAgICAgICAgICAgJyAgIHJlc2V0IHRvIHplcm8uICBBbnkgb3RoZXIgY2hhcmFjdGVyIGlzIGNvcGllZCB1bmNoYW5nZWQgYW5kICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGN1cnJlbnQgY29sdW1uIGlzIGluY3JlbWVudGVkIGJ5IG9uZSByZWdhcmRsZXNzIG9mIGhvdyB0aGVcbicKKyAgICAgICAgICAgICAnICAgY2hhcmFjdGVyIGlzIHJlcHJlc2VudGVkIHdoZW4gcHJpbnRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoKVxuIgorICAgICAgICAgICAgICIgICAnMDEgICAgICAwMTIgICAgIDAxMjMgICAgMDEyMzQnXG4iCisgICAgICAgICAgICAgIiAgID4+PiAnMDFcXHQwMTJcXHQwMTIzXFx0MDEyMzQnLmV4cGFuZHRhYnMoNClcbiIKKyAgICAgICAgICAgICAiICAgJzAxICAwMTIgMDEyMyAgICAwMTIzNCdcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGZvdW5kIHdpdGhpbiB0aGUgc2xpY2UgInNbc3RhcnQ6ZW5kXSIuICBPcHRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICAgICcqc3RhcnQqXG4nCisgICAgICAgICAgICAgJyAgIGFuZCAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uICBSZXR1cm4gIi0xIiAnCisgICAgICAgICAgICAgJ2lmXG4nCisgICAgICAgICAgICAgJyAgICpzdWIqIGlzIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byAnCisgICAgICAgICAgICAgJ2tub3dcbicKKyAgICAgICAgICAgICAnICAgICB0aGUgcG9zaXRpb24gb2YgKnN1YiouICBUbyBjaGVjayBpZiAqc3ViKiBpcyBhIHN1YnN0cmluZyBvciAnCisgICAgICAgICAgICAgJ25vdCxcbicKKyAgICAgICAgICAgICAnICAgICB1c2UgdGhlICJpbiIgb3BlcmF0b3I6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIgICAgICAgID4+PiAnUHknIGluICdQeXRob24nXG4iCisgICAgICAgICAgICAgJyAgICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc3RyLmZvcm1hdCgqYXJncywgKiprd2FyZ3MpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCAnCisgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIGNhbGxlZCBjYW4gY29udGFpbiBsaXRlcmFsIHRleHQgb3IgcmVwbGFjZW1lbnQgJworICAgICAgICAgICAgICdmaWVsZHNcbicKKyAgICAgICAgICAgICAnICAgZGVsaW1pdGVkIGJ5IGJyYWNlcyAie30iLiAgRWFjaCByZXBsYWNlbWVudCBmaWVsZCBjb250YWlucyAnCisgICAgICAgICAgICAgJ2VpdGhlclxuJworICAgICAgICAgICAgICcgICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbicKKyAgICAgICAgICAgICAnICAga2V5d29yZCBhcmd1bWVudC4gIFJldHVybnMgYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgZWFjaFxuJworICAgICAgICAgICAgICcgICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gIlRoZSBzdW0gb2YgMSArIDIgaXMgezB9Ii5mb3JtYXQoMSsyKVxuJworICAgICAgICAgICAgICIgICAnVGhlIHN1bSBvZiAxICsgMiBpcyAzJ1xuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTdHJpbmcgU3ludGF4IGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4nCisgICAgICAgICAgICAgJyAgIGZvcm1hdHRpbmcgb3B0aW9ucyB0aGF0IGNhbiBiZSBzcGVjaWZpZWQgaW4gZm9ybWF0IHN0cmluZ3MuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBvZiBzdHJpbmcgZm9ybWF0dGluZyBpcyB0aGUgbmV3IHN0YW5kYXJkIGluICcKKyAgICAgICAgICAgICAnUHl0aG9uIDMsXG4nCisgICAgICAgICAgICAgJyAgIGFuZCBzaG91bGQgYmUgcHJlZmVycmVkIHRvIHRoZSAiJSIgZm9ybWF0dGluZyBkZXNjcmliZWQgaW4gJworICAgICAgICAgICAgICdTdHJpbmdcbicKKyAgICAgICAgICAgICAnICAgRm9ybWF0dGluZyBPcGVyYXRpb25zIGluIG5ldyBjb2RlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi42LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaWtlICJmaW5kKCkiLCBidXQgcmFpc2UgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyBpcyAnCisgICAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAgICcgICBmb3VuZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5pc2FsbnVtKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhbnVtZXJpYyAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcgICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5pc2FscGhhKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGFscGhhYmV0aWMgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIuaXNkaWdpdCgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkaWdpdHMgYW5kICcKKyAgICAgICAgICAgICAndGhlcmUgaXNcbicKKyAgICAgICAgICAgICAnICAgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIuaXNsb3dlcigpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgJworICAgICAgICAgICAgICdsb3dlcmNhc2VcbicKKyAgICAgICAgICAgICAnICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjYXNlZCBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc3RyLmlzc3BhY2UoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgdGhlcmUgYXJlIG9ubHkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIHRoZSAnCisgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRm9yIDgtYml0IHN0cmluZ3MsIHRoaXMgbWV0aG9kIGlzIGxvY2FsZS1kZXBlbmRlbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIuaXN0aXRsZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzICcKKyAgICAgICAgICAgICAnYXRcbicKKyAgICAgICAgICAgICAnICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgbWF5ICcKKyAgICAgICAgICAgICAnb25seVxuJworICAgICAgICAgICAgICcgICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5IGNhc2VkICcKKyAgICAgICAgICAgICAnb25lcy5cbicKKyAgICAgICAgICAgICAnICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZvciA4LWJpdCBzdHJpbmdzLCB0aGlzIG1ldGhvZCBpcyBsb2NhbGUtZGVwZW5kZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc3RyLmlzdXBwZXIoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNhc2VkIGNoYXJhY3RlcnMgWzRdIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAndXBwZXJjYXNlXG4nCisgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2FzZWQgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5qb2luKGl0ZXJhYmxlKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluXG4nCisgICAgICAgICAgICAgJyAgICppdGVyYWJsZSouIEEgIlR5cGVFcnJvciIgd2lsbCBiZSByYWlzZWQgaWYgdGhlcmUgYXJlIGFueSAnCisgICAgICAgICAgICAgJ25vbi1cbicKKyAgICAgICAgICAgICAnICAgc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgImJ5dGVzIiBvYmplY3RzLiAgVGhlXG4nCisgICAgICAgICAgICAgJyAgIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgJworICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIHN0cmluZyBsZWZ0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggJworICAgICAgICAgICAgICcqd2lkdGgqLlxuJworICAgICAgICAgICAgICcgICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbicKKyAgICAgICAgICAgICAnICAgc3BhY2UpLiAgVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgJworICAgICAgICAgICAgICd0aGFuIG9yXG4nCisgICAgICAgICAgICAgJyAgIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgdGhlICpmaWxsY2hhciogYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIubG93ZXIoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAnWzRdXG4nCisgICAgICAgICAgICAgJyAgIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5sc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgJworICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAnICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgJ3RvIGJlXG4nCisgICAgICAgICAgICAgJyAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICcgICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyAnCisgICAgICAgICAgICAgJ3JhdGhlcixcbicKKyAgICAgICAgICAgICAnICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIiAgID4+PiAnICAgc3BhY2lvdXMgICAnLmxzdHJpcCgpXG4iCisgICAgICAgICAgICAgIiAgICdzcGFjaW91cyAgICdcbiIKKyAgICAgICAgICAgICAiICAgPj4+ICd3d3cuZXhhbXBsZS5jb20nLmxzdHJpcCgnY21vd3ouJylcbiIKKyAgICAgICAgICAgICAiICAgJ2V4YW1wbGUuY29tJ1xuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMi4yOiBTdXBwb3J0IGZvciB0aGUgKmNoYXJzKiBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5wYXJ0aXRpb24oc2VwKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgJworICAgICAgICAgICAgICdzZXBhcmF0b3JcbicKKyAgICAgICAgICAgICAnICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgJworICAgICAgICAgICAgICdpcyBub3RcbicKKyAgICAgICAgICAgICAnICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgJworICAgICAgICAgICAgICdmb2xsb3dlZCBieVxuJworICAgICAgICAgICAgICcgICB0d28gZW1wdHkgc3RyaW5ncy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuNS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAnCisgICAgICAgICAgICAgJypvbGQqXG4nCisgICAgICAgICAgICAgJyAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgJworICAgICAgICAgICAgICdnaXZlbiwgb25seVxuJworICAgICAgICAgICAgICcgICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAqc3ViKiAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiAic1tzdGFydDplbmRdIi5cbicKKyAgICAgICAgICAgICAnICAgT3B0aW9uYWwgYXJndW1lbnRzICpzdGFydCogYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiAnCisgICAgICAgICAgICAgJ3NsaWNlXG4nCisgICAgICAgICAgICAgJyAgIG5vdGF0aW9uLiAgUmV0dXJuICItMSIgb24gZmFpbHVyZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpa2UgInJmaW5kKCkiIGJ1dCByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gdGhlIHN1YnN0cmluZyAnCisgICAgICAgICAgICAgJypzdWIqIGlzXG4nCisgICAgICAgICAgICAgJyAgIG5vdCBmb3VuZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgc3RyaW5nIHJpZ2h0IGp1c3RpZmllZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggJworICAgICAgICAgICAgICcqd2lkdGgqLlxuJworICAgICAgICAgICAgICcgICBQYWRkaW5nIGlzIGRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFcbicKKyAgICAgICAgICAgICAnICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyAnCisgICAgICAgICAgICAgJ3RoYW4gb3JcbicKKyAgICAgICAgICAgICAnICAgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMi40OiBTdXBwb3J0IGZvciB0aGUgKmZpbGxjaGFyKiBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5ycGFydGl0aW9uKHNlcClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgJworICAgICAgICAgICAgICdzZXBhcmF0b3JcbicKKyAgICAgICAgICAgICAnICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSBzZXBhcmF0b3IgJworICAgICAgICAgICAgICdpcyBub3RcbicKKyAgICAgICAgICAgICAnICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgJworICAgICAgICAgICAgICdmb2xsb3dlZCBieVxuJworICAgICAgICAgICAgICcgICB0aGUgc3RyaW5nIGl0c2VsZi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDIuNS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5yc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbicKKyAgICAgICAgICAgICAnICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqICcKKyAgICAgICAgICAgICAnc3BsaXRzXG4nCisgICAgICAgICAgICAgJyAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgJworICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICcgICAiTm9uZSIsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICdzcGxpdHRpbmdcbicKKyAgICAgICAgICAgICAnICAgZnJvbSB0aGUgcmlnaHQsICJyc3BsaXQoKSIgYmVoYXZlcyBsaWtlICJzcGxpdCgpIiB3aGljaCBpc1xuJworICAgICAgICAgICAgICcgICBkZXNjcmliZWQgaW4gZGV0YWlsIGJlbG93LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi40LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc3RyLnJzdHJpcChbY2hhcnNdKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggdHJhaWxpbmcgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgJ3JlbW92ZWQuICBUaGVcbicKKyAgICAgICAgICAgICAnICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgJ3RvIGJlXG4nCisgICAgICAgICAgICAgJyAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICcgICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgc3VmZml4OyAnCisgICAgICAgICAgICAgJ3JhdGhlcixcbicKKyAgICAgICAgICAgICAnICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIiAgID4+PiAnICAgc3BhY2lvdXMgICAnLnJzdHJpcCgpXG4iCisgICAgICAgICAgICAgIiAgICcgICBzcGFjaW91cydcbiIKKyAgICAgICAgICAgICAiICAgPj4+ICdtaXNzaXNzaXBwaScucnN0cmlwKCdpcHonKVxuIgorICAgICAgICAgICAgICIgICAnbWlzc2lzcydcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjIuMjogU3VwcG9ydCBmb3IgdGhlICpjaGFycyogYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIuc3BsaXQoW3NlcFssIG1heHNwbGl0XV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSB3b3JkcyBpbiB0aGUgc3RyaW5nLCB1c2luZyAqc2VwKiBhcyB0aGVcbicKKyAgICAgICAgICAgICAnICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgJworICAgICAgICAgICAgICcqbWF4c3BsaXQqXG4nCisgICAgICAgICAgICAgJyAgIHNwbGl0cyBhcmUgZG9uZSAodGh1cywgdGhlIGxpc3Qgd2lsbCBoYXZlIGF0IG1vc3QgJworICAgICAgICAgICAgICcibWF4c3BsaXQrMSJcbicKKyAgICAgICAgICAgICAnICAgZWxlbWVudHMpLiAgSWYgKm1heHNwbGl0KiBpcyBub3Qgc3BlY2lmaWVkIG9yICItMSIsIHRoZW4gJworICAgICAgICAgICAgICd0aGVyZSBpc1xuJworICAgICAgICAgICAgICcgICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgJworICAgICAgICAgICAgICdtYWRlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCAnCisgICAgICAgICAgICAgJ3RvZ2V0aGVyXG4nCisgICAgICAgICAgICAgJyAgIGFuZCBhcmUgZGVlbWVkIHRvIGRlbGltaXQgZW1wdHkgc3RyaW5ncyAoZm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgICAgJyAgICJcJzEsLDJcJy5zcGxpdChcJyxcJykiIHJldHVybnMgIltcJzFcJywgXCdcJywgXCcyXCddIikuICBUaGUgJworICAgICAgICAgICAgICcqc2VwKiBhcmd1bWVudFxuJworICAgICAgICAgICAgICcgICBtYXkgY29uc2lzdCBvZiBtdWx0aXBsZSBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAnICAgIlwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJykiIHJldHVybnMgIltcJzFcJywgXCcyXCcsIFwnM1wnXSIpLiAnCisgICAgICAgICAgICAgJ1NwbGl0dGluZyBhblxuJworICAgICAgICAgICAgICcgICBlbXB0eSBzdHJpbmcgd2l0aCBhIHNwZWNpZmllZCBzZXBhcmF0b3IgcmV0dXJucyAiW1wnXCddIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIElmICpzZXAqIGlzIG5vdCBzcGVjaWZpZWQgb3IgaXMgIk5vbmUiLCBhIGRpZmZlcmVudCAnCisgICAgICAgICAgICAgJ3NwbGl0dGluZ1xuJworICAgICAgICAgICAgICcgICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSAnCisgICAgICAgICAgICAgJ3JlZ2FyZGVkXG4nCisgICAgICAgICAgICAgJyAgIGFzIGEgc2luZ2xlIHNlcGFyYXRvciwgYW5kIHRoZSByZXN1bHQgd2lsbCBjb250YWluIG5vIGVtcHR5ICcKKyAgICAgICAgICAgICAnc3RyaW5nc1xuJworICAgICAgICAgICAgICcgICBhdCB0aGUgc3RhcnQgb3IgZW5kIGlmIHRoZSBzdHJpbmcgaGFzIGxlYWRpbmcgb3IgdHJhaWxpbmdcbicKKyAgICAgICAgICAgICAnICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciBhICcKKyAgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAgJyAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSAiTm9uZSIgc2VwYXJhdG9yIHJldHVybnMgJworICAgICAgICAgICAgICciW10iLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGUsICJcJyAxICAyICAgMyAgXCcuc3BsaXQoKSIgcmV0dXJucyAiW1wnMVwnLCAnCisgICAgICAgICAgICAgJ1wnMlwnLCBcJzNcJ10iLCBhbmRcbicKKyAgICAgICAgICAgICAnICAgIlwnICAxICAyICAgMyAgXCcuc3BsaXQoTm9uZSwgMSkiIHJldHVybnMgIltcJzFcJywgXCcyICAgMyAgJworICAgICAgICAgICAgICdcJ10iLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc3RyLnNwbGl0bGluZXMoW2tlZXBlbmRzXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbicKKyAgICAgICAgICAgICAnICAgYm91bmRhcmllcy4gVGhpcyBtZXRob2QgdXNlcyB0aGUgKnVuaXZlcnNhbCBuZXdsaW5lcyogJworICAgICAgICAgICAgICdhcHByb2FjaCB0b1xuJworICAgICAgICAgICAgICcgICBzcGxpdHRpbmcgbGluZXMuIExpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAncmVzdWx0aW5nIGxpc3RcbicKKyAgICAgICAgICAgICAnICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBQeXRob24gcmVjb2duaXplcyAiIlxcciIiLCAiIlxcbiIiLCBhbmQgIiJcXHJcXG4iIiBhcyBsaW5lICcKKyAgICAgICAgICAgICAnYm91bmRhcmllc1xuJworICAgICAgICAgICAgICcgICBmb3IgOC1iaXQgc3RyaW5ncy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgICAgPj4+ICdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcbicuc3BsaXRsaW5lcygpXG4iCisgICAgICAgICAgICAgIiAgICAgIFsnYWIgYycsICcnLCAnZGUgZmcnLCAna2wnXVxuIgorICAgICAgICAgICAgICIgICAgICA+Pj4gJ2FiIGNcXG5cXG5kZSBmZ1xccmtsXFxyXFxuJy5zcGxpdGxpbmVzKFRydWUpXG4iCisgICAgICAgICAgICAgIiAgICAgIFsnYWIgY1xcbicsICdcXG4nLCAnZGUgZmdcXHInLCAna2xcXHJcXG4nXVxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVW5saWtlICJzcGxpdCgpIiB3aGVuIGEgZGVsaW1pdGVyIHN0cmluZyAqc2VwKiBpcyBnaXZlbiwgJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJyAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCBhICcKKyAgICAgICAgICAgICAndGVybWluYWxcbicKKyAgICAgICAgICAgICAnICAgbGluZSBicmVhayBkb2VzIG5vdCByZXN1bHQgaW4gYW4gZXh0cmEgbGluZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiAiIi5zcGxpdGxpbmVzKClcbicKKyAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+ICJPbmUgbGluZVxcbiIuc3BsaXRsaW5lcygpXG4nCisgICAgICAgICAgICAgIiAgICAgIFsnT25lIGxpbmUnXVxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRm9yIGNvbXBhcmlzb24sICJzcGxpdChcJ1xcblwnKSIgZ2l2ZXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIgICAgICA+Pj4gJycuc3BsaXQoJ1xcbicpXG4iCisgICAgICAgICAgICAgIiAgICAgIFsnJ11cbiIKKyAgICAgICAgICAgICAiICAgICAgPj4+ICdUd28gbGluZXNcXG4nLnNwbGl0KCdcXG4nKVxuIgorICAgICAgICAgICAgICIgICAgICBbJ1R3byBsaW5lcycsICcnXVxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndW5pY29kZS5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gYSBsaXN0IG9mIHRoZSBsaW5lcyBpbiB0aGUgc3RyaW5nLCBsaWtlICcKKyAgICAgICAgICAgICAnInN0ci5zcGxpdGxpbmVzKCkiLlxuJworICAgICAgICAgICAgICcgICBIb3dldmVyLCB0aGUgVW5pY29kZSBtZXRob2Qgc3BsaXRzIG9uIHRoZSBmb2xsb3dpbmcgbGluZVxuJworICAgICAgICAgICAgICcgICBib3VuZGFyaWVzLCB3aGljaCBhcmUgYSBzdXBlcnNldCBvZiB0aGUgKnVuaXZlcnNhbCBuZXdsaW5lcypcbicKKyAgICAgICAgICAgICAnICAgcmVjb2duaXplZCBmb3IgOC1iaXQgc3RyaW5ncy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJyAgIHwgUmVwcmVzZW50YXRpb24gICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJyAgICs9PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgJyAgIHwgIlxcbiIgICAgICAgICAgICAgICAgICAgIHwgTGluZSBGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICcgICB8ICJcXHIiICAgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnICAgfCAiXFxyXFxuIiAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICsgTGluZSBGZWVkICAgJworICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgJyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJyAgIHwgIlxcdiIgb3IgIlxceDBiIiAgICAgICAgICB8IExpbmUgVGFidWxhdGlvbiAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICcgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICcgICB8ICJcXGYiIG9yICJcXHgwYyIgICAgICAgICAgfCBGb3JtIEZlZWQgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAnICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnICAgfCAiXFx4MWMiICAgICAgICAgICAgICAgICAgfCBGaWxlIFNlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJyAgIHwgIlxceDFkIiAgICAgICAgICAgICAgICAgIHwgR3JvdXAgU2VwYXJhdG9yICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICcgICB8ICJcXHgxZSIgICAgICAgICAgICAgICAgICB8IFJlY29yZCBTZXBhcmF0b3IgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnICAgfCAiXFx4ODUiICAgICAgICAgICAgICAgICAgfCBOZXh0IExpbmUgKEMxIENvbnRyb2wgQ29kZSkgICB8XG4nCisgICAgICAgICAgICAgJyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJyAgIHwgIlxcdTIwMjgiICAgICAgICAgICAgICAgIHwgTGluZSBTZXBhcmF0b3IgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICcgICB8ICJcXHUyMDI5IiAgICAgICAgICAgICAgICB8IFBhcmFncmFwaCBTZXBhcmF0b3IgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjc6ICJcXHYiIGFuZCAiXFxmIiBhZGRlZCB0byBsaXN0IG9mICcKKyAgICAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICAgICcgICBib3VuZGFyaWVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnc3RyLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgc3RyaW5nIHN0YXJ0cyB3aXRoIHRoZSAqcHJlZml4Kiwgb3RoZXJ3aXNlICcKKyAgICAgICAgICAgICAncmV0dXJuXG4nCisgICAgICAgICAgICAgJyAgICJGYWxzZSIuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9vayAnCisgICAgICAgICAgICAgJ2Zvci5cbicKKyAgICAgICAgICAgICAnICAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IHN0cmluZyBiZWdpbm5pbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICcgICBXaXRoIG9wdGlvbmFsICplbmQqLCBzdG9wIGNvbXBhcmluZyBzdHJpbmcgYXQgdGhhdCBwb3NpdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjU6IEFjY2VwdCB0dXBsZXMgYXMgKnByZWZpeCouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzdHIuc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZ1xuJworICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIHJlbW92ZWQuIFRoZSAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nICcKKyAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGVcbicKKyAgICAgICAgICAgICAnICAgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmUgcmVtb3ZlZC4gSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAnCisgICAgICAgICAgICAgJypjaGFycypcbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycyogJworICAgICAgICAgICAgICdhcmd1bWVudCBpc1xuJworICAgICAgICAgICAgICcgICBub3QgYSBwcmVmaXggb3Igc3VmZml4OyByYXRoZXIsIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzICcKKyAgICAgICAgICAgICAndmFsdWVzIGFyZVxuJworICAgICAgICAgICAgICcgICBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIiAgID4+PiAnICAgc3BhY2lvdXMgICAnLnN0cmlwKClcbiIKKyAgICAgICAgICAgICAiICAgJ3NwYWNpb3VzJ1xuIgorICAgICAgICAgICAgICIgICA+Pj4gJ3d3dy5leGFtcGxlLmNvbScuc3RyaXAoJ2Ntb3d6LicpXG4iCisgICAgICAgICAgICAgIiAgICdleGFtcGxlJ1xuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMi4yOiBTdXBwb3J0IGZvciB0aGUgKmNoYXJzKiBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci5zd2FwY2FzZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB1cHBlcmNhc2UgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgJ2NvbnZlcnRlZCB0b1xuJworICAgICAgICAgICAgICcgICBsb3dlcmNhc2UgYW5kIHZpY2UgdmVyc2EuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci50aXRsZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCAnCisgICAgICAgICAgICAgJ3dpdGggYW5cbicKKyAgICAgICAgICAgICAnICAgdXBwZXJjYXNlIGNoYXJhY3RlciBhbmQgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSAnCisgICAgICAgICAgICAgJ2xvd2VyY2FzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCBkZWZpbml0aW9uICcKKyAgICAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICAgICcgICB3b3JkIGFzIGdyb3VwcyBvZiBjb25zZWN1dGl2ZSBsZXR0ZXJzLiAgVGhlIGRlZmluaXRpb24gd29ya3MgJworICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICcgICBtYW55IGNvbnRleHRzIGJ1dCBpdCBtZWFucyB0aGF0IGFwb3N0cm9waGVzIGluIGNvbnRyYWN0aW9ucyAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcgICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSB0aGUgJworICAgICAgICAgICAgICdkZXNpcmVkXG4nCisgICAgICAgICAgICAgJyAgIHJlc3VsdDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiAidGhleVwncmUgYmlsbFwncyBmcmllbmRzIGZyb20gdGhlIFVLIi50aXRsZSgpXG4nCisgICAgICAgICAgICAgJyAgICAgICJUaGV5XCdSZSBCaWxsXCdTIEZyaWVuZHMgRnJvbSBUaGUgVWsiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBBIHdvcmthcm91bmQgZm9yIGFwb3N0cm9waGVzIGNhbiBiZSBjb25zdHJ1Y3RlZCB1c2luZyAnCisgICAgICAgICAgICAgJ3JlZ3VsYXJcbicKKyAgICAgICAgICAgICAnICAgZXhwcmVzc2lvbnM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICA+Pj4gaW1wb3J0IHJlXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBkZWYgdGl0bGVjYXNlKHMpOlxuJworICAgICAgICAgICAgICcgICAgICAuLi4gICAgIHJldHVybiByZS5zdWIociJbQS1aYS16XSsoXCdbQS1aYS16XSspPyIsXG4nCisgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBsYW1iZGEgbW86IG1vLmdyb3VwKDApWzBdLnVwcGVyKCkgK1xuJworICAgICAgICAgICAgICcgICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtby5ncm91cCgwKVsxOl0ubG93ZXIoKSxcbicKKyAgICAgICAgICAgICAnICAgICAgLi4uICAgICAgICAgICAgICAgICAgIHMpXG4nCisgICAgICAgICAgICAgJyAgICAgIC4uLlxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gdGl0bGVjYXNlKCJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMuIilcbicKKyAgICAgICAgICAgICAnICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci50cmFuc2xhdGUodGFibGVbLCBkZWxldGVjaGFyc10pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2hlcmUgYWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIG9wdGlvbmFsIGFyZ3VtZW50ICpkZWxldGVjaGFycyogYXJlIHJlbW92ZWQsIGFuZCB0aGUgJworICAgICAgICAgICAgICdyZW1haW5pbmdcbicKKyAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBoYXZlIGJlZW4gbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uICcKKyAgICAgICAgICAgICAndGFibGUsXG4nCisgICAgICAgICAgICAgJyAgIHdoaWNoIG11c3QgYmUgYSBzdHJpbmcgb2YgbGVuZ3RoIDI1Ni5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFlvdSBjYW4gdXNlIHRoZSAibWFrZXRyYW5zKCkiIGhlbHBlciBmdW5jdGlvbiBpbiB0aGUgJworICAgICAgICAgICAgICcic3RyaW5nIlxuJworICAgICAgICAgICAgICcgICBtb2R1bGUgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gdGFibGUuIEZvciBzdHJpbmcgb2JqZWN0cywgc2V0ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgICp0YWJsZSogYXJndW1lbnQgdG8gIk5vbmUiIGZvciB0cmFuc2xhdGlvbnMgdGhhdCBvbmx5IGRlbGV0ZVxuJworICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiICAgPj4+ICdyZWFkIHRoaXMgc2hvcnQgdGV4dCcudHJhbnNsYXRlKE5vbmUsICdhZWlvdScpXG4iCisgICAgICAgICAgICAgIiAgICdyZCB0aHMgc2hydCB0eHQnXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAyLjY6IFN1cHBvcnQgZm9yIGEgIk5vbmUiICp0YWJsZSogYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgVW5pY29kZSBvYmplY3RzLCB0aGUgInRyYW5zbGF0ZSgpIiBtZXRob2QgZG9lcyBub3QgYWNjZXB0ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIG9wdGlvbmFsICpkZWxldGVjaGFycyogYXJndW1lbnQuICBJbnN0ZWFkLCBpdCByZXR1cm5zIGEgY29weSAnCisgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICcgICAqcyogd2hlcmUgYWxsIGNoYXJhY3RlcnMgaGF2ZSBiZWVuIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlblxuJworICAgICAgICAgICAgICcgICB0cmFuc2xhdGlvbiB0YWJsZSB3aGljaCBtdXN0IGJlIGEgbWFwcGluZyBvZiBVbmljb2RlIG9yZGluYWxzICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAnICAgVW5pY29kZSBvcmRpbmFscywgVW5pY29kZSBzdHJpbmdzIG9yICJOb25lIi4gVW5tYXBwZWQgJworICAgICAgICAgICAgICdjaGFyYWN0ZXJzXG4nCisgICAgICAgICAgICAgJyAgIGFyZSBsZWZ0IHVudG91Y2hlZC4gQ2hhcmFjdGVycyBtYXBwZWQgdG8gIk5vbmUiIGFyZSBkZWxldGVkLiAgJworICAgICAgICAgICAgICdOb3RlLFxuJworICAgICAgICAgICAgICcgICBhIG1vcmUgZmxleGlibGUgYXBwcm9hY2ggaXMgdG8gY3JlYXRlIGEgY3VzdG9tIGNoYXJhY3RlciAnCisgICAgICAgICAgICAgJ21hcHBpbmdcbicKKyAgICAgICAgICAgICAnICAgY29kZWMgdXNpbmcgdGhlICJjb2RlY3MiIG1vZHVsZSAoc2VlICJlbmNvZGluZ3MuY3AxMjUxIiBmb3IgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICcgICBleGFtcGxlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci51cHBlcigpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICdbNF1cbicKKyAgICAgICAgICAgICAnICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCAic3RyLnVwcGVyKCkuaXN1cHBlcigpIiAnCisgICAgICAgICAgICAgJ21pZ2h0IGJlXG4nCisgICAgICAgICAgICAgJyAgICJGYWxzZSIgaWYgInMiIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuJworICAgICAgICAgICAgICcgICBjYXRlZ29yeSBvZiB0aGUgcmVzdWx0aW5nIGNoYXJhY3RlcihzKSBpcyBub3QgIkx1IiAoTGV0dGVyLFxuJworICAgICAgICAgICAgICcgICB1cHBlcmNhc2UpLCBidXQgZS5nLiAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGb3IgOC1iaXQgc3RyaW5ncywgdGhpcyBtZXRob2QgaXMgbG9jYWxlLWRlcGVuZGVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3N0ci56ZmlsbCh3aWR0aClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgbnVtZXJpYyBzdHJpbmcgbGVmdCBmaWxsZWQgd2l0aCB6ZXJvcyBpbiBhIHN0cmluZyAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJyAgIGxlbmd0aCAqd2lkdGgqLiAgQSBzaWduIHByZWZpeCBpcyBoYW5kbGVkIGNvcnJlY3RseS4gIFRoZSAnCisgICAgICAgICAgICAgJ29yaWdpbmFsXG4nCisgICAgICAgICAgICAgJyAgIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byAnCisgICAgICAgICAgICAgJyJsZW4ocykiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMi4yLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHByZXNlbnQgb25seSBvbiB1bmljb2RlIG9iamVjdHM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd1bmljb2RlLmlzbnVtZXJpYygpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXR1cm4gIlRydWUiIGlmIHRoZXJlIGFyZSBvbmx5IG51bWVyaWMgY2hhcmFjdGVycyBpbiBTLCAnCisgICAgICAgICAgICAgJyJGYWxzZSJcbicKKyAgICAgICAgICAgICAnICAgb3RoZXJ3aXNlLiBOdW1lcmljIGNoYXJhY3RlcnMgaW5jbHVkZSBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgJworICAgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyB0aGF0IGhhdmUgdGhlIFVuaWNvZGUgbnVtZXJpYyB2YWx1ZSBwcm9wZXJ0eSwgJworICAgICAgICAgICAgICdlLmcuXG4nCisgICAgICAgICAgICAgJyAgIFUrMjE1NSwgVlVMR0FSIEZSQUNUSU9OIE9ORSBGSUZUSC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3VuaWNvZGUuaXNkZWNpbWFsKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlcmUgYXJlIG9ubHkgZGVjaW1hbCBjaGFyYWN0ZXJzIGluIFMsICcKKyAgICAgICAgICAgICAnIkZhbHNlIlxuJworICAgICAgICAgICAgICcgICBvdGhlcndpc2UuIERlY2ltYWwgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCAnCisgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICcgICBjaGFyYWN0ZXJzIHRoYXQgY2FuIGJlIHVzZWQgdG8gZm9ybSBkZWNpbWFsLXJhZGl4IG51bWJlcnMsICcKKyAgICAgICAgICAgICAnZS5nLlxuJworICAgICAgICAgICAgICcgICBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1N0cmluZyBGb3JtYXR0aW5nIE9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU3RyaW5nIGFuZCBVbmljb2RlIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogJworICAgICAgICAgICAgICd0aGUgIiUiXG4nCisgICAgICAgICAgICAgJ29wZXJhdG9yIChtb2R1bG8pLiAgVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgJworICAgICAgICAgICAgICcqZm9ybWF0dGluZyogb3JcbicKKyAgICAgICAgICAgICAnKmludGVycG9sYXRpb24qIG9wZXJhdG9yLiAgR2l2ZW4gImZvcm1hdCAlIHZhbHVlcyIgKHdoZXJlICcKKyAgICAgICAgICAgICAnKmZvcm1hdCogaXNcbicKKyAgICAgICAgICAgICAnYSBzdHJpbmcgb3IgVW5pY29kZSBvYmplY3QpLCAiJSIgY29udmVyc2lvbiBzcGVjaWZpY2F0aW9ucyBpbiAnCisgICAgICAgICAgICAgJypmb3JtYXQqXG4nCisgICAgICAgICAgICAgJ2FyZSByZXBsYWNlZCB3aXRoIHplcm8gb3IgbW9yZSBlbGVtZW50cyBvZiAqdmFsdWVzKi4gIFRoZSBlZmZlY3QgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdzaW1pbGFyIHRvIHRoZSB1c2luZyAic3ByaW50ZigpIiBpbiB0aGUgQyBsYW5ndWFnZS4gIElmICpmb3JtYXQqICcKKyAgICAgICAgICAgICAnaXMgYVxuJworICAgICAgICAgICAgICdVbmljb2RlIG9iamVjdCwgb3IgaWYgYW55IG9mIHRoZSBvYmplY3RzIGJlaW5nIGNvbnZlcnRlZCB1c2luZyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICciJXMiIGNvbnZlcnNpb24gYXJlIFVuaWNvZGUgb2JqZWN0cywgdGhlIHJlc3VsdCB3aWxsIGFsc28gYmUgYSAnCisgICAgICAgICAgICAgJ1VuaWNvZGVcbicKKyAgICAgICAgICAgICAnb2JqZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgKmZvcm1hdCogcmVxdWlyZXMgYSBzaW5nbGUgYXJndW1lbnQsICp2YWx1ZXMqIG1heSBiZSBhIHNpbmdsZSAnCisgICAgICAgICAgICAgJ25vbi1cbicKKyAgICAgICAgICAgICAndHVwbGUgb2JqZWN0LiBbNV0gIE90aGVyd2lzZSwgKnZhbHVlcyogbXVzdCBiZSBhIHR1cGxlIHdpdGggJworICAgICAgICAgICAgICdleGFjdGx5XG4nCisgICAgICAgICAgICAgJ3RoZSBudW1iZXIgb2YgaXRlbXMgc3BlY2lmaWVkIGJ5IHRoZSBmb3JtYXQgc3RyaW5nLCBvciBhIHNpbmdsZVxuJworICAgICAgICAgICAgICdtYXBwaW5nIG9iamVjdCAoZm9yIGV4YW1wbGUsIGEgZGljdGlvbmFyeSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGNvbnZlcnNpb24gc3BlY2lmaWVyIGNvbnRhaW5zIHR3byBvciBtb3JlIGNoYXJhY3RlcnMgYW5kIGhhcyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmb2xsb3dpbmcgY29tcG9uZW50cywgd2hpY2ggbXVzdCBvY2N1ciBpbiB0aGlzIG9yZGVyOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gVGhlICJcJyVcJyIgY2hhcmFjdGVyLCB3aGljaCBtYXJrcyB0aGUgc3RhcnQgb2YgdGhlICcKKyAgICAgICAgICAgICAnc3BlY2lmaWVyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gTWFwcGluZyBrZXkgKG9wdGlvbmFsKSwgY29uc2lzdGluZyBvZiBhIHBhcmVudGhlc2lzZWQgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICcgICBvZiBjaGFyYWN0ZXJzIChmb3IgZXhhbXBsZSwgIihzb21lbmFtZSkiKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzMuIENvbnZlcnNpb24gZmxhZ3MgKG9wdGlvbmFsKSwgd2hpY2ggYWZmZWN0IHRoZSByZXN1bHQgb2Ygc29tZVxuJworICAgICAgICAgICAgICcgICBjb252ZXJzaW9uIHR5cGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gTWluaW11bSBmaWVsZCB3aWR0aCAob3B0aW9uYWwpLiAgSWYgc3BlY2lmaWVkIGFzIGFuICJcJypcJyJcbicKKyAgICAgICAgICAgICAnICAgKGFzdGVyaXNrKSwgdGhlIGFjdHVhbCB3aWR0aCBpcyByZWFkIGZyb20gdGhlIG5leHQgZWxlbWVudCBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICB0dXBsZSBpbiAqdmFsdWVzKiwgYW5kIHRoZSBvYmplY3QgdG8gY29udmVydCBjb21lcyBhZnRlciB0aGVcbicKKyAgICAgICAgICAgICAnICAgbWluaW11bSBmaWVsZCB3aWR0aCBhbmQgb3B0aW9uYWwgcHJlY2lzaW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gUHJlY2lzaW9uIChvcHRpb25hbCksIGdpdmVuIGFzIGEgIlwnLlwnIiAoZG90KSBmb2xsb3dlZCBieSAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBwcmVjaXNpb24uICBJZiBzcGVjaWZpZWQgYXMgIlwnKlwnIiAoYW4gYXN0ZXJpc2spLCB0aGUgYWN0dWFsICcKKyAgICAgICAgICAgICAnd2lkdGhcbicKKyAgICAgICAgICAgICAnICAgaXMgcmVhZCBmcm9tIHRoZSBuZXh0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGluICp2YWx1ZXMqLCBhbmQgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgdmFsdWUgdG8gY29udmVydCBjb21lcyBhZnRlciB0aGUgcHJlY2lzaW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNi4gTGVuZ3RoIG1vZGlmaWVyIChvcHRpb25hbCkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc3LiBDb252ZXJzaW9uIHR5cGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIHRoZSByaWdodCBhcmd1bWVudCBpcyBhIGRpY3Rpb25hcnkgKG9yIG90aGVyIG1hcHBpbmcgdHlwZSksICcKKyAgICAgICAgICAgICAndGhlblxuJworICAgICAgICAgICAgICd0aGUgZm9ybWF0cyBpbiB0aGUgc3RyaW5nICptdXN0KiBpbmNsdWRlIGEgcGFyZW50aGVzaXNlZCBtYXBwaW5nICcKKyAgICAgICAgICAgICAna2V5XG4nCisgICAgICAgICAgICAgJ2ludG8gdGhhdCBkaWN0aW9uYXJ5IGluc2VydGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSAiXCclXCciICcKKyAgICAgICAgICAgICAnY2hhcmFjdGVyLlxuJworICAgICAgICAgICAgICdUaGUgbWFwcGluZyBrZXkgc2VsZWN0cyB0aGUgdmFsdWUgdG8gYmUgZm9ybWF0dGVkIGZyb20gdGhlICcKKyAgICAgICAgICAgICAnbWFwcGluZy5cbicKKyAgICAgICAgICAgICAnRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICI+Pj4gcHJpbnQgJyUobGFuZ3VhZ2UpcyBoYXMgJShudW1iZXIpMDNkIHF1b3RlIHR5cGVzLicgJSBcXFxuIgorICAgICAgICAgICAgICcuLi4gICAgICAgeyJsYW5ndWFnZSI6ICJQeXRob24iLCAibnVtYmVyIjogMn1cbicKKyAgICAgICAgICAgICAnUHl0aG9uIGhhcyAwMDIgcXVvdGUgdHlwZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbiB0aGlzIGNhc2Ugbm8gIioiIHNwZWNpZmllcnMgbWF5IG9jY3VyIGluIGEgZm9ybWF0IChzaW5jZSAnCisgICAgICAgICAgICAgJ3RoZXlcbicKKyAgICAgICAgICAgICAncmVxdWlyZSBhIHNlcXVlbnRpYWwgcGFyYW1ldGVyIGxpc3QpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGNvbnZlcnNpb24gZmxhZyBjaGFyYWN0ZXJzIGFyZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCBGbGFnICAgICAgfCAnCisgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICd8ICJcJyNcJyIgICAgIHwgVGhlIHZhbHVlIGNvbnZlcnNpb24gd2lsbCB1c2UgdGhlICJhbHRlcm5hdGUgJworICAgICAgICAgICAgICdmb3JtIiAod2hlcmUgZGVmaW5lZCAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnYmVsb3cpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIlwnMFwnIiAgICAgfCBUaGUgY29udmVyc2lvbiB3aWxsIGJlIHplcm8gcGFkZGVkIGZvciBudW1lcmljICcKKyAgICAgICAgICAgICAndmFsdWVzLiAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiXCctXCciICAgICB8IFRoZSBjb252ZXJ0ZWQgdmFsdWUgaXMgbGVmdCBhZGp1c3RlZCAob3ZlcnJpZGVzICcKKyAgICAgICAgICAgICAndGhlICJcJzBcJyIgY29udmVyc2lvbiAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICB8IGlmIGJvdGggYXJlICcKKyAgICAgICAgICAgICAnZ2l2ZW4pLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJcJyBcJyIgICAgIHwgKGEgc3BhY2UpIEEgYmxhbmsgc2hvdWxkIGJlIGxlZnQgYmVmb3JlIGEgJworICAgICAgICAgICAgICdwb3NpdGl2ZSBudW1iZXIgKG9yIGVtcHR5ICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICB8IHN0cmluZykgcHJvZHVjZWQgYnkgYSBzaWduZWQgJworICAgICAgICAgICAgICdjb252ZXJzaW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJcJytcJyIgICAgIHwgQSBzaWduIGNoYXJhY3RlciAoIlwnK1wnIiBvciAiXCctXCciKSB3aWxsICcKKyAgICAgICAgICAgICAncHJlY2VkZSB0aGUgY29udmVyc2lvbiAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgfCAob3ZlcnJpZGVzIGEgInNwYWNlIiAnCisgICAgICAgICAgICAgJ2ZsYWcpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgbGVuZ3RoIG1vZGlmaWVyICgiaCIsICJsIiwgb3IgIkwiKSBtYXkgYmUgcHJlc2VudCwgYnV0IGlzICcKKyAgICAgICAgICAgICAnaWdub3JlZCBhc1xuJworICAgICAgICAgICAgICdpdCBpcyBub3QgbmVjZXNzYXJ5IGZvciBQeXRob24gLS0gc28gZS5nLiAiJWxkIiBpcyBpZGVudGljYWwgdG8gJworICAgICAgICAgICAgICciJWQiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGNvbnZlcnNpb24gdHlwZXMgYXJlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8IENvbnZlcnNpb24gICB8ICcKKyAgICAgICAgICAgICAnTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICcKKyAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICcrPT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT0rXG4nCisgICAgICAgICAgICAgJ3wgIlwnZFwnIiAgICAgICAgfCBTaWduZWQgaW50ZWdlciAnCisgICAgICAgICAgICAgJ2RlY2ltYWwuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiXCdpXCciICAgICAgICB8IFNpZ25lZCBpbnRlZ2VyICcKKyAgICAgICAgICAgICAnZGVjaW1hbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJcJ29cJyIgICAgICAgIHwgU2lnbmVkIG9jdGFsICcKKyAgICAgICAgICAgICAndmFsdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICgxKSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIlwndVwnIiAgICAgICAgfCBPYnNvbGV0ZSB0eXBlIC0tIGl0IGlzIGlkZW50aWNhbCB0byAnCisgICAgICAgICAgICAgJyJcJ2RcJyIuICAgICAgICAgICAgfCAoNykgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJcJ3hcJyIgICAgICAgIHwgU2lnbmVkIGhleGFkZWNpbWFsICcKKyAgICAgICAgICAgICAnKGxvd2VyY2FzZSkuICAgICAgICAgICAgICAgICAgICAgICB8ICgyKSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIlwnWFwnIiAgICAgICAgfCBTaWduZWQgaGV4YWRlY2ltYWwgJworICAgICAgICAgICAgICcodXBwZXJjYXNlKS4gICAgICAgICAgICAgICAgICAgICAgIHwgKDIpICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiXCdlXCciICAgICAgICB8IEZsb2F0aW5nIHBvaW50IGV4cG9uZW50aWFsIGZvcm1hdCAnCisgICAgICAgICAgICAgJyhsb3dlcmNhc2UpLiAgICAgICAgfCAoMykgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJcJ0VcJyIgICAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZXhwb25lbnRpYWwgZm9ybWF0ICcKKyAgICAgICAgICAgICAnKHVwcGVyY2FzZSkuICAgICAgICB8ICgzKSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIlwnZlwnIiAgICAgICAgfCBGbG9hdGluZyBwb2ludCBkZWNpbWFsICcKKyAgICAgICAgICAgICAnZm9ybWF0LiAgICAgICAgICAgICAgICAgICAgICAgIHwgKDMpICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiXCdGXCciICAgICAgICB8IEZsb2F0aW5nIHBvaW50IGRlY2ltYWwgJworICAgICAgICAgICAgICdmb3JtYXQuICAgICAgICAgICAgICAgICAgICAgICAgfCAoMykgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJcJ2dcJyIgICAgICAgIHwgRmxvYXRpbmcgcG9pbnQgZm9ybWF0LiBVc2VzIGxvd2VyY2FzZSAnCisgICAgICAgICAgICAgJ2V4cG9uZW50aWFsICAgICB8ICg0KSAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICB8IGZvcm1hdCBpZiBleHBvbmVudCBpcyBsZXNzIHRoYW4gLTQgb3Igbm90IGxlc3MgJworICAgICAgICAgICAgICd0aGFuICAgfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgfCBwcmVjaXNpb24sIGRlY2ltYWwgZm9ybWF0ICcKKyAgICAgICAgICAgICAnb3RoZXJ3aXNlLiAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiXCdHXCciICAgICAgICB8IEZsb2F0aW5nIHBvaW50IGZvcm1hdC4gVXNlcyB1cHBlcmNhc2UgJworICAgICAgICAgICAgICdleHBvbmVudGlhbCAgICAgfCAoNCkgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgfCBmb3JtYXQgaWYgZXhwb25lbnQgaXMgbGVzcyB0aGFuIC00IG9yIG5vdCBsZXNzICcKKyAgICAgICAgICAgICAndGhhbiAgIHwgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgIHwgcHJlY2lzaW9uLCBkZWNpbWFsIGZvcm1hdCAnCisgICAgICAgICAgICAgJ290aGVyd2lzZS4gICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIlwnY1wnIiAgICAgICAgfCBTaW5nbGUgY2hhcmFjdGVyIChhY2NlcHRzIGludGVnZXIgb3Igc2luZ2xlICcKKyAgICAgICAgICAgICAnY2hhcmFjdGVyIHwgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdzdHJpbmcpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgJworICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiXCdyXCciICAgICAgICB8IFN0cmluZyAoY29udmVydHMgYW55IFB5dGhvbiBvYmplY3QgdXNpbmcgJworICAgICAgICAgICAgICdyZXByKCkpLiAgICAgfCAoNSkgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJcJ3NcJyIgICAgICAgIHwgU3RyaW5nIChjb252ZXJ0cyBhbnkgUHl0aG9uIG9iamVjdCB1c2luZyAnCisgICAgICAgICAgICAgJyJzdHIoKSIpLiAgICB8ICg2KSAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIlwnJVwnIiAgICAgICAgfCBObyBhcmd1bWVudCBpcyBjb252ZXJ0ZWQsIHJlc3VsdHMgaW4gYSAnCisgICAgICAgICAgICAgJyJcJyVcJyIgICAgICAgICAgfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgfCBjaGFyYWN0ZXIgaW4gdGhlICcKKyAgICAgICAgICAgICAncmVzdWx0LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgemVybyAoIlwnMFwnIikgdG8gYmUgJworICAgICAgICAgICAgICdpbnNlcnRlZFxuJworICAgICAgICAgICAgICcgICBiZXR3ZWVuIGxlZnQtaGFuZCBwYWRkaW5nIGFuZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbnVtYmVyIGlmICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGxlYWRpbmcgY2hhcmFjdGVyIG9mIHRoZSByZXN1bHQgaXMgbm90IGFscmVhZHkgYSB6ZXJvLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMi4gVGhlIGFsdGVybmF0ZSBmb3JtIGNhdXNlcyBhIGxlYWRpbmcgIlwnMHhcJyIgb3IgIlwnMFhcJyIgJworICAgICAgICAgICAgICcoZGVwZW5kaW5nXG4nCisgICAgICAgICAgICAgJyAgIG9uIHdoZXRoZXIgdGhlICJcJ3hcJyIgb3IgIlwnWFwnIiBmb3JtYXQgd2FzIHVzZWQpIHRvIGJlICcKKyAgICAgICAgICAgICAnaW5zZXJ0ZWRcbicKKyAgICAgICAgICAgICAnICAgYmVmb3JlIHRoZSBmaXJzdCBkaWdpdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzMuIFRoZSBhbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCB0byBhbHdheXMgY29udGFpbiBhICcKKyAgICAgICAgICAgICAnZGVjaW1hbFxuJworICAgICAgICAgICAgICcgICBwb2ludCwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIHByZWNpc2lvbiBkZXRlcm1pbmVzIHRoZSBudW1iZXIgb2YgZGlnaXRzIGFmdGVyIHRoZSAnCisgICAgICAgICAgICAgJ2RlY2ltYWxcbicKKyAgICAgICAgICAgICAnICAgcG9pbnQgYW5kIGRlZmF1bHRzIHRvIDYuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc0LiBUaGUgYWx0ZXJuYXRlIGZvcm0gY2F1c2VzIHRoZSByZXN1bHQgdG8gYWx3YXlzIGNvbnRhaW4gYSAnCisgICAgICAgICAgICAgJ2RlY2ltYWxcbicKKyAgICAgICAgICAgICAnICAgcG9pbnQsIGFuZCB0cmFpbGluZyB6ZXJvZXMgYXJlIG5vdCByZW1vdmVkIGFzIHRoZXkgd291bGQgJworICAgICAgICAgICAgICdvdGhlcndpc2VcbicKKyAgICAgICAgICAgICAnICAgYmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgcHJlY2lzaW9uIGRldGVybWluZXMgdGhlIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMgJworICAgICAgICAgICAgICdiZWZvcmVcbicKKyAgICAgICAgICAgICAnICAgYW5kIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGFuZCBkZWZhdWx0cyB0byA2LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gVGhlICIlciIgY29udmVyc2lvbiB3YXMgYWRkZWQgaW4gUHl0aG9uIDIuMC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBwcmVjaXNpb24gZGV0ZXJtaW5lcyB0aGUgbWF4aW1hbCBudW1iZXIgb2YgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgJ3VzZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc2LiBJZiB0aGUgb2JqZWN0IG9yIGZvcm1hdCBwcm92aWRlZCBpcyBhICJ1bmljb2RlIiBzdHJpbmcsIHRoZVxuJworICAgICAgICAgICAgICcgICByZXN1bHRpbmcgc3RyaW5nIHdpbGwgYWxzbyBiZSAidW5pY29kZSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgcHJlY2lzaW9uIGRldGVybWluZXMgdGhlIG1heGltYWwgbnVtYmVyIG9mIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICd1c2VkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNy4gU2VlICoqUEVQIDIzNyoqLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2luY2UgUHl0aG9uIHN0cmluZ3MgaGF2ZSBhbiBleHBsaWNpdCBsZW5ndGgsICIlcyIgY29udmVyc2lvbnMgJworICAgICAgICAgICAgICdkbyBub3RcbicKKyAgICAgICAgICAgICAnYXNzdW1lIHRoYXQgIlwnXFwwXCciIGlzIHRoZSBlbmQgb2YgdGhlIHN0cmluZy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAyLjc6ICIlZiIgY29udmVyc2lvbnMgZm9yIG51bWJlcnMgd2hvc2UgJworICAgICAgICAgICAgICdhYnNvbHV0ZVxuJworICAgICAgICAgICAgICd2YWx1ZSBpcyBvdmVyIDFlNTAgYXJlIG5vIGxvbmdlciByZXBsYWNlZCBieSAiJWciIGNvbnZlcnNpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQWRkaXRpb25hbCBzdHJpbmcgb3BlcmF0aW9ucyBhcmUgZGVmaW5lZCBpbiBzdGFuZGFyZCBtb2R1bGVzICcKKyAgICAgICAgICAgICAnInN0cmluZyJcbicKKyAgICAgICAgICAgICAnYW5kICJyZSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWFJhbmdlIFR5cGVcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAieHJhbmdlIiB0eXBlIGlzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB3aGljaCBpcyBjb21tb25seSAnCisgICAgICAgICAgICAgJ3VzZWQgZm9yXG4nCisgICAgICAgICAgICAgJ2xvb3BpbmcuICBUaGUgYWR2YW50YWdlIG9mIHRoZSAieHJhbmdlIiB0eXBlIGlzIHRoYXQgYW4gJworICAgICAgICAgICAgICcieHJhbmdlIlxuJworICAgICAgICAgICAgICdvYmplY3Qgd2lsbCBhbHdheXMgdGFrZSB0aGUgc2FtZSBhbW91bnQgb2YgbWVtb3J5LCBubyBtYXR0ZXIgdGhlICcKKyAgICAgICAgICAgICAnc2l6ZVxuJworICAgICAgICAgICAgICdvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cy4gIFRoZXJlIGFyZSBubyBjb25zaXN0ZW50ICcKKyAgICAgICAgICAgICAncGVyZm9ybWFuY2VcbicKKyAgICAgICAgICAgICAnYWR2YW50YWdlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1hSYW5nZSBvYmplY3RzIGhhdmUgdmVyeSBsaXR0bGUgYmVoYXZpb3I6IHRoZXkgb25seSBzdXBwb3J0ICcKKyAgICAgICAgICAgICAnaW5kZXhpbmcsXG4nCisgICAgICAgICAgICAgJ2l0ZXJhdGlvbiwgYW5kIHRoZSAibGVuKCkiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ011dGFibGUgU2VxdWVuY2UgVHlwZXNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTGlzdCBhbmQgImJ5dGVhcnJheSIgb2JqZWN0cyBzdXBwb3J0IGFkZGl0aW9uYWwgb3BlcmF0aW9ucyB0aGF0ICcKKyAgICAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAgICAnaW4tcGxhY2UgbW9kaWZpY2F0aW9uIG9mIHRoZSBvYmplY3QuIE90aGVyIG11dGFibGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICd0eXBlc1xuJworICAgICAgICAgICAgICcod2hlbiBhZGRlZCB0byB0aGUgbGFuZ3VhZ2UpIHNob3VsZCBhbHNvIHN1cHBvcnQgdGhlc2UgJworICAgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICdTdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczogc3VjaCBvYmplY3RzICcKKyAgICAgICAgICAgICAnY2Fubm90XG4nCisgICAgICAgICAgICAgJ2JlIG1vZGlmaWVkIG9uY2UgY3JlYXRlZC4gVGhlIGZvbGxvd2luZyBvcGVyYXRpb25zIGFyZSBkZWZpbmVkICcKKyAgICAgICAgICAgICAnb25cbicKKyAgICAgICAgICAgICAnbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyAod2hlcmUgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICd8ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyByZXBsYWNlZCAnCisgICAgICAgICAgICAgJ2J5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAnKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICcKKyAgICAgICAgICAgICAnaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgJworICAgICAgICAgICAgICd0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAnCisgICAgICAgICAgICAgJyp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gJworICAgICAgICAgICAgICdbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAic1tpOmo6a10iICcKKyAgICAgICAgICAgICAnYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICcKKyAgICAgICAgICAgICAnKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyAnCisgICAgICAgICAgICAgJ29mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlICcKKyAgICAgICAgICAgICAnbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tsZW4ocyk6bGVuKHMpXSA9ICcKKyAgICAgICAgICAgICAnW3hdIiB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmV4dGVuZCh0KSIgb3IgInMgKz0gdCIgICAgICB8IGZvciB0aGUgbW9zdCBwYXJ0IHRoZSBzYW1lICcKKyAgICAgICAgICAgICAnYXMgICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICd0IiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyAnCisgICAgICAgICAgICAgJ2NvbnRlbnRzICAgIHwgKDExKSAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBlYXRlZCAqbiogJworICAgICAgICAgICAgICd0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuY291bnQoeCkiICAgICAgICAgICAgICAgICAgIHwgcmV0dXJuIG51bWJlciBvZiAqaSpcJ3MgZm9yICcKKyAgICAgICAgICAgICAnd2hpY2ggfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2ldID09ICcKKyAgICAgICAgICAgICAneCIgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5pbmRleCh4WywgaVssIGpdXSkiICAgICAgICAgfCByZXR1cm4gc21hbGxlc3QgKmsqIHN1Y2ggJworICAgICAgICAgICAgICd0aGF0ICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1trXSA9PSB4IiBhbmQgImkgPD0gayA8ICcKKyAgICAgICAgICAgICAnaiIgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuaW5zZXJ0KGksIHgpIiAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmldID0gJworICAgICAgICAgICAgICdbeF0iICAgICAgICAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnBvcChbaV0pIiAgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgInggPSBzW2ldOyBkZWwgJworICAgICAgICAgICAgICdzW2ldOyAgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJldHVybiAnCisgICAgICAgICAgICAgJ3giICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJkZWwgJworICAgICAgICAgICAgICdzW3MuaW5kZXgoeCldIiAgICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiAnCisgICAgICAgICAgICAgJ2luICAgICB8ICg3KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICdwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnNvcnQoW2NtcFssIGtleVssICAgICAgICAgICB8IHNvcnQgdGhlIGl0ZW1zIG9mICpzKiBpbiAnCisgICAgICAgICAgICAgJ3BsYWNlICAgfCAoNykoOCkoOSkoMTApICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8IHJldmVyc2VdXV0pIiAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzICByZXBsYWNpbmcuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gaGFzIGhpc3RvcmljYWxseSBhY2NlcHRlZFxuJworICAgICAgICAgICAgICcgICBtdWx0aXBsZSBwYXJhbWV0ZXJzIGFuZCBpbXBsaWNpdGx5IGpvaW5lZCB0aGVtIGludG8gYSB0dXBsZTsgJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJyAgIG5vIGxvbmdlciB3b3JrcyBpbiBQeXRob24gMi4wLiAgVXNlIG9mIHRoaXMgbWlzZmVhdHVyZSBoYXMgJworICAgICAgICAgICAgICdiZWVuXG4nCisgICAgICAgICAgICAgJyAgIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDEuNC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzMuICp0KiBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzQuIFJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gV2hlbiBhXG4nCisgICAgICAgICAgICAgJyAgIG5lZ2F0aXZlIGluZGV4IGlzIHBhc3NlZCBhcyB0aGUgc2Vjb25kIG9yIHRoaXJkIHBhcmFtZXRlciB0byAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICAiaW5kZXgoKSIgbWV0aG9kLCB0aGUgbGlzdCBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSAnCisgICAgICAgICAgICAgJ2luZGljZXMuXG4nCisgICAgICAgICAgICAgJyAgIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yICcKKyAgICAgICAgICAgICAnc2xpY2VcbicKKyAgICAgICAgICAgICAnICAgaW5kaWNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFByZXZpb3VzbHksICJpbmRleCgpIiBkaWRuXCd0IGhhdmUgJworICAgICAgICAgICAgICdhcmd1bWVudHNcbicKKyAgICAgICAgICAgICAnICAgZm9yIHNwZWNpZnlpbmcgc3RhcnQgYW5kIHN0b3AgcG9zaXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gV2hlbiBhIG5lZ2F0aXZlIGluZGV4IGlzIHBhc3NlZCBhcyB0aGUgZmlyc3QgcGFyYW1ldGVyIHRvICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgICJpbnNlcnQoKSIgbWV0aG9kLCB0aGUgbGlzdCBsZW5ndGggaXMgYWRkZWQsIGFzIGZvciBzbGljZSAnCisgICAgICAgICAgICAgJ2luZGljZXMuXG4nCisgICAgICAgICAgICAgJyAgIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgZm9yICcKKyAgICAgICAgICAgICAnc2xpY2VcbicKKyAgICAgICAgICAgICAnICAgaW5kaWNlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFByZXZpb3VzbHksIGFsbCBuZWdhdGl2ZSBpbmRpY2VzICcKKyAgICAgICAgICAgICAnd2VyZVxuJworICAgICAgICAgICAgICcgICB0cnVuY2F0ZWQgdG8gemVyby5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuIFRoZSAicG9wKCkiIG1ldGhvZFwncyBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgJworICAgICAgICAgICAgICdzb1xuJworICAgICAgICAgICAgICcgICB0aGF0IGJ5IGRlZmF1bHQgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzcuIFRoZSAic29ydCgpIiBhbmQgInJldmVyc2UoKSIgbWV0aG9kcyBtb2RpZnkgdGhlIGxpc3QgaW4gJworICAgICAgICAgICAgICdwbGFjZVxuJworICAgICAgICAgICAgICcgICBmb3IgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHNvcnRpbmcgb3IgcmV2ZXJzaW5nIGEgbGFyZ2UgbGlzdC4gICcKKyAgICAgICAgICAgICAnVG9cbicKKyAgICAgICAgICAgICAiICAgcmVtaW5kIHlvdSB0aGF0IHRoZXkgb3BlcmF0ZSBieSBzaWRlIGVmZmVjdCwgdGhleSBkb24ndCAiCisgICAgICAgICAgICAgJ3JldHVybiB0aGVcbicKKyAgICAgICAgICAgICAnICAgc29ydGVkIG9yIHJldmVyc2VkIGxpc3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc4LiBUaGUgInNvcnQoKSIgbWV0aG9kIHRha2VzIG9wdGlvbmFsIGFyZ3VtZW50cyBmb3IgY29udHJvbGxpbmcgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgY29tcGFyaXNvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqY21wKiBzcGVjaWZpZXMgYSBjdXN0b20gY29tcGFyaXNvbiBmdW5jdGlvbiBvZiB0d28gYXJndW1lbnRzICcKKyAgICAgICAgICAgICAnKGxpc3RcbicKKyAgICAgICAgICAgICAnICAgaXRlbXMpIHdoaWNoIHNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSwgemVybyBvciBwb3NpdGl2ZSAnCisgICAgICAgICAgICAgJ251bWJlclxuJworICAgICAgICAgICAgICcgICBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgZmlyc3QgYXJndW1lbnQgaXMgY29uc2lkZXJlZCBzbWFsbGVyICcKKyAgICAgICAgICAgICAndGhhbixcbicKKyAgICAgICAgICAgICAnICAgZXF1YWwgdG8sIG9yIGxhcmdlciB0aGFuIHRoZSBzZWNvbmQgYXJndW1lbnQ6ICJjbXA9bGFtYmRhICcKKyAgICAgICAgICAgICAneCx5OlxuJworICAgICAgICAgICAgICcgICBjbXAoeC5sb3dlcigpLCB5Lmxvd2VyKCkpIi4gIFRoZSBkZWZhdWx0IHZhbHVlIGlzICJOb25lIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgdG8gJworICAgICAgICAgICAgICdleHRyYWN0XG4nCisgICAgICAgICAgICAgJyAgIGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudDogImtleT1zdHIubG93ZXIiLiAgJworICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAnICAgZGVmYXVsdCB2YWx1ZSBpcyAiTm9uZSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqcmV2ZXJzZSogaXMgYSBib29sZWFuIHZhbHVlLiAgSWYgc2V0IHRvICJUcnVlIiwgdGhlbiB0aGUgJworICAgICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgICAgJyAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBJbiBnZW5lcmFsLCB0aGUgKmtleSogYW5kICpyZXZlcnNlKiBjb252ZXJzaW9uIHByb2Nlc3NlcyBhcmUgJworICAgICAgICAgICAgICdtdWNoXG4nCisgICAgICAgICAgICAgJyAgIGZhc3RlciB0aGFuIHNwZWNpZnlpbmcgYW4gZXF1aXZhbGVudCAqY21wKiBmdW5jdGlvbi4gIFRoaXMgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBiZWNhdXNlICpjbXAqIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBmb3IgZWFjaCBsaXN0IGVsZW1lbnQgJworICAgICAgICAgICAgICd3aGlsZVxuJworICAgICAgICAgICAgICcgICAqa2V5KiBhbmQgKnJldmVyc2UqIHRvdWNoIGVhY2ggZWxlbWVudCBvbmx5IG9uY2UuICBVc2VcbicKKyAgICAgICAgICAgICAnICAgImZ1bmN0b29scy5jbXBfdG9fa2V5KCkiIHRvIGNvbnZlcnQgYW4gb2xkLXN0eWxlICpjbXAqICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24gdG9cbicKKyAgICAgICAgICAgICAnICAgYSAqa2V5KiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFN1cHBvcnQgZm9yICJOb25lIiBhcyBhbiBlcXVpdmFsZW50ICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAnICAgb21pdHRpbmcgKmNtcCogd2FzIGFkZGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuNDogU3VwcG9ydCBmb3IgKmtleSogYW5kICpyZXZlcnNlKiB3YXMgJworICAgICAgICAgICAgICdhZGRlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzkuIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDIuMywgdGhlICJzb3J0KCkiIG1ldGhvZCBpcyBndWFyYW50ZWVkICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAnICAgYmUgc3RhYmxlLiAgQSBzb3J0IGlzIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdCBjb21wYXJlIGVxdWFsIC0tLSB0aGlzIGlzICcKKyAgICAgICAgICAgICAnaGVscGZ1bFxuJworICAgICAgICAgICAgICcgICBmb3Igc29ydGluZyBpbiBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5ICcKKyAgICAgICAgICAgICAnZGVwYXJ0bWVudCxcbicKKyAgICAgICAgICAgICAnICAgdGhlbiBieSBzYWxhcnkgZ3JhZGUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMTAuICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nXG4nCisgICAgICAgICAgICAgJyAgICBzb3J0ZWQsIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgIGxpc3QgaXMgdW5kZWZpbmVkLiAgVGhlIEMgaW1wbGVtZW50YXRpb24gb2YgUHl0aG9uIDIuMyBhbmQgJworICAgICAgICAgICAgICduZXdlclxuJworICAgICAgICAgICAgICcgICAgbWFrZXMgdGhlIGxpc3QgYXBwZWFyIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXNcbicKKyAgICAgICAgICAgICAnICAgICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gJworICAgICAgICAgICAgICdtdXRhdGVkXG4nCisgICAgICAgICAgICAgJyAgICBkdXJpbmcgYSBzb3J0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMTEuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IGltcGxlbWVudGluZ1xuJworICAgICAgICAgICAgICcgICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgdGhlXG4nCisgICAgICAgICAgICAgJyAgICBzZXF1ZW5jZS4gIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmVcbicKKyAgICAgICAgICAgICAnICAgIHJlZmVyZW5jZWQgbXVsdGlwbGUgdGltZXMsIGFzIGV4cGxhaW5lZCBmb3IgInMgKiBuIiB1bmRlciAnCisgICAgICAgICAgICAgJ1NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJyAgICBUeXBlcyAtLS0gc3RyLCB1bmljb2RlLCBsaXN0LCB0dXBsZSwgYnl0ZWFycmF5LCBidWZmZXIsICcKKyAgICAgICAgICAgICAneHJhbmdlLlxuJywKKyAndHlwZXNzZXEtbXV0YWJsZSc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdNdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0xpc3QgYW5kICJieXRlYXJyYXkiIG9iamVjdHMgc3VwcG9ydCBhZGRpdGlvbmFsICcKKyAgICAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIHRoYXQgYWxsb3dcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbi1wbGFjZSBtb2RpZmljYXRpb24gb2YgdGhlIG9iamVjdC4gT3RoZXIgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2UgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcod2hlbiBhZGRlZCB0byB0aGUgbGFuZ3VhZ2UpIHNob3VsZCBhbHNvIHN1cHBvcnQgdGhlc2UgJworICAgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnU3RyaW5ncyBhbmQgdHVwbGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXM6IHN1Y2ggJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdHMgY2Fubm90XG4nCisgICAgICAgICAgICAgICAgICAgICAnYmUgbW9kaWZpZWQgb25jZSBjcmVhdGVkLiBUaGUgZm9sbG93aW5nIG9wZXJhdGlvbnMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICdkZWZpbmVkIG9uXG4nCisgICAgICAgICAgICAgICAgICAgICAnbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyAod2hlcmUgKngqIGlzIGFuIGFyYml0cmFyeSAnCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0KTpcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXBsYWNlZCBieSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICcqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqICcKKyAgICAgICAgICAgICAgICAgICAgICd0byAqaiogaXMgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpdGVyYWJsZSAnCisgICAgICAgICAgICAgICAgICAgICAnKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImRlbCBzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAic1tpOmpdID0gJworICAgICAgICAgICAgICAgICAgICAgJ1tdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzW2k6ajprXSA9IHQiICAgICAgICAgICAgICAgICB8IHRoZSBlbGVtZW50cyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnInNbaTpqOmtdIiBhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnKnQqICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgJworICAgICAgICAgICAgICAgICAgICAgJ29mICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2xpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICAgICcic1tsZW4ocyk6bGVuKHMpXSA9IFt4XSIgfCAoMikgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuZXh0ZW5kKHQpIiBvciAicyArPSB0IiAgICAgIHwgZm9yIHRoZSBtb3N0IHBhcnQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdzYW1lIGFzICAgIHwgKDMpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gJworICAgICAgICAgICAgICAgICAgICAgJ3QiICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicyAqPSBuIiAgICAgICAgICAgICAgICAgICAgICAgfCB1cGRhdGVzICpzKiB3aXRoIGl0cyAnCisgICAgICAgICAgICAgICAgICAgICAnY29udGVudHMgICAgfCAoMTEpICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qICcKKyAgICAgICAgICAgICAgICAgICAgICd0aW1lcyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmNvdW50KHgpIiAgICAgICAgICAgICAgICAgICB8IHJldHVybiBudW1iZXIgb2YgJworICAgICAgICAgICAgICAgICAgICAgIippKidzIGZvciB3aGljaCB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4iCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpXSA9PSAnCisgICAgICAgICAgICAgICAgICAgICAneCIgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuaW5kZXgoeFssIGlbLCBqXV0pIiAgICAgICAgIHwgcmV0dXJuIHNtYWxsZXN0ICprKiAnCisgICAgICAgICAgICAgICAgICAgICAnc3VjaCB0aGF0ICAgIHwgKDQpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2tdID09IHgiIGFuZCAiaSA8PSAnCisgICAgICAgICAgICAgICAgICAgICAnayA8IGoiICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5pbnNlcnQoaSwgeCkiICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6aV0gPSAnCisgICAgICAgICAgICAgICAgICAgICAnW3hdIiAgICAgICAgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgc2FtZSBhcyAieCA9IHNbaV07ICcKKyAgICAgICAgICAgICAgICAgICAgICdkZWwgc1tpXTsgICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJldHVybiAnCisgICAgICAgICAgICAgICAgICAgICAneCIgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJkZWwgJworICAgICAgICAgICAgICAgICAgICAgJ3Nbcy5pbmRleCh4KV0iICAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICcqcyogaW4gICAgIHwgKDcpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuc29ydChbY21wWywga2V5WywgICAgICAgICAgIHwgc29ydCB0aGUgaXRlbXMgb2YgKnMqICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiBwbGFjZSAgIHwgKDcpKDgpKDkpKDEwKSAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IHJldmVyc2VdXV0pIiAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyAgJworICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2luZy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcyLiBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gaGFzIGhpc3RvcmljYWxseSAnCisgICAgICAgICAgICAgICAgICAgICAnYWNjZXB0ZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBtdWx0aXBsZSBwYXJhbWV0ZXJzIGFuZCBpbXBsaWNpdGx5IGpvaW5lZCB0aGVtIGludG8gYSAnCisgICAgICAgICAgICAgICAgICAgICAndHVwbGU7IHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBubyBsb25nZXIgd29ya3MgaW4gUHl0aG9uIDIuMC4gIFVzZSBvZiB0aGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdtaXNmZWF0dXJlIGhhcyBiZWVuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMS40LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzMuICp0KiBjYW4gYmUgYW55IGl0ZXJhYmxlIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc0LiBSYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouICcKKyAgICAgICAgICAgICAgICAgICAgICdXaGVuIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBuZWdhdGl2ZSBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIHNlY29uZCBvciB0aGlyZCAnCisgICAgICAgICAgICAgICAgICAgICAncGFyYW1ldGVyIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJpbmRleCgpIiBtZXRob2QsIHRoZSBsaXN0IGxlbmd0aCBpcyBhZGRlZCwgYXMgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdzbGljZSBpbmRpY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciBzbGljZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluZGljZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogUHJldmlvdXNseSwgImluZGV4KCkiIGRpZG5cJ3QgJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmUgYXJndW1lbnRzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZm9yIHNwZWNpZnlpbmcgc3RhcnQgYW5kIHN0b3AgcG9zaXRpb25zLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzUuIFdoZW4gYSBuZWdhdGl2ZSBpbmRleCBpcyBwYXNzZWQgYXMgdGhlIGZpcnN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJhbWV0ZXIgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgImluc2VydCgpIiBtZXRob2QsIHRoZSBsaXN0IGxlbmd0aCBpcyBhZGRlZCwgYXMgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdzbGljZSBpbmRpY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmIGl0IGlzIHN0aWxsIG5lZ2F0aXZlLCBpdCBpcyB0cnVuY2F0ZWQgdG8gemVybywgYXMgJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciBzbGljZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluZGljZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDIuMzogUHJldmlvdXNseSwgYWxsIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICAgICdpbmRpY2VzIHdlcmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0cnVuY2F0ZWQgdG8gemVyby5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc2LiBUaGUgInBvcCgpIiBtZXRob2RcJ3Mgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzICcKKyAgICAgICAgICAgICAgICAgICAgICd0byAiLTEiLCBzb1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgYnkgZGVmYXVsdCB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICdyZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICc3LiBUaGUgInNvcnQoKSIgYW5kICJyZXZlcnNlKCkiIG1ldGhvZHMgbW9kaWZ5IHRoZSBsaXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiBwbGFjZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGZvciBlY29ub215IG9mIHNwYWNlIHdoZW4gc29ydGluZyBvciByZXZlcnNpbmcgYSAnCisgICAgICAgICAgICAgICAgICAgICAnbGFyZ2UgbGlzdC4gIFRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgcmVtaW5kIHlvdSB0aGF0IHRoZXkgb3BlcmF0ZSBieSBzaWRlIGVmZmVjdCwgdGhleSAnCisgICAgICAgICAgICAgICAgICAgICAiZG9uJ3QgcmV0dXJuIHRoZVxuIgorICAgICAgICAgICAgICAgICAgICAgJyAgIHNvcnRlZCBvciByZXZlcnNlZCBsaXN0LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzguIFRoZSAic29ydCgpIiBtZXRob2QgdGFrZXMgb3B0aW9uYWwgYXJndW1lbnRzIGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnY29udHJvbGxpbmcgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY29tcGFyaXNvbnMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgKmNtcCogc3BlY2lmaWVzIGEgY3VzdG9tIGNvbXBhcmlzb24gZnVuY3Rpb24gb2YgdHdvICcKKyAgICAgICAgICAgICAgICAgICAgICdhcmd1bWVudHMgKGxpc3RcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpdGVtcykgd2hpY2ggc2hvdWxkIHJldHVybiBhIG5lZ2F0aXZlLCB6ZXJvIG9yICcKKyAgICAgICAgICAgICAgICAgICAgICdwb3NpdGl2ZSBudW1iZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgZmlyc3QgYXJndW1lbnQgaXMgY29uc2lkZXJlZCAnCisgICAgICAgICAgICAgICAgICAgICAnc21hbGxlciB0aGFuLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGVxdWFsIHRvLCBvciBsYXJnZXIgdGhhbiB0aGUgc2Vjb25kIGFyZ3VtZW50OiAnCisgICAgICAgICAgICAgICAgICAgICAnImNtcD1sYW1iZGEgeCx5OlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNtcCh4Lmxvd2VyKCksIHkubG93ZXIoKSkiLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgJworICAgICAgICAgICAgICAgICAgICAgJyJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAndXNlZCB0byBleHRyYWN0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYSBjb21wYXJpc29uIGtleSBmcm9tIGVhY2ggbGlzdCBlbGVtZW50OiAnCisgICAgICAgICAgICAgICAgICAgICAnImtleT1zdHIubG93ZXIiLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVmYXVsdCB2YWx1ZSBpcyAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byAiVHJ1ZSIsIHRoZW4gJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBsaXN0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZWxlbWVudHMgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSAnCisgICAgICAgICAgICAgICAgICAgICAncmV2ZXJzZWQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSW4gZ2VuZXJhbCwgdGhlICprZXkqIGFuZCAqcmV2ZXJzZSogY29udmVyc2lvbiAnCisgICAgICAgICAgICAgICAgICAgICAncHJvY2Vzc2VzIGFyZSBtdWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZmFzdGVyIHRoYW4gc3BlY2lmeWluZyBhbiBlcXVpdmFsZW50ICpjbXAqIGZ1bmN0aW9uLiAgJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBiZWNhdXNlICpjbXAqIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBmb3IgZWFjaCBsaXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdlbGVtZW50IHdoaWxlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgKmtleSogYW5kICpyZXZlcnNlKiB0b3VjaCBlYWNoIGVsZW1lbnQgb25seSBvbmNlLiAgJworICAgICAgICAgICAgICAgICAgICAgJ1VzZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJmdW5jdG9vbHMuY21wX3RvX2tleSgpIiB0byBjb252ZXJ0IGFuIG9sZC1zdHlsZSAnCisgICAgICAgICAgICAgICAgICAgICAnKmNtcCogZnVuY3Rpb24gdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBhICprZXkqIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAyLjM6IFN1cHBvcnQgZm9yICJOb25lIiBhcyBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG9taXR0aW5nICpjbXAqIHdhcyBhZGRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMi40OiBTdXBwb3J0IGZvciAqa2V5KiBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJypyZXZlcnNlKiB3YXMgYWRkZWQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnOS4gU3RhcnRpbmcgd2l0aCBQeXRob24gMi4zLCB0aGUgInNvcnQoKSIgbWV0aG9kIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdndWFyYW50ZWVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYmUgc3RhYmxlLiAgQSBzb3J0IGlzIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhbmdlIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gJworICAgICAgICAgICAgICAgICAgICAgJ3RoaXMgaXMgaGVscGZ1bFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGZvciBzb3J0aW5nIGluIG11bHRpcGxlIHBhc3NlcyAoZm9yIGV4YW1wbGUsIHNvcnQgYnkgJworICAgICAgICAgICAgICAgICAgICAgJ2RlcGFydG1lbnQsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhlbiBieSBzYWxhcnkgZ3JhZGUpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzEwLiAqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFdoaWxlIGEgbGlzdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnYmVpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgc29ydGVkLCB0aGUgZWZmZWN0IG9mIGF0dGVtcHRpbmcgdG8gbXV0YXRlLCBvciBldmVuICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnNwZWN0LCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgbGlzdCBpcyB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gJworICAgICAgICAgICAgICAgICAgICAgJzIuMyBhbmQgbmV3ZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgbWFrZXMgdGhlIGxpc3QgYXBwZWFyIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAncmFpc2VzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICJWYWx1ZUVycm9yIiBpZiBpdCBjYW4gZGV0ZWN0IHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgJ211dGF0ZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgZHVyaW5nIGEgc29ydC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcxMS4gVGhlIHZhbHVlICpuKiBpcyBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3QgJworICAgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAiX19pbmRleF9fKCkiLiAgWmVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIG9mICpuKiAnCisgICAgICAgICAgICAgICAgICAgICAnY2xlYXIgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHNlcXVlbmNlLiAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyAnCisgICAgICAgICAgICAgICAgICAgICAndGhleSBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcmVmZXJlbmNlZCBtdWx0aXBsZSB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iICcKKyAgICAgICAgICAgICAgICAgICAgICd1bmRlciBTZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBUeXBlcyAtLS0gc3RyLCB1bmljb2RlLCBsaXN0LCB0dXBsZSwgYnl0ZWFycmF5LCAnCisgICAgICAgICAgICAgICAgICAgICAnYnVmZmVyLCB4cmFuZ2UuXG4nLAorICd1bmFyeSc6ICdcbicKKyAgICAgICAgICAnVW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQWxsIHVuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAncHJpb3JpdHk6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB1X2V4cHIgOjo9IHBvd2VyIHwgIi0iIHVfZXhwciB8ICIrIiB1X2V4cHIgfCAifiIgdV9leHByXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgdW5hcnkgIi0iIChtaW51cykgb3BlcmF0b3IgeWllbGRzIHRoZSBuZWdhdGlvbiBvZiBpdHMgbnVtZXJpY1xuJworICAgICAgICAgICdhcmd1bWVudC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAiKyIgKHBsdXMpIG9wZXJhdG9yIHlpZWxkcyBpdHMgbnVtZXJpYyBhcmd1bWVudCAnCisgICAgICAgICAgJ3VuY2hhbmdlZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSB1bmFyeSAifiIgKGludmVydCkgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAnCisgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICdwbGFpbiBvciBsb25nIGludGVnZXIgYXJndW1lbnQuICBUaGUgYml0d2lzZSBpbnZlcnNpb24gb2YgIngiIGlzXG4nCisgICAgICAgICAgJ2RlZmluZWQgYXMgIi0oeCsxKSIuICBJdCBvbmx5IGFwcGxpZXMgdG8gaW50ZWdyYWwgbnVtYmVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0luIGFsbCB0aHJlZSBjYXNlcywgaWYgdGhlIGFyZ3VtZW50IGRvZXMgbm90IGhhdmUgdGhlIHByb3BlciB0eXBlLCAnCisgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAnIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCisgJ3doaWxlJzogJ1xuJworICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbicKKyAgICAgICAgICAnZXhwcmVzc2lvbiBpcyB0cnVlOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2ZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCAnCisgICAgICAgICAgJ3RpbWVcbicKKyAgICAgICAgICAnaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzICcKKyAgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICAnYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSAnCisgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyAnCisgICAgICAgICAgJ2JhY2tcbicKKyAgICAgICAgICAndG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicsCisgJ3dpdGgnOiAnXG4nCisgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDIuNS5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbicKKyAgICAgICAgICdtZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uIFdpdGggU3RhdGVtZW50XG4nCisgICAgICAgICAnQ29udGV4dCBNYW5hZ2VycykuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG4nCisgICAgICAgICAndXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuJworICAgICAgICAgJyAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbicKKyAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbicKKyAgICAgICAgICcgICBpcyBldmFsdWF0ZWQgdG8gb2J0YWluIGEgY29udGV4dCBtYW5hZ2VyLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICc0LiBJZiBhIHRhcmdldCB3YXMgaW5jbHVkZWQgaW4gdGhlICJ3aXRoIiBzdGF0ZW1lbnQsIHRoZSByZXR1cm5cbicKKyAgICAgICAgICcgICB2YWx1ZSBmcm9tICJfX2VudGVyX18oKSIgaXMgYXNzaWduZWQgdG8gaXQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgTm90ZTogVGhlICJ3aXRoIiBzdGF0ZW1lbnQgZ3VhcmFudGVlcyB0aGF0IGlmIHRoZSAiX19lbnRlcl9fKCkiXG4nCisgICAgICAgICAnICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuICJfX2V4aXRfXygpIiB3aWxsIGFsd2F5cyAnCisgICAgICAgICAnYmVcbicKKyAgICAgICAgICcgICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byB0aGVcbicKKyAgICAgICAgICcgICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4nCisgICAgICAgICAnICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJzUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICc2LiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBtZXRob2QgaXMgaW52b2tlZC4gSWYgYW5cbicKKyAgICAgICAgICcgICBleGNlcHRpb24gY2F1c2VkIHRoZSBzdWl0ZSB0byBiZSBleGl0ZWQsIGl0cyB0eXBlLCB2YWx1ZSwgYW5kXG4nCisgICAgICAgICAnICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCAnCisgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICcgICAiTm9uZSIgYXJndW1lbnRzIGFyZSBzdXBwbGllZC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiAnCisgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICcgICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAncmVyYWlzZWQuXG4nCisgICAgICAgICAnICAgSWYgdGhlIHJldHVybiB2YWx1ZSB3YXMgdHJ1ZSwgdGhlIGV4Y2VwdGlvbiBpcyBzdXBwcmVzc2VkLCBhbmRcbicKKyAgICAgICAgICcgICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICJ3aXRoIlxuJworICAgICAgICAgJyAgIHN0YXRlbWVudC5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgJworICAgICAgICAgJ3RoZVxuJworICAgICAgICAgJyAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uICcKKyAgICAgICAgICdwcm9jZWVkc1xuJworICAgICAgICAgJyAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbicKKyAgICAgICAgICdtdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgc3VpdGVcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgd2l0aCBBKCkgYXMgYTpcbicKKyAgICAgICAgICcgICAgICAgd2l0aCBCKCkgYXMgYjpcbicKKyAgICAgICAgICcgICAgICAgICAgIHN1aXRlXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnTm90ZTogSW4gUHl0aG9uIDIuNSwgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgb25seSBhbGxvd2VkIHdoZW4gdGhlXG4nCisgICAgICAgICAnICAid2l0aF9zdGF0ZW1lbnQiIGZlYXR1cmUgaGFzIGJlZW4gZW5hYmxlZC4gIEl0IGlzIGFsd2F5cyBlbmFibGVkICcKKyAgICAgICAgICdpblxuJworICAgICAgICAgJyAgUHl0aG9uIDIuNi5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMi43OiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAnCisgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nLAorICd5aWVsZCc6ICdcbicKKyAgICAgICAgICAnVGhlICJ5aWVsZCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgeWllbGRfc3RtdCA6Oj0geWllbGRfZXhwcmVzc2lvblxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlICJ5aWVsZCIgc3RhdGVtZW50IGlzIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGEgZ2VuZXJhdG9yICcKKyAgICAgICAgICAnZnVuY3Rpb24sXG4nCisgICAgICAgICAgJ2FuZCBpcyBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvciBmdW5jdGlvbi4gVXNpbmcgYVxuJworICAgICAgICAgICcieWllbGQiIHN0YXRlbWVudCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0byBjYXVzZSAnCisgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAnZGVmaW5pdGlvbiB0byBjcmVhdGUgYSBnZW5lcmF0b3IgZnVuY3Rpb24gaW5zdGVhZCBvZiBhIG5vcm1hbFxuJworICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1doZW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24gaXMgY2FsbGVkLCBpdCByZXR1cm5zIGFuIGl0ZXJhdG9yIGtub3duICcKKyAgICAgICAgICAnYXMgYVxuJworICAgICAgICAgICdnZW5lcmF0b3IgaXRlcmF0b3IsIG9yIG1vcmUgY29tbW9ubHksIGEgZ2VuZXJhdG9yLiAgVGhlIGJvZHkgb2YgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAiZ2VuZXJhdG9yIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGJ5IGNhbGxpbmcgdGhlIGdlbmVyYXRvcidzICIKKyAgICAgICAgICAnIm5leHQoKSJcbicKKyAgICAgICAgICAnbWV0aG9kIHJlcGVhdGVkbHkgdW50aWwgaXQgcmFpc2VzIGFuIGV4Y2VwdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1doZW4gYSAieWllbGQiIHN0YXRlbWVudCBpcyBleGVjdXRlZCwgdGhlIHN0YXRlIG9mIHRoZSBnZW5lcmF0b3IgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICdmcm96ZW4gYW5kIHRoZSB2YWx1ZSBvZiAiZXhwcmVzc2lvbl9saXN0IiBpcyByZXR1cm5lZCB0byAnCisgICAgICAgICAgJyJuZXh0KCkiXCdzXG4nCisgICAgICAgICAgJ2NhbGxlci4gIEJ5ICJmcm96ZW4iIHdlIG1lYW4gdGhhdCBhbGwgbG9jYWwgc3RhdGUgaXMgcmV0YWluZWQsXG4nCisgICAgICAgICAgJ2luY2x1ZGluZyB0aGUgY3VycmVudCBiaW5kaW5ncyBvZiBsb2NhbCB2YXJpYWJsZXMsIHRoZSBpbnN0cnVjdGlvblxuJworICAgICAgICAgICdwb2ludGVyLCBhbmQgdGhlIGludGVybmFsIGV2YWx1YXRpb24gc3RhY2s6IGVub3VnaCBpbmZvcm1hdGlvbiBpc1xuJworICAgICAgICAgICdzYXZlZCBzbyB0aGF0IHRoZSBuZXh0IHRpbWUgIm5leHQoKSIgaXMgaW52b2tlZCwgdGhlIGZ1bmN0aW9uIGNhblxuJworICAgICAgICAgICdwcm9jZWVkIGV4YWN0bHkgYXMgaWYgdGhlICJ5aWVsZCIgc3RhdGVtZW50IHdlcmUganVzdCBhbm90aGVyICcKKyAgICAgICAgICAnZXh0ZXJuYWxcbicKKyAgICAgICAgICAnY2FsbC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0FzIG9mIFB5dGhvbiB2ZXJzaW9uIDIuNSwgdGhlICJ5aWVsZCIgc3RhdGVtZW50IGlzIG5vdyBhbGxvd2VkIGluICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyJ0cnkiIGNsYXVzZSBvZiBhICJ0cnkiIC4uLiAgImZpbmFsbHkiIGNvbnN0cnVjdC4gIElmIHRoZSBnZW5lcmF0b3IgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICdub3QgcmVzdW1lZCBiZWZvcmUgaXQgaXMgZmluYWxpemVkIChieSByZWFjaGluZyBhIHplcm8gcmVmZXJlbmNlICcKKyAgICAgICAgICAnY291bnRcbicKKyAgICAgICAgICAib3IgYnkgYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQpLCB0aGUgZ2VuZXJhdG9yLWl0ZXJhdG9yJ3MgIgorICAgICAgICAgICciY2xvc2UoKSJcbicKKyAgICAgICAgICAnbWV0aG9kIHdpbGwgYmUgY2FsbGVkLCBhbGxvd2luZyBhbnkgcGVuZGluZyAiZmluYWxseSIgY2xhdXNlcyB0b1xuJworICAgICAgICAgICdleGVjdXRlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnRm9yIGZ1bGwgZGV0YWlscyBvZiAieWllbGQiIHNlbWFudGljcywgcmVmZXIgdG8gdGhlIFlpZWxkICcKKyAgICAgICAgICAnZXhwcmVzc2lvbnNcbicKKyAgICAgICAgICAnc2VjdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ05vdGU6IEluIFB5dGhvbiAyLjIsIHRoZSAieWllbGQiIHN0YXRlbWVudCB3YXMgb25seSBhbGxvd2VkIHdoZW4gJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAiZ2VuZXJhdG9ycyIgZmVhdHVyZSBoYXMgYmVlbiBlbmFibGVkLiAgVGhpcyAiX19mdXR1cmVfXyIgaW1wb3J0XG4nCisgICAgICAgICAgJyAgc3RhdGVtZW50IHdhcyB1c2VkIHRvIGVuYWJsZSB0aGUgZmVhdHVyZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBnZW5lcmF0b3JzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgKipQRVAgMjU1KiogLSBTaW1wbGUgR2VuZXJhdG9yc1xuJworICAgICAgICAgICcgICAgIFRoZSBwcm9wb3NhbCBmb3IgYWRkaW5nIGdlbmVyYXRvcnMgYW5kIHRoZSAieWllbGQiIHN0YXRlbWVudCAnCisgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgJyAgICAgUHl0aG9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAqKlBFUCAzNDIqKiAtIENvcm91dGluZXMgdmlhIEVuaGFuY2VkIEdlbmVyYXRvcnNcbicKKyAgICAgICAgICAnICAgICBUaGUgcHJvcG9zYWwgdGhhdCwgYW1vbmcgb3RoZXIgZ2VuZXJhdG9yIGVuaGFuY2VtZW50cywgJworICAgICAgICAgICdwcm9wb3NlZFxuJworICAgICAgICAgICcgICAgIGFsbG93aW5nICJ5aWVsZCIgdG8gYXBwZWFyIGluc2lkZSBhICJ0cnkiIC4uLiAiZmluYWxseSIgJworICAgICAgICAgICdibG9jay5cbid9CmRpZmYgLS1naXQgYS9MaWIvcmFuZG9tLnB5IGIvTGliL3JhbmRvbS5weQppbmRleCAzZjk2YTM3Li4xMWZkMzViIDEwMDY0NAotLS0gYS9MaWIvcmFuZG9tLnB5CisrKyBiL0xpYi9yYW5kb20ucHkKQEAgLTk4LDEyICs5OCwxNCBAQAogICAgICAgICBzZWxmLmdhdXNzX25leHQgPSBOb25lCiAKICAgICBkZWYgc2VlZChzZWxmLCBhPU5vbmUpOgotICAgICAgICAiIiJJbml0aWFsaXplIGludGVybmFsIHN0YXRlIGZyb20gaGFzaGFibGUgb2JqZWN0LgorICAgICAgICAiIiJJbml0aWFsaXplIGludGVybmFsIHN0YXRlIG9mIHRoZSByYW5kb20gbnVtYmVyIGdlbmVyYXRvci4KIAogICAgICAgICBOb25lIG9yIG5vIGFyZ3VtZW50IHNlZWRzIGZyb20gY3VycmVudCB0aW1lIG9yIGZyb20gYW4gb3BlcmF0aW5nCiAgICAgICAgIHN5c3RlbSBzcGVjaWZpYyByYW5kb21uZXNzIHNvdXJjZSBpZiBhdmFpbGFibGUuCiAKLSAgICAgICAgSWYgYSBpcyBub3QgTm9uZSBvciBhbiBpbnQgb3IgbG9uZywgaGFzaChhKSBpcyB1c2VkIGluc3RlYWQuCisgICAgICAgIElmIGEgaXMgbm90IE5vbmUgb3IgaXMgYW4gaW50IG9yIGxvbmcsIGhhc2goYSkgaXMgdXNlZCBpbnN0ZWFkLgorICAgICAgICBIYXNoIHZhbHVlcyBmb3Igc29tZSB0eXBlcyBhcmUgbm9uZGV0ZXJtaW5pc3RpYyB3aGVuIHRoZQorICAgICAgICBQWVRIT05IQVNIU0VFRCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBlbmFibGVkLgogICAgICAgICAiIiIKIAogICAgICAgICBpZiBhIGlzIE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvcm9ib3RwYXJzZXIucHkgYi9MaWIvcm9ib3RwYXJzZXIucHkKaW5kZXggYTcxMzdhMy4uNGUxM2Y3ZiAxMDA2NDQKLS0tIGEvTGliL3JvYm90cGFyc2VyLnB5CisrKyBiL0xpYi9yb2JvdHBhcnNlci5weQpAQCAtMTYwLDcgKzE2MCwxMCBAQAogCiAKICAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4oW3N0cihlbnRyeSkgKyAiXG4iIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXNdKQorICAgICAgICBlbnRyaWVzID0gc2VsZi5lbnRyaWVzCisgICAgICAgIGlmIHNlbGYuZGVmYXVsdF9lbnRyeSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGVudHJpZXMgPSBlbnRyaWVzICsgW3NlbGYuZGVmYXVsdF9lbnRyeV0KKyAgICAgICAgcmV0dXJuICdcbicuam9pbihtYXAoc3RyLCBlbnRyaWVzKSkgKyAnXG4nCiAKIAogY2xhc3MgUnVsZUxpbmU6CmRpZmYgLS1naXQgYS9MaWIvc2h1dGlsLnB5IGIvTGliL3NodXRpbC5weQppbmRleCAzODg5MDZmLi4wYWIxYTA2IDEwMDY0NAotLS0gYS9MaWIvc2h1dGlsLnB5CisrKyBiL0xpYi9zaHV0aWwucHkKQEAgLTEzLDYgKzEzLDIwIEBACiBpbXBvcnQgZXJybm8KIAogdHJ5OgorICAgIGltcG9ydCB6bGliCisgICAgZGVsIHpsaWIKKyAgICBfWkxJQl9TVVBQT1JURUQgPSBUcnVlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX1pMSUJfU1VQUE9SVEVEID0gRmFsc2UKKwordHJ5OgorICAgIGltcG9ydCBiejIKKyAgICBkZWwgYnoyCisgICAgX0JaMl9TVVBQT1JURUQgPSBUcnVlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX0JaMl9TVVBQT1JURUQgPSBGYWxzZQorCit0cnk6CiAgICAgZnJvbSBwd2QgaW1wb3J0IGdldHB3bmFtCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZ2V0cHduYW0gPSBOb25lCkBAIC0zNTEsMTUgKzM2NSwxOCBAQAogCiAgICAgUmV0dXJucyB0aGUgb3V0cHV0IGZpbGVuYW1lLgogICAgICIiIgotICAgIHRhcl9jb21wcmVzc2lvbiA9IHsnZ3ppcCc6ICdneicsICdiemlwMic6ICdiejInLCBOb25lOiAnJ30KLSAgICBjb21wcmVzc19leHQgPSB7J2d6aXAnOiAnLmd6JywgJ2J6aXAyJzogJy5iejInfQorICAgIGlmIGNvbXByZXNzIGlzIE5vbmU6CisgICAgICAgIHRhcl9jb21wcmVzc2lvbiA9ICcnCisgICAgZWxpZiBfWkxJQl9TVVBQT1JURUQgYW5kIGNvbXByZXNzID09ICdnemlwJzoKKyAgICAgICAgdGFyX2NvbXByZXNzaW9uID0gJ2d6JworICAgIGVsaWYgX0JaMl9TVVBQT1JURUQgYW5kIGNvbXByZXNzID09ICdiemlwMic6CisgICAgICAgIHRhcl9jb21wcmVzc2lvbiA9ICdiejInCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYmFkIHZhbHVlIGZvciAnY29tcHJlc3MnLCBvciBjb21wcmVzc2lvbiBmb3JtYXQgbm90ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydGVkIDogezB9Ii5mb3JtYXQoY29tcHJlc3MpKQogCi0gICAgIyBmbGFncyBmb3IgY29tcHJlc3Npb24gcHJvZ3JhbSwgZWFjaCBlbGVtZW50IG9mIGxpc3Qgd2lsbCBiZSBhbiBhcmd1bWVudAotICAgIGlmIGNvbXByZXNzIGlzIG5vdCBOb25lIGFuZCBjb21wcmVzcyBub3QgaW4gY29tcHJlc3NfZXh0LmtleXMoKToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvciwgXAotICAgICAgICAgICAgICAoImJhZCB2YWx1ZSBmb3IgJ2NvbXByZXNzJzogbXVzdCBiZSBOb25lLCAnZ3ppcCcgb3IgJ2J6aXAyJyIpCi0KLSAgICBhcmNoaXZlX25hbWUgPSBiYXNlX25hbWUgKyAnLnRhcicgKyBjb21wcmVzc19leHQuZ2V0KGNvbXByZXNzLCAnJykKKyAgICBjb21wcmVzc19leHQgPSAnLicgKyB0YXJfY29tcHJlc3Npb24gaWYgY29tcHJlc3MgZWxzZSAnJworICAgIGFyY2hpdmVfbmFtZSA9IGJhc2VfbmFtZSArICcudGFyJyArIGNvbXByZXNzX2V4dAogICAgIGFyY2hpdmVfZGlyID0gb3MucGF0aC5kaXJuYW1lKGFyY2hpdmVfbmFtZSkKIAogICAgIGlmIGFyY2hpdmVfZGlyIGFuZCBub3Qgb3MucGF0aC5leGlzdHMoYXJjaGl2ZV9kaXIpOgpAQCAtMzg4LDcgKzQwNSw3IEBACiAgICAgICAgIHJldHVybiB0YXJpbmZvCiAKICAgICBpZiBub3QgZHJ5X3J1bjoKLSAgICAgICAgdGFyID0gdGFyZmlsZS5vcGVuKGFyY2hpdmVfbmFtZSwgJ3d8JXMnICUgdGFyX2NvbXByZXNzaW9uW2NvbXByZXNzXSkKKyAgICAgICAgdGFyID0gdGFyZmlsZS5vcGVuKGFyY2hpdmVfbmFtZSwgJ3d8JXMnICUgdGFyX2NvbXByZXNzaW9uKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0YXIuYWRkKGJhc2VfZGlyLCBmaWx0ZXI9X3NldF91aWRfZ2lkKQogICAgICAgICBmaW5hbGx5OgpAQCAtMzk2LDE3ICs0MTMsMjEgQEAKIAogICAgIHJldHVybiBhcmNoaXZlX25hbWUKIAotZGVmIF9jYWxsX2V4dGVybmFsX3ppcChiYXNlX2RpciwgemlwX2ZpbGVuYW1lLCB2ZXJib3NlPUZhbHNlLCBkcnlfcnVuPUZhbHNlKToKK2RlZiBfY2FsbF9leHRlcm5hbF96aXAoYmFzZV9kaXIsIHppcF9maWxlbmFtZSwgdmVyYm9zZSwgZHJ5X3J1biwgbG9nZ2VyKToKICAgICAjIFhYWCBzZWUgaWYgd2Ugd2FudCB0byBrZWVwIGFuIGV4dGVybmFsIGNhbGwgaGVyZQogICAgIGlmIHZlcmJvc2U6CiAgICAgICAgIHppcG9wdGlvbnMgPSAiLXIiCiAgICAgZWxzZToKICAgICAgICAgemlwb3B0aW9ucyA9ICItcnEiCi0gICAgZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNFeGVjRXJyb3IKLSAgICBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24KKyAgICBjbWQgPSBbInppcCIsIHppcG9wdGlvbnMsIHppcF9maWxlbmFtZSwgYmFzZV9kaXJdCisgICAgaWYgbG9nZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICBsb2dnZXIuaW5mbygnICcuam9pbihjbWQpKQorICAgIGlmIGRyeV9ydW46CisgICAgICAgIHJldHVybgorICAgIGltcG9ydCBzdWJwcm9jZXNzCiAgICAgdHJ5OgotICAgICAgICBzcGF3bihbInppcCIsIHppcG9wdGlvbnMsIHppcF9maWxlbmFtZSwgYmFzZV9kaXJdLCBkcnlfcnVuPWRyeV9ydW4pCi0gICAgZXhjZXB0IERpc3R1dGlsc0V4ZWNFcnJvcjoKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCkKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CiAgICAgICAgICMgWFhYIHJlYWxseSBzaG91bGQgZGlzdGluZ3Vpc2ggYmV0d2VlbiAiY291bGRuJ3QgZmluZAogICAgICAgICAjIGV4dGVybmFsICd6aXAnIGNvbW1hbmQiIGFuZCAiemlwIGZhaWxlZCIuCiAgICAgICAgIHJhaXNlIEV4ZWNFcnJvciwgXApAQCAtNDM1LDEyICs0NTYsMTMgQEAKICAgICAjIElmIHppcGZpbGUgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUsIHRyeSBzcGF3bmluZyBhbiBleHRlcm5hbCAnemlwJwogICAgICMgY29tbWFuZC4KICAgICB0cnk6CisgICAgICAgIGltcG9ydCB6bGliCiAgICAgICAgIGltcG9ydCB6aXBmaWxlCiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICB6aXBmaWxlID0gTm9uZQogCiAgICAgaWYgemlwZmlsZSBpcyBOb25lOgotICAgICAgICBfY2FsbF9leHRlcm5hbF96aXAoYmFzZV9kaXIsIHppcF9maWxlbmFtZSwgdmVyYm9zZSwgZHJ5X3J1bikKKyAgICAgICAgX2NhbGxfZXh0ZXJuYWxfemlwKGJhc2VfZGlyLCB6aXBfZmlsZW5hbWUsIHZlcmJvc2UsIGRyeV9ydW4sIGxvZ2dlcikKICAgICBlbHNlOgogICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBsb2dnZXIuaW5mbygiY3JlYXRpbmcgJyVzJyBhbmQgYWRkaW5nICclcycgdG8gaXQiLApAQCAtNDcwLDExICs0OTIsMTcgQEAKICAgICByZXR1cm4gemlwX2ZpbGVuYW1lCiAKIF9BUkNISVZFX0ZPUk1BVFMgPSB7Ci0gICAgJ2d6dGFyJzogKF9tYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ2d6aXAnKV0sICJnemlwJ2VkIHRhci1maWxlIiksCi0gICAgJ2J6dGFyJzogKF9tYWtlX3RhcmJhbGwsIFsoJ2NvbXByZXNzJywgJ2J6aXAyJyldLCAiYnppcDInZWQgdGFyLWZpbGUiKSwKICAgICAndGFyJzogICAoX21ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCBOb25lKV0sICJ1bmNvbXByZXNzZWQgdGFyIGZpbGUiKSwKLSAgICAnemlwJzogICAoX21ha2VfemlwZmlsZSwgW10sIlpJUCBmaWxlIikKLSAgICB9CisgICAgJ3ppcCc6ICAgKF9tYWtlX3ppcGZpbGUsIFtdLCAiWklQIGZpbGUiKQorfQorCitpZiBfWkxJQl9TVVBQT1JURUQ6CisgICAgX0FSQ0hJVkVfRk9STUFUU1snZ3p0YXInXSA9IChfbWFrZV90YXJiYWxsLCBbKCdjb21wcmVzcycsICdnemlwJyldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3ppcCdlZCB0YXItZmlsZSIpCisKK2lmIF9CWjJfU1VQUE9SVEVEOgorICAgIF9BUkNISVZFX0ZPUk1BVFNbJ2J6dGFyJ10gPSAoX21ha2VfdGFyYmFsbCwgWygnY29tcHJlc3MnLCAnYnppcDInKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiemlwMidlZCB0YXItZmlsZSIpCiAKIGRlZiBnZXRfYXJjaGl2ZV9mb3JtYXRzKCk6CiAgICAgIiIiUmV0dXJucyBhIGxpc3Qgb2Ygc3VwcG9ydGVkIGZvcm1hdHMgZm9yIGFyY2hpdmluZyBhbmQgdW5hcmNoaXZpbmcuCkBAIC01MTUsOCArNTQzLDggQEAKICAgICAiIiJDcmVhdGUgYW4gYXJjaGl2ZSBmaWxlIChlZy4gemlwIG9yIHRhcikuCiAKICAgICAnYmFzZV9uYW1lJyBpcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBjcmVhdGUsIG1pbnVzIGFueSBmb3JtYXQtc3BlY2lmaWMKLSAgICBleHRlbnNpb247ICdmb3JtYXQnIGlzIHRoZSBhcmNoaXZlIGZvcm1hdDogb25lIG9mICJ6aXAiLCAidGFyIiwgImJ6dGFyIgotICAgIG9yICJnenRhciIuCisgICAgZXh0ZW5zaW9uOyAnZm9ybWF0JyBpcyB0aGUgYXJjaGl2ZSBmb3JtYXQ6IG9uZSBvZiAiemlwIiwgInRhciIsICJnenRhciIsCisgICAgb3IgImJ6dGFyIi4gIE9yIGFueSBvdGhlciByZWdpc3RlcmVkIGZvcm1hdC4KIAogICAgICdyb290X2RpcicgaXMgYSBkaXJlY3RvcnkgdGhhdCB3aWxsIGJlIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUKICAgICBhcmNoaXZlOyBpZS4gd2UgdHlwaWNhbGx5IGNoZGlyIGludG8gJ3Jvb3RfZGlyJyBiZWZvcmUgY3JlYXRpbmcgdGhlCmRpZmYgLS1naXQgYS9MaWIvc210cGxpYi5weSBiL0xpYi9zbXRwbGliLnB5CmluZGV4IGUxNjUxYzAuLjBjNjEwNjUgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwbGliLnB5CisrKyBiL0xpYi9zbXRwbGliLnB5CkBAIC0yNTUsNiArMjU1LDcgQEAKICAgICAgICAgaWYgaG9zdDoKICAgICAgICAgICAgIChjb2RlLCBtc2cpID0gc2VsZi5jb25uZWN0KGhvc3QsIHBvcnQpCiAgICAgICAgICAgICBpZiBjb2RlICE9IDIyMDoKKyAgICAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKICAgICAgICAgICAgICAgICByYWlzZSBTTVRQQ29ubmVjdEVycm9yKGNvZGUsIG1zZykKICAgICAgICAgaWYgbG9jYWxfaG9zdG5hbWUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLmxvY2FsX2hvc3RuYW1lID0gbG9jYWxfaG9zdG5hbWUKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvcmVncmVzc2lvbi5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvcmVncmVzc2lvbi5weQppbmRleCAzNmZlYzU5Li43ZWVhYzMyIDEwMDY0NAotLS0gYS9MaWIvc3FsaXRlMy90ZXN0L3JlZ3Jlc3Npb24ucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9yZWdyZXNzaW9uLnB5CkBAIC0yNCw2ICsyNCw4IEBACiBpbXBvcnQgZGF0ZXRpbWUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHNxbGl0ZTMgYXMgc3FsaXRlCitpbXBvcnQgd2Vha3JlZgorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIGNsYXNzIFJlZ3Jlc3Npb25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTc1LDYgKzE3Nyw5IEBACiAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGV4Y2VwdDoKICAgICAgICAgICAgIHNlbGYuZmFpbCgic2hvdWxkIGhhdmUgcmFpc2VkIFByb2dyYW1taW5nRXJyb3IiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKHNxbGl0ZS5Qcm9ncmFtbWluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXkJhc2UgQ3Vyc29yXC5fX2luaXRfXyBub3QgY2FsbGVkXC4kJyk6CisgICAgICAgICAgICBjdXIuY2xvc2UoKQogCiAgICAgZGVmIENoZWNrQ29ubmVjdGlvbkNvbnN0cnVjdG9yQ2FsbENoZWNrKHNlbGYpOgogICAgICAgICAiIiIKQEAgLTM1OCw2ICszNjMsMjIgQEAKICAgICAgICAgICAgIGNvdW50ZXIgKz0gMQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50ZXIsIDMsICJzaG91bGQgaGF2ZSByZXR1cm5lZCBleGFjdGx5IHRocmVlIHJvd3MiKQogCisgICAgZGVmIENoZWNrQnBvMzE3NzAoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUaGUgaW50ZXJwcmV0ZXIgc2hvdWxkbid0IGNyYXNoIGluIGNhc2UgQ3Vyc29yLl9faW5pdF9fKCkgaXMgY2FsbGVkCisgICAgICAgIG1vcmUgdGhhbiBvbmNlLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIGNhbGxiYWNrKCphcmdzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKKyAgICAgICAgY3VyID0gc3FsaXRlLkN1cnNvcihjb24pCisgICAgICAgIHJlZiA9IHdlYWtyZWYucmVmKGN1ciwgY2FsbGJhY2spCisgICAgICAgIGN1ci5fX2luaXRfXyhjb24pCisgICAgICAgIGRlbCBjdXIKKyAgICAgICAgIyBUaGUgaW50ZXJwcmV0ZXIgc2hvdWxkbid0IGNyYXNoIHdoZW4gcmVmIGlzIGNvbGxlY3RlZC4KKyAgICAgICAgZGVsIHJlZgorICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorCiAKIGRlZiBzdWl0ZSgpOgogICAgIHJlZ3Jlc3Npb25fc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoUmVncmVzc2lvblRlc3RzLCAiQ2hlY2siKQpkaWZmIC0tZ2l0IGEvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weSBiL0xpYi9zcWxpdGUzL3Rlc3QvdHlwZXMucHkKaW5kZXggYTMxNDQ2ZS4uZmRjMjFhZSAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC90eXBlcy5weQorKysgYi9MaWIvc3FsaXRlMy90ZXN0L3R5cGVzLnB5CkBAIC0zODMsOCArMzgzLDcgQEAKICAgICAgICAgaWYgc3FsaXRlLnNxbGl0ZV92ZXJzaW9uX2luZm8gPCAoMywgMSk6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAjIFNRTGl0ZSdzIGN1cnJlbnRfdGltZXN0YW1wIHVzZXMgVVRDIHRpbWUsIHdoaWxlIGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpIHVzZXMgbG9jYWwgdGltZS4KLSAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkKKyAgICAgICAgbm93ID0gZGF0ZXRpbWUuZGF0ZXRpbWUudXRjbm93KCkKICAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdCh0cykgdmFsdWVzIChjdXJyZW50X3RpbWVzdGFtcCkiKQogICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJzZWxlY3QgdHMgZnJvbSB0ZXN0IikKICAgICAgICAgdHMgPSBzZWxmLmN1ci5mZXRjaG9uZSgpWzBdCmRpZmYgLS1naXQgYS9MaWIvc3JlX2NvbXBpbGUucHkgYi9MaWIvc3JlX2NvbXBpbGUucHkKaW5kZXggYzVhN2U4OS4uYjY2ODlmYSAxMDA2NDQKLS0tIGEvTGliL3NyZV9jb21waWxlLnB5CisrKyBiL0xpYi9zcmVfY29tcGlsZS5weQpAQCAtNDM1LDcgKzQzNSw3IEBACiAgICAgIyB0aGlzIGNvbnRhaW5zIG1pbi9tYXggcGF0dGVybiB3aWR0aCwgYW5kIGFuIG9wdGlvbmFsIGxpdGVyYWwKICAgICAjIHByZWZpeCBvciBhIGNoYXJhY3RlciBtYXAKICAgICBsbywgaGkgPSBwYXR0ZXJuLmdldHdpZHRoKCkKLSAgICBpZiBsbyA9PSAwOgorICAgIGlmIG5vdCBsbyBhbmQgaGk6CiAgICAgICAgIHJldHVybiAjIG5vdCB3b3J0aCBpdAogICAgICMgbG9vayBmb3IgYSBsaXRlcmFsIHByZWZpeAogICAgIHByZWZpeCA9IFtdCmRpZmYgLS1naXQgYS9MaWIvc3JlX3BhcnNlLnB5IGIvTGliL3NyZV9wYXJzZS5weQppbmRleCA3NWY0ODhiLi4zZjZkZGQyIDEwMDY0NAotLS0gYS9MaWIvc3JlX3BhcnNlLnB5CisrKyBiL0xpYi9zcmVfcGFyc2UucHkKQEAgLTIzLDYgKzIzLDcgQEAKIAogT0NURElHSVRTID0gc2V0KCIwMTIzNDU2NyIpCiBIRVhESUdJVFMgPSBzZXQoIjAxMjM0NTY3ODlhYmNkZWZBQkNERUYiKQorQVNDSUlMRVRURVJTID0gc2V0KCJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIikKIAogV0hJVEVTUEFDRSA9IHNldCgiIFx0XG5cclx2XGYiKQogCkBAIC0yMzMsNyArMjM0LDcgQEAKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgIHJldHVybiBUcnVlCiAKLWRlZiBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgZXNjYXBlKToKK2RlZiBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgZXNjYXBlLCBuZXN0ZWQpOgogICAgICMgaGFuZGxlIGVzY2FwZSBjb2RlIGluc2lkZSBjaGFyYWN0ZXIgY2xhc3MKICAgICBjb2RlID0gRVNDQVBFUy5nZXQoZXNjYXBlKQogICAgIGlmIGNvZGU6CkBAIC0yNjAsMTIgKzI2MSwyMSBAQAogICAgICAgICBlbGlmIGMgaW4gRElHSVRTOgogICAgICAgICAgICAgcmFpc2UgZXJyb3IsICJib2d1cyBlc2NhcGU6ICVzIiAlIHJlcHIoZXNjYXBlKQogICAgICAgICBpZiBsZW4oZXNjYXBlKSA9PSAyOgorICAgICAgICAgICAgaWYgc3lzLnB5M2t3YXJuaW5nIGFuZCBjIGluIEFTQ0lJTEVUVEVSUzoKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICBpZiBjIGluICdVdSc6CisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXM7IFVuaWNvZGUgZXNjYXBlcyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzdXBwb3J0ZWQgb25seSBzaW5jZSBQeXRob24gMy4zJyAlIGVzY2FwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGdXR1cmVXYXJuaW5nLCBzdGFja2xldmVsPW5lc3RlZCArIDYpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybnB5M2soJ2JhZCBlc2NhcGUgJXMnICUgZXNjYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9bmVzdGVkICsgNikKICAgICAgICAgICAgIHJldHVybiBMSVRFUkFMLCBvcmQoZXNjYXBlWzFdKQogICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgogICAgICAgICBwYXNzCiAgICAgcmFpc2UgZXJyb3IsICJib2d1cyBlc2NhcGU6ICVzIiAlIHJlcHIoZXNjYXBlKQogCi1kZWYgX2VzY2FwZShzb3VyY2UsIGVzY2FwZSwgc3RhdGUpOgorZGVmIF9lc2NhcGUoc291cmNlLCBlc2NhcGUsIHN0YXRlLCBuZXN0ZWQpOgogICAgICMgaGFuZGxlIGVzY2FwZSBjb2RlIGluIGV4cHJlc3Npb24KICAgICBjb2RlID0gQ0FURUdPUklFUy5nZXQoZXNjYXBlKQogICAgIGlmIGNvZGU6CkBAIC0zMDUsMjMgKzMxNSwzMiBAQAogICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignZ3JvdXAgcmVmZXJlbmNlcyBpbiBsb29rYmVoaW5kICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXJ0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcsIHN0YWNrbGV2ZWw9bmVzdGVkICsgNikKICAgICAgICAgICAgICAgICByZXR1cm4gR1JPVVBSRUYsIGdyb3VwCiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgIGlmIGxlbihlc2NhcGUpID09IDI6CisgICAgICAgICAgICBpZiBzeXMucHkza3dhcm5pbmcgYW5kIGMgaW4gQVNDSUlMRVRURVJTOgorICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgICAgIGlmIGMgaW4gJ1V1JzoKKyAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlczsgVW5pY29kZSBlc2NhcGVzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRlZCBvbmx5IHNpbmNlIFB5dGhvbiAzLjMnICUgZXNjYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1dHVyZVdhcm5pbmcsIHN0YWNrbGV2ZWw9bmVzdGVkICsgNikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJucHkzaygnYmFkIGVzY2FwZSAlcycgJSBlc2NhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD1uZXN0ZWQgKyA2KQogICAgICAgICAgICAgcmV0dXJuIExJVEVSQUwsIG9yZChlc2NhcGVbMV0pCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgIHBhc3MKICAgICByYWlzZSBlcnJvciwgImJvZ3VzIGVzY2FwZTogJXMiICUgcmVwcihlc2NhcGUpCiAKLWRlZiBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUsIG5lc3RlZD0xKToKK2RlZiBfcGFyc2Vfc3ViKHNvdXJjZSwgc3RhdGUsIG5lc3RlZCk6CiAgICAgIyBwYXJzZSBhbiBhbHRlcm5hdGlvbjogYXxifGMKIAogICAgIGl0ZW1zID0gW10KICAgICBpdGVtc2FwcGVuZCA9IGl0ZW1zLmFwcGVuZAogICAgIHNvdXJjZW1hdGNoID0gc291cmNlLm1hdGNoCiAgICAgd2hpbGUgMToKLSAgICAgICAgaXRlbXNhcHBlbmQoX3BhcnNlKHNvdXJjZSwgc3RhdGUpKQorICAgICAgICBpdGVtc2FwcGVuZChfcGFyc2Uoc291cmNlLCBzdGF0ZSwgbmVzdGVkICsgMSkpCiAgICAgICAgIGlmIHNvdXJjZW1hdGNoKCJ8Iik6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICBpZiBub3QgbmVzdGVkOgpAQCAtMzczLDEwICszOTIsMTAgQEAKICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoQlJBTkNILCAoTm9uZSwgaXRlbXMpKSkKICAgICByZXR1cm4gc3VicGF0dGVybgogCi1kZWYgX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCk6Ci0gICAgaXRlbV95ZXMgPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSkKK2RlZiBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwLCBuZXN0ZWQpOgorICAgIGl0ZW1feWVzID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUsIG5lc3RlZCArIDEpCiAgICAgaWYgc291cmNlLm1hdGNoKCJ8Iik6Ci0gICAgICAgIGl0ZW1fbm8gPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgaXRlbV9ubyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlLCBuZXN0ZWQgKyAxKQogICAgICAgICBpZiBzb3VyY2UubWF0Y2goInwiKToKICAgICAgICAgICAgIHJhaXNlIGVycm9yLCAiY29uZGl0aW9uYWwgYmFja3JlZiB3aXRoIG1vcmUgdGhhbiB0d28gYnJhbmNoZXMiCiAgICAgZWxzZToKQEAgLTM5Miw3ICs0MTEsNyBAQAogX0xPT0tCRUhJTkRBU1NFUlRDSEFSUyA9IHNldCgiPSEiKQogX1JFUEVBVENPREVTID0gc2V0KFtNSU5fUkVQRUFULCBNQVhfUkVQRUFUXSkKIAotZGVmIF9wYXJzZShzb3VyY2UsIHN0YXRlKToKK2RlZiBfcGFyc2Uoc291cmNlLCBzdGF0ZSwgbmVzdGVkKToKICAgICAjIHBhcnNlIGEgc2ltcGxlIHBhdHRlcm4KICAgICBzdWJwYXR0ZXJuID0gU3ViUGF0dGVybihzdGF0ZSkKIApAQCAtNDQzLDcgKzQ2Miw3IEBACiAgICAgICAgICAgICAgICAgaWYgdGhpcyA9PSAiXSIgYW5kIHNldCAhPSBzdGFydDoKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBlbGlmIHRoaXMgYW5kIHRoaXNbMF0gPT0gIlxcIjoKLSAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgdGhpcykKKyAgICAgICAgICAgICAgICAgICAgY29kZTEgPSBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgdGhpcywgbmVzdGVkICsgMSkKICAgICAgICAgICAgICAgICBlbGlmIHRoaXM6CiAgICAgICAgICAgICAgICAgICAgIGNvZGUxID0gTElURVJBTCwgb3JkKHRoaXMpCiAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTQ1OSw3ICs0NzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxpZiB0aGlzOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhpc1swXSA9PSAiXFwiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUyID0gX2NsYXNzX2VzY2FwZShzb3VyY2UsIHRoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBfY2xhc3NfZXNjYXBlKHNvdXJjZSwgdGhpcywgbmVzdGVkICsgMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZTIgPSBMSVRFUkFMLCBvcmQodGhpcykKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNvZGUxWzBdICE9IExJVEVSQUwgb3IgY29kZTJbMF0gIT0gTElURVJBTDoKQEAgLTU4OSw3ICs2MDgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2dyb3VwIHJlZmVyZW5jZXMgaW4gbG9va2JlaGluZCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXJ0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nLCBzdGFja2xldmVsPW5lc3RlZCArIDYpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChHUk9VUFJFRiwgZ2lkKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC02MTksNyArNjM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGRpciA9IC0xICMgbG9va2JlaGluZAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS5sb29rYmVoaW5kICs9IDEKLSAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgcCA9IF9wYXJzZV9zdWIoc291cmNlLCBzdGF0ZSwgbmVzdGVkICsgMSkKICAgICAgICAgICAgICAgICAgICAgaWYgZGlyIDwgMDoKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxvb2tiZWhpbmQgLT0gMQogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc291cmNlbWF0Y2goIikiKToKQEAgLTY1Niw3ICs2NzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdncm91cCByZWZlcmVuY2VzIGluIGxvb2tiZWhpbmQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXNzZXJ0aW9ucyBhcmUgbm90IHN1cHBvcnRlZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZywgc3RhY2tsZXZlbD1uZXN0ZWQgKyA2KQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICMgZmxhZ3MKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNvdXJjZS5uZXh0IGluIEZMQUdTOgpAQCAtNjcxLDkgKzY5MCw5IEBACiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgZ3JvdXAgPSBzdGF0ZS5vcGVuZ3JvdXAobmFtZSkKICAgICAgICAgICAgICAgICBpZiBjb25kZ3JvdXA6Ci0gICAgICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwKQorICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCwgbmVzdGVkICsgMSkKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQorICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBuZXN0ZWQgKyAxKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgiKSIpOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBlcnJvciwgInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiCiAgICAgICAgICAgICAgICAgaWYgZ3JvdXAgaXMgbm90IE5vbmU6CkBAIC02OTUsNyArNzE0LDcgQEAKICAgICAgICAgICAgIHN1YnBhdHRlcm4uYXBwZW5kKChBVCwgQVRfRU5EKSkKIAogICAgICAgICBlbGlmIHRoaXMgYW5kIHRoaXNbMF0gPT0gIlxcIjoKLSAgICAgICAgICAgIGNvZGUgPSBfZXNjYXBlKHNvdXJjZSwgdGhpcywgc3RhdGUpCisgICAgICAgICAgICBjb2RlID0gX2VzY2FwZShzb3VyY2UsIHRoaXMsIHN0YXRlLCBuZXN0ZWQgKyAxKQogICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZChjb2RlKQogCiAgICAgICAgIGVsc2U6CkBAIC03MTQsNiArNzMzLDEyIEBACiAgICAgcGF0dGVybi5zdHIgPSBzdHIKIAogICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgcGF0dGVybiwgMCkKKyAgICBpZiAoc3lzLnB5M2t3YXJuaW5nIGFuZAorICAgICAgICAocC5wYXR0ZXJuLmZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFKSBhbmQKKyAgICAgICAgKHAucGF0dGVybi5mbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpKToKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm5weTNrKCJMT0NBTEUgYW5kIFVOSUNPREUgZmxhZ3MgYXJlIGluY29tcGF0aWJsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD01KQogCiAgICAgdGFpbCA9IHNvdXJjZS5nZXQoKQogICAgIGlmIHRhaWwgPT0gIikiOgpAQCAtODAxLDcgKzgyNiwxMCBAQAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgdGhpcyA9IG1ha2VjaGFyKEVTQ0FQRVNbdGhpc11bMV0pCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGlmIHN5cy5weTNrd2FybmluZyBhbmQgYyBpbiBBU0NJSUxFVFRFUlM6CisgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm5weTNrKCdiYWQgZXNjYXBlICVzJyAlIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NCkKICAgICAgICAgICAgICAgICBsaXRlcmFsKHRoaXMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBsaXRlcmFsKHRoaXMpCmRpZmYgLS1naXQgYS9MaWIvc3NsLnB5IGIvTGliL3NzbC5weQppbmRleCBmMjhjODYzLi4yMmQ0NzhiIDEwMDY0NAotLS0gYS9MaWIvc3NsLnB5CisrKyBiL0xpYi9zc2wucHkKQEAgLTEyMyw3ICsxMjMsNyBAQAogX2ltcG9ydF9zeW1ib2xzKCdQUk9UT0NPTF8nKQogX2ltcG9ydF9zeW1ib2xzKCdWRVJJRllfJykKIAotZnJvbSBfc3NsIGltcG9ydCBIQVNfU05JLCBIQVNfRUNESCwgSEFTX05QTiwgSEFTX0FMUE4KK2Zyb20gX3NzbCBpbXBvcnQgSEFTX1NOSSwgSEFTX0VDREgsIEhBU19OUE4sIEhBU19BTFBOLCBIQVNfVExTdjFfMwogCiBmcm9tIF9zc2wgaW1wb3J0IF9PUEVOU1NMX0FQSV9WRVJTSU9OCiAKQEAgLTE1Nyw2ICsxNTcsNyBAQAogIyAoT3BlblNTTCdzIGRlZmF1bHQgc2V0dGluZyBpcyAnREVGQVVMVDohYU5VTEw6IWVOVUxMJykKICMgRW5hYmxlIGEgYmV0dGVyIHNldCBvZiBjaXBoZXJzIGJ5IGRlZmF1bHQKICMgVGhpcyBsaXN0IGhhcyBiZWVuIGV4cGxpY2l0bHkgY2hvc2VuIHRvOgorIyAgICogVExTIDEuMyBDaGFDaGEyMCBhbmQgQUVTLUdDTSBjaXBoZXIgc3VpdGVzCiAjICAgKiBQcmVmZXIgY2lwaGVyIHN1aXRlcyB0aGF0IG9mZmVyIHBlcmZlY3QgZm9yd2FyZCBzZWNyZWN5IChESEUvRUNESEUpCiAjICAgKiBQcmVmZXIgRUNESEUgb3ZlciBESEUgZm9yIGJldHRlciBwZXJmb3JtYW5jZQogIyAgICogUHJlZmVyIEFFQUQgb3ZlciBDQkMgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHkKQEAgLTE2OCw2ICsxNjksOCBAQAogIyAgICogRGlzYWJsZSBOVUxMIGF1dGhlbnRpY2F0aW9uLCBOVUxMIGVuY3J5cHRpb24sIDNERVMgYW5kIE1ENSBNQUNzCiAjICAgICBmb3Igc2VjdXJpdHkgcmVhc29ucwogX0RFRkFVTFRfQ0lQSEVSUyA9ICgKKyAgICAnVExTMTMtQUVTLTI1Ni1HQ00tU0hBMzg0OlRMUzEzLUNIQUNIQTIwLVBPTFkxMzA1LVNIQTI1NjonCisgICAgJ1RMUzEzLUFFUy0xMjgtR0NNLVNIQTI1NjonCiAgICAgJ0VDREgrQUVTR0NNOkVDREgrQ0hBQ0hBMjA6REgrQUVTR0NNOkRIK0NIQUNIQTIwOkVDREgrQUVTMjU2OkRIK0FFUzI1NjonCiAgICAgJ0VDREgrQUVTMTI4OkRIK0FFUzpFQ0RIK0hJR0g6REgrSElHSDpSU0ErQUVTR0NNOlJTQStBRVM6UlNBK0hJR0g6JwogICAgICchYU5VTEw6IWVOVUxMOiFNRDU6ITNERVMnCkBAIC0xNzUsNiArMTc4LDcgQEAKIAogIyBSZXN0cmljdGVkIGFuZCBtb3JlIHNlY3VyZSBjaXBoZXJzIGZvciB0aGUgc2VydmVyIHNpZGUKICMgVGhpcyBsaXN0IGhhcyBiZWVuIGV4cGxpY2l0bHkgY2hvc2VuIHRvOgorIyAgICogVExTIDEuMyBDaGFDaGEyMCBhbmQgQUVTLUdDTSBjaXBoZXIgc3VpdGVzCiAjICAgKiBQcmVmZXIgY2lwaGVyIHN1aXRlcyB0aGF0IG9mZmVyIHBlcmZlY3QgZm9yd2FyZCBzZWNyZWN5IChESEUvRUNESEUpCiAjICAgKiBQcmVmZXIgRUNESEUgb3ZlciBESEUgZm9yIGJldHRlciBwZXJmb3JtYW5jZQogIyAgICogUHJlZmVyIEFFQUQgb3ZlciBDQkMgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgc2VjdXJpdHkKQEAgLTE4NSw2ICsxODksOCBAQAogIyAgICogRGlzYWJsZSBOVUxMIGF1dGhlbnRpY2F0aW9uLCBOVUxMIGVuY3J5cHRpb24sIE1ENSBNQUNzLCBEU1MsIFJDNCwgYW5kCiAjICAgICAzREVTIGZvciBzZWN1cml0eSByZWFzb25zCiBfUkVTVFJJQ1RFRF9TRVJWRVJfQ0lQSEVSUyA9ICgKKyAgICAnVExTMTMtQUVTLTI1Ni1HQ00tU0hBMzg0OlRMUzEzLUNIQUNIQTIwLVBPTFkxMzA1LVNIQTI1NjonCisgICAgJ1RMUzEzLUFFUy0xMjgtR0NNLVNIQTI1NjonCiAgICAgJ0VDREgrQUVTR0NNOkVDREgrQ0hBQ0hBMjA6REgrQUVTR0NNOkRIK0NIQUNIQTIwOkVDREgrQUVTMjU2OkRIK0FFUzI1NjonCiAgICAgJ0VDREgrQUVTMTI4OkRIK0FFUzpFQ0RIK0hJR0g6REgrSElHSDpSU0ErQUVTR0NNOlJTQStBRVM6UlNBK0hJR0g6JwogICAgICchYU5VTEw6IWVOVUxMOiFNRDU6IURTUzohUkM0OiEzREVTJwpkaWZmIC0tZ2l0IGEvTGliL3N1YnByb2Nlc3MucHkgYi9MaWIvc3VicHJvY2Vzcy5weQppbmRleCAyMDIyZTk3Li4xZjJkYTBmIDEwMDY0NAotLS0gYS9MaWIvc3VicHJvY2Vzcy5weQorKysgYi9MaWIvc3VicHJvY2Vzcy5weQpAQCAtNzEsNiArNzEsMTAgQEAKIGVsc2U6CiAgICAgaW1wb3J0IHNlbGVjdAogICAgIF9oYXNfcG9sbCA9IGhhc2F0dHIoc2VsZWN0LCAncG9sbCcpCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgdGhyZWFkaW5nCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICB0aHJlYWRpbmcgPSBOb25lCiAgICAgaW1wb3J0IGZjbnRsCiAgICAgaW1wb3J0IHBpY2tsZQogCkBAIC01MDcsNyArNTExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgXyA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKICAgICAgICAgICAgIGVsaWYgc3RkaW4gPT0gUElQRToKICAgICAgICAgICAgICAgICBwMmNyZWFkLCBwMmN3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRpbiwgaW50KToKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRpbiwgKGludCwgbG9uZykpOgogICAgICAgICAgICAgICAgIHAyY3JlYWQgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShzdGRpbikKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBBc3N1bWluZyBmaWxlLWxpa2Ugb2JqZWN0CkBAIC01MjQsNyArNTI4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgXywgYzJwd3JpdGUgPSBfc3VicHJvY2Vzcy5DcmVhdGVQaXBlKE5vbmUsIDApCiAgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBQSVBFOgogICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gX3N1YnByb2Nlc3MuQ3JlYXRlUGlwZShOb25lLCAwKQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZG91dCwgaW50KToKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRvdXQsIChpbnQsIGxvbmcpKToKICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IG1zdmNydC5nZXRfb3NmaGFuZGxlKHN0ZG91dCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBBc3N1bWluZyBmaWxlLWxpa2Ugb2JqZWN0CkBAIC01NDMsNyArNTQ3LDcgQEAKICAgICAgICAgICAgICAgICBlcnJyZWFkLCBlcnJ3cml0ZSA9IF9zdWJwcm9jZXNzLkNyZWF0ZVBpcGUoTm9uZSwgMCkKICAgICAgICAgICAgIGVsaWYgc3RkZXJyID09IFNURE9VVDoKICAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IGMycHdyaXRlCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkZXJyLCBpbnQpOgorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGVyciwgKGludCwgbG9uZykpOgogICAgICAgICAgICAgICAgIGVycndyaXRlID0gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoc3RkZXJyKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIEFzc3VtaW5nIGZpbGUtbGlrZSBvYmplY3QKQEAgLTcyMCwxMCArNzI0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBlLmVycm5vID09IGVycm5vLkVQSVBFOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY29tbXVuaWNhdGUoKSBzaG91bGQgaWdub3JlIGJyb2tlbiBwaXBlIGVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiAoZS5lcnJubyA9PSBlcnJuby5FSU5WQUwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxmLnBvbGwoKSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBJc3N1ZSAjMTk2MTI6IHN0ZGluLndyaXRlKCkgZmFpbHMgd2l0aCBFSU5WQUwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGlmIHRoZSBwcm9jZXNzIGFscmVhZHkgZXhpdGVkIGJlZm9yZSB0aGUgd3JpdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgZS5lcnJubyA9PSBlcnJuby5FSU5WQUw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBicG8tMTk2MTIsIGJwby0zMDQxODogT24gV2luZG93cywgc3RkaW4ud3JpdGUoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmFpbHMgd2l0aCBFSU5WQUwgaWYgdGhlIGNoaWxkIHByb2Nlc3MgZXhpdGVkIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiB0aGUgY2hpbGQgcHJvY2VzcyBpcyBzdGlsbCBydW5uaW5nIGJ1dCBjbG9zZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRoZSBwaXBlLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTgwMCw3ICs4MDUsNyBAQAogICAgICAgICAgICAgZWxpZiBzdGRpbiA9PSBQSVBFOgogICAgICAgICAgICAgICAgIHAyY3JlYWQsIHAyY3dyaXRlID0gc2VsZi5waXBlX2Nsb2V4ZWMoKQogICAgICAgICAgICAgICAgIHRvX2Nsb3NlLnVwZGF0ZSgocDJjcmVhZCwgcDJjd3JpdGUpKQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGluLCBpbnQpOgorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZGluLCAoaW50LCBsb25nKSk6CiAgICAgICAgICAgICAgICAgcDJjcmVhZCA9IHN0ZGluCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICMgQXNzdW1pbmcgZmlsZS1saWtlIG9iamVjdApAQCAtODExLDcgKzgxNiw3IEBACiAgICAgICAgICAgICBlbGlmIHN0ZG91dCA9PSBQSVBFOgogICAgICAgICAgICAgICAgIGMycHJlYWQsIGMycHdyaXRlID0gc2VsZi5waXBlX2Nsb2V4ZWMoKQogICAgICAgICAgICAgICAgIHRvX2Nsb3NlLnVwZGF0ZSgoYzJwcmVhZCwgYzJwd3JpdGUpKQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHN0ZG91dCwgaW50KToKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRvdXQsIChpbnQsIGxvbmcpKToKICAgICAgICAgICAgICAgICBjMnB3cml0ZSA9IHN0ZG91dAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIEFzc3VtaW5nIGZpbGUtbGlrZSBvYmplY3QKQEAgLTgyNyw3ICs4MzIsNyBAQAogICAgICAgICAgICAgICAgICAgICBlcnJ3cml0ZSA9IGMycHdyaXRlCiAgICAgICAgICAgICAgICAgZWxzZTogIyBjaGlsZCdzIHN0ZG91dCBpcyBub3Qgc2V0LCB1c2UgcGFyZW50J3Mgc3Rkb3V0CiAgICAgICAgICAgICAgICAgICAgIGVycndyaXRlID0gc3lzLl9fc3Rkb3V0X18uZmlsZW5vKCkKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzdGRlcnIsIGludCk6CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2Uoc3RkZXJyLCAoaW50LCBsb25nKSk6CiAgICAgICAgICAgICAgICAgZXJyd3JpdGUgPSBzdGRlcnIKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBBc3N1bWluZyBmaWxlLWxpa2Ugb2JqZWN0CkBAIC04NzcsNiArODgyLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAKIAorICAgICAgICAjIFVzZWQgYXMgYSBiYW5kYWlkIHdvcmthcm91bmQgZm9yIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjc0NDgKKyAgICAgICAgIyB0byBwcmV2ZW50IG11bHRpcGxlIHNpbXVsdGFuZW91cyBzdWJwcm9jZXNzIGxhdW5jaGVzIGZyb20gaW50ZXJmZXJpbmcKKyAgICAgICAgIyB3aXRoIG9uZSBhbm90aGVyIGFuZCBsZWF2aW5nIGdjIGRpc2FibGVkLgorICAgICAgICBpZiB0aHJlYWRpbmc6CisgICAgICAgICAgICBfZGlzYWJsaW5nX2djX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjbGFzcyBfbm9vcF9jb250ZXh0X21hbmFnZXIob2JqZWN0KToKKyAgICAgICAgICAgICAgICAjIEEgZHVtbXkgY29udGV4dCBtYW5hZ2VyIHRoYXQgZG9lcyBub3RoaW5nIGZvciB0aGUgcmFyZQorICAgICAgICAgICAgICAgICMgdXNlciBvZiBhIC0td2l0aG91dC10aHJlYWRzIGJ1aWxkLgorICAgICAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6IHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOiBwYXNzCisKKyAgICAgICAgICAgIF9kaXNhYmxpbmdfZ2NfbG9jayA9IF9ub29wX2NvbnRleHRfbWFuYWdlcigpCisKKwogICAgICAgICBkZWYgX2V4ZWN1dGVfY2hpbGQoc2VsZiwgYXJncywgZXhlY3V0YWJsZSwgcHJlZXhlY19mbiwgY2xvc2VfZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkLCBlbnYsIHVuaXZlcnNhbF9uZXdsaW5lcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0dXBpbmZvLCBjcmVhdGlvbmZsYWdzLCBzaGVsbCwgdG9fY2xvc2UsCkBAIC05MDgsMTAgKzkyOCwxMiBAQAogICAgICAgICAgICAgZXJycGlwZV9yZWFkLCBlcnJwaXBlX3dyaXRlID0gc2VsZi5waXBlX2Nsb2V4ZWMoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgZ2Nfd2FzX2VuYWJsZWQgPSBnYy5pc2VuYWJsZWQoKQotICAgICAgICAgICAgICAgICAgICAjIERpc2FibGUgZ2MgdG8gYXZvaWQgYnVnIHdoZXJlIGdjIC0+IGZpbGVfZGVhbGxvYyAtPgotICAgICAgICAgICAgICAgICAgICAjIHdyaXRlIHRvIHN0ZGVyciAtPiBoYW5nLiAgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzMzYKLSAgICAgICAgICAgICAgICAgICAgZ2MuZGlzYWJsZSgpCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5fZGlzYWJsaW5nX2djX2xvY2s6CisgICAgICAgICAgICAgICAgICAgICAgICBnY193YXNfZW5hYmxlZCA9IGdjLmlzZW5hYmxlZCgpCisgICAgICAgICAgICAgICAgICAgICAgICAjIERpc2FibGUgZ2MgdG8gYXZvaWQgYnVnIHdoZXJlIGdjIC0+IGZpbGVfZGVhbGxvYyAtPgorICAgICAgICAgICAgICAgICAgICAgICAgIyB3cml0ZSB0byBzdGRlcnIgLT4gaGFuZy4KKyAgICAgICAgICAgICAgICAgICAgICAgICMgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMzM2CisgICAgICAgICAgICAgICAgICAgICAgICBnYy5kaXNhYmxlKCkKICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5waWQgPSBvcy5mb3JrKCkKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgpAQCAtOTg1LDkgKzEwMDcsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNfdmFsdWUuY2hpbGRfdHJhY2ViYWNrID0gJycuam9pbihleGNfbGluZXMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mud3JpdGUoZXJycGlwZV93cml0ZSwgcGlja2xlLmR1bXBzKGV4Y192YWx1ZSkpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBleGl0Y29kZSB3b24ndCBiZSByZXBvcnRlZCB0byBhcHBsaWNhdGlvbnMsIHNvIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHJlYWxseSBkb2Vzbid0IG1hdHRlciB3aGF0IHdlIHJldHVybi4KLSAgICAgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KDI1NSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGV4aXRjb2RlIHdvbid0IGJlIHJlcG9ydGVkIHRvIGFwcGxpY2F0aW9ucywgc28gaXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHJlYWxseSBkb2Vzbid0IG1hdHRlciB3aGF0IHdlIHJldHVybi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdCgyNTUpCiAKICAgICAgICAgICAgICAgICAgICAgIyBQYXJlbnQKICAgICAgICAgICAgICAgICAgICAgaWYgZ2Nfd2FzX2VuYWJsZWQ6CkBAIC0xMDI2LDEzICsxMDQ5LDE2IEBACiAKICAgICAgICAgZGVmIF9oYW5kbGVfZXhpdHN0YXR1cyhzZWxmLCBzdHMsIF9XSUZTSUdOQUxFRD1vcy5XSUZTSUdOQUxFRCwKICAgICAgICAgICAgICAgICBfV1RFUk1TSUc9b3MuV1RFUk1TSUcsIF9XSUZFWElURUQ9b3MuV0lGRVhJVEVELAotICAgICAgICAgICAgICAgIF9XRVhJVFNUQVRVUz1vcy5XRVhJVFNUQVRVUyk6CisgICAgICAgICAgICAgICAgX1dFWElUU1RBVFVTPW9zLldFWElUU1RBVFVTLCBfV0lGU1RPUFBFRD1vcy5XSUZTVE9QUEVELAorICAgICAgICAgICAgICAgIF9XU1RPUFNJRz1vcy5XU1RPUFNJRyk6CiAgICAgICAgICAgICAjIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCAoaW5kaXJlY3RseSkgYnkgX19kZWxfXywgc28gaXQgY2Fubm90CiAgICAgICAgICAgICAjIHJlZmVyIHRvIGFueXRoaW5nIG91dHNpZGUgb2YgaXRzIGxvY2FsIHNjb3BlLgogICAgICAgICAgICAgaWYgX1dJRlNJR05BTEVEKHN0cyk6CiAgICAgICAgICAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gLV9XVEVSTVNJRyhzdHMpCiAgICAgICAgICAgICBlbGlmIF9XSUZFWElURUQoc3RzKToKICAgICAgICAgICAgICAgICBzZWxmLnJldHVybmNvZGUgPSBfV0VYSVRTVEFUVVMoc3RzKQorICAgICAgICAgICAgZWxpZiBfV0lGU1RPUFBFRChzdHMpOgorICAgICAgICAgICAgICAgIHNlbGYucmV0dXJuY29kZSA9IC1fV1NUT1BTSUcoc3RzKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIFNob3VsZCBuZXZlciBoYXBwZW4KICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlVua25vd24gY2hpbGQgZXhpdCBzdGF0dXMhIikKZGlmZiAtLWdpdCBhL0xpYi9zeXNjb25maWcucHkgYi9MaWIvc3lzY29uZmlnLnB5CmluZGV4IDJhMWRhNWEuLjljODM1MGQgMTAwNjQ0Ci0tLSBhL0xpYi9zeXNjb25maWcucHkKKysrIGIvTGliL3N5c2NvbmZpZy5weQpAQCAtMTEyLDYgKzExMiwxMSBAQAogIyBQQy9WUzcuMQogaWYgb3MubmFtZSA9PSAibnQiIGFuZCAiXFxwY1xcdiIgaW4gX1BST0pFQ1RfQkFTRVstMTA6XS5sb3dlcigpOgogICAgIF9QUk9KRUNUX0JBU0UgPSBfc2FmZV9yZWFscGF0aChvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgcGFyZGlyLCBwYXJkaXIpKQorIyBQQy9WUzkuMC9hbWQ2NAoraWYgKG9zLm5hbWUgPT0gIm50IgorICAgYW5kIG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfUFJPSkVDVF9CQVNFKSkpLmxvd2VyKCkgPT0gInBjIgorICAgYW5kIG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5kaXJuYW1lKF9QUk9KRUNUX0JBU0UpKS5sb3dlcigpID09ICJ2czkuMCIpOgorICAgIF9QUk9KRUNUX0JBU0UgPSBfc2FmZV9yZWFscGF0aChvcy5wYXRoLmpvaW4oX1BST0pFQ1RfQkFTRSwgcGFyZGlyLCBwYXJkaXIsIHBhcmRpcikpCiAjIFBDL0FNRDY0CiBpZiBvcy5uYW1lID09ICJudCIgYW5kICJcXHBjYnVpbGRcXGFtZDY0IiBpbiBfUFJPSkVDVF9CQVNFWy0xNDpdLmxvd2VyKCk6CiAgICAgX1BST0pFQ1RfQkFTRSA9IF9zYWZlX3JlYWxwYXRoKG9zLnBhdGguam9pbihfUFJPSkVDVF9CQVNFLCBwYXJkaXIsIHBhcmRpcikpCmRpZmYgLS1naXQgYS9MaWIvdGFibmFubnkucHkgYi9MaWIvdGFibmFubnkucHkKaW5kZXggNzY2NjVhYy4uZTQ4YjcyYSAxMDA3NTUKLS0tIGEvTGliL3RhYm5hbm55LnB5CisrKyBiL0xpYi90YWJuYW5ueS5weQpAQCAtNTksNyArNTksNyBAQAogCiBjbGFzcyBOYW5ueU5hZyhFeGNlcHRpb24pOgogICAgICIiIgotICAgIFJhaXNlZCBieSB0b2tlbmVhdGVyKCkgaWYgZGV0ZWN0aW5nIGFuIGFtYmlndW91cyBpbmRlbnQuCisgICAgUmFpc2VkIGJ5IHByb2Nlc3NfdG9rZW5zKCkgaWYgZGV0ZWN0aW5nIGFuIGFtYmlndW91cyBpbmRlbnQuCiAgICAgQ2FwdHVyZWQgYW5kIGhhbmRsZWQgaW4gY2hlY2soKS4KICAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgbGluZW5vLCBtc2csIGxpbmUpOgpkaWZmIC0tZ2l0IGEvTGliL3RlbG5ldGxpYi5weSBiL0xpYi90ZWxuZXRsaWIucHkKaW5kZXggMmVhYThlMy4uZDAyNDZjMCAxMDA2NDQKLS0tIGEvTGliL3RlbG5ldGxpYi5weQorKysgYi9MaWIvdGVsbmV0bGliLnB5CkBAIC0zMTcsNyArMzE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmVhZHkgPSBwb2xsZXIucG9sbChOb25lIGlmIHRpbWVvdXQgaXMgTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgMTAwMCAqIGNhbGxfdGltZW91dCkKICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6CisgICAgICAgICAgICAgICAgICAgIGlmIGVbMF0gPT0gZXJybm8uRUlOVFI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWQgPSB0aW1lKCkgLSB0aW1lX3N0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF90aW1lb3V0ID0gdGltZW91dC1lbGFwc2VkCkBAIC02ODgsNyArNjg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgcmVhZHkgPSBwb2xsZXIucG9sbChOb25lIGlmIHRpbWVvdXQgaXMgTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgMTAwMCAqIGNhbGxfdGltZW91dCkKICAgICAgICAgICAgICAgICBleGNlcHQgc2VsZWN0LmVycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gPT0gZXJybm8uRUlOVFI6CisgICAgICAgICAgICAgICAgICAgIGlmIGVbMF0gPT0gZXJybm8uRUlOVFI6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsYXBzZWQgPSB0aW1lKCkgLSB0aW1lX3N0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbF90aW1lb3V0ID0gdGltZW91dC1lbGFwc2VkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9fX21haW5fXy5weSBiL0xpYi90ZXN0L19fbWFpbl9fLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZmJlMTUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9fX21haW5fXy5weQpAQCAtMCwwICsxLDMgQEAKK2Zyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKKworcmVncnRlc3QubWFpbl9pbl90ZW1wX2N3ZCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9hbGxzYW5zLnBlbSBiL0xpYi90ZXN0L2FsbHNhbnMucGVtCmluZGV4IDNlZTRmNTkuLmJmNTlmMzAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2FsbHNhbnMucGVtCisrKyBiL0xpYi90ZXN0L2FsbHNhbnMucGVtCkBAIC0xLDM3ICsxLDY0IEBACiAtLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KLU1JSUNkZ0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQW1Bd2dnSmNBZ0VBQW9HQkFPb3k3L1FPdFRqUTBuaUUKLTZ1RGNUd3RrQzBSMlR2eTFBalZuWG9oQ250WmZkemJUR0RvWVRnWFNPTHNQOEE2OTdqVWlKOFZDZVBHSDUweEcKLVo0REtuQUYzYTlPM2E5bnIycExYYjBpWTNYT012K1lFQmlpN0NmSSszb3hGWWdDbDBzTWdIekREMlpUVllBc20KLURXZ0xVVnNFMmdIRWNjUndyTTJ0UGYyRWdSK0ZBZ01CQUFFQ2dZRUEzcXlmeVlWU2VUclRZeE85M3g2WmFWTXUKLUEySVpwOXpTeE1RTDliS2lJMkdSaitjVjJlYlNDR2JnMmJ0Rm5ENnFCb3I3RldzbVl6KzhnNkZOTi85c1k0YXoKLTYxck1xTXRRdkxCZSs3TDh3NzBGZVR6ZTRxUTRZMW9RcmkwcUQ2dEJXaERWbHBuYkk1UHk5YmtaS0Q2N3lWVWsKLWVsY0VBLzV4NFByWVhrdXFzQUVDUVFEODBOalQwbUR2YVkwSk9PYVFGU0VwTXY2UWlVQThHR1g4WGxpN0lvS2IKLXRBb2xQRzhyUUJhK3FTcGNXZkRNVHJXdy9hV0h1TUVFUW9QL2JWREg5VzRGQWtFQTdTWVFiQkFLbm9qWjVBM0cKLWtPSGRWN2FlaXZSUXhRay9KTjhGYjhvS0I5Q3N2cHYvQnN1R3hQS1hIZGhGYTZDQlRUc05SdEhRdy9zelBvNGwKLXhNSWpnUUpBUG9NeHFpYlIrMEVCTTYrVEt6dGVTTDZvUFhzQ25CbDRWay9KNXZQZ2tibVI3S1VsNCs3ajhOOEoKLWIyNTU0VHJ4S0VOL3c3Q0dZWlJFNlVyUmQ3QVROUUpBV0Q3WXo0MXNsaSt3ZlBkUFUyeG8xQkhsanlsNHdNay8KLUVQWlliSS9QQ2JkeUFIL0Y5MzVXeVFUSWpOZUVoWmMxWmtxNkZ3ZE9XdzhuczNocnYzcktnUUpBSFh2MUJxVWEKLWN6R1BJRnhYMlROb3F0Y2w2L0VuNHZyeFZCMXd6c2Z6a2tEQWc5OGtCbDdxc0YrUzNxdWpTektpa2plYVZiSTIKLS9DeVdSMlAzeUx0T21BPT0KK01JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRRDU5SnloUGdZZTduaFoKK1oySUdoYWtsTmd0UmtEKzVCVnM3bEVXb3ZZUkJsWHBQQTZQdWFIYXQyNXJJOEVHWUhtbHVmUGhlcmcyUXU2c0MKK0dtWlpLbzdUZ2psbURjd1ZTNGhrZWJ0Rkg3T1p5NUlsN1kyWklkaUs3WHA5WjBFUG9xd2FjWW93QjBhOFdoWlkKK0kyVm00RXpDTktsNi9odGt3amduMkpYR2l6eHZHdC8xa05xUC9HQkFYK3ZqZ2VhaE9zbjhqVmg5NktwRkhKYlMKK2c4M2NYNHQ4TTdGSnY3eU5vREx2T1JIbnZLQ09YYlFtcjZaTUdjWk44UHdTOGF3UTMxa2haVHBFeCtoQ2UrUGkKK0d6ZU9seHBaaW1YV0RBR1dBNHRaNThLYS9Rdk83VlFiRDVDaTE2Nk9EdnZzK3RFWGZCVUV4dFBjUyswMklCSlYKK3R6aEJuYTlWQWdNQkFBRUNnZ0VBUGFyOURjY0lxWTc2UUV5Q1ljdU9QTEVGdjl6UDYrMEhZajZscFFrRTNVMXMKK3ZKdlFVUnlTMHpnUUN5MURjYTFuSTZ4UGRzU0lja0hxNGZ6emJXSlRsSmxYWWZkYmQ1R0lHQW4waXd4VU9raUEKK1NUMC9weDB6bUtzWWdtSDhLa2hmSDdNTmZlWDlyTENwUEp1WEEvZW8yRzAzdHpHRVBxcXdRaHhzYjJ5Z3YyUXMKK003T3FKejZSSnU4N0sxWStwc1dJdjkrVmhOVmphMGt2c2c1MlFNSzltdHA4bGF5YjU0cUxJNVI1ZTA5c0l1ZHEKK1JIZWd0blNPQm85a3QzMkg5dldVRmFGNVBwWXQ0eWtzNEtZSTR1bEtHV0pHWEhNRFc0dUhVYUUvdGpOUXVZQVgKK0R1RHZqTitFQ1NKdmlnaVVidTJrMHhCMktZSWIxZnBjeGx6L1lCZEFEUUtCZ1FEL1oyVnRCVWpPRm5KS3owMGYKK3hOMGFrcDdYUGdkMXlDYjEvd1pxOVBRaUd2eklBTURJcGxpb1R2ak9qaE96UEphV0QwR0lDTmV5cHpRNDgrMFAKK1VzUElLYmF6cElaTjZiWm5jcjY1cGxTcGcwS0FOcTQ2aGJrUEhPbzhQSERhN3lveEJVU1ByOEY3UDFPQ1JrbjYKKytRZGdjbnJBbHk3eWZxTzJhaEFXT1g3aUN3S0JnUUQ2aWZYU0NLZlJGMUdVYjNXczdTMXJMeGVCYXNXcStFbUMKK3NVbmNrMFMrQXlhTWtOK2taNXplamJOK05EdVVNUTcrM3dVSWhlVGNsVWh6UjBMUDMrcjVqakhzaW1KdXZPbWwKK3d1VjM3RitPbTVsRC9YeDI3TmZidFJLbi9iSzZvMHpETDhKQjJlRkIwTjdGaDdoUllvVU1kcnBRczVzVTkxSUMKK3BOWWxBY0x3SHdLQmdHdkxLOWVUZjJMYnZta3NqUlIzZGdvZEQ4VXdmTjJOR0VTQzJpYVNNK2VoRkVjbGFqaEYKK1hPM01SdDZHd0hISmhKVFk0NE9TbDliakV2dG1tQXI3bDM0SGZRRGMwNEpXdlpGenNHT1NlL0QvWVRYVDNqejgKKzYxb2hqZ3JXUjV0ZmphTWE0aER5ME9vL2svTkx6eldKblQ5cmtidHZFM1Z0VlpOTHVIWm8xZEI1QW9HQkFNSE8KK3dTdFY2TU8xbnpVTk4rR3FvOHpiWS9xSUp4c0g4STI2S2FJSkJrOWF6cEpFYTh5WkhsK0hERWZmamdzb0hDcUwKK1NUQjdxenY3KzB5NTNuUkNDbG84Wm1CTitMRWpVRGNiV2psM3o3L1luQ3BkUjlBVGpUUDNrZFFFVENOV3VjWHcKK0J2eTcyQ1g2dHFubFFHOHNvREd4RXBYbEtsMkFxSjlFOWljd2dxVVBBb0dBTDZ4VERkZ2NZVGJrOXd4Q2Q0MWwKK05oSFRTdkxyR1hMQXp2NjFQQ25sT0pFSmJ1dWV6YjJWVzBpYnN1ZDVDQTRNaTB0ZjlFVDc5MFhTT0ZkNW5DalEKKzZycjA2QWtqUXNvRnZqTDFkTzlFelZGUFcwSnJaM0M5eThaT2pkZUFmUEVtRkwyVDZWcW1RK0ljQ1VOaFNyMzkKK05CZEtyYm9FRmZuS2FuZmJzdGVraEFzPQogLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQogLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlEY2pDQ0F0dWdBd0lCQWdJSkFONWRjOVRPV2pCN01BMEdDU3FHU0liM0RRRUJDd1VBTUYweEN6QUpCZ05WCitNSUlHTURDQ0JSaWdBd0lCQWdJSkFKWWY4VDk1cHRxNU1BMEdDU3FHU0liM0RRRUJDd1VBTUYweEN6QUpCZ05WCiBCQVlUQWxoWk1SY3dGUVlEVlFRSERBNURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2d3YVVIbDBhRzl1Ci1JRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4RURBT0JnTlZCQU1NQjJGc2JITmhibk13SGhjTk1UWXdPREExCi1NVEF5TVRFeFdoY05Nall3T0RBek1UQXlNVEV4V2pCZE1Rc3dDUVlEVlFRR0V3SllXVEVYTUJVR0ExVUVCd3dPCitJRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4RURBT0JnTlZCQU1NQjJGc2JITmhibk13SGhjTk1UZ3dNVEU1CitNVGt3T1RBM1doY05Namd3TVRFM01Ua3dPVEEzV2pCZE1Rc3dDUVlEVlFRR0V3SllXVEVYTUJVR0ExVUVCd3dPCiBRMkZ6ZEd4bElFRnVkR2h5WVhneEl6QWhCZ05WQkFvTUdsQjVkR2h2YmlCVGIyWjBkMkZ5WlNCR2IzVnVaR0YwCi1hVzl1TVJBd0RnWURWUVFEREFkaGJHeHpZVzV6TUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCCi1nUURxTXUvMERyVTQwTko0aE9yZzNFOExaQXRFZGs3OHRRSTFaMTZJUXA3V1gzYzIweGc2R0U0RjBqaTdEL0FPCi12ZTQxSWlmRlFuanhoK2RNUm1lQXlwd0JkMnZUdDJ2WjY5cVMxMjlJbU4xempML21CQVlvdXdueVB0Nk1SV0lBCi1wZExESUI4d3c5bVUxV0FMSmcxb0MxRmJCTm9CeEhIRWNLek5yVDM5aElFZmhRSURBUUFCbzRJQk9EQ0NBVFF3Ci1nZ0V3QmdOVkhSRUVnZ0VuTUlJQkk0SUhZV3hzYzJGdWM2QWVCZ01xQXdTZ0Z3d1ZjMjl0WlNCdmRHaGxjaUJwCi1aR1Z1ZEdsbWFXVnlvRFVHQmlzR0FRVUNBcUFyTUNtZ0VCc09TMFZTUWtWU1QxTXVVa1ZCVEUyaEZUQVRvQU1DCi1BUUdoRERBS0d3aDFjMlZ5Ym1GdFpZRVFkWE5sY2tCbGVHRnRjR3hsTG05eVo0SVBkM2QzTG1WNFlXMXdiR1V1Ci1iM0pucEdjd1pURUxNQWtHQTFVRUJoTUNXRmt4RnpBVkJnTlZCQWNNRGtOaGMzUnNaU0JCYm5Sb2NtRjRNU013Ci1JUVlEVlFRS0RCcFFlWFJvYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJqRVlNQllHQTFVRUF3d1BaR2x5Ci1ibUZ0WlNCbGVHRnRjR3hsaGhkb2RIUndjem92TDNkM2R5NXdlWFJvYjI0dWIzSm5MNGNFZndBQUFZY1FBQUFBCi1BQUFBQUFBQUFBQUFBQUFBQVlnRUtnTUVCVEFOQmdrcWhraUc5dzBCQVFzRkFBT0JnUUF5MTZoK0Yrbk9tZWlUCi1WV1IwZmM4Ri9qNkZjYWRiTHNlQVVhb2djQzE1T0d4Q2w0VVlwTFY4OEhCa0FCT29HQ3BQMTU1cXdXVHdPcmRHCi1pWVBHSlN1c2YxT25KRWJ2ekZlalpmNnUwNzhiUGQ5L1pMNFZXTGp2K0ZQR2tqZCtOKy9PYXFNdmdqOEx1OTlmCi0zWS9DNFM3WWJIeHh3ZmY2QzZsMlhsaStxNmdudVE9PQorYVc5dU1SQXdEZ1lEVlFRRERBZGhiR3h6WVc1ek1JSUJJakFOQmdrcWhraUc5dzBCQVFFRkFBT0NBUThBTUlJQgorQ2dLQ0FRRUErZlNjb1Q0R0h1NTRXV2RpQm9XcEpUWUxVWkEvdVFWYk81UkZxTDJFUVpWNlR3T2o3bWgycmR1YQoreVBCQm1CNXBibno0WHE0TmtMdXJBaHBtV1NxTzA0STVaZzNNRlV1SVpIbTdSUit6bWN1U0plMk5tU0hZaXUxNgorZldkQkQ2S3NHbkdLTUFkR3ZGb1dXQ05sWnVCTXdqU3BldjRiWk1JNEo5aVZ4b3M4YnhyZjlaRGFqL3hnUUYvcgorNDRIbW9UckovSTFZZmVpcVJSeVcwb1BOM0YrTGZET3hTYis4amFBeTd6a1I1N3lnamwyMEpxK21UQm5HVGZEOAorRXZHc0VOOVpJV1U2Uk1mb1Fudmo0aHMzanBjYVdZcGwxZ3dCbGdPTFdlZkNtdjBMenUxVUd3K1FvdGV1amc3NworN1ByUkYzd1ZCTWJUM0V2dE5pQVNWYmM0UVoydlZRSURBUUFCbzRJQzhUQ0NBdTB3Z2dFd0JnTlZIUkVFZ2dFbgorTUlJQkk0SUhZV3hzYzJGdWM2QWVCZ01xQXdTZ0Z3d1ZjMjl0WlNCdmRHaGxjaUJwWkdWdWRHbG1hV1Z5b0RVRworQmlzR0FRVUNBcUFyTUNtZ0VCc09TMFZTUWtWU1QxTXVVa1ZCVEUyaEZUQVRvQU1DQVFHaEREQUtHd2gxYzJWeQorYm1GdFpZRVFkWE5sY2tCbGVHRnRjR3hsTG05eVo0SVBkM2QzTG1WNFlXMXdiR1V1YjNKbnBHY3daVEVMTUFrRworQTFVRUJoTUNXRmt4RnpBVkJnTlZCQWNNRGtOaGMzUnNaU0JCYm5Sb2NtRjRNU013SVFZRFZRUUtEQnBRZVhSbworYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJqRVlNQllHQTFVRUF3d1BaR2x5Ym1GdFpTQmxlR0Z0Y0d4bAoraGhkb2RIUndjem92TDNkM2R5NXdlWFJvYjI0dWIzSm5MNGNFZndBQUFZY1FBQUFBQUFBQUFBQUFBQUFBQUFBQQorQVlnRUtnTUVCVEFPQmdOVkhROEJBZjhFQkFNQ0JhQXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0VHQ0NzRworQVFVRkJ3TUNNQXdHQTFVZEV3RUIvd1FDTUFBd0hRWURWUjBPQkJZRUZIOXllMytXaEJuSHFOaHRGdTA1OWJ6WQorU1dNOE1JR1BCZ05WSFNNRWdZY3dnWVNBRkg5eWUzK1doQm5IcU5odEZ1MDU5YnpZU1dNOG9XR2tYekJkTVFzdworQ1FZRFZRUUdFd0pZV1RFWE1CVUdBMVVFQnd3T1EyRnpkR3hsSUVGdWRHaHlZWGd4SXpBaEJnTlZCQW9NR2xCNQorZEdodmJpQlRiMlowZDJGeVpTQkdiM1Z1WkdGMGFXOXVNUkF3RGdZRFZRUUREQWRoYkd4ellXNXpnZ2tBbGgveAorUDNtbTJya3dnWU1HQ0NzR0FRVUZCd0VCQkhjd2RUQThCZ2dyQmdFRkJRY3dBb1l3YUhSMGNEb3ZMM1JsYzNSagorWVM1d2VYUm9iMjUwWlhOMExtNWxkQzkwWlhOMFkyRXZjSGxqWVdObGNuUXVZMlZ5TURVR0NDc0dBUVVGQnpBQgoraGlsb2RIUndPaTh2ZEdWemRHTmhMbkI1ZEdodmJuUmxjM1F1Ym1WMEwzUmxjM1JqWVM5dlkzTndMekJEQmdOVgorSFI4RVBEQTZNRGlnTnFBMGhqSm9kSFJ3T2k4dmRHVnpkR05oTG5CNWRHaHZiblJsYzNRdWJtVjBMM1JsYzNSagorWVM5eVpYWnZZMkYwYVc5dUxtTnliREFOQmdrcWhraUc5dzBCQVFzRkFBT0NBUUVBWXdZSmNlclVQdm5zUDdlMgorSEdwL0l0ME9aOEN2cHQ4UWY3QStOU1B2SnFreUtha2w4eksvNTBpcS9xUUtIMDlDbmZFYWU0cmZYTGRsWXN2VgorMlBaWUswTERXbnlUY0hTSldBVkpqbFNGSUZ0M2lnOUZkSHY5R1l0U1dXb2Q2NmNaMHNFWk9vRjJJSFpVR2J5KworUWErSlFwbXY1akV1R0laempjc2g2aFNPb3U4cGg3THNDc1JkVmxRcWs4ck05N3ZCN0RBZ2gwMXZlZGxib2xzcQorSnhzdVBSeWRORlYvZVdxM0FnQVdnWkwzTGRZWUlBZ2FWT1RubmQzeEFSdzhEbFQxcTYrTHpjNzFHQlhyUlpZaAorcWdkK3hDL0sxODEyZ01QSW1UWDAyYnhwa2hDdUlkVmQ3Y3p0V2k4c2RRbVNnREVGZFlNWG80TnpsRlRLOGRsQworWTR3YTNRPT0KIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2Jpc2VjdF9jbWQucHkgYi9MaWIvdGVzdC9iaXNlY3RfY21kLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFiZjMyZWYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9iaXNlY3RfY21kLnB5CkBAIC0wLDAgKzEsMTgxIEBACisjIS91c3IvYmluL2VudiBweXRob24yCisiIiIKK0NvbW1hbmQgbGluZSB0b29sIHRvIGJpc2VjdCBmYWlsaW5nIENQeXRob24gdGVzdHMuCisKK0ZpbmQgdGhlIHRlc3Rfb3MgdGVzdCBtZXRob2Qgd2hpY2ggYWx0ZXJzIHRoZSBlbnZpcm9ubWVudDoKKworICAgIC4vcHl0aG9uIC1tIHRlc3QuYmlzZWN0IC0tZmFpbC1lbnYtY2hhbmdlZCB0ZXN0X29zCisKK0ZpbmQgYSByZWZlcmVuY2UgbGVhayBpbiAidGVzdF9vcyIsIHdyaXRlIHRoZSBsaXN0IG9mIGZhaWxpbmcgdGVzdHMgaW50byB0aGUKKyJiaXNlY3QiIGZpbGU6CisKKyAgICAuL3B5dGhvbiAtbSB0ZXN0LmJpc2VjdCAtbyBiaXNlY3QgLVIgMzozIHRlc3Rfb3MKKworTG9hZCBhbiBleGlzdGluZyBsaXN0IG9mIHRlc3RzIGZyb20gYSBmaWxlIHVzaW5nIC1pIG9wdGlvbjoKKworICAgIC4vcHl0aG9uIC1tIHRlc3QgLS1saXN0LWNhc2VzIC1tIEZpbGVUZXN0cyB0ZXN0X29zID4gdGVzdHMKKyAgICAuL3B5dGhvbiAtbSB0ZXN0LmJpc2VjdCAtaSB0ZXN0cyB0ZXN0X29zCisiIiIKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgbWF0aAoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRpbWUKKworCitkZWYgd3JpdGVfdGVzdHMoZmlsZW5hbWUsIHRlc3RzKToKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgIGZvciBuYW1lIGluIHRlc3RzOgorICAgICAgICAgICAgcHJpbnQobmFtZSwgZmlsZT1mcCkKKyAgICAgICAgZnAuZmx1c2goKQorCisKK2RlZiB3cml0ZV9vdXRwdXQoZmlsZW5hbWUsIHRlc3RzKToKKyAgICBpZiBub3QgZmlsZW5hbWU6CisgICAgICAgIHJldHVybgorICAgIHByaW50KCJXcml0ZSAlcyB0ZXN0cyBpbnRvICVzIiAlIChsZW4odGVzdHMpLCBmaWxlbmFtZSkpCisgICAgd3JpdGVfdGVzdHMoZmlsZW5hbWUsIHRlc3RzKQorICAgIHJldHVybiBmaWxlbmFtZQorCisKK2RlZiBmb3JtYXRfc2hlbGxfYXJncyhhcmdzKToKKyAgICByZXR1cm4gJyAnLmpvaW4oYXJncykKKworCitkZWYgbGlzdF9jYXNlcyhhcmdzKToKKyAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsICctbScsICd0ZXN0JywgJy0tbGlzdC1jYXNlcyddCisgICAgY21kLmV4dGVuZChhcmdzLnRlc3RfYXJncykKKyAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKKyAgICB0cnk6CisgICAgICAgIHN0ZG91dCA9IHByb2MuY29tbXVuaWNhdGUoKVswXQorICAgIGV4Y2VwdDoKKyAgICAgICAgcHJvYy5zdGRvdXQuY2xvc2UoKQorICAgICAgICBwcm9jLmtpbGwoKQorICAgICAgICBwcm9jLndhaXQoKQorICAgICAgICByYWlzZQorICAgIGV4aXRjb2RlID0gcHJvYy53YWl0KCkKKyAgICBpZiBleGl0Y29kZToKKyAgICAgICAgY21kID0gZm9ybWF0X3NoZWxsX2FyZ3MoY21kKQorICAgICAgICBwcmludCgiRmFpbGVkIHRvIGxpc3QgdGVzdHM6ICVzIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlcyIKKyAgICAgICAgICAgICAgJSAoY21kLCBleGl0Y29kZSkpCisgICAgICAgIHN5cy5leGl0KGV4aXRjb2RlKQorICAgIHRlc3RzID0gc3Rkb3V0LnNwbGl0bGluZXMoKQorICAgIHJldHVybiB0ZXN0cworCisKK2RlZiBydW5fdGVzdHMoYXJncywgdGVzdHMsIGh1bnRybGVha3M9Tm9uZSk6CisgICAgdG1wID0gdGVtcGZpbGUubWt0ZW1wKCkKKyAgICB0cnk6CisgICAgICAgIHdyaXRlX3Rlc3RzKHRtcCwgdGVzdHMpCisKKyAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAnLW0nLCAndGVzdCcsICctLW1hdGNoZmlsZScsIHRtcF0KKyAgICAgICAgY21kLmV4dGVuZChhcmdzLnRlc3RfYXJncykKKyAgICAgICAgcHJpbnQoIisgJXMiICUgZm9ybWF0X3NoZWxsX2FyZ3MoY21kKSkKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oY21kKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBleGl0Y29kZSA9IHByb2Mud2FpdCgpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHByb2Mua2lsbCgpCisgICAgICAgICAgICBwcm9jLndhaXQoKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIGV4aXRjb2RlCisgICAgZmluYWxseToKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHModG1wKToKKyAgICAgICAgICAgIG9zLnVubGluayh0bXApCisKKworZGVmIHBhcnNlX2FyZ3MoKToKKyAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWknLCAnLS1pbnB1dCcsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdUZXN0IG5hbWVzIHByb2R1Y2VkIGJ5IC0tbGlzdC10ZXN0cyB3cml0dGVuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludG8gYSBmaWxlLiBJZiBub3Qgc2V0LCBydW4gLS1saXN0LXRlc3RzJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctbycsICctLW91dHB1dCcsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdSZXN1bHQgb2YgdGhlIGJpc2VjdGlvbicpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLW4nLCAnLS1tYXgtdGVzdHMnLCB0eXBlPWludCwgZGVmYXVsdD0xLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nTWF4aW11bSBudW1iZXIgb2YgdGVzdHMgdG8gc3RvcCB0aGUgYmlzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhkZWZhdWx0OiAxKScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLU4nLCAnLS1tYXgtaXRlcicsIHR5cGU9aW50LCBkZWZhdWx0PTEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J01heGltdW0gbnVtYmVyIG9mIGJpc2VjdGlvbiBpdGVyYXRpb25zICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhkZWZhdWx0OiAxMDApJykKKyAgICAjIEZJWE1FOiBkb2N1bWVudCB0aGF0IGZvbGxvd2luZyBhcmd1bWVudHMgYXJlIHRlc3QgYXJndW1lbnRzCisKKyAgICBhcmdzLCB0ZXN0X2FyZ3MgPSBwYXJzZXIucGFyc2Vfa25vd25fYXJncygpCisgICAgYXJncy50ZXN0X2FyZ3MgPSB0ZXN0X2FyZ3MKKyAgICByZXR1cm4gYXJncworCisKK2RlZiBtYWluKCk6CisgICAgYXJncyA9IHBhcnNlX2FyZ3MoKQorCisgICAgaWYgYXJncy5pbnB1dDoKKyAgICAgICAgd2l0aCBvcGVuKGFyZ3MuaW5wdXQpIGFzIGZwOgorICAgICAgICAgICAgdGVzdHMgPSBbbGluZS5zdHJpcCgpIGZvciBsaW5lIGluIGZwXQorICAgIGVsc2U6CisgICAgICAgIHRlc3RzID0gbGlzdF9jYXNlcyhhcmdzKQorCisgICAgcHJpbnQoIlN0YXJ0IGJpc2VjdGlvbiB3aXRoICVzIHRlc3RzIiAlIGxlbih0ZXN0cykpCisgICAgcHJpbnQoIlRlc3QgYXJndW1lbnRzOiAlcyIgJSBmb3JtYXRfc2hlbGxfYXJncyhhcmdzLnRlc3RfYXJncykpCisgICAgcHJpbnQoIkJpc2VjdGlvbiB3aWxsIHN0b3Agd2hlbiBnZXR0aW5nICVzIG9yIGxlc3MgdGVzdHMgIgorICAgICAgICAgICIoLW4vLS1tYXgtdGVzdHMgb3B0aW9uKSwgb3IgYWZ0ZXIgJXMgaXRlcmF0aW9ucyAiCisgICAgICAgICAgIigtTi8tLW1heC1pdGVyIG9wdGlvbikiCisgICAgICAgICAgJSAoYXJncy5tYXhfdGVzdHMsIGFyZ3MubWF4X2l0ZXIpKQorICAgIG91dHB1dCA9IHdyaXRlX291dHB1dChhcmdzLm91dHB1dCwgdGVzdHMpCisgICAgcHJpbnQoKQorCisgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgaXRlcmF0aW9uID0gMQorICAgIHRyeToKKyAgICAgICAgd2hpbGUgbGVuKHRlc3RzKSA+IGFyZ3MubWF4X3Rlc3RzIGFuZCBpdGVyYXRpb24gPD0gYXJncy5tYXhfaXRlcjoKKyAgICAgICAgICAgIG50ZXN0ID0gbGVuKHRlc3RzKQorICAgICAgICAgICAgbnRlc3QgPSBtYXgobnRlc3QgLy8gMiwgMSkKKyAgICAgICAgICAgIHN1YnRlc3RzID0gcmFuZG9tLnNhbXBsZSh0ZXN0cywgbnRlc3QpCisKKyAgICAgICAgICAgIHByaW50KCJbK10gSXRlcmF0aW9uICVzOiBydW4gJXMgdGVzdHMvJXMiCisgICAgICAgICAgICAgICAgICAlIChpdGVyYXRpb24sIGxlbihzdWJ0ZXN0cyksIGxlbih0ZXN0cykpKQorICAgICAgICAgICAgcHJpbnQoKQorCisgICAgICAgICAgICBleGl0Y29kZSA9IHJ1bl90ZXN0cyhhcmdzLCBzdWJ0ZXN0cykKKworICAgICAgICAgICAgcHJpbnQoInJhbiAlcyB0ZXN0cy8lcyIgJSAobnRlc3QsIGxlbih0ZXN0cykpKQorICAgICAgICAgICAgcHJpbnQoImV4aXQiLCBleGl0Y29kZSkKKyAgICAgICAgICAgIGlmIGV4aXRjb2RlOgorICAgICAgICAgICAgICAgIHByaW50KCJUZXN0cyBmYWlsZWQ6IHVzZSB0aGlzIG5ldyBzdWJ0ZXN0IikKKyAgICAgICAgICAgICAgICB0ZXN0cyA9IHN1YnRlc3RzCisgICAgICAgICAgICAgICAgb3V0cHV0ID0gd3JpdGVfb3V0cHV0KGFyZ3Mub3V0cHV0LCB0ZXN0cykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcHJpbnQoIlRlc3RzIHN1Y2NlZWRlZDogc2tpcCB0aGlzIHN1YnRlc3QsIHRyeSBhIG5ldyBzdWJic2V0IikKKyAgICAgICAgICAgIHByaW50KCkKKyAgICAgICAgICAgIGl0ZXJhdGlvbiArPSAxCisgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICBwcmludCgpCisgICAgICAgIHByaW50KCJCaXNlY3Rpb24gaW50ZXJydXB0ZWQhIikKKyAgICAgICAgcHJpbnQoKQorCisgICAgcHJpbnQoIlRlc3RzICglcyk6IiAlIGxlbih0ZXN0cykpCisgICAgZm9yIHRlc3QgaW4gdGVzdHM6CisgICAgICAgIHByaW50KCIqICVzIiAlIHRlc3QpCisgICAgcHJpbnQoKQorCisgICAgaWYgb3V0cHV0OgorICAgICAgICBwcmludCgiT3V0cHV0IHdyaXR0ZW4gaW50byAlcyIgJSBvdXRwdXQpCisKKyAgICBkdCA9IG1hdGguY2VpbCh0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUpCisgICAgaWYgbGVuKHRlc3RzKSA8PSBhcmdzLm1heF90ZXN0czoKKyAgICAgICAgcHJpbnQoIkJpc2VjdGlvbiBjb21wbGV0ZWQgaW4gJXMgaXRlcmF0aW9ucyBhbmQgJXMiCisgICAgICAgICAgICAgICUgKGl0ZXJhdGlvbiwgZGF0ZXRpbWUudGltZWRlbHRhKHNlY29uZHM9ZHQpKSkKKyAgICAgICAgc3lzLmV4aXQoMSkKKyAgICBlbHNlOgorICAgICAgICBwcmludCgiQmlzZWN0aW9uIGZhaWxlZCBhZnRlciAlcyBpdGVyYXRpb25zIGFuZCAlcyIKKyAgICAgICAgICAgICAgJSAoaXRlcmF0aW9uLCBkYXRldGltZS50aW1lZGVsdGEoc2Vjb25kcz1kdCkpKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9jcmFzaGVycy93YXJuaW5nc19kZWxfY3Jhc2hlci5weSBiL0xpYi90ZXN0L2NyYXNoZXJzL3dhcm5pbmdzX2RlbF9jcmFzaGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZTY4MDUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC9jcmFzaGVycy93YXJuaW5nc19kZWxfY3Jhc2hlci5weQpAQCAtMCwwICsxLDI5IEBACisiIiIKK0V4cG9zZSBhIHJhY2UgaW4gdGhlIF93YXJuaW5ncyBtb2R1bGUsIHdoaWNoIGlzIHRoZSBDIGJhY2tlbmQgZm9yIHRoZQord2FybmluZ3MgbW9kdWxlLiBUaGUgIl93YXJuaW5ncyIgbW9kdWxlIHRyaWVzIHRvIGFjY2VzcyBhdHRyaWJ1dGVzIG9mIHRoZQorIndhcm5pbmdzIiBtb2R1bGUgKGJlY2F1c2Ugb2YgdGhlIEFQSSBpdCBoYXMgdG8gc3VwcG9ydCksIGJ1dCBkb2luZyBzbworZHVyaW5nIGludGVycHJldGVyIHNodXRkb3duIGlzIHByb2JsZW1hdGljLiBTcGVjaWZpY2FsbHksIHRoZSBjYWxsIHRvCitQeUltcG9ydF9HZXRNb2R1bGVEaWN0KCkgaW4gUHl0aG9uL193YXJuaW5ncy5jOmdldF93YXJuaW5nc19hdHRyIHdpbGwKK2Fib3J0KCkgaWYgdGhlIG1vZHVsZXMgZGljdCBoYXMgYWxyZWFkeSBiZWVuIGNsZWFuZWQgdXAuCisKK1RoaXMgY3Jhc2hlciBpcyB0aW1pbmctZGVwZW5kZW50LCBhbmQgbW9yZSB0aHJlYWRzIChOVU1fVEhSRUFEUykgbWF5IGJlCituZWNlc3NhcnkgdG8gZXhwb3NlIGl0IHJlbGlhYmx5IG9uIGRpZmZlcmVudCBzeXN0ZW1zLgorIiIiCisKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB3YXJuaW5ncworCitOVU1fVEhSRUFEUyA9IDEwCisKK2NsYXNzIFdhcm5PbkRlbChvYmplY3QpOgorICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICB3YXJuaW5ncy53YXJuKCJvaCBubyBzb21ldGhpbmcgd2VudCB3cm9uZyIsIFVzZXJXYXJuaW5nKQorCitkZWYgZG9fd29yaygpOgorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHcgPSBXYXJuT25EZWwoKQorCitmb3IgaSBpbiByYW5nZShOVU1fVEhSRUFEUyk6CisgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWRvX3dvcmspCisgICAgdC5zZXREYWVtb24oMSkKKyAgICB0LnN0YXJ0KCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2RoMTAyNC5wZW0gYi9MaWIvdGVzdC9kaDEwMjQucGVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzkxMTc2Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L2RoMTAyNC5wZW0KKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLS0tLS0tQkVHSU4gREggUEFSQU1FVEVSUy0tLS0tCi1NSUdIQW9HQkFJYnp3MXM5Q1Q4U1Y1eXY2TDdlc2RBZFpZWmpQaTNxV0ZzNjFDWVRGRlFuZjJzL2QwOU5ZYUp0Ci1ycnZKaEl6V2F2cW51ZTcxcVhDZjgzL0ozbnozRkV3VVUvTDBtR3loZVZic1NIaUk2NHdVbzN1NTB3SzVJZ28wCi1STnMvTEQwaXJzN20waWNaLy9oaWphZlRVK0pPQml1QTh6TUkrb1pmVTdCR3VjOVhyVXByQWdFQwotLS0tLS1FTkQgREggUEFSQU1FVEVSUy0tLS0tCi0KLUdlbmVyYXRlZCB3aXRoOiBvcGVuc3NsIGRocGFyYW0gLW91dCBkaDEwMjQucGVtICAxMDI0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC9mZmRoMzA3Mi5wZW0gYi9MaWIvdGVzdC9mZmRoMzA3Mi5wZW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ2OWJhYwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L2ZmZGgzMDcyLnBlbQpAQCAtMCwwICsxLDQxIEBACisgICAgREggUGFyYW1ldGVyczogKDMwNzIgYml0KQorICAgICAgICBwcmltZToKKyAgICAgICAgICAgIDAwOmZmOmZmOmZmOmZmOmZmOmZmOmZmOmZmOmFkOmY4OjU0OjU4OmEyOmJiOgorICAgICAgICAgICAgNGE6OWE6YWY6ZGM6NTY6MjA6Mjc6M2Q6M2M6ZjE6ZDg6Yjk6YzU6ODM6Y2U6CisgICAgICAgICAgICAyZDozNjo5NTphOTplMTozNjo0MToxNDo2NDozMzpmYjpjYzo5Mzo5ZDpjZToKKyAgICAgICAgICAgIDI0OjliOjNlOmY5OjdkOjJmOmUzOjYzOjYzOjBjOjc1OmQ4OmY2OjgxOmIyOgorICAgICAgICAgICAgMDI6YWU6YzQ6NjE6N2E6ZDM6ZGY6MWU6ZDU6ZDU6ZmQ6NjU6NjE6MjQ6MzM6CisgICAgICAgICAgICBmNToxZjo1ZjowNjo2ZTpkMDo4NTo2Mzo2NTo1NTozZDplZDoxYTpmMzpiNToKKyAgICAgICAgICAgIDU3OjEzOjVlOjdmOjU3OmM5OjM1Ojk4OjRmOjBjOjcwOmUwOmU2OjhiOjc3OgorICAgICAgICAgICAgZTI6YTY6ODk6ZGE6ZjM6ZWY6ZTg6NzI6MWQ6ZjE6NTg6YTE6MzY6YWQ6ZTc6CisgICAgICAgICAgICAzNTozMDphYzpjYTo0Zjo0ODozYTo3OTo3YTpiYzowYTpiMTo4MjpiMzoyNDoKKyAgICAgICAgICAgIGZiOjYxOmQxOjA4OmE5OjRiOmIyOmM4OmUzOmZiOmI5OjZhOmRhOmI3OjYwOgorICAgICAgICAgICAgZDc6ZjQ6Njg6MWQ6NGY6NDI6YTM6ZGU6Mzk6NGQ6ZjQ6YWU6NTY6ZWQ6ZTc6CisgICAgICAgICAgICA2Mzo3MjpiYjoxOTowYjowNzphNzpjODplZTowYTo2ZDo3MDo5ZTowMjpmYzoKKyAgICAgICAgICAgIGUxOmNkOmY3OmUyOmVjOmMwOjM0OjA0OmNkOjI4OjM0OjJmOjYxOjkxOjcyOgorICAgICAgICAgICAgZmU6OWM6ZTk6ODU6ODM6ZmY6OGU6NGY6MTI6MzI6ZWU6ZjI6ODE6ODM6YzM6CisgICAgICAgICAgICBmZTozYjoxYjo0Yzo2ZjphZDo3MzozYjpiNTpmYzpiYzoyZTpjMjoyMDowNToKKyAgICAgICAgICAgIGM1OjhlOmYxOjgzOjdkOjE2OjgzOmIyOmM2OmYzOjRhOjI2OmMxOmIyOmVmOgorICAgICAgICAgICAgZmE6ODg6NmI6NDI6Mzg6NjE6MWY6Y2Y6ZGM6ZGU6MzU6NWI6M2I6NjU6MTk6CisgICAgICAgICAgICAwMzo1YjpiYzozNDpmNDpkZTpmOTo5YzowMjozODo2MTpiNDo2ZjpjOTpkNjoKKyAgICAgICAgICAgIGU2OmM5OjA3OjdhOmQ5OjFkOjI2OjkxOmY3OmY3OmVlOjU5OjhjOmIwOmZhOgorICAgICAgICAgICAgYzE6ODY6ZDk6MWM6YWU6ZmU6MTM6MDk6ODU6MTM6OTI6NzA6YjQ6MTM6MGM6CisgICAgICAgICAgICA5MzpiYzo0Mzo3OTo0NDpmNDpmZDo0NDo1MjplMjpkNzo0ZDpkMzo2NDpmMjoKKyAgICAgICAgICAgIGUyOjFlOjcxOmY1OjRiOmZmOjVjOmFlOjgyOmFiOjljOjlkOmY2OjllOmU4OgorICAgICAgICAgICAgNmQ6MmI6YzU6MjI6MzY6M2E6MGQ6YWI6YzU6MjE6OTc6OWI6MGQ6ZWE6ZGE6CisgICAgICAgICAgICAxZDpiZjo5YTo0MjpkNTpjNDo0ODo0ZTowYTpiYzpkMDo2YjpmYTo1MzpkZDoKKyAgICAgICAgICAgIGVmOjNjOjFiOjIwOmVlOjNmOmQ1OjlkOjdjOjI1OmU0OjFkOjJiOjY2OmM2OgorICAgICAgICAgICAgMmU6Mzc6ZmY6ZmY6ZmY6ZmY6ZmY6ZmY6ZmY6ZmYKKyAgICAgICAgZ2VuZXJhdG9yOiAyICgweDIpCisgICAgICAgIHJlY29tbWVuZGVkLXByaXZhdGUtbGVuZ3RoOiAyNzYgYml0cworLS0tLS1CRUdJTiBESCBQQVJBTUVURVJTLS0tLS0KK01JSUJqQUtDQVlFQS8vLy8vLy8vLy8rdCtGUllvcnRLbXEvY1ZpQW5QVHp4MkxuRmc4NHROcFdwNFRaQkZHUXoKKys4eVRuYzRrbXo3NWZTL2pZMk1NZGRqMmdiSUNyc1JoZXRQZkh0WFYvV1ZoSkRQMUgxOEdidENGWTJWVlBlMGEKKzg3VlhFMTUvVjhrMW1FOE1jT0RtaTNmaXBvbmE4Ky9vY2gzeFdLRTJyZWMxTUt6S1QwZzZlWHE4Q3JHQ3N5VDcKK1lkRUlxVXV5eU9QN3VXcmF0MkRYOUdnZFQwS2ozamxOOUs1VzdlZGpjcnNaQ3dlbnlPNEtiWENlQXZ6aHpmZmkKKzdNQTBCTTBvTkM5aGtYTCtuT21GZy8rT1R4SXk3dktCZzhQK094dE1iNjF6TzdYOHZDN0NJQVhGanZHRGZSYUQKK3NzYnpTaWJCc3UvNmlHdENPR0Vmejl6ZU5WczdaUmtEVzd3MDlONzVuQUk0WWJSdnlkYm15UWQ2MlIwbWtmZjMKKzdsbU1zUHJCaHRrY3J2NFRDWVVUa25DMEV3eVR2RU41UlBUOVJGTGkxMDNUWlBMaUhuSDFTLzljcm9Lcm5KMzIKK251aHRLOFVpTmpvTnE4VWhsNXNONnRvZHY1cEMxY1JJVGdxODBHdjZVOTN2UEJzZzdqL1ZuWHdsNUIwclpzWXUKK04vLy8vLy8vLy8vL0FnRUNBZ0lCRkE9PQorLS0tLS1FTkQgREggUEFSQU1FVEVSUy0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9mb3JrX3dhaXQucHkgYi9MaWIvdGVzdC9mb3JrX3dhaXQucHkKaW5kZXggMjY0NmNiZC4uYjkwMDQ2MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvZm9ya193YWl0LnB5CisrKyBiL0xpYi90ZXN0L2Zvcmtfd2FpdC5weQpAQCAtMTMsOCArMTMsOSBAQAogIiIiCiAKIGltcG9ydCBvcywgc3lzLCB0aW1lLCB1bml0dGVzdAotaW1wb3J0IHRlc3QudGVzdF9zdXBwb3J0IGFzIHRlc3Rfc3VwcG9ydAotdGhyZWFkID0gdGVzdF9zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3RocmVhZCcpCitpbXBvcnQgdGVzdC5zdXBwb3J0IGFzIHN1cHBvcnQKKwordGhyZWFkaW5nID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQogCiBMT05HU0xFRVAgPSAyCiBTSE9SVFNMRUVQID0gMC41CkBAIC0yMyw4ICsyNCwxOSBAQAogY2xhc3MgRm9ya1dhaXQodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLl90aHJlYWRpbmdfa2V5ID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQogICAgICAgICBzZWxmLmFsaXZlID0ge30KICAgICAgICAgc2VsZi5zdG9wID0gMAorICAgICAgICBzZWxmLnRocmVhZHMgPSBbXQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICAjIFN0b3AgdGhyZWFkcworICAgICAgICBzZWxmLnN0b3AgPSAxCisgICAgICAgIGZvciB0aHJlYWQgaW4gc2VsZi50aHJlYWRzOgorICAgICAgICAgICAgdGhyZWFkLmpvaW4oKQorICAgICAgICB0aHJlYWQgPSBOb25lCisgICAgICAgIGRlbCBzZWxmLnRocmVhZHNbOl0KKyAgICAgICAgc3VwcG9ydC50aHJlYWRpbmdfY2xlYW51cCgqc2VsZi5fdGhyZWFkaW5nX2tleSkKIAogICAgIGRlZiBmKHNlbGYsIGlkKToKICAgICAgICAgd2hpbGUgbm90IHNlbGYuc3RvcDoKQEAgLTQ4LDcgKzYwLDkgQEAKIAogICAgIGRlZiB0ZXN0X3dhaXQoc2VsZik6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKE5VTV9USFJFQURTKToKLSAgICAgICAgICAgIHRocmVhZC5zdGFydF9uZXcoc2VsZi5mLCAoaSwpKQorICAgICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5mLCBhcmdzPShpLCkpCisgICAgICAgICAgICB0aHJlYWQuc3RhcnQoKQorICAgICAgICAgICAgc2VsZi50aHJlYWRzLmFwcGVuZCh0aHJlYWQpCiAKICAgICAgICAgdGltZS5zbGVlcChMT05HU0xFRVApCiAKQEAgLTc0LDYgKzg4LDMgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgUGFyZW50CiAgICAgICAgICAgICBzZWxmLndhaXRfaW1wbChjcGlkKQotICAgICAgICAgICAgIyBUZWxsIHRocmVhZHMgdG8gZGllCi0gICAgICAgICAgICBzZWxmLnN0b3AgPSAxCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDIqU0hPUlRTTEVFUCkgIyBXYWl0IGZvciB0aHJlYWRzIHRvIGRpZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvaW5zcGVjdF9mb2RkZXIucHkgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQppbmRleCA1Yzg3YWU2Li41NDg3NjVjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQorKysgYi9MaWIvdGVzdC9pbnNwZWN0X2ZvZGRlci5weQpAQCAtNTYsMyArNTYsOSBAQAogCiBjbGFzcyBGZXN0ZXJpbmdHb2IoTWFsb2Rvcm91c1BlcnZlcnQsIFBhcnJvdERyb3BwaW5ncyk6CiAgICAgcGFzcworCitjdXJyZW50ZnJhbWUgPSBpbnNwZWN0LmN1cnJlbnRmcmFtZSgpCit0cnk6CisgICAgcmFpc2UgRXhjZXB0aW9uKCkKK2V4Y2VwdDoKKyAgICB0YiA9IHN5cy5leGNfaW5mbygpWzJdCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9rZXljZXJ0LnBhc3N3ZC5wZW0gYi9MaWIvdGVzdC9rZXljZXJ0LnBhc3N3ZC5wZW0KaW5kZXggZTkwNTc0OC4uMGFkNjk2MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qva2V5Y2VydC5wYXNzd2QucGVtCisrKyBiL0xpYi90ZXN0L2tleWNlcnQucGFzc3dkLnBlbQpAQCAtMSwzMyArMSw1MCBAQAogLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQogUHJvYy1UeXBlOiA0LEVOQ1JZUFRFRAotREVLLUluZm86IERFUy1FREUzLUNCQywxQThEOUQyQTAyRUM2OThBCitERUstSW5mbzogREVTLUVERTMtQ0JDLEU3NDUyODEzNkI5MEQyREQKIAota0pZYmZaOEwwc2ZlOU90eTNndzBhbG9Oblk1RThmZWdSZlFMWmxOb3hUbDZqTnQwbkl3SThrREozNkNaZ1I5YwotdTNGREptL0txcmZVb3o4dlcrcUVuV2hTRzdRUFgyd1dHUEhkNEs5NFl6L0ZnclJ6WjBEb0s3WHhYcTlnT3RWQQotQVZHUWhuejMycCs2V2hmR3NDcjlBclhFd1JaclRrL0Z2ekVQYVU1Zkhjb1Nrck5WQUdYOElwU1ZrU0R3RURRcgotR3YxNytjZms5OVVWMU9DemE2eUtIb0ZrVHRyQytQWlU3MUxvbUJhYml2UzJPYzRCOWhZdVNSMmhGMDF3VEhQKwotWWxXTmFnWk9PVnROejRvS0s5eDllTlFwbWZRWFF2UFBUZnVzZXhLSWJLZlpyTXZKb3hjbTFnZmNaMEgvd0s2UAotNndtWFNHMzVxTU9PenRDWk50cGVyanMxd3pFQlh6bnlLOFFtTGNBSkJqa2ZhckFCSlg5dkJFelpWME9VS2h5Kwotbm9PUkZ3SFRsbHBoYm15ZExodTZlaExVWk1IUGh6QVM1VU43c3J0cFNOODFlZXJETXkwUk1VQXdBNy9Qb2ZYMQotOTRNZTg1UThqUDBQQzlFVGRzSmNQcUx6QVBFVEVZdTBFTGV3S1JjcmR5V2krdGxMRnJwRTVLVC9zNWVjYmw5bAotN0I2MVU0S2ZkMVBJWGMvc2lJTmhVM0EzYllLKzg0NVl5VUFyVU9uS2Yxa0VveDdwMVJwRDd5RnFWVDA0bFJUbwotY2liTktBVEJ1c1hTdUJycDJHNkdOdWhXRU9TYWZXQ0tKUUF6Z0NZSXA2WlRWMmtoaE1VR3BwYy8ySDNDRjZjTwotelgwS3RsUFZaQzdoTGtCNkhUOFN4WVV3RjF6cVdZNysvWFBQZGMzN01lRVo4N1EzVXVad3FPUkxZK1owaHBndAotTDVKWEJDb2tsWmhDQWFOMkdxd0ZMWHRHaVJTUkZHWTd4WEloYkRUbEU2NVd2MVdHR2dETE1LR0UxZ096M3lBbwotMmpqRzEreUFISlVkRTY5WFRGSFNxU2t2YWxvQTFXMDNMZE1YWjlWdVFKL3lTWENpZTZBQkFRPT0KK1dSSFZEMlBKWFBxakZTSGc5MkhVUklzVXp2c1RFNGE5b2kwU0M1eU1CRktOV0E1WjkzM2dLM1hUaWZwNmp1bDUKK3pwTllpOGpCWFoyRXFKSkJ4Q3VWY2VmbVhTeEwwcTdDTWVqMjVUZElDNEJWQUZKVnZlZXBySFBVRmtOQjBJTTEKK2dvNUxnNFlvZllxVENnM09FM2s3V3ZmUjNaZzFjUll4a3NES08rV05aZ1d5S0JleDVYNHZqT2l5VXFEbDNHS3QKK2tRWG5rZzFWZ1BWMlZyeDkzUzlYTmRFTE5SVGd1d2YrWEcwZmtodFlocC96Q3RvOHVLVGd5NWVsSzJQL3VsR3AKKzdmZTZ1ajdoL3VOOUw3RU9DNkNqUmtpdHl3ZmVCVUVSNzM5bU9jR1Q0aW1TRko5RzI3VENxUHpqMmVhM3V1YWYKKy92MXhoa1E0TTZsTlkvZ2NSZmdWcENYaFc0M2FBUVY4WFhRUk1KVHFMbXo1WTVoWVRLbitVZ3E1dkovbmd5Uk0KK2x1MWdVSm5ZWWFlbUJUYjRoYm02YUJ2bllLOW1PUmE4OTFQbWYrdnhVOXJZdVFJZFZBaHZ2WGg0S0JyZVNFQkkKKzFBRnk2ZEZLWGw4WktzNldycTV3UGVmbUZGa1JtWjhPQmlpcTBmcDJBcENSR1p3NkxzakNnd3JSTTM4SmlZN2QKKzNPZHNKcEt2Ull1ZmdVeXV1elVFMHhBK0U0eU12RDQ4TTlwUHEyZkM4TzVnaXVHTDF1RWVrUVdYSnVxKzZaUkkKK1hZS0llU2t1UUFMYlgzUkF6Q1BYVFVFTXRDWVhLbS9neHJyd0orQmV0NG9iMmFtZjNNWDB1dld3T3VBcSsrRmsKK0owSEZTQnhyd3ZJV09oeVFYT1B1SmRBTjhQWEE3ZFdPWGZPZ09NRjBoUVlxWkNsM1Q0VGlWWkpid1ZRdGcxc04KK2RPN29BRDVaUEhpS3p2dmVadUI2azFGbEJHOGowVHlBQys0NENoeGtQREQzakY0ZGQ2ekdlNjJzRGY4NXA0L2QKK1c4MGd4SmVEM3huRHhHMGVQUG5zK0d1S1VwVWFXUzdXdkh0RHBlRlcxSkVodk9xZjhwMUxpOWE3UnpXVm84TUwKK21HVGRRZ0JJWUlmNi9mazY5cEZLbDBuS3RCVTc1S2F1blp6NG5BbWQ5Yk5FRDRuYUR1ck1CZzQ0dTVUdk9EYkoKK3ZnWUlZWElZak52T05ic2tKYXRWcnJUUzh6Y2gyTndWSWpDaThML2hlY3dCWGJJWHpvMXBFQ3BjNkJVN3NRVDgKKytpOXNES0JlSmNSaXB6ZktaTkh2bk8xOW1VWmFQQ1k4K2EvZjljMjFEZ0tYeitiZ0xjSmJvaHBTYWVHTThHZmMKK2FaZDNWcDluM09KM2cyelFSMSsrSE85djF2Ui93TEVMdTZNZXlka3ZNZHVITG1PUENuNTRnWjl6NTFaTlBBd2EKK3FmRklzSCttTGg5a3MwSDc0c3NGNTl1SWxzdGtnQjl6bVpIdi9RMGRLOVpmRy9WRUg2clNnZEVUV2haeGhvTVEKK1o5MmpYQkVGVDB6aEkzcnJJUE5ZK1hTN2VKQ1FJYzF3Yzg0RWEzY1JrN1NQK1Mxb2czSnRBeFg1NnlrVXd0a00KK0xRL0R3d2E2aDFhcUQwbDJkNXgxL0JTZGF2dFR1U2VnSVNSV1E0aU9tU3ZFZGxGUDdINGc2UlprL29rYkx6TUQKK0V2cTVnTmM3dmxYaFZhd29RVThKQ2FuSjVaYmJXbklSWmZpWHhCUVM0bHBZUEt2SnQ0TUw5ei94KzgyWHhjWHYKK1o5M04yV2VwN3dXVzVPd1MyTGNRY09nWlJEU0lQb21wd28vMHBNRkdPUys1b29ydDBaRFJIZG1tR0xqdkJjQ2IKKzFLUW1LUTQrOGJySS8zcmpSenRzNnVETGpUR054U0NpZU5zbnFod0hVdjlNZzlXRFNXdXBjR2EreDI3TDg5eDMKK3JPYmY2KzN1bWNGTFNqSXpVOHd1djFoeC9lL3k5OEt2N0JEQk5ZcEFyNmtWTXJMbnpZakFmSmJCbXFseGt6a1EKK0lnUXpncmsyUVpvVGRnd1IrUzM3NE5BTU8wQUU1SWxPKy9xYTZxcDJTT1JHVERYNjRJM1VOdz09CiAtLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQogLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDVkRDQ0FiMmdBd0lCQWdJSkFOZkhPQmtacjhKT01BMEdDU3FHU0liM0RRRUJCUVVBTUY4eEN6QUpCZ05WCi1CQVlUQWxoWk1SY3dGUVlEVlFRSEV3NURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2hNYVVIbDBhRzl1Ci1JRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERBZUZ3MHhNREV3Ci1NRGd5TXpBeE5UWmFGdzB5TURFd01EVXlNekF4TlRaYU1GOHhDekFKQmdOVkJBWVRBbGhaTVJjd0ZRWURWUVFICi1FdzVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNoTWFVSGwwYUc5dUlGTnZablIzWVhKbElFWnZkVzVrCi1ZWFJwYjI0eEVqQVFCZ05WQkFNVENXeHZZMkZzYUc5emREQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Ci1nWWtDZ1lFQTIxdlQ1aXNxN0Y2OGFtWXV1TnBTRmxLRFByTVVDYTRZV1lxWlJ0Mk9aKy8zTkthWjJ4QWlTd3I3Ci02TXJRRjcwdDVuTGJTUHBxRTUrNVZyUzU4U1krZy9zWExpRmQ2QXBsSDF3Slp3aDc4RG9mYkZZWFVnZ2t0Rk10Ci1wVHlpWDhqdFA2NmJrY1BrREFEQTA4OVJJMVRRUjZDYStuN0hGYTdjMWZhYlZWNmkzemtDQXdFQUFhTVlNQll3Ci1GQVlEVlIwUkJBMHdDNElKYkc5allXeG9iM04wTUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUhQY3RRQkVRNHdkCi1CSjYrSmNwSXJhb3BMbjhCR2hiak5XajQwbW1ScVdCL05BV0Y2TTVuZTdLcEdBdTd0TGVHNGhiMXpMYWxkSzhHCi1seHkyR1BTUkY2TEZTNDhkcEVqMkhiTXYybnZ2Nnh4YWxETUo5K0RpY1dnQUtUUTZiY1gyajNHVWtDUjBnL1QxCi1DUmxOQkFBbHZoS3pPN0NscGY5bDBZS0JFZnJhSkJ5WAorTUlJRFdUQ0NBa0dnQXdJQkFnSUpBUG02QjIxYmFyMmJNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GOHhDekFKQmdOVgorQkFZVEFsaFpNUmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNnd2FVSGwwYUc5dQorSUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEVqQVFCZ05WQkFNTUNXeHZZMkZzYUc5emREQWVGdzB4T0RBeAorTVRreE9UQTVNRFphRncweU9EQXhNVGN4T1RBNU1EWmFNRjh4Q3pBSkJnTlZCQVlUQWxoWk1SY3dGUVlEVlFRSAorREE1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDZ3dhVUhsMGFHOXVJRk52Wm5SM1lYSmxJRVp2ZFc1aworWVhScGIyNHhFakFRQmdOVkJBTU1DV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUAorQURDQ0FRb0NnZ0VCQUt2dnNYMmdFdGk0c2h2ZTNpWU1jK2pFNFNlN1dIczFCb2wyZjIxSDhxTmJvRE9GZGViMQorUktIam1xM2V4SHBhanl3T1VFZ25lOW5LSEpZLzNmMnBoUjRZNWtscUc2bGlMZ2lTcFZ5UmxjQkdiZVQycUVBagorOW9MaUxGVVhMR2ZHRGRzMm1Ud2l2UURMSkJXaTUxajdmZjVrMlByNThmTjV1Z1lNbjI0VDlGTnluMG1vVCtxagorU0ZvQk5tNThsOWpyZGtKU2xnV2ZxUGxiaU1hK21xRG4vU0Z0cndMRjJUcmJmenU0MlNkOVVkSXpNYVNTcnpiTgorc0dtNTNwTmhDaDhLbmRXVVE4R1BQMklzTFBvVVU0cUF0bVp1VHhDeDJTMWNYck45RWttVDY5dGxPSDg0WWZTbgorOTZJaDliV1JjN001eTViZlZkRVZNK2ZLUWwzaEJSZjA1cU1DQXdFQUFhTVlNQll3RkFZRFZSMFJCQTB3QzRJSgorYkc5allXeG9iM04wTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBdFE4ZjM3Y0NFazcvckFjYllSNTNjZTNpSworVnBpaGIwVTJuaTFRakc5VGc5VUlFeGtJR2t3VGlDbTdrd1FMK0dFU3RCdTlBRy9RVnJPamVUcmlSaWRkaFdraworemU4a1JhSTNBQy82M3Q2Vmg5UTF4NlBFU2dlRTRPdEFPOUpwSkNmNEdJTGdsQTc4OVkvYi9HRjh6SlpReFIxMworcXBCNFp3V3c3Z0NCaGRFVzU5dTZDRmVCbWZEYTU4aE04bFd2dVZvUnJUaTdialVlQzZQQW41SFZNelpTeWtodQorNEhhVWZCcDZiS0ZqdXltMitoL1Z2TTFuOEMzY2hqVlNtdXRzTGI2RUxkRDhJSzB2UFYveWY1K0xOMjU2elNzUworZHlVWllkOFh3UWFpb0VNS2RiaEx2bmVoeXpIaVdmUUlVUjNCZGhPTnhvSUpoSHYvRUFvOGVDa0hIWUlGCiAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9rZXljZXJ0LnBlbSBiL0xpYi90ZXN0L2tleWNlcnQucGVtCmluZGV4IDY0MzE4YWEuLjk1NDVkY2YgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2tleWNlcnQucGVtCisrKyBiL0xpYi90ZXN0L2tleWNlcnQucGVtCkBAIC0xLDMxICsxLDQ4IEBACiAtLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KLU1JSUNkd0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQW1Fd2dnSmRBZ0VBQW9HQkFOdGIwK1lyS3V4ZXZHcG0KLUxyamFVaFpTZ3o2ekZBbXVHRm1LbVViZGptZnY5elNtbWRzUUlrc0srK2pLMEJlOUxlWnkyMGo2YWhPZnVWYTAKLXVmRW1Qb1A3Rnk0aFhlZ0taUjljQ1djSWUvQTZIMnhXRjFJSUpMUlRMYVU4b2wvSTdUK3VtNUhENUF3QXdOUFAKLVVTTlUwRWVnbXZwK3h4V3UzTlgybTFWZW90ODVBZ01CQUFFQ2dZQTNaZFo2NzNYMG9leEZscTdBQW1ydXRrSHQKLUNMN0x2d3JwT2lhQmpoeVR4VGVTTld6dnRRQmtJVThET0kwYklhekE0VXJlQUZmZnd0dkV1UG1vbkRiM0YrSXEKLVNNQXU0MlhjR3lWWkVsK2dIbFRQVTlYUlg3blRPWFZ0K01sUlJSeEw2dDlHa0dmVUFYSTNYeEpEWFczYzB2QksKLVVMOXhxRDhjT1JYT2ZFMDZyUUpCQVA4bUVYMUVSa1I2NFB0c29lNDI4MXZqVGxOZkliczdOTVBrVW5ybjlOL1kKLUJMaGpOSWZRM0hGWkc4QlRNTGZYN2tDUzlENTkzRFc1dFY0WjlCUC9jNmNDUVFEY0Z6Q2NWQXJOaDJKU3l3T1EKLVpmVGZSYkpnL1o1THQ5RmtuZ3YxbWVlR05QZ0lNTE44U2c2NzlwQU9PV216ZE1PM1Y3MDZyTlB6U1ZNTUU3RTUKLW9QSWZBa0VBOHBEZGRhclA1dEN2VFRnVXBtVEZiYWttMEtvVFptMitGekhjbkE0alJoK1hOVGpUT3Y5OFk2SWsKLWVPNWQxWm5LWHNlV3ZrWm5jUWd4ZmRuTXFxcGo1d0pBY05xL1JWbmUxRGJZbHdXY2hUMlNpNjVNWW1tSjh0K0YKLTBtY3NVTHFqT25FTXdmNWUrcHRxNUx6d2J5ckhaWXE1Rk5rN29jdWZQdi9aUXJjU1NDK2NGd0pCQUt2T0pCeVMKLXg1NnF5R2VaTE9RbFdTMkpTM0tKbzU5WHVMRkdxY2JnTjlPbTl4RmE0MVliNE45TnZwbEZpdnN2WmR3M20xUS8KLVNQSVhRdVQ4Uk1QRFZOUT0KK01JSUV2UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRQ3I3N0Y5b0JMWXVMSWIKKzN0NG1ESFBveE9FbnUxaDdOUWFKZG45dFIvS2pXNkF6aFhYbTlVU2g0NXF0M3NSNldvOHNEbEJJSjN2WnloeVcKK1A5MzlxWVVlR09aSmFodXBZaTRJa3FWY2taWEFSbTNrOXFoQUkvYUM0aXhWRnl4bnhnM2JOcGs4SXIwQXl5UVYKK291ZFkrMzMrWk5qNitmSHplYm9HREo5dUUvUlRjcDlKcUUvcW8waGFBVFp1ZkpmWTYzWkNVcFlGbjZqNVc0akcKK3ZwcWc1LzBoYmE4Q3hkazYyMzg3dU5rbmZWSFNNekdra3E4MnpiQnB1ZDZUWVFvZkNwM1ZsRVBCano5aUxDejYKK0ZGT0tnTFptYms4UXNka3RYRjZ6ZlJKSmsrdmJaVGgvT0dIMHAvZWlJZlcxa1hPek9jdVczMVhSRlRQbnlrSmQKKzRRVVg5T2FqQWdNQkFBRUNnZ0VBSHBwbVhEYnV3OVowRlZQZzlLTEl5c2lvVHRzZ3o2VkxpWkltOGp1Wks0eDIKK2dsVWgvRDd4dldMMnVEWHJnTiszbGg3aUdVVzEzTGtGeDVTTW5jYmJvOVRJd0k1N1ovWEt2Y25rVndxdXZlK0wKK1JmTEZWYzFRNWxEOWxST3YyclM4NktUYU40THpZejNGS1hpNmR2TWtwUEFzVXRmRVFoTUxrbUlTeXBRUXEvMXoKK0VKYXFvN3I4NU9qTjdlMHdLYXpsS1pwT3pKRWE1RlFMTVZSalRSRmhMRk5iSFhYL3RBZXQyancrdW1BVEtidzgKK2hZZ2l1WjQ0VHdTRWQ5SmVJVi9vU1lXZkkvM0hldHVZVzBydTNjYWl6dFJGMk55U051OGxjc1dnTkM3ZklrdTkKK21jSGp0U056czkxUU4xUWx1N0dRdnZocHQ2T1dEaXJORENXKzQ5V0dhUUtCZ1FEZzlTRGhmRjBqUllzbGdZYkgKK2NxTzRnZ2FGZEhqckFBWXB3bkFndmFuaEZaTC96RXFtNUcxRTdsL2UyZkNrSjlWT1NGTzBBMjA4Y2h2d01jcisKK2RDakhFMnRWZEU4MWFRMnYvRW84M1ZkUzFSY09WNFk3NXlQSDQ4ck1oeFBhSHZ4V0QvRkZEYmYwL1AybXRQQjcKK1NaM2tJZVpNa0Uxd3hkYU8zQUtVYlFvb3p3S0JnUUREcVlnZzdrVnR5Z3lJQ0UxbUI4SHdwNm5VeEZUY3pHN3kKKzRYY3NEcU1JckttdytQYlFsdXZrb0hvU3R4ZVZyc1Rsb0Roa1RqSXJwbVlMeUFpYXpnK1BVSmRrZDZ4cmZMU2oKK1ZWNlg5M1cwUy8xZWdFYjFGMUNHRnh0azh2L1BXSDRLNzZFUEwydnhYZHhqeXd6M0dXbHJMOXlEWWFCMnN6elMKK0RxZ3dWTXF4N1FLQmdEQ0Q3VUYwQnNveWwxM1JYM1hvUFhMdlorU2tSK2UycTUyWjk0QzRKc2tLVkJlaXdYN1kKK3lOQVM4TTRwQm9NQXJEb2oweG1CbTY5cmxLYnF0akxHYm56d3JUZFN6RHBpbTdjV25CUWdVRkxtN2dBRDFFbGIKK0FoWjhCQ0swQnc0Rm5Mb2EyaGZnYTRvRWZkZlVNZ0VFMFc1LytTRU9CZ1dLUlVtdUhVaFJjOTExQW9HQVkyRU4KK1ltU0RZU001d0RJdlZiNWs5QjNFdGV2T2lxTlBTdy9YbnNvRVp0aUVDLzQ0Sm5ReGRsdElCWTkzYkRCcms1SVEKK2Ntb0JNNGg5MWtnUWpzaFF3T01YTWhGU3d2bUJLbUNtL2hyVGJ2TVZ5dFR1dFhmVkQzWlhGS3dUNERXN04wVEYKK0VsaHN4QmgvWXpSejdtRzYySlZqdEZ0MnpETjNsZDJaOFlwdnRYVUNnWUVBNEVKNE9iUzVZeXZjWEFLSEpGbzYKK0Z4bWF2eXJmOExTbTNNRkE2NXVTbkZ2V3VrTVZxcVJNUmVRYzVqdnB4SEtDaXMrWHZuSHp5T2ZMMGdXOVpUaTcKK3RXR0diQmkwVFJKQ2E4Qmt2Z25nVVp4T3hVbE1mZy83Y1Z4T0lCMFRQb1VTZ3hGZC8rcVZ6NEdaTXZyMGRQdTcKK2VBRjdKLzhFQ1Z2YjB3U1BUVUkxTjNjPQogLS0tLS1FTkQgUFJJVkFURSBLRVktLS0tLQogLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDVkRDQ0FiMmdBd0lCQWdJSkFOZkhPQmtacjhKT01BMEdDU3FHU0liM0RRRUJCUVVBTUY4eEN6QUpCZ05WCi1CQVlUQWxoWk1SY3dGUVlEVlFRSEV3NURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2hNYVVIbDBhRzl1Ci1JRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjR4RWpBUUJnTlZCQU1UQ1d4dlkyRnNhRzl6ZERBZUZ3MHhNREV3Ci1NRGd5TXpBeE5UWmFGdzB5TURFd01EVXlNekF4TlRaYU1GOHhDekFKQmdOVkJBWVRBbGhaTVJjd0ZRWURWUVFICi1FdzVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNoTWFVSGwwYUc5dUlGTnZablIzWVhKbElFWnZkVzVrCi1ZWFJwYjI0eEVqQVFCZ05WQkFNVENXeHZZMkZzYUc5emREQ0JuekFOQmdrcWhraUc5dzBCQVFFRkFBT0JqUUF3Ci1nWWtDZ1lFQTIxdlQ1aXNxN0Y2OGFtWXV1TnBTRmxLRFByTVVDYTRZV1lxWlJ0Mk9aKy8zTkthWjJ4QWlTd3I3Ci02TXJRRjcwdDVuTGJTUHBxRTUrNVZyUzU4U1krZy9zWExpRmQ2QXBsSDF3Slp3aDc4RG9mYkZZWFVnZ2t0Rk10Ci1wVHlpWDhqdFA2NmJrY1BrREFEQTA4OVJJMVRRUjZDYStuN0hGYTdjMWZhYlZWNmkzemtDQXdFQUFhTVlNQll3Ci1GQVlEVlIwUkJBMHdDNElKYkc5allXeG9iM04wTUEwR0NTcUdTSWIzRFFFQkJRVUFBNEdCQUhQY3RRQkVRNHdkCi1CSjYrSmNwSXJhb3BMbjhCR2hiak5XajQwbW1ScVdCL05BV0Y2TTVuZTdLcEdBdTd0TGVHNGhiMXpMYWxkSzhHCi1seHkyR1BTUkY2TEZTNDhkcEVqMkhiTXYybnZ2Nnh4YWxETUo5K0RpY1dnQUtUUTZiY1gyajNHVWtDUjBnL1QxCi1DUmxOQkFBbHZoS3pPN0NscGY5bDBZS0JFZnJhSkJ5WAorTUlJRFdUQ0NBa0dnQXdJQkFnSUpBUG02QjIxYmFyMmJNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1GOHhDekFKQmdOVgorQkFZVEFsaFpNUmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNnd2FVSGwwYUc5dQorSUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEVqQVFCZ05WQkFNTUNXeHZZMkZzYUc5emREQWVGdzB4T0RBeAorTVRreE9UQTVNRFphRncweU9EQXhNVGN4T1RBNU1EWmFNRjh4Q3pBSkJnTlZCQVlUQWxoWk1SY3dGUVlEVlFRSAorREE1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDZ3dhVUhsMGFHOXVJRk52Wm5SM1lYSmxJRVp2ZFc1aworWVhScGIyNHhFakFRQmdOVkJBTU1DV3h2WTJGc2FHOXpkRENDQVNJd0RRWUpLb1pJaHZjTkFRRUJCUUFEZ2dFUAorQURDQ0FRb0NnZ0VCQUt2dnNYMmdFdGk0c2h2ZTNpWU1jK2pFNFNlN1dIczFCb2wyZjIxSDhxTmJvRE9GZGViMQorUktIam1xM2V4SHBhanl3T1VFZ25lOW5LSEpZLzNmMnBoUjRZNWtscUc2bGlMZ2lTcFZ5UmxjQkdiZVQycUVBagorOW9MaUxGVVhMR2ZHRGRzMm1Ud2l2UURMSkJXaTUxajdmZjVrMlByNThmTjV1Z1lNbjI0VDlGTnluMG1vVCtxagorU0ZvQk5tNThsOWpyZGtKU2xnV2ZxUGxiaU1hK21xRG4vU0Z0cndMRjJUcmJmenU0MlNkOVVkSXpNYVNTcnpiTgorc0dtNTNwTmhDaDhLbmRXVVE4R1BQMklzTFBvVVU0cUF0bVp1VHhDeDJTMWNYck45RWttVDY5dGxPSDg0WWZTbgorOTZJaDliV1JjN001eTViZlZkRVZNK2ZLUWwzaEJSZjA1cU1DQXdFQUFhTVlNQll3RkFZRFZSMFJCQTB3QzRJSgorYkc5allXeG9iM04wTUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFBdFE4ZjM3Y0NFazcvckFjYllSNTNjZTNpSworVnBpaGIwVTJuaTFRakc5VGc5VUlFeGtJR2t3VGlDbTdrd1FMK0dFU3RCdTlBRy9RVnJPamVUcmlSaWRkaFdraworemU4a1JhSTNBQy82M3Q2Vmg5UTF4NlBFU2dlRTRPdEFPOUpwSkNmNEdJTGdsQTc4OVkvYi9HRjh6SlpReFIxMworcXBCNFp3V3c3Z0NCaGRFVzU5dTZDRmVCbWZEYTU4aE04bFd2dVZvUnJUaTdialVlQzZQQW41SFZNelpTeWtodQorNEhhVWZCcDZiS0ZqdXltMitoL1Z2TTFuOEMzY2hqVlNtdXRzTGI2RUxkRDhJSzB2UFYveWY1K0xOMjU2elNzUworZHlVWllkOFh3UWFpb0VNS2RiaEx2bmVoeXpIaVdmUUlVUjNCZGhPTnhvSUpoSHYvRUFvOGVDa0hIWUlGCiAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9rZXljZXJ0Mi5wZW0gYi9MaWIvdGVzdC9rZXljZXJ0Mi5wZW0KaW5kZXggYzRhMThiZi4uYmI1ZmE2NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qva2V5Y2VydDIucGVtCisrKyBiL0xpYi90ZXN0L2tleWNlcnQyLnBlbQpAQCAtMSwzMSArMSw0OSBAQAogLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi1NSUlDZFFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0FsOHdnZ0piQWdFQUFvR0JBTmNMYU1CN1QvV2k5REJjCi1QbHRHemd0OGN4c3Y1NW03UFFQSE1adm42S2U4eG1OcWNtRXppYjhvcFJ3S0dyQ1Y2VGx0S2VGbE5TZzhkd1FLCi1UbDRrdHlUa0dDVndlUlFKMzdBa0JheXZFQm1sNXMrUUQ0dmxocWtKUHNML05zZCtmbnFuZ09HYzUrNTkrQzZyCi1zM1hwaUxsRjVhaC96OHE5Mk1udzU0bnlwdzFKQWdNQkFBRUNnWUJFM3QyTWo3R2JETFpCNnJqNXlLSmlvVmZJCi1CRDZiU0pFUTdiR2dxZFFrTEZ3cEtNVTdCaU4rZWtqdXd2bXJSa2VzWVo3QkZnWEJQaVFyd2hVNUoyOFRwajVCCi1FT01ZU0lPSGZ6ZGFsaHhER00xcTJvSzlMREZpQ290VGFTZEV6TVlhZGVsNXJtS1hKMHpjSzJKaG8wUEN1RUNmCi10Zi9naFJ4SytoMUhtMHRLZ1FKQkFPNk1kR0RTbUdLWVg2LzVrUERqZTd3ZS9sU0xvclNEa1ltVjB0bVZTaHNjCi1KeGdhR2FhcGF6Y2VBL3NITDNNeXg3RWVua2lwK3lQWURYRURGdkFLTkRFQ1FRRG14c1Q5Tk9wNm1vN0lTdmt5Ci1HRnIydlZIc0o3NDVCTVdvbWE0ckZqUEJWblM4UmtnSytiMkVwRENkWlNyUTl6dzJyOHNLVGdyRXlyRGlHVEVnCi13SnlaQWtBOE9PYzBmbFlNSmcyYUhuWVI2a3dWalBtR0hJNWg1Z2s2NDhFTVB4MHJST3Mxc1hraVV3a0hMQ096Ci1IdmhDcStJdis5dlgybG5WamJpdS9DbXhSZEl4QWtBMVlFZnpvS2VURCtoeVh4VGdCMDRTdjVzUkdlZ2ZYQUV6Ci1pOGdDNHpHNVIvdmNDQTFsckhtdkVpTEVaTC9RY1Q2V0QzYlF2VmcwU0FVOVprSThweEFSQWtBN3lxTVN2UDFsCi1nSlh5NDRSK3J6cExZYjEvUHRpTGtJa2FLRzN4OVRVZlBuZkQyalkwOWZQa1psZnNSVTMvdVMwOUlraFN3aW1WCi1kNXJXb2xqRWZkb3UKK01JSUV2d0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktrd2dnU2xBZ0VBQW9JQkFRQzN1bFJOZmhiT0FleS8KK0Ird0lWWXgrZDVhejdFVjRyaVI2eWkvcUU2RytieGJUdmF5MnBxeVNIdER3ZXVhWVNoMmNWbWNhc0JLS0lGSm0KK3JDRDF6UjhVbUxiNWkyWEZJaW5hMXQzZWVQQ3VCWk1ydlpad2t6bFFVU00xQVp0akdPTy9XMEkzRndPNnk2NDUKKzl4QTVQZHVLSTdTTVlrSC9WTDN6RTVXMUp3TW92djZidk5pVCtHVTVsNm1COXlsQ1RnTHBtVXFvUWhScXovMzUKK3pDelZ5b2grcHBEdlZjcFdZZnZYeXdzWHNnUXdiQUYwUUptOFNTRmkwVFptNXlrdjRXRTE2YWZRcDA4eXVaUzAKKzNVNEszTUpDYTRyeE81OGVkY3hCb3BXWWZRMjlLM2lJTk04ZW5SZnI1cSt1NW1BQWJBTEFFRXZ5RmpnTFdsL3UKKzdhcnhuN2JKQWdNQkFBRUNnZ0VCQUpmTXQ4S2ZIekJ1bnJEblZyazhGYXlZR2tmbU96QU9rYzF5S0V4NmsvVEgKK3pGQitNcWxtNU1hRjk1UDV0M1MwSityMzZKQkFVZEVXQzM4UlVOcEY5QndNWVlHbER4emxzVGRDdUdZTC9xK0oKK282Tk1MWFF0Ny9qUVVRcUduV0F2UEZ6cWhiY0dxT281UjJaVkgyNXNFV3Y5UER1UkkzNVhBZXBJa0RUd1dzZmEKK1A2VWNKSm9QKzR2OUIrK2ZiM3NTTDR6TndwMUJxUzR3eFI4WVRSMHQxelFxT3hKNUJHUHcxSjhhQk1zMXNxNXQKK3F5b3NBUUFUNjNrTHJkcVdvdEhhTTI2UXhqcUVRVU1saDEyWE1XYjVHZEJYVXhidnlHdEVhYnNxc2tHYS9mOEIKK1JkSEU0MzdKOEQ4bCtqeGIybVpMenJsYUgzZHEydGJGR0NlMXJUOHFMUkVDZ1lFQTVDV0l2b0QvWW5ReWRMR0EKK09sRWhDU29jcVVSdXFjb3RnOUV2MG50L0M2MGprci9OSEZMR3BwejlsaHFqSURqaXh0M3NJTUdaTUZ6eFJ0d00KK3BTWWFsM1hpUjdyWnVIYXU5aU0zNXlEaHB1eXRFaUdiWXkxQURha0pSelk1anEvUWE4UmZQUDlBdHVhNXhBZVAKK3E2RGlTbnE5dmhIdjlHK080TXh6SEJtcnc5c0NnWUVBemlpSldGdGhjd3Z1WG4zSnY5eEZZS0ViLzA2cHVaQXgKK0VnUUN6LzNyUHp2NWZtR0Qvc0tWbzFVL0s0ei9lQTgyRE5lS0c4UVJURkpDeFQ4VENOUnhPbUdWN0hkQ1lvL0IKKzRCVE5OdmJLY2RpM2wwajc1a0tvQURnK250NUNENWx6NmdMRzBHclVFblZPMXk1SFZmQ1RiM0JFQWZhMzZDODUKKzlpMHNmUUdpd3lzQ2dZRUF1dXM5azhjZ2RjdDVvejNpTHVWVlNhcmsvSkdDa1QyQitPT2thTENoc0RGVVdlRW0KKzdUT3NhY2xwd2xka212dkFZT3Bsa1pqTUoyR2VsRTJwVm8xWGNBdzNMa21hSTVXcFZ5UVhveGUvaVFHVDhxenkKK0lGbHNoMFNjdzJsYjB0bWN5dzZDY1BrNFRpSE94UnJrek5ydFM5UXdMTStKWngwWFZIcHRQUEtUVmMwQ2dZQXUKK2ovVkZZWTVHLzhEYzBxaElqeVdVUjQ4ZFFOVVF0a0ovQVN6cGNUNDZ6Lzd2em5LVGpidGlZcFNiNzRLYnlVTzUKKzdzeWdyTTREWU9qM3grRXlzMWpIaU5ibHk2SFF4UXRTNHgvZWRDc1JQNU5udGZJKzlYc2dZWk96S2h2ZGpoa2kKK0YzSjBERXpOeG5VQ0lNKzMxMWhWYVJQVEpiZ3Yxc3JPa1RGbElvTnlkUUtCZ1FDNi9PSEdhQy9PZXdRcVJsUksKK01nNUtabTAxL3BrNGlLcnBBNW5HN09UQWVvYTcwTnpYTnRHOEozV25hSjRtV2FuTndOVU95Uk1BTXJzVUF5OXEKK0VlR3FITTVtTUZwWTRUZVZ1TkxMMjFsdS94M0tZdzZtS0wzQ3Rpbm4rSkxBb1lvcUV5OGRlWm5FQTUvdGpZbHoKK1loRkJjaG5VaWNqb1VOMWNoZHBNNlNwVjJRPT0KIC0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJQ1hUQ0NBY2FnQXdJQkFnSUpBTFZRemViVHRyWEZNQTBHQ1NxR1NJYjNEUUVCQlFVQU1HSXhDekFKQmdOVgorTUlJRFlqQ0NBa3FnQXdJQkFnSUpBTEpYUnI4cUY2b0lNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1HSXhDekFKQmdOVgogQkFZVEFsaFpNUmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNnd2FVSGwwYUc5dQogSUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEZUQVRCZ05WQkFNTURHWmhhMlZvYjNOMGJtRnRaVEFlRncweAotTkRFeE1qTXhOekF3TURkYUZ3MHlOREV4TWpBeE56QXdNRGRhTUdJeEN6QUpCZ05WQkFZVEFsaFpNUmN3RlFZRAorT0RBeE1Ua3hPVEE1TURaYUZ3MHlPREF4TVRjeE9UQTVNRFphTUdJeEN6QUpCZ05WQkFZVEFsaFpNUmN3RlFZRAogVlFRSERBNURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2d3YVVIbDBhRzl1SUZOdlpuUjNZWEpsSUVadgotZFc1a1lYUnBiMjR4RlRBVEJnTlZCQU1NREdaaGEyVm9iM04wYm1GdFpUQ0JuekFOQmdrcWhraUc5dzBCQVFFRgotQUFPQmpRQXdnWWtDZ1lFQTF3dG93SHRQOWFMME1GdytXMGJPQzN4ekd5L25tYnM5QThjeG0rZm9wN3pHWTJweQotWVRPSnZ5aWxIQW9hc0pYcE9XMHA0V1UxS0R4M0JBcE9YaVMzSk9RWUpYQjVGQW5mc0NRRnJLOFFHYVhtejVBUAotaStXR3FRayt3djgyeDM1K2VxZUE0WnpuN24zNExxdXpkZW1JdVVYbHFIL1B5cjNZeWZEbmlmS25EVWtDQXdFQQotQWFNYk1Ca3dGd1lEVlIwUkJCQXdEb0lNWm1GclpXaHZjM1J1WVcxbE1BMEdDU3FHU0liM0RRRUJCUVVBQTRHQgotQUt1YXkzdkRLZld6dDUrY2gvSEhCc2VydDg0SVNvdDRmVWp6WERBL29PZ1RPRWpWY1NTaEh4cU5TaE1PVzFvQQotUVlCcEJCLzVLeDVSa0QvdzZpbWh1Y3h0MldRUFJnalg0eDRid01pcFZIL0h2RkRwMDNtRzUxL0NwaTFUeVo3NAotRWw3cWEvUGQ0bEhoT0x6TUtCQTY1MDNmcGVZU0ZVSUJ4WmJHTHF5bHFSSzcKK2RXNWtZWFJwYjI0eEZUQVRCZ05WQkFNTURHWmhhMlZvYjNOMGJtRnRaVENDQVNJd0RRWUpLb1pJaHZjTkFRRUIKK0JRQURnZ0VQQURDQ0FRb0NnZ0VCQUxlNlZFMStGczRCN0w4SDdBaFZqSDUzbHJQc1JYaXVKSHJLTCtvVG9iNXYKK0Z0TzlyTGFtckpJZTBQQjY1cGhLSFp4V1p4cXdFb29nVW1hc0lQWE5IeFNZdHZtTFpjVWlLZHJXM2Q1NDhLNEYKK2t5dTlsbkNUT1ZCUkl6VUJtMk1ZNDc5YlFqY1hBN3JMcmpuM0VEazkyNG9qdEl4aVFmOVV2Zk1UbGJVbkF5aSsKKy9wdTgySlA0WlRtWHFZSDNLVUpPQXVtWlNxaENGR3JQL2ZuTUxOWEtpSDZta085VnlsWmgrOWZMQ3hleUJEQnMKK0FYUkFtYnhKSVdMUk5tYm5LUy9oWVRYcHA5Q25Ueks1bExUZFRncmN3a0pyaXZFN254NTF6RUdpbFpoOURiMHIKK2VJZzB6eDZkRit2bXI2N21ZQUJzQXNBUVMvSVdPQXRhWCs3dHF2R2Z0c2tDQXdFQUFhTWJNQmt3RndZRFZSMFIKK0JCQXdEb0lNWm1GclpXaHZjM1J1WVcxbE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQ1poSGhHSXRwa3FoRXEKK250TVJkNkh2MEdvT0ppeE52Z2VNd0s0TkpTUlQvbm8zT2lydFVUemNjbjQ2aCtTV2liU2EyZVZzc0FWK3BBVkoKK0hiemtOL0RIMjdBMW1NeDF6SkwxZWtjT0tBMUFGNk1YaFVuclVHWE1xVzM2WU50ekhmWEpMcnd2cExKMTNPUWcKKy9LeG80Tnc2OGJHek0rUHlSdEtVL21wZ1l5ZmN2d1IrWlNlSURoMWZ2VVpLL0lFVkNmOHViNDJHUFZzNXdQZnYKK00razVhSHhXVHhlaWYzSzFieVRSenhIdXBZTkcyeVdPNFhFZG5CR091T3d6ek40L2lReU5jc3VRS2V1S0hHcnQKK1l2SWxHL3JpMDRDUTd4SVNaQ2o3NHlqVForL0EyYlhyZTJtUVhBSHFLUHVtSEw3Y2wzNCtlcnpiVWF4WXhiVEUKK3U1RmNPbUxRCiAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9rZXljZXJ0My5wZW0gYi9MaWIvdGVzdC9rZXljZXJ0My5wZW0KaW5kZXggNWJmYTYyYy4uNjIxZWIwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qva2V5Y2VydDMucGVtCisrKyBiL0xpYi90ZXN0L2tleWNlcnQzLnBlbQpAQCAtMSw3MyArMSwxMzIgQEAKIC0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQotTUlJQ2RnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NBbUF3Z2dKY0FnRUFBb0dCQU1MZ0Qwa0FLRGI1Y0Z5UAotamJ3TmZSNUN0ZXdkWEMra01YQVdEOERMeGlUVHZoTVc3cVZubHdPbTM2bVpsc3pIS3ZzUmYwNWxUNHBlZ2lGTQotOXoyajFPbGFOK2NpL1g3TlUyMlROTjZjcllTaU43N0ZqWUpQNDY0ajg3Nm5kU3h5RCtyenlzMzg2VCsxcjFhWgotYWdnRWRrajFUc1NzdjF6V0lZS2xQSWpsdmh1eEFnTUJBQUVDZ1lBMGFIK1QyVmYzV09QdjhLZGtjSmc2Z0NSZQoteUpLWE9XZ1dSY2ljeC9DVXpPRXNUeG1GSURQTHhxQVdBM2s3djBCKzN2akd3NVk5bHljVi81WHFYTm9RSTE0agoteTA5aU5zdW1kczEzdTVBS2tHZFRKblpoUTdVS2RvVkhmdVA0NFpkT3Yvcko1L1ZENkY0eld5d3BlOTBwY2JLKwotQVdEVnR1c2dHUUJTaWVFbDFRSkJBT3lWclVHNWwyeW9VQnRkMnpyL2tpR20vRFl5WGxJdGhRTy9BMy9MbmdEVwotNS95ZEd4VnNUN2xBVk9nQ3NvVCswTDRlZlRoOTBQanpXOExQUXJQQldWTUNRUURTM2gvRnRZWWQ1bGZ6K0ZOTAotOUNFZTFGMXc5bDhQNzQ5dU5VRDBnMzE3enYxdGF0SXFWQ3NRV0hmVkhOZFZ2ZlErdlNGdzM4T09STzAwWHFzOQotMUdKckFrQmtvWFhFa3hDWm95NFB0ZWhlTy84SVdXTEdHcjZMN2RpNk16RmwxbElxd1Q2RDhMOW9hVjJ2eW5GVAotRG5Lb3AwcGEwOVVuaGp5dzU3S01ObVNFMlNVSkFrRUFybG9URXpwZ1JtQ3E0SUsyL05wQ2VHZEhTNXVxUmxiaAotMVZJYS94R3BzN0VXUWw1TW44c3dRRGVsL1lQM1dHSFRqZng3cGdTZWdRZmt5YVJ0R3BaOU9RSkFhOVZ1bWo4bQotSkFBdEkwQm5nYThoZ1F4N0JoVFFZNENhZER4eWlSR09HWWh3VXpZVkNxa2Iyc2JWUkg5SG53VWFKVDdjV0JZMwotUm5KZEhPTVhXZW03L3c9PQorTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFEZ1Y0RytaemYyRFQ1bgorb0Fpc0lHRmhuL2J6N1ZuNVdpWFVxYkRzeFJPSk9oLzdCdE9sZHVaa2EwcFBoRnlsR2JueFM4bDFrRVdIUkkyVAorNmhPb1d6dW1CNkl0S2lOK1Q1SjMwbEF2U3lvN2l3ZEZvQVEvUzVuUFhRZmhOQVJRZS9ORU9oUnRwY3VOZHl4NAorQldkUGRQdUpRQTFBU05KQ0x3Y0xPb1J4YUxiS0x2YjJWNVQ1RkNBa2VOUHRSdlB1VDRnS1FJdE1taUhmQWhvVgorQzhNWldGL0dDMFJ1a0hJTnlzNU13cWVGZXhhbThDem5tUVBNWXJMZGhtS1RqM0RUaXZDUG9oOTdFRElGR2xnWgorU0NhYVlEVlFBK2FxbG8vcTJwaTUyUEZ3QzFLemhORUE3RWVPcVN3QzFOUWp3akh1aGNuZjlXYnhyZ1RxMnpoMworcnY1WUVXMlpBZ01CQUFFQ2dnRUFQZlNNdFR1bVBjSnNrSXVtdVhwN3lrMDJFeWxpWnJXWnF3QnVCd1ZxSHNTNQorbmtiRlhuWFdyTGJnbjlNckRzRnJFNU5kZ0tVbVBuUVZNVnM4c0lyNWp5R2VqU0NOQ3M0STRpUm4xcGZJZ3djagorSy94RUVBTGQ2R0dGMHBEZC9DZ3ZCNUdPb0xWZjRLS2Yya21MdldyT0tKcFN6b1VONUE4K3Y4QWFZWU9NcjRzQworY3pidmZHb216RUlld0VHK1J3OXpPVlVEbG13eUVLUFFaNDdFN1BRK0VFQTdvZUZkUisxWmo2ZVQ5bmRlZ2Y4QgorNTRmcnlTWUNMUlVDay9zSENwV2hhSkJ0QnJjcGh0N1k4Q2ZZN2hpSC83eDg2NmZ2dUxuWVB6NFlBTHRVYjB3TgorN3pVQ05TOW9sM240TGJqRkZLZlp0aVJqS2FDQlJ6TWpLMHJ6NnlkRmNRS0JnUUR5TEkzb0diblc3M3ZxY0RlLworNmVSMHcrK2ZpQ0FWaGZNczNBTy9nT2FKaTJsYTJKSGxKNXUrY0lIUUlPRndFaG42WnEwQXRkbW5GeDFUUzVJUQorQzBNZFhJMFhvUVF3N3JFRjhFSmN2ZmU4NVowUXhFTlZoenlkdGRiOFFwSmZuUUdmQmZMeVFsYWFSWXpSUkhCNgorVmRZVUhGM0VJUFZJaGJqYmdoYWwrUWVwL1FLQmdRRHRKbFJQSGtXd1RNZXZ1MEowZlliV04xeXd0VlRGVVIvLworazdWeU9SU2Y4eXV1U25hUVJvcDRjYmNxT054bURLSDZPcjFmbDNOWUJzQXh0WGtrT0sxRTJPWk5vMnNmUWRSYQord3BBN283bVBIUmh6dFFGcFQ1dmZscCs4UDYrUEVGYXQ4RDA0ZUJPaE53cnd3ZmhpUGpENGd2NUt2TjRYdXRSVworVld2LzJwbm16UUtCZ0hQdkhHZzJtSjdxdXZtNml4WFcxTVdKWDFlU0JUb0lqQ2UzbEJ2RGk1bmhJYWlaOFE0dworN2dBM1FBM3hEN3RsRHdhdXpMZUFWeGdFbXNkYmNDczZHUUVmWTNRaVl5MUJ0NEZPU1phNFlyY05mU21mcTFSdworajNZNHJSaktqZVF6OTZpM1lselRvVDN0ZWNKYzd6UEJqK0RFeTZhdTJIM0Zkbit2UVVSbmVXSEpBb0dCQU5HNworWEVTOG1SVmFVaC93bE0xQlZzYU5IOFNJR2ZpSHpxelJqVjcvYkdZcFFUQmJXcEF1VXJoQ21hTVZ0cFhxQmphdgorVEZ3R0xWUmtaQVdTWVJqUHB5MkVSZW5UNVNFM3J2NjFvNm1iR3JpZkdzajZBODJIUW10ellzR3g4U210WVh0agorUkVGMHNLZWJibW1Pb29VQVMzNzlHcmd1WUp6TDlvNkQ3WWZSWk5yaEFvR0FWZmIvdGlGVTRTNjdEU3BZcFFleQorVUxoZ2ZzRnBEQnlJQ1k2UG90c2c2N2dWRmY5aklhQjgzTlBUeDN1L3I2c0hGZ3hGdzdsUXN1WmNnU3VXTXU3dAorZ2x6T1hWSVAxMVk1c2w1Q0o1T3NmZUsxLzB1bU1aRjVNV1B5QVFDeC9xclBsWkw4NnZYanQyNFkvVmFPeHNBaQorQ1pZZHlKc2pnT3JKcldvTWJvNXRhNTQ9CiAtLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCiBDZXJ0aWZpY2F0ZToKICAgICBEYXRhOgotICAgICAgICBWZXJzaW9uOiAxICgweDApCi0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDEyNzIzMzQyNjEyNzIxNDQzMjgxICgweGIwOTI2NGIxZjJkYTIxZDEpCisgICAgICAgIFZlcnNpb246IDMgKDB4MikKKyAgICAgICAgU2VyaWFsIE51bWJlcjoKKyAgICAgICAgICAgIDgyOmVkOmJmOjQxOmM4OjgwOjkxOjljCiAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCiAgICAgICAgIElzc3VlcjogQz1YWSwgTz1QeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiBDQSwgQ049b3VyLWNhLXNlcnZlcgogICAgICAgICBWYWxpZGl0eQotICAgICAgICAgICAgTm90IEJlZm9yZTogSmFuICA0IDE5OjQ3OjA3IDIwMTMgR01UCi0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBOb3YgMTMgMTk6NDc6MDcgMjAyMiBHTVQKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEphbiAxOSAxOTowOTowNiAyMDE4IEdNVAorICAgICAgICAgICAgTm90IEFmdGVyIDogTm92IDI4IDE5OjA5OjA2IDIwMjcgR01UCiAgICAgICAgIFN1YmplY3Q6IEM9WFksIEw9Q2FzdGxlIEFudGhyYXgsIE89UHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24sIENOPWxvY2FsaG9zdAogICAgICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKICAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxnb3JpdGhtOiByc2FFbmNyeXB0aW9uCi0gICAgICAgICAgICAgICAgUHVibGljLUtleTogKDEwMjQgYml0KQorICAgICAgICAgICAgICAgIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkKICAgICAgICAgICAgICAgICBNb2R1bHVzOgotICAgICAgICAgICAgICAgICAgICAwMDpjMjplMDowZjo0OTowMDoyODozNjpmOTo3MDo1Yzo4Zjo4ZDpiYzowZDoKLSAgICAgICAgICAgICAgICAgICAgN2Q6MWU6NDI6YjU6ZWM6MWQ6NWM6MmY6YTQ6MzE6NzA6MTY6MGY6YzA6Y2I6Ci0gICAgICAgICAgICAgICAgICAgIGM2OjI0OmQzOmJlOjEzOjE2OmVlOmE1OjY3Ojk3OjAzOmE2OmRmOmE5Ojk5OgotICAgICAgICAgICAgICAgICAgICA5NjpjYzpjNzoyYTpmYjoxMTo3Zjo0ZTo2NTo0Zjo4YTo1ZTo4MjoyMTo0YzoKLSAgICAgICAgICAgICAgICAgICAgZjc6M2Q6YTM6ZDQ6ZTk6NWE6Mzc6ZTc6MjI6ZmQ6N2U6Y2Q6NTM6NmQ6OTM6Ci0gICAgICAgICAgICAgICAgICAgIDM0OmRlOjljOmFkOjg0OmEyOjM3OmJlOmM1OjhkOjgyOjRmOmUzOmFlOjIzOgotICAgICAgICAgICAgICAgICAgICBmMzpiZTphNzo3NToyYzo3MjowZjplYTpmMzpjYTpjZDpmYzplOTozZjpiNToKLSAgICAgICAgICAgICAgICAgICAgYWY6NTY6OTk6NmE6MDg6MDQ6NzY6NDg6ZjU6NGU6YzQ6YWM6YmY6NWM6ZDY6Ci0gICAgICAgICAgICAgICAgICAgIDIxOjgyOmE1OjNjOjg4OmU1OmJlOjFiOmIxCisgICAgICAgICAgICAgICAgICAgIDAwOmUwOjU3OjgxOmJlOjY3OjM3OmY2OjBkOjNlOjY3OmEwOjA4OmFjOjIwOgorICAgICAgICAgICAgICAgICAgICA2MTo2MTo5ZjpmNjpmMzplZDo1OTpmOTo1YToyNTpkNDphOTpiMDplYzpjNToKKyAgICAgICAgICAgICAgICAgICAgMTM6ODk6M2E6MWY6ZmI6MDY6ZDM6YTU6NzY6ZTY6NjQ6NmI6NGE6NGY6ODQ6CisgICAgICAgICAgICAgICAgICAgIDVjOmE1OjE5OmI5OmYxOjRiOmM5Ojc1OjkwOjQ1Ojg3OjQ0OjhkOjkzOmVhOgorICAgICAgICAgICAgICAgICAgICAxMzphODo1YjozYjphNjowNzphMjoyZDoyYToyMzo3ZTo0Zjo5Mjo3NzpkMjoKKyAgICAgICAgICAgICAgICAgICAgNTA6MmY6NGI6MmE6M2I6OGI6MDc6NDU6YTA6MDQ6M2Y6NGI6OTk6Y2Y6NWQ6CisgICAgICAgICAgICAgICAgICAgIDA3OmUxOjM0OjA0OjUwOjdiOmYzOjQ0OjNhOjE0OjZkOmE1OmNiOjhkOjc3OgorICAgICAgICAgICAgICAgICAgICAyYzo3ODowNTo2Nzo0Zjo3NDpmYjo4OTo0MDowZDo0MDo0ODpkMjo0MjoyZjoKKyAgICAgICAgICAgICAgICAgICAgMDc6MGI6M2E6ODQ6NzE6Njg6YjY6Y2E6MmU6ZjY6ZjY6NTc6OTQ6Zjk6MTQ6CisgICAgICAgICAgICAgICAgICAgIDIwOjI0Ojc4OmQzOmVkOjQ2OmYzOmVlOjRmOjg4OjBhOjQwOjhiOjRjOjlhOgorICAgICAgICAgICAgICAgICAgICAyMTpkZjowMjoxYToxNTowYjpjMzoxOTo1ODo1ZjpjNjowYjo0NDo2ZTo5MDoKKyAgICAgICAgICAgICAgICAgICAgNzI6MGQ6Y2E6Y2U6NGM6YzI6YTc6ODU6N2I6MTY6YTY6ZjA6MmM6ZTc6OTk6CisgICAgICAgICAgICAgICAgICAgIDAzOmNjOjYyOmIyOmRkOjg2OjYyOjkzOjhmOjcwOmQzOjhhOmYwOjhmOmEyOgorICAgICAgICAgICAgICAgICAgICAxZjo3YjoxMDozMjowNToxYTo1ODoxOTo0ODoyNjo5YTo2MDozNTo1MDowMzoKKyAgICAgICAgICAgICAgICAgICAgZTY6YWE6OTY6OGY6ZWE6ZGE6OTg6Yjk6ZDg6ZjE6NzA6MGI6NTI6YjM6ODQ6CisgICAgICAgICAgICAgICAgICAgIGQxOjAwOmVjOjQ3OjhlOmE5OjJjOjAyOmQ0OmQ0OjIzOmMyOjMxOmVlOjg1OgorICAgICAgICAgICAgICAgICAgICBjOTpkZjpmNTo2NjpmMTphZTowNDplYTpkYjozODo3NzphZTpmZTo1ODoxMToKKyAgICAgICAgICAgICAgICAgICAgNmQ6OTkKICAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCisgICAgICAgIFg1MDl2MyBleHRlbnNpb25zOgorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgQWx0ZXJuYXRpdmUgTmFtZTogCisgICAgICAgICAgICAgICAgRE5TOmxvY2FsaG9zdAorICAgICAgICAgICAgWDUwOXYzIEtleSBVc2FnZTogY3JpdGljYWwKKyAgICAgICAgICAgICAgICBEaWdpdGFsIFNpZ25hdHVyZSwgS2V5IEVuY2lwaGVybWVudAorICAgICAgICAgICAgWDUwOXYzIEV4dGVuZGVkIEtleSBVc2FnZTogCisgICAgICAgICAgICAgICAgVExTIFdlYiBTZXJ2ZXIgQXV0aGVudGljYXRpb24sIFRMUyBXZWIgQ2xpZW50IEF1dGhlbnRpY2F0aW9uCisgICAgICAgICAgICBYNTA5djMgQmFzaWMgQ29uc3RyYWludHM6IGNyaXRpY2FsCisgICAgICAgICAgICAgICAgQ0E6RkFMU0UKKyAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICA4NToxMTpCRToxNjo0NzowNDpEMTozMDpFRTo4Njo4QToxODo3MDpCRTpBODoyODo2Rjo4MjozRDpDRQorICAgICAgICAgICAgWDUwOXYzIEF1dGhvcml0eSBLZXkgSWRlbnRpZmllcjogCisgICAgICAgICAgICAgICAga2V5aWQ6OUE6Q0Y6Q0Y6NkU6RUI6NzE6M0Q6REI6M0M6RjE6QUU6ODg6NkI6NTY6NzI6MDM6Q0I6MDg6QTc6NDgKKyAgICAgICAgICAgICAgICBEaXJOYW1lOi9DPVhZL089UHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24gQ0EvQ049b3VyLWNhLXNlcnZlcgorICAgICAgICAgICAgICAgIHNlcmlhbDo4MjpFRDpCRjo0MTpDODo4MDo5MTo5QgorCisgICAgICAgICAgICBBdXRob3JpdHkgSW5mb3JtYXRpb24gQWNjZXNzOiAKKyAgICAgICAgICAgICAgICBDQSBJc3N1ZXJzIC0gVVJJOmh0dHA6Ly90ZXN0Y2EucHl0aG9udGVzdC5uZXQvdGVzdGNhL3B5Y2FjZXJ0LmNlcgorICAgICAgICAgICAgICAgIE9DU1AgLSBVUkk6aHR0cDovL3Rlc3RjYS5weXRob250ZXN0Lm5ldC90ZXN0Y2Evb2NzcC8KKworICAgICAgICAgICAgWDUwOXYzIENSTCBEaXN0cmlidXRpb24gUG9pbnRzOiAKKworICAgICAgICAgICAgICAgIEZ1bGwgTmFtZToKKyAgICAgICAgICAgICAgICAgIFVSSTpodHRwOi8vdGVzdGNhLnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9yZXZvY2F0aW9uLmNybAorCiAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgICAyZjo0Mjo1ZjphMzowOToyYzpmYTo1MTo4ODpjNzozNzo3ZjplYTowZTo2MzpmMDphMjo5YToKLSAgICAgICAgIGU1OjVhOmUyOmM4OjIwOmYwOjNmOjYwOmJjOmM4OjBmOmI2OmM2Ojc2OmNlOmRiOjgzOjkzOgotICAgICAgICAgZjU6YTM6MzM6Njc6MDE6OGU6MDQ6Y2Q6MDA6OWE6NzM6ZmQ6ZjM6MzU6ODY6ZmE6ZDc6MTM6Ci0gICAgICAgICBlMjo0NjpjNjo5ZDpjMDoyOTo1MzpkNDphOTo5MDpiODo3Nzo0YjplNjo4Mzo3NjplNDo5MjoKLSAgICAgICAgIGQ2OjljOjUwOmNmOjQzOmQwOmM2OjAxOjc3OjYxOjlhOmRlOjliOjcwOmY3OjcyOmNkOjU5OgotICAgICAgICAgMDA6MzE6Njk6ZDk6YjQ6Y2E6MDY6OWM6NmQ6YzM6Yzc6ODA6OGM6Njg6ZTY6YjU6YTI6Zjg6Ci0gICAgICAgICBlZjoxZDpiYjoxNjo5Zjo3Nzo3NzplZjo4Nzo2MjoyMjo5Yjo0ZDo2OTphNDozYToxYTpmMToKLSAgICAgICAgIDIxOjVlOjhjOjMyOmFjOjkyOmZkOjE1OjZiOjE4OmMyOjdmOjE1OjBkOjk4OjMwOmNhOjc1OgotICAgICAgICAgOGY6MWE6NzE6ZGY6ZGE6MWQ6YjI6ZWY6OWE6ZTg6MmQ6MmU6MDI6ZmQ6NGE6M2M6YWE6OTY6Ci0gICAgICAgICAwYjowNjo1ZDozNTpiMzozZDoyNDo4Nzo0YjplMDpiMDo1ODo2MDoyZjo0NTphYzoyZTo0ODoKLSAgICAgICAgIDhhOmIwOjk5OjEwOjY1OjI3OmZmOmNjOmIxOmQ4OmZkOmJkOjI2OjZiOmI5OjBjOjA1OjJhOgotICAgICAgICAgZjQ6NDU6NjM6MzU6NTE6MDc6ZWQ6ODM6ODU6ZmU6NmY6Njk6Y2I6YmI6NDA6YTg6YWU6YjY6Ci0gICAgICAgICAzYjo1Njo0YToyZDphNDplZDo2ZDoxMToyYzo0ZDplZDoxNzoyNDpmZDo0NzpiYzpkMzo0MToKLSAgICAgICAgIGEyOmQzOjA2OmZlOjBjOjkwOmQ4OmQ4Ojk0OjI2OmM0OmZmOmNjOmExOmQ4OjQyOjc3OmViOgotICAgICAgICAgZmM6YTk6OTQ6NzEKKyAgICAgICAgIDdmOmExOjdlOjNlOjY4OjAxOmIwOjMyOmI4OjU3OmI4OjAzOjY4OjEzOjEzOmIzOmUzOmY0OgorICAgICAgICAgNzA6MmY6MTU6ZTU6MGY6ODc6Yjk6ZmQ6ZTA6MTI6ZTM6MTY6ZjI6OTE6NTM6Yzc6NGU6MjU6CisgICAgICAgICBhZjpjYTpjYjphNzpkOTo5ZDo1Nzo0ZDpiZjphMjo4MDpkNDo3ODphYTowNDozMTpmZDo2ZDoKKyAgICAgICAgIGNjOjZkOjgyOjQzOmU5OjYyOjE2OjBkOjBlOjI2OjhiOmU3OmYxOjNkOjU3OjVjOjY4OjAyOgorICAgICAgICAgOWM6MmI6YjY6Yzk6ZmQ6NjI6MmY6MTA6ODU6ODg6Y2M6NDQ6YTU6ZTc6YTI6M2U6ODk6ZjI6CisgICAgICAgICAxZjowMjo2YTozZjpkMDozYzo2YzoyNDoyZDpiYzo1MTo2Mjo3YTplYzoyNTpjNTo4Njo4NzoKKyAgICAgICAgIDc3OjM1OjhmOmY5OjdlOmQwOjE3OjNkOjc3OjU2OmJmOjFhOjBjOmJlOjA5Ojc4OmVlOmVhOgorICAgICAgICAgNzM6OTc6NjU6NjA6OTQ6OTE6MzU6YjM6NWM6NDY6OGE6NWU6NmQ6OTQ6NTI6ZGU6NDg6Yjc6CisgICAgICAgICAxZjo2YzoyODo3OTo3ZjpmZjowODo4ZDplNDo3ZDpkMDpiOTowYjo3YzphZTpjNDoxZDoyYToKKyAgICAgICAgIGExOmIzOjUwOjExOjgyOjAzOjVlOjZjOmU3OjI2OmZhOjA1OjMyOjM5OjA3OjgzOjQ5OmI5OgorICAgICAgICAgYTI6ZmE6MDQ6ZGE6MGQ6ZTU6ZmY6NGM6ZGI6OTc6ZDA6YzM6YTc6NDM6Mzc6NGM6MTY6ZGU6CisgICAgICAgICAzYzpiNTplOTo3ZTo4MjpkNDpiMzoxMDpkZjpkMTpjMTo2Njo3Mjo5YzoxNTo2NzoxOTozYjoKKyAgICAgICAgIDdiOjkxOjBhOjgyOjA3OjY3OmM1OjA2OjAzOjVmOjgwOjU0OjA4OjgxOjhhOmIxOjVjOjdjOgorICAgICAgICAgNGM6ZDI6MDc6Mzg6OTI6ZWI6MTI6ZjU6NzE6YWU6ZGU6MDU6MTU6Yzg6ZTE6MzM6ZjA6ZTQ6CisgICAgICAgICA5NjowZjowZjoxZQogLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDcERDQ0FZd0NDUUN3a21TeDh0b2gwVEFOQmdrcWhraUc5dzBCQVFVRkFEQk5NUXN3Q1FZRFZRUUdFd0pZCi1XVEVtTUNRR0ExVUVDZ3dkVUhsMGFHOXVJRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjRnUTBFeEZqQVVCZ05WCi1CQU1NRFc5MWNpMWpZUzF6WlhKMlpYSXdIaGNOTVRNd01UQTBNVGswTnpBM1doY05Nakl4TVRFek1UazBOekEzCi1XakJmTVFzd0NRWURWUVFHRXdKWVdURVhNQlVHQTFVRUJ4TU9RMkZ6ZEd4bElFRnVkR2h5WVhneEl6QWhCZ05WCi1CQW9UR2xCNWRHaHZiaUJUYjJaMGQyRnlaU0JHYjNWdVpHRjBhVzl1TVJJd0VBWURWUVFERXdsc2IyTmhiR2h2Ci1jM1F3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQU1MZ0Qwa0FLRGI1Y0Z5UGpid05mUjVDCi10ZXdkWEMra01YQVdEOERMeGlUVHZoTVc3cVZubHdPbTM2bVpsc3pIS3ZzUmYwNWxUNHBlZ2lGTTl6MmoxT2xhCi1OK2NpL1g3TlUyMlROTjZjcllTaU43N0ZqWUpQNDY0ajg3Nm5kU3h5RCtyenlzMzg2VCsxcjFhWmFnZ0Vka2oxCi1Uc1NzdjF6V0lZS2xQSWpsdmh1eEFnTUJBQUV3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUM5Q1g2TUpMUHBSCi1pTWMzZitvT1kvQ2ltdVZhNHNnZzhEOWd2TWdQdHNaMnp0dURrL1dqTTJjQmpnVE5BSnB6L2ZNMWh2clhFK0pHCi14cDNBS1ZQVXFaQzRkMHZtZzNia2t0YWNVTTlEME1ZQmQyR2EzcHR3OTNMTldRQXhhZG0weWdhY2JjUEhnSXhvCi01cldpK084ZHV4YWZkM2Z2aDJJaW0wMXBwRG9hOFNGZWpES3NrdjBWYXhqQ2Z4VU5tRERLZFk4YWNkL2FIYkx2Ci1tdWd0TGdMOVNqeXFsZ3NHWFRXelBTU0hTK0N3V0dBdlJhd3VTSXF3bVJCbEovL01zZGo5dlNacnVRd0ZLdlJGCi1ZelZSQisyRGhmNXZhY3U3UUtpdXRqdFdTaTJrN1cwUkxFM3RGeVQ5Ujd6VFFhTFRCdjRNa05qWWxDYkUvOHloCi0yRUozNi95cGxIRT0KK01JSUU4VENDQTltZ0F3SUJBZ0lKQUlMdHYwSElnSkdjTUEwR0NTcUdTSWIzRFFFQkJRVUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE9EQXhNVGt4T1RBNU1EWmFGdzB5TnpFeE1qZ3gKK09UQTVNRFphTUY4eEN6QUpCZ05WQkFZVEFsaFpNUmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWoKK01DRUdBMVVFQ2d3YVVIbDBhRzl1SUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEVqQVFCZ05WQkFNTUNXeHYKK1kyRnNhRzl6ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBT0JYZ2I1bk4vWU4KK1BtZWdDS3dnWVdHZjl2UHRXZmxhSmRTcHNPekZFNGs2SC9zRzA2VjI1bVJyU2srRVhLVVp1ZkZMeVhXUVJZZEUKK2paUHFFNmhiTzZZSG9pMHFJMzVQa25mU1VDOUxLanVMQjBXZ0JEOUxtYzlkQitFMEJGQjc4MFE2RkcybHk0MTMKK0xIZ0ZaMDkwKzRsQURVQkkwa0l2QndzNmhIRm90c291OXZaWGxQa1VJQ1I0MCsxRzgrNVBpQXBBaTB5YUlkOEMKK0doVUx3eGxZWDhZTFJHNlFjZzNLemt6Q3A0VjdGcWJ3TE9lWkE4eGlzdDJHWXBPUGNOT0s4SStpSDNzUU1nVWEKK1dCbElKcHBnTlZBRDVxcVdqK3JhbUxuWThYQUxVck9FMFFEc1I0NnBMQUxVMUNQQ01lNkZ5ZC8xWnZHdUJPcmIKK09IZXUvbGdSYlprQ0F3RUFBYU9DQWNBd2dnRzhNQlFHQTFVZEVRUU5NQXVDQ1d4dlkyRnNhRzl6ZERBT0JnTlYKK0hROEJBZjhFQkFNQ0JhQXdIUVlEVlIwbEJCWXdGQVlJS3dZQkJRVUhBd0VHQ0NzR0FRVUZCd01DTUF3R0ExVWQKK0V3RUIvd1FDTUFBd0hRWURWUjBPQkJZRUZJVVJ2aFpIQk5FdzdvYUtHSEMrcUNodmdqM09NSDBHQTFVZEl3UjIKK01IU0FGSnJQejI3cmNUM2JQUEd1aUd0V2NnUExDS2RJb1ZHa1R6Qk5NUXN3Q1FZRFZRUUdFd0pZV1RFbU1DUUcKK0ExVUVDZ3dkVUhsMGFHOXVJRk52Wm5SM1lYSmxJRVp2ZFc1a1lYUnBiMjRnUTBFeEZqQVVCZ05WQkFNTURXOTEKK2NpMWpZUzF6WlhKMlpYS0NDUUNDN2I5QnlJQ1JtekNCZ3dZSUt3WUJCUVVIQVFFRWR6QjFNRHdHQ0NzR0FRVUYKK0J6QUNoakJvZEhSd09pOHZkR1Z6ZEdOaExuQjVkR2h2Ym5SbGMzUXVibVYwTDNSbGMzUmpZUzl3ZVdOaFkyVnkKK2RDNWpaWEl3TlFZSUt3WUJCUVVITUFHR0tXaDBkSEE2THk5MFpYTjBZMkV1Y0hsMGFHOXVkR1Z6ZEM1dVpYUXYKK2RHVnpkR05oTDI5amMzQXZNRU1HQTFVZEh3UThNRG93T0tBMm9EU0dNbWgwZEhBNkx5OTBaWE4wWTJFdWNIbDAKK2FHOXVkR1Z6ZEM1dVpYUXZkR1Z6ZEdOaEwzSmxkbTlqWVhScGIyNHVZM0pzTUEwR0NTcUdTSWIzRFFFQkJRVUEKK0E0SUJBUUIvb1g0K2FBR3dNcmhYdUFOb0V4T3o0L1J3THhYbEQ0ZTUvZUFTNHhieWtWUEhUaVd2eXN1bjJaMVgKK1RiK2lnTlI0cWdReC9XM01iWUpENldJV0RRNG1pK2Z4UFZkY2FBS2NLN2JKL1dJdkVJV0l6RVNsNTZJK2lmSWYKK0Ftby8wRHhzSkMyOFVXSjY3Q1hGaG9kM05ZLzVmdEFYUFhkV3Z4b012Z2w0N3VwemwyVmdsSkUxczF4R2lsNXQKK2xGTGVTTGNmYkNoNWYvOElqZVI5MExrTGZLN0VIU3FoczFBUmdnTmViT2NtK2dVeU9RZURTYm1pK2dUYURlWC8KK1ROdVgwTU9uUXpkTUZ0NDh0ZWwrZ3RTekVOL1J3V1p5bkJWbkdUdDdrUXFDQjJmRkJnTmZnRlFJZ1lxeFhIeE0KKzBnYzRrdXNTOVhHdTNnVVZ5T0V6OE9TV0R3OGUKIC0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2tleWNlcnQ0LnBlbSBiL0xpYi90ZXN0L2tleWNlcnQ0LnBlbQppbmRleCA1MzM1NWM4Li5iN2RmN2YzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9rZXljZXJ0NC5wZW0KKysrIGIvTGliL3Rlc3Qva2V5Y2VydDQucGVtCkBAIC0xLDczICsxLDEzMiBAQAogLS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCi1NSUlDZGdJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0FtQXdnZ0pjQWdFQUFvR0JBSzVVUWlNSTVWa05zMlF2Ci1MN2dVYWlEZEZldk5VWFJqVTRESEFlM1p6ellMWk5FNjloOWdPOVZDU1MxNnRKNWZUNVZFdTBFWnlHcjBlM1YyCi1Oa1gwWm9VMEhjL1VhWTRxeDdMSG1uNVNZWnBJeGhKbmtmN1N5SEpLMXpVYUdsVTAvTHhZcUl1R0N0RjVkcXgxCi1MMk9RaEV4MUdNNlJ5ZEhkZ1g2OUc2NExYY1k1QWdNQkFBRUNnWUFoc1JNZkprYjlFUkxNbC9vRy81c0xRdTlMCi1wV0RLdDYrWndkeHpsWmJnZ1E4NUNNWXNoakxLSW9kMkRMTC9zTGYyeDFQUlh5UkcxMzFNMUUzazh6a2t6NmRlCi1SMXVEcklOL3g5MWl1WXpmTFFaR2g4Yk1ZN1lqZDJlb3JvYTZSLzdEanBFbEdlakx4T0FhRFdPMFNUMklGUXk5Ci1teVRHUzJqU005N3djWGZzU1FKQkFOUDNqZWxKb1M1WDZCUmpUU25lWTIxd2NvY3hWdVFoOHBYcEVyQUxWTnNUCi1kcnJGVGVhQnVacDdLdmJ0bklNNWcyV1JOdmF4TFpsQVkvaFhQSnZpNm5jQ1FRRFNpeDFjZWJtbDZFbVBsRVpTCi1NbThnd0kyRjl1ZlV1bndKbUJKY3o4MjZEbzBaTkdCeVdEQU0vSlFaSDRGWDRHZkFGTnVqOFBVYitHUWZhZGt4Ci1pMURQQWtFQTBsVnNOSG9qdnVEc0lvOEhHdXphck5aUVQyYmVXakoxamR4aDl0N0hyVHg3TElwczZyYi9maE9LCi1aczBSNmdWQUphRWJjV0FQWjJ0RnlFQ0luQWRuc1FKQVVqYWVYWGp1eEZrak9GeW01UHZxcHZocGl2RXg3OEJ1Ci1KUFRyM3JBS1htZkdNeHhmdU9hMHhLMXdTeXNoUDZaUi9SQm4vK2xjWFBLdWJoSFFET2Vnd3dKQUpGMURCUW5OCi0rL3RMbU9QVUx0RHdmUDRaaXhuKy84R21HT2FoRm9SY3U2VklHSG1SaWxKVG42TU9CdXR3N0dsdjJZZGVDNmwvCi1lODNHcTZmZkxWZktOUT09CitNSUlFdlFJQkFEQU5CZ2txaGtpRzl3MEJBUUVGQUFTQ0JLY3dnZ1NqQWdFQUFvSUJBUURILzc2aFpBWkg0Y1NWCitDbVZaYTVIRXFLQ2pDS3JjUHdCRUNzOUJTKzNpYndONHg5Tm5GTlArdENlRkdnSlhsN1dHRm9lWGdnM29LKzFwCitGc09XcHNSSHVGM0JkcWtDblNoU3lkbVQ4YkxhR0h3S2VMMGNQeEpQNVQvdVc3ZXpQS1cyVldYR013bXdSYVJKCis5ZGoyVkNVdTIwdkRaV1NHRnI5empuam9KY3pCdEgzUnNWVWdwSzdldUVIdVE1cElNOVFTT2FDbys1RlBSN3M3CisxblU3WXFiRld0ZCtOaEM4T2cxRzQ5N0IzMURRbEhjaUY2QlJtNi9jTkdBbUhhQUVyS1VHQkZka0d0RlBIQm40Cit2a3RvRWc5Znd4SkFaTHZHcG9UWldyQjRIUnNSd1ZUbUZkR3ZLK0pYSzIyNXhGMjNBWFJYcC9zbmhTdVNGZUxqCitFNWNweUpKN0FnTUJBQUVDZ2dFQVFPdjUyN1gyZS9zRHIwWFNwSFpRdVQvcjlVQnBCbG5GSWxGSCtmQkY1azBYCitHV3YwYWUvTzZVMWR6czBrbVg1N3hHMG4wcnk2K3ZUWGVsZVRZaUg4Y1RPZDY2RXpOOUFBT08raEcyOUlHWmY5CitIQUVaa2tPL0ZBUmMvbWp6ZHRGbkVZc2pJSFdNM1pXZHdReDNRMjhKS3U2dzUxclFpTjUxZzNOcU9DR2RGL3VGCityRTVYUEtzS25kbituTEh2c051QXBGZ1VZWkV3ZHJvemdVdWVFZ1JhUFRVQ05oem90Y0E5ZVdvQmRBMjRYTmhrCit4OENtL2JaV2FiWG03Z0JPNzV6bDNDdTJGMjFheStFdXd5T1pUc3g2bFppNllYOS96bzFta084MVppM3RRazUwCitOTUVJMGZlTE53c2R4VGJtT2NWSmFkak9nZCtRVmdobEZ5cjVIR0JXTVFLQmdRRDNBSDNyaG5BbzZ0T3lOa0dOCisrSXpJVTFNaFVTNDUyTzdJYXZ5a1VZTzlzTTI0QlZDaHBSdGxJOURwZXY0eUUvcTNCQU8zK29XVDNjSnJONy8zCitpeW8xZHpBa3BHdkk2NVhXZkVsWEZNNG5MakVpWnp4NFc5ZmlQTjkxT3VjcHIwRUQ2K0JaWFR0ejRnVm0wVFAvCitUVWMyeHZUQjZFS3ZJeVdtS09ZRWkwc254UUtCZ1FEUFNPamJ6OWpXT3JDOVhZN1BtdExCNlFKRER6N1hTR1ZLCit3ekQrZ0RBUHBBd2hrNThCRW9rZE9oQngyTHdsOHpNSmkwQ1JIZ0gydk52a1J5aHZVUTRVRnppc3JxYW5uL1R3CitrbHA1c3czaVdDNkVSQzh6OXpMN0dmSHM3c0szbU9WZUFkSzZmZm93UE0zSnJaMnZQdXNWQmRyME1OM29ad2tpCitDdE5YcWJZMVB3S0JnR2hlUU5iQVc2d3ViWDBrQjljaGF2dEttaG05MzdaNXY0dllDU0MxZ09FcVVBS3QzRUF4CitMNzR3d0JtbjZyam1VRTM4MkVWcENnQk05OVd1SE9OUVhtbHhEMXFzVHc3NjNMbGdrdXpFMGNja2NZYUQ4TDA2CitzYUhhN3VEdUhyY3lZbHB4MUw1dDhxMG9sL2UxOWk2dVRLVU10R2NxNk9Kd0MzeUdVNHNnQUlXeEFvR0JBTVZxCitxaVFYbTJ2RkwramFmeFlvWFV2RE1KMVBtc2tNc1RQNEhPUjJqOCtGck93Wm5WazNIeEdQNkhPVk9QUm40SmJaCitZaUFUMVVqNmErN0krckN5SU5kdm1sR1VjVEs2ZkZ6VzlvWnJ5dkJramNENDgzL3Bra3RtVld3VHBhMllWL01sCitoMTZJZHN5VVRHWWxEVVlIaFh0YlBVSk9mRHBJVDRGMWovMHdyRkdmQW9HQU84MkJjVXNlaEVVUUUweHZRTEluCis3UWFGdFVJNXoxOVdXNzMwalZ1RW9iaVlsaDlLYTREUGJLTXZrYThNd3lPeEV3aGszOWdaUWF2bWZHNit3Wm0rCitrakVSVTIzTGhIemlKR1dTMlVtNHlJaEM3bXlLYldhTHpqSEVxNzJkc3pMcFFrdTRCekU1ZlQ2MGZ4STdjVVJECitXR20vWjNRMndlUzNaR0lvTWoxUk5QST0KIC0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0KIENlcnRpZmljYXRlOgogICAgIERhdGE6Ci0gICAgICAgIFZlcnNpb246IDEgKDB4MCkKLSAgICAgICAgU2VyaWFsIE51bWJlcjogMTI3MjMzNDI2MTI3MjE0NDMyODIgKDB4YjA5MjY0YjFmMmRhMjFkMikKKyAgICAgICAgVmVyc2lvbjogMyAoMHgyKQorICAgICAgICBTZXJpYWwgTnVtYmVyOgorICAgICAgICAgICAgODI6ZWQ6YmY6NDE6Yzg6ODA6OTE6OWQKICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KICAgICAgICAgSXNzdWVyOiBDPVhZLCBPPVB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uIENBLCBDTj1vdXItY2Etc2VydmVyCiAgICAgICAgIFZhbGlkaXR5Ci0gICAgICAgICAgICBOb3QgQmVmb3JlOiBKYW4gIDQgMTk6NDc6MDcgMjAxMyBHTVQKLSAgICAgICAgICAgIE5vdCBBZnRlciA6IE5vdiAxMyAxOTo0NzowNyAyMDIyIEdNVAorICAgICAgICAgICAgTm90IEJlZm9yZTogSmFuIDE5IDE5OjA5OjA2IDIwMTggR01UCisgICAgICAgICAgICBOb3QgQWZ0ZXIgOiBOb3YgMjggMTk6MDk6MDYgMjAyNyBHTVQKICAgICAgICAgU3ViamVjdDogQz1YWSwgTD1DYXN0bGUgQW50aHJheCwgTz1QeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiwgQ049ZmFrZWhvc3RuYW1lCiAgICAgICAgIFN1YmplY3QgUHVibGljIEtleSBJbmZvOgogICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJzYUVuY3J5cHRpb24KLSAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMTAyNCBiaXQpCisgICAgICAgICAgICAgICAgUHVibGljLUtleTogKDIwNDggYml0KQogICAgICAgICAgICAgICAgIE1vZHVsdXM6Ci0gICAgICAgICAgICAgICAgICAgIDAwOmFlOjU0OjQyOjIzOjA4OmU1OjU5OjBkOmIzOjY0OjJmOjJmOmI4OjE0OgotICAgICAgICAgICAgICAgICAgICA2YToyMDpkZDoxNTplYjpjZDo1MTo3NDo2Mzo1Mzo4MDpjNzowMTplZDpkOToKLSAgICAgICAgICAgICAgICAgICAgY2Y6MzY6MGI6NjQ6ZDE6M2E6ZjY6MWY6NjA6M2I6ZDU6NDI6NDk6MmQ6N2E6Ci0gICAgICAgICAgICAgICAgICAgIGI0OjllOjVmOjRmOjk1OjQ0OmJiOjQxOjE5OmM4OjZhOmY0OjdiOjc1Ojc2OgotICAgICAgICAgICAgICAgICAgICAzNjo0NTpmNDo2Njo4NTozNDoxZDpjZjpkNDo2OTo4ZToyYTpjNzpiMjpjNzoKLSAgICAgICAgICAgICAgICAgICAgOWE6N2U6NTI6NjE6OWE6NDg6YzY6MTI6Njc6OTE6ZmU6ZDI6Yzg6NzI6NGE6Ci0gICAgICAgICAgICAgICAgICAgIGQ3OjM1OjFhOjFhOjU1OjM0OmZjOmJjOjU4OmE4OjhiOjg2OjBhOmQxOjc5OgotICAgICAgICAgICAgICAgICAgICA3NjphYzo3NToyZjo2Mzo5MDo4NDo0Yzo3NToxODpjZTo5MTpjOTpkMTpkZDoKLSAgICAgICAgICAgICAgICAgICAgODE6N2U6YmQ6MWI6YWU6MGI6NWQ6YzY6MzkKKyAgICAgICAgICAgICAgICAgICAgMDA6Yzc6ZmY6YmU6YTE6NjQ6MDY6NDc6ZTE6YzQ6OTU6MGE6NjU6NTk6NmI6CisgICAgICAgICAgICAgICAgICAgIDkxOmM0OmE4OmEwOmEzOjA4OmFhOmRjOjNmOjAwOjQ0OjBhOmNmOjQxOjRiOgorICAgICAgICAgICAgICAgICAgICBlZDplMjo2ZjowMzo3ODpjNzpkMzo2NzoxNDpkMzpmZTpiNDoyNzo4NToxYToKKyAgICAgICAgICAgICAgICAgICAgMDI6NTc6OTc6YjU6ODY6MTY6ODc6OTc6ODI6MGQ6ZTg6MmI6ZWQ6Njk6MTY6CisgICAgICAgICAgICAgICAgICAgIGMzOjk2OmE2OmM0OjQ3OmI4OjVkOmMxOjc2OmE5OjAyOjlkOjI4OjUyOmM5OgorICAgICAgICAgICAgICAgICAgICBkOTo5MzpmMTpiMjpkYToxODo3YzowYTo3ODpiZDoxYzozZjoxMjo0ZjplNToKKyAgICAgICAgICAgICAgICAgICAgM2Y6ZWU6NWI6Yjc6YjM6M2M6YTU6YjY6NTU6NjU6YzY6MzM6MDk6YjA6NDU6CisgICAgICAgICAgICAgICAgICAgIGE0OjQ5OmY1OmQ4OmY2OjU0OjI1OjJlOmRiOjRiOmMzOjY1OjY0Ojg2OjE2OgorICAgICAgICAgICAgICAgICAgICBiZjo3Mzo4ZTo3ODplODoyNTpjYzpjMTpiNDo3ZDpkMTpiMTo1NToyMDphNDoKKyAgICAgICAgICAgICAgICAgICAgYWU6ZGU6Yjg6NDE6ZWU6NDM6OWE6NDg6MzM6ZDQ6MTI6Mzk6YTA6YTg6ZmI6CisgICAgICAgICAgICAgICAgICAgIDkxOjRmOjQ3OmJiOjNiOmQ2Ojc1OjNiOjYyOmE2OmM1OjVhOmQ3OjdlOjM2OgorICAgICAgICAgICAgICAgICAgICAxMDpiYzozYTowZDo0NjplMzpkZTpjMTpkZjo1MDpkMDo5NDo3NzoyMjoxNzoKKyAgICAgICAgICAgICAgICAgICAgYTA6NTE6OWI6YWY6ZGM6MzQ6NjA6MjY6MWQ6YTA6MDQ6YWM6YTU6MDY6MDQ6CisgICAgICAgICAgICAgICAgICAgIDU3OjY0OjFhOmQxOjRmOjFjOjE5OmY4OmJlOjRiOjY4OjEyOjBmOjVmOmMzOgorICAgICAgICAgICAgICAgICAgICAxMjo0MDo2NDpiYjpjNjphNjo4NDpkOTo1YTpiMDo3ODoxZDoxYjoxMTpjMToKKyAgICAgICAgICAgICAgICAgICAgNTQ6ZTY6MTU6ZDE6YWY6MmI6ZTI6NTc6MmI6NmQ6Yjk6YzQ6NWQ6Yjc6MDE6CisgICAgICAgICAgICAgICAgICAgIDc0OjU3OmE3OmZiOjI3Ojg1OjJiOjkyOjE1OmUyOmUzOjEzOjk3OjI5OmM4OgorICAgICAgICAgICAgICAgICAgICA5Mjo3YgogICAgICAgICAgICAgICAgIEV4cG9uZW50OiA2NTUzNyAoMHgxMDAwMSkKKyAgICAgICAgWDUwOXYzIGV4dGVuc2lvbnM6CisgICAgICAgICAgICBYNTA5djMgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lOiAKKyAgICAgICAgICAgICAgICBETlM6ZmFrZWhvc3RuYW1lCisgICAgICAgICAgICBYNTA5djMgS2V5IFVzYWdlOiBjcml0aWNhbAorICAgICAgICAgICAgICAgIERpZ2l0YWwgU2lnbmF0dXJlLCBLZXkgRW5jaXBoZXJtZW50CisgICAgICAgICAgICBYNTA5djMgRXh0ZW5kZWQgS2V5IFVzYWdlOiAKKyAgICAgICAgICAgICAgICBUTFMgV2ViIFNlcnZlciBBdXRoZW50aWNhdGlvbiwgVExTIFdlYiBDbGllbnQgQXV0aGVudGljYXRpb24KKyAgICAgICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czogY3JpdGljYWwKKyAgICAgICAgICAgICAgICBDQTpGQUxTRQorICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElkZW50aWZpZXI6IAorICAgICAgICAgICAgICAgIEY4Ojc2Ojc5OkNCOjExOjg1OkYwOjQ2OkU1Ojk1OkU2OjdFOjY5OkNCOjEyOjVFOjRFOkFBOkVDOjRECisgICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKKyAgICAgICAgICAgICAgICBrZXlpZDo5QTpDRjpDRjo2RTpFQjo3MTozRDpEQjozQzpGMTpBRTo4ODo2Qjo1Njo3MjowMzpDQjowODpBNzo0OAorICAgICAgICAgICAgICAgIERpck5hbWU6L0M9WFkvTz1QeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiBDQS9DTj1vdXItY2Etc2VydmVyCisgICAgICAgICAgICAgICAgc2VyaWFsOjgyOkVEOkJGOjQxOkM4OjgwOjkxOjlCCisKKyAgICAgICAgICAgIEF1dGhvcml0eSBJbmZvcm1hdGlvbiBBY2Nlc3M6IAorICAgICAgICAgICAgICAgIENBIElzc3VlcnMgLSBVUkk6aHR0cDovL3Rlc3RjYS5weXRob250ZXN0Lm5ldC90ZXN0Y2EvcHljYWNlcnQuY2VyCisgICAgICAgICAgICAgICAgT0NTUCAtIFVSSTpodHRwOi8vdGVzdGNhLnB5dGhvbnRlc3QubmV0L3Rlc3RjYS9vY3NwLworCisgICAgICAgICAgICBYNTA5djMgQ1JMIERpc3RyaWJ1dGlvbiBQb2ludHM6IAorCisgICAgICAgICAgICAgICAgRnVsbCBOYW1lOgorICAgICAgICAgICAgICAgICAgVVJJOmh0dHA6Ly90ZXN0Y2EucHl0aG9udGVzdC5uZXQvdGVzdGNhL3Jldm9jYXRpb24uY3JsCisKICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGExV2l0aFJTQUVuY3J5cHRpb24KLSAgICAgICAgIGFkOjQ1OjhhOjhlOmVmOmM2OmVmOjA0OjQxOjVjOjJjOjRhOjg0OmRjOjAyOjc2OjBjOmQwOgotICAgICAgICAgNjY6MGY6ZjA6MTY6MDQ6NTg6NGQ6ZmQ6Njg6Yjc6Yjg6ZDM6YTg6NDE6YTU6NWM6M2M6NmY6Ci0gICAgICAgICA2NTozYzpkMTpmODpjZTo0MzozNTplNzo0MTo1Zjo1MzozZDpjOToyYzpjMzo3ZDpmYzo1NjoKLSAgICAgICAgIDRhOmZhOjQ3Ojc3OjM4OjlkOmJiOjk3OjI4OjBhOjNiOjkxOjE5OjdmOmJjOjc0OmFlOjE1OgotICAgICAgICAgNmI6YmQ6MjA6MzY6Njc6NDU6YTU6MWU6Nzk6ZDc6NzU6ZTY6ODk6NWM6NmQ6NTQ6ODQ6ZDE6Ci0gICAgICAgICA5NTpkNzphNzpiNDozMzozYzphZjozNzpjNDo3OTo4Zjo1ZTo3NTpkYzo3NTpjMjoxODpmYjoKLSAgICAgICAgIDYxOjZmOjJkOmRjOjM4OjY1OjViOmJhOjY3OjI4OmQwOjg4OmQ3OjhkOmI5OjIzOjVhOjhlOgotICAgICAgICAgZTg6YzY6YmI6ZGI6Y2U6ZDU6Yjg6NDE6MmE6Y2U6OTM6MDg6YjY6OTU6YWQ6MzQ6MjA6MTg6Ci0gICAgICAgICBkNTozYjozNzo1Mjo3NDo1MDowYjowNzoyYzpiMDo2ZDphNDo0Yzo3YjpmNDplMDpmZDpkMToKLSAgICAgICAgIGFmOjE3OmFhOjIwOmNkOjYyOmUzOmYwOjlkOjM3OjY5OmRiOjQxOmJkOmQ0OjFjOmZiOjUzOgotICAgICAgICAgMjA6ZGE6ODg6OWQ6NzY6MjY6Njc6Y2U6MDE6OTA6YTc6ODA6MWQ6YTk6NWI6Mzk6NzM6Njg6Ci0gICAgICAgICA1NDowYTpkMToyYTowMzoxYjo4ZjozYzo0Mzo1ZDo1ZDpjNDo1MTpmMTphNzplNzoxMTpkYToKLSAgICAgICAgIDMxOjJjOjQ5OjA2OmFmOjA0OmY0OmI4OjNjOjk5OmM0OjIwOmI5OjA2OjM2OmEyOjAwOjkyOgotICAgICAgICAgNjE6MWQ6MGM6NmQ6MjQ6MDU6ZTI6ODI6ZTE6NDc6ZGI6YTA6NWY6YmE6Yjk6ZmI6YmE6ZmE6Ci0gICAgICAgICA0OToxMjoxZTpjZQorICAgICAgICAgNmQ6NTA6OGQ6ZmI6ZWU6NGU6OTM6OGI6ZWI6NDc6NTY6YmE6Mzg6Y2M6ODA6ZTE6OWQ6Yzc6CisgICAgICAgICBlMTo5ZToxZjo5YzoyMjowYzpkMjowODo5YjplZDpiZjozMTpkOTowMDplZTphZjo4Yzo1NjoKKyAgICAgICAgIDc4OjkyOmQxOjdjOmJhOjRlOjgxOjdmOjgyOjFmOmY0OjY4Ojk5Ojg2OjkxOmM2OmNiOjU3OgorICAgICAgICAgZDM6Yjk6NDE6MTI6ZmE6NzU6NTM6ZmQ6MjI6MzI6MjE6NTA6YWY6NmI6NGM6YjE6MzQ6MzY6CisgICAgICAgICBkMTphODoyNTowYTpkMDpmMDpmODo4MTo3ZDo2OTo1ODo2ZTphZjplMzpkMjpjNDozMjo4NzoKKyAgICAgICAgIDc5OmQ3OmNkOmFkOjBjOjU2OmYzOjE1OjI3OjEwOjBjOmY5OjU3OjU5OjUzOjAwOmVkOmFmOgorICAgICAgICAgNWQ6NGQ6MDc6ODY6N2E6ZTU6ZjM6OTc6ODg6YmM6ODY6YjQ6ZjE6MTc6NDY6MzM6NTU6Mjg6CisgICAgICAgICA2Njo3Yjo3MDpkMzphNToxMjpiOTo0ZjpjNzplZDplNjoxMzoyMDoyZDpmMDo5ZTplYzoxNzoKKyAgICAgICAgIDY0OmNmOmZkOjEzOjE0OjFiOjc2OmJhOjY0OmFjOmM1OjUxOmI2OmNkOjEzOjBhOjkzOmIxOgorICAgICAgICAgZmQ6NDM6MDk6YTA6MGI6NDQ6NmM6Nzc6NDU6NDM6MGI6ZTU6ZWQ6NzA6YjI6NzY6ZGM6MDg6CisgICAgICAgICA0YTo1Yjo3Mzo1ZjpjMTpmYzo3Zjo2Mzo3MDpmODpiOTpjYTozYzo5ODowNjo1ZjpmZDo5ODoKKyAgICAgICAgIGQxOmU0OmU2OjYxOjVmOjA5OjhmOjZjOjE4Ojg2Ojk4OjljOmNiOjNmOjczOjdiOjNmOjM4OgorICAgICAgICAgZjU6YTc6MDk6MjA6ZWU6YTU6NjM6MWM6ZmY6OGI6YTY6ZDE6OGM6ZTg6ZjQ6ODQ6M2Q6OTk6CisgICAgICAgICAzODowZjpjYzplMDo1MjowMzpmOToxODowNToyMzo3NjozOTpkZTo1MjpjZTo4ZTpmYjphNjoKKyAgICAgICAgIDZlOmY1OjRmOmMzCiAtLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUNwekNDQVk4Q0NRQ3drbVN4OHRvaDBqQU5CZ2txaGtpRzl3MEJBUVVGQURCTk1Rc3dDUVlEVlFRR0V3SlkKK01JSUU5ekNDQTkrZ0F3SUJBZ0lKQUlMdHYwSElnSkdkTUEwR0NTcUdTSWIzRFFFQkJRVUFNRTB4Q3pBSkJnTlYKK0JBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnUm05MWJtUmhkR2x2YmlCRFFURVcKK01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakFlRncweE9EQXhNVGt4T1RBNU1EWmFGdzB5TnpFeE1qZ3gKK09UQTVNRFphTUdJeEN6QUpCZ05WQkFZVEFsaFpNUmN3RlFZRFZRUUhEQTVEWVhOMGJHVWdRVzUwYUhKaGVERWoKK01DRUdBMVVFQ2d3YVVIbDBhRzl1SUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEZUQVRCZ05WQkFNTURHWmgKK2EyVm9iM04wYm1GdFpUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU1mL3ZxRmsKK0JrZmh4SlVLWlZscmtjU29vS01JcXR3L0FFUUt6MEZMN2VKdkEzakgwMmNVMC82MEo0VWFBbGVYdFlZV2g1ZUMKK0RlZ3I3V2tXdzVhbXhFZTRYY0YycVFLZEtGTEoyWlB4c3RvWWZBcDR2UncvRWsvbFArNWJ0N004cGJaVlpjWXoKK0NiQkZwRW4xMlBaVUpTN2JTOE5sWklZV3YzT09lT2dsek1HMGZkR3hWU0NrcnQ2NFFlNURta2d6MUJJNW9LajcKK2tVOUh1enZXZFR0aXBzVmExMzQyRUx3NkRVYmozc0hmVU5DVWR5SVhvRkdicjl3MFlDWWRvQVNzcFFZRVYyUWEKKzBVOGNHZmkrUzJnU0QxL0RFa0JrdThhbWhObGFzSGdkR3hIQlZPWVYwYThyNGxjcmJibkVYYmNCZEZlbit5ZUYKK0s1SVY0dU1UbHluSWtuc0NBd0VBQWFPQ0FjTXdnZ0cvTUJjR0ExVWRFUVFRTUE2Q0RHWmhhMlZvYjNOMGJtRnQKK1pUQU9CZ05WSFE4QkFmOEVCQU1DQmFBd0hRWURWUjBsQkJZd0ZBWUlLd1lCQlFVSEF3RUdDQ3NHQVFVRkJ3TUMKK01Bd0dBMVVkRXdFQi93UUNNQUF3SFFZRFZSME9CQllFRlBoMmVjc1JoZkJHNVpYbWZtbkxFbDVPcXV4Tk1IMEcKK0ExVWRJd1IyTUhTQUZKclB6MjdyY1QzYlBQR3VpR3RXY2dQTENLZElvVkdrVHpCTk1Rc3dDUVlEVlFRR0V3SlkKIFdURW1NQ1FHQTFVRUNnd2RVSGwwYUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNGdRMEV4RmpBVUJnTlYKLUJBTU1EVzkxY2kxallTMXpaWEoyWlhJd0hoY05NVE13TVRBME1UazBOekEzV2hjTk1qSXhNVEV6TVRrME56QTMKLVdqQmlNUXN3Q1FZRFZRUUdFd0pZV1RFWE1CVUdBMVVFQnhNT1EyRnpkR3hsSUVGdWRHaHlZWGd4SXpBaEJnTlYKLUJBb1RHbEI1ZEdodmJpQlRiMlowZDJGeVpTQkdiM1Z1WkdGMGFXOXVNUlV3RXdZRFZRUURFd3htWVd0bGFHOXoKLWRHNWhiV1V3Z1o4d0RRWUpLb1pJaHZjTkFRRUJCUUFEZ1kwQU1JR0pBb0dCQUs1VVFpTUk1VmtOczJRdkw3Z1UKLWFpRGRGZXZOVVhSalU0REhBZTNaenpZTFpORTY5aDlnTzlWQ1NTMTZ0SjVmVDVWRXUwRVp5R3IwZTNWMk5rWDAKLVpvVTBIYy9VYVk0cXg3TEhtbjVTWVpwSXhoSm5rZjdTeUhKSzF6VWFHbFUwL0x4WXFJdUdDdEY1ZHF4MUwyT1EKLWhFeDFHTTZSeWRIZGdYNjlHNjRMWGNZNUFnTUJBQUV3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCQUsxRmlvN3YKLXh1OEVRVndzU29UY0FuWU0wR1lQOEJZRVdFMzlhTGU0MDZoQnBWdzhiMlU4MGZqT1F6WG5RVjlUUGNrc3czMzgKLVZrcjZSM2M0bmJ1WEtBbzdrUmwvdkhTdUZXdTlJRFpuUmFVZWVkZDE1b2xjYlZTRTBaWFhwN1F6UEs4M3hIbVAKLVhuWGNkY0lZKzJGdkxkdzRaVnU2WnlqUWlOZU51U05hanVqR3U5dk8xYmhCS3M2VENMYVZyVFFnR05VN04xSjAKLVVBc0hMTEJ0cEV4NzlPRDkwYThYcWlETll1UHduVGRwMjBHOTFCejdVeURhaUoxMkptZk9BWkNuZ0IycFd6bHoKLWFGUUswU29ERzQ4OFExMWR4Rkh4cCtjUjJqRXNTUWF2QlBTNFBKbkVJTGtHTnFJQWttRWRERzBrQmVLQzRVZmIKLW9GKzZ1ZnU2K2trU0hzND0KK0JBTU1EVzkxY2kxallTMXpaWEoyWlhLQ0NRQ0M3YjlCeUlDUm16Q0Jnd1lJS3dZQkJRVUhBUUVFZHpCMU1Ed0cKK0NDc0dBUVVGQnpBQ2hqQm9kSFJ3T2k4dmRHVnpkR05oTG5CNWRHaHZiblJsYzNRdWJtVjBMM1JsYzNSallTOXcKK2VXTmhZMlZ5ZEM1alpYSXdOUVlJS3dZQkJRVUhNQUdHS1doMGRIQTZMeTkwWlhOMFkyRXVjSGwwYUc5dWRHVnoKK2RDNXVaWFF2ZEdWemRHTmhMMjlqYzNBdk1FTUdBMVVkSHdROE1Eb3dPS0Eyb0RTR01taDBkSEE2THk5MFpYTjAKK1kyRXVjSGwwYUc5dWRHVnpkQzV1WlhRdmRHVnpkR05oTDNKbGRtOWpZWFJwYjI0dVkzSnNNQTBHQ1NxR1NJYjMKK0RRRUJCUVVBQTRJQkFRQnRVSTM3N2s2VGkrdEhWcm80eklEaG5jZmhuaCtjSWd6U0NKdnR2ekhaQU82dmpGWjQKK2t0Rjh1azZCZjRJZjlHaVpocEhHeTFmVHVVRVMrblZUL1NJeUlWQ3ZhMHl4TkRiUnFDVUswUEQ0Z1gxcFdHNnYKKzQ5TEVNb2Q1MTgydERGYnpGU2NRRFBsWFdWTUE3YTlkVFFlR2V1WHpsNGk4aHJUeEYwWXpWU2htZTNEVHBSSzUKK1Q4ZnQ1aE1nTGZDZTdCZGt6LzBURkJ0MnVtU3N4VkcyelJNS2s3SDlRd21nQzBSc2QwVkRDK1h0Y0xKMjNBaEsKK1czTmZ3ZngvWTNENHVjbzhtQVpmL1pqUjVPWmhYd21QYkJpR21KekxQM043UHpqMXB3a2c3cVZqSFArTHB0R00KKzZQU0VQWms0RDh6Z1VnUDVHQVVqZGpuZVVzNk8rNlp1OVUvRAogLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weSBiL0xpYi90ZXN0L2xpc3RfdGVzdHMucHkKaW5kZXggZWQ2MDZkYi4uNTRjZmI5NyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvbGlzdF90ZXN0cy5weQorKysgYi9MaWIvdGVzdC9saXN0X3Rlc3RzLnB5CkBAIC00NSwxMCArNDUsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYTIpLCAiWzAsIDEsIDIsIFsuLi5dLCAzXSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihhMiksICJbMCwgMSwgMiwgWy4uLl0sIDNdIikKIAotICAgICAgICBsMCA9IFtdCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKSArIDEwMCk6Ci0gICAgICAgICAgICBsMCA9IFtsMF0KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCByZXByLCBsMCkKKyAgICBkZWYgdGVzdF9yZXByX2RlZXAoc2VsZik6CisgICAgICAgIGEgPSBzZWxmLnR5cGUydGVzdChbXSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkgKyAxMDApOgorICAgICAgICAgICAgYSA9IHNlbGYudHlwZTJ0ZXN0KFthXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCByZXByLCBhKQogCiAgICAgZGVmIHRlc3RfcHJpbnQoc2VsZik6CiAgICAgICAgIGQgPSBzZWxmLnR5cGUydGVzdCh4cmFuZ2UoMjAwKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkgYi9MaWIvdGVzdC9sb2NrX3Rlc3RzLnB5CmluZGV4IGVmYzQ2NGYuLjgzNmYzZTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L2xvY2tfdGVzdHMucHkKKysrIGIvTGliL3Rlc3QvbG9ja190ZXN0cy5weQpAQCAtMzQ3LDIyICszNDcsNDAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBjb25kLm5vdGlmeSkKIAogICAgIGRlZiBfY2hlY2tfbm90aWZ5KHNlbGYsIGNvbmQpOgorICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIHRlc3QgaXMgc2Vuc2l0aXZlIHRvIHRpbWluZy4gIElmIHRoZSB3b3JrZXIgdGhyZWFkcworICAgICAgICAjIGRvbid0IGV4ZWN1dGUgaW4gYSB0aW1lbHkgZmFzaGlvbiwgdGhlIG1haW4gdGhyZWFkIG1heSB0aGluayB0aGV5CisgICAgICAgICMgYXJlIGZ1cnRoZXIgYWxvbmcgdGhlbiB0aGV5IGFyZS4gIFRoZSBtYWluIHRocmVhZCB0aGVyZWZvcmUgaXNzdWVzCisgICAgICAgICMgX3dhaXQoKSBzdGF0ZW1lbnRzIHRvIHRyeSB0byBtYWtlIHN1cmUgdGhhdCBpdCBkb2Vzbid0IHJhY2UgYWhlYWQKKyAgICAgICAgIyBvZiB0aGUgd29ya2Vycy4KKyAgICAgICAgIyBTZWNvbmRseSwgdGhpcyB0ZXN0IGFzc3VtZXMgdGhhdCBjb25kaXRpb24gdmFyaWFibGVzIGFyZSBub3Qgc3ViamVjdAorICAgICAgICAjIHRvIHNwdXJpb3VzIHdha2V1cHMuICBUaGUgYWJzZW5jZSBvZiBzcHVyaW91cyB3YWtldXBzIGlzIGFuIGltcGxlbWVudGF0aW9uCisgICAgICAgICMgZGV0YWlsIG9mIENvbmRpdGlvbiBDYXJpYWJsZXMgaW4gY3VycmVudCBDUHl0aG9uLCBidXQgaW4gZ2VuZXJhbCwgbm90CisgICAgICAgICMgYSBndWFyYW50ZWVkIHByb3BlcnR5IG9mIGNvbmRpdGlvbiB2YXJpYWJsZXMgYXMgYSBwcm9ncmFtbWluZworICAgICAgICAjIGNvbnN0cnVjdC4gIEluIHBhcnRpY3VsYXIsIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhpcyBjYW4gbm8gbG9uZ2VyCisgICAgICAgICMgYmUgY29udmVuaWVudGx5IGd1YXJhbnRlZWQgc2hvdWxkIHRoZWlyIGltcGxlbWVudGF0aW9uIGV2ZXIgY2hhbmdlLgogICAgICAgICBOID0gNQorICAgICAgICByZWFkeSA9IFtdCiAgICAgICAgIHJlc3VsdHMxID0gW10KICAgICAgICAgcmVzdWx0czIgPSBbXQogICAgICAgICBwaGFzZV9udW0gPSAwCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICBjb25kLmFjcXVpcmUoKQorICAgICAgICAgICAgcmVhZHkuYXBwZW5kKHBoYXNlX251bSkKICAgICAgICAgICAgIGNvbmQud2FpdCgpCiAgICAgICAgICAgICBjb25kLnJlbGVhc2UoKQogICAgICAgICAgICAgcmVzdWx0czEuYXBwZW5kKHBoYXNlX251bSkKICAgICAgICAgICAgIGNvbmQuYWNxdWlyZSgpCisgICAgICAgICAgICByZWFkeS5hcHBlbmQocGhhc2VfbnVtKQogICAgICAgICAgICAgY29uZC53YWl0KCkKICAgICAgICAgICAgIGNvbmQucmVsZWFzZSgpCiAgICAgICAgICAgICByZXN1bHRzMi5hcHBlbmQocGhhc2VfbnVtKQogICAgICAgICBiID0gQnVuY2goZiwgTikKICAgICAgICAgYi53YWl0X2Zvcl9zdGFydGVkKCkKLSAgICAgICAgX3dhaXQoKQorICAgICAgICAjIGZpcnN0IHdhaXQsIHRvIGVuc3VyZSBhbGwgd29ya2VycyBzZXR0bGUgaW50byBjb25kLndhaXQoKSBiZWZvcmUKKyAgICAgICAgIyB3ZSBjb250aW51ZS4gU2VlIGlzc3VlcyAjODc5OSBhbmQgIzMwNzI3LgorICAgICAgICB3aGlsZSBsZW4ocmVhZHkpIDwgNToKKyAgICAgICAgICAgIF93YWl0KCkKKyAgICAgICAgcmVhZHkgPSBbXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdHMxLCBbXSkKICAgICAgICAgIyBOb3RpZnkgMyB0aHJlYWRzIGF0IGZpcnN0CiAgICAgICAgIGNvbmQuYWNxdWlyZSgpCkBAIC0zNzQsNiArMzkyLDkgQEAKICAgICAgICAgICAgIF93YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzMSwgWzFdICogMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzMiwgW10pCisgICAgICAgICMgbWFrZSBzdXJlIGFsbCBhd2FrZW4gd29ya2VycyBzZXR0bGUgaW50byBjb25kLndhaXQoKQorICAgICAgICB3aGlsZSBsZW4ocmVhZHkpIDwgMzoKKyAgICAgICAgICAgIF93YWl0KCkKICAgICAgICAgIyBOb3RpZnkgNSB0aHJlYWRzOiB0aGV5IG1pZ2h0IGJlIGluIHRoZWlyIGZpcnN0IG9yIHNlY29uZCB3YWl0CiAgICAgICAgIGNvbmQuYWNxdWlyZSgpCiAgICAgICAgIGNvbmQubm90aWZ5KDUpCkBAIC0zODQsNiArNDA1LDkgQEAKICAgICAgICAgICAgIF93YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHRzMSwgWzFdICogMyArIFsyXSAqIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0czIsIFsyXSAqIDMpCisgICAgICAgICMgbWFrZSBzdXJlIGFsbCB3b3JrZXJzIHNldHRsZSBpbnRvIGNvbmQud2FpdCgpCisgICAgICAgIHdoaWxlIGxlbihyZWFkeSkgPCA1OgorICAgICAgICAgICAgX3dhaXQoKQogICAgICAgICAjIE5vdGlmeSBhbGwgdGhyZWFkczogdGhleSBhcmUgYWxsIGluIHRoZWlyIHNlY29uZCB3YWl0CiAgICAgICAgIGNvbmQuYWNxdWlyZSgpCiAgICAgICAgIGNvbmQubm90aWZ5X2FsbCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9tYXBwaW5nX3Rlc3RzLnB5IGIvTGliL3Rlc3QvbWFwcGluZ190ZXN0cy5weQppbmRleCBmNDM3NTBiLi4yNDhkZWUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC9tYXBwaW5nX3Rlc3RzLnB5CisrKyBiL0xpYi90ZXN0L21hcHBpbmdfdGVzdHMucHkKQEAgLTIsNiArMiw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBVc2VyRGljdAogaW1wb3J0IHRlc3Rfc3VwcG9ydAoraW1wb3J0IHN5cwogCiAKIGNsYXNzIEJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC02NDUsNiArNjQ2LDE0IEBACiAgICAgICAgIGQgPSBzZWxmLl9mdWxsX21hcHBpbmcoezE6IEJhZFJlcHIoKX0pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4YywgcmVwciwgZCkKIAorICAgIGRlZiB0ZXN0X3JlcHJfZGVlcChzZWxmKToKKyAgICAgICAgZCA9IHNlbGYuX2VtcHR5X21hcHBpbmcoKQorICAgICAgICBmb3IgaSBpbiByYW5nZShzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKSArIDEwMCk6CisgICAgICAgICAgICBkMCA9IGQKKyAgICAgICAgICAgIGQgPSBzZWxmLl9lbXB0eV9tYXBwaW5nKCkKKyAgICAgICAgICAgIGRbMV0gPSBkMAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHJlcHIsIGQpCisKICAgICBkZWYgdGVzdF9sZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCAoc2VsZi5fZW1wdHlfbWFwcGluZygpIDwgc2VsZi5fZW1wdHlfbWFwcGluZygpKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vdCAoc2VsZi5fZnVsbF9tYXBwaW5nKHsxOiAyfSkgPCBzZWxmLl9mdWxsX21hcHBpbmcoezFMOiAyTH0pKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weSBiL0xpYi90ZXN0L211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CnJlbmFtZSB0byBMaWIvdGVzdC9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CmluZGV4IDE2MzFlNDYuLjViMjMyOWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQorKysgYi9MaWIvdGVzdC9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LnB5CkBAIC0xLDQgKzEsNCBAQAotIyB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQucHkKKyMgbXVsdGlieXRlY29kZWNfc3VwcG9ydC5weQogIyAgIENvbW1vbiBVbml0dGVzdCBSb3V0aW5lcyBmb3IgQ0pLIGNvZGVjcwogIwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkgYi9MaWIvdGVzdC9waWNrbGV0ZXN0ZXIucHkKaW5kZXggMDIyNzg5ZC4uMDI1NmJjYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvcGlja2xldGVzdGVyLnB5CisrKyBiL0xpYi90ZXN0L3BpY2tsZXRlc3Rlci5weQpAQCAtMTQ3LDYgKzE0NywxNyBAQAogY2xhc3MgSChvYmplY3QpOgogICAgIHBhc3MKIAorY2xhc3MgTXlFcnIoRXhjZXB0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHBhc3MKKworY2xhc3MgSToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmFpc2UgTXlFcnIoKQorCisgICAgZGVmIF9fZ2V0aW5pdGFyZ3NfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICgpCisKICMgSGFzaGFibGUgbXV0YWJsZSBrZXkKIGNsYXNzIEsob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsdWUpOgpAQCAtMTU2LDcgKzE2Nyw3IEBACiAgICAgICAgICMgU2hvdWxkbid0IHN1cHBvcnQgdGhlIHJlY3Vyc2lvbiBpdHNlbGYKICAgICAgICAgcmV0dXJuIEssIChzZWxmLnZhbHVlLCkKIAotaW1wb3J0IF9fbWFpbl9fCitfX21haW5fXyA9IHN5cy5tb2R1bGVzWydfX21haW5fXyddCiBfX21haW5fXy5DID0gQwogQy5fX21vZHVsZV9fID0gIl9fbWFpbl9fIgogX19tYWluX18uRCA9IEQKQEAgLTE2NSw2ICsxNzYsOCBAQAogRS5fX21vZHVsZV9fID0gIl9fbWFpbl9fIgogX19tYWluX18uSCA9IEgKIEguX19tb2R1bGVfXyA9ICJfX21haW5fXyIKK19fbWFpbl9fLkkgPSBJCitJLl9fbW9kdWxlX18gPSAiX19tYWluX18iCiBfX21haW5fXy5LID0gSwogSy5fX21vZHVsZV9fID0gIl9fbWFpbl9fIgogCkBAIC02MjMsNiArNjM2LDM2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICdxXHgwMG9xXHgwMX1xXHgwMmIuJykucmVwbGFjZSgnWCcsIHhuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRfaXNfY29weShYKCphcmdzKSwgc2VsZi5sb2FkcyhwaWNrbGUyKSkKIAorICAgIGRlZiB0ZXN0X2xvYWRfY2xhc3NpY19pbnN0YW5jZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjg5MjUuCisgICAgICAgICMgUHJvdG9jb2wgMCAodGV4dCBtb2RlIHBpY2tsZSk6CisgICAgICAgICIiIgorICAgICAgICAgMDogKCAgICBNQVJLCisgICAgICAgICAxOiBpICAgICAgICBJTlNUICAgICAgICdfX21haW5fXyBJJyAoTUFSSyBhdCAwKQorICAgICAgICAxMzogKCAgICBNQVJLCisgICAgICAgIDE0OiBkICAgICAgICBESUNUICAgICAgIChNQVJLIGF0IDEzKQorICAgICAgICAxNTogYiAgICBCVUlMRAorICAgICAgICAxNjogLiAgICBTVE9QCisgICAgICAgICIiIgorICAgICAgICBwaWNrbGUwID0gKCcoaV9fbWFpbl9fXG4nCisgICAgICAgICAgICAgICAgICAgJ0lcbicKKyAgICAgICAgICAgICAgICAgICAnKGRiLicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE15RXJyLCBzZWxmLmxvYWRzLCBwaWNrbGUwKQorCisgICAgICAgICMgUHJvdG9jb2wgMSAoYmluYXJ5IG1vZGUgcGlja2xlKQorICAgICAgICAiIiIKKyAgICAgICAgIDA6ICggICAgTUFSSworICAgICAgICAgMTogYyAgICAgICAgR0xPQkFMICAgICAnX19tYWluX18gSScKKyAgICAgICAgMTM6IG8gICAgICAgIE9CSiAgICAgICAgKE1BUksgYXQgMCkKKyAgICAgICAgMTQ6IH0gICAgRU1QVFlfRElDVAorICAgICAgICAxNTogYiAgICBCVUlMRAorICAgICAgICAxNjogLiAgICBTVE9QCisgICAgICAgICIiIgorICAgICAgICBwaWNrbGUxID0gKCcoY19fbWFpbl9fXG4nCisgICAgICAgICAgICAgICAgICAgJ0lcbicKKyAgICAgICAgICAgICAgICAgICAnb31iLicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE15RXJyLCBzZWxmLmxvYWRzLCBwaWNrbGUxKQorCiAgICAgZGVmIHRlc3RfbG9hZF9zdHIoc2VsZik6CiAgICAgICAgICMgRnJvbSBQeXRob24gMjogcGlja2xlLmR1bXBzKCdhXHgwMFx4YTAnLCBwcm90b2NvbD0wKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYubG9hZHMoIlMnYVxceDAwXFx4YTAnXG4uIiksICdhXHgwMFx4YTAnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcHljYWNlcnQucGVtIGIvTGliL3Rlc3QvcHljYWNlcnQucGVtCmluZGV4IDA5YjFmM2UuLjg1MGZhMzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3B5Y2FjZXJ0LnBlbQorKysgYi9MaWIvdGVzdC9weWNhY2VydC5wZW0KQEAgLTEsNzggKzEsNzkgQEAKIENlcnRpZmljYXRlOgogICAgIERhdGE6CiAgICAgICAgIFZlcnNpb246IDMgKDB4MikKLSAgICAgICAgU2VyaWFsIE51bWJlcjogMTI3MjMzNDI2MTI3MjE0NDMyODAgKDB4YjA5MjY0YjFmMmRhMjFkMCkKKyAgICAgICAgU2VyaWFsIE51bWJlcjoKKyAgICAgICAgICAgIDgyOmVkOmJmOjQxOmM4OjgwOjkxOjliCiAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCiAgICAgICAgIElzc3VlcjogQz1YWSwgTz1QeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiBDQSwgQ049b3VyLWNhLXNlcnZlcgogICAgICAgICBWYWxpZGl0eQotICAgICAgICAgICAgTm90IEJlZm9yZTogSmFuICA0IDE5OjQ3OjA3IDIwMTMgR01UCi0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBKYW4gIDIgMTk6NDc6MDcgMjAyMyBHTVQKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IEphbiAxOSAxOTowOTowNiAyMDE4IEdNVAorICAgICAgICAgICAgTm90IEFmdGVyIDogSmFuIDE3IDE5OjA5OjA2IDIwMjggR01UCiAgICAgICAgIFN1YmplY3Q6IEM9WFksIE89UHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24gQ0EsIENOPW91ci1jYS1zZXJ2ZXIKICAgICAgICAgU3ViamVjdCBQdWJsaWMgS2V5IEluZm86CiAgICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRobTogcnNhRW5jcnlwdGlvbgogICAgICAgICAgICAgICAgIFB1YmxpYy1LZXk6ICgyMDQ4IGJpdCkKICAgICAgICAgICAgICAgICBNb2R1bHVzOgotICAgICAgICAgICAgICAgICAgICAwMDplNzpkZTplOTplMzowYzo5ZjowMDpiNjphMTpmZDoyYjo1Yjo5NjpkMjoKLSAgICAgICAgICAgICAgICAgICAgNmY6Y2M6ZTA6YmU6ODY6Yjk6MjA6NWU6ZWM6MDM6N2E6NTU6YWI6ZWE6YTQ6Ci0gICAgICAgICAgICAgICAgICAgIGU5OmY5OjQ5Ojg1OmQyOjY2OmQ1OmVkOmM3OjdhOmVhOjU2OjhlOjJkOjhmOgotICAgICAgICAgICAgICAgICAgICBlNzo0MjplMjo2MjoyODphOTo5ZjpkNjoxYjo4ZTplYjpiNTpiNDo5Yzo5ZjoKLSAgICAgICAgICAgICAgICAgICAgMTQ6YWI6ZGY6ZTY6OTQ6OGI6NzY6MWQ6M2U6NmQ6MjQ6NjE6ZWQ6MGM6YmY6Ci0gICAgICAgICAgICAgICAgICAgIDAwOjhhOjYxOjBjOmRmOjVjOmM4OjM2OjczOjE2OjAwOmNkOjQ3OmJhOjZkOgotICAgICAgICAgICAgICAgICAgICBhNDphNDo3NDo4ODo4MzoyMzowYToxOTpmYzowOTphNzozYzo0YTo0YjpkMzoKLSAgICAgICAgICAgICAgICAgICAgZTc6MWQ6MmQ6ZTQ6ZWE6NGM6NTQ6MjE6ZjM6MjY6ZGI6ODk6Mzc6MTg6ZDQ6Ci0gICAgICAgICAgICAgICAgICAgIDAyOmJiOjQwOjMyOjVmOmE0OmZmOjJkOjFjOmY3OmQ0OmJiOmVjOjhlOmNmOgotICAgICAgICAgICAgICAgICAgICA1Yzo4MjphYzplNjo3YzowODo2Yzo0ODo4NTo2MTowNzo3ZjoyNTplMDo1YzoKLSAgICAgICAgICAgICAgICAgICAgZTA6YmM6MzQ6NWY6ZTA6Yjk6MDQ6NDc6NzU6Yzg6NDc6MGI6OGQ6YmM6ZDY6Ci0gICAgICAgICAgICAgICAgICAgIGM4OjY4OjVmOjMzOjgzOjYyOmQyOjIwOjQ0OjM1OmIxOmFkOjgxOjFhOjhhOgotICAgICAgICAgICAgICAgICAgICBjZDpiYzozNTpiMDo1Yzo4Yjo0NzpkNjoxODplOTo5YzoxODo5NzpjYzowMToKLSAgICAgICAgICAgICAgICAgICAgM2M6Mjk6Y2M6ZTg6MWU6ZTQ6ZTQ6YzE6Yjg6ZGU6ZTc6YzI6MTE6MTg6ODc6Ci0gICAgICAgICAgICAgICAgICAgIDVhOjkzOjM0OmQ4OmE2OjI1OmY3OjE0OjcxOmViOmU0OjIxOmEyOmQyOjBmOgotICAgICAgICAgICAgICAgICAgICAyZToyZTpkNDo2MjowMDozNTpkMzpkNjplZjo1Yzo2MDo0Yjo0YzphOToxNDoKLSAgICAgICAgICAgICAgICAgICAgZTI6ZGQ6MTU6NTg6NDY6Mzc6MzM6MjY6Yjc6ZTc6MmU6NWQ6ZWQ6NDI6ZTQ6Ci0gICAgICAgICAgICAgICAgICAgIGM1OjRkCisgICAgICAgICAgICAgICAgICAgIDAwOmMzOjE4OjY5OjZiOmM5OjQ3OjI5Ojk4OjhlOmIxOjU2OmMyOjJlOmZhOgorICAgICAgICAgICAgICAgICAgICAwZTo1ZTpiYzoyMzo4MDpiMzowNzo2MjoyNDpkMjo0Mjo1YjpmMTo0YTpiZjoKKyAgICAgICAgICAgICAgICAgICAgYTk6Yzg6MjE6NzU6Yzg6ZTM6ZTY6MmM6MWY6ODc6M2M6NmU6N2M6MWI6ZWQ6CisgICAgICAgICAgICAgICAgICAgIDM5OjMyOjk1OmI3OjQwOmIyOjYwOjQ4OmMzOjlhOjE2OjA4OmZlOjZkOjY3OgorICAgICAgICAgICAgICAgICAgICA4ODozNDozYjo3Nzo3Nzo3MDoxYzo3MDo1YTpkMToxZjo1ZjowNDoyMTo1NDoKKyAgICAgICAgICAgICAgICAgICAgYjk6MGM6ZTM6NDE6ODU6MWQ6NTg6ZWU6MmY6ZWQ6ZjM6MGU6ZWY6ZDg6MjM6CisgICAgICAgICAgICAgICAgICAgIGExOmZhOjczOmZiOjRjOjI4OmUwOmU1OmU2OjRkOjBiOjAyOjUyOjQ5Ojg2OgorICAgICAgICAgICAgICAgICAgICBjNzpiZTo3ZTpiZDplNjo1Njo3Njo4Yjo3MDo4ZTowYTo4ZjowNjozMzoyMDoKKyAgICAgICAgICAgICAgICAgICAgMWQ6N2I6NWI6YWE6ZDA6YzU6MWI6YWI6OWI6Y2M6NTQ6MDk6M2M6YmY6ZTQ6CisgICAgICAgICAgICAgICAgICAgIDQwOjY2OmYxOmZiOmQ2OmY3OjE2OjlkOmM0OjE5OmQ0OmMzOmYyOmZmOjA3OgorICAgICAgICAgICAgICAgICAgICBiYzo2Zjo1YTo5ZToyNToxYjowMjo0YTphNTplYzo0Mjo5NjozYTo3MDpkMjoKKyAgICAgICAgICAgICAgICAgICAgNmM6OTk6MmI6Y2U6YmU6ZTg6ZDI6MDE6ZWY6ZDU6YmE6YjA6Y2Y6OTQ6M2U6CisgICAgICAgICAgICAgICAgICAgIDgyOmQwOjAxOmQ2OjRiOjcxOjgwOjAzOjBhOjEyOjQ1Ojg2Ojc5OjgxOmQ4OgorICAgICAgICAgICAgICAgICAgICA0YjpkMjplODpiNTpiNzoyYzo2Yzo5YTo0Yzo4YToxMDoxMDplNDplNDpmNToKKyAgICAgICAgICAgICAgICAgICAgZGY6Y2U6ODQ6OTE6Y2E6ZDE6NDY6ZTA6ODQ6NzM6MTc6NjY6ZGI6Njk6NDM6CisgICAgICAgICAgICAgICAgICAgIDc4OjgwOjgzOmJlOjE0OjRkOmYxOjNlOjFhOmQ2OjZjOmY1OmRlOjQ1OmYzOgorICAgICAgICAgICAgICAgICAgICAzOTphZjo5MTpkNTozZDo1NDo0NDpiZjo0MTpjYzo3Mzo2ODoxYTpmYzoyNDoKKyAgICAgICAgICAgICAgICAgICAgZGI6OTEKICAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCiAgICAgICAgIFg1MDl2MyBleHRlbnNpb25zOgogICAgICAgICAgICAgWDUwOXYzIFN1YmplY3QgS2V5IElkZW50aWZpZXI6IAotICAgICAgICAgICAgICAgIEJDOkREOjYyOkQ5Ojc2OkRBOjFCOkQyOjU0OjZCOkNGOkUwOjY2OjlCOjFFOjFFOjdCOjU2OjBDOjBCCisgICAgICAgICAgICAgICAgOUE6Q0Y6Q0Y6NkU6RUI6NzE6M0Q6REI6M0M6RjE6QUU6ODg6NkI6NTY6NzI6MDM6Q0I6MDg6QTc6NDgKICAgICAgICAgICAgIFg1MDl2MyBBdXRob3JpdHkgS2V5IElkZW50aWZpZXI6IAotICAgICAgICAgICAgICAgIGtleWlkOkJDOkREOjYyOkQ5Ojc2OkRBOjFCOkQyOjU0OjZCOkNGOkUwOjY2OjlCOjFFOjFFOjdCOjU2OjBDOjBCCisgICAgICAgICAgICAgICAga2V5aWQ6OUE6Q0Y6Q0Y6NkU6RUI6NzE6M0Q6REI6M0M6RjE6QUU6ODg6NkI6NTY6NzI6MDM6Q0I6MDg6QTc6NDgKIAogICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKICAgICAgICAgICAgICAgICBDQTpUUlVFCiAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgICA3ZDowYTpmNTpjYjo4ZDpkMzo1ZDpiZDo5OTo4ZTpmODoyYjowZjpiYTplYjpjMjpkOTphNjoKLSAgICAgICAgIDI3OjRmOjJlOjdiOjJmOjBlOjY0OmQ4OjFjOjM1OjUwOjRlOmVlOmZjOjkwOmI5OjhkOjZkOgotICAgICAgICAgYTg6YzU6YzY6MDY6YjA6YWY6ZjM6MmQ6YmY6M2I6Yjg6NDI6MDc6ZGQ6MTg6N2Q6NmQ6OTU6Ci0gICAgICAgICA1NDo1Nzo4NToxODo2MDo0NzoyZjplYjo3ODoxYjpmOTplODoxNzpmZDo1YTowZDo4NzoxNzoKLSAgICAgICAgIDI4OmFjOjRjOjZhOmU2OmJjOjI5OmY0OmY0OjU1OjcwOjI5OjQyOmRlOjg1OmVhOmFiOjZjOgotICAgICAgICAgMjM6MDY6NjQ6MzA6NzU6MDI6OGU6NTM6YmM6NWU6MDE6MzM6Mzc6Y2M6MWU6Y2Q6Yjg6YTQ6Ci0gICAgICAgICBmZDpjYTplNDo1Zjo2NTozYjo4MzoxYzo4NjpmMTo1NTowMjphMDozYTo4ZjpkYjo5MTpiNzoKLSAgICAgICAgIDQwOjE0OmI0OmU3OjhkOmQyOmVlOjczOmJhOmUzOmU1OjM0OjJkOmJjOjk0OjZmOjRlOjI0OgotICAgICAgICAgMDY6Zjc6NWY6OGI6MGU6YTc6OGU6NmI6ZGU6NWU6NzU6ZjQ6MzI6OWE6NTA6YjE6NDQ6MzM6Ci0gICAgICAgICA5YTpkMDowNTplMjo3ODo4MjpmZjpkYjpkYTo4YTo2MzplYjphOTpkZDpkMTpiZjphMDo2MToKLSAgICAgICAgIGFkOmUzOjllOjhhOjI0OjVkOjYyOjBlOmU3OjRjOjkxOjdmOmVmOmRmOjM0OjM2OjNiOjJmOgotICAgICAgICAgNWQ6ZjU6ODQ6YjI6MmY6YzQ6NmQ6OTM6OTY6MWE6NmY6MzA6Mjg6ZjE6ZGE6MTI6OWE6NjQ6Ci0gICAgICAgICBiNDo0MDozMzoxZDpiZDpkZToyYjo1MzphODplYTpiZTpkNjpiYzo0ZTo5NjpmNTo0NDpmYjoKLSAgICAgICAgIDMyOjE4OmFlOmQ1OjFmOmY2OjY5OmFmOmI2OjRlOjdiOjFkOjU4OmVjOjNiOmE5OjUzOmEzOgotICAgICAgICAgNWU6NTg6Yzg6OWUKKyAgICAgICAgIDEwOjI1OmM4OmRjOjBjOjU1OjVjOmNiOjgzOjZlOjc5OmVmOjc3OmVjOjBkOjhlOjBjOjA2OgorICAgICAgICAgYzE6NGI6MGM6ZDY6Zjc6NzU6NTI6MjE6Yjg6MTc6NGE6Mzg6ODg6OWQ6YjM6Nzg6YzQ6NDI6CisgICAgICAgICBmYjpiODo3YzoxNDozODoxMDpmYjphYzpkYToxMTowMDo1Yjo0Mjo4Nzo1ZTo0NTo5Zjo2ZDoKKyAgICAgICAgIDRlOjQyOmE0OjlhOjE4OjA2OjM5OjBmOjQ1OmE2Ojk2Ojg5OjMyOmQ2OjU5OmIzOmQzOjhlOgorICAgICAgICAgZTM6OTU6YjY6YzQ6YTI6NGI6NzQ6MmY6Njc6YzE6ZmI6YmI6Zjk6NzI6NmY6Mzc6NGE6ZTc6CisgICAgICAgICBmNDo0ODozMzo3MTpkZjpiODpmNTplNjo0MTozZjpkNTpkNToyZjoyNjowOTpmODowZTo5MjoKKyAgICAgICAgIGZmOjcwOmVhOmY2OmFiOjU4OmZiOjkwOjA0OmQ2OjQzOjJlOjhmOmIxOmZiOjA2OmFiOjY5OgorICAgICAgICAgZDA6ZGM6YTg6Zjg6NWI6MDc6ZjI6ZDQ6NjY6MWY6NjM6Zjg6NWQ6YzE6OWU6NDE6NDQ6YmI6CisgICAgICAgICBjOTplODo3ZDplMDo0NjplNDphNzpjODozMjo1ZjozMTo2MjplNToxYzo1Yzo4OTpkZDpiNzoKKyAgICAgICAgIGEyOjRmOjllOjBkOjEzOmI4OjVmOmIxOjg0OjUzOjRjOjFmOmNlOjE5OmUxOjAxOjAwOjVlOgorICAgICAgICAgYmY6NDE6NTU6OTQ6YTk6YTU6MTM6ZGI6ZjI6NTk6ZjM6ZDY6NGU6Yjk6OWQ6OWQ6Yjk6MGE6CisgICAgICAgICBkOTpiMjoxODo2ZDo3YzpiMTpmNzo5NjphYTpiZDpmNjpmOTo5NTowZjo0YTo2ZTozYzo3YzoKKyAgICAgICAgIDQ2OjViOmRmOmQ0Ojc4OmVjOjlhOmRjOmUyOmUzOjAxOmU2Ojg4Ojc3OjM5OjkzOjljOmJhOgorICAgICAgICAgMmE6NjM6Zjk6MjU6NGI6NGY6YWM6MDg6Nzk6Mzk6YzY6N2I6ZGY6MDc6MzU6YmE6YzA6YzI6CisgICAgICAgICA1MDpiZjo1YTo4MQogLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlEYlRDQ0FsV2dBd0lCQWdJSkFMQ1NaTEh5MmlIUU1BMEdDU3FHU0liM0RRRUJCUVVBTUUweEN6QUpCZ05WCitNSUlEYlRDQ0FsV2dBd0lCQWdJSkFJTHR2MEhJZ0pHYk1BMEdDU3FHU0liM0RRRUJCUVVBTUUweEN6QUpCZ05WCiBCQVlUQWxoWk1TWXdKQVlEVlFRS0RCMVFlWFJvYjI0Z1UyOW1kSGRoY21VZ1JtOTFibVJoZEdsdmJpQkRRVEVXCi1NQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3MHhNekF4TURReE9UUTNNRGRhRncweU16QXhNREl4Ci1PVFEzTURkYU1FMHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnCitNQlFHQTFVRUF3d05iM1Z5TFdOaExYTmxjblpsY2pBZUZ3MHhPREF4TVRreE9UQTVNRFphRncweU9EQXhNVGN4CitPVEE1TURaYU1FMHhDekFKQmdOVkJBWVRBbGhaTVNZd0pBWURWUVFLREIxUWVYUm9iMjRnVTI5bWRIZGhjbVVnCiBSbTkxYm1SaGRHbHZiaUJEUVRFV01CUUdBMVVFQXd3TmIzVnlMV05oTFhObGNuWmxjakNDQVNJd0RRWUpLb1pJCi1odmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQU9mZTZlTU1ud0Myb2Ywclc1YlNiOHpndm9hNUlGN3NBM3BWCi1xK3FrNmZsSmhkSm0xZTNIZXVwV2ppMlA1MExpWWlpcG45WWJqdXUxdEp5ZkZLdmY1cFNMZGgwK2JTUmg3UXkvCi1BSXBoRE45Y3lEWnpGZ0ROUjdwdHBLUjBpSU1qQ2huOENhYzhTa3ZUNXgwdDVPcE1WQ0h6SnR1Sk54alVBcnRBCi1NbCtrL3kwYzk5Uzc3STdQWElLczVud0liRWlGWVFkL0plQmM0THcwWCtDNUJFZDF5RWNMamJ6V3lHaGZNNE5pCi0waUJFTmJHdGdScUt6Yncxc0Z5TFI5WVk2WndZbDh3QlBDbk02QjdrNU1HNDN1ZkNFUmlIV3BNMDJLWWw5eFJ4Ci02K1Fob3RJUExpN1VZZ0ExMDlidlhHQkxUS2tVNHQwVldFWTNNeWEzNXk1ZDdVTGt4VTBDQXdFQUFhTlFNRTR3Ci1IUVlEVlIwT0JCWUVGTHpkWXRsMjJodlNWR3ZQNEdhYkhoNTdWZ3dMTUI4R0ExVWRJd1FZTUJhQUZMemRZdGwyCi0yaHZTVkd2UDRHYWJIaDU3Vmd3TE1Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnZ0VCCi1BSDBLOWN1TjAxMjltWTc0S3crNjY4TFpwaWRQTG5zdkRtVFlIRFZRVHU3OGtMbU5iYWpGeGdhd3IvTXR2enU0Ci1RZ2ZkR0gxdGxWUlhoUmhnUnkvcmVCdjU2QmY5V2cySEZ5aXNUR3JtdkNuMDlGVndLVUxlaGVxcmJDTUdaREIxCi1BbzVUdkY0Qk16Zk1IczI0cFAzSzVGOWxPNE1jaHZGVkFxQTZqOXVSdDBBVXRPZU4wdTV6dXVQbE5DMjhsRzlPCi1KQWIzWDRzT3A0NXIzbDUxOURLYVVMRkVNNXJRQmVKNGd2L2Iyb3BqNjZuZDBiK2dZYTNqbm9va1hXSU81MHlSCi1mKy9mTkRZN0wxMzFoTEl2eEcyVGxocHZNQ2p4MmhLYVpMUkFNeDI5M2l0VHFPcSsxcnhPbHZWRSt6SVlydFVmCi05bW12dGs1N0hWanNPNmxUbzE1WXlKND0KK2h2Y05BUUVCQlFBRGdnRVBBRENDQVFvQ2dnRUJBTU1ZYVd2SlJ5bVlqckZXd2k3NkRsNjhJNEN6QjJJazBrSmIKKzhVcS9xY2doZGNqajVpd2Zoenh1ZkJ2dE9US1Z0MEN5WUVqRG1oWUkvbTFuaURRN2QzZHdISEJhMFI5ZkJDRlUKK3VRempRWVVkV080djdmTU83OWdqb2Zweiswd280T1htVFFzQ1VrbUd4NzUrdmVaV2RvdHdqZ3FQQmpNZ0hYdGIKK3F0REZHNnViekZRSlBML2tRR2J4KzliM0ZwM0VHZFREOHY4SHZHOWFuaVViQWtxbDdFS1dPbkRTYkprcnpyN28KKzBnSHYxYnF3ejVRK2d0QUIxa3R4Z0FNS0VrV0dlWUhZUzlMb3RiY3NiSnBNaWhBUTVPVDEzODZFa2NyUlJ1Q0UKK2N4ZG0yMmxEZUlDRHZoUk44VDRhMW16MTNrWHpPYStSMVQxVVJMOUJ6SE5vR3Z3azI1RUNBd0VBQWFOUU1FNHcKK0hRWURWUjBPQkJZRUZKclB6MjdyY1QzYlBQR3VpR3RXY2dQTENLZElNQjhHQTFVZEl3UVlNQmFBRkpyUHoyN3IKK2NUM2JQUEd1aUd0V2NnUExDS2RJTUF3R0ExVWRFd1FGTUFNQkFmOHdEUVlKS29aSWh2Y05BUUVGQlFBRGdnRUIKK0FCQWx5TndNVlZ6TGcyNTU3M2ZzRFk0TUJzRkxETmIzZFZJaHVCZEtPSWlkczNqRVF2dTRmQlE0RVB1czJoRUEKK1cwS0hYa1dmYlU1Q3BKb1lCamtQUmFhV2lUTFdXYlBUanVPVnRzU2lTM1F2WjhIN3UvbHliemRLNS9SSU0zSGYKK3VQWG1RVC9WMVM4bUNmZ09rdjl3NnZhcldQdVFCTlpETG8reCt3YXJhZERjcVBoYkIvTFVaaDlqK0YzQm5rRkUKK3U4bm9mZUJHNUtmSU1sOHhZdVVjWEluZHQ2SlBuZzBUdUYreGhGTk1IODRaNFFFQVhyOUJWWlNwcFJQYjhsbnoKKzFrNjVuWjI1Q3RteUdHMThzZmVXcXIzMitaVVBTbTQ4ZkVaYjM5UjQ3SnJjNHVNQjVvaDNPWk9jdWlwaitTVkwKK1Q2d0llVG5HZTk4SE5ickF3bEMvV29FPQogLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvcHl0aG9uaW5mby5weSBiL0xpYi90ZXN0L3B5dGhvbmluZm8ucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU4ODM1MwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3B5dGhvbmluZm8ucHkKQEAgLTAsMCArMSw1OTggQEAKKyIiIgorQ29sbGVjdCB2YXJpb3VzIGluZm9ybWF0aW9uIGFib3V0IFB5dGhvbiB0byBoZWxwIGRlYnVnZ2luZyB0ZXN0IGZhaWx1cmVzLgorIiIiCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCitpbXBvcnQgZXJybm8KK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHRyYWNlYmFjaworCisKK2RlZiBub3JtYWxpemVfdGV4dCh0ZXh0KToKKyAgICBpZiB0ZXh0IGlzIE5vbmU6CisgICAgICAgIHJldHVybiBOb25lCisgICAgdGV4dCA9IHN0cih0ZXh0KQorICAgIHRleHQgPSByZS5zdWIocidccysnLCAnICcsIHRleHQpCisgICAgcmV0dXJuIHRleHQuc3RyaXAoKQorCisKK2NsYXNzIFB5dGhvbkluZm86CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLmluZm8gPSB7fQorCisgICAgZGVmIGFkZChzZWxmLCBrZXksIHZhbHVlKToKKyAgICAgICAgaWYga2V5IGluIHNlbGYuaW5mbzoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR1cGxpY2F0ZSBrZXk6ICVyIiAlIGtleSkKKworICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIGludCk6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKKyAgICAgICAgICAgICAgICAjIGNvbnZlcnQgb3RoZXIgb2JqZWN0cyBsaWtlIHN5cy5mbGFncyB0byBzdHJpbmcKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0cih2YWx1ZSkKKworICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zdHJpcCgpCisgICAgICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5pbmZvW2tleV0gPSB2YWx1ZQorCisgICAgZGVmIGdldF9pbmZvcyhzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIEdldCBpbmZvcm1hdGlvbiBhcyBhIGtleTp2YWx1ZSBkaWN0aW9uYXJ5IHdoZXJlIHZhbHVlcyBhcmUgc3RyaW5ncy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiB7a2V5OiBzdHIodmFsdWUpIGZvciBrZXksIHZhbHVlIGluIHNlbGYuaW5mby5pdGVtcygpfQorCisKK2RlZiBjb3B5X2F0dHJpYnV0ZXMoaW5mb19hZGQsIG9iaiwgbmFtZV9mbXQsIGF0dHJpYnV0ZXMsIGZvcm1hdHRlcj1Ob25lKToKKyAgICBmb3IgYXR0ciBpbiBhdHRyaWJ1dGVzOgorICAgICAgICB2YWx1ZSA9IGdldGF0dHIob2JqLCBhdHRyLCBOb25lKQorICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgbmFtZSA9IG5hbWVfZm10ICUgYXR0cgorICAgICAgICBpZiBmb3JtYXR0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB2YWx1ZSA9IGZvcm1hdHRlcihhdHRyLCB2YWx1ZSkKKyAgICAgICAgaW5mb19hZGQobmFtZSwgdmFsdWUpCisKKworZGVmIGNvcHlfYXR0cihpbmZvX2FkZCwgbmFtZSwgbW9kLCBhdHRyX25hbWUpOgorICAgIHRyeToKKyAgICAgICAgdmFsdWUgPSBnZXRhdHRyKG1vZCwgYXR0cl9uYW1lKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcmV0dXJuCisgICAgaW5mb19hZGQobmFtZSwgdmFsdWUpCisKKworZGVmIGNhbGxfZnVuYyhpbmZvX2FkZCwgbmFtZSwgbW9kLCBmdW5jX25hbWUsIGZvcm1hdHRlcj1Ob25lKToKKyAgICB0cnk6CisgICAgICAgIGZ1bmMgPSBnZXRhdHRyKG1vZCwgZnVuY19uYW1lKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcmV0dXJuCisgICAgdmFsdWUgPSBmdW5jKCkKKyAgICBpZiBmb3JtYXR0ZXIgaXMgbm90IE5vbmU6CisgICAgICAgIHZhbHVlID0gZm9ybWF0dGVyKHZhbHVlKQorICAgIGluZm9fYWRkKG5hbWUsIHZhbHVlKQorCisKK2RlZiBjb2xsZWN0X3N5cyhpbmZvX2FkZCk6CisgICAgYXR0cmlidXRlcyA9ICgKKyAgICAgICAgJ19mcmFtZXdvcmsnLAorICAgICAgICAnYWJpZmxhZ3MnLAorICAgICAgICAnYXBpX3ZlcnNpb24nLAorICAgICAgICAnYnVpbHRpbl9tb2R1bGVfbmFtZXMnLAorICAgICAgICAnYnl0ZW9yZGVyJywKKyAgICAgICAgJ2RvbnRfd3JpdGVfYnl0ZWNvZGUnLAorICAgICAgICAnZXhlY3V0YWJsZScsCisgICAgICAgICdmbGFncycsCisgICAgICAgICdmbG9hdF9pbmZvJywKKyAgICAgICAgJ2Zsb2F0X3JlcHJfc3R5bGUnLAorICAgICAgICAnaGFzaF9pbmZvJywKKyAgICAgICAgJ2hleHZlcnNpb24nLAorICAgICAgICAnaW1wbGVtZW50YXRpb24nLAorICAgICAgICAnaW50X2luZm8nLAorICAgICAgICAnbWF4c2l6ZScsCisgICAgICAgICdtYXh1bmljb2RlJywKKyAgICAgICAgJ3BhdGgnLAorICAgICAgICAncGxhdGZvcm0nLAorICAgICAgICAncHJlZml4JywKKyAgICAgICAgJ3RocmVhZF9pbmZvJywKKyAgICAgICAgJ3ZlcnNpb24nLAorICAgICAgICAndmVyc2lvbl9pbmZvJywKKyAgICAgICAgJ3dpbnZlcicsCisgICAgKQorICAgIGNvcHlfYXR0cmlidXRlcyhpbmZvX2FkZCwgc3lzLCAnc3lzLiVzJywgYXR0cmlidXRlcykKKworICAgIGNhbGxfZnVuYyhpbmZvX2FkZCwgJ3N5cy5hbmRyb2lkYXBpbGV2ZWwnLCBzeXMsICdnZXRhbmRyb2lkYXBpbGV2ZWwnKQorICAgIGNhbGxfZnVuYyhpbmZvX2FkZCwgJ3N5cy53aW5kb3dzdmVyc2lvbicsIHN5cywgJ2dldHdpbmRvd3N2ZXJzaW9uJykKKworICAgIGVuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCisgICAgaWYgaGFzYXR0cihzeXMsICdnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzJyk6CisgICAgICAgIGVuY29kaW5nID0gJyVzLyVzJyAlIChlbmNvZGluZywgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoKSkKKyAgICBpbmZvX2FkZCgnc3lzLmZpbGVzeXN0ZW1fZW5jb2RpbmcnLCBlbmNvZGluZykKKworICAgIGZvciBuYW1lIGluICgnc3RkaW4nLCAnc3Rkb3V0JywgJ3N0ZGVycicpOgorICAgICAgICBzdHJlYW0gPSBnZXRhdHRyKHN5cywgbmFtZSkKKyAgICAgICAgaWYgc3RyZWFtIGlzIE5vbmU6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBlbmNvZGluZyA9IGdldGF0dHIoc3RyZWFtLCAnZW5jb2RpbmcnLCBOb25lKQorICAgICAgICBpZiBub3QgZW5jb2Rpbmc6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBlcnJvcnMgPSBnZXRhdHRyKHN0cmVhbSwgJ2Vycm9ycycsIE5vbmUpCisgICAgICAgIGlmIGVycm9yczoKKyAgICAgICAgICAgIGVuY29kaW5nID0gJyVzLyVzJyAlIChlbmNvZGluZywgZXJyb3JzKQorICAgICAgICBpbmZvX2FkZCgnc3lzLiVzLmVuY29kaW5nJyAlIG5hbWUsIGVuY29kaW5nKQorCisgICAgIyBXZXJlIHdlIGNvbXBpbGVkIC0td2l0aC1weWRlYnVnIG9yIHdpdGggI2RlZmluZSBQeV9ERUJVRz8KKyAgICBQeV9ERUJVRyA9IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpCisgICAgaWYgUHlfREVCVUc6CisgICAgICAgIHRleHQgPSAnWWVzIChzeXMuZ2V0dG90YWxyZWZjb3VudCgpIHByZXNlbnQpJworICAgIGVsc2U6CisgICAgICAgIHRleHQgPSAnTm8gKHN5cy5nZXR0b3RhbHJlZmNvdW50KCkgbWlzc2luZyknCisgICAgaW5mb19hZGQoJ1B5X0RFQlVHJywgdGV4dCkKKworCitkZWYgY29sbGVjdF9wbGF0Zm9ybShpbmZvX2FkZCk6CisgICAgaW1wb3J0IHBsYXRmb3JtCisKKyAgICBhcmNoID0gcGxhdGZvcm0uYXJjaGl0ZWN0dXJlKCkKKyAgICBhcmNoID0gJyAnLmpvaW4oZmlsdGVyKGJvb2wsIGFyY2gpKQorICAgIGluZm9fYWRkKCdwbGF0Zm9ybS5hcmNoaXRlY3R1cmUnLCBhcmNoKQorCisgICAgaW5mb19hZGQoJ3BsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbicsCisgICAgICAgICAgICAgcGxhdGZvcm0ucHl0aG9uX2ltcGxlbWVudGF0aW9uKCkpCisgICAgaW5mb19hZGQoJ3BsYXRmb3JtLnBsYXRmb3JtJywKKyAgICAgICAgICAgICBwbGF0Zm9ybS5wbGF0Zm9ybShhbGlhc2VkPVRydWUsIHRlcnNlPVRydWUpKQorCisKK2RlZiBjb2xsZWN0X2xvY2FsZShpbmZvX2FkZCk6CisgICAgaW1wb3J0IGxvY2FsZQorCisgICAgaW5mb19hZGQoJ2xvY2FsZS5lbmNvZGluZycsIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyhGYWxzZSkpCisKKworZGVmIGNvbGxlY3RfYnVpbHRpbnMoaW5mb19hZGQpOgorICAgIGluZm9fYWRkKCdidWlsdGlucy5mbG9hdC5mbG9hdF9mb3JtYXQnLCBmbG9hdC5fX2dldGZvcm1hdF9fKCJmbG9hdCIpKQorICAgIGluZm9fYWRkKCdidWlsdGlucy5mbG9hdC5kb3VibGVfZm9ybWF0JywgZmxvYXQuX19nZXRmb3JtYXRfXygiZG91YmxlIikpCisKKworZGVmIGNvbGxlY3Rfb3MoaW5mb19hZGQpOgorICAgIGltcG9ydCBvcworCisgICAgZGVmIGZvcm1hdF9hdHRyKGF0dHIsIHZhbHVlKToKKyAgICAgICAgaWYgYXR0ciBpbiAoJ3N1cHBvcnRzX2ZvbGxvd19zeW1saW5rcycsICdzdXBwb3J0c19mZCcsCisgICAgICAgICAgICAgICAgICAgICdzdXBwb3J0c19lZmZlY3RpdmVfaWRzJyk6CisgICAgICAgICAgICByZXR1cm4gc3RyKHNvcnRlZChmdW5jLl9fbmFtZV9fIGZvciBmdW5jIGluIHZhbHVlKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZQorCisgICAgYXR0cmlidXRlcyA9ICgKKyAgICAgICAgJ25hbWUnLAorICAgICAgICAnc3VwcG9ydHNfYnl0ZXNfZW52aXJvbicsCisgICAgICAgICdzdXBwb3J0c19lZmZlY3RpdmVfaWRzJywKKyAgICAgICAgJ3N1cHBvcnRzX2ZkJywKKyAgICAgICAgJ3N1cHBvcnRzX2ZvbGxvd19zeW1saW5rcycsCisgICAgKQorICAgIGNvcHlfYXR0cmlidXRlcyhpbmZvX2FkZCwgb3MsICdvcy4lcycsIGF0dHJpYnV0ZXMsIGZvcm1hdHRlcj1mb3JtYXRfYXR0cikKKworICAgIGNhbGxfZnVuYyhpbmZvX2FkZCwgJ29zLmN3ZCcsIG9zLCAnZ2V0Y3dkJykKKworICAgIGNhbGxfZnVuYyhpbmZvX2FkZCwgJ29zLnVpZCcsIG9zLCAnZ2V0dWlkJykKKyAgICBjYWxsX2Z1bmMoaW5mb19hZGQsICdvcy5naWQnLCBvcywgJ2dldGdpZCcpCisgICAgY2FsbF9mdW5jKGluZm9fYWRkLCAnb3MudW5hbWUnLCBvcywgJ3VuYW1lJykKKworICAgIGRlZiBmb3JtYXRfZ3JvdXBzKGdyb3Vwcyk6CisgICAgICAgIHJldHVybiAnLCAnLmpvaW4obWFwKHN0ciwgZ3JvdXBzKSkKKworICAgIGNhbGxfZnVuYyhpbmZvX2FkZCwgJ29zLmdyb3VwcycsIG9zLCAnZ2V0Z3JvdXBzJywgZm9ybWF0dGVyPWZvcm1hdF9ncm91cHMpCisKKyAgICBpZiBoYXNhdHRyKG9zLCAnZ2V0bG9naW4nKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbG9naW4gPSBvcy5nZXRsb2dpbigpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgIyBnZXRsb2dpbigpIGZhaWxzIHdpdGggIk9TRXJyb3I6IFtFcnJubyAyNV0gSW5hcHByb3ByaWF0ZSBpb2N0bAorICAgICAgICAgICAgIyBmb3IgZGV2aWNlIiBvbiBUcmF2aXMgQ0kKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGluZm9fYWRkKCJvcy5sb2dpbiIsIGxvZ2luKQorCisgICAgY2FsbF9mdW5jKGluZm9fYWRkLCAnb3MuY3B1X2NvdW50Jywgb3MsICdjcHVfY291bnQnKQorICAgIGNhbGxfZnVuYyhpbmZvX2FkZCwgJ29zLmxvYWRhdmcnLCBvcywgJ2dldGxvYWRhdmcnKQorCisgICAgIyBHZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzOiBmaWx0ZXIgdG8gbGlzdAorICAgICMgdG8gbm90IGxlYWsgc2Vuc2l0aXZlIGluZm9ybWF0aW9uCisgICAgRU5WX1ZBUlMgPSAoCisgICAgICAgICJDQyIsCisgICAgICAgICJDT01TUEVDIiwKKyAgICAgICAgIkRJU1BMQVkiLAorICAgICAgICAiRElTVFVUSUxTX1VTRV9TREsiLAorICAgICAgICAiRFlMRF9MSUJSQVJZX1BBVEgiLAorICAgICAgICAiSE9NRSIsCisgICAgICAgICJIT01FRFJJVkUiLAorICAgICAgICAiSE9NRVBBVEgiLAorICAgICAgICAiTEFORyIsCisgICAgICAgICJMRF9MSUJSQVJZX1BBVEgiLAorICAgICAgICAiTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIiwKKyAgICAgICAgIk1BS0VGTEFHUyIsCisgICAgICAgICJNU1NESyIsCisgICAgICAgICJQQVRIIiwKKyAgICAgICAgIlNES19UT09MU19CSU4iLAorICAgICAgICAiU0hFTEwiLAorICAgICAgICAiVEVNUCIsCisgICAgICAgICJURVJNIiwKKyAgICAgICAgIlRNUCIsCisgICAgICAgICJUTVBESVIiLAorICAgICAgICAiVVNFUlBST0ZJTEUiLAorICAgICAgICAiV0FZTEFORF9ESVNQTEFZIiwKKyAgICApCisgICAgZm9yIG5hbWUsIHZhbHVlIGluIG9zLmVudmlyb24uaXRlbXMoKToKKyAgICAgICAgdW5hbWUgPSBuYW1lLnVwcGVyKCkKKyAgICAgICAgaWYgKHVuYW1lIGluIEVOVl9WQVJTCisgICAgICAgICAgICMgQ29weSBQWVRIT04qIGFuZCBMQ18qIHZhcmlhYmxlcworICAgICAgICAgICBvciB1bmFtZS5zdGFydHN3aXRoKCgiUFlUSE9OIiwgIkxDXyIpKQorICAgICAgICAgICAjIFZpc3VhbCBTdHVkaW86IFZTMTQwQ09NTlRPT0xTCisgICAgICAgICAgIG9yICh1bmFtZS5zdGFydHN3aXRoKCJWUyIpIGFuZCB1bmFtZS5lbmRzd2l0aCgiQ09NTlRPT0xTIikpKToKKyAgICAgICAgICAgIGluZm9fYWRkKCdvcy5lbnZpcm9uWyVzXScgJSBuYW1lLCB2YWx1ZSkKKworICAgIGlmIGhhc2F0dHIob3MsICd1bWFzaycpOgorICAgICAgICBtYXNrID0gb3MudW1hc2soMCkKKyAgICAgICAgb3MudW1hc2sobWFzaykKKyAgICAgICAgaW5mb19hZGQoIm9zLnVtYXNrIiwgJyUwM28nICUgbWFzaykKKworICAgIGlmIGhhc2F0dHIob3MsICdnZXRyYW5kb20nKToKKyAgICAgICAgIyBQRVAgNTI0OiBDaGVjayBpZiBzeXN0ZW0gdXJhbmRvbSBpcyBpbml0aWFsaXplZAorICAgICAgICB0cnk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgb3MuZ2V0cmFuZG9tKDEsIG9zLkdSTkRfTk9OQkxPQ0spCisgICAgICAgICAgICAgICAgc3RhdGUgPSAncmVhZHkgKGluaXRpYWxpemVkKScKKyAgICAgICAgICAgIGV4Y2VwdCBCbG9ja2luZ0lPRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgICAgIHN0YXRlID0gJ25vdCBzZWVkZWQgeWV0ICglcyknICUgZXhjCisgICAgICAgICAgICBpbmZvX2FkZCgnb3MuZ2V0cmFuZG9tJywgc3RhdGUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICMgUHl0aG9uIHdhcyBjb21waWxlZCBvbiBhIG1vcmUgcmVjZW50IExpbnV4IHZlcnNpb24KKyAgICAgICAgICAgICMgdGhhbiB0aGUgY3VycmVudCBMaW51eCBrZXJuZWw6IGlnbm9yZSBPU0Vycm9yKEVOT1NZUykKKyAgICAgICAgICAgIGlmIGV4Yy5lcnJubyAhPSBlcnJuby5FTk9TWVM6CisgICAgICAgICAgICAgICAgcmFpc2UKKworCitkZWYgY29sbGVjdF9yZWFkbGluZShpbmZvX2FkZCk6CisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgcmVhZGxpbmUKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHJldHVybgorCisgICAgZGVmIGZvcm1hdF9hdHRyKGF0dHIsIHZhbHVlKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgaW50KToKKyAgICAgICAgICAgIHJldHVybiAiJSN4IiAlIHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIGF0dHJpYnV0ZXMgPSAoCisgICAgICAgICJfUkVBRExJTkVfVkVSU0lPTiIsCisgICAgICAgICJfUkVBRExJTkVfUlVOVElNRV9WRVJTSU9OIiwKKyAgICAgICAgIl9SRUFETElORV9MSUJSQVJZX1ZFUlNJT04iLAorICAgICkKKyAgICBjb3B5X2F0dHJpYnV0ZXMoaW5mb19hZGQsIHJlYWRsaW5lLCAncmVhZGxpbmUuJXMnLCBhdHRyaWJ1dGVzLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZXI9Zm9ybWF0X2F0dHIpCisKKyAgICBpZiBub3QgaGFzYXR0cihyZWFkbGluZSwgIl9SRUFETElORV9MSUJSQVJZX1ZFUlNJT04iKToKKyAgICAgICAgIyBfUkVBRExJTkVfTElCUkFSWV9WRVJTSU9OIGhhcyBiZWVuIGFkZGVkIHRvIENQeXRob24gMy43CisgICAgICAgIGRvYyA9IGdldGF0dHIocmVhZGxpbmUsICdfX2RvY19fJywgJycpCisgICAgICAgIGlmICdsaWJlZGl0IHJlYWRsaW5lJyBpbiBkb2M6CisgICAgICAgICAgICBpbmZvX2FkZCgncmVhZGxpbmUubGlicmFyeScsICdsaWJlZGl0IHJlYWRsaW5lJykKKyAgICAgICAgZWxpZiAnR05VIHJlYWRsaW5lJyBpbiBkb2M6CisgICAgICAgICAgICBpbmZvX2FkZCgncmVhZGxpbmUubGlicmFyeScsICdHTlUgcmVhZGxpbmUnKQorCisKK2RlZiBjb2xsZWN0X2dkYihpbmZvX2FkZCk6CisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKworICAgIHRyeToKKyAgICAgICAgcHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oWyJnZGIiLCAiLW54IiwgIi0tdmVyc2lvbiJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKKyAgICAgICAgdmVyc2lvbiA9IHByb2MuY29tbXVuaWNhdGUoKVswXQorICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICByZXR1cm4KKworICAgICMgT25seSBrZWVwIHRoZSBmaXJzdCBsaW5lCisgICAgdmVyc2lvbiA9IHZlcnNpb24uc3BsaXRsaW5lcygpWzBdCisgICAgaW5mb19hZGQoJ2dkYl92ZXJzaW9uJywgdmVyc2lvbikKKworCitkZWYgY29sbGVjdF90a2ludGVyKGluZm9fYWRkKToKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBfdGtpbnRlcgorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGF0dHJpYnV0ZXMgPSAoJ1RLX1ZFUlNJT04nLCAnVENMX1ZFUlNJT04nKQorICAgICAgICBjb3B5X2F0dHJpYnV0ZXMoaW5mb19hZGQsIF90a2ludGVyLCAndGtpbnRlci4lcycsIGF0dHJpYnV0ZXMpCisKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCB0a2ludGVyCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBwYXNzCisgICAgZWxzZToKKyAgICAgICAgdGNsID0gdGtpbnRlci5UY2woKQorICAgICAgICBwYXRjaGxldmVsID0gdGNsLmNhbGwoJ2luZm8nLCAncGF0Y2hsZXZlbCcpCisgICAgICAgIGluZm9fYWRkKCd0a2ludGVyLmluZm9fcGF0Y2hsZXZlbCcsIHBhdGNobGV2ZWwpCisKKworZGVmIGNvbGxlY3RfdGltZShpbmZvX2FkZCk6CisgICAgaW1wb3J0IHRpbWUKKworICAgIGluZm9fYWRkKCd0aW1lLnRpbWUnLCB0aW1lLnRpbWUoKSkKKworICAgIGF0dHJpYnV0ZXMgPSAoCisgICAgICAgICdhbHR6b25lJywKKyAgICAgICAgJ2RheWxpZ2h0JywKKyAgICAgICAgJ3RpbWV6b25lJywKKyAgICAgICAgJ3R6bmFtZScsCisgICAgKQorICAgIGNvcHlfYXR0cmlidXRlcyhpbmZvX2FkZCwgdGltZSwgJ3RpbWUuJXMnLCBhdHRyaWJ1dGVzKQorCisgICAgaWYgaGFzYXR0cih0aW1lLCAnZ2V0X2Nsb2NrX2luZm8nKToKKyAgICAgICAgZm9yIGNsb2NrIGluICgndGltZScsICdwZXJmX2NvdW50ZXInKToKKyAgICAgICAgICAgIHRpbmZvID0gdGltZS5nZXRfY2xvY2tfaW5mbyhjbG9jaykKKyAgICAgICAgICAgIGluZm9fYWRkKCd0aW1lLmdldF9jbG9ja19pbmZvKCVzKScgJSBjbG9jaywgdGluZm8pCisKKworZGVmIGNvbGxlY3RfZGF0ZXRpbWUoaW5mb19hZGQpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IGRhdGV0aW1lCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICByZXR1cm4KKworICAgIGluZm9fYWRkKCdkYXRldGltZS5kYXRldGltZS5ub3cnLCBkYXRldGltZS5kYXRldGltZS5ub3coKSkKKworCitkZWYgY29sbGVjdF9zeXNjb25maWcoaW5mb19hZGQpOgorICAgIGltcG9ydCBzeXNjb25maWcKKworICAgIGZvciBuYW1lIGluICgKKyAgICAgICAgJ0FCSUZMQUdTJywKKyAgICAgICAgJ0FORFJPSURfQVBJX0xFVkVMJywKKyAgICAgICAgJ0NDJywKKyAgICAgICAgJ0NDU0hBUkVEJywKKyAgICAgICAgJ0NGTEFHUycsCisgICAgICAgICdDRkxBR1NGT1JTSEFSRUQnLAorICAgICAgICAnQ09ORklHX0FSR1MnLAorICAgICAgICAnSE9TVF9HTlVfVFlQRScsCisgICAgICAgICdNQUNIREVQJywKKyAgICAgICAgJ01VTFRJQVJDSCcsCisgICAgICAgICdPUFQnLAorICAgICAgICAnUFlfQ0ZMQUdTJywKKyAgICAgICAgJ1BZX0NGTEFHU19OT0RJU1QnLAorICAgICAgICAnUFlfTERGTEFHUycsCisgICAgICAgICdQeV9ERUJVRycsCisgICAgICAgICdQeV9FTkFCTEVfU0hBUkVEJywKKyAgICAgICAgJ1NIRUxMJywKKyAgICAgICAgJ1NPQUJJJywKKyAgICAgICAgJ3ByZWZpeCcsCisgICAgKToKKyAgICAgICAgdmFsdWUgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIobmFtZSkKKyAgICAgICAgaWYgbmFtZSA9PSAnQU5EUk9JRF9BUElfTEVWRUwnIGFuZCBub3QgdmFsdWU6CisgICAgICAgICAgICAjIHNraXAgQU5EUk9JRF9BUElfTEVWRUw9MAorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgdmFsdWUgPSBub3JtYWxpemVfdGV4dCh2YWx1ZSkKKyAgICAgICAgaW5mb19hZGQoJ3N5c2NvbmZpZ1slc10nICUgbmFtZSwgdmFsdWUpCisKKworZGVmIGNvbGxlY3Rfc3NsKGluZm9fYWRkKToKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBzc2wKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHJldHVybgorCisgICAgZGVmIGZvcm1hdF9hdHRyKGF0dHIsIHZhbHVlKToKKyAgICAgICAgaWYgYXR0ci5zdGFydHN3aXRoKCdPUF8nKToKKyAgICAgICAgICAgIHJldHVybiAnJSM4eCcgJSB2YWx1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlCisKKyAgICBhdHRyaWJ1dGVzID0gKAorICAgICAgICAnT1BFTlNTTF9WRVJTSU9OJywKKyAgICAgICAgJ09QRU5TU0xfVkVSU0lPTl9JTkZPJywKKyAgICAgICAgJ0hBU19TTkknLAorICAgICAgICAnT1BfQUxMJywKKyAgICAgICAgJ09QX05PX1RMU3YxXzEnLAorICAgICkKKyAgICBjb3B5X2F0dHJpYnV0ZXMoaW5mb19hZGQsIHNzbCwgJ3NzbC4lcycsIGF0dHJpYnV0ZXMsIGZvcm1hdHRlcj1mb3JtYXRfYXR0cikKKworCitkZWYgY29sbGVjdF9zb2NrZXQoaW5mb19hZGQpOgorICAgIGltcG9ydCBzb2NrZXQKKworICAgIGhvc3RuYW1lID0gc29ja2V0LmdldGhvc3RuYW1lKCkKKyAgICBpbmZvX2FkZCgnc29ja2V0Lmhvc3RuYW1lJywgaG9zdG5hbWUpCisKKworZGVmIGNvbGxlY3Rfc3FsaXRlKGluZm9fYWRkKToKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBzcWxpdGUzCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICByZXR1cm4KKworICAgIGF0dHJpYnV0ZXMgPSAoJ3ZlcnNpb24nLCAnc3FsaXRlX3ZlcnNpb24nKQorICAgIGNvcHlfYXR0cmlidXRlcyhpbmZvX2FkZCwgc3FsaXRlMywgJ3NxbGl0ZTMuJXMnLCBhdHRyaWJ1dGVzKQorCisKK2RlZiBjb2xsZWN0X3psaWIoaW5mb19hZGQpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IHpsaWIKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHJldHVybgorCisgICAgYXR0cmlidXRlcyA9ICgnWkxJQl9WRVJTSU9OJywgJ1pMSUJfUlVOVElNRV9WRVJTSU9OJykKKyAgICBjb3B5X2F0dHJpYnV0ZXMoaW5mb19hZGQsIHpsaWIsICd6bGliLiVzJywgYXR0cmlidXRlcykKKworCitkZWYgY29sbGVjdF9leHBhdChpbmZvX2FkZCk6CisgICAgdHJ5OgorICAgICAgICBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdAorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcmV0dXJuCisKKyAgICBhdHRyaWJ1dGVzID0gKCdFWFBBVF9WRVJTSU9OJywpCisgICAgY29weV9hdHRyaWJ1dGVzKGluZm9fYWRkLCBleHBhdCwgJ2V4cGF0LiVzJywgYXR0cmlidXRlcykKKworCitkZWYgY29sbGVjdF9kZWNpbWFsKGluZm9fYWRkKToKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCBfZGVjaW1hbAorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcmV0dXJuCisKKyAgICBhdHRyaWJ1dGVzID0gKCdfX2xpYm1wZGVjX3ZlcnNpb25fXycsKQorICAgIGNvcHlfYXR0cmlidXRlcyhpbmZvX2FkZCwgX2RlY2ltYWwsICdfZGVjaW1hbC4lcycsIGF0dHJpYnV0ZXMpCisKKworZGVmIGNvbGxlY3RfdGVzdGNhcGkoaW5mb19hZGQpOgorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcmV0dXJuCisKKyAgICBjYWxsX2Z1bmMoaW5mb19hZGQsICdweW1lbS5hbGxvY2F0b3InLCBfdGVzdGNhcGksICdweW1lbV9nZXRhbGxvY2F0b3JzbmFtZScpCisgICAgY29weV9hdHRyKGluZm9fYWRkLCAncHltZW0ud2l0aF9weW1hbGxvYycsIF90ZXN0Y2FwaSwgJ1dJVEhfUFlNQUxMT0MnKQorCisKK2RlZiBjb2xsZWN0X3Jlc291cmNlKGluZm9fYWRkKToKKyAgICB0cnk6CisgICAgICAgIGltcG9ydCByZXNvdXJjZQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcmV0dXJuCisKKyAgICBsaW1pdHMgPSBbYXR0ciBmb3IgYXR0ciBpbiBkaXIocmVzb3VyY2UpIGlmIGF0dHIuc3RhcnRzd2l0aCgnUkxJTUlUXycpXQorICAgIGZvciBuYW1lIGluIGxpbWl0czoKKyAgICAgICAga2V5ID0gZ2V0YXR0cihyZXNvdXJjZSwgbmFtZSkKKyAgICAgICAgdmFsdWUgPSByZXNvdXJjZS5nZXRybGltaXQoa2V5KQorICAgICAgICBpbmZvX2FkZCgncmVzb3VyY2UuJXMnICUgbmFtZSwgdmFsdWUpCisKKworZGVmIGNvbGxlY3RfdGVzdF9zb2NrZXQoaW5mb19hZGQpOgorICAgIHRyeToKKyAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3NvY2tldAorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcmV0dXJuCisKKyAgICAjIGFsbCBjaGVjayBhdHRyaWJ1dGVzIGxpa2UgSEFWRV9TT0NLRVRfQ0FOCisgICAgYXR0cmlidXRlcyA9IFtuYW1lIGZvciBuYW1lIGluIGRpcih0ZXN0X3NvY2tldCkKKyAgICAgICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgnSEFWRV8nKV0KKyAgICBjb3B5X2F0dHJpYnV0ZXMoaW5mb19hZGQsIHRlc3Rfc29ja2V0LCAndGVzdF9zb2NrZXQuJXMnLCBhdHRyaWJ1dGVzKQorCisKK2RlZiBjb2xsZWN0X3Rlc3Rfc3VwcG9ydChpbmZvX2FkZCk6CisgICAgdHJ5OgorICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKyAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgIHJldHVybgorCisgICAgYXR0cmlidXRlcyA9ICgnSVBWNl9FTkFCTEVEJywpCisgICAgY29weV9hdHRyaWJ1dGVzKGluZm9fYWRkLCBzdXBwb3J0LCAndGVzdF9zdXBwb3J0LiVzJywgYXR0cmlidXRlcykKKworICAgIGNhbGxfZnVuYyhpbmZvX2FkZCwgJ3Rlc3Rfc3VwcG9ydC5faXNfZ3VpX2F2YWlsYWJsZScsIHN1cHBvcnQsICdfaXNfZ3VpX2F2YWlsYWJsZScpCisgICAgY2FsbF9mdW5jKGluZm9fYWRkLCAndGVzdF9zdXBwb3J0LnB5dGhvbl9pc19vcHRpbWl6ZWQnLCBzdXBwb3J0LCAncHl0aG9uX2lzX29wdGltaXplZCcpCisKKworZGVmIGNvbGxlY3RfY2MoaW5mb19hZGQpOgorICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgaW1wb3J0IHN5c2NvbmZpZworCisgICAgQ0MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ0NDJykKKyAgICBpZiBub3QgQ0M6CisgICAgICAgIHJldHVybgorCisgICAgdHJ5OgorICAgICAgICBpbXBvcnQgc2hsZXgKKyAgICAgICAgYXJncyA9IHNobGV4LnNwbGl0KENDKQorICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgYXJncyA9IENDLnNwbGl0KCkKKyAgICBhcmdzLmFwcGVuZCgnLS12ZXJzaW9uJykKKyAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihhcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgIHN0ZG91dCA9IHByb2MuY29tbXVuaWNhdGUoKVswXQorICAgIGlmIHByb2MucmV0dXJuY29kZToKKyAgICAgICAgIyBDQyAtLXZlcnNpb24gZmFpbGVkOiBpZ25vcmUgZXJyb3IKKyAgICAgICAgcmV0dXJuCisKKyAgICB0ZXh0ID0gc3Rkb3V0LnNwbGl0bGluZXMoKVswXQorICAgIHRleHQgPSBub3JtYWxpemVfdGV4dCh0ZXh0KQorICAgIGluZm9fYWRkKCdDQy52ZXJzaW9uJywgdGV4dCkKKworCitkZWYgY29sbGVjdF9pbmZvKGluZm8pOgorICAgIGVycm9yID0gRmFsc2UKKyAgICBpbmZvX2FkZCA9IGluZm8uYWRkCisKKyAgICBmb3IgY29sbGVjdF9mdW5jIGluICgKKyAgICAgICAgIyBjb2xsZWN0X29zKCkgc2hvdWxkIGJlIHRoZSBmaXJzdCwgdG8gY2hlY2sgdGhlIGdldHJhbmRvbSgpIHN0YXR1cworICAgICAgICBjb2xsZWN0X29zLAorCisgICAgICAgIGNvbGxlY3RfYnVpbHRpbnMsCisgICAgICAgIGNvbGxlY3RfZ2RiLAorICAgICAgICBjb2xsZWN0X2xvY2FsZSwKKyAgICAgICAgY29sbGVjdF9wbGF0Zm9ybSwKKyAgICAgICAgY29sbGVjdF9yZWFkbGluZSwKKyAgICAgICAgY29sbGVjdF9zb2NrZXQsCisgICAgICAgIGNvbGxlY3Rfc3FsaXRlLAorICAgICAgICBjb2xsZWN0X3NzbCwKKyAgICAgICAgY29sbGVjdF9zeXMsCisgICAgICAgIGNvbGxlY3Rfc3lzY29uZmlnLAorICAgICAgICBjb2xsZWN0X3RpbWUsCisgICAgICAgIGNvbGxlY3RfZGF0ZXRpbWUsCisgICAgICAgIGNvbGxlY3RfdGtpbnRlciwKKyAgICAgICAgY29sbGVjdF96bGliLAorICAgICAgICBjb2xsZWN0X2V4cGF0LAorICAgICAgICBjb2xsZWN0X2RlY2ltYWwsCisgICAgICAgIGNvbGxlY3RfdGVzdGNhcGksCisgICAgICAgIGNvbGxlY3RfcmVzb3VyY2UsCisgICAgICAgIGNvbGxlY3RfY2MsCisKKyAgICAgICAgIyBDb2xsZWN0aW5nIGZyb20gdGVzdHMgc2hvdWxkIGJlIGxhc3QgYXMgdGhleSBoYXZlIHNpZGUgZWZmZWN0cy4KKyAgICAgICAgY29sbGVjdF90ZXN0X3NvY2tldCwKKyAgICAgICAgY29sbGVjdF90ZXN0X3N1cHBvcnQsCisgICAgKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgY29sbGVjdF9mdW5jKGluZm9fYWRkKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKKyAgICAgICAgICAgIGVycm9yID0gVHJ1ZQorICAgICAgICAgICAgcHJpbnQoIkVSUk9SOiAlcygpIGZhaWxlZCIgJSAoY29sbGVjdF9mdW5jLl9fbmFtZV9fKSwKKyAgICAgICAgICAgICAgICAgIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgcHJpbnQoZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCisKKyAgICByZXR1cm4gZXJyb3IKKworCitkZWYgZHVtcF9pbmZvKGluZm8sIGZpbGU9Tm9uZSk6CisgICAgdGl0bGUgPSAiUHl0aG9uIGRlYnVnIGluZm9ybWF0aW9uIgorICAgIHByaW50KHRpdGxlKQorICAgIHByaW50KCI9IiAqIGxlbih0aXRsZSkpCisgICAgcHJpbnQoKQorCisgICAgaW5mb3MgPSBpbmZvLmdldF9pbmZvcygpCisgICAgaW5mb3MgPSBzb3J0ZWQoaW5mb3MuaXRlbXMoKSkKKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpbmZvczoKKyAgICAgICAgdmFsdWUgPSB2YWx1ZS5yZXBsYWNlKCJcbiIsICIgIikKKyAgICAgICAgcHJpbnQoIiVzOiAlcyIgJSAoa2V5LCB2YWx1ZSkpCisgICAgcHJpbnQoKQorCisKK2RlZiBtYWluKCk6CisgICAgaW5mbyA9IFB5dGhvbkluZm8oKQorICAgIGVycm9yID0gY29sbGVjdF9pbmZvKGluZm8pCisgICAgZHVtcF9pbmZvKGluZm8pCisKKyAgICBpZiBlcnJvcjoKKyAgICAgICAgcHJpbnQoIkNvbGxlY3Rpb24gZmFpbGVkOiBleGl0IHdpdGggZXJyb3IiLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHN5cy5leGl0KDEpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvcmVncnRlc3QucHkKaW5kZXggODAxN2RlOS4uNmI0OWRhZiAxMDA3NTUKLS0tIGEvTGliL3Rlc3QvcmVncnRlc3QucHkKKysrIGIvTGliL3Rlc3QvcmVncnRlc3QucHkKQEAgLTI3LDcgKzI3LDcgQEAKIC13Ly0tdmVyYm9zZTIgICAtLSByZS1ydW4gZmFpbGVkIHRlc3RzIGluIHZlcmJvc2UgbW9kZQogLVcvLS12ZXJib3NlMyAgIC0tIHJlLXJ1biBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIGltbWVkaWF0ZWx5CiAtcS8tLXF1aWV0ICAgICAgLS0gbm8gb3V0cHV0IHVubGVzcyBvbmUgb3IgbW9yZSB0ZXN0cyBmYWlsCi0tUy8tLXNsb3cgICAgICAgLS0gcHJpbnQgdGhlIHNsb3dlc3QgMTAgdGVzdHMKKy1TLy0tc2xvd2VzdCAgICAtLSBwcmludCB0aGUgc2xvd2VzdCAxMCB0ZXN0cwogICAgLS1oZWFkZXIgICAgIC0tIHByaW50IGhlYWRlciB3aXRoIGludGVycHJldGVyIGluZm8KIAogU2VsZWN0aW5nIHRlc3RzCkBAIC0zNyw2ICszNyw5IEBACiAtZi8tLWZyb21maWxlICAgLS0gcmVhZCBuYW1lcyBvZiB0ZXN0cyB0byBydW4gZnJvbSBhIGZpbGUgKHNlZSBiZWxvdykKIC14Ly0tZXhjbHVkZSAgICAtLSBhcmd1bWVudHMgYXJlIHRlc3RzIHRvICpleGNsdWRlKgogLXMvLS1zaW5nbGUgICAgIC0tIHNpbmdsZSBzdGVwIHRocm91Z2ggYSBzZXQgb2YgdGVzdHMgKHNlZSBiZWxvdykKKy1tLy0tbWF0Y2ggUEFUICAtLSBtYXRjaCB0ZXN0IGNhc2VzIGFuZCBtZXRob2RzIHdpdGggZ2xvYiBwYXR0ZXJuIFBBVAorLS1tYXRjaGZpbGUgRklMRU5BTUUgLS0gZmlsdGVycyB0ZXN0cyB1c2luZyBhIHRleHQgZmlsZSwgb25lIHBhdHRlcm4gcGVyIGxpbmUKKy1HLy0tZmFpbGZhc3QgICAtLSBmYWlsIGFzIHNvb24gYXMgYSB0ZXN0IGZhaWxzIChvbmx5IHdpdGggLXYgb3IgLVcpCiAtdS8tLXVzZSBSRVMxLFJFUzIsLi4uCiAgICAgICAgICAgICAgICAgLS0gc3BlY2lmeSB3aGljaCBzcGVjaWFsIHJlc291cmNlIGludGVuc2l2ZSB0ZXN0cyB0byBydW4KIC1NLy0tbWVtbGltaXQgTElNSVQKQEAgLTU4LDYgKzYxLDE0IEBACiAgICAgICAgICAgICAgICAgLS0gY2FsbCBnYy5zZXRfdGhyZXNob2xkKFRIUkVTSE9MRCkKIC1GLy0tZm9yZXZlciAgICAtLSBydW4gdGhlIHNwZWNpZmllZCB0ZXN0cyBpbiBhIGxvb3AsIHVudGlsIGFuIGVycm9yIGhhcHBlbnMKIC1QLy0tcGdvICAgICAgICAtLSBlbmFibGUgUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uIHRyYWluaW5nCistLXRlc3RkaXIgICAgICAgLS0gZXhlY3V0ZSB0ZXN0IGZpbGVzIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5CisgICAgICAgICAgICAgICAgICAgKGluc3RlYWQgb2YgdGhlIFB5dGhvbiBzdGRsaWIgdGVzdCBzdWl0ZSkKKy0tbGlzdC10ZXN0cyAgICAtLSBvbmx5IHdyaXRlIHRoZSBuYW1lIG9mIHRlc3RzIHRoYXQgd2lsbCBiZSBydW4sCisgICAgICAgICAgICAgICAgICAgZG9uJ3QgZXhlY3V0ZSB0aGVtCistLWxpc3QtY2FzZXMgICAgLS0gb25seSB3cml0ZSB0aGUgbmFtZSBvZiB0ZXN0IGNhc2VzIHRoYXQgd2lsbCBiZSBydW4sCisgICAgICAgICAgICAgICAgICAgZG9uJ3QgZXhlY3V0ZSB0aGVtCistLWZhaWwtZW52LWNoYW5nZWQgIC0tIGlmIGEgdGVzdCBmaWxlIGFsdGVycyB0aGUgZW52aXJvbm1lbnQsIG1hcmsgdGhlIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgYXMgZmFpbGVkCiAKIAogQWRkaXRpb25hbCBPcHRpb24gRGV0YWlsczoKQEAgLTE1MSwyNCArMTYyLDMzIEBACiBUbyBlbmFibGUgYWxsIHJlc291cmNlcyBleGNlcHQgb25lLCB1c2UgJy11YWxsLC08cmVzb3VyY2U+Jy4gIEZvcgogZXhhbXBsZSwgdG8gcnVuIGFsbCB0aGUgdGVzdHMgZXhjZXB0IGZvciB0aGUgYnNkZGIgdGVzdHMsIGdpdmUgdGhlCiBvcHRpb24gJy11YWxsLC1ic2RkYicuCisKKy0tbWF0Y2hmaWxlIGZpbHRlcnMgdGVzdHMgdXNpbmcgYSB0ZXh0IGZpbGUsIG9uZSBwYXR0ZXJuIHBlciBsaW5lLgorUGF0dGVybiBleGFtcGxlczoKKworLSB0ZXN0IG1ldGhvZDogdGVzdF9zdGF0X2F0dHJpYnV0ZXMKKy0gdGVzdCBjbGFzczogRmlsZVRlc3RzCistIHRlc3QgaWRlbnRpZmllcjogdGVzdF9vcy5GaWxlVGVzdHMudGVzdF9zdGF0X2F0dHJpYnV0ZXMKICIiIgogCiBpbXBvcnQgU3RyaW5nSU8KK2ltcG9ydCBkYXRldGltZQogaW1wb3J0IGdldG9wdAoraW1wb3J0IGltcAogaW1wb3J0IGpzb24KK2ltcG9ydCBtYXRoCiBpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aW1lCiBpbXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgaW1wCi1pbXBvcnQgcGxhdGZvcm0KLWltcG9ydCBzeXNjb25maWcKK2ltcG9ydCB3YXJuaW5ncwogCiAKICMgU29tZSB0aW1lcyBfX3BhdGhfXyBhbmQgX19maWxlX18gYXJlIG5vdCBhYnNvbHV0ZSAoZS5nLiB3aGlsZSBydW5uaW5nIGZyb20KQEAgLTIyMCwxMiArMjQwLDI2IEBACiBTS0lQUEVEID0gLTIKIFJFU09VUkNFX0RFTklFRCA9IC0zCiBJTlRFUlJVUFRFRCA9IC00CitDSElMRF9FUlJPUiA9IC01ICAgIyBlcnJvciBpbiBhIGNoaWxkIHByb2Nlc3MKIAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKKyMgTWluaW11bSBkdXJhdGlvbiBvZiBhIHRlc3QgdG8gZGlzcGxheSBpdHMgZHVyYXRpb24gb3IgdG8gbWVudGlvbiB0aGF0CisjIHRoZSB0ZXN0IGlzIHJ1bm5pbmcgaW4gYmFja2dyb3VuZAorUFJPR1JFU1NfTUlOX1RJTUUgPSAzMC4wICAgIyBzZWNvbmRzCiAKLVJFU09VUkNFX05BTUVTID0gKCdhdWRpbycsICdjdXJzZXMnLCAnbGFyZ2VmaWxlJywgJ25ldHdvcmsnLCAnYnNkZGInLAotICAgICAgICAgICAgICAgICAgJ2RlY2ltYWwnLCAnY3B1JywgJ3N1YnByb2Nlc3MnLCAndXJsZmV0Y2gnLCAnZ3VpJywKLSAgICAgICAgICAgICAgICAgICd4cGlja2xlJykKKyMgRGlzcGxheSB0aGUgcnVubmluZyB0ZXN0cyBpZiBub3RoaW5nIGhhcHBlbmVkIGxhc3QgTiBzZWNvbmRzCitQUk9HUkVTU19VUERBVEUgPSAzMC4wICAgIyBzZWNvbmRzCisKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitBTExfUkVTT1VSQ0VTID0gKCdhdWRpbycsICdjdXJzZXMnLCAnbGFyZ2VmaWxlJywgJ25ldHdvcmsnLCAnYnNkZGInLAorICAgICAgICAgICAgICAgICAnZGVjaW1hbCcsICdjcHUnLCAnc3VicHJvY2VzcycsICd1cmxmZXRjaCcsICdndWknLAorICAgICAgICAgICAgICAgICAneHBpY2tsZScpCisKKyMgT3RoZXIgcmVzb3VyY2VzIGV4Y2x1ZGVkIGZyb20gLS11c2U9YWxsOgorIworIyAtIGV4dHJhbGFnZWZpbGUgKGV4OiB0ZXN0X3ppcGZpbGU2NCk6IHJlYWxseSB0b28gc2xvdyB0byBiZSBlbmFibGVkCisjICAgImJ5IGRlZmF1bHQiCitSRVNPVVJDRV9OQU1FUyA9IEFMTF9SRVNPVVJDRVMgKyAoJ2V4dHJhbGFyZ2VmaWxlJywpCiAKIFRFTVBESVIgPSBvcy5wYXRoLmFic3BhdGgodGVtcGZpbGUuZ2V0dGVtcGRpcigpKQogCkBAIC0yMzYsMTIgKzI3MCw3NSBAQAogICAgIHN5cy5leGl0KGNvZGUpCiAKIAorZGVmIGZvcm1hdF9kdXJhdGlvbihzZWNvbmRzKToKKyAgICBtcyA9IGludChtYXRoLmNlaWwoc2Vjb25kcyAqIDFlMykpCisgICAgc2Vjb25kcywgbXMgPSBkaXZtb2QobXMsIDEwMDApCisgICAgbWludXRlcywgc2Vjb25kcyA9IGRpdm1vZChzZWNvbmRzLCA2MCkKKyAgICBob3VycywgbWludXRlcyA9IGRpdm1vZChtaW51dGVzLCA2MCkKKworICAgIHBhcnRzID0gW10KKyAgICBpZiBob3VyczoKKyAgICAgICAgcGFydHMuYXBwZW5kKCclcyBob3VyJyAlIGhvdXJzKQorICAgIGlmIG1pbnV0ZXM6CisgICAgICAgIHBhcnRzLmFwcGVuZCgnJXMgbWluJyAlIG1pbnV0ZXMpCisgICAgaWYgc2Vjb25kczoKKyAgICAgICAgcGFydHMuYXBwZW5kKCclcyBzZWMnICUgc2Vjb25kcykKKyAgICBpZiBtczoKKyAgICAgICAgcGFydHMuYXBwZW5kKCclcyBtcycgJSBtcykKKyAgICBpZiBub3QgcGFydHM6CisgICAgICAgIHJldHVybiAnMCBtcycKKworICAgIHBhcnRzID0gcGFydHNbOjJdCisgICAgcmV0dXJuICcgJy5qb2luKHBhcnRzKQorCisKK19GT1JNQVRfVEVTVF9SRVNVTFQgPSB7CisgICAgUEFTU0VEOiAnJXMgcGFzc2VkJywKKyAgICBGQUlMRUQ6ICclcyBmYWlsZWQnLAorICAgIEVOVl9DSEFOR0VEOiAnJXMgZmFpbGVkIChlbnYgY2hhbmdlZCknLAorICAgIFNLSVBQRUQ6ICclcyBza2lwcGVkJywKKyAgICBSRVNPVVJDRV9ERU5JRUQ6ICclcyBza2lwcGVkIChyZXNvdXJjZSBkZW5pZWQpJywKKyAgICBJTlRFUlJVUFRFRDogJyVzIGludGVycnVwdGVkJywKKyAgICBDSElMRF9FUlJPUjogJyVzIGNyYXNoZWQnLAorfQorCisKK2RlZiBmb3JtYXRfdGVzdF9yZXN1bHQodGVzdF9uYW1lLCByZXN1bHQpOgorICAgIGZtdCA9IF9GT1JNQVRfVEVTVF9SRVNVTFQuZ2V0KHJlc3VsdCwgIiVzIikKKyAgICByZXR1cm4gZm10ICUgdGVzdF9uYW1lCisKKworZGVmIGNwdV9jb3VudCgpOgorICAgICMgZmlyc3QgdHJ5IG9zLnN5c2NvbmYoKSB0byBwcmV2ZW50IGxvYWRpbmcgdGhlIGJpZyBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlCisgICAgdHJ5OgorICAgICAgICByZXR1cm4gb3Muc3lzY29uZignU0NfTlBST0NFU1NPUlNfT05MTicpCisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgIHBhc3MKKworICAgICMgdHJ5IG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKQorICAgIHRyeToKKyAgICAgICAgaW1wb3J0IG11bHRpcHJvY2Vzc2luZworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIHJldHVybiBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50KCkKKworICAgIHJldHVybiBOb25lCisKKworZGVmIHVubG9hZF90ZXN0X21vZHVsZXMoc2F2ZV9tb2R1bGVzKToKKyAgICAjIFVubG9hZCB0aGUgbmV3bHkgaW1wb3J0ZWQgbW9kdWxlcyAoYmVzdCBlZmZvcnQgZmluYWxpemF0aW9uKQorICAgIGZvciBtb2R1bGUgaW4gc3lzLm1vZHVsZXMua2V5cygpOgorICAgICAgICBpZiBtb2R1bGUgbm90IGluIHNhdmVfbW9kdWxlcyBhbmQgbW9kdWxlLnN0YXJ0c3dpdGgoInRlc3QuIik6CisgICAgICAgICAgICBzdXBwb3J0LnVubG9hZChtb2R1bGUpCisKKwogZGVmIG1haW4odGVzdHM9Tm9uZSwgdGVzdGRpcj1Ob25lLCB2ZXJib3NlPTAsIHF1aWV0PUZhbHNlLAogICAgICAgICAgZXhjbHVkZT1GYWxzZSwgc2luZ2xlPUZhbHNlLCByYW5kb21pemU9RmFsc2UsIGZyb21maWxlPU5vbmUsCiAgICAgICAgICBmaW5kbGVha3M9RmFsc2UsIHVzZV9yZXNvdXJjZXM9Tm9uZSwgdHJhY2U9RmFsc2UsIGNvdmVyZGlyPSdjb3ZlcmFnZScsCiAgICAgICAgICBydW5sZWFrcz1GYWxzZSwgaHVudHJsZWFrcz1GYWxzZSwgdmVyYm9zZTI9RmFsc2UsIHByaW50X3Nsb3c9RmFsc2UsCiAgICAgICAgICByYW5kb21fc2VlZD1Ob25lLCB1c2VfbXA9Tm9uZSwgdmVyYm9zZTM9RmFsc2UsIGZvcmV2ZXI9RmFsc2UsCi0gICAgICAgICBoZWFkZXI9RmFsc2UsIHBnbz1GYWxzZSk6CisgICAgICAgICBoZWFkZXI9RmFsc2UsIHBnbz1GYWxzZSwgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUpOgogICAgICIiIkV4ZWN1dGUgYSB0ZXN0IHN1aXRlLgogCiAgICAgVGhpcyBhbHNvIHBhcnNlcyBjb21tYW5kLWxpbmUgb3B0aW9ucyBhbmQgbW9kaWZpZXMgaXRzIGJlaGF2aW9yCkBAIC0yNjQsMTUgKzM2MSwxOSBAQAogICAgIGRpcmVjdGx5IHRvIHNldCB0aGUgdmFsdWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUgc2V0IGJ5IGZsYWdzCiAgICAgb24gdGhlIGNvbW1hbmQgbGluZS4KICAgICAiIiIKKyAgICByZWdydGVzdF9zdGFydF90aW1lID0gdGltZS50aW1lKCkKIAotICAgIHRlc3Rfc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCisgICAgc3VwcG9ydC5yZWNvcmRfb3JpZ2luYWxfc3Rkb3V0KHN5cy5zdGRvdXQpCiAgICAgdHJ5OgotICAgICAgICBvcHRzLCBhcmdzID0gZ2V0b3B0LmdldG9wdChzeXMuYXJndlsxOl0sICdodnF4c1NyZjpsdTp0OlREOk5MUjpGd1dNOmo6UCcsCisgICAgICAgIG9wdHMsIGFyZ3MgPSBnZXRvcHQuZ2V0b3B0KHN5cy5hcmd2WzE6XSwgJ2h2cXhzU3JmOmx1OnQ6VEQ6TkxSOkZ3V006ajpQR206JywKICAgICAgICAgICAgIFsnaGVscCcsICd2ZXJib3NlJywgJ3ZlcmJvc2UyJywgJ3ZlcmJvc2UzJywgJ3F1aWV0JywKLSAgICAgICAgICAgICAnZXhjbHVkZScsICdzaW5nbGUnLCAnc2xvdycsICdyYW5kb21pemUnLCAnZnJvbWZpbGU9JywgJ2ZpbmRsZWFrcycsCisgICAgICAgICAgICAgJ2V4Y2x1ZGUnLCAnc2luZ2xlJywgJ3Nsb3cnLCAnc2xvd2VzdCcsICdyYW5kb21pemUnLCAnZnJvbWZpbGU9JywKKyAgICAgICAgICAgICAnZmluZGxlYWtzJywKICAgICAgICAgICAgICAndXNlPScsICd0aHJlc2hvbGQ9JywgJ3RyYWNlJywgJ2NvdmVyZGlyPScsICdub2NvdmVyZGlyJywKICAgICAgICAgICAgICAncnVubGVha3MnLCAnaHVudHJsZWFrcz0nLCAnbWVtbGltaXQ9JywgJ3JhbmRzZWVkPScsCi0gICAgICAgICAgICAgJ211bHRpcHJvY2Vzcz0nLCAnc2xhdmVhcmdzPScsICdmb3JldmVyJywgJ2hlYWRlcicsICdwZ28nXSkKKyAgICAgICAgICAgICAnbXVsdGlwcm9jZXNzPScsICdzbGF2ZWFyZ3M9JywgJ2ZvcmV2ZXInLCAnaGVhZGVyJywgJ3BnbycsCisgICAgICAgICAgICAgJ2ZhaWxmYXN0JywgJ21hdGNoPScsICd0ZXN0ZGlyPScsICdsaXN0LXRlc3RzJywgJ2xpc3QtY2FzZXMnLAorICAgICAgICAgICAgICdjb3ZlcmFnZScsICdtYXRjaGZpbGU9JywgJ2ZhaWwtZW52LWNoYW5nZWQnXSkKICAgICBleGNlcHQgZ2V0b3B0LmVycm9yLCBtc2c6CiAgICAgICAgIHVzYWdlKDIsIG1zZykKIApAQCAtMjgxLDYgKzM4MiwxMCBAQAogICAgICAgICByYW5kb21fc2VlZCA9IHJhbmRvbS5yYW5kcmFuZ2UoMTAwMDAwMDApCiAgICAgaWYgdXNlX3Jlc291cmNlcyBpcyBOb25lOgogICAgICAgICB1c2VfcmVzb3VyY2VzID0gW10KKyAgICBzbGF2ZWFyZ3MgPSBOb25lCisgICAgbGlzdF90ZXN0cyA9IEZhbHNlCisgICAgbGlzdF9jYXNlc19vcHQgPSBGYWxzZQorICAgIGZhaWxfZW52X2NoYW5nZWQgPSBGYWxzZQogICAgIGZvciBvLCBhIGluIG9wdHM6CiAgICAgICAgIGlmIG8gaW4gKCctaCcsICctLWhlbHAnKToKICAgICAgICAgICAgIHVzYWdlKDApCkBAIC0yOTAsNiArMzk1LDggQEAKICAgICAgICAgICAgIHZlcmJvc2UyID0gVHJ1ZQogICAgICAgICBlbGlmIG8gaW4gKCctVycsICctLXZlcmJvc2UzJyk6CiAgICAgICAgICAgICB2ZXJib3NlMyA9IFRydWUKKyAgICAgICAgZWxpZiBvIGluICgnLUcnLCAnLS1mYWlsZmFzdCcpOgorICAgICAgICAgICAgZmFpbGZhc3QgPSBUcnVlCiAgICAgICAgIGVsaWYgbyBpbiAoJy1xJywgJy0tcXVpZXQnKToKICAgICAgICAgICAgIHF1aWV0ID0gVHJ1ZTsKICAgICAgICAgICAgIHZlcmJvc2UgPSAwCkBAIC0yOTcsNyArNDA0LDcgQEAKICAgICAgICAgICAgIGV4Y2x1ZGUgPSBUcnVlCiAgICAgICAgIGVsaWYgbyBpbiAoJy1zJywgJy0tc2luZ2xlJyk6CiAgICAgICAgICAgICBzaW5nbGUgPSBUcnVlCi0gICAgICAgIGVsaWYgbyBpbiAoJy1TJywgJy0tc2xvdycpOgorICAgICAgICBlbGlmIG8gaW4gKCctUycsICctLXNsb3cnLCAnLS1zbG93ZXN0Jyk6CiAgICAgICAgICAgICBwcmludF9zbG93ID0gVHJ1ZQogICAgICAgICBlbGlmIG8gaW4gKCctcicsICctLXJhbmRvbWl6ZScpOgogICAgICAgICAgICAgcmFuZG9taXplID0gVHJ1ZQpAQCAtMzA1LDYgKzQxMiwxNyBAQAogICAgICAgICAgICAgcmFuZG9tX3NlZWQgPSBpbnQoYSkKICAgICAgICAgZWxpZiBvIGluICgnLWYnLCAnLS1mcm9tZmlsZScpOgogICAgICAgICAgICAgZnJvbWZpbGUgPSBhCisgICAgICAgIGVsaWYgbyBpbiAoJy1tJywgJy0tbWF0Y2gnKToKKyAgICAgICAgICAgIGlmIG1hdGNoX3Rlc3RzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHMgPSBbXQorICAgICAgICAgICAgbWF0Y2hfdGVzdHMuYXBwZW5kKGEpCisgICAgICAgIGVsaWYgbyA9PSAnLS1tYXRjaGZpbGUnOgorICAgICAgICAgICAgaWYgbWF0Y2hfdGVzdHMgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cyA9IFtdCisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBhKQorICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBmcDoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmcDoKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hfdGVzdHMuYXBwZW5kKGxpbmUuc3RyaXAoKSkKICAgICAgICAgZWxpZiBvIGluICgnLWwnLCAnLS1maW5kbGVha3MnKToKICAgICAgICAgICAgIGZpbmRsZWFrcyA9IFRydWUKICAgICAgICAgZWxpZiBvIGluICgnLUwnLCAnLS1ydW5sZWFrcycpOgpAQCAtMzM0LDEyICs0NTIsMTIgQEAKICAgICAgICAgICAgIGlmIGxlbihodW50cmxlYWtzKSA9PSAyIG9yIG5vdCBodW50cmxlYWtzWzJdOgogICAgICAgICAgICAgICAgIGh1bnRybGVha3NbMjpdID0gWyJyZWZsb2cudHh0Il0KICAgICAgICAgZWxpZiBvIGluICgnLU0nLCAnLS1tZW1saW1pdCcpOgotICAgICAgICAgICAgdGVzdF9zdXBwb3J0LnNldF9tZW1saW1pdChhKQorICAgICAgICAgICAgc3VwcG9ydC5zZXRfbWVtbGltaXQoYSkKICAgICAgICAgZWxpZiBvIGluICgnLXUnLCAnLS11c2UnKToKICAgICAgICAgICAgIHUgPSBbeC5sb3dlcigpIGZvciB4IGluIGEuc3BsaXQoJywnKV0KICAgICAgICAgICAgIGZvciByIGluIHU6CiAgICAgICAgICAgICAgICAgaWYgciA9PSAnYWxsJzoKLSAgICAgICAgICAgICAgICAgICAgdXNlX3Jlc291cmNlc1s6XSA9IFJFU09VUkNFX05BTUVTCisgICAgICAgICAgICAgICAgICAgIHVzZV9yZXNvdXJjZXNbOl0gPSBBTExfUkVTT1VSQ0VTCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgcmVtb3ZlID0gRmFsc2UKICAgICAgICAgICAgICAgICBpZiByWzBdID09ICctJzoKQEAgLTM1OSwxNiArNDc3LDE3IEBACiAgICAgICAgIGVsaWYgbyA9PSAnLS1oZWFkZXInOgogICAgICAgICAgICAgaGVhZGVyID0gVHJ1ZQogICAgICAgICBlbGlmIG8gPT0gJy0tc2xhdmVhcmdzJzoKLSAgICAgICAgICAgIGFyZ3MsIGt3YXJncyA9IGpzb24ubG9hZHMoYSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IElOVEVSUlVQVEVELCBlLl9fY2xhc3NfXy5fX25hbWVfXwotICAgICAgICAgICAgcHJpbnQgICAjIEZvcmNlIGEgbmV3bGluZSAoanVzdCBpbiBjYXNlKQotICAgICAgICAgICAgcHJpbnQganNvbi5kdW1wcyhyZXN1bHQpCi0gICAgICAgICAgICBzeXMuZXhpdCgwKQorICAgICAgICAgICAgc2xhdmVhcmdzID0gYQogICAgICAgICBlbGlmIG8gaW4gKCctUCcsICctLXBnbycpOgogICAgICAgICAgICAgcGdvID0gVHJ1ZQorICAgICAgICBlbGlmIG8gPT0gJy0tdGVzdGRpcic6CisgICAgICAgICAgICB0ZXN0ZGlyID0gYQorICAgICAgICBlbGlmIG8gPT0gJy0tbGlzdC10ZXN0cyc6CisgICAgICAgICAgICBsaXN0X3Rlc3RzID0gVHJ1ZQorICAgICAgICBlbGlmIG8gPT0gJy0tbGlzdC1jYXNlcyc6CisgICAgICAgICAgICBsaXN0X2Nhc2VzX29wdCA9IFRydWUKKyAgICAgICAgZWxpZiBvID09ICctLWZhaWwtZW52LWNoYW5nZWQnOgorICAgICAgICAgICAgZmFpbF9lbnZfY2hhbmdlZCA9IFRydWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgKCJObyBoYW5kbGVyIGZvciBvcHRpb24ge30uICBQbGVhc2UgIgogICAgICAgICAgICAgICAgICJyZXBvcnQgdGhpcyBhcyBhIGJ1ZyBhdCBodHRwOi8vYnVncy5weXRob24ub3JnLiIpLmZvcm1hdChvKQpAQCAtMzc5LDEyICs0OTgsNTcgQEAKICAgICAgICAgdXNhZ2UoMiwgIi1UIGFuZCAtaiBkb24ndCBnbyB0b2dldGhlciEiKQogICAgIGlmIHVzZV9tcCBhbmQgZmluZGxlYWtzOgogICAgICAgICB1c2FnZSgyLCAiLWwgYW5kIC1qIGRvbid0IGdvIHRvZ2V0aGVyISIpCisgICAgaWYgZmFpbGZhc3QgYW5kIG5vdCAodmVyYm9zZSBvciB2ZXJib3NlMyk6CisgICAgICAgIHVzYWdlKCItRy8tLWZhaWxmYXN0IG5lZWRzIGVpdGhlciAtdiBvciAtVyIpCisKKyAgICBpZiB0ZXN0ZGlyOgorICAgICAgICB0ZXN0ZGlyID0gb3MucGF0aC5hYnNwYXRoKHRlc3RkaXIpCisKKyAgICAgICAgIyBQcmVwZW5kIHRlc3QgZGlyZWN0b3J5IHRvIHN5cy5wYXRoLCBzbyBydW50ZXN0KCkgd2lsbCBiZSBhYmxlCisgICAgICAgICMgdG8gbG9jYXRlIHRlc3RzCisgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCB0ZXN0ZGlyKQorCisgICAgIyBNYWtlIHN1cmUgdGhhdCAnJyBhbmQgTGliL3Rlc3QvIGFyZSBub3QgaW4gc3lzLnBhdGgKKyAgICByZWdydGVzdF9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKyAgICBmb3IgcGF0aCBpbiAoJycsIHJlZ3J0ZXN0X2Rpcik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN5cy5wYXRoLnJlbW92ZShwYXRoKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGlmIGh1bnRybGVha3M6CisgICAgICAgIHdhcm11cCwgcmVwZXRpdGlvbnMsIF8gPSBodW50cmxlYWtzCisgICAgICAgIGlmIHdhcm11cCA8IDEgb3IgcmVwZXRpdGlvbnMgPCAxOgorICAgICAgICAgICAgbXNnID0gKCJJbnZhbGlkIHZhbHVlcyBmb3IgdGhlIC0taHVudHJsZWFrcy8tUiBwYXJhbWV0ZXJzLiBUaGUgIgorICAgICAgICAgICAgICAgICAgICJudW1iZXIgb2Ygd2FybXVwcyBhbmQgcmVwZXRpdGlvbnMgbXVzdCBiZSBhdCBsZWFzdCAxICIKKyAgICAgICAgICAgICAgICAgICAiZWFjaCAoMToxKS4iKQorICAgICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCBtc2cKKyAgICAgICAgICAgIHN5cy5leGl0KDIpCisKKyAgICBpZiBzbGF2ZWFyZ3MgaXMgbm90IE5vbmU6CisgICAgICAgIGFyZ3MsIGt3YXJncyA9IGpzb24ubG9hZHMoc2xhdmVhcmdzKQorICAgICAgICBpZiBrd2FyZ3NbJ2h1bnRybGVha3MnXToKKyAgICAgICAgICAgIHdhcm1fY2FjaGVzKCkKKyAgICAgICAgaWYgdGVzdGRpcjoKKyAgICAgICAgICAgIGt3YXJnc1sndGVzdGRpciddID0gdGVzdGRpcgorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXN1bHQgPSBydW50ZXN0KCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb24sIGU6CisgICAgICAgICAgICByZXN1bHQgPSBJTlRFUlJVUFRFRCwgZS5fX2NsYXNzX18uX19uYW1lX18KKyAgICAgICAgcHJpbnQgICAjIEZvcmNlIGEgbmV3bGluZSAoanVzdCBpbiBjYXNlKQorICAgICAgICBwcmludCBqc29uLmR1bXBzKHJlc3VsdCkKKyAgICAgICAgc3lzLmV4aXQoMCkKKworICAgIGlmIGh1bnRybGVha3M6CisgICAgICAgIHdhcm1fY2FjaGVzKCkKIAogICAgIGdvb2QgPSBbXQogICAgIGJhZCA9IFtdCiAgICAgc2tpcHBlZCA9IFtdCiAgICAgcmVzb3VyY2VfZGVuaWVkcyA9IFtdCiAgICAgZW52aXJvbm1lbnRfY2hhbmdlZCA9IFtdCisgICAgcmVydW4gPSBbXQorICAgIGZpcnN0X3Jlc3VsdCA9IE5vbmUKICAgICBpbnRlcnJ1cHRlZCA9IEZhbHNlCiAKICAgICBpZiBmaW5kbGVha3M6CkBAIC00MTIsNyArNTc2LDcgQEAKIAogICAgIGlmIGZyb21maWxlOgogICAgICAgICB0ZXN0cyA9IFtdCi0gICAgICAgIGZwID0gb3Blbihvcy5wYXRoLmpvaW4odGVzdF9zdXBwb3J0LlNBVkVEQ1dELCBmcm9tZmlsZSkpCisgICAgICAgIGZwID0gb3Blbihvcy5wYXRoLmpvaW4oc3VwcG9ydC5TQVZFRENXRCwgZnJvbWZpbGUpKQogICAgICAgICBmb3IgbGluZSBpbiBmcDoKICAgICAgICAgICAgIGd1dHMgPSBsaW5lLnNwbGl0KCkgIyBhc3N1bWluZyBubyB0ZXN0IGhhcyB3aGl0ZXNwYWNlIGluIGl0cyBuYW1lCiAgICAgICAgICAgICBpZiBndXRzIGFuZCBub3QgZ3V0c1swXS5zdGFydHN3aXRoKCcjJyk6CkBAIC00MzIsMTcgKzU5NiwxMyBAQAogICAgICAgICAgICAgbm90dGVzdHMuYWRkKGFyZykKICAgICAgICAgYXJncyA9IFtdCiAKLSAgICAjIEZvciBhIHBhcnRpYWwgcnVuLCB3ZSBkbyBub3QgbmVlZCB0byBjbHV0dGVyIHRoZSBvdXRwdXQuCi0gICAgaWYgdmVyYm9zZSBvciBoZWFkZXIgb3Igbm90IChxdWlldCBvciBzaW5nbGUgb3IgdGVzdHMgb3IgYXJncyk6Ci0gICAgICAgIGlmIG5vdCBwZ286Ci0gICAgICAgICAgICAjIFByaW50IGJhc2ljIHBsYXRmb3JtIGluZm9ybWF0aW9uCi0gICAgICAgICAgICBwcmludCAiPT0iLCBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIiAiLmpvaW4oc3lzLnZlcnNpb24uc3BsaXQoKSkKLSAgICAgICAgICAgIHByaW50ICI9PSAgIiwgcGxhdGZvcm0ucGxhdGZvcm0oYWxpYXNlZD1UcnVlKSwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMtZW5kaWFuIiAlIHN5cy5ieXRlb3JkZXIKLSAgICAgICAgICAgIHByaW50ICI9PSAgIiwgb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgIHByaW50ICJUZXN0aW5nIHdpdGggZmxhZ3M6Iiwgc3lzLmZsYWdzCisgICAgaWYgaHVudHJsZWFrczoKKyAgICAgICAgIyBGSVhNRTogYnBvLTMxNzMxOiB0ZXN0X2lvIGhhbmdzIHdpdGggLS1odW50cmxlYWtzCisgICAgICAgIHByaW50KCJXYXJuaW5nOiBicG8tMzE3MzE6IHRlc3RfaW8gaGFuZ3Mgd2l0aCAtLWh1bnRybGVha3M6ICIKKyAgICAgICAgICAgICAgImV4Y2x1ZGUgdGhlIHRlc3QiKQorICAgICAgICBub3R0ZXN0cy5hZGQoJ3Rlc3RfaW8nKQogCisgICAgZGlzcGxheV9oZWFkZXIgPSAodmVyYm9zZSBvciBoZWFkZXIgb3Igbm90IChxdWlldCBvciBzaW5nbGUgb3IgdGVzdHMgb3IgYXJncykpIGFuZCAobm90IHBnbykKICAgICBhbGx0ZXN0cyA9IGZpbmR0ZXN0cyh0ZXN0ZGlyLCBzdGR0ZXN0cywgbm90dGVzdHMpCiAgICAgc2VsZWN0ZWQgPSB0ZXN0cyBvciBhcmdzIG9yIGFsbHRlc3RzCiAgICAgaWYgc2luZ2xlOgpAQCAtNDUxLDI1ICs2MTEsMzEgQEAKICAgICAgICAgICAgIG5leHRfc2luZ2xlX3Rlc3QgPSBhbGx0ZXN0c1thbGx0ZXN0cy5pbmRleChzZWxlY3RlZFswXSkrMV0KICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6CiAgICAgICAgICAgICBuZXh0X3NpbmdsZV90ZXN0ID0gTm9uZQotICAgIGlmIHJhbmRvbWl6ZToKLSAgICAgICAgcmFuZG9tLnNlZWQocmFuZG9tX3NlZWQpCi0gICAgICAgIHByaW50ICJVc2luZyByYW5kb20gc2VlZCIsIHJhbmRvbV9zZWVkCi0gICAgICAgIHJhbmRvbS5zaHVmZmxlKHNlbGVjdGVkKQorCisgICAgaWYgbGlzdF90ZXN0czoKKyAgICAgICAgZm9yIG5hbWUgaW4gc2VsZWN0ZWQ6CisgICAgICAgICAgICBwcmludChuYW1lKQorICAgICAgICBzeXMuZXhpdCgwKQorCisgICAgaWYgbGlzdF9jYXNlc19vcHQ6CisgICAgICAgIGxpc3RfY2FzZXModGVzdGRpciwgc2VsZWN0ZWQsIG1hdGNoX3Rlc3RzKQorICAgICAgICBzeXMuZXhpdCgwKQorCiAgICAgaWYgdHJhY2U6CiAgICAgICAgIGltcG9ydCB0cmFjZQotICAgICAgICB0cmFjZXIgPSB0cmFjZS5UcmFjZShpZ25vcmVkaXJzPVtzeXMucHJlZml4LCBzeXMuZXhlY19wcmVmaXhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZT1GYWxzZSwgY291bnQ9VHJ1ZSkKKyAgICAgICAgdHJhY2VyID0gdHJhY2UuVHJhY2UodHJhY2U9RmFsc2UsIGNvdW50PVRydWUpCiAKICAgICB0ZXN0X3RpbWVzID0gW10KLSAgICB0ZXN0X3N1cHBvcnQudXNlX3Jlc291cmNlcyA9IHVzZV9yZXNvdXJjZXMKKyAgICBzdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSB1c2VfcmVzb3VyY2VzCiAgICAgc2F2ZV9tb2R1bGVzID0gc2V0KHN5cy5tb2R1bGVzKQogCiAgICAgZGVmIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCk6CiAgICAgICAgIG9rLCB0ZXN0X3RpbWUgPSByZXN1bHQKLSAgICAgICAgdGVzdF90aW1lcy5hcHBlbmQoKHRlc3RfdGltZSwgdGVzdCkpCisgICAgICAgIGlmIG9rIG5vdCBpbiAoQ0hJTERfRVJST1IsIElOVEVSUlVQVEVEKToKKyAgICAgICAgICAgIHRlc3RfdGltZXMuYXBwZW5kKCh0ZXN0X3RpbWUsIHRlc3QpKQogICAgICAgICBpZiBvayA9PSBQQVNTRUQ6CiAgICAgICAgICAgICBnb29kLmFwcGVuZCh0ZXN0KQotICAgICAgICBlbGlmIG9rID09IEZBSUxFRDoKKyAgICAgICAgZWxpZiBvayBpbiAoRkFJTEVELCBDSElMRF9FUlJPUik6CiAgICAgICAgICAgICBiYWQuYXBwZW5kKHRlc3QpCiAgICAgICAgIGVsaWYgb2sgPT0gRU5WX0NIQU5HRUQ6CiAgICAgICAgICAgICBlbnZpcm9ubWVudF9jaGFuZ2VkLmFwcGVuZCh0ZXN0KQpAQCAtNDc4LDYgKzY0NCw4IEBACiAgICAgICAgIGVsaWYgb2sgPT0gUkVTT1VSQ0VfREVOSUVEOgogICAgICAgICAgICAgc2tpcHBlZC5hcHBlbmQodGVzdCkKICAgICAgICAgICAgIHJlc291cmNlX2RlbmllZHMuYXBwZW5kKHRlc3QpCisgICAgICAgIGVsaWYgb2sgIT0gSU5URVJSVVBURUQ6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHRlc3QgcmVzdWx0OiAlciIgJSBvaykKIAogICAgIGlmIGZvcmV2ZXI6CiAgICAgICAgIGRlZiB0ZXN0X2ZvcmV2ZXIodGVzdHM9bGlzdChzZWxlY3RlZCkpOgpAQCAtNDg2LDYgKzY1NCw4IEBACiAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHRlc3QKICAgICAgICAgICAgICAgICAgICAgaWYgYmFkOgogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIGlmIGZhaWxfZW52X2NoYW5nZWQgYW5kIGVudmlyb25tZW50X2NoYW5nZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgdGVzdHMgPSB0ZXN0X2ZvcmV2ZXIoKQogICAgICAgICB0ZXN0X2NvdW50ID0gJycKICAgICAgICAgdGVzdF9jb3VudF93aWR0aCA9IDMKQEAgLTQ5NCwxMyArNjY0LDYwIEBACiAgICAgICAgIHRlc3RfY291bnQgPSAnL3t9Jy5mb3JtYXQobGVuKHNlbGVjdGVkKSkKICAgICAgICAgdGVzdF9jb3VudF93aWR0aCA9IGxlbih0ZXN0X2NvdW50KSAtIDEKIAorICAgIGRlZiBkaXNwbGF5X3Byb2dyZXNzKHRlc3RfaW5kZXgsIHRlc3QpOgorICAgICAgICAjICJbIDUxLzQwNS8xXSB0ZXN0X3RjbCIKKyAgICAgICAgbGluZSA9ICJ7MTp7MH19ezJ9Ii5mb3JtYXQodGVzdF9jb3VudF93aWR0aCwgdGVzdF9pbmRleCwgdGVzdF9jb3VudCkKKyAgICAgICAgZmFpbHMgPSBsZW4oYmFkKSArIGxlbihlbnZpcm9ubWVudF9jaGFuZ2VkKQorICAgICAgICBpZiBmYWlscyBhbmQgbm90IHBnbzoKKyAgICAgICAgICAgIGxpbmUgPSAne30ve30nLmZvcm1hdChsaW5lLCBmYWlscykKKyAgICAgICAgbGluZSA9ICdbe31dJy5mb3JtYXQobGluZSkKKworICAgICAgICAjIGFkZCB0aGUgc3lzdGVtIGxvYWQgcHJlZml4OiAibG9hZCBhdmc6IDEuODAgIgorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnZ2V0bG9hZGF2ZycpOgorICAgICAgICAgICAgbG9hZF9hdmdfMW1pbiA9IG9zLmdldGxvYWRhdmcoKVswXQorICAgICAgICAgICAgbGluZSA9ICJsb2FkIGF2ZzogezouMmZ9IHt9Ii5mb3JtYXQobG9hZF9hdmdfMW1pbiwgbGluZSkKKworICAgICAgICAjIGFkZCB0aGUgdGltZXN0YW1wIHByZWZpeDogICIwOjAxOjA1ICIKKyAgICAgICAgdGVzdF90aW1lID0gdGltZS50aW1lKCkgLSByZWdydGVzdF9zdGFydF90aW1lCisgICAgICAgIHRlc3RfdGltZSA9IGRhdGV0aW1lLnRpbWVkZWx0YShzZWNvbmRzPWludCh0ZXN0X3RpbWUpKQorICAgICAgICBsaW5lID0gIiVzICVzIiAlICh0ZXN0X3RpbWUsIGxpbmUpCisKKyAgICAgICAgIyBhZGQgdGhlIHRlc3QgbmFtZQorICAgICAgICBsaW5lID0gInt9IHt9Ii5mb3JtYXQobGluZSwgdGVzdCkKKworICAgICAgICBwcmludChsaW5lKQorICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKworICAgICMgRm9yIGEgcGFydGlhbCBydW4sIHdlIGRvIG5vdCBuZWVkIHRvIGNsdXR0ZXIgdGhlIG91dHB1dC4KKyAgICBpZiBkaXNwbGF5X2hlYWRlcjoKKyAgICAgICAgIyBQcmludCBiYXNpYyBwbGF0Zm9ybSBpbmZvcm1hdGlvbgorICAgICAgICBwcmludCAiPT0iLCBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKSwgXAorICAgICAgICAgICAgICAgICAgICAiICIuam9pbihzeXMudmVyc2lvbi5zcGxpdCgpKQorICAgICAgICBwcmludCAiPT0gICIsIHBsYXRmb3JtLnBsYXRmb3JtKGFsaWFzZWQ9VHJ1ZSksIFwKKyAgICAgICAgICAgICAgICAgICAgICAiJXMtZW5kaWFuIiAlIHN5cy5ieXRlb3JkZXIKKyAgICAgICAgcHJpbnQgIj09ICAiLCBvcy5nZXRjd2QoKQorICAgICAgICBuY3B1ID0gY3B1X2NvdW50KCkKKyAgICAgICAgaWYgbmNwdToKKyAgICAgICAgICAgIHByaW50ICI9PSBDUFUgY291bnQ6IiwgbmNwdQorCisgICAgaWYgaHVudHJsZWFrczoKKyAgICAgICAgd2FybXVwLCByZXBldGl0aW9ucywgXyA9IGh1bnRybGVha3MKKyAgICAgICAgaWYgd2FybXVwIDwgMzoKKyAgICAgICAgICAgIHByaW50KCJXQVJOSU5HOiBSdW5uaW5nIHRlc3RzIHdpdGggLS1odW50cmxlYWtzLy1SIGFuZCBsZXNzIHRoYW4gIgorICAgICAgICAgICAgICAgICAgIjMgd2FybXVwIHJlcGV0aXRpb25zIGNhbiBnaXZlIGZhbHNlIHBvc2l0aXZlcyEiKQorCisgICAgaWYgcmFuZG9taXplOgorICAgICAgICByYW5kb20uc2VlZChyYW5kb21fc2VlZCkKKyAgICAgICAgcHJpbnQgIlVzaW5nIHJhbmRvbSBzZWVkIiwgcmFuZG9tX3NlZWQKKyAgICAgICAgcmFuZG9tLnNodWZmbGUoc2VsZWN0ZWQpCisKICAgICBpZiB1c2VfbXA6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGZyb20gdGhyZWFkaW5nIGltcG9ydCBUaHJlYWQKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgcHJpbnQgIk11bHRpcHJvY2VzcyBvcHRpb24gcmVxdWlyZXMgdGhyZWFkIHN1cHBvcnQiCiAgICAgICAgICAgICBzeXMuZXhpdCgyKQotICAgICAgICBmcm9tIFF1ZXVlIGltcG9ydCBRdWV1ZQorICAgICAgICBmcm9tIFF1ZXVlIGltcG9ydCBRdWV1ZSwgRW1wdHkKICAgICAgICAgZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBQb3BlbiwgUElQRQogICAgICAgICBkZWJ1Z19vdXRwdXRfcGF0ID0gcmUuY29tcGlsZShyIlxbXGQrIHJlZnNcXSQiKQogICAgICAgICBvdXRwdXQgPSBRdWV1ZSgpCkBAIC01MDksNjggKzcyNiwxMzAgQEAKICAgICAgICAgICAgICAgICBhcmdzX3R1cGxlID0gKAogICAgICAgICAgICAgICAgICAgICAodGVzdCwgdmVyYm9zZSwgcXVpZXQpLAogICAgICAgICAgICAgICAgICAgICBkaWN0KGh1bnRybGVha3M9aHVudHJsZWFrcywgdXNlX3Jlc291cmNlcz11c2VfcmVzb3VyY2VzLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxmYXN0PWZhaWxmYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoX3Rlc3RzPW1hdGNoX3Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgIHBnbz1wZ28pCiAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgIHlpZWxkICh0ZXN0LCBhcmdzX3R1cGxlKQogICAgICAgICBwZW5kaW5nID0gdGVzdHNfYW5kX2FyZ3MoKQotICAgICAgICBvcHRfYXJncyA9IHRlc3Rfc3VwcG9ydC5hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQorICAgICAgICBvcHRfYXJncyA9IHN1cHBvcnQuYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKICAgICAgICAgYmFzZV9jbWQgPSBbc3lzLmV4ZWN1dGFibGVdICsgb3B0X2FyZ3MgKyBbJy1tJywgJ3Rlc3QucmVncnRlc3QnXQogICAgICAgICAjIHJlcXVpcmVkIHRvIHNwYXduIGEgbmV3IHByb2Nlc3Mgd2l0aCBQR08gZmxhZyBvbi9vZmYKICAgICAgICAgaWYgcGdvOgogICAgICAgICAgICAgYmFzZV9jbWQgPSBiYXNlX2NtZCArIFsnLS1wZ28nXQotICAgICAgICBkZWYgd29yaygpOgotICAgICAgICAgICAgIyBBIHdvcmtlciB0aHJlYWQuCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgdGVzdCwgYXJnc190dXBsZSA9IG5leHQocGVuZGluZykKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICAgICAjIC1FIGlzIG5lZWRlZCBieSBzb21lIHRlc3RzLCBlLmcuIHRlc3RfaW1wb3J0Ci0gICAgICAgICAgICAgICAgICAgIHBvcGVuID0gUG9wZW4oYmFzZV9jbWQgKyBbJy0tc2xhdmVhcmdzJywganNvbi5kdW1wcyhhcmdzX3R1cGxlKV0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz0ob3MubmFtZSAhPSAnbnQnKSkKKworICAgICAgICBjbGFzcyBNdWx0aXByb2Nlc3NUaHJlYWQoVGhyZWFkKToKKyAgICAgICAgICAgIGN1cnJlbnRfdGVzdCA9IE5vbmUKKyAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSBOb25lCisKKyAgICAgICAgICAgIGRlZiBydW50ZXN0KHNlbGYpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdGVzdCwgYXJnc190dXBsZSA9IG5leHQocGVuZGluZykKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgICAgICAgICAjIC1FIGlzIG5lZWRlZCBieSBzb21lIHRlc3RzLCBlLmcuIHRlc3RfaW1wb3J0CisgICAgICAgICAgICAgICAgYXJncyA9IGJhc2VfY21kICsgWyctLXNsYXZlYXJncycsIGpzb24uZHVtcHMoYXJnc190dXBsZSldCisgICAgICAgICAgICAgICAgaWYgdGVzdGRpcjoKKyAgICAgICAgICAgICAgICAgICAgYXJncy5leHRlbmQoKCctLXRlc3RkaXInLCB0ZXN0ZGlyKSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudF90ZXN0ID0gdGVzdAorICAgICAgICAgICAgICAgICAgICBwb3BlbiA9IFBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlX2Zkcz0ob3MubmFtZSAhPSAnbnQnKSkKICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwb3Blbi5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICAgICAgICAgICMgU3RyaXAgbGFzdCByZWZjb3VudCBvdXRwdXQgbGluZSBpZiBpdCBleGlzdHMsIHNpbmNlIGl0Ci0gICAgICAgICAgICAgICAgICAgICMgY29tZXMgZnJvbSB0aGUgc2h1dGRvd24gb2YgdGhlIGludGVycHJldGVyIGluIHRoZSBzdWJjb21tYW5kLgotICAgICAgICAgICAgICAgICAgICBzdGRlcnIgPSBkZWJ1Z19vdXRwdXRfcGF0LnN1YigiIiwgc3RkZXJyKQorICAgICAgICAgICAgICAgICAgICByZXRjb2RlID0gcG9wZW4ud2FpdCgpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50X3Rlc3QgPSBOb25lCisKKyAgICAgICAgICAgICAgICAjIFN0cmlwIGxhc3QgcmVmY291bnQgb3V0cHV0IGxpbmUgaWYgaXQgZXhpc3RzLCBzaW5jZSBpdAorICAgICAgICAgICAgICAgICMgY29tZXMgZnJvbSB0aGUgc2h1dGRvd24gb2YgdGhlIGludGVycHJldGVyIGluIHRoZSBzdWJjb21tYW5kLgorICAgICAgICAgICAgICAgIHN0ZGVyciA9IGRlYnVnX291dHB1dF9wYXQuc3ViKCIiLCBzdGRlcnIpCisKKyAgICAgICAgICAgICAgICBpZiByZXRjb2RlID09IDA6CiAgICAgICAgICAgICAgICAgICAgIHN0ZG91dCwgXywgcmVzdWx0ID0gc3Rkb3V0LnN0cmlwKCkucnBhcnRpdGlvbigiXG4iKQogICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVzdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0ganNvbi5sb2FkcyhyZXN1bHQpCi0gICAgICAgICAgICAgICAgICAgIG91dHB1dC5wdXQoKHRlc3QsIHN0ZG91dC5yc3RyaXAoKSwgc3RkZXJyLnJzdHJpcCgpLCByZXN1bHQpKQotICAgICAgICAgICAgZXhjZXB0IEJhc2VFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgb3V0cHV0LnB1dCgoTm9uZSwgTm9uZSwgTm9uZSwgTm9uZSkpCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgd29ya2VycyA9IFtUaHJlYWQodGFyZ2V0PXdvcmspIGZvciBpIGluIHJhbmdlKHVzZV9tcCldCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gKENISUxEX0VSUk9SLCAiRXhpdCBjb2RlICVzIiAlIHJldGNvZGUpCisKKyAgICAgICAgICAgICAgICBvdXRwdXQucHV0KCh0ZXN0LCBzdGRvdXQucnN0cmlwKCksIHN0ZGVyci5yc3RyaXAoKSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICAgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHN0b3AgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICB3aGlsZSBub3Qgc3RvcDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0b3AgPSBzZWxmLnJ1bnRlc3QoKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQucHV0KChOb25lLCBOb25lLCBOb25lLCBOb25lKSkKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UKKworICAgICAgICB3b3JrZXJzID0gW011bHRpcHJvY2Vzc1RocmVhZCgpIGZvciBpIGluIHJhbmdlKHVzZV9tcCldCisgICAgICAgIHByaW50KCJSdW4gdGVzdHMgaW4gcGFyYWxsZWwgdXNpbmcgJXMgY2hpbGQgcHJvY2Vzc2VzIgorICAgICAgICAgICAgICAlIGxlbih3b3JrZXJzKSkKICAgICAgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgogICAgICAgICAgICAgd29ya2VyLnN0YXJ0KCkKKworICAgICAgICBkZWYgZ2V0X3J1bm5pbmcod29ya2Vycyk6CisgICAgICAgICAgICBydW5uaW5nID0gW10KKyAgICAgICAgICAgIGZvciB3b3JrZXIgaW4gd29ya2VyczoKKyAgICAgICAgICAgICAgICBjdXJyZW50X3Rlc3QgPSB3b3JrZXIuY3VycmVudF90ZXN0CisgICAgICAgICAgICAgICAgaWYgbm90IGN1cnJlbnRfdGVzdDoKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBkdCA9IHRpbWUudGltZSgpIC0gd29ya2VyLnN0YXJ0X3RpbWUKKyAgICAgICAgICAgICAgICBpZiBkdCA+PSBQUk9HUkVTU19NSU5fVElNRToKKyAgICAgICAgICAgICAgICAgICAgcnVubmluZy5hcHBlbmQoJyVzICglcyknICUgKGN1cnJlbnRfdGVzdCwgZm9ybWF0X2R1cmF0aW9uKGR0KSkpCisgICAgICAgICAgICByZXR1cm4gcnVubmluZworCiAgICAgICAgIGZpbmlzaGVkID0gMAogICAgICAgICB0ZXN0X2luZGV4ID0gMQorICAgICAgICBnZXRfdGltZW91dCA9IG1heChQUk9HUkVTU19VUERBVEUsIFBST0dSRVNTX01JTl9USU1FKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aGlsZSBmaW5pc2hlZCA8IHVzZV9tcDoKLSAgICAgICAgICAgICAgICB0ZXN0LCBzdGRvdXQsIHN0ZGVyciwgcmVzdWx0ID0gb3V0cHV0LmdldCgpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBpdGVtID0gb3V0cHV0LmdldCh0aW1lb3V0PWdldF90aW1lb3V0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBFbXB0eToKKyAgICAgICAgICAgICAgICAgICAgcnVubmluZyA9IGdldF9ydW5uaW5nKHdvcmtlcnMpCisgICAgICAgICAgICAgICAgICAgIGlmIHJ1bm5pbmcgYW5kIG5vdCBwZ286CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgncnVubmluZzogJXMnICUgJywgJy5qb2luKHJ1bm5pbmcpKQorICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICB0ZXN0LCBzdGRvdXQsIHN0ZGVyciwgcmVzdWx0ID0gaXRlbQogICAgICAgICAgICAgICAgIGlmIHRlc3QgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZmluaXNoZWQgKz0gMQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCkKKyAgICAgICAgICAgICAgICBpZiBub3QgcXVpZXQ6CisgICAgICAgICAgICAgICAgICAgIG9rLCB0ZXN0X3RpbWUgPSByZXN1bHQKKyAgICAgICAgICAgICAgICAgICAgdGV4dCA9IGZvcm1hdF90ZXN0X3Jlc3VsdCh0ZXN0LCBvaykKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9rIG5vdCBpbiAoQ0hJTERfRVJST1IsIElOVEVSUlVQVEVEKQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHRlc3RfdGltZSA+PSBQUk9HUkVTU19NSU5fVElNRQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIG5vdCBwZ28pOgorICAgICAgICAgICAgICAgICAgICAgICAgdGV4dCArPSAnICglcyknICUgZm9ybWF0X2R1cmF0aW9uKHRlc3RfdGltZSkKKyAgICAgICAgICAgICAgICAgICAgcnVubmluZyA9IGdldF9ydW5uaW5nKHdvcmtlcnMpCisgICAgICAgICAgICAgICAgICAgIGlmIHJ1bm5pbmcgYW5kIG5vdCBwZ286CisgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ICs9ICcgLS0gcnVubmluZzogJXMnICUgJywgJy5qb2luKHJ1bm5pbmcpCisgICAgICAgICAgICAgICAgICAgIGRpc3BsYXlfcHJvZ3Jlc3ModGVzdF9pbmRleCwgdGV4dCkKKwogICAgICAgICAgICAgICAgIGlmIHN0ZG91dDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgc3Rkb3V0CisgICAgICAgICAgICAgICAgICAgIHByaW50KHN0ZG91dCkKKyAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgICAgICAgICBpZiBzdGRlcnIgYW5kIG5vdCBwZ286CiAgICAgICAgICAgICAgICAgICAgIHByaW50ID4+c3lzLnN0ZGVyciwgc3RkZXJyCi0gICAgICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCisKICAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gSU5URVJSVVBURUQ6CiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCByZXN1bHRbMV0gPT0gJ0tleWJvYXJkSW50ZXJydXB0JwogICAgICAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVwdCAgICMgV2hhdCBlbHNlPwotICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVfcmVzdWx0KHRlc3QsIHJlc3VsdCkKLSAgICAgICAgICAgICAgICBpZiBub3QgcXVpZXQ6Ci0gICAgICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfS97M31dIHs0fSIgaWYgYmFkIGVsc2UgIlt7MTp7MH19ezJ9XSB7NH0iCi0gICAgICAgICAgICAgICAgICAgIHByaW50KGZtdC5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50X3dpZHRoLCB0ZXN0X2luZGV4LCB0ZXN0X2NvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGJhZCksIHRlc3QpKQorCiAgICAgICAgICAgICAgICAgdGVzdF9pbmRleCArPSAxCiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgICAgIGludGVycnVwdGVkID0gVHJ1ZQpAQCAtNTc4LDMwICs4NTcsNTUgQEAKICAgICAgICAgZm9yIHdvcmtlciBpbiB3b3JrZXJzOgogICAgICAgICAgICAgd29ya2VyLmpvaW4oKQogICAgIGVsc2U6CisgICAgICAgIHByaW50KCJSdW4gdGVzdHMgc2VxdWVudGlhbGx5IikKKworICAgICAgICBwcmV2aW91c190ZXN0ID0gTm9uZQogICAgICAgICBmb3IgdGVzdF9pbmRleCwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgogICAgICAgICAgICAgaWYgbm90IHF1aWV0OgotICAgICAgICAgICAgICAgIGZtdCA9ICJbezE6ezB9fXsyfS97M31dIHs0fSIgaWYgYmFkIGVsc2UgIlt7MTp7MH19ezJ9XSB7NH0iCi0gICAgICAgICAgICAgICAgcHJpbnQoZm10LmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9jb3VudF93aWR0aCwgdGVzdF9pbmRleCwgdGVzdF9jb3VudCwgbGVuKGJhZCksIHRlc3QpKQotICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQorICAgICAgICAgICAgICAgIHRleHQgPSB0ZXN0CisgICAgICAgICAgICAgICAgaWYgcHJldmlvdXNfdGVzdDoKKyAgICAgICAgICAgICAgICAgICAgdGV4dCA9ICclcyAtLSAlcycgJSAodGV4dCwgcHJldmlvdXNfdGVzdCkKKyAgICAgICAgICAgICAgICBkaXNwbGF5X3Byb2dyZXNzKHRlc3RfaW5kZXgsIHRleHQpCisKKyAgICAgICAgICAgIGRlZiBsb2NhbF9ydW50ZXN0KCk6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwgaHVudHJsZWFrcywgTm9uZSwgcGdvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGZhc3Q9ZmFpbGZhc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1tYXRjaF90ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RkaXI9dGVzdGRpcikKKyAgICAgICAgICAgICAgICBhY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKICAgICAgICAgICAgIGlmIHRyYWNlOgogICAgICAgICAgICAgICAgICMgSWYgd2UncmUgdHJhY2luZyBjb2RlIGNvdmVyYWdlLCB0aGVuIHdlIGRvbid0IGV4aXQgd2l0aCBzdGF0dXMKICAgICAgICAgICAgICAgICAjIGlmIG9uIGEgZmFsc2UgcmV0dXJuIHZhbHVlIGZyb20gbWFpbi4KLSAgICAgICAgICAgICAgICB0cmFjZXIucnVuY3R4KCdydW50ZXN0KHRlc3QsIHZlcmJvc2UsIHF1aWV0KScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxzPWdsb2JhbHMoKSwgbG9jYWxzPXZhcnMoKSkKKyAgICAgICAgICAgICAgICBucyA9IGRpY3QobG9jYWxzKCkpCisgICAgICAgICAgICAgICAgdHJhY2VyLnJ1bmN0eCgncmVzdWx0ID0gbG9jYWxfcnVudGVzdCgpJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9Z2xvYmFscygpLCBsb2NhbHM9bnMpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gbnNbJ3Jlc3VsdCddCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gcnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwgaHVudHJsZWFrcywgTm9uZSwgcGdvKQotICAgICAgICAgICAgICAgICAgICBhY2N1bXVsYXRlX3Jlc3VsdCh0ZXN0LCByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxvY2FsX3J1bnRlc3QoKQogICAgICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlMyBhbmQgcmVzdWx0WzBdID09IEZBSUxFRDoKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwZ286CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgdGVzdAotICAgICAgICAgICAgICAgICAgICAgICAgcnVudGVzdCh0ZXN0LCBUcnVlLCBxdWlldCwgaHVudHJsZWFrcywgTm9uZSwgcGdvKQorICAgICAgICAgICAgICAgICAgICAgICAgcnVudGVzdCh0ZXN0LCBUcnVlLCBxdWlldCwgaHVudHJsZWFrcywgTm9uZSwgcGdvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0ZGlyPXRlc3RkaXIpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQorICAgICAgICAgICAgcHJldmlvdXNfdGVzdCA9IGZvcm1hdF90ZXN0X3Jlc3VsdCh0ZXN0LCByZXN1bHRbMF0pCisgICAgICAgICAgICBpZiB0ZXN0X3RpbWUgPj0gUFJPR1JFU1NfTUlOX1RJTUU6CisgICAgICAgICAgICAgICAgcHJldmlvdXNfdGVzdCA9ICIlcyBpbiAlcyIgJSAocHJldmlvdXNfdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXRfZHVyYXRpb24odGVzdF90aW1lKSkKKyAgICAgICAgICAgIGVsaWYgcmVzdWx0WzBdID09IFBBU1NFRDoKKyAgICAgICAgICAgICAgICAjIGJlIHF1aWV0OiBzYXkgbm90aGluZyBpZiB0aGUgdGVzdCBwYXNzZWQgc2hvcnRseQorICAgICAgICAgICAgICAgIHByZXZpb3VzX3Rlc3QgPSBOb25lCisKICAgICAgICAgICAgIGlmIGZpbmRsZWFrczoKICAgICAgICAgICAgICAgICBnYy5jb2xsZWN0KCkKICAgICAgICAgICAgICAgICBpZiBnYy5nYXJiYWdlOgpAQCAtNjExLDYwICs5MTUsMTA1IEBACiAgICAgICAgICAgICAgICAgICAgICMgdGhlbSBhZ2FpbgogICAgICAgICAgICAgICAgICAgICBmb3VuZF9nYXJiYWdlLmV4dGVuZChnYy5nYXJiYWdlKQogICAgICAgICAgICAgICAgICAgICBkZWwgZ2MuZ2FyYmFnZVs6XQotICAgICAgICAgICAgIyBVbmxvYWQgdGhlIG5ld2x5IGltcG9ydGVkIG1vZHVsZXMgKGJlc3QgZWZmb3J0IGZpbmFsaXphdGlvbikKLSAgICAgICAgICAgIGZvciBtb2R1bGUgaW4gc3lzLm1vZHVsZXMua2V5cygpOgotICAgICAgICAgICAgICAgIGlmIG1vZHVsZSBub3QgaW4gc2F2ZV9tb2R1bGVzIGFuZCBtb2R1bGUuc3RhcnRzd2l0aCgidGVzdC4iKToKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9zdXBwb3J0LnVubG9hZChtb2R1bGUpCiAKLSAgICBpZiBpbnRlcnJ1cHRlZCBhbmQgbm90IHBnbzoKKyAgICAgICAgICAgIHVubG9hZF90ZXN0X21vZHVsZXMoc2F2ZV9tb2R1bGVzKQorCisKKyAgICBkZWYgZ2V0X3Rlc3RzX3Jlc3VsdCgpOgorICAgICAgICByZXN1bHQgPSBbXQorICAgICAgICBpZiBiYWQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJGQUlMVVJFIikKKyAgICAgICAgZWxpZiBmYWlsX2Vudl9jaGFuZ2VkIGFuZCBlbnZpcm9ubWVudF9jaGFuZ2VkOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiRU5WIENIQU5HRUQiKQorCisgICAgICAgIGlmIGludGVycnVwdGVkOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiSU5URVJSVVBURUQiKQorCisgICAgICAgIGlmIG5vdCByZXN1bHQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJTVUNDRVNTIikKKworICAgICAgICByZXN1bHQgPSAnLCAnLmpvaW4ocmVzdWx0KQorICAgICAgICBpZiBmaXJzdF9yZXN1bHQ6CisgICAgICAgICAgICByZXN1bHQgPSAnJXMgdGhlbiAlcycgJSAoZmlyc3RfcmVzdWx0LCByZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1bHQKKworCisgICAgZGVmIGRpc3BsYXlfcmVzdWx0KCk6CiAgICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIGFmdGVyIF5DCiAgICAgICAgIHByaW50Ci0gICAgICAgIHByaW50ICJUZXN0IHN1aXRlIGludGVycnVwdGVkIGJ5IHNpZ25hbCBTSUdJTlQuIgotICAgICAgICBvbWl0dGVkID0gc2V0KHNlbGVjdGVkKSAtIHNldChnb29kKSAtIHNldChiYWQpIC0gc2V0KHNraXBwZWQpCi0gICAgICAgIHByaW50IGNvdW50KGxlbihvbWl0dGVkKSwgInRlc3QiKSwgIm9taXR0ZWQ6IgotICAgICAgICBwcmludGxpc3Qob21pdHRlZCkKLSAgICBpZiBnb29kIGFuZCBub3QgcXVpZXQgYW5kIG5vdCBwZ286Ci0gICAgICAgIGlmIG5vdCBiYWQgYW5kIG5vdCBza2lwcGVkIGFuZCBub3QgaW50ZXJydXB0ZWQgYW5kIGxlbihnb29kKSA+IDE6Ci0gICAgICAgICAgICBwcmludCAiQWxsIiwKLSAgICAgICAgcHJpbnQgY291bnQobGVuKGdvb2QpLCAidGVzdCIpLCAiT0suIgotICAgIGlmIHByaW50X3Nsb3c6Ci0gICAgICAgIHRlc3RfdGltZXMuc29ydChyZXZlcnNlPVRydWUpCi0gICAgICAgIHByaW50ICIxMCBzbG93ZXN0IHRlc3RzOiIKLSAgICAgICAgZm9yIHRpbWUsIHRlc3QgaW4gdGVzdF90aW1lc1s6MTBdOgotICAgICAgICAgICAgcHJpbnQgIiVzOiAlLjFmcyIgJSAodGVzdCwgdGltZSkKLSAgICBpZiBiYWQgYW5kIG5vdCBwZ286Ci0gICAgICAgIHByaW50IGNvdW50KGxlbihiYWQpLCAidGVzdCIpLCAiZmFpbGVkOiIKLSAgICAgICAgcHJpbnRsaXN0KGJhZCkKLSAgICBpZiBlbnZpcm9ubWVudF9jaGFuZ2VkIGFuZCBub3QgcGdvOgotICAgICAgICBwcmludCAie30gYWx0ZXJlZCB0aGUgZXhlY3V0aW9uIGVudmlyb25tZW50OiIuZm9ybWF0KAotICAgICAgICAgICAgY291bnQobGVuKGVudmlyb25tZW50X2NoYW5nZWQpLCAidGVzdCIpKQotICAgICAgICBwcmludGxpc3QoZW52aXJvbm1lbnRfY2hhbmdlZCkKLSAgICBpZiBza2lwcGVkIGFuZCBub3QgcXVpZXQgYW5kIG5vdCBwZ286Ci0gICAgICAgIHByaW50IGNvdW50KGxlbihza2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IgotICAgICAgICBwcmludGxpc3Qoc2tpcHBlZCkKKyAgICAgICAgcHJpbnQoIj09IFRlc3RzIHJlc3VsdDogJXMgPT0iICUgZ2V0X3Rlc3RzX3Jlc3VsdCgpKQogCi0gICAgICAgIGUgPSBfRXhwZWN0ZWRTa2lwcygpCi0gICAgICAgIHBsYXQgPSBzeXMucGxhdGZvcm0KLSAgICAgICAgaWYgZS5pc3ZhbGlkKCk6Ci0gICAgICAgICAgICBzdXJwcmlzZSA9IHNldChza2lwcGVkKSAtIGUuZ2V0ZXhwZWN0ZWQoKSAtIHNldChyZXNvdXJjZV9kZW5pZWRzKQotICAgICAgICAgICAgaWYgc3VycHJpc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQgY291bnQobGVuKHN1cnByaXNlKSwgInNraXAiKSwgXAotICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIG9uIiwgcGxhdCArICI6IgotICAgICAgICAgICAgICAgIHByaW50bGlzdChzdXJwcmlzZSkKKyAgICAgICAgaWYgaW50ZXJydXB0ZWQgYW5kIG5vdCBwZ286CisgICAgICAgICAgICBwcmludAorICAgICAgICAgICAgcHJpbnQgIlRlc3Qgc3VpdGUgaW50ZXJydXB0ZWQgYnkgc2lnbmFsIFNJR0lOVC4iCisgICAgICAgICAgICBvbWl0dGVkID0gc2V0KHNlbGVjdGVkKSAtIHNldChnb29kKSAtIHNldChiYWQpIC0gc2V0KHNraXBwZWQpCisgICAgICAgICAgICBwcmludCBjb3VudChsZW4ob21pdHRlZCksICJ0ZXN0IiksICJvbWl0dGVkOiIKKyAgICAgICAgICAgIHByaW50bGlzdChvbWl0dGVkKQorCisgICAgICAgIGlmIGdvb2QgYW5kIG5vdCBxdWlldCBhbmQgbm90IHBnbzoKKyAgICAgICAgICAgIHByaW50CisgICAgICAgICAgICBpZiBub3QgYmFkIGFuZCBub3Qgc2tpcHBlZCBhbmQgbm90IGludGVycnVwdGVkIGFuZCBsZW4oZ29vZCkgPiAxOgorICAgICAgICAgICAgICAgIHByaW50ICJBbGwiLAorICAgICAgICAgICAgcHJpbnQgY291bnQobGVuKGdvb2QpLCAidGVzdCIpLCAiT0suIgorCisgICAgICAgIGlmIHByaW50X3Nsb3c6CisgICAgICAgICAgICB0ZXN0X3RpbWVzLnNvcnQocmV2ZXJzZT1UcnVlKQorICAgICAgICAgICAgcHJpbnQKKyAgICAgICAgICAgIHByaW50ICIxMCBzbG93ZXN0IHRlc3RzOiIKKyAgICAgICAgICAgIGZvciB0ZXN0X3RpbWUsIHRlc3QgaW4gdGVzdF90aW1lc1s6MTBdOgorICAgICAgICAgICAgICAgIHByaW50KCItICVzOiAlLjFmcyIgJSAodGVzdCwgdGVzdF90aW1lKSkKKworICAgICAgICBpZiBiYWQgYW5kIG5vdCBwZ286CisgICAgICAgICAgICBwcmludAorICAgICAgICAgICAgcHJpbnQgY291bnQobGVuKGJhZCksICJ0ZXN0IiksICJmYWlsZWQ6IgorICAgICAgICAgICAgcHJpbnRsaXN0KGJhZCkKKworICAgICAgICBpZiBlbnZpcm9ubWVudF9jaGFuZ2VkIGFuZCBub3QgcGdvOgorICAgICAgICAgICAgcHJpbnQKKyAgICAgICAgICAgIHByaW50ICJ7fSBhbHRlcmVkIHRoZSBleGVjdXRpb24gZW52aXJvbm1lbnQ6Ii5mb3JtYXQoCisgICAgICAgICAgICAgICAgY291bnQobGVuKGVudmlyb25tZW50X2NoYW5nZWQpLCAidGVzdCIpKQorICAgICAgICAgICAgcHJpbnRsaXN0KGVudmlyb25tZW50X2NoYW5nZWQpCisKKyAgICAgICAgaWYgc2tpcHBlZCBhbmQgbm90IHF1aWV0IGFuZCBub3QgcGdvOgorICAgICAgICAgICAgcHJpbnQKKyAgICAgICAgICAgIHByaW50IGNvdW50KGxlbihza2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IgorICAgICAgICAgICAgcHJpbnRsaXN0KHNraXBwZWQpCisKKyAgICAgICAgICAgIGUgPSBfRXhwZWN0ZWRTa2lwcygpCisgICAgICAgICAgICBwbGF0ID0gc3lzLnBsYXRmb3JtCisgICAgICAgICAgICBpZiBlLmlzdmFsaWQoKToKKyAgICAgICAgICAgICAgICBzdXJwcmlzZSA9IHNldChza2lwcGVkKSAtIGUuZ2V0ZXhwZWN0ZWQoKSAtIHNldChyZXNvdXJjZV9kZW5pZWRzKQorICAgICAgICAgICAgICAgIGlmIHN1cnByaXNlOgorICAgICAgICAgICAgICAgICAgICBwcmludCBjb3VudChsZW4oc3VycHJpc2UpLCAic2tpcCIpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIG9uIiwgcGxhdCArICI6IgorICAgICAgICAgICAgICAgICAgICBwcmludGxpc3Qoc3VycHJpc2UpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgIlRob3NlIHNraXBzIGFyZSBhbGwgZXhwZWN0ZWQgb24iLCBwbGF0ICsgIi4iCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50ICJUaG9zZSBza2lwcyBhcmUgYWxsIGV4cGVjdGVkIG9uIiwgcGxhdCArICIuIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQgIkFzayBzb21lb25lIHRvIHRlYWNoIHJlZ3J0ZXN0LnB5IGFib3V0IHdoaWNoIHRlc3RzIGFyZSIKLSAgICAgICAgICAgIHByaW50ICJleHBlY3RlZCB0byBnZXQgc2tpcHBlZCBvbiIsIHBsYXQgKyAiLiIKKyAgICAgICAgICAgICAgICBwcmludCAiQXNrIHNvbWVvbmUgdG8gdGVhY2ggcmVncnRlc3QucHkgYWJvdXQgd2hpY2ggdGVzdHMgYXJlIgorICAgICAgICAgICAgICAgIHByaW50ICJleHBlY3RlZCB0byBnZXQgc2tpcHBlZCBvbiIsIHBsYXQgKyAiLiIKKworICAgICAgICBpZiByZXJ1bjoKKyAgICAgICAgICAgIHByaW50CisgICAgICAgICAgICBwcmludCgiJXM6IiAlIGNvdW50KGxlbihyZXJ1biksICJyZS1ydW4gdGVzdCIpKQorICAgICAgICAgICAgcHJpbnRsaXN0KHJlcnVuKQorCisKKyAgICBkaXNwbGF5X3Jlc3VsdCgpCiAKICAgICBpZiB2ZXJib3NlMiBhbmQgYmFkOgorICAgICAgICBmaXJzdF9yZXN1bHQgPSBnZXRfdGVzdHNfcmVzdWx0KCkKKworICAgICAgICBwcmludAogICAgICAgICBwcmludCAiUmUtcnVubmluZyBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIgotICAgICAgICBmb3IgdGVzdCBpbiBiYWRbOl06CisgICAgICAgIHJlcnVuID0gYmFkWzpdCisgICAgICAgIGZvciB0ZXN0IGluIHJlcnVuOgogICAgICAgICAgICAgcHJpbnQgIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgdGVzdAogICAgICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdGVzdF9zdXBwb3J0LnZlcmJvc2UgPSBUcnVlCi0gICAgICAgICAgICAgICAgb2sgPSBydW50ZXN0KHRlc3QsIFRydWUsIHF1aWV0LCBodW50cmxlYWtzLCBOb25lLCBwZ28pCisgICAgICAgICAgICAgICAgc3VwcG9ydC52ZXJib3NlID0gVHJ1ZQorICAgICAgICAgICAgICAgIG9rID0gcnVudGVzdCh0ZXN0LCBUcnVlLCBxdWlldCwgaHVudHJsZWFrcywgTm9uZSwgcGdvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaF90ZXN0cz1tYXRjaF90ZXN0cywgdGVzdGRpcj10ZXN0ZGlyKQogICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgogICAgICAgICAgICAgICAgICMgcHJpbnQgYSBuZXdsaW5lIHNlcGFyYXRlIGZyb20gdGhlIF5DCiAgICAgICAgICAgICAgICAgcHJpbnQKQEAgLTY3Nyw2ICsxMDI2LDggQEAKICAgICAgICAgICAgICAgICBwcmludCBjb3VudChsZW4oYmFkKSwgInRlc3QiKSwgImZhaWxlZCBhZ2FpbjoiCiAgICAgICAgICAgICAgICAgcHJpbnRsaXN0KGJhZCkKIAorICAgICAgICBkaXNwbGF5X3Jlc3VsdCgpCisKICAgICBpZiBzaW5nbGU6CiAgICAgICAgIGlmIG5leHRfc2luZ2xlX3Rlc3Q6CiAgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3JykgYXMgZnA6CkBAIC02OTEsNyArMTA0MiwxOSBAQAogICAgIGlmIHJ1bmxlYWtzOgogICAgICAgICBvcy5zeXN0ZW0oImxlYWtzICVkIiAlIG9zLmdldHBpZCgpKQogCi0gICAgc3lzLmV4aXQobGVuKGJhZCkgPiAwIG9yIGludGVycnVwdGVkKQorICAgIHByaW50CisgICAgZHVyYXRpb24gPSB0aW1lLnRpbWUoKSAtIHJlZ3J0ZXN0X3N0YXJ0X3RpbWUKKyAgICBwcmludCgiVG90YWwgZHVyYXRpb246ICVzIiAlIGZvcm1hdF9kdXJhdGlvbihkdXJhdGlvbikpCisKKyAgICBwcmludCgiVGVzdHMgcmVzdWx0OiAlcyIgJSBnZXRfdGVzdHNfcmVzdWx0KCkpCisKKyAgICBpZiBiYWQ6CisgICAgICAgIHN5cy5leGl0KDIpCisgICAgaWYgaW50ZXJydXB0ZWQ6CisgICAgICAgIHN5cy5leGl0KDEzMCkKKyAgICBpZiBmYWlsX2Vudl9jaGFuZ2VkIGFuZCBlbnZpcm9ubWVudF9jaGFuZ2VkOgorICAgICAgICBzeXMuZXhpdCgzKQorICAgIHN5cy5leGl0KDApCiAKIAogU1REVEVTVFMgPSBbCkBAIC03MjUsNyArMTA4OCw4IEBACiAgICAgcmV0dXJuIHN0ZHRlc3RzICsgc29ydGVkKHRlc3RzKQogCiBkZWYgcnVudGVzdCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwKLSAgICAgICAgICAgIGh1bnRybGVha3M9RmFsc2UsIHVzZV9yZXNvdXJjZXM9Tm9uZSwgcGdvPUZhbHNlKToKKyAgICAgICAgICAgIGh1bnRybGVha3M9RmFsc2UsIHVzZV9yZXNvdXJjZXM9Tm9uZSwgcGdvPUZhbHNlLAorICAgICAgICAgICAgZmFpbGZhc3Q9RmFsc2UsIG1hdGNoX3Rlc3RzPU5vbmUsIHRlc3RkaXI9Tm9uZSk6CiAgICAgIiIiUnVuIGEgc2luZ2xlIHRlc3QuCiAKICAgICB0ZXN0IC0tIHRoZSBuYW1lIG9mIHRoZSB0ZXN0CkBAIC03MzgsNiArMTEwMiw3IEBACiAgICAgICAgICAgIGZvciBQcm9maWxlIEd1aWRlZCBPcHRpbWl6YXRpb24gYnVpbGQKIAogICAgIFJldHVybnMgb25lIG9mIHRoZSB0ZXN0IHJlc3VsdCBjb25zdGFudHM6CisgICAgICAgIENISUxEX0VSUk9SICAgICAgQ2hpbGQgcHJvY2VzcyBjcmFzaGVkCiAgICAgICAgIElOVEVSUlVQVEVEICAgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgd2hlbiBydW4gdW5kZXIgLWoKICAgICAgICAgUkVTT1VSQ0VfREVOSUVEICB0ZXN0IHNraXBwZWQgYmVjYXVzZSByZXNvdXJjZSBkZW5pZWQKICAgICAgICAgU0tJUFBFRCAgICAgICAgICB0ZXN0IHNraXBwZWQgZm9yIHNvbWUgb3RoZXIgcmVhc29uCkBAIC03NDYsMTEgKzExMTEsMTggQEAKICAgICAgICAgUEFTU0VEICAgICAgICAgICB0ZXN0IHBhc3NlZAogICAgICIiIgogCi0gICAgdGVzdF9zdXBwb3J0LnZlcmJvc2UgPSB2ZXJib3NlICAjIFRlbGwgdGVzdHMgdG8gYmUgbW9kZXJhdGVseSBxdWlldAorICAgIHN1cHBvcnQudmVyYm9zZSA9IHZlcmJvc2UgICMgVGVsbCB0ZXN0cyB0byBiZSBtb2RlcmF0ZWx5IHF1aWV0CiAgICAgaWYgdXNlX3Jlc291cmNlcyBpcyBub3QgTm9uZToKLSAgICAgICAgdGVzdF9zdXBwb3J0LnVzZV9yZXNvdXJjZXMgPSB1c2VfcmVzb3VyY2VzCisgICAgICAgIHN1cHBvcnQudXNlX3Jlc291cmNlcyA9IHVzZV9yZXNvdXJjZXMKICAgICB0cnk6Ci0gICAgICAgIHJldHVybiBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzLCBwZ28pCisgICAgICAgIHN1cHBvcnQuc2V0X21hdGNoX3Rlc3RzKG1hdGNoX3Rlc3RzKQorICAgICAgICAjIHJlc2V0IHRoZSBlbnZpcm9ubWVudF9hbHRlcmVkIGZsYWcgdG8gZGV0ZWN0IGlmIGEgdGVzdCBhbHRlcmVkCisgICAgICAgICMgdGhlIGVudmlyb25tZW50CisgICAgICAgIHN1cHBvcnQuZW52aXJvbm1lbnRfYWx0ZXJlZCA9IEZhbHNlCisgICAgICAgIGlmIGZhaWxmYXN0OgorICAgICAgICAgICAgc3VwcG9ydC5mYWlsZmFzdCA9IFRydWUKKworICAgICAgICByZXR1cm4gcnVudGVzdF9pbm5lcih0ZXN0LCB2ZXJib3NlLCBxdWlldCwgaHVudHJsZWFrcywgcGdvLCB0ZXN0ZGlyKQogICAgIGZpbmFsbHk6CiAgICAgICAgIGNsZWFudXBfdGVzdF9kcm9wcGluZ3ModGVzdCwgdmVyYm9zZSkKIApAQCAtODQ5LDMxICsxMjIxLDMxIEBACiAgICAgICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoaWdub3JlX2FsbD1UcnVlKQogICAgICAgICAgICAgYXN5bmNvcmUuc29ja2V0X21hcC51cGRhdGUoc2F2ZWRfbWFwKQogCi0gICAgZGVmIGdldF90ZXN0X3N1cHBvcnRfVEVTVEZOKHNlbGYpOgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZSh0ZXN0X3N1cHBvcnQuVEVTVEZOKToKKyAgICBkZWYgZ2V0X3N1cHBvcnRfVEVTVEZOKHNlbGYpOgorICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzdXBwb3J0LlRFU1RGTik6CiAgICAgICAgICAgICByZXN1bHQgPSAnZicKLSAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHRlc3Rfc3VwcG9ydC5URVNURk4pOgorICAgICAgICBlbGlmIG9zLnBhdGguaXNkaXIoc3VwcG9ydC5URVNURk4pOgogICAgICAgICAgICAgcmVzdWx0ID0gJ2QnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXN1bHQgPSBOb25lCiAgICAgICAgIHJldHVybiByZXN1bHQKLSAgICBkZWYgcmVzdG9yZV90ZXN0X3N1cHBvcnRfVEVTVEZOKHNlbGYsIHNhdmVkX3ZhbHVlKToKKyAgICBkZWYgcmVzdG9yZV9zdXBwb3J0X1RFU1RGTihzZWxmLCBzYXZlZF92YWx1ZSk6CiAgICAgICAgIGlmIHNhdmVkX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZSh0ZXN0X3N1cHBvcnQuVEVTVEZOKToKLSAgICAgICAgICAgICAgICBvcy51bmxpbmsodGVzdF9zdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIGVsaWYgb3MucGF0aC5pc2Rpcih0ZXN0X3N1cHBvcnQuVEVTVEZOKToKLSAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHRlc3Rfc3VwcG9ydC5URVNURk4pCisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShzdXBwb3J0LlRFU1RGTik6CisgICAgICAgICAgICAgICAgb3MudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKHN1cHBvcnQuVEVTVEZOKToKKyAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKHN1cHBvcnQuVEVTVEZOKQogCiAgICAgZGVmIGdldF9maWxlcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNvcnRlZChmbiArICgnLycgaWYgb3MucGF0aC5pc2RpcihmbikgZWxzZSAnJykKICAgICAgICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gb3MubGlzdGRpcihvcy5jdXJkaXIpKQogICAgIGRlZiByZXN0b3JlX2ZpbGVzKHNlbGYsIHNhdmVkX3ZhbHVlKToKLSAgICAgICAgZm4gPSB0ZXN0X3N1cHBvcnQuVEVTVEZOCisgICAgICAgIGZuID0gc3VwcG9ydC5URVNURk4KICAgICAgICAgaWYgZm4gbm90IGluIHNhdmVkX3ZhbHVlIGFuZCAoZm4gKyAnLycpIG5vdCBpbiBzYXZlZF92YWx1ZToKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuKToKLSAgICAgICAgICAgICAgICB0ZXN0X3N1cHBvcnQudW5saW5rKGZuKQorICAgICAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKGZuKQogICAgICAgICAgICAgZWxpZiBvcy5wYXRoLmlzZGlyKGZuKToKLSAgICAgICAgICAgICAgICB0ZXN0X3N1cHBvcnQucm10cmVlKGZuKQorICAgICAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKGZuKQogCiAgICAgZGVmIHJlc291cmNlX2luZm8oc2VsZik6CiAgICAgICAgIGZvciBuYW1lIGluIHNlbGYucmVzb3VyY2VzOgpAQCAtODkwLDYgKzEyNjIsMTAgQEAKICAgICBkZWYgX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWwsIGV4Y190Yik6CiAgICAgICAgIHNhdmVkX3ZhbHVlcyA9IHNlbGYuc2F2ZWRfdmFsdWVzCiAgICAgICAgIGRlbCBzZWxmLnNhdmVkX3ZhbHVlcworCisgICAgICAgICMgUmVhZCBzdXBwb3J0LmVudmlyb25tZW50X2FsdGVyZWQsIHNldCBieSBzdXBwb3J0IGhlbHBlciBmdW5jdGlvbnMKKyAgICAgICAgc2VsZi5jaGFuZ2VkIHw9IHN1cHBvcnQuZW52aXJvbm1lbnRfYWx0ZXJlZAorCiAgICAgICAgIGZvciBuYW1lLCBnZXQsIHJlc3RvcmUgaW4gc2VsZi5yZXNvdXJjZV9pbmZvKCk6CiAgICAgICAgICAgICBjdXJyZW50ID0gZ2V0KCkKICAgICAgICAgICAgIG9yaWdpbmFsID0gc2F2ZWRfdmFsdWVzLnBvcChuYW1lKQpAQCAtOTAxLDEwICsxMjc3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj5zeXMuc3RkZXJyLCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nIC0tIHt9IHdhcyBtb2RpZmllZCBieSB7fSIuZm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYudGVzdG5hbWUpKQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2UgPiAxIGFuZCBub3Qgc2VsZi5wZ286Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIEJlZm9yZToge31cbiAgQWZ0ZXI6ICB7fSAiLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwsIGN1cnJlbnQpKQorICAgICAgICAgICAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgQmVmb3JlOiB7fVxuICBBZnRlcjogIHt9ICIuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsLCBjdXJyZW50KSkKICAgICAgICAgICAgICMgWFhYIChuY29naGxhbik6IGZvciBtb3N0IHJlc291cmNlcyAoZS5nLiBzeXMucGF0aCkgaWRlbnRpdHkKICAgICAgICAgICAgICMgbWF0dGVycyBhdCBsZWFzdCBhcyBtdWNoIGFzIHZhbHVlLiBGb3Igb3RoZXJzIChlLmcuIGN3ZCksCiAgICAgICAgICAgICAjIGlkZW50aXR5IGlzIGlycmVsZXZhbnQuIFNob3VsZCB3ZSBhZGQgYSBtZWNoYW5pc20gdG8gY2hlY2sKQEAgLTkxMiw4ICsxMjg3LDExIEBACiAgICAgICAgIHJldHVybiBGYWxzZQogCiAKLWRlZiBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzPUZhbHNlLCBwZ289RmFsc2UpOgotICAgIHRlc3Rfc3VwcG9ydC51bmxvYWQodGVzdCkKK2RlZiBwb3N0X3Rlc3RfY2xlYW51cCgpOgorICAgIHN1cHBvcnQucmVhcF9jaGlsZHJlbigpCisKK2RlZiBydW50ZXN0X2lubmVyKHRlc3QsIHZlcmJvc2UsIHF1aWV0LCBodW50cmxlYWtzPUZhbHNlLCBwZ289RmFsc2UsIHRlc3RkaXI9Tm9uZSk6CisgICAgc3VwcG9ydC51bmxvYWQodGVzdCkKICAgICBpZiB2ZXJib3NlOgogICAgICAgICBjYXB0dXJlX3N0ZG91dCA9IE5vbmUKICAgICBlbHNlOgpAQCAtOTI2LDI5ICsxMzA0LDMwIEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIGNhcHR1cmVfc3Rkb3V0OgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBjYXB0dXJlX3N0ZG91dAotICAgICAgICAgICAgaWYgdGVzdC5zdGFydHN3aXRoKCd0ZXN0LicpOgotICAgICAgICAgICAgICAgIGFic3Rlc3QgPSB0ZXN0Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgQWx3YXlzIGltcG9ydCBpdCBmcm9tIHRoZSB0ZXN0IHBhY2thZ2UKLSAgICAgICAgICAgICAgICBhYnN0ZXN0ID0gJ3Rlc3QuJyArIHRlc3QKKyAgICAgICAgICAgIGFic3Rlc3QgPSBnZXRfYWJzX21vZHVsZSh0ZXN0ZGlyLCB0ZXN0KQogICAgICAgICAgICAgY2xlYXJfY2FjaGVzKCkKICAgICAgICAgICAgIHdpdGggc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCh0ZXN0LCB2ZXJib3NlLCBxdWlldCwgcGdvKSBhcyBlbnZpcm9ubWVudDoKICAgICAgICAgICAgICAgICBzdGFydF90aW1lID0gdGltZS50aW1lKCkKICAgICAgICAgICAgICAgICB0aGVfcGFja2FnZSA9IF9faW1wb3J0X18oYWJzdGVzdCwgZ2xvYmFscygpLCBsb2NhbHMoKSwgW10pCi0gICAgICAgICAgICAgICAgdGhlX21vZHVsZSA9IGdldGF0dHIodGhlX3BhY2thZ2UsIHRlc3QpCisgICAgICAgICAgICAgICAgaWYgYWJzdGVzdC5zdGFydHN3aXRoKCd0ZXN0LicpOgorICAgICAgICAgICAgICAgICAgICB0aGVfbW9kdWxlID0gZ2V0YXR0cih0aGVfcGFja2FnZSwgdGVzdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB0aGVfbW9kdWxlID0gdGhlX3BhY2thZ2UKICAgICAgICAgICAgICAgICAjIE9sZCB0ZXN0cyBydW4gdG8gY29tcGxldGlvbiBzaW1wbHkgYXMgYSBzaWRlLWVmZmVjdCBvZgogICAgICAgICAgICAgICAgICMgYmVpbmcgaW1wb3J0ZWQuICBGb3IgdGVzdHMgYmFzZWQgb24gdW5pdHRlc3Qgb3IgZG9jdGVzdCwKICAgICAgICAgICAgICAgICAjIGV4cGxpY2l0bHkgaW52b2tlIHRoZWlyIHRlc3RfbWFpbigpIGZ1bmN0aW9uIChpZiBpdCBleGlzdHMpLgogICAgICAgICAgICAgICAgIGluZGlyZWN0X3Rlc3QgPSBnZXRhdHRyKHRoZV9tb2R1bGUsICJ0ZXN0X21haW4iLCBOb25lKQotICAgICAgICAgICAgICAgIGlmIGluZGlyZWN0X3Rlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGluZGlyZWN0X3Rlc3QoKQogICAgICAgICAgICAgICAgIGlmIGh1bnRybGVha3M6CiAgICAgICAgICAgICAgICAgICAgIHJlZmxlYWsgPSBkYXNoX1IodGhlX21vZHVsZSwgdGVzdCwgaW5kaXJlY3RfdGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgIGh1bnRybGVha3MpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgaWYgaW5kaXJlY3RfdGVzdCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGlyZWN0X3Rlc3QoKQogICAgICAgICAgICAgICAgIHRlc3RfdGltZSA9IHRpbWUudGltZSgpIC0gc3RhcnRfdGltZQorICAgICAgICAgICAgcG9zdF90ZXN0X2NsZWFudXAoKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgc3lzLnN0ZG91dCA9IHNhdmVfc3Rkb3V0Ci0gICAgZXhjZXB0IHRlc3Rfc3VwcG9ydC5SZXNvdXJjZURlbmllZCwgbXNnOgorICAgIGV4Y2VwdCBzdXBwb3J0LlJlc291cmNlRGVuaWVkLCBtc2c6CiAgICAgICAgIGlmIG5vdCBxdWlldCBhbmQgbm90IHBnbzoKICAgICAgICAgICAgIHByaW50IHRlc3QsICJza2lwcGVkIC0tIiwgbXNnCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKQEAgLTk2MCw3ICsxMzM5LDcgQEAKICAgICAgICAgcmV0dXJuIFNLSVBQRUQsIHRlc3RfdGltZQogICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAgICAgcmFpc2UKLSAgICBleGNlcHQgdGVzdF9zdXBwb3J0LlRlc3RGYWlsZWQsIG1zZzoKKyAgICBleGNlcHQgc3VwcG9ydC5UZXN0RmFpbGVkLCBtc2c6CiAgICAgICAgIGlmIG5vdCBwZ286CiAgICAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICJ0ZXN0IiwgdGVzdCwgImZhaWxlZCAtLSIsIG1zZwogICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKQEAgLTEwMDUsNyArMTM4NCw3IEBACiAgICAgIyBzaW5jZSBpZiBhIHRlc3QgbGVhdmVzIGEgZmlsZSBvcGVuLCBpdCBjYW5ub3QgYmUgZGVsZXRlZCBieSBuYW1lICh3aGlsZQogICAgICMgdGhlcmUncyBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCB0aGF0IGhlcmUgZWl0aGVyLCB3ZSBjYW4gZGlzcGxheSB0aGUKICAgICAjIG5hbWUgb2YgdGhlIG9mZmVuZGluZyB0ZXN0LCB3aGljaCBpcyBhIHJlYWwgaGVscCkuCi0gICAgZm9yIG5hbWUgaW4gKHRlc3Rfc3VwcG9ydC5URVNURk4sCisgICAgZm9yIG5hbWUgaW4gKHN1cHBvcnQuVEVTVEZOLAogICAgICAgICAgICAgICAgICAiZGJfaG9tZSIsCiAgICAgICAgICAgICAgICAgKToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5hbWUpOgpAQCAtMTA3MiwyOCArMTQ1MSw2MSBAQAogCiAgICAgZGVsdGFzID0gW10KICAgICBud2FybXVwLCBudHJhY2tlZCwgZm5hbWUgPSBodW50cmxlYWtzCi0gICAgZm5hbWUgPSBvcy5wYXRoLmpvaW4odGVzdF9zdXBwb3J0LlNBVkVEQ1dELCBmbmFtZSkKKyAgICBmbmFtZSA9IG9zLnBhdGguam9pbihzdXBwb3J0LlNBVkVEQ1dELCBmbmFtZSkKICAgICByZXBjb3VudCA9IG53YXJtdXAgKyBudHJhY2tlZAorICAgIHJjX2RlbHRhcyA9IFswXSAqIG50cmFja2VkCisgICAgZmRfZGVsdGFzID0gWzBdICogbnRyYWNrZWQKKwogICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICJiZWdpbm5pbmciLCByZXBjb3VudCwgInJlcGV0aXRpb25zIgogICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICgiMTIzNDU2Nzg5MCIqKHJlcGNvdW50Ly8xMCArIDEpKVs6cmVwY291bnRdCiAgICAgZGFzaF9SX2NsZWFudXAoZnMsIHBzLCBwaWMsIHpkYywgYWJjcykKKyAgICAjIGluaXRpYWxpemUgdmFyaWFibGVzIHRvIG1ha2UgcHlmbGFrZXMgcXVpZXQKKyAgICByY19iZWZvcmUgPSBmZF9iZWZvcmUgPSAwCiAgICAgZm9yIGkgaW4gcmFuZ2UocmVwY291bnQpOgotICAgICAgICByY19iZWZvcmUgPSBzeXMuZ2V0dG90YWxyZWZjb3VudCgpCiAgICAgICAgIHJ1bl90aGVfdGVzdCgpCiAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoJy4nKQogICAgICAgICBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKQogICAgICAgICByY19hZnRlciA9IHN5cy5nZXR0b3RhbHJlZmNvdW50KCkKKyAgICAgICAgZmRfYWZ0ZXIgPSBzdXBwb3J0LmZkX2NvdW50KCkKICAgICAgICAgaWYgaSA+PSBud2FybXVwOgotICAgICAgICAgICAgZGVsdGFzLmFwcGVuZChyY19hZnRlciAtIHJjX2JlZm9yZSkKKyAgICAgICAgICAgIHJjX2RlbHRhc1tpIC0gbndhcm11cF0gPSByY19hZnRlciAtIHJjX2JlZm9yZQorICAgICAgICAgICAgZmRfZGVsdGFzW2kgLSBud2FybXVwXSA9IGZkX2FmdGVyIC0gZmRfYmVmb3JlCisgICAgICAgIHJjX2JlZm9yZSA9IHJjX2FmdGVyCisgICAgICAgIGZkX2JlZm9yZSA9IGZkX2FmdGVyCiAgICAgcHJpbnQgPj4gc3lzLnN0ZGVycgotICAgIGlmIGFueShkZWx0YXMpOgotICAgICAgICBtc2cgPSAnJXMgbGVha2VkICVzIHJlZmVyZW5jZXMsIHN1bT0lcycgJSAodGVzdCwgZGVsdGFzLCBzdW0oZGVsdGFzKSkKLSAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgbXNnCi0gICAgICAgIHdpdGggb3BlbihmbmFtZSwgImEiKSBhcyByZWZyZXA6Ci0gICAgICAgICAgICBwcmludCA+PiByZWZyZXAsIG1zZwotICAgICAgICAgICAgcmVmcmVwLmZsdXNoKCkKLSAgICAgICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4gRmFsc2UKKworICAgICMgVGhlc2UgY2hlY2tlcnMgcmV0dXJuIEZhbHNlIG9uIHN1Y2Nlc3MsIFRydWUgb24gZmFpbHVyZQorICAgIGRlZiBjaGVja19yY19kZWx0YXMoZGVsdGFzKToKKyAgICAgICAgIyBDaGVja2VyIGZvciByZWZlcmVuY2UgY291bnRlcnMgYW5kIG1lbW9tcnkgYmxvY2tzLgorICAgICAgICAjCisgICAgICAgICMgYnBvLTMwNzc2OiBUcnkgdG8gaWdub3JlIGZhbHNlIHBvc2l0aXZlczoKKyAgICAgICAgIworICAgICAgICAjICAgWzMsIDAsIDBdCisgICAgICAgICMgICBbMCwgMSwgMF0KKyAgICAgICAgIyAgIFs4LCAtOCwgMV0KKyAgICAgICAgIworICAgICAgICAjIEV4cGVjdGVkIGxlYWtzOgorICAgICAgICAjCisgICAgICAgICMgICBbNSwgNSwgNl0KKyAgICAgICAgIyAgIFsxMCwgMSwgMV0KKyAgICAgICAgcmV0dXJuIGFsbChkZWx0YSA+PSAxIGZvciBkZWx0YSBpbiBkZWx0YXMpCisKKyAgICBkZWYgY2hlY2tfZmRfZGVsdGFzKGRlbHRhcyk6CisgICAgICAgIHJldHVybiBhbnkoZGVsdGFzKQorCisgICAgZmFpbGVkID0gRmFsc2UKKyAgICBmb3IgZGVsdGFzLCBpdGVtX25hbWUsIGNoZWNrZXIgaW4gWworICAgICAgICAocmNfZGVsdGFzLCAncmVmZXJlbmNlcycsIGNoZWNrX3JjX2RlbHRhcyksCisgICAgICAgIChmZF9kZWx0YXMsICdmaWxlIGRlc2NyaXB0b3JzJywgY2hlY2tfZmRfZGVsdGFzKQorICAgIF06CisgICAgICAgIGlmIGNoZWNrZXIoZGVsdGFzKToKKyAgICAgICAgICAgIG1zZyA9ICclcyBsZWFrZWQgJXMgJXMsIHN1bT0lcycgJSAodGVzdCwgZGVsdGFzLCBpdGVtX25hbWUsIHN1bShkZWx0YXMpKQorICAgICAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgbXNnCisgICAgICAgICAgICB3aXRoIG9wZW4oZm5hbWUsICJhIikgYXMgcmVmcmVwOgorICAgICAgICAgICAgICAgIHByaW50ID4+IHJlZnJlcCwgbXNnCisgICAgICAgICAgICAgICAgcmVmcmVwLmZsdXNoKCkKKyAgICAgICAgICAgIGZhaWxlZCA9IFRydWUKKyAgICByZXR1cm4gZmFpbGVkCiAKIGRlZiBkYXNoX1JfY2xlYW51cChmcywgcHMsIHBpYywgemRjLCBhYmNzKToKICAgICBpbXBvcnQgZ2MsIGNvcHlfcmVnCkBAIC0xMjIyLDYgKzE2MzQsMTggQEAKICAgICAjIENvbGxlY3QgY3ljbGljIHRyYXNoLgogICAgIGdjLmNvbGxlY3QoKQogCitkZWYgd2FybV9jYWNoZXMoKToKKyAgICAiIiJDcmVhdGUgZXhwbGljaXRseSBpbnRlcm5hbCBzaW5nbGV0b25zIHdoaWNoIGFyZSBjcmVhdGVkIG9uIGRlbWFuZAorICAgIHRvIHByZXZlbnQgZmFsc2UgcG9zaXRpdmUgd2hlbiBodW50aW5nIHJlZmVyZW5jZSBsZWFrcy4iIiIKKyAgICAjIGNoYXIgY2FjaGUKKyAgICBmb3IgaSBpbiByYW5nZSgyNTYpOgorICAgICAgICBjaHIoaSkKKyAgICAjIHVuaWNvZGUgY2FjaGUKKyAgICBmb3IgaSBpbiByYW5nZSgyNTYpOgorICAgICAgICB1bmljaHIoaSkKKyAgICAjIGludCBjYWNoZQorICAgIGxpc3QocmFuZ2UoLTUsIDI1NykpCisKIGRlZiBmaW5kdGVzdGRpcihwYXRoPU5vbmUpOgogICAgIHJldHVybiBwYXRoIG9yIG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyCiAKQEAgLTEyMzksNyArMTY2Myw3IEBACiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuICIlZCAlc3MiICUgKG4sIHdvcmQpCiAKLWRlZiBwcmludGxpc3QoeCwgd2lkdGg9NzAsIGluZGVudD00KToKK2RlZiBwcmludGxpc3QoeCwgd2lkdGg9NzAsIGluZGVudD00LCBmaWxlPU5vbmUpOgogICAgICIiIlByaW50IHRoZSBlbGVtZW50cyBvZiBpdGVyYWJsZSB4IHRvIHN0ZG91dC4KIAogICAgIE9wdGlvbmFsIGFyZyB3aWR0aCAoZGVmYXVsdCA3MCkgaXMgdGhlIG1heGltdW0gbGluZSBsZW5ndGguCkBAIC0xMjUwLDggKzE2NzQsNDQgQEAKICAgICBmcm9tIHRleHR3cmFwIGltcG9ydCBmaWxsCiAgICAgYmxhbmtzID0gJyAnICogaW5kZW50CiAgICAgIyBQcmludCB0aGUgc29ydGVkIGxpc3Q6ICd4JyBtYXkgYmUgYSAnLS1yYW5kb20nIGxpc3Qgb3IgYSBzZXQoKQotICAgIHByaW50IGZpbGwoJyAnLmpvaW4oc3RyKGVsdCkgZm9yIGVsdCBpbiBzb3J0ZWQoeCkpLCB3aWR0aCwKLSAgICAgICAgICAgICAgIGluaXRpYWxfaW5kZW50PWJsYW5rcywgc3Vic2VxdWVudF9pbmRlbnQ9YmxhbmtzKQorICAgIHByaW50ID4+ZmlsZSwgZmlsbCgnICcuam9pbihzdHIoZWx0KSBmb3IgZWx0IGluIHNvcnRlZCh4KSksIHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICBpbml0aWFsX2luZGVudD1ibGFua3MsIHN1YnNlcXVlbnRfaW5kZW50PWJsYW5rcykKKworZGVmIGdldF9hYnNfbW9kdWxlKHRlc3RkaXIsIHRlc3QpOgorICAgIGlmIHRlc3Quc3RhcnRzd2l0aCgndGVzdC4nKSBvciB0ZXN0ZGlyOgorICAgICAgICByZXR1cm4gdGVzdAorICAgIGVsc2U6CisgICAgICAgICMgQWx3YXlzIGltcG9ydCBpdCBmcm9tIHRoZSB0ZXN0IHBhY2thZ2UKKyAgICAgICAgcmV0dXJuICd0ZXN0LicgKyB0ZXN0CisKK2RlZiBfbGlzdF9jYXNlcyhzdWl0ZSk6CisgICAgZm9yIHRlc3QgaW4gc3VpdGU6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodGVzdCwgdW5pdHRlc3QuVGVzdFN1aXRlKToKKyAgICAgICAgICAgIF9saXN0X2Nhc2VzKHRlc3QpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh0ZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICBpZiBzdXBwb3J0Lm1hdGNoX3Rlc3QodGVzdCk6CisgICAgICAgICAgICAgICAgcHJpbnQodGVzdC5pZCgpKQorCitkZWYgbGlzdF9jYXNlcyh0ZXN0ZGlyLCBzZWxlY3RlZCwgbWF0Y2hfdGVzdHMpOgorICAgIHN1cHBvcnQudmVyYm9zZSA9IEZhbHNlCisgICAgc3VwcG9ydC5zZXRfbWF0Y2hfdGVzdHMobWF0Y2hfdGVzdHMpCisKKyAgICBzYXZlX21vZHVsZXMgPSBzZXQoc3lzLm1vZHVsZXMpCisgICAgc2tpcHBlZCA9IFtdCisgICAgZm9yIHRlc3QgaW4gc2VsZWN0ZWQ6CisgICAgICAgIGFic3Rlc3QgPSBnZXRfYWJzX21vZHVsZSh0ZXN0ZGlyLCB0ZXN0KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdWl0ZSA9IHVuaXR0ZXN0LmRlZmF1bHRUZXN0TG9hZGVyLmxvYWRUZXN0c0Zyb21OYW1lKGFic3Rlc3QpCisgICAgICAgICAgICBfbGlzdF9jYXNlcyhzdWl0ZSkKKyAgICAgICAgZXhjZXB0IHVuaXR0ZXN0LlNraXBUZXN0OgorICAgICAgICAgICAgc2tpcHBlZC5hcHBlbmQodGVzdCkKKworICAgICAgICB1bmxvYWRfdGVzdF9tb2R1bGVzKHNhdmVfbW9kdWxlcykKKworICAgIGlmIHNraXBwZWQ6CisgICAgICAgIHByaW50ID4+c3lzLnN0ZGVycgorICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsIGNvdW50KGxlbihza2lwcGVkKSwgInRlc3QiKSwgInNraXBwZWQ6IgorICAgICAgICBwcmludGxpc3Qoc2tpcHBlZCwgZmlsZT1zeXMuc3RkZXJyKQogCiAjIE1hcCBzeXMucGxhdGZvcm0gdG8gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgYmFzZW5hbWVzIG9mIHRlc3RzCiAjIGV4cGVjdGVkIHRvIGJlIHNraXBwZWQgb24gdGhhdCBwbGF0Zm9ybS4KQEAgLTE2NDUsMTUgKzIxMDUsOSBAQAogICAgICAgICBhc3NlcnQgc2VsZi5pc3ZhbGlkKCkKICAgICAgICAgcmV0dXJuIHNlbGYuZXhwZWN0ZWQKIAotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICAjIGZpbmR0ZXN0ZGlyKCkgZ2V0cyB0aGUgZGlybmFtZSBvdXQgb2YgX19maWxlX18sIHNvIHdlIGhhdmUgdG8gbWFrZSBpdAotICAgICMgYWJzb2x1dGUgYmVmb3JlIGNoYW5naW5nIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4KLSAgICAjIEZvciBleGFtcGxlIF9fZmlsZV9fIG1heSBiZSByZWxhdGl2ZSB3aGVuIHJ1bm5pbmcgdHJhY2Ugb3IgcHJvZmlsZS4KLSAgICAjIFNlZSBpc3N1ZSAjOTMyMy4KLSAgICBfX2ZpbGVfXyA9IG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykKLQotICAgICMgc2FuaXR5IGNoZWNrCi0gICAgYXNzZXJ0IF9fZmlsZV9fID09IG9zLnBhdGguYWJzcGF0aChzeXMuYXJndlswXSkKK2RlZiBtYWluX2luX3RlbXBfY3dkKCk6CisgICAgIiIiUnVuIG1haW4oKSBpbiBhIHRlbXBvcmFyeSB3b3JraW5nIGRpcmVjdG9yeS4iIiIKKyAgICBnbG9iYWwgVEVNUERJUgogCiAgICAgIyBXaGVuIHRlc3RzIGFyZSBydW4gZnJvbSB0aGUgUHl0aG9uIGJ1aWxkIGRpcmVjdG9yeSwgaXQgaXMgYmVzdCBwcmFjdGljZQogICAgICMgdG8ga2VlcCB0aGUgdGVzdCBmaWxlcyBpbiBhIHN1YmZvbGRlci4gIEl0IGVhc2VzIHRoZSBjbGVhbnVwIG9mIGxlZnRvdmVyCkBAIC0xNjc0LDYgKzIxMjgsMTkgQEAKICAgICAjIFJ1biB0aGUgdGVzdHMgaW4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCB0ZW1wb3JhcnkgY2hhbmdlcyB0aGUgQ1dEIHRvIGEKICAgICAjIHRlbXBvcmFyeSBhbmQgd3JpdGFibGUgZGlyZWN0b3J5LiBJZiBpdCdzIG5vdCBwb3NzaWJsZSB0byBjcmVhdGUgb3IKICAgICAjIGNoYW5nZSB0aGUgQ1dELCB0aGUgb3JpZ2luYWwgQ1dEIHdpbGwgYmUgdXNlZC4gVGhlIG9yaWdpbmFsIENXRCBpcwotICAgICMgYXZhaWxhYmxlIGZyb20gdGVzdF9zdXBwb3J0LlNBVkVEQ1dELgotICAgIHdpdGggdGVzdF9zdXBwb3J0LnRlbXBfY3dkKFRFU1RDV0QsIHF1aWV0PVRydWUpOgorICAgICMgYXZhaWxhYmxlIGZyb20gc3VwcG9ydC5TQVZFRENXRC4KKyAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoVEVTVENXRCwgcXVpZXQ9VHJ1ZSk6CiAgICAgICAgIG1haW4oKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICMgZmluZHRlc3RkaXIoKSBnZXRzIHRoZSBkaXJuYW1lIG91dCBvZiBfX2ZpbGVfXywgc28gd2UgaGF2ZSB0byBtYWtlIGl0CisgICAgIyBhYnNvbHV0ZSBiZWZvcmUgY2hhbmdpbmcgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICMgRm9yIGV4YW1wbGUgX19maWxlX18gbWF5IGJlIHJlbGF0aXZlIHdoZW4gcnVubmluZyB0cmFjZSBvciBwcm9maWxlLgorICAgICMgU2VlIGlzc3VlICM5MzIzLgorICAgIGdsb2JhbCBfX2ZpbGVfXworICAgIF9fZmlsZV9fID0gb3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKQorCisgICAgIyBzYW5pdHkgY2hlY2sKKyAgICBhc3NlcnQgX19maWxlX18gPT0gb3MucGF0aC5hYnNwYXRoKHN5cy5hcmd2WzBdKQorCisgICAgbWFpbl9pbl90ZW1wX2N3ZCgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9yZXZvY2F0aW9uLmNybCBiL0xpYi90ZXN0L3Jldm9jYXRpb24uY3JsCmluZGV4IDZkODliMDguLjUzY2I0YjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Jldm9jYXRpb24uY3JsCisrKyBiL0xpYi90ZXN0L3Jldm9jYXRpb24uY3JsCkBAIC0xLDExICsxLDExIEBACiAtLS0tLUJFR0lOIFg1MDkgQ1JMLS0tLS0KIE1JSUJwakNCandJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCTk1Rc3dDUVlEVlFRR0V3SllXVEVtTUNRR0ExVUUKIENnd2RVSGwwYUc5dUlGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNGdRMEV4RmpBVUJnTlZCQU1NRFc5MWNpMWoKLVlTMXpaWEoyWlhJWERURXpNVEV5TVRFM01EZzBOMW9YRFRJek1Ea3pNREUzTURnME4xcWdEakFNTUFvR0ExVWQKLUZBUURBZ0VBTUEwR0NTcUdTSWIzRFFFQkJRVUFBNElCQVFDTkpYQzJtVkthdUVlTjNMbFEzWnRNNWdrSDNFeEgKLStpNGJtSmp0Sm40OTdXd3Z2b0llVWRybVZYZ0pRUjkzUnRWMzdoWndOMFNYTUxsTm1VWlBINHJIaGloYXl3NG0KLXVuQ3pWai9PaENDWTcvVFBqS3VKMU8vMFhoYUxCcEJWalFON1IvMXVqb1JLYlNpYS9DRDN2Y243RnF4enc3TEsKLWZTUkNLUkdUajFDWml1eHJwaHRGY2h3QUxYU2lGRHk5bXIyWktoSW1jeXExUHlkZmdFelU3OEFQcE9rTVFzSUMKLVVOSi9jZjNjOWVtemYrZFV0Y01FY2VqUTNteW5CbzRlSUdnMUVXNDJiejRxNGhTanpRbEtjQlYwbXV3NXFYaGMKLUhPeEgyaVRGaFE3U3J2VnVLL2RNMTRyWU00QjVtU1gzblJDMWtObVhwUzlqM3dKRGh1d21qSGVkCitZUzF6WlhKMlpYSVhEVEU0TURFeE9URTVNRGt3TmxvWERUSTNNVEV5T0RFNU1Ea3dObHFnRGpBTU1Bb0dBMVVkCitGQVFEQWdFQU1BMEdDU3FHU0liM0RRRUJCUVVBQTRJQkFRQllWekg4bjJMZHlKSi90OENwV2p6NjUyaFpKMHNZCitEZU5ZY3d1VFB6UjlDYlN3RXdOYmYwa1k5YmdXWEdmb1JEMlNubkNudU5OSlhPMk11WHR4ZjZxWXgyWmpoSm04CitxZ3hYczBCejRhZ1Jzd05NYnVtakhDbXFJdjF0ODh2YnJPMCtJdEVaREs3UkpWSU1CdFZKMFhZT0h2RC9JRy9pCit6cWExRmwzdUNUdlFiVEoyVHJxekplUC9WbDQwaE9EK1ZkQkJaSzNqMHI0QWtDS1UzdEFpSFlUR21IS2hQeHkxCitmOFlldCs0U1JNR3AxQmREZXpUSTFiSUNwU1poUko0Z2VXMFV6dUNablhQVzhJWnppb1VtZFVCQW1BTUhQV0ZyCitCMHNUVGMvbnRENGpIRzEvVDViMG9pRE1iWEliaDVJejlpUU5jWTBJYm90a0N3MzloK0s5MHdZNgogLS0tLS1FTkQgWDUwOSBDUkwtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weSBiL0xpYi90ZXN0L3NjcmlwdF9oZWxwZXIucHkKaW5kZXggNmJlNDdiZC4uOTllYzExNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc2NyaXB0X2hlbHBlci5weQorKysgYi9MaWIvdGVzdC9zY3JpcHRfaGVscGVyLnB5CkBAIC0xLDE3MCArMSBAQAotIyBDb21tb24gdXRpbGl0eSBmdW5jdGlvbnMgdXNlZCBieSB2YXJpb3VzIHNjcmlwdCBleGVjdXRpb24gdGVzdHMKLSMgIGUuZy4gdGVzdF9jbWRfbGluZSwgdGVzdF9jbWRfbGluZV9zY3JpcHQgYW5kIHRlc3RfcnVucHkKLQotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgcHlfY29tcGlsZQotaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBzaHV0aWwKLXRyeToKLSAgICBpbXBvcnQgemlwZmlsZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgICMgSWYgUHl0aG9uIGlzIGJ1aWxkIHdpdGhvdXQgVW5pY29kZSBzdXBwb3J0LCBpbXBvcnRpbmcgX2lvIHdpbGwKLSAgICAjIGZhaWwsIHdoaWNoLCBpbiB0dXJuLCBtZWFucyB0aGF0IHppcGZpbGUgY2Fubm90IGJlIGltcG9ydGVkCi0gICAgIyBNb3N0IG9mIHRoaXMgbW9kdWxlIGNhbiB0aGVuIHN0aWxsIGJlIHVzZWQuCi0gICAgcGFzcwotCi1mcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCBzdHJpcF9weXRob25fc3RkZXJyCi0KLSMgRXhlY3V0aW5nIHRoZSBpbnRlcnByZXRlciBpbiBhIHN1YnByb2Nlc3MKLWRlZiBfYXNzZXJ0X3B5dGhvbihleHBlY3RlZF9zdWNjZXNzLCAqYXJncywgKiplbnZfdmFycyk6Ci0gICAgY21kX2xpbmUgPSBbc3lzLmV4ZWN1dGFibGVdCi0gICAgaWYgbm90IGVudl92YXJzOgotICAgICAgICBjbWRfbGluZS5hcHBlbmQoJy1FJykKLSAgICBjbWRfbGluZS5leHRlbmQoYXJncykKLSAgICAjIE5lZWQgdG8gcHJlc2VydmUgdGhlIG9yaWdpbmFsIGVudmlyb25tZW50LCBmb3IgaW4tcGxhY2UgdGVzdGluZyBvZgotICAgICMgc2hhcmVkIGxpYnJhcnkgYnVpbGRzLgotICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCi0gICAgZW52LnVwZGF0ZShlbnZfdmFycykKLSAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWRfbGluZSwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudikKLSAgICB0cnk6Ci0gICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCi0gICAgZmluYWxseToKLSAgICAgICAgc3VicHJvY2Vzcy5fY2xlYW51cCgpCi0gICAgICAgIHAuc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgcC5zdGRlcnIuY2xvc2UoKQotICAgIHJjID0gcC5yZXR1cm5jb2RlCi0gICAgZXJyID0gIHN0cmlwX3B5dGhvbl9zdGRlcnIoZXJyKQotICAgIGlmIChyYyBhbmQgZXhwZWN0ZWRfc3VjY2Vzcykgb3IgKG5vdCByYyBhbmQgbm90IGV4cGVjdGVkX3N1Y2Nlc3MpOgotICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKLSAgICAgICAgICAgICJQcm9jZXNzIHJldHVybiBjb2RlIGlzICVkLCAiCi0gICAgICAgICAgICAic3RkZXJyIGZvbGxvd3M6XG4lcyIgJSAocmMsIGVyci5kZWNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpKSkKLSAgICByZXR1cm4gcmMsIG91dCwgZXJyCi0KLWRlZiBhc3NlcnRfcHl0aG9uX29rKCphcmdzLCAqKmVudl92YXJzKToKLSAgICAiIiIKLSAgICBBc3NlcnQgdGhhdCBydW5uaW5nIHRoZSBpbnRlcnByZXRlciB3aXRoIGBhcmdzYCBhbmQgb3B0aW9uYWwgZW52aXJvbm1lbnQKLSAgICB2YXJpYWJsZXMgYGVudl92YXJzYCBpcyBvayBhbmQgcmV0dXJuIGEgKHJldHVybiBjb2RlLCBzdGRvdXQsIHN0ZGVycikgdHVwbGUuCi0gICAgIiIiCi0gICAgcmV0dXJuIF9hc3NlcnRfcHl0aG9uKFRydWUsICphcmdzLCAqKmVudl92YXJzKQotCi1kZWYgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCphcmdzLCAqKmVudl92YXJzKToKLSAgICAiIiIKLSAgICBBc3NlcnQgdGhhdCBydW5uaW5nIHRoZSBpbnRlcnByZXRlciB3aXRoIGBhcmdzYCBhbmQgb3B0aW9uYWwgZW52aXJvbm1lbnQKLSAgICB2YXJpYWJsZXMgYGVudl92YXJzYCBmYWlscyBhbmQgcmV0dXJuIGEgKHJldHVybiBjb2RlLCBzdGRvdXQsIHN0ZGVycikgdHVwbGUuCi0gICAgIiIiCi0gICAgcmV0dXJuIF9hc3NlcnRfcHl0aG9uKEZhbHNlLCAqYXJncywgKiplbnZfdmFycykKLQotZGVmIHB5dGhvbl9leGl0X2NvZGUoKmFyZ3MpOgotICAgIGNtZF9saW5lID0gW3N5cy5leGVjdXRhYmxlLCAnLUUnXQotICAgIGNtZF9saW5lLmV4dGVuZChhcmdzKQotICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAndycpIGFzIGRldm51bGw6Ci0gICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNhbGwoY21kX2xpbmUsIHN0ZG91dD1kZXZudWxsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCi0KLWRlZiBzcGF3bl9weXRob24oKmFyZ3MsICoqa3dhcmdzKToKLSAgICBjbWRfbGluZSA9IFtzeXMuZXhlY3V0YWJsZSwgJy1FJ10KLSAgICBjbWRfbGluZS5leHRlbmQoYXJncykKLSAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3BlbihjbWRfbGluZSwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKLQotZGVmIGtpbGxfcHl0aG9uKHApOgotICAgIHAuc3RkaW4uY2xvc2UoKQotICAgIGRhdGEgPSBwLnN0ZG91dC5yZWFkKCkKLSAgICBwLnN0ZG91dC5jbG9zZSgpCi0gICAgIyB0cnkgdG8gY2xlYW51cCB0aGUgY2hpbGQgc28gd2UgZG9uJ3QgYXBwZWFyIHRvIGxlYWsgd2hlbiBydW5uaW5nCi0gICAgIyB3aXRoIHJlZ3J0ZXN0IC1SLgotICAgIHAud2FpdCgpCi0gICAgc3VicHJvY2Vzcy5fY2xlYW51cCgpCi0gICAgcmV0dXJuIGRhdGEKLQotZGVmIHJ1bl9weXRob24oKmFyZ3MsICoqa3dhcmdzKToKLSAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgIHAgPSBzcGF3bl9weXRob24oKmFyZ3MsICoqa3dhcmdzKQotICAgIGVsc2U6Ci0gICAgICAgIHAgPSBzcGF3bl9weXRob24oJy1PJywgKmFyZ3MsICoqa3dhcmdzKQotICAgIHN0ZG91dF9kYXRhID0ga2lsbF9weXRob24ocCkKLSAgICByZXR1cm4gcC53YWl0KCksIHN0ZG91dF9kYXRhCi0KLSMgU2NyaXB0IGNyZWF0aW9uIHV0aWxpdGllcwotQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLWRlZiB0ZW1wX2RpcigpOgotICAgIGRpcm5hbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKLSAgICBkaXJuYW1lID0gb3MucGF0aC5yZWFscGF0aChkaXJuYW1lKQotICAgIHRyeToKLSAgICAgICAgeWllbGQgZGlybmFtZQotICAgIGZpbmFsbHk6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoZGlybmFtZSkKLQotZGVmIG1ha2Vfc2NyaXB0KHNjcmlwdF9kaXIsIHNjcmlwdF9iYXNlbmFtZSwgc291cmNlKToKLSAgICBzY3JpcHRfZmlsZW5hbWUgPSBzY3JpcHRfYmFzZW5hbWUrb3MuZXh0c2VwKydweScKLSAgICBzY3JpcHRfbmFtZSA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCBzY3JpcHRfZmlsZW5hbWUpCi0gICAgc2NyaXB0X2ZpbGUgPSBvcGVuKHNjcmlwdF9uYW1lLCAndycpCi0gICAgc2NyaXB0X2ZpbGUud3JpdGUoc291cmNlKQotICAgIHNjcmlwdF9maWxlLmNsb3NlKCkKLSAgICByZXR1cm4gc2NyaXB0X25hbWUKLQotZGVmIGNvbXBpbGVfc2NyaXB0KHNjcmlwdF9uYW1lKToKLSAgICBweV9jb21waWxlLmNvbXBpbGUoc2NyaXB0X25hbWUsIGRvcmFpc2U9VHJ1ZSkKLSAgICBpZiBfX2RlYnVnX186Ci0gICAgICAgIGNvbXBpbGVkX25hbWUgPSBzY3JpcHRfbmFtZSArICdjJwotICAgIGVsc2U6Ci0gICAgICAgIGNvbXBpbGVkX25hbWUgPSBzY3JpcHRfbmFtZSArICdvJwotICAgIHJldHVybiBjb21waWxlZF9uYW1lCi0KLWRlZiBtYWtlX3ppcF9zY3JpcHQoemlwX2RpciwgemlwX2Jhc2VuYW1lLCBzY3JpcHRfbmFtZSwgbmFtZV9pbl96aXA9Tm9uZSk6Ci0gICAgemlwX2ZpbGVuYW1lID0gemlwX2Jhc2VuYW1lK29zLmV4dHNlcCsnemlwJwotICAgIHppcF9uYW1lID0gb3MucGF0aC5qb2luKHppcF9kaXIsIHppcF9maWxlbmFtZSkKLSAgICB6aXBfZmlsZSA9IHppcGZpbGUuWmlwRmlsZSh6aXBfbmFtZSwgJ3cnKQotICAgIGlmIG5hbWVfaW5femlwIGlzIE5vbmU6Ci0gICAgICAgIG5hbWVfaW5femlwID0gb3MucGF0aC5iYXNlbmFtZShzY3JpcHRfbmFtZSkKLSAgICB6aXBfZmlsZS53cml0ZShzY3JpcHRfbmFtZSwgbmFtZV9pbl96aXApCi0gICAgemlwX2ZpbGUuY2xvc2UoKQotICAgICNpZiB0ZXN0LnRlc3Rfc3VwcG9ydC52ZXJib3NlOgotICAgICMgICAgemlwX2ZpbGUgPSB6aXBmaWxlLlppcEZpbGUoemlwX25hbWUsICdyJykKLSAgICAjICAgIHByaW50ICdDb250ZW50cyBvZiAlcjonICUgemlwX25hbWUKLSAgICAjICAgIHppcF9maWxlLnByaW50ZGlyKCkKLSAgICAjICAgIHppcF9maWxlLmNsb3NlKCkKLSAgICByZXR1cm4gemlwX25hbWUsIG9zLnBhdGguam9pbih6aXBfbmFtZSwgbmFtZV9pbl96aXApCi0KLWRlZiBtYWtlX3BrZyhwa2dfZGlyLCBpbml0X3NvdXJjZT0nJyk6Ci0gICAgb3MubWtkaXIocGtnX2RpcikKLSAgICBtYWtlX3NjcmlwdChwa2dfZGlyLCAnX19pbml0X18nLCBpbml0X3NvdXJjZSkKLQotZGVmIG1ha2VfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCi0gICAgICAgICAgICAgICAgIHNvdXJjZSwgZGVwdGg9MSwgY29tcGlsZWQ9RmFsc2UpOgotICAgIHVubGluayA9IFtdCi0gICAgaW5pdF9uYW1lID0gbWFrZV9zY3JpcHQoemlwX2RpciwgJ19faW5pdF9fJywgJycpCi0gICAgdW5saW5rLmFwcGVuZChpbml0X25hbWUpCi0gICAgaW5pdF9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoaW5pdF9uYW1lKQotICAgIHNjcmlwdF9uYW1lID0gbWFrZV9zY3JpcHQoemlwX2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCi0gICAgdW5saW5rLmFwcGVuZChzY3JpcHRfbmFtZSkKLSAgICBpZiBjb21waWxlZDoKLSAgICAgICAgaW5pdF9uYW1lID0gY29tcGlsZV9zY3JpcHQoaW5pdF9uYW1lKQotICAgICAgICBzY3JpcHRfbmFtZSA9IGNvbXBpbGVfc2NyaXB0KHNjcmlwdF9uYW1lKQotICAgICAgICB1bmxpbmsuZXh0ZW5kKChpbml0X25hbWUsIHNjcmlwdF9uYW1lKSkKLSAgICBwa2dfbmFtZXMgPSBbb3Muc2VwLmpvaW4oW3BrZ19uYW1lXSppKSBmb3IgaSBpbiByYW5nZSgxLCBkZXB0aCsxKV0KLSAgICBzY3JpcHRfbmFtZV9pbl96aXAgPSBvcy5wYXRoLmpvaW4ocGtnX25hbWVzWy0xXSwgb3MucGF0aC5iYXNlbmFtZShzY3JpcHRfbmFtZSkpCi0gICAgemlwX2ZpbGVuYW1lID0gemlwX2Jhc2VuYW1lK29zLmV4dHNlcCsnemlwJwotICAgIHppcF9uYW1lID0gb3MucGF0aC5qb2luKHppcF9kaXIsIHppcF9maWxlbmFtZSkKLSAgICB6aXBfZmlsZSA9IHppcGZpbGUuWmlwRmlsZSh6aXBfbmFtZSwgJ3cnKQotICAgIGZvciBuYW1lIGluIHBrZ19uYW1lczoKLSAgICAgICAgaW5pdF9uYW1lX2luX3ppcCA9IG9zLnBhdGguam9pbihuYW1lLCBpbml0X2Jhc2VuYW1lKQotICAgICAgICB6aXBfZmlsZS53cml0ZShpbml0X25hbWUsIGluaXRfbmFtZV9pbl96aXApCi0gICAgemlwX2ZpbGUud3JpdGUoc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lX2luX3ppcCkKLSAgICB6aXBfZmlsZS5jbG9zZSgpCi0gICAgZm9yIG5hbWUgaW4gdW5saW5rOgotICAgICAgICBvcy51bmxpbmsobmFtZSkKLSAgICAjaWYgdGVzdC50ZXN0X3N1cHBvcnQudmVyYm9zZToKLSAgICAjICAgIHppcF9maWxlID0gemlwZmlsZS5aaXBGaWxlKHppcF9uYW1lLCAncicpCi0gICAgIyAgICBwcmludCAnQ29udGVudHMgb2YgJXI6JyAlIHppcF9uYW1lCi0gICAgIyAgICB6aXBfZmlsZS5wcmludGRpcigpCi0gICAgIyAgICB6aXBfZmlsZS5jbG9zZSgpCi0gICAgcmV0dXJuIHppcF9uYW1lLCBvcy5wYXRoLmpvaW4oemlwX25hbWUsIHNjcmlwdF9uYW1lX2luX3ppcCkKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NoYTI1Ni5wZW0gYi9MaWIvdGVzdC9zaGEyNTYucGVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2RiNGI4Li4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3NoYTI1Ni5wZW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMjggKzAsMCBAQAotIyBDZXJ0aWZpY2F0ZSBjaGFpbiBmb3IgaHR0cHM6Ly9zaGEyNTYudGJzLWludGVybmV0LmNvbQotIDAgczovQz1GUi9wb3N0YWxDb2RlPTE0MDAwL1NUPUNhbHZhZG9zL0w9Q0FFTi9zdHJlZXQ9MjIgcnVlIGRlIEJyZXRhZ25lL089VEJTIElOVEVSTkVUL09VPTAwMDIgNDQwNDQzODEwL09VPXNoYS0yNTYgcHJvZHVjdGlvbi9DTj1zaGEyNTYudGJzLWludGVybmV0LmNvbQotICAgaTovQz1GUi9TVD1DYWx2YWRvcy9MPUNhZW4vTz1UQlMgSU5URVJORVQvT1U9VGVybXMgYW5kIENvbmRpdGlvbnM6IGh0dHA6Ly93d3cudGJzLWludGVybmV0LmNvbS9DQS9yZXBvc2l0b3J5L09VPVRCUyBJTlRFUk5FVCBDQS9DTj1UQlMgWDUwOSBDQSBTR0MKLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJR1hEQ0NCVVNnQXdJQkFnSVJBS3BWbUhnZzluZkNvZEFWd2NQNHNpd3dEUVlKS29aSWh2Y05BUUVMQlFBdwotZ2NReEN6QUpCZ05WQkFZVEFrWlNNUkV3RHdZRFZRUUlFd2hEWVd4MllXUnZjekVOTUFzR0ExVUVCeE1FUTJGbAotYmpFVk1CTUdBMVVFQ2hNTVZFSlRJRWxPVkVWU1RrVlVNVWd3UmdZRFZRUUxFejlVWlhKdGN5QmhibVFnUTI5dQotWkdsMGFXOXVjem9nYUhSMGNEb3ZMM2QzZHk1MFluTXRhVzUwWlhKdVpYUXVZMjl0TDBOQkwzSmxjRzl6YVhSdgotY25reEdEQVdCZ05WQkFzVEQxUkNVeUJKVGxSRlVrNUZWQ0JEUVRFWU1CWUdBMVVFQXhNUFZFSlRJRmcxTURrZwotUTBFZ1UwZERNQjRYRFRFeU1ERXdOREF3TURBd01Gb1hEVEUwTURJeE56SXpOVGsxT1Zvd2djc3hDekFKQmdOVgotQkFZVEFrWlNNUTR3REFZRFZRUVJFd1V4TkRBd01ERVJNQThHQTFVRUNCTUlRMkZzZG1Ga2IzTXhEVEFMQmdOVgotQkFjVEJFTkJSVTR4R3pBWkJnTlZCQWtURWpJeUlISjFaU0JrWlNCQ2NtVjBZV2R1WlRFVk1CTUdBMVVFQ2hNTQotVkVKVElFbE9WRVZTVGtWVU1SY3dGUVlEVlFRTEV3NHdNREF5SURRME1EUTBNemd4TURFYk1Ca0dBMVVFQ3hNUwotYzJoaExUSTFOaUJ3Y205a2RXTjBhVzl1TVNBd0hnWURWUVFERXhkemFHRXlOVFl1ZEdKekxXbHVkR1Z5Ym1WMAotTG1OdmJUQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUtRSVgvemRKY3l4dHkwbQotUE0xWFFTb1NTaWZ1ZVMzQVZjZ3FNc2FJS1MvdStyWXpzdjRoUS9xQTZ2TG41bTUvZXdVY1pEajd6ZGk2ckJWZgotUGFWTlhKNllpbkxYMHRrYVc4VEVqZVZ1Wkc1eWtzR1psaEN0MUNKMUhvOVhMaUxhUDR1SjdNQ29OVW50cEorRQotTGZyT2Rnc0lqOTFrUG13akRKZXp0VmNRQ3ZLemhqVkpBL0t4ZEluYzBKdk9BVG43cnBhU21RSTVidklqdWZnbwotcVZzVFB3VkZ6dVVZVUxYQms3S3hSVDdNaUVxbmQ1SHZ2aU5oMDI4NVFDNDc4emwzdjBJMEZiNUVsNHlEM3A0OQotSXRoY1JueHpNS2MwVWhVNW9naTBTYk9OeUJmbS9tek9OVmZTeHBNK01seXZabUpxcmJ1dUxvRUR6SkQrdDhQVQoteFN1emdiY0NBd0VBQWFPQ0FqNHdnZ0k2TUI4R0ExVWRJd1FZTUJhQUZBZEVkb1dUS0x4L2JYalNDdXY2VEV2ZgotMllJZk1CMEdBMVVkRGdRV0JCVC9xVEdZZGFqK2Y2MWMySVJGTC9CMWVFc004REFPQmdOVkhROEJBZjhFQkFNQwotQmFBd0RBWURWUjBUQVFIL0JBSXdBREEwQmdOVkhTVUVMVEFyQmdnckJnRUZCUWNEQVFZSUt3WUJCUVVIQXdJRwotQ2lzR0FRUUJnamNLQXdNR0NXQ0dTQUdHK0VJRUFUQkxCZ05WSFNBRVJEQkNNRUFHQ2lzR0FRUUI1VGNDQkFFdwotTWpBd0JnZ3JCZ0VGQlFjQ0FSWWthSFIwY0hNNkx5OTNkM2N1ZEdKekxXbHVkR1Z5Ym1WMExtTnZiUzlEUVM5RAotVUZNME1HMEdBMVVkSHdSbU1HUXdNcUF3b0M2R0xHaDBkSEE2THk5amNtd3VkR0p6TFdsdWRHVnlibVYwTG1OdgotYlM5VVFsTllOVEE1UTBGVFIwTXVZM0pzTUM2Z0xLQXFoaWhvZEhSd09pOHZZM0pzTG5SaWN5MTROVEE1TG1OdgotYlM5VVFsTllOVEE1UTBGVFIwTXVZM0pzTUlHbUJnZ3JCZ0VGQlFjQkFRU0JtVENCbGpBNEJnZ3JCZ0VGQlFjdwotQW9Zc2FIUjBjRG92TDJOeWRDNTBZbk10YVc1MFpYSnVaWFF1WTI5dEwxUkNVMWcxTURsRFFWTkhReTVqY25RdwotTkFZSUt3WUJCUVVITUFLR0tHaDBkSEE2THk5amNuUXVkR0p6TFhnMU1Ea3VZMjl0TDFSQ1UxZzFNRGxEUVZOSAotUXk1amNuUXdKQVlJS3dZQkJRVUhNQUdHR0doMGRIQTZMeTl2WTNOd0xuUmljeTE0TlRBNUxtTnZiVEEvQmdOVgotSFJFRU9EQTJnaGR6YUdFeU5UWXVkR0p6TFdsdWRHVnlibVYwTG1OdmJZSWJkM2QzTG5Ob1lUSTFOaTUwWW5NdAotYVc1MFpYSnVaWFF1WTI5dE1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQTBwT3VMOFF2QWE1eWtzVGJHU2h6WAotQUJBcGFndW5VR29FeWR2NFlKVDFNWHk5dFRwN0RyV2FvelpTbHNxQnhyWUFYUDFkOXIyZnVLYkVuaVlIeGFRMAotVVlhZjFWU0lsRG8xeXVDOHdFN3d4YkhESXBRL0U1S0F5eGlhSjhvYnREaEZzdFdBUEFIK1VvR1hxMGtqMnRlTgotMjFzRlE1ZFhnQTk1bmxkdlZGc0ZoclJVTkI2eFhBY2FqMFZaRmh0dEkwWmZRWm1Rd0VJL1ArTjlKcjQwT0d1bgotYWErRG4wVE1lVUg0VTIwWW50ZkxidTJuRGNKY1lmeXVybSs4LzBUcjRIem5MbmVkWHU5cENQWWowVGFkZHJnVAotWE8wb0ZpeXk3cUdhWTYrcUtoNzF5RDY0WTN5Y0NKL0hSOVdtMzltalpZYzllell3VDRub1A2cjdMazhZTzcvcQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotIDEgczovQz1GUi9TVD1DYWx2YWRvcy9MPUNhZW4vTz1UQlMgSU5URVJORVQvT1U9VGVybXMgYW5kIENvbmRpdGlvbnM6IGh0dHA6Ly93d3cudGJzLWludGVybmV0LmNvbS9DQS9yZXBvc2l0b3J5L09VPVRCUyBJTlRFUk5FVCBDQS9DTj1UQlMgWDUwOSBDQSBTR0MKLSAgIGk6L0M9U0UvTz1BZGRUcnVzdCBBQi9PVT1BZGRUcnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yay9DTj1BZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290Ci0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUZWakNDQkQ2Z0F3SUJBZ0lRWHBEWjBFVEpNVjAyV1R4M0dUbmhoVEFOQmdrcWhraUc5dzBCQVFVRkFEQnYKLU1Rc3dDUVlEVlFRR0V3SlRSVEVVTUJJR0ExVUVDaE1MUVdSa1ZISjFjM1FnUVVJeEpqQWtCZ05WQkFzVEhVRmsKLVpGUnlkWE4wSUVWNGRHVnlibUZzSUZSVVVDQk9aWFIzYjNKck1TSXdJQVlEVlFRREV4bEJaR1JVY25WemRDQkYKLWVIUmxjbTVoYkNCRFFTQlNiMjkwTUI0WERUQTFNVEl3TVRBd01EQXdNRm9YRFRFNU1EWXlOREU1TURZek1Gb3cKLWdjUXhDekFKQmdOVkJBWVRBa1pTTVJFd0R3WURWUVFJRXdoRFlXeDJZV1J2Y3pFTk1Bc0dBMVVFQnhNRVEyRmwKLWJqRVZNQk1HQTFVRUNoTU1WRUpUSUVsT1ZFVlNUa1ZVTVVnd1JnWURWUVFMRXo5VVpYSnRjeUJoYm1RZ1EyOXUKLVpHbDBhVzl1Y3pvZ2FIUjBjRG92TDNkM2R5NTBZbk10YVc1MFpYSnVaWFF1WTI5dEwwTkJMM0psY0c5emFYUnYKLWNua3hHREFXQmdOVkJBc1REMVJDVXlCSlRsUkZVazVGVkNCRFFURVlNQllHQTFVRUF4TVBWRUpUSUZnMU1Ea2cKLVEwRWdVMGRETUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFzZ09rTzNmN3d6TjYKLXJPamc0NXRSNXZqQmZ6SzdxbVY5SUJ4Yi9RVzlFRVh4RytFN0ZOaFpxUUx0d0dCS29Tc0hUblFxVjc1d1dNazAKLTl0aW5XdmZ0QmtTcGo1c1RpLzhjYnpKZlV2VFNWWWgzUXh2NkFWVmpNTUgvcnVMakU2eSs0UG9hUHM4V29ZQVEKLXRzNVI0WjFnOGMvV25UZXBMc3QyeDAvV3Y3R211b1FpK2dYdkhVNllyQml1N1hrZVloemM5NVFkdmlXU0pSRGsKLW93aGI1SzQzcWhjdmpSbUJmTy9wYUdsQ2xpREdacDhtSHdySTIxbXdvYldwVmpUeFpSd1lPM2JkNCtUR2NJNEcKLUllNXdtSHdFOEY3U0sxdGdTcWJCYWNLakRhOTNqN3R4S2tmei9ZZDJuN1RHcU9YaUhQc0pwRzY1NXZyS3RuWGsKLTl2czF6b0RlSlFJREFRQUJvNElCbGpDQ0FaSXdIUVlEVlIwT0JCWUVGQWRFZG9XVEtMeC9iWGpTQ3V2NlRFdmYKLTJZSWZNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVNCZ05WSFJNQkFmOEVDREFHQVFIL0FnRUFNQ0FHQTFVZEpRUVoKLU1CY0dDaXNHQVFRQmdqY0tBd01HQ1dDR1NBR0crRUlFQVRBWUJnTlZIU0FFRVRBUE1BMEdDeXNHQVFRQmdPVTMKLUFnUUJNSHNHQTFVZEh3UjBNSEl3T0tBMm9EU0dNbWgwZEhBNkx5OWpjbXd1WTI5dGIyUnZZMkV1WTI5dEwwRmsKLVpGUnlkWE4wUlhoMFpYSnVZV3hEUVZKdmIzUXVZM0pzTURhZ05LQXloakJvZEhSd09pOHZZM0pzTG1OdmJXOWsKLWJ5NXVaWFF2UVdSa1ZISjFjM1JGZUhSbGNtNWhiRU5CVW05dmRDNWpjbXd3Z1lBR0NDc0dBUVVGQndFQkJIUXcKLWNqQTRCZ2dyQmdFRkJRY3dBb1lzYUhSMGNEb3ZMMk55ZEM1amIyMXZaRzlqWVM1amIyMHZRV1JrVkhKMWMzUlYKLVZFNVRSME5EUVM1amNuUXdOZ1lJS3dZQkJRVUhNQUtHS21oMGRIQTZMeTlqY25RdVkyOXRiMlJ2TG01bGRDOUIKLVpHUlVjblZ6ZEZWVVRsTkhRME5CTG1OeWREQVJCZ2xnaGtnQmh2aENBUUVFQkFNQ0FnUXdEUVlKS29aSWh2Y04KLUFRRUZCUUFEZ2dFQkFLMnpFenMramNJclZLOW9Ea2REWk52aHVCWVRkQ2ZweGZGcytPQXVqVzBiSWZKQXkyMzIKLWV1VnNuSm02dS8rT3JxS3VkRDJ0YWQyQmJlakxMWGhNWlZpYUNtSzdEOW5yWEh4NHRlNUVQOHJMMTlTVVZxTFkKLTFwVG52NWRoTmdFZ3ZBN241bEl6RFNZczd5UkxzcjdISnNZUHI2U2VZU3VaaXp5WDFTTno3b29KMzIvRjNYOTgKLVJCME1sYy9FME95T3JrUTkveTVJcm5wbmFTb3JhOENuVXJWNVhOT2cra3lDejllZEN5eDRENXdYWWN3WlBWV3oKLThhRHFxdUVTcmV6UHlqdGZpNFdSTzRzL1ZEM0hMWnZPeHpNcldBVllDREc5RnhhT2hGMFFHdXVHMUY3RjNHS1YKLXY2cHJOeUNsMDE2a1JsMmoxVVQrYTdnTGQ4ZkEyNUE0QzlFPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotIDIgczovQz1TRS9PPUFkZFRydXN0IEFCL09VPUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrL0NOPUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3QKLSAgIGk6L0M9VVMvU1Q9VVQvTD1TYWx0IExha2UgQ2l0eS9PPVRoZSBVU0VSVFJVU1QgTmV0d29yay9PVT1odHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20vQ049VVROIC0gREFUQUNvcnAgU0dDCi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUVaakNDQTA2Z0F3SUJBZ0lRVVNZS2t4emlmNXpEcFY5NTRIS3VnakFOQmdrcWhraUc5dzBCQVFVRkFEQ0IKLWt6RUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdUQWxWVU1SY3dGUVlEVlFRSEV3NVRZV3gwSUV4aGEyVWcKLVEybDBlVEVlTUJ3R0ExVUVDaE1WVkdobElGVlRSVkpVVWxWVFZDQk9aWFIzYjNKck1TRXdId1lEVlFRTEV4aG8KLWRIUndPaTh2ZDNkM0xuVnpaWEowY25WemRDNWpiMjB4R3pBWkJnTlZCQU1URWxWVVRpQXRJRVJCVkVGRGIzSncKLUlGTkhRekFlRncwd05UQTJNRGN3T0RBNU1UQmFGdzB4T1RBMk1qUXhPVEEyTXpCYU1HOHhDekFKQmdOVkJBWVQKLUFsTkZNUlF3RWdZRFZRUUtFd3RCWkdSVWNuVnpkQ0JCUWpFbU1DUUdBMVVFQ3hNZFFXUmtWSEoxYzNRZ1JYaDAKLVpYSnVZV3dnVkZSUUlFNWxkSGR2Y21zeElqQWdCZ05WQkFNVEdVRmtaRlJ5ZFhOMElFVjRkR1Z5Ym1Gc0lFTkIKLUlGSnZiM1F3Z2dFaU1BMEdDU3FHU0liM0RRRUJBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQzM5eG96NXZJQUJDMDUKLTRFNWI3Uis4YkEvTnRmb2p0czdlbXhFemw2UXBUSDJUbjcxS3ZKUHRBeHJqajgvbGJWQmExcGNwbEZxQXNFbDYKLTJ5NlYvYmpLdnpjNExSNCtrVUd0Y0ZiSDhFOC82REtlZE1ySWtGVHB4bDhQZUoyYVFEd09yR0dxWGhTUG5vZWgKLWFsRGMxNXBPcndXenBuR1VuSEd6VUdBS3h4T2RPQWVHQXFqcHFHa21HSkNyVExCUEk2czZUNFRZMzg2ZjRXbHYKLXU5ZEMxMnRFNU1ldDdtMUJYM0phY1FnM3MzbGxwRm1nbERmM0FDOE53cEp5MnRBNGN0c1VxRVhFWFNwOXQ3VFcKLXhPNnN6Uk5FdDhrcjNVTUFKZnBodVdscVdDTVJ0NmN6ajFaMVdmWE5LZGRHdHdvclpiYlRRbThWc3JoNysrL3AKLVhWUFZORm9uQWdNQkFBR2pnZGd3Z2RVd0h3WURWUjBqQkJnd0ZvQVVVekxSczg5Lyt1RHhvRjJGVHBMU25rVWQKLXRFOHdIUVlEVlIwT0JCWUVGSzI5bUhvMHRDYjMrc1FtVk84RHZlQWt5MVFhTUE0R0ExVWREd0VCL3dRRUF3SUIKLUJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CRUdDV0NHU0FHRytFSUJBUVFFQXdJQkFqQWdCZ05WSFNVRUdUQVgKLUJnb3JCZ0VFQVlJM0NnTURCZ2xnaGtnQmh2aENCQUV3UFFZRFZSMGZCRFl3TkRBeW9EQ2dMb1lzYUhSMGNEb3YKLUwyTnliQzUxYzJWeWRISjFjM1F1WTI5dEwxVlVUaTFFUVZSQlEyOXljRk5IUXk1amNtd3dEUVlKS29aSWh2Y04KLUFRRUZCUUFEZ2dFQkFNYnVVeGRvRkxKUkloNlFXQTJVL2IzeGNPV0dMY00yTVk5VVNFYm5MUWczdkd3S1lPRU8KLXJWRTA0QktUNmI2NHE3Z210T21XUFNpUHJtUUgvdUFCN01Yamtlc1lvUEYxZnRzSzVwK1IyNit1ZGQ4amtXamQKLUZ3QmFTLzlrYkhEckFSclFrTm5IcHRadDloUGsvN1hKMGg0cXk3RWxReVo0MlRDYlRnMGV2bW52MytyK0xiUE0KLStiRGR0UlRLa2RTeXRhWDdBUm1qUjNtZm5ZeVZoelQ0SHppUzJqYW1FZnByNjJ2cDNFVjRGVGtHMTAxQjVDSEkKLTNDK0gwYmUvU0dCMXBXTExKTjQ3WWFBcElLYSt4V3ljeE9rS2FTTHZrVHI2SnEvUlcwR25PdUw0T0FkQ3E4RmIKLStNNXR1ZzhFUHpJMHJOd0VLTmR3TUJRbUJzVGttNWpWejNnPQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQotIDMgczovQz1VUy9TVD1VVC9MPVNhbHQgTGFrZSBDaXR5L089VGhlIFVTRVJUUlVTVCBOZXR3b3JrL09VPWh0dHA6Ly93d3cudXNlcnRydXN0LmNvbS9DTj1VVE4gLSBEQVRBQ29ycCBTR0MKLSAgIGk6L0M9VVMvU1Q9VVQvTD1TYWx0IExha2UgQ2l0eS9PPVRoZSBVU0VSVFJVU1QgTmV0d29yay9PVT1odHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20vQ049VVROIC0gREFUQUNvcnAgU0dDCi0tLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUVYakNDQTBhZ0F3SUJBZ0lRUkw0TWkxQUFJYlFSMHlwb0JxbXRhVEFOQmdrcWhraUc5dzBCQVFVRkFEQ0IKLWt6RUxNQWtHQTFVRUJoTUNWVk14Q3pBSkJnTlZCQWdUQWxWVU1SY3dGUVlEVlFRSEV3NVRZV3gwSUV4aGEyVWcKLVEybDBlVEVlTUJ3R0ExVUVDaE1WVkdobElGVlRSVkpVVWxWVFZDQk9aWFIzYjNKck1TRXdId1lEVlFRTEV4aG8KLWRIUndPaTh2ZDNkM0xuVnpaWEowY25WemRDNWpiMjB4R3pBWkJnTlZCQU1URWxWVVRpQXRJRVJCVkVGRGIzSncKLUlGTkhRekFlRncwNU9UQTJNalF4T0RVM01qRmFGdzB4T1RBMk1qUXhPVEEyTXpCYU1JR1RNUXN3Q1FZRFZRUUcKLUV3SlZVekVMTUFrR0ExVUVDQk1DVlZReEZ6QVZCZ05WQkFjVERsTmhiSFFnVEdGclpTQkRhWFI1TVI0d0hBWUQKLVZRUUtFeFZVYUdVZ1ZWTkZVbFJTVlZOVUlFNWxkSGR2Y21zeElUQWZCZ05WQkFzVEdHaDBkSEE2THk5M2QzY3UKLWRYTmxjblJ5ZFhOMExtTnZiVEViTUJrR0ExVUVBeE1TVlZST0lDMGdSRUZVUVVOdmNuQWdVMGRETUlJQklqQU4KLUJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTMrNVlFS0lyYmxYRWpyOHVSZ25uNEFnUExpdDYKLUU1UWJ2ZmEyZ0k1bEJaTUFIcnl2NGcrT0dRMFNSK3lzcmFQNkxuRDQzbTc3VmtJVm5pNWM3eVBlSWJrRmRpY1oKLUQwL1d3NXkwdnBRWlkvS21FUXJyVTBpY3Z2SXBPeGJvR3FCTXBzbjBHRmxvd0hEeVV3REFYbENDcFZadk52bEsKLTRFU0dvRTFPMWtkdVNVckxaOWVteEFXNWpoNzAvUC9ONXpiZ25BVnNzak1pRmRDMDRNd1h3TExBOVA0eVB5a3EKLWxYdlk4cWRPRDFSOG9RMkFzd2tEd2Y5YzNWNmFQcnl1dkVlS2FxNXh5aCt4S3JoZlFnVUw3RVl3MFhJTHl1bFcKLWJmWHYzM2krWWJxeXBhNEVUTHlvckdrVmw3M3Y2N1NNdnpYNDFNUFJLQTVjT3A5d0dETWdkOFNpcndJREFRQUIKLW80R3JNSUdvTUFzR0ExVWREd1FFQXdJQnhqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUlQKLU10R3p6My82NFBHZ1hZVk9rdEtlUlIyMFR6QTlCZ05WSFI4RU5qQTBNREtnTUtBdWhpeG9kSFJ3T2k4dlkzSnMKLUxuVnpaWEowY25WemRDNWpiMjB2VlZST0xVUkJWRUZEYjNKd1UwZERMbU55YkRBcUJnTlZIU1VFSXpBaEJnZ3IKLUJnRUZCUWNEQVFZS0t3WUJCQUdDTndvREF3WUpZSVpJQVliNFFnUUJNQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUIKLUFRQW5OWmNBaW9zb3ZjWXpNQjRwL09MMzFaalVRTHRneXIrckZ5d0pObjlRK2tIY3JwWTZDaU0raVZuSm93ZnQKLUd6ZXQvSHkrVVVsYTNqb0tWQWdXUmNLWnNZZk5qR2pnYVFQcHhFNllzanVNRnJNT29BeVlVSnVUcVhBSnlDeWoKLWo5OEM1T0J4T3ZHMEkzS2dxZ0hmMzVnK0ZGQ2dNU2E5S09sYU1DWjErWHRnSEkzenpWQW1iUVFubXQvVkRVVkgKLUtXc3M1bmJacVNsOU10M0pOank5cmpYeEVaNGR1NUEvRWtkT2p0ZCtEMkp6SFZJbU9Cd1lTZjB3ZEpyRTVTSXYKLTJNQ043WkY2VEFDUGNuOWQydDBiaTBWcjU5MXBsNmpGVmt3UERQYWZlcEUzOXBlQzROMXhhZjkyUDJCTlBNLzMKLW1mbkdWL1RKVlRsNHVpeDV5YWFJSy9RSQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3NsX2NlcnQucGVtIGIvTGliL3Rlc3Qvc3NsX2NlcnQucGVtCmluZGV4IDQ3YTdkN2UuLmIxZGQzZjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NzbF9jZXJ0LnBlbQorKysgYi9MaWIvdGVzdC9zc2xfY2VydC5wZW0KQEAgLTEsMTUgKzEsMjAgQEAKIC0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJQ1ZEQ0NBYjJnQXdJQkFnSUpBTmZIT0JrWnI4Sk9NQTBHQ1NxR1NJYjNEUUVCQlFVQU1GOHhDekFKQmdOVgotQkFZVEFsaFpNUmN3RlFZRFZRUUhFdzVEWVhOMGJHVWdRVzUwYUhKaGVERWpNQ0VHQTFVRUNoTWFVSGwwYUc5dQotSUZOdlpuUjNZWEpsSUVadmRXNWtZWFJwYjI0eEVqQVFCZ05WQkFNVENXeHZZMkZzYUc5emREQWVGdzB4TURFdwotTURneU16QXhOVFphRncweU1ERXdNRFV5TXpBeE5UWmFNRjh4Q3pBSkJnTlZCQVlUQWxoWk1SY3dGUVlEVlFRSAotRXc1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDaE1hVUhsMGFHOXVJRk52Wm5SM1lYSmxJRVp2ZFc1awotWVhScGIyNHhFakFRQmdOVkJBTVRDV3h2WTJGc2FHOXpkRENCbnpBTkJna3Foa2lHOXcwQkFRRUZBQU9CalFBdwotZ1lrQ2dZRUEyMXZUNWlzcTdGNjhhbVl1dU5wU0ZsS0RQck1VQ2E0WVdZcVpSdDJPWisvM05LYVoyeEFpU3dyNwotNk1yUUY3MHQ1bkxiU1BwcUU1KzVWclM1OFNZK2cvc1hMaUZkNkFwbEgxd0pad2g3OERvZmJGWVhVZ2drdEZNdAotcFR5aVg4anRQNjZia2NQa0RBREEwODlSSTFUUVI2Q2ErbjdIRmE3YzFmYWJWVjZpM3prQ0F3RUFBYU1ZTUJZdwotRkFZRFZSMFJCQTB3QzRJSmJHOWpZV3hvYjNOME1BMEdDU3FHU0liM0RRRUJCUVVBQTRHQkFIUGN0UUJFUTR3ZAotQko2K0pjcElyYW9wTG44QkdoYmpOV2o0MG1tUnFXQi9OQVdGNk01bmU3S3BHQXU3dExlRzRoYjF6TGFsZEs4RwotbHh5MkdQU1JGNkxGUzQ4ZHBFajJIYk12Mm52djZ4eGFsRE1KOStEaWNXZ0FLVFE2YmNYMmozR1VrQ1IwZy9UMQotQ1JsTkJBQWx2aEt6TzdDbHBmOWwwWUtCRWZyYUpCeVgKK01JSURXVENDQWtHZ0F3SUJBZ0lKQVBtNkIyMWJhcjJiTUEwR0NTcUdTSWIzRFFFQkN3VUFNRjh4Q3pBSkJnTlYKK0JBWVRBbGhaTVJjd0ZRWURWUVFIREE1RFlYTjBiR1VnUVc1MGFISmhlREVqTUNFR0ExVUVDZ3dhVUhsMGFHOXUKK0lGTnZablIzWVhKbElFWnZkVzVrWVhScGIyNHhFakFRQmdOVkJBTU1DV3h2WTJGc2FHOXpkREFlRncweE9EQXgKK01Ua3hPVEE1TURaYUZ3MHlPREF4TVRjeE9UQTVNRFphTUY4eEN6QUpCZ05WQkFZVEFsaFpNUmN3RlFZRFZRUUgKK0RBNURZWE4wYkdVZ1FXNTBhSEpoZURFak1DRUdBMVVFQ2d3YVVIbDBhRzl1SUZOdlpuUjNZWEpsSUVadmRXNWsKK1lYUnBiMjR4RWpBUUJnTlZCQU1NQ1d4dlkyRnNhRzl6ZERDQ0FTSXdEUVlKS29aSWh2Y05BUUVCQlFBRGdnRVAKK0FEQ0NBUW9DZ2dFQkFLdnZzWDJnRXRpNHNodmUzaVlNYytqRTRTZTdXSHMxQm9sMmYyMUg4cU5ib0RPRmRlYjEKK1JLSGptcTNleEhwYWp5d09VRWduZTluS0hKWS8zZjJwaFI0WTVrbHFHNmxpTGdpU3BWeVJsY0JHYmVUMnFFQWoKKzlvTGlMRlVYTEdmR0RkczJtVHdpdlFETEpCV2k1MWo3ZmY1azJQcjU4Zk41dWdZTW4yNFQ5Rk55bjBtb1QrcWoKK1NGb0JObTU4bDlqcmRrSlNsZ1dmcVBsYmlNYSttcURuL1NGdHJ3TEYyVHJiZnp1NDJTZDlVZEl6TWFTU3J6Yk4KK3NHbTUzcE5oQ2g4S25kV1VROEdQUDJJc0xQb1VVNHFBdG1adVR4Q3gyUzFjWHJOOUVrbVQ2OXRsT0g4NFlmU24KKzk2SWg5YldSYzdNNXk1YmZWZEVWTStmS1FsM2hCUmYwNXFNQ0F3RUFBYU1ZTUJZd0ZBWURWUjBSQkEwd0M0SUoKK2JHOWpZV3hvYjNOME1BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQXRROGYzN2NDRWs3L3JBY2JZUjUzY2UzaUsKK1ZwaWhiMFUybmkxUWpHOVRnOVVJRXhrSUdrd1RpQ203a3dRTCtHRVN0QnU5QUcvUVZyT2plVHJpUmlkZGhXa2sKK3plOGtSYUkzQUMvNjN0NlZoOVExeDZQRVNnZUU0T3RBTzlKcEpDZjRHSUxnbEE3ODlZL2IvR0Y4ekpaUXhSMTMKK3FwQjRad1d3N2dDQmhkRVc1OXU2Q0ZlQm1mRGE1OGhNOGxXdnVWb1JyVGk3YmpVZUM2UEFuNUhWTXpaU3lraHUKKzRIYVVmQnA2YktGanV5bTIraC9Wdk0xbjhDM2NoalZTbXV0c0xiNkVMZEQ4SUswdlBWL3lmNStMTjI1NnpTc1MKK2R5VVpZZDhYd1FhaW9FTUtkYmhMdm5laHl6SGlXZlFJVVIzQmRoT054b0lKaEh2L0VBbzhlQ2tISFlJRgogLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3Qvc3NsX2tleS5wYXNzd2QucGVtIGIvTGliL3Rlc3Qvc3NsX2tleS5wYXNzd2QucGVtCmluZGV4IDI1MjQ2NzIuLjY2OWM3Y2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3NzbF9rZXkucGFzc3dkLnBlbQorKysgYi9MaWIvdGVzdC9zc2xfa2V5LnBhc3N3ZC5wZW0KQEAgLTEsMTggKzEsMzAgQEAKIC0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KIFByb2MtVHlwZTogNCxFTkNSWVBURUQKLURFSy1JbmZvOiBERVMtRURFMy1DQkMsMUE4RDlEMkEwMkVDNjk4QQorREVLLUluZm86IERFUy1FREUzLUNCQywyRDVERDMwQjlENDQwREJCCiAKLWtKWWJmWjhMMHNmZTlPdHkzZ3cwYWxvTm5ZNUU4ZmVnUmZRTFpsTm94VGw2ak50MG5Jd0k4a0RKMzZDWmdSOWMKLXUzRkRKbS9LcXJmVW96OHZXK3FFbldoU0c3UVBYMndXR1BIZDRLOTRZei9GZ3JSelowRG9LN1h4WHE5Z090VkEKLUFWR1FobnozMnArNldoZkdzQ3I5QXJYRXdSWnJUay9GdnpFUGFVNWZIY29Ta3JOVkFHWDhJcFNWa1NEd0VEUXIKLUd2MTcrY2ZrOTlVVjFPQ3phNnlLSG9Ga1R0ckMrUFpVNzFMb21CYWJpdlMyT2M0QjloWXVTUjJoRjAxd1RIUCsKLVlsV05hZ1pPT1Z0Tno0b0tLOXg5ZU5RcG1mUVhRdlBQVGZ1c2V4S0liS2Zack12Sm94Y20xZ2ZjWjBIL3dLNlAKLTZ3bVhTRzM1cU1PT3p0Q1pOdHBlcmpzMXd6RUJYem55SzhRbUxjQUpCamtmYXJBQkpYOXZCRXpaVjBPVUtoeSsKLW5vT1JGd0hUbGxwaGJteWRMaHU2ZWhMVVpNSFBoekFTNVVON3NydHBTTjgxZWVyRE15MFJNVUF3QTcvUG9mWDEKLTk0TWU4NVE4alAwUEM5RVRkc0pjUHFMekFQRVRFWXUwRUxld0tSY3JkeVdpK3RsTEZycEU1S1QvczVlY2JsOWwKLTdCNjFVNEtmZDFQSVhjL3NpSU5oVTNBM2JZSys4NDVZeVVBclVPbktmMWtFb3g3cDFScEQ3eUZxVlQwNGxSVG8KLWNpYk5LQVRCdXNYU3VCcnAyRzZHTnVoV0VPU2FmV0NLSlFBemdDWUlwNlpUVjJraGhNVUdwcGMvMkgzQ0Y2Y08KLXpYMEt0bFBWWkM3aExrQjZIVDhTeFlVd0YxenFXWTcrL1hQUGRjMzdNZUVaODdRM1V1WndxT1JMWStaMGhwZ3QKLUw1SlhCQ29rbFpoQ0FhTjJHcXdGTFh0R2lSU1JGR1k3eFhJaGJEVGxFNjVXdjFXR0dnRExNS0dFMWdPejN5QW8KLTJqakcxK3lBSEpVZEU2OVhURkhTcVNrdmFsb0ExVzAzTGRNWFo5VnVRSi95U1hDaWU2QUJBUT09CiswMWdJd3B5M1h4UEdzWTBQb0s1OXZBeGRMaGtWajNvZE8wWjFVTGFtVXpJdGU2VGhLTDFIcW5aaVVsWHBZS2ZLCitYcUhWVmVRMXhvdXhpRFJORkxKNENxQkc0SGJSdHFUa2wrc2ZhTlRWdmVMMThsT09NQVp5NlczZENHQW5XT1RaCitaMFJKeVpsUXh4ak5RTHVrbzR0SXZGa3JTaFhJZ2RpVkZqd0FoUlUwS1RVYjdVUTJ4ZkZBOVIwS2ZkZTMwcHp6Cit6U2piL09tWXFBSWhrZHZhZkdYdkp4elpBb3JRa1U5YWtEaCt1SjZjaHQ1Qi9SR1pzYktBQ1lEU3YyV1NWNXlXCityK2ZLVlljVHVwMzNyMEpqOGhBRDZmVlkxNUs4QkprbnBrRjlIZlNsWm5tbXIyV0RhZmZMb2tPT25DVi9JMWllCitXRDdFTkE3Sy8vNDhrbTVEM09naDJiMi8wSXd1empxOE12ZDhhUjM5TjluSU5iR1IrSE5UODVwYXdvbzFTMFc5CitwUVRVNFhUbXhmWGp0UjIyODdDNlhaeVEvdEJ3dk5ETUZQVmhseHNHT2RMWXdvVjVlL0wxdDFxSWZrVGxidXZkCitKYU16T2hTU0xqaUMxNTZJRm9IN1BUUGUrZzc1aHcyYjMyWEpVUkZHbGFZa25IRjdQNEJtQ2l3WE9RWW81Q0NvCitNUUdHbHc1cUJDcU9EcklzYzAzd3BMMmpVemd2eVBxTHlhdzM5NUlUdVNvR1grV083dlVRYUdXMFR6L3NPb1RzCiszcEsrYlRpMlFtcVpNZTd4Qk9qMDdDWU1NT280UVByTTZOcGJPYnQrSmphMlVYYXh2S2E5QndxQ0VRekE0cFFaCis4WkhIZkVXSWFEZmZLVEdrQWxxbStTOHFDdHNyRVpKaEluM2FJL2lreks4ditZa1d3NncrOHQvdFIxVjhFVC9zCitDb1lHSVI3SThXaGRmS0F3Z3gyUVQ1YnQxamtZS0p5S1BtNElhY3AybU5oOWdORlZxK0pTS0YzMThlN0JyUjMrCit3eXFNa0R4Ullub3YzeWJ0ZjZraUlDeFBSRURxYTZVRzF4UnEzU2JXejZObklGLzFob0hzNzlZbFNZYk1mWE5VCitmZkl4QmFYTkNjSDZqTTlkdVAyWVJuTzI5akx3ZkxNL21tb2tUQkJqeU9CYUtaaWE5R1BhNG5hWG9BVFhXM3orCitYeDRFS0lVa0tkYjUza2lWNk50RUtNUGlhbEFua2VvSFRFanlMUGdhVjhtQ0hMdkdRYm54Yll3dnBQSkgwZTJmCitDV2dpdzZjaTRST096Y1o3SEpISURVcHJ3SzB4UktuNDNob0k0NGZpdmxTSE9GWDZkYTZvM3dJcWhFVXFNS3dMCitKUURTMUdPUlJrMW5kUlhQKzdVYjFkTytWby9EcU8xVmNUcjJvNVJ3WjFMV1BuekxxYkNHNTBtdlRMSDRkakIrCisraGY2dmxtbkZDMzBOM3lVRlhXRTV2UzEwbkpIWVA4OGREOUNCMlJzYVd6cHhEOVp4bCtQS2NSc3BwZW42SHlPCit1M2I3MWEvVEJPa0pjSStsa09hdEVGdmJ1cXpCQXFoTWNlTWN0TytEbDU1UkZzYnhmSXcvSVhaamRQMFBZWjBDCit0MjBEcklkQnN2bDlGL21mWXBta1Y0REY3eWNpNzhEcW5SQmN4eWxWTkYydndYN28rMmZxL1RzRXdzSG4zS25UCitrdmNGNUNxOFZyNUM4dWdXWDhKZnZlTnltMEJqTHU2THI1OHFTNGE2cUNOR0VHUEZLeUIreGttNEtFU2NiYXJRCithTGJFYmZ1bE1NN3E5Ly9zRU9PTGV4SXg3bU5vTGQyOVh6bjVoc0xDQVpMV1g2d01xNkpWSi96YkJPQUhEYkJUCit5aGkwM3lkNUt2dzNzd1N0NFFaait1UjNxVEZ3eGtYVUZpVnZyU2Z4UlpveUtzeHNMcjlaN0Q4YW9IOVJrYjJMCis2S2paMzFudDlEcmg3TkpmaDZSZUFOQlc2SU5kRFcwWTJtYnpvRG96THN6QVlqVmZ1VVVFRTc2aUpxWFkwTjRXCitrTnIwT1FRVFV0RHBWazBBWlpadnkxN3hWK3JrcUdnd2xPcVR2SGJ3RllFUXZnd1Z6NEVLVXc9PQogLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3NzbF9rZXkucGVtIGIvTGliL3Rlc3Qvc3NsX2tleS5wZW0KaW5kZXggM2ZkM2JiZC4uYjYzZjM4YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3Qvc3NsX2tleS5wZW0KKysrIGIvTGliL3Rlc3Qvc3NsX2tleS5wZW0KQEAgLTEsMTYgKzEsMjggQEAKIC0tLS0tQkVHSU4gUFJJVkFURSBLRVktLS0tLQotTUlJQ2R3SUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NBbUV3Z2dKZEFnRUFBb0dCQU50YjArWXJLdXhldkdwbQotTHJqYVVoWlNnejZ6RkFtdUdGbUttVWJkam1mdjl6U21tZHNRSWtzSysrakswQmU5TGVaeTIwajZhaE9mdVZhMAotdWZFbVBvUDdGeTRoWGVnS1pSOWNDV2NJZS9BNkgyeFdGMUlJSkxSVExhVThvbC9JN1QrdW01SEQ1QXdBd05QUAotVVNOVTBFZWdtdnAreHhXdTNOWDJtMVZlb3Q4NUFnTUJBQUVDZ1lBM1pkWjY3M1gwb2V4RmxxN0FBbXJ1dGtIdAotQ0w3THZ3cnBPaWFCamh5VHhUZVNOV3p2dFFCa0lVOERPSTBiSWF6QTRVcmVBRmZmd3R2RXVQbW9uRGIzRitJcQotU01BdTQyWGNHeVZaRWwrZ0hsVFBVOVhSWDduVE9YVnQrTWxSUlJ4TDZ0OUdrR2ZVQVhJM1h4SkRYVzNjMHZCSwotVUw5eHFEOGNPUlhPZkUwNnJRSkJBUDhtRVgxRVJrUjY0UHRzb2U0MjgxdmpUbE5mSWJzN05NUGtVbnJuOU4vWQotQkxoak5JZlEzSEZaRzhCVE1MZlg3a0NTOUQ1OTNEVzV0VjRaOUJQL2M2Y0NRUURjRnpDY1ZBck5oMkpTeXdPUQotWmZUZlJiSmcvWjVMdDlGa25ndjFtZWVHTlBnSU1MTjhTZzY3OXBBT09XbXpkTU8zVjcwNnJOUHpTVk1NRTdFNQotb1BJZkFrRUE4cERkZGFyUDV0Q3ZUVGdVcG1URmJha20wS29UWm0yK0Z6SGNuQTRqUmgrWE5UalRPdjk4WTZJawotZU81ZDFabktYc2VXdmtabmNRZ3hmZG5NcXFwajV3SkFjTnEvUlZuZTFEYllsd1djaFQyU2k2NU1ZbW1KOHQrRgotMG1jc1VMcWpPbkVNd2Y1ZStwdHE1THp3YnlySFpZcTVGTms3b2N1ZlB2L1pRcmNTU0MrY0Z3SkJBS3ZPSkJ5UwoteDU2cXlHZVpMT1FsV1MySlMzS0pvNTlYdUxGR3FjYmdOOU9tOXhGYTQxWWI0TjlOdnBsRml2c3ZaZHczbTFRLwotU1BJWFF1VDhSTVBEVk5RPQorTUlJRXZRSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2N3Z2dTakFnRUFBb0lCQVFDcjc3RjlvQkxZdUxJYgorM3Q0bURIUG94T0VudTFoN05RYUpkbjl0Ui9Lalc2QXpoWFhtOVVTaDQ1cXQzc1I2V284c0RsQklKM3ZaeWh5VworUDkzOXFZVWVHT1pKYWh1cFlpNElrcVZja1pYQVJtM2s5cWhBSS9hQzRpeFZGeXhueGczYk5wazhJcjBBeXlRVgorb3VkWSszMytaTmo2K2ZIemVib0dESjl1RS9SVGNwOUpxRS9xbzBoYUFUWnVmSmZZNjNaQ1VwWUZuNmo1VzRqRwordnBxZzUvMGhiYThDeGRrNjIzODd1TmtuZlZIU016R2trcTgyemJCcHVkNlRZUW9mQ3AzVmxFUEJqejlpTEN6NgorRkZPS2dMWm1iazhRc2RrdFhGNnpmUkpKayt2YlpUaC9PR0gwcC9laUlmVzFrWE96T2N1VzMxWFJGVFBueWtKZAorNFFVWDlPYWpBZ01CQUFFQ2dnRUFIcHBtWERidXc5WjBGVlBnOUtMSXlzaW9UdHNnejZWTGlaSW04anVaSzR4MgorZ2xVaC9EN3h2V0wydURYcmdOKzNsaDdpR1VXMTNMa0Z4NVNNbmNiYm85VEl3STU3Wi9YS3ZjbmtWd3F1dmUrTAorUmZMRlZjMVE1bEQ5bFJPdjJyUzg2S1RhTjRMell6M0ZLWGk2ZHZNa3BQQXNVdGZFUWhNTGttSVN5cFFRcS8xegorRUphcW83cjg1T2pON2Uwd0themxLWnBPekpFYTVGUUxNVlJqVFJGaExGTmJIWFgvdEFldDJqdyt1bUFUS2J3OAoraFlnaXVaNDRUd1NFZDlKZUlWL29TWVdmSS8zSGV0dVlXMHJ1M2NhaXp0UkYyTnlTTnU4bGNzV2dOQzdmSWt1OQorbWNIanRTTnpzOTFRTjFRbHU3R1F2dmhwdDZPV0Rpck5EQ1crNDlXR2FRS0JnUURnOVNEaGZGMGpSWXNsZ1liSAorY3FPNGdnYUZkSGpyQUFZcHduQWd2YW5oRlpML3pFcW01RzFFN2wvZTJmQ2tKOVZPU0ZPMEEyMDhjaHZ3TWNyKworZENqSEUydFZkRTgxYVEydi9FbzgzVmRTMVJjT1Y0WTc1eVBINDhyTWh4UGFIdnhXRC9GRkRiZjAvUDJtdFBCNworU1oza0llWk1rRTF3eGRhTzNBS1ViUW9vendLQmdRRERxWWdnN2tWdHlneUlDRTFtQjhId3A2blV4RlRjekc3eQorNFhjc0RxTUlyS213K1BiUWx1dmtvSG9TdHhlVnJzVGxvRGhrVGpJcnBtWUx5QWlhemcrUFVKZGtkNnhyZkxTagorVlY2WDkzVzBTLzFlZ0ViMUYxQ0dGeHRrOHYvUFdINEs3NkVQTDJ2eFhkeGp5d3ozR1dsckw5eURZYUIyc3p6UworRHFnd1ZNcXg3UUtCZ0RDRDdVRjBCc295bDEzUlgzWG9QWEx2WitTa1IrZTJxNTJaOTRDNEpza0tWQmVpd1g3WQoreU5BUzhNNHBCb01BckRvajB4bUJtNjlybEticXRqTEdibnp3clRkU3pEcGltN2NXbkJRZ1VGTG03Z0FEMUVsYgorQWhaOEJDSzBCdzRGbkxvYTJoZmdhNG9FZmRmVU1nRUUwVzUvK1NFT0JnV0tSVW11SFVoUmM5MTFBb0dBWTJFTgorWW1TRFlTTTV3REl2VmI1azlCM0V0ZXZPaXFOUFN3L1huc29FWnRpRUMvNDRKblF4ZGx0SUJZOTNiREJyazVJUQorY21vQk00aDkxa2dRanNoUXdPTVhNaEZTd3ZtQkttQ20vaHJUYnZNVnl0VHV0WGZWRDNaWEZLd1Q0RFc3TjBURgorRWxoc3hCaC9ZelJ6N21HNjJKVmp0RnQyekROM2xkMlo4WXB2dFhVQ2dZRUE0RUo0T2JTNVl5dmNYQUtISkZvNgorRnhtYXZ5cmY4TFNtM01GQTY1dVNuRnZXdWtNVnFxUk1SZVFjNWp2cHhIS0NpcytYdm5IenlPZkwwZ1c5WlRpNwordFdHR2JCaTBUUkpDYThCa3ZnbmdVWnhPeFVsTWZnLzdjVnhPSUIwVFBvVVNneEZkLytxVno0R1pNdnIwZFB1NworZUFGN0ovOEVDVnZiMHdTUFRVSTFOM2M9CiAtLS0tLUVORCBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MaWIvdGVzdC9zdXBwb3J0L19faW5pdF9fLnB5IGIvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGEyNTk3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3Qvc3VwcG9ydC9fX2luaXRfXy5weQpAQCAtMCwwICsxLDIxNjEgQEAKKyIiIlN1cHBvcnRpbmcgZGVmaW5pdGlvbnMgZm9yIHRoZSBQeXRob24gcmVncmVzc2lvbiB0ZXN0cy4iIiIKKworaWYgX19uYW1lX18gIT0gJ3Rlc3Quc3VwcG9ydCc6CisgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ3Rlc3Quc3VwcG9ydCBtdXN0IGJlIGltcG9ydGVkIGZyb20gdGhlIHRlc3QgcGFja2FnZScpCisKK2ltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgZXJybm8KK2ltcG9ydCBmbm1hdGNoCitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgZ2MKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHNodXRpbAoraW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBVc2VyRGljdAoraW1wb3J0IHJlCitpbXBvcnQgdGltZQoraW1wb3J0IHN0cnVjdAoraW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHR5cGVzCisKK3RyeToKKyAgICBpbXBvcnQgdGhyZWFkCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgdGhyZWFkID0gTm9uZQorCitfX2FsbF9fID0gWyJFcnJvciIsICJUZXN0RmFpbGVkIiwgIlJlc291cmNlRGVuaWVkIiwgImltcG9ydF9tb2R1bGUiLAorICAgICAgICAgICAidmVyYm9zZSIsICJ1c2VfcmVzb3VyY2VzIiwgIm1heF9tZW11c2UiLCAicmVjb3JkX29yaWdpbmFsX3N0ZG91dCIsCisgICAgICAgICAgICJnZXRfb3JpZ2luYWxfc3Rkb3V0IiwgInVubG9hZCIsICJ1bmxpbmsiLCAicm10cmVlIiwgImZvcmdldCIsCisgICAgICAgICAgICJpc19yZXNvdXJjZV9lbmFibGVkIiwgInJlcXVpcmVzIiwgInJlcXVpcmVzX21hY192ZXIiLAorICAgICAgICAgICAiZmluZF91bnVzZWRfcG9ydCIsICJiaW5kX3BvcnQiLAorICAgICAgICAgICAiZmNtcCIsICJoYXZlX3VuaWNvZGUiLCAiaXNfanl0aG9uIiwgIlRFU1RGTiIsICJIT1NUIiwgIkZVWloiLAorICAgICAgICAgICAiU0FWRURDV0QiLCAidGVtcF9jd2QiLCAiZmluZGZpbGUiLCAic29ydGRpY3QiLCAiY2hlY2tfc3ludGF4X2Vycm9yIiwKKyAgICAgICAgICAgIm9wZW5fdXJscmVzb3VyY2UiLCAiY2hlY2tfd2FybmluZ3MiLCAiY2hlY2tfcHkza193YXJuaW5ncyIsCisgICAgICAgICAgICJDbGVhbkltcG9ydCIsICJFbnZpcm9ubWVudFZhckd1YXJkIiwgImNhcHR1cmVkX291dHB1dCIsCisgICAgICAgICAgICJjYXB0dXJlZF9zdGRvdXQiLCAiVHJhbnNpZW50UmVzb3VyY2UiLCAidHJhbnNpZW50X2ludGVybmV0IiwKKyAgICAgICAgICAgInJ1bl93aXRoX2xvY2FsZSIsICJzZXRfbWVtbGltaXQiLCAiYmlnbWVtdGVzdCIsICJiaWdhZGRyc3BhY2V0ZXN0IiwKKyAgICAgICAgICAgIkJhc2ljVGVzdFJ1bm5lciIsICJydW5fdW5pdHRlc3QiLCAicnVuX2RvY3Rlc3QiLCAidGhyZWFkaW5nX3NldHVwIiwKKyAgICAgICAgICAgInRocmVhZGluZ19jbGVhbnVwIiwgInJlYXBfdGhyZWFkcyIsICJzdGFydF90aHJlYWRzIiwgImNweXRob25fb25seSIsCisgICAgICAgICAgICJjaGVja19pbXBsX2RldGFpbCIsICJnZXRfYXR0cmlidXRlIiwgInB5M2tfYnl0ZXMiLAorICAgICAgICAgICAiaW1wb3J0X2ZyZXNoX21vZHVsZSIsICJ0aHJlYWRpbmdfY2xlYW51cCIsICJyZWFwX2NoaWxkcmVuIiwKKyAgICAgICAgICAgInN0cmlwX3B5dGhvbl9zdGRlcnIiLCAiSVBWNl9FTkFCTEVEIiwgInJ1bl93aXRoX3R6IiwKKyAgICAgICAgICAgIlN1cHByZXNzQ3Jhc2hSZXBvcnQiXQorCitjbGFzcyBFcnJvcihFeGNlcHRpb24pOgorICAgICIiIkJhc2UgY2xhc3MgZm9yIHJlZ3Jlc3Npb24gdGVzdCBleGNlcHRpb25zLiIiIgorCitjbGFzcyBUZXN0RmFpbGVkKEVycm9yKToKKyAgICAiIiJUZXN0IGZhaWxlZC4iIiIKKworY2xhc3MgUmVzb3VyY2VEZW5pZWQodW5pdHRlc3QuU2tpcFRlc3QpOgorICAgICIiIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIGl0IHJlcXVlc3RlZCBhIGRpc2FsbG93ZWQgcmVzb3VyY2UuCisKKyAgICBUaGlzIGlzIHJhaXNlZCB3aGVuIGEgdGVzdCBjYWxscyByZXF1aXJlcygpIGZvciBhIHJlc291cmNlIHRoYXQKKyAgICBoYXMgbm90IGJlZW4gZW5hYmxlZC4gIEl0IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBleHBlY3RlZAorICAgIGFuZCB1bmV4cGVjdGVkIHNraXBzLgorICAgICIiIgorCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIF9pZ25vcmVfZGVwcmVjYXRlZF9pbXBvcnRzKGlnbm9yZT1UcnVlKToKKyAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gc3VwcHJlc3MgcGFja2FnZSBhbmQgbW9kdWxlIGRlcHJlY2F0aW9uCisgICAgd2FybmluZ3Mgd2hlbiBpbXBvcnRpbmcgdGhlbS4KKworICAgIElmIGlnbm9yZSBpcyBGYWxzZSwgdGhpcyBjb250ZXh0IG1hbmFnZXIgaGFzIG5vIGVmZmVjdC4iIiIKKyAgICBpZiBpZ25vcmU6CisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCJpZ25vcmUiLCAiLisgKG1vZHVsZXxwYWNrYWdlKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICB5aWVsZAorICAgIGVsc2U6CisgICAgICAgIHlpZWxkCisKKworZGVmIGltcG9ydF9tb2R1bGUobmFtZSwgZGVwcmVjYXRlZD1GYWxzZSk6CisgICAgIiIiSW1wb3J0IGFuZCByZXR1cm4gdGhlIG1vZHVsZSB0byBiZSB0ZXN0ZWQsIHJhaXNpbmcgU2tpcFRlc3QgaWYKKyAgICBpdCBpcyBub3QgYXZhaWxhYmxlLgorCisgICAgSWYgZGVwcmVjYXRlZCBpcyBUcnVlLCBhbnkgbW9kdWxlIG9yIHBhY2thZ2UgZGVwcmVjYXRpb24gbWVzc2FnZXMKKyAgICB3aWxsIGJlIHN1cHByZXNzZWQuIiIiCisgICAgd2l0aCBfaWdub3JlX2RlcHJlY2F0ZWRfaW1wb3J0cyhkZXByZWNhdGVkKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciwgbXNnOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3Qoc3RyKG1zZykpCisKKworZGVmIF9zYXZlX2FuZF9yZW1vdmVfbW9kdWxlKG5hbWUsIG9yaWdfbW9kdWxlcyk6CisgICAgIiIiSGVscGVyIGZ1bmN0aW9uIHRvIHNhdmUgYW5kIHJlbW92ZSBhIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzCisKKyAgICAgICBSYWlzZSBJbXBvcnRFcnJvciBpZiB0aGUgbW9kdWxlIGNhbid0IGJlIGltcG9ydGVkLiIiIgorICAgICMgdHJ5IHRvIGltcG9ydCB0aGUgbW9kdWxlIGFuZCByYWlzZSBhbiBlcnJvciBpZiBpdCBjYW4ndCBiZSBpbXBvcnRlZAorICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgorICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCisgICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQorICAgIGZvciBtb2RuYW1lIGluIGxpc3Qoc3lzLm1vZHVsZXMpOgorICAgICAgICBpZiBtb2RuYW1lID09IG5hbWUgb3IgbW9kbmFtZS5zdGFydHN3aXRoKG5hbWUgKyAnLicpOgorICAgICAgICAgICAgb3JpZ19tb2R1bGVzW21vZG5hbWVdID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KKyAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1ttb2RuYW1lXQorCitkZWYgX3NhdmVfYW5kX2Jsb2NrX21vZHVsZShuYW1lLCBvcmlnX21vZHVsZXMpOgorICAgICIiIkhlbHBlciBmdW5jdGlvbiB0byBzYXZlIGFuZCBibG9jayBhIG1vZHVsZSBpbiBzeXMubW9kdWxlcworCisgICAgICAgUmV0dXJuIFRydWUgaWYgdGhlIG1vZHVsZSB3YXMgaW4gc3lzLm1vZHVsZXMsIEZhbHNlIG90aGVyd2lzZS4iIiIKKyAgICBzYXZlZCA9IFRydWUKKyAgICB0cnk6CisgICAgICAgIG9yaWdfbW9kdWxlc1tuYW1lXSA9IHN5cy5tb2R1bGVzW25hbWVdCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICBzYXZlZCA9IEZhbHNlCisgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBOb25lCisgICAgcmV0dXJuIHNhdmVkCisKKworZGVmIGltcG9ydF9mcmVzaF9tb2R1bGUobmFtZSwgZnJlc2g9KCksIGJsb2NrZWQ9KCksIGRlcHJlY2F0ZWQ9RmFsc2UpOgorICAgICIiIkltcG9ydHMgYW5kIHJldHVybnMgYSBtb2R1bGUsIGRlbGliZXJhdGVseSBieXBhc3NpbmcgdGhlIHN5cy5tb2R1bGVzIGNhY2hlCisgICAgYW5kIGltcG9ydGluZyBhIGZyZXNoIGNvcHkgb2YgdGhlIG1vZHVsZS4gT25jZSB0aGUgaW1wb3J0IGlzIGNvbXBsZXRlLAorICAgIHRoZSBzeXMubW9kdWxlcyBjYWNoZSBpcyByZXN0b3JlZCB0byBpdHMgb3JpZ2luYWwgc3RhdGUuCisKKyAgICBNb2R1bGVzIG5hbWVkIGluIGZyZXNoIGFyZSBhbHNvIGltcG9ydGVkIGFuZXcgaWYgbmVlZGVkIGJ5IHRoZSBpbXBvcnQuCisgICAgSWYgb25lIG9mIHRoZXNlIG1vZHVsZXMgY2FuJ3QgYmUgaW1wb3J0ZWQsIE5vbmUgaXMgcmV0dXJuZWQuCisKKyAgICBJbXBvcnRpbmcgb2YgbW9kdWxlcyBuYW1lZCBpbiBibG9ja2VkIGlzIHByZXZlbnRlZCB3aGlsZSB0aGUgZnJlc2ggaW1wb3J0CisgICAgdGFrZXMgcGxhY2UuCisKKyAgICBJZiBkZXByZWNhdGVkIGlzIFRydWUsIGFueSBtb2R1bGUgb3IgcGFja2FnZSBkZXByZWNhdGlvbiBtZXNzYWdlcworICAgIHdpbGwgYmUgc3VwcHJlc3NlZC4iIiIKKyAgICAjIE5PVEU6IHRlc3RfaGVhcHEsIHRlc3RfanNvbiwgYW5kIHRlc3Rfd2FybmluZ3MgaW5jbHVkZSBleHRyYSBzYW5pdHkKKyAgICAjIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGlzIHV0aWxpdHkgZnVuY3Rpb24gaXMgd29ya2luZyBhcyBleHBlY3RlZAorICAgIHdpdGggX2lnbm9yZV9kZXByZWNhdGVkX2ltcG9ydHMoZGVwcmVjYXRlZCk6CisgICAgICAgICMgS2VlcCB0cmFjayBvZiBtb2R1bGVzIHNhdmVkIGZvciBsYXRlciByZXN0b3JhdGlvbiBhcyB3ZWxsCisgICAgICAgICMgYXMgdGhvc2Ugd2hpY2gganVzdCBuZWVkIGEgYmxvY2tpbmcgZW50cnkgcmVtb3ZlZAorICAgICAgICBvcmlnX21vZHVsZXMgPSB7fQorICAgICAgICBuYW1lc190b19yZW1vdmUgPSBbXQorICAgICAgICBfc2F2ZV9hbmRfcmVtb3ZlX21vZHVsZShuYW1lLCBvcmlnX21vZHVsZXMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBmcmVzaF9uYW1lIGluIGZyZXNoOgorICAgICAgICAgICAgICAgIF9zYXZlX2FuZF9yZW1vdmVfbW9kdWxlKGZyZXNoX25hbWUsIG9yaWdfbW9kdWxlcykKKyAgICAgICAgICAgIGZvciBibG9ja2VkX25hbWUgaW4gYmxvY2tlZDoKKyAgICAgICAgICAgICAgICBpZiBub3QgX3NhdmVfYW5kX2Jsb2NrX21vZHVsZShibG9ja2VkX25hbWUsIG9yaWdfbW9kdWxlcyk6CisgICAgICAgICAgICAgICAgICAgIG5hbWVzX3RvX3JlbW92ZS5hcHBlbmQoYmxvY2tlZF9uYW1lKQorICAgICAgICAgICAgZnJlc2hfbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobmFtZSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgZnJlc2hfbW9kdWxlID0gTm9uZQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZm9yIG9yaWdfbmFtZSwgbW9kdWxlIGluIG9yaWdfbW9kdWxlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzW29yaWdfbmFtZV0gPSBtb2R1bGUKKyAgICAgICAgICAgIGZvciBuYW1lX3RvX3JlbW92ZSBpbiBuYW1lc190b19yZW1vdmU6CisgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVfdG9fcmVtb3ZlXQorICAgICAgICByZXR1cm4gZnJlc2hfbW9kdWxlCisKKworZGVmIGdldF9hdHRyaWJ1dGUob2JqLCBuYW1lKToKKyAgICAiIiJHZXQgYW4gYXR0cmlidXRlLCByYWlzaW5nIFNraXBUZXN0IGlmIEF0dHJpYnV0ZUVycm9yIGlzIHJhaXNlZC4iIiIKKyAgICB0cnk6CisgICAgICAgIGF0dHJpYnV0ZSA9IGdldGF0dHIob2JqLCBuYW1lKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLk1vZHVsZVR5cGUpOgorICAgICAgICAgICAgbXNnID0gIm1vZHVsZSAlciBoYXMgbm8gYXR0cmlidXRlICVyIiAlIChvYmouX19uYW1lX18sIG5hbWUpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIHR5cGVzLkNsYXNzVHlwZSk6CisgICAgICAgICAgICBtc2cgPSAiY2xhc3MgJXMgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSAob2JqLl9fbmFtZV9fLCBuYW1lKQorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uob2JqLCB0eXBlcy5JbnN0YW5jZVR5cGUpOgorICAgICAgICAgICAgbXNnID0gIiVzIGluc3RhbmNlIGhhcyBubyBhdHRyaWJ1dGUgJXIiICUgKG9iai5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShvYmosIHR5cGUpOgorICAgICAgICAgICAgbXNnID0gInR5cGUgb2JqZWN0ICVyIGhhcyBubyBhdHRyaWJ1dGUgJXIiICUgKG9iai5fX25hbWVfXywgbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICIlciBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSAodHlwZShvYmopLl9fbmFtZV9fLCBuYW1lKQorICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdChtc2cpCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZQorCisKK3ZlcmJvc2UgPSAxICAgICAgICAgICAgICAjIEZsYWcgc2V0IHRvIDAgYnkgcmVncnRlc3QucHkKK3VzZV9yZXNvdXJjZXMgPSBOb25lICAgICAjIEZsYWcgc2V0IHRvIFtdIGJ5IHJlZ3J0ZXN0LnB5CittYXhfbWVtdXNlID0gMCAgICAgICAgICAgIyBEaXNhYmxlIGJpZ21lbSB0ZXN0cyAodGhleSB3aWxsIHN0aWxsIGJlIHJ1biB3aXRoCisgICAgICAgICAgICAgICAgICAgICAgICAgIyBzbWFsbCBzaXplcywgdG8gbWFrZSBzdXJlIHRoZXkgd29yay4pCityZWFsX21heF9tZW11c2UgPSAwCitmYWlsZmFzdCA9IEZhbHNlCisKKyMgX29yaWdpbmFsX3N0ZG91dCBpcyBtZWFudCB0byBob2xkIHN0ZG91dCBhdCB0aGUgdGltZSByZWdydGVzdCBiZWdhbi4KKyMgVGhpcyBtYXkgYmUgInRoZSByZWFsIiBzdGRvdXQsIG9yIElETEUncyBlbXVsYXRpb24gb2Ygc3Rkb3V0LCBvciB3aGF0ZXZlci4KKyMgVGhlIHBvaW50IGlzIHRvIGhhdmUgc29tZSBmbGF2b3Igb2Ygc3Rkb3V0IHRoZSB1c2VyIGNhbiBhY3R1YWxseSBzZWUuCitfb3JpZ2luYWxfc3Rkb3V0ID0gTm9uZQorZGVmIHJlY29yZF9vcmlnaW5hbF9zdGRvdXQoc3Rkb3V0KToKKyAgICBnbG9iYWwgX29yaWdpbmFsX3N0ZG91dAorICAgIF9vcmlnaW5hbF9zdGRvdXQgPSBzdGRvdXQKKworZGVmIGdldF9vcmlnaW5hbF9zdGRvdXQoKToKKyAgICByZXR1cm4gX29yaWdpbmFsX3N0ZG91dCBvciBzeXMuc3Rkb3V0CisKK2RlZiB1bmxvYWQobmFtZSk6CisgICAgdHJ5OgorICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbmFtZV0KKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHBhc3MKKworZGVmIF9mb3JjZV9ydW4ocGF0aCwgZnVuYywgKmFyZ3MpOgorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCisgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3IgYXMgZXJyOgorICAgICAgICBpZiB2ZXJib3NlID49IDI6CisgICAgICAgICAgICBwcmludCgnJXM6ICVzJyAlIChlcnIuX19jbGFzc19fLl9fbmFtZV9fLCBlcnIpKQorICAgICAgICAgICAgcHJpbnQoJ3JlLXJ1biAlcyVyJyAlIChmdW5jLl9fbmFtZV9fLCBhcmdzKSkKKyAgICAgICAgb3MuY2htb2QocGF0aCwgc3RhdC5TX0lSV1hVKQorICAgICAgICByZXR1cm4gZnVuYygqYXJncykKKworaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpOgorICAgIGRlZiBfd2FpdGZvcihmdW5jLCBwYXRobmFtZSwgd2FpdGFsbD1GYWxzZSk6CisgICAgICAgICMgUGVyZm9ybSB0aGUgb3BlcmF0aW9uCisgICAgICAgIGZ1bmMocGF0aG5hbWUpCisgICAgICAgICMgTm93IHNldHVwIHRoZSB3YWl0IGxvb3AKKyAgICAgICAgaWYgd2FpdGFsbDoKKyAgICAgICAgICAgIGRpcm5hbWUgPSBwYXRobmFtZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGlybmFtZSwgbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aG5hbWUpCisgICAgICAgICAgICBkaXJuYW1lID0gZGlybmFtZSBvciAnLicKKyAgICAgICAgIyBDaGVjayBmb3IgYHBhdGhuYW1lYCB0byBiZSByZW1vdmVkIGZyb20gdGhlIGZpbGVzeXN0ZW0uCisgICAgICAgICMgVGhlIGV4cG9uZW50aWFsIGJhY2tvZmYgb2YgdGhlIHRpbWVvdXQgYW1vdW50cyB0byBhIHRvdGFsCisgICAgICAgICMgb2YgfjEgc2Vjb25kIGFmdGVyIHdoaWNoIHRoZSBkZWxldGlvbiBpcyBwcm9iYWJseSBhbiBlcnJvcgorICAgICAgICAjIGFueXdheS4KKyAgICAgICAgIyBUZXN0aW5nIG9uIGFuIGk3QDQuM0dIeiBzaG93cyB0aGF0IHVzdWFsbHkgb25seSAxIGl0ZXJhdGlvbiBpcworICAgICAgICAjIHJlcXVpcmVkIHdoZW4gY29udGVudGlvbiBvY2N1cnMuCisgICAgICAgIHRpbWVvdXQgPSAwLjAwMQorICAgICAgICB3aGlsZSB0aW1lb3V0IDwgMS4wOgorICAgICAgICAgICAgIyBOb3RlIHdlIGFyZSBvbmx5IHRlc3RpbmcgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGZpbGUocykgaW4KKyAgICAgICAgICAgICMgdGhlIGNvbnRlbnRzIG9mIHRoZSBkaXJlY3RvcnkgcmVnYXJkbGVzcyBvZiBhbnkgc2VjdXJpdHkgb3IKKyAgICAgICAgICAgICMgYWNjZXNzIHJpZ2h0cy4gIElmIHdlIGhhdmUgbWFkZSBpdCB0aGlzIGZhciwgd2UgaGF2ZSBzdWZmaWNpZW50CisgICAgICAgICAgICAjIHBlcm1pc3Npb25zIHRvIGRvIHRoYXQgbXVjaCB1c2luZyBQeXRob24ncyBlcXVpdmFsZW50IG9mIHRoZQorICAgICAgICAgICAgIyBXaW5kb3dzIEFQSSBGaW5kRmlyc3RGaWxlLgorICAgICAgICAgICAgIyBPdGhlciBXaW5kb3dzIEFQSXMgY2FuIGZhaWwgb3IgZ2l2ZSBpbmNvcnJlY3QgcmVzdWx0cyB3aGVuCisgICAgICAgICAgICAjIGRlYWxpbmcgd2l0aCBmaWxlcyB0aGF0IGFyZSBwZW5kaW5nIGRlbGV0aW9uLgorICAgICAgICAgICAgTCA9IG9zLmxpc3RkaXIoZGlybmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCAoTCBpZiB3YWl0YWxsIGVsc2UgbmFtZSBpbiBMKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICMgSW5jcmVhc2UgdGhlIHRpbWVvdXQgYW5kIHRyeSBhZ2FpbgorICAgICAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0KQorICAgICAgICAgICAgdGltZW91dCAqPSAyCisgICAgICAgIHdhcm5pbmdzLndhcm4oJ3Rlc3RzIG1heSBmYWlsLCBkZWxldGUgc3RpbGwgcGVuZGluZyBmb3IgJyArIHBhdGhuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nLCBzdGFja2xldmVsPTQpCisKKyAgICBkZWYgX3VubGluayhmaWxlbmFtZSk6CisgICAgICAgIF93YWl0Zm9yKG9zLnVubGluaywgZmlsZW5hbWUpCisKKyAgICBkZWYgX3JtZGlyKGRpcm5hbWUpOgorICAgICAgICBfd2FpdGZvcihvcy5ybWRpciwgZGlybmFtZSkKKworICAgIGRlZiBfcm10cmVlKHBhdGgpOgorICAgICAgICBkZWYgX3JtdHJlZV9pbm5lcihwYXRoKToKKyAgICAgICAgICAgIGZvciBuYW1lIGluIF9mb3JjZV9ydW4ocGF0aCwgb3MubGlzdGRpciwgcGF0aCk6CisgICAgICAgICAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKKyAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZ1bGxuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgX3dhaXRmb3IoX3JtdHJlZV9pbm5lciwgZnVsbG5hbWUsIHdhaXRhbGw9VHJ1ZSkKKyAgICAgICAgICAgICAgICAgICAgX2ZvcmNlX3J1bihmdWxsbmFtZSwgb3Mucm1kaXIsIGZ1bGxuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIF9mb3JjZV9ydW4oZnVsbG5hbWUsIG9zLnVubGluaywgZnVsbG5hbWUpCisgICAgICAgIF93YWl0Zm9yKF9ybXRyZWVfaW5uZXIsIHBhdGgsIHdhaXRhbGw9VHJ1ZSkKKyAgICAgICAgX3dhaXRmb3IobGFtYmRhIHA6IF9mb3JjZV9ydW4ocCwgb3Mucm1kaXIsIHApLCBwYXRoKQorZWxzZToKKyAgICBfdW5saW5rID0gb3MudW5saW5rCisgICAgX3JtZGlyID0gb3Mucm1kaXIKKworICAgIGRlZiBfcm10cmVlKHBhdGgpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgpCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIF9ybXRyZWVfaW5uZXIocGF0aCk6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiBfZm9yY2VfcnVuKHBhdGgsIG9zLmxpc3RkaXIsIHBhdGgpOgorICAgICAgICAgICAgICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHBhdGgsIG5hbWUpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBtb2RlID0gb3MubHN0YXQoZnVsbG5hbWUpLnN0X21vZGUKKyAgICAgICAgICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgbW9kZSA9IDAKKyAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNESVIobW9kZSk6CisgICAgICAgICAgICAgICAgICAgIF9ybXRyZWVfaW5uZXIoZnVsbG5hbWUpCisgICAgICAgICAgICAgICAgICAgIF9mb3JjZV9ydW4ocGF0aCwgb3Mucm1kaXIsIGZ1bGxuYW1lKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIF9mb3JjZV9ydW4ocGF0aCwgb3MudW5saW5rLCBmdWxsbmFtZSkKKyAgICAgICAgX3JtdHJlZV9pbm5lcihwYXRoKQorICAgICAgICBvcy5ybWRpcihwYXRoKQorCitkZWYgdW5saW5rKGZpbGVuYW1lKToKKyAgICB0cnk6CisgICAgICAgIF91bmxpbmsoZmlsZW5hbWUpCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICBpZiBleGMuZXJybm8gbm90IGluIChlcnJuby5FTk9FTlQsIGVycm5vLkVOT1RESVIpOgorICAgICAgICAgICAgcmFpc2UKKworZGVmIHJtZGlyKGRpcm5hbWUpOgorICAgIHRyeToKKyAgICAgICAgX3JtZGlyKGRpcm5hbWUpCisgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CisgICAgICAgICMgVGhlIGRpcmVjdG9yeSBuZWVkIG5vdCBleGlzdC4KKyAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRU5PRU5UOgorICAgICAgICAgICAgcmFpc2UKKworZGVmIHJtdHJlZShwYXRoKToKKyAgICB0cnk6CisgICAgICAgIF9ybXRyZWUocGF0aCkKKyAgICBleGNlcHQgT1NFcnJvciwgZToKKyAgICAgICAgIyBVbml4IHJldHVybnMgRU5PRU5ULCBXaW5kb3dzIHJldHVybnMgRVNSQ0guCisgICAgICAgIGlmIGUuZXJybm8gbm90IGluIChlcnJuby5FTk9FTlQsIGVycm5vLkVTUkNIKToKKyAgICAgICAgICAgIHJhaXNlCisKK2RlZiBmb3JnZXQobW9kbmFtZSk6CisgICAgJycnIkZvcmdldCIgYSBtb2R1bGUgd2FzIGV2ZXIgaW1wb3J0ZWQgYnkgcmVtb3ZpbmcgaXQgZnJvbSBzeXMubW9kdWxlcyBhbmQKKyAgICBkZWxldGluZyBhbnkgLnB5YyBhbmQgLnB5byBmaWxlcy4nJycKKyAgICB1bmxvYWQobW9kbmFtZSkKKyAgICBmb3IgZGlybmFtZSBpbiBzeXMucGF0aDoKKyAgICAgICAgdW5saW5rKG9zLnBhdGguam9pbihkaXJuYW1lLCBtb2RuYW1lICsgb3MuZXh0c2VwICsgJ3B5YycpKQorICAgICAgICAjIERlbGV0aW5nIHRoZSAucHlvIGZpbGUgY2Fubm90IGJlIHdpdGhpbiB0aGUgJ3RyeScgZm9yIHRoZSAucHljIHNpbmNlCisgICAgICAgICMgdGhlIGNoYW5jZSBleGlzdHMgdGhhdCB0aGVyZSBpcyBubyAucHljIChhbmQgdGh1cyB0aGUgJ3RyeScgc3RhdGVtZW50CisgICAgICAgICMgaXMgZXhpdGVkKSBidXQgdGhlcmUgaXMgYSAucHlvIGZpbGUuCisgICAgICAgIHVubGluayhvcy5wYXRoLmpvaW4oZGlybmFtZSwgbW9kbmFtZSArIG9zLmV4dHNlcCArICdweW8nKSkKKworIyBDaGVjayB3aGV0aGVyIGEgZ3VpIGlzIGFjdHVhbGx5IGF2YWlsYWJsZQorZGVmIF9pc19ndWlfYXZhaWxhYmxlKCk6CisgICAgaWYgaGFzYXR0cihfaXNfZ3VpX2F2YWlsYWJsZSwgJ3Jlc3VsdCcpOgorICAgICAgICByZXR1cm4gX2lzX2d1aV9hdmFpbGFibGUucmVzdWx0CisgICAgcmVhc29uID0gTm9uZQorICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgIyBpZiBQeXRob24gaXMgcnVubmluZyBhcyBhIHNlcnZpY2UgKHN1Y2ggYXMgdGhlIGJ1aWxkYm90IHNlcnZpY2UpLAorICAgICAgICAjIGd1aSBpbnRlcmFjdGlvbiBtYXkgYmUgZGlzYWxsb3dlZAorICAgICAgICBpbXBvcnQgY3R5cGVzCisgICAgICAgIGltcG9ydCBjdHlwZXMud2ludHlwZXMKKyAgICAgICAgVU9JX0ZMQUdTID0gMQorICAgICAgICBXU0ZfVklTSUJMRSA9IDB4MDAwMQorICAgICAgICBjbGFzcyBVU0VST0JKRUNURkxBR1MoY3R5cGVzLlN0cnVjdHVyZSk6CisgICAgICAgICAgICBfZmllbGRzXyA9IFsoImZJbmhlcml0IiwgY3R5cGVzLndpbnR5cGVzLkJPT0wpLAorICAgICAgICAgICAgICAgICAgICAgICAgKCJmUmVzZXJ2ZWQiLCBjdHlwZXMud2ludHlwZXMuQk9PTCksCisgICAgICAgICAgICAgICAgICAgICAgICAoImR3RmxhZ3MiLCBjdHlwZXMud2ludHlwZXMuRFdPUkQpXQorICAgICAgICBkbGwgPSBjdHlwZXMud2luZGxsLnVzZXIzMgorICAgICAgICBoID0gZGxsLkdldFByb2Nlc3NXaW5kb3dTdGF0aW9uKCkKKyAgICAgICAgaWYgbm90IGg6CisgICAgICAgICAgICByYWlzZSBjdHlwZXMuV2luRXJyb3IoKQorICAgICAgICB1b2YgPSBVU0VST0JKRUNURkxBR1MoKQorICAgICAgICBuZWVkZWQgPSBjdHlwZXMud2ludHlwZXMuRFdPUkQoKQorICAgICAgICByZXMgPSBkbGwuR2V0VXNlck9iamVjdEluZm9ybWF0aW9uVyhoLAorICAgICAgICAgICAgVU9JX0ZMQUdTLAorICAgICAgICAgICAgY3R5cGVzLmJ5cmVmKHVvZiksCisgICAgICAgICAgICBjdHlwZXMuc2l6ZW9mKHVvZiksCisgICAgICAgICAgICBjdHlwZXMuYnlyZWYobmVlZGVkKSkKKyAgICAgICAgaWYgbm90IHJlczoKKyAgICAgICAgICAgIHJhaXNlIGN0eXBlcy5XaW5FcnJvcigpCisgICAgICAgIGlmIG5vdCBib29sKHVvZi5kd0ZsYWdzICYgV1NGX1ZJU0lCTEUpOgorICAgICAgICAgICAgcmVhc29uID0gImd1aSBub3QgYXZhaWxhYmxlIChXU0ZfVklTSUJMRSBmbGFnIG5vdCBzZXQpIgorICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAjIFRoZSBBcXVhIFRrIGltcGxlbWVudGF0aW9ucyBvbiBPUyBYIGNhbiBhYm9ydCB0aGUgcHJvY2VzcyBpZgorICAgICAgICAjIGJlaW5nIGNhbGxlZCBpbiBhbiBlbnZpcm9ubWVudCB3aGVyZSBhIHdpbmRvdyBzZXJ2ZXIgY29ubmVjdGlvbgorICAgICAgICAjIGNhbm5vdCBiZSBtYWRlLCBmb3IgaW5zdGFuY2Ugd2hlbiBpbnZva2VkIGJ5IGEgYnVpbGRib3Qgb3Igc3NoCisgICAgICAgICMgcHJvY2VzcyBub3QgcnVubmluZyB1bmRlciB0aGUgc2FtZSB1c2VyIGlkIGFzIHRoZSBjdXJyZW50IGNvbnNvbGUKKyAgICAgICAgIyB1c2VyLiAgVG8gYXZvaWQgdGhhdCwgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSB3aW5kb3cgbWFuYWdlcgorICAgICAgICAjIGNvbm5lY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4KKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNkbGwsIGNfaW50LCBwb2ludGVyLCBTdHJ1Y3R1cmUKKyAgICAgICAgZnJvbSBjdHlwZXMudXRpbCBpbXBvcnQgZmluZF9saWJyYXJ5CisKKyAgICAgICAgYXBwX3NlcnZpY2VzID0gY2RsbC5Mb2FkTGlicmFyeShmaW5kX2xpYnJhcnkoIkFwcGxpY2F0aW9uU2VydmljZXMiKSkKKworICAgICAgICBpZiBhcHBfc2VydmljZXMuQ0dNYWluRGlzcGxheUlEKCkgPT0gMDoKKyAgICAgICAgICAgIHJlYXNvbiA9ICJndWkgdGVzdHMgY2Fubm90IHJ1biB3aXRob3V0IE9TIFggd2luZG93IG1hbmFnZXIiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjbGFzcyBQcm9jZXNzU2VyaWFsTnVtYmVyKFN0cnVjdHVyZSk6CisgICAgICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJoaWdoTG9uZ09mUFNOIiwgY19pbnQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibG93TG9uZ09mUFNOIiwgY19pbnQpXQorICAgICAgICAgICAgcHNuID0gUHJvY2Vzc1NlcmlhbE51bWJlcigpCisgICAgICAgICAgICBwc25fcCA9IHBvaW50ZXIocHNuKQorICAgICAgICAgICAgaWYgKCAgKGFwcF9zZXJ2aWNlcy5HZXRDdXJyZW50UHJvY2Vzcyhwc25fcCkgPCAwKSBvcgorICAgICAgICAgICAgICAgICAgKGFwcF9zZXJ2aWNlcy5TZXRGcm9udFByb2Nlc3MocHNuX3ApIDwgMCkgKToKKyAgICAgICAgICAgICAgICByZWFzb24gPSAiY2Fubm90IHJ1biB3aXRob3V0IE9TIFggZ3VpIHByb2Nlc3MiCisKKyAgICAjIGNoZWNrIG9uIGV2ZXJ5IHBsYXRmb3JtIHdoZXRoZXIgdGtpbnRlciBjYW4gYWN0dWFsbHkgZG8gYW55dGhpbmcKKyAgICBpZiBub3QgcmVhc29uOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmcm9tIFRraW50ZXIgaW1wb3J0IFRrCisgICAgICAgICAgICByb290ID0gVGsoKQorICAgICAgICAgICAgcm9vdC53aXRoZHJhdygpCisgICAgICAgICAgICByb290LnVwZGF0ZSgpCisgICAgICAgICAgICByb290LmRlc3Ryb3koKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBlcnJfc3RyaW5nID0gc3RyKGUpCisgICAgICAgICAgICBpZiBsZW4oZXJyX3N0cmluZykgPiA1MDoKKyAgICAgICAgICAgICAgICBlcnJfc3RyaW5nID0gZXJyX3N0cmluZ1s6NTBdICsgJyBbLi4uXScKKyAgICAgICAgICAgIHJlYXNvbiA9ICdUayB1bmF2YWlsYWJsZSBkdWUgdG8ge306IHt9Jy5mb3JtYXQodHlwZShlKS5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyX3N0cmluZykKKworICAgIF9pc19ndWlfYXZhaWxhYmxlLnJlYXNvbiA9IHJlYXNvbgorICAgIF9pc19ndWlfYXZhaWxhYmxlLnJlc3VsdCA9IG5vdCByZWFzb24KKworICAgIHJldHVybiBfaXNfZ3VpX2F2YWlsYWJsZS5yZXN1bHQKKworZGVmIGlzX3Jlc291cmNlX2VuYWJsZWQocmVzb3VyY2UpOgorICAgICIiIlRlc3Qgd2hldGhlciBhIHJlc291cmNlIGlzIGVuYWJsZWQuCisKKyAgICBLbm93biByZXNvdXJjZXMgYXJlIHNldCBieSByZWdydGVzdC5weS4gIElmIG5vdCBydW5uaW5nIHVuZGVyIHJlZ3J0ZXN0LnB5LAorICAgIGFsbCByZXNvdXJjZXMgYXJlIGFzc3VtZWQgZW5hYmxlZCB1bmxlc3MgdXNlX3Jlc291cmNlcyBoYXMgYmVlbiBzZXQuCisgICAgIiIiCisgICAgcmV0dXJuIHVzZV9yZXNvdXJjZXMgaXMgTm9uZSBvciByZXNvdXJjZSBpbiB1c2VfcmVzb3VyY2VzCisKK2RlZiByZXF1aXJlcyhyZXNvdXJjZSwgbXNnPU5vbmUpOgorICAgICIiIlJhaXNlIFJlc291cmNlRGVuaWVkIGlmIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UgaXMgbm90IGF2YWlsYWJsZS4iIiIKKyAgICBpZiBub3QgaXNfcmVzb3VyY2VfZW5hYmxlZChyZXNvdXJjZSk6CisgICAgICAgIGlmIG1zZyBpcyBOb25lOgorICAgICAgICAgICAgbXNnID0gIlVzZSBvZiB0aGUgYCVzJyByZXNvdXJjZSBub3QgZW5hYmxlZCIgJSByZXNvdXJjZQorICAgICAgICByYWlzZSBSZXNvdXJjZURlbmllZChtc2cpCisgICAgaWYgcmVzb3VyY2UgPT0gJ2d1aScgYW5kIG5vdCBfaXNfZ3VpX2F2YWlsYWJsZSgpOgorICAgICAgICByYWlzZSBSZXNvdXJjZURlbmllZChfaXNfZ3VpX2F2YWlsYWJsZS5yZWFzb24pCisKK2RlZiByZXF1aXJlc19tYWNfdmVyKCptaW5fdmVyc2lvbik6CisgICAgIiIiRGVjb3JhdG9yIHJhaXNpbmcgU2tpcFRlc3QgaWYgdGhlIE9TIGlzIE1hYyBPUyBYIGFuZCB0aGUgT1MgWAorICAgIHZlcnNpb24gaWYgbGVzcyB0aGFuIG1pbl92ZXJzaW9uLgorCisgICAgRm9yIGV4YW1wbGUsIEByZXF1aXJlc19tYWNfdmVyKDEwLCA1KSByYWlzZXMgU2tpcFRlc3QgaWYgdGhlIE9TIFggdmVyc2lvbgorICAgIGlzIGxlc3NlciB0aGFuIDEwLjUuCisgICAgIiIiCisgICAgZGVmIGRlY29yYXRvcihmdW5jKToKKyAgICAgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQorICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprdyk6CisgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICAgICAgdmVyc2lvbl90eHQgPSBwbGF0Zm9ybS5tYWNfdmVyKClbMF0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3R4dC5zcGxpdCgnLicpKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGlmIHZlcnNpb24gPCBtaW5fdmVyc2lvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uX3R4dCA9ICcuJy5qb2luKG1hcChzdHIsIG1pbl92ZXJzaW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWMgT1MgWCAlcyBvciBoaWdoZXIgcmVxdWlyZWQsIG5vdCAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChtaW5fdmVyc2lvbl90eHQsIHZlcnNpb25fdHh0KSkKKyAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3KQorICAgICAgICB3cmFwcGVyLm1pbl92ZXJzaW9uID0gbWluX3ZlcnNpb24KKyAgICAgICAgcmV0dXJuIHdyYXBwZXIKKyAgICByZXR1cm4gZGVjb3JhdG9yCisKKworIyBEb24ndCB1c2UgImxvY2FsaG9zdCIsIHNpbmNlIHJlc29sdmluZyBpdCB1c2VzIHRoZSBETlMgdW5kZXIgcmVjZW50CisjIFdpbmRvd3MgdmVyc2lvbnMgKHNlZSBpc3N1ZSAjMTg3OTIpLgorSE9TVCA9ICIxMjcuMC4wLjEiCitIT1NUdjYgPSAiOjoxIgorCisKK2RlZiBmaW5kX3VudXNlZF9wb3J0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgc29ja3R5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKToKKyAgICAiIiJSZXR1cm5zIGFuIHVudXNlZCBwb3J0IHRoYXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBiaW5kaW5nLiAgVGhpcyBpcworICAgIGFjaGlldmVkIGJ5IGNyZWF0aW5nIGEgdGVtcG9yYXJ5IHNvY2tldCB3aXRoIHRoZSBzYW1lIGZhbWlseSBhbmQgdHlwZSBhcworICAgIHRoZSAnc29jaycgcGFyYW1ldGVyIChkZWZhdWx0IGlzIEFGX0lORVQsIFNPQ0tfU1RSRUFNKSwgYW5kIGJpbmRpbmcgaXQgdG8KKyAgICB0aGUgc3BlY2lmaWVkIGhvc3QgYWRkcmVzcyAoZGVmYXVsdHMgdG8gMC4wLjAuMCkgd2l0aCB0aGUgcG9ydCBzZXQgdG8gMCwKKyAgICBlbGljaXRpbmcgYW4gdW51c2VkIGVwaGVtZXJhbCBwb3J0IGZyb20gdGhlIE9TLiAgVGhlIHRlbXBvcmFyeSBzb2NrZXQgaXMKKyAgICB0aGVuIGNsb3NlZCBhbmQgZGVsZXRlZCwgYW5kIHRoZSBlcGhlbWVyYWwgcG9ydCBpcyByZXR1cm5lZC4KKworICAgIEVpdGhlciB0aGlzIG1ldGhvZCBvciBiaW5kX3BvcnQoKSBzaG91bGQgYmUgdXNlZCBmb3IgYW55IHRlc3RzIHdoZXJlIGEKKyAgICBzZXJ2ZXIgc29ja2V0IG5lZWRzIHRvIGJlIGJvdW5kIHRvIGEgcGFydGljdWxhciBwb3J0IGZvciB0aGUgZHVyYXRpb24gb2YKKyAgICB0aGUgdGVzdC4gIFdoaWNoIG9uZSB0byB1c2UgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjYWxsaW5nIGNvZGUgaXMgY3JlYXRpbmcKKyAgICBhIHB5dGhvbiBzb2NrZXQsIG9yIGlmIGFuIHVudXNlZCBwb3J0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIGEgY29uc3RydWN0b3IKKyAgICBvciBwYXNzZWQgdG8gYW4gZXh0ZXJuYWwgcHJvZ3JhbSAoaS5lLiB0aGUgLWFjY2VwdCBhcmd1bWVudCB0byBvcGVuc3NsJ3MKKyAgICBzX3NlcnZlciBtb2RlKS4gIEFsd2F5cyBwcmVmZXIgYmluZF9wb3J0KCkgb3ZlciBmaW5kX3VudXNlZF9wb3J0KCkgd2hlcmUKKyAgICBwb3NzaWJsZS4gIEhhcmQgY29kZWQgcG9ydHMgc2hvdWxkICpORVZFUiogYmUgdXNlZC4gIEFzIHNvb24gYXMgYSBzZXJ2ZXIKKyAgICBzb2NrZXQgaXMgYm91bmQgdG8gYSBoYXJkIGNvZGVkIHBvcnQsIHRoZSBhYmlsaXR5IHRvIHJ1biBtdWx0aXBsZSBpbnN0YW5jZXMKKyAgICBvZiB0aGUgdGVzdCBzaW11bHRhbmVvdXNseSBvbiB0aGUgc2FtZSBob3N0IGlzIGNvbXByb21pc2VkLCB3aGljaCBtYWtlcyB0aGUKKyAgICB0ZXN0IGEgdGlja2luZyB0aW1lIGJvbWIgaW4gYSBidWlsZGJvdCBlbnZpcm9ubWVudC4gT24gVW5peCBidWlsZGJvdHMsIHRoaXMKKyAgICBtYXkgc2ltcGx5IG1hbmlmZXN0IGFzIGEgZmFpbGVkIHRlc3QsIHdoaWNoIGNhbiBiZSByZWNvdmVyZWQgZnJvbSB3aXRob3V0CisgICAgaW50ZXJ2ZW50aW9uIGluIG1vc3QgY2FzZXMsIGJ1dCBvbiBXaW5kb3dzLCB0aGUgZW50aXJlIHB5dGhvbiBwcm9jZXNzIGNhbgorICAgIGNvbXBsZXRlbHkgYW5kIHV0dGVybHkgd2VkZ2UsIHJlcXVpcmluZyBzb21lb25lIHRvIGxvZyBpbiB0byB0aGUgYnVpbGRib3QKKyAgICBhbmQgbWFudWFsbHkga2lsbCB0aGUgYWZmZWN0ZWQgcHJvY2Vzcy4KKworICAgIChUaGlzIGlzIGVhc3kgdG8gcmVwcm9kdWNlIG9uIFdpbmRvd3MsIHVuZm9ydHVuYXRlbHksIGFuZCBjYW4gYmUgdHJhY2VkIHRvCisgICAgdGhlIFNPX1JFVVNFQUREUiBzb2NrZXQgb3B0aW9uIGhhdmluZyBkaWZmZXJlbnQgc2VtYW50aWNzIG9uIFdpbmRvd3MgdmVyc3VzCisgICAgVW5peC9MaW51eC4gIE9uIFVuaXgsIHlvdSBjYW4ndCBoYXZlIHR3byBBRl9JTkVUIFNPQ0tfU1RSRUFNIHNvY2tldHMgYmluZCwKKyAgICBsaXN0ZW4gYW5kIHRoZW4gYWNjZXB0IGNvbm5lY3Rpb25zIG9uIGlkZW50aWNhbCBob3N0L3BvcnRzLiAgQW4gRUFERFJJTlVTRQorICAgIHNvY2tldC5lcnJvciB3aWxsIGJlIHJhaXNlZCBhdCBzb21lIHBvaW50IChkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIGFuZAorICAgIHRoZSBvcmRlciBiaW5kIGFuZCBsaXN0ZW4gd2VyZSBjYWxsZWQgb24gZWFjaCBzb2NrZXQpLgorCisgICAgSG93ZXZlciwgb24gV2luZG93cywgaWYgU09fUkVVU0VBRERSIGlzIHNldCBvbiB0aGUgc29ja2V0cywgbm8gRUFERFJJTlVTRQorICAgIHdpbGwgZXZlciBiZSByYWlzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIGJpbmQgdHdvIGlkZW50aWNhbCBob3N0L3BvcnRzLiBXaGVuCisgICAgYWNjZXB0KCkgaXMgY2FsbGVkIG9uIGVhY2ggc29ja2V0LCB0aGUgc2Vjb25kIGNhbGxlcidzIHByb2Nlc3Mgd2lsbCBzdGVhbAorICAgIHRoZSBwb3J0IGZyb20gdGhlIGZpcnN0IGNhbGxlciwgbGVhdmluZyB0aGVtIGJvdGggaW4gYW4gYXdrd2FyZGx5IHdlZGdlZAorICAgIHN0YXRlIHdoZXJlIHRoZXknbGwgbm8gbG9uZ2VyIHJlc3BvbmQgdG8gYW55IHNpZ25hbHMgb3IgZ3JhY2VmdWwga2lsbHMsIGFuZAorICAgIG11c3QgYmUgZm9yY2libHkga2lsbGVkIHZpYSBPcGVuUHJvY2VzcygpL1Rlcm1pbmF0ZVByb2Nlc3MoKS4KKworICAgIFRoZSBzb2x1dGlvbiBvbiBXaW5kb3dzIGlzIHRvIHVzZSB0aGUgU09fRVhDTFVTSVZFQUREUlVTRSBzb2NrZXQgb3B0aW9uCisgICAgaW5zdGVhZCBvZiBTT19SRVVTRUFERFIsIHdoaWNoIGVmZmVjdGl2ZWx5IGFmZm9yZHMgdGhlIHNhbWUgc2VtYW50aWNzIGFzCisgICAgU09fUkVVU0VBRERSIG9uIFVuaXguICBHaXZlbiB0aGUgcHJvcGVuc2l0eSBvZiBVbml4IGRldmVsb3BlcnMgaW4gdGhlIE9wZW4KKyAgICBTb3VyY2Ugd29ybGQgY29tcGFyZWQgdG8gV2luZG93cyBvbmVzLCB0aGlzIGlzIGEgY29tbW9uIG1pc3Rha2UuICBBIHF1aWNrCisgICAgbG9vayBvdmVyIE9wZW5TU0wncyAwLjkuOGcgc291cmNlIHNob3dzIHRoYXQgdGhleSB1c2UgU09fUkVVU0VBRERSIHdoZW4KKyAgICBvcGVuc3NsLmV4ZSBpcyBjYWxsZWQgd2l0aCB0aGUgJ3Nfc2VydmVyJyBvcHRpb24sIGZvciBleGFtcGxlLiBTZWUKKyAgICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjU1MCBmb3IgbW9yZSBpbmZvLiAgVGhlIGZvbGxvd2luZyBzaXRlIGFsc28KKyAgICBoYXMgYSB2ZXJ5IHRob3JvdWdoIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgYm90aCBSRVVTRUFERFIKKyAgICBhbmQgRVhDTFVTSVZFQUREUlVTRSBvbiBXaW5kb3dzOgorICAgIGh0dHA6Ly9tc2RuMi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3NDA2MjEoVlMuODUpLmFzcHgpCisKKyAgICBYWFg6IGFsdGhvdWdoIHRoaXMgYXBwcm9hY2ggaXMgYSB2YXN0IGltcHJvdmVtZW50IG9uIHByZXZpb3VzIGF0dGVtcHRzIHRvCisgICAgZWxpY2l0IHVudXNlZCBwb3J0cywgaXQgcmVzdHMgaGVhdmlseSBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBlcGhlbWVyYWwKKyAgICBwb3J0IHJldHVybmVkIHRvIHVzIGJ5IHRoZSBPUyB3b24ndCBpbW1lZGlhdGVseSBiZSBkaXNoZWQgYmFjayBvdXQgdG8gc29tZQorICAgIG90aGVyIHByb2Nlc3Mgd2hlbiB3ZSBjbG9zZSBhbmQgZGVsZXRlIG91ciB0ZW1wb3Jhcnkgc29ja2V0IGJ1dCBiZWZvcmUgb3VyCisgICAgY2FsbGluZyBjb2RlIGhhcyBhIGNoYW5jZSB0byBiaW5kIHRoZSByZXR1cm5lZCBwb3J0LiAgV2UgY2FuIGRlYWwgd2l0aCB0aGlzCisgICAgaXNzdWUgaWYvd2hlbiB3ZSBjb21lIGFjcm9zcyBpdC4iIiIKKyAgICB0ZW1wc29jayA9IHNvY2tldC5zb2NrZXQoZmFtaWx5LCBzb2NrdHlwZSkKKyAgICBwb3J0ID0gYmluZF9wb3J0KHRlbXBzb2NrKQorICAgIHRlbXBzb2NrLmNsb3NlKCkKKyAgICBkZWwgdGVtcHNvY2sKKyAgICByZXR1cm4gcG9ydAorCitkZWYgYmluZF9wb3J0KHNvY2ssIGhvc3Q9SE9TVCk6CisgICAgIiIiQmluZCB0aGUgc29ja2V0IHRvIGEgZnJlZSBwb3J0IGFuZCByZXR1cm4gdGhlIHBvcnQgbnVtYmVyLiAgUmVsaWVzIG9uCisgICAgZXBoZW1lcmFsIHBvcnRzIGluIG9yZGVyIHRvIGVuc3VyZSB3ZSBhcmUgdXNpbmcgYW4gdW5ib3VuZCBwb3J0LiAgVGhpcyBpcworICAgIGltcG9ydGFudCBhcyBtYW55IHRlc3RzIG1heSBiZSBydW5uaW5nIHNpbXVsdGFuZW91c2x5LCBlc3BlY2lhbGx5IGluIGEKKyAgICBidWlsZGJvdCBlbnZpcm9ubWVudC4gIFRoaXMgbWV0aG9kIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlIHNvY2suZmFtaWx5CisgICAgaXMgQUZfSU5FVCBhbmQgc29jay50eXBlIGlzIFNPQ0tfU1RSRUFNLCAqYW5kKiB0aGUgc29ja2V0IGhhcyBTT19SRVVTRUFERFIKKyAgICBvciBTT19SRVVTRVBPUlQgc2V0IG9uIGl0LiAgVGVzdHMgc2hvdWxkICpuZXZlciogc2V0IHRoZXNlIHNvY2tldCBvcHRpb25zCisgICAgZm9yIFRDUC9JUCBzb2NrZXRzLiAgVGhlIG9ubHkgY2FzZSBmb3Igc2V0dGluZyB0aGVzZSBvcHRpb25zIGlzIHRlc3RpbmcKKyAgICBtdWx0aWNhc3RpbmcgdmlhIG11bHRpcGxlIFVEUCBzb2NrZXRzLgorCisgICAgQWRkaXRpb25hbGx5LCBpZiB0aGUgU09fRVhDTFVTSVZFQUREUlVTRSBzb2NrZXQgb3B0aW9uIGlzIGF2YWlsYWJsZSAoaS5lLgorICAgIG9uIFdpbmRvd3MpLCBpdCB3aWxsIGJlIHNldCBvbiB0aGUgc29ja2V0LiAgVGhpcyB3aWxsIHByZXZlbnQgYW55b25lIGVsc2UKKyAgICBmcm9tIGJpbmQoKSdpbmcgdG8gb3VyIGhvc3QvcG9ydCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LgorICAgICIiIgorICAgIGlmIHNvY2suZmFtaWx5ID09IHNvY2tldC5BRl9JTkVUIGFuZCBzb2NrLnR5cGUgPT0gc29ja2V0LlNPQ0tfU1RSRUFNOgorICAgICAgICBpZiBoYXNhdHRyKHNvY2tldCwgJ1NPX1JFVVNFQUREUicpOgorICAgICAgICAgICAgaWYgc29jay5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVVU0VBRERSKSA9PSAxOgorICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoInRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlIFNPX1JFVVNFQUREUiAiICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvY2tldCBvcHRpb24gb24gVENQL0lQIHNvY2tldHMhIikKKyAgICAgICAgaWYgaGFzYXR0cihzb2NrZXQsICdTT19SRVVTRVBPUlQnKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiBzb2NrLmdldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SRVVTRVBPUlQpID09IDE6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoInRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlIFNPX1JFVVNFUE9SVCAiICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb2NrZXQgb3B0aW9uIG9uIFRDUC9JUCBzb2NrZXRzISIpCisgICAgICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKKyAgICAgICAgICAgICAgICAjIFB5dGhvbidzIHNvY2tldCBtb2R1bGUgd2FzIGNvbXBpbGVkIHVzaW5nIG1vZGVybiBoZWFkZXJzCisgICAgICAgICAgICAgICAgIyB0aHVzIGRlZmluaW5nIFNPX1JFVVNFUE9SVCBidXQgdGhpcyBwcm9jZXNzIGlzIHJ1bm5pbmcKKyAgICAgICAgICAgICAgICAjIHVuZGVyIGFuIG9sZGVyIGtlcm5lbCB0aGF0IGRvZXMgbm90IHN1cHBvcnQgU09fUkVVU0VQT1JULgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgaGFzYXR0cihzb2NrZXQsICdTT19FWENMVVNJVkVBRERSVVNFJyk6CisgICAgICAgICAgICBzb2NrLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19FWENMVVNJVkVBRERSVVNFLCAxKQorCisgICAgc29jay5iaW5kKChob3N0LCAwKSkKKyAgICBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzFdCisgICAgcmV0dXJuIHBvcnQKKworZGVmIF9pc19pcHY2X2VuYWJsZWQoKToKKyAgICAiIiJDaGVjayB3aGV0aGVyIElQdjYgaXMgZW5hYmxlZCBvbiB0aGlzIGhvc3QuIiIiCisgICAgaWYgc29ja2V0Lmhhc19pcHY2OgorICAgICAgICBzb2NrID0gTm9uZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1NUUkVBTSkKKyAgICAgICAgICAgIHNvY2suYmluZCgoSE9TVHY2LCAwKSkKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBzb2NrOgorICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQorICAgIHJldHVybiBGYWxzZQorCitJUFY2X0VOQUJMRUQgPSBfaXNfaXB2Nl9lbmFibGVkKCkKKworZGVmIHN5c3RlbV9tdXN0X3ZhbGlkYXRlX2NlcnQoZik6CisgICAgIiIiU2tpcCB0aGUgdGVzdCBvbiBUTFMgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBmYWlsdXJlcy4iIiIKKyAgICBAZnVuY3Rvb2xzLndyYXBzKGYpCisgICAgZGVmIGRlYygqYXJncywgKiprd2FyZ3MpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGlmICJDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEIiBpbiBzdHIoZSk6CisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInN5c3RlbSBkb2VzIG5vdCBjb250YWluICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVjZXNzYXJ5IGNlcnRpZmljYXRlcyIpCisgICAgICAgICAgICByYWlzZQorICAgIHJldHVybiBkZWMKKworRlVaWiA9IDFlLTYKKworZGVmIGZjbXAoeCwgeSk6ICMgZnV6enkgY29tcGFyaXNvbiBmdW5jdGlvbgorICAgIGlmIGlzaW5zdGFuY2UoeCwgZmxvYXQpIG9yIGlzaW5zdGFuY2UoeSwgZmxvYXQpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBmdXp6ID0gKGFicyh4KSArIGFicyh5KSkgKiBGVVpaCisgICAgICAgICAgICBpZiBhYnMoeC15KSA8PSBmdXp6OgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIHBhc3MKKyAgICBlbGlmIHR5cGUoeCkgPT0gdHlwZSh5KSBhbmQgaXNpbnN0YW5jZSh4LCAodHVwbGUsIGxpc3QpKToKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UobWluKGxlbih4KSwgbGVuKHkpKSk6CisgICAgICAgICAgICBvdXRjb21lID0gZmNtcCh4W2ldLCB5W2ldKQorICAgICAgICAgICAgaWYgb3V0Y29tZSAhPSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBvdXRjb21lCisgICAgICAgIHJldHVybiAobGVuKHgpID4gbGVuKHkpKSAtIChsZW4oeCkgPCBsZW4oeSkpCisgICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCisKKworIyBBIGNvbnN0YW50IGxpa2VseSBsYXJnZXIgdGhhbiB0aGUgdW5kZXJseWluZyBPUyBwaXBlIGJ1ZmZlciBzaXplLCB0bworIyBtYWtlIHdyaXRlcyBibG9ja2luZy4KKyMgV2luZG93cyBsaW1pdCBzZWVtcyB0byBiZSBhcm91bmQgNTEyIEIsIGFuZCBtYW55IFVuaXgga2VybmVscyBoYXZlIGEKKyMgNjQgS2lCIHBpcGUgYnVmZmVyIHNpemUgb3IgMTYgKiBQQUdFX1NJWkU6IHRha2UgYSBmZXcgbWVncyB0byBiZSBzdXJlLgorIyAoc2VlIGlzc3VlICMxNzgzNSBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoaXMgbnVtYmVyKS4KK1BJUEVfTUFYX1NJWkUgPSA0ICogMTAyNCAqIDEwMjQgKyAxCisKKyMgQSBjb25zdGFudCBsaWtlbHkgbGFyZ2VyIHRoYW4gdGhlIHVuZGVybHlpbmcgT1Mgc29ja2V0IGJ1ZmZlciBzaXplLCB0byBtYWtlCisjIHdyaXRlcyBibG9ja2luZy4KKyMgVGhlIHNvY2tldCBidWZmZXIgc2l6ZXMgY2FuIHVzdWFsbHkgYmUgdHVuZWQgc3lzdGVtLXdpZGUgKGUuZy4gdGhyb3VnaCBzeXNjdGwKKyMgb24gTGludXgpLCBvciBvbiBhIHBlci1zb2NrZXQgYmFzaXMgKFNPX1NOREJVRi9TT19SQ1ZCVUYpLiBTZWUgaXNzdWUgIzE4NjQzCisjIGZvciBhIGRpc2N1c3Npb24gb2YgdGhpcyBudW1iZXIpLgorU09DS19NQVhfU0laRSA9IDE2ICogMTAyNCAqIDEwMjQgKyAxCisKK2lzX2p5dGhvbiA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqYXZhJykKKwordHJ5OgorICAgIHVuaWNvZGUKKyAgICBoYXZlX3VuaWNvZGUgPSBUcnVlCitleGNlcHQgTmFtZUVycm9yOgorICAgIGhhdmVfdW5pY29kZSA9IEZhbHNlCisKK3JlcXVpcmVzX3VuaWNvZGUgPSB1bml0dGVzdC5za2lwVW5sZXNzKGhhdmVfdW5pY29kZSwgJ25vIHVuaWNvZGUgc3VwcG9ydCcpCisKK2RlZiB1KHMpOgorICAgIHJldHVybiB1bmljb2RlKHMsICd1bmljb2RlLWVzY2FwZScpCisKKyMgRlNfTk9OQVNDSUk6IG5vbi1BU0NJSSBVbmljb2RlIGNoYXJhY3RlciBlbmNvZGFibGUgYnkKKyMgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpLCBvciBOb25lIGlmIHRoZXJlIGlzIG5vIHN1Y2ggY2hhcmFjdGVyLgorRlNfTk9OQVNDSUkgPSBOb25lCitpZiBoYXZlX3VuaWNvZGU6CisgICAgZm9yIGNoYXJhY3RlciBpbiAoCisgICAgICAgICMgRmlyc3QgdHJ5IHByaW50YWJsZSBhbmQgY29tbW9uIGNoYXJhY3RlcnMgdG8gaGF2ZSBhIHJlYWRhYmxlIGZpbGVuYW1lLgorICAgICAgICAjIEZvciBlYWNoIGNoYXJhY3RlciwgdGhlIGVuY29kaW5nIGxpc3QgYXJlIGp1c3QgZXhhbXBsZSBvZiBlbmNvZGluZ3MgYWJsZQorICAgICAgICAjIHRvIGVuY29kZSB0aGUgY2hhcmFjdGVyICh0aGUgbGlzdCBpcyBub3QgZXhoYXVzdGl2ZSkuCisKKyAgICAgICAgIyBVKzAwRTYgKExhdGluIFNtYWxsIExldHRlciBBZSk6IGNwMTI1MiwgaXNvLTg4NTktMQorICAgICAgICB1bmljaHIoMHgwMEU2KSwKKyAgICAgICAgIyBVKzAxMzAgKExhdGluIENhcGl0YWwgTGV0dGVyIEkgV2l0aCBEb3QgQWJvdmUpOiBjcDEyNTQsIGlzbzg4NTlfMworICAgICAgICB1bmljaHIoMHgwMTMwKSwKKyAgICAgICAgIyBVKzAxNDEgKExhdGluIENhcGl0YWwgTGV0dGVyIEwgV2l0aCBTdHJva2UpOiBjcDEyNTAsIGNwMTI1NworICAgICAgICB1bmljaHIoMHgwMTQxKSwKKyAgICAgICAgIyBVKzAzQzYgKEdyZWVrIFNtYWxsIExldHRlciBQaGkpOiBjcDEyNTMKKyAgICAgICAgdW5pY2hyKDB4MDNDNiksCisgICAgICAgICMgVSswNDFBIChDeXJpbGxpYyBDYXBpdGFsIExldHRlciBLYSk6IGNwMTI1MQorICAgICAgICB1bmljaHIoMHgwNDFBKSwKKyAgICAgICAgIyBVKzA1RDAgKEhlYnJldyBMZXR0ZXIgQWxlZik6IEVuY29kYWJsZSB0byBjcDQyNAorICAgICAgICB1bmljaHIoMHgwNUQwKSwKKyAgICAgICAgIyBVKzA2MEMgKEFyYWJpYyBDb21tYSk6IGNwODY0LCBjcDEwMDYsIGlzbzg4NTlfNiwgbWFjX2FyYWJpYworICAgICAgICB1bmljaHIoMHgwNjBDKSwKKyAgICAgICAgIyBVKzA2MkEgKEFyYWJpYyBMZXR0ZXIgVGVoKTogY3A3MjAKKyAgICAgICAgdW5pY2hyKDB4MDYyQSksCisgICAgICAgICMgVSswRTAxIChUaGFpIENoYXJhY3RlciBLbyBLYWkpOiBjcDg3NAorICAgICAgICB1bmljaHIoMHgwRTAxKSwKKworICAgICAgICAjIFRoZW4gdHJ5IG1vcmUgInNwZWNpYWwiIGNoYXJhY3RlcnMuICJzcGVjaWFsIiBiZWNhdXNlIHRoZXkgbWF5IGJlCisgICAgICAgICMgaW50ZXJwcmV0ZWQgb3IgZGlzcGxheWVkIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB0aGUgZXhhY3QgbG9jYWxlCisgICAgICAgICMgZW5jb2RpbmcgYW5kIHRoZSBmb250LgorCisgICAgICAgICMgVSswMEEwIChOby1CcmVhayBTcGFjZSkKKyAgICAgICAgdW5pY2hyKDB4MDBBMCksCisgICAgICAgICMgVSsyMEFDIChFdXJvIFNpZ24pCisgICAgICAgIHVuaWNocigweDIwQUMpLAorICAgICk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGNoYXJhY3Rlci5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKVwKKyAgICAgICAgICAgICAgICAgICAgIC5kZWNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQorICAgICAgICBleGNlcHQgVW5pY29kZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgRlNfTk9OQVNDSUkgPSBjaGFyYWN0ZXIKKyAgICAgICAgICAgIGJyZWFrCisKKyMgRmlsZW5hbWUgdXNlZCBmb3IgdGVzdGluZworaWYgb3MubmFtZSA9PSAnamF2YSc6CisgICAgIyBKeXRob24gZGlzYWxsb3dzIEAgaW4gbW9kdWxlIG5hbWVzCisgICAgVEVTVEZOID0gJyR0ZXN0JworZWxpZiBvcy5uYW1lID09ICdyaXNjb3MnOgorICAgIFRFU1RGTiA9ICd0ZXN0ZmlsZScKK2Vsc2U6CisgICAgVEVTVEZOID0gJ0B0ZXN0JworICAgICMgVW5pY29kZSBuYW1lIG9ubHkgdXNlZCBpZiBURVNUX0ZOX0VOQ09ESU5HIGV4aXN0cyBmb3IgdGhlIHBsYXRmb3JtLgorICAgIGlmIGhhdmVfdW5pY29kZToKKyAgICAgICAgIyBBc3N1bWluZyBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkhPXN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKQorICAgICAgICAjIFRFU1RGTl9VTklDT0RFIGlzIGEgZmlsZW5hbWUgdGhhdCBjYW4gYmUgZW5jb2RlZCB1c2luZyB0aGUKKyAgICAgICAgIyBmaWxlIHN5c3RlbSBlbmNvZGluZywgYnV0ICpub3QqIHdpdGggdGhlIGRlZmF1bHQgKGFzY2lpKSBlbmNvZGluZworICAgICAgICBpZiBpc2luc3RhbmNlKCcnLCB1bmljb2RlKToKKyAgICAgICAgICAgICMgcHl0aG9uIC1VCisgICAgICAgICAgICAjIFhYWCBwZXJoYXBzIHVuaWNvZGUoKSBzaG91bGQgYWNjZXB0IFVuaWNvZGUgc3RyaW5ncz8KKyAgICAgICAgICAgIFRFU1RGTl9VTklDT0RFID0gIkB0ZXN0LVx4ZTBceGYyIgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyAyIGxhdGluIGNoYXJhY3RlcnMuCisgICAgICAgICAgICBURVNURk5fVU5JQ09ERSA9IHVuaWNvZGUoIkB0ZXN0LVx4ZTBceGYyIiwgImxhdGluLTEiKQorICAgICAgICBURVNURk5fRU5DT0RJTkcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKKyAgICAgICAgIyBURVNURk5fVU5FTkNPREFCTEUgaXMgYSBmaWxlbmFtZSB0aGF0IHNob3VsZCAqbm90KiBiZQorICAgICAgICAjIGFibGUgdG8gYmUgZW5jb2RlZCBieSAqZWl0aGVyKiB0aGUgZGVmYXVsdCBvciBmaWxlc3lzdGVtIGVuY29kaW5nLgorICAgICAgICAjIFRoaXMgdGVzdCByZWFsbHkgb25seSBtYWtlcyBzZW5zZSBvbiBXaW5kb3dzIE5UIHBsYXRmb3JtcworICAgICAgICAjIHdoaWNoIGhhdmUgc3BlY2lhbCBVbmljb2RlIHN1cHBvcnQgaW4gcG9zaXhtb2R1bGUuCisgICAgICAgIGlmIChub3QgaGFzYXR0cihzeXMsICJnZXR3aW5kb3dzdmVyc2lvbiIpIG9yCisgICAgICAgICAgICAgICAgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKClbM10gPCAyKTogIyAgMD13aW4zMnMgb3IgMT05eC9NRQorICAgICAgICAgICAgVEVTVEZOX1VORU5DT0RBQkxFID0gTm9uZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBKYXBhbmVzZSBjaGFyYWN0ZXJzIChJIHRoaW5rIC0gZnJvbSBidWcgODQ2MTMzKQorICAgICAgICAgICAgVEVTVEZOX1VORU5DT0RBQkxFID0gZXZhbCgndSJAdGVzdC1cdTUxNzFcdTY3MDlcdTMwNTVcdTMwOGNcdTMwOGIiJykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIFhYWCAtIE5vdGUgLSBzaG91bGQgYmUgdXNpbmcgVEVTVEZOX0VOQ09ESU5HIGhlcmUgLSBidXQgZm9yCisgICAgICAgICAgICAgICAgIyBXaW5kb3dzLCAibWJjcyIgY3VycmVudGx5IGFsd2F5cyBvcGVyYXRlcyBhcyBpZiBpbgorICAgICAgICAgICAgICAgICMgZXJyb3JzPWlnbm9yZScgbW9kZSAtIGhlbmNlIHdlIGdldCAnPycgY2hhcmFjdGVycyByYXRoZXIgdGhhbgorICAgICAgICAgICAgICAgICMgdGhlIGV4Y2VwdGlvbi4gICdMYXRpbjEnIG9wZXJhdGVzIGFzIHdlIGV4cGVjdCAtIGllLCBmYWlscy4KKyAgICAgICAgICAgICAgICAjIFNlZSBbIDg1MDk5NyBdIG1iY3MgZW5jb2RpbmcgaWdub3JlcyBlcnJvcnMKKyAgICAgICAgICAgICAgICBURVNURk5fVU5FTkNPREFCTEUuZW5jb2RlKCJMYXRpbjEiKQorICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHByaW50IFwKKyAgICAgICAgICAgICAgICAnV0FSTklORzogVGhlIGZpbGVuYW1lICVyIENBTiBiZSBlbmNvZGVkIGJ5IHRoZSBmaWxlc3lzdGVtLiAgJyBcCisgICAgICAgICAgICAgICAgJ1VuaWNvZGUgZmlsZW5hbWUgdGVzdHMgbWF5IG5vdCBiZSBlZmZlY3RpdmUnIFwKKyAgICAgICAgICAgICAgICAlIFRFU1RGTl9VTkVOQ09EQUJMRQorCisKKyMgRGlzYW1iaWd1YXRlIFRFU1RGTiBmb3IgcGFyYWxsZWwgdGVzdGluZywgd2hpbGUgbGV0dGluZyBpdCByZW1haW4gYSB2YWxpZAorIyBtb2R1bGUgbmFtZS4KK1RFU1RGTiA9ICJ7fV97fV90bXAiLmZvcm1hdChURVNURk4sIG9zLmdldHBpZCgpKQorCisjIFNhdmUgdGhlIGluaXRpYWwgY3dkCitTQVZFRENXRCA9IG9zLmdldGN3ZCgpCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgdGVtcF9kaXIocGF0aD1Ob25lLCBxdWlldD1GYWxzZSk6CisgICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgY3JlYXRlcyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkuCisKKyAgICBBcmd1bWVudHM6CisKKyAgICAgIHBhdGg6IHRoZSBkaXJlY3RvcnkgdG8gY3JlYXRlIHRlbXBvcmFyaWx5LiAgSWYgb21pdHRlZCBvciBOb25lLAorICAgICAgICBkZWZhdWx0cyB0byBjcmVhdGluZyBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdXNpbmcgdGVtcGZpbGUubWtkdGVtcC4KKworICAgICAgcXVpZXQ6IGlmIEZhbHNlICh0aGUgZGVmYXVsdCksIHRoZSBjb250ZXh0IG1hbmFnZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbgorICAgICAgICBvbiBlcnJvci4gIE90aGVyd2lzZSwgaWYgdGhlIHBhdGggaXMgc3BlY2lmaWVkIGFuZCBjYW5ub3QgYmUKKyAgICAgICAgY3JlYXRlZCwgb25seSBhIHdhcm5pbmcgaXMgaXNzdWVkLgorCisgICAgIiIiCisgICAgZGlyX2NyZWF0ZWQgPSBGYWxzZQorICAgIGlmIHBhdGggaXMgTm9uZToKKyAgICAgICAgaW1wb3J0IHRlbXBmaWxlCisgICAgICAgIHBhdGggPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgZGlyX2NyZWF0ZWQgPSBUcnVlCisgICAgICAgIHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpCisgICAgZWxzZToKKyAgICAgICAgaWYgKGhhdmVfdW5pY29kZSBhbmQgaXNpbnN0YW5jZShwYXRoLCB1bmljb2RlKSBhbmQKKyAgICAgICAgICAgIG5vdCBvcy5wYXRoLnN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpIG9yICdhc2NpaScpCisgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgorICAgICAgICAgICAgICAgIGlmIG5vdCBxdWlldDoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ3VuYWJsZSB0byBlbmNvZGUgdGhlIGN3ZCBuYW1lIHdpdGggJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIGZpbGVzeXN0ZW0gZW5jb2RpbmcuJykKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MubWtkaXIocGF0aCkKKyAgICAgICAgICAgIGRpcl9jcmVhdGVkID0gVHJ1ZQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIGlmIG5vdCBxdWlldDoKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgd2FybmluZ3Mud2FybigndGVzdHMgbWF5IGZhaWwsIHVuYWJsZSB0byBjcmVhdGUgdGVtcCBkaXI6ICcgKyBwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lV2FybmluZywgc3RhY2tsZXZlbD0zKQorICAgIGlmIGRpcl9jcmVhdGVkOgorICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQorICAgIHRyeToKKyAgICAgICAgeWllbGQgcGF0aAorICAgIGZpbmFsbHk6CisgICAgICAgICMgSW4gY2FzZSB0aGUgcHJvY2VzcyBmb3JrcywgbGV0IG9ubHkgdGhlIHBhcmVudCByZW1vdmUgdGhlCisgICAgICAgICMgZGlyZWN0b3J5LiBUaGUgY2hpbGQgaGFzIGEgZGlmZmVudCBwcm9jZXNzIGlkLiAoYnBvLTMwMDI4KQorICAgICAgICBpZiBkaXJfY3JlYXRlZCBhbmQgcGlkID09IG9zLmdldHBpZCgpOgorICAgICAgICAgICAgcm10cmVlKHBhdGgpCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgY2hhbmdlX2N3ZChwYXRoLCBxdWlldD1GYWxzZSk6CisgICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgY2hhbmdlcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KKworICAgIEFyZ3VtZW50czoKKworICAgICAgcGF0aDogdGhlIGRpcmVjdG9yeSB0byB1c2UgYXMgdGhlIHRlbXBvcmFyeSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorCisgICAgICBxdWlldDogaWYgRmFsc2UgKHRoZSBkZWZhdWx0KSwgdGhlIGNvbnRleHQgbWFuYWdlciByYWlzZXMgYW4gZXhjZXB0aW9uCisgICAgICAgIG9uIGVycm9yLiAgT3RoZXJ3aXNlLCBpdCBpc3N1ZXMgb25seSBhIHdhcm5pbmcgYW5kIGtlZXBzIHRoZSBjdXJyZW50CisgICAgICAgIHdvcmtpbmcgZGlyZWN0b3J5IHRoZSBzYW1lLgorCisgICAgIiIiCisgICAgc2F2ZWRfZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICB0cnk6CisgICAgICAgIG9zLmNoZGlyKHBhdGgpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIGlmIG5vdCBxdWlldDoKKyAgICAgICAgICAgIHJhaXNlCisgICAgICAgIHdhcm5pbmdzLndhcm4oJ3Rlc3RzIG1heSBmYWlsLCB1bmFibGUgdG8gY2hhbmdlIENXRCB0bzogJyArIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcsIHN0YWNrbGV2ZWw9MykKKyAgICB0cnk6CisgICAgICAgIHlpZWxkIG9zLmdldGN3ZCgpCisgICAgZmluYWxseToKKyAgICAgICAgb3MuY2hkaXIoc2F2ZWRfZGlyKQorCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgdGVtcF9jd2QobmFtZT0ndGVtcGN3ZCcsIHF1aWV0PUZhbHNlKToKKyAgICAiIiIKKyAgICBDb250ZXh0IG1hbmFnZXIgdGhhdCB0ZW1wb3JhcmlseSBjcmVhdGVzIGFuZCBjaGFuZ2VzIHRoZSBDV0QuCisKKyAgICBUaGUgZnVuY3Rpb24gdGVtcG9yYXJpbHkgY2hhbmdlcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeQorICAgIGFmdGVyIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBpbiB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2l0aAorICAgIG5hbWUgKm5hbWUqLiAgSWYgKm5hbWUqIGlzIE5vbmUsIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGlzCisgICAgY3JlYXRlZCB1c2luZyB0ZW1wZmlsZS5ta2R0ZW1wLgorCisgICAgSWYgKnF1aWV0KiBpcyBGYWxzZSAoZGVmYXVsdCkgYW5kIGl0IGlzIG5vdCBwb3NzaWJsZSB0bworICAgIGNyZWF0ZSBvciBjaGFuZ2UgdGhlIENXRCwgYW4gZXJyb3IgaXMgcmFpc2VkLiAgSWYgKnF1aWV0KiBpcyBUcnVlLAorICAgIG9ubHkgYSB3YXJuaW5nIGlzIHJhaXNlZCBhbmQgdGhlIG9yaWdpbmFsIENXRCBpcyB1c2VkLgorCisgICAgIiIiCisgICAgd2l0aCB0ZW1wX2RpcihwYXRoPW5hbWUsIHF1aWV0PXF1aWV0KSBhcyB0ZW1wX3BhdGg6CisgICAgICAgIHdpdGggY2hhbmdlX2N3ZCh0ZW1wX3BhdGgsIHF1aWV0PXF1aWV0KSBhcyBjd2RfZGlyOgorICAgICAgICAgICAgeWllbGQgY3dkX2RpcgorCisjIFRFU1RfSE9NRV9ESVIgcmVmZXJzIHRvIHRoZSB0b3AgbGV2ZWwgZGlyZWN0b3J5IG9mIHRoZSAidGVzdCIgcGFja2FnZQorIyB0aGF0IGNvbnRhaW5zIFB5dGhvbidzIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZQorVEVTVF9TVVBQT1JUX0RJUiA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorVEVTVF9IT01FX0RJUiA9IG9zLnBhdGguZGlybmFtZShURVNUX1NVUFBPUlRfRElSKQorCisjIFRFU1RfREFUQV9ESVIgaXMgdXNlZCBhcyBhIHRhcmdldCBkb3dubG9hZCBsb2NhdGlvbiBmb3IgcmVtb3RlIHJlc291cmNlcworVEVTVF9EQVRBX0RJUiA9IG9zLnBhdGguam9pbihURVNUX0hPTUVfRElSLCAiZGF0YSIpCisKK2RlZiBmaW5kZmlsZShmaWxlLCBzdWJkaXI9Tm9uZSk6CisgICAgIiIiVHJ5IHRvIGZpbmQgYSBmaWxlIG9uIHN5cy5wYXRoIGFuZCB0aGUgd29ya2luZyBkaXJlY3RvcnkuICBJZiBpdCBpcyBub3QKKyAgICBmb3VuZCB0aGUgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbiBpcyByZXR1cm5lZCAodGhpcyBkb2VzIG5vdAorICAgIG5lY2Vzc2FyaWx5IHNpZ25hbCBmYWlsdXJlOyBjb3VsZCBzdGlsbCBiZSB0aGUgbGVnaXRpbWF0ZSBwYXRoKS4iIiIKKyAgICBpZiBvcy5wYXRoLmlzYWJzKGZpbGUpOgorICAgICAgICByZXR1cm4gZmlsZQorICAgIGlmIHN1YmRpciBpcyBub3QgTm9uZToKKyAgICAgICAgZmlsZSA9IG9zLnBhdGguam9pbihzdWJkaXIsIGZpbGUpCisgICAgcGF0aCA9IFtURVNUX0hPTUVfRElSXSArIHN5cy5wYXRoCisgICAgZm9yIGRuIGluIHBhdGg6CisgICAgICAgIGZuID0gb3MucGF0aC5qb2luKGRuLCBmaWxlKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbik6IHJldHVybiBmbgorICAgIHJldHVybiBmaWxlCisKK2RlZiBzb3J0ZGljdChkaWN0KToKKyAgICAiTGlrZSByZXByKGRpY3QpLCBidXQgaW4gc29ydGVkIG9yZGVyLiIKKyAgICBpdGVtcyA9IGRpY3QuaXRlbXMoKQorICAgIGl0ZW1zLnNvcnQoKQorICAgIHJlcHJwYWlycyA9IFsiJXI6ICVyIiAlIHBhaXIgZm9yIHBhaXIgaW4gaXRlbXNdCisgICAgd2l0aGNvbW1hcyA9ICIsICIuam9pbihyZXBycGFpcnMpCisgICAgcmV0dXJuICJ7JXN9IiAlIHdpdGhjb21tYXMKKworZGVmIG1ha2VfYmFkX2ZkKCk6CisgICAgIiIiCisgICAgQ3JlYXRlIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yIGJ5IG9wZW5pbmcgYW5kIGNsb3NpbmcgYSBmaWxlIGFuZCByZXR1cm4KKyAgICBpdHMgZmQuCisgICAgIiIiCisgICAgZmlsZSA9IG9wZW4oVEVTVEZOLCAid2IiKQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGZpbGUuZmlsZW5vKCkKKyAgICBmaW5hbGx5OgorICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgdW5saW5rKFRFU1RGTikKKworZGVmIGNoZWNrX3N5bnRheF9lcnJvcih0ZXN0Y2FzZSwgc3RhdGVtZW50LCBlcnJ0ZXh0PScnLCBsaW5lbm89Tm9uZSwgb2Zmc2V0PU5vbmUpOgorICAgIHdpdGggdGVzdGNhc2UuYXNzZXJ0UmFpc2VzUmVnZXhwKFN5bnRheEVycm9yLCBlcnJ0ZXh0KSBhcyBjbToKKyAgICAgICAgY29tcGlsZShzdGF0ZW1lbnQsICc8dGVzdCBzdHJpbmc+JywgJ2V4ZWMnKQorICAgIGVyciA9IGNtLmV4Y2VwdGlvbgorICAgIGlmIGxpbmVubyBpcyBub3QgTm9uZToKKyAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoZXJyLmxpbmVubywgbGluZW5vKQorICAgIGlmIG9mZnNldCBpcyBub3QgTm9uZToKKyAgICAgICAgdGVzdGNhc2UuYXNzZXJ0RXF1YWwoZXJyLm9mZnNldCwgb2Zmc2V0KQorCitkZWYgb3Blbl91cmxyZXNvdXJjZSh1cmwsIGNoZWNrPU5vbmUpOgorICAgIGltcG9ydCB1cmxwYXJzZSwgdXJsbGliMgorCisgICAgZmlsZW5hbWUgPSB1cmxwYXJzZS51cmxwYXJzZSh1cmwpWzJdLnNwbGl0KCcvJylbLTFdICMgJy8nOiBpdCdzIFVSTCEKKworICAgIGZuID0gb3MucGF0aC5qb2luKFRFU1RfREFUQV9ESVIsIGZpbGVuYW1lKQorCisgICAgZGVmIGNoZWNrX3ZhbGlkX2ZpbGUoZm4pOgorICAgICAgICBmID0gb3BlbihmbikKKyAgICAgICAgaWYgY2hlY2sgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgIGVsaWYgY2hlY2soZik6CisgICAgICAgICAgICBmLnNlZWsoMCkKKyAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgaWYgb3MucGF0aC5leGlzdHMoZm4pOgorICAgICAgICBmID0gY2hlY2tfdmFsaWRfZmlsZShmbikKKyAgICAgICAgaWYgZiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgIHVubGluayhmbikKKworICAgICMgVmVyaWZ5IHRoZSByZXF1aXJlbWVudCBiZWZvcmUgZG93bmxvYWRpbmcgdGhlIGZpbGUKKyAgICByZXF1aXJlcygndXJsZmV0Y2gnKQorCisgICAgcHJpbnQgPj4gZ2V0X29yaWdpbmFsX3N0ZG91dCgpLCAnXHRmZXRjaGluZyAlcyAuLi4nICUgdXJsCisgICAgZiA9IHVybGxpYjIudXJsb3Blbih1cmwsIHRpbWVvdXQ9MTUpCisgICAgdHJ5OgorICAgICAgICB3aXRoIG9wZW4oZm4sICJ3YiIpIGFzIG91dDoKKyAgICAgICAgICAgIHMgPSBmLnJlYWQoKQorICAgICAgICAgICAgd2hpbGUgczoKKyAgICAgICAgICAgICAgICBvdXQud3JpdGUocykKKyAgICAgICAgICAgICAgICBzID0gZi5yZWFkKCkKKyAgICBmaW5hbGx5OgorICAgICAgICBmLmNsb3NlKCkKKworICAgIGYgPSBjaGVja192YWxpZF9maWxlKGZuKQorICAgIGlmIGYgaXMgbm90IE5vbmU6CisgICAgICAgIHJldHVybiBmCisgICAgcmFpc2UgVGVzdEZhaWxlZCgnaW52YWxpZCByZXNvdXJjZSAiJXMiJyAlIGZuKQorCisKK2NsYXNzIFdhcm5pbmdzUmVjb3JkZXIob2JqZWN0KToKKyAgICAiIiJDb252ZW5pZW5jZSB3cmFwcGVyIGZvciB0aGUgd2FybmluZ3MgbGlzdCByZXR1cm5lZCBvbgorICAgICAgIGVudHJ5IHRvIHRoZSB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpIGNvbnRleHQgbWFuYWdlci4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgd2FybmluZ3NfbGlzdCk6CisgICAgICAgIHNlbGYuX3dhcm5pbmdzID0gd2FybmluZ3NfbGlzdAorICAgICAgICBzZWxmLl9sYXN0ID0gMAorCisgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgorICAgICAgICBpZiBsZW4oc2VsZi5fd2FybmluZ3MpID4gc2VsZi5fbGFzdDoKKyAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuX3dhcm5pbmdzWy0xXSwgYXR0cikKKyAgICAgICAgZWxpZiBhdHRyIGluIHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlLl9XQVJOSU5HX0RFVEFJTFM6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiJXIgaGFzIG5vIGF0dHJpYnV0ZSAlciIgJSAoc2VsZiwgYXR0cikpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd2FybmluZ3Moc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl93YXJuaW5nc1tzZWxmLl9sYXN0Ol0KKworICAgIGRlZiByZXNldChzZWxmKToKKyAgICAgICAgc2VsZi5fbGFzdCA9IGxlbihzZWxmLl93YXJuaW5ncykKKworCitkZWYgX2ZpbHRlcndhcm5pbmdzKGZpbHRlcnMsIHF1aWV0PUZhbHNlKToKKyAgICAiIiJDYXRjaCB0aGUgd2FybmluZ3MsIHRoZW4gY2hlY2sgaWYgYWxsIHRoZSBleHBlY3RlZAorICAgIHdhcm5pbmdzIGhhdmUgYmVlbiByYWlzZWQgYW5kIHJlLXJhaXNlIHVuZXhwZWN0ZWQgd2FybmluZ3MuCisgICAgSWYgJ3F1aWV0JyBpcyBUcnVlLCBvbmx5IHJlLXJhaXNlIHRoZSB1bmV4cGVjdGVkIHdhcm5pbmdzLgorICAgICIiIgorICAgICMgQ2xlYXIgdGhlIHdhcm5pbmcgcmVnaXN0cnkgb2YgdGhlIGNhbGxpbmcgbW9kdWxlCisgICAgIyBpbiBvcmRlciB0byByZS1yYWlzZSB0aGUgd2FybmluZ3MuCisgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKDIpCisgICAgcmVnaXN0cnkgPSBmcmFtZS5mX2dsb2JhbHMuZ2V0KCdfX3dhcm5pbmdyZWdpc3RyeV9fJykKKyAgICBpZiByZWdpc3RyeToKKyAgICAgICAgcmVnaXN0cnkuY2xlYXIoKQorICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICMgU2V0IGZpbHRlciAiYWx3YXlzIiB0byByZWNvcmQgYWxsIHdhcm5pbmdzLiAgQmVjYXVzZQorICAgICAgICAjIHRlc3Rfd2FybmluZ3Mgc3dhcCB0aGUgbW9kdWxlLCB3ZSBuZWVkIHRvIGxvb2sgdXAgaW4KKyAgICAgICAgIyB0aGUgc3lzLm1vZHVsZXMgZGljdGlvbmFyeS4KKyAgICAgICAgc3lzLm1vZHVsZXNbJ3dhcm5pbmdzJ10uc2ltcGxlZmlsdGVyKCJhbHdheXMiKQorICAgICAgICB5aWVsZCBXYXJuaW5nc1JlY29yZGVyKHcpCisgICAgIyBGaWx0ZXIgdGhlIHJlY29yZGVkIHdhcm5pbmdzCisgICAgcmVyYWlzZSA9IFt3YXJuaW5nLm1lc3NhZ2UgZm9yIHdhcm5pbmcgaW4gd10KKyAgICBtaXNzaW5nID0gW10KKyAgICBmb3IgbXNnLCBjYXQgaW4gZmlsdGVyczoKKyAgICAgICAgc2VlbiA9IEZhbHNlCisgICAgICAgIGZvciBleGMgaW4gcmVyYWlzZVs6XToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBzdHIoZXhjKQorICAgICAgICAgICAgIyBGaWx0ZXIgb3V0IHRoZSBtYXRjaGluZyBtZXNzYWdlcworICAgICAgICAgICAgaWYgKHJlLm1hdGNoKG1zZywgbWVzc2FnZSwgcmUuSSkgYW5kCisgICAgICAgICAgICAgICAgaXNzdWJjbGFzcyhleGMuX19jbGFzc19fLCBjYXQpKToKKyAgICAgICAgICAgICAgICBzZWVuID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJlcmFpc2UucmVtb3ZlKGV4YykKKyAgICAgICAgaWYgbm90IHNlZW4gYW5kIG5vdCBxdWlldDoKKyAgICAgICAgICAgICMgVGhpcyBmaWx0ZXIgY2F1Z2h0IG5vdGhpbmcKKyAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKChtc2csIGNhdC5fX25hbWVfXykpCisgICAgaWYgcmVyYWlzZToKKyAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoInVuaGFuZGxlZCB3YXJuaW5nICVyIiAlIHJlcmFpc2VbMF0pCisgICAgaWYgbWlzc2luZzoKKyAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoImZpbHRlciAoJXIsICVzKSBkaWQgbm90IGNhdGNoIGFueSB3YXJuaW5nIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pc3NpbmdbMF0pCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBjaGVja193YXJuaW5ncygqZmlsdGVycywgKiprd2FyZ3MpOgorICAgICIiIkNvbnRleHQgbWFuYWdlciB0byBzaWxlbmNlIHdhcm5pbmdzLgorCisgICAgQWNjZXB0IDItdHVwbGVzIGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzOgorICAgICAgICAoIm1lc3NhZ2UgcmVnZXhwIiwgV2FybmluZ0NhdGVnb3J5KQorCisgICAgT3B0aW9uYWwgYXJndW1lbnQ6CisgICAgIC0gaWYgJ3F1aWV0JyBpcyBUcnVlLCBpdCBkb2VzIG5vdCBmYWlsIGlmIGEgZmlsdGVyIGNhdGNoZXMgbm90aGluZworICAgICAgICAoZGVmYXVsdCBUcnVlIHdpdGhvdXQgYXJndW1lbnQsCisgICAgICAgICBkZWZhdWx0IEZhbHNlIGlmIHNvbWUgZmlsdGVycyBhcmUgZGVmaW5lZCkKKworICAgIFdpdGhvdXQgYXJndW1lbnQsIGl0IGRlZmF1bHRzIHRvOgorICAgICAgICBjaGVja193YXJuaW5ncygoIiIsIFdhcm5pbmcpLCBxdWlldD1UcnVlKQorICAgICIiIgorICAgIHF1aWV0ID0ga3dhcmdzLmdldCgncXVpZXQnKQorICAgIGlmIG5vdCBmaWx0ZXJzOgorICAgICAgICBmaWx0ZXJzID0gKCgiIiwgV2FybmluZyksKQorICAgICAgICAjIFByZXNlcnZlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkKKyAgICAgICAgaWYgcXVpZXQgaXMgTm9uZToKKyAgICAgICAgICAgIHF1aWV0ID0gVHJ1ZQorICAgIHJldHVybiBfZmlsdGVyd2FybmluZ3MoZmlsdGVycywgcXVpZXQpCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBjaGVja19weTNrX3dhcm5pbmdzKCpmaWx0ZXJzLCAqKmt3YXJncyk6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRvIHNpbGVuY2UgcHkzayB3YXJuaW5ncy4KKworICAgIEFjY2VwdCAyLXR1cGxlcyBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAgKCJtZXNzYWdlIHJlZ2V4cCIsIFdhcm5pbmdDYXRlZ29yeSkKKworICAgIE9wdGlvbmFsIGFyZ3VtZW50OgorICAgICAtIGlmICdxdWlldCcgaXMgVHJ1ZSwgaXQgZG9lcyBub3QgZmFpbCBpZiBhIGZpbHRlciBjYXRjaGVzIG5vdGhpbmcKKyAgICAgICAgKGRlZmF1bHQgRmFsc2UpCisKKyAgICBXaXRob3V0IGFyZ3VtZW50LCBpdCBkZWZhdWx0cyB0bzoKKyAgICAgICAgY2hlY2tfcHkza193YXJuaW5ncygoIiIsIERlcHJlY2F0aW9uV2FybmluZyksIHF1aWV0PUZhbHNlKQorICAgICIiIgorICAgIGlmIHN5cy5weTNrd2FybmluZzoKKyAgICAgICAgaWYgbm90IGZpbHRlcnM6CisgICAgICAgICAgICBmaWx0ZXJzID0gKCgiIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwpCisgICAgZWxzZToKKyAgICAgICAgIyBJdCBzaG91bGQgbm90IHJhaXNlIGFueSBweTNrIHdhcm5pbmcKKyAgICAgICAgZmlsdGVycyA9ICgpCisgICAgcmV0dXJuIF9maWx0ZXJ3YXJuaW5ncyhmaWx0ZXJzLCBrd2FyZ3MuZ2V0KCdxdWlldCcpKQorCisKK2NsYXNzIENsZWFuSW1wb3J0KG9iamVjdCk6CisgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRvIGZvcmNlIGltcG9ydCB0byByZXR1cm4gYSBuZXcgbW9kdWxlIHJlZmVyZW5jZS4KKworICAgIFRoaXMgaXMgdXNlZnVsIGZvciB0ZXN0aW5nIG1vZHVsZS1sZXZlbCBiZWhhdmlvdXJzLCBzdWNoIGFzCisgICAgdGhlIGVtaXNzaW9uIG9mIGEgRGVwcmVjYXRpb25XYXJuaW5nIG9uIGltcG9ydC4KKworICAgIFVzZSBsaWtlIHRoaXM6CisKKyAgICAgICAgd2l0aCBDbGVhbkltcG9ydCgiZm9vIik6CisgICAgICAgICAgICBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgiZm9vIikgIyBuZXcgcmVmZXJlbmNlCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKm1vZHVsZV9uYW1lcyk6CisgICAgICAgIHNlbGYub3JpZ2luYWxfbW9kdWxlcyA9IHN5cy5tb2R1bGVzLmNvcHkoKQorICAgICAgICBmb3IgbW9kdWxlX25hbWUgaW4gbW9kdWxlX25hbWVzOgorICAgICAgICAgICAgaWYgbW9kdWxlX25hbWUgaW4gc3lzLm1vZHVsZXM6CisgICAgICAgICAgICAgICAgbW9kdWxlID0gc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdCisgICAgICAgICAgICAgICAgIyBJdCBpcyBwb3NzaWJsZSB0aGF0IG1vZHVsZV9uYW1lIGlzIGp1c3QgYW4gYWxpYXMgZm9yCisgICAgICAgICAgICAgICAgIyBhbm90aGVyIG1vZHVsZSAoZS5nLiBzdHViIGZvciBtb2R1bGVzIHJlbmFtZWQgaW4gMy54KS4KKyAgICAgICAgICAgICAgICAjIEluIHRoYXQgY2FzZSwgd2UgYWxzbyBuZWVkIGRlbGV0ZSB0aGUgcmVhbCBtb2R1bGUgdG8gY2xlYXIKKyAgICAgICAgICAgICAgICAjIHRoZSBpbXBvcnQgY2FjaGUuCisgICAgICAgICAgICAgICAgaWYgbW9kdWxlLl9fbmFtZV9fICE9IG1vZHVsZV9uYW1lOgorICAgICAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbW9kdWxlLl9fbmFtZV9fXQorICAgICAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0KKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmlnbm9yZV9leGMpOgorICAgICAgICBzeXMubW9kdWxlcy51cGRhdGUoc2VsZi5vcmlnaW5hbF9tb2R1bGVzKQorCisKK2NsYXNzIEVudmlyb25tZW50VmFyR3VhcmQoVXNlckRpY3QuRGljdE1peGluKToKKworICAgICIiIkNsYXNzIHRvIGhlbHAgcHJvdGVjdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgcHJvcGVybHkuICBDYW4gYmUgdXNlZCBhcworICAgIGEgY29udGV4dCBtYW5hZ2VyLiIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9lbnZpcm9uID0gb3MuZW52aXJvbgorICAgICAgICBzZWxmLl9jaGFuZ2VkID0ge30KKworICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBlbnZ2YXIpOgorICAgICAgICByZXR1cm4gc2VsZi5fZW52aXJvbltlbnZ2YXJdCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgZW52dmFyLCB2YWx1ZSk6CisgICAgICAgICMgUmVtZW1iZXIgdGhlIGluaXRpYWwgdmFsdWUgb24gdGhlIGZpcnN0IGFjY2VzcworICAgICAgICBpZiBlbnZ2YXIgbm90IGluIHNlbGYuX2NoYW5nZWQ6CisgICAgICAgICAgICBzZWxmLl9jaGFuZ2VkW2VudnZhcl0gPSBzZWxmLl9lbnZpcm9uLmdldChlbnZ2YXIpCisgICAgICAgIHNlbGYuX2Vudmlyb25bZW52dmFyXSA9IHZhbHVlCisKKyAgICBkZWYgX19kZWxpdGVtX18oc2VsZiwgZW52dmFyKToKKyAgICAgICAgIyBSZW1lbWJlciB0aGUgaW5pdGlhbCB2YWx1ZSBvbiB0aGUgZmlyc3QgYWNjZXNzCisgICAgICAgIGlmIGVudnZhciBub3QgaW4gc2VsZi5fY2hhbmdlZDoKKyAgICAgICAgICAgIHNlbGYuX2NoYW5nZWRbZW52dmFyXSA9IHNlbGYuX2Vudmlyb24uZ2V0KGVudnZhcikKKyAgICAgICAgaWYgZW52dmFyIGluIHNlbGYuX2Vudmlyb246CisgICAgICAgICAgICBkZWwgc2VsZi5fZW52aXJvbltlbnZ2YXJdCisKKyAgICBkZWYga2V5cyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Vudmlyb24ua2V5cygpCisKKyAgICBkZWYgc2V0KHNlbGYsIGVudnZhciwgdmFsdWUpOgorICAgICAgICBzZWxmW2VudnZhcl0gPSB2YWx1ZQorCisgICAgZGVmIHVuc2V0KHNlbGYsIGVudnZhcik6CisgICAgICAgIGRlbCBzZWxmW2VudnZhcl0KKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmlnbm9yZV9leGMpOgorICAgICAgICBmb3IgKGssIHYpIGluIHNlbGYuX2NoYW5nZWQuaXRlbXMoKToKKyAgICAgICAgICAgIGlmIHYgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBrIGluIHNlbGYuX2Vudmlyb246CisgICAgICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9lbnZpcm9uW2tdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuX2Vudmlyb25ba10gPSB2CisgICAgICAgIG9zLmVudmlyb24gPSBzZWxmLl9lbnZpcm9uCisKKworY2xhc3MgRGlyc09uU3lzUGF0aChvYmplY3QpOgorICAgICIiIkNvbnRleHQgbWFuYWdlciB0byB0ZW1wb3JhcmlseSBhZGQgZGlyZWN0b3JpZXMgdG8gc3lzLnBhdGguCisKKyAgICBUaGlzIG1ha2VzIGEgY29weSBvZiBzeXMucGF0aCwgYXBwZW5kcyBhbnkgZGlyZWN0b3JpZXMgZ2l2ZW4KKyAgICBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50cywgdGhlbiByZXZlcnRzIHN5cy5wYXRoIHRvIHRoZSBjb3BpZWQKKyAgICBzZXR0aW5ncyB3aGVuIHRoZSBjb250ZXh0IGVuZHMuCisKKyAgICBOb3RlIHRoYXQgKmFsbCogc3lzLnBhdGggbW9kaWZpY2F0aW9ucyBpbiB0aGUgYm9keSBvZiB0aGUKKyAgICBjb250ZXh0IG1hbmFnZXIsIGluY2x1ZGluZyByZXBsYWNlbWVudCBvZiB0aGUgb2JqZWN0LAorICAgIHdpbGwgYmUgcmV2ZXJ0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2suCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKnBhdGhzKToKKyAgICAgICAgc2VsZi5vcmlnaW5hbF92YWx1ZSA9IHN5cy5wYXRoWzpdCisgICAgICAgIHNlbGYub3JpZ2luYWxfb2JqZWN0ID0gc3lzLnBhdGgKKyAgICAgICAgc3lzLnBhdGguZXh0ZW5kKHBhdGhzKQorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqaWdub3JlX2V4Yyk6CisgICAgICAgIHN5cy5wYXRoID0gc2VsZi5vcmlnaW5hbF9vYmplY3QKKyAgICAgICAgc3lzLnBhdGhbOl0gPSBzZWxmLm9yaWdpbmFsX3ZhbHVlCisKKworY2xhc3MgVHJhbnNpZW50UmVzb3VyY2Uob2JqZWN0KToKKworICAgICIiIlJhaXNlIFJlc291cmNlRGVuaWVkIGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hpbGUgdGhlIGNvbnRleHQgbWFuYWdlcgorICAgIGlzIGluIGVmZmVjdCB0aGF0IG1hdGNoZXMgdGhlIHNwZWNpZmllZCBleGNlcHRpb24gYW5kIGF0dHJpYnV0ZXMuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZXhjLCAqKmt3YXJncyk6CisgICAgICAgIHNlbGYuZXhjID0gZXhjCisgICAgICAgIHNlbGYuYXR0cnMgPSBrd2FyZ3MKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZV89Tm9uZSwgdmFsdWU9Tm9uZSwgdHJhY2ViYWNrPU5vbmUpOgorICAgICAgICAiIiJJZiB0eXBlXyBpcyBhIHN1YmNsYXNzIG9mIHNlbGYuZXhjIGFuZCB2YWx1ZSBoYXMgYXR0cmlidXRlcyBtYXRjaGluZworICAgICAgICBzZWxmLmF0dHJzLCByYWlzZSBSZXNvdXJjZURlbmllZC4gIE90aGVyd2lzZSBsZXQgdGhlIGV4Y2VwdGlvbgorICAgICAgICBwcm9wYWdhdGUgKGlmIGFueSkuIiIiCisgICAgICAgIGlmIHR5cGVfIGlzIG5vdCBOb25lIGFuZCBpc3N1YmNsYXNzKHNlbGYuZXhjLCB0eXBlXyk6CisgICAgICAgICAgICBmb3IgYXR0ciwgYXR0cl92YWx1ZSBpbiBzZWxmLmF0dHJzLml0ZXJpdGVtcygpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHZhbHVlLCBhdHRyKToKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBpZiBnZXRhdHRyKHZhbHVlLCBhdHRyKSAhPSBhdHRyX3ZhbHVlOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBSZXNvdXJjZURlbmllZCgiYW4gb3B0aW9uYWwgcmVzb3VyY2UgaXMgbm90IGF2YWlsYWJsZSIpCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiB0cmFuc2llbnRfaW50ZXJuZXQocmVzb3VyY2VfbmFtZSwgdGltZW91dD0zMC4wLCBlcnJub3M9KCkpOgorICAgICIiIlJldHVybiBhIGNvbnRleHQgbWFuYWdlciB0aGF0IHJhaXNlcyBSZXNvdXJjZURlbmllZCB3aGVuIHZhcmlvdXMgaXNzdWVzCisgICAgd2l0aCB0aGUgSW50ZXJuZXQgY29ubmVjdGlvbiBtYW5pZmVzdCB0aGVtc2VsdmVzIGFzIGV4Y2VwdGlvbnMuIiIiCisgICAgZGVmYXVsdF9lcnJub3MgPSBbCisgICAgICAgICgnRUNPTk5SRUZVU0VEJywgMTExKSwKKyAgICAgICAgKCdFQ09OTlJFU0VUJywgMTA0KSwKKyAgICAgICAgKCdFSE9TVFVOUkVBQ0gnLCAxMTMpLAorICAgICAgICAoJ0VORVRVTlJFQUNIJywgMTAxKSwKKyAgICAgICAgKCdFVElNRURPVVQnLCAxMTApLAorICAgIF0KKyAgICBkZWZhdWx0X2dhaV9lcnJub3MgPSBbCisgICAgICAgICgnRUFJX0FHQUlOJywgLTMpLAorICAgICAgICAoJ0VBSV9GQUlMJywgLTQpLAorICAgICAgICAoJ0VBSV9OT05BTUUnLCAtMiksCisgICAgICAgICgnRUFJX05PREFUQScsIC01KSwKKyAgICAgICAgIyBXaW5kb3dzIGRlZmluZXMgRUFJX05PREFUQSBhcyAxMTAwMSBidXQgaWRpb3RpYyBnZXRhZGRyaW5mbygpCisgICAgICAgICMgaW1wbGVtZW50YXRpb24gYWN0dWFsbHkgcmV0dXJucyBXU0FOT19EQVRBIGkuZS4gMTEwMDQuCisgICAgICAgICgnV1NBTk9fREFUQScsIDExMDA0KSwKKyAgICBdCisKKyAgICBkZW5pZWQgPSBSZXNvdXJjZURlbmllZCgiUmVzb3VyY2UgJyVzJyBpcyBub3QgYXZhaWxhYmxlIiAlIHJlc291cmNlX25hbWUpCisgICAgY2FwdHVyZWRfZXJybm9zID0gZXJybm9zCisgICAgZ2FpX2Vycm5vcyA9IFtdCisgICAgaWYgbm90IGNhcHR1cmVkX2Vycm5vczoKKyAgICAgICAgY2FwdHVyZWRfZXJybm9zID0gW2dldGF0dHIoZXJybm8sIG5hbWUsIG51bSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAobmFtZSwgbnVtKSBpbiBkZWZhdWx0X2Vycm5vc10KKyAgICAgICAgZ2FpX2Vycm5vcyA9IFtnZXRhdHRyKHNvY2tldCwgbmFtZSwgbnVtKQorICAgICAgICAgICAgICAgICAgICAgIGZvciAobmFtZSwgbnVtKSBpbiBkZWZhdWx0X2dhaV9lcnJub3NdCisKKyAgICBkZWYgZmlsdGVyX2Vycm9yKGVycik6CisgICAgICAgIG4gPSBnZXRhdHRyKGVyciwgJ2Vycm5vJywgTm9uZSkKKyAgICAgICAgaWYgKGlzaW5zdGFuY2UoZXJyLCBzb2NrZXQudGltZW91dCkgb3IKKyAgICAgICAgICAgIChpc2luc3RhbmNlKGVyciwgc29ja2V0LmdhaWVycm9yKSBhbmQgbiBpbiBnYWlfZXJybm9zKSBvcgorICAgICAgICAgICAgbiBpbiBjYXB0dXJlZF9lcnJub3MpOgorICAgICAgICAgICAgaWYgbm90IHZlcmJvc2U6CisgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZShkZW5pZWQuYXJnc1swXSArICJcbiIpCisgICAgICAgICAgICByYWlzZSBkZW5pZWQKKworICAgIG9sZF90aW1lb3V0ID0gc29ja2V0LmdldGRlZmF1bHR0aW1lb3V0KCkKKyAgICB0cnk6CisgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQodGltZW91dCkKKyAgICAgICAgeWllbGQKKyAgICBleGNlcHQgSU9FcnJvciBhcyBlcnI6CisgICAgICAgICMgdXJsbGliIGNhbiB3cmFwIG9yaWdpbmFsIHNvY2tldCBlcnJvcnMgbXVsdGlwbGUgdGltZXMgKCEpLCB3ZSBtdXN0CisgICAgICAgICMgdW53cmFwIHRvIGdldCBhdCB0aGUgb3JpZ2luYWwgZXJyb3IuCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBhID0gZXJyLmFyZ3MKKyAgICAgICAgICAgIGlmIGxlbihhKSA+PSAxIGFuZCBpc2luc3RhbmNlKGFbMF0sIElPRXJyb3IpOgorICAgICAgICAgICAgICAgIGVyciA9IGFbMF0KKyAgICAgICAgICAgICMgVGhlIGVycm9yIGNhbiBhbHNvIGJlIHdyYXBwZWQgYXMgYXJnc1sxXToKKyAgICAgICAgICAgICMgICAgZXhjZXB0IHNvY2tldC5lcnJvciBhcyBtc2c6CisgICAgICAgICAgICAjICAgICAgICByYWlzZSBJT0Vycm9yKCdzb2NrZXQgZXJyb3InLCBtc2cpLndpdGhfdHJhY2ViYWNrKHN5cy5leGNfaW5mbygpWzJdKQorICAgICAgICAgICAgZWxpZiBsZW4oYSkgPj0gMiBhbmQgaXNpbnN0YW5jZShhWzFdLCBJT0Vycm9yKToKKyAgICAgICAgICAgICAgICBlcnIgPSBhWzFdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpbHRlcl9lcnJvcihlcnIpCisgICAgICAgIHJhaXNlCisgICAgIyBYWFggc2hvdWxkIHdlIGNhdGNoIGdlbmVyaWMgZXhjZXB0aW9ucyBhbmQgbG9vayBmb3IgdGhlaXIKKyAgICAjIF9fY2F1c2VfXyBvciBfX2NvbnRleHRfXz8KKyAgICBmaW5hbGx5OgorICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQob2xkX3RpbWVvdXQpCisKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBjYXB0dXJlZF9vdXRwdXQoc3RyZWFtX25hbWUpOgorICAgICIiIlJldHVybiBhIGNvbnRleHQgbWFuYWdlciB1c2VkIGJ5IGNhcHR1cmVkX3N0ZG91dCBhbmQgY2FwdHVyZWRfc3RkaW4KKyAgICB0aGF0IHRlbXBvcmFyaWx5IHJlcGxhY2VzIHRoZSBzeXMgc3RyZWFtICpzdHJlYW1fbmFtZSogd2l0aCBhIFN0cmluZ0lPLiIiIgorICAgIGltcG9ydCBTdHJpbmdJTworICAgIG9yaWdfc3Rkb3V0ID0gZ2V0YXR0cihzeXMsIHN0cmVhbV9uYW1lKQorICAgIHNldGF0dHIoc3lzLCBzdHJlYW1fbmFtZSwgU3RyaW5nSU8uU3RyaW5nSU8oKSkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkIGdldGF0dHIoc3lzLCBzdHJlYW1fbmFtZSkKKyAgICBmaW5hbGx5OgorICAgICAgICBzZXRhdHRyKHN5cywgc3RyZWFtX25hbWUsIG9yaWdfc3Rkb3V0KQorCitkZWYgY2FwdHVyZWRfc3Rkb3V0KCk6CisgICAgIiIiQ2FwdHVyZSB0aGUgb3V0cHV0IG9mIHN5cy5zdGRvdXQ6CisKKyAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CisgICAgICAgICAgIHByaW50ICJoZWxsbyIKKyAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgImhlbGxvIikKKyAgICAiIiIKKyAgICByZXR1cm4gY2FwdHVyZWRfb3V0cHV0KCJzdGRvdXQiKQorCitkZWYgY2FwdHVyZWRfc3RkZXJyKCk6CisgICAgcmV0dXJuIGNhcHR1cmVkX291dHB1dCgic3RkZXJyIikKKworZGVmIGNhcHR1cmVkX3N0ZGluKCk6CisgICAgcmV0dXJuIGNhcHR1cmVkX291dHB1dCgic3RkaW4iKQorCitkZWYgZ2NfY29sbGVjdCgpOgorICAgICIiIkZvcmNlIGFzIG1hbnkgb2JqZWN0cyBhcyBwb3NzaWJsZSB0byBiZSBjb2xsZWN0ZWQuCisKKyAgICBJbiBub24tQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbnMgb2YgUHl0aG9uLCB0aGlzIGlzIG5lZWRlZCBiZWNhdXNlIHRpbWVseQorICAgIGRlYWxsb2NhdGlvbiBpcyBub3QgZ3VhcmFudGVlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuICAoRXZlbiBpbiBDUHl0aG9uCisgICAgdGhpcyBjYW4gYmUgdGhlIGNhc2UgaW4gY2FzZSBvZiByZWZlcmVuY2UgY3ljbGVzLikgIFRoaXMgbWVhbnMgdGhhdCBfX2RlbF9fCisgICAgbWV0aG9kcyBtYXkgYmUgY2FsbGVkIGxhdGVyIHRoYW4gZXhwZWN0ZWQgYW5kIHdlYWtyZWZzIG1heSByZW1haW4gYWxpdmUgZm9yCisgICAgbG9uZ2VyIHRoYW4gZXhwZWN0ZWQuICBUaGlzIGZ1bmN0aW9uIHRyaWVzIGl0cyBiZXN0IHRvIGZvcmNlIGFsbCBnYXJiYWdlCisgICAgb2JqZWN0cyB0byBkaXNhcHBlYXIuCisgICAgIiIiCisgICAgZ2MuY29sbGVjdCgpCisgICAgaWYgaXNfanl0aG9uOgorICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICBnYy5jb2xsZWN0KCkKKyAgICBnYy5jb2xsZWN0KCkKKworCitfaGVhZGVyID0gJzJQJworaWYgaGFzYXR0cihzeXMsICJnZXR0b3RhbHJlZmNvdW50Iik6CisgICAgX2hlYWRlciA9ICcyUCcgKyBfaGVhZGVyCitfdmhlYWRlciA9IF9oZWFkZXIgKyAnUCcKKworZGVmIGNhbGNvYmpzaXplKGZtdCk6CisgICAgcmV0dXJuIHN0cnVjdC5jYWxjc2l6ZShfaGVhZGVyICsgZm10ICsgJzBQJykKKworZGVmIGNhbGN2b2Jqc2l6ZShmbXQpOgorICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX3ZoZWFkZXIgKyBmbXQgKyAnMFAnKQorCisKK19UUEZMQUdTX0hBVkVfR0MgPSAxPDwxNAorX1RQRkxBR1NfSEVBUFRZUEUgPSAxPDw5CisKK2RlZiBjaGVja19zaXplb2YodGVzdCwgbywgc2l6ZSk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgIHJlc3VsdCA9IHN5cy5nZXRzaXplb2YobykKKyAgICAjIGFkZCBHQyBoZWFkZXIgc2l6ZQorICAgIGlmICgodHlwZShvKSA9PSB0eXBlKSBhbmQgKG8uX19mbGFnc19fICYgX1RQRkxBR1NfSEVBUFRZUEUpIG9yXAorICAgICAgICAoKHR5cGUobykgIT0gdHlwZSkgYW5kICh0eXBlKG8pLl9fZmxhZ3NfXyAmIF9UUEZMQUdTX0hBVkVfR0MpKSk6CisgICAgICAgIHNpemUgKz0gX3Rlc3RjYXBpLlNJWkVPRl9QWUdDX0hFQUQKKyAgICBtc2cgPSAnd3Jvbmcgc2l6ZSBmb3IgJXM6IGdvdCAlZCwgZXhwZWN0ZWQgJWQnIFwKKyAgICAgICAgICAgICUgKHR5cGUobyksIHJlc3VsdCwgc2l6ZSkKKyAgICB0ZXN0LmFzc2VydEVxdWFsKHJlc3VsdCwgc2l6ZSwgbXNnKQorCisKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBEZWNvcmF0b3IgZm9yIHJ1bm5pbmcgYSBmdW5jdGlvbiBpbiBhIGRpZmZlcmVudCBsb2NhbGUsIGNvcnJlY3RseSByZXNldHRpbmcKKyMgaXQgYWZ0ZXJ3YXJkcy4KKworZGVmIHJ1bl93aXRoX2xvY2FsZShjYXRzdHIsICpsb2NhbGVzKToKKyAgICBkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgICAgICBkZWYgaW5uZXIoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaW1wb3J0IGxvY2FsZQorICAgICAgICAgICAgICAgIGNhdGVnb3J5ID0gZ2V0YXR0cihsb2NhbGUsIGNhdHN0cikKKyAgICAgICAgICAgICAgICBvcmlnX2xvY2FsZSA9IGxvY2FsZS5zZXRsb2NhbGUoY2F0ZWdvcnkpCisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgIyBpZiB0aGUgdGVzdCBhdXRob3IgZ2l2ZXMgdXMgYW4gaW52YWxpZCBjYXRlZ29yeSBzdHJpbmcKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICMgY2Fubm90IHJldHJpZXZlIG9yaWdpbmFsIGxvY2FsZSwgc28gZG8gbm90aGluZworICAgICAgICAgICAgICAgIGxvY2FsZSA9IG9yaWdfbG9jYWxlID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgbG9jIGluIGxvY2FsZXM6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUoY2F0ZWdvcnksIGxvYykKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgIyBub3cgcnVuIHRoZSBmdW5jdGlvbiwgcmVzZXR0aW5nIHRoZSBsb2NhbGUgb24gZXhjZXB0aW9ucworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIGxvY2FsZSBhbmQgb3JpZ19sb2NhbGU6CisgICAgICAgICAgICAgICAgICAgIGxvY2FsZS5zZXRsb2NhbGUoY2F0ZWdvcnksIG9yaWdfbG9jYWxlKQorICAgICAgICBpbm5lci5mdW5jX25hbWUgPSBmdW5jLmZ1bmNfbmFtZQorICAgICAgICBpbm5lci5fX2RvY19fID0gZnVuYy5fX2RvY19fCisgICAgICAgIHJldHVybiBpbm5lcgorICAgIHJldHVybiBkZWNvcmF0b3IKKworIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIERlY29yYXRvciBmb3IgcnVubmluZyBhIGZ1bmN0aW9uIGluIGEgc3BlY2lmaWMgdGltZXpvbmUsIGNvcnJlY3RseQorIyByZXNldHRpbmcgaXQgYWZ0ZXJ3YXJkcy4KKworZGVmIHJ1bl93aXRoX3R6KHR6KToKKyAgICBkZWYgZGVjb3JhdG9yKGZ1bmMpOgorICAgICAgICBkZWYgaW5uZXIoKmFyZ3MsICoqa3dkcyk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdHpzZXQgPSB0aW1lLnR6c2V0CisgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInR6c2V0IHJlcXVpcmVkIikKKyAgICAgICAgICAgIGlmICdUWicgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgICAgICBvcmlnX3R6ID0gb3MuZW52aXJvblsnVFonXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcmlnX3R6ID0gTm9uZQorICAgICAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IHR6CisgICAgICAgICAgICB0enNldCgpCisKKyAgICAgICAgICAgICMgbm93IHJ1biB0aGUgZnVuY3Rpb24sIHJlc2V0dGluZyB0aGUgdHogb24gZXhjZXB0aW9ucworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3ZHMpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGlmIG9yaWdfdHogaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1RaJ10KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uWydUWiddID0gb3JpZ190egorICAgICAgICAgICAgICAgIHRpbWUudHpzZXQoKQorCisgICAgICAgIGlubmVyLl9fbmFtZV9fID0gZnVuYy5fX25hbWVfXworICAgICAgICBpbm5lci5fX2RvY19fID0gZnVuYy5fX2RvY19fCisgICAgICAgIHJldHVybiBpbm5lcgorICAgIHJldHVybiBkZWNvcmF0b3IKKworIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIEJpZy1tZW1vcnktdGVzdCBzdXBwb3J0LiBTZXBhcmF0ZSBmcm9tICdyZXNvdXJjZXMnIGJlY2F1c2UgbWVtb3J5IHVzZSBzaG91bGQgYmUgY29uZmlndXJhYmxlLgorCisjIFNvbWUgaGFuZHkgc2hvcnRoYW5kcy4gTm90ZSB0aGF0IHRoZXNlIGFyZSB1c2VkIGZvciBieXRlLWxpbWl0cyBhcyB3ZWxsCisjIGFzIHNpemUtbGltaXRzLCBpbiB0aGUgdmFyaW91cyBiaWdtZW0gdGVzdHMKK18xTSA9IDEwMjQqMTAyNAorXzFHID0gMTAyNCAqIF8xTQorXzJHID0gMiAqIF8xRworXzRHID0gNCAqIF8xRworCitNQVhfUHlfc3NpemVfdCA9IHN5cy5tYXhzaXplCisKK2RlZiBzZXRfbWVtbGltaXQobGltaXQpOgorICAgIGdsb2JhbCBtYXhfbWVtdXNlCisgICAgZ2xvYmFsIHJlYWxfbWF4X21lbXVzZQorICAgIHNpemVzID0geworICAgICAgICAnayc6IDEwMjQsCisgICAgICAgICdtJzogXzFNLAorICAgICAgICAnZyc6IF8xRywKKyAgICAgICAgJ3QnOiAxMDI0Kl8xRywKKyAgICB9CisgICAgbSA9IHJlLm1hdGNoKHInKFxkKyhcLlxkKyk/KSAoS3xNfEd8VCliPyQnLCBsaW1pdCwKKyAgICAgICAgICAgICAgICAgcmUuSUdOT1JFQ0FTRSB8IHJlLlZFUkJPU0UpCisgICAgaWYgbSBpcyBOb25lOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIG1lbW9yeSBsaW1pdCAlcicgJSAobGltaXQsKSkKKyAgICBtZW1saW1pdCA9IGludChmbG9hdChtLmdyb3VwKDEpKSAqIHNpemVzW20uZ3JvdXAoMykubG93ZXIoKV0pCisgICAgcmVhbF9tYXhfbWVtdXNlID0gbWVtbGltaXQKKyAgICBpZiBtZW1saW1pdCA+IE1BWF9QeV9zc2l6ZV90OgorICAgICAgICBtZW1saW1pdCA9IE1BWF9QeV9zc2l6ZV90CisgICAgaWYgbWVtbGltaXQgPCBfMkcgLSAxOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdNZW1vcnkgbGltaXQgJXIgdG9vIGxvdyB0byBiZSB1c2VmdWwnICUgKGxpbWl0LCkpCisgICAgbWF4X21lbXVzZSA9IG1lbWxpbWl0CisKK2RlZiBiaWdtZW10ZXN0KG1pbnNpemUsIG1lbXVzZSwgb3ZlcmhlYWQ9NSpfMU0pOgorICAgICIiIkRlY29yYXRvciBmb3IgYmlnbWVtIHRlc3RzLgorCisgICAgJ21pbnNpemUnIGlzIHRoZSBtaW5pbXVtIHVzZWZ1bCBzaXplIGZvciB0aGUgdGVzdCAoaW4gYXJiaXRyYXJ5LAorICAgIHRlc3QtaW50ZXJwcmV0ZWQgdW5pdHMuKSAnbWVtdXNlJyBpcyB0aGUgbnVtYmVyIG9mICdieXRlcyBwZXIgc2l6ZScgZm9yCisgICAgdGhlIHRlc3QsIG9yIGEgZ29vZCBlc3RpbWF0ZSBvZiBpdC4gJ292ZXJoZWFkJyBzcGVjaWZpZXMgZml4ZWQgb3ZlcmhlYWQsCisgICAgaW5kZXBlbmRlbnQgb2YgdGhlIHRlc3RzaXplLCBhbmQgZGVmYXVsdHMgdG8gNU1iLgorCisgICAgVGhlIGRlY29yYXRvciB0cmllcyB0byBndWVzcyBhIGdvb2QgdmFsdWUgZm9yICdzaXplJyBhbmQgcGFzc2VzIGl0IHRvCisgICAgdGhlIGRlY29yYXRlZCB0ZXN0IGZ1bmN0aW9uLiBJZiBtaW5zaXplICogbWVtdXNlIGlzIG1vcmUgdGhhbiB0aGUKKyAgICBhbGxvd2VkIG1lbW9yeSB1c2UgKGFzIGRlZmluZWQgYnkgbWF4X21lbXVzZSksIHRoZSB0ZXN0IGlzIHNraXBwZWQuCisgICAgT3RoZXJ3aXNlLCBtaW5zaXplIGlzIGFkanVzdGVkIHVwd2FyZCB0byB1c2UgdXAgdG8gbWF4X21lbXVzZS4KKyAgICAiIiIKKyAgICBkZWYgZGVjb3JhdG9yKGYpOgorICAgICAgICBkZWYgd3JhcHBlcihzZWxmKToKKyAgICAgICAgICAgIGlmIG5vdCBtYXhfbWVtdXNlOgorICAgICAgICAgICAgICAgICMgSWYgbWF4X21lbXVzZSBpcyAwICh0aGUgZGVmYXVsdCksCisgICAgICAgICAgICAgICAgIyB3ZSBzdGlsbCB3YW50IHRvIHJ1biB0aGUgdGVzdHMgd2l0aCBzaXplIHNldCB0byBhIGZldyBrYiwKKyAgICAgICAgICAgICAgICAjIHRvIG1ha2Ugc3VyZSB0aGV5IHdvcmsuIFdlIHN0aWxsIHdhbnQgdG8gYXZvaWQgdXNpbmcKKyAgICAgICAgICAgICAgICAjIHRvbyBtdWNoIG1lbW9yeSwgdGhvdWdoLCBidXQgd2UgZG8gdGhhdCBub2lzaWx5LgorICAgICAgICAgICAgICAgIG1heHNpemUgPSA1MTQ3CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtYXhzaXplICogbWVtdXNlICsgb3ZlcmhlYWQgPiAyMCAqIF8xTSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWF4c2l6ZSA9IGludCgobWF4X21lbXVzZSAtIG92ZXJoZWFkKSAvIG1lbXVzZSkKKyAgICAgICAgICAgICAgICBpZiBtYXhzaXplIDwgbWluc2l6ZToKKyAgICAgICAgICAgICAgICAgICAgIyBSZWFsbHkgb3VnaHQgdG8gcHJpbnQgJ3Rlc3Qgc2tpcHBlZCcgb3Igc29tZXRoaW5nCisgICAgICAgICAgICAgICAgICAgIGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJTa2lwcGluZyAlcyBiZWNhdXNlIG9mIG1lbW9yeSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zdHJhaW50XG4iICUgKGYuX19uYW1lX18sKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgIyBUcnkgdG8ga2VlcCBzb21lIGJyZWF0aGluZyByb29tIGluIG1lbW9yeSB1c2UKKyAgICAgICAgICAgICAgICBtYXhzaXplID0gbWF4KG1heHNpemUgLSA1MCAqIF8xTSwgbWluc2l6ZSkKKyAgICAgICAgICAgIHJldHVybiBmKHNlbGYsIG1heHNpemUpCisgICAgICAgIHdyYXBwZXIubWluc2l6ZSA9IG1pbnNpemUKKyAgICAgICAgd3JhcHBlci5tZW11c2UgPSBtZW11c2UKKyAgICAgICAgd3JhcHBlci5vdmVyaGVhZCA9IG92ZXJoZWFkCisgICAgICAgIHJldHVybiB3cmFwcGVyCisgICAgcmV0dXJuIGRlY29yYXRvcgorCitkZWYgcHJlY2lzaW9uYmlnbWVtdGVzdChzaXplLCBtZW11c2UsIG92ZXJoZWFkPTUqXzFNLCBkcnlfcnVuPVRydWUpOgorICAgIGRlZiBkZWNvcmF0b3IoZik6CisgICAgICAgIGRlZiB3cmFwcGVyKHNlbGYpOgorICAgICAgICAgICAgaWYgbm90IHJlYWxfbWF4X21lbXVzZToKKyAgICAgICAgICAgICAgICBtYXhzaXplID0gNTE0NworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYXhzaXplID0gc2l6ZQorCisgICAgICAgICAgICBpZiAoKHJlYWxfbWF4X21lbXVzZSBvciBub3QgZHJ5X3J1bikKKyAgICAgICAgICAgICAgICBhbmQgcmVhbF9tYXhfbWVtdXNlIDwgbWF4c2l6ZSAqIG1lbXVzZSk6CisgICAgICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiU2tpcHBpbmcgJXMgYmVjYXVzZSBvZiBtZW1vcnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zdHJhaW50XG4iICUgKGYuX19uYW1lX18sKSkKKyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAgICAgcmV0dXJuIGYoc2VsZiwgbWF4c2l6ZSkKKyAgICAgICAgd3JhcHBlci5zaXplID0gc2l6ZQorICAgICAgICB3cmFwcGVyLm1lbXVzZSA9IG1lbXVzZQorICAgICAgICB3cmFwcGVyLm92ZXJoZWFkID0gb3ZlcmhlYWQKKyAgICAgICAgcmV0dXJuIHdyYXBwZXIKKyAgICByZXR1cm4gZGVjb3JhdG9yCisKK2RlZiBiaWdhZGRyc3BhY2V0ZXN0KGYpOgorICAgICIiIkRlY29yYXRvciBmb3IgdGVzdHMgdGhhdCBmaWxsIHRoZSBhZGRyZXNzIHNwYWNlLiIiIgorICAgIGRlZiB3cmFwcGVyKHNlbGYpOgorICAgICAgICBpZiBtYXhfbWVtdXNlIDwgTUFYX1B5X3NzaXplX3Q6CisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlNraXBwaW5nICVzIGJlY2F1c2Ugb2YgbWVtb3J5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb25zdHJhaW50XG4iICUgKGYuX19uYW1lX18sKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBmKHNlbGYpCisgICAgcmV0dXJuIHdyYXBwZXIKKworIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIHVuaXR0ZXN0IGludGVncmF0aW9uLgorCitjbGFzcyBCYXNpY1Rlc3RSdW5uZXI6CisgICAgZGVmIHJ1bihzZWxmLCB0ZXN0KToKKyAgICAgICAgcmVzdWx0ID0gdW5pdHRlc3QuVGVzdFJlc3VsdCgpCisgICAgICAgIHRlc3QocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0CisKK2RlZiBfaWQob2JqKToKKyAgICByZXR1cm4gb2JqCisKK2RlZiByZXF1aXJlc19yZXNvdXJjZShyZXNvdXJjZSk6CisgICAgaWYgcmVzb3VyY2UgPT0gJ2d1aScgYW5kIG5vdCBfaXNfZ3VpX2F2YWlsYWJsZSgpOgorICAgICAgICByZXR1cm4gdW5pdHRlc3Quc2tpcChfaXNfZ3VpX2F2YWlsYWJsZS5yZWFzb24pCisgICAgaWYgaXNfcmVzb3VyY2VfZW5hYmxlZChyZXNvdXJjZSk6CisgICAgICAgIHJldHVybiBfaWQKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gdW5pdHRlc3Quc2tpcCgicmVzb3VyY2UgezAhcn0gaXMgbm90IGVuYWJsZWQiLmZvcm1hdChyZXNvdXJjZSkpCisKK2RlZiBjcHl0aG9uX29ubHkodGVzdCk6CisgICAgIiIiCisgICAgRGVjb3JhdG9yIGZvciB0ZXN0cyBvbmx5IGFwcGxpY2FibGUgb24gQ1B5dGhvbi4KKyAgICAiIiIKKyAgICByZXR1cm4gaW1wbF9kZXRhaWwoY3B5dGhvbj1UcnVlKSh0ZXN0KQorCitkZWYgaW1wbF9kZXRhaWwobXNnPU5vbmUsICoqZ3VhcmRzKToKKyAgICBpZiBjaGVja19pbXBsX2RldGFpbCgqKmd1YXJkcyk6CisgICAgICAgIHJldHVybiBfaWQKKyAgICBpZiBtc2cgaXMgTm9uZToKKyAgICAgICAgZ3VhcmRuYW1lcywgZGVmYXVsdCA9IF9wYXJzZV9ndWFyZHMoZ3VhcmRzKQorICAgICAgICBpZiBkZWZhdWx0OgorICAgICAgICAgICAgbXNnID0gImltcGxlbWVudGF0aW9uIGRldGFpbCBub3QgYXZhaWxhYmxlIG9uIHswfSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG1zZyA9ICJpbXBsZW1lbnRhdGlvbiBkZXRhaWwgc3BlY2lmaWMgdG8gezB9IgorICAgICAgICBndWFyZG5hbWVzID0gc29ydGVkKGd1YXJkbmFtZXMua2V5cygpKQorICAgICAgICBtc2cgPSBtc2cuZm9ybWF0KCcgb3IgJy5qb2luKGd1YXJkbmFtZXMpKQorICAgIHJldHVybiB1bml0dGVzdC5za2lwKG1zZykKKworZGVmIF9wYXJzZV9ndWFyZHMoZ3VhcmRzKToKKyAgICAjIFJldHVybnMgYSB0dXBsZSAoe3BsYXRmb3JtX25hbWU6IHJ1bl9tZX0sIGRlZmF1bHRfdmFsdWUpCisgICAgaWYgbm90IGd1YXJkczoKKyAgICAgICAgcmV0dXJuICh7J2NweXRob24nOiBUcnVlfSwgRmFsc2UpCisgICAgaXNfdHJ1ZSA9IGd1YXJkcy52YWx1ZXMoKVswXQorICAgIGFzc2VydCBndWFyZHMudmFsdWVzKCkgPT0gW2lzX3RydWVdICogbGVuKGd1YXJkcykgICAjIGFsbCBUcnVlIG9yIGFsbCBGYWxzZQorICAgIHJldHVybiAoZ3VhcmRzLCBub3QgaXNfdHJ1ZSkKKworIyBVc2UgdGhlIGZvbGxvd2luZyBjaGVjayB0byBndWFyZCBDUHl0aG9uJ3MgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgdGVzdHMgLS0KKyMgb3IgdG8gcnVuIHRoZW0gb25seSBvbiB0aGUgaW1wbGVtZW50YXRpb24ocykgZ3VhcmRlZCBieSB0aGUgYXJndW1lbnRzLgorZGVmIGNoZWNrX2ltcGxfZGV0YWlsKCoqZ3VhcmRzKToKKyAgICAiIiJUaGlzIGZ1bmN0aW9uIHJldHVybnMgVHJ1ZSBvciBGYWxzZSBkZXBlbmRpbmcgb24gdGhlIGhvc3QgcGxhdGZvcm0uCisgICAgICAgRXhhbXBsZXM6CisgICAgICAgICAgaWYgY2hlY2tfaW1wbF9kZXRhaWwoKTogICAgICAgICAgICAgICAjIG9ubHkgb24gQ1B5dGhvbiAoZGVmYXVsdCkKKyAgICAgICAgICBpZiBjaGVja19pbXBsX2RldGFpbChqeXRob249VHJ1ZSk6ICAgICMgb25seSBvbiBKeXRob24KKyAgICAgICAgICBpZiBjaGVja19pbXBsX2RldGFpbChjcHl0aG9uPUZhbHNlKTogICMgZXZlcnl3aGVyZSBleGNlcHQgb24gQ1B5dGhvbgorICAgICIiIgorICAgIGd1YXJkcywgZGVmYXVsdCA9IF9wYXJzZV9ndWFyZHMoZ3VhcmRzKQorICAgIHJldHVybiBndWFyZHMuZ2V0KHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLmxvd2VyKCksIGRlZmF1bHQpCisKKworZGVmIF9maWx0ZXJfc3VpdGUoc3VpdGUsIHByZWQpOgorICAgICIiIlJlY3Vyc2l2ZWx5IGZpbHRlciB0ZXN0IGNhc2VzIGluIGEgc3VpdGUgYmFzZWQgb24gYSBwcmVkaWNhdGUuIiIiCisgICAgbmV3dGVzdHMgPSBbXQorICAgIGZvciB0ZXN0IGluIHN1aXRlLl90ZXN0czoKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh0ZXN0LCB1bml0dGVzdC5UZXN0U3VpdGUpOgorICAgICAgICAgICAgX2ZpbHRlcl9zdWl0ZSh0ZXN0LCBwcmVkKQorICAgICAgICAgICAgbmV3dGVzdHMuYXBwZW5kKHRlc3QpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBpZiBwcmVkKHRlc3QpOgorICAgICAgICAgICAgICAgIG5ld3Rlc3RzLmFwcGVuZCh0ZXN0KQorICAgIHN1aXRlLl90ZXN0cyA9IG5ld3Rlc3RzCisKK2RlZiBfcnVuX3N1aXRlKHN1aXRlKToKKyAgICAiIiJSdW4gdGVzdHMgZnJvbSBhIHVuaXR0ZXN0LlRlc3RTdWl0ZS1kZXJpdmVkIGNsYXNzLiIiIgorICAgIGlmIHZlcmJvc2U6CisgICAgICAgIHJ1bm5lciA9IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKHN5cy5zdGRvdXQsIHZlcmJvc2l0eT0yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWlsZmFzdD1mYWlsZmFzdCkKKyAgICBlbHNlOgorICAgICAgICBydW5uZXIgPSBCYXNpY1Rlc3RSdW5uZXIoKQorCisgICAgcmVzdWx0ID0gcnVubmVyLnJ1bihzdWl0ZSkKKyAgICBpZiBub3QgcmVzdWx0Lndhc1N1Y2Nlc3NmdWwoKToKKyAgICAgICAgaWYgbGVuKHJlc3VsdC5lcnJvcnMpID09IDEgYW5kIG5vdCByZXN1bHQuZmFpbHVyZXM6CisgICAgICAgICAgICBlcnIgPSByZXN1bHQuZXJyb3JzWzBdWzFdCisgICAgICAgIGVsaWYgbGVuKHJlc3VsdC5mYWlsdXJlcykgPT0gMSBhbmQgbm90IHJlc3VsdC5lcnJvcnM6CisgICAgICAgICAgICBlcnIgPSByZXN1bHQuZmFpbHVyZXNbMF1bMV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVyciA9ICJtdWx0aXBsZSBlcnJvcnMgb2NjdXJyZWQiCisgICAgICAgICAgICBpZiBub3QgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBlcnIgKz0gIjsgcnVuIGluIHZlcmJvc2UgbW9kZSBmb3IgZGV0YWlscyIKKyAgICAgICAgcmFpc2UgVGVzdEZhaWxlZChlcnIpCisKKworIyBCeSBkZWZhdWx0LCBkb24ndCBmaWx0ZXIgdGVzdHMKK19tYXRjaF90ZXN0X2Z1bmMgPSBOb25lCitfbWF0Y2hfdGVzdF9wYXR0ZXJucyA9IE5vbmUKKworCitkZWYgbWF0Y2hfdGVzdCh0ZXN0KToKKyAgICAjIEZ1bmN0aW9uIHVzZWQgYnkgc3VwcG9ydC5ydW5fdW5pdHRlc3QoKSBhbmQgcmVncnRlc3QgLS1saXN0LWNhc2VzCisgICAgaWYgX21hdGNoX3Rlc3RfZnVuYyBpcyBOb25lOgorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBfbWF0Y2hfdGVzdF9mdW5jKHRlc3QuaWQoKSkKKworCitkZWYgX2lzX2Z1bGxfbWF0Y2hfdGVzdChwYXR0ZXJuKToKKyAgICAjIElmIGEgcGF0dGVybiBjb250YWlucyBhdCBsZWFzdCBvbmUgZG90LCBpdCdzIGNvbnNpZGVyZWQKKyAgICAjIGFzIGEgZnVsbCB0ZXN0IGlkZW50aWZpZXIuCisgICAgIyBFeGFtcGxlOiAndGVzdC50ZXN0X29zLkZpbGVUZXN0cy50ZXN0X2FjY2VzcycuCisgICAgIworICAgICMgUmVqZWN0IHBhdHRlcm5zIHdoaWNoIGNvbnRhaW4gZm5tYXRjaCBwYXR0ZXJuczogJyonLCAnPycsICdbLi4uXScKKyAgICAjIG9yICdbIS4uLl0nLiBGb3IgZXhhbXBsZSwgcmVqZWN0ICd0ZXN0X2FjY2VzcyonLgorICAgIHJldHVybiAoJy4nIGluIHBhdHRlcm4pIGFuZCAobm90IHJlLnNlYXJjaChyJ1s/KlxbXF1dJywgcGF0dGVybikpCisKKworZGVmIHNldF9tYXRjaF90ZXN0cyhwYXR0ZXJucyk6CisgICAgZ2xvYmFsIF9tYXRjaF90ZXN0X2Z1bmMsIF9tYXRjaF90ZXN0X3BhdHRlcm5zCisKKyAgICBpZiBwYXR0ZXJucyA9PSBfbWF0Y2hfdGVzdF9wYXR0ZXJuczoKKyAgICAgICAgIyBObyBjaGFuZ2U6IG5vIG5lZWQgdG8gcmVjb21waWxlIHBhdHRlcm5zLgorICAgICAgICByZXR1cm4KKworICAgIGlmIG5vdCBwYXR0ZXJuczoKKyAgICAgICAgZnVuYyA9IE5vbmUKKyAgICAgICAgIyBzZXRfbWF0Y2hfdGVzdHMoTm9uZSkgYmVoYXZlcyBhcyBzZXRfbWF0Y2hfdGVzdHMoKCkpCisgICAgICAgIHBhdHRlcm5zID0gKCkKKyAgICBlbGlmIGFsbChtYXAoX2lzX2Z1bGxfbWF0Y2hfdGVzdCwgcGF0dGVybnMpKToKKyAgICAgICAgIyBTaW1wbGUgY2FzZTogYWxsIHBhdHRlcm5zIGFyZSBmdWxsIHRlc3QgaWRlbnRpZmllci4KKyAgICAgICAgIyBUaGUgdGVzdC5iaXNlY3QgdXRpbGl0eSBvbmx5IHVzZXMgc3VjaCBmdWxsIHRlc3QgaWRlbnRpZmllcnMuCisgICAgICAgIGZ1bmMgPSBzZXQocGF0dGVybnMpLl9fY29udGFpbnNfXworICAgIGVsc2U6CisgICAgICAgIHJlZ2V4ID0gJ3wnLmpvaW4obWFwKGZubWF0Y2gudHJhbnNsYXRlLCBwYXR0ZXJucykpCisgICAgICAgICMgVGhlIHNlYXJjaCAqaXMqIGNhc2Ugc2Vuc2l0aXZlIG9uIHB1cnBvc2U6CisgICAgICAgICMgZG9uJ3QgdXNlIGZsYWdzPXJlLklHTk9SRUNBU0UKKyAgICAgICAgcmVnZXhfbWF0Y2ggPSByZS5jb21waWxlKHJlZ2V4KS5tYXRjaAorCisgICAgICAgIGRlZiBtYXRjaF90ZXN0X3JlZ2V4KHRlc3RfaWQpOgorICAgICAgICAgICAgaWYgcmVnZXhfbWF0Y2godGVzdF9pZCk6CisgICAgICAgICAgICAgICAgIyBUaGUgcmVnZXggbWF0Y2hzIHRoZSB3aG9sZSBpZGVudGlmaWVyIGxpa2UKKyAgICAgICAgICAgICAgICAjICd0ZXN0LnRlc3Rfb3MuRmlsZVRlc3RzLnRlc3RfYWNjZXNzJworICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgVHJ5IHRvIG1hdGNoIHBhcnRzIG9mIHRoZSB0ZXN0IGlkZW50aWZpZXIuCisgICAgICAgICAgICAgICAgIyBGb3IgZXhhbXBsZSwgc3BsaXQgJ3Rlc3QudGVzdF9vcy5GaWxlVGVzdHMudGVzdF9hY2Nlc3MnCisgICAgICAgICAgICAgICAgIyBpbnRvOiAndGVzdCcsICd0ZXN0X29zJywgJ0ZpbGVUZXN0cycgYW5kICd0ZXN0X2FjY2VzcycuCisgICAgICAgICAgICAgICAgcmV0dXJuIGFueShtYXAocmVnZXhfbWF0Y2gsIHRlc3RfaWQuc3BsaXQoIi4iKSkpCisKKyAgICAgICAgZnVuYyA9IG1hdGNoX3Rlc3RfcmVnZXgKKworICAgICMgQ3JlYXRlIGEgY29weSBzaW5jZSBwYXR0ZXJucyBjYW4gYmUgbXV0YWJsZSBhbmQgc28gbW9kaWZpZWQgbGF0ZXIKKyAgICBfbWF0Y2hfdGVzdF9wYXR0ZXJucyA9IHR1cGxlKHBhdHRlcm5zKQorICAgIF9tYXRjaF90ZXN0X2Z1bmMgPSBmdW5jCisKKworCitkZWYgcnVuX3VuaXR0ZXN0KCpjbGFzc2VzKToKKyAgICAiIiJSdW4gdGVzdHMgZnJvbSB1bml0dGVzdC5UZXN0Q2FzZS1kZXJpdmVkIGNsYXNzZXMuIiIiCisgICAgdmFsaWRfdHlwZXMgPSAodW5pdHRlc3QuVGVzdFN1aXRlLCB1bml0dGVzdC5UZXN0Q2FzZSkKKyAgICBzdWl0ZSA9IHVuaXR0ZXN0LlRlc3RTdWl0ZSgpCisgICAgZm9yIGNscyBpbiBjbGFzc2VzOgorICAgICAgICBpZiBpc2luc3RhbmNlKGNscywgc3RyKToKKyAgICAgICAgICAgIGlmIGNscyBpbiBzeXMubW9kdWxlczoKKyAgICAgICAgICAgICAgICBzdWl0ZS5hZGRUZXN0KHVuaXR0ZXN0LmZpbmRUZXN0Q2FzZXMoc3lzLm1vZHVsZXNbY2xzXSkpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInN0ciBhcmd1bWVudHMgbXVzdCBiZSBrZXlzIGluIHN5cy5tb2R1bGVzIikKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKGNscywgdmFsaWRfdHlwZXMpOgorICAgICAgICAgICAgc3VpdGUuYWRkVGVzdChjbHMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzdWl0ZS5hZGRUZXN0KHVuaXR0ZXN0Lm1ha2VTdWl0ZShjbHMpKQorICAgIF9maWx0ZXJfc3VpdGUoc3VpdGUsIG1hdGNoX3Rlc3QpCisgICAgX3J1bl9zdWl0ZShzdWl0ZSkKKworIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgZG9jc3RyaW5ncy4KKworSEFWRV9ET0NTVFJJTkdTID0gKGNoZWNrX2ltcGxfZGV0YWlsKGNweXRob249RmFsc2UpIG9yCisgICAgICAgICAgICAgICAgICAgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgb3IKKyAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfRE9DX1NUUklOR1MnKSkKKworcmVxdWlyZXNfZG9jc3RyaW5ncyA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9ET0NTVFJJTkdTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgcmVxdWlyZXMgZG9jc3RyaW5ncyIpCisKKworIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIGRvY3Rlc3QgZHJpdmVyLgorCitkZWYgcnVuX2RvY3Rlc3QobW9kdWxlLCB2ZXJib3NpdHk9Tm9uZSk6CisgICAgIiIiUnVuIGRvY3Rlc3Qgb24gdGhlIGdpdmVuIG1vZHVsZS4gIFJldHVybiAoI2ZhaWx1cmVzLCAjdGVzdHMpLgorCisgICAgSWYgb3B0aW9uYWwgYXJndW1lbnQgdmVyYm9zaXR5IGlzIG5vdCBzcGVjaWZpZWQgKG9yIGlzIE5vbmUpLCBwYXNzCisgICAgdGVzdC5zdXBwb3J0J3MgYmVsaWVmIGFib3V0IHZlcmJvc2l0eSBvbiB0byBkb2N0ZXN0LiAgRWxzZSBkb2N0ZXN0J3MKKyAgICB1c3VhbCBiZWhhdmlvciBpcyB1c2VkIChpdCBzZWFyY2hlcyBzeXMuYXJndiBmb3IgLXYpLgorICAgICIiIgorCisgICAgaW1wb3J0IGRvY3Rlc3QKKworICAgIGlmIHZlcmJvc2l0eSBpcyBOb25lOgorICAgICAgICB2ZXJib3NpdHkgPSB2ZXJib3NlCisgICAgZWxzZToKKyAgICAgICAgdmVyYm9zaXR5ID0gTm9uZQorCisgICAgIyBEaXJlY3QgZG9jdGVzdCBvdXRwdXQgKG5vcm1hbGx5IGp1c3QgZXJyb3JzKSB0byByZWFsIHN0ZG91dDsgZG9jdGVzdAorICAgICMgb3V0cHV0IHNob3VsZG4ndCBiZSBjb21wYXJlZCBieSByZWdydGVzdC4KKyAgICBzYXZlX3N0ZG91dCA9IHN5cy5zdGRvdXQKKyAgICBzeXMuc3Rkb3V0ID0gZ2V0X29yaWdpbmFsX3N0ZG91dCgpCisgICAgdHJ5OgorICAgICAgICBmLCB0ID0gZG9jdGVzdC50ZXN0bW9kKG1vZHVsZSwgdmVyYm9zZT12ZXJib3NpdHkpCisgICAgICAgIGlmIGY6CisgICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCIlZCBvZiAlZCBkb2N0ZXN0cyBmYWlsZWQiICUgKGYsIHQpKQorICAgIGZpbmFsbHk6CisgICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAorICAgIGlmIHZlcmJvc2U6CisgICAgICAgIHByaW50ICdkb2N0ZXN0ICglcykgLi4uICVkIHRlc3RzIHdpdGggemVybyBmYWlsdXJlcycgJSAobW9kdWxlLl9fbmFtZV9fLCB0KQorICAgIHJldHVybiBmLCB0CisKKyM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBUaHJlYWRpbmcgc3VwcG9ydCB0byBwcmV2ZW50IHJlcG9ydGluZyByZWZsZWFrcyB3aGVuIHJ1bm5pbmcgcmVncnRlc3QucHkgLVIKKworIyBGbGFnIHVzZWQgYnkgc2F2ZWRfdGVzdF9lbnZpcm9ubWVudCBvZiB0ZXN0LmxpYnJlZ3J0ZXN0LnNhdmVfZW52LAorIyB0byBjaGVjayBpZiBhIHRlc3QgbW9kaWZpZWQgdGhlIGVudmlyb25tZW50LiBUaGUgZmxhZyBzaG91bGQgYmUgc2V0IHRvIEZhbHNlCisjIGJlZm9yZSBydW5uaW5nIGEgbmV3IHRlc3QuCisjCisjIEZvciBleGFtcGxlLCB0aHJlYWRpbmdfY2xlYW51cCgpIHNldHMgdGhlIGZsYWcgaXMgdGhlIGZ1bmN0aW9uIGZhaWxzCisjIHRvIGNsZWFudXAgdGhyZWFkcy4KK2Vudmlyb25tZW50X2FsdGVyZWQgPSBGYWxzZQorCisjIE5PVEU6IHdlIHVzZSB0aHJlYWQuX2NvdW50KCkgcmF0aGVyIHRoYW4gdGhyZWFkaW5nLmVudW1lcmF0ZSgpIChvciB0aGUKKyMgbW9yYWwgZXF1aXZhbGVudCB0aGVyZW9mKSBiZWNhdXNlIGEgdGhyZWFkaW5nLlRocmVhZCBvYmplY3QgaXMgc3RpbGwgYWxpdmUKKyMgdW50aWwgaXRzIF9fYm9vdHN0cmFwKCkgbWV0aG9kIGhhcyByZXR1cm5lZCwgZXZlbiBhZnRlciBpdCBoYXMgYmVlbgorIyB1bnJlZ2lzdGVyZWQgZnJvbSB0aGUgdGhyZWFkaW5nIG1vZHVsZS4KKyMgdGhyZWFkLl9jb3VudCgpLCBvbiB0aGUgb3RoZXIgaGFuZCwgb25seSBnZXRzIGRlY3JlbWVudGVkICphZnRlciogdGhlCisjIF9fYm9vdHN0cmFwKCkgbWV0aG9kIGhhcyByZXR1cm5lZCwgd2hpY2ggZ2l2ZXMgdXMgcmVsaWFibGUgcmVmZXJlbmNlIGNvdW50cworIyBhdCB0aGUgZW5kIG9mIGEgdGVzdCBydW4uCisKK2RlZiB0aHJlYWRpbmdfc2V0dXAoKToKKyAgICBpZiB0aHJlYWQ6CisgICAgICAgIHJldHVybiB0aHJlYWQuX2NvdW50KCksCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIDEsCisKK2RlZiB0aHJlYWRpbmdfY2xlYW51cChuYl90aHJlYWRzKToKKyAgICBpZiBub3QgdGhyZWFkOgorICAgICAgICByZXR1cm4KKworICAgIF9NQVhfQ09VTlQgPSAxMAorICAgIGZvciBjb3VudCBpbiByYW5nZShfTUFYX0NPVU5UKToKKyAgICAgICAgbiA9IHRocmVhZC5fY291bnQoKQorICAgICAgICBpZiBuID09IG5iX3RocmVhZHM6CisgICAgICAgICAgICBicmVhaworICAgICAgICB0aW1lLnNsZWVwKDAuMSkKKyAgICAjIFhYWCBwcmludCBhIHdhcm5pbmcgaW4gY2FzZSBvZiBmYWlsdXJlPworCitkZWYgcmVhcF90aHJlYWRzKGZ1bmMpOgorICAgICIiIlVzZSB0aGlzIGZ1bmN0aW9uIHdoZW4gdGhyZWFkcyBhcmUgYmVpbmcgdXNlZC4gIFRoaXMgd2lsbAorICAgIGVuc3VyZSB0aGF0IHRoZSB0aHJlYWRzIGFyZSBjbGVhbmVkIHVwIGV2ZW4gd2hlbiB0aGUgdGVzdCBmYWlscy4KKyAgICBJZiB0aHJlYWRpbmcgaXMgdW5hdmFpbGFibGUgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdGhpbmcuCisgICAgIiIiCisgICAgaWYgbm90IHRocmVhZDoKKyAgICAgICAgcmV0dXJuIGZ1bmMKKworICAgIEBmdW5jdG9vbHMud3JhcHMoZnVuYykKKyAgICBkZWYgZGVjb3JhdG9yKCphcmdzKToKKyAgICAgICAga2V5ID0gdGhyZWFkaW5nX3NldHVwKCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB0aHJlYWRpbmdfY2xlYW51cCgqa2V5KQorICAgIHJldHVybiBkZWNvcmF0b3IKKworCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHdhaXRfdGhyZWFkc19leGl0KHRpbWVvdXQ9NjAuMCk6CisgICAgIiIiCisgICAgYnBvLTMxMjM0OiBDb250ZXh0IG1hbmFnZXIgdG8gd2FpdCB1bnRpbCBhbGwgdGhyZWFkcyBjcmVhdGVkIGluIHRoZSB3aXRoCisgICAgc3RhdGVtZW50IGV4aXQuCisKKyAgICBVc2UgdGhyZWFkLmNvdW50KCkgdG8gY2hlY2sgaWYgdGhyZWFkcyBleGl0ZWQuIEluZGlyZWN0bHksIHdhaXQgdW50aWwKKyAgICB0aHJlYWRzIGV4aXQgdGhlIGludGVybmFsIHRfYm9vdHN0cmFwKCkgQyBmdW5jdGlvbiBvZiB0aGUgdGhyZWFkIG1vZHVsZS4KKworICAgIHRocmVhZGluZ19zZXR1cCgpIGFuZCB0aHJlYWRpbmdfY2xlYW51cCgpIGFyZSBkZXNpZ25lZCB0byBlbWl0IGEgd2FybmluZworICAgIGlmIGEgdGVzdCBsZWF2ZXMgcnVubmluZyB0aHJlYWRzIGluIHRoZSBiYWNrZ3JvdW5kLiBUaGlzIGNvbnRleHQgbWFuYWdlcgorICAgIGlzIGRlc2lnbmVkIHRvIGNsZWFudXAgdGhyZWFkcyBzdGFydGVkIGJ5IHRoZSB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgpCisgICAgd2hpY2ggZG9lc24ndCBhbGxvdyB0byB3YWl0IGZvciB0aHJlYWQgZXhpdCwgd2hlcmVhcyB0aHJlYWQuVGhyZWFkIGhhcyBhCisgICAgam9pbigpIG1ldGhvZC4KKyAgICAiIiIKKyAgICBvbGRfY291bnQgPSB0aHJlYWQuX2NvdW50KCkKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIGRlYWRsaW5lID0gc3RhcnRfdGltZSArIHRpbWVvdXQKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIGNvdW50ID0gdGhyZWFkLl9jb3VudCgpCisgICAgICAgICAgICBpZiBjb3VudCA8PSBvbGRfY291bnQ6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIHRpbWUudGltZSgpID4gZGVhZGxpbmU6CisgICAgICAgICAgICAgICAgZHQgPSB0aW1lLnRpbWUoKSAtIHN0YXJ0X3RpbWUKKyAgICAgICAgICAgICAgICBtc2cgPSAoIndhaXRfdGhyZWFkcygpIGZhaWxlZCB0byBjbGVhbnVwICVzICIKKyAgICAgICAgICAgICAgICAgICAgICAgInRocmVhZHMgYWZ0ZXIgJS4xZiBzZWNvbmRzICIKKyAgICAgICAgICAgICAgICAgICAgICAgIihjb3VudDogJXMsIG9sZCBjb3VudDogJXMpIgorICAgICAgICAgICAgICAgICAgICAgICAlIChjb3VudCAtIG9sZF9jb3VudCwgZHQsIGNvdW50LCBvbGRfY291bnQpKQorICAgICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKG1zZykKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4wMTApCisgICAgICAgICAgICBnY19jb2xsZWN0KCkKKworCitkZWYgcmVhcF9jaGlsZHJlbigpOgorICAgICIiIlVzZSB0aGlzIGZ1bmN0aW9uIGF0IHRoZSBlbmQgb2YgdGVzdF9tYWluKCkgd2hlbmV2ZXIgc3ViLXByb2Nlc3NlcworICAgIGFyZSBzdGFydGVkLiAgVGhpcyB3aWxsIGhlbHAgZW5zdXJlIHRoYXQgbm8gZXh0cmEgY2hpbGRyZW4gKHpvbWJpZXMpCisgICAgc3RpY2sgYXJvdW5kIHRvIGhvZyByZXNvdXJjZXMgYW5kIGNyZWF0ZSBwcm9ibGVtcyB3aGVuIGxvb2tpbmcKKyAgICBmb3IgcmVmbGVha3MuCisgICAgIiIiCisKKyAgICAjIFJlYXAgYWxsIG91ciBkZWFkIGNoaWxkIHByb2Nlc3NlcyBzbyB3ZSBkb24ndCBsZWF2ZSB6b21iaWVzIGFyb3VuZC4KKyAgICAjIFRoZXNlIGhvZyByZXNvdXJjZXMgYW5kIG1pZ2h0IGJlIGNhdXNpbmcgc29tZSBvZiB0aGUgYnVpbGRib3RzIHRvIGRpZS4KKyAgICBpZiBoYXNhdHRyKG9zLCAnd2FpdHBpZCcpOgorICAgICAgICBhbnlfcHJvY2VzcyA9IC0xCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIFdpbmRvd3MuICBUaGF0J3Mgb2suCisgICAgICAgICAgICAgICAgcGlkLCBzdGF0dXMgPSBvcy53YWl0cGlkKGFueV9wcm9jZXNzLCBvcy5XTk9IQU5HKQorICAgICAgICAgICAgICAgIGlmIHBpZCA9PSAwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgIGJyZWFrCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgc3RhcnRfdGhyZWFkcyh0aHJlYWRzLCB1bmxvY2s9Tm9uZSk6CisgICAgdGhyZWFkcyA9IGxpc3QodGhyZWFkcykKKyAgICBzdGFydGVkID0gW10KKyAgICB0cnk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciB0IGluIHRocmVhZHM6CisgICAgICAgICAgICAgICAgdC5zdGFydCgpCisgICAgICAgICAgICAgICAgc3RhcnRlZC5hcHBlbmQodCkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgICAgICBwcmludCgiQ2FuJ3Qgc3RhcnQgJWQgdGhyZWFkcywgb25seSAlZCB0aHJlYWRzIHN0YXJ0ZWQiICUKKyAgICAgICAgICAgICAgICAgICAgICAobGVuKHRocmVhZHMpLCBsZW4oc3RhcnRlZCkpKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgeWllbGQKKyAgICBmaW5hbGx5OgorICAgICAgICBpZiB1bmxvY2s6CisgICAgICAgICAgICB1bmxvY2soKQorICAgICAgICBlbmR0aW1lID0gc3RhcnR0aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgZm9yIHRpbWVvdXQgaW4gcmFuZ2UoMSwgMTYpOgorICAgICAgICAgICAgZW5kdGltZSArPSA2MAorICAgICAgICAgICAgZm9yIHQgaW4gc3RhcnRlZDoKKyAgICAgICAgICAgICAgICB0LmpvaW4obWF4KGVuZHRpbWUgLSB0aW1lLnRpbWUoKSwgMC4wMSkpCisgICAgICAgICAgICBzdGFydGVkID0gW3QgZm9yIHQgaW4gc3RhcnRlZCBpZiB0LmlzQWxpdmUoKV0KKyAgICAgICAgICAgIGlmIG5vdCBzdGFydGVkOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgIHByaW50KCdVbmFibGUgdG8gam9pbiAlZCB0aHJlYWRzIGR1cmluZyBhIHBlcmlvZCBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgJyVkIG1pbnV0ZXMnICUgKGxlbihzdGFydGVkKSwgdGltZW91dCkpCisgICAgc3RhcnRlZCA9IFt0IGZvciB0IGluIHN0YXJ0ZWQgaWYgdC5pc0FsaXZlKCldCisgICAgaWYgc3RhcnRlZDoKKyAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoJ1VuYWJsZSB0byBqb2luICVkIHRocmVhZHMnICUgbGVuKHN0YXJ0ZWQpKQorCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIHN3YXBfYXR0cihvYmosIGF0dHIsIG5ld192YWwpOgorICAgICIiIlRlbXBvcmFyeSBzd2FwIG91dCBhbiBhdHRyaWJ1dGUgd2l0aCBhIG5ldyBvYmplY3QuCisKKyAgICBVc2FnZToKKyAgICAgICAgd2l0aCBzd2FwX2F0dHIob2JqLCAiYXR0ciIsIDUpOgorICAgICAgICAgICAgLi4uCisKKyAgICAgICAgVGhpcyB3aWxsIHNldCBvYmouYXR0ciB0byA1IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHdpdGg6IGJsb2NrLAorICAgICAgICByZXN0b3JpbmcgdGhlIG9sZCB2YWx1ZSBhdCB0aGUgZW5kIG9mIHRoZSBibG9jay4gSWYgYGF0dHJgIGRvZXNuJ3QKKyAgICAgICAgZXhpc3Qgb24gYG9iamAsIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlbiBkZWxldGVkIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgIGJsb2NrLgorCisgICAgICAgIFRoZSBvbGQgdmFsdWUgKG9yIE5vbmUgaWYgaXQgZG9lc24ndCBleGlzdCkgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUKKyAgICAgICAgdGFyZ2V0IG9mIHRoZSAiYXMiIGNsYXVzZSwgaWYgdGhlcmUgaXMgb25lLgorICAgICIiIgorICAgIGlmIGhhc2F0dHIob2JqLCBhdHRyKToKKyAgICAgICAgcmVhbF92YWwgPSBnZXRhdHRyKG9iaiwgYXR0cikKKyAgICAgICAgc2V0YXR0cihvYmosIGF0dHIsIG5ld192YWwpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHlpZWxkIHJlYWxfdmFsCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZXRhdHRyKG9iaiwgYXR0ciwgcmVhbF92YWwpCisgICAgZWxzZToKKyAgICAgICAgc2V0YXR0cihvYmosIGF0dHIsIG5ld192YWwpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBoYXNhdHRyKG9iaiwgYXR0cik6CisgICAgICAgICAgICAgICAgZGVsYXR0cihvYmosIGF0dHIpCisKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgc3dhcF9pdGVtKG9iaiwgaXRlbSwgbmV3X3ZhbCk6CisgICAgIiIiVGVtcG9yYXJ5IHN3YXAgb3V0IGFuIGl0ZW0gd2l0aCBhIG5ldyBvYmplY3QuCisKKyAgICBVc2FnZToKKyAgICAgICAgd2l0aCBzd2FwX2l0ZW0ob2JqLCAiaXRlbSIsIDUpOgorICAgICAgICAgICAgLi4uCisKKyAgICAgICAgVGhpcyB3aWxsIHNldCBvYmpbIml0ZW0iXSB0byA1IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHdpdGg6IGJsb2NrLAorICAgICAgICByZXN0b3JpbmcgdGhlIG9sZCB2YWx1ZSBhdCB0aGUgZW5kIG9mIHRoZSBibG9jay4gSWYgYGl0ZW1gIGRvZXNuJ3QKKyAgICAgICAgZXhpc3Qgb24gYG9iamAsIGl0IHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlbiBkZWxldGVkIGF0IHRoZSBlbmQgb2YgdGhlCisgICAgICAgIGJsb2NrLgorCisgICAgICAgIFRoZSBvbGQgdmFsdWUgKG9yIE5vbmUgaWYgaXQgZG9lc24ndCBleGlzdCkgd2lsbCBiZSBhc3NpZ25lZCB0byB0aGUKKyAgICAgICAgdGFyZ2V0IG9mIHRoZSAiYXMiIGNsYXVzZSwgaWYgdGhlcmUgaXMgb25lLgorICAgICIiIgorICAgIGlmIGl0ZW0gaW4gb2JqOgorICAgICAgICByZWFsX3ZhbCA9IG9ialtpdGVtXQorICAgICAgICBvYmpbaXRlbV0gPSBuZXdfdmFsCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHlpZWxkIHJlYWxfdmFsCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvYmpbaXRlbV0gPSByZWFsX3ZhbAorICAgIGVsc2U6CisgICAgICAgIG9ialtpdGVtXSA9IG5ld192YWwKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGlmIGl0ZW0gaW4gb2JqOgorICAgICAgICAgICAgICAgIGRlbCBvYmpbaXRlbV0KKworZGVmIHB5M2tfYnl0ZXMoYik6CisgICAgIiIiRW11bGF0ZSB0aGUgcHkzayBieXRlcygpIGNvbnN0cnVjdG9yLgorCisgICAgTk9URTogVGhpcyBpcyBvbmx5IGEgYmVzdCBlZmZvcnQgZnVuY3Rpb24uCisgICAgIiIiCisgICAgdHJ5OgorICAgICAgICAjIG1lbW9yeXZpZXc/CisgICAgICAgIHJldHVybiBiLnRvYnl0ZXMoKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBpdGVyYWJsZSBvZiBpbnRzPworICAgICAgICAgICAgcmV0dXJuIGIiIi5qb2luKGNocih4KSBmb3IgeCBpbiBiKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIGJ5dGVzKGIpCisKK3JlcXVpcmVzX3R5cGVfY29sbGVjdGluZyA9IHVuaXR0ZXN0LnNraXBJZihoYXNhdHRyKHN5cywgJ2dldGNvdW50cycpLAorICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGVzIGFyZSBpbW1vcnRhbCBpZiBDT1VOVF9BTExPQ1MgaXMgZGVmaW5lZCcpCisKK2RlZiBhcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKToKKyAgICAiIiJSZXR1cm4gYSBsaXN0IG9mIGNvbW1hbmQtbGluZSBhcmd1bWVudHMgcmVwcm9kdWNpbmcgdGhlIGN1cnJlbnQKKyAgICBzZXR0aW5ncyBpbiBzeXMuZmxhZ3MuIiIiCisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKKworZGVmIHN0cmlwX3B5dGhvbl9zdGRlcnIoc3RkZXJyKToKKyAgICAiIiJTdHJpcCB0aGUgc3RkZXJyIG9mIGEgUHl0aG9uIHByb2Nlc3MgZnJvbSBwb3RlbnRpYWwgZGVidWcgb3V0cHV0CisgICAgZW1pdHRlZCBieSB0aGUgaW50ZXJwcmV0ZXIuCisKKyAgICBUaGlzIHdpbGwgdHlwaWNhbGx5IGJlIHJ1biBvbiB0aGUgcmVzdWx0IG9mIHRoZSBjb21tdW5pY2F0ZSgpIG1ldGhvZAorICAgIG9mIGEgc3VicHJvY2Vzcy5Qb3BlbiBvYmplY3QuCisgICAgIiIiCisgICAgc3RkZXJyID0gcmUuc3ViKGJyIlxbXGQrIHJlZnNcXVxyP1xuPyQiLCBiIiIsIHN0ZGVycikuc3RyaXAoKQorICAgIHJldHVybiBzdGRlcnIKKworCitkZWYgY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcodGVzdCwgaXRlciwgY2xzLCBhcmdzPSgpKToKKyAgICBjbGFzcyBBKGNscyk6CisgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICAgICAgZG9uZVswXSA9IFRydWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBuZXh0KGl0KQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZG9uZSA9IFtGYWxzZV0KKyAgICBpdCA9IGl0ZXIoQSgqYXJncykpCisgICAgIyBJc3N1ZSAyNjQ5NDogU2hvdWxkbid0IGNyYXNoCisgICAgdGVzdC5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCisgICAgIyBUaGUgc2VxdWVuY2Ugc2hvdWxkIGJlIGRlYWxsb2NhdGVkIGp1c3QgYWZ0ZXIgdGhlIGVuZCBvZiBpdGVyYXRpbmcKKyAgICBnY19jb2xsZWN0KCkKKyAgICB0ZXN0LmFzc2VydFRydWUoZG9uZVswXSkKKworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBkaXNhYmxlX2djKCk6CisgICAgaGF2ZV9nYyA9IGdjLmlzZW5hYmxlZCgpCisgICAgZ2MuZGlzYWJsZSgpCisgICAgdHJ5OgorICAgICAgICB5aWVsZAorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIGhhdmVfZ2M6CisgICAgICAgICAgICBnYy5lbmFibGUoKQorCisKK2RlZiBweXRob25faXNfb3B0aW1pemVkKCk6CisgICAgIiIiRmluZCBpZiBQeXRob24gd2FzIGJ1aWx0IHdpdGggb3B0aW1pemF0aW9ucy4iIiIKKyAgICBjZmxhZ3MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZX0NGTEFHUycpIG9yICcnCisgICAgZmluYWxfb3B0ID0gIiIKKyAgICBmb3Igb3B0IGluIGNmbGFncy5zcGxpdCgpOgorICAgICAgICBpZiBvcHQuc3RhcnRzd2l0aCgnLU8nKToKKyAgICAgICAgICAgIGZpbmFsX29wdCA9IG9wdAorICAgIHJldHVybiBmaW5hbF9vcHQgbm90IGluICgnJywgJy1PMCcsICctT2cnKQorCisKK2NsYXNzIFN1cHByZXNzQ3Jhc2hSZXBvcnQ6CisgICAgIiIiVHJ5IHRvIHByZXZlbnQgYSBjcmFzaCByZXBvcnQgZnJvbSBwb3BwaW5nIHVwLgorCisgICAgT24gV2luZG93cywgZG9uJ3QgZGlzcGxheSB0aGUgV2luZG93cyBFcnJvciBSZXBvcnRpbmcgZGlhbG9nLiAgT24gVU5JWCwKKyAgICBkaXNhYmxlIHRoZSBjcmVhdGlvbiBvZiBjb3JlZHVtcCBmaWxlLgorICAgICIiIgorICAgIG9sZF92YWx1ZSA9IE5vbmUKKyAgICBvbGRfbW9kZXMgPSBOb25lCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICAiIiJPbiBXaW5kb3dzLCBkaXNhYmxlIFdpbmRvd3MgRXJyb3IgUmVwb3J0aW5nIGRpYWxvZ3MgdXNpbmcKKyAgICAgICAgU2V0RXJyb3JNb2RlLgorCisgICAgICAgIE9uIFVOSVgsIHRyeSB0byBzYXZlIHRoZSBwcmV2aW91cyBjb3JlIGZpbGUgc2l6ZSBsaW1pdCwgdGhlbiBzZXQKKyAgICAgICAgc29mdCBsaW1pdCB0byAwLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ3dpbicpOgorICAgICAgICAgICAgIyBzZWUgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L3dpbmRvd3MvZGVza3RvcC9tczY4MDYyMS5hc3B4CisgICAgICAgICAgICAjIEdldEVycm9yTW9kZSBpcyBub3QgYXZhaWxhYmxlIG9uIFdpbmRvd3MgWFAgYW5kIFdpbmRvd3MgU2VydmVyIDIwMDMsCisgICAgICAgICAgICAjIGJ1dCBTZXRFcnJvck1vZGUgcmV0dXJucyB0aGUgcHJldmlvdXMgdmFsdWUsIHNvIHdlIGNhbiB1c2UgdGhhdAorICAgICAgICAgICAgaW1wb3J0IGN0eXBlcworICAgICAgICAgICAgc2VsZi5fazMyID0gY3R5cGVzLndpbmRsbC5rZXJuZWwzMgorICAgICAgICAgICAgU0VNX05PR1BGQVVMVEVSUk9SQk9YID0gMHgwMgorICAgICAgICAgICAgc2VsZi5vbGRfdmFsdWUgPSBzZWxmLl9rMzIuU2V0RXJyb3JNb2RlKFNFTV9OT0dQRkFVTFRFUlJPUkJPWCkKKyAgICAgICAgICAgIHNlbGYuX2szMi5TZXRFcnJvck1vZGUoc2VsZi5vbGRfdmFsdWUgfCBTRU1fTk9HUEZBVUxURVJST1JCT1gpCisKKyAgICAgICAgICAgICMgU3VwcHJlc3MgYXNzZXJ0IGRpYWxvZ3MgaW4gZGVidWcgYnVpbGRzCisgICAgICAgICAgICAjIChzZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIzMzE0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKKyAgICAgICAgICAgICAgICBfdGVzdGNhcGkuQ3J0U2V0UmVwb3J0TW9kZQorICAgICAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgICAgICMgbm8gX3Rlc3RjYXBpIG9yIGEgcmVsZWFzZSBidWlsZAorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5vbGRfbW9kZXMgPSB7fQorICAgICAgICAgICAgICAgIGZvciByZXBvcnRfdHlwZSBpbiBbX3Rlc3RjYXBpLkNSVF9XQVJOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLkNSVF9FUlJPUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5DUlRfQVNTRVJUXToKKyAgICAgICAgICAgICAgICAgICAgb2xkX21vZGUgPSBfdGVzdGNhcGkuQ3J0U2V0UmVwb3J0TW9kZShyZXBvcnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGVzdGNhcGkuQ1JUREJHX01PREVfRklMRSkKKyAgICAgICAgICAgICAgICAgICAgb2xkX2ZpbGUgPSBfdGVzdGNhcGkuQ3J0U2V0UmVwb3J0RmlsZShyZXBvcnRfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGVzdGNhcGkuQ1JUREJHX0ZJTEVfU1RERVJSKQorICAgICAgICAgICAgICAgICAgICBzZWxmLm9sZF9tb2Rlc1tyZXBvcnRfdHlwZV0gPSBvbGRfbW9kZSwgb2xkX2ZpbGUKKworICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCByZXNvdXJjZQorICAgICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgICAgIHJlc291cmNlID0gTm9uZQorCisgICAgICAgICAgICBpZiByZXNvdXJjZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYub2xkX3ZhbHVlID0gcmVzb3VyY2UuZ2V0cmxpbWl0KHJlc291cmNlLlJMSU1JVF9DT1JFKQorICAgICAgICAgICAgICAgICAgICByZXNvdXJjZS5zZXRybGltaXQocmVzb3VyY2UuUkxJTUlUX0NPUkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgc2VsZi5vbGRfdmFsdWVbMV0pKQorICAgICAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlICdDcmFzaCBSZXBvcnRlcicgb24gT1NYIHdhcyBjb25maWd1cmVkCisgICAgICAgICAgICAgICAgIyBpbiAnRGV2ZWxvcGVyJyBtb2RlIGFuZCB3YXJuIHRoYXQgaXQgd2lsbCBnZXQgdHJpZ2dlcmVkCisgICAgICAgICAgICAgICAgIyB3aGVuIGl0IGlzLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoaXMgY29udGV4dCBtYW5hZ2VyIGlzIHVzZWQgaW4gdGVzdHMKKyAgICAgICAgICAgICAgICAjIHRoYXQgbWlnaHQgdHJpZ2dlciB0aGUgbmV4dCBtYW5hZ2VyLgorICAgICAgICAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgICAgICAgICAgICAgY21kID0gWycvdXNyL2Jpbi9kZWZhdWx0cycsICdyZWFkJywKKyAgICAgICAgICAgICAgICAgICAgICAgJ2NvbS5hcHBsZS5DcmFzaFJlcG9ydGVyJywgJ0RpYWxvZ1R5cGUnXQorICAgICAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgICAgICAgICAgICAgc3Rkb3V0ID0gcHJvYy5jb21tdW5pY2F0ZSgpWzBdCisgICAgICAgICAgICAgICAgaWYgc3Rkb3V0LnN0cmlwKCkgPT0gYidkZXZlbG9wZXInOgorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJ0aGlzIHRlc3QgdHJpZ2dlcnMgdGhlIENyYXNoIFJlcG9ydGVyLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoYXQgaXMgaW50ZW50aW9uYWwiKQorICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsICppZ25vcmVfZXhjKToKKyAgICAgICAgIiIiUmVzdG9yZSBXaW5kb3dzIEVycm9yTW9kZSBvciBjb3JlIGZpbGUgYmVoYXZpb3IgdG8gaW5pdGlhbCB2YWx1ZS4iIiIKKyAgICAgICAgaWYgc2VsZi5vbGRfdmFsdWUgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgICAgIHNlbGYuX2szMi5TZXRFcnJvck1vZGUoc2VsZi5vbGRfdmFsdWUpCisKKyAgICAgICAgICAgIGlmIHNlbGYub2xkX21vZGVzOgorICAgICAgICAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKKyAgICAgICAgICAgICAgICBmb3IgcmVwb3J0X3R5cGUsIChvbGRfbW9kZSwgb2xkX2ZpbGUpIGluIHNlbGYub2xkX21vZGVzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgICAgIF90ZXN0Y2FwaS5DcnRTZXRSZXBvcnRNb2RlKHJlcG9ydF90eXBlLCBvbGRfbW9kZSkKKyAgICAgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLkNydFNldFJlcG9ydEZpbGUocmVwb3J0X3R5cGUsIG9sZF9maWxlKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaW1wb3J0IHJlc291cmNlCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcmVzb3VyY2Uuc2V0cmxpbWl0KHJlc291cmNlLlJMSU1JVF9DT1JFLCBzZWxmLm9sZF92YWx1ZSkKKyAgICAgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcworCisKK2RlZiBfY3Jhc2hfcHl0aG9uKCk6CisgICAgIiIiRGVsaWJlcmF0ZSBjcmFzaCBvZiBQeXRob24uCisKKyAgICBQeXRob24gY2FuIGJlIGtpbGxlZCBieSBhIHNlZ21lbnRhdGlvbiBmYXVsdCAoU0lHU0VHViksIGEgYnVzIGVycm9yCisgICAgKFNJR0JVUyksIG9yIGEgZGlmZmVyZW50IGVycm9yIGRlcGVuZGluZyBvbiB0aGUgcGxhdGZvcm0uCisKKyAgICBVc2UgU3VwcHJlc3NDcmFzaFJlcG9ydCgpIHRvIHByZXZlbnQgYSBjcmFzaCByZXBvcnQgZnJvbSBwb3BwaW5nIHVwLgorICAgICIiIgorCisgICAgaW1wb3J0IF90ZXN0Y2FwaQorICAgIHdpdGggU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICBfdGVzdGNhcGkuX3JlYWRfbnVsbCgpCisKKworZGVmIGZkX2NvdW50KCk6CisgICAgIiIiQ291bnQgdGhlIG51bWJlciBvZiBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuCisgICAgIiIiCisgICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcsICdmcmVlYnNkJykpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoIi9wcm9jL3NlbGYvZmQiKQorICAgICAgICAgICAgIyBTdWJzdHJhY3Qgb25lIGJlY2F1c2UgbGlzdGRpcigpIG9wZW5zIGludGVybmFsbHkgYSBmaWxlCisgICAgICAgICAgICAjIGRlc2NyaXB0b3IgdG8gbGlzdCB0aGUgY29udGVudCBvZiB0aGUgL3Byb2Mvc2VsZi9mZC8gZGlyZWN0b3J5LgorICAgICAgICAgICAgcmV0dXJuIGxlbihuYW1lcykgLSAxCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5lcnJubyAhPSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgcmFpc2UKKworICAgIE1BWEZEID0gMjU2CisgICAgaWYgaGFzYXR0cihvcywgJ3N5c2NvbmYnKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgTUFYRkQgPSBvcy5zeXNjb25mKCJTQ19PUEVOX01BWCIpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgcGFzcworCisgICAgb2xkX21vZGVzID0gTm9uZQorICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAjIGJwby0yNTMwNiwgYnBvLTMxMDA5OiBDYWxsIENydFNldFJlcG9ydE1vZGUoKSB0byBub3Qga2lsbCB0aGUgcHJvY2VzcworICAgICAgICAjIG9uIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yIGlmIFB5dGhvbiBpcyBjb21waWxlZCBpbiBkZWJ1ZyBtb2RlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlCisgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIEltcG9ydEVycm9yKToKKyAgICAgICAgICAgICMgbm8gbXN2Y3J0IG9yIGEgcmVsZWFzZSBidWlsZAorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgb2xkX21vZGVzID0ge30KKyAgICAgICAgICAgIGZvciByZXBvcnRfdHlwZSBpbiAobXN2Y3J0LkNSVF9XQVJOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ1JUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ1JUX0FTU0VSVCk6CisgICAgICAgICAgICAgICAgb2xkX21vZGVzW3JlcG9ydF90eXBlXSA9IG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKHJlcG9ydF90eXBlLCAwKQorCisgICAgdHJ5OgorICAgICAgICBjb3VudCA9IDAKKyAgICAgICAgZm9yIGZkIGluIHJhbmdlKE1BWEZEKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIFByZWZlciBkdXAoKSBvdmVyIGZzdGF0KCkuIGZzdGF0KCkgY2FuIHJlcXVpcmUgaW5wdXQvb3V0cHV0CisgICAgICAgICAgICAgICAgIyB3aGVyZWFzIGR1cCgpIGRvZXNuJ3QuCisgICAgICAgICAgICAgICAgZmQyID0gb3MuZHVwKGZkKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVCQURGOgorICAgICAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBvcy5jbG9zZShmZDIpCisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgIGZpbmFsbHk6CisgICAgICAgIGlmIG9sZF9tb2RlcyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGZvciByZXBvcnRfdHlwZSBpbiAobXN2Y3J0LkNSVF9XQVJOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ1JUX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc3ZjcnQuQ1JUX0FTU0VSVCk6CisgICAgICAgICAgICAgICAgbXN2Y3J0LkNydFNldFJlcG9ydE1vZGUocmVwb3J0X3R5cGUsIG9sZF9tb2Rlc1tyZXBvcnRfdHlwZV0pCisKKyAgICByZXR1cm4gY291bnQKKworCitjbGFzcyBTYXZlU2lnbmFsczoKKyAgICAiIiIKKyAgICBTYXZlIGFuIHJlc3RvcmUgc2lnbmFsIGhhbmRsZXJzLgorCisgICAgVGhpcyBjbGFzcyBpcyBvbmx5IGFibGUgdG8gc2F2ZS9yZXN0b3JlIHNpZ25hbCBoYW5kbGVycyByZWdpc3RlcmVkCisgICAgYnkgdGhlIFB5dGhvbiBzaWduYWwgbW9kdWxlOiBzZWUgYnBvLTEzMjg1IGZvciAiZXh0ZXJuYWwiIHNpZ25hbAorICAgIGhhbmRsZXJzLgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBpbXBvcnQgc2lnbmFsCisgICAgICAgIHNlbGYuc2lnbmFsID0gc2lnbmFsCisgICAgICAgIHNlbGYuc2lnbmFscyA9IGxpc3QocmFuZ2UoMSwgc2lnbmFsLk5TSUcpKQorICAgICAgICAjIFNJR0tJTEwgYW5kIFNJR1NUT1Agc2lnbmFscyBjYW5ub3QgYmUgaWdub3JlZCBub3IgY2F0Y2hlZAorICAgICAgICBmb3Igc2lnbmFtZSBpbiAoJ1NJR0tJTEwnLCAnU0lHU1RPUCcpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNpZ251bSA9IGdldGF0dHIoc2lnbmFsLCBzaWduYW1lKQorICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLnNpZ25hbHMucmVtb3ZlKHNpZ251bSkKKyAgICAgICAgc2VsZi5oYW5kbGVycyA9IHt9CisKKyAgICBkZWYgc2F2ZShzZWxmKToKKyAgICAgICAgZm9yIHNpZ251bSBpbiBzZWxmLnNpZ25hbHM6CisgICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5zaWduYWwuZ2V0c2lnbmFsKHNpZ251bSkKKyAgICAgICAgICAgIGlmIGhhbmRsZXIgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAjIGdldHNpZ25hbCgpIHJldHVybnMgTm9uZSBpZiBhIHNpZ25hbCBoYW5kbGVyIHdhcyBub3QKKyAgICAgICAgICAgICAgICAjIHJlZ2lzdGVyZWQgYnkgdGhlIFB5dGhvbiBzaWduYWwgbW9kdWxlLAorICAgICAgICAgICAgICAgICMgYW5kIHRoZSBoYW5kbGVyIGlzIG5vdCBTSUdfREZMIG5vciBTSUdfSUdOLgorICAgICAgICAgICAgICAgICMKKyAgICAgICAgICAgICAgICAjIElnbm9yZSB0aGUgc2lnbmFsOiB3ZSBjYW5ub3QgcmVzdG9yZSB0aGUgaGFuZGxlci4KKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgc2VsZi5oYW5kbGVyc1tzaWdudW1dID0gaGFuZGxlcgorCisgICAgZGVmIHJlc3RvcmUoc2VsZik6CisgICAgICAgIGZvciBzaWdudW0sIGhhbmRsZXIgaW4gc2VsZi5oYW5kbGVycy5pdGVtcygpOgorICAgICAgICAgICAgc2VsZi5zaWduYWwuc2lnbmFsKHNpZ251bSwgaGFuZGxlcikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3N1cHBvcnQvc2NyaXB0X2hlbHBlci5weSBiL0xpYi90ZXN0L3N1cHBvcnQvc2NyaXB0X2hlbHBlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDZjZGMzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3Qvc3VwcG9ydC9zY3JpcHRfaGVscGVyLnB5CkBAIC0wLDAgKzEsMTcwIEBACisjIENvbW1vbiB1dGlsaXR5IGZ1bmN0aW9ucyB1c2VkIGJ5IHZhcmlvdXMgc2NyaXB0IGV4ZWN1dGlvbiB0ZXN0cworIyAgZS5nLiB0ZXN0X2NtZF9saW5lLCB0ZXN0X2NtZF9saW5lX3NjcmlwdCBhbmQgdGVzdF9ydW5weQorCitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IG9zLnBhdGgKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBweV9jb21waWxlCitpbXBvcnQgY29udGV4dGxpYgoraW1wb3J0IHNodXRpbAordHJ5OgorICAgIGltcG9ydCB6aXBmaWxlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgIyBJZiBQeXRob24gaXMgYnVpbGQgd2l0aG91dCBVbmljb2RlIHN1cHBvcnQsIGltcG9ydGluZyBfaW8gd2lsbAorICAgICMgZmFpbCwgd2hpY2gsIGluIHR1cm4sIG1lYW5zIHRoYXQgemlwZmlsZSBjYW5ub3QgYmUgaW1wb3J0ZWQKKyAgICAjIE1vc3Qgb2YgdGhpcyBtb2R1bGUgY2FuIHRoZW4gc3RpbGwgYmUgdXNlZC4KKyAgICBwYXNzCisKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBzdHJpcF9weXRob25fc3RkZXJyCisKKyMgRXhlY3V0aW5nIHRoZSBpbnRlcnByZXRlciBpbiBhIHN1YnByb2Nlc3MKK2RlZiBfYXNzZXJ0X3B5dGhvbihleHBlY3RlZF9zdWNjZXNzLCAqYXJncywgKiplbnZfdmFycyk6CisgICAgY21kX2xpbmUgPSBbc3lzLmV4ZWN1dGFibGVdCisgICAgaWYgbm90IGVudl92YXJzOgorICAgICAgICBjbWRfbGluZS5hcHBlbmQoJy1FJykKKyAgICBjbWRfbGluZS5leHRlbmQoYXJncykKKyAgICAjIE5lZWQgdG8gcHJlc2VydmUgdGhlIG9yaWdpbmFsIGVudmlyb25tZW50LCBmb3IgaW4tcGxhY2UgdGVzdGluZyBvZgorICAgICMgc2hhcmVkIGxpYnJhcnkgYnVpbGRzLgorICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgZW52LnVwZGF0ZShlbnZfdmFycykKKyAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWRfbGluZSwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgZW52PWVudikKKyAgICB0cnk6CisgICAgICAgIG91dCwgZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgZmluYWxseToKKyAgICAgICAgc3VicHJvY2Vzcy5fY2xlYW51cCgpCisgICAgICAgIHAuc3Rkb3V0LmNsb3NlKCkKKyAgICAgICAgcC5zdGRlcnIuY2xvc2UoKQorICAgIHJjID0gcC5yZXR1cm5jb2RlCisgICAgZXJyID0gIHN0cmlwX3B5dGhvbl9zdGRlcnIoZXJyKQorICAgIGlmIChyYyBhbmQgZXhwZWN0ZWRfc3VjY2Vzcykgb3IgKG5vdCByYyBhbmQgbm90IGV4cGVjdGVkX3N1Y2Nlc3MpOgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigKKyAgICAgICAgICAgICJQcm9jZXNzIHJldHVybiBjb2RlIGlzICVkLCAiCisgICAgICAgICAgICAic3RkZXJyIGZvbGxvd3M6XG4lcyIgJSAocmMsIGVyci5kZWNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpKSkKKyAgICByZXR1cm4gcmMsIG91dCwgZXJyCisKK2RlZiBhc3NlcnRfcHl0aG9uX29rKCphcmdzLCAqKmVudl92YXJzKToKKyAgICAiIiIKKyAgICBBc3NlcnQgdGhhdCBydW5uaW5nIHRoZSBpbnRlcnByZXRlciB3aXRoIGBhcmdzYCBhbmQgb3B0aW9uYWwgZW52aXJvbm1lbnQKKyAgICB2YXJpYWJsZXMgYGVudl92YXJzYCBpcyBvayBhbmQgcmV0dXJuIGEgKHJldHVybiBjb2RlLCBzdGRvdXQsIHN0ZGVycikgdHVwbGUuCisgICAgIiIiCisgICAgcmV0dXJuIF9hc3NlcnRfcHl0aG9uKFRydWUsICphcmdzLCAqKmVudl92YXJzKQorCitkZWYgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCphcmdzLCAqKmVudl92YXJzKToKKyAgICAiIiIKKyAgICBBc3NlcnQgdGhhdCBydW5uaW5nIHRoZSBpbnRlcnByZXRlciB3aXRoIGBhcmdzYCBhbmQgb3B0aW9uYWwgZW52aXJvbm1lbnQKKyAgICB2YXJpYWJsZXMgYGVudl92YXJzYCBmYWlscyBhbmQgcmV0dXJuIGEgKHJldHVybiBjb2RlLCBzdGRvdXQsIHN0ZGVycikgdHVwbGUuCisgICAgIiIiCisgICAgcmV0dXJuIF9hc3NlcnRfcHl0aG9uKEZhbHNlLCAqYXJncywgKiplbnZfdmFycykKKworZGVmIHB5dGhvbl9leGl0X2NvZGUoKmFyZ3MpOgorICAgIGNtZF9saW5lID0gW3N5cy5leGVjdXRhYmxlLCAnLUUnXQorICAgIGNtZF9saW5lLmV4dGVuZChhcmdzKQorICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAndycpIGFzIGRldm51bGw6CisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNhbGwoY21kX2xpbmUsIHN0ZG91dD1kZXZudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCisKK2RlZiBzcGF3bl9weXRob24oKmFyZ3MsICoqa3dhcmdzKToKKyAgICBjbWRfbGluZSA9IFtzeXMuZXhlY3V0YWJsZSwgJy1FJ10KKyAgICBjbWRfbGluZS5leHRlbmQoYXJncykKKyAgICByZXR1cm4gc3VicHJvY2Vzcy5Qb3BlbihjbWRfbGluZSwgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3YXJncykKKworZGVmIGtpbGxfcHl0aG9uKHApOgorICAgIHAuc3RkaW4uY2xvc2UoKQorICAgIGRhdGEgPSBwLnN0ZG91dC5yZWFkKCkKKyAgICBwLnN0ZG91dC5jbG9zZSgpCisgICAgIyB0cnkgdG8gY2xlYW51cCB0aGUgY2hpbGQgc28gd2UgZG9uJ3QgYXBwZWFyIHRvIGxlYWsgd2hlbiBydW5uaW5nCisgICAgIyB3aXRoIHJlZ3J0ZXN0IC1SLgorICAgIHAud2FpdCgpCisgICAgc3VicHJvY2Vzcy5fY2xlYW51cCgpCisgICAgcmV0dXJuIGRhdGEKKworZGVmIHJ1bl9weXRob24oKmFyZ3MsICoqa3dhcmdzKToKKyAgICBpZiBfX2RlYnVnX186CisgICAgICAgIHAgPSBzcGF3bl9weXRob24oKmFyZ3MsICoqa3dhcmdzKQorICAgIGVsc2U6CisgICAgICAgIHAgPSBzcGF3bl9weXRob24oJy1PJywgKmFyZ3MsICoqa3dhcmdzKQorICAgIHN0ZG91dF9kYXRhID0ga2lsbF9weXRob24ocCkKKyAgICByZXR1cm4gcC53YWl0KCksIHN0ZG91dF9kYXRhCisKKyMgU2NyaXB0IGNyZWF0aW9uIHV0aWxpdGllcworQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiB0ZW1wX2RpcigpOgorICAgIGRpcm5hbWUgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICBkaXJuYW1lID0gb3MucGF0aC5yZWFscGF0aChkaXJuYW1lKQorICAgIHRyeToKKyAgICAgICAgeWllbGQgZGlybmFtZQorICAgIGZpbmFsbHk6CisgICAgICAgIHNodXRpbC5ybXRyZWUoZGlybmFtZSkKKworZGVmIG1ha2Vfc2NyaXB0KHNjcmlwdF9kaXIsIHNjcmlwdF9iYXNlbmFtZSwgc291cmNlKToKKyAgICBzY3JpcHRfZmlsZW5hbWUgPSBzY3JpcHRfYmFzZW5hbWUrb3MuZXh0c2VwKydweScKKyAgICBzY3JpcHRfbmFtZSA9IG9zLnBhdGguam9pbihzY3JpcHRfZGlyLCBzY3JpcHRfZmlsZW5hbWUpCisgICAgc2NyaXB0X2ZpbGUgPSBvcGVuKHNjcmlwdF9uYW1lLCAndycpCisgICAgc2NyaXB0X2ZpbGUud3JpdGUoc291cmNlKQorICAgIHNjcmlwdF9maWxlLmNsb3NlKCkKKyAgICByZXR1cm4gc2NyaXB0X25hbWUKKworZGVmIGNvbXBpbGVfc2NyaXB0KHNjcmlwdF9uYW1lKToKKyAgICBweV9jb21waWxlLmNvbXBpbGUoc2NyaXB0X25hbWUsIGRvcmFpc2U9VHJ1ZSkKKyAgICBpZiBfX2RlYnVnX186CisgICAgICAgIGNvbXBpbGVkX25hbWUgPSBzY3JpcHRfbmFtZSArICdjJworICAgIGVsc2U6CisgICAgICAgIGNvbXBpbGVkX25hbWUgPSBzY3JpcHRfbmFtZSArICdvJworICAgIHJldHVybiBjb21waWxlZF9uYW1lCisKK2RlZiBtYWtlX3ppcF9zY3JpcHQoemlwX2RpciwgemlwX2Jhc2VuYW1lLCBzY3JpcHRfbmFtZSwgbmFtZV9pbl96aXA9Tm9uZSk6CisgICAgemlwX2ZpbGVuYW1lID0gemlwX2Jhc2VuYW1lK29zLmV4dHNlcCsnemlwJworICAgIHppcF9uYW1lID0gb3MucGF0aC5qb2luKHppcF9kaXIsIHppcF9maWxlbmFtZSkKKyAgICB6aXBfZmlsZSA9IHppcGZpbGUuWmlwRmlsZSh6aXBfbmFtZSwgJ3cnKQorICAgIGlmIG5hbWVfaW5femlwIGlzIE5vbmU6CisgICAgICAgIG5hbWVfaW5femlwID0gb3MucGF0aC5iYXNlbmFtZShzY3JpcHRfbmFtZSkKKyAgICB6aXBfZmlsZS53cml0ZShzY3JpcHRfbmFtZSwgbmFtZV9pbl96aXApCisgICAgemlwX2ZpbGUuY2xvc2UoKQorICAgICNpZiB0ZXN0LnRlc3Rfc3VwcG9ydC52ZXJib3NlOgorICAgICMgICAgemlwX2ZpbGUgPSB6aXBmaWxlLlppcEZpbGUoemlwX25hbWUsICdyJykKKyAgICAjICAgIHByaW50ICdDb250ZW50cyBvZiAlcjonICUgemlwX25hbWUKKyAgICAjICAgIHppcF9maWxlLnByaW50ZGlyKCkKKyAgICAjICAgIHppcF9maWxlLmNsb3NlKCkKKyAgICByZXR1cm4gemlwX25hbWUsIG9zLnBhdGguam9pbih6aXBfbmFtZSwgbmFtZV9pbl96aXApCisKK2RlZiBtYWtlX3BrZyhwa2dfZGlyLCBpbml0X3NvdXJjZT0nJyk6CisgICAgb3MubWtkaXIocGtnX2RpcikKKyAgICBtYWtlX3NjcmlwdChwa2dfZGlyLCAnX19pbml0X18nLCBpbml0X3NvdXJjZSkKKworZGVmIG1ha2VfemlwX3BrZyh6aXBfZGlyLCB6aXBfYmFzZW5hbWUsIHBrZ19uYW1lLCBzY3JpcHRfYmFzZW5hbWUsCisgICAgICAgICAgICAgICAgIHNvdXJjZSwgZGVwdGg9MSwgY29tcGlsZWQ9RmFsc2UpOgorICAgIHVubGluayA9IFtdCisgICAgaW5pdF9uYW1lID0gbWFrZV9zY3JpcHQoemlwX2RpciwgJ19faW5pdF9fJywgJycpCisgICAgdW5saW5rLmFwcGVuZChpbml0X25hbWUpCisgICAgaW5pdF9iYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoaW5pdF9uYW1lKQorICAgIHNjcmlwdF9uYW1lID0gbWFrZV9zY3JpcHQoemlwX2Rpciwgc2NyaXB0X2Jhc2VuYW1lLCBzb3VyY2UpCisgICAgdW5saW5rLmFwcGVuZChzY3JpcHRfbmFtZSkKKyAgICBpZiBjb21waWxlZDoKKyAgICAgICAgaW5pdF9uYW1lID0gY29tcGlsZV9zY3JpcHQoaW5pdF9uYW1lKQorICAgICAgICBzY3JpcHRfbmFtZSA9IGNvbXBpbGVfc2NyaXB0KHNjcmlwdF9uYW1lKQorICAgICAgICB1bmxpbmsuZXh0ZW5kKChpbml0X25hbWUsIHNjcmlwdF9uYW1lKSkKKyAgICBwa2dfbmFtZXMgPSBbb3Muc2VwLmpvaW4oW3BrZ19uYW1lXSppKSBmb3IgaSBpbiByYW5nZSgxLCBkZXB0aCsxKV0KKyAgICBzY3JpcHRfbmFtZV9pbl96aXAgPSBvcy5wYXRoLmpvaW4ocGtnX25hbWVzWy0xXSwgb3MucGF0aC5iYXNlbmFtZShzY3JpcHRfbmFtZSkpCisgICAgemlwX2ZpbGVuYW1lID0gemlwX2Jhc2VuYW1lK29zLmV4dHNlcCsnemlwJworICAgIHppcF9uYW1lID0gb3MucGF0aC5qb2luKHppcF9kaXIsIHppcF9maWxlbmFtZSkKKyAgICB6aXBfZmlsZSA9IHppcGZpbGUuWmlwRmlsZSh6aXBfbmFtZSwgJ3cnKQorICAgIGZvciBuYW1lIGluIHBrZ19uYW1lczoKKyAgICAgICAgaW5pdF9uYW1lX2luX3ppcCA9IG9zLnBhdGguam9pbihuYW1lLCBpbml0X2Jhc2VuYW1lKQorICAgICAgICB6aXBfZmlsZS53cml0ZShpbml0X25hbWUsIGluaXRfbmFtZV9pbl96aXApCisgICAgemlwX2ZpbGUud3JpdGUoc2NyaXB0X25hbWUsIHNjcmlwdF9uYW1lX2luX3ppcCkKKyAgICB6aXBfZmlsZS5jbG9zZSgpCisgICAgZm9yIG5hbWUgaW4gdW5saW5rOgorICAgICAgICBvcy51bmxpbmsobmFtZSkKKyAgICAjaWYgdGVzdC50ZXN0X3N1cHBvcnQudmVyYm9zZToKKyAgICAjICAgIHppcF9maWxlID0gemlwZmlsZS5aaXBGaWxlKHppcF9uYW1lLCAncicpCisgICAgIyAgICBwcmludCAnQ29udGVudHMgb2YgJXI6JyAlIHppcF9uYW1lCisgICAgIyAgICB6aXBfZmlsZS5wcmludGRpcigpCisgICAgIyAgICB6aXBfZmlsZS5jbG9zZSgpCisgICAgcmV0dXJuIHppcF9uYW1lLCBvcy5wYXRoLmpvaW4oemlwX25hbWUsIHNjcmlwdF9uYW1lX2luX3ppcCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYWJjLnB5IGIvTGliL3Rlc3QvdGVzdF9hYmMucHkKaW5kZXggNmE4YzNhMS4uZGJiYTM3YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9hYmMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hYmMucHkKQEAgLTIwOCw2ICsyMDgsNyBAQAogICAgICAgICBDKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChCLmNvdW50ZXIsIDEpCiAKKyAgICBAdGVzdF9zdXBwb3J0LnJlcXVpcmVzX3R5cGVfY29sbGVjdGluZwogICAgIGRlZiB0ZXN0X2NhY2hlX2xlYWsoc2VsZik6CiAgICAgICAgICMgU2VlIGlzc3VlICMyNTIxLgogICAgICAgICBjbGFzcyBBKG9iamVjdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FpZmMucHkgYi9MaWIvdGVzdC90ZXN0X2FpZmMucHkKaW5kZXggZDRlOWRlNS4uOTJiYmU3YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9haWZjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYWlmYy5weQpAQCAtMTI5LDYgKzEyOSwxOCBAQAogICAgICAgICAjVGhpcyBmaWxlIGNvbnRhaW5zIGNodW5rIHR5cGVzIGFpZmMgZG9lc24ndCByZWNvZ25pemUuCiAgICAgICAgIHNlbGYuZiA9IGFpZmMub3BlbihmaW5kZmlsZSgnU2luZS0xMDAwSHotMzAwbXMuYWlmJykpCiAKKyAgICBkZWYgdGVzdF9jbG9zZV9vcGVuZWRfZmlsZXNfb25fZXJyb3Ioc2VsZik6CisgICAgICAgIG5vbl9haWZjX2ZpbGUgPSBmaW5kZmlsZSgncGx1Y2stcGNtOC53YXYnLCBzdWJkaXI9J2F1ZGlvZGF0YScpCisKKyAgICAgICAgY2xhc3MgQWlmYyhhaWZjLkFpZmNfcmVhZCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIGEgPSBBaWZjKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhhaWZjLkVycm9yKToKKyAgICAgICAgICAgIGFpZmMuQWlmY19yZWFkLl9faW5pdF9fKGEsIG5vbl9haWZjX2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhLl9maWxlLmNsb3NlZCkKKwogICAgIGRlZiB0ZXN0X3dyaXRlX21hcmtlcnNfdmFsdWVzKHNlbGYpOgogICAgICAgICBmb3V0ID0gYWlmYy5vcGVuKGlvLkJ5dGVzSU8oKSwgJ3diJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3V0LmdldG1hcmtlcnMoKSwgTm9uZSkKQEAgLTIwMiw2ICsyMTQsMTQgQEAKICAgICAgICAgYiA9IGlvLkJ5dGVzSU8oJ0ZPUk0nICsgc3RydWN0LnBhY2soJz5MJywgNCkgKyAnQUlGRicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGFpZmMuRXJyb3IsIGFpZmMub3BlbiwgYikKIAorICAgIGRlZiB0ZXN0X3JlYWRfbm9fc3NuZF9jaHVuayhzZWxmKToKKyAgICAgICAgYiA9IGInRk9STScgKyBzdHJ1Y3QucGFjaygnPkwnLCA0KSArIGInQUlGQycKKyAgICAgICAgYiArPSBiJ0NPTU0nICsgc3RydWN0LnBhY2soJz5MaGxoaExMJywgMzgsIDAsIDAsIDAsIDAsIDAsIDApCisgICAgICAgIGIgKz0gYidOT05FJyArIHN0cnVjdC5wYWNrKCdCJywgMTQpICsgYidub3QgY29tcHJlc3NlZCcgKyBiJ1x4MDAnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoYWlmYy5FcnJvciwgJ0NPTU0gY2h1bmsgYW5kL29yIFNTTkQgY2h1bmsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBtaXNzaW5nJyk6CisgICAgICAgICAgICBhaWZjLm9wZW4oaW8uQnl0ZXNJTyhiKSkKKwogICAgIGRlZiB0ZXN0X3JlYWRfd3JvbmdfY29tcHJlc3Npb25fdHlwZShzZWxmKToKICAgICAgICAgYiA9ICdGT1JNJyArIHN0cnVjdC5wYWNrKCc+TCcsIDQpICsgJ0FJRkMnCiAgICAgICAgIGIgKz0gJ0NPTU0nICsgc3RydWN0LnBhY2soJz5MaGxoaExMJywgMjMsIDAsIDAsIDAsIDAsIDAsIDApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5IGIvTGliL3Rlc3QvdGVzdF9hcmdwYXJzZS5weQppbmRleCA4M2Y2ZjI3Li5mMzk1NjVhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FyZ3BhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXJncGFyc2UucHkKQEAgLTQ2NTIsNyArNDY1Miw3IEBACiAgICAgICAgIHNlbGYuZG9fdGVzdF9leGNlcHRpb24obmFyZ3M9Tm9uZSwgbWV0YXZhcj10dXBsZSgpKQogCiAgICAgZGVmIHRlc3RfbmFyZ3NfTm9uZV9tZXRhdmFyX2xlbmd0aDEoc2VsZik6Ci0gICAgICAgIHNlbGYuZG9fdGVzdF9ub19leGNlcHRpb24obmFyZ3M9Tm9uZSwgbWV0YXZhcj0oIjEiKSkKKyAgICAgICAgc2VsZi5kb190ZXN0X25vX2V4Y2VwdGlvbihuYXJncz1Ob25lLCBtZXRhdmFyPSgiMSIsKSkKIAogICAgIGRlZiB0ZXN0X25hcmdzX05vbmVfbWV0YXZhcl9sZW5ndGgyKHNlbGYpOgogICAgICAgICBzZWxmLmRvX3Rlc3RfZXhjZXB0aW9uKG5hcmdzPU5vbmUsIG1ldGF2YXI9KCIxIiwgIjIiKSkKQEAgLTQ2NjksNyArNDY2OSw3IEBACiAgICAgICAgIHNlbGYuZG9fdGVzdF9leGNlcHRpb24obmFyZ3M9Ij8iLCBtZXRhdmFyPXR1cGxlKCkpCiAKICAgICBkZWYgdGVzdF9uYXJnc19vcHRpb25hbF9tZXRhdmFyX2xlbmd0aDEoc2VsZik6Ci0gICAgICAgIHNlbGYuZG9fdGVzdF9ub19leGNlcHRpb24obmFyZ3M9Ij8iLCBtZXRhdmFyPSgiMSIpKQorICAgICAgICBzZWxmLmRvX3Rlc3Rfbm9fZXhjZXB0aW9uKG5hcmdzPSI/IiwgbWV0YXZhcj0oIjEiLCkpCiAKICAgICBkZWYgdGVzdF9uYXJnc19vcHRpb25hbF9tZXRhdmFyX2xlbmd0aDIoc2VsZik6CiAgICAgICAgIHNlbGYuZG9fdGVzdF9leGNlcHRpb24obmFyZ3M9Ij8iLCBtZXRhdmFyPSgiMSIsICIyIikpCkBAIC00Njg2LDcgKzQ2ODYsNyBAQAogICAgICAgICBzZWxmLmRvX3Rlc3RfZXhjZXB0aW9uKG5hcmdzPSIqIiwgbWV0YXZhcj10dXBsZSgpKQogCiAgICAgZGVmIHRlc3RfbmFyZ3NfemVyb29ybW9yZV9tZXRhdmFyX2xlbmd0aDEoc2VsZik6Ci0gICAgICAgIHNlbGYuZG9fdGVzdF9ub19leGNlcHRpb24obmFyZ3M9IioiLCBtZXRhdmFyPSgiMSIpKQorICAgICAgICBzZWxmLmRvX3Rlc3RfZXhjZXB0aW9uKG5hcmdzPSIqIiwgbWV0YXZhcj0oIjEiLCkpCiAKICAgICBkZWYgdGVzdF9uYXJnc196ZXJvb3Jtb3JlX21ldGF2YXJfbGVuZ3RoMihzZWxmKToKICAgICAgICAgc2VsZi5kb190ZXN0X25vX2V4Y2VwdGlvbihuYXJncz0iKiIsIG1ldGF2YXI9KCIxIiwgIjIiKSkKQEAgLTQ3MDMsNyArNDcwMyw3IEBACiAgICAgICAgIHNlbGYuZG9fdGVzdF9leGNlcHRpb24obmFyZ3M9IisiLCBtZXRhdmFyPXR1cGxlKCkpCiAKICAgICBkZWYgdGVzdF9uYXJnc19vbmVvcm1vcmVfbWV0YXZhcl9sZW5ndGgxKHNlbGYpOgotICAgICAgICBzZWxmLmRvX3Rlc3Rfbm9fZXhjZXB0aW9uKG5hcmdzPSIrIiwgbWV0YXZhcj0oIjEiKSkKKyAgICAgICAgc2VsZi5kb190ZXN0X2V4Y2VwdGlvbihuYXJncz0iKyIsIG1ldGF2YXI9KCIxIiwpKQogCiAgICAgZGVmIHRlc3RfbmFyZ3Nfb25lb3Jtb3JlX21ldGF2YXJfbGVuZ3RoMihzZWxmKToKICAgICAgICAgc2VsZi5kb190ZXN0X25vX2V4Y2VwdGlvbihuYXJncz0iKyIsIG1ldGF2YXI9KCIxIiwgIjIiKSkKQEAgLTQ3MjAsNyArNDcyMCw3IEBACiAgICAgICAgIHNlbGYuZG9fdGVzdF9ub19leGNlcHRpb24obmFyZ3M9Ii4uLiIsIG1ldGF2YXI9dHVwbGUoKSkKIAogICAgIGRlZiB0ZXN0X25hcmdzX3JlbWFpbmRlcl9tZXRhdmFyX2xlbmd0aDEoc2VsZik6Ci0gICAgICAgIHNlbGYuZG9fdGVzdF9ub19leGNlcHRpb24obmFyZ3M9Ii4uLiIsIG1ldGF2YXI9KCIxIikpCisgICAgICAgIHNlbGYuZG9fdGVzdF9ub19leGNlcHRpb24obmFyZ3M9Ii4uLiIsIG1ldGF2YXI9KCIxIiwpKQogCiAgICAgZGVmIHRlc3RfbmFyZ3NfcmVtYWluZGVyX21ldGF2YXJfbGVuZ3RoMihzZWxmKToKICAgICAgICAgc2VsZi5kb190ZXN0X25vX2V4Y2VwdGlvbihuYXJncz0iLi4uIiwgbWV0YXZhcj0oIjEiLCAiMiIpKQpAQCAtNDczNyw3ICs0NzM3LDcgQEAKICAgICAgICAgc2VsZi5kb190ZXN0X2V4Y2VwdGlvbihuYXJncz0iQS4uLiIsIG1ldGF2YXI9dHVwbGUoKSkKIAogICAgIGRlZiB0ZXN0X25hcmdzX3BhcnNlcl9tZXRhdmFyX2xlbmd0aDEoc2VsZik6Ci0gICAgICAgIHNlbGYuZG9fdGVzdF9ub19leGNlcHRpb24obmFyZ3M9IkEuLi4iLCBtZXRhdmFyPSgiMSIpKQorICAgICAgICBzZWxmLmRvX3Rlc3Rfbm9fZXhjZXB0aW9uKG5hcmdzPSJBLi4uIiwgbWV0YXZhcj0oIjEiLCkpCiAKICAgICBkZWYgdGVzdF9uYXJnc19wYXJzZXJfbWV0YXZhcl9sZW5ndGgyKHNlbGYpOgogICAgICAgICBzZWxmLmRvX3Rlc3RfZXhjZXB0aW9uKG5hcmdzPSJBLi4uIiwgbWV0YXZhcj0oIjEiLCAiMiIpKQpAQCAtNDc1NCw3ICs0NzU0LDcgQEAKICAgICAgICAgc2VsZi5kb190ZXN0X2V4Y2VwdGlvbihuYXJncz0xLCBtZXRhdmFyPXR1cGxlKCkpCiAKICAgICBkZWYgdGVzdF9uYXJnc18xX21ldGF2YXJfbGVuZ3RoMShzZWxmKToKLSAgICAgICAgc2VsZi5kb190ZXN0X25vX2V4Y2VwdGlvbihuYXJncz0xLCBtZXRhdmFyPSgiMSIpKQorICAgICAgICBzZWxmLmRvX3Rlc3Rfbm9fZXhjZXB0aW9uKG5hcmdzPTEsIG1ldGF2YXI9KCIxIiwpKQogCiAgICAgZGVmIHRlc3RfbmFyZ3NfMV9tZXRhdmFyX2xlbmd0aDIoc2VsZik6CiAgICAgICAgIHNlbGYuZG9fdGVzdF9leGNlcHRpb24obmFyZ3M9MSwgbWV0YXZhcj0oIjEiLCAiMiIpKQpAQCAtNDc3MSw3ICs0NzcxLDcgQEAKICAgICAgICAgc2VsZi5kb190ZXN0X2V4Y2VwdGlvbihuYXJncz0yLCBtZXRhdmFyPXR1cGxlKCkpCiAKICAgICBkZWYgdGVzdF9uYXJnc18yX21ldGF2YXJfbGVuZ3RoMShzZWxmKToKLSAgICAgICAgc2VsZi5kb190ZXN0X25vX2V4Y2VwdGlvbihuYXJncz0yLCBtZXRhdmFyPSgiMSIpKQorICAgICAgICBzZWxmLmRvX3Rlc3RfZXhjZXB0aW9uKG5hcmdzPTIsIG1ldGF2YXI9KCIxIiwpKQogCiAgICAgZGVmIHRlc3RfbmFyZ3NfMl9tZXRhdmFyX2xlbmd0aDIoc2VsZik6CiAgICAgICAgIHNlbGYuZG9fdGVzdF9ub19leGNlcHRpb24obmFyZ3M9MiwgbWV0YXZhcj0oIjEiLCAiMiIpKQpAQCAtNDc4OCw3ICs0Nzg4LDcgQEAKICAgICAgICAgc2VsZi5kb190ZXN0X2V4Y2VwdGlvbihuYXJncz0zLCBtZXRhdmFyPXR1cGxlKCkpCiAKICAgICBkZWYgdGVzdF9uYXJnc18zX21ldGF2YXJfbGVuZ3RoMShzZWxmKToKLSAgICAgICAgc2VsZi5kb190ZXN0X25vX2V4Y2VwdGlvbihuYXJncz0zLCBtZXRhdmFyPSgiMSIpKQorICAgICAgICBzZWxmLmRvX3Rlc3RfZXhjZXB0aW9uKG5hcmdzPTMsIG1ldGF2YXI9KCIxIiwpKQogCiAgICAgZGVmIHRlc3RfbmFyZ3NfM19tZXRhdmFyX2xlbmd0aDIoc2VsZik6CiAgICAgICAgIHNlbGYuZG9fdGVzdF9leGNlcHRpb24obmFyZ3M9MywgbWV0YXZhcj0oIjEiLCAiMiIpKQpAQCAtNDgxNSw2ICs0ODE1LDMwIEBACiAgICAgICAgIF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQoaXRlbXMpLCBzb3J0ZWQoYXJncGFyc2UuX19hbGxfXykpCiAKKworY2xhc3MgVGVzdFdyYXBwaW5nTWV0YXZhcihUZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYucGFyc2VyID0gRXJyb3JSYWlzaW5nQXJndW1lbnRQYXJzZXIoCisgICAgICAgICAgICAndGhpc19pc19zcGFtbXlfcHJvZ193aXRoX2FfbG9uZ19uYW1lX3NvcnJ5X2Fib3V0X3RoZV9uYW1lJworICAgICAgICApCisgICAgICAgICMgdGhpcyBtZXRhdmFyIHdhcyB0cmlnZ2VyaW5nIGxpYnJhcnkgYXNzZXJ0aW9uIGVycm9ycyBkdWUgdG8gdXNhZ2UKKyAgICAgICAgIyBtZXNzYWdlIGZvcm1hdHRpbmcgaW5jb3JyZWN0bHkgc3BsaXR0aW5nIG9uIHRoZSBdIGNoYXJzIHdpdGhpbgorICAgICAgICBtZXRhdmFyID0gJzxodHRwW3NdOi8vZXhhbXBsZToxMjM0PicKKyAgICAgICAgc2VsZi5wYXJzZXIuYWRkX2FyZ3VtZW50KCctLXByb3h5JywgbWV0YXZhcj1tZXRhdmFyKQorCisgICAgZGVmIHRlc3RfaGVscF93aXRoX21ldGF2YXIoc2VsZik6CisgICAgICAgIGhlbHBfdGV4dCA9IHNlbGYucGFyc2VyLmZvcm1hdF9oZWxwKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxwX3RleHQsIHRleHR3cmFwLmRlZGVudCgnJydcCisgICAgICAgICAgICB1c2FnZTogdGhpc19pc19zcGFtbXlfcHJvZ193aXRoX2FfbG9uZ19uYW1lX3NvcnJ5X2Fib3V0X3RoZV9uYW1lCisgICAgICAgICAgICAgICAgICAgWy1oXSBbLS1wcm94eSA8aHR0cFtzXTovL2V4YW1wbGU6MTIzND5dCisKKyAgICAgICAgICAgIG9wdGlvbmFsIGFyZ3VtZW50czoKKyAgICAgICAgICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgICAgICAgICAgLS1wcm94eSA8aHR0cFtzXTovL2V4YW1wbGU6MTIzND4KKyAgICAgICAgICAgICcnJykpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgICMgc2lsZW5jZSB3YXJuaW5ncyBhYm91dCB2ZXJzaW9uIGFyZ3VtZW50IC0gdGhlc2UgYXJlIGV4cGVjdGVkCiAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfd2FybmluZ3MoCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQppbmRleCAyMGVjZWI2Li40YjM0N2EzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKQEAgLTQ0Miw2ICs0NDIsMTkgQEAKICAgICAgICAgYXN5bmNvcmUubG9vcCh0aW1lb3V0PTAuMDEsIHVzZV9wb2xsPVRydWUsIGNvdW50PTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiIiLmpvaW4oZGF0YSksIHNlbGYuZCkKIAorICAgIGRlZiB0ZXN0X2Nsb3NlX3R3aWNlKHNlbGYpOgorICAgICAgICBmZCA9IG9zLm9wZW4oVEVTVEZOLCBvcy5PX1JET05MWSkKKyAgICAgICAgZiA9IGFzeW5jb3JlLmZpbGVfd3JhcHBlcihmZCkKKyAgICAgICAgb3MuY2xvc2UoZmQpCisKKyAgICAgICAgb3MuY2xvc2UoZi5mZCkgICMgZmlsZV93cmFwcGVyIGR1cHBlZCBmZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpOgorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmZkLCAtMSkKKyAgICAgICAgIyBjYWxsaW5nIGNsb3NlIHR3aWNlIHNob3VsZCBub3QgZmFpbAorICAgICAgICBmLmNsb3NlKCkKKwogCiBjbGFzcyBCYXNlVGVzdEhhbmRsZXIoYXN5bmNvcmUuZGlzcGF0Y2hlcik6CiAKQEAgLTYwNiw2ICs2MTksOSBAQAogICAgICAgICAjIE5vdGU6IHRoaXMgbWlnaHQgZmFpbCBvbiBzb21lIHBsYXRmb3JtcyBhcyBPT0IgZGF0YSBpcwogICAgICAgICAjIHRlbnVvdXNseSBzdXBwb3J0ZWQgYW5kIHJhcmVseSB1c2VkLgogCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAiZGFyd2luIiBhbmQgc2VsZi51c2VfcG9sbDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInBvbGwgbWF5IGZhaWwgb24gbWFjT1M7IHNlZSBpc3N1ZSAjMjgwODciKQorCiAgICAgICAgIGNsYXNzIFRlc3RDbGllbnQoQmFzZUNsaWVudCk6CiAgICAgICAgICAgICBkZWYgaGFuZGxlX2V4cHQoc2VsZik6CiAgICAgICAgICAgICAgICAgc2VsZi5mbGFnID0gVHJ1ZQpAQCAtNzExLDE5ICs3MjcsMjAgQEAKICAgICAgICAgc2VydmVyID0gVENQU2VydmVyKCkKICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWxhbWJkYTogYXN5bmNvcmUubG9vcCh0aW1lb3V0PTAuMSwgY291bnQ9NTAwKSkKICAgICAgICAgdC5zdGFydCgpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0LmpvaW4pCi0KLSAgICAgICAgZm9yIHggaW4geHJhbmdlKDIwKToKLSAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCi0gICAgICAgICAgICBzLnNldHRpbWVvdXQoLjIpCi0gICAgICAgICAgICBzLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19MSU5HRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LnBhY2soJ2lpJywgMSwgMCkpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KHNlcnZlci5hZGRyZXNzKQotICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgeCBpbiB4cmFuZ2UoMjApOgorICAgICAgICAgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVULCBzb2NrZXQuU09DS19TVFJFQU0pCisgICAgICAgICAgICAgICAgcy5zZXR0aW1lb3V0KC4yKQorICAgICAgICAgICAgICAgIHMuc2V0c29ja29wdChzb2NrZXQuU09MX1NPQ0tFVCwgc29ja2V0LlNPX0xJTkdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0LnBhY2soJ2lpJywgMSwgMCkpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3Qoc2VydmVyLmFkZHJlc3MpCisgICAgICAgICAgICAgICAgZXhjZXB0IHNvY2tldC5lcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgdC5qb2luKCkKIAogCiBjbGFzcyBUZXN0QVBJX1VzZVNlbGVjdChCYXNlVGVzdEFQSSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2F0ZXhpdC5weSBiL0xpYi90ZXN0L3Rlc3RfYXRleGl0LnB5CmluZGV4IGJmODViNzUuLmJkZTg5ODcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXRleGl0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXRleGl0LnB5CkBAIC01LDEyICs1LDE3IEBACiBmcm9tIGltcCBpbXBvcnQgcmVsb2FkCiBmcm9tIHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydAogCisKK2RlZiBleGl0KCk6CisgICAgcmFpc2UgU3lzdGVtRXhpdAorCisKIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHMgPSBTdHJpbmdJTy5TdHJpbmdJTygpCiAgICAgICAgIHNlbGYuc2F2ZV9zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgICAgIHNlbGYuc2F2ZV9zdGRlcnIgPSBzeXMuc3RkZXJyCi0gICAgICAgIHN5cy5zdGRvdXQgPSBzeXMuc3RkZXJyID0gc2VsZi5zdWJzdF9pbyA9IHMKKyAgICAgICAgc2VsZi5zdHJlYW0gPSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIHN5cy5zdGRvdXQgPSBzeXMuc3RkZXJyID0gc2VsZi5zdWJzdF9pbyA9IHNlbGYuc3RyZWFtCiAgICAgICAgIHNlbGYuc2F2ZV9oYW5kbGVycyA9IGF0ZXhpdC5fZXhpdGhhbmRsZXJzCiAgICAgICAgIGF0ZXhpdC5fZXhpdGhhbmRsZXJzID0gW10KIApAQCAtNTUsNiArNjAsMTMgQEAKICAgICAgICAgYXRleGl0LnJlZ2lzdGVyKHNlbGYucmFpc2UyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGF0ZXhpdC5fcnVuX2V4aXRmdW5jcykKIAorICAgIGRlZiB0ZXN0X2V4aXQoc2VsZik6CisgICAgICAgICMgYmUgc3VyZSBhIFN5c3RlbUV4aXQgaXMgaGFuZGxlZCBwcm9wZXJseQorICAgICAgICBhdGV4aXQucmVnaXN0ZXIoZXhpdCkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0LCBhdGV4aXQuX3J1bl9leGl0ZnVuY3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdHJlYW0uZ2V0dmFsdWUoKSwgJycpCisKICAgICAjIyMgaGVscGVycwogICAgIGRlZiBoMShzZWxmKToKICAgICAgICAgcHJpbnQgImgxIgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hdWRpb29wLnB5IGIvTGliL3Rlc3QvdGVzdF9hdWRpb29wLnB5CmluZGV4IDRhZjczNTAuLjVmMWRlYjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXVkaW9vcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2F1ZGlvb3AucHkKQEAgLTMyNSw2ICszMjUsMTAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXVkaW9vcC5yYXRlY3YoZGF0YXNbd10sIHcsIDEsIDgwMDAsIDgwMDAsIE5vbmUsIDMwLCAxMClbMF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkW3ddKQogCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYXVkaW9vcC5yYXRlY3YsIGInJywgMSwgMSwgODAwMCwgODAwMCwgNDIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYXVkaW9vcC5yYXRlY3YsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGInJywgMSwgMSwgODAwMCwgODAwMCwgKDEsICg0MiwpKSkKKwogICAgIGRlZiB0ZXN0X3JldmVyc2Uoc2VsZik6CiAgICAgICAgIGZvciB3IGluIDEsIDIsIDQ6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF1ZGlvb3AucmV2ZXJzZShiJycsIHcpLCBiJycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Jpc2VjdC5weSBiL0xpYi90ZXN0L3Rlc3RfYmlzZWN0LnB5CmluZGV4IDVjMzMzMGIuLjliZWQyOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYmlzZWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmlzZWN0LnB5CkBAIC0xLDMgKzEsNCBAQAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnNkZGIucHkgYi9MaWIvdGVzdC90ZXN0X2JzZGRiLnB5CmluZGV4IDNmZjAyMGEuLjkyNzFkN2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnNkZGIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ic2RkYi5weQpAQCAtMTcyLDcgKzE3Miw3IEBACiAKICAgICBkZWYgdGVzdF9maXJzdF93aGlsZV9kZWxldGluZyhzZWxmKToKICAgICAgICAgIyBUZXN0IGZvciBidWcgMTcyNTg1NgotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHNlbGYuZCkgPj0gMiwgInRlc3QgcmVxdWlyZXMgPj0yIGl0ZW1zIikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlbGYuZCksIDIsICJ0ZXN0IHJlcXVpcmVzID49MiBpdGVtcyIpCiAgICAgICAgIGZvciBfIGluIHNlbGYuZDoKICAgICAgICAgICAgIGtleSA9IHNlbGYuZi5maXJzdCgpWzBdCiAgICAgICAgICAgICBkZWwgc2VsZi5mW2tleV0KQEAgLTE4MCw3ICsxODAsNyBAQAogCiAgICAgZGVmIHRlc3RfbGFzdF93aGlsZV9kZWxldGluZyhzZWxmKToKICAgICAgICAgIyBUZXN0IGZvciBidWcgMTcyNTg1NidzIGV2aWwgdHdpbgotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHNlbGYuZCkgPj0gMiwgInRlc3QgcmVxdWlyZXMgPj0yIGl0ZW1zIikKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyRXF1YWwobGVuKHNlbGYuZCksIDIsICJ0ZXN0IHJlcXVpcmVzID49MiBpdGVtcyIpCiAgICAgICAgIGZvciBfIGluIHNlbGYuZDoKICAgICAgICAgICAgIGtleSA9IHNlbGYuZi5sYXN0KClbMF0KICAgICAgICAgICAgIGRlbCBzZWxmLmZba2V5XQpAQCAtMTk3LDcgKzE5Nyw3IEBACiAgICAgZGVmIHRlc3RfaGFzX2tleShzZWxmKToKICAgICAgICAgZm9yIGsgaW4gc2VsZi5kOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZi5oYXNfa2V5KGspKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90IHNlbGYuZi5oYXNfa2V5KCdub3QgaGVyZScpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuZi5oYXNfa2V5KCdub3QgaGVyZScpKQogCiAgICAgZGVmIHRlc3RfY2xlYXIoc2VsZik6CiAgICAgICAgIHNlbGYuZi5jbGVhcigpCkBAIC0yNzEsNyArMjcxLDcgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5jMSwgbmMyKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5jMSwgbmM0KQotICAgICAgICBzZWxmLmFzc2VydFRydWUobmMzID09IG5jMSsxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5jMywgbmMxKzEpCiAKICAgICBkZWYgdGVzdF9wb3BpdGVtKHNlbGYpOgogICAgICAgICBrLCB2ID0gc2VsZi5mLnBvcGl0ZW0oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ic2RkYjMucHkgYi9MaWIvdGVzdC90ZXN0X2JzZGRiMy5weQppbmRleCAwOTkxNDViLi4xYTgyMzI1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JzZGRiMy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JzZGRiMy5weQpAQCAtMjgsNiArMjgsMTAgQEAKICAgICB2ZXJib3NlID0gRmFsc2UKICAgICBzeXMuYXJndi5yZW1vdmUoJ3NpbGVudCcpCiAKKyMgYnBvLTMwNzc4OiB0ZXN0X2JzZGRiMyBjcmFzaHMgcmFuZG9tbHkgb24gV2luZG93cyBYUAoraWYgaGFzYXR0cihzeXMsICdnZXR3aW5kb3dzdmVyc2lvbicpIGFuZCBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKVs6Ml0gPCAoNiwgMCk6CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImJwby0zMDc3ODogc2tpcCB0ZXN0cyBvbiBXaW5kb3dzIFhQIikKKwogCiBjbGFzcyBUaW1pbmdDaGVjayh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnVmZmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKaW5kZXggZGU4MGQ0NC4uYzcxMTRjZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkKQEAgLTgsNiArOCw3IEBACiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKIAogY2xhc3MgQnVmZmVyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMzksMTUgKzQwLDE5IEBACiAKICAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgogICAgICAgICBidWYgPSBidWZmZXIoYidhYmMnKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSwgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnLCAiLipidWZmZXIiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBjb3B5LmNvcHkoYnVmKQogCi0gICAgIyBTZWUgaXNzdWUgIzIyOTk1Ci0gICAgIyMgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICMjICAgICBidWYgPSBidWZmZXIoYidhYmMnKQotICAgICMjICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAjIyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAjIyAgICAgICAgICAgICBwaWNrbGUuZHVtcHMoYnVmLCBwcm90bykKKyAgICBAdGVzdF9zdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgYnVmID0gYnVmZmVyKGInYWJjJykKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhidWYsIHByb3RvKQorICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5jaGVja19weTNrX3dhcm5pbmdzKAorICAgICAgICAgICAgICAgICgiLipidWZmZXIiLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhidWYsIDIpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5IGIvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CmluZGV4IGM5MzQ3ZTkuLjUzOTY4MzggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKQEAgLTE1OTMsMTggKzE1OTMsMjggQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgeC50cmFuc2xhdGUsICIxIiwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB4LnRyYW5zbGF0ZSwgIjEiKjI1NiwgMSkKIAorCitkZWYgY3JlYXRlX2V4ZWNfc2NyaXB0KGZpbGVuYW1lKToKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZSgneiA9IHorMVxuJykKKyAgICAgICAgZi53cml0ZSgneiA9IHoqMlxuJykKKworCiBjbGFzcyBUZXN0RXhlY0ZpbGUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgRG9uZSBvdXRzaWRlIG9mIHRoZSBtZXRob2QgdGVzdF96IHRvIGdldCB0aGUgY29ycmVjdCBzY29wZQogICAgIHogPSAwCi0gICAgZiA9IG9wZW4oVEVTVEZOLCAndycpCi0gICAgZi53cml0ZSgneiA9IHorMVxuJykKLSAgICBmLndyaXRlKCd6ID0geioyXG4nKQotICAgIGYuY2xvc2UoKQotICAgIHdpdGggY2hlY2tfcHkza193YXJuaW5ncygoImV4ZWNmaWxlLi4gbm90IHN1cHBvcnRlZCBpbiAzLngiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nKSk6Ci0gICAgICAgIGV4ZWNmaWxlKFRFU1RGTikKKyAgICB0cnk6CisgICAgICAgIGNyZWF0ZV9leGVjX3NjcmlwdChURVNURk4pCisgICAgICAgIHdpdGggY2hlY2tfcHkza193YXJuaW5ncygoImV4ZWNmaWxlLi4gbm90IHN1cHBvcnRlZCBpbiAzLngiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgZXhlY2ZpbGUoVEVTVEZOKQorICAgIGZpbmFsbHk6CisgICAgICAgIHVubGluayhURVNURk4pCiAKICAgICBkZWYgdGVzdF9leGVjZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHVubGluaywgVEVTVEZOKQorICAgICAgICBjcmVhdGVfZXhlY19zY3JpcHQoVEVTVEZOKQorCiAgICAgICAgIGdsb2JhbHMgPSB7J2EnOiAxLCAnYic6IDJ9CiAgICAgICAgIGxvY2FscyA9IHsnYic6IDIwMCwgJ2MnOiAzMDB9CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CmluZGV4IDRhNzBiMzMuLmNlMmM1YjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQpAQCAtMzM2LDggKzMzNiwxNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucmVwbGFjZShiJ2knLCBiJ2EnKSwgYidtYXNzYXNzYXBwYScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5yZXBsYWNlKGInc3MnLCBiJ3gnKSwgYidtaXhpeGlwcGknKQogCisgICAgZGVmIHRlc3RfcmVwbGFjZV9pbnRfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhIGInKS5yZXBsYWNlLCAzMiwgYicnKQorCiAgICAgZGVmIHRlc3Rfc3BsaXRfc3RyaW5nX2Vycm9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYSBiJykuc3BsaXQsIHUnICcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhIGInKS5yc3BsaXQsIHUnICcpCisKKyAgICBkZWYgdGVzdF9zcGxpdF9pbnRfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhIGInKS5zcGxpdCwgMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhIGInKS5yc3BsaXQsIDMyKQogCiAgICAgZGVmIHRlc3Rfc3BsaXRfdW5pY29kZXdoaXRlc3BhY2Uoc2VsZik6CiAgICAgICAgIGZvciBiIGluIChiJ2FceDFDYicsIGInYVx4MURiJywgYidhXHgxRWInLCBiJ2FceDFGYicpOgpAQCAtMzQ2LDkgKzM1NCw2IEBACiAgICAgICAgIGIgPSBzZWxmLnR5cGUydGVzdChiIlx4MDlceDBBXHgwQlx4MENceDBEXHgxQ1x4MURceDFFXHgxRiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5zcGxpdCgpLCBbYidceDFjXHgxZFx4MWVceDFmJ10pCiAKLSAgICBkZWYgdGVzdF9yc3BsaXRfc3RyaW5nX2Vycm9yKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYSBiJykucnNwbGl0LCB1JyAnKQotCiAgICAgZGVmIHRlc3RfcnNwbGl0X3VuaWNvZGV3aGl0ZXNwYWNlKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYiJceDA5XHgwQVx4MEJceDBDXHgwRFx4MUNceDFEXHgxRVx4MUYiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnNwbGl0KCksIFtiJ1x4MWNceDFkXHgxZVx4MWYnXSkKQEAgLTM2NCw2ICszNjksMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLnJwYXJ0aXRpb24oYidpJyksIChiJ21pc3Npc3NpcHAnLCBiJ2knLCBiJycpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIucnBhcnRpdGlvbihiJ3cnKSwgKGInJywgYicnLCBiJ21pc3Npc3NpcHBpJykpCiAKKyAgICBkZWYgdGVzdF9wYXJ0aXRpb25fc3RyaW5nX2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYSBiJykucGFydGl0aW9uLCB1JyAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYSBiJykucnBhcnRpdGlvbiwgdScgJykKKworICAgIGRlZiB0ZXN0X3BhcnRpdGlvbl9pbnRfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhIGInKS5wYXJ0aXRpb24sIDMyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYSBiJykucnBhcnRpdGlvbiwgMzIpCisKICAgICBkZWYgdGVzdF9waWNrbGluZyhzZWxmKToKICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBmb3IgYiBpbiBiIiIsIGIiYSIsIGIiYWJjIiwgYiJceGZmYWJceDgwIiwgYiJcMFwwXDM3N1wwXDAiOgpAQCAtMzc4LDkgKzM5MSwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHlwZTJ0ZXN0KGInYWJjJykucnN0cmlwKG1lbW9yeXZpZXcoYidhYycpKSwgYidhYicpCiAKICAgICBkZWYgdGVzdF9zdHJpcF9zdHJpbmdfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhYmMnKS5zdHJpcCwgdSdiJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdChiJ2FiYycpLmxzdHJpcCwgdSdiJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdChiJ2FiYycpLnJzdHJpcCwgdSdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdChiJ2FiYycpLnN0cmlwLCB1J2FjJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR5cGUydGVzdChiJ2FiYycpLmxzdHJpcCwgdSdhYycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhYmMnKS5yc3RyaXAsIHUnYWMnKQorCisgICAgZGVmIHRlc3Rfc3RyaXBfaW50X2Vycm9yKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInIGFiYyAnKS5zdHJpcCwgMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYicgYWJjICcpLmxzdHJpcCwgMzIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYicgYWJjICcpLnJzdHJpcCwgMzIpCisKKyAgICBkZWYgdGVzdF94anVzdF9pbnRfZXJyb3Ioc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QoYidhYmMnKS5jZW50ZXIsIDcsIDMyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYWJjJykubGp1c3QsIDcsIDMyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0KGInYWJjJykucmp1c3QsIDcsIDMyKQogCiAgICAgZGVmIHRlc3Rfb3JkKHNlbGYpOgogICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidcMEFceDdmXHg4MFx4ZmYnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5IGIvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CmluZGV4IDk0NGU5NjAuLjVlYjNmN2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKQEAgLTIsNiArMiw3IEBACiAjIHRoZXNlIGFyZSBhbGwgZnVuY3Rpb25zIF90ZXN0Y2FwaSBleHBvcnRzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggJ3Rlc3RfJy4KIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAoraW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCByYW5kb20KQEAgLTEwMSw2ICsxMDIsMjAgQEAKICAgICAgICAgc2VsZi5wZW5kaW5nY2FsbHNfd2FpdChsLCBuKQogCiAKK2NsYXNzIFRlc3RHZXRJbmRpY2VzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2dldF9pbmRpY2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5nZXRfaW5kaWNlcyhzbGljZSgxMEwsIDIwLCAxKSwgMTAwKSwgKDAsIDEwLCAyMCwgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3Rlc3RjYXBpLmdldF9pbmRpY2VzKHNsaWNlKDEwLjEsIDIwLCAxKSwgMTAwKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZ2V0X2luZGljZXMoc2xpY2UoMTAsIDIwTCwgMSksIDEwMCksICgwLCAxMCwgMjAsIDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF90ZXN0Y2FwaS5nZXRfaW5kaWNlcyhzbGljZSgxMCwgMjAuMSwgMSksIDEwMCksIE5vbmUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZ2V0X2luZGljZXMoc2xpY2UoMTBMLCAyMCwgMUwpLCAxMDApLCAoMCwgMTAsIDIwLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZ2V0X2luZGljZXMoc2xpY2UoMTAuMSwgMjAsIDFMKSwgMTAwKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZ2V0X2luZGljZXMoc2xpY2UoMTAsIDIwTCwgMUwpLCAxMDApLCAoMCwgMTAsIDIwLCAxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfdGVzdGNhcGkuZ2V0X2luZGljZXMoc2xpY2UoMTAsIDIwLjEsIDFMKSwgMTAwKSwgTm9uZSkKKworCiBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcgYW5kIHRocmVhZCwgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCiBjbGFzcyBUZXN0VGhyZWFkU3RhdGUodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0xMjYsMTggKzE0MSwxNSBAQAogICAgICAgICB0LmpvaW4oKQogCiAKLWRlZiB0ZXN0X21haW4oKToKLSAgICBmb3IgbmFtZSBpbiBkaXIoX3Rlc3RjYXBpKToKLSAgICAgICAgaWYgbmFtZS5zdGFydHN3aXRoKCd0ZXN0XycpOgotICAgICAgICAgICAgdGVzdCA9IGdldGF0dHIoX3Rlc3RjYXBpLCBuYW1lKQotICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgIHByaW50ICJpbnRlcm5hbCIsIG5hbWUKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0ZXN0KCkKLSAgICAgICAgICAgIGV4Y2VwdCBfdGVzdGNhcGkuZXJyb3I6Ci0gICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkLCBzeXMuZXhjX2luZm8oKVsxXQorY2xhc3MgVGVzdF90ZXN0Y2FwaSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbG9jYWxzKCkudXBkYXRlKChuYW1lLCBnZXRhdHRyKF90ZXN0Y2FwaSwgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcihfdGVzdGNhcGkpCisgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgndGVzdF8nKSBhbmQgbm90IG5hbWUuZW5kc3dpdGgoJ19jb2RlJykpCiAKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChDQVBJVGVzdCwgVGVzdFBlbmRpbmdDYWxscywgVGVzdFRocmVhZFN0YXRlKQorCitkZWYgdGVzdF9tYWluKCk6CisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ0FQSVRlc3QsIFRlc3RQZW5kaW5nQ2FsbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdFRocmVhZFN0YXRlLCBUZXN0R2V0SW5kaWNlcywgVGVzdF90ZXN0Y2FwaSkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbGFzcy5weSBiL0xpYi90ZXN0L3Rlc3RfY2xhc3MucHkKaW5kZXggZTVjZGYwOC4uNWNkMTM4ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbGFzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NsYXNzLnB5CkBAIC02MzUsNiArNjM1LDQ5IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHR5cGUoYykuX19nZXRhdHRyaWJ1dGVfXywgYywgW10pCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHR5cGUoYykuX19zZXRhdHRyX18sIGMsIFtdLCBbXSkKIAorICAgIGRlZiB0ZXN0U2V0YXR0cldyYXBwZXJOYW1lSW50ZXJuKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTc5NDogX19zZXRhdHRyX18gc2hvdWxkIGludGVybiB0aGUgYXR0cmlidXRlIG5hbWUKKyAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiBhZGQoc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgcmV0dXJuICdzdW1tYScKKworICAgICAgICBuYW1lID0gJycuam9pbihsaXN0KCdfX2FkZF9fJykpICAjIHNob3VsZG4ndCBiZSBvcHRpbWl6ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChuYW1lLCAnX19hZGRfXycpICAjIG5vdCBpbnRlcm5lZAorICAgICAgICB0eXBlLl9fc2V0YXR0cl9fKEEsIG5hbWUsIGFkZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBKCkgKyAxLCAnc3VtbWEnKQorCisgICAgICAgIG5hbWUyID0gJycuam9pbihsaXN0KCdfX2FkZF9fJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QobmFtZTIsICdfX2FkZF9fJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChuYW1lMiwgbmFtZSkKKyAgICAgICAgdHlwZS5fX2RlbGF0dHJfXyhBLCBuYW1lMikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQSgpICsgMQorCisgICAgQHRlc3Rfc3VwcG9ydC5yZXF1aXJlc191bmljb2RlCisgICAgZGVmIHRlc3RTZXRhdHRyV3JhcHBlck5hbWVVbmljb2RlKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTc5NDogX19zZXRhdHRyX18gc2hvdWxkIGludGVybiB0aGUgYXR0cmlidXRlIG5hbWUKKyAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRlZiBhZGQoc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgcmV0dXJuICdzdW1tYScKKworICAgICAgICB0eXBlLl9fc2V0YXR0cl9fKEEsIHUnX19hZGRfXycsIGFkZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBKCkgKyAxLCAnc3VtbWEnKQorCisgICAgICAgIHR5cGUuX19kZWxhdHRyX18oQSwgdSdfX2FkZF9fJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgQSgpICsgMQorCisgICAgZGVmIHRlc3RTZXRhdHRyTm9uU3RyaW5nTmFtZShzZWxmKToKKyAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHR5cGUuX19zZXRhdHRyX18oQSwgYnl0ZWFycmF5KGIneCcpLCBOb25lKQorCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfcHkza193YXJuaW5ncygKICAgICAgICAgICAgICgiLitfXyhnZXR8c2V0fGRlbClzbGljZV9fIGhhcyBiZWVuIHJlbW92ZWQiLCBEZXByZWNhdGlvbldhcm5pbmcpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKaW5kZXggY2QxMDJmZC4uYTFiYmNiNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CkBAIC00LDEyICs0LDEyIEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9zdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9HQjIzMTIodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0dCMjMxMihtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IyMzEyJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjIzMTInKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2IyMzEyJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKCJhYmNceDgxXHg4MVx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKQEAgLTIwLDkgKzIwLDkgQEAKICAgICAgICAgKCJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKICAgICApCiAKLWNsYXNzIFRlc3RfR0JLKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9HQksobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2diaycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2JrJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2diaycpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgICgiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCkBAIC0zNCw5ICszNCw5IEBACiAgICAgICAgICh1Ilx1MzBmYiIsICJzdHJpY3QiLCBOb25lKSwKICAgICApCiAKLWNsYXNzIFRlc3RfR0IxODAzMCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfR0IxODAzMChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZ2IxODAzMCcKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnZ2IxODAzMCcpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdnYjE4MDMwJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKCJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKQEAgLTQ2LDEyICs0NiwxOCBAQAogICAgICAgICAoImFiY1x4ODBceDgwXHhjMVx4YzQiLCAiaWdub3JlIiwgIHUiYWJjXHU4MDRhIiksCiAgICAgICAgICgiYWJjXHg4NFx4MzlceDg0XHgzOVx4YzFceGM0IiwgInJlcGxhY2UiLCB1ImFiY1x1ZmZmZFx1ODA0YSIpLAogICAgICAgICAodSJcdTMwZmIiLCAic3RyaWN0IiwgIlx4ODE5XHhhNzkiKSwKKyAgICAgICAgIyBpc3N1ZTI5OTkwCisgICAgICAgICgiXHhmZlx4MzBceDgxXHgzMCIsICJzdHJpY3QiLCBOb25lKSwKKyAgICAgICAgKCJceDgxXHgzMFx4ZmZceDMwIiwgInN0cmljdCIsIE5vbmUpLAorICAgICAgICAoImFiY1x4ODFceDM5XHhmZlx4MzlceGMxXHhjNCIsICJyZXBsYWNlIiwgdSJhYmNcdWZmZmRcdTgwNGEiKSwKKyAgICAgICAgKCJhYmNceGFiXHgzNlx4ZmZceDMwZGVmIiwgInJlcGxhY2UiLCB1J2FiY1x1ZmZmZGRlZicpLAorICAgICAgICAoImFiY1x4YmZceDM4XHhmZlx4MzJceGMxXHhjNCIsICJpZ25vcmUiLCB1ImFiY1x1ODA0YSIpLAogICAgICkKICAgICBoYXNfaXNvMTA2NDYgPSBUcnVlCiAKLWNsYXNzIFRlc3RfSFoodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0haKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdoeicKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaHonKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaHonKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgdGVzdCAnflxuJyAoMyBsaW5lcykKICAgICAgICAgKGInVGhpcyBzZW50ZW5jZSBpcyBpbiBBU0NJSS5cbicKQEAgLTc2LDYgKzgyLDEwIEBACiAgICAgICAgIChiJ2FifmNkJywgJ3JlcGxhY2UnLCB1J2FiXHVGRkZEZCcpLAogICAgICAgICAoYidhYlx4ZmZjZCcsICdyZXBsYWNlJywgdSdhYlx1RkZGRGNkJyksCiAgICAgICAgIChiJ2FifntceDgxXHg4MVx4NDFceDQ0fn1jZCcsICdyZXBsYWNlJywgdSdhYlx1RkZGRFx1RkZGRFx1ODA0QWNkJyksCisgICAgICAgICMgaXNzdWUgMzAwMDMKKyAgICAgICAgKHUnYWJ+Y2QnLCAnc3RyaWN0JywgIGInYWJ+fmNkJyksICMgZXNjYXBlIH4KKyAgICAgICAgKGInfntEY35+OkN+fScsICdzdHJpY3QnLCBOb25lKSwgICMgfn4gb25seSBpbiBBU0NJSSBtb2RlCisgICAgICAgIChiJ357RGN+XG46Q359JywgJ3N0cmljdCcsIE5vbmUpLCAjIH5cbiBvbmx5IGluIEFTQ0lJIG1vZGUKICAgICApCiAKIGRlZiB0ZXN0X21haW4oKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CmluZGV4IDM5MWMzMTYuLjAwNzc0YWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQpAQCAtNCwxMiArNCwxMiBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RfQmlnNUhLU0NTKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9CaWc1SEtTQ1MobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2JpZzVoa3NjcycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNWhrc2NzJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2JpZzVoa3NjcycpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgICgiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKaW5kZXggOWYyMzYyOC4uNzVmNGNmYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQpAQCAtMSw3ICsxLDcgQEAKICMgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIElTTyAyMDIyIGVuY29kaW5ncy4KIAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCiBDT01NT05fQ09ERUNfVEVTVFMgPSAoCkBAIC0xMSwyMyArMTEsMjMgQEAKICAgICAgICAgKGInYWJceDFCJGRlZicsICdyZXBsYWNlJywgdSdhYlx1RkZGRCcpLAogICAgICkKIAotY2xhc3MgVGVzdF9JU08yMDIyX0pQKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9JU08yMDIyX0pQKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdpc28yMDIyX2pwJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdpc28yMDIyX2pwJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfanAnKQogICAgIGNvZGVjdGVzdHMgPSBDT01NT05fQ09ERUNfVEVTVFMgKyAoCiAgICAgICAgIChiJ2FiXHgxQk5kZWYnLCAncmVwbGFjZScsIHUnYWJceDFCTmRlZicpLAogICAgICkKIAotY2xhc3MgVGVzdF9JU08yMDIyX0pQMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfSVNPMjAyMl9KUDIobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfanBfMicKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9qcCcpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdpc28yMDIyX2pwJykKICAgICBjb2RlY3Rlc3RzID0gQ09NTU9OX0NPREVDX1RFU1RTICsgKAogICAgICAgICAoYidhYlx4MUJOZGVmJywgJ3JlcGxhY2UnLCB1J2FiZGVmJyksCiAgICAgKQogCi1jbGFzcyBUZXN0X0lTTzIwMjJfS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0lTTzIwMjJfS1IobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2lzbzIwMjJfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2lzbzIwMjJfa3InKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnaXNvMjAyMl9rcicpCiAgICAgY29kZWN0ZXN0cyA9IENPTU1PTl9DT0RFQ19URVNUUyArICgKICAgICAgICAgKGInYWJceDFCTmRlZicsICdyZXBsYWNlJywgdSdhYlx4MUJOZGVmJyksCiAgICAgKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKaW5kZXggZjNjZjkyMy4uZTBhZDA1NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CkBAIC00LDEyICs0LDEyIEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9zdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDkzMih0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5MzIobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTMyJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKCJhYmNceDgxXHgwMFx4ODFceDAwXHg4Mlx4ODQiLCAic3RyaWN0IiwgIE5vbmUpLApAQCAtMjIsMTAgKzIyLDEwIEBACiAgICAgICAgICgiXHg4MVx4NWZceDgxXHg2MVx4ODFceDdjIiwgInJlcGxhY2UiLCB1Ilx1ZmYzY1x1MjIyNVx1ZmYwZCIpLAogICAgICkKIAotY2xhc3MgVGVzdF9FVUNfSklTWDAyMTModGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAorY2xhc3MgVGVzdF9FVUNfSklTWDAyMTMobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfamlzeDAyMTMnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qaXN4MDIxMycpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfamlzeDAyMTMnKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLApAQCAtNTIsMTAgKzUyLDEwIEBACiAgICAgKCJceGMxXHg2NCIsICJzdHJpY3QiLCBOb25lKSwKICkKIAotY2xhc3MgVGVzdF9FVUNfSlBfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwKK2NsYXNzIFRlc3RfRVVDX0pQX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfanAnCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19qcCcpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfanAnKQogICAgIGNvZGVjdGVzdHMgPSBldWNqcF9jb21tb250ZXN0cyArICgKICAgICAgICAgKCJceGExXHhjMFxcIiwgInN0cmljdCIsIHUiXHVmZjNjXFwiKSwKICAgICAgICAgKHUiXHhhNSIsICJzdHJpY3QiLCAiXHg1YyIpLApAQCAtNzAsMTcgKzcwLDE3IEBACiAgICAgKCJhYmNceDgwXHg4MFx4ODJceDg0ZGVmIiwgImlnbm9yZSIsICB1ImFiY1x1ZmY0NGRlZiIpLAogKQogCi1jbGFzcyBUZXN0X1NKSVNfQ09NUEFUKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9TSklTX0NPTVBBVChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnc2hpZnRfamlzJwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdzaGlmdF9qaXMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzJykKICAgICBjb2RlY3Rlc3RzID0gc2hpZnRqaXNfY29tbW9uZW5jdGVzdHMgKyAoCiAgICAgICAgICgiXFxceDdlIiwgInN0cmljdCIsIHUiXFxceDdlIiksCiAgICAgICAgICgiXHg4MVx4NWZceDgxXHg2MVx4ODFceDdjIiwgInN0cmljdCIsIHUiXHVmZjNjXHUyMDE2XHUyMjEyIiksCiAgICAgKQogCi1jbGFzcyBUZXN0X1NKSVNYMDIxMyh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfU0pJU1gwMjEzKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXN4MDIxMycKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzeDAyMTMnKQorICAgIHRzdHJpbmcgPSBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnc2hpZnRfamlzeDAyMTMnKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoImFiY1x4ODBceDgwXHg4Mlx4ODQiLCAic3RyaWN0IiwgIE5vbmUpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKaW5kZXggNDVlYTYyYi4uN2IyZjIzMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CkBAIC00LDEyICs0LDEyIEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9zdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdF9DUDk0OSh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQ1A5NDkobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2NwOTQ5JwotICAgIHRzdHJpbmcgPSB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdjcDk0OScpCiAgICAgY29kZWN0ZXN0cyA9ICgKICAgICAgICAgIyBpbnZhbGlkIGJ5dGVzCiAgICAgICAgICgiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJzdHJpY3QiLCAgTm9uZSksCkBAIC0xOSw5ICsxOSw5IEBACiAgICAgICAgICgiYWJjXHg4MFx4ODBceGMxXHhjNCIsICJpZ25vcmUiLCAgdSJhYmNcdWM4OTQiKSwKICAgICApCiAKLWNsYXNzIFRlc3RfRVVDS1IodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBUZXN0X0VVQ0tSKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfa3InCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2V1Y19rcicpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdldWNfa3InKQogICAgIGNvZGVjdGVzdHMgPSAoCiAgICAgICAgICMgaW52YWxpZCBieXRlcwogICAgICAgICAoImFiY1x4ODBceDgwXHhjMVx4YzQiLCAic3RyaWN0IiwgIE5vbmUpLApAQCAtNDksOSArNDksOSBAQAogICAgICAgICAoIlx4YzFceGM0IiwgInN0cmljdCIsIHUiXHVjODk0IiksCiAgICAgKQogCi1jbGFzcyBUZXN0X0pPSEFCKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorY2xhc3MgVGVzdF9KT0hBQihtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnam9oYWInCi0gICAgdHN0cmluZyA9IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKKyAgICB0c3RyaW5nID0gbXVsdGlieXRlY29kZWNfc3VwcG9ydC5sb2FkX3Rlc3RzdHJpbmcoJ2pvaGFiJykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKCJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CmluZGV4IGM2MmQzMjEuLjc0ODg0MGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQpAQCAtNCwxMiArNCwxMiBAQAogIwogCiBmcm9tIHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKLWNsYXNzIFRlc3RfQmlnNSh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2UsIHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFRlc3RfQmlnNShtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnYmlnNScKLSAgICB0c3RyaW5nID0gdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LmxvYWRfdGVzdHN0cmluZygnYmlnNScpCisgICAgdHN0cmluZyA9IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQubG9hZF90ZXN0c3RyaW5nKCdiaWc1JykKICAgICBjb2RlY3Rlc3RzID0gKAogICAgICAgICAjIGludmFsaWQgYnl0ZXMKICAgICAgICAgKCJhYmNceDgwXHg4MFx4YzFceGM0IiwgInN0cmljdCIsICBOb25lKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKaW5kZXggYjFkMWViNC4uNzNiMTBiYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfY24ucHkKQEAgLTQsMjAgKzQsMjAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0R0IyMzEyTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEdCMjMxMk1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2diMjMxMicKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvdW5pY29kZS9FVUMtQ04uVFhUJwogCi1jbGFzcyBUZXN0R0JLTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEdCS01hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2diaycKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvdW5pY29kZS9DUDkzNi5UWFQnCiAKLWNsYXNzIFRlc3RHQjE4MDMwTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEdCMTgwMzBNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2diMTgwMzAnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0L3VuaWNvZGUvZ2ItMTgwMzAtMjAwMC54bWwnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CmluZGV4IDBhNDFiMjQuLmZlZGE3YTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CkBAIC00LDEwICs0LDEwIEBACiAjCiAKIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9zdXBwb3J0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIAotY2xhc3MgVGVzdEJpZzVIS1NDU01hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RCaWc1SEtTQ1NNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnYmlnNWhrc2NzJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy5weXRob250ZXN0Lm5ldC91bmljb2RlL0JJRzVIS1NDUy0yMDA0LlRYVCcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKaW5kZXggOTA3NjQ1ZC4uZjM3YTgxYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKQEAgLTQsMTAgKzQsMTAgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0Q1A5MzJNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Q1A5MzJNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdjcDkzMicKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvdW5pY29kZS9DUDkzMi5UWFQnCkBAIC0yMiwxNCArMjIsMTQgQEAKICAgICAgICAgc3VwbWFwcy5hcHBlbmQoKGNocihpKSwgdW5pY2hyKGkrMHhmZWMwKSkpCiAKIAotY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0pQQ09NUEFUTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2pwJwogICAgIG1hcGZpbGVuYW1lID0gJ0VVQy1KUC5UWFQnCiAgICAgbWFwZmlsZXVybCA9ICdodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0L3VuaWNvZGUvRVVDLUpQLlRYVCcKIAogCi1jbGFzcyBUZXN0U0pJU0NPTVBBVE1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RTSklTQ09NUEFUTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdzaGlmdF9qaXMnCiAgICAgbWFwZmlsZW5hbWUgPSAnU0hJRlRKSVMuVFhUJwpAQCAtNDMsMTQgKzQzLDE0IEBACiAgICAgICAgICgnXHg4MV8nLCB1J1xcJyksCiAgICAgXQogCi1jbGFzcyBUZXN0RVVDSklTWDAyMTNNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0RVVDSklTWDAyMTNNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdldWNfamlzeDAyMTMnCiAgICAgbWFwZmlsZW5hbWUgPSAnRVVDLUpJU1gwMjEzLlRYVCcKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvdW5pY29kZS9FVUMtSklTWDAyMTMuVFhUJwogCiAKLWNsYXNzIFRlc3RTSklTWDAyMTNNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0U0pJU1gwMjEzTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ3NoaWZ0X2ppc3gwMjEzJwogICAgIG1hcGZpbGVuYW1lID0gJ1NISUZUX0pJU1gwMjEzLlRYVCcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2tyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKaW5kZXggMGJhNzFiZi4uOWUxZGY1ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkKQEAgLTQsMTYgKzQsMTYgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0Q1A5NDlNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Q1A5NDlNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdjcDk0OScKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvdW5pY29kZS9DUDk0OS5UWFQnCiAKIAotY2xhc3MgVGVzdEVVQ0tSTWFwKHRlc3RfbXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAorY2xhc3MgVGVzdEVVQ0tSTWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAnZXVjX2tyJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy5weXRob250ZXN0Lm5ldC91bmljb2RlL0VVQy1LUi5UWFQnCkBAIC0yMyw3ICsyMyw3IEBACiAgICAgcGFzc19kZWN0ZXN0ID0gWygnXHhhNFx4ZDQnLCB1J1x1MzE2NCcpXQogCiAKLWNsYXNzIFRlc3RKT0hBQk1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RKT0hBQk1hcChtdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGVuY29kaW5nID0gJ2pvaGFiJwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy5weXRob250ZXN0Lm5ldC91bmljb2RlL0pPSEFCLlRYVCcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX3R3LnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKaW5kZXggMGQ1NzM0My4uNWI1MDBmZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkKQEAgLTQsMTUgKzQsMTUgQEAKICMKIAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCi1jbGFzcyBUZXN0QklHNU1hcCh0ZXN0X211bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKK2NsYXNzIFRlc3RCSUc1TWFwKG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQuVGVzdEJhc2VfTWFwcGluZywKICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdiaWc1JwogICAgIG1hcGZpbGV1cmwgPSAnaHR0cDovL3d3dy5weXRob250ZXN0Lm5ldC91bmljb2RlL0JJRzUuVFhUJwogCi1jbGFzcyBUZXN0Q1A5NTBNYXAodGVzdF9tdWx0aWJ5dGVjb2RlY19zdXBwb3J0LlRlc3RCYXNlX01hcHBpbmcsCitjbGFzcyBUZXN0Q1A5NTBNYXAobXVsdGlieXRlY29kZWNfc3VwcG9ydC5UZXN0QmFzZV9NYXBwaW5nLAogICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICdjcDk1MCcKICAgICBtYXBmaWxldXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvdW5pY29kZS9DUDk1MC5UWFQnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CmluZGV4IGVmYzQwY2YuLjBlYzhiZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNzLnB5CkBAIC0xNDksMTkgKzE0OSwzMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAnJy5qb2luKGxpbmVzWzE6XSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICcnKQogCisgICAgICAgICMgSXNzdWUgIzMyMTEwOiBUZXN0IHJlYWRsaW5lKCkgZm9sbG93ZWQgYnkgcmVhZChuKQorICAgICAgICBmID0gZ2V0cmVhZGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lKCksIGxpbmVzWzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgxKSwgbGluZXNbMV1bMF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKDApLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMTAwKSwgZGF0YVtsZW4obGluZXNbMF0pICsgMTpdWzoxMDBdKQorCiAgICAgICAgICMgSXNzdWUgIzE2NjM2OiBUZXN0IHJlYWRsaW5lKCkgZm9sbG93ZWQgYnkgcmVhZGxpbmVzKCkKICAgICAgICAgZiA9IGdldHJlYWRlcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZSgpLCBsaW5lc1swXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lcygpLCBsaW5lc1sxOl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksICcnKQogCi0gICAgICAgICMgVGVzdCByZWFkKCkgZm9sbG93ZWQgYnkgcmVhZCgpCisgICAgICAgICMgVGVzdCByZWFkKG4pIGZvbGxvd2VkIGJ5IHJlYWQoKQogICAgICAgICBmID0gZ2V0cmVhZGVyKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoc2l6ZT00MCwgY2hhcnM9NSksIGRhdGFbOjVdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBkYXRhWzU6XSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgJycpCiAKLSAgICAgICAgIyBJc3N1ZSAjMTI0NDY6IFRlc3QgcmVhZCgpIGZvbGxvd2VkIGJ5IHJlYWRsaW5lcygpCisgICAgICAgICMgSXNzdWUgIzMyMTEwOiBUZXN0IHJlYWQobikgZm9sbG93ZWQgYnkgcmVhZChuKQorICAgICAgICBmID0gZ2V0cmVhZGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoc2l6ZT00MCwgY2hhcnM9NSksIGRhdGFbOjVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgxKSwgZGF0YVs1XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoMCksICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgxMDApLCBkYXRhWzY6MTA2XSkKKworICAgICAgICAjIElzc3VlICMxMjQ0NjogVGVzdCByZWFkKG4pIGZvbGxvd2VkIGJ5IHJlYWRsaW5lcygpCiAgICAgICAgIGYgPSBnZXRyZWFkZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZChzaXplPTQwLCBjaGFycz01KSwgZGF0YVs6NV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkbGluZXMoKSwgW2xpbmVzWzBdWzU6XV0gKyBsaW5lc1sxOl0pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGVyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlci5weQppbmRleCA0NTk4ODExLi5jOThlNDk0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbXBpbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29tcGlsZXIucHkKQEAgLTI2LDcgKzI2LDcgQEAKICAgICAgICAgIyB3YXJuaW5nOiBpZiAnb3MnIG9yICd0ZXN0X3N1cHBvcnQnIGFyZSBtb3ZlZCBpbiBzb21lIG90aGVyIGRpciwKICAgICAgICAgIyB0aGV5IHNob3VsZCBiZSBjaGFuZ2VkIGhlcmUuCiAgICAgICAgIGxpYmRpciA9IG9zLnBhdGguZGlybmFtZShvcy5fX2ZpbGVfXykKLSAgICAgICAgdGVzdGRpciA9IG9zLnBhdGguZGlybmFtZSh0ZXN0LnRlc3Rfc3VwcG9ydC5fX2ZpbGVfXykKKyAgICAgICAgdGVzdGRpciA9IHRlc3QudGVzdF9zdXBwb3J0LlRFU1RfSE9NRV9ESVIKIAogICAgICAgICBmb3IgZGlyIGluIFt0ZXN0ZGlyXToKICAgICAgICAgICAgIGZvciBiYXNlbmFtZSBpbiAidGVzdF9vcy5weSIsOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5CmluZGV4IGMwMzgzYjIuLjAyYjI5MmYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkKQEAgLTgsNiArOCwxMyBAQAogTkFOID0gZmxvYXQoIm5hbiIpCiAjIFRoZXNlIHRlc3RzIGVuc3VyZSB0aGF0IGNvbXBsZXggbWF0aCBkb2VzIHRoZSByaWdodCB0aGluZwogCisjIGRlY29yYXRvciBmb3Igc2tpcHBpbmcgdGVzdHMgb24gbm9uLUlFRUUgNzU0IHBsYXRmb3JtcworaGF2ZV9nZXRmb3JtYXQgPSBoYXNhdHRyKGZsb2F0LCAiX19nZXRmb3JtYXRfXyIpCityZXF1aXJlc19JRUVFXzc1NCA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoaGF2ZV9nZXRmb3JtYXQgYW5kCisgICAgZmxvYXQuX19nZXRmb3JtYXRfXygiZG91YmxlIikuc3RhcnRzd2l0aCgiSUVFRSIpLAorICAgICJ0ZXN0IHJlcXVpcmVzIElFRUUgNzU0IGRvdWJsZXMiKQorCisKIGNsYXNzIENvbXBsZXhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBhc3NlcnRBbG1vc3RFcXVhbChzZWxmLCBhLCBiKToKQEAgLTQ0MSw2ICs0NDgsMjggQEAKICAgICAgICAgICAgICAgICAgICAgYiA9ICd5ICVzIHgnICUgb3AKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHR5cGUoZXZhbChhKSkgaXMgdHlwZShldmFsKGIpKSBpcyB4Y29tcGxleCkKIAorICAgIEByZXF1aXJlc19JRUVFXzc1NAorICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX3NwZWNpYWxfbnVtYmVycyhzZWxmKToKKyAgICAgICAgY2xhc3MgY29tcGxleDIoY29tcGxleCk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGZvciB4IGluIDAuMCwgLTAuMCwgSU5GLCAtSU5GLCBOQU46CisgICAgICAgICAgICBmb3IgeSBpbiAwLjAsIC0wLjAsIElORiwgLUlORiwgTkFOOgorICAgICAgICAgICAgICAgIHogPSBjb21wbGV4KHgsIHkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGbG9hdHNBcmVJZGVudGljYWwoei5yZWFsLCB4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmxvYXRzQXJlSWRlbnRpY2FsKHouaW1hZywgeSkKKyAgICAgICAgICAgICAgICB6ID0gY29tcGxleDIoeCwgeSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoeiksIGNvbXBsZXgyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmxvYXRzQXJlSWRlbnRpY2FsKHoucmVhbCwgeCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZsb2F0c0FyZUlkZW50aWNhbCh6LmltYWcsIHkpCisgICAgICAgICAgICAgICAgeiA9IGNvbXBsZXgoY29tcGxleDIoeCwgeSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHopLCBjb21wbGV4KQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmxvYXRzQXJlSWRlbnRpY2FsKHoucmVhbCwgeCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZsb2F0c0FyZUlkZW50aWNhbCh6LmltYWcsIHkpCisgICAgICAgICAgICAgICAgeiA9IGNvbXBsZXgyKGNvbXBsZXgoeCwgeSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHopLCBjb21wbGV4MikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEZsb2F0c0FyZUlkZW50aWNhbCh6LnJlYWwsIHgpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGbG9hdHNBcmVJZGVudGljYWwoei5pbWFnLCB5KQorCiAgICAgZGVmIHRlc3RfaGFzaChzZWxmKToKICAgICAgICAgZm9yIHggaW4geHJhbmdlKC0zMCwgMzApOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHgpLCBoYXNoKGNvbXBsZXgoeCwgMCkpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb3B5X3JlZy5weSBiL0xpYi90ZXN0L3Rlc3RfY29weV9yZWcucHkKaW5kZXggOGNkYjhiNy4uMTdjY2JkMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb3B5X3JlZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvcHlfcmVnLnB5CkBAIC0xNyw2ICsxNywxMiBAQAogY2xhc3MgV2l0aFByaXZhdGUob2JqZWN0KToKICAgICBfX3Nsb3RzX18gPSAoJ19fc3BhbScsKQogCitjbGFzcyBfV2l0aExlYWRpbmdVbmRlcnNjb3JlQW5kUHJpdmF0ZShvYmplY3QpOgorICAgIF9fc2xvdHNfXyA9ICgnX19zcGFtJywpCisKK2NsYXNzIF9fXyhvYmplY3QpOgorICAgIF9fc2xvdHNfXyA9ICgnX19zcGFtJywpCisKIGNsYXNzIFdpdGhTaW5nbGVTdHJpbmcob2JqZWN0KToKICAgICBfX3Nsb3RzX18gPSAnc3BhbScKIApAQCAtMTA1LDYgKzExMSwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlfcmVnLl9zbG90bmFtZXMoV2l0aFdlYWtyZWYpLCBbXSkKICAgICAgICAgZXhwZWN0ZWQgPSBbJ19XaXRoUHJpdmF0ZV9fc3BhbSddCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29weV9yZWcuX3Nsb3RuYW1lcyhXaXRoUHJpdmF0ZSksIGV4cGVjdGVkKQorICAgICAgICBleHBlY3RlZCA9IFsnX1dpdGhMZWFkaW5nVW5kZXJzY29yZUFuZFByaXZhdGVfX3NwYW0nXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlfcmVnLl9zbG90bmFtZXMoX1dpdGhMZWFkaW5nVW5kZXJzY29yZUFuZFByaXZhdGUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvcHlfcmVnLl9zbG90bmFtZXMoX19fKSwgWydfX3NwYW0nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3B5X3JlZy5fc2xvdG5hbWVzKFdpdGhTaW5nbGVTdHJpbmcpLCBbJ3NwYW0nXSkKICAgICAgICAgZXhwZWN0ZWQgPSBbJ2VnZ3MnLCAnc3BhbSddCiAgICAgICAgIGV4cGVjdGVkLnNvcnQoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jcnlwdC5weSBiL0xpYi90ZXN0L3Rlc3RfY3J5cHQucHkKaW5kZXggNGRiMjAwZC4uN2NkOWM3MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jcnlwdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NyeXB0LnB5CkBAIC0xLDE0ICsxLDIwIEBACitpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKIGNyeXB0ID0gdGVzdF9zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2NyeXB0JykKIAoraWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ29wZW5ic2QnKToKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgnVGhlIG9ubHkgc3VwcG9ydGVkIG1ldGhvZCBvbiBPcGVuQlNEIGlzIEJsb3dmaXNoJykKKwogY2xhc3MgQ3J5cHRUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9jcnlwdChzZWxmKToKLSAgICAgICAgYyA9IGNyeXB0LmNyeXB0KCdteXBhc3N3b3JkJywgJ2FiJykKLSAgICAgICAgaWYgdGVzdF9zdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBwcmludCAnVGVzdCBlbmNyeXB0aW9uOiAnLCBjCisgICAgICAgIGNyID0gY3J5cHQuY3J5cHQoJ215cGFzc3dvcmQnLCAnYWInKQorICAgICAgICBpZiBjciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGNyMiA9IGNyeXB0LmNyeXB0KCdteXBhc3N3b3JkJywgY3IpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNyMiwgY3IpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoQ3J5cHRUZXN0Q2FzZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3N2LnB5IGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKaW5kZXggZDQ1Njc1OS4uODhkNWFmNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jc3YucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKQEAgLTEwMzYsNiArMTAzNiwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuaWZmZXIuaGFzX2hlYWRlcihzZWxmLmhlYWRlcjIgKyBzZWxmLnNhbXBsZTgpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUpCiAKKyAgICBkZWYgdGVzdF9ndWVzc19xdW90ZV9hbmRfZGVsaW1pdGVyKHNlbGYpOgorICAgICAgICBzbmlmZmVyID0gY3N2LlNuaWZmZXIoKQorICAgICAgICBmb3IgaGVhZGVyIGluICgiOycxMjM7NCc7IiwgIicxMjM7NCc7IiwgIjsnMTIzOzQnIiwgIicxMjM7NCciKToKKyAgICAgICAgICAgIGRpYWxlY3QgPSBzbmlmZmVyLnNuaWZmKGhlYWRlciwgIiw7IikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbGVjdC5kZWxpbWl0ZXIsICc7JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbGVjdC5xdW90ZWNoYXIsICInIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZGlhbGVjdC5kb3VibGVxdW90ZSwgRmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGRpYWxlY3Quc2tpcGluaXRpYWxzcGFjZSwgRmFsc2UpCisKICAgICBkZWYgdGVzdF9zbmlmZihzZWxmKToKICAgICAgICAgc25pZmZlciA9IGNzdi5TbmlmZmVyKCkKICAgICAgICAgZGlhbGVjdCA9IHNuaWZmZXIuc25pZmYoc2VsZi5zYW1wbGUxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jdXJzZXMucHkgYi9MaWIvdGVzdC90ZXN0X2N1cnNlcy5weQppbmRleCA4YTM5Y2QwLi5jN2U1YjRhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2N1cnNlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2N1cnNlcy5weQpAQCAtMTUsNyArMTUsOSBAQAogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB0ZXN0LnRlc3Rfc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMsIGltcG9ydF9tb2R1bGUsIHZlcmJvc2UsIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IChyZXF1aXJlcywgaW1wb3J0X21vZHVsZSwgdmVyYm9zZSwgcnVuX3VuaXR0ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBTYXZlU2lnbmFscykKKwogCiAjIE9wdGlvbmFsbHkgdGVzdCBjdXJzZXMgbW9kdWxlLiAgVGhpcyBjdXJyZW50bHkgcmVxdWlyZXMgdGhhdCB0aGUKICMgJ2N1cnNlcycgcmVzb3VyY2UgYmUgZ2l2ZW4gb24gdGhlIHJlZ3J0ZXN0IGNvbW1hbmQgbGluZSB1c2luZyB0aGUgLXUKQEAgLTI0LDggKzI2LDEyIEBACiAKICMgSWYgZWl0aGVyIG9mIHRoZXNlIGRvbid0IGV4aXN0LCBza2lwIHRoZSB0ZXN0cy4KIGN1cnNlcyA9IGltcG9ydF9tb2R1bGUoJ2N1cnNlcycpCi1pbXBvcnRfbW9kdWxlKCdjdXJzZXMucGFuZWwnKQogaW1wb3J0X21vZHVsZSgnY3Vyc2VzLmFzY2lpJykKK2ltcG9ydF9tb2R1bGUoJ2N1cnNlcy50ZXh0cGFkJykKK3RyeToKKyAgICBpbXBvcnQgY3Vyc2VzLnBhbmVsCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFzcwogCiBkZWYgcmVxdWlyZXNfY3Vyc2VzX2Z1bmMobmFtZSk6CiAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihjdXJzZXMsIG5hbWUpLApAQCAtNjEsNiArNjcsOCBAQAogICAgICAgICAgICAgZGVsIGNscy50bXAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zYXZlX3NpZ25hbHMgPSBTYXZlU2lnbmFscygpCisgICAgICAgIHNlbGYuc2F2ZV9zaWduYWxzLnNhdmUoKQogICAgICAgICBpZiB2ZXJib3NlOgogICAgICAgICAgICAgIyBqdXN0IHRvIG1ha2UgdGhlIHRlc3Qgb3V0cHV0IGEgbGl0dGxlIG1vcmUgcmVhZGFibGUKICAgICAgICAgICAgIHByaW50KCcnKQpAQCAtNzAsNiArNzgsNyBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgY3Vyc2VzLnJlc2V0dHkoKQogICAgICAgICBjdXJzZXMuZW5kd2luKCkKKyAgICAgICAgc2VsZi5zYXZlX3NpZ25hbHMucmVzdG9yZSgpCiAKICAgICBkZWYgdGVzdF93aW5kb3dfZnVuY3Moc2VsZik6CiAgICAgICAgICJUZXN0IHRoZSBtZXRob2RzIG9mIHdpbmRvd3MiCkBAIC04Myw3ICs5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgKDQsNCwgJ2EnKSwgKDUsNSwgJ2EnLCBjdXJzZXMuQV9CT0xEKV06CiAgICAgICAgICAgICAgICAgbWV0aCgqYXJncykKIAotICAgICAgICBmb3IgbWV0aCBpbiBbc3Rkc2NyLmJveCwgc3Rkc2NyLmNsZWFyLCBzdGRzY3IuY2xydG9ib3QsCisgICAgICAgIGZvciBtZXRoIGluIFtzdGRzY3IuY2xlYXIsIHN0ZHNjci5jbHJ0b2JvdCwKICAgICAgICAgICAgICAgICAgICAgIHN0ZHNjci5jbHJ0b2VvbCwgc3Rkc2NyLmN1cnN5bmN1cCwgc3Rkc2NyLmRlbGNoLAogICAgICAgICAgICAgICAgICAgICAgc3Rkc2NyLmRlbGV0ZWxuLCBzdGRzY3IuZXJhc2UsIHN0ZHNjci5nZXRiZWd5eCwKICAgICAgICAgICAgICAgICAgICAgIHN0ZHNjci5nZXRia2dkLCBzdGRzY3IuZ2V0a2V5LCBzdGRzY3IuZ2V0bWF4eXgsCkBAIC0xMTYsNiArMTI1LDEzIEBACiAgICAgICAgICAgICB3aW4uYm9yZGVyKDY1LCA2NiwgNjcsIDY4LAogICAgICAgICAgICAgICAgICAgICAgICA2OSwgW10sIDcxLCA3MikKIAorICAgICAgICB3aW4uYm94KDY1LCA2NykKKyAgICAgICAgd2luLmJveCgnIScsICdfJykKKyAgICAgICAgd2luLmJveChiJzonLCBiJ34nKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHdpbi5ib3gsIDY1LCA2NiwgNjcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luLmJveCwgNjUpCisgICAgICAgIHdpbi5ib3goKQorCiAgICAgICAgIHN0ZHNjci5jbGVhcm9rKDEpCiAKICAgICAgICAgd2luNCA9IHN0ZHNjci5kZXJ3aW4oMiwyKQpAQCAtMTMxLDcgKzE0Nyw5IEBACiAKICAgICAgICAgc3Rkc2NyLmlkY29rKDEpCiAgICAgICAgIHN0ZHNjci5pZGxvaygxKQotICAgICAgICBzdGRzY3IuaW1tZWRvaygxKQorICAgICAgICBpZiBoYXNhdHRyKHN0ZHNjciwgJ2ltbWVkb2snKToKKyAgICAgICAgICAgIHN0ZHNjci5pbW1lZG9rKDEpCisgICAgICAgICAgICBzdGRzY3IuaW1tZWRvaygwKQogICAgICAgICBzdGRzY3IuaW5zY2goJ2MnKQogICAgICAgICBzdGRzY3IuaW5zZGVsbG4oMSkKICAgICAgICAgc3Rkc2NyLmluc25zdHIoJ2FiYycsIDMpCkBAIC0xNjUsMjUgKzE4MywyNyBAQAogICAgICAgICBzdGRzY3Iuc2V0c2NycmVnKDEwLDE1KQogICAgICAgICB3aW4zID0gc3Rkc2NyLnN1YndpbigxMCwxMCkKICAgICAgICAgd2luMyA9IHN0ZHNjci5zdWJ3aW4oMTAsMTAsIDUsNSkKLSAgICAgICAgc3Rkc2NyLnN5bmNvaygxKQorICAgICAgICBpZiBoYXNhdHRyKHN0ZHNjciwgJ3N5bmNvaycpIGFuZCBub3Qgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoInN1bm9zIik6CisgICAgICAgICAgICBzdGRzY3Iuc3luY29rKDEpCiAgICAgICAgIHN0ZHNjci50aW1lb3V0KDUpCiAgICAgICAgIHN0ZHNjci50b3VjaGxpbmUoNSw1KQogICAgICAgICBzdGRzY3IudG91Y2hsaW5lKDUsNSwwKQogICAgICAgICBzdGRzY3IudmxpbmUoJ2EnLCAzKQogICAgICAgICBzdGRzY3IudmxpbmUoJ2EnLCAzLCBjdXJzZXMuQV9TVEFORE9VVCkKLSAgICAgICAgc3Rkc2NyLmNoZ2F0KDUsIDIsIDMsIGN1cnNlcy5BX0JMSU5LKQotICAgICAgICBzdGRzY3IuY2hnYXQoMywgY3Vyc2VzLkFfQk9MRCkKLSAgICAgICAgc3Rkc2NyLmNoZ2F0KDUsIDgsIGN1cnNlcy5BX1VOREVSTElORSkKLSAgICAgICAgc3Rkc2NyLmNoZ2F0KGN1cnNlcy5BX0JMSU5LKQorICAgICAgICBpZiBoYXNhdHRyKHN0ZHNjciwgJ2NoZ2F0Jyk6CisgICAgICAgICAgICBzdGRzY3IuY2hnYXQoNSwgMiwgMywgY3Vyc2VzLkFfQkxJTkspCisgICAgICAgICAgICBzdGRzY3IuY2hnYXQoMywgY3Vyc2VzLkFfQk9MRCkKKyAgICAgICAgICAgIHN0ZHNjci5jaGdhdCg1LCA4LCBjdXJzZXMuQV9VTkRFUkxJTkUpCisgICAgICAgICAgICBzdGRzY3IuY2hnYXQoY3Vyc2VzLkFfQkxJTkspCiAgICAgICAgIHN0ZHNjci5yZWZyZXNoKCkKIAogICAgICAgICBzdGRzY3IudmxpbmUoMSwxLCAnYScsIDMpCiAgICAgICAgIHN0ZHNjci52bGluZSgxLDEsICdhJywgMywgY3Vyc2VzLkFfU1RBTkRPVVQpCiAKLSAgICAgICAgaWYgaGFzYXR0cihjdXJzZXMsICdyZXNpemUnKToKLSAgICAgICAgICAgIHN0ZHNjci5yZXNpemUoKQotICAgICAgICBpZiBoYXNhdHRyKGN1cnNlcywgJ2VuY2xvc2UnKToKLSAgICAgICAgICAgIHN0ZHNjci5lbmNsb3NlKCkKKyAgICAgICAgaWYgaGFzYXR0cihzdGRzY3IsICdyZXNpemUnKToKKyAgICAgICAgICAgIHN0ZHNjci5yZXNpemUoMjUsIDgwKQorICAgICAgICBpZiBoYXNhdHRyKHN0ZHNjciwgJ2VuY2xvc2UnKToKKyAgICAgICAgICAgIHN0ZHNjci5lbmNsb3NlKDEwLCAxMCkKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzdGRzY3IuZ2V0c3RyLCAtNDAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzdGRzY3IuZ2V0c3RyLCAyLCAzLCAtNDAwKQpAQCAtMTk1LDE0ICsyMTUsMTggQEAKICAgICAgICAgIlRlc3QgbW9kdWxlLWxldmVsIGZ1bmN0aW9ucyIKICAgICAgICAgZm9yIGZ1bmMgaW4gW2N1cnNlcy5iYXVkcmF0ZSwgY3Vyc2VzLmJlZXAsIGN1cnNlcy5jYW5fY2hhbmdlX2NvbG9yLAogICAgICAgICAgICAgICAgICAgICAgY3Vyc2VzLmNicmVhaywgY3Vyc2VzLmRlZl9wcm9nX21vZGUsIGN1cnNlcy5kb3VwZGF0ZSwKLSAgICAgICAgICAgICAgICAgICAgIGN1cnNlcy5maWx0ZXIsIGN1cnNlcy5mbGFzaCwgY3Vyc2VzLmZsdXNoaW5wLAorICAgICAgICAgICAgICAgICAgICAgY3Vyc2VzLmZsYXNoLCBjdXJzZXMuZmx1c2hpbnAsCiAgICAgICAgICAgICAgICAgICAgICBjdXJzZXMuaGFzX2NvbG9ycywgY3Vyc2VzLmhhc19pYywgY3Vyc2VzLmhhc19pbCwKICAgICAgICAgICAgICAgICAgICAgIGN1cnNlcy5pc2VuZHdpbiwgY3Vyc2VzLmtpbGxjaGFyLCBjdXJzZXMubG9uZ25hbWUsCiAgICAgICAgICAgICAgICAgICAgICBjdXJzZXMubm9jYnJlYWssIGN1cnNlcy5ub2VjaG8sIGN1cnNlcy5ub25sLAogICAgICAgICAgICAgICAgICAgICAgY3Vyc2VzLm5vcWlmbHVzaCwgY3Vyc2VzLm5vcmF3LAogICAgICAgICAgICAgICAgICAgICAgY3Vyc2VzLnJlc2V0X3Byb2dfbW9kZSwgY3Vyc2VzLnRlcm1hdHRycywKLSAgICAgICAgICAgICAgICAgICAgIGN1cnNlcy50ZXJtbmFtZSwgY3Vyc2VzLmVyYXNlY2hhciwgY3Vyc2VzLmdldHN5eF06CisgICAgICAgICAgICAgICAgICAgICBjdXJzZXMudGVybW5hbWUsIGN1cnNlcy5lcmFzZWNoYXJdOgogICAgICAgICAgICAgZnVuYygpCisgICAgICAgIGlmIGhhc2F0dHIoY3Vyc2VzLCAnZmlsdGVyJyk6CisgICAgICAgICAgICBjdXJzZXMuZmlsdGVyKCkKKyAgICAgICAgaWYgaGFzYXR0cihjdXJzZXMsICdnZXRzeXgnKToKKyAgICAgICAgICAgIGN1cnNlcy5nZXRzeXgoKQogCiAgICAgICAgICMgRnVuY3Rpb25zIHRoYXQgYWN0dWFsbHkgbmVlZCBhcmd1bWVudHMKICAgICAgICAgaWYgY3Vyc2VzLnRpZ2V0c3RyKCJjbm9ybSIpOgpAQCAtMjI2LDIwICsyNTAsMjMgQEAKICAgICAgICAgY3Vyc2VzLnB1dHAoYidhYmMnKQogICAgICAgICBjdXJzZXMucWlmbHVzaCgpCiAgICAgICAgIGN1cnNlcy5yYXcoKSA7IGN1cnNlcy5yYXcoMSkKLSAgICAgICAgY3Vyc2VzLnNldHN5eCg1LDUpCisgICAgICAgIGlmIGhhc2F0dHIoY3Vyc2VzLCAnc2V0c3l4Jyk6CisgICAgICAgICAgICBjdXJzZXMuc2V0c3l4KDUsNSkKICAgICAgICAgY3Vyc2VzLnRpZ2V0ZmxhZygnaGMnKQogICAgICAgICBjdXJzZXMudGlnZXRudW0oJ2NvJykKICAgICAgICAgY3Vyc2VzLnRpZ2V0c3RyKCdjcicpCiAgICAgICAgIGN1cnNlcy50cGFybShiJ2NyJykKLSAgICAgICAgY3Vyc2VzLnR5cGVhaGVhZChzeXMuX19zdGRpbl9fLmZpbGVubygpKQorICAgICAgICBpZiBoYXNhdHRyKGN1cnNlcywgJ3R5cGVhaGVhZCcpOgorICAgICAgICAgICAgY3Vyc2VzLnR5cGVhaGVhZChzeXMuX19zdGRpbl9fLmZpbGVubygpKQogICAgICAgICBjdXJzZXMudW5jdHJsKCdhJykKICAgICAgICAgY3Vyc2VzLnVuZ2V0Y2goJ2EnKQotICAgICAgICBjdXJzZXMudXNlX2VudigxKQorICAgICAgICBpZiBoYXNhdHRyKGN1cnNlcywgJ3VzZV9lbnYnKToKKyAgICAgICAgICAgIGN1cnNlcy51c2VfZW52KDEpCiAKICAgICAjIEZ1bmN0aW9ucyBvbmx5IGF2YWlsYWJsZSBvbiBhIGZldyBwbGF0Zm9ybXMKICAgICBkZWYgdGVzdF9jb2xvcnNfZnVuY3Moc2VsZik6CiAgICAgICAgIGlmIG5vdCBjdXJzZXMuaGFzX2NvbG9ycygpOgotICAgICAgICAgICAgc2VsZi5za2lwKCdyZXF1aXJlcyBjb2xvcnMgc3VwcG9ydCcpCisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCdyZXF1aXJlcyBjb2xvcnMgc3VwcG9ydCcpCiAgICAgICAgIGN1cnNlcy5zdGFydF9jb2xvcigpCiAgICAgICAgIGN1cnNlcy5pbml0X3BhaXIoMiwgMSwxKQogICAgICAgICBjdXJzZXMuY29sb3JfY29udGVudCgxKQpAQCAtMjYyLDEyICsyODksMTMgQEAKICAgICBkZWYgdGVzdF9nZXRtb3VzZShzZWxmKToKICAgICAgICAgKGF2YWlsbWFzaywgb2xkbWFzaykgPSBjdXJzZXMubW91c2VtYXNrKGN1cnNlcy5CVVRUT04xX1BSRVNTRUQpCiAgICAgICAgIGlmIGF2YWlsbWFzayA9PSAwOgotICAgICAgICAgICAgc2VsZi5za2lwKCdtb3VzZSBzdHVmZiBub3QgYXZhaWxhYmxlJykKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ21vdXNlIHN0dWZmIG5vdCBhdmFpbGFibGUnKQogICAgICAgICBjdXJzZXMubW91c2VpbnRlcnZhbCgxMCkKICAgICAgICAgIyBqdXN0IHZlcmlmeSB0aGVzZSBkb24ndCBjYXVzZSBlcnJvcnMKICAgICAgICAgY3Vyc2VzLnVuZ2V0bW91c2UoMCwgMCwgMCwgMCwgY3Vyc2VzLkJVVFRPTjFfUFJFU1NFRCkKICAgICAgICAgbSA9IGN1cnNlcy5nZXRtb3VzZSgpCiAKKyAgICBAcmVxdWlyZXNfY3Vyc2VzX2Z1bmMoJ3BhbmVsJykKICAgICBkZWYgdGVzdF91c2VycHRyX3dpdGhvdXRfc2V0KHNlbGYpOgogICAgICAgICB3ID0gY3Vyc2VzLm5ld3dpbigxMCwgMTApCiAgICAgICAgIHAgPSBjdXJzZXMucGFuZWwubmV3X3BhbmVsKHcpCkBAIC0yNzYsNiArMzA0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2c9J3VzZXJwdHIgc2hvdWxkIGZhaWwgc2luY2Ugbm90IHNldCcpOgogICAgICAgICAgICAgcC51c2VycHRyKCkKIAorICAgIEByZXF1aXJlc19jdXJzZXNfZnVuYygncGFuZWwnKQogICAgIGRlZiB0ZXN0X3VzZXJwdHJfbWVtb3J5X2xlYWsoc2VsZik6CiAgICAgICAgIHcgPSBjdXJzZXMubmV3d2luKDEwLCAxMCkKICAgICAgICAgcCA9IGN1cnNlcy5wYW5lbC5uZXdfcGFuZWwodykKQEAgLTI4OCwxNiArMzE3LDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHJlZmNvdW50KG9iaiksIG5yZWZzLAogICAgICAgICAgICAgICAgICAgICAgICAgICJzZXRfdXNlcnB0ciBsZWFrZWQgcmVmZXJlbmNlcyIpCiAKKyAgICBAcmVxdWlyZXNfY3Vyc2VzX2Z1bmMoJ3BhbmVsJykKICAgICBkZWYgdGVzdF91c2VycHRyX3NlZ2ZhdWx0KHNlbGYpOgotICAgICAgICBwYW5lbCA9IGN1cnNlcy5wYW5lbC5uZXdfcGFuZWwoc2VsZi5zdGRzY3IpCisgICAgICAgIHcgPSBjdXJzZXMubmV3d2luKDEwLCAxMCkKKyAgICAgICAgcGFuZWwgPSBjdXJzZXMucGFuZWwubmV3X3BhbmVsKHcpCiAgICAgICAgIGNsYXNzIEE6CiAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICBwYW5lbC5zZXRfdXNlcnB0cihOb25lKQogICAgICAgICBwYW5lbC5zZXRfdXNlcnB0cihBKCkpCiAgICAgICAgIHBhbmVsLnNldF91c2VycHRyKE5vbmUpCiAKKyAgICBAcmVxdWlyZXNfY3Vyc2VzX2Z1bmMoJ3BhbmVsJykKICAgICBkZWYgdGVzdF9uZXdfY3Vyc2VzX3BhbmVsKHNlbGYpOgotICAgICAgICBwYW5lbCA9IGN1cnNlcy5wYW5lbC5uZXdfcGFuZWwoc2VsZi5zdGRzY3IpCisgICAgICAgIHcgPSBjdXJzZXMubmV3d2luKDEwLCAxMCkKKyAgICAgICAgcGFuZWwgPSBjdXJzZXMucGFuZWwubmV3X3BhbmVsKHcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdHlwZShwYW5lbCkpCiAKICAgICBAcmVxdWlyZXNfY3Vyc2VzX2Z1bmMoJ2lzX3Rlcm1fcmVzaXplZCcpCkBAIC0zMjcsNiArMzYwLDE2IEBACiAgICAgICAgIGIgPSBjdXJzZXMudHBhcm0oY3Vyc2VzLnRpZ2V0c3RyKCJjdXAiKSwgNSwgMykKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGIpLCBieXRlcykKIAorICAgIGRlZiB0ZXN0X2lzc3VlMTMwNTEoc2VsZik6CisgICAgICAgIHN0ZHNjciA9IHNlbGYuc3Rkc2NyCisgICAgICAgIGlmIG5vdCBoYXNhdHRyKHN0ZHNjciwgJ3Jlc2l6ZScpOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ3JlcXVpcmVzIGN1cnNlcy53aW5kb3cucmVzaXplJykKKyAgICAgICAgYm94ID0gY3Vyc2VzLnRleHRwYWQuVGV4dGJveChzdGRzY3IsIGluc2VydF9tb2RlPVRydWUpCisgICAgICAgIGxpbmVzLCBjb2xzID0gc3Rkc2NyLmdldG1heHl4KCkKKyAgICAgICAgc3Rkc2NyLnJlc2l6ZShsaW5lcy0yLCBjb2xzLTIpCisgICAgICAgICMgdGhpcyBtYXkgY2F1c2UgaW5maW5pdGUgcmVjdXJzaW9uLCBsZWFkaW5nIHRvIGEgUnVudGltZUVycm9yCisgICAgICAgIGJveC5faW5zZXJ0X3ByaW50YWJsZV9jaGFyKCdhJykKKwogCiBjbGFzcyBUZXN0QXNjaWkodW5pdHRlc3QuVGVzdENhc2UpOgogCkBAIC0zNTgsNiArNDAxLDI1IEBACiAgICAgICAgICAgICBjaGVjayhjdXJzZXMuYXNjaWkuaXNwdW5jdCwgYyBpbiBzdHJpbmcucHVuY3R1YXRpb24pCiAgICAgICAgICAgICBjaGVjayhjdXJzZXMuYXNjaWkuaXN4ZGlnaXQsIGMgaW4gc3RyaW5nLmhleGRpZ2l0cykKIAorICAgICAgICBmb3IgaSBpbiAoLTIsIC0xLCAyNTYsIHN5cy5tYXh1bmljb2RlLCBzeXMubWF4dW5pY29kZSsxKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3Vyc2VzLmFzY2lpLmlzYWxudW0oaSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGN1cnNlcy5hc2NpaS5pc2FscGhhKGkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdXJzZXMuYXNjaWkuaXNkaWdpdChpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3Vyc2VzLmFzY2lpLmlzbG93ZXIoaSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGN1cnNlcy5hc2NpaS5pc3NwYWNlKGkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdXJzZXMuYXNjaWkuaXN1cHBlcihpKSkKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdXJzZXMuYXNjaWkuaXNhc2NpaShpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3Vyc2VzLmFzY2lpLmlzY3RybChpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3Vyc2VzLmFzY2lpLmlzY250cmwoaSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGN1cnNlcy5hc2NpaS5pc2JsYW5rKGkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdXJzZXMuYXNjaWkuaXNncmFwaChpKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3Vyc2VzLmFzY2lpLmlzcHJpbnQoaSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGN1cnNlcy5hc2NpaS5pc3B1bmN0KGkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdXJzZXMuYXNjaWkuaXN4ZGlnaXQoaSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdXJzZXMuYXNjaWkuaXNtZXRhKC0xKSkKKwogICAgIGRlZiB0ZXN0X2FzY2lpKHNlbGYpOgogICAgICAgICBhc2NpaSA9IGN1cnNlcy5hc2NpaS5hc2NpaQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzY2lpKCdceGMxJyksICdBJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CmluZGV4IDIwYWJlNzQuLmY1NmMzZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQpAQCAtNDkyLDYgKzQ5Miw0NiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih0MyksIHN0cih0NCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodDQuYXNfaG91cnMoKSwgLTEpCiAKKyAgICBkZWYgdGVzdF9pc3N1ZTMxNzUyKHNlbGYpOgorICAgICAgICAjIFRoZSBpbnRlcnByZXRlciBzaG91bGRuJ3QgY3Jhc2ggYmVjYXVzZSBkaXZtb2QoKSByZXR1cm5zIG5lZ2F0aXZlCisgICAgICAgICMgcmVtYWluZGVyLgorICAgICAgICBjbGFzcyBCYWRJbnQoaW50KToKKyAgICAgICAgICAgIGRlZiBfX211bF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gUHJvZCgpCisKKyAgICAgICAgY2xhc3MgQmFkTG9uZyhsb25nKToKKyAgICAgICAgICAgIGRlZiBfX211bF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gUHJvZCgpCisKKyAgICAgICAgY2xhc3MgUHJvZDoKKyAgICAgICAgICAgIGRlZiBfX3JhZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFN1bSgpCisKKyAgICAgICAgY2xhc3MgU3VtKGludCk6CisgICAgICAgICAgICBkZWYgX19kaXZtb2RfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgIyBuZWdhdGl2ZSByZW1haW5kZXIKKyAgICAgICAgICAgICAgICByZXR1cm4gKDAsIC0xKQorCisgICAgICAgIHRpbWVkZWx0YShtaWNyb3NlY29uZHM9QmFkSW50KDEpKQorICAgICAgICB0aW1lZGVsdGEoaG91cnM9QmFkSW50KDEpKQorICAgICAgICB0aW1lZGVsdGEod2Vla3M9QmFkSW50KDEpKQorICAgICAgICB0aW1lZGVsdGEobWljcm9zZWNvbmRzPUJhZExvbmcoMSkpCisgICAgICAgIHRpbWVkZWx0YShob3Vycz1CYWRMb25nKDEpKQorICAgICAgICB0aW1lZGVsdGEod2Vla3M9QmFkTG9uZygxKSkKKworICAgICAgICBjbGFzcyBTdW0obG9uZyk6CisgICAgICAgICAgICBkZWYgX19kaXZtb2RfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgIyBuZWdhdGl2ZSByZW1haW5kZXIKKyAgICAgICAgICAgICAgICByZXR1cm4gKDAsIC0xKQorCisgICAgICAgIHRpbWVkZWx0YShtaWNyb3NlY29uZHM9QmFkSW50KDEpKQorICAgICAgICB0aW1lZGVsdGEoaG91cnM9QmFkSW50KDEpKQorICAgICAgICB0aW1lZGVsdGEod2Vla3M9QmFkSW50KDEpKQorICAgICAgICB0aW1lZGVsdGEobWljcm9zZWNvbmRzPUJhZExvbmcoMSkpCisgICAgICAgIHRpbWVkZWx0YShob3Vycz1CYWRMb25nKDEpKQorICAgICAgICB0aW1lZGVsdGEod2Vla3M9QmFkTG9uZygxKSkKKworCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBkYXRlIHRlc3RzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CmluZGV4IGM4MTA2NGQuLmU2MzA3YWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQpAQCAtNjU5LDYgKzY1OSwyMSBAQAogICAgICAgICBkMSA9PSBkMiAgICMgbm90IGNsZWFyIGlmIHRoaXMgaXMgc3VwcG9zZWQgdG8gYmUgVHJ1ZSBvciBGYWxzZSwKICAgICAgICAgICAgICAgICAgICAjIGJ1dCBpdCB1c2VkIHRvIGdpdmUgYSBTeXN0ZW1FcnJvcgogCisgICAgQHRlc3Rfc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9idWdfMzE2MDgoc2VsZik6CisgICAgICAgICMgVGhlIGludGVycHJldGVyIHVzZWQgdG8gY3Jhc2ggaW4gc3BlY2lmaWMgY2FzZXMgd2hlcmUgYSBkZXF1ZQorICAgICAgICAjIHN1YmNsYXNzIHJldHVybmVkIGEgbm9uLWRlcXVlLgorICAgICAgICBjbGFzcyBYKGRlcXVlKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZCA9IFgoKQorICAgICAgICBkZWYgYmFkX19fbmV3X18oY2xzLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgcmV0dXJuIFs0Ml0KKyAgICAgICAgWC5fX25ld19fID0gYmFkX19fbmV3X18KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgZCAqIDQyICAjIHNob3VsZG4ndCBjcmFzaAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBkICsgZGVxdWUoWzEsIDIsIDNdKSAgIyBzaG91bGRuJ3QgY3Jhc2gKKwogCiBjbGFzcyBTdWJjbGFzc1dpdGhLd2FyZ3MoZGVxdWUpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuZXdhcmc9MSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5IGIvTGliL3Rlc3QvdGVzdF9kZXNjci5weQppbmRleCBmYzk2NWY3Li5iYmM1MmFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKQEAgLTEsMTQgKzEsMjEgQEAKIGltcG9ydCBfX2J1aWx0aW5fXworaW1wb3J0IGNvcHkKIGltcG9ydCBnYworaW1wb3J0IHBpY2tsZQogaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHdlYWtyZWYKIAogZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKIAogCitkZWYgZnVuYygqYXJncyk6CisgICAgcmV0dXJuIGFyZ3MKKworCiBjbGFzcyBPcGVyYXRvcnNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqYXJncywgKiprd2FyZ3MpOgpAQCAtMTQxNCw2ICsxNDIxLDIxIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoImNsYXNzbWV0aG9kIHNob3VsZG4ndCBhY2NlcHQga2V5d29yZCBhcmdzIikKIAorICAgIEB0ZXN0X3N1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfY2xhc3NtZXRob2RfY29weV9waWNrbGUoc2VsZik6CisgICAgICAgIGNtID0gY2xhc3NtZXRob2QoZnVuYykKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfcHkza193YXJuaW5ncygKKyAgICAgICAgICAgICAgICAoIi4qY2xhc3NtZXRob2QiLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGNvcHkuY29weShjbSkKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfcHkza193YXJuaW5ncygKKyAgICAgICAgICAgICAgICAoIi4qY2xhc3NtZXRob2QiLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGNvcHkuZGVlcGNvcHkoY20pCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBjbSwgcHJvdG8pCisgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LmNoZWNrX3B5M2tfd2FybmluZ3MoCisgICAgICAgICAgICAgICAgKCIuKmNsYXNzbWV0aG9kIiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICBwaWNrbGUuZHVtcHMoY20sIDIpCisKICAgICBAdGVzdF9zdXBwb3J0LmltcGxfZGV0YWlsKCJ0aGUgbW9kdWxlICd4eHN1YnR5cGUnIGlzIGludGVybmFsIikKICAgICBkZWYgdGVzdF9jbGFzc21ldGhvZHNfaW5fYyhzZWxmKToKICAgICAgICAgIyBUZXN0aW5nIEMtYmFzZWQgY2xhc3MgbWV0aG9kcy4uLgpAQCAtMTQ2Miw2ICsxNDg0LDIxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5mb28oMSksIChkLCAxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChELmZvbyhkLCAxKSwgKGQsIDEpKQogCisgICAgQHRlc3Rfc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zdGF0aWNtZXRob2RfY29weV9waWNrbGUoc2VsZik6CisgICAgICAgIHNtID0gc3RhdGljbWV0aG9kKGZ1bmMpCisgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LmNoZWNrX3B5M2tfd2FybmluZ3MoCisgICAgICAgICAgICAgICAgKCIuKnN0YXRpY21ldGhvZCIsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgY29weS5jb3B5KHNtKQorICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5jaGVja19weTNrX3dhcm5pbmdzKAorICAgICAgICAgICAgICAgICgiLipzdGF0aWNtZXRob2QiLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGNvcHkuZGVlcGNvcHkoc20pCisgICAgICAgIGZvciBwcm90byBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBzbSwgcHJvdG8pCisgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LmNoZWNrX3B5M2tfd2FybmluZ3MoCisgICAgICAgICAgICAgICAgKCIuKnN0YXRpY21ldGhvZCIsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgcGlja2xlLmR1bXBzKHNtLCAyKQorCiAgICAgQHRlc3Rfc3VwcG9ydC5pbXBsX2RldGFpbCgidGhlIG1vZHVsZSAneHhzdWJ0eXBlJyBpcyBpbnRlcm5hbCIpCiAgICAgZGVmIHRlc3Rfc3RhdGljbWV0aG9kc19pbl9jKHNlbGYpOgogICAgICAgICAjIFRlc3RpbmcgQy1iYXNlZCBzdGF0aWMgbWV0aG9kcy4uLgpAQCAtMTU1MCw2ICsxNTg3LDg2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mb28sIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5fX2NsYXNzX18sIEQpCiAKKyAgICBAdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCisgICAgZGVmIHRlc3RfYmFkX25ldyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvYmplY3QuX19uZXdfXykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvYmplY3QuX19uZXdfXywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGlzdC5fX25ld19fLCBvYmplY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb2JqZWN0Ll9fbmV3X18sIGxpc3QpCisgICAgICAgIGNsYXNzIEMob2JqZWN0KToKKyAgICAgICAgICAgIF9fbmV3X18gPSBsaXN0Ll9fbmV3X18KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBDKQorICAgICAgICBjbGFzcyBDKGxpc3QpOgorICAgICAgICAgICAgX19uZXdfXyA9IG9iamVjdC5fX25ld19fCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgQykKKworICAgIGRlZiB0ZXN0X29iamVjdF9uZXcoc2VsZik6CisgICAgICAgIGNsYXNzIEEob2JqZWN0KToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgb2JqZWN0Ll9fbmV3X18oQSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvYmplY3QuX19uZXdfXywgQSwgNSkKKyAgICAgICAgb2JqZWN0Ll9faW5pdF9fKEEoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvYmplY3QuX19pbml0X18sIEEoKSwgNSkKKworICAgICAgICBjbGFzcyBBKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgZm9vKToKKyAgICAgICAgICAgICAgICBzZWxmLmZvbyA9IGZvbworICAgICAgICBvYmplY3QuX19uZXdfXyhBKQorICAgICAgICBvYmplY3QuX19uZXdfXyhBLCA1KQorICAgICAgICBvYmplY3QuX19pbml0X18oQSgzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvYmplY3QuX19pbml0X18sIEEoMyksIDUpCisKKyAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBmb28pOgorICAgICAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19uZXdfXyhjbHMpCisgICAgICAgIG9iamVjdC5fX25ld19fKEEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb2JqZWN0Ll9fbmV3X18sIEEsIDUpCisgICAgICAgIG9iamVjdC5fX2luaXRfXyhBKDMpKQorICAgICAgICBvYmplY3QuX19pbml0X18oQSgzKSwgNSkKKworICAgICAgICBjbGFzcyBBKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIGZvbyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG9iamVjdC5fX25ld19fKGNscykKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmb28pOgorICAgICAgICAgICAgICAgIHNlbGYuZm9vID0gZm9vCisgICAgICAgIG9iamVjdC5fX25ld19fKEEpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGEgPSBvYmplY3QuX19uZXdfXyhBLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYSksIEEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQorICAgICAgICBvYmplY3QuX19pbml0X18oQSgzKSkKKyAgICAgICAgYSA9IEEoMykKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgdzoKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJywgRGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgb2JqZWN0Ll9faW5pdF9fKGEsIDUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYS5mb28sIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcpLCAxKQorCisgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQorICAgIGRlZiB0ZXN0X3Jlc3RvcmVkX29iamVjdF9uZXcoc2VsZik6CisgICAgICAgIGNsYXNzIEEob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvciwgQSkKKyAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgIF9fbmV3X18gPSBvYmplY3QuX19uZXdfXworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZvbyk6CisgICAgICAgICAgICAgICAgc2VsZi5mb28gPSBmb28KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdlcnJvcicsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGIgPSBCKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mb28sIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5fX2NsYXNzX18sIEIpCisgICAgICAgIGRlbCBCLl9fbmV3X18KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIEIpCisgICAgICAgIGRlbCBBLl9fbmV3X18KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdlcnJvcicsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGIgPSBCKDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5mb28sIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYi5fX2NsYXNzX18sIEIpCisKICAgICBkZWYgdGVzdF9hbHRtcm8oc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBtcm8oKSBhbmQgb3ZlcnJpZGluZyBpdC4uLgogICAgICAgICBjbGFzcyBBKG9iamVjdCk6CkBAIC0yMDc3LDYgKzIxOTQsMjEgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiZXhwZWN0ZWQgWmVyb0RpdmlzaW9uRXJyb3IgZnJvbSBiYWQgcHJvcGVydHkiKQogCisgICAgQHRlc3Rfc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9wcm9wZXJ0eV9jb3B5X3BpY2tsZShzZWxmKToKKyAgICAgICAgcCA9IHByb3BlcnR5KGZ1bmMpCisgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LmNoZWNrX3B5M2tfd2FybmluZ3MoCisgICAgICAgICAgICAgICAgKCIuKnByb3BlcnR5IiwgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICBjb3B5LmNvcHkocCkKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfcHkza193YXJuaW5ncygKKyAgICAgICAgICAgICAgICAoIi4qcHJvcGVydHkiLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGNvcHkuZGVlcGNvcHkocCkKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIHAsIHByb3RvKQorICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5jaGVja19weTNrX3dhcm5pbmdzKAorICAgICAgICAgICAgICAgICgiLipwcm9wZXJ0eSIsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgcGlja2xlLmR1bXBzKHAsIDIpCisKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyLAogICAgICAgICAgICAgICAgICAgICAgIkRvY3N0cmluZ3MgYXJlIG9taXR0ZWQgd2l0aCAtTzIgYW5kIGFib3ZlIikKICAgICBkZWYgdGVzdF9wcm9wZXJ0aWVzX2RvY19hdHRyaWIoc2VsZik6CkBAIC0zNzU2LDYgKzM4ODgsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpc2luc3RhbmNlKGQsIEQpLCBUcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuZm9vLCAxKQogCisgICAgICAgIGNsYXNzIEMob2JqZWN0KToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBfX25ld19fKCphcmdzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYXJncworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMoMSwgMiksIChDLCAxLCAyKSkKKyAgICAgICAgY2xhc3MgRChDKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEKDEsIDIpLCAoRCwgMSwgMikpCisKKyAgICAgICAgY2xhc3MgQyhvYmplY3QpOgorICAgICAgICAgICAgQGNsYXNzbWV0aG9kCisgICAgICAgICAgICBkZWYgX19uZXdfXygqYXJncyk6CisgICAgICAgICAgICAgICAgcmV0dXJuIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDKDEsIDIpLCAoQywgQywgMSwgMikpCisgICAgICAgIGNsYXNzIEQoQyk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRCgxLCAyKSwgKEQsIEQsIDEsIDIpKQorCiAgICAgZGVmIHRlc3RfaW11bF9idWcoc2VsZik6CiAgICAgICAgICMgVGVzdGluZyBmb3IgX19pbXVsX18gcHJvYmxlbXMuLi4KICAgICAgICAgIyBTRiBidWcgNTQ0NjQ3CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3QucHkKaW5kZXggNDQ3NGM5Yi4uYWFjZDQ3MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQpAQCAtMyw2ICszLDcgQEAKIAogaW1wb3J0IFVzZXJEaWN0LCByYW5kb20sIHN0cmluZwogaW1wb3J0IGdjLCB3ZWFrcmVmCitpbXBvcnQgc3lzCiAKIAogY2xhc3MgRGljdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDIyLDYgKzQyMywxMiBAQAogICAgICAgICBkID0gezE6IEJhZFJlcHIoKX0KICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRXhjLCByZXByLCBkKQogCisgICAgZGVmIHRlc3RfcmVwcl9kZWVwKHNlbGYpOgorICAgICAgICBkID0ge30KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkgKyAxMDApOgorICAgICAgICAgICAgZCA9IHsxOiBkfQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHJlcHIsIGQpCisKICAgICBkZWYgdGVzdF9sZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSh7fSA8IHt9KQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHsxOiAyfSA8IHsxTDogMkx9KQpAQCAtNjkwLDYgKzY5Nyw5NyBAQAogICAgICAgICB0ZXN0X3N1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgbGFtYmRhIGQ6IGl0ZXIoZC52aWV3dmFsdWVzKCkpLCBkaWN0KQogICAgICAgICB0ZXN0X3N1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgbGFtYmRhIGQ6IGl0ZXIoZC52aWV3aXRlbXMoKSksIGRpY3QpCiAKKyAgICBkZWYgdGVzdF9lcXVhbF9vcGVyYXRvcl9tb2RpZnlpbmdfb3BlcmFuZChzZWxmKToKKyAgICAgICAgIyB0ZXN0IGZpeCBmb3Igc2VnIGZhdWx0IHJlcG9ydGVkIGluIGlzc3VlIDI3OTQ1IHBhcnQgMy4KKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgICAgICAgICAgZGljdF9iLmNsZWFyKCkKKworICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgZGljdF9hLmNsZWFyKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEzCisKKyAgICAgICAgZGljdF9hID0ge1goKTogMH0KKyAgICAgICAgZGljdF9iID0ge1goKTogWCgpfQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGljdF9hID09IGRpY3RfYikKKworICAgIGRlZiB0ZXN0X2Zyb21rZXlzX29wZXJhdG9yX21vZGlmeWluZ19kaWN0X29wZXJhbmQoc2VsZik6CisgICAgICAgICMgdGVzdCBmaXggZm9yIHNlZyBmYXVsdCByZXBvcnRlZCBpbiBpc3N1ZSAyNzk0NSBwYXJ0IDRhLgorICAgICAgICBjbGFzcyBYKGludCk6CisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEzCisKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIGlmIGxlbihkKSA+IDE6CisgICAgICAgICAgICAgICAgICAgIGQuY2xlYXIoKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgIGQgPSB7fSAgIyB0aGlzIGlzIHJlcXVpcmVkIHRvIGV4aXN0IHNvIHRoYXQgZCBjYW4gYmUgY29uc3RydWN0ZWQhCisgICAgICAgIGQgPSB7WCgxKTogMSwgWCgyKTogMn0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGljdC5mcm9ta2V5cyhkKSAgIyBzaG91bGRuJ3QgY3Jhc2gKKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjogICMgaW1wbGVtZW50YXRpb24gZGVmaW5lZAorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfZnJvbWtleXNfb3BlcmF0b3JfbW9kaWZ5aW5nX3NldF9vcGVyYW5kKHNlbGYpOgorICAgICAgICAjIHRlc3QgZml4IGZvciBzZWcgZmF1bHQgcmVwb3J0ZWQgaW4gaXNzdWUgMjc5NDUgcGFydCA0Yi4KKyAgICAgICAgY2xhc3MgWChpbnQpOgorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAxMworCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICBpZiBsZW4oZCkgPiAxOgorICAgICAgICAgICAgICAgICAgICBkLmNsZWFyKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKworICAgICAgICBkID0ge30gICMgdGhpcyBpcyByZXF1aXJlZCB0byBleGlzdCBzbyB0aGF0IGQgY2FuIGJlIGNvbnN0cnVjdGVkIQorICAgICAgICBkID0ge1goMSksIFgoMil9CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGRpY3QuZnJvbWtleXMoZCkgICMgc2hvdWxkbid0IGNyYXNoCisgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6ICAjIGltcGxlbWVudGF0aW9uIGRlZmluZWQKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2RpY3RpdGVtc19jb250YWluc191c2VfYWZ0ZXJfZnJlZShzZWxmKToKKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgZC5jbGVhcigpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKyAgICAgICAgICAgIF9faGFzaF9fID0gb2JqZWN0Ll9faGFzaF9fICAjIHNpbGVuY2UgUHkzayB3YXJuaW5nCisKKyAgICAgICAgZCA9IHswOiBzZXQoKX0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgKDAsIFgoKSkgaW4gZC5pdGVyaXRlbXMoKSAgIyBzaG91bGRuJ3QgY3Jhc2gKKyAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjogICMgaW1wbGVtZW50YXRpb24gZGVmaW5lZAorICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaW5pdF91c2VfYWZ0ZXJfZnJlZShzZWxmKToKKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHBhaXJbOl0gPSBbXQorICAgICAgICAgICAgICAgIHJldHVybiAxMworCisgICAgICAgIHBhaXIgPSBbWCgpLCAxMjNdCisgICAgICAgIGRpY3QoW3BhaXJdKQorCisgICAgZGVmIHRlc3Rfb29iX2luZGV4aW5nX2RpY3RpdGVyX2l0ZXJuZXh0aXRlbShzZWxmKToKKyAgICAgICAgY2xhc3MgWChpbnQpOgorICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgICAgICAgICAgZC5jbGVhcigpCisKKyAgICAgICAgZCA9IHtpOiBYKGkpIGZvciBpIGluIHJhbmdlKDgpfQorCisgICAgICAgIGRlZiBpdGVyX2FuZF9tdXRhdGUoKToKKyAgICAgICAgICAgIGZvciByZXN1bHQgaW4gZC5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICBpZiByZXN1bHRbMF0gPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgZFsyXSA9IE5vbmUgIyBmcmVlIGRbMl0gLS0+IFgoMikuX19kZWxfXyB3YXMgY2FsbGVkCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCBpdGVyX2FuZF9tdXRhdGUpCisKKwogZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzCiAKIGNsYXNzIEdlbmVyYWxNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQppbmRleCBiNTg1YmRkLi4xZWRlZWM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RpY3R2aWV3cy5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCBjb3B5CiBpbXBvcnQgcGlja2xlCitpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKQEAgLTE2OSw2ICsxNzAsMjAgQEAKICAgICBkZWYgdGVzdF9yZWN1cnNpdmVfcmVwcihzZWxmKToKICAgICAgICAgZCA9IHt9CiAgICAgICAgIGRbNDJdID0gZC52aWV3dmFsdWVzKCkKKyAgICAgICAgciA9IHJlcHIoZCkKKyAgICAgICAgIyBDYW5ub3QgcGVyZm9ybSBhIHN0cm9uZ2VyIHRlc3QsIGFzIHRoZSBjb250ZW50cyBvZiB0aGUgcmVwcgorICAgICAgICAjIGFyZSBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuICBBbGwgd2UgY2FuIHNheSBpcyB0aGF0IHdlCisgICAgICAgICMgd2FudCBhIHN0ciByZXN1bHQsIG5vdCBhbiBleGNlcHRpb24gb2YgYW55IHNvcnQuCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyLCBzdHIpCisgICAgICAgIGRbNDJdID0gZC52aWV3aXRlbXMoKQorICAgICAgICByID0gcmVwcihkKQorICAgICAgICAjIEFnYWluLgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uociwgc3RyKQorCisgICAgZGVmIHRlc3RfZGVlcGx5X25lc3RlZF9yZXByKHNlbGYpOgorICAgICAgICBkID0ge30KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uoc3lzLmdldHJlY3Vyc2lvbmxpbWl0KCkgKyAxMDApOgorICAgICAgICAgICAgZCA9IHs0MjogZC52aWV3dmFsdWVzKCl9CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgcmVwciwgZCkKIAogICAgIGRlZiB0ZXN0X2FiY19yZWdpc3RyeShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQppbmRleCAzNWYyYzM2Li5kODI3N2I3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CkBAIC0yNjksMTMgKzI2OSwzMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZtdCgzLDYpLCAnNCw2JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbXQoMCwwKSwgJzAnKQogCitjbGFzcyBUZXN0SnVua0FQSXModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2lzX2xpbmVfanVua190cnVlKHNlbGYpOgorICAgICAgICBmb3IgbGluZSBpbiBbJyMnLCAnICAnLCAnICMnLCAnIyAnLCAnICMgJywgJyddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpZmZsaWIuSVNfTElORV9KVU5LKGxpbmUpLCByZXByKGxpbmUpKQorCisgICAgZGVmIHRlc3RfaXNfbGluZV9qdW5rX2ZhbHNlKHNlbGYpOgorICAgICAgICBmb3IgbGluZSBpbiBbJyMjJywgJyAjIycsICcjIyAnLCAnYWJjICcsICdhYmMgIycsICdNci4gTW9vc2UgaXMgdXAhJ106CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRpZmZsaWIuSVNfTElORV9KVU5LKGxpbmUpLCByZXByKGxpbmUpKQorCisgICAgZGVmIHRlc3RfaXNfbGluZV9qdW5rX1JFRE9TKHNlbGYpOgorICAgICAgICBldmlsX2lucHV0ID0gKCdcdCcgKiAxMDAwMDAwKSArICcjIycKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaWZmbGliLklTX0xJTkVfSlVOSyhldmlsX2lucHV0KSkKKworICAgIGRlZiB0ZXN0X2lzX2NoYXJhY3Rlcl9qdW5rX3RydWUoc2VsZik6CisgICAgICAgIGZvciBjaGFyIGluIFsnICcsICdcdCddOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpZmZsaWIuSVNfQ0hBUkFDVEVSX0pVTksoY2hhciksIHJlcHIoY2hhcikpCisKKyAgICBkZWYgdGVzdF9pc19jaGFyYWN0ZXJfanVua19mYWxzZShzZWxmKToKKyAgICAgICAgZm9yIGNoYXIgaW4gWydhJywgJyMnLCAnXG4nLCAnXGYnLCAnXHInLCAnXHYnXToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZGlmZmxpYi5JU19DSEFSQUNURVJfSlVOSyhjaGFyKSwgcmVwcihjaGFyKSkKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIGRpZmZsaWIuSHRtbERpZmYuX2RlZmF1bHRfcHJlZml4ID0gMAogICAgIERvY3Rlc3RzID0gZG9jdGVzdC5Eb2NUZXN0U3VpdGUoZGlmZmxpYikKICAgICBydW5fdW5pdHRlc3QoCiAgICAgICAgIFRlc3RXaXRoQXNjaWksIFRlc3RBdXRvanVuaywgVGVzdFNGcGF0Y2hlcywgVGVzdFNGYnVncywKLSAgICAgICAgVGVzdE91dHB1dEZvcm1hdCwgRG9jdGVzdHMpCisgICAgICAgIFRlc3RPdXRwdXRGb3JtYXQsIFRlc3RKdW5rQVBJcykKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnN1cmVwaXAucHkgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQppbmRleCAzMzE2ZmNmLi5jYjlkMTBhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Vuc3VyZXBpcC5weQpAQCAtMjEsNiArMjEsNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgcnVuX3BpcF9wYXRjaCA9IG1vY2sucGF0Y2goImVuc3VyZXBpcC5fcnVuX3BpcCIpCiAgICAgICAgIHNlbGYucnVuX3BpcCA9IHJ1bl9waXBfcGF0Y2guc3RhcnQoKQorICAgICAgICBzZWxmLnJ1bl9waXAucmV0dXJuX3ZhbHVlID0gMAogICAgICAgICBzZWxmLmFkZENsZWFudXAocnVuX3BpcF9wYXRjaC5zdG9wKQogCiAgICAgICAgICMgQXZvaWQgc2lkZSBlZmZlY3RzIG9uIHRoZSBhY3R1YWwgb3MgbW9kdWxlCkBAIC0yNTgsNyArMjU5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnJ1bl9waXAuY2FsbGVkKQogCiAgICAgZGVmIHRlc3RfYmFzaWNfYm9vdHN0cmFwcGluZyhzZWxmKToKLSAgICAgICAgZW5zdXJlcGlwLl9tYWluKFtdKQorICAgICAgICBleGl0X2NvZGUgPSBlbnN1cmVwaXAuX21haW4oW10pCiAKICAgICAgICAgc2VsZi5ydW5fcGlwLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKAogICAgICAgICAgICAgWwpAQCAtMjcwLDYgKzI3MSwxMyBAQAogCiAgICAgICAgIGFkZGl0aW9uYWxfcGF0aHMgPSBzZWxmLnJ1bl9waXAuY2FsbF9hcmdzWzBdWzFdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFkZGl0aW9uYWxfcGF0aHMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRfY29kZSwgMCkKKworICAgIGRlZiB0ZXN0X2Jvb3RzdHJhcHBpbmdfZXJyb3JfY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fcGlwLnJldHVybl92YWx1ZSA9IDIKKyAgICAgICAgZXhpdF9jb2RlID0gZW5zdXJlcGlwLl9tYWluKFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRfY29kZSwgMikKKwogCiAKIGNsYXNzIFRlc3RVbmluc3RhbGxhdGlvbk1haW5GdW5jdGlvbihFbnN1cmVwaXBNaXhpbiwgdW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjg0LDcgKzI5Miw3IEBACiAKICAgICBkZWYgdGVzdF9iYXNpY191bmluc3RhbGwoc2VsZik6CiAgICAgICAgIHdpdGggZmFrZV9waXAoKToKLSAgICAgICAgICAgIGVuc3VyZXBpcC5fdW5pbnN0YWxsLl9tYWluKFtdKQorICAgICAgICAgICAgZXhpdF9jb2RlID0gZW5zdXJlcGlwLl91bmluc3RhbGwuX21haW4oW10pCiAKICAgICAgICAgc2VsZi5ydW5fcGlwLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKAogICAgICAgICAgICAgWwpAQCAtMjkzLDYgKzMwMSwxMyBAQAogICAgICAgICAgICAgXQogICAgICAgICApCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0X2NvZGUsIDApCisKKyAgICBkZWYgdGVzdF91bmluc3RhbGxfZXJyb3JfY29kZShzZWxmKToKKyAgICAgICAgd2l0aCBmYWtlX3BpcCgpOgorICAgICAgICAgICAgc2VsZi5ydW5fcGlwLnJldHVybl92YWx1ZSA9IDIKKyAgICAgICAgICAgIGV4aXRfY29kZSA9IGVuc3VyZXBpcC5fdW5pbnN0YWxsLl9tYWluKFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRfY29kZSwgMikKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0LnRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKaW5kZXggMWZkNzkxMC4uNmJmYzRlNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQpAQCAtMTIsNyArMTIsOCBAQAogaW1wb3J0IGlvCiBpbXBvcnQgX3B5aW8gYXMgcHlpbwogCi1mcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gVXNlckxpc3QgaW1wb3J0IFVzZXJMaXN0CiAKIGNsYXNzIEF1dG9GaWxlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjQsNyArMjUsNyBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgaWYgc2VsZi5mOgogICAgICAgICAgICAgc2VsZi5mLmNsb3NlKCkKLSAgICAgICAgb3MucmVtb3ZlKFRFU1RGTikKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQogCiAgICAgZGVmIHRlc3RXZWFrUmVmcyhzZWxmKToKICAgICAgICAgIyB2ZXJpZnkgd2VhayByZWZlcmVuY2VzCkBAIC0xNDMsOCArMTQ0LDEyIEBACiAKIGNsYXNzIE90aGVyRmlsZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorCiAgICAgZGVmIHRlc3RNb2RlU3RyaW5ncyhzZWxmKToKICAgICAgICAgIyBjaGVjayBpbnZhbGlkIG1vZGUgc3RyaW5ncworICAgICAgICBzZWxmLm9wZW4oVEVTVEZOLCAnd2InKS5jbG9zZSgpCiAgICAgICAgIGZvciBtb2RlIGluICgiIiwgImFVIiwgIndVKyIpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGYgPSBzZWxmLm9wZW4oVEVTVEZOLCBtb2RlKQpAQCAtMTkxLDcgKzE5Niw2IEBACiAgICAgICAgICMgU0YgYnVnIDxodHRwOi8vd3d3LnB5dGhvbi5vcmcvc2YvODAxNjMxPgogICAgICAgICAjICJmaWxlLnRydW5jYXRlIGZhdWx0IG9uIHdpbmRvd3MiCiAKLSAgICAgICAgb3MudW5saW5rKFRFU1RGTikKICAgICAgICAgZiA9IHNlbGYub3BlbihURVNURk4sICd3YicpCiAKICAgICAgICAgdHJ5OgpAQCAtMjE1LDcgKzIxOSw2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJGaWxlIHNpemUgYWZ0ZXIgZnRydW5jYXRlIHdyb25nICVkIiAlIHNpemUpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIG9zLnVubGluayhURVNURk4pCiAKICAgICBkZWYgdGVzdEl0ZXJhdGlvbihzZWxmKToKICAgICAgICAgIyBUZXN0IHRoZSBjb21wbGV4IGludGVyYWN0aW9uIHdoZW4gbWl4aW5nIGZpbGUtaXRlcmF0aW9uIGFuZCB0aGUKQEAgLTIzNiw4NiArMjM5LDgyIEBACiAgICAgICAgIG1ldGhvZHMgPSBbKCJyZWFkbGluZSIsICgpKSwgKCJyZWFkIiwgKCkpLCAoInJlYWRsaW5lcyIsICgpKSwKICAgICAgICAgICAgICAgICAgICAoInJlYWRpbnRvIiwgKGFycmF5KCJiIiwgYiIgIioxMDApLCkpXQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgICMgUHJlcGFyZSB0aGUgdGVzdGZpbGUKLSAgICAgICAgICAgIGJhZyA9IHNlbGYub3BlbihURVNURk4sICJ3YiIpCi0gICAgICAgICAgICBiYWcud3JpdGUoZmlsbGVyICogbmNodW5rcykKLSAgICAgICAgICAgIGJhZy53cml0ZWxpbmVzKHRlc3RsaW5lcykKLSAgICAgICAgICAgIGJhZy5jbG9zZSgpCi0gICAgICAgICAgICAjIFRlc3QgZm9yIGFwcHJvcHJpYXRlIGVycm9ycyBtaXhpbmcgcmVhZCogYW5kIGl0ZXJhdGlvbgotICAgICAgICAgICAgZm9yIG1ldGhvZG5hbWUsIGFyZ3MgaW4gbWV0aG9kczoKLSAgICAgICAgICAgICAgICBmID0gc2VsZi5vcGVuKFRFU1RGTiwgJ3JiJykKLSAgICAgICAgICAgICAgICBpZiBuZXh0KGYpICE9IGZpbGxlcjoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsLCAiQnJva2VuIHRlc3RmaWxlIgotICAgICAgICAgICAgICAgIG1ldGggPSBnZXRhdHRyKGYsIG1ldGhvZG5hbWUpCi0gICAgICAgICAgICAgICAgbWV0aCgqYXJncykgICMgVGhpcyBzaW1wbHkgc2hvdWxkbid0IGZhaWwKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLQotICAgICAgICAgICAgIyBUZXN0IHRvIHNlZSBpZiBoYXJtbGVzcyAoYnkgYWNjaWRlbnQpIG1peGluZyBvZiByZWFkKiBhbmQKLSAgICAgICAgICAgICMgaXRlcmF0aW9uIHN0aWxsIHdvcmtzLiBUaGlzIGRlcGVuZHMgb24gdGhlIHNpemUgb2YgdGhlIGludGVybmFsCi0gICAgICAgICAgICAjIGl0ZXJhdGlvbiBidWZmZXIgKGN1cnJlbnRseSA4MTkyLCkgYnV0IHdlIGNhbiB0ZXN0IGl0IGluIGEKLSAgICAgICAgICAgICMgZmxleGlibGUgbWFubmVyLiAgRWFjaCBsaW5lIGluIHRoZSBiYWcgbycgaGFtIGlzIDQgYnl0ZXMKLSAgICAgICAgICAgICMgKCJoIiwgImEiLCAibSIsICJcbiIpLCBzbyA0MDk2IGxpbmVzIG9mIHRoYXQgc2hvdWxkIGdldCB1cwotICAgICAgICAgICAgIyBleGFjdGx5IG9uIHRoZSBidWZmZXIgYm91bmRhcnkgZm9yIGFueSBwb3dlci1vZi0yIGJ1ZmZlcnNpemUKLSAgICAgICAgICAgICMgYmV0d2VlbiA0IGFuZCAxNjM4NCAoaW5jbHVzaXZlKS4KKyAgICAgICAgIyBQcmVwYXJlIHRoZSB0ZXN0ZmlsZQorICAgICAgICBiYWcgPSBzZWxmLm9wZW4oVEVTVEZOLCAid2IiKQorICAgICAgICBiYWcud3JpdGUoZmlsbGVyICogbmNodW5rcykKKyAgICAgICAgYmFnLndyaXRlbGluZXModGVzdGxpbmVzKQorICAgICAgICBiYWcuY2xvc2UoKQorICAgICAgICAjIFRlc3QgZm9yIGFwcHJvcHJpYXRlIGVycm9ycyBtaXhpbmcgcmVhZCogYW5kIGl0ZXJhdGlvbgorICAgICAgICBmb3IgbWV0aG9kbmFtZSwgYXJncyBpbiBtZXRob2RzOgogICAgICAgICAgICAgZiA9IHNlbGYub3BlbihURVNURk4sICdyYicpCi0gICAgICAgICAgICBmb3IgaSBpbiByYW5nZShuY2h1bmtzKToKLSAgICAgICAgICAgICAgICBuZXh0KGYpCi0gICAgICAgICAgICB0ZXN0bGluZSA9IHRlc3RsaW5lcy5wb3AoMCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInJlYWRsaW5lKCkgYWZ0ZXIgbmV4dCgpIHdpdGggc3VwcG9zZWRseSBlbXB0eSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYXRpb24tYnVmZmVyIGZhaWxlZCBhbnl3YXkiKQotICAgICAgICAgICAgaWYgbGluZSAhPSB0ZXN0bGluZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInJlYWRsaW5lKCkgYWZ0ZXIgbmV4dCgpIHdpdGggZW1wdHkgYnVmZmVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZC4gR290ICVyLCBleHBlY3RlZCAlciIgJSAobGluZSwgdGVzdGxpbmUpKQotICAgICAgICAgICAgdGVzdGxpbmUgPSB0ZXN0bGluZXMucG9wKDApCi0gICAgICAgICAgICBidWYgPSBhcnJheSgiYiIsIGIiXHgwMCIgKiBsZW4odGVzdGxpbmUpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGYucmVhZGludG8oYnVmKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJyZWFkaW50bygpIGFmdGVyIG5leHQoKSB3aXRoIHN1cHBvc2VkbHkgZW1wdHkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmF0aW9uLWJ1ZmZlciBmYWlsZWQgYW55d2F5IikKLSAgICAgICAgICAgIGxpbmUgPSBidWYudG9zdHJpbmcoKQotICAgICAgICAgICAgaWYgbGluZSAhPSB0ZXN0bGluZToKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInJlYWRpbnRvKCkgYWZ0ZXIgbmV4dCgpIHdpdGggZW1wdHkgYnVmZmVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZC4gR290ICVyLCBleHBlY3RlZCAlciIgJSAobGluZSwgdGVzdGxpbmUpKQotCi0gICAgICAgICAgICB0ZXN0bGluZSA9IHRlc3RsaW5lcy5wb3AoMCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBsaW5lID0gZi5yZWFkKGxlbih0ZXN0bGluZSkpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInJlYWQoKSBhZnRlciBuZXh0KCkgd2l0aCBzdXBwb3NlZGx5IGVtcHR5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhdGlvbi1idWZmZXIgZmFpbGVkIGFueXdheSIpCi0gICAgICAgICAgICBpZiBsaW5lICE9IHRlc3RsaW5lOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgicmVhZCgpIGFmdGVyIG5leHQoKSB3aXRoIGVtcHR5IGJ1ZmZlciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQuIEdvdCAlciwgZXhwZWN0ZWQgJXIiICUgKGxpbmUsIHRlc3RsaW5lKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgicmVhZGxpbmVzKCkgYWZ0ZXIgbmV4dCgpIHdpdGggc3VwcG9zZWRseSBlbXB0eSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYXRpb24tYnVmZmVyIGZhaWxlZCBhbnl3YXkiKQotICAgICAgICAgICAgaWYgbGluZXMgIT0gdGVzdGxpbmVzOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgicmVhZGxpbmVzKCkgYWZ0ZXIgbmV4dCgpIHdpdGggZW1wdHkgYnVmZmVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZC4gR290ICVyLCBleHBlY3RlZCAlciIgJSAobGluZSwgdGVzdGxpbmUpKQotICAgICAgICAgICAgIyBSZWFkaW5nIGFmdGVyIGl0ZXJhdGlvbiBoaXQgRU9GIHNob3VsZG4ndCBodXJ0IGVpdGhlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGYpLCBmaWxsZXIpCisgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihmLCBtZXRob2RuYW1lKQorICAgICAgICAgICAgbWV0aCgqYXJncykgICMgVGhpcyBzaW1wbHkgc2hvdWxkbid0IGZhaWwKICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZiA9IHNlbGYub3BlbihURVNURk4sICdyYicpCisKKyAgICAgICAgIyBUZXN0IHRvIHNlZSBpZiBoYXJtbGVzcyAoYnkgYWNjaWRlbnQpIG1peGluZyBvZiByZWFkKiBhbmQKKyAgICAgICAgIyBpdGVyYXRpb24gc3RpbGwgd29ya3MuIFRoaXMgZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiB0aGUgaW50ZXJuYWwKKyAgICAgICAgIyBpdGVyYXRpb24gYnVmZmVyIChjdXJyZW50bHkgODE5MiwpIGJ1dCB3ZSBjYW4gdGVzdCBpdCBpbiBhCisgICAgICAgICMgZmxleGlibGUgbWFubmVyLiAgRWFjaCBsaW5lIGluIHRoZSBiYWcgbycgaGFtIGlzIDQgYnl0ZXMKKyAgICAgICAgIyAoImgiLCAiYSIsICJtIiwgIlxuIiksIHNvIDQwOTYgbGluZXMgb2YgdGhhdCBzaG91bGQgZ2V0IHVzCisgICAgICAgICMgZXhhY3RseSBvbiB0aGUgYnVmZmVyIGJvdW5kYXJ5IGZvciBhbnkgcG93ZXItb2YtMiBidWZmZXJzaXplCisgICAgICAgICMgYmV0d2VlbiA0IGFuZCAxNjM4NCAoaW5jbHVzaXZlKS4KKyAgICAgICAgZiA9IHNlbGYub3BlbihURVNURk4sICdyYicpCisgICAgICAgIGZvciBpIGluIHJhbmdlKG5jaHVua3MpOgorICAgICAgICAgICAgbmV4dChmKQorICAgICAgICB0ZXN0bGluZSA9IHRlc3RsaW5lcy5wb3AoMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbGluZSA9IGYucmVhZGxpbmUoKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgicmVhZGxpbmUoKSBhZnRlciBuZXh0KCkgd2l0aCBzdXBwb3NlZGx5IGVtcHR5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJpdGVyYXRpb24tYnVmZmVyIGZhaWxlZCBhbnl3YXkiKQorICAgICAgICBpZiBsaW5lICE9IHRlc3RsaW5lOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJyZWFkbGluZSgpIGFmdGVyIG5leHQoKSB3aXRoIGVtcHR5IGJ1ZmZlciAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZmFpbGVkLiBHb3QgJXIsIGV4cGVjdGVkICVyIiAlIChsaW5lLCB0ZXN0bGluZSkpCisgICAgICAgIHRlc3RsaW5lID0gdGVzdGxpbmVzLnBvcCgwKQorICAgICAgICBidWYgPSBhcnJheSgiYiIsIGIiXHgwMCIgKiBsZW4odGVzdGxpbmUpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmLnJlYWRpbnRvKGJ1ZikKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBzZWxmLmZhaWwoInJlYWRpbnRvKCkgYWZ0ZXIgbmV4dCgpIHdpdGggc3VwcG9zZWRseSBlbXB0eSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiaXRlcmF0aW9uLWJ1ZmZlciBmYWlsZWQgYW55d2F5IikKKyAgICAgICAgbGluZSA9IGJ1Zi50b3N0cmluZygpCisgICAgICAgIGlmIGxpbmUgIT0gdGVzdGxpbmU6CisgICAgICAgICAgICBzZWxmLmZhaWwoInJlYWRpbnRvKCkgYWZ0ZXIgbmV4dCgpIHdpdGggZW1wdHkgYnVmZmVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQuIEdvdCAlciwgZXhwZWN0ZWQgJXIiICUgKGxpbmUsIHRlc3RsaW5lKSkKKworICAgICAgICB0ZXN0bGluZSA9IHRlc3RsaW5lcy5wb3AoMCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbGluZSA9IGYucmVhZChsZW4odGVzdGxpbmUpKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgicmVhZCgpIGFmdGVyIG5leHQoKSB3aXRoIHN1cHBvc2VkbHkgZW1wdHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhdGlvbi1idWZmZXIgZmFpbGVkIGFueXdheSIpCisgICAgICAgIGlmIGxpbmUgIT0gdGVzdGxpbmU6CisgICAgICAgICAgICBzZWxmLmZhaWwoInJlYWQoKSBhZnRlciBuZXh0KCkgd2l0aCBlbXB0eSBidWZmZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZC4gR290ICVyLCBleHBlY3RlZCAlciIgJSAobGluZSwgdGVzdGxpbmUpKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBzZWxmLmZhaWwoInJlYWRsaW5lcygpIGFmdGVyIG5leHQoKSB3aXRoIHN1cHBvc2VkbHkgZW1wdHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhdGlvbi1idWZmZXIgZmFpbGVkIGFueXdheSIpCisgICAgICAgIGlmIGxpbmVzICE9IHRlc3RsaW5lczoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgicmVhZGxpbmVzKCkgYWZ0ZXIgbmV4dCgpIHdpdGggZW1wdHkgYnVmZmVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQuIEdvdCAlciwgZXhwZWN0ZWQgJXIiICUgKGxpbmUsIHRlc3RsaW5lKSkKKyAgICAgICAgIyBSZWFkaW5nIGFmdGVyIGl0ZXJhdGlvbiBoaXQgRU9GIHNob3VsZG4ndCBodXJ0IGVpdGhlcgorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZiA9IHNlbGYub3BlbihURVNURk4sICdyYicpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGYucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICBmLnJlYWRpbnRvKGJ1ZikKLSAgICAgICAgICAgICAgICAgICAgZi5yZWFkKCkKLSAgICAgICAgICAgICAgICAgICAgZi5yZWFkbGluZXMoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoInJlYWQqIGZhaWxlZCBhZnRlciBuZXh0KCkgY29uc3VtZWQgZmlsZSIpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIGYucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGYucmVhZGludG8oYnVmKQorICAgICAgICAgICAgICAgIGYucmVhZCgpCisgICAgICAgICAgICAgICAgZi5yZWFkbGluZXMoKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJyZWFkKiBmYWlsZWQgYWZ0ZXIgbmV4dCgpIGNvbnN1bWVkIGZpbGUiKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3MudW5saW5rKFRFU1RGTikKKyAgICAgICAgICAgIGYuY2xvc2UoKQogCiBjbGFzcyBDT3RoZXJGaWxlVGVzdHMoT3RoZXJGaWxlVGVzdHMpOgogICAgIG9wZW4gPSBpby5vcGVuCkBAIC0zMjUsMTQgKzMyNCw4IEBACiAKIAogZGVmIHRlc3RfbWFpbigpOgotICAgICMgSGlzdG9yaWNhbGx5LCB0aGVzZSB0ZXN0cyBoYXZlIGJlZW4gc2xvcHB5IGFib3V0IHJlbW92aW5nIFRFU1RGTi4KLSAgICAjIFNvIGdldCByaWQgb2YgaXQgbm8gbWF0dGVyIHdoYXQuCi0gICAgdHJ5OgotICAgICAgICBydW5fdW5pdHRlc3QoQ0F1dG9GaWxlVGVzdHMsIFB5QXV0b0ZpbGVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgIENPdGhlckZpbGVUZXN0cywgUHlPdGhlckZpbGVUZXN0cykKLSAgICBmaW5hbGx5OgotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhURVNURk4pOgotICAgICAgICAgICAgb3MudW5saW5rKFRFU1RGTikKKyAgICBydW5fdW5pdHRlc3QoQ0F1dG9GaWxlVGVzdHMsIFB5QXV0b0ZpbGVUZXN0cywKKyAgICAgICAgICAgICAgICAgQ090aGVyRmlsZVRlc3RzLCBQeU90aGVyRmlsZVRlc3RzKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGUyay5weSBiL0xpYi90ZXN0L3Rlc3RfZmlsZTJrLnB5CmluZGV4IGUzOWVmNzAuLmM3M2U4ZDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmlsZTJrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZTJrLnB5CkBAIC02NTIsNiArNjUyLDMzIEBACiAgICAgICAgICAgICBzZWxmLmYud3JpdGVsaW5lcygnJykKICAgICAgICAgc2VsZi5fdGVzdF9jbG9zZV9vcGVuX2lvKGlvX2Z1bmMpCiAKKyAgICBkZWYgdGVzdF9pdGVyYXRpb25fdG9ydHVyZShzZWxmKToKKyAgICAgICAgIyBicG8tMzE1MzAKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgZm9yIGkgaW4geHJhbmdlKDIqKjIwKToKKyAgICAgICAgICAgICAgICBmcC53cml0ZShiIjAiKjUwICsgYiJcbiIpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgZGVmIGl0KCk6CisgICAgICAgICAgICAgICAgZm9yIGwgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgc2VsZi5fcnVuX3dvcmtlcnMoaXQsIDEwKQorCisgICAgZGVmIHRlc3RfaXRlcmF0aW9uX3NlZWsoc2VsZik6CisgICAgICAgICMgYnBvLTMxNTMwOiBDcmFzaCB3aGVuIGNvbmN1cnJlbnRseSBzZWVrIGFuZCBpdGVyYXRlIG92ZXIgYSBmaWxlLgorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgIndiIikgYXMgZnA6CisgICAgICAgICAgICBmb3IgaSBpbiB4cmFuZ2UoMTAwMDApOgorICAgICAgICAgICAgICAgIGZwLndyaXRlKGIiMCIqNTAgKyBiIlxuIikKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBpdCA9IGl0ZXIoWzFdICsgWzBdKjEwKSAgIyBvbmUgdGhyZWFkIHJlYWRzLCBvdGhlcnMgc2VlaworICAgICAgICAgICAgZGVmIGl0ZXJhdGUoKToKKyAgICAgICAgICAgICAgICBpZiBuZXh0KGl0KToKKyAgICAgICAgICAgICAgICAgICAgZm9yIGwgaW4gZjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiB4cmFuZ2UoMTAwKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGYuc2VlayhpKjEwMCwgMCkKKyAgICAgICAgICAgIHNlbGYuX3J1bl93b3JrZXJzKGl0ZXJhdGUsIDEwKQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywgJ3Rlc3QgcmVxdWlyZXMgYSBwb3NpeCBzeXN0ZW0uJykKIGNsYXNzIFRlc3RGaWxlU2lnbmFsRUlOVFIodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5IGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CmluZGV4IDM3ZWM1MGQuLjE0MzhkYTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKQEAgLTIsOSArMiwxMCBAQAogCiBmcm9tIHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgb3MKIAotZnJvbSBmbm1hdGNoIGltcG9ydCBmbm1hdGNoLCBmbm1hdGNoY2FzZSwgX01BWENBQ0hFLCBfY2FjaGUKLWZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaCwgZm5tYXRjaGNhc2UsIF9NQVhDQUNIRSwgX2NhY2hlLCBfcHVyZ2UKK2Zyb20gZm5tYXRjaCBpbXBvcnQgKGZubWF0Y2gsIGZubWF0Y2hjYXNlLCB0cmFuc2xhdGUsIGZpbHRlciwKKyAgICAgICAgICAgICAgICAgICAgIF9NQVhDQUNIRSwgX2NhY2hlLCBfcHVyZ2UpCiAKIAogY2xhc3MgRm5tYXRjaFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTEyLDEzICsxMywxMyBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgX3B1cmdlKCkKIAotICAgIGRlZiBjaGVja19tYXRjaChzZWxmLCBmaWxlbmFtZSwgcGF0dGVybiwgc2hvdWxkX21hdGNoPTEsIGZuPWZubWF0Y2gpOgorICAgIGRlZiBjaGVja19tYXRjaChzZWxmLCBmaWxlbmFtZSwgcGF0dGVybiwgc2hvdWxkX21hdGNoPVRydWUsIGZuPWZubWF0Y2gpOgogICAgICAgICBpZiBzaG91bGRfbWF0Y2g6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZm4oZmlsZW5hbWUsIHBhdHRlcm4pLAogICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCAlciB0byBtYXRjaCBwYXR0ZXJuICVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICUgKGZpbGVuYW1lLCBwYXR0ZXJuKSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShub3QgZm4oZmlsZW5hbWUsIHBhdHRlcm4pLAorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmbihmaWxlbmFtZSwgcGF0dGVybiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkICVyIG5vdCB0byBtYXRjaCBwYXR0ZXJuICVyIgogICAgICAgICAgICAgICAgICAgICAgICAgICUgKGZpbGVuYW1lLCBwYXR0ZXJuKSkKIApAQCAtMzIsMTUgKzMzLDE1IEBACiAgICAgICAgIGNoZWNrKCdhYmMnLCAnKicpCiAgICAgICAgIGNoZWNrKCdhYmMnLCAnYWJbY2RdJykKICAgICAgICAgY2hlY2soJ2FiYycsICdhYlshZGVdJykKLSAgICAgICAgY2hlY2soJ2FiYycsICdhYltkZV0nLCAwKQotICAgICAgICBjaGVjaygnYScsICc/PycsIDApCi0gICAgICAgIGNoZWNrKCdhJywgJ2InLCAwKQorICAgICAgICBjaGVjaygnYWJjJywgJ2FiW2RlXScsIEZhbHNlKQorICAgICAgICBjaGVjaygnYScsICc/PycsIEZhbHNlKQorICAgICAgICBjaGVjaygnYScsICdiJywgRmFsc2UpCiAKICAgICAgICAgIyB0aGVzZSB0ZXN0IHRoYXQgJ1wnIGlzIGhhbmRsZWQgY29ycmVjdGx5IGluIGNoYXJhY3RlciBzZXRzOwogICAgICAgICAjIHNlZSBTRiBidWcgIzQwOTY1MQogICAgICAgICBjaGVjaygnXFwnLCByJ1tcXScpCiAgICAgICAgIGNoZWNrKCdhJywgcidbIVxdJykKLSAgICAgICAgY2hlY2soJ1xcJywgcidbIVxdJywgMCkKKyAgICAgICAgY2hlY2soJ1xcJywgcidbIVxdJywgRmFsc2UpCiAKICAgICAgICAgIyB0ZXN0IHRoYXQgZmlsZW5hbWVzIHdpdGggbmV3bGluZXMgaW4gdGhlbSBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCiAgICAgICAgICMgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTY2NjUKQEAgLTQ5LDEwICs1MCwyOSBAQAogICAgICAgICBjaGVjaygnXG5mb28nLCAnZm9vKicsIEZhbHNlKQogICAgICAgICBjaGVjaygnXG4nLCAnKicpCiAKKyAgICBkZWYgdGVzdF9taXhfdW5pY29kZV9zdHIoc2VsZik6CisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19tYXRjaAorICAgICAgICBjaGVjaygndGVzdCcsIHUnKicpCisgICAgICAgIGNoZWNrKHUndGVzdCcsICcqJykKKyAgICAgICAgY2hlY2soJ3Rlc3QnLCB1JyonLCBmbj1mbm1hdGNoY2FzZSkKKyAgICAgICAgY2hlY2sodSd0ZXN0JywgJyonLCBmbj1mbm1hdGNoY2FzZSkKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBVbmljb2RlV2FybmluZyksIHF1aWV0PVRydWUpOgorICAgICAgICAgICAgY2hlY2soJ3Rlc3RceGZmJywgdScqXHhmZicpCisgICAgICAgICAgICBjaGVjayh1J3Rlc3RceGZmJywgJypceGZmJykKKyAgICAgICAgICAgIGNoZWNrKCd0ZXN0XHhmZicsIHUnKlx4ZmYnLCBmbj1mbm1hdGNoY2FzZSkKKyAgICAgICAgICAgIGNoZWNrKHUndGVzdFx4ZmYnLCAnKlx4ZmYnLCBmbj1mbm1hdGNoY2FzZSkKKwogICAgIGRlZiB0ZXN0X2ZubWF0Y2hjYXNlKHNlbGYpOgogICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfbWF0Y2gKLSAgICAgICAgY2hlY2soJ0FiQycsICdhYmMnLCAwLCBmbm1hdGNoY2FzZSkKLSAgICAgICAgY2hlY2soJ2FiYycsICdBYkMnLCAwLCBmbm1hdGNoY2FzZSkKKyAgICAgICAgY2hlY2soJ2FiYycsICdhYmMnLCBUcnVlLCBmbm1hdGNoY2FzZSkKKyAgICAgICAgY2hlY2soJ0FiQycsICdhYmMnLCBGYWxzZSwgZm5tYXRjaGNhc2UpCisgICAgICAgIGNoZWNrKCdhYmMnLCAnQWJDJywgRmFsc2UsIGZubWF0Y2hjYXNlKQorICAgICAgICBjaGVjaygnQWJDJywgJ0FiQycsIFRydWUsIGZubWF0Y2hjYXNlKQorCisgICAgICAgIGNoZWNrKCd1c3IvYmluJywgJ3Vzci9iaW4nLCBUcnVlLCBmbm1hdGNoY2FzZSkKKyAgICAgICAgY2hlY2soJ3VzclxcYmluJywgJ3Vzci9iaW4nLCBGYWxzZSwgZm5tYXRjaGNhc2UpCisgICAgICAgIGNoZWNrKCd1c3IvYmluJywgJ3VzclxcYmluJywgRmFsc2UsIGZubWF0Y2hjYXNlKQorICAgICAgICBjaGVjaygndXNyXFxiaW4nLCAndXNyXFxiaW4nLCBUcnVlLCBmbm1hdGNoY2FzZSkKIAogICAgIGRlZiB0ZXN0X2NhY2hlX2NsZWFyaW5nKHNlbGYpOgogICAgICAgICAjIGNoZWNrIHRoYXQgY2FjaGVzIGRvIG5vdCBncm93IHRvbyBsYXJnZQpAQCAtNjQsOCArODQsODEgQEAKIAogICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbChsZW4oX2NhY2hlKSwgX01BWENBQ0hFKQogCisgICAgQHRlc3Rfc3VwcG9ydC5yZXF1aXJlc191bmljb2RlCisgICAgZGVmIHRlc3RfdW5pY29kZShzZWxmKToKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBVbmljb2RlV2FybmluZyksIHF1aWV0PVRydWUpOgorICAgICAgICAgICAgc2VsZi5jaGVja19tYXRjaCh1J3Rlc3QnLCB1J3RlKicpCisgICAgICAgICAgICBzZWxmLmNoZWNrX21hdGNoKHUndGVzdFx4ZmYnLCB1J3RlKlx4ZmYnKQorICAgICAgICAgICAgc2VsZi5jaGVja19tYXRjaCh1J3Rlc3QnK3VuaWNocigweDIwYWMpLCB1J3RlKicrdW5pY2hyKDB4MjBhYykpCisgICAgICAgICAgICBzZWxmLmNoZWNrX21hdGNoKHUnZm9vXG5iYXInLCB1J2ZvbyonKQorCisgICAgZGVmIHRlc3RfY2FzZShzZWxmKToKKyAgICAgICAgaWdub3JlY2FzZSA9IG9zLnBhdGgubm9ybWNhc2UoJ0FCQycpID09IG9zLnBhdGgubm9ybWNhc2UoJ2FiYycpCisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19tYXRjaAorICAgICAgICBjaGVjaygnYWJjJywgJ2FiYycpCisgICAgICAgIGNoZWNrKCdBYkMnLCAnYWJjJywgaWdub3JlY2FzZSkKKyAgICAgICAgY2hlY2soJ2FiYycsICdBYkMnLCBpZ25vcmVjYXNlKQorICAgICAgICBjaGVjaygnQWJDJywgJ0FiQycpCisKKyAgICBkZWYgdGVzdF9zZXAoc2VsZik6CisgICAgICAgIG5vcm1zZXAgPSBvcy5wYXRoLm5vcm1jYXNlKCdcXCcpID09IG9zLnBhdGgubm9ybWNhc2UoJy8nKQorICAgICAgICBjaGVjayA9IHNlbGYuY2hlY2tfbWF0Y2gKKyAgICAgICAgY2hlY2soJ3Vzci9iaW4nLCAndXNyL2JpbicpCisgICAgICAgIGNoZWNrKCd1c3JcXGJpbicsICd1c3IvYmluJywgbm9ybXNlcCkKKyAgICAgICAgY2hlY2soJ3Vzci9iaW4nLCAndXNyXFxiaW4nLCBub3Jtc2VwKQorICAgICAgICBjaGVjaygndXNyXFxiaW4nLCAndXNyXFxiaW4nKQorCisKK2NsYXNzIFRyYW5zbGF0ZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJyonKSwgcicuKlxaKD9tcyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnPycpLCByJy5cWig/bXMpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ2E/YionKSwgcidhLmIuKlxaKD9tcyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW2FiY10nKSwgcidbYWJjXVxaKD9tcyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW11dJyksIHInW11dXFooP21zKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbIXhdJyksIHInW154XVxaKD9tcyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW154XScpLCByJ1tcXnhdXFooP21zKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbeCcpLCByJ1xbeFxaKD9tcyknKQorCisKK2NsYXNzIEZpbHRlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2ZpbHRlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXIoWydQeXRob24nLCAnUnVieScsICdQZXJsJywgJ1RjbCddLCAnUConKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ1B5dGhvbicsICdQZXJsJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyKFt1J1B5dGhvbicsIHUnUnVieScsIHUnUGVybCcsIHUnVGNsJ10sIHUnUConKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbdSdQeXRob24nLCB1J1BlcmwnXSkKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBVbmljb2RlV2FybmluZyksIHF1aWV0PVRydWUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXIoW3UndGVzdFx4ZmYnXSwgdScqXHhmZicpLCBbdSd0ZXN0XHhmZiddKQorCisgICAgQHRlc3Rfc3VwcG9ydC5yZXF1aXJlc191bmljb2RlCisgICAgZGVmIHRlc3RfbWl4X2J5dGVzX3N0cihzZWxmKToKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIiLCBVbmljb2RlV2FybmluZyksIHF1aWV0PVRydWUpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXIoWyd0ZXN0J10sIHUnKicpLCBbJ3Rlc3QnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyKFt1J3Rlc3QnXSwgJyonKSwgW3UndGVzdCddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXIoWyd0ZXN0XHhmZiddLCB1JyonKSwgWyd0ZXN0XHhmZiddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXIoW3UndGVzdFx4ZmYnXSwgJyonKSwgW3UndGVzdFx4ZmYnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyKFsndGVzdFx4ZmYnXSwgdScqXHhmZicpLCBbJ3Rlc3RceGZmJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbHRlcihbdSd0ZXN0XHhmZiddLCAnKlx4ZmYnKSwgW3UndGVzdFx4ZmYnXSkKKworICAgIGRlZiB0ZXN0X2Nhc2Uoc2VsZik6CisgICAgICAgIGlnbm9yZWNhc2UgPSBvcy5wYXRoLm5vcm1jYXNlKCdQJykgPT0gb3MucGF0aC5ub3JtY2FzZSgncCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyKFsnVGVzdC5weScsICdUZXN0LnJiJywgJ1Rlc3QuUEwnXSwgJyoucConKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ1Rlc3QucHknLCAnVGVzdC5QTCddIGlmIGlnbm9yZWNhc2UgZWxzZSBbJ1Rlc3QucHknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXIoWydUZXN0LnB5JywgJ1Rlc3QucmInLCAnVGVzdC5QTCddLCAnKi5QKicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnVGVzdC5weScsICdUZXN0LlBMJ10gaWYgaWdub3JlY2FzZSBlbHNlIFsnVGVzdC5QTCddKQorCisgICAgZGVmIHRlc3Rfc2VwKHNlbGYpOgorICAgICAgICBub3Jtc2VwID0gb3MucGF0aC5ub3JtY2FzZSgnXFwnKSA9PSBvcy5wYXRoLm5vcm1jYXNlKCcvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWx0ZXIoWyd1c3IvYmluJywgJ3VzcicsICd1c3JcXGxpYiddLCAndXNyLyonKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ3Vzci9iaW4nLCAndXNyXFxsaWInXSBpZiBub3Jtc2VwIGVsc2UgWyd1c3IvYmluJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmlsdGVyKFsndXNyL2JpbicsICd1c3InLCAndXNyXFxsaWInXSwgJ3VzclxcKicpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsndXNyL2JpbicsICd1c3JcXGxpYiddIGlmIG5vcm1zZXAgZWxzZSBbJ3VzclxcbGliJ10pCisKKwogZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoRm5tYXRjaFRlc3RDYXNlKQorICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoRm5tYXRjaFRlc3RDYXNlLCBUcmFuc2xhdGVUZXN0Q2FzZSwgRmlsdGVyVGVzdENhc2UpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnBmb3JtYXQucHkgYi9MaWIvdGVzdC90ZXN0X2ZwZm9ybWF0LnB5CmluZGV4IGU2ZGUzYjAuLjQyODYyM2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnBmb3JtYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mcGZvcm1hdC5weQpAQCAtNjcsNiArNjcsMTYgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gZXhjZXB0aW9uIG9uIG5vbi1udW1lcmljIHNjaSIpCiAKKyAgICBkZWYgdGVzdF9SRURPUyhzZWxmKToKKyAgICAgICAgIyBUaGlzIGF0dGFjayBzdHJpbmcgd2lsbCBoYW5nIG9uIHRoZSBvbGQgZGVjb2RlciBwYXR0ZXJuLgorICAgICAgICBhdHRhY2sgPSAnKzAnICsgKCcwJyAqIDEwMDAwMDApICsgJysrJworICAgICAgICBkaWdzID0gNSAjIGlycmVsZXZhbnQKKworICAgICAgICAjIGZpeCByZXR1cm5zIGlucHV0IGlmIGl0IGRvZXMgbm90IGRlY29kZQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZwZm9ybWF0LmZpeChhdHRhY2ssIGRpZ3MpLCBhdHRhY2spCisgICAgICAgICMgc2NpIHJhaXNlcyBOb3RBTnVtYmVyCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTm90QU51bWJlcik6CisgICAgICAgICAgICBmcGZvcm1hdC5zY2koYXR0YWNrLCBkaWdzKQogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgcnVuX3VuaXR0ZXN0KEZwZm9ybWF0VGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKaW5kZXggY2MxYzE5Yi4uOGEzZWIwNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdHBsaWIucHkKQEAgLTIxOCwxMiArMjE4LDE4IEBACiAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKICAgICAgICAgYXN5bmNvcmUuZGlzcGF0Y2hlci5fX2luaXRfXyhzZWxmKQogICAgICAgICBzZWxmLmNyZWF0ZV9zb2NrZXQoYWYsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgc2VsZi5iaW5kKGFkZHJlc3MpCi0gICAgICAgIHNlbGYubGlzdGVuKDUpCi0gICAgICAgIHNlbGYuYWN0aXZlID0gRmFsc2UKLSAgICAgICAgc2VsZi5hY3RpdmVfbG9jayA9IHRocmVhZGluZy5Mb2NrKCkKLSAgICAgICAgc2VsZi5ob3N0LCBzZWxmLnBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzoyXQotICAgICAgICBzZWxmLmhhbmRsZXJfaW5zdGFuY2UgPSBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYmluZChhZGRyZXNzKQorICAgICAgICAgICAgc2VsZi5saXN0ZW4oNSkKKyAgICAgICAgICAgIHNlbGYuYWN0aXZlID0gRmFsc2UKKyAgICAgICAgICAgIHNlbGYuYWN0aXZlX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgICAgICBzZWxmLmhvc3QsIHNlbGYucG9ydCA9IHNlbGYuc29ja2V0LmdldHNvY2tuYW1lKClbOjJdCisgICAgICAgICAgICBzZWxmLmhhbmRsZXJfaW5zdGFuY2UgPSBOb25lCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgdW5yZWdpc3RlciB0aGUgc2VydmVyIG9uIGJpbmQoKSBlcnJvciwKKyAgICAgICAgICAgICMgbmVlZGVkIGJ5IFRlc3RJUHY2RW52aXJvbm1lbnQuc2V0VXBDbGFzcygpCisgICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKKyAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgc3RhcnQoc2VsZik6CiAgICAgICAgIGFzc2VydCBub3Qgc2VsZi5hY3RpdmUKQEAgLTQzMyw2ICs0MzksOSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LnNhbml0aXplKCdQQVNTIDEyMzQ1JyksIHJlcHIoJ1BBU1MgKioqKionKSkKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuY2xpZW50LnNlbmRjbWQsICdlY2hvIDQwXHJcbjAnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWxmLmNsaWVudC5zZW5kY21kLCAnZWNobyA0MFxuMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYuY2xpZW50LnNlbmRjbWQsICdlY2hvIDQwXHIwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZnRwbGliLmVycm9yX3RlbXAsIHNlbGYuY2xpZW50LnNlbmRjbWQsICdlY2hvIDQwMCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGZ0cGxpYi5lcnJvcl90ZW1wLCBzZWxmLmNsaWVudC5zZW5kY21kLCAnZWNobyA0OTknKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhmdHBsaWIuZXJyb3JfcGVybSwgc2VsZi5jbGllbnQuc2VuZGNtZCwgJ2VjaG8gNTAwJykKQEAgLTY2Niw2ICs2NzUsNyBAQAogICAgICAgICAjIGNsZWFyIHRleHQKICAgICAgICAgc29jayA9IHNlbGYuY2xpZW50LnRyYW5zZmVyY21kKCdsaXN0JykKICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHNvY2ssIHNzbC5TU0xTb2NrZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5yZWN2KDEwMjQpLCBMSVNUX0RBVEEuZW5jb2RlKCdhc2NpaScpKQogICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC52b2lkcmVzcCgpLCAiMjI2IHRyYW5zZmVyIGNvbXBsZXRlIikKIApAQCAtNjczLDYgKzY4Myw5IEBACiAgICAgICAgIHNlbGYuY2xpZW50LnByb3RfcCgpCiAgICAgICAgIHNvY2sgPSBzZWxmLmNsaWVudC50cmFuc2ZlcmNtZCgnbGlzdCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzb2NrLCBzc2wuU1NMU29ja2V0KQorICAgICAgICAjIGNvbnN1bWUgZnJvbSBTU0wgc29ja2V0IHRvIGZpbmFsaXplIGhhbmRzaGFrZSBhbmQgYXZvaWQKKyAgICAgICAgIyAiU1NMRXJyb3IgW1NTTF0gc2h1dGRvd24gd2hpbGUgaW4gaW5pdCIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb2NrLnJlY3YoMTAyNCksIExJU1RfREFUQS5lbmNvZGUoJ2FzY2lpJykpCiAgICAgICAgIHNvY2suY2xvc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2xpZW50LnZvaWRyZXNwKCksICIyMjYgdHJhbnNmZXIgY29tcGxldGUiKQogCkBAIC02ODAsNiArNjkzLDcgQEAKICAgICAgICAgc2VsZi5jbGllbnQucHJvdF9jKCkKICAgICAgICAgc29jayA9IHNlbGYuY2xpZW50LnRyYW5zZmVyY21kKCdsaXN0JykKICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHNvY2ssIHNzbC5TU0xTb2NrZXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29jay5yZWN2KDEwMjQpLCBMSVNUX0RBVEEuZW5jb2RlKCdhc2NpaScpKQogICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNsaWVudC52b2lkcmVzcCgpLCAiMjI2IHRyYW5zZmVyIGNvbXBsZXRlIikKIApAQCAtNzAxLDExICs3MTUsMTEgQEAKICAgICAgICAgICAgIHNlbGYuY2xpZW50LmF1dGgoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5jbGllbnQuYXV0aCkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuY2xpZW50LnNzbF92ZXJzaW9uID0gc3NsLlBST1RPQ09MX1RMU3YxCisgICAgICAgICAgICBzZWxmLmNsaWVudC5zc2xfdmVyc2lvbiA9IHNzbC5QUk9UT0NPTF9UTFMKIAogICAgIGRlZiB0ZXN0X2NvbnRleHQoc2VsZik6CiAgICAgICAgIHNlbGYuY2xpZW50LnF1aXQoKQotICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ0cGxpYi5GVFBfVExTLCBrZXlmaWxlPUNFUlRGSUxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0PWN0eCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnRwbGliLkZUUF9UTFMsIGNlcnRmaWxlPUNFUlRGSUxFLApAQCAtNzMwLDcgKzc0NCw3IEBACiAKICAgICBkZWYgdGVzdF9jaGVja19ob3N0bmFtZShzZWxmKToKICAgICAgICAgc2VsZi5jbGllbnQucXVpdCgpCi0gICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMUykKICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQogICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKENBRklMRSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnVuY3Rvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKaW5kZXggNjJkNjAyOS4uMjg0NzU3MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkKQEAgLTYwMCw2ICs2MDAsNjcgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgVGVzdFRPKDgpIDw9ICgpCiAKKyAgICBkZWYgdGVzdF9idWdfMjU3MzIoc2VsZik6CisgICAgICAgIEBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcKKyAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2YWx1ZSk6CisgICAgICAgICAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisgICAgICAgICAgICBkZWYgX19ndF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA+IG90aGVyLnZhbHVlCisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZSA9PSBvdGhlci52YWx1ZQorICAgICAgICAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBoYXNoKHNlbGYudmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShBKDEpICE9IEEoMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoQSgxKSAhPSBBKDEpKQorCisgICAgICAgIEBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcKKyAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID4gb3RoZXIudmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID09IG90aGVyLnZhbHVlCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi52YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEEoMSkgIT0gQSgyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShBKDEpICE9IEEoMSkpCisKKyAgICAgICAgQGZ1bmN0b29scy50b3RhbF9vcmRlcmluZworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID4gb3RoZXIudmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID09IG90aGVyLnZhbHVlCisgICAgICAgICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Ioc2VsZiwgb3RoZXIpCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi52YWx1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgQSgxKSAhPSBBKDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIEEoMSkgIT0gQSgxKQorCisgICAgICAgIEBmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcKKyAgICAgICAgY2xhc3MgQShvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2d0X18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID4gb3RoZXIudmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnZhbHVlID09IG90aGVyLnZhbHVlCisgICAgICAgICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Ioc2VsZiwgb3RoZXIpCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi52YWx1ZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgQSgxKSAhPSBBKDIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIEEoMSkgIT0gQSgxKQorCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6CiAgICAgdGVzdF9jbGFzc2VzID0gKAogICAgICAgICBUZXN0UGFydGlhbCwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkgYi9MaWIvdGVzdC90ZXN0X2djLnB5CmluZGV4IGVkMDFjOTguLjdlNDdiMmQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nYy5weQpAQCAtMSw1ICsxLDYgQEAKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0LnRlc3Rfc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgcnVuX3VuaXR0ZXN0LCBzdGFydF90aHJlYWRzCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKHZlcmJvc2UsIHJ1bl91bml0dGVzdCwgc3RhcnRfdGhyZWFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZXNfdHlwZV9jb2xsZWN0aW5nKQogaW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCBnYwpAQCAtOTAsNiArOTEsNyBAQAogICAgICAgICBkZWwgYQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGdjLmNvbGxlY3QoKSwgMCkKIAorICAgIEByZXF1aXJlc190eXBlX2NvbGxlY3RpbmcKICAgICBkZWYgdGVzdF9uZXdpbnN0YW5jZShzZWxmKToKICAgICAgICAgY2xhc3MgQShvYmplY3QpOgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZGIucHkgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQppbmRleCAzOGU1NzBmLi5jNDVmZDQ1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQpAQCAtMywxMyArMywxNCBAQAogIyBUaGUgY29kZSBmb3IgdGVzdGluZyBnZGIgd2FzIGFkYXB0ZWQgZnJvbSBzaW1pbGFyIHdvcmsgaW4gVW5sYWRlbiBTd2FsbG93J3MKICMgTGliL3Rlc3QvdGVzdF9qaXRfZ2RiLnB5CiAKK2ltcG9ydCBsb2NhbGUKIGltcG9ydCBvcwogaW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHN5c2NvbmZpZworaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXNjb25maWcKIAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKIGZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgZmluZGZpbGUKQEAgLTIwMywyNyArMjA0LDI2IEBACiAgICAgICAgICMgSWdub3JlIHNvbWUgYmVuaWduIG1lc3NhZ2VzIG9uIHN0ZGVyci4KICAgICAgICAgaWdub3JlX3BhdHRlcm5zID0gKAogICAgICAgICAgICAgJ0Z1bmN0aW9uICIlcyIgbm90IGRlZmluZWQuJyAlIGJyZWFrcG9pbnQsCi0gICAgICAgICAgICAid2FybmluZzogbm8gbG9hZGFibGUgc2VjdGlvbnMgZm91bmQgaW4gYWRkZWQgc3ltYm9sLWZpbGUiCi0gICAgICAgICAgICAiIHN5c3RlbS1zdXBwbGllZCBEU08iLAotICAgICAgICAgICAgIndhcm5pbmc6IFVuYWJsZSB0byBmaW5kIGxpYnRocmVhZF9kYiBtYXRjaGluZyIKLSAgICAgICAgICAgICIgaW5mZXJpb3IncyB0aHJlYWQgbGlicmFyeSwgdGhyZWFkIGRlYnVnZ2luZyB3aWxsIgotICAgICAgICAgICAgIiBub3QgYmUgYXZhaWxhYmxlLiIsCi0gICAgICAgICAgICAid2FybmluZzogQ2Fubm90IGluaXRpYWxpemUgdGhyZWFkIGRlYnVnZ2luZyIKLSAgICAgICAgICAgICIgbGlicmFyeTogRGVidWdnZXIgc2VydmljZSBmYWlsZWQiLAotICAgICAgICAgICAgJ3dhcm5pbmc6IENvdWxkIG5vdCBsb2FkIHNoYXJlZCBsaWJyYXJ5IHN5bWJvbHMgZm9yICcKLSAgICAgICAgICAgICdsaW51eC12ZHNvLnNvJywKLSAgICAgICAgICAgICd3YXJuaW5nOiBDb3VsZCBub3QgbG9hZCBzaGFyZWQgbGlicmFyeSBzeW1ib2xzIGZvciAnCi0gICAgICAgICAgICAnbGludXgtZ2F0ZS5zbycsCi0gICAgICAgICAgICAnd2FybmluZzogQ291bGQgbm90IGxvYWQgc2hhcmVkIGxpYnJhcnkgc3ltYm9scyBmb3IgJwotICAgICAgICAgICAgJ2xpbnV4LXZkc282NC5zbycsCiAgICAgICAgICAgICAnRG8geW91IG5lZWQgInNldCBzb2xpYi1zZWFyY2gtcGF0aCIgb3IgJwogICAgICAgICAgICAgJyJzZXQgc3lzcm9vdCI/JywKLSAgICAgICAgICAgICd3YXJuaW5nOiBTb3VyY2UgZmlsZSBpcyBtb3JlIHJlY2VudCB0aGFuIGV4ZWN1dGFibGUuJywKLSAgICAgICAgICAgICMgSXNzdWUgIzE5NzUzOiBtaXNzaW5nIHN5bWJvbHMgb24gU3lzdGVtIFoKLSAgICAgICAgICAgICdNaXNzaW5nIHNlcGFyYXRlIGRlYnVnaW5mbyBmb3IgJywKLSAgICAgICAgICAgICdUcnk6IHp5cHBlciBpbnN0YWxsIC1DICcsCisgICAgICAgICAgICAjIEJGRDogL3Vzci9saWIvZGVidWcvKC4uLik6IHVuYWJsZSB0byBpbml0aWFsaXplIGRlY29tcHJlc3MKKyAgICAgICAgICAgICMgc3RhdHVzIGZvciBzZWN0aW9uIC5kZWJ1Z19hcmFuZ2VzCisgICAgICAgICAgICAnQkZEOiAnLAorICAgICAgICAgICAgIyBpZ25vcmUgYWxsIHdhcm5pbmdzCisgICAgICAgICAgICAnd2FybmluZzogJywKICAgICAgICAgICAgICkKICAgICAgICAgZm9yIGxpbmUgaW4gZXJybGluZXM6CisgICAgICAgICAgICBpZiBub3QgbGluZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBicG8zNDAwNzogU29tZXRpbWVzIHNvbWUgdmVyc2lvbnMgb2YgdGhlIHNoYXJlZCBsaWJyYXJpZXMgdGhhdAorICAgICAgICAgICAgIyBhcmUgcGFydCBvZiB0aGUgdHJhY2ViYWNrIGFyZSBjb21waWxlZCBpbiBvcHRpbWlzZWQgbW9kZSBhbmQgdGhlCisgICAgICAgICAgICAjIFByb2dyYW0gQ291bnRlciAoUEMpIGlzIG5vdCBwcmVzZW50LCBub3QgYWxsb3dpbmcgZ2RiIHRvIHdhbGsgdGhlCisgICAgICAgICAgICAjIGZyYW1lcyBiYWNrLiBXaGVuIHRoaXMgaGFwcGVucywgdGhlIFB5dGhvbiBiaW5kaW5ncyBvZiBnZGIgcmFpc2UKKyAgICAgICAgICAgICMgYW4gZXhjZXB0aW9uLCBtYWtpbmcgdGhlIHRlc3QgaW1wb3NzaWJsZSB0byBzdWNjZWVkLgorICAgICAgICAgICAgaWYgIlBDIG5vdCBzYXZlZCIgaW4gbGluZToKKyAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgiZ2RiIGNhbm5vdCB3YWxrIHRoZSBmcmFtZSBvYmplY3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBiZWNhdXNlIHRoZSBQcm9ncmFtIENvdW50ZXIgaXMiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBub3QgcHJlc2VudCIpCiAgICAgICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKGlnbm9yZV9wYXR0ZXJucyk6CiAgICAgICAgICAgICAgICAgdW5leHBlY3RlZF9lcnJsaW5lcy5hcHBlbmQobGluZSkKIApAQCAtODczLDcgKzg3MywyNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0ndGltZV9nbXRpbWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21kc19hZnRlcl9icmVha3BvaW50PVsncHktYnQtZnVsbCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgICAgICBzZWxmLmFzc2VydEluKCcjMCA8YnVpbHQtaW4gZnVuY3Rpb24gZ210aW1lJywgZ2RiX291dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignIzEgPGJ1aWx0LWluIGZ1bmN0aW9uIGdtdGltZScsIGdkYl9vdXRwdXQpCisKKyAgICBAdW5pdHRlc3Quc2tpcElmKHB5dGhvbl9pc19vcHRpbWl6ZWQoKSwKKyAgICAgICAgICAgICAgICAgICAgICJQeXRob24gd2FzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucyIpCisgICAgZGVmIHRlc3Rfd3JhcHBlcl9jYWxsKHNlbGYpOgorICAgICAgICBjbWQgPSB0ZXh0d3JhcC5kZWRlbnQoJycnCisgICAgICAgICAgICBjbGFzcyBNeUxpc3QobGlzdCk6CisgICAgICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzdXBlcihNeUxpc3QsIHNlbGYpLl9faW5pdF9fKCkgICAjIHdyYXBwZXJfY2FsbCgpCisKKyAgICAgICAgICAgIHByaW50KCJmaXJzdCBicmVhayBwb2ludCIpCisgICAgICAgICAgICBsID0gTXlMaXN0KCkKKyAgICAgICAgJycnKQorICAgICAgICAjIFZlcmlmeSB3aXRoICJweS1idCI6CisgICAgICAgIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9zdGFja190cmFjZShjbWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydicmVhayB3cmFwcGVyX2NhbGwnLCAnY29udGludWUnLCAncHktYnQnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKGdkYl9vdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIjxtZXRob2Qtd3JhcHBlciB1PydfX2luaXRfXycgb2YgTXlMaXN0IG9iamVjdCBhdCAiKQogCiAKIGNsYXNzIFB5UHJpbnRUZXN0cyhEZWJ1Z2dlclRlc3RzKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2RibS5weSBiL0xpYi90ZXN0L3Rlc3RfZ2RibS5weQppbmRleCBlOTE2OWEyLi5jNGE0OThmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dkYm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZGJtLnB5CkBAIC02Miw5ICs2MiwxMyBAQAogICAgICAgICBzZWxmLmcgPSBnZGJtLm9wZW4oZmlsZW5hbWUsICdjJykKICAgICAgICAgc2l6ZTAgPSBvcy5wYXRoLmdldHNpemUoZmlsZW5hbWUpCiAKLSAgICAgICAgc2VsZi5nWyd4J10gPSAneCcgKiAxMDAwMAorICAgICAgICAjIGJwby0zMzkwMTogb24gbWFjT1Mgd2l0aCBnZGJtIDEuMTUsIGFuIGVtcHR5IGRhdGFiYXNlIHVzZXMgMTYgTWlCCisgICAgICAgICMgYW5kIGFkZGluZyBhbiBlbnRyeSBvZiAxMCwwMDAgQiBoYXMgbm8gZWZmZWN0IG9uIHRoZSBmaWxlIHNpemUuCisgICAgICAgICMgQWRkIHNpemUwIGJ5dGVzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBmaWxlIHNpemUgY2hhbmdlcy4KKyAgICAgICAgdmFsdWVfc2l6ZSA9IG1heChzaXplMCwgMTAwMDApCisgICAgICAgIHNlbGYuZ1sneCddID0gJ3gnICogdmFsdWVfc2l6ZQogICAgICAgICBzaXplMSA9IG9zLnBhdGguZ2V0c2l6ZShmaWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNpemUwIDwgc2l6ZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzaXplMSwgc2l6ZTApCiAKICAgICAgICAgZGVsIHNlbGYuZ1sneCddCiAgICAgICAgICMgJ3NpemUnIGlzIHN1cHBvc2VkIHRvIGJlIHRoZSBzYW1lIGV2ZW4gYWZ0ZXIgZGVsZXRpbmcgYW4gZW50cnkuCkBAIC03Miw3ICs3Niw4IEBACiAKICAgICAgICAgc2VsZi5nLnJlb3JnYW5pemUoKQogICAgICAgICBzaXplMiA9IG9zLnBhdGguZ2V0c2l6ZShmaWxlbmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNpemUxID4gc2l6ZTIgPj0gc2l6ZTApCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzaXplMiwgc2l6ZTEpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNpemUyLCBzaXplMCkKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKaW5kZXggNWUxYTNlNS4uMGY3YmYxOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQpAQCAtMTUyNCwxMyArMTUyNCw3IEBACiBbTm9uZV0KIAogCi0KLUFuIG9ic2NlbmUgYWJ1c2Ugb2YgYSB5aWVsZCBleHByZXNzaW9uIHdpdGhpbiBhIGdlbmVyYXRvciBleHByZXNzaW9uOgotCi0+Pj4gbGlzdCgoeWllbGQgMjEpIGZvciBpIGluIHJhbmdlKDQpKQotWzIxLCBOb25lLCAyMSwgTm9uZSwgMjEsIE5vbmUsIDIxLCBOb25lXQotCi1BbmQgYSBtb3JlIHNhbmUsIGJ1dCBzdGlsbCB3ZWlyZCB1c2FnZToKK1lpZWxkIGlzIGFsbG93ZWQgb25seSBpbiB0aGUgb3V0ZXJtb3N0IGl0ZXJhYmxlIGluIGdlbmVyYXRvciBleHByZXNzaW9uOgogCiA+Pj4gZGVmIGYoKTogbGlzdChpIGZvciBpIGluIFsoeWllbGQgMjYpXSkKID4+PiB0eXBlKGYoKSkKQEAgLTE1NzEsNyArMTU2NSw3IEBACiA+Pj4gZGVmIGYoKTogcmV0dXJuIGxhbWJkYSB4PSh5aWVsZCk6IDEKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgLi4uCi1TeW50YXhFcnJvcjogJ3JldHVybicgd2l0aCBhcmd1bWVudCBpbnNpZGUgZ2VuZXJhdG9yICg8ZG9jdGVzdCB0ZXN0LnRlc3RfZ2VuZXJhdG9ycy5fX3Rlc3RfXy5jb3JvdXRpbmVbMjJdPiwgbGluZSAxKQorU3ludGF4RXJyb3I6ICdyZXR1cm4nIHdpdGggYXJndW1lbnQgaW5zaWRlIGdlbmVyYXRvciAoPGRvY3Rlc3QgdGVzdC50ZXN0X2dlbmVyYXRvcnMuX190ZXN0X18uY29yb3V0aW5lWzIxXT4sIGxpbmUgMSkKIAogPj4+IGRlZiBmKCk6IHggPSB5aWVsZCA9IHkKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKQEAgLTE3ODQsNyArMTc3OCw3IEBACiA+Pj4gdHlwZShmKCkpCiA8dHlwZSAnZ2VuZXJhdG9yJz4KIAotPj4+IGRlZiBmKCk6IHg9KGkgZm9yIGkgaW4gKHlpZWxkKSBpZiAoeWllbGQpKQorPj4+IGRlZiBmKCk6IHg9KGkgZm9yIGkgaW4gKHlpZWxkKSBpZiBpKQogPj4+IHR5cGUoZigpKQogPHR5cGUgJ2dlbmVyYXRvcic+CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkgYi9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CmluZGV4IGUwZWZjYWEuLjdmODE5ZmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQpAQCAtMSw5ICsxLDEwIEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBtYXRoCitpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydAogIyBTa2lwIHRoaXMgdGVzdCBpZiB0aGUgX3Rlc3RjYXBpIG1vZHVsZSBpc24ndCBhdmFpbGFibGUuCi10ZXN0X3N1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKK190ZXN0Y2FwaSA9IHRlc3Rfc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfdGVzdGNhcGknKQogZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3Nfa2V5d29yZHMKIGltcG9ydCB3YXJuaW5ncwogCkBAIC03OTksMTIgKzgwMCw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc191X2hhc2gsIE5vbmUpCiAKIAotZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3RzID0gW1NpZ25lZF9UZXN0Q2FzZSwgVW5zaWduZWRfVGVzdENhc2UsIExvbmdMb25nX1Rlc3RDYXNlLAotICAgICAgICAgICAgIFR1cGxlX1Rlc3RDYXNlLCBLZXl3b3Jkc19UZXN0Q2FzZSwKLSAgICAgICAgICAgICBCeXRlc19UZXN0Q2FzZSwgU3RyaW5nX1Rlc3RDYXNlLCBVbmljb2RlX1Rlc3RDYXNlXQotICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoKnRlc3RzKQotCiBjbGFzcyBPYmplY3RfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X1Moc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX1MKQEAgLTg0MCw1ICs4MzUsMTQyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19VLCBidWZmZXIob2JqKSkKIAogCitjbGFzcyBTa2lwaXRlbVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2tpcGl0ZW0oc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBJZiB0aGlzIHRlc3QgZmFpbGVkLCB5b3UgcHJvYmFibHkgYWRkZWQgYSBuZXcgImZvcm1hdCB1bml0IgorICAgICAgICBpbiBQeXRob24vZ2V0YXJncy5jLCBidXQgbmVnbGVjdGVkIHRvIHVwZGF0ZSBvdXIgcG9vciBmcmllbmQKKyAgICAgICAgc2tpcGl0ZW0oKSBpbiB0aGUgc2FtZSBmaWxlLiAgKElmIHNvLCBzaGFtZSBvbiB5b3UhKQorCisgICAgICAgIFdpdGggYSBmZXcgZXhjZXB0aW9ucyoqLCB0aGlzIGZ1bmN0aW9uIGJydXRlLWZvcmNlIHRlc3RzIGFsbAorICAgICAgICBwcmludGFibGUgQVNDSUkqKiogY2hhcmFjdGVycyAoMzIgdG8gMTI2IGluY2x1c2l2ZSkgYXMgZm9ybWF0IHVuaXRzLAorICAgICAgICBjaGVja2luZyB0byBzZWUgdGhhdCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKSByZXR1cm4gY29uc2lzdGVudAorICAgICAgICBlcnJvcnMgYm90aCB3aGVuIHRoZSB1bml0IGlzIGF0dGVtcHRlZCB0byBiZSB1c2VkIGFuZCB3aGVuIGl0IGlzCisgICAgICAgIHNraXBwZWQuICBJZiB0aGUgZm9ybWF0IHVuaXQgZG9lc24ndCBleGlzdCwgd2UnbGwgZ2V0IG9uZSBvZiB0d28KKyAgICAgICAgc3BlY2lmaWMgZXJyb3IgbWVzc2FnZXMgKG9uZSBmb3IgdXNlZCwgb25lIGZvciBza2lwcGVkKTsgaWYgaXQgZG9lcworICAgICAgICBleGlzdCB3ZSAqd29uJ3QqIGdldCB0aGF0IGVycm9yLS13ZSdsbCBnZXQgZWl0aGVyIG5vIGVycm9yIG9yIHNvbWUKKyAgICAgICAgb3RoZXIgZXJyb3IuICBJZiB3ZSBnZXQgdGhlIHNwZWNpZmljICJkb2VzIG5vdCBleGlzdCIgZXJyb3IgZm9yIG9uZQorICAgICAgICB0ZXN0IGFuZCBub3QgZm9yIHRoZSBvdGhlciwgdGhlcmUncyBhIG1pc21hdGNoLCBhbmQgdGhlIHRlc3QgZmFpbHMuCisKKyAgICAgICAgICAgKiogU29tZSBmb3JtYXQgdW5pdHMgaGF2ZSBzcGVjaWFsIGZ1bm55IHNlbWFudGljcyBhbmQgaXQgd291bGQKKyAgICAgICAgICAgICAgYmUgZGlmZmljdWx0IHRvIGFjY29tbW9kYXRlIHRoZW0gaGVyZS4gIFNpbmNlIHRoZXNlIGFyZSBhbGwKKyAgICAgICAgICAgICAgd2VsbC1lc3RhYmxpc2hlZCBhbmQgcHJvcGVybHkgc2tpcHBlZCBpbiBza2lwaXRlbSgpIHdlIGNhbgorICAgICAgICAgICAgICBnZXQgYXdheSB3aXRoIG5vdCB0ZXN0aW5nIHRoZW0tLXRoaXMgdGVzdCBpcyByZWFsbHkgaW50ZW5kZWQKKyAgICAgICAgICAgICAgdG8gY2F0Y2ggKm5ldyogZm9ybWF0IHVuaXRzLgorCisgICAgICAgICAgKioqIFB5dGhvbiBDIHNvdXJjZSBmaWxlcyBtdXN0IGJlIEFTQ0lJLiAgVGhlcmVmb3JlIGl0J3MgaW1wb3NzaWJsZQorICAgICAgICAgICAgICB0byBoYXZlIG5vbi1BU0NJSSBmb3JtYXQgdW5pdHMuCisKKyAgICAgICAgIiIiCisgICAgICAgIGVtcHR5X3R1cGxlID0gKCkKKyAgICAgICAgdHVwbGVfMSA9ICgwLCkKKyAgICAgICAgZGljdF9iID0geydiJzoxfQorICAgICAgICBrZXl3b3JkcyA9IFsiYSIsICJiIl0KKworICAgICAgICBmb3IgaSBpbiByYW5nZSgzMiwgMTI3KToKKyAgICAgICAgICAgIGMgPSBjaHIoaSkKKworICAgICAgICAgICAgIyBza2lwIHBhcmVudGhlc2VzLCB0aGUgZXJyb3IgcmVwb3J0aW5nIGlzIGluY29uc2lzdGVudCBhYm91dCB0aGVtCisgICAgICAgICAgICAjIHNraXAgJ2UnLCBpdCdzIGFsd2F5cyBhIHR3by1jaGFyYWN0ZXIgY29kZQorICAgICAgICAgICAgIyBza2lwICd8JywgaXQgZG9lc24ndCByZXByZXNlbnQgYXJndW1lbnRzIGFueXdheQorICAgICAgICAgICAgaWYgYyBpbiAnKCllfCc6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgIyB0ZXN0IHRoZSBmb3JtYXQgdW5pdCB3aGVuIG5vdCBza2lwcGVkCisgICAgICAgICAgICBmb3JtYXQgPSBjICsgImkiCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3Jkcyh0dXBsZV8xLCBkaWN0X2IsCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwga2V5d29yZHMpCisgICAgICAgICAgICAgICAgd2hlbl9ub3Rfc2tpcHBlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcyA9ICJhcmd1bWVudCAxIChpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj4pIgorICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSAoc3RyKGUpID09IHMpCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSBGYWxzZQorCisgICAgICAgICAgICAjIHRlc3QgdGhlIGZvcm1hdCB1bml0IHdoZW4gc2tpcHBlZAorICAgICAgICAgICAgb3B0aW9uYWxfZm9ybWF0ID0gInwiICsgZm9ybWF0CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyhlbXB0eV90dXBsZSwgZGljdF9iLAorICAgICAgICAgICAgICAgICAgICBvcHRpb25hbF9mb3JtYXQsIGtleXdvcmRzKQorICAgICAgICAgICAgICAgIHdoZW5fc2tpcHBlZCA9IEZhbHNlCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgcyA9ICJpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj46ICd7fSciLmZvcm1hdChmb3JtYXQpCisgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gKHN0cihlKSA9PSBzKQorCisgICAgICAgICAgICBtZXNzYWdlID0gKCJ0ZXN0X3NraXBpdGVtX3Bhcml0eTogIgorICAgICAgICAgICAgICAgICJkZXRlY3RlZCBtaXNtYXRjaCBiZXR3ZWVuIGNvbnZlcnRzaW1wbGUgYW5kIHNraXBpdGVtICIKKyAgICAgICAgICAgICAgICAiZm9yIGZvcm1hdCB1bml0ICd7fScgKHt9KSwgbm90IHNraXBwZWQge30sIHNraXBwZWQge30iLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgYywgaSwgd2hlbl9za2lwcGVkLCB3aGVuX25vdF9za2lwcGVkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMod2hlbl9za2lwcGVkLCB3aGVuX25vdF9za2lwcGVkLCBtZXNzYWdlKQorCisgICAgZGVmIHRlc3Rfc2tpcGl0ZW1fd2l0aF9zdWZmaXgoc2VsZik6CisgICAgICAgIHBhcnNlID0gX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcworICAgICAgICBlbXB0eV90dXBsZSA9ICgpCisgICAgICAgIHR1cGxlXzEgPSAoMCwpCisgICAgICAgIGRpY3RfYiA9IHsnYic6MX0KKyAgICAgICAga2V5d29yZHMgPSBbImEiLCAiYiJdCisKKyAgICAgICAgc3VwcG9ydGVkID0gKCdzIycsICdzKicsICd6IycsICd6KicsICd1IycsICd0IycsICd3IycsICd3KicpCisgICAgICAgIGZvciBjIGluIHN0cmluZy5hc2NpaV9sZXR0ZXJzOgorICAgICAgICAgICAgZm9yIGMyIGluICcjKic6CisgICAgICAgICAgICAgICAgZiA9IGMgKyBjMgorICAgICAgICAgICAgICAgIG9wdGlvbmFsX2Zvcm1hdCA9ICJ8IiArIGYgKyAiaSIKKyAgICAgICAgICAgICAgICBpZiBmIGluIHN1cHBvcnRlZDoKKyAgICAgICAgICAgICAgICAgICAgcGFyc2UoZW1wdHlfdHVwbGUsIGRpY3RfYiwgb3B0aW9uYWxfZm9ybWF0LCBrZXl3b3JkcykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKChSdW50aW1lRXJyb3IsIFR5cGVFcnJvciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj4nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlKGVtcHR5X3R1cGxlLCBkaWN0X2IsIG9wdGlvbmFsX2Zvcm1hdCwga2V5d29yZHMpCisKKyAgICAgICAgZm9yIGMgaW4gbWFwKGNociwgcmFuZ2UoMzIsIDEyOCkpOgorICAgICAgICAgICAgZiA9ICdlJyArIGMKKyAgICAgICAgICAgIG9wdGlvbmFsX2Zvcm1hdCA9ICJ8IiArIGYgKyAiaSIKKyAgICAgICAgICAgIGlmIGMgaW4gJ3N0JzoKKyAgICAgICAgICAgICAgICBwYXJzZShlbXB0eV90dXBsZSwgZGljdF9iLCBvcHRpb25hbF9mb3JtYXQsIGtleXdvcmRzKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKFJ1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3NzaWJsZTxiYWQgZm9ybWF0IGNoYXI+Jyk6CisgICAgICAgICAgICAgICAgICAgIHBhcnNlKGVtcHR5X3R1cGxlLCBkaWN0X2IsIG9wdGlvbmFsX2Zvcm1hdCwga2V5d29yZHMpCisKKworY2xhc3MgUGFyc2VUdXBsZUFuZEtleXdvcmRzX1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfcGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgaGFuZGxpbmcgZXJyb3JzIGluIHRoZSBwYXJzZV90dXBsZV9hbmRfa2V5d29yZHMgaGVscGVyIGl0c2VsZgorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgNDIsIFtdKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoKSwge30sICcnLCA0MikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCksIHt9LCAnJywgWycnXSAqIDQyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgJycsIFs0Ml0pCisKKyAgICBkZWYgdGVzdF9iYWRfdXNlKHNlbGYpOgorICAgICAgICAjIFRlc3QgaGFuZGxpbmcgaW52YWxpZCBmb3JtYXQgYW5kIGtleXdvcmRzIGluCisgICAgICAgICMgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBfdGVzdGNhcGkucGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoMSwpLCB7fSwgJ3x8TycsIFsnYSddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgxLCksIHt9LCAnfE8nLCBbJ2EnLCAnYiddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICgxLCksIHt9LCAnfE9PJywgWydhJ10pCisKKworY2xhc3MgVGVzdF90ZXN0Y2FwaSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbG9jYWxzKCkudXBkYXRlKChuYW1lLCBnZXRhdHRyKF90ZXN0Y2FwaSwgbmFtZSkpCisgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lIGluIGRpcihfdGVzdGNhcGkpCisgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgndGVzdF8nKSBhbmQgbmFtZS5lbmRzd2l0aCgnX2NvZGUnKSkKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgdGVzdHMgPSBbU2lnbmVkX1Rlc3RDYXNlLCBVbnNpZ25lZF9UZXN0Q2FzZSwgTG9uZ0xvbmdfVGVzdENhc2UsCisgICAgICAgICAgICAgVHVwbGVfVGVzdENhc2UsIEtleXdvcmRzX1Rlc3RDYXNlLAorICAgICAgICAgICAgIEJ5dGVzX1Rlc3RDYXNlLCBTdHJpbmdfVGVzdENhc2UsIFVuaWNvZGVfVGVzdENhc2UsCisgICAgICAgICAgICAgU2tpcGl0ZW1UZXN0LCBQYXJzZVR1cGxlQW5kS2V5d29yZHNfVGVzdCwgVGVzdF90ZXN0Y2FwaV0KKyAgICB0ZXN0X3N1cHBvcnQucnVuX3VuaXR0ZXN0KCp0ZXN0cykKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nbG9iLnB5IGIvTGliL3Rlc3QvdGVzdF9nbG9iLnB5CmluZGV4IGIzNjBkMDkuLjg0YjJlN2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2xvYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dsb2IucHkKQEAgLTQ5LDEwICs0OSwxMCBAQAogICAgICAgICAgICAgcGF0dGVybiA9IG9zLnBhdGguam9pbigqcGFydHMpCiAgICAgICAgIHAgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCBwYXR0ZXJuKQogICAgICAgICByZXMgPSBnbG9iLmdsb2IocCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGdsb2IuaWdsb2IocCkpLCByZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChnbG9iLmlnbG9iKHApLCByZXMpCiAgICAgICAgIHVyZXMgPSBbZnNkZWNvZGUoeCkgZm9yIHggaW4gcmVzXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdsb2IuZ2xvYihmc2RlY29kZShwKSksIHVyZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChnbG9iLmlnbG9iKGZzZGVjb2RlKHApKSksIHVyZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXRlbXNFcXVhbChnbG9iLmdsb2IoZnNkZWNvZGUocCkpLCB1cmVzKQorICAgICAgICBzZWxmLmFzc2VydEl0ZW1zRXF1YWwoZ2xvYi5pZ2xvYihmc2RlY29kZShwKSksIHVyZXMpCiAgICAgICAgIHJldHVybiByZXMKIAogICAgIGRlZiBhc3NlcnRTZXF1ZW5jZXNFcXVhbF9ub29yZGVyKHNlbGYsIGwxLCBsMik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKaW5kZXggNWY3N2MxZC4uMjI4NTg2ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQpAQCAtNSwxMyArNSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfcHkza193YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCitpbXBvcnQgd2FybmluZ3MKICMgdGVzdGluZyBpbXBvcnQgKgogZnJvbSBzeXMgaW1wb3J0ICoKIAogCiBjbGFzcyBUb2tlblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAotICAgIGRlZiB0ZXN0QmFja3NsYXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2JhY2tzbGFzaChzZWxmKToKICAgICAgICAgIyBCYWNrc2xhc2ggbWVhbnMgbGluZSBjb250aW51YXRpb246CiAgICAgICAgIHggPSAxIFwKICAgICAgICAgKyAxCkBAIC0yMSwyOSArMjIsNDIgQEAKICAgICAgICAgeCA9IDAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAwLCAnYmFja3NsYXNoIGVuZGluZyBjb21tZW50JykKIAotICAgIGRlZiB0ZXN0UGxhaW5JbnRlZ2VycyhzZWxmKToKKyAgICBkZWYgdGVzdF9wbGFpbl9pbnRlZ2VycyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKDAwMCksIHR5cGUoMCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMHhmZiwgMjU1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAzNzcsIDI1NSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwbzM3NywgMjU1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIxNDc0ODM2NDcsIDAxNzc3Nzc3Nzc3NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMTQ3NDgzNjQ3LCAwbzE3Nzc3Nzc3Nzc3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDBiMTAwMSwgOSkKICAgICAgICAgIyAiMHgiIGlzIG5vdCBhIHZhbGlkIGxpdGVyYWwKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIweCIpCiAgICAgICAgIGZyb20gc3lzIGltcG9ydCBtYXhpbnQKICAgICAgICAgaWYgbWF4aW50ID09IDIxNDc0ODM2NDc6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0yMTQ3NDgzNjQ3LTEsIC0wMjAwMDAwMDAwMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0yMTQ3NDgzNjQ3LTEsIC0wbzIwMDAwMDAwMDAwKQogICAgICAgICAgICAgIyBYWFggLTIxNDc0ODM2NDgKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwMzc3Nzc3Nzc3NzcgPiAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDBvMzc3Nzc3Nzc3NzcgPiAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDB4ZmZmZmZmZmYgPiAwKQotICAgICAgICAgICAgZm9yIHMgaW4gJzIxNDc0ODM2NDgnLCAnMDQwMDAwMDAwMDAwJywgJzB4MTAwMDAwMDAwJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwYjExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEgPiAwKQorICAgICAgICAgICAgZm9yIHMgaW4gKCcyMTQ3NDgzNjQ4JywgJzA0MDAwMDAwMDAwMCcsICcwbzQwMDAwMDAwMDAwJywKKyAgICAgICAgICAgICAgICAgICAgICAnMHgxMDAwMDAwMDAnLAorICAgICAgICAgICAgICAgICAgICAgICcwYjEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyk6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB4ID0gZXZhbChzKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk92ZXJmbG93RXJyb3Igb24gaHVnZSBpbnRlZ2VyIGxpdGVyYWwgJXIiICUgcykKICAgICAgICAgZWxpZiBtYXhpbnQgPT0gOTIyMzM3MjAzNjg1NDc3NTgwNzoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTkyMjMzNzIwMzY4NTQ3NzU4MDctMSwgLTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xLCAtMG8xMDAwMDAwMDAwMDAwMDAwMDAwMDAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAxNzc3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3ID4gMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwbzE3Nzc3Nzc3Nzc3Nzc3Nzc3Nzc3NzcgPiAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDB4ZmZmZmZmZmZmZmZmZmZmZiA+IDApCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoMGIxMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSA+IDApCiAgICAgICAgICAgICBmb3IgcyBpbiAnOTIyMzM3MjAzNjg1NDc3NTgwOCcsICcwMjAwMDAwMDAwMDAwMDAwMDAwMDAwMCcsIFwKLSAgICAgICAgICAgICAgICAgICAgICcweDEwMDAwMDAwMDAwMDAwMDAwJzoKKyAgICAgICAgICAgICAgICAgICAgICcwbzIwMDAwMDAwMDAwMDAwMDAwMDAwMDAnLCBcCisgICAgICAgICAgICAgICAgICAgICAnMHgxMDAwMDAwMDAwMDAwMDAwMCcsIFwKKyAgICAgICAgICAgICAgICAgICAgICcwYjEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCc6CiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICB4ID0gZXZhbChzKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBPdmVyZmxvd0Vycm9yOgpAQCAtNTEsNyArNjUsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdXZWlyZCBtYXhpbnQgdmFsdWUgJXInICUgbWF4aW50KQogCi0gICAgZGVmIHRlc3RMb25nSW50ZWdlcnMoc2VsZik6CisgICAgZGVmIHRlc3RfbG9uZ19pbnRlZ2VycyhzZWxmKToKICAgICAgICAgeCA9IDBMCiAgICAgICAgIHggPSAwbAogICAgICAgICB4ID0gMHhmZmZmZmZmZmZmZmZmZmZmTApAQCAtNjEsNyArNzUsNyBAQAogICAgICAgICB4ID0gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwTAogICAgICAgICB4ID0gMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwbAogCi0gICAgZGVmIHRlc3RGbG9hdHMoc2VsZik6CisgICAgZGVmIHRlc3RfZmxvYXRzKHNlbGYpOgogICAgICAgICB4ID0gMy4xNAogICAgICAgICB4ID0gMzE0LgogICAgICAgICB4ID0gMC4zMTQKQEAgLTgxLDcgKzk1LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxIGlmIDBlbHNlIDAsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiMCBpZiAxRWxzZSAwIikKIAotICAgIGRlZiB0ZXN0U3RyaW5nTGl0ZXJhbHMoc2VsZik6CisgICAgZGVmIHRlc3Rfc3RyaW5nX2xpdGVyYWxzKHNlbGYpOgogICAgICAgICB4ID0gJyc7IHkgPSAiIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAwIGFuZCB4ID09IHkpCiAgICAgICAgIHggPSAnXCcnOyB5ID0gIiciOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDEgYW5kIHggPT0geSBhbmQgb3JkKHgpID09IDM5KQogICAgICAgICB4ID0gJyInOyB5ID0gIlwiIjsgc2VsZi5hc3NlcnRUcnVlKGxlbih4KSA9PSAxIGFuZCB4ID09IHkgYW5kIG9yZCh4KSA9PSAzNCkKQEAgLTEzMywxMSArMTQ3LDExIEBACiAgICAgIyBleHByX2lucHV0OiB0ZXN0bGlzdCBORVdMSU5FCiAgICAgIyBYWFggSGFyZCB0byB0ZXN0IC0tIHVzZWQgb25seSBpbiBjYWxscyB0byBpbnB1dCgpCiAKLSAgICBkZWYgdGVzdEV2YWxJbnB1dChzZWxmKToKKyAgICBkZWYgdGVzdF9ldmFsX2lucHV0KHNlbGYpOgogICAgICAgICAjIHRlc3RsaXN0IEVORE1BUktFUgogICAgICAgICB4ID0gZXZhbCgnMSwgMCBvciAxJykKIAotICAgIGRlZiB0ZXN0RnVuY2RlZihzZWxmKToKKyAgICBkZWYgdGVzdF9mdW5jZGVmKHNlbGYpOgogICAgICAgICAjIyMgJ2RlZicgTkFNRSBwYXJhbWV0ZXJzICc6JyBzdWl0ZQogICAgICAgICAjIyMgcGFyYW1ldGVyczogJygnIFt2YXJhcmdzbGlzdF0gJyknCiAgICAgICAgICMjIyB2YXJhcmdzbGlzdDogKGZwZGVmIFsnPScgdGVzdF0gJywnKSogKCcqJyBOQU1FIFsnLCcgKCcqKid8JyonICcqJykgTkFNRV0KQEAgLTE1Myw5ICsxNjcsMTAgQEAKICAgICAgICAgZjEoKigpLCAqKnt9KQogICAgICAgICBkZWYgZjIob25lX2FyZ3VtZW50KTogcGFzcwogICAgICAgICBkZWYgZjModHdvLCBhcmd1bWVudHMpOiBwYXNzCi0gICAgICAgICMgU2lsZW5jZSBQeTNrIHdhcm5pbmcKLSAgICAgICAgZXhlYygnZGVmIGY0KHR3bywgKGNvbXBvdW5kLCAoYXJndW1lbnQsIGxpc3QpKSk6IHBhc3MnKQotICAgICAgICBleGVjKCdkZWYgZjUoKGNvbXBvdW5kLCBmaXJzdCksIHR3byk6IHBhc3MnKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKCd0dXBsZSBwYXJhbWV0ZXIgdW5wYWNraW5nIGhhcyBiZWVuIHJlbW92ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bnRheFdhcm5pbmcpKToKKyAgICAgICAgICAgIGV4ZWMoJ2RlZiBmNCh0d28sIChjb21wb3VuZCwgKGFyZ3VtZW50LCBsaXN0KSkpOiBwYXNzJykKKyAgICAgICAgICAgIGV4ZWMoJ2RlZiBmNSgoY29tcG91bmQsIGZpcnN0KSwgdHdvKTogcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZjIuZnVuY19jb2RlLmNvX3Zhcm5hbWVzLCAoJ29uZV9hcmd1bWVudCcsKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmMy5mdW5jX2NvZGUuY29fdmFybmFtZXMsICgndHdvJywgJ2FyZ3VtZW50cycpKQogICAgICAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgnamF2YScpOgpAQCAtMTc0LDggKzE4OSw5IEBACiAgICAgICAgIGRlZiB2MCgqcmVzdCk6IHBhc3MKICAgICAgICAgZGVmIHYxKGEsICpyZXN0KTogcGFzcwogICAgICAgICBkZWYgdjIoYSwgYiwgKnJlc3QpOiBwYXNzCi0gICAgICAgICMgU2lsZW5jZSBQeTNrIHdhcm5pbmcKLSAgICAgICAgZXhlYygnZGVmIHYzKGEsIChiLCBjKSwgKnJlc3QpOiByZXR1cm4gYSwgYiwgYywgcmVzdCcpCisgICAgICAgIHdpdGggY2hlY2tfcHkza193YXJuaW5ncygoJ3R1cGxlIHBhcmFtZXRlciB1bnBhY2tpbmcgaGFzIGJlZW4gcmVtb3ZlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ludGF4V2FybmluZykpOgorICAgICAgICAgICAgZXhlYygnZGVmIHYzKGEsIChiLCBjKSwgKnJlc3QpOiByZXR1cm4gYSwgYiwgYywgcmVzdCcpCiAKICAgICAgICAgZjEoKQogICAgICAgICBmMigxKQpAQCAtMjEyLDcgKzIyOCw5IEBACiAgICAgICAgIGQwMSgpCiAgICAgICAgIGQwMSgxKQogICAgICAgICBkMDEoKigxLCkpCisgICAgICAgIGQwMSgqW10gb3IgWzJdKQogICAgICAgICBkMDEoKip7J2EnOjJ9KQorICAgICAgICBkMDEoKip7J2EnOjJ9IG9yIHt9KQogICAgICAgICBkZWYgZDExKGEsIGI9MSk6IHBhc3MKICAgICAgICAgZDExKDEpCiAgICAgICAgIGQxMSgxLCAyKQpAQCAtMjgwLDkgKzI5OCwxMiBAQAogICAgICAgICBkMjJ2KCooMSwgMiwgMywgNCkpCiAgICAgICAgIGQyMnYoMSwgMiwgKigzLCA0LCA1KSkKICAgICAgICAgZDIydigxLCAqKDIsIDMpLCAqKnsnZCc6IDR9KQotICAgICAgICAjIFNpbGVuY2UgUHkzayB3YXJuaW5nCi0gICAgICAgIGV4ZWMoJ2RlZiBkMzF2KCh4KSk6IHBhc3MnKQotICAgICAgICBleGVjKCdkZWYgZDMydigoeCwpKTogcGFzcycpCisgICAgICAgIHdpdGggY2hlY2tfcHkza193YXJuaW5ncygoJ3BhcmVudGhlc2l6ZWQgYXJndW1lbnQgbmFtZXMgYXJlIGludmFsaWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bnRheFdhcm5pbmcpKToKKyAgICAgICAgICAgIGV4ZWMoJ2RlZiBkMzF2KCh4KSk6IHBhc3MnKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKCd0dXBsZSBwYXJhbWV0ZXIgdW5wYWNraW5nIGhhcyBiZWVuIHJlbW92ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bnRheFdhcm5pbmcpKToKKyAgICAgICAgICAgIGV4ZWMoJ2RlZiBkMzJ2KCh4LCkpOiBwYXNzJykKICAgICAgICAgZDMxdigxKQogICAgICAgICBkMzJ2KCgxLCkpCiAKQEAgLTI5MywxMiArMzE0LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyd4JzoyLCAneSc6NX0pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgImYoMSwgKigyLDMpLCA0KSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiZigxLCB4PTIsICooMyw0KSwgeD01KSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigqKnsnZWdncyc6J3NjcmFtYmxlZCcsICdzcGFtJzonZnJpZWQnfSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCgpLCB7J2VnZ3MnOidzY3JhbWJsZWQnLCAnc3BhbSc6J2ZyaWVkJ30pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoc3BhbT0nZnJpZWQnLCAqKnsnZWdncyc6J3NjcmFtYmxlZCd9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCksIHsnZWdncyc6J3NjcmFtYmxlZCcsICdzcGFtJzonZnJpZWQnfSkpCiAKICAgICAgICAgIyBDaGVjayBhc3QgZXJyb3JzIGluICphcmdzIGFuZCAqa3dhcmdzCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqZygxPTIpKSIpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZigqKmcoMT0yKSkiKQogCi0gICAgZGVmIHRlc3RMYW1iZGVmKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRyYWlsaW5nIGNvbW1hcyBhcmUgcGVybWl0dGVkIGluIGZ1bmNkZWYgYXJndW1lbnQgbGlzdAorICAgICAgICBkZWYgZihhLCk6IHBhc3MKKworICAgIGRlZiB0ZXN0X2xhbWJkZWYoc2VsZik6CiAgICAgICAgICMjIyBsYW1iZGVmOiAnbGFtYmRhJyBbdmFyYXJnc2xpc3RdICc6JyB0ZXN0CiAgICAgICAgIGwxID0gbGFtYmRhIDogMAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGwxKCksIDApCkBAIC0zMTEsMTIgKzMzOSwxOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGw1KDEsIDIpLCA1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGw1KDEsIDIsIDMpLCA2KQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImxhbWJkYSB4OiB4ID0gMiIpCi0gICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAibGFtYmRhIChOb25lLCk6IE5vbmUiKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKCd0dXBsZSBwYXJhbWV0ZXIgdW5wYWNraW5nIGhhcyBiZWVuIHJlbW92ZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bnRheFdhcm5pbmcpKToKKyAgICAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAibGFtYmRhIChOb25lLCk6IE5vbmUiKQorCisgICAgICAgICMgY2hlY2sgdGhhdCB0cmFpbGluZyBjb21tYXMgYXJlIHBlcm1pdHRlZAorICAgICAgICBsMTAgPSBsYW1iZGEgYSw6IDAKKwogCiAgICAgIyMjIHN0bXQ6IHNpbXBsZV9zdG10IHwgY29tcG91bmRfc3RtdAogICAgICMgVGVzdGVkIGJlbG93CiAKLSAgICBkZWYgdGVzdFNpbXBsZVN0bXQoc2VsZik6CisgICAgZGVmIHRlc3Rfc2ltcGxlX3N0bXQoc2VsZik6CiAgICAgICAgICMjIyBzaW1wbGVfc3RtdDogc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXQogICAgICAgICB4ID0gMTsgcGFzczsgZGVsIHgKICAgICAgICAgZGVmIGZvbygpOgpAQCAtMzI3LDcgKzM2MSw3IEBACiAgICAgIyMjIHNtYWxsX3N0bXQ6IGV4cHJfc3RtdCB8IHByaW50X3N0bXQgIHwgcGFzc19zdG10IHwgZGVsX3N0bXQgfCBmbG93X3N0bXQgfCBpbXBvcnRfc3RtdCB8IGdsb2JhbF9zdG10IHwgYWNjZXNzX3N0bXQgfCBleGVjX3N0bXQKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RFeHByU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9leHByX3N0bXQoc2VsZik6CiAgICAgICAgICMgKGV4cHJsaXN0ICc9JykqIGV4cHJsaXN0CiAgICAgICAgIDEKICAgICAgICAgMSwgMiwgMwpAQCAtMzQwLDcgKzM3NCw3IEBACiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieCArIDEgPSAxIikKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJhICsgMSA9IGIgKyAyIikKIAotICAgIGRlZiB0ZXN0UHJpbnRTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X3ByaW50X3N0bXQoc2VsZik6CiAgICAgICAgICMgJ3ByaW50JyAodGVzdCAnLCcpKiBbdGVzdF0KICAgICAgICAgaW1wb3J0IFN0cmluZ0lPCiAKQEAgLTQxMCw3ICs0NDQsNyBAQAogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgJ3ByaW50ICwnKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgJ3ByaW50ID4+IHgsJykKIAotICAgIGRlZiB0ZXN0RGVsU3RtdChzZWxmKToKKyAgICBkZWYgdGVzdF9kZWxfc3RtdChzZWxmKToKICAgICAgICAgIyAnZGVsJyBleHBybGlzdAogICAgICAgICBhYmMgPSBbMSwyLDNdCiAgICAgICAgIHgsIHksIHogPSBhYmMKQEAgLTQxOSwxOCArNDUzLDE4IEBACiAgICAgICAgIGRlbCBhYmMKICAgICAgICAgZGVsIHgsIHksICh6LCB4eXopCiAKLSAgICBkZWYgdGVzdFBhc3NTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X3Bhc3Nfc3RtdChzZWxmKToKICAgICAgICAgIyAncGFzcycKICAgICAgICAgcGFzcwogCiAgICAgIyBmbG93X3N0bXQ6IGJyZWFrX3N0bXQgfCBjb250aW51ZV9zdG10IHwgcmV0dXJuX3N0bXQgfCByYWlzZV9zdG10CiAgICAgIyBUZXN0ZWQgYmVsb3cKIAotICAgIGRlZiB0ZXN0QnJlYWtTdG10KHNlbGYpOgorICAgIGRlZiB0ZXN0X2JyZWFrX3N0bXQoc2VsZik6CiAgICAgICAgICMgJ2JyZWFrJwogICAgICAgICB3aGlsZSAxOiBicmVhawogCi0gICAgZGVmIHRlc3RDb250aW51ZVN0bXQoc2VsZik6CisgICAgZGVmIHRlc3RfY29udGludWVfc3RtdChzZWxmKToKICAgICAgICAgIyAnY29udGludWUnCiAgICAgICAgIGkgPSAxCiAgICAgICAgIHdoaWxlIGk6IGkgPSAwOyBjb250aW51ZQpAQCAtNDgyLDcgKzUxNiw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJjb250aW51ZSB0aGVuIGJyZWFrIGluIHRyeS9leGNlcHQgaW4gbG9vcCBicm9rZW4hIikKICAgICAgICAgdGVzdF9pbm5lcigpCiAKLSAgICBkZWYgdGVzdFJldHVybihzZWxmKToKKyAgICBkZWYgdGVzdF9yZXR1cm4oc2VsZik6CiAgICAgICAgICMgJ3JldHVybicgW3Rlc3RsaXN0XQogICAgICAgICBkZWYgZzEoKTogcmV0dXJuCiAgICAgICAgIGRlZiBnMigpOiByZXR1cm4gMQpAQCAtNDkwLDE3ICs1MjQsMTUwIEBACiAgICAgICAgIHggPSBnMigpCiAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnJldHVybiAxIikKIAotICAgIGRlZiB0ZXN0WWllbGQoc2VsZik6Ci0gICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnlpZWxkIDEiKQorICAgIGRlZiB0ZXN0X2JyZWFrX2luX2ZpbmFsbHkoc2VsZik6CisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSBjb3VudCA8IDI6CisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCAxKQogCi0gICAgZGVmIHRlc3RSYWlzZShzZWxmKToKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIGNvdW50IDwgMjoKKyAgICAgICAgICAgIGNvdW50ICs9IDEKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCAxKQorCisgICAgICAgIGNvdW50ID0gMAorICAgICAgICB3aGlsZSBjb3VudCA8IDI6CisgICAgICAgICAgICBjb3VudCArPSAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgMS4wLzAuMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCAxKQorCisgICAgICAgIGZvciBjb3VudCBpbiBbMCwgMV06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCAwKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudCwgMCkKKworICAgICAgICBmb3IgY291bnQgaW4gWzAsIDFdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudCwgMCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCAwKQorCisgICAgICAgIGZvciBjb3VudCBpbiBbMCwgMV06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCAwKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIDEuMC8wLjAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb3VudCwgMCkKKworICAgIGRlZiB0ZXN0X3JldHVybl9pbl9maW5hbGx5KHNlbGYpOgorICAgICAgICBkZWYgZzEoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZzEoKSwgMSkKKworICAgICAgICBkZWYgZzIoKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICByZXR1cm4gMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICByZXR1cm4gMworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcyKCksIDMpCisKKyAgICAgICAgZGVmIGczKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgMS4wLzAuMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICByZXR1cm4gNAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGczKCksIDQpCisKKyAgICBkZWYgdGVzdF95aWVsZChzZWxmKToKKyAgICAgICAgIyBBbGxvd2VkIGFzIHN0YW5kYWxvbmUgc3RhdGVtZW50CisgICAgICAgIGRlZiBnKCk6IHlpZWxkIDEKKyAgICAgICAgIyBBbGxvd2VkIGFzIFJIUyBvZiBhc3NpZ25tZW50CisgICAgICAgIGRlZiBnKCk6IHggPSB5aWVsZCAxCisgICAgICAgICMgT3JkaW5hcnkgeWllbGQgYWNjZXB0cyBpbXBsaWNpdCB0dXBsZXMKKyAgICAgICAgZGVmIGcoKTogeWllbGQgMSwgMQorICAgICAgICBkZWYgZygpOiB4ID0geWllbGQgMSwgMQorICAgICAgICAjIFJlcXVpcmVzIHBhcmVudGhlc2VzIGFzIHN1YmV4cHJlc3Npb24KKyAgICAgICAgZGVmIGcoKTogMSwgKHlpZWxkIDEpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogMSwgeWllbGQgMSIpCisgICAgICAgICMgUmVxdWlyZXMgcGFyZW50aGVzZXMgYXMgY2FsbCBhcmd1bWVudAorICAgICAgICBkZWYgZygpOiBmKCh5aWVsZCAxKSkKKyAgICAgICAgZGVmIGcoKTogZigoeWllbGQgMSksIDEpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogZih5aWVsZCAxKSIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGcoKTogZih5aWVsZCAxLCAxKSIpCisgICAgICAgICMgTm90IGFsbG93ZWQgYXQgdG9wIGxldmVsCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieWllbGQiKQorICAgICAgICAjIE5vdCBhbGxvd2VkIGF0IGNsYXNzIHNjb3BlCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgZm9vOnlpZWxkIDEiKQorICAgICAgICAjIENoZWNrIGFubm90YXRpb24gcmVmbGVhayBvbiBTeW50YXhFcnJvcgorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBnKGE6KHlpZWxkKSk6IHBhc3MiKQorCisgICAgZGVmIHRlc3RfeWllbGRfaW5fY29tcHJlaGVuc2lvbnMoc2VsZik6CisgICAgICAgICMgQ2hlY2sgeWllbGQgaW4gY29tcHJlaGVuc2lvbnMKKyAgICAgICAgZGVmIGcoKTogW3ggZm9yIHggaW4gWyh5aWVsZCAxKV1dCisKKyAgICAgICAgZGVmIGNoZWNrKGNvZGUsIHdhcm50ZXh0KToKKyAgICAgICAgICAgIHdpdGggY2hlY2tfcHkza193YXJuaW5ncygod2FybnRleHQsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgICAgIGNvbXBpbGUoY29kZSwgJzx0ZXN0IHN0cmluZz4nLCAnZXhlYycpCisgICAgICAgICAgICBpZiBzeXMucHkza3dhcm5pbmc6CisgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygnZXJyb3InLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgICAgICAgICAgY29tcGlsZShjb2RlLCAnPHRlc3Qgc3RyaW5nPicsICdleGVjJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbih3YXJudGV4dCwgc3RyKGNtLmV4Y2VwdGlvbikpCisKKyAgICAgICAgY2hlY2soImRlZiBnKCk6IFsoeWllbGQgeCkgZm9yIHggaW4gKCldIiwKKyAgICAgICAgICAgICAgIid5aWVsZCcgaW5zaWRlIGxpc3QgY29tcHJlaGVuc2lvbiIpCisgICAgICAgIGNoZWNrKCJkZWYgZygpOiBbeCBmb3IgeCBpbiAoKSBpZiBub3QgKHlpZWxkIHgpXSIsCisgICAgICAgICAgICAgICIneWllbGQnIGluc2lkZSBsaXN0IGNvbXByZWhlbnNpb24iKQorICAgICAgICBjaGVjaygiZGVmIGcoKTogW3kgZm9yIHggaW4gKCkgZm9yIHkgaW4gWyh5aWVsZCB4KV1dIiwKKyAgICAgICAgICAgICAgIid5aWVsZCcgaW5zaWRlIGxpc3QgY29tcHJlaGVuc2lvbiIpCisgICAgICAgIGNoZWNrKCJkZWYgZygpOiB7KHlpZWxkIHgpIGZvciB4IGluICgpfSIsCisgICAgICAgICAgICAgICIneWllbGQnIGluc2lkZSBzZXQgY29tcHJlaGVuc2lvbiIpCisgICAgICAgIGNoZWNrKCJkZWYgZygpOiB7KHlpZWxkIHgpOiB4IGZvciB4IGluICgpfSIsCisgICAgICAgICAgICAgICIneWllbGQnIGluc2lkZSBkaWN0IGNvbXByZWhlbnNpb24iKQorICAgICAgICBjaGVjaygiZGVmIGcoKToge3g6ICh5aWVsZCB4KSBmb3IgeCBpbiAoKX0iLAorICAgICAgICAgICAgICAiJ3lpZWxkJyBpbnNpZGUgZGljdCBjb21wcmVoZW5zaW9uIikKKyAgICAgICAgY2hlY2soImRlZiBnKCk6ICgoeWllbGQgeCkgZm9yIHggaW4gKCkpIiwKKyAgICAgICAgICAgICAgIid5aWVsZCcgaW5zaWRlIGdlbmVyYXRvciBleHByZXNzaW9uIikKKyAgICAgICAgd2l0aCBjaGVja19weTNrX3dhcm5pbmdzKCgiJ3lpZWxkJyBpbnNpZGUgbGlzdCBjb21wcmVoZW5zaW9uIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiY2xhc3MgQzogWyh5aWVsZCB4KSBmb3IgeCBpbiAoKV0iKQorICAgICAgICBjaGVjaygiY2xhc3MgQzogKCh5aWVsZCB4KSBmb3IgeCBpbiAoKSkiLAorICAgICAgICAgICAgICAiJ3lpZWxkJyBpbnNpZGUgZ2VuZXJhdG9yIGV4cHJlc3Npb24iKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKCIneWllbGQnIGluc2lkZSBsaXN0IGNvbXByZWhlbnNpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJbKHlpZWxkIHgpIGZvciB4IGluICgpXSIpCisgICAgICAgIGNoZWNrKCIoKHlpZWxkIHgpIGZvciB4IGluICgpKSIsCisgICAgICAgICAgICAgICIneWllbGQnIGluc2lkZSBnZW5lcmF0b3IgZXhwcmVzc2lvbiIpCisKKyAgICBkZWYgdGVzdF9yYWlzZShzZWxmKToKICAgICAgICAgIyAncmFpc2UnIHRlc3QgWycsJyB0ZXN0XQogICAgICAgICB0cnk6IHJhaXNlIFJ1bnRpbWVFcnJvciwgJ2p1c3QgdGVzdGluZycKICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjogcGFzcwogICAgICAgICB0cnk6IHJhaXNlIEtleWJvYXJkSW50ZXJydXB0CiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDogcGFzcwogCi0gICAgZGVmIHRlc3RJbXBvcnQoc2VsZik6CisgICAgZGVmIHRlc3RfaW1wb3J0KHNlbGYpOgogICAgICAgICAjICdpbXBvcnQnIGRvdHRlZF9hc19uYW1lcwogICAgICAgICBpbXBvcnQgc3lzCiAgICAgICAgIGltcG9ydCB0aW1lLCBzeXMKQEAgLTUxMywxMyArNjgwLDEzIEBACiAgICAgICAgIGZyb20gc3lzIGltcG9ydCAocGF0aCwgYXJndikKICAgICAgICAgZnJvbSBzeXMgaW1wb3J0IChwYXRoLCBhcmd2LCkKIAotICAgIGRlZiB0ZXN0R2xvYmFsKHNlbGYpOgorICAgIGRlZiB0ZXN0X2dsb2JhbChzZWxmKToKICAgICAgICAgIyAnZ2xvYmFsJyBOQU1FICgnLCcgTkFNRSkqCiAgICAgICAgIGdsb2JhbCBhCiAgICAgICAgIGdsb2JhbCBhLCBiCiAgICAgICAgIGdsb2JhbCBvbmUsIHR3bywgdGhyZWUsIGZvdXIsIGZpdmUsIHNpeCwgc2V2ZW4sIGVpZ2h0LCBuaW5lLCB0ZW4KIAotICAgIGRlZiB0ZXN0RXhlYyhzZWxmKToKKyAgICBkZWYgdGVzdF9leGVjKHNlbGYpOgogICAgICAgICAjICdleGVjJyBleHByIFsnaW4nIGV4cHIgWycsJyBleHByXV0KICAgICAgICAgeiA9IE5vbmUKICAgICAgICAgZGVsIHoKQEAgLTU1MSw3ICs3MTgsNyBAQAogICAgICAgICBpZiAoZywgbCkgIT0gKHsnYSc6MX0sIHsnYic6Mn0pOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdleGVjIC4uLiBpbiBnICglcyksIGwgKCVzKScgJShnLGwpKQogCi0gICAgZGVmIHRlc3RBc3NlcnQoc2VsZik6CisgICAgZGVmIHRlc3RfYXNzZXJ0KHNlbGYpOgogICAgICAgICAjIGFzc2VydFRydWVzdG10OiAnYXNzZXJ0JyB0ZXN0IFsnLCcgdGVzdF0KICAgICAgICAgYXNzZXJ0IDEKICAgICAgICAgYXNzZXJ0IDEsIDEKQEAgLTU5MCw3ICs3NTcsNyBAQAogICAgICMjIyBjb21wb3VuZF9zdG10OiBpZl9zdG10IHwgd2hpbGVfc3RtdCB8IGZvcl9zdG10IHwgdHJ5X3N0bXQgfCBmdW5jZGVmIHwgY2xhc3NkZWYKICAgICAjIFRlc3RlZCBiZWxvdwogCi0gICAgZGVmIHRlc3RJZihzZWxmKToKKyAgICBkZWYgdGVzdF9pZihzZWxmKToKICAgICAgICAgIyAnaWYnIHRlc3QgJzonIHN1aXRlICgnZWxpZicgdGVzdCAnOicgc3VpdGUpKiBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgaWYgMTogcGFzcwogICAgICAgICBpZiAxOiBwYXNzCkBAIC02MDMsNyArNzcwLDcgQEAKICAgICAgICAgZWxpZiAwOiBwYXNzCiAgICAgICAgIGVsc2U6IHBhc3MKIAotICAgIGRlZiB0ZXN0V2hpbGUoc2VsZik6CisgICAgZGVmIHRlc3Rfd2hpbGUoc2VsZik6CiAgICAgICAgICMgJ3doaWxlJyB0ZXN0ICc6JyBzdWl0ZSBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgd2hpbGUgMDogcGFzcwogICAgICAgICB3aGlsZSAwOiBwYXNzCkBAIC02MTgsNyArNzg1LDcgQEAKICAgICAgICAgICAgIHggPSAyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMikKIAotICAgIGRlZiB0ZXN0Rm9yKHNlbGYpOgorICAgIGRlZiB0ZXN0X2ZvcihzZWxmKToKICAgICAgICAgIyAnZm9yJyBleHBybGlzdCAnaW4nIGV4cHJsaXN0ICc6JyBzdWl0ZSBbJ2Vsc2UnICc6JyBzdWl0ZV0KICAgICAgICAgZm9yIGkgaW4gMSwgMiwgMzogcGFzcwogICAgICAgICBmb3IgaSwgaiwgayBpbiAoKTogcGFzcwpAQCAtNjQ1LDMwICs4MTIsMzAgQEAKICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFsxLCAyLCAzXSkKIAotICAgIGRlZiB0ZXN0VHJ5KHNlbGYpOgorICAgIGRlZiB0ZXN0X3RyeShzZWxmKToKICAgICAgICAgIyMjIHRyeV9zdG10OiAndHJ5JyAnOicgc3VpdGUgKGV4Y2VwdF9jbGF1c2UgJzonIHN1aXRlKSsgWydlbHNlJyAnOicgc3VpdGVdCiAgICAgICAgICMjIyAgICAgICAgIHwgJ3RyeScgJzonIHN1aXRlICdmaW5hbGx5JyAnOicgc3VpdGUKICAgICAgICAgIyMjIGV4Y2VwdF9jbGF1c2U6ICdleGNlcHQnIFtleHByIFsoJ2FzJyB8ICcsJykgZXhwcl1dCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIDEvMAorICAgICAgICAgICAgMS8wLjAKICAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcGFzcwotICAgICAgICB0cnk6IDEvMAorICAgICAgICB0cnk6IDEvMC4wCiAgICAgICAgIGV4Y2VwdCBFT0ZFcnJvcjogcGFzcwogICAgICAgICBleGNlcHQgVHlwZUVycm9yIGFzIG1zZzogcGFzcwogICAgICAgICBleGNlcHQgUnVudGltZUVycm9yLCBtc2c6IHBhc3MKICAgICAgICAgZXhjZXB0OiBwYXNzCiAgICAgICAgIGVsc2U6IHBhc3MKLSAgICAgICAgdHJ5OiAxLzAKKyAgICAgICAgdHJ5OiAxLzAuMAogICAgICAgICBleGNlcHQgKEVPRkVycm9yLCBUeXBlRXJyb3IsIFplcm9EaXZpc2lvbkVycm9yKTogcGFzcwotICAgICAgICB0cnk6IDEvMAorICAgICAgICB0cnk6IDEvMC4wCiAgICAgICAgIGV4Y2VwdCAoRU9GRXJyb3IsIFR5cGVFcnJvciwgWmVyb0RpdmlzaW9uRXJyb3IpLCBtc2c6IHBhc3MKICAgICAgICAgdHJ5OiBwYXNzCiAgICAgICAgIGZpbmFsbHk6IHBhc3MKIAotICAgIGRlZiB0ZXN0U3VpdGUoc2VsZik6CisgICAgZGVmIHRlc3Rfc3VpdGUoc2VsZik6CiAgICAgICAgICMgc2ltcGxlX3N0bXQgfCBORVdMSU5FIElOREVOVCBORVdMSU5FKiAoc3RtdCBORVdMSU5FKikrIERFREVOVAogICAgICAgICBpZiAxOiBwYXNzCiAgICAgICAgIGlmIDE6CkBAIC02ODMsNyArODUwLDcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICMKIAotICAgIGRlZiB0ZXN0VGVzdChzZWxmKToKKyAgICBkZWYgdGVzdF90ZXN0KHNlbGYpOgogICAgICAgICAjIyMgYW5kX3Rlc3QgKCdvcicgYW5kX3Rlc3QpKgogICAgICAgICAjIyMgYW5kX3Rlc3Q6IG5vdF90ZXN0ICgnYW5kJyBub3RfdGVzdCkqCiAgICAgICAgICMjIyBub3RfdGVzdDogJ25vdCcgbm90X3Rlc3QgfCBjb21wYXJpc29uCkBAIC02OTQsNyArODYxLDcgQEAKICAgICAgICAgaWYgbm90IDEgYW5kIDEgYW5kIDE6IHBhc3MKICAgICAgICAgaWYgMSBhbmQgMSBvciAxIGFuZCAxIGFuZCAxIG9yIG5vdCAxIGFuZCAxOiBwYXNzCiAKLSAgICBkZWYgdGVzdENvbXBhcmlzb24oc2VsZik6CisgICAgZGVmIHRlc3RfY29tcGFyaXNvbihzZWxmKToKICAgICAgICAgIyMjIGNvbXBhcmlzb246IGV4cHIgKGNvbXBfb3AgZXhwcikqCiAgICAgICAgICMjIyBjb21wX29wOiAnPCd8Jz4nfCc9PSd8Jz49J3wnPD0nfCc8Pid8JyE9J3wnaW4nfCdub3QnICdpbid8J2lzJ3wnaXMnICdub3QnCiAgICAgICAgIGlmIDE6IHBhc3MKQEAgLTcxMCw0MCArODc3LDU2IEBACiAgICAgICAgIGlmIDEgaW4gKCk6IHBhc3MKICAgICAgICAgaWYgMSBub3QgaW4gKCk6IHBhc3MKICAgICAgICAgaWYgMSA8IDEgPiAxID09IDEgPj0gMSA8PSAxICE9IDEgaW4gMSBub3QgaW4gMSBpcyAxIGlzIG5vdCAxOiBwYXNzCi0gICAgICAgICMgU2lsZW5jZSBQeTNrIHdhcm5pbmcKLSAgICAgICAgaWYgZXZhbCgnMSA8PiAxJyk6IHBhc3MKLSAgICAgICAgaWYgZXZhbCgnMSA8IDEgPiAxID09IDEgPj0gMSA8PSAxIDw+IDEgIT0gMSBpbiAxIG5vdCBpbiAxIGlzIDEgaXMgbm90IDEnKTogcGFzcworICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKCc8PiBub3Qgc3VwcG9ydGVkIGluIDMueDsgdXNlICE9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIGlmIGV2YWwoJzEgPD4gMScpOiBwYXNzCisgICAgICAgIHdpdGggY2hlY2tfcHkza193YXJuaW5ncygoJzw+IG5vdCBzdXBwb3J0ZWQgaW4gMy54OyB1c2UgIT0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgaWYgZXZhbCgnMSA8IDEgPiAxID09IDEgPj0gMSA8PSAxIDw+IDEgIT0gMSBpbiAxIG5vdCBpbiAxIGlzIDEgaXMgbm90IDEnKTogcGFzcworICAgICAgICBpZiBzeXMucHkza3dhcm5pbmc6CisgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2Vycm9yJywgY2F0ZWdvcnk9RGVwcmVjYXRpb25XYXJuaW5nKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRGVwcmVjYXRpb25XYXJuaW5nKSBhcyBjbToKKyAgICAgICAgICAgICAgICAgICAgY29tcGlsZSgnMSA8PiAxJywgJzx0ZXN0IHN0cmluZz4nLCAnZXZhbCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignPD4gbm90IHN1cHBvcnRlZCBpbiAzLng7IHVzZSAhPScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoY20uZXhjZXB0aW9uKSkKIAotICAgIGRlZiB0ZXN0QmluYXJ5TWFza09wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9iaW5hcnlfbWFza19vcHMoc2VsZik6CiAgICAgICAgIHggPSAxICYgMQogICAgICAgICB4ID0gMSBeIDEKICAgICAgICAgeCA9IDEgfCAxCiAKLSAgICBkZWYgdGVzdFNoaWZ0T3BzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3NoaWZ0X29wcyhzZWxmKToKICAgICAgICAgeCA9IDEgPDwgMQogICAgICAgICB4ID0gMSA+PiAxCiAgICAgICAgIHggPSAxIDw8IDEgPj4gMQogCi0gICAgZGVmIHRlc3RBZGRpdGl2ZU9wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9hZGRpdGl2ZV9vcHMoc2VsZik6CiAgICAgICAgIHggPSAxCiAgICAgICAgIHggPSAxICsgMQogICAgICAgICB4ID0gMSAtIDEgLSAxCiAgICAgICAgIHggPSAxIC0gMSArIDEgLSAxICsgMQogCi0gICAgZGVmIHRlc3RNdWx0aXBsaWNhdGl2ZU9wcyhzZWxmKToKKyAgICBkZWYgdGVzdF9tdWx0aXBsaWNhdGl2ZV9vcHMoc2VsZik6CiAgICAgICAgIHggPSAxICogMQotICAgICAgICB4ID0gMSAvIDEKKyAgICAgICAgd2l0aCBjaGVja19weTNrX3dhcm5pbmdzKCgnY2xhc3NpYyBpbnQgZGl2aXNpb24nLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHggPSAxIC8gMQorICAgICAgICB4ID0gMSAvIDEuMAogICAgICAgICB4ID0gMSAlIDEKLSAgICAgICAgeCA9IDEgLyAxICogMSAlIDEKKyAgICAgICAgd2l0aCBjaGVja19weTNrX3dhcm5pbmdzKCgnY2xhc3NpYyBpbnQgZGl2aXNpb24nLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHggPSAxIC8gMSAqIDEgJSAxCisgICAgICAgIHggPSAxIC8gMS4wICogMSAlIDEKIAotICAgIGRlZiB0ZXN0VW5hcnlPcHMoc2VsZik6CisgICAgZGVmIHRlc3RfdW5hcnlfb3BzKHNlbGYpOgogICAgICAgICB4ID0gKzEKICAgICAgICAgeCA9IC0xCiAgICAgICAgIHggPSB+MQogICAgICAgICB4ID0gfjEgXiAxICYgMSB8IDEgJiAxIF4gLTEKLSAgICAgICAgeCA9IC0xKjEvMSArIDEqMSAtIC0tLTEqMQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKCdjbGFzc2ljIGludCBkaXZpc2lvbicsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgeCA9IC0xKjEvMSArIDEqMSAtIC0tLTEqMQorICAgICAgICB4ID0gLTEqMS8xLjAgKyAxKjEgLSAtLS0xKjEKIAotICAgIGRlZiB0ZXN0U2VsZWN0b3JzKHNlbGYpOgorICAgIGRlZiB0ZXN0X3NlbGVjdG9ycyhzZWxmKToKICAgICAgICAgIyMjIHRyYWlsZXI6ICcoJyBbdGVzdGxpc3RdICcpJyB8ICdbJyBzdWJzY3JpcHQgJ10nIHwgJy4nIE5BTUUKICAgICAgICAgIyMjIHN1YnNjcmlwdDogZXhwciB8IFtleHByXSAnOicgW2V4cHJdCiAKQEAgLTc3MCwxMCArOTUzLDEwIEBACiAgICAgICAgIGRbMSwyXSA9IDMKICAgICAgICAgZFsxLDIsM10gPSA0CiAgICAgICAgIEwgPSBsaXN0KGQpCi0gICAgICAgIEwuc29ydCgpCisgICAgICAgIEwuc29ydChrZXk9bGFtYmRhIHg6ICh0eXBlKHgpLl9fbmFtZV9fLCB4KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoTCksICdbMSwgKDEsKSwgKDEsIDIpLCAoMSwgMiwgMyldJykKIAotICAgIGRlZiB0ZXN0QXRvbXMoc2VsZik6CisgICAgZGVmIHRlc3RfYXRvbXMoc2VsZik6CiAgICAgICAgICMjIyBhdG9tOiAnKCcgW3Rlc3RsaXN0XSAnKScgfCAnWycgW3Rlc3RsaXN0XSAnXScgfCAneycgW2RpY3RtYWtlcl0gJ30nIHwgJ2AnIHRlc3RsaXN0ICdgJyB8IE5BTUUgfCBOVU1CRVIgfCBTVFJJTkcKICAgICAgICAgIyMjIGRpY3RvcnNldG1ha2VyOiAodGVzdCAnOicgdGVzdCAoJywnIHRlc3QgJzonIHRlc3QpKiBbJywnXSkgfCAodGVzdCAoJywnIHRlc3QpKiBbJywnXSkKIApAQCAtODAwLDEwICs5ODMsMTAgQEAKICAgICAgICAgeCA9IHsnb25lJywgJ3R3bycsICd0aHJlZSd9CiAgICAgICAgIHggPSB7MiwgMywgNCx9CiAKLSAgICAgICAgIyBTaWxlbmNlIFB5M2sgd2FybmluZwotICAgICAgICB4ID0gZXZhbCgnYHhgJykKLSAgICAgICAgeCA9IGV2YWwoJ2AxIG9yIDIgb3IgM2AnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwoJ2AxLDJgJyksICcoMSwgMiknKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKCdiYWNrcXVvdGUgbm90IHN1cHBvcnRlZCcsIFN5bnRheFdhcm5pbmcpKToKKyAgICAgICAgICAgIHggPSBldmFsKCdgeGAnKQorICAgICAgICAgICAgeCA9IGV2YWwoJ2AxIG9yIDIgb3IgM2AnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCdgMSwyYCcpLCAnKDEsIDIpJykKIAogICAgICAgICB4ID0geAogICAgICAgICB4ID0gJ3gnCkBAIC04MTMsNyArOTk2LDcgQEAKICAgICAjIyMgdGVzdGxpc3Q6IHRlc3QgKCcsJyB0ZXN0KSogWycsJ10KICAgICAjIFRoZXNlIGhhdmUgYmVlbiBleGVyY2lzZWQgZW5vdWdoIGFib3ZlCiAKLSAgICBkZWYgdGVzdENsYXNzZGVmKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NsYXNzZGVmKHNlbGYpOgogICAgICAgICAjICdjbGFzcycgTkFNRSBbJygnIFt0ZXN0bGlzdF0gJyknXSAnOicgc3VpdGUKICAgICAgICAgY2xhc3MgQjogcGFzcwogICAgICAgICBjbGFzcyBCMigpOiBwYXNzCkBAIC04MjQsNiArMTAwNyw3IEBACiAgICAgICAgICAgICBkZWYgbWV0aDEoc2VsZik6IHBhc3MKICAgICAgICAgICAgIGRlZiBtZXRoMihzZWxmLCBhcmcpOiBwYXNzCiAgICAgICAgICAgICBkZWYgbWV0aDMoc2VsZiwgYTEsIGEyKTogcGFzcworCiAgICAgICAgICMgZGVjb3JhdG9yOiAnQCcgZG90dGVkX25hbWUgWyAnKCcgW2FyZ2xpc3RdICcpJyBdIE5FV0xJTkUKICAgICAgICAgIyBkZWNvcmF0b3JzOiBkZWNvcmF0b3IrCiAgICAgICAgICMgZGVjb3JhdGVkOiBkZWNvcmF0b3JzIChjbGFzc2RlZiB8IGZ1bmNkZWYpCkBAIC04MzUsMTQgKzEwMTksMTQgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChHLmRlY29yYXRlZCwgVHJ1ZSkKIAotICAgIGRlZiB0ZXN0RGljdGNvbXBzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2RpY3Rjb21wcyhzZWxmKToKICAgICAgICAgIyBkaWN0b3JzZXRtYWtlcjogKCAodGVzdCAnOicgdGVzdCAoY29tcF9mb3IgfAogICAgICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJywnIHRlc3QgJzonIHRlc3QpKiBbJywnXSkpIHwKICAgICAgICAgIyAgICAgICAgICAgICAgICAgICAodGVzdCAoY29tcF9mb3IgfCAoJywnIHRlc3QpKiBbJywnXSkpICkKICAgICAgICAgbnVtcyA9IFsxLCAyLCAzXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHtpOmkrMSBmb3IgaSBpbiBudW1zfSwgezE6IDIsIDI6IDMsIDM6IDR9KQogCi0gICAgZGVmIHRlc3RMaXN0Y29tcHMoc2VsZik6CisgICAgZGVmIHRlc3RfbGlzdGNvbXBzKHNlbGYpOgogICAgICAgICAjIGxpc3QgY29tcHJlaGVuc2lvbiB0ZXN0cwogICAgICAgICBudW1zID0gWzEsIDIsIDMsIDQsIDVdCiAgICAgICAgIHN0cnMgPSBbIkFwcGxlIiwgIkJhbmFuYSIsICJDb2NvbnV0Il0KQEAgLTg2NSw3ICsxMDQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBbWzFdLCBbMSwgMV0sIFsxLCAyLCA0XSwgWzEsIDMsIDksIDI3XSwgWzEsIDQsIDE2LCA2NCwgMjU2XV0pCiAKICAgICAgICAgZGVmIHRlc3RfaW5fZnVuYyhsKToKLSAgICAgICAgICAgIHJldHVybiBbTm9uZSA8IHggPCAzIGZvciB4IGluIGwgaWYgeCA+IDJdCisgICAgICAgICAgICByZXR1cm4gWzAgPCB4IDwgMyBmb3IgeCBpbiBsIGlmIHggPiAyXQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9pbl9mdW5jKG51bXMpLCBbRmFsc2UsIEZhbHNlLCBGYWxzZV0pCiAKQEAgLTkwNSw3ICsxMDg5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCBbKCdCb2VpbmcnLCAnQWlybGluZXInKSwgKCdCb2VpbmcnLCAnRW5naW5lJyksICgnRm9yZCcsICdFbmdpbmUnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdNYWNkb25hbGRzJywgJ0NoZWVzZWJ1cmdlcicpXSkKIAotICAgIGRlZiB0ZXN0R2VuZXhwcyhzZWxmKToKKyAgICBkZWYgdGVzdF9nZW5leHBzKHNlbGYpOgogICAgICAgICAjIGdlbmVyYXRvciBleHByZXNzaW9uIHRlc3RzCiAgICAgICAgIGcgPSAoW3ggZm9yIHggaW4gcmFuZ2UoMTApXSBmb3IgeCBpbiByYW5nZSgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLm5leHQoKSwgW3ggZm9yIHggaW4gcmFuZ2UoMTApXSkKQEAgLTk0MCw3ICsxMTI0LDcgQEAKICAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmb28oeCBmb3IgeCBpbiByYW5nZSgxMCksIDEwMCkiKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImZvbygxMDAsIHggZm9yIHggaW4gcmFuZ2UoMTApKSIpCiAKLSAgICBkZWYgdGVzdENvbXByZWhlbnNpb25TcGVjaWFscyhzZWxmKToKKyAgICBkZWYgdGVzdF9jb21wcmVoZW5zaW9uX3NwZWNpYWxzKHNlbGYpOgogICAgICAgICAjIHRlc3QgZm9yIG91dG1vc3QgaXRlcmFibGUgcHJlY29tcHV0YXRpb24KICAgICAgICAgeCA9IDEwOyBnID0gKGkgZm9yIGkgaW4gcmFuZ2UoeCkpOyB4ID0gNQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsaXN0KGcpKSwgMTApCkBAIC05NzksMTEgKzExNjMsMTEgQEAKICAgICAgICAgd2l0aCBtYW5hZ2VyKCkgYXMgeCwgbWFuYWdlcigpOgogICAgICAgICAgICAgcGFzcwogCi0gICAgZGVmIHRlc3RJZkVsc2VFeHByKHNlbGYpOgorICAgIGRlZiB0ZXN0X2lmX2Vsc2VfZXhwcihzZWxmKToKICAgICAgICAgIyBUZXN0IGlmZWxzZSBleHByZXNzaW9ucyBpbiB2YXJpb3VzIGNhc2VzCiAgICAgICAgIGRlZiBfY2hlY2tldmFsKG1zZywgcmV0KToKICAgICAgICAgICAgICJoZWxwZXIgdG8gY2hlY2sgdGhhdCBldmFsdWF0aW9uIG9mIGV4cHJlc3Npb25zIGlzIGRvbmUgY29ycmVjdGx5IgotICAgICAgICAgICAgcHJpbnQgeAorICAgICAgICAgICAgcHJpbnQobXNnKQogICAgICAgICAgICAgcmV0dXJuIHJldAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyB4KCkgZm9yIHggaW4gbGFtYmRhOiBUcnVlLCBsYW1iZGE6IEZhbHNlIGlmIHgoKSBdLCBbVHJ1ZV0pCkBAIC0xMDAyLDcgKzExODYsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCg2ICsgMSBpZiAxIGVsc2UgMiksIDcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKDYgLSAxIGlmIDEgZWxzZSAyKSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoNiAqIDIgaWYgMSBlbHNlIDQpLCAxMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoNiAvIDIgaWYgMSBlbHNlIDMpLCAzKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKCdjbGFzc2ljIGludCBkaXZpc2lvbicsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoNiAvIDIgaWYgMSBlbHNlIDMpLCAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCg2IDwgNCBpZiAwIGVsc2UgMiksIDIpCiAKICAgICBkZWYgdGVzdF9wYXJlbl9ldmFsdWF0aW9uKHNlbGYpOgpAQCAtMTAxNSwxMyArMTIwMCw3IEBACiAKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIHdpdGggY2hlY2tfcHkza193YXJuaW5ncygKLSAgICAgICAgICAgICgiYmFja3F1b3RlIG5vdCBzdXBwb3J0ZWQiLCBTeW50YXhXYXJuaW5nKSwKLSAgICAgICAgICAgICgidHVwbGUgcGFyYW1ldGVyIHVucGFja2luZyBoYXMgYmVlbiByZW1vdmVkIiwgU3ludGF4V2FybmluZyksCi0gICAgICAgICAgICAoInBhcmVudGhlc2l6ZWQgYXJndW1lbnQgbmFtZXMgYXJlIGludmFsaWQiLCBTeW50YXhXYXJuaW5nKSwKLSAgICAgICAgICAgICgiY2xhc3NpYyBpbnQgZGl2aXNpb24iLCBEZXByZWNhdGlvbldhcm5pbmcpLAotICAgICAgICAgICAgKCIuKyBub3Qgc3VwcG9ydGVkIGluIDMueCIsIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICBydW5fdW5pdHRlc3QoVG9rZW5UZXN0cywgR3JhbW1hclRlc3RzKQorICAgIHJ1bl91bml0dGVzdChUb2tlblRlc3RzLCBHcmFtbWFyVGVzdHMpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weSBiL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQppbmRleCA1MDI1YjkxLi5jZGIxYWY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2d6aXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CkBAIC02LDYgKzYsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgaW8KIGltcG9ydCBzdHJ1Y3QKK2ltcG9ydCB0ZW1wZmlsZQogZ3ppcCA9IHRlc3Rfc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdnemlwJykKIAogZGF0YTEgPSAiIiIgIGludCBsZW5ndGg9REVGQVVMVEFMTE9DLCBlcnIgPSBaX09LOwpAQCAtMzMxLDYgKzMzMiwzMiBAQAogICAgICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKGZpbGVvYmo9ZiwgbW9kZT0idyIpIGFzIGc6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLm5hbWUsICIiKQogCisgICAgZGVmIHRlc3RfZmlsZW9ial9mcm9tX2lvX29wZW4oc2VsZik6CisgICAgICAgIGZkID0gb3Mub3BlbihzZWxmLmZpbGVuYW1lLCBvcy5PX1dST05MWSB8IG9zLk9fQ1JFQVQpCisgICAgICAgIHdpdGggaW8ub3BlbihmZCwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlb2JqPWYsIG1vZGU9InciKSBhcyBnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5uYW1lLCAiIikKKworICAgIGRlZiB0ZXN0X2ZpbGVvYmpfbW9kZShzZWxmKToKKyAgICAgICAgZ3ppcC5HemlwRmlsZShzZWxmLmZpbGVuYW1lLCAid2IiKS5jbG9zZSgpCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCAicitiIikgYXMgZjoKKyAgICAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlb2JqPWYsIG1vZGU9J3InKSBhcyBnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5tb2RlLCBnemlwLlJFQUQpCisgICAgICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW9iaj1mLCBtb2RlPSd3JykgYXMgZzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcubW9kZSwgZ3ppcC5XUklURSkKKyAgICAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlb2JqPWYsIG1vZGU9J2EnKSBhcyBnOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5tb2RlLCBnemlwLldSSVRFKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKToKKyAgICAgICAgICAgICAgICBnemlwLkd6aXBGaWxlKGZpbGVvYmo9ZiwgbW9kZT0neicpCisgICAgICAgIGZvciBtb2RlIGluICJyYiIsICJyK2IiOgorICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZW5hbWUsIG1vZGUpIGFzIGY6CisgICAgICAgICAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKGZpbGVvYmo9ZikgYXMgZzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnLm1vZGUsIGd6aXAuUkVBRCkKKyAgICAgICAgZm9yIG1vZGUgaW4gIndiIiwgImFiIjoKKyAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVuYW1lLCBtb2RlKSBhcyBmOgorICAgICAgICAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlb2JqPWYpIGFzIGc6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5tb2RlLCBnemlwLldSSVRFKQorCiAgICAgZGVmIHRlc3RfcmVhZF93aXRoX2V4dHJhKHNlbGYpOgogICAgICAgICAjIEd6aXAgZGF0YSB3aXRoIGFuIGV4dHJhIGZpZWxkCiAgICAgICAgIGd6ZGF0YSA9IChiJ1x4MWZceDhiXHgwOFx4MDRceGIyXHgxN2NRXHgwMlx4ZmYnCkBAIC0zMzksNiArMzY2LDE0IEBACiAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlb2JqPWlvLkJ5dGVzSU8oZ3pkYXRhKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGInVGVzdCcpCiAKKyAgICBkZWYgdGVzdF9maWxlb2JqX3dpdGhvdXRfbmFtZShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMzMwMzg6IEd6aXBGaWxlIHNob3VsZCBub3QgYXNzdW1lIHRoYXQgZmlsZSBvYmplY3RzIHRoYXQgaGF2ZQorICAgICAgICAjIGEgLm5hbWUgYXR0cmlidXRlIHVzZSBhIG5vbi1Ob25lIHZhbHVlLgorICAgICAgICB3aXRoIHRlbXBmaWxlLlNwb29sZWRUZW1wb3JhcnlGaWxlKCkgYXMgZjoKKyAgICAgICAgICAgIHdpdGggZ3ppcC5HemlwRmlsZShmaWxlb2JqPWYsIG1vZGU9J3diJykgYXMgYXJjaGl2ZToKKyAgICAgICAgICAgICAgICBhcmNoaXZlLndyaXRlKGInZGF0YScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhcmNoaXZlLm5hbWUsICcnKQorCiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6CiAgICAgdGVzdF9zdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0R3ppcCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5IGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CmluZGV4IDQ3MWViYjQuLmI4ZDYzODggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKQEAgLTM3MSwyNSArMzcxLDI1IEBACiAgICAgICAgIGRhdGEgPSBzbWFsbGVzdF9kYXRhKjIwMDAwMAogICAgICAgICBleHBlY3RlZF9oYXNoID0gaGFzaGxpYi5zaGExKGRhdGEqbnVtX3RocmVhZHMpLmhleGRpZ2VzdCgpCiAKLSAgICAgICAgZGVmIGhhc2hfaW5fY2h1bmtzKGNodW5rX3NpemUsIGV2ZW50KToKKyAgICAgICAgZGVmIGhhc2hfaW5fY2h1bmtzKGNodW5rX3NpemUpOgogICAgICAgICAgICAgaW5kZXggPSAwCiAgICAgICAgICAgICB3aGlsZSBpbmRleCA8IGxlbihkYXRhKToKICAgICAgICAgICAgICAgICBoYXNoZXIudXBkYXRlKGRhdGFbaW5kZXg6aW5kZXgrY2h1bmtfc2l6ZV0pCiAgICAgICAgICAgICAgICAgaW5kZXggKz0gY2h1bmtfc2l6ZQotICAgICAgICAgICAgZXZlbnQuc2V0KCkKIAotICAgICAgICBldmVudHMgPSBbXQorICAgICAgICB0aHJlYWRzID0gW10KICAgICAgICAgZm9yIHRocmVhZG51bSBpbiB4cmFuZ2UobnVtX3RocmVhZHMpOgogICAgICAgICAgICAgY2h1bmtfc2l6ZSA9IGxlbihkYXRhKSAvLyAoMTAqKnRocmVhZG51bSkKICAgICAgICAgICAgIGFzc2VydCBjaHVua19zaXplID4gMAogICAgICAgICAgICAgYXNzZXJ0IGNodW5rX3NpemUgJSBsZW4oc21hbGxlc3RfZGF0YSkgPT0gMAotICAgICAgICAgICAgZXZlbnQgPSB0aHJlYWRpbmcuRXZlbnQoKQotICAgICAgICAgICAgZXZlbnRzLmFwcGVuZChldmVudCkKLSAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWhhc2hfaW5fY2h1bmtzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShjaHVua19zaXplLCBldmVudCkpLnN0YXJ0KCkKKyAgICAgICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PWhhc2hfaW5fY2h1bmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShjaHVua19zaXplLCkpCisgICAgICAgICAgICB0aHJlYWRzLmFwcGVuZCh0aHJlYWQpCiAKLSAgICAgICAgZm9yIGV2ZW50IGluIGV2ZW50czoKLSAgICAgICAgICAgIGV2ZW50LndhaXQoKQorICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVhZHM6CisgICAgICAgICAgICB0aHJlYWQuc3RhcnQoKQorICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVhZHM6CisgICAgICAgICAgICB0aHJlYWQuam9pbigpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9oYXNoLCBoYXNoZXIuaGV4ZGlnZXN0KCkpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQppbmRleCA3ZThiMDU4Li40NGZmYWM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CkBAIC04NjAsNyArODYwLDcgQEAKICAgICAgICAgaW1wb3J0IHNzbAogICAgICAgICB0ZXN0X3N1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQogICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoJ3NlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0Jyk6Ci0gICAgICAgICAgICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFMpCiAgICAgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKICAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRfc2VsZnNpZ25lZF9weXRob250ZXN0ZG90bmV0KQogICAgICAgICAgICAgaCA9IGh0dHBsaWIuSFRUUFNDb25uZWN0aW9uKCdzZWxmLXNpZ25lZC5weXRob250ZXN0Lm5ldCcsIDQ0MywgY29udGV4dD1jb250ZXh0KQpAQCAtODc0LDcgKzg3NCw3IEBACiAgICAgICAgIGltcG9ydCBzc2wKICAgICAgICAgdGVzdF9zdXBwb3J0LnJlcXVpcmVzKCduZXR3b3JrJykKICAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCdzZWxmLXNpZ25lZC5weXRob250ZXN0Lm5ldCcpOgotICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTKQogICAgICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECiAgICAgICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJUX2xvY2FsaG9zdCkKICAgICAgICAgICAgIGggPSBodHRwbGliLkhUVFBTQ29ubmVjdGlvbignc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQnLCA0NDMsIGNvbnRleHQ9Y29udGV4dCkKQEAgLTg5NSw3ICs4OTUsNyBAQAogICAgICAgICAjIFRoZSAodmFsaWQpIGNlcnQgdmFsaWRhdGVzIHRoZSBIVFRQIGhvc3RuYW1lCiAgICAgICAgIGltcG9ydCBzc2wKICAgICAgICAgc2VydmVyID0gc2VsZi5tYWtlX3NlcnZlcihDRVJUX2xvY2FsaG9zdCkKLSAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFMpCiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAogICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJUX2xvY2FsaG9zdCkKICAgICAgICAgaCA9IGh0dHBsaWIuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0KQpAQCAtOTA3LDcgKzkwNyw3IEBACiAgICAgICAgICMgVGhlICh2YWxpZCkgY2VydCBkb2Vzbid0IHZhbGlkYXRlIHRoZSBIVFRQIGhvc3RuYW1lCiAgICAgICAgIGltcG9ydCBzc2wKICAgICAgICAgc2VydmVyID0gc2VsZi5tYWtlX3NlcnZlcihDRVJUX2Zha2Vob3N0bmFtZSkKLSAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFMpCiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAogICAgICAgICBjb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQogICAgICAgICBjb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJUX2Zha2Vob3N0bmFtZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkgYi9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CmluZGV4IDExZjBkNWQuLjkzODA3YzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQpAQCAtNjYsNiArNjYsNyBAQAogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIHNlbGYuc2VydmVyLnNodXRkb3duKCkKKyAgICAgICAgc2VsZi5qb2luKCkKIAogCiBjbGFzcyBCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weQppbmRleCA0MzI1MDA1Li45YjFkMjYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydC5weQpAQCAtNDAwLDIwICs0MDAsMTkgQEAKICAgICBkZWYgdGVzdF9yZXBsYWNlX3BhcmVudF9pbl9zeXNfbW9kdWxlcyhzZWxmKToKICAgICAgICAgZGlyX25hbWUgPSBvcy5wYXRoLmFic3BhdGgoVEVTVEZOKQogICAgICAgICBvcy5ta2RpcihkaXJfbmFtZSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcGtnX2RpciA9IG9zLnBhdGguam9pbihkaXJfbmFtZSwgJ3NhJykKLSAgICAgICAgICAgIG9zLm1rZGlyKHBrZ19kaXIpCi0gICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHBrZ19kaXIsICdfX2luaXRfXy5weScpLCAndycpIGFzIGluaXRfZmlsZToKLSAgICAgICAgICAgICAgICBpbml0X2ZpbGUud3JpdGUoImltcG9ydCB2MSIpCi0gICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHBrZ19kaXIsICd2MS5weScpLCAndycpIGFzIHYxX2ZpbGU6Ci0gICAgICAgICAgICAgICAgdjFfZmlsZS53cml0ZSgiaW1wb3J0IHN5czsiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3lzLm1vZHVsZXNbJ3NhJ10gPSBzeXMubW9kdWxlc1tfX25hbWVfX107IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzYSIpCi0gICAgICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgZGlyX25hbWUpCi0gICAgICAgICAgICAjIGEgc2VnZmF1bHQgbWVhbnMgdGhlIHRlc3QgZmFpbGVkIQotICAgICAgICAgICAgaW1wb3J0IHNhCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBybXRyZWUoZGlyX25hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChybXRyZWUsIGRpcl9uYW1lKQorICAgICAgICBwa2dfZGlyID0gb3MucGF0aC5qb2luKGRpcl9uYW1lLCAnc2EnKQorICAgICAgICBvcy5ta2Rpcihwa2dfZGlyKQorICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKHBrZ19kaXIsICdfX2luaXRfXy5weScpLCAndycpIGFzIGluaXRfZmlsZToKKyAgICAgICAgICAgIGluaXRfZmlsZS53cml0ZSgiaW1wb3J0IHYxIikKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihwa2dfZGlyLCAndjEucHknKSwgJ3cnKSBhcyB2MV9maWxlOgorICAgICAgICAgICAgdjFfZmlsZS53cml0ZSgiaW1wb3J0IHN5czsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzeXMubW9kdWxlc1snc2EnXSA9IHN5cy5tb2R1bGVzW19fbmFtZV9fXTsiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgc2EiKQorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgZGlyX25hbWUpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzeXMucGF0aC5wb3AsIDApCisgICAgICAgICMgYSBzZWdmYXVsdCBtZWFucyB0aGUgdGVzdCBmYWlsZWQhCisgICAgICAgIGltcG9ydCBzYQogCiAgICAgZGVmIHRlc3RfZnJvbWxpc3RfdHlwZShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgpAQCAtNTQ5LDcgKzU0OCw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG9zLmxpc3RkaXIodW5jKQogICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyBpbiAoZXJybm8uRVBFUk0sIGVycm5vLkVBQ0NFUyk6CisgICAgICAgICAgICBpZiBlLmVycm5vIGluIChlcnJuby5FUEVSTSwgZXJybm8uRUFDQ0VTLCBlcnJuby5FTk9FTlQpOgogICAgICAgICAgICAgICAgICMgU2VlIGlzc3VlICMxNTMzOAogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBhY2Nlc3MgYWRtaW5pc3RyYXRpdmUgc2hhcmUgJXIiICUgKHVuYywpKQogICAgICAgICAgICAgcmFpc2UKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0X21hZ2ljLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRfbWFnaWMucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdlMzUwZQotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0X21hZ2ljLnB5CkBAIC0wLDAgKzEsNTggQEAKK2ltcG9ydCBpbXAKK2ltcG9ydCBzeXMKKworaW1wb3J0IHVuaXR0ZXN0CisKKyMgTm90ZToKKyMgICBJbiBQeXRob24gMy54LCB0aGlzIHRlc3QgY2FzZSBpcyBpbiBMaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKKworY2xhc3MgTWFnaWNOdW1iZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCByZWxlYXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHJlbGF0aW5nIHRvIHByZWNvbXBpbGVkIGJ5dGVjb2RlCisgICAgIiIiCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoCisgICAgICAgIHN5cy52ZXJzaW9uX2luZm8ucmVsZWFzZWxldmVsIGluICgnY2FuZGlkYXRlJywgJ2ZpbmFsJyksCisgICAgICAgICdvbmx5IGFwcGxpZXMgdG8gY2FuZGlkYXRlIG9yIGZpbmFsIHB5dGhvbiByZWxlYXNlIGxldmVscycKKyAgICApCisgICAgZGVmIHRlc3RfbWFnaWNfbnVtYmVyKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgRWFjaCBweXRob24gbWlub3IgcmVsZWFzZSBzaG91bGQgZ2VuZXJhbGx5IGhhdmUgYSBNQUdJQ19OVU1CRVIKKyAgICAgICAgdGhhdCBkb2VzIG5vdCBjaGFuZ2Ugb25jZSB0aGUgcmVsZWFzZSByZWFjaGVzIGNhbmRpZGF0ZSBzdGF0dXMuCisKKyAgICAgICAgT25jZSBhIHJlbGVhc2UgcmVhY2hlcyBjYW5kaWRhdGUgc3RhdHVzLCB0aGUgdmFsdWUgb2YgdGhlIGNvbnN0YW50CisgICAgICAgIEVYUEVDVEVEX01BR0lDX05VTUJFUiBpbiB0aGlzIHRlc3Qgc2hvdWxkIGJlIGNoYW5nZWQuCisgICAgICAgIFRoaXMgdGVzdCB3aWxsIHRoZW4gY2hlY2sgdGhhdCB0aGUgYWN0dWFsIE1BR0lDX05VTUJFUiBtYXRjaGVzCisgICAgICAgIHRoZSBleHBlY3RlZCB2YWx1ZSBmb3IgdGhlIHJlbGVhc2UuCisKKyAgICAgICAgSW4gZXhjZXB0aW9uYWwgY2FzZXMsIGl0IG1heSBiZSByZXF1aXJlZCB0byBjaGFuZ2UgdGhlIE1BR0lDX05VTUJFUgorICAgICAgICBmb3IgYSBtYWludGVuYW5jZSByZWxlYXNlLiBJbiB0aGlzIGNhc2UgdGhlIGNoYW5nZSBzaG91bGQgYmUKKyAgICAgICAgZGlzY3Vzc2VkIGluIHB5dGhvbi1kZXYuIElmIGEgY2hhbmdlIGlzIHJlcXVpcmVkLCBjb21tdW5pdHkKKyAgICAgICAgc3Rha2Vob2xkZXJzIHN1Y2ggYXMgT1MgcGFja2FnZSBtYWludGFpbmVycyBtdXN0IGJlIG5vdGlmaWVkCisgICAgICAgIGluIGFkdmFuY2UuIFN1Y2ggZXhjZXB0aW9uYWwgcmVsZWFzZXMgd2lsbCB0aGVuIHJlcXVpcmUgYW4KKyAgICAgICAgYWRqdXN0bWVudCB0byB0aGlzIHRlc3QgY2FzZS4KKyAgICAgICAgIiIiCisgICAgICAgIEVYUEVDVEVEX01BR0lDX05VTUJFUiA9IDYyMjExCisgICAgICAgIHJhd19tYWdpYyA9IGltcC5nZXRfbWFnaWMoKQorICAgICAgICBhY3R1YWwgPSAob3JkKHJhd19tYWdpY1sxXSkgPDwgOCkgKyBvcmQocmF3X21hZ2ljWzBdKQorCisgICAgICAgIG1zZyA9ICgKKyAgICAgICAgICAgICJUbyBhdm9pZCBicmVha2luZyBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3aXRoIGNhY2hlZCBieXRlY29kZSAiCisgICAgICAgICAgICAiZmlsZXMgdGhhdCBjYW4ndCBiZSBhdXRvbWF0aWNhbGx5IHJlZ2VuZXJhdGVkIGJ5IHRoZSBjdXJyZW50ICIKKyAgICAgICAgICAgICJ1c2VyLCBjYW5kaWRhdGUgYW5kIGZpbmFsIHJlbGVhc2VzIHJlcXVpcmUgdGhlIGN1cnJlbnQgICIKKyAgICAgICAgICAgICJpbXBvcnRsaWIudXRpbC5NQUdJQ19OVU1CRVIgdG8gbWF0Y2ggdGhlIGV4cGVjdGVkICIKKyAgICAgICAgICAgICJtYWdpYyBudW1iZXIgaW4gdGhpcyB0ZXN0LiBTZXQgdGhlIGV4cGVjdGVkICIKKyAgICAgICAgICAgICJtYWdpYyBudW1iZXIgaW4gdGhpcyB0ZXN0IHRvIHRoZSBjdXJyZW50IE1BR0lDX05VTUJFUiB0byAiCisgICAgICAgICAgICAiY29udGludWUgd2l0aCB0aGUgcmVsZWFzZS5cblxuIgorICAgICAgICAgICAgIkNoYW5naW5nIHRoZSBNQUdJQ19OVU1CRVIgZm9yIGEgbWFpbnRlbmFuY2UgcmVsZWFzZSAiCisgICAgICAgICAgICAicmVxdWlyZXMgZGlzY3Vzc2lvbiBpbiBweXRob24tZGV2IGFuZCBub3RpZmljYXRpb24gb2YgIgorICAgICAgICAgICAgImNvbW11bml0eSBzdGFrZWhvbGRlcnMuIgorICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVhQRUNURURfTUFHSUNfTlVNQkVSLCBhY3R1YWwpIywgbXNnKQorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CisgICAgcnVuX3VuaXR0ZXN0KE1hZ2ljTnVtYmVyVGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weSBiL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQppbmRleCBlY2MwNGNiLi41MDYzYTMwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CkBAIC01LDEwICs1LDExIEBACiBpbXBvcnQgaW5zcGVjdAogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgdGV4dHdyYXAKIGZyb20gVXNlckxpc3QgaW1wb3J0IFVzZXJMaXN0CiBmcm9tIFVzZXJEaWN0IGltcG9ydCBVc2VyRGljdAogCi1mcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QsIGNoZWNrX3B5M2tfd2FybmluZ3MsIGhhdmVfdW5pY29kZQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY2hlY2tfcHkza193YXJuaW5ncywgaGF2ZV91bmljb2RlCiAKIHdpdGggY2hlY2tfcHkza193YXJuaW5ncygKICAgICAgICAgKCJ0dXBsZSBwYXJhbWV0ZXIgdW5wYWNraW5nIGhhcyBiZWVuIHJlbW92ZWQiLCBTeW50YXhXYXJuaW5nKSwKQEAgLTIwOCw3ICsyMDksNyBAQAogCiAgICAgZGVmIHNvdXJjZXJhbmdlKHNlbGYsIHRvcCwgYm90dG9tKToKICAgICAgICAgbGluZXMgPSBzZWxmLnNvdXJjZS5zcGxpdCgiXG4iKQotICAgICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzW3RvcC0xOmJvdHRvbV0pICsgIlxuIgorICAgICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzW3RvcC0xOmJvdHRvbV0pICsgKCJcbiIgaWYgYm90dG9tIGVsc2UgIiIpCiAKICAgICBkZWYgYXNzZXJ0U291cmNlRXF1YWwoc2VsZiwgb2JqLCB0b3AsIGJvdHRvbSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5zcGVjdC5nZXRzb3VyY2Uob2JqKSwKQEAgLTMzMCw2ICszMzEsMTYgQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGxpbmVjYWNoZS5nZXRsaW5lcyA9IGdldGxpbmVzCiAKK2NsYXNzIFRlc3RHZXR0aW5nU291cmNlT2ZUb3BsZXZlbEZyYW1lcyhHZXRTb3VyY2VCYXNlKToKKyAgICBmb2RkZXJGaWxlID0gbW9kCisKKyAgICBkZWYgdGVzdF9yYW5nZV90b3BsZXZlbF9mcmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFNvdXJjZUVxdWFsKG1vZC5jdXJyZW50ZnJhbWUsIDEsIE5vbmUpCisKKyAgICBkZWYgdGVzdF9yYW5nZV90cmFjZWJhY2tfdG9wbGV2ZWxfZnJhbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0U291cmNlRXF1YWwobW9kLnRiLCAxLCBOb25lKQorCiBjbGFzcyBUZXN0RGVjb3JhdG9ycyhHZXRTb3VyY2VCYXNlKToKICAgICBmb2RkZXJGaWxlID0gbW9kMgogCkBAIC01MDIsNiArNTEzLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZycsICdoJywgKDMsICg0LCAoNSwpKSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKGEsIGIsIGMsIGQ9MywgKGUsIChmLCkpPSg0LCAoNSwpKSwgKmcsICoqaCknKQogCisgICAgICAgIHdpdGggY2hlY2tfcHkza193YXJuaW5ncygoInR1cGxlIHBhcmFtZXRlciB1bnBhY2tpbmcgaGFzIGJlZW4gcmVtb3ZlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3ludGF4V2FybmluZyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWlldD1UcnVlKToKKyAgICAgICAgICAgIGV4ZWModGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgICAgIGRlZiBzcGFtX2RlcmVmKGEsIGIsIGMsIGQ9MywgKGUsIChmLCkpPSg0LCAoNSwpKSwgKmcsICoqaCk6CisgICAgICAgICAgICAgICAgICAgIGRlZiBlZ2dzKCk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYSArIGIgKyBjICsgZCArIGUgKyBmICsgZyArIGgKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVnZ3MKKyAgICAgICAgICAgICcnJykpCisgICAgICAgIHNlbGYuYXNzZXJ0QXJnU3BlY0VxdWFscyhzcGFtX2RlcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydhJywgJ2InLCAnYycsICdkJywgWydlJywgWydmJ11dXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnJywgJ2gnLCAoMywgKDQsICg1LCkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoYSwgYiwgYywgZD0zLCAoZSwgKGYsKSk9KDQsICg1LCkpLCAqZywgKipoKScpCisKICAgICBkZWYgdGVzdF9nZXRhcmdzcGVjX21ldGhvZChzZWxmKToKICAgICAgICAgY2xhc3MgQShvYmplY3QpOgogICAgICAgICAgICAgZGVmIG0oc2VsZik6CkBAIC01MTUsOSArNTQwLDE1IEBACiAgICAgICAgICAgICBleGVjICdkZWYgc3VibGlzdE9mT25lKChmb28sKSk6IHJldHVybiAxJwogICAgICAgICAgICAgc2VsZi5hc3NlcnRBcmdTcGVjRXF1YWxzKHN1Ymxpc3RPZk9uZSwgW1snZm9vJ11dKQogCisgICAgICAgICAgICBleGVjICdkZWYgc3VibGlzdE9mT25lKChmb28sKSk6IHJldHVybiAobGFtYmRhOiBmb28pJworICAgICAgICAgICAgc2VsZi5hc3NlcnRBcmdTcGVjRXF1YWxzKHN1Ymxpc3RPZk9uZSwgW1snZm9vJ11dKQorCiAgICAgICAgICAgICBleGVjICdkZWYgZmFrZVN1Ymxpc3RPZk9uZSgoZm9vKSk6IHJldHVybiAxJwogICAgICAgICAgICAgc2VsZi5hc3NlcnRBcmdTcGVjRXF1YWxzKGZha2VTdWJsaXN0T2ZPbmUsIFsnZm9vJ10pCiAKKyAgICAgICAgICAgIGV4ZWMgJ2RlZiBzdWJsaXN0T2ZPbmUoKGZvbykpOiByZXR1cm4gKGxhbWJkYTogZm9vKScKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0QXJnU3BlY0VxdWFscyhzdWJsaXN0T2ZPbmUsIFsnZm9vJ10pCisKIAogICAgIGRlZiBfY2xhc3NpZnlfdGVzdChzZWxmLCBuZXdzdHlsZSk6CiAgICAgICAgICIiIkhlbHBlciBmb3IgdGVzdGluZyB0aGF0IGNsYXNzaWZ5X2NsYXNzX2F0dHJzIGZpbmRzIGEgYnVuY2ggb2YKQEAgLTgyMCw2ICs4NTEsMjMgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbEV4Y2VwdGlvbihmMywgJzEsIDInKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsRXhjZXB0aW9uKGYzLCAnMSwgMiwgYT0xLCBiPTInKQogCisKK2NsYXNzIFRlc3RHZXRjYWxsYXJnc0Z1bmN0aW9uc0NlbGxWYXJzKFRlc3RHZXRjYWxsYXJnc0Z1bmN0aW9ucyk6CisKKyAgICBkZWYgbWFrZUNhbGxhYmxlKHNlbGYsIHNpZ25hdHVyZSk6CisgICAgICAgICIiIkNyZWF0ZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBpdHMgbG9jYWxzKCksIGV4Y2x1ZGluZyB0aGUKKyAgICAgICAgYXV0b2dlbmVyYXRlZCAnLjEnLCAnLjInLCBldGMuIHR1cGxlIHBhcmFtIG5hbWVzIChpZiBhbnkpLiIiIgorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoCisgICAgICAgICAgICAoInR1cGxlIHBhcmFtZXRlciB1bnBhY2tpbmcgaGFzIGJlZW4gcmVtb3ZlZCIsIFN5bnRheFdhcm5pbmcpLAorICAgICAgICAgICAgcXVpZXQ9VHJ1ZSk6CisgICAgICAgICAgICBjb2RlID0gIiIibGFtYmRhICVzOiAoCisgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6IGErYitjK2QrZCtlK2YrZytoKSwgIyBtYWtlIHBhcmFtZXRlcnMgY2VsbCB2YXJzCisgICAgICAgICAgICAgICAgICAgIGRpY3QoaSBmb3IgaSBpbiBsb2NhbHMoKS5pdGVtcygpCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGlzX3R1cGxlbmFtZShpWzBdKSkKKyAgICAgICAgICAgICAgICApWzFdIiIiCisgICAgICAgICAgICByZXR1cm4gZXZhbChjb2RlICUgc2lnbmF0dXJlLCB7J2lzX3R1cGxlbmFtZScgOiBzZWxmLmlzX3R1cGxlbmFtZX0pCisKKwogY2xhc3MgVGVzdEdldGNhbGxhcmdzTWV0aG9kcyhUZXN0R2V0Y2FsbGFyZ3NGdW5jdGlvbnMpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtODU3LDggKzkwNSw5IEBACiAgICAgcnVuX3VuaXR0ZXN0KAogICAgICAgICBUZXN0RGVjb3JhdG9ycywgVGVzdFJldHJpZXZpbmdTb3VyY2VDb2RlLCBUZXN0T25lbGluZXJzLCBUZXN0QnVnZ3lDYXNlcywKICAgICAgICAgVGVzdEludGVycHJldGVyU3RhY2ssIFRlc3RDbGFzc2VzQW5kRnVuY3Rpb25zLCBUZXN0UHJlZGljYXRlcywKLSAgICAgICAgVGVzdEdldGNhbGxhcmdzRnVuY3Rpb25zLCBUZXN0R2V0Y2FsbGFyZ3NNZXRob2RzLAotICAgICAgICBUZXN0R2V0Y2FsbGFyZ3NVbmJvdW5kTWV0aG9kcykKKyAgICAgICAgVGVzdEdldGNhbGxhcmdzRnVuY3Rpb25zLCBUZXN0R2V0Y2FsbGFyZ3NGdW5jdGlvbnNDZWxsVmFycywKKyAgICAgICAgVGVzdEdldGNhbGxhcmdzTWV0aG9kcywgVGVzdEdldGNhbGxhcmdzVW5ib3VuZE1ldGhvZHMsCisgICAgICAgIFRlc3RHZXR0aW5nU291cmNlT2ZUb3BsZXZlbEZyYW1lcykKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pby5weSBiL0xpYi90ZXN0L3Rlc3RfaW8ucHkKaW5kZXggM2Q0ZGE0Ni4uMjZjNWRmZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CkBAIC0zOTYsNiArMzk2LDIyIEBACiAgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCAiciIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGYucmVhZGxpbmUsIDUuMykKIAorICAgIGRlZiB0ZXN0X3JlYWRsaW5lX25vbnNpemVhYmxlKHNlbGYpOgorICAgICAgICAjIElzc3VlICMzMDA2MQorICAgICAgICAjIENyYXNoIHdoZW4gcmVhZGxpbmUoKSByZXR1cm5zIGFuIG9iamVjdCB3aXRob3V0IF9fbGVuX18KKyAgICAgICAgY2xhc3MgUihzZWxmLklPQmFzZSk6CisgICAgICAgICAgICBkZWYgcmVhZGxpbmUoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKFR5cGVFcnJvciwgU3RvcEl0ZXJhdGlvbiksIG5leHQsIFIoKSkKKworICAgIGRlZiB0ZXN0X25leHRfbm9uc2l6ZWFibGUoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzMwMDYxCisgICAgICAgICMgQ3Jhc2ggd2hlbiBuZXh0KCkgcmV0dXJucyBhbiBvYmplY3Qgd2l0aG91dCBfX2xlbl9fCisgICAgICAgIGNsYXNzIFIoc2VsZi5JT0Jhc2UpOgorICAgICAgICAgICAgZGVmIG5leHQoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBSKCkucmVhZGxpbmVzLCAxKQorCiAgICAgZGVmIHRlc3RfcmF3X2J5dGVzX2lvKHNlbGYpOgogICAgICAgICBmID0gc2VsZi5CeXRlc0lPKCkKICAgICAgICAgc2VsZi53cml0ZV9vcHMoZikKQEAgLTY3NCw2ICs2OTAsMTYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ucmVhZGludG8oYnVmZmVyKSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWZmZXIudG9ieXRlcygpLCBiIjEyMzQ1IikKIAorICAgIGRlZiB0ZXN0X2Nsb3NlX2Fzc2VydChzZWxmKToKKyAgICAgICAgY2xhc3MgUihzZWxmLklPQmFzZSk6CisgICAgICAgICAgICBkZWYgX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBmbHVzaChzZWxmKToKKyAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCkKKyAgICAgICAgZiA9IFIoKQorICAgICAgICAjIFRoaXMgd291bGQgY2F1c2UgYW4gYXNzZXJ0aW9uIGZhaWx1cmUuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIGYuY2xvc2UpCisKIAogY2xhc3MgQ0lPVGVzdChJT1Rlc3QpOgogCkBAIC0xMDc1LDYgKzExMDEsNyBAQAogICAgIGRlZiB0ZXN0X2dhcmJhZ2VfY29sbGVjdGlvbihzZWxmKToKICAgICAgICAgIyBDIEJ1ZmZlcmVkUmVhZGVyIG9iamVjdHMgYXJlIGNvbGxlY3RlZC4KICAgICAgICAgIyBUaGUgUHl0aG9uIHZlcnNpb24gaGFzIF9fZGVsX18sIHNvIGl0IGVuZHMgaW50byBnYy5nYXJiYWdlIGluc3RlYWQKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgcmF3aW8gPSBzZWxmLkZpbGVJTyhzdXBwb3J0LlRFU1RGTiwgIncrYiIpCiAgICAgICAgIGYgPSBzZWxmLnRwKHJhd2lvKQogICAgICAgICBmLmYgPSBmCkBAIC0xMjc2LDYgKzEzMDMsNyBAQAogCiAgICAgZGVmIHRlc3RfdHJ1bmNhdGUoc2VsZik6CiAgICAgICAgICMgVHJ1bmNhdGUgaW1wbGljaXRseSBmbHVzaGVzIHRoZSBidWZmZXIuCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHdpdGggc2VsZi5vcGVuKHN1cHBvcnQuVEVTVEZOLCBzZWxmLndyaXRlX21vZGUsIGJ1ZmZlcmluZz0wKSBhcyByYXc6CiAgICAgICAgICAgICBidWZpbyA9IHNlbGYudHAocmF3LCA4KQogICAgICAgICAgICAgYnVmaW8ud3JpdGUoYiJhYmNkZWYiKQpAQCAtMTM4Miw2ICsxNDEwLDcgQEAKICAgICAgICAgIyBDIEJ1ZmZlcmVkV3JpdGVyIG9iamVjdHMgYXJlIGNvbGxlY3RlZCwgYW5kIGNvbGxlY3RpbmcgdGhlbSBmbHVzaGVzCiAgICAgICAgICMgYWxsIGRhdGEgdG8gZGlzay4KICAgICAgICAgIyBUaGUgUHl0aG9uIHZlcnNpb24gaGFzIF9fZGVsX18sIHNvIGl0IGVuZHMgaW50byBnYy5nYXJiYWdlIGluc3RlYWQKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgcmF3aW8gPSBzZWxmLkZpbGVJTyhzdXBwb3J0LlRFU1RGTiwgIncrYiIpCiAgICAgICAgIGYgPSBzZWxmLnRwKHJhd2lvKQogICAgICAgICBmLndyaXRlKGIiMTIzeHh4IikKQEAgLTI2NTAsNiArMjY3OSwyMiBAQAogICAgICAgICB0ID0gc2VsZi5UZXh0SU9XcmFwcGVyKE5vbmJ5dGVzU3RyZWFtKCdhJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5yZWFkKCksIHUnYScpCiAKKyAgICBkZWYgdGVzdF9pbGxlZ2FsX2VuY29kZXIoc2VsZik6CisgICAgICAgICMgYnBvLTMxMjcxOiBBIFR5cGVFcnJvciBzaG91bGQgYmUgcmFpc2VkIGluIGNhc2UgdGhlIHJldHVybiB2YWx1ZSBvZgorICAgICAgICAjIGVuY29kZXIncyBlbmNvZGUoKSBpcyBpbnZhbGlkLgorICAgICAgICBjbGFzcyBCYWRFbmNvZGVyOgorICAgICAgICAgICAgZGVmIGVuY29kZShzZWxmLCBkdW1teSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHUnc3BhbScKKyAgICAgICAgZGVmIGdldF9iYWRfZW5jb2RlcihkdW1teSk6CisgICAgICAgICAgICByZXR1cm4gQmFkRW5jb2RlcigpCisgICAgICAgIHJvdDEzID0gY29kZWNzLmxvb2t1cCgicm90MTMiKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHJvdDEzLCAnX2lzX3RleHRfZW5jb2RpbmcnLCBUcnVlKSwgXAorICAgICAgICAgICAgIHN1cHBvcnQuc3dhcF9hdHRyKHJvdDEzLCAnaW5jcmVtZW50YWxlbmNvZGVyJywgZ2V0X2JhZF9lbmNvZGVyKToKKyAgICAgICAgICAgIHQgPSBpby5UZXh0SU9XcmFwcGVyKGlvLkJ5dGVzSU8oYidmb28nKSwgZW5jb2Rpbmc9InJvdDEzIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdC53cml0ZSgnYmFyJykKKyAgICAgICAgICAgIHQuZmx1c2goKQorCiAgICAgZGVmIHRlc3RfaWxsZWdhbF9kZWNvZGVyKHNlbGYpOgogICAgICAgICAjIElzc3VlICMxNzEwNgogICAgICAgICAjIEJ5cGFzcyB0aGUgZWFybHkgZW5jb2RpbmcgY2hlY2sgYWRkZWQgaW4gaXNzdWUgMjA0MDQKQEAgLTI2ODYsNiArMjczMSwzNyBAQAogICAgICAgICAgICAgI3QgPSBfbWFrZV9pbGxlZ2FsX3dyYXBwZXIoKQogICAgICAgICAgICAgI3NlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdC5yZWFkKQogCisgICAgICAgICMgSXNzdWUgMzEyNDM6IGNhbGxpbmcgcmVhZCgpIHdoaWxlIHRoZSByZXR1cm4gdmFsdWUgb2YgZGVjb2RlcidzCisgICAgICAgICMgZ2V0c3RhdGUoKSBpcyBpbnZhbGlkIHNob3VsZCBuZWl0aGVyIGNyYXNoIHRoZSBpbnRlcnByZXRlciBub3IKKyAgICAgICAgIyByYWlzZSBhIFN5c3RlbUVycm9yLgorICAgICAgICBkZWYgX21ha2VfdmVyeV9pbGxlZ2FsX3dyYXBwZXIoZ2V0c3RhdGVfcmV0X3ZhbCk6CisgICAgICAgICAgICBjbGFzcyBCYWREZWNvZGVyOgorICAgICAgICAgICAgICAgIGRlZiBnZXRzdGF0ZShzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldHN0YXRlX3JldF92YWwKKyAgICAgICAgICAgIGRlZiBfZ2V0X2JhZF9kZWNvZGVyKGR1bW15KToKKyAgICAgICAgICAgICAgICByZXR1cm4gQmFkRGVjb2RlcigpCisgICAgICAgICAgICBxdW9wcmkgPSBjb2RlY3MubG9va3VwKCJxdW9wcmlfY29kZWMiKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihxdW9wcmksICdpbmNyZW1lbnRhbGRlY29kZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZ2V0X2JhZF9kZWNvZGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gX21ha2VfaWxsZWdhbF93cmFwcGVyKCkKKyAgICAgICAgdCA9IF9tYWtlX3ZlcnlfaWxsZWdhbF93cmFwcGVyKDQyKQorICAgICAgICB3aXRoIHNlbGYubWF5YmVSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHQucmVhZCg0MikKKyAgICAgICAgdCA9IF9tYWtlX3ZlcnlfaWxsZWdhbF93cmFwcGVyKCgpKQorICAgICAgICB3aXRoIHNlbGYubWF5YmVSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHQucmVhZCg0MikKKworICAgIGRlZiB0ZXN0X2lzc3VlMjU4NjIoc2VsZik6CisgICAgICAgICMgQXNzZXJ0aW9uIGZhaWx1cmVzIG9jY3VycmVkIGluIHRlbGwoKSBhZnRlciByZWFkKCkgYW5kIHdyaXRlKCkuCisgICAgICAgIHQgPSBzZWxmLlRleHRJT1dyYXBwZXIoc2VsZi5CeXRlc0lPKGIndGVzdCcpLCBlbmNvZGluZz0nYXNjaWknKQorICAgICAgICB0LnJlYWQoMSkKKyAgICAgICAgdC5yZWFkKCkKKyAgICAgICAgdC50ZWxsKCkKKyAgICAgICAgdCA9IHNlbGYuVGV4dElPV3JhcHBlcihzZWxmLkJ5dGVzSU8oYid0ZXN0JyksIGVuY29kaW5nPSdhc2NpaScpCisgICAgICAgIHQucmVhZCgxKQorICAgICAgICB0LndyaXRlKCd4JykKKyAgICAgICAgdC50ZWxsKCkKKwogCiBjbGFzcyBDVGV4dElPV3JhcHBlclRlc3QoVGV4dElPV3JhcHBlclRlc3QpOgogCkBAIC0yOTMzLDYgKzMwMDksNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGludG8sIGJ5dGVhcnJheSgxMDI0KSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGxpbmUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmLnJlYWRsaW5lcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGYucmVhZGxpbmVzLCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi5zZWVrLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi50ZWxsKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZi50cnVuY2F0ZSkKQEAgLTMwOTMsNyArMzE3MCw2IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpbyA9IHNlbGYuaW8ub3Blbih3LCAqKmZkb3Blbl9rd2FyZ3MpCiAgICAgICAgICAgICB0LnN0YXJ0KCkKLSAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQogICAgICAgICAgICAgIyBGaWxsIHRoZSBwaXBlIGVub3VnaCB0aGF0IHRoZSB3cml0ZSB3aWxsIGJlIGJsb2NraW5nLgogICAgICAgICAgICAgIyBJdCB3aWxsIGJlIGludGVycnVwdGVkIGJ5IHRoZSB0aW1lciBhcm1lZCBhYm92ZS4gIFNpbmNlIHRoZQogICAgICAgICAgICAgIyBvdGhlciB0aHJlYWQgaGFzIHJlYWQgb25lIGJ5dGUsIHRoZSBsb3ctbGV2ZWwgd3JpdGUgd2lsbApAQCAtMzEwMSwxMCArMzE3NywxMyBAQAogICAgICAgICAgICAgIyBUaGUgYnVmZmVyZWQgSU8gbGF5ZXIgbXVzdCBjaGVjayBmb3IgcGVuZGluZyBzaWduYWwKICAgICAgICAgICAgICMgaGFuZGxlcnMsIHdoaWNoIGluIHRoaXMgY2FzZSB3aWxsIGludm9rZSBhbGFybV9pbnRlcnJ1cHQoKS4KICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKICAgICAgICAgICAgICAgICAgICAgd2lvLndyaXRlKGl0ZW0gKiAoc3VwcG9ydC5QSVBFX01BWF9TSVpFIC8vIGxlbihpdGVtKSArIDEpKQogICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMCkKICAgICAgICAgICAgICAgICB0LmpvaW4oKQorCiAgICAgICAgICAgICAjIFdlIGdvdCBvbmUgYnl0ZSwgZ2V0IGFub3RoZXIgb25lIGFuZCBjaGVjayB0aGF0IGl0IGlzbid0IGEKICAgICAgICAgICAgICMgcmVwZWF0IG9mIHRoZSBmaXJzdCBvbmUuCiAgICAgICAgICAgICByZWFkX3Jlc3VsdHMuYXBwZW5kKG9zLnJlYWQociwgMSkpCkBAIC0zMTUzLDYgKzMyMzIsNyBAQAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleGMsIFJ1bnRpbWVFcnJvcik6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0cihleGMpLnN0YXJ0c3dpdGgoInJlZW50cmFudCBjYWxsIiksIHN0cihleGMpKQogICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDApCiAgICAgICAgICAgICB3aW8uY2xvc2UoKQogICAgICAgICAgICAgb3MuY2xvc2UocikKIApAQCAtMzE4MSw2ICszMjYxLDcgQEAKICAgICAgICAgICAgICMgLSB0aGlyZCByYXcgcmVhZCgpIHJldHVybnMgYiJiYXIiCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZShyaW8ucmVhZCg2KSksICJmb29iYXIiKQogICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDApCiAgICAgICAgICAgICByaW8uY2xvc2UoKQogICAgICAgICAgICAgb3MuY2xvc2UodykKICAgICAgICAgICAgIG9zLmNsb3NlKHIpCkBAIC0zMjQyLDYgKzMzMjMsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZXJyb3JbMF0pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE4sIHN1bShsZW4oeCkgZm9yIHggaW4gcmVhZF9yZXN1bHRzKSkKICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgwKQogICAgICAgICAgICAgd3JpdGVfZmluaXNoZWQgPSBUcnVlCiAgICAgICAgICAgICBvcy5jbG9zZSh3KQogICAgICAgICAgICAgb3MuY2xvc2UocikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcnRvb2xzLnB5IGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKaW5kZXggNTY3MjEwNC4uMDQyNzk3OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkKQEAgLTgwMiw2ICs4MDIsNyBAQAogICAgICAgICAgICAgICAgICgxMCwgMjAsIDMpLAogICAgICAgICAgICAgICAgICgxMCwgMywgMjApLAogICAgICAgICAgICAgICAgICgxMCwgMjApLAorICAgICAgICAgICAgICAgICgxMCwgMTApLAogICAgICAgICAgICAgICAgICgxMCwgMyksCiAgICAgICAgICAgICAgICAgKDIwLCkKICAgICAgICAgICAgICAgICBdOgpAQCAtODI2LDYgKzgyNywxMCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXNsaWNlKGl0LCAzKSksIHJhbmdlKDMpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCByYW5nZSgzLCAxMCkpCiAKKyAgICAgICAgaXQgPSBpdGVyKHJhbmdlKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlzbGljZShpdCwgMywgMykpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgcmFuZ2UoMywgMTApKQorCiAgICAgICAgICMgVGVzdCBpbnZhbGlkIGFyZ3VtZW50cwogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGlzbGljZSwgeHJhbmdlKDEwKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBpc2xpY2UsIHhyYW5nZSgxMCksIDEsIDIsIDMsIDQpCkBAIC0xMDg0LDYgKzEwODksNDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHRha2V3aGlsZShsYW1iZGEgeDogeDw1LCBbMSw0LDYsNCwxXSkpLCBbMSw0XSkKIAogCitjbGFzcyBUZXN0UHVyZVB5dGhvblJvdWdoRXF1aXZhbGVudHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBpc2xpY2UoaXRlcmFibGUsICphcmdzKToKKyAgICAgICAgcyA9IHNsaWNlKCphcmdzKQorICAgICAgICBzdGFydCwgc3RvcCwgc3RlcCA9IHMuc3RhcnQgb3IgMCwgcy5zdG9wIG9yIHN5cy5tYXhpbnQsIHMuc3RlcCBvciAxCisgICAgICAgIGl0ID0gaXRlcih4cmFuZ2Uoc3RhcnQsIHN0b3AsIHN0ZXApKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0aSA9IG5leHQoaXQpCisgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgIyBDb25zdW1lICppdGVyYWJsZSogdXAgdG8gdGhlICpzdGFydCogcG9zaXRpb24uCisgICAgICAgICAgICBmb3IgaSwgZWxlbWVudCBpbiBpemlwKHhyYW5nZShzdGFydCksIGl0ZXJhYmxlKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIGksIGVsZW1lbnQgaW4gZW51bWVyYXRlKGl0ZXJhYmxlKToKKyAgICAgICAgICAgICAgICBpZiBpID09IG5leHRpOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbGVtZW50CisgICAgICAgICAgICAgICAgICAgIG5leHRpID0gbmV4dChpdCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CisgICAgICAgICAgICAjIENvbnN1bWUgdG8gKnN0b3AqLgorICAgICAgICAgICAgZm9yIGksIGVsZW1lbnQgaW4gaXppcCh4cmFuZ2UoaSArIDEsIHN0b3ApLCBpdGVyYWJsZSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfaXNsaWNlX3JlY2lwZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXNsaWNlKCdBQkNERUZHJywgMikpLCBsaXN0KCdBQicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5pc2xpY2UoJ0FCQ0RFRkcnLCAyLCA0KSksIGxpc3QoJ0NEJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlzbGljZSgnQUJDREVGRycsIDIsIE5vbmUpKSwgbGlzdCgnQ0RFRkcnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXNsaWNlKCdBQkNERUZHJywgMCwgTm9uZSwgMikpLCBsaXN0KCdBQ0VHJykpCisgICAgICAgICMgVGVzdCBpdGVtcyBjb25zdW1lZC4KKyAgICAgICAgaXQgPSBpdGVyKHhyYW5nZSgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzZWxmLmlzbGljZShpdCwgMykpLCByYW5nZSgzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGl0KSwgcmFuZ2UoMywgMTApKQorICAgICAgICBpdCA9IGl0ZXIoeHJhbmdlKDEwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNlbGYuaXNsaWNlKGl0LCAzLCAzKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXQpLCByYW5nZSgzLCAxMCkpCisgICAgICAgICMgVGVzdCB0aGF0IHNsaWNlIGZpbmlzaGVzIGluIHByZWRpY3RhYmxlIHN0YXRlLgorICAgICAgICBjID0gY291bnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qoc2VsZi5pc2xpY2UoYywgMSwgMywgNTApKSwgWzFdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoYyksIDMpCisKKwogY2xhc3MgVGVzdEdDKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBtYWtlY3ljbGUoc2VsZiwgaXRlcmF0b3IsIGNvbnRhaW5lcik6CkBAIC0xNDY1LDYgKzE1MTIsMzkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIGxpc3QsIGN5Y2xlKGdlbjEoKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGlzdCwgWzAsMV0pCiAKKyAgICBkZWYgdGVzdF9sb25nX2NoYWluX29mX2VtcHR5X2l0ZXJhYmxlcyhzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgaXRlcnRvb2xzLmNoYWluIGRvZXNuJ3QgcnVuIGludG8gcmVjdXJzaW9uIGxpbWl0cyB3aGVuCisgICAgICAgICMgZGVhbGluZyB3aXRoIGxvbmcgY2hhaW5zIG9mIGVtcHR5IGl0ZXJhYmxlcy4gRXZlbiB3aXRoIGEgaGlnaAorICAgICAgICAjIG51bWJlciB0aGlzIHdvdWxkIHByb2JhYmx5IG9ubHkgZmFpbCBpbiBQeV9ERUJVRyBtb2RlLgorICAgICAgICBpdCA9IGNoYWluLmZyb21faXRlcmFibGUoKCkgZm9yIHVudXNlZCBpbiB4cmFuZ2UoMTAwMDAwMDApKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgbmV4dChpdCkKKworICAgIGRlZiB0ZXN0X2lzc3VlMzAzNDdfMShzZWxmKToKKyAgICAgICAgZGVmIGYobik6CisgICAgICAgICAgICBpZiBuID09IDU6CisgICAgICAgICAgICAgICAgbGlzdChiKQorICAgICAgICAgICAgcmV0dXJuIG4gIT0gNgorICAgICAgICBmb3IgKGssIGIpIGluIGdyb3VwYnkocmFuZ2UoMTApLCBmKToKKyAgICAgICAgICAgIGxpc3QoYikgICMgc2hvdWxkbid0IGNyYXNoCisKKyAgICBkZWYgdGVzdF9pc3N1ZTMwMzQ3XzIoc2VsZik6CisgICAgICAgIGNsYXNzIEsob2JqZWN0KToKKyAgICAgICAgICAgIGkgPSAwCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdik6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgSy5pICs9IDEKKyAgICAgICAgICAgICAgICBpZiBLLmkgPT0gMToKKyAgICAgICAgICAgICAgICAgICAgbmV4dChnLCBOb25lKQorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgZyA9IG5leHQoZ3JvdXBieShyYW5nZSgxMCksIEspKVsxXQorICAgICAgICBmb3IgaiBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIG5leHQoZywgTm9uZSkgICMgc2hvdWxkbid0IGNyYXNoCisKKwogY2xhc3MgU3ViY2xhc3NXaXRoS3dhcmdzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3Rfa2V5d29yZHNfaW5fc3ViY2xhc3Moc2VsZik6CiAgICAgICAgICMgY291bnQgaXMgbm90IHN1YmNsYXNzYWJsZS4uLgpAQCAtMTU0NCw2ICsxNjI0LDE3IEBACiAuLi4gICAgICJSZXR1cm4gZnVuY3Rpb24oMCksIGZ1bmN0aW9uKDEpLCAuLi4iCiAuLi4gICAgIHJldHVybiBpbWFwKGZ1bmN0aW9uLCBjb3VudChzdGFydCkpCiAKKz4+PiBpbXBvcnQgY29sbGVjdGlvbnMKKz4+PiBkZWYgY29uc3VtZShpdGVyYXRvciwgbj1Ob25lKToKKy4uLiAgICAgIkFkdmFuY2UgdGhlIGl0ZXJhdG9yIG4tc3RlcHMgYWhlYWQuIElmIG4gaXMgTm9uZSwgY29uc3VtZSBlbnRpcmVseS4iCisuLi4gICAgICMgVXNlIGZ1bmN0aW9ucyB0aGF0IGNvbnN1bWUgaXRlcmF0b3JzIGF0IEMgc3BlZWQuCisuLi4gICAgIGlmIG4gaXMgTm9uZToKKy4uLiAgICAgICAgICMgZmVlZCB0aGUgZW50aXJlIGl0ZXJhdG9yIGludG8gYSB6ZXJvLWxlbmd0aCBkZXF1ZQorLi4uICAgICAgICAgY29sbGVjdGlvbnMuZGVxdWUoaXRlcmF0b3IsIG1heGxlbj0wKQorLi4uICAgICBlbHNlOgorLi4uICAgICAgICAgIyBhZHZhbmNlIHRvIHRoZSBlbXB0eSBzbGljZSBzdGFydGluZyBhdCBwb3NpdGlvbiBuCisuLi4gICAgICAgICBuZXh0KGlzbGljZShpdGVyYXRvciwgbiwgbiksIE5vbmUpCisKID4+PiBkZWYgbnRoKGl0ZXJhYmxlLCBuLCBkZWZhdWx0PU5vbmUpOgogLi4uICAgICAiUmV0dXJucyB0aGUgbnRoIGl0ZW0gb3IgYSBkZWZhdWx0IHZhbHVlIgogLi4uICAgICByZXR1cm4gbmV4dChpc2xpY2UoaXRlcmFibGUsIG4sIE5vbmUpLCBkZWZhdWx0KQpAQCAtMTY0NSw2ICsxNzM2LDE0IEBACiA+Pj4gbGlzdChpc2xpY2UodGFidWxhdGUobGFtYmRhIHg6IDIqeCksIDQpKQogWzAsIDIsIDQsIDZdCiAKKz4+PiBpdCA9IGl0ZXIoeHJhbmdlKDEwKSkKKz4+PiBjb25zdW1lKGl0LCAzKQorPj4+IG5leHQoaXQpCiszCis+Pj4gY29uc3VtZShpdCkKKz4+PiBuZXh0KGl0LCAnRG9uZScpCisnRG9uZScKKwogPj4+IG50aCgnYWJjZGUnLCAzKQogJ2QnCiAKQEAgLTE3MjAsNyArMTgxOSw4IEBACiBkZWYgdGVzdF9tYWluKHZlcmJvc2U9Tm9uZSk6CiAgICAgdGVzdF9jbGFzc2VzID0gKFRlc3RCYXNpY09wcywgVGVzdFZhcmlvdXNJdGVyYXRvckFyZ3MsIFRlc3RHQywKICAgICAgICAgICAgICAgICAgICAgUmVncmVzc2lvblRlc3RzLCBMZW5ndGhUcmFuc3BhcmVuY3ksCi0gICAgICAgICAgICAgICAgICAgIFN1YmNsYXNzV2l0aEt3YXJnc1Rlc3QsIFRlc3RFeGFtcGxlcykKKyAgICAgICAgICAgICAgICAgICAgU3ViY2xhc3NXaXRoS3dhcmdzVGVzdCwgVGVzdEV4YW1wbGVzLAorICAgICAgICAgICAgICAgICAgICBUZXN0UHVyZVB5dGhvblJvdWdoRXF1aXZhbGVudHMpCiAgICAgdGVzdF9zdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQogCiAgICAgIyB2ZXJpZnkgcmVmZXJlbmNlIGNvdW50aW5nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2txdWV1ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CmluZGV4IDFiZGZlYzguLmIzNzIyMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5CkBAIC0zNiw5ICszNiwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtcChldiwgb3RoZXIpLCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGV2IDwgb3RoZXIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdGhlciA+PSBldikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjbXAsIGV2LCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNtcCwgZXYsIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY21wLCBldiwgImV2IikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjbXAoZXYsIE5vbmUpLCAwKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGNtcChldiwgMSksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY21wKGV2LCAiZXYiKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXAoZXYsIE5vbmUpLCAtY21wKE5vbmUsIGV2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXAoZXYsIDEpLCAtY21wKDEsIGV2KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbXAoZXYsICJldiIpLCAtY21wKCJldiIsIGV2KSkKIAogICAgICAgICBldiA9IHNlbGVjdC5rZXZlbnQoZmQsIHNlbGVjdC5LUV9GSUxURVJfV1JJVEUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXYuaWRlbnQsIGZkKQpAQCAtMjA1LDYgKzIwOCwzMCBAQAogICAgICAgICBiLmNsb3NlKCkKICAgICAgICAga3EuY2xvc2UoKQogCisgICAgZGVmIHRlc3RfaXNzdWUzMDA1OChzZWxmKToKKyAgICAgICAgIyBjaGFuZ2VsaXN0IG11c3QgYmUgYW4gaXRlcmFibGUKKyAgICAgICAga3EgPSBzZWxlY3Qua3F1ZXVlKCkKKyAgICAgICAgYSwgYiA9IHNvY2tldC5zb2NrZXRwYWlyKCkKKyAgICAgICAgZXYgPSBzZWxlY3Qua2V2ZW50KGEsIHNlbGVjdC5LUV9GSUxURVJfUkVBRCwgc2VsZWN0LktRX0VWX0FERCB8IHNlbGVjdC5LUV9FVl9FTkFCTEUpCisKKyAgICAgICAga3EuY29udHJvbChbZXZdLCAwKQorICAgICAgICAjIG5vdCBhIGxpc3QKKyAgICAgICAga3EuY29udHJvbCgoZXYsKSwgMCkKKyAgICAgICAgIyBfX2xlbl9fIGlzIG5vdCBjb25zaXN0ZW50IHdpdGggX19pdGVyX18KKyAgICAgICAgY2xhc3MgQmFkTGlzdDoKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTAwKToKKyAgICAgICAgICAgICAgICAgICAgeWllbGQgZXYKKyAgICAgICAga3EuY29udHJvbChCYWRMaXN0KCksIDApCisgICAgICAgICMgZG9lc24ndCBoYXZlIF9fbGVuX18KKyAgICAgICAga3EuY29udHJvbChpdGVyKFtldl0pLCAwKQorCisgICAgICAgIGEuY2xvc2UoKQorICAgICAgICBiLmNsb3NlKCkKKyAgICAgICAga3EuY2xvc2UoKQorCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdF9zdXBwb3J0LnJ1bl91bml0dGVzdChUZXN0S1F1ZXVlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weSBiL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CmluZGV4IDZmN2VjZDEuLjM1YTUyZGIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbGluZWNhY2hlLnB5CkBAIC0zLDcgKzMsNyBAQAogaW1wb3J0IGxpbmVjYWNoZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MucGF0aAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQgYXMgc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogRklMRU5BTUUgPSBsaW5lY2FjaGUuX19maWxlX18KQEAgLTExLDcgKzExLDcgQEAKIEVNUFRZID0gJycKIFRFU1RTID0gJ2luc3BlY3RfZm9kZGVyIGluc3BlY3RfZm9kZGVyMiBtYXBwaW5nX3Rlc3RzJwogVEVTVFMgPSBURVNUUy5zcGxpdCgpCi1URVNUX1BBVEggPSBvcy5wYXRoLmRpcm5hbWUoc3VwcG9ydC5fX2ZpbGVfXykKK1RFU1RfUEFUSCA9IHN1cHBvcnQuVEVTVF9IT01FX0RJUgogTU9EVUxFUyA9ICJsaW5lY2FjaGUgYWJjIi5zcGxpdCgpCiBNT0RVTEVfUEFUSCA9IG9zLnBhdGguZGlybmFtZShGSUxFTkFNRSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9sb2NhbGUucHkgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQppbmRleCA1NjNkZGIxLi42MDcwODgyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xvY2FsZS5weQpAQCAtNDI1LDcgKzQyNSw3IEBACiAKICAgICBkZWYgdGVzdF92YWxlbmNpYV9tb2RpZmllcihzZWxmKToKICAgICAgICAgc2VsZi5jaGVjaygnY2FfRVMuVVRGLThAdmFsZW5jaWEnLCAnY2FfRVMuVVRGLThAdmFsZW5jaWEnKQotICAgICAgICBzZWxmLmNoZWNrKCdjYV9FU0B2YWxlbmNpYScsICdjYV9FUy5JU084ODU5LTE1QHZhbGVuY2lhJykKKyAgICAgICAgc2VsZi5jaGVjaygnY2FfRVNAdmFsZW5jaWEnLCAnY2FfRVMuVVRGLThAdmFsZW5jaWEnKQogICAgICAgICBzZWxmLmNoZWNrKCdjYUB2YWxlbmNpYScsICdjYV9FUy5JU084ODU5LTFAdmFsZW5jaWEnKQogCiAgICAgZGVmIHRlc3RfZGV2YW5hZ2FyaV9tb2RpZmllcihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQppbmRleCAyMjYxYmI4Li5mOGRiNWQ1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CkBAIC02NTQsNyArNjU0LDcgQEAKICAgICAgICAgICAgIGhvc3RuYW1lID0gaG9zdG5hbWUucmVwbGFjZSgnOicsIHInXDA3MicpCiAgICAgICAgIHBpZCA9IG9zLmdldHBpZCgpCiAgICAgICAgIHBhdHRlcm4gPSByZS5jb21waWxlKHIiKD9QPHRpbWU+XGQrKVwuTSg/UDxNPlxkezEsNn0pUCg/UDxQPlxkKykiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiUSg/UDxRPlxkKylcLig/UDxob3N0PlteOi9dKykiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlEoP1A8UT5cZCspXC4oP1A8aG9zdD5bXjovXSopIikKICAgICAgICAgcHJldmlvdXNfZ3JvdXBzID0gTm9uZQogICAgICAgICBmb3IgeCBpbiB4cmFuZ2UocmVwZXRpdGlvbnMpOgogICAgICAgICAgICAgdG1wX2ZpbGUgPSBzZWxmLl9ib3guX2NyZWF0ZV90bXAoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CmluZGV4IDc2ZDU5YmEuLmJiYWE5NDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKQEAgLTIyNyw4ICsyMjcsMjIgQEAKICAgICAgICAgICAgICAgICBwYXNzCiAKICAgICBkZWYgdGVzdF9sb2Fkc19yZWN1cnNpb24oc2VsZik6Ci0gICAgICAgIHMgPSAnYycgKyAoJ1gnICogNCo0KSArICd7JyAqIDIqKjIwCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hcnNoYWwubG9hZHMsIHMpCisgICAgICAgIGRlZiBydW5fdGVzdHMoTiwgY2hlY2spOgorICAgICAgICAgICAgIyAoKCguLi5Ob25lLi4uKSwpLCkKKyAgICAgICAgICAgIGNoZWNrKGInKFx4MDFceDAwXHgwMFx4MDAnICogTiArIGInTicpCisgICAgICAgICAgICAjIFtbWy4uLk5vbmUuLi5dXV0KKyAgICAgICAgICAgIGNoZWNrKGInW1x4MDFceDAwXHgwMFx4MDAnICogTiArIGInTicpCisgICAgICAgICAgICAjIHtOb25lOiB7Tm9uZToge05vbmU6IC4uLk5vbmUuLi59fX0KKyAgICAgICAgICAgIGNoZWNrKGIne04nICogTiArIGInTicgKyBiJzAnICogTikKKyAgICAgICAgICAgICMgZnJvemVuc2V0KFtmcm96ZW5zZXQoW2Zyb3plbnNldChbLi4uTm9uZS4uLl0pXSldKQorICAgICAgICAgICAgY2hlY2soYic+XHgwMVx4MDBceDAwXHgwMCcgKiBOICsgYidOJykKKyAgICAgICAgIyBDaGVjayB0aGF0IHRoZSBnZW5lcmF0ZWQgbWFyc2hhbCBkYXRhIGlzIHZhbGlkIGFuZCBtYXJzaGFsLmxvYWRzKCkKKyAgICAgICAgIyB3b3JrcyBmb3IgbW9kZXJhdGVseSBkZWVwIG5lc3RpbmcKKyAgICAgICAgcnVuX3Rlc3RzKDEwMCwgbWFyc2hhbC5sb2FkcykKKyAgICAgICAgIyBWZXJ5IGRlZXBseSBuZXN0ZWQgc3RydWN0dXJlIHNob3VsZG4ndCBibG93IHRoZSBzdGFjaworICAgICAgICBkZWYgY2hlY2socyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXJzaGFsLmxvYWRzLCBzKQorICAgICAgICBydW5fdGVzdHMoMioqMjAsIGNoZWNrKQogCiAgICAgZGVmIHRlc3RfcmVjdXJzaW9uX2xpbWl0KHNlbGYpOgogICAgICAgICAjIENyZWF0ZSBhIGRlZXBseSBuZXN0ZWQgc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weSBiL0xpYi90ZXN0L3Rlc3RfbWVtb3J5aW8ucHkKaW5kZXggMmMxOGFkNy4uZDI5ZjE0OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tZW1vcnlpby5weQorKysgYi9MaWIvdGVzdC90ZXN0X21lbW9yeWlvLnB5CkBAIC01LDYgKzUsNyBAQAogCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQgYXMgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5IGIvTGliL3Rlc3QvdGVzdF9tZW1vcnl2aWV3LnB5CmluZGV4IDQ0MDdhZjguLjQyNjk4NTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWVtb3J5dmlldy5weQorKysgYi9MaWIvdGVzdC90ZXN0X21lbW9yeXZpZXcucHkKQEAgLTEyLDYgKzEyLDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IGNvcHkKIGltcG9ydCBwaWNrbGUKK2ltcG9ydCB3YXJuaW5ncwogCiAKIGNsYXNzIEFic3RyYWN0TWVtb3J5VGVzdHM6CkBAIC0zNTksMTUgKzM2MCwyMCBAQAogY2xhc3MgT3RoZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgogICAgICAgICBtID0gbWVtb3J5dmlldyhiJ2FiYycpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpLCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScsICIuKm1lbW9yeXZpZXciLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBjb3B5LmNvcHkobSkKIAotICAgICMgU2VlIGlzc3VlICMyMjk5NQotICAgICMjIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKLSAgICAjIyAgICAgbSA9IG1lbW9yeXZpZXcoYidhYmMnKQotICAgICMjICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAjIyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKLSAgICAjIyAgICAgICAgICAgICBwaWNrbGUuZHVtcHMobSwgcHJvdG8pCisgICAgQHRlc3Rfc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIG0gPSBtZW1vcnl2aWV3KGInYWJjJykKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKDIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhtLCBwcm90bykKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfcHkza193YXJuaW5ncygKKyAgICAgICAgICAgICAgICAoIi4qbWVtb3J5dmlldyIsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgcGlja2xlLmR1bXBzKG0sIDIpCisKIAogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21tYXAucHkgYi9MaWIvdGVzdC90ZXN0X21tYXAucHkKaW5kZXggMDM1MGIzZC4uZmM2ZDZlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQpAQCAtNjY2LDYgKzY2NiwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtLndyaXRlX2J5dGUsICdiJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbS53cml0ZSwgJ2FiYycpCiAKKyAgICBkZWYgdGVzdF9jb25jYXRfcmVwZWF0X2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgbSA9IG1tYXAubW1hcCgtMSwgMTYpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG0gKyBtCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG0gKiAyCisKIAogY2xhc3MgTGFyZ2VNbWFwVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CmluZGV4IGM2NjcyN2MuLjQyY2NiY2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nLnB5CkBAIC0xNCwxNyArMTQsMTggQEAKIGltcG9ydCByYW5kb20KIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgZXJybm8KK2ltcG9ydCB3ZWFrcmVmCiBpbXBvcnQgdGVzdC5zY3JpcHRfaGVscGVyCi1mcm9tIHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTwotX211bHRpcHJvY2Vzc2luZyA9IHRlc3Rfc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdfbXVsdGlwcm9jZXNzaW5nJykKK19tdWx0aXByb2Nlc3NpbmcgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ19tdWx0aXByb2Nlc3NpbmcnKQogIyBpbXBvcnQgdGhyZWFkaW5nIGFmdGVyIF9tdWx0aXByb2Nlc3NpbmcgdG8gcmFpc2UgYSBtb3JlIHJlbGV2YW50IGVycm9yCiAjIG1lc3NhZ2U6ICJObyBtb2R1bGUgbmFtZWQgX211bHRpcHJvY2Vzc2luZyIuIF9tdWx0aXByb2Nlc3NpbmcgaXMgbm90IGNvbXBpbGVkCiAjIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQuCiBpbXBvcnQgdGhyZWFkaW5nCiAKICMgV29yayBhcm91bmQgYnJva2VuIHNlbV9vcGVuIGltcGxlbWVudGF0aW9ucwotdGVzdF9zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ211bHRpcHJvY2Vzc2luZy5zeW5jaHJvbml6ZScpCitzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ211bHRpcHJvY2Vzc2luZy5zeW5jaHJvbml6ZScpCiAKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcuZHVtbXkKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcuY29ubmVjdGlvbgpAQCAtMTc0LDYgKzE3NSwxMiBAQAogIyBUZXN0Y2FzZXMKICMKIAorY2xhc3MgRHVtbXlDYWxsYWJsZShvYmplY3QpOgorICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBxLCBjKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYywgRHVtbXlDYWxsYWJsZSkKKyAgICAgICAgcS5wdXQoNSkKKworCiBjbGFzcyBfVGVzdFByb2Nlc3MoQmFzZVRlc3RDYXNlKToKIAogICAgIEFMTE9XRURfVFlQRVMgPSAoJ3Byb2Nlc3NlcycsICd0aHJlYWRzJykKQEAgLTMzNCw4ICszNDEsOCBAQAogICAgICAgICBpZiBzZWxmLlRZUEUgPT0gJ3RocmVhZHMnOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndGVzdCBub3QgYXBwcm9wcmlhdGUgZm9yIHt9Jy5mb3JtYXQoc2VsZi5UWVBFKSkKIAotICAgICAgICB0ZXN0Zm4gPSB0ZXN0X3N1cHBvcnQuVEVTVEZOCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0X3N1cHBvcnQudW5saW5rLCB0ZXN0Zm4pCisgICAgICAgIHRlc3RmbiA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdGZuKQogCiAgICAgICAgIGZvciByZWFzb24sIGNvZGUgaW4gKChbMSwgMiwgM10sIDEpLCAoJ2lnbm9yZSB0aGlzJywgMSkpOgogICAgICAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fdGVzdF9zeXNfZXhpdCwgYXJncz0ocmVhc29uLCB0ZXN0Zm4pKQpAQCAtMzU0LDYgKzM2MSwxOCBAQAogICAgICAgICAgICAgcC5qb2luKDUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuZXhpdGNvZGUsIHJlYXNvbikKIAorICAgIGRlZiB0ZXN0X2xvc2VfdGFyZ2V0X3JlZihzZWxmKToKKyAgICAgICAgYyA9IER1bW15Q2FsbGFibGUoKQorICAgICAgICB3ciA9IHdlYWtyZWYucmVmKGMpCisgICAgICAgIHEgPSBzZWxmLlF1ZXVlKCkKKyAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9YywgYXJncz0ocSwgYykpCisgICAgICAgIGRlbCBjCisgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBwLmpvaW4oKQorICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocS5nZXQoKSwgNSkKKworCiAjCiAjCiAjCkBAIC02MjEsNyArNjQwLDcgQEAKICAgICAgICAgICAgIHAuam9pbigpCiAKICAgICBkZWYgdGVzdF9ub19pbXBvcnRfbG9ja19jb250ZW50aW9uKHNlbGYpOgotICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC50ZW1wX2N3ZCgpOgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoKToKICAgICAgICAgICAgIG1vZHVsZV9uYW1lID0gJ2ltcG9ydGVkX2J5X2FuX2ltcG9ydGVkX21vZHVsZScKICAgICAgICAgICAgIHdpdGggb3Blbihtb2R1bGVfbmFtZSArICcucHknLCAndycpIGFzIGY6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgiIiJpZiAxOgpAQCAtNjMzLDEzICs2NTIsMjkgQEAKICAgICAgICAgICAgICAgICAgICAgcS5jbG9zZSgpCiAgICAgICAgICAgICAgICAgIiIiKQogCi0gICAgICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5EaXJzT25TeXNQYXRoKG9zLmdldGN3ZCgpKToKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5EaXJzT25TeXNQYXRoKG9zLmdldGN3ZCgpKToKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIF9faW1wb3J0X18obW9kdWxlX25hbWUpCiAgICAgICAgICAgICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlByb2JhYmxlIHJlZ3Jlc3Npb24gb24gaW1wb3J0IGxvY2sgY29udGVudGlvbjsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNlZSBJc3N1ZSAjMjI4NTMiKQogCisgICAgZGVmIHRlc3RfcXVldWVfZmVlZGVyX2Rvbm90X3N0b3Bfb25leGMoc2VsZik6CisgICAgICAgICMgYnBvLTMwNDE0OiB2ZXJpZnkgZmVlZGVyIGhhbmRsZXMgZXhjZXB0aW9ucyBjb3JyZWN0bHkKKyAgICAgICAgaWYgc2VsZi5UWVBFICE9ICdwcm9jZXNzZXMnOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndGVzdCBub3QgYXBwcm9wcmlhdGUgZm9yIHt9Jy5mb3JtYXQoc2VsZi5UWVBFKSkKKworICAgICAgICBjbGFzcyBOb3RTZXJpYWxpemFibGUob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yCisgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpOgorICAgICAgICAgICAgcSA9IHNlbGYuUXVldWUoKQorICAgICAgICAgICAgcS5wdXQoTm90U2VyaWFsaXphYmxlKCkpCisgICAgICAgICAgICBxLnB1dChUcnVlKQorICAgICAgICAgICAgIyBicG8tMzA1OTU6IHVzZSBhIHRpbWVvdXQgb2YgMSBzZWNvbmQgZm9yIHNsb3cgYnVpbGRib3RzCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocS5nZXQodGltZW91dD0xLjApKQorCisKICMKICMKICMKQEAgLTgzOSw3ICs4NzQsMTMgQEAKICAgICAgICAgY29uZC5yZWxlYXNlKCkKIAogICAgICAgICAjIGNoZWNrIHRoZXkgaGF2ZSBhbGwgd29rZW4KLSAgICAgICAgdGltZS5zbGVlcChERUxUQSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMTApOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGlmIGdldF92YWx1ZSh3b2tlbikgPT0gNjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGV4Y2VwdCBOb3RJbXBsZW1lbnRlZEVycm9yOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICB0aW1lLnNsZWVwKERFTFRBKQogICAgICAgICBzZWxmLmFzc2VydFJldHVybnNJZkltcGxlbWVudGVkKDYsIGdldF92YWx1ZSwgd29rZW4pCiAKICAgICAgICAgIyBjaGVjayBzdGF0ZSBpcyBub3QgbXVja2VkIHVwCkBAIC0xMTIzLDYgKzExNjQsMTkgQEAKICAgICB0aW1lLnNsZWVwKHdhaXQpCiAgICAgcmV0dXJuIHgqeAogCitkZWYgaWRlbnRpdHkoeCk6CisgICAgcmV0dXJuIHgKKworY2xhc3MgQ291bnRlZE9iamVjdChvYmplY3QpOgorICAgIG5faW5zdGFuY2VzID0gMAorCisgICAgZGVmIF9fbmV3X18oY2xzKToKKyAgICAgICAgY2xzLm5faW5zdGFuY2VzICs9IDEKKyAgICAgICAgcmV0dXJuIG9iamVjdC5fX25ld19fKGNscykKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICB0eXBlKHNlbGYpLm5faW5zdGFuY2VzIC09IDEKKwogY2xhc3MgU2F5V2hlbkVycm9yKFZhbHVlRXJyb3IpOiBwYXNzCiAKIGRlZiBleGNlcHRpb25fdGhyb3dpbmdfZ2VuZXJhdG9yKHRvdGFsLCB3aGVuKToKQEAgLTEyMDYsMTAgKzEyNjAsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2F5V2hlbkVycm9yLCBpdC5uZXh0KQogCiAgICAgZGVmIHRlc3RfaW1hcF91bm9yZGVyZWQoc2VsZik6Ci0gICAgICAgIGl0ID0gc2VsZi5wb29sLmltYXBfdW5vcmRlcmVkKHNxciwgcmFuZ2UoMTAwMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGl0KSwgbWFwKHNxciwgcmFuZ2UoMTAwMCkpKQorICAgICAgICBpdCA9IHNlbGYucG9vbC5pbWFwX3Vub3JkZXJlZChzcXIsIHJhbmdlKDEwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGl0KSwgbWFwKHNxciwgcmFuZ2UoMTAwKSkpCiAKLSAgICAgICAgaXQgPSBzZWxmLnBvb2wuaW1hcF91bm9yZGVyZWQoc3FyLCByYW5nZSgxMDAwKSwgY2h1bmtzaXplPTUzKQorICAgICAgICBpdCA9IHNlbGYucG9vbC5pbWFwX3Vub3JkZXJlZChzcXIsIHJhbmdlKDEwMDApLCBjaHVua3NpemU9MTAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChpdCksIG1hcChzcXIsIHJhbmdlKDEwMDApKSkKIAogICAgIGRlZiB0ZXN0X2ltYXBfdW5vcmRlcmVkX2hhbmRsZV9pdGVyYWJsZV9leGNlcHRpb24oc2VsZik6CkBAIC0xMjY4LDYgKzEzMjIsMjEgQEAKICAgICAgICAgcC5jbG9zZSgpCiAgICAgICAgIHAuam9pbigpCiAKKyAgICBkZWYgdGVzdF9yZWxlYXNlX3Rhc2tfcmVmcyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjk4NjE6IHRhc2sgYXJndW1lbnRzIGFuZCByZXN1bHRzIHNob3VsZCBub3QgYmUga2VwdAorICAgICAgICAjIGFsaXZlIGFmdGVyIHdlIGFyZSBkb25lIHdpdGggdGhlbS4KKyAgICAgICAgb2JqcyA9IGxpc3QoQ291bnRlZE9iamVjdCgpIGZvciBpIGluIHJhbmdlKDEwKSkKKyAgICAgICAgcmVmcyA9IGxpc3Qod2Vha3JlZi5yZWYobykgZm9yIG8gaW4gb2JqcykKKyAgICAgICAgc2VsZi5wb29sLm1hcChpZGVudGl0eSwgb2JqcykKKworICAgICAgICBkZWwgb2JqcworICAgICAgICB0aW1lLnNsZWVwKERFTFRBKSAgIyBsZXQgdGhyZWFkZWQgY2xlYW51cCBjb2RlIHJ1bgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldCh3cigpIGZvciB3ciBpbiByZWZzKSwge05vbmV9KQorICAgICAgICAjIFdpdGggYSBwcm9jZXNzIHBvb2wsIGNvcGllcyBvZiB0aGUgb2JqZWN0cyBhcmUgcmV0dXJuZWQsIGNoZWNrCisgICAgICAgICMgdGhleSB3ZXJlIHJlbGVhc2VkIHRvby4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb3VudGVkT2JqZWN0Lm5faW5zdGFuY2VzLCAwKQorCisKIGRlZiB1bnBpY2tsZWFibGVfcmVzdWx0KCk6CiAgICAgcmV0dXJuIGxhbWJkYTogNDIKIApAQCAtMTQ0OCwxMCArMTUxNywxMCBAQAogICAgICAgICAgICAgICAjJ2hhbGxceGMzXHhhNSB2XHhjM1x4YTRybGRlbiddICMgVVRGLTgKICAgICAgICAgICAgICAgXQogICAgIHJlc3VsdCA9IHZhbHVlc1s6XQotICAgIGlmIHRlc3Rfc3VwcG9ydC5oYXZlX3VuaWNvZGU6CisgICAgaWYgc3VwcG9ydC5oYXZlX3VuaWNvZGU6CiAgICAgICAgICNyZXN1bHRbLTFdID0gdSdoYWxsXHhlNSB2XHhlNHJsZGVuJwotICAgICAgICB1dmFsdWUgPSB0ZXN0X3N1cHBvcnQudShyJ1x1MDQzZlx1MDQ0MFx1MDQzOFx1MDQzMlx1MDQ1Nlx1MDQ0MiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXHUwNDQxXHUwNDMyXHUwNDU2XHUwNDQyJykKKyAgICAgICAgdXZhbHVlID0gc3VwcG9ydC51KHInXHUwNDNmXHUwNDQwXHUwNDM4XHUwNDMyXHUwNDU2XHUwNDQyICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXHUwNDQxXHUwNDMyXHUwNDU2XHUwNDQyJykKICAgICAgICAgdmFsdWVzLmFwcGVuZCh1dmFsdWUpCiAgICAgICAgIHJlc3VsdC5hcHBlbmQodXZhbHVlKQogCkBAIC0xNDY5LDcgKzE1MzgsNyBAQAogICAgICAgICBhdXRoa2V5ID0gb3MudXJhbmRvbSgzMikKIAogICAgICAgICBtYW5hZ2VyID0gUXVldWVNYW5hZ2VyKAotICAgICAgICAgICAgYWRkcmVzcz0odGVzdC50ZXN0X3N1cHBvcnQuSE9TVCwgMCksIGF1dGhrZXk9YXV0aGtleSwgc2VyaWFsaXplcj1TRVJJQUxJWkVSCisgICAgICAgICAgICBhZGRyZXNzPSh0ZXN0LnN1cHBvcnQuSE9TVCwgMCksIGF1dGhrZXk9YXV0aGtleSwgc2VyaWFsaXplcj1TRVJJQUxJWkVSCiAgICAgICAgICAgICApCiAgICAgICAgIG1hbmFnZXIuc3RhcnQoKQogCkBAIC0xNTA2LDcgKzE1NzUsNyBAQAogICAgIGRlZiB0ZXN0X3JhcGlkX3Jlc3RhcnQoc2VsZik6CiAgICAgICAgIGF1dGhrZXkgPSBvcy51cmFuZG9tKDMyKQogICAgICAgICBtYW5hZ2VyID0gUXVldWVNYW5hZ2VyKAotICAgICAgICAgICAgYWRkcmVzcz0odGVzdC50ZXN0X3N1cHBvcnQuSE9TVCwgMCksIGF1dGhrZXk9YXV0aGtleSwgc2VyaWFsaXplcj1TRVJJQUxJWkVSKQorICAgICAgICAgICAgYWRkcmVzcz0odGVzdC5zdXBwb3J0LkhPU1QsIDApLCBhdXRoa2V5PWF1dGhrZXksIHNlcmlhbGl6ZXI9U0VSSUFMSVpFUikKICAgICAgICAgc3J2ciA9IG1hbmFnZXIuZ2V0X3NlcnZlcigpCiAgICAgICAgIGFkZHIgPSBzcnZyLmFkZHJlc3MKICAgICAgICAgIyBDbG9zZSB0aGUgY29ubmVjdGlvbi5MaXN0ZW5lciBzb2NrZXQgd2hpY2ggZ2V0cyBvcGVuZWQgYXMgYSBwYXJ0CkBAIC0xNTE1LDEyICsxNTg0LDEzIEBACiAgICAgICAgIG1hbmFnZXIuc3RhcnQoKQogCiAgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3B1dHRlciwgYXJncz0obWFuYWdlci5hZGRyZXNzLCBhdXRoa2V5KSkKLSAgICAgICAgcC5kYWVtb24gPSBUcnVlCiAgICAgICAgIHAuc3RhcnQoKQorICAgICAgICBwLmpvaW4oKQogICAgICAgICBxdWV1ZSA9IG1hbmFnZXIuZ2V0X3F1ZXVlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxdWV1ZS5nZXQoKSwgJ2hlbGxvIHdvcmxkJykKICAgICAgICAgZGVsIHF1ZXVlCiAgICAgICAgIG1hbmFnZXIuc2h1dGRvd24oKQorCiAgICAgICAgIG1hbmFnZXIgPSBRdWV1ZU1hbmFnZXIoCiAgICAgICAgICAgICBhZGRyZXNzPWFkZHIsIGF1dGhrZXk9YXV0aGtleSwgc2VyaWFsaXplcj1TRVJJQUxJWkVSKQogICAgICAgICBtYW5hZ2VyLnN0YXJ0KCkKQEAgLTE3MTYsMTMgKzE3ODYsMTMgQEAKICAgICAgICAgcCA9IHNlbGYuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5fd3JpdGVmZCwgYXJncz0oY2hpbGRfY29ubiwgYiJmb28iKSkKICAgICAgICAgcC5kYWVtb24gPSBUcnVlCiAgICAgICAgIHAuc3RhcnQoKQotICAgICAgICB3aXRoIG9wZW4odGVzdF9zdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgZmQgPSBmLmZpbGVubygpCiAgICAgICAgICAgICBpZiBtc3ZjcnQ6CiAgICAgICAgICAgICAgICAgZmQgPSBtc3ZjcnQuZ2V0X29zZmhhbmRsZShmZCkKICAgICAgICAgICAgIHJlZHVjdGlvbi5zZW5kX2hhbmRsZShjb25uLCBmZCwgcC5waWQpCiAgICAgICAgIHAuam9pbigpCi0gICAgICAgIHdpdGggb3Blbih0ZXN0X3N1cHBvcnQuVEVTVEZOLCAicmIiKSBhcyBmOgorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiImZvbyIpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhIQVNfUkVEVUNUSU9OLCAidGVzdCBuZWVkcyBtdWx0aXByb2Nlc3NpbmcucmVkdWN0aW9uIikKQEAgLTE3NDEsNyArMTgxMSw3IEBACiAgICAgICAgIHAgPSBzZWxmLlByb2Nlc3ModGFyZ2V0PXNlbGYuX3dyaXRlZmQsIGFyZ3M9KGNoaWxkX2Nvbm4sIGIiYmFyIiwgVHJ1ZSkpCiAgICAgICAgIHAuZGFlbW9uID0gVHJ1ZQogICAgICAgICBwLnN0YXJ0KCkKLSAgICAgICAgd2l0aCBvcGVuKHRlc3Rfc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZjoKICAgICAgICAgICAgIGZkID0gZi5maWxlbm8oKQogICAgICAgICAgICAgZm9yIG5ld2ZkIGluIHJhbmdlKDI1NiwgTUFYRkQpOgogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9pc19mZF9hc3NpZ25lZChuZXdmZCk6CkBAIC0xNzU0LDcgKzE4MjQsNyBAQAogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICBvcy5jbG9zZShuZXdmZCkKICAgICAgICAgcC5qb2luKCkKLSAgICAgICAgd2l0aCBvcGVuKHRlc3Rfc3VwcG9ydC5URVNURk4sICJyYiIpIGFzIGY6CisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIGIiYmFyIikKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMjAzOCw2ICsyMTA4LDE0IEBACiAKICAgICBBTExPV0VEX1RZUEVTID0gKCdwcm9jZXNzZXMnLCkKIAorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5yZWdpc3RyeV9iYWNrdXAgPSB1dGlsLl9maW5hbGl6ZXJfcmVnaXN0cnkuY29weSgpCisgICAgICAgIHV0aWwuX2ZpbmFsaXplcl9yZWdpc3RyeS5jbGVhcigpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodXRpbC5fZmluYWxpemVyX3JlZ2lzdHJ5KQorICAgICAgICB1dGlsLl9maW5hbGl6ZXJfcmVnaXN0cnkudXBkYXRlKHNlbGYucmVnaXN0cnlfYmFja3VwKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF90ZXN0X2ZpbmFsaXplKGNscywgY29ubik6CiAgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgpAQCAtMjA4Nyw2ICsyMTY1LDU5IEBACiAgICAgICAgIHJlc3VsdCA9IFtvYmogZm9yIG9iaiBpbiBpdGVyKGNvbm4ucmVjdiwgJ1NUT1AnKV0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFsnYScsICdiJywgJ2QxMCcsICdkMDMnLCAnZDAyJywgJ2QwMScsICdlJ10pCiAKKyAgICBkZWYgdGVzdF90aHJlYWRfc2FmZXR5KHNlbGYpOgorICAgICAgICAjIGJwby0yNDQ4NDogX3J1bl9maW5hbGl6ZXJzKCkgc2hvdWxkIGJlIHRocmVhZC1zYWZlCisgICAgICAgIGRlZiBjYigpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGNsYXNzIEZvbyhvYmplY3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYucmVmID0gc2VsZiAgIyBjcmVhdGUgcmVmZXJlbmNlIGN5Y2xlCisgICAgICAgICAgICAgICAgIyBpbnNlcnQgZmluYWxpemVyIGF0IHJhbmRvbSBrZXkKKyAgICAgICAgICAgICAgICB1dGlsLkZpbmFsaXplKHNlbGYsIGNiLCBleGl0cHJpb3JpdHk9cmFuZG9tLnJhbmRpbnQoMSwgMTAwKSkKKworICAgICAgICBmaW5pc2ggPSBGYWxzZQorICAgICAgICBleGMgPSBbXQorCisgICAgICAgIGRlZiBydW5fZmluYWxpemVycygpOgorICAgICAgICAgICAgd2hpbGUgbm90IGZpbmlzaDoKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKHJhbmRvbS5yYW5kb20oKSAqIDFlLTEpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIEEgR0MgcnVuIHdpbGwgZXZlbnR1YWxseSBoYXBwZW4gZHVyaW5nIHRoaXMsCisgICAgICAgICAgICAgICAgICAgICMgY29sbGVjdGluZyBzdGFsZSBGb28ncyBhbmQgbXV0YXRpbmcgdGhlIHJlZ2lzdHJ5CisgICAgICAgICAgICAgICAgICAgIHV0aWwuX3J1bl9maW5hbGl6ZXJzKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGV4Yy5hcHBlbmQoZSkKKworICAgICAgICBkZWYgbWFrZV9maW5hbGl6ZXJzKCk6CisgICAgICAgICAgICBkID0ge30KKyAgICAgICAgICAgIHdoaWxlIG5vdCBmaW5pc2g6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAjIE9sZCBGb28ncyBnZXQgZ3JhZHVhbGx5IHJlcGxhY2VkIGFuZCBsYXRlcgorICAgICAgICAgICAgICAgICAgICAjIGNvbGxlY3RlZCBieSB0aGUgR0MgKGJlY2F1c2Ugb2YgdGhlIGN5Y2xpYyByZWYpCisgICAgICAgICAgICAgICAgICAgIGRbcmFuZG9tLmdldHJhbmRiaXRzKDUpXSA9IHtGb28oKSBmb3IgaSBpbiByYW5nZSgxMCl9CisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgICAgICBleGMuYXBwZW5kKGUpCisgICAgICAgICAgICAgICAgICAgIGQuY2xlYXIoKQorCisgICAgICAgIG9sZF9pbnRlcnZhbCA9IHN5cy5nZXRjaGVja2ludGVydmFsKCkKKyAgICAgICAgb2xkX3RocmVzaG9sZCA9IGdjLmdldF90aHJlc2hvbGQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzeXMuc2V0Y2hlY2tpbnRlcnZhbCgxMCkKKyAgICAgICAgICAgIGdjLnNldF90aHJlc2hvbGQoNSwgNSwgNSkKKyAgICAgICAgICAgIHRocmVhZHMgPSBbdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX2ZpbmFsaXplcnMpLAorICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1tYWtlX2ZpbmFsaXplcnMpXQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnN0YXJ0X3RocmVhZHModGhyZWFkcyk6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCg0LjApICAjIFdhaXQgYSBiaXQgdG8gdHJpZ2dlciByYWNlIGNvbmRpdGlvbgorICAgICAgICAgICAgICAgIGZpbmlzaCA9IFRydWUKKyAgICAgICAgICAgIGlmIGV4YzoKKyAgICAgICAgICAgICAgICByYWlzZSBleGNbMF0KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHN5cy5zZXRjaGVja2ludGVydmFsKG9sZF9pbnRlcnZhbCkKKyAgICAgICAgICAgIGdjLnNldF90aHJlc2hvbGQoKm9sZF90aHJlc2hvbGQpCisgICAgICAgICAgICBnYy5jb2xsZWN0KCkgICMgQ29sbGVjdCByZW1haW5pbmcgRm9vJ3MKKworCiAjCiAjIFRlc3QgdGhhdCBmcm9tIC4uLiBpbXBvcnQgKiB3b3JrcyBmb3IgZWFjaCBtb2R1bGUKICMKQEAgLTI1MDQsNyArMjYzNSw3IEBACiAgICAgICAgIGZsYWdzID0gKHR1cGxlKHN5cy5mbGFncyksIGdyYW5kY2hpbGRfZmxhZ3MpCiAgICAgICAgIHByaW50KGpzb24uZHVtcHMoZmxhZ3MpKQogCi0gICAgQHRlc3Rfc3VwcG9ydC5yZXF1aXJlc191bmljb2RlICAjIFhYWCBqc29uIG5lZWRzIHVuaWNvZGUgc3VwcG9ydAorICAgIEBzdXBwb3J0LnJlcXVpcmVzX3VuaWNvZGUgICMgWFhYIGpzb24gbmVlZHMgdW5pY29kZSBzdXBwb3J0CiAgICAgZGVmIHRlc3RfZmxhZ3Moc2VsZik6CiAgICAgICAgIGltcG9ydCBqc29uLCBzdWJwcm9jZXNzCiAgICAgICAgICMgc3RhcnQgY2hpbGQgcHJvY2VzcyB1c2luZyB1bnVzdWFsIGZsYWdzCkBAIC0yNTUwLDYgKzI2ODEsOSBAQAogCiBjbGFzcyBUZXN0SWdub3JlRUlOVFIodW5pdHRlc3QuVGVzdENhc2UpOgogCisgICAgIyBTZW5kaW5nIENPTk5fTUFYX1NJWkUgYnl0ZXMgaW50byBhIG11bHRpcHJvY2Vzc2luZyBwaXBlIG11c3QgYmxvY2sKKyAgICBDT05OX01BWF9TSVpFID0gbWF4KHN1cHBvcnQuUElQRV9NQVhfU0laRSwgc3VwcG9ydC5TT0NLX01BWF9TSVpFKQorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF90ZXN0X2lnbm9yZShjbHMsIGNvbm4pOgogICAgICAgICBkZWYgaGFuZGxlcihzaWdudW0sIGZyYW1lKToKQEAgLTI1NTgsNyArMjY5Miw3IEBACiAgICAgICAgIGNvbm4uc2VuZCgncmVhZHknKQogICAgICAgICB4ID0gY29ubi5yZWN2KCkKICAgICAgICAgY29ubi5zZW5kKHgpCi0gICAgICAgIGNvbm4uc2VuZF9ieXRlcyhiJ3gnKigxMDI0KjEwMjQpKSAgICMgc2VuZGluZyAxIE1CIHNob3VsZCBibG9jaworICAgICAgICBjb25uLnNlbmRfYnl0ZXMoYid4JyAqIGNscy5DT05OX01BWF9TSVpFKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihzaWduYWwsICdTSUdVU1IxJyksICdyZXF1aXJlcyBTSUdVU1IxJykKICAgICBkZWYgdGVzdF9pZ25vcmUoc2VsZik6CkBAIC0yNTc3LDcgKzI3MTEsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLnJlY3YoKSwgMTIzNCkKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQogICAgICAgICAgICAgb3Mua2lsbChwLnBpZCwgc2lnbmFsLlNJR1VTUjEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbm4ucmVjdl9ieXRlcygpLCBiJ3gnKigxMDI0KjEwMjQpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25uLnJlY3ZfYnl0ZXMoKSwgYid4JyAqIHNlbGYuQ09OTl9NQVhfU0laRSkKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC4xKQogICAgICAgICAgICAgcC5qb2luKCkKICAgICAgICAgZmluYWxseToKQEAgLTI2MzQsNyArMjc2OCw3IEBACiAgICAgY2hlY2tfZW5vdWdoX3NlbWFwaG9yZXMoKQogCiAgICAgaWYgcnVuIGlzIE5vbmU6Ci0gICAgICAgIGZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCBhcyBydW4KKyAgICAgICAgZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCBhcyBydW4KIAogICAgIHV0aWwuZ2V0X3RlbXBfZGlyKCkgICAgICMgY3JlYXRlcyB0ZW1wIGRpcmVjdG9yeSBmb3IgdXNlIGJ5IGFsbCBwcm9jZXNzZXMKIApAQCAtMjY1OSw3ICsyNzkzLDcgQEAKICAgICAjIG1vZHVsZSBkdXJpbmcgdGhlc2UgdGVzdHMgaXMgYXQgbGVhc3QgcGxhdGZvcm0gZGVwZW5kZW50IGFuZCBwb3NzaWJseQogICAgICMgbm9uLWRldGVybWluaXN0aWMgb24gYW55IGdpdmVuIHBsYXRmb3JtLiBTbyB3ZSBkb24ndCBtaW5kIGlmIHRoZSBsaXN0ZWQKICAgICAjIHdhcm5pbmdzIGFyZW4ndCBhY3R1YWxseSByYWlzZWQuCi0gICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hlY2tfcHkza193YXJuaW5ncygKKyAgICB3aXRoIHN1cHBvcnQuY2hlY2tfcHkza193YXJuaW5ncygKICAgICAgICAgICAgICgiLitfXyhnZXR8c2V0KXNsaWNlX18gaGFzIGJlZW4gcmVtb3ZlZCIsIERlcHJlY2F0aW9uV2FybmluZyksCiAgICAgICAgICAgICAociJzeXMuZXhjX2NsZWFyXChcKSBub3Qgc3VwcG9ydGVkIiwgRGVwcmVjYXRpb25XYXJuaW5nKSwKICAgICAgICAgICAgIHF1aWV0PVRydWUpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9uZXRyYy5weSBiL0xpYi90ZXN0L3Rlc3RfbmV0cmMucHkKaW5kZXggNDE1NmM1My4uNGQ0OWE1NSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9uZXRyYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X25ldHJjLnB5CkBAIC01LDI1ICs1LDI5IEBACiAKIGNsYXNzIE5ldHJjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIG1ha2VfbnJjKHNlbGYsIHRlc3RfZGF0YSk6CisgICAgZGVmIG1ha2VfbnJjKHNlbGYsIHRlc3RfZGF0YSwgY2xlYW51cD1UcnVlKToKICAgICAgICAgdGVzdF9kYXRhID0gdGV4dHdyYXAuZGVkZW50KHRlc3RfZGF0YSkKICAgICAgICAgbW9kZSA9ICd3JwogICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2N5Z3dpbic6CiAgICAgICAgICAgICBtb2RlICs9ICd0JwogICAgICAgICB3aXRoIG9wZW4odGVtcF9maWxlbmFtZSwgbW9kZSkgYXMgZnA6CiAgICAgICAgICAgICBmcC53cml0ZSh0ZXN0X2RhdGEpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy51bmxpbmssIHRlbXBfZmlsZW5hbWUpCisgICAgICAgIGlmIGNsZWFudXA6CisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCB0ZW1wX2ZpbGVuYW1lKQogICAgICAgICByZXR1cm4gbmV0cmMubmV0cmModGVtcF9maWxlbmFtZSkKIAogICAgIGRlZiB0ZXN0X2RlZmF1bHQoc2VsZik6CiAgICAgICAgIG5yYyA9IHNlbGYubWFrZV9ucmMoIiIiXAogICAgICAgICAgICAgbWFjaGluZSBob3N0MS5kb21haW4uY29tIGxvZ2luIGxvZzEgcGFzc3dvcmQgcGFzczEgYWNjb3VudCBhY2N0MQogICAgICAgICAgICAgZGVmYXVsdCBsb2dpbiBsb2cyIHBhc3N3b3JkIHBhc3MyCi0gICAgICAgICAgICAiIiIpCisgICAgICAgICAgICAiIiIsIGNsZWFudXA9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnJjLmhvc3RzWydob3N0MS5kb21haW4uY29tJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdsb2cxJywgJ2FjY3QxJywgJ3Bhc3MxJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnJjLmhvc3RzWydkZWZhdWx0J10sICgnbG9nMicsIE5vbmUsICdwYXNzMicpKQogCisgICAgICAgIG5yYzIgPSBzZWxmLm1ha2VfbnJjKG5yYy5fX3JlcHJfXygpLCBjbGVhbnVwPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnJjLmhvc3RzLCBucmMyLmhvc3RzKQorCiAgICAgZGVmIHRlc3RfbWFjcm9zKHNlbGYpOgogICAgICAgICBucmMgPSBzZWxmLm1ha2VfbnJjKCIiIlwKICAgICAgICAgICAgIG1hY2RlZiBtYWNybzEKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3JkZXJlZF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKaW5kZXggODVlNDg0MS4uMTczMjZjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKQEAgLTIyMCw2ICsyMjAsMTkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKG9kKSwKICAgICAgICAgICAgICJPcmRlcmVkRGljdChbKCdhJywgTm9uZSksICgnYicsIE5vbmUpLCAoJ2MnLCBOb25lKSwgKCd4JywgLi4uKV0pIikKIAorICAgIGRlZiB0ZXN0X3JlcHJfcmVjdXJzaXZlX3ZhbHVlcyhzZWxmKToKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdCgpCisgICAgICAgIG9kWzQyXSA9IG9kLnZpZXd2YWx1ZXMoKQorICAgICAgICByID0gcmVwcihvZCkKKyAgICAgICAgIyBDYW5ub3QgcGVyZm9ybSBhIHN0cm9uZ2VyIHRlc3QsIGFzIHRoZSBjb250ZW50cyBvZiB0aGUgcmVwcgorICAgICAgICAjIGFyZSBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQuICBBbGwgd2UgY2FuIHNheSBpcyB0aGF0IHdlCisgICAgICAgICMgd2FudCBhIHN0ciByZXN1bHQsIG5vdCBhbiBleGNlcHRpb24gb2YgYW55IHNvcnQuCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShyLCBzdHIpCisgICAgICAgIG9kWzQyXSA9IG9kLnZpZXdpdGVtcygpCisgICAgICAgIHIgPSByZXByKG9kKQorICAgICAgICAjIEFnYWluLgorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2Uociwgc3RyKQorCiAgICAgZGVmIHRlc3Rfc2V0ZGVmYXVsdChzZWxmKToKICAgICAgICAgcGFpcnMgPSBbKCdjJywgMSksICgnYicsIDIpLCAoJ2EnLCAzKSwgKCdkJywgNCksICgnZScsIDUpLCAoJ2YnLCA2KV0KICAgICAgICAgc2h1ZmZsZShwYWlycykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkgYi9MaWIvdGVzdC90ZXN0X29zLnB5CmluZGV4IGI3MGUyODUuLjg0ZTIwZTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcy5weQpAQCAtNTk5LDExICs1OTksMzIgQEAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQogCiAKLWNsYXNzIEV4ZWN2cGVUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CitjbGFzcyBFeGVjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZXhlY3ZwZV93aXRoX2JhZF9hcmdsaXN0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcy5leGVjdnBlLCAnbm90ZXBhZCcsIFtdLCBOb25lKQogCisgICAgZGVmIHRlc3RfZXhlY3ZlX2ludmFsaWRfZW52KHNlbGYpOgorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddCisKKyAgICAgICAgIyBudWxsIGNoYXJhY3RlciBpbiB0aGUgZW52aXJvbWVudCB2YXJpYWJsZSBuYW1lCisgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIG5ld2VudlsiRlJVSVRcMFZFR0VUQUJMRSJdID0gImNhYmJhZ2UiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG9zLmV4ZWN2ZShhcmdzWzBdLCBhcmdzLCBuZXdlbnYpCisKKyAgICAgICAgIyBudWxsIGNoYXJhY3RlciBpbiB0aGUgZW52aXJvbWVudCB2YXJpYWJsZSB2YWx1ZQorICAgICAgICBuZXdlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBuZXdlbnZbIkZSVUlUIl0gPSAib3JhbmdlXDBWRUdFVEFCTEU9Y2FiYmFnZSIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgb3MuZXhlY3ZlKGFyZ3NbMF0sIGFyZ3MsIG5ld2VudikKKworICAgICAgICAjIGVxdWFsIGNoYXJhY3RlciBpbiB0aGUgZW52aXJvbWVudCB2YXJpYWJsZSBuYW1lCisgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIG5ld2VudlsiRlJVSVQ9T1JBTkdFIl0gPSAibGVtb24iCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBvcy5leGVjdmUoYXJnc1swXSwgYXJncywgbmV3ZW52KQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQogY2xhc3MgV2luMzJFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTg3OSw2ICs5MDAsMTEyIEBACiAgICAgICAgIHNlbGYuX2tpbGxfd2l0aF9ldmVudChzaWduYWwuQ1RSTF9CUkVBS19FVkVOVCwgIkNUUkxfQlJFQUtfRVZFTlQiKQogCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luMzIgc3BlY2lmaWMgdGVzdHMiKQorY2xhc3MgV2luMzJMaXN0ZGlyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3QgbGlzdGRpciBvbiBXaW5kb3dzLiIiIgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZWRfcGF0aHMgPSBbXQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyKToKKyAgICAgICAgICAgIGRpcl9uYW1lID0gJ1NVQiVkJyAlIGkKKyAgICAgICAgICAgIGRpcl9wYXRoID0gb3MucGF0aC5qb2luKHN1cHBvcnQuVEVTVEZOLCBkaXJfbmFtZSkKKyAgICAgICAgICAgIGZpbGVfbmFtZSA9ICdGSUxFJWQnICUgaQorICAgICAgICAgICAgZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKHN1cHBvcnQuVEVTVEZOLCBmaWxlX25hbWUpCisgICAgICAgICAgICBvcy5tYWtlZGlycyhkaXJfcGF0aCkKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKCJJJ20gJXMgYW5kIHByb3VkIG9mIGl0LiBCbGFtZSB0ZXN0X29zLlxuIiAlIGZpbGVfcGF0aCkKKyAgICAgICAgICAgIHNlbGYuY3JlYXRlZF9wYXRocy5leHRlbmQoW2Rpcl9uYW1lLCBmaWxlX25hbWVdKQorICAgICAgICBzZWxmLmNyZWF0ZWRfcGF0aHMuc29ydCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNodXRpbC5ybXRyZWUoc3VwcG9ydC5URVNURk4pCisKKyAgICBkZWYgdGVzdF9saXN0ZGlyX25vX2V4dGVuZGVkX3BhdGgoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2hlbiB0aGUgcGF0aCBpcyBub3QgYW4gImV4dGVuZGVkIiBwYXRoLiIiIgorICAgICAgICAjIHVuaWNvZGUKKyAgICAgICAgZnNfZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihzdXBwb3J0LlRFU1RGTi5kZWNvZGUoZnNfZW5jb2RpbmcpKSksCisgICAgICAgICAgICAgICAgW3BhdGguZGVjb2RlKGZzX2VuY29kaW5nKSBmb3IgcGF0aCBpbiBzZWxmLmNyZWF0ZWRfcGF0aHNdKQorCisgICAgICAgICMgYnl0ZXMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKSwKKyAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZWRfcGF0aHMpCisKKyAgICBkZWYgdGVzdF9saXN0ZGlyX2V4dGVuZGVkX3BhdGgoc2VsZik6CisgICAgICAgICIiIlRlc3Qgd2hlbiB0aGUgcGF0aCBzdGFydHMgd2l0aCAnXFxcXD9cXCcuIiIiCisgICAgICAgICMgU2VlOiBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvd2luZG93cy9kZXNrdG9wL2FhMzY1MjQ3KHY9dnMuODUpLmFzcHgjbWF4cGF0aAorICAgICAgICAjIHVuaWNvZGUKKyAgICAgICAgZnNfZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKKyAgICAgICAgcGF0aCA9IHUnXFxcXD9cXCcgKyBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4uZGVjb2RlKGZzX2VuY29kaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihwYXRoKSksCisgICAgICAgICAgICAgICAgW3BhdGguZGVjb2RlKGZzX2VuY29kaW5nKSBmb3IgcGF0aCBpbiBzZWxmLmNyZWF0ZWRfcGF0aHNdKQorCisgICAgICAgICMgYnl0ZXMKKyAgICAgICAgcGF0aCA9IGInXFxcXD9cXCcgKyBvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgc29ydGVkKG9zLmxpc3RkaXIocGF0aCkpLAorICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlZF9wYXRocykKKworCitjbGFzcyBTcGF3blRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgX3Rlc3RfaW52YWxpZF9lbnYoc2VsZiwgc3Bhd24pOgorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddCisKKyAgICAgICAgIyBudWxsIGNoYXJhY3RlciBpbiB0aGUgZW52aXJvbWVudCB2YXJpYWJsZSBuYW1lCisgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIG5ld2VudlsiRlJVSVRcMFZFR0VUQUJMRSJdID0gImNhYmJhZ2UiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4aXRjb2RlID0gc3Bhd24ob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzLCBuZXdlbnYpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAxMjcpCisKKyAgICAgICAgIyBudWxsIGNoYXJhY3RlciBpbiB0aGUgZW52aXJvbWVudCB2YXJpYWJsZSB2YWx1ZQorICAgICAgICBuZXdlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBuZXdlbnZbIkZSVUlUIl0gPSAib3JhbmdlXDBWRUdFVEFCTEU9Y2FiYmFnZSIKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZXhpdGNvZGUgPSBzcGF3bihvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MsIG5ld2VudikKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIDEyNykKKworICAgICAgICAjIGVxdWFsIGNoYXJhY3RlciBpbiB0aGUgZW52aXJvbWVudCB2YXJpYWJsZSBuYW1lCisgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIG5ld2VudlsiRlJVSVQ9T1JBTkdFIl0gPSAibGVtb24iCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4aXRjb2RlID0gc3Bhd24ob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzLCBuZXdlbnYpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMTI3KQorCisgICAgICAgICMgZXF1YWwgY2hhcmFjdGVyIGluIHRoZSBlbnZpcm9tZW50IHZhcmlhYmxlIHZhbHVlCisgICAgICAgIGZpbGVuYW1lID0gdGVzdF9zdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAodGVzdF9zdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKCdpbXBvcnQgc3lzLCBvc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2lmIG9zLmdldGVudigiRlJVSVQiKSAhPSAib3JhbmdlPWxlbW9uIjpcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3InKQorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCBmaWxlbmFtZV0KKyAgICAgICAgbmV3ZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgbmV3ZW52WyJGUlVJVCJdID0gIm9yYW5nZT1sZW1vbiIKKyAgICAgICAgZXhpdGNvZGUgPSBzcGF3bihvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MsIG5ld2VudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgMCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICdzcGF3bnZlJyksICd0ZXN0IG5lZWRzIG9zLnNwYXdudmUoKScpCisgICAgZGVmIHRlc3Rfc3Bhd252ZV9pbnZhbGlkX2VudihzZWxmKToKKyAgICAgICAgc2VsZi5fdGVzdF9pbnZhbGlkX2Vudihvcy5zcGF3bnZlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ3NwYXdudnBlJyksICd0ZXN0IG5lZWRzIG9zLnNwYXdudnBlKCknKQorICAgIGRlZiB0ZXN0X3NwYXdudnBlX2ludmFsaWRfZW52KHNlbGYpOgorICAgICAgICBzZWxmLl90ZXN0X2ludmFsaWRfZW52KG9zLnNwYXdudnBlKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0X3N1cHBvcnQucnVuX3VuaXR0ZXN0KAogICAgICAgICBGaWxlVGVzdHMsCkBAIC04OTAsMTEgKzEwMTcsMTIgQEAKICAgICAgICAgRGV2TnVsbFRlc3RzLAogICAgICAgICBVUmFuZG9tVGVzdHMsCiAgICAgICAgIFVSYW5kb21GRFRlc3RzLAotICAgICAgICBFeGVjdnBlVGVzdHMsCisgICAgICAgIEV4ZWNUZXN0cywKICAgICAgICAgV2luMzJFcnJvclRlc3RzLAogICAgICAgICBUZXN0SW52YWxpZEZELAogICAgICAgICBQb3NpeFVpZEdpZFRlc3RzLAotICAgICAgICBXaW4zMktpbGxUZXN0cworICAgICAgICBXaW4zMktpbGxUZXN0cywKKyAgICAgICAgU3Bhd25UZXN0cywKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CmluZGV4IDY1YTc2MmMuLjczOTc0YTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGFyc2VyLnB5CkBAIC0xLDQgKzEsNiBAQAoraW1wb3J0IGNvcHkKIGltcG9ydCBwYXJzZXIKK2ltcG9ydCBwaWNrbGUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogaW1wb3J0IHN0cnVjdApAQCAtMjYxLDIxICsyNjMsMTkgQEAKICAgICAgICAgIyBBbiBhYnNvbHV0ZWx5IG1pbmltYWwgdGVzdCBvZiBwb3NpdGlvbiBpbmZvcm1hdGlvbi4gIEJldHRlcgogICAgICAgICAjIHRlc3RzIHdvdWxkIGJlIGEgYmlnIHByb2plY3QuCiAgICAgICAgIGNvZGUgPSAiZGVmIGYoeCk6XG4gICAgcmV0dXJuIHggKyAxIgotICAgICAgICBzdDEgPSBwYXJzZXIuc3VpdGUoY29kZSkKLSAgICAgICAgc3QyID0gc3QxLnRvdHVwbGUobGluZV9pbmZvPTEsIGNvbF9pbmZvPTEpCisgICAgICAgIHN0ID0gcGFyc2VyLnN1aXRlKGNvZGUpCiAKICAgICAgICAgZGVmIHdhbGsodHJlZSk6CiAgICAgICAgICAgICBub2RlX3R5cGUgPSB0cmVlWzBdCiAgICAgICAgICAgICBuZXh0ID0gdHJlZVsxXQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShuZXh0LCB0dXBsZSk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5leHQsICh0dXBsZSwgbGlzdCkpOgogICAgICAgICAgICAgICAgIGZvciBlbHQgaW4gdHJlZVsxOl06CiAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIHdhbGsoZWx0KToKICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHgKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgeWllbGQgdHJlZQogCi0gICAgICAgIHRlcm1pbmFscyA9IGxpc3Qod2FsayhzdDIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsKKyAgICAgICAgZXhwZWN0ZWQgPSBbCiAgICAgICAgICAgICAoMSwgJ2RlZicsIDEsIDApLAogICAgICAgICAgICAgKDEsICdmJywgMSwgNCksCiAgICAgICAgICAgICAoNywgJygnLCAxLCA1KSwKQEAgLTI5MSw4ICsyOTEsMjUgQEAKICAgICAgICAgICAgICg0LCAnJywgMiwgMTYpLAogICAgICAgICAgICAgKDYsICcnLCAyLCAtMSksCiAgICAgICAgICAgICAoNCwgJycsIDIsIC0xKSwKLSAgICAgICAgICAgICgwLCAnJywgMiwgLTEpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0ZXJtaW5hbHMpCisgICAgICAgICAgICAoMCwgJycsIDIsIC0xKSwKKyAgICAgICAgXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh3YWxrKHN0LnRvdHVwbGUobGluZV9pbmZvPVRydWUsIGNvbF9pbmZvPVRydWUpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh3YWxrKHN0LnRvdHVwbGUoKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsodCwgbikgZm9yIHQsIG4sIGwsIGMgaW4gZXhwZWN0ZWRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qod2FsayhzdC50b3R1cGxlKGxpbmVfaW5mbz1UcnVlKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsodCwgbiwgbCkgZm9yIHQsIG4sIGwsIGMgaW4gZXhwZWN0ZWRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qod2FsayhzdC50b3R1cGxlKGNvbF9pbmZvPVRydWUpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgWyh0LCBuLCBjKSBmb3IgdCwgbiwgbCwgYyBpbiBleHBlY3RlZF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh3YWxrKHN0LnRvbGlzdChsaW5lX2luZm89VHJ1ZSwgY29sX2luZm89VHJ1ZSkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbbGlzdCh4KSBmb3IgeCBpbiBleHBlY3RlZF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh3YWxrKHBhcnNlci5zdDJ0dXBsZShzdCwgbGluZV9pbmZvPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfaW5mbz1UcnVlKSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3Qod2FsayhwYXJzZXIuc3QybGlzdChzdCwgbGluZV9pbmZvPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF9pbmZvPVRydWUpKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgW2xpc3QoeCkgZm9yIHggaW4gZXhwZWN0ZWRdKQogCiAKICMKQEAgLTMxNCw2ICszMzEsNTIgQEAKICAgICAgICAgIyBub3QgZXZlbiByZW1vdGVseSB2YWxpZDoKICAgICAgICAgc2VsZi5jaGVja19iYWRfdHJlZSgoMSwgMiwgMyksICI8anVuaz4iKQogCisgICAgZGVmIHRlc3RfaWxsZWdhbF90ZXJtaW5hbChzZWxmKToKKyAgICAgICAgdHJlZSA9IFwKKyAgICAgICAgICAgICgyNTcsCisgICAgICAgICAgICAgKDI2NywKKyAgICAgICAgICAgICAgKDI2OCwKKyAgICAgICAgICAgICAgICgyNjksCisgICAgICAgICAgICAgICAgKDI3NCwKKyAgICAgICAgICAgICAgICAgKDEsKSkpLAorICAgICAgICAgICAgICAgKDQsICcnKSkpLAorICAgICAgICAgICAgICg0LCAnJyksCisgICAgICAgICAgICAgKDAsICcnKSkKKyAgICAgICAgc2VsZi5jaGVja19iYWRfdHJlZSh0cmVlLCAidG9vIHNtYWxsIGl0ZW1zIGluIHRlcm1pbmFsIG5vZGUiKQorICAgICAgICB0cmVlID0gXAorICAgICAgICAgICAgKDI1NywKKyAgICAgICAgICAgICAoMjY3LAorICAgICAgICAgICAgICAoMjY4LAorICAgICAgICAgICAgICAgKDI2OSwKKyAgICAgICAgICAgICAgICAoMjc0LAorICAgICAgICAgICAgICAgICAoMSwgdSdwYXNzJykpKSwKKyAgICAgICAgICAgICAgICg0LCAnJykpKSwKKyAgICAgICAgICAgICAoNCwgJycpLAorICAgICAgICAgICAgICgwLCAnJykpCisgICAgICAgIHNlbGYuY2hlY2tfYmFkX3RyZWUodHJlZSwgIm5vbi1zdHJpbmcgc2Vjb25kIGl0ZW0gaW4gdGVybWluYWwgbm9kZSIpCisgICAgICAgIHRyZWUgPSBcCisgICAgICAgICAgICAoMjU3LAorICAgICAgICAgICAgICgyNjcsCisgICAgICAgICAgICAgICgyNjgsCisgICAgICAgICAgICAgICAoMjY5LAorICAgICAgICAgICAgICAgICgyNzQsCisgICAgICAgICAgICAgICAgICgxLCAncGFzcycsICcwJywgMCkpKSwKKyAgICAgICAgICAgICAgICg0LCAnJykpKSwKKyAgICAgICAgICAgICAoNCwgJycpLAorICAgICAgICAgICAgICgwLCAnJykpCisgICAgICAgIHNlbGYuY2hlY2tfYmFkX3RyZWUodHJlZSwgIm5vbi1pbnRlZ2VyIHRoaXJkIGl0ZW0gaW4gdGVybWluYWwgbm9kZSIpCisgICAgICAgIHRyZWUgPSBcCisgICAgICAgICAgICAoMjU3LAorICAgICAgICAgICAgICgyNjcsCisgICAgICAgICAgICAgICgyNjgsCisgICAgICAgICAgICAgICAoMjY5LAorICAgICAgICAgICAgICAgICgyNzQsCisgICAgICAgICAgICAgICAgICgxLCAncGFzcycsIDAsIDApKSksCisgICAgICAgICAgICAgICAoNCwgJycpKSksCisgICAgICAgICAgICAgKDQsICcnKSwKKyAgICAgICAgICAgICAoMCwgJycpKQorICAgICAgICBzZWxmLmNoZWNrX2JhZF90cmVlKHRyZWUsICJ0b28gbWFueSBpdGVtcyBpbiB0ZXJtaW5hbCBub2RlIikKKwogICAgIGRlZiB0ZXN0X2lsbGVnYWxfeWllbGRfMShzZWxmKToKICAgICAgICAgIyBJbGxlZ2FsIHlpZWxkIHN0YXRlbWVudDogZGVmIGYoKTogcmV0dXJuIDE7IHlpZWxkIDEKICAgICAgICAgdHJlZSA9IFwKQEAgLTU0MSw2ICs2MDQsMTggQEAKICAgICAgICAgICAgICAoNCwgJycpLCAoMCwgJycpKQogICAgICAgICBzZWxmLmNoZWNrX2JhZF90cmVlKHRyZWUsICJmcm9tIGltcG9ydCBhIikKIAorICAgIGRlZiB0ZXN0X2lsbGVnYWxfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgSWxsZWdhbCBlbmNvZGluZyBkZWNsYXJhdGlvbgorICAgICAgICB0cmVlID0gXAorICAgICAgICAgICAgKDMzOSwKKyAgICAgICAgICAgICAoMjU3LCAoMCwgJycpKSkKKyAgICAgICAgc2VsZi5jaGVja19iYWRfdHJlZSh0cmVlLCAibWlzc2VkIGVuY29kaW5nIikKKyAgICAgICAgdHJlZSA9IFwKKyAgICAgICAgICAgICgzMzksCisgICAgICAgICAgICAgKDI1NywgKDAsICcnKSksCisgICAgICAgICAgICAgIHUnaXNvLTg4NTktMScpCisgICAgICAgIHNlbGYuY2hlY2tfYmFkX3RyZWUodHJlZSwgIm5vbi1zdHJpbmcgZW5jb2RpbmciKQorCiAKIGNsYXNzIENvbXBpbGVUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTYwMiw2ICs2NzcsMjEgQEAKIGNsYXNzIFNUT2JqZWN0VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3Qgb3BlcmF0aW9ucyBvbiBTVCBvYmplY3RzIHRoZW1zZWx2ZXMiIiIKIAorICAgIGRlZiB0ZXN0X2NvcHlfcGlja2xlKHNlbGYpOgorICAgICAgICBzdHMgPSBbCisgICAgICAgICAgICBwYXJzZXIuZXhwcignMiArIDMnKSwKKyAgICAgICAgICAgIHBhcnNlci5zdWl0ZSgneCA9IDI7IHkgPSB4ICsgMycpLAorICAgICAgICAgICAgcGFyc2VyLmV4cHIoJ2xpc3QoeCoqMyBmb3IgeCBpbiByYW5nZSgyMCkpJykKKyAgICAgICAgXQorICAgICAgICBmb3Igc3QgaW4gc3RzOgorICAgICAgICAgICAgc3RfY29weSA9IGNvcHkuY29weShzdCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RfY29weS50b3R1cGxlKCksIHN0LnRvdHVwbGUoKSkKKyAgICAgICAgICAgIHN0X2NvcHkgPSBjb3B5LmRlZXBjb3B5KHN0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdF9jb3B5LnRvdHVwbGUoKSwgc3QudG90dXBsZSgpKQorICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MKzEpOgorICAgICAgICAgICAgICAgIHN0X2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKHN0LCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdF9jb3B5LnRvdHVwbGUoKSwgc3QudG90dXBsZSgpKQorCiAgICAgY2hlY2tfc2l6ZW9mID0gc3VwcG9ydC5jaGVja19zaXplb2YKIAogICAgIEBzdXBwb3J0LmNweXRob25fb25seQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wa2cucHkgYi9MaWIvdGVzdC90ZXN0X3BrZy5weQppbmRleCA1ZjE2NTliLi5mZjA1ZGNlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BrZy5weQpAQCAtMTM0LDcgKzEzNCw3IEBACiAKICAgICAgICAgcyA9ICIiIgogICAgICAgICAgICAgZnJvbSB0MiBpbXBvcnQgKgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpcigpLCBbJ3NlbGYnLCAnc3ViJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcigpLCBbJ3NlbGYnLCAnc3ViJ10pCiAgICAgICAgICAgICAiIiIKICAgICAgICAgc2VsZi5ydW5fY29kZShzKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQppbmRleCBmNzU0NTUwLi41NDI3NjNkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKQEAgLTQsNyArNCw3IEBACiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzdWJwcm9jZXNzCiAKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgUGxhdGZvcm1UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9hcmNoaXRlY3R1cmUoc2VsZik6CkBAIC0xOCw3ICsxOCw3IEBACiAgICAgICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICAgICAgICAgIHJldHVybiBwLmNvbW11bmljYXRlKCkKICAgICAgICAgICAgIHJlYWwgPSBvcy5wYXRoLnJlYWxwYXRoKHN5cy5leGVjdXRhYmxlKQotICAgICAgICAgICAgbGluayA9IG9zLnBhdGguYWJzcGF0aCh0ZXN0X3N1cHBvcnQuVEVTVEZOKQorICAgICAgICAgICAgbGluayA9IG9zLnBhdGguYWJzcGF0aChzdXBwb3J0LlRFU1RGTikKICAgICAgICAgICAgIG9zLnN5bWxpbmsocmVhbCwgbGluaykKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldChyZWFsKSwgZ2V0KGxpbmspKQpAQCAtMTYzLDcgKzE2Myw3IEBACiAgICAgICAgICMgdXNpbmcgaXQsIHBlcgogICAgICAgICAjIGh0dHA6Ly9ibG9ncy5tc2RuLmNvbS9kYXZpZC53YW5nL2FyY2hpdmUvMjAwNi8wMy8yNi9IT1dUTy1EZXRlY3QtUHJvY2Vzcy1CaXRuZXNzLmFzcHgKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudmlyb246CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCgpIGFzIGVudmlyb246CiAgICAgICAgICAgICAgICAgaWYgJ1BST0NFU1NPUl9BUkNISVRFVzY0MzInIGluIGVudmlyb246CiAgICAgICAgICAgICAgICAgICAgIGRlbCBlbnZpcm9uWydQUk9DRVNTT1JfQVJDSElURVc2NDMyJ10KICAgICAgICAgICAgICAgICBlbnZpcm9uWydQUk9DRVNTT1JfQVJDSElURUNUVVJFJ10gPSAnZm9vJwpAQCAtMjQ3LDcgKzI0Nyw2IEBACiAgICAgICAgIHJlcyA9IHBsYXRmb3JtLmRpc3QoKQogCiAgICAgZGVmIHRlc3RfbGliY192ZXIoc2VsZik6Ci0gICAgICAgIGltcG9ydCBvcwogICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHN5cy5leGVjdXRhYmxlKSBhbmQgXAogICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyhzeXMuZXhlY3V0YWJsZSsnLmV4ZScpOgogICAgICAgICAgICAgIyBDeWd3aW4gaG9ycm9yCkBAIC0yNTYsNiArMjU1LDEzIEBACiAgICAgICAgICAgICBleGVjdXRhYmxlID0gc3lzLmV4ZWN1dGFibGUKICAgICAgICAgcmVzID0gcGxhdGZvcm0ubGliY192ZXIoZXhlY3V0YWJsZSkKIAorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3YicpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGIneCcqKDE2Mzg0LTEwKSkKKyAgICAgICAgICAgIGYud3JpdGUoYidHTElCQ18xLjIzLjRcMEdMSUJDXzEuOVwwR0xJQkNfMS4yMVwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwbGF0Zm9ybS5saWJjX3ZlcihzdXBwb3J0LlRFU1RGTiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCdnbGliYycsICcxLjIzLjQnKSkKKwogICAgIGRlZiB0ZXN0X3BhcnNlX3JlbGVhc2VfZmlsZShzZWxmKToKIAogICAgICAgICBmb3IgaW5wdXQsIG91dHB1dCBpbiAoCkBAIC0yNzUsNyArMjgxLDcgQEAKIAogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdF9zdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgUGxhdGZvcm1UZXN0CiAgICAgKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvbGwucHkgYi9MaWIvdGVzdC90ZXN0X3BvbGwucHkKaW5kZXggMWUxOTVlZC4uN2FkNjkzZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9sbC5weQpAQCAtMjA1LDYgKzIwNSwyOCBAQAogICAgICAgICAgICAgb3Mud3JpdGUodywgYidzcGFtJykKICAgICAgICAgICAgIHQuam9pbigpCiAKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aHJlYWRpbmcsICdUaHJlYWRpbmcgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4nKQorICAgIEByZWFwX3RocmVhZHMKKyAgICBkZWYgdGVzdF9wb2xsX2Jsb2Nrc193aXRoX25lZ2F0aXZlX21zKHNlbGYpOgorICAgICAgICBmb3IgdGltZW91dF9tcyBpbiBbTm9uZSwgLTEwMDAsIC0xLCAtMS4wXToKKyAgICAgICAgICAgICMgQ3JlYXRlIHR3byBmaWxlIGRlc2NyaXB0b3JzLiBUaGlzIHdpbGwgYmUgdXNlZCB0byB1bmxvY2sKKyAgICAgICAgICAgICMgdGhlIGJsb2NraW5nIGNhbGwgdG8gcG9sbC5wb2xsIGluc2lkZSB0aGUgdGhyZWFkCisgICAgICAgICAgICByLCB3ID0gb3MucGlwZSgpCisgICAgICAgICAgICBwb2xsc3RlciA9IHNlbGVjdC5wb2xsKCkKKyAgICAgICAgICAgIHBvbGxzdGVyLnJlZ2lzdGVyKHIsIHNlbGVjdC5QT0xMSU4pCisKKyAgICAgICAgICAgIHBvbGxfdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cG9sbHN0ZXIucG9sbCwgYXJncz0odGltZW91dF9tcywpKQorICAgICAgICAgICAgcG9sbF90aHJlYWQuc3RhcnQoKQorICAgICAgICAgICAgcG9sbF90aHJlYWQuam9pbih0aW1lb3V0PTAuMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb2xsX3RocmVhZC5pc19hbGl2ZSgpKQorCisgICAgICAgICAgICAjIFdyaXRlIHRvIHRoZSBwaXBlIHNvIHBvbGxzdGVyLnBvbGwgdW5ibG9ja3MgYW5kIHRoZSB0aHJlYWQgZW5kcy4KKyAgICAgICAgICAgIG9zLndyaXRlKHcsIGInc3BhbScpCisgICAgICAgICAgICBwb2xsX3RocmVhZC5qb2luKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9sbF90aHJlYWQuaXNfYWxpdmUoKSkKKyAgICAgICAgICAgIG9zLmNsb3NlKHIpCisgICAgICAgICAgICBvcy5jbG9zZSh3KQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoUG9sbFRlc3RzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3BsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQppbmRleCAyM2Q2ODg3Li5kMjE0Mzc1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weQpAQCAtMjExLDYgKzIxMSwxNiBAQAogICAgIGRlZiB0ZXN0X3Jwb3Aoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0T0soc2VsZi5jbGllbnQucnBvcCgnZm9vJykpCiAKKyAgICBkZWYgdGVzdF9hcG9wX1JFRE9TKHNlbGYpOgorICAgICAgICAjIFJlcGxhY2Ugd2VsY29tZSB3aXRoIHZlcnkgbG9uZyBldmlsIHdlbGNvbWUuCisgICAgICAgICMgTkIgVGhlIHVwcGVyIGJvdW5kIG9uIHdlbGNvbWUgbGVuZ3RoIGlzIGN1cnJlbnRseSAyMDQ4LgorICAgICAgICAjIEF0IHRoaXMgbGVuZ3RoLCBldmlsIGlucHV0IG1ha2VzIGVhY2ggYXBvcCBjYWxsIHRha2UKKyAgICAgICAgIyBvbiB0aGUgb3JkZXIgb2YgbWlsbGlzZWNvbmRzIGluc3RlYWQgb2YgbWljcm9zZWNvbmRzLgorICAgICAgICBldmlsX3dlbGNvbWUgPSBiJytPSycgKyAoYic8JyAqIDEwMDAwMDApCisgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LnN3YXBfYXR0cihzZWxmLmNsaWVudCwgJ3dlbGNvbWUnLCBldmlsX3dlbGNvbWUpOgorICAgICAgICAgICAgIyBUaGUgZXZpbCB3ZWxjb21lIGlzIGludmFsaWQsIHNvIGFwb3Agc2hvdWxkIHRocm93LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocG9wbGliLmVycm9yX3Byb3RvLCBzZWxmLmNsaWVudC5hcG9wLCAnYScsICdrYicpCisKICAgICBkZWYgdGVzdF90b3Aoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkID0gICgnK09LIDExNiBieXRlcycsCiAgICAgICAgICAgICAgICAgICAgICBbJ0Zyb206IHBvc3RtYXN0ZXJAcHl0aG9uLm9yZycsICdDb250ZW50LVR5cGU6IHRleHQvcGxhaW4nLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKaW5kZXggZTBjODRmMi4uYzQyODNiNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CkBAIC0xOTksNiArMTk5LDcgQEAKICAgICBkZWYgdGVzdF9mZG9wZW5fZGlyZWN0b3J5KHNlbGYpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBmZCA9IG9zLm9wZW4oJy4nLCBvcy5PX1JET05MWSkKKyAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgZmQpCiAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXJybm8sIGVycm5vLkVBQ0NFUykKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInN5c3RlbSBjYW5ub3Qgb3BlbiBkaXJlY3RvcmllcyIpCkBAIC0yODcsNiArMjg4LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcG9zaXgubWlub3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yKSwgcG9zaXgubWlub3IsIC0xKQogCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJykgYW5kIGRldiA+PSAweDEwMDAwMDAwMDoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImJwby0zMTA0NDogb24gRnJlZUJTRCBDVVJSRU5ULCBtaW5vcigpIHRydW5jYXRlcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICI2NC1iaXQgZGV2IHRvIDMyLWJpdCIpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeC5tYWtlZGV2KG1ham9yLCBtaW5vciksIGRldikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3NpeC5tYWtlZGV2KGludChtYWpvciksIGludChtaW5vcikpLCBkZXYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9zaXgubWFrZWRldihsb25nKG1ham9yKSwgbG9uZyhtaW5vcikpLCBkZXYpCkBAIC01MDQsNiArNTA5LDE1IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBwb3NpeC5sY2hmbGFncyhfRFVNTVlfU1lNTElOSywgZHVtbXlfc3ltbGlua19zdC5zdF9mbGFncykKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsICJwdXRlbnYiKSwgInJlcXVpcmVzIG9zLnB1dGVudigpIikKKyAgICBkZWYgdGVzdF9wdXRlbnYoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG9zLnB1dGVudignRlJVSVRcMFZFR0VUQUJMRScsICdjYWJiYWdlJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgb3MucHV0ZW52KCdGUlVJVCcsICdvcmFuZ2VcMFZFR0VUQUJMRT1jYWJiYWdlJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIG9zLnB1dGVudignRlJVSVQ9T1JBTkdFJywgJ2xlbW9uJykKKwogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIocG9zaXgsICdnZXRjd2QnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBuZWVkcyBwb3NpeC5nZXRjd2QoKScpCiAgICAgZGVmIHRlc3RfZ2V0Y3dkX2xvbmdfcGF0aG5hbWVzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdHkucHkgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQppbmRleCBiZWMzOGM0Li4wZWIzMWZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B0eS5weQpAQCAtMTEsNiArMTEsNyBAQAogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHNvY2tldAoraW1wb3J0IGlvICMgcmVhZGxpbmUKIGltcG9ydCB1bml0dGVzdAogCiBURVNUX1NUUklOR18xID0gIkkgd2lzaCB0byBidXkgYSBmaXNoIGxpY2Vuc2UuXG4iCkBAIC0yNCw2ICsyNSwxNiBAQAogICAgICAgICBwYXNzCiAKIAorIyBOb3RlIHRoYXQgb3MucmVhZCgpIGlzIG5vbmRldGVybWluaXN0aWMgc28gd2UgbmVlZCB0byBiZSB2ZXJ5IGNhcmVmdWwKKyMgdG8gbWFrZSB0aGUgdGVzdCBzdWl0ZSBkZXRlcm1pbmlzdGljLiAgQSBub3JtYWwgY2FsbCB0byBvcy5yZWFkKCkgbWF5CisjIGdpdmUgdXMgbGVzcyB0aGFuIGV4cGVjdGVkLgorIworIyBCZXdhcmUsIG9uIG15IExpbnV4IHN5c3RlbSwgaWYgSSBwdXQgJ2Zvb1xuJyBpbnRvIGEgdGVybWluYWwgZmQsIEkgZ2V0CisjIGJhY2sgJ2Zvb1xyXG4nIGF0IHRoZSBvdGhlciBlbmQuICBUaGUgYmVoYXZpb3IgZGVwZW5kcyBvbiB0aGUgdGVybWlvcworIyBzZXR0aW5nLiAgVGhlIG5ld2xpbmUgdHJhbnNsYXRpb24gbWF5IGJlIE9TLXNwZWNpZmljLiAgVG8gbWFrZSB0aGUKKyMgdGVzdCBzdWl0ZSBkZXRlcm1pbmlzdGljIGFuZCBPUy1pbmRlcGVuZGVudCwgdGhlIGZ1bmN0aW9ucyBfcmVhZGxpbmUKKyMgYW5kIG5vcm1hbGl6ZV9vdXRwdXQgY2FuIGJlIHVzZWQuCisKIGRlZiBub3JtYWxpemVfb3V0cHV0KGRhdGEpOgogICAgICMgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyBkbyBjb252ZXJzaW9ucyBvbiBuZXdsaW5lLiAgV2UgY291bGQgcG9zc2libHkKICAgICAjIGZpeCB0aGF0IGJ5IGRvaW5nIHRoZSBhcHByb3ByaWF0ZSB0ZXJtaW9zLnRjc2V0YXR0cigpcy4gIEkgY291bGRuJ3QKQEAgLTQ1LDYgKzU2LDEyIEBACiAKICAgICByZXR1cm4gZGF0YQogCitkZWYgX3JlYWRsaW5lKGZkKToKKyAgICAiIiJSZWFkIG9uZSBsaW5lLiAgTWF5IGJsb2NrIGZvcmV2ZXIgaWYgbm8gbmV3bGluZSBpcyByZWFkLiIiIgorICAgIHJlYWRlciA9IGlvLkZpbGVJTyhmZCwgbW9kZT0ncmInLCBjbG9zZWZkPUZhbHNlKQorICAgIHJldHVybiByZWFkZXIucmVhZGxpbmUoKQorCisKIAogIyBNYXJnaW5hbCB0ZXN0aW5nIG9mIHB0eSBzdWl0ZS4gQ2Fubm90IGRvIGV4dGVuc2l2ZSAnZG8gb3IgZmFpbCcgdGVzdGluZwogIyBiZWNhdXNlIHB0eSBjb2RlIGlzIG5vdCB0b28gcG9ydGFibGUuCkBAIC01MywxNCArNzAsMTEgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgICMgaXNhdHR5KCkgYW5kIGNsb3NlKCkgY2FuIGhhbmcgb24gc29tZSBwbGF0Zm9ybXMuICBTZXQgYW4gYWxhcm0KICAgICAgICAgIyBiZWZvcmUgcnVubmluZyB0aGUgdGVzdCB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgaGFuZyBmb3JldmVyLgotICAgICAgICBzZWxmLm9sZF9hbGFybSA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIHNlbGYuaGFuZGxlX3NpZykKKyAgICAgICAgb2xkX2FsYXJtID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgc2VsZi5oYW5kbGVfc2lnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLnNpZ25hbCwgc2lnbmFsLlNJR0FMUk0sIG9sZF9hbGFybSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNpZ25hbC5hbGFybSwgMCkKICAgICAgICAgc2lnbmFsLmFsYXJtKDEwKQogCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAjIHJlbW92ZSBhbGFybSwgcmVzdG9yZSBvbGQgYWxhcm0gaGFuZGxlcgotICAgICAgICBzaWduYWwuYWxhcm0oMCkKLSAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgc2VsZi5vbGRfYWxhcm0pCi0KICAgICBkZWYgaGFuZGxlX3NpZyhzZWxmLCBzaWcsIGZyYW1lKToKICAgICAgICAgc2VsZi5mYWlsKCJpc2F0dHkgaHVuZyIpCiAKQEAgLTk3LDE0ICsxMTEsMTQgQEAKIAogICAgICAgICBkZWJ1ZygiV3JpdGluZyB0byBzbGF2ZV9mZCIpCiAgICAgICAgIG9zLndyaXRlKHNsYXZlX2ZkLCBURVNUX1NUUklOR18xKQotICAgICAgICBzMSA9IG9zLnJlYWQobWFzdGVyX2ZkLCAxMDI0KQorICAgICAgICBzMSA9IF9yZWFkbGluZShtYXN0ZXJfZmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0kgd2lzaCB0byBidXkgYSBmaXNoIGxpY2Vuc2UuXG4nLAogICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6ZV9vdXRwdXQoczEpKQogCiAgICAgICAgIGRlYnVnKCJXcml0aW5nIGNodW5rZWQgb3V0cHV0IikKICAgICAgICAgb3Mud3JpdGUoc2xhdmVfZmQsIFRFU1RfU1RSSU5HXzJbOjVdKQogICAgICAgICBvcy53cml0ZShzbGF2ZV9mZCwgVEVTVF9TVFJJTkdfMls1Ol0pCi0gICAgICAgIHMyID0gb3MucmVhZChtYXN0ZXJfZmQsIDEwMjQpCisgICAgICAgIHMyID0gX3JlYWRsaW5lKG1hc3Rlcl9mZCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRm9yIG15IHBldCBmaXNoLCBFcmljLlxuJywgbm9ybWFsaXplX291dHB1dChzMikpCiAKICAgICAgICAgb3MuY2xvc2Uoc2xhdmVfZmQpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5IGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQppbmRleCA3MTg4ZDBhLi44M2FhZDBiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKQEAgLTI1Nyw3ICsyNTcsNyBAQAogZGVmIGdldF9weWRvY19saW5rKG1vZHVsZSk6CiAgICAgIlJldHVybnMgYSBkb2N1bWVudGF0aW9uIHdlYiBsaW5rIG9mIGEgbW9kdWxlIgogICAgIGRpcm5hbWUgPSBvcy5wYXRoLmRpcm5hbWUKLSAgICBiYXNlZGlyID0gZGlybmFtZShkaXJuYW1lKF9fZmlsZV9fKSkKKyAgICBiYXNlZGlyID0gZGlybmFtZShkaXJuYW1lKG9zLnBhdGgucmVhbHBhdGgoX19maWxlX18pKSkKICAgICBkb2MgPSBweWRvYy5UZXh0RG9jKCkKICAgICBsb2MgPSBkb2MuZ2V0ZG9jbG9jKG1vZHVsZSwgYmFzZWRpcj1iYXNlZGlyKQogICAgIHJldHVybiBsb2MKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKaW5kZXggZTQ4NzZmZC4uOGE2ZDE3MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKQEAgLTMwNywxMCArMzA3LDI3IEBACiBjbGFzcyBNZXJzZW5uZVR3aXN0ZXJfVGVzdEJhc2ljT3BzKFRlc3RCYXNpY09wcyk6CiAgICAgZ2VuID0gcmFuZG9tLlJhbmRvbSgpCiAKKyAgICBAdGVzdF9zdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2J1Z18zMTQ3OChzZWxmKToKKyAgICAgICAgIyBfcmFuZG9tLlJhbmRvbS5zZWVkKCkgc2hvdWxkIGlnbm9yZSB0aGUgX19hYnNfXygpIG1ldGhvZCBvZiBhCisgICAgICAgICMgbG9uZy9pbnQgc3ViY2xhc3MgYXJndW1lbnQuCisgICAgICAgIGNsYXNzIEJhZEludChpbnQpOgorICAgICAgICAgICAgZGVmIF9fYWJzX18oc2VsZik6CisgICAgICAgICAgICAgICAgMS8wLjAKKyAgICAgICAgY2xhc3MgQmFkTG9uZyhsb25nKToKKyAgICAgICAgICAgIGRlZiBfX2Fic19fKHNlbGYpOgorICAgICAgICAgICAgICAgIDEvMC4wCisgICAgICAgIHNlbGYuZ2VuLnNlZWQoNDIpCisgICAgICAgIGV4cGVjdGVkX3ZhbHVlID0gc2VsZi5nZW4ucmFuZG9tKCkKKyAgICAgICAgZm9yIHNlZWRfYXJnIGluIFs0MkwsIEJhZEludCg0MiksIEJhZExvbmcoNDIpXToKKyAgICAgICAgICAgIHNlbGYuZ2VuLnNlZWQoc2VlZF9hcmcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2VuLnJhbmRvbSgpLCBleHBlY3RlZF92YWx1ZSkKKwogICAgIGRlZiB0ZXN0X3NldHN0YXRlX2ZpcnN0X2FyZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5nZW4uc2V0c3RhdGUsICgxLCBOb25lLCBOb25lKSkKIAogICAgIGRlZiB0ZXN0X3NldHN0YXRlX21pZGRsZV9hcmcoc2VsZik6CisgICAgICAgIHN0YXJ0X3N0YXRlID0gc2VsZi5nZW4uZ2V0c3RhdGUoKQogICAgICAgICAjIFdyb25nIHR5cGUsIHMvYiB0dXBsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZ2VuLnNldHN0YXRlLCAoMiwgTm9uZSwgTm9uZSkpCiAgICAgICAgICMgV3JvbmcgbGVuZ3RoLCBzL2IgNjI1CkBAIC0zMjQsNiArMzQxLDEwIEBACiAgICAgICAgICAgICBzZWxmLmdlbi5zZXRzdGF0ZSgoMiwgKDEsKSo2MjQrKDYyNSwpLCBOb25lKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvcikpOgogICAgICAgICAgICAgc2VsZi5nZW4uc2V0c3RhdGUoKDIsICgxLCkqNjI0KygtMSwpLCBOb25lKSkKKyAgICAgICAgIyBGYWlsZWQgY2FsbHMgdG8gc2V0c3RhdGUoKSBzaG91bGQgbm90IGhhdmUgY2hhbmdlZCB0aGUgc3RhdGUuCisgICAgICAgIGJpdHMxMDAgPSBzZWxmLmdlbi5nZXRyYW5kYml0cygxMDApCisgICAgICAgIHNlbGYuZ2VuLnNldHN0YXRlKHN0YXJ0X3N0YXRlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2VuLmdldHJhbmRiaXRzKDEwMCksIGJpdHMxMDApCiAKICAgICBkZWYgdGVzdF9yZWZlcmVuY2VJbXBsZW1lbnRhdGlvbihzZWxmKToKICAgICAgICAgIyBDb21wYXJlIHRoZSBweXRob24gaW1wbGVtZW50YXRpb24gd2l0aCByZXN1bHRzIGZyb20gdGhlIG9yaWdpbmFsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlLnB5IGIvTGliL3Rlc3QvdGVzdF9yZS5weQppbmRleCA1NzI1YTk5Li5hZTMxNDg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmUucHkKQEAgLTMsNyArMyw3IEBACiAgICAgdmVyYm9zZSwgcnVuX3VuaXR0ZXN0LCBpbXBvcnRfbW9kdWxlLAogICAgIHByZWNpc2lvbmJpZ21lbXRlc3QsIF8yRywgY3B5dGhvbl9vbmx5LAogICAgIGNhcHR1cmVkX3N0ZG91dCwgaGF2ZV91bmljb2RlLCByZXF1aXJlc191bmljb2RlLCB1LAotICAgIGNoZWNrX3dhcm5pbmdzKQorICAgIGNoZWNrX3dhcm5pbmdzLCBjaGVja19weTNrX3dhcm5pbmdzKQogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHJlCiBmcm9tIHJlIGltcG9ydCBTY2FubmVyCkBAIC01OCw3ICs1OCw3IEBACiAKICAgICAgICAgcyA9IHIiXDFcMSIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyguKScsIHMsICd4JyksICd4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoLiknLCByZS5lc2NhcGUocyksICd4JyksIHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoLiknLCBzLnJlcGxhY2UoJ1xcJywgcidcXCcpLCAneCcpLCBzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKC4pJywgbGFtYmRhIG06IHMsICd4JyksIHMpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgJ1xnPGE+XGc8YT4nLCAneHgnKSwgJ3h4eHgnKQpAQCAtNjYsMTEgKzY2LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgJ1xnPHVuaz5cZzx1bms+JywgJ3h4JyksICd4eHh4JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDx1bms+eCknLCAnXGc8MT5cZzwxPicsICd4eCcpLCAneHh4eCcpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLHInXHRcblx2XHJcZlxhXGJcQlxaXGFcQVx3XFdcc1xTXGRcRCcsJ2EnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAnXHRcblx2XHJcZlxhXGJcXEJcXFpcYVxcQVxcd1xcV1xcc1xcU1xcZFxcRCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1x0XG5cdlxyXGZcYScsICdhJyksICdcdFxuXHZcclxmXGEnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcdFxuXHZcclxmXGEnLCAnYScpLAotICAgICAgICAgICAgICAgICAgICAgICAgIChjaHIoOSkrY2hyKDEwKStjaHIoMTEpK2NocigxMykrY2hyKDEyKStjaHIoNykpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsIHInXHRcblx2XHJcZlxhXGInLCAnYScpLCAnXHRcblx2XHJcZlxhXGInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcdFxuXHZcclxmXGFcYicsICdhJyksICdcdFxuXHZcclxmXGFcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCdhJywgJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpK2Nocig4KSkpCisgICAgICAgIGZvciBjIGluICdjZGVoaWprbG1vcHFzdXd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic6CisgICAgICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignYScsICdcXCcgKyBjLCAnYScpLCAnXFwnICsgYykKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignXlxzKicsICdYJywgJ3Rlc3QnKSwgJ1h0ZXN0JykKIApAQCAtMjIzLDExICsyMjUsMTEgQEAKIAogICAgIGRlZiB0ZXN0X3JlX3NwbGl0KHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCI6IiwgIjphOmI6OmMiKSwgWycnLCAnYScsICdiJywgJycsICdjJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIjoqIiwgIjphOmI6OmMiKSwgWycnLCAnYScsICdiJywgJ2MnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDoqKSIsICI6YTpiOjpjIiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIjorIiwgIjphOmI6OmMiKSwgWycnLCAnYScsICdiJywgJ2MnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDorKSIsICI6YTpiOjpjIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgWycnLCAnOicsICdhJywgJzonLCAnYicsICc6OicsICdjJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig/OjoqKSIsICI6YTpiOjpjIiksIFsnJywgJ2EnLCAnYicsICdjJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KSoiLCAiOmE6Yjo6YyIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoPzo6KykiLCAiOmE6Yjo6YyIpLCBbJycsICdhJywgJ2InLCAnYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOikrIiwgIjphOmI6OmMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOicsICdiJywgJzonLCAnYyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoW2I6XSspIiwgIjphOmI6OmMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBbJycsICc6JywgJ2EnLCAnOmI6OicsICdjJ10pCkBAIC0yMzcsMTMgKzIzOSwzNCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoPzpiKXwoPzo6KykiLCAiOmE6Yjo6YyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJ2EnLCAnJywgJycsICdjJ10pCiAKKyAgICAgICAgZm9yIHNlcCwgZXhwZWN0ZWQgaW4gWworICAgICAgICAgICAgKCc6KicsIFsnJywgJ2EnLCAnYicsICdjJ10pLAorICAgICAgICAgICAgKCcoPzo6KiknLCBbJycsICdhJywgJ2InLCAnYyddKSwKKyAgICAgICAgICAgICgnKDoqKScsIFsnJywgJzonLCAnYScsICc6JywgJ2InLCAnOjonLCAnYyddKSwKKyAgICAgICAgICAgICgnKDopKicsIFsnJywgJzonLCAnYScsICc6JywgJ2InLCAnOicsICdjJ10pLAorICAgICAgICBdOgorICAgICAgICAgICAgd2l0aCBjaGVja19weTNrX3dhcm5pbmdzKCgnJywgRnV0dXJlV2FybmluZykpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoc2VwLCAnOmE6Yjo6YycpLCBleHBlY3RlZCkKKworICAgICAgICBmb3Igc2VwLCBleHBlY3RlZCBpbiBbCisgICAgICAgICAgICAoJycsIFsnOmE6Yjo6YyddKSwKKyAgICAgICAgICAgIChyJ1xiJywgWyc6YTpiOjpjJ10pLAorICAgICAgICAgICAgKHInKD89OiknLCBbJzphOmI6OmMnXSksCisgICAgICAgICAgICAocicoPzw9OiknLCBbJzphOmI6OmMnXSksCisgICAgICAgIF06CisgICAgICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KHNlcCwgJzphOmI6OmMnKSwgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9xdWFsaWZpZWRfcmVfc3BsaXQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIjoiLCAiOmE6Yjo6YyIsIDIpLCBbJycsICdhJywgJ2I6OmMnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgnOicsICdhOmI6YzpkJywgMiksIFsnYScsICdiJywgJ2M6ZCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNwbGl0KCIoOikiLCAiOmE6Yjo6YyIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6JywgJ2I6OmMnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDoqKSIsICI6YTpiOjpjIiwgMiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3BsaXQoIig6KykiLCAiOmE6Yjo6YyIsIDIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6JywgJ2I6OmMnXSkKKyAgICAgICAgd2l0aCBjaGVja19weTNrX3dhcm5pbmdzKCgnJywgRnV0dXJlV2FybmluZykpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zcGxpdCgiKDoqKSIsICI6YTpiOjpjIiwgbWF4c3BsaXQ9MiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnJywgJzonLCAnYScsICc6JywgJ2I6OmMnXSkKIAogICAgIGRlZiB0ZXN0X3JlX2ZpbmRhbGwoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZmluZGFsbCgiOisiLCAiYWJjIiksIFtdKQpAQCAtNDA0LDYgKzQyNywyOSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcZFxEXHdcV1xzXFMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjFhYSEgYSIsIHJlLlVOSUNPREUpLmdyb3VwKDApLCAiMWFhISBhIikKIAorICAgIGRlZiB0ZXN0X290aGVyX2VzY2FwZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCAiXFwiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXCgiLCAnKCcpLmdyb3VwKCksICcoJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJcKCIsICcpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJcXCIsICdcXCcpLmdyb3VwKCksICdcXCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJbXF1dIiwgJ10nKS5ncm91cCgpLCAnXScpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiW1xdXSIsICdbJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJbYVwtY10iLCAnLScpLmdyb3VwKCksICctJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJbYVwtY10iLCAnYicpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiW1xeYV0rIiwgJ2FeJykuZ3JvdXAoKSwgJ2FeJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJbXF5hXSsiLCAnYicpKQorICAgICAgICByZS5wdXJnZSgpICAjIGZvciB3YXJuaW5ncworICAgICAgICBmb3IgYyBpbiAnY2VnaGlqa2xtb3BxdXl6Q0VGR0hJSktMTU5PUFFSVFVWWFknOgorICAgICAgICAgICAgd2FybiA9IEZ1dHVyZVdhcm5pbmcgaWYgYyBpbiAnVXUnIGVsc2UgRGVwcmVjYXRpb25XYXJuaW5nCisgICAgICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKCcnLCB3YXJuKSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXFwlYyQnICUgYywgYykuZ3JvdXAoKSwgYykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnXFwlYycgJSBjLCAnYScpKQorICAgICAgICBmb3IgYyBpbiAnY2VnaGlqa2xtb3BxdXl6QUJDRUZHSElKS0xNTk9QUVJUVVZYWVonOgorICAgICAgICAgICAgd2FybiA9IEZ1dHVyZVdhcm5pbmcgaWYgYyBpbiAnVXUnIGVsc2UgRGVwcmVjYXRpb25XYXJuaW5nCisgICAgICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKCcnLCB3YXJuKSk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnW1xcJWNdJCcgJSBjLCBjKS5ncm91cCgpLCBjKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdbXFwlY10nICUgYywgJ2EnKSkKKwogICAgIGRlZiB0ZXN0X3N0cmluZ19ib3VuZGFyaWVzKHNlbGYpOgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTA3MTMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJcYihhYmMpXGIiLCAiYWJjIikuZ3JvdXAoMSksCkBAIC05MzEsNiArOTc3LDE5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnKD9peHUpICcgKyB1cHBlcl9jaGFyLCBsb3dlcl9jaGFyKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcoP2l4dSkgJyArIGxvd2VyX2NoYXIsIHVwcGVyX2NoYXIpKQogCisgICAgICAgICMgSW5jb21wYXRpYmlsaXRpZXMKKyAgICAgICAgcmUucHVyZ2UoKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUoJycsIHJlLkxPQ0FMRXxyZS5VTklDT0RFKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUoJyg/TCknLCByZS5VTklDT0RFKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUoJyg/dSknLCByZS5MT0NBTEUpCisgICAgICAgIHdpdGggY2hlY2tfcHkza193YXJuaW5ncygpOgorICAgICAgICAgICAgcmUuY29tcGlsZSgnKD9MdSknKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHJlLmNvbXBpbGUoJyg/dUwpJykKKwogICAgIGRlZiB0ZXN0X2RvbGxhcl9tYXRjaGVzX3R3aWNlKHNlbGYpOgogICAgICAgICAiJCBtYXRjaGVzIHRoZSBlbmQgb2Ygc3RyaW5nLCBhbmQganVzdCBiZWZvcmUgdGhlIHRlcm1pbmF0aW5nIFxuIgogICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZSgnJCcpCkBAIC05NjcsOCArMTAyNiw5IEBACiAgICAgZGVmIHRlc3RfYnVnXzEzODk5KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMzg5OTogcmUgcGF0dGVybiByIltcQV0iIHNob3VsZCB3b3JrIGxpa2UgIkEiIGJ1dCBtYXRjaGVzCiAgICAgICAgICMgbm90aGluZy4gRGl0dG8gQiBhbmQgWi4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5maW5kYWxsKHInW1xBXEJcYlxDXFpdJywgJ0FCXGJDWicpLAotICAgICAgICAgICAgICAgICAgICAgICAgIFsnQScsICdCJywgJ1xiJywgJ0MnLCAnWiddKQorICAgICAgICB3aXRoIGNoZWNrX3B5M2tfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZmluZGFsbChyJ1tcQVxCXGJcQ1xaXScsICdBQlxiQ1onKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydBJywgJ0InLCAnXGInLCAnQycsICdaJ10pCiAKICAgICBAcHJlY2lzaW9uYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTEpCiAgICAgZGVmIHRlc3RfbGFyZ2Vfc2VhcmNoKHNlbGYsIHNpemUpOgpAQCAtMTI2MSw3ICsxMzIxLDExIEBACiAKIGRlZiB0ZXN0X21haW4oKToKICAgICBydW5fdW5pdHRlc3QoUmVUZXN0cykKLSAgICBydW5fcmVfdGVzdHMoKQorICAgIGRlcHJlY2F0aW9ucyA9IFsKKyAgICAgICAgKCdiYWQgZXNjYXBlJywgRGVwcmVjYXRpb25XYXJuaW5nKSwKKyAgICBdCisgICAgd2l0aCBjaGVja19weTNrX3dhcm5pbmdzKCpkZXByZWNhdGlvbnMpOgorICAgICAgICBydW5fcmVfdGVzdHMoKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDU5NTA0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weQpAQCAtMCwwICsxLDcxNyBAQAorIiIiCitUZXN0cyBvZiByZWdydGVzdC5weS4KKworTm90ZTogdGVzdF9yZWdydGVzdCBjYW5ub3QgYmUgcnVuIHR3aWNlIGluIHBhcmFsbGVsLgorIiIiCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisKK2ltcG9ydCBjb2xsZWN0aW9ucworaW1wb3J0IGVycm5vCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgcmUKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB0ZXh0d3JhcAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKyMgVXNlIHV0aWxzIGFsaWFzIHRvIHVzZSB0aGUgc2FtZSBjb2RlIGZvciBUZXN0VXRpbHMgaW4gbWFzdGVyIGFuZCAyLjcgYnJhbmNoZXMKK2ltcG9ydCByZWdydGVzdCBhcyB1dGlscworCisKK1B5X0RFQlVHID0gaGFzYXR0cihzeXMsICdnZXRvYmplY3RzJykKK1JPT1RfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpCitST09UX0RJUiA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLm5vcm1wYXRoKFJPT1RfRElSKSkKKworVEVTVF9JTlRFUlJVUFRFRCA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICBmcm9tIHNpZ25hbCBpbXBvcnQgU0lHSU5UCisgICAgdHJ5OgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcmFpc2Vfc2lnbmFsCisgICAgICAgIHJhaXNlX3NpZ25hbChTSUdJTlQpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgU0lHSU5UKQorICAgICIiIikKKworCitTdWJwcm9jZXNzUnVuID0gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgnU3VicHJvY2Vzc1J1bicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmV0dXJuY29kZSBzdGRvdXQgc3RkZXJyJykKKworCitjbGFzcyBCYXNlVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIFRFU1RfVU5JUVVFX0lEID0gMQorICAgIFRFU1ROQU1FX1BSRUZJWCA9ICd0ZXN0X3JlZ3J0ZXN0XycKKyAgICBURVNUTkFNRV9SRUdFWCA9IHIndGVzdF9bYS16QS1aMC05X10rJworCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRlc3RkaXIgPSBvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpCisKKyAgICAgICAgc2VsZi50bXB0ZXN0ZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc2VsZi50bXB0ZXN0ZGlyKQorCisgICAgZGVmIGNyZWF0ZV90ZXN0KHNlbGYsIG5hbWU9Tm9uZSwgY29kZT0nJyk6CisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgbmFtZSA9ICdub29wJXMnICUgQmFzZVRlc3RDYXNlLlRFU1RfVU5JUVVFX0lECisgICAgICAgICAgICBCYXNlVGVzdENhc2UuVEVTVF9VTklRVUVfSUQgKz0gMQorCisgICAgICAgICMgdGVzdF9yZWdydGVzdCBjYW5ub3QgYmUgcnVuIHR3aWNlIGluIHBhcmFsbGVsIGJlY2F1c2UKKyAgICAgICAgIyBvZiBzZXRVcCgpIGFuZCBjcmVhdGVfdGVzdCgpCisgICAgICAgIG5hbWUgPSBzZWxmLlRFU1ROQU1FX1BSRUZJWCArIG5hbWUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRtcHRlc3RkaXIsIG5hbWUgKyAnLnB5JykKKworICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHBhdGgpCisgICAgICAgICMgVXNlIE9fRVhDTCB0byBlbnN1cmUgdGhhdCB3ZSBkbyBub3Qgb3ZlcnJpZGUgZXhpc3RpbmcgdGVzdHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmQgPSBvcy5vcGVuKHBhdGgsIG9zLk9fV1JPTkxZIHwgb3MuT19DUkVBVCB8IG9zLk9fRVhDTCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgKGV4Yy5lcnJubyBpbiAoZXJybm8uRUFDQ0VTLCBlcnJuby5FUEVSTSkKKyAgICAgICAgICAgICAgIGFuZCBub3Qgc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpKToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3Qgd3JpdGUgJXM6ICVzIiAlIChwYXRoLCBleGMpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgd2l0aCBvcy5mZG9wZW4oZmQsICd3JykgYXMgZnA6CisgICAgICAgICAgICAgICAgZnAud3JpdGUoY29kZSkKKyAgICAgICAgcmV0dXJuIG5hbWUKKworICAgIGRlZiByZWdleF9zZWFyY2goc2VsZiwgcmVnZXgsIG91dHB1dCk6CisgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHJlZ2V4LCBvdXRwdXQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgc2VsZi5mYWlsKCIlciBub3QgZm91bmQgaW4gJXIiICUgKHJlZ2V4LCBvdXRwdXQpKQorICAgICAgICByZXR1cm4gbWF0Y2gKKworICAgIGRlZiBjaGVja19saW5lKHNlbGYsIG91dHB1dCwgcmVnZXgpOgorICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocideJyArIHJlZ2V4LCByZS5NVUxUSUxJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXhwTWF0Y2hlcyhvdXRwdXQsIHJlZ2V4KQorCisgICAgZGVmIHBhcnNlX2V4ZWN1dGVkX3Rlc3RzKHNlbGYsIG91dHB1dCk6CisgICAgICAgIHJlZ2V4ID0gKHInXlswLTldKzpbMC05XSs6WzAtOV0rICg/OmxvYWQgYXZnOiBbMC05XStcLlswLTldezJ9ICk/XFsgKlswLTldKyg/Oi8gKlswLTldKykqXF0gKCVzKScKKyAgICAgICAgICAgICAgICAgJSBzZWxmLlRFU1ROQU1FX1JFR0VYKQorICAgICAgICBwYXJzZXIgPSByZS5maW5kaXRlcihyZWdleCwgb3V0cHV0LCByZS5NVUxUSUxJTkUpCisgICAgICAgIHJldHVybiBsaXN0KG1hdGNoLmdyb3VwKDEpIGZvciBtYXRjaCBpbiBwYXJzZXIpCisKKyAgICBkZWYgY2hlY2tfZXhlY3V0ZWRfdGVzdHMoc2VsZiwgb3V0cHV0LCB0ZXN0cywgc2tpcHBlZD0oKSwgZmFpbGVkPSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZfY2hhbmdlZD0oKSwgb21pdHRlZD0oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVydW49KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbWl6ZT1GYWxzZSwgaW50ZXJydXB0ZWQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhaWxfZW52X2NoYW5nZWQ9RmFsc2UpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHRlc3RzLCBzdHIpOgorICAgICAgICAgICAgdGVzdHMgPSBbdGVzdHNdCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2tpcHBlZCwgc3RyKToKKyAgICAgICAgICAgIHNraXBwZWQgPSBbc2tpcHBlZF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmYWlsZWQsIHN0cik6CisgICAgICAgICAgICBmYWlsZWQgPSBbZmFpbGVkXQorICAgICAgICBpZiBpc2luc3RhbmNlKGVudl9jaGFuZ2VkLCBzdHIpOgorICAgICAgICAgICAgZW52X2NoYW5nZWQgPSBbZW52X2NoYW5nZWRdCisgICAgICAgIGlmIGlzaW5zdGFuY2Uob21pdHRlZCwgc3RyKToKKyAgICAgICAgICAgIG9taXR0ZWQgPSBbb21pdHRlZF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShyZXJ1biwgc3RyKToKKyAgICAgICAgICAgIHJlcnVuID0gW3JlcnVuXQorCisgICAgICAgIGV4ZWN1dGVkID0gc2VsZi5wYXJzZV9leGVjdXRlZF90ZXN0cyhvdXRwdXQpCisgICAgICAgIGlmIHJhbmRvbWl6ZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGV4ZWN1dGVkKSwgc2V0KHRlc3RzKSwgb3V0cHV0KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGVjdXRlZCwgdGVzdHMsIChleGVjdXRlZCwgdGVzdHMsIG91dHB1dCkpCisKKyAgICAgICAgZGVmIHBsdXJhbChjb3VudCk6CisgICAgICAgICAgICByZXR1cm4gJ3MnIGlmIGNvdW50ICE9IDEgZWxzZSAnJworCisgICAgICAgIGRlZiBsaXN0X3JlZ2V4KGxpbmVfZm9ybWF0LCB0ZXN0cyk6CisgICAgICAgICAgICBjb3VudCA9IGxlbih0ZXN0cykKKyAgICAgICAgICAgIG5hbWVzID0gJyAnLmpvaW4oc29ydGVkKHRlc3RzKSkKKyAgICAgICAgICAgIHJlZ2V4ID0gbGluZV9mb3JtYXQgJSAoY291bnQsIHBsdXJhbChjb3VudCkpCisgICAgICAgICAgICByZWdleCA9IHInJXM6XG4gICAgJXMkJyAlIChyZWdleCwgbmFtZXMpCisgICAgICAgICAgICByZXR1cm4gcmVnZXgKKworICAgICAgICBpZiBza2lwcGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgc2tpcHBlZCcsIHNraXBwZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBmYWlsZWQ6CisgICAgICAgICAgICByZWdleCA9IGxpc3RfcmVnZXgoJyVzIHRlc3QlcyBmYWlsZWQnLCBmYWlsZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBlbnZfY2hhbmdlZDoKKyAgICAgICAgICAgIHJlZ2V4ID0gbGlzdF9yZWdleCgnJXMgdGVzdCVzIGFsdGVyZWQgdGhlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52X2NoYW5nZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBvbWl0dGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgb21pdHRlZCcsIG9taXR0ZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiByZXJ1bjoKKyAgICAgICAgICAgIHJlZ2V4ID0gbGlzdF9yZWdleCgnJXMgcmUtcnVuIHRlc3QlcycsIHJlcnVuKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAiUmUtcnVubmluZyBmYWlsZWQgdGVzdHMgaW4gdmVyYm9zZSBtb2RlIikKKyAgICAgICAgICAgIGZvciBuYW1lIGluIHJlcnVuOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gIlJlLXJ1bm5pbmcgdGVzdCAlciBpbiB2ZXJib3NlIG1vZGUiICUgbmFtZQorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgICAgIGdvb2QgPSAobGVuKHRlc3RzKSAtIGxlbihza2lwcGVkKSAtIGxlbihmYWlsZWQpCisgICAgICAgICAgICAgICAgLSBsZW4ob21pdHRlZCkgLSBsZW4oZW52X2NoYW5nZWQpKQorICAgICAgICBpZiBnb29kOgorICAgICAgICAgICAgcmVnZXggPSByJyVzIHRlc3QlcyBPS1wuJCcgJSAoZ29vZCwgcGx1cmFsKGdvb2QpKQorICAgICAgICAgICAgaWYgbm90IHNraXBwZWQgYW5kIG5vdCBmYWlsZWQgYW5kIGdvb2QgPiAxOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0FsbCAlcycgJSByZWdleAorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgaWYgaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAnVGVzdCBzdWl0ZSBpbnRlcnJ1cHRlZCBieSBzaWduYWwgU0lHSU5ULicpCisKKyAgICAgICAgcmVzdWx0ID0gW10KKyAgICAgICAgaWYgZmFpbGVkOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnRkFJTFVSRScpCisgICAgICAgIGVsaWYgZmFpbF9lbnZfY2hhbmdlZCBhbmQgZW52X2NoYW5nZWQ6CisgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCdFTlYgQ0hBTkdFRCcpCisgICAgICAgIGlmIGludGVycnVwdGVkOgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnSU5URVJSVVBURUQnKQorICAgICAgICBpZiBub3QgcmVzdWx0OgorICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnU1VDQ0VTUycpCisgICAgICAgIHJlc3VsdCA9ICcsICcuam9pbihyZXN1bHQpCisgICAgICAgIGlmIHJlcnVuOgorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgJ1Rlc3RzIHJlc3VsdDogJXMnICUgcmVzdWx0KQorICAgICAgICAgICAgcmVzdWx0ID0gJ0ZBSUxVUkUgdGhlbiAlcycgJSByZXN1bHQKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgJ1Rlc3RzIHJlc3VsdDogJXMnICUgcmVzdWx0KQorCisgICAgZGVmIHBhcnNlX3JhbmRvbV9zZWVkKHNlbGYsIG91dHB1dCk6CisgICAgICAgIG1hdGNoID0gc2VsZi5yZWdleF9zZWFyY2gocidVc2luZyByYW5kb20gc2VlZCAoWzAtOV0rKScsIG91dHB1dCkKKyAgICAgICAgcmFuZHNlZWQgPSBpbnQobWF0Y2guZ3JvdXAoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwIDw9IHJhbmRzZWVkIDw9IDEwMDAwMDAwLCByYW5kc2VlZCkKKyAgICAgICAgcmV0dXJuIHJhbmRzZWVkCisKKyAgICBkZWYgcnVuX2NvbW1hbmQoc2VsZiwgYXJncywgaW5wdXQ9Tm9uZSwgZXhpdGNvZGU9MCwgKiprdyk6CisgICAgICAgIGlmIG5vdCBpbnB1dDoKKyAgICAgICAgICAgIGlucHV0ID0gJycKKyAgICAgICAgaWYgJ3N0ZGVycicgbm90IGluIGt3OgorICAgICAgICAgICAga3dbJ3N0ZGVyciddID0gc3VicHJvY2Vzcy5QSVBFCisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKmt3KQorICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHByb2MuY29tbXVuaWNhdGUoaW5wdXQ9aW5wdXQpCisgICAgICAgIGlmIHByb2MucmV0dXJuY29kZSAhPSBleGl0Y29kZToKKyAgICAgICAgICAgIG1zZyA9ICgiQ29tbWFuZCAlcyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJXNcbiIKKyAgICAgICAgICAgICAgICAgICAiXG4iCisgICAgICAgICAgICAgICAgICAgInN0ZG91dDpcbiIKKyAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgIiVzXG4iCisgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICUgKHN0cihhcmdzKSwgcHJvYy5yZXR1cm5jb2RlLCBzdGRvdXQpKQorICAgICAgICAgICAgaWYgcHJvYy5zdGRlcnI6CisgICAgICAgICAgICAgICAgbXNnICs9ICgiXG4iCisgICAgICAgICAgICAgICAgICAgICAgICAic3RkZXJyOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgIiVzIgorICAgICAgICAgICAgICAgICAgICAgICAgIi0tLVxuIgorICAgICAgICAgICAgICAgICAgICAgICAgJSBzdGRlcnIpCisgICAgICAgICAgICBzZWxmLmZhaWwobXNnKQorICAgICAgICByZXR1cm4gU3VicHJvY2Vzc1J1bihwcm9jLnJldHVybmNvZGUsIHN0ZG91dCwgc3RkZXJyKQorCisgICAgZGVmIHJ1bl9weXRob24oc2VsZiwgYXJncywgKiprdyk6CisgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGVdICsgbGlzdChhcmdzKQorICAgICAgICBwcm9jID0gc2VsZi5ydW5fY29tbWFuZChhcmdzLCAqKmt3KQorICAgICAgICByZXR1cm4gcHJvYy5zdGRvdXQKKworCitjbGFzcyBQcm9ncmFtc1Rlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB2YXJpb3VzIHdheXMgdG8gcnVuIHRoZSBQeXRob24gdGVzdCBzdWl0ZS4gVXNlIG9wdGlvbnMgY2xvc2UKKyAgICB0byBvcHRpb25zIHVzZWQgb24gdGhlIGJ1aWxkYm90LgorICAgICIiIgorCisgICAgTlRFU1QgPSA0CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKFByb2dyYW1zVGVzdENhc2UsIHNlbGYpLnNldFVwKCkKKworICAgICAgICAjIENyZWF0ZSBOVEVTVCB0ZXN0cyBkb2luZyBub3RoaW5nCisgICAgICAgIHNlbGYudGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpbmRleCBpbiByYW5nZShzZWxmLk5URVNUKV0KKworICAgICAgICBzZWxmLnB5dGhvbl9hcmdzID0gWyctV2QnLCAnLTMnLCAnLUUnLCAnLWJiJywgJy10dCddCisgICAgICAgIHNlbGYucmVncnRlc3RfYXJncyA9IFsnLXVhbGwnLCAnLXJ3VycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpcl0KKworICAgIGRlZiBjaGVja19vdXRwdXQoc2VsZiwgb3V0cHV0KToKKyAgICAgICAgc2VsZi5wYXJzZV9yYW5kb21fc2VlZChvdXRwdXQpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBzZWxmLnRlc3RzLCByYW5kb21pemU9VHJ1ZSkKKworICAgIGRlZiBydW5fdGVzdHMoc2VsZiwgYXJncyk6CisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3B5dGhvbihhcmdzKQorICAgICAgICBzZWxmLmNoZWNrX291dHB1dChvdXRwdXQpCisKKyAgICBkZWYgdGVzdF9zY3JpcHRfcmVncnRlc3Qoc2VsZik6CisgICAgICAgICMgTGliL3Rlc3QvcmVncnRlc3QucHkKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKHNlbGYudGVzdGRpciwgJ3JlZ3J0ZXN0LnB5JykKKworICAgICAgICBhcmdzID0gc2VsZi5weXRob25fYXJncyArIFtzY3JpcHRdICsgc2VsZi5yZWdydGVzdF9hcmdzICsgc2VsZi50ZXN0cworICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3Rlc3Qoc2VsZik6CisgICAgICAgICMgLW0gdGVzdAorICAgICAgICBhcmdzID0gc2VsZi5weXRob25fYXJncyArIFsnLW0nLCAndGVzdCddICsgc2VsZi5yZWdydGVzdF9hcmdzICsgc2VsZi50ZXN0cworICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlZ3J0ZXN0KHNlbGYpOgorICAgICAgICAjIC1tIHRlc3QucmVncnRlc3QKKyAgICAgICAgYXJncyA9IHNlbGYucHl0aG9uX2FyZ3MgKyBbJy1tJywgJ3Rlc3QucmVncnRlc3QnXSArIHNlbGYucmVncnRlc3RfYXJncyArIHNlbGYudGVzdHMKKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyAtbSB0ZXN0LmF1dG90ZXN0CisgICAgICAgIGFyZ3MgPSBzZWxmLnB5dGhvbl9hcmdzICsgWyctbScsICd0ZXN0LmF1dG90ZXN0J10gKyBzZWxmLnJlZ3J0ZXN0X2FyZ3MgKyBzZWxmLnRlc3RzCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV90ZXN0X2F1dG90ZXN0KHNlbGYpOgorICAgICAgICAjIGZyb20gdGVzdCBpbXBvcnQgYXV0b3Rlc3QKKyAgICAgICAgY29kZSA9ICdmcm9tIHRlc3QgaW1wb3J0IGF1dG90ZXN0JworICAgICAgICBhcmdzID0gc2VsZi5weXRob25fYXJncyArIFsnLWMnLCBjb2RlXSArIHNlbGYucmVncnRlc3RfYXJncyArIHNlbGYudGVzdHMKKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X3NjcmlwdF9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyBMaWIvdGVzdC9hdXRvdGVzdC5weQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAnYXV0b3Rlc3QucHknKQorICAgICAgICBhcmdzID0gc2VsZi5weXRob25fYXJncyArIFtzY3JpcHRdICsgc2VsZi5yZWdydGVzdF9hcmdzICsgc2VsZi50ZXN0cworICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHJ1bl9iYXRjaChzZWxmLCAqYXJncyk6CisgICAgICAgIHByb2MgPSBzZWxmLnJ1bl9jb21tYW5kKGFyZ3MpCisgICAgICAgIHNlbGYuY2hlY2tfb3V0cHV0KHByb2Muc3Rkb3V0KQorCisgICAgZGVmIG5lZWRfcGNidWlsZChzZWxmKToKKyAgICAgICAgZXhlID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmFic3BhdGgoc3lzLmV4ZWN1dGFibGUpKQorICAgICAgICBwYXJ0cyA9IGV4ZS5zcGxpdChvcy5wYXRoLnNlcCkKKyAgICAgICAgaWYgbGVuKHBhcnRzKSA8IDM6CisgICAgICAgICAgICAjIGl0J3Mgbm90IGEgcHl0aG9uIGJ1aWxkLCBweXRob24gaXMgbGlrZWx5IHRvIGJlIGluc3RhbGxlZAorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgYnVpbGRfZGlyID0gcGFydHNbLTNdCisgICAgICAgIGlmIGJ1aWxkX2Rpci5sb3dlcigpICE9ICdwY2J1aWxkJzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlRvb2xzL2J1aWxkYm90L3Rlc3QuYmF0IHJlcXVpcmVzIFBDYnVpbGQgYnVpbGQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImZvdW5kICVzIiAlIGJ1aWxkX2RpcikKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdC5iYXQgc2NyaXB0IGlzIG5vdCBpbnN0YWxsZWQnKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLCAnV2luZG93cyBvbmx5JykKKyAgICBkZWYgdGVzdF90b29sc19idWlsZGJvdF90ZXN0KHNlbGYpOgorICAgICAgICBzZWxmLm5lZWRfcGNidWlsZCgpCisKKyAgICAgICAgIyBUb29sc1xidWlsZGJvdFx0ZXN0LmJhdAorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oUk9PVF9ESVIsICdUb29scycsICdidWlsZGJvdCcsICd0ZXN0LmJhdCcpCisgICAgICAgIHRlc3RfYXJncyA9IFsnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpcl0KKyAgICAgICAgaWYgcGxhdGZvcm0uYXJjaGl0ZWN0dXJlKClbMF0gPT0gJzY0Yml0JzoKKyAgICAgICAgICAgIHRlc3RfYXJncy5hcHBlbmQoJy14NjQnKSAgICMgNjQtYml0IGJ1aWxkCisgICAgICAgIGlmIG5vdCBQeV9ERUJVRzoKKyAgICAgICAgICAgIHRlc3RfYXJncy5hcHBlbmQoJytkJykgICAgICMgUmVsZWFzZSBidWlsZCwgdXNlIHB5dGhvbi5leGUKKworICAgICAgICBhcmdzID0gW3NjcmlwdF0gKyB0ZXN0X2FyZ3MgKyBzZWxmLnRlc3RzCisgICAgICAgIHNlbGYucnVuX2JhdGNoKCphcmdzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsICdXaW5kb3dzIG9ubHknKQorICAgIGRlZiB0ZXN0X3BjYnVpbGRfcnQoc2VsZik6CisgICAgICAgIHNlbGYubmVlZF9wY2J1aWxkKCkKKworICAgICAgICAjIFBDYnVpbGRccnQuYmF0CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihST09UX0RJUiwgcidQQ2J1aWxkXHJ0LmJhdCcpCisgICAgICAgIHJ0X2FyZ3MgPSBbIi1xIl0gICAgICAgICAgICAgIyBRdWljaywgZG9uJ3QgcnVuIHRlc3RzIHR3aWNlCisgICAgICAgIGlmIHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpWzBdID09ICc2NGJpdCc6CisgICAgICAgICAgICBydF9hcmdzLmFwcGVuZCgnLXg2NCcpICAgIyA2NC1iaXQgYnVpbGQKKyAgICAgICAgaWYgUHlfREVCVUc6CisgICAgICAgICAgICBydF9hcmdzLmFwcGVuZCgnLWQnKSAgICAgIyBEZWJ1ZyBidWlsZCwgdXNlIHB5dGhvbl9kLmV4ZQorICAgICAgICBhcmdzID0gW3NjcmlwdF0gKyBydF9hcmdzICsgc2VsZi5yZWdydGVzdF9hcmdzICsgc2VsZi50ZXN0cworICAgICAgICBzZWxmLnJ1bl9iYXRjaCgqYXJncykKKworCitjbGFzcyBBcmdzVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IGFyZ3VtZW50cyBvZiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuCisgICAgIiIiCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsICp0ZXN0YXJncywgKiprdyk6CisgICAgICAgIGNtZGFyZ3MgPSAoJy1tJywgJ3Rlc3QnLCAnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpcikgKyB0ZXN0YXJncworICAgICAgICByZXR1cm4gc2VsZi5ydW5fcHl0aG9uKGNtZGFyZ3MsICoqa3cpCisKKyAgICBkZWYgdGVzdF9mYWlsaW5nX3Rlc3Qoc2VsZik6CisgICAgICAgICMgdGVzdCBhIGZhaWxpbmcgdGVzdAorICAgICAgICBjb2RlID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworICAgICAgICAgICAgY2xhc3MgRmFpbGluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2ZhaWxpbmcoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiYnVnIikKKworICAgICAgICAgICAgZGVmIHRlc3RfbWFpbigpOgorICAgICAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZhaWxpbmdUZXN0KQorICAgICAgICAiIiIpCisgICAgICAgIHRlc3Rfb2sgPSBzZWxmLmNyZWF0ZV90ZXN0KCdvaycpCisgICAgICAgIHRlc3RfZmFpbGluZyA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2ZhaWxpbmcnLCBjb2RlPWNvZGUpCisgICAgICAgIHRlc3RzID0gW3Rlc3Rfb2ssIHRlc3RfZmFpbGluZ10KKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygqdGVzdHMsIGV4aXRjb2RlPTIpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cywgZmFpbGVkPXRlc3RfZmFpbGluZykKKworICAgIGRlZiB0ZXN0X3Jlc291cmNlcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC11IGNvbW1hbmQgbGluZSBvcHRpb24KKyAgICAgICAgdGVzdHMgPSB7fQorICAgICAgICBmb3IgcmVzb3VyY2UgaW4gKCdhdWRpbycsICduZXR3b3JrJyk6CisgICAgICAgICAgICBjb2RlID0gJ2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydFxuc3VwcG9ydC5yZXF1aXJlcyglciknICUgcmVzb3VyY2UKKyAgICAgICAgICAgIHRlc3RzW3Jlc291cmNlXSA9IHNlbGYuY3JlYXRlX3Rlc3QocmVzb3VyY2UsIGNvZGUpCisgICAgICAgIHRlc3RfbmFtZXMgPSBzb3J0ZWQodGVzdHMudmFsdWVzKCkpCisKKyAgICAgICAgIyAtdSBhbGw6IDIgcmVzb3VyY2VzIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy11JywgJ2FsbCcsICp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcykKKworICAgICAgICAjIC11IGF1ZGlvOiAxIHJlc291cmNlIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy11YXVkaW8nLCAqdGVzdF9uYW1lcykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZD10ZXN0c1snbmV0d29yayddKQorCisgICAgICAgICMgbm8gb3B0aW9uOiAwIHJlc291cmNlcyBlbmFibGVkCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkPXRlc3RfbmFtZXMpCisKKyAgICBkZWYgdGVzdF9yYW5kb20oc2VsZik6CisgICAgICAgICMgdGVzdCAtciBhbmQgLS1yYW5kc2VlZCBjb21tYW5kIGxpbmUgb3B0aW9uCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgcmFuZG9tCisgICAgICAgICAgICBwcmludCgiVEVTVFJBTkRPTTogJXMiICUgcmFuZG9tLnJhbmRpbnQoMSwgMTAwMCkpCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ3JhbmRvbScsIGNvZGUpCisKKyAgICAgICAgIyBmaXJzdCBydW4gdG8gZ2V0IHRoZSBvdXRwdXQgd2l0aCB0aGUgcmFuZG9tIHNlZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy1yJywgJy12JywgdGVzdCkKKyAgICAgICAgcmFuZHNlZWQgPSBzZWxmLnBhcnNlX3JhbmRvbV9zZWVkKG91dHB1dCkKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1RFU1RSQU5ET006IChbMC05XSspJywgb3V0cHV0KQorICAgICAgICB0ZXN0X3JhbmRvbSA9IGludChtYXRjaC5ncm91cCgxKSkKKworICAgICAgICAjIHRyeSB0byByZXByb2R1Y2Ugd2l0aCB0aGUgcmFuZG9tIHNlZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy1yJywgJy12JywgJy0tcmFuZHNlZWQ9JXMnICUgcmFuZHNlZWQsIHRlc3QpCisgICAgICAgIHJhbmRzZWVkMiA9IHNlbGYucGFyc2VfcmFuZG9tX3NlZWQob3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJhbmRzZWVkMiwgcmFuZHNlZWQpCisKKyAgICAgICAgbWF0Y2ggPSBzZWxmLnJlZ2V4X3NlYXJjaChyJ1RFU1RSQU5ET006IChbMC05XSspJywgb3V0cHV0KQorICAgICAgICB0ZXN0X3JhbmRvbTIgPSBpbnQobWF0Y2guZ3JvdXAoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVzdF9yYW5kb20yLCB0ZXN0X3JhbmRvbSkKKworICAgIGRlZiB0ZXN0X2Zyb21maWxlKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1mcm9tZmlsZQorICAgICAgICB0ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGluZGV4IGluIHJhbmdlKDUpXQorCisgICAgICAgICMgV3JpdGUgdGhlIGxpc3Qgb2YgZmlsZXMgdXNpbmcgYSBmb3JtYXQgc2ltaWxhciB0byByZWdydGVzdCBvdXRwdXQ6CisgICAgICAgICMgWzEvMl0gdGVzdF8xCisgICAgICAgICMgWzIvMl0gdGVzdF8yCisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICAjIHRlc3QgZm9ybWF0ICd0ZXN0X29wY29kZXMnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIGZvciBuYW1lIGluIHRlc3RzOgorICAgICAgICAgICAgICAgIHByaW50KG5hbWUsIGZpbGU9ZnApCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tZnJvbWZpbGUnLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorCisgICAgZGVmIHRlc3RfaW50ZXJydXB0ZWQoc2VsZik6CisgICAgICAgIGNvZGUgPSBURVNUX0lOVEVSUlVQVEVECisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdzaWdpbnQnLCBjb2RlPWNvZGUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKHRlc3QsIGV4aXRjb2RlPTEzMCkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3QsIG9taXR0ZWQ9dGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlcnJ1cHRlZD1UcnVlKQorCisgICAgZGVmIHRlc3Rfc2xvd2VzdChzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tc2xvdworICAgICAgICB0ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGluZGV4IGluIHJhbmdlKDMpXQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS1zbG93ZXN0IiwgKnRlc3RzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisgICAgICAgIHJlZ2V4ID0gKCcxMCBzbG93ZXN0IHRlc3RzOlxuJworICAgICAgICAgICAgICAgICAnKD86LSAlczogLipcbil7JXN9JworICAgICAgICAgICAgICAgICAlIChzZWxmLlRFU1ROQU1FX1JFR0VYLCBsZW4odGVzdHMpKSkKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF9zbG93X2ludGVycnVwdGVkKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTM3MzogdGVzdCAtLXNsb3dlc3Qgd2l0aCBhbiBpbnRlcnJ1cHRlZCB0ZXN0CisgICAgICAgIGNvZGUgPSBURVNUX0lOVEVSUlVQVEVECisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCJzaWdpbnQiLCBjb2RlPWNvZGUpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHRocmVhZGluZworICAgICAgICAgICAgdGVzdHMgPSAoRmFsc2UsIFRydWUpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIHRlc3RzID0gKEZhbHNlLCkKKyAgICAgICAgZm9yIG11bHRpcHJvY2Vzc2luZyBpbiB0ZXN0czoKKyAgICAgICAgICAgIGlmIG11bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgICAgICAgICBhcmdzID0gKCItLXNsb3dlc3QiLCAiLWoyIiwgdGVzdCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncyA9ICgiLS1zbG93ZXN0IiwgdGVzdCkKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCphcmdzLCBleGl0Y29kZT0xMzApCisgICAgICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb21pdHRlZD10ZXN0LCBpbnRlcnJ1cHRlZD1UcnVlKQorCisgICAgICAgICAgICByZWdleCA9ICgnMTAgc2xvd2VzdCB0ZXN0czpcbicpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X2NvdmVyYWdlKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1jb3ZlcmFnZQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgnY292ZXJhZ2UnKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLS1jb3ZlcmFnZSIsIHRlc3QpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdF0pCisgICAgICAgIHJlZ2V4ID0gKHInbGluZXMgK2NvdiUgK21vZHVsZSArXChwYXRoXClcbicKKyAgICAgICAgICAgICAgICAgcicoPzogKlswLTldKyAqWzAtOV17MSwyfSUgKlteIF0rICtcKFteKV0rXCkrKSsnKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgIGRlZiB0ZXN0X2ZvcmV2ZXIoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWZvcmV2ZXIKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBfX2J1aWx0aW5fXworICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworICAgICAgICAgICAgY2xhc3MgRm9yZXZlclRlc3Rlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfcnVuKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAjIFN0b3JlIHRoZSBzdGF0ZSBpbiB0aGUgX19idWlsdGluX18gbW9kdWxlLCBiZWNhdXNlIHRoZSB0ZXN0CisgICAgICAgICAgICAgICAgICAgICMgbW9kdWxlIGlzIHJlbG9hZCBhdCBlYWNoIHJ1bgorICAgICAgICAgICAgICAgICAgICBpZiAnUlVOJyBpbiBfX2J1aWx0aW5fXy5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9fLl9fZGljdF9fWydSVU4nXSArPSAxCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBfX2J1aWx0aW5fXy5fX2RpY3RfX1snUlVOJ10gPj0gMzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImZhaWwgYXQgdGhlIDNyZCBydW5zIikKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fYnVpbHRpbl9fLl9fZGljdF9fWydSVU4nXSA9IDEKKworICAgICAgICAgICAgZGVmIHRlc3RfbWFpbigpOgorICAgICAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KEZvcmV2ZXJUZXN0ZXIpCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2ZvcmV2ZXInLCBjb2RlPWNvZGUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZvcmV2ZXInLCB0ZXN0LCBleGl0Y29kZT0yKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdKjMsIGZhaWxlZD10ZXN0KQorCisgICAgZGVmIGNoZWNrX2xlYWsoc2VsZiwgY29kZSwgd2hhdCk6CisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdodW50cmxlYWtzJywgY29kZT1jb2RlKQorCisgICAgICAgIGZpbGVuYW1lID0gJ3JlZmxvZy50eHQnCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWh1bnRybGVha3MnLCAnMzozOicsIHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXRjb2RlPTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIFt0ZXN0XSwgZmFpbGVkPXRlc3QpCisKKyAgICAgICAgbGluZSA9ICdiZWdpbm5pbmcgNiByZXBldGl0aW9uc1xuMTIzNDU2XG4uLi4uLi5cbicKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmUuZXNjYXBlKGxpbmUpKQorCisgICAgICAgIGxpbmUyID0gJyVzIGxlYWtlZCBbMSwgMSwgMV0gJXMsIHN1bT0zXG4nICUgKHRlc3QsIHdoYXQpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4obGluZTIsIG91dHB1dCkKKworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGZwOgorICAgICAgICAgICAgcmVmbG9nID0gZnAucmVhZCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGxpbmUyLCByZWZsb2cpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhQeV9ERUJVRywgJ25lZWQgYSBkZWJ1ZyBidWlsZCcpCisgICAgQHN1cHBvcnQucmVxdWlyZXNfdHlwZV9jb2xsZWN0aW5nCisgICAgZGVmIHRlc3RfaHVudHJsZWFrcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0taHVudHJsZWFrcworICAgICAgICBjb2RlID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworICAgICAgICAgICAgR0xPQkFMX0xJU1QgPSBbXQorCisgICAgICAgICAgICBjbGFzcyBSZWZMZWFrVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfbGVhayhzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0xJU1QuYXBwZW5kKG9iamVjdCgpKQorCisgICAgICAgICAgICBkZWYgdGVzdF9tYWluKCk6CisgICAgICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoUmVmTGVha1Rlc3QpCisgICAgICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja19sZWFrKGNvZGUsICdyZWZlcmVuY2VzJykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFB5X0RFQlVHLCAnbmVlZCBhIGRlYnVnIGJ1aWxkJykKKyAgICBkZWYgdGVzdF9odW50cmxlYWtzX2ZkX2xlYWsoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWh1bnRybGVha3MgZm9yIGZpbGUgZGVzY3JpcHRvciBsZWFrCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorICAgICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgICAgICAgIGNsYXNzIEZETGVha1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2xlYWsoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIGZkID0gb3Mub3BlbihfX2ZpbGVfXywgb3MuT19SRE9OTFkpCisgICAgICAgICAgICAgICAgICAgICMgYnVnOiBuZXZlciBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdG9yCisKKyAgICAgICAgICAgIGRlZiB0ZXN0X21haW4oKToKKyAgICAgICAgICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChGRExlYWtUZXN0KQorICAgICAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfbGVhayhjb2RlLCAnZmlsZSBkZXNjcmlwdG9ycycpCisKKyAgICBkZWYgdGVzdF9saXN0X3Rlc3RzKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1saXN0LXRlc3RzCisgICAgICAgIHRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaSBpbiByYW5nZSg1KV0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tbGlzdC10ZXN0cycsICp0ZXN0cykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQucnN0cmlwKCkuc3BsaXRsaW5lcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RzKQorCisgICAgZGVmIHRlc3RfbGlzdF9jYXNlcyhzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tbGlzdC1jYXNlcworICAgICAgICBjb2RlID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgIGNsYXNzIFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9tZXRob2QxKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kMihzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAiIiIpCisgICAgICAgIHRlc3RuYW1lID0gc2VsZi5jcmVhdGVfdGVzdChjb2RlPWNvZGUpCisKKyAgICAgICAgIyBUZXN0IC0tbGlzdC1jYXNlcworICAgICAgICBhbGxfbWV0aG9kcyA9IFsnJXMuVGVzdHMudGVzdF9tZXRob2QxJyAlIHRlc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAnJXMuVGVzdHMudGVzdF9tZXRob2QyJyAlIHRlc3RuYW1lXQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1saXN0LWNhc2VzJywgdGVzdG5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LnNwbGl0bGluZXMoKSwgYWxsX21ldGhvZHMpCisKKyAgICAgICAgIyBUZXN0IC0tbGlzdC1jYXNlcyB3aXRoIC0tbWF0Y2gKKyAgICAgICAgYWxsX21ldGhvZHMgPSBbJyVzLlRlc3RzLnRlc3RfbWV0aG9kMScgJSB0ZXN0bmFtZV0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tbGlzdC1jYXNlcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctbScsICd0ZXN0X21ldGhvZDEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0bmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRwdXQuc3BsaXRsaW5lcygpLCBhbGxfbWV0aG9kcykKKworICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2FpeCcpLAorICAgICAgICAgICAgICAgICAgICAgInN1cHBvcnQuX2NyYXNoX3B5dGhvbigpIGRvZXNuJ3Qgd29yayBvbiBBSVgiKQorICAgIGRlZiB0ZXN0X2NyYXNoZWQoc2VsZik6CisgICAgICAgICMgQW55IGNvZGUgd2hpY2ggY2F1c2VzIGEgY3Jhc2gKKyAgICAgICAgY29kZSA9ICdpbXBvcnQgdGVzdC5zdXBwb3J0OyB0ZXN0LnN1cHBvcnQuX2NyYXNoX3B5dGhvbigpJworICAgICAgICBjcmFzaF90ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdChuYW1lPSJjcmFzaCIsIGNvZGU9Y29kZSkKKyAgICAgICAgb2tfdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QobmFtZT0ib2siKQorCisgICAgICAgIHRlc3RzID0gW2NyYXNoX3Rlc3QsIG9rX3Rlc3RdCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCItajIiLCAqdGVzdHMsIGV4aXRjb2RlPTIpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cywgZmFpbGVkPWNyYXNoX3Rlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZG9taXplPVRydWUpCisKKyAgICBkZWYgcGFyc2VfbWV0aG9kcyhzZWxmLCBvdXRwdXQpOgorICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUoIl4odGVzdFteIF0rKS4qb2skIiwgZmxhZ3M9cmUuTVVMVElMSU5FKQorICAgICAgICByZXR1cm4gW21hdGNoLmdyb3VwKDEpIGZvciBtYXRjaCBpbiByZWdleC5maW5kaXRlcihvdXRwdXQpXQorCisgICAgZGVmIHRlc3RfbWF0Y2hmaWxlKHNlbGYpOgorICAgICAgICAjIEFueSBjb2RlIHdoaWNoIGNhdXNlcyBhIGNyYXNoCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICAgICAgICAgIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisgICAgICAgICAgICBjbGFzcyBUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kMShzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIGRlZiB0ZXN0X21ldGhvZDIoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9tZXRob2QzKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgZGVmIHRlc3RfbWV0aG9kNChzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgICAgICBkZWYgdGVzdF9tYWluKCk6CisgICAgICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdHMpCisgICAgICAgICIiIikKKyAgICAgICAgYWxsX21ldGhvZHMgPSBbJ3Rlc3RfbWV0aG9kMScsICd0ZXN0X21ldGhvZDInLAorICAgICAgICAgICAgICAgICAgICAgICAndGVzdF9tZXRob2QzJywgJ3Rlc3RfbWV0aG9kNCddCisgICAgICAgIHRlc3RuYW1lID0gc2VsZi5jcmVhdGVfdGVzdChjb2RlPWNvZGUpCisKKyAgICAgICAgIyBieSBkZWZhdWx0LCBhbGwgbWV0aG9kcyBzaG91bGQgYmUgcnVuCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCItdiIsIHRlc3RuYW1lKQorICAgICAgICBtZXRob2RzID0gc2VsZi5wYXJzZV9tZXRob2RzKG91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZXRob2RzLCBhbGxfbWV0aG9kcykKKworICAgICAgICAjIG9ubHkgcnVuIGEgc3Vic2V0CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICBzdWJzZXQgPSBbCisgICAgICAgICAgICAjIG9ubHkgbWF0Y2ggdGhlIG1ldGhvZCBuYW1lCisgICAgICAgICAgICAndGVzdF9tZXRob2QxJywKKyAgICAgICAgICAgICMgbWF0Y2ggdGhlIGZ1bGwgaWRlbnRpZmllcgorICAgICAgICAgICAgJyVzLlRlc3RzLnRlc3RfbWV0aG9kMycgJSB0ZXN0bmFtZV0KKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAidyIpIGFzIGZwOgorICAgICAgICAgICAgZm9yIG5hbWUgaW4gc3Vic2V0OgorICAgICAgICAgICAgICAgIHByaW50KG5hbWUsIGZpbGU9ZnApCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi12IiwgIi0tbWF0Y2hmaWxlIiwgZmlsZW5hbWUsIHRlc3RuYW1lKQorICAgICAgICBtZXRob2RzID0gc2VsZi5wYXJzZV9tZXRob2RzKG91dHB1dCkKKyAgICAgICAgc3Vic2V0ID0gWyd0ZXN0X21ldGhvZDEnLCAndGVzdF9tZXRob2QzJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZXRob2RzLCBzdWJzZXQpCisKKyAgICBkZWYgdGVzdF9lbnZfY2hhbmdlZChzZWxmKToKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorICAgICAgICAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKKyAgICAgICAgICAgIGNsYXNzIFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9lbnZfY2hhbmdlZChzZWxmKToKKyAgICAgICAgICAgICAgICAgICAgb3BlbigiZW52X2NoYW5nZWQiLCAidyIpLmNsb3NlKCkKKworICAgICAgICAgICAgZGVmIHRlc3RfbWFpbigpOgorICAgICAgICAgICAgICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RzKQorICAgICAgICAiIiIpCisgICAgICAgIHRlc3RuYW1lID0gc2VsZi5jcmVhdGVfdGVzdChjb2RlPWNvZGUpCisKKyAgICAgICAgIyBkb24ndCBmYWlsIGJ5IGRlZmF1bHQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHModGVzdG5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCBbdGVzdG5hbWVdLCBlbnZfY2hhbmdlZD10ZXN0bmFtZSkKKworICAgICAgICAjIGZhaWwgd2l0aCAtLWZhaWwtZW52LWNoYW5nZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi0tZmFpbC1lbnYtY2hhbmdlZCIsIHRlc3RuYW1lLCBleGl0Y29kZT0zKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RuYW1lXSwgZW52X2NoYW5nZWQ9dGVzdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbF9lbnZfY2hhbmdlZD1UcnVlKQorCisgICAgZGVmIHRlc3RfcmVydW5fZmFpbChzZWxmKToKKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgICAgICBjbGFzcyBUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgZGVmIHRlc3RfYnVnKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICAjIHRlc3QgYWx3YXlzIGZhaWwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJidWciKQorCisgICAgICAgICAgICBkZWYgdGVzdF9tYWluKCk6CisgICAgICAgICAgICAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdHMpCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdG5hbWUgPSBzZWxmLmNyZWF0ZV90ZXN0KGNvZGU9Y29kZSkKKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygiLXciLCB0ZXN0bmFtZSwgZXhpdGNvZGU9MikKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIFt0ZXN0bmFtZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFpbGVkPXRlc3RuYW1lLCByZXJ1bj10ZXN0bmFtZSkKKworCitjbGFzcyBUZXN0VXRpbHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Zvcm1hdF9kdXJhdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZHVyYXRpb24oMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzAgbXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdF9kdXJhdGlvbigxZS05KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMSBtcycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0X2R1cmF0aW9uKDEwZS0zKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMTAgbXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdF9kdXJhdGlvbigxLjUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcxIHNlYyA1MDAgbXMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdF9kdXJhdGlvbigxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMSBzZWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHV0aWxzLmZvcm1hdF9kdXJhdGlvbigyICogNjApLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyIG1pbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0X2R1cmF0aW9uKDIgKiA2MCArIDEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICcyIG1pbiAxIHNlYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0X2R1cmF0aW9uKDMgKiAzNjAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAnMyBob3VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1dGlscy5mb3JtYXRfZHVyYXRpb24oMyAqIDM2MDAgICsgMiAqIDYwICsgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzMgaG91ciAyIG1pbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodXRpbHMuZm9ybWF0X2R1cmF0aW9uKDMgKiAzNjAwICsgMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgJzMgaG91ciAxIHNlYycpCisKKworZGVmIHRlc3RfbWFpbigpOgorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFByb2dyYW1zVGVzdENhc2UsIEFyZ3NUZXN0Q2FzZSwgVGVzdFV0aWxzKQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5CmluZGV4IGU0YjAxZjEuLmJhN2NjZjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weQpAQCAtMSwyOTYgKzEsMjYwIEBACi1pbXBvcnQgdW5pdHRlc3QsIFN0cmluZ0lPLCByb2JvdHBhcnNlcgotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKLWZyb20gdXJsbGliMiBpbXBvcnQgdXJsb3BlbiwgSFRUUEVycm9yCi0KLUhBVkVfSFRUUFMgPSBUcnVlCitpbXBvcnQgb3MKK2ltcG9ydCByb2JvdHBhcnNlcgoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gQmFzZUhUVFBTZXJ2ZXIgaW1wb3J0IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIsIEhUVFBTZXJ2ZXIKK2ltcG9ydCBTdHJpbmdJTwogdHJ5OgotICAgIGZyb20gdXJsbGliMiBpbXBvcnQgSFRUUFNIYW5kbGVyCisgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgotICAgIEhBVkVfSFRUUFMgPSBGYWxzZQorICAgIHRocmVhZGluZyA9IE5vbmUKIAotY2xhc3MgUm9ib3RUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4LCBwYXJzZXIsIHVybCwgZ29vZCwgYWdlbnQpOgotICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZS5fX2luaXRfXyhzZWxmKQotICAgICAgICBpZiBnb29kOgotICAgICAgICAgICAgc2VsZi5zdHIgPSAiUm9ib3RUZXN0KCVkLCBnb29kLCAlcykiICUgKGluZGV4LCB1cmwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnN0ciA9ICJSb2JvdFRlc3QoJWQsIGJhZCwgJXMpIiAlIChpbmRleCwgdXJsKQotICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlcgotICAgICAgICBzZWxmLnVybCA9IHVybAotICAgICAgICBzZWxmLmdvb2QgPSBnb29kCi0gICAgICAgIHNlbGYuYWdlbnQgPSBhZ2VudAogCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi51cmwsIHR1cGxlKToKLSAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLnVybAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXJsID0gc2VsZi51cmwKLSAgICAgICAgICAgIGFnZW50ID0gc2VsZi5hZ2VudAotICAgICAgICBpZiBzZWxmLmdvb2Q6CitjbGFzcyBCYXNlUm9ib3RUZXN0OgorICAgIHJvYm90c190eHQgPSAnJworICAgIGFnZW50ID0gJ3Rlc3Rfcm9ib3RwYXJzZXInCisgICAgZ29vZCA9IFtdCisgICAgYmFkID0gW10KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgbGluZXMgPSBTdHJpbmdJTy5TdHJpbmdJTyhzZWxmLnJvYm90c190eHQpLnJlYWRsaW5lcygpCisgICAgICAgIHNlbGYucGFyc2VyID0gcm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKKyAgICAgICAgc2VsZi5wYXJzZXIucGFyc2UobGluZXMpCisKKyAgICBkZWYgZ2V0X2FnZW50X2FuZF91cmwoc2VsZiwgdXJsKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh1cmwsIHR1cGxlKToKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSB1cmwKKyAgICAgICAgICAgIHJldHVybiBhZ2VudCwgdXJsCisgICAgICAgIHJldHVybiBzZWxmLmFnZW50LCB1cmwKKworICAgIGRlZiB0ZXN0X2dvb2RfdXJscyhzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmdvb2Q6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi5nZXRfYWdlbnRfYW5kX3VybCh1cmwpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKGFnZW50LCB1cmwpKQotICAgICAgICBlbHNlOgorCisgICAgZGVmIHRlc3RfYmFkX3VybHMoc2VsZik6CisgICAgICAgIGZvciB1cmwgaW4gc2VsZi5iYWQ6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi5nZXRfYWdlbnRfYW5kX3VybCh1cmwpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaChhZ2VudCwgdXJsKSkKIAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5zdHIKIAotdGVzdHMgPSB1bml0dGVzdC5UZXN0U3VpdGUoKQotCi1kZWYgUm9ib3RUZXN0KGluZGV4LCByb2JvdHNfdHh0LCBnb29kX3VybHMsIGJhZF91cmxzLAotICAgICAgICAgICAgICBhZ2VudD0idGVzdF9yb2JvdHBhcnNlciIpOgotCi0gICAgbGluZXMgPSBTdHJpbmdJTy5TdHJpbmdJTyhyb2JvdHNfdHh0KS5yZWFkbGluZXMoKQotICAgIHBhcnNlciA9IHJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigpCi0gICAgcGFyc2VyLnBhcnNlKGxpbmVzKQotICAgIGZvciB1cmwgaW4gZ29vZF91cmxzOgotICAgICAgICB0ZXN0cy5hZGRUZXN0KFJvYm90VGVzdENhc2UoaW5kZXgsIHBhcnNlciwgdXJsLCAxLCBhZ2VudCkpCi0gICAgZm9yIHVybCBpbiBiYWRfdXJsczoKLSAgICAgICAgdGVzdHMuYWRkVGVzdChSb2JvdFRlc3RDYXNlKGluZGV4LCBwYXJzZXIsIHVybCwgMCwgYWdlbnQpKQotCi0jIEV4YW1wbGVzIGZyb20gaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnL3djL25vcm9ib3RzLmh0bWwgKGZldGNoZWQgMjAwMikKLQotIyAxLgotZG9jID0gIiIiCitjbGFzcyBVc2VyQWdlbnRXaWxkY2FyZFRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLyAjIFRoaXMgaXMgYW4gaW5maW5pdGUgdmlydHVhbCBVUkwgc3BhY2UKIERpc2FsbG93OiAvdG1wLyAjIHRoZXNlIHdpbGwgc29vbiBkaXNhcHBlYXIKIERpc2FsbG93OiAvZm9vLmh0bWwKLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy8nLCAnL3Rlc3QuaHRtbCddCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsICcvdG1wL3h4eCcsICcvZm9vLmh0bWwnXQogCi1nb29kID0gWycvJywnL3Rlc3QuaHRtbCddCi1iYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywnL3RtcC94eHgnLCcvZm9vLmh0bWwnXQogCi1Sb2JvdFRlc3QoMSwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMi4KLWRvYyA9ICIiIgotIyByb2JvdHMudHh0IGZvciBodHRwOi8vd3d3LmV4YW1wbGUuY29tLwotCi1Vc2VyLWFnZW50OiAqCi1EaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLyAjIFRoaXMgaXMgYW4gaW5maW5pdGUgdmlydHVhbCBVUkwgc3BhY2UKLQotIyBDeWJlcm1hcHBlciBrbm93cyB3aGVyZSB0byBnby4KLVVzZXItYWdlbnQ6IGN5YmVybWFwcGVyCi1EaXNhbGxvdzoKLQotIiIiCi0KLWdvb2QgPSBbJy8nLCcvdGVzdC5odG1sJywoJ2N5YmVybWFwcGVyJywnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnKV0KLWJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnXQotCi1Sb2JvdFRlc3QoMiwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMy4KLWRvYyA9ICIiIgorY2xhc3MgUmVqZWN0QWxsUm9ib3RzVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKICMgZ28gYXdheQogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC8KLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnLCAnLycsICcvdG1wLyddCiAKLWdvb2QgPSBbXQotYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsJy8nLCcvdG1wLyddCiAKLVJvYm90VGVzdCgzLCBkb2MsIGdvb2QsIGJhZCkKLQotIyBFeGFtcGxlcyBmcm9tIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy93Yy9ub3JvYm90cy1yZmMuaHRtbCAoZmV0Y2hlZCAyMDAyKQotCi0jIDQuCi1kb2MgPSAiIiIKLVVzZXItYWdlbnQ6IGZpZ3RyZWUKLURpc2FsbG93OiAvdG1wCi1EaXNhbGxvdzogL2ElM2NkLmh0bWwKLURpc2FsbG93OiAvYSUyZmIuaHRtbAotRGlzYWxsb3c6IC8lN2Vqb2UvaW5kZXguaHRtbAotIiIiCi0KLWdvb2QgPSBbXSAjIFhGQUlMICcvYS9iLmh0bWwnCi1iYWQgPSBbJy90bXAnLCcvdG1wLmh0bWwnLCcvdG1wL2EuaHRtbCcsCi0gICAgICAgJy9hJTNjZC5odG1sJywnL2ElM0NkLmh0bWwnLCcvYSUyZmIuaHRtbCcsCi0gICAgICAgJy9+am9lL2luZGV4Lmh0bWwnCi0gICAgICAgXQotCi1Sb2JvdFRlc3QoNCwgZG9jLCBnb29kLCBiYWQsICdmaWd0cmVlJykKLVJvYm90VGVzdCg1LCBkb2MsIGdvb2QsIGJhZCwgJ0ZpZ1RyZWUgUm9ib3QgbGlid3d3LXBlcmwvNS4wNCcpCi0KLSMgNi4KLWRvYyA9ICIiIgotVXNlci1hZ2VudDogKgotRGlzYWxsb3c6IC90bXAvCi1EaXNhbGxvdzogL2ElM0NkLmh0bWwKLURpc2FsbG93OiAvYS9iLmh0bWwKLURpc2FsbG93OiAvJTdlam9lL2luZGV4Lmh0bWwKLSIiIgotCi1nb29kID0gWycvdG1wJyxdICMgWEZBSUw6ICcvYSUyZmIuaHRtbCcKLWJhZCA9IFsnL3RtcC8nLCcvdG1wL2EuaHRtbCcsCi0gICAgICAgJy9hJTNjZC5odG1sJywnL2ElM0NkLmh0bWwnLCIvYS9iLmh0bWwiLAotICAgICAgICcvJTdFam9lL2luZGV4Lmh0bWwnXQotCi1Sb2JvdFRlc3QoNiwgZG9jLCBnb29kLCBiYWQpCi0KLSMgRnJvbSBidWcgcmVwb3J0ICM1MjMwNDEKLQotIyA3LgotZG9jID0gIiIiCi1Vc2VyLUFnZW50OiAqCi1EaXNhbGxvdzogLy4KLSIiIgotCi1nb29kID0gWycvZm9vLmh0bWwnXQotYmFkID0gW10gIyBCdWcgcmVwb3J0IHNheXMgIi8iIHNob3VsZCBiZSBkZW5pZWQsIGJ1dCB0aGF0IGlzIG5vdCBpbiB0aGUgUkZDCi0KLVJvYm90VGVzdCg3LCBkb2MsIGdvb2QsIGJhZCkKLQotIyBGcm9tIEdvb2dsZTogaHR0cDovL3d3dy5nb29nbGUuY29tL3N1cHBvcnQvd2VibWFzdGVycy9iaW4vYW5zd2VyLnB5P2hsPWVuJmFuc3dlcj00MDM2NAotCi0jIDguCi1kb2MgPSAiIiIKLVVzZXItYWdlbnQ6IEdvb2dsZWJvdAotQWxsb3c6IC9mb2xkZXIxL215ZmlsZS5odG1sCi1EaXNhbGxvdzogL2ZvbGRlcjEvCi0iIiIKLQotZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQotYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KLQotUm9ib3RUZXN0KDgsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotIyA5LiAgVGhpcyBmaWxlIGlzIGluY29ycmVjdCBiZWNhdXNlICJHb29nbGVib3QiIGlzIGEgc3Vic3RyaW5nIG9mCi0jICAgICAiR29vZ2xlYm90LU1vYmlsZSIsIHNvIHRlc3QgMTAgd29ya3MganVzdCBsaWtlIHRlc3QgOS4KLWRvYyA9ICIiIgorY2xhc3MgVXNlckFnZW50T3JkZXJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHRoZSBvcmRlciBvZiBVc2VyLWFnZW50IHNob3VsZCBiZSBjb3JyZWN0LiBub3RlCisgICAgIyB0aGF0IHRoaXMgZmlsZSBpcyBpbmNvcnJlY3QgYmVjYXVzZSAiR29vZ2xlYm90IiBpcyBhCisgICAgIyBzdWJzdHJpbmcgb2YgIkdvb2dsZWJvdC1Nb2JpbGUiCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdAogRGlzYWxsb3c6IC8KIAogVXNlci1hZ2VudDogR29vZ2xlYm90LU1vYmlsZQogQWxsb3c6IC8KLSIiIgotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoOSwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QiKQotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoMTAsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90LU1vYmlsZSIpCi0KLSMgMTEuICBHZXQgdGhlIG9yZGVyIGNvcnJlY3QuCi1kb2MgPSAiIiIKLVVzZXItYWdlbnQ6IEdvb2dsZWJvdC1Nb2JpbGUKLUFsbG93OiAvCi0KLVVzZXItYWdlbnQ6IEdvb2dsZWJvdAotRGlzYWxsb3c6IC8KLSIiIgotCi1nb29kID0gW10KLWJhZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotCi1Sb2JvdFRlc3QoMTEsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotZ29vZCA9IFsnL3NvbWV0aGluZy5qcGcnXQotYmFkID0gW10KLQotUm9ib3RUZXN0KDEyLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdC1Nb2JpbGUiKQorICAgICIiIgorICAgIGFnZW50ID0gJ0dvb2dsZWJvdCcKKyAgICBiYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KIAogCi0jIDEzLiAgR29vZ2xlIGFsc28gZ290IHRoZSBvcmRlciB3cm9uZyBpbiAjOC4gIFlvdSBuZWVkIHRvIHNwZWNpZnkgdGhlCi0jICAgICAgVVJMcyBmcm9tIG1vcmUgc3BlY2lmaWMgdG8gbW9yZSBnZW5lcmFsLgotZG9jID0gIiIiCitjbGFzcyBVc2VyQWdlbnRHb29nbGVNb2JpbGVUZXN0KFVzZXJBZ2VudE9yZGVyaW5nVGVzdCk6CisgICAgYWdlbnQgPSAnR29vZ2xlYm90LU1vYmlsZScKKworCitjbGFzcyBHb29nbGVVUkxPcmRlcmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgR29vZ2xlIGFsc28gZ290IHRoZSBvcmRlciB3cm9uZy4gWW91IG5lZWQKKyAgICAjIHRvIHNwZWNpZnkgdGhlIFVSTHMgZnJvbSBtb3JlIHNwZWNpZmljIHRvIG1vcmUgZ2VuZXJhbAorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBHb29nbGVib3QKIEFsbG93OiAvZm9sZGVyMS9teWZpbGUuaHRtbAogRGlzYWxsb3c6IC9mb2xkZXIxLwotIiIiCi0KLWdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KLWJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCi0KLVJvYm90VGVzdCgxMywgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJnb29nbGVib3QiKQorICAgICIiIgorICAgIGFnZW50ID0gJ2dvb2dsZWJvdCcKKyAgICBnb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCisgICAgYmFkID0gWycvZm9sZGVyMS9hbm90aGVyZmlsZS5odG1sJ10KIAogCi0jIDE0LiBGb3IgaXNzdWUgIzYzMjUgKHF1ZXJ5IHN0cmluZyBzdXBwb3J0KQotZG9jID0gIiIiCitjbGFzcyBEaXNhbGxvd1F1ZXJ5U3RyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBzZWUgaXNzdWUgIzYzMjUgZm9yIGRldGFpbHMKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogRGlzYWxsb3c6IC9zb21lL3BhdGg/bmFtZT12YWx1ZQotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnL3NvbWUvcGF0aCddCisgICAgYmFkID0gWycvc29tZS9wYXRoP25hbWU9dmFsdWUnXQogCi1nb29kID0gWycvc29tZS9wYXRoJ10KLWJhZCA9IFsnL3NvbWUvcGF0aD9uYW1lPXZhbHVlJ10KIAotUm9ib3RUZXN0KDE0LCBkb2MsIGdvb2QsIGJhZCkKLQotIyAxNS4gRm9yIGlzc3VlICM0MTA4IChvYmV5IGZpcnN0ICogZW50cnkpCi1kb2MgPSAiIiIKK2NsYXNzIFVzZUZpcnN0VXNlckFnZW50V2lsZGNhcmRUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIG9iZXkgZmlyc3QgKiBlbnRyeSAoIzQxMDgpCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvc29tZS9wYXRoCiAKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvYW5vdGhlci9wYXRoCi0iIiIKKyAgICAiIiIKKyAgICBnb29kID0gWycvYW5vdGhlci9wYXRoJ10KKyAgICBiYWQgPSBbJy9zb21lL3BhdGgnXQogCi1nb29kID0gWycvYW5vdGhlci9wYXRoJ10KLWJhZCA9IFsnL3NvbWUvcGF0aCddCiAKLVJvYm90VGVzdCgxNSwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMTYuIEVtcHR5IHF1ZXJ5IChpc3N1ZSAjMTc0MDMpLiBOb3JtYWxpemluZyB0aGUgdXJsIGZpcnN0LgotZG9jID0gIiIiCitjbGFzcyBFbXB0eVF1ZXJ5U3RyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBub3JtYWxpemUgdGhlIFVSTCBmaXJzdCAoIzE3NDAzKQorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBBbGxvdzogL3NvbWUvcGF0aD8KIERpc2FsbG93OiAvYW5vdGhlci9wYXRoPworICAgICIiIgorICAgIGdvb2QgPSBbJy9zb21lL3BhdGg/J10KKyAgICBiYWQgPSBbJy9hbm90aGVyL3BhdGg/J10KKworCitjbGFzcyBEZWZhdWx0RW50cnlUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAorVXNlci1hZ2VudDogKgorQ3Jhd2wtZGVsYXk6IDEKK1JlcXVlc3QtcmF0ZTogMy8xNQorRGlzYWxsb3c6IC9jeWJlcndvcmxkL21hcC8KKyAgICAiIiIKKyAgICBnb29kID0gWycvJywgJy90ZXN0Lmh0bWwnXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnXQorCisKK2NsYXNzIFN0cmluZ0Zvcm1hdHRpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAorVXNlci1hZ2VudDogKgorQ3Jhd2wtZGVsYXk6IDEKK1JlcXVlc3QtcmF0ZTogMy8xNQorRGlzYWxsb3c6IC9jeWJlcndvcmxkL21hcC8gIyBUaGlzIGlzIGFuIGluZmluaXRlIHZpcnR1YWwgVVJMIHNwYWNlCisKKyMgQ3liZXJtYXBwZXIga25vd3Mgd2hlcmUgdG8gZ28uCitVc2VyLWFnZW50OiBjeWJlcm1hcHBlcgorRGlzYWxsb3c6IC9zb21lL3BhdGgKKyAgICAiIiIKKworICAgIGV4cGVjdGVkX291dHB1dCA9ICIiIlwKK1VzZXItYWdlbnQ6IGN5YmVybWFwcGVyCitEaXNhbGxvdzogL3NvbWUvcGF0aAorCitVc2VyLWFnZW50OiAqCitEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLworCiAiIiIKIAotZ29vZCA9IFsnL3NvbWUvcGF0aD8nXQotYmFkID0gWycvYW5vdGhlci9wYXRoPyddCisgICAgZGVmIHRlc3Rfc3RyaW5nX2Zvcm1hdHRpbmcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYucGFyc2VyKSwgc2VsZi5leHBlY3RlZF9vdXRwdXQpCiAKLVJvYm90VGVzdCgxNiwgZG9jLCBnb29kLCBiYWQpCisKK2NsYXNzIFJvYm90SGFuZGxlcihCYXNlSFRUUFJlcXVlc3RIYW5kbGVyKToKKworICAgIGRlZiBkb19HRVQoc2VsZik6CisgICAgICAgIHNlbGYuc2VuZF9lcnJvcig0MDMsICJGb3JiaWRkZW4gYWNjZXNzIikKKworICAgIGRlZiBsb2dfbWVzc2FnZShzZWxmLCBmb3JtYXQsICphcmdzKToKKyAgICAgICAgcGFzcworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ3RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKK2NsYXNzIFBhc3N3b3JkUHJvdGVjdGVkU2l0ZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBIVFRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCBSb2JvdEhhbmRsZXIpCisKKyAgICAgICAgc2VsZi50ID0gdGhyZWFkaW5nLlRocmVhZCgKKyAgICAgICAgICAgIG5hbWU9J0hUVFBTZXJ2ZXIgc2VydmluZycsCisgICAgICAgICAgICB0YXJnZXQ9c2VsZi5zZXJ2ZXIuc2VydmVfZm9yZXZlciwKKyAgICAgICAgICAgICMgU2hvcnQgcG9sbCBpbnRlcnZhbCB0byBtYWtlIHRoZSB0ZXN0IGZpbmlzaCBxdWlja2x5LgorICAgICAgICAgICAgIyBUaW1lIGJldHdlZW4gcmVxdWVzdHMgaXMgc2hvcnQgZW5vdWdoIHRoYXQgd2Ugd29uJ3Qgd2FrZQorICAgICAgICAgICAgIyB1cCBzcHVyaW91c2x5IHRvbyBtYW55IHRpbWVzLgorICAgICAgICAgICAga3dhcmdzPXsncG9sbF9pbnRlcnZhbCc6MC4wMX0pCisgICAgICAgIHNlbGYudC5kYWVtb24gPSBUcnVlICAjIEluIGNhc2UgdGhpcyBmdW5jdGlvbiByYWlzZXMuCisgICAgICAgIHNlbGYudC5zdGFydCgpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuc2VydmVyLnNodXRkb3duKCkKKyAgICAgICAgc2VsZi50LmpvaW4oKQorICAgICAgICBzZWxmLnNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorCisgICAgQHN1cHBvcnQucmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3RQYXNzd29yZFByb3RlY3RlZFNpdGUoc2VsZik6CisgICAgICAgIGFkZHIgPSBzZWxmLnNlcnZlci5zZXJ2ZXJfYWRkcmVzcworICAgICAgICB1cmwgPSAnaHR0cDovLycgKyBzdXBwb3J0LkhPU1QgKyAnOicgKyBzdHIoYWRkclsxXSkKKyAgICAgICAgcm9ib3RzX3VybCA9IHVybCArICIvcm9ib3RzLnR4dCIKKyAgICAgICAgcGFyc2VyID0gcm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLnNldF91cmwodXJsKQorICAgICAgICBwYXJzZXIucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGFyc2VyLmNhbl9mZXRjaCgiKiIsIHJvYm90c191cmwpKQogCiAKIGNsYXNzIE5ldHdvcmtUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgdGVzdFBhc3N3b3JkUHJvdGVjdGVkU2l0ZShzZWxmKToKLSAgICAgICAgdGVzdF9zdXBwb3J0LnJlcXVpcmVzKCduZXR3b3JrJykKLSAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCdtdWVibGVzbW9yYWxlZGEuY29tJyk6Ci0gICAgICAgICAgICB1cmwgPSAnaHR0cDovL211ZWJsZXNtb3JhbGVkYS5jb20nCi0gICAgICAgICAgICByb2JvdHNfdXJsID0gdXJsICsgIi9yb2JvdHMudHh0IgotICAgICAgICAgICAgIyBGaXJzdCBjaGVjayB0aGUgVVJMIGlzIHVzYWJsZSBmb3Igb3VyIHB1cnBvc2VzLCBzaW5jZSB0aGUKLSAgICAgICAgICAgICMgdGVzdCBzaXRlIGlzIGEgYml0IGZsYWt5LgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHVybG9wZW4ocm9ib3RzX3VybCkKLSAgICAgICAgICAgIGV4Y2VwdCBIVFRQRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmNvZGUgbm90IGluIHs0MDEsIDQwM306Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoCi0gICAgICAgICAgICAgICAgICAgICAgICAiJXIgc2hvdWxkIHJldHVybiBhIDQwMSBvciA0MDMgSFRUUCBlcnJvciwgbm90ICVyIgotICAgICAgICAgICAgICAgICAgICAgICAgJSAocm9ib3RzX3VybCwgZS5jb2RlKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgKLSAgICAgICAgICAgICAgICAgICAgIiVyIHNob3VsZCByZXR1cm4gYSA0MDEgb3IgNDAzIEhUVFAgZXJyb3IsIG5vdCBzdWNjZWVkIgotICAgICAgICAgICAgICAgICAgICAlIChyb2JvdHNfdXJsKSkKLSAgICAgICAgICAgIHBhcnNlciA9IHJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigpCi0gICAgICAgICAgICBwYXJzZXIuc2V0X3VybCh1cmwpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGFyc2VyLnJlYWQoKQotICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnJXMgaXMgdW5hdmFpbGFibGUnICUgdXJsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuY2FuX2ZldGNoKCIqIiwgcm9ib3RzX3VybCksIEZhbHNlKQorICAgIGJhc2VfdXJsID0gJ2h0dHA6Ly93d3cucHl0aG9udGVzdC5uZXQvJworICAgIHJvYm90c190eHQgPSAne31lbHNld2hlcmUvcm9ib3RzLnR4dCcuZm9ybWF0KGJhc2VfdXJsKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9IVFRQUywgJ25lZWQgU1NMIHN1cHBvcnQgdG8gZG93bmxvYWQgbGljZW5zZScpCi0gICAgQHRlc3Rfc3VwcG9ydC5zeXN0ZW1fbXVzdF92YWxpZGF0ZV9jZXJ0Ci0gICAgZGVmIHRlc3RQeXRob25Pcmcoc2VsZik6Ci0gICAgICAgIHRlc3Rfc3VwcG9ydC5yZXF1aXJlcygnbmV0d29yaycpCi0gICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgnd3d3LnB5dGhvbi5vcmcnKToKLSAgICAgICAgICAgIHBhcnNlciA9IHJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigKLSAgICAgICAgICAgICAgICAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9yb2JvdHMudHh0IikKLSAgICAgICAgICAgIHBhcnNlci5yZWFkKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgKLSAgICAgICAgICAgICAgICBwYXJzZXIuY2FuX2ZldGNoKCIqIiwgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvcm9ib3RzLnR4dCIpKQorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KGNscy5iYXNlX3VybCk6CisgICAgICAgICAgICBjbHMucGFyc2VyID0gcm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKGNscy5yb2JvdHNfdHh0KQorICAgICAgICAgICAgY2xzLnBhcnNlci5yZWFkKCkKKworICAgIGRlZiB1cmwoc2VsZiwgcGF0aCk6CisgICAgICAgIHJldHVybiAne317fXt9Jy5mb3JtYXQoCisgICAgICAgICAgICBzZWxmLmJhc2VfdXJsLCBwYXRoLCAnLycgaWYgbm90IG9zLnBhdGguc3BsaXRleHQocGF0aClbMV0gZWxzZSAnJworICAgICAgICApCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5kaXNhbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2VsZi5wYXJzZXIubXRpbWUoKSwgMCkKKworICAgIGRlZiB0ZXN0X2Nhbl9mZXRjaChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYudXJsKCdlbHNld2hlcmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYuYmFzZV91cmwpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnTnV0Y2gnLCBzZWxmLnVybCgnYnJpYW4nKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYudXJsKCd3ZWJzdGF0cycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJyonLCBzZWxmLnVybCgnd2Vic3RhdHMnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJyonLCBzZWxmLmJhc2VfdXJsKSkKKworICAgIGRlZiB0ZXN0X3JlYWRfNDA0KHNlbGYpOgorICAgICAgICBwYXJzZXIgPSByb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoc2VsZi51cmwoJ2ktcm9ib3QudHh0JykpCisgICAgICAgIHBhcnNlci5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhcnNlci5hbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocGFyc2VyLmRpc2FsbG93X2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIubXRpbWUoKSwgMCkKIAogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdF9zdXBwb3J0LnJ1bl91bml0dGVzdCh0ZXN0cykKLSAgICB0ZXN0X3N1cHBvcnQucnVuX3VuaXR0ZXN0KE5ldHdvcmtUZXN0Q2FzZSkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKKyAgICAgICAgVXNlckFnZW50V2lsZGNhcmRUZXN0LAorICAgICAgICBSZWplY3RBbGxSb2JvdHNUZXN0LAorICAgICAgICBVc2VyQWdlbnRPcmRlcmluZ1Rlc3QsCisgICAgICAgIFVzZXJBZ2VudEdvb2dsZU1vYmlsZVRlc3QsCisgICAgICAgIEdvb2dsZVVSTE9yZGVyaW5nVGVzdCwKKyAgICAgICAgRGlzYWxsb3dRdWVyeVN0cmluZ1Rlc3QsCisgICAgICAgIFVzZUZpcnN0VXNlckFnZW50V2lsZGNhcmRUZXN0LAorICAgICAgICBFbXB0eVF1ZXJ5U3RyaW5nVGVzdCwKKyAgICAgICAgRGVmYXVsdEVudHJ5VGVzdCwKKyAgICAgICAgU3RyaW5nRm9ybWF0dGluZ1Rlc3QsCisgICAgICAgIFBhc3N3b3JkUHJvdGVjdGVkU2l0ZVRlc3RDYXNlLAorICAgICAgICBOZXR3b3JrVGVzdENhc2UpCiAKLWlmIF9fbmFtZV9fPT0nX19tYWluX18nOgotICAgIHRlc3Rfc3VwcG9ydC52ZXJib3NlID0gMQorCitpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NheC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5CmluZGV4IGE0MjI4ZGMuLjg3YTg2NTggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2F4LnB5CkBAIC0yLDcgKzIsOCBAQAogIyAkSWQkCiAKIGZyb20geG1sLnNheCBpbXBvcnQgbWFrZV9wYXJzZXIsIENvbnRlbnRIYW5kbGVyLCBcCi0gICAgICAgICAgICAgICAgICAgIFNBWEV4Y2VwdGlvbiwgU0FYUmVhZGVyTm90QXZhaWxhYmxlLCBTQVhQYXJzZUV4Y2VwdGlvbgorICAgICAgICAgICAgICAgICAgICBTQVhFeGNlcHRpb24sIFNBWFJlYWRlck5vdEF2YWlsYWJsZSwgU0FYUGFyc2VFeGNlcHRpb24sIFwKKyAgICAgICAgICAgICAgICAgICAgc2F4dXRpbHMKIHRyeToKICAgICBtYWtlX3BhcnNlcigpCiBleGNlcHQgU0FYUmVhZGVyTm90QXZhaWxhYmxlOgpAQCAtMTczLDYgKzE3NCwyMSBAQAogICAgICAgICAgICAgaW5wdXQuc2V0RW5jb2RpbmcoJ2lzby04ODU5LTEnKQogICAgICAgICAgICAgc2VsZi5jaGVja19wYXJzZShpbnB1dCkKIAorICAgIGRlZiB0ZXN0X3BhcnNlX2Nsb3NlX3NvdXJjZShzZWxmKToKKyAgICAgICAgYnVpbHRpbl9vcGVuID0gb3BlbgorICAgICAgICBub25fbG9jYWwgPSB7J2ZpbGVvYmonOiBOb25lfQorCisgICAgICAgIGRlZiBtb2NrX29wZW4oKmFyZ3MpOgorICAgICAgICAgICAgZmlsZW9iaiA9IGJ1aWx0aW5fb3BlbigqYXJncykKKyAgICAgICAgICAgIG5vbl9sb2NhbFsnZmlsZW9iaiddID0gZmlsZW9iagorICAgICAgICAgICAgcmV0dXJuIGZpbGVvYmoKKworICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHNheHV0aWxzLCAnb3BlbicsIG1vY2tfb3Blbik6CisgICAgICAgICAgICBtYWtlX3htbF9maWxlKHNlbGYuZGF0YSwgJ2lzby04ODU5LTEnLCBOb25lKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTQVhFeGNlcHRpb24pOgorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfcGFyc2UoVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vbl9sb2NhbFsnZmlsZW9iaiddLmNsb3NlZCkKKwogICAgIGRlZiBjaGVja19wYXJzZVN0cmluZyhzZWxmLCBzKToKICAgICAgICAgZnJvbSB4bWwuc2F4IGltcG9ydCBwYXJzZVN0cmluZwogICAgICAgICByZXN1bHQgPSBTdHJpbmdJTygpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NodXRpbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CmluZGV4IDA4NjlhOWUuLmNhODlmZTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5CkBAIC0zNSw2ICszNSw3IEBACiAKIHRyeToKICAgICBpbXBvcnQgemlwZmlsZQorICAgIGltcG9ydCB6bGliCiAgICAgWklQX1NVUFBPUlQgPSBUcnVlCiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgWklQX1NVUFBPUlQgPSBmaW5kX2V4ZWN1dGFibGUoJ3ppcCcpCkBAIC00NjAsNyArNDYxLDYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YXJiYWxsLCBiYXNlX25hbWUgKyAnLnRhcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZSh0YXJiYWxsKSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaSVBfU1VQUE9SVCwgJ05lZWQgemlwIHN1cHBvcnQgdG8gcnVuJykKICAgICBkZWYgdGVzdF9tYWtlX3ppcGZpbGUoc2VsZik6CiAgICAgICAgICMgY3JlYXRpbmcgc29tZXRoaW5nIHRvIHppcApAQCAtNDg1LDYgKzQ4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFsnZGlzdC8nLCAnZGlzdC9maWxlMScsICdkaXN0L2ZpbGUyJywKICAgICAgICAgICAgICAgICAgICAgICdkaXN0L3N1Yi8nLCAnZGlzdC9zdWIvZmlsZTMnLCAnZGlzdC9zdWIyLycsCiAgICAgICAgICAgICAgICAgICAgICAnb3V0ZXInXSkKKyAgICAgICAgc3VwcG9ydC51bmxpbmsocmVzKQogCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGFuZ2VfY3dkKHdvcmtfZGlyKToKICAgICAgICAgICAgIGJhc2VfbmFtZSA9IG9zLnBhdGguYWJzcGF0aChyZWxfYmFzZV9uYW1lKQpAQCAtNDk4LDcgKzQ5OSw2IEBACiAgICAgICAgICAgICAgICAgICAgIFsnZGlzdC8nLCAnZGlzdC9maWxlMScsICdkaXN0L2ZpbGUyJywKICAgICAgICAgICAgICAgICAgICAgICdkaXN0L3N1Yi8nLCAnZGlzdC9zdWIvZmlsZTMnLCAnZGlzdC9zdWIyLyddKQogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoemxpYiwgIlJlcXVpcmVzIHpsaWIiKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFpJUF9TVVBQT1JULCAnTmVlZCB6aXAgc3VwcG9ydCB0byBydW4nKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGZpbmRfZXhlY3V0YWJsZSgnemlwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ05lZWQgdGhlIHppcCBjb21tYW5kIHRvIHJ1bicpCkBAIC01MjQsNyArNTI0LDYgQEAKICAgICAgICAgICAgIG5hbWVzMiA9IHpmLm5hbWVsaXN0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzb3J0ZWQobmFtZXMpLCBzb3J0ZWQobmFtZXMyKSkKIAotICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHpsaWIsICJSZXF1aXJlcyB6bGliIikKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhaSVBfU1VQUE9SVCwgJ05lZWQgemlwIHN1cHBvcnQgdG8gcnVuJykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhmaW5kX2V4ZWN1dGFibGUoJ3VuemlwJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ05lZWQgdGhlIHVuemlwIGNvbW1hbmQgdG8gcnVuJykKQEAgLTU0NCw2ICs1NDMsOCBAQAogICAgICAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KHppcF9jbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkKICAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAgZGV0YWlscyA9IGV4Yy5vdXRwdXQKKyAgICAgICAgICAgICAgICBpZiAndW5yZWNvZ25pemVkIG9wdGlvbjogdCcgaW4gZGV0YWlsczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidW56aXAgZG9lc24ndCBzdXBwb3J0IC10IikKICAgICAgICAgICAgICAgICBtc2cgPSAie31cblxuKipVbnppcCBPdXRwdXQqKlxue30iCiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKG1zZy5mb3JtYXQoZXhjLCBkZXRhaWxzKSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaWduYWwucHkgYi9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQppbmRleCA3NDgzZjY0Li41ZjRmNTc5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weQpAQCAtMTM4LDYgKzEzOCw4IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoInBhdXNlIHJldHVybmVkIG9mIGl0cyBvd24gYWNjb3JkLCBhbmQgdGhlIHNpZ25hbCIKICAgICAgICAgICAgICAgICAgICAgICAiIGRpZG4ndCBhcnJpdmUgYWZ0ZXIgYW5vdGhlciBzZWNvbmQuIikKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNpZ25hbC5hbGFybSgwKQogCiAgICAgIyBJc3N1ZSAzODY0LiBVbmtub3duIGlmIHRoaXMgYWZmZWN0cyBlYXJsaWVyIHZlcnNpb25zIG9mIGZyZWVic2QgYWxzby4KICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybT09J2ZyZWVic2Q2JywKQEAgLTE4NSw2ICsxODcsOSBAQAogICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVGVzdCBkZWFkbG9ja2VkIGFmdGVyICVkIHNlY29uZHMuJyAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTUFYX0RVUkFUSU9OKQogCisgICAgICAgICAgICAjIHJlYWQgdGhlIGV4aXQgc3RhdHVzIHRvIG5vdCBsZWFrIGEgem9tYmllIHByb2Nlc3MKKyAgICAgICAgICAgIG9zLndhaXRwaWQoY2hpbGQsIDApCisKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKIGNsYXNzIEJhc2ljU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjQzLDExICsyNDgsMTUgQEAKICAgICAgICAgaW1wb3J0IHNlbGVjdAogCiAgICAgICAgIHNpZ25hbC5hbGFybSgxKQotICAgICAgICBiZWZvcmVfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgICMgV2UgYXR0ZW1wdCB0byBnZXQgYSBzaWduYWwgZHVyaW5nIHRoZSBzbGVlcCwKLSAgICAgICAgIyBiZWZvcmUgc2VsZWN0IGlzIGNhbGxlZAotICAgICAgICB0aW1lLnNsZWVwKHNlbGYuVElNRU9VVF9GVUxMKQotICAgICAgICBtaWRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJlZm9yZV90aW1lID0gdGltZS50aW1lKCkKKyAgICAgICAgICAgICMgV2UgYXR0ZW1wdCB0byBnZXQgYSBzaWduYWwgZHVyaW5nIHRoZSBzbGVlcCwKKyAgICAgICAgICAgICMgYmVmb3JlIHNlbGVjdCBpcyBjYWxsZWQKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoc2VsZi5USU1FT1VUX0ZVTEwpCisgICAgICAgICAgICBtaWRfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMCkKKwogICAgICAgICBzZWxmLmFzc2VydFRydWUobWlkX3RpbWUgLSBiZWZvcmVfdGltZSA8IHNlbGYuVElNRU9VVF9IQUxGKQogICAgICAgICBzZWxlY3Quc2VsZWN0KFtzZWxmLnJlYWRdLCBbXSwgW10sIHNlbGYuVElNRU9VVF9GVUxMKQogICAgICAgICBhZnRlcl90aW1lID0gdGltZS50aW1lKCkKQEAgLTI1NywxMSArMjY2LDE1IEBACiAgICAgICAgIGltcG9ydCBzZWxlY3QKIAogICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgYmVmb3JlX3RpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICAjIFdlIGF0dGVtcHQgdG8gZ2V0IGEgc2lnbmFsIGR1cmluZyB0aGUgc2VsZWN0IGNhbGwKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc2VsZWN0LmVycm9yLCBzZWxlY3Quc2VsZWN0LAotICAgICAgICAgICAgW3NlbGYucmVhZF0sIFtdLCBbXSwgc2VsZi5USU1FT1VUX0ZVTEwpCi0gICAgICAgIGFmdGVyX3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBiZWZvcmVfdGltZSA9IHRpbWUudGltZSgpCisgICAgICAgICAgICAjIFdlIGF0dGVtcHQgdG8gZ2V0IGEgc2lnbmFsIGR1cmluZyB0aGUgc2VsZWN0IGNhbGwKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNlbGVjdC5lcnJvciwgc2VsZWN0LnNlbGVjdCwKKyAgICAgICAgICAgICAgICBbc2VsZi5yZWFkXSwgW10sIFtdLCBzZWxmLlRJTUVPVVRfRlVMTCkKKyAgICAgICAgICAgIGFmdGVyX3RpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDApCisKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFmdGVyX3RpbWUgLSBiZWZvcmVfdGltZSA8IHNlbGYuVElNRU9VVF9IQUxGKQogCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtNDkwLDYgKzUwMywxNiBAQAogICAgICAgICAjIGFuZCB0aGUgaGFuZGxlciBzaG91bGQgaGF2ZSBiZWVuIGNhbGxlZAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaG5kbF9jYWxsZWQsIFRydWUpCiAKKyAgICBkZWYgdGVzdF9zZXRpdGltZXJfdGlueShzZWxmKToKKyAgICAgICAgIyBicG8tMzA4MDc6IEMgc2V0aXRpbWVyKCkgdGFrZXMgYSBtaWNyb3NlY29uZC1yZXNvbHV0aW9uIGludGVydmFsLgorICAgICAgICAjIENoZWNrIHRoYXQgZmxvYXQgLT4gdGltZXZhbCBjb252ZXJzaW9uIGRvZXNuJ3Qgcm91bmQKKyAgICAgICAgIyB0aGUgaW50ZXJ2YWwgZG93biB0byB6ZXJvLCB3aGljaCB3b3VsZCBkaXNhYmxlIHRoZSB0aW1lci4KKyAgICAgICAgc2VsZi5pdGltZXIgPSBzaWduYWwuSVRJTUVSX1JFQUwKKyAgICAgICAgc2lnbmFsLnNldGl0aW1lcihzZWxmLml0aW1lciwgMWUtNikKKyAgICAgICAgdGltZS5zbGVlcCgxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuaG5kbF9jYWxsZWQsIFRydWUpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoQmFzaWNTaWduYWxUZXN0cywgSW50ZXJQcm9jZXNzU2lnbmFsVGVzdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXYWtldXBGRFRlc3RzLCBXYWtldXBTaWduYWxUZXN0cywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQppbmRleCBkOWE5MzI0Li45NTY5MTM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NpdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CkBAIC04LDYgKzgsNyBAQAogZnJvbSB0ZXN0LnRlc3Rfc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0LCBURVNURk4sIEVudmlyb25tZW50VmFyR3VhcmQKIGZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IGNhcHR1cmVkX291dHB1dAogaW1wb3J0IF9fYnVpbHRpbl9fCitpbXBvcnQgZXJybm8KIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHJlCkBAIC0yNCwxNCArMjUsMzAgQEAKIGVsc2U6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImltcG9ydGF0aW9uIG9mIHNpdGUucHkgc3VwcHJlc3NlZCIpCiAKLWlmIHNpdGUuRU5BQkxFX1VTRVJfU0lURSBhbmQgbm90IG9zLnBhdGguaXNkaXIoc2l0ZS5VU0VSX1NJVEUpOgotICAgICMgbmVlZCB0byBhZGQgdXNlciBzaXRlIGRpcmVjdG9yeSBmb3IgdGVzdHMKLSAgICB0cnk6Ci0gICAgICAgIG9zLm1ha2VkaXJzKHNpdGUuVVNFUl9TSVRFKQotICAgICAgICBzaXRlLmFkZHNpdGVkaXIoc2l0ZS5VU0VSX1NJVEUpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgotICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgndW5hYmxlIHRvIGNyZWF0ZSB1c2VyIHNpdGUgZGlyZWN0b3J5ICglcik6ICVzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzaXRlLlVTRVJfU0lURSwgZXhjKSkKKworT0xEX1NZU19QQVRIID0gTm9uZQorCisKK2RlZiBzZXRVcE1vZHVsZSgpOgorICAgIGdsb2JhbCBPTERfU1lTX1BBVEgKKyAgICBPTERfU1lTX1BBVEggPSBzeXMucGF0aFs6XQorCisgICAgaWYgc2l0ZS5FTkFCTEVfVVNFUl9TSVRFIGFuZCBub3Qgb3MucGF0aC5pc2RpcihzaXRlLlVTRVJfU0lURSk6CisgICAgICAgICMgbmVlZCB0byBhZGQgdXNlciBzaXRlIGRpcmVjdG9yeSBmb3IgdGVzdHMKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3MubWFrZWRpcnMoc2l0ZS5VU0VSX1NJVEUpCisgICAgICAgICAgICAjIG1vZGlmeSBzeXMucGF0aDogd2lsbCBiZSByZXN0b3JlZCBieSB0ZWFyRG93bk1vZHVsZSgpCisgICAgICAgICAgICBzaXRlLmFkZHNpdGVkaXIoc2l0ZS5VU0VSX1NJVEUpCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5lcnJubyBpbiAoZXJybm8uRUFDQ0VTLCBlcnJuby5FUEVSTSk6CisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ3VuYWJsZSB0byBjcmVhdGUgdXNlciBzaXRlIGRpcmVjdG9yeSAoJXIpOiAlcycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzaXRlLlVTRVJfU0lURSwgZXhjKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UKKworCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKyAgICBzeXMucGF0aFs6XSA9IE9MRF9TWVNfUEFUSAogCiAKIGNsYXNzIEhlbHBlckZ1bmN0aW9uc1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGxpYi5weQppbmRleCAxYmI2NjkwLi43MDNiNjMxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NtdHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zbXRwbGliLnB5CkBAIC0zMDYsMTIgKzMwNiwxNCBAQAogICAgICAgICBzZWxmLnNvY2suc2V0dGltZW91dCgxNSkKICAgICAgICAgc2VsZi5wb3J0ID0gdGVzdF9zdXBwb3J0LmJpbmRfcG9ydChzZWxmLnNvY2spCiAgICAgICAgIHNlcnZhcmdzID0gKHNlbGYuZXZ0LCBzZWxmLnJlc3BkYXRhLCBzZWxmLnNvY2spCi0gICAgICAgIHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlcnZlciwgYXJncz1zZXJ2YXJncykuc3RhcnQoKQorICAgICAgICBzZWxmLnRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlcnZlciwgYXJncz1zZXJ2YXJncykKKyAgICAgICAgc2VsZi50aHJlYWQuc3RhcnQoKQogICAgICAgICBzZWxmLmV2dC53YWl0KCkKICAgICAgICAgc2VsZi5ldnQuY2xlYXIoKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLmV2dC53YWl0KCkKKyAgICAgICAgc2VsZi50aHJlYWQuam9pbigpCiAgICAgICAgIHN5cy5zdGRvdXQgPSBzZWxmLm9sZF9zdGRvdXQKIAogICAgIGRlZiB0ZXN0TGluZVRvb0xvbmcoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weSBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CmluZGV4IDc2NWQ3YzAuLjE0NjA3MTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ja2V0LnB5CkBAIC0zNSw3ICszNSw3IEBACiAKIEhPU1QgPSB0ZXN0X3N1cHBvcnQuSE9TVAogTVNHID0gYidNaWNoYWVsIEdpbGZpeCB3YXMgaGVyZVxuJwotU1VQUE9SVFNfSVBWNiA9IHNvY2tldC5oYXNfaXB2NiBhbmQgdHJ5X2FkZHJlc3MoJzo6MScsIGZhbWlseT1zb2NrZXQuQUZfSU5FVDYpCitTVVBQT1JUU19JUFY2ID0gdGVzdF9zdXBwb3J0LklQVjZfRU5BQkxFRAogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZApAQCAtNzMzLDYgKzczMyw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoc29ja2V0LnRpbWVvdXQsIGMuc2VuZGFsbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiIngiICogdGVzdF9zdXBwb3J0LlNPQ0tfTUFYX1NJWkUpCiAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzaWduYWwuYWxhcm0oMCkKICAgICAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0FMUk0sIG9sZF9hbGFybSkKICAgICAgICAgICAgIGMuY2xvc2UoKQogICAgICAgICAgICAgcy5jbG9zZSgpCkBAIC0xMzU3LDYgKzEzNTgsMTAgQEAKICAgICAgICAgZXhwZWN0ZWRfZXJybm9zID0gWyBlcnJuby5FQ09OTlJFRlVTRUQsIF0KICAgICAgICAgaWYgaGFzYXR0cihlcnJubywgJ0VORVRVTlJFQUNIJyk6CiAgICAgICAgICAgICBleHBlY3RlZF9lcnJub3MuYXBwZW5kKGVycm5vLkVORVRVTlJFQUNIKQorICAgICAgICBpZiBoYXNhdHRyKGVycm5vLCAnRUFERFJOT1RBVkFJTCcpOgorICAgICAgICAgICAgIyBicG8tMzE5MTA6IHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigpIGZhaWxzIHJhbmRvbWx5CisgICAgICAgICAgICAjIHdpdGggRUFERFJOT1RBVkFJTCBvbiBUcmF2aXMgQ0kKKyAgICAgICAgICAgIGV4cGVjdGVkX2Vycm5vcy5hcHBlbmQoZXJybm8uRUFERFJOT1RBVkFJTCkKIAogICAgICAgICBzZWxmLmFzc2VydEluKGNtLmV4Y2VwdGlvbi5lcnJubywgZXhwZWN0ZWRfZXJybm9zKQogCkBAIC0xNTI5LDggKzE1MzQsOCBAQAogICAgICAgICAgICAgcmFpc2UgQWxhcm0KICAgICAgICAgb2xkX2FsYXJtID0gc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHQUxSTSwgYWxhcm1faGFuZGxlcikKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDIpICAgICMgUE9TSVggYWxsb3dzIGFsYXJtIHRvIGJlIHVwIHRvIDEgc2Vjb25kIGVhcmx5CiAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDIpICAgICMgUE9TSVggYWxsb3dzIGFsYXJtIHRvIGJlIHVwIHRvIDEgc2Vjb25kIGVhcmx5CiAgICAgICAgICAgICAgICAgZm9vID0gc2VsZi5zZXJ2LmFjY2VwdCgpCiAgICAgICAgICAgICBleGNlcHQgc29ja2V0LnRpbWVvdXQ6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJjYXVnaHQgdGltZW91dCBpbnN0ZWFkIG9mIEFsYXJtIikKQEAgLTE3MDcsOSArMTcxMiwxNyBAQAogICAgICIiIgogICAgIGlmIG5vdCBoYXNhdHRyKHNvY2tldCwgIkFGX1RJUEMiKToKICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKCIvcHJvYy9tb2R1bGVzIik6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIHdpdGggb3BlbigiL3Byb2MvbW9kdWxlcyIpIGFzIGY6CisgICAgdHJ5OgorICAgICAgICBmID0gb3BlbigiL3Byb2MvbW9kdWxlcyIpCisgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKKyAgICAgICAgIyBJdCdzIG9rIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LCBpcyBhIGRpcmVjdG9yeSBvciBpZiB3ZQorICAgICAgICAjIGhhdmUgbm90IHRoZSBwZXJtaXNzaW9uIHRvIHJlYWQgaXQuIEluIGFueSBvdGhlciBjYXNlIGl0J3MgYQorICAgICAgICAjIHJlYWwgZXJyb3IsIHNvIHJhaXNlIGl0IGFnYWluLgorICAgICAgICBpZiBlLmVycm5vIGluIChlcnJuby5FTk9FTlQsIGVycm5vLkVJU0RJUiwgZXJybm8uRUFDQ0VTKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UKKyAgICB3aXRoIGY6CiAgICAgICAgIGZvciBsaW5lIGluIGY6CiAgICAgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoInRpcGMgIik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc29ja2V0c2VydmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKaW5kZXggZDY0NWQyMC4uODQ3ODU5ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkKQEAgLTY5LDE3ICs2OSwzMiBAQAogICAgIHRlc3RjYXNlLmFzc2VydEVxdWFsKDcyIDw8IDgsIHN0YXR1cykKIAogCitkZWYgY2xvc2Vfc2VydmVyKHNlcnZlcik6CisgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisKKyAgICBpZiBoYXNhdHRyKHNlcnZlciwgJ2FjdGl2ZV9jaGlsZHJlbicpOgorICAgICAgICAjIEZvcmtpbmdNaXhJbjogTWFudWFsbHkgcmVhcCBhbGwgY2hpbGQgcHJvY2Vzc2VzLCBzaW5jZSBzZXJ2ZXJfY2xvc2UoKQorICAgICAgICAjIGNhbGxzIHdhaXRwaWQoKSBpbiBub24tYmxvY2tpbmcgbW9kZSB1c2luZyB0aGUgV05PSEFORyBmbGFnLgorICAgICAgICBmb3IgcGlkIGluIHNlcnZlci5hY3RpdmVfY2hpbGRyZW4uY29weSgpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zLndhaXRwaWQocGlkLCAwKQorICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VydmVyLmFjdGl2ZV9jaGlsZHJlbi5jbGVhcigpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFNvY2tldFNlcnZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3QgYWxsIHNvY2tldCBzZXJ2ZXJzLiIiIgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsX2FsYXJtLCAwKQogICAgICAgICBzaWduYWxfYWxhcm0oNjApICAjIEtpbGwgZGVhZGxvY2tzIGFmdGVyIDYwIHNlY29uZHMuCiAgICAgICAgIHNlbGYucG9ydF9zZWVkID0gMAogICAgICAgICBzZWxmLnRlc3RfZmlsZXMgPSBbXQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzaWduYWxfYWxhcm0oMCkgICMgRGlkbid0IGRlYWRsb2NrLgorICAgICAgICBzZWxmLmRvQ2xlYW51cHMoKQogICAgICAgICByZWFwX2NoaWxkcmVuKCkKIAogICAgICAgICBmb3IgZm4gaW4gc2VsZi50ZXN0X2ZpbGVzOgpAQCAtMTE4LDcgKzEzMyw3IEBACiAgICAgICAgIGNsYXNzIE15U2VydmVyKHN2cmNscyk6CiAgICAgICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCisgICAgICAgICAgICAgICAgY2xvc2Vfc2VydmVyKHNlbGYpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBjbGFzcyBNeUhhbmRsZXIoaGRscmJhc2UpOgpAQCAtMTU4LDcgKzE3Myw3IEBACiAgICAgICAgIGlmIHZlcmJvc2U6IHByaW50ICJ3YWl0aW5nIGZvciBzZXJ2ZXIiCiAgICAgICAgIHNlcnZlci5zaHV0ZG93bigpCiAgICAgICAgIHQuam9pbigpCi0gICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICBjbG9zZV9zZXJ2ZXIoc2VydmVyKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzb2NrZXQuZXJyb3IsIHNlcnZlci5zb2NrZXQuZmlsZW5vKQogICAgICAgICBpZiB2ZXJib3NlOiBwcmludCAiZG9uZSIKIApAQCAtMzE0LDYgKzMyOSw3IEBACiAgICAgICAgICAgICBzLnNodXRkb3duKCkKICAgICAgICAgZm9yIHQsIHMgaW4gdGhyZWFkczoKICAgICAgICAgICAgIHQuam9pbigpCisgICAgICAgICAgICBjbG9zZV9zZXJ2ZXIocykKIAogICAgIGRlZiB0ZXN0X3RjcHNlcnZlcl9iaW5kX2xlYWsoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzIyNDM1OiB0aGUgc2VydmVyIHNvY2tldCB3b3VsZG4ndCBiZSBjbG9zZWQgaWYgYmluZCgpL2xpc3RlbigpCkBAIC0zNDcsNyArMzYzLDcgQEAKICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNodXRkb3duX2NhbGxlZCwgMSkKLSAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIGNsb3NlX3NlcnZlcihzZXJ2ZXIpCiAKIAogZGVmIHRlc3RfbWFpbigpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQppbmRleCBhMTdkNjEzLi43ZDA2ZGM1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQpAQCAtMTQsNyArMTQsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgZXJybm8KIGltcG9ydCBwcHJpbnQKLWltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHNodXRpbAogaW1wb3J0IHVybGxpYjIKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB3ZWFrcmVmCkBAIC03Myw3ICs3Myw3IEBACiBOT0tJQUNFUlQgPSBkYXRhX2ZpbGUoIm5va2lhLnBlbSIpCiBOVUxMQllURUNFUlQgPSBkYXRhX2ZpbGUoIm51bGxieXRlY2VydC5wZW0iKQogCi1ESEZJTEUgPSBkYXRhX2ZpbGUoImRoMTAyNC5wZW0iKQorREhGSUxFID0gZGF0YV9maWxlKCJmZmRoMzA3Mi5wZW0iKQogQllURVNfREhGSUxFID0gREhGSUxFLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkpCiAKIApAQCAtMTY4LDYgKzE2OCwxMyBAQAogICAgICAgICAgICAgc3NsLk9QX05PX0NPTVBSRVNTSU9OCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19TTkksIHtUcnVlLCBGYWxzZX0pCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3NsLkhBU19FQ0RILCB7VHJ1ZSwgRmFsc2V9KQorICAgICAgICBzc2wuT1BfTk9fU1NMdjIKKyAgICAgICAgc3NsLk9QX05PX1NTTHYzCisgICAgICAgIHNzbC5PUF9OT19UTFN2MQorICAgICAgICBzc2wuT1BfTk9fVExTdjFfMworICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPj0gKDEsIDAsIDEpOgorICAgICAgICAgICAgc3NsLk9QX05PX1RMU3YxXzEKKyAgICAgICAgICAgIHNzbC5PUF9OT19UTFN2MV8yCiAKICAgICBkZWYgdGVzdF9yYW5kb20oc2VsZik6CiAgICAgICAgIHYgPSBzc2wuUkFORF9zdGF0dXMoKQpAQCAtMTk0LDkgKzIwMSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICgoJ2NvbW1vbk5hbWUnLCAnbG9jYWxob3N0JyksKSkKICAgICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgIyBOb3RlIHRoZSBuZXh0IHRocmVlIGFzc2VydHMgd2lsbCBmYWlsIGlmIHRoZSBrZXlzIGFyZSByZWdlbmVyYXRlZAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBbJ25vdEFmdGVyJ10sIGFzbjF0aW1lKCdPY3QgIDUgMjM6MDE6NTYgMjAyMCBHTVQnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwWydub3RCZWZvcmUnXSwgYXNuMXRpbWUoJ09jdCAgOCAyMzowMTo1NiAyMDEwIEdNVCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBbJ3NlcmlhbE51bWJlciddLCAnRDdDNzM4MTkxOUFGQzI0RScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocFsnbm90QWZ0ZXInXSwgYXNuMXRpbWUoJ0phbiAxNyAxOTowOTowNiAyMDI4IEdNVCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBbJ25vdEJlZm9yZSddLCBhc24xdGltZSgnSmFuIDE5IDE5OjA5OjA2IDIwMTggR01UJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocFsnc2VyaWFsTnVtYmVyJ10sICdGOUJBMDc2RDVCNkFCRDlCJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwWydzdWJqZWN0J10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCgoJ2NvdW50cnlOYW1lJywgJ1hZJyksKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCgnbG9jYWxpdHlOYW1lJywgJ0Nhc3RsZSBBbnRocmF4JyksKSwKQEAgLTc3Nyw3ICs3ODQsOCBAQAogICAgICAgICAgICAgY3R4Lm9wdGlvbnMgPSAoY3R4Lm9wdGlvbnMgJiB+c3NsLk9QX05PX1RMU3YxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWZhdWx0LCBjdHgub3B0aW9ucykKICAgICAgICAgICAgIGN0eC5vcHRpb25zID0gMAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBjdHgub3B0aW9ucykKKyAgICAgICAgICAgICMgVWJ1bnR1IGhhcyBPUF9OT19TU0x2MyBmb3JjZWQgb24gYnkgZGVmYXVsdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBjdHgub3B0aW9ucyAmIH5zc2wuT1BfTk9fU1NMdjMpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgICAgIGN0eC5vcHRpb25zID0gMApAQCAtOTgxLDYgKzk4OSwxMyBAQAogCiAKICAgICBkZWYgdGVzdF9sb2FkX2RoX3BhcmFtcyhzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSB1J2RocMOkcsOkbS5wZW0nCisgICAgICAgIGZzX2VuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbGVuYW1lLmVuY29kZShmc19lbmNvZGluZykKKyAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImZpbGVuYW1lICVyIGNhbm5vdCBiZSBlbmNvZGVkIHRvIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICVyIiAlIChmaWxlbmFtZSwgZnNfZW5jb2RpbmcpKQorCiAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKERIRklMRSkKICAgICAgICAgaWYgb3MubmFtZSAhPSAnbnQnOgpAQCAtOTkyLDYgKzEwMDcsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKENFUlRGSUxFKQorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBkOgorICAgICAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmpvaW4oZCwgZmlsZW5hbWUpCisgICAgICAgICAgICBzaHV0aWwuY29weShESEZJTEUsIGZuYW1lKQorICAgICAgICAgICAgY3R4LmxvYWRfZGhfcGFyYW1zKGZuYW1lKQogCiAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKICAgICBkZWYgdGVzdF9zZXNzaW9uX3N0YXRzKHNlbGYpOgpAQCAtMTU4NywzNCArMTYwNiw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9Il4kOiw7PyonZG9yb3RoeXgiKQogICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQogCi0gICAgZGVmIHRlc3RfYWxnb3JpdGhtcyhzZWxmKToKLSAgICAgICAgIyBJc3N1ZSAjODQ4NDogYWxsIGFsZ29yaXRobXMgc2hvdWxkIGJlIGF2YWlsYWJsZSB3aGVuIHZlcmlmeWluZyBhCi0gICAgICAgICMgY2VydGlmaWNhdGUuCi0gICAgICAgICMgU0hBMjU2IHdhcyBhZGRlZCBpbiBPcGVuU1NMIDAuOS44Ci0gICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA8ICgwLCA5LCA4LCAwLCAxNSk6Ci0gICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJTSEEyNTYgbm90IGF2YWlsYWJsZSBvbiAlciIgJSBzc2wuT1BFTlNTTF9WRVJTSU9OKQotICAgICAgICAjIHNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIG5lZWRzIFNOSSB0byB1c2UgdGhlIGNvcnJlY3QgY2VydGlmaWNhdGUKLSAgICAgICAgaWYgbm90IHNzbC5IQVNfU05JOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU05JIG5lZWRlZCBmb3IgdGhpcyB0ZXN0IikKLSAgICAgICAgIyBodHRwczovL3NoYTIuaGJvZWNrLmRlLyB3YXMgdXNlZCB1bnRpbCAyMDExLTAxLTA4IChubyByb3V0ZSB0byBob3N0KQotICAgICAgICByZW1vdGUgPSAoInNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIiwgNDQzKQotICAgICAgICBzaGEyNTZfY2VydCA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAic2hhMjU2LnBlbSIpCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoInNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIik6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhzaGEyNTZfY2VydCkKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0ic2hhMjU2LnRicy1pbnRlcm5ldC5jb20iKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0gICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbkNpcGhlciB3aXRoICVyIGlzICVyXG4iICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVtb3RlLCBzLmNpcGhlcigpKSkKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiQ2VydGlmaWNhdGUgaXM6XG4lc1xuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHByaW50LnBmb3JtYXQocy5nZXRwZWVyY2VydCgpKSkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0KICAgICBkZWYgdGVzdF9nZXRfY2FfY2VydHNfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIGNhcGF0aCBjZXJ0cyBhcmUgbG9hZGVkIG9uIHJlcXVlc3QKICAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6CkBAIC0xNzk0LDcgKzE3ODUsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2xfdmVyc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNzbF92ZXJzaW9uIGlzIG5vdCBOb25lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBzc2wuUFJPVE9DT0xfVExTKQogICAgICAgICAgICAgICAgIHNlbGYuY29udGV4dC52ZXJpZnlfbW9kZSA9IChjZXJ0cmVxcyBpZiBjZXJ0cmVxcyBpcyBub3QgTm9uZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHNzbC5DRVJUX05PTkUpCiAgICAgICAgICAgICAgICAgaWYgY2FjZXJ0czoKQEAgLTE5NTQsNiArMTk0NSw4IEBACiAgICAgICAgICAgICBzZWxmLmpvaW4oKQogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIiBjbGVhbnVwOiBzdWNjZXNzZnVsbHkgam9pbmVkLlxuIikKKyAgICAgICAgICAgICMgbWFrZSBzdXJlIHRoYXQgQ29ubmVjdGlvbkhhbmRsZXIgaXMgcmVtb3ZlZCBmcm9tIHNvY2tldF9tYXAKKyAgICAgICAgICAgIGFzeW5jb3JlLmNsb3NlX2FsbChpZ25vcmVfYWxsPVRydWUpCiAKICAgICAgICAgZGVmIHN0YXJ0KHNlbGYsIGZsYWc9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLmZsYWcgPSBmbGFnCkBAIC0yMjE4LDEwICsyMjExLDEwIEBACiAgICAgICAgICAgICBjb25uZWN0IHRvIGl0IHdpdGggYSB3cm9uZyBjbGllbnQgY2VydGlmaWNhdGUgZmFpbHMuCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIGNlcnRmaWxlID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykgb3Igb3MuY3VyZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndyb25nY2VydC5wZW0iKQotICAgICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKENFUlRGSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtleWNlcnQucGVtIikKKyAgICAgICAgICAgIHNlcnZlciA9IFRocmVhZGVkRWNob1NlcnZlcihTSUdORURfQ0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydHJlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjZXJ0cz1DRVJURklMRSwgY2hhdHR5PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2VydHM9U0lHTklOR19DQSwgY2hhdHR5PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgICAgICB3aXRoIHNlcnZlciwgXAogICAgICAgICAgICAgICAgICAgICBjbG9zaW5nKHNvY2tldC5zb2NrZXQoKSkgYXMgc29jaywgXApAQCAtMjgwOSw2ICsyODAyLDI0IEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy52ZXJzaW9uKCksICdUTFN2MScpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzLnZlcnNpb24oKSwgTm9uZSkKIAorICAgICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzc2wuSEFTX1RMU3YxXzMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0IHJlcXVpcmVzIFRMU3YxLjMgZW5hYmxlZCBPcGVuU1NMIikKKyAgICAgICAgZGVmIHRlc3RfdGxzMV8zKHNlbGYpOgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFMpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICMgZGlzYWJsZSBhbGwgYnV0IFRMUyAxLjMKKyAgICAgICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSAoCisgICAgICAgICAgICAgICAgc3NsLk9QX05PX1RMU3YxIHwgc3NsLk9QX05PX1RMU3YxXzEgfCBzc2wuT1BfTk9fVExTdjFfMgorICAgICAgICAgICAgKQorICAgICAgICAgICAgd2l0aCBUaHJlYWRlZEVjaG9TZXJ2ZXIoY29udGV4dD1jb250ZXh0KSBhcyBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocy5jaXBoZXIoKVswXSwgWworICAgICAgICAgICAgICAgICAgICAgICAgJ1RMUzEzLUFFUy0yNTYtR0NNLVNIQTM4NCcsCisgICAgICAgICAgICAgICAgICAgICAgICAnVExTMTMtQ0hBQ0hBMjAtUE9MWTEzMDUtU0hBMjU2JywKKyAgICAgICAgICAgICAgICAgICAgICAgICdUTFMxMy1BRVMtMTI4LUdDTS1TSEEyNTYnLAorICAgICAgICAgICAgICAgICAgICBdKQorCiAgICAgICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfRUNESCwgInRlc3QgcmVxdWlyZXMgRUNESC1lbmFibGVkIE9wZW5TU0wiKQogICAgICAgICBkZWYgdGVzdF9kZWZhdWx0X2VjZGhfY3VydmUoc2VsZik6CiAgICAgICAgICAgICAjIElzc3VlICMyMTAxNTogZWxsaXB0aWMgY3VydmUtYmFzZWQgRGlmZmllIEhlbGxtYW4ga2V5IGV4Y2hhbmdlCkBAIC0yOTYzLDggKzI5NzQsOSBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgc3RhdHMgPSBlCiAKLSAgICAgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBOb25lIGFuZCBJU19PUEVOU1NMXzFfMToKLSAgICAgICAgICAgICAgICAgICAgIyBPcGVuU1NMIDEuMS4wIHJhaXNlcyBoYW5kc2hha2UgZXJyb3IKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWQgaXMgTm9uZSBhbmQgSVNfT1BFTlNTTF8xXzEKKyAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMSwgMSwgMCwgNikpOgorICAgICAgICAgICAgICAgICAgICAjIE9wZW5TU0wgMS4xLjAgdG8gMS4xLjBlIHJhaXNlcyBoYW5kc2hha2UgZXJyb3IKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN0YXRzLCBzc2wuU1NMRXJyb3IpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbXNnID0gImZhaWxlZCB0cnlpbmcgJXMgKHMpIGFuZCAlcyAoYykuXG4iIFwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RhcnRmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9zdGFydGZpbGUucHkKaW5kZXggM2MyMmYzZi4uNjEyMTJhZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdGFydGZpbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdGFydGZpbGUucHkKQEAgLTEwLDggKzEwLDggQEAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKIGltcG9ydCBvcworaW1wb3J0IHN5cwogZnJvbSBvcyBpbXBvcnQgcGF0aAotZnJvbSB0aW1lIGltcG9ydCBzbGVlcAogCiBzdGFydGZpbGUgPSB0ZXN0X3N1cHBvcnQuZ2V0X2F0dHJpYnV0ZShvcywgJ3N0YXJ0ZmlsZScpCiAKQEAgLTIzLDIwICsyMywyMyBAQAogICAgIGRlZiB0ZXN0X25vbmV4aXN0aW5nX3Uoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIHN0YXJ0ZmlsZSwgdSJub25leGlzdGluZy52YnMiKQogCisgICAgZGVmIGNoZWNrX2VtcHR5KHNlbGYsIGVtcHR5KToKKyAgICAgICAgIyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgY2hpbGQgcHJvY2VzcyBzdGFydHMgaW4gYSBkaXJlY3RvcnkKKyAgICAgICAgIyB3ZSdyZSBub3QgYWJvdXQgdG8gZGVsZXRlLiBJZiB3ZSdyZSBydW5uaW5nIHVuZGVyIC1qLCB0aGF0CisgICAgICAgICMgbWVhbnMgdGhlIHRlc3QgaGFybmVzcyBwcm92aWRlZCBkaXJlY3RvcnkgaXNuJ3QgYSBzYWZlIG9wdGlvbi4KKyAgICAgICAgIyBTZWUgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTE1NTI2IGZvciBtb3JlIGRldGFpbHMKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuY2hhbmdlX2N3ZChwYXRoLmRpcm5hbWUoc3lzLmV4ZWN1dGFibGUpKToKKyAgICAgICAgICAgIHN0YXJ0ZmlsZShlbXB0eSkKKyAgICAgICAgICAgIHN0YXJ0ZmlsZShlbXB0eSwgIm9wZW4iKQorCiAgICAgZGVmIHRlc3RfZW1wdHkoc2VsZik6CiAgICAgICAgIGVtcHR5ID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShfX2ZpbGVfXyksICJlbXB0eS52YnMiKQotICAgICAgICBzdGFydGZpbGUoZW1wdHkpCi0gICAgICAgIHN0YXJ0ZmlsZShlbXB0eSwgIm9wZW4iKQotICAgICAgICAjIEdpdmUgdGhlIGNoaWxkIHByb2Nlc3Mgc29tZSB0aW1lIHRvIGV4aXQgYmVmb3JlIHdlIGZpbmlzaC4KLSAgICAgICAgIyBPdGhlcndpc2UgdGhlIGNsZWFudXAgY29kZSB3aWxsIG5vdCBiZSBhYmxlIHRvIGRlbGV0ZSB0aGUgY3dkLAotICAgICAgICAjIGJlY2F1c2UgaXQgaXMgc3RpbGwgaW4gdXNlLgotICAgICAgICBzbGVlcCgwLjEpCisgICAgICAgIHNlbGYuY2hlY2tfZW1wdHkoZW1wdHkpCiAKLSAgICBkZWYgdGVzdF9lbXB0eV91KHNlbGYpOgorICAgIGRlZiB0ZXN0X2VtcHR5X3VuaWNvZGUoc2VsZik6CiAgICAgICAgIGVtcHR5ID0gcGF0aC5qb2luKHBhdGguZGlybmFtZShfX2ZpbGVfXyksICJlbXB0eS52YnMiKQotICAgICAgICBzdGFydGZpbGUodW5pY29kZShlbXB0eSwgIm1iY3MiKSkKLSAgICAgICAgc3RhcnRmaWxlKHVuaWNvZGUoZW1wdHksICJtYmNzIiksICJvcGVuIikKLSAgICAgICAgc2xlZXAoMC4xKQorICAgICAgICBlbXB0eSA9IHVuaWNvZGUoZW1wdHksICJtYmNzIikKKyAgICAgICAgc2VsZi5jaGVja19lbXB0eShlbXB0eSkKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdENhc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N0ci5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyLnB5CmluZGV4IDViYjlmNDguLjhiMzA2ZjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RyLnB5CkBAIC00NjUsNiArNDY1LDE1IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdzdHInLCBleGMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0dXBsZScsIGV4YykKIAorICAgIGRlZiB0ZXN0X2lzc3VlMjg1OThfc3Ryc3ViY2xhc3NfcmhzKHNlbGYpOgorICAgICAgICAjIEEgc3ViY2xhc3Mgb2Ygc3RyIHdpdGggYW4gX19ybW9kX18gbWV0aG9kIHNob3VsZCBiZSBhYmxlIHRvIGhvb2sKKyAgICAgICAgIyBpbnRvIHRoZSAlIG9wZXJhdG9yCisgICAgICAgIGNsYXNzIFN1YmNsYXNzZWRTdHIoc3RyKToKKyAgICAgICAgICAgIGRlZiBfX3Jtb2RfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuICdTdWNjZXNzLCBzZWxmLl9fcm1vZF9fKHshcn0pIHdhcyBjYWxsZWQnLmZvcm1hdChvdGhlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnbGhzICUlICVyJyAlIFN1YmNsYXNzZWRTdHIoJ3JocycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJTdWNjZXNzLCBzZWxmLl9fcm1vZF9fKCdsaHMgJSUgJXInKSB3YXMgY2FsbGVkIikKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3RyVGVzdCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkKaW5kZXggYjI2ZWJlYy4uMzI1MDI0YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmZ0aW1lLnB5CkBAIC02MCw4ICs2MCwxMCBAQAogICAgICAgICAgICAgaW1wb3J0IGphdmEKICAgICAgICAgICAgIGphdmEudXRpbC5Mb2NhbGUuc2V0RGVmYXVsdChqYXZhLnV0aWwuTG9jYWxlLlVTKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICBpbXBvcnQgbG9jYWxlCi0gICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19USU1FLCAnQycpCisgICAgICAgICAgICBmcm9tIGxvY2FsZSBpbXBvcnQgc2V0bG9jYWxlLCBMQ19USU1FCisgICAgICAgICAgICBzYXZlZF9sb2NhbGUgPSBzZXRsb2NhbGUoTENfVElNRSkKKyAgICAgICAgICAgIHNldGxvY2FsZShMQ19USU1FLCAnQycpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAoc2V0bG9jYWxlLCBMQ19USU1FLCBzYXZlZF9sb2NhbGUpCiAKICAgICBkZWYgdGVzdF9zdHJmdGltZShzZWxmKToKICAgICAgICAgbm93ID0gdGltZS50aW1lKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3Ryb3AucHkgYi9MaWIvdGVzdC90ZXN0X3N0cm9wLnB5CmluZGV4IDgxZDA3OGUuLjUwYjhmNmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3Ryb3AucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJvcC5weQpAQCAtMiwxMSArMiwxMiBAQAogd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoImlnbm9yZSIsICJzdHJvcCBmdW5jdGlvbnMgYXJlIG9ic29sZXRlOyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICByJ3Rlc3QudGVzdF9zdHJvcHx1bml0dGVzdCcpCi1pbXBvcnQgc3Ryb3AKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHN5cwogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKIAorc3Ryb3AgPSB0ZXN0X3N1cHBvcnQuaW1wb3J0X21vZHVsZSgic3Ryb3AiKQorCiAKIGNsYXNzIFN0cm9wRnVuY3Rpb25UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQppbmRleCAxNjBjY2ZlLi4wYzIxNWY3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CkBAIC0yLDYgKzIsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCitpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzaWduYWwKIGltcG9ydCBvcwogaW1wb3J0IGVycm5vCkBAIC05LDYgKzEwLDE0IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHJlCiBpbXBvcnQgc3lzY29uZmlnCitpbXBvcnQgdGV4dHdyYXAKKwordHJ5OgorICAgIGltcG9ydCBjdHlwZXMKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBjdHlwZXMgPSBOb25lCitlbHNlOgorICAgIGltcG9ydCBjdHlwZXMudXRpbAogCiB0cnk6CiAgICAgaW1wb3J0IHJlc291cmNlCkBAIC0xOSw2ICsyOCwxMSBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKIAordHJ5OgorICAgIGltcG9ydCBfdGVzdGNhcGkKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBfdGVzdGNhcGkgPSBOb25lCisKIG1zd2luZG93cyA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKIAogIwpAQCAtNDMsNiArNTcsOCBAQAogICAgICAgICAgICAgaW5zdC53YWl0KCkKICAgICAgICAgc3VicHJvY2Vzcy5fY2xlYW51cCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3VicHJvY2Vzcy5fYWN0aXZlLCAic3VicHJvY2Vzcy5fYWN0aXZlIG5vdCBlbXB0eSIpCisgICAgICAgIHNlbGYuZG9DbGVhbnVwcygpCisgICAgICAgIHRlc3Rfc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIAogICAgIGRlZiBhc3NlcnRTdGRlcnJFcXVhbChzZWxmLCBzdGRlcnIsIGV4cGVjdGVkLCBtc2c9Tm9uZSk6CiAgICAgICAgICMgSW4gYSBkZWJ1ZyBidWlsZCwgc3R1ZmYgbGlrZSAiWzY1ODAgcmVmc10iIGlzIHByaW50ZWQgdG8gc3RkZXJyIGF0CkBAIC0zNzksNiArMzk1LDQ2IEBACiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksICJvcmFuZ2UiKQogCisgICAgZGVmIHRlc3RfaW52YWxpZF9jbWQoc2VsZik6CisgICAgICAgICMgbnVsbCBjaGFyYWN0ZXIgaW4gdGhlIGNvbW1hbmQgbmFtZQorICAgICAgICBjbWQgPSBzeXMuZXhlY3V0YWJsZSArICdcMCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc3VicHJvY2Vzcy5Qb3BlbihbY21kLCAiLWMiLCAicGFzcyJdKQorCisgICAgICAgICMgbnVsbCBjaGFyYWN0ZXIgaW4gdGhlIGNvbW1hbmQgYXJndW1lbnQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsICJwYXNzI1wwIl0pCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2VudihzZWxmKToKKyAgICAgICAgIyBudWxsIGNoYXJhY3RlciBpbiB0aGUgZW52aXJvbWVudCB2YXJpYWJsZSBuYW1lCisgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIG5ld2VudlsiRlJVSVRcMFZFR0VUQUJMRSJdID0gImNhYmJhZ2UiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAicGFzcyJdLCBlbnY9bmV3ZW52KQorCisgICAgICAgICMgbnVsbCBjaGFyYWN0ZXIgaW4gdGhlIGVudmlyb21lbnQgdmFyaWFibGUgdmFsdWUKKyAgICAgICAgbmV3ZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgbmV3ZW52WyJGUlVJVCJdID0gIm9yYW5nZVwwVkVHRVRBQkxFPWNhYmJhZ2UiCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAicGFzcyJdLCBlbnY9bmV3ZW52KQorCisgICAgICAgICMgZXF1YWwgY2hhcmFjdGVyIGluIHRoZSBlbnZpcm9tZW50IHZhcmlhYmxlIG5hbWUKKyAgICAgICAgbmV3ZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgbmV3ZW52WyJGUlVJVD1PUkFOR0UiXSA9ICJsZW1vbiIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAicGFzcyJdLCBlbnY9bmV3ZW52KQorCisgICAgICAgICMgZXF1YWwgY2hhcmFjdGVyIGluIHRoZSBlbnZpcm9tZW50IHZhcmlhYmxlIHZhbHVlCisgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIG5ld2VudlsiRlJVSVQiXSA9ICJvcmFuZ2U9bGVtb24iCisgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBvcnQgc3lzLCBvczsnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZG91dC53cml0ZShvcy5nZXRlbnYoIkZSVUlUIikpJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCisgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LCAib3JhbmdlPWxlbW9uIikKKwogICAgIGRlZiB0ZXN0X2NvbW11bmljYXRlX3N0ZGluKHNlbGYpOgogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICItYyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5czsnCkBAIC02NDEsNyArNjk3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICAgICAgIyBpZ25vcmUgZXJyb3JzIHRoYXQgaW5kaWNhdGUgdGhlIGNvbW1hbmQgd2FzIG5vdCBmb3VuZAotICAgICAgICAgICAgaWYgYy5leGNlcHRpb24uZXJybm8gbm90IGluIChlcnJuby5FTk9FTlQsIGVycm5vLkVBQ0NFUyk6CisgICAgICAgICAgICBpZiBjLmV4Y2VwdGlvbi5lcnJubyBub3QgaW4gKGVycm5vLkVOT0VOVCwgZXJybm8uRU5PVERJUiwgZXJybm8uRUFDQ0VTKToKICAgICAgICAgICAgICAgICByYWlzZSBjLmV4Y2VwdGlvbgogCiAgICAgQHVuaXR0ZXN0LnNraXBJZih0aHJlYWRpbmcgaXMgTm9uZSwgInRocmVhZGluZyByZXF1aXJlZCIpCkBAIC03ODcsOCArODQzLDExIEBACiAgICAgICAgICAgICBrdyA9IHtzdHJlYW06IHN1YnByb2Nlc3MuUElQRX0KICAgICAgICAgICAgIHdpdGggc3VicHJvY2Vzcy5Qb3BlbihhcmdzLCAqKmt3KSBhcyBwcm9jZXNzOgogICAgICAgICAgICAgICAgIHNpZ25hbC5hbGFybSgxKQotICAgICAgICAgICAgICAgICMgY29tbXVuaWNhdGUoKSB3aWxsIGJlIGludGVycnVwdGVkIGJ5IFNJR0FMUk0KLSAgICAgICAgICAgICAgICBwcm9jZXNzLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgY29tbXVuaWNhdGUoKSB3aWxsIGJlIGludGVycnVwdGVkIGJ5IFNJR0FMUk0KKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDApCiAKIAogQHVuaXR0ZXN0LnNraXBJZihtc3dpbmRvd3MsICJQT1NJWCBzcGVjaWZpYyB0ZXN0cyIpCkBAIC0xMjE2LDYgKzEyNzUsMjkgQEAKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLnJldHVybmNvZGUsIDAsICJVbmV4cGVjdGVkIGVycm9yOiAiICsgcmVwcihzdGRlcnIpKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3Rlc3RjYXBpIGlzIG5vdCBOb25lCisgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhc2F0dHIoX3Rlc3RjYXBpLCAnV19TVE9QQ09ERScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIF90ZXN0Y2FwaS5XX1NUT1BDT0RFJykKKyAgICBkZWYgdGVzdF9zdG9wcGVkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHdhaXQoKSBiZWhhdmlvciB3aGVuIHdhaXRwaWQgcmV0dXJucyBXSUZTVE9QUEVEOyBpc3N1ZTI5MzM1LiIiIgorICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCAncGFzcyddCisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MpCisKKyAgICAgICAgIyBXYWl0IHVudGlsIHRoZSByZWFsIHByb2Nlc3MgY29tcGxldGVzIHRvIGF2b2lkIHpvbWJpZSBwcm9jZXNzCisgICAgICAgIHBpZCA9IHByb2MucGlkCisgICAgICAgIHBpZCwgc3RhdHVzID0gb3Mud2FpdHBpZChwaWQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQorCisgICAgICAgIHN0YXR1cyA9IF90ZXN0Y2FwaS5XX1NUT1BDT0RFKDMpCisKKyAgICAgICAgZGVmIG1vY2tfd2FpdHBpZChwaWQsIGZsYWdzKToKKyAgICAgICAgICAgIHJldHVybiAocGlkLCBzdGF0dXMpCisKKyAgICAgICAgd2l0aCB0ZXN0X3N1cHBvcnQuc3dhcF9hdHRyKG9zLCAnd2FpdHBpZCcsIG1vY2tfd2FpdHBpZCk6CisgICAgICAgICAgICByZXR1cm5jb2RlID0gcHJvYy53YWl0KCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldHVybmNvZGUsIC0zKQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKG1zd2luZG93cywgIldpbmRvd3Mgc3BlY2lmaWMgdGVzdHMiKQogY2xhc3MgV2luMzJQcm9jZXNzVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQppbmRleCA4NzFmNDI3Li4zYzg5NGFmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CkBAIC0xLDE3MTIgKzEsMyBAQAotIiIiU3VwcG9ydGluZyBkZWZpbml0aW9ucyBmb3IgdGhlIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzLiIiIgotCi1pZiBfX25hbWVfXyAhPSAndGVzdC50ZXN0X3N1cHBvcnQnOgotICAgIHJhaXNlIEltcG9ydEVycm9yKCd0ZXN0X3N1cHBvcnQgbXVzdCBiZSBpbXBvcnRlZCBmcm9tIHRoZSB0ZXN0IHBhY2thZ2UnKQotCi1pbXBvcnQgY29udGV4dGxpYgotaW1wb3J0IGVycm5vCi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgZ2MKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdGF0CiBpbXBvcnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IHNodXRpbAotaW1wb3J0IHdhcm5pbmdzCi1pbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBVc2VyRGljdAotaW1wb3J0IHJlCi1pbXBvcnQgdGltZQotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHN5c2NvbmZpZwotdHJ5OgotICAgIGltcG9ydCB0aHJlYWQKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB0aHJlYWQgPSBOb25lCi0KLV9fYWxsX18gPSBbIkVycm9yIiwgIlRlc3RGYWlsZWQiLCAiUmVzb3VyY2VEZW5pZWQiLCAiaW1wb3J0X21vZHVsZSIsCi0gICAgICAgICAgICJ2ZXJib3NlIiwgInVzZV9yZXNvdXJjZXMiLCAibWF4X21lbXVzZSIsICJyZWNvcmRfb3JpZ2luYWxfc3Rkb3V0IiwKLSAgICAgICAgICAgImdldF9vcmlnaW5hbF9zdGRvdXQiLCAidW5sb2FkIiwgInVubGluayIsICJybXRyZWUiLCAiZm9yZ2V0IiwKLSAgICAgICAgICAgImlzX3Jlc291cmNlX2VuYWJsZWQiLCAicmVxdWlyZXMiLCAicmVxdWlyZXNfbWFjX3ZlciIsCi0gICAgICAgICAgICJmaW5kX3VudXNlZF9wb3J0IiwgImJpbmRfcG9ydCIsCi0gICAgICAgICAgICJmY21wIiwgImhhdmVfdW5pY29kZSIsICJpc19qeXRob24iLCAiVEVTVEZOIiwgIkhPU1QiLCAiRlVaWiIsCi0gICAgICAgICAgICJTQVZFRENXRCIsICJ0ZW1wX2N3ZCIsICJmaW5kZmlsZSIsICJzb3J0ZGljdCIsICJjaGVja19zeW50YXhfZXJyb3IiLAotICAgICAgICAgICAib3Blbl91cmxyZXNvdXJjZSIsICJjaGVja193YXJuaW5ncyIsICJjaGVja19weTNrX3dhcm5pbmdzIiwKLSAgICAgICAgICAgIkNsZWFuSW1wb3J0IiwgIkVudmlyb25tZW50VmFyR3VhcmQiLCAiY2FwdHVyZWRfb3V0cHV0IiwKLSAgICAgICAgICAgImNhcHR1cmVkX3N0ZG91dCIsICJUcmFuc2llbnRSZXNvdXJjZSIsICJ0cmFuc2llbnRfaW50ZXJuZXQiLAotICAgICAgICAgICAicnVuX3dpdGhfbG9jYWxlIiwgInNldF9tZW1saW1pdCIsICJiaWdtZW10ZXN0IiwgImJpZ2FkZHJzcGFjZXRlc3QiLAotICAgICAgICAgICAiQmFzaWNUZXN0UnVubmVyIiwgInJ1bl91bml0dGVzdCIsICJydW5fZG9jdGVzdCIsICJ0aHJlYWRpbmdfc2V0dXAiLAotICAgICAgICAgICAidGhyZWFkaW5nX2NsZWFudXAiLCAicmVhcF90aHJlYWRzIiwgInN0YXJ0X3RocmVhZHMiLCAiY3B5dGhvbl9vbmx5IiwKLSAgICAgICAgICAgImNoZWNrX2ltcGxfZGV0YWlsIiwgImdldF9hdHRyaWJ1dGUiLCAicHkza19ieXRlcyIsCi0gICAgICAgICAgICJpbXBvcnRfZnJlc2hfbW9kdWxlIiwgInRocmVhZGluZ19jbGVhbnVwIiwgInJlYXBfY2hpbGRyZW4iLAotICAgICAgICAgICAic3RyaXBfcHl0aG9uX3N0ZGVyciIsICJJUFY2X0VOQUJMRUQiLCAicnVuX3dpdGhfdHoiXQotCi1jbGFzcyBFcnJvcihFeGNlcHRpb24pOgotICAgICIiIkJhc2UgY2xhc3MgZm9yIHJlZ3Jlc3Npb24gdGVzdCBleGNlcHRpb25zLiIiIgotCi1jbGFzcyBUZXN0RmFpbGVkKEVycm9yKToKLSAgICAiIiJUZXN0IGZhaWxlZC4iIiIKLQotY2xhc3MgUmVzb3VyY2VEZW5pZWQodW5pdHRlc3QuU2tpcFRlc3QpOgotICAgICIiIlRlc3Qgc2tpcHBlZCBiZWNhdXNlIGl0IHJlcXVlc3RlZCBhIGRpc2FsbG93ZWQgcmVzb3VyY2UuCi0KLSAgICBUaGlzIGlzIHJhaXNlZCB3aGVuIGEgdGVzdCBjYWxscyByZXF1aXJlcygpIGZvciBhIHJlc291cmNlIHRoYXQKLSAgICBoYXMgbm90IGJlZW4gZW5hYmxlZC4gIEl0IGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBleHBlY3RlZAotICAgIGFuZCB1bmV4cGVjdGVkIHNraXBzLgotICAgICIiIgotCi1AY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgotZGVmIF9pZ25vcmVfZGVwcmVjYXRlZF9pbXBvcnRzKGlnbm9yZT1UcnVlKToKLSAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gc3VwcHJlc3MgcGFja2FnZSBhbmQgbW9kdWxlIGRlcHJlY2F0aW9uCi0gICAgd2FybmluZ3Mgd2hlbiBpbXBvcnRpbmcgdGhlbS4KLQotICAgIElmIGlnbm9yZSBpcyBGYWxzZSwgdGhpcyBjb250ZXh0IG1hbmFnZXIgaGFzIG5vIGVmZmVjdC4iIiIKLSAgICBpZiBpZ25vcmU6Ci0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCJpZ25vcmUiLCAiLisgKG1vZHVsZXxwYWNrYWdlKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICB5aWVsZAotICAgIGVsc2U6Ci0gICAgICAgIHlpZWxkCi0KLQotZGVmIGltcG9ydF9tb2R1bGUobmFtZSwgZGVwcmVjYXRlZD1GYWxzZSk6Ci0gICAgIiIiSW1wb3J0IGFuZCByZXR1cm4gdGhlIG1vZHVsZSB0byBiZSB0ZXN0ZWQsIHJhaXNpbmcgU2tpcFRlc3QgaWYKLSAgICBpdCBpcyBub3QgYXZhaWxhYmxlLgotCi0gICAgSWYgZGVwcmVjYXRlZCBpcyBUcnVlLCBhbnkgbW9kdWxlIG9yIHBhY2thZ2UgZGVwcmVjYXRpb24gbWVzc2FnZXMKLSAgICB3aWxsIGJlIHN1cHByZXNzZWQuIiIiCi0gICAgd2l0aCBfaWdub3JlX2RlcHJlY2F0ZWRfaW1wb3J0cyhkZXByZWNhdGVkKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciwgbXNnOgotICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3Qoc3RyKG1zZykpCi0KLQotZGVmIF9zYXZlX2FuZF9yZW1vdmVfbW9kdWxlKG5hbWUsIG9yaWdfbW9kdWxlcyk6Ci0gICAgIiIiSGVscGVyIGZ1bmN0aW9uIHRvIHNhdmUgYW5kIHJlbW92ZSBhIG1vZHVsZSBmcm9tIHN5cy5tb2R1bGVzCi0KLSAgICAgICBSYWlzZSBJbXBvcnRFcnJvciBpZiB0aGUgbW9kdWxlIGNhbid0IGJlIGltcG9ydGVkLiIiIgotICAgICMgdHJ5IHRvIGltcG9ydCB0aGUgbW9kdWxlIGFuZCByYWlzZSBhbiBlcnJvciBpZiBpdCBjYW4ndCBiZSBpbXBvcnRlZAotICAgIGlmIG5hbWUgbm90IGluIHN5cy5tb2R1bGVzOgotICAgICAgICBfX2ltcG9ydF9fKG5hbWUpCi0gICAgICAgIGRlbCBzeXMubW9kdWxlc1tuYW1lXQotICAgIGZvciBtb2RuYW1lIGluIGxpc3Qoc3lzLm1vZHVsZXMpOgotICAgICAgICBpZiBtb2RuYW1lID09IG5hbWUgb3IgbW9kbmFtZS5zdGFydHN3aXRoKG5hbWUgKyAnLicpOgotICAgICAgICAgICAgb3JpZ19tb2R1bGVzW21vZG5hbWVdID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KLSAgICAgICAgICAgIGRlbCBzeXMubW9kdWxlc1ttb2RuYW1lXQotCi1kZWYgX3NhdmVfYW5kX2Jsb2NrX21vZHVsZShuYW1lLCBvcmlnX21vZHVsZXMpOgotICAgICIiIkhlbHBlciBmdW5jdGlvbiB0byBzYXZlIGFuZCBibG9jayBhIG1vZHVsZSBpbiBzeXMubW9kdWxlcwotCi0gICAgICAgUmV0dXJuIFRydWUgaWYgdGhlIG1vZHVsZSB3YXMgaW4gc3lzLm1vZHVsZXMsIEZhbHNlIG90aGVyd2lzZS4iIiIKLSAgICBzYXZlZCA9IFRydWUKLSAgICB0cnk6Ci0gICAgICAgIG9yaWdfbW9kdWxlc1tuYW1lXSA9IHN5cy5tb2R1bGVzW25hbWVdCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBzYXZlZCA9IEZhbHNlCi0gICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBOb25lCi0gICAgcmV0dXJuIHNhdmVkCi0KLQotZGVmIGltcG9ydF9mcmVzaF9tb2R1bGUobmFtZSwgZnJlc2g9KCksIGJsb2NrZWQ9KCksIGRlcHJlY2F0ZWQ9RmFsc2UpOgotICAgICIiIkltcG9ydHMgYW5kIHJldHVybnMgYSBtb2R1bGUsIGRlbGliZXJhdGVseSBieXBhc3NpbmcgdGhlIHN5cy5tb2R1bGVzIGNhY2hlCi0gICAgYW5kIGltcG9ydGluZyBhIGZyZXNoIGNvcHkgb2YgdGhlIG1vZHVsZS4gT25jZSB0aGUgaW1wb3J0IGlzIGNvbXBsZXRlLAotICAgIHRoZSBzeXMubW9kdWxlcyBjYWNoZSBpcyByZXN0b3JlZCB0byBpdHMgb3JpZ2luYWwgc3RhdGUuCi0KLSAgICBNb2R1bGVzIG5hbWVkIGluIGZyZXNoIGFyZSBhbHNvIGltcG9ydGVkIGFuZXcgaWYgbmVlZGVkIGJ5IHRoZSBpbXBvcnQuCi0gICAgSWYgb25lIG9mIHRoZXNlIG1vZHVsZXMgY2FuJ3QgYmUgaW1wb3J0ZWQsIE5vbmUgaXMgcmV0dXJuZWQuCi0KLSAgICBJbXBvcnRpbmcgb2YgbW9kdWxlcyBuYW1lZCBpbiBibG9ja2VkIGlzIHByZXZlbnRlZCB3aGlsZSB0aGUgZnJlc2ggaW1wb3J0Ci0gICAgdGFrZXMgcGxhY2UuCi0KLSAgICBJZiBkZXByZWNhdGVkIGlzIFRydWUsIGFueSBtb2R1bGUgb3IgcGFja2FnZSBkZXByZWNhdGlvbiBtZXNzYWdlcwotICAgIHdpbGwgYmUgc3VwcHJlc3NlZC4iIiIKLSAgICAjIE5PVEU6IHRlc3RfaGVhcHEsIHRlc3RfanNvbiwgYW5kIHRlc3Rfd2FybmluZ3MgaW5jbHVkZSBleHRyYSBzYW5pdHkKLSAgICAjIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhhdCB0aGlzIHV0aWxpdHkgZnVuY3Rpb24gaXMgd29ya2luZyBhcyBleHBlY3RlZAotICAgIHdpdGggX2lnbm9yZV9kZXByZWNhdGVkX2ltcG9ydHMoZGVwcmVjYXRlZCk6Ci0gICAgICAgICMgS2VlcCB0cmFjayBvZiBtb2R1bGVzIHNhdmVkIGZvciBsYXRlciByZXN0b3JhdGlvbiBhcyB3ZWxsCi0gICAgICAgICMgYXMgdGhvc2Ugd2hpY2gganVzdCBuZWVkIGEgYmxvY2tpbmcgZW50cnkgcmVtb3ZlZAotICAgICAgICBvcmlnX21vZHVsZXMgPSB7fQotICAgICAgICBuYW1lc190b19yZW1vdmUgPSBbXQotICAgICAgICBfc2F2ZV9hbmRfcmVtb3ZlX21vZHVsZShuYW1lLCBvcmlnX21vZHVsZXMpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBmcmVzaF9uYW1lIGluIGZyZXNoOgotICAgICAgICAgICAgICAgIF9zYXZlX2FuZF9yZW1vdmVfbW9kdWxlKGZyZXNoX25hbWUsIG9yaWdfbW9kdWxlcykKLSAgICAgICAgICAgIGZvciBibG9ja2VkX25hbWUgaW4gYmxvY2tlZDoKLSAgICAgICAgICAgICAgICBpZiBub3QgX3NhdmVfYW5kX2Jsb2NrX21vZHVsZShibG9ja2VkX25hbWUsIG9yaWdfbW9kdWxlcyk6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWVzX3RvX3JlbW92ZS5hcHBlbmQoYmxvY2tlZF9uYW1lKQotICAgICAgICAgICAgZnJlc2hfbW9kdWxlID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUobmFtZSkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgZnJlc2hfbW9kdWxlID0gTm9uZQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZm9yIG9yaWdfbmFtZSwgbW9kdWxlIGluIG9yaWdfbW9kdWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHN5cy5tb2R1bGVzW29yaWdfbmFtZV0gPSBtb2R1bGUKLSAgICAgICAgICAgIGZvciBuYW1lX3RvX3JlbW92ZSBpbiBuYW1lc190b19yZW1vdmU6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVfdG9fcmVtb3ZlXQotICAgICAgICByZXR1cm4gZnJlc2hfbW9kdWxlCi0KLQotZGVmIGdldF9hdHRyaWJ1dGUob2JqLCBuYW1lKToKLSAgICAiIiJHZXQgYW4gYXR0cmlidXRlLCByYWlzaW5nIFNraXBUZXN0IGlmIEF0dHJpYnV0ZUVycm9yIGlzIHJhaXNlZC4iIiIKLSAgICB0cnk6Ci0gICAgICAgIGF0dHJpYnV0ZSA9IGdldGF0dHIob2JqLCBuYW1lKQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIm1vZHVsZSAlcyBoYXMgbm8gYXR0cmlidXRlICVzIiAlICgKLSAgICAgICAgICAgIG9iai5fX25hbWVfXywgbmFtZSkpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZQotCi0KLXZlcmJvc2UgPSAxICAgICAgICAgICAgICAjIEZsYWcgc2V0IHRvIDAgYnkgcmVncnRlc3QucHkKLXVzZV9yZXNvdXJjZXMgPSBOb25lICAgICAjIEZsYWcgc2V0IHRvIFtdIGJ5IHJlZ3J0ZXN0LnB5Ci1tYXhfbWVtdXNlID0gMCAgICAgICAgICAgIyBEaXNhYmxlIGJpZ21lbSB0ZXN0cyAodGhleSB3aWxsIHN0aWxsIGJlIHJ1biB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgIyBzbWFsbCBzaXplcywgdG8gbWFrZSBzdXJlIHRoZXkgd29yay4pCi1yZWFsX21heF9tZW11c2UgPSAwCi0KLSMgX29yaWdpbmFsX3N0ZG91dCBpcyBtZWFudCB0byBob2xkIHN0ZG91dCBhdCB0aGUgdGltZSByZWdydGVzdCBiZWdhbi4KLSMgVGhpcyBtYXkgYmUgInRoZSByZWFsIiBzdGRvdXQsIG9yIElETEUncyBlbXVsYXRpb24gb2Ygc3Rkb3V0LCBvciB3aGF0ZXZlci4KLSMgVGhlIHBvaW50IGlzIHRvIGhhdmUgc29tZSBmbGF2b3Igb2Ygc3Rkb3V0IHRoZSB1c2VyIGNhbiBhY3R1YWxseSBzZWUuCi1fb3JpZ2luYWxfc3Rkb3V0ID0gTm9uZQotZGVmIHJlY29yZF9vcmlnaW5hbF9zdGRvdXQoc3Rkb3V0KToKLSAgICBnbG9iYWwgX29yaWdpbmFsX3N0ZG91dAotICAgIF9vcmlnaW5hbF9zdGRvdXQgPSBzdGRvdXQKLQotZGVmIGdldF9vcmlnaW5hbF9zdGRvdXQoKToKLSAgICByZXR1cm4gX29yaWdpbmFsX3N0ZG91dCBvciBzeXMuc3Rkb3V0Ci0KLWRlZiB1bmxvYWQobmFtZSk6Ci0gICAgdHJ5OgotICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbmFtZV0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MKLQotZGVmIF9mb3JjZV9ydW4ocGF0aCwgZnVuYywgKmFyZ3MpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGZ1bmMoKmFyZ3MpCi0gICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3IgYXMgZXJyOgotICAgICAgICBpZiB2ZXJib3NlID49IDI6Ci0gICAgICAgICAgICBwcmludCgnJXM6ICVzJyAlIChlcnIuX19jbGFzc19fLl9fbmFtZV9fLCBlcnIpKQotICAgICAgICAgICAgcHJpbnQoJ3JlLXJ1biAlcyVyJyAlIChmdW5jLl9fbmFtZV9fLCBhcmdzKSkKLSAgICAgICAgb3MuY2htb2QocGF0aCwgc3RhdC5TX0lSV1hVKQotICAgICAgICByZXR1cm4gZnVuYygqYXJncykKLQotaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoIndpbiIpOgotICAgIGRlZiBfd2FpdGZvcihmdW5jLCBwYXRobmFtZSwgd2FpdGFsbD1GYWxzZSk6Ci0gICAgICAgICMgUGVyZm9ybSB0aGUgb3BlcmF0aW9uCi0gICAgICAgIGZ1bmMocGF0aG5hbWUpCi0gICAgICAgICMgTm93IHNldHVwIHRoZSB3YWl0IGxvb3AKLSAgICAgICAgaWYgd2FpdGFsbDoKLSAgICAgICAgICAgIGRpcm5hbWUgPSBwYXRobmFtZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGlybmFtZSwgbmFtZSA9IG9zLnBhdGguc3BsaXQocGF0aG5hbWUpCi0gICAgICAgICAgICBkaXJuYW1lID0gZGlybmFtZSBvciAnLicKLSAgICAgICAgIyBDaGVjayBmb3IgYHBhdGhuYW1lYCB0byBiZSByZW1vdmVkIGZyb20gdGhlIGZpbGVzeXN0ZW0uCi0gICAgICAgICMgVGhlIGV4cG9uZW50aWFsIGJhY2tvZmYgb2YgdGhlIHRpbWVvdXQgYW1vdW50cyB0byBhIHRvdGFsCi0gICAgICAgICMgb2YgfjEgc2Vjb25kIGFmdGVyIHdoaWNoIHRoZSBkZWxldGlvbiBpcyBwcm9iYWJseSBhbiBlcnJvcgotICAgICAgICAjIGFueXdheS4KLSAgICAgICAgIyBUZXN0aW5nIG9uIGFuIGk3QDQuM0dIeiBzaG93cyB0aGF0IHVzdWFsbHkgb25seSAxIGl0ZXJhdGlvbiBpcwotICAgICAgICAjIHJlcXVpcmVkIHdoZW4gY29udGVudGlvbiBvY2N1cnMuCi0gICAgICAgIHRpbWVvdXQgPSAwLjAwMQotICAgICAgICB3aGlsZSB0aW1lb3V0IDwgMS4wOgotICAgICAgICAgICAgIyBOb3RlIHdlIGFyZSBvbmx5IHRlc3RpbmcgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGZpbGUocykgaW4KLSAgICAgICAgICAgICMgdGhlIGNvbnRlbnRzIG9mIHRoZSBkaXJlY3RvcnkgcmVnYXJkbGVzcyBvZiBhbnkgc2VjdXJpdHkgb3IKLSAgICAgICAgICAgICMgYWNjZXNzIHJpZ2h0cy4gIElmIHdlIGhhdmUgbWFkZSBpdCB0aGlzIGZhciwgd2UgaGF2ZSBzdWZmaWNpZW50Ci0gICAgICAgICAgICAjIHBlcm1pc3Npb25zIHRvIGRvIHRoYXQgbXVjaCB1c2luZyBQeXRob24ncyBlcXVpdmFsZW50IG9mIHRoZQotICAgICAgICAgICAgIyBXaW5kb3dzIEFQSSBGaW5kRmlyc3RGaWxlLgotICAgICAgICAgICAgIyBPdGhlciBXaW5kb3dzIEFQSXMgY2FuIGZhaWwgb3IgZ2l2ZSBpbmNvcnJlY3QgcmVzdWx0cyB3aGVuCi0gICAgICAgICAgICAjIGRlYWxpbmcgd2l0aCBmaWxlcyB0aGF0IGFyZSBwZW5kaW5nIGRlbGV0aW9uLgotICAgICAgICAgICAgTCA9IG9zLmxpc3RkaXIoZGlybmFtZSkKLSAgICAgICAgICAgIGlmIG5vdCAoTCBpZiB3YWl0YWxsIGVsc2UgbmFtZSBpbiBMKToKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgICMgSW5jcmVhc2UgdGhlIHRpbWVvdXQgYW5kIHRyeSBhZ2FpbgotICAgICAgICAgICAgdGltZS5zbGVlcCh0aW1lb3V0KQotICAgICAgICAgICAgdGltZW91dCAqPSAyCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3Rlc3RzIG1heSBmYWlsLCBkZWxldGUgc3RpbGwgcGVuZGluZyBmb3IgJyArIHBhdGhuYW1lLAotICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nLCBzdGFja2xldmVsPTQpCi0KLSAgICBkZWYgX3VubGluayhmaWxlbmFtZSk6Ci0gICAgICAgIF93YWl0Zm9yKG9zLnVubGluaywgZmlsZW5hbWUpCi0KLSAgICBkZWYgX3JtZGlyKGRpcm5hbWUpOgotICAgICAgICBfd2FpdGZvcihvcy5ybWRpciwgZGlybmFtZSkKLQotICAgIGRlZiBfcm10cmVlKHBhdGgpOgotICAgICAgICBkZWYgX3JtdHJlZV9pbm5lcihwYXRoKToKLSAgICAgICAgICAgIGZvciBuYW1lIGluIF9mb3JjZV9ydW4ocGF0aCwgb3MubGlzdGRpciwgcGF0aCk6Ci0gICAgICAgICAgICAgICAgZnVsbG5hbWUgPSBvcy5wYXRoLmpvaW4ocGF0aCwgbmFtZSkKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKGZ1bGxuYW1lKToKLSAgICAgICAgICAgICAgICAgICAgX3dhaXRmb3IoX3JtdHJlZV9pbm5lciwgZnVsbG5hbWUsIHdhaXRhbGw9VHJ1ZSkKLSAgICAgICAgICAgICAgICAgICAgX2ZvcmNlX3J1bihmdWxsbmFtZSwgb3Mucm1kaXIsIGZ1bGxuYW1lKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIF9mb3JjZV9ydW4oZnVsbG5hbWUsIG9zLnVubGluaywgZnVsbG5hbWUpCi0gICAgICAgIF93YWl0Zm9yKF9ybXRyZWVfaW5uZXIsIHBhdGgsIHdhaXRhbGw9VHJ1ZSkKLSAgICAgICAgX3dhaXRmb3IobGFtYmRhIHA6IF9mb3JjZV9ydW4ocCwgb3Mucm1kaXIsIHApLCBwYXRoKQotZWxzZToKLSAgICBfdW5saW5rID0gb3MudW5saW5rCi0gICAgX3JtZGlyID0gb3Mucm1kaXIKLQotICAgIGRlZiBfcm10cmVlKHBhdGgpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgZGVmIF9ybXRyZWVfaW5uZXIocGF0aCk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBfZm9yY2VfcnVuKHBhdGgsIG9zLmxpc3RkaXIsIHBhdGgpOgotICAgICAgICAgICAgICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHBhdGgsIG5hbWUpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBtb2RlID0gb3MubHN0YXQoZnVsbG5hbWUpLnN0X21vZGUKLSAgICAgICAgICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgbW9kZSA9IDAKLSAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNESVIobW9kZSk6Ci0gICAgICAgICAgICAgICAgICAgIF9ybXRyZWVfaW5uZXIoZnVsbG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIF9mb3JjZV9ydW4ocGF0aCwgb3Mucm1kaXIsIGZ1bGxuYW1lKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIF9mb3JjZV9ydW4ocGF0aCwgb3MudW5saW5rLCBmdWxsbmFtZSkKLSAgICAgICAgX3JtdHJlZV9pbm5lcihwYXRoKQotICAgICAgICBvcy5ybWRpcihwYXRoKQotCi1kZWYgdW5saW5rKGZpbGVuYW1lKToKLSAgICB0cnk6Ci0gICAgICAgIF91bmxpbmsoZmlsZW5hbWUpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHBhc3MKLQotZGVmIHJtZGlyKGRpcm5hbWUpOgotICAgIHRyeToKLSAgICAgICAgX3JtZGlyKGRpcm5hbWUpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6Ci0gICAgICAgICMgVGhlIGRpcmVjdG9yeSBuZWVkIG5vdCBleGlzdC4KLSAgICAgICAgaWYgZXJyb3IuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgcmFpc2UKLQotZGVmIHJtdHJlZShwYXRoKToKLSAgICB0cnk6Ci0gICAgICAgIF9ybXRyZWUocGF0aCkKLSAgICBleGNlcHQgT1NFcnJvciwgZToKLSAgICAgICAgIyBVbml4IHJldHVybnMgRU5PRU5ULCBXaW5kb3dzIHJldHVybnMgRVNSQ0guCi0gICAgICAgIGlmIGUuZXJybm8gbm90IGluIChlcnJuby5FTk9FTlQsIGVycm5vLkVTUkNIKToKLSAgICAgICAgICAgIHJhaXNlCi0KLWRlZiBmb3JnZXQobW9kbmFtZSk6Ci0gICAgJycnIkZvcmdldCIgYSBtb2R1bGUgd2FzIGV2ZXIgaW1wb3J0ZWQgYnkgcmVtb3ZpbmcgaXQgZnJvbSBzeXMubW9kdWxlcyBhbmQKLSAgICBkZWxldGluZyBhbnkgLnB5YyBhbmQgLnB5byBmaWxlcy4nJycKLSAgICB1bmxvYWQobW9kbmFtZSkKLSAgICBmb3IgZGlybmFtZSBpbiBzeXMucGF0aDoKLSAgICAgICAgdW5saW5rKG9zLnBhdGguam9pbihkaXJuYW1lLCBtb2RuYW1lICsgb3MuZXh0c2VwICsgJ3B5YycpKQotICAgICAgICAjIERlbGV0aW5nIHRoZSAucHlvIGZpbGUgY2Fubm90IGJlIHdpdGhpbiB0aGUgJ3RyeScgZm9yIHRoZSAucHljIHNpbmNlCi0gICAgICAgICMgdGhlIGNoYW5jZSBleGlzdHMgdGhhdCB0aGVyZSBpcyBubyAucHljIChhbmQgdGh1cyB0aGUgJ3RyeScgc3RhdGVtZW50Ci0gICAgICAgICMgaXMgZXhpdGVkKSBidXQgdGhlcmUgaXMgYSAucHlvIGZpbGUuCi0gICAgICAgIHVubGluayhvcy5wYXRoLmpvaW4oZGlybmFtZSwgbW9kbmFtZSArIG9zLmV4dHNlcCArICdweW8nKSkKLQotIyBDaGVjayB3aGV0aGVyIGEgZ3VpIGlzIGFjdHVhbGx5IGF2YWlsYWJsZQotZGVmIF9pc19ndWlfYXZhaWxhYmxlKCk6Ci0gICAgaWYgaGFzYXR0cihfaXNfZ3VpX2F2YWlsYWJsZSwgJ3Jlc3VsdCcpOgotICAgICAgICByZXR1cm4gX2lzX2d1aV9hdmFpbGFibGUucmVzdWx0Ci0gICAgcmVhc29uID0gTm9uZQotICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKLSAgICAgICAgIyBpZiBQeXRob24gaXMgcnVubmluZyBhcyBhIHNlcnZpY2UgKHN1Y2ggYXMgdGhlIGJ1aWxkYm90IHNlcnZpY2UpLAotICAgICAgICAjIGd1aSBpbnRlcmFjdGlvbiBtYXkgYmUgZGlzYWxsb3dlZAotICAgICAgICBpbXBvcnQgY3R5cGVzCi0gICAgICAgIGltcG9ydCBjdHlwZXMud2ludHlwZXMKLSAgICAgICAgVU9JX0ZMQUdTID0gMQotICAgICAgICBXU0ZfVklTSUJMRSA9IDB4MDAwMQotICAgICAgICBjbGFzcyBVU0VST0JKRUNURkxBR1MoY3R5cGVzLlN0cnVjdHVyZSk6Ci0gICAgICAgICAgICBfZmllbGRzXyA9IFsoImZJbmhlcml0IiwgY3R5cGVzLndpbnR5cGVzLkJPT0wpLAotICAgICAgICAgICAgICAgICAgICAgICAgKCJmUmVzZXJ2ZWQiLCBjdHlwZXMud2ludHlwZXMuQk9PTCksCi0gICAgICAgICAgICAgICAgICAgICAgICAoImR3RmxhZ3MiLCBjdHlwZXMud2ludHlwZXMuRFdPUkQpXQotICAgICAgICBkbGwgPSBjdHlwZXMud2luZGxsLnVzZXIzMgotICAgICAgICBoID0gZGxsLkdldFByb2Nlc3NXaW5kb3dTdGF0aW9uKCkKLSAgICAgICAgaWYgbm90IGg6Ci0gICAgICAgICAgICByYWlzZSBjdHlwZXMuV2luRXJyb3IoKQotICAgICAgICB1b2YgPSBVU0VST0JKRUNURkxBR1MoKQotICAgICAgICBuZWVkZWQgPSBjdHlwZXMud2ludHlwZXMuRFdPUkQoKQotICAgICAgICByZXMgPSBkbGwuR2V0VXNlck9iamVjdEluZm9ybWF0aW9uVyhoLAotICAgICAgICAgICAgVU9JX0ZMQUdTLAotICAgICAgICAgICAgY3R5cGVzLmJ5cmVmKHVvZiksCi0gICAgICAgICAgICBjdHlwZXMuc2l6ZW9mKHVvZiksCi0gICAgICAgICAgICBjdHlwZXMuYnlyZWYobmVlZGVkKSkKLSAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgIHJhaXNlIGN0eXBlcy5XaW5FcnJvcigpCi0gICAgICAgIGlmIG5vdCBib29sKHVvZi5kd0ZsYWdzICYgV1NGX1ZJU0lCTEUpOgotICAgICAgICAgICAgcmVhc29uID0gImd1aSBub3QgYXZhaWxhYmxlIChXU0ZfVklTSUJMRSBmbGFnIG5vdCBzZXQpIgotICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAjIFRoZSBBcXVhIFRrIGltcGxlbWVudGF0aW9ucyBvbiBPUyBYIGNhbiBhYm9ydCB0aGUgcHJvY2VzcyBpZgotICAgICAgICAjIGJlaW5nIGNhbGxlZCBpbiBhbiBlbnZpcm9ubWVudCB3aGVyZSBhIHdpbmRvdyBzZXJ2ZXIgY29ubmVjdGlvbgotICAgICAgICAjIGNhbm5vdCBiZSBtYWRlLCBmb3IgaW5zdGFuY2Ugd2hlbiBpbnZva2VkIGJ5IGEgYnVpbGRib3Qgb3Igc3NoCi0gICAgICAgICMgcHJvY2VzcyBub3QgcnVubmluZyB1bmRlciB0aGUgc2FtZSB1c2VyIGlkIGFzIHRoZSBjdXJyZW50IGNvbnNvbGUKLSAgICAgICAgIyB1c2VyLiAgVG8gYXZvaWQgdGhhdCwgcmFpc2UgYW4gZXhjZXB0aW9uIGlmIHRoZSB3aW5kb3cgbWFuYWdlcgotICAgICAgICAjIGNvbm5lY3Rpb24gaXMgbm90IGF2YWlsYWJsZS4KLSAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNkbGwsIGNfaW50LCBwb2ludGVyLCBTdHJ1Y3R1cmUKLSAgICAgICAgZnJvbSBjdHlwZXMudXRpbCBpbXBvcnQgZmluZF9saWJyYXJ5Ci0KLSAgICAgICAgYXBwX3NlcnZpY2VzID0gY2RsbC5Mb2FkTGlicmFyeShmaW5kX2xpYnJhcnkoIkFwcGxpY2F0aW9uU2VydmljZXMiKSkKLQotICAgICAgICBpZiBhcHBfc2VydmljZXMuQ0dNYWluRGlzcGxheUlEKCkgPT0gMDoKLSAgICAgICAgICAgIHJlYXNvbiA9ICJndWkgdGVzdHMgY2Fubm90IHJ1biB3aXRob3V0IE9TIFggd2luZG93IG1hbmFnZXIiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjbGFzcyBQcm9jZXNzU2VyaWFsTnVtYmVyKFN0cnVjdHVyZSk6Ci0gICAgICAgICAgICAgICAgX2ZpZWxkc18gPSBbKCJoaWdoTG9uZ09mUFNOIiwgY19pbnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgibG93TG9uZ09mUFNOIiwgY19pbnQpXQotICAgICAgICAgICAgcHNuID0gUHJvY2Vzc1NlcmlhbE51bWJlcigpCi0gICAgICAgICAgICBwc25fcCA9IHBvaW50ZXIocHNuKQotICAgICAgICAgICAgaWYgKCAgKGFwcF9zZXJ2aWNlcy5HZXRDdXJyZW50UHJvY2Vzcyhwc25fcCkgPCAwKSBvcgotICAgICAgICAgICAgICAgICAgKGFwcF9zZXJ2aWNlcy5TZXRGcm9udFByb2Nlc3MocHNuX3ApIDwgMCkgKToKLSAgICAgICAgICAgICAgICByZWFzb24gPSAiY2Fubm90IHJ1biB3aXRob3V0IE9TIFggZ3VpIHByb2Nlc3MiCi0KLSAgICAjIGNoZWNrIG9uIGV2ZXJ5IHBsYXRmb3JtIHdoZXRoZXIgdGtpbnRlciBjYW4gYWN0dWFsbHkgZG8gYW55dGhpbmcKLSAgICBpZiBub3QgcmVhc29uOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmcm9tIFRraW50ZXIgaW1wb3J0IFRrCi0gICAgICAgICAgICByb290ID0gVGsoKQotICAgICAgICAgICAgcm9vdC53aXRoZHJhdygpCi0gICAgICAgICAgICByb290LnVwZGF0ZSgpCi0gICAgICAgICAgICByb290LmRlc3Ryb3koKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBlcnJfc3RyaW5nID0gc3RyKGUpCi0gICAgICAgICAgICBpZiBsZW4oZXJyX3N0cmluZykgPiA1MDoKLSAgICAgICAgICAgICAgICBlcnJfc3RyaW5nID0gZXJyX3N0cmluZ1s6NTBdICsgJyBbLi4uXScKLSAgICAgICAgICAgIHJlYXNvbiA9ICdUayB1bmF2YWlsYWJsZSBkdWUgdG8ge306IHt9Jy5mb3JtYXQodHlwZShlKS5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyX3N0cmluZykKLQotICAgIF9pc19ndWlfYXZhaWxhYmxlLnJlYXNvbiA9IHJlYXNvbgotICAgIF9pc19ndWlfYXZhaWxhYmxlLnJlc3VsdCA9IG5vdCByZWFzb24KLQotICAgIHJldHVybiBfaXNfZ3VpX2F2YWlsYWJsZS5yZXN1bHQKLQotZGVmIGlzX3Jlc291cmNlX2VuYWJsZWQocmVzb3VyY2UpOgotICAgICIiIlRlc3Qgd2hldGhlciBhIHJlc291cmNlIGlzIGVuYWJsZWQuCi0KLSAgICBLbm93biByZXNvdXJjZXMgYXJlIHNldCBieSByZWdydGVzdC5weS4gIElmIG5vdCBydW5uaW5nIHVuZGVyIHJlZ3J0ZXN0LnB5LAotICAgIGFsbCByZXNvdXJjZXMgYXJlIGFzc3VtZWQgZW5hYmxlZCB1bmxlc3MgdXNlX3Jlc291cmNlcyBoYXMgYmVlbiBzZXQuCi0gICAgIiIiCi0gICAgcmV0dXJuIHVzZV9yZXNvdXJjZXMgaXMgTm9uZSBvciByZXNvdXJjZSBpbiB1c2VfcmVzb3VyY2VzCi0KLWRlZiByZXF1aXJlcyhyZXNvdXJjZSwgbXNnPU5vbmUpOgotICAgICIiIlJhaXNlIFJlc291cmNlRGVuaWVkIGlmIHRoZSBzcGVjaWZpZWQgcmVzb3VyY2UgaXMgbm90IGF2YWlsYWJsZS4iIiIKLSAgICBpZiBub3QgaXNfcmVzb3VyY2VfZW5hYmxlZChyZXNvdXJjZSk6Ci0gICAgICAgIGlmIG1zZyBpcyBOb25lOgotICAgICAgICAgICAgbXNnID0gIlVzZSBvZiB0aGUgYCVzJyByZXNvdXJjZSBub3QgZW5hYmxlZCIgJSByZXNvdXJjZQotICAgICAgICByYWlzZSBSZXNvdXJjZURlbmllZChtc2cpCi0gICAgaWYgcmVzb3VyY2UgPT0gJ2d1aScgYW5kIG5vdCBfaXNfZ3VpX2F2YWlsYWJsZSgpOgotICAgICAgICByYWlzZSBSZXNvdXJjZURlbmllZChfaXNfZ3VpX2F2YWlsYWJsZS5yZWFzb24pCi0KLWRlZiByZXF1aXJlc19tYWNfdmVyKCptaW5fdmVyc2lvbik6Ci0gICAgIiIiRGVjb3JhdG9yIHJhaXNpbmcgU2tpcFRlc3QgaWYgdGhlIE9TIGlzIE1hYyBPUyBYIGFuZCB0aGUgT1MgWAotICAgIHZlcnNpb24gaWYgbGVzcyB0aGFuIG1pbl92ZXJzaW9uLgotCi0gICAgRm9yIGV4YW1wbGUsIEByZXF1aXJlc19tYWNfdmVyKDEwLCA1KSByYWlzZXMgU2tpcFRlc3QgaWYgdGhlIE9TIFggdmVyc2lvbgotICAgIGlzIGxlc3NlciB0aGFuIDEwLjUuCi0gICAgIiIiCi0gICAgZGVmIGRlY29yYXRvcihmdW5jKToKLSAgICAgICAgQGZ1bmN0b29scy53cmFwcyhmdW5jKQotICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprdyk6Ci0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgICAgICAgICAgdmVyc2lvbl90eHQgPSBwbGF0Zm9ybS5tYWNfdmVyKClbMF0KLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHZlcnNpb24gPSB0dXBsZShtYXAoaW50LCB2ZXJzaW9uX3R4dC5zcGxpdCgnLicpKSkKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHZlcnNpb24gPCBtaW5fdmVyc2lvbjoKLSAgICAgICAgICAgICAgICAgICAgICAgIG1pbl92ZXJzaW9uX3R4dCA9ICcuJy5qb2luKG1hcChzdHIsIG1pbl92ZXJzaW9uKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNYWMgT1MgWCAlcyBvciBoaWdoZXIgcmVxdWlyZWQsIG5vdCAlcyIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChtaW5fdmVyc2lvbl90eHQsIHZlcnNpb25fdHh0KSkKLSAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3KQotICAgICAgICB3cmFwcGVyLm1pbl92ZXJzaW9uID0gbWluX3ZlcnNpb24KLSAgICAgICAgcmV0dXJuIHdyYXBwZXIKLSAgICByZXR1cm4gZGVjb3JhdG9yCi0KLQotIyBEb24ndCB1c2UgImxvY2FsaG9zdCIsIHNpbmNlIHJlc29sdmluZyBpdCB1c2VzIHRoZSBETlMgdW5kZXIgcmVjZW50Ci0jIFdpbmRvd3MgdmVyc2lvbnMgKHNlZSBpc3N1ZSAjMTg3OTIpLgotSE9TVCA9ICIxMjcuMC4wLjEiCi1IT1NUdjYgPSAiOjoxIgotCi0KLWRlZiBmaW5kX3VudXNlZF9wb3J0KGZhbWlseT1zb2NrZXQuQUZfSU5FVCwgc29ja3R5cGU9c29ja2V0LlNPQ0tfU1RSRUFNKToKLSAgICAiIiJSZXR1cm5zIGFuIHVudXNlZCBwb3J0IHRoYXQgc2hvdWxkIGJlIHN1aXRhYmxlIGZvciBiaW5kaW5nLiAgVGhpcyBpcwotICAgIGFjaGlldmVkIGJ5IGNyZWF0aW5nIGEgdGVtcG9yYXJ5IHNvY2tldCB3aXRoIHRoZSBzYW1lIGZhbWlseSBhbmQgdHlwZSBhcwotICAgIHRoZSAnc29jaycgcGFyYW1ldGVyIChkZWZhdWx0IGlzIEFGX0lORVQsIFNPQ0tfU1RSRUFNKSwgYW5kIGJpbmRpbmcgaXQgdG8KLSAgICB0aGUgc3BlY2lmaWVkIGhvc3QgYWRkcmVzcyAoZGVmYXVsdHMgdG8gMC4wLjAuMCkgd2l0aCB0aGUgcG9ydCBzZXQgdG8gMCwKLSAgICBlbGljaXRpbmcgYW4gdW51c2VkIGVwaGVtZXJhbCBwb3J0IGZyb20gdGhlIE9TLiAgVGhlIHRlbXBvcmFyeSBzb2NrZXQgaXMKLSAgICB0aGVuIGNsb3NlZCBhbmQgZGVsZXRlZCwgYW5kIHRoZSBlcGhlbWVyYWwgcG9ydCBpcyByZXR1cm5lZC4KLQotICAgIEVpdGhlciB0aGlzIG1ldGhvZCBvciBiaW5kX3BvcnQoKSBzaG91bGQgYmUgdXNlZCBmb3IgYW55IHRlc3RzIHdoZXJlIGEKLSAgICBzZXJ2ZXIgc29ja2V0IG5lZWRzIHRvIGJlIGJvdW5kIHRvIGEgcGFydGljdWxhciBwb3J0IGZvciB0aGUgZHVyYXRpb24gb2YKLSAgICB0aGUgdGVzdC4gIFdoaWNoIG9uZSB0byB1c2UgZGVwZW5kcyBvbiB3aGV0aGVyIHRoZSBjYWxsaW5nIGNvZGUgaXMgY3JlYXRpbmcKLSAgICBhIHB5dGhvbiBzb2NrZXQsIG9yIGlmIGFuIHVudXNlZCBwb3J0IG5lZWRzIHRvIGJlIHByb3ZpZGVkIGluIGEgY29uc3RydWN0b3IKLSAgICBvciBwYXNzZWQgdG8gYW4gZXh0ZXJuYWwgcHJvZ3JhbSAoaS5lLiB0aGUgLWFjY2VwdCBhcmd1bWVudCB0byBvcGVuc3NsJ3MKLSAgICBzX3NlcnZlciBtb2RlKS4gIEFsd2F5cyBwcmVmZXIgYmluZF9wb3J0KCkgb3ZlciBmaW5kX3VudXNlZF9wb3J0KCkgd2hlcmUKLSAgICBwb3NzaWJsZS4gIEhhcmQgY29kZWQgcG9ydHMgc2hvdWxkICpORVZFUiogYmUgdXNlZC4gIEFzIHNvb24gYXMgYSBzZXJ2ZXIKLSAgICBzb2NrZXQgaXMgYm91bmQgdG8gYSBoYXJkIGNvZGVkIHBvcnQsIHRoZSBhYmlsaXR5IHRvIHJ1biBtdWx0aXBsZSBpbnN0YW5jZXMKLSAgICBvZiB0aGUgdGVzdCBzaW11bHRhbmVvdXNseSBvbiB0aGUgc2FtZSBob3N0IGlzIGNvbXByb21pc2VkLCB3aGljaCBtYWtlcyB0aGUKLSAgICB0ZXN0IGEgdGlja2luZyB0aW1lIGJvbWIgaW4gYSBidWlsZGJvdCBlbnZpcm9ubWVudC4gT24gVW5peCBidWlsZGJvdHMsIHRoaXMKLSAgICBtYXkgc2ltcGx5IG1hbmlmZXN0IGFzIGEgZmFpbGVkIHRlc3QsIHdoaWNoIGNhbiBiZSByZWNvdmVyZWQgZnJvbSB3aXRob3V0Ci0gICAgaW50ZXJ2ZW50aW9uIGluIG1vc3QgY2FzZXMsIGJ1dCBvbiBXaW5kb3dzLCB0aGUgZW50aXJlIHB5dGhvbiBwcm9jZXNzIGNhbgotICAgIGNvbXBsZXRlbHkgYW5kIHV0dGVybHkgd2VkZ2UsIHJlcXVpcmluZyBzb21lb25lIHRvIGxvZyBpbiB0byB0aGUgYnVpbGRib3QKLSAgICBhbmQgbWFudWFsbHkga2lsbCB0aGUgYWZmZWN0ZWQgcHJvY2Vzcy4KLQotICAgIChUaGlzIGlzIGVhc3kgdG8gcmVwcm9kdWNlIG9uIFdpbmRvd3MsIHVuZm9ydHVuYXRlbHksIGFuZCBjYW4gYmUgdHJhY2VkIHRvCi0gICAgdGhlIFNPX1JFVVNFQUREUiBzb2NrZXQgb3B0aW9uIGhhdmluZyBkaWZmZXJlbnQgc2VtYW50aWNzIG9uIFdpbmRvd3MgdmVyc3VzCi0gICAgVW5peC9MaW51eC4gIE9uIFVuaXgsIHlvdSBjYW4ndCBoYXZlIHR3byBBRl9JTkVUIFNPQ0tfU1RSRUFNIHNvY2tldHMgYmluZCwKLSAgICBsaXN0ZW4gYW5kIHRoZW4gYWNjZXB0IGNvbm5lY3Rpb25zIG9uIGlkZW50aWNhbCBob3N0L3BvcnRzLiAgQW4gRUFERFJJTlVTRQotICAgIHNvY2tldC5lcnJvciB3aWxsIGJlIHJhaXNlZCBhdCBzb21lIHBvaW50IChkZXBlbmRpbmcgb24gdGhlIHBsYXRmb3JtIGFuZAotICAgIHRoZSBvcmRlciBiaW5kIGFuZCBsaXN0ZW4gd2VyZSBjYWxsZWQgb24gZWFjaCBzb2NrZXQpLgotCi0gICAgSG93ZXZlciwgb24gV2luZG93cywgaWYgU09fUkVVU0VBRERSIGlzIHNldCBvbiB0aGUgc29ja2V0cywgbm8gRUFERFJJTlVTRQotICAgIHdpbGwgZXZlciBiZSByYWlzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIGJpbmQgdHdvIGlkZW50aWNhbCBob3N0L3BvcnRzLiBXaGVuCi0gICAgYWNjZXB0KCkgaXMgY2FsbGVkIG9uIGVhY2ggc29ja2V0LCB0aGUgc2Vjb25kIGNhbGxlcidzIHByb2Nlc3Mgd2lsbCBzdGVhbAotICAgIHRoZSBwb3J0IGZyb20gdGhlIGZpcnN0IGNhbGxlciwgbGVhdmluZyB0aGVtIGJvdGggaW4gYW4gYXdrd2FyZGx5IHdlZGdlZAotICAgIHN0YXRlIHdoZXJlIHRoZXknbGwgbm8gbG9uZ2VyIHJlc3BvbmQgdG8gYW55IHNpZ25hbHMgb3IgZ3JhY2VmdWwga2lsbHMsIGFuZAotICAgIG11c3QgYmUgZm9yY2libHkga2lsbGVkIHZpYSBPcGVuUHJvY2VzcygpL1Rlcm1pbmF0ZVByb2Nlc3MoKS4KLQotICAgIFRoZSBzb2x1dGlvbiBvbiBXaW5kb3dzIGlzIHRvIHVzZSB0aGUgU09fRVhDTFVTSVZFQUREUlVTRSBzb2NrZXQgb3B0aW9uCi0gICAgaW5zdGVhZCBvZiBTT19SRVVTRUFERFIsIHdoaWNoIGVmZmVjdGl2ZWx5IGFmZm9yZHMgdGhlIHNhbWUgc2VtYW50aWNzIGFzCi0gICAgU09fUkVVU0VBRERSIG9uIFVuaXguICBHaXZlbiB0aGUgcHJvcGVuc2l0eSBvZiBVbml4IGRldmVsb3BlcnMgaW4gdGhlIE9wZW4KLSAgICBTb3VyY2Ugd29ybGQgY29tcGFyZWQgdG8gV2luZG93cyBvbmVzLCB0aGlzIGlzIGEgY29tbW9uIG1pc3Rha2UuICBBIHF1aWNrCi0gICAgbG9vayBvdmVyIE9wZW5TU0wncyAwLjkuOGcgc291cmNlIHNob3dzIHRoYXQgdGhleSB1c2UgU09fUkVVU0VBRERSIHdoZW4KLSAgICBvcGVuc3NsLmV4ZSBpcyBjYWxsZWQgd2l0aCB0aGUgJ3Nfc2VydmVyJyBvcHRpb24sIGZvciBleGFtcGxlLiBTZWUKLSAgICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjU1MCBmb3IgbW9yZSBpbmZvLiAgVGhlIGZvbGxvd2luZyBzaXRlIGFsc28KLSAgICBoYXMgYSB2ZXJ5IHRob3JvdWdoIGRlc2NyaXB0aW9uIGFib3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgYm90aCBSRVVTRUFERFIKLSAgICBhbmQgRVhDTFVTSVZFQUREUlVTRSBvbiBXaW5kb3dzOgotICAgIGh0dHA6Ly9tc2RuMi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM3NDA2MjEoVlMuODUpLmFzcHgpCi0KLSAgICBYWFg6IGFsdGhvdWdoIHRoaXMgYXBwcm9hY2ggaXMgYSB2YXN0IGltcHJvdmVtZW50IG9uIHByZXZpb3VzIGF0dGVtcHRzIHRvCi0gICAgZWxpY2l0IHVudXNlZCBwb3J0cywgaXQgcmVzdHMgaGVhdmlseSBvbiB0aGUgYXNzdW1wdGlvbiB0aGF0IHRoZSBlcGhlbWVyYWwKLSAgICBwb3J0IHJldHVybmVkIHRvIHVzIGJ5IHRoZSBPUyB3b24ndCBpbW1lZGlhdGVseSBiZSBkaXNoZWQgYmFjayBvdXQgdG8gc29tZQotICAgIG90aGVyIHByb2Nlc3Mgd2hlbiB3ZSBjbG9zZSBhbmQgZGVsZXRlIG91ciB0ZW1wb3Jhcnkgc29ja2V0IGJ1dCBiZWZvcmUgb3VyCi0gICAgY2FsbGluZyBjb2RlIGhhcyBhIGNoYW5jZSB0byBiaW5kIHRoZSByZXR1cm5lZCBwb3J0LiAgV2UgY2FuIGRlYWwgd2l0aCB0aGlzCi0gICAgaXNzdWUgaWYvd2hlbiB3ZSBjb21lIGFjcm9zcyBpdC4iIiIKLSAgICB0ZW1wc29jayA9IHNvY2tldC5zb2NrZXQoZmFtaWx5LCBzb2NrdHlwZSkKLSAgICBwb3J0ID0gYmluZF9wb3J0KHRlbXBzb2NrKQotICAgIHRlbXBzb2NrLmNsb3NlKCkKLSAgICBkZWwgdGVtcHNvY2sKLSAgICByZXR1cm4gcG9ydAotCi1kZWYgYmluZF9wb3J0KHNvY2ssIGhvc3Q9SE9TVCk6Ci0gICAgIiIiQmluZCB0aGUgc29ja2V0IHRvIGEgZnJlZSBwb3J0IGFuZCByZXR1cm4gdGhlIHBvcnQgbnVtYmVyLiAgUmVsaWVzIG9uCi0gICAgZXBoZW1lcmFsIHBvcnRzIGluIG9yZGVyIHRvIGVuc3VyZSB3ZSBhcmUgdXNpbmcgYW4gdW5ib3VuZCBwb3J0LiAgVGhpcyBpcwotICAgIGltcG9ydGFudCBhcyBtYW55IHRlc3RzIG1heSBiZSBydW5uaW5nIHNpbXVsdGFuZW91c2x5LCBlc3BlY2lhbGx5IGluIGEKLSAgICBidWlsZGJvdCBlbnZpcm9ubWVudC4gIFRoaXMgbWV0aG9kIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlIHNvY2suZmFtaWx5Ci0gICAgaXMgQUZfSU5FVCBhbmQgc29jay50eXBlIGlzIFNPQ0tfU1RSRUFNLCAqYW5kKiB0aGUgc29ja2V0IGhhcyBTT19SRVVTRUFERFIKLSAgICBvciBTT19SRVVTRVBPUlQgc2V0IG9uIGl0LiAgVGVzdHMgc2hvdWxkICpuZXZlciogc2V0IHRoZXNlIHNvY2tldCBvcHRpb25zCi0gICAgZm9yIFRDUC9JUCBzb2NrZXRzLiAgVGhlIG9ubHkgY2FzZSBmb3Igc2V0dGluZyB0aGVzZSBvcHRpb25zIGlzIHRlc3RpbmcKLSAgICBtdWx0aWNhc3RpbmcgdmlhIG11bHRpcGxlIFVEUCBzb2NrZXRzLgotCi0gICAgQWRkaXRpb25hbGx5LCBpZiB0aGUgU09fRVhDTFVTSVZFQUREUlVTRSBzb2NrZXQgb3B0aW9uIGlzIGF2YWlsYWJsZSAoaS5lLgotICAgIG9uIFdpbmRvd3MpLCBpdCB3aWxsIGJlIHNldCBvbiB0aGUgc29ja2V0LiAgVGhpcyB3aWxsIHByZXZlbnQgYW55b25lIGVsc2UKLSAgICBmcm9tIGJpbmQoKSdpbmcgdG8gb3VyIGhvc3QvcG9ydCBmb3IgdGhlIGR1cmF0aW9uIG9mIHRoZSB0ZXN0LgotICAgICIiIgotICAgIGlmIHNvY2suZmFtaWx5ID09IHNvY2tldC5BRl9JTkVUIGFuZCBzb2NrLnR5cGUgPT0gc29ja2V0LlNPQ0tfU1RSRUFNOgotICAgICAgICBpZiBoYXNhdHRyKHNvY2tldCwgJ1NPX1JFVVNFQUREUicpOgotICAgICAgICAgICAgaWYgc29jay5nZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQuU09fUkVVU0VBRERSKSA9PSAxOgotICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoInRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlIFNPX1JFVVNFQUREUiAiICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvY2tldCBvcHRpb24gb24gVENQL0lQIHNvY2tldHMhIikKLSAgICAgICAgaWYgaGFzYXR0cihzb2NrZXQsICdTT19SRVVTRVBPUlQnKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpZiBzb2NrLmdldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19SRVVTRVBPUlQpID09IDE6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoInRlc3RzIHNob3VsZCBuZXZlciBzZXQgdGhlIFNPX1JFVVNFUE9SVCAiICAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb2NrZXQgb3B0aW9uIG9uIFRDUC9JUCBzb2NrZXRzISIpCi0gICAgICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvcjoKLSAgICAgICAgICAgICAgICAjIFB5dGhvbidzIHNvY2tldCBtb2R1bGUgd2FzIGNvbXBpbGVkIHVzaW5nIG1vZGVybiBoZWFkZXJzCi0gICAgICAgICAgICAgICAgIyB0aHVzIGRlZmluaW5nIFNPX1JFVVNFUE9SVCBidXQgdGhpcyBwcm9jZXNzIGlzIHJ1bm5pbmcKLSAgICAgICAgICAgICAgICAjIHVuZGVyIGFuIG9sZGVyIGtlcm5lbCB0aGF0IGRvZXMgbm90IHN1cHBvcnQgU09fUkVVU0VQT1JULgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgaWYgaGFzYXR0cihzb2NrZXQsICdTT19FWENMVVNJVkVBRERSVVNFJyk6Ci0gICAgICAgICAgICBzb2NrLnNldHNvY2tvcHQoc29ja2V0LlNPTF9TT0NLRVQsIHNvY2tldC5TT19FWENMVVNJVkVBRERSVVNFLCAxKQotCi0gICAgc29jay5iaW5kKChob3N0LCAwKSkKLSAgICBwb3J0ID0gc29jay5nZXRzb2NrbmFtZSgpWzFdCi0gICAgcmV0dXJuIHBvcnQKLQotZGVmIF9pc19pcHY2X2VuYWJsZWQoKToKLSAgICAiIiJDaGVjayB3aGV0aGVyIElQdjYgaXMgZW5hYmxlZCBvbiB0aGlzIGhvc3QuIiIiCi0gICAgaWYgc29ja2V0Lmhhc19pcHY2OgotICAgICAgICBzb2NrID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVDYsIHNvY2tldC5TT0NLX1NUUkVBTSkKLSAgICAgICAgICAgIHNvY2suYmluZCgoSE9TVHY2LCAwKSkKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6Ci0gICAgICAgICAgICBwYXNzCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBzb2NrOgotICAgICAgICAgICAgICAgIHNvY2suY2xvc2UoKQotICAgIHJldHVybiBGYWxzZQotCi1JUFY2X0VOQUJMRUQgPSBfaXNfaXB2Nl9lbmFibGVkKCkKLQotZGVmIHN5c3RlbV9tdXN0X3ZhbGlkYXRlX2NlcnQoZik6Ci0gICAgIiIiU2tpcCB0aGUgdGVzdCBvbiBUTFMgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBmYWlsdXJlcy4iIiIKLSAgICBAZnVuY3Rvb2xzLndyYXBzKGYpCi0gICAgZGVmIGRlYygqYXJncywgKiprd2FyZ3MpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmKCphcmdzLCAqKmt3YXJncykKLSAgICAgICAgZXhjZXB0IElPRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmICJDRVJUSUZJQ0FURV9WRVJJRllfRkFJTEVEIiBpbiBzdHIoZSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInN5c3RlbSBkb2VzIG5vdCBjb250YWluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmVjZXNzYXJ5IGNlcnRpZmljYXRlcyIpCi0gICAgICAgICAgICByYWlzZQotICAgIHJldHVybiBkZWMKLQotRlVaWiA9IDFlLTYKLQotZGVmIGZjbXAoeCwgeSk6ICMgZnV6enkgY29tcGFyaXNvbiBmdW5jdGlvbgotICAgIGlmIGlzaW5zdGFuY2UoeCwgZmxvYXQpIG9yIGlzaW5zdGFuY2UoeSwgZmxvYXQpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmdXp6ID0gKGFicyh4KSArIGFicyh5KSkgKiBGVVpaCi0gICAgICAgICAgICBpZiBhYnMoeC15KSA8PSBmdXp6OgotICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICBlbGlmIHR5cGUoeCkgPT0gdHlwZSh5KSBhbmQgaXNpbnN0YW5jZSh4LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobWluKGxlbih4KSwgbGVuKHkpKSk6Ci0gICAgICAgICAgICBvdXRjb21lID0gZmNtcCh4W2ldLCB5W2ldKQotICAgICAgICAgICAgaWYgb3V0Y29tZSAhPSAwOgotICAgICAgICAgICAgICAgIHJldHVybiBvdXRjb21lCi0gICAgICAgIHJldHVybiAobGVuKHgpID4gbGVuKHkpKSAtIChsZW4oeCkgPCBsZW4oeSkpCi0gICAgcmV0dXJuICh4ID4geSkgLSAoeCA8IHkpCi0KLQotIyBBIGNvbnN0YW50IGxpa2VseSBsYXJnZXIgdGhhbiB0aGUgdW5kZXJseWluZyBPUyBwaXBlIGJ1ZmZlciBzaXplLCB0bwotIyBtYWtlIHdyaXRlcyBibG9ja2luZy4KLSMgV2luZG93cyBsaW1pdCBzZWVtcyB0byBiZSBhcm91bmQgNTEyIEIsIGFuZCBtYW55IFVuaXgga2VybmVscyBoYXZlIGEKLSMgNjQgS2lCIHBpcGUgYnVmZmVyIHNpemUgb3IgMTYgKiBQQUdFX1NJWkU6IHRha2UgYSBmZXcgbWVncyB0byBiZSBzdXJlLgotIyAoc2VlIGlzc3VlICMxNzgzNSBmb3IgYSBkaXNjdXNzaW9uIG9mIHRoaXMgbnVtYmVyKS4KLVBJUEVfTUFYX1NJWkUgPSA0ICogMTAyNCAqIDEwMjQgKyAxCi0KLSMgQSBjb25zdGFudCBsaWtlbHkgbGFyZ2VyIHRoYW4gdGhlIHVuZGVybHlpbmcgT1Mgc29ja2V0IGJ1ZmZlciBzaXplLCB0byBtYWtlCi0jIHdyaXRlcyBibG9ja2luZy4KLSMgVGhlIHNvY2tldCBidWZmZXIgc2l6ZXMgY2FuIHVzdWFsbHkgYmUgdHVuZWQgc3lzdGVtLXdpZGUgKGUuZy4gdGhyb3VnaCBzeXNjdGwKLSMgb24gTGludXgpLCBvciBvbiBhIHBlci1zb2NrZXQgYmFzaXMgKFNPX1NOREJVRi9TT19SQ1ZCVUYpLiBTZWUgaXNzdWUgIzE4NjQzCi0jIGZvciBhIGRpc2N1c3Npb24gb2YgdGhpcyBudW1iZXIpLgotU09DS19NQVhfU0laRSA9IDE2ICogMTAyNCAqIDEwMjQgKyAxCi0KLWlzX2p5dGhvbiA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdqYXZhJykKLQotdHJ5OgotICAgIHVuaWNvZGUKLSAgICBoYXZlX3VuaWNvZGUgPSBUcnVlCi1leGNlcHQgTmFtZUVycm9yOgotICAgIGhhdmVfdW5pY29kZSA9IEZhbHNlCi0KLXJlcXVpcmVzX3VuaWNvZGUgPSB1bml0dGVzdC5za2lwVW5sZXNzKGhhdmVfdW5pY29kZSwgJ25vIHVuaWNvZGUgc3VwcG9ydCcpCi0KLWRlZiB1KHMpOgotICAgIHJldHVybiB1bmljb2RlKHMsICd1bmljb2RlLWVzY2FwZScpCi0KLSMgRlNfTk9OQVNDSUk6IG5vbi1BU0NJSSBVbmljb2RlIGNoYXJhY3RlciBlbmNvZGFibGUgYnkKLSMgc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpLCBvciBOb25lIGlmIHRoZXJlIGlzIG5vIHN1Y2ggY2hhcmFjdGVyLgotRlNfTk9OQVNDSUkgPSBOb25lCi1pZiBoYXZlX3VuaWNvZGU6Ci0gICAgZm9yIGNoYXJhY3RlciBpbiAoCi0gICAgICAgICMgRmlyc3QgdHJ5IHByaW50YWJsZSBhbmQgY29tbW9uIGNoYXJhY3RlcnMgdG8gaGF2ZSBhIHJlYWRhYmxlIGZpbGVuYW1lLgotICAgICAgICAjIEZvciBlYWNoIGNoYXJhY3RlciwgdGhlIGVuY29kaW5nIGxpc3QgYXJlIGp1c3QgZXhhbXBsZSBvZiBlbmNvZGluZ3MgYWJsZQotICAgICAgICAjIHRvIGVuY29kZSB0aGUgY2hhcmFjdGVyICh0aGUgbGlzdCBpcyBub3QgZXhoYXVzdGl2ZSkuCi0KLSAgICAgICAgIyBVKzAwRTYgKExhdGluIFNtYWxsIExldHRlciBBZSk6IGNwMTI1MiwgaXNvLTg4NTktMQotICAgICAgICB1bmljaHIoMHgwMEU2KSwKLSAgICAgICAgIyBVKzAxMzAgKExhdGluIENhcGl0YWwgTGV0dGVyIEkgV2l0aCBEb3QgQWJvdmUpOiBjcDEyNTQsIGlzbzg4NTlfMwotICAgICAgICB1bmljaHIoMHgwMTMwKSwKLSAgICAgICAgIyBVKzAxNDEgKExhdGluIENhcGl0YWwgTGV0dGVyIEwgV2l0aCBTdHJva2UpOiBjcDEyNTAsIGNwMTI1NwotICAgICAgICB1bmljaHIoMHgwMTQxKSwKLSAgICAgICAgIyBVKzAzQzYgKEdyZWVrIFNtYWxsIExldHRlciBQaGkpOiBjcDEyNTMKLSAgICAgICAgdW5pY2hyKDB4MDNDNiksCi0gICAgICAgICMgVSswNDFBIChDeXJpbGxpYyBDYXBpdGFsIExldHRlciBLYSk6IGNwMTI1MQotICAgICAgICB1bmljaHIoMHgwNDFBKSwKLSAgICAgICAgIyBVKzA1RDAgKEhlYnJldyBMZXR0ZXIgQWxlZik6IEVuY29kYWJsZSB0byBjcDQyNAotICAgICAgICB1bmljaHIoMHgwNUQwKSwKLSAgICAgICAgIyBVKzA2MEMgKEFyYWJpYyBDb21tYSk6IGNwODY0LCBjcDEwMDYsIGlzbzg4NTlfNiwgbWFjX2FyYWJpYwotICAgICAgICB1bmljaHIoMHgwNjBDKSwKLSAgICAgICAgIyBVKzA2MkEgKEFyYWJpYyBMZXR0ZXIgVGVoKTogY3A3MjAKLSAgICAgICAgdW5pY2hyKDB4MDYyQSksCi0gICAgICAgICMgVSswRTAxIChUaGFpIENoYXJhY3RlciBLbyBLYWkpOiBjcDg3NAotICAgICAgICB1bmljaHIoMHgwRTAxKSwKLQotICAgICAgICAjIFRoZW4gdHJ5IG1vcmUgInNwZWNpYWwiIGNoYXJhY3RlcnMuICJzcGVjaWFsIiBiZWNhdXNlIHRoZXkgbWF5IGJlCi0gICAgICAgICMgaW50ZXJwcmV0ZWQgb3IgZGlzcGxheWVkIGRpZmZlcmVudGx5IGRlcGVuZGluZyBvbiB0aGUgZXhhY3QgbG9jYWxlCi0gICAgICAgICMgZW5jb2RpbmcgYW5kIHRoZSBmb250LgotCi0gICAgICAgICMgVSswMEEwIChOby1CcmVhayBTcGFjZSkKLSAgICAgICAgdW5pY2hyKDB4MDBBMCksCi0gICAgICAgICMgVSsyMEFDIChFdXJvIFNpZ24pCi0gICAgICAgIHVuaWNocigweDIwQUMpLAotICAgICk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNoYXJhY3Rlci5lbmNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKVwKLSAgICAgICAgICAgICAgICAgICAgIC5kZWNvZGUoc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpKQotICAgICAgICBleGNlcHQgVW5pY29kZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgRlNfTk9OQVNDSUkgPSBjaGFyYWN0ZXIKLSAgICAgICAgICAgIGJyZWFrCi0KLSMgRmlsZW5hbWUgdXNlZCBmb3IgdGVzdGluZwotaWYgb3MubmFtZSA9PSAnamF2YSc6Ci0gICAgIyBKeXRob24gZGlzYWxsb3dzIEAgaW4gbW9kdWxlIG5hbWVzCi0gICAgVEVTVEZOID0gJyR0ZXN0JwotZWxpZiBvcy5uYW1lID09ICdyaXNjb3MnOgotICAgIFRFU1RGTiA9ICd0ZXN0ZmlsZScKLWVsc2U6Ci0gICAgVEVTVEZOID0gJ0B0ZXN0JwotICAgICMgVW5pY29kZSBuYW1lIG9ubHkgdXNlZCBpZiBURVNUX0ZOX0VOQ09ESU5HIGV4aXN0cyBmb3IgdGhlIHBsYXRmb3JtLgotICAgIGlmIGhhdmVfdW5pY29kZToKLSAgICAgICAgIyBBc3N1bWluZyBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkhPXN5cy5nZXRkZWZhdWx0ZW5jb2RpbmcoKQotICAgICAgICAjIFRFU1RGTl9VTklDT0RFIGlzIGEgZmlsZW5hbWUgdGhhdCBjYW4gYmUgZW5jb2RlZCB1c2luZyB0aGUKLSAgICAgICAgIyBmaWxlIHN5c3RlbSBlbmNvZGluZywgYnV0ICpub3QqIHdpdGggdGhlIGRlZmF1bHQgKGFzY2lpKSBlbmNvZGluZwotICAgICAgICBpZiBpc2luc3RhbmNlKCcnLCB1bmljb2RlKToKLSAgICAgICAgICAgICMgcHl0aG9uIC1VCi0gICAgICAgICAgICAjIFhYWCBwZXJoYXBzIHVuaWNvZGUoKSBzaG91bGQgYWNjZXB0IFVuaWNvZGUgc3RyaW5ncz8KLSAgICAgICAgICAgIFRFU1RGTl9VTklDT0RFID0gIkB0ZXN0LVx4ZTBceGYyIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyAyIGxhdGluIGNoYXJhY3RlcnMuCi0gICAgICAgICAgICBURVNURk5fVU5JQ09ERSA9IHVuaWNvZGUoIkB0ZXN0LVx4ZTBceGYyIiwgImxhdGluLTEiKQotICAgICAgICBURVNURk5fRU5DT0RJTkcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKLSAgICAgICAgIyBURVNURk5fVU5FTkNPREFCTEUgaXMgYSBmaWxlbmFtZSB0aGF0IHNob3VsZCAqbm90KiBiZQotICAgICAgICAjIGFibGUgdG8gYmUgZW5jb2RlZCBieSAqZWl0aGVyKiB0aGUgZGVmYXVsdCBvciBmaWxlc3lzdGVtIGVuY29kaW5nLgotICAgICAgICAjIFRoaXMgdGVzdCByZWFsbHkgb25seSBtYWtlcyBzZW5zZSBvbiBXaW5kb3dzIE5UIHBsYXRmb3JtcwotICAgICAgICAjIHdoaWNoIGhhdmUgc3BlY2lhbCBVbmljb2RlIHN1cHBvcnQgaW4gcG9zaXhtb2R1bGUuCi0gICAgICAgIGlmIChub3QgaGFzYXR0cihzeXMsICJnZXR3aW5kb3dzdmVyc2lvbiIpIG9yCi0gICAgICAgICAgICAgICAgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKClbM10gPCAyKTogIyAgMD13aW4zMnMgb3IgMT05eC9NRQotICAgICAgICAgICAgVEVTVEZOX1VORU5DT0RBQkxFID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBKYXBhbmVzZSBjaGFyYWN0ZXJzIChJIHRoaW5rIC0gZnJvbSBidWcgODQ2MTMzKQotICAgICAgICAgICAgVEVTVEZOX1VORU5DT0RBQkxFID0gZXZhbCgndSJAdGVzdC1cdTUxNzFcdTY3MDlcdTMwNTVcdTMwOGNcdTMwOGIiJykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIFhYWCAtIE5vdGUgLSBzaG91bGQgYmUgdXNpbmcgVEVTVEZOX0VOQ09ESU5HIGhlcmUgLSBidXQgZm9yCi0gICAgICAgICAgICAgICAgIyBXaW5kb3dzLCAibWJjcyIgY3VycmVudGx5IGFsd2F5cyBvcGVyYXRlcyBhcyBpZiBpbgotICAgICAgICAgICAgICAgICMgZXJyb3JzPWlnbm9yZScgbW9kZSAtIGhlbmNlIHdlIGdldCAnPycgY2hhcmFjdGVycyByYXRoZXIgdGhhbgotICAgICAgICAgICAgICAgICMgdGhlIGV4Y2VwdGlvbi4gICdMYXRpbjEnIG9wZXJhdGVzIGFzIHdlIGV4cGVjdCAtIGllLCBmYWlscy4KLSAgICAgICAgICAgICAgICAjIFNlZSBbIDg1MDk5NyBdIG1iY3MgZW5jb2RpbmcgaWdub3JlcyBlcnJvcnMKLSAgICAgICAgICAgICAgICBURVNURk5fVU5FTkNPREFCTEUuZW5jb2RlKCJMYXRpbjEiKQotICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHByaW50IFwKLSAgICAgICAgICAgICAgICAnV0FSTklORzogVGhlIGZpbGVuYW1lICVyIENBTiBiZSBlbmNvZGVkIGJ5IHRoZSBmaWxlc3lzdGVtLiAgJyBcCi0gICAgICAgICAgICAgICAgJ1VuaWNvZGUgZmlsZW5hbWUgdGVzdHMgbWF5IG5vdCBiZSBlZmZlY3RpdmUnIFwKLSAgICAgICAgICAgICAgICAlIFRFU1RGTl9VTkVOQ09EQUJMRQotCi0KLSMgRGlzYW1iaWd1YXRlIFRFU1RGTiBmb3IgcGFyYWxsZWwgdGVzdGluZywgd2hpbGUgbGV0dGluZyBpdCByZW1haW4gYSB2YWxpZAotIyBtb2R1bGUgbmFtZS4KLVRFU1RGTiA9ICJ7fV97fV90bXAiLmZvcm1hdChURVNURk4sIG9zLmdldHBpZCgpKQotCi0jIFNhdmUgdGhlIGluaXRpYWwgY3dkCi1TQVZFRENXRCA9IG9zLmdldGN3ZCgpCi0KLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgY2hhbmdlX2N3ZChwYXRoLCBxdWlldD1GYWxzZSk6Ci0gICAgIiIiUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIHRoYXQgY2hhbmdlcyB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KLQotICAgIEFyZ3VtZW50czoKLQotICAgICAgcGF0aDogdGhlIGRpcmVjdG9yeSB0byB1c2UgYXMgdGhlIHRlbXBvcmFyeSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotCi0gICAgICBxdWlldDogaWYgRmFsc2UgKHRoZSBkZWZhdWx0KSwgdGhlIGNvbnRleHQgbWFuYWdlciByYWlzZXMgYW4gZXhjZXB0aW9uCi0gICAgICAgIG9uIGVycm9yLiAgT3RoZXJ3aXNlLCBpdCBpc3N1ZXMgb25seSBhIHdhcm5pbmcgYW5kIGtlZXBzIHRoZSBjdXJyZW50Ci0gICAgICAgIHdvcmtpbmcgZGlyZWN0b3J5IHRoZSBzYW1lLgotCi0gICAgIiIiCi0gICAgc2F2ZWRfZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICB0cnk6Ci0gICAgICAgIG9zLmNoZGlyKHBhdGgpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIGlmIG5vdCBxdWlldDoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3Rlc3RzIG1heSBmYWlsLCB1bmFibGUgdG8gY2hhbmdlIENXRCB0bzogJyArIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgUnVudGltZVdhcm5pbmcsIHN0YWNrbGV2ZWw9MykKLSAgICB0cnk6Ci0gICAgICAgIHlpZWxkIG9zLmdldGN3ZCgpCi0gICAgZmluYWxseToKLSAgICAgICAgb3MuY2hkaXIoc2F2ZWRfZGlyKQotCi0KLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgdGVtcF9jd2QobmFtZT0ndGVtcGN3ZCcsIHF1aWV0PUZhbHNlKToKLSAgICAiIiIKLSAgICBDb250ZXh0IG1hbmFnZXIgdGhhdCBjcmVhdGVzIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhbmQgc2V0IGl0IGFzIENXRC4KLQotICAgIFRoZSBuZXcgQ1dEIGlzIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGFuZCBpdCdzIG5hbWVkICpuYW1lKi4KLSAgICBJZiAqcXVpZXQqIGlzIEZhbHNlIChkZWZhdWx0KSBhbmQgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIG9yIGNoYW5nZQotICAgIHRoZSBDV0QsIGFuIGVycm9yIGlzIHJhaXNlZC4gIElmIGl0J3MgVHJ1ZSwgb25seSBhIHdhcm5pbmcgaXMgcmFpc2VkCi0gICAgYW5kIHRoZSBvcmlnaW5hbCBDV0QgaXMgdXNlZC4KLSAgICAiIiIKLSAgICBpZiAoaGF2ZV91bmljb2RlIGFuZCBpc2luc3RhbmNlKG5hbWUsIHVuaWNvZGUpIGFuZAotICAgICAgICBub3Qgb3MucGF0aC5zdXBwb3J0c191bmljb2RlX2ZpbGVuYW1lcyk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lLmVuY29kZShzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgb3IgJ2FzY2lpJykKLSAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKLSAgICAgICAgICAgIGlmIG5vdCBxdWlldDoKLSAgICAgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgndW5hYmxlIHRvIGVuY29kZSB0aGUgY3dkIG5hbWUgd2l0aCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBmaWxlc3lzdGVtIGVuY29kaW5nLicpCi0gICAgc2F2ZWRfZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICBpc190ZW1wb3JhcnkgPSBGYWxzZQotICAgIHRyeToKLSAgICAgICAgb3MubWtkaXIobmFtZSkKLSAgICAgICAgb3MuY2hkaXIobmFtZSkKLSAgICAgICAgaXNfdGVtcG9yYXJ5ID0gVHJ1ZQotICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICBpZiBub3QgcXVpZXQ6Ci0gICAgICAgICAgICByYWlzZQotICAgICAgICB3YXJuaW5ncy53YXJuKCd0ZXN0cyBtYXkgZmFpbCwgdW5hYmxlIHRvIGNoYW5nZSB0aGUgQ1dEIHRvICcgKyBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVXYXJuaW5nLCBzdGFja2xldmVsPTMpCi0gICAgdHJ5OgotICAgICAgICB5aWVsZCBvcy5nZXRjd2QoKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIG9zLmNoZGlyKHNhdmVkX2RpcikKLSAgICAgICAgaWYgaXNfdGVtcG9yYXJ5OgotICAgICAgICAgICAgcm10cmVlKG5hbWUpCi0KLQotZGVmIGZpbmRmaWxlKGZpbGUsIGhlcmU9X19maWxlX18sIHN1YmRpcj1Ob25lKToKLSAgICAiIiJUcnkgdG8gZmluZCBhIGZpbGUgb24gc3lzLnBhdGggYW5kIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4gIElmIGl0IGlzIG5vdAotICAgIGZvdW5kIHRoZSBhcmd1bWVudCBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGlzIHJldHVybmVkICh0aGlzIGRvZXMgbm90Ci0gICAgbmVjZXNzYXJpbHkgc2lnbmFsIGZhaWx1cmU7IGNvdWxkIHN0aWxsIGJlIHRoZSBsZWdpdGltYXRlIHBhdGgpLiIiIgotICAgIGlmIG9zLnBhdGguaXNhYnMoZmlsZSk6Ci0gICAgICAgIHJldHVybiBmaWxlCi0gICAgaWYgc3ViZGlyIGlzIG5vdCBOb25lOgotICAgICAgICBmaWxlID0gb3MucGF0aC5qb2luKHN1YmRpciwgZmlsZSkKLSAgICBwYXRoID0gc3lzLnBhdGgKLSAgICBwYXRoID0gW29zLnBhdGguZGlybmFtZShoZXJlKV0gKyBwYXRoCi0gICAgZm9yIGRuIGluIHBhdGg6Ci0gICAgICAgIGZuID0gb3MucGF0aC5qb2luKGRuLCBmaWxlKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhmbik6IHJldHVybiBmbgotICAgIHJldHVybiBmaWxlCi0KLWRlZiBzb3J0ZGljdChkaWN0KToKLSAgICAiTGlrZSByZXByKGRpY3QpLCBidXQgaW4gc29ydGVkIG9yZGVyLiIKLSAgICBpdGVtcyA9IGRpY3QuaXRlbXMoKQotICAgIGl0ZW1zLnNvcnQoKQotICAgIHJlcHJwYWlycyA9IFsiJXI6ICVyIiAlIHBhaXIgZm9yIHBhaXIgaW4gaXRlbXNdCi0gICAgd2l0aGNvbW1hcyA9ICIsICIuam9pbihyZXBycGFpcnMpCi0gICAgcmV0dXJuICJ7JXN9IiAlIHdpdGhjb21tYXMKLQotZGVmIG1ha2VfYmFkX2ZkKCk6Ci0gICAgIiIiCi0gICAgQ3JlYXRlIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yIGJ5IG9wZW5pbmcgYW5kIGNsb3NpbmcgYSBmaWxlIGFuZCByZXR1cm4KLSAgICBpdHMgZmQuCi0gICAgIiIiCi0gICAgZmlsZSA9IG9wZW4oVEVTVEZOLCAid2IiKQotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGZpbGUuZmlsZW5vKCkKLSAgICBmaW5hbGx5OgotICAgICAgICBmaWxlLmNsb3NlKCkKLSAgICAgICAgdW5saW5rKFRFU1RGTikKLQotZGVmIGNoZWNrX3N5bnRheF9lcnJvcih0ZXN0Y2FzZSwgc3RhdGVtZW50KToKLSAgICB0ZXN0Y2FzZS5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGNvbXBpbGUsIHN0YXRlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJzx0ZXN0IHN0cmluZz4nLCAnZXhlYycpCi0KLWRlZiBvcGVuX3VybHJlc291cmNlKHVybCwgY2hlY2s9Tm9uZSk6Ci0gICAgaW1wb3J0IHVybHBhcnNlLCB1cmxsaWIyCi0KLSAgICBmaWxlbmFtZSA9IHVybHBhcnNlLnVybHBhcnNlKHVybClbMl0uc3BsaXQoJy8nKVstMV0gIyAnLyc6IGl0J3MgVVJMIQotCi0gICAgZm4gPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgImRhdGEiLCBmaWxlbmFtZSkKLQotICAgIGRlZiBjaGVja192YWxpZF9maWxlKGZuKToKLSAgICAgICAgZiA9IG9wZW4oZm4pCi0gICAgICAgIGlmIGNoZWNrIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gZgotICAgICAgICBlbGlmIGNoZWNrKGYpOgotICAgICAgICAgICAgZi5zZWVrKDApCi0gICAgICAgICAgICByZXR1cm4gZgotICAgICAgICBmLmNsb3NlKCkKLQotICAgIGlmIG9zLnBhdGguZXhpc3RzKGZuKToKLSAgICAgICAgZiA9IGNoZWNrX3ZhbGlkX2ZpbGUoZm4pCi0gICAgICAgIGlmIGYgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gZgotICAgICAgICB1bmxpbmsoZm4pCi0KLSAgICAjIFZlcmlmeSB0aGUgcmVxdWlyZW1lbnQgYmVmb3JlIGRvd25sb2FkaW5nIHRoZSBmaWxlCi0gICAgcmVxdWlyZXMoJ3VybGZldGNoJykKLQotICAgIHByaW50ID4+IGdldF9vcmlnaW5hbF9zdGRvdXQoKSwgJ1x0ZmV0Y2hpbmcgJXMgLi4uJyAlIHVybAotICAgIGYgPSB1cmxsaWIyLnVybG9wZW4odXJsLCB0aW1lb3V0PTE1KQotICAgIHRyeToKLSAgICAgICAgd2l0aCBvcGVuKGZuLCAid2IiKSBhcyBvdXQ6Ci0gICAgICAgICAgICBzID0gZi5yZWFkKCkKLSAgICAgICAgICAgIHdoaWxlIHM6Ci0gICAgICAgICAgICAgICAgb3V0LndyaXRlKHMpCi0gICAgICAgICAgICAgICAgcyA9IGYucmVhZCgpCi0gICAgZmluYWxseToKLSAgICAgICAgZi5jbG9zZSgpCi0KLSAgICBmID0gY2hlY2tfdmFsaWRfZmlsZShmbikKLSAgICBpZiBmIGlzIG5vdCBOb25lOgotICAgICAgICByZXR1cm4gZgotICAgIHJhaXNlIFRlc3RGYWlsZWQoJ2ludmFsaWQgcmVzb3VyY2UgIiVzIicgJSBmbikKLQotCi1jbGFzcyBXYXJuaW5nc1JlY29yZGVyKG9iamVjdCk6Ci0gICAgIiIiQ29udmVuaWVuY2Ugd3JhcHBlciBmb3IgdGhlIHdhcm5pbmdzIGxpc3QgcmV0dXJuZWQgb24KLSAgICAgICBlbnRyeSB0byB0aGUgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKSBjb250ZXh0IG1hbmFnZXIuCi0gICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHdhcm5pbmdzX2xpc3QpOgotICAgICAgICBzZWxmLl93YXJuaW5ncyA9IHdhcm5pbmdzX2xpc3QKLSAgICAgICAgc2VsZi5fbGFzdCA9IDAKLQotICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBhdHRyKToKLSAgICAgICAgaWYgbGVuKHNlbGYuX3dhcm5pbmdzKSA+IHNlbGYuX2xhc3Q6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLl93YXJuaW5nc1stMV0sIGF0dHIpCi0gICAgICAgIGVsaWYgYXR0ciBpbiB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZS5fV0FSTklOR19ERVRBSUxTOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVyIGhhcyBubyBhdHRyaWJ1dGUgJXIiICUgKHNlbGYsIGF0dHIpKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHdhcm5pbmdzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fd2FybmluZ3Nbc2VsZi5fbGFzdDpdCi0KLSAgICBkZWYgcmVzZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2xhc3QgPSBsZW4oc2VsZi5fd2FybmluZ3MpCi0KLQotZGVmIF9maWx0ZXJ3YXJuaW5ncyhmaWx0ZXJzLCBxdWlldD1GYWxzZSk6Ci0gICAgIiIiQ2F0Y2ggdGhlIHdhcm5pbmdzLCB0aGVuIGNoZWNrIGlmIGFsbCB0aGUgZXhwZWN0ZWQKLSAgICB3YXJuaW5ncyBoYXZlIGJlZW4gcmFpc2VkIGFuZCByZS1yYWlzZSB1bmV4cGVjdGVkIHdhcm5pbmdzLgotICAgIElmICdxdWlldCcgaXMgVHJ1ZSwgb25seSByZS1yYWlzZSB0aGUgdW5leHBlY3RlZCB3YXJuaW5ncy4KLSAgICAiIiIKLSAgICAjIENsZWFyIHRoZSB3YXJuaW5nIHJlZ2lzdHJ5IG9mIHRoZSBjYWxsaW5nIG1vZHVsZQotICAgICMgaW4gb3JkZXIgdG8gcmUtcmFpc2UgdGhlIHdhcm5pbmdzLgotICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgyKQotICAgIHJlZ2lzdHJ5ID0gZnJhbWUuZl9nbG9iYWxzLmdldCgnX193YXJuaW5ncmVnaXN0cnlfXycpCi0gICAgaWYgcmVnaXN0cnk6Ci0gICAgICAgIHJlZ2lzdHJ5LmNsZWFyKCkKLSAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgotICAgICAgICAjIFNldCBmaWx0ZXIgImFsd2F5cyIgdG8gcmVjb3JkIGFsbCB3YXJuaW5ncy4gIEJlY2F1c2UKLSAgICAgICAgIyB0ZXN0X3dhcm5pbmdzIHN3YXAgdGhlIG1vZHVsZSwgd2UgbmVlZCB0byBsb29rIHVwIGluCi0gICAgICAgICMgdGhlIHN5cy5tb2R1bGVzIGRpY3Rpb25hcnkuCi0gICAgICAgIHN5cy5tb2R1bGVzWyd3YXJuaW5ncyddLnNpbXBsZWZpbHRlcigiYWx3YXlzIikKLSAgICAgICAgeWllbGQgV2FybmluZ3NSZWNvcmRlcih3KQotICAgICMgRmlsdGVyIHRoZSByZWNvcmRlZCB3YXJuaW5ncwotICAgIHJlcmFpc2UgPSBbd2FybmluZy5tZXNzYWdlIGZvciB3YXJuaW5nIGluIHddCi0gICAgbWlzc2luZyA9IFtdCi0gICAgZm9yIG1zZywgY2F0IGluIGZpbHRlcnM6Ci0gICAgICAgIHNlZW4gPSBGYWxzZQotICAgICAgICBmb3IgZXhjIGluIHJlcmFpc2VbOl06Ci0gICAgICAgICAgICBtZXNzYWdlID0gc3RyKGV4YykKLSAgICAgICAgICAgICMgRmlsdGVyIG91dCB0aGUgbWF0Y2hpbmcgbWVzc2FnZXMKLSAgICAgICAgICAgIGlmIChyZS5tYXRjaChtc2csIG1lc3NhZ2UsIHJlLkkpIGFuZAotICAgICAgICAgICAgICAgIGlzc3ViY2xhc3MoZXhjLl9fY2xhc3NfXywgY2F0KSk6Ci0gICAgICAgICAgICAgICAgc2VlbiA9IFRydWUKLSAgICAgICAgICAgICAgICByZXJhaXNlLnJlbW92ZShleGMpCi0gICAgICAgIGlmIG5vdCBzZWVuIGFuZCBub3QgcXVpZXQ6Ci0gICAgICAgICAgICAjIFRoaXMgZmlsdGVyIGNhdWdodCBub3RoaW5nCi0gICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgobXNnLCBjYXQuX19uYW1lX18pKQotICAgIGlmIHJlcmFpc2U6Ci0gICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJ1bmhhbmRsZWQgd2FybmluZyAlciIgJSByZXJhaXNlWzBdKQotICAgIGlmIG1pc3Npbmc6Ci0gICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKCJmaWx0ZXIgKCVyLCAlcykgZGlkIG5vdCBjYXRjaCBhbnkgd2FybmluZyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nWzBdKQotCi0KLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgY2hlY2tfd2FybmluZ3MoKmZpbHRlcnMsICoqa3dhcmdzKToKLSAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gc2lsZW5jZSB3YXJuaW5ncy4KLQotICAgIEFjY2VwdCAyLXR1cGxlcyBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50czoKLSAgICAgICAgKCJtZXNzYWdlIHJlZ2V4cCIsIFdhcm5pbmdDYXRlZ29yeSkKLQotICAgIE9wdGlvbmFsIGFyZ3VtZW50OgotICAgICAtIGlmICdxdWlldCcgaXMgVHJ1ZSwgaXQgZG9lcyBub3QgZmFpbCBpZiBhIGZpbHRlciBjYXRjaGVzIG5vdGhpbmcKLSAgICAgICAgKGRlZmF1bHQgVHJ1ZSB3aXRob3V0IGFyZ3VtZW50LAotICAgICAgICAgZGVmYXVsdCBGYWxzZSBpZiBzb21lIGZpbHRlcnMgYXJlIGRlZmluZWQpCi0KLSAgICBXaXRob3V0IGFyZ3VtZW50LCBpdCBkZWZhdWx0cyB0bzoKLSAgICAgICAgY2hlY2tfd2FybmluZ3MoKCIiLCBXYXJuaW5nKSwgcXVpZXQ9VHJ1ZSkKLSAgICAiIiIKLSAgICBxdWlldCA9IGt3YXJncy5nZXQoJ3F1aWV0JykKLSAgICBpZiBub3QgZmlsdGVyczoKLSAgICAgICAgZmlsdGVycyA9ICgoIiIsIFdhcm5pbmcpLCkKLSAgICAgICAgIyBQcmVzZXJ2ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci0gICAgICAgIGlmIHF1aWV0IGlzIE5vbmU6Ci0gICAgICAgICAgICBxdWlldCA9IFRydWUKLSAgICByZXR1cm4gX2ZpbHRlcndhcm5pbmdzKGZpbHRlcnMsIHF1aWV0KQotCi0KLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgY2hlY2tfcHkza193YXJuaW5ncygqZmlsdGVycywgKiprd2FyZ3MpOgotICAgICIiIkNvbnRleHQgbWFuYWdlciB0byBzaWxlbmNlIHB5M2sgd2FybmluZ3MuCi0KLSAgICBBY2NlcHQgMi10dXBsZXMgYXMgcG9zaXRpb25hbCBhcmd1bWVudHM6Ci0gICAgICAgICgibWVzc2FnZSByZWdleHAiLCBXYXJuaW5nQ2F0ZWdvcnkpCi0KLSAgICBPcHRpb25hbCBhcmd1bWVudDoKLSAgICAgLSBpZiAncXVpZXQnIGlzIFRydWUsIGl0IGRvZXMgbm90IGZhaWwgaWYgYSBmaWx0ZXIgY2F0Y2hlcyBub3RoaW5nCi0gICAgICAgIChkZWZhdWx0IEZhbHNlKQotCi0gICAgV2l0aG91dCBhcmd1bWVudCwgaXQgZGVmYXVsdHMgdG86Ci0gICAgICAgIGNoZWNrX3B5M2tfd2FybmluZ3MoKCIiLCBEZXByZWNhdGlvbldhcm5pbmcpLCBxdWlldD1GYWxzZSkKLSAgICAiIiIKLSAgICBpZiBzeXMucHkza3dhcm5pbmc6Ci0gICAgICAgIGlmIG5vdCBmaWx0ZXJzOgotICAgICAgICAgICAgZmlsdGVycyA9ICgoIiIsIERlcHJlY2F0aW9uV2FybmluZyksKQotICAgIGVsc2U6Ci0gICAgICAgICMgSXQgc2hvdWxkIG5vdCByYWlzZSBhbnkgcHkzayB3YXJuaW5nCi0gICAgICAgIGZpbHRlcnMgPSAoKQotICAgIHJldHVybiBfZmlsdGVyd2FybmluZ3MoZmlsdGVycywga3dhcmdzLmdldCgncXVpZXQnKSkKLQotCi1jbGFzcyBDbGVhbkltcG9ydChvYmplY3QpOgotICAgICIiIkNvbnRleHQgbWFuYWdlciB0byBmb3JjZSBpbXBvcnQgdG8gcmV0dXJuIGEgbmV3IG1vZHVsZSByZWZlcmVuY2UuCi0KLSAgICBUaGlzIGlzIHVzZWZ1bCBmb3IgdGVzdGluZyBtb2R1bGUtbGV2ZWwgYmVoYXZpb3Vycywgc3VjaCBhcwotICAgIHRoZSBlbWlzc2lvbiBvZiBhIERlcHJlY2F0aW9uV2FybmluZyBvbiBpbXBvcnQuCi0KLSAgICBVc2UgbGlrZSB0aGlzOgotCi0gICAgICAgIHdpdGggQ2xlYW5JbXBvcnQoImZvbyIpOgotICAgICAgICAgICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoImZvbyIpICMgbmV3IHJlZmVyZW5jZQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICptb2R1bGVfbmFtZXMpOgotICAgICAgICBzZWxmLm9yaWdpbmFsX21vZHVsZXMgPSBzeXMubW9kdWxlcy5jb3B5KCkKLSAgICAgICAgZm9yIG1vZHVsZV9uYW1lIGluIG1vZHVsZV9uYW1lczoKLSAgICAgICAgICAgIGlmIG1vZHVsZV9uYW1lIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgIG1vZHVsZSA9IHN5cy5tb2R1bGVzW21vZHVsZV9uYW1lXQotICAgICAgICAgICAgICAgICMgSXQgaXMgcG9zc2libGUgdGhhdCBtb2R1bGVfbmFtZSBpcyBqdXN0IGFuIGFsaWFzIGZvcgotICAgICAgICAgICAgICAgICMgYW5vdGhlciBtb2R1bGUgKGUuZy4gc3R1YiBmb3IgbW9kdWxlcyByZW5hbWVkIGluIDMueCkuCi0gICAgICAgICAgICAgICAgIyBJbiB0aGF0IGNhc2UsIHdlIGFsc28gbmVlZCBkZWxldGUgdGhlIHJlYWwgbW9kdWxlIHRvIGNsZWFyCi0gICAgICAgICAgICAgICAgIyB0aGUgaW1wb3J0IGNhY2hlLgotICAgICAgICAgICAgICAgIGlmIG1vZHVsZS5fX25hbWVfXyAhPSBtb2R1bGVfbmFtZToKLSAgICAgICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW21vZHVsZS5fX25hbWVfX10KLSAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbbW9kdWxlX25hbWVdCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICppZ25vcmVfZXhjKToKLSAgICAgICAgc3lzLm1vZHVsZXMudXBkYXRlKHNlbGYub3JpZ2luYWxfbW9kdWxlcykKLQotCi1jbGFzcyBFbnZpcm9ubWVudFZhckd1YXJkKFVzZXJEaWN0LkRpY3RNaXhpbik6Ci0KLSAgICAiIiJDbGFzcyB0byBoZWxwIHByb3RlY3QgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHByb3Blcmx5LiAgQ2FuIGJlIHVzZWQgYXMKLSAgICBhIGNvbnRleHQgbWFuYWdlci4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fZW52aXJvbiA9IG9zLmVudmlyb24KLSAgICAgICAgc2VsZi5fY2hhbmdlZCA9IHt9Ci0KLSAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgZW52dmFyKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Vudmlyb25bZW52dmFyXQotCi0gICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGVudnZhciwgdmFsdWUpOgotICAgICAgICAjIFJlbWVtYmVyIHRoZSBpbml0aWFsIHZhbHVlIG9uIHRoZSBmaXJzdCBhY2Nlc3MKLSAgICAgICAgaWYgZW52dmFyIG5vdCBpbiBzZWxmLl9jaGFuZ2VkOgotICAgICAgICAgICAgc2VsZi5fY2hhbmdlZFtlbnZ2YXJdID0gc2VsZi5fZW52aXJvbi5nZXQoZW52dmFyKQotICAgICAgICBzZWxmLl9lbnZpcm9uW2VudnZhcl0gPSB2YWx1ZQotCi0gICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGVudnZhcik6Ci0gICAgICAgICMgUmVtZW1iZXIgdGhlIGluaXRpYWwgdmFsdWUgb24gdGhlIGZpcnN0IGFjY2VzcwotICAgICAgICBpZiBlbnZ2YXIgbm90IGluIHNlbGYuX2NoYW5nZWQ6Ci0gICAgICAgICAgICBzZWxmLl9jaGFuZ2VkW2VudnZhcl0gPSBzZWxmLl9lbnZpcm9uLmdldChlbnZ2YXIpCi0gICAgICAgIGlmIGVudnZhciBpbiBzZWxmLl9lbnZpcm9uOgotICAgICAgICAgICAgZGVsIHNlbGYuX2Vudmlyb25bZW52dmFyXQotCi0gICAgZGVmIGtleXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9lbnZpcm9uLmtleXMoKQotCi0gICAgZGVmIHNldChzZWxmLCBlbnZ2YXIsIHZhbHVlKToKLSAgICAgICAgc2VsZltlbnZ2YXJdID0gdmFsdWUKLQotICAgIGRlZiB1bnNldChzZWxmLCBlbnZ2YXIpOgotICAgICAgICBkZWwgc2VsZltlbnZ2YXJdCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICppZ25vcmVfZXhjKToKLSAgICAgICAgZm9yIChrLCB2KSBpbiBzZWxmLl9jaGFuZ2VkLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiB2IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgayBpbiBzZWxmLl9lbnZpcm9uOgotICAgICAgICAgICAgICAgICAgICBkZWwgc2VsZi5fZW52aXJvbltrXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl9lbnZpcm9uW2tdID0gdgotICAgICAgICBvcy5lbnZpcm9uID0gc2VsZi5fZW52aXJvbgotCi0KLWNsYXNzIERpcnNPblN5c1BhdGgob2JqZWN0KToKLSAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gdGVtcG9yYXJpbHkgYWRkIGRpcmVjdG9yaWVzIHRvIHN5cy5wYXRoLgotCi0gICAgVGhpcyBtYWtlcyBhIGNvcHkgb2Ygc3lzLnBhdGgsIGFwcGVuZHMgYW55IGRpcmVjdG9yaWVzIGdpdmVuCi0gICAgYXMgcG9zaXRpb25hbCBhcmd1bWVudHMsIHRoZW4gcmV2ZXJ0cyBzeXMucGF0aCB0byB0aGUgY29waWVkCi0gICAgc2V0dGluZ3Mgd2hlbiB0aGUgY29udGV4dCBlbmRzLgotCi0gICAgTm90ZSB0aGF0ICphbGwqIHN5cy5wYXRoIG1vZGlmaWNhdGlvbnMgaW4gdGhlIGJvZHkgb2YgdGhlCi0gICAgY29udGV4dCBtYW5hZ2VyLCBpbmNsdWRpbmcgcmVwbGFjZW1lbnQgb2YgdGhlIG9iamVjdCwKLSAgICB3aWxsIGJlIHJldmVydGVkIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsICpwYXRocyk6Ci0gICAgICAgIHNlbGYub3JpZ2luYWxfdmFsdWUgPSBzeXMucGF0aFs6XQotICAgICAgICBzZWxmLm9yaWdpbmFsX29iamVjdCA9IHN5cy5wYXRoCi0gICAgICAgIHN5cy5wYXRoLmV4dGVuZChwYXRocykKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmlnbm9yZV9leGMpOgotICAgICAgICBzeXMucGF0aCA9IHNlbGYub3JpZ2luYWxfb2JqZWN0Ci0gICAgICAgIHN5cy5wYXRoWzpdID0gc2VsZi5vcmlnaW5hbF92YWx1ZQotCi0KLWNsYXNzIFRyYW5zaWVudFJlc291cmNlKG9iamVjdCk6Ci0KLSAgICAiIiJSYWlzZSBSZXNvdXJjZURlbmllZCBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkIHdoaWxlIHRoZSBjb250ZXh0IG1hbmFnZXIKLSAgICBpcyBpbiBlZmZlY3QgdGhhdCBtYXRjaGVzIHRoZSBzcGVjaWZpZWQgZXhjZXB0aW9uIGFuZCBhdHRyaWJ1dGVzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4YywgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLmV4YyA9IGV4YwotICAgICAgICBzZWxmLmF0dHJzID0ga3dhcmdzCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsIHR5cGVfPU5vbmUsIHZhbHVlPU5vbmUsIHRyYWNlYmFjaz1Ob25lKToKLSAgICAgICAgIiIiSWYgdHlwZV8gaXMgYSBzdWJjbGFzcyBvZiBzZWxmLmV4YyBhbmQgdmFsdWUgaGFzIGF0dHJpYnV0ZXMgbWF0Y2hpbmcKLSAgICAgICAgc2VsZi5hdHRycywgcmFpc2UgUmVzb3VyY2VEZW5pZWQuICBPdGhlcndpc2UgbGV0IHRoZSBleGNlcHRpb24KLSAgICAgICAgcHJvcGFnYXRlIChpZiBhbnkpLiIiIgotICAgICAgICBpZiB0eXBlXyBpcyBub3QgTm9uZSBhbmQgaXNzdWJjbGFzcyhzZWxmLmV4YywgdHlwZV8pOgotICAgICAgICAgICAgZm9yIGF0dHIsIGF0dHJfdmFsdWUgaW4gc2VsZi5hdHRycy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cih2YWx1ZSwgYXR0cik6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgaWYgZ2V0YXR0cih2YWx1ZSwgYXR0cikgIT0gYXR0cl92YWx1ZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgUmVzb3VyY2VEZW5pZWQoImFuIG9wdGlvbmFsIHJlc291cmNlIGlzIG5vdCBhdmFpbGFibGUiKQotCi0KLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgdHJhbnNpZW50X2ludGVybmV0KHJlc291cmNlX25hbWUsIHRpbWVvdXQ9MzAuMCwgZXJybm9zPSgpKToKLSAgICAiIiJSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdGhhdCByYWlzZXMgUmVzb3VyY2VEZW5pZWQgd2hlbiB2YXJpb3VzIGlzc3VlcwotICAgIHdpdGggdGhlIEludGVybmV0IGNvbm5lY3Rpb24gbWFuaWZlc3QgdGhlbXNlbHZlcyBhcyBleGNlcHRpb25zLiIiIgotICAgIGRlZmF1bHRfZXJybm9zID0gWwotICAgICAgICAoJ0VDT05OUkVGVVNFRCcsIDExMSksCi0gICAgICAgICgnRUNPTk5SRVNFVCcsIDEwNCksCi0gICAgICAgICgnRUhPU1RVTlJFQUNIJywgMTEzKSwKLSAgICAgICAgKCdFTkVUVU5SRUFDSCcsIDEwMSksCi0gICAgICAgICgnRVRJTUVET1VUJywgMTEwKSwKLSAgICBdCi0gICAgZGVmYXVsdF9nYWlfZXJybm9zID0gWwotICAgICAgICAoJ0VBSV9BR0FJTicsIC0zKSwKLSAgICAgICAgKCdFQUlfRkFJTCcsIC00KSwKLSAgICAgICAgKCdFQUlfTk9OQU1FJywgLTIpLAotICAgICAgICAoJ0VBSV9OT0RBVEEnLCAtNSksCi0gICAgICAgICMgV2luZG93cyBkZWZpbmVzIEVBSV9OT0RBVEEgYXMgMTEwMDEgYnV0IGlkaW90aWMgZ2V0YWRkcmluZm8oKQotICAgICAgICAjIGltcGxlbWVudGF0aW9uIGFjdHVhbGx5IHJldHVybnMgV1NBTk9fREFUQSBpLmUuIDExMDA0LgotICAgICAgICAoJ1dTQU5PX0RBVEEnLCAxMTAwNCksCi0gICAgXQotCi0gICAgZGVuaWVkID0gUmVzb3VyY2VEZW5pZWQoIlJlc291cmNlICclcycgaXMgbm90IGF2YWlsYWJsZSIgJSByZXNvdXJjZV9uYW1lKQotICAgIGNhcHR1cmVkX2Vycm5vcyA9IGVycm5vcwotICAgIGdhaV9lcnJub3MgPSBbXQotICAgIGlmIG5vdCBjYXB0dXJlZF9lcnJub3M6Ci0gICAgICAgIGNhcHR1cmVkX2Vycm5vcyA9IFtnZXRhdHRyKGVycm5vLCBuYW1lLCBudW0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKG5hbWUsIG51bSkgaW4gZGVmYXVsdF9lcnJub3NdCi0gICAgICAgIGdhaV9lcnJub3MgPSBbZ2V0YXR0cihzb2NrZXQsIG5hbWUsIG51bSkKLSAgICAgICAgICAgICAgICAgICAgICBmb3IgKG5hbWUsIG51bSkgaW4gZGVmYXVsdF9nYWlfZXJybm9zXQotCi0gICAgZGVmIGZpbHRlcl9lcnJvcihlcnIpOgotICAgICAgICBuID0gZ2V0YXR0cihlcnIsICdlcnJubycsIE5vbmUpCi0gICAgICAgIGlmIChpc2luc3RhbmNlKGVyciwgc29ja2V0LnRpbWVvdXQpIG9yCi0gICAgICAgICAgICAoaXNpbnN0YW5jZShlcnIsIHNvY2tldC5nYWllcnJvcikgYW5kIG4gaW4gZ2FpX2Vycm5vcykgb3IKLSAgICAgICAgICAgIG4gaW4gY2FwdHVyZWRfZXJybm9zKToKLSAgICAgICAgICAgIGlmIG5vdCB2ZXJib3NlOgotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZGVuaWVkLmFyZ3NbMF0gKyAiXG4iKQotICAgICAgICAgICAgcmFpc2UgZGVuaWVkCi0KLSAgICBvbGRfdGltZW91dCA9IHNvY2tldC5nZXRkZWZhdWx0dGltZW91dCgpCi0gICAgdHJ5OgotICAgICAgICBpZiB0aW1lb3V0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KHRpbWVvdXQpCi0gICAgICAgIHlpZWxkCi0gICAgZXhjZXB0IElPRXJyb3IgYXMgZXJyOgotICAgICAgICAjIHVybGxpYiBjYW4gd3JhcCBvcmlnaW5hbCBzb2NrZXQgZXJyb3JzIG11bHRpcGxlIHRpbWVzICghKSwgd2UgbXVzdAotICAgICAgICAjIHVud3JhcCB0byBnZXQgYXQgdGhlIG9yaWdpbmFsIGVycm9yLgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgYSA9IGVyci5hcmdzCi0gICAgICAgICAgICBpZiBsZW4oYSkgPj0gMSBhbmQgaXNpbnN0YW5jZShhWzBdLCBJT0Vycm9yKToKLSAgICAgICAgICAgICAgICBlcnIgPSBhWzBdCi0gICAgICAgICAgICAjIFRoZSBlcnJvciBjYW4gYWxzbyBiZSB3cmFwcGVkIGFzIGFyZ3NbMV06Ci0gICAgICAgICAgICAjICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgotICAgICAgICAgICAgIyAgICAgICAgcmFpc2UgSU9FcnJvcignc29ja2V0IGVycm9yJywgbXNnKS53aXRoX3RyYWNlYmFjayhzeXMuZXhjX2luZm8oKVsyXSkKLSAgICAgICAgICAgIGVsaWYgbGVuKGEpID49IDIgYW5kIGlzaW5zdGFuY2UoYVsxXSwgSU9FcnJvcik6Ci0gICAgICAgICAgICAgICAgZXJyID0gYVsxXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBmaWx0ZXJfZXJyb3IoZXJyKQotICAgICAgICByYWlzZQotICAgICMgWFhYIHNob3VsZCB3ZSBjYXRjaCBnZW5lcmljIGV4Y2VwdGlvbnMgYW5kIGxvb2sgZm9yIHRoZWlyCi0gICAgIyBfX2NhdXNlX18gb3IgX19jb250ZXh0X18/Ci0gICAgZmluYWxseToKLSAgICAgICAgc29ja2V0LnNldGRlZmF1bHR0aW1lb3V0KG9sZF90aW1lb3V0KQotCi0KLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgY2FwdHVyZWRfb3V0cHV0KHN0cmVhbV9uYW1lKToKLSAgICAiIiJSZXR1cm4gYSBjb250ZXh0IG1hbmFnZXIgdXNlZCBieSBjYXB0dXJlZF9zdGRvdXQgYW5kIGNhcHR1cmVkX3N0ZGluCi0gICAgdGhhdCB0ZW1wb3JhcmlseSByZXBsYWNlcyB0aGUgc3lzIHN0cmVhbSAqc3RyZWFtX25hbWUqIHdpdGggYSBTdHJpbmdJTy4iIiIKLSAgICBpbXBvcnQgU3RyaW5nSU8KLSAgICBvcmlnX3N0ZG91dCA9IGdldGF0dHIoc3lzLCBzdHJlYW1fbmFtZSkKLSAgICBzZXRhdHRyKHN5cywgc3RyZWFtX25hbWUsIFN0cmluZ0lPLlN0cmluZ0lPKCkpCi0gICAgdHJ5OgotICAgICAgICB5aWVsZCBnZXRhdHRyKHN5cywgc3RyZWFtX25hbWUpCi0gICAgZmluYWxseToKLSAgICAgICAgc2V0YXR0cihzeXMsIHN0cmVhbV9uYW1lLCBvcmlnX3N0ZG91dCkKLQotZGVmIGNhcHR1cmVkX3N0ZG91dCgpOgotICAgICIiIkNhcHR1cmUgdGhlIG91dHB1dCBvZiBzeXMuc3Rkb3V0OgotCi0gICAgICAgd2l0aCBjYXB0dXJlZF9zdGRvdXQoKSBhcyBzOgotICAgICAgICAgICBwcmludCAiaGVsbG8iCi0gICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLmdldHZhbHVlKCksICJoZWxsbyIpCi0gICAgIiIiCi0gICAgcmV0dXJuIGNhcHR1cmVkX291dHB1dCgic3Rkb3V0IikKLQotZGVmIGNhcHR1cmVkX3N0ZGVycigpOgotICAgIHJldHVybiBjYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpCi0KLWRlZiBjYXB0dXJlZF9zdGRpbigpOgotICAgIHJldHVybiBjYXB0dXJlZF9vdXRwdXQoInN0ZGluIikKLQotZGVmIGdjX2NvbGxlY3QoKToKLSAgICAiIiJGb3JjZSBhcyBtYW55IG9iamVjdHMgYXMgcG9zc2libGUgdG8gYmUgY29sbGVjdGVkLgotCi0gICAgSW4gbm9uLUNQeXRob24gaW1wbGVtZW50YXRpb25zIG9mIFB5dGhvbiwgdGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aW1lbHkKLSAgICBkZWFsbG9jYXRpb24gaXMgbm90IGd1YXJhbnRlZWQgYnkgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLiAgKEV2ZW4gaW4gQ1B5dGhvbgotICAgIHRoaXMgY2FuIGJlIHRoZSBjYXNlIGluIGNhc2Ugb2YgcmVmZXJlbmNlIGN5Y2xlcy4pICBUaGlzIG1lYW5zIHRoYXQgX19kZWxfXwotICAgIG1ldGhvZHMgbWF5IGJlIGNhbGxlZCBsYXRlciB0aGFuIGV4cGVjdGVkIGFuZCB3ZWFrcmVmcyBtYXkgcmVtYWluIGFsaXZlIGZvcgotICAgIGxvbmdlciB0aGFuIGV4cGVjdGVkLiAgVGhpcyBmdW5jdGlvbiB0cmllcyBpdHMgYmVzdCB0byBmb3JjZSBhbGwgZ2FyYmFnZQotICAgIG9iamVjdHMgdG8gZGlzYXBwZWFyLgotICAgICIiIgotICAgIGdjLmNvbGxlY3QoKQotICAgIGlmIGlzX2p5dGhvbjoKLSAgICAgICAgdGltZS5zbGVlcCgwLjEpCi0gICAgZ2MuY29sbGVjdCgpCi0gICAgZ2MuY29sbGVjdCgpCi0KLQotX2hlYWRlciA9ICcyUCcKLWlmIGhhc2F0dHIoc3lzLCAiZ2V0dG90YWxyZWZjb3VudCIpOgotICAgIF9oZWFkZXIgPSAnMlAnICsgX2hlYWRlcgotX3ZoZWFkZXIgPSBfaGVhZGVyICsgJ1AnCi0KLWRlZiBjYWxjb2Jqc2l6ZShmbXQpOgotICAgIHJldHVybiBzdHJ1Y3QuY2FsY3NpemUoX2hlYWRlciArIGZtdCArICcwUCcpCi0KLWRlZiBjYWxjdm9ianNpemUoZm10KToKLSAgICByZXR1cm4gc3RydWN0LmNhbGNzaXplKF92aGVhZGVyICsgZm10ICsgJzBQJykKLQotCi1fVFBGTEFHU19IQVZFX0dDID0gMTw8MTQKLV9UUEZMQUdTX0hFQVBUWVBFID0gMTw8OQotCi1kZWYgY2hlY2tfc2l6ZW9mKHRlc3QsIG8sIHNpemUpOgotICAgIGltcG9ydCBfdGVzdGNhcGkKLSAgICByZXN1bHQgPSBzeXMuZ2V0c2l6ZW9mKG8pCi0gICAgIyBhZGQgR0MgaGVhZGVyIHNpemUKLSAgICBpZiAoKHR5cGUobykgPT0gdHlwZSkgYW5kIChvLl9fZmxhZ3NfXyAmIF9UUEZMQUdTX0hFQVBUWVBFKSBvclwKLSAgICAgICAgKCh0eXBlKG8pICE9IHR5cGUpIGFuZCAodHlwZShvKS5fX2ZsYWdzX18gJiBfVFBGTEFHU19IQVZFX0dDKSkpOgotICAgICAgICBzaXplICs9IF90ZXN0Y2FwaS5TSVpFT0ZfUFlHQ19IRUFECi0gICAgbXNnID0gJ3dyb25nIHNpemUgZm9yICVzOiBnb3QgJWQsIGV4cGVjdGVkICVkJyBcCi0gICAgICAgICAgICAlICh0eXBlKG8pLCByZXN1bHQsIHNpemUpCi0gICAgdGVzdC5hc3NlcnRFcXVhbChyZXN1bHQsIHNpemUsIG1zZykKLQotCi0jPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSMgRGVjb3JhdG9yIGZvciBydW5uaW5nIGEgZnVuY3Rpb24gaW4gYSBkaWZmZXJlbnQgbG9jYWxlLCBjb3JyZWN0bHkgcmVzZXR0aW5nCi0jIGl0IGFmdGVyd2FyZHMuCi0KLWRlZiBydW5fd2l0aF9sb2NhbGUoY2F0c3RyLCAqbG9jYWxlcyk6Ci0gICAgZGVmIGRlY29yYXRvcihmdW5jKToKLSAgICAgICAgZGVmIGlubmVyKCphcmdzLCAqKmt3ZHMpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGltcG9ydCBsb2NhbGUKLSAgICAgICAgICAgICAgICBjYXRlZ29yeSA9IGdldGF0dHIobG9jYWxlLCBjYXRzdHIpCi0gICAgICAgICAgICAgICAgb3JpZ19sb2NhbGUgPSBsb2NhbGUuc2V0bG9jYWxlKGNhdGVnb3J5KQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICMgaWYgdGhlIHRlc3QgYXV0aG9yIGdpdmVzIHVzIGFuIGludmFsaWQgY2F0ZWdvcnkgc3RyaW5nCi0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAjIGNhbm5vdCByZXRyaWV2ZSBvcmlnaW5hbCBsb2NhbGUsIHNvIGRvIG5vdGhpbmcKLSAgICAgICAgICAgICAgICBsb2NhbGUgPSBvcmlnX2xvY2FsZSA9IE5vbmUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZm9yIGxvYyBpbiBsb2NhbGVzOgotICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGNhdGVnb3J5LCBsb2MpCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgICAgICMgbm93IHJ1biB0aGUgZnVuY3Rpb24sIHJlc2V0dGluZyB0aGUgbG9jYWxlIG9uIGV4Y2VwdGlvbnMKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprd2RzKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBpZiBsb2NhbGUgYW5kIG9yaWdfbG9jYWxlOgotICAgICAgICAgICAgICAgICAgICBsb2NhbGUuc2V0bG9jYWxlKGNhdGVnb3J5LCBvcmlnX2xvY2FsZSkKLSAgICAgICAgaW5uZXIuZnVuY19uYW1lID0gZnVuYy5mdW5jX25hbWUKLSAgICAgICAgaW5uZXIuX19kb2NfXyA9IGZ1bmMuX19kb2NfXwotICAgICAgICByZXR1cm4gaW5uZXIKLSAgICByZXR1cm4gZGVjb3JhdG9yCi0KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBEZWNvcmF0b3IgZm9yIHJ1bm5pbmcgYSBmdW5jdGlvbiBpbiBhIHNwZWNpZmljIHRpbWV6b25lLCBjb3JyZWN0bHkKLSMgcmVzZXR0aW5nIGl0IGFmdGVyd2FyZHMuCi0KLWRlZiBydW5fd2l0aF90eih0eik6Ci0gICAgZGVmIGRlY29yYXRvcihmdW5jKToKLSAgICAgICAgZGVmIGlubmVyKCphcmdzLCAqKmt3ZHMpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHR6c2V0ID0gdGltZS50enNldAotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0enNldCByZXF1aXJlZCIpCi0gICAgICAgICAgICBpZiAnVFonIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICAgICAgb3JpZ190eiA9IG9zLmVudmlyb25bJ1RaJ10KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3JpZ190eiA9IE5vbmUKLSAgICAgICAgICAgIG9zLmVudmlyb25bJ1RaJ10gPSB0egotICAgICAgICAgICAgdHpzZXQoKQotCi0gICAgICAgICAgICAjIG5vdyBydW4gdGhlIGZ1bmN0aW9uLCByZXNldHRpbmcgdGhlIHR6IG9uIGV4Y2VwdGlvbnMKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gZnVuYygqYXJncywgKiprd2RzKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBpZiBvcmlnX3R6IGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBvcy5lbnZpcm9uWydUWiddCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvblsnVFonXSA9IG9yaWdfdHoKLSAgICAgICAgICAgICAgICB0aW1lLnR6c2V0KCkKLQotICAgICAgICBpbm5lci5fX25hbWVfXyA9IGZ1bmMuX19uYW1lX18KLSAgICAgICAgaW5uZXIuX19kb2NfXyA9IGZ1bmMuX19kb2NfXwotICAgICAgICByZXR1cm4gaW5uZXIKLSAgICByZXR1cm4gZGVjb3JhdG9yCi0KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBCaWctbWVtb3J5LXRlc3Qgc3VwcG9ydC4gU2VwYXJhdGUgZnJvbSAncmVzb3VyY2VzJyBiZWNhdXNlIG1lbW9yeSB1c2Ugc2hvdWxkIGJlIGNvbmZpZ3VyYWJsZS4KLQotIyBTb21lIGhhbmR5IHNob3J0aGFuZHMuIE5vdGUgdGhhdCB0aGVzZSBhcmUgdXNlZCBmb3IgYnl0ZS1saW1pdHMgYXMgd2VsbAotIyBhcyBzaXplLWxpbWl0cywgaW4gdGhlIHZhcmlvdXMgYmlnbWVtIHRlc3RzCi1fMU0gPSAxMDI0KjEwMjQKLV8xRyA9IDEwMjQgKiBfMU0KLV8yRyA9IDIgKiBfMUcKLV80RyA9IDQgKiBfMUcKLQotTUFYX1B5X3NzaXplX3QgPSBzeXMubWF4c2l6ZQotCi1kZWYgc2V0X21lbWxpbWl0KGxpbWl0KToKLSAgICBnbG9iYWwgbWF4X21lbXVzZQotICAgIGdsb2JhbCByZWFsX21heF9tZW11c2UKLSAgICBzaXplcyA9IHsKLSAgICAgICAgJ2snOiAxMDI0LAotICAgICAgICAnbSc6IF8xTSwKLSAgICAgICAgJ2cnOiBfMUcsCi0gICAgICAgICd0JzogMTAyNCpfMUcsCi0gICAgfQotICAgIG0gPSByZS5tYXRjaChyJyhcZCsoXC5cZCspPykgKEt8TXxHfFQpYj8kJywgbGltaXQsCi0gICAgICAgICAgICAgICAgIHJlLklHTk9SRUNBU0UgfCByZS5WRVJCT1NFKQotICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCBtZW1vcnkgbGltaXQgJXInICUgKGxpbWl0LCkpCi0gICAgbWVtbGltaXQgPSBpbnQoZmxvYXQobS5ncm91cCgxKSkgKiBzaXplc1ttLmdyb3VwKDMpLmxvd2VyKCldKQotICAgIHJlYWxfbWF4X21lbXVzZSA9IG1lbWxpbWl0Ci0gICAgaWYgbWVtbGltaXQgPiBNQVhfUHlfc3NpemVfdDoKLSAgICAgICAgbWVtbGltaXQgPSBNQVhfUHlfc3NpemVfdAotICAgIGlmIG1lbWxpbWl0IDwgXzJHIC0gMToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTWVtb3J5IGxpbWl0ICVyIHRvbyBsb3cgdG8gYmUgdXNlZnVsJyAlIChsaW1pdCwpKQotICAgIG1heF9tZW11c2UgPSBtZW1saW1pdAotCi1kZWYgYmlnbWVtdGVzdChtaW5zaXplLCBtZW11c2UsIG92ZXJoZWFkPTUqXzFNKToKLSAgICAiIiJEZWNvcmF0b3IgZm9yIGJpZ21lbSB0ZXN0cy4KLQotICAgICdtaW5zaXplJyBpcyB0aGUgbWluaW11bSB1c2VmdWwgc2l6ZSBmb3IgdGhlIHRlc3QgKGluIGFyYml0cmFyeSwKLSAgICB0ZXN0LWludGVycHJldGVkIHVuaXRzLikgJ21lbXVzZScgaXMgdGhlIG51bWJlciBvZiAnYnl0ZXMgcGVyIHNpemUnIGZvcgotICAgIHRoZSB0ZXN0LCBvciBhIGdvb2QgZXN0aW1hdGUgb2YgaXQuICdvdmVyaGVhZCcgc3BlY2lmaWVzIGZpeGVkIG92ZXJoZWFkLAotICAgIGluZGVwZW5kZW50IG9mIHRoZSB0ZXN0c2l6ZSwgYW5kIGRlZmF1bHRzIHRvIDVNYi4KLQotICAgIFRoZSBkZWNvcmF0b3IgdHJpZXMgdG8gZ3Vlc3MgYSBnb29kIHZhbHVlIGZvciAnc2l6ZScgYW5kIHBhc3NlcyBpdCB0bwotICAgIHRoZSBkZWNvcmF0ZWQgdGVzdCBmdW5jdGlvbi4gSWYgbWluc2l6ZSAqIG1lbXVzZSBpcyBtb3JlIHRoYW4gdGhlCi0gICAgYWxsb3dlZCBtZW1vcnkgdXNlIChhcyBkZWZpbmVkIGJ5IG1heF9tZW11c2UpLCB0aGUgdGVzdCBpcyBza2lwcGVkLgotICAgIE90aGVyd2lzZSwgbWluc2l6ZSBpcyBhZGp1c3RlZCB1cHdhcmQgdG8gdXNlIHVwIHRvIG1heF9tZW11c2UuCi0gICAgIiIiCi0gICAgZGVmIGRlY29yYXRvcihmKToKLSAgICAgICAgZGVmIHdyYXBwZXIoc2VsZik6Ci0gICAgICAgICAgICBpZiBub3QgbWF4X21lbXVzZToKLSAgICAgICAgICAgICAgICAjIElmIG1heF9tZW11c2UgaXMgMCAodGhlIGRlZmF1bHQpLAotICAgICAgICAgICAgICAgICMgd2Ugc3RpbGwgd2FudCB0byBydW4gdGhlIHRlc3RzIHdpdGggc2l6ZSBzZXQgdG8gYSBmZXcga2IsCi0gICAgICAgICAgICAgICAgIyB0byBtYWtlIHN1cmUgdGhleSB3b3JrLiBXZSBzdGlsbCB3YW50IHRvIGF2b2lkIHVzaW5nCi0gICAgICAgICAgICAgICAgIyB0b28gbXVjaCBtZW1vcnksIHRob3VnaCwgYnV0IHdlIGRvIHRoYXQgbm9pc2lseS4KLSAgICAgICAgICAgICAgICBtYXhzaXplID0gNTE0NwotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF4c2l6ZSAqIG1lbXVzZSArIG92ZXJoZWFkID4gMjAgKiBfMU0pCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG1heHNpemUgPSBpbnQoKG1heF9tZW11c2UgLSBvdmVyaGVhZCkgLyBtZW11c2UpCi0gICAgICAgICAgICAgICAgaWYgbWF4c2l6ZSA8IG1pbnNpemU6Ci0gICAgICAgICAgICAgICAgICAgICMgUmVhbGx5IG91Z2h0IHRvIHByaW50ICd0ZXN0IHNraXBwZWQnIG9yIHNvbWV0aGluZwotICAgICAgICAgICAgICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiU2tpcHBpbmcgJXMgYmVjYXVzZSBvZiBtZW1vcnkgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uc3RyYWludFxuIiAlIChmLl9fbmFtZV9fLCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgICMgVHJ5IHRvIGtlZXAgc29tZSBicmVhdGhpbmcgcm9vbSBpbiBtZW1vcnkgdXNlCi0gICAgICAgICAgICAgICAgbWF4c2l6ZSA9IG1heChtYXhzaXplIC0gNTAgKiBfMU0sIG1pbnNpemUpCi0gICAgICAgICAgICByZXR1cm4gZihzZWxmLCBtYXhzaXplKQotICAgICAgICB3cmFwcGVyLm1pbnNpemUgPSBtaW5zaXplCi0gICAgICAgIHdyYXBwZXIubWVtdXNlID0gbWVtdXNlCi0gICAgICAgIHdyYXBwZXIub3ZlcmhlYWQgPSBvdmVyaGVhZAotICAgICAgICByZXR1cm4gd3JhcHBlcgotICAgIHJldHVybiBkZWNvcmF0b3IKLQotZGVmIHByZWNpc2lvbmJpZ21lbXRlc3Qoc2l6ZSwgbWVtdXNlLCBvdmVyaGVhZD01Kl8xTSwgZHJ5X3J1bj1UcnVlKToKLSAgICBkZWYgZGVjb3JhdG9yKGYpOgotICAgICAgICBkZWYgd3JhcHBlcihzZWxmKToKLSAgICAgICAgICAgIGlmIG5vdCByZWFsX21heF9tZW11c2U6Ci0gICAgICAgICAgICAgICAgbWF4c2l6ZSA9IDUxNDcKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbWF4c2l6ZSA9IHNpemUKLQotICAgICAgICAgICAgaWYgKChyZWFsX21heF9tZW11c2Ugb3Igbm90IGRyeV9ydW4pCi0gICAgICAgICAgICAgICAgYW5kIHJlYWxfbWF4X21lbXVzZSA8IG1heHNpemUgKiBtZW11c2UpOgotICAgICAgICAgICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlNraXBwaW5nICVzIGJlY2F1c2Ugb2YgbWVtb3J5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uc3RyYWludFxuIiAlIChmLl9fbmFtZV9fLCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIHJldHVybiBmKHNlbGYsIG1heHNpemUpCi0gICAgICAgIHdyYXBwZXIuc2l6ZSA9IHNpemUKLSAgICAgICAgd3JhcHBlci5tZW11c2UgPSBtZW11c2UKLSAgICAgICAgd3JhcHBlci5vdmVyaGVhZCA9IG92ZXJoZWFkCi0gICAgICAgIHJldHVybiB3cmFwcGVyCi0gICAgcmV0dXJuIGRlY29yYXRvcgotCi1kZWYgYmlnYWRkcnNwYWNldGVzdChmKToKLSAgICAiIiJEZWNvcmF0b3IgZm9yIHRlc3RzIHRoYXQgZmlsbCB0aGUgYWRkcmVzcyBzcGFjZS4iIiIKLSAgICBkZWYgd3JhcHBlcihzZWxmKToKLSAgICAgICAgaWYgbWF4X21lbXVzZSA8IE1BWF9QeV9zc2l6ZV90OgotICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJTa2lwcGluZyAlcyBiZWNhdXNlIG9mIG1lbW9yeSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29uc3RyYWludFxuIiAlIChmLl9fbmFtZV9fLCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gZihzZWxmKQotICAgIHJldHVybiB3cmFwcGVyCi0KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyB1bml0dGVzdCBpbnRlZ3JhdGlvbi4KLQotY2xhc3MgQmFzaWNUZXN0UnVubmVyOgotICAgIGRlZiBydW4oc2VsZiwgdGVzdCk6Ci0gICAgICAgIHJlc3VsdCA9IHVuaXR0ZXN0LlRlc3RSZXN1bHQoKQotICAgICAgICB0ZXN0KHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAotCi1kZWYgX2lkKG9iaik6Ci0gICAgcmV0dXJuIG9iagotCi1kZWYgcmVxdWlyZXNfcmVzb3VyY2UocmVzb3VyY2UpOgotICAgIGlmIHJlc291cmNlID09ICdndWknIGFuZCBub3QgX2lzX2d1aV9hdmFpbGFibGUoKToKLSAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXAoX2lzX2d1aV9hdmFpbGFibGUucmVhc29uKQotICAgIGlmIGlzX3Jlc291cmNlX2VuYWJsZWQocmVzb3VyY2UpOgotICAgICAgICByZXR1cm4gX2lkCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHVuaXR0ZXN0LnNraXAoInJlc291cmNlIHswIXJ9IGlzIG5vdCBlbmFibGVkIi5mb3JtYXQocmVzb3VyY2UpKQotCi1kZWYgY3B5dGhvbl9vbmx5KHRlc3QpOgotICAgICIiIgotICAgIERlY29yYXRvciBmb3IgdGVzdHMgb25seSBhcHBsaWNhYmxlIG9uIENQeXRob24uCi0gICAgIiIiCi0gICAgcmV0dXJuIGltcGxfZGV0YWlsKGNweXRob249VHJ1ZSkodGVzdCkKLQotZGVmIGltcGxfZGV0YWlsKG1zZz1Ob25lLCAqKmd1YXJkcyk6Ci0gICAgaWYgY2hlY2tfaW1wbF9kZXRhaWwoKipndWFyZHMpOgotICAgICAgICByZXR1cm4gX2lkCi0gICAgaWYgbXNnIGlzIE5vbmU6Ci0gICAgICAgIGd1YXJkbmFtZXMsIGRlZmF1bHQgPSBfcGFyc2VfZ3VhcmRzKGd1YXJkcykKLSAgICAgICAgaWYgZGVmYXVsdDoKLSAgICAgICAgICAgIG1zZyA9ICJpbXBsZW1lbnRhdGlvbiBkZXRhaWwgbm90IGF2YWlsYWJsZSBvbiB7MH0iCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtc2cgPSAiaW1wbGVtZW50YXRpb24gZGV0YWlsIHNwZWNpZmljIHRvIHswfSIKLSAgICAgICAgZ3VhcmRuYW1lcyA9IHNvcnRlZChndWFyZG5hbWVzLmtleXMoKSkKLSAgICAgICAgbXNnID0gbXNnLmZvcm1hdCgnIG9yICcuam9pbihndWFyZG5hbWVzKSkKLSAgICByZXR1cm4gdW5pdHRlc3Quc2tpcChtc2cpCi0KLWRlZiBfcGFyc2VfZ3VhcmRzKGd1YXJkcyk6Ci0gICAgIyBSZXR1cm5zIGEgdHVwbGUgKHtwbGF0Zm9ybV9uYW1lOiBydW5fbWV9LCBkZWZhdWx0X3ZhbHVlKQotICAgIGlmIG5vdCBndWFyZHM6Ci0gICAgICAgIHJldHVybiAoeydjcHl0aG9uJzogVHJ1ZX0sIEZhbHNlKQotICAgIGlzX3RydWUgPSBndWFyZHMudmFsdWVzKClbMF0KLSAgICBhc3NlcnQgZ3VhcmRzLnZhbHVlcygpID09IFtpc190cnVlXSAqIGxlbihndWFyZHMpICAgIyBhbGwgVHJ1ZSBvciBhbGwgRmFsc2UKLSAgICByZXR1cm4gKGd1YXJkcywgbm90IGlzX3RydWUpCi0KLSMgVXNlIHRoZSBmb2xsb3dpbmcgY2hlY2sgdG8gZ3VhcmQgQ1B5dGhvbidzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIHRlc3RzIC0tCi0jIG9yIHRvIHJ1biB0aGVtIG9ubHkgb24gdGhlIGltcGxlbWVudGF0aW9uKHMpIGd1YXJkZWQgYnkgdGhlIGFyZ3VtZW50cy4KLWRlZiBjaGVja19pbXBsX2RldGFpbCgqKmd1YXJkcyk6Ci0gICAgIiIiVGhpcyBmdW5jdGlvbiByZXR1cm5zIFRydWUgb3IgRmFsc2UgZGVwZW5kaW5nIG9uIHRoZSBob3N0IHBsYXRmb3JtLgotICAgICAgIEV4YW1wbGVzOgotICAgICAgICAgIGlmIGNoZWNrX2ltcGxfZGV0YWlsKCk6ICAgICAgICAgICAgICAgIyBvbmx5IG9uIENQeXRob24gKGRlZmF1bHQpCi0gICAgICAgICAgaWYgY2hlY2tfaW1wbF9kZXRhaWwoanl0aG9uPVRydWUpOiAgICAjIG9ubHkgb24gSnl0aG9uCi0gICAgICAgICAgaWYgY2hlY2tfaW1wbF9kZXRhaWwoY3B5dGhvbj1GYWxzZSk6ICAjIGV2ZXJ5d2hlcmUgZXhjZXB0IG9uIENQeXRob24KLSAgICAiIiIKLSAgICBndWFyZHMsIGRlZmF1bHQgPSBfcGFyc2VfZ3VhcmRzKGd1YXJkcykKLSAgICByZXR1cm4gZ3VhcmRzLmdldChwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKS5sb3dlcigpLCBkZWZhdWx0KQotCi0KLQotZGVmIF9ydW5fc3VpdGUoc3VpdGUpOgotICAgICIiIlJ1biB0ZXN0cyBmcm9tIGEgdW5pdHRlc3QuVGVzdFN1aXRlLWRlcml2ZWQgY2xhc3MuIiIiCi0gICAgaWYgdmVyYm9zZToKLSAgICAgICAgcnVubmVyID0gdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIoc3lzLnN0ZG91dCwgdmVyYm9zaXR5PTIpCi0gICAgZWxzZToKLSAgICAgICAgcnVubmVyID0gQmFzaWNUZXN0UnVubmVyKCkKLQotICAgIHJlc3VsdCA9IHJ1bm5lci5ydW4oc3VpdGUpCi0gICAgaWYgbm90IHJlc3VsdC53YXNTdWNjZXNzZnVsKCk6Ci0gICAgICAgIGlmIGxlbihyZXN1bHQuZXJyb3JzKSA9PSAxIGFuZCBub3QgcmVzdWx0LmZhaWx1cmVzOgotICAgICAgICAgICAgZXJyID0gcmVzdWx0LmVycm9yc1swXVsxXQotICAgICAgICBlbGlmIGxlbihyZXN1bHQuZmFpbHVyZXMpID09IDEgYW5kIG5vdCByZXN1bHQuZXJyb3JzOgotICAgICAgICAgICAgZXJyID0gcmVzdWx0LmZhaWx1cmVzWzBdWzFdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBlcnIgPSAibXVsdGlwbGUgZXJyb3JzIG9jY3VycmVkIgotICAgICAgICAgICAgaWYgbm90IHZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgZXJyICs9ICI7IHJ1biBpbiB2ZXJib3NlIG1vZGUgZm9yIGRldGFpbHMiCi0gICAgICAgIHJhaXNlIFRlc3RGYWlsZWQoZXJyKQotCi0KLWRlZiBydW5fdW5pdHRlc3QoKmNsYXNzZXMpOgotICAgICIiIlJ1biB0ZXN0cyBmcm9tIHVuaXR0ZXN0LlRlc3RDYXNlLWRlcml2ZWQgY2xhc3Nlcy4iIiIKLSAgICB2YWxpZF90eXBlcyA9ICh1bml0dGVzdC5UZXN0U3VpdGUsIHVuaXR0ZXN0LlRlc3RDYXNlKQotICAgIHN1aXRlID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKLSAgICBmb3IgY2xzIGluIGNsYXNzZXM6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UoY2xzLCBzdHIpOgotICAgICAgICAgICAgaWYgY2xzIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QodW5pdHRlc3QuZmluZFRlc3RDYXNlcyhzeXMubW9kdWxlc1tjbHNdKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3RyIGFyZ3VtZW50cyBtdXN0IGJlIGtleXMgaW4gc3lzLm1vZHVsZXMiKQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoY2xzLCB2YWxpZF90eXBlcyk6Ci0gICAgICAgICAgICBzdWl0ZS5hZGRUZXN0KGNscykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1aXRlLmFkZFRlc3QodW5pdHRlc3QubWFrZVN1aXRlKGNscykpCi0gICAgX3J1bl9zdWl0ZShzdWl0ZSkKLQotIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jIENoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgZG9jc3RyaW5ncy4KLQotSEFWRV9ET0NTVFJJTkdTID0gKGNoZWNrX2ltcGxfZGV0YWlsKGNweXRob249RmFsc2UpIG9yCi0gICAgICAgICAgICAgICAgICAgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgb3IKLSAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfRE9DX1NUUklOR1MnKSkKLQotcmVxdWlyZXNfZG9jc3RyaW5ncyA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9ET0NTVFJJTkdTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3QgcmVxdWlyZXMgZG9jc3RyaW5ncyIpCi0KLQotIz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0jIGRvY3Rlc3QgZHJpdmVyLgotCi1kZWYgcnVuX2RvY3Rlc3QobW9kdWxlLCB2ZXJib3NpdHk9Tm9uZSk6Ci0gICAgIiIiUnVuIGRvY3Rlc3Qgb24gdGhlIGdpdmVuIG1vZHVsZS4gIFJldHVybiAoI2ZhaWx1cmVzLCAjdGVzdHMpLgotCi0gICAgSWYgb3B0aW9uYWwgYXJndW1lbnQgdmVyYm9zaXR5IGlzIG5vdCBzcGVjaWZpZWQgKG9yIGlzIE5vbmUpLCBwYXNzCi0gICAgdGVzdF9zdXBwb3J0J3MgYmVsaWVmIGFib3V0IHZlcmJvc2l0eSBvbiB0byBkb2N0ZXN0LiAgRWxzZSBkb2N0ZXN0J3MKLSAgICB1c3VhbCBiZWhhdmlvciBpcyB1c2VkIChpdCBzZWFyY2hlcyBzeXMuYXJndiBmb3IgLXYpLgotICAgICIiIgotCi0gICAgaW1wb3J0IGRvY3Rlc3QKLQotICAgIGlmIHZlcmJvc2l0eSBpcyBOb25lOgotICAgICAgICB2ZXJib3NpdHkgPSB2ZXJib3NlCi0gICAgZWxzZToKLSAgICAgICAgdmVyYm9zaXR5ID0gTm9uZQotCi0gICAgIyBEaXJlY3QgZG9jdGVzdCBvdXRwdXQgKG5vcm1hbGx5IGp1c3QgZXJyb3JzKSB0byByZWFsIHN0ZG91dDsgZG9jdGVzdAotICAgICMgb3V0cHV0IHNob3VsZG4ndCBiZSBjb21wYXJlZCBieSByZWdydGVzdC4KLSAgICBzYXZlX3N0ZG91dCA9IHN5cy5zdGRvdXQKLSAgICBzeXMuc3Rkb3V0ID0gZ2V0X29yaWdpbmFsX3N0ZG91dCgpCi0gICAgdHJ5OgotICAgICAgICBmLCB0ID0gZG9jdGVzdC50ZXN0bW9kKG1vZHVsZSwgdmVyYm9zZT12ZXJib3NpdHkpCi0gICAgICAgIGlmIGY6Ci0gICAgICAgICAgICByYWlzZSBUZXN0RmFpbGVkKCIlZCBvZiAlZCBkb2N0ZXN0cyBmYWlsZWQiICUgKGYsIHQpKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIHN5cy5zdGRvdXQgPSBzYXZlX3N0ZG91dAotICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgIHByaW50ICdkb2N0ZXN0ICglcykgLi4uICVkIHRlc3RzIHdpdGggemVybyBmYWlsdXJlcycgJSAobW9kdWxlLl9fbmFtZV9fLCB0KQotICAgIHJldHVybiBmLCB0Ci0KLSM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIyBUaHJlYWRpbmcgc3VwcG9ydCB0byBwcmV2ZW50IHJlcG9ydGluZyByZWZsZWFrcyB3aGVuIHJ1bm5pbmcgcmVncnRlc3QucHkgLVIKLQotIyBOT1RFOiB3ZSB1c2UgdGhyZWFkLl9jb3VudCgpIHJhdGhlciB0aGFuIHRocmVhZGluZy5lbnVtZXJhdGUoKSAob3IgdGhlCi0jIG1vcmFsIGVxdWl2YWxlbnQgdGhlcmVvZikgYmVjYXVzZSBhIHRocmVhZGluZy5UaHJlYWQgb2JqZWN0IGlzIHN0aWxsIGFsaXZlCi0jIHVudGlsIGl0cyBfX2Jvb3RzdHJhcCgpIG1ldGhvZCBoYXMgcmV0dXJuZWQsIGV2ZW4gYWZ0ZXIgaXQgaGFzIGJlZW4KLSMgdW5yZWdpc3RlcmVkIGZyb20gdGhlIHRocmVhZGluZyBtb2R1bGUuCi0jIHRocmVhZC5fY291bnQoKSwgb24gdGhlIG90aGVyIGhhbmQsIG9ubHkgZ2V0cyBkZWNyZW1lbnRlZCAqYWZ0ZXIqIHRoZQotIyBfX2Jvb3RzdHJhcCgpIG1ldGhvZCBoYXMgcmV0dXJuZWQsIHdoaWNoIGdpdmVzIHVzIHJlbGlhYmxlIHJlZmVyZW5jZSBjb3VudHMKLSMgYXQgdGhlIGVuZCBvZiBhIHRlc3QgcnVuLgotCi1kZWYgdGhyZWFkaW5nX3NldHVwKCk6Ci0gICAgaWYgdGhyZWFkOgotICAgICAgICByZXR1cm4gdGhyZWFkLl9jb3VudCgpLAotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiAxLAotCi1kZWYgdGhyZWFkaW5nX2NsZWFudXAobmJfdGhyZWFkcyk6Ci0gICAgaWYgbm90IHRocmVhZDoKLSAgICAgICAgcmV0dXJuCi0KLSAgICBfTUFYX0NPVU5UID0gMTAKLSAgICBmb3IgY291bnQgaW4gcmFuZ2UoX01BWF9DT1VOVCk6Ci0gICAgICAgIG4gPSB0aHJlYWQuX2NvdW50KCkKLSAgICAgICAgaWYgbiA9PSBuYl90aHJlYWRzOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgdGltZS5zbGVlcCgwLjEpCi0gICAgIyBYWFggcHJpbnQgYSB3YXJuaW5nIGluIGNhc2Ugb2YgZmFpbHVyZT8KLQotZGVmIHJlYXBfdGhyZWFkcyhmdW5jKToKLSAgICAiIiJVc2UgdGhpcyBmdW5jdGlvbiB3aGVuIHRocmVhZHMgYXJlIGJlaW5nIHVzZWQuICBUaGlzIHdpbGwKLSAgICBlbnN1cmUgdGhhdCB0aGUgdGhyZWFkcyBhcmUgY2xlYW5lZCB1cCBldmVuIHdoZW4gdGhlIHRlc3QgZmFpbHMuCi0gICAgSWYgdGhyZWFkaW5nIGlzIHVuYXZhaWxhYmxlIHRoaXMgZnVuY3Rpb24gZG9lcyBub3RoaW5nLgotICAgICIiIgotICAgIGlmIG5vdCB0aHJlYWQ6Ci0gICAgICAgIHJldHVybiBmdW5jCi0KLSAgICBAZnVuY3Rvb2xzLndyYXBzKGZ1bmMpCi0gICAgZGVmIGRlY29yYXRvcigqYXJncyk6Ci0gICAgICAgIGtleSA9IHRocmVhZGluZ19zZXR1cCgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgdGhyZWFkaW5nX2NsZWFudXAoKmtleSkKLSAgICByZXR1cm4gZGVjb3JhdG9yCi0KLWRlZiByZWFwX2NoaWxkcmVuKCk6Ci0gICAgIiIiVXNlIHRoaXMgZnVuY3Rpb24gYXQgdGhlIGVuZCBvZiB0ZXN0X21haW4oKSB3aGVuZXZlciBzdWItcHJvY2Vzc2VzCi0gICAgYXJlIHN0YXJ0ZWQuICBUaGlzIHdpbGwgaGVscCBlbnN1cmUgdGhhdCBubyBleHRyYSBjaGlsZHJlbiAoem9tYmllcykKLSAgICBzdGljayBhcm91bmQgdG8gaG9nIHJlc291cmNlcyBhbmQgY3JlYXRlIHByb2JsZW1zIHdoZW4gbG9va2luZwotICAgIGZvciByZWZsZWFrcy4KLSAgICAiIiIKLQotICAgICMgUmVhcCBhbGwgb3VyIGRlYWQgY2hpbGQgcHJvY2Vzc2VzIHNvIHdlIGRvbid0IGxlYXZlIHpvbWJpZXMgYXJvdW5kLgotICAgICMgVGhlc2UgaG9nIHJlc291cmNlcyBhbmQgbWlnaHQgYmUgY2F1c2luZyBzb21lIG9mIHRoZSBidWlsZGJvdHMgdG8gZGllLgotICAgIGlmIGhhc2F0dHIob3MsICd3YWl0cGlkJyk6Ci0gICAgICAgIGFueV9wcm9jZXNzID0gLTEKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIFRoaXMgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gb24gV2luZG93cy4gIFRoYXQncyBvay4KLSAgICAgICAgICAgICAgICBwaWQsIHN0YXR1cyA9IG9zLndhaXRwaWQoYW55X3Byb2Nlc3MsIG9zLldOT0hBTkcpCi0gICAgICAgICAgICAgICAgaWYgcGlkID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLWRlZiBzdGFydF90aHJlYWRzKHRocmVhZHMsIHVubG9jaz1Ob25lKToKLSAgICB0aHJlYWRzID0gbGlzdCh0aHJlYWRzKQotICAgIHN0YXJ0ZWQgPSBbXQotICAgIHRyeToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHQgaW4gdGhyZWFkczoKLSAgICAgICAgICAgICAgICB0LnN0YXJ0KCkKLSAgICAgICAgICAgICAgICBzdGFydGVkLmFwcGVuZCh0KQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBpZiB2ZXJib3NlOgotICAgICAgICAgICAgICAgIHByaW50KCJDYW4ndCBzdGFydCAlZCB0aHJlYWRzLCBvbmx5ICVkIHRocmVhZHMgc3RhcnRlZCIgJQotICAgICAgICAgICAgICAgICAgICAgIChsZW4odGhyZWFkcyksIGxlbihzdGFydGVkKSkpCi0gICAgICAgICAgICByYWlzZQotICAgICAgICB5aWVsZAotICAgIGZpbmFsbHk6Ci0gICAgICAgIGlmIHVubG9jazoKLSAgICAgICAgICAgIHVubG9jaygpCi0gICAgICAgIGVuZHRpbWUgPSBzdGFydHRpbWUgPSB0aW1lLnRpbWUoKQotICAgICAgICBmb3IgdGltZW91dCBpbiByYW5nZSgxLCAxNik6Ci0gICAgICAgICAgICBlbmR0aW1lICs9IDYwCi0gICAgICAgICAgICBmb3IgdCBpbiBzdGFydGVkOgotICAgICAgICAgICAgICAgIHQuam9pbihtYXgoZW5kdGltZSAtIHRpbWUudGltZSgpLCAwLjAxKSkKLSAgICAgICAgICAgIHN0YXJ0ZWQgPSBbdCBmb3IgdCBpbiBzdGFydGVkIGlmIHQuaXNBbGl2ZSgpXQotICAgICAgICAgICAgaWYgbm90IHN0YXJ0ZWQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGlmIHZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ1VuYWJsZSB0byBqb2luICVkIHRocmVhZHMgZHVyaW5nIGEgcGVyaW9kIG9mICcKLSAgICAgICAgICAgICAgICAgICAgICAnJWQgbWludXRlcycgJSAobGVuKHN0YXJ0ZWQpLCB0aW1lb3V0KSkKLSAgICBzdGFydGVkID0gW3QgZm9yIHQgaW4gc3RhcnRlZCBpZiB0LmlzQWxpdmUoKV0KLSAgICBpZiBzdGFydGVkOgotICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcignVW5hYmxlIHRvIGpvaW4gJWQgdGhyZWFkcycgJSBsZW4oc3RhcnRlZCkpCi0KLUBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgc3dhcF9hdHRyKG9iaiwgYXR0ciwgbmV3X3ZhbCk6Ci0gICAgIiIiVGVtcG9yYXJ5IHN3YXAgb3V0IGFuIGF0dHJpYnV0ZSB3aXRoIGEgbmV3IG9iamVjdC4KLQotICAgIFVzYWdlOgotICAgICAgICB3aXRoIHN3YXBfYXR0cihvYmosICJhdHRyIiwgNSk6Ci0gICAgICAgICAgICAuLi4KLQotICAgICAgICBUaGlzIHdpbGwgc2V0IG9iai5hdHRyIHRvIDUgZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgd2l0aDogYmxvY2ssCi0gICAgICAgIHJlc3RvcmluZyB0aGUgb2xkIHZhbHVlIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLiBJZiBgYXR0cmAgZG9lc24ndAotICAgICAgICBleGlzdCBvbiBgb2JqYCwgaXQgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVuIGRlbGV0ZWQgYXQgdGhlIGVuZCBvZiB0aGUKLSAgICAgICAgYmxvY2suCi0gICAgIiIiCi0gICAgaWYgaGFzYXR0cihvYmosIGF0dHIpOgotICAgICAgICByZWFsX3ZhbCA9IGdldGF0dHIob2JqLCBhdHRyKQotICAgICAgICBzZXRhdHRyKG9iaiwgYXR0ciwgbmV3X3ZhbCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgeWllbGQKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNldGF0dHIob2JqLCBhdHRyLCByZWFsX3ZhbCkKLSAgICBlbHNlOgotICAgICAgICBzZXRhdHRyKG9iaiwgYXR0ciwgbmV3X3ZhbCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgeWllbGQKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGRlbGF0dHIob2JqLCBhdHRyKQotCi1kZWYgcHkza19ieXRlcyhiKToKLSAgICAiIiJFbXVsYXRlIHRoZSBweTNrIGJ5dGVzKCkgY29uc3RydWN0b3IuCi0KLSAgICBOT1RFOiBUaGlzIGlzIG9ubHkgYSBiZXN0IGVmZm9ydCBmdW5jdGlvbi4KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgICMgbWVtb3J5dmlldz8KLSAgICAgICAgcmV0dXJuIGIudG9ieXRlcygpCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIGl0ZXJhYmxlIG9mIGludHM/Ci0gICAgICAgICAgICByZXR1cm4gYiIiLmpvaW4oY2hyKHgpIGZvciB4IGluIGIpCi0gICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gYnl0ZXMoYikKLQotZGVmIGFyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpOgotICAgICIiIlJldHVybiBhIGxpc3Qgb2YgY29tbWFuZC1saW5lIGFyZ3VtZW50cyByZXByb2R1Y2luZyB0aGUgY3VycmVudAotICAgIHNldHRpbmdzIGluIHN5cy5mbGFncy4iIiIKLSAgICBpbXBvcnQgc3VicHJvY2VzcwotICAgIHJldHVybiBzdWJwcm9jZXNzLl9hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MoKQotCi1kZWYgc3RyaXBfcHl0aG9uX3N0ZGVycihzdGRlcnIpOgotICAgICIiIlN0cmlwIHRoZSBzdGRlcnIgb2YgYSBQeXRob24gcHJvY2VzcyBmcm9tIHBvdGVudGlhbCBkZWJ1ZyBvdXRwdXQKLSAgICBlbWl0dGVkIGJ5IHRoZSBpbnRlcnByZXRlci4KLQotICAgIFRoaXMgd2lsbCB0eXBpY2FsbHkgYmUgcnVuIG9uIHRoZSByZXN1bHQgb2YgdGhlIGNvbW11bmljYXRlKCkgbWV0aG9kCi0gICAgb2YgYSBzdWJwcm9jZXNzLlBvcGVuIG9iamVjdC4KLSAgICAiIiIKLSAgICBzdGRlcnIgPSByZS5zdWIoYnIiXFtcZCsgcmVmc1xdXHI/XG4/JCIsIGIiIiwgc3RkZXJyKS5zdHJpcCgpCi0gICAgcmV0dXJuIHN0ZGVycgotCi0KLWRlZiBjaGVja19mcmVlX2FmdGVyX2l0ZXJhdGluZyh0ZXN0LCBpdGVyLCBjbHMsIGFyZ3M9KCkpOgotICAgIGNsYXNzIEEoY2xzKToKLSAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgICAgICBkb25lWzBdID0gVHJ1ZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG5leHQoaXQpCi0gICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICBkb25lID0gW0ZhbHNlXQotICAgIGl0ID0gaXRlcihBKCphcmdzKSkKLSAgICAjIElzc3VlIDI2NDk0OiBTaG91bGRuJ3QgY3Jhc2gKLSAgICB0ZXN0LmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBpdCkKLSAgICAjIFRoZSBzZXF1ZW5jZSBzaG91bGQgYmUgZGVhbGxvY2F0ZWQganVzdCBhZnRlciB0aGUgZW5kIG9mIGl0ZXJhdGluZwotICAgIGdjX2NvbGxlY3QoKQotICAgIHRlc3QuYXNzZXJ0VHJ1ZShkb25lWzBdKQoraW1wb3J0IHRlc3Quc3VwcG9ydAorc3lzLm1vZHVsZXNbJ3Rlc3QudGVzdF9zdXBwb3J0J10gPSB0ZXN0LnN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3ludGF4LnB5IGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKaW5kZXggMGE2MTQ2Mi4uMTAzYjRjMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkKQEAgLTczLDEzICs3MywxMiBAQAogCiA+Pj4gImFiYyIgPSAxCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIEZpbGUgIjxkb2N0ZXN0IHRlc3QudGVzdF9zeW50YXhbOF0+IiwgbGluZSAxCisgIEZpbGUgIjxkb2N0ZXN0IHRlc3QudGVzdF9zeW50YXhbOV0+IiwgbGluZSAxCiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGxpdGVyYWwKIAotPj4+IGAxYCA9IDEKKz4+PiBiIiIgPSAxCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIEZpbGUgIjxkb2N0ZXN0IHRlc3QudGVzdF9zeW50YXhbMTBdPiIsIGxpbmUgMQotU3ludGF4RXJyb3I6IGNhbid0IGFzc2lnbiB0byByZXByCitTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGxpdGVyYWwKIAogSWYgdGhlIGxlZnQtaGFuZCBzaWRlIG9mIGFuIGFzc2lnbm1lbnQgaXMgYSBsaXN0IG9yIHR1cGxlLCBhbiBpbGxlZ2FsCiBleHByZXNzaW9uIGluc2lkZSB0aGF0IGNvbnRhaW4gc2hvdWxkIHN0aWxsIGNhdXNlIGEgc3ludGF4IGVycm9yLgpAQCAtMTQ4LDcgKzE0Nyw3IEBACiAKIEZyb20gYXN0X2Zvcl9jYWxsKCk6CiAKLT4+PiBkZWYgZihpdCwgKnZhcmFyZ3MpOgorPj4+IGRlZiBmKGl0LCAqdmFyYXJncywgKiprd2FyZ3MpOgogLi4uICAgICByZXR1cm4gbGlzdChpdCkKID4+PiBMID0gcmFuZ2UoMTApCiA+Pj4gZih4IGZvciB4IGluIEwpCkBAIC0xNTcsNzMgKzE1NiwxNzkgQEAKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgRmlsZSAiPGRvY3Rlc3QgdGVzdC50ZXN0X3N5bnRheFsyM10+IiwgbGluZSAxCiBTeW50YXhFcnJvcjogR2VuZXJhdG9yIGV4cHJlc3Npb24gbXVzdCBiZSBwYXJlbnRoZXNpemVkIGlmIG5vdCBzb2xlIGFyZ3VtZW50Cis+Pj4gZih4IGZvciB4IGluIEwsIHk9MSkKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKK1N5bnRheEVycm9yOiBHZW5lcmF0b3IgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQgaWYgbm90IHNvbGUgYXJndW1lbnQKKz4+PiBmKEwsIHggZm9yIHggaW4gTCkKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKK1N5bnRheEVycm9yOiBHZW5lcmF0b3IgZXhwcmVzc2lvbiBtdXN0IGJlIHBhcmVudGhlc2l6ZWQgaWYgbm90IHNvbGUgYXJndW1lbnQKKz4+PiBmKHggZm9yIHggaW4gTCwgeSBmb3IgeSBpbiBMKQorVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorU3ludGF4RXJyb3I6IEdlbmVyYXRvciBleHByZXNzaW9uIG11c3QgYmUgcGFyZW50aGVzaXplZCBpZiBub3Qgc29sZSBhcmd1bWVudAorPj4+IGYoeCBmb3IgeCBpbiBMLCkKK1swLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5XQogPj4+IGYoKHggZm9yIHggaW4gTCksIDEpCiBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV0KIAotPj4+IGYoaTAsICBpMSwgIGkyLCAgaTMsICBpNCwgIGk1LCAgaTYsICBpNywgIGk4LCAgaTksICBpMTAsICBpMTEsCi0uLi4gICBpMTIsICBpMTMsICBpMTQsICBpMTUsICBpMTYsICBpMTcsICBpMTgsICBpMTksICBpMjAsICBpMjEsICBpMjIsCi0uLi4gICBpMjMsICBpMjQsICBpMjUsICBpMjYsICBpMjcsICBpMjgsICBpMjksICBpMzAsICBpMzEsICBpMzIsICBpMzMsCi0uLi4gICBpMzQsICBpMzUsICBpMzYsICBpMzcsICBpMzgsICBpMzksICBpNDAsICBpNDEsICBpNDIsICBpNDMsICBpNDQsCi0uLi4gICBpNDUsICBpNDYsICBpNDcsICBpNDgsICBpNDksICBpNTAsICBpNTEsICBpNTIsICBpNTMsICBpNTQsICBpNTUsCi0uLi4gICBpNTYsICBpNTcsICBpNTgsICBpNTksICBpNjAsICBpNjEsICBpNjIsICBpNjMsICBpNjQsICBpNjUsICBpNjYsCi0uLi4gICBpNjcsICBpNjgsICBpNjksICBpNzAsICBpNzEsICBpNzIsICBpNzMsICBpNzQsICBpNzUsICBpNzYsICBpNzcsCi0uLi4gICBpNzgsICBpNzksICBpODAsICBpODEsICBpODIsICBpODMsICBpODQsICBpODUsICBpODYsICBpODcsICBpODgsCi0uLi4gICBpODksICBpOTAsICBpOTEsICBpOTIsICBpOTMsICBpOTQsICBpOTUsICBpOTYsICBpOTcsICBpOTgsICBpOTksCi0uLi4gICBpMTAwLCAgaTEwMSwgIGkxMDIsICBpMTAzLCAgaTEwNCwgIGkxMDUsICBpMTA2LCAgaTEwNywgIGkxMDgsCi0uLi4gICBpMTA5LCAgaTExMCwgIGkxMTEsICBpMTEyLCAgaTExMywgIGkxMTQsICBpMTE1LCAgaTExNiwgIGkxMTcsCi0uLi4gICBpMTE4LCAgaTExOSwgIGkxMjAsICBpMTIxLCAgaTEyMiwgIGkxMjMsICBpMTI0LCAgaTEyNSwgIGkxMjYsCi0uLi4gICBpMTI3LCAgaTEyOCwgIGkxMjksICBpMTMwLCAgaTEzMSwgIGkxMzIsICBpMTMzLCAgaTEzNCwgIGkxMzUsCi0uLi4gICBpMTM2LCAgaTEzNywgIGkxMzgsICBpMTM5LCAgaTE0MCwgIGkxNDEsICBpMTQyLCAgaTE0MywgIGkxNDQsCi0uLi4gICBpMTQ1LCAgaTE0NiwgIGkxNDcsICBpMTQ4LCAgaTE0OSwgIGkxNTAsICBpMTUxLCAgaTE1MiwgIGkxNTMsCi0uLi4gICBpMTU0LCAgaTE1NSwgIGkxNTYsICBpMTU3LCAgaTE1OCwgIGkxNTksICBpMTYwLCAgaTE2MSwgIGkxNjIsCi0uLi4gICBpMTYzLCAgaTE2NCwgIGkxNjUsICBpMTY2LCAgaTE2NywgIGkxNjgsICBpMTY5LCAgaTE3MCwgIGkxNzEsCi0uLi4gICBpMTcyLCAgaTE3MywgIGkxNzQsICBpMTc1LCAgaTE3NiwgIGkxNzcsICBpMTc4LCAgaTE3OSwgIGkxODAsCi0uLi4gICBpMTgxLCAgaTE4MiwgIGkxODMsICBpMTg0LCAgaTE4NSwgIGkxODYsICBpMTg3LCAgaTE4OCwgIGkxODksCi0uLi4gICBpMTkwLCAgaTE5MSwgIGkxOTIsICBpMTkzLCAgaTE5NCwgIGkxOTUsICBpMTk2LCAgaTE5NywgIGkxOTgsCi0uLi4gICBpMTk5LCAgaTIwMCwgIGkyMDEsICBpMjAyLCAgaTIwMywgIGkyMDQsICBpMjA1LCAgaTIwNiwgIGkyMDcsCi0uLi4gICBpMjA4LCAgaTIwOSwgIGkyMTAsICBpMjExLCAgaTIxMiwgIGkyMTMsICBpMjE0LCAgaTIxNSwgIGkyMTYsCi0uLi4gICBpMjE3LCAgaTIxOCwgIGkyMTksICBpMjIwLCAgaTIyMSwgIGkyMjIsICBpMjIzLCAgaTIyNCwgIGkyMjUsCi0uLi4gICBpMjI2LCAgaTIyNywgIGkyMjgsICBpMjI5LCAgaTIzMCwgIGkyMzEsICBpMjMyLCAgaTIzMywgIGkyMzQsCi0uLi4gICBpMjM1LCAgaTIzNiwgIGkyMzcsICBpMjM4LCAgaTIzOSwgIGkyNDAsICBpMjQxLCAgaTI0MiwgIGkyNDMsCi0uLi4gICBpMjQ0LCAgaTI0NSwgIGkyNDYsICBpMjQ3LCAgaTI0OCwgIGkyNDksICBpMjUwLCAgaTI1MSwgIGkyNTIsCi0uLi4gICBpMjUzLCAgaTI1NCwgIGkyNTUpCis+Pj4gZGVmIGcoKmFyZ3MsICoqa3dhcmdzKToKKy4uLiAgICAgcHJpbnQgYXJncywgc29ydGVkKGt3YXJncy5pdGVtcygpKQorPj4+IGcoMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksCisuLi4gICAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LAorLi4uICAgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwKKy4uLiAgIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsCisuLi4gICA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLAorLi4uICAgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywKKy4uLiAgIDEwOCwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLAorLi4uICAgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsCisuLi4gICAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwKKy4uLiAgIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLAorLi4uICAgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsCisuLi4gICAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwKKy4uLiAgIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjA1LAorLi4uICAgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksCisuLi4gICAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywKKy4uLiAgIDIzNCwgMjM1LCAyMzYsIDIzNywgMjM4LCAyMzksIDI0MCwgMjQxLCAyNDIsIDI0MywgMjQ0LCAyNDUsIDI0NiwgMjQ3LAorLi4uICAgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0KSAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKKygwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgLi4uLCAyNTIsIDI1MywgMjU0KSBbXQorPj4+IGcoMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgMTksCisuLi4gICAyMCwgMjEsIDIyLCAyMywgMjQsIDI1LCAyNiwgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzMsIDM0LCAzNSwgMzYsIDM3LAorLi4uICAgMzgsIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LCA1NSwKKy4uLiAgIDU2LCA1NywgNTgsIDU5LCA2MCwgNjEsIDYyLCA2MywgNjQsIDY1LCA2NiwgNjcsIDY4LCA2OSwgNzAsIDcxLCA3MiwgNzMsCisuLi4gICA3NCwgNzUsIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgODQsIDg1LCA4NiwgODcsIDg4LCA4OSwgOTAsIDkxLAorLi4uICAgOTIsIDkzLCA5NCwgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywKKy4uLiAgIDEwOCwgMTA5LCAxMTAsIDExMSwgMTEyLCAxMTMsIDExNCwgMTE1LCAxMTYsIDExNywgMTE4LCAxMTksIDEyMCwgMTIxLAorLi4uICAgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgMTM0LCAxMzUsCisuLi4gICAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCAxNDIsIDE0MywgMTQ0LCAxNDUsIDE0NiwgMTQ3LCAxNDgsIDE0OSwKKy4uLiAgIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDE1NiwgMTU3LCAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLAorLi4uICAgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsCisuLi4gICAxNzgsIDE3OSwgMTgwLCAxODEsIDE4MiwgMTgzLCAxODQsIDE4NSwgMTg2LCAxODcsIDE4OCwgMTg5LCAxOTAsIDE5MSwKKy4uLiAgIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIDIwNCwgMjA1LAorLi4uICAgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksCisuLi4gICAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsIDIyNywgMjI4LCAyMjksIDIzMCwgMjMxLCAyMzIsIDIzMywKKy4uLiAgIDIzNCwgMjM1LCAyMzYsIDIzNywgMjM4LCAyMzksIDI0MCwgMjQxLCAyNDIsIDI0MywgMjQ0LCAyNDUsIDI0NiwgMjQ3LAorLi4uICAgMjQ4LCAyNDksIDI1MCwgMjUxLCAyNTIsIDI1MywgMjU0LCAyNTUpCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgIEZpbGUgIjxkb2N0ZXN0IHRlc3QudGVzdF9zeW50YXhbMjVdPiIsIGxpbmUgMQogU3ludGF4RXJyb3I6IG1vcmUgdGhhbiAyNTUgYXJndW1lbnRzCiAKLVRoZSBhY3R1YWwgZXJyb3IgY2FzZXMgY291bnRzIHBvc2l0aW9uYWwgYXJndW1lbnRzLCBrZXl3b3JkIGFyZ3VtZW50cywKLWFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbiBhcmd1bWVudHMgc2VwYXJhdGVseS4gIFRoaXMgdGVzdCBjb21iaW5lcyB0aGUKLXRocmVlLgotCi0+Pj4gZihpMCwgIGkxLCAgaTIsICBpMywgIGk0LCAgaTUsICBpNiwgIGk3LCAgaTgsICBpOSwgIGkxMCwgIGkxMSwKLS4uLiAgIGkxMiwgIGkxMywgIGkxNCwgIGkxNSwgIGkxNiwgIGkxNywgIGkxOCwgIGkxOSwgIGkyMCwgIGkyMSwgIGkyMiwKLS4uLiAgIGkyMywgIGkyNCwgIGkyNSwgIGkyNiwgIGkyNywgIGkyOCwgIGkyOSwgIGkzMCwgIGkzMSwgIGkzMiwgIGkzMywKLS4uLiAgIGkzNCwgIGkzNSwgIGkzNiwgIGkzNywgIGkzOCwgIGkzOSwgIGk0MCwgIGk0MSwgIGk0MiwgIGk0MywgIGk0NCwKLS4uLiAgIGk0NSwgIGk0NiwgIGk0NywgIGk0OCwgIGk0OSwgIGk1MCwgIGk1MSwgIGk1MiwgIGk1MywgIGk1NCwgIGk1NSwKLS4uLiAgIGk1NiwgIGk1NywgIGk1OCwgIGk1OSwgIGk2MCwgIGk2MSwgIGk2MiwgIGk2MywgIGk2NCwgIGk2NSwgIGk2NiwKLS4uLiAgIGk2NywgIGk2OCwgIGk2OSwgIGk3MCwgIGk3MSwgIGk3MiwgIGk3MywgIGk3NCwgIGk3NSwgIGk3NiwgIGk3NywKLS4uLiAgIGk3OCwgIGk3OSwgIGk4MCwgIGk4MSwgIGk4MiwgIGk4MywgIGk4NCwgIGk4NSwgIGk4NiwgIGk4NywgIGk4OCwKLS4uLiAgIGk4OSwgIGk5MCwgIGk5MSwgIGk5MiwgIGk5MywgIGk5NCwgIGk5NSwgIGk5NiwgIGk5NywgIGk5OCwgIGk5OSwKLS4uLiAgIGkxMDAsICBpMTAxLCAgaTEwMiwgIGkxMDMsICBpMTA0LCAgaTEwNSwgIGkxMDYsICBpMTA3LCAgaTEwOCwKLS4uLiAgIGkxMDksICBpMTEwLCAgaTExMSwgIGkxMTIsICBpMTEzLCAgaTExNCwgIGkxMTUsICBpMTE2LCAgaTExNywKLS4uLiAgIGkxMTgsICBpMTE5LCAgaTEyMCwgIGkxMjEsICBpMTIyLCAgaTEyMywgIGkxMjQsICBpMTI1LCAgaTEyNiwKLS4uLiAgIGkxMjcsICBpMTI4LCAgaTEyOSwgIGkxMzAsICBpMTMxLCAgaTEzMiwgIGkxMzMsICBpMTM0LCAgaTEzNSwKLS4uLiAgIGkxMzYsICBpMTM3LCAgaTEzOCwgIGkxMzksICBpMTQwLCAgaTE0MSwgIGkxNDIsICBpMTQzLCAgaTE0NCwKLS4uLiAgIGkxNDUsICBpMTQ2LCAgaTE0NywgIGkxNDgsICBpMTQ5LCAgaTE1MCwgIGkxNTEsICBpMTUyLCAgaTE1MywKLS4uLiAgIGkxNTQsICBpMTU1LCAgaTE1NiwgIGkxNTcsICBpMTU4LCAgaTE1OSwgIGkxNjAsICBpMTYxLCAgaTE2MiwKLS4uLiAgIGkxNjMsICBpMTY0LCAgaTE2NSwgIGkxNjYsICBpMTY3LCAgaTE2OCwgIGkxNjksICBpMTcwLCAgaTE3MSwKLS4uLiAgIGkxNzIsICBpMTczLCAgaTE3NCwgIGkxNzUsICBpMTc2LCAgaTE3NywgIGkxNzgsICBpMTc5LCAgaTE4MCwKLS4uLiAgIGkxODEsICBpMTgyLCAgaTE4MywgIGkxODQsICBpMTg1LCAgaTE4NiwgIGkxODcsICBpMTg4LCAgaTE4OSwKLS4uLiAgIGkxOTAsICBpMTkxLCAgaTE5MiwgIGkxOTMsICBpMTk0LCAgaTE5NSwgIGkxOTYsICBpMTk3LCAgaTE5OCwKLS4uLiAgIGkxOTksICBpMjAwLCAgaTIwMSwgIGkyMDIsICBpMjAzLCAgaTIwNCwgIGkyMDUsICBpMjA2LCAgaTIwNywKLS4uLiAgIGkyMDgsICBpMjA5LCAgaTIxMCwgIGkyMTEsICBpMjEyLCAgaTIxMywgIGkyMTQsICBpMjE1LCAgaTIxNiwKLS4uLiAgIGkyMTcsICBpMjE4LCAgaTIxOSwgIGkyMjAsICBpMjIxLCAgaTIyMiwgIGkyMjMsICBpMjI0LCAgaTIyNSwKLS4uLiAgIGkyMjYsICBpMjI3LCAgaTIyOCwgIGkyMjksICBpMjMwLCAgaTIzMSwgIGkyMzIsICBpMjMzLCAgaTIzNCwKLS4uLiAgIGkyMzUsIGkyMzYsICBpMjM3LCAgaTIzOCwgIGkyMzksICBpMjQwLCAgaTI0MSwgIGkyNDIsICBpMjQzLAotLi4uICAgKHggZm9yIHggaW4gaTI0NCksICBpMjQ1LCAgaTI0NiwgIGkyNDcsICBpMjQ4LCAgaTI0OSwgIGkyNTAsICBpMjUxLAotLi4uICAgIGkyNTI9MSwgaTI1Mz0xLCAgaTI1ND0xLCAgaTI1NT0xKQorPj4+IGcoYTAwMD0wLCBhMDAxPTEsIGEwMDI9MiwgYTAwMz0zLCBhMDA0PTQsIGEwMDU9NSwgYTAwNj02LCBhMDA3PTcsIGEwMDg9OCwKKy4uLiAgIGEwMDk9OSwgYTAxMD0xMCwgYTAxMT0xMSwgYTAxMj0xMiwgYTAxMz0xMywgYTAxND0xNCwgYTAxNT0xNSwgYTAxNj0xNiwKKy4uLiAgIGEwMTc9MTcsIGEwMTg9MTgsIGEwMTk9MTksIGEwMjA9MjAsIGEwMjE9MjEsIGEwMjI9MjIsIGEwMjM9MjMsIGEwMjQ9MjQsCisuLi4gICBhMDI1PTI1LCBhMDI2PTI2LCBhMDI3PTI3LCBhMDI4PTI4LCBhMDI5PTI5LCBhMDMwPTMwLCBhMDMxPTMxLCBhMDMyPTMyLAorLi4uICAgYTAzMz0zMywgYTAzND0zNCwgYTAzNT0zNSwgYTAzNj0zNiwgYTAzNz0zNywgYTAzOD0zOCwgYTAzOT0zOSwgYTA0MD00MCwKKy4uLiAgIGEwNDE9NDEsIGEwNDI9NDIsIGEwNDM9NDMsIGEwNDQ9NDQsIGEwNDU9NDUsIGEwNDY9NDYsIGEwNDc9NDcsIGEwNDg9NDgsCisuLi4gICBhMDQ5PTQ5LCBhMDUwPTUwLCBhMDUxPTUxLCBhMDUyPTUyLCBhMDUzPTUzLCBhMDU0PTU0LCBhMDU1PTU1LCBhMDU2PTU2LAorLi4uICAgYTA1Nz01NywgYTA1OD01OCwgYTA1OT01OSwgYTA2MD02MCwgYTA2MT02MSwgYTA2Mj02MiwgYTA2Mz02MywgYTA2ND02NCwKKy4uLiAgIGEwNjU9NjUsIGEwNjY9NjYsIGEwNjc9NjcsIGEwNjg9NjgsIGEwNjk9NjksIGEwNzA9NzAsIGEwNzE9NzEsIGEwNzI9NzIsCisuLi4gICBhMDczPTczLCBhMDc0PTc0LCBhMDc1PTc1LCBhMDc2PTc2LCBhMDc3PTc3LCBhMDc4PTc4LCBhMDc5PTc5LCBhMDgwPTgwLAorLi4uICAgYTA4MT04MSwgYTA4Mj04MiwgYTA4Mz04MywgYTA4ND04NCwgYTA4NT04NSwgYTA4Nj04NiwgYTA4Nz04NywgYTA4OD04OCwKKy4uLiAgIGEwODk9ODksIGEwOTA9OTAsIGEwOTE9OTEsIGEwOTI9OTIsIGEwOTM9OTMsIGEwOTQ9OTQsIGEwOTU9OTUsIGEwOTY9OTYsCisuLi4gICBhMDk3PTk3LCBhMDk4PTk4LCBhMDk5PTk5LCBhMTAwPTEwMCwgYTEwMT0xMDEsIGExMDI9MTAyLCBhMTAzPTEwMywKKy4uLiAgIGExMDQ9MTA0LCBhMTA1PTEwNSwgYTEwNj0xMDYsIGExMDc9MTA3LCBhMTA4PTEwOCwgYTEwOT0xMDksIGExMTA9MTEwLAorLi4uICAgYTExMT0xMTEsIGExMTI9MTEyLCBhMTEzPTExMywgYTExND0xMTQsIGExMTU9MTE1LCBhMTE2PTExNiwgYTExNz0xMTcsCisuLi4gICBhMTE4PTExOCwgYTExOT0xMTksIGExMjA9MTIwLCBhMTIxPTEyMSwgYTEyMj0xMjIsIGExMjM9MTIzLCBhMTI0PTEyNCwKKy4uLiAgIGExMjU9MTI1LCBhMTI2PTEyNiwgYTEyNz0xMjcsIGExMjg9MTI4LCBhMTI5PTEyOSwgYTEzMD0xMzAsIGExMzE9MTMxLAorLi4uICAgYTEzMj0xMzIsIGExMzM9MTMzLCBhMTM0PTEzNCwgYTEzNT0xMzUsIGExMzY9MTM2LCBhMTM3PTEzNywgYTEzOD0xMzgsCisuLi4gICBhMTM5PTEzOSwgYTE0MD0xNDAsIGExNDE9MTQxLCBhMTQyPTE0MiwgYTE0Mz0xNDMsIGExNDQ9MTQ0LCBhMTQ1PTE0NSwKKy4uLiAgIGExNDY9MTQ2LCBhMTQ3PTE0NywgYTE0OD0xNDgsIGExNDk9MTQ5LCBhMTUwPTE1MCwgYTE1MT0xNTEsIGExNTI9MTUyLAorLi4uICAgYTE1Mz0xNTMsIGExNTQ9MTU0LCBhMTU1PTE1NSwgYTE1Nj0xNTYsIGExNTc9MTU3LCBhMTU4PTE1OCwgYTE1OT0xNTksCisuLi4gICBhMTYwPTE2MCwgYTE2MT0xNjEsIGExNjI9MTYyLCBhMTYzPTE2MywgYTE2ND0xNjQsIGExNjU9MTY1LCBhMTY2PTE2NiwKKy4uLiAgIGExNjc9MTY3LCBhMTY4PTE2OCwgYTE2OT0xNjksIGExNzA9MTcwLCBhMTcxPTE3MSwgYTE3Mj0xNzIsIGExNzM9MTczLAorLi4uICAgYTE3ND0xNzQsIGExNzU9MTc1LCBhMTc2PTE3NiwgYTE3Nz0xNzcsIGExNzg9MTc4LCBhMTc5PTE3OSwgYTE4MD0xODAsCisuLi4gICBhMTgxPTE4MSwgYTE4Mj0xODIsIGExODM9MTgzLCBhMTg0PTE4NCwgYTE4NT0xODUsIGExODY9MTg2LCBhMTg3PTE4NywKKy4uLiAgIGExODg9MTg4LCBhMTg5PTE4OSwgYTE5MD0xOTAsIGExOTE9MTkxLCBhMTkyPTE5MiwgYTE5Mz0xOTMsIGExOTQ9MTk0LAorLi4uICAgYTE5NT0xOTUsIGExOTY9MTk2LCBhMTk3PTE5NywgYTE5OD0xOTgsIGExOTk9MTk5LCBhMjAwPTIwMCwgYTIwMT0yMDEsCisuLi4gICBhMjAyPTIwMiwgYTIwMz0yMDMsIGEyMDQ9MjA0LCBhMjA1PTIwNSwgYTIwNj0yMDYsIGEyMDc9MjA3LCBhMjA4PTIwOCwKKy4uLiAgIGEyMDk9MjA5LCBhMjEwPTIxMCwgYTIxMT0yMTEsIGEyMTI9MjEyLCBhMjEzPTIxMywgYTIxND0yMTQsIGEyMTU9MjE1LAorLi4uICAgYTIxNj0yMTYsIGEyMTc9MjE3LCBhMjE4PTIxOCwgYTIxOT0yMTksIGEyMjA9MjIwLCBhMjIxPTIyMSwgYTIyMj0yMjIsCisuLi4gICBhMjIzPTIyMywgYTIyND0yMjQsIGEyMjU9MjI1LCBhMjI2PTIyNiwgYTIyNz0yMjcsIGEyMjg9MjI4LCBhMjI5PTIyOSwKKy4uLiAgIGEyMzA9MjMwLCBhMjMxPTIzMSwgYTIzMj0yMzIsIGEyMzM9MjMzLCBhMjM0PTIzNCwgYTIzNT0yMzUsIGEyMzY9MjM2LAorLi4uICAgYTIzNz0yMzcsIGEyMzg9MjM4LCBhMjM5PTIzOSwgYTI0MD0yNDAsIGEyNDE9MjQxLCBhMjQyPTI0MiwgYTI0Mz0yNDMsCisuLi4gICBhMjQ0PTI0NCwgYTI0NT0yNDUsIGEyNDY9MjQ2LCBhMjQ3PTI0NywgYTI0OD0yNDgsIGEyNDk9MjQ5LCBhMjUwPTI1MCwKKy4uLiAgIGEyNTE9MjUxLCBhMjUyPTI1MiwgYTI1Mz0yNTMsIGEyNTQ9MjU0KSAgIyBkb2N0ZXN0OiArRUxMSVBTSVMKKygpIFsoJ2EwMDAnLCAwKSwgKCdhMDAxJywgMSksICgnYTAwMicsIDIpLCAuLi4sICgnYTI1MycsIDI1MyksICgnYTI1NCcsIDI1NCldCis+Pj4gZyhhMDAwPTAsIGEwMDE9MSwgYTAwMj0yLCBhMDAzPTMsIGEwMDQ9NCwgYTAwNT01LCBhMDA2PTYsIGEwMDc9NywgYTAwOD04LAorLi4uICAgYTAwOT05LCBhMDEwPTEwLCBhMDExPTExLCBhMDEyPTEyLCBhMDEzPTEzLCBhMDE0PTE0LCBhMDE1PTE1LCBhMDE2PTE2LAorLi4uICAgYTAxNz0xNywgYTAxOD0xOCwgYTAxOT0xOSwgYTAyMD0yMCwgYTAyMT0yMSwgYTAyMj0yMiwgYTAyMz0yMywgYTAyND0yNCwKKy4uLiAgIGEwMjU9MjUsIGEwMjY9MjYsIGEwMjc9MjcsIGEwMjg9MjgsIGEwMjk9MjksIGEwMzA9MzAsIGEwMzE9MzEsIGEwMzI9MzIsCisuLi4gICBhMDMzPTMzLCBhMDM0PTM0LCBhMDM1PTM1LCBhMDM2PTM2LCBhMDM3PTM3LCBhMDM4PTM4LCBhMDM5PTM5LCBhMDQwPTQwLAorLi4uICAgYTA0MT00MSwgYTA0Mj00MiwgYTA0Mz00MywgYTA0ND00NCwgYTA0NT00NSwgYTA0Nj00NiwgYTA0Nz00NywgYTA0OD00OCwKKy4uLiAgIGEwNDk9NDksIGEwNTA9NTAsIGEwNTE9NTEsIGEwNTI9NTIsIGEwNTM9NTMsIGEwNTQ9NTQsIGEwNTU9NTUsIGEwNTY9NTYsCisuLi4gICBhMDU3PTU3LCBhMDU4PTU4LCBhMDU5PTU5LCBhMDYwPTYwLCBhMDYxPTYxLCBhMDYyPTYyLCBhMDYzPTYzLCBhMDY0PTY0LAorLi4uICAgYTA2NT02NSwgYTA2Nj02NiwgYTA2Nz02NywgYTA2OD02OCwgYTA2OT02OSwgYTA3MD03MCwgYTA3MT03MSwgYTA3Mj03MiwKKy4uLiAgIGEwNzM9NzMsIGEwNzQ9NzQsIGEwNzU9NzUsIGEwNzY9NzYsIGEwNzc9NzcsIGEwNzg9NzgsIGEwNzk9NzksIGEwODA9ODAsCisuLi4gICBhMDgxPTgxLCBhMDgyPTgyLCBhMDgzPTgzLCBhMDg0PTg0LCBhMDg1PTg1LCBhMDg2PTg2LCBhMDg3PTg3LCBhMDg4PTg4LAorLi4uICAgYTA4OT04OSwgYTA5MD05MCwgYTA5MT05MSwgYTA5Mj05MiwgYTA5Mz05MywgYTA5ND05NCwgYTA5NT05NSwgYTA5Nj05NiwKKy4uLiAgIGEwOTc9OTcsIGEwOTg9OTgsIGEwOTk9OTksIGExMDA9MTAwLCBhMTAxPTEwMSwgYTEwMj0xMDIsIGExMDM9MTAzLAorLi4uICAgYTEwND0xMDQsIGExMDU9MTA1LCBhMTA2PTEwNiwgYTEwNz0xMDcsIGExMDg9MTA4LCBhMTA5PTEwOSwgYTExMD0xMTAsCisuLi4gICBhMTExPTExMSwgYTExMj0xMTIsIGExMTM9MTEzLCBhMTE0PTExNCwgYTExNT0xMTUsIGExMTY9MTE2LCBhMTE3PTExNywKKy4uLiAgIGExMTg9MTE4LCBhMTE5PTExOSwgYTEyMD0xMjAsIGExMjE9MTIxLCBhMTIyPTEyMiwgYTEyMz0xMjMsIGExMjQ9MTI0LAorLi4uICAgYTEyNT0xMjUsIGExMjY9MTI2LCBhMTI3PTEyNywgYTEyOD0xMjgsIGExMjk9MTI5LCBhMTMwPTEzMCwgYTEzMT0xMzEsCisuLi4gICBhMTMyPTEzMiwgYTEzMz0xMzMsIGExMzQ9MTM0LCBhMTM1PTEzNSwgYTEzNj0xMzYsIGExMzc9MTM3LCBhMTM4PTEzOCwKKy4uLiAgIGExMzk9MTM5LCBhMTQwPTE0MCwgYTE0MT0xNDEsIGExNDI9MTQyLCBhMTQzPTE0MywgYTE0ND0xNDQsIGExNDU9MTQ1LAorLi4uICAgYTE0Nj0xNDYsIGExNDc9MTQ3LCBhMTQ4PTE0OCwgYTE0OT0xNDksIGExNTA9MTUwLCBhMTUxPTE1MSwgYTE1Mj0xNTIsCisuLi4gICBhMTUzPTE1MywgYTE1ND0xNTQsIGExNTU9MTU1LCBhMTU2PTE1NiwgYTE1Nz0xNTcsIGExNTg9MTU4LCBhMTU5PTE1OSwKKy4uLiAgIGExNjA9MTYwLCBhMTYxPTE2MSwgYTE2Mj0xNjIsIGExNjM9MTYzLCBhMTY0PTE2NCwgYTE2NT0xNjUsIGExNjY9MTY2LAorLi4uICAgYTE2Nz0xNjcsIGExNjg9MTY4LCBhMTY5PTE2OSwgYTE3MD0xNzAsIGExNzE9MTcxLCBhMTcyPTE3MiwgYTE3Mz0xNzMsCisuLi4gICBhMTc0PTE3NCwgYTE3NT0xNzUsIGExNzY9MTc2LCBhMTc3PTE3NywgYTE3OD0xNzgsIGExNzk9MTc5LCBhMTgwPTE4MCwKKy4uLiAgIGExODE9MTgxLCBhMTgyPTE4MiwgYTE4Mz0xODMsIGExODQ9MTg0LCBhMTg1PTE4NSwgYTE4Nj0xODYsIGExODc9MTg3LAorLi4uICAgYTE4OD0xODgsIGExODk9MTg5LCBhMTkwPTE5MCwgYTE5MT0xOTEsIGExOTI9MTkyLCBhMTkzPTE5MywgYTE5ND0xOTQsCisuLi4gICBhMTk1PTE5NSwgYTE5Nj0xOTYsIGExOTc9MTk3LCBhMTk4PTE5OCwgYTE5OT0xOTksIGEyMDA9MjAwLCBhMjAxPTIwMSwKKy4uLiAgIGEyMDI9MjAyLCBhMjAzPTIwMywgYTIwND0yMDQsIGEyMDU9MjA1LCBhMjA2PTIwNiwgYTIwNz0yMDcsIGEyMDg9MjA4LAorLi4uICAgYTIwOT0yMDksIGEyMTA9MjEwLCBhMjExPTIxMSwgYTIxMj0yMTIsIGEyMTM9MjEzLCBhMjE0PTIxNCwgYTIxNT0yMTUsCisuLi4gICBhMjE2PTIxNiwgYTIxNz0yMTcsIGEyMTg9MjE4LCBhMjE5PTIxOSwgYTIyMD0yMjAsIGEyMjE9MjIxLCBhMjIyPTIyMiwKKy4uLiAgIGEyMjM9MjIzLCBhMjI0PTIyNCwgYTIyNT0yMjUsIGEyMjY9MjI2LCBhMjI3PTIyNywgYTIyOD0yMjgsIGEyMjk9MjI5LAorLi4uICAgYTIzMD0yMzAsIGEyMzE9MjMxLCBhMjMyPTIzMiwgYTIzMz0yMzMsIGEyMzQ9MjM0LCBhMjM1PTIzNSwgYTIzNj0yMzYsCisuLi4gICBhMjM3PTIzNywgYTIzOD0yMzgsIGEyMzk9MjM5LCBhMjQwPTI0MCwgYTI0MT0yNDEsIGEyNDI9MjQyLCBhMjQzPTI0MywKKy4uLiAgIGEyNDQ9MjQ0LCBhMjQ1PTI0NSwgYTI0Nj0yNDYsIGEyNDc9MjQ3LCBhMjQ4PTI0OCwgYTI0OT0yNDksIGEyNTA9MjUwLAorLi4uICAgYTI1MT0yNTEsIGEyNTI9MjUyLCBhMjUzPTI1MywgYTI1ND0yNTQsIGEyNTU9MjU1KQogVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICBGaWxlICI8ZG9jdGVzdCB0ZXN0LnRlc3Rfc3ludGF4WzI2XT4iLCBsaW5lIDEKKyAgRmlsZSAiPGRvY3Rlc3QgdGVzdC50ZXN0X3N5bnRheFszNV0+IiwgbGluZSAxCitTeW50YXhFcnJvcjogbW9yZSB0aGFuIDI1NSBhcmd1bWVudHMKKworPj4+IGNsYXNzIEM6CisuLi4gICAgIGRlZiBtZXRoKHNlbGYsICphcmdzKToKKy4uLiAgICAgICAgIHJldHVybiBhcmdzCis+Pj4gb2JqID0gQygpCis+Pj4gb2JqLm1ldGgoCisuLi4gICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwKKy4uLiAgIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsCisuLi4gICAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LAorLi4uICAgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywKKy4uLiAgIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsCisuLi4gICA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LAorLi4uICAgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsCisuLi4gICAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwKKy4uLiAgIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LAorLi4uICAgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsCisuLi4gICAxNjQsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywKKy4uLiAgIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLAorLi4uICAgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsCisuLi4gICAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwKKy4uLiAgIDIyMCwgMjIxLCAyMjIsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLAorLi4uICAgMjM0LCAyMzUsIDIzNiwgMjM3LCAyMzgsIDIzOSwgMjQwLCAyNDEsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMjQ2LCAyNDcsCisuLi4gICAyNDgsIDI0OSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQpICAjIGRvY3Rlc3Q6ICtFTExJUFNJUworKDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAuLi4sIDI1MiwgMjUzLCAyNTQpCis+Pj4gb2JqLm1ldGgoCisuLi4gICAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwKKy4uLiAgIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAzNiwgMzcsCisuLi4gICAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCA0NCwgNDUsIDQ2LCA0NywgNDgsIDQ5LCA1MCwgNTEsIDUyLCA1MywgNTQsIDU1LAorLi4uICAgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywKKy4uLiAgIDc0LCA3NSwgNzYsIDc3LCA3OCwgNzksIDgwLCA4MSwgODIsIDgzLCA4NCwgODUsIDg2LCA4NywgODgsIDg5LCA5MCwgOTEsCisuLi4gICA5MiwgOTMsIDk0LCA5NSwgOTYsIDk3LCA5OCwgOTksIDEwMCwgMTAxLCAxMDIsIDEwMywgMTA0LCAxMDUsIDEwNiwgMTA3LAorLi4uICAgMTA4LCAxMDksIDExMCwgMTExLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAxMTgsIDExOSwgMTIwLCAxMjEsCisuLi4gICAxMjIsIDEyMywgMTI0LCAxMjUsIDEyNiwgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwKKy4uLiAgIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LAorLi4uICAgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsIDE1NSwgMTU2LCAxNTcsIDE1OCwgMTU5LCAxNjAsIDE2MSwgMTYyLCAxNjMsCisuLi4gICAxNjQsIDE2NSwgMTY2LCAxNjcsIDE2OCwgMTY5LCAxNzAsIDE3MSwgMTcyLCAxNzMsIDE3NCwgMTc1LCAxNzYsIDE3NywKKy4uLiAgIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLAorLi4uICAgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMDUsCisuLi4gICAyMDYsIDIwNywgMjA4LCAyMDksIDIxMCwgMjExLCAyMTIsIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwKKy4uLiAgIDIyMCwgMjIxLCAyMjIsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLAorLi4uICAgMjM0LCAyMzUsIDIzNiwgMjM3LCAyMzgsIDIzOSwgMjQwLCAyNDEsIDI0MiwgMjQzLCAyNDQsIDI0NSwgMjQ2LCAyNDcsCisuLi4gICAyNDgsIDI0OSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NSkKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgRmlsZSAiPGRvY3Rlc3QgdGVzdC50ZXN0X3N5bnRheFszOF0+IiwgbGluZSAxCiBTeW50YXhFcnJvcjogbW9yZSB0aGFuIDI1NSBhcmd1bWVudHMKIAogPj4+IGYobGFtYmRhIHg6IHhbMF0gPSAzKQpAQCAtNDAzLDYgKzUwOCwxNiBAQAogICAgICAuLi4KICAgIFN5bnRheEVycm9yOiB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MKIAorTWlzdXNlIG9mIHRoZSBnbG9iYWwgc3RhdGVtZW50IGNhbiBsZWFkIHRvIGEgZmV3IHVuaXF1ZSBzeW50YXggZXJyb3JzLgorCisgICA+Pj4gZGVmIGYoeCk6CisgICAuLi4gICAgIGdsb2JhbCB4CisgICAuLi4gIyBkb2N0ZXN0OiArRUxMSVBTSVMKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBTeW50YXhFcnJvcjogbmFtZSAneCcgaXMgbG9jYWwgYW5kIGdsb2JhbCAoPGRvY3Rlc3QgLi4uPiwgbGluZSAxKQorCisKIFRoaXMgdGVzdHMgYXNzaWdubWVudC1jb250ZXh0OyB0aGVyZSB3YXMgYSBidWcgaW4gUHl0aG9uIDIuNSB3aGVyZSBjb21waWxpbmcKIGEgY29tcGxleCAnaWYnIChvbmUgd2l0aCAnZWxpZicpIHdvdWxkIGZhaWwgdG8gbm90aWNlIGFuIGludmFsaWQgc3VpdGUsCiBsZWFkaW5nIHRvIHNwdXJpb3VzIGVycm9ycy4KQEAgLTQ1OCw5ICs1NzMsMjEgQEAKICAgICAgRmlsZSAiPGRvY3Rlc3QgdGVzdC50ZXN0X3N5bnRheFs0OF0+IiwgbGluZSA2CiAgICBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGZ1bmN0aW9uIGNhbGwKIAorVGVzdCB0aGUgInJhaXNlIFgsIFlbLCBaXSIgZm9ybToKKworICAgPj4+IHJhaXNlIEFyaXRobWV0aWNFcnJvciwgJ2JhZCBudW1iZXInCisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgQXJpdGhtZXRpY0Vycm9yOiBiYWQgbnVtYmVyCisgICA+Pj4gcmFpc2UgQXJpdGhtZXRpY0Vycm9yLCAnYmFkIG51bWJlcicsIE5vbmUKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBBcml0aG1ldGljRXJyb3I6IGJhZCBudW1iZXIKKworCiA+Pj4gZihhPTIzLCBhPTIzNCkKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgIC4uLgorICAuLi4KICAgRmlsZSAiPGRvY3Rlc3QgdGVzdC50ZXN0X3N5bnRheFs0OV0+IiwgbGluZSAxCiBTeW50YXhFcnJvcjoga2V5d29yZCBhcmd1bWVudCByZXBlYXRlZAogCkBAIC00NzYsNiArNjAzLDEyIEBACiAgICBGaWxlICI8ZG9jdGVzdCB0ZXN0LnRlc3Rfc3ludGF4WzUwXT4iLCBsaW5lIDEKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gbGl0ZXJhbAogCitDb3JuZXItY2FzZSB0aGF0IHVzZWQgdG8gZmFpbCB0byByYWlzZSB0aGUgY29ycmVjdCBlcnJvcjoKKworICAgID4+PiBkZWYgZih4PWxhbWJkYSBfX2RlYnVnX186MCk6IHBhc3MKKyAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgU3ludGF4RXJyb3I6IGNhbm5vdCBhc3NpZ24gdG8gX19kZWJ1Z19fCisKIENvcm5lci1jYXNlIHRoYXQgdXNlZCB0byBjcmFzaDoKIAogICAgID4+PiBkZWYgZigqeHgsICoqX19kZWJ1Z19fKTogcGFzcwpAQCAtNDg4LDEyICs2MjEsMTIgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCiAKLWZyb20gdGVzdCBpbXBvcnQgdGVzdF9zdXBwb3J0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgU3ludGF4VGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIF9jaGVja19lcnJvcihzZWxmLCBjb2RlLCBlcnJ0ZXh0LAotICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9Ijx0ZXN0Y2FzZT4iLCBtb2RlPSJleGVjIiwgc3ViY2xhc3M9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT0iPHRlc3RjYXNlPiIsIG1vZGU9ImV4ZWMiLCBzdWJjbGFzcz1Ob25lLCBsaW5lbm89Tm9uZSwgb2Zmc2V0PU5vbmUpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGNvbXBpbGluZyBjb2RlIHJhaXNlcyBTeW50YXhFcnJvciB3aXRoIGVycnRleHQuCiAKICAgICAgICAgZXJydGVzdCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbiB0aGF0IG11c3QgYmUgcHJlc2VudCBpbiB0aGUKQEAgLTUwMSwxMyArNjM0LDE5IEBACiAgICAgICAgIGlzIHRoZSBleHBlY3RlZCBzdWJjbGFzcyBvZiBTeW50YXhFcnJvciAoZS5nLiBJbmRlbnRhdGlvbkVycm9yKS4KICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbXBpbGUoY29kZSwgZmlsZW5hbWUsIG1vZGUpCi0gICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciwgZXJyOgorICAgICAgICAgICAgY29tcGlsZShjb2RlLCBmaWxlbmFtZSBvciAiPHRlc3RjYXNlPiIsIG1vZGUpCisgICAgICAgIGV4Y2VwdCBTeW50YXhFcnJvciBhcyBlcnI6CiAgICAgICAgICAgICBpZiBzdWJjbGFzcyBhbmQgbm90IGlzaW5zdGFuY2UoZXJyLCBzdWJjbGFzcyk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJTeW50YXhFcnJvciBpcyBub3QgYSAlcyIgJSBzdWJjbGFzcy5fX25hbWVfXykKICAgICAgICAgICAgIG1vID0gcmUuc2VhcmNoKGVycnRleHQsIHN0cihlcnIpKQogICAgICAgICAgICAgaWYgbW8gaXMgTm9uZToKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiVzIGRpZCBub3QgY29udGFpbiAnJXInIiAlIChlcnIsIGVycnRleHQsKSkKKyAgICAgICAgICAgIGlmIGZpbGVuYW1lIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLmZpbGVuYW1lLCBmaWxlbmFtZSkKKyAgICAgICAgICAgIGlmIGxpbmVubyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5saW5lbm8sIGxpbmVubykKKyAgICAgICAgICAgIGlmIG9mZnNldCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyci5vZmZzZXQsIG9mZnNldCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgiY29tcGlsZSgpIGRpZCBub3QgcmFpc2UgU3ludGF4RXJyb3IiKQogCkBAIC01MTUsNiArNjU0LDExIEBACiAgICAgICAgIHNlbGYuX2NoZWNrX2Vycm9yKCJkZWYgZigoeCk9MjMpOiBwYXNzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmVudGhlc2l6ZWQgYXJnIHdpdGggZGVmYXVsdCIpCiAKKyAgICBkZWYgdGVzdF9hc3NpZ25fcmVwcihzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3B5M2tfd2FybmluZ3MoKCdiYWNrcXVvdGUgbm90IHN1cHBvcnRlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW50YXhXYXJuaW5nKSk6CisgICAgICAgICAgICBzZWxmLl9jaGVja19lcnJvcigiYDFgID0gMSIsICJhc3NpZ24gdG8gcmVwciIpCisKICAgICBkZWYgdGVzdF9hc3NpZ25fY2FsbChzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tfZXJyb3IoImYoKSA9IDEiLCAiYXNzaWduIikKIApAQCAtNTI0LDI4ICs2NjgsNDggQEAKICAgICBkZWYgdGVzdF9nbG9iYWxfZXJyX3RoZW5fd2FybihzZWxmKToKICAgICAgICAgIyBCdWcgdGlja2xlcjogIFRoZSBTeW50YXhFcnJvciByYWlzZWQgZm9yIG9uZSBnbG9iYWwgc3RhdGVtZW50CiAgICAgICAgICMgc2hvdWxkbid0IGJlIGNsb2JiZXJlZCBieSBhIFN5bnRheFdhcm5pbmcgaXNzdWVkIGZvciBhIGxhdGVyIG9uZS4KLSAgICAgICAgc291cmNlID0gcmUuc3ViKCcoP20pXiAqOicsICcnLCAiIiJcCi0gICAgICAgICAgICA6ZGVmIGVycm9yKGEpOgotICAgICAgICAgICAgOiAgICBnbG9iYWwgYSAgIyBTeW50YXhFcnJvcgotICAgICAgICAgICAgOmRlZiB3YXJuaW5nKCk6Ci0gICAgICAgICAgICA6ICAgIGIgPSAxCi0gICAgICAgICAgICA6ICAgIGdsb2JhbCBiICAjIFN5bnRheFdhcm5pbmcKLSAgICAgICAgICAgIDoiIiIpCi0gICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKGFjdGlvbj0naWdub3JlJywgY2F0ZWdvcnk9U3ludGF4V2FybmluZykKLSAgICAgICAgc2VsZi5fY2hlY2tfZXJyb3Ioc291cmNlLCAiZ2xvYmFsIikKLSAgICAgICAgd2FybmluZ3MuZmlsdGVycy5wb3AoMCkKKyAgICAgICAgc291cmNlID0gIiIiaWYgMToKKyAgICAgICAgICAgIGRlZiBlcnJvcihhKToKKyAgICAgICAgICAgICAgICBnbG9iYWwgYSAgIyBTeW50YXhFcnJvcgorICAgICAgICAgICAgZGVmIHdhcm5pbmcoKToKKyAgICAgICAgICAgICAgICBiID0gMQorICAgICAgICAgICAgICAgIGdsb2JhbCBiICAjIFN5bnRheFdhcm5pbmcKKyAgICAgICAgICAgICIiIgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCIuKmFzc2lnbmVkIHRvIGJlZm9yZSBnbG9iYWwgZGVjbGFyYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bnRheFdhcm5pbmcpKToKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX2Vycm9yKHNvdXJjZSwgImxvY2FsIGFuZCBnbG9iYWwiLCBsaW5lbm89MikKKworICAgIGRlZiB0ZXN0X21pc3VzZV9nbG9iYWwoc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICIiImlmIDE6CisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIHByaW50KHgpCisgICAgICAgICAgICAgICAgZ2xvYmFsIHgKKyAgICAgICAgICAgICIiIgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcuKnVzZWQgcHJpb3IgdG8gZ2xvYmFsIGRlY2xhcmF0aW9uJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW50YXhXYXJuaW5nKSk6CisgICAgICAgICAgICBjb21waWxlKHNvdXJjZSwgJzx0ZXN0Y2FzZT4nLCAnZXhlYycpCisKKyAgICBkZWYgdGVzdF9taXN1c2VfZ2xvYmFsXzIoc2VsZik6CisgICAgICAgIHNvdXJjZSA9ICIiImlmIDE6CisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIHggPSAxCisgICAgICAgICAgICAgICAgZ2xvYmFsIHgKKyAgICAgICAgICAgICIiIgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcuKmFzc2lnbmVkIHRvIGJlZm9yZSBnbG9iYWwgZGVjbGFyYXRpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5bnRheFdhcm5pbmcpKToKKyAgICAgICAgICAgIGNvbXBpbGUoc291cmNlLCAnPHRlc3RjYXNlPicsICdleGVjJykKIAogICAgIGRlZiB0ZXN0X2JyZWFrX291dHNpZGVfbG9vcChzZWxmKToKICAgICAgICAgc2VsZi5fY2hlY2tfZXJyb3IoImJyZWFrIiwgIm91dHNpZGUgbG9vcCIpCiAKICAgICBkZWYgdGVzdF9kZWxldGVfZGVyZWYoc2VsZik6Ci0gICAgICAgIHNvdXJjZSA9IHJlLnN1YignKD9tKV4gKjonLCAnJywgIiIiXAotICAgICAgICAgICAgOmRlZiBmb28oeCk6Ci0gICAgICAgICAgICA6ICBkZWYgYmFyKCk6Ci0gICAgICAgICAgICA6ICAgIHByaW50IHgKLSAgICAgICAgICAgIDogIGRlbCB4Ci0gICAgICAgICAgICA6IiIiKQotICAgICAgICBzZWxmLl9jaGVja19lcnJvcihzb3VyY2UsICJuZXN0ZWQgc2NvcGUiKQorICAgICAgICBzb3VyY2UgPSAiIiJpZiAxOgorICAgICAgICAgICAgZGVmIGZvbyh4KToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgICAgIHByaW50KHgpCisgICAgICAgICAgICAgICAgZGVsIHgKKyAgICAgICAgICAgICIiIgorICAgICAgICBzZWxmLl9jaGVja19lcnJvcihzb3VyY2UsICJuZXN0ZWQgc2NvcGUiLCBmaWxlbmFtZT1Ob25lKQogCiAgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9pbmRlbnQoc2VsZik6CiAgICAgICAgIHNlbGYuX2NoZWNrX2Vycm9yKCJmb28oKVxuIGJhcigpXG4iLCAidW5leHBlY3RlZCBpbmRlbnQiLApAQCAtNTY0LDExICs3MjgsOSBAQAogICAgICAgICBzZWxmLl9jaGVja19lcnJvcigiaW50KGJhc2U9MTAsICcyJykiLCAibm9uLWtleXdvcmQgYXJnIikKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3ludGF4VGVzdENhc2UpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoU3ludGF4VGVzdENhc2UpCiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N5bnRheAotICAgIHdpdGggdGVzdF9zdXBwb3J0LmNoZWNrX3B5M2tfd2FybmluZ3MoKCJiYWNrcXVvdGUgbm90IHN1cHBvcnRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeW50YXhXYXJuaW5nKSk6Ci0gICAgICAgIHRlc3Rfc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X3N5bnRheCwgdmVyYm9zaXR5PVRydWUpCisgICAgc3VwcG9ydC5ydW5fZG9jdGVzdCh0ZXN0X3N5bnRheCwgdmVyYm9zaXR5PVRydWUpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKaW5kZXggOTViZDI2ZS4uOTM0MjcxNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKQEAgLTE2NCw2ICsxNjQsMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIGInJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKIAorICAgICAgICAjIHRlc3QgdGhhdCB0aGUgZXhpdCBtYWNoaW5lcnkgaGFuZGxlcyBsb25nIGV4aXQgY29kZXMKKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctYycsICdyYWlzZSBTeXN0ZW1FeGl0KDQ3TCknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCA0NykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQsIGInJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnIsIGInJykKKworICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctYycsICdyYWlzZSBTeXN0ZW1FeGl0KDBMKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LCBiJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyLCBiJycpCisKICAgICAgICAgZGVmIGNoZWNrX2V4aXRfbWVzc2FnZShjb2RlLCBleHBlY3RlZCwgKiplbnZfdmFycyk6CiAgICAgICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1jJywgY29kZSwgKiplbnZfdmFycykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDEpCkBAIC03MzcsNyArNzQ4LDEwIEBACiAgICAgICAgICMgdHVwbGVpdGVyYXRvcgogICAgICAgICBjaGVjayhpdGVyKCgpKSwgc2l6ZSgnbFAnKSkKICAgICAgICAgIyB0eXBlCi0gICAgICAgIHMgPSB2c2l6ZSgnUDJQMTVQbDRQUDlQUDExUEknICAgIyBQeVR5cGVPYmplY3QKKyAgICAgICAgZm10ID0gJ1AyUDE1UGw0UFA5UFAxMVBJJworICAgICAgICBpZiBoYXNhdHRyKHN5cywgJ2dldGNvdW50cycpOgorICAgICAgICAgICAgZm10ICs9ICczUDJQJworICAgICAgICBzID0gdnNpemUoZm10ICsgICAgICAgICAgICAgICAgICMgUHlUeXBlT2JqZWN0CiAgICAgICAgICAgICAgICAgICAnMzlQJyAgICAgICAgICAgICAgICAgIyBQeU51bWJlck1ldGhvZHMKICAgICAgICAgICAgICAgICAgICczUCcgICAgICAgICAgICAgICAgICAjIFB5TWFwcGluZ01ldGhvZHMKICAgICAgICAgICAgICAgICAgICcxMFAnICAgICAgICAgICAgICAgICAjIFB5U2VxdWVuY2VNZXRob2RzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CmluZGV4IGNjOWE1ODEuLmQ4NzM3YWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CkBAIC01LDYgKzUsMTkgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBkaWZmbGliCiBpbXBvcnQgZ2MKK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcworCitjbGFzcyB0cmFjZWNvbnRleHQ6CisgICAgIiIiQ29udGV4IG1hbmFnZXIgdGhhdCB0cmFjZXMgaXRzIGVudGVyIGFuZCBleGl0LiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRwdXQsIHZhbHVlKToKKyAgICAgICAgc2VsZi5vdXRwdXQgPSBvdXRwdXQKKyAgICAgICAgc2VsZi52YWx1ZSA9IHZhbHVlCisKKyAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgorICAgICAgICBzZWxmLm91dHB1dC5hcHBlbmQoc2VsZi52YWx1ZSkKKworICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2luZm8pOgorICAgICAgICBzZWxmLm91dHB1dC5hcHBlbmQoLXNlbGYudmFsdWUpCiAKICMgQSB2ZXJ5IGJhc2ljIGV4YW1wbGUuICBJZiB0aGlzIGZhaWxzLCB3ZSdyZSBpbiBkZWVwIHRyb3VibGUuCiBkZWYgYmFzaWMoKToKQEAgLTQ2NywzMTEgKzQ4MCw1MjggQEAKICMgY29tbWFuZCAoYWthLiAiU2V0IG5leHQgc3RhdGVtZW50IikuCiAKIGNsYXNzIEp1bXBUcmFjZXI6Ci0gICAgIiIiRGVmaW5lcyBhIHRyYWNlIGZ1bmN0aW9uIHRoYXQganVtcHMgZnJvbSBvbmUgcGxhY2UgdG8gYW5vdGhlciwKLSAgICB3aXRoIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGxpbmVzIG9mIHRoZSBqdW1wIGJlaW5nIGRlZmluZWQgYnkKLSAgICB0aGUgJ2p1bXAnIHByb3BlcnR5IG9mIHRoZSBmdW5jdGlvbiB1bmRlciB0ZXN0LiIiIgorICAgICIiIkRlZmluZXMgYSB0cmFjZSBmdW5jdGlvbiB0aGF0IGp1bXBzIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZnVuY3Rpb24pOgotICAgICAgICBzZWxmLmZ1bmN0aW9uID0gZnVuY3Rpb24KLSAgICAgICAgc2VsZi5qdW1wRnJvbSA9IGZ1bmN0aW9uLmp1bXBbMF0KLSAgICAgICAgc2VsZi5qdW1wVG8gPSBmdW5jdGlvbi5qdW1wWzFdCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmN0aW9uLCBqdW1wRnJvbSwganVtcFRvLCBldmVudD0nbGluZScsCisgICAgICAgICAgICAgICAgIGRlY29yYXRlZD1GYWxzZSk6CisgICAgICAgIHNlbGYuY29kZSA9IGZ1bmN0aW9uLmZ1bmNfY29kZQorICAgICAgICBzZWxmLmp1bXBGcm9tID0ganVtcEZyb20KKyAgICAgICAgc2VsZi5qdW1wVG8gPSBqdW1wVG8KKyAgICAgICAgc2VsZi5ldmVudCA9IGV2ZW50CisgICAgICAgIHNlbGYuZmlyc3RMaW5lID0gTm9uZSBpZiBkZWNvcmF0ZWQgZWxzZSBzZWxmLmNvZGUuY29fZmlyc3RsaW5lbm8KICAgICAgICAgc2VsZi5kb25lID0gRmFsc2UKIAogICAgIGRlZiB0cmFjZShzZWxmLCBmcmFtZSwgZXZlbnQsIGFyZyk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmRvbmUgYW5kIGZyYW1lLmZfY29kZSA9PSBzZWxmLmZ1bmN0aW9uLmZ1bmNfY29kZToKLSAgICAgICAgICAgIGZpcnN0TGluZSA9IGZyYW1lLmZfY29kZS5jb19maXJzdGxpbmVubwotICAgICAgICAgICAgaWYgZXZlbnQgPT0gJ2xpbmUnIGFuZCBmcmFtZS5mX2xpbmVubyA9PSBmaXJzdExpbmUgKyBzZWxmLmp1bXBGcm9tOgorICAgICAgICBpZiBzZWxmLmRvbmU6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIyBmcmFtZS5mX2NvZGUuY29fZmlyc3RsaW5lbm8gaXMgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIGRlY29yYXRvciB3aGVuCisgICAgICAgICMgJ2Z1bmN0aW9uJyBpcyBkZWNvcmF0ZWQgYW5kIHRoZSBkZWNvcmF0b3IgbWF5IGJlIHdyaXR0ZW4gdXNpbmcKKyAgICAgICAgIyBtdWx0aXBsZSBwaHlzaWNhbCBsaW5lcyB3aGVuIGl0IGlzIHRvbyBsb25nLiBVc2UgdGhlIGZpcnN0IGxpbmUKKyAgICAgICAgIyB0cmFjZSBldmVudCBpbiAnZnVuY3Rpb24nIHRvIGZpbmQgdGhlIGZpcnN0IGxpbmUgb2YgJ2Z1bmN0aW9uJy4KKyAgICAgICAgaWYgKHNlbGYuZmlyc3RMaW5lIGlzIE5vbmUgYW5kIGZyYW1lLmZfY29kZSA9PSBzZWxmLmNvZGUgYW5kCisgICAgICAgICAgICAgICAgZXZlbnQgPT0gJ2xpbmUnKToKKyAgICAgICAgICAgIHNlbGYuZmlyc3RMaW5lID0gZnJhbWUuZl9saW5lbm8gLSAxCisgICAgICAgIGlmIChldmVudCA9PSBzZWxmLmV2ZW50IGFuZCBzZWxmLmZpcnN0TGluZSBhbmQKKyAgICAgICAgICAgICAgICBmcmFtZS5mX2xpbmVubyA9PSBzZWxmLmZpcnN0TGluZSArIHNlbGYuanVtcEZyb20pOgorICAgICAgICAgICAgZiA9IGZyYW1lCisgICAgICAgICAgICB3aGlsZSBmIGlzIG5vdCBOb25lIGFuZCBmLmZfY29kZSAhPSBzZWxmLmNvZGU6CisgICAgICAgICAgICAgICAgZiA9IGYuZl9iYWNrCisgICAgICAgICAgICBpZiBmIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICMgQ29wZSB3aXRoIG5vbi1pbnRlZ2VyIHNlbGYuanVtcFRvIChiZWNhdXNlIG9mCiAgICAgICAgICAgICAgICAgIyBub19qdW1wX3RvX25vbl9pbnRlZ2VycyBiZWxvdykuCiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmcmFtZS5mX2xpbmVubyA9IGZpcnN0TGluZSArIHNlbGYuanVtcFRvCisgICAgICAgICAgICAgICAgICAgIGZyYW1lLmZfbGluZW5vID0gc2VsZi5maXJzdExpbmUgKyBzZWxmLmp1bXBUbwogICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIGZyYW1lLmZfbGluZW5vID0gc2VsZi5qdW1wVG8KICAgICAgICAgICAgICAgICBzZWxmLmRvbmUgPSBUcnVlCiAgICAgICAgIHJldHVybiBzZWxmLnRyYWNlCiAKLSMgVGhlIGZpcnN0IHNldCBvZiAnanVtcCcgdGVzdHMgYXJlIGZvciB0aGluZ3MgdGhhdCBhcmUgYWxsb3dlZDoKLQotZGVmIGp1bXBfc2ltcGxlX2ZvcndhcmRzKG91dHB1dCk6Ci0gICAgb3V0cHV0LmFwcGVuZCgxKQotICAgIG91dHB1dC5hcHBlbmQoMikKLSAgICBvdXRwdXQuYXBwZW5kKDMpCi0KLWp1bXBfc2ltcGxlX2ZvcndhcmRzLmp1bXAgPSAoMSwgMykKLWp1bXBfc2ltcGxlX2ZvcndhcmRzLm91dHB1dCA9IFszXQotCi1kZWYganVtcF9zaW1wbGVfYmFja3dhcmRzKG91dHB1dCk6Ci0gICAgb3V0cHV0LmFwcGVuZCgxKQotICAgIG91dHB1dC5hcHBlbmQoMikKLQotanVtcF9zaW1wbGVfYmFja3dhcmRzLmp1bXAgPSAoMiwgMSkKLWp1bXBfc2ltcGxlX2JhY2t3YXJkcy5vdXRwdXQgPSBbMSwgMSwgMl0KLQotZGVmIGp1bXBfb3V0X29mX2Jsb2NrX2ZvcndhcmRzKG91dHB1dCk6Ci0gICAgZm9yIGkgaW4gMSwgMjoKLSAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQotICAgICAgICBmb3IgaiBpbiBbM106ICAjIEFsc28gdGVzdHMganVtcGluZyBvdmVyIGEgYmxvY2sKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNCkKLSAgICBvdXRwdXQuYXBwZW5kKDUpCi0KLWp1bXBfb3V0X29mX2Jsb2NrX2ZvcndhcmRzLmp1bXAgPSAoMywgNSkKLWp1bXBfb3V0X29mX2Jsb2NrX2ZvcndhcmRzLm91dHB1dCA9IFsyLCA1XQotCi1kZWYganVtcF9vdXRfb2ZfYmxvY2tfYmFja3dhcmRzKG91dHB1dCk6Ci0gICAgb3V0cHV0LmFwcGVuZCgxKQotICAgIGZvciBpIGluIFsxXToKLSAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQotICAgICAgICBmb3IgaiBpbiBbMl06ICAjIEFsc28gdGVzdHMganVtcGluZyBvdmVyIGEgYmxvY2sKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKLSAgICAgICAgb3V0cHV0LmFwcGVuZCg2KQotICAgIG91dHB1dC5hcHBlbmQoNykKLQotanVtcF9vdXRfb2ZfYmxvY2tfYmFja3dhcmRzLmp1bXAgPSAoNiwgMSkKLWp1bXBfb3V0X29mX2Jsb2NrX2JhY2t3YXJkcy5vdXRwdXQgPSBbMSwgMywgNSwgMSwgMywgNSwgNiwgN10KLQotZGVmIGp1bXBfdG9fY29kZWxlc3NfbGluZShvdXRwdXQpOgotICAgIG91dHB1dC5hcHBlbmQoMSkKLSAgICAjIEp1bXBpbmcgdG8gdGhpcyBsaW5lIHNob3VsZCBza2lwIHRvIHRoZSBuZXh0IG9uZS4KLSAgICBvdXRwdXQuYXBwZW5kKDMpCi0KLWp1bXBfdG9fY29kZWxlc3NfbGluZS5qdW1wID0gKDEsIDIpCi1qdW1wX3RvX2NvZGVsZXNzX2xpbmUub3V0cHV0ID0gWzNdCi0KLWRlZiBqdW1wX3RvX3NhbWVfbGluZShvdXRwdXQpOgotICAgIG91dHB1dC5hcHBlbmQoMSkKLSAgICBvdXRwdXQuYXBwZW5kKDIpCi0gICAgb3V0cHV0LmFwcGVuZCgzKQotCi1qdW1wX3RvX3NhbWVfbGluZS5qdW1wID0gKDIsIDIpCi1qdW1wX3RvX3NhbWVfbGluZS5vdXRwdXQgPSBbMSwgMiwgM10KLQotIyBUZXN0cyBqdW1waW5nIHdpdGhpbiBhIGZpbmFsbHkgYmxvY2ssIGFuZCBvdmVyIG9uZS4KLWRlZiBqdW1wX2luX25lc3RlZF9maW5hbGx5KG91dHB1dCk6Ci0gICAgdHJ5OgotICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCi0gICAgZmluYWxseToKLSAgICAgICAgb3V0cHV0LmFwcGVuZCg0KQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDYpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDgpCi0gICAgICAgIG91dHB1dC5hcHBlbmQoOSkKLQotanVtcF9pbl9uZXN0ZWRfZmluYWxseS5qdW1wID0gKDQsIDkpCi1qdW1wX2luX25lc3RlZF9maW5hbGx5Lm91dHB1dCA9IFsyLCA5XQotCi1kZWYganVtcF9pbmZpbml0ZV93aGlsZV9sb29wKG91dHB1dCk6Ci0gICAgb3V0cHV0LmFwcGVuZCgxKQotICAgIHdoaWxlIDE6Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoMikKLSAgICBvdXRwdXQuYXBwZW5kKDMpCi0KLWp1bXBfaW5maW5pdGVfd2hpbGVfbG9vcC5qdW1wID0gKDMsIDQpCi1qdW1wX2luZmluaXRlX3doaWxlX2xvb3Aub3V0cHV0ID0gWzEsIDNdCi0KLSMgVGhlIHNlY29uZCBzZXQgb2YgJ2p1bXAnIHRlc3RzIGFyZSBmb3IgdGhpbmdzIHRoYXQgYXJlIG5vdCBhbGxvd2VkOgotCi1kZWYgbm9fanVtcF90b29fZmFyX2ZvcndhcmRzKG91dHB1dCk6Ci0gICAgdHJ5OgotICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCi0gICAgICAgIG91dHB1dC5hcHBlbmQoMykKLSAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgb3V0cHV0LmFwcGVuZCgnYWZ0ZXInIGluIHN0cihlKSkKLQotbm9fanVtcF90b29fZmFyX2ZvcndhcmRzLmp1bXAgPSAoMywgNikKLW5vX2p1bXBfdG9vX2Zhcl9mb3J3YXJkcy5vdXRwdXQgPSBbMiwgVHJ1ZV0KLQotZGVmIG5vX2p1bXBfdG9vX2Zhcl9iYWNrd2FyZHMob3V0cHV0KToKLSAgICB0cnk6Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoMikKLSAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICBvdXRwdXQuYXBwZW5kKCdiZWZvcmUnIGluIHN0cihlKSkKLQotbm9fanVtcF90b29fZmFyX2JhY2t3YXJkcy5qdW1wID0gKDMsIC0xKQotbm9fanVtcF90b29fZmFyX2JhY2t3YXJkcy5vdXRwdXQgPSBbMiwgVHJ1ZV0KLQotIyBUZXN0IGVhY2gga2luZCBvZiAnZXhjZXB0JyBsaW5lLgotZGVmIG5vX2p1bXBfdG9fZXhjZXB0XzEob3V0cHV0KToKLSAgICB0cnk6Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoMikKLSAgICBleGNlcHQ6Ci0gICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICBvdXRwdXQuYXBwZW5kKCdleGNlcHQnIGluIHN0cihlKSkKLQotbm9fanVtcF90b19leGNlcHRfMS5qdW1wID0gKDIsIDMpCi1ub19qdW1wX3RvX2V4Y2VwdF8xLm91dHB1dCA9IFtUcnVlXQotCi1kZWYgbm9fanVtcF90b19leGNlcHRfMihvdXRwdXQpOgotICAgIHRyeToKLSAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICBlID0gc3lzLmV4Y19pbmZvKClbMV0KLSAgICAgICAgb3V0cHV0LmFwcGVuZCgnZXhjZXB0JyBpbiBzdHIoZSkpCi0KLW5vX2p1bXBfdG9fZXhjZXB0XzIuanVtcCA9ICgyLCAzKQotbm9fanVtcF90b19leGNlcHRfMi5vdXRwdXQgPSBbVHJ1ZV0KLQotZGVmIG5vX2p1bXBfdG9fZXhjZXB0XzMob3V0cHV0KToKLSAgICB0cnk6Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoMikKLSAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgb3V0cHV0LmFwcGVuZCgnZXhjZXB0JyBpbiBzdHIoZSkpCi0KLW5vX2p1bXBfdG9fZXhjZXB0XzMuanVtcCA9ICgyLCAzKQotbm9fanVtcF90b19leGNlcHRfMy5vdXRwdXQgPSBbVHJ1ZV0KLQotZGVmIG5vX2p1bXBfdG9fZXhjZXB0XzQob3V0cHV0KToKLSAgICB0cnk6Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoMikKLSAgICBleGNlcHQgKFZhbHVlRXJyb3IsIFJ1bnRpbWVFcnJvciksIGU6Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoJ2V4Y2VwdCcgaW4gc3RyKGUpKQotCi1ub19qdW1wX3RvX2V4Y2VwdF80Lmp1bXAgPSAoMiwgMykKLW5vX2p1bXBfdG9fZXhjZXB0XzQub3V0cHV0ID0gW1RydWVdCi0KLWRlZiBub19qdW1wX2ZvcndhcmRzX2ludG9fYmxvY2sob3V0cHV0KToKLSAgICB0cnk6Ci0gICAgICAgIG91dHB1dC5hcHBlbmQoMikKLSAgICAgICAgZm9yIGkgaW4gMSwgMjoKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNCkKLSAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgb3V0cHV0LmFwcGVuZCgnaW50bycgaW4gc3RyKGUpKQotCi1ub19qdW1wX2ZvcndhcmRzX2ludG9fYmxvY2suanVtcCA9ICgyLCA0KQotbm9fanVtcF9mb3J3YXJkc19pbnRvX2Jsb2NrLm91dHB1dCA9IFtUcnVlXQotCi1kZWYgbm9fanVtcF9iYWNrd2FyZHNfaW50b19ibG9jayhvdXRwdXQpOgotICAgIHRyeToKLSAgICAgICAgZm9yIGkgaW4gMSwgMjoKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMykKLSAgICAgICAgb3V0cHV0LmFwcGVuZCg0KQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICBvdXRwdXQuYXBwZW5kKCdpbnRvJyBpbiBzdHIoZSkpCi0KLW5vX2p1bXBfYmFja3dhcmRzX2ludG9fYmxvY2suanVtcCA9ICg0LCAzKQotbm9fanVtcF9iYWNrd2FyZHNfaW50b19ibG9jay5vdXRwdXQgPSBbMywgMywgVHJ1ZV0KLQotZGVmIG5vX2p1bXBfaW50b19maW5hbGx5X2Jsb2NrKG91dHB1dCk6Ci0gICAgdHJ5OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDMpCi0gICAgICAgICAgICB4ID0gMQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg2KQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICBvdXRwdXQuYXBwZW5kKCdmaW5hbGx5JyBpbiBzdHIoZSkpCi0KLW5vX2p1bXBfaW50b19maW5hbGx5X2Jsb2NrLmp1bXAgPSAoNCwgNikKLW5vX2p1bXBfaW50b19maW5hbGx5X2Jsb2NrLm91dHB1dCA9IFszLCA2LCBUcnVlXSAgIyBUaGUgJ2ZpbmFsbHknIHN0aWxsIHJ1bnMKLQotZGVmIG5vX2p1bXBfb3V0X29mX2ZpbmFsbHlfYmxvY2sob3V0cHV0KToKLSAgICB0cnk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNikKLSAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgb3V0cHV0LmFwcGVuZCgnZmluYWxseScgaW4gc3RyKGUpKQotCi1ub19qdW1wX291dF9vZl9maW5hbGx5X2Jsb2NrLmp1bXAgPSAoNSwgMSkKLW5vX2p1bXBfb3V0X29mX2ZpbmFsbHlfYmxvY2sub3V0cHV0ID0gWzMsIFRydWVdCi0KICMgVGhpcyB2ZXJpZmllcyB0aGUgbGluZS1udW1iZXJzLW11c3QtYmUtaW50ZWdlcnMgcnVsZS4KIGRlZiBub19qdW1wX3RvX25vbl9pbnRlZ2VycyhvdXRwdXQpOgogICAgIHRyeToKICAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgorICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CiAgICAgICAgIG91dHB1dC5hcHBlbmQoJ2ludGVnZXInIGluIHN0cihlKSkKIAotbm9fanVtcF90b19ub25faW50ZWdlcnMuanVtcCA9ICgyLCAiU3BhbSIpCi1ub19qdW1wX3RvX25vbl9pbnRlZ2Vycy5vdXRwdXQgPSBbVHJ1ZV0KLQotZGVmIGp1bXBfYWNyb3NzX3dpdGgob3V0cHV0KToKLSAgICB3aXRoIG9wZW4odGVzdF9zdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZnA6Ci0gICAgICAgIHBhc3MKLSAgICB3aXRoIG9wZW4odGVzdF9zdXBwb3J0LlRFU1RGTiwgIndiIikgYXMgZnA6Ci0gICAgICAgIHBhc3MKLWp1bXBfYWNyb3NzX3dpdGguanVtcCA9ICgxLCAzKQotanVtcF9hY3Jvc3Nfd2l0aC5vdXRwdXQgPSBbXQotCiAjIFRoaXMgdmVyaWZpZXMgdGhhdCB5b3UgY2FuJ3Qgc2V0IGZfbGluZW5vIHZpYSBfZ2V0ZnJhbWUgb3Igc2ltaWxhcgogIyB0cmlja2VyeS4KIGRlZiBub19qdW1wX3dpdGhvdXRfdHJhY2VfZnVuY3Rpb24oKToKICAgICB0cnk6CiAgICAgICAgIHByZXZpb3VzX2ZyYW1lID0gc3lzLl9nZXRmcmFtZSgpLmZfYmFjawogICAgICAgICBwcmV2aW91c19mcmFtZS5mX2xpbmVubyA9IHByZXZpb3VzX2ZyYW1lLmZfbGluZW5vCi0gICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6CisgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKICAgICAgICAgIyBUaGlzIGlzIHRoZSBleGNlcHRpb24gd2Ugd2FudGVkOyBtYWtlIHN1cmUgdGhlIGVycm9yIG1lc3NhZ2UKICAgICAgICAgIyB0YWxrcyBhYm91dCB0cmFjZSBmdW5jdGlvbnMuCiAgICAgICAgIGlmICd0cmFjZScgbm90IGluIHN0cihlKToKICAgICAgICAgICAgIHJhaXNlCiAgICAgZWxzZToKICAgICAgICAgIyBTb21ldGhpbmcncyB3cm9uZyAtIHRoZSBleHBlY3RlZCBleGNlcHRpb24gd2Fzbid0IHJhaXNlZC4KLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yLCAiVHJhY2UtZnVuY3Rpb24tbGVzcyBqdW1wIGZhaWxlZCB0byBmYWlsIgorICAgICAgICByYWlzZSBBc3NlcnRpb25FcnJvcigiVHJhY2UtZnVuY3Rpb24tbGVzcyBqdW1wIGZhaWxlZCB0byBmYWlsIikKIAogCiBjbGFzcyBKdW1wVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN5cy5zZXR0cmFjZSwgc3lzLmdldHRyYWNlKCkpCisgICAgICAgIHN5cy5zZXR0cmFjZShOb25lKQorCiAgICAgZGVmIGNvbXBhcmVfanVtcF9vdXRwdXQoc2VsZiwgZXhwZWN0ZWQsIHJlY2VpdmVkKToKICAgICAgICAgaWYgcmVjZWl2ZWQgIT0gZXhwZWN0ZWQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoICJPdXRwdXRzIGRvbid0IG1hdGNoOlxuIiArCiAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZDogIiArIHJlcHIoZXhwZWN0ZWQpICsgIlxuIiArCiAgICAgICAgICAgICAgICAgICAgICAgICJSZWNlaXZlZDogIiArIHJlcHIocmVjZWl2ZWQpKQogCi0gICAgZGVmIHJ1bl90ZXN0KHNlbGYsIGZ1bmMpOgotICAgICAgICB0cmFjZXIgPSBKdW1wVHJhY2VyKGZ1bmMpCisgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIGZ1bmMsIGp1bXBGcm9tLCBqdW1wVG8sIGV4cGVjdGVkLCBlcnJvcj1Ob25lLAorICAgICAgICAgICAgICAgICBldmVudD0nbGluZScsIGRlY29yYXRlZD1GYWxzZSk6CisgICAgICAgIHRyYWNlciA9IEp1bXBUcmFjZXIoZnVuYywganVtcEZyb20sIGp1bXBUbywgZXZlbnQsIGRlY29yYXRlZCkKICAgICAgICAgc3lzLnNldHRyYWNlKHRyYWNlci50cmFjZSkKICAgICAgICAgb3V0cHV0ID0gW10KLSAgICAgICAgZnVuYyhvdXRwdXQpCisgICAgICAgIGlmIGVycm9yIGlzIE5vbmU6CisgICAgICAgICAgICBmdW5jKG91dHB1dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoKmVycm9yKToKKyAgICAgICAgICAgICAgICBmdW5jKG91dHB1dCkKICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCi0gICAgICAgIHNlbGYuY29tcGFyZV9qdW1wX291dHB1dChmdW5jLm91dHB1dCwgb3V0cHV0KQorICAgICAgICBzZWxmLmNvbXBhcmVfanVtcF9vdXRwdXQoZXhwZWN0ZWQsIG91dHB1dCkKIAotICAgIGRlZiB0ZXN0XzAxX2p1bXBfc2ltcGxlX2ZvcndhcmRzKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0KGp1bXBfc2ltcGxlX2ZvcndhcmRzKQotICAgIGRlZiB0ZXN0XzAyX2p1bXBfc2ltcGxlX2JhY2t3YXJkcyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdChqdW1wX3NpbXBsZV9iYWNrd2FyZHMpCi0gICAgZGVmIHRlc3RfMDNfanVtcF9vdXRfb2ZfYmxvY2tfZm9yd2FyZHMoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3QoanVtcF9vdXRfb2ZfYmxvY2tfZm9yd2FyZHMpCi0gICAgZGVmIHRlc3RfMDRfanVtcF9vdXRfb2ZfYmxvY2tfYmFja3dhcmRzKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0KGp1bXBfb3V0X29mX2Jsb2NrX2JhY2t3YXJkcykKLSAgICBkZWYgdGVzdF8wNV9qdW1wX3RvX2NvZGVsZXNzX2xpbmUoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3QoanVtcF90b19jb2RlbGVzc19saW5lKQotICAgIGRlZiB0ZXN0XzA2X2p1bXBfdG9fc2FtZV9saW5lKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0KGp1bXBfdG9fc2FtZV9saW5lKQotICAgIGRlZiB0ZXN0XzA3X2p1bXBfaW5fbmVzdGVkX2ZpbmFsbHkoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3QoanVtcF9pbl9uZXN0ZWRfZmluYWxseSkKLSAgICBkZWYgdGVzdF9qdW1wX2luZmluaXRlX3doaWxlX2xvb3Aoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3QoanVtcF9pbmZpbml0ZV93aGlsZV9sb29wKQotICAgIGRlZiB0ZXN0XzA4X25vX2p1bXBfdG9vX2Zhcl9mb3J3YXJkcyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdChub19qdW1wX3Rvb19mYXJfZm9yd2FyZHMpCi0gICAgZGVmIHRlc3RfMDlfbm9fanVtcF90b29fZmFyX2JhY2t3YXJkcyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdChub19qdW1wX3Rvb19mYXJfYmFja3dhcmRzKQotICAgIGRlZiB0ZXN0XzEwX25vX2p1bXBfdG9fZXhjZXB0XzEoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Qobm9fanVtcF90b19leGNlcHRfMSkKLSAgICBkZWYgdGVzdF8xMV9ub19qdW1wX3RvX2V4Y2VwdF8yKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0KG5vX2p1bXBfdG9fZXhjZXB0XzIpCi0gICAgZGVmIHRlc3RfMTJfbm9fanVtcF90b19leGNlcHRfMyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdChub19qdW1wX3RvX2V4Y2VwdF8zKQotICAgIGRlZiB0ZXN0XzEzX25vX2p1bXBfdG9fZXhjZXB0XzQoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Qobm9fanVtcF90b19leGNlcHRfNCkKLSAgICBkZWYgdGVzdF8xNF9ub19qdW1wX2ZvcndhcmRzX2ludG9fYmxvY2soc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Qobm9fanVtcF9mb3J3YXJkc19pbnRvX2Jsb2NrKQotICAgIGRlZiB0ZXN0XzE1X25vX2p1bXBfYmFja3dhcmRzX2ludG9fYmxvY2soc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Qobm9fanVtcF9iYWNrd2FyZHNfaW50b19ibG9jaykKLSAgICBkZWYgdGVzdF8xNl9ub19qdW1wX2ludG9fZmluYWxseV9ibG9jayhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5fdGVzdChub19qdW1wX2ludG9fZmluYWxseV9ibG9jaykKLSAgICBkZWYgdGVzdF8xN19ub19qdW1wX291dF9vZl9maW5hbGx5X2Jsb2NrKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl90ZXN0KG5vX2p1bXBfb3V0X29mX2ZpbmFsbHlfYmxvY2spCi0gICAgZGVmIHRlc3RfMThfbm9fanVtcF90b19ub25faW50ZWdlcnMoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuX3Rlc3Qobm9fanVtcF90b19ub25faW50ZWdlcnMpCi0gICAgZGVmIHRlc3RfMTlfbm9fanVtcF93aXRob3V0X3RyYWNlX2Z1bmN0aW9uKHNlbGYpOgorICAgIGRlZiBqdW1wX3Rlc3QoanVtcEZyb20sIGp1bXBUbywgZXhwZWN0ZWQsIGVycm9yPU5vbmUsIGV2ZW50PSdsaW5lJyk6CisgICAgICAgICIiIkRlY29yYXRvciB0aGF0IGNyZWF0ZXMgYSB0ZXN0IHRoYXQgbWFrZXMgYSBqdW1wCisgICAgICAgIGZyb20gb25lIHBsYWNlIHRvIGFub3RoZXIgaW4gdGhlIGZvbGxvd2luZyBjb2RlLgorICAgICAgICAiIiIKKyAgICAgICAgZGVmIGRlY29yYXRvcihmdW5jKToKKyAgICAgICAgICAgIEB3cmFwcyhmdW5jKQorICAgICAgICAgICAgZGVmIHRlc3Qoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5ydW5fdGVzdChmdW5jLCBqdW1wRnJvbSwganVtcFRvLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yPWVycm9yLCBldmVudD1ldmVudCwgZGVjb3JhdGVkPVRydWUpCisgICAgICAgICAgICByZXR1cm4gdGVzdAorICAgICAgICByZXR1cm4gZGVjb3JhdG9yCisKKyAgICAjIyBUaGUgZmlyc3Qgc2V0IG9mICdqdW1wJyB0ZXN0cyBhcmUgZm9yIHRoaW5ncyB0aGF0IGFyZSBhbGxvd2VkOgorCisgICAgQGp1bXBfdGVzdCgxLCAzLCBbM10pCisgICAgZGVmIHRlc3RfanVtcF9zaW1wbGVfZm9yd2FyZHMob3V0cHV0KToKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgxKQorICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCisgICAgICAgIG91dHB1dC5hcHBlbmQoMykKKworICAgIEBqdW1wX3Rlc3QoMiwgMSwgWzEsIDEsIDJdKQorICAgIGRlZiB0ZXN0X2p1bXBfc2ltcGxlX2JhY2t3YXJkcyhvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIG91dHB1dC5hcHBlbmQoMikKKworICAgIEBqdW1wX3Rlc3QoMywgNSwgWzIsIDVdKQorICAgIGRlZiB0ZXN0X2p1bXBfb3V0X29mX2Jsb2NrX2ZvcndhcmRzKG91dHB1dCk6CisgICAgICAgIGZvciBpIGluIDEsIDI6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCisgICAgICAgICAgICBmb3IgaiBpbiBbM106ICAjIEFsc28gdGVzdHMganVtcGluZyBvdmVyIGEgYmxvY2sKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDQpCisgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKworICAgIEBqdW1wX3Rlc3QoNiwgMSwgWzEsIDMsIDUsIDEsIDMsIDUsIDYsIDddKQorICAgIGRlZiB0ZXN0X2p1bXBfb3V0X29mX2Jsb2NrX2JhY2t3YXJkcyhvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIGZvciBpIGluIFsxXToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMykKKyAgICAgICAgICAgIGZvciBqIGluIFsyXTogICMgQWxzbyB0ZXN0cyBqdW1waW5nIG92ZXIgYSBibG9jaworICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNikKKyAgICAgICAgb3V0cHV0LmFwcGVuZCg3KQorCisgICAgQGp1bXBfdGVzdCgxLCAyLCBbM10pCisgICAgZGVmIHRlc3RfanVtcF90b19jb2RlbGVzc19saW5lKG91dHB1dCk6CisgICAgICAgIG91dHB1dC5hcHBlbmQoMSkKKyAgICAgICAgIyBKdW1waW5nIHRvIHRoaXMgbGluZSBzaG91bGQgc2tpcCB0byB0aGUgbmV4dCBvbmUuCisgICAgICAgIG91dHB1dC5hcHBlbmQoMykKKworICAgIEBqdW1wX3Rlc3QoMiwgMiwgWzEsIDIsIDNdKQorICAgIGRlZiB0ZXN0X2p1bXBfdG9fc2FtZV9saW5lKG91dHB1dCk6CisgICAgICAgIG91dHB1dC5hcHBlbmQoMSkKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQorICAgICAgICBvdXRwdXQuYXBwZW5kKDMpCisKKyAgICAjIFRlc3RzIGp1bXBpbmcgd2l0aGluIGEgZmluYWxseSBibG9jaywgYW5kIG92ZXIgb25lLgorICAgIEBqdW1wX3Rlc3QoNCwgOSwgWzIsIDldKQorICAgIGRlZiB0ZXN0X2p1bXBfaW5fbmVzdGVkX2ZpbmFsbHkob3V0cHV0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg0KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNikKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg4KQorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg5KQorCisgICAgQGp1bXBfdGVzdCg2LCA3LCBbMiwgN10sIChaZXJvRGl2aXNpb25FcnJvciwgJycpKQorICAgIGRlZiB0ZXN0X2p1bXBfaW5fbmVzdGVkX2ZpbmFsbHlfMihvdXRwdXQpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCisgICAgICAgICAgICAxLjAvMC4wCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNikKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNykKKyAgICAgICAgb3V0cHV0LmFwcGVuZCg4KQorCisgICAgQGp1bXBfdGVzdCg2LCAxMSwgWzIsIDExXSwgKFplcm9EaXZpc2lvbkVycm9yLCAnJykpCisgICAgZGVmIHRlc3RfanVtcF9pbl9uZXN0ZWRfZmluYWxseV8zKG91dHB1dCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMikKKyAgICAgICAgICAgIDEuMC8wLjAKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg2KQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoOCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgxMCkKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMTEpCisgICAgICAgIG91dHB1dC5hcHBlbmQoMTIpCisKKyAgICBAanVtcF90ZXN0KDMsIDQsIFsxLCA0XSkKKyAgICBkZWYgdGVzdF9qdW1wX2luZmluaXRlX3doaWxlX2xvb3Aob3V0cHV0KToKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgxKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorICAgICAgICBvdXRwdXQuYXBwZW5kKDQpCisKKyAgICBAanVtcF90ZXN0KDIsIDMsIFsxLCAzXSkKKyAgICBkZWYgdGVzdF9qdW1wX2ZvcndhcmRzX291dF9vZl93aXRoX2Jsb2NrKG91dHB1dCk6CisgICAgICAgIHdpdGggdHJhY2Vjb250ZXh0KG91dHB1dCwgMSk6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCisgICAgICAgIG91dHB1dC5hcHBlbmQoMykKKworICAgIEBqdW1wX3Rlc3QoMywgMSwgWzEsIDIsIDEsIDIsIDMsIC0yXSkKKyAgICBkZWYgdGVzdF9qdW1wX2JhY2t3YXJkc19vdXRfb2Zfd2l0aF9ibG9jayhvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIHdpdGggdHJhY2Vjb250ZXh0KG91dHB1dCwgMik6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDMpCisKKyAgICBAanVtcF90ZXN0KDIsIDUsIFs1XSkKKyAgICBkZWYgdGVzdF9qdW1wX2ZvcndhcmRzX291dF9vZl90cnlfZmluYWxseV9ibG9jayhvdXRwdXQpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDQpCisgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKworICAgIEBqdW1wX3Rlc3QoMywgMSwgWzEsIDEsIDMsIDVdKQorICAgIGRlZiB0ZXN0X2p1bXBfYmFja3dhcmRzX291dF9vZl90cnlfZmluYWxseV9ibG9jayhvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKworICAgIEBqdW1wX3Rlc3QoMiwgNiwgWzZdKQorICAgIGRlZiB0ZXN0X2p1bXBfZm9yd2FyZHNfb3V0X29mX3RyeV9leGNlcHRfYmxvY2sob3V0cHV0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDQpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBvdXRwdXQuYXBwZW5kKDYpCisKKyAgICBAanVtcF90ZXN0KDMsIDEsIFsxLCAxLCAzXSkKKyAgICBkZWYgdGVzdF9qdW1wX2JhY2t3YXJkc19vdXRfb2ZfdHJ5X2V4Y2VwdF9ibG9jayhvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg1KQorICAgICAgICAgICAgcmFpc2UKKworICAgIEBqdW1wX3Rlc3QoNSwgNywgWzQsIDcsIDhdKQorICAgIGRlZiB0ZXN0X2p1bXBfYmV0d2Vlbl9leGNlcHRfYmxvY2tzKG91dHB1dCk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIDEuMC8wLjAKKyAgICAgICAgZXhjZXB0IFplcm9EaXZpc2lvbkVycm9yOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg0KQorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg1KQorICAgICAgICBleGNlcHQgRmxvYXRpbmdQb2ludEVycm9yOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg3KQorICAgICAgICBvdXRwdXQuYXBwZW5kKDgpCisKKyAgICBAanVtcF90ZXN0KDUsIDYsIFs0LCA2LCA3XSkKKyAgICBkZWYgdGVzdF9qdW1wX3dpdGhpbl9leGNlcHRfYmxvY2sob3V0cHV0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgMS4wLzAuMAorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDQpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDUpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDYpCisgICAgICAgIG91dHB1dC5hcHBlbmQoNykKKworICAgIEBqdW1wX3Rlc3QoMiwgNCwgWzEsIDQsIDUsIC00XSkKKyAgICBkZWYgdGVzdF9qdW1wX2Fjcm9zc193aXRoKG91dHB1dCk6CisgICAgICAgIG91dHB1dC5hcHBlbmQoMSkKKyAgICAgICAgd2l0aCB0cmFjZWNvbnRleHQob3V0cHV0LCAyKToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMykKKyAgICAgICAgd2l0aCB0cmFjZWNvbnRleHQob3V0cHV0LCA0KToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKworICAgIEBqdW1wX3Rlc3QoNCwgNSwgWzEsIDMsIDUsIDZdKQorICAgIGRlZiB0ZXN0X2p1bXBfb3V0X29mX3dpdGhfYmxvY2tfd2l0aGluX2Zvcl9ibG9jayhvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIGZvciBpIGluIFsxXToKKyAgICAgICAgICAgIHdpdGggdHJhY2Vjb250ZXh0KG91dHB1dCwgMyk6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg0KQorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg1KQorICAgICAgICBvdXRwdXQuYXBwZW5kKDYpCisKKyAgICBAanVtcF90ZXN0KDQsIDUsIFsxLCAyLCAzLCA1LCAtMiwgNl0pCisgICAgZGVmIHRlc3RfanVtcF9vdXRfb2Zfd2l0aF9ibG9ja193aXRoaW5fd2l0aF9ibG9jayhvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIHdpdGggdHJhY2Vjb250ZXh0KG91dHB1dCwgMik6CisgICAgICAgICAgICB3aXRoIHRyYWNlY29udGV4dChvdXRwdXQsIDMpOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNCkKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKyAgICAgICAgb3V0cHV0LmFwcGVuZCg2KQorCisgICAgQGp1bXBfdGVzdCg1LCA2LCBbMiwgNCwgNiwgN10pCisgICAgZGVmIHRlc3RfanVtcF9vdXRfb2Zfd2l0aF9ibG9ja193aXRoaW5fZmluYWxseV9ibG9jayhvdXRwdXQpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB3aXRoIHRyYWNlY29udGV4dChvdXRwdXQsIDQpOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNikKKyAgICAgICAgb3V0cHV0LmFwcGVuZCg3KQorCisgICAgQGp1bXBfdGVzdCg4LCAxMSwgWzEsIDMsIDUsIDExLCAxMl0pCisgICAgZGVmIHRlc3RfanVtcF9vdXRfb2ZfY29tcGxleF9uZXN0ZWRfYmxvY2tzKG91dHB1dCk6CisgICAgICAgIG91dHB1dC5hcHBlbmQoMSkKKyAgICAgICAgZm9yIGkgaW4gWzFdOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorICAgICAgICAgICAgZm9yIGogaW4gWzEsIDJdOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIFsxLCAyXToKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoOCkKKyAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDEwKQorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgxMSkKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgxMikKKworICAgIEBqdW1wX3Rlc3QoMywgNSwgWzEsIDIsIDVdKQorICAgIGRlZiB0ZXN0X2p1bXBfb3V0X29mX3dpdGhfYXNzaWdubWVudChvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIHdpdGggdHJhY2Vjb250ZXh0KG91dHB1dCwgMikgXAorICAgICAgICAgICAgICAgIGFzIHg6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDQpCisgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKworICAgIEBqdW1wX3Rlc3QoMywgNiwgWzEsIDYsIDgsIDldKQorICAgIGRlZiB0ZXN0X2p1bXBfb3Zlcl9yZXR1cm5faW5fdHJ5X2ZpbmFsbHlfYmxvY2sob3V0cHV0KToKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgxKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDMpCisgICAgICAgICAgICBpZiBub3Qgb3V0cHV0OiAjIGFsd2F5cyBmYWxzZQorICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg2KQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg4KQorICAgICAgICBvdXRwdXQuYXBwZW5kKDkpCisKKyAgICBAanVtcF90ZXN0KDUsIDgsIFsxLCAzLCA4LCAxMCwgMTEsIDEzXSkKKyAgICBkZWYgdGVzdF9qdW1wX292ZXJfYnJlYWtfaW5fdHJ5X2ZpbmFsbHlfYmxvY2sob3V0cHV0KToKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgxKQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3V0cHV0OiAjIGFsd2F5cyBmYWxzZQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoOCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgxMCkKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMTEpCisgICAgICAgICAgICBicmVhaworICAgICAgICBvdXRwdXQuYXBwZW5kKDEzKQorCisgICAgQGp1bXBfdGVzdCgxLCA3LCBbNywgOF0pCisgICAgZGVmIHRlc3RfanVtcF9vdmVyX2Zvcl9ibG9ja19iZWZvcmVfZWxzZShvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIGlmIG5vdCBvdXRwdXQ6ICAjIGFsd2F5cyBmYWxzZQorICAgICAgICAgICAgZm9yIGkgaW4gWzNdOgorICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNikKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNykKKyAgICAgICAgb3V0cHV0LmFwcGVuZCg4KQorCisgICAgIyBUaGUgc2Vjb25kIHNldCBvZiAnanVtcCcgdGVzdHMgYXJlIGZvciB0aGluZ3MgdGhhdCBhcmUgbm90IGFsbG93ZWQ6CisKKyAgICBAanVtcF90ZXN0KDIsIDMsIFsxXSwgKFZhbHVlRXJyb3IsICdhZnRlcicpKQorICAgIGRlZiB0ZXN0X25vX2p1bXBfdG9vX2Zhcl9mb3J3YXJkcyhvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIG91dHB1dC5hcHBlbmQoMikKKworICAgIEBqdW1wX3Rlc3QoMiwgLTIsIFsxXSwgKFZhbHVlRXJyb3IsICdiZWZvcmUnKSkKKyAgICBkZWYgdGVzdF9ub19qdW1wX3Rvb19mYXJfYmFja3dhcmRzKG91dHB1dCk6CisgICAgICAgIG91dHB1dC5hcHBlbmQoMSkKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQorCisgICAgIyBUZXN0IGVhY2gga2luZCBvZiAnZXhjZXB0JyBsaW5lLgorICAgIEBqdW1wX3Rlc3QoMiwgMywgWzRdLCAoVmFsdWVFcnJvciwgJ2V4Y2VwdCcpKQorICAgIGRlZiB0ZXN0X25vX2p1bXBfdG9fZXhjZXB0XzEob3V0cHV0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDQpCisgICAgICAgICAgICByYWlzZQorCisgICAgQGp1bXBfdGVzdCgyLCAzLCBbNF0sIChWYWx1ZUVycm9yLCAnZXhjZXB0JykpCisgICAgZGVmIHRlc3Rfbm9fanVtcF90b19leGNlcHRfMihvdXRwdXQpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg0KQorICAgICAgICAgICAgcmFpc2UKKworICAgIEBqdW1wX3Rlc3QoMiwgMywgWzRdLCAoVmFsdWVFcnJvciwgJ2V4Y2VwdCcpKQorICAgIGRlZiB0ZXN0X25vX2p1bXBfdG9fZXhjZXB0XzMob3V0cHV0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvciBhcyBlOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg0KQorICAgICAgICAgICAgcmFpc2UgZQorCisgICAgQGp1bXBfdGVzdCgyLCAzLCBbNF0sIChWYWx1ZUVycm9yLCAnZXhjZXB0JykpCisgICAgZGVmIHRlc3Rfbm9fanVtcF90b19leGNlcHRfNChvdXRwdXQpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCisgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgUnVudGltZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg0KQorICAgICAgICAgICAgcmFpc2UgZQorCisgICAgQGp1bXBfdGVzdCgxLCAzLCBbXSwgKFZhbHVlRXJyb3IsICdpbnRvJykpCisgICAgZGVmIHRlc3Rfbm9fanVtcF9mb3J3YXJkc19pbnRvX2Zvcl9ibG9jayhvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIGZvciBpIGluIDEsIDI6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDMpCisKKyAgICBAanVtcF90ZXN0KDMsIDIsIFsyLCAyXSwgKFZhbHVlRXJyb3IsICdpbnRvJykpCisgICAgZGVmIHRlc3Rfbm9fanVtcF9iYWNrd2FyZHNfaW50b19mb3JfYmxvY2sob3V0cHV0KToKKyAgICAgICAgZm9yIGkgaW4gMSwgMjoKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMikKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorCisgICAgQGp1bXBfdGVzdCgyLCA0LCBbXSwgKFZhbHVlRXJyb3IsICdpbnRvJykpCisgICAgZGVmIHRlc3Rfbm9fanVtcF9mb3J3YXJkc19pbnRvX3doaWxlX2Jsb2NrKG91dHB1dCk6CisgICAgICAgIGkgPSAxCisgICAgICAgIG91dHB1dC5hcHBlbmQoMikKKyAgICAgICAgd2hpbGUgaSA8PSAyOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg0KQorICAgICAgICAgICAgaSArPSAxCisKKyAgICBAanVtcF90ZXN0KDUsIDMsIFszLCAzXSwgKFZhbHVlRXJyb3IsICdpbnRvJykpCisgICAgZGVmIHRlc3Rfbm9fanVtcF9iYWNrd2FyZHNfaW50b193aGlsZV9ibG9jayhvdXRwdXQpOgorICAgICAgICBpID0gMQorICAgICAgICB3aGlsZSBpIDw9IDI6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDMpCisgICAgICAgICAgICBpICs9IDEKKyAgICAgICAgb3V0cHV0LmFwcGVuZCg1KQorCisgICAgQGp1bXBfdGVzdCgxLCAzLCBbXSwgKFZhbHVlRXJyb3IsICdpbnRvJykpCisgICAgZGVmIHRlc3Rfbm9fanVtcF9mb3J3YXJkc19pbnRvX3dpdGhfYmxvY2sob3V0cHV0KToKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgxKQorICAgICAgICB3aXRoIHRyYWNlY29udGV4dChvdXRwdXQsIDIpOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorCisgICAgQGp1bXBfdGVzdCgzLCAyLCBbMSwgMiwgLTFdLCAoVmFsdWVFcnJvciwgJ2ludG8nKSkKKyAgICBkZWYgdGVzdF9ub19qdW1wX2JhY2t3YXJkc19pbnRvX3dpdGhfYmxvY2sob3V0cHV0KToKKyAgICAgICAgd2l0aCB0cmFjZWNvbnRleHQob3V0cHV0LCAxKToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMikKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorCisgICAgQGp1bXBfdGVzdCgxLCAzLCBbXSwgKFZhbHVlRXJyb3IsICdpbnRvJykpCisgICAgZGVmIHRlc3Rfbm9fanVtcF9mb3J3YXJkc19pbnRvX3RyeV9maW5hbGx5X2Jsb2NrKG91dHB1dCk6CisgICAgICAgIG91dHB1dC5hcHBlbmQoMSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg1KQorCisgICAgQGp1bXBfdGVzdCg1LCAyLCBbMiwgNF0sIChWYWx1ZUVycm9yLCAnaW50bycpKQorICAgIGRlZiB0ZXN0X25vX2p1bXBfYmFja3dhcmRzX2ludG9fdHJ5X2ZpbmFsbHlfYmxvY2sob3V0cHV0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg0KQorICAgICAgICBvdXRwdXQuYXBwZW5kKDUpCisKKyAgICBAanVtcF90ZXN0KDEsIDMsIFtdLCAoVmFsdWVFcnJvciwgJ2ludG8nKSkKKyAgICBkZWYgdGVzdF9ub19qdW1wX2ZvcndhcmRzX2ludG9fdHJ5X2V4Y2VwdF9ibG9jayhvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg1KQorICAgICAgICAgICAgcmFpc2UKKworICAgIEBqdW1wX3Rlc3QoNiwgMiwgWzJdLCAoVmFsdWVFcnJvciwgJ2ludG8nKSkKKyAgICBkZWYgdGVzdF9ub19qdW1wX2JhY2t3YXJkc19pbnRvX3RyeV9leGNlcHRfYmxvY2sob3V0cHV0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDQpCisgICAgICAgICAgICByYWlzZQorICAgICAgICBvdXRwdXQuYXBwZW5kKDYpCisKKyAgICBAanVtcF90ZXN0KDMsIDYsIFsyLCA1LCA2XSwgKFZhbHVlRXJyb3IsICdmaW5hbGx5JykpCisgICAgZGVmIHRlc3Rfbm9fanVtcF9pbnRvX2ZpbmFsbHlfYmxvY2sob3V0cHV0KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgyKQorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorICAgICAgICBmaW5hbGx5OiAgIyBzdGlsbCBleGVjdXRlZCBpZiB0aGUganVtcCBpcyBmYWlsZWQKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNikKKyAgICAgICAgb3V0cHV0LmFwcGVuZCg3KQorCisgICAgQGp1bXBfdGVzdCgxLCA1LCBbXSwgKFZhbHVlRXJyb3IsICdmaW5hbGx5JykpCisgICAgZGVmIHRlc3Rfbm9fanVtcF9pbnRvX2ZpbmFsbHlfYmxvY2tfMihvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoMykKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKworICAgIEBqdW1wX3Rlc3QoNSwgMSwgWzEsIDNdLCAoVmFsdWVFcnJvciwgJ2ZpbmFsbHknKSkKKyAgICBkZWYgdGVzdF9ub19qdW1wX291dF9vZl9maW5hbGx5X2Jsb2NrKG91dHB1dCk6CisgICAgICAgIG91dHB1dC5hcHBlbmQoMSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg1KQorCisgICAgQGp1bXBfdGVzdCgzLCA1LCBbMSwgMiwgLTJdLCAoVmFsdWVFcnJvciwgJ2ludG8nKSkKKyAgICBkZWYgdGVzdF9ub19qdW1wX2JldHdlZW5fd2l0aF9ibG9ja3Mob3V0cHV0KToKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgxKQorICAgICAgICB3aXRoIHRyYWNlY29udGV4dChvdXRwdXQsIDIpOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorICAgICAgICB3aXRoIHRyYWNlY29udGV4dChvdXRwdXQsIDQpOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCg1KQorCisgICAgQGp1bXBfdGVzdCg3LCA0LCBbMSwgNl0sIChWYWx1ZUVycm9yLCAnaW50bycpKQorICAgIGRlZiB0ZXN0X25vX2p1bXBfaW50b19mb3JfYmxvY2tfYmVmb3JlX2Vsc2Uob3V0cHV0KToKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgxKQorICAgICAgICBpZiBub3Qgb3V0cHV0OiAgIyBhbHdheXMgZmFsc2UKKyAgICAgICAgICAgIGZvciBpIGluIFszXToKKyAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDQpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDYpCisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDcpCisgICAgICAgIG91dHB1dC5hcHBlbmQoOCkKKworICAgIGRlZiB0ZXN0X25vX2p1bXBfdG9fbm9uX2ludGVnZXJzKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl90ZXN0KG5vX2p1bXBfdG9fbm9uX2ludGVnZXJzLCAyLCAiU3BhbSIsIFtUcnVlXSkKKworICAgIGRlZiB0ZXN0X25vX2p1bXBfd2l0aG91dF90cmFjZV9mdW5jdGlvbihzZWxmKToKKyAgICAgICAgIyBNdXN0IHNldCBzeXMuc2V0dHJhY2UoTm9uZSkgaW4gc2V0VXAoKSwgZWxzZSBjb25kaXRpb24gaXMgbm90CisgICAgICAgICMgdHJpZ2dlcmVkLgogICAgICAgICBub19qdW1wX3dpdGhvdXRfdHJhY2VfZnVuY3Rpb24oKQotICAgIGRlZiB0ZXN0X2p1bXBfYWNyb3NzX3dpdGgoc2VsZik6Ci0gICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0ZXN0X3N1cHBvcnQudW5saW5rLCB0ZXN0X3N1cHBvcnQuVEVTVEZOKQotICAgICAgICBzZWxmLnJ1bl90ZXN0KGp1bXBfYWNyb3NzX3dpdGgpCiAKLSAgICBkZWYgdGVzdF8yMF9sYXJnZV9mdW5jdGlvbihzZWxmKToKKyAgICBkZWYgdGVzdF9sYXJnZV9mdW5jdGlvbihzZWxmKToKICAgICAgICAgZCA9IHt9CiAgICAgICAgIGV4ZWMoIiIiZGVmIGYob3V0cHV0KTogICAgICAgICMgbGluZSAwCiAgICAgICAgICAgICB4ID0gMCAgICAgICAgICAgICAgICAgICAgICMgbGluZSAxCkBAIC03ODMsMTAgKzEwMTMsNyBAQAogICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCh4KSAgICAgICAgICAjIGxpbmUgMTAwNwogICAgICAgICAgICAgcmV0dXJuIiIiICUgKCdcbicgKiAxMDAwLCksIGQpCiAgICAgICAgIGYgPSBkWydmJ10KLQotICAgICAgICBmLmp1bXAgPSAoMiwgMTAwNykKLSAgICAgICAgZi5vdXRwdXQgPSBbMF0KLSAgICAgICAgc2VsZi5ydW5fdGVzdChmKQorICAgICAgICBzZWxmLnJ1bl90ZXN0KGYsIDIsIDEwMDcsIFswXSkKIAogICAgIGRlZiB0ZXN0X2p1bXBfdG9fZmlyc3RsaW5lbm8oc2VsZik6CiAgICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IFBEQiBjYW4ganVtcCBiYWNrIHRvIHRoZSBmaXJzdCBsaW5lIGluIGEKQEAgLTgwMCwxNCArMTAyNyw0MyBAQAogIiIiLCAiPGZha2UgbW9kdWxlPiIsICJleGVjIikKICAgICAgICAgY2xhc3MgZmFrZV9mdW5jdGlvbjoKICAgICAgICAgICAgIGZ1bmNfY29kZSA9IGNvZGUKLSAgICAgICAgICAgIGp1bXAgPSAoMiwgMCkKLSAgICAgICAgdHJhY2VyID0gSnVtcFRyYWNlcihmYWtlX2Z1bmN0aW9uKQorICAgICAgICB0cmFjZXIgPSBKdW1wVHJhY2VyKGZha2VfZnVuY3Rpb24sIDIsIDApCiAgICAgICAgIHN5cy5zZXR0cmFjZSh0cmFjZXIudHJhY2UpCiAgICAgICAgIG5hbWVzcGFjZSA9IHsib3V0cHV0IjogW119CiAgICAgICAgIGV4ZWMgY29kZSBpbiBuYW1lc3BhY2UKICAgICAgICAgc3lzLnNldHRyYWNlKE5vbmUpCiAgICAgICAgIHNlbGYuY29tcGFyZV9qdW1wX291dHB1dChbMiwgMywgMiwgMywgNF0sIG5hbWVzcGFjZVsib3V0cHV0Il0pCiAKKyAgICBAanVtcF90ZXN0KDIsIDMsIFsxXSwgZXZlbnQ9J2NhbGwnLCBlcnJvcj0oVmFsdWVFcnJvciwgImNhbid0IGp1bXAgZnJvbSIKKyAgICAgICAgICAgICAgICIgdGhlICdjYWxsJyB0cmFjZSBldmVudCBvZiBhIG5ldyBmcmFtZSIpKQorICAgIGRlZiB0ZXN0X25vX2p1bXBfZnJvbV9jYWxsKG91dHB1dCk6CisgICAgICAgIG91dHB1dC5hcHBlbmQoMSkKKyAgICAgICAgZGVmIG5lc3RlZCgpOgorICAgICAgICAgICAgb3V0cHV0LmFwcGVuZCgzKQorICAgICAgICBuZXN0ZWQoKQorICAgICAgICBvdXRwdXQuYXBwZW5kKDUpCisKKyAgICBAanVtcF90ZXN0KDIsIDEsIFsxXSwgZXZlbnQ9J3JldHVybicsIGVycm9yPShWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgImNhbiBvbmx5IGp1bXAgZnJvbSBhICdsaW5lJyB0cmFjZSBldmVudCIpKQorICAgIGRlZiB0ZXN0X25vX2p1bXBfZnJvbV9yZXR1cm5fZXZlbnQob3V0cHV0KToKKyAgICAgICAgb3V0cHV0LmFwcGVuZCgxKQorICAgICAgICByZXR1cm4KKworICAgIEBqdW1wX3Rlc3QoMiwgMSwgWzFdLCBldmVudD0nZXhjZXB0aW9uJywgZXJyb3I9KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAiY2FuIG9ubHkganVtcCBmcm9tIGEgJ2xpbmUnIHRyYWNlIGV2ZW50IikpCisgICAgZGVmIHRlc3Rfbm9fanVtcF9mcm9tX2V4Y2VwdGlvbl9ldmVudChvdXRwdXQpOgorICAgICAgICBvdXRwdXQuYXBwZW5kKDEpCisgICAgICAgIDEgLyAwCisKKyAgICBAanVtcF90ZXN0KDMsIDIsIFsyXSwgZXZlbnQ9J3JldHVybicsIGVycm9yPShWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgImNhbid0IGp1bXAgZnJvbSBhIHlpZWxkIHN0YXRlbWVudCIpKQorICAgIGRlZiB0ZXN0X25vX2p1bXBfZnJvbV95aWVsZChvdXRwdXQpOgorICAgICAgICBkZWYgZ2VuKCk6CisgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKDIpCisgICAgICAgICAgICB5aWVsZCAzCisgICAgICAgIG5leHQoZ2VuKCkpCisgICAgICAgIG91dHB1dC5hcHBlbmQoNSkKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgdGVzdF9zdXBwb3J0LnJ1bl91bml0dGVzdCgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGNsLnB5IGIvTGliL3Rlc3QvdGVzdF90Y2wucHkKaW5kZXggNGMyZThkNS4uODRjNGNlYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90Y2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90Y2wucHkKQEAgLTI1Niw3ICsyNTYsNyBAQAogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHAgPSBQb3BlbihjbWQsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSkKICAgICAgICAgICAgIGV4Y2VwdCBXaW5kb3dzRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLndpbmVycm9yID09IDU6CisgICAgICAgICAgICAgICAgaWYgZS53aW5lcnJvciA9PSA1IG9yIGUud2luZXJyb3IgPT0gMjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgnTm90IHBlcm1pdHRlZCB0byBzdGFydCB0aGUgY2hpbGQgcHJvY2VzcycpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UKQEAgLTY2MSw2ICs2NjEsNDMgQEAKICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IHsnYSc6ICgxLCAyLCAzKSwgJ3NvbWV0aGluZyc6ICdmb28nLCAnc3RhdHVzJzogJyd9CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0ZGljdCh0Y2wsIGFyZyksIGV4cGVjdGVkKQogCisgICAgZGVmIHRlc3Rfam9pbihzZWxmKToKKyAgICAgICAgam9pbiA9IHRraW50ZXIuX2pvaW4KKyAgICAgICAgdGNsID0gc2VsZi5pbnRlcnAudGsKKyAgICAgICAgZGVmIHVucGFjayhzKToKKyAgICAgICAgICAgIHJldHVybiB0Y2wuY2FsbCgnbGluZGV4JywgcywgMCkKKyAgICAgICAgZGVmIGNoZWNrKHZhbHVlKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5wYWNrKGpvaW4oW3ZhbHVlXSkpLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5wYWNrKGpvaW4oW3ZhbHVlLCAwXSkpLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5wYWNrKHVucGFjayhqb2luKFtbdmFsdWVdXSkpKSwgdmFsdWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVucGFjayh1bnBhY2soam9pbihbW3ZhbHVlLCAwXV0pKSksIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1bnBhY2sodW5wYWNrKGpvaW4oW1t2YWx1ZV0sIDBdKSkpLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5wYWNrKHVucGFjayhqb2luKFtbdmFsdWUsIDBdLCAwXSkpKSwgdmFsdWUpCisgICAgICAgIGNoZWNrKCcnKQorICAgICAgICBjaGVjaygnc3BhbScpCisgICAgICAgIGNoZWNrKCdzcCBhbScpCisgICAgICAgIGNoZWNrKCdzcFx0YW0nKQorICAgICAgICBjaGVjaygnc3BcbmFtJykKKyAgICAgICAgY2hlY2soJyBcdFxuJykKKyAgICAgICAgY2hlY2soJ3tzcGFtfScpCisgICAgICAgIGNoZWNrKCd7c3AgYW19JykKKyAgICAgICAgY2hlY2soJyJzcGFtIicpCisgICAgICAgIGNoZWNrKCcic3AgYW0iJykKKyAgICAgICAgY2hlY2soJ3sic3BhbSJ9JykKKyAgICAgICAgY2hlY2soJyJ7c3BhbX0iJykKKyAgICAgICAgY2hlY2soJ3NwXFxhbScpCisgICAgICAgIGNoZWNrKCcic3BcXGFtIicpCisgICAgICAgIGNoZWNrKCcie30iICJ7fSInKQorICAgICAgICBjaGVjaygnIlxcJykKKyAgICAgICAgY2hlY2soJyJ7JykKKyAgICAgICAgY2hlY2soJyJ9JykKKyAgICAgICAgY2hlY2soJ1xuXFwnKQorICAgICAgICBjaGVjaygnXG57JykKKyAgICAgICAgY2hlY2soJ1xufScpCisgICAgICAgIGNoZWNrKCdcXFxuJykKKyAgICAgICAgY2hlY2soJ3tcbicpCisgICAgICAgIGNoZWNrKCd9XG4nKQorCiAKIGNoYXJhY3Rlcl9zaXplID0gNCBpZiBzeXMubWF4dW5pY29kZSA+IDB4RkZGRiBlbHNlIDIKIApAQCAtNzA1LDI1ICs3NDIsMjUgQEAKICAgICAgICAgc2VsZi5jaGVja19odWdlX3N0cmluZ19idWlsdGlucyh2YWx1ZSkKIAogICAgIGRlZiBjaGVja19odWdlX3N0cmluZ19idWlsdGlucyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYuaW50ZXJwLnRrLmdldGludCwgdmFsdWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYuaW50ZXJwLnRrLmdldGRvdWJsZSwgdmFsdWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYuaW50ZXJwLnRrLmdldGJvb2xlYW4sIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLmludGVycC5ldmFsLCB2YWx1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi5pbnRlcnAuZXZhbGZpbGUsIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLmludGVycC5yZWNvcmQsIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLmludGVycC5hZGRlcnJvcmluZm8sIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLmludGVycC5zZXR2YXIsIHZhbHVlLCAneCcsICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi5pbnRlcnAuc2V0dmFyLCAneCcsIHZhbHVlLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYuaW50ZXJwLnVuc2V0dmFyLCB2YWx1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi5pbnRlcnAudW5zZXR2YXIsICd4JywgdmFsdWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYuaW50ZXJwLmFkZGVycm9yaW5mbywgdmFsdWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYuaW50ZXJwLmV4cHJzdHJpbmcsIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLmludGVycC5leHBybG9uZywgdmFsdWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHNlbGYuaW50ZXJwLmV4cHJib29sZWFuLCB2YWx1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi5pbnRlcnAuc3BsaXRsaXN0LCB2YWx1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgc2VsZi5pbnRlcnAuc3BsaXQsIHZhbHVlKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLmludGVycC5jcmVhdGVjb21tYW5kLCB2YWx1ZSwgbWF4KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBzZWxmLmludGVycC5kZWxldGVjb21tYW5kLCB2YWx1ZSkKKyAgICAgICAgdGsgPSBzZWxmLmludGVycC50aworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0ay5nZXRpbnQsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0ay5nZXRkb3VibGUsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0ay5nZXRib29sZWFuLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGsuZXZhbCwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRrLmV2YWxmaWxlLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGsucmVjb3JkLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGsuYWRkZXJyb3JpbmZvLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGsuc2V0dmFyLCB2YWx1ZSwgJ3gnLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRrLnNldHZhciwgJ3gnLCB2YWx1ZSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0ay51bnNldHZhciwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRrLnVuc2V0dmFyLCAneCcsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0ay5leHByc3RyaW5nLCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGsuZXhwcmxvbmcsIHZhbHVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0ay5leHByYm9vbGVhbiwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRrLnNwbGl0bGlzdCwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHRrLnNwbGl0LCB2YWx1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGsuY3JlYXRlY29tbWFuZCwgdmFsdWUsIG1heCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgdGsuZGVsZXRlY29tbWFuZCwgdmFsdWUpCiAKIAogZGVmIHNldFVwTW9kdWxlKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90ZW1wZmlsZS5weQppbmRleCAwNzhlNGE5Li4yZWZiODM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RlbXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGVtcGZpbGUucHkKQEAgLTE0MSwxMiArMTQxLDE1IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHBpZCA9IG9zLmZvcmsoKQogICAgICAgICAgICAgaWYgbm90IHBpZDoKKyAgICAgICAgICAgICAgICAjIGNoaWxkIHByb2Nlc3MKICAgICAgICAgICAgICAgICBvcy5jbG9zZShyZWFkX2ZkKQogICAgICAgICAgICAgICAgIG9zLndyaXRlKHdyaXRlX2ZkLCBuZXh0KHNlbGYucikuZW5jb2RlKCJhc2NpaSIpKQogICAgICAgICAgICAgICAgIG9zLmNsb3NlKHdyaXRlX2ZkKQogICAgICAgICAgICAgICAgICMgYnlwYXNzIHRoZSBub3JtYWwgZXhpdCBoYW5kbGVycy0gbGVhdmUgdGhvc2UgdG8KICAgICAgICAgICAgICAgICAjIHRoZSBwYXJlbnQuCiAgICAgICAgICAgICAgICAgb3MuX2V4aXQoMCkKKworICAgICAgICAgICAgIyBwYXJlbnQgcHJvY2VzcwogICAgICAgICAgICAgcGFyZW50X3ZhbHVlID0gbmV4dChzZWxmLnIpCiAgICAgICAgICAgICBjaGlsZF92YWx1ZSA9IG9zLnJlYWQocmVhZF9mZCwgbGVuKHBhcmVudF92YWx1ZSkpLmRlY29kZSgiYXNjaWkiKQogICAgICAgICBmaW5hbGx5OgpAQCAtMTU3LDYgKzE2MCwxMCBAQAogICAgICAgICAgICAgICAgICAgICBvcy5raWxsKHBpZCwgc2lnbmFsLlNJR0tJTEwpCiAgICAgICAgICAgICAgICAgZXhjZXB0IEVudmlyb25tZW50RXJyb3I6CiAgICAgICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICAgICAgICAgICMgUmVhZCB0aGUgcHJvY2VzcyBleGl0IHN0YXR1cyB0byBhdm9pZCB6b21iaWUgcHJvY2VzcworICAgICAgICAgICAgICAgIG9zLndhaXRwaWQocGlkLCAwKQorCiAgICAgICAgICAgICBvcy5jbG9zZShyZWFkX2ZkKQogICAgICAgICAgICAgb3MuY2xvc2Uod3JpdGVfZmQpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2hpbGRfdmFsdWUsIHBhcmVudF92YWx1ZSkKQEAgLTIzNSwxMyArMjQyLDEyIEBACiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9FTlQpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MubGlzdGRpcihvdXJfdGVtcF9kaXJlY3RvcnkpLCBbXSkKIAotICAgICAgICAgICAgICAgIG9wZW4gPSBpby5vcGVuCiAgICAgICAgICAgICAgICAgZGVmIGJhZF93cml0ZXIoKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgICAgICAgICAgICAgZnAgPSBvcGVuKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICAgICAgZnAgPSBvcmlnX29wZW4oKmFyZ3MsICoqa3dhcmdzKQogICAgICAgICAgICAgICAgICAgICBmcC53cml0ZSA9IHJhaXNlX09TRXJyb3IKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZwCiAKLSAgICAgICAgICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKGlvLCAib3BlbiIsIGJhZF93cml0ZXIpOgorICAgICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoaW8sICJvcGVuIiwgYmFkX3dyaXRlcikgYXMgb3JpZ19vcGVuOgogICAgICAgICAgICAgICAgICAgICAjIHRlc3QgYWdhaW4gd2l0aCBmYWlsaW5nIHdyaXRlKCkKICAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLl9nZXRfZGVmYXVsdF90ZW1wZGlyKCkKQEAgLTgxNSw2ICs4MjEsNyBAQAogICAgICAgICBvbGRfZmRvcGVuID0gb3MuZmRvcGVuCiAgICAgICAgIGNsb3NlZCA9IFtdCiAgICAgICAgIGRlZiBjbG9zZShmZCk6CisgICAgICAgICAgICBvbGRfY2xvc2UoZmQpCiAgICAgICAgICAgICBjbG9zZWQuYXBwZW5kKGZkKQogICAgICAgICBkZWYgZmRvcGVuKCphcmdzKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90ZXN0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3Rlc3Rfc3VwcG9ydC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTE5MmE3Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF90ZXN0X3N1cHBvcnQucHkKQEAgLTAsMCArMSw0NjUgQEAKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3lzCitpbXBvcnQgb3MKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHNvY2tldAoraW1wb3J0IHRlbXBmaWxlCitpbXBvcnQgdGV4dHdyYXAKK2ltcG9ydCBlcnJubworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgorCitURVNURk4gPSBzdXBwb3J0LlRFU1RGTgorCisKK2NsYXNzIENsYXNzaWNDbGFzczoKKyAgICBwYXNzCisKK2NsYXNzIE5ld1N0eWxlQ2xhc3Mob2JqZWN0KToKKyAgICBwYXNzCisKKworY2xhc3MgVGVzdFN1cHBvcnQodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfaW1wb3J0X21vZHVsZShzZWxmKToKKyAgICAgICAgc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJmdHBsaWIiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh1bml0dGVzdC5Ta2lwVGVzdCwgc3VwcG9ydC5pbXBvcnRfbW9kdWxlLCAiZm9vIikKKworICAgIGRlZiB0ZXN0X2ltcG9ydF9mcmVzaF9tb2R1bGUoc2VsZik6CisgICAgICAgIHN1cHBvcnQuaW1wb3J0X2ZyZXNoX21vZHVsZSgiZnRwbGliIikKKworICAgIGRlZiB0ZXN0X2dldF9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VwcG9ydC5nZXRfYXR0cmlidXRlKHNlbGYsICJ0ZXN0X2dldF9hdHRyaWJ1dGUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdF9nZXRfYXR0cmlidXRlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyh1bml0dGVzdC5Ta2lwVGVzdCwgc3VwcG9ydC5nZXRfYXR0cmlidXRlLCBzZWxmLCAiZm9vIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cCh1bml0dGVzdC5Ta2lwVGVzdCwgJ3VuaXR0ZXN0Jyk6CisgICAgICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUodW5pdHRlc3QsICdmb28nKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKHVuaXR0ZXN0LlNraXBUZXN0LCAnQ2xhc3NpY0NsYXNzJyk6CisgICAgICAgICAgICBzdXBwb3J0LmdldF9hdHRyaWJ1dGUoQ2xhc3NpY0NsYXNzLCAnZm9vJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cCh1bml0dGVzdC5Ta2lwVGVzdCwgJ0NsYXNzaWNDbGFzcycpOgorICAgICAgICAgICAgc3VwcG9ydC5nZXRfYXR0cmlidXRlKENsYXNzaWNDbGFzcygpLCAnZm9vJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cCh1bml0dGVzdC5Ta2lwVGVzdCwgJ05ld1N0eWxlQ2xhc3MnKToKKyAgICAgICAgICAgIHN1cHBvcnQuZ2V0X2F0dHJpYnV0ZShOZXdTdHlsZUNsYXNzLCAnZm9vJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cCh1bml0dGVzdC5Ta2lwVGVzdCwgJ05ld1N0eWxlQ2xhc3MnKToKKyAgICAgICAgICAgIHN1cHBvcnQuZ2V0X2F0dHJpYnV0ZShOZXdTdHlsZUNsYXNzKCksICdmb28nKQorCisgICAgQHVuaXR0ZXN0LnNraXAoImZhaWxpbmcgYnVpbGRib3RzIikKKyAgICBkZWYgdGVzdF9nZXRfb3JpZ2luYWxfc3Rkb3V0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBvcnQuZ2V0X29yaWdpbmFsX3N0ZG91dCgpLCBzeXMuc3Rkb3V0KQorCisgICAgZGVmIHRlc3RfdW5sb2FkKHNlbGYpOgorICAgICAgICBpbXBvcnQgc2NoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRJbigic2NoZWQiLCBzeXMubW9kdWxlcykKKyAgICAgICAgc3VwcG9ydC51bmxvYWQoInNjaGVkIikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigic2NoZWQiLCBzeXMubW9kdWxlcykKKworICAgIGRlZiB0ZXN0X3VubGluayhzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgInciKSBhcyBmOgorICAgICAgICAgICAgcGFzcworICAgICAgICBzdXBwb3J0LnVubGluayhURVNURk4pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoVEVTVEZOKSkKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3Rfcm10cmVlKHNlbGYpOgorICAgICAgICBkaXJwYXRoID0gc3VwcG9ydC5URVNURk4gKyAnZCcKKyAgICAgICAgc3ViZGlycGF0aCA9IG9zLnBhdGguam9pbihkaXJwYXRoLCAnc3ViZGlyJykKKyAgICAgICAgb3MubWtkaXIoZGlycGF0aCkKKyAgICAgICAgb3MubWtkaXIoc3ViZGlycGF0aCkKKyAgICAgICAgc3VwcG9ydC5ybXRyZWUoZGlycGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhkaXJwYXRoKSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihzdXBwb3J0LCAndmVyYm9zZScsIDApOgorICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUoZGlycGF0aCkKKworICAgICAgICBvcy5ta2RpcihkaXJwYXRoKQorICAgICAgICBvcy5ta2RpcihzdWJkaXJwYXRoKQorICAgICAgICBvcy5jaG1vZChkaXJwYXRoLCBzdGF0LlNfSVJVU1J8c3RhdC5TX0lYVVNSKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKHN1cHBvcnQsICd2ZXJib3NlJywgMCk6CisgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZShkaXJwYXRoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKGRpcnBhdGgpKQorCisgICAgICAgIG9zLm1rZGlyKGRpcnBhdGgpCisgICAgICAgIG9zLm1rZGlyKHN1YmRpcnBhdGgpCisgICAgICAgIG9zLmNobW9kKGRpcnBhdGgsIDApCisgICAgICAgIHdpdGggc3VwcG9ydC5zd2FwX2F0dHIoc3VwcG9ydCwgJ3ZlcmJvc2UnLCAwKToKKyAgICAgICAgICAgIHN1cHBvcnQucm10cmVlKGRpcnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMoZGlycGF0aCkpCisKKyAgICBkZWYgdGVzdF9mb3JnZXQoc2VsZik6CisgICAgICAgIG1vZF9maWxlbmFtZSA9IFRFU1RGTiArICcucHknCisgICAgICAgIHdpdGggb3Blbihtb2RfZmlsZW5hbWUsICd3dCcpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKCdmb28gPSAxXG4nKQorICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgb3MuY3VyZGlyKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtb2QgPSBfX2ltcG9ydF9fKFRFU1RGTikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oVEVTVEZOLCBzeXMubW9kdWxlcykKKworICAgICAgICAgICAgc3VwcG9ydC5mb3JnZXQoVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihURVNURk4sIHN5cy5tb2R1bGVzKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgZGVsIHN5cy5wYXRoWzBdCisgICAgICAgICAgICBzdXBwb3J0LnVubGluayhtb2RfZmlsZW5hbWUpCisgICAgICAgICAgICBzdXBwb3J0LnJtdHJlZSgnX19weWNhY2hlX18nKQorCisgICAgZGVmIHRlc3RfSE9TVChzZWxmKToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzLmJpbmQoKHN1cHBvcnQuSE9TVCwgMCkpCisgICAgICAgIHMuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfZmluZF91bnVzZWRfcG9ydChzZWxmKToKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuZmluZF91bnVzZWRfcG9ydCgpCisgICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKKyAgICAgICAgcy5iaW5kKChzdXBwb3J0LkhPU1QsIHBvcnQpKQorICAgICAgICBzLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2JpbmRfcG9ydChzZWxmKToKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzdXBwb3J0LmJpbmRfcG9ydChzKQorICAgICAgICBzLmxpc3Rlbig1KQorICAgICAgICBzLmNsb3NlKCkKKworICAgICMgVGVzdHMgZm9yIHRlbXBfZGlyKCkKKworICAgIGRlZiB0ZXN0X3RlbXBfZGlyKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgdGVtcF9kaXIoKSBjcmVhdGVzIGFuZCBkZXN0cm95cyBpdHMgZGlyZWN0b3J5LiIiIgorICAgICAgICBwYXJlbnRfZGlyID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHBhcmVudF9kaXIgPSBvcy5wYXRoLnJlYWxwYXRoKHBhcmVudF9kaXIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXJlbnRfZGlyLCAndGVtcCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNkaXIocGF0aCkpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIocGF0aCkgYXMgdGVtcF9wYXRoOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGVtcF9wYXRoLCBwYXRoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKHBhdGgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZGlyKHBhdGgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3VwcG9ydC5ybXRyZWUocGFyZW50X2RpcikKKworICAgIGRlZiB0ZXN0X3RlbXBfZGlyX19wYXRoX25vbmUoc2VsZik6CisgICAgICAgICIiIlRlc3QgcGFzc2luZyBubyBwYXRoLiIiIgorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyB0ZW1wX3BhdGg6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2Rpcih0ZW1wX3BhdGgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNkaXIodGVtcF9wYXRoKSkKKworICAgIGRlZiB0ZXN0X3RlbXBfZGlyX19leGlzdGluZ19kaXJfX3F1aWV0X2RlZmF1bHQoc2VsZik6CisgICAgICAgICIiIlRlc3QgcGFzc2luZyBhIGRpcmVjdG9yeSB0aGF0IGFscmVhZHkgZXhpc3RzLiIiIgorICAgICAgICBkZWYgY2FsbF90ZW1wX2RpcihwYXRoKToKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcihwYXRoKSBhcyB0ZW1wX3BhdGg6CisgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJzaG91bGQgbm90IGdldCBoZXJlIikKKworICAgICAgICBwYXRoID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKHBhdGgpKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBjYWxsX3RlbXBfZGlyKHBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRUVYSVNUKQorICAgICAgICAgICAgIyBNYWtlIHN1cmUgdGVtcF9kaXIgZGlkIG5vdCBkZWxldGUgdGhlIG9yaWdpbmFsIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZGlyKHBhdGgpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShwYXRoKQorCisgICAgZGVmIHRlc3RfdGVtcF9kaXJfX2V4aXN0aW5nX2Rpcl9fcXVpZXRfdHJ1ZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBwYXNzaW5nIGEgZGlyZWN0b3J5IHRoYXQgYWxyZWFkeSBleGlzdHMgd2l0aCBxdWlldD1UcnVlLiIiIgorICAgICAgICBwYXRoID0gdGVtcGZpbGUubWtkdGVtcCgpCisgICAgICAgIHBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHBhdGgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCkgYXMgcmVjb3JkZXI6CisgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKHBhdGgsIHF1aWV0PVRydWUpIGFzIHRlbXBfcGF0aDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXRoLCB0ZW1wX3BhdGgpCisgICAgICAgICAgICAgICAgd2FybmluZ3MgPSBbc3RyKHcubWVzc2FnZSkgZm9yIHcgaW4gcmVjb3JkZXIud2FybmluZ3NdCisgICAgICAgICAgICAjIE1ha2Ugc3VyZSB0ZW1wX2RpciBkaWQgbm90IGRlbGV0ZSB0aGUgb3JpZ2luYWwgZGlyZWN0b3J5LgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIocGF0aCkpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgpCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbJ3Rlc3RzIG1heSBmYWlsLCB1bmFibGUgdG8gY3JlYXRlIHRlbXAgZGlyOiAnICsgcGF0aF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3YXJuaW5ncywgZXhwZWN0ZWQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAiZm9yayIpLCAidGVzdCByZXF1aXJlcyBvcy5mb3JrIikKKyAgICBkZWYgdGVzdF90ZW1wX2Rpcl9fZm9ya2VkX2NoaWxkKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHRoYXQgYSBmb3JrZWQgY2hpbGQgcHJvY2VzcyBkb2VzIG5vdCByZW1vdmUgdGhlIGRpcmVjdG9yeS4iIiIKKyAgICAgICAgIyBTZWUgYnBvLTMwMDI4IGZvciBkZXRhaWxzLgorICAgICAgICAjIFJ1biB0aGUgdGVzdCBhcyBhbiBleHRlcm5hbCBzY3JpcHQsIGJlY2F1c2UgaXQgdXNlcyBmb3JrLgorICAgICAgICBzY3JpcHRfaGVscGVyLmFzc2VydF9weXRob25fb2soIi1jIiwgdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IG9zCisgICAgICAgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2N3ZCgpIGFzIHRlbXBfcGF0aDoKKyAgICAgICAgICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgICAgICAgICBpZiBwaWQgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgIyBwYXJlbnQgcHJvY2VzcyAoY2hpbGQgaGFzIHBpZCA9PSAwKQorCisgICAgICAgICAgICAgICAgICAgICMgd2FpdCBmb3IgdGhlIGNoaWxkIHRvIHRlcm1pbmF0ZQorICAgICAgICAgICAgICAgICAgICAocGlkLCBzdGF0dXMpID0gb3Mud2FpdHBpZChwaWQsIDApCisgICAgICAgICAgICAgICAgICAgIGlmIHN0YXR1cyAhPSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIkNoaWxkIHByb2Nlc3MgZmFpbGVkIHdpdGggZXhpdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIGluZGljYXRpb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjB4ezp4fS4iLmZvcm1hdChzdGF0dXMpKQorCisgICAgICAgICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgdGVtcF9wYXRoIGlzIHN0aWxsIHByZXNlbnQuIFdoZW4gdGhlIGNoaWxkCisgICAgICAgICAgICAgICAgICAgICMgcHJvY2VzcyBsZWF2ZXMgdGhlICd0ZW1wX2N3ZCctY29udGV4dCwgdGhlIF9fZXhpdF9fKCktCisgICAgICAgICAgICAgICAgICAgICMgbWV0aG9kIG9mIHRoZSBjb250ZXh0IG11c3Qgbm90IHJlbW92ZSB0aGUgdGVtcG9yYXJ5CisgICAgICAgICAgICAgICAgICAgICMgZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcih0ZW1wX3BhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoIkNoaWxkIHJlbW92ZWQgdGVtcF9wYXRoLiIpCisgICAgICAgICIiIikpCisKKyAgICAjIFRlc3RzIGZvciBjaGFuZ2VfY3dkKCkKKworICAgIGRlZiB0ZXN0X2NoYW5nZV9jd2Qoc2VsZik6CisgICAgICAgIG9yaWdpbmFsX2N3ZCA9IG9zLmdldGN3ZCgpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfZGlyKCkgYXMgdGVtcF9wYXRoOgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QodGVtcF9wYXRoKSBhcyBuZXdfY3dkOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3X2N3ZCwgdGVtcF9wYXRoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0Y3dkKCksIG5ld19jd2QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5nZXRjd2QoKSwgb3JpZ2luYWxfY3dkKQorCisgICAgZGVmIHRlc3RfY2hhbmdlX2N3ZF9fbm9uX2V4aXN0ZW50X2RpcihzZWxmKToKKyAgICAgICAgIiIiVGVzdCBwYXNzaW5nIGEgbm9uLWV4aXN0ZW50IGRpcmVjdG9yeS4iIiIKKyAgICAgICAgb3JpZ2luYWxfY3dkID0gb3MuZ2V0Y3dkKCkKKworICAgICAgICBkZWYgY2FsbF9jaGFuZ2VfY3dkKHBhdGgpOgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QocGF0aCkgYXMgbmV3X2N3ZDoKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oInNob3VsZCBub3QgZ2V0IGhlcmUiKQorCisgICAgICAgIHdpdGggc3VwcG9ydC50ZW1wX2RpcigpIGFzIHBhcmVudF9kaXI6CisgICAgICAgICAgICBub25fZXhpc3RlbnRfZGlyID0gb3MucGF0aC5qb2luKHBhcmVudF9kaXIsICdkb2VzX25vdF9leGlzdCcpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIGNhbGxfY2hhbmdlX2N3ZChub25fZXhpc3RlbnRfZGlyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVOT0VOVCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldGN3ZCgpLCBvcmlnaW5hbF9jd2QpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VfY3dkX19ub25fZXhpc3RlbnRfZGlyX19xdWlldF90cnVlKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHBhc3NpbmcgYSBub24tZXhpc3RlbnQgZGlyZWN0b3J5IHdpdGggcXVpZXQ9VHJ1ZS4iIiIKKyAgICAgICAgb3JpZ2luYWxfY3dkID0gb3MuZ2V0Y3dkKCkKKworICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9kaXIoKSBhcyBwYXJlbnRfZGlyOgorICAgICAgICAgICAgYmFkX2RpciA9IG9zLnBhdGguam9pbihwYXJlbnRfZGlyLCAnZG9lc19ub3RfZXhpc3QnKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCkgYXMgcmVjb3JkZXI6CisgICAgICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QoYmFkX2RpciwgcXVpZXQ9VHJ1ZSkgYXMgbmV3X2N3ZDoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdfY3dkLCBvcmlnaW5hbF9jd2QpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0Y3dkKCksIG5ld19jd2QpCisgICAgICAgICAgICAgICAgd2FybmluZ3MgPSBbc3RyKHcubWVzc2FnZSkgZm9yIHcgaW4gcmVjb3JkZXIud2FybmluZ3NdCisKKyAgICAgICAgZXhwZWN0ZWQgPSBbJ3Rlc3RzIG1heSBmYWlsLCB1bmFibGUgdG8gY2hhbmdlIENXRCB0bzogJyArIGJhZF9kaXJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod2FybmluZ3MsIGV4cGVjdGVkKQorCisgICAgIyBUZXN0cyBmb3IgY2hhbmdlX2N3ZCgpCisKKyAgICBkZWYgdGVzdF9jaGFuZ2VfY3dkX19jaGRpcl93YXJuaW5nKHNlbGYpOgorICAgICAgICAiIiJDaGVjayB0aGUgd2FybmluZyBtZXNzYWdlIHdoZW4gb3MuY2hkaXIoKSBmYWlscy4iIiIKKyAgICAgICAgcGF0aCA9IFRFU1RGTiArICdfZG9lc19ub3RfZXhpc3QnCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygpIGFzIHJlY29yZGVyOgorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoYW5nZV9jd2QocGF0aD1wYXRoLCBxdWlldD1UcnVlKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBtZXNzYWdlcyA9IFtzdHIody5tZXNzYWdlKSBmb3IgdyBpbiByZWNvcmRlci53YXJuaW5nc10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtZXNzYWdlcywgWyd0ZXN0cyBtYXkgZmFpbCwgdW5hYmxlIHRvIGNoYW5nZSBDV0QgdG86ICcgKyBwYXRoXSkKKworICAgICMgVGVzdHMgZm9yIHRlbXBfY3dkKCkKKworICAgIGRlZiB0ZXN0X3RlbXBfY3dkKHNlbGYpOgorICAgICAgICBoZXJlID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRlbXBfY3dkKG5hbWU9VEVTVEZOKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5iYXNlbmFtZShvcy5nZXRjd2QoKSksIFRFU1RGTikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhURVNURk4pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLmdldGN3ZCgpLCBoZXJlKQorCisKKyAgICBkZWYgdGVzdF90ZW1wX2N3ZF9fbmFtZV9ub25lKHNlbGYpOgorICAgICAgICAiIiJUZXN0IHBhc3NpbmcgTm9uZSB0byB0ZW1wX2N3ZCgpLiIiIgorICAgICAgICBvcmlnaW5hbF9jd2QgPSBvcy5nZXRjd2QoKQorICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QobmFtZT1Ob25lKSBhcyBuZXdfY3dkOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChuZXdfY3dkLCBvcmlnaW5hbF9jd2QpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2RpcihuZXdfY3dkKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0Y3dkKCksIG5ld19jd2QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0Y3dkKCksIG9yaWdpbmFsX2N3ZCkKKworICAgIGRlZiB0ZXN0X3NvcnRkaWN0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1cHBvcnQuc29ydGRpY3QoezM6MywgMjoyLCAxOjF9KSwgInsxOiAxLCAyOiAyLCAzOiAzfSIpCisKKyAgICBkZWYgdGVzdF9tYWtlX2JhZF9mZChzZWxmKToKKyAgICAgICAgZmQgPSBzdXBwb3J0Lm1ha2VfYmFkX2ZkKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIG9zLndyaXRlKGZkLCBiImZvbyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FQkFERikKKworICAgIGRlZiB0ZXN0X2NoZWNrX3N5bnRheF9lcnJvcihzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBjbGFzcyIsIGxpbmVubz0xLCBvZmZzZXQ9OSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAieD0xIikKKworICAgIGRlZiB0ZXN0X0NsZWFuSW1wb3J0KHNlbGYpOgorICAgICAgICBpbXBvcnQgaW1wb3J0bGliCisgICAgICAgIHdpdGggc3VwcG9ydC5DbGVhbkltcG9ydCgiYXN5bmNvcmUiKToKKyAgICAgICAgICAgIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCJhc3luY29yZSIpCisKKyAgICBkZWYgdGVzdF9EaXJzT25TeXNQYXRoKHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuRGlyc09uU3lzUGF0aCgnZm9vJywgJ2JhcicpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiZm9vIiwgc3lzLnBhdGgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJiYXIiLCBzeXMucGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiZm9vIiwgc3lzLnBhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oImJhciIsIHN5cy5wYXRoKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZWRfc3Rkb3V0KHNlbGYpOgorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgorICAgICAgICAgICAgcHJpbnQgImhlbGxvIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAiaGVsbG9cbiIpCisKKyAgICBkZWYgdGVzdF9jYXB0dXJlZF9zdGRlcnIoc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICJoZWxsbyIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIuZ2V0dmFsdWUoKSwgImhlbGxvXG4iKQorCisgICAgZGVmIHRlc3RfY2FwdHVyZWRfc3RkaW4oc2VsZik6CisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRpbigpIGFzIHN0ZGluOgorICAgICAgICAgICAgc3RkaW4ud3JpdGUoJ2hlbGxvXG4nKQorICAgICAgICAgICAgc3RkaW4uc2VlaygwKQorICAgICAgICAgICAgIyBjYWxsIHRlc3QgY29kZSB0aGF0IGNvbnN1bWVzIGZyb20gc3lzLnN0ZGluCisgICAgICAgICAgICBjYXB0dXJlZCA9IHJhd19pbnB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwdHVyZWQsICJoZWxsbyIpCisKKyAgICBkZWYgdGVzdF9nY19jb2xsZWN0KHNlbGYpOgorICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorCisgICAgZGVmIHRlc3RfcHl0aG9uX2lzX29wdGltaXplZChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHN1cHBvcnQucHl0aG9uX2lzX29wdGltaXplZCgpLCBib29sKQorCisgICAgZGVmIHRlc3Rfc3dhcF9hdHRyKHNlbGYpOgorICAgICAgICBjbGFzcyBPYmo6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIG9iaiA9IE9iaigpCisgICAgICAgIG9iai54ID0gMQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKG9iaiwgIngiLCA1KSBhcyB4OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoueCwgNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeCwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoueCwgMSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihvYmosICJ5IiwgNSkgYXMgeToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob2JqLnksIDUpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh5KQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIob2JqLCAneScpKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9hdHRyKG9iaiwgInkiLCA1KToKKyAgICAgICAgICAgIGRlbCBvYmoueQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIob2JqLCAneScpKQorCisgICAgZGVmIHRlc3Rfc3dhcF9pdGVtKHNlbGYpOgorICAgICAgICBEID0geyJ4IjoxfQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9pdGVtKEQsICJ4IiwgNSkgYXMgeDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRFsieCJdLCA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERbIngiXSwgMSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfaXRlbShELCAieSIsIDUpIGFzIHk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERbInkiXSwgNSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInkiLCBEKQorICAgICAgICB3aXRoIHN1cHBvcnQuc3dhcF9pdGVtKEQsICJ5IiwgNSk6CisgICAgICAgICAgICBkZWwgRFsieSJdCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oInkiLCBEKQorCisgICAgZGVmIHRlc3RfbWF0Y2hfdGVzdChzZWxmKToKKyAgICAgICAgY2xhc3MgVGVzdDoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0X2lkKToKKyAgICAgICAgICAgICAgICBzZWxmLnRlc3RfaWQgPSB0ZXN0X2lkCisKKyAgICAgICAgICAgIGRlZiBpZChzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi50ZXN0X2lkCisKKyAgICAgICAgdGVzdF9hY2Nlc3MgPSBUZXN0KCd0ZXN0LnRlc3Rfb3MuRmlsZVRlc3RzLnRlc3RfYWNjZXNzJykKKyAgICAgICAgdGVzdF9jaGRpciA9IFRlc3QoJ3Rlc3QudGVzdF9vcy5XaW4zMkVycm9yVGVzdHMudGVzdF9jaGRpcicpCisKKyAgICAgICAgd2l0aCBzdXBwb3J0LnN3YXBfYXR0cihzdXBwb3J0LCAnX21hdGNoX3Rlc3RfZnVuYycsIE5vbmUpOgorICAgICAgICAgICAgIyBtYXRjaCBhbGwKKyAgICAgICAgICAgIHN1cHBvcnQuc2V0X21hdGNoX3Rlc3RzKFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQubWF0Y2hfdGVzdCh0ZXN0X2FjY2VzcykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5tYXRjaF90ZXN0KHRlc3RfY2hkaXIpKQorCisgICAgICAgICAgICAjIG1hdGNoIGFsbCB1c2luZyBOb25lCisgICAgICAgICAgICBzdXBwb3J0LnNldF9tYXRjaF90ZXN0cyhOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQubWF0Y2hfdGVzdCh0ZXN0X2FjY2VzcykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5tYXRjaF90ZXN0KHRlc3RfY2hkaXIpKQorCisgICAgICAgICAgICAjIG1hdGNoIHRoZSBmdWxsIHRlc3QgaWRlbnRpZmllcgorICAgICAgICAgICAgc3VwcG9ydC5zZXRfbWF0Y2hfdGVzdHMoW3Rlc3RfYWNjZXNzLmlkKCldKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQubWF0Y2hfdGVzdCh0ZXN0X2FjY2VzcykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHN1cHBvcnQubWF0Y2hfdGVzdCh0ZXN0X2NoZGlyKSkKKworICAgICAgICAgICAgIyBtYXRjaCB0aGUgbW9kdWxlIG5hbWUKKyAgICAgICAgICAgIHN1cHBvcnQuc2V0X21hdGNoX3Rlc3RzKFsndGVzdF9vcyddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQubWF0Y2hfdGVzdCh0ZXN0X2FjY2VzcykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5tYXRjaF90ZXN0KHRlc3RfY2hkaXIpKQorCisgICAgICAgICAgICAjIFRlc3QgJyonIHBhdHRlcm4KKyAgICAgICAgICAgIHN1cHBvcnQuc2V0X21hdGNoX3Rlc3RzKFsndGVzdF8qJ10pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5tYXRjaF90ZXN0KHRlc3RfYWNjZXNzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdXBwb3J0Lm1hdGNoX3Rlc3QodGVzdF9jaGRpcikpCisKKyAgICAgICAgICAgICMgVGVzdCBjYXNlIHNlbnNpdGl2aXR5CisgICAgICAgICAgICBzdXBwb3J0LnNldF9tYXRjaF90ZXN0cyhbJ2ZpbGV0ZXN0cyddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdXBwb3J0Lm1hdGNoX3Rlc3QodGVzdF9hY2Nlc3MpKQorICAgICAgICAgICAgc3VwcG9ydC5zZXRfbWF0Y2hfdGVzdHMoWydGaWxlVGVzdHMnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdXBwb3J0Lm1hdGNoX3Rlc3QodGVzdF9hY2Nlc3MpKQorCisgICAgICAgICAgICAjIFRlc3QgcGF0dGVybiBjb250YWluaW5nICcuJyBhbmQgYSAnKicgbWV0YWNoYXJhY3RlcgorICAgICAgICAgICAgc3VwcG9ydC5zZXRfbWF0Y2hfdGVzdHMoWycqdGVzdF9vcy4qLnRlc3RfKiddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQubWF0Y2hfdGVzdCh0ZXN0X2FjY2VzcykpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VwcG9ydC5tYXRjaF90ZXN0KHRlc3RfY2hkaXIpKQorCisgICAgICAgICAgICAjIE11bHRpcGxlIHBhdHRlcm5zCisgICAgICAgICAgICBzdXBwb3J0LnNldF9tYXRjaF90ZXN0cyhbdGVzdF9hY2Nlc3MuaWQoKSwgdGVzdF9jaGRpci5pZCgpXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdXBwb3J0Lm1hdGNoX3Rlc3QodGVzdF9hY2Nlc3MpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN1cHBvcnQubWF0Y2hfdGVzdCh0ZXN0X2NoZGlyKSkKKworICAgICAgICAgICAgc3VwcG9ydC5zZXRfbWF0Y2hfdGVzdHMoWyd0ZXN0X2FjY2VzcycsICdET05UTUFUQ0gnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdXBwb3J0Lm1hdGNoX3Rlc3QodGVzdF9hY2Nlc3MpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzdXBwb3J0Lm1hdGNoX3Rlc3QodGVzdF9jaGRpcikpCisKKyAgICBkZWYgdGVzdF9mZF9jb3VudChzZWxmKToKKyAgICAgICAgIyBXZSBjYW5ub3QgdGVzdCB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgZmRfY291bnQoKTogb24gb2xkIExpbnV4CisgICAgICAgICMga2VybmVsIG9yIGdsaWJjIHZlcnNpb25zLCBvcy51cmFuZG9tKCkga2VlcHMgYSBGRCBvcGVuIG9uCisgICAgICAgICMgL2Rldi91cmFuZG9tIGRldmljZSBhbmQgUHl0aG9uIGhhcyA0IEZEIG9wZW5zIGluc3RlYWQgb2YgMy4KKyAgICAgICAgc3RhcnQgPSBzdXBwb3J0LmZkX2NvdW50KCkKKyAgICAgICAgZmQgPSBvcy5vcGVuKF9fZmlsZV9fLCBvcy5PX1JET05MWSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbW9yZSA9IHN1cHBvcnQuZmRfY291bnQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9yZSAtIHN0YXJ0LCAxKQorCisgICAgIyBYWFggLWZvbGxvd3MgYSBsaXN0IG9mIHVudGVzdGVkIEFQSQorICAgICMgbWFrZV9sZWdhY3lfcHljCisgICAgIyBpc19yZXNvdXJjZV9lbmFibGVkCisgICAgIyByZXF1aXJlcworICAgICMgZmNtcAorICAgICMgdW1ha3MKKyAgICAjIGZpbmRmaWxlCisgICAgIyBjaGVja193YXJuaW5ncworICAgICMgRW52aXJvbm1lbnRWYXJHdWFyZAorICAgICMgVHJhbnNpZW50UmVzb3VyY2UKKyAgICAjIHRyYW5zaWVudF9pbnRlcm5ldAorICAgICMgcnVuX3dpdGhfbG9jYWxlCisgICAgIyBzZXRfbWVtbGltaXQKKyAgICAjIGJpZ21lbXRlc3QKKyAgICAjIHByZWNpc2lvbmJpZ21lbXRlc3QKKyAgICAjIGJpZ2FkZHJzcGFjZXRlc3QKKyAgICAjIHJlcXVpcmVzX3Jlc291cmNlCisgICAgIyBydW5fZG9jdGVzdAorICAgICMgdGhyZWFkaW5nX2NsZWFudXAKKyAgICAjIHJlYXBfdGhyZWFkcworICAgICMgcmVhcF9jaGlsZHJlbgorICAgICMgc3RyaXBfcHl0aG9uX3N0ZGVycgorICAgICMgYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzCisgICAgIyBjYW5fc3ltbGluaworICAgICMgc2tpcF91bmxlc3Nfc3ltbGluaworICAgICMgU3VwcHJlc3NDcmFzaFJlcG9ydAorCisKK2RlZiB0ZXN0X21haW4oKToKKyAgICB0ZXN0cyA9IFtUZXN0U3VwcG9ydF0KKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkLnB5IGIvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKaW5kZXggYjQ2NjEzOC4uOTM2OTBhNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWQucHkKQEAgLTEsOCArMSw4IEBACiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHJhbmRvbQotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKLXRocmVhZCA9IHRlc3Rfc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWQnKQorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Cit0aHJlYWQgPSBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ3RocmVhZCcpCiBpbXBvcnQgdGltZQogaW1wb3J0IHN5cwogaW1wb3J0IHdlYWtyZWYKQEAgLTE3LDExICsxNywxMiBAQAogCiBkZWYgdmVyYm9zZV9wcmludChhcmcpOgogICAgICIiIkhlbHBlciBmdW5jdGlvbiBmb3IgcHJpbnRpbmcgb3V0IGRlYnVnZ2luZyBvdXRwdXQuIiIiCi0gICAgaWYgdGVzdF9zdXBwb3J0LnZlcmJvc2U6CisgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICB3aXRoIF9wcmludF9tdXRleDoKICAgICAgICAgICAgIHByaW50IGFyZwogCiAKKwogY2xhc3MgQmFzaWNUaHJlYWRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTMzLDYgKzM0LDkgQEAKICAgICAgICAgc2VsZi5ydW5uaW5nID0gMAogICAgICAgICBzZWxmLm5leHRfaWRlbnQgPSAwCiAKKyAgICAgICAga2V5ID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC50aHJlYWRpbmdfY2xlYW51cCwgKmtleSkKKwogCiBjbGFzcyBUaHJlYWRSdW5uaW5nVGVzdHMoQmFzaWNUaHJlYWRUZXN0KToKIApAQCAtNTYsMTIgKzYwLDEzIEBACiAgICAgICAgICAgICAgICAgc2VsZi5kb25lX211dGV4LnJlbGVhc2UoKQogCiAgICAgZGVmIHRlc3Rfc3RhcnRpbmdfdGhyZWFkcyhzZWxmKToKLSAgICAgICAgIyBCYXNpYyB0ZXN0IGZvciB0aHJlYWQgY3JlYXRpb24uCi0gICAgICAgIGZvciBpIGluIHJhbmdlKE5VTVRBU0tTKToKLSAgICAgICAgICAgIHNlbGYubmV3dGFzaygpCi0gICAgICAgIHZlcmJvc2VfcHJpbnQoIndhaXRpbmcgZm9yIHRhc2tzIHRvIGNvbXBsZXRlLi4uIikKLSAgICAgICAgc2VsZi5kb25lX211dGV4LmFjcXVpcmUoKQotICAgICAgICB2ZXJib3NlX3ByaW50KCJhbGwgdGFza3MgZG9uZSIpCisgICAgICAgIHdpdGggc3VwcG9ydC53YWl0X3RocmVhZHNfZXhpdCgpOgorICAgICAgICAgICAgIyBCYXNpYyB0ZXN0IGZvciB0aHJlYWQgY3JlYXRpb24uCisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShOVU1UQVNLUyk6CisgICAgICAgICAgICAgICAgc2VsZi5uZXd0YXNrKCkKKyAgICAgICAgICAgIHZlcmJvc2VfcHJpbnQoIndhaXRpbmcgZm9yIHRhc2tzIHRvIGNvbXBsZXRlLi4uIikKKyAgICAgICAgICAgIHNlbGYuZG9uZV9tdXRleC5hY3F1aXJlKCkKKyAgICAgICAgICAgIHZlcmJvc2VfcHJpbnQoImFsbCB0YXNrcyBkb25lIikKIAogICAgIGRlZiB0ZXN0X3N0YWNrX3NpemUoc2VsZik6CiAgICAgICAgICMgVmFyaW91cyBzdGFjayBzaXplIHRlc3RzLgpAQCAtOTEsMTIgKzk2LDEzIEBACiAgICAgICAgICAgICB2ZXJib3NlX3ByaW50KCJ0cnlpbmcgc3RhY2tfc2l6ZSA9ICglZCkiICUgdHNzKQogICAgICAgICAgICAgc2VsZi5uZXh0X2lkZW50ID0gMAogICAgICAgICAgICAgc2VsZi5jcmVhdGVkID0gMAotICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTlVNVEFTS1MpOgotICAgICAgICAgICAgICAgIHNlbGYubmV3dGFzaygpCisgICAgICAgICAgICB3aXRoIHN1cHBvcnQud2FpdF90aHJlYWRzX2V4aXQoKToKKyAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShOVU1UQVNLUyk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYubmV3dGFzaygpCiAKLSAgICAgICAgICAgIHZlcmJvc2VfcHJpbnQoIndhaXRpbmcgZm9yIGFsbCB0YXNrcyB0byBjb21wbGV0ZSIpCi0gICAgICAgICAgICBzZWxmLmRvbmVfbXV0ZXguYWNxdWlyZSgpCi0gICAgICAgICAgICB2ZXJib3NlX3ByaW50KCJhbGwgdGFza3MgZG9uZSIpCisgICAgICAgICAgICAgICAgdmVyYm9zZV9wcmludCgid2FpdGluZyBmb3IgYWxsIHRhc2tzIHRvIGNvbXBsZXRlIikKKyAgICAgICAgICAgICAgICBzZWxmLmRvbmVfbXV0ZXguYWNxdWlyZSgpCisgICAgICAgICAgICAgICAgdmVyYm9zZV9wcmludCgiYWxsIHRhc2tzIGRvbmUiKQogCiAgICAgICAgIHRocmVhZC5zdGFja19zaXplKDApCiAKQEAgLTEwNiwyNSArMTEyLDI4IEBACiAgICAgICAgIG11dCA9IHRocmVhZC5hbGxvY2F0ZV9sb2NrKCkKICAgICAgICAgbXV0LmFjcXVpcmUoKQogICAgICAgICBzdGFydGVkID0gW10KKwogICAgICAgICBkZWYgdGFzaygpOgogICAgICAgICAgICAgc3RhcnRlZC5hcHBlbmQoTm9uZSkKICAgICAgICAgICAgIG11dC5hY3F1aXJlKCkKICAgICAgICAgICAgIG11dC5yZWxlYXNlKCkKLSAgICAgICAgdGhyZWFkLnN0YXJ0X25ld190aHJlYWQodGFzaywgKCkpCi0gICAgICAgIHdoaWxlIG5vdCBzdGFydGVkOgotICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRocmVhZC5fY291bnQoKSwgb3JpZyArIDEpCi0gICAgICAgICMgQWxsb3cgdGhlIHRhc2sgdG8gZmluaXNoLgotICAgICAgICBtdXQucmVsZWFzZSgpCi0gICAgICAgICMgVGhlIG9ubHkgcmVsaWFibGUgd2F5IHRvIGJlIHN1cmUgdGhhdCB0aGUgdGhyZWFkIGVuZGVkIGZyb20gdGhlCi0gICAgICAgICMgaW50ZXJwcmV0ZXIncyBwb2ludCBvZiB2aWV3IGlzIHRvIHdhaXQgZm9yIHRoZSBmdW5jdGlvbiBvYmplY3QgdG8gYmUKLSAgICAgICAgIyBkZXN0cm95ZWQuCi0gICAgICAgIGRvbmUgPSBbXQotICAgICAgICB3ciA9IHdlYWtyZWYucmVmKHRhc2ssIGxhbWJkYSBfOiBkb25lLmFwcGVuZChOb25lKSkKLSAgICAgICAgZGVsIHRhc2sKLSAgICAgICAgd2hpbGUgbm90IGRvbmU6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhyZWFkLl9jb3VudCgpLCBvcmlnKQorCisgICAgICAgIHdpdGggc3VwcG9ydC53YWl0X3RocmVhZHNfZXhpdCgpOgorICAgICAgICAgICAgdGhyZWFkLnN0YXJ0X25ld190aHJlYWQodGFzaywgKCkpCisgICAgICAgICAgICB3aGlsZSBub3Qgc3RhcnRlZDoKKyAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRocmVhZC5fY291bnQoKSwgb3JpZyArIDEpCisgICAgICAgICAgICAjIEFsbG93IHRoZSB0YXNrIHRvIGZpbmlzaC4KKyAgICAgICAgICAgIG11dC5yZWxlYXNlKCkKKyAgICAgICAgICAgICMgVGhlIG9ubHkgcmVsaWFibGUgd2F5IHRvIGJlIHN1cmUgdGhhdCB0aGUgdGhyZWFkIGVuZGVkIGZyb20gdGhlCisgICAgICAgICAgICAjIGludGVycHJldGVyJ3MgcG9pbnQgb2YgdmlldyBpcyB0byB3YWl0IGZvciB0aGUgZnVuY3Rpb24gb2JqZWN0IHRvIGJlCisgICAgICAgICAgICAjIGRlc3Ryb3llZC4KKyAgICAgICAgICAgIGRvbmUgPSBbXQorICAgICAgICAgICAgd3IgPSB3ZWFrcmVmLnJlZih0YXNrLCBsYW1iZGEgXzogZG9uZS5hcHBlbmQoTm9uZSkpCisgICAgICAgICAgICBkZWwgdGFzaworICAgICAgICAgICAgd2hpbGUgbm90IGRvbmU6CisgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aHJlYWQuX2NvdW50KCksIG9yaWcpCiAKICAgICBkZWYgdGVzdF9zYXZlX2V4Y2VwdGlvbl9zdGF0ZV9vbl9lcnJvcihzZWxmKToKICAgICAgICAgIyBTZWUgaXNzdWUgIzE0NDc0CkBAIC0xMzksMTQgKzE0OCwxMyBAQAogICAgICAgICAgICAgcmVhbF93cml0ZShzZWxmLCAqYXJncykKICAgICAgICAgYyA9IHRocmVhZC5fY291bnQoKQogICAgICAgICBzdGFydGVkID0gdGhyZWFkLmFsbG9jYXRlX2xvY2soKQotICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5jYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpIGFzIHN0ZGVycjoKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX291dHB1dCgic3RkZXJyIikgYXMgc3RkZXJyOgogICAgICAgICAgICAgcmVhbF93cml0ZSA9IHN0ZGVyci53cml0ZQogICAgICAgICAgICAgc3RkZXJyLndyaXRlID0gbXl3cml0ZQogICAgICAgICAgICAgc3RhcnRlZC5hY3F1aXJlKCkKLSAgICAgICAgICAgIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKHRhc2ssICgpKQotICAgICAgICAgICAgc3RhcnRlZC5hY3F1aXJlKCkKLSAgICAgICAgICAgIHdoaWxlIHRocmVhZC5fY291bnQoKSA+IGM6Ci0gICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjAxKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LndhaXRfdGhyZWFkc19leGl0KCk6CisgICAgICAgICAgICAgICAgdGhyZWFkLnN0YXJ0X25ld190aHJlYWQodGFzaywgKCkpCisgICAgICAgICAgICAgICAgc3RhcnRlZC5hY3F1aXJlKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbigiVHJhY2ViYWNrIiwgc3RkZXJyLmdldHZhbHVlKCkpCiAKIApAQCAtMTc4LDEzICsxODYsMTQgQEAKIGNsYXNzIEJhcnJpZXJUZXN0KEJhc2ljVGhyZWFkVGVzdCk6CiAKICAgICBkZWYgdGVzdF9iYXJyaWVyKHNlbGYpOgotICAgICAgICBzZWxmLmJhciA9IEJhcnJpZXIoTlVNVEFTS1MpCi0gICAgICAgIHNlbGYucnVubmluZyA9IE5VTVRBU0tTCi0gICAgICAgIGZvciBpIGluIHJhbmdlKE5VTVRBU0tTKToKLSAgICAgICAgICAgIHRocmVhZC5zdGFydF9uZXdfdGhyZWFkKHNlbGYudGFzazIsIChpLCkpCi0gICAgICAgIHZlcmJvc2VfcHJpbnQoIndhaXRpbmcgZm9yIHRhc2tzIHRvIGVuZCIpCi0gICAgICAgIHNlbGYuZG9uZV9tdXRleC5hY3F1aXJlKCkKLSAgICAgICAgdmVyYm9zZV9wcmludCgidGFza3MgZG9uZSIpCisgICAgICAgIHdpdGggc3VwcG9ydC53YWl0X3RocmVhZHNfZXhpdCgpOgorICAgICAgICAgICAgc2VsZi5iYXIgPSBCYXJyaWVyKE5VTVRBU0tTKQorICAgICAgICAgICAgc2VsZi5ydW5uaW5nID0gTlVNVEFTS1MKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKE5VTVRBU0tTKToKKyAgICAgICAgICAgICAgICB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZChzZWxmLnRhc2syLCAoaSwpKQorICAgICAgICAgICAgdmVyYm9zZV9wcmludCgid2FpdGluZyBmb3IgdGFza3MgdG8gZW5kIikKKyAgICAgICAgICAgIHNlbGYuZG9uZV9tdXRleC5hY3F1aXJlKCkKKyAgICAgICAgICAgIHZlcmJvc2VfcHJpbnQoInRhc2tzIGRvbmUiKQogCiAgICAgZGVmIHRhc2syKHNlbGYsIGlkZW50KToKICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoTlVNVFJJUFMpOgpAQCAtMjIyLDggKzIzMSw5IEBACiAKICAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKSwKICAgICAgICAgICAgICAgICAgICAgICJUaGlzIHRlc3QgaXMgb25seSBhcHByb3ByaWF0ZSBmb3IgUE9TSVgtbGlrZSBzeXN0ZW1zLiIpCi0gICAgQHRlc3Rfc3VwcG9ydC5yZWFwX3RocmVhZHMKKyAgICBAc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdF9mb3JraW50aHJlYWQoc2VsZik6CisgICAgICAgIG5vbl9sb2NhbCA9IHsnc3RhdHVzJzogTm9uZX0KICAgICAgICAgZGVmIHRocmVhZDEoKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBwaWQgPSBvcy5mb3JrKCkgIyBmb3JrIGluIGEgdGhyZWFkCkBAIC0yNDEsMTAgKzI1MSwxNCBAQAogICAgICAgICAgICAgICAgIG9zLl9leGl0KDApCiAgICAgICAgICAgICBlbHNlOiAjIHBhcmVudAogICAgICAgICAgICAgICAgIG9zLmNsb3NlKHNlbGYud3JpdGVfZmQpCisgICAgICAgICAgICAgICAgcGlkLCBzdGF0dXMgPSBvcy53YWl0cGlkKHBpZCwgMCkKKyAgICAgICAgICAgICAgICBub25fbG9jYWxbJ3N0YXR1cyddID0gc3RhdHVzCiAKLSAgICAgICAgdGhyZWFkLnN0YXJ0X25ld190aHJlYWQodGhyZWFkMSwgKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucmVhZChzZWxmLnJlYWRfZmQsIDIpLCAiT0siLAotICAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gZm9yaygpIGluIHRocmVhZCIpCisgICAgICAgIHdpdGggc3VwcG9ydC53YWl0X3RocmVhZHNfZXhpdCgpOgorICAgICAgICAgICAgdGhyZWFkLnN0YXJ0X25ld190aHJlYWQodGhyZWFkMSwgKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnJlYWQoc2VsZi5yZWFkX2ZkLCAyKSwgIk9LIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBmb3JrKCkgaW4gdGhyZWFkIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub25fbG9jYWxbJ3N0YXR1cyddLCAwKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICB0cnk6CkBAIC0yNTksNyArMjczLDcgQEAKIAogCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgdGVzdF9zdXBwb3J0LnJ1bl91bml0dGVzdChUaHJlYWRSdW5uaW5nVGVzdHMsIEJhcnJpZXJUZXN0LCBMb2NrVGVzdHMsCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGhyZWFkUnVubmluZ1Rlc3RzLCBCYXJyaWVyVGVzdCwgTG9ja1Rlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdEZvcmtJblRocmVhZCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkc2lnbmFscy5weQppbmRleCAyZjdlYjYwLi4zZDc5ZmQ1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RocmVhZHNpZ25hbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aHJlYWRzaWduYWxzLnB5CkBAIC01Miw5ICs1MiwxMSBAQAogICAgICAgICAjIHdhaXQgZm9yIGl0IHJldHVybi4KICAgICAgICAgaWYgc2lnbmFsX2JsYWNrYm9hcmRbc2lnbmFsLlNJR1VTUjFdWyd0cmlwcGVkJ10gPT0gMCBcCiAgICAgICAgICAgIG9yIHNpZ25hbF9ibGFja2JvYXJkW3NpZ25hbC5TSUdVU1IyXVsndHJpcHBlZCddID09IDA6Ci0gICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKLSAgICAgICAgICAgIHNpZ25hbC5wYXVzZSgpCi0gICAgICAgICAgICBzaWduYWwuYWxhcm0oMCkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMSkKKyAgICAgICAgICAgICAgICBzaWduYWwucGF1c2UoKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBzaWduYWwuYWxhcm0oMCkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCBzaWduYWxfYmxhY2tib2FyZFtzaWduYWwuU0lHVVNSMV1bJ3RyaXBwZWQnXSwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCggc2lnbmFsX2JsYWNrYm9hcmRbc2lnbmFsLlNJR1VTUjFdWyd0cmlwcGVkX2J5J10sCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3RpbWUucHkKaW5kZXggNDU3MWMxMC4uNGRhNjcwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1lLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQpAQCAtMiw2ICsyLDEyIEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCitpbXBvcnQgc3lzY29uZmlnCisKKworIyBNYXggeWVhciBpcyBvbmx5IGxpbWl0ZWQgYnkgdGhlIHNpemUgb2YgQyBpbnQuCitTSVpFT0ZfSU5UID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdTSVpFT0ZfSU5UJykgb3IgNAorVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKIAogCiBjbGFzcyBUaW1lVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNDUsNiArNTEsNjYgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgdGltZS5zdHJmdGltZSgnJWYnKQogCisgICAgZGVmIF9ib3VuZHNfY2hlY2tpbmcoc2VsZiwgZnVuYyk6CisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgc3RyZnRpbWUoKSBjaGVja3MgdGhlIGJvdW5kcyBvZiB0aGUgdmFyaW91cyBwYXJ0cworICAgICAgICAjIG9mIHRoZSB0aW1lIHR1cGxlICgwIGlzIHZhbGlkIGZvciAqYWxsKiB2YWx1ZXMpLgorCisgICAgICAgICMgVGhlIHllYXIgZmllbGQgaXMgdGVzdGVkIGJ5IG90aGVyIHRlc3QgY2FzZXMgYWJvdmUKKworICAgICAgICAjIENoZWNrIG1vbnRoIFsxLCAxMl0gKyB6ZXJvIHN1cHBvcnQKKyAgICAgICAgZnVuYygoMTkwMCwgMCwgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQorICAgICAgICBmdW5jKCgxOTAwLCAxMiwgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAtMSwgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxMywgMSwgMCwgMCwgMCwgMCwgMSwgLTEpKQorICAgICAgICAjIENoZWNrIGRheSBvZiBtb250aCBbMSwgMzFdICsgemVybyBzdXBwb3J0CisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDAsIDAsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMzEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgLTEsIDAsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMzIsIDAsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgIyBDaGVjayBob3VyIFswLCAyM10KKyAgICAgICAgZnVuYygoMTkwMCwgMSwgMSwgMjMsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgLTEsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTkwMCwgMSwgMSwgMjQsIDAsIDAsIDAsIDEsIC0xKSkKKyAgICAgICAgIyBDaGVjayBtaW51dGUgWzAsIDU5XQorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCA1OSwgMCwgMCwgMSwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAtMSwgMCwgMCwgMSwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCA2MCwgMCwgMCwgMSwgLTEpKQorICAgICAgICAjIENoZWNrIHNlY29uZCBbMCwgNjFdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIDAsIC0xLCAwLCAxLCAtMSkpCisgICAgICAgICMgQzk5IG9ubHkgcmVxdWlyZXMgYWxsb3dpbmcgZm9yIG9uZSBsZWFwIHNlY29uZCwgYnV0IFB5dGhvbidzIGRvY3Mgc2F5CisgICAgICAgICMgYWxsb3cgdHdvIGxlYXAgc2Vjb25kcyAoMC4uNjEpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDYwLCAwLCAxLCAtMSkpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDYxLCAwLCAxLCAtMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZ1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDE5MDAsIDEsIDEsIDAsIDAsIDYyLCAwLCAxLCAtMSkpCisgICAgICAgICMgTm8gY2hlY2sgZm9yIHVwcGVyLWJvdW5kIGRheSBvZiB3ZWVrOworICAgICAgICAjICB2YWx1ZSBmb3JjZWQgaW50byByYW5nZSBieSBhIGBgJSA3YGAgY2FsY3VsYXRpb24uCisgICAgICAgICMgU3RhcnQgY2hlY2sgYXQgLTIgc2luY2UgZ2V0dG1hcmcoKSBpbmNyZW1lbnRzIHZhbHVlIGJlZm9yZSB0YWtpbmcKKyAgICAgICAgIyAgbW9kdWxvLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsIC0xLCAxLCAtMSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsICs2LCAxLCAtMSkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCAwLCAtMiwgMSwgLTEpKQorICAgICAgICAjIENoZWNrIGRheSBvZiB0aGUgeWVhciBbMSwgMzY2XSArIHplcm8gc3VwcG9ydAorICAgICAgICBmdW5jKCgxOTAwLCAxLCAxLCAwLCAwLCAwLCAwLCAwLCAtMSkpCisgICAgICAgIGZ1bmMoKDE5MDAsIDEsIDEsIDAsIDAsIDAsIDAsIDM2NiwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCAwLCAwLCAtMSwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxOTAwLCAxLCAxLCAwLCAwLCAwLCAwLCAzNjcsIC0xKSkKKworICAgIGRlZiB0ZXN0X3N0cmZ0aW1lX2JvdW5kaW5nX2NoZWNrKHNlbGYpOgorICAgICAgICBzZWxmLl9ib3VuZHNfY2hlY2tpbmcobGFtYmRhIHR1cDogdGltZS5zdHJmdGltZSgnJywgdHVwKSkKKwogICAgIGRlZiB0ZXN0X3N0cmZ0aW1lX2JvdW5kc19jaGVja2luZyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCBzdHJmdGltZSgpIGNoZWNrcyB0aGUgYm91bmRzIG9mIHRoZSB2YXJpb3VzIHBhcnRzCiAgICAgICAgICNvZiB0aGUgdGltZSB0dXBsZSAoMCBpcyB2YWxpZCBmb3IgKmFsbCogdmFsdWVzKS4KQEAgLTEyMywxNSArMTg5LDE1IEBACiAgICAgICAgIHRpbWUuYXNjdGltZSh0aW1lLmdtdGltZShzZWxmLnQpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHRpbWUuYXNjdGltZSwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aW1lLmFzY3RpbWUsICgpKQotICAgICAgICAjIFhYWDogUG9zaXggY29tcGlhbnQgYXNjdGltZSBzaG91bGQgcmVmdXNlIHRvIGNvbnZlcnQKLSAgICAgICAgIyB5ZWFyID4gOTk5OSwgYnV0IExpbnV4IGltcGxlbWVudGF0aW9uIGRvZXMgbm90LgotICAgICAgICAjIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHRpbWUuYXNjdGltZSwKLSAgICAgICAgIyAgICAgICAgICAgICAgICAgICgxMjM0NSwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCkpCi0gICAgICAgICMgWFhYOiBGb3Igbm93LCBqdXN0IG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIGEgY3Jhc2g6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuYXNjdGltZSgoMTIzNDUsIDEsIDEsIDAsIDAsIDAsIDAsIDEsIDApKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIE1heCB5ZWFyIGlzIG9ubHkgbGltaXRlZCBieSB0aGUgc2l6ZSBvZiBDIGludC4KKyAgICAgICAgYXNjID0gdGltZS5hc2N0aW1lKChUSU1FX01BWFlFQVIsIDYsIDEpICsgKDAsKSAqIDYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXNjWy1sZW4oc3RyKFRJTUVfTUFYWUVBUikpOl0sIHN0cihUSU1FX01BWFlFQVIpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCB0aW1lLmFzY3RpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChUSU1FX01BWFlFQVIgKyAxLCkgKyAoMCwpICogOCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aW1lLmFzY3RpbWUsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgdGltZS5hc2N0aW1lLCAoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB0aW1lLmFzY3RpbWUsICgwLCkgKiAxMCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYobm90IGhhc2F0dHIodGltZSwgInR6c2V0IiksCiAgICAgICAgICJ0aW1lIG1vZHVsZSBoYXMgbm8gYXR0cmlidXRlIHR6c2V0IikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IGZkOTQ4NmIuLmE0NjI1OTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtMSwzMiArMSw1NCBAQAogZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKLWZyb20gdG9rZW5pemUgaW1wb3J0ICh1bnRva2VuaXplLCBnZW5lcmF0ZV90b2tlbnMsIE5VTUJFUiwgTkFNRSwgT1AsCitmcm9tIHRva2VuaXplIGltcG9ydCAodW50b2tlbml6ZSwgZ2VuZXJhdGVfdG9rZW5zLCBOVU1CRVIsIE5BTUUsIE9QLCBORVdMSU5FLAogICAgICAgICAgICAgICAgICAgICAgU1RSSU5HLCBFTkRNQVJLRVIsIHRva19uYW1lLCBVbnRva2VuaXplciwgdG9rZW5pemUpCiBmcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IG9zCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZQogCiAKKyMgQ29udmVydHMgYSBzb3VyY2Ugc3RyaW5nIGludG8gYSBsaXN0IG9mIHRleHR1YWwgcmVwcmVzZW50YXRpb24KKyMgb2YgdGhlIHRva2VucyBzdWNoIGFzOgorIyBgICAgIE5BTUUgICAgICAgJ2lmJyAgICAgICAgICAoMSwgMCkgKDEsIDIpYAorIyB0byBtYWtlIHdyaXRpbmcgdGVzdHMgZWFzaWVyLgorZGVmIHN0cmluZ2lmeV90b2tlbnNfZnJvbV9zb3VyY2UodG9rZW5fZ2VuZXJhdG9yLCBzb3VyY2Vfc3RyaW5nKToKKyAgICByZXN1bHQgPSBbXQorICAgIG51bV9saW5lcyA9IGxlbihzb3VyY2Vfc3RyaW5nLnNwbGl0bGluZXMoKSkKKyAgICBtaXNzaW5nX3RyYWlsaW5nX25sID0gc291cmNlX3N0cmluZ1stMV0gbm90IGluICdcclxuJworCisgICAgZm9yIHR5cGUsIHRva2VuLCBzdGFydCwgZW5kLCBsaW5lIGluIHRva2VuX2dlbmVyYXRvcjoKKyAgICAgICAgaWYgdHlwZSA9PSBFTkRNQVJLRVI6CisgICAgICAgICAgICBicmVhaworICAgICAgICAjIElnbm9yZSB0aGUgbmV3IGxpbmUgb24gdGhlIGxhc3QgbGluZSBpZiB0aGUgaW5wdXQgbGFja3Mgb25lCisgICAgICAgIGlmIG1pc3NpbmdfdHJhaWxpbmdfbmwgYW5kIHR5cGUgPT0gTkVXTElORSBhbmQgZW5kWzBdID09IG51bV9saW5lczoKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIHR5cGUgPSB0b2tfbmFtZVt0eXBlXQorICAgICAgICByZXN1bHQuYXBwZW5kKCIgICAgJSh0eXBlKS0xMC4xMHMgJSh0b2tlbiktMTMuMTNyICUoc3RhcnQpcyAlKGVuZClzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscygpKQorCisgICAgcmV0dXJuIHJlc3VsdAorCiBjbGFzcyBUb2tlbml6ZVRlc3QoVGVzdENhc2UpOgogICAgICMgVGVzdHMgZm9yIHRoZSB0b2tlbml6ZSBtb2R1bGUuCiAKICAgICAjIFRoZSB0ZXN0cyBjYW4gYmUgcmVhbGx5IHNpbXBsZS4gR2l2ZW4gYSBzbWFsbCBmcmFnbWVudCBvZiBzb3VyY2UKLSAgICAjIGNvZGUsIHByaW50IG91dCBhIHRhYmxlIHdpdGggdG9rZW5zLiBUaGUgRU5ETUFSS0VSIGlzIG9taXR0ZWQgZm9yCi0gICAgIyBicmV2aXR5LgorICAgICMgY29kZSwgcHJpbnQgb3V0IGEgdGFibGUgd2l0aCB0b2tlbnMuIFRoZSBFTkRNQVJLRVIsIEVOQ09ESU5HIGFuZAorICAgICMgZmluYWwgTkVXTElORSBhcmUgb21pdHRlZCBmb3IgYnJldml0eS4KIAogICAgIGRlZiBjaGVja190b2tlbml6ZShzZWxmLCBzLCBleHBlY3RlZCk6CiAgICAgICAgICMgRm9ybWF0IHRoZSB0b2tlbnMgaW4gcyBpbiBhIHRhYmxlIGZvcm1hdC4KLSAgICAgICAgIyBUaGUgRU5ETUFSS0VSIGlzIG9taXR0ZWQuCi0gICAgICAgIHJlc3VsdCA9IFtdCiAgICAgICAgIGYgPSBTdHJpbmdJTyhzKQotICAgICAgICBmb3IgdHlwZSwgdG9rZW4sIHN0YXJ0LCBlbmQsIGxpbmUgaW4gZ2VuZXJhdGVfdG9rZW5zKGYucmVhZGxpbmUpOgotICAgICAgICAgICAgaWYgdHlwZSA9PSBFTkRNQVJLRVI6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIHR5cGUgPSB0b2tfbmFtZVt0eXBlXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgICUodHlwZSktMTAuMTBzICUodG9rZW4pLTEzLjEzciAlKHN0YXJ0KXMgJShlbmQpcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSkKKyAgICAgICAgcmVzdWx0ID0gc3RyaW5naWZ5X3Rva2Vuc19mcm9tX3NvdXJjZShnZW5lcmF0ZV90b2tlbnMoZi5yZWFkbGluZSksIHMpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucnN0cmlwKCkuc3BsaXRsaW5lcygpKQogCisgICAgZGVmIHRlc3RfaW1wbGljaXRfbmV3bGluZShzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB0aGUgdG9rZW5pemVyIHB1dHMgaW4gYW4gaW1wbGljaXQgTkVXTElORQorICAgICAgICAjIHdoZW4gdGhlIGlucHV0IGxhY2tzIGEgdHJhaWxpbmcgbmV3IGxpbmUuCisgICAgICAgIGYgPSBTdHJpbmdJTygieCIpCisgICAgICAgIHRva2VucyA9IGxpc3QoZ2VuZXJhdGVfdG9rZW5zKGYucmVhZGxpbmUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRva2Vuc1stMl1bMF0sIE5FV0xJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9rZW5zWy0xXVswXSwgRU5ETUFSS0VSKQogCiAgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoIjEgKyAxIiwgIiIiXApAQCAtNjE2LDcgKzYzOCw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKCJpZiB4ID09IDE6XG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgcHJpbnQgeFxuIikKICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoIiMgVGhpcyBpcyBhIGNvbW1lbnRcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiMgVGhpcyBhbHNvIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiMgVGhpcyBhbHNvXG4iKQogCiAgICAgICAgICMgU29tZSBwZW9wbGUgdXNlIGRpZmZlcmVudCBmb3JtYXR0aW5nIGNvbnZlbnRpb25zLCB3aGljaCBtYWtlcwogICAgICAgICAjIHVudG9rZW5pemUgYSBsaXR0bGUgdHJpY2tpZXIuIE5vdGUgdGhhdCB0aGlzIHRlc3QgaW52b2x2ZXMgdHJhaWxpbmcKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzLnB5CmluZGV4IDU3YjNlZjEuLjUxZTRmZDYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy5weQpAQCAtNDE2LDEyICs0MTYsMTUgQEAKICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbih0ZXN0X3N1cHBvcnQuVEVTVEZOLCAiZmlsZS5weSIpLCAidyIpIGFzIGZpbGU6CiAgICAgICAgICAgICBmaWxlLndyaXRlKCJ4eCA9ICd1bmFsdGVyZWQnXG4iKQogICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oc2NyaXB0c2RpciwgImZpeGNpZC5weSIpCi0gICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3NjcmlwdChhcmdzPSh0ZXN0X3N1cHBvcnQuVEVTVEZOLCkpCisgICAgICAgICMgaWdub3JlIGRiZygpIG1lc3NhZ2VzCisgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3NjcmlwdChhcmdzPSh0ZXN0X3N1cHBvcnQuVEVTVEZOLCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwob3V0cHV0LAogICAgICAgICAgICAgInt9OlxuIgogICAgICAgICAgICAgIjFcbiIKICAgICAgICAgICAgICc8IGludCB4eDtcbicKLSAgICAgICAgICAgICc+IGludCB5eTtcbicuZm9ybWF0KGNfZmlsZW5hbWUpCisgICAgICAgICAgICAnPiBpbnQgeXk7XG4nLmZvcm1hdChjX2ZpbGVuYW1lKSwKKyAgICAgICAgICAgICJzdGRlcnI6ICVzIiAlIHN0ZGVyci5nZXR2YWx1ZSgpCiAgICAgICAgICkKIAogICAgIGRlZiBydW5fc2NyaXB0KHNlbGYsIGlucHV0PSIiLCBhcmdzPSgiLSIsKSwgc3Vic3RmaWxlPSJ4eCB5eVxuIik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKaW5kZXggMGYyY2YyMS4uNTYwYjg0YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQpAQCAtMTgxNCw3ICsxODE0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIGIncmVwcj0lVicsIE5vbmUsIGInYWJjXHhmZicpCiAKICAgICAgICAgIyBub3Qgc3VwcG9ydGVkOiBjb3B5IHRoZSByYXcgZm9ybWF0IHN0cmluZy4gdGhlc2UgdGVzdHMgYXJlIGp1c3QgaGVyZQotICAgICAgICAjIHRvIGNoZWNrIGZvciBjcmFzaHMgYW5kIHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBhcyBzcGVjaWZpY2F0aW9ucworICAgICAgICAjIHRvIGNoZWNrIGZvciBjcmFzaGVzIGFuZCBzaG91bGQgbm90IGJlIGNvbnNpZGVyZWQgYXMgc3BlY2lmaWNhdGlvbnMKICAgICAgICAgY2hlY2tfZm9ybWF0KHUnJXMnLAogICAgICAgICAgICAgICAgICAgICAgYiclMSVzJywgYidhYmMnKQogICAgICAgICBjaGVja19mb3JtYXQodSclMWFiYycsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQppbmRleCBjMzBlY2Y0Li4xMWYyY2RhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKQEAgLTIwNCw2ICsyMDQsMTkgQEAKICAgICAgICAgYiA9IHUnQ1x1MDMzOCcgKiAyMCAgKyB1J1x4QzcnCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5ub3JtYWxpemUoJ05GQycsIGEpLCBiKQogCisgICAgZGVmIHRlc3RfaXNzdWUyOTQ1NihzZWxmKToKKyAgICAgICAgIyBGaXggIzI5NDU2CisgICAgICAgIHUxMTc2X3N0cl9hID0gdSdcdTExMDBcdTExNzZcdTExYTgnCisgICAgICAgIHUxMTc2X3N0cl9iID0gdSdcdTExMDBcdTExNzZcdTExYTgnCisgICAgICAgIHUxMWE3X3N0cl9hID0gdSdcdTExMDBcdTExNzVcdTExYTcnCisgICAgICAgIHUxMWE3X3N0cl9iID0gdSdcdWFlMzBcdTExYTcnCisgICAgICAgIHUxMWMzX3N0cl9hID0gdSdcdTExMDBcdTExNzVcdTExYzMnCisgICAgICAgIHUxMWMzX3N0cl9iID0gdSdcdWFlMzBcdTExYzMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5ub3JtYWxpemUoJ05GQycsIHUxMTc2X3N0cl9hKSwgdTExNzZfc3RyX2IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5ub3JtYWxpemUoJ05GQycsIHUxMWE3X3N0cl9hKSwgdTExYTdfc3RyX2IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi5ub3JtYWxpemUoJ05GQycsIHUxMWMzX3N0cl9hKSwgdTExYzNfc3RyX2IpCisKKwogICAgIGRlZiB0ZXN0X2Vhc3RfYXNpYW5fd2lkdGgoc2VsZik6CiAgICAgICAgIGVhdyA9IHNlbGYuZGIuZWFzdF9hc2lhbl93aWR0aAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVhdywgJ2EnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxsaWIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQppbmRleCA3YjFlZjZhLi4xY2U5MjAxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybGxpYi5weQpAQCAtMTg1LDExICsxODUsMTIgQEAKICAgICBkZWYgdGVzdF9wcm94eV9ieXBhc3NfZW52aXJvbm1lbnRfaG9zdF9tYXRjaChzZWxmKToKICAgICAgICAgYnlwYXNzID0gdXJsbGliLnByb3h5X2J5cGFzc19lbnZpcm9ubWVudAogICAgICAgICBzZWxmLmVudi5zZXQoJ05PX1BST1hZJywKLSAgICAgICAgICAgICdsb2NhbGhvc3QsIGFub3RoZXJkb21haW4uY29tLCBuZXdkb21haW4uY29tOjEyMzQnKQorICAgICAgICAgICAgICAgICAgICAgJ2xvY2FsaG9zdCwgYW5vdGhlcmRvbWFpbi5jb20sIG5ld2RvbWFpbi5jb206MTIzNCwgLmQuby50JykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ5cGFzcygnbG9jYWxob3N0JykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShieXBhc3MoJ0xvY2FsSG9zdCcpKSAgICAgICAgICAgICAgICAgIyBNaXhlZENhc2UKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ5cGFzcygnTE9DQUxIT1NUJykpICAgICAgICAgICAgICAgICAjIFVQUEVSQ0FTRQogICAgICAgICBzZWxmLmFzc2VydFRydWUoYnlwYXNzKCduZXdkb21haW4uY29tOjEyMzQnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ5cGFzcygnZm9vLmQuby50JykpICAgICAgICAgICAgICAgICAjIGlzc3VlIDI5MTQyCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShieXBhc3MoJ2Fub3RoZXJkb21haW4uY29tOjg4ODgnKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGJ5cGFzcygnd3d3Lm5ld2RvbWFpbi5jb206MTIzNCcpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGJ5cGFzcygncHJlbG9jYWxob3N0JykpCkBAIC04NzgsNiArODc5LDI2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BsaXRob3N0KCcvZm9vL2Jhci9iYXouaHRtbCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnL2Zvby9iYXIvYmF6Lmh0bWwnKSkKIAorICAgICAgICAjIGJwby0zMDUwMDogIyBzdGFydHMgYSBmcmFnbWVudC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGxpdGhvc3QoJy8vMTI3LjAuMC4xI0Bob3N0LmNvbScpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgnMTI3LjAuMC4xJywgJy8jQGhvc3QuY29tJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BsaXRob3N0KCcvLzEyNy4wLjAuMSNAaG9zdC5jb206ODAnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJzEyNy4wLjAuMScsICcvI0Bob3N0LmNvbTo4MCcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0aG9zdCgnLy8xMjcuMC4wLjE6ODAjQGhvc3QuY29tJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCcxMjcuMC4wLjE6ODAnLCAnLyNAaG9zdC5jb20nKSkKKworICAgICAgICAjIEVtcHR5IGhvc3QgaXMgcmV0dXJuZWQgYXMgZW1wdHkgc3RyaW5nLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0aG9zdCgiLy8vZmlsZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgnJywgJy9maWxlJykpCisKKyAgICAgICAgIyBUcmFpbGluZyBzZW1pY29sb24sIHF1ZXN0aW9uIG1hcmsgYW5kIGhhc2ggc3ltYm9sIGFyZSBrZXB0LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNwbGl0aG9zdCgiLy9leGFtcGxlLm5ldC9maWxlOyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhhbXBsZS5uZXQnLCAnL2ZpbGU7JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BsaXRob3N0KCIvL2V4YW1wbGUubmV0L2ZpbGU/IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGFtcGxlLm5ldCcsICcvZmlsZT8nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGxpdGhvc3QoIi8vZXhhbXBsZS5uZXQvZmlsZSMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4YW1wbGUubmV0JywgJy9maWxlIycpKQorCiAgICAgZGVmIHRlc3Rfc3BsaXR1c2VyKHNlbGYpOgogICAgICAgICBzcGxpdHVzZXIgPSB1cmxsaWIuc3BsaXR1c2VyCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3BsaXR1c2VyKCdVc2VyOlBhc3NAd3d3LnB5dGhvbi5vcmc6MDgwJyksCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKaW5kZXggOTE5OWNiOS4uOTMyYjU3MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQpAQCAtMjc4LDYgKzI3OCw3IEBACiAgICAgICAgIHNlbGYuX3RocmVhZHMgPSB0ZXN0X3N1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc2VsZi5kb0NsZWFudXBzKCkKICAgICAgICAgdGVzdF9zdXBwb3J0LnRocmVhZGluZ19jbGVhbnVwKCpzZWxmLl90aHJlYWRzKQogCiAKQEAgLTI5NiwxMCArMjk3LDcgQEAKICAgICAgICAgc2VsZi5zZXJ2ZXJfdXJsID0gJ2h0dHA6Ly8xMjcuMC4wLjE6JXMnICUgc2VsZi5zZXJ2ZXIucG9ydAogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCiAgICAgICAgIHNlbGYuc2VydmVyLnJlYWR5LndhaXQoKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKLSAgICAgICAgc3VwZXIoQmFzaWNBdXRoVGVzdHMsIHNlbGYpLnRlYXJEb3duKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2VydmVyLnN0b3ApCiAKICAgICBkZWYgdGVzdF9iYXNpY19hdXRoX3N1Y2Nlc3Moc2VsZik6CiAgICAgICAgIGFoID0gdXJsbGliMi5IVFRQQmFzaWNBdXRoSGFuZGxlcigpCkBAIC0zNDcsMTUgKzM0NSwxMiBAQAogICAgICAgICBzZWxmLnNlcnZlciA9IExvb3BiYWNrSHR0cFNlcnZlclRocmVhZChjcmVhdGVfZmFrZV9wcm94eV9oYW5kbGVyKQogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCiAgICAgICAgIHNlbGYuc2VydmVyLnJlYWR5LndhaXQoKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXJ2ZXIuc3RvcCkKICAgICAgICAgcHJveHlfdXJsID0gImh0dHA6Ly8xMjcuMC4wLjE6JWQiICUgc2VsZi5zZXJ2ZXIucG9ydAogICAgICAgICBoYW5kbGVyID0gdXJsbGliMi5Qcm94eUhhbmRsZXIoeyJodHRwIiA6IHByb3h5X3VybH0pCiAgICAgICAgIHNlbGYucHJveHlfZGlnZXN0X2hhbmRsZXIgPSB1cmxsaWIyLlByb3h5RGlnZXN0QXV0aEhhbmRsZXIoKQogICAgICAgICBzZWxmLm9wZW5lciA9IHVybGxpYjIuYnVpbGRfb3BlbmVyKGhhbmRsZXIsIHNlbGYucHJveHlfZGlnZXN0X2hhbmRsZXIpCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQotICAgICAgICBzdXBlcihQcm94eUF1dGhUZXN0cywgc2VsZikudGVhckRvd24oKQotCiAgICAgZGVmIHRlc3RfcHJveHlfd2l0aF9iYWRfcGFzc3dvcmRfcmFpc2VzX2h0dHBlcnJvcihzZWxmKToKICAgICAgICAgc2VsZi5wcm94eV9kaWdlc3RfaGFuZGxlci5hZGRfcGFzc3dvcmQoc2VsZi5SRUFMTSwgc2VsZi5VUkwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuVVNFUiwgc2VsZi5QQVNTV0QrImJhZCIpCkBAIC00NzIsNiArNDY3LDcgQEAKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBMb29wYmFja0h0dHBTZXJ2ZXJUaHJlYWQoaGFuZGxlcikKICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQogICAgICAgICBzZWxmLnNlcnZlci5yZWFkeS53YWl0KCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2VydmVyLnN0b3ApCiAgICAgICAgIHBvcnQgPSBzZWxmLnNlcnZlci5wb3J0CiAgICAgICAgIGhhbmRsZXIucG9ydCA9IHBvcnQKICAgICAgICAgcmV0dXJuIGhhbmRsZXIKQEAgLTQ5NiwxNSArNDkyLDEyIEBACiAKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfc2VydmVyKHJlc3BvbnNlcykKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmID0gdXJsbGliMi51cmxvcGVuKCdodHRwOi8vbG9jYWxob3N0OiVzLycgJSBoYW5kbGVyLnBvcnQpCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBmID0gdXJsbGliMi51cmxvcGVuKCdodHRwOi8vbG9jYWxob3N0OiVzLycgJSBoYW5kbGVyLnBvcnQpCisgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICBmLmNsb3NlKCkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBleHBlY3RlZF9yZXNwb25zZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5yZXF1ZXN0cywgWycvJywgJy9zb21ld2hlcmVfZWxzZSddKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZXhwZWN0ZWRfcmVzcG9uc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5yZXF1ZXN0cywgWycvJywgJy9zb21ld2hlcmVfZWxzZSddKQogCiAKICAgICBkZWYgdGVzdF80MDQoc2VsZik6CkBAIC01MTIsNDkgKzUwNSw0MCBAQAogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9zZXJ2ZXIoWyg0MDQsIFtdLCBleHBlY3RlZF9yZXNwb25zZSldKQogCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB1cmxsaWIyLnVybG9wZW4oJ2h0dHA6Ly9sb2NhbGhvc3Q6JXMvd2VlYmxlJyAlIGhhbmRsZXIucG9ydCkKLSAgICAgICAgICAgIGV4Y2VwdCB1cmxsaWIyLlVSTEVycm9yLCBmOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCc0MDQgc2hvdWxkIHJhaXNlIFVSTEVycm9yJykKKyAgICAgICAgICAgIHVybGxpYjIudXJsb3BlbignaHR0cDovL2xvY2FsaG9zdDolcy93ZWVibGUnICUgaGFuZGxlci5wb3J0KQorICAgICAgICBleGNlcHQgdXJsbGliMi5VUkxFcnJvciwgZjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnNDA0IHNob3VsZCByYWlzZSBVUkxFcnJvcicpCiAKLSAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICBmLmNsb3NlKCkKIAotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBleHBlY3RlZF9yZXNwb25zZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5yZXF1ZXN0cywgWycvd2VlYmxlJ10pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBleHBlY3RlZF9yZXNwb25zZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYW5kbGVyLnJlcXVlc3RzLCBbJy93ZWVibGUnXSkKIAogCiAgICAgZGVmIHRlc3RfMjAwKHNlbGYpOgogICAgICAgICBleHBlY3RlZF9yZXNwb25zZSA9ICdweWNvbiAyMDA4Li4uJwogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9zZXJ2ZXIoWygyMDAsIFtdLCBleHBlY3RlZF9yZXNwb25zZSldKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYgPSB1cmxsaWIyLnVybG9wZW4oJ2h0dHA6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZScgJSBoYW5kbGVyLnBvcnQpCi0gICAgICAgICAgICBkYXRhID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBmID0gdXJsbGliMi51cmxvcGVuKCdodHRwOi8vbG9jYWxob3N0OiVzL2JpemFycmUnICUgaGFuZGxlci5wb3J0KQorICAgICAgICBkYXRhID0gZi5yZWFkKCkKKyAgICAgICAgZi5jbG9zZSgpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZXhwZWN0ZWRfcmVzcG9uc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIucmVxdWVzdHMsIFsnL2JpemFycmUnXSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGV4cGVjdGVkX3Jlc3BvbnNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIucmVxdWVzdHMsIFsnL2JpemFycmUnXSkKIAogICAgIGRlZiB0ZXN0XzIwMF93aXRoX3BhcmFtZXRlcnMoc2VsZik6CiAgICAgICAgIGV4cGVjdGVkX3Jlc3BvbnNlID0gJ3B5Y29uIDIwMDguLi4nCiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X3NlcnZlcihbKDIwMCwgW10sIGV4cGVjdGVkX3Jlc3BvbnNlKV0pCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZiA9IHVybGxpYjIudXJsb3BlbignaHR0cDovL2xvY2FsaG9zdDolcy9iaXphcnJlJyAlIGhhbmRsZXIucG9ydCwgJ2dldD13aXRoX2ZlZWxpbmcnKQotICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCi0gICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZiA9IHVybGxpYjIudXJsb3BlbignaHR0cDovL2xvY2FsaG9zdDolcy9iaXphcnJlJyAlIGhhbmRsZXIucG9ydCwgJ2dldD13aXRoX2ZlZWxpbmcnKQorICAgICAgICBkYXRhID0gZi5yZWFkKCkKKyAgICAgICAgZi5jbG9zZSgpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZXhwZWN0ZWRfcmVzcG9uc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIucmVxdWVzdHMsIFsnL2JpemFycmUnLCAnZ2V0PXdpdGhfZmVlbGluZyddKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgZXhwZWN0ZWRfcmVzcG9uc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGFuZGxlci5yZXF1ZXN0cywgWycvYml6YXJyZScsICdnZXQ9d2l0aF9mZWVsaW5nJ10pCiAKICAgICBkZWYgdGVzdF9odHRwcyhzZWxmKToKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKCkKQEAgLTU5Myw3ICs1NzcsNyBAQAogICAgICAgICBzbmlfbmFtZSA9IFtOb25lXQogICAgICAgICBkZWYgY2Jfc25pKHNzbF9zb2NrLCBzZXJ2ZXJfbmFtZSwgaW5pdGlhbF9jb250ZXh0KToKICAgICAgICAgICAgIHNuaV9uYW1lWzBdID0gc2VydmVyX25hbWUKLSAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFN2MSkKKyAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFMpCiAgICAgICAgIGNvbnRleHQuc2V0X3NlcnZlcm5hbWVfY2FsbGJhY2soY2Jfc25pKQogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY29udGV4dD1jb250ZXh0LCBjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKICAgICAgICAgY29udGV4dCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KGNhZmlsZT1DRVJUX2xvY2FsaG9zdCkKQEAgLTYwMyw1MiArNTg3LDQwIEBACiAgICAgZGVmIHRlc3Rfc2VuZGluZ19oZWFkZXJzKHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9zZXJ2ZXIoWygyMDAsIFtdLCAid2UgZG9uJ3QgY2FyZSIpXSkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXEgPSB1cmxsaWIyLlJlcXVlc3QoImh0dHA6Ly9sb2NhbGhvc3Q6JXMvIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsnUmFuZ2UnOiAnYnl0ZXM9MjAtMzknfSkKLSAgICAgICAgICAgIHVybGxpYjIudXJsb3BlbihyZXEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIuaGVhZGVyc19yZWNlaXZlZFsnUmFuZ2UnXSwgJ2J5dGVzPTIwLTM5JykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQorICAgICAgICByZXEgPSB1cmxsaWIyLlJlcXVlc3QoImh0dHA6Ly9sb2NhbGhvc3Q6JXMvIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9eydSYW5nZSc6ICdieXRlcz0yMC0zOSd9KQorICAgICAgICB1cmxsaWIyLnVybG9wZW4ocmVxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIuaGVhZGVyc19yZWNlaXZlZFsnUmFuZ2UnXSwgJ2J5dGVzPTIwLTM5JykKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9zZXJ2ZXIoWygyMDAsIFtdLCAid2UgZG9uJ3QgY2FyZSIpXSkKIAorICAgICAgICBvcGVuX3VybCA9IHVybGxpYjIudXJsb3BlbigiaHR0cDovL2xvY2FsaG9zdDolcyIgJSBoYW5kbGVyLnBvcnQpCisgICAgICAgIGZvciBhdHRyIGluICgicmVhZCIsICJjbG9zZSIsICJpbmZvIiwgImdldHVybCIpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIob3Blbl91cmwsIGF0dHIpLCAib2JqZWN0IHJldHVybmVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICAgICJ1cmxvcGVuIGxhY2tzIHRoZSAlcyBhdHRyaWJ1dGUiICUgYXR0cikKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3Blbl91cmwgPSB1cmxsaWIyLnVybG9wZW4oImh0dHA6Ly9sb2NhbGhvc3Q6JXMiICUgaGFuZGxlci5wb3J0KQotICAgICAgICAgICAgZm9yIGF0dHIgaW4gKCJyZWFkIiwgImNsb3NlIiwgImluZm8iLCAiZ2V0dXJsIik6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIob3Blbl91cmwsIGF0dHIpLCAib2JqZWN0IHJldHVybmVkIGZyb20gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJsb3BlbiBsYWNrcyB0aGUgJXMgYXR0cmlidXRlIiAlIGF0dHIpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZW5fdXJsLnJlYWQoKSwgImNhbGxpbmcgJ3JlYWQnIGZhaWxlZCIpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIG9wZW5fdXJsLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVuX3VybC5yZWFkKCksICJjYWxsaW5nICdyZWFkJyBmYWlsZWQiKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCisgICAgICAgICAgICBvcGVuX3VybC5jbG9zZSgpCiAKICAgICBkZWYgdGVzdF9pbmZvKHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9zZXJ2ZXIoWygyMDAsIFtdLCAid2UgZG9uJ3QgY2FyZSIpXSkKIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBvcGVuX3VybCA9IHVybGxpYjIudXJsb3BlbigiaHR0cDovL2xvY2FsaG9zdDolcyIgJSBoYW5kbGVyLnBvcnQpCi0gICAgICAgICAgICBpbmZvX29iaiA9IG9wZW5fdXJsLmluZm8oKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm9fb2JqLCBtaW1ldG9vbHMuTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IHJldHVybmVkIGJ5ICdpbmZvJyBpcyBub3QgYW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YW5jZSBvZiBtaW1ldG9vbHMuTWVzc2FnZSIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm9fb2JqLmdldHN1YnR5cGUoKSwgInBsYWluIikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQorICAgICAgICBvcGVuX3VybCA9IHVybGxpYjIudXJsb3BlbigiaHR0cDovL2xvY2FsaG9zdDolcyIgJSBoYW5kbGVyLnBvcnQpCisgICAgICAgIGluZm9fb2JqID0gb3Blbl91cmwuaW5mbygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShpbmZvX29iaiwgbWltZXRvb2xzLk1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IHJldHVybmVkIGJ5ICdpbmZvJyBpcyBub3QgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbmNlIG9mIG1pbWV0b29scy5NZXNzYWdlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvX29iai5nZXRzdWJ0eXBlKCksICJwbGFpbiIpCiAKICAgICBkZWYgdGVzdF9nZXR1cmwoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIHNhbWUgVVJMIGFzIG9wZW5lZCBpcyByZXR1cm5lZCBieSBnZXR1cmwuCiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X3NlcnZlcihbKDIwMCwgW10sICJ3ZSBkb24ndCBjYXJlIildKQogCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9wZW5fdXJsID0gdXJsbGliMi51cmxvcGVuKCJodHRwOi8vbG9jYWxob3N0OiVzIiAlIGhhbmRsZXIucG9ydCkKLSAgICAgICAgICAgIHVybCA9IG9wZW5fdXJsLmdldHVybCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHVybCwgImh0dHA6Ly9sb2NhbGhvc3Q6JXMiICUgaGFuZGxlci5wb3J0KQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCisgICAgICAgIG9wZW5fdXJsID0gdXJsbGliMi51cmxvcGVuKCJodHRwOi8vbG9jYWxob3N0OiVzIiAlIGhhbmRsZXIucG9ydCkKKyAgICAgICAgdXJsID0gb3Blbl91cmwuZ2V0dXJsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1cmwsICJodHRwOi8vbG9jYWxob3N0OiVzIiAlIGhhbmRsZXIucG9ydCkKIAogCiAgICAgZGVmIHRlc3RfYmFkX2FkZHJlc3Moc2VsZik6CkBAIC02ODIsMjYgKzY1NCwyMSBAQAogICAgIGRlZiB0ZXN0X2l0ZXJhdGlvbihzZWxmKToKICAgICAgICAgZXhwZWN0ZWRfcmVzcG9uc2UgPSAicHljb24gMjAwOC4uLiIKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfc2VydmVyKFsoMjAwLCBbXSwgZXhwZWN0ZWRfcmVzcG9uc2UpXSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGF0YSA9IHVybGxpYjIudXJsb3BlbigiaHR0cDovL2xvY2FsaG9zdDolcyIgJSBoYW5kbGVyLnBvcnQpCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBkYXRhOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgZXhwZWN0ZWRfcmVzcG9uc2UpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKKworICAgICAgICBkYXRhID0gdXJsbGliMi51cmxvcGVuKCJodHRwOi8vbG9jYWxob3N0OiVzIiAlIGhhbmRsZXIucG9ydCkKKyAgICAgICAgZm9yIGxpbmUgaW4gZGF0YToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgZXhwZWN0ZWRfcmVzcG9uc2UpCiAKICAgICBkZWYgenRlc3RfbGluZV9pdGVyYXRpb24oc2VsZik6CiAgICAgICAgIGxpbmVzID0gWyJXZVxuIiwgImdvdFxuIiwgImhlcmVcbiIsICJ2ZXJ5bG9uZyAiICogODE5MiArICJcbiJdCiAgICAgICAgIGV4cGVjdGVkX3Jlc3BvbnNlID0gIiIuam9pbihsaW5lcykKICAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfc2VydmVyKFsoMjAwLCBbXSwgZXhwZWN0ZWRfcmVzcG9uc2UpXSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGF0YSA9IHVybGxpYjIudXJsb3BlbigiaHR0cDovL2xvY2FsaG9zdDolcyIgJSBoYW5kbGVyLnBvcnQpCi0gICAgICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGRhdGEpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgbGluZXNbaW5kZXhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZldGNoZWQgbGluZSBudW1iZXIgJXMgZG9lc24ndCBtYXRjaCBleHBlY3RlZDpcbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgRXhwZWN0ZWQgbGVuZ3RoIHdhcyAlcywgZ290ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5kZXgsIGxlbihsaW5lc1tpbmRleF0pLCBsZW4obGluZSkpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCisgICAgICAgIGRhdGEgPSB1cmxsaWIyLnVybG9wZW4oImh0dHA6Ly9sb2NhbGhvc3Q6JXMiICUgaGFuZGxlci5wb3J0KQorICAgICAgICBmb3IgaW5kZXgsIGxpbmUgaW4gZW51bWVyYXRlKGRhdGEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaW5lLCBsaW5lc1tpbmRleF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGZXRjaGVkIGxpbmUgbnVtYmVyICVzIGRvZXNuJ3QgbWF0Y2ggZXhwZWN0ZWQ6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgRXhwZWN0ZWQgbGVuZ3RoIHdhcyAlcywgZ290ICVzIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmRleCwgbGVuKGxpbmVzW2luZGV4XSksIGxlbihsaW5lKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5kZXggKyAxLCBsZW4obGluZXMpKQogCiBkZWYgdGVzdF9tYWluKCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJuZXQucHkKaW5kZXggOGVlYzNhZC4uNGJhNzljYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIybmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMm5ldC5weQpAQCAtMTAyLDggKzEwMiw4IEBACiAKICAgICBkZWYgdGVzdF9mdHAoc2VsZik6CiAgICAgICAgIHVybHMgPSBbCi0gICAgICAgICAgICAnZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuL1JFQURNRScsCi0gICAgICAgICAgICAoJ2Z0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9ub24tZXhpc3RlbnQtZmlsZScsCisgICAgICAgICAgICAnZnRwOi8vd3d3LnB5dGhvbnRlc3QubmV0L1JFQURNRScsCisgICAgICAgICAgICAoJ2Z0cDovL3d3dy5weXRob250ZXN0Lm5ldC9ub24tZXhpc3RlbnQtZmlsZScsCiAgICAgICAgICAgICAgTm9uZSwgdXJsbGliMi5VUkxFcnJvciksCiAgICAgICAgICAgICBdCiAgICAgICAgIHNlbGYuX3Rlc3RfdXJscyh1cmxzLCBzZWxmLl9leHRyYV9oYW5kbGVycygpKQpAQCAtMTg0LDYgKzE4NCw3IEBACiAgICAgICAgICAgICBvcGVuZXIub3BlbihyZXF1ZXN0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXF1ZXN0LmdldF9oZWFkZXIoJ1VzZXItYWdlbnQnKSwnVGVzdC1BZ2VudCcpCiAKKyAgICBAdW5pdHRlc3Quc2tpcCgnWFhYOiBodHRwOi8vd3d3LmltZGIuY29tIGlzIGdvbmUnKQogICAgIGRlZiB0ZXN0X3NpdGVzX25vX2Nvbm5lY3Rpb25fY2xvc2Uoc2VsZik6CiAgICAgICAgICMgU29tZSBzaXRlcyBkbyBub3Qgc2VuZCBDb25uZWN0aW9uOiBjbG9zZSBoZWFkZXIuCiAgICAgICAgICMgVmVyaWZ5IHRoYXQgdGhvc2Ugd29yayBwcm9wZXJseS4gKCNpc3N1ZTEyNTc2KQpAQCAtMjgyLDcgKzI4Myw3IEBACiAgICAgICAgICAgICB1ID0gX3VybG9wZW5fd2l0aF9yZXRyeSh1cmwsIHRpbWVvdXQ9MTIwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1LmZwLl9zb2NrLmZwLl9zb2NrLmdldHRpbWVvdXQoKSwgMTIwKQogCi0gICAgRlRQX0hPU1QgPSAnZnRwOi8vZnRwLmRlYmlhbi5vcmcvZGViaWFuLycKKyAgICBGVFBfSE9TVCA9ICdmdHA6Ly93d3cucHl0aG9udGVzdC5uZXQvJwogCiAgICAgZGVmIHRlc3RfZnRwX2Jhc2ljKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzb2NrZXQuZ2V0ZGVmYXVsdHRpbWVvdXQoKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXUucHkgYi9MaWIvdGVzdC90ZXN0X3V1LnB5CmluZGV4IDUxYTRmYmUuLmRmNDFjYmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91dS5weQpAQCAtNCw5ICs0LDEwIEBACiAiIiIKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydAorZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQgYXMgc3VwcG9ydAogCi1pbXBvcnQgc3lzLCBvcywgdXUsIGNTdHJpbmdJTworaW1wb3J0IGNTdHJpbmdJTworaW1wb3J0IHN5cwogaW1wb3J0IHV1CiAKIHBsYWludGV4dCA9ICJUaGUgc21vb3RoLXNjYWxlZCBweXRob24gY3JlcHQgb3ZlciB0aGUgc2xlZXBpbmcgZG9nXG4iCkBAIC0xMDgsMTE0ICsxMDksNjQgQEAKIAogY2xhc3MgVVVGaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBkZWYgX2tpbGwoc2VsZiwgZik6Ci0gICAgICAgICMgY2xvc2UgYW5kIHJlbW92ZSBmaWxlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICBleGNlcHQgKFN5c3RlbUV4aXQsIEtleWJvYXJkSW50ZXJydXB0KToKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MudW5saW5rKGYubmFtZSkKLSAgICAgICAgZXhjZXB0IChTeXN0ZW1FeGl0LCBLZXlib2FyZEludGVycnVwdCk6Ci0gICAgICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICBwYXNzCi0KICAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYudG1waW4gID0gdGVzdF9zdXBwb3J0LlRFU1RGTiArICJpIgotICAgICAgICBzZWxmLnRtcG91dCA9IHRlc3Rfc3VwcG9ydC5URVNURk4gKyAibyIKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgZGVsIHNlbGYudG1waW4KLSAgICAgICAgZGVsIHNlbGYudG1wb3V0CisgICAgICAgIHNlbGYudG1waW4gID0gc3VwcG9ydC5URVNURk4gKyAiaSIKKyAgICAgICAgc2VsZi50bXBvdXQgPSBzdXBwb3J0LlRFU1RGTiArICJvIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYudG1waW4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc2VsZi50bXBvdXQpCiAKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6Ci0gICAgICAgIGZpbiA9IGZvdXQgPSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3Rfc3VwcG9ydC51bmxpbmsoc2VsZi50bXBpbikKLSAgICAgICAgICAgIGZpbiA9IG9wZW4oc2VsZi50bXBpbiwgJ3diJykKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYudG1waW4sICd3YicpIGFzIGZpbjoKICAgICAgICAgICAgIGZpbi53cml0ZShwbGFpbnRleHQpCi0gICAgICAgICAgICBmaW4uY2xvc2UoKQogCi0gICAgICAgICAgICBmaW4gPSBvcGVuKHNlbGYudG1waW4sICdyYicpCi0gICAgICAgICAgICBmb3V0ID0gb3BlbihzZWxmLnRtcG91dCwgJ3cnKQotICAgICAgICAgICAgdXUuZW5jb2RlKGZpbiwgZm91dCwgc2VsZi50bXBpbiwgbW9kZT0wNjQ0KQotICAgICAgICAgICAgZmluLmNsb3NlKCkKLSAgICAgICAgICAgIGZvdXQuY2xvc2UoKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi50bXBpbiwgJ3JiJykgYXMgZmluOgorICAgICAgICAgICAgd2l0aCBvcGVuKHNlbGYudG1wb3V0LCAndycpIGFzIGZvdXQ6CisgICAgICAgICAgICAgICAgdXUuZW5jb2RlKGZpbiwgZm91dCwgc2VsZi50bXBpbiwgbW9kZT0wbzY0NCkKIAotICAgICAgICAgICAgZm91dCA9IG9wZW4oc2VsZi50bXBvdXQsICdyJykKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYudG1wb3V0LCAncicpIGFzIGZvdXQ6CiAgICAgICAgICAgICBzID0gZm91dC5yZWFkKCkKLSAgICAgICAgICAgIGZvdXQuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBlbmNvZGVkdGV4dHdyYXBwZWQgJSAoMDY0NCwgc2VsZi50bXBpbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgZW5jb2RlZHRleHR3cmFwcGVkICUgKDBvNjQ0LCBzZWxmLnRtcGluKSkKIAotICAgICAgICAgICAgIyBpbl9maWxlIGFuZCBvdXRfZmlsZSBhcyBmaWxlbmFtZXMKLSAgICAgICAgICAgIHV1LmVuY29kZShzZWxmLnRtcGluLCBzZWxmLnRtcG91dCwgc2VsZi50bXBpbiwgbW9kZT0wNjQ0KQotICAgICAgICAgICAgZm91dCA9IG9wZW4oc2VsZi50bXBvdXQsICdyJykKKyAgICAgICAgIyBpbl9maWxlIGFuZCBvdXRfZmlsZSBhcyBmaWxlbmFtZXMKKyAgICAgICAgdXUuZW5jb2RlKHNlbGYudG1waW4sIHNlbGYudG1wb3V0LCBzZWxmLnRtcGluLCBtb2RlPTBvNjQ0KQorICAgICAgICB3aXRoIG9wZW4oc2VsZi50bXBvdXQsICdyJykgYXMgZm91dDoKICAgICAgICAgICAgIHMgPSBmb3V0LnJlYWQoKQotICAgICAgICAgICAgZm91dC5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIGVuY29kZWR0ZXh0d3JhcHBlZCAlICgwNjQ0LCBzZWxmLnRtcGluKSkKLQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbChmaW4pCi0gICAgICAgICAgICBzZWxmLl9raWxsKGZvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgZW5jb2RlZHRleHR3cmFwcGVkICUgKDBvNjQ0LCBzZWxmLnRtcGluKSkKIAogICAgIGRlZiB0ZXN0X2RlY29kZShzZWxmKToKLSAgICAgICAgZiA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9zdXBwb3J0LnVubGluayhzZWxmLnRtcGluKQotICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi50bXBpbiwgJ3cnKQotICAgICAgICAgICAgZi53cml0ZShlbmNvZGVkdGV4dHdyYXBwZWQgJSAoMDY0NCwgc2VsZi50bXBvdXQpKQotICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHdpdGggb3BlbihzZWxmLnRtcGluLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGVuY29kZWR0ZXh0d3JhcHBlZCAlICgwbzY0NCwgc2VsZi50bXBvdXQpKQogCi0gICAgICAgICAgICBmID0gb3BlbihzZWxmLnRtcGluLCAncicpCisgICAgICAgIHdpdGggb3BlbihzZWxmLnRtcGluLCAncicpIGFzIGY6CiAgICAgICAgICAgICB1dS5kZWNvZGUoZikKLSAgICAgICAgICAgIGYuY2xvc2UoKQogCi0gICAgICAgICAgICBmID0gb3BlbihzZWxmLnRtcG91dCwgJ3InKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi50bXBvdXQsICdyJykgYXMgZjoKICAgICAgICAgICAgIHMgPSBmLnJlYWQoKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMsIHBsYWludGV4dCkKLSAgICAgICAgICAgICMgWFhYIGlzIHRoZXJlIGFuIHhwIHdheSB0byB2ZXJpZnkgdGhlIG1vZGU/Ci0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgcGxhaW50ZXh0KQorICAgICAgICAjIFhYWCBpcyB0aGVyZSBhbiB4cCB3YXkgdG8gdmVyaWZ5IHRoZSBtb2RlPwogCiAgICAgZGVmIHRlc3RfZGVjb2RlX2ZpbGVuYW1lKHNlbGYpOgotICAgICAgICBmID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X3N1cHBvcnQudW5saW5rKHNlbGYudG1waW4pCi0gICAgICAgICAgICBmID0gb3BlbihzZWxmLnRtcGluLCAndycpCi0gICAgICAgICAgICBmLndyaXRlKGVuY29kZWR0ZXh0d3JhcHBlZCAlICgwNjQ0LCBzZWxmLnRtcG91dCkpCi0gICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYudG1waW4sICd3JykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZW5jb2RlZHRleHR3cmFwcGVkICUgKDBvNjQ0LCBzZWxmLnRtcG91dCkpCiAKLSAgICAgICAgICAgIHV1LmRlY29kZShzZWxmLnRtcGluKQorICAgICAgICB1dS5kZWNvZGUoc2VsZi50bXBpbikKIAotICAgICAgICAgICAgZiA9IG9wZW4oc2VsZi50bXBvdXQsICdyJykKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYudG1wb3V0LCAncicpIGFzIGY6CiAgICAgICAgICAgICBzID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBwbGFpbnRleHQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsKGYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocywgcGxhaW50ZXh0KQogCiAgICAgZGVmIHRlc3RfZGVjb2RldHdpY2Uoc2VsZik6CiAgICAgICAgICMgVmVyaWZ5IHRoYXQgZGVjb2RlKCkgd2lsbCByZWZ1c2UgdG8gb3ZlcndyaXRlIGFuIGV4aXN0aW5nIGZpbGUKLSAgICAgICAgZiA9IE5vbmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZiA9IGNTdHJpbmdJTy5TdHJpbmdJTyhlbmNvZGVkdGV4dHdyYXBwZWQgJSAoMDY0NCwgc2VsZi50bXBvdXQpKQotCi0gICAgICAgICAgICBmID0gb3BlbihzZWxmLnRtcGluLCAncicpCisgICAgICAgIHdpdGggb3BlbihzZWxmLnRtcGluLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShlbmNvZGVkdGV4dHdyYXBwZWQgJSAoMG82NDQsIHNlbGYudG1wb3V0KSkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYudG1waW4sICdyJykgYXMgZjoKICAgICAgICAgICAgIHV1LmRlY29kZShmKQotICAgICAgICAgICAgZi5jbG9zZSgpCiAKLSAgICAgICAgICAgIGYgPSBvcGVuKHNlbGYudG1waW4sICdyJykKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYudG1waW4sICdyJykgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHV1LkVycm9yLCB1dS5kZWNvZGUsIGYpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2tpbGwoZikKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoVVVUZXN0LCBVVVN0ZElPVGVzdCwgVVVGaWxlVGVzdCkKKyAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChVVVRlc3QsIFVVU3RkSU9UZXN0LCBVVUZpbGVUZXN0KQogCiBpZiBfX25hbWVfXz09Il9fbWFpbl9fIjoKICAgICB0ZXN0X21haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91dWlkLnB5IGIvTGliL3Rlc3QvdGVzdF91dWlkLnB5CmluZGV4IDBhODEzMGUuLjZjZDJjMzkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXVpZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3V1aWQucHkKQEAgLTI4Nyw2ICsyODcsMzkgQEAKICAgICAgICAgbm9kZTIgPSB1dWlkLmdldG5vZGUoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vZGUxLCBub2RlMiwgJyUwMTJ4ICE9ICUwMTJ4JyAlIChub2RlMSwgbm9kZTIpKQogCisgICAgIyBicG8tMzI1MDI6IFVVSUQxIHJlcXVpcmVzIGEgNDgtYml0IGlkZW50aWZpZXIsIGJ1dCBoYXJkd2FyZSBpZGVudGlmaWVycworICAgICMgbmVlZCBub3QgbmVjZXNzYXJpbHkgYmUgNDggYml0cyAoZS5nLiwgRVVJLTY0KS4KKyAgICBkZWYgdGVzdF91dWlkMV9ldWk2NChzZWxmKToKKyAgICAgICAgIyBDb25maXJtIHRoYXQgdXVpZC5nZXRub2RlIGlnbm9yZXMgaGFyZHdhcmUgYWRkcmVzc2VzIGxhcmdlciB0aGFuIDQ4CisgICAgICAgICMgYml0cy4gTW9jayBvdXQgZWFjaCBwbGF0Zm9ybSdzICpfZ2V0bm9kZSBoZWxwZXIgZnVuY3Rpb25zIHRvIHJldHVybgorICAgICAgICAjIHNvbWV0aGluZyBqdXN0IGxhcmdlciB0aGFuIDQ4IGJpdHMgdG8gdGVzdC4gVGhpcyB3aWxsIGNhdXNlCisgICAgICAgICMgdXVpZC5nZXRub2RlIHRvIGZhbGwgYmFjayBvbiB1dWlkLl9yYW5kb21fZ2V0bm9kZSwgd2hpY2ggd2lsbAorICAgICAgICAjIGdlbmVyYXRlIGEgdmFsaWQgdmFsdWUuCisgICAgICAgIHRvb19sYXJnZV9nZXR0ZXIgPSBsYW1iZGE6IDEgPDwgNDgKKworICAgICAgICB1dWlkX3JlYWxfX25vZGUgPSB1dWlkLl9ub2RlCisgICAgICAgIHV1aWRfcmVhbF9fTk9ERV9HRVRURVJTX1dJTjMyID0gdXVpZC5fTk9ERV9HRVRURVJTX1dJTjMyCisgICAgICAgIHV1aWRfcmVhbF9fTk9ERV9HRVRURVJTX1VOSVggPSB1dWlkLl9OT0RFX0dFVFRFUlNfVU5JWAorICAgICAgICB1dWlkLl9ub2RlID0gTm9uZQorICAgICAgICB1dWlkLl9OT0RFX0dFVFRFUlNfV0lOMzIgPSBbdG9vX2xhcmdlX2dldHRlcl0KKyAgICAgICAgdXVpZC5fTk9ERV9HRVRURVJTX1VOSVggPSBbdG9vX2xhcmdlX2dldHRlcl0KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbm9kZSA9IHV1aWQuZ2V0bm9kZSgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICB1dWlkLl9ub2RlID0gdXVpZF9yZWFsX19ub2RlCisgICAgICAgICAgICB1dWlkLl9OT0RFX0dFVFRFUlNfV0lOMzIgPSB1dWlkX3JlYWxfX05PREVfR0VUVEVSU19XSU4zMgorICAgICAgICAgICAgdXVpZC5fTk9ERV9HRVRURVJTX1VOSVggPSB1dWlkX3JlYWxfX05PREVfR0VUVEVSU19VTklYCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKDAgPCBub2RlIDwgKDEgPDwgNDgpLCAnJTAxMngnICUgbm9kZSkKKworICAgICAgICAjIENvbmZpcm0gdGhhdCB1dWlkMSBjYW4gdXNlIHRoZSBnZW5lcmF0ZWQgbm9kZSwgaS5lLiwgdGhlIHRoYXQKKyAgICAgICAgIyB1dWlkLmdldG5vZGUgZmVsbCBiYWNrIG9uIHV1aWQuX3JhbmRvbV9nZXRub2RlKCkgcmF0aGVyIHRoYW4gdXNpbmcKKyAgICAgICAgIyB0aGUgdmFsdWUgZnJvbSB0b29fbGFyZ2VfZ2V0dGVyIGFib3ZlLgorICAgICAgICB0cnk6CisgICAgICAgICAgICB1dWlkLnV1aWQxKG5vZGU9bm9kZSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgndXVpZDEgd2FzIGdpdmVuIGFuIGludmFsaWQgbm9kZSBJRCcpCisKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhpbXBvcnRhYmxlKCdjdHlwZXMnKSwgJ3JlcXVpcmVzIGN0eXBlcycpCiAgICAgZGVmIHRlc3RfdXVpZDEoc2VsZik6CiAgICAgICAgIGVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbApAQCAtNDI5LDU0ICs0NjIsNTIgQEAKICAgICAgICAgICAgICkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFjLCAweDEyMzQ1Njc4OTBhYikKIAotICAgIGRlZiBjaGVja19ub2RlKHNlbGYsIG5vZGUsIHJlcXVpcmVzPU5vbmUsIG5ldHdvcms9RmFsc2UpOgorICAgIGRlZiBjaGVja19ub2RlKHNlbGYsIG5vZGUsIHJlcXVpcmVzPU5vbmUpOgogICAgICAgICBpZiByZXF1aXJlcyBhbmQgbm9kZSBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgncmVxdWlyZXMgJyArIHJlcXVpcmVzKQogICAgICAgICBoZXggPSAnJTAxMngnICUgbm9kZQogICAgICAgICBpZiB0ZXN0X3N1cHBvcnQudmVyYm9zZSA+PSAyOgogICAgICAgICAgICAgcHJpbnQgaGV4ICsgJyAnLAotICAgICAgICBpZiBuZXR3b3JrOgotICAgICAgICAgICAgIyA0NyBiaXQgd2lsbCBuZXZlciBiZSBzZXQgaW4gSUVFRSA4MDIgYWRkcmVzc2VzIG9idGFpbmVkCi0gICAgICAgICAgICAjIGZyb20gbmV0d29yayBjYXJkcy4KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uobm9kZSAmIDB4MDEwMDAwMDAwMDAwLCBoZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwIDwgbm9kZSA8ICgxTCA8PCA0OCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgaXMgbm90IGFuIFJGQyA0MTIyIG5vZGUgSUQiICUgaGV4KQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLCAncmVxdWlyZXMgUG9zaXgnKQogICAgIGRlZiB0ZXN0X2lmY29uZmlnX2dldG5vZGUoc2VsZik6CiAgICAgICAgIG5vZGUgPSB1dWlkLl9pZmNvbmZpZ19nZXRub2RlKCkKLSAgICAgICAgc2VsZi5jaGVja19ub2RlKG5vZGUsICdpZmNvbmZpZycsIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2tfbm9kZShub2RlLCAnaWZjb25maWcnKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLCAncmVxdWlyZXMgUG9zaXgnKQogICAgIGRlZiB0ZXN0X2FycF9nZXRub2RlKHNlbGYpOgogICAgICAgICBub2RlID0gdXVpZC5fYXJwX2dldG5vZGUoKQotICAgICAgICBzZWxmLmNoZWNrX25vZGUobm9kZSwgJ2FycCcsIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2tfbm9kZShub2RlLCAnYXJwJykKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gJ3Bvc2l4JywgJ3JlcXVpcmVzIFBvc2l4JykKICAgICBkZWYgdGVzdF9sYW5zY2FuX2dldG5vZGUoc2VsZik6CiAgICAgICAgIG5vZGUgPSB1dWlkLl9sYW5zY2FuX2dldG5vZGUoKQotICAgICAgICBzZWxmLmNoZWNrX25vZGUobm9kZSwgJ2xhbnNjYW4nLCBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrX25vZGUobm9kZSwgJ2xhbnNjYW4nKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLCAncmVxdWlyZXMgUG9zaXgnKQogICAgIGRlZiB0ZXN0X25ldHN0YXRfZ2V0bm9kZShzZWxmKToKICAgICAgICAgbm9kZSA9IHV1aWQuX25ldHN0YXRfZ2V0bm9kZSgpCi0gICAgICAgIHNlbGYuY2hlY2tfbm9kZShub2RlLCAnbmV0c3RhdCcsIFRydWUpCisgICAgICAgIHNlbGYuY2hlY2tfbm9kZShub2RlLCAnbmV0c3RhdCcpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICdudCcsICdyZXF1aXJlcyBXaW5kb3dzJykKICAgICBkZWYgdGVzdF9pcGNvbmZpZ19nZXRub2RlKHNlbGYpOgogICAgICAgICBub2RlID0gdXVpZC5faXBjb25maWdfZ2V0bm9kZSgpCi0gICAgICAgIHNlbGYuY2hlY2tfbm9kZShub2RlLCAnaXBjb25maWcnLCBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrX25vZGUobm9kZSwgJ2lwY29uZmlnJykKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGltcG9ydGFibGUoJ3dpbjMyd25ldCcpLCAncmVxdWlyZXMgd2luMzJ3bmV0JykKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhpbXBvcnRhYmxlKCduZXRiaW9zJyksICdyZXF1aXJlcyBuZXRiaW9zJykKICAgICBkZWYgdGVzdF9uZXRiaW9zX2dldG5vZGUoc2VsZik6CiAgICAgICAgIG5vZGUgPSB1dWlkLl9uZXRiaW9zX2dldG5vZGUoKQotICAgICAgICBzZWxmLmNoZWNrX25vZGUobm9kZSwgbmV0d29yaz1UcnVlKQorICAgICAgICBzZWxmLmNoZWNrX25vZGUobm9kZSkKIAogICAgIGRlZiB0ZXN0X3JhbmRvbV9nZXRub2RlKHNlbGYpOgogICAgICAgICBub2RlID0gdXVpZC5fcmFuZG9tX2dldG5vZGUoKQotICAgICAgICAjIExlYXN0IHNpZ25pZmljYW50IGJpdCBvZiBmaXJzdCBvY3RldCBtdXN0IGJlIHNldC4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5vZGUgJiAweDAxMDAwMDAwMDAwMCwgJyUwMTJ4JyAlIG5vZGUpCisgICAgICAgICMgVGhlIG11bHRpY2FzdCBiaXQsIGkuZS4gdGhlIGxlYXN0IHNpZ25pZmljYW50IGJpdCBvZiBmaXJzdCBvY3RldCwKKyAgICAgICAgIyBtdXN0IGJlIHNldCBmb3IgcmFuZG9tbHkgZ2VuZXJhdGVkIE1BQyBhZGRyZXNzZXMuICBTZWUgUkZDIDQxMjIsCisgICAgICAgICMgJDQuMS42LgorICAgICAgICBzZWxmLmFzc2VydFRydWUobm9kZSAmICgxIDw8IDQwKSwgJyUwMTJ4JyAlIG5vZGUpCiAgICAgICAgIHNlbGYuY2hlY2tfbm9kZShub2RlKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSA9PSAncG9zaXgnLCAncmVxdWlyZXMgUG9zaXgnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weSBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MucHkKaW5kZXggNjA3ZDlmOS4uYTk1NjhmNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzLnB5CkBAIC0xMDcsMTAgKzEwNywxNCBAQAogICAgICAgICAgICAgc2VsZi5tb2R1bGUucmVzZXR3YXJuaW5ncygpCiAgICAgICAgICAgICBzZWxmLm1vZHVsZS5maWx0ZXJ3YXJuaW5ncygiYWx3YXlzIiwgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCiAgICAgICAgICAgICBtZXNzYWdlID0gIkZpbHRlclRlc3RzLnRlc3RfYWx3YXlzIgotICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybihtZXNzYWdlLCBVc2VyV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtZXNzYWdlLCB3Wy0xXS5tZXNzYWdlKQotICAgICAgICAgICAgc2VsZi5tb2R1bGUud2FybihtZXNzYWdlLCBVc2VyV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3Wy0xXS5tZXNzYWdlLCBtZXNzYWdlKQorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICBzZWxmLm1vZHVsZS53YXJuKG1lc3NhZ2UsIFVzZXJXYXJuaW5nKQorICAgICAgICAgICAgZigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1stMV0ubWVzc2FnZS5hcmdzWzBdLCBtZXNzYWdlKQorICAgICAgICAgICAgZigpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod1stMV0ubWVzc2FnZS5hcmdzWzBdLCBtZXNzYWdlKQogCiAgICAgZGVmIHRlc3RfZGVmYXVsdChzZWxmKToKICAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSwKQEAgLTU4NCw2ICs1ODgsMzggQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihiJ1dhcm5pbmchJywgc3RkZXJyKQogICAgICAgICBzZWxmLmFzc2VydE5vdEluKGInRXJyb3InLCBzdGRlcnIpCiAKKyAgICBkZWYgdGVzdF9pc3N1ZTMxMjg1KHNlbGYpOgorICAgICAgICAjIHdhcm5fZXhwbGljaXQoKSBzaG91bGRuJ3QgcmFpc2UgYSBTeXN0ZW1FcnJvciBpbiBjYXNlIHRoZSByZXR1cm4KKyAgICAgICAgIyB2YWx1ZSBvZiBnZXRfc291cmNlKCkgaGFzIGEgYmFkIHNwbGl0bGluZXMoKSBtZXRob2QuCisgICAgICAgIGNsYXNzIEJhZExvYWRlcjoKKyAgICAgICAgICAgIGRlZiBnZXRfc291cmNlKHNlbGYsIGZ1bGxuYW1lKToKKyAgICAgICAgICAgICAgICBjbGFzcyBCYWRTb3VyY2Uoc3RyKToKKyAgICAgICAgICAgICAgICAgICAgZGVmIHNwbGl0bGluZXMoc2VsZik6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gNDIKKyAgICAgICAgICAgICAgICByZXR1cm4gQmFkU291cmNlKCdzcGFtJykKKworICAgICAgICB3bW9kID0gc2VsZi5tb2R1bGUKKyAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhtb2R1bGU9d21vZCk6CisgICAgICAgICAgICB3bW9kLmZpbHRlcndhcm5pbmdzKCdkZWZhdWx0JywgY2F0ZWdvcnk9VXNlcldhcm5pbmcpCisKKyAgICAgICAgICAgIHdpdGggdGVzdF9zdXBwb3J0LmNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgICAgICB3bW9kLndhcm5fZXhwbGljaXQoCisgICAgICAgICAgICAgICAgICAgICdmb28nLCBVc2VyV2FybmluZywgJ2JhcicsIDEsCisgICAgICAgICAgICAgICAgICAgIG1vZHVsZV9nbG9iYWxzPXsnX19sb2FkZXJfXyc6IEJhZExvYWRlcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fbmFtZV9fJzogJ2Zvb2Jhcid9KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignVXNlcldhcm5pbmc6IGZvbycsIHN0ZGVyci5nZXR2YWx1ZSgpKQorCisgICAgQHRlc3Rfc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9pc3N1ZTMxNDExKHNlbGYpOgorICAgICAgICAjIHdhcm5fZXhwbGljaXQoKSBzaG91bGRuJ3QgcmFpc2UgYSBTeXN0ZW1FcnJvciBpbiBjYXNlCisgICAgICAgICMgd2FybmluZ3Mub25jZXJlZ2lzdHJ5IGlzbid0IGEgZGljdGlvbmFyeS4KKyAgICAgICAgd21vZCA9IHNlbGYubW9kdWxlCisgICAgICAgIHdpdGggb3JpZ2luYWxfd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MobW9kdWxlPXdtb2QpOgorICAgICAgICAgICAgd21vZC5maWx0ZXJ3YXJuaW5ncygnb25jZScpCisgICAgICAgICAgICB3aXRoIHRlc3Rfc3VwcG9ydC5zd2FwX2F0dHIod21vZCwgJ29uY2VyZWdpc3RyeScsIE5vbmUpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgd21vZC53YXJuX2V4cGxpY2l0KCdmb28nLCBXYXJuaW5nLCAnYmFyJywgMSwgcmVnaXN0cnk9Tm9uZSkKKwogCiBjbGFzcyBXYXJuaW5nc0Rpc3BsYXlUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQppbmRleCA0MDczZDQ5Li40MTg0ODFkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CkBAIC02LDYgKzYsNyBAQAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IGNvcHkKK2ltcG9ydCB0aW1lCiAKIGZyb20gdGVzdCBpbXBvcnQgdGVzdF9zdXBwb3J0CiAKQEAgLTU2LDYgKzU3LDMyIEBACiAgICAgICAgIHNlbGYuY3ljbGUgPSBzZWxmCiAKIAorQGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKK2RlZiBjb2xsZWN0X2luX3RocmVhZChwZXJpb2Q9MC4wMDEpOgorICAgICIiIgorICAgIEVuc3VyZSBHQyBjb2xsZWN0aW9ucyBoYXBwZW4gaW4gYSBkaWZmZXJlbnQgdGhyZWFkLCBhdCBhIGhpZ2ggZnJlcXVlbmN5LgorICAgICIiIgorICAgIHRocmVhZGluZyA9IHRlc3Rfc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCd0aHJlYWRpbmcnKQorICAgIHBsZWFzZV9zdG9wID0gRmFsc2UKKworICAgIGRlZiBjb2xsZWN0KCk6CisgICAgICAgIHdoaWxlIG5vdCBwbGVhc2Vfc3RvcDoKKyAgICAgICAgICAgIHRpbWUuc2xlZXAocGVyaW9kKQorICAgICAgICAgICAgZ2MuY29sbGVjdCgpCisKKyAgICB3aXRoIHRlc3Rfc3VwcG9ydC5kaXNhYmxlX2djKCk6CisgICAgICAgIG9sZF9pbnRlcnZhbCA9IHN5cy5nZXRjaGVja2ludGVydmFsKCkKKyAgICAgICAgc3lzLnNldGNoZWNraW50ZXJ2YWwoMjApCisgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1jb2xsZWN0KQorICAgICAgICB0LnN0YXJ0KCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgeWllbGQKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHBsZWFzZV9zdG9wID0gVHJ1ZQorICAgICAgICAgICAgdC5qb2luKCkKKyAgICAgICAgICAgIHN5cy5zZXRjaGVja2ludGVydmFsKG9sZF9pbnRlcnZhbCkKKworCiBjbGFzcyBUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgc2V0VXAoc2VsZik6CkBAIC01NzQsNiArNjAxLDcgQEAKICAgICAgICAgZGVsIGMxLCBjMiwgQywgRAogICAgICAgICBnYy5jb2xsZWN0KCkKIAorICAgIEB0ZXN0X3N1cHBvcnQucmVxdWlyZXNfdHlwZV9jb2xsZWN0aW5nCiAgICAgZGVmIHRlc3RfY2FsbGJhY2tfaW5fY3ljbGVfcmVzdXJyZWN0aW9uKHNlbGYpOgogICAgICAgICBpbXBvcnQgZ2MKIApAQCAtMTM5NCw2ICsxNDIyLDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGQpLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvdW50LCAyKQogCisgICAgZGVmIHRlc3RfdGhyZWFkZWRfd2Vha192YWx1ZWRfc2V0ZGVmYXVsdChzZWxmKToKKyAgICAgICAgZCA9IHdlYWtyZWYuV2Vha1ZhbHVlRGljdGlvbmFyeSgpCisgICAgICAgIHdpdGggY29sbGVjdF9pbl90aHJlYWQoKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUwMDAwKToKKyAgICAgICAgICAgICAgICB4ID0gZC5zZXRkZWZhdWx0KDEwLCBSZWZDeWNsZSgpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgTm9uZSkgICMgd2UgbmV2ZXIgcHV0IE5vbmUgaW4gdGhlcmUhCisgICAgICAgICAgICAgICAgZGVsIHgKKworICAgIGRlZiB0ZXN0X3RocmVhZGVkX3dlYWtfdmFsdWVkX3BvcChzZWxmKToKKyAgICAgICAgZCA9IHdlYWtyZWYuV2Vha1ZhbHVlRGljdGlvbmFyeSgpCisgICAgICAgIHdpdGggY29sbGVjdF9pbl90aHJlYWQoKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDUwMDAwKToKKyAgICAgICAgICAgICAgICBkWzEwXSA9IFJlZkN5Y2xlKCkKKyAgICAgICAgICAgICAgICB4ID0gZC5wb3AoMTAsIDEwKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoeCwgTm9uZSkgICMgd2UgbmV2ZXIgcHV0IE5vbmUgaW4gdGhlcmUhCisKKyAgICBkZWYgdGVzdF90aHJlYWRlZF93ZWFrX3ZhbHVlZF9jb25zaXN0ZW5jeShzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjg0Mjc6IG9sZCBrZXlzIHNob3VsZCBub3QgcmVtb3ZlIG5ldyB2YWx1ZXMgZnJvbQorICAgICAgICAjIFdlYWtWYWx1ZURpY3Rpb25hcnkgd2hlbiBjb2xsZWN0aW5nIGZyb20gYW5vdGhlciB0aHJlYWQuCisgICAgICAgIGQgPSB3ZWFrcmVmLldlYWtWYWx1ZURpY3Rpb25hcnkoKQorICAgICAgICB3aXRoIGNvbGxlY3RfaW5fdGhyZWFkKCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSgyMDAwMDApOgorICAgICAgICAgICAgICAgIG8gPSBSZWZDeWNsZSgpCisgICAgICAgICAgICAgICAgZFsxMF0gPSBvCisgICAgICAgICAgICAgICAgIyBvIGlzIHN0aWxsIGFsaXZlLCBzbyB0aGUgZGljdCBjYW4ndCBiZSBlbXB0eQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGQpLCAxKQorICAgICAgICAgICAgICAgIG8gPSBOb25lICAjIGxvc2UgcmVmCisKKwogZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzCiAKIGNsYXNzIFdlYWtWYWx1ZURpY3Rpb25hcnlUZXN0Q2FzZShtYXBwaW5nX3Rlc3RzLkJhc2ljVGVzdE1hcHBpbmdQcm90b2NvbCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CmluZGV4IDlmYjZjOTkuLmM3NWQ1NWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlLnB5CkBAIC0xLDI2ICsxLDM2IEBACi0jIHhtbC5ldHJlZSB0ZXN0LiAgVGhpcyBmaWxlIGNvbnRhaW5zIGVub3VnaCB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdAotIyBhbGwgaW5jbHVkZWQgY29tcG9uZW50cyB3b3JrIGFzIHRoZXkgc2hvdWxkLgotIyBMYXJnZSBwYXJ0cyBhcmUgZXh0cmFjdGVkIGZyb20gdGhlIHVwc3RyZWFtIHRlc3Qgc3VpdGUuCi0KLSMgSU1QT1JUQU5UOiB0aGUgc2FtZSBkb2N0ZXN0cyBhcmUgcnVuIGZyb20gInRlc3RfeG1sX2V0cmVlX2MiIGluCi0jIG9yZGVyIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZSBDIGltcGxlbWVudGF0aW9uIGFuZCB0aGUKLSMgUHl0aG9uIGltcGxlbWVudGF0aW9uLgorIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyMgSU1QT1JUQU5UOiB0aGUgc2FtZSB0ZXN0cyBhcmUgcnVuIGZyb20gInRlc3RfeG1sX2V0cmVlX2MiIGluIG9yZGVyCisjIHRvIGVuc3VyZSBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZSBDIGltcGxlbWVudGF0aW9uIGFuZCB0aGUgUHl0aG9uCisjIGltcGxlbWVudGF0aW9uLgogIwogIyBGb3IgdGhpcyBwdXJwb3NlLCB0aGUgbW9kdWxlLWxldmVsICJFVCIgc3ltYm9sIGlzIHRlbXBvcmFyaWx5CiAjIG1vbmtleS1wYXRjaGVkIHdoZW4gcnVubmluZyB0aGUgInRlc3RfeG1sX2V0cmVlX2MiIHRlc3Qgc3VpdGUuCi0jIERvbid0IHJlLWltcG9ydCAieG1sLmV0cmVlLkVsZW1lbnRUcmVlIiBtb2R1bGUgaW4gdGhlIGRvY3N0cmluZywKLSMgZXhjZXB0IGlmIHRoZSB0ZXN0IGlzIHNwZWNpZmljIHRvIHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24uCiAKLWltcG9ydCBzeXMKIGltcG9ydCBjZ2kKK2ltcG9ydCBjb3B5CitpbXBvcnQgZnVuY3Rvb2xzCitpbXBvcnQgaW8KK2ltcG9ydCBwaWNrbGUKK2ltcG9ydCBTdHJpbmdJTworaW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworaW1wb3J0IHdlYWtyZWYKIAotZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3N1cHBvcnQKLWZyb20gdGVzdC50ZXN0X3N1cHBvcnQgaW1wb3J0IGZpbmRmaWxlCitmcm9tIHRlc3QgaW1wb3J0IHRlc3Rfc3VwcG9ydCBhcyBzdXBwb3J0Citmcm9tIHRlc3QudGVzdF9zdXBwb3J0IGltcG9ydCBURVNURk4sIGZpbmRmaWxlLCBnY19jb2xsZWN0LCBzd2FwX2F0dHIKIAotZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlIGFzIEVUCisjIHB5RVQgaXMgdGhlIHB1cmUtUHl0aG9uIGltcGxlbWVudGF0aW9uLgorIworIyBFVCBpcyBweUVUIGluIHRlc3RfeG1sX2V0cmVlIGFuZCBpcyB0aGUgQyBhY2NlbGVyYXRlZCB2ZXJzaW9uIGluCisjIHRlc3RfeG1sX2V0cmVlX2MuCitmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUgYXMgcHlFVAorRVQgPSBOb25lCiAKIFNJTVBMRV9YTUxGSUxFID0gZmluZGZpbGUoInNpbXBsZS54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKIFNJTVBMRV9OU19YTUxGSUxFID0gZmluZGZpbGUoInNpbXBsZS1ucy54bWwiLCBzdWJkaXI9InhtbHRlc3RkYXRhIikKK1VURjhfQlVHX1hNTEZJTEUgPSBmaW5kZmlsZSgiZXhwYXQyMjRfdXRmOF9idWcueG1sIiwgc3ViZGlyPSJ4bWx0ZXN0ZGF0YSIpCiAKIFNBTVBMRV9YTUwgPSAiIiJcCiA8Ym9keT4KQEAgLTUyLDk1OSArNjIsMjIgQEAKIDwvYm9keT4KICIiIgogCitTQU1QTEVfWE1MX05TX0VMRU1TID0gIiIiCis8cm9vdD4KKzxoOnRhYmxlIHhtbG5zOmg9ImhlbGxvIj4KKyAgPGg6dHI+CisgICAgPGg6dGQ+QXBwbGVzPC9oOnRkPgorICAgIDxoOnRkPkJhbmFuYXM8L2g6dGQ+CisgIDwvaDp0cj4KKzwvaDp0YWJsZT4KIAotZGVmIHNhbml0eSgpOgotICAgICIiIgotICAgIEltcG9ydCBzYW5pdHkuCi0KLSAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKLSAgICAiIiIKLQotZGVmIGNoZWNrX21ldGhvZChtZXRob2QpOgotICAgIGlmIG5vdCBoYXNhdHRyKG1ldGhvZCwgJ19fY2FsbF9fJyk6Ci0gICAgICAgIHByaW50IG1ldGhvZCwgIm5vdCBjYWxsYWJsZSIKLQotZGVmIHNlcmlhbGl6ZShlbGVtLCB0b19zdHJpbmc9VHJ1ZSwgKipvcHRpb25zKToKLSAgICBpbXBvcnQgU3RyaW5nSU8KLSAgICBmaWxlID0gU3RyaW5nSU8uU3RyaW5nSU8oKQotICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShlbGVtKQotICAgIHRyZWUud3JpdGUoZmlsZSwgKipvcHRpb25zKQotICAgIGlmIHRvX3N0cmluZzoKLSAgICAgICAgcmV0dXJuIGZpbGUuZ2V0dmFsdWUoKQotICAgIGVsc2U6Ci0gICAgICAgIGZpbGUuc2VlaygwKQotICAgICAgICByZXR1cm4gZmlsZQotCi1kZWYgc3VtbWFyaXplKGVsZW0pOgotICAgIGlmIGVsZW0udGFnID09IEVULkNvbW1lbnQ6Ci0gICAgICAgIHJldHVybiAiPENvbW1lbnQ+IgotICAgIHJldHVybiBlbGVtLnRhZwotCi1kZWYgc3VtbWFyaXplX2xpc3Qoc2VxKToKLSAgICByZXR1cm4gW3N1bW1hcml6ZShlbGVtKSBmb3IgZWxlbSBpbiBzZXFdCi0KLWRlZiBub3JtYWxpemVfY3JsZih0cmVlKToKLSAgICBmb3IgZWxlbSBpbiB0cmVlLml0ZXIoKToKLSAgICAgICAgaWYgZWxlbS50ZXh0OgotICAgICAgICAgICAgZWxlbS50ZXh0ID0gZWxlbS50ZXh0LnJlcGxhY2UoIlxyXG4iLCAiXG4iKQotICAgICAgICBpZiBlbGVtLnRhaWw6Ci0gICAgICAgICAgICBlbGVtLnRhaWwgPSBlbGVtLnRhaWwucmVwbGFjZSgiXHJcbiIsICJcbiIpCi0KLWRlZiBjaGVja19zdHJpbmcoc3RyaW5nKToKLSAgICBsZW4oc3RyaW5nKQotICAgIGZvciBjaGFyIGluIHN0cmluZzoKLSAgICAgICAgaWYgbGVuKGNoYXIpICE9IDE6Ci0gICAgICAgICAgICBwcmludCAiZXhwZWN0ZWQgb25lLWNoYXJhY3RlciBzdHJpbmcsIGdvdCAlciIgJSBjaGFyCi0gICAgbmV3X3N0cmluZyA9IHN0cmluZyArICIiCi0gICAgbmV3X3N0cmluZyA9IHN0cmluZyArICIgIgotICAgIHN0cmluZ1s6MF0KLQotZGVmIGNoZWNrX21hcHBpbmcobWFwcGluZyk6Ci0gICAgbGVuKG1hcHBpbmcpCi0gICAga2V5cyA9IG1hcHBpbmcua2V5cygpCi0gICAgaXRlbXMgPSBtYXBwaW5nLml0ZW1zKCkKLSAgICBmb3Iga2V5IGluIGtleXM6Ci0gICAgICAgIGl0ZW0gPSBtYXBwaW5nW2tleV0KLSAgICBtYXBwaW5nWyJrZXkiXSA9ICJ2YWx1ZSIKLSAgICBpZiBtYXBwaW5nWyJrZXkiXSAhPSAidmFsdWUiOgotICAgICAgICBwcmludCAiZXhwZWN0ZWQgdmFsdWUgc3RyaW5nLCBnb3QgJXIiICUgbWFwcGluZ1sia2V5Il0KLQotZGVmIGNoZWNrX2VsZW1lbnQoZWxlbWVudCk6Ci0gICAgaWYgbm90IEVULmlzZWxlbWVudChlbGVtZW50KToKLSAgICAgICAgcHJpbnQgIm5vdCBhbiBlbGVtZW50IgotICAgIGlmIG5vdCBoYXNhdHRyKGVsZW1lbnQsICJ0YWciKToKLSAgICAgICAgcHJpbnQgIm5vIHRhZyBtZW1iZXIiCi0gICAgaWYgbm90IGhhc2F0dHIoZWxlbWVudCwgImF0dHJpYiIpOgotICAgICAgICBwcmludCAibm8gYXR0cmliIG1lbWJlciIKLSAgICBpZiBub3QgaGFzYXR0cihlbGVtZW50LCAidGV4dCIpOgotICAgICAgICBwcmludCAibm8gdGV4dCBtZW1iZXIiCi0gICAgaWYgbm90IGhhc2F0dHIoZWxlbWVudCwgInRhaWwiKToKLSAgICAgICAgcHJpbnQgIm5vIHRhaWwgbWVtYmVyIgotCi0gICAgY2hlY2tfc3RyaW5nKGVsZW1lbnQudGFnKQotICAgIGNoZWNrX21hcHBpbmcoZWxlbWVudC5hdHRyaWIpCi0gICAgaWYgZWxlbWVudC50ZXh0IGlzIG5vdCBOb25lOgotICAgICAgICBjaGVja19zdHJpbmcoZWxlbWVudC50ZXh0KQotICAgIGlmIGVsZW1lbnQudGFpbCBpcyBub3QgTm9uZToKLSAgICAgICAgY2hlY2tfc3RyaW5nKGVsZW1lbnQudGFpbCkKLSAgICBmb3IgZWxlbSBpbiBlbGVtZW50OgotICAgICAgICBjaGVja19lbGVtZW50KGVsZW0pCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgZWxlbWVudCB0cmVlIHRlc3RzCi0KLWRlZiBpbnRlcmZhY2UoKToKLSAgICByIiIiCi0gICAgVGVzdCBlbGVtZW50IHRyZWUgaW50ZXJmYWNlLgotCi0gICAgPj4+IGVsZW1lbnQgPSBFVC5FbGVtZW50KCJ0YWciKQotICAgID4+PiBjaGVja19lbGVtZW50KGVsZW1lbnQpCi0gICAgPj4+IHRyZWUgPSBFVC5FbGVtZW50VHJlZShlbGVtZW50KQotICAgID4+PiBjaGVja19lbGVtZW50KHRyZWUuZ2V0cm9vdCgpKQotCi0gICAgPj4+IGVsZW1lbnQgPSBFVC5FbGVtZW50KCJ0XHhlNGciLCBrZXk9InZhbHVlIikKLSAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnRUcmVlKGVsZW1lbnQpCi0gICAgPj4+IHJlcHIoZWxlbWVudCkgICAjIGRvY3Rlc3Q6ICtFTExJUFNJUwotICAgICI8RWxlbWVudCAndFxceGU0ZycgYXQgMHguLi4+IgotICAgID4+PiBlbGVtZW50ID0gRVQuRWxlbWVudCgidGFnIiwga2V5PSJ2YWx1ZSIpCi0KLSAgICBNYWtlIHN1cmUgYWxsIHN0YW5kYXJkIGVsZW1lbnQgbWV0aG9kcyBleGlzdC4KLQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5hcHBlbmQpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LmV4dGVuZCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaW5zZXJ0KQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5yZW1vdmUpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LmdldGNoaWxkcmVuKQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5maW5kKQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyZmluZCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuZmluZGFsbCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuZmluZHRleHQpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LmNsZWFyKQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5nZXQpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50LnNldCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQua2V5cykKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlbXMpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXIpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXJ0ZXh0KQotICAgID4+PiBjaGVja19tZXRob2QoZWxlbWVudC5nZXRpdGVyYXRvcikKLQotICAgIFRoZXNlIG1ldGhvZHMgcmV0dXJuIGFuIGl0ZXJhYmxlLiBTZWUgYnVnIDY0NzIuCi0KLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlcigidGFnIikubmV4dCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlcmZpbmQoInRhZyIpLm5leHQpCi0gICAgPj4+IGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZXJmaW5kKCIqIikubmV4dCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKHRyZWUuaXRlcigidGFnIikubmV4dCkKLSAgICA+Pj4gY2hlY2tfbWV0aG9kKHRyZWUuaXRlcmZpbmQoInRhZyIpLm5leHQpCi0gICAgPj4+IGNoZWNrX21ldGhvZCh0cmVlLml0ZXJmaW5kKCIqIikubmV4dCkKLQotICAgIFRoZXNlIGFsaWFzZXMgYXJlIHByb3ZpZGVkOgotCi0gICAgPj4+IGFzc2VydCBFVC5YTUwgPT0gRVQuZnJvbXN0cmluZwotICAgID4+PiBhc3NlcnQgRVQuUEkgPT0gRVQuUHJvY2Vzc2luZ0luc3RydWN0aW9uCi0gICAgPj4+IGFzc2VydCBFVC5YTUxQYXJzZXIgPT0gRVQuWE1MVHJlZUJ1aWxkZXIKLSAgICAiIiIKLQotZGVmIHNpbXBsZW9wcygpOgotICAgICIiIgotICAgIEJhc2ljIG1ldGhvZCBzYW5pdHkgY2hlY2tzLgotCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoIjxib2R5Pjx0YWcvPjwvYm9keT4iKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPGJvZHk+PHRhZyAvPjwvYm9keT4nCi0gICAgPj4+IGUgPSBFVC5FbGVtZW50KCJ0YWcyIikKLSAgICA+Pj4gZWxlbS5hcHBlbmQoZSkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzxib2R5Pjx0YWcgLz48dGFnMiAvPjwvYm9keT4nCi0gICAgPj4+IGVsZW0ucmVtb3ZlKGUpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8Ym9keT48dGFnIC8+PC9ib2R5PicKLSAgICA+Pj4gZWxlbS5pbnNlcnQoMCwgZSkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzxib2R5Pjx0YWcyIC8+PHRhZyAvPjwvYm9keT4nCi0gICAgPj4+IGVsZW0ucmVtb3ZlKGUpCi0gICAgPj4+IGVsZW0uZXh0ZW5kKFtlXSkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzxib2R5Pjx0YWcgLz48dGFnMiAvPjwvYm9keT4nCi0gICAgPj4+IGVsZW0ucmVtb3ZlKGUpCi0KLSAgICA+Pj4gZWxlbWVudCA9IEVULkVsZW1lbnQoInRhZyIsIGtleT0idmFsdWUiKQotICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkgIyAxCi0gICAgJzx0YWcga2V5PSJ2YWx1ZSIgLz4nCi0gICAgPj4+IHN1YmVsZW1lbnQgPSBFVC5FbGVtZW50KCJzdWJ0YWciKQotICAgID4+PiBlbGVtZW50LmFwcGVuZChzdWJlbGVtZW50KQotICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkgIyAyCi0gICAgJzx0YWcga2V5PSJ2YWx1ZSI+PHN1YnRhZyAvPjwvdGFnPicKLSAgICA+Pj4gZWxlbWVudC5pbnNlcnQoMCwgc3ViZWxlbWVudCkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW1lbnQpICMgMwotICAgICc8dGFnIGtleT0idmFsdWUiPjxzdWJ0YWcgLz48c3VidGFnIC8+PC90YWc+JwotICAgID4+PiBlbGVtZW50LnJlbW92ZShzdWJlbGVtZW50KQotICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkgIyA0Ci0gICAgJzx0YWcga2V5PSJ2YWx1ZSI+PHN1YnRhZyAvPjwvdGFnPicKLSAgICA+Pj4gZWxlbWVudC5yZW1vdmUoc3ViZWxlbWVudCkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW1lbnQpICMgNQotICAgICc8dGFnIGtleT0idmFsdWUiIC8+JwotICAgID4+PiBlbGVtZW50LnJlbW92ZShzdWJlbGVtZW50KQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBWYWx1ZUVycm9yOiBsaXN0LnJlbW92ZSh4KTogeCBub3QgaW4gbGlzdAotICAgID4+PiBzZXJpYWxpemUoZWxlbWVudCkgIyA2Ci0gICAgJzx0YWcga2V5PSJ2YWx1ZSIgLz4nCi0gICAgPj4+IGVsZW1lbnRbMDowXSA9IFtzdWJlbGVtZW50LCBzdWJlbGVtZW50LCBzdWJlbGVtZW50XQotICAgID4+PiBzZXJpYWxpemUoZWxlbWVudFsxXSkKLSAgICAnPHN1YnRhZyAvPicKLSAgICA+Pj4gZWxlbWVudFsxOjldID09IFtlbGVtZW50WzFdLCBlbGVtZW50WzJdXQotICAgIFRydWUKLSAgICA+Pj4gZWxlbWVudFs6OToyXSA9PSBbZWxlbWVudFswXSwgZWxlbWVudFsyXV0KLSAgICBUcnVlCi0gICAgPj4+IGRlbCBlbGVtZW50WzE6Ml0KLSAgICA+Pj4gc2VyaWFsaXplKGVsZW1lbnQpCi0gICAgJzx0YWcga2V5PSJ2YWx1ZSI+PHN1YnRhZyAvPjxzdWJ0YWcgLz48L3RhZz4nCi0gICAgIiIiCi0KLWRlZiBjZGF0YSgpOgotICAgICIiIgotICAgIFRlc3QgQ0RBVEEgaGFuZGxpbmcgKGV0YykuCi0KLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgiPHRhZz5oZWxsbzwvdGFnPiIpKQotICAgICc8dGFnPmhlbGxvPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCI8dGFnPiYjMTA0OyYjMTAxOyYjMTA4OyYjMTA4OyYjMTExOzwvdGFnPiIpKQotICAgICc8dGFnPmhlbGxvPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCI8dGFnPjwhW0NEQVRBW2hlbGxvXV0+PC90YWc+IikpCi0gICAgJzx0YWc+aGVsbG88L3RhZz4nCi0gICAgIiIiCi0KLSMgT25seSB3aXRoIFB5dGhvbiBpbXBsZW1lbnRhdGlvbgotZGVmIHNpbXBsZWZpbmQoKToKLSAgICAiIiIKLSAgICBUZXN0IGZpbmQgbWV0aG9kcyB1c2luZyB0aGUgZWxlbWVudHBhdGggZmFsbGJhY2suCi0KLSAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRUcmVlCi0KLSAgICA+Pj4gQ3VycmVudEVsZW1lbnRQYXRoID0gRWxlbWVudFRyZWUuRWxlbWVudFBhdGgKLSAgICA+Pj4gRWxlbWVudFRyZWUuRWxlbWVudFBhdGggPSBFbGVtZW50VHJlZS5fU2ltcGxlRWxlbWVudFBhdGgoKQotICAgID4+PiBlbGVtID0gRWxlbWVudFRyZWUuWE1MKFNBTVBMRV9YTUwpCi0gICAgPj4+IGVsZW0uZmluZCgidGFnIikudGFnCi0gICAgJ3RhZycKLSAgICA+Pj4gRWxlbWVudFRyZWUuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgidGFnIikudGFnCi0gICAgJ3RhZycKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgidGFnIikKLSAgICAndGV4dCcKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgidG9nIikKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgidG9nIiwgImRlZmF1bHQiKQotICAgICdkZWZhdWx0JwotICAgID4+PiBFbGVtZW50VHJlZS5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgidGFnIikKLSAgICAndGV4dCcKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ0YWciKSkKLSAgICBbJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZyIpKQotICAgIFsndGFnJywgJ3RhZycsICd0YWcnXQotCi0gICAgUGF0aCBzeW50YXggZG9lc24ndCB3b3JrIGluIHRoaXMgY2FzZS4KLQotICAgID4+PiBlbGVtLmZpbmQoInNlY3Rpb24vdGFnIikKLSAgICA+Pj4gZWxlbS5maW5kdGV4dCgic2VjdGlvbi90YWciKQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInNlY3Rpb24vdGFnIikpCi0gICAgW10KLQotICAgID4+PiBFbGVtZW50VHJlZS5FbGVtZW50UGF0aCA9IEN1cnJlbnRFbGVtZW50UGF0aAotICAgICIiIgotCi1kZWYgZmluZCgpOgotICAgICIiIgotICAgIFRlc3QgZmluZCBtZXRob2RzIChpbmNsdWRpbmcgeHBhdGggc3ludGF4KS4KLQotICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCi0gICAgPj4+IGVsZW0uZmluZCgidGFnIikudGFnCi0gICAgJ3RhZycKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgidGFnIikudGFnCi0gICAgJ3RhZycKLSAgICA+Pj4gZWxlbS5maW5kKCJzZWN0aW9uL3RhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IGVsZW0uZmluZCgiLi90YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCIuL3RhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoIi90YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiBlbGVtWzJdID0gRVQuWE1MKFNBTVBMRV9TRUNUSU9OKQotICAgID4+PiBlbGVtLmZpbmQoInNlY3Rpb24vbmV4dHRhZyIpLnRhZwotICAgICduZXh0dGFnJwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCJzZWN0aW9uL3RhZyIpLnRhZwotICAgICd0YWcnCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoInRvZyIpCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoInRvZy9mb28iKQotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0YWciKQotICAgICd0ZXh0JwotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJzZWN0aW9uL25leHR0YWciKQotICAgICcnCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInNlY3Rpb24vbmV4dHRhZyIsICJkZWZhdWx0IikKLSAgICAnJwotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0b2ciKQotICAgID4+PiBlbGVtLmZpbmR0ZXh0KCJ0b2ciLCAiZGVmYXVsdCIpCi0gICAgJ2RlZmF1bHQnCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmR0ZXh0KCJ0YWciKQotICAgICd0ZXh0JwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgidG9nL2ZvbyIpCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmR0ZXh0KCJ0b2cvZm9vIiwgImRlZmF1bHQiKQotICAgICdkZWZhdWx0JwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgiLi90YWciKQotICAgICd0ZXh0JwotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kdGV4dCgiL3RhZyIpCi0gICAgJ3RleHQnCi0gICAgPj4+IGVsZW0uZmluZHRleHQoInNlY3Rpb24vdGFnIikKLSAgICAnc3VidGV4dCcKLSAgICA+Pj4gRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZHRleHQoInNlY3Rpb24vdGFnIikKLSAgICAnc3VidGV4dCcKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuIikpCi0gICAgWydib2R5J10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ0YWciKSkKLSAgICBbJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInRvZyIpKQotICAgIFtdCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgidG9nL2ZvbyIpKQotICAgIFtdCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiKiIpKQotICAgIFsndGFnJywgJ3RhZycsICdzZWN0aW9uJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWciKSkKLSAgICBbJ3RhZycsICd0YWcnLCAndGFnJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgic2VjdGlvbi90YWciKSkKLSAgICBbJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgic2VjdGlvbi8vdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uLyoiKSkKLSAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uLy8qIikpCi0gICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbicsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoInNlY3Rpb24vLi8vKiIpKQotICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIqLyoiKSkKLSAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIqLy8qIikpCi0gICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbicsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIiovdGFnIikpCi0gICAgWyd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIiovLi90YWciKSkKLSAgICBbJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi90YWciKSkKLSAgICBbJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZyIpKQotICAgIFsndGFnJywgJ3RhZycsICd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy4vdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWdbQGNsYXNzXSIpKQotICAgIFsndGFnJywgJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZ1tAY2xhc3M9J2EnXSIpKQotICAgIFsndGFnJ10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCIuLy90YWdbQGNsYXNzPSdiJ10iKSkKLSAgICBbJ3RhZycsICd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3RhZ1tAaWRdIikpCi0gICAgWyd0YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3NlY3Rpb25bdGFnXSIpKQotICAgIFsnc2VjdGlvbiddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi8vc2VjdGlvbltlbGVtZW50XSIpKQotICAgIFtdCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgiLi4vdGFnIikpCi0gICAgW10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJzZWN0aW9uLy4uL3RhZyIpKQotICAgIFsndGFnJywgJ3RhZyddCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmRhbGwoIi4vdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLQotICAgIEZvbGxvd2luZyBleGFtcGxlIGlzIGludmFsaWQgaW4gMS4yLgotICAgIEEgbGVhZGluZyAnKicgaXMgYXNzdW1lZCBpbiAxLjMuCi0KLSAgICA+Pj4gZWxlbS5maW5kYWxsKCJzZWN0aW9uLy8iKSA9PSBlbGVtLmZpbmRhbGwoInNlY3Rpb24vLyoiKQotICAgIFRydWUKLQotICAgIEVUJ3MgUGF0aCBtb2R1bGUgaGFuZGxlcyB0aGlzIGNhc2UgaW5jb3JyZWN0bHk7IHRoaXMgZ2l2ZXMKLSAgICBhIHdhcm5pbmcgaW4gMS4zLCBhbmQgdGhlIGJlaGF2aW91ciB3aWxsIGJlIG1vZGlmaWVkIGluIDEuNC4KLQotICAgID4+PiBzdW1tYXJpemVfbGlzdChFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kYWxsKCIvdGFnIikpCi0gICAgWyd0YWcnLCAndGFnJ10KLQotICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUxfTlMpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0uZmluZGFsbCgidGFnIikpCi0gICAgW10KLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoZWxlbS5maW5kYWxsKCJ7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnIikpCi0gICAgWyd7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnJywgJ3todHRwOi8vZWZmYm90Lm9yZy9uc310YWcnXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlbGVtLmZpbmRhbGwoIi4vL3todHRwOi8vZWZmYm90Lm9yZy9uc310YWciKSkKLSAgICBbJ3todHRwOi8vZWZmYm90Lm9yZy9uc310YWcnLCAne2h0dHA6Ly9lZmZib3Qub3JnL25zfXRhZycsICd7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnJ10KLSAgICAiIiIKLQotZGVmIGZpbGVfaW5pdCgpOgotICAgICIiIgotICAgID4+PiBpbXBvcnQgU3RyaW5nSU8KLQotICAgID4+PiBzdHJpbmdmaWxlID0gU3RyaW5nSU8uU3RyaW5nSU8oU0FNUExFX1hNTCkKLSAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnRUcmVlKGZpbGU9c3RyaW5nZmlsZSkKLSAgICA+Pj4gdHJlZS5maW5kKCJ0YWciKS50YWcKLSAgICAndGFnJwotICAgID4+PiB0cmVlLmZpbmQoInNlY3Rpb24vdGFnIikudGFnCi0gICAgJ3RhZycKLQotICAgID4+PiB0cmVlID0gRVQuRWxlbWVudFRyZWUoZmlsZT1TSU1QTEVfWE1MRklMRSkKLSAgICA+Pj4gdHJlZS5maW5kKCJlbGVtZW50IikudGFnCi0gICAgJ2VsZW1lbnQnCi0gICAgPj4+IHRyZWUuZmluZCgiZWxlbWVudC8uLi9lbXB0eS1lbGVtZW50IikudGFnCi0gICAgJ2VtcHR5LWVsZW1lbnQnCi0gICAgIiIiCi0KLWRlZiBiYWRfZmluZCgpOgotICAgICIiIgotICAgIENoZWNrIGJhZCBvciB1bnN1cHBvcnRlZCBwYXRoIGV4cHJlc3Npb25zLgotCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoU0FNUExFX1hNTCkKLSAgICA+Pj4gZWxlbS5maW5kYWxsKCIvdGFnIikKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgU3ludGF4RXJyb3I6IGNhbm5vdCB1c2UgYWJzb2x1dGUgcGF0aCBvbiBlbGVtZW50Ci0gICAgIiIiCi0KLWRlZiBwYXRoX2NhY2hlKCk6Ci0gICAgIiIiCi0gICAgQ2hlY2sgdGhhdCB0aGUgcGF0aCBjYWNoZSBiZWhhdmVzIHNhbmVseS4KLQotICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCi0gICAgPj4+IGZvciBpIGluIHJhbmdlKDEwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKLSAgICA+Pj4gY2FjaGVfbGVuXzEwID0gbGVuKEVULkVsZW1lbnRQYXRoLl9jYWNoZSkKLSAgICA+Pj4gZm9yIGkgaW4gcmFuZ2UoMTApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQotICAgID4+PiBsZW4oRVQuRWxlbWVudFBhdGguX2NhY2hlKSA9PSBjYWNoZV9sZW5fMTAKLSAgICBUcnVlCi0gICAgPj4+IGZvciBpIGluIHJhbmdlKDIwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKLSAgICA+Pj4gbGVuKEVULkVsZW1lbnRQYXRoLl9jYWNoZSkgPiBjYWNoZV9sZW5fMTAKLSAgICBUcnVlCi0gICAgPj4+IGZvciBpIGluIHJhbmdlKDYwMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCi0gICAgPj4+IGxlbihFVC5FbGVtZW50UGF0aC5fY2FjaGUpIDwgNTAwCi0gICAgVHJ1ZQotICAgICIiIgotCi1kZWYgY29weSgpOgotICAgICIiIgotICAgIFRlc3QgY29weSBoYW5kbGluZyAoZXRjKS4KLQotICAgID4+PiBpbXBvcnQgY29weQotICAgID4+PiBlMSA9IEVULlhNTCgiPHRhZz5oZWxsbzxmb28vPjwvdGFnPiIpCi0gICAgPj4+IGUyID0gY29weS5jb3B5KGUxKQotICAgID4+PiBlMyA9IGNvcHkuZGVlcGNvcHkoZTEpCi0gICAgPj4+IGUxLmZpbmQoImZvbyIpLnRhZyA9ICJiYXIiCi0gICAgPj4+IHNlcmlhbGl6ZShlMSkKLSAgICAnPHRhZz5oZWxsbzxiYXIgLz48L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlMikKLSAgICAnPHRhZz5oZWxsbzxiYXIgLz48L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlMykKLSAgICAnPHRhZz5oZWxsbzxmb28gLz48L3RhZz4nCi0KLSAgICAiIiIKLQotZGVmIGF0dHJpYigpOgotICAgICIiIgotICAgIFRlc3QgYXR0cmlidXRlIGhhbmRsaW5nLgotCi0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQotICAgID4+PiBlbGVtLmdldCgia2V5IikgIyAxLjEKLSAgICA+Pj4gZWxlbS5nZXQoImtleSIsICJkZWZhdWx0IikgIyAxLjIKLSAgICAnZGVmYXVsdCcKLSAgICA+Pj4gZWxlbS5zZXQoImtleSIsICJ2YWx1ZSIpCi0gICAgPj4+IGVsZW0uZ2V0KCJrZXkiKSAjIDEuMwotICAgICd2YWx1ZScKLQotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIiwga2V5PSJ2YWx1ZSIpCi0gICAgPj4+IGVsZW0uZ2V0KCJrZXkiKSAjIDIuMQotICAgICd2YWx1ZScKLSAgICA+Pj4gZWxlbS5hdHRyaWIgIyAyLjIKLSAgICB7J2tleSc6ICd2YWx1ZSd9Ci0KLSAgICA+Pj4gYXR0cmliID0geyJrZXkiOiAidmFsdWUifQotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIiwgYXR0cmliKQotICAgID4+PiBhdHRyaWIuY2xlYXIoKSAjIGNoZWNrIGZvciBhbGlhc2luZyBpc3N1ZXMKLSAgICA+Pj4gZWxlbS5nZXQoImtleSIpICMgMy4xCi0gICAgJ3ZhbHVlJwotICAgID4+PiBlbGVtLmF0dHJpYiAjIDMuMgotICAgIHsna2V5JzogJ3ZhbHVlJ30KLQotICAgID4+PiBhdHRyaWIgPSB7ImtleSI6ICJ2YWx1ZSJ9Ci0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciLCAqKmF0dHJpYikKLSAgICA+Pj4gYXR0cmliLmNsZWFyKCkgIyBjaGVjayBmb3IgYWxpYXNpbmcgaXNzdWVzCi0gICAgPj4+IGVsZW0uZ2V0KCJrZXkiKSAjIDQuMQotICAgICd2YWx1ZScKLSAgICA+Pj4gZWxlbS5hdHRyaWIgIyA0LjIKLSAgICB7J2tleSc6ICd2YWx1ZSd9Ci0KLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoInRhZyIsIHsia2V5IjogIm90aGVyIn0sIGtleT0idmFsdWUiKQotICAgID4+PiBlbGVtLmdldCgia2V5IikgIyA1LjEKLSAgICAndmFsdWUnCi0gICAgPj4+IGVsZW0uYXR0cmliICMgNS4yCi0gICAgeydrZXknOiAndmFsdWUnfQotCi0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCd0ZXN0JykKLSAgICA+Pj4gZWxlbS50ZXh0ID0gImFhIgotICAgID4+PiBlbGVtLnNldCgndGVzdGEnLCAndGVzdHZhbCcpCi0gICAgPj4+IGVsZW0uc2V0KCd0ZXN0YicsICd0ZXN0MicpCi0gICAgPj4+IEVULnRvc3RyaW5nKGVsZW0pCi0gICAgJzx0ZXN0IHRlc3RhPSJ0ZXN0dmFsIiB0ZXN0Yj0idGVzdDIiPmFhPC90ZXN0PicKLSAgICA+Pj4gc29ydGVkKGVsZW0ua2V5cygpKQotICAgIFsndGVzdGEnLCAndGVzdGInXQotICAgID4+PiBzb3J0ZWQoZWxlbS5pdGVtcygpKQotICAgIFsoJ3Rlc3RhJywgJ3Rlc3R2YWwnKSwgKCd0ZXN0YicsICd0ZXN0MicpXQotICAgID4+PiBlbGVtLmF0dHJpYlsndGVzdGInXQotICAgICd0ZXN0MicKLSAgICA+Pj4gZWxlbS5hdHRyaWJbJ3Rlc3RiJ10gPSAndGVzdDEnCi0gICAgPj4+IGVsZW0uYXR0cmliWyd0ZXN0YyddID0gJ3Rlc3QyJwotICAgID4+PiBFVC50b3N0cmluZyhlbGVtKQotICAgICc8dGVzdCB0ZXN0YT0idGVzdHZhbCIgdGVzdGI9InRlc3QxIiB0ZXN0Yz0idGVzdDIiPmFhPC90ZXN0PicKLSAgICAiIiIKLQotZGVmIG1ha2VlbGVtZW50KCk6Ci0gICAgIiIiCi0gICAgVGVzdCBtYWtlZWxlbWVudCBoYW5kbGluZy4KLQotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKLSAgICA+Pj4gYXR0cmliID0geyJrZXkiOiAidmFsdWUifQotICAgID4+PiBzdWJlbGVtID0gZWxlbS5tYWtlZWxlbWVudCgic3VidGFnIiwgYXR0cmliKQotICAgID4+PiBpZiBzdWJlbGVtLmF0dHJpYiBpcyBhdHRyaWI6Ci0gICAgLi4uICAgICBwcmludCAiYXR0cmliIGFsaWFzaW5nIgotICAgID4+PiBlbGVtLmFwcGVuZChzdWJlbGVtKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PC90YWc+JwotCi0gICAgPj4+IGVsZW0uY2xlYXIoKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZyAvPicKLSAgICA+Pj4gZWxlbS5hcHBlbmQoc3ViZWxlbSkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWc+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjwvdGFnPicKLSAgICA+Pj4gZWxlbS5leHRlbmQoW3N1YmVsZW0sIHN1YmVsZW1dKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjxzdWJ0YWcga2V5PSJ2YWx1ZSIgLz48L3RhZz4nCi0gICAgPj4+IGVsZW1bOl0gPSBbc3ViZWxlbV0KLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWc+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjwvdGFnPicKLSAgICA+Pj4gZWxlbVs6XSA9IHR1cGxlKFtzdWJlbGVtXSkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWc+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjwvdGFnPicKLQotICAgICIiIgotCi1kZWYgcGFyc2VmaWxlKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBwYXJzaW5nIGZyb20gZmlsZS4KLQotICAgID4+PiB0cmVlID0gRVQucGFyc2UoU0lNUExFX1hNTEZJTEUpCi0gICAgPj4+IG5vcm1hbGl6ZV9jcmxmKHRyZWUpCi0gICAgPj4+IHRyZWUud3JpdGUoc3lzLnN0ZG91dCkKLSAgICA8cm9vdD4KLSAgICAgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PgotICAgICAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbAotICAgICAgIDxlbXB0eS1lbGVtZW50IC8+Ci0gICAgPC9yb290PgotICAgID4+PiB0cmVlID0gRVQucGFyc2UoU0lNUExFX05TX1hNTEZJTEUpCi0gICAgPj4+IG5vcm1hbGl6ZV9jcmxmKHRyZWUpCi0gICAgPj4+IHRyZWUud3JpdGUoc3lzLnN0ZG91dCkKLSAgICA8bnMwOnJvb3QgeG1sbnM6bnMwPSJuYW1lc3BhY2UiPgotICAgICAgIDxuczA6ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9uczA6ZWxlbWVudD4KLSAgICAgICA8bnMwOmVsZW1lbnQ+dGV4dDwvbnMwOmVsZW1lbnQ+dGFpbAotICAgICAgIDxuczA6ZW1wdHktZWxlbWVudCAvPgotICAgIDwvbnMwOnJvb3Q+Ci0KLSAgICA+Pj4gd2l0aCBvcGVuKFNJTVBMRV9YTUxGSUxFKSBhcyBmOgotICAgIC4uLiAgICAgZGF0YSA9IGYucmVhZCgpCi0KLSAgICA+Pj4gcGFyc2VyID0gRVQuWE1MUGFyc2VyKCkKLSAgICA+Pj4gcGFyc2VyLnZlcnNpb24gICMgZG9jdGVzdDogK0VMTElQU0lTCi0gICAgJ0V4cGF0IC4uLicKLSAgICA+Pj4gcGFyc2VyLmZlZWQoZGF0YSkKLSAgICA+Pj4gcHJpbnQgc2VyaWFsaXplKHBhcnNlci5jbG9zZSgpKQotICAgIDxyb290PgotICAgICAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+Ci0gICAgICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsCi0gICAgICAgPGVtcHR5LWVsZW1lbnQgLz4KLSAgICA8L3Jvb3Q+Ci0KLSAgICA+Pj4gcGFyc2VyID0gRVQuWE1MVHJlZUJ1aWxkZXIoKSAjIDEuMiBjb21wYXRpYmlsaXR5Ci0gICAgPj4+IHBhcnNlci5mZWVkKGRhdGEpCi0gICAgPj4+IHByaW50IHNlcmlhbGl6ZShwYXJzZXIuY2xvc2UoKSkKLSAgICA8cm9vdD4KLSAgICAgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PgotICAgICAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbAotICAgICAgIDxlbXB0eS1lbGVtZW50IC8+Ci0gICAgPC9yb290PgotCi0gICAgPj4+IHRhcmdldCA9IEVULlRyZWVCdWlsZGVyKCkKLSAgICA+Pj4gcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD10YXJnZXQpCi0gICAgPj4+IHBhcnNlci5mZWVkKGRhdGEpCi0gICAgPj4+IHByaW50IHNlcmlhbGl6ZShwYXJzZXIuY2xvc2UoKSkKLSAgICA8cm9vdD4KLSAgICAgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PgotICAgICAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbAotICAgICAgIDxlbXB0eS1lbGVtZW50IC8+Ci0gICAgPC9yb290PgotICAgICIiIgotCi1kZWYgcGFyc2VsaXRlcmFsKCk6Ci0gICAgIiIiCi0gICAgPj4+IGVsZW1lbnQgPSBFVC5YTUwoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCi0gICAgPj4+IEVULkVsZW1lbnRUcmVlKGVsZW1lbnQpLndyaXRlKHN5cy5zdGRvdXQpCi0gICAgPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+Ci0gICAgPj4+IGVsZW1lbnQgPSBFVC5mcm9tc3RyaW5nKCI8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4iKQotICAgID4+PiBFVC5FbGVtZW50VHJlZShlbGVtZW50KS53cml0ZShzeXMuc3Rkb3V0KQotICAgIDxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPgotICAgID4+PiBzZXF1ZW5jZSA9IFsiPGh0bWw+PGJvZHk+IiwgInRleHQ8L2JvIiwgImR5PjwvaHRtbD4iXQotICAgID4+PiBlbGVtZW50ID0gRVQuZnJvbXN0cmluZ2xpc3Qoc2VxdWVuY2UpCi0gICAgPj4+IHByaW50IEVULnRvc3RyaW5nKGVsZW1lbnQpCi0gICAgPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+Ci0gICAgPj4+IHByaW50ICIiLmpvaW4oRVQudG9zdHJpbmdsaXN0KGVsZW1lbnQpKQotICAgIDxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPgotICAgID4+PiBFVC50b3N0cmluZyhlbGVtZW50LCAiYXNjaWkiKQotICAgICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdhc2NpaSc/PlxcbjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIKLSAgICA+Pj4gXywgaWRzID0gRVQuWE1MSUQoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCi0gICAgPj4+IGxlbihpZHMpCi0gICAgMAotICAgID4+PiBfLCBpZHMgPSBFVC5YTUxJRCgiPGh0bWw+PGJvZHkgaWQ9J2JvZHknPnRleHQ8L2JvZHk+PC9odG1sPiIpCi0gICAgPj4+IGxlbihpZHMpCi0gICAgMQotICAgID4+PiBpZHNbImJvZHkiXS50YWcKLSAgICAnYm9keScKLSAgICAiIiIKLQotZGVmIGl0ZXJwYXJzZSgpOgotICAgICIiIgotICAgIFRlc3QgaXRlcnBhcnNlIGludGVyZmFjZS4KLQotICAgID4+PiBpdGVycGFyc2UgPSBFVC5pdGVycGFyc2UKLQotICAgID4+PiBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFKQotICAgID4+PiBhY3Rpb24sIGVsZW0gPSBuZXh0KGNvbnRleHQpCi0gICAgPj4+IHByaW50IGFjdGlvbiwgZWxlbS50YWcKLSAgICBlbmQgZWxlbWVudAotICAgID4+PiBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHQ6Ci0gICAgLi4uICAgcHJpbnQgYWN0aW9uLCBlbGVtLnRhZwotICAgIGVuZCBlbGVtZW50Ci0gICAgZW5kIGVtcHR5LWVsZW1lbnQKLSAgICBlbmQgcm9vdAotICAgID4+PiBjb250ZXh0LnJvb3QudGFnCi0gICAgJ3Jvb3QnCi0KLSAgICA+Pj4gY29udGV4dCA9IGl0ZXJwYXJzZShTSU1QTEVfTlNfWE1MRklMRSkKLSAgICA+Pj4gZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0OgotICAgIC4uLiAgIHByaW50IGFjdGlvbiwgZWxlbS50YWcKLSAgICBlbmQge25hbWVzcGFjZX1lbGVtZW50Ci0gICAgZW5kIHtuYW1lc3BhY2V9ZWxlbWVudAotICAgIGVuZCB7bmFtZXNwYWNlfWVtcHR5LWVsZW1lbnQKLSAgICBlbmQge25hbWVzcGFjZX1yb290Ci0KLSAgICA+Pj4gZXZlbnRzID0gKCkKLSAgICA+Pj4gY29udGV4dCA9IGl0ZXJwYXJzZShTSU1QTEVfWE1MRklMRSwgZXZlbnRzKQotICAgID4+PiBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHQ6Ci0gICAgLi4uICAgcHJpbnQgYWN0aW9uLCBlbGVtLnRhZwotCi0gICAgPj4+IGV2ZW50cyA9ICgpCi0gICAgPj4+IGNvbnRleHQgPSBpdGVycGFyc2UoU0lNUExFX1hNTEZJTEUsIGV2ZW50cz1ldmVudHMpCi0gICAgPj4+IGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dDoKLSAgICAuLi4gICBwcmludCBhY3Rpb24sIGVsZW0udGFnCi0KLSAgICA+Pj4gZXZlbnRzID0gKCJzdGFydCIsICJlbmQiKQotICAgID4+PiBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFLCBldmVudHMpCi0gICAgPj4+IGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dDoKLSAgICAuLi4gICBwcmludCBhY3Rpb24sIGVsZW0udGFnCi0gICAgc3RhcnQgcm9vdAotICAgIHN0YXJ0IGVsZW1lbnQKLSAgICBlbmQgZWxlbWVudAotICAgIHN0YXJ0IGVsZW1lbnQKLSAgICBlbmQgZWxlbWVudAotICAgIHN0YXJ0IGVtcHR5LWVsZW1lbnQKLSAgICBlbmQgZW1wdHktZWxlbWVudAotICAgIGVuZCByb290Ci0KLSAgICA+Pj4gZXZlbnRzID0gKCJzdGFydCIsICJlbmQiLCAic3RhcnQtbnMiLCAiZW5kLW5zIikKLSAgICA+Pj4gY29udGV4dCA9IGl0ZXJwYXJzZShTSU1QTEVfTlNfWE1MRklMRSwgZXZlbnRzKQotICAgID4+PiBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHQ6Ci0gICAgLi4uICAgaWYgYWN0aW9uIGluICgic3RhcnQiLCAiZW5kIik6Ci0gICAgLi4uICAgICBwcmludCBhY3Rpb24sIGVsZW0udGFnCi0gICAgLi4uICAgZWxzZToKLSAgICAuLi4gICAgIHByaW50IGFjdGlvbiwgZWxlbQotICAgIHN0YXJ0LW5zICgnJywgJ25hbWVzcGFjZScpCi0gICAgc3RhcnQge25hbWVzcGFjZX1yb290Ci0gICAgc3RhcnQge25hbWVzcGFjZX1lbGVtZW50Ci0gICAgZW5kIHtuYW1lc3BhY2V9ZWxlbWVudAotICAgIHN0YXJ0IHtuYW1lc3BhY2V9ZWxlbWVudAotICAgIGVuZCB7bmFtZXNwYWNlfWVsZW1lbnQKLSAgICBzdGFydCB7bmFtZXNwYWNlfWVtcHR5LWVsZW1lbnQKLSAgICBlbmQge25hbWVzcGFjZX1lbXB0eS1lbGVtZW50Ci0gICAgZW5kIHtuYW1lc3BhY2V9cm9vdAotICAgIGVuZC1ucyBOb25lCi0KLSAgICA+Pj4gaW1wb3J0IFN0cmluZ0lPCi0KLSAgICA+Pj4gZXZlbnRzID0gKCdzdGFydC1ucycsICdlbmQtbnMnKQotICAgID4+PiBjb250ZXh0ID0gRVQuaXRlcnBhcnNlKFN0cmluZ0lPLlN0cmluZ0lPKHIiPHJvb3QgeG1sbnM9JycvPiIpLCBldmVudHMpCi0gICAgPj4+IGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dDoKLSAgICAuLi4gICBwcmludCBhY3Rpb24sIGVsZW0KLSAgICBzdGFydC1ucyAoJycsICcnKQotICAgIGVuZC1ucyBOb25lCi0KLSAgICA+Pj4gZXZlbnRzID0gKCJzdGFydCIsICJlbmQiLCAiYm9ndXMiKQotICAgID4+PiB3aXRoIG9wZW4oU0lNUExFX1hNTEZJTEUsICJyYiIpIGFzIGY6Ci0gICAgLi4uICAgICBpdGVycGFyc2UoZiwgZXZlbnRzKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBWYWx1ZUVycm9yOiB1bmtub3duIGV2ZW50ICdib2d1cycKLQotICAgID4+PiBzb3VyY2UgPSBTdHJpbmdJTy5TdHJpbmdJTygKLSAgICAuLi4gICAgICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+XFxuIgotICAgIC4uLiAgICAgIjxib2R5IHhtbG5zPSdodHRwOi8vJiMyMzM7ZmZib3Qub3JnL25zJ1xcbiIKLSAgICAuLi4gICAgICIgICAgICB4bWxuczpjbFxceGU5PSdodHRwOi8vZWZmYm90Lm9yZy9ucyc+dGV4dDwvYm9keT5cXG4iKQotICAgID4+PiBldmVudHMgPSAoInN0YXJ0LW5zIiwpCi0gICAgPj4+IGNvbnRleHQgPSBpdGVycGFyc2Uoc291cmNlLCBldmVudHMpCi0gICAgPj4+IGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dDoKLSAgICAuLi4gICAgIHByaW50IGFjdGlvbiwgZWxlbQotICAgIHN0YXJ0LW5zICgnJywgdSdodHRwOi8vXFx4ZTlmZmJvdC5vcmcvbnMnKQotICAgIHN0YXJ0LW5zICh1J2NsXFx4ZTknLCAnaHR0cDovL2VmZmJvdC5vcmcvbnMnKQotCi0gICAgPj4+IHNvdXJjZSA9IFN0cmluZ0lPLlN0cmluZ0lPKCI8ZG9jdW1lbnQgLz5qdW5rIikKLSAgICA+Pj4gdHJ5OgotICAgIC4uLiAgIGZvciBhY3Rpb24sIGVsZW0gaW4gaXRlcnBhcnNlKHNvdXJjZSk6Ci0gICAgLi4uICAgICBwcmludCBhY3Rpb24sIGVsZW0udGFnCi0gICAgLi4uIGV4Y2VwdCBFVC5QYXJzZUVycm9yLCB2OgotICAgIC4uLiAgIHByaW50IHYKLSAgICBlbmQgZG9jdW1lbnQKLSAgICBqdW5rIGFmdGVyIGRvY3VtZW50IGVsZW1lbnQ6IGxpbmUgMSwgY29sdW1uIDEyCi0gICAgIiIiCi0KLWRlZiB3cml0ZWZpbGUoKToKLSAgICAiIiIKLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCi0gICAgPj4+IGVsZW0udGV4dCA9ICJ0ZXh0IgotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz50ZXh0PC90YWc+JwotICAgID4+PiBFVC5TdWJFbGVtZW50KGVsZW0sICJzdWJ0YWciKS50ZXh0ID0gInN1YnRleHQiCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPnRleHQ8c3VidGFnPnN1YnRleHQ8L3N1YnRhZz48L3RhZz4nCi0KLSAgICBUZXN0IHRhZyBzdXBwcmVzc2lvbgotICAgID4+PiBlbGVtLnRhZyA9IE5vbmUKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJ3RleHQ8c3VidGFnPnN1YnRleHQ8L3N1YnRhZz4nCi0gICAgPj4+IGVsZW0uaW5zZXJ0KDAsIEVULkNvbW1lbnQoImNvbW1lbnQiKSkKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICAgICAjIGFzc3VtZXMgMS4zCi0gICAgJ3RleHQ8IS0tY29tbWVudC0tPjxzdWJ0YWc+c3VidGV4dDwvc3VidGFnPicKLSAgICA+Pj4gZWxlbVswXSA9IEVULlBJKCJrZXkiLCAidmFsdWUiKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAndGV4dDw/a2V5IHZhbHVlPz48c3VidGFnPnN1YnRleHQ8L3N1YnRhZz4nCi0gICAgIiIiCi0KLWRlZiBjdXN0b21fYnVpbGRlcigpOgotICAgICIiIgotICAgIFRlc3QgcGFyc2VyIHcuIGN1c3RvbSBidWlsZGVyLgotCi0gICAgPj4+IHdpdGggb3BlbihTSU1QTEVfWE1MRklMRSkgYXMgZjoKLSAgICAuLi4gICAgIGRhdGEgPSBmLnJlYWQoKQotICAgID4+PiBjbGFzcyBCdWlsZGVyOgotICAgIC4uLiAgICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cmliKToKLSAgICAuLi4gICAgICAgICBwcmludCAic3RhcnQiLCB0YWcKLSAgICAuLi4gICAgIGRlZiBlbmQoc2VsZiwgdGFnKToKLSAgICAuLi4gICAgICAgICBwcmludCAiZW5kIiwgdGFnCi0gICAgLi4uICAgICBkZWYgZGF0YShzZWxmLCB0ZXh0KToKLSAgICAuLi4gICAgICAgICBwYXNzCi0gICAgPj4+IGJ1aWxkZXIgPSBCdWlsZGVyKCkKLSAgICA+Pj4gcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1idWlsZGVyKQotICAgID4+PiBwYXJzZXIuZmVlZChkYXRhKQotICAgIHN0YXJ0IHJvb3QKLSAgICBzdGFydCBlbGVtZW50Ci0gICAgZW5kIGVsZW1lbnQKLSAgICBzdGFydCBlbGVtZW50Ci0gICAgZW5kIGVsZW1lbnQKLSAgICBzdGFydCBlbXB0eS1lbGVtZW50Ci0gICAgZW5kIGVtcHR5LWVsZW1lbnQKLSAgICBlbmQgcm9vdAotCi0gICAgPj4+IHdpdGggb3BlbihTSU1QTEVfTlNfWE1MRklMRSkgYXMgZjoKLSAgICAuLi4gICAgIGRhdGEgPSBmLnJlYWQoKQotICAgID4+PiBjbGFzcyBCdWlsZGVyOgotICAgIC4uLiAgICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cmliKToKLSAgICAuLi4gICAgICAgICBwcmludCAic3RhcnQiLCB0YWcKLSAgICAuLi4gICAgIGRlZiBlbmQoc2VsZiwgdGFnKToKLSAgICAuLi4gICAgICAgICBwcmludCAiZW5kIiwgdGFnCi0gICAgLi4uICAgICBkZWYgZGF0YShzZWxmLCB0ZXh0KToKLSAgICAuLi4gICAgICAgICBwYXNzCi0gICAgLi4uICAgICBkZWYgcGkoc2VsZiwgdGFyZ2V0LCBkYXRhKToKLSAgICAuLi4gICAgICAgICBwcmludCAicGkiLCB0YXJnZXQsIHJlcHIoZGF0YSkKLSAgICAuLi4gICAgIGRlZiBjb21tZW50KHNlbGYsIGRhdGEpOgotICAgIC4uLiAgICAgICAgIHByaW50ICJjb21tZW50IiwgcmVwcihkYXRhKQotICAgID4+PiBidWlsZGVyID0gQnVpbGRlcigpCi0gICAgPj4+IHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9YnVpbGRlcikKLSAgICA+Pj4gcGFyc2VyLmZlZWQoZGF0YSkKLSAgICBwaSBwaSAnZGF0YScKLSAgICBjb21tZW50ICcgY29tbWVudCAnCi0gICAgc3RhcnQge25hbWVzcGFjZX1yb290Ci0gICAgc3RhcnQge25hbWVzcGFjZX1lbGVtZW50Ci0gICAgZW5kIHtuYW1lc3BhY2V9ZWxlbWVudAotICAgIHN0YXJ0IHtuYW1lc3BhY2V9ZWxlbWVudAotICAgIGVuZCB7bmFtZXNwYWNlfWVsZW1lbnQKLSAgICBzdGFydCB7bmFtZXNwYWNlfWVtcHR5LWVsZW1lbnQKLSAgICBlbmQge25hbWVzcGFjZX1lbXB0eS1lbGVtZW50Ci0gICAgZW5kIHtuYW1lc3BhY2V9cm9vdAotCi0gICAgIiIiCi0KLWRlZiBnZXRjaGlsZHJlbigpOgotICAgICIiIgotICAgIFRlc3QgRWxlbWVudC5nZXRjaGlsZHJlbigpCi0KLSAgICA+Pj4gd2l0aCBvcGVuKFNJTVBMRV9YTUxGSUxFLCAiciIpIGFzIGY6Ci0gICAgLi4uICAgICB0cmVlID0gRVQucGFyc2UoZikKLSAgICA+Pj4gZm9yIGVsZW0gaW4gdHJlZS5nZXRyb290KCkuaXRlcigpOgotICAgIC4uLiAgICAgc3VtbWFyaXplX2xpc3QoZWxlbS5nZXRjaGlsZHJlbigpKQotICAgIFsnZWxlbWVudCcsICdlbGVtZW50JywgJ2VtcHR5LWVsZW1lbnQnXQotICAgIFtdCi0gICAgW10KLSAgICBbXQotICAgID4+PiBmb3IgZWxlbSBpbiB0cmVlLmdldGl0ZXJhdG9yKCk6Ci0gICAgLi4uICAgICBzdW1tYXJpemVfbGlzdChlbGVtLmdldGNoaWxkcmVuKCkpCi0gICAgWydlbGVtZW50JywgJ2VsZW1lbnQnLCAnZW1wdHktZWxlbWVudCddCi0gICAgW10KLSAgICBbXQotICAgIFtdCi0KLSAgICA+Pj4gZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQotICAgID4+PiBsZW4oZWxlbS5nZXRjaGlsZHJlbigpKQotICAgIDMKLSAgICA+Pj4gbGVuKGVsZW1bMl0uZ2V0Y2hpbGRyZW4oKSkKLSAgICAxCi0gICAgPj4+IGVsZW1bOl0gPT0gZWxlbS5nZXRjaGlsZHJlbigpCi0gICAgVHJ1ZQotICAgID4+PiBjaGlsZDEgPSBlbGVtWzBdCi0gICAgPj4+IGNoaWxkMiA9IGVsZW1bMl0KLSAgICA+Pj4gZGVsIGVsZW1bMToyXQotICAgID4+PiBsZW4oZWxlbS5nZXRjaGlsZHJlbigpKQotICAgIDIKLSAgICA+Pj4gY2hpbGQxID09IGVsZW1bMF0KLSAgICBUcnVlCi0gICAgPj4+IGNoaWxkMiA9PSBlbGVtWzFdCi0gICAgVHJ1ZQotICAgID4+PiBlbGVtWzA6Ml0gPSBbY2hpbGQyLCBjaGlsZDFdCi0gICAgPj4+IGNoaWxkMiA9PSBlbGVtWzBdCi0gICAgVHJ1ZQotICAgID4+PiBjaGlsZDEgPT0gZWxlbVsxXQotICAgIFRydWUKLSAgICA+Pj4gY2hpbGQxID09IGVsZW1bMF0KLSAgICBGYWxzZQotICAgID4+PiBlbGVtLmNsZWFyKCkKLSAgICA+Pj4gZWxlbS5nZXRjaGlsZHJlbigpCi0gICAgW10KLSAgICAiIiIKLQotZGVmIHdyaXRlc3RyaW5nKCk6Ci0gICAgIiIiCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCi0gICAgPj4+IEVULnRvc3RyaW5nKGVsZW0pCi0gICAgJzxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPicKLSAgICA+Pj4gZWxlbSA9IEVULmZyb21zdHJpbmcoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCi0gICAgPj4+IEVULnRvc3RyaW5nKGVsZW0pCi0gICAgJzxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPicKLSAgICAiIiIKLQotZGVmIGNoZWNrX2VuY29kaW5nKGVuY29kaW5nKToKLSAgICAiIiIKLSAgICA+Pj4gY2hlY2tfZW5jb2RpbmcoImFzY2lpIikKLSAgICA+Pj4gY2hlY2tfZW5jb2RpbmcoInVzLWFzY2lpIikKLSAgICA+Pj4gY2hlY2tfZW5jb2RpbmcoImlzby04ODU5LTEiKQotICAgID4+PiBjaGVja19lbmNvZGluZygiaXNvLTg4NTktMTUiKQotICAgID4+PiBjaGVja19lbmNvZGluZygiY3A0MzciKQotICAgID4+PiBjaGVja19lbmNvZGluZygibWFjLXJvbWFuIikKLSAgICA+Pj4gY2hlY2tfZW5jb2RpbmcoImdiayIpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIFZhbHVlRXJyb3I6IG11bHRpLWJ5dGUgZW5jb2RpbmdzIGFyZSBub3Qgc3VwcG9ydGVkCi0gICAgPj4+IGNoZWNrX2VuY29kaW5nKCJjcDAzNyIpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIFBhcnNlRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6IGxpbmUgMSwgY29sdW1uIDMwCi0gICAgIiIiCi0gICAgRVQuWE1MKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/Pjx4bWwgLz4iICUgZW5jb2RpbmcpCi0KLWRlZiBlbmNvZGluZygpOgotICAgIHIiIiIKLSAgICBUZXN0IGVuY29kaW5nIGlzc3Vlcy4KLQotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKLSAgICA+Pj4gZWxlbS50ZXh0ID0gdSJhYmMiCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKQotICAgICc8dGFnPmFiYzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgJzx0YWc+YWJjPC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikKLSAgICAnPHRhZz5hYmM8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpCi0gICAgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz5cbjx0YWc+YWJjPC90YWc+IgotCi0gICAgPj4+IGVsZW0udGV4dCA9ICI8JlwiXCc+IgotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICAnPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikgIyBjZGF0YSBjaGFyYWN0ZXJzCi0gICAgJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICAnPD94bWwgdmVyc2lvbj1cJzEuMFwnIGVuY29kaW5nPVwnaXNvLTg4NTktMVwnPz5cbjx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicKLQotICAgID4+PiBlbGVtLmF0dHJpYlsia2V5Il0gPSAiPCZcIlwnPiIKLSAgICA+Pj4gZWxlbS50ZXh0ID0gTm9uZQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgICc8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpCi0gICAgJzx0YWcga2V5PSImbHQ7JmFtcDsmcXVvdDtcJyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgICc8P3htbCB2ZXJzaW9uPVwnMS4wXCcgZW5jb2Rpbmc9XCdpc28tODg1OS0xXCc/PlxuPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nCi0KLSAgICA+Pj4gZWxlbS50ZXh0ID0gdSdceGU1XHhmNlx4ZjY8PicKLSAgICA+Pj4gZWxlbS5hdHRyaWIuY2xlYXIoKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkKLSAgICAnPHRhZz4mIzIyOTsmIzI0NjsmIzI0NjsmbHQ7Jmd0OzwvdGFnPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpCi0gICAgJzx0YWc+XHhjM1x4YTVceGMzXHhiNlx4YzNceGI2Jmx0OyZndDs8L3RhZz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKQotICAgICc8dGFnPiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7PC90YWc+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKQotICAgICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+XG48dGFnPlx4ZTVceGY2XHhmNiZsdDsmZ3Q7PC90YWc+IgotCi0gICAgPj4+IGVsZW0uYXR0cmliWyJrZXkiXSA9IHUnXHhlNVx4ZjZceGY2PD4nCi0gICAgPj4+IGVsZW0udGV4dCA9IE5vbmUKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pCi0gICAgJzx0YWcga2V5PSImIzIyOTsmIzI0NjsmIzI0NjsmbHQ7Jmd0OyIgLz4nCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKQotICAgICc8dGFnIGtleT0iXHhjM1x4YTVceGMzXHhiNlx4YzNceGI2Jmx0OyZndDsiIC8+JwotICAgID4+PiBzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIikKLSAgICAnPHRhZyBrZXk9IiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7IiAvPicKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIikKLSAgICAnPD94bWwgdmVyc2lvbj1cJzEuMFwnIGVuY29kaW5nPVwnaXNvLTg4NTktMVwnPz5cbjx0YWcga2V5PSJceGU1XHhmNlx4ZjYmbHQ7Jmd0OyIgLz4nCi0gICAgIiIiCi0KLWRlZiBtZXRob2RzKCk6Ci0gICAgciIiIgotICAgIFRlc3Qgc2VyaWFsaXphdGlvbiBtZXRob2RzLgotCi0gICAgPj4+IGUgPSBFVC5YTUwoIjxodG1sPjxsaW5rLz48c2NyaXB0PjEgJmx0OyAyPC9zY3JpcHQ+PC9odG1sPiIpCi0gICAgPj4+IGUudGFpbCA9ICJcbiIKLSAgICA+Pj4gc2VyaWFsaXplKGUpCi0gICAgJzxodG1sPjxsaW5rIC8+PHNjcmlwdD4xICZsdDsgMjwvc2NyaXB0PjwvaHRtbD5cbicKLSAgICA+Pj4gc2VyaWFsaXplKGUsIG1ldGhvZD1Ob25lKQotICAgICc8aHRtbD48bGluayAvPjxzY3JpcHQ+MSAmbHQ7IDI8L3NjcmlwdD48L2h0bWw+XG4nCi0gICAgPj4+IHNlcmlhbGl6ZShlLCBtZXRob2Q9InhtbCIpCi0gICAgJzxodG1sPjxsaW5rIC8+PHNjcmlwdD4xICZsdDsgMjwvc2NyaXB0PjwvaHRtbD5cbicKLSAgICA+Pj4gc2VyaWFsaXplKGUsIG1ldGhvZD0iaHRtbCIpCi0gICAgJzxodG1sPjxsaW5rPjxzY3JpcHQ+MSA8IDI8L3NjcmlwdD48L2h0bWw+XG4nCi0gICAgPj4+IHNlcmlhbGl6ZShlLCBtZXRob2Q9InRleHQiKQotICAgICcxIDwgMlxuJwotICAgICIiIgotCi1kZWYgaXRlcmF0b3JzKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBpdGVyYXRvcnMuCi0KLSAgICA+Pj4gZSA9IEVULlhNTCgiPGh0bWw+PGJvZHk+dGhpcyBpcyBhIDxpPnBhcmFncmFwaDwvaT4uPC9ib2R5Pi4uPC9odG1sPiIpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGUuaXRlcigpKQotICAgIFsnaHRtbCcsICdib2R5JywgJ2knXQotICAgID4+PiBzdW1tYXJpemVfbGlzdChlLmZpbmQoImJvZHkiKS5pdGVyKCkpCi0gICAgWydib2R5JywgJ2knXQotICAgID4+PiBzdW1tYXJpemUobmV4dChlLml0ZXIoKSkpCi0gICAgJ2h0bWwnCi0gICAgPj4+ICIiLmpvaW4oZS5pdGVydGV4dCgpKQotICAgICd0aGlzIGlzIGEgcGFyYWdyYXBoLi4uJwotICAgID4+PiAiIi5qb2luKGUuZmluZCgiYm9keSIpLml0ZXJ0ZXh0KCkpCi0gICAgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguJwotICAgID4+PiBuZXh0KGUuaXRlcnRleHQoKSkKLSAgICAndGhpcyBpcyBhICcKLQotICAgIE1ldGhvZCBpdGVycGFyc2Ugc2hvdWxkIHJldHVybiBhbiBpdGVyYXRvci4gU2VlIGJ1ZyA2NDcyLgotCi0gICAgPj4+IHNvdXJjZWZpbGUgPSBzZXJpYWxpemUoZSwgdG9fc3RyaW5nPUZhbHNlKQotICAgID4+PiBuZXh0KEVULml0ZXJwYXJzZShzb3VyY2VmaWxlKSkgICMgZG9jdGVzdDogK0VMTElQU0lTCi0gICAgKCdlbmQnLCA8RWxlbWVudCAnaScgYXQgMHguLi4+KQotCi0gICAgPj4+IHRyZWUgPSBFVC5FbGVtZW50VHJlZShOb25lKQotICAgID4+PiB0cmVlLml0ZXIoKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBBdHRyaWJ1dGVFcnJvcjogJ05vbmVUeXBlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnaXRlcicKLSAgICAiIiIKKzxmOnRhYmxlIHhtbG5zOmY9ImZvbyI+CisgIDxmOm5hbWU+QWZyaWNhbiBDb2ZmZWUgVGFibGU8L2Y6bmFtZT4KKyAgPGY6d2lkdGg+ODA8L2Y6d2lkdGg+CisgIDxmOmxlbmd0aD4xMjA8L2Y6bGVuZ3RoPgorPC9mOnRhYmxlPgorPC9yb290PgorIiIiCiAKIEVOVElUWV9YTUwgPSAiIiJcCiA8IURPQ1RZUEUgcG9pbnRzIFsKQEAgLTEwMTQsMjQ2ICs4Nyw5MjEgQEAKIDxkb2N1bWVudD4mZW50aXR5OzwvZG9jdW1lbnQ+CiAiIiIKIAotZGVmIGVudGl0eSgpOgotICAgICIiIgotICAgIFRlc3QgZW50aXR5IGhhbmRsaW5nLgogCi0gICAgMSkgZ29vZCBlbnRpdGllcworZGVmIGNoZWNrd2FybmluZ3MoKmZpbHRlcnMpOgorICAgIGRlZiBkZWNvcmF0b3IodGVzdCk6CisgICAgICAgIGRlZiBuZXd0ZXN0KCphcmdzLCAqKmt3YXJncyk6CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKmZpbHRlcnMpOgorICAgICAgICAgICAgICAgIHRlc3QoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBmdW5jdG9vbHMudXBkYXRlX3dyYXBwZXIobmV3dGVzdCwgdGVzdCkKKyAgICAgICAgcmV0dXJuIG5ld3Rlc3QKKyAgICByZXR1cm4gZGVjb3JhdG9yCiAKLSAgICA+Pj4gZSA9IEVULlhNTCgiPGRvY3VtZW50IHRpdGxlPScmI3g4MjMwOyc+dGVzdDwvZG9jdW1lbnQ+IikKLSAgICA+Pj4gc2VyaWFsaXplKGUpCi0gICAgJzxkb2N1bWVudCB0aXRsZT0iJiMzMzMyODsiPnRlc3Q8L2RvY3VtZW50PicKIAotICAgIDIpIGJhZCBlbnRpdGllcworY2xhc3MgTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBUT0RPOiB0aGlzIHNob3VsZCBiZSByZW1vdmVkIG9uY2Ugd2UgZ2V0IHJpZCBvZiB0aGUgZ2xvYmFsIG1vZHVsZSB2YXJzCiAKLSAgICA+Pj4gRVQuWE1MKCI8ZG9jdW1lbnQ+JmVudGl0eTs8L2RvY3VtZW50PiIpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIFBhcnNlRXJyb3I6IHVuZGVmaW5lZCBlbnRpdHk6IGxpbmUgMSwgY29sdW1uIDEwCisgICAgZGVmIHRlc3Rfc2FuaXR5KHNlbGYpOgorICAgICAgICAjIEltcG9ydCBzYW5pdHkuCiAKLSAgICA+Pj4gRVQuWE1MKEVOVElUWV9YTUwpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIFBhcnNlRXJyb3I6IHVuZGVmaW5lZCBlbnRpdHkgJmVudGl0eTs6IGxpbmUgNSwgY29sdW1uIDEwCisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZQorICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCiAKLSAgICAzKSBjdXN0b20gZW50aXR5CiAKLSAgICA+Pj4gcGFyc2VyID0gRVQuWE1MUGFyc2VyKCkKLSAgICA+Pj4gcGFyc2VyLmVudGl0eVsiZW50aXR5Il0gPSAidGV4dCIKLSAgICA+Pj4gcGFyc2VyLmZlZWQoRU5USVRZX1hNTCkKLSAgICA+Pj4gcm9vdCA9IHBhcnNlci5jbG9zZSgpCi0gICAgPj4+IHNlcmlhbGl6ZShyb290KQotICAgICc8ZG9jdW1lbnQ+dGV4dDwvZG9jdW1lbnQ+JwotICAgICIiIgorZGVmIHNlcmlhbGl6ZShlbGVtLCB0b19zdHJpbmc9VHJ1ZSwgKipvcHRpb25zKToKKyAgICBmaWxlID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgIHRyZWUgPSBFVC5FbGVtZW50VHJlZShlbGVtKQorICAgIHRyZWUud3JpdGUoZmlsZSwgKipvcHRpb25zKQorICAgIGlmIHRvX3N0cmluZzoKKyAgICAgICAgcmV0dXJuIGZpbGUuZ2V0dmFsdWUoKQorICAgIGVsc2U6CisgICAgICAgIGZpbGUuc2VlaygwKQorICAgICAgICByZXR1cm4gZmlsZQogCi1kZWYgZXJyb3IoeG1sKToKLSAgICAiIiIKK2RlZiBzdW1tYXJpemVfbGlzdChzZXEpOgorICAgIHJldHVybiBbZWxlbS50YWcgZm9yIGVsZW0gaW4gc2VxXQogCi0gICAgVGVzdCBlcnJvciBoYW5kbGluZy4KK2RlZiBub3JtYWxpemVfY3JsZih0cmVlKToKKyAgICBmb3IgZWxlbSBpbiB0cmVlLml0ZXIoKToKKyAgICAgICAgaWYgZWxlbS50ZXh0OgorICAgICAgICAgICAgZWxlbS50ZXh0ID0gZWxlbS50ZXh0LnJlcGxhY2UoIlxyXG4iLCAiXG4iKQorICAgICAgICBpZiBlbGVtLnRhaWw6CisgICAgICAgICAgICBlbGVtLnRhaWwgPSBlbGVtLnRhaWwucmVwbGFjZSgiXHJcbiIsICJcbiIpCiAKLSAgICA+Pj4gaXNzdWJjbGFzcyhFVC5QYXJzZUVycm9yLCBTeW50YXhFcnJvcikKLSAgICBUcnVlCi0gICAgPj4+IGVycm9yKCJmb28iKS5wb3NpdGlvbgotICAgICgxLCAwKQotICAgID4+PiBlcnJvcigiPHRhZz4mZm9vOzwvdGFnPiIpLnBvc2l0aW9uCi0gICAgKDEsIDUpCi0gICAgPj4+IGVycm9yKCJmb29iYXI8IikucG9zaXRpb24KLSAgICAoMSwgNikKK2RlZiBweXRob25fb25seSh0ZXN0KToKKyAgICBkZWYgd3JhcHBlcigqYXJncyk6CisgICAgICAgIGlmIEVUIGlzIG5vdCBweUVUOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ29ubHkgZm9yIHRoZSBQeXRob24gdmVyc2lvbicpCisgICAgICAgIHJldHVybiB0ZXN0KCphcmdzKQorICAgIHJldHVybiB3cmFwcGVyCiAKLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIEVULlhNTCh4bWwpCi0gICAgZXhjZXB0IEVULlBhcnNlRXJyb3I6Ci0gICAgICAgIHJldHVybiBzeXMuZXhjX3ZhbHVlCitkZWYgY2V0X29ubHkodGVzdCk6CisgICAgZGVmIHdyYXBwZXIoKmFyZ3MpOgorICAgICAgICBpZiBFVCBpcyBweUVUOgorICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ29ubHkgZm9yIHRoZSBDIHZlcnNpb24nKQorICAgICAgICByZXR1cm4gdGVzdCgqYXJncykKKyAgICByZXR1cm4gd3JhcHBlcgogCi1kZWYgbmFtZXNwYWNlKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBuYW1lc3BhY2UgaXNzdWVzLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBlbGVtZW50IHRyZWUgdGVzdHMKIAotICAgIDEpIHhtbCBuYW1lc3BhY2UKK2NsYXNzIEVsZW1lbnRUcmVlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICA+Pj4gZWxlbSA9IEVULlhNTCgiPHRhZyB4bWw6bGFuZz0nZW4nIC8+IikKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMS4xCi0gICAgJzx0YWcgeG1sOmxhbmc9ImVuIiAvPicKKyAgICBkZWYgc2VyaWFsaXplX2NoZWNrKHNlbGYsIGVsZW0sIGV4cGVjdGVkKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSksIGV4cGVjdGVkKQogCi0gICAgMikgb3RoZXIgIndlbGwta25vd24iIG5hbWVzcGFjZXMKKyAgICBkZWYgdGVzdF9pbnRlcmZhY2Uoc2VsZik6CisgICAgICAgICMgVGVzdCBlbGVtZW50IHRyZWUgaW50ZXJmYWNlLgogCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoIjxyZGY6UkRGIHhtbG5zOnJkZj0naHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIycgLz4iKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAyLjEKLSAgICAnPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIiAvPicKKyAgICAgICAgZGVmIGNoZWNrX3N0cmluZyhzdHJpbmcpOgorICAgICAgICAgICAgbGVuKHN0cmluZykKKyAgICAgICAgICAgIGZvciBjaGFyIGluIHN0cmluZzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjaGFyKSwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0iZXhwZWN0ZWQgb25lLWNoYXJhY3RlciBzdHJpbmcsIGdvdCAlciIgJSBjaGFyKQorICAgICAgICAgICAgbmV3X3N0cmluZyA9IHN0cmluZyArICIiCisgICAgICAgICAgICBuZXdfc3RyaW5nID0gc3RyaW5nICsgIiAiCisgICAgICAgICAgICBzdHJpbmdbOjBdCiAKLSAgICA+Pj4gZWxlbSA9IEVULlhNTCgiPGh0bWw6aHRtbCB4bWxuczpodG1sPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyAvPiIpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDIuMgotICAgICc8aHRtbDpodG1sIHhtbG5zOmh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIC8+JworICAgICAgICBkZWYgY2hlY2tfbWFwcGluZyhtYXBwaW5nKToKKyAgICAgICAgICAgIGxlbihtYXBwaW5nKQorICAgICAgICAgICAga2V5cyA9IG1hcHBpbmcua2V5cygpCisgICAgICAgICAgICBpdGVtcyA9IG1hcHBpbmcuaXRlbXMoKQorICAgICAgICAgICAgZm9yIGtleSBpbiBrZXlzOgorICAgICAgICAgICAgICAgIGl0ZW0gPSBtYXBwaW5nW2tleV0KKyAgICAgICAgICAgIG1hcHBpbmdbImtleSJdID0gInZhbHVlIgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXBwaW5nWyJrZXkiXSwgInZhbHVlIiwKKyAgICAgICAgICAgICAgICAgICAgbXNnPSJleHBlY3RlZCB2YWx1ZSBzdHJpbmcsIGdvdCAlciIgJSBtYXBwaW5nWyJrZXkiXSkKIAotICAgID4+PiBlbGVtID0gRVQuWE1MKCI8c29hcDpFbnZlbG9wZSB4bWxuczpzb2FwPSdodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlJyAvPiIpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDIuMwotICAgICc8bnMwOkVudmVsb3BlIHhtbG5zOm5zMD0iaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvc29hcC9lbnZlbG9wZSIgLz4nCisgICAgICAgIGRlZiBjaGVja19lbGVtZW50KGVsZW1lbnQpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEVULmlzZWxlbWVudChlbGVtZW50KSwgbXNnPSJub3QgYW4gZWxlbWVudCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGFnIiksIG1zZz0ibm8gdGFnIG1lbWJlciIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAiYXR0cmliIiksIG1zZz0ibm8gYXR0cmliIG1lbWJlciIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGV4dCIpLCBtc2c9Im5vIHRleHQgbWVtYmVyIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVsZW1lbnQsICJ0YWlsIiksIG1zZz0ibm8gdGFpbCBtZW1iZXIiKQogCi0gICAgMykgdW5rbm93biBuYW1lc3BhY2VzCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoU0FNUExFX1hNTF9OUykKLSAgICA+Pj4gcHJpbnQgc2VyaWFsaXplKGVsZW0pCi0gICAgPG5zMDpib2R5IHhtbG5zOm5zMD0iaHR0cDovL2VmZmJvdC5vcmcvbnMiPgotICAgICAgPG5zMDp0YWc+dGV4dDwvbnMwOnRhZz4KLSAgICAgIDxuczA6dGFnIC8+Ci0gICAgICA8bnMwOnNlY3Rpb24+Ci0gICAgICAgIDxuczA6dGFnPnN1YnRleHQ8L25zMDp0YWc+Ci0gICAgICA8L25zMDpzZWN0aW9uPgotICAgIDwvbnMwOmJvZHk+Ci0gICAgIiIiCisgICAgICAgICAgICBjaGVja19zdHJpbmcoZWxlbWVudC50YWcpCisgICAgICAgICAgICBjaGVja19tYXBwaW5nKGVsZW1lbnQuYXR0cmliKQorICAgICAgICAgICAgaWYgZWxlbWVudC50ZXh0IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGNoZWNrX3N0cmluZyhlbGVtZW50LnRleHQpCisgICAgICAgICAgICBpZiBlbGVtZW50LnRhaWwgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgY2hlY2tfc3RyaW5nKGVsZW1lbnQudGFpbCkKKyAgICAgICAgICAgIGZvciBlbGVtIGluIGVsZW1lbnQ6CisgICAgICAgICAgICAgICAgY2hlY2tfZWxlbWVudChlbGVtKQogCi1kZWYgcW5hbWUoKToKLSAgICAiIiIKLSAgICBUZXN0IFFOYW1lIGhhbmRsaW5nLgorICAgICAgICBlbGVtZW50ID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgY2hlY2tfZWxlbWVudChlbGVtZW50KQorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoZWxlbWVudCkKKyAgICAgICAgY2hlY2tfZWxlbWVudCh0cmVlLmdldHJvb3QoKSkKKyAgICAgICAgZWxlbWVudCA9IEVULkVsZW1lbnQoInRceGU0ZyIsIGtleT0idmFsdWUiKQorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoZWxlbWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHJlcHIoZWxlbWVudCksIHIiXjxFbGVtZW50ICd0XFx4ZTRnJyBhdCAweC4qPiQiKQorICAgICAgICBlbGVtZW50ID0gRVQuRWxlbWVudCgidGFnIiwga2V5PSJ2YWx1ZSIpCiAKLSAgICAxKSBkZWNvcmF0ZWQgdGFncworICAgICAgICAjIE1ha2Ugc3VyZSBhbGwgc3RhbmRhcmQgZWxlbWVudCBtZXRob2RzIGV4aXN0LgogCi0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJ7dXJpfXRhZyIpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDEuMQotICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgLz4nCi0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KEVULlFOYW1lKCJ7dXJpfXRhZyIpKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAxLjIKLSAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIC8+JwotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudChFVC5RTmFtZSgidXJpIiwgInRhZyIpKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAxLjMKLSAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIC8+JwotICAgID4+PiBlbGVtID0gRVQuRWxlbWVudChFVC5RTmFtZSgidXJpIiwgInRhZyIpKQotICAgID4+PiBzdWJlbGVtID0gRVQuU3ViRWxlbWVudChlbGVtLCBFVC5RTmFtZSgidXJpIiwgInRhZzEiKSkKLSAgICA+Pj4gc3ViZWxlbSA9IEVULlN1YkVsZW1lbnQoZWxlbSwgRVQuUU5hbWUoInVyaSIsICJ0YWcyIikpCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDEuNAotICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSI+PG5zMDp0YWcxIC8+PG5zMDp0YWcyIC8+PC9uczA6dGFnPicKKyAgICAgICAgZGVmIGNoZWNrX21ldGhvZChtZXRob2QpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobWV0aG9kLCAnX19jYWxsX18nKSwKKyAgICAgICAgICAgICAgICAgICAgbXNnPSIlcyBub3QgY2FsbGFibGUiICUgbWV0aG9kKQogCi0gICAgMikgZGVjb3JhdGVkIGF0dHJpYnV0ZXMKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQuYXBwZW5kKQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5leHRlbmQpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50Lmluc2VydCkKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQucmVtb3ZlKQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5nZXRjaGlsZHJlbikKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQuZmluZCkKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQuaXRlcmZpbmQpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50LmZpbmRhbGwpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50LmZpbmR0ZXh0KQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5jbGVhcikKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQuZ2V0KQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5zZXQpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50LmtleXMpCisgICAgICAgIGNoZWNrX21ldGhvZChlbGVtZW50Lml0ZW1zKQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5pdGVyKQorICAgICAgICBjaGVja19tZXRob2QoZWxlbWVudC5pdGVydGV4dCkKKyAgICAgICAgY2hlY2tfbWV0aG9kKGVsZW1lbnQuZ2V0aXRlcmF0b3IpCiAKLSAgICA+Pj4gZWxlbS5jbGVhcigpCi0gICAgPj4+IGVsZW0uYXR0cmliWyJ7dXJpfWtleSJdID0gInZhbHVlIgotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAyLjEKLSAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIG5zMDprZXk9InZhbHVlIiAvPicKKyAgICAgICAgIyBUaGVzZSBtZXRob2RzIHJldHVybiBhbiBpdGVyYWJsZS4gU2VlIGJ1ZyA2NDcyLgogCi0gICAgPj4+IGVsZW0uY2xlYXIoKQotICAgID4+PiBlbGVtLmF0dHJpYltFVC5RTmFtZSgie3VyaX1rZXkiKV0gPSAidmFsdWUiCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIDIuMgotICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgbnMwOmtleT0idmFsdWUiIC8+JworICAgICAgICBkZWYgY2hlY2tfaXRlcihpdCk6CisgICAgICAgICAgICBjaGVja19tZXRob2QoaXQubmV4dCkKIAotICAgIDMpIGRlY29yYXRlZCB2YWx1ZXMgYXJlIG5vdCBjb252ZXJ0ZWQgYnkgZGVmYXVsdCwgYnV0IHRoZQotICAgICAgIFFOYW1lIHdyYXBwZXIgY2FuIGJlIHVzZWQgZm9yIHZhbHVlcworICAgICAgICBjaGVja19pdGVyKGVsZW1lbnQuaXRlcigidGFnIikpCisgICAgICAgIGNoZWNrX2l0ZXIoZWxlbWVudC5pdGVyZmluZCgidGFnIikpCisgICAgICAgIGNoZWNrX2l0ZXIoZWxlbWVudC5pdGVyZmluZCgiKiIpKQorICAgICAgICBjaGVja19pdGVyKHRyZWUuaXRlcigidGFnIikpCisgICAgICAgIGNoZWNrX2l0ZXIodHJlZS5pdGVyZmluZCgidGFnIikpCisgICAgICAgIGNoZWNrX2l0ZXIodHJlZS5pdGVyZmluZCgiKiIpKQogCi0gICAgPj4+IGVsZW0uY2xlYXIoKQotICAgID4+PiBlbGVtLmF0dHJpYlsie3VyaX1rZXkiXSA9ICJ7dXJpfXZhbHVlIgotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAzLjEKLSAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIG5zMDprZXk9Int1cml9dmFsdWUiIC8+JworICAgICAgICAjIFRoZXNlIGFsaWFzZXMgYXJlIHByb3ZpZGVkOgogCi0gICAgPj4+IGVsZW0uY2xlYXIoKQotICAgID4+PiBlbGVtLmF0dHJpYlsie3VyaX1rZXkiXSA9IEVULlFOYW1lKCJ7dXJpfXZhbHVlIikKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgMy4yCi0gICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiBuczA6a2V5PSJuczA6dmFsdWUiIC8+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULlhNTCwgRVQuZnJvbXN0cmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5QSSwgRVQuUHJvY2Vzc2luZ0luc3RydWN0aW9uKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULlhNTFBhcnNlciwgRVQuWE1MVHJlZUJ1aWxkZXIpCiAKLSAgICA+Pj4gZWxlbS5jbGVhcigpCi0gICAgPj4+IHN1YmVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQotICAgID4+PiBzdWJlbGVtLmF0dHJpYlsie3VyaTF9a2V5Il0gPSBFVC5RTmFtZSgie3VyaTJ9dmFsdWUiKQotICAgID4+PiBlbGVtLmFwcGVuZChzdWJlbGVtKQotICAgID4+PiBlbGVtLmFwcGVuZChzdWJlbGVtKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyAzLjMKLSAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIHhtbG5zOm5zMT0idXJpMSIgeG1sbnM6bnMyPSJ1cmkyIj48dGFnIG5zMTprZXk9Im5zMjp2YWx1ZSIgLz48dGFnIG5zMTprZXk9Im5zMjp2YWx1ZSIgLz48L25zMDp0YWc+JworICAgIGRlZiB0ZXN0X3NldF9hdHRyaWJ1dGUoc2VsZik6CisgICAgICAgIGVsZW1lbnQgPSBFVC5FbGVtZW50KCd0YWcnKQogCi0gICAgNCkgRGlyZWN0IFFOYW1lIHRlc3RzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbWVudC50YWcsICd0YWcnKQorICAgICAgICBlbGVtZW50LnRhZyA9ICdUYWcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbWVudC50YWcsICdUYWcnKQorICAgICAgICBlbGVtZW50LnRhZyA9ICdUQUcnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbWVudC50YWcsICdUQUcnKQogCi0gICAgPj4+IHN0cihFVC5RTmFtZSgnbnMnLCAndGFnJykpCi0gICAgJ3tuc310YWcnCi0gICAgPj4+IHN0cihFVC5RTmFtZSgne25zfXRhZycpKQotICAgICd7bnN9dGFnJwotICAgID4+PiBxMSA9IEVULlFOYW1lKCducycsICd0YWcnKQotICAgID4+PiBxMiA9IEVULlFOYW1lKCducycsICd0YWcnKQotICAgID4+PiBxMSA9PSBxMgotICAgIFRydWUKLSAgICA+Pj4gcTIgPSBFVC5RTmFtZSgnbnMnLCAnb3RoZXItdGFnJykKLSAgICA+Pj4gcTEgPT0gcTIKLSAgICBGYWxzZQotICAgID4+PiBxMSA9PSAnbnM6dGFnJwotICAgIEZhbHNlCi0gICAgPj4+IHExID09ICd7bnN9dGFnJwotICAgIFRydWUKLSAgICAiIiIKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZWxlbWVudC50ZXh0KQorICAgICAgICBlbGVtZW50LnRleHQgPSAnVGV4dCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtZW50LnRleHQsICdUZXh0JykKKyAgICAgICAgZWxlbWVudC50ZXh0ID0gJ1RFWFQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbWVudC50ZXh0LCAnVEVYVCcpCiAKLWRlZiBkb2N0eXBlX3B1YmxpYygpOgotICAgICIiIgotICAgIFRlc3QgUFVCTElDIGRvY3R5cGUuCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGVsZW1lbnQudGFpbCkKKyAgICAgICAgZWxlbWVudC50YWlsID0gJ1RhaWwnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbWVudC50YWlsLCAnVGFpbCcpCisgICAgICAgIGVsZW1lbnQudGFpbCA9ICdUQUlMJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsZW1lbnQudGFpbCwgJ1RBSUwnKQogCi0gICAgPj4+IGVsZW0gPSBFVC5YTUwoJzwhRE9DVFlQRSBodG1sIFBVQkxJQycKLSAgICAuLi4gICAnICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiInCi0gICAgLi4uICAgJyAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+JwotICAgIC4uLiAgICc8aHRtbD50ZXh0PC9odG1sPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbWVudC5hdHRyaWIsIHt9KQorICAgICAgICBlbGVtZW50LmF0dHJpYiA9IHsnYSc6ICdiJywgJ2MnOiAnZCd9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbWVudC5hdHRyaWIsIHsnYSc6ICdiJywgJ2MnOiAnZCd9KQorICAgICAgICBlbGVtZW50LmF0dHJpYiA9IHsnQSc6ICdCJywgJ0MnOiAnRCd9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbWVudC5hdHRyaWIsIHsnQSc6ICdCJywgJ0MnOiAnRCd9KQogCi0gICAgIiIiCisgICAgZGVmIHRlc3Rfc2ltcGxlb3BzKHNlbGYpOgorICAgICAgICAjIEJhc2ljIG1ldGhvZCBzYW5pdHkgY2hlY2tzLgogCi1kZWYgeHBhdGhfdG9rZW5pemVyKHApOgotICAgICIiIgotICAgIFRlc3QgdGhlIFhQYXRoIHRva2VuaXplci4KKyAgICAgICAgZWxlbSA9IEVULlhNTCgiPGJvZHk+PHRhZy8+PC9ib2R5PiIpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8Ym9keT48dGFnIC8+PC9ib2R5PicpCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCJ0YWcyIikKKyAgICAgICAgZWxlbS5hcHBlbmQoZSkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwgJzxib2R5Pjx0YWcgLz48dGFnMiAvPjwvYm9keT4nKQorICAgICAgICBlbGVtLnJlbW92ZShlKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPGJvZHk+PHRhZyAvPjwvYm9keT4nKQorICAgICAgICBlbGVtLmluc2VydCgwLCBlKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPGJvZHk+PHRhZzIgLz48dGFnIC8+PC9ib2R5PicpCisgICAgICAgIGVsZW0ucmVtb3ZlKGUpCisgICAgICAgIGVsZW0uZXh0ZW5kKFtlXSkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwgJzxib2R5Pjx0YWcgLz48dGFnMiAvPjwvYm9keT4nKQorICAgICAgICBlbGVtLnJlbW92ZShlKQogCi0gICAgPj4+ICMgdGVzdHMgZnJvbSB0aGUgeG1sIHNwZWNpZmljYXRpb24KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIqIikKLSAgICBbJyonXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoInRleHQoKSIpCi0gICAgWyd0ZXh0JywgJygpJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCJAbmFtZSIpCi0gICAgWydAJywgJ25hbWUnXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIkAqIikKLSAgICBbJ0AnLCAnKiddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigicGFyYVsxXSIpCi0gICAgWydwYXJhJywgJ1snLCAnMScsICddJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCJwYXJhW2xhc3QoKV0iKQotICAgIFsncGFyYScsICdbJywgJ2xhc3QnLCAnKCknLCAnXSddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigiKi9wYXJhIikKLSAgICBbJyonLCAnLycsICdwYXJhJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIvZG9jL2NoYXB0ZXJbNV0vc2VjdGlvblsyXSIpCi0gICAgWycvJywgJ2RvYycsICcvJywgJ2NoYXB0ZXInLCAnWycsICc1JywgJ10nLCAnLycsICdzZWN0aW9uJywgJ1snLCAnMicsICddJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCJjaGFwdGVyLy9wYXJhIikKLSAgICBbJ2NoYXB0ZXInLCAnLy8nLCAncGFyYSddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigiLy9wYXJhIikKLSAgICBbJy8vJywgJ3BhcmEnXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIi8vb2xpc3QvaXRlbSIpCi0gICAgWycvLycsICdvbGlzdCcsICcvJywgJ2l0ZW0nXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIi4iKQotICAgIFsnLiddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigiLi8vcGFyYSIpCi0gICAgWycuJywgJy8vJywgJ3BhcmEnXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIi4uIikKLSAgICBbJy4uJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIuLi9AbGFuZyIpCi0gICAgWycuLicsICcvJywgJ0AnLCAnbGFuZyddCi0gICAgPj4+IHhwYXRoX3Rva2VuaXplcigiY2hhcHRlclt0aXRsZV0iKQotICAgIFsnY2hhcHRlcicsICdbJywgJ3RpdGxlJywgJ10nXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoImVtcGxveWVlW0BzZWNyZXRhcnkgYW5kIEBhc3Npc3RhbnRdIikKLSAgICBbJ2VtcGxveWVlJywgJ1snLCAnQCcsICdzZWNyZXRhcnknLCAnJywgJ2FuZCcsICcnLCAnQCcsICdhc3Npc3RhbnQnLCAnXSddCisgICAgICAgIGVsZW1lbnQgPSBFVC5FbGVtZW50KCJ0YWciLCBrZXk9InZhbHVlIikKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbWVudCwgJzx0YWcga2V5PSJ2YWx1ZSIgLz4nKSAjIDEKKyAgICAgICAgc3ViZWxlbWVudCA9IEVULkVsZW1lbnQoInN1YnRhZyIpCisgICAgICAgIGVsZW1lbnQuYXBwZW5kKHN1YmVsZW1lbnQpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW1lbnQsICc8dGFnIGtleT0idmFsdWUiPjxzdWJ0YWcgLz48L3RhZz4nKSAjIDIKKyAgICAgICAgZWxlbWVudC5pbnNlcnQoMCwgc3ViZWxlbWVudCkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbWVudCwKKyAgICAgICAgICAgICAgICAnPHRhZyBrZXk9InZhbHVlIj48c3VidGFnIC8+PHN1YnRhZyAvPjwvdGFnPicpICMgMworICAgICAgICBlbGVtZW50LnJlbW92ZShzdWJlbGVtZW50KQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtZW50LCAnPHRhZyBrZXk9InZhbHVlIj48c3VidGFnIC8+PC90YWc+JykgIyA0CisgICAgICAgIGVsZW1lbnQucmVtb3ZlKHN1YmVsZW1lbnQpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW1lbnQsICc8dGFnIGtleT0idmFsdWUiIC8+JykgIyA1CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcikgYXMgY206CisgICAgICAgICAgICBlbGVtZW50LnJlbW92ZShzdWJlbGVtZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAnbGlzdC5yZW1vdmUoeCk6IHggbm90IGluIGxpc3QnKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtZW50LCAnPHRhZyBrZXk9InZhbHVlIiAvPicpICMgNgorICAgICAgICBlbGVtZW50WzA6MF0gPSBbc3ViZWxlbWVudCwgc3ViZWxlbWVudCwgc3ViZWxlbWVudF0KKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbWVudFsxXSwgJzxzdWJ0YWcgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsZW1lbnRbMTo5XSwgW2VsZW1lbnRbMV0sIGVsZW1lbnRbMl1dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsZW1lbnRbOjk6Ml0sIFtlbGVtZW50WzBdLCBlbGVtZW50WzJdXSkKKyAgICAgICAgZGVsIGVsZW1lbnRbMToyXQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtZW50LAorICAgICAgICAgICAgICAgICc8dGFnIGtleT0idmFsdWUiPjxzdWJ0YWcgLz48c3VidGFnIC8+PC90YWc+JykKIAotICAgID4+PiAjIGFkZGl0aW9uYWwgdGVzdHMKLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCJ7aHR0cDovL3NwYW19ZWdnIikKLSAgICBbJ3todHRwOi8vc3BhbX1lZ2cnXQotICAgID4+PiB4cGF0aF90b2tlbml6ZXIoIi4vc3BhbS5lZ2ciKQotICAgIFsnLicsICcvJywgJ3NwYW0uZWdnJ10KLSAgICA+Pj4geHBhdGhfdG9rZW5pemVyKCIuLy97aHR0cDovL3NwYW19ZWdnIikKLSAgICBbJy4nLCAnLy8nLCAne2h0dHA6Ly9zcGFtfWVnZyddCi0gICAgIiIiCi0gICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCi0gICAgb3V0ID0gW10KLSAgICBmb3Igb3AsIHRhZyBpbiBFbGVtZW50UGF0aC54cGF0aF90b2tlbml6ZXIocCk6Ci0gICAgICAgIG91dC5hcHBlbmQob3Agb3IgdGFnKQotICAgIHJldHVybiBvdXQKKyAgICBkZWYgdGVzdF9jZGF0YShzZWxmKToKKyAgICAgICAgIyBUZXN0IENEQVRBIGhhbmRsaW5nIChldGMpLgogCi1kZWYgcHJvY2Vzc2luZ2luc3RydWN0aW9uKCk6Ci0gICAgIiIiCi0gICAgVGVzdCBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gZGlyZWN0bHkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soRVQuWE1MKCI8dGFnPmhlbGxvPC90YWc+IiksCisgICAgICAgICAgICAgICAgJzx0YWc+aGVsbG88L3RhZz4nKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhFVC5YTUwoIjx0YWc+JiMxMDQ7JiMxMDE7JiMxMDg7JiMxMDg7JiMxMTE7PC90YWc+IiksCisgICAgICAgICAgICAgICAgJzx0YWc+aGVsbG88L3RhZz4nKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhFVC5YTUwoIjx0YWc+PCFbQ0RBVEFbaGVsbG9dXT48L3RhZz4iKSwKKyAgICAgICAgICAgICAgICAnPHRhZz5oZWxsbzwvdGFnPicpCiAKLSAgICA+Pj4gRVQudG9zdHJpbmcoRVQuUHJvY2Vzc2luZ0luc3RydWN0aW9uKCd0ZXN0JywgJ2luc3RydWN0aW9uJykpCi0gICAgJzw/dGVzdCBpbnN0cnVjdGlvbj8+JwotICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICdpbnN0cnVjdGlvbicpKQotICAgICc8P3Rlc3QgaW5zdHJ1Y3Rpb24/PicKKyAgICBkZWYgdGVzdF9maWxlX2luaXQoc2VsZik6CisgICAgICAgIHN0cmluZ2ZpbGUgPSBTdHJpbmdJTy5TdHJpbmdJTyhTQU1QTEVfWE1MLmVuY29kZSgidXRmLTgiKSkKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKGZpbGU9c3RyaW5nZmlsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmZpbmQoInRhZyIpLnRhZywgJ3RhZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJlZS5maW5kKCJzZWN0aW9uL3RhZyIpLnRhZywgJ3RhZycpCiAKLSAgICBJc3N1ZSAjMjc0NgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoZmlsZT1TSU1QTEVfWE1MRklMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmZpbmQoImVsZW1lbnQiKS50YWcsICdlbGVtZW50JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmZpbmQoImVsZW1lbnQvLi4vZW1wdHktZWxlbWVudCIpLnRhZywKKyAgICAgICAgICAgICAgICAnZW1wdHktZWxlbWVudCcpCiAKLSAgICA+Pj4gRVQudG9zdHJpbmcoRVQuUEkoJ3Rlc3QnLCAnPHRlc3RpbmcmPicpKQotICAgICc8P3Rlc3QgPHRlc3RpbmcmPj8+JwotICAgID4+PiBFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsIHUnPHRlc3RpbmcmPlx4ZTMnKSwgJ2xhdGluMScpCi0gICAgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2xhdGluMSc/Plxcbjw/dGVzdCA8dGVzdGluZyY+XFx4ZTM/PiIKLSAgICAiIiIKKyAgICBkZWYgdGVzdF9wYXRoX2NhY2hlKHNlbGYpOgorICAgICAgICAjIENoZWNrIHRoYXQgdGhlIHBhdGggY2FjaGUgYmVoYXZlcyBzYW5lbHkuCisKKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCisKKyAgICAgICAgZWxlbSA9IEVULlhNTChTQU1QTEVfWE1MKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgxMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCisgICAgICAgIGNhY2hlX2xlbl8xMCA9IGxlbihFbGVtZW50UGF0aC5fY2FjaGUpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKTogRVQuRWxlbWVudFRyZWUoZWxlbSkuZmluZCgnLi8nK3N0cihpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oRWxlbWVudFBhdGguX2NhY2hlKSwgY2FjaGVfbGVuXzEwKQorICAgICAgICBmb3IgaSBpbiByYW5nZSgyMCk6IEVULkVsZW1lbnRUcmVlKGVsZW0pLmZpbmQoJy4vJytzdHIoaSkpCisgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihsZW4oRWxlbWVudFBhdGguX2NhY2hlKSwgY2FjaGVfbGVuXzEwKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg2MDApOiBFVC5FbGVtZW50VHJlZShlbGVtKS5maW5kKCcuLycrc3RyKGkpKQorICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKEVsZW1lbnRQYXRoLl9jYWNoZSksIDUwMCkKKworICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CisgICAgICAgICMgVGVzdCBjb3B5IGhhbmRsaW5nIChldGMpLgorCisgICAgICAgIGltcG9ydCBjb3B5CisgICAgICAgIGUxID0gRVQuWE1MKCI8dGFnPmhlbGxvPGZvby8+PC90YWc+IikKKyAgICAgICAgZTIgPSBjb3B5LmNvcHkoZTEpCisgICAgICAgIGUzID0gY29weS5kZWVwY29weShlMSkKKyAgICAgICAgZTEuZmluZCgiZm9vIikudGFnID0gImJhciIKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZTEsICc8dGFnPmhlbGxvPGJhciAvPjwvdGFnPicpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGUyLCAnPHRhZz5oZWxsbzxiYXIgLz48L3RhZz4nKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlMywgJzx0YWc+aGVsbG88Zm9vIC8+PC90YWc+JykKKworICAgIGRlZiB0ZXN0X2F0dHJpYihzZWxmKToKKyAgICAgICAgIyBUZXN0IGF0dHJpYnV0ZSBoYW5kbGluZy4KKworICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS5nZXQoImtleSIpICMgMS4xCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbS5nZXQoImtleSIsICJkZWZhdWx0IiksICdkZWZhdWx0JykgIyAxLjIKKworICAgICAgICBlbGVtLnNldCgia2V5IiwgInZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmdldCgia2V5IiksICd2YWx1ZScpICMgMS4zCisKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoInRhZyIsIGtleT0idmFsdWUiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsZW0uZ2V0KCJrZXkiKSwgJ3ZhbHVlJykgIyAyLjEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmF0dHJpYiwgeydrZXknOiAndmFsdWUnfSkgIyAyLjIKKworICAgICAgICBhdHRyaWIgPSB7ImtleSI6ICJ2YWx1ZSJ9CisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciLCBhdHRyaWIpCisgICAgICAgIGF0dHJpYi5jbGVhcigpICMgY2hlY2sgZm9yIGFsaWFzaW5nIGlzc3VlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsZW0uZ2V0KCJrZXkiKSwgJ3ZhbHVlJykgIyAzLjEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmF0dHJpYiwgeydrZXknOiAndmFsdWUnfSkgIyAzLjIKKworICAgICAgICBhdHRyaWIgPSB7ImtleSI6ICJ2YWx1ZSJ9CisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciLCAqKmF0dHJpYikKKyAgICAgICAgYXR0cmliLmNsZWFyKCkgIyBjaGVjayBmb3IgYWxpYXNpbmcgaXNzdWVzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbS5nZXQoImtleSIpLCAndmFsdWUnKSAjIDQuMQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVsZW0uYXR0cmliLCB7J2tleSc6ICd2YWx1ZSd9KSAjIDQuMgorCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciLCB7ImtleSI6ICJvdGhlciJ9LCBrZXk9InZhbHVlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmdldCgia2V5IiksICd2YWx1ZScpICMgNS4xCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbS5hdHRyaWIsIHsna2V5JzogJ3ZhbHVlJ30pICMgNS4yCisKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoJ3Rlc3QnKQorICAgICAgICBlbGVtLnRleHQgPSAiYWEiCisgICAgICAgIGVsZW0uc2V0KCd0ZXN0YScsICd0ZXN0dmFsJykKKyAgICAgICAgZWxlbS5zZXQoJ3Rlc3RiJywgJ3Rlc3QyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlbGVtKSwKKyAgICAgICAgICAgICAgICBiJzx0ZXN0IHRlc3RhPSJ0ZXN0dmFsIiB0ZXN0Yj0idGVzdDIiPmFhPC90ZXN0PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKGVsZW0ua2V5cygpKSwgWyd0ZXN0YScsICd0ZXN0YiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChlbGVtLml0ZW1zKCkpLAorICAgICAgICAgICAgICAgIFsoJ3Rlc3RhJywgJ3Rlc3R2YWwnKSwgKCd0ZXN0YicsICd0ZXN0MicpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmF0dHJpYlsndGVzdGInXSwgJ3Rlc3QyJykKKyAgICAgICAgZWxlbS5hdHRyaWJbJ3Rlc3RiJ10gPSAndGVzdDEnCisgICAgICAgIGVsZW0uYXR0cmliWyd0ZXN0YyddID0gJ3Rlc3QyJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKGVsZW0pLAorICAgICAgICAgICAgICAgIGInPHRlc3QgdGVzdGE9InRlc3R2YWwiIHRlc3RiPSJ0ZXN0MSIgdGVzdGM9InRlc3QyIj5hYTwvdGVzdD4nKQorCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCd0ZXN0JykKKyAgICAgICAgZWxlbS5zZXQoJ2EnLCAnXHInKQorICAgICAgICBlbGVtLnNldCgnYicsICdcclxuJykKKyAgICAgICAgZWxlbS5zZXQoJ2MnLCAnXHRcblxyICcpCisgICAgICAgIGVsZW0uc2V0KCdkJywgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKGVsZW0pLAorICAgICAgICAgICAgICAgIGInPHRlc3QgYT0iXHIiIGI9IlxyJiMxMDsiIGM9Ilx0JiMxMDtcciAiIGQ9IiYjMTA7JiMxMDsiIC8+JykKKworICAgIGRlZiB0ZXN0X21ha2VlbGVtZW50KHNlbGYpOgorICAgICAgICAjIFRlc3QgbWFrZWVsZW1lbnQgaGFuZGxpbmcuCisKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCisgICAgICAgIGF0dHJpYiA9IHsia2V5IjogInZhbHVlIn0KKyAgICAgICAgc3ViZWxlbSA9IGVsZW0ubWFrZWVsZW1lbnQoInN1YnRhZyIsIGF0dHJpYikKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzdWJlbGVtLmF0dHJpYiwgYXR0cmliLCBtc2c9ImF0dHJpYiBhbGlhc2luZyIpCisgICAgICAgIGVsZW0uYXBwZW5kKHN1YmVsZW0pCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8dGFnPjxzdWJ0YWcga2V5PSJ2YWx1ZSIgLz48L3RhZz4nKQorCisgICAgICAgIGVsZW0uY2xlYXIoKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPHRhZyAvPicpCisgICAgICAgIGVsZW0uYXBwZW5kKHN1YmVsZW0pCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8dGFnPjxzdWJ0YWcga2V5PSJ2YWx1ZSIgLz48L3RhZz4nKQorICAgICAgICBlbGVtLmV4dGVuZChbc3ViZWxlbSwgc3ViZWxlbV0pCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sCisgICAgICAgICAgICAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PHN1YnRhZyBrZXk9InZhbHVlIiAvPjxzdWJ0YWcga2V5PSJ2YWx1ZSIgLz48L3RhZz4nKQorICAgICAgICBlbGVtWzpdID0gW3N1YmVsZW1dCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8dGFnPjxzdWJ0YWcga2V5PSJ2YWx1ZSIgLz48L3RhZz4nKQorICAgICAgICBlbGVtWzpdID0gdHVwbGUoW3N1YmVsZW1dKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLCAnPHRhZz48c3VidGFnIGtleT0idmFsdWUiIC8+PC90YWc+JykKKworICAgIGRlZiB0ZXN0X3BhcnNlZmlsZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHBhcnNpbmcgZnJvbSBmaWxlLgorCisgICAgICAgIHRyZWUgPSBFVC5wYXJzZShTSU1QTEVfWE1MRklMRSkKKyAgICAgICAgbm9ybWFsaXplX2NybGYodHJlZSkKKyAgICAgICAgc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICB0cmVlLndyaXRlKHN0cmVhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uZ2V0dmFsdWUoKSwKKyAgICAgICAgICAgICAgICAnPHJvb3Q+XG4nCisgICAgICAgICAgICAgICAgJyAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+XG4nCisgICAgICAgICAgICAgICAgJyAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbFxuJworICAgICAgICAgICAgICAgICcgICA8ZW1wdHktZWxlbWVudCAvPlxuJworICAgICAgICAgICAgICAgICc8L3Jvb3Q+JykKKyAgICAgICAgdHJlZSA9IEVULnBhcnNlKFNJTVBMRV9OU19YTUxGSUxFKQorICAgICAgICBub3JtYWxpemVfY3JsZih0cmVlKQorICAgICAgICBzdHJlYW0gPSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIHRyZWUud3JpdGUoc3RyZWFtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5nZXR2YWx1ZSgpLAorICAgICAgICAgICAgICAgICc8bnMwOnJvb3QgeG1sbnM6bnMwPSJuYW1lc3BhY2UiPlxuJworICAgICAgICAgICAgICAgICcgICA8bnMwOmVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvbnMwOmVsZW1lbnQ+XG4nCisgICAgICAgICAgICAgICAgJyAgIDxuczA6ZWxlbWVudD50ZXh0PC9uczA6ZWxlbWVudD50YWlsXG4nCisgICAgICAgICAgICAgICAgJyAgIDxuczA6ZW1wdHktZWxlbWVudCAvPlxuJworICAgICAgICAgICAgICAgICc8L25zMDpyb290PicpCisKKyAgICAgICAgd2l0aCBvcGVuKFNJTVBMRV9YTUxGSUxFKSBhcyBmOgorICAgICAgICAgICAgZGF0YSA9IGYucmVhZCgpCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHBhcnNlci52ZXJzaW9uLCByJ15FeHBhdCAnKQorICAgICAgICBwYXJzZXIuZmVlZChkYXRhKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhwYXJzZXIuY2xvc2UoKSwKKyAgICAgICAgICAgICAgICAnPHJvb3Q+XG4nCisgICAgICAgICAgICAgICAgJyAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+XG4nCisgICAgICAgICAgICAgICAgJyAgIDxlbGVtZW50PnRleHQ8L2VsZW1lbnQ+dGFpbFxuJworICAgICAgICAgICAgICAgICcgICA8ZW1wdHktZWxlbWVudCAvPlxuJworICAgICAgICAgICAgICAgICc8L3Jvb3Q+JykKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxUcmVlQnVpbGRlcigpICMgMS4yIGNvbXBhdGliaWxpdHkKKyAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2socGFyc2VyLmNsb3NlKCksCisgICAgICAgICAgICAgICAgJzxyb290PlxuJworICAgICAgICAgICAgICAgICcgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PlxuJworICAgICAgICAgICAgICAgICcgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWxcbicKKyAgICAgICAgICAgICAgICAnICAgPGVtcHR5LWVsZW1lbnQgLz5cbicKKyAgICAgICAgICAgICAgICAnPC9yb290PicpCisKKyAgICAgICAgdGFyZ2V0ID0gRVQuVHJlZUJ1aWxkZXIoKQorICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PXRhcmdldCkKKyAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2socGFyc2VyLmNsb3NlKCksCisgICAgICAgICAgICAgICAgJzxyb290PlxuJworICAgICAgICAgICAgICAgICcgICA8ZWxlbWVudCBrZXk9InZhbHVlIj50ZXh0PC9lbGVtZW50PlxuJworICAgICAgICAgICAgICAgICcgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWxcbicKKyAgICAgICAgICAgICAgICAnICAgPGVtcHR5LWVsZW1lbnQgLz5cbicKKyAgICAgICAgICAgICAgICAnPC9yb290PicpCisKKyAgICBkZWYgdGVzdF9wYXJzZWxpdGVyYWwoc2VsZik6CisgICAgICAgIGVsZW1lbnQgPSBFVC5YTUwoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZWxlbWVudCksCisgICAgICAgICAgICAgICAgJzxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPicpCisgICAgICAgIGVsZW1lbnQgPSBFVC5mcm9tc3RyaW5nKCI8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKGVsZW1lbnQpLAorICAgICAgICAgICAgICAgICc8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4nKQorICAgICAgICBzZXF1ZW5jZSA9IFsiPGh0bWw+PGJvZHk+IiwgInRleHQ8L2JvIiwgImR5PjwvaHRtbD4iXQorICAgICAgICBlbGVtZW50ID0gRVQuZnJvbXN0cmluZ2xpc3Qoc2VxdWVuY2UpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZWxlbWVudCksCisgICAgICAgICAgICAgICAgJzxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIiIuam9pbihFVC50b3N0cmluZ2xpc3QoZWxlbWVudCkpLAorICAgICAgICAgICAgICAgICc8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKGVsZW1lbnQsICJhc2NpaSIpLAorICAgICAgICAgICAgICAgICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdhc2NpaSc/PlxuIgorICAgICAgICAgICAgICAgICI8aHRtbD48Ym9keT50ZXh0PC9ib2R5PjwvaHRtbD4iKQorICAgICAgICBfLCBpZHMgPSBFVC5YTUxJRCgiPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oaWRzKSwgMCkKKyAgICAgICAgXywgaWRzID0gRVQuWE1MSUQoIjxodG1sPjxib2R5IGlkPSdib2R5Jz50ZXh0PC9ib2R5PjwvaHRtbD4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpZHMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkc1siYm9keSJdLnRhZywgJ2JvZHknKQorCisgICAgZGVmIHRlc3RfaXRlcnBhcnNlKHNlbGYpOgorICAgICAgICAjIFRlc3QgaXRlcnBhcnNlIGludGVyZmFjZS4KKworICAgICAgICBpdGVycGFyc2UgPSBFVC5pdGVycGFyc2UKKworICAgICAgICBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFKQorICAgICAgICBhY3Rpb24sIGVsZW0gPSBuZXh0KGNvbnRleHQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGFjdGlvbiwgZWxlbS50YWcpLCAoJ2VuZCcsICdlbGVtZW50JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhhY3Rpb24sIGVsZW0udGFnKSBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHRdLCBbCisgICAgICAgICAgICAgICAgKCdlbmQnLCAnZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ2VtcHR5LWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICdyb290JyksCisgICAgICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQucm9vdC50YWcsICdyb290JykKKworICAgICAgICBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9OU19YTUxGSUxFKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoYWN0aW9uLCBlbGVtLnRhZykgZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0XSwgWworICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZW1wdHktZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9cm9vdCcpLAorICAgICAgICAgICAgXSkKKworICAgICAgICBldmVudHMgPSAoKQorICAgICAgICBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFLCBldmVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhhY3Rpb24sIGVsZW0udGFnKSBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHRdLCBbXSkKKworICAgICAgICBldmVudHMgPSAoKQorICAgICAgICBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFLCBldmVudHM9ZXZlbnRzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoYWN0aW9uLCBlbGVtLnRhZykgZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0XSwgW10pCisKKyAgICAgICAgZXZlbnRzID0gKCJzdGFydCIsICJlbmQiKQorICAgICAgICBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9YTUxGSUxFLCBldmVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhhY3Rpb24sIGVsZW0udGFnKSBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHRdLCBbCisgICAgICAgICAgICAgICAgKCdzdGFydCcsICdyb290JyksCisgICAgICAgICAgICAgICAgKCdzdGFydCcsICdlbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAnZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAnZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ2VsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ2VtcHR5LWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICdlbXB0eS1lbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAncm9vdCcpLAorICAgICAgICAgICAgXSkKKworICAgICAgICBldmVudHMgPSAoInN0YXJ0IiwgImVuZCIsICJzdGFydC1ucyIsICJlbmQtbnMiKQorICAgICAgICBjb250ZXh0ID0gaXRlcnBhcnNlKFNJTVBMRV9OU19YTUxGSUxFLCBldmVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhhY3Rpb24sIGVsZW0udGFnKSBpZiBhY3Rpb24gaW4gKCJzdGFydCIsICJlbmQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoYWN0aW9uLCBlbGVtKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgYWN0aW9uLCBlbGVtIGluIGNvbnRleHRdLCBbCisgICAgICAgICAgICAgICAgKCdzdGFydC1ucycsICgnJywgJ25hbWVzcGFjZScpKSwKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ3tuYW1lc3BhY2V9cm9vdCcpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAne25hbWVzcGFjZX1lbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAne25hbWVzcGFjZX1lbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdzdGFydCcsICd7bmFtZXNwYWNlfWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICd7bmFtZXNwYWNlfWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ3tuYW1lc3BhY2V9ZW1wdHktZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZW1wdHktZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9cm9vdCcpLAorICAgICAgICAgICAgICAgICgnZW5kLW5zJywgTm9uZSksCisgICAgICAgICAgICBdKQorCisgICAgICAgIGV2ZW50cyA9ICgnc3RhcnQtbnMnLCAnZW5kLW5zJykKKyAgICAgICAgY29udGV4dCA9IGl0ZXJwYXJzZShTdHJpbmdJTy5TdHJpbmdJTyhyIjxyb290IHhtbG5zPScnLz4iKSwgZXZlbnRzKQorICAgICAgICByZXMgPSBbKGFjdGlvbiwgZWxlbSkgZm9yIGFjdGlvbiwgZWxlbSBpbiBjb250ZXh0XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgWygnc3RhcnQtbnMnLCAoJycsICcnKSksICgnZW5kLW5zJywgTm9uZSldKQorCisgICAgICAgIGV2ZW50cyA9ICgic3RhcnQiLCAiZW5kIiwgImJvZ3VzIikKKyAgICAgICAgd2l0aCBvcGVuKFNJTVBMRV9YTUxGSUxFLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBpdGVycGFyc2UoZiwgZXZlbnRzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLmNsb3NlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgInVua25vd24gZXZlbnQgJ2JvZ3VzJyIpCisKKyAgICAgICAgc291cmNlID0gU3RyaW5nSU8uU3RyaW5nSU8oCisgICAgICAgICAgICAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/PlxuIgorICAgICAgICAgICAgIjxib2R5IHhtbG5zPSdodHRwOi8vJiMyMzM7ZmZib3Qub3JnL25zJ1xuIgorICAgICAgICAgICAgIiAgICAgIHhtbG5zOmNsXHhlOT0naHR0cDovL2VmZmJvdC5vcmcvbnMnPnRleHQ8L2JvZHk+XG4iKQorICAgICAgICBldmVudHMgPSAoInN0YXJ0LW5zIiwpCisgICAgICAgIGNvbnRleHQgPSBpdGVycGFyc2Uoc291cmNlLCBldmVudHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyhhY3Rpb24sIGVsZW0pIGZvciBhY3Rpb24sIGVsZW0gaW4gY29udGV4dF0sIFsKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0LW5zJywgKCcnLCB1J2h0dHA6Ly9ceGU5ZmZib3Qub3JnL25zJykpLAorICAgICAgICAgICAgICAgICgnc3RhcnQtbnMnLCAodSdjbFx4ZTknLCAnaHR0cDovL2VmZmJvdC5vcmcvbnMnKSksCisgICAgICAgICAgICBdKQorCisgICAgICAgIHNvdXJjZSA9IFN0cmluZ0lPLlN0cmluZ0lPKCI8ZG9jdW1lbnQgLz5qdW5rIikKKyAgICAgICAgaXQgPSBpdGVycGFyc2Uoc291cmNlKQorICAgICAgICBhY3Rpb24sIGVsZW0gPSBuZXh0KGl0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChhY3Rpb24sIGVsZW0udGFnKSwgKCdlbmQnLCAnZG9jdW1lbnQnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFVC5QYXJzZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIG5leHQoaXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgJ2p1bmsgYWZ0ZXIgZG9jdW1lbnQgZWxlbWVudDogbGluZSAxLCBjb2x1bW4gMTInKQorCisgICAgZGVmIHRlc3Rfd3JpdGVmaWxlKHNlbGYpOgorICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgidGFnIikKKyAgICAgICAgZWxlbS50ZXh0ID0gInRleHQiCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8dGFnPnRleHQ8L3RhZz4nKQorICAgICAgICBFVC5TdWJFbGVtZW50KGVsZW0sICJzdWJ0YWciKS50ZXh0ID0gInN1YnRleHQiCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8dGFnPnRleHQ8c3VidGFnPnN1YnRleHQ8L3N1YnRhZz48L3RhZz4nKQorCisgICAgICAgICMgVGVzdCB0YWcgc3VwcHJlc3Npb24KKyAgICAgICAgZWxlbS50YWcgPSBOb25lCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICd0ZXh0PHN1YnRhZz5zdWJ0ZXh0PC9zdWJ0YWc+JykKKyAgICAgICAgZWxlbS5pbnNlcnQoMCwgRVQuQ29tbWVudCgiY29tbWVudCIpKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLAorICAgICAgICAgICAgICAgICd0ZXh0PCEtLWNvbW1lbnQtLT48c3VidGFnPnN1YnRleHQ8L3N1YnRhZz4nKSAgICAgIyBhc3N1bWVzIDEuMworCisgICAgICAgIGVsZW1bMF0gPSBFVC5QSSgia2V5IiwgInZhbHVlIikKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwgJ3RleHQ8P2tleSB2YWx1ZT8+PHN1YnRhZz5zdWJ0ZXh0PC9zdWJ0YWc+JykKKworICAgIGRlZiB0ZXN0X2N1c3RvbV9idWlsZGVyKHNlbGYpOgorICAgICAgICAjIFRlc3QgcGFyc2VyIHcuIGN1c3RvbSBidWlsZGVyLgorCisgICAgICAgIHdpdGggb3BlbihTSU1QTEVfWE1MRklMRSkgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICBjbGFzcyBCdWlsZGVyKGxpc3QpOgorICAgICAgICAgICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cmliKToKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCgoInN0YXJ0IiwgdGFnKSkKKyAgICAgICAgICAgIGRlZiBlbmQoc2VsZiwgdGFnKToKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCgoImVuZCIsIHRhZykpCisgICAgICAgICAgICBkZWYgZGF0YShzZWxmLCB0ZXh0KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGJ1aWxkZXIgPSBCdWlsZGVyKCkKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1idWlsZGVyKQorICAgICAgICBwYXJzZXIuZmVlZChkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1aWxkZXIsIFsKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ3Jvb3QnKSwKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ2VsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICdlbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdzdGFydCcsICdlbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAnZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAnZW1wdHktZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ2VtcHR5LWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICdyb290JyksCisgICAgICAgICAgICBdKQorCisgICAgICAgIHdpdGggb3BlbihTSU1QTEVfTlNfWE1MRklMRSkgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICBjbGFzcyBCdWlsZGVyKGxpc3QpOgorICAgICAgICAgICAgZGVmIHN0YXJ0KHNlbGYsIHRhZywgYXR0cmliKToKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCgoInN0YXJ0IiwgdGFnKSkKKyAgICAgICAgICAgIGRlZiBlbmQoc2VsZiwgdGFnKToKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCgoImVuZCIsIHRhZykpCisgICAgICAgICAgICBkZWYgZGF0YShzZWxmLCB0ZXh0KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgcGkoc2VsZiwgdGFyZ2V0LCBkYXRhKToKKyAgICAgICAgICAgICAgICBzZWxmLmFwcGVuZCgoInBpIiwgdGFyZ2V0LCBkYXRhKSkKKyAgICAgICAgICAgIGRlZiBjb21tZW50KHNlbGYsIGRhdGEpOgorICAgICAgICAgICAgICAgIHNlbGYuYXBwZW5kKCgiY29tbWVudCIsIGRhdGEpKQorICAgICAgICBidWlsZGVyID0gQnVpbGRlcigpCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9YnVpbGRlcikKKyAgICAgICAgcGFyc2VyLmZlZWQoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWlsZGVyLCBbCisgICAgICAgICAgICAgICAgKCdwaScsICdwaScsICdkYXRhJyksCisgICAgICAgICAgICAgICAgKCdjb21tZW50JywgJyBjb21tZW50ICcpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAne25hbWVzcGFjZX1yb290JyksCisgICAgICAgICAgICAgICAgKCdzdGFydCcsICd7bmFtZXNwYWNlfWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ2VuZCcsICd7bmFtZXNwYWNlfWVsZW1lbnQnKSwKKyAgICAgICAgICAgICAgICAoJ3N0YXJ0JywgJ3tuYW1lc3BhY2V9ZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnZW5kJywgJ3tuYW1lc3BhY2V9ZWxlbWVudCcpLAorICAgICAgICAgICAgICAgICgnc3RhcnQnLCAne25hbWVzcGFjZX1lbXB0eS1lbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAne25hbWVzcGFjZX1lbXB0eS1lbGVtZW50JyksCisgICAgICAgICAgICAgICAgKCdlbmQnLCAne25hbWVzcGFjZX1yb290JyksCisgICAgICAgICAgICBdKQorCisKKyAgICAjIEVsZW1lbnQuZ2V0Y2hpbGRyZW4oKSBhbmQgRWxlbWVudFRyZWUuZ2V0aXRlcmF0b3IoKSBhcmUgZGVwcmVjYXRlZC4KKyAgICBAY2hlY2t3YXJuaW5ncygoIlRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuICAiCisgICAgICAgICAgICAgICAgICAgICJVc2UgLisgaW5zdGVhZC4iLAorICAgICAgICAgICAgICAgICAgICAoRGVwcmVjYXRpb25XYXJuaW5nLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSkpCisgICAgZGVmIHRlc3RfZ2V0Y2hpbGRyZW4oc2VsZik6CisgICAgICAgICMgVGVzdCBFbGVtZW50LmdldGNoaWxkcmVuKCkKKworICAgICAgICB3aXRoIG9wZW4oU0lNUExFX1hNTEZJTEUsICJyIikgYXMgZjoKKyAgICAgICAgICAgIHRyZWUgPSBFVC5wYXJzZShmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtzdW1tYXJpemVfbGlzdChlbGVtLmdldGNoaWxkcmVuKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbGVtIGluIHRyZWUuZ2V0cm9vdCgpLml0ZXIoKV0sIFsKKyAgICAgICAgICAgICAgICBbJ2VsZW1lbnQnLCAnZWxlbWVudCcsICdlbXB0eS1lbGVtZW50J10sCisgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtzdW1tYXJpemVfbGlzdChlbGVtLmdldGNoaWxkcmVuKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBlbGVtIGluIHRyZWUuZ2V0aXRlcmF0b3IoKV0sIFsKKyAgICAgICAgICAgICAgICBbJ2VsZW1lbnQnLCAnZWxlbWVudCcsICdlbXB0eS1lbGVtZW50J10sCisgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICAgICAgW10sCisgICAgICAgICAgICBdKQorCisgICAgICAgIGVsZW0gPSBFVC5YTUwoU0FNUExFX1hNTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZWxlbS5nZXRjaGlsZHJlbigpKSwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZWxlbVsyXS5nZXRjaGlsZHJlbigpKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtWzpdLCBlbGVtLmdldGNoaWxkcmVuKCkpCisgICAgICAgIGNoaWxkMSA9IGVsZW1bMF0KKyAgICAgICAgY2hpbGQyID0gZWxlbVsyXQorICAgICAgICBkZWwgZWxlbVsxOjJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVsZW0uZ2V0Y2hpbGRyZW4oKSksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGQxLCBlbGVtWzBdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkMiwgZWxlbVsxXSkKKyAgICAgICAgZWxlbVswOjJdID0gW2NoaWxkMiwgY2hpbGQxXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkMiwgZWxlbVswXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZDEsIGVsZW1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoY2hpbGQxLCBlbGVtWzBdKQorICAgICAgICBlbGVtLmNsZWFyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLmdldGNoaWxkcmVuKCksIFtdKQorCisgICAgZGVmIHRlc3Rfd3JpdGVzdHJpbmcoc2VsZik6CisgICAgICAgIGVsZW0gPSBFVC5YTUwoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZWxlbSksIGInPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+JykKKyAgICAgICAgZWxlbSA9IEVULmZyb21zdHJpbmcoIjxodG1sPjxib2R5PnRleHQ8L2JvZHk+PC9odG1sPiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZWxlbSksIGInPGh0bWw+PGJvZHk+dGV4dDwvYm9keT48L2h0bWw+JykKKworICAgIGRlZiB0ZXN0X2VuY29kaW5nKHNlbGYpOgorICAgICAgICBkZWYgY2hlY2soZW5jb2RpbmcsIGJvZHk9JycpOgorICAgICAgICAgICAgeG1sID0gKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/Pjx4bWw+JXM8L3htbD4iICUKKyAgICAgICAgICAgICAgICAgICAoZW5jb2RpbmcsIGJvZHkpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5YTUwoeG1sLmVuY29kZShlbmNvZGluZykpLnRleHQsIGJvZHkpCisgICAgICAgIGNoZWNrKCJhc2NpaSIsICdhJykKKyAgICAgICAgY2hlY2soInVzLWFzY2lpIiwgJ2EnKQorICAgICAgICBjaGVjaygiaXNvLTg4NTktMSIsIHUnXHhiZCcpCisgICAgICAgIGNoZWNrKCJpc28tODg1OS0xNSIsIHUnXHUyMGFjJykKKyAgICAgICAgY2hlY2soImNwNDM3IiwgdSdcdTIyMWEnKQorICAgICAgICBjaGVjaygibWFjLXJvbWFuIiwgdSdcdTAyZGEnKQorCisgICAgICAgIGRlZiB4bWwoZW5jb2RpbmcpOgorICAgICAgICAgICAgcmV0dXJuICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSclcyc/Pjx4bWwgLz4iICUgZW5jb2RpbmcKKyAgICAgICAgZGVmIGJ4bWwoZW5jb2RpbmcpOgorICAgICAgICAgICAgcmV0dXJuIHhtbChlbmNvZGluZykuZW5jb2RlKGVuY29kaW5nKQorICAgICAgICBzdXBwb3J0ZWRfZW5jb2RpbmdzID0gWworICAgICAgICAgICAgJ2FzY2lpJywgJ3V0Zi04JywgJ3V0Zi04LXNpZycsICd1dGYtMTYnLCAndXRmLTE2YmUnLCAndXRmLTE2bGUnLAorICAgICAgICAgICAgJ2lzbzg4NTktMScsICdpc284ODU5LTInLCAnaXNvODg1OS0zJywgJ2lzbzg4NTktNCcsICdpc284ODU5LTUnLAorICAgICAgICAgICAgJ2lzbzg4NTktNicsICdpc284ODU5LTcnLCAnaXNvODg1OS04JywgJ2lzbzg4NTktOScsICdpc284ODU5LTEwJywKKyAgICAgICAgICAgICdpc284ODU5LTEzJywgJ2lzbzg4NTktMTQnLCAnaXNvODg1OS0xNScsICdpc284ODU5LTE2JywKKyAgICAgICAgICAgICdjcDQzNycsICdjcDcyMCcsICdjcDczNycsICdjcDc3NScsICdjcDg1MCcsICdjcDg1MicsCisgICAgICAgICAgICAnY3A4NTUnLCAnY3A4NTYnLCAnY3A4NTcnLCAnY3A4NTgnLCAnY3A4NjAnLCAnY3A4NjEnLCAnY3A4NjInLAorICAgICAgICAgICAgJ2NwODYzJywgJ2NwODY1JywgJ2NwODY2JywgJ2NwODY5JywgJ2NwODc0JywgJ2NwMTAwNicsCisgICAgICAgICAgICAnY3AxMjUwJywgJ2NwMTI1MScsICdjcDEyNTInLCAnY3AxMjUzJywgJ2NwMTI1NCcsICdjcDEyNTUnLAorICAgICAgICAgICAgJ2NwMTI1NicsICdjcDEyNTcnLCAnY3AxMjU4JywKKyAgICAgICAgICAgICdtYWMtY3lyaWxsaWMnLCAnbWFjLWdyZWVrJywgJ21hYy1pY2VsYW5kJywgJ21hYy1sYXRpbjInLAorICAgICAgICAgICAgJ21hYy1yb21hbicsICdtYWMtdHVya2lzaCcsCisgICAgICAgICAgICAnaXNvMjAyMi1qcCcsICdpc28yMDIyLWpwLTEnLCAnaXNvMjAyMi1qcC0yJywgJ2lzbzIwMjItanAtMjAwNCcsCisgICAgICAgICAgICAnaXNvMjAyMi1qcC0zJywgJ2lzbzIwMjItanAtZXh0JywKKyAgICAgICAgICAgICdrb2k4LXInLCAna29pOC11JywKKyAgICAgICAgICAgICdwdGNwMTU0JywKKyAgICAgICAgXQorICAgICAgICBmb3IgZW5jb2RpbmcgaW4gc3VwcG9ydGVkX2VuY29kaW5nczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoRVQuWE1MKGJ4bWwoZW5jb2RpbmcpKSksIGInPHhtbCAvPicpCisKKyAgICAgICAgdW5zdXBwb3J0ZWRfYXNjaWlfY29tcGF0aWJsZV9lbmNvZGluZ3MgPSBbCisgICAgICAgICAgICAnYmlnNScsICdiaWc1aGtzY3MnLAorICAgICAgICAgICAgJ2NwOTMyJywgJ2NwOTQ5JywgJ2NwOTUwJywKKyAgICAgICAgICAgICdldWMtanAnLCAnZXVjLWppcy0yMDA0JywgJ2V1Yy1qaXN4MDIxMycsICdldWMta3InLAorICAgICAgICAgICAgJ2diMjMxMicsICdnYmsnLCAnZ2IxODAzMCcsCisgICAgICAgICAgICAnaXNvMjAyMi1rcicsICdqb2hhYicsICdoeicsCisgICAgICAgICAgICAnc2hpZnQtamlzJywgJ3NoaWZ0LWppcy0yMDA0JywgJ3NoaWZ0LWppc3gwMjEzJywKKyAgICAgICAgICAgICd1dGYtNycsCisgICAgICAgIF0KKyAgICAgICAgZm9yIGVuY29kaW5nIGluIHVuc3VwcG9ydGVkX2FzY2lpX2NvbXBhdGlibGVfZW5jb2RpbmdzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRVQuWE1MLCBieG1sKGVuY29kaW5nKSkKKworICAgICAgICB1bnN1cHBvcnRlZF9hc2NpaV9pbmNvbXBhdGlibGVfZW5jb2RpbmdzID0gWworICAgICAgICAgICAgJ2NwMDM3JywgJ2NwNDI0JywgJ2NwNTAwJywgJ2NwODY0JywgJ2NwODc1JywgJ2NwMTAyNicsICdjcDExNDAnLAorICAgICAgICAgICAgJ3V0Zl8zMicsICd1dGZfMzJfYmUnLCAndXRmXzMyX2xlJywKKyAgICAgICAgXQorICAgICAgICBmb3IgZW5jb2RpbmcgaW4gdW5zdXBwb3J0ZWRfYXNjaWlfaW5jb21wYXRpYmxlX2VuY29kaW5nczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEVULlBhcnNlRXJyb3IsIEVULlhNTCwgYnhtbChlbmNvZGluZykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgRVQuWE1MLCB4bWwoJ3VuZGVmaW5lZCcpLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTG9va3VwRXJyb3IsIEVULlhNTCwgeG1sKCd4eHgnKS5lbmNvZGUoJ2FzY2lpJykpCisKKyAgICBkZWYgdGVzdF9tZXRob2RzKHNlbGYpOgorICAgICAgICAjIFRlc3Qgc2VyaWFsaXphdGlvbiBtZXRob2RzLgorCisgICAgICAgIGUgPSBFVC5YTUwoIjxodG1sPjxsaW5rLz48c2NyaXB0PjEgJmx0OyAyPC9zY3JpcHQ+PC9odG1sPiIpCisgICAgICAgIGUudGFpbCA9ICJcbiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZSksCisgICAgICAgICAgICAgICAgJzxodG1sPjxsaW5rIC8+PHNjcmlwdD4xICZsdDsgMjwvc2NyaXB0PjwvaHRtbD5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGUsIG1ldGhvZD1Ob25lKSwKKyAgICAgICAgICAgICAgICAnPGh0bWw+PGxpbmsgLz48c2NyaXB0PjEgJmx0OyAyPC9zY3JpcHQ+PC9odG1sPlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZSwgbWV0aG9kPSJ4bWwiKSwKKyAgICAgICAgICAgICAgICAnPGh0bWw+PGxpbmsgLz48c2NyaXB0PjEgJmx0OyAyPC9zY3JpcHQ+PC9odG1sPlxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZSwgbWV0aG9kPSJodG1sIiksCisgICAgICAgICAgICAgICAgJzxodG1sPjxsaW5rPjxzY3JpcHQ+MSA8IDI8L3NjcmlwdD48L2h0bWw+XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlLCBtZXRob2Q9InRleHQiKSwgJzEgPCAyXG4nKQorCisgICAgZGVmIHRlc3RfaXNzdWUxODM0NyhzZWxmKToKKyAgICAgICAgZSA9IEVULlhNTCgnPGh0bWw+PENhbWVsQ2FzZT50ZXh0PC9DYW1lbENhc2U+PC9odG1sPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGUpLAorICAgICAgICAgICAgICAgICc8aHRtbD48Q2FtZWxDYXNlPnRleHQ8L0NhbWVsQ2FzZT48L2h0bWw+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZSwgbWV0aG9kPSJodG1sIiksCisgICAgICAgICAgICAgICAgJzxodG1sPjxDYW1lbENhc2U+dGV4dDwvQ2FtZWxDYXNlPjwvaHRtbD4nKQorCisgICAgZGVmIHRlc3RfZW50aXR5KHNlbGYpOgorICAgICAgICAjIFRlc3QgZW50aXR5IGhhbmRsaW5nLgorCisgICAgICAgICMgMSkgZ29vZCBlbnRpdGllcworCisgICAgICAgIGUgPSBFVC5YTUwoIjxkb2N1bWVudCB0aXRsZT0nJiN4ODIzMDsnPnRlc3Q8L2RvY3VtZW50PiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGUsIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgICc8ZG9jdW1lbnQgdGl0bGU9IiYjMzMzMjg7Ij50ZXN0PC9kb2N1bWVudD4nKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlLCAnPGRvY3VtZW50IHRpdGxlPSImIzMzMzI4OyI+dGVzdDwvZG9jdW1lbnQ+JykKKworICAgICAgICAjIDIpIGJhZCBlbnRpdGllcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRVQuUGFyc2VFcnJvcikgYXMgY206CisgICAgICAgICAgICBFVC5YTUwoIjxkb2N1bWVudD4mZW50aXR5OzwvZG9jdW1lbnQ+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAndW5kZWZpbmVkIGVudGl0eTogbGluZSAxLCBjb2x1bW4gMTAnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoRVQuUGFyc2VFcnJvcikgYXMgY206CisgICAgICAgICAgICBFVC5YTUwoRU5USVRZX1hNTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAndW5kZWZpbmVkIGVudGl0eSAmZW50aXR5OzogbGluZSA1LCBjb2x1bW4gMTAnKQorCisgICAgICAgICMgMykgY3VzdG9tIGVudGl0eQorCisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcigpCisgICAgICAgIHBhcnNlci5lbnRpdHlbImVudGl0eSJdID0gInRleHQiCisgICAgICAgIHBhcnNlci5mZWVkKEVOVElUWV9YTUwpCisgICAgICAgIHJvb3QgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhyb290LCAnPGRvY3VtZW50PnRleHQ8L2RvY3VtZW50PicpCisKKyAgICBkZWYgdGVzdF9uYW1lc3BhY2Uoc2VsZik6CisgICAgICAgICMgVGVzdCBuYW1lc3BhY2UgaXNzdWVzLgorCisgICAgICAgICMgMSkgeG1sIG5hbWVzcGFjZQorCisgICAgICAgIGVsZW0gPSBFVC5YTUwoIjx0YWcgeG1sOmxhbmc9J2VuJyAvPiIpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8dGFnIHhtbDpsYW5nPSJlbiIgLz4nKSAjIDEuMQorCisgICAgICAgICMgMikgb3RoZXIgIndlbGwta25vd24iIG5hbWVzcGFjZXMKKworICAgICAgICBlbGVtID0gRVQuWE1MKCI8cmRmOlJERiB4bWxuczpyZGY9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMnIC8+IikKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwKKyAgICAgICAgICAgICc8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIC8+JykgIyAyLjEKKworICAgICAgICBlbGVtID0gRVQuWE1MKCI8aHRtbDpodG1sIHhtbG5zOmh0bWw9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIC8+IikKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwKKyAgICAgICAgICAgICc8aHRtbDpodG1sIHhtbG5zOmh0bWw9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIC8+JykgIyAyLjIKKworICAgICAgICBlbGVtID0gRVQuWE1MKCI8c29hcDpFbnZlbG9wZSB4bWxuczpzb2FwPSdodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy9zb2FwL2VudmVsb3BlJyAvPiIpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sCisgICAgICAgICAgICAnPG5zMDpFbnZlbG9wZSB4bWxuczpuczA9Imh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3NvYXAvZW52ZWxvcGUiIC8+JykgIyAyLjMKKworICAgICAgICAjIDMpIHVua25vd24gbmFtZXNwYWNlcworICAgICAgICBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUxfTlMpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sCisgICAgICAgICAgICAnPG5zMDpib2R5IHhtbG5zOm5zMD0iaHR0cDovL2VmZmJvdC5vcmcvbnMiPlxuJworICAgICAgICAgICAgJyAgPG5zMDp0YWc+dGV4dDwvbnMwOnRhZz5cbicKKyAgICAgICAgICAgICcgIDxuczA6dGFnIC8+XG4nCisgICAgICAgICAgICAnICA8bnMwOnNlY3Rpb24+XG4nCisgICAgICAgICAgICAnICAgIDxuczA6dGFnPnN1YnRleHQ8L25zMDp0YWc+XG4nCisgICAgICAgICAgICAnICA8L25zMDpzZWN0aW9uPlxuJworICAgICAgICAgICAgJzwvbnMwOmJvZHk+JykKKworICAgIGRlZiB0ZXN0X3FuYW1lKHNlbGYpOgorICAgICAgICAjIFRlc3QgUU5hbWUgaGFuZGxpbmcuCisKKyAgICAgICAgIyAxKSBkZWNvcmF0ZWQgdGFncworCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ7dXJpfXRhZyIpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgLz4nKSAjIDEuMQorICAgICAgICBlbGVtID0gRVQuRWxlbWVudChFVC5RTmFtZSgie3VyaX10YWciKSkKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiAvPicpICMgMS4yCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KEVULlFOYW1lKCJ1cmkiLCAidGFnIikpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgLz4nKSAjIDEuMworICAgICAgICBlbGVtID0gRVQuRWxlbWVudChFVC5RTmFtZSgidXJpIiwgInRhZyIpKQorICAgICAgICBzdWJlbGVtID0gRVQuU3ViRWxlbWVudChlbGVtLCBFVC5RTmFtZSgidXJpIiwgInRhZzEiKSkKKyAgICAgICAgc3ViZWxlbSA9IEVULlN1YkVsZW1lbnQoZWxlbSwgRVQuUU5hbWUoInVyaSIsICJ0YWcyIikpCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sCisgICAgICAgICAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiPjxuczA6dGFnMSAvPjxuczA6dGFnMiAvPjwvbnMwOnRhZz4nKSAjIDEuNAorCisgICAgICAgICMgMikgZGVjb3JhdGVkIGF0dHJpYnV0ZXMKKworICAgICAgICBlbGVtLmNsZWFyKCkKKyAgICAgICAgZWxlbS5hdHRyaWJbInt1cml9a2V5Il0gPSAidmFsdWUiCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sCisgICAgICAgICAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIG5zMDprZXk9InZhbHVlIiAvPicpICMgMi4xCisKKyAgICAgICAgZWxlbS5jbGVhcigpCisgICAgICAgIGVsZW0uYXR0cmliW0VULlFOYW1lKCJ7dXJpfWtleSIpXSA9ICJ2YWx1ZSIKKyAgICAgICAgc2VsZi5zZXJpYWxpemVfY2hlY2soZWxlbSwKKyAgICAgICAgICAgICc8bnMwOnRhZyB4bWxuczpuczA9InVyaSIgbnMwOmtleT0idmFsdWUiIC8+JykgIyAyLjIKKworICAgICAgICAjIDMpIGRlY29yYXRlZCB2YWx1ZXMgYXJlIG5vdCBjb252ZXJ0ZWQgYnkgZGVmYXVsdCwgYnV0IHRoZQorICAgICAgICAjIFFOYW1lIHdyYXBwZXIgY2FuIGJlIHVzZWQgZm9yIHZhbHVlcworCisgICAgICAgIGVsZW0uY2xlYXIoKQorICAgICAgICBlbGVtLmF0dHJpYlsie3VyaX1rZXkiXSA9ICJ7dXJpfXZhbHVlIgorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLAorICAgICAgICAgICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiBuczA6a2V5PSJ7dXJpfXZhbHVlIiAvPicpICMgMy4xCisKKyAgICAgICAgZWxlbS5jbGVhcigpCisgICAgICAgIGVsZW0uYXR0cmliWyJ7dXJpfWtleSJdID0gRVQuUU5hbWUoInt1cml9dmFsdWUiKQorICAgICAgICBzZWxmLnNlcmlhbGl6ZV9jaGVjayhlbGVtLAorICAgICAgICAgICAgJzxuczA6dGFnIHhtbG5zOm5zMD0idXJpIiBuczA6a2V5PSJuczA6dmFsdWUiIC8+JykgIyAzLjIKKworICAgICAgICBlbGVtLmNsZWFyKCkKKyAgICAgICAgc3ViZWxlbSA9IEVULkVsZW1lbnQoInRhZyIpCisgICAgICAgIHN1YmVsZW0uYXR0cmliWyJ7dXJpMX1rZXkiXSA9IEVULlFOYW1lKCJ7dXJpMn12YWx1ZSIpCisgICAgICAgIGVsZW0uYXBwZW5kKHN1YmVsZW0pCisgICAgICAgIGVsZW0uYXBwZW5kKHN1YmVsZW0pCisgICAgICAgIHNlbGYuc2VyaWFsaXplX2NoZWNrKGVsZW0sCisgICAgICAgICAgICAnPG5zMDp0YWcgeG1sbnM6bnMwPSJ1cmkiIHhtbG5zOm5zMT0idXJpMSIgeG1sbnM6bnMyPSJ1cmkyIj4nCisgICAgICAgICAgICAnPHRhZyBuczE6a2V5PSJuczI6dmFsdWUiIC8+JworICAgICAgICAgICAgJzx0YWcgbnMxOmtleT0ibnMyOnZhbHVlIiAvPicKKyAgICAgICAgICAgICc8L25zMDp0YWc+JykgIyAzLjMKKworICAgICAgICAjIDQpIERpcmVjdCBRTmFtZSB0ZXN0cworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKEVULlFOYW1lKCducycsICd0YWcnKSksICd7bnN9dGFnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoRVQuUU5hbWUoJ3tuc310YWcnKSksICd7bnN9dGFnJykKKyAgICAgICAgcTEgPSBFVC5RTmFtZSgnbnMnLCAndGFnJykKKyAgICAgICAgcTIgPSBFVC5RTmFtZSgnbnMnLCAndGFnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxMSwgcTIpCisgICAgICAgIHEyID0gRVQuUU5hbWUoJ25zJywgJ290aGVyLXRhZycpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwocTEsIHEyKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHExLCAnbnM6dGFnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxMSwgJ3tuc310YWcnKQorCisgICAgZGVmIHRlc3RfZG9jdHlwZV9wdWJsaWMoc2VsZik6CisgICAgICAgICMgVGVzdCBQVUJMSUMgZG9jdHlwZS4KKworICAgICAgICBlbGVtID0gRVQuWE1MKCc8IURPQ1RZUEUgaHRtbCBQVUJMSUMnCisgICAgICAgICAgICAgICAgJyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iJworICAgICAgICAgICAgICAgICcgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPicKKyAgICAgICAgICAgICAgICAnPGh0bWw+dGV4dDwvaHRtbD4nKQorCisgICAgZGVmIHRlc3RfeHBhdGhfdG9rZW5pemVyKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhlIFhQYXRoIHRva2VuaXplci4KKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCisgICAgICAgIGRlZiBjaGVjayhwLCBleHBlY3RlZCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtvcCBvciB0YWcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBvcCwgdGFnIGluIEVsZW1lbnRQYXRoLnhwYXRoX3Rva2VuaXplcihwKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisgICAgICAgICMgdGVzdHMgZnJvbSB0aGUgeG1sIHNwZWNpZmljYXRpb24KKyAgICAgICAgY2hlY2soIioiLCBbJyonXSkKKyAgICAgICAgY2hlY2soInRleHQoKSIsIFsndGV4dCcsICcoKSddKQorICAgICAgICBjaGVjaygiQG5hbWUiLCBbJ0AnLCAnbmFtZSddKQorICAgICAgICBjaGVjaygiQCoiLCBbJ0AnLCAnKiddKQorICAgICAgICBjaGVjaygicGFyYVsxXSIsIFsncGFyYScsICdbJywgJzEnLCAnXSddKQorICAgICAgICBjaGVjaygicGFyYVtsYXN0KCldIiwgWydwYXJhJywgJ1snLCAnbGFzdCcsICcoKScsICddJ10pCisgICAgICAgIGNoZWNrKCIqL3BhcmEiLCBbJyonLCAnLycsICdwYXJhJ10pCisgICAgICAgIGNoZWNrKCIvZG9jL2NoYXB0ZXJbNV0vc2VjdGlvblsyXSIsCisgICAgICAgICAgICAgIFsnLycsICdkb2MnLCAnLycsICdjaGFwdGVyJywgJ1snLCAnNScsICddJywKKyAgICAgICAgICAgICAgICcvJywgJ3NlY3Rpb24nLCAnWycsICcyJywgJ10nXSkKKyAgICAgICAgY2hlY2soImNoYXB0ZXIvL3BhcmEiLCBbJ2NoYXB0ZXInLCAnLy8nLCAncGFyYSddKQorICAgICAgICBjaGVjaygiLy9wYXJhIiwgWycvLycsICdwYXJhJ10pCisgICAgICAgIGNoZWNrKCIvL29saXN0L2l0ZW0iLCBbJy8vJywgJ29saXN0JywgJy8nLCAnaXRlbSddKQorICAgICAgICBjaGVjaygiLiIsIFsnLiddKQorICAgICAgICBjaGVjaygiLi8vcGFyYSIsIFsnLicsICcvLycsICdwYXJhJ10pCisgICAgICAgIGNoZWNrKCIuLiIsIFsnLi4nXSkKKyAgICAgICAgY2hlY2soIi4uL0BsYW5nIiwgWycuLicsICcvJywgJ0AnLCAnbGFuZyddKQorICAgICAgICBjaGVjaygiY2hhcHRlclt0aXRsZV0iLCBbJ2NoYXB0ZXInLCAnWycsICd0aXRsZScsICddJ10pCisgICAgICAgIGNoZWNrKCJlbXBsb3llZVtAc2VjcmV0YXJ5IGFuZCBAYXNzaXN0YW50XSIsIFsnZW1wbG95ZWUnLAorICAgICAgICAgICAgICAnWycsICdAJywgJ3NlY3JldGFyeScsICcnLCAnYW5kJywgJycsICdAJywgJ2Fzc2lzdGFudCcsICddJ10pCisKKyAgICAgICAgIyBhZGRpdGlvbmFsIHRlc3RzCisgICAgICAgIGNoZWNrKCJ7aHR0cDovL3NwYW19ZWdnIiwgWyd7aHR0cDovL3NwYW19ZWdnJ10pCisgICAgICAgIGNoZWNrKCIuL3NwYW0uZWdnIiwgWycuJywgJy8nLCAnc3BhbS5lZ2cnXSkKKyAgICAgICAgY2hlY2soIi4vL3todHRwOi8vc3BhbX1lZ2ciLCBbJy4nLCAnLy8nLCAne2h0dHA6Ly9zcGFtfWVnZyddKQorCisgICAgZGVmIHRlc3RfcHJvY2Vzc2luZ2luc3RydWN0aW9uKHNlbGYpOgorICAgICAgICAjIFRlc3QgUHJvY2Vzc2luZ0luc3RydWN0aW9uIGRpcmVjdGx5CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhFVC5Qcm9jZXNzaW5nSW5zdHJ1Y3Rpb24oJ3Rlc3QnLCAnaW5zdHJ1Y3Rpb24nKSksCisgICAgICAgICAgICAgICAgJzw/dGVzdCBpbnN0cnVjdGlvbj8+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhFVC5QSSgndGVzdCcsICdpbnN0cnVjdGlvbicpKSwKKyAgICAgICAgICAgICAgICAnPD90ZXN0IGluc3RydWN0aW9uPz4nKQorCisgICAgICAgICMgSXNzdWUgIzI3NDYKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKEVULlBJKCd0ZXN0JywgJzx0ZXN0aW5nJj4nKSksCisgICAgICAgICAgICAgICAgJzw/dGVzdCA8dGVzdGluZyY+Pz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKEVULlBJKCd0ZXN0JywgdSc8dGVzdGluZyY+XHhlMycpLCAnbGF0aW4xJyksCisgICAgICAgICAgICAgICAgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2xhdGluMSc/PlxuIgorICAgICAgICAgICAgICAgICI8P3Rlc3QgPHRlc3RpbmcmPlx4ZTM/PiIpCisKKyAgICBkZWYgdGVzdF9odG1sX2VtcHR5X2VsZW1zX3NlcmlhbGl6YXRpb24oc2VsZik6CisgICAgICAgICMgaXNzdWUgMTU5NzAKKyAgICAgICAgIyBmcm9tIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0MDEvaW5kZXgvZWxlbWVudHMuaHRtbAorICAgICAgICBmb3IgZWxlbWVudCBpbiBbJ0FSRUEnLCAnQkFTRScsICdCQVNFRk9OVCcsICdCUicsICdDT0wnLCAnRlJBTUUnLCAnSFInLAorICAgICAgICAgICAgICAgICAgICAgICAgJ0lNRycsICdJTlBVVCcsICdJU0lOREVYJywgJ0xJTksnLCAnTUVUQScsICdQQVJBTSddOgorICAgICAgICAgICAgZm9yIGVsZW0gaW4gW2VsZW1lbnQsIGVsZW1lbnQubG93ZXIoKV06CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSAnPCVzPicgJSBlbGVtCisgICAgICAgICAgICAgICAgc2VyaWFsaXplZCA9IHNlcmlhbGl6ZShFVC5YTUwoJzwlcyAvPicgJSBlbGVtKSwgbWV0aG9kPSdodG1sJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZWQsIGV4cGVjdGVkKQorICAgICAgICAgICAgICAgIHNlcmlhbGl6ZWQgPSBzZXJpYWxpemUoRVQuWE1MKCc8JXM+PC8lcz4nICUgKGVsZW0sZWxlbSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPSdodG1sJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZWQsIGV4cGVjdGVkKQorCiAKICMKICMgeGluY2x1ZGUgdGVzdHMgKHNhbXBsZXMgZnJvbSBhcHBlbmRpeCBDIG9mIHRoZSB4aW5jbHVkZSBzcGVjaWZpY2F0aW9uKQpAQCAtMTMzMSw5NiArMTA3OSw2IEBACiA8L2RvY3VtZW50PgogIiIiLmZvcm1hdChjZ2kuZXNjYXBlKFNJTVBMRV9YTUxGSUxFLCBUcnVlKSkKIAotZGVmIHhpbmNsdWRlX2xvYWRlcihocmVmLCBwYXJzZT0ieG1sIiwgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgdHJ5OgotICAgICAgICBkYXRhID0gWElOQ0xVREVbaHJlZl0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHJhaXNlIElPRXJyb3IoInJlc291cmNlIG5vdCBmb3VuZCIpCi0gICAgaWYgcGFyc2UgPT0gInhtbCI6Ci0gICAgICAgIGZyb20geG1sLmV0cmVlLkVsZW1lbnRUcmVlIGltcG9ydCBYTUwKLSAgICAgICAgcmV0dXJuIFhNTChkYXRhKQotICAgIHJldHVybiBkYXRhCi0KLWRlZiB4aW5jbHVkZSgpOgotICAgIHIiIiIKLSAgICBCYXNpYyBpbmNsdXNpb24gZXhhbXBsZSAoWEluY2x1ZGUgQy4xKQotCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZSBhcyBFVAotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKLQotICAgID4+PiBkb2N1bWVudCA9IHhpbmNsdWRlX2xvYWRlcigiQzEueG1sIikKLSAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgeGluY2x1ZGVfbG9hZGVyKQotICAgID4+PiBwcmludCBzZXJpYWxpemUoZG9jdW1lbnQpICMgQzEKLSAgICA8ZG9jdW1lbnQ+Ci0gICAgICA8cD4xMjAgTXogaXMgYWRlcXVhdGUgZm9yIGFuIGF2ZXJhZ2UgaG9tZSB1c2VyLjwvcD4KLSAgICAgIDxkaXNjbGFpbWVyPgotICAgICAgPHA+VGhlIG9waW5pb25zIHJlcHJlc2VudGVkIGhlcmVpbiByZXByZXNlbnQgdGhvc2Ugb2YgdGhlIGluZGl2aWR1YWwKLSAgICAgIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIG9mZmljaWFsIHBvbGljeSBlbmRvcnNlZCBieSB0aGlzCi0gICAgICBvcmdhbml6YXRpb24uPC9wPgotICAgIDwvZGlzY2xhaW1lcj4KLSAgICA8L2RvY3VtZW50PgotCi0gICAgVGV4dHVhbCBpbmNsdXNpb24gZXhhbXBsZSAoWEluY2x1ZGUgQy4yKQotCi0gICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJDMi54bWwiKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCB4aW5jbHVkZV9sb2FkZXIpCi0gICAgPj4+IHByaW50IHNlcmlhbGl6ZShkb2N1bWVudCkgIyBDMgotICAgIDxkb2N1bWVudD4KLSAgICAgIDxwPlRoaXMgZG9jdW1lbnQgaGFzIGJlZW4gYWNjZXNzZWQKLSAgICAgIDMyNDM4NyB0aW1lcy48L3A+Ci0gICAgPC9kb2N1bWVudD4KLQotICAgIFRleHR1YWwgaW5jbHVzaW9uIGFmdGVyIHNpYmxpbmcgZWxlbWVudCAoYmFzZWQgb24gbW9kaWZpZWQgWEluY2x1ZGUgQy4yKQotCi0gICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJDMmIueG1sIikKLSAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgeGluY2x1ZGVfbG9hZGVyKQotICAgID4+PiBwcmludChzZXJpYWxpemUoZG9jdW1lbnQpKSAjIEMyYgotICAgIDxkb2N1bWVudD4KLSAgICAgIDxwPlRoaXMgZG9jdW1lbnQgaGFzIGJlZW4gPGVtPmFjY2Vzc2VkPC9lbT4KLSAgICAgIDMyNDM4NyB0aW1lcy48L3A+Ci0gICAgPC9kb2N1bWVudD4KLQotICAgIFRleHR1YWwgaW5jbHVzaW9uIG9mIFhNTCBleGFtcGxlIChYSW5jbHVkZSBDLjMpCi0KLSAgICA+Pj4gZG9jdW1lbnQgPSB4aW5jbHVkZV9sb2FkZXIoIkMzLnhtbCIpCi0gICAgPj4+IEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIHhpbmNsdWRlX2xvYWRlcikKLSAgICA+Pj4gcHJpbnQgc2VyaWFsaXplKGRvY3VtZW50KSAjIEMzCi0gICAgPGRvY3VtZW50PgotICAgICAgPHA+VGhlIGZvbGxvd2luZyBpcyB0aGUgc291cmNlIG9mIHRoZSAiZGF0YS54bWwiIHJlc291cmNlOjwvcD4KLSAgICAgIDxleGFtcGxlPiZsdDs/eG1sIHZlcnNpb249JzEuMCc/Jmd0OwotICAgICZsdDtkYXRhJmd0OwotICAgICAgJmx0O2l0ZW0mZ3Q7Jmx0OyFbQ0RBVEFbQnJvb2tzICZhbXA7IFNoaWVsZHNdXSZndDsmbHQ7L2l0ZW0mZ3Q7Ci0gICAgJmx0Oy9kYXRhJmd0OwotICAgIDwvZXhhbXBsZT4KLSAgICA8L2RvY3VtZW50PgotCi0gICAgRmFsbGJhY2sgZXhhbXBsZSAoWEluY2x1ZGUgQy41KQotICAgIE5vdGUhIEZhbGxiYWNrIHN1cHBvcnQgaXMgbm90IHlldCBpbXBsZW1lbnRlZAotCi0gICAgPj4+IGRvY3VtZW50ID0geGluY2x1ZGVfbG9hZGVyKCJDNS54bWwiKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCB4aW5jbHVkZV9sb2FkZXIpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIElPRXJyb3I6IHJlc291cmNlIG5vdCBmb3VuZAotICAgID4+PiAjIHByaW50IHNlcmlhbGl6ZShkb2N1bWVudCkgIyBDNQotICAgICIiIgotCi1kZWYgeGluY2x1ZGVfZGVmYXVsdCgpOgotICAgICIiIgotICAgID4+PiBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKLQotICAgID4+PiBkb2N1bWVudCA9IHhpbmNsdWRlX2xvYWRlcigiZGVmYXVsdC54bWwiKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50KQotICAgID4+PiBwcmludCBzZXJpYWxpemUoZG9jdW1lbnQpICMgZGVmYXVsdAotICAgIDxkb2N1bWVudD4KLSAgICAgIDxwPkV4YW1wbGUuPC9wPgotICAgICAgPHJvb3Q+Ci0gICAgICAgPGVsZW1lbnQga2V5PSJ2YWx1ZSI+dGV4dDwvZWxlbWVudD4KLSAgICAgICA8ZWxlbWVudD50ZXh0PC9lbGVtZW50PnRhaWwKLSAgICAgICA8ZW1wdHktZWxlbWVudCAvPgotICAgIDwvcm9vdD4KLSAgICA8L2RvY3VtZW50PgotICAgICIiIgotCiAjCiAjIGJhZGx5IGZvcm1hdHRlZCB4aTppbmNsdWRlIHRhZ3MKIApAQCAtMTQ0MSw0OTAgKzEwOTksMTY1NSBAQAogPC9kaXY+CiAiIiIKIAotZGVmIHhpbmNsdWRlX2ZhaWx1cmVzKCk6Ci0gICAgciIiIgotICAgIFRlc3QgZmFpbHVyZSB0byBsb2NhdGUgaW5jbHVkZWQgWE1MIGZpbGUuCitjbGFzcyBYSW5jbHVkZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgPj4+IGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQorICAgIGRlZiB4aW5jbHVkZV9sb2FkZXIoc2VsZiwgaHJlZiwgcGFyc2U9InhtbCIsIGVuY29kaW5nPU5vbmUpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBkYXRhID0gWElOQ0xVREVbaHJlZl0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmFpc2UgSU9FcnJvcigicmVzb3VyY2Ugbm90IGZvdW5kIikKKyAgICAgICAgaWYgcGFyc2UgPT0gInhtbCI6CisgICAgICAgICAgICBkYXRhID0gRVQuWE1MKGRhdGEpCisgICAgICAgIHJldHVybiBkYXRhCiAKLSAgICA+Pj4gZGVmIG5vbmVfbG9hZGVyKGhyZWYsIHBhcnNlciwgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgLi4uICAgICByZXR1cm4gTm9uZQorICAgIGRlZiBub25lX2xvYWRlcihzZWxmLCBocmVmLCBwYXJzZXIsIGVuY29kaW5nPU5vbmUpOgorICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgPj4+IGRvY3VtZW50ID0gRVQuWE1MKFhJTkNMVURFWyJDMS54bWwiXSkKLSAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgbG9hZGVyPW5vbmVfbG9hZGVyKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBGYXRhbEluY2x1ZGVFcnJvcjogY2Fubm90IGxvYWQgJ2Rpc2NsYWltZXIueG1sJyBhcyAneG1sJworICAgIGRlZiB0ZXN0X3hpbmNsdWRlX2RlZmF1bHQoc2VsZik6CisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQorICAgICAgICBkb2MgPSBzZWxmLnhpbmNsdWRlX2xvYWRlcignZGVmYXVsdC54bWwnKQorICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvYykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZG9jKSwKKyAgICAgICAgICAgICc8ZG9jdW1lbnQ+XG4nCisgICAgICAgICAgICAnICA8cD5FeGFtcGxlLjwvcD5cbicKKyAgICAgICAgICAgICcgIDxyb290PlxuJworICAgICAgICAgICAgJyAgIDxlbGVtZW50IGtleT0idmFsdWUiPnRleHQ8L2VsZW1lbnQ+XG4nCisgICAgICAgICAgICAnICAgPGVsZW1lbnQ+dGV4dDwvZWxlbWVudD50YWlsXG4nCisgICAgICAgICAgICAnICAgPGVtcHR5LWVsZW1lbnQgLz5cbicKKyAgICAgICAgICAgICc8L3Jvb3Q+XG4nCisgICAgICAgICAgICAnPC9kb2N1bWVudD4nKQogCi0gICAgVGVzdCBmYWlsdXJlIHRvIGxvY2F0ZSBpbmNsdWRlZCB0ZXh0IGZpbGUuCisgICAgZGVmIHRlc3RfeGluY2x1ZGUoc2VsZik6CisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50SW5jbHVkZQogCi0gICAgPj4+IGRvY3VtZW50ID0gRVQuWE1MKFhJTkNMVURFWyJDMi54bWwiXSkKLSAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgbG9hZGVyPW5vbmVfbG9hZGVyKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBGYXRhbEluY2x1ZGVFcnJvcjogY2Fubm90IGxvYWQgJ2NvdW50LnR4dCcgYXMgJ3RleHQnCisgICAgICAgICMgQmFzaWMgaW5jbHVzaW9uIGV4YW1wbGUgKFhJbmNsdWRlIEMuMSkKKyAgICAgICAgZG9jdW1lbnQgPSBzZWxmLnhpbmNsdWRlX2xvYWRlcigiQzEueG1sIikKKyAgICAgICAgRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgc2VsZi54aW5jbHVkZV9sb2FkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGRvY3VtZW50KSwKKyAgICAgICAgICAgICc8ZG9jdW1lbnQ+XG4nCisgICAgICAgICAgICAnICA8cD4xMjAgTXogaXMgYWRlcXVhdGUgZm9yIGFuIGF2ZXJhZ2UgaG9tZSB1c2VyLjwvcD5cbicKKyAgICAgICAgICAgICcgIDxkaXNjbGFpbWVyPlxuJworICAgICAgICAgICAgJyAgPHA+VGhlIG9waW5pb25zIHJlcHJlc2VudGVkIGhlcmVpbiByZXByZXNlbnQgdGhvc2Ugb2YgdGhlIGluZGl2aWR1YWxcbicKKyAgICAgICAgICAgICcgIGFuZCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIG9mZmljaWFsIHBvbGljeSBlbmRvcnNlZCBieSB0aGlzXG4nCisgICAgICAgICAgICAnICBvcmdhbml6YXRpb24uPC9wPlxuJworICAgICAgICAgICAgJzwvZGlzY2xhaW1lcj5cbicKKyAgICAgICAgICAgICc8L2RvY3VtZW50PicpICMgQzEKIAotICAgIFRlc3QgYmFkIHBhcnNlIHR5cGUuCisgICAgICAgICMgVGV4dHVhbCBpbmNsdXNpb24gZXhhbXBsZSAoWEluY2x1ZGUgQy4yKQorICAgICAgICBkb2N1bWVudCA9IHNlbGYueGluY2x1ZGVfbG9hZGVyKCJDMi54bWwiKQorICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCBzZWxmLnhpbmNsdWRlX2xvYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZG9jdW1lbnQpLAorICAgICAgICAgICAgJzxkb2N1bWVudD5cbicKKyAgICAgICAgICAgICcgIDxwPlRoaXMgZG9jdW1lbnQgaGFzIGJlZW4gYWNjZXNzZWRcbicKKyAgICAgICAgICAgICcgIDMyNDM4NyB0aW1lcy48L3A+XG4nCisgICAgICAgICAgICAnPC9kb2N1bWVudD4nKSAjIEMyCiAKLSAgICA+Pj4gZG9jdW1lbnQgPSBFVC5YTUwoWElOQ0xVREVfQkFEWyJCMS54bWwiXSkKLSAgICA+Pj4gRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgbG9hZGVyPW5vbmVfbG9hZGVyKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBGYXRhbEluY2x1ZGVFcnJvcjogdW5rbm93biBwYXJzZSB0eXBlIGluIHhpOmluY2x1ZGUgdGFnICgnQkFEX1RZUEUnKQorICAgICAgICAjIFRleHR1YWwgaW5jbHVzaW9uIGFmdGVyIHNpYmxpbmcgZWxlbWVudCAoYmFzZWQgb24gbW9kaWZpZWQgWEluY2x1ZGUgQy4yKQorICAgICAgICBkb2N1bWVudCA9IHNlbGYueGluY2x1ZGVfbG9hZGVyKCJDMmIueG1sIikKKyAgICAgICAgRWxlbWVudEluY2x1ZGUuaW5jbHVkZShkb2N1bWVudCwgc2VsZi54aW5jbHVkZV9sb2FkZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGRvY3VtZW50KSwKKyAgICAgICAgICAgICc8ZG9jdW1lbnQ+XG4nCisgICAgICAgICAgICAnICA8cD5UaGlzIGRvY3VtZW50IGhhcyBiZWVuIDxlbT5hY2Nlc3NlZDwvZW0+XG4nCisgICAgICAgICAgICAnICAzMjQzODcgdGltZXMuPC9wPlxuJworICAgICAgICAgICAgJzwvZG9jdW1lbnQ+JykgIyBDMmIKIAotICAgIFRlc3QgeGk6ZmFsbGJhY2sgb3V0c2lkZSB4aTppbmNsdWRlLgorICAgICAgICAjIFRleHR1YWwgaW5jbHVzaW9uIG9mIFhNTCBleGFtcGxlIChYSW5jbHVkZSBDLjMpCisgICAgICAgIGRvY3VtZW50ID0gc2VsZi54aW5jbHVkZV9sb2FkZXIoIkMzLnhtbCIpCisgICAgICAgIEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIHNlbGYueGluY2x1ZGVfbG9hZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShkb2N1bWVudCksCisgICAgICAgICAgICAnPGRvY3VtZW50PlxuJworICAgICAgICAgICAgJyAgPHA+VGhlIGZvbGxvd2luZyBpcyB0aGUgc291cmNlIG9mIHRoZSAiZGF0YS54bWwiIHJlc291cmNlOjwvcD5cbicKKyAgICAgICAgICAgICIgIDxleGFtcGxlPiZsdDs/eG1sIHZlcnNpb249JzEuMCc/Jmd0O1xuIgorICAgICAgICAgICAgJyZsdDtkYXRhJmd0O1xuJworICAgICAgICAgICAgJyAgJmx0O2l0ZW0mZ3Q7Jmx0OyFbQ0RBVEFbQnJvb2tzICZhbXA7IFNoaWVsZHNdXSZndDsmbHQ7L2l0ZW0mZ3Q7XG4nCisgICAgICAgICAgICAnJmx0Oy9kYXRhJmd0O1xuJworICAgICAgICAgICAgJzwvZXhhbXBsZT5cbicKKyAgICAgICAgICAgICc8L2RvY3VtZW50PicpICMgQzMKIAotICAgID4+PiBkb2N1bWVudCA9IEVULlhNTChYSU5DTFVERV9CQURbIkIyLnhtbCJdKQotICAgID4+PiBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCBsb2FkZXI9bm9uZV9sb2FkZXIpCi0gICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgIEZhdGFsSW5jbHVkZUVycm9yOiB4aTpmYWxsYmFjayB0YWcgbXVzdCBiZSBjaGlsZCBvZiB4aTppbmNsdWRlICgne2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWEluY2x1ZGV9ZmFsbGJhY2snKQotICAgICIiIgorICAgICAgICAjIEZhbGxiYWNrIGV4YW1wbGUgKFhJbmNsdWRlIEMuNSkKKyAgICAgICAgIyBOb3RlISBGYWxsYmFjayBzdXBwb3J0IGlzIG5vdCB5ZXQgaW1wbGVtZW50ZWQKKyAgICAgICAgZG9jdW1lbnQgPSBzZWxmLnhpbmNsdWRlX2xvYWRlcigiQzUueG1sIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yKSBhcyBjbToKKyAgICAgICAgICAgIEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIHNlbGYueGluY2x1ZGVfbG9hZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCAncmVzb3VyY2Ugbm90IGZvdW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZG9jdW1lbnQpLAorICAgICAgICAgICAgJzxkaXYgeG1sbnM6bnMwPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hJbmNsdWRlIj5cbicKKyAgICAgICAgICAgICcgIDxuczA6aW5jbHVkZSBocmVmPSJleGFtcGxlLnR4dCIgcGFyc2U9InRleHQiPlxuJworICAgICAgICAgICAgJyAgICA8bnMwOmZhbGxiYWNrPlxuJworICAgICAgICAgICAgJyAgICAgIDxuczA6aW5jbHVkZSBocmVmPSJmYWxsYmFjay1leGFtcGxlLnR4dCIgcGFyc2U9InRleHQiPlxuJworICAgICAgICAgICAgJyAgICAgICAgPG5zMDpmYWxsYmFjaz48YSBocmVmPSJtYWlsdG86Ym9iQGV4YW1wbGUub3JnIj5SZXBvcnQgZXJyb3I8L2E+PC9uczA6ZmFsbGJhY2s+XG4nCisgICAgICAgICAgICAnICAgICAgPC9uczA6aW5jbHVkZT5cbicKKyAgICAgICAgICAgICcgICAgPC9uczA6ZmFsbGJhY2s+XG4nCisgICAgICAgICAgICAnICA8L25zMDppbmNsdWRlPlxuJworICAgICAgICAgICAgJzwvZGl2PicpICMgQzUKKworICAgIGRlZiB0ZXN0X3hpbmNsdWRlX2ZhaWx1cmVzKHNlbGYpOgorICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKKworICAgICAgICAjIFRlc3QgZmFpbHVyZSB0byBsb2NhdGUgaW5jbHVkZWQgWE1MIGZpbGUuCisgICAgICAgIGRvY3VtZW50ID0gRVQuWE1MKFhJTkNMVURFWyJDMS54bWwiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFbGVtZW50SW5jbHVkZS5GYXRhbEluY2x1ZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCBsb2FkZXI9c2VsZi5ub25lX2xvYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAiY2Fubm90IGxvYWQgJ2Rpc2NsYWltZXIueG1sJyBhcyAneG1sJyIpCisKKyAgICAgICAgIyBUZXN0IGZhaWx1cmUgdG8gbG9jYXRlIGluY2x1ZGVkIHRleHQgZmlsZS4KKyAgICAgICAgZG9jdW1lbnQgPSBFVC5YTUwoWElOQ0xVREVbIkMyLnhtbCJdKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEVsZW1lbnRJbmNsdWRlLkZhdGFsSW5jbHVkZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIEVsZW1lbnRJbmNsdWRlLmluY2x1ZGUoZG9jdW1lbnQsIGxvYWRlcj1zZWxmLm5vbmVfbG9hZGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICJjYW5ub3QgbG9hZCAnY291bnQudHh0JyBhcyAndGV4dCciKQorCisgICAgICAgICMgVGVzdCBiYWQgcGFyc2UgdHlwZS4KKyAgICAgICAgZG9jdW1lbnQgPSBFVC5YTUwoWElOQ0xVREVfQkFEWyJCMS54bWwiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFbGVtZW50SW5jbHVkZS5GYXRhbEluY2x1ZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCBsb2FkZXI9c2VsZi5ub25lX2xvYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAidW5rbm93biBwYXJzZSB0eXBlIGluIHhpOmluY2x1ZGUgdGFnICgnQkFEX1RZUEUnKSIpCisKKyAgICAgICAgIyBUZXN0IHhpOmZhbGxiYWNrIG91dHNpZGUgeGk6aW5jbHVkZS4KKyAgICAgICAgZG9jdW1lbnQgPSBFVC5YTUwoWElOQ0xVREVfQkFEWyJCMi54bWwiXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFbGVtZW50SW5jbHVkZS5GYXRhbEluY2x1ZGVFcnJvcikgYXMgY206CisgICAgICAgICAgICBFbGVtZW50SW5jbHVkZS5pbmNsdWRlKGRvY3VtZW50LCBsb2FkZXI9c2VsZi5ub25lX2xvYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAieGk6ZmFsbGJhY2sgdGFnIG11c3QgYmUgY2hpbGQgb2YgeGk6aW5jbHVkZSAiCisgICAgICAgICAgICAgICAgIigne2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWEluY2x1ZGV9ZmFsbGJhY2snKSIpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgcmVwb3J0ZWQgYnVncwogCi1kZWYgYnVnX3htbHRvb2xraXQyMSgpOgotICAgICIiIgorY2xhc3MgQnVnc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgbWFyc2hhbGxlciBnaXZlcyBvYnNjdXJlIGVycm9ycyBmb3Igbm9uLXN0cmluZyB2YWx1ZXMKKyAgICBkZWYgdGVzdF9idWdfeG1sdG9vbGtpdDIxKHNlbGYpOgorICAgICAgICAjIG1hcnNoYWxsZXIgZ2l2ZXMgb2JzY3VyZSBlcnJvcnMgZm9yIG5vbi1zdHJpbmcgdmFsdWVzCiAKLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoMTIzKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyB0YWcKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgVHlwZUVycm9yOiBjYW5ub3Qgc2VyaWFsaXplIDEyMyAodHlwZSBpbnQpCi0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJlbGVtIikKLSAgICA+Pj4gZWxlbS50ZXh0ID0gMTIzCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIHRleHQKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgVHlwZUVycm9yOiBjYW5ub3Qgc2VyaWFsaXplIDEyMyAodHlwZSBpbnQpCi0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJlbGVtIikKLSAgICA+Pj4gZWxlbS50YWlsID0gMTIzCi0gICAgPj4+IHNlcmlhbGl6ZShlbGVtKSAjIHRhaWwKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgVHlwZUVycm9yOiBjYW5ub3Qgc2VyaWFsaXplIDEyMyAodHlwZSBpbnQpCi0gICAgPj4+IGVsZW0gPSBFVC5FbGVtZW50KCJlbGVtIikKLSAgICA+Pj4gZWxlbS5zZXQoMTIzLCAiMTIzIikKLSAgICA+Pj4gc2VyaWFsaXplKGVsZW0pICMgYXR0cmlidXRlIGtleQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBUeXBlRXJyb3I6IGNhbm5vdCBzZXJpYWxpemUgMTIzICh0eXBlIGludCkKLSAgICA+Pj4gZWxlbSA9IEVULkVsZW1lbnQoImVsZW0iKQotICAgID4+PiBlbGVtLnNldCgiMTIzIiwgMTIzKQotICAgID4+PiBzZXJpYWxpemUoZWxlbSkgIyBhdHRyaWJ1dGUgdmFsdWUKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgVHlwZUVycm9yOiBjYW5ub3Qgc2VyaWFsaXplIDEyMyAodHlwZSBpbnQpCisgICAgICAgIGRlZiBjaGVjayhlbGVtKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgICAgICBzZXJpYWxpemUoZWxlbSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICdjYW5ub3Qgc2VyaWFsaXplIDEyMyAodHlwZSBpbnQpJykKIAotICAgICIiIgorICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgxMjMpCisgICAgICAgIGNoZWNrKGVsZW0pICMgdGFnCiAKLWRlZiBidWdfeG1sdG9vbGtpdDI1KCk6Ci0gICAgIiIiCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJlbGVtIikKKyAgICAgICAgZWxlbS50ZXh0ID0gMTIzCisgICAgICAgIGNoZWNrKGVsZW0pICMgdGV4dAogCi0gICAgdHlwbyBpbiBFbGVtZW50VHJlZS5maW5kdGV4dAorICAgICAgICBlbGVtID0gRVQuRWxlbWVudCgiZWxlbSIpCisgICAgICAgIGVsZW0udGFpbCA9IDEyMworICAgICAgICBjaGVjayhlbGVtKSAjIHRhaWwKIAotICAgID4+PiBlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCi0gICAgPj4+IHRyZWUgPSBFVC5FbGVtZW50VHJlZShlbGVtKQotICAgID4+PiB0cmVlLmZpbmR0ZXh0KCJ0YWciKQotICAgICd0ZXh0JwotICAgID4+PiB0cmVlLmZpbmR0ZXh0KCJzZWN0aW9uL3RhZyIpCi0gICAgJ3N1YnRleHQnCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJlbGVtIikKKyAgICAgICAgZWxlbS5zZXQoMTIzLCAiMTIzIikKKyAgICAgICAgY2hlY2soZWxlbSkgIyBhdHRyaWJ1dGUga2V5CiAKLSAgICAiIiIKKyAgICAgICAgZWxlbSA9IEVULkVsZW1lbnQoImVsZW0iKQorICAgICAgICBlbGVtLnNldCgiMTIzIiwgMTIzKQorICAgICAgICBjaGVjayhlbGVtKSAjIGF0dHJpYnV0ZSB2YWx1ZQogCi1kZWYgYnVnX3htbHRvb2xraXQyOCgpOgotICAgICIiIgorICAgIGRlZiB0ZXN0X2J1Z194bWx0b29sa2l0MjUoc2VsZik6CisgICAgICAgICMgdHlwbyBpbiBFbGVtZW50VHJlZS5maW5kdGV4dAogCi0gICAgLi8vdGFnIGNhdXNlcyBleGNlcHRpb25zCisgICAgICAgIGVsZW0gPSBFVC5YTUwoU0FNUExFX1hNTCkKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKGVsZW0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJlZS5maW5kdGV4dCgidGFnIiksICd0ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmZpbmR0ZXh0KCJzZWN0aW9uL3RhZyIpLCAnc3VidGV4dCcpCiAKLSAgICA+Pj4gdHJlZSA9IEVULlhNTCgiPGRvYz48dGFibGU+PHRib2R5Lz48L3RhYmxlPjwvZG9jPiIpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KHRyZWUuZmluZGFsbCgiLi8vdGhlYWQiKSkKLSAgICBbXQotICAgID4+PiBzdW1tYXJpemVfbGlzdCh0cmVlLmZpbmRhbGwoIi4vL3Rib2R5IikpCi0gICAgWyd0Ym9keSddCisgICAgZGVmIHRlc3RfYnVnX3htbHRvb2xraXQyOChzZWxmKToKKyAgICAgICAgIyAuLy90YWcgY2F1c2VzIGV4Y2VwdGlvbnMKIAotICAgICIiIgorICAgICAgICB0cmVlID0gRVQuWE1MKCI8ZG9jPjx0YWJsZT48dGJvZHkvPjwvdGFibGU+PC9kb2M+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdCh0cmVlLmZpbmRhbGwoIi4vL3RoZWFkIikpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdCh0cmVlLmZpbmRhbGwoIi4vL3Rib2R5IikpLCBbJ3Rib2R5J10pCiAKLWRlZiBidWdfeG1sdG9vbGtpdFgxKCk6Ci0gICAgIiIiCisgICAgZGVmIHRlc3RfYnVnX3htbHRvb2xraXRYMShzZWxmKToKKyAgICAgICAgIyBkdW1wKCkgZG9lc24ndCBmbHVzaCB0aGUgb3V0cHV0IGJ1ZmZlcgogCi0gICAgZHVtcCgpIGRvZXNuJ3QgZmx1c2ggdGhlIG91dHB1dCBidWZmZXIKKyAgICAgICAgdHJlZSA9IEVULlhNTCgiPGRvYz48dGFibGU+PHRib2R5Lz48L3RhYmxlPjwvZG9jPiIpCisgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBzdGRvdXQ6CisgICAgICAgICAgICBFVC5kdW1wKHRyZWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dC5nZXR2YWx1ZSgpLCAnPGRvYz48dGFibGU+PHRib2R5IC8+PC90YWJsZT48L2RvYz5cbicpCiAKLSAgICA+Pj4gdHJlZSA9IEVULlhNTCgiPGRvYz48dGFibGU+PHRib2R5Lz48L3RhYmxlPjwvZG9jPiIpCi0gICAgPj4+IEVULmR1bXAodHJlZSk7IHN5cy5zdGRvdXQud3JpdGUoInRhaWwiKQotICAgIDxkb2M+PHRhYmxlPjx0Ym9keSAvPjwvdGFibGU+PC9kb2M+Ci0gICAgdGFpbAorICAgIGRlZiB0ZXN0X2J1Z194bWx0b29sa2l0Mzkoc2VsZik6CisgICAgICAgICMgbm9uLWFzY2lpIGVsZW1lbnQgYW5kIGF0dHJpYnV0ZSBuYW1lcyBkb2Vzbid0IHdvcmsKIAotICAgICIiIgorICAgICAgICB0cmVlID0gRVQuWE1MKGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/Pjx0XHhlNGcgLz4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKHRyZWUsICJ1dGYtOCIpLCBiJzx0XHhjM1x4YTRnIC8+JykKIAotZGVmIGJ1Z194bWx0b29sa2l0MzkoKToKLSAgICAiIiIKKyAgICAgICAgdHJlZSA9IEVULlhNTChiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz4iCisgICAgICAgICAgICAgICAgICAgICAgYiI8dGFnIFx4ZTR0dHI9J3YmIzIyODtsdWUnIC8+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmF0dHJpYiwge3UnXHhlNHR0cic6IHUndlx4ZTRsdWUnfSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyh0cmVlLCAidXRmLTgiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWcgXHhjM1x4YTR0dHI9InZceGMzXHhhNGx1ZSIgLz4nKQogCi0gICAgbm9uLWFzY2lpIGVsZW1lbnQgYW5kIGF0dHJpYnV0ZSBuYW1lcyBkb2Vzbid0IHdvcmsKKyAgICAgICAgdHJlZSA9IEVULlhNTChiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz4iCisgICAgICAgICAgICAgICAgICAgICAgYic8dFx4ZTRnPnRleHQ8L3RceGU0Zz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKHRyZWUsICJ1dGYtOCIpLAorICAgICAgICAgICAgICAgIGInPHRceGMzXHhhNGc+dGV4dDwvdFx4YzNceGE0Zz4nKQogCi0gICAgPj4+IHRyZWUgPSBFVC5YTUwoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz48dFx4ZTRnIC8+IikKLSAgICA+Pj4gRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IikKLSAgICAnPHRcXHhjM1xceGE0ZyAvPicKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnQodSJ0XHUwMGU0ZyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IiksIGInPHRceGMzXHhhNGcgLz4nKQogCi0gICAgPj4+IHRyZWUgPSBFVC5YTUwoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz48dGFnIFx4ZTR0dHI9J3YmIzIyODtsdWUnIC8+IikKLSAgICA+Pj4gdHJlZS5hdHRyaWIKLSAgICB7dSdcXHhlNHR0cic6IHUndlxceGU0bHVlJ30KLSAgICA+Pj4gRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IikKLSAgICAnPHRhZyBcXHhjM1xceGE0dHRyPSJ2XFx4YzNcXHhhNGx1ZSIgLz4nCisgICAgICAgIHRyZWUgPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICB0cmVlLnNldCh1Ilx1MDBlNHR0ciIsIHUidlx1MDBlNGx1ZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IiksCisgICAgICAgICAgICAgICAgYic8dGFnIFx4YzNceGE0dHRyPSJ2XHhjM1x4YTRsdWUiIC8+JykKIAotICAgID4+PiB0cmVlID0gRVQuWE1MKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+PHRceGU0Zz50ZXh0PC90XHhlNGc+IikKLSAgICA+Pj4gRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IikKLSAgICAnPHRcXHhjM1xceGE0Zz50ZXh0PC90XFx4YzNcXHhhNGc+JworICAgIGRlZiB0ZXN0X2J1Z194bWx0b29sa2l0NTQoc2VsZik6CisgICAgICAgICMgcHJvYmxlbXMgaGFuZGxpbmcgaW50ZXJuYWxseSBkZWZpbmVkIGVudGl0aWVzCiAKLSAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnQodSJ0XHUwMGU0ZyIpCi0gICAgPj4+IEVULnRvc3RyaW5nKHRyZWUsICJ1dGYtOCIpCi0gICAgJzx0XFx4YzNcXHhhNGcgLz4nCisgICAgICAgIGUgPSBFVC5YTUwoIjwhRE9DVFlQRSBkb2MgWzwhRU5USVRZIGxkb3RzICcmI3g4MjMwOyc+XT4iCisgICAgICAgICAgICAgICAgICAgJzxkb2M+Jmxkb3RzOzwvZG9jPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGUpLCAnPGRvYz4mIzMzMzI4OzwvZG9jPicpCiAKLSAgICA+Pj4gdHJlZSA9IEVULkVsZW1lbnQoInRhZyIpCi0gICAgPj4+IHRyZWUuc2V0KHUiXHUwMGU0dHRyIiwgdSJ2XHUwMGU0bHVlIikKLSAgICA+Pj4gRVQudG9zdHJpbmcodHJlZSwgInV0Zi04IikKLSAgICAnPHRhZyBcXHhjM1xceGE0dHRyPSJ2XFx4YzNcXHhhNGx1ZSIgLz4nCisgICAgZGVmIHRlc3RfYnVnX3htbHRvb2xraXQ1NShzZWxmKToKKyAgICAgICAgIyBtYWtlIHN1cmUgd2UncmUgcmVwb3J0aW5nIHRoZSBmaXJzdCBlcnJvciwgbm90IHRoZSBsYXN0CiAKLSAgICAiIiIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhFVC5QYXJzZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIEVULlhNTCgiPCFET0NUWVBFIGRvYyBTWVNURU0gJ2RvYy5kdGQnPiIKKyAgICAgICAgICAgICAgICAgICAnPGRvYz4mbGRvdHM7Jm5kb3RzOyZyZG90czs8L2RvYz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICd1bmRlZmluZWQgZW50aXR5ICZsZG90czs6IGxpbmUgMSwgY29sdW1uIDM2JykKIAotZGVmIGJ1Z194bWx0b29sa2l0NTQoKToKLSAgICAiIiIKKyAgICBkZWYgdGVzdF9idWdfeG1sdG9vbGtpdDYwKHNlbGYpOgorICAgICAgICAjIEhhbmRsZSBjcmFzaCBpbiBzdHJlYW0gc291cmNlLgogCi0gICAgcHJvYmxlbXMgaGFuZGxpbmcgaW50ZXJuYWxseSBkZWZpbmVkIGVudGl0aWVzCisgICAgICAgIGNsYXNzIEV4Y2VwdGlvbkZpbGU6CisgICAgICAgICAgICBkZWYgcmVhZChzZWxmLCB4KToKKyAgICAgICAgICAgICAgICByYWlzZSBJT0Vycm9yCiAKLSAgICA+Pj4gZSA9IEVULlhNTCgiPCFET0NUWVBFIGRvYyBbPCFFTlRJVFkgbGRvdHMgJyYjeDgyMzA7Jz5dPjxkb2M+Jmxkb3RzOzwvZG9jPiIpCi0gICAgPj4+IHNlcmlhbGl6ZShlKQotICAgICc8ZG9jPiYjMzMzMjg7PC9kb2M+JworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJT0Vycm9yLCBFVC5wYXJzZSwgRXhjZXB0aW9uRmlsZSgpKQogCi0gICAgIiIiCisgICAgZGVmIHRlc3RfYnVnX3htbHRvb2xraXQ2MihzZWxmKToKKyAgICAgICAgIyBEb24ndCBjcmFzaCB3aGVuIHVzaW5nIGN1c3RvbSBlbnRpdGllcy4KIAotZGVmIGJ1Z194bWx0b29sa2l0NTUoKToKLSAgICAiIiIKLQotICAgIG1ha2Ugc3VyZSB3ZSdyZSByZXBvcnRpbmcgdGhlIGZpcnN0IGVycm9yLCBub3QgdGhlIGxhc3QKLQotICAgID4+PiBlID0gRVQuWE1MKCI8IURPQ1RZUEUgZG9jIFNZU1RFTSAnZG9jLmR0ZCc+PGRvYz4mbGRvdHM7Jm5kb3RzOyZyZG90czs8L2RvYz4iKQotICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLSAgICBQYXJzZUVycm9yOiB1bmRlZmluZWQgZW50aXR5ICZsZG90czs6IGxpbmUgMSwgY29sdW1uIDM2Ci0KLSAgICAiIiIKLQotY2xhc3MgRXhjZXB0aW9uRmlsZToKLSAgICBkZWYgcmVhZChzZWxmLCB4KToKLSAgICAgICAgcmFpc2UgSU9FcnJvcgotCi1kZWYgeG1sdG9vbGtpdDYwKCk6Ci0gICAgIiIiCi0KLSAgICBIYW5kbGUgY3Jhc2ggaW4gc3RyZWFtIHNvdXJjZS4KLSAgICA+Pj4gdHJlZSA9IEVULnBhcnNlKEV4Y2VwdGlvbkZpbGUoKSkKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgSU9FcnJvcgotCi0gICAgIiIiCi0KLVhNTFRPT0xLSVQ2Ml9ET0MgPSAiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorICAgICAgICBFTlRJVElFUyA9IHt1J3JzcXVvJzogdSdcdTIwMTknLCB1J2xzcXVvJzogdSdcdTIwMTgnfQorICAgICAgICBwYXJzZXIgPSBFVC5YTUxUcmVlQnVpbGRlcigpCisgICAgICAgIHBhcnNlci5lbnRpdHkudXBkYXRlKEVOVElUSUVTKQorICAgICAgICBwYXJzZXIuZmVlZCgiIiI8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgogPCFET0NUWVBFIHBhdGVudC1hcHBsaWNhdGlvbi1wdWJsaWNhdGlvbiBTWVNURU0gInBhcC12MTUtMjAwMS0wMS0zMS5kdGQiIFtdPgogPHBhdGVudC1hcHBsaWNhdGlvbi1wdWJsaWNhdGlvbj4KIDxzdWJkb2MtYWJzdHJhY3Q+CiA8cGFyYWdyYXBoIGlkPSJBLTAwMDEiIGx2bD0iMCI+QSBuZXcgY3VsdGl2YXIgb2YgQmVnb25pYSBwbGFudCBuYW1lZCAmbHNxdW87QkNUOTgwMUJFRyZyc3F1bzsuPC9wYXJhZ3JhcGg+CiA8L3N1YmRvYy1hYnN0cmFjdD4KLTwvcGF0ZW50LWFwcGxpY2F0aW9uLXB1YmxpY2F0aW9uPiIiIgorPC9wYXRlbnQtYXBwbGljYXRpb24tcHVibGljYXRpb24+IiIiKQorICAgICAgICB0ID0gcGFyc2VyLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LmZpbmQoJy4vL3BhcmFncmFwaCcpLnRleHQsCisgICAgICAgICAgICB1J0EgbmV3IGN1bHRpdmFyIG9mIEJlZ29uaWEgcGxhbnQgbmFtZWQgXHUyMDE4QkNUOTgwMUJFR1x1MjAxOS4nKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMuZ2V0dHJhY2UoKSwgIlNraXBzIHVuZGVyIGNvdmVyYWdlLiIpCisgICAgZGVmIHRlc3RfYnVnX3htbHRvb2xraXQ2MyhzZWxmKToKKyAgICAgICAgIyBDaGVjayByZWZlcmVuY2UgbGVhay4KKyAgICAgICAgZGVmIHhtbHRvb2xraXQ2MygpOgorICAgICAgICAgICAgdHJlZSA9IEVULlRyZWVCdWlsZGVyKCkKKyAgICAgICAgICAgIHRyZWUuc3RhcnQoInRhZyIsIHt9KQorICAgICAgICAgICAgdHJlZS5kYXRhKCJ0ZXh0IikKKyAgICAgICAgICAgIHRyZWUuZW5kKCJ0YWciKQogCi1kZWYgeG1sdG9vbGtpdDYyKCk6Ci0gICAgIiIiCisgICAgICAgIHhtbHRvb2xraXQ2MygpCisgICAgICAgIGNvdW50ID0gc3lzLmdldHJlZmNvdW50KE5vbmUpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgeG1sdG9vbGtpdDYzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0cmVmY291bnQoTm9uZSksIGNvdW50KQogCi0gICAgRG9uJ3QgY3Jhc2ggd2hlbiB1c2luZyBjdXN0b20gZW50aXRpZXMuCisgICAgZGVmIHRlc3RfYnVnXzIwMDcwOF9uZXdsaW5lKHNlbGYpOgorICAgICAgICAjIFByZXNlcnZlIG5ld2xpbmVzIGluIGF0dHJpYnV0ZXMuCiAKLSAgICA+Pj4geG1sdG9vbGtpdDYyKCkKLSAgICB1J0EgbmV3IGN1bHRpdmFyIG9mIEJlZ29uaWEgcGxhbnQgbmFtZWQgXHUyMDE4QkNUOTgwMUJFR1x1MjAxOS4nCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdTb21lVGFnJywgdGV4dD0iZGVmIF9mKCk6XG4gIHJldHVybiAzXG4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULnRvc3RyaW5nKGUpLAorICAgICAgICAgICAgICAgIGInPFNvbWVUYWcgdGV4dD0iZGVmIF9mKCk6JiMxMDsgIHJldHVybiAzJiMxMDsiIC8+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5YTUwoRVQudG9zdHJpbmcoZSkpLmdldCgidGV4dCIpLAorICAgICAgICAgICAgICAgICdkZWYgX2YoKTpcbiAgcmV0dXJuIDNcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoRVQuWE1MKEVULnRvc3RyaW5nKGUpKSksCisgICAgICAgICAgICAgICAgYic8U29tZVRhZyB0ZXh0PSJkZWYgX2YoKTomIzEwOyAgcmV0dXJuIDMmIzEwOyIgLz4nKQogCi0gICAgIiIiCi0gICAgRU5USVRJRVMgPSB7dSdyc3F1byc6IHUnXHUyMDE5JywgdSdsc3F1byc6IHUnXHUyMDE4J30KLSAgICBwYXJzZXIgPSBFVC5YTUxUcmVlQnVpbGRlcigpCi0gICAgcGFyc2VyLmVudGl0eS51cGRhdGUoRU5USVRJRVMpCi0gICAgcGFyc2VyLmZlZWQoWE1MVE9PTEtJVDYyX0RPQykKLSAgICB0ID0gcGFyc2VyLmNsb3NlKCkKLSAgICByZXR1cm4gdC5maW5kKCcuLy9wYXJhZ3JhcGgnKS50ZXh0CisgICAgZGVmIHRlc3RfYnVnXzIwMDcwOF9jbG9zZShzZWxmKToKKyAgICAgICAgIyBUZXN0IGRlZmF1bHQgYnVpbGRlci4KKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKCkgIyBkZWZhdWx0CisgICAgICAgIHBhcnNlci5mZWVkKCI8ZWxlbWVudD5zb21lIHRleHQ8L2VsZW1lbnQ+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuY2xvc2UoKS50YWcsICdlbGVtZW50JykKIAotZGVmIHhtbHRvb2xraXQ2MygpOgotICAgICIiIgorICAgICAgICAjIFRlc3QgY3VzdG9tIGJ1aWxkZXIuCisgICAgICAgIGNsYXNzIEVjaG9UYXJnZXQ6CisgICAgICAgICAgICBkZWYgc3RhcnQoc2VsZiwgdGFnLCBhdHRyaWIpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGRlZiBlbmQoc2VsZiwgdGFnKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgZGF0YShzZWxmLCB0ZXh0KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIEVULkVsZW1lbnQoImVsZW1lbnQiKSAjIHNpbXVsYXRlIHJvb3QKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1FY2hvVGFyZ2V0KCkpCisgICAgICAgIHBhcnNlci5mZWVkKCI8ZWxlbWVudD5zb21lIHRleHQ8L2VsZW1lbnQ+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJzZXIuY2xvc2UoKS50YWcsICdlbGVtZW50JykKIAotICAgIENoZWNrIHJlZmVyZW5jZSBsZWFrLgotICAgID4+PiB4bWx0b29sa2l0NjMoKQotICAgID4+PiBjb3VudCA9IHN5cy5nZXRyZWZjb3VudChOb25lKQotICAgID4+PiBmb3IgaSBpbiByYW5nZSgxMDAwKToKLSAgICAuLi4gICAgIHhtbHRvb2xraXQ2MygpCi0gICAgPj4+IHN5cy5nZXRyZWZjb3VudChOb25lKSAtIGNvdW50Ci0gICAgMAorICAgIGRlZiB0ZXN0X2J1Z18yMDA3MDlfZGVmYXVsdF9uYW1lc3BhY2Uoc2VsZik6CisgICAgICAgIGUgPSBFVC5FbGVtZW50KCJ7ZGVmYXVsdH1lbGVtIikKKyAgICAgICAgcyA9IEVULlN1YkVsZW1lbnQoZSwgIntkZWZhdWx0fWVsZW0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlLCBkZWZhdWx0X25hbWVzcGFjZT0iZGVmYXVsdCIpLCAjIDEKKyAgICAgICAgICAgICAgICAnPGVsZW0geG1sbnM9ImRlZmF1bHQiPjxlbGVtIC8+PC9lbGVtPicpCiAKLSAgICAiIiIKLSAgICB0cmVlID0gRVQuVHJlZUJ1aWxkZXIoKQotICAgIHRyZWUuc3RhcnQoInRhZyIsIHt9KQotICAgIHRyZWUuZGF0YSgidGV4dCIpCi0gICAgdHJlZS5lbmQoInRhZyIpCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCJ7ZGVmYXVsdH1lbGVtIikKKyAgICAgICAgcyA9IEVULlN1YkVsZW1lbnQoZSwgIntkZWZhdWx0fWVsZW0iKQorICAgICAgICBzID0gRVQuU3ViRWxlbWVudChlLCAie25vdC1kZWZhdWx0fWVsZW0iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlLCBkZWZhdWx0X25hbWVzcGFjZT0iZGVmYXVsdCIpLCAjIDIKKyAgICAgICAgICAgICc8ZWxlbSB4bWxucz0iZGVmYXVsdCIgeG1sbnM6bnMxPSJub3QtZGVmYXVsdCI+JworICAgICAgICAgICAgJzxlbGVtIC8+JworICAgICAgICAgICAgJzxuczE6ZWxlbSAvPicKKyAgICAgICAgICAgICc8L2VsZW0+JykKKworICAgICAgICBlID0gRVQuRWxlbWVudCgie2RlZmF1bHR9ZWxlbSIpCisgICAgICAgIHMgPSBFVC5TdWJFbGVtZW50KGUsICJ7ZGVmYXVsdH1lbGVtIikKKyAgICAgICAgcyA9IEVULlN1YkVsZW1lbnQoZSwgImVsZW0iKSAjIHVucHJlZml4ZWQgbmFtZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgc2VyaWFsaXplKGUsIGRlZmF1bHRfbmFtZXNwYWNlPSJkZWZhdWx0IikgIyAzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgJ2Nhbm5vdCB1c2Ugbm9uLXF1YWxpZmllZCBuYW1lcyB3aXRoIGRlZmF1bHRfbmFtZXNwYWNlIG9wdGlvbicpCisKKyAgICBkZWYgdGVzdF9idWdfMjAwNzA5X3JlZ2lzdGVyX25hbWVzcGFjZShzZWxmKToKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoIntodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvfXRpdGxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlKSwKKyAgICAgICAgICAgICc8bnMwOnRpdGxlIHhtbG5zOm5zMD0iaHR0cDovL25hbWVzcGFjZS5pbnZhbGlkL2RvZXMvbm90L2V4aXN0LyIgLz4nKQorICAgICAgICBFVC5yZWdpc3Rlcl9uYW1lc3BhY2UoImZvbyIsICJodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvIikKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoIntodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvfXRpdGxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlKSwKKyAgICAgICAgICAgICc8Zm9vOnRpdGxlIHhtbG5zOmZvbz0iaHR0cDovL25hbWVzcGFjZS5pbnZhbGlkL2RvZXMvbm90L2V4aXN0LyIgLz4nKQorCisgICAgICAgICMgQW5kIHRoZSBEdWJsaW4gQ29yZSBuYW1lc3BhY2UgaXMgaW4gdGhlIGRlZmF1bHQgbGlzdDoKKworICAgICAgICBlID0gRVQuRWxlbWVudCgie2h0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvfXRpdGxlIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlKSwKKyAgICAgICAgICAgICc8ZGM6dGl0bGUgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiAvPicpCisKKyAgICBkZWYgdGVzdF9idWdfMjAwNzA5X2VsZW1lbnRfY29tbWVudChzZWxmKToKKyAgICAgICAgIyBOb3Qgc3VyZSBpZiB0aGlzIGNhbiBiZSBmaXhlZCwgcmVhbGx5IChzaW5jZSB0aGUgc2VyaWFsaXplciBuZWVkcworICAgICAgICAjIEVULkNvbW1lbnQsIG5vdCBjRVQuY29tbWVudCkuCisKKyAgICAgICAgYSA9IEVULkVsZW1lbnQoJ2EnKQorICAgICAgICBhLmFwcGVuZChFVC5Db21tZW50KCdmb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhWzBdLnRhZywgRVQuQ29tbWVudCkKKworICAgICAgICBhID0gRVQuRWxlbWVudCgnYScpCisgICAgICAgIGEuYXBwZW5kKEVULlBJKCdmb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhWzBdLnRhZywgRVQuUEkpCisKKyAgICBkZWYgdGVzdF9idWdfMjAwNzA5X2VsZW1lbnRfaW5zZXJ0KHNlbGYpOgorICAgICAgICBhID0gRVQuRWxlbWVudCgnYScpCisgICAgICAgIGIgPSBFVC5TdWJFbGVtZW50KGEsICdiJykKKyAgICAgICAgYyA9IEVULlN1YkVsZW1lbnQoYSwgJ2MnKQorICAgICAgICBkID0gRVQuRWxlbWVudCgnZCcpCisgICAgICAgIGEuaW5zZXJ0KDAsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoYSksIFsnZCcsICdiJywgJ2MnXSkKKyAgICAgICAgYS5pbnNlcnQoLTEsIGQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoYSksIFsnZCcsICdiJywgJ2QnLCAnYyddKQorCisgICAgZGVmIHRlc3RfYnVnXzIwMDcwOV9pdGVyX2NvbW1lbnQoc2VsZik6CisgICAgICAgIGEgPSBFVC5FbGVtZW50KCdhJykKKyAgICAgICAgYiA9IEVULlN1YkVsZW1lbnQoYSwgJ2InKQorICAgICAgICBjb21tZW50X2IgPSBFVC5Db21tZW50KCJURVNULWIiKQorICAgICAgICBiLmFwcGVuZChjb21tZW50X2IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoYS5pdGVyKEVULkNvbW1lbnQpKSwgW0VULkNvbW1lbnRdKQorCisgICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgcmVwb3J0ZWQgb24gYnVncy5weXRob24ub3JnCisKKyAgICBkZWYgdGVzdF9idWdfMTUzNDYzMChzZWxmKToKKyAgICAgICAgYm9iID0gRVQuVHJlZUJ1aWxkZXIoKQorICAgICAgICBlID0gYm9iLmRhdGEoImRhdGEiKQorICAgICAgICBlID0gYm9iLnN0YXJ0KCJ0YWciLCB7fSkKKyAgICAgICAgZSA9IGJvYi5lbmQoInRhZyIpCisgICAgICAgIGUgPSBib2IuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlKSwgJzx0YWcgLz4nKQorCisgICAgZGVmIHRlc3RfaXNzdWU2MjMzKHNlbGYpOgorICAgICAgICBlID0gRVQuWE1MKGIiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0ndXRmLTgnPz4iCisgICAgICAgICAgICAgICAgICAgYic8Ym9keT50XHhjM1x4YTNnPC9ib2R5PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQudG9zdHJpbmcoZSwgJ2FzY2lpJyksCisgICAgICAgICAgICAgICAgYiI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdhc2NpaSc/PlxuIgorICAgICAgICAgICAgICAgIGInPGJvZHk+dCYjMjI3O2c8L2JvZHk+JykKKyAgICAgICAgZSA9IEVULlhNTChiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz4iCisgICAgICAgICAgICAgICAgICAgYic8Ym9keT50XHhlM2c8L2JvZHk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlLCAnYXNjaWknKSwKKyAgICAgICAgICAgICAgICBiIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2FzY2lpJz8+XG4iCisgICAgICAgICAgICAgICAgYic8Ym9keT50JiMyMjc7ZzwvYm9keT4nKQorCisgICAgZGVmIHRlc3RfaXNzdWUzMTUxKHNlbGYpOgorICAgICAgICBlID0gRVQuWE1MKCc8cHJlZml4OmxvY2FsbmFtZSB4bWxuczpwcmVmaXg9IiR7c3R1ZmZ9Ii8+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhZywgJ3ske3N0dWZmfX1sb2NhbG5hbWUnKQorICAgICAgICB0ID0gRVQuRWxlbWVudFRyZWUoZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC50b3N0cmluZyhlKSwgYic8bnMwOmxvY2FsbmFtZSB4bWxuczpuczA9IiR7c3R1ZmZ9IiAvPicpCisKKyAgICBkZWYgdGVzdF9pc3N1ZTY1NjUoc2VsZik6CisgICAgICAgIGVsZW0gPSBFVC5YTUwoIjxib2R5Pjx0YWcvPjwvYm9keT4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGVsZW0pLCBbJ3RhZyddKQorICAgICAgICBuZXdlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCisgICAgICAgIGVsZW1bOl0gPSBuZXdlbGVtWzpdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZWxlbSksIFsndGFnJywgJ3RhZycsICdzZWN0aW9uJ10pCisKKyAgICBkZWYgdGVzdF9pc3N1ZTEwNzc3KHNlbGYpOgorICAgICAgICAjIFJlZ2lzdGVyaW5nIGEgbmFtZXNwYWNlIHR3aWNlIGNhdXNlZCBhICJkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcKKyAgICAgICAgIyBpdGVyYXRpb24iIGJ1Zy4KKworICAgICAgICBFVC5yZWdpc3Rlcl9uYW1lc3BhY2UoJ3Rlc3QxMDc3NycsICdodHRwOi8vbXl1cmkvJykKKyAgICAgICAgRVQucmVnaXN0ZXJfbmFtZXNwYWNlKCd0ZXN0MTA3NzcnLCAnaHR0cDovL215dXJpLycpCisKKyAgICBkZWYgY2hlY2tfZXhwYXQyMjRfdXRmOF9idWcoc2VsZiwgdGV4dCk6CisgICAgICAgIHhtbCA9IGInPGEgYj0iJXMiLz4nICUgdGV4dAorICAgICAgICByb290ID0gRVQuWE1MKHhtbCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb290LmdldCgnYicpLCB0ZXh0LmRlY29kZSgndXRmLTgnKSkKKworICAgIGRlZiB0ZXN0X2V4cGF0MjI0X3V0ZjhfYnVnKHNlbGYpOgorICAgICAgICAjIGJwby0zMTE3MDogRXhwYXQgMi4yLjMgaGFkIGEgYnVnIGluIGl0cyBVVEYtOCBkZWNvZGVyLgorICAgICAgICAjIENoZWNrIHRoYXQgRXhwYXQgMi4yLjQgZml4ZWQgdGhlIGJ1Zy4KKyAgICAgICAgIworICAgICAgICAjIFRlc3QgYnVmZmVyIGJvdW5kcyBhdCBvZGQgYW5kIGV2ZW4gcG9zaXRpb25zLgorCisgICAgICAgIHRleHQgPSBiJ1x4YzNceGEwJyAqIDEwMjQKKyAgICAgICAgc2VsZi5jaGVja19leHBhdDIyNF91dGY4X2J1Zyh0ZXh0KQorCisgICAgICAgIHRleHQgPSBiJ3gnICsgYidceGMzXHhhMCcgKiAxMDI0CisgICAgICAgIHNlbGYuY2hlY2tfZXhwYXQyMjRfdXRmOF9idWcodGV4dCkKKworICAgIGRlZiB0ZXN0X2V4cGF0MjI0X3V0ZjhfYnVnX2ZpbGUoc2VsZik6CisgICAgICAgIHdpdGggb3BlbihVVEY4X0JVR19YTUxGSUxFLCAncmInKSBhcyBmcDoKKyAgICAgICAgICAgIHJhdyA9IGZwLnJlYWQoKQorICAgICAgICByb290ID0gRVQuZnJvbXN0cmluZyhyYXcpCisgICAgICAgIHhtbGF0dHIgPSByb290LmdldCgnYicpCisKKyAgICAgICAgIyAiUGFyc2UiIG1hbnVhbGx5IHRoZSBYTUwgZmlsZSB0byBleHRyYWN0IHRoZSB2YWx1ZSBvZiB0aGUgJ2InCisgICAgICAgICMgYXR0cmlidXRlIG9mIHRoZSA8YSBiPSd4eHgnIC8+IFhNTCBlbGVtZW50CisgICAgICAgIHRleHQgPSByYXcuZGVjb2RlKCd1dGYtOCcpLnN0cmlwKCkKKyAgICAgICAgdGV4dCA9IHRleHQucmVwbGFjZSgnXHJcbicsICcgJykKKyAgICAgICAgdGV4dCA9IHRleHRbNjotNF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyb290LmdldCgnYicpLCB0ZXh0KQorCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCi1kZWYgYnVnXzIwMDcwOF9uZXdsaW5lKCk6Ci0gICAgciIiIgorY2xhc3MgQmFzaWNFbGVtZW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHB5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfY3ljbGljX2djKHNlbGYpOgorICAgICAgICBjbGFzcyBEdW1teToKKyAgICAgICAgICAgIHBhc3MKIAotICAgIFByZXNlcnZlIG5ld2xpbmVzIGluIGF0dHJpYnV0ZXMuCisgICAgICAgICMgVGVzdCB0aGUgc2hvcnRlc3QgY3ljbGU6IGQtPmVsZW1lbnQtPmQKKyAgICAgICAgZCA9IER1bW15KCkKKyAgICAgICAgZC5kdW1teXJlZiA9IEVULkVsZW1lbnQoJ2pvZScsIGF0dHI9ZCkKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGQpCisgICAgICAgIGRlbCBkCisgICAgICAgIGdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cmVmKCkpCiAKLSAgICA+Pj4gZSA9IEVULkVsZW1lbnQoJ1NvbWVUYWcnLCB0ZXh0PSJkZWYgX2YoKTpcbiAgcmV0dXJuIDNcbiIpCi0gICAgPj4+IEVULnRvc3RyaW5nKGUpCi0gICAgJzxTb21lVGFnIHRleHQ9ImRlZiBfZigpOiYjMTA7ICByZXR1cm4gMyYjMTA7IiAvPicKLSAgICA+Pj4gRVQuWE1MKEVULnRvc3RyaW5nKGUpKS5nZXQoInRleHQiKQotICAgICdkZWYgX2YoKTpcbiAgcmV0dXJuIDNcbicKLSAgICA+Pj4gRVQudG9zdHJpbmcoRVQuWE1MKEVULnRvc3RyaW5nKGUpKSkKLSAgICAnPFNvbWVUYWcgdGV4dD0iZGVmIF9mKCk6JiMxMDsgIHJldHVybiAzJiMxMDsiIC8+JworICAgICAgICAjIEEgbG9uZ2VyIGN5Y2xlOiBkLT5lLT5lMi0+ZAorICAgICAgICBlID0gRVQuRWxlbWVudCgnam9lJykKKyAgICAgICAgZCA9IER1bW15KCkKKyAgICAgICAgZC5kdW1teXJlZiA9IGUKKyAgICAgICAgd3JlZiA9IHdlYWtyZWYucmVmKGQpCisgICAgICAgIGUyID0gRVQuU3ViRWxlbWVudChlLCAnZm9vJywgYXR0cj1kKQorICAgICAgICBkZWwgZCwgZSwgZTIKKyAgICAgICAgZ2NfY29sbGVjdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHdyZWYoKSkKIAotICAgICIiIgorICAgICAgICAjIEEgY3ljbGUgYmV0d2VlbiBFbGVtZW50IG9iamVjdHMgYXMgY2hpbGRyZW4gb2Ygb25lIGFub3RoZXIKKyAgICAgICAgIyBlMS0+ZTItPmUzLT5lMQorICAgICAgICBlMSA9IEVULkVsZW1lbnQoJ2UxJykKKyAgICAgICAgZTIgPSBFVC5FbGVtZW50KCdlMicpCisgICAgICAgIGUzID0gRVQuRWxlbWVudCgnZTMnKQorICAgICAgICBlMS5hcHBlbmQoZTIpCisgICAgICAgIGUyLmFwcGVuZChlMikKKyAgICAgICAgZTMuYXBwZW5kKGUxKQorICAgICAgICB3cmVmID0gd2Vha3JlZi5yZWYoZTEpCisgICAgICAgIGRlbCBlMSwgZTIsIGUzCisgICAgICAgIGdjX2NvbGxlY3QoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZSh3cmVmKCkpCiAKLWRlZiBidWdfMjAwNzA4X2Nsb3NlKCk6Ci0gICAgIiIiCisgICAgQHB5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfd2Vha3JlZihzZWxmKToKKyAgICAgICAgZmxhZyA9IFtdCisgICAgICAgIGRlZiB3cmVmX2NiKHcpOgorICAgICAgICAgICAgZmxhZy5hcHBlbmQoVHJ1ZSkKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ2UnKQorICAgICAgICB3cmVmID0gd2Vha3JlZi5yZWYoZSwgd3JlZl9jYikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmVmKCkudGFnLCAnZScpCisgICAgICAgIGRlbCBlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgW1RydWVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyZWYoKSwgTm9uZSkKIAotICAgIFRlc3QgZGVmYXVsdCBidWlsZGVyLgotICAgID4+PiBwYXJzZXIgPSBFVC5YTUxQYXJzZXIoKSAjIGRlZmF1bHQKLSAgICA+Pj4gcGFyc2VyLmZlZWQoIjxlbGVtZW50PnNvbWUgdGV4dDwvZWxlbWVudD4iKQotICAgID4+PiBzdW1tYXJpemUocGFyc2VyLmNsb3NlKCkpCi0gICAgJ2VsZW1lbnQnCisgICAgQHB5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZ2V0X2tleXdvcmRfYXJncyhzZWxmKToKKyAgICAgICAgZTEgPSBFVC5FbGVtZW50KCdmb28nICwgeD0xLCB5PTIsIHo9MykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlMS5nZXQoJ3gnLCBkZWZhdWx0PTcpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUxLmdldCgndycsIGRlZmF1bHQ9NyksIDcpCiAKLSAgICBUZXN0IGN1c3RvbSBidWlsZGVyLgotICAgID4+PiBjbGFzcyBFY2hvVGFyZ2V0OgotICAgIC4uLiAgICAgZGVmIGNsb3NlKHNlbGYpOgotICAgIC4uLiAgICAgICAgIHJldHVybiBFVC5FbGVtZW50KCJlbGVtZW50IikgIyBzaW11bGF0ZSByb290Ci0gICAgPj4+IHBhcnNlciA9IEVULlhNTFBhcnNlcihFY2hvVGFyZ2V0KCkpCi0gICAgPj4+IHBhcnNlci5mZWVkKCI8ZWxlbWVudD5zb21lIHRleHQ8L2VsZW1lbnQ+IikKLSAgICA+Pj4gc3VtbWFyaXplKHBhcnNlci5jbG9zZSgpKQotICAgICdlbGVtZW50JwogCi0gICAgIiIiCitjbGFzcyBCYWRFbGVtZW50VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZXh0ZW5kX211dGFibGVfbGlzdChzZWxmKToKKyAgICAgICAgY2xhc3MgWChvYmplY3QpOgorICAgICAgICAgICAgQHByb3BlcnR5CisgICAgICAgICAgICBkZWYgX19jbGFzc19fKHNlbGYpOgorICAgICAgICAgICAgICAgIExbOl0gPSBbRVQuRWxlbWVudCgnYmF6JyldCisgICAgICAgICAgICAgICAgcmV0dXJuIEVULkVsZW1lbnQKKyAgICAgICAgTCA9IFtYKCldCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdmb28nKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBlLmV4dGVuZChMKQorICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgcGFzcwogCi1kZWYgYnVnXzIwMDcwOV9kZWZhdWx0X25hbWVzcGFjZSgpOgotICAgICIiIgorICAgICAgICBpZiBFVCBpcyBweUVUOgorICAgICAgICAgICAgY2xhc3MgWShYLCBFVC5FbGVtZW50KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBMID0gW1koJ3gnKV0KKyAgICAgICAgICAgIGUgPSBFVC5FbGVtZW50KCdmb28nKQorICAgICAgICAgICAgZS5leHRlbmQoTCkKIAotICAgID4+PiBlID0gRVQuRWxlbWVudCgie2RlZmF1bHR9ZWxlbSIpCi0gICAgPj4+IHMgPSBFVC5TdWJFbGVtZW50KGUsICJ7ZGVmYXVsdH1lbGVtIikKLSAgICA+Pj4gc2VyaWFsaXplKGUsIGRlZmF1bHRfbmFtZXNwYWNlPSJkZWZhdWx0IikgIyAxCi0gICAgJzxlbGVtIHhtbG5zPSJkZWZhdWx0Ij48ZWxlbSAvPjwvZWxlbT4nCisgICAgZGVmIHRlc3RfZXh0ZW5kX211dGFibGVfbGlzdDIoc2VsZik6CisgICAgICAgIGNsYXNzIFgob2JqZWN0KToKKyAgICAgICAgICAgIEBwcm9wZXJ0eQorICAgICAgICAgICAgZGVmIF9fY2xhc3NfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBkZWwgTFs6XQorICAgICAgICAgICAgICAgIHJldHVybiBFVC5FbGVtZW50CisgICAgICAgIEwgPSBbWCgpLCBFVC5FbGVtZW50KCdiYXonKV0KKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ2ZvbycpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGUuZXh0ZW5kKEwpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAKLSAgICA+Pj4gZSA9IEVULkVsZW1lbnQoIntkZWZhdWx0fWVsZW0iKQotICAgID4+PiBzID0gRVQuU3ViRWxlbWVudChlLCAie2RlZmF1bHR9ZWxlbSIpCi0gICAgPj4+IHMgPSBFVC5TdWJFbGVtZW50KGUsICJ7bm90LWRlZmF1bHR9ZWxlbSIpCi0gICAgPj4+IHNlcmlhbGl6ZShlLCBkZWZhdWx0X25hbWVzcGFjZT0iZGVmYXVsdCIpICMgMgotICAgICc8ZWxlbSB4bWxucz0iZGVmYXVsdCIgeG1sbnM6bnMxPSJub3QtZGVmYXVsdCI+PGVsZW0gLz48bnMxOmVsZW0gLz48L2VsZW0+JworICAgICAgICBpZiBFVCBpcyBweUVUOgorICAgICAgICAgICAgY2xhc3MgWShYLCBFVC5FbGVtZW50KToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBMID0gW1koJ2JhcicpLCBFVC5FbGVtZW50KCdiYXonKV0KKyAgICAgICAgICAgIGUgPSBFVC5FbGVtZW50KCdmb28nKQorICAgICAgICAgICAgZS5leHRlbmQoTCkKIAotICAgID4+PiBlID0gRVQuRWxlbWVudCgie2RlZmF1bHR9ZWxlbSIpCi0gICAgPj4+IHMgPSBFVC5TdWJFbGVtZW50KGUsICJ7ZGVmYXVsdH1lbGVtIikKLSAgICA+Pj4gcyA9IEVULlN1YkVsZW1lbnQoZSwgImVsZW0iKSAjIHVucHJlZml4ZWQgbmFtZQotICAgID4+PiBzZXJpYWxpemUoZSwgZGVmYXVsdF9uYW1lc3BhY2U9ImRlZmF1bHQiKSAjIDMKLSAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gICAgVmFsdWVFcnJvcjogY2Fubm90IHVzZSBub24tcXVhbGlmaWVkIG5hbWVzIHdpdGggZGVmYXVsdF9uYW1lc3BhY2Ugb3B0aW9uCisgICAgQHB5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfcmVtb3ZlX3dpdGhfbXV0YXRpbmcoc2VsZik6CisgICAgICAgIGNsYXNzIFgoRVQuRWxlbWVudCk6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG8pOgorICAgICAgICAgICAgICAgIGRlbCBlWzpdCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBfX2hhc2hfXyA9IG9iamVjdC5fX2hhc2hfXworICAgICAgICBlID0gRVQuRWxlbWVudCgnZm9vJykKKyAgICAgICAgZS5leHRlbmQoW1goJ2JhcicpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZS5yZW1vdmUsIEVULkVsZW1lbnQoJ2JheicpKQogCi0gICAgIiIiCisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdmb28nKQorICAgICAgICBlLmV4dGVuZChbRVQuRWxlbWVudCgnYmFyJyldKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBlLnJlbW92ZSwgWCgnYmF6JykpCiAKLWRlZiBidWdfMjAwNzA5X3JlZ2lzdGVyX25hbWVzcGFjZSgpOgotICAgICIiIgorICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9yZXByKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTQ1NQorICAgICAgICBlID0gRVQuRWxlbWVudCgnZm9vJykKKyAgICAgICAgd2l0aCBzd2FwX2F0dHIoZSwgJ3RhZycsIGUpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgICAgIHJlcHIoZSkgICMgU2hvdWxkIG5vdCBjcmFzaAogCi0gICAgPj4+IEVULnRvc3RyaW5nKEVULkVsZW1lbnQoIntodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvfXRpdGxlIikpCi0gICAgJzxuczA6dGl0bGUgeG1sbnM6bnMwPSJodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvIiAvPicKLSAgICA+Pj4gRVQucmVnaXN0ZXJfbmFtZXNwYWNlKCJmb28iLCAiaHR0cDovL25hbWVzcGFjZS5pbnZhbGlkL2RvZXMvbm90L2V4aXN0LyIpCi0gICAgPj4+IEVULnRvc3RyaW5nKEVULkVsZW1lbnQoIntodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvfXRpdGxlIikpCi0gICAgJzxmb286dGl0bGUgeG1sbnM6Zm9vPSJodHRwOi8vbmFtZXNwYWNlLmludmFsaWQvZG9lcy9ub3QvZXhpc3QvIiAvPicKKyAgICBkZWYgdGVzdF9lbGVtZW50X2dldF90ZXh0KHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNzg2MworICAgICAgICBjbGFzcyBYKHN0cik6CisgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGVsZW0udGV4dAorICAgICAgICAgICAgICAgIGV4Y2VwdCBOYW1lRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKIAotICAgIEFuZCB0aGUgRHVibGluIENvcmUgbmFtZXNwYWNlIGlzIGluIHRoZSBkZWZhdWx0IGxpc3Q6CisgICAgICAgIGIgPSBFVC5UcmVlQnVpbGRlcigpCisgICAgICAgIGIuc3RhcnQoJ3RhZycsIHt9KQorICAgICAgICBiLmRhdGEoJ0FCQ0QnKQorICAgICAgICBiLmRhdGEoWCgnRUZHSCcpKQorICAgICAgICBiLmRhdGEoJ0lKS0wnKQorICAgICAgICBiLmVuZCgndGFnJykKIAotICAgID4+PiBFVC50b3N0cmluZyhFVC5FbGVtZW50KCJ7aHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS99dGl0bGUiKSkKLSAgICAnPGRjOnRpdGxlIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgLz4nCisgICAgICAgIGVsZW0gPSBiLmNsb3NlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtLnRleHQsICdBQkNERUZHSElKS0wnKQogCi0gICAgIiIiCisgICAgZGVmIHRlc3RfZWxlbWVudF9nZXRfdGFpbChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjc4NjMKKyAgICAgICAgY2xhc3MgWChzdHIpOgorICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBlbGVtWzBdLnRhaWwKKyAgICAgICAgICAgICAgICBleGNlcHQgTmFtZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCiAKLWRlZiBidWdfMjAwNzA5X2VsZW1lbnRfY29tbWVudCgpOgotICAgICIiIgorICAgICAgICBiID0gRVQuVHJlZUJ1aWxkZXIoKQorICAgICAgICBiLnN0YXJ0KCdyb290Jywge30pCisgICAgICAgIGIuc3RhcnQoJ3RhZycsIHt9KQorICAgICAgICBiLmVuZCgndGFnJykKKyAgICAgICAgYi5kYXRhKCdBQkNEJykKKyAgICAgICAgYi5kYXRhKFgoJ0VGR0gnKSkKKyAgICAgICAgYi5kYXRhKCdJSktMJykKKyAgICAgICAgYi5lbmQoJ3Jvb3QnKQogCi0gICAgTm90IHN1cmUgaWYgdGhpcyBjYW4gYmUgZml4ZWQsIHJlYWxseSAoc2luY2UgdGhlIHNlcmlhbGl6ZXIgbmVlZHMKLSAgICBFVC5Db21tZW50LCBub3QgY0VULmNvbW1lbnQpLgorICAgICAgICBlbGVtID0gYi5jbG9zZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWxlbVswXS50YWlsLCAnQUJDREVGR0hJSktMJykKIAotICAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCi0gICAgPj4+IGEuYXBwZW5kKEVULkNvbW1lbnQoJ2ZvbycpKQotICAgID4+PiBhWzBdLnRhZyA9PSBFVC5Db21tZW50Ci0gICAgVHJ1ZQorICAgIGRlZiB0ZXN0X2VsZW1lbnRfaXRlcihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjc4NjMKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ3RhZycpCisgICAgICAgIGUuZXh0ZW5kKFtOb25lXSkgICMgbm9uLUVsZW1lbnQKIAotICAgID4+PiBhID0gRVQuRWxlbWVudCgnYScpCi0gICAgPj4+IGEuYXBwZW5kKEVULlBJKCdmb28nKSkKLSAgICA+Pj4gYVswXS50YWcgPT0gRVQuUEkKLSAgICBUcnVlCisgICAgICAgIGl0ID0gZS5pdGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhuZXh0KGl0KSwgZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoKEF0dHJpYnV0ZUVycm9yLCBUeXBlRXJyb3IpLCBsaXN0LCBpdCkKIAotICAgICIiIgorICAgIGRlZiB0ZXN0X3N1YnNjcihzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjc4NjMKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgICAgICAgICAgZGVsIGVbOl0KKyAgICAgICAgICAgICAgICByZXR1cm4gMQogCi1kZWYgYnVnXzIwMDcwOV9lbGVtZW50X2luc2VydCgpOgotICAgICIiIgorICAgICAgICBlID0gRVQuRWxlbWVudCgnZWxlbScpCisgICAgICAgIGUuYXBwZW5kKEVULkVsZW1lbnQoJ2NoaWxkJykpCisgICAgICAgIGVbOlgoKV0gICMgc2hvdWxkbid0IGNyYXNoCiAKLSAgICA+Pj4gYSA9IEVULkVsZW1lbnQoJ2EnKQotICAgID4+PiBiID0gRVQuU3ViRWxlbWVudChhLCAnYicpCi0gICAgPj4+IGMgPSBFVC5TdWJFbGVtZW50KGEsICdjJykKLSAgICA+Pj4gZCA9IEVULkVsZW1lbnQoJ2QnKQotICAgID4+PiBhLmluc2VydCgwLCBkKQotICAgID4+PiBzdW1tYXJpemVfbGlzdChhKQotICAgIFsnZCcsICdiJywgJ2MnXQotICAgID4+PiBhLmluc2VydCgtMSwgZCkKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoYSkKLSAgICBbJ2QnLCAnYicsICdkJywgJ2MnXQorICAgICAgICBlLmFwcGVuZChFVC5FbGVtZW50KCdjaGlsZCcpKQorICAgICAgICBlWzA6MTA6WCgpXSAgIyBzaG91bGRuJ3QgY3Jhc2gKIAotICAgICIiIgorICAgIGRlZiB0ZXN0X2Fzc19zdWJzY3Ioc2VsZik6CisgICAgICAgICMgSXNzdWUgIzI3ODYzCisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19pbmRleF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGVbOl0gPSBbXQorICAgICAgICAgICAgICAgIHJldHVybiAxCiAKLWRlZiBidWdfMjAwNzA5X2l0ZXJfY29tbWVudCgpOgotICAgICIiIgorICAgICAgICBlID0gRVQuRWxlbWVudCgnZWxlbScpCisgICAgICAgIGZvciBfIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgIGUuaW5zZXJ0KDAsIEVULkVsZW1lbnQoJ2NoaWxkJykpCiAKLSAgICA+Pj4gYSA9IEVULkVsZW1lbnQoJ2EnKQotICAgID4+PiBiID0gRVQuU3ViRWxlbWVudChhLCAnYicpCi0gICAgPj4+IGNvbW1lbnRfYiA9IEVULkNvbW1lbnQoIlRFU1QtYiIpCi0gICAgPj4+IGIuYXBwZW5kKGNvbW1lbnRfYikKLSAgICA+Pj4gc3VtbWFyaXplX2xpc3QoYS5pdGVyKEVULkNvbW1lbnQpKQotICAgIFsnPENvbW1lbnQ+J10KKyAgICAgICAgZVswOjEwOlgoKV0gPSBbXSAgIyBzaG91bGRuJ3QgY3Jhc2gKIAotICAgICIiIgogCi1kZWYgYnVnXzE4MzQ3KCk6Ci0gICAgIiIiCitjbGFzcyBNdXRhdGluZ0VsZW1lbnRQYXRoKHN0cik6CisgICAgZGVmIF9fbmV3X18oY2xzLCBlbGVtLCAqYXJncyk6CisgICAgICAgIHNlbGYgPSBzdHIuX19uZXdfXyhjbHMsICphcmdzKQorICAgICAgICBzZWxmLmVsZW0gPSBlbGVtCisgICAgICAgIHJldHVybiBzZWxmCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvKToKKyAgICAgICAgZGVsIHNlbGYuZWxlbVs6XQorICAgICAgICByZXR1cm4gVHJ1ZQorICAgIF9faGFzaF9fID0gc3RyLl9faGFzaF9fCiAKLSAgICA+Pj4gZSA9IEVULlhNTCgnPGh0bWw+PENhbWVsQ2FzZT50ZXh0PC9DYW1lbENhc2U+PC9odG1sPicpCi0gICAgPj4+IHNlcmlhbGl6ZShlKQotICAgICc8aHRtbD48Q2FtZWxDYXNlPnRleHQ8L0NhbWVsQ2FzZT48L2h0bWw+JwotICAgID4+PiBzZXJpYWxpemUoZSwgbWV0aG9kPSJodG1sIikKLSAgICAnPGh0bWw+PENhbWVsQ2FzZT50ZXh0PC9DYW1lbENhc2U+PC9odG1sPicKLSAgICAiIiIKK2NsYXNzIEJhZEVsZW1lbnRQYXRoKHN0cik6CisgICAgZGVmIF9fZXFfXyhzZWxmLCBvKToKKyAgICAgICAgcmFpc2UgMS4wLzAuMAorICAgIF9faGFzaF9fID0gc3RyLl9faGFzaF9fCisKK2NsYXNzIEJhZEVsZW1lbnRQYXRoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihCYWRFbGVtZW50UGF0aFRlc3QsIHNlbGYpLnNldFVwKCkKKyAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCisgICAgICAgIHNlbGYucGF0aF9jYWNoZSA9IEVsZW1lbnRQYXRoLl9jYWNoZQorICAgICAgICBFbGVtZW50UGF0aC5fY2FjaGUgPSB7fQorCisgICAgZGVmIHRlYXJEb3duKHNlbGYpOgorICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKKyAgICAgICAgRWxlbWVudFBhdGguX2NhY2hlID0gc2VsZi5wYXRoX2NhY2hlCisgICAgICAgIHN1cGVyKEJhZEVsZW1lbnRQYXRoVGVzdCwgc2VsZikudGVhckRvd24oKQorCisgICAgZGVmIHRlc3RfZmluZF93aXRoX211dGF0aW5nKHNlbGYpOgorICAgICAgICBlID0gRVQuRWxlbWVudCgnZm9vJykKKyAgICAgICAgZS5leHRlbmQoW0VULkVsZW1lbnQoJ2JhcicpXSkKKyAgICAgICAgZS5maW5kKE11dGF0aW5nRWxlbWVudFBhdGgoZSwgJ3gnKSkKKworICAgIGRlZiB0ZXN0X2ZpbmRfd2l0aF9lcnJvcihzZWxmKToKKyAgICAgICAgZSA9IEVULkVsZW1lbnQoJ2ZvbycpCisgICAgICAgIGUuZXh0ZW5kKFtFVC5FbGVtZW50KCdiYXInKV0pCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGUuZmluZChCYWRFbGVtZW50UGF0aCgneCcpKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9maW5kdGV4dF93aXRoX211dGF0aW5nKHNlbGYpOgorICAgICAgICBlID0gRVQuRWxlbWVudCgnZm9vJykKKyAgICAgICAgZS5leHRlbmQoW0VULkVsZW1lbnQoJ2JhcicpXSkKKyAgICAgICAgZS5maW5kdGV4dChNdXRhdGluZ0VsZW1lbnRQYXRoKGUsICd4JykpCisKKyAgICBkZWYgdGVzdF9maW5kdGV4dF93aXRoX2Vycm9yKHNlbGYpOgorICAgICAgICBlID0gRVQuRWxlbWVudCgnZm9vJykKKyAgICAgICAgZS5leHRlbmQoW0VULkVsZW1lbnQoJ2JhcicpXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZS5maW5kdGV4dChCYWRFbGVtZW50UGF0aCgneCcpKQorICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9maW5kYWxsX3dpdGhfbXV0YXRpbmcoc2VsZik6CisgICAgICAgIGUgPSBFVC5FbGVtZW50KCdmb28nKQorICAgICAgICBlLmV4dGVuZChbRVQuRWxlbWVudCgnYmFyJyldKQorICAgICAgICBlLmZpbmRhbGwoTXV0YXRpbmdFbGVtZW50UGF0aChlLCAneCcpKQorCisgICAgZGVmIHRlc3RfZmluZGFsbF93aXRoX2Vycm9yKHNlbGYpOgorICAgICAgICBlID0gRVQuRWxlbWVudCgnZm9vJykKKyAgICAgICAgZS5leHRlbmQoW0VULkVsZW1lbnQoJ2JhcicpXSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZS5maW5kYWxsKEJhZEVsZW1lbnRQYXRoKCd4JykpCisgICAgICAgIGV4Y2VwdCBaZXJvRGl2aXNpb25FcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworCitjbGFzcyBFbGVtZW50VHJlZVR5cGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pc3R5cGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5QYXJzZUVycm9yLCB0eXBlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoRVQuUU5hbWUsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5FbGVtZW50VHJlZSwgdHlwZSkKKyAgICAgICAgaWYgRVQgaXMgcHlFVDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShFVC5FbGVtZW50LCB0eXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlRyZWVCdWlsZGVyLCB0eXBlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlhNTFBhcnNlciwgdHlwZSkKKworICAgIEBweXRob25fb25seQorICAgIGRlZiB0ZXN0X0VsZW1lbnRfc3ViY2xhc3NfdHJpdmlhbChzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIG15ZSA9IE15RWxlbWVudCgnZm9vJykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG15ZSwgRVQuRWxlbWVudCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG15ZSwgTXlFbGVtZW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50YWcsICdmb28nKQorCisgICAgICAgICMgdGVzdCB0aGF0IGF0dHJpYnV0ZSBhc3NpZ25tZW50IHdvcmtzIChpc3N1ZSAxNDg0OSkKKyAgICAgICAgbXllLnRleHQgPSAiam9lIgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG15ZS50ZXh0LCAiam9lIikKKworICAgIEBweXRob25fb25seQorICAgIGRlZiB0ZXN0X0VsZW1lbnRfc3ViY2xhc3NfY29uc3RydWN0b3Ioc2VsZik6CisgICAgICAgIGNsYXNzIE15RWxlbWVudChFVC5FbGVtZW50KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YWcsIGF0dHJpYj17fSwgKipleHRyYSk6CisgICAgICAgICAgICAgICAgc3VwZXIoTXlFbGVtZW50LCBzZWxmKS5fX2luaXRfXyh0YWcgKyAnX18nLCBhdHRyaWIsICoqZXh0cmEpCisKKyAgICAgICAgbXllID0gTXlFbGVtZW50KCdmb28nLCB7J2EnOiAxLCAnYic6IDJ9LCBjPTMsIGQ9NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWUudGFnLCAnZm9vX18nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZChteWUuaXRlbXMoKSksCisgICAgICAgICAgICBbKCdhJywgMSksICgnYicsIDIpLCAoJ2MnLCAzKSwgKCdkJywgNCldKQorCisgICAgQHB5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfRWxlbWVudF9zdWJjbGFzc19uZXdfbWV0aG9kKHNlbGYpOgorICAgICAgICBjbGFzcyBNeUVsZW1lbnQoRVQuRWxlbWVudCk6CisgICAgICAgICAgICBkZWYgbmV3bWV0aG9kKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnRhZworCisgICAgICAgIG15ZSA9IE15RWxlbWVudCgnam9lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChteWUubmV3bWV0aG9kKCksICdqb2UnKQorCisKK2NsYXNzIEVsZW1lbnRGaW5kVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgQHB5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc2ltcGxlZmluZChzZWxmKToKKyAgICAgICAgRVQuRWxlbWVudFBhdGgKKyAgICAgICAgd2l0aCBzd2FwX2F0dHIoRVQsICdFbGVtZW50UGF0aCcsIEVULl9TaW1wbGVFbGVtZW50UGF0aCgpKToKKyAgICAgICAgICAgIGUgPSBFVC5YTUwoU0FNUExFX1hNTCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kKCd0YWcnKS50YWcsICd0YWcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5FbGVtZW50VHJlZShlKS5maW5kKCd0YWcnKS50YWcsICd0YWcnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmR0ZXh0KCd0YWcnKSwgJ3RleHQnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5maW5kdGV4dCgndG9nJykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZHRleHQoJ3RvZycsICdkZWZhdWx0JyksICdkZWZhdWx0JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQuRWxlbWVudFRyZWUoZSkuZmluZHRleHQoJ3RhZycpLCAndGV4dCcpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgndGFnJykpLCBbJ3RhZycsICd0YWcnXSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy90YWcnKSksIFsndGFnJywgJ3RhZycsICd0YWcnXSkKKworICAgICAgICAgICAgIyBQYXRoIHN5bnRheCBkb2Vzbid0IHdvcmsgaW4gdGhpcyBjYXNlLgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5maW5kKCdzZWN0aW9uL3RhZycpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5maW5kdGV4dCgnc2VjdGlvbi90YWcnKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCdzZWN0aW9uL3RhZycpKSwgW10pCisKKyAgICBkZWYgdGVzdF9maW5kX3NpbXBsZShzZWxmKToKKyAgICAgICAgZSA9IEVULlhNTChTQU1QTEVfWE1MKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZCgndGFnJykudGFnLCAndGFnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmQoJ3NlY3Rpb24vdGFnJykudGFnLCAndGFnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmQoJy4vdGFnJykudGFnLCAndGFnJykKKworICAgICAgICBlWzJdID0gRVQuWE1MKFNBTVBMRV9TRUNUSU9OKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZCgnc2VjdGlvbi9uZXh0dGFnJykudGFnLCAnbmV4dHRhZycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmR0ZXh0KCcuL3RhZycpLCAndGV4dCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kdGV4dCgnc2VjdGlvbi90YWcnKSwgJ3N1YnRleHQnKQorCisgICAgICAgICMgc2VjdGlvbi9uZXh0dGFnIGlzIGZvdW5kIGJ1dCBoYXMgbm8gdGV4dAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZHRleHQoJ3NlY3Rpb24vbmV4dHRhZycpLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmR0ZXh0KCdzZWN0aW9uL25leHR0YWcnLCAnZGVmYXVsdCcpLCAnJykKKworICAgICAgICAjIHRvZyBkb2Vzbid0IGV4aXN0IGFuZCAnZGVmYXVsdCcga2lja3MgaW4KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZS5maW5kdGV4dCgndG9nJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kdGV4dCgndG9nJywgJ2RlZmF1bHQnKSwgJ2RlZmF1bHQnKQorCisgICAgICAgICMgSXNzdWUgIzE2OTIyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRVQuWE1MKCc8dGFnPjxlbXB0eSAvPjwvdGFnPicpLmZpbmR0ZXh0KCdlbXB0eScpLCAnJykKKworICAgIGRlZiB0ZXN0X2ZpbmRfeHBhdGgoc2VsZik6CisgICAgICAgIExJTkVBUl9YTUwgPSAnJycKKyAgICAgICAgPGJvZHk+CisgICAgICAgICAgICA8dGFnIGNsYXNzPSdhJy8+CisgICAgICAgICAgICA8dGFnIGNsYXNzPSdiJy8+CisgICAgICAgICAgICA8dGFnIGNsYXNzPSdjJy8+CisgICAgICAgICAgICA8dGFnIGNsYXNzPSdkJy8+CisgICAgICAgIDwvYm9keT4nJycKKyAgICAgICAgZSA9IEVULlhNTChMSU5FQVJfWE1MKQorCisgICAgICAgICMgVGVzdCBmb3IgbnVtZXJpYyBpbmRleGluZyBhbmQgbGFzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5maW5kKCcuL3RhZ1sxXScpLmF0dHJpYlsnY2xhc3MnXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZCgnLi90YWdbMl0nKS5hdHRyaWJbJ2NsYXNzJ10sICdiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmQoJy4vdGFnW2xhc3QoKV0nKS5hdHRyaWJbJ2NsYXNzJ10sICdkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmQoJy4vdGFnW2xhc3QoKS0xXScpLmF0dHJpYlsnY2xhc3MnXSwgJ2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZmluZCgnLi90YWdbbGFzdCgpLTJdJykuYXR0cmliWydjbGFzcyddLCAnYicpCisKKyAgICBkZWYgdGVzdF9maW5kYWxsKHNlbGYpOgorICAgICAgICBlID0gRVQuWE1MKFNBTVBMRV9YTUwpCisgICAgICAgIGVbMl0gPSBFVC5YTUwoU0FNUExFX1NFQ1RJT04pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuJykpLCBbJ2JvZHknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJ3RhZycpKSwgWyd0YWcnLCAndGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCd0b2cnKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgndG9nL2ZvbycpKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcqJykpLAorICAgICAgICAgICAgWyd0YWcnLCAndGFnJywgJ3NlY3Rpb24nXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJy4vL3RhZycpKSwKKyAgICAgICAgICAgIFsndGFnJ10gKiA0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnc2VjdGlvbi90YWcnKSksIFsndGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCdzZWN0aW9uLy90YWcnKSksIFsndGFnJ10gKiAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnc2VjdGlvbi8qJykpLAorICAgICAgICAgICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnc2VjdGlvbi8vKicpKSwKKyAgICAgICAgICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nLCAndGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCdzZWN0aW9uLy4vLyonKSksCisgICAgICAgICAgICBbJ3RhZycsICduZXh0dGFnJywgJ25leHRzZWN0aW9uJywgJ3RhZyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnKi8qJykpLAorICAgICAgICAgICAgWyd0YWcnLCAnbmV4dHRhZycsICduZXh0c2VjdGlvbiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnKi8vKicpKSwKKyAgICAgICAgICAgIFsndGFnJywgJ25leHR0YWcnLCAnbmV4dHNlY3Rpb24nLCAndGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcqL3RhZycpKSwgWyd0YWcnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJyovLi90YWcnKSksIFsndGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuL3RhZycpKSwgWyd0YWcnXSAqIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy4vdGFnJykpLCBbJ3RhZyddICogMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLi8vdGFnW0BjbGFzc10nKSksCisgICAgICAgICAgICBbJ3RhZyddICogMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJy4vL3RhZ1tAY2xhc3M9ImEiXScpKSwKKyAgICAgICAgICAgIFsndGFnJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLy90YWdbQGNsYXNzPSJiIl0nKSksCisgICAgICAgICAgICBbJ3RhZyddICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJy4vL3RhZ1tAaWRdJykpLAorICAgICAgICAgICAgWyd0YWcnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChlLmZpbmRhbGwoJy4vL3NlY3Rpb25bdGFnXScpKSwKKyAgICAgICAgICAgIFsnc2VjdGlvbiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnLi8vc2VjdGlvbltlbGVtZW50XScpKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCcuLi90YWcnKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGUuZmluZGFsbCgnc2VjdGlvbi8uLi90YWcnKSksCisgICAgICAgICAgICBbJ3RhZyddICogMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmZpbmRhbGwoJ3NlY3Rpb24vLycpLCBlLmZpbmRhbGwoJ3NlY3Rpb24vLyonKSkKKworICAgIGRlZiB0ZXN0X3Rlc3RfZmluZF93aXRoX25zKHNlbGYpOgorICAgICAgICBlID0gRVQuWE1MKFNBTVBMRV9YTUxfTlMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCd0YWcnKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCJ7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnIikpLAorICAgICAgICAgICAgWyd7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnJ10gKiAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3VtbWFyaXplX2xpc3QoZS5maW5kYWxsKCIuLy97aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnIikpLAorICAgICAgICAgICAgWyd7aHR0cDovL2VmZmJvdC5vcmcvbnN9dGFnJ10gKiAzKQorCisgICAgZGVmIHRlc3RfYmFkX2ZpbmQoc2VsZik6CisgICAgICAgIGUgPSBFVC5YTUwoU0FNUExFX1hNTCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChTeW50YXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2Fubm90IHVzZSBhYnNvbHV0ZSBwYXRoIG9uIGVsZW1lbnQnKToKKyAgICAgICAgICAgIGUuZmluZGFsbCgnL3RhZycpCisKKyAgICBkZWYgdGVzdF9maW5kX3Rocm91Z2hfRWxlbWVudFRyZWUoc2VsZik6CisgICAgICAgIGUgPSBFVC5YTUwoU0FNUExFX1hNTCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5FbGVtZW50VHJlZShlKS5maW5kKCd0YWcnKS50YWcsICd0YWcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULkVsZW1lbnRUcmVlKGUpLmZpbmQoJy4vdGFnJykudGFnLCAndGFnJykKKyAgICAgICAgIyB0aGlzIHByb2R1Y2VzIGEgd2FybmluZworICAgICAgICBtc2cgPSAoIlRoaXMgc2VhcmNoIGlzIGJyb2tlbiBpbiAxLjMgYW5kIGVhcmxpZXIsIGFuZCB3aWxsIGJlIGZpeGVkICIKKyAgICAgICAgICAgICAgICJpbiBhIGZ1dHVyZSB2ZXJzaW9uLiAgSWYgeW91IHJlbHkgb24gdGhlIGN1cnJlbnQgYmVoYXZpb3VyLCAiCisgICAgICAgICAgICAgICAiY2hhbmdlIGl0IHRvICcuKyciKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKG1zZywgRnV0dXJlV2FybmluZykpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5FbGVtZW50VHJlZShlKS5maW5kKCcvdGFnJykudGFnLCAndGFnJykKKyAgICAgICAgZVsyXSA9IEVULlhNTChTQU1QTEVfU0VDVElPTikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5FbGVtZW50VHJlZShlKS5maW5kKCdzZWN0aW9uL3RhZycpLnRhZywgJ3RhZycpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKEVULkVsZW1lbnRUcmVlKGUpLmZpbmQoJ3RvZycpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShFVC5FbGVtZW50VHJlZShlKS5maW5kKCd0b2cvZm9vJykpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5FbGVtZW50VHJlZShlKS5maW5kdGV4dCgndGFnJyksICd0ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoRVQuRWxlbWVudFRyZWUoZSkuZmluZHRleHQoJ3RvZy9mb28nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5FbGVtZW50VHJlZShlKS5maW5kdGV4dCgndG9nL2ZvbycsICdkZWZhdWx0JyksCisgICAgICAgICAgICAgJ2RlZmF1bHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULkVsZW1lbnRUcmVlKGUpLmZpbmR0ZXh0KCcuL3RhZycpLCAndGV4dCcpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygobXNnLCBGdXR1cmVXYXJuaW5nKSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEVULkVsZW1lbnRUcmVlKGUpLmZpbmR0ZXh0KCcvdGFnJyksICd0ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5FbGVtZW50VHJlZShlKS5maW5kdGV4dCgnc2VjdGlvbi90YWcnKSwgJ3N1YnRleHQnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoRVQuRWxlbWVudFRyZWUoZSkuZmluZGFsbCgnLi90YWcnKSksCisgICAgICAgICAgICBbJ3RhZyddICogMikKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKChtc2csIEZ1dHVyZVdhcm5pbmcpKToKKyAgICAgICAgICAgIGl0ID0gRVQuRWxlbWVudFRyZWUoZSkuZmluZGFsbCgnL3RhZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoaXQpLCBbJ3RhZyddICogMikKKworCitjbGFzcyBFbGVtZW50SXRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBfaWxpc3Qoc2VsZiwgZWxlbSwgdGFnPU5vbmUpOgorICAgICAgICByZXR1cm4gc3VtbWFyaXplX2xpc3QoZWxlbS5pdGVyKHRhZykpCisKKyAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgZG9jID0gRVQuWE1MKCI8aHRtbD48Ym9keT50aGlzIGlzIGEgPGk+cGFyYWdyYXBoPC9pPi48L2JvZHk+Li48L2h0bWw+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChkb2MpLCBbJ2h0bWwnLCAnYm9keScsICdpJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jLmZpbmQoJ2JvZHknKSksIFsnYm9keScsICdpJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChkb2MuaXRlcigpKS50YWcsICdodG1sJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5qb2luKGRvYy5pdGVydGV4dCgpKSwgJ3RoaXMgaXMgYSBwYXJhZ3JhcGguLi4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4oZG9jLmZpbmQoJ2JvZHknKS5pdGVydGV4dCgpKSwKKyAgICAgICAgICAgICd0aGlzIGlzIGEgcGFyYWdyYXBoLicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV4dChkb2MuaXRlcnRleHQoKSksICd0aGlzIGlzIGEgJykKKworICAgICAgICAjIE1ldGhvZCBpdGVycGFyc2Ugc2hvdWxkIHJldHVybiBhbiBpdGVyYXRvci4gU2VlIGJ1ZyA2NDcyLgorICAgICAgICBzb3VyY2VmaWxlID0gc2VyaWFsaXplKGRvYywgdG9fc3RyaW5nPUZhbHNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoRVQuaXRlcnBhcnNlKHNvdXJjZWZpbGUpKVswXSwgJ2VuZCcpCisKKyAgICAgICAgaWYgRVQgaXMgcHlFVDoKKyAgICAgICAgICAgICMgV2l0aCBhbiBleHBsaXRpdCBwYXJzZXIgdG9vIChpc3N1ZSAjOTcwOCkKKyAgICAgICAgICAgIHNvdXJjZWZpbGUgPSBzZXJpYWxpemUoZG9jLCB0b19zdHJpbmc9RmFsc2UpCisgICAgICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PUVULlRyZWVCdWlsZGVyKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoRVQuaXRlcnBhcnNlKHNvdXJjZWZpbGUsIHBhcnNlcj1wYXJzZXIpKVswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZCcpCisKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCB0cmVlLml0ZXIpCisKKyAgICAgICAgIyBJc3N1ZSAjMTY5MTMKKyAgICAgICAgZG9jID0gRVQuWE1MKCI8cm9vdD5hJmFtcDs8c3ViPmImYW1wOzwvc3ViPmMmYW1wOzwvcm9vdD4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLmpvaW4oZG9jLml0ZXJ0ZXh0KCkpLCAnYSZiJmMmJykKKworICAgIGRlZiB0ZXN0X2Nvcm5lcnMoc2VsZik6CisgICAgICAgICMgc2luZ2xlIHJvb3QsIG5vIHN1YmVsZW1lbnRzCisgICAgICAgIGEgPSBFVC5FbGVtZW50KCdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9pbGlzdChhKSwgWydhJ10pCisKKyAgICAgICAgIyBvbmUgY2hpbGQKKyAgICAgICAgYiA9IEVULlN1YkVsZW1lbnQoYSwgJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnLCAnYiddKQorCisgICAgICAgICMgb25lIGNoaWxkIGFuZCBvbmUgZ3JhbmRjaGlsZAorICAgICAgICBjID0gRVQuU3ViRWxlbWVudChiLCAnYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYScsICdiJywgJ2MnXSkKKworICAgICAgICAjIHR3byBjaGlsZHJlbiwgb25seSBmaXJzdCB3aXRoIGdyYW5kY2hpbGQKKyAgICAgICAgZCA9IEVULlN1YkVsZW1lbnQoYSwgJ2QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2lsaXN0KGEpLCBbJ2EnLCAnYicsICdjJywgJ2QnXSkKKworICAgICAgICAjIHJlcGxhY2UgZmlyc3QgY2hpbGQgYnkgc2Vjb25kCisgICAgICAgIGFbMF0gPSBhWzFdCisgICAgICAgIGRlbCBhWzFdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoYSksIFsnYScsICdkJ10pCisKKyAgICBkZWYgdGVzdF9pdGVyX2J5X3RhZyhzZWxmKToKKyAgICAgICAgZG9jID0gRVQuWE1MKCcnJworICAgICAgICAgICAgPGRvY3VtZW50PgorICAgICAgICAgICAgICAgIDxob3VzZT4KKyAgICAgICAgICAgICAgICAgICAgPHJvb20+YmVkcm9vbTE8L3Jvb20+CisgICAgICAgICAgICAgICAgICAgIDxyb29tPmJlZHJvb20yPC9yb29tPgorICAgICAgICAgICAgICAgIDwvaG91c2U+CisgICAgICAgICAgICAgICAgPHNoZWQ+bm90aGluZyBoZXJlCisgICAgICAgICAgICAgICAgPC9zaGVkPgorICAgICAgICAgICAgICAgIDxob3VzZT4KKyAgICAgICAgICAgICAgICAgICAgPHJvb20+YmVkcm9vbTg8L3Jvb20+CisgICAgICAgICAgICAgICAgPC9ob3VzZT4KKyAgICAgICAgICAgIDwvZG9jdW1lbnQ+JycnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jLCAncm9vbScpLCBbJ3Jvb20nXSAqIDMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jLCAnaG91c2UnKSwgWydob3VzZSddICogMikKKworICAgICAgICBpZiBFVCBpcyBweUVUOgorICAgICAgICAgICAgIyB0ZXN0IHRoYXQgaXRlciBhbHNvIGFjY2VwdHMgJ3RhZycgYXMgYSBrZXl3b3JkIGFyZworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICBzdW1tYXJpemVfbGlzdChkb2MuaXRlcih0YWc9J3Jvb20nKSksCisgICAgICAgICAgICAgICAgWydyb29tJ10gKiAzKQorCisgICAgICAgICMgbWFrZSBzdXJlIGJvdGggdGFnPU5vbmUgYW5kIHRhZz0nKicgcmV0dXJuIGFsbCB0YWdzCisgICAgICAgIGFsbF90YWdzID0gWydkb2N1bWVudCcsICdob3VzZScsICdyb29tJywgJ3Jvb20nLAorICAgICAgICAgICAgICAgICAgICAnc2hlZCcsICdob3VzZScsICdyb29tJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChkb2MuaXRlcigpKSwgYWxsX3RhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jKSwgYWxsX3RhZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5faWxpc3QoZG9jLCAnKicpLCBhbGxfdGFncykKKworICAgIGRlZiB0ZXN0X2dldGl0ZXJhdG9yKHNlbGYpOgorICAgICAgICAjIEVsZW1lbnQuZ2V0aXRlcmF0b3IoKSBpcyBkZXByZWNhdGVkLgorICAgICAgICBpZiBzeXMucHkza3dhcm5pbmcgb3IgRVQgaXMgcHlFVDoKKyAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIlRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuICAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgLisgaW5zdGVhZC4iLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICAgICAgc2VsZi5fdGVzdF9nZXRpdGVyYXRvcigpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl90ZXN0X2dldGl0ZXJhdG9yKCkKKworICAgIGRlZiBfdGVzdF9nZXRpdGVyYXRvcihzZWxmKToKKyAgICAgICAgZG9jID0gRVQuWE1MKCcnJworICAgICAgICAgICAgPGRvY3VtZW50PgorICAgICAgICAgICAgICAgIDxob3VzZT4KKyAgICAgICAgICAgICAgICAgICAgPHJvb20+YmVkcm9vbTE8L3Jvb20+CisgICAgICAgICAgICAgICAgICAgIDxyb29tPmJlZHJvb20yPC9yb29tPgorICAgICAgICAgICAgICAgIDwvaG91c2U+CisgICAgICAgICAgICAgICAgPHNoZWQ+bm90aGluZyBoZXJlCisgICAgICAgICAgICAgICAgPC9zaGVkPgorICAgICAgICAgICAgICAgIDxob3VzZT4KKyAgICAgICAgICAgICAgICAgICAgPHJvb20+YmVkcm9vbTg8L3Jvb20+CisgICAgICAgICAgICAgICAgPC9ob3VzZT4KKyAgICAgICAgICAgIDwvZG9jdW1lbnQ+JycnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3VtbWFyaXplX2xpc3QoZG9jLmdldGl0ZXJhdG9yKCdyb29tJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsncm9vbSddICogMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChkb2MuZ2V0aXRlcmF0b3IoJ2hvdXNlJykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIFsnaG91c2UnXSAqIDIpCisKKyAgICAgICAgaWYgRVQgaXMgcHlFVDoKKyAgICAgICAgICAgICMgdGVzdCB0aGF0IGdldGl0ZXJhdG9yIGFsc28gYWNjZXB0cyAndGFnJyBhcyBhIGtleXdvcmQgYXJnCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgIHN1bW1hcml6ZV9saXN0KGRvYy5nZXRpdGVyYXRvcih0YWc9J3Jvb20nKSksCisgICAgICAgICAgICAgICAgWydyb29tJ10gKiAzKQorCisgICAgICAgICMgbWFrZSBzdXJlIGJvdGggdGFnPU5vbmUgYW5kIHRhZz0nKicgcmV0dXJuIGFsbCB0YWdzCisgICAgICAgIGFsbF90YWdzID0gWydkb2N1bWVudCcsICdob3VzZScsICdyb29tJywgJ3Jvb20nLAorICAgICAgICAgICAgICAgICAgICAnc2hlZCcsICdob3VzZScsICdyb29tJ10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdW1tYXJpemVfbGlzdChkb2MuZ2V0aXRlcmF0b3IoKSksIGFsbF90YWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGRvYy5nZXRpdGVyYXRvcihOb25lKSksIGFsbF90YWdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN1bW1hcml6ZV9saXN0KGRvYy5nZXRpdGVyYXRvcignKicpKSwgYWxsX3RhZ3MpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBhID0gRVQuRWxlbWVudCgnYScpCisgICAgICAgIGl0ID0gYS5pdGVyKCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY29weS5jb3B5KGl0KQorCisgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgorICAgICAgICBhID0gRVQuRWxlbWVudCgnYScpCisgICAgICAgIGl0ID0gYS5pdGVyKCkKKyAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIHBpY2tsZS5QaWNrbGluZ0Vycm9yKSk6CisgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzKGl0LCBwcm90bykKKworCitjbGFzcyBUcmVlQnVpbGRlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHNhbXBsZTEgPSAoJzwhRE9DVFlQRSBodG1sIFBVQkxJQycKKyAgICAgICAgJyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iJworICAgICAgICAnICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4nCisgICAgICAgICc8aHRtbD50ZXh0PGRpdj5zdWJ0ZXh0PC9kaXY+dGFpbDwvaHRtbD4nKQorCisgICAgc2FtcGxlMiA9ICcnJzx0b3BsZXZlbD5zb21ldGV4dDwvdG9wbGV2ZWw+JycnCisKKyAgICBkZWYgX2NoZWNrX3NhbXBsZTFfZWxlbWVudChzZWxmLCBlKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhZywgJ2h0bWwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGV4dCwgJ3RleHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudGFpbCwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmF0dHJpYiwge30pCisgICAgICAgIGNoaWxkcmVuID0gbGlzdChlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjaGlsZHJlbiksIDEpCisgICAgICAgIGNoaWxkID0gY2hpbGRyZW5bMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZC50YWcsICdkaXYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoaWxkLnRleHQsICdzdWJ0ZXh0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGlsZC50YWlsLCAndGFpbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hpbGQuYXR0cmliLCB7fSkKKworICAgIGRlZiB0ZXN0X2R1bW15X2J1aWxkZXIoc2VsZik6CisgICAgICAgIGNsYXNzIER1bW15QnVpbGRlcjoKKyAgICAgICAgICAgIGRhdGEgPSBzdGFydCA9IGVuZCA9IGxhbWJkYSAqYTogTm9uZQorCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDQyCisKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKHRhcmdldD1EdW1teUJ1aWxkZXIoKSkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhcnNlci5jbG9zZSgpLCA0MikKKworICAgIEBweXRob25fb25seQorICAgIGRlZiB0ZXN0X3RyZWVidWlsZGVyX2VsZW1lbnRmYWN0b3J5X25vbmUoc2VsZik6CisgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9RVQuVHJlZUJ1aWxkZXIoZWxlbWVudF9mYWN0b3J5PU5vbmUpKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIGUgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUxX2VsZW1lbnQoZSkKKworICAgIEBweXRob25fb25seQorICAgIGRlZiB0ZXN0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeVRyZWVCdWlsZGVyKEVULlRyZWVCdWlsZGVyKToKKyAgICAgICAgICAgIGRlZiBmb29iYXIoc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHggKiAyCisKKyAgICAgICAgdGIgPSBNeVRyZWVCdWlsZGVyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0Yi5mb29iYXIoMTApLCAyMCkKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PXRiKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisKKyAgICAgICAgZSA9IHBhcnNlci5jbG9zZSgpCisgICAgICAgIHNlbGYuX2NoZWNrX3NhbXBsZTFfZWxlbWVudChlKQorCisgICAgQHB5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZWxlbWVudF9mYWN0b3J5KHNlbGYpOgorICAgICAgICBsc3QgPSBbXQorICAgICAgICBkZWYgbXlmYWN0b3J5KHRhZywgYXR0cmliKToKKyAgICAgICAgICAgIGxzdC5hcHBlbmQodGFnKQorICAgICAgICAgICAgcmV0dXJuIEVULkVsZW1lbnQodGFnLCBhdHRyaWIpCisKKyAgICAgICAgdGIgPSBFVC5UcmVlQnVpbGRlcihlbGVtZW50X2ZhY3Rvcnk9bXlmYWN0b3J5KQorICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PXRiKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTIpCisgICAgICAgIHBhcnNlci5jbG9zZSgpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFsndG9wbGV2ZWwnXSkKKworICAgIEBweXRob25fb25seQorICAgIGRlZiB0ZXN0X2VsZW1lbnRfZmFjdG9yeV9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTXlFbGVtZW50KEVULkVsZW1lbnQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHRiID0gRVQuVHJlZUJ1aWxkZXIoZWxlbWVudF9mYWN0b3J5PU15RWxlbWVudCkKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PXRiKQorICAgICAgICBwYXJzZXIuZmVlZChzZWxmLnNhbXBsZTEpCisgICAgICAgIGUgPSBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZSwgTXlFbGVtZW50KQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGUxX2VsZW1lbnQoZSkKKworCisgICAgQHB5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfZG9jdHlwZShzZWxmKToKKyAgICAgICAgY2xhc3MgRG9jdHlwZVBhcnNlcjoKKyAgICAgICAgICAgIF9kb2N0eXBlID0gTm9uZQorCisgICAgICAgICAgICBkZWYgZG9jdHlwZShzZWxmLCBuYW1lLCBwdWJpZCwgc3lzdGVtKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kb2N0eXBlID0gKG5hbWUsIHB1YmlkLCBzeXN0ZW0pCisKKyAgICAgICAgICAgIGRhdGEgPSBzdGFydCA9IGVuZCA9IGxhbWJkYSAqYTogTm9uZQorCisgICAgICAgICAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RvY3R5cGUKKworICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIodGFyZ2V0PURvY3R5cGVQYXJzZXIoKSkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLmNsb3NlKCksCisgICAgICAgICAgICAoJ2h0bWwnLCAnLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4nLAorICAgICAgICAgICAgICdodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkJykpCisKKyAgICBAY2V0X29ubHkgICMgUHlFVCBkb2VzIG5vdCBsb29rIHVwIHRoZSBhdHRyaWJ1dGVzIGluIFhNTFBhcnNlcigpLl9faW5pdF9fKCkKKyAgICBkZWYgdGVzdF9idWlsZGVyX2xvb2t1cF9lcnJvcnMoc2VsZik6CisgICAgICAgIGNsYXNzIFJhaXNpbmdCdWlsZGVyKG9iamVjdCk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcmFpc2VfaW49Tm9uZSwgd2hhdD1WYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICBzZWxmLnJhaXNlX2luID0gcmFpc2VfaW4KKyAgICAgICAgICAgICAgICBzZWxmLndoYXQgPSB3aGF0CisKKyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgICAgICAgICBpZiBuYW1lID09IHNlbGYucmFpc2VfaW46CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNlbGYud2hhdChzZWxmLnJhaXNlX2luKQorICAgICAgICAgICAgICAgIGRlZiBoYW5kbGUoKmFyZ3MpOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZQorCisgICAgICAgIEVULlhNTFBhcnNlcih0YXJnZXQ9UmFpc2luZ0J1aWxkZXIoKSkKKyAgICAgICAgIyBjRVQgYWxzbyBjaGVja3MgZm9yICdjbG9zZScgYW5kICdkb2N0eXBlJywgUHlFVCBkb2VzIGl0IG9ubHkgYXQgbmVlZAorICAgICAgICBmb3IgZXZlbnQgaW4gKCdzdGFydCcsICdkYXRhJywgJ2VuZCcsICdjb21tZW50JywgJ3BpJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgIEVULlhNTFBhcnNlcih0YXJnZXQ9UmFpc2luZ0J1aWxkZXIoZXZlbnQpKQorCisgICAgICAgIEVULlhNTFBhcnNlcih0YXJnZXQ9UmFpc2luZ0J1aWxkZXIod2hhdD1BdHRyaWJ1dGVFcnJvcikpCisgICAgICAgIGZvciBldmVudCBpbiAoJ3N0YXJ0JywgJ2RhdGEnLCAnZW5kJywgJ2NvbW1lbnQnLCAncGknKToKKyAgICAgICAgICAgIHBhcnNlciA9IEVULlhNTFBhcnNlcih0YXJnZXQ9UmFpc2luZ0J1aWxkZXIoZXZlbnQsIHdoYXQ9QXR0cmlidXRlRXJyb3IpKQorICAgICAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGFyc2VyLmNsb3NlKCkpCisKKworY2xhc3MgWE1MUGFyc2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgc2FtcGxlMSA9IGInPGZpbGU+PGxpbmU+MjI8L2xpbmU+PC9maWxlPicKKyAgICBzYW1wbGUyID0gKGInPCFET0NUWVBFIGh0bWwgUFVCTElDJworICAgICAgICBiJyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iJworICAgICAgICBiJyAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+JworICAgICAgICBiJzxodG1sPnRleHQ8L2h0bWw+JykKKworICAgIGRlZiBfY2hlY2tfc2FtcGxlX2VsZW1lbnQoc2VsZiwgZSk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS50YWcsICdmaWxlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlWzBdLnRhZywgJ2xpbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVbMF0udGV4dCwgJzIyJykKKworICAgIEBweXRob25fb25seQorICAgIGRlZiB0ZXN0X2NvbnN0cnVjdG9yX2FyZ3Moc2VsZik6CisgICAgICAgICMgUG9zaXRpb25hbCBhcmdzLiBUaGUgZmlyc3QgKGh0bWwpIGlzIG5vdCBzdXBwb3J0ZWQsIGJ1dCBzaG91bGQgYmUKKyAgICAgICAgIyBuZXZlcnRoZWxlc3MgY29ycmVjdGx5IGFjY2VwdGVkLgorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfcHkza193YXJuaW5ncygocicuKlxiaHRtbFxiJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICBwYXJzZXIgPSBFVC5YTUxQYXJzZXIoTm9uZSwgRVQuVHJlZUJ1aWxkZXIoKSwgJ3V0Zi04JykKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGVfZWxlbWVudChwYXJzZXIuY2xvc2UoKSkKKworICAgICAgICAjIE5vdyBhcyBrZXl3b3JkIGFyZ3MuCisgICAgICAgIHBhcnNlcjIgPSBFVC5YTUxQYXJzZXIoZW5jb2Rpbmc9J3V0Zi04JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ9RVQuVHJlZUJ1aWxkZXIoKSkKKyAgICAgICAgcGFyc2VyMi5mZWVkKHNlbGYuc2FtcGxlMSkKKyAgICAgICAgc2VsZi5fY2hlY2tfc2FtcGxlX2VsZW1lbnQocGFyc2VyMi5jbG9zZSgpKQorCisgICAgQHB5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3ViY2xhc3Moc2VsZik6CisgICAgICAgIGNsYXNzIE15UGFyc2VyKEVULlhNTFBhcnNlcik6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHBhcnNlciA9IE15UGFyc2VyKCkKKyAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUxKQorICAgICAgICBzZWxmLl9jaGVja19zYW1wbGVfZWxlbWVudChwYXJzZXIuY2xvc2UoKSkKKworICAgIEBweXRob25fb25seQorICAgIGRlZiB0ZXN0X2RvY3R5cGVfd2FybmluZyhzZWxmKToKKyAgICAgICAgcGFyc2VyID0gRVQuWE1MUGFyc2VyKCkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICBwYXJzZXIuZG9jdHlwZSgnaHRtbCcsICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicsCisgICAgICAgICAgICAgICAgJ2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnKQorICAgICAgICBwYXJzZXIuZmVlZCgnPGh0bWwvPicpCisgICAgICAgIHBhcnNlci5jbG9zZSgpCisKKyAgICBAcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zdWJjbGFzc19kb2N0eXBlKHNlbGYpOgorICAgICAgICBfZG9jdHlwZSA9IFtdCisgICAgICAgIGNsYXNzIE15UGFyc2VyV2l0aERvY3R5cGUoRVQuWE1MUGFyc2VyKToKKyAgICAgICAgICAgIGRlZiBkb2N0eXBlKHNlbGYsIG5hbWUsIHB1YmlkLCBzeXN0ZW0pOgorICAgICAgICAgICAgICAgIF9kb2N0eXBlLmFwcGVuZCgobmFtZSwgcHViaWQsIHN5c3RlbSkpCisKKyAgICAgICAgcGFyc2VyID0gTXlQYXJzZXJXaXRoRG9jdHlwZSgpCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgorICAgICAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUyKQorICAgICAgICBwYXJzZXIuY2xvc2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9kb2N0eXBlLAorICAgICAgICAgICAgWygnaHRtbCcsICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicsCisgICAgICAgICAgICAgICdodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkJyldKQorCisgICAgICAgIF9kb2N0eXBlID0gW10KKyAgICAgICAgX2RvY3R5cGUyID0gW10KKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdlcnJvcicsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIGNsYXNzIERvY3R5cGVQYXJzZXI6CisgICAgICAgICAgICAgICAgZGF0YSA9IHN0YXJ0ID0gZW5kID0gY2xvc2UgPSBsYW1iZGEgKmE6IE5vbmUKKworICAgICAgICAgICAgICAgIGRlZiBkb2N0eXBlKHNlbGYsIG5hbWUsIHB1YmlkLCBzeXN0ZW0pOgorICAgICAgICAgICAgICAgICAgICBfZG9jdHlwZTIuYXBwZW5kKChuYW1lLCBwdWJpZCwgc3lzdGVtKSkKKworICAgICAgICAgICAgcGFyc2VyID0gTXlQYXJzZXJXaXRoRG9jdHlwZSh0YXJnZXQ9RG9jdHlwZVBhcnNlcigpKQorICAgICAgICAgICAgcGFyc2VyLmZlZWQoc2VsZi5zYW1wbGUyKQorICAgICAgICAgICAgcGFyc2VyLmNsb3NlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2RvY3R5cGUsIFtdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZG9jdHlwZTIsCisgICAgICAgICAgICAgICAgWygnaHRtbCcsICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicsCisgICAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCcpXSkKKworCitjbGFzcyBOYW1lc3BhY2VQYXJzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2ZpbmRfd2l0aF9uYW1lc3BhY2Uoc2VsZik6CisgICAgICAgIG5zbWFwID0geydoJzogJ2hlbGxvJywgJ2YnOiAnZm9vJ30KKyAgICAgICAgZG9jID0gRVQuZnJvbXN0cmluZyhTQU1QTEVfWE1MX05TX0VMRU1TKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRvYy5maW5kYWxsKCd7aGVsbG99dGFibGUnLCBuc21hcCkpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkb2MuZmluZGFsbCgnLi8ve2hlbGxvfXRkJywgbnNtYXApKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZG9jLmZpbmRhbGwoJy4vL3tmb299bmFtZScsIG5zbWFwKSksIDEpCisKKworY2xhc3MgRWxlbWVudFNsaWNpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgX2VsZW1fdGFncyhzZWxmLCBlbGVtbGlzdCk6CisgICAgICAgIHJldHVybiBbZS50YWcgZm9yIGUgaW4gZWxlbWxpc3RdCisKKyAgICBkZWYgX3N1YmVsZW1fdGFncyhzZWxmLCBlbGVtKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2VsZW1fdGFncyhsaXN0KGVsZW0pKQorCisgICAgZGVmIF9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbihzZWxmLCBudW1jaGlsZHJlbik6CisgICAgICAgICIiIkNyZWF0ZSBhbiBFbGVtZW50IHdpdGggYSB0YWcgJ2EnLCB3aXRoIHRoZSBnaXZlbiBhbW91bnQgb2YgY2hpbGRyZW4KKyAgICAgICAgICAgbmFtZWQgJ2EwJywgJ2ExJyAuLi4gYW5kIHNvIG9uLgorCisgICAgICAgICIiIgorICAgICAgICBlID0gRVQuRWxlbWVudCgnYScpCisgICAgICAgIGZvciBpIGluIHJhbmdlKG51bWNoaWxkcmVuKToKKyAgICAgICAgICAgIEVULlN1YkVsZW1lbnQoZSwgJ2ElcycgJSBpKQorICAgICAgICByZXR1cm4gZQorCisgICAgZGVmIHRlc3RfZ2V0c2xpY2Vfc2luZ2xlX2luZGV4KHNlbGYpOgorICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oMTApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlWzFdLnRhZywgJ2ExJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlWy0yXS50YWcsICdhOCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbGFtYmRhOiBlWzEyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbGFtYmRhOiBlWy0xMl0pCisKKyAgICBkZWYgdGVzdF9nZXRzbGljZV9yYW5nZShzZWxmKToKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVszOl0pLCBbJ2EzJywgJ2E0JywgJ2E1J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzo2XSksIFsnYTMnLCAnYTQnLCAnYTUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVszOjE2XSksIFsnYTMnLCAnYTQnLCAnYTUnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVszOjVdKSwgWydhMycsICdhNCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzM6LTFdKSwgWydhMycsICdhNCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzoyXSksIFsnYTAnLCAnYTEnXSkKKworICAgIGRlZiB0ZXN0X2dldHNsaWNlX3N0ZXBzKHNlbGYpOgorICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oMTApCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVs4OjEwOjFdKSwgWydhOCcsICdhOSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzo6M10pLCBbJ2EwJywgJ2EzJywgJ2E2JywgJ2E5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbOjo4XSksIFsnYTAnLCAnYTgnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVsxOjo4XSksIFsnYTEnLCAnYTknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9lbGVtX3RhZ3MoZVszOjpzeXMubWF4c2l6ZV0pLCBbJ2EzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzo6c3lzLm1heHNpemU8PDY0XSksIFsnYTMnXSkKKworICAgIGRlZiB0ZXN0X2dldHNsaWNlX25lZ2F0aXZlX3N0ZXBzKHNlbGYpOgorICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzo6LTFdKSwgWydhMycsICdhMicsICdhMScsICdhMCddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzo6LTJdKSwgWydhMycsICdhMSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzM6Oi1zeXMubWF4c2l6ZV0pLCBbJ2EzJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fZWxlbV90YWdzKGVbMzo6LXN5cy5tYXhzaXplLTFdKSwgWydhMyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2VsZW1fdGFncyhlWzM6Oi1zeXMubWF4c2l6ZTw8NjRdKSwgWydhMyddKQorCisgICAgZGVmIHRlc3RfZGVsc2xpY2Uoc2VsZik6CisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICBkZWwgZVswOjJdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EyJywgJ2EzJ10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgIGRlbCBlWzA6XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgW10pCisKKyAgICAgICAgaWYgRVQgaXMgcHlFVDoKKyAgICAgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICAgICAgZGVsIGVbOjotMV0KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbXSkKKworICAgICAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgICAgICBkZWwgZVs6Oi0yXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTAnLCAnYTInXSkKKworICAgICAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgICAgICBkZWwgZVsxOjoyXQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTAnLCAnYTInXSkKKworICAgICAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDIpCisgICAgICAgICAgICBkZWwgZVs6OjJdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgWydhMSddKQorCisgICAgZGVmIHRlc3Rfc2V0c2xpY2Vfc2luZ2xlX2luZGV4KHNlbGYpOgorICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKyAgICAgICAgZVsxXSA9IEVULkVsZW1lbnQoJ2InKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgWydhMCcsICdiJywgJ2EyJywgJ2EzJ10pCisKKyAgICAgICAgZVstMl0gPSBFVC5FbGVtZW50KCdjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTAnLCAnYicsICdjJywgJ2EzJ10pCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGVbNV0gPSBFVC5FbGVtZW50KCdkJykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGVbLTVdID0gRVQuRWxlbWVudCgnZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2InLCAnYycsICdhMyddKQorCisgICAgZGVmIHRlc3Rfc2V0c2xpY2VfcmFuZ2Uoc2VsZik6CisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICBlWzE6M10gPSBbRVQuRWxlbWVudCgnYiVzJyAlIGkpIGZvciBpIGluIHJhbmdlKDIpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgWydhMCcsICdiMCcsICdiMScsICdhMyddKQorCisgICAgICAgIGUgPSBzZWxmLl9tYWtlX2VsZW1fd2l0aF9jaGlsZHJlbig0KQorICAgICAgICBlWzE6M10gPSBbRVQuRWxlbWVudCgnYicpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgWydhMCcsICdiJywgJ2EzJ10pCisKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDQpCisgICAgICAgIGVbMTozXSA9IFtFVC5FbGVtZW50KCdiJXMnICUgaSkgZm9yIGkgaW4gcmFuZ2UoMyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2IwJywgJ2IxJywgJ2IyJywgJ2EzJ10pCisKKyAgICBkZWYgdGVzdF9zZXRzbGljZV9zdGVwcyhzZWxmKToKKyAgICAgICAgZSA9IHNlbGYuX21ha2VfZWxlbV93aXRoX2NoaWxkcmVuKDYpCisgICAgICAgIGVbMTo1OjJdID0gW0VULkVsZW1lbnQoJ2IlcycgJSBpKSBmb3IgaSBpbiByYW5nZSgyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTAnLCAnYjAnLCAnYTInLCAnYjEnLCAnYTQnLCAnYTUnXSkKKworICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGVbMTo1OjJdID0gW0VULkVsZW1lbnQoJ2InKV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGVbMTo1OjJdID0gW0VULkVsZW1lbnQoJ2IlcycgJSBpKSBmb3IgaSBpbiByYW5nZSgzKV0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGVbMTo1OjJdID0gW10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTAnLCAnYTEnLCAnYTInLCAnYTMnLCAnYTQnLCAnYTUnXSkKKworICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKyAgICAgICAgZVsxOjpzeXMubWF4c2l6ZV0gPSBbRVQuRWxlbWVudCgnYicpXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX3N1YmVsZW1fdGFncyhlKSwgWydhMCcsICdiJywgJ2EyJywgJ2EzJ10pCisgICAgICAgIGVbMTo6c3lzLm1heHNpemU8PDY0XSA9IFtFVC5FbGVtZW50KCdjJyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2MnLCAnYTInLCAnYTMnXSkKKworICAgIGRlZiB0ZXN0X3NldHNsaWNlX25lZ2F0aXZlX3N0ZXBzKHNlbGYpOgorICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKyAgICAgICAgZVsyOjA6LTFdID0gW0VULkVsZW1lbnQoJ2IlcycgJSBpKSBmb3IgaSBpbiByYW5nZSgyKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTAnLCAnYjEnLCAnYjAnLCAnYTMnXSkKKworICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGVbMjowOi0xXSA9IFtFVC5FbGVtZW50KCdiJyldCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBlWzI6MDotMV0gPSBbRVQuRWxlbWVudCgnYiVzJyAlIGkpIGZvciBpIGluIHJhbmdlKDMpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgZVsyOjA6LTFdID0gW10KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTAnLCAnYTEnLCAnYTInLCAnYTMnXSkKKworICAgICAgICBlID0gc2VsZi5fbWFrZV9lbGVtX3dpdGhfY2hpbGRyZW4oNCkKKyAgICAgICAgZVsxOjotc3lzLm1heHNpemVdID0gW0VULkVsZW1lbnQoJ2InKV0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9zdWJlbGVtX3RhZ3MoZSksIFsnYTAnLCAnYicsICdhMicsICdhMyddKQorICAgICAgICBlWzE6Oi1zeXMubWF4c2l6ZS0xXSA9IFtFVC5FbGVtZW50KCdjJyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2MnLCAnYTInLCAnYTMnXSkKKyAgICAgICAgZVsxOjotc3lzLm1heHNpemU8PDY0XSA9IFtFVC5FbGVtZW50KCdkJyldCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5fc3ViZWxlbV90YWdzKGUpLCBbJ2EwJywgJ2QnLCAnYTInLCAnYTMnXSkKKworCitjbGFzcyBJT1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgc3VwcG9ydC51bmxpbmsoVEVTVEZOKQorCisgICAgZGVmIHRlc3RfZW5jb2Rpbmcoc2VsZik6CisgICAgICAgICMgVGVzdCBlbmNvZGluZyBpc3N1ZXMuCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBlbGVtLnRleHQgPSB1ImFiYyIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSksICc8dGFnPmFiYzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpLAorICAgICAgICAgICAgICAgICc8dGFnPmFiYzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgICc8dGFnPmFiYzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJpc28tODg1OS0xIiksCisgICAgICAgICAgICAgICAgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2lzby04ODU5LTEnPz5cbiIKKyAgICAgICAgICAgICAgICAiPHRhZz5hYmM8L3RhZz4iKQorCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBlbGVtLnRleHQgPSAiPCZcIlwnPiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSksICc8dGFnPiZsdDsmYW1wOyJcJyZndDs8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXRmLTgiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWc+Jmx0OyZhbXA7IlwnJmd0OzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1cy1hc2NpaSIpLAorICAgICAgICAgICAgICAgIGInPHRhZz4mbHQ7JmFtcDsiXCcmZ3Q7PC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKSwKKyAgICAgICAgICAgICAgICAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/PlxuIgorICAgICAgICAgICAgICAgICI8dGFnPiZsdDsmYW1wO1wiJyZndDs8L3RhZz4iKQorCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBlbGVtLmF0dHJpYlsia2V5Il0gPSAiPCZcIlwnPiIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSksICc8dGFnIGtleT0iJmx0OyZhbXA7JnF1b3Q7XCcmZ3Q7IiAvPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpLAorICAgICAgICAgICAgICAgIGInPHRhZyBrZXk9IiZsdDsmYW1wOyZxdW90O1wnJmd0OyIgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0idXMtYXNjaWkiKSwKKyAgICAgICAgICAgICAgICBiJzx0YWcga2V5PSImbHQ7JmFtcDsmcXVvdDtcJyZndDsiIC8+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9Imlzby04ODU5LTEiKSwKKyAgICAgICAgICAgICAgICAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0naXNvLTg4NTktMSc/PlxuIgorICAgICAgICAgICAgICAgICI8dGFnIGtleT1cIiZsdDsmYW1wOyZxdW90OycmZ3Q7XCIgLz4iKQorCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBlbGVtLnRleHQgPSB1J1x4ZTVceGY2XHhmNjw+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwKKyAgICAgICAgICAgICAgICAnPHRhZz4mIzIyOTsmIzI0NjsmIzI0NjsmbHQ7Jmd0OzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpLAorICAgICAgICAgICAgICAgICc8dGFnPlx4YzNceGE1XHhjM1x4YjZceGMzXHhiNiZsdDsmZ3Q7PC90YWc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIiksCisgICAgICAgICAgICAgICAgJzx0YWc+JiMyMjk7JiMyNDY7JiMyNDY7Jmx0OyZndDs8L3RhZz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpLAorICAgICAgICAgICAgICAgICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+XG4iCisgICAgICAgICAgICAgICAgIjx0YWc+XHhlNVx4ZjZceGY2Jmx0OyZndDs8L3RhZz4iKQorCisgICAgICAgIGVsZW0gPSBFVC5FbGVtZW50KCJ0YWciKQorICAgICAgICBlbGVtLmF0dHJpYlsia2V5Il0gPSB1J1x4ZTVceGY2XHhmNjw+JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtKSwKKyAgICAgICAgICAgICAgICAnPHRhZyBrZXk9IiYjMjI5OyYjMjQ2OyYjMjQ2OyZsdDsmZ3Q7IiAvPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VyaWFsaXplKGVsZW0sIGVuY29kaW5nPSJ1dGYtOCIpLAorICAgICAgICAgICAgICAgICc8dGFnIGtleT0iXHhjM1x4YTVceGMzXHhiNlx4YzNceGI2Jmx0OyZndDsiIC8+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJpYWxpemUoZWxlbSwgZW5jb2Rpbmc9InVzLWFzY2lpIiksCisgICAgICAgICAgICAgICAgJzx0YWcga2V5PSImIzIyOTsmIzI0NjsmIzI0NjsmbHQ7Jmd0OyIgLz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcmlhbGl6ZShlbGVtLCBlbmNvZGluZz0iaXNvLTg4NTktMSIpLAorICAgICAgICAgICAgICAgICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+XG4iCisgICAgICAgICAgICAgICAgIjx0YWcga2V5PVwiXHhlNVx4ZjZceGY2Jmx0OyZndDtcIiAvPiIpCisKKyAgICBkZWYgdGVzdF93cml0ZV90b19maWxlbmFtZShzZWxmKToKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKEVULlhNTCgnJyc8c2l0ZSAvPicnJykpCisgICAgICAgIHRyZWUud3JpdGUoVEVTVEZOKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3Rfd3JpdGVfdG9fZmlsZShzZWxmKToKKyAgICAgICAgdHJlZSA9IEVULkVsZW1lbnRUcmVlKEVULlhNTCgnJyc8c2l0ZSAvPicnJykpCisgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3YicpIGFzIGY6CisgICAgICAgICAgICB0cmVlLndyaXRlKGYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYuY2xvc2VkKQorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAncmInKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgYicnJzxzaXRlIC8+JycnKQorCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX3N0cmluZ2lvKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoKQorICAgICAgICBzdHJlYW0gPSBTdHJpbmdJTy5TdHJpbmdJTygnJyc8P3htbCB2ZXJzaW9uPSIxLjAiPz48c2l0ZT48L3NpdGU+JycnKQorICAgICAgICB0cmVlLnBhcnNlKHN0cmVhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmdldHJvb3QoKS50YWcsICdzaXRlJykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX3N0cmluZ2lvKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICB0cmVlLndyaXRlKHN0cmVhbSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uZ2V0dmFsdWUoKSwgJycnPHNpdGUgLz4nJycpCisKKyAgICBjbGFzcyBkdW1teToKKyAgICAgICAgcGFzcworCisgICAgZGVmIHRlc3RfcmVhZF9mcm9tX3VzZXJfcmVhZGVyKHNlbGYpOgorICAgICAgICBzdHJlYW0gPSBTdHJpbmdJTy5TdHJpbmdJTygnJyc8P3htbCB2ZXJzaW9uPSIxLjAiPz48c2l0ZT48L3NpdGU+JycnKQorICAgICAgICByZWFkZXIgPSBzZWxmLmR1bW15KCkKKyAgICAgICAgcmVhZGVyLnJlYWQgPSBzdHJlYW0ucmVhZAorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoKQorICAgICAgICB0cmVlLnBhcnNlKHJlYWRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmVlLmdldHJvb3QoKS50YWcsICdzaXRlJykKKworICAgIGRlZiB0ZXN0X3dyaXRlX3RvX3VzZXJfd3JpdGVyKHNlbGYpOgorICAgICAgICB0cmVlID0gRVQuRWxlbWVudFRyZWUoRVQuWE1MKCcnJzxzaXRlIC8+JycnKSkKKyAgICAgICAgc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICB3cml0ZXIgPSBzZWxmLmR1bW15KCkKKyAgICAgICAgd3JpdGVyLndyaXRlID0gc3RyZWFtLndyaXRlCisgICAgICAgIHRyZWUud3JpdGUod3JpdGVyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5nZXR2YWx1ZSgpLCAnJyc8c2l0ZSAvPicnJykKKworICAgIGRlZiB0ZXN0X3Rvc3RyaW5nbGlzdF9pbnZhcmlhbnQoc2VsZik6CisgICAgICAgIHJvb3QgPSBFVC5mcm9tc3RyaW5nKCc8dGFnPmZvbzwvdGFnPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBFVC50b3N0cmluZyhyb290KSwKKyAgICAgICAgICAgICcnLmpvaW4oRVQudG9zdHJpbmdsaXN0KHJvb3QpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIEVULnRvc3RyaW5nKHJvb3QsICd1dGYtMTYnKSwKKyAgICAgICAgICAgIGInJy5qb2luKEVULnRvc3RyaW5nbGlzdChyb290LCAndXRmLTE2JykpKQorCisKK2NsYXNzIFBhcnNlRXJyb3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKEVULlBhcnNlRXJyb3IoKSwgU3ludGF4RXJyb3IpCisKKyAgICBkZWYgX2dldF9lcnJvcihzZWxmLCBzKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgRVQuZnJvbXN0cmluZyhzKQorICAgICAgICBleGNlcHQgRVQuUGFyc2VFcnJvciBhcyBlOgorICAgICAgICAgICAgcmV0dXJuIGUKKworICAgIGRlZiB0ZXN0X2Vycm9yX3Bvc2l0aW9uKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9lcnJvcignZm9vJykucG9zaXRpb24sICgxLCAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfZXJyb3IoJzx0YWc+JmZvbzs8L3RhZz4nKS5wb3NpdGlvbiwgKDEsIDUpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuX2dldF9lcnJvcignZm9vYmFyPCcpLnBvc2l0aW9uLCAoMSwgNikpCisKKyAgICBAcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9lcnJvcl9jb2RlKHNlbGYpOgorICAgICAgICBmcm9tIHhtbC5wYXJzZXJzIGltcG9ydCBleHBhdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGF0LkVycm9yU3RyaW5nKHNlbGYuX2dldF9lcnJvcignZm9vJykuY29kZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwYXQuZXJyb3JzLlhNTF9FUlJPUl9TWU5UQVgpCisKKworY2xhc3MgS2V5d29yZEFyZ3NUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIFRlc3QgdmFyaW91cyBpc3N1ZXMgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgdG8gRVQuRWxlbWVudAorICAgICMgY29uc3RydWN0b3IgYW5kIG1ldGhvZHMKKyAgICBkZWYgdGVzdF9pc3N1ZTE0ODE4KHNlbGYpOgorICAgICAgICB4ID0gRVQuWE1MKCI8YT5mb288L2E+IikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZpbmQoJ2EnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB4LmZpbmQocGF0aD0nYScsIG5hbWVzcGFjZXM9Tm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeC5maW5kdGV4dCgnYScsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHguZmluZHRleHQocGF0aD0nYScsIGRlZmF1bHQ9Tm9uZSwgbmFtZXNwYWNlcz1Ob25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LmZpbmRhbGwoJ2EnLCBOb25lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB4LmZpbmRhbGwocGF0aD0nYScsIG5hbWVzcGFjZXM9Tm9uZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdCh4Lml0ZXJmaW5kKCdhJywgTm9uZSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QoeC5pdGVyZmluZChwYXRoPSdhJywgbmFtZXNwYWNlcz1Ob25lKSkpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChFVC5FbGVtZW50KCdhJykuYXR0cmliLCB7fSkKKyAgICAgICAgZWxlbWVudHMgPSBbCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgZGljdChocmVmPSIjIiwgaWQ9ImZvbyIpKSwKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBhdHRyaWI9ZGljdChocmVmPSIjIiwgaWQ9ImZvbyIpKSwKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBkaWN0KGhyZWY9IiMiKSwgaWQ9ImZvbyIpLAorICAgICAgICAgICAgRVQuRWxlbWVudCgnYScsIGhyZWY9IiMiLCBpZD0iZm9vIiksCisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgZGljdChocmVmPSIjIiwgaWQ9ImZvbyIpLCBocmVmPSIjIiwgaWQ9ImZvbyIpLAorICAgICAgICBdCisgICAgICAgIGZvciBlIGluIGVsZW1lbnRzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnRhZywgJ2EnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmF0dHJpYiwgZGljdChocmVmPSIjIiwgaWQ9ImZvbyIpKQorCisgICAgICAgIGUyID0gRVQuU3ViRWxlbWVudChlbGVtZW50c1swXSwgJ2Zvb2JhcicsIGF0dHJpYj17J2tleTEnOiAndmFsdWUxJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZTIuYXR0cmliWydrZXkxJ10sICd2YWx1ZTEnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleHAoVHlwZUVycm9yLCAnbXVzdCBiZSBkaWN0LCBub3Qgc3RyJyk6CisgICAgICAgICAgICBFVC5FbGVtZW50KCdhJywgIkknbSBub3QgYSBkaWN0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChUeXBlRXJyb3IsICdtdXN0IGJlIGRpY3QsIG5vdCBzdHInKToKKyAgICAgICAgICAgIEVULkVsZW1lbnQoJ2EnLCBhdHRyaWI9IkknbSBub3QgYSBkaWN0IikKIAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyByZXBvcnRlZCBvbiBidWdzLnB5dGhvbi5vcmcKIAotZGVmIGJ1Z18xNTM0NjMwKCk6Ci0gICAgIiIiCitjbGFzcyBOb0FjY2VsZXJhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBpZiBFVCBpcyBub3QgcHlFVDoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdvbmx5IGZvciB0aGUgUHl0aG9uIHZlcnNpb24nKQogCi0gICAgPj4+IGJvYiA9IEVULlRyZWVCdWlsZGVyKCkKLSAgICA+Pj4gZSA9IGJvYi5kYXRhKCJkYXRhIikKLSAgICA+Pj4gZSA9IGJvYi5zdGFydCgidGFnIiwge30pCi0gICAgPj4+IGUgPSBib2IuZW5kKCJ0YWciKQotICAgID4+PiBlID0gYm9iLmNsb3NlKCkKLSAgICA+Pj4gc2VyaWFsaXplKGUpCi0gICAgJzx0YWcgLz4nCi0KLSAgICAiIiIKLQotZGVmIGNoZWNrX2lzc3VlNjIzMygpOgotICAgICIiIgotCi0gICAgPj4+IGUgPSBFVC5YTUwoIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J3V0Zi04Jz8+PGJvZHk+dFxceGMzXFx4YTNnPC9ib2R5PiIpCi0gICAgPj4+IEVULnRvc3RyaW5nKGUsICdhc2NpaScpCi0gICAgIjw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J2FzY2lpJz8+XFxuPGJvZHk+dCYjMjI3O2c8L2JvZHk+IgotICAgID4+PiBlID0gRVQuWE1MKCI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdpc28tODg1OS0xJz8+PGJvZHk+dFxceGUzZzwvYm9keT4iKQotICAgID4+PiBFVC50b3N0cmluZyhlLCAnYXNjaWknKQotICAgICI8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdhc2NpaSc/Plxcbjxib2R5PnQmIzIyNztnPC9ib2R5PiIKLQotICAgICIiIgotCi1kZWYgY2hlY2tfaXNzdWUzMTUxKCk6Ci0gICAgIiIiCi0KLSAgICA+Pj4gZSA9IEVULlhNTCgnPHByZWZpeDpsb2NhbG5hbWUgeG1sbnM6cHJlZml4PSIke3N0dWZmfSIvPicpCi0gICAgPj4+IGUudGFnCi0gICAgJ3ske3N0dWZmfX1sb2NhbG5hbWUnCi0gICAgPj4+IHQgPSBFVC5FbGVtZW50VHJlZShlKQotICAgID4+PiBFVC50b3N0cmluZyhlKQotICAgICc8bnMwOmxvY2FsbmFtZSB4bWxuczpuczA9IiR7c3R1ZmZ9IiAvPicKLQotICAgICIiIgotCi1kZWYgY2hlY2tfaXNzdWU2NTY1KCk6Ci0gICAgIiIiCi0KLSAgICA+Pj4gZWxlbSA9IEVULlhNTCgiPGJvZHk+PHRhZy8+PC9ib2R5PiIpCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0pCi0gICAgWyd0YWcnXQotICAgID4+PiBuZXdlbGVtID0gRVQuWE1MKFNBTVBMRV9YTUwpCi0gICAgPj4+IGVsZW1bOl0gPSBuZXdlbGVtWzpdCi0gICAgPj4+IHN1bW1hcml6ZV9saXN0KGVsZW0pCi0gICAgWyd0YWcnLCAndGFnJywgJ3NlY3Rpb24nXQotCi0gICAgIiIiCi0KLWRlZiBjaGVja19odG1sX2VtcHR5X2VsZW1zX3NlcmlhbGl6YXRpb24oc2VsZik6Ci0gICAgIyBpc3N1ZSAxNTk3MAotICAgICMgZnJvbSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNDAxL2luZGV4L2VsZW1lbnRzLmh0bWwKLSAgICAiIiIKLQotICAgID4+PiBlbXB0eV9lbGVtcyA9IFsnQVJFQScsICdCQVNFJywgJ0JBU0VGT05UJywgJ0JSJywgJ0NPTCcsICdGUkFNRScsICdIUicsCi0gICAgLi4uICAgICAgICAgICAgICAgICdJTUcnLCAnSU5QVVQnLCAnSVNJTkRFWCcsICdMSU5LJywgJ01FVEEnLCAnUEFSQU0nXQotICAgID4+PiBlbGVtcyA9ICcnLmpvaW4oJzwlcyAvPicgJSBlbGVtIGZvciBlbGVtIGluIGVtcHR5X2VsZW1zKQotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48QVJFQT48QkFTRT48QkFTRUZPTlQ+PEJSPjxDT0w+PEZSQU1FPjxIUj48SU1HPjxJTlBVVD48SVNJTkRFWD48TElOSz48TUVUQT48UEFSQU0+PC9odG1sPicKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zLmxvd2VyKCkpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48YXJlYT48YmFzZT48YmFzZWZvbnQ+PGJyPjxjb2w+PGZyYW1lPjxocj48aW1nPjxpbnB1dD48aXNpbmRleD48bGluaz48bWV0YT48cGFyYW0+PC9odG1sPicKLSAgICA+Pj4gZWxlbXMgPSAnJy5qb2luKCc8JXM+PC8lcz4nICUgKGVsZW0sIGVsZW0pIGZvciBlbGVtIGluIGVtcHR5X2VsZW1zKQotICAgID4+PiBzZXJpYWxpemUoRVQuWE1MKCc8aHRtbD4lczwvaHRtbD4nICUgZWxlbXMpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48QVJFQT48QkFTRT48QkFTRUZPTlQ+PEJSPjxDT0w+PEZSQU1FPjxIUj48SU1HPjxJTlBVVD48SVNJTkRFWD48TElOSz48TUVUQT48UEFSQU0+PC9odG1sPicKLSAgICA+Pj4gc2VyaWFsaXplKEVULlhNTCgnPGh0bWw+JXM8L2h0bWw+JyAlIGVsZW1zLmxvd2VyKCkpLCBtZXRob2Q9J2h0bWwnKQotICAgICc8aHRtbD48YXJlYT48YmFzZT48YmFzZWZvbnQ+PGJyPjxjb2w+PGZyYW1lPjxocj48aW1nPjxpbnB1dD48aXNpbmRleD48bGluaz48bWV0YT48cGFyYW0+PC9odG1sPicKLQotICAgICIiIgorICAgICMgVGVzdCB0aGF0IHRoZSBDIGFjY2VsZXJhdG9yIHdhcyBub3QgaW1wb3J0ZWQgZm9yIHB5RVQKKyAgICBkZWYgdGVzdF9jb3JyZWN0X2ltcG9ydF9weUVUKHNlbGYpOgorICAgICAgICAjIFRoZSB0eXBlIG9mIG1ldGhvZHMgZGVmaW5lZCBpbiBQeXRob24gY29kZSBpcyB0eXBlcy5GdW5jdGlvblR5cGUsCisgICAgICAgICMgd2hpbGUgdGhlIHR5cGUgb2YgbWV0aG9kcyBkZWZpbmVkIGluc2lkZSBfZWxlbWVudHRyZWUgaXMKKyAgICAgICAgIyA8Y2xhc3MgJ3dyYXBwZXJfZGVzY3JpcHRvcic+CisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShweUVULkVsZW1lbnQuX19pbml0X18sIHR5cGVzLkZ1bmN0aW9uVHlwZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHB5RVQuWE1MUGFyc2VyLl9faW5pdF9fLCB0eXBlcy5GdW5jdGlvblR5cGUpCiAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCi1jbGFzcyBDbGVhbkNvbnRleHQob2JqZWN0KToKLSAgICAiIiJQcm92aWRlIGRlZmF1bHQgbmFtZXNwYWNlIG1hcHBpbmcgYW5kIHBhdGggY2FjaGUuIiIiCi0gICAgY2hlY2t3YXJuaW5ncyA9IE5vbmUKK2RlZiB0ZXN0X21haW4obW9kdWxlPU5vbmUpOgorICAgICMgV2hlbiBpbnZva2VkIHdpdGhvdXQgYSBtb2R1bGUsIHJ1bnMgdGhlIFB5dGhvbiBFVCB0ZXN0cyBieSBsb2FkaW5nIHB5RVQuCisgICAgIyBPdGhlcndpc2UsIHVzZXMgdGhlIGdpdmVuIG1vZHVsZSBhcyB0aGUgRVQuCisgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIG1vZHVsZSA9IHB5RVQKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWlldD1GYWxzZSk6Ci0gICAgICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZSA+PSAyOgotICAgICAgICAgICAgIyB1bmRlciAtT08sIGRvY3Rlc3RzIGNhbm5vdCBiZSBydW4gYW5kIHRoZXJlZm9yZSBub3QgYWxsIHdhcm5pbmdzCi0gICAgICAgICAgICAjIHdpbGwgYmUgZW1pdHRlZAotICAgICAgICAgICAgcXVpZXQgPSBUcnVlCi0gICAgICAgIGRlcHJlY2F0aW9ucyA9ICgKLSAgICAgICAgICAgICMgU2VhcmNoIGJlaGF2aW91ciBpcyBicm9rZW4gaWYgc2VhcmNoIHBhdGggc3RhcnRzIHdpdGggIi8iLgotICAgICAgICAgICAgKCJUaGlzIHNlYXJjaCBpcyBicm9rZW4gaW4gMS4zIGFuZCBlYXJsaWVyLCBhbmQgd2lsbCBiZSBmaXhlZCAiCi0gICAgICAgICAgICAgImluIGEgZnV0dXJlIHZlcnNpb24uICBJZiB5b3UgcmVseSBvbiB0aGUgY3VycmVudCBiZWhhdmlvdXIsICIKLSAgICAgICAgICAgICAiY2hhbmdlIGl0IHRvICcuKyciLCBGdXR1cmVXYXJuaW5nKSwKLSAgICAgICAgICAgICMgRWxlbWVudC5nZXRjaGlsZHJlbigpIGFuZCBFbGVtZW50LmdldGl0ZXJhdG9yKCkgYXJlIGRlcHJlY2F0ZWQuCi0gICAgICAgICAgICAoIlRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuICAiCi0gICAgICAgICAgICAgIlVzZSAuKyBpbnN0ZWFkLiIsIERlcHJlY2F0aW9uV2FybmluZyksCi0gICAgICAgICAgICAoIlRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuICAiCi0gICAgICAgICAgICAgIlVzZSAuKyBpbnN0ZWFkLiIsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpLAotICAgICAgICAgICAgIyBYTUxQYXJzZXIuZG9jdHlwZSgpIGlzIGRlcHJlY2F0ZWQuCi0gICAgICAgICAgICAoIlRoaXMgbWV0aG9kIG9mIFhNTFBhcnNlciBpcyBkZXByZWNhdGVkLiAgRGVmaW5lIGRvY3R5cGUuLiAiCi0gICAgICAgICAgICAgIm1ldGhvZCBvbiB0aGUgVHJlZUJ1aWxkZXIgdGFyZ2V0LiIsIERlcHJlY2F0aW9uV2FybmluZykpCi0gICAgICAgIHNlbGYuY2hlY2t3YXJuaW5ncyA9IHRlc3Rfc3VwcG9ydC5jaGVja193YXJuaW5ncygqZGVwcmVjYXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9cXVpZXQpCisgICAgZ2xvYmFsIEVUCisgICAgRVQgPSBtb2R1bGUKIAotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50VHJlZQotICAgICAgICBzZWxmLl9uc21hcCA9IEVsZW1lbnRUcmVlLl9uYW1lc3BhY2VfbWFwCi0gICAgICAgIHNlbGYuX3BhdGhfY2FjaGUgPSBFbGVtZW50VHJlZS5FbGVtZW50UGF0aC5fY2FjaGUKLSAgICAgICAgIyBDb3B5IHRoZSBkZWZhdWx0IG5hbWVzcGFjZSBtYXBwaW5nCi0gICAgICAgIEVsZW1lbnRUcmVlLl9uYW1lc3BhY2VfbWFwID0gc2VsZi5fbnNtYXAuY29weSgpCi0gICAgICAgICMgQ29weSB0aGUgcGF0aCBjYWNoZSAoc2hvdWxkIGJlIGVtcHR5KQotICAgICAgICBFbGVtZW50VHJlZS5FbGVtZW50UGF0aC5fY2FjaGUgPSBzZWxmLl9wYXRoX2NhY2hlLmNvcHkoKQotICAgICAgICBzZWxmLmNoZWNrd2FybmluZ3MuX19lbnRlcl9fKCkKKyAgICB0ZXN0X2NsYXNzZXMgPSBbCisgICAgICAgIE1vZHVsZVRlc3QsCisgICAgICAgIEVsZW1lbnRTbGljaW5nVGVzdCwKKyAgICAgICAgQmFzaWNFbGVtZW50VGVzdCwKKyAgICAgICAgQmFkRWxlbWVudFRlc3QsCisgICAgICAgIEJhZEVsZW1lbnRQYXRoVGVzdCwKKyAgICAgICAgRWxlbWVudFRyZWVUZXN0LAorICAgICAgICBJT1Rlc3QsCisgICAgICAgIFBhcnNlRXJyb3JUZXN0LAorICAgICAgICBYSW5jbHVkZVRlc3QsCisgICAgICAgIEVsZW1lbnRUcmVlVHlwZVRlc3QsCisgICAgICAgIEVsZW1lbnRGaW5kVGVzdCwKKyAgICAgICAgRWxlbWVudEl0ZXJUZXN0LAorICAgICAgICBUcmVlQnVpbGRlclRlc3QsCisgICAgICAgIFhNTFBhcnNlclRlc3QsCisgICAgICAgIEJ1Z3NUZXN0LAorICAgICAgICBdCiAKLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgotICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKKyAgICAjIFRoZXNlIHRlc3RzIHdpbGwgb25seSBydW4gZm9yIHRoZSBwdXJlLVB5dGhvbiB2ZXJzaW9uIHRoYXQgZG9lc24ndCBpbXBvcnQKKyAgICAjIF9lbGVtZW50dHJlZS4gV2UgY2FuJ3QgdXNlIHNraXBVbmxlc3MgaGVyZSwgYmVjYXVzZSBweUVUIGlzIGZpbGxlZCBpbiBvbmx5CisgICAgIyBhZnRlciB0aGUgbW9kdWxlIGlzIGxvYWRlZC4KKyAgICBpZiBweUVUIGlzIG5vdCBFVDoKKyAgICAgICAgdGVzdF9jbGFzc2VzLmV4dGVuZChbCisgICAgICAgICAgICBOb0FjY2VsZXJhdG9yVGVzdCwKKyAgICAgICAgICAgIF0pCisKKyAgICAjIFByb3ZpZGUgZGVmYXVsdCBuYW1lc3BhY2UgbWFwcGluZyBhbmQgcGF0aCBjYWNoZS4KKyAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudFBhdGgKKyAgICBuc21hcCA9IHB5RVQuX25hbWVzcGFjZV9tYXAKKyAgICAjIENvcHkgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIG1hcHBpbmcKKyAgICBuc21hcF9jb3B5ID0gbnNtYXAuY29weSgpCisgICAgIyBDb3B5IHRoZSBwYXRoIGNhY2hlIChzaG91bGQgYmUgZW1wdHkpCisgICAgcGF0aF9jYWNoZSA9IEVsZW1lbnRQYXRoLl9jYWNoZQorICAgIEVsZW1lbnRQYXRoLl9jYWNoZSA9IHBhdGhfY2FjaGUuY29weSgpCisgICAgdHJ5OgorICAgICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQorICAgIGZpbmFsbHk6CisgICAgICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBFbGVtZW50UGF0aAogICAgICAgICAjIFJlc3RvcmUgbWFwcGluZyBhbmQgcGF0aCBjYWNoZQotICAgICAgICBFbGVtZW50VHJlZS5fbmFtZXNwYWNlX21hcCA9IHNlbGYuX25zbWFwCi0gICAgICAgIEVsZW1lbnRUcmVlLkVsZW1lbnRQYXRoLl9jYWNoZSA9IHNlbGYuX3BhdGhfY2FjaGUKLSAgICAgICAgc2VsZi5jaGVja3dhcm5pbmdzLl9fZXhpdF9fKCphcmdzKQorICAgICAgICBuc21hcC5jbGVhcigpCisgICAgICAgIG5zbWFwLnVwZGF0ZShuc21hcF9jb3B5KQorICAgICAgICBFbGVtZW50UGF0aC5fY2FjaGUgPSBwYXRoX2NhY2hlCisgICAgICAgICMgZG9uJ3QgaW50ZXJmZXJlIHdpdGggc3Vic2VxdWVudCB0ZXN0cworICAgICAgICBFVCA9IE5vbmUKIAogCi1kZWYgdGVzdF9tYWluKG1vZHVsZV9uYW1lPSd4bWwuZXRyZWUuRWxlbWVudFRyZWUnKToKLSAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfeG1sX2V0cmVlCi0KLSAgICB1c2VfcHlfbW9kdWxlID0gKG1vZHVsZV9uYW1lID09ICd4bWwuZXRyZWUuRWxlbWVudFRyZWUnKQotCi0gICAgIyBUaGUgc2FtZSBkb2N0ZXN0cyBhcmUgdXNlZCBmb3IgYm90aCB0aGUgUHl0aG9uIGFuZCB0aGUgQyBpbXBsZW1lbnRhdGlvbnMKLSAgICBhc3NlcnQgdGVzdF94bWxfZXRyZWUuRVQuX19uYW1lX18gPT0gbW9kdWxlX25hbWUKLQotICAgICMgWFhYIHRoZSBDIG1vZHVsZSBzaG91bGQgZ2l2ZSB0aGUgc2FtZSB3YXJuaW5ncyBhcyB0aGUgUHl0aG9uIG1vZHVsZQotICAgIHdpdGggQ2xlYW5Db250ZXh0KHF1aWV0PW5vdCB1c2VfcHlfbW9kdWxlKToKLSAgICAgICAgdGVzdF9zdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfeG1sX2V0cmVlLCB2ZXJib3NpdHk9VHJ1ZSkKLQotICAgICMgVGhlIG1vZHVsZSBzaG91bGQgbm90IGJlIGNoYW5nZWQgYnkgdGhlIHRlc3RzCi0gICAgYXNzZXJ0IHRlc3RfeG1sX2V0cmVlLkVULl9fbmFtZV9fID09IG1vZHVsZV9uYW1lCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CmluZGV4IDk4NDEwYzUuLjcxYTc1NWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQpAQCAtNywxNiArNyw3IEBACiBjRVQgPSB0ZXN0X3N1cHBvcnQuaW1wb3J0X21vZHVsZSgneG1sLmV0cmVlLmNFbGVtZW50VHJlZScpCiAKIAotIyBjRWxlbWVudFRyZWUgc3BlY2lmaWMgdGVzdHMKLQotZGVmIHNhbml0eSgpOgotICAgICIiIgotICAgIEltcG9ydCBzYW5pdHkuCi0KLSAgICA+Pj4gZnJvbSB4bWwuZXRyZWUgaW1wb3J0IGNFbGVtZW50VHJlZQotICAgICIiIgotCi0KK0B1bml0dGVzdC5za2lwVW5sZXNzKGNFVCwgJ3JlcXVpcmVzIF9lbGVtZW50dHJlZScpCiBjbGFzcyBNaXNjVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgSXNzdWUgIzg2NTEuCiAgICAgQHByZWNpc2lvbmJpZ21lbXRlc3Qoc2l6ZT1fMkcgKyAxMDAsIG1lbXVzZT0xKQpAQCAtNjIsMjYgKzUzLDQxIEBACiAgICAgICAgICAgICBkZWwgZWxlbWVudC5hdHRyaWIKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbGVtZW50LmF0dHJpYiwgeydBJzogJ0InLCAnQyc6ICdEJ30pCiAKKyAgICBkZWYgdGVzdF9icG9fMzE3Mjgoc2VsZik6CisgICAgICAgICMgQSBjcmFzaCBzaG91bGRuJ3QgaGFwcGVuIGluIGNhc2UgZ2FyYmFnZSBjb2xsZWN0aW9uIHRyaWdnZXJzIGEgY2FsbAorICAgICAgICAjIHRvIGNsZWFyKCkgb3IgYSByZWFkaW5nIG9mIHRleHQgb3IgdGFpbCwgd2hpbGUgYSBzZXR0ZXIgb3IgY2xlYXIoKQorICAgICAgICAjIGlzIGFscmVhZHkgcnVubmluZy4KKyAgICAgICAgZWxlbSA9IGNFVC5FbGVtZW50KCdlbGVtJykKKyAgICAgICAgY2xhc3MgWDoKKyAgICAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIGVsZW0udGV4dAorICAgICAgICAgICAgICAgIGVsZW0udGFpbAorICAgICAgICAgICAgICAgIGVsZW0uY2xlYXIoKQorCisgICAgICAgIGVsZW0udGV4dCA9IFgoKQorICAgICAgICBlbGVtLmNsZWFyKCkgICMgc2hvdWxkbid0IGNyYXNoCisKKyAgICAgICAgZWxlbS50YWlsID0gWCgpCisgICAgICAgIGVsZW0uY2xlYXIoKSAgIyBzaG91bGRuJ3QgY3Jhc2gKKworICAgICAgICBlbGVtLnRleHQgPSBYKCkKKyAgICAgICAgZWxlbS50ZXh0ID0gWCgpICAjIHNob3VsZG4ndCBjcmFzaAorICAgICAgICBlbGVtLmNsZWFyKCkKKworICAgICAgICBlbGVtLnRhaWwgPSBYKCkKKyAgICAgICAgZWxlbS50YWlsID0gWCgpICAjIHNob3VsZG4ndCBjcmFzaAorICAgICAgICBlbGVtLmNsZWFyKCkKKwogCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3htbF9ldHJlZSwgdGVzdF94bWxfZXRyZWVfYwogCiAgICAgIyBSdW4gdGhlIHRlc3RzIHNwZWNpZmljIHRvIHRoZSBDIGltcGxlbWVudGF0aW9uCi0gICAgdGVzdF9zdXBwb3J0LnJ1bl9kb2N0ZXN0KHRlc3RfeG1sX2V0cmVlX2MsIHZlcmJvc2l0eT1UcnVlKQorICAgIHRlc3Rfc3VwcG9ydC5ydW5fdW5pdHRlc3QoTWlzY1Rlc3RzKQogCi0gICAgIyBBc3NpZ24gdGhlIEMgaW1wbGVtZW50YXRpb24gYmVmb3JlIHJ1bm5pbmcgdGhlIGRvY3Rlc3RzCi0gICAgIyBQYXRjaCB0aGUgX19uYW1lX18sIHRvIHByZXZlbnQgY29uZnVzaW9uIHdpdGggdGhlIHB1cmUgUHl0aG9uIHRlc3QKLSAgICBweUVUID0gdGVzdF94bWxfZXRyZWUuRVQKLSAgICBweV9fbmFtZV9fID0gdGVzdF94bWxfZXRyZWUuX19uYW1lX18KLSAgICB0ZXN0X3htbF9ldHJlZS5FVCA9IGNFVAotICAgIGlmIF9fbmFtZV9fICE9ICdfX21haW5fXyc6Ci0gICAgICAgIHRlc3RfeG1sX2V0cmVlLl9fbmFtZV9fID0gX19uYW1lX18KLSAgICB0cnk6Ci0gICAgICAgICMgUnVuIHRoZSBzYW1lIHRlc3Qgc3VpdGUgYXMgeG1sLmV0cmVlLkVsZW1lbnRUcmVlCi0gICAgICAgIHRlc3RfeG1sX2V0cmVlLnRlc3RfbWFpbihtb2R1bGVfbmFtZT0neG1sLmV0cmVlLmNFbGVtZW50VHJlZScpCi0gICAgZmluYWxseToKLSAgICAgICAgdGVzdF94bWxfZXRyZWUuRVQgPSBweUVUCi0gICAgICAgIHRlc3RfeG1sX2V0cmVlLl9fbmFtZV9fID0gcHlfX25hbWVfXworICAgICMgUnVuIHRoZSBzYW1lIHRlc3Qgc3VpdGUgYXMgdGhlIFB5dGhvbiBtb2R1bGUKKyAgICB0ZXN0X3htbF9ldHJlZS50ZXN0X21haW4obW9kdWxlPWNFVCkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHRlc3RfbWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3htbHJwYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CmluZGV4IDk3ZDllOGYuLjM2YjNiZTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5CkBAIC04NTQsMTMgKzg1NCw5IEBACiBjbGFzcyBTZXJ2ZXJQcm94eVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlLnNldFVwKHNlbGYpCi0gICAgICAgIGlmIHRocmVhZGluZzoKLSAgICAgICAgICAgIHNlbGYudXJsID0gVVJMCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIFdpdGhvdXQgdGhyZWFkaW5nLCBodHRwX3NlcnZlcigpIGFuZCBodHRwX211bHRpX3NlcnZlcigpIHdpbGwgbm90Ci0gICAgICAgICAgICAjIGJlIGV4ZWN1dGVkIGFuZCBVUkwgaXMgc3RpbGwgZXF1YWwgdG8gTm9uZS4gJ2h0dHA6Ly8nIGlzIGEganVzdAotICAgICAgICAgICAgIyBlbm91Z2ggdG8gY2hvb3NlIHRoZSBzY2hlbWUgKEhUVFApCi0gICAgICAgICAgICBzZWxmLnVybCA9ICdodHRwOi8vJworICAgICAgICAjIEFjdHVhbCB2YWx1ZSBvZiB0aGUgVVJMIGRvZXNuJ3QgbWF0dGVyIGlmIGl0IGlzIGEgc3RyaW5nIGluCisgICAgICAgICMgdGhlIGNvcnJlY3QgZm9ybWF0LgorICAgICAgICBzZWxmLnVybCA9ICdodHRwOi8vZmFrZS5sb2NhbGhvc3QnCiAKICAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKICAgICAgICAgcCA9IHhtbHJwY2xpYi5TZXJ2ZXJQcm94eShzZWxmLnVybCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3dyb25nY2VydC5wZW0gYi9MaWIvdGVzdC93cm9uZ2NlcnQucGVtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjkyZjliLi4wMDAwMDAwCi0tLSBhL0xpYi90ZXN0L3dyb25nY2VydC5wZW0KKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0tLS0tLUJFR0lOIFJTQSBQUklWQVRFIEtFWS0tLS0tCi1NSUlDWEFJQkFBS0JnUUM4OVpOeGpUZ1dncTdaMWcwdEo2NXcrazdsTkFqNUlnakxiMTU1VWtVcnowWHNIRG5ICi1GbGJzVlVnMlh0azYrYm8yVUVZSXpON2NJbTVJbXBteVcvMnowSjFJRFZEbHZSMnhKNjU5eHJFMHY1YzJjQjZUCi1mOWxuTlR3cFNvZUsyNE5kN0p3cTRqOXZrOTVmTHJkcXNCcTAvS1Zsc0NYZWl4Uy9DYXFxZHVYZnZ3SURBUUFCCi1Bb0dBUUZrbzR1eUNnemZ4cjRFemI0TXA1cE4zTnBxbnk1K0pleTNyOEVqU0FYOU9nbitDTllnb0JjZHRGZ2JxCi0xeWlmLzBzSzdvaEdCSlU5RlVDQXdycU5CSTlaSEI2cmN5N2R4K2dVTE9tUkJHY2tsbjFvNVMxK3NtVmRtT3NXCi03elVWTEJWQnlLdU5XcVRZRmx6ZlZkNnM0aWlYdEFFMmlIbjNHQ3lZZGxJQ3dyRUNRUURoTVFWeEhkM0VGYnpnCi1TRm1KQlRBUmxaMkdLQTNjMWcvaDkvWGJrRVBROS9Sd0kzdm5qSjJSYVNuamxmb0xsOFRPY2YwdU9HYk9FeUZlCi0xOVJ2Q0xYakFrRUExcytVRTV6aUYrWVZrVzNXb2xEQ1Eya1E1V0c5K2NjZk5lYmZoNmI2N0I3TG41aUcwU2JnCi1reTljanNPM2piTUpRdGx6QVFuSDE4NTBvUkQ1R2k1MWRRSkFJYkhDRExEWlU5T2sxVEkrSTJCaFZ1QTZGNjY2Ci1sRVo3VGVaYUpTWXEzNE9hVVlVZHJ3RzlPZHF3WjlzeTlMVWF2NEVTenUybGhFUWNoQ0pyS01uMjNRSkFSZXFzCi1aTEhVZVRqZlhrVms3ZEhoV1BXU2xVWjZBaG1JbEEvQVE3UGF5ZzIvOHdNL0prWkVKRVB2R1Z5a21zOWlQVXJ2Ci1mckFEUnIraEFHZTQzSWV3blFKQkFKV0tabGxQZ0t1RUJQd29FbGRITlM4blJ1NjFEN0h6eEV6UTJ4bmZqK05rCi0yZmdmMU1BenpUUnNpa2ZHRU5oVnNWV2VxT2NpaldiNmc1Z3N5Q21sUnBjPQotLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZLS0tLS0KLS0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQotTUlJQ3NEQ0NBaG1nQXdJQkFnSUpBT3FZT1lGSmZFRW9NQTBHQ1NxR1NJYjNEUUVCQlFVQU1FVXhDekFKQmdOVgotQkFZVEFrRlZNUk13RVFZRFZRUUlFd3BUYjIxbExWTjBZWFJsTVNFd0h3WURWUVFLRXhoSmJuUmxjbTVsZENCWAotYVdSbmFYUnpJRkIwZVNCTWRHUXdIaGNOTURnd05qSTJNVGd4TlRVeVdoY05NRGt3TmpJMk1UZ3hOVFV5V2pCRgotTVFzd0NRWURWUVFHRXdKQlZURVRNQkVHQTFVRUNCTUtVMjl0WlMxVGRHRjBaVEVoTUI4R0ExVUVDaE1ZU1c1MAotWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JR2ZNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0R05BRENCaVFLQgotZ1FDODlaTnhqVGdXZ3E3WjFnMHRKNjV3K2s3bE5BajVJZ2pMYjE1NVVrVXJ6MFhzSERuSEZsYnNWVWcyWHRrNgotK2JvMlVFWUl6TjdjSW01SW1wbXlXLzJ6MEoxSURWRGx2UjJ4SjY1OXhyRTB2NWMyY0I2VGY5bG5OVHdwU29lSwotMjROZDdKd3E0ajl2azk1ZkxyZHFzQnEwL0tWbHNDWGVpeFMvQ2FxcWR1WGZ2d0lEQVFBQm80R25NSUdrTUIwRwotQTFVZERnUVdCQlRjdE10STNFTzlPakxJMHg5Wm8yaWZrd0lpTmpCMUJnTlZIU01FYmpCc2dCVGN0TXRJM0VPOQotT2pMSTB4OVpvMmlma3dJaU5xRkpwRWN3UlRFTE1Ba0dBMVVFQmhNQ1FWVXhFekFSQmdOVkJBZ1RDbE52YldVdAotVTNSaGRHVXhJVEFmQmdOVkJBb1RHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpJSUpBT3FZT1lGSgotZkVFb01Bd0dBMVVkRXdRRk1BTUJBZjh3RFFZSktvWklodmNOQVFFRkJRQURnWUVBUXdhN2p5YS9EZmhhRG43RQotdXNQa3BnSVg4V0NMMkIxU3FuUlRYRVpmQlBQVnEvY1VtRkd5RVZSVkFUeVNSdU13aThQWGJWY09oWFh1b2NBKwotNDNXK2lJc0Q5cFhhcENaaGhPZXJDcTE4VEMxZFdLOTh2TFVzb0s4UE1qQjZlNUgvTzhicW9qdjBFZUMrZnlDdwotZVNIajVqcEM4aVpLakNIQm4rbUFpNGNRNTE0PQotLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QveG1sdGVzdGRhdGEvZXhwYXQyMjRfdXRmOF9idWcueG1sIGIvTGliL3Rlc3QveG1sdGVzdGRhdGEvZXhwYXQyMjRfdXRmOF9idWcueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NmE4ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC94bWx0ZXN0ZGF0YS9leHBhdDIyNF91dGY4X2J1Zy54bWwKQEAgLTAsMCArMSwyIEBACis8YSBiPScwMTIzNDU2Nzg5MDEyMzQ1NuWPpOS6uuWSj+mbquaKveW5veaAnemqi+Wmjei+nuernumZqemfteWBtuW+l+S4gOe8luWlh+e7nei+hOaThee+juW9k+aXtua1geWjsOWQjuS7o+aYr+S7peWMl+mXqOS5i+mjjuWNl+WxseS5i+mbheaigeWbreS5i+eugOm7hOWPsOS5i+i1i+iHs+S7iuS4uuS9nOWutuensOi/sOWwmuefo+WPiuiHs+a0m+mYs+S5i+WNp+WJoea6quS5i+WFtOeBnuahpeS5i+aAneS6pueahuS8oOS4uuaVheS6i+mSseWhmOayiOWxpeW+t+WFiOeUn+makOWxheilv+a5luS4pOWzsOmXtOWtpOmrmOi0nua0geS4jumbquWQjOiwg+aWueWkp+mbqua7oeWkqeeatOiCpOeyn+iDjOS5i+mZheWFiOeUn+S5g+m5v+S4reixueiIhOerr+WxhemXremXqOaIluaJtuerpeabs+adlui4j+mBjeWFreahpeS4ieeruuaXtuWPluWPpOS6uuivl+iuveWSj+S5i+WQiOWUkOWui+WFg+ivuOWQjeWutumbhuWPpeaIkOivl+W+l+S6jOeZvuWbm+WNgeeroOiBlOe7nOmAmuepv+WmguWHuuS4gOS6uuWmguWRteS4gOawlOawlOeri+S6juiogOihqOagvOWkh+S6juevh+S4reeVpeaXoOaOh+aLvuihpeWHkeS5i+W9oumdnuiDuOasoeWMhee9l+WjrumYlOeslOW6lempsei1sOmyjeiwouasp+iLj+ivuOWFrOS4jeiDveS4uuatpOS4luensOeOi+iNhuWFrOS4uumbhuWPpeaThemVv+inguWFtuWcqOmSn+WxseWvuembquS7hemimOaVsOevh+acquingeacieatpOWZq+WYu+Wlh+efo+WTieS6puWvjOefo+WTieS6iOaFleWFiOeUn+acieiigeWuieS5i+iKguaEp+S4jeiDveS4uuaFp+WPr+S5i+eri+S5g+WPluaWsOmbhuWRveW3peS8oOWGmeS9v+a1t+WGheWQjOWlveiAheefpeWFiOeUn+S4uuWNmuWPpOS8oOi/sOS5i+Wjq+iAjOS4gOaWsOS4luS6uuS5i+iAs+ebruS7luaXpeW/heacieaFlea9nOW+t+mYkOW5veWFieiAjOWJnuWKguS7peS8oOiAheS9meWunuS4uuS5i+aJp+aus+efow0KK+W8mOayu+aIiuWNiOS7suWGrOacm+aXpeaFiOa6quadqOWtkOWZqOihteS6jua1t+iZnuWumOiIjeW6j+avleivl+mDqCcgLz4NCmRpZmYgLS1naXQgYS9MaWIvdG9rZW5pemUucHkgYi9MaWIvdG9rZW5pemUucHkKaW5kZXggZDQyNmNkMi4uNmM4NTdmOCAxMDA2NDQKLS0tIGEvTGliL3Rva2VuaXplLnB5CisrKyBiL0xpYi90b2tlbml6ZS5weQpAQCAtMzA2LDggKzMwNiwxNSBAQAogICAgIGNvbnRsaW5lID0gTm9uZQogICAgIGluZGVudHMgPSBbMF0KIAorICAgIGxhc3RfbGluZSA9IGInJworICAgIGxpbmUgPSBiJycKICAgICB3aGlsZSAxOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBsb29wIG92ZXIgbGluZXMgaW4gc3RyZWFtCiAgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgV2UgY2FwdHVyZSB0aGUgdmFsdWUgb2YgdGhlIGxpbmUgdmFyaWFibGUgaGVyZSBiZWNhdXNlCisgICAgICAgICAgICAjIHJlYWRsaW5lIHVzZXMgdGhlIGVtcHR5IHN0cmluZyAnJyB0byBzaWduYWwgZW5kIG9mIGlucHV0LAorICAgICAgICAgICAgIyBoZW5jZSBgbGluZWAgaXRzZWxmIHdpbGwgYWx3YXlzIGJlIG92ZXJ3cml0dGVuIGF0IHRoZSBlbmQKKyAgICAgICAgICAgICMgb2YgdGhpcyBsb29wLgorICAgICAgICAgICAgbGFzdF9saW5lID0gbGluZQogICAgICAgICAgICAgbGluZSA9IHJlYWRsaW5lKCkKICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb246CiAgICAgICAgICAgICBsaW5lID0gJycKQEAgLTQzNyw2ICs0NDQsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxudW0sIHBvcyksIChsbnVtLCBwb3MrMSksIGxpbmUpCiAgICAgICAgICAgICAgICAgcG9zICs9IDEKIAorICAgICMgQWRkIGFuIGltcGxpY2l0IE5FV0xJTkUgaWYgdGhlIGlucHV0IGRvZXNuJ3QgZW5kIGluIG9uZQorICAgIGlmIGxhc3RfbGluZSBhbmQgbGFzdF9saW5lWy0xXSBub3QgaW4gJ1xyXG4nOgorICAgICAgICB5aWVsZCAoTkVXTElORSwgJycsIChsbnVtIC0gMSwgbGVuKGxhc3RfbGluZSkpLCAobG51bSAtIDEsIGxlbihsYXN0X2xpbmUpICsgMSksICcnKQogICAgIGZvciBpbmRlbnQgaW4gaW5kZW50c1sxOl06ICAgICAgICAgICAgICAgICAjIHBvcCByZW1haW5pbmcgaW5kZW50IGxldmVscwogICAgICAgICB5aWVsZCAoREVERU5ULCAnJywgKGxudW0sIDApLCAobG51bSwgMCksICcnKQogICAgIHlpZWxkIChFTkRNQVJLRVIsICcnLCAobG51bSwgMCksIChsbnVtLCAwKSwgJycpCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvY2FzZS5weSBiL0xpYi91bml0dGVzdC9jYXNlLnB5CmluZGV4IDhmNDYxMDEuLmEzZjc1YWYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9jYXNlLnB5CisrKyBiL0xpYi91bml0dGVzdC9jYXNlLnB5CkBAIC01MjYsNyArNTI2LDggQEAKICAgICAgICAgIiIiRmFpbCBpZiB0aGUgdHdvIG9iamVjdHMgYXJlIHVuZXF1YWwgYXMgZGV0ZXJtaW5lZCBieSB0aGVpcgogICAgICAgICAgICBkaWZmZXJlbmNlIHJvdW5kZWQgdG8gdGhlIGdpdmVuIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcwogICAgICAgICAgICAoZGVmYXVsdCA3KSBhbmQgY29tcGFyaW5nIHRvIHplcm8sIG9yIGJ5IGNvbXBhcmluZyB0aGF0IHRoZQotICAgICAgICAgICBiZXR3ZWVuIHRoZSB0d28gb2JqZWN0cyBpcyBtb3JlIHRoYW4gdGhlIGdpdmVuIGRlbHRhLgorICAgICAgICAgICBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHR3byBvYmplY3RzIGlzIG1vcmUgdGhhbiB0aGUgZ2l2ZW4KKyAgICAgICAgICAgZGVsdGEuCiAKICAgICAgICAgICAgTm90ZSB0aGF0IGRlY2ltYWwgcGxhY2VzIChmcm9tIHplcm8pIGFyZSB1c3VhbGx5IG5vdCB0aGUgc2FtZQogICAgICAgICAgICBhcyBzaWduaWZpY2FudCBkaWdpdHMgKG1lYXN1cmVkIGZyb20gdGhlIG1vc3Qgc2lnbmlmaWNhbnQgZGlnaXQpLgpAQCAtNTY0LDcgKzU2NSw3IEBACiAgICAgICAgICIiIkZhaWwgaWYgdGhlIHR3byBvYmplY3RzIGFyZSBlcXVhbCBhcyBkZXRlcm1pbmVkIGJ5IHRoZWlyCiAgICAgICAgICAgIGRpZmZlcmVuY2Ugcm91bmRlZCB0byB0aGUgZ2l2ZW4gbnVtYmVyIG9mIGRlY2ltYWwgcGxhY2VzCiAgICAgICAgICAgIChkZWZhdWx0IDcpIGFuZCBjb21wYXJpbmcgdG8gemVybywgb3IgYnkgY29tcGFyaW5nIHRoYXQgdGhlCi0gICAgICAgICAgIGJldHdlZW4gdGhlIHR3byBvYmplY3RzIGlzIGxlc3MgdGhhbiB0aGUgZ2l2ZW4gZGVsdGEuCisgICAgICAgICAgIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgdHdvIG9iamVjdHMgaXMgbGVzcyB0aGFuIHRoZSBnaXZlbiBkZWx0YS4KIAogICAgICAgICAgICBOb3RlIHRoYXQgZGVjaW1hbCBwbGFjZXMgKGZyb20gemVybykgYXJlIHVzdWFsbHkgbm90IHRoZSBzYW1lCiAgICAgICAgICAgIGFzIHNpZ25pZmljYW50IGRpZ2l0cyAobWVhc3VyZWQgZnJvbSB0aGUgbW9zdCBzaWduaWZpY2FudCBkaWdpdCkuCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3QvbG9hZGVyLnB5IGIvTGliL3VuaXR0ZXN0L2xvYWRlci5weQppbmRleCA5MTYzYTFhLi4zYzE2MWI1IDEwMDY0NAotLS0gYS9MaWIvdW5pdHRlc3QvbG9hZGVyLnB5CisrKyBiL0xpYi91bml0dGVzdC9sb2FkZXIucHkKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICBfdG9wX2xldmVsX2RpciA9IE5vbmUKIAogICAgIGRlZiBsb2FkVGVzdHNGcm9tVGVzdENhc2Uoc2VsZiwgdGVzdENhc2VDbGFzcyk6Ci0gICAgICAgICIiIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gdGVzdENhc2VDbGFzcyIiIgorICAgICAgICAiIiJSZXR1cm4gYSBzdWl0ZSBvZiBhbGwgdGVzdCBjYXNlcyBjb250YWluZWQgaW4gdGVzdENhc2VDbGFzcyIiIgogICAgICAgICBpZiBpc3N1YmNsYXNzKHRlc3RDYXNlQ2xhc3MsIHN1aXRlLlRlc3RTdWl0ZSk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlRlc3QgY2FzZXMgc2hvdWxkIG5vdCBiZSBkZXJpdmVkIGZyb20gVGVzdFN1aXRlLiIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIE1heWJlIHlvdSBtZWFudCB0byBkZXJpdmUgZnJvbSBUZXN0Q2FzZT8iKQpAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICByZXR1cm4gbG9hZGVkX3N1aXRlCiAKICAgICBkZWYgbG9hZFRlc3RzRnJvbU1vZHVsZShzZWxmLCBtb2R1bGUsIHVzZV9sb2FkX3Rlc3RzPVRydWUpOgotICAgICAgICAiIiJSZXR1cm4gYSBzdWl0ZSBvZiBhbGwgdGVzdHMgY2FzZXMgY29udGFpbmVkIGluIHRoZSBnaXZlbiBtb2R1bGUiIiIKKyAgICAgICAgIiIiUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3QgY2FzZXMgY29udGFpbmVkIGluIHRoZSBnaXZlbiBtb2R1bGUiIiIKICAgICAgICAgdGVzdHMgPSBbXQogICAgICAgICBmb3IgbmFtZSBpbiBkaXIobW9kdWxlKToKICAgICAgICAgICAgIG9iaiA9IGdldGF0dHIobW9kdWxlLCBuYW1lKQpAQCAtNzUsNyArNzUsNyBAQAogICAgICAgICByZXR1cm4gdGVzdHMKIAogICAgIGRlZiBsb2FkVGVzdHNGcm9tTmFtZShzZWxmLCBuYW1lLCBtb2R1bGU9Tm9uZSk6Ci0gICAgICAgICIiIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBnaXZlbiBhIHN0cmluZyBzcGVjaWZpZXIuCisgICAgICAgICIiIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0IGNhc2VzIGdpdmVuIGEgc3RyaW5nIHNwZWNpZmllci4KIAogICAgICAgICBUaGUgbmFtZSBtYXkgcmVzb2x2ZSBlaXRoZXIgdG8gYSBtb2R1bGUsIGEgdGVzdCBjYXNlIGNsYXNzLCBhCiAgICAgICAgIHRlc3QgbWV0aG9kIHdpdGhpbiBhIHRlc3QgY2FzZSBjbGFzcywgb3IgYSBjYWxsYWJsZSBvYmplY3Qgd2hpY2gKQEAgLTEyNCw3ICsxMjQsNyBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkb24ndCBrbm93IGhvdyB0byBtYWtlIHRlc3QgZnJvbTogJXMiICUgb2JqKQogCiAgICAgZGVmIGxvYWRUZXN0c0Zyb21OYW1lcyhzZWxmLCBuYW1lcywgbW9kdWxlPU5vbmUpOgotICAgICAgICAiIiJSZXR1cm4gYSBzdWl0ZSBvZiBhbGwgdGVzdHMgY2FzZXMgZm91bmQgdXNpbmcgdGhlIGdpdmVuIHNlcXVlbmNlCisgICAgICAgICIiIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0IGNhc2VzIGZvdW5kIHVzaW5nIHRoZSBnaXZlbiBzZXF1ZW5jZQogICAgICAgICBvZiBzdHJpbmcgc3BlY2lmaWVycy4gU2VlICdsb2FkVGVzdHNGcm9tTmFtZSgpJy4KICAgICAgICAgIiIiCiAgICAgICAgIHN1aXRlcyA9IFtzZWxmLmxvYWRUZXN0c0Zyb21OYW1lKG5hbWUsIG1vZHVsZSkgZm9yIG5hbWUgaW4gbmFtZXNdCmRpZmYgLS1naXQgYS9MaWIvdW5pdHRlc3Qvc2lnbmFscy5weSBiL0xpYi91bml0dGVzdC9zaWduYWxzLnB5CmluZGV4IGU2YTVmYzUuLjlmYmNjOWYgMTAwNjQ0Ci0tLSBhL0xpYi91bml0dGVzdC9zaWduYWxzLnB5CisrKyBiL0xpYi91bml0dGVzdC9zaWduYWxzLnB5CkBAIC0xMCw3ICsxMCw3IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRlZmF1bHRfaGFuZGxlcik6CiAgICAgICAgIHNlbGYuY2FsbGVkID0gRmFsc2UKICAgICAgICAgc2VsZi5vcmlnaW5hbF9oYW5kbGVyID0gZGVmYXVsdF9oYW5kbGVyCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZGVmYXVsdF9oYW5kbGVyLCBpbnQpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGRlZmF1bHRfaGFuZGxlciwgKGludCwgbG9uZykpOgogICAgICAgICAgICAgaWYgZGVmYXVsdF9oYW5kbGVyID09IHNpZ25hbC5TSUdfREZMOgogICAgICAgICAgICAgICAgICMgUHJldGVuZCBpdCdzIHNpZ25hbC5kZWZhdWx0X2ludF9oYW5kbGVyIGluc3RlYWQuCiAgICAgICAgICAgICAgICAgZGVmYXVsdF9oYW5kbGVyID0gc2lnbmFsLmRlZmF1bHRfaW50X2hhbmRsZXIKZGlmZiAtLWdpdCBhL0xpYi91bml0dGVzdC90ZXN0L3Rlc3RfbG9hZGVyLnB5IGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKaW5kZXggNjhlODcxYy4uZDQ2ZGRjOCAxMDA2NDQKLS0tIGEvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKKysrIGIvTGliL3VuaXR0ZXN0L3Rlc3QvdGVzdF9sb2FkZXIucHkKQEAgLTEwLDcgKzEwLDcgQEAKICAgICAjIyMgVGVzdHMgZm9yIFRlc3RMb2FkZXIubG9hZFRlc3RzRnJvbVRlc3RDYXNlCiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0gICAgIyAiUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3RzIGNhc2VzIGNvbnRhaW5lZCBpbiB0aGUgVGVzdENhc2UtZGVyaXZlZAorICAgICMgIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0IGNhc2VzIGNvbnRhaW5lZCBpbiB0aGUgVGVzdENhc2UtZGVyaXZlZAogICAgICMgY2xhc3MgdGVzdENhc2VDbGFzcyIKICAgICBkZWYgdGVzdF9sb2FkVGVzdHNGcm9tVGVzdENhc2Uoc2VsZik6CiAgICAgICAgIGNsYXNzIEZvbyh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yMyw3ICsyMyw3IEBACiAgICAgICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvYWRlci5sb2FkVGVzdHNGcm9tVGVzdENhc2UoRm9vKSwgdGVzdHMpCiAKLSAgICAjICJSZXR1cm4gYSBzdWl0ZSBvZiBhbGwgdGVzdHMgY2FzZXMgY29udGFpbmVkIGluIHRoZSBUZXN0Q2FzZS1kZXJpdmVkCisgICAgIyAiUmV0dXJuIGEgc3VpdGUgb2YgYWxsIHRlc3QgY2FzZXMgY29udGFpbmVkIGluIHRoZSBUZXN0Q2FzZS1kZXJpdmVkCiAgICAgIyBjbGFzcyB0ZXN0Q2FzZUNsYXNzIgogICAgICMKICAgICAjIE1ha2Ugc3VyZSBpdCBkb2VzIHRoZSByaWdodCB0aGluZyBldmVuIGlmIG5vIHRlc3RzIHdlcmUgZm91bmQKQEAgLTM2LDcgKzM2LDcgQEAKICAgICAgICAgbG9hZGVyID0gdW5pdHRlc3QuVGVzdExvYWRlcigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9hZGVyLmxvYWRUZXN0c0Zyb21UZXN0Q2FzZShGb28pLCBlbXB0eV9zdWl0ZSkKIAotICAgICMgIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gdGhlIFRlc3RDYXNlLWRlcml2ZWQKKyAgICAjICJSZXR1cm4gYSBzdWl0ZSBvZiBhbGwgdGVzdCBjYXNlcyBjb250YWluZWQgaW4gdGhlIFRlc3RDYXNlLWRlcml2ZWQKICAgICAjIGNsYXNzIHRlc3RDYXNlQ2xhc3MiCiAgICAgIwogICAgICMgV2hhdCBoYXBwZW5zIGlmIGxvYWRUZXN0c0Zyb21UZXN0Q2FzZSgpIGlzIGdpdmVuIGFuIG9iamVjdApAQCAtNTcsNyArNTcsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5mYWlsKCdTaG91bGQgcmFpc2UgVHlwZUVycm9yJykKIAotICAgICMgIlJldHVybiBhIHN1aXRlIG9mIGFsbCB0ZXN0cyBjYXNlcyBjb250YWluZWQgaW4gdGhlIFRlc3RDYXNlLWRlcml2ZWQKKyAgICAjICJSZXR1cm4gYSBzdWl0ZSBvZiBhbGwgdGVzdCBjYXNlcyBjb250YWluZWQgaW4gdGhlIFRlc3RDYXNlLWRlcml2ZWQKICAgICAjIGNsYXNzIHRlc3RDYXNlQ2xhc3MiCiAgICAgIwogICAgICMgTWFrZSBzdXJlIGxvYWRUZXN0c0Zyb21UZXN0Q2FzZSgpIHBpY2tzIHVwIHRoZSBkZWZhdWx0IHRlc3QgbWV0aG9kCmRpZmYgLS1naXQgYS9MaWIvdXJsbGliLnB5IGIvTGliL3VybGxpYi5weQppbmRleCA3ZjcwNDk2Li5kODU1MDRhIDEwMDY0NAotLS0gYS9MaWIvdXJsbGliLnB5CisrKyBiL0xpYi91cmxsaWIucHkKQEAgLTEwOTMsOCArMTA5Myw3IEBACiAgICAgIiIic3BsaXRob3N0KCcvL2hvc3RbOnBvcnRdL3BhdGgnKSAtLT4gJ2hvc3RbOnBvcnRdJywgJy9wYXRoJy4iIiIKICAgICBnbG9iYWwgX2hvc3Rwcm9nCiAgICAgaWYgX2hvc3Rwcm9nIGlzIE5vbmU6Ci0gICAgICAgIGltcG9ydCByZQotICAgICAgICBfaG9zdHByb2cgPSByZS5jb21waWxlKCdeLy8oW14vP10qKSguKikkJykKKyAgICAgICAgX2hvc3Rwcm9nID0gcmUuY29tcGlsZSgnLy8oW14vIz9dKikoLiopJywgcmUuRE9UQUxMKQogCiAgICAgbWF0Y2ggPSBfaG9zdHByb2cubWF0Y2godXJsKQogICAgIGlmIG1hdGNoOgpAQCAtMTQyNyw2ICsxNDI2LDcgQEAKICAgICBub19wcm94eV9saXN0ID0gW3Byb3h5LnN0cmlwKCkgZm9yIHByb3h5IGluIG5vX3Byb3h5LnNwbGl0KCcsJyldCiAgICAgZm9yIG5hbWUgaW4gbm9fcHJveHlfbGlzdDoKICAgICAgICAgaWYgbmFtZToKKyAgICAgICAgICAgIG5hbWUgPSBuYW1lLmxzdHJpcCgnLicpICAjIGlnbm9yZSBsZWFkaW5nIGRvdHMKICAgICAgICAgICAgIG5hbWUgPSByZS5lc2NhcGUobmFtZSkKICAgICAgICAgICAgIHBhdHRlcm4gPSByJyguK1wuKT8lcyQnICUgbmFtZQogICAgICAgICAgICAgaWYgKHJlLm1hdGNoKHBhdHRlcm4sIGhvc3Rvbmx5LCByZS5JKQpkaWZmIC0tZ2l0IGEvTGliL3V1aWQucHkgYi9MaWIvdXVpZC5weQppbmRleCA3NDMyMDMyLi44MGQzM2MwIDEwMDY0NAotLS0gYS9MaWIvdXVpZC5weQorKysgYi9MaWIvdXVpZC5weQpAQCAtMzM5LDggKzMzOSw5IEBACiBkZWYgX2lmY29uZmlnX2dldG5vZGUoKToKICAgICAiIiJHZXQgdGhlIGhhcmR3YXJlIGFkZHJlc3Mgb24gVW5peCBieSBydW5uaW5nIGlmY29uZmlnLiIiIgogICAgICMgVGhpcyB3b3JrcyBvbiBMaW51eCAoJycgb3IgJy1hJyksIFRydTY0ICgnLWF2JyksIGJ1dCBub3QgYWxsIFVuaXhlcy4KKyAgICBrZXl3b3JkcyA9ICgnaHdhZGRyJywgJ2V0aGVyJywgJ2FkZHJlc3M6JywgJ2xsYWRkcicpCiAgICAgZm9yIGFyZ3MgaW4gKCcnLCAnLWEnLCAnLWF2Jyk6Ci0gICAgICAgIG1hYyA9IF9maW5kX21hYygnaWZjb25maWcnLCBhcmdzLCBbJ2h3YWRkcicsICdldGhlciddLCBsYW1iZGEgaTogaSsxKQorICAgICAgICBtYWMgPSBfZmluZF9tYWMoJ2lmY29uZmlnJywgYXJncywga2V5d29yZHMsIGxhbWJkYSBpOiBpKzEpCiAgICAgICAgIGlmIG1hYzoKICAgICAgICAgICAgIHJldHVybiBtYWMKIApAQCAtMzUzLDcgKzM1NCwyMCBAQAogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgIyBUcnkgZ2V0dGluZyB0aGUgTUFDIGFkZHIgZnJvbSBhcnAgYmFzZWQgb24gb3VyIElQIGFkZHJlc3MgKFNvbGFyaXMpLgotICAgIHJldHVybiBfZmluZF9tYWMoJ2FycCcsICctYW4nLCBbaXBfYWRkcl0sIGxhbWJkYSBpOiAtMSkKKyAgICBtYWMgPSBfZmluZF9tYWMoJ2FycCcsICctYW4nLCBbaXBfYWRkcl0sIGxhbWJkYSBpOiAtMSkKKyAgICBpZiBtYWM6CisgICAgICAgIHJldHVybiBtYWMKKworICAgICMgVGhpcyB3b3JrcyBvbiBPcGVuQlNECisgICAgbWFjID0gX2ZpbmRfbWFjKCdhcnAnLCAnLWFuJywgW2lwX2FkZHJdLCBsYW1iZGEgaTogaSsxKQorICAgIGlmIG1hYzoKKyAgICAgICAgcmV0dXJuIG1hYworCisgICAgIyBUaGlzIHdvcmtzIG9uIExpbnV4LCBGcmVlQlNEIGFuZCBOZXRCU0QKKyAgICBtYWMgPSBfZmluZF9tYWMoJ2FycCcsICctYW4nLCBbJyglcyknICUgaXBfYWRkcl0sCisgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBpOiBpKzIpCisgICAgaWYgbWFjOgorICAgICAgICByZXR1cm4gbWFjCiAKIGRlZiBfbGFuc2Nhbl9nZXRub2RlKCk6CiAgICAgIiIiR2V0IHRoZSBoYXJkd2FyZSBhZGRyZXNzIG9uIFVuaXggYnkgcnVubmluZyBsYW5zY2FuLiIiIgpAQCAtNDA1LDcgKzQxOSw3IEBACiAgICAgICAgIHdpdGggcGlwZToKICAgICAgICAgICAgIGZvciBsaW5lIGluIHBpcGU6CiAgICAgICAgICAgICAgICAgdmFsdWUgPSBsaW5lLnNwbGl0KCc6JylbLTFdLnN0cmlwKCkubG93ZXIoKQotICAgICAgICAgICAgICAgIGlmIHJlLm1hdGNoKCcoWzAtOWEtZl1bMC05YS1mXS0pezV9WzAtOWEtZl1bMC05YS1mXScsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBpZiByZS5tYXRjaCgnKD86WzAtOWEtZl1bMC05YS1mXS0pezV9WzAtOWEtZl1bMC05YS1mXSQnLCB2YWx1ZSk6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpbnQodmFsdWUucmVwbGFjZSgnLScsICcnKSwgMTYpCiAKIGRlZiBfbmV0Ymlvc19nZXRub2RlKCk6CkBAIC01MDgsNiArNTIyLDExIEBACiAKIF9ub2RlID0gTm9uZQogCitfTk9ERV9HRVRURVJTX1dJTjMyID0gW193aW5kbGxfZ2V0bm9kZSwgX25ldGJpb3NfZ2V0bm9kZSwgX2lwY29uZmlnX2dldG5vZGVdCisKK19OT0RFX0dFVFRFUlNfVU5JWCA9IFtfdW5peGRsbF9nZXRub2RlLCBfaWZjb25maWdfZ2V0bm9kZSwgX2FycF9nZXRub2RlLAorICAgICAgICAgICAgICAgICAgICAgIF9sYW5zY2FuX2dldG5vZGUsIF9uZXRzdGF0X2dldG5vZGVdCisKIGRlZiBnZXRub2RlKCk6CiAgICAgIiIiR2V0IHRoZSBoYXJkd2FyZSBhZGRyZXNzIGFzIGEgNDgtYml0IHBvc2l0aXZlIGludGVnZXIuCiAKQEAgLTUyMywxOCArNTQyLDE5IEBACiAKICAgICBpbXBvcnQgc3lzCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgIGdldHRlcnMgPSBbX3dpbmRsbF9nZXRub2RlLCBfbmV0Ymlvc19nZXRub2RlLCBfaXBjb25maWdfZ2V0bm9kZV0KKyAgICAgICAgZ2V0dGVycyA9IF9OT0RFX0dFVFRFUlNfV0lOMzIKICAgICBlbHNlOgotICAgICAgICBnZXR0ZXJzID0gW191bml4ZGxsX2dldG5vZGUsIF9pZmNvbmZpZ19nZXRub2RlLCBfYXJwX2dldG5vZGUsCi0gICAgICAgICAgICAgICAgICAgX2xhbnNjYW5fZ2V0bm9kZSwgX25ldHN0YXRfZ2V0bm9kZV0KKyAgICAgICAgZ2V0dGVycyA9IF9OT0RFX0dFVFRFUlNfVU5JWAogCiAgICAgZm9yIGdldHRlciBpbiBnZXR0ZXJzICsgW19yYW5kb21fZ2V0bm9kZV06CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIF9ub2RlID0gZ2V0dGVyKCkKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgaWYgX25vZGUgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIChfbm9kZSBpcyBub3QgTm9uZSkgYW5kICgwIDw9IF9ub2RlIDwgKDEgPDwgNDgpKToKICAgICAgICAgICAgIHJldHVybiBfbm9kZQorICAgIGFzc2VydCBGYWxzZSwgJ19yYW5kb21fZ2V0bm9kZSgpIHJldHVybmVkIGludmFsaWQgdmFsdWU6IHt9Jy5mb3JtYXQoX25vZGUpCisKIAogX2xhc3RfdGltZXN0YW1wID0gTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvd2FybmluZ3MucHkgYi9MaWIvd2FybmluZ3MucHkKaW5kZXggYjBkNTNhYS4uODRmMTExZCAxMDA2NDQKLS0tIGEvTGliL3dhcm5pbmdzLnB5CisrKyBiL0xpYi93YXJuaW5ncy5weQpAQCAtODQsMTAgKzg0LDEwIEBACiAgICAgICAgICAgICJjYXRlZ29yeSBtdXN0IGJlIGEgY2xhc3MiCiAgICAgYXNzZXJ0IGlzc3ViY2xhc3MoY2F0ZWdvcnksIFdhcm5pbmcpLCAiY2F0ZWdvcnkgbXVzdCBiZSBhIFdhcm5pbmcgc3ViY2xhc3MiCiAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobW9kdWxlLCBiYXNlc3RyaW5nKSwgIm1vZHVsZSBtdXN0IGJlIGEgc3RyaW5nIgotICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmVubywgaW50KSBhbmQgbGluZW5vID49IDAsIFwKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShsaW5lbm8sIChpbnQsIGxvbmcpKSBhbmQgbGluZW5vID49IDAsIFwKICAgICAgICAgICAgImxpbmVubyBtdXN0IGJlIGFuIGludCA+PSAwIgogICAgIGl0ZW0gPSAoYWN0aW9uLCByZS5jb21waWxlKG1lc3NhZ2UsIHJlLkkpLCBjYXRlZ29yeSwKLSAgICAgICAgICAgIHJlLmNvbXBpbGUobW9kdWxlKSwgbGluZW5vKQorICAgICAgICAgICAgcmUuY29tcGlsZShtb2R1bGUpLCBpbnQobGluZW5vKSkKICAgICBpZiBhcHBlbmQ6CiAgICAgICAgIGZpbHRlcnMuYXBwZW5kKGl0ZW0pCiAgICAgZWxzZToKQEAgLTEwNSw5ICsxMDUsOSBAQAogICAgICIiIgogICAgIGFzc2VydCBhY3Rpb24gaW4gKCJlcnJvciIsICJpZ25vcmUiLCAiYWx3YXlzIiwgImRlZmF1bHQiLCAibW9kdWxlIiwKICAgICAgICAgICAgICAgICAgICAgICAib25jZSIpLCAiaW52YWxpZCBhY3Rpb246ICVyIiAlIChhY3Rpb24sKQotICAgIGFzc2VydCBpc2luc3RhbmNlKGxpbmVubywgaW50KSBhbmQgbGluZW5vID49IDAsIFwKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShsaW5lbm8sIChpbnQsIGxvbmcpKSBhbmQgbGluZW5vID49IDAsIFwKICAgICAgICAgICAgImxpbmVubyBtdXN0IGJlIGFuIGludCA+PSAwIgotICAgIGl0ZW0gPSAoYWN0aW9uLCBOb25lLCBjYXRlZ29yeSwgTm9uZSwgbGluZW5vKQorICAgIGl0ZW0gPSAoYWN0aW9uLCBOb25lLCBjYXRlZ29yeSwgTm9uZSwgaW50KGxpbmVubykpCiAgICAgaWYgYXBwZW5kOgogICAgICAgICBmaWx0ZXJzLmFwcGVuZChpdGVtKQogICAgIGVsc2U6CkBAIC0zMDksOSArMzA5LDEyIEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgbGluZT1Ob25lKToKLSAgICAgICAgbG9jYWxfdmFsdWVzID0gbG9jYWxzKCkKLSAgICAgICAgZm9yIGF0dHIgaW4gc2VsZi5fV0FSTklOR19ERVRBSUxTOgotICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBhdHRyLCBsb2NhbF92YWx1ZXNbYXR0cl0pCisgICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5jYXRlZ29yeSA9IGNhdGVnb3J5CisgICAgICAgIHNlbGYuZmlsZW5hbWUgPSBmaWxlbmFtZQorICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubworICAgICAgICBzZWxmLmZpbGUgPSBmaWxlCisgICAgICAgIHNlbGYubGluZSA9IGxpbmUKICAgICAgICAgc2VsZi5fY2F0ZWdvcnlfbmFtZSA9IGNhdGVnb3J5Ll9fbmFtZV9fIGlmIGNhdGVnb3J5IGVsc2UgTm9uZQogCiAgICAgZGVmIF9fc3RyX18oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvd2Vha3JlZi5weSBiL0xpYi93ZWFrcmVmLnB5CmluZGV4IGNhMzdmODcuLjNlMWZiODEgMTAwNjQ0Ci0tLSBhL0xpYi93ZWFrcmVmLnB5CisrKyBiL0xpYi93ZWFrcmVmLnB5CkBAIC0xOCw3ICsxOCw4IEBACiAgICAgIHByb3h5LAogICAgICBDYWxsYWJsZVByb3h5VHlwZSwKICAgICAgUHJveHlUeXBlLAotICAgICBSZWZlcmVuY2VUeXBlKQorICAgICBSZWZlcmVuY2VUeXBlLAorICAgICBfcmVtb3ZlX2RlYWRfd2Vha3JlZikKIAogZnJvbSBfd2Vha3JlZnNldCBpbXBvcnQgV2Vha1NldCwgX0l0ZXJhdGlvbkd1YXJkCiAKQEAgLTUyLDEzICs1MywxNSBAQAogICAgICAgICBhcmdzID0gYXJnc1sxOl0KICAgICAgICAgaWYgbGVuKGFyZ3MpID4gMToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignZXhwZWN0ZWQgYXQgbW9zdCAxIGFyZ3VtZW50cywgZ290ICVkJyAlIGxlbihhcmdzKSkKLSAgICAgICAgZGVmIHJlbW92ZSh3ciwgc2VsZnJlZj1yZWYoc2VsZikpOgorICAgICAgICBkZWYgcmVtb3ZlKHdyLCBzZWxmcmVmPXJlZihzZWxmKSwgX2F0b21pY19yZW1vdmFsPV9yZW1vdmVfZGVhZF93ZWFrcmVmKToKICAgICAgICAgICAgIHNlbGYgPSBzZWxmcmVmKCkKICAgICAgICAgICAgIGlmIHNlbGYgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5faXRlcmF0aW5nOgogICAgICAgICAgICAgICAgICAgICBzZWxmLl9wZW5kaW5nX3JlbW92YWxzLmFwcGVuZCh3ci5rZXkpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYuZGF0YVt3ci5rZXldCisgICAgICAgICAgICAgICAgICAgICMgQXRvbWljIHJlbW92YWwgaXMgbmVjZXNzYXJ5IHNpbmNlIHRoaXMgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgIyBjYW4gYmUgY2FsbGVkIGFzeW5jaHJvbm91c2x5IGJ5IHRoZSBHQworICAgICAgICAgICAgICAgICAgICBfYXRvbWljX3JlbW92YWwoc2VsZi5kYXRhLCB3ci5rZXkpCiAgICAgICAgIHNlbGYuX3JlbW92ZSA9IHJlbW92ZQogICAgICAgICAjIEEgbGlzdCBvZiBrZXlzIHRvIGJlIHJlbW92ZWQKICAgICAgICAgc2VsZi5fcGVuZGluZ19yZW1vdmFscyA9IFtdCkBAIC03MSw5ICs3NCwxMiBAQAogICAgICAgICAjIFdlIHNob3VsZG4ndCBlbmNvdW50ZXIgYW55IEtleUVycm9yLCBiZWNhdXNlIHRoaXMgbWV0aG9kIHNob3VsZAogICAgICAgICAjIGFsd2F5cyBiZSBjYWxsZWQgKmJlZm9yZSogbXV0YXRpbmcgdGhlIGRpY3QuCiAgICAgICAgIHdoaWxlIGw6Ci0gICAgICAgICAgICBkZWwgZFtsLnBvcCgpXQorICAgICAgICAgICAga2V5ID0gbC5wb3AoKQorICAgICAgICAgICAgX3JlbW92ZV9kZWFkX3dlYWtyZWYoZCwga2V5KQogCiAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CisgICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgICBvID0gc2VsZi5kYXRhW2tleV0oKQogICAgICAgICBpZiBvIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBLZXlFcnJvciwga2V5CkBAIC04Niw2ICs5Miw4IEBACiAgICAgICAgIGRlbCBzZWxmLmRhdGFba2V5XQogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgorICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgorICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbyA9IHNlbGYuZGF0YVtrZXldKCkKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtOTMsNiArMTAxLDggQEAKICAgICAgICAgcmV0dXJuIG8gaXMgbm90IE5vbmUKIAogICAgIGRlZiBoYXNfa2V5KHNlbGYsIGtleSk6CisgICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CisgICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvID0gc2VsZi5kYXRhW2tleV0oKQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CkBAIC0xMTMsNiArMTIzLDggQEAKICAgICAgICAgc2VsZi5kYXRhLmNsZWFyKCkKIAogICAgIGRlZiBjb3B5KHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgorICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICAgbmV3ID0gV2Vha1ZhbHVlRGljdGlvbmFyeSgpCiAgICAgICAgIGZvciBrZXksIHdyIGluIHNlbGYuZGF0YS5pdGVtcygpOgogICAgICAgICAgICAgbyA9IHdyKCkKQEAgLTEyNCw2ICsxMzYsOCBAQAogCiAgICAgZGVmIF9fZGVlcGNvcHlfXyhzZWxmLCBtZW1vKToKICAgICAgICAgZnJvbSBjb3B5IGltcG9ydCBkZWVwY29weQorICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgorICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICAgbmV3ID0gc2VsZi5fX2NsYXNzX18oKQogICAgICAgICBmb3Iga2V5LCB3ciBpbiBzZWxmLmRhdGEuaXRlbXMoKToKICAgICAgICAgICAgIG8gPSB3cigpCkBAIC0xMzIsNiArMTQ2LDggQEAKICAgICAgICAgcmV0dXJuIG5ldwogCiAgICAgZGVmIGdldChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CisgICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3ciA9IHNlbGYuZGF0YVtrZXldCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAgLTE0NSw2ICsxNjEsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBvCiAKICAgICBkZWYgaXRlbXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CisgICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgICBMID0gW10KICAgICAgICAgZm9yIGtleSwgd3IgaW4gc2VsZi5kYXRhLml0ZW1zKCk6CiAgICAgICAgICAgICBvID0gd3IoKQpAQCAtMTUzLDYgKzE3MSw4IEBACiAgICAgICAgIHJldHVybiBMCiAKICAgICBkZWYgaXRlcml0ZW1zKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgorICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICAgd2l0aCBfSXRlcmF0aW9uR3VhcmQoc2VsZik6CiAgICAgICAgICAgICBmb3Igd3IgaW4gc2VsZi5kYXRhLml0ZXJ2YWx1ZXMoKToKICAgICAgICAgICAgICAgICB2YWx1ZSA9IHdyKCkKQEAgLTE2MCw2ICsxODAsOCBAQAogICAgICAgICAgICAgICAgICAgICB5aWVsZCB3ci5rZXksIHZhbHVlCiAKICAgICBkZWYgaXRlcmtleXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CisgICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgICB3aXRoIF9JdGVyYXRpb25HdWFyZChzZWxmKToKICAgICAgICAgICAgIGZvciBrIGluIHNlbGYuZGF0YS5pdGVya2V5cygpOgogICAgICAgICAgICAgICAgIHlpZWxkIGsKQEAgLTE3NiwxMSArMTk4LDE1IEBACiAgICAgICAgIGtlZXAgdGhlIHZhbHVlcyBhcm91bmQgbG9uZ2VyIHRoYW4gbmVlZGVkLgogCiAgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgorICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICAgd2l0aCBfSXRlcmF0aW9uR3VhcmQoc2VsZik6CiAgICAgICAgICAgICBmb3Igd3IgaW4gc2VsZi5kYXRhLml0ZXJ2YWx1ZXMoKToKICAgICAgICAgICAgICAgICB5aWVsZCB3cgogCiAgICAgZGVmIGl0ZXJ2YWx1ZXMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CisgICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgICB3aXRoIF9JdGVyYXRpb25HdWFyZChzZWxmKToKICAgICAgICAgICAgIGZvciB3ciBpbiBzZWxmLmRhdGEuaXRlcnZhbHVlcygpOgogICAgICAgICAgICAgICAgIG9iaiA9IHdyKCkKQEAgLTIwMiwyNCArMjI4LDI3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG8gPSBzZWxmLmRhdGEucG9wKGtleSkoKQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICBvID0gTm9uZQorICAgICAgICBpZiBvIGlzIE5vbmU6CiAgICAgICAgICAgICBpZiBhcmdzOgogICAgICAgICAgICAgICAgIHJldHVybiBhcmdzWzBdCi0gICAgICAgICAgICByYWlzZQotICAgICAgICBpZiBvIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBLZXlFcnJvciwga2V5CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIEtleUVycm9yLCBrZXkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBvCiAKICAgICBkZWYgc2V0ZGVmYXVsdChzZWxmLCBrZXksIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CisgICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3ciA9IHNlbGYuZGF0YVtrZXldCisgICAgICAgICAgICBvID0gc2VsZi5kYXRhW2tleV0oKQogICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgotICAgICAgICAgICAgICAgIHNlbGYuX2NvbW1pdF9yZW1vdmFscygpCisgICAgICAgICAgICBvID0gTm9uZQorICAgICAgICBpZiBvIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLmRhdGFba2V5XSA9IEtleWVkUmVmKGRlZmF1bHQsIHNlbGYuX3JlbW92ZSwga2V5KQogICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB3cigpCisgICAgICAgICAgICByZXR1cm4gbwogCiAgICAgZGVmIHVwZGF0ZSgqYXJncywgKiprd2FyZ3MpOgogICAgICAgICBpZiBub3QgYXJnczoKQEAgLTI1MSw5ICsyODAsMTMgQEAKICAgICAgICAga2VlcCB0aGUgdmFsdWVzIGFyb3VuZCBsb25nZXIgdGhhbiBuZWVkZWQuCiAKICAgICAgICAgIiIiCisgICAgICAgIGlmIHNlbGYuX3BlbmRpbmdfcmVtb3ZhbHM6CisgICAgICAgICAgICBzZWxmLl9jb21taXRfcmVtb3ZhbHMoKQogICAgICAgICByZXR1cm4gc2VsZi5kYXRhLnZhbHVlcygpCiAKICAgICBkZWYgdmFsdWVzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9wZW5kaW5nX3JlbW92YWxzOgorICAgICAgICAgICAgc2VsZi5fY29tbWl0X3JlbW92YWxzKCkKICAgICAgICAgTCA9IFtdCiAgICAgICAgIGZvciB3ciBpbiBzZWxmLmRhdGEudmFsdWVzKCk6CiAgICAgICAgICAgICBvID0gd3IoKQpkaWZmIC0tZ2l0IGEvTGliL3dlYmJyb3dzZXIucHkgYi9MaWIvd2ViYnJvd3Nlci5weQppbmRleCAyMzg5MTc5Li4xNWVlYjY2IDEwMDc1NQotLS0gYS9MaWIvd2ViYnJvd3Nlci5weQorKysgYi9MaWIvd2ViYnJvd3Nlci5weQpAQCAtMzE5LDExICszMTksMTAgQEAKIGNsYXNzIE9wZXJhKFVuaXhCcm93c2VyKToKICAgICAiTGF1bmNoZXIgY2xhc3MgZm9yIE9wZXJhIGJyb3dzZXIuIgogCi0gICAgcmFpc2Vfb3B0cyA9IFsiLW5vcmFpc2UiLCAiIl0KLSAgICByZW1vdGVfYXJncyA9IFsnLXJlbW90ZScsICdvcGVuVVJMKCVzJWFjdGlvbiknXQorICAgIHJlbW90ZV9hcmdzID0gWyclYWN0aW9uJywgJyVzJ10KICAgICByZW1vdGVfYWN0aW9uID0gIiIKLSAgICByZW1vdGVfYWN0aW9uX25ld3dpbiA9ICIsbmV3LXdpbmRvdyIKLSAgICByZW1vdGVfYWN0aW9uX25ld3RhYiA9ICIsbmV3LXBhZ2UiCisgICAgcmVtb3RlX2FjdGlvbl9uZXd3aW4gPSAiLS1uZXctd2luZG93IgorICAgIHJlbW90ZV9hY3Rpb25fbmV3dGFiID0gIiIKICAgICBiYWNrZ3JvdW5kID0gVHJ1ZQogCiAKZGlmZiAtLWdpdCBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkgYi9MaWIveG1sL2V0cmVlL0VsZW1lbnRUcmVlLnB5CmluZGV4IGNmNjQwMmYuLmRjYTY5MTAgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvZXRyZWUvRWxlbWVudFRyZWUucHkKKysrIGIvTGliL3htbC9ldHJlZS9FbGVtZW50VHJlZS5weQpAQCAtMTQ1MCw2ICsxNDUwLDggQEAKICAgICAgICAgc2VsZi5fdGFpbCA9IDEKICAgICAgICAgcmV0dXJuIHNlbGYuX2xhc3QKIAorX3NlbnRpbmVsID0gWydzZW50aW5lbCddCisKICMjCiAjIEVsZW1lbnQgc3RydWN0dXJlIGJ1aWxkZXIgZm9yIFhNTCBzb3VyY2UgZGF0YSwgYmFzZWQgb24gdGhlCiAjIDxiPmV4cGF0PC9iPiBwYXJzZXIuCkBAIC0xNDY1LDcgKzE0NjcsMTEgQEAKIAogY2xhc3MgWE1MUGFyc2VyKG9iamVjdCk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaHRtbD0wLCB0YXJnZXQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGh0bWw9X3NlbnRpbmVsLCB0YXJnZXQ9Tm9uZSwgZW5jb2Rpbmc9Tm9uZSk6CisgICAgICAgIGlmIGh0bWwgaXMgbm90IF9zZW50aW5lbDoKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm5weTNrKAorICAgICAgICAgICAgICAgICJUaGUgaHRtbCBhcmd1bWVudCBvZiBYTUxQYXJzZXIoKSBpcyBkZXByZWNhdGVkIiwKKyAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgpAQCAtMTYxNyw3ICsxNjIzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgcHViaWQgPSBwdWJpZFsxOi0xXQogICAgICAgICAgICAgICAgIGlmIGhhc2F0dHIoc2VsZi50YXJnZXQsICJkb2N0eXBlIik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFyZ2V0LmRvY3R5cGUobmFtZSwgcHViaWQsIHN5c3RlbVsxOi0xXSkKLSAgICAgICAgICAgICAgICBlbGlmIHNlbGYuZG9jdHlwZSBpcyBub3Qgc2VsZi5fWE1MUGFyc2VyX19kb2N0eXBlOgorICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5kb2N0eXBlICE9IHNlbGYuX1hNTFBhcnNlcl9fZG9jdHlwZToKICAgICAgICAgICAgICAgICAgICAgIyB3YXJuIGFib3V0IGRlcHJlY2F0ZWQgY2FsbAogICAgICAgICAgICAgICAgICAgICBzZWxmLl9YTUxQYXJzZXJfX2RvY3R5cGUobmFtZSwgcHViaWQsIHN5c3RlbVsxOi0xXSkKICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb2N0eXBlKG5hbWUsIHB1YmlkLCBzeXN0ZW1bMTotMV0pCmRpZmYgLS1naXQgYS9MaWIveG1sL3NheC9leHBhdHJlYWRlci5weSBiL0xpYi94bWwvc2F4L2V4cGF0cmVhZGVyLnB5CmluZGV4IDIxYzlkYjkuLmJhZTY2M2IgMTAwNjQ0Ci0tLSBhL0xpYi94bWwvc2F4L2V4cGF0cmVhZGVyLnB5CisrKyBiL0xpYi94bWwvc2F4L2V4cGF0cmVhZGVyLnB5CkBAIC0xMDUsOSArMTA1LDE2IEBACiAgICAgICAgIHNvdXJjZSA9IHNheHV0aWxzLnByZXBhcmVfaW5wdXRfc291cmNlKHNvdXJjZSkKIAogICAgICAgICBzZWxmLl9zb3VyY2UgPSBzb3VyY2UKLSAgICAgICAgc2VsZi5yZXNldCgpCi0gICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5zZXREb2N1bWVudExvY2F0b3IoRXhwYXRMb2NhdG9yKHNlbGYpKQotICAgICAgICB4bWxyZWFkZXIuSW5jcmVtZW50YWxQYXJzZXIucGFyc2Uoc2VsZiwgc291cmNlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLnJlc2V0KCkKKyAgICAgICAgICAgIHNlbGYuX2NvbnRfaGFuZGxlci5zZXREb2N1bWVudExvY2F0b3IoRXhwYXRMb2NhdG9yKHNlbGYpKQorICAgICAgICAgICAgeG1scmVhZGVyLkluY3JlbWVudGFsUGFyc2VyLnBhcnNlKHNlbGYsIHNvdXJjZSkKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgIyBicG8tMzAyNjQ6IENsb3NlIHRoZSBzb3VyY2Ugb24gZXJyb3IgdG8gbm90IGxlYWsgcmVzb3VyY2VzOgorICAgICAgICAgICAgIyB4bWwuc2F4LnBhcnNlKCkgZG9lc24ndCBnaXZlIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBwYXJzZXIKKyAgICAgICAgICAgICMgdG8gdGhlIGNhbGxlcgorICAgICAgICAgICAgc2VsZi5fY2xvc2Vfc291cmNlKCkKKyAgICAgICAgICAgIHJhaXNlCiAKICAgICBkZWYgcHJlcGFyZVBhcnNlcihzZWxmLCBzb3VyY2UpOgogICAgICAgICBpZiBzb3VyY2UuZ2V0U3lzdGVtSWQoKSBpcyBub3QgTm9uZToKQEAgLTIxNiw2ICsyMjMsMTcgQEAKICAgICAgICAgICAgICMgRklYTUU6IHdoZW4gdG8gaW52b2tlIGVycm9yKCk/CiAgICAgICAgICAgICBzZWxmLl9lcnJfaGFuZGxlci5mYXRhbEVycm9yKGV4YykKIAorICAgIGRlZiBfY2xvc2Vfc291cmNlKHNlbGYpOgorICAgICAgICBzb3VyY2UgPSBzZWxmLl9zb3VyY2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZmlsZSA9IHNvdXJjZS5nZXRDaGFyYWN0ZXJTdHJlYW0oKQorICAgICAgICAgICAgaWYgZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBmaWxlLmNsb3NlKCkKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIGZpbGUgPSBzb3VyY2UuZ2V0Qnl0ZVN0cmVhbSgpCisgICAgICAgICAgICBpZiBmaWxlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGZpbGUuY2xvc2UoKQorCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICBpZiAoc2VsZi5fZW50aXR5X3N0YWNrIG9yIHNlbGYuX3BhcnNlciBpcyBOb25lIG9yCiAgICAgICAgICAgICBpc2luc3RhbmNlKHNlbGYuX3BhcnNlciwgX0Nsb3NlZFBhcnNlcikpOgpAQCAtMjM1LDYgKzI1Myw3IEBACiAgICAgICAgICAgICAgICAgcGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyID0gc2VsZi5fcGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyCiAgICAgICAgICAgICAgICAgcGFyc2VyLkVycm9yTGluZU51bWJlciA9IHNlbGYuX3BhcnNlci5FcnJvckxpbmVOdW1iZXIKICAgICAgICAgICAgICAgICBzZWxmLl9wYXJzZXIgPSBwYXJzZXIKKyAgICAgICAgICAgIHNlbGYuX2Nsb3NlX3NvdXJjZSgpCiAKICAgICBkZWYgX3Jlc2V0X2NvbnRfaGFuZGxlcihzZWxmKToKICAgICAgICAgc2VsZi5fcGFyc2VyLlByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBcCmRpZmYgLS1naXQgYS9MaWIvemlwZmlsZS5weSBiL0xpYi96aXBmaWxlLnB5CmluZGV4IDFkMTA2NTAuLjNhYjY2Y2UgMTAwNjQ0Ci0tLSBhL0xpYi96aXBmaWxlLnB5CisrKyBiL0xpYi96aXBmaWxlLnB5CkBAIC03NzIsNyArNzcyLDYgQEAKICAgICAgICAgICAgICAgICAjIHNldCB0aGUgbW9kaWZpZWQgZmxhZyBzbyBjZW50cmFsIGRpcmVjdG9yeSBnZXRzIHdyaXR0ZW4KICAgICAgICAgICAgICAgICAjIGV2ZW4gaWYgbm8gZmlsZXMgYXJlIGFkZGVkIHRvIHRoZSBhcmNoaXZlCiAgICAgICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQotICAgICAgICAgICAgICAgIHNlbGYuX3N0YXJ0X2Rpc2sgPSBzZWxmLmZwLnRlbGwoKQogICAgICAgICAgICAgZWxpZiBrZXkgPT0gJ2EnOgogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgIyBTZWUgaWYgZmlsZSBpcyBhIHppcCBmaWxlCkBAIC03ODYsNyArNzg1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgIyBzZXQgdGhlIG1vZGlmaWVkIGZsYWcgc28gY2VudHJhbCBkaXJlY3RvcnkgZ2V0cyB3cml0dGVuCiAgICAgICAgICAgICAgICAgICAgICMgZXZlbiBpZiBubyBmaWxlcyBhcmUgYWRkZWQgdG8gdGhlIGFyY2hpdmUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGlkTW9kaWZ5ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zdGFydF9kaXNrID0gc2VsZi5mcC50ZWxsKCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdNb2RlIG11c3QgYmUgInIiLCAidyIgb3IgImEiJykKICAgICAgICAgZXhjZXB0OgpAQCAtODE3LDE4ICs4MTUsMTcgQEAKICAgICAgICAgb2Zmc2V0X2NkID0gZW5kcmVjW19FQ0RfT0ZGU0VUXSAgICAgICAgICMgb2Zmc2V0IG9mIGNlbnRyYWwgZGlyZWN0b3J5CiAgICAgICAgIHNlbGYuX2NvbW1lbnQgPSBlbmRyZWNbX0VDRF9DT01NRU5UXSAgICAjIGFyY2hpdmUgY29tbWVudAogCi0gICAgICAgICMgc2VsZi5fc3RhcnRfZGlzazogIFBvc2l0aW9uIG9mIHRoZSBzdGFydCBvZiBaSVAgYXJjaGl2ZQotICAgICAgICAjIEl0IGlzIHplcm8sIHVubGVzcyBaSVAgd2FzIGNvbmNhdGVuYXRlZCB0byBhbm90aGVyIGZpbGUKLSAgICAgICAgc2VsZi5fc3RhcnRfZGlzayA9IGVuZHJlY1tfRUNEX0xPQ0FUSU9OXSAtIHNpemVfY2QgLSBvZmZzZXRfY2QKKyAgICAgICAgIyAiY29uY2F0IiBpcyB6ZXJvLCB1bmxlc3MgemlwIHdhcyBjb25jYXRlbmF0ZWQgdG8gYW5vdGhlciBmaWxlCisgICAgICAgIGNvbmNhdCA9IGVuZHJlY1tfRUNEX0xPQ0FUSU9OXSAtIHNpemVfY2QgLSBvZmZzZXRfY2QKICAgICAgICAgaWYgZW5kcmVjW19FQ0RfU0lHTkFUVVJFXSA9PSBzdHJpbmdFbmRBcmNoaXZlNjQ6CiAgICAgICAgICAgICAjIElmIFppcDY0IGV4dGVuc2lvbiBzdHJ1Y3R1cmVzIGFyZSBwcmVzZW50LCBhY2NvdW50IGZvciB0aGVtCi0gICAgICAgICAgICBzZWxmLl9zdGFydF9kaXNrIC09IChzaXplRW5kQ2VudERpcjY0ICsgc2l6ZUVuZENlbnREaXI2NExvY2F0b3IpCisgICAgICAgICAgICBjb25jYXQgLT0gKHNpemVFbmRDZW50RGlyNjQgKyBzaXplRW5kQ2VudERpcjY0TG9jYXRvcikKIAogICAgICAgICBpZiBzZWxmLmRlYnVnID4gMjoKLSAgICAgICAgICAgIGluZmVycmVkID0gc2VsZi5fc3RhcnRfZGlzayArIG9mZnNldF9jZAotICAgICAgICAgICAgcHJpbnQgImdpdmVuLCBpbmZlcnJlZCwgb2Zmc2V0Iiwgb2Zmc2V0X2NkLCBpbmZlcnJlZCwgc2VsZi5fc3RhcnRfZGlzaworICAgICAgICAgICAgaW5mZXJyZWQgPSBjb25jYXQgKyBvZmZzZXRfY2QKKyAgICAgICAgICAgIHByaW50ICJnaXZlbiwgaW5mZXJyZWQsIG9mZnNldCIsIG9mZnNldF9jZCwgaW5mZXJyZWQsIGNvbmNhdAogICAgICAgICAjIHNlbGYuc3RhcnRfZGlyOiAgUG9zaXRpb24gb2Ygc3RhcnQgb2YgY2VudHJhbCBkaXJlY3RvcnkKLSAgICAgICAgc2VsZi5zdGFydF9kaXIgPSBvZmZzZXRfY2QgKyBzZWxmLl9zdGFydF9kaXNrCisgICAgICAgIHNlbGYuc3RhcnRfZGlyID0gb2Zmc2V0X2NkICsgY29uY2F0CiAgICAgICAgIGZwLnNlZWsoc2VsZi5zdGFydF9kaXIsIDApCiAgICAgICAgIGRhdGEgPSBmcC5yZWFkKHNpemVfY2QpCiAgICAgICAgIGZwID0gY1N0cmluZ0lPLlN0cmluZ0lPKGRhdGEpCkBAIC04NTgsNyArODU1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Pj4xMSwgKHQ+PjUpJjB4M0YsICh0JjB4MUYpICogMiApCiAKICAgICAgICAgICAgIHguX2RlY29kZUV4dHJhKCkKLSAgICAgICAgICAgIHguaGVhZGVyX29mZnNldCA9IHguaGVhZGVyX29mZnNldCArIHNlbGYuX3N0YXJ0X2Rpc2sKKyAgICAgICAgICAgIHguaGVhZGVyX29mZnNldCA9IHguaGVhZGVyX29mZnNldCArIGNvbmNhdAogICAgICAgICAgICAgeC5maWxlbmFtZSA9IHguX2RlY29kZUZpbGVuYW1lKCkKICAgICAgICAgICAgIHNlbGYuZmlsZWxpc3QuYXBwZW5kKHgpCiAgICAgICAgICAgICBzZWxmLk5hbWVUb0luZm9beC5maWxlbmFtZV0gPSB4CkBAIC0xMjAxLDcgKzExOTgsNyBAQAogICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignQ29tcHJlc3NlZCBzaXplIGxhcmdlciB0aGFuIHVuY29tcHJlc3NlZCBzaXplJykKICAgICAgICAgIyBTZWVrIGJhY2t3YXJkcyBhbmQgd3JpdGUgZmlsZSBoZWFkZXIgKHdoaWNoIHdpbGwgbm93IGluY2x1ZGUKICAgICAgICAgIyBjb3JyZWN0IENSQyBhbmQgZmlsZSBzaXplcykKLSAgICAgICAgcG9zaXRpb24gPSBzZWxmLmZwLnRlbGwoKSAjIFByZXNlcnZlIGN1cnJlbnQgcG9zaXRpb24gaW4gZmlsZQorICAgICAgICBwb3NpdGlvbiA9IHNlbGYuZnAudGVsbCgpICAgICAgICMgUHJlc2VydmUgY3VycmVudCBwb3NpdGlvbiBpbiBmaWxlCiAgICAgICAgIHNlbGYuZnAuc2Vlayh6aW5mby5oZWFkZXJfb2Zmc2V0LCAwKQogICAgICAgICBzZWxmLmZwLndyaXRlKHppbmZvLkZpbGVIZWFkZXIoemlwNjQpKQogICAgICAgICBzZWxmLmZwLnNlZWsocG9zaXRpb24sIDApCkBAIC0xMjg3LDEwICsxMjg0LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3NpemUgPSB6aW5mby5maWxlX3NpemUKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZXNzX3NpemUgPSB6aW5mby5jb21wcmVzc19zaXplCiAKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCA9IHppbmZvLmhlYWRlcl9vZmZzZXQgLSBzZWxmLl9zdGFydF9kaXNrCi0gICAgICAgICAgICAgICAgICAgIGlmIGhlYWRlcl9vZmZzZXQgPiBaSVA2NF9MSU1JVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmFwcGVuZChoZWFkZXJfb2Zmc2V0KQorICAgICAgICAgICAgICAgICAgICBpZiB6aW5mby5oZWFkZXJfb2Zmc2V0ID4gWklQNjRfTElNSVQ6CisgICAgICAgICAgICAgICAgICAgICAgICBleHRyYS5hcHBlbmQoemluZm8uaGVhZGVyX29mZnNldCkKICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcl9vZmZzZXQgPSAweGZmZmZmZmZmTAorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyX29mZnNldCA9IHppbmZvLmhlYWRlcl9vZmZzZXQKIAogICAgICAgICAgICAgICAgICAgICBleHRyYV9kYXRhID0gemluZm8uZXh0cmEKICAgICAgICAgICAgICAgICAgICAgaWYgZXh0cmE6CkBAIC0xMzM0LDcgKzEzMzIsNyBAQAogICAgICAgICAgICAgICAgICMgV3JpdGUgZW5kLW9mLXppcC1hcmNoaXZlIHJlY29yZAogICAgICAgICAgICAgICAgIGNlbnREaXJDb3VudCA9IGxlbihzZWxmLmZpbGVsaXN0KQogICAgICAgICAgICAgICAgIGNlbnREaXJTaXplID0gcG9zMiAtIHBvczEKLSAgICAgICAgICAgICAgICBjZW50RGlyT2Zmc2V0ID0gcG9zMSAtIHNlbGYuX3N0YXJ0X2Rpc2sKKyAgICAgICAgICAgICAgICBjZW50RGlyT2Zmc2V0ID0gcG9zMQogICAgICAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gTm9uZQogICAgICAgICAgICAgICAgIGlmIGNlbnREaXJDb3VudCA+IFpJUF9GSUxFQ09VTlRfTElNSVQ6CiAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVzX3ppcDY0ID0gIkZpbGVzIGNvdW50IgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L1JFQURNRS50eHQgYi9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dAppbmRleCA2ZjZiMjBhLi4zMmU3ZWRjIDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dAorKysgYi9NYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dApAQCAtMSw3ICsxLDE1IEBACiBCdWlsZGluZyBhIFB5dGhvbiBNYWMgT1MgWCBkaXN0cmlidXRpb24KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1UaGUgYGBidWlsZC1pbnN0YWxsLnB5YGAgc2NyaXB0IGNyZWF0ZXMgUHl0aG9uIGRpc3RyaWJ1dGlvbnMsIGluY2x1ZGluZworV0FSTklORworLS0tLS0tLQorCitUaGUgaW5zdHJ1Y3Rpb25zIGluIHRoaXMgUkVBRE1FIGFyZSBpbmNvbXBsZXRlIGFuZCBub3QgdXAtdG8tZGF0ZS4KK0luIHBhcnRpY3VsYXIsIHRoZXkgZG8gbm90IGV4cGxhaW4gaG93IHRvIGNyZWF0ZSBhIG1vZGVybiBmbGF0IGluc3RhbGxlcgorcGFja2FnZSBmcm9tIHRoZSBub3cgb2Jzb2xldGUgYnVuZGxlLWZvcm1hdCBpbnN0YWxsZXIgcGFja2FnZSBwcm9kdWNlZAorYnkgYGBidWlsZC1pbnN0YWxsZXIucHlgYC4KKworVGhlIGBgYnVpbGQtaW5zdGFsbGVyLnB5YGAgc2NyaXB0IGNyZWF0ZXMgUHl0aG9uIGRpc3RyaWJ1dGlvbnMsIGluY2x1ZGluZwogY2VydGFpbiB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMgYXMgbmVjZXNzYXJ5LiAgSXQgYnVpbGRzIGEgY29tcGxldGUgCiBmcmFtZXdvcmstYmFzZWQgUHl0aG9uIG91dC1vZi10cmVlLCBpbnN0YWxscyBpdCBpbiBhIGZ1bm55IHBsYWNlIHdpdGggCiAkREVTVFJPT1QsIG1hc3NhZ2VzIHRoYXQgaW5zdGFsbGF0aW9uIHRvIHJlbW92ZSAucHljIGZpbGVzIGFuZCBzdWNoLCBjcmVhdGVzIApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weSBiL01hYy9CdWlsZFNjcmlwdC9idWlsZC1pbnN0YWxsZXIucHkKaW5kZXggMDk1MWU1Zi4uYjk3ZDU1YiAxMDA3NTUKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L2J1aWxkLWluc3RhbGxlci5weQorKysgYi9NYWMvQnVpbGRTY3JpcHQvYnVpbGQtaW5zdGFsbGVyLnB5CkBAIC0xLDMwICsxLDM2IEBACiAjIS91c3IvYmluL2VudiBweXRob24KICIiIgotVGhpcyBzY3JpcHQgaXMgdXNlZCB0byBidWlsZCAib2ZmaWNpYWwiIHVuaXZlcnNhbCBpbnN0YWxsZXJzIG9uIE1hYyBPUyBYLgotSXQgcmVxdWlyZXMgYXQgbGVhc3QgTWFjIE9TIFggMTAuNSwgWGNvZGUgMywgYW5kIHRoZSAxMC40dSBTREsgZm9yCi0zMi1iaXQgYnVpbGRzLiAgNjQtYml0IG9yIGZvdXItd2F5IHVuaXZlcnNhbCBidWlsZHMgcmVxdWlyZSBhdCBsZWFzdAotT1MgWCAxMC41IGFuZCB0aGUgMTAuNSBTREsuCitUaGlzIHNjcmlwdCBpcyB1c2VkIHRvIGJ1aWxkICJvZmZpY2lhbCIgdW5pdmVyc2FsIGluc3RhbGxlcnMgb24gbWFjT1MuCisKK05FVyBmb3IgMy42LjU6CistIHN1cHBvcnQgSW50ZWwgNjQtYml0LW9ubHkgKCkgYW5kIDMyLWJpdC1vbmx5IGluc3RhbGxlciBidWlsZHMKKy0gYnVpbGQgYW5kIGxpbmsgd2l0aCBwcml2YXRlIFRjbC9UayA4LjYgZm9yIDEwLjkrIGJ1aWxkcworLSBkZXByZWNhdGUgdXNlIG9mIGV4cGxpY2l0IFNESyAoLS1zZGstcGF0aD0pIHNpbmNlIGFsbCBidXQgdGhlIG9sZGVzdAorICB2ZXJzaW9ucyBvZiBYY29kZSBzdXBwb3J0IGltcGxpY2l0IHNldHRpbmcgb2YgYW4gU0RLIHZpYSBlbnZpcm9ubWVudAorICB2YXJpYWJsZXMgKFNES1JPT1QgYW5kIGZyaWVuZHMsIHNlZSB0aGUgeGNydW4gbWFuIHBhZ2UgZm9yIG1vcmUgaW5mbykuCisgIFRoZSBTREsgc3R1ZmYgd2FzIHByaW1hcmlseSBuZWVkZWQgZm9yIGJ1aWxkaW5nIHVuaXZlcnNhbCBpbnN0YWxsZXJzCisgIGZvciAxMC40OyBzbyBhcyBvZiAzLjYuNSwgYnVpbGRpbmcgaW5zdGFsbGVycyBmb3IgMTAuNCBpcyBubyBsb25nZXIKKyAgc3VwcG9ydGVkIHdpdGggYnVpbGQtaW5zdGFsbGVyLgorLSB1c2UgZ2VuZXJpYyAiZ2NjIiBhcyBjb21waWxlciAoQ0MgZW52IHZhcikgcmF0aGVyIHRoYW4gImdjYy00LjIiCiAKIFBsZWFzZSBlbnN1cmUgdGhhdCB0aGlzIHNjcmlwdCBrZWVwcyB3b3JraW5nIHdpdGggUHl0aG9uIDIuNSwgdG8gYXZvaWQKLWJvb3RzdHJhcCBpc3N1ZXMgKC91c3IvYmluL3B5dGhvbiBpcyBQeXRob24gMi41IG9uIE9TWCAxMC41KS4gIFNwaGlueCwKLXdoaWNoIGlzIHVzZWQgdG8gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24sIGN1cnJlbnRseSByZXF1aXJlcyBhdCBsZWFzdAotUHl0aG9uIDIuNC4gIEhvd2V2ZXIsIGFzIG9mIFB5dGhvbiAzLjQuMSwgRG9jIGJ1aWxkcyByZXF1aXJlIGFuIGV4dGVybmFsCi1zcGhpbngtYnVpbGQgYW5kIHRoZSBjdXJyZW50IHZlcnNpb25zIG9mIFNwaGlueCBub3cgcmVxdWlyZSBhdCBsZWFzdAotUHl0aG9uIDIuNi4KK2Jvb3RzdHJhcCBpc3N1ZXMgKC91c3IvYmluL3B5dGhvbiBpcyBQeXRob24gMi41IG9uIE9TWCAxMC41KS4gIERvYyBidWlsZHMKK3VzZSBjdXJyZW50IHZlcnNpb25zIG9mIFNwaGlueCBhbmQgcmVxdWlyZSBhIHJlYXNvbmFibHkgY3VycmVudCBweXRob24zLgorU3BoaW54IGFuZCBkZXBlbmRlbmNpZXMgYXJlIGluc3RhbGxlZCBpbnRvIGEgdmVudiB1c2luZyB0aGUgcHl0aG9uMydzIHBpcAorc28gd2lsbCBmZXRjaCB0aGVtIGZyb20gUHlQSSBpZiBuZWNlc3NhcnkuICBTaW5jZSBweXRob24zIGlzIG5vdyB1c2VkIGZvcgorU3BoaW54LCBidWlsZC1pbnN0YWxsZXIucHkgc2hvdWxkIGFsc28gYmUgY29udmVydGVkIHRvIHVzZSBweXRob24zIQogCi1JbiBhZGRpdGlvbiB0byB3aGF0IGlzIHN1cHBsaWVkIHdpdGggT1MgWCAxMC41KyBhbmQgWGNvZGUgMyssIHRoZSBzY3JpcHQKLXJlcXVpcmVzIGFuIGluc3RhbGxlZCB2ZXJzaW9uIG9mIGhnIGFuZCBhIHRoaXJkLXBhcnR5IHZlcnNpb24gb2YKLVRjbC9UayA4LjQgKGZvciBPUyBYIDEwLjQgYW5kIDEwLjUgZGVwbG95bWVudCB0YXJnZXRzKSBvciBUY2wvVEsgOC41CitGb3IgMTAuOSBvciBncmVhdGVyIGRlcGxveW1lbnQgdGFyZ2V0cywgYnVpbGQtaW5zdGFsbGVyIGJ1aWxkcyBhbmQgbGlua3MKK3dpdGggaXRzIG93biBjb3B5IG9mIFRjbC9UayA4LjUgYW5kIHRoZSByZXN0IG9mIHRoaXMgcGFyYWdyYXBoIGRvZXMgbm90CithcHBseS4gIE90aGVyd2lzZSwgYnVpbGQtaW5zdGFsbGVyIHJlcXVpcmVzIGFuIGluc3RhbGxlZCB0aGlyZC1wYXJ0eSB2ZXJzaW9uCitvZiBUY2wvVGsgOC40IChmb3IgT1MgWCAxMC40IGFuZCAxMC41IGRlcGxveW1lbnQgdGFyZ2V0cykgb3IgVGNsL1RLIDguNQogKGZvciAxMC42IG9yIGxhdGVyKSBpbnN0YWxsZWQgaW4gL0xpYnJhcnkvRnJhbWV3b3Jrcy4gIFdoZW4gaW5zdGFsbGVkLAogdGhlIFB5dGhvbiBidWlsdCBieSB0aGlzIHNjcmlwdCB3aWxsIGF0dGVtcHQgdG8gZHluYW1pY2FsbHkgbGluayBmaXJzdCB0bwogVGNsIGFuZCBUayBmcmFtZXdvcmtzIGluIC9MaWJyYXJ5L0ZyYW1ld29ya3MgaWYgYXZhaWxhYmxlIG90aGVyd2lzZSBmYWxsCiBiYWNrIHRvIHRoZSBvbmVzIGluIC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmsuICBGb3IgdGhlIGJ1aWxkLCB3ZSByZWNvbW1lbmQKLWluc3RhbGxpbmcgdGhlIG1vc3QgcmVjZW50IEFjdGl2ZVRjbCA4LjQgb3IgOC41IHZlcnNpb24uCi0KLTMyLWJpdC1vbmx5IGluc3RhbGxlciBidWlsZHMgYXJlIHN0aWxsIHBvc3NpYmxlIG9uIE9TIFggMTAuNCB3aXRoIFhjb2RlIDIuNQotYW5kIHRoZSBpbnN0YWxsYXRpb24gb2YgYWRkaXRpb25hbCBjb21wb25lbnRzLCBzdWNoIGFzIGEgbmV3ZXIgUHl0aG9uCi0oMi41IGlzIG5lZWRlZCBmb3IgUHl0aG9uIHBhcnNlciB1cGRhdGVzKSwgaGcsIGFuZCBmb3IgdGhlIGRvY3VtZW50YXRpb24KLWJ1aWxkIGVpdGhlciBzdm4gKHByZS0zLjQuMSkgb3Igc3BoaW54LWJ1aWxkICgzLjQuMSBhbmQgbGF0ZXIpLgoraW5zdGFsbGluZyB0aGUgbW9zdCByZWNlbnQgQWN0aXZlVGNsIDguNSBvciA4LjQgdmVyc2lvbiwgZGVwZW5kaW5nCitvbiB0aGUgZGVwbG95bWVudCB0YXJnZXQuICBUaGUgYWN0dWFsIHZlcnNpb24gbGlua2VkIHRvIGRlcGVuZHMgb24gdGhlCitwYXRoIG9mIC9MaWJyYXJ5L0ZyYW1ld29ya3Mve1RjbCxUa30uZnJhbWV3b3JrL1ZlcnNpb25zL0N1cnJlbnQuCiAKIFVzYWdlOiBzZWUgVVNBR0UgdmFyaWFibGUgaW4gdGhlIHNjcmlwdC4KICIiIgpAQCAtMTAxLDYgKzEwNyw3IEBACiAKIEZXX1BSRUZJWCA9IFsiTGlicmFyeSIsICJGcmFtZXdvcmtzIiwgIlB5dGhvbi5mcmFtZXdvcmsiXQogRldfVkVSU0lPTl9QUkVGSVggPSAiLS11bmRlZmluZWQtLSIgIyBpbml0aWFsaXplZCBpbiBwYXJzZU9wdGlvbnMKK0ZXX1NTTF9ESVJFQ1RPUlkgPSAiLS11bmRlZmluZWQtLSIgIyBpbml0aWFsaXplZCBpbiBwYXJzZU9wdGlvbnMKIAogIyBUaGUgZGlyZWN0b3J5IHdlJ2xsIHVzZSB0byBjcmVhdGUgdGhlIGJ1aWxkICh3aWxsIGJlIGVyYXNlZCBhbmQgcmVjcmVhdGVkKQogV09SS0RJUiA9ICIvdG1wL19weSIKQEAgLTExMCwzMiArMTE3LDE5IEBACiBERVBTUkMgPSBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ3RoaXJkLXBhcnR5JykKIERFUFNSQyA9IG9zLnBhdGguZXhwYW5kdXNlcignfi9Vbml2ZXJzYWwvb3RoZXItc291cmNlcycpCiAKLSMgTG9jYXRpb24gb2YgdGhlIHByZWZlcnJlZCBTREsKLQotIyMjIFRoZXJlIGFyZSBzb21lIGlzc3VlcyB3aXRoIHRoZSBTREsgc2VsZWN0aW9uIGJlbG93IGhlcmUsCi0jIyMgVGhlIHJlc3VsdGluZyBiaW5hcnkgZG9lc24ndCB3b3JrIG9uIGFsbCBwbGF0Zm9ybXMgdGhhdAotIyMjIGl0IHNob3VsZC4gQWx3YXlzIGRlZmF1bHQgdG8gdGhlIDEwLjR1IFNESyB1bnRpbCB0aGF0Ci0jIyMgaXNzdWUgaXMgcmVzb2x2ZWQuCi0jIyMKLSMjaWYgaW50KG9zLnVuYW1lKClbMl0uc3BsaXQoJy4nKVswXSkgPT0gODoKLSMjICAgICMgRXhwbGljaXRseSB1c2UgdGhlIDEwLjR1ICh1bml2ZXJzYWwpIFNESyB3aGVuCi0jIyAgICAjIGJ1aWxkaW5nIG9uIDEwLjQsIHRoZSBzeXN0ZW0gaGVhZGVycyBhcmUgbm90Ci0jIyAgICAjIHVzZWFibGUgZm9yIGEgdW5pdmVyc2FsIGJ1aWxkCi0jIyAgICBTREtQQVRIID0gIi9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsiCi0jI2Vsc2U6Ci0jIyAgICBTREtQQVRIID0gIi8iCi0KLVNES1BBVEggPSAiL0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkayIKLQogdW5pdmVyc2FsX29wdHNfbWFwID0geyAnMzItYml0JzogKCdpMzg2JywgJ3BwYycsKSwKICAgICAgICAgICAgICAgICAgICAgICAgJzY0LWJpdCc6ICgneDg2XzY0JywgJ3BwYzY0JywpLAogICAgICAgICAgICAgICAgICAgICAgICAnaW50ZWwnOiAgKCdpMzg2JywgJ3g4Nl82NCcpLAorICAgICAgICAgICAgICAgICAgICAgICAnaW50ZWwtMzInOiAgKCdpMzg2JywpLAorICAgICAgICAgICAgICAgICAgICAgICAnaW50ZWwtNjQnOiAgKCd4ODZfNjQnLCksCiAgICAgICAgICAgICAgICAgICAgICAgICczLXdheSc6ICAoJ3BwYycsICdpMzg2JywgJ3g4Nl82NCcpLAogICAgICAgICAgICAgICAgICAgICAgICAnYWxsJzogICAgKCdpMzg2JywgJ3BwYycsICd4ODZfNjQnLCAncHBjNjQnLCkgfQogZGVmYXVsdF90YXJnZXRfbWFwID0gewogICAgICAgICAnNjQtYml0JzogJzEwLjUnLAogICAgICAgICAnMy13YXknOiAnMTAuNScsCiAgICAgICAgICdpbnRlbCc6ICcxMC41JywKKyAgICAgICAgJ2ludGVsLTMyJzogJzEwLjQnLAorICAgICAgICAnaW50ZWwtNjQnOiAnMTAuNScsCiAgICAgICAgICdhbGwnOiAnMTAuNScsCiB9CiAKQEAgLTE1MywyMyArMTQ3LDIzIEBACiAgICAgICAgICkpKSkKIAogIyAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIC0+IG1pbmltdW0gT1MgWCBsZXZlbAotREVQVEFSR0VUID0gJzEwLjMnCitERVBUQVJHRVQgPSAnMTAuNScKIAogZGVmIGdldERlcHRhcmdldFR1cGxlKCk6CiAgICAgcmV0dXJuIHR1cGxlKFtpbnQobikgZm9yIG4gaW4gREVQVEFSR0VULnNwbGl0KCcuJylbMDoyXV0pCiAKIGRlZiBnZXRUYXJnZXRDb21waWxlcnMoKToKICAgICB0YXJnZXRfY2NfbWFwID0gewotICAgICAgICAnMTAuMyc6ICgnZ2NjLTQuMCcsICdnKystNC4wJyksCiAgICAgICAgICcxMC40JzogKCdnY2MtNC4wJywgJ2crKy00LjAnKSwKLSAgICAgICAgJzEwLjUnOiAoJ2djYy00LjInLCAnZysrLTQuMicpLAotICAgICAgICAnMTAuNic6ICgnZ2NjLTQuMicsICdnKystNC4yJyksCisgICAgICAgICcxMC41JzogKCdnY2MnLCAnZysrJyksCisgICAgICAgICcxMC42JzogKCdnY2MnLCAnZysrJyksCiAgICAgfQotICAgIHJldHVybiB0YXJnZXRfY2NfbWFwLmdldChERVBUQVJHRVQsICgnY2xhbmcnLCAnY2xhbmcrKycpICkKKyAgICByZXR1cm4gdGFyZ2V0X2NjX21hcC5nZXQoREVQVEFSR0VULCAoJ2djYycsICdnKysnKSApCiAKIENDLCBDWFggPSBnZXRUYXJnZXRDb21waWxlcnMoKQogCi1QWVRIT05fMyA9IGdldFZlcnNpb25NYWpvck1pbm9yKCkgPj0gKDMsIDApCitQWVRIT05fMiA9IGdldFZlcnNpb25NYWpvck1pbm9yKClbMF0gPT0gMgorUFlUSE9OXzMgPSBnZXRWZXJzaW9uTWFqb3JNaW5vcigpWzBdID09IDMKIAogVVNBR0UgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiXAogICAgIFVzYWdlOiBidWlsZF9weXRob24gW29wdGlvbnNdCkBAIC0xNzksOSArMTczLDkgQEAKICAgICAtYiBESVIKICAgICAtLWJ1aWxkLWRpcj1ESVI6ICAgICBDcmVhdGUgYnVpbGQgaGVyZSAoZGVmYXVsdDogJShXT1JLRElSKXIpCiAgICAgLS10aGlyZC1wYXJ0eT1ESVI6ICAgU3RvcmUgdGhpcmQtcGFydHkgc291cmNlcyBoZXJlIChkZWZhdWx0OiAlKERFUFNSQylyKQotICAgIC0tc2RrLXBhdGg9RElSOiAgICAgIExvY2F0aW9uIG9mIHRoZSBTREsgKGRlZmF1bHQ6ICUoU0RLUEFUSClyKQorICAgIC0tc2RrLXBhdGg9RElSOiAgICAgIExvY2F0aW9uIG9mIHRoZSBTREsgKGRlcHJlY2F0ZWQsIHVzZSBTREtST09UIGVudiB2YXJpYWJsZSkKICAgICAtLXNyYy1kaXI9RElSOiAgICAgICBMb2NhdGlvbiBvZiB0aGUgUHl0aG9uIHNvdXJjZXMgKGRlZmF1bHQ6ICUoU1JDRElSKXIpCi0gICAgLS1kZXAtdGFyZ2V0PTEwLm4gICAgT1MgWCBkZXBsb3ltZW50IHRhcmdldCAoZGVmYXVsdDogJShERVBUQVJHRVQpcikKKyAgICAtLWRlcC10YXJnZXQ9MTAubiAgICBtYWNPUyBkZXBsb3ltZW50IHRhcmdldCAoZGVmYXVsdDogJShERVBUQVJHRVQpcikKICAgICAtLXVuaXZlcnNhbC1hcmNocz14ICB1bml2ZXJzYWwgYXJjaGl0ZWN0dXJlcyAob3B0aW9uczogJShVTklWRVJTQUxPUFRTKXIsIGRlZmF1bHQ6ICUoVU5JVkVSU0FMQVJDSFMpcikKICIiIiklIGdsb2JhbHMoKQogCkBAIC0xOTMsNiArMTg3LDExIEBACiAjICAgICAgICAgICAgICAgICAgICAgICAnL0xpYnJhcnkvRnJhbWV3b3Jrcy9Uay5mcmFtZXdvcmsvVmVyc2lvbnMvOC41L1RrJ10KIEVYUEVDVEVEX1NIQVJFRF9MSUJTID0ge30KIAorIyBBcmUgd2UgYnVpbGRpbmcgYW5kIGxpbmtpbmcgd2l0aCBvdXIgb3duIGNvcHkgb2YgVGNsL1RLPworIyAgIEZvciBub3csIGRvIHNvIGlmIGRlcGxveW1lbnQgdGFyZ2V0IGlzIDEwLjkrLgorZGVmIGludGVybmFsVGsoKToKKyAgICByZXR1cm4gZ2V0RGVwdGFyZ2V0VHVwbGUoKSA+PSAoMTAsIDkpCisKICMgTGlzdCBvZiBuYW1lcyBvZiB0aGlyZCBwYXJ0eSBzb2Z0d2FyZSBidWlsdCB3aXRoIHRoaXMgaW5zdGFsbGVyLgogIyBUaGUgbmFtZXMgd2lsbCBiZSBpbnNlcnRlZCBpbnRvIHRoZSBydGYgdmVyc2lvbiBvZiB0aGUgTGljZW5zZS4KIFRISVJEX1BBUlRZX0xJQlMgPSBbXQpAQCAtMjA2LDYxICsyMDUsMjcgQEAKIAogICAgIExUXzEwXzUgPSBib29sKGdldERlcHRhcmdldFR1cGxlKCkgPCAoMTAsIDUpKQogCi0gICAgaWYgbm90ICgxMCwgNSkgPCBnZXREZXB0YXJnZXRUdXBsZSgpIDwgKDEwLCAxMCk6Ci0gICAgICAgICMgVGhlIE9wZW5TU0wgbGlicyBzaGlwcGVkIHdpdGggT1MgWCAxMC41IGFuZCBlYXJsaWVyIGFyZQotICAgICAgICAjIGhvcGVsZXNzbHkgb3V0LW9mLWRhdGUgYW5kIGRvIG5vdCBpbmNsdWRlIEFwcGxlJ3MgdGllLWluIHRvCi0gICAgICAgICMgdGhlIHJvb3QgY2VydGlmaWNhdGVzIGluIHRoZSB1c2VyIGFuZCBzeXN0ZW0ga2V5Y2hhaW5zIHZpYSBURUEKLSAgICAgICAgIyB0aGF0IHdhcyBpbnRyb2R1Y2VkIGluIE9TIFggMTAuNi4gIE5vdGUgdGhhdCB0aGlzIGFwcGxpZXMgdG8KLSAgICAgICAgIyBwcm9ncmFtcyBidWlsdCBhbmQgbGlua2VkIHdpdGggYSAxMC41IFNESyBldmVuIHdoZW4gcnVuIG9uCi0gICAgICAgICMgbmV3ZXIgdmVyc2lvbnMgb2YgT1MgWC4KLSAgICAgICAgIwotICAgICAgICAjIERlYWxpbmcgd2l0aCBDQXMgaXMgbWVzc3kuICBGb3Igbm93LCBqdXN0IHN1cHBseSBhCi0gICAgICAgICMgbG9jYWwgbGlic3NsIGFuZCBsaWJjcnlwdG8gZm9yIHRoZSBvbGRlciBpbnN0YWxsZXIgdmFyaWFudHMKLSAgICAgICAgIyAoZS5nLiB0aGUgcHl0aG9uLm9yZyAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIpIHRoYXQgdXNlIHRoZQotICAgICAgICAjIHNhbWUgZGVmYXVsdCBzc2wgY2VydGZpbGUgbG9jYXRpb24gYXMgdGhlIHN5c3RlbSBsaWJzIGRvOgotICAgICAgICAjICAgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wvY2VydC5wZW0KLSAgICAgICAgIyBUaGVuIGF0IGxlYXN0IFRMUyBjb25uZWN0aW9ucyBjYW4gYmUgbmVnb3RpYXRlZCB3aXRoIHNpdGVzIHRoYXQKLSAgICAgICAgIyB1c2Ugc2hhLTI1NiBjZXJ0cyBsaWtlIHB5dGhvbi5vcmcsIGFzc3VtaW5nIHRoZSBwcm9wZXIgQ0EgY2VydHMKLSAgICAgICAgIyBoYXZlIGJlZW4gc3VwcGxpZWQuICBUaGUgZGVmYXVsdCBDQSBjZXJ0IG1hbmFnZW1lbnQgaXNzdWVzIGZvcgotICAgICAgICAjIDEwLjUgYW5kIGVhcmxpZXIgYnVpbGRzIGFyZSB0aGUgc2FtZSBhcyBiZWZvcmUsIG90aGVyIHRoYW4gaXQgaXMKLSAgICAgICAgIyBub3cgbW9yZSBvYnZpb3VzIHdpdGggY2VydCBjaGVja2luZyBlbmFibGVkIGJ5IGRlZmF1bHQgaW4gdGhlCi0gICAgICAgICMgc3RhbmRhcmQgbGlicmFyeS4KLSAgICAgICAgIwotICAgICAgICAjIEZvciBidWlsZHMgd2l0aCAxMC42IHRocm91Z2ggMTAuOSBTREtzLAotICAgICAgICAjIGNvbnRpbnVlIHRvIHVzZSB0aGUgZGVwcmVjYXRlZCBidXQKLSAgICAgICAgIyBsZXNzIG91dC1vZi1kYXRlIEFwcGxlIDAuOS44IGxpYnMgZm9yIG5vdy4gIFdoaWxlIHRoZXkgYXJlIGxlc3MKLSAgICAgICAgIyBzZWN1cmUgdGhhbiB1c2luZyBhbiB1cC10by1kYXRlIDEuMC4xIHZlcnNpb24sIGRvaW5nIHNvCi0gICAgICAgICMgYXZvaWRzIHRoZSBiaWcgcHJvYmxlbXMgb2YgZm9yY2luZyB1c2VycyB0byBoYXZlIHRvIG1hbmFnZQotICAgICAgICAjIGRlZmF1bHQgQ0FzIHRoZW1zZWx2ZXMsIHRoYW5rcyB0byB0aGUgQXBwbGUgbGlicyB1c2luZyBwcml2YXRlIFRFQQotICAgICAgICAjIEFQSXMgZm9yIGNlcnQgdmFsaWRhdGlvbiBmcm9tIGtleWNoYWlucyBpZiB2YWxpZGF0aW9uIHVzaW5nIHRoZQotICAgICAgICAjIHN0YW5kYXJkIE9wZW5TU0wgbG9jYXRpb25zICgvU3lzdGVtL0xpYnJhcnkvT3BlblNTTCwgbm9ybWFsbHkgZW1wdHkpCi0gICAgICAgICMgZmFpbHMuCi0gICAgICAgICMKLSAgICAgICAgIyBTaW5jZSBBcHBsZSByZW1vdmVkIHRoZSBoZWFkZXIgZmlsZXMgZm9yIHRoZSBkZXByZWNhdGVkIHN5c3RlbQotICAgICAgICAjIE9wZW5TU0wgYXMgb2YgdGhlIFhjb2RlIDcgcmVsZWFzZSAoZm9yIE9TIFggMTAuMTArKSwgd2UgZG8gbm90Ci0gICAgICAgICMgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gYnVpbGQgb3VyIG93biBjb3B5IGhlcmUsIHRvby4KKyAgICAjIFNpbmNlIEFwcGxlIHJlbW92ZWQgdGhlIGhlYWRlciBmaWxlcyBmb3IgdGhlIGRlcHJlY2F0ZWQgc3lzdGVtCisgICAgIyBPcGVuU1NMIGFzIG9mIHRoZSBYY29kZSA3IHJlbGVhc2UgKGZvciBPUyBYIDEwLjEwKyksIHdlIGRvIG5vdAorICAgICMgaGF2ZSBtdWNoIGNob2ljZSBidXQgdG8gYnVpbGQgb3VyIG93biBjb3B5IGhlcmUsIHRvby4KIAotICAgICAgICByZXN1bHQuZXh0ZW5kKFsKKyAgICByZXN1bHQuZXh0ZW5kKFsKICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICBuYW1lPSJPcGVuU1NMIDEuMC4yaiIsCi0gICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wtMS4wLjJqLnRhci5neiIsCi0gICAgICAgICAgICAgIGNoZWNrc3VtPSc5NjMyMjEzOGYwYjY5ZTYxYjcyMTJiYzUzZDVlOTEyYicsCi0gICAgICAgICAgICAgIHBhdGNoZXM9WwotICAgICAgICAgICAgICAgICAgIm9wZW5zc2xfc2RrX21ha2VkZXBlbmQucGF0Y2giLAotICAgICAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgIG5hbWU9Ik9wZW5TU0wgMS4wLjJwIiwKKyAgICAgICAgICAgICAgdXJsPSJodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0xLjAuMnAudGFyLmd6IiwKKyAgICAgICAgICAgICAgY2hlY2tzdW09J2FjNWViMzBiZjU3OThhYTE0YjFhZTZkMGU3ZGE1OGRmJywKICAgICAgICAgICAgICAgYnVpbGRyZWNpcGU9YnVpbGRfdW5pdmVyc2FsX29wZW5zc2wsCiAgICAgICAgICAgICAgIGNvbmZpZ3VyZT1Ob25lLAogICAgICAgICAgICAgICBpbnN0YWxsPU5vbmUsCiAgICAgICAgICAgKSwKLSAgICAgICAgXSkKKyAgICBdKQogCi0jICAgRGlzYWJsZSBmb3Igbm93Ci0gICAgaWYgRmFsc2U6ICAgIyBpZiBnZXREZXB0YXJnZXRUdXBsZSgpID4gKDEwLCA1KToKKyAgICBpZiBpbnRlcm5hbFRrKCk6CiAgICAgICAgIHJlc3VsdC5leHRlbmQoWwogICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9IlRjbCA4LjUuMTUiLAotICAgICAgICAgICAgICB1cmw9ImZ0cDovL2Z0cC50Y2wudGsvcHViL3RjbC8vdGNsOF81L3RjbDguNS4xNS1zcmMudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09J2YzZGYxNjJmOTJjNjliMjU0MDc5YzRkMGFmN2E2OTBmJywKKyAgICAgICAgICAgICAgbmFtZT0iVGNsIDguNi44IiwKKyAgICAgICAgICAgICAgdXJsPSJmdHA6Ly9mdHAudGNsLnRrL3B1Yi90Y2wvL3RjbDhfNi90Y2w4LjYuOC1zcmMudGFyLmd6IiwKKyAgICAgICAgICAgICAgY2hlY2tzdW09JzgxNjU2ZDMzNjdhZjAzMmUwYWU2MTU3ZWZmMTM0Zjg5JywKICAgICAgICAgICAgICAgYnVpbGREaXI9InVuaXgiLAogICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKICAgICAgICAgICAgICAgICAgICAgJy0tZW5hYmxlLXNoYXJlZCcsCkBAIC0yNzAsMTUgKzIzNSwxNSBAQAogICAgICAgICAgICAgICB1c2VMREZsYWdzPUZhbHNlLAogICAgICAgICAgICAgICBpbnN0YWxsPSdtYWtlIFRDTF9MSUJSQVJZPSUoVENMX0xJQlJBUlkpcyAmJiBtYWtlIGluc3RhbGwgVENMX0xJQlJBUlk9JShUQ0xfTElCUkFSWSlzIERFU1RESVI9JShERVNURElSKXMnJXsKICAgICAgICAgICAgICAgICAgICJERVNURElSIjogc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycpKSwKLSAgICAgICAgICAgICAgICAgICJUQ0xfTElCUkFSWSI6IHNoZWxsUXVvdGUoJy9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8lcy9saWIvdGNsOC41JyUoZ2V0VmVyc2lvbigpKSksCisgICAgICAgICAgICAgICAgICAiVENMX0xJQlJBUlkiOiBzaGVsbFF1b3RlKCcvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvbGliL3RjbDguNiclKGdldFZlcnNpb24oKSkpLAogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgKSwKICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICBuYW1lPSJUayA4LjUuMTUiLAotICAgICAgICAgICAgICB1cmw9ImZ0cDovL2Z0cC50Y2wudGsvcHViL3RjbC8vdGNsOF81L3RrOC41LjE1LXNyYy50YXIuZ3oiLAotICAgICAgICAgICAgICBjaGVja3N1bT0nNTViOGUzM2Y5MDMyMTBhNGUxYzhiY2UwZjgyMDY1N2YnLAorICAgICAgICAgICAgICBuYW1lPSJUayA4LjYuOCIsCisgICAgICAgICAgICAgIHVybD0iZnRwOi8vZnRwLnRjbC50ay9wdWIvdGNsLy90Y2w4XzYvdGs4LjYuOC1zcmMudGFyLmd6IiwKKyAgICAgICAgICAgICAgY2hlY2tzdW09JzVlMGZhZWNiYTQ1OGVlMTM4NjA3OGZiMjI4ZDAwOGJhJywKICAgICAgICAgICAgICAgcGF0Y2hlcz1bCi0gICAgICAgICAgICAgICAgICAiaXNzdWUxOTM3M190a184XzVfMTVfc291cmNlLnBhdGNoIiwKKyAgICAgICAgICAgICAgICAgICJ0azg2OF9vbl8xMF84XzEwXzkucGF0Y2giLAogICAgICAgICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICAgIGJ1aWxkRGlyPSJ1bml4IiwKICAgICAgICAgICAgICAgY29uZmlndXJlX3ByZT1bCkBAIC0yOTAsOCArMjU1LDggQEAKICAgICAgICAgICAgICAgdXNlTERGbGFncz1GYWxzZSwKICAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBUQ0xfTElCUkFSWT0lKFRDTF9MSUJSQVJZKXMgVEtfTElCUkFSWT0lKFRLX0xJQlJBUlkpcyAmJiBtYWtlIGluc3RhbGwgVENMX0xJQlJBUlk9JShUQ0xfTElCUkFSWSlzIFRLX0xJQlJBUlk9JShUS19MSUJSQVJZKXMgREVTVERJUj0lKERFU1RESVIpcyclewogICAgICAgICAgICAgICAgICAgIkRFU1RESVIiOiBzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykpLAotICAgICAgICAgICAgICAgICAgIlRDTF9MSUJSQVJZIjogc2hlbGxRdW90ZSgnL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLyVzL2xpYi90Y2w4LjUnJShnZXRWZXJzaW9uKCkpKSwKLSAgICAgICAgICAgICAgICAgICJUS19MSUJSQVJZIjogc2hlbGxRdW90ZSgnL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLyVzL2xpYi90azguNSclKGdldFZlcnNpb24oKSkpLAorICAgICAgICAgICAgICAgICAgIlRDTF9MSUJSQVJZIjogc2hlbGxRdW90ZSgnL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLyVzL2xpYi90Y2w4LjYnJShnZXRWZXJzaW9uKCkpKSwKKyAgICAgICAgICAgICAgICAgICJUS19MSUJSQVJZIjogc2hlbGxRdW90ZSgnL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrL1ZlcnNpb25zLyVzL2xpYi90azguNiclKGdldFZlcnNpb24oKSkpLAogICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICApLAogICAgICAgICBdKQpAQCAtMjk5LDkgKzI2NCw5IEBACiAgICAgaWYgUFlUSE9OXzM6CiAgICAgICAgIHJlc3VsdC5leHRlbmQoWwogICAgICAgICAgIGRpY3QoCi0gICAgICAgICAgICAgIG5hbWU9IlhaIDUuMC41IiwKLSAgICAgICAgICAgICAgdXJsPSJodHRwOi8vdHVrYWFuaS5vcmcveHoveHotNS4wLjUudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09JzE5ZDkyNGUwNjZiNmZmZjBiYzlkMTk4MWI0ZTUzMTk2JywKKyAgICAgICAgICAgICAgbmFtZT0iWFogNS4yLjMiLAorICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly90dWthYW5pLm9yZy94ei94ei01LjIuMy50YXIuZ3oiLAorICAgICAgICAgICAgICBjaGVja3N1bT0nZWY2ODY3NGZiNDdhOGI4ZTc0MWIzNGU0MjlkODZlOWQnLAogICAgICAgICAgICAgICBjb25maWd1cmVfcHJlPVsKICAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nJywKICAgICAgICAgICAgICAgXQpAQCAtMzQ0LDEyICszMDksMTQgQEAKICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgKSwKICAgICAgICAgICBkaWN0KAotICAgICAgICAgICAgICBuYW1lPSJTUUxpdGUgMy44LjMuMSIsCi0gICAgICAgICAgICAgIHVybD0iaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMTQvc3FsaXRlLWF1dG9jb25mLTMwODAzMDEudGFyLmd6IiwKLSAgICAgICAgICAgICAgY2hlY2tzdW09JzUwOWZmOThkOGRjOTcyOWI2MThiN2U5NjYxMjA3OWM2JywKKyAgICAgICAgICAgICAgbmFtZT0iU1FMaXRlIDMuMjIuMCIsCisgICAgICAgICAgICAgIHVybD0iaHR0cHM6Ly93d3cuc3FsaXRlLm9yZy8yMDE4L3NxbGl0ZS1hdXRvY29uZi0zMjIwMDAwLnRhci5neiIsCisgICAgICAgICAgICAgIGNoZWNrc3VtPSc5NmI1NjQ4ZDU0MmU4YWZhNmFiN2ZmYjhkYjhkZGMzZCcsCiAgICAgICAgICAgICAgIGV4dHJhX2NmbGFncz0oJy1PcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9GVFM1ICcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLURTUUxJVEVfRU5BQkxFX0ZUUzQgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICctRFNRTElURV9FTkFCTEVfRlRTM19QQVJFTlRIRVNJUyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9KU09OMSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX0VOQUJMRV9SVFJFRSAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy1EU1FMSVRFX1RDTD0wICcKICAgICAgICAgICAgICAgICAgJyVzJyAlICgnJywnLURTUUxJVEVfV0lUSE9VVF9aT05FTUFMTE9DICcpW0xUXzEwXzVdKSwKQEAgLTM3MCwxMSArMzM3LDEwIEBACiAgICAgICAgICAgICAgIHVybD0iaHR0cDovL2J6aXAub3JnLzEuMC42L2J6aXAyLTEuMC42LnRhci5neiIsCiAgICAgICAgICAgICAgIGNoZWNrc3VtPScwMGI1MTZmNDcwNGQ0YTdjYjUwYTFkOTdlNmU4ZTE1YicsCiAgICAgICAgICAgICAgIGNvbmZpZ3VyZT1Ob25lLAotICAgICAgICAgICAgICBpbnN0YWxsPSdtYWtlIGluc3RhbGwgQ0M9JXMgQ1hYPSVzLCBQUkVGSVg9JXMvdXNyL2xvY2FsLyBDRkxBR1M9Ii1hcmNoICVzIC1pc3lzcm9vdCAlcyInJSgKKyAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIENYWD0lcywgUFJFRklYPSVzL3Vzci9sb2NhbC8gQ0ZMQUdTPSItYXJjaCAlcyInJSgKICAgICAgICAgICAgICAgICAgIENDLCBDWFgsCiAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykpLAogICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oQVJDSExJU1QpLAotICAgICAgICAgICAgICAgICAgU0RLUEFUSCwKICAgICAgICAgICAgICAgKSwKICAgICAgICAgICApLAogICAgICAgICAgIGRpY3QoCkBAIC0zODIsMTEgKzM0OCwxMCBAQAogICAgICAgICAgICAgICB1cmw9Imh0dHA6Ly93d3cuZ3ppcC5vcmcvemxpYi96bGliLTEuMi4zLnRhci5neiIsCiAgICAgICAgICAgICAgIGNoZWNrc3VtPSdkZWJjNjI3NTg3MTZhMTY5ZGY5ZjYyZTZhYjJiYzYzNCcsCiAgICAgICAgICAgICAgIGNvbmZpZ3VyZT1Ob25lLAotICAgICAgICAgICAgICBpbnN0YWxsPSdtYWtlIGluc3RhbGwgQ0M9JXMgQ1hYPSVzLCBwcmVmaXg9JXMvdXNyL2xvY2FsLyBDRkxBR1M9Ii1hcmNoICVzIC1pc3lzcm9vdCAlcyInJSgKKyAgICAgICAgICAgICAgaW5zdGFsbD0nbWFrZSBpbnN0YWxsIENDPSVzIENYWD0lcywgcHJlZml4PSVzL3Vzci9sb2NhbC8gQ0ZMQUdTPSItYXJjaCAlcyInJSgKICAgICAgICAgICAgICAgICAgIENDLCBDWFgsCiAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAnbGlicmFyaWVzJykpLAogICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oQVJDSExJU1QpLAotICAgICAgICAgICAgICAgICAgU0RLUEFUSCwKICAgICAgICAgICAgICAgKSwKICAgICAgICAgICApLAogICAgICAgICAgIGRpY3QoCkBAIC00MzMsOCArMzk4LDcgQEAKICAgICAgICAgICAgIHNvdXJjZT0iL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrIiwKICAgICAgICAgICAgIHJlYWRtZT0iIiJcCiAgICAgICAgICAgICAgICAgVGhpcyBwYWNrYWdlIGluc3RhbGxzIFB5dGhvbi5mcmFtZXdvcmssIHRoYXQgaXMgdGhlIHB5dGhvbgotICAgICAgICAgICAgICAgIGludGVycHJldGVyIGFuZCB0aGUgc3RhbmRhcmQgbGlicmFyeS4gVGhpcyBhbHNvIGluY2x1ZGVzIFB5dGhvbgotICAgICAgICAgICAgICAgIHdyYXBwZXJzIGZvciBsb3RzIG9mIE1hYyBPUyBYIEFQSSdzLgorICAgICAgICAgICAgICAgIGludGVycHJldGVyIGFuZCB0aGUgc3RhbmRhcmQgbGlicmFyeS4KICAgICAgICAgICAgICIiIiwKICAgICAgICAgICAgIHBvc3RmbGlnaHQ9InNjcmlwdHMvcG9zdGZsaWdodC5mcmFtZXdvcmsiLAogICAgICAgICAgICAgc2VsZWN0ZWQ9J3NlbGVjdGVkJywKQEAgLTUxMSwyNCArNDc1LDYgQEAKICAgICAgICAgKSwKICAgICBdCiAKLSAgICBpZiBnZXREZXB0YXJnZXRUdXBsZSgpIDwgKDEwLCA0KSBhbmQgbm90IFBZVEhPTl8zOgotICAgICAgICByZXN1bHQuYXBwZW5kKAotICAgICAgICAgICAgZGljdCgKLSAgICAgICAgICAgICAgICBuYW1lPSJQeXRob25TeXN0ZW1GaXhlcyIsCi0gICAgICAgICAgICAgICAgbG9uZ19uYW1lPSJGaXggc3lzdGVtIFB5dGhvbiIsCi0gICAgICAgICAgICAgICAgcmVhZG1lPSIiIlwKLSAgICAgICAgICAgICAgICAgICAgVGhpcyBwYWNrYWdlIHVwZGF0ZXMgdGhlIHN5c3RlbSBweXRob24gaW5zdGFsbGF0aW9uIG9uCi0gICAgICAgICAgICAgICAgICAgIE1hYyBPUyBYIDEwLjMgdG8gZW5zdXJlIHRoYXQgeW91IGNhbiBidWlsZCBuZXcgcHl0aG9uIGV4dGVuc2lvbnMKLSAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhhdCBjb3B5IG9mIHB5dGhvbiBhZnRlciBpbnN0YWxsaW5nIHRoaXMgdmVyc2lvbi4KLSAgICAgICAgICAgICAgICAgICAgIiIiLAotICAgICAgICAgICAgICAgIHBvc3RmbGlnaHQ9Ii4uL1Rvb2xzL2ZpeGFwcGxlcHl0aG9uMjMucHkiLAotICAgICAgICAgICAgICAgIHRvcGRpcj0iL0xpYnJhcnkvRnJhbWV3b3Jrcy9QeXRob24uZnJhbWV3b3JrIiwKLSAgICAgICAgICAgICAgICBzb3VyY2U9Ii9lbXB0eS1kaXIiLAotICAgICAgICAgICAgICAgIHJlcXVpcmVkPUZhbHNlLAotICAgICAgICAgICAgICAgIHNlbGVjdGVkPXVuc2VsZWN0ZWRfZm9yX3B5dGhvbjMsCi0gICAgICAgICAgICApCi0gICAgICAgICkKLQogICAgIHJldHVybiByZXN1bHQKIAogZGVmIGZhdGFsKG1zZyk6CkBAIC01NzcsNyArNTIzLDcgQEAKICAgICAiIiIKICAgICB0cnk6CiAgICAgICAgIGYgPSBvcGVuKGNvbmZpZ2ZpbGUsICJyIikKLSAgICBleGNlcHQ6CisgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgIGZhdGFsKCJGcmFtZXdvcmsgY29uZmlndXJhdGlvbiBmaWxlIG5vdCBmb3VuZDogJXMiICUgY29uZmlnZmlsZSkKIAogICAgIGZvciBsIGluIGY6CkBAIC01OTMsNTUgKzUzOSw1NCBAQAogICAgIENoZWNrIHRoYXQgd2UncmUgcnVubmluZyBvbiBhIHN1cHBvcnRlZCBzeXN0ZW0uCiAgICAgIiIiCiAKLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzA6Ml0gPCAoMiwgNCk6Ci0gICAgICAgIGZhdGFsKCJUaGlzIHNjcmlwdCBtdXN0IGJlIHJ1biB3aXRoIFB5dGhvbiAyLjQgb3IgbGF0ZXIiKQorICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMDoyXSA8ICgyLCA1KToKKyAgICAgICAgZmF0YWwoIlRoaXMgc2NyaXB0IG11c3QgYmUgcnVuIHdpdGggUHl0aG9uIDIuNSAob3IgbGF0ZXIpIikKIAogICAgIGlmIHBsYXRmb3JtLnN5c3RlbSgpICE9ICdEYXJ3aW4nOgotICAgICAgICBmYXRhbCgiVGhpcyBzY3JpcHQgc2hvdWxkIGJlIHJ1biBvbiBhIE1hYyBPUyBYIDEwLjQgKG9yIGxhdGVyKSBzeXN0ZW0iKQorICAgICAgICBmYXRhbCgiVGhpcyBzY3JpcHQgc2hvdWxkIGJlIHJ1biBvbiBhIG1hY09TIDEwLjUgKG9yIGxhdGVyKSBzeXN0ZW0iKQogCiAgICAgaWYgaW50KHBsYXRmb3JtLnJlbGVhc2UoKS5zcGxpdCgnLicpWzBdKSA8IDg6Ci0gICAgICAgIGZhdGFsKCJUaGlzIHNjcmlwdCBzaG91bGQgYmUgcnVuIG9uIGEgTWFjIE9TIFggMTAuNCAob3IgbGF0ZXIpIHN5c3RlbSIpCi0KLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoU0RLUEFUSCk6Ci0gICAgICAgIGZhdGFsKCJQbGVhc2UgaW5zdGFsbCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgWGNvZGUgYW5kIHRoZSAlcyBTREsiJSgKLSAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUoU0RLUEFUSFs6LTRdKSkpCisgICAgICAgIGZhdGFsKCJUaGlzIHNjcmlwdCBzaG91bGQgYmUgcnVuIG9uIGEgbWFjT1MgMTAuNSAob3IgbGF0ZXIpIHN5c3RlbSIpCiAKICAgICAjIEJlY2F1c2Ugd2Ugb25seSBzdXBwb3J0IGR5bmFtaWMgbG9hZCBvZiBvbmx5IG9uZSBtYWpvci9taW5vciB2ZXJzaW9uIG9mCisgICAgIyBUY2wvVGssIGlmIHdlIGFyZSBub3QgdXNpbmcgYnVpbGRpbmcgYW5kIHVzaW5nIG91ciBvd24gcHJpdmF0ZSBjb3B5IG9mCiAgICAgIyBUY2wvVGssIGVuc3VyZToKLSAgICAjIDEuIHRoZXJlIGFyZSBubyB1c2VyLWluc3RhbGxlZCBmcmFtZXdvcmtzIG9mIFRjbC9UayB3aXRoIHZlcnNpb24KLSAgICAjICAgICAgIGhpZ2hlciB0aGFuIHRoZSBBcHBsZS1zdXBwbGllZCBzeXN0ZW0gdmVyc2lvbiBpbgotICAgICMgICAgICAgU0RLUk9PVC9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzCi0gICAgIyAyLiB0aGVyZSBpcyBhIHVzZXItaW5zdGFsbGVkIGZyYW1ld29yayAodXN1YWxseSBBY3RpdmVUY2wpIGluIChvciBsaW5rZWQKLSAgICAjICAgICAgIGluKSBTREtST09UL0xpYnJhcnkvRnJhbWV3b3JrcyB3aXRoIHRoZSBzYW1lIHZlcnNpb24gYXMgdGhlIHN5c3RlbQotICAgICMgICAgICAgdmVyc2lvbi4gVGhpcyBhbGxvd3MgdXNlcnMgdG8gY2hvb3NlIHRvIGluc3RhbGwgYSBuZXdlciBwYXRjaCBsZXZlbC4KKyAgICAjIDEuIHRoZXJlIGlzIGEgdXNlci1pbnN0YWxsZWQgZnJhbWV3b3JrICh1c3VhbGx5IEFjdGl2ZVRjbCkgaW4gKG9yIGxpbmtlZAorICAgICMgICAgICAgaW4pIFNES1JPT1QvTGlicmFyeS9GcmFtZXdvcmtzLiAgQXMgb2YgUHl0aG9uIDMuNi41LCB3ZSBubyBsb25nZXIKKyAgICAjICAgICAgIGVuZm9yY2UgdGhhdCB0aGUgdmVyc2lvbiBvZiB0aGUgdXNlci1pbnN0YWxsZWQgZnJhbWV3b3JrIGFsc28KKyAgICAjICAgICAgIGV4aXN0cyBpbiB0aGUgc3lzdGVtLXN1cHBsaWVkIFRjbC9UayBmcmFtZXdvcmtzLiAgVGltZSB0byBzdXBwb3J0CisgICAgIyAgICAgICBUY2wvVGsgOC42IGV2ZW4gaWYgQXBwbGUgZG9lcyBub3QuCisgICAgaWYgbm90IGludGVybmFsVGsoKToKKyAgICAgICAgZnJhbWV3b3JrcyA9IHt9CisgICAgICAgIGZvciBmcmFtZXdvcmsgaW4gWydUY2wnLCAnVGsnXToKKyAgICAgICAgICAgIGZ3cHRoID0gJ0xpYnJhcnkvRnJhbWV3b3Jrcy8lcy5mcmFtZXdvcmsvVmVyc2lvbnMvQ3VycmVudCcgJSBmcmFtZXdvcmsKKyAgICAgICAgICAgIGxpYmZ3ID0gb3MucGF0aC5qb2luKCcvJywgZndwdGgpCisgICAgICAgICAgICB1c3JmdyA9IG9zLnBhdGguam9pbihvcy5nZXRlbnYoJ0hPTUUnKSwgZndwdGgpCisgICAgICAgICAgICBmcmFtZXdvcmtzW2ZyYW1ld29ya10gPSBvcy5yZWFkbGluayhsaWJmdykKKyAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhsaWJmdyk6CisgICAgICAgICAgICAgICAgZmF0YWwoIlBsZWFzZSBpbnN0YWxsIGEgbGluayB0byBhIGN1cnJlbnQgJXMgJXMgYXMgJXMgc28gIgorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSB1c2VyIGNhbiBvdmVycmlkZSB0aGUgc3lzdGVtIGZyYW1ld29yay4iCisgICAgICAgICAgICAgICAgICAgICAgICAlIChmcmFtZXdvcmssIGZyYW1ld29ya3NbZnJhbWV3b3JrXSwgbGliZncpKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHModXNyZncpOgorICAgICAgICAgICAgICAgIGZhdGFsKCJQbGVhc2UgcmVuYW1lICVzIHRvIGF2b2lkIHBvc3NpYmxlIGR5bmFtaWMgbG9hZCBpc3N1ZXMuIgorICAgICAgICAgICAgICAgICAgICAgICAgJSB1c3JmdykKIAotICAgIGZyYW1ld29ya3MgPSB7fQotICAgIGZvciBmcmFtZXdvcmsgaW4gWydUY2wnLCAnVGsnXToKLSAgICAgICAgZndwdGggPSAnTGlicmFyeS9GcmFtZXdvcmtzLyVzLmZyYW1ld29yay9WZXJzaW9ucy9DdXJyZW50JyAlIGZyYW1ld29yawotICAgICAgICBzeXNmdyA9IG9zLnBhdGguam9pbihTREtQQVRILCAnU3lzdGVtJywgZndwdGgpCi0gICAgICAgIGxpYmZ3ID0gb3MucGF0aC5qb2luKFNES1BBVEgsIGZ3cHRoKQotICAgICAgICB1c3JmdyA9IG9zLnBhdGguam9pbihvcy5nZXRlbnYoJ0hPTUUnKSwgZndwdGgpCi0gICAgICAgIGZyYW1ld29ya3NbZnJhbWV3b3JrXSA9IG9zLnJlYWRsaW5rKHN5c2Z3KQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobGliZncpOgotICAgICAgICAgICAgZmF0YWwoIlBsZWFzZSBpbnN0YWxsIGEgbGluayB0byBhIGN1cnJlbnQgJXMgJXMgYXMgJXMgc28gIgotICAgICAgICAgICAgICAgICAgICAidGhlIHVzZXIgY2FuIG92ZXJyaWRlIHRoZSBzeXN0ZW0gZnJhbWV3b3JrLiIKLSAgICAgICAgICAgICAgICAgICAgJSAoZnJhbWV3b3JrLCBmcmFtZXdvcmtzW2ZyYW1ld29ya10sIGxpYmZ3KSkKLSAgICAgICAgaWYgb3MucmVhZGxpbmsobGliZncpICE9IG9zLnJlYWRsaW5rKHN5c2Z3KToKLSAgICAgICAgICAgIGZhdGFsKCJWZXJzaW9uIG9mICVzIG11c3QgbWF0Y2ggJXMiICUgKGxpYmZ3LCBzeXNmdykgKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh1c3Jmdyk6Ci0gICAgICAgICAgICBmYXRhbCgiUGxlYXNlIHJlbmFtZSAlcyB0byBhdm9pZCBwb3NzaWJsZSBkeW5hbWljIGxvYWQgaXNzdWVzLiIKLSAgICAgICAgICAgICAgICAgICAgJSB1c3JmdykKKyAgICAgICAgaWYgZnJhbWV3b3Jrc1snVGNsJ10gIT0gZnJhbWV3b3Jrc1snVGsnXToKKyAgICAgICAgICAgIGZhdGFsKCJUaGUgVGNsIGFuZCBUayBmcmFtZXdvcmtzIGFyZSBub3QgdGhlIHNhbWUgdmVyc2lvbi4iKQogCi0gICAgaWYgZnJhbWV3b3Jrc1snVGNsJ10gIT0gZnJhbWV3b3Jrc1snVGsnXToKLSAgICAgICAgZmF0YWwoIlRoZSBUY2wgYW5kIFRrIGZyYW1ld29ya3MgYXJlIG5vdCB0aGUgc2FtZSB2ZXJzaW9uLiIpCisgICAgICAgIHByaW50KCIgLS0gQnVpbGRpbmcgd2l0aCBleHRlcm5hbCBUY2wvVGsgJXMgZnJhbWV3b3JrcyIKKyAgICAgICAgICAgICAgICAgICAgJSBmcmFtZXdvcmtzWydUayddKQogCi0gICAgIyBhZGQgZmlsZXMgdG8gY2hlY2sgYWZ0ZXIgYnVpbGQKLSAgICBFWFBFQ1RFRF9TSEFSRURfTElCU1snX3RraW50ZXIuc28nXSA9IFsKLSAgICAgICAgICAgICIvTGlicmFyeS9GcmFtZXdvcmtzL1RjbC5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvVGNsIgotICAgICAgICAgICAgICAgICUgZnJhbWV3b3Jrc1snVGNsJ10sCi0gICAgICAgICAgICAiL0xpYnJhcnkvRnJhbWV3b3Jrcy9Uay5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvVGsiCi0gICAgICAgICAgICAgICAgJSBmcmFtZXdvcmtzWydUayddLAotICAgICAgICAgICAgXQorICAgICAgICAjIGFkZCBmaWxlcyB0byBjaGVjayBhZnRlciBidWlsZAorICAgICAgICBFWFBFQ1RFRF9TSEFSRURfTElCU1snX3RraW50ZXIuc28nXSA9IFsKKyAgICAgICAgICAgICAgICAiL0xpYnJhcnkvRnJhbWV3b3Jrcy9UY2wuZnJhbWV3b3JrL1ZlcnNpb25zLyVzL1RjbCIKKyAgICAgICAgICAgICAgICAgICAgJSBmcmFtZXdvcmtzWydUY2wnXSwKKyAgICAgICAgICAgICAgICAiL0xpYnJhcnkvRnJhbWV3b3Jrcy9Uay5mcmFtZXdvcmsvVmVyc2lvbnMvJXMvVGsiCisgICAgICAgICAgICAgICAgICAgICUgZnJhbWV3b3Jrc1snVGsnXSwKKyAgICAgICAgICAgICAgICBdCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQoIiAtLSBCdWlsZGluZyBwcml2YXRlIGNvcHkgb2YgVGNsL1RrIikKKyAgICBwcmludCgiIikKIAogICAgICMgUmVtb3ZlIGluaGVyaXRlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd2hpY2ggbWlnaHQgaW5mbHVlbmNlIGJ1aWxkCiAgICAgZW52aXJvbl92YXJfcHJlZml4ZXMgPSBbJ0NQQVRIJywgJ0NfSU5DTFVERV8nLCAnRFlMRF8nLCAnTEFORycsICdMQ18nLApAQCAtNjYzLDE4ICs2MDgsMTkgQEAKICAgICAgICAgYmFzZV9wYXRoID0gYmFzZV9wYXRoICsgJzonICsgT0xEX0RFVkVMT1BFUl9UT09MUwogICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGJhc2VfcGF0aAogICAgIHByaW50KCJTZXR0aW5nIGRlZmF1bHQgUEFUSDogJXMiJShvcy5lbnZpcm9uWydQQVRIJ10pKQotICAgICMgRW5zdXJlIHdzIGhhdmUgYWNjZXNzIHRvIGhnIGFuZCB0byBzcGhpbngtYnVpbGQuCi0gICAgIyBZb3UgbWF5IGhhdmUgdG8gY3JlYXRlIGxpbmtzIGluIC91c3IvYmluIGZvciB0aGVtLgotICAgIHJ1bkNvbW1hbmQoJ2hnIC0tdmVyc2lvbicpCi0gICAgcnVuQ29tbWFuZCgnc3BoaW54LWJ1aWxkIC0tdmVyc2lvbicpCisgICAgaWYgUFlUSE9OXzI6CisgICAgICAgICMgRW5zdXJlIHdlIGhhdmUgYWNjZXNzIHRvIHNwaGlueC1idWlsZC4KKyAgICAgICAgIyBZb3UgbWF5IGhhdmUgdG8gZGVmaW5lIFNES19UT09MU19CSU4gYW5kIGxpbmsgdG8gaXQgdGhlcmUsCisgICAgICAgIHJ1bkNvbW1hbmQoJ3NwaGlueC1idWlsZCAtLXZlcnNpb24nKQogCiBkZWYgcGFyc2VPcHRpb25zKGFyZ3M9Tm9uZSk6CiAgICAgIiIiCiAgICAgUGFyc2UgYXJndW1lbnRzIGFuZCB1cGRhdGUgZ2xvYmFsIHNldHRpbmdzLgogICAgICIiIgotICAgIGdsb2JhbCBXT1JLRElSLCBERVBTUkMsIFNES1BBVEgsIFNSQ0RJUiwgREVQVEFSR0VUCisgICAgZ2xvYmFsIFdPUktESVIsIERFUFNSQywgU1JDRElSLCBERVBUQVJHRVQKICAgICBnbG9iYWwgVU5JVkVSU0FMT1BUUywgVU5JVkVSU0FMQVJDSFMsIEFSQ0hMSVNULCBDQywgQ1hYCiAgICAgZ2xvYmFsIEZXX1ZFUlNJT05fUFJFRklYCisgICAgZ2xvYmFsIEZXX1NTTF9ESVJFQ1RPUlkKIAogICAgIGlmIGFyZ3MgaXMgTm9uZToKICAgICAgICAgYXJncyA9IHN5cy5hcmd2WzE6XQpAQCAtNzA0LDcgKzY1MCw3IEBACiAgICAgICAgICAgICBERVBTUkM9dgogCiAgICAgICAgIGVsaWYgayBpbiAoJy0tc2RrLXBhdGgnLCk6Ci0gICAgICAgICAgICBTREtQQVRIPXYKKyAgICAgICAgICAgIHByaW50KCIgV0FSTklORzogLS1zZGstcGF0aCBpcyBubyBsb25nZXIgc3VwcG9ydGVkIikKIAogICAgICAgICBlbGlmIGsgaW4gKCctLXNyYy1kaXInLCk6CiAgICAgICAgICAgICBTUkNESVI9dgpAQCAtNzIwLDcgKzY2Niw3IEBACiAgICAgICAgICAgICAgICAgaWYgZGVwdGFyZ2V0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICMgU2VsZWN0IGFsdGVybmF0ZSBkZWZhdWx0IGRlcGxveW1lbnQKICAgICAgICAgICAgICAgICAgICAgIyB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgREVQVEFSR0VUID0gZGVmYXVsdF90YXJnZXRfbWFwLmdldCh2LCAnMTAuMycpCisgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCA9IGRlZmF1bHRfdGFyZ2V0X21hcC5nZXQodiwgJzEwLjUnKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yKHYpCiAKQEAgLTcyOSwxNyArNjc1LDE2IEBACiAKICAgICBTUkNESVI9b3MucGF0aC5hYnNwYXRoKFNSQ0RJUikKICAgICBXT1JLRElSPW9zLnBhdGguYWJzcGF0aChXT1JLRElSKQotICAgIFNES1BBVEg9b3MucGF0aC5hYnNwYXRoKFNES1BBVEgpCiAgICAgREVQU1JDPW9zLnBhdGguYWJzcGF0aChERVBTUkMpCiAKICAgICBDQywgQ1hYID0gZ2V0VGFyZ2V0Q29tcGlsZXJzKCkKIAogICAgIEZXX1ZFUlNJT05fUFJFRklYID0gRldfUFJFRklYWzpdICsgWyJWZXJzaW9ucyIsIGdldFZlcnNpb24oKV0KKyAgICBGV19TU0xfRElSRUNUT1JZID0gRldfVkVSU0lPTl9QUkVGSVhbOl0gKyBbImV0YyIsICJvcGVuc3NsIl0KIAogICAgIHByaW50KCItLSBTZXR0aW5nczoiKQogICAgIHByaW50KCIgICAqIFNvdXJjZSBkaXJlY3Rvcnk6ICAgICVzIiAlIFNSQ0RJUikKICAgICBwcmludCgiICAgKiBCdWlsZCBkaXJlY3Rvcnk6ICAgICAlcyIgJSBXT1JLRElSKQotICAgIHByaW50KCIgICAqIFNESyBsb2NhdGlvbjogICAgICAgICVzIiAlIFNES1BBVEgpCiAgICAgcHJpbnQoIiAgICogVGhpcmQtcGFydHkgc291cmNlOiAgJXMiICUgREVQU1JDKQogICAgIHByaW50KCIgICAqIERlcGxveW1lbnQgdGFyZ2V0OiAgICVzIiAlIERFUFRBUkdFVCkKICAgICBwcmludCgiICAgKiBVbml2ZXJzYWwgYXJjaHM6ICAgICAlcyIgJSBzdHIoQVJDSExJU1QpKQpAQCAtODE5LDcgKzc2NCw3IEBACiAgICAgZXhjZXB0OgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvcy51bmxpbmsoZm5hbWUpCi0gICAgICAgIGV4Y2VwdDoKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKIGRlZiB2ZXJpZnlUaGlyZFBhcnR5RmlsZSh1cmwsIGNoZWNrc3VtLCBmbmFtZSk6CkBAIC04NzEsMjAgKzgxNiwyNiBAQAogICAgICAgICAgICAgImVuYWJsZS10bHNleHQiLAogICAgICAgICAgICAgIm5vLXNzbDIiLAogICAgICAgICAgICAgIm5vLXNzbDMiLAotICAgICAgICAgICAgIm5vLXNzbDMtbWV0aG9kIiwKICAgICAgICAgICAgICMgImVuYWJsZS11bml0LXRlc3QiLAogICAgICAgICAgICAgInNoYXJlZCIsCiAgICAgICAgICAgICAiLS1pbnN0YWxsX3ByZWZpeD0lcyIlc2hlbGxRdW90ZShhcmNoYmFzZSksCiAgICAgICAgICAgICAiLS1wcmVmaXg9JXMiJW9zLnBhdGguam9pbigiLyIsICpGV19WRVJTSU9OX1BSRUZJWCksCi0gICAgICAgICAgICAiLS1vcGVuc3NsZGlyPS9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMIiwKKyAgICAgICAgICAgICItLW9wZW5zc2xkaXI9JXMiJW9zLnBhdGguam9pbigiLyIsICpGV19TU0xfRElSRUNUT1JZKSwKICAgICAgICAgXQogICAgICAgICBpZiBub19hc206CiAgICAgICAgICAgICBjb25maWd1cmVfb3B0cy5hcHBlbmQoIm5vLWFzbSIpCisgICAgICAgICMgT3BlblNTTCAxLjAuMm8gYnJva2UgdGhlIENvbmZpZ3VyZSB0ZXN0IGZvciB3aGV0aGVyIHRoZSBjb21waWxlcgorICAgICAgICAjIGluIHVzZSBzdXBwb3J0cyBkZXBlbmRlbmN5IHJ1bGUgZ2VuZXJhdGlvbiAoY2MgLU0pIHdpdGggZ2NjLTQuMgorICAgICAgICAjIHVzZWQgZm9yIHRoZSAxMC42KyBpbnN0YWxsZXIgYnVpbGRzLiAgUGF0Y2ggQ29uZmlndXJlIGhlcmUgdG8KKyAgICAgICAgIyBmb3JjZSB1c2Ugb2YgImNjIC1NIiByYXRoZXIgdGhhbiAibWFrZWRlcGVuZCIuCisgICAgICAgIHJ1bkNvbW1hbmQoCisgICAgICAgICAgICAiIiJzZWQgLWkgIiIgJ3N8bXkgJGNjX2FzX21ha2VkZXBlbmQgPSAwfG15ICRjY19hc19tYWtlZGVwZW5kID0gMXxnJyBDb25maWd1cmUiIiIpCisKICAgICAgICAgcnVuQ29tbWFuZCgiICIuam9pbihbInBlcmwiLCAiQ29uZmlndXJlIl0KICAgICAgICAgICAgICAgICAgICAgICAgICsgYXJjaF9vcHRzW2FyY2hdICsgY29uZmlndXJlX29wdHMpKQotICAgICAgICBydW5Db21tYW5kKCJtYWtlIGRlcGVuZCBPU1hfU0RLPSVzIiAlIFNES1BBVEgpCi0gICAgICAgIHJ1bkNvbW1hbmQoIm1ha2UgYWxsIE9TWF9TREs9JXMiICUgU0RLUEFUSCkKLSAgICAgICAgcnVuQ29tbWFuZCgibWFrZSBpbnN0YWxsX3N3IE9TWF9TREs9JXMiICUgU0RLUEFUSCkKKyAgICAgICAgcnVuQ29tbWFuZCgibWFrZSBkZXBlbmQiKQorICAgICAgICBydW5Db21tYW5kKCJtYWtlIGFsbCIpCisgICAgICAgIHJ1bkNvbW1hbmQoIm1ha2UgaW5zdGFsbF9zdyIpCiAgICAgICAgICMgcnVuQ29tbWFuZCgibWFrZSB0ZXN0IikKICAgICAgICAgcmV0dXJuCiAKQEAgLTEwNDMsMjcgKzk5NCwyNCBAQAogCiAgICAgICAgIGlmIHJlY2lwZS5nZXQoJ3VzZUxERmxhZ3MnLCAxKToKICAgICAgICAgICAgIGNvbmZpZ3VyZV9hcmdzLmV4dGVuZChbCi0gICAgICAgICAgICAgICAgIkNGTEFHUz0lcy1tbWFjb3N4LXZlcnNpb24tbWluPSVzIC1hcmNoICVzIC1pc3lzcm9vdCAlcyAiCisgICAgICAgICAgICAgICAgIkNGTEFHUz0lcy1tbWFjb3N4LXZlcnNpb24tbWluPSVzIC1hcmNoICVzICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLUklcy91c3IvbG9jYWwvaW5jbHVkZSIlKAogICAgICAgICAgICAgICAgICAgICAgICAgcmVjaXBlLmdldCgnZXh0cmFfY2ZsYWdzJywgJycpLAogICAgICAgICAgICAgICAgICAgICAgICAgREVQVEFSR0VULAogICAgICAgICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oYXJjaExpc3QpLAotICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShTREtQQVRIKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoYmFzZWRpcilbMTotMV0sKSwKLSAgICAgICAgICAgICAgICAiTERGTEFHUz0tbW1hY29zeC12ZXJzaW9uLW1pbj0lcyAtaXN5c3Jvb3QgJXMgLUwlcy91c3IvbG9jYWwvbGliIC1hcmNoICVzIiUoCisgICAgICAgICAgICAgICAgIkxERkxBR1M9LW1tYWNvc3gtdmVyc2lvbi1taW49JXMgLUwlcy91c3IvbG9jYWwvbGliIC1hcmNoICVzIiUoCiAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKLSAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShTREtQQVRIKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShiYXNlZGlyKVsxOi0xXSwKICAgICAgICAgICAgICAgICAgICAgJyAtYXJjaCAnLmpvaW4oYXJjaExpc3QpKSwKICAgICAgICAgICAgIF0pCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjb25maWd1cmVfYXJncy5leHRlbmQoWwotICAgICAgICAgICAgICAgICJDRkxBR1M9JXMtbW1hY29zeC12ZXJzaW9uLW1pbj0lcyAtYXJjaCAlcyAtaXN5c3Jvb3QgJXMgIgorICAgICAgICAgICAgICAgICJDRkxBR1M9JXMtbW1hY29zeC12ZXJzaW9uLW1pbj0lcyAtYXJjaCAlcyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1JJXMvdXNyL2xvY2FsL2luY2x1ZGUiJSgKICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2lwZS5nZXQoJ2V4dHJhX2NmbGFncycsICcnKSwKICAgICAgICAgICAgICAgICAgICAgICAgIERFUFRBUkdFVCwKICAgICAgICAgICAgICAgICAgICAgICAgICcgLWFyY2ggJy5qb2luKGFyY2hMaXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoU0RLUEFUSClbMTotMV0sCiAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKGJhc2VkaXIpWzE6LTFdLCksCiAgICAgICAgICAgICBdKQogCkBAIC0xMTA4LDE3ICsxMDU2LDIyIEBACiAKIGRlZiBidWlsZFB5dGhvbkRvY3MoKToKICAgICAjIFRoaXMgc3RvcmVzIHRoZSBkb2N1bWVudGF0aW9uIGFzIFJlc291cmNlcy9FbmdsaXNoLmxwcm9qL0RvY3VtZW50YXRpb24KLSAgICAjIGluc2lkZSB0aGUgZnJhbXdvcmsuIHB5ZG9jIGFuZCBJRExFIHdpbGwgcGljayBpdCB1cCB0aGVyZS4KKyAgICAjIGluc2lkZSB0aGUgZnJhbWV3b3JrLiBweWRvYyBhbmQgSURMRSB3aWxsIHBpY2sgaXQgdXAgdGhlcmUuCiAgICAgcHJpbnQoIkluc3RhbGwgcHl0aG9uIGRvY3VtZW50YXRpb24iKQogICAgIHJvb3REaXIgPSBvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ19yb290JykKICAgICBidWlsZERpciA9IG9zLnBhdGguam9pbignLi4vLi4vRG9jJykKICAgICBkb2NkaXIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ3B5ZG9jcycpCiAgICAgY3VyRGlyID0gb3MuZ2V0Y3dkKCkKICAgICBvcy5jaGRpcihidWlsZERpcikKLSAgICAjIFRoZSBEb2MgYnVpbGQgY2hhbmdlZCBmb3IgMy40ICh0ZWNobmljYWxseSwgZm9yIDMuNC4xKSBhbmQgZm9yIDIuNy45CiAgICAgcnVuQ29tbWFuZCgnbWFrZSBjbGVhbicpCi0gICAgIyBBc3N1bWUgc3BoaW54LWJ1aWxkIGlzIG9uIG91ciBQQVRILCBjaGVja2VkIGluIGNoZWNrRW52aXJvbm1lbnQKLSAgICBydW5Db21tYW5kKCdtYWtlIGh0bWwnKQorICAgIGlmIFBZVEhPTl8yOgorICAgICAgICAjIFB5dGhvbiAyIGRvYyBidWlsZHMgZG8gbm90IHVzZSBibHVyYiBub3IgZG8gdGhleSBoYXZlIGEgdmVudiB0YXJnZXQuCisgICAgICAgICMgQXNzdW1lIHNwaGlueC1idWlsZCBpcyBvbiBvdXIgUEFUSCwgY2hlY2tlZCBpbiBjaGVja0Vudmlyb25tZW50CisgICAgICAgIHJ1bkNvbW1hbmQoJ21ha2UgaHRtbCcpCisgICAgZWxzZToKKyAgICAgICAgIyBDcmVhdGUgdmlydHVhbCBlbnZpcm9ubWVudCBmb3IgZG9jcyBidWlsZHMgd2l0aCBibHVyYiBhbmQgc3BoaW54CisgICAgICAgIHJ1bkNvbW1hbmQoJ21ha2UgdmVudicpCisgICAgICAgIHJ1bkNvbW1hbmQoJ21ha2UgaHRtbCBQWVRIT049dmVudi9iaW4vcHl0aG9uJykKICAgICBvcy5jaGRpcihjdXJEaXIpCiAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRvY2Rpcik6CiAgICAgICAgIG9zLm1rZGlyKGRvY2RpcikKQEAgLTExNDEsMTAgKzEwOTQsNiBAQAogICAgIGN1cmRpciA9IG9zLmdldGN3ZCgpCiAgICAgb3MuY2hkaXIoYnVpbGREaXIpCiAKLSAgICAjIE5vdCBzdXJlIGlmIHRoaXMgaXMgc3RpbGwgbmVlZGVkLCB0aGUgb3JpZ2luYWwgYnVpbGQgc2NyaXB0Ci0gICAgIyBjbGFpbXMgdGhhdCBwYXJ0cyBvZiB0aGUgaW5zdGFsbCBhc3N1bWUgcHl0aG9uLmV4ZSBleGlzdHMuCi0gICAgb3Muc3ltbGluaygncHl0aG9uJywgb3MucGF0aC5qb2luKGJ1aWxkRGlyLCAncHl0aG9uLmV4ZScpKQotCiAgICAgIyBFeHRyYWN0IHRoZSB2ZXJzaW9uIGZyb20gdGhlIGNvbmZpZ3VyZSBmaWxlLCBuZWVkZWQgdG8gY2FsY3VsYXRlCiAgICAgIyBzZXZlcmFsIHBhdGhzLgogICAgIHZlcnNpb24gPSBnZXRWZXJzaW9uKCkKQEAgLTExNTUsMjQgKzExMDQsNDQgQEAKICAgICBvcy5lbnZpcm9uWydEWUxEX0xJQlJBUllfUEFUSCddID0gb3MucGF0aC5qb2luKFdPUktESVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpYnJhcmllcycsICd1c3InLCAnbG9jYWwnLCAnbGliJykKICAgICBwcmludCgiUnVubmluZyBjb25maWd1cmUuLi4iKQotICAgIHJ1bkNvbW1hbmQoIiVzIC1DIC0tZW5hYmxlLWZyYW1ld29yayAtLWVuYWJsZS11bml2ZXJzYWxzZGs9JXMgIgorICAgIHJ1bkNvbW1hbmQoIiVzIC1DIC0tZW5hYmxlLWZyYW1ld29yayAtLWVuYWJsZS11bml2ZXJzYWxzZGs9LyAiCiAgICAgICAgICAgICAgICAiLS13aXRoLXVuaXZlcnNhbC1hcmNocz0lcyAiCiAgICAgICAgICAgICAgICAiJXMgIgogICAgICAgICAgICAgICAgIiVzICIKKyAgICAgICAgICAgICAgICIlcyAiCisgICAgICAgICAgICAgICAiJXMgIgogICAgICAgICAgICAgICAgIkxERkxBR1M9Jy1nIC1MJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9saWInICIKICAgICAgICAgICAgICAgICJDRkxBR1M9Jy1nIC1JJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9pbmNsdWRlJyAyPiYxIiUoCi0gICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFNSQ0RJUiwgJ2NvbmZpZ3VyZScpKSwgc2hlbGxRdW90ZShTREtQQVRIKSwKKyAgICAgICAgc2hlbGxRdW90ZShvcy5wYXRoLmpvaW4oU1JDRElSLCAnY29uZmlndXJlJykpLAogICAgICAgICBVTklWRVJTQUxBUkNIUywKICAgICAgICAgKCcgJywgJy0td2l0aC1jb21wdXRlZC1nb3RvcyAnKVtQWVRIT05fM10sCiAgICAgICAgICgnICcsICctLXdpdGhvdXQtZW5zdXJlcGlwICcpW1BZVEhPTl8zXSwKKyAgICAgICAgKCcgJywgIi0td2l0aC10Y2x0ay1pbmNsdWRlcz0nLUklcy9saWJyYXJpZXMvdXNyL2xvY2FsL2luY2x1ZGUnIiUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShXT1JLRElSKVsxOi0xXSwpKVtpbnRlcm5hbFRrKCldLAorICAgICAgICAoJyAnLCAiLS13aXRoLXRjbHRrLWxpYnM9Jy1MJXMvbGlicmFyaWVzL3Vzci9sb2NhbC9saWIgLWx0Y2w4LjYgLWx0azguNiciJSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKFdPUktESVIpWzE6LTFdLCkpW2ludGVybmFsVGsoKV0sCiAgICAgICAgIHNoZWxsUXVvdGUoV09SS0RJUilbMTotMV0sCiAgICAgICAgIHNoZWxsUXVvdGUoV09SS0RJUilbMTotMV0pKQogCi0gICAgcHJpbnQoIlJ1bm5pbmcgbWFrZSB0b3VjaCIpCi0gICAgcnVuQ29tbWFuZCgibWFrZSB0b3VjaCIpCisgICAgIyBMb29rIGZvciBlbnZpcm9ubWVudCB2YWx1ZSBCVUlMRElOU1RBTExFUl9CVUlMRFBZVEhPTl9NQUtFX0VYVFJBUworICAgICMgYW5kLCBpZiBkZWZpbmVkLCBhcHBlbmQgaXRzIHZhbHVlIHRvIHRoZSBtYWtlIGNvbW1hbmQuICBUaGlzIGFsbG93cworICAgICMgdXMgdG8gcGFzcyBpbiB2ZXJzaW9uIGNvbnRyb2wgdGFncywgbGlrZSBHSVRUQUcsIHRvIGEgYnVpbGQgZnJvbSBhCisgICAgIyB0YXJiYWxsIHJhdGhlciB0aGFuIGZyb20gYSB2Y3MgY2hlY2tvdXQsIHRodXMgZWxpbWluYXRpbmcgdGhlIG5lZWQKKyAgICAjIHRvIGhhdmUgYSB3b3JraW5nIGNvcHkgb2YgdGhlIHZjcyBwcm9ncmFtIG9uIHRoZSBidWlsZCBtYWNoaW5lLgorICAgICMKKyAgICAjIEEgdHlwaWNhbCB1c2UgbWlnaHQgYmU6CisgICAgIyAgICAgIGV4cG9ydCBCVUlMRElOU1RBTExFUl9CVUlMRFBZVEhPTl9NQUtFX0VYVFJBUz0iIFwKKyAgICAjICAgICAgICAgICAgICAgICAgICAgICAgIEdJVFZFUlNJT049J2VjaG8gMTIzNDU2Nzg5YScgXAorICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgR0lUVEFHPSdlY2hvIHYzLjYuMCcgXAorICAgICMgICAgICAgICAgICAgICAgICAgICAgICAgR0lUQlJBTkNIPSdlY2hvIDMuNiciCiAKLSAgICBwcmludCgiUnVubmluZyBtYWtlIikKLSAgICBydW5Db21tYW5kKCJtYWtlIikKKyAgICBtYWtlX2V4dHJhcyA9IG9zLmdldGVudigiQlVJTERJTlNUQUxMRVJfQlVJTERQWVRIT05fTUFLRV9FWFRSQVMiKQorICAgIGlmIG1ha2VfZXh0cmFzOgorICAgICAgICBtYWtlX2NtZCA9ICJtYWtlICIgKyBtYWtlX2V4dHJhcworICAgIGVsc2U6CisgICAgICAgIG1ha2VfY21kID0gIm1ha2UiCisgICAgcHJpbnQoIlJ1bm5pbmcgIiArIG1ha2VfY21kKQorICAgIHJ1bkNvbW1hbmQobWFrZV9jbWQpCiAKICAgICBwcmludCgiUnVubmluZyBtYWtlIGluc3RhbGwiKQogICAgIHJ1bkNvbW1hbmQoIm1ha2UgaW5zdGFsbCBERVNURElSPSVzIiUoCkBAIC0xMTg1LDIxICsxMTU0LDMxIEBACiAgICAgZGVsIG9zLmVudmlyb25bJ0RZTERfTElCUkFSWV9QQVRIJ10KICAgICBwcmludCgiQ29weWluZyByZXF1aXJlZCBzaGFyZWQgbGlicmFyaWVzIikKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oV09SS0RJUiwgJ2xpYnJhcmllcycsICdMaWJyYXJ5JykpOgotICAgICAgICBydW5Db21tYW5kKCJtdiAlcy8qICVzIiUoCi0gICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbigKKyAgICAgICAgYnVpbGRfbGliX2RpciA9IG9zLnBhdGguam9pbigKICAgICAgICAgICAgICAgICBXT1JLRElSLCAnbGlicmFyaWVzJywgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsCi0gICAgICAgICAgICAgICAgJ1B5dGhvbi5mcmFtZXdvcmsnLCAnVmVyc2lvbnMnLCBnZXRWZXJzaW9uKCksCi0gICAgICAgICAgICAgICAgJ2xpYicpKSwKLSAgICAgICAgICAgIHNoZWxsUXVvdGUob3MucGF0aC5qb2luKFdPUktESVIsICdfcm9vdCcsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLAotICAgICAgICAgICAgICAgICdQeXRob24uZnJhbWV3b3JrJywgJ1ZlcnNpb25zJywgZ2V0VmVyc2lvbigpLAotICAgICAgICAgICAgICAgICdsaWInKSkpKQorICAgICAgICAgICAgICAgICdQeXRob24uZnJhbWV3b3JrJywgJ1ZlcnNpb25zJywgZ2V0VmVyc2lvbigpLCAnbGliJykKKyAgICAgICAgZndfbGliX2RpciA9IG9zLnBhdGguam9pbigKKyAgICAgICAgICAgICAgICBXT1JLRElSLCAnX3Jvb3QnLCAnTGlicmFyeScsICdGcmFtZXdvcmtzJywKKyAgICAgICAgICAgICAgICAnUHl0aG9uLmZyYW1ld29yaycsICdWZXJzaW9ucycsIGdldFZlcnNpb24oKSwgJ2xpYicpCisgICAgICAgIGlmIGludGVybmFsVGsoKToKKyAgICAgICAgICAgICMgbW92ZSBUY2wgYW5kIFRrIHBrZ2NvbmZpZyBmaWxlcworICAgICAgICAgICAgcnVuQ29tbWFuZCgibXYgJXMvcGtnY29uZmlnLyogJXMvcGtnY29uZmlnIiUoCisgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKGJ1aWxkX2xpYl9kaXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgc2hlbGxRdW90ZShmd19saWJfZGlyKSApKQorICAgICAgICAgICAgcnVuQ29tbWFuZCgicm0gLXIgJXMvcGtnY29uZmlnIiUoCisgICAgICAgICAgICAgICAgICAgICAgICBzaGVsbFF1b3RlKGJ1aWxkX2xpYl9kaXIpLCApKQorICAgICAgICBydW5Db21tYW5kKCJtdiAlcy8qICVzIiUoCisgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoYnVpbGRfbGliX2RpciksCisgICAgICAgICAgICAgICAgICAgIHNoZWxsUXVvdGUoZndfbGliX2RpcikgKSkKIAotICAgIHBhdGhfdG9fbGliID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnUHl0aG9uLmZyYW1ld29yaycsICdWZXJzaW9ucycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24sICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCkpCisgICAgZnJtRGlyID0gb3MucGF0aC5qb2luKHJvb3REaXIsICdMaWJyYXJ5JywgJ0ZyYW1ld29ya3MnLCAnUHl0aG9uLmZyYW1ld29yaycpCisgICAgZnJtRGlyVmVyc2lvbmVkID0gb3MucGF0aC5qb2luKGZybURpciwgJ1ZlcnNpb25zJywgdmVyc2lvbikKKyAgICBwYXRoX3RvX2xpYiA9IG9zLnBhdGguam9pbihmcm1EaXJWZXJzaW9uZWQsICdsaWInLCAncHl0aG9uJXMnJSh2ZXJzaW9uLCkpCisgICAgIyBjcmVhdGUgZGlyZWN0b3J5IGZvciBPcGVuU1NMIGNlcnRpZmljYXRlcworICAgIHNzbERpciA9IG9zLnBhdGguam9pbihmcm1EaXJWZXJzaW9uZWQsICdldGMnLCAnb3BlbnNzbCcpCisgICAgb3MubWFrZWRpcnMoc3NsRGlyKQogCiAgICAgcHJpbnQoIkZpeCBmaWxlIG1vZGVzIikKLSAgICBmcm1EaXIgPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ0xpYnJhcnknLCAnRnJhbWV3b3JrcycsICdQeXRob24uZnJhbWV3b3JrJykKICAgICBnaWQgPSBncnAuZ2V0Z3JuYW0oJ2FkbWluJykuZ3JfZ2lkCiAKICAgICBzaGFyZWRfbGliX2Vycm9yID0gRmFsc2UKQEAgLTEyNDksNiArMTIyOCw4IEBACiAgICAgICAgIExEVkVSU0lPTiA9IExEVkVSU0lPTi5yZXBsYWNlKCckKFZFUlNJT04pJywgVkVSU0lPTikKICAgICAgICAgTERWRVJTSU9OID0gTERWRVJTSU9OLnJlcGxhY2UoJyQoQUJJRkxBR1MpJywgQUJJRkxBR1MpCiAgICAgICAgIGNvbmZpZ19zdWZmaXggPSAnLScgKyBMRFZFUlNJT04KKyAgICAgICAgaWYgZ2V0VmVyc2lvbk1ham9yTWlub3IoKSA+PSAoMywgNik6CisgICAgICAgICAgICBjb25maWdfc3VmZml4ID0gY29uZmlnX3N1ZmZpeCArICctZGFyd2luJwogICAgIGVsc2U6CiAgICAgICAgIGNvbmZpZ19zdWZmaXggPSAnJyAgICAgICMgUHl0aG9uIDIueAogCkBAIC0xMjc0LDcgKzEyNTUsNyBAQAogICAgIGZwLndyaXRlKGRhdGEpCiAgICAgZnAuY2xvc2UoKQogCi0gICAgIyBmaXggX3N5c2NvbmZpZ2RhdGEgaWYgaXQgZXhpc3RzCisgICAgIyBmaXggX3N5c2NvbmZpZ2RhdGEKICAgICAjCiAgICAgIyBUT0RPOiBtYWtlIHRoaXMgbW9yZSByb2J1c3QhICB0ZXN0X3N5c2NvbmZpZ19tb2R1bGUgb2YKICAgICAjIGRpc3R1dGlscy50ZXN0cy50ZXN0X3N5c2NvbmZpZy5TeXNjb25maWdUZXN0Q2FzZSB0ZXN0cyB0aGF0CkBAIC0xMjg4LDI4ICsxMjY5LDMxIEBACiAgICAgIyBfc3lzY29uZmlnZGF0YS5weSkuCiAKICAgICBpbXBvcnQgcHByaW50Ci0gICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JykKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKLSAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQotICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgICMgY3JlYXRlIGJ1aWxkX3RpbWVfdmFycyBkaWN0Ci0gICAgICAgIGV4ZWMoZGF0YSkKLSAgICAgICAgdmFycyA9IHt9Ci0gICAgICAgIGZvciBrLCB2IGluIGJ1aWxkX3RpbWVfdmFycy5pdGVtcygpOgotICAgICAgICAgICAgaWYgdHlwZSh2KSA9PSB0eXBlKCcnKToKLSAgICAgICAgICAgICAgICBmb3IgcCBpbiAoaW5jbHVkZV9wYXRoLCBsaWJfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoJyAnICsgcCwgJycpCi0gICAgICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UocCArICcgJywgJycpCi0gICAgICAgICAgICB2YXJzW2tdID0gdgorICAgIGlmIGdldFZlcnNpb25NYWpvck1pbm9yKCkgPj0gKDMsIDYpOgorICAgICAgICAjIFhYWCB0aGlzIGlzIGV4dHJhLWZyYWdpbGUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhX21fZGFyd2luX2Rhcndpbi5weScpCisgICAgZWxzZToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JykKKyAgICBmcCA9IG9wZW4ocGF0aCwgJ3InKQorICAgIGRhdGEgPSBmcC5yZWFkKCkKKyAgICBmcC5jbG9zZSgpCisgICAgIyBjcmVhdGUgYnVpbGRfdGltZV92YXJzIGRpY3QKKyAgICBleGVjKGRhdGEpCisgICAgdmFycyA9IHt9CisgICAgZm9yIGssIHYgaW4gYnVpbGRfdGltZV92YXJzLml0ZW1zKCk6CisgICAgICAgIGlmIHR5cGUodikgPT0gdHlwZSgnJyk6CisgICAgICAgICAgICBmb3IgcCBpbiAoaW5jbHVkZV9wYXRoLCBsaWJfcGF0aCk6CisgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgnICcgKyBwLCAnJykKKyAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKHAgKyAnICcsICcnKQorICAgICAgICB2YXJzW2tdID0gdgogCi0gICAgICAgIGZwID0gb3BlbihwYXRoLCAndycpCi0gICAgICAgICMgZHVwbGljYXRlZCBmcm9tIHN5c2NvbmZpZy5fZ2VuZXJhdGVfcG9zaXhfdmFycygpCi0gICAgICAgIGZwLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKLSAgICAgICAgICAgICAgICAgICAgJyB0aGUgc3lzY29uZmlnIG1vZHVsZVxuJykKLSAgICAgICAgZnAud3JpdGUoJ2J1aWxkX3RpbWVfdmFycyA9ICcpCi0gICAgICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWZwKQotICAgICAgICBmcC5jbG9zZSgpCisgICAgZnAgPSBvcGVuKHBhdGgsICd3JykKKyAgICAjIGR1cGxpY2F0ZWQgZnJvbSBzeXNjb25maWcuX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQorICAgIGZwLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKKyAgICAgICAgICAgICAgICAnIHRoZSBzeXNjb25maWcgbW9kdWxlXG4nKQorICAgIGZwLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQorICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWZwKQorICAgIGZwLmNsb3NlKCkKIAogICAgICMgQWRkIHN5bWxpbmtzIGluIC91c3IvbG9jYWwvYmluLCB1c2luZyByZWxhdGl2ZSBsaW5rcwogICAgIHVzcl9sb2NhbF9iaW4gPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ3VzcicsICdsb2NhbCcsICdiaW4nKQpAQCAtMTU1Myw2ICsxNTM3LDEwIEBACiAgICAgICAgICAgICBzaGVsbFF1b3RlKG9zLnBhdGguam9pbihXT1JLRElSLCAnaW5zdGFsbGVyJykpLAogICAgICAgICAgICAgc2hlbGxRdW90ZShpbWFnZXBhdGggKyAiLnRtcC5kbWciICkpKQogCisgICAgIyBUcnkgdG8gbWl0aWdhdGUgcmFjZSBjb25kaXRpb24gaW4gY2VydGFpbiB2ZXJzaW9ucyBvZiBtYWNPUywgZS5nLiAxMC45LAorICAgICMgd2hlbiBoZGl1dGlsIGZhaWxzIHdpdGggICJSZXNvdXJjZSBidXN5IgorCisgICAgdGltZS5zbGVlcCgxMCkKIAogICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oV09SS0RJUiwgIm1udCIpKToKICAgICAgICAgb3MubWtkaXIob3MucGF0aC5qb2luKFdPUktESVIsICJtbnQiKSkKQEAgLTE2MzYsNiArMTYyNCw4IEBACiAgICAgcGF0Y2hGaWxlKCJyZXNvdXJjZXMvUmVhZE1lLnJ0ZiIsICBmbikKICAgICBmbiA9IG9zLnBhdGguam9pbihmb2xkZXIsICJVcGRhdGUgU2hlbGwgUHJvZmlsZS5jb21tYW5kIikKICAgICBwYXRjaFNjcmlwdCgic2NyaXB0cy9wb3N0ZmxpZ2h0LnBhdGNoLXByb2ZpbGUiLCAgZm4pCisgICAgZm4gPSBvcy5wYXRoLmpvaW4oZm9sZGVyLCAiSW5zdGFsbCBDZXJ0aWZpY2F0ZXMuY29tbWFuZCIpCisgICAgcGF0Y2hTY3JpcHQoInJlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kIiwgIGZuKQogICAgIG9zLmNobW9kKGZvbGRlciwgU1RBVF8wbzc1NSkKICAgICBzZXRJY29uKGZvbGRlciwgIi4uL0ljb25zL1B5dGhvbiBGb2xkZXIuaWNucyIpCiAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9pc3N1ZTE5MzczX3RrXzhfNV8xNV9zb3VyY2UucGF0Y2ggYi9NYWMvQnVpbGRTY3JpcHQvaXNzdWUxOTM3M190a184XzVfMTVfc291cmNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTVkMDhlLi4wMDAwMDAwCi0tLSBhL01hYy9CdWlsZFNjcmlwdC9pc3N1ZTE5MzczX3RrXzhfNV8xNV9zb3VyY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1Jc3N1ZSAjMTkzNzM6IFBhdGNoIHRvIFRrIDguNS4xNSB0byBjb3JyZWN0IHJlZnJlc2ggcHJvYmxlbSBvbiBPUyB4IDEwLjkuCi1Gcm9tIHVwc3RyZWFtIGNoZWNraW4gaHR0cHM6Ly9jb3JlLnRjbC50ay90ay9pbmZvLzVhNWFiZjcxZjkKLQotLS0tIHRrOC41LjE1L21hY29zeC90a01hY09TWERyYXcuYwkyMDEzLTA5LTE2IDA5OjQxOjIxLjAwMDAwMDAwMCAtMDcwMAotKysrIFRrX1NvdXJjZV9Db2RlLTVhNWFiZjcxZjlmZGIwZGEvbWFjb3N4L3RrTWFjT1NYRHJhdy5jCTIwMTMtMTAtMjcgMTM6Mjc6MDAuMDAwMDAwMDAwIC0wNzAwCi1AQCAtMTY4OCw2ICsxNjg4LDcgQEAKLSB7Ci0gICAgIGlmIChkY1B0ci0+Y29udGV4dCkgewotIAlDR0NvbnRleHRTeW5jaHJvbml6ZShkY1B0ci0+Y29udGV4dCk7Ci0rCVtbZGNQdHItPnZpZXcgd2luZG93XSBzZXRWaWV3c05lZWREaXNwbGF5OllFU107Ci0gCVtbZGNQdHItPnZpZXcgd2luZG93XSBlbmFibGVGbHVzaFdpbmRvd107Ci0gCWlmIChkY1B0ci0+Zm9jdXNMb2NrZWQpIHsKLSAJICAgIFtkY1B0ci0+dmlldyB1bmxvY2tGb2N1c107CmRpZmYgLS1naXQgYS9NYWMvQnVpbGRTY3JpcHQvb3BlbnNzbF9zZGtfbWFrZWRlcGVuZC5wYXRjaCBiL01hYy9CdWlsZFNjcmlwdC9vcGVuc3NsX3Nka19tYWtlZGVwZW5kLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjJkNjdlLi4wMDAwMDAwCi0tLSBhL01hYy9CdWlsZFNjcmlwdC9vcGVuc3NsX3Nka19tYWtlZGVwZW5kLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotIyBIRyBjaGFuZ2VzZXQgcGF0Y2gKLSMKLSMgCXVzaW5nIG9wZW5zc2wgMS4wLjJqCi0jCi0jIC0gc3VwcG9ydCBidWlsZGluZyB3aXRoIGFuIE9TIFggU0RLCi0KLWRpZmYgQ29uZmlndXJlCi0KLWRpZmYgLS1naXQgYS9Db25maWd1cmUgYi9Db25maWd1cmUKLS0tLSBhL0NvbmZpZ3VyZQotKysrIGIvQ29uZmlndXJlCi1AQCAtNjQyLDEyICs2NDIsMTIgQEAKLSAKLSAjIyMjIyBNYWNPUyBYIChhLmsuYS4gUmhhcHNvZHkgb3IgRGFyd2luKSBzZXR1cAotICJyaGFwc29keS1wcGMtY2MiLCJjYzotTzMgLURCX0VORElBTjo6KHVua25vd24pOk1BQ09TWF9SSEFQU09EWTo6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7bm9fYXNtfTo6IiwKLS0iZGFyd2luLXBwYy1jYyIsImNjOi1hcmNoIHBwYyAtTzMgLURCX0VORElBTiAtV2EsLWZvcmNlX2NwdXN1YnR5cGVfQUxMOjotRF9SRUVOVFJBTlQ6TUFDT1NYOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtwcGMzMl9hc219Om9zeDMyOmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUMgLWZuby1jb21tb246LWFyY2ggcHBjIC1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKLS0iZGFyd2luNjQtcHBjLWNjIiwiY2M6LWFyY2ggcHBjNjQgLU8zIC1EQl9FTkRJQU46Oi1EX1JFRU5UUkFOVDpNQUNPU1g6LVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QlOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7cHBjNjRfYXNtfTpvc3g2NDpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDIC1mbm8tY29tbW9uOi1hcmNoIHBwYzY0IC1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKLS0iZGFyd2luLWkzODYtY2MiLCJjYzotYXJjaCBpMzg2IC1PMyAtZm9taXQtZnJhbWUtcG9pbnRlciAtRExfRU5ESUFOOjotRF9SRUVOVFJBTlQ6TUFDT1NYOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpCTl9MTE9ORyBSQzRfSU5UIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoiLmV2YWx7bXkgJGFzbT0keDg2X2FzbTskYXNtPX5zL2Nhc3RcLTU4Nlwuby8vOyRhc219LiI6bWFjb3N4OmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUMgLWZuby1jb21tb246LWFyY2ggaTM4NiAtZHluYW1pY2xpYjouXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKS5keWxpYiIsCi0tImRlYnVnLWRhcndpbi1pMzg2LWNjIiwiY2M6LWFyY2ggaTM4NiAtZzMgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOk1BQ09TWDotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6Qk5fTExPTkcgUkM0X0lOVCBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHt4ODZfYXNtfTptYWNvc3g6ZGxmY246ZGFyd2luLXNoYXJlZDotZlBJQyAtZm5vLWNvbW1vbjotYXJjaCBpMzg2IC1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKLS0iZGFyd2luNjQteDg2XzY0LWNjIiwiY2M6LWFyY2ggeDg2XzY0IC1PMyAtRExfRU5ESUFOIC1XYWxsOjotRF9SRUVOVFJBTlQ6TUFDT1NYOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6Ii5ldmFse215ICRhc209JHg4Nl82NF9hc207JGFzbT1+cy9yYzRcLVteOl0rLy87JGFzbX0uIjptYWNvc3g6ZGxmY246ZGFyd2luLXNoYXJlZDotZlBJQyAtZm5vLWNvbW1vbjotYXJjaCB4ODZfNjQgLWR5bmFtaWNsaWI6LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikuZHlsaWIiLAotLSJkZWJ1Zy1kYXJ3aW42NC14ODZfNjQtY2MiLCJjYzotYXJjaCB4ODZfNjQgLWdnZGIgLWcyIC1PMCAtRExfRU5ESUFOIC1XYWxsOjotRF9SRUVOVFJBTlQ6TUFDT1NYOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSFVOSyBERVNfSU5UIERFU19VTlJPTEw6Ii5ldmFse215ICRhc209JHg4Nl82NF9hc207JGFzbT1+cy9yYzRcLVteOl0rLy87JGFzbX0uIjptYWNvc3g6ZGxmY246ZGFyd2luLXNoYXJlZDotZlBJQyAtZm5vLWNvbW1vbjotYXJjaCB4ODZfNjQgLWR5bmFtaWNsaWI6LlwkKFNITElCX01BSk9SKS5cJChTSExJQl9NSU5PUikuZHlsaWIiLAotKyJkYXJ3aW4tcHBjLWNjIiwiY2M6LWFyY2ggcHBjIC1pc3lzcm9vdCBcJChPU1hfU0RLKSAtTzMgLURCX0VORElBTiAtV2EsLWZvcmNlX2NwdXN1YnR5cGVfQUxMOjotRF9SRUVOVFJBTlQ6TUFDT1NYOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpCTl9MTE9ORyBSQzRfQ0hBUiBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHtwcGMzMl9hc219Om9zeDMyOmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUMgLWZuby1jb21tb246LWFyY2ggcHBjIC1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKLSsiZGFyd2luNjQtcHBjLWNjIiwiY2M6LWFyY2ggcHBjNjQgLWlzeXNyb290IFwkKE9TWF9TREspIC1PMyAtREJfRU5ESUFOOjotRF9SRUVOVFJBTlQ6TUFDT1NYOi1XbCwtc2VhcmNoX3BhdGhzX2ZpcnN0JTpTSVhUWV9GT1VSX0JJVF9MT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke3BwYzY0X2FzbX06b3N4NjQ6ZGxmY246ZGFyd2luLXNoYXJlZDotZlBJQyAtZm5vLWNvbW1vbjotYXJjaCBwcGM2NCAtZHluYW1pY2xpYjouXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKS5keWxpYiIsCi0rImRhcndpbi1pMzg2LWNjIiwiY2M6LWFyY2ggaTM4NiAtaXN5c3Jvb3QgXCQoT1NYX1NESykgLU8zIC1mb21pdC1mcmFtZS1wb2ludGVyIC1ETF9FTkRJQU46Oi1EX1JFRU5UUkFOVDpNQUNPU1g6LVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QlOkJOX0xMT05HIFJDNF9JTlQgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiIuZXZhbHtteSAkYXNtPSR4ODZfYXNtOyRhc209fnMvY2FzdFwtNTg2XC5vLy87JGFzbX0uIjptYWNvc3g6ZGxmY246ZGFyd2luLXNoYXJlZDotZlBJQyAtZm5vLWNvbW1vbjotYXJjaCBpMzg2IC1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKLSsiZGVidWctZGFyd2luLWkzODYtY2MiLCJjYzotYXJjaCBpMzg2IC1pc3lzcm9vdCBcJChPU1hfU0RLKSAtZzMgLURMX0VORElBTjo6LURfUkVFTlRSQU5UOk1BQ09TWDotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6Qk5fTExPTkcgUkM0X0lOVCBSQzRfQ0hVTksgREVTX1VOUk9MTCBCRl9QVFI6JHt4ODZfYXNtfTptYWNvc3g6ZGxmY246ZGFyd2luLXNoYXJlZDotZlBJQyAtZm5vLWNvbW1vbjotYXJjaCBpMzg2IC1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKLSsiZGFyd2luNjQteDg2XzY0LWNjIiwiY2M6LWFyY2ggeDg2XzY0IC1pc3lzcm9vdCBcJChPU1hfU0RLKSAtTzMgLURMX0VORElBTiAtV2FsbDo6LURfUkVFTlRSQU5UOk1BQ09TWDotV2wsLXNlYXJjaF9wYXRoc19maXJzdCU6U0lYVFlfRk9VUl9CSVRfTE9ORyBSQzRfQ0hVTksgREVTX0lOVCBERVNfVU5ST0xMOiIuZXZhbHtteSAkYXNtPSR4ODZfNjRfYXNtOyRhc209fnMvcmM0XC1bXjpdKy8vOyRhc219LiI6bWFjb3N4OmRsZmNuOmRhcndpbi1zaGFyZWQ6LWZQSUMgLWZuby1jb21tb246LWFyY2ggeDg2XzY0IC1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKLSsiZGVidWctZGFyd2luNjQteDg2XzY0LWNjIiwiY2M6LWFyY2ggeDg2XzY0IC1pc3lzcm9vdCBcJChPU1hfU0RLKSAtZ2dkYiAtZzIgLU8wIC1ETF9FTkRJQU4gLVdhbGw6Oi1EX1JFRU5UUkFOVDpNQUNPU1g6LVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QlOlNJWFRZX0ZPVVJfQklUX0xPTkcgUkM0X0NIVU5LIERFU19JTlQgREVTX1VOUk9MTDoiLmV2YWx7bXkgJGFzbT0keDg2XzY0X2FzbTskYXNtPX5zL3JjNFwtW146XSsvLzskYXNtfS4iOm1hY29zeDpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDIC1mbm8tY29tbW9uOi1hcmNoIHg4Nl82NCAtZHluYW1pY2xpYjouXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKS5keWxpYiIsCi0gImRlYnVnLWRhcndpbi1wcGMtY2MiLCJjYzotREJOX0RFQlVHIC1EUkVGX0NIRUNLIC1EQ09ORl9ERUJVRyAtRENSWVBUT19NREVCVUcgLURCX0VORElBTiAtZyAtV2FsbCAtTzo6LURfUkVFTlRSQU5UOk1BQ09TWDo6Qk5fTExPTkcgUkM0X0NIQVIgUkM0X0NIVU5LIERFU19VTlJPTEwgQkZfUFRSOiR7cHBjMzJfYXNtfTpvc3gzMjpkbGZjbjpkYXJ3aW4tc2hhcmVkOi1mUElDOi1keW5hbWljbGliOi5cJChTSExJQl9NQUpPUikuXCQoU0hMSUJfTUlOT1IpLmR5bGliIiwKLSAjIGlQaG9uZU9TL2lPUwotICJpcGhvbmVvcy1jcm9zcyIsImxsdm0tZ2NjOi1PMyAtaXN5c3Jvb3QgXCQoQ1JPU1NfVE9QKS9TREtzL1wkKENST1NTX1NESykgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLWZuby1jb21tb246Oi1EX1JFRU5UUkFOVDppT1M6LVdsLC1zZWFyY2hfcGF0aHNfZmlyc3QlOkJOX0xMT05HIFJDNF9DSEFSIFJDNF9DSFVOSyBERVNfVU5ST0xMIEJGX1BUUjoke25vX2FzbX06ZGxmY246ZGFyd2luLXNoYXJlZDotZlBJQyAtZm5vLWNvbW1vbjotZHluYW1pY2xpYjouXCQoU0hMSUJfTUFKT1IpLlwkKFNITElCX01JTk9SKS5keWxpYiIsCi1AQCAtMTcyOCw4ICsxNzI4LDcgQEAKLSAJCXMvXkFSPVxzKmFyL0FSPSAkYXIvOwotIAkJcy9eUkFOTElCPS4qL1JBTkxJQj0gJHJhbmxpYi87Ci0gCQlzL15SQz0uKi9SQz0gJHdpbmRyZXMvOwotLQkJcy9eTUFLRURFUFBST0c9LiokL01BS0VERVBQUk9HPSAkY2MvIGlmICRjYyBlcSAiZ2NjIjsKLS0JCXMvXk1BS0VERVBQUk9HPS4qJC9NQUtFREVQUFJPRz0gJGNjLyBpZiAkZWNjIGVxICJnY2MiIHx8ICRlY2MgZXEgImNsYW5nIjsKLSsJCXMvXk1BS0VERVBQUk9HPS4qJC9NQUtFREVQUFJPRz0gJGNjLzsKLSAJCX0KLSAJcy9eQ0ZMQUc9LiokL0NGTEFHPSAkY2ZsYWdzLzsKLSAJcy9eREVQRkxBRz0uKiQvREVQRkxBRz0kZGVwZmxhZ3MvOwpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9Db25jbHVzaW9uLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvQ29uY2x1c2lvbi5ydGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUwZmE5ZgotLS0gL2Rldi9udWxsCisrKyBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvQ29uY2x1c2lvbi5ydGYKQEAgLTAsMCArMSwyMCBAQAore1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxNTYxXGNvY29hc3VicnRmMjAwCit7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7XGYxXGZuaWxcZmNoYXJzZXQwIEx1Y2lkYUdyYW5kZS1Cb2xkO1xmMlxmbmlsXGZjaGFyc2V0MCBMdWNpZGFHcmFuZGU7CitcZjNcZm5pbFxmY2hhcnNldDAgTW9uYWNvO30KK3tcY29sb3J0Ymw7XHJlZDI1NVxncmVlbjI1NVxibHVlMjU1O30KK3tcKlxleHBhbmRlZGNvbG9ydGJsOzt9CitcbWFyZ2wxNDQwXG1hcmdyMTQ0MFx2aWV3dzEwNTQwXHZpZXdoODQwMFx2aWV3a2luZDAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcZjBcZnMyOCBcY2YwIENvbmdyYXR1bGF0aW9ucyEKK1xmczI0ICAgCitcZjFcYlxmczI4IFB5dGhvbiAkRlVMTF9WRVJTSU9OIGZvciBtYWNPUyAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCitcZjJcYjAgIHdhcyBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkLgorXGZzMjQgXAorXAorT25lIG1vcmUgdGhpbmc6IHRvIHZlcmlmeSB0aGUgaWRlbnRpdHkgb2Ygc2VjdXJlIG5ldHdvcmsgY29ubmVjdGlvbnMsIHRoaXMgUHl0aG9uIG5lZWRzIGEgc2V0IG9mIFNTTCByb290IGNlcnRpZmljYXRlcy4gIFlvdSBjYW4gZG93bmxvYWQgYW5kIGluc3RhbGwgYSBjdXJyZW50IGN1cmF0ZWQgc2V0IGZyb20ge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L2NlcnRpZmkvIn19e1xmbGRyc2x0IHRoZSBDZXJ0aWZpIHByb2plY3R9fSBieSBkb3VibGUtY2xpY2tpbmcgb24gdGhlIAorXGYzIEluc3RhbGwgQ2VydGlmaWNhdGVzCitcZjIgIGljb24gaW4ge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiZmlsZTovL2xvY2FsaG9zdC9BcHBsaWNhdGlvbnMvUHl0aG9uJTIwJFZFUlNJT04vIn19e1xmbGRyc2x0IHRoZSBGaW5kZXIgd2luZG93fX0uICBTZWUge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiZmlsZTovL2xvY2FsaG9zdC9BcHBsaWNhdGlvbnMvUHl0aG9uJTIwJFZFUlNJT04vUmVhZE1lLnJ0ZiJ9fXtcZmxkcnNsdCB0aGUgCitcZjMgUmVhZE1lCitcZjIgIGZpbGV9fSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9MaWNlbnNlLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvTGljZW5zZS5ydGYKaW5kZXggMjA5ODJhNC4uYzZjMzAyOCAxMDA2NDQKLS0tIGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9MaWNlbnNlLnJ0ZgorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL0xpY2Vuc2UucnRmCkBAIC01NCw3ICs1NCw3IEBACiBcYjAgXAogMS4gVGhpcyBMSUNFTlNFIEFHUkVFTUVOVCBpcyBiZXR3ZWVuIHRoZSBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbiAoIlBTRiIpLCBhbmQgdGhlIEluZGl2aWR1YWwgb3IgT3JnYW5pemF0aW9uICgiTGljZW5zZWUiKSBhY2Nlc3NpbmcgYW5kIG90aGVyd2lzZSB1c2luZyB0aGlzIHNvZnR3YXJlICgiUHl0aG9uIikgaW4gc291cmNlIG9yIGJpbmFyeSBmb3JtIGFuZCBpdHMgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uLlwKIFwKLTIuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSBBZ3JlZW1lbnQsIFBTRiBoZXJlYnkgZ3JhbnRzIExpY2Vuc2VlIGEgbm9uZXhjbHVzaXZlLCByb3lhbHR5LWZyZWUsIHdvcmxkLXdpZGUgbGljZW5zZSB0byByZXByb2R1Y2UsIGFuYWx5emUsIHRlc3QsIHBlcmZvcm0gYW5kL29yIGRpc3BsYXkgcHVibGljbHksIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcywgZGlzdHJpYnV0ZSwgYW5kIG90aGVyd2lzZSB1c2UgUHl0aG9uIGFsb25lIG9yIGluIGFueSBkZXJpdmF0aXZlIHZlcnNpb24sIHByb3ZpZGVkLCBob3dldmVyLCB0aGF0IFBTRidzIExpY2Vuc2UgQWdyZWVtZW50IGFuZCBQU0YncyBub3RpY2Ugb2YgY29weXJpZ2h0LCBpLmUuLCAiQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzIFJlc2VydmVkIiBhcmUgcmV0YWluZWQgaW4gUHl0aG9uIGFsb25lIG9yIGluIGFueSBkZXJpdmF0aXZlIHZlcnNpb24gcHJlcGFyZWQgYnkgTGljZW5zZWUuXAorMi4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlIEFncmVlbWVudCwgUFNGIGhlcmVieSBncmFudHMgTGljZW5zZWUgYSBub25leGNsdXNpdmUsIHJveWFsdHktZnJlZSwgd29ybGQtd2lkZSBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgYW5hbHl6ZSwgdGVzdCwgcGVyZm9ybSBhbmQvb3IgZGlzcGxheSBwdWJsaWNseSwgcHJlcGFyZSBkZXJpdmF0aXZlIHdvcmtzLCBkaXN0cmlidXRlLCBhbmQgb3RoZXJ3aXNlIHVzZSBQeXRob24gYWxvbmUgb3IgaW4gYW55IGRlcml2YXRpdmUgdmVyc2lvbiwgcHJvdmlkZWQsIGhvd2V2ZXIsIHRoYXQgUFNGJ3MgTGljZW5zZSBBZ3JlZW1lbnQgYW5kIFBTRidzIG5vdGljZSBvZiBjb3B5cmlnaHQsIGkuZS4sICJDb3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYsIDIwMTcgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb247IEFsbCBSaWdodHMgUmVzZXJ2ZWQiIGFyZSByZXRhaW5lZCBpbiBQeXRob24gYWxvbmUgb3IgaW4gYW55IGRlcml2YXRpdmUgdmVyc2lvbiBwcmVwYXJlZCBieSBMaWNlbnNlZS5cCiBcCiAzLiBJbiB0aGUgZXZlbnQgTGljZW5zZWUgcHJlcGFyZXMgYSBkZXJpdmF0aXZlIHdvcmsgdGhhdCBpcyBiYXNlZCBvbiBvciBpbmNvcnBvcmF0ZXMgUHl0aG9uIG9yIGFueSBwYXJ0IHRoZXJlb2YsIGFuZCB3YW50cyB0byBtYWtlIHRoZSBkZXJpdmF0aXZlIHdvcmsgYXZhaWxhYmxlIHRvIG90aGVycyBhcyBwcm92aWRlZCBoZXJlaW4sIHRoZW4gTGljZW5zZWUgaGVyZWJ5IGFncmVlcyB0byBpbmNsdWRlIGluIGFueSBzdWNoIHdvcmsgYSBicmllZiBzdW1tYXJ5IG9mIHRoZSBjaGFuZ2VzIG1hZGUgdG8gUHl0aG9uLlwKIFwKQEAgLTEzOSw0ICsxMzksNCBAQAogXAogXAogXAotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZiBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgppbmRleCA2N2MwNTZjLi5lYmFiYjI0IDEwMDY0NAotLS0gYS9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCkBAIC0xLDQ3ICsxLDc4IEBACi17XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjE1MDRcY29jb2FzdWJydGY3NTAKK3tccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTU2MVxjb2NvYXN1YnJ0ZjQwMAoge1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO1xmMVxmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyTmV3UFNNVDt9CiB7XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9CiB7XCpcZXhwYW5kZWRjb2xvcnRibDs7fQogXG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3cxNTI0MFx2aWV3aDE1NTQwXHZpZXdraW5kMAogXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKLVxmMFxmczI0IFxjZjAgVGhpcyBwYWNrYWdlIHdpbGwgaW5zdGFsbCBQeXRob24gJEZVTExfVkVSU0lPTiBmb3IgTWFjIE9TIFggJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBmb3IgdGhlIGZvbGxvd2luZyBhcmNoaXRlY3R1cmUocyk6ICRBUkNISVRFQ1RVUkVTLlwKK1xmMFxmczI0IFxjZjAgVGhpcyBwYWNrYWdlIHdpbGwgaW5zdGFsbCBQeXRob24gJEZVTExfVkVSU0lPTiBmb3IgbWFjT1MgJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBmb3IgdGhlIGZvbGxvd2luZyBhcmNoaXRlY3R1cmUocyk6ICRBUkNISVRFQ1RVUkVTLlwKIFwKIFxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAogCi1cYiBcY2YwIFx1bCBcdWxjMCBXaGljaCBpbnN0YWxsZXIgdmFyaWFudCBzaG91bGQgSSB1c2U/CitcYiBcY2YwIFx1bCBcdWxjMCBXaGljaCBpbnN0YWxsZXIgdmFyaWFudCBzaG91bGQgSSB1c2U/IFtDSEFOR0VEIGluIDIuNy4xNV0KIFxiMCBcdWxub25lIFwKIFwKLVB5dGhvbi5vcmcgcHJvdmlkZXMgdHdvIGluc3RhbGxlciB2YXJpYW50cyBmb3IgZG93bmxvYWQ6IG9uZSB0aGF0IGluc3RhbGxzIGEgCisKK1xiICoqTkVXKioKK1xiMCAgV2l0aCBQeXRob24gMi43LjE1LCB0aGUgcHl0aG9uLm9yZyB3ZWJzaXRlIG5vdyBwcm92aWRlcyB0d28gaW5zdGFsbGVyIHZhcmlhbnRzIGZvciBkb3dubG9hZDogb25lIHRoYXQgaW5zdGFsbHMgYSAKK1xpIDY0LWJpdC1vbmx5IAorXGkwIFB5dGhvbiBjYXBhYmxlIG9mIHJ1bm5pbmcgb24gCitcaSBtYWNPUyAxMC45IChNYXZlcmlja3MpCitcaTAgIG9yIGxhdGVyOyBhbmQgb25lIHRoYXQgaW5zdGFsbHMgYSAKIFxpIDY0LWJpdC8zMi1iaXQgSW50ZWwKIFxpMCAgUHl0aG9uIGNhcGFibGUgb2YgcnVubmluZyBvbiAKLVxpIE1hYyBPUyBYIDEwLjYgKFNub3cgTGVvcGFyZCkKLVxpMCAgb3IgbGF0ZXI7IGFuZCBvbmUgdGhhdCBpbnN0YWxscyBhIAotXGkgMzItYml0LW9ubHkgKEludGVsIGFuZCBQUEMpCi1caTAgIFB5dGhvbiBjYXBhYmxlIG9mIHJ1bm5pbmcgb24gCi1caSBNYWMgT1MgWCAxMC41IChMZW9wYXJkKQotXGkwICBvciBsYXRlci4gIFRoaXMgUmVhZE1lIHdhcyBpbnN0YWxsZWQgd2l0aCB0aGUgCitcaSBtYWNPUyAxMC42IChTbm93IExlb3BhcmQpCitcaTAgIG9yIGxhdGVyLiAgKFRoaXMgUmVhZE1lIHdhcyBpbnN0YWxsZWQgd2l0aCB0aGUgCiBcaSAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCi1caTAgIHZhcmlhbnQuICBVbmxlc3MgeW91IGFyZSBpbnN0YWxsaW5nIHRvIGFuIDEwLjUgc3lzdGVtIG9yIHlvdSBuZWVkIHRvIGJ1aWxkIGFwcGxpY2F0aW9ucyB0aGF0IGNhbiBydW4gb24gMTAuNSBzeXN0ZW1zLCB1c2UgdGhlIDEwLjYgdmFyaWFudCBpZiBwb3NzaWJsZS4gIFRoZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgb3BlcmF0aW5nIHN5c3RlbSBmdW5jdGlvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIHN0YXJ0aW5nIHdpdGggMTAuNiBhbmQgeW91IG1heSBzZWUgYmV0dGVyIHBlcmZvcm1hbmNlIHVzaW5nIDY0LWJpdCBtb2RlLiAgQnkgZGVmYXVsdCwgUHl0aG9uIHdpbGwgYXV0b21hdGljYWxseSBydW4gaW4gNjQtYml0IG1vZGUgaWYgeW91ciBzeXN0ZW0gc3VwcG9ydHMgaXQuICBBbHNvIHNlZSAKLVxpIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTAotXGkwICBiZWxvdy4gIFRoZSBQeXRob25zIGluc3RhbGxlZCBieSB0aGVzZSBpbnN0YWxsZXJzIGFyZSBidWlsdCB3aXRoIHByaXZhdGUgY29waWVzIG9mIHNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIG5vdCBpbmNsdWRlZCB3aXRoIG9yIG5ld2VyIHRoYW4gdGhvc2UgaW4gT1MgWCBpdHNlbGYuICBUaGUgbGlzdCBvZiB0aGVzZSBsaWJyYXJpZXMgdmFyaWVzIGJ5IGluc3RhbGxlciB2YXJpYW50IGFuZCBpcyBpbmNsdWRlZCBhdCB0aGUgZW5kIG9mIHRoZSBMaWNlbnNlLnJ0ZiBmaWxlLgotXGIgXHVsIFwKLVwKLVVwZGF0ZSB5b3VyIHZlcnNpb24gb2YgVGNsL1RrIHRvIHVzZSBJRExFIG9yIG90aGVyIFRrIGFwcGxpY2F0aW9ucwotXGIwIFx1bG5vbmUgXAotXAotVG8gdXNlIElETEUgb3Igb3RoZXIgcHJvZ3JhbXMgdGhhdCB1c2UgdGhlIFRraW50ZXIgZ3JhcGhpY2FsIHVzZXIgaW50ZXJmYWNlIHRvb2xraXQsIHlvdSBuZWVkIHRvIGluc3RhbGwgYSBuZXdlciB0aGlyZC1wYXJ0eSB2ZXJzaW9uIG9mIHRoZSAKLVxpIFRjbC9UawotXGkwICBmcmFtZXdvcmtzLiAgVmlzaXQge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb3dubG9hZC9tYWMvdGNsdGsvIn19e1xmbGRyc2x0IGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrL319IGZvciBjdXJyZW50IGluZm9ybWF0aW9uIGFib3V0IHN1cHBvcnRlZCBhbmQgcmVjb21tZW5kZWQgdmVyc2lvbnMgb2YgCi1caSBUY2wvVGsKLVxpMCAgZm9yIHRoaXMgdmVyc2lvbiBvZiBQeXRob24gYW5kIG9mIE1hYyBPUyBYLlwKK1xpMCAgdmFyaWFudC4pICBQcmV2aW91cyBQeXRob24gMi43LnggcmVsZWFzZXMgcHJvdmlkZWQgdGhlIDEwLjYgb3IgbGF0ZXIgaW5zdGFsbGVyIGFuZCBhIDEwLjUgb3IgbGF0ZXIgMzItYml0LW9ubHkgdmFyaWFudC4gSWYgeW91IGFyZSBydW5uaW5nIG9uIG1hY09TIDEwLjkgb3IgbGF0ZXIgYW5kIGlmIHlvdSBoYXZlIG5vIG5lZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBzeXN0ZW1zLCB1c2UgdGhlIDEwLjkgdmFyaWFudC4gIFVzZSB0aGUgMTAuNiB2YXJpYW50IGlmIHlvdSBhcmUgcnVubmluZyBvbiBtYWNPUyAxMC42IHRocm91Z2ggMTAuOCwgaWYgeW91IG5lZWQgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIDIuNy54IHJlbGVhc2VzLCBvciBpZiB5b3Ugd2FudCB0byBwcm9kdWNlIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIHRoYXQgY2FuIHJ1biBvbiBzeXN0ZW1zIGZyb20gMTAuNi4gIFRoZSBQeXRob25zIGluc3RhbGxlZCBieSB0aGVzZSBpbnN0YWxsZXJzIGFyZSBidWlsdCB3aXRoIHByaXZhdGUgY29waWVzIG9mIHNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIG5vdCBpbmNsdWRlZCB3aXRoIG9yIG5ld2VyIHRoYW4gdGhvc2UgaW4gbWFjT1MgaXRzZWxmLiAgVGhlIGxpc3Qgb2YgdGhlc2UgbGlicmFyaWVzIHZhcmllcyBieSBpbnN0YWxsZXIgdmFyaWFudCBhbmQgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgCitcZjEgTGljZW5zZS5ydGYKK1xmMCAgZmlsZS5cCiAKIFxiIFx1bCBcCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKLVxjZjAgUGFja2FnZXMgaW5zdGFsbGVkIHdpdGggdGhlIHN5c3RlbSBQeXRob24gMi43IGFyZSBubyBsb25nZXIgc2VhcmNoZWQgZm9yXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCi1cY2YwIFx1bG5vbmUgW0NIQU5HRUQgZm9yIFB5dGhvbiAyLjcuMTNdCi1cYjAgXAorQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMX1tDSEFOR0VEIGluIDIuNy4xNV1cCisKK1xiMCBcdWxub25lIFwKK1RoaXMgdmFyaWFudCBvZiBQeXRob24gMi43IG5vdyBpbmNsdWRlcyBpdHMgb3duIHByaXZhdGUgY29weSBvZiBPcGVuU1NMIDEuMC4yLiAgVW5saWtlIHByZXZpb3VzIHJlbGVhc2VzLCB0aGUgZGVwcmVjYXRlZCBBcHBsZS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcyBhcmUgbm8gbG9uZ2VyIHVzZWQuICBUaGlzIGFsc28gbWVhbnMgdGhhdCB0aGUgdHJ1c3QgY2VydGlmaWNhdGVzIGluIHN5c3RlbSBhbmQgdXNlciBrZXljaGFpbnMgbWFuYWdlZCBieSB0aGUgCitcaSBLZXljaGFpbiBBY2Nlc3MgCitcaTAgYXBwbGljYXRpb24gYW5kIHRoZSAKK1xpIHNlY3VyaXR5CitcaTAgIGNvbW1hbmQgbGluZSB1dGlsaXR5IGFyZSBubyBsb25nZXIgdXNlZCBhcyBkZWZhdWx0cyBieSB0aGUgUHl0aG9uIAorXGYxIHNzbAorXGYwICBtb2R1bGUuICBBIHNhbXBsZSBjb21tYW5kIHNjcmlwdCBpcyBpbmNsdWRlZCBpbiAKK1xmMSAvQXBwbGljYXRpb25zL1B5dGhvbiAyLjcKK1xmMCAgdG8gaW5zdGFsbCBhIGN1cmF0ZWQgYnVuZGxlIG9mIGRlZmF1bHQgcm9vdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgdGhpcmQtcGFydHkgCitcZjEgY2VydGlmaQorXGYwICBwYWNrYWdlICh7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2NlcnRpZmkifX17XGZsZHJzbHQgaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jZXJ0aWZpfX0pLiAgQ2xpY2sgb24gCitcZjEgSW5zdGFsbCBDZXJ0aWZpY2F0ZXMKK1xmMCAgdG8gcnVuIGl0LiAgSWYgeW91IGNob29zZSB0byB1c2UgCitcZjEgY2VydGlmaQorXGYwICwgeW91IHNob3VsZCBjb25zaWRlciBzdWJzY3JpYmluZyB0byB0aGV7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL2NlcnRpZmkuaW8vZW4vbGF0ZXN0LyJ9fXtcZmxkcnNsdCAgcHJvamVjdCdzIGVtYWlsIHVwZGF0ZSBzZXJ2aWNlfX0gdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgY2VydGlmaWNhdGUgYnVuZGxlIGlzIHVwZGF0ZWQuXAorXAorVGhlIGJ1bmRsZWQgCitcZjEgcGlwCitcZjAgIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAyLjcgaW5zdGFsbGVyIGhhcyBpdHMgb3duIGRlZmF1bHQgY2VydGlmaWNhdGUgc3RvcmUgZm9yIHZlcmlmeWluZyBkb3dubG9hZCBjb25uZWN0aW9ucy5cCitcCisKK1xiIFx1bCBVc2luZyBJRExFIG9yIG90aGVyIFRrIGFwcGxpY2F0aW9ucyBbTkVXL0NIQU5HRUQgaW4gMi43LjE1XSAKK1xiMCBcdWxub25lIFwKK1wKK1RoZSAxMC45KyBpbnN0YWxsZXIgdmFyaWFudCBjb21lcyB3aXRoIGl0cyBvd24gcHJpdmF0ZSB2ZXJzaW9uIG9mIFRjbC9UayA4LjYuIEl0IGRvZXMgbm90IHVzZSBzeXN0ZW0tc3VwcGxpZWQgb3IgdGhpcmQtcGFydHkgc3VwcGxpZWQgdmVyc2lvbnMgb2YgVGNsL1RrLlwKK1wKK0ZvciB0aGUgMTAuNisgdmFyaWFudCwgeW91IGNvbnRpbnVlIHRvIG5lZWQgdG8gaW5zdGFsbCBhIG5ld2VyIHRoaXJkLXBhcnR5IHZlcnNpb24gb2YgdGhlIAorXGkgVGNsL1RrCitcaTAgIDguNSAobm90IDguNikgZnJhbWV3b3JrcyB0byB1c2UgSURMRSBvciBvdGhlciBwcm9ncmFtcyB0aGF0IHVzZSB0aGUgVGtpbnRlciBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgdG9vbGtpdC4gIFZpc2l0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL21hYy90Y2x0ay99fSBmb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zIG9mIAorXGkgVGNsL1RrCitcaTAgIGZvciB0aGlzIHZlcnNpb24gb2YgUHl0aG9uIGFuZCBvZiBtYWNPUy5cCisKK1xiIFx1bCBcCitCaW5hcnkgaW5zdGFsbGVyIHN1cHBvcnQgZm9yIE1hYyBPUyBYIDEwLjUgYW5kIGVhcmxpZXIgZGlzY29udGludWVkIFtDSEFOR0VEIGZvciBQeXRob24gMi43LjE1XQorXGIwIFx1bG5vbmUgXAorXAorQXMgb2YgUHl0aG9uIDIuNy4xNSwgYmluYXJ5IGluc3RhbGxlcnMgZnJvbSBweXRob24ub3JnIG5vIGxvbmdlciBzdXBwb3J0IE1hYyBPUyBYIDEwLjUgKExlb3BhcmQpIHN5c3RlbXMuICAgQmluYXJ5IGluc3RhbGxlciBzdXBwb3J0IGZvciBNYWMgT1MgWCAxMC4zLjkgKFBhbnRoZXIpIGFuZCAxMC40LnggKFRpZ2VyKSBzeXN0ZW1zIHdhcyBwcmV2aW91c2x5IGRyb3BwZWQgaW4gUHl0aG9uIDIuNy45LiAgTWFjIE9TIFggMTAuNSB3YXMgb3JpZ2luYWxseSByZWxlYXNlZCBieSBBcHBsZSBpbiAyMDA3IGFuZCBsYXN0IHVwZGF0ZWQgaW4gMjAwOSBhbmQgd2FzIHRoZSBsYXN0IE9TIFggcmVsZWFzZSBmb3IgUFBDIG1hY2hpbmVzIChHNCBhbmQgRzUpLiAgSWYgbmVlZGVkLCBpdCBpcyBzdGlsbCBwb3NzaWJsZSB0byBidWlsZCBQeXRob24gZnJvbSBzb3VyY2UgZm9yIDEwLjMuOSwgMTAuNCwgb3IgMTAuNS5cCitcCisKK1xiIFx1bCBQYWNrYWdlcyBpbnN0YWxsZWQgd2l0aCB0aGUgc3lzdGVtIFB5dGhvbiAyLjcgYXJlIG5vIGxvbmdlciBzZWFyY2hlZCBmb3IgW0NIQU5HRUQgZm9yIFB5dGhvbiAyLjcuMTNdCitcYjAgXHVsbm9uZSBcCiBcCiBBcyBvZiBQeXRob24gMi43LjAsIHVzZXItaW5zdGFsbGVkIFB5dGhvbiAyLjcgdmVyc2lvbnMgZnJvbSBweXRob24ub3JnIGluc3RhbGxlcnMgYWRkZWQgdGhlIHN5c3RlbS13aWRlIHNpdGUtcGFja2FnZXMgZGlyZWN0b3J5IGZvciB0aGUgQXBwbGUtc3VwcGxpZWQgUHl0aG9uIDIuNyB0byB0aGUgZW5kIG9mIHRoZWlyIHNlYXJjaCBwYXRoLiAgVGhpcyBtZWFudCB0aGF0IHBhY2thZ2VzIGluc3RhbGxlZCB3aXRoIHRoZSBzeXN0ZW0gUHl0aG9uIDIuNyBjb3VsZCBhbHNvIGJlIHVzZWQgYnkgdGhlIHVzZXItaW5zdGFsbGVkIFB5dGhvbiAyLjcuICBXaGlsZSBzb21ldGltZXMgY29udmVuaWVudCwgdGhpcyBhbHNvIG9mdGVuIGNhdXNlZCBjb25mdXNpb24gd2l0aCB0aGUgaW1wbGljaXQgY291cGxpbmcgYmV0d2VlbiB0aGUgdHdvIFB5dGhvbiBpbnN0YW5jZXMuICBTZXBhcmF0ZWx5LCBhcyBvZiBtYWNPUyAxMC4xMiwgQXBwbGUgY2hhbmdlZCB0aGUgbGF5b3V0IG9mIHRoZSBzeXN0ZW0gc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcnksIAogXGYxIC9MaWJyYXJ5L1B5dGhvbi8yLjcvc2l0ZS1wYWNrYWdlcwpAQCAtNTMsMzYgKzg0LDI3IEBACiBcZjEgc3lzLnBhdGgKIFxmMCAuICBJZiB5b3UgYXJlIHVzaW5nIGEgcGFja2FnZSB3aXRoIGJvdGggYSB1c2VyLWluc3RhbGxlZCBQeXRob24gMi43IGFuZCB0aGUgc3lzdGVtIFB5dGhvbiAyLjcsIHlvdSB3aWxsIG5vdyBuZWVkIHRvIGVuc3VyZSB0aGF0IHNlcGFyYXRlIGNvcGllcyBvZiB0aGUgcGFja2FnZSBhcmUgaW5zdGFsbGVkIGZvciBlYWNoIGluc3RhbmNlLlwKIFwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAogCi1cYiBcY2YwIFx1bCBJbnN0YWxsaW5nIG9uIE9TIFggMTAuOCAoTW91bnRhaW4gTGlvbikgb3IgbGF0ZXIgc3lzdGVtc1wKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAotXGNmMCBcdWxub25lIFtDSEFOR0VEIGZvciBQeXRob24gMi43LjldCi1cYjAgXAorXGIgXHVsIEluc3RhbGxpbmcgb24gT1MgWCAxMC44IChNb3VudGFpbiBMaW9uKSBvciBsYXRlciBzeXN0ZW1zIFtDSEFOR0VEIGZvciBQeXRob24gMi43LjldCitcYjAgXHVsbm9uZSBcCiBcCi1BcyBvZiBQeXRob24gMi43LjksIGluc3RhbGxlciBwYWNrYWdlcyBmcm9tIHB5dGhvbi5vcmcgYXJlIG5vdyBjb21wYXRpYmxlIHdpdGggdGhlIEdhdGVrZWVwZXIgc2VjdXJpdHkgZmVhdHVyZSBpbnRyb2R1Y2VkIGluIE9TIFggMTAuOC4gICBEb3dubG9hZGVkIHBhY2thZ2VzIGNhbiBub3cgYmUgZGlyZWN0bHkgaW5zdGFsbGVkIGJ5IGRvdWJsZS1jbGlja2luZyB3aXRoIHRoZSBkZWZhdWx0IHN5c3RlbSBzZWN1cml0eSBzZXR0aW5ncy4gIFB5dGhvbi5vcmcgaW5zdGFsbGVyIHBhY2thZ2VzIGZvciBPUyBYIGFyZSBzaWduZWQgd2l0aCB0aGUgRGV2ZWxvcGVyIElEIG9mIHRoZSBidWlsZGVyLCBhcyBpZGVudGlmaWVkIG9uIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCB0aGUgZG93bmxvYWQgcGFnZX19IGZvciB0aGlzIHJlbGVhc2UuICBUbyBpbnNwZWN0IHRoZSBkaWdpdGFsIHNpZ25hdHVyZSBvZiB0aGUgcGFja2FnZSwgY2xpY2sgb24gdGhlIGxvY2sgaWNvbiBpbiB0aGUgdXBwZXIgcmlnaHQgY29ybmVyIG9mIHRoZSAKK0FzIG9mIFB5dGhvbiAyLjcuOSwgaW5zdGFsbGVyIHBhY2thZ2VzIGZyb20gcHl0aG9uLm9yZyBhcmUgbm93IGNvbXBhdGlibGUgd2l0aCB0aGUgR2F0ZWtlZXBlciBzZWN1cml0eSBmZWF0dXJlIGludHJvZHVjZWQgaW4gT1MgWCAxMC44LiAgIERvd25sb2FkZWQgcGFja2FnZXMgY2FuIG5vdyBiZSBkaXJlY3RseSBpbnN0YWxsZWQgYnkgZG91YmxlLWNsaWNraW5nIHdpdGggdGhlIGRlZmF1bHQgc3lzdGVtIHNlY3VyaXR5IHNldHRpbmdzLiAgUHl0aG9uLm9yZyBpbnN0YWxsZXIgcGFja2FnZXMgZm9yIG1hY09TIGFyZSBzaWduZWQgd2l0aCB0aGUgRGV2ZWxvcGVyIElEIG9mIHRoZSBidWlsZGVyLCBhcyBpZGVudGlmaWVkIG9uIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCB0aGUgZG93bmxvYWQgcGFnZX19IGZvciB0aGlzIHJlbGVhc2UuICBUbyBpbnNwZWN0IHRoZSBkaWdpdGFsIHNpZ25hdHVyZSBvZiB0aGUgcGFja2FnZSwgY2xpY2sgb24gdGhlIGxvY2sgaWNvbiBpbiB0aGUgdXBwZXIgcmlnaHQgY29ybmVyIG9mIHRoZSAKIFxpIEluc3RhbGwgUHl0aG9uCiBcaTAgIGluc3RhbGxlciB3aW5kb3cuICBSZWZlciB0byBBcHBsZVwnOTJzIHN1cHBvcnQgcGFnZXMgZm9yIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHA6Ly9zdXBwb3J0LmFwcGxlLmNvbS9rYi9odDUyOTAifX17XGZsZHJzbHQgbW9yZSBpbmZvcm1hdGlvbiBvbiBHYXRla2VlcGVyfX0uXAogXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCiAKLVxiIFxjZjAgXHVsIFNpbXBsaWZpZWQgd2ViLWJhc2VkIGluc3RhbGxzXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCi1cY2YwIFx1bG5vbmUgW05FVyBmb3IgUHl0aG9uIDIuNy45XQotXGIwIFwKK1xiIFx1bCBTaW1wbGlmaWVkIHdlYi1iYXNlZCBpbnN0YWxscyBbTkVXIGZvciBQeXRob24gMi43LjldCitcYjAgXHVsbm9uZSBcCiBcCiBXaXRoIHRoZSBjaGFuZ2UgdG8gdGhlIG5ld2VyIGZsYXQgZm9ybWF0IGluc3RhbGxlciBwYWNrYWdlLCB0aGUgZG93bmxvYWQgZmlsZSBub3cgaGFzIGEgCiBcZjEgLnBrZwogXGYwICBleHRlbnNpb24gYXMgaXQgaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeSB0byBlbWJlZCB0aGUgaW5zdGFsbGVyIHdpdGhpbiBhIGRpc2sgaW1hZ2UgKAogXGYxIC5kbWcKLVxmMCApIGNvbnRhaW5lci4gICBJZiB5b3UgZG93bmxvYWQgdGhlIFB5dGhvbiBpbnN0YWxsZXIgdGhyb3VnaCBhIHdlYiBicm93c2VyLCB0aGUgT1MgWCBpbnN0YWxsZXIgYXBwbGljYXRpb24gbWF5IG9wZW4gYXV0b21hdGljYWxseSB0byBhbGxvdyB5b3UgdG8gcGVyZm9ybSB0aGUgaW5zdGFsbC4gIElmIHlvdXIgYnJvd3NlciBzZXR0aW5ncyBkbyBub3QgYWxsb3cgYXV0b21hdGljIG9wZW4sIGRvdWJsZSBjbGljayBvbiB0aGUgZG93bmxvYWRlZCBpbnN0YWxsZXIgZmlsZS5cCitcZjAgKSBjb250YWluZXIuICAgSWYgeW91IGRvd25sb2FkIHRoZSBQeXRob24gaW5zdGFsbGVyIHRocm91Z2ggYSB3ZWIgYnJvd3NlciwgdGhlIG1hY09TIGluc3RhbGxlciBhcHBsaWNhdGlvbiBtYXkgb3BlbiBhdXRvbWF0aWNhbGx5IHRvIGFsbG93IHlvdSB0byBwZXJmb3JtIHRoZSBpbnN0YWxsLiAgSWYgeW91ciBicm93c2VyIHNldHRpbmdzIGRvIG5vdCBhbGxvdyBhdXRvbWF0aWMgb3BlbiwgZG91YmxlIGNsaWNrIG9uIHRoZSBkb3dubG9hZGVkIGluc3RhbGxlciBmaWxlLlwKIFwKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAogCi1cYiBcY2YwIFx1bCBOZXcgSW5zdGFsbGF0aW9uIE9wdGlvbnMgYW5kIERlZmF1bHRzXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCi1cY2YwIFx1bG5vbmUgW05FVyBmb3IgUHl0aG9uIDIuNy45XQotXGIwIFwKK1xiIFx1bCBOZXcgSW5zdGFsbGF0aW9uIE9wdGlvbnMgYW5kIERlZmF1bHRzIFtORVcgZm9yIFB5dGhvbiAyLjcuOV0KK1xiMCBcdWxub25lIFwKIFwKIFRoZSBQeXRob24gaW5zdGFsbGVyIG5vdyBpbmNsdWRlcyBhbiBvcHRpb24gdG8gYXV0b21hdGljYWxseSBpbnN0YWxsIG9yIHVwZ3JhZGUgCiBcZjEgcGlwCkBAIC05Niw3NCArMTE4LDggQEAKIFxpIFJlbGVhc2UgTm90ZXMKIFxpMCAgbGluayBmb3IgdGhpcyByZWxlYXNlIGF0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy99fS5cCiBcCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKIAotXGIgXGNmMCBcdWwgQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCi1cY2YwIFx1bG5vbmUgW0NIQU5HRUQgZm9yIFB5dGhvbiAyLjcuOV0KLVxiMCBcCi1cCi1QeXRob24gMi43LjkgaW5jbHVkZXMgYSBudW1iZXIgb2YgbmV0d29yayBzZWN1cml0eSBlbmhhbmNlbWVudHMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIGluY2x1c2lvbiBpbiBQeXRob24gMi43IG1haW50ZW5hbmNlIHJlbGVhc2VzLiAge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3Ni8ifX17XGZsZHJzbHQgUEVQIDQ3Nn19IGNoYW5nZXMgc2V2ZXJhbCBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZXMsIGxpa2UgCi1caSBodHRwbGliCi1caTAgLCAKLVxpIHVybGxpYjIKLVxpMCAsIGFuZCAKLVxpIHhtbHJwY2xpYgotXGkwICwgdG8gYnkgZGVmYXVsdCB2ZXJpZnkgY2VydGlmaWNhdGVzIHByZXNlbnRlZCBieSBzZXJ2ZXJzIG92ZXIgc2VjdXJlIChUTFMpIGNvbm5lY3Rpb25zLiAgVGhlIHZlcmlmaWNhdGlvbiBpcyBwZXJmb3JtZWQgYnkgdGhlIE9wZW5TU0wgbGlicmFyaWVzIHRoYXQgUHl0aG9uIGlzIGxpbmtlZCB0by4gIFByaW9yIHRvIDIuNy45LCB0aGUgcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIHNoaXBwZWQgd2l0aCBPUyBYLiAgT1MgWCBwcm92aWRlcyBhIG11bHRpcGxlIGxldmVsIHNlY3VyaXR5IGZyYW1ld29yayB0aGF0IHN0b3JlcyB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKLVxpIEtleWNoYWluIEFjY2VzcyAKLVxpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAotXGkgc2VjdXJpdHkKLVxpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkuXAotXAotRm9yIE9TIFggMTAuNSwgQXBwbGUgcHJvdmlkZXMgCi1caSBPcGVuU1NMIDAuOS43Ci1caTAgIGxpYnJhcmllcy4gIFRoaXMgdmVyc2lvbiBvZiBBcHBsZSdzIE9wZW5TU0wgCi1cYiBkb2VzIG5vdAotXGIwICB1c2UgdGhlIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrLCBldmVuIHdoZW4gdXNlZCBvbiBuZXdlciB2ZXJzaW9ucyBvZiBPUyBYLiAgSW5zdGVhZCBpdCBjb25zdWx0cyBhIHRyYWRpdGlvbmFsIE9wZW5TU0wgY29uY2F0ZW5hdGVkIGNlcnRpZmljYXRlIGZpbGUgKAotXGkgY2FmaWxlCi1caTAgKSBvciBjZXJ0aWZpY2F0ZSBkaXJlY3RvcnkgKAotXGkgY2FwYXRoCi1caTAgKSwgbG9jYXRlZCBpbiAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gIFRoZXNlIGRpcmVjdG9yaWVzIGFyZSB0eXBpY2FsbHkgZW1wdHkgYW5kIG5vdCBtYW5hZ2VkIGJ5IE9TIFg7IHlvdSBtdXN0IG1hbmFnZSB0aGVtIHlvdXJzZWxmIG9yIHN1cHBseSB5b3VyIG93biBTU0wgY29udGV4dHMuICBPcGVuU1NMIDAuOS43IGlzIG9ic29sZXRlIGJ5IGN1cnJlbnQgc2VjdXJpdHkgc3RhbmRhcmRzLCBsYWNraW5nIGEgbnVtYmVyIG9mIGltcG9ydGFudCBmZWF0dXJlcyBmb3VuZCBpbiBsYXRlciB2ZXJzaW9ucy4gIEFtb25nIHRoZSBwcm9ibGVtcyB0aGlzIGNhdXNlcyBpcyB0aGUgaW5hYmlsaXR5IHRvIHZlcmlmeSBoaWdoZXItc2VjdXJpdHkgY2VydGlmaWNhdGVzIG5vdyB1c2VkIGJ5IHB5dGhvbi5vcmcgc2VydmljZXMsIGluY2x1ZGluZyAKLVxpIHR7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpIn19e1xmbGRyc2x0IGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4LCBQeVBJfX0KLVxpMCAuICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIGFzIG9mIDIuNy45IHRoZSAKLVxpIDEwLjUrIDMyLWJpdC1vbmx5IHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBpcyBsaW5rZWQgd2l0aCBhIHByaXZhdGUgY29weSBvZiAKLVxpIE9wZW5TU0wgMS4wCi1caTAgOyBpdCBjb25zdWx0cyB0aGUgc2FtZSBkZWZhdWx0IGNlcnRpZmljYXRlIGRpcmVjdG9yeSwgCi1cZjEgL1N5c3RlbS9MaWJyYXJ5L09wZW5TU0wKLVxmMCAuICAgQXMgYmVmb3JlLCBpdCBpcyBzdGlsbCBuZWNlc3NhcnkgdG8gbWFuYWdlIGNlcnRpZmljYXRlcyB5b3Vyc2VsZiB3aGVuIHlvdSB1c2UgdGhpcyBQeXRob24gdmFyaWFudCBhbmQsIHdpdGggY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIG5vdyBlbmFibGVkIGJ5IGRlZmF1bHQsIHlvdSBtYXkgbm93IG5lZWQgdG8gdGFrZSBhZGRpdGlvbmFsIHN0ZXBzIHRvIGVuc3VyZSB5b3VyIFB5dGhvbiBwcm9ncmFtcyBoYXZlIGFjY2VzcyB0byBDQSBjZXJ0aWZpY2F0ZXMgeW91IHRydXN0LiAgSWYgeW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IHRvIGJ1aWxkIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIHdpdGggdGhpcmQtcGFydHkgdG9vbHMgbGlrZSB7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5MmFwcC8ifX17XGZsZHJzbHQgCi1cZjEgcHkyYXBwfX0sIHlvdSBtYXkgbm93IG5lZWQgdG8gYnVuZGxlIENBIGNlcnRpZmljYXRlcyBpbiB0aGVtIG9yIG90aGVyd2lzZSBzdXBwbHkgbm9uLWRlZmF1bHQgU1NMIGNvbnRleHRzLlwKLVwKLUZvciBPUyBYIDEwLjYrLCBBcHBsZSBhbHNvIHByb3ZpZGVzIAotXGkgT3BlblNTTAotXGkwICAKLVxpIDAuOS44IGxpYnJhcmllcwotXGkwIC4gIEFwcGxlJ3MgMC45LjggdmVyc2lvbiBpbmNsdWRlcyBhbiBpbXBvcnRhbnQgYWRkaXRpb25hbCBmZWF0dXJlOiBpZiBhIGNlcnRpZmljYXRlIGNhbm5vdCBiZSB2ZXJpZmllZCB1c2luZyB0aGUgbWFudWFsbHkgYWRtaW5pc3RlcmVkIGNlcnRpZmljYXRlcyBpbiAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwICwgdGhlIGNlcnRpZmljYXRlcyBtYW5hZ2VkIGJ5IHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrIEluIHRoZSB1c2VyIGFuZCBzeXN0ZW0ga2V5Y2hhaW5zIGFyZSBhbHNvIGNvbnN1bHRlZCAodXNpbmcgQXBwbGUgcHJpdmF0ZSBBUElzKS4gIEZvciB0aGlzIHJlYXNvbiwgZm9yIDIuNy45IHRoZSAKLVxpIDY0LWJpdC8zMi1iaXQgMTAuNisgcHl0aG9uLm9yZyB2YXJpYW50Ci1caTAgIGNvbnRpbnVlcyB0byBiZSBkeW5hbWljYWxseSBsaW5rZWQgd2l0aCBBcHBsZSdzIE9wZW5TU0wgMC45Ljggc2luY2UgaXQgd2FzIGZlbHQgdGhhdCB0aGUgbG9zcyBvZiB0aGUgc3lzdGVtLXByb3ZpZGVkIGNlcnRpZmljYXRlcyBhbmQgbWFuYWdlbWVudCB0b29scyBvdXR3ZWlnaHMgdGhlIGFkZGl0aW9uYWwgc2VjdXJpdHkgZmVhdHVyZXMgcHJvdmlkZWQgYnkgbmV3ZXIgdmVyc2lvbnMgb2YgT3BlblNTTC4gIFRoaXMgd2lsbCBsaWtlbHkgY2hhbmdlIGluIGZ1dHVyZSByZWxlYXNlcyBvZiB0aGUgcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGFzIEFwcGxlIGhhcyBkZXByZWNhdGVkIHVzZSBvZiB0aGUgc3lzdGVtLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzLiAgSWYgeW91IGRvIG5lZWQgZmVhdHVyZXMgZnJvbSBuZXdlciB2ZXJzaW9ucyBvZiBPcGVuU1NMLCB0aGVyZSBhcmUgdGhpcmQtcGFydHkgT3BlblNTTCB3cmFwcGVyIHBhY2thZ2VzIGF2YWlsYWJsZSB0aHJvdWdoIAotXGkgUHlQSQotXGkwIC5cCi1cCi1UaGUgYnVuZGxlZCAKLVxmMSBwaXAKLVxmMCAgaW5jbHVkZWQgd2l0aCAyLjcuOSBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCi0KLVxiIFxjZjAgXHVsIFwKLUJpbmFyeSBpbnN0YWxsZXIgc3VwcG9ydCBmb3IgT1MgWCAxMC40IGFuZCAxMC4zLjkgZGlzY29udGludWVkXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCi1cY2YwIFx1bG5vbmUgW0NIQU5HRUQgZm9yIFB5dGhvbiAyLjcuOV0KLVxiMCBcCi1cCi1BcyBwcmV2aW91c2x5IGFubm91bmNlZCwgYmluYXJ5IGluc3RhbGxlcnMgZm9yIFB5dGhvbiAyLjcuOSBmcm9tIHB5dGhvbi5vcmcgbm8gbG9uZ2VyIHN1cHBvcnQgTWFjIE9TIFggMTAuMy45IChQYW50aGVyKSBhbmQgMTAuNC54IChUaWdlcikgc3lzdGVtcy4gIFRoZXNlIHN5c3RlbXMgd2VyZSBsYXN0IHVwZGF0ZWQgYnkgQXBwbGUgaW4gMjAwNSBhbmQgMjAwNy4gIEFzIG9mIDIuNy45LCB0aGUgMzItYml0LW9ubHkgaW5zdGFsbGVyIHN1cHBvcnRzIFBQQyBhbmQgSW50ZWwgTWFjcyBydW5uaW5nIE9TIFggMTAuNSAoTGVvcGFyZCkuICAxMC41IHdhcyB0aGUgbGFzdCBPUyBYIHJlbGVhc2UgZm9yIFBQQyBtYWNoaW5lcyAoRzQgYW5kIEc1KS4gIFRoZSA2NC0vMzItYml0IGluc3RhbGxlciBjb25maWd1cmF0aW9uIHJlbWFpbnMgdW5jaGFuZ2VkIGFuZCBzaG91bGQgbm9ybWFsbHkgYmUgdXNlZCBvbiBPUyBYIDEwLjYgKFNub3cgTGVvcGFyZCkgYW5kIGxhdGVyIHN5c3RlbXMuICBUaGlzIGFsaWducyBQeXRob24gMi43LnggaW5zdGFsbGVyIGNvbmZpZ3VyYXRpb25zIHdpdGggdGhvc2UgY3VycmVudGx5IHByb3ZpZGVkIHdpdGggUHl0aG9uIDMueC4gIElmIG5lZWRlZCwgaXQgaXMgc3RpbGwgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIGZyb20gc291cmNlIGZvciAxMC4zLjkgYW5kIDEwLjQuXAotXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsXHBhcnRpZ2h0ZW5mYWN0b3IwCi0KLVxiIFxjZjAgXHVsIFB5dGhvbiAzIGFuZCBQeXRob24gMiBDby1leGlzdGVuY2VcCitcYiBcdWwgUHl0aG9uIDMgYW5kIFB5dGhvbiAyIENvLWV4aXN0ZW5jZVwKIAogXGIwIFx1bG5vbmUgXAogUHl0aG9uLm9yZyBQeXRob24gMi43IGFuZCAzLnggdmVyc2lvbnMgY2FuIGJvdGggYmUgaW5zdGFsbGVkIG9uIHlvdXIgc3lzdGVtIGFuZCB3aWxsIG5vdCBjb25mbGljdC4gIFB5dGhvbiAyLjcgY29tbWFuZCBuYW1lcyBjb250YWluIGEgMiBvciBubyBkaWdpdDogCkBAIC0xOTAsNiArMTQ2LDkgQEAKIFxmMSBpZGxlMwogXGYwICwgCiBcZjEgcGlwMwotXGYwICwgZXRjLlwKK1xmMCAsIGV0Yy4gIEFsc28sIGluc3RhbGxpbmcgYSBweXRob24ub3JnIFB5dGhvbiAyLjcgZG9lcyBub3QgYWx0ZXIgb3IgcmVtb3ZlIGFueSBBcHBsZS1zdXBwbGllZCBzeXN0ZW0gUHl0aG9ucywgZm91bmQgaW4gCitcZjEgL3Vzci9iaW4KK1xmMCAuXAorXAogXAogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCmluZGV4IGVhMTVlMGIuLmZjZjllMDQgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgpAQCAtMSwzNyArMSwyOCBAQAote1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxMzQzXGNvY29hc3VicnRmMTYwCit7XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjE1NjFcY29jb2FzdWJydGY0MDAKIFxjb2NvYXNjcmVlbmZvbnRzMXtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllck5ld1BTTVQ7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQotXHBhcGVydzExOTA1XHBhcGVyaDE2ODM3XG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3cxMTE4MFx2aWV3aDEwODYwXHZpZXdraW5kMAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MAore1wqXGV4cGFuZGVkY29sb3J0Ymw7O30KK1xwYXBlcncxMTkwNVxwYXBlcmgxNjgzN1xtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTMzNjBcdmlld2gxMDkyMFx2aWV3a2luZDAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAogCiBcZjBcZnMyNCBcY2YwIFRoaXMgcGFja2FnZSB3aWxsIGluc3RhbGwgCiBcYiBQeXRob24gJEZVTExfVkVSU0lPTgogXGIwICBmb3IgCi1cYiBNYWMgT1MgWCAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCitcYiBtYWNPUyAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCiBcYjAgLlwKLVwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKK1xjZjAgXAogCi1cYiBQeXRob24gZm9yIE1hYyBPUyBYCi1cYjAgIGNvbnNpc3RzIG9mIHRoZSBQeXRob24gcHJvZ3JhbW1pbmcgbGFuZ3VhZ2UgaW50ZXJwcmV0ZXIsIHBsdXMgYSBzZXQgb2YgcHJvZ3JhbXMgdG8gYWxsb3cgZWFzeSBhY2Nlc3MgdG8gaXQgZm9yIE1hYyBPUyBYIHVzZXJzIGluY2x1ZGluZyBhbiBpbnRlZ3JhdGVkIGRldmVsb3BtZW50IGVudmlyb25tZW50IAorXGIgUHl0aG9uIGZvciBtYWNPUworXGIwICBjb25zaXN0cyBvZiB0aGUgUHl0aG9uIHByb2dyYW1taW5nIGxhbmd1YWdlIGludGVycHJldGVyLCBwbHVzIGEgc2V0IG9mIHByb2dyYW1zIHRvIGFsbG93IGVhc3kgYWNjZXNzIHRvIGl0IGZvciBtYWNPUyB1c2VycyBpbmNsdWRpbmcgYW4gaW50ZWdyYXRlZCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCAKIFxiIElETEUKIFxiMCAuXAogXAogCi1cYiBORVcgZm9yIFB5dGhvbiAyLjcuOTogCi1cYjAgVGhpcyBwYWNrYWdlIGluc3RhbGxzIGEgdmVyc2lvbiBvZiAKLVxmMSBwaXAKLVxmMCAsIHRoZSByZWNvbW1lbmRlZCB0b29sIGZvciBpbnN0YWxsaW5nIGFuZCBtYW5hZ2luZyBQeXRob24gcGFja2FnZXMuICAgVHlwZSAKLVxmMSBwaXAyLjcgLS1oZWxwCi1cZjAgIGZvciBhbiBvdmVydmlldy4gIDIuNy45IGFsc28gaW5jbHVkZXMgYSBudW1iZXIgb2YgbmV0d29yayBzZWN1cml0eSBlbmhhbmNlbWVudHMgdGhhdCBtYXkgcmVxdWlyZSBjaGFuZ2VzIHRvIHlvdXIgUHl0aG9uIGFwcGxpY2F0aW9ucy4gIFNlZSB0aGUgCi1cZjEgUmVhZE1lCi1cZjAgIGZpbGUgYW5kIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vZG9jcy5weXRob24ub3JnLzIvd2hhdHNuZXcvMi43Lmh0bWwjbmV3LWZlYXR1cmVzLWFkZGVkLXRvLXB5dGhvbi0yLTctbWFpbnRlbmFuY2UtcmVsZWFzZXMifX17XGZsZHJzbHQgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9ufX0gZm9yIG1vcmUgaW5mb3JtYXRpb24uXAotXAotCi1cYiBJTVBPUlRBTlQ6Ci1cYjAgIAotXGIgSURMRQotXGIwICBhbmQgb3RoZXIgcHJvZ3JhbXMgdXNpbmcgdGhlIAotXGIgdGtpbnRlcgotXGIwICBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UgdG9vbGtpdCByZXF1aXJlIHNwZWNpZmljIHZlcnNpb25zIG9mIHRoZSAKLVxiIFRjbC9UawotXGIwICBwbGF0Zm9ybSBpbmRlcGVuZGVudCB3aW5kb3dpbmcgdG9vbGtpdC4gIFZpc2l0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL21hYy90Y2x0ay99fSBmb3IgY3VycmVudCBpbmZvcm1hdGlvbiBvbiBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zIG9mIFRjbC9UayBmb3IgdGhpcyB2ZXJzaW9uIG9mIFB5dGhvbiBhbmQgTWFjIE9TIFgufQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK1xiIE5FVyBpbiAyLjcuMTU6IAorXGIwIHR3byBpbnN0YWxsZXIgdmFyaWFudHMgKDEwLjkrIDY0LWJpdC1vbmx5LCAxMC42KyA2NC0vMzItYml0KSwgYnVpbHQtaW4gVGNsL1RrIDguNiBzdXBwb3J0IGluIHRoZSAxMC45KyB2YXJpYW50IChubyBhZGRpdGlvbmFsIHRoaXJkLXBhcnR5IGRvd25sb2FkcyEpLCB1cGRhdGVkICAKK1xmMSBwaXAsCitcZjAgIGJ1aWx0LWluIE9wZW5TU0wgMS4wLjIgKGNsaWNrIG9uIAorXGYxIEluc3RhbGwgQ2VydGlmaWNhdGVzCitcZjAgIGZvciByb290IGNlcnRpZmljYXRlcylcCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZjYWU2NWMKLS0tIC9kZXYvbnVsbAorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL2luc3RhbGxfY2VydGlmaWNhdGVzLmNvbW1hbmQKQEAgLTAsMCArMSw0OCBAQAorIyEvYmluL3NoCisKKy9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy9AUFlWRVJAL2Jpbi9weXRob25AUFlWRVJAIDw8ICJFT0YiCisKKyMgaW5zdGFsbF9jZXJ0aWZpLnB5CisjCisjIHNhbXBsZSBzY3JpcHQgdG8gaW5zdGFsbCBvciB1cGRhdGUgYSBzZXQgb2YgZGVmYXVsdCBSb290IENlcnRpZmljYXRlcworIyBmb3IgdGhlIHNzbCBtb2R1bGUuICBVc2VzIHRoZSBjZXJ0aWZpY2F0ZXMgcHJvdmlkZWQgYnkgdGhlIGNlcnRpZmkgcGFja2FnZToKKyMgICAgICAgaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jZXJ0aWZpCisKK2ltcG9ydCBvcworaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCBzc2wKK2ltcG9ydCBzdGF0CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworCitTVEFUXzBvNzc1ID0gKCBzdGF0LlNfSVJVU1IgfCBzdGF0LlNfSVdVU1IgfCBzdGF0LlNfSVhVU1IKKyAgICAgICAgICAgICB8IHN0YXQuU19JUkdSUCB8IHN0YXQuU19JV0dSUCB8IHN0YXQuU19JWEdSUAorICAgICAgICAgICAgIHwgc3RhdC5TX0lST1RIIHwgICAgICAgICAgICAgICAgc3RhdC5TX0lYT1RIICkKKworZGVmIG1haW4oKToKKyAgICBvcGVuc3NsX2Rpciwgb3BlbnNzbF9jYWZpbGUgPSBvcy5wYXRoLnNwbGl0KAorICAgICAgICBzc2wuZ2V0X2RlZmF1bHRfdmVyaWZ5X3BhdGhzKCkub3BlbnNzbF9jYWZpbGUpCisKKyAgICBwcmludCgiIC0tIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBjZXJ0aWZpIikKKyAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoW3N5cy5leGVjdXRhYmxlLAorICAgICAgICAiLUUiLCAiLXMiLCAiLW0iLCAicGlwIiwgImluc3RhbGwiLCAiLS11cGdyYWRlIiwgImNlcnRpZmkiXSkKKworICAgIGltcG9ydCBjZXJ0aWZpCisKKyAgICAjIGNoYW5nZSB3b3JraW5nIGRpcmVjdG9yeSB0byB0aGUgZGVmYXVsdCBTU0wgZGlyZWN0b3J5CisgICAgb3MuY2hkaXIob3BlbnNzbF9kaXIpCisgICAgcmVscGF0aF90b19jZXJ0aWZpX2NhZmlsZSA9IG9zLnBhdGgucmVscGF0aChjZXJ0aWZpLndoZXJlKCkpCisgICAgcHJpbnQoIiAtLSByZW1vdmluZyBhbnkgZXhpc3RpbmcgZmlsZSBvciBsaW5rIikKKyAgICB0cnk6CisgICAgICAgIG9zLnJlbW92ZShvcGVuc3NsX2NhZmlsZSkKKyAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgcGFzcworICAgIHByaW50KCIgLS0gY3JlYXRpbmcgc3ltbGluayB0byBjZXJ0aWZpIGNlcnRpZmljYXRlIGJ1bmRsZSIpCisgICAgb3Muc3ltbGluayhyZWxwYXRoX3RvX2NlcnRpZmlfY2FmaWxlLCBvcGVuc3NsX2NhZmlsZSkKKyAgICBwcmludCgiIC0tIHNldHRpbmcgcGVybWlzc2lvbnMiKQorICAgIG9zLmNobW9kKG9wZW5zc2xfY2FmaWxlLCBTVEFUXzBvNzc1KQorICAgIHByaW50KCIgLS0gdXBkYXRlIGNvbXBsZXRlIikKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBtYWluKCkKK0VPRgpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uIGIvTWFjL0J1aWxkU2NyaXB0L3NjcmlwdHMvcG9zdGZsaWdodC5kb2N1bWVudGF0aW9uCmluZGV4IGI5ZjI4YTUuLjNjYmJjMWIgMTAwNzU1Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9zY3JpcHRzL3Bvc3RmbGlnaHQuZG9jdW1lbnRhdGlvbgorKysgYi9NYWMvQnVpbGRTY3JpcHQvc2NyaXB0cy9wb3N0ZmxpZ2h0LmRvY3VtZW50YXRpb24KQEAgLTEyLDYgKzEyLDcgQEAKICMgbWFrZSBsaW5rIGluIC9BcHBsaWNhdGlvbnMvUHl0aG9uIG0ubi8gZm9yIEZpbmRlciB1c2VycwogaWYgWyAtZCAiJHtBUFBESVJ9IiBdOyB0aGVuCiAgICAgbG4gLWZocyAiJHtGV0tfRE9DRElSfS9pbmRleC5odG1sIiAiJHtBUFBESVJ9L1B5dGhvbiBEb2N1bWVudGF0aW9uLmh0bWwiCisgICAgb3BlbiAiJHtBUFBESVJ9IiB8fCB0cnVlICAjIG9wZW4gdGhlIGFwcGxpY2F0aW9ucyBmb2xkZXIKIGZpCiAKICMgbWFrZSBzaGFyZS9kb2MgbGluayBpbiBmcmFtZXdvcmsgZm9yIGNvbW1hbmQgbGluZSB1c2VycwpkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3RrODY4X29uXzEwXzhfMTBfOS5wYXRjaCBiL01hYy9CdWlsZFNjcmlwdC90azg2OF9vbl8xMF84XzEwXzkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZlMTA2MAotLS0gL2Rldi9udWxsCisrKyBiL01hYy9CdWlsZFNjcmlwdC90azg2OF9vbl8xMF84XzEwXzkucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorRml4IGJ1aWxkIGZhaWx1cmUgd2l0aCArcXVhcnR6IHZhcmlhbnQgb24gT1MgWCAxMC44IGFuZCAxMC45LgorRXZlbiB0aG91Z2ggR2VzdGFsdCB3YXMgZGVwcmVjYXRlZCBpbiBPUyBYIDEwLjgsIGl0IHNob3VsZCB3b3JrIGZpbmUKK3Rocm91Z2ggT1MgWCAxMC45LCBhbmQgaXRzIHJlcGxhY2VtZW50IE5TT3BlcmF0aW5nU3lzdGVtVmVyc2lvbiB3YXMKK25vdCBpbnRyb2R1Y2VkIHVudGlsIE9TIFggMTAuMTAuCisKK1BhdGNoIGZyb20gTWFjUG9ydHMgcHJvamVjdCBhbmQgcmVwb3J0ZWQgdXBzdHJlYW06CitodHRwczovL3RyYWMubWFjcG9ydHMub3JnL3RpY2tldC81NTY0OQorLS0tIHRrOC42LjgvbWFjb3N4L3RrTWFjT1NYWFN0dWJzLmMub3JpZwkyMDE3LTEyLTA2IDA5OjI1OjA4LjAwMDAwMDAwMCAtMDYwMAorKysrIHRrOC42LjgtcGF0Y2hlZC9tYWNvc3gvdGtNYWNPU1hYU3R1YnMuYwkyMDE4LTAxLTA2IDE5OjM0OjE3LjAwMDAwMDAwMCAtMDYwMAorQEAgLTE3NSw3ICsxNzUsNyBAQAorICAgICB7CisgCWludCBtYWpvciwgbWlub3IsIHBhdGNoOworIAorLSNpZiBNQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA8IDEwODAKKysjaWYgTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPCAxMDEwMDAKKyAJR2VzdGFsdChnZXN0YWx0U3lzdGVtVmVyc2lvbk1ham9yLCAoU0ludDMyKikmbWFqb3IpOworIAlHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uTWlub3IsIChTSW50MzIqKSZtaW5vcik7CisgCUdlc3RhbHQoZ2VzdGFsdFN5c3RlbVZlcnNpb25CdWdGaXgsIChTSW50MzIqKSZwYXRjaCk7CmRpZmYgLS1naXQgYS9NYWMvSURMRS9JbmZvLnBsaXN0LmluIGIvTWFjL0lETEUvSW5mby5wbGlzdC5pbgppbmRleCA1ZTkxNTA5Li4xZDNjMDc2IDEwMDY0NAotLS0gYS9NYWMvSURMRS9JbmZvLnBsaXN0LmluCisrKyBiL01hYy9JRExFL0luZm8ucGxpc3QuaW4KQEAgLTM2LDcgKzM2LDcgQEAKIAk8a2V5PkNGQnVuZGxlRXhlY3V0YWJsZTwva2V5PgogCTxzdHJpbmc+SURMRTwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVHZXRJbmZvU3RyaW5nPC9rZXk+Ci0JPHN0cmluZz4lVkVSU0lPTiUsIMKpIDIwMDEtMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbjwvc3RyaW5nPgorCTxzdHJpbmc+JVZFUlNJT04lLCDCqSAyMDAxLTIwMTcgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb248L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KIAk8c3RyaW5nPklETEUuaWNuczwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVJZGVudGlmaWVyPC9rZXk+CmRpZmYgLS1naXQgYS9NYWMvSURMRS9NYWtlZmlsZS5pbiBiL01hYy9JRExFL01ha2VmaWxlLmluCmluZGV4IDk4NTkwYWIuLjJiZTNhMzcgMTAwNjQ0Ci0tLSBhL01hYy9JRExFL01ha2VmaWxlLmluCisrKyBiL01hYy9JRExFL01ha2VmaWxlLmluCkBAIC0xMSw3ICsxMSw2IEBACiBVTklWRVJTQUxTREs9QFVOSVZFUlNBTFNES0AKIGJ1aWxkZGlyPQkuLi8uLgogUFlUSE9ORlJBTUVXT1JLPUBQWVRIT05GUkFNRVdPUktACi1MSVBPXzMyQklUX0ZMQUdTPUBMSVBPXzMyQklUX0ZMQUdTQAogCiAKIFJVTlNIQVJFRD0gICAgICBAUlVOU0hBUkVEQApAQCAtNzEsMTAgKzcwLDYgQEAKIAkJLS1yZXNvdXJjZT0kKHNyY2RpcikvLi4vSWNvbnMvUHl0aG9uQ29tcGlsZWQuaWNucyBcCiAJCS0tcHl0aG9uPSQocHJlZml4KS9SZXNvdXJjZXMvUHl0aG9uLmFwcC9Db250ZW50cy9NYWNPUy9QeXRob24gXAogCQlidWlsZAotaWZuZXEgKCQoTElQT18zMkJJVF9GTEFHUyksKQotCXJtICJJRExFLmFwcC9Db250ZW50cy9NYWNPUy9QeXRob24iCi0JbGlwbyAkKExJUE9fMzJCSVRfRkxBR1MpIC1vdXRwdXQgIklETEUuYXBwL0NvbnRlbnRzL01hY09TL1B5dGhvbiIgIiQoQlVJTERQWVRIT04pIgotZW5kaWYKIAogSW5mby5wbGlzdDogJChzcmNkaXIpL0luZm8ucGxpc3QuaW4KIAlzZWQgJ3MvJVZFUlNJT04lLyciYCQoUlVOU0hBUkVEKSAkKEJVSUxEUFlUSE9OKSAtYyAnaW1wb3J0IHBsYXRmb3JtOyBwcmludCBwbGF0Zm9ybS5weXRob25fdmVyc2lvbigpJ2AiJy9nJyA8ICQoc3JjZGlyKS9JbmZvLnBsaXN0LmluID4gSW5mby5wbGlzdApkaWZmIC0tZ2l0IGEvTWFjL1B5dGhvbkxhdW5jaGVyL0luZm8ucGxpc3QuaW4gYi9NYWMvUHl0aG9uTGF1bmNoZXIvSW5mby5wbGlzdC5pbgppbmRleCA2YzRiZmU4Li5iODRmZmZlIDEwMDY0NAotLS0gYS9NYWMvUHl0aG9uTGF1bmNoZXIvSW5mby5wbGlzdC5pbgorKysgYi9NYWMvUHl0aG9uTGF1bmNoZXIvSW5mby5wbGlzdC5pbgpAQCAtNDAsNyArNDAsNyBAQAogCTxrZXk+Q0ZCdW5kbGVFeGVjdXRhYmxlPC9rZXk+CiAJPHN0cmluZz5QeXRob25MYXVuY2hlcjwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVHZXRJbmZvU3RyaW5nPC9rZXk+Ci0JPHN0cmluZz4lVkVSU0lPTiUsIMKpIDIwMDEtMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbjwvc3RyaW5nPgorCTxzdHJpbmc+JVZFUlNJT04lLCDCqSAyMDAxLTIwMTggUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb248L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlSWNvbkZpbGU8L2tleT4KIAk8c3RyaW5nPlB5dGhvbkxhdW5jaGVyLmljbnM8L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlSWRlbnRpZmllcjwva2V5PgpkaWZmIC0tZ2l0IGEvTWFjL1JFQURNRSBiL01hYy9SRUFETUUKaW5kZXggZWMyY2QyNy4uNTFlNjllZiAxMDA2NDQKLS0tIGEvTWFjL1JFQURNRQorKysgYi9NYWMvUkVBRE1FCkBAIC03LDcgKzcsNyBAQAogICAgIFJvbmFsZCBPdXNzb3JlbiAoMjAxMC0wNCksCiAgICAgTmVkIERlaWx5ICgyMDE0LTA1KQogCi06VmVyc2lvbjogMi43LjcKKzpWZXJzaW9uOiAyLjcuMTUKIAogVGhpcyBkb2N1bWVudCBwcm92aWRlcyBhIHF1aWNrIG92ZXJ2aWV3IG9mIHNvbWUgTWFjIE9TIFggc3BlY2lmaWMgZmVhdHVyZXMgaW4KIHRoZSBQeXRob24gZGlzdHJpYnV0aW9uLgpAQCAtMTksNyArMTksNyBAQAogCiAgIElmIHRoaXMgYXJndW1lbnQgaXMgc3BlY2lmaWVkIHRoZSBidWlsZCB3aWxsIGNyZWF0ZSBhIFB5dGhvbi5mcmFtZXdvcmsgcmF0aGVyCiAgIHRoYW4gYSB0cmFkaXRpb25hbCBVbml4IGluc3RhbGwuIFNlZSB0aGUgc2VjdGlvbgotICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlIAorICBfYEJ1aWxkaW5nIGFuZCB1c2luZyBhIGZyYW1ld29yay1iYXNlZCBQeXRob24gb24gTWFjIE9TIFhgIGZvciBtb3JlCiAgIGluZm9ybWF0aW9uIG9uIGZyYW1ld29ya3MuCiAKICAgSWYgdGhlIG9wdGlvbmFsIGRpcmVjdG9yeSBhcmd1bWVudCBpcyBzcGVjaWZpZWQgdGhlIGZyYW1ld29yayBpcyBpbnN0YWxsZWQKQEAgLTQ0LDEwICs0NCwxMiBAQAogICByZWd1bGFyIGFuZCBmcmFtZXdvcmsgYnVpbGRzLgogCiAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZpZXMgd2hpY2ggT1MgWCBTREsgc2hvdWxkIGJlIHVzZWQgdG8gcGVyZm9ybSB0aGUKLSAgYnVpbGQuIFRoaXMgZGVmYXVsdHMgdG8gYGAvRGV2ZWxvcGVyL1NES3MvTWFjT1NYLjEwLjR1LnNka2BgLiAgV2hlbiBidWlsZGluZwotICBvbiBPUyBYIDEwLjUgb3IgbGF0ZXIsIHlvdSBjYW4gc3BlY2lmeSBgYC9gYCB0byB1c2UgdGhlIGluc3RhbGxlZCBzeXN0ZW0KLSAgaGVhZGVycyByYXRoZXIgdGhhbiBhbiBTREsuICBBcyBvZiBPUyBYIDEwLjksIHlvdSBzaG91bGQgaW5zdGFsbCB0aGUgb3B0aW9uYWwKLSAgc3lzdGVtIGhlYWRlcnMgZnJvbSB0aGUgQ29tbWFuZCBMaW5lIFRvb2xzIGNvbXBvbmVudCB1c2luZyBgYHhjb2RlLXNlbGVjdGBgOjoKKyAgYnVpbGQuICBJZiB4Y29kZWJ1aWxkIGlzIGF2YWlsYWJsZSBhbmQgY29uZmlndXJlZCwgdGhpcyBkZWZhdWx0cyB0bworICB0aGUgWGNvZGUgZGVmYXVsdCBNYWNPUyBYIFNESywgb3RoZXJ3aXNlIGBgL0RldmVsb3Blci9TREtzL01hY09TWC4xMC40dS5zZGtgYAorICBpZiBhdmFpbGFibGUgb3IgYGAvYGAgaWYgbm90LiAgV2hlbiBidWlsZGluZyBvbiBPUyBYIDEwLjUgb3IgbGF0ZXIsIHlvdSBjYW4KKyAgc3BlY2lmeSBgYC9gYCB0byB1c2UgdGhlIGluc3RhbGxlZCBzeXN0ZW0gaGVhZGVycyByYXRoZXIgdGhhbiBhbiBTREsuICBBcyBvZgorICBPUyBYIDEwLjksIHlvdSBzaG91bGQgaW5zdGFsbCB0aGUgb3B0aW9uYWwgc3lzdGVtIGhlYWRlcnMgZnJvbSB0aGUgQ29tbWFuZAorICBMaW5lIFRvb2xzIGNvbXBvbmVudCB1c2luZyBgYHhjb2RlLXNlbGVjdGBgOjoKIAogICAgICAkIHN1ZG8geGNvZGUtc2VsZWN0IC0taW5zdGFsbAogCkBAIC01NiwxMCArNTgsMTEgQEAKIAogKiBgYC0td2l0aC11bml2ZXJzYWwtYXJjaHM9VkFMVUVgYAogCi0gIFNwZWNpZnkgdGhlIGtpbmQgb2YgdW5pdmVyc2FsIGJpbmFyeSB0aGF0IHNob3VsZCBiZSBjcmVhdGVkLiBUaGlzIG9wdGlvbiBpcyAKLSAgb25seSB2YWxpZCB3aGVuIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrYGAgaXMgc3BlY2lmaWVkLgorICBTcGVjaWZ5IHRoZSBraW5kIG9mIHVuaXZlcnNhbCBiaW5hcnkgdGhhdCBzaG91bGQgYmUgY3JlYXRlZC4gVGhpcyBvcHRpb24gaXMKKyAgb25seSB2YWxpZCB3aGVuIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrYGAgaXMgc3BlY2lmaWVkLiAgVGhlIGRlZmF1bHQgaXMKKyAgYGAzMi1iaXRgYCBpZiBhIGJ1aWxkaW5nIHdpdGggYSBTREsgdGhhdCBzdXBwb3J0cyBQUEMsIG90aGVyd2lzZSBkZWZhdWx0cworICB0byBgYGludGVsYGAuCiAKLSAgCiAKIEJ1aWxkaW5nIGFuZCB1c2luZyBhIHVuaXZlcnNhbCBiaW5hcnkgb2YgUHl0aG9uIG9uIE1hYyBPUyBYCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtOTEsMzAgKzk0LDMwIEBACiBhbmQgdGhlIDEwLjR1IFNESy4gIFN0YXJ0aW5nIHdpdGggWGNvZGUgMyBhbmQgT1MgWCAxMC41LCBtb3JlIGNvbmZpZ3VyYXRpb25zIGFyZQogYXZhaWxhYmxlLgogCi1UaGUgb3B0aW9uIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrYGAgaGFzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRvIHNwZWNpZnkgYW4KLVNESywgd2hpY2ggZGVmYXVsdHMgdG8gdGhlIDEwLjR1IFNESy4gV2hlbiB5b3UgYnVpbGQgb24gT1MgWCAxMC41IG9yIGxhdGVyCi15b3UgY2FuIHVzZSB0aGUgc3lzdGVtIGhlYWRlcnMgaW5zdGVhZCBvZiBhbiBTREs6OgotCi0gICQgLi9jb25maWd1cmUgLS1lbmFibGUtdW5pdmVyc2Fsc2RrPS8KLQogSW4gZ2VuZXJhbCwgdW5pdmVyc2FsIGJ1aWxkcyBkZXBlbmQgb24gc3BlY2lmaWMgZmVhdHVyZXMgcHJvdmlkZWQgYnkgdGhlCiBBcHBsZS1zdXBwbGllZCBjb21waWxlcnMgYW5kIG90aGVyIGJ1aWxkIHRvb2xzIGluY2x1ZGVkIGluIEFwcGxlJ3MgWGNvZGUKIGRldmVsb3BtZW50IHRvb2xzLiAgWW91IHNob3VsZCBpbnN0YWxsIFhjb2RlIGFuZCB0aGUgY29tbWFuZCBsaW5lIHRvb2xzCiBjb21wb25lbnQgYXBwcm9wcmlhdGUgZm9yIHRoZSBPUyBYIHJlbGVhc2UgeW91IGFyZSBydW5uaW5nIG9uLiAgU2VlIHRoZQotUHl0aG9uIERldmVsb3BlcidzIEd1aWRlIChodHRwOi8vZG9jcy5weXRob24ub3JnL2Rldmd1aWRlL3NldHVwLmh0bWwpCitQeXRob24gRGV2ZWxvcGVyJ3MgR3VpZGUgKGh0dHBzOi8vZGV2Z3VpZGUucHl0aG9uLm9yZy9zZXR1cC8pCiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogMi4xIEZsYXZvcnMgb2YgdW5pdmVyc2FsIGJpbmFyaWVzCiAuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KIAogSXQgaXMgcG9zc2libGUgdG8gYnVpbGQgYSBudW1iZXIgb2YgZmxhdm9ycyBvZiB0aGUgdW5pdmVyc2FsIGJpbmFyeSBidWlsZCwKLXRoZSBkZWZhdWx0IGlzIGEgMzItYml0IG9ubHkgYmluYXJ5IChpMzg2IGFuZCBwcGMpLiBOb3RlIHRoYXQgc3RhcnRpbmcgd2l0aAotWGNvZGUgNCwgdGhlIGJ1aWxkIHRvb2xzIG5vIGxvbmdlciBzdXBwb3J0IHBwYy4gVGhlIGZsYXZvciBjYW4gYmUKLXNwZWNpZmllZCB1c2luZyB0aGUgb3B0aW9uIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNocz1WQUxVRWBgLiBUaGUgZm9sbG93aW5nCit0aGUgZGVmYXVsdCBpcyBhIDMyLWJpdCBvbmx5IGJpbmFyeSAoaTM4NiBhbmQgcHBjKSBpbiBidWlsZCBlbnZpcm9ubWVudHMgdGhhdAorc3VwcG9ydCBwcGMgKDEwLjQgd2l0aCBYY29kZSAyLCAxMC41IGFuZCAxMC42IHdpdGggWGNvZGUgMykgb3IgYW4KK0ludGVsLTMyLy02NC1iaXQgYmluYXJ5IChpMzg2IGFuZCBYODZfNjQpIGluIGJ1aWxkIGVudmlyb25tZW50cyB0aGF0IGRvIG5vdAorc3VwcG9ydCBwcGMgKFhjb2RlIDQgb24gMTAuNiBhbmQgbGF0ZXIgc3lzdGVtcykuICBUaGUgZmxhdm9yIGNhbiBiZSBzcGVjaWZpZWQKK3VzaW5nIHRoZSBjb25maWd1cmUgb3B0aW9uIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNocz1WQUxVRWBgLiBUaGUgZm9sbG93aW5nCiB2YWx1ZXMgYXJlIGF2YWlsYWJsZToKIAogICAqIGBgaW50ZWxgYDoJICBgYGkzODZgYCwgYGB4ODZfNjRgYAogCisgICogYGBpbnRlbC0zMmBgOiBgYGkzODZgYAorCisgICogYGBpbnRlbC02NGBgOiBgYHg4Nl82NGBgCisKICAgKiBgYDMyLWJpdGBgOiAgIGBgcHBjYGAsIGBgaTM4NmBgCiAKICAgKiBgYDMtd2F5YGA6CSAgYGBpMzg2YGAsIGBgeDg2XzY0YGAsIGBgcHBjYGAKQEAgLTE3OCwxNCArMTgxLDE0IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgbWFpbiByZWFzb24gaXMgYmVjYXVzZSB5b3Ugd2FudCB0byBjcmVhdGUgR1VJIHByb2dyYW1zIGluIFB5dGhvbi4gV2l0aCB0aGUKLWV4Y2VwdGlvbiBvZiBYMTEvWERhcndpbi1iYXNlZCBHVUkgdG9vbGtpdHMgYWxsIEdVSSBwcm9ncmFtcyBuZWVkIHRvIGJlIHJ1biAKK2V4Y2VwdGlvbiBvZiBYMTEvWERhcndpbi1iYXNlZCBHVUkgdG9vbGtpdHMgYWxsIEdVSSBwcm9ncmFtcyBuZWVkIHRvIGJlIHJ1bgogZnJvbSBhIE1hYyBPUyBYIGFwcGxpY2F0aW9uIGJ1bmRsZSAoIi5hcHAiKS4KIAogV2hpbGUgaXQgaXMgdGVjaG5pY2FsbHkgcG9zc2libGUgdG8gY3JlYXRlIGEgLmFwcCB3aXRob3V0IHVzaW5nIGZyYW1ld29ya3MgeW91CiB3aWxsIGhhdmUgdG8gZG8gdGhlIHdvcmsgeW91cnNlbGYgaWYgeW91IHJlYWxseSB3YW50IHRoaXMuCiAKIEEgc2Vjb25kIHJlYXNvbiBmb3IgdXNpbmcgZnJhbWV3b3JrcyBpcyB0aGF0IHRoZXkgcHV0IFB5dGhvbi1yZWxhdGVkIGl0ZW1zIGluCi1vbmx5IHR3byBwbGFjZXM6ICIvTGlicmFyeS9GcmFtZXdvcmsvUHl0aG9uLmZyYW1ld29yayIgYW5kIAorb25seSB0d28gcGxhY2VzOiAiL0xpYnJhcnkvRnJhbWV3b3JrL1B5dGhvbi5mcmFtZXdvcmsiIGFuZAogIi9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPiIgd2hlcmUgYGA8VkVSU0lPTj5gYCBjYW4gYmUgZS5nLiAiMy40IiwKICIyLjciLCBldGMuICBUaGlzIHNpbXBsaWZpZXMgbWF0dGVycyBmb3IgdXNlcnMgaW5zdGFsbGluZwogUHl0aG9uIGZyb20gYSBiaW5hcnkgZGlzdHJpYnV0aW9uIGlmIHRoZXkgd2FudCB0byBnZXQgcmlkIG9mIGl0IGFnYWluLiBNb3Jlb3ZlciwKQEAgLTIyMiw3ICsyMjUsNyBAQAogVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYSBNYWtlZmlsZSB0aGF0IHdpbGwgY3JlYXRlIGEgY291cGxlIG9mIHB5dGhvbi1yZWxhdGVkCiBhcHBsaWNhdGlvbnMgKGZ1bGwtYmxvd24gT1MgWCAuYXBwIGFwcGxpY2F0aW9ucywgdGhhdCBpcykgaW4KICIvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj4iLCBhbmQgYSBoaWRkZW4gaGVscGVyIGFwcGxpY2F0aW9uIFB5dGhvbi5hcHAKLWluc2lkZSB0aGUgUHl0aG9uLmZyYW1ld29yaywgYW5kIHVuaXggdG9vbHMgInB5dGhvbiIgYW5kICJweXRob253IiBpbnRvCitpbnNpZGUgdGhlIFB5dGhvbi5mcmFtZXdvcmssIGFuZCB1bml4IHRvb2xzIGluY2x1ZGluZyAicHl0aG9uIiBpbnRvCiAvdXNyL2xvY2FsL2Jpbi4gIEluIGFkZGl0aW9uIGl0IGhhcyBhIHRhcmdldCAiaW5zdGFsbG1hY3N1YnRyZWUiIHRoYXQgaW5zdGFsbHMKIHRoZSByZWxldmFudCBwb3J0aW9ucyBvZiB0aGUgTWFjIHN1YnRyZWUgaW50byB0aGUgUHl0aG9uLmZyYW1ld29yay4KIApAQCAtMjMyLDExICsyMzUsMTEgQEAKICAxLiAuL2NvbmZpZ3VyZSAtLWVuYWJsZS1mcmFtZXdvcmsKIAogIDIuIG1ha2UKLSAKKwogIDMuIG1ha2UgaW5zdGFsbAogCiBUaGlzIHNlcXVlbmNlIHdpbGwgcHV0IHRoZSBmcmFtZXdvcmsgaW4gYGAvTGlicmFyeS9GcmFtZXdvcmsvUHl0aG9uLmZyYW1ld29ya2BgLAotdGhlIGFwcGxpY2F0aW9ucyBpbiBgYC9BcHBsaWNhdGlvbnMvUHl0aG9uIDxWRVJTSU9OPmBgIGFuZCB0aGUgdW5peCB0b29scyBpbiAKK3RoZSBhcHBsaWNhdGlvbnMgaW4gYGAvQXBwbGljYXRpb25zL1B5dGhvbiA8VkVSU0lPTj5gYCBhbmQgdGhlIHVuaXggdG9vbHMgaW4KIGBgL3Vzci9sb2NhbC9iaW5gYC4KIAogSW5zdGFsbGluZyBpbiBhbm90aGVyIHBsYWNlLCBmb3IgaW5zdGFuY2UgYGAkSE9NRS9MaWJyYXJ5L0ZyYW1ld29ya3NgYCBpZiB5b3UKQEAgLTMxMyw3ICszMTYsNyBAQAogdXNlIHlvdXIgbm9ybWFsIGJ1aWxkIGRpcmVjdG9yeSBub3IgZG9lcyBpdCBpbnN0YWxsIGludG8gLy4KIAogQmVjYXVzZSBvZiB0aGUgd2F5IHRoZSBzY3JpcHQgbG9jYXRlcyB0aGUgZmlsZXMgaXQgbmVlZHMgeW91IGhhdmUgdG8gcnVuIGl0Ci1mcm9tIHdpdGhpbiB0aGUgQnVpbGRTY3JpcHQgZGlyZWN0b3J5LiBUaGUgc2NyaXB0IGFjY2VwdHMgYSBudW1iZXIgb2YgCitmcm9tIHdpdGhpbiB0aGUgQnVpbGRTY3JpcHQgZGlyZWN0b3J5LiBUaGUgc2NyaXB0IGFjY2VwdHMgYSBudW1iZXIgb2YKIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHJ1biBpdCB3aXRoIC0taGVscCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KIAogQ29uZmlndXJlIHdhcm5pbmdzCkBAIC0zNjMsNCArMzY2LDQgQEAKIAogICAqICBodHRwOi8vd3d3LnB5dGhvbi5vcmcvY29tbXVuaXR5L3NpZ3MvY3VycmVudC9weXRob25tYWMtc2lnLwogCi0gICogIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvCisgICogIGh0dHBzOi8vZGV2Z3VpZGUucHl0aG9uLm9yZy8KZGlmZiAtLWdpdCBhL01hYy9SZXNvdXJjZXMvYXBwL0luZm8ucGxpc3QuaW4gYi9NYWMvUmVzb3VyY2VzL2FwcC9JbmZvLnBsaXN0LmluCmluZGV4IGEwYmI5NzEuLmFiZTlhZTIgMTAwNjQ0Ci0tLSBhL01hYy9SZXNvdXJjZXMvYXBwL0luZm8ucGxpc3QuaW4KKysrIGIvTWFjL1Jlc291cmNlcy9hcHAvSW5mby5wbGlzdC5pbgpAQCAtMzcsNyArMzcsNyBAQAogCTxrZXk+Q0ZCdW5kbGVJbmZvRGljdGlvbmFyeVZlcnNpb248L2tleT4KIAk8c3RyaW5nPjYuMDwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVMb25nVmVyc2lvblN0cmluZzwva2V5PgotCTxzdHJpbmc+JXZlcnNpb24lLCAoYykgMjAwMS0yMDE2IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLjwvc3RyaW5nPgorCTxzdHJpbmc+JXZlcnNpb24lLCAoYykgMjAwMS0yMDE4IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLjwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVOYW1lPC9rZXk+CiAJPHN0cmluZz5QeXRob248L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlUGFja2FnZVR5cGU8L2tleT4KZGlmZiAtLWdpdCBhL01hYy9SZXNvdXJjZXMvZnJhbWV3b3JrL0luZm8ucGxpc3QuaW4gYi9NYWMvUmVzb3VyY2VzL2ZyYW1ld29yay9JbmZvLnBsaXN0LmluCmluZGV4IGZjYmE3ZDkuLmMxZWE5ZjYgMTAwNjQ0Ci0tLSBhL01hYy9SZXNvdXJjZXMvZnJhbWV3b3JrL0luZm8ucGxpc3QuaW4KKysrIGIvTWFjL1Jlc291cmNlcy9mcmFtZXdvcmsvSW5mby5wbGlzdC5pbgpAQCAtMTcsOSArMTcsOSBAQAogCTxrZXk+Q0ZCdW5kbGVQYWNrYWdlVHlwZTwva2V5PgogCTxzdHJpbmc+Rk1XSzwvc3RyaW5nPgogCTxrZXk+Q0ZCdW5kbGVTaG9ydFZlcnNpb25TdHJpbmc8L2tleT4KLQk8c3RyaW5nPiVWRVJTSU9OJSwgKGMpIDIwMDEtMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi48L3N0cmluZz4KKwk8c3RyaW5nPiVWRVJTSU9OJSwgKGMpIDIwMDEtMjAxOCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi48L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlTG9uZ1ZlcnNpb25TdHJpbmc8L2tleT4KLQk8c3RyaW5nPiVWRVJTSU9OJSwgKGMpIDIwMDEtMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi48L3N0cmluZz4KKwk8c3RyaW5nPiVWRVJTSU9OJSwgKGMpIDIwMDEtMjAxOCBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi48L3N0cmluZz4KIAk8a2V5PkNGQnVuZGxlU2lnbmF0dXJlPC9rZXk+CiAJPHN0cmluZz4/Pz8/PC9zdHJpbmc+CiAJPGtleT5DRkJ1bmRsZVZlcnNpb248L2tleT4KZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgppbmRleCBlMjg4OTY0Li45Mjk3ZTdmIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5wcmUuaW4KKysrIGIvTWFrZWZpbGUucHJlLmluCkBAIC0zOCwxMCArMzgsOSBAQAogTElOS0NDPQkJQExJTktDQ0AKIEFSPQkJQEFSQAogUkFOTElCPQkJQFJBTkxJQkAKLVNWTlZFUlNJT049CUBTVk5WRVJTSU9OQAotSEdWRVJTSU9OPQlASEdWRVJTSU9OQAotSEdUQUc9CQlASEdUQUdACi1IR0JSQU5DSD0JQEhHQlJBTkNIQAorR0lUVkVSU0lPTj0JQEdJVFZFUlNJT05ACitHSVRUQUc9CQlAR0lUVEFHQAorR0lUQlJBTkNIPQlAR0lUQlJBTkNIQAogUEdPX1BST0ZfR0VOX0ZMQUc9QFBHT19QUk9GX0dFTl9GTEFHQAogUEdPX1BST0ZfVVNFX0ZMQUc9QFBHT19QUk9GX1VTRV9GTEFHQAogTExWTV9QUk9GX01FUkdFUj1ATExWTV9QUk9GX01FUkdFUkAKQEAgLTIwMCw2ICsxOTksNyBAQAogUFlUSE9OPQkJcHl0aG9uJChFWEUpCiBCVUlMRFBZVEhPTj0JcHl0aG9uJChCVUlMREVYRSkKIAorUFlUSE9OX0ZPUl9SRUdFTj1AUFlUSE9OX0ZPUl9SRUdFTkAKIFBZVEhPTl9GT1JfQlVJTEQ9QFBZVEhPTl9GT1JfQlVJTERACiBfUFlUSE9OX0hPU1RfUExBVEZPUk09QF9QWVRIT05fSE9TVF9QTEFURk9STUAKIEhPU1RfR05VX1RZUEU9ICBAaG9zdEAKQEAgLTIzNCwxMSArMjM0LDYgQEAKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBHcmFtbWFyCi1HUkFNTUFSX0g9CUluY2x1ZGUvZ3JhbWluaXQuaAotR1JBTU1BUl9DPQlQeXRob24vZ3JhbWluaXQuYwotR1JBTU1BUl9JTlBVVD0JJChzcmNkaXIpL0dyYW1tYXIvR3JhbW1hcgotCiAKIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACiAKQEAgLTI5OCwyOSArMjkzLDYgQEAKIFBHRU5PQkpTPQkkKFBPQkpTKSAkKFBHT0JKUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgQVNUCi1BU1RfSF9ESVI9CUluY2x1ZGUKLUFTVF9IPQkJJChBU1RfSF9ESVIpL1B5dGhvbi1hc3QuaAotQVNUX0NfRElSPQlQeXRob24KLUFTVF9DPQkJJChBU1RfQ19ESVIpL1B5dGhvbi1hc3QuYwotQVNUX0FTREw9CSQoc3JjZGlyKS9QYXJzZXIvUHl0aG9uLmFzZGwKLQotQVNETEdFTl9GSUxFUz0JJChzcmNkaXIpL1BhcnNlci9hc2RsLnB5ICQoc3JjZGlyKS9QYXJzZXIvYXNkbF9jLnB5Ci0jIFhYWCBOb3RlIHRoYXQgYSBidWlsZCBub3cgcmVxdWlyZXMgUHl0aG9uIGV4aXN0IGJlZm9yZSB0aGUgYnVpbGQgc3RhcnRzCi1BU0RMR0VOPQkkKHNyY2RpcikvUGFyc2VyL2FzZGxfYy5weQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIyBQeXRob24KLQotT1BDT0RFVEFSR0VUU19IPSBcCi0JCSQoc3JjZGlyKS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaAotCQkKLU9QQ09ERVRBUkdFVEdFTj0gXAotCQkkKHNyY2RpcikvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5Ci0KLU9QQ09ERVRBUkdFVEdFTl9GSUxFUz0gXAotCQkkKE9QQ09ERVRBUkdFVEdFTikgJChzcmNkaXIpL0xpYi9vcGNvZGUucHkKLQogUFlUSE9OX09CSlM9CVwKIAkJUHl0aG9uL193YXJuaW5ncy5vIFwKIAkJUHl0aG9uL1B5dGhvbi1hc3QubyBcCkBAIC00MjksNyArNDAxLDE2IEBACiAKICMgRGVmYXVsdCB0YXJnZXQKIGFsbDoJCUBERUZfTUFLRV9BTExfUlVMRUAKLWJ1aWxkX2FsbDoJJChCVUlMRFBZVEhPTikgb2xkc2hhcmVkbW9kcyBzaGFyZWRtb2RzIGdkYmhvb2tzCitidWlsZF9hbGw6CWNoZWNrLWNsZWFuLXNyYyAkKEJVSUxEUFlUSE9OKSBvbGRzaGFyZWRtb2RzIHNoYXJlZG1vZHMgZ2RiaG9va3MKKworIyBDaGVjayB0aGF0IHRoZSBzb3VyY2UgaXMgY2xlYW4gd2hlbiBidWlsZGluZyBvdXQgb2Ygc291cmNlLgorY2hlY2stY2xlYW4tc3JjOgorCUBpZiB0ZXN0IC1uICIkKFZQQVRIKSIgLWEgLWYgIiQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5vIjsgdGhlbiBcCisJCWVjaG8gIkVycm9yOiBUaGUgc291cmNlIGRpcmVjdG9yeSAoJChzcmNkaXIpKSBpcyBub3QgY2xlYW4iIDsgXAorCQllY2hvICJCdWlsZGluZyBQeXRob24gb3V0IG9mIHRoZSBzb3VyY2UgdHJlZSAoaW4gJChhYnNfYnVpbGRkaXIpKSByZXF1aXJlcyBhIGNsZWFuIHNvdXJjZSB0cmVlICgkKGFic19zcmNkaXIpKSIgOyBcCisJCWVjaG8gIlRyeSB0byBydW46IG1ha2UgLUMgXCIkKHNyY2RpcilcIiBjbGVhbiIgOyBcCisJCWV4aXQgMTsgXAorCWZpCiAKICMgQ29tcGlsZSBhIGJpbmFyeSB3aXRoIHByb2ZpbGUgZ3VpZGVkIG9wdGltaXphdGlvbi4KIHByb2ZpbGUtb3B0OgpAQCAtNDU2LDcgKzQzNyw3IEBACiAKIHJ1bl9wcm9maWxlX3Rhc2s6CiAJOiAjIEZJWE1FOiBjYW4ndCBydW4gZm9yIGEgY3Jvc3MgYnVpbGQKLQkkKExMVk1fUFJPRl9GSUxFKSAuLyQoQlVJTERQWVRIT04pICQoUFJPRklMRV9UQVNLKSB8fCB0cnVlCisJJChMTFZNX1BST0ZfRklMRSkgJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgJChQUk9GSUxFX1RBU0spIHx8IHRydWUKIAogYnVpbGRfYWxsX21lcmdlX3Byb2ZpbGU6CiAJJChMTFZNX1BST0ZfTUVSR0VSKQpAQCAtNDk0LDkgKzQ3NSw4IEBACiAJQGVjaG8gImxjb3YgcmVwb3J0IGF0ICQoQ09WRVJBR0VfUkVQT1JUKS9pbmRleC5odG1sIgogCUBlY2hvCiAKLWNvdmVyYWdlLXJlcG9ydDoKLQk6ICMgZm9yY2UgcmVidWlsZGluZyBvZiBwYXJzZXIKLQlAdG91Y2ggJChHUkFNTUFSX0lOUFVUKQorIyBGb3JjZSByZWdlbmVyYXRpb24gb2YgcGFyc2VyCitjb3ZlcmFnZS1yZXBvcnQ6IHJlZ2VuLWdyYW1tYXIKIAk6ICMgYnVpbGQgd2l0aCBjb3ZlcmFnZSBpbmZvCiAJJChNQUtFKSBjb3ZlcmFnZQogCTogIyBydW4gdGVzdHMsIGlnbm9yZSBmYWlsdXJlcwpAQCAtNjQ1LDYgKzYyNSwxMiBAQAogCQllY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI7IFwKIAlmaQogCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgUmVnZW5lcmF0ZSBhbGwgZ2VuZXJhdGVkIGZpbGVzCisKK3JlZ2VuLWFsbDogcmVnZW4tb3Bjb2RlLXRhcmdldHMgcmVnZW4tZ3JhbW1hciByZWdlbi1hc3QKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBTcGVjaWFsIHJ1bGVzIGZvciBvYmplY3QgZmlsZXMKIApAQCAtNjU2LDEwICs2NDIsOSBAQAogCQkkKE1PRE9CSlMpIFwKIAkJJChzcmNkaXIpL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKIAkkKENDKSAtYyAkKFBZX0NGTEFHUykgXAotCSAgICAgIC1EU1ZOVkVSU0lPTj0iXCJgTENfQUxMPUMgJChTVk5WRVJTSU9OKWBcIiIgXAotCSAgICAgIC1ESEdWRVJTSU9OPSJcImBMQ19BTEw9QyAkKEhHVkVSU0lPTilgXCIiIFwKLQkgICAgICAtREhHVEFHPSJcImBMQ19BTEw9QyAkKEhHVEFHKWBcIiIgXAotCSAgICAgIC1ESEdCUkFOQ0g9IlwiYExDX0FMTD1DICQoSEdCUkFOQ0gpYFwiIiBcCisJICAgICAgLURHSVRWRVJTSU9OPSJcImBMQ19BTEw9QyAkKEdJVFZFUlNJT04pYFwiIiBcCisJICAgICAgLURHSVRUQUc9IlwiYExDX0FMTD1DICQoR0lUVEFHKWBcIiIgXAorCSAgICAgIC1ER0lUQlJBTkNIPSJcImBMQ19BTEw9QyAkKEdJVEJSQU5DSClgXCIiIFwKIAkgICAgICAtbyAkQCAkKHNyY2RpcikvTW9kdWxlcy9nZXRidWlsZGluZm8uYwogCiBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jIE1ha2VmaWxlCkBAIC02NzksMTUgKzY2NCwxOCBAQAogCiBNb2R1bGVzL3B3ZG1vZHVsZS5vOiAkKHNyY2RpcikvTW9kdWxlcy9wd2Rtb2R1bGUuYyAkKHNyY2RpcikvTW9kdWxlcy9wb3NpeG1vZHVsZS5oCiAKLSQoR1JBTU1BUl9IKTogQEdFTkVSQVRFRF9DT01NRU5UQCAkKEdSQU1NQVJfSU5QVVQpICQoUEdFTikKLQlAJChNS0RJUl9QKSBJbmNsdWRlCi0JJChQR0VOKSAkKEdSQU1NQVJfSU5QVVQpICQoR1JBTU1BUl9IKSAkKEdSQU1NQVJfQykKLSQoR1JBTU1BUl9DKTogQEdFTkVSQVRFRF9DT01NRU5UQCAkKEdSQU1NQVJfSCkKLQl0b3VjaCAkKEdSQU1NQVJfQykKLQogJChQR0VOKToJJChQR0VOT0JKUykKIAkJJChDQykgJChPUFQpICQoTERGTEFHUykgJChQR0VOT0JKUykgJChMSUJTKSAtbyAkKFBHRU4pCiAKKy5QSE9OWTogcmVnZW4tZ3JhbW1hcgorcmVnZW4tZ3JhbW1hcjogJChQR0VOKQorCSMgUmVnZW5lcmF0ZSBJbmNsdWRlL2dyYW1pbml0LmggYW5kIFB5dGhvbi9ncmFtaW5pdC5jCisJIyBmcm9tIEdyYW1tYXIvR3JhbW1hciB1c2luZyBwZ2VuCisJQCQoTUtESVJfUCkgSW5jbHVkZQorCSQoUEdFTikgJChzcmNkaXIpL0dyYW1tYXIvR3JhbW1hciBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL2dyYW1pbml0LmggXAorCQkkKHNyY2RpcikvUHl0aG9uL2dyYW1pbml0LmMKKwogUGFyc2VyL2dyYW1tYXIubzoJJChzcmNkaXIpL1BhcnNlci9ncmFtbWFyLmMgXAogCQkJCSQoc3JjZGlyKS9JbmNsdWRlL3Rva2VuLmggXAogCQkJCSQoc3JjZGlyKS9JbmNsdWRlL2dyYW1tYXIuaApAQCAtNjk3LDE1ICs2ODUsMjAgQEAKIAogUGFyc2VyL3BnZW5tYWluLm86CSQoc3JjZGlyKS9JbmNsdWRlL3BhcnNldG9rLmgKIAotJChBU1RfSCk6ICQoQVNUX0FTREwpICQoQVNETEdFTl9GSUxFUykKLQkkKE1LRElSX1ApICQoQVNUX0hfRElSKQotCSQoQVNETEdFTikgLWggJChBU1RfSF9ESVIpICQoQVNUX0FTREwpCisuUEhPTlk9cmVnZW4tYXN0CityZWdlbi1hc3Q6CisJIyBSZWdlbmVyYXRlIEluY2x1ZGUvUHl0aG9uLWFzdC5oIHVzaW5nIFBhcnNlci9hc2RsX2MucHkgLWgKKwkkKE1LRElSX1ApICQoc3JjZGlyKS9JbmNsdWRlCisJJChQWVRIT05fRk9SX1JFR0VOKSAkKHNyY2RpcikvUGFyc2VyL2FzZGxfYy5weSBcCisJCS1oICQoc3JjZGlyKS9JbmNsdWRlIFwKKwkJJChzcmNkaXIpL1BhcnNlci9QeXRob24uYXNkbAorCSMgUmVnZW5lcmF0ZSBQeXRob24vUHl0aG9uLWFzdC5jIHVzaW5nIFBhcnNlci9hc2RsX2MucHkgLWMKKwkkKE1LRElSX1ApICQoc3JjZGlyKS9QeXRob24KKwkkKFBZVEhPTl9GT1JfUkVHRU4pICQoc3JjZGlyKS9QYXJzZXIvYXNkbF9jLnB5IFwKKwkJLWMgJChzcmNkaXIpL1B5dGhvbiBcCisJCSQoc3JjZGlyKS9QYXJzZXIvUHl0aG9uLmFzZGwKIAotJChBU1RfQyk6ICQoQVNUX0FTREwpICQoQVNETEdFTl9GSUxFUykKLQkkKE1LRElSX1ApICQoQVNUX0NfRElSKQotCSQoQVNETEdFTikgLWMgJChBU1RfQ19ESVIpICQoQVNUX0FTREwpCi0KLVB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKEdSQU1NQVJfSCkgJChBU1RfSCkKK1B5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAogCiBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCiAJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtRFBMQVRGT1JNPSciJChNQUNIREVQKSInIC1vICRAICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwpAQCAtNzQwLDEwICs3MzMsMTQgQEAKIE9iamVjdHMvc3RyaW5nb2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ29iamVjdC5jIFwKIAkJCQkkKFNUUklOR0xJQl9IRUFERVJTKQogCi0kKE9QQ09ERVRBUkdFVFNfSCk6ICQoT1BDT0RFVEFSR0VUR0VOX0ZJTEVTKQotCSQoT1BDT0RFVEFSR0VUR0VOKSAkKE9QQ09ERVRBUkdFVFNfSCkKKy5QSE9OWTogcmVnZW4tb3Bjb2RlLXRhcmdldHMKK3JlZ2VuLW9wY29kZS10YXJnZXRzOgorCSMgUmVnZW5lcmF0ZSBQeXRob24vb3Bjb2RlX3RhcmdldHMuaCBmcm9tIExpYi9vcGNvZGUucHkKKwkjIHVzaW5nIFB5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQorCSQoUFlUSE9OX0ZPUl9SRUdFTikgJChzcmNkaXIpL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weSBcCisJCSQoc3JjZGlyKS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaAogCi1QeXRob24vY2V2YWwubzogJChPUENPREVUQVJHRVRTX0gpCitQeXRob24vY2V2YWwubzogJChzcmNkaXIpL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCiAKIFB5dGhvbi9mb3JtYXR0ZXJfdW5pY29kZS5vOiAkKHNyY2RpcikvUHl0aG9uL2Zvcm1hdHRlcl91bmljb2RlLmMgXAogCQkJCSQoU1RSSU5HTElCX0hFQURFUlMpCkBAIC04MzgsNyArODM1LDcgQEAKIAkJSW5jbHVkZS93ZWFrcmVmb2JqZWN0LmggXAogCQlweWNvbmZpZy5oIFwKIAkJJChQQVJTRVJfSEVBREVSUykgXAotCQkkKEFTVF9IKQorCQkkKHNyY2RpcikvSW5jbHVkZS9QeXRob24tYXN0LmgKIAogJChMSUJSQVJZX09CSlMpICQoTU9ET0JKUykgTW9kdWxlcy9weXRob24ubzogJChQWVRIT05fSEVBREVSUykKIApAQCAtODUzLDE1ICs4NTAsMTcgQEAKICMgZ2VuZXJhdGVkIGJ5dGVjb2RlLiAgVGhpcyBpcyBzb21ldGltZXMgYSB2ZXJ5IHNoeSBidWcgbmVlZGluZyBhIGxvdCBvZgogIyBzYW1wbGUgZGF0YS4KIAorLlBIT05ZOiB0ZXN0IHRlc3RhbGwgdGVzdHVuaXZlcnNhbCBidWlsZGJvdHRlc3QgcHl0aG9uaW5mbworCiBURVNUT1BUUz0JLWwgJChFWFRSQVRFU1RPUFRTKQogVEVTVFBST0c9CSQoc3JjZGlyKS9MaWIvdGVzdC9yZWdydGVzdC5weQogVEVTVFBZVEhPTj0JJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgLVdkIC0zIC1FIC10dCAkKFRFU1RQWVRIT05PUFRTKQotdGVzdDoJCWFsbCBwbGF0Zm9ybQordGVzdDoJCUBERUZfTUFLRV9SVUxFQCBwbGF0Zm9ybQogCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKIAkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChURVNUT1BUUykKIAkJJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKFRFU1RPUFRTKQogCi10ZXN0YWxsOglhbGwgcGxhdGZvcm0KK3Rlc3RhbGw6CUBERUZfTUFLRV9SVUxFQCBwbGF0Zm9ybQogCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKIAkJJChURVNUUFlUSE9OKSAkKHNyY2RpcikvTGliL2NvbXBpbGVhbGwucHkKIAkJLWZpbmQgJChzcmNkaXIpL0xpYiAtbmFtZSAnKi5weVtjb10nIC1wcmludCB8IHhhcmdzIHJtIC1mCkBAIC04NzAsNyArODY5LDcgQEAKIAogIyAgUnVuIHRoZSB1bml0ZXN0cyBmb3IgYm90aCBhcmNoaXRlY3R1cmVzIGluIGEgVW5pdmVyc2FsIGJ1aWxkIG9uIE9TWAogIyAgTXVzdCBiZSBydW4gb24gYW4gSW50ZWwgYm94LgotdGVzdHVuaXZlcnNhbDoJYWxsIHBsYXRmb3JtCit0ZXN0dW5pdmVyc2FsOglAREVGX01BS0VfUlVMRUAgcGxhdGZvcm0KIAkJaWYgWyBgYXJjaGAgIT0gJ2kzODYnIF07dGhlbiBcCiAJCQllY2hvICJUaGlzIGNhbiBvbmx5IGJlIHVzZWQgb24gT1NYL2kzODYiIDtcCiAJCQlleGl0IDEgO1wKQEAgLTg4NywyNCArODg2LDM1IEBACiAJCS1AaWYgd2hpY2ggcHlidWlsZGJvdC5pZGVudGlmeSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAogCQkJcHlidWlsZGJvdC5pZGVudGlmeSAiQ0M9JyQoQ0MpJyIgIkNYWD0nJChDWFgpJyI7IFwKIAkJZmkKLQkJJChURVNUUFlUSE9OKSAtUiAkKFRFU1RQUk9HKSAtdWFsbCAtcndXICQoVEVTVE9QVFMpCisJCSQoVEVTVFBZVEhPTikgLVIgJChURVNUUFJPRykgLXVhbGwgLS1zbG93ZXN0IC1yd1cgJChURVNUT1BUUykKKworcHl0aG9uaW5mbzogYnVpbGRfYWxsCisJCSQoUlVOU0hBUkVEKSAuLyQoQlVJTERQWVRIT04pIC1tIHRlc3QucHl0aG9uaW5mbwogCiBRVUlDS1RFU1RPUFRTPQkkKFRFU1RPUFRTKSAteCB0ZXN0X3N1YnByb2Nlc3MgdGVzdF9pbyB0ZXN0X2xpYjJ0bzMgXAogCQl0ZXN0X211bHRpYnl0ZWNvZGVjIHRlc3RfdXJsbGliMl9sb2NhbG5ldCB0ZXN0X2l0ZXJ0b29scyBcCiAJCXRlc3RfbXVsdGlwcm9jZXNzaW5nIHRlc3RfbWFpbGJveCB0ZXN0X3NvY2tldCB0ZXN0X3BvbGwgXAogCQl0ZXN0X3NlbGVjdCB0ZXN0X3ppcGZpbGUKLXF1aWNrdGVzdDoJYWxsIHBsYXRmb3JtCitxdWlja3Rlc3Q6CUBERUZfTUFLRV9SVUxFQCBwbGF0Zm9ybQogCQktZmluZCAkKHNyY2RpcikvTGliIC1uYW1lICcqLnB5W2NvXScgLXByaW50IHwgeGFyZ3Mgcm0gLWYKIAkJLSQoVEVTVFBZVEhPTikgJChURVNUUFJPRykgJChRVUlDS1RFU1RPUFRTKQogCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoUVVJQ0tURVNUT1BUUykKIAogTUVNVEVTVE9QVFM9ICAgICQoUVVJQ0tURVNUT1BUUykgLXggdGVzdF9kbCB0ZXN0X19fYWxsX18gdGVzdF9mb3JrMSBcCiAJCXRlc3RfbG9uZ2V4cAotbWVtdGVzdDoJYWxsIHBsYXRmb3JtCittZW10ZXN0OglAREVGX01BS0VfUlVMRUAgcGxhdGZvcm0KIAkJLXJtIC1mICQoc3JjZGlyKS9MaWIvdGVzdC8qLnB5W2NvXQogCQktJChURVNUUFlUSE9OKSAkKFRFU1RQUk9HKSAkKE1FTVRFU1RPUFRTKQogCQkkKFRFU1RQWVRIT04pICQoVEVTVFBST0cpICQoTUVNVEVTVE9QVFMpCiAKKyMgU1NMIHRlc3RzCisuUEhPTlk6IG11bHRpc3NsY29tcGlsZSBtdWx0aXNzbHRlc3QKK211bHRpc3NsY29tcGlsZTogYnVpbGRfYWxsCisJJChSVU5TSEFSRUQpIC4vJChCVUlMRFBZVEhPTikgVG9vbHMvc3NsL211bHRpc3NsdGVzdHMucHkgLS1jb21waWxlLW9ubHkKKworbXVsdGlzc2x0ZXN0OiBidWlsZF9hbGwKKwkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSBUb29scy9zc2wvbXVsdGlzc2x0ZXN0cy5weQorCiAjIEluc3RhbGwgZXZlcnl0aGluZwogaW5zdGFsbDoJQEZSQU1FV09SS0lOU1RBTExGSVJTVEAgY29tbW9uaW5zdGFsbCBiaW5pbnN0YWxsIG1hbmluc3RhbGwgQEZSQU1FV09SS0lOU1RBTExMQVNUQAogCWlmIHRlc3QgIngkKEVOU1VSRVBJUCkiICE9ICJ4bm8iICA7IHRoZW4gXApAQCAtOTI3LDcgKzkzNyw3IEBACiAJCQkkJGVuc3VyZXBpcCAtLXJvb3Q9JChERVNURElSKS8gOyBcCiAJZmkKIAotY29tbW9uaW5zdGFsbDoJQEZSQU1FV09SS0FMVElOU1RBTExGSVJTVEAgXAorY29tbW9uaW5zdGFsbDoJY2hlY2stY2xlYW4tc3JjIEBGUkFNRVdPUktBTFRJTlNUQUxMRklSU1RAIFwKIAkJYWx0YmluaW5zdGFsbCBsaWJpbnN0YWxsIGluY2xpbnN0YWxsIGxpYmFpbnN0YWxsIFwKIAkJc2hhcmVkaW5zdGFsbCBvbGRzaGFyZWRpbnN0YWxsIGFsdG1hbmluc3RhbGwgXAogCQlARlJBTUVXT1JLQUxUSU5TVEFMTExBU1RACkBAIC0xMDQ0LDYgKzEwNTQsNyBAQAogCQl0ZXN0L2RhdGEgdGVzdC9jamtlbmNvZGluZ3MgdGVzdC9kZWNpbWFsdGVzdGRhdGEgdGVzdC94bWx0ZXN0ZGF0YSBcCiAJCXRlc3QvaW1naGRyZGF0YSBcCiAJCXRlc3Qvc3VicHJvY2Vzc2RhdGEgXAorCQl0ZXN0L3N1cHBvcnQgXAogCQl0ZXN0L3RyYWNlZG1vZHVsZXMgXAogCQllbmNvZGluZ3MgY29tcGlsZXIgaG90c2hvdCBcCiAJCWVtYWlsIGVtYWlsL21pbWUgZW1haWwvdGVzdCBlbWFpbC90ZXN0L2RhdGEgXApAQCAtMTE5MCw3ICsxMjAxLDcgQEAKICMgcGtnY29uZmlnIGRpcmVjdG9yeQogTElCUEM9CQkkKExJQkRJUikvcGtnY29uZmlnCiAKLWxpYmFpbnN0YWxsOglhbGwgcHl0aG9uLWNvbmZpZworbGliYWluc3RhbGw6CUBERUZfTUFLRV9SVUxFQCBweXRob24tY29uZmlnCiAJQGZvciBpIGluICQoTElCRElSKSAkKExJQlApICQoTElCUEwpICQoTElCUEMpOyBcCiAJZG8gXAogCQlpZiB0ZXN0ICEgLWQgJChERVNURElSKSQkaTsgdGhlbiBcCkBAIC0xMzU3LDE4ICsxMzY4LDIwIEBACiAJJChTSEVMTCkgY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sKIAkkKFNIRUxMKSBjb25maWcuc3RhdHVzCiAKLSMgUmVidWlsZCB0aGUgY29uZmlndXJlIHNjcmlwdCBmcm9tIGNvbmZpZ3VyZS5hYzsgYWxzbyByZWJ1aWxkIHB5Y29uZmlnLmguaW4KKyMgUmVnZW5lcmF0ZSBjb25maWd1cmUgYW5kIHB5Y29uZmlnLmguaW4KKy5QSE9OWTogYXV0b2NvbmYKIGF1dG9jb25mOgorCSMgUmVnZW5lcmF0ZSB0aGUgY29uZmlndXJlIHNjcmlwdCBmcm9tIGNvbmZpZ3VyZS5hYyB1c2luZyBhdXRvY29uZgogCShjZCAkKHNyY2Rpcik7IGF1dG9jb25mKQorCSMgUmVnZW5lcmF0ZSBweWNvbmZpZy5oLmluIGZyb20gY29uZmlndXJlLmFjIHVzaW5nIGF1dG9oZWFkZXIKIAkoY2QgJChzcmNkaXIpOyBhdXRvaGVhZGVyKQogCiAjIENyZWF0ZSBhIHRhZ3MgZmlsZSBmb3IgdmkKIHRhZ3M6OgotCWNkICQoc3JjZGlyKTsgXAotCWN0YWdzIC13IC10IEluY2x1ZGUvKi5oOyBcCi0JZm9yIGkgaW4gJChTUkNESVJTKTsgZG8gY3RhZ3MgLXcgLXQgLWEgJCRpLyouW2NoXTsgXAotCWRvbmU7IFwKLQlzb3J0IC1vIHRhZ3MgdGFncworCWN0YWdzIC13ICQoc3JjZGlyKS9JbmNsdWRlLyouaAorCWZvciBpIGluICQoU1JDRElSUyk7IGRvIGN0YWdzIC1mIHRhZ3MgLXcgLWEgJChzcmNkaXIpLyQkaS8qLltjaF07IGRvbmUKKwljdGFncyAtZiB0YWdzIC13IC1hICQoc3JjZGlyKS9Nb2R1bGVzL19jdHlwZXMvKi5bY2hdCisJTENfQUxMPUMgc29ydCAtbyB0YWdzIHRhZ3MKIAogIyBDcmVhdGUgYSB0YWdzIGZpbGUgZm9yIEdOVSBFbWFjcwogVEFHUzo6CkBAIC0xMzc2LDExICsxMzg5LDYgQEAKIAlldGFncyBJbmNsdWRlLyouaDsgXAogCWZvciBpIGluICQoU1JDRElSUyk7IGRvIGV0YWdzIC1hICQkaS8qLltjaF07IGRvbmUKIAotIyBUb3VjaCBnZW5lcmF0ZWQgZmlsZXMKLXRvdWNoOgotCWNkICQoc3JjZGlyKTsgXAotCXRvdWNoIEluY2x1ZGUvUHl0aG9uLWFzdC5oIFB5dGhvbi9QeXRob24tYXN0LmMKLQogIyBTYW5pdGF0aW9uIHRhcmdldHMgLS0gY2xlYW4gbGVhdmVzIGxpYnJhcmllcywgZXhlY3V0YWJsZXMgYW5kIHRhZ3MKICMgZmlsZXMsIHdoaWNoIGNsb2JiZXIgcmVtb3ZlcyBhcyB3ZWxsCiBweWNyZW1vdmFsOgpAQCAtMTQzMCw3ICsxNDM4LDcgQEAKIAkJCQkgICAgIC1leGVjIHJtIC1mIHt9ICc7JwogCiAjIENoZWNrIGZvciBzbWVsbHkgZXhwb3J0ZWQgc3ltYm9scyAobm90IHN0YXJ0aW5nIHdpdGggUHkvX1B5KQotc21lbGx5OiBhbGwKK3NtZWxseTogQERFRl9NQUtFX1JVTEVACiAJbm0gLXAgJChMSUJSQVJZKSB8IFwKIAkJc2VkIC1uICIvIFtUREJdIC9zLy4qIC8vcCIgfCBncmVwIC12ICJeXypQeSIgfCBzb3J0IC11OyBcCiAKQEAgLTE0NzIsMTMgKzE0ODAsMTMgQEAKIFB5dGhvbi90aHJlYWQubzogQFRIUkVBREhFQURFUlNACiAKICMgRGVjbGFyZSB0YXJnZXRzIHRoYXQgYXJlbid0IHJlYWwgZmlsZXMKLS5QSE9OWTogYWxsIGJ1aWxkX2FsbCBzaGFyZWRtb2RzIG9sZHNoYXJlZG1vZHMgdGVzdCBxdWlja3Rlc3QgbWVtdGVzdAorLlBIT05ZOiBhbGwgYnVpbGRfYWxsIHNoYXJlZG1vZHMgY2hlY2stY2xlYW4tc3JjIG9sZHNoYXJlZG1vZHMgdGVzdCBxdWlja3Rlc3QgbWVtdGVzdAogLlBIT05ZOiBpbnN0YWxsIGFsdGluc3RhbGwgb2xkc2hhcmVkaW5zdGFsbCBiaW5pbnN0YWxsIGFsdGJpbmluc3RhbGwKIC5QSE9OWTogbWFuaW5zdGFsbCBsaWJpbnN0YWxsIGluY2xpbnN0YWxsIGxpYmFpbnN0YWxsIHNoYXJlZGluc3RhbGwKIC5QSE9OWTogZnJhbWV3b3JraW5zdGFsbCBmcmFtZXdvcmtpbnN0YWxsZnJhbWV3b3JrIGZyYW1ld29ya2luc3RhbGxzdHJ1Y3R1cmUKIC5QSE9OWTogZnJhbWV3b3JraW5zdGFsbG1hY2xpYiBmcmFtZXdvcmtpbnN0YWxsYXBwcyBmcmFtZXdvcmtpbnN0YWxsdW5peHRvb2xzCi0uUEhPTlk6IGZyYW1ld29ya2FsdGluc3RhbGx1bml4dG9vbHMgcmVjaGVjayBhdXRvY29uZiBjbGVhbiBjbG9iYmVyIGRpc3RjbGVhbgotLlBIT05ZOiBzbWVsbHkgZnVubnkgcGF0Y2hjaGVjayB0b3VjaCBhbHRtYW5pbnN0YWxsIGNvbW1vbmluc3RhbGwKKy5QSE9OWTogZnJhbWV3b3JrYWx0aW5zdGFsbHVuaXh0b29scyByZWNoZWNrIGNsZWFuIGNsb2JiZXIgZGlzdGNsZWFuCisuUEhPTlk6IHNtZWxseSBmdW5ueSBwYXRjaGNoZWNrIGFsdG1hbmluc3RhbGwgY29tbW9uaW5zdGFsbAogLlBIT05ZOiBnZGJob29rcwogCiAjIElGIFlPVSBQVVQgQU5ZVEhJTkcgSEVSRSBJVCBXSUxMIEdPIEFXQVkKZGlmZiAtLWdpdCBhL01pc2MvQUNLUyBiL01pc2MvQUNLUwppbmRleCA5Y2JjMjMwLi44MzVkMzYxIDEwMDY0NAotLS0gYS9NaXNjL0FDS1MKKysrIGIvTWlzYy9BQ0tTCkBAIC0zNyw2ICszNyw3IEBACiBNYXJrIEFuYWNrZXIKIFNoYXNod2F0IEFuYW5kCiBBbmRlcnMgQW5kZXJzZW4KK1R5Y2hvIEFuZGVyc2VuCiBKb2huIEFuZGVyc29uCiBQZWhyIEFuZGVyc29uCiBFcmlrIEFuZGVyc8OpbgpAQCAtOTMsNiArOTQsNyBAQAogQW50aG9ueSBCYXh0ZXIKIE1pa2UgQmF5ZXIKIFNhbXVlbCBMLiBCYXllcgorQm8gQmF5bGVzCiBEb25hbGQgQmVhdWRyeQogRGF2aWQgQmVhemxleQogQ2FybG8gQmVjY2FyaW5pCkBAIC0xMzcsNiArMTM5LDcgQEAKIE1hcnRpbiBCbGVzcwogUGFibG8gQmxleWVyCiBFcmlrIHZhbiBCbG9rbGFuZAorU3TDqXBoYW5lIEJsb25kb24KIEVyaWMgQmxvc3NvbQogU2VyZ2V5IEJvYnJvdgogRmlubiBCb2NrCkBAIC0xNTEsNiArMTU0LDcgQEAKIE1hdGlhcyBCb3JkZXNlCiBKb25hcyBCb3Jnc3Ryw7ZtCiBKdXJqZW4gQm9zCitKYXkgQm9zYW1peWEKIFBldGVyIEJvc2NoCiBEYW4gQm9zd2VsbAogRXJpYyBCb3VjawpAQCAtMjYwLDYgKzI2NCw3IEBACiBSb2JiaWUgQ2xlbW9ucwogU3RldmUgQ2xpZnQKIEhlcnbDqSBDb2F0YW5oYXkKK1JpY2NhcmRvIENvY2Npb2xpCiBOaWNrIENvZ2hsYW4KIEpvc2ggQ29nbGlhdGkKIERhdmUgQ29sZQpAQCAtMzE0LDYgKzMxOSw5IEBACiBKb25hdGhhbiBEYXN0ZWVsCiBQaWVycmUtWXZlcyBEYXZpZAogQS4gSmVzc2UgSmlyeXUgRGF2aXMKK0pha2UgRGF2aXMKK0phbWllIChKYW1lcyBDLikgRGF2aXMKK1JhdG5hZGVlcCBEZWJuYXRoCiBNZXJsaWpuIHZhbiBEZWVuCiBKb2huIERlR29vZAogTmVkIERlaWx5CkBAIC0zMjEsNiArMzI5LDcgQEAKIEFybmF1ZCBEZWxvYmVsbGUKIEtvbnJhZCBEZWxvbmcKIEVyaWsgRGVtYWluZQorSmVyb2VuIERlbWV5ZXIKIE1hcnRpbiBEZW5nbGVyCiBKb2huIERlbm5pcwogTC4gUGV0ZXIgRGV1dHNjaApAQCAtMzcyLDYgKzM4MSw3IEBACiBEYXZpZCBFZGVsc29obgogSm9obiBFZG1vbmRzCiBHcmFudCBFZHdhcmRzCitadmkgRWZmcm9uCiBKb2huIEVocmVzbWFuCiBUYWwgRWluYXQKIEVyaWMgRWlzbmVyCkBAIC00OTksNiArNTA5LDcgQEAKIFRpbSBHcmFoYW0KIE5hdGhhbmllbCBHcmF5CiBFZGR5IERlIEdyZWVmCitEdWFuZSBHcmlmZmluCiBHcmFudCBHcmlmZmluCiBBbmRyZWEgR3JpZmZpbmkKIER1bmNhbiBHcmlzYnkKQEAgLTUwNiw2ICs1MTcsNyBAQAogRXJpYyBHcm9vCiBEYWcgR3J1bmVhdQogRmlsaXAgR3J1c3pjennFhHNraQorR3J6ZWdvcnogR3J6eXdhY3oKIFRob21hcyBHdWV0dGxlcgogQW51aiBHdXB0YQogTWljaGFlbCBHdXJhdmFnZQpAQCAtNTM5LDYgKzU1MSw3IEBACiBCcmlhbiBIYXJyaW5nCiBKb25hdGhhbiBIYXJ0bGV5CiBUcmF2aXMgQi4gSGFydHdlbGwKK1NoYW5lIEhhcnZleQogTGFycnkgSGFzdGluZ3MKIFRpbSBIYXRjaAogU2hhbmUgSGF0aGF3YXkKQEAgLTcxMSwxMSArNzI0LDEzIEBACiBMYXdyZW5jZSBLZXN0ZWxvb3QKIFZpdmVrIEtoZXJhCiBEaGlydSBLaG9saWEKK1NhbnlhbSBLaHVyYW5hCiBNYWRzIEtpaWxlcmljaAogSmFzb24gS2lsbGVuCiBKYW4gS2ltCiBUYWVrIEpvbyBLaW0KIFNhbSBLaW1icmVsCitUb21vaGlrbyBLaW5lYnVjaGkKIFcuIFRyZXZvciBLaW5nCiBQYXVsIEtpcHBlcwogU3RldmUgS2lyc2NoCkBAIC03MzMsNiArNzQ4LDcgQEAKIExlbm55IEtuZWxlcgogUGF0IEtuaWdodAogSmVmZiBLbnVwcAorTmljaG9sYXMgS29iYWxkCiBLdWJpbGF5IEtvY2FrCiBHcmVnIEtvY2hhbnNraQogTWFudmlzaGEgS29kYWxpCkBAIC03NTQsNiArNzcwLDcgQEAKIE1ha3NpbSBLb3p5YXJjaHVrCiBTdGVmYW4gS3JhaAogQm9iIEtyYXMKK09sZWcgS3Jhc25pa292CiBTZWJhc3RpYW4gS3JlZnQKIEhvbGdlciBLcmVrZWwKIE1pY2hhZWwgS3JlbWVyCkBAIC03NjMsNiArNzgwLDcgQEAKIEhhbm51IEtyb3NpbmcKIEFuZHJlaiBLcnBpYwogSXZhbiBLcnN0acSHCitBbnNlbG0gS3J1aXMKIFN0ZXZlbiBLcnlza2FsbGEKIEFuZHJldyBLdWNobGluZwogRGF2ZSBLdWhsbWFuCkBAIC03OTAsNiArODA4LDcgQEAKIFNpbW9uIExhdwogSnVsaWEgTGF3YWxsCiBDaHJpcyBMYXdyZW5jZQorTWljaGFlbCBMYXphcgogQnJpYW4gTGVhaXIKIE1hdGhpZXUgTGVkdWMtSGFtZWwKIEFtYW5kaW5lIExlZQpAQCAtODk5LDYgKzkxOCw3IEBACiBQYW0gTWNBJ051bHR5CiBNYXR0IE1jQ2x1cmUKIFJlYmVjY2EgTWNDcmVhcnkKK1NlYW4gTWNDdWxseQogS2lyayBNY0RvbmFsZAogQ2hyaXMgTWNEb25vdWdoCiBHcmVnIE1jRmFybGFuZQpAQCAtOTg2LDYgKzEwMDYsNyBAQAogTWF4IE5ldW5ow7ZmZmVyCiBHZW9yZ2UgTmV2aWxsZS1OZWlsCiBIaWV1IE5ndXllbgorTmFtIE5ndXllbgogSm9oYW5uZXMgTmljb2xhaQogU2FtdWVsIE5pY29sYXJ5CiBKb25hdGhhbiBOaWVob2YKQEAgLTEwMTUsNiArMTAzNiw3IEBACiBQYXNjYWwgT2Jlcm5kb2VyZmVyCiBKZWZmcmV5IE9sbGllCiBBZGFtIE9sc2VuCitCcnlhbiBPbHNvbgogR3JhbnQgT2xzb24KIEtvcmF5IE9uZXIKIFBpZXQgdmFuIE9vc3RydW0KQEAgLTEwMjMsNiArMTA0NSw3IEBACiBEb3VnbGFzIE9ycgogV2lsbGlhbSBPcnIKIE1pY2hlbGUgT3Jyw7kKK1RvbcOhxaEgT3JzYXZhCiBPbGVnIE9zaG15YW4KIERlbmlzIFMuIE90a2lkYWNoCiBQZXRlciBPdHRlbgpAQCAtMTIxNyw2ICsxMjQwLDcgQEAKIENocmlzIFJ5bGFuZAogQ29uc3RhbnRpbmEgUy4KIE1hdHRoaWV1IFMKK0NoZXJ5bCBTYWJlbGxhCiBQYXRyaWNrIFNhYmluCiBTw6liYXN0aWVuIFNhYmzDqQogU3VtYW4gU2FoYQpAQCAtMTMyOSw2ICsxMzUzLDcgQEAKIFBlciBTcGlsbGluZwogSm9zaHVhIFNwb2VycmkKIE5vYWggU3B1cnJpZXIKK1phY2tlcnkgU3B5dHoKIE5hdGhhbiBTcmVicm8KIFJhakdvcGFsIFNyaW5pdmFzYW4KIFRhZ2UgU3RhYmVsbC1LdWxvCkBAIC0xNTQwLDYgKzE1NjUsNyBAQAogRGFycmVuIFdvcnJhbGwKIFRob21hcyBXb3V0ZXJzCiBEYW5pZWwgV296bmlhaworTWFyY2luIE5pZW1pcmEKIEhlaWtvIFd1bmRyYW0KIERvdWcgV3lhdHQKIFhpYW5nIFpoYW5nCkBAIC0xNTQ3LDExICsxNTczLDEzIEBACiBGbG9yZW50IFhpY2x1bmEKIEFsYWtzaGVuZHJhIFlhZGF2CiBIaXJva2F6dSBZYW1hbW90bworTWFzYXl1a2kgWWFtYW1vdG8KIEthLVBpbmcgWWVlCiBKYXNvbiBZZW8KIEV1bmdKdW4gWWkKIEJvYiBZb2Rsb3dza2kKIERhbm55IFlvbworV29uc3VwIFlvb24KIFJvcnkgWW9ya2UKIEdlb3JnZSBZb3NoaWRhCiBLYXp1aGlybyBZb3NoaWRhCkBAIC0xNTczLDMgKzE2MDEsNCBAQAogSmVsbGUgWmlqbHN0cmEKIEdlbm5hZGl5IFpsb2JpbgogUGV0ZXIgw4VzdHJhbmQKK0RodXNoeWFudGggUmFtYXNhbXkKZGlmZiAtLWdpdCBhL01pc2MvTkVXUyBiL01pc2MvTkVXUwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjc3OWU4Mi4uMDAwMDAwMAotLS0gYS9NaXNjL05FV1MKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIwNyArMCwwIEBACi0rKysrKysrKysrKwotUHl0aG9uIE5ld3MKLSsrKysrKysrKysrCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNy4xMwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMTYtMTItMTcqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIFJldmVydCBhMzdjYzNkOTI2ZWMgKElzc3VlICM1MzIyKS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcuMTMgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDE2LTEyLTAzKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjg4NDc6IGR1bWJkYm0gbm8gbG9uZ2VyIHdyaXRlcyB0aGUgaW5kZXggZmlsZSBpbiB3aGVuIGl0IGlzIG5vdAotICBjaGFuZ2VkIGFuZCBzdXBwb3J0cyByZWFkaW5nIHJlYWQtb25seSBmaWxlcy4KLQotLSBJc3N1ZSAjMTExNDU6IEZpeGVkIG1pc2NlbGxhbmVvdXMgaXNzdWVzIHdpdGggQy1zdHlsZSBmb3JtYXR0aW5nIG9mIHR5cGVzCi0gIHdpdGggY3VzdG9tIF9fb2N0X18gYW5kIF9faGV4X18uCi0KLS0gSXNzdWUgIzI0NDY5OiBGaXhlZCBtZW1vcnkgbGVhayBjYXVzZWQgYnkgaW50IHN1YmNsYXNzZXMgd2l0aG91dCBvdmVycmlkZGVuCi0gIHRwX2ZyZWUgKGUuZy4gQy1pbmhlcml0ZWQgQ3l0aG9uIGNsYXNzZXMpLgotCi0tIElzc3VlICMxOTM5ODogRXh0cmEgc2xhc2ggbm8gbG9uZ2VyIGFkZGVkIHRvIHN5cy5wYXRoIGNvbXBvbmVudHMgaW4gY2FzZSBvZgotICBlbXB0eSBjb21waWxlLXRpbWUgUFlUSE9OUEFUSCBjb21wb25lbnRzLgotCi0tIElzc3VlICMyMTcyMDogSW1wcm92ZSBleGNlcHRpb24gbWVzc2FnZSB3aGVuIHRoZSB0eXBlIG9mIGZyb21saXN0IGlzIHVuaWNvZGUuCi0gIGZyb21saXN0IHBhcmFtZXRlciBvZiBfX2ltcG9ydF9fKCkgb25seSBhY2NlcHRzIHN0ciBpbiBQeXRob24gMiBhbmQgdGhpcwotICB3aWxsIGhlbHAgdG8gaWRlbnRpZnkgdGhlIHByb2JsZW0gZXNwZWNpYWxseSB3aGVuIHRoZSB1bmljb2RlX2xpdGVyYWxzCi0gIGZ1dHVyZSBpbXBvcnQgaXMgdXNlZC4KLQotLSBJc3N1ZSAjMjY5MDY6IFJlc29sdmluZyBzcGVjaWFsIG1ldGhvZHMgb2YgdW5pbml0aWFsaXplZCB0eXBlIG5vdyBjYXVzZXMKLSAgaW1wbGljaXQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHR5cGUgaW5zdGVhZCBvZiBhIGZhaWwuCi0KLS0gSXNzdWUgIzE4Mjg3OiBQeVR5cGVfUmVhZHkoKSBub3cgY2hlY2tzIHRoYXQgdHBfbmFtZSBpcyBub3QgTlVMTC4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgTmlrbGFzIEtvZXAuCi0KLS0gSXNzdWUgIzI0MDk4OiBGaXhlZCBwb3NzaWJsZSBjcmFzaCB3aGVuIEFTVCBpcyBjaGFuZ2VkIGluIHByb2Nlc3Mgb2YKLSAgY29tcGlsaW5nIGl0LgotCi0tIElzc3VlICMyODM1MDogU3RyaW5nIGNvbnN0YW50cyB3aXRoIG51bGwgY2hhcmFjdGVyIG5vIGxvbmdlciBpbnRlcm5lZC4KLQotLSBJc3N1ZSAjMjc5NDI6IFN0cmluZyBjb25zdGFudHMgbm93IGludGVybmVkIHJlY3Vyc2l2ZWx5IGluIHR1cGxlcyBhbmQgZnJvemVuc2V0cy4KLQotLSBJc3N1ZSAjMTU1Nzg6IENvcnJlY3RseSBpbmNyZWYgdGhlIHBhcmVudCBtb2R1bGUgd2hpbGUgaW1wb3J0aW5nLgotCi0tIElzc3VlICMyNjMwNzogVGhlIHByb2ZpbGUtb3B0IGJ1aWxkIG5vdyBhcHBsaWVzIFBHTyB0byB0aGUgYnVpbHQtaW4gbW9kdWxlcy4KLQotLSBJc3N1ZSAjMjYwMjA6IHNldCBsaXRlcmFsIGV2YWx1YXRpb24gb3JkZXIgZGlkIG5vdCBtYXRjaCBkb2N1bWVudGVkIGJlaGF2aW91ci4KLQotLSBJc3N1ZSAjMjc4NzA6IEEgbGVmdCBzaGlmdCBvZiB6ZXJvIGJ5IGEgbGFyZ2UgaW50ZWdlciBubyBsb25nZXIgYXR0ZW1wdHMKLSAgdG8gYWxsb2NhdGUgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCi0KLS0gSXNzdWUgIzI1NjA0OiBGaXggYSBtaW5vciBidWcgaW4gaW50ZWdlciB0cnVlIGRpdmlzaW9uOyB0aGlzIGJ1ZyBjb3VsZAotICBwb3RlbnRpYWxseSBoYXZlIGNhdXNlZCBvZmYtYnktb25lLXVscCByZXN1bHRzIG9uIHBsYXRmb3JtcyB3aXRoCi0gIHVucmVsaWFibGUgbGRleHAgaW1wbGVtZW50YXRpb25zLgotCi0tIElzc3VlICMyNzQ3MzogRml4ZWQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiBzdHIsIHVuaWNvZGUgYW5kIGJ5dGVhcnJheQotICBjb25jYXRlbmF0aW9ucyBhbmQgcmVwZXRpdGlvbnMuICBCYXNlZCBvbiBwYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc1MDc6IEFkZCBpbnRlZ2VyIG92ZXJmbG93IGNoZWNrIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoIGJ5Ci0gIFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzU4MTogRG9uJ3QgcmVseSBvbiB3cmFwcGluZyBmb3Igb3ZlcmZsb3cgY2hlY2sgaW4KLSAgUHlTZXF1ZW5jZV9UdXBsZSgpLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzIzOTA4OiBvcyBmdW5jdGlvbnMsIG9wZW4oKSBhbmQgdGhlIGlvLkZpbGVJTyBjb25zdHJ1Y3RvciBub3cgcmVqZWN0Ci0gIHVuaWNvZGUgcGF0aHMgd2l0aCBlbWJlZGRlZCBudWxsIGNoYXJhY3RlciBvbiBXaW5kb3dzIGluc3RlYWQgb2Ygc2lsZW50bHkKLSAgdHJ1bmNhdGluZyB0aGVtLgotCi0tIElzc3VlICMyNzUxNDogTWFrZSBoYXZpbmcgdG9vIG1hbnkgc3RhdGljYWxseSBuZXN0ZWQgYmxvY2tzIGEgU3ludGF4RXJyb3IKLSAgaW5zdGVhZCBvZiBTeXN0ZW1FcnJvci4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMyNTY1OTogSW4gY3R5cGVzLCBwcmV2ZW50IGEgY3Jhc2ggY2FsbGluZyB0aGUgZnJvbV9idWZmZXIoKSBhbmQKLSAgZnJvbV9idWZmZXJfY29weSgpIG1ldGhvZHMgb24gYWJzdHJhY3QgY2xhc3NlcyBsaWtlIEFycmF5LgotCi0tIElzc3VlICMyODU2MzogRml4ZWQgcG9zc2libGUgRG9TIGFuZCBhcmJpdHJhcnkgY29kZSBleGVjdXRpb24gd2hlbiBoYW5kbGUKLSAgcGx1cmFsIGZvcm0gc2VsZWN0aW9ucyBpbiB0aGUgZ2V0dGV4dCBtb2R1bGUuICBUaGUgZXhwcmVzc2lvbiBwYXJzZXIgbm93Ci0gIHN1cHBvcnRzIGV4YWN0IHN5bnRheCBzdXBwb3J0ZWQgYnkgR05VIGdldHRleHQuCi0KLS0gSXNzdWUgIzI4Mzg3OiBGaXhlZCBwb3NzaWJsZSBjcmFzaCBpbiBfaW8uVGV4dElPV3JhcHBlciBkZWFsbG9jYXRvciB3aGVuCi0gIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBpcyBpbnZva2VkIGluIG90aGVyIHRocmVhZC4gIEJhc2VkIG9uIHBhdGNoIGJ5Ci0gIFNlYmFzdGlhbiBDdWZyZS4KLQotLSBJc3N1ZSAjMjg0NDk6IHRhcmZpbGUub3BlbigpIHdpdGggbW9kZSAiciIgb3IgInI6IiBub3cgdHJpZXMgdG8gb3BlbiBhIHRhcgotICBmaWxlIHdpdGggY29tcHJlc3Npb24gYmVmb3JlIHRyeWluZyB0byBvcGVuIGl0IHdpdGhvdXQgY29tcHJlc3Npb24uICBPdGhlcndpc2UKLSAgaXQgaGFkIDUwJSBjaGFuY2UgZmFpbGVkIHdpdGggaWdub3JlX3plcm9zPVRydWUuCi0KLS0gSXNzdWUgIzI1NDY0OiBGaXhlZCBITGlzdC5oZWFkZXJfZXhpc3RzKCkgaW4gVGl4IG1vZHVsZSBieSBhZGRpbmcKLSAgYSB3b3JrYXJvdW5kIHRvIFRpeCBsaWJyYXJ5IGJ1Zy4KLQotLSBJc3N1ZSAjMjg0ODg6IHNodXRpbC5tYWtlX2FyY2hpdmUoKSBubyBsb25nZXIgYWRkcyBlbnRyeSAiLi8iIHRvIFpJUCBhcmNoaXZlLgotCi0tIElzc3VlICMyODQ4MDogRml4IGVycm9yIGJ1aWxkaW5nIF9zcWxpdGUzIG1vZHVsZSB3aGVuIG11bHRpdGhyZWFkaW5nIGlzCi0gIGRpc2FibGVkLgotCi0tIElzc3VlICMyNDQ1MjogTWFrZSB3ZWJicm93c2VyIHN1cHBvcnQgQ2hyb21lIG9uIE1hYyBPUyBYLgotCi0tIElzc3VlICMyNjI5MzogRml4ZWQgd3JpdGluZyBaSVAgZmlsZXMgdGhhdCBzdGFydHMgbm90IGZyb20gdGhlIHN0YXJ0IG9mIHRoZQotICBmaWxlLiAgT2Zmc2V0cyBpbiBaSVAgZmlsZSBub3cgYXJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgYXJjaGl2ZSBpbgotICBjb25mb3JtaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uLgotCi0tIEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBhbmQgY3Jhc2hlcyBpbiB0aGUgbW1hcCBtb2R1bGUgd2l0aCB1bnVzdWFsCi0gIHVzYWdlIHBhdHRlcm5zLgotCi0tIElzc3VlICMyNzg5NzogRml4ZWQgcG9zc2libGUgY3Jhc2ggaW4gc3FsaXRlMy5Db25uZWN0aW9uLmNyZWF0ZV9jb2xsYXRpb24oKQotICBpZiBwYXNzIGludmFsaWQgc3RyaW5nLWxpa2Ugb2JqZWN0IGFzIGEgbmFtZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMxNzAzMTc4OiBGaXggdGhlIGFiaWxpdHkgdG8gcGFzcyB0aGUgLS1saW5rLW9iamVjdHMgb3B0aW9uIHRvIHRoZQotICBkaXN0dXRpbHMgYnVpbGRfZXh0IGNvbW1hbmQuCi0KLS0gSXNzdWUgIzI4MjUzOiBGaXhlZCBjYWxlbmRhciBmdW5jdGlvbnMgZm9yIGV4dHJlbWUgbW9udGhzOiAwMDAxLTAxCi0gIGFuZCA5OTk5LTEyLgotCi0gIE1ldGhvZHMgaXRlcm1vbnRoZGF5cygpIGFuZCBpdGVybW9udGhkYXlzMigpIGFyZSByZWltcGxlbWVudGVkIHNvCi0gIHRoYXQgdGhleSBkb24ndCBjYWxsIGl0ZXJtb250aGRhdGVzKCkgd2hpY2ggY2FuIGNhdXNlIGRhdGV0aW1lLmRhdGUKLSAgdW5kZXIvb3ZlcmZsb3cuCi0KLS0gSXNzdWUgIzI3OTYzOiBGaXhlZCBwb3NzaWJsZSBudWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4KLSAgY3R5cGVzLnNldF9jb252ZXJzaW9uX21vZGUoKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyODI4NDogU3RyZW5ndGhlbiByZXNpc3RhbmNlIG9mIGBgX2pzb24uZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkoKWBgIHRvCi0gIGludGVnZXIgb3ZlcmZsb3cuCi0KLS0gSXNzdWUgIzI3NjExOiBGaXhlZCBzdXBwb3J0IG9mIGRlZmF1bHQgcm9vdCB3aW5kb3cgaW4gdGhlIFRpeCBtb2R1bGUuCi0KLS0gSXNzdWUgIzI0MzYzOiBXaGVuIHBhcnNpbmcgSFRUUCBoZWFkZXIgZmllbGRzLCBpZiBhbiBpbnZhbGlkIGxpbmUgaXMKLSAgZW5jb3VudGVyZWQsIHNraXAgaXQgYW5kIGNvbnRpbnVlIHBhcnNpbmcuICBQcmV2aW91c2x5LCBubyBtb3JlIGhlYWRlcgotICBmaWVsZHMgd2VyZSBwYXJzZWQsIHdoaWNoIGNvdWxkIGxlYWQgdG8gZmllbGRzIGZvciBIVFRQIGZyYW1pbmcgbGlrZQotICBDb250ZW50LUxlbmd0aCBhbmQgVHJhbnNmZXItRW5jb2RpbmcgYmVpbmcgb3Zlcmxvb2tlZC4KLQotLSBJc3N1ZSAjMjc1OTk6IEZpeGVkIGJ1ZmZlciBvdmVycnVuIGluIGJpbmFzY2lpLmIyYV9xcCgpIGFuZCBiaW5hc2NpaS5hMmJfcXAoKS4KLQotLSBJc3N1ZSAjMjU5Njk6IFVwZGF0ZSB0aGUgbGliMnRvMyBncmFtbWFyIHRvIGhhbmRsZSB0aGUgdW5wYWNraW5nCi0gIGdlbmVyYWxpemF0aW9ucyBhZGRlZCBpbiAzLjUuCi0KLS0gSXNzdWUgIzI0NTk0OiBWYWxpZGF0ZXMgcGVyc2lzdCBwYXJhbWV0ZXIgd2hlbiBvcGVuaW5nIE1TSSBkYXRhYmFzZQotCi0tIElzc3VlICMyNzU3MDogQXZvaWQgemVyby1sZW5ndGggbWVtY3B5KCkgZXRjIGNhbGxzIHdpdGggbnVsbCBzb3VyY2UKLSAgcG9pbnRlcnMgaW4gdGhlICJjdHlwZXMiIGFuZCAiYXJyYXkiIG1vZHVsZXMuCi0KLS0gSXNzdWUgIzIyNDUwOiB1cmxsaWIgbm93IGluY2x1ZGVzIGFuICJBY2NlcHQ6ICovKiIgaGVhZGVyIGFtb25nIHRoZQotICBkZWZhdWx0IGhlYWRlcnMuICBUaGlzIG1ha2VzIHRoZSByZXN1bHRzIG9mIFJFU1QgQVBJIHJlcXVlc3RzIG1vcmUKLSAgY29uc2lzdGVudCBhbmQgcHJlZGljdGFibGUgZXNwZWNpYWxseSB3aGVuIHByb3h5IHNlcnZlcnMgYXJlIGludm9sdmVkLgotCi0tIGxpYjJ0bzMucGdlbjMuZHJpdmVyLmxvYWRfZ3JhbW1hcigpIG5vdyBjcmVhdGVzIGEgc3RhYmxlIGNhY2hlIGZpbGUKLSAgYmV0d2VlbiBydW5zIGdpdmVuIHRoZSBzYW1lIEdyYW1tYXIudHh0IGlucHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGhhc2gKLSAgcmFuZG9taXphdGlvbiBzZXR0aW5nLgotCi0tIElzc3VlICMyNzY5MTogRml4IHNzbCBtb2R1bGUncyBwYXJzaW5nIG9mIEdFTl9SSUQgc3ViamVjdCBhbHRlcm5hdGl2ZSBuYW1lCi0gIGZpZWxkcyBpbiBYLjUwOSBjZXJ0cy4KLQotLSBJc3N1ZSAjMjc4NTA6IFJlbW92ZSAzREVTIGZyb20gc3NsIG1vZHVsZSdzIGRlZmF1bHQgY2lwaGVyIGxpc3QgdG8gY291bnRlcgotICBtZWFzdXJlIHN3ZWV0MzIgYXR0YWNrIChDVkUtMjAxNi0yMTgzKS4KLQotLSBJc3N1ZSAjMjc3NjY6IEFkZCBDaGFDaGEyMCBQb2x5MTMwNSB0byBzc2wgbW9kdWxlJ3MgZGVmYXVsdCBjaXBlciBsaXN0LgotICAoUmVxdWlyZWQgT3BlblNTTCAxLjEuMCBvciBMaWJyZVNTTCkuCi0KLS0gSXNzdWUgIzI2NDcwOiBQb3J0IHNzbCBhbmQgaGFzaGxpYiBtb2R1bGUgdG8gT3BlblNTTCAxLjEuMC4KLQotLSBJc3N1ZSAjMjc5NDQ6IEZpeCBzb21lIG1lbW9yeS1jb3JydXB0aW9uIGJ1Z3MgaW4gdGhlIGxvZyByZWFkaW5nIGNvZGUgb2YgdGhlCi0gIF9ob3RzaG90IG1vZHVsZS4KLQotLSBJc3N1ZSAjMjc5MzQ6IFVzZSBgYGZsb2F0Ll9fcmVwcl9fYGAgaW5zdGVhZCBvZiBwbGFpbiBgYHJlcHJgYCB3aGVuIEpTT04tCi0gIGVuY29kaW5nIGFuIGluc3RhbmNlIG9mIGEgZmxvYXQgc3ViY2xhc3MuIFRoYW5rcyBFZGRpZSBKYW1lcy4KLQotLSBJc3N1ZSAjMjc4NjE6IEZpeGVkIGEgY3Jhc2ggaW4gc3FsaXRlMy5Db25uZWN0aW9uLmN1cnNvcigpIHdoZW4gYSBmYWN0b3J5Ci0gIGNyZWF0ZXMgbm90IGEgY3Vyc29yLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzE5ODg0OiBBdm9pZCBzcHVyaW91cyBvdXRwdXQgb24gT1MgWCB3aXRoIEdudSBSZWFkbGluZS4KLQotLSBJc3N1ZSAjMTA1MTM6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gQ29ubmVjdGlvbi5jb21taXQoKS4gIFN0YXRlbWVudHMgc2hvdWxkCi0gIG5vdCBiZSByZXNldCBhZnRlciBhIGNvbW1pdC4KLQotLSBJc3N1ZSAjMjQ2NjogcG9zaXhwYXRoLmlzbW91bnQgbm93IGNvcnJlY3RseSByZWNvZ25pemVzIG1vdW50IHBvaW50cyB3aGljaAotICB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzLgotCi0tIElzc3VlICMyNzc4MzogRml4IHBvc3NpYmxlIHVzYWdlIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIG9wZXJhdG9yLm1ldGhvZGNhbGxlci4KLQotLSBJc3N1ZSAjMjc3NzQ6IEZpeCBwb3NzaWJsZSBQeV9ERUNSRUYgb24gdW5vd25lZCBvYmplY3QgaW4gX3NyZS4KLQotLSBJc3N1ZSAjMjc3NjA6IEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIGJpbmFzY2lpLmIyYV9xcC4KLQotLSBJbiB0aGUgY3Vyc2VzIG1vZHVsZSwgcmFpc2UgYW4gZXJyb3IgaWYgd2luZG93LmdldHN0cigpIG9yIHdpbmRvdy5pbnN0cigpIGlzCi0gIHBhc3NlZCBhIG5lZ2F0aXZlIHZhbHVlLgotCi0tIElzc3VlICMyNzc1ODogRml4IHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIF9jc3YgbW9kdWxlIGZvciBsYXJnZSByZWNvcmQKLSAgbGVuZ3Rocy4KLQotLSBJc3N1ZSAjMjMzNjk6IEZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4KLSAgX2pzb24uZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkuCi0KLS0gSXNzdWUgIzI3NTY4OiBQcmV2ZW50IEhUVFBveHkgYXR0YWNrIChDVkUtMjAxNi0xMDAwMTEwKS4gSWdub3JlIHRoZQotICBIVFRQX1BST1hZIHZhcmlhYmxlIHdoZW4gUkVRVUVTVF9NRVRIT0QgZW52aXJvbm1lbnQgaXMgc2V0LCB3aGljaCBpbmRpY2F0ZXMKLSAgdGhhdCB0aGUgc2NyaXB0IGlzIGluIENHSSBtb2RlLgotCi0tIElzc3VlICMyNzEzMDogSW4gdGhlICJ6bGliIiBtb2R1bGUsIGZpeCBoYW5kbGluZyBvZiBsYXJnZSBidWZmZXJzCi0gICh0eXBpY2FsbHkgMiBvciA0IEdpQikuICBQcmV2aW91c2x5LCBpbnB1dHMgd2VyZSBsaW1pdGVkIHRvIDIgR2lCLCBhbmQKLSAgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gb3BlcmF0aW9ucyBkaWQgbm90IHByb3Blcmx5IGhhbmRsZSByZXN1bHRzIG9mCi0gIDIgb3IgNCBHaUIuCi0KLS0gSXNzdWUgIzIzODA0OiBGaXggU1NMIHplcm8tbGVuZ3RoIHJlY3YoKSBjYWxscyB0byBub3QgYmxvY2sgYW5kIG5vdCByYWlzZQotICBhbiBlcnJvciBhYm91dCB1bmNsZWFuIEVPRi4KLQotLSBJc3N1ZSAjMjc0NjY6IENoYW5nZSB0aW1lIGZvcm1hdCByZXR1cm5lZCBieSBodHRwLmNvb2tpZS50aW1lMm5ldHNjYXBlLAotICBjb25maXJtaW5nIHRoZSBuZXRzY2FwZSBjb29raWUgZm9ybWF0IGFuZCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoCi0gIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzIyMTE1OiBGaXhlZCB0cmFjaW5nIFRraW50ZXIgdmFyaWFibGVzOiB0cmFjZV92ZGVsZXRlKCkgd2l0aCB3cm9uZwotICBtb2RlIG5vIGxvbmdlciBicmVhayB0cmFjaW5nLCB0cmFjZV92aW5mbygpIG5vdyBhbHdheXMgcmV0dXJucyBhIGxpc3Qgb2YKLSAgcGFpcnMgb2Ygc3RyaW5ncy4KLQotLSBJc3N1ZSAjMjcwNzk6IEZpeGVkIGN1cnNlcy5hc2NpaSBmdW5jdGlvbnMgaXNibGFuaygpLCBpc2NudHJsKCkgYW5kIGlzcHVuY3QoKS4KLQotLSBJc3N1ZSAjMjI2MzY6IEF2b2lkIHNoZWxsIGluamVjdGlvbiBwcm9ibGVtcyB3aXRoCi0gIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpLgotCi0tIElzc3VlICMyNzMzMDogRml4ZWQgcG9zc2libGUgbGVha3MgaW4gdGhlIGN0eXBlcyBtb2R1bGUuCi0KLS0gSXNzdWUgIzI3MjM4OiBHb3QgcmlkIG9mIGJhcmUgZXhjZXB0cyBpbiB0aGUgdHVydGxlIG1vZHVsZS4gIE9yaWdpbmFsIHBhdGNoCi0gIGJ5IEplbGxlIFppamxzdHJhLgotCi0tIElzc3VlICMyNjM4NjogRml4ZWQgdHRrLlRyZWVWaWV3IHNlbGVjdGlvbiBvcGVyYXRpb25zIHdpdGggaXRlbSBpZCdzCi0gIGNvbnRhaW5pbmcgc3BhY2VzLgotCi0tIElzc3VlICMyNTQ1NTogRml4ZWQgYSBjcmFzaCBpbiByZXByIG9mIGNFbGVtZW50VHJlZS5FbGVtZW50IHdpdGggcmVjdXJzaXZlIHRhZy4KLQotLSBJc3N1ZSAjMjEyMDE6IEltcHJvdmVzIHJlYWRhYmlsaXR5IG9mIG11bHRpcHJvY2Vzc2luZyBlcnJvciBtZXNzYWdlLiAgVGhhbmtzCi0gIHRvIFdvamNpZWNoIFdhbGN6YWsgZm9yIHBhdGNoLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzI3ODU0OiBNYWtlIEhlbHAgPT4gSURMRSBIZWxwIHdvcmsgYWdhaW4gb24gV2luZG93cy4KLSAgSW5jbHVkZSBpZGxlbGliL2hlbHAuaHRtbCBpbiAyLjcgV2luZG93cyBpbnN0YWxsZXIuCi0KLS0gSXNzdWUgIzI1NTA3OiBBZGQgYmFjayBpbXBvcnQgbmVlZGVkIGZvciAyLnggZW5jb2Rpbmcgd2FybmluZyBib3guCi0gIEFkZCBwb2ludGVyIHRvICdFbmNvZGluZyBkZWNsYXJhdGlvbicgaW4gTGFuZ3VhZ2UgUmVmZXJlbmNlLgotCi0tIElzc3VlICMxNTMwODogQWRkICdpbnRlcnJ1cHQgZXhlY3V0aW9uJyAoXkMpIHRvIFNoZWxsIG1lbnUuCi0gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LCB1cGRhdGVkIGJ5IEJheWFyZCBSYW5kZWwuCi0KLS0gSXNzdWUgIzI3OTIyOiBTdG9wIElETEUgdGVzdHMgZnJvbSAnZmxhc2hpbmcnIGd1aSB3aWRnZXRzIG9uIHRoZSBzY3JlZW4uCi0KLS0gSXNzdWUgIzE3NjQyOiBhZGQgbGFyZ2VyIGZvbnQgc2l6ZXMgZm9yIGNsYXNzcm9vbSBwcm9qZWN0aW9uLgotCi0tIEFkZCB2ZXJzaW9uIHRvIHRpdGxlIG9mIElETEUgaGVscCB3aW5kb3cuCi0KLS0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0Ci0gIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCi0KLS0gSXNzdWUgIzI3NzE0OiB0ZXh0X3RleHR2aWV3IGFuZCB0ZXN0X2F1dG9jb21wbGV0ZSBub3cgcGFzcyB3aGVuIHJlLXJ1bgotICBpbiB0aGUgc2FtZSBwcm9jZXNzLiAgVGhpcyBvY2N1cnMgd2hlbiB0ZXN0X2lkbGUgZmFpbHMgd2hlbiBydW4gd2l0aCB0aGUKLSAgLXcgb3B0aW9uIGJ1dCB3aXRob3V0IC1qbi4gIEZpeCB3YXJuaW5nIGZyb20gdGVzdF9jb25maWcuCi0KLS0gSXNzdWUgIzI3NDUyOiBhZGQgbGluZSBjb3VudGVyIGFuZCBjcmMgdG8gSURMRSBjb25maWdIYW5kbGVyIHRlc3QgZHVtcC4KLQotLSBJc3N1ZSAjMjczNjU6IEFsbG93IG5vbi1hc2NpaSBjaGFycyBpbiBJRExFIE5FV1MudHh0LCBmb3IgY29udHJpYnV0b3IgbmFtZXMuCi0KLS0gSXNzdWUgIzI3MjQ1OiBJRExFOiBDbGVhbmx5IGRlbGV0ZSBjdXN0b20gdGhlbWVzIGFuZCBrZXkgYmluZGluZ3MuCi0gIFByZXZpb3VzbHksIHdoZW4gSURMRSB3YXMgc3RhcnRlZCBmcm9tIGEgY29uc29sZSBvciBieSBpbXBvcnQsIGEgY2FzY2FkZQotICBvZiB3YXJuaW5ncyB3YXMgZW1pdHRlZC4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjg1MTM6IERvY3VtZW50ZWQgY29tbWFuZC1saW5lIGludGVyZmFjZSBvZiB6aXBmaWxlLgotCi0tIElzc3VlICMxNjQ4NDogQ2hhbmdlIHRoZSBkZWZhdWx0IFBZVEhPTkRPQ1MgVVJMIHRvICJodHRwczoiLCBhbmQgZml4IHRoZQotICByZXN1bHRpbmcgbGlua3MgdG8gdXNlIGxvd2VyY2FzZS4gIFBhdGNoIGJ5IFNlYW4gUm9kbWFuLCB0ZXN0IGJ5IEthdXNoaWsKLSAgTmFkaWt1ZGl0aS4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzI4NjY2OiBOb3cgdGVzdC50ZXN0X3N1cHBvcnQucm10cmVlIGlzIGFibGUgdG8gcmVtb3ZlIHVud3JpdGFibGUgb3IKLSAgdW5yZWFkYWJsZSBkaXJlY3Rvcmllcy4KLQotLSBJc3N1ZSAjMjM4Mzk6IFZhcmlvdXMgY2FjaGVzIG5vdyBhcmUgY2xlYXJlZCBiZWZvcmUgcnVubmluZyBldmVyeSB0ZXN0IGZpbGUuCi0KLS0gSXNzdWUgIzI3MzY5OiBJbiB0ZXN0X3B5ZXhwYXQsIGF2b2lkIHRlc3RpbmcgYW4gZXJyb3IgbWVzc2FnZSBkZXRhaWwgdGhhdAotICBjaGFuZ2VkIGluIEV4cGF0IDIuMi4wLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTA2NTY6IEZpeCBvdXQtb2YtdHJlZSBidWlsZGluZyBvbiBBSVguICBQYXRjaCBieSBUcmlzdGFuIENhcmVsIGFuZAotICBNaWNoYWVsIEhhdWJlbndhbGxuZXIuCi0KLS0gSXNzdWUgIzI2MzU5OiBSZW5hbWUgLS13aXRoLW9wdGltaWF0aW9ucyB0byAtLWVuYWJsZS1vcHRpbWl6YXRpb25zLgotCi0tIElzc3VlICMyODI0ODogVXBkYXRlIFdpbmRvd3MgYnVpbGQgYW5kIE9TIFggaW5zdGFsbGVycyB0byB1c2UgT3BlblNTTCAxLjAuMmouCi0KLS0gSXNzdWUgIzI4MjU4OiBGaXhlZCBidWlsZCB3aXRoIEVzdG9uaWFuIGxvY2FsZSAoZGlzdGNsZWFuIHRhcmdldCBpbgotICBNYWtlZmlsZSkuICBQYXRjaCBieSBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KLQotLSBJc3N1ZSAjMjY2NjE6IHNldHVwLnB5IG5vdyBkZXRlY3RzIHN5c3RlbSBsaWJmZmkgd2l0aCBtdWx0aWFyY2ggd3JhcHBlci4KLQotLSBJc3N1ZSAjMTU4MTk6IFRoZSBJbmNsdWRlIGRpcmVjdG9yeSBpbiB0aGUgYnVpbGQgdHJlZSBpcyBhbHJlYWR5IHNlYXJjaGVkOwotICBkcm9wIHVudXNlZCBjb2RlIHRyeWluZyB0byBhZGQgaXQgYWdhaW4uCi0KLS0gSXNzdWUgIzI3NTY2OiBGaXggY2xlYW4gdGFyZ2V0IGluIGZyZWV6ZSBtYWtlZmlsZSAocGF0Y2ggYnkgTGlzYSBSb2FjaCkKLQotLSBJc3N1ZSAjMjc5ODM6IENhdXNlIGxhY2sgb2YgbGx2bS1wcm9mZGF0YSB0b29sIHdoZW4gdXNpbmcgY2xhbmcgYXMKLSAgcmVxdWlyZWQgZm9yIFBHTyBsaW5raW5nIHRvIGJlIGEgY29uZmlndXJlIHRpbWUgZXJyb3IgcmF0aGVyIHRoYW4KLSAgbWFrZSB0aW1lIHdoZW4gLS13aXRoLW9wdGltaXphdGlvbnMgaXMgZW5hYmxlZC4gIEFsc28gaW1wcm92ZSBvdXIKLSAgYWJpbGl0eSB0byBmaW5kIHRoZSBsbHZtLXByb2ZkYXRhIHRvb2wgb24gTWFjT1MgYW5kIHNvbWUgTGludXhlcy4KLQotLSBJc3N1ZSAjMjYzNTk6IEFkZCB0aGUgLS13aXRoLW9wdGltaXphdGlvbnMgY29uZmlndXJlIGZsYWcuCi0KLS0gSXNzdWUgIzEwOTEwOiBBdm9pZCBDKysgY29tcGlsYXRpb24gZXJyb3JzIG9uIEZyZWVCU0QgYW5kIE9TIFguCi0gIEFsc28gdXBkYXRlIEZyZWVkQlNEIHZlcnNpb24gY2hlY2tzIGZvciB0aGUgb3JpZ2luYWwgY3R5cGUgVVRGLTggd29ya2Fyb3VuZC4KLQotLSBJc3N1ZSAjMjc4MDY6IEZpeCAzMi1iaXQgYnVpbGRzIG9uIG1hY09TIFNpZXJyYSAxMC4xMiBicm9rZW4gYnkgcmVtb3ZhbCBvZgotICBkZXByZWNhdGVkIFF1aWNrVGltZS9RdWlja1RpbWUuaCBoZWFkZXIgZmlsZS4gIFBhdGNoIGJ5IEFsZWtzIEJ1bmluLgotCi0tIElzc3VlICMyODY3NjogUHJldmVudCBtaXNzaW5nICdnZXRlbnRyb3B5JyBkZWNsYXJhdGlvbiB3YXJuaW5nIG9uIG1hY09TLgotICBJbml0aWFsIHBhdGNoIGJ5IEdhcmV0aCBSZWVzLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjc5NTI6IEdldCBUb29scy9zY3JpcHRzL2ZpeGNpZC5weSB3b3JraW5nIHdpdGggdGhlIGN1cnJlbnQgInJlIgotICBtb2R1bGUsIGF2b2lkIGludmFsaWQgUHl0aG9uIGJhY2tzbGFzaCBlc2NhcGVzLCBhbmQgZml4IGEgYnVnIHBhcnNpbmcKLSAgZXNjYXBlZCBDIHF1b3RlIHNpZ25zLgotCi1XaW5kb3dzCi0tLS0tLS0tCi0KLS0gSXNzdWUgIzI3OTMyOiBQcmV2ZW50IG1lbW9yeSBsZWFrIGluIHdpbjMyX3ZlcigpLgotCi0tIElzc3VlICMyNzg4ODogUHJldmVudCBXaW5kb3dzIGluc3RhbGxlciBmcm9tIGRpc3BsYXlpbmcgY29uc29sZSB3aW5kb3dzIGFuZAotICBmYWlsaW5nIHdoZW4gcGlwIGNhbm5vdCBiZSBpbnN0YWxsZWQvdW5pbnN0YWxsZWQuCi0KLU1hYyBPUyBYCi0tLS0tLS0tLQotCi0tIElzc3VlICMyODQ0MDogTm8gbG9uZ2VyIGFkZCAvTGlicmFyeS9QeXRob24vc2l0ZS1wYWNrYWdlcywgdGhlIEFwcGxlLXN1cHBsaWVkCi0gIHN5c3RlbSBQeXRob24gc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcnksIHRvIHN5cy5wYXRoIGZvciBtYWNPUyBmcmFtZXdvcmsgYnVpbGRzLgotICBUaGUgY291cGxpbmcgYmV0d2VlbiB0aGUgdHdvIFB5dGhvbiBpbnN0YW5jZXMgb2Z0ZW4gY2F1c2VkIGNvbmZ1c2lvbiBhbmQsIGFzCi0gIG9mIG1hY09TIDEwLjEyLCBjaGFuZ2VzIHRvIHRoZSBzaXRlLXBhY2thZ2VzIGxheW91dCBjYW4gY2F1c2UgcGlwIGNvbXBvbmVudAotICBpbnN0YWxsYXRpb25zIHRvIGZhaWwuICBUaGlzIGNoYW5nZSByZXZlcnRzIHRoZSBlZmZlY3RzIGludHJvZHVjZWQgaW4gMi43LjAKLSAgYnkgSXNzdWUgIzQ4NjUuICBJZiB5b3UgYXJlIHVzaW5nIGEgcGFja2FnZSB3aXRoIGJvdGggdGhlIEFwcGxlIHN5c3RlbSBQeXRob24KLSAgMi43IGFuZCBhIHVzZXItaW5zdGFsbGVkIFB5dGhvbiAyLjcsIHlvdSB3aWxsIG5lZWQgdG8gZW5zdXJlIHRoYXQgY29waWVzIG9mCi0gIHRoZSBwYWNrYWdlIGFyZSBpbnN0YWxsZWQgd2l0aCBib3RoIFB5dGhvbiBpbnN0YW5jZXMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi43LjEyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDE2LTA2LTI1KgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMjc2NDE6IFRoZSBjb25maWd1cmUgc2NyaXB0IG5vdyBpbnNlcnRzIGNvbW1lbnRzIGludG8gdGhlIG1ha2VmaWxlCi0gIHRvIHByZXZlbnQgdGhlIHBnZW4gZXhlY3V0YWJsZSBmcm9tIGJlaW5nIGNyb3NzLWNvbXBpbGVkLgotCi0tIElzc3VlICMyNjkzMDogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yaC4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMyNzM2NTogRml4IGFib3V0IGRpYWxvZy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcuMTIgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDE2LTA2LTEyKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjAwNDE6IEZpeGVkIFR5cGVFcnJvciB3aGVuIGZyYW1lLmZfdHJhY2UgaXMgc2V0IHRvIE5vbmUuCi0gIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgotCi0tIElzc3VlICMyNTcwMjogQSAtLXdpdGgtbHRvIGNvbmZpZ3VyZSBvcHRpb24gaGFzIGJlZW4gYWRkZWQgdGhhdCB3aWxsCi0gIGVuYWJsZSBsaW5rIHRpbWUgb3B0aW1pemF0aW9ucyBhdCBidWlsZCB0aW1lIGR1cmluZyBhIG1ha2UgcHJvZmlsZS1vcHQuCi0gIFNvbWUgY29tcGlsZXJzIGFuZCB0b29sY2hhaW5zIGFyZSBrbm93biB0byBub3QgcHJvZHVjZSBzdGFibGUgY29kZSB3aGVuCi0gIHVzaW5nIExUTywgYmUgc3VyZSB0byB0ZXN0IHRoaW5ncyB0aG9yb3VnaGx5IGJlZm9yZSByZWx5aW5nIG9uIGl0LgotICBJdCBjYW4gcHJvdmlkZSBhIGZldyAlIHNwZWVkIHVwIG92ZXIgcHJvZmlsZS1vcHQgYWxvbmUuCi0KLS0gSXNzdWUgIzI2MTY4OiBGaXhlZCBwb3NzaWJsZSByZWZsZWFrcyBpbiBmYWlsaW5nIFB5X0J1aWxkVmFsdWUoKSB3aXRoIHRoZSAiTiIKLSAgZm9ybWF0IHVuaXQuCi0KLS0gSXNzdWUgIzI3MDM5OiBGaXhlZCBieXRlYXJyYXkucmVtb3ZlKCkgZm9yIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgUGF0Y2ggYnkKLSAgSm9lIEpldm5pay4KLQotLSBJc3N1ZSAjNDgwNjogQXZvaWQgbWFza2luZyB0aGUgb3JpZ2luYWwgVHlwZUVycm9yIGV4Y2VwdGlvbiB3aGVuIHVzaW5nIHN0YXIKLSAgKCopIHVucGFja2luZyBhbmQgdGhlIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIGZyb20gYSBnZW5lcmF0b3IuICBCYXNlZCBvbgotICBwYXRjaCBieSBIYWdlbiBGw7xyc3RlbmF1LgotCi0tIElzc3VlICMyNjY1OTogTWFrZSB0aGUgYnVpbHRpbiBzbGljZSB0eXBlIHN1cHBvcnQgY3ljbGUgY29sbGVjdGlvbi4KLQotLSBJc3N1ZSAjMjY3MTg6IHN1cGVyLl9faW5pdF9fIG5vIGxvbmdlciBsZWFrcyBtZW1vcnkgaWYgY2FsbGVkIG11bHRpcGxlIHRpbWVzLgotICBOT1RFOiBBIGRpcmVjdCBjYWxsIG9mIHN1cGVyLl9faW5pdF9fIGlzIG5vdCBlbmRvcnNlZCEKLQotLSBJc3N1ZSAjMTM0MTA6IEZpeGVkIGEgYnVnIGluIFB5VW5pY29kZV9Gb3JtYXQgd2hlcmUgaXQgZmFpbGVkIHRvIHByb3Blcmx5Ci0gIGlnbm9yZSBlcnJvcnMgZnJvbSBhIF9faW50X18oKSBtZXRob2QuCi0KLS0gSXNzdWUgIzI2NDk0OiBGaXhlZCBjcmFzaCBvbiBpdGVyYXRpbmcgZXhoYXVzdGluZyBpdGVyYXRvcnMuCi0gIEFmZmVjdGVkIGNsYXNzZXMgYXJlIGdlbmVyaWMgc2VxdWVuY2UgaXRlcmF0b3JzLCBpdGVyYXRvcnMgb2YgYnl0ZWFycmF5LAotICBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIE9yZGVyZWREaWN0IGFuZCBjb3JyZXNwb25kaW5nIHZpZXdzLgotCi0tIElzc3VlICMyNjU4MTogSWYgY29kaW5nIGNvb2tpZSBpcyBzcGVjaWZpZWQgbXVsdGlwbGUgdGltZXMgb24gYSBsaW5lIGluCi0gIFB5dGhvbiBzb3VyY2UgY29kZSBmaWxlLCBvbmx5IHRoZSBmaXJzdCBvbmUgaXMgdGFrZW4gdG8gYWNjb3VudC4KLQotLSBJc3N1ZSAjMjI4MzY6IEVuc3VyZSBleGNlcHRpb24gcmVwb3J0cyBmcm9tIFB5RXJyX0Rpc3BsYXkoKSBhbmQKLSAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKCkgYXJlIHNlbnNpYmxlIGV2ZW4gd2hlbiBmb3JtYXR0aW5nIHRoZW0gcHJvZHVjZXMKLSAgc2Vjb25kYXJ5IGVycm9ycy4gIFRoaXMgYWZmZWN0cyB0aGUgcmVwb3J0cyBwcm9kdWNlZCBieQotICBzeXMuX19leGNlcHRob29rX18oKSBhbmQgd2hlbiBfX2RlbF9fKCkgcmFpc2VzIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMjI4NDc6IEltcHJvdmUgbWV0aG9kIGNhY2hlIGVmZmljaWVuY3kuCi0KLS0gSXNzdWUgIzI1ODQzOiBXaGVuIGNvbXBpbGluZyBjb2RlLCBkb24ndCBtZXJnZSBjb25zdGFudHMgaWYgdGhleSBhcmUgZXF1YWwKLSAgYnV0IGhhdmUgYSBkaWZmZXJlbnQgdHlwZXMuIEZvciBleGFtcGxlLCBgYGYxLCBmMiA9IGxhbWJkYTogMSwgbGFtYmRhOiAxLjBgYAotICBpcyBub3cgY29ycmVjdGx5IGNvbXBpbGVkIHRvIHR3byBkaWZmZXJlbnQgZnVuY3Rpb25zOiBgYGYxKClgYCByZXR1cm5zIGBgMWBgCi0gIChgYGludGBgKSBhbmQgYGBmMigpYGAgcmV0dXJucyBgYDEuMGBgIChgYGludGBgKSwgZXZlbiBpZiBgYDFgYCBhbmQgYGAxLjBgYAotICBhcmUgZXF1YWwuCi0KLS0gSXNzdWUgIzIyOTk1OiBbVVBEQVRFXSBSZW1vdmUgdGhlIG9uZSBvZiB0aGUgcGlja2xlYWJpbGl0eSB0ZXN0cyBpbgotICBfUHlPYmplY3RfR2V0U3RhdGUoKSBkdWUgdG8gcmVncmVzc2lvbnMgb2JzZXJ2ZWQgaW4gQ3l0aG9uLWJhc2VkIHByb2plY3RzLgotCi0tIElzc3VlICMyNTk2MTogRGlzYWxsb3dlZCBudWxsIGNoYXJhY3RlcnMgaW4gdGhlIHR5cGUgbmFtZS4KLQotLSBJc3N1ZSAjMjI5OTU6IEluc3RhbmNlcyBvZiBleHRlbnNpb24gdHlwZXMgd2l0aCBhIHN0YXRlIHRoYXQgYXJlbid0Ci0gIHN1YmNsYXNzZXMgb2YgbGlzdCBvciBkaWN0IGFuZCBoYXZlbid0IGltcGxlbWVudGVkIGFueSBwaWNrbGUtcmVsYXRlZAotICBtZXRob2RzIChfX3JlZHVjZV9fLCBfX3JlZHVjZV9leF9fLCBfX2dldG5ld2FyZ3NfXywgX19nZXRuZXdhcmdzX2V4X18sCi0gIG9yIF9fZ2V0c3RhdGVfXyksIGNhbiBubyBsb25nZXIgYmUgcGlja2xlZC4gIEluY2x1ZGluZyBtZW1vcnl2aWV3LgotCi0tIElzc3VlICMyMDQ0MDogTWFzc2l2ZSByZXBsYWNpbmcgdW5zYWZlIGF0dHJpYnV0ZSBzZXR0aW5nIGNvZGUgd2l0aCBzcGVjaWFsCi0gIG1hY3JvIFB5X1NFVFJFRi4KLQotLSBJc3N1ZSAjMjU0MjE6IF9fc2l6ZW9mX18gbWV0aG9kcyBvZiBidWlsdGluIHR5cGVzIG5vdyB1c2UgZHluYW1pYyBiYXNpYyBzaXplLgotICBUaGlzIGFsbG93cyBzeXMuZ2V0c2l6ZSgpIHRvIHdvcmsgY29ycmVjdGx5IHdpdGggdGhlaXIgc3ViY2xhc3NlcyB3aXRoCi0gIF9fc2xvdHNfXyBkZWZpbmVkLgotCi0tIElzc3VlICMxOTU0MzogQWRkZWQgUHkzayB3YXJuaW5nIGZvciBkZWNvZGluZyB1bmljb2RlLgotCi0tIElzc3VlICMyNDA5NzogRml4ZWQgY3Jhc2ggaW4gb2JqZWN0Ll9fcmVkdWNlX18oKSBpZiBzbG90IG5hbWUgaXMgZnJlZWQgaW5zaWRlCi0gIF9fZ2V0YXR0cl9fLgotCi0tIElzc3VlICMyNDczMTogRml4ZWQgY3Jhc2ggb24gY29udmVydGluZyBvYmplY3RzIHdpdGggc3BlY2lhbCBtZXRob2RzCi0gIF9fc3RyX18sIF9fdHJ1bmNfXywgYW5kIF9fZmxvYXRfXyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIHN1YmNsYXNzZXMgb2YKLSAgc3RyLCBsb25nLCBhbmQgZmxvYXQgdG8gc3ViY2xhc3NlcyBvZiBzdHIsIGxvbmcsIGFuZCBmbG9hdCBjb3JyZXNwb25kaW5nbHkuCi0KLS0gSXNzdWUgIzI2NDc4OiBGaXggc2VtYW50aWMgYnVncyB3aGVuIHVzaW5nIGJpbmFyeSBvcGVyYXRvcnMgd2l0aCBkaWN0aW9uYXJ5Ci0gIHZpZXdzIGFuZCB0dXBsZXMuCi0KLS0gSXNzdWUgIzI2MTcxOiBGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBhbmQgaGVhcCBjb3JydXB0aW9uIGluCi0gIHppcGltcG9ydGVyLmdldF9kYXRhKCkuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjY1NTY6IFVwZGF0ZSBleHBhdCB0byAyLjEuMSwgZml4ZXMgQ1ZFLTIwMTUtMTI4My4KLQotLSBGaXggVExTIHN0cmlwcGluZyB2dWxuZXJhYmlsaXR5IGluIHNtcHRsaWIsIENWRS0yMDE2LTA3NzIuICBSZXBvcnRlZCBieSBUZWFtCi0gIE9zdHN0cm9tCi0KLS0gSXNzdWUgIzczNTY6IGN0eXBlcy51dGlsOiBNYWtlIHBhcnNpbmcgb2YgbGRjb25maWcgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZQotICBsb2NhbGUuCi0KLS0gSXNzdWUgIzI1NzM4OiBTdG9wIEJhc2VIVFRQU2VydmVyLkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuc2VuZF9lcnJvcigpIGZyb20KLSAgc2VuZGluZyBhIG1lc3NhZ2UgYm9keSBmb3IgMjA1IFJlc2V0IENvbnRlbnQuICBBbHNvLCBkb24ndCBzZW5kIHRoZQotICBDb250ZW50LVR5cGUgaGVhZGVyIGZpZWxkIGluIHJlc3BvbnNlcyB0aGF0IGRvbid0IGhhdmUgYSBib2R5LiAgQmFzZWQgb24KLSAgcGF0Y2ggYnkgU3VzdW11IEtvc2hpYmEuCi0KLS0gSXNzdWUgIzIxMzEzOiBGaXggdGhlICJwbGF0Zm9ybSIgbW9kdWxlIHRvIHRvbGVyYXRlIHdoZW4gc3lzLnZlcnNpb24KLSAgY29udGFpbnMgdHJ1bmNhdGVkIGJ1aWxkIGluZm9ybWF0aW9uLgotCi0tIElzc3VlICMyNzIxMTogRml4IHBvc3NpYmxlIG1lbW9yeSBjb3JydXB0aW9uIGluIGlvLklPQmFzZS5yZWFkbGluZSgpLgotCi0tIElzc3VlICMyNzExNDogRml4IFNTTENvbnRleHQuX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyB3aXRoCi0gIFBlcm1pc3Npb25FcnJvcgotCi0tIElzc3VlICMxNDEzMjogRml4IHVybGxpYi5yZXF1ZXN0IHJlZGlyZWN0IGhhbmRsaW5nIHdoZW4gdGhlIHRhcmdldCBvbmx5IGhhcwotICBhIHF1ZXJ5IHN0cmluZy4gIEZpeCBieSBKw6FuIEphbmVjaC4KLQotLSBSZW1vdmVkIHRoZSByZXF1aXJlbWVudHMgZm9yIHRoZSBjdHlwZXMgYW5kIG1vZHVsZWZpbmRlciBtb2R1bGVzIHRvIGJlCi0gIGNvbXBhdGlibGUgd2l0aCBlYXJsaWVyIFB5dGhvbiB2ZXJzaW9ucy4KLQotLSBJc3N1ZSAjMjIyNzQ6IEluIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSwgYWxsb3cgc3RkZXJyIHRvIGJlIHJlZGlyZWN0ZWQgdG8KLSAgc3Rkb3V0IGV2ZW4gd2hlbiBzdGRvdXQgaXMgbm90IHJlZGlyZWN0ZWQuICBQYXRjaCBieSBBa2lyYSBMaS4KLQotLSBJc3N1ZSAjMTIwNDU6IEF2b2lkIGR1cGxpY2F0ZSBleGVjdXRpb24gb2YgY29tbWFuZCBpbiBjdHlwZXMudXRpbC5fZ2V0X3NvbmFtZSgpLgotICBQYXRjaCBieSBTaWppbiBKb3NlcGguCi0KLS0gSXNzdWUgIzI2OTYwOiBCYWNrcG9ydGVkICMxNjI3MCBmcm9tIFB5dGhvbiAzIHRvIFB5dGhvbiAyLCB0byBwcmV2ZW50IHVybGxpYgotICBmcm9tIGhhbmdpbmcgd2hlbiByZXRyaWV2aW5nIGNlcnRhaW4gRlRQIGZpbGVzLgotCi0tIElzc3VlICMyNTc0NTogRml4ZWQgbGVha2luZyBhIHVzZXJwdHIgaW4gY3Vyc2VzIHBhbmVsIGRlc3RydWN0b3IuCi0KLS0gSXNzdWUgIzE3NzY1OiB3ZWFrcmVmLnJlZigpIG5vIGxvbmdlciBzaWxlbnRseSBpZ25vcmVzIGtleXdvcmQgYXJndW1lbnRzLgotICBQYXRjaCBieSBHZW9yZyBCcmFuZGwuCi0KLS0gSXNzdWUgIzI2ODczOiB4bWxycGNsaWIgbm93IHJhaXNlcyBSZXNwb25zZUVycm9yIG9uIHVuc3VwcG9ydGVkIHR5cGUgdGFncwotICBpbnN0ZWFkIG9mIHNpbGVudGx5IHJldHVybiBpbmNvcnJlY3QgcmVzdWx0LgotCi0tIElzc3VlICMyNDExNDogRml4IGFuIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaW4gYGN0eXBlcy51dGlsYC4KLQotICBUaGUgYnVnIG9ubHkgb2NjdXJzIG9uIFN1bk9TIHdoZW4gdGhlIGN0eXBlcyBpbXBsZW1lbnRhdGlvbiBzZWFyY2hlcwotICBmb3IgdGhlIGBjcmxlYCBwcm9ncmFtLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuICBUZXN0ZWQgb24gU3VuT1MgYnkKLSAgS2VlcyBCb3MuCi0KLS0gSXNzdWUgIzI2ODY0OiBJbiB1cmxsaWIsIGNoYW5nZSB0aGUgcHJveHkgYnlwYXNzIGhvc3QgY2hlY2tpbmcgYWdhaW5zdAotICBub19wcm94eSB0byBiZSBjYXNlLWluc2Vuc2l0aXZlLCBhbmQgdG8gbm90IG1hdGNoIHVucmVsYXRlZCBob3N0IG5hbWVzIHRoYXQKLSAgaGFwcGVuIHRvIGhhdmUgYSBieXBhc3NlZCBob3N0bmFtZSBhcyBhIHN1ZmZpeC4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNjgwNDogdXJsbGliIHdpbGwgcHJlZmVyIGxvd2VyX2Nhc2UgcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGVzIG92ZXIKLSAgVVBQRVJfQ0FTRSBvciBNaXhlZF9DYXNlIG9uZXMuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEhhbnMtUGV0ZXIgSmFuc2VuLgotCi0tIElzc3VlICMyNjgzNzogYXNzZXJ0U2VxdWVuY2VFcXVhbCgpIG5vdyBjb3JyZWN0bHkgb3V0cHV0cyBub24tc3RyaW5naWZpZWQKLSAgZGlmZmVyaW5nIGl0ZW1zLiAgVGhpcyBhZmZlY3RzIGFzc2VydExpc3RFcXVhbCgpIGFuZCBhc3NlcnRUdXBsZUVxdWFsKCkuCi0KLS0gSXNzdWUgIzI2ODIyOiBpdGVtZ2V0dGVyLCBhdHRyZ2V0dGVyIGFuZCBtZXRob2RjYWxsZXIgb2JqZWN0cyBubyBsb25nZXIKLSAgc2lsZW50bHkgaWdub3JlIGtleXdvcmQgYXJndW1lbnRzLgotCi0tIElzc3VlICMyNjY1NzogRml4IGRpcmVjdG9yeSB0cmF2ZXJzYWwgdnVsbmVyYWJpbGl0eSB3aXRoIFNpbXBsZUhUVFBTZXJ2ZXIKLSAgb24gV2luZG93cy4gIFRoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gMi43LjcuICBCYXNlZAotICBvbiBwYXRjaCBieSBQaGlsaXBwIEhhZ2VtZWlzdGVyLgotCi0tIElzc3VlICMxOTM3NzogQWRkIC5zdmcgdG8gbWltZXR5cGVzLnR5cGVzX21hcC4KLQotLSBJc3N1ZSAjMTM5NTI6IEFkZCAuY3N2IHRvIG1pbWV0eXBlcy50eXBlc19tYXAuICBQYXRjaCBieSBHZW9mZiBXaWxzb24uCi0KLS0gSXNzdWUgIzE2MzI5OiBBZGQgLndlYm0gdG8gbWltZXR5cGVzLnR5cGVzX21hcC4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgotCi0tIElzc3VlICMyMzczNTogSGFuZGxlIHRlcm1pbmFsIHJlc2l6aW5nIHdpdGggUmVhZGxpbmUgNi4zKyBieSBpbnN0YWxsaW5nIG91cgotICBvd24gU0lHV0lOQ0ggaGFuZGxlci4gIFBhdGNoIGJ5IEVyaWMgUHJpY2UuCi0KLS0gSXNzdWUgIzI2NjQ0OiBSYWlzZSBWYWx1ZUVycm9yIHJhdGhlciB0aGFuIFN5c3RlbUVycm9yIHdoZW4gYSBuZWdhdGl2ZQotICBsZW5ndGggaXMgcGFzc2VkIHRvIFNTTFNvY2tldC5yZWN2KCkgb3IgcmVhZCgpLgotCi0tIElzc3VlICMyMzgwNDogRml4IFNTTCByZWN2KDApIGFuZCByZWFkKDApIG1ldGhvZHMgdG8gcmV0dXJuIHplcm8gYnl0ZXMKLSAgaW5zdGVhZCBvZiB1cCB0byAxMDI0LgotCi0tIElzc3VlICMyNDI2NjogQ3RybCtDIGR1cmluZyBSZWFkbGluZSBoaXN0b3J5IHNlYXJjaCBub3cgY2FuY2VscyB0aGUgc2VhcmNoCi0gIG1vZGUgd2hlbiBjb21waWxlZCB3aXRoIFJlYWRsaW5lIDcuCi0KLS0gSXNzdWUgIzIzODU3OiBJbXBsZW1lbnQgUEVQIDQ5MywgYWRkaW5nIGEgUHl0aG9uLTItb25seSBzc2wgbW9kdWxlIEFQSSBhbmQKLSAgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gY29uZmlndXJlIHRoZSBkZWZhdWx0IGhhbmRsaW5nIG9mIFNTTC9UTFMgY2VydGlmaWNhdGVzCi0gIGZvciBIVFRQUyBjb25uZWN0aW9ucy4KLQotLSBJc3N1ZSAjMjYzMTM6IHNzbC5weSBfbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIGlmIHdpbmRvd3MgY2VydCBzdG9yZQotICBpcyBlbXB0eS4gUGF0Y2ggYnkgQmFqaS4KLQotLSBJc3N1ZSAjMjY1MTM6IEZpeGVzIHBsYXRmb3JtIG1vZHVsZSBkZXRlY3Rpb24gb2YgV2luZG93cyBTZXJ2ZXIKLQotLSBJc3N1ZSAjMjM3MTg6IEZpeGVkIHBhcnNpbmcgdGltZSBpbiB3ZWVrIDAgYmVmb3JlIEphbiAxLiAgT3JpZ2luYWwgcGF0Y2ggYnkKLSAgVGFtw6FzIEJlbmNlIEdlZGFpLgotCi0tIElzc3VlICMyNjE3NzogRml4ZWQgdGhlIGtleXMoKSBtZXRob2QgZm9yIENhbnZhcyBhbmQgU2Nyb2xsYmFyIHdpZGdldHMuCi0KLS0gSXNzdWUgIzE1MDY4OiBHb3QgcmlkIG9mIGV4Y2Vzc2l2ZSBidWZmZXJpbmcgaW4gdGhlIGZpbGVpbnB1dCBtb2R1bGUuCi0gIFRoZSBidWZzaXplIHBhcmFtZXRlciBpcyBubyBsb25nZXIgdXNlZC4KLQotLSBJc3N1ZSAjMjIwMjogRml4IFVuYm91bmRMb2NhbEVycm9yIGluCi0gIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXIuZ2V0X2FsZ29yaXRobV9pbXBscy4gIEluaXRpYWwgcGF0Y2ggYnkgTWF0aGlldSBEdXB1eS4KLQotLSBJc3N1ZSAjMjY0NzU6IEZpeGVkIGRlYnVnZ2luZyBvdXRwdXQgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2l0aCB0aGUgKD94KQotICBmbGFnLgotCi0tIElzc3VlICMyNjM4NTogUmVtb3ZlIHRoZSBmaWxlIGlmIHRoZSBpbnRlcm5hbCBmZG9wZW4oKSBjYWxsIGluCi0gIE5hbWVkVGVtcG9yYXJ5RmlsZSgpIGZhaWxzLiAgQmFzZWQgb24gcGF0Y2ggYnkgU2lsZW50IEdob3N0LgotCi0tIElzc3VlICMyNjMwOTogSW4gdGhlICJTb2NrZXRTZXJ2ZXIiIG1vZHVsZSwgc2h1dCBkb3duIHRoZSByZXF1ZXN0IChjbG9zaW5nCi0gIHRoZSBjb25uZWN0ZWQgc29ja2V0KSB3aGVuIHZlcmlmeV9yZXF1ZXN0KCkgcmV0dXJucyBmYWxzZS4gIEJhc2VkIG9uIHBhdGNoCi0gIGJ5IEF2aXYgUGFsaXZvZGEuCi0KLS0gSXNzdWUgIzI1OTM5OiBPbiBXaW5kb3dzIG9wZW4gdGhlIGNlcnQgc3RvcmUgcmVhZG9ubHkgaW4gc3NsLmVudW1fY2VydGlmaWNhdGVzLgotCi0tIElzc3VlICMyNDMwMzogRml4IHJhbmRvbSBFRVhJU1QgdXBvbiBtdWx0aXByb2Nlc3Npbmcgc2VtYXBob3JlcyBjcmVhdGlvbiB3aXRoCi0gIExpbnV4IFBJRCBuYW1lc3BhY2VzIGVuYWJsZWQuCi0KLS0gSXNzdWUgIzI1Njk4OiBJbXBvcnRpbmcgbW9kdWxlIGlmIHRoZSBzdGFjayBpcyB0b28gZGVlcCBubyBsb25nZXIgcmVwbGFjZXMKLSAgaW1wb3J0ZWQgbW9kdWxlIHdpdGggdGhlIGVtcHR5IG9uZS4KLQotLSBJc3N1ZSAjMTI5MjM6IFJlc2V0IEZhbmN5VVJMb3BlbmVyJ3MgcmVkaXJlY3QgY291bnRlciBldmVuIGlmIHRoZXJlIGlzIGFuCi0gIGV4Y2VwdGlvbi4gIEJhc2VkIG9uIHBhdGNoZXMgYnkgQnJpYW4gQnJhemlsIGFuZCBEYW5pZWwgUm9jY28uCi0KLS0gSXNzdWUgIzI1OTQ1OiBGaXhlZCBhIGNyYXNoIHdoZW4gdW5waWNrbGUgdGhlIGZ1bmN0b29scy5wYXJ0aWFsIG9iamVjdCB3aXRoCi0gIHdyb25nIHN0YXRlLiAgRml4ZWQgYSBsZWFrIGluIGZhaWxlZCBmdW5jdG9vbHMucGFydGlhbCBjb25zdHJ1Y3Rvci4KLSAgImFyZ3MiIGFuZCAia2V5d29yZHMiIGF0dHJpYnV0ZXMgb2YgZnVuY3Rvb2xzLnBhcnRpYWwgaGF2ZSBub3cgYWx3YXlzIHR5cGVzCi0gIHR1cGxlIGFuZCBkaWN0IGNvcnJlc3BvbmRpbmdseS4KLQotLSBJc3N1ZSAjMTk4ODM6IEZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3dzIGluIHppcGltcG9ydC4KLQotLSBJc3N1ZSAjMjYxNDc6IHhtbHJwY2xpYiBub3cgd29ya3Mgd2l0aCB1bmljb2RlIG5vdCBlbmNvZGFibGUgd2l0aCB1c2VkCi0gIG5vbi1VVEYtOCBlbmNvZGluZy4KLQotLSBJc3N1ZSAjMTY2MjA6IEZpeGVkIEF0dHJpYnV0ZUVycm9yIGluIG1zaWxpYi5EaXJlY3RvcnkuZ2xvYigpLgotCi0tIElzc3VlICMyMTg0NzogRml4ZWQgeG1scnBjbGliIG9uIFVuaWNvZGUtZGlzYWJsZWQgYnVpbGRzLgotCi0tIElzc3VlICM2NTAwOiBGaXhlZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gdXJsbGliMi5SZXF1ZXN0Ll9fZ2V0YXR0cl9fKCkuCi0KLS0gSXNzdWUgIzI2MDgzOiBXb3JrYXJvdW5kIGEgc3VicHJvY2VzcyBidWcgdGhhdCByYWlzZXMgYW4gaW5jb3JyZWN0Ci0gICJWYWx1ZUVycm9yOiBpbnNlY3VyZSBzdHJpbmcgcGlja2xlIiBleGNlcHRpb24gaW5zdGVhZCBvZiB0aGUgYWN0dWFsCi0gIGV4Y2VwdGlvbiBvbiBzb21lIHBsYXRmb3JtcyBzdWNoIGFzIE1hYyBPUyBYIHdoZW4gYW4gZXhjZXB0aW9uIHJhaXNlZAotICBpbiB0aGUgZm9ya2VkIGNoaWxkIHByb2Nlc3MgcHJpb3IgdG8gdGhlIGV4ZWMoKSB3YXMgbGFyZ2UgZW5vdWdoIHRoYXQKLSAgaXQgb3ZlcmZsb3dlZCB0aGUgaW50ZXJuYWwgZXJycGlwZV9yZWFkIHBpcGUgYnVmZmVyLgotCi0tIElzc3VlICMyNDEwMzogRml4ZWQgcG9zc2libGUgdXNlIGFmdGVyIGZyZWUgaW4gRWxlbWVudFRyZWUuaXRlcnBhcnNlKCkuCi0KLS0gSXNzdWUgIzIwOTU0OiBfYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzIHVzZWQgYnkgbXVsdGlwcm9jZXNzaW5nIGFuZCBzb21lCi0gIHRlc3RzIG5vIGxvbmdlciBiZWhhdmVzIGluY29ycmVjdGx5IGluIHRoZSBwcmVzZW5jZSBvZiB0aGUgUFlUSE9OSEFTSFNFRUQKLSAgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLS0gSXNzdWUgIzE0Mjg1OiBXaGVuIGV4ZWN1dGluZyBhIHBhY2thZ2Ugd2l0aCB0aGUgInB5dGhvbiAtbSBwYWNrYWdlIiBvcHRpb24sCi0gIGFuZCBwYWNrYWdlIGluaXRpYWxpemF0aW9uIHJhaXNlcyBJbXBvcnRFcnJvciwgYSBwcm9wZXIgdHJhY2ViYWNrIGlzIG5vdwotICByZXBvcnRlZC4KLQotLSBJc3N1ZSAjNjQ3ODogX3N0cnB0aW1lJ3MgcmVnZXhwIGNhY2hlIG5vdyBpcyByZXNldCBhZnRlciBjaGFuZ2luZyB0aW1lem9uZQotICB3aXRoIHRpbWUudHpzZXQoKS4KLQotLSBJc3N1ZSAjMjU3MTg6IEZpeGVkIGNvcHlpbmcgb2JqZWN0IHdpdGggc3RhdGUgd2l0aCBib29sZWFuIHZhbHVlIGlzIGZhbHNlLgotCi0tIElzc3VlICMyNTc0MjogOmZ1bmM6YGxvY2FsZS5zZXRsb2NhbGVgIG5vdyBhY2NlcHRzIGEgVW5pY29kZSBzdHJpbmcgZm9yCi0gIGl0cyBzZWNvbmQgcGFyYW1ldGVyLgotCi0tIElzc3VlICMxMDEzMTogRml4ZWQgZGVlcCBjb3B5aW5nIG9mIG1pbmlkb20gZG9jdW1lbnRzLiAgQmFzZWQgb24gcGF0Y2gKLSAgYnkgTWFyaWFuIEdhbmlzaW4uCi0KLS0gSXNzdWUgIzI1NzI1OiBGaXhlZCBhIHJlZmVyZW5jZSBsZWFrIGluIGNQaWNrbGUubG9hZHMoKSB3aGVuIHVucGlja2xpbmcKLSAgaW52YWxpZCBkYXRhIGluY2x1ZGluZyB0dXBsZSBpbnN0cnVjdGlvbnMuCi0KLS0gSXNzdWUgIzI1NjYzOiBJbiB0aGUgUmVhZGxpbmUgY29tcGxldGVyLCBhdm9pZCBsaXN0aW5nIGR1cGxpY2F0ZSBnbG9iYWwKLSAgbmFtZXMsIGFuZCBzZWFyY2ggdGhlIGdsb2JhbCBuYW1lc3BhY2UgYmVmb3JlIHNlYXJjaGluZyBidWlsdGlucy4KLQotLSBJc3N1ZSAjMjU2ODg6IEZpeGVkIGZpbGUgbGVhayBpbiBFbGVtZW50VHJlZS5pdGVycGFyc2UoKSByYWlzaW5nIGFuIGVycm9yLgotCi0tIElzc3VlICMyMzkxNDogRml4ZWQgU3lzdGVtRXJyb3IgcmFpc2VkIGJ5IENQaWNrbGUgdW5waWNrbGVyIG9uIGJyb2tlbiBkYXRhLgotCi0tIElzc3VlICMyNTkyNDogQXZvaWQgdW5uZWNlc3Nhcnkgc2VyaWFsaXphdGlvbiBvZiBnZXRhZGRyaW5mbygzKSBjYWxscyBvbgotICBPUyBYIHZlcnNpb25zIDEwLjUgb3IgaGlnaGVyLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuCi0KLS0gSXNzdWUgIzI2NDA2OiBBdm9pZCB1bm5lY2Vzc2FyeSBzZXJpYWxpemF0aW9uIG9mIGdldGFkZHJpbmZvKDMpIGNhbGxzIG9uCi0gIGN1cnJlbnQgdmVyc2lvbnMgb2YgT3BlbkJTRCBhbmQgTmV0QlNELiAgUGF0Y2ggYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjNTEyNDogUGFzdGUgd2l0aCB0ZXh0IHNlbGVjdGVkIG5vdyByZXBsYWNlcyB0aGUgc2VsZWN0aW9uIG9uIFgxMS4KLSAgVGhpcyBtYXRjaGVzIGhvdyBwYXN0ZSB3b3JrcyBvbiBXaW5kb3dzLCBNYWMsIG1vc3QgbW9kZXJuIExpbnV4IGFwcHMsCi0gIGFuZCB0dGsgd2lkZ2V0cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzI0NzU5OiBNYWtlIGNsZWFyIGluIGlkbGVsaWIuaWRsZV90ZXN0Ll9faW5pdF9fIHRoYXQgdGhlIGRpcmVjdG9yeQotICBpcyBhIHByaXZhdGUgaW1wbGVtZW50YXRpb24gb2YgdGVzdC50ZXN0X2lkbGUgYW5kIHRvb2wgZm9yIG1haW50YWluZXJzLgotCi0tIElzc3VlICMyNjY3MzogV2hlbiB0ayByZXBvcnRzIGZvbnQgc2l6ZSBhcyAwLCBjaGFuZ2UgdG8gc2l6ZSAxMC4KLSAgU3VjaCBmb250cyBvbiBMaW51eCBwcmV2ZW50ZWQgdGhlIGNvbmZpZ3VyYXRpb24gZGlhbG9nIGZyb20gb3BlbmluZy4KLQotLSBJc3N1ZSAjMjcwNDQ6IEFkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCi0KLS0gSW4gdGhlICdJRExFLWNvbnNvbGUgZGlmZmVyZW5jZXMnIHNlY3Rpb24gb2YgdGhlIElETEUgZG9jLCBjbGFyaWZ5Ci0gIGhvdyBydW5uaW5nIHdpdGggSURMRSBhZmZlY3RzIHN5cy5tb2R1bGVzIGFuZCB0aGUgc3RhbmRhcmQgc3RyZWFtcy4KLQotLSBJc3N1ZSAjMjU1MDc6IGZpeCBpbmNvcnJlY3QgY2hhbmdlIGluIElPQmluZGluZyB0aGF0IHByZXZlbnRlZCBwcmludGluZy4KLSAgQ2hhbmdlIGFsc28gcHJldmVudGVkIHNhdmluZyBzaGVsbCB3aW5kb3cgd2l0aCBub24tYXNjaWkgY2hhcmFjdGVycy4KLSAgQXVnbWVudCBJT0JpbmRpbmcgaHRlc3QgdG8gaW5jbHVkZSBhbGwgbWFqb3IgSU9CaW5kaW5nIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjMjU5MDU6IFJldmVydCB1bndhbnRlZCBjb252ZXJzaW9uIG9mICcgdG8g4oCZIFJJR0hUIFNJTkdMRSBRVU9UQVRJT04KLSAgTUFSSyBpbiBSRUFETUUudHh0IGFuZCBvcGVuIHRoaXMgYW5kIE5FV1MudHh0IHdpdGggJ2FzY2lpJy4KLSAgUmUtZW5jb2RlIENSRURJVFMudHh0IHRvIHV0Zi04IGFuZCBvcGVuIGl0IHdpdGggJ3V0Zi04Jy4KLQotLSBJc3N1ZSAjMjY0MTc6IFByZXZlbnQgc3B1cmlvdXMgZXJyb3JzIGFuZCBpbmNvcnJlY3QgZGVmYXVsdHMgd2hlbgotICBpbnN0YWxsaW5nIElETEUgMi43IG9uIE9TIFg6IGRlZmF1bHQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcmUKLSAgbm8gbG9uZ2VyIGluc3RhbGxlZCBmcm9tIE9TIFggc3BlY2lmaWMgY29waWVzLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzI2NzM2OiBVc2VkIEhUVFBTIGZvciBleHRlcm5hbCBsaW5rcyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBpZiBwb3NzaWJsZS4KLQotLSBJc3N1ZSAjNjk1MzogUmV3b3JrIHRoZSBSZWFkbGluZSBtb2R1bGUgZG9jdW1lbnRhdGlvbiB0byBncm91cCByZWxhdGVkCi0gIGZ1bmN0aW9ucyB0b2dldGhlciwgYW5kIGFkZCBtb3JlIGRldGFpbHMgc3VjaCBhcyB3aGF0IHVuZGVybHlpbmcgUmVhZGxpbmUKLSAgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMgYXJlIGFjY2Vzc2VkLgotCi0tIElzc3VlICMyNjAxNDogR3VpZGUgdXNlcnMgdG8gdGhlIG5ld2VyIHBhY2thZ2luZyBkb2N1bWVudGF0aW9uIGFzIHdhcyBkb25lCi0gIGZvciBQeXRob24gMy54LiAgSW4gcGFydGljdWxhciwgdGhlIHRvcC1sZXZlbCAyLjcgZG9jdW1lbnRhdGlvbiBwYWdlIG5vdwotICBsaW5rcyB0byB0aGUgbmV3ZXIgaW5zdGFsbGVyIGFuZCBkaXN0cmlidXRpb25zIHBhZ2VzIHJhdGhlciB0aGFuIHRoZQotICBsZWdhY3kgaW5zdGFsbCBhbmQgRGlzdHV0aWxzIHBhZ2VzOyB0aGVzZSBhcmUgc3RpbGwgbGlua2VkIHRvIGluIHRoZQotICBsaWJyYXJ5L2Rpc3R1dGlscyBkb2MgcGFnZS4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzIxOTE2OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHR1cnRsZSBtb2R1bGUuICBQYXRjaCBieSBpbmdyaWQsCi0gIEdyZWdvcnkgTG95c2UgYW5kIEplbGxlIFppamxzdHJhLgotCi0tIElzc3VlICMyNTk0MDogQ2hhbmdlZCB0ZXN0X3NzbCB0byB1c2Ugc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQuICBUaGlzCi0gIGF2b2lkcyByZWx5aW5nIG9uIHN2bi5weXRob24ub3JnLCB3aGljaCByZWNlbnRseSBjaGFuZ2VkIHJvb3QgY2VydGlmaWNhdGUuCi0KLS0gSXNzdWUgIzI1NjE2OiBUZXN0cyBmb3IgT3JkZXJlZERpY3QgYXJlIGV4dHJhY3RlZCBmcm9tIHRlc3RfY29sbGVjdGlvbnMKLSAgaW50byBzZXBhcmF0ZSBmaWxlIHRlc3Rfb3JkZXJlZF9kaWN0LgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMjIzNTk6IEF2b2lkIGluY29ycmVjdCByZWN1cnNpdmUgJChNQUtFKSwgYW5kIGRpc2FibGUgdGhlIHJ1bGVzIGZvcgotICBydW5uaW5nIHBnZW4gd2hlbiBjcm9zcy1jb21waWxpbmcuICBUaGUgcGdlbiBvdXRwdXQgaXMgbm9ybWFsbHkgc2F2ZWQgd2l0aAotICB0aGUgc291cmNlIGNvZGUgYW55d2F5LCBhbmQgaXMgc3RpbGwgcmVnZW5lcmF0ZWQgd2hlbiBkb2luZyBhIG5hdGl2ZSBidWlsZC4KLSAgUGF0Y2ggYnkgSm9uYXMgV2FnbmVyIGFuZCBYYXZpZXIgZGUgR2F5ZS4KLQotLSBJc3N1ZSAjMTk0NTA6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgU1FMaXRlIDMuOC4xMS4wLgotCi0tIElzc3VlICMyNzIyOTogRml4IHRoZSBjcm9zcy1jb21waWxpbmcgcGdlbiBydWxlIGZvciBpbi10cmVlIGJ1aWxkcy4gIFBhdGNoCi0gIGJ5IFhhdmllciBkZSBHYXllLgotCi0tIElzc3VlICMxNzYwMzogQXZvaWQgZXJyb3IgYWJvdXQgbm9uZXhpc3RhbnQgZmlsZWJsb2Nrcy5vIGZpbGUgYnkgdXNpbmcgYQotICBsb3dlci1sZXZlbCBjaGVjayBmb3Igc3RfYmxvY2tzIGluIHN0cnVjdCBzdGF0LgotCi0tIElzc3VlICMyNjQ2NTogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yZy4KLQotLSBJc3N1ZSAjMjQ0MjE6IENvbXBpbGUgTW9kdWxlcy9fbWF0aC5jIG9uY2UsIGJlZm9yZSBidWlsZGluZyBleHRlbnNpb25zLgotICBQcmV2aW91c2x5IGl0IGNvdWxkIGZhaWwgdG8gY29tcGlsZSBwcm9wZXJseSBpZiB0aGUgbWF0aCBhbmQgY21hdGggYnVpbGRzCi0gIHdlcmUgY29uY3VycmVudC4KLQotLSBJc3N1ZSAjMjU4MjQ6IEZpeGVzIHN5cy53aW52ZXIgdG8gbm90IGluY2x1ZGUgYW55IGFyY2hpdGVjdHVyZSBzdWZmaXguCi0KLS0gSXNzdWUgIzI1MzQ4OiBBZGRlZCBgYC0tcGdvYGAgYW5kIGBgLS1wZ28tam9iYGAgYXJndW1lbnRzIHRvCi0gIGBgUENidWlsZFxidWlsZC5iYXRgYCBmb3IgYnVpbGRpbmcgd2l0aCBQcm9maWxlLUd1aWRlZCBPcHRpbWl6YXRpb24uICBUaGUKLSAgb2xkIGBgUENidWlsZFxidWlsZF9wZ28uYmF0YGAgc2NyaXB0IGlzIG5vdyBkZXByZWNhdGVkLCBhbmQgc2ltcGx5IGNhbGxzCi0gIGBgUENidWlsZFxidWlsZC5iYXQgLS1wZ28gJSpgYC4KLQotLSBJc3N1ZSAjMjU4Mjc6IEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyB3aXRoIElDQyB0byBgYGNvbmZpZ3VyZWBgLCBpbmNsdWRpbmcKLSAgYSBuZXcgYGAtLXdpdGgtaWNjYGAgZmxhZy4KLQotLSBJc3N1ZSAjMjU2OTY6IEZpeCBpbnN0YWxsYXRpb24gb2YgUHl0aG9uIG9uIFVOSVggd2l0aCBtYWtlIC1qOS4KLQotLSBJc3N1ZSAjMjY5MzA6IFVwZGF0ZSBPUyBYIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlciB0byBidWlsZAotICBhbmQgbGluayB3aXRoIE9wZW5TU0wgMS4wLjJoLgotCi0tIElzc3VlICMyNjI2ODogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yZi4KLQotLSBJc3N1ZSAjMjUxMzY6IFN1cHBvcnQgQXBwbGUgWGNvZGUgNydzIG5ldyB0ZXh0dWFsIFNESyBzdHViIGxpYnJhcmllcy4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzI2Nzk5OiBGaXggcHl0aG9uLWdkYi5weTogZG9uJ3QgZ2V0IEMgdHlwZXMgb25jZSB3aGVuIHRoZSBQeXRob24gY29kZQotICBpcyBsb2FkZWQsIGJ1dCBnZXQgQyB0eXBlcyBvbiBkZW1hbmQuIFRoZSBDIHR5cGVzIGNhbiBjaGFuZ2UgaWYKLSAgcHl0aG9uLWdkYi5weSBpcyBsb2FkZWQgYmVmb3JlIHRoZSBQeXRob24gZXhlY3V0YWJsZS4gUGF0Y2ggd3JpdHRlbiBieSBUaG9tYXMKLSAgSWxzY2hlLgotCi1DIEFQSQotLS0tLS0KLQotLSBJc3N1ZSAjMjY0NzY6IEZpeGVkIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNlIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpIGluIEMrKy4KLSAgUGF0Y2ggYnkgSmVyb2VuIERlbWV5ZXIuCi0KLU1pc2MKLS0tLS0KLQotLSBJc3N1ZSAjMTc1MDAsIGFuZCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3B5dGhvbmRvdG9yZy9pc3N1ZXMvOTQ1OiBSZW1vdmUKLSAgdW51c2VkIGFuZCBvdXRkYXRlZCBpY29ucy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcuMTE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMTUtMTItMDUqCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjU2MjQ6IFppcEZpbGUgbm93IGFsd2F5cyB3cml0ZXMgYSBaSVBfU1RPUkVEIGhlYWRlciBmb3IgZGlyZWN0b3J5Ci0gIGVudHJpZXMuICBQYXRjaCBieSBEaW5neXVhbiBXYW5nLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNy4xMSByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMTUtMTEtMjEqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyNTY3ODogQXZvaWQgYnVmZmVyIG92ZXJyZWFkcyB3aGVuIGludCgpLCBsb25nKCksIGZsb2F0KCksIGFuZAotICBjb21waWxlKCkgYXJlIHBhc3NlZCBidWZmZXIgb2JqZWN0cy4gIFRoZXNlIG9iamVjdHMgYXJlIG5vdCBuZWNlc3NhcmlseQotICB0ZXJtaW5hdGVkIGJ5IGEgbnVsbCBieXRlLCBidXQgdGhlIGZ1bmN0aW9ucyBhc3N1bWVkIHRoZXkgd2VyZS4KLQotLSBJc3N1ZSAjMjUzODg6IEZpeGVkIHRva2VuaXplciBoYW5nIHdoZW4gcHJvY2Vzc2luZyB1bmRlY29kYWJsZSBzb3VyY2UgY29kZQotICB3aXRoIGEgbnVsbCBieXRlLgotCi0tIElzc3VlICMyMjk5NTogRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBfX3JlZHVjZV9fIGFuZCBfX3JlZHVjZV9leF9fIG5vdwotICByZWplY3RzIGJ1aWx0aW4gdHlwZXMgd2l0aCBub3QgZGVmaW5lZCBfX25ld19fLgotCi0tIElzc3VlICM3MjY3OiBmb3JtYXQoaW50LCAnYycpIG5vdyByYWlzZXMgT3ZlcmZsb3dFcnJvciB3aGVuIHRoZSBhcmd1bWVudCBpcwotICBub3QgaW4gcmFuZ2UoMCwgMjU2KS4KLQotLSBJc3N1ZSAjMjQ4MDY6IFByZXZlbnQgYnVpbHRpbiB0eXBlcyB0aGF0IGFyZSBub3QgYWxsb3dlZCB0byBiZSBzdWJjbGFzc2VkIGZyb20KLSAgYmVpbmcgc3ViY2xhc3NlZCB0aHJvdWdoIG11bHRpcGxlIGluaGVyaXRhbmNlLgotCi0tIElzc3VlICMyNDg0ODogRml4ZWQgYSBudW1iZXIgb2YgYnVncyBpbiBVVEYtNyBkZWNvZGluZyBvZiBtaXNmb3JtZWQgZGF0YS4KLQotLSBJc3N1ZSAjMjUwMDM6IG9zLnVyYW5kb20oKSBkb2Vzbid0IHVzZSBnZXRlbnRyb3B5KCkgb24gU29sYXJpcyBiZWNhdXNlCi0gIGdldGVudHJvcHkoKSBpcyBibG9ja2luZywgd2hlcmVhcyBvcy51cmFuZG9tKCkgc2hvdWxkIG5vdCBibG9jay4gZ2V0ZW50cm9weSgpCi0gIGlzIHN1cHBvcnRlZCBzaW5jZSBTb2xhcmlzIDExLjMuCi0KLS0gSXNzdWUgIzIxMTY3OiBOQU4gb3BlcmF0aW9ucyBhcmUgbm93IGhhbmRsZWQgY29ycmVjdGx5IHdoZW4gcHl0aG9uIGlzCi0gIGNvbXBpbGVkIHdpdGggSUNDIGV2ZW4gaWYgLWZwLW1vZGVsIHN0cmljdCBpcyBub3Qgc3BlY2lmaWVkLgotCi0tIElzc3VlICMyNDQ2NzogRml4ZWQgcG9zc2libGUgYnVmZmVyIG92ZXItcmVhZCBpbiBieXRlYXJyYXkuIFRoZSBieXRlYXJyYXkKLSAgb2JqZWN0IG5vdyBhbHdheXMgYWxsb2NhdGVzIHBsYWNlIGZvciB0cmFpbGluZyBudWxsIGJ5dGUgYW5kIGl0J3MgYnVmZmVyIG5vdwotICBpcyBhbHdheXMgbnVsbC10ZXJtaW5hdGVkLgotCi0tIElzc3VlICMxOTU0MzogZW5jb2RlKCkgYW5kIGRlY29kZSgpIG1ldGhvZHMgYW5kIGNvbnN0cnVjdG9ycyBvZiBzdHIsCi0gIHVuaWNvZGUgYW5kIGJ5dGVhcnJheSBjbGFzc2VzIG5vdyBlbWl0IGRlcHJlY2F0aW9uIHdhcm5pbmcgZm9yIGtub3duCi0gIG5vbi10ZXh0IGVuY29kaW5ncyB3aGVuIFB5dGhvbiBpcyByYW4gd2l0aCB0aGUgLTMgb3B0aW9uLgotCi0tIElzc3VlICMyNDExNTogVXBkYXRlIHVzZXMgb2YgUHlPYmplY3RfSXNUcnVlKCksIFB5T2JqZWN0X05vdCgpLAotICBQeU9iamVjdF9Jc0luc3RhbmNlKCksIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgpIGFuZCBfUHlEaWN0X0NvbnRhaW5zKCkKLSAgdG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUgZXJyb3JzIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjNDc1MzogT24gY29tcGlsZXJzIHdoZXJlIGl0IGlzIHN1cHBvcnRlZCwgdXNlICJjb21wdXRlZCBnb3RvcyIgZm9yCi0gIGJ5dGVjb2RlIGRpc3BhdGNoIGluIHRoZSBpbnRlcnByZXRlci4gVGhpcyBpbXByb3ZlcyBpbnRlcnByZXRhdGlvbgotICBwZXJmb3JtYW5jZS4KLQotLSBJc3N1ZSAjMjI5Mzk6IEZpeGVkIGludGVnZXIgb3ZlcmZsb3cgaW4gaXRlcmF0b3Igb2JqZWN0LiAgT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQ2xlbWVudCBSb3VhdWx0LgotCi0tIElzc3VlICMyNDEwMjogRml4ZWQgZXhjZXB0aW9uIHR5cGUgY2hlY2tpbmcgaW4gc3RhbmRhcmQgZXJyb3IgaGFuZGxlcnMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTAxMjg6IGJhY2twb3J0IGlzc3VlICMxMDg0NSdzIG1pdGlnYXRpb24gb2YgaW5jb21wYXRpYmlsaXRpZXMgYmV0d2VlbgotICB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSBhbmQgZGlyZWN0b3J5IGFuZCB6aXBmaWxlIGV4ZWN1dGlvbi4KLSAgTXVsdGlwcm9jZXNzaW5nIG9uIFdpbmRvd3Mgd2lsbCBub3cgYXV0b21hdGljYWxseSBza2lwIHJlcnVubmluZyBfX21haW5fXyBpbgotICBzcGF3bmVkIHByb2Nlc3NlcywgcmF0aGVyIHRoYW4gZmFpbGluZyB3aXRoIEFzc2VydGlvbkVycm9yLgotCi0tIElzc3VlICMyNTU3ODogRml4IChhbm90aGVyKSBtZW1vcnkgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcigpLgotCi0tIElzc3VlICMyNTU5MDogSW4gdGhlIFJlYWRsaW5lIGNvbXBsZXRlciwgb25seSBjYWxsIGdldGF0dHIoKSBvbmNlIHBlcgotICBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzI1NTMwOiBEaXNhYmxlIHRoZSB2dWxuZXJhYmxlIFNTTHYzIHByb3RvY29sIGJ5IGRlZmF1bHQgd2hlbiBjcmVhdGluZwotICBzc2wuU1NMQ29udGV4dC4KLQotLSBJc3N1ZSAjMjU1Njk6IEZpeCBtZW1vcnkgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKS4KLQotLSBJc3N1ZSAjNzc1OTogRml4ZWQgdGhlIG1obGliIG1vZHVsZSBvbiBmaWxlc3lzdGVtcyB0aGF0IGRvZXNuJ3Qgc3VwcG9ydAotICBsaW5rIGNvdW50aW5nIGZvciBkaXJlY3Rvcmllcy4KLQotLSBJc3N1ZSAjODkyOTAyOiBGaXhlZCBwaWNrbGluZyByZWN1cnNpdmUgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTgwMTA6IEZpeCB0aGUgcHlkb2MgR1VJJ3Mgc2VhcmNoIGZ1bmN0aW9uIHRvIGhhbmRsZSBleGNlcHRpb25zCi0gIGZyb20gaW1wb3J0aW5nIHBhY2thZ2VzLgotCi0tIElzc3VlICMyNTUxNTogQWx3YXlzIHVzZSBvcy51cmFuZG9tIGFzIGEgc291cmNlIG9mIHJhbmRvbW5lc3MgaW4gdXVpZC51dWlkNC4KLQotLSBJc3N1ZSAjMjE4Mjc6IEZpeGVkIHRleHR3cmFwLmRlZGVudCgpIGZvciB0aGUgY2FzZSB3aGVuIGxhcmdlc3QgY29tbW9uCi0gIHdoaXRlc3BhY2UgaXMgYSBzdWJzdHJpbmcgb2Ygc21hbGxlc3QgbGVhZGluZyB3aGl0ZXNwYWNlLgotICBCYXNlZCBvbiBwYXRjaCBieSBSb2JlcnQgTGkuCi0KLS0gSXNzdWUgIzIxNzA5OiBGaXggdGhlIGxvZ2dpbmcgbW9kdWxlIHRvIG5vdCBkZXBlbmQgdXBvbiBfX2ZpbGVfXyBiZWluZyBzZXQKLSAgcHJvcGVybHkgdG8gZ2V0IHRoZSBmaWxlbmFtZSBvZiBpdHMgY2FsbGVyIGZyb20gdGhlIHN0YWNrLiAgVGhpcyBhbGxvd3MgaXQKLSAgdG8gd29yayBpZiBydW4gaW4gYSBmcm96ZW4gb3IgZW1iZWRkZWQgZW52aXJvbm1lbnQgd2hlcmUgdGhlIG1vZHVsZSdzCi0gIC5fX2ZpbGVfXyBhdHRyaWJ1dGUgZG9lcyBub3QgbWF0Y2ggaXRzIGNvZGUgb2JqZWN0J3MgLmNvX2ZpbGVuYW1lLgotCi0tIElzc3VlICMyNTMxOTogV2hlbiB0aHJlYWRpbmcuRXZlbnQgaXMgcmVpbml0aWFsaXplZCwgdGhlIHVuZGVybHlpbmcgY29uZGl0aW9uCi0gIHNob3VsZCB1c2UgYSByZWd1bGFyIGxvY2sgcmF0aGVyIHRoYW4gYSByZWN1cnNpdmUgbG9jay4KLQotLSBJc3N1ZSAjMjUyMzI6IEZpeCBDR0lSZXF1ZXN0SGFuZGxlciB0byBzcGxpdCB0aGUgcXVlcnkgZnJvbSB0aGUgVVJMIGF0IHRoZQotICBmaXJzdCBxdWVzdGlvbiBtYXJrICg/KSByYXRoZXIgdGhhbiB0aGUgbGFzdC4gUGF0Y2ggZnJvbSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjQ2NTc6IFByZXZlbnQgQ0dJUmVxdWVzdEhhbmRsZXIgZnJvbSBjb2xsYXBzaW5nIHNsYXNoZXMgaW4gdGhlCi0gIHF1ZXJ5IHBhcnQgb2YgdGhlIFVSTCBhcyBpZiBpdCB3ZXJlIGEgcGF0aC4gUGF0Y2ggZnJvbSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjI5NTg6IENvbnN0cnVjdG9yIGFuZCB1cGRhdGUgbWV0aG9kIG9mIHdlYWtyZWYuV2Vha1ZhbHVlRGljdGlvbmFyeQotICBub3cgYWNjZXB0IHRoZSBzZWxmIGtleXdvcmQgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzIyNjA5OiBDb25zdHJ1Y3RvciBhbmQgdGhlIHVwZGF0ZSBtZXRob2Qgb2YgY29sbGVjdGlvbnMuVXNlckRpY3Qgbm93Ci0gIGFjY2VwdCB0aGUgc2VsZiBrZXl3b3JkIGFyZ3VtZW50LgotCi0tIElzc3VlICMyNTIwMzogRmFpbGVkIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCkgbm8gbG9uZ2VyIGxlZnQgdGhlCi0gIG1vZHVsZSBpbiBpbmNvbnNpc3RlbnQgc3RhdGUuCi0KLS0gSXNzdWUgIzE5MTQzOiBwbGF0Zm9ybSBtb2R1bGUgbm93IHJlYWRzIFdpbmRvd3MgdmVyc2lvbiBmcm9tIGtlcm5lbDMyLmRsbCB0bwotICBhdm9pZCBjb21wYXRpYmlsaXR5IHNoaW1zLgotCi0tIElzc3VlICMyNTEzNTogTWFrZSBkZXF1ZV9jbGVhcigpIHNhZmVyIGJ5IGVtcHR5aW5nIHRoZSBkZXF1ZSBiZWZvcmUgY2xlYXJpbmcuCi0gIFRoaXMgaGVscHMgYXZvaWQgcG9zc2libGUgcmVlbnRyYW5jeSBpc3N1ZXMuCi0KLS0gSXNzdWUgIzI0Njg0OiBzb2NrZXQuc29ja2V0LmdldGFkZHJpbmZvKCkgbm93IGNhbGxzCi0gIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIGVuY29kZSgpIG1ldGhvZCBvZiB0aGUKLSAgaG9zdCwgdG8gaGFuZGxlIGNvcnJlY3RseSBjdXN0b20gdW5pY29kZSBzdHJpbmcgd2l0aCBhbiBlbmNvZGUoKSBtZXRob2QKLSAgd2hpY2ggZG9lc24ndCByZXR1cm4gYSBieXRlIHN0cmluZy4gVGhlIGVuY29kZXIgb2YgdGhlIElETkEgY29kZWMgaXMgbm93Ci0gIGNhbGxlZCBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlIGVuY29kZSgpIG1ldGhvZCBvZiB0aGUgc3RyaW5nLgotCi0tIElzc3VlICMyNDk4Mjogc2h1dGlsLm1ha2VfYXJjaGl2ZSgpIHdpdGggdGhlICJ6aXAiIGZvcm1hdCBub3cgYWRkcyBlbnRyaWVzCi0gIGZvciBkaXJlY3RvcmllcyAoaW5jbHVkaW5nIGVtcHR5IGRpcmVjdG9yaWVzKSBpbiBaSVAgZmlsZS4KLQotLSBJc3N1ZSAjMTc4NDk6IFJhaXNlIGEgc2Vuc2libGUgZXhjZXB0aW9uIGlmIGFuIGludmFsaWQgcmVzcG9uc2UgaXMKLSAgcmVjZWl2ZWQgZm9yIGEgSFRUUCB0dW5uZWwgcmVxdWVzdCwgYXMgc2VlbiB3aXRoIHNvbWUgc2VydmVycyB0aGF0Ci0gIGRvIG5vdCBzdXBwb3J0IHR1bm5lbGxpbmcuICBJbml0aWFsIHBhdGNoIGZyb20gQ29yeSBCZW5maWVsZC4KLQotLSBJc3N1ZSAjMTYxODA6IEV4aXQgcGRiIGlmIGZpbGUgaGFzIHN5bnRheCBlcnJvciwgaW5zdGVhZCBvZiB0cmFwcGluZyB1c2VyCi0gIGluIGFuIGluZmluaXRlIGxvb3AuICBQYXRjaCBieSBYYXZpZXIgZGUgR2F5ZS4KLQotLSBJc3N1ZSAjMjI4MTI6IEZpeCB1bml0dGVzdCBkaXNjb3ZlcnkgZXhhbXBsZXMuCi0gIFBhdGNoIGZyb20gUGFtIE1jQSdOdWx0eS4KLQotLSBJc3N1ZSAjMjQ2MzQ6IEltcG9ydGluZyB1dWlkIHNob3VsZCBub3QgdHJ5IHRvIGxvYWQgbGliYyBvbiBXaW5kb3dzCi0KLS0gSXNzdWUgIzIzNjUyOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGNvbXBpbGUgdGhlIHNlbGVjdCBtb2R1bGUgYWdhaW5zdCB0aGUKLSAgbGliYyBoZWFkZXJzIGZyb20gdGhlIExpbnV4IFN0YW5kYXJkIEJhc2UsIHdoaWNoIGRvIG5vdCBpbmNsdWRlIHNvbWUKLSAgRVBPTEwgbWFjcm9zLiAgSW5pdGlhbCBwYXRjaCBieSBNYXR0IEZyYW5rLgotCi0tIElzc3VlICMxNTEzODogU3BlZWQgdXAgYmFzZTY0LnVybHNhZmVfYjY0e2VuLGRlfWNvZGUgY29uc2lkZXJhYmx5LgotCi0tIElzc3VlICMyMzMxOTogRml4IGN0eXBlcy5CaWdFbmRpYW5TdHJ1Y3R1cmUsIHN3YXAgY29ycmVjdGx5IGJ5dGVzLiBQYXRjaAotICB3cml0dGVuIGJ5IE1hdHRoaWV1IEdhdXRpZXIuCi0KLS0gSXNzdWUgIzIzMjU0OiBEb2N1bWVudCBob3cgdG8gY2xvc2UgdGhlIFRDUFNlcnZlciBsaXN0ZW5pbmcgc29ja2V0LgotICBQYXRjaCBmcm9tIE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzE3NTI3OiBBZGQgUEFUQ0ggdG8gd3NnaXJlZi52YWxpZGF0b3IuIFBhdGNoIGZyb20gTHVjYSBTYmFyZGVsbGEuCi0KLS0gSXNzdWUgIzI0NjEzOiBDYWxsaW5nIGFycmF5LmZyb21zdHJpbmcoKSB3aXRoIHNlbGYgaXMgbm8gbG9uZ2VyIGFsbG93ZWQKLSAgdG8gcHJldmVudCB0aGUgdXNlLWFmdGVyLWZyZWUgZXJyb3IuICBQYXRjaCBieSBKb2huIExlaXRjaC4KLQotLSBJc3N1ZSAjMjQ3MDg6IEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIHN0cm9wLnJlcGxhY2UoKS4KLQotLSBJc3N1ZSAjMjQ2MjA6IFJhbmRvbS5zZXRzdGF0ZSgpIG5vdyB2YWxpZGF0ZXMgdGhlIHZhbHVlIG9mIHN0YXRlIGxhc3QgZWxlbWVudC4KLQotLSBJc3N1ZSAjMTM5Mzg6IDJ0bzMgY29udmVydHMgU3RyaW5nVHlwZXMgdG8gYSB0dXBsZS4gUGF0Y2ggZnJvbSBNYXJrIEhhbW1vbmQuCi0KLS0gSXNzdWUgIzI0NjExOiBGaXhlZCBjb21waWxpbmcgdGhlIHBvc2l4IG1vZHVsZSBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMKLSAgd2l0aG91dCBta25vZCgpIG9yIG1ha2VkZXYoKSAoZS5nLiBvbiBVbml4d2FyZSkuCi0KLS0gSXNzdWUgIzE4Njg0OiBGaXhlZCByZWFkaW5nIG91dCBvZiB0aGUgYnVmZmVyIGluIHRoZSByZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzI0MjU5OiB0YXJmaWxlIG5vdyByYWlzZXMgYSBSZWFkRXJyb3IgaWYgYW4gYXJjaGl2ZSBpcyB0cnVuY2F0ZWQKLSAgaW5zaWRlIGEgZGF0YSBzZWdtZW50LgotCi0tIElzc3VlICMyNDUxNDogdGFyZmlsZSBub3cgdG9sZXJhdGVzIG51bWJlciBmaWVsZHMgY29uc2lzdGluZyBvZiBvbmx5Ci0gIHdoaXRlc3BhY2UuCi0KLS0gSXNzdWUgIzIwMzg3OiBSZXN0b3JlIHNlbWFudGljIHJvdW5kLXRyaXAgY29ycmVjdG5lc3MgaW4gdG9rZW5pemUvdW50b2tlbml6ZQotICBmb3IgdGFiLWluZGVudGVkIGJsb2Nrcy4KLQotLSBJc3N1ZSAjMjQ0NTY6IEZpeGVkIHBvc3NpYmxlIGJ1ZmZlciBvdmVyLXJlYWQgaW4gYWRwY20ybGluKCkgYW5kIGxpbjJhZHBjbSgpCi0gIGZ1bmN0aW9ucyBvZiB0aGUgYXVkaW9vcCBtb2R1bGUuICBGaXhlZCBTeXN0ZW1FcnJvciB3aGVuIHRoZSBzdGF0ZSBpcyBub3QgYQotICB0dXBsZS4gIEZpeGVkIHBvc3NpYmxlIG1lbW9yeSBsZWFrLgotCi0tIElzc3VlICMyNDQ4MTogRml4IHBvc3NpYmxlIG1lbW9yeSBjb3JydXB0aW9uIHdpdGggbGFyZ2UgcHJvZmlsZXIgaW5mbyBzdHJpbmdzCi0gIGluIGhvdHNob3QuCi0KLS0gSXNzdWUgIzI0NDg5OiBlbnN1cmUgYSBwcmV2aW91c2x5IHNldCBDIGVycm5vIGRvZXNuJ3QgZGlzdHVyYiBjbWF0aC5wb2xhcigpLgotCi0tIElzc3VlICMxOTU0MzogaW8uVGV4dElPV3JhcHBlciAoYW5kIGhlbmNlIGlvLm9wZW4oKSkgbm93IHVzZXMgdGhlIGludGVybmFsCi0gIGNvZGVjIG1hcmtpbmcgc3lzdGVtIGFkZGVkIHRvIGVtaXQgZGVwcmVjYXRpb24gd2FybmluZyBmb3Iga25vd24gbm9uLXRleHQKLSAgZW5jb2RpbmdzIGF0IHN0cmVhbSBjb25zdHJ1Y3Rpb24gdGltZSB3aGVuIFB5dGhvbiBpcyByYW4gd2l0aCB0aGUgLTMgb3B0aW9uLgotCi0tIElzc3VlICMyNDI2NDogRml4ZWQgYnVmZmVyIG92ZXJmbG93IGluIHRoZSBpbWFnZW9wIG1vZHVsZS4KLQotLSBJc3N1ZSAjNTYzMzogRml4ZWQgdGltZWl0IHdoZW4gdGhlIHN0YXRlbWVudCBpcyBhIHN0cmluZyBhbmQgdGhlIHNldHVwIGlzIG5vdC4KLQotLSBJc3N1ZSAjMjQzMjY6IEZpeGVkIGF1ZGlvb3AucmF0ZWN2KCkgd2l0aCBub24tZGVmYXVsdCB3ZWlnaHRCIGFyZ3VtZW50LgotICBPcmlnaW5hbCBwYXRjaCBieSBEYXZpZCBNb29yZS4KLQotLSBJc3N1ZSAjMjIwOTU6IEZpeGVkIEhUVFBDb25uZWN0aW9uLnNldF90dW5uZWwgd2l0aCBkZWZhdWx0IHBvcnQuICBUaGUgcG9ydAotICB2YWx1ZSBpbiB0aGUgaG9zdCBoZWFkZXIgd2FzIHNldCB0byAiTm9uZSIuICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgotCi0tIElzc3VlICMyNDI1NzogRml4ZWQgc2VnbWVudGF0aW9uIGZhdWx0IGluIHNxbGl0ZTMuUm93IGNvbnN0cnVjdG9yIHdpdGggZmFrZWQKLSAgY3Vyc29yIHR5cGUuCi0KLS0gSXNzdWUgIzI0Mjg2OiBEaWN0IHZpZXcgd2VyZSBub3QgcmVnaXN0ZXJlZCB3aXRoIHRoZSBNYXBwaW5nVmlldyBhYnN0cmFjdAotICBiYXNlIGNsYXNzZXMuICBUaGlzIGNhdXNlZCBrZXkgYW5kIGl0ZW0gdmlld3MgaW4gT3JkZXJlZERpY3QgdG8gbm90IGJlIGVxdWFsCi0gIHRvIHRoZWlyIHJlZ3VsYXIgZGljdCBjb3VudGVycGFydHMuCi0KLS0gSXNzdWUgIzIyMTA3OiB0ZW1wZmlsZS5nZXR0ZW1wZGlyKCkgYW5kIHRlbXBmaWxlLm1rZHRlbXAoKSBub3cgdHJ5IGFnYWluCi0gIHdoZW4gYSBkaXJlY3Rvcnkgd2l0aCB0aGUgY2hvc2VuIG5hbWUgYWxyZWFkeSBleGlzdHMgb24gV2luZG93cyBhcyB3ZWxsIGFzCi0gIG9uIFVuaXguICB0ZW1wZmlsZS5ta3N0ZW1wKCkgbm93IGZhaWxzIGVhcmx5IGlmIHBhcmVudCBkaXJlY3RvcnkgaXMgbm90Ci0gIHZhbGlkIChub3QgZXhpc3RzIG9yIGlzIGEgZmlsZSkgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjNjU5ODogSW5jcmVhc2VkIHRpbWUgcHJlY2lzaW9uIGFuZCByYW5kb20gbnVtYmVyIHJhbmdlIGluCi0gIGVtYWlsLnV0aWxzLm1ha2VfbXNnaWQoKSB0byBzdHJlbmd0aGVuIHRoZSB1bmlxdWVuZXNzIG9mIHRoZSBtZXNzYWdlIElELgotCi0tIElzc3VlICMyNDA5MTogRml4ZWQgdmFyaW91cyBjcmFzaGVzIGluIGNvcm5lciBjYXNlcyBpbiBjRWxlbWVudFRyZWUuCi0KLS0gSXNzdWUgIzE1MjY3OiBIVFRQQ29ubmVjdGlvbi5yZXF1ZXN0KCkgbm93IGlzIGNvbXBhdGliaWxlIHdpdGggb2xkLXN0eWxlCi0gIGNsYXNzZXMgKHN1Y2ggYXMgVGVtcG9yYXJ5RmlsZSkuICBPcmlnaW5hbCBwYXRjaCBieSBBdHN1byBJc2hpbW90by4KLQotLSBJc3N1ZSAjMjAwMTQ6IGFycmF5LmFycmF5KCkgbm93IGFjY2VwdHMgdW5pY29kZSB0eXBlY29kZXMuICBCYXNlZCBvbiBwYXRjaCBieQotICBWYWpyYXNreSBLb2suCi0KLS0gSXNzdWUgIzIzNjM3OiBTaG93aW5nIGEgd2FybmluZyBubyBsb25nZXIgZmFpbHMgd2l0aCBVbmljb2RlRXJycm9yLgotICBGb3JtYXR0aW5nIHVuaWNvZGUgd2FybmluZyBpbiB0aGUgZmlsZSB3aXRoIHRoZSBwYXRoIGNvbnRhaW5pbmcgbm9uLWFzY2lpCi0gIGNoYXJhY3RlcnMgbm8gbG9uZ2VyIGZhaWxzIHdpdGggVW5pY29kZUVycnJvci4KLQotLSBJc3N1ZSAjMjQxMzQ6IFJldmVydGVkIGlzc3VlICMyNDEzNCBjaGFuZ2VzLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzE1MzQ4OiBTdG9wIHRoZSBkZWJ1Z2dlciBlbmdpbmUgKG5vcm1hbGx5IGluIGEgdXNlciBwcm9jZXNzKQotICBiZWZvcmUgY2xvc2luZyB0aGUgZGVidWdnZXIgd2luZG93IChydW5uaW5nIGluIHRoZSBJRExFIHByb2Nlc3MpLgotICBUaGlzIHByZXZlbnRzIHRoZSBSdW50aW1lRXJyb3JzIHRoYXQgd2VyZSBiZWluZyBjYXVnaHQgYW5kIGlnbm9yZWQuCi0KLS0gSXNzdWUgIzI0NDU1OiBQcmV2ZW50IElETEUgZnJvbSBoYW5naW5nIHdoZW4gYSkgY2xvc2luZyB0aGUgc2hlbGwgd2hpbGUgdGhlCi0gIGRlYnVnZ2VyIGlzIGFjdGl2ZSAoMTUzNDcpOyBiKSBjbG9zaW5nIHRoZSBkZWJ1Z2dlciB3aXRoIHRoZSBbWF0gYnV0dG9uCi0gICgxNTM0OCk7IGFuZCBjKSBhY3RpdmF0aW5nIHRoZSBkZWJ1Z2dlciB3aGVuIGFscmVhZHkgYWN0aXZlICgyNDQ1NSkuCi0gIFRoZSBwYXRjaCBieSBNYXJrIFJvc2VtYW4gZG9lcyB0aGlzIGJ5IG1ha2luZyB0d28gY2hhbmdlcy4KLSAgMS4gU3VzcGVuZCBhbmQgcmVzdW1lIHRoZSBndWkuaW50ZXJhY3Rpb24gbWV0aG9kIHdpdGggdGhlIHRjbCB2d2FpdAotICBtZWNoYW5pc20gaW50ZW5kZWQgZm9yIHRoaXMgcHVycG9zZSAoaW5zdGVhZCBvZiByb290Lm1haW5sb29wICYgLnF1aXQpLgotICAyLiBJbiBndWkucnVuLCBhbGxvdyBhbnkgZXhpc3RpbmcgaW50ZXJhY3Rpb24gdG8gdGVybWluYXRlIGZpcnN0LgotCi0tIENoYW5nZSAnVGhlIHByb2dyYW0nIHRvICdZb3VyIHByb2dyYW0nIGluIGFuIElETEUgJ2tpbGwgcHJvZ3JhbT8nIG1lc3NhZ2UKLSAgdG8gbWFrZSBpdCBjbGVhcmVyIHRoYXQgdGhlIHByb2dyYW0gcmVmZXJyZWQgdG8gaXMgdGhlIGN1cnJlbnRseSBydW5uaW5nCi0gIHVzZXIgcHJvZ3JhbSwgbm90IElETEUgaXRzZWxmLgotCi0tIElzc3VlICMyNDc1MDogSW1wcm92ZSB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgSURMRSBlZGl0b3Igd2luZG93IHN0YXR1cyBiYXIuCi0gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KLQotLSBJc3N1ZSAjMjUzMTM6IENoYW5nZSB0aGUgaGFuZGxpbmcgb2YgbmV3IGJ1aWx0LWluIHRleHQgY29sb3IgdGhlbWVzIHRvIGJldHRlcgotICBhZGRyZXNzIHRoZSBjb21wYXRpYmlsaXR5IHByb2JsZW0gaW50cm9kdWNlZCBieSB0aGUgYWRkaXRpb24gb2YgSURMRSBEYXJrLgotICBDb25zaXN0ZW50bHkgdXNlIHRoZSByZXZpc2VkIGlkbGVDb25mLkN1cnJlbnRUaGVtZSBldmVyeXdoZXJlIGluIGlkbGVsaWIuCi0KLS0gSXNzdWUgIzI0NzgyOiBFeHRlbnNpb24gY29uZmlndXJhdGlvbiBpcyBub3cgYSB0YWIgaW4gdGhlIElETEUgUHJlZmVyZW5jZXMKLSAgZGlhbG9nIHJhdGhlciB0aGFuIGEgc2VwYXJhdGUgZGlhbG9nLiAgIFRoZSBmb3JtZXIgdGFicyBhcmUgbm93IGEgc29ydGVkCi0gIGxpc3QuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCi0KLS0gSXNzdWUgIzIyNzI2OiBSZS1hY3RpdmF0ZSB0aGUgY29uZmlnIGRpYWxvZyBoZWxwIGJ1dHRvbiB3aXRoIHNvbWUgY29udGVudAotICBhYm91dCB0aGUgb3RoZXIgYnV0dG9ucyBhbmQgdGhlIG5ldyBJRExFIERhcmsgdGhlbWUuCi0KLS0gSXNzdWUgIzI0ODIwOiBJRExFIG5vdyBoYXMgYW4gJ0lETEUgRGFyaycgYnVpbHQtaW4gdGV4dCBjb2xvciB0aGVtZS4KLSAgSXQgaXMgbW9yZSBvciBsZXNzIElETEUgQ2xhc3NpYyBpbnZlcnRlZCwgd2l0aCBhIGNvYmFsdCBibHVlIGJhY2tncm91bmQuCi0gIFN0cmluZ3MsIGNvbW1lbnRzLCBrZXl3b3JkcywgLi4uIGFyZSBzdGlsbCBncmVlbiwgcmVkLCBvcmFuZ2UsIC4uLiAuCi0gIFRvIHVzZSBpdCB3aXRoIElETEVzIHJlbGVhc2VkIGJlZm9yZSBOb3ZlbWJlciAyMDE1LCBoaXQgdGhlCi0gICdTYXZlIGFzIE5ldyBDdXN0b20gVGhlbWUnIGJ1dHRvbiBhbmQgZW50ZXIgYSBuZXcgbmFtZSwKLSAgc3VjaCBhcyAnQ3VzdG9tIERhcmsnLiAgVGhlIGN1c3RvbSB0aGVtZSB3aWxsIHdvcmsgd2l0aCBhbnkgSURMRQotICByZWxlYXNlLCBhbmQgY2FuIGJlIG1vZGlmaWVkLgotCi0tIElzc3VlICMyNTIyNDogUkVBRE1FLnR4dCBpcyBub3cgYW4gaWRsZWxpYiBpbmRleCBmb3IgSURMRSBkZXZlbG9wZXJzIGFuZAotICBjdXJpb3VzIHVzZXJzLiAgVGhlIHByZXZpb3VzIHVzZXIgY29udGVudCBpcyBub3cgaW4gdGhlIElETEUgZG9jIGNoYXB0ZXIuCi0gICdJRExFJyBub3cgbWVhbnMgJ0ludGVncmF0ZWQgRGV2ZWxvcG1lbnQgYW5kIExlYXJuaW5nIEVudmlyb25tZW50Jy4KLQotLSBJc3N1ZSAjMjQ4MjA6IFVzZXJzIGNhbiBub3cgc2V0IGJyZWFrcG9pbnQgY29sb3JzIGluCi0gIFNldHRpbmdzIC0+IEN1c3RvbSBIaWdobGlnaHRpbmcuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCi0KLS0gSXNzdWUgIzI0OTcyOiBJbmFjdGl2ZSBzZWxlY3Rpb24gYmFja2dyb3VuZCBub3cgbWF0Y2hlcyBhY3RpdmUgc2VsZWN0aW9uCi0gIGJhY2tncm91bmQsIGFzIGNvbmZpZ3VyZWQgYnkgdXNlcnMsIG9uIGFsbCBzeXN0ZW1zLiAgRm91bmQgaXRlbXMgYXJlIG5vdwotICBhbHdheXMgaGlnaGxpZ2h0ZWQgb24gV2luZG93cy4gIEluaXRpYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgotCi0tIElzc3VlICMyNDU3MDogSWRsZTogbWFrZSBjYWxsdGlwIGFuZCBjb21wbGV0aW9uIGJveGVzIGFwcGVhciBvbiBNYWNzCi0gIGFmZmVjdGVkIGJ5IGEgdGsgcmVncmVzc2lvbi4gIEluaXRpYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgotCi0tIElzc3VlICMyNDk4ODogSWRsZSBTY3JvbGxlZExpc3QgY29udGV4dCBtZW51cyAodXNlZCBpbiBkZWJ1Z2dlcikKLSAgbm93IHdvcmsgb24gTWFjIEFxdWEuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCi0KLS0gSXNzdWUgIzI0ODAxOiBNYWtlIHJpZ2h0LWNsaWNrIGZvciBjb250ZXh0IG1lbnUgd29yayBvbiBNYWMgQXF1YS4KLSAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgotCi0tIElzc3VlICMyNTE3MzogQXNzb2NpYXRlIHRraW50ZXIgbWVzc2FnZWJveGVzIHdpdGggYSBzcGVjaWZpYyB3aWRnZXQuCi0gIEZvciBNYWMgT1NYLCBtYWtlIHRoZW0gYSAnc2hlZXQnLiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgotCi0tIElzc3VlICMyNTE5ODogRW5oYW5jZSB0aGUgaW5pdGlhbCBodG1sIHZpZXdlciBub3cgdXNlZCBmb3IgSWRsZSBIZWxwLgotICAqIFByb3Blcmx5IGluZGVudCBmaXhlZC1waXRjaCB0ZXh0IChwYXRjaCBieSBNYXJrIFJvc2VtYW4pLgotICAqIEdpdmUgY29kZSBzbmlwcGV0IGEgdmVyeSBTcGhpbngtbGlrZSBsaWdodCBibHVlaXNoLWdyYXkgYmFja2dyb3VuZC4KLSAgKiBSZS11c2UgaW5pdGlhbCB3aWR0aCBhbmQgaGVpZ2h0IHNldCBieSB1c2VycyBmb3Igc2hlbGwgYW5kIGVkaXRvci4KLSAgKiBXaGVuIHRoZSBUYWJsZSBvZiBDb250ZW50cyAoVE9DKSBtZW51IGlzIHVzZWQsIHB1dCB0aGUgc2VjdGlvbiBoZWFkZXIKLSAgYXQgdGhlIHRvcCBvZiB0aGUgc2NyZWVuLgotCi0tIElzc3VlICMyNTIyNTogQ29uZGVuc2UgYW5kIHJld3JpdGUgSWRsZSBkb2Mgc2VjdGlvbiBvbiB0ZXh0IGNvbG9ycy4KLQotLSBJc3N1ZSAjMjE5OTU6IEV4cGxhaW4gc29tZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIElETEUgYW5kIGNvbnNvbGUgUHl0aG9uLgotCi0tIElzc3VlICMyMjgyMDogRXhwbGFpbiBuZWVkIGZvciAqcHJpbnQqIHdoZW4gcnVubmluZyBmaWxlIGZyb20gSWRsZSBlZGl0b3IuCi0KLS0gSXNzdWUgIzI1MjI0OiBEb2M6IGF1Z21lbnQgSWRsZSBmZWF0dXJlIGxpc3QgYW5kIG5vLXN1YnByb2Nlc3Mgc2VjdGlvbi4KLQotLSBJc3N1ZSAjMjUyMTk6IFVwZGF0ZSBkb2MgZm9yIElkbGUgY29tbWFuZCBsaW5lIG9wdGlvbnMuCi0gIFNvbWUgd2VyZSBtaXNzaW5nIGFuZCBub3RlcyB3ZXJlIG5vdCBjb3JyZWN0LgotCi0tIElzc3VlICMyNDg2MTogTW9zdCBvZiBpZGxlbGliIGlzIHByaXZhdGUgYW5kIHN1YmplY3QgdG8gY2hhbmdlLgotICBVc2UgaWRsZWliLmlkbGUuKiB0byBzdGFydCBJZGxlLiBTZWUgaWRsZWxpYi5fX2luaXRfXy5fX2RvY19fLgotCi0tIElzc3VlICMyNTE5OTogSWRsZTogYWRkIHN5bmNocm9uaXphdGlvbiBjb21tZW50cyBmb3IgZnV0dXJlIG1haW50YWluZXJzLgotCi0tIElzc3VlICMxNjg5MzogUmVwbGFjZSBoZWxwLnR4dCB3aXRoIGhlbHAuaHRtbCBmb3IgSWRsZSBkb2MgZGlzcGxheS4KLSAgVGhlIG5ldyBpZGxlbGliL2hlbHAuaHRtbCBpcyByc3RyaXBwZWQgRG9jL2J1aWxkL2h0bWwvbGlicmFyeS9pZGxlLmh0bWwuCi0gIEl0IGxvb2tzIGJldHRlciB0aGFuIGhlbHAudHh0IGFuZCB3aWxsIGJldHRlciBkb2N1bWVudCBJZGxlIGFzIHJlbGVhc2VkLgotICBUaGUgdGtpbnRlciBodG1sIHZpZXdlciB0aGF0IHdvcmtzIGZvciB0aGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgTWFyayBSb3NlbWFuLgotICBUaGUgbm93IHVudXNlZCBFZGl0b3JXaW5kb3cuSGVscERpYWxvZyBjbGFzcyBhbmQgaGVsdC50eHQgZmlsZSBhcmUgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjMjQxOTk6IERlcHJlY2F0ZSB1bnVzZWQgaWRsZWxpYi5pZGxldmVyIHdpdGggcG9zc2libGUgcmVtb3ZhbCBpbiAzLjYuCi0KLS0gSXNzdWUgIzI0NzkwOiBSZW1vdmUgZXh0cmFuZW91cyBjb2RlICh3aGljaCBhbHNvIGNyZWF0ZSAyICYgMyBjb25mbGljdHMpLgotCi0tIElzc3VlICMyMzY3MjogQWxsb3cgSWRsZSB0byBlZGl0IGFuZCBydW4gZmlsZXMgd2l0aCBhc3RyYWwgY2hhcnMgaW4gbmFtZS4KLSAgUGF0Y2ggYnkgTW9oZCBTYW5hZCBaYWtpIFJpenZpLgotCi0tIElzc3VlICMyNDc0NTogSWRsZSBlZGl0b3IgZGVmYXVsdCBmb250LiBTd2l0Y2ggZnJvbSBDb3VyaWVyIHRvCi0gIHBsYXRmb3JtLXNlbnNpdGl2ZSBUa0ZpeGVkRm9udC4gIFRoaXMgc2hvdWxkIG5vdCBhZmZlY3QgY3VycmVudCBjdXN0b21pemVkCi0gIGZvbnQgc2VsZWN0aW9ucy4gIElmIHRoZXJlIGlzIGEgcHJvYmxlbSwgZWRpdCAkSE9NRS8uaWRsZXJjL2NvbmZpZy1tYWluLmNmZwotICBhbmQgcmVtb3ZlICdmb250eHh4JyBlbnRyaWVzIGZyb20gW0VkaXRvciBXaW5kb3ddLiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgotCi0tIElzc3VlICMyMTE5MjogSWRsZSBlZGl0b3IuIFdoZW4gYSBmaWxlIGlzIHJ1biwgcHV0IGl0cyBuYW1lIGluIHRoZSByZXN0YXJ0IGJhci4KLSAgRG8gbm90IHByaW50IGZhbHNlIHByb21wdHMuIE9yaWdpbmFsIHBhdGNoIGJ5IEFkbmFuIFVtZXIuCi0KLS0gSXNzdWUgIzEzODg0OiBJZGxlIG1lbnVzLiBSZW1vdmUgdGVhcm9mZiBsaW5lcy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzE1ODA5OiBJRExFIHNoZWxsIG5vdyB1c2VzIGxvY2FsZSBlbmNvZGluZyBpbnN0ZWFkIG9mIExhdGluMSBmb3IKLSAgZGVjb2RpbmcgdW5pY29kZSBsaXRlcmFscy4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyNDk1MjogQ2xhcmlmeSB0aGUgZGVmYXVsdCBzaXplIGFyZ3VtZW50IG9mIHN0YWNrX3NpemUoKSBpbgotICB0aGUgInRocmVhZGluZyIgYW5kICJ0aHJlYWQiIG1vZHVsZXMuIFBhdGNoIGZyb20gTWF0dGlwLgotCi0tIElzc3VlICMyMDc2OTogSW1wcm92ZSByZWxvYWQoKSBkb2NzLiBQYXRjaCBieSBEb3JpYW4gUHVsYS4KLQotLSBJc3N1ZSAjMjM1ODk6IFJlbW92ZSBkdXBsaWNhdGUgc2VudGVuY2UgZnJvbSB0aGUgRkFRLiAgUGF0Y2ggYnkgWW9uZ3poaSBQYW4uCi0KLS0gSXNzdWUgIzIyMTU1OiBBZGQgRmlsZSBIYW5kbGVycyBzdWJzZWN0aW9uIHdpdGggY3JlYXRlZmlsZWhhbmRsZXIgdG8gVGtpbnRlcgotICBkb2MuICBSZW1vdmUgb2Jzb2xldGUgZXhhbXBsZSBmcm9tIEZBUS4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMyNDc1MTogV2hlbiBydW5uaW5nIHJlZ3J0ZXN0IHdpdGggdGhlIGBgLXdgYCBjb21tYW5kIGxpbmUgb3B0aW9uLAotICBhIHRlc3QgcnVuIGlzIG5vIGxvbmdlciBtYXJrZWQgYXMgYSBmYWlsdXJlIGlmIGFsbCB0ZXN0cyBzdWNjZWVkIHdoZW4KLSAgcmUtcnVuLgotCi0tIFBDYnVpbGRccnQuYmF0IG5vdyBhY2NlcHRzIGFuIHVubGltaXRlZCBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHBhc3MgYWxvbmcKLSAgdG8gcmVncnRlc3QucHkuICBQcmV2aW91c2x5IHRoZXJlIHdhcyBhIGxpbWl0IG9mIDkuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMyNDkxNTogV2hlbiBkb2luZyBhIFBHTyBidWlsZCwgdGhlIHRlc3Qgc3VpdGUgaXMgbm93IHVzZWQgaW5zdGVhZCBvZgotICBweWJlbmNoOyBDbGFuZyBzdXBwb3J0IHdhcyBhbHNvIGFkZGVkIGFzIHBhcnQgb2ZmIHRoaXMgd29yay4gSW5pdGlhbCBwYXRjaCBieQotICBBbGVjc2FuZHJ1IFBhdHJhc2N1IG9mIEludGVsLgotCi0tIElzc3VlICMyNDk4NjogSXQgaXMgbm93IHBvc3NpYmxlIHRvIGJ1aWxkIFB5dGhvbiBvbiBXaW5kb3dzIHdpdGhvdXQgZXJyb3JzCi0gIHdoZW4gZXh0ZXJuYWwgbGlicmFyaWVzIGFyZSBub3QgYXZhaWxhYmxlLgotCi0tIElzc3VlICMyNDUwODogQmFja3BvcnRlZCB0aGUgTVNCdWlsZCBwcm9qZWN0IGZpbGVzIGZyb20gUHl0aG9uIDMuNS4gIFRoZQotICBiYWNrcG9ydGVkIGZpbGVzIHJlcGxhY2UgdGhlIG9sZCBwcm9qZWN0IGZpbGVzIGluIFBDYnVpbGQ7IHRoZSBvbGQgZmlsZXMgbW92ZWQKLSAgdG8gUEMvVlM5LjAgYW5kIHJlbWFpbiBzdXBwb3J0ZWQuCi0KLS0gSXNzdWUgIzI0NjAzOiBVcGRhdGUgV2luZG93cyBidWlsZHMgYW5kIE9TIFggMTAuNSBpbnN0YWxsZXIgdG8gdXNlIE9wZW5TU0wKLSAgMS4wLjJkLgotCi1XaW5kb3dzCi0tLS0tLS0tCi0KLS0gSXNzdWUgIzI1MDIyOiBSZW1vdmVkIHZlcnkgb3V0ZGF0ZWQgUEMvZXhhbXBsZV9udC8gZGlyZWN0b3J5LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNy4xMD8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAxNS0wNS0yMyoKLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMyMjkzMTogQWxsb3cgJ1snIGFuZCAnXScgaW4gY29va2llIHZhbHVlcy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcuMTAgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDE1LTA1LTEwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjM5NzE6IEZpeCB1bmRlcmVzdGltYXRlZCBwcmVzaXppbmcgaW4gZGljdC5mcm9ta2V5cygpLgotCi0tIElzc3VlICMyMzc1NzogUHlTZXF1ZW5jZV9UdXBsZSgpIGluY29ycmVjdGx5IGNhbGxlZCB0aGUgY29uY3JldGUgbGlzdCBBUEkKLSAgd2hlbiB0aGUgZGF0YSB3YXMgYSBsaXN0IHN1YmNsYXNzLgotCi0tIElzc3VlICMyMzYyOTogRml4IHRoZSBkZWZhdWx0IF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIHZhcmlhYmxlLXNpemVkCi0gIG9iamVjdHMuCi0KLS0gSXNzdWUgIzIzMDU1OiBGaXhlZCBhIGJ1ZmZlciBvdmVyZmxvdyBpbiBQeVVuaWNvZGVfRnJvbUZvcm1hdFYuICBBbmFseXNpcwotICBhbmQgZml4IGJ5IEd1aWRvIFZyYW5rZW4uCi0KLS0gSXNzdWUgIzIzMDQ4OiBGaXgganVtcGluZyBvdXQgb2YgYW4gaW5maW5pdGUgd2hpbGUgbG9vcCBpbiB0aGUgcGRiLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gVGhlIGtleXdvcmRzIGF0dHJpYnV0ZSBvZiBmdW5jdG9vbHMucGFydGlhbCBpcyBub3cgYWx3YXlzIGEgZGljdGlvbmFyeS4KLQotLSBJc3N1ZSAjMjAyNzQ6IFdoZW4gY2FsbGluZyBhIF9zcWxpdGUuQ29ubmVjdGlvbiwgaXQgbm93IGNvbXBsYWlucyBpZiBwYXNzZWQKLSAgYW55IGtleXdvcmQgYXJndW1lbnRzLiAgUHJldmlvdXNseSBpdCBzaWxlbnRseSBpZ25vcmVkIHRoZW0uCi0KLS0gSXNzdWUgIzIwMjc0OiBSZW1vdmUgaWdub3JlZCBhbmQgZXJyb25lb3VzICJrd2FyZ3MiIHBhcmFtZXRlcnMgZnJvbSB0aHJlZQotICBNRVRIX1ZBUkFSR1MgbWV0aG9kcyBvbiBfc3FsaXRlLkNvbm5lY3Rpb24uCi0KLS0gSXNzdWUgIzI0MTM0OiBhc3NlcnRSYWlzZXMoKSBhbmQgYXNzZXJ0UmFpc2VzUmVnZXhwKCkgY2hlY2tzIGFyZSBub3QgbG9uZ2VyCi0gIHN1Y2Nlc3NmdWwgaWYgdGhlIGNhbGxhYmxlIGlzIE5vbmUuCi0KLS0gSXNzdWUgIzIzMDA4OiBGaXhlZCByZXNvbHZpbmcgYXR0cmlidXRlcyB3aXRoIGJvb2xlYW4gdmFsdWUgaXMgRmFsc2UgaW4gcHlkb2MuCi0KLS0gSXNzdWVzICMyNDA5OSwgIzI0MTAwLCBhbmQgIzI0MTAxOiBGaXggdXNlLWFmdGVyLWZyZWUgYnVnIGluIGhlYXBxJ3Mgc2lmdHVwCi0gIGFuZCBzaWZ0ZG93biBmdW5jdGlvbnMuCi0KLS0gQmFja3BvcnQgY29sbGVjdGlvbnMuZGVxdWUgZml4ZXMgZnJvbSBQeXRob24gMy41LiAgUHJldmVudHMgcmVlbnRyYW50IGJhZG5lc3MKLSAgZHVyaW5nIGRlbGV0aW9uIGJ5IGRlZmVycmluZyB0aGUgZGVjcmVmIHVudGlsIHRoZSBjb250YWluZXIgaGFzIGJlZW4gcmVzdG9yZWQKLSAgdG8gYSBjb25zaXN0ZW50IHN0YXRlLgotCi0tIElzc3VlICMyMzg0Mjogb3MubWFqb3IoKSwgb3MubWlub3IoKSBhbmQgb3MubWFrZWRldigpIG5vdyBzdXBwb3J0IGludHMgYWdhaW4uCi0KLS0gSXNzdWUgIzIzODExOiBBZGQgbWlzc2luZyBuZXdsaW5lIHRvIHRoZSBQeUNvbXBpbGVFcnJvciBlcnJvciBtZXNzYWdlLgotICBQYXRjaCBieSBBbGV4IFNoa29wLgotCi0tIElzc3VlICMxNzg5ODogRml4IGV4Y2VwdGlvbiBpbiBnZXR0ZXh0LnB5IHdoZW4gcGFyc2luZyBjZXJ0YWluIHBsdXJhbCBmb3Jtcy4KLQotLSBJc3N1ZSAjMjM4NjU6IGNsb3NlKCkgbWV0aG9kcyBpbiBtdWx0aXBsZSBtb2R1bGVzIG5vdyBhcmUgaWRlbXBvdGVudCBhbmQgbW9yZQotICByb2J1c3QgYXQgc2h1dGRvd24uIElmIHRoZXkgbmVlZCB0byByZWxlYXNlIG11bHRpcGxlIHJlc291cmNlcywgYWxsIGFyZQotICByZWxlYXNlZCBldmVuIGlmIGVycm9ycyBvY2N1ci4KLQotLSBJc3N1ZSAjMjM4ODE6IHVybGxpYi5mdHB3cmFwcGVyIGNvbnN0cnVjdG9yIG5vdyBjbG9zZXMgdGhlIHNvY2tldCBpZiB0aGUgRlRQCi0gIGNvbm5lY3Rpb24gZmFpbGVkLgotCi0tIElzc3VlICMxNTEzMzogX3RraW50ZXIudGthcHAuZ2V0Ym9vbGVhbigpIG5vdyBzdXBwb3J0cyBsb25nIGFuZCBUY2xfT2JqIGFuZAotICBhbHdheXMgcmV0dXJucyBib29sLiAgdGtpbnRlci5Cb29sZWFuVmFyIG5vdyB2YWxpZGF0ZXMgaW5wdXQgdmFsdWVzIChhY2NlcHRlZAotICBib29sLCBpbnQsIGxvbmcsIHN0ciwgdW5pY29kZSwgYW5kIFRjbF9PYmopLiAgdGtpbnRlci5Cb29sZWFuVmFyLmdldCgpIG5vdwotICBhbHdheXMgcmV0dXJucyBib29sLgotCi0tIElzc3VlICMyMzMzODogRml4ZWQgZm9ybWF0dGluZyBjdHlwZXMgZXJyb3IgbWVzc2FnZXMgb24gQ3lnd2luLgotICBQYXRjaCBieSBNYWtvdG8gS2F0by4KLQotLSBJc3N1ZSAjMTY4NDA6IFRraW50ZXIgbm93IHN1cHBvcnRzIDY0LWJpdCBpbnRlZ2VycyBhZGRlZCBpbiBUY2wgOC40IGFuZAotICBhcmJpdHJhcnkgcHJlY2lzaW9uIGludGVnZXJzIGFkZGVkIGluIFRjbCA4LjUuCi0KLS0gSXNzdWUgIzIzODM0OiBGaXggc29ja2V0LnNlbmR0bygpLCB1c2UgdGhlIEMgbG9uZyB0eXBlIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YKLSAgc2VuZHRvKCkgaW5zdGVhZCBvZiB0aGUgQyBpbnQgdHlwZS4KLQotLSBJc3N1ZSAjMjE1MjY6IFRraW50ZXIgbm93IHN1cHBvcnRzIG5ldyBib29sZWFuIHR5cGUgaW4gVGNsIDguNS4KLQotLSBJc3N1ZSAjMjM4Mzg6IGxpbmVjYWNoZSBub3cgY2xlYXJzIHRoZSBjYWNoZSBhbmQgcmV0dXJucyBhbiBlbXB0eSByZXN1bHQgb24KLSAgTWVtb3J5RXJyb3IuCi0KLS0gSXNzdWUgIzIzNzQyOiBudHBhdGguZXhwYW5kdmFycygpIG5vIGxvbmdlciBsb3NlcyB1bmJhbGFuY2VkIHNpbmdsZSBxdW90ZXMuCi0KLS0gSXNzdWUgIzIxODAyOiBUaGUgcmVhZGVyIGluIEJ1ZmZlcmVkUldQYWlyIG5vdyBpcyBjbG9zZWQgZXZlbiB3aGVuIGNsb3NpbmcKLSAgd3JpdGVyIGZhaWxlZCBpbiBCdWZmZXJlZFJXUGFpci5jbG9zZSgpLgotCi0tIElzc3VlICMyMzY3MTogc3RyaW5nLlRlbXBsYXRlIG5vdyBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgInNlbGYiIHBhcmFtZXRlciBhcwotICBhIGtleXdvcmQgYXJndW1lbnQuICBzdHJpbmcuRm9ybWF0dGVyIG5vdyBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgInNlbGYiIGFuZAotICB0aGUgImZvcm1hdF9zdHJpbmciIHBhcmFtZXRlcnMgYXMga2V5d29yZCBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzIxNTYwOiBBbiBhdHRlbXB0IHRvIHdyaXRlIGEgZGF0YSBvZiB3cm9uZyB0eXBlIG5vIGxvbmdlciBjYXVzZQotICBHemlwRmlsZSBjb3JydXB0aW9uLiAgT3JpZ2luYWwgcGF0Y2ggYnkgV29sZmdhbmcgTWFpZXIuCi0KLS0gSXNzdWUgIzIzNjQ3OiBJbmNyZWFzZSBpbXBhbGliJ3MgTUFYTElORSB0byBhY2NvbW1vZGF0ZSBtb2Rlcm4gbWFpbGJveCBzaXplcy4KLQotLSBJc3N1ZSAjMjM1Mzk6IElmIGJvZHkgaXMgTm9uZSwgaHR0cC5jbGllbnQuSFRUUENvbm5lY3Rpb24ucmVxdWVzdCBub3cgc2V0cwotICBDb250ZW50LUxlbmd0aCB0byAwIGZvciBQVVQsIFBPU1QsIGFuZCBQQVRDSCBoZWFkZXJzIHRvIGF2b2lkIDQxMSBlcnJvcnMgZnJvbQotICBzb21lIHdlYiBzZXJ2ZXJzLgotCi0tIElzc3VlICMyMzEzNjogX3N0cnB0aW1lIG5vdyB1bmlmb3JtbHkgaGFuZGxlcyBhbGwgZGF5cyBpbiB3ZWVrIDAsIGluY2x1ZGluZwotICBEZWMgMzAgb2YgcHJldmlvdXMgeWVhci4gIEJhc2VkIG9uIHBhdGNoIGJ5IEppbSBDYXJyb2xsLgotCi0tIElzc3VlICMyMzEzODogRml4ZWQgcGFyc2luZyBjb29raWVzIHdpdGggYWJzZW50IGtleXMgb3IgdmFsdWVzIGluIGNvb2tpZWphci4KLSAgUGF0Y2ggYnkgRGVtaWFuIEJyZWNodC4KLQotLSBJc3N1ZSAjMjMwNTE6IG11bHRpcHJvY2Vzc2luZy5Qb29sIG1ldGhvZHMgaW1hcCgpIGFuZCBpbWFwX3Vub3JkZXJlZCgpIG5vdwotICBoYW5kbGUgZXhjZXB0aW9ucyByYWlzZWQgYnkgYW4gaXRlcmF0b3IuICBQYXRjaCBieSBBbG9uIERpYW1hbnQgYW5kIERhdmluCi0gIFBvdHRzLgotCi0tIElzc3VlICMyMjkyODogRGlzYWJsZWQgSFRUUCBoZWFkZXIgaW5qZWN0aW9ucyBpbiBodHRwbGliLgotICBPcmlnaW5hbCBwYXRjaCBieSBEZW1pYW4gQnJlY2h0LgotCi0tIElzc3VlICMyMzYxNTogTW9kdWxlIHRhcmZpbGUgaXMgbm93IGNhbiBiZSByZWxvYWRlZCB3aXRoIGltcC5yZWxvYWQoKS4KLQotLSBJc3N1ZSAjMjI4NTM6IEZpeGVkIGEgZGVhZGxvY2sgd2hlbiB1c2UgbXVsdGlwcm9jZXNzaW5nLlF1ZXVlIGF0IGltcG9ydCB0aW1lLgotICBQYXRjaCBieSBGbG9yaWFuIEZpbmtlcm5hZ2VsIGFuZCBEYXZpbiBQb3R0cy4KLQotLSBJc3N1ZSAjMjM0NzY6IEluIHRoZSBzc2wgbW9kdWxlLCBlbmFibGUgT3BlblNTTCdzIFg1MDlfVl9GTEFHX1RSVVNURURfRklSU1QKLSAgZmxhZyBvbiBjZXJ0aWZpY2F0ZSBzdG9yZXMgd2hlbiBpdCBpcyBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzIzNTc2OiBBdm9pZCBzdGFsbGluZyBpbiBTU0wgcmVhZHMgd2hlbiBFT0YgaGFzIGJlZW4gcmVhY2hlZCBpbiB0aGUKLSAgU1NMIGxheWVyIGJ1dCB0aGUgdW5kZXJseWluZyBjb25uZWN0aW9uIGhhc24ndCBiZWVuIGNsb3NlZC4KLQotLSBJc3N1ZSAjMjM1MDQ6IEFkZGVkIGFuIF9fYWxsX18gdG8gdGhlIHR5cGVzIG1vZHVsZS4KLQotLSBJc3N1ZSAjMjM0NTg6IE9uIFBPU0lYLCB0aGUgZmlsZSBkZXNjcmlwdG9yIGtlcHQgb3BlbiBieSBvcy51cmFuZG9tKCkgaXMgbm93Ci0gIHNldCB0byBub24gaW5oZXJpdGFibGUKLQotLSBJc3N1ZSAjMjIxMTM6IHN0cnVjdC5wYWNrX2ludG8oKSBub3cgc3VwcG9ydHMgbmV3IGJ1ZmZlciBwcm90b2NvbCAoaW4KLSAgcGFydGljdWxhciBhY2NlcHRzIHdyaXRhYmxlIG1lbW9yeXZpZXcpLgotCi0tIElzc3VlcyAjODE0MjUzLCAjOTE3OTogV2FybmluZ3Mgbm93IGFyZSByYWlzZWQgd2hlbiBncm91cCByZWZlcmVuY2VzIGFuZAotICBjb25kaXRpb25hbCBncm91cCByZWZlcmVuY2VzIGFyZSB1c2VkIGluIGxvb2tiZWhpbmQgYXNzZXJ0aW9ucyBpbiByZWd1bGFyCi0gIGV4cHJlc3Npb25zLgotCi0tIElzc3VlICMyMzIxNTogTXVsdGlieXRlIGNvZGVjcyB3aXRoIGN1c3RvbSBlcnJvciBoYW5kbGVycyB0aGF0IGlnbm9yZXMgZXJyb3JzCi0gIGNvbnN1bWVkIHRvbyBtdWNoIG1lbW9yeSBhbmQgcmFpc2VkIFN5c3RlbUVycm9yIG9yIE1lbW9yeUVycm9yLgotICBPcmlnaW5hbCBwYXRjaCBieSBBbGVrc2kgVG9yaGFtby4KLQotLSBJc3N1ZSAjNTcwMDogaW8uRmlsZUlPKCkgY2FsbGVkIGZsdXNoKCkgYWZ0ZXIgY2xvc2luZyB0aGUgZmlsZS4KLSAgZmx1c2goKSB3YXMgbm90IGNhbGxlZCBpbiBjbG9zZSgpIGlmIGNsb3NlZmQ9RmFsc2UuCi0KLS0gSXNzdWUgIzIxNTQ4OiBGaXggcHlkb2Muc3lub3BzaXMoKSBhbmQgcHlkb2MuYXByb3BvcygpIG9uIG1vZHVsZXMgd2l0aCBlbXB0eQotICBkb2NzdHJpbmdzLiAgSW5pdGlhbCBwYXRjaCBieSBZdXlhbmcgR3VvLgotCi0tIElzc3VlICMyMjg4NTogRml4ZWQgYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIHZ1bG5lcmFiaWxpdHkgaW4gdGhlIGR1bWJkYm0KLSAgbW9kdWxlLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICMyMzQ4MTogUmVtb3ZlIFJDNCBmcm9tIHRoZSBTU0wgbW9kdWxlJ3MgZGVmYXVsdCBjaXBoZXIgbGlzdC4KLQotLSBJc3N1ZSAjMjE4NDk6IEZpeGVkIHhtbHJwY2xpYiBzZXJpYWxpemF0aW9uIG9mIG5vbi1BU0NJSSB1bmljb2RlIHN0cmluZ3MgaW4KLSAgdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUuCi0KLS0gSXNzdWUgIzIxODQwOiBGaXhlZCBleHBhbmRpbmcgdW5pY29kZSB2YXJpYWJsZXMgb2YgZm9ybSAkdmFyIGluCi0gIHBvc2l4cGF0aC5leHBhbmR2YXJzKCkuICBGaXhlZCBhbGwgb3MucGF0aCBpbXBsZW1lbnRhdGlvbnMgb24KLSAgdW5pY29kZS1kaXNhYmxlZCBidWlsZHMuCi0KLS0gSXNzdWUgIzIzMzY3OiBGaXggcG9zc2libGUgb3ZlcmZsb3dzIGluIHRoZSB1bmljb2RlZGF0YSBtb2R1bGUuCi0KLS0gSXNzdWUgIzIzMzYzOiBGaXggcG9zc2libGUgb3ZlcmZsb3cgaW4gaXRlcnRvb2xzLnBlcm11dGF0aW9ucy4KLQotLSBJc3N1ZSAjMjMzNjQ6IEZpeCBwb3NzaWJsZSBvdmVyZmxvdyBpbiBpdGVydG9vbHMucHJvZHVjdC4KLQotLSBJc3N1ZSAjMjMzNjU6IEZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4KLSAgaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50LgotCi0tIElzc3VlICMyMzM2NjogRml4ZWQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiBpdGVydG9vbHMuY29tYmluYXRpb25zLgotCi0tIElzc3VlICMyMzE5MTogZm5tYXRjaCBmdW5jdGlvbnMgdGhhdCB1c2UgY2FjaGluZyBhcmUgbm93IHRocmVhZHNhZmUuCi0KLS0gSXNzdWUgIzE4NTE4OiB0aW1laXQgbm93IHJlamVjdHMgc3RhdGVtZW50cyB3aGljaCBjYW4ndCBiZSBjb21waWxlZCBvdXRzaWRlCi0gIGEgZnVuY3Rpb24gb3IgYSBsb29wIChlLmcuICJyZXR1cm4iIG9yICJicmVhayIpLgotCi0tIElzc3VlICMxOTk5NjogTWFrZSA6bW9kOmBodHRwbGliYCBpZ25vcmUgaGVhZGVycyB3aXRoIG5vIG5hbWUgcmF0aGVyIHRoYW4KLSAgYXNzdW1pbmcgdGhlIGJvZHkgaGFzIHN0YXJ0ZWQuCi0KLS0gSXNzdWUgIzIwMTg4OiBTdXBwb3J0IEFwcGxpY2F0aW9uLUxheWVyIFByb3RvY29sIE5lZ290aWF0aW9uIChBTFBOKSBpbiB0aGUgc3NsCi0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjMjMyNDg6IFVwZGF0ZSBzc2wgZXJyb3IgY29kZXMgZnJvbSBsYXRlc3QgT3BlblNTTCBnaXQgbWFzdGVyLgotCi0tIElzc3VlICMyMzA5ODogNjQtYml0IGRldl90IGlzIG5vdyBzdXBwb3J0ZWQgaW4gdGhlIG9zIG1vZHVsZS4KLQotLSBJc3N1ZSAjMjMwNjM6IEluIHRoZSBkaXN1dGlscycgY2hlY2sgY29tbWFuZCwgZml4IHBhcnNpbmcgb2YgcmVTVCB3aXRoIGNvZGUgb3IKLSAgY29kZS1ibG9jayBkaXJlY3RpdmVzLgotCi0tIElzc3VlICMyMTM1NjogTWFrZSBzc2wuUkFORF9lZ2QoKSBvcHRpb25hbCB0byBzdXBwb3J0IExpYnJlU1NMLiBUaGUKLSAgYXZhaWxhYmlsaXR5IG9mIHRoZSBmdW5jdGlvbiBpcyBjaGVja2VkIGR1cmluZyB0aGUgY29tcGlsYXRpb24uIFBhdGNoIHdyaXR0ZW4KLSAgYnkgQmVybmFyZCBTcGlsLgotCi0tIEJhY2twb3J0IHRoZSBjb250ZXh0IGFyZ3VtZW50IHRvIGZ0cGxpYi5GVFBfVExTLgotCi0tIElzc3VlICMyMzExMTogTWF4aW1pemUgY29tcGF0aWJpbGl0eSBpbiBwcm90b2NvbCB2ZXJzaW9ucyBvZiBmdHBsaWIuRlRQX1RMUy4KLQotLSBJc3N1ZSAjMjMxMTI6IEZpeCBTaW1wbGVIVFRQU2VydmVyIHRvIGNvcnJlY3RseSBjYXJyeSB0aGUgcXVlcnkgc3RyaW5nIGFuZAotICBmcmFnbWVudCB3aGVuIGl0IHJlZGlyZWN0cyB0byBhZGQgYSB0cmFpbGluZyBzbGFzaC4KLQotLSBJc3N1ZSAjMjI1ODU6IE9uIE9wZW5CU0QgNS42IGFuZCBuZXdlciwgb3MudXJhbmRvbSgpIG5vdyBjYWxscyBnZXRlbnRyb3B5KCksCi0gIGluc3RlYWQgb2YgcmVhZGluZyAvZGV2L3VyYW5kb20sIHRvIGdldCBwc2V1ZG8tcmFuZG9tIGJ5dGVzLgotCi0tIElzc3VlICMyMzA5MzogSW4gdGhlIGlvLCBtb2R1bGUgYWxsb3cgbW9yZSBvcGVyYXRpb25zIHRvIHdvcmsgb24gZGV0YWNoZWQKLSAgc3RyZWFtcy4KLQotLSBJc3N1ZSAjMjMwNzE6IEFkZGVkIG1pc3NpbmcgbmFtZXMgdG8gY29kZWNzLl9fYWxsX18uICBQYXRjaCBieSBNYXJ0aW4gUGFudGVyLgotCi0tIElzc3VlICMyMzAxNjogQSB3YXJuaW5nIG5vIGxvbmdlciBwcm9kdWNlcyBhbiBBdHRyaWJ1dGVFcnJvciB3aGVuIHN5cy5zdGRlcnIKLSAgaXMgTm9uZS4KLQotLSBJc3N1ZSAjMjEwMzI6IEZpeGVkIHNvY2tldCBsZWFrIGlmIEhUVFBDb25uZWN0aW9uLmdldHJlc3BvbnNlKCkgZmFpbHMuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCi0KLS0gSXNzdWUgIzIyNjA5OiBDb25zdHJ1Y3RvcnMgYW5kIHVwZGF0ZSBtZXRob2RzIG9mIG1hcHBpbmcgY2xhc3NlcyBpbiB0aGUKLSAgY29sbGVjdGlvbnMgbW9kdWxlIG5vdyBhY2NlcHQgdGhlIHNlbGYga2V5d29yZCBhcmd1bWVudC4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMzAwNjogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgaW5kZXhpbmcgb2YgZGljdC5fX21pc3NpbmdfXy4KLSAgQWRkIGFuIGVudHJ5IGluIHRoZSBsYW5ndWFnZSBkYXRhbW9kZWwgc3BlY2lhbCBtZXRob2RzIHNlY3Rpb24uCi0gIFJldmlzZSBhbmQgaW5kZXggaXRzIGRpc2N1c3Npb24gaW4gdGhlIHN0ZHR5cGVzIG1hcHBpbmcvZGljdCBzZWN0aW9uLgotICBCYWNrcG9ydCB0aGUgY29kZSBleGFtcGxlIGZyb20gMy40LgotCi0tIElzc3VlICMyMTUxNDogVGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGpzb24gbW9kdWxlIG5vdyByZWZlcnMgdG8gbmV3IEpTT04gUkZDCi0gIDcxNTkgaW5zdGVhZCBvZiBvYnNvbGV0ZWQgUkZDIDQ2MjcuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMzMzMDogaDJweSBub3cgc3VwcG9ydHMgYXJiaXRyYXJ5IGZpbGVuYW1lcyBpbiAjaW5jbHVkZS4KLQotLSBJc3N1ZSAjNjYzOTogTW9kdWxlLWxldmVsIHR1cnRsZSBmdW5jdGlvbnMgbm8gbG9uZ2VyIHJhaXNlIFRjbEVycm9yIGFmdGVyCi0gIGNsb3NpbmcgdGhlIHdpbmRvdy4KLQotLSBJc3N1ZSAjMjIzMTQ6IHB5ZG9jIG5vdyB3b3JrcyB3aGVuIHRoZSBMSU5FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBzZXQuCi0KLS0gSXNzdWUgIzE4OTA1OiAicHlkb2MgLXAgMCIgbm93IG91dHB1dHMgYWN0dWFsbHkgdXNlZCBwb3J0LiAgQmFzZWQgb24gcGF0Y2ggYnkKLSAgV2llbGFuZCBIb2ZmbWFubi4KLQotLSBJc3N1ZSAjMjMzNDU6IFByZXZlbnQgdGVzdF9zc2wgZmFpbHVyZXMgd2l0aCBsYXJnZSBPcGVuU1NMIHBhdGNoIGxldmVsCi0gIHZhbHVlcyAobGlrZSAwLjkuOHpjKS4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzIzNzk5OiBBZGRlZCB0ZXN0LnRlc3Rfc3VwcG9ydC5zdGFydF90aHJlYWRzKCkgZm9yIHJ1bm5pbmcgYW5kCi0gIGNsZWFuaW5nIHVwIG11bHRpcGxlIHRocmVhZHMuCi0KLS0gSXNzdWUgIzIyMzkwOiB0ZXN0LnJlZ3J0ZXN0IG5vdyBlbWl0cyBhIHdhcm5pbmcgaWYgdGVtcG9yYXJ5IGZpbGVzIG9yCi0gIGRpcmVjdG9yaWVzIGFyZSBsZWZ0IGFmdGVyIHJ1bm5pbmcgYSB0ZXN0LgotCi0tIElzc3VlICMyMzU4MzogQWRkZWQgdGVzdHMgZm9yIHN0YW5kYXJkIElPIHN0cmVhbXMgaW4gSURMRS4KLQotLSBJc3N1ZSAjMjMzOTI6IEFkZGVkIHRlc3RzIGZvciBtYXJzaGFsIEMgQVBJIHRoYXQgd29ya3Mgd2l0aCBGSUxFKi4KLQotLSBJc3N1ZSAjMTg5ODI6IEFkZCB0ZXN0cyBmb3IgQ0xJIG9mIHRoZSBjYWxlbmRhciBtb2R1bGUuCi0KLS0gSXNzdWUgIzE5OTQ5OiBUaGUgdGVzdF94cGlja2xlIHRlc3Qgbm93IHRlc3RzIGNvbXBhdGliaWxpdHkgd2l0aCBpbnN0YWxsZWQKLSAgUHl0aG9uIDIuNyBhbmQgcmVwb3J0cyBza2lwcGVkIHRlc3RzLiAgQmFzZWQgb24gcGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxMTU3ODogQmFja3BvcnRlZCB0ZXN0IGZvciB0aGUgdGltZWl0IG1vZHVsZS4KLQotLSBJc3N1ZSAjMjI5NDM6IGJzZGRiIHRlc3RzIGFyZSBsb2NhbGUgaW5kZXBlbmRlbmQgbm93LgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzIzNTgzOiBGaXhlZCB3cml0aW5nIHVuaWNvZGUgdG8gc3RhbmRhcmQgb3V0cHV0IHN0cmVhbSBpbiBJRExFLgotCi0tIElzc3VlICMyMDU3NzogQ29uZmlndXJhdGlvbiBvZiB0aGUgbWF4IGxpbmUgbGVuZ3RoIGZvciB0aGUgRm9ybWF0UGFyYWdyYXBoCi0gIGV4dGVuc2lvbiBoYXMgYmVlbiBtb3ZlZCBmcm9tIHRoZSBHZW5lcmFsIHRhYiBvZiB0aGUgSWRsZSBwcmVmZXJlbmNlcyBkaWFsb2cKLSAgdG8gdGhlIEZvcm1hdFBhcmFncmFwaCB0YWIgb2YgdGhlIENvbmZpZyBFeHRlbnNpb25zIGRpYWxvZy4KLSAgUGF0Y2ggYnkgVGFsIEVpbmF0LgotCi0tIElzc3VlICMxNjg5MzogVXBkYXRlIElkbGUgZG9jIGNoYXB0ZXIgdG8gbWF0Y2ggY3VycmVudCBJZGxlIGFuZCBhZGQgbmV3Ci0gIGluZm9ybWF0aW9uLgotCi0tIElzc3VlICMyMzE4MDogUmVuYW1lIElETEUgIldpbmRvd3MiIG1lbnUgaXRlbSB0byAiV2luZG93Ii4KLSAgUGF0Y2ggYnkgQWwgU3dlaWdhcnQuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxNTUwNjogVXNlIHN0YW5kYXJkIFBLR19QUk9HX1BLR19DT05GSUcgYXV0b2NvbmYgbWFjcm8gaW4gdGhlIGNvbmZpZ3VyZQotICBzY3JpcHQuCi0KLS0gSXNzdWUgIzIzMDMyOiBGaXggaW5zdGFsbGVyIGJ1aWxkIGZhaWx1cmVzIG9uIE9TIFggMTAuNCBUaWdlcgotICBieSBkaXNhYmxpbmcgYXNzZW1ibHkgY29kZSBpbiB0aGUgT3BlblNTTCBidWlsZC4KLQotLSBJc3N1ZSAjMjM2ODY6IFVwZGF0ZSBPUyBYIDEwLjUgaW5zdGFsbGVyIGFuZCBXaW5kb3dzIGJ1aWxkcyB0byB1c2UKLSAgT3BlblNTTCAxLjAuMmEuCi0KLUMgQVBJCi0tLS0tLQotCi0tIElzc3VlICMyMzk5ODogUHlJbXBvcnRfUmVJbml0TG9jaygpIG5vdyBjaGVja3MgZm9yIGxvY2sgYWxsb2NhdGlvbiBlcnJvcgotCi0tIElzc3VlICMyMjA3OTogUHlUeXBlX1JlYWR5KCkgbm93IGNoZWNrcyB0aGF0IHN0YXRpY2FsbHkgYWxsb2NhdGVkIHR5cGUgaGFzCi0gIG5vIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBiYXNlcy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcuOT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDE0LTEyLTEwKgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzIyOTU5OiBSZW1vdmUgdGhlICpjaGVja19ob3N0bmFtZSogcGFyYW1ldGVyIG9mCi0gIGh0dHBsaWIuSFRUUFNDb25uZWN0aW9uLiBUaGUgKmNvbnRleHQqIHBhcmFtZXRlciBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgotCi0tIElzc3VlICMxNjA0MzogQWRkIGEgZGVmYXVsdCBsaW1pdCBmb3IgdGhlIGFtb3VudCBvZiBkYXRhIHhtbHJwY2xpYi5nemlwX2RlY29kZQotICB3aWxsIHJldHVybi4gVGhpcyByZXNvbHZlcyBDVkUtMjAxMy0xNzUzLgotCi0tIElzc3VlICMxNjA0MjogQ1ZFLTIwMTMtMTc1Mjogc210cGxpYjogTGltaXQgYW1vdW50IG9mIGRhdGEgcmVhZCBieSBsaW1pdGluZwotICB0aGUgY2FsbCB0byByZWFkbGluZSgpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KLQotLSBJc3N1ZSAjMTYwNDE6IEluIHBvcGxpYiwgbGltaXQgbWF4aW11bSBsaW5lIGxlbmd0aCByZWFkIGZyb20gdGhlIHNlcnZlciB0bwotICBwcmV2ZW50IENWRS0yMDEzLTE3NTIuCi0KLS0gSXNzdWUgIzIyOTYwOiBBZGQgYSBjb250ZXh0IGFyZ3VtZW50IHRvIHhtbHJwY2xpYi5TZXJ2ZXJQcm94eS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzIyOTM1OiBBbGxvdyB0aGUgc3NsIG1vZHVsZSB0byBiZSBjb21waWxlZCBpZiBvcGVuc3NsIGRvZXNuJ3Qgc3VwcG9ydAotICBTU0wgMy4KLQotLSBJc3N1ZSAjMTcxMjg6IFVzZSBwcml2YXRlIHZlcnNpb24gb2YgT3BlblNTTCBmb3IgMi43LjkgT1MgWCAxMC41KyBpbnN0YWxsZXIuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi43LjkgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMTQtMTEtMjUqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMTk2MzogYmFja291dCBpc3N1ZSAjMTg1NiBwYXRjaCAoYXZvaWQgY3Jhc2hlcyBhbmQgbG9ja3VwcyB3aGVuCi0gIGRhZW1vbiB0aHJlYWRzIHJ1biB3aGlsZSB0aGUgaW50ZXJwcmV0ZXIgaXMgc2h1dHRpbmcgZG93bjsgaW5zdGVhZCwgdGhlc2UKLSAgdGhyZWFkcyBhcmUgbm93IGtpbGxlZCB3aGVuIHRoZXkgdHJ5IHRvIHRha2UgdGhlIEdJTCksIGFzIGl0IHNlZW1zIHRvCi0gIGJyZWFrIHNvbWUgZXhpc3RpbmcgY29kZS4KLQotLSBJc3N1ZSAjMjI2MDQ6IEZpeCBhc3NlcnRpb24gZXJyb3IgaW4gZGVidWcgbW9kZSB3aGVuIGRpdmlkaW5nIGEgY29tcGxleAotICBudW1iZXIgYnkgKG5hbiswaikuCi0KLS0gSXNzdWUgIzIyNDcwOiBGaXhlZCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiAiYmFja3NsYXNocmVwbGFjZSIgYW5kCi0gICJ4bWxjaGFycmVmcmVwbGFjZSIgZXJyb3IgaGFuZGxlcnMuCi0KLS0gSXNzdWUgIzIyNTI2OiBGaXggaXRlcmF0aW5nIHRocm91Z2ggZmlsZXMgd2l0aCBsaW5lcyBsb25nZXIgdGhhbiAyXjMxIGJ5dGVzLgotCi0tIElzc3VlICMyMjUxOTogRml4IG92ZXJmbG93IGNoZWNraW5nIGluIFB5U3RyaW5nX1JlcHIuCi0KLS0gSXNzdWUgIzIyNTE4OiBGaXggaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gbGF0aW4tMSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjMjIzNzk6IEZpeCBlbXB0eSBleGNlcHRpb24gbWVzc2FnZSBpbiBhIFR5cGVFcnJvciByYWlzZWQgaW4KLSAgYGBzdHIuam9pbmBgLgotCi0tIElzc3VlICMyMjIyMTogTm93IHRoZSBzb3VyY2UgZW5jb2RpbmcgZGVjbGFyYXRpb24gb24gdGhlIHNlY29uZCBsaW5lIGlzbid0Ci0gIGVmZmVjdGl2ZSBpZiB0aGUgZmlyc3QgbGluZSBjb250YWlucyBhbnl0aGluZyBleGNlcHQgYSBjb21tZW50LgotCi0tIElzc3VlICMyMjAyMzogRml4IGBgJVNgYCwgYGAlUmBgIGFuZCBgYCVWYGAgZm9ybWF0cyBvZgotICA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUZvcm1hdGAuCi0KLS0gSXNzdWUgIzIxNTkxOiBDb3JyZWN0bHkgaGFuZGxlIHF1YWxpZmllZCBleGVjIHN0YXRlbWVudHMgaW4gdHVwbGUgZm9ybSBieQotICBtb3ZpbmcgY29tcGF0aWJpbGl0eSBsYXllciBmcm9tIHJ1bi10aW1lIHRvIEFTVCB0cmFuc2Zvcm1hdGlvbi4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMyMjQxNzogVmVyaWZ5IGNlcnRpZmljYXRlcyBieSBkZWZhdWx0IGluIGh0dHBsaWIgKFBFUCA0NzYpLgotCi0tIElzc3VlICMyMjkyNzogQWxsb3cgdXJsbGliLnVybG9wZW4gdG8gdGFrZSBhICpjb250ZXh0KiBwYXJhbWV0ZXIgdG8gY29udHJvbAotICBTU0wgc2V0dGluZ3MgZm9yIEhUVFBTIGNvbm5lY3Rpb25zLgotCi0tIElzc3VlICMyMjkyMTogQWxsb3cgU1NMQ29udGV4dCB0byB0YWtlIHRoZSAqaG9zdG5hbWUqIHBhcmFtZXRlciBldmVuIGlmCi0gIE9wZW5TU0wgZG9lc24ndCBzdXBwb3J0IFNOSS4KLQotLSBJc3N1ZSAjOTAwMyBhbmQgIzIyMzY2OiBodHRwbGliLkhUVFBTQ29ubmVjdGlvbiwgdXJsbGliMi5IVFRQU0hhbmRsZXIgYW5kCi0gIHVybGxpYjIudXJsb3BlbiBub3cgdGFrZSBvcHRpb25hbCBhcmd1bWVudHMgdG8gYWxsb3cgZm9yIHNlcnZlciBjZXJ0aWZpY2F0ZQotICBjaGVja2luZywgYXMgcmVjb21tZW5kZWQgaW4gcHVibGljIHVzZXMgb2YgSFRUUFMuIFRoaXMgYmFja3BvcnQgaXMgcGFydCBvZiBQRVAKLSAgNDY3LgotCi0tIElzc3VlICMxMjcyODogRGlmZmVyZW50IFVuaWNvZGUgY2hhcmFjdGVycyBoYXZpbmcgdGhlIHNhbWUgdXBwZXJjYXNlIGJ1dAotICBkaWZmZXJlbnQgbG93ZXJjYXNlIGFyZSBub3cgbWF0Y2hlZCBpbiBjYXNlLWluc2Vuc2l0aXZlIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCi0KLS0gSXNzdWUgIzIyODIxOiBGaXhlZCBmY250bCgpIHdpdGggaW50ZWdlciBhcmd1bWVudCBvbiA2NC1iaXQgYmlnLWVuZGlhbgotICBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzE3MjkzOiB1dWlkLmdldG5vZGUoKSBub3cgZGV0ZXJtaW5lcyBNQUMgYWRkcmVzcyBvbiBBSVggdXNpbmcgbmV0c3RhdC4KLSAgQmFzZWQgb24gcGF0Y2ggYnkgQWl2YXJzIEthbHbEgW5zLgotCi0tIElzc3VlICMyMjc2OTogRml4ZWQgdHRrLlRyZWV2aWV3LnRhZ19oYXMoKSB3aGVuIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMjI3ODc6IEFsbG93IHRoZSBrZXlmaWxlIGFyZ3VtZW50IG9mIFNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluIHRvIGJlCi0gIE5vbmUuCi0KLS0gSXNzdWUgIzIyNzc1OiBGaXhlZCB1bnBpY2tsaW5nIG9mIENvb2tpZS5TaW1wbGVDb29raWUgd2l0aCBwcm90b2NvbCAyLgotICBQYXRjaCBieSBUaW0gR3JhaGFtLgotCi0tIElzc3VlICMyMjc3NjogQnJvdWdodCBleGNsdWRlZCBjb2RlIGludG8gdGhlIHNjb3BlIG9mIGEgdHJ5IGJsb2NrIGluCi0gIFN5c0xvZ0hhbmRsZXIuZW1pdCgpLgotCi0tIElzc3VlICMxNzM4MTogRml4ZWQgcmFuZ2VzIGhhbmRsaW5nIGluIGNhc2UtaW5zZW5zaXRpdmUgcmVndWxhciBleHByZXNzaW9ucy4KLQotLSBJc3N1ZSAjMTkzMjk6IE9wdGltaXplZCBjb21waWxpbmcgY2hhcnNldHMgaW4gcmVndWxhciBleHByZXNzaW9ucy4KLQotLSBJc3N1ZSAjMjI0MTA6IE1vZHVsZSBsZXZlbCBmdW5jdGlvbnMgaW4gdGhlIHJlIG1vZHVsZSBub3cgY2FjaGUgY29tcGlsZWQKLSAgbG9jYWxlLWRlcGVuZGVudCByZWd1bGFyIGV4cHJlc3Npb25zIHRha2luZyBpbnRvIGFjY291bnQgdGhlIGxvY2FsZS4KLQotLSBJc3N1ZSAjODg3NjogZGlzdHV0aWxzIG5vdyBmYWxscyBiYWNrIHRvIGNvcHlpbmcgZmlsZXMgd2hlbiBoYXJkIGxpbmtpbmcKLSAgZG9lc24ndCB3b3JrLiAgVGhpcyBhbGxvd3MgdXNlIHdpdGggc3BlY2lhbCBmaWxlc3lzdGVtcyBzdWNoIGFzIFZpcnR1YWxCb3gKLSAgc2hhcmVkIGZvbGRlcnMuCi0KLS0gSXNzdWUgIzkzNTE6IERlZmF1bHRzIHNldCB3aXRoIHNldF9kZWZhdWx0cyBvbiBhbiBhcmdwYXJzZSBzdWJwYXJzZXIKLSAgYXJlIG5vIGxvbmdlciBpZ25vcmVkIHdoZW4gYWxzbyBzZXQgb24gdGhlIHBhcmVudCBwYXJzZXIuCi0KLS0gSXNzdWUgIzIwNDIxOiBBZGQgYSAudmVyc2lvbigpIG1ldGhvZCB0byBTU0wgc29ja2V0cyBleHBvc2luZyB0aGUgYWN0dWFsCi0gIHByb3RvY29sIHZlcnNpb24gaW4gdXNlLgotCi0tIElzc3VlICMyMjQzNTogRml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgd2hlbiBTb2NrZXRTZXJ2ZXIgYmluZCBmYWlscy4KLQotLSBJc3N1ZSAjMTM2NjQ6IEd6aXBGaWxlIG5vdyBzdXBwb3J0cyBub24tYXNjaWkgVW5pY29kZSBmaWxlbmFtZXMuCi0KLS0gSXNzdWUgIzEzMDk2OiBGaXhlZCBzZWdmYXVsdCBpbiBDVHlwZXMgUE9JTlRFUiBoYW5kbGluZyBvZiBsYXJnZQotICB2YWx1ZXMuCi0KLS0gSXNzdWUgIzExNjk0OiBSYWlzZSBDb252ZXJzaW9uRXJyb3IgaW4geGRybGliIGFzIGRvY3VtZW50ZWQuICBQYXRjaAotICBieSBGaWxpcCBHcnVzemN6ecWEc2tpIGFuZCBDbGF1ZGl1IFBvcGEuCi0KLS0gSXNzdWUgIzE2ODY6IEZpeCBzdHJpbmcuVGVtcGxhdGUgd2hlbiBvdmVycmlkaW5nIHRoZSBwYXR0ZXJuIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjMTE4NjY6IEVsaW1pbmF0ZWQgcmFjZSBjb25kaXRpb24gaW4gdGhlIGNvbXB1dGF0aW9uIG9mIG5hbWVzCi0gIGZvciBuZXcgdGhyZWFkcy4KLQotLSBJc3N1ZSAjMjIyMTk6IFRoZSB6aXBmaWxlIG1vZHVsZSBDTEkgbm93IGFkZHMgZW50cmllcyBmb3IgZGlyZWN0b3JpZXMKLSAgKGluY2x1ZGluZyBlbXB0eSBkaXJlY3RvcmllcykgaW4gWklQIGZpbGUuCi0KLS0gSXNzdWUgIzIyNDQ5OiBJbiB0aGUgc3NsLlNTTENvbnRleHQubG9hZF9kZWZhdWx0X2NlcnRzLCBjb25zdWx0IHRoZQotICBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBTU0xfQ0VSVF9ESVIgYW5kIFNTTF9DRVJUX0ZJTEUgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjODQ3MzogZG9jdGVzdC50ZXN0ZmlsZSBub3cgdXNlcyB1bml2ZXJzYWwgbmV3bGluZSBtb2RlIHRvIHJlYWQKLSAgdGhlIHRlc3QgZmlsZS4KLQotLSBJc3N1ZSAjMjAwNzY6IEFkZGVkIG5vbiBkZXJpdmVkIFVURi04IGFsaWFzZXMgdG8gbG9jYWxlIGFsaWFzZXMgdGFibGUuCi0KLS0gSXNzdWUgIzIwMDc5OiBBZGRlZCBsb2NhbGVzIHN1cHBvcnRlZCBpbiBnbGliYyAyLjE4IHRvIGxvY2FsZSBhbGlhcyB0YWJsZS4KLQotLSBJc3N1ZSAjMjI1MzA6IEFsbG93IHRoZSBgYGdyb3VwKClgYCBtZXRob2Qgb2YgcmVndWxhciBleHByZXNzaW9uIG1hdGNoIG9iamVjdHMKLSAgdG8gdGFrZSBhIGBgbG9uZ2BgIGFzIGFuIGluZGV4LgotCi0tIElzc3VlICMyMjUxNzogV2hlbiBhbiBpby5CdWZmZXJlZFJXUGFpciBvYmplY3QgaXMgZGVhbGxvY2F0ZWQsIGNsZWFyIGl0cwotICB3ZWFrcmVmcy4KLQotLSBJc3N1ZSAjMTA1MTA6IGRpc3R1dGlscyByZWdpc3RlciBhbmQgdXBsb2FkIG1ldGhvZHMgbm93IHVzZSBIVE1MIHN0YW5kYXJkcwotICBjb21wbGlhbnQgQ1JMRiBsaW5lIGVuZGluZ3MuCi0KLS0gSXNzdWUgIzk4NTA6IEZpeGVkIG1hY3BhdGguam9pbigpIGZvciBlbXB0eSBmaXJzdCBjb21wb25lbnQuICBQYXRjaCBieQotICBPbGVnIE9zaG15YW4uCi0KLS0gSXNzdWUgIzIwOTEyOiBOb3cgZGlyZWN0b3JpZXMgYWRkZWQgdG8gWklQIGZpbGUgaGF2ZSBjb3JyZWN0IFVuaXggYW5kIE1TLURPUwotICBkaXJlY3RvcnkgYXR0cmlidXRlcy4KLQotLSBJc3N1ZSAjMjE4NjY6IFppcEZpbGUuY2xvc2UoKSBubyBsb25nZXIgd3JpdGVzIFpJUDY0IGNlbnRyYWwgZGlyZWN0b3J5Ci0gIHJlY29yZHMgaWYgYWxsb3daaXA2NCBpcyBmYWxzZS4KLQotLSBJc3N1ZSAjMjI0MTU6IEZpeGVkIGRlYnVnZ2luZyBvdXRwdXQgb2YgdGhlIEdST1VQUkVGX0VYSVNUUyBvcGNvZGUgaW4gdGhlIHJlCi0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjMjI0MjM6IFVuaGFuZGxlZCBleGNlcHRpb24gaW4gdGhyZWFkIG5vIGxvbmdlciBjYXVzZXMgdW5oYW5kbGVkCi0gIEF0dHJpYnV0ZUVycm9yIHdoZW4gc3lzLnN0ZGVyciBpcyBOb25lLgotCi0tIElzc3VlICMyMjQxOTogTGltaXQgdGhlIGxlbmd0aCBvZiBpbmNvbWluZyBIVFRQIHJlcXVlc3QgaW4gd3NnaXJlZiBzZXJ2ZXIgdG8KLSAgNjU1MzYgYnl0ZXMgYW5kIHNlbmQgYSA0MTQgZXJyb3IgY29kZSBmb3IgaGlnaGVyIGxlbmd0aHMuIFBhdGNoIGNvbnRyaWJ1dGVkCi0gIGJ5IERldmluIENvb2suCi0KLS0gTGF4IGNvb2tpZSBwYXJzaW5nIGluIGh0dHAuY29va2llcyBjb3VsZCBiZSBhIHNlY3VyaXR5IGlzc3VlIHdoZW4gY29tYmluZWQKLSAgd2l0aCBub24tc3RhbmRhcmQgY29va2llIGhhbmRsaW5nIGluIHNvbWUgV2ViIGJyb3dzZXJzLiAgUmVwb3J0ZWQgYnkKLSAgU2VyZ2V5IEJvYnJvdi4KLQotLSBJc3N1ZSAjMjExNDc6IHNxbGl0ZTMgbm93IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlIHJlcXVlc3QgY29udGFpbnMgYSBudWxsCi0gIGNoYXJhY3RlciBpbnN0ZWFkIG9mIHRydW5jYXRpbmcgaXQuICBCYXNlZCBvbiBwYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KLQotLSBJc3N1ZSAjMjE5NTE6IEZpeGVkIGEgY3Jhc2ggaW4gVGtpbnRlciBvbiBBSVggd2hlbiBjYWxsZWQgVGNsIGNvbW1hbmQgd2l0aAotICBlbXB0eSBzdHJpbmcgb3IgdHVwbGUgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzIxOTUxOiBUa2ludGVyIG5vdyBtb3N0IGxpa2VseSByYWlzZXMgTWVtb3J5RXJyb3IgaW5zdGVhZCBvZiBjcmFzaAotICBpZiB0aGUgbWVtb3J5IGFsbG9jYXRpb24gZmFpbHMuCi0KLS0gSXNzdWUgIzIyMjI2OiBGaXJzdCBsZXR0ZXIgbm8gbG9uZ2VyIGlzIHN0cmlwcGVkIGZyb20gdGhlICJzdGF0dXMiIGtleSBpbgotICB0aGUgcmVzdWx0IG9mIFRyZWV2aWV3LmhlYWRpbmcoKS4KLQotLSBJc3N1ZSAjMjIwNTE6IHR1cnRsZWRlbW8gbm8gbG9uZ2VyIHJlbG9hZHMgZXhhbXBsZXMgdG8gcmUtcnVuIHRoZW0uCi0gIEluaXRpYWxpemF0aW9uIG9mIHZhcmlhYmxlcyBhbmQgZ3VpIHNldHVwIHNob3VsZCBiZSBkb25lIGluIG1haW4oKSwKLSAgd2hpY2ggaXMgY2FsbGVkIGVhY2ggdGltZSBhIGRlbW8gaXMgcnVuLCBidXQgbm90IG9uIGltcG9ydC4KLQotLSBJc3N1ZSAjMjE1OTc6IFRoZSBzZXBhcmF0b3IgYmV0d2VlbiB0aGUgdHVydGxlZGVtbyB0ZXh0IHBhbmUgYW5kIHRoZSBkcmF3aW5nCi0gIGNhbnZhcyBjYW4gbm93IGJlIGdyYWJiZWQgYW5kIGRyYWdnZWQgd2l0aCBhIG1vdXNlLiAgVGhlIGNvZGUgdGV4dCBwYW5lIGNhbgotICBiZSB3aWRlbmVkIHRvIGVhc2lseSB2aWV3IG9yIGNvcHkgdGhlIGZ1bGwgd2lkdGggb2YgdGhlIHRleHQuICBUaGUgY2FudmFzCi0gIGNhbiBiZSB3aWRlbmVkIG9uIHNtYWxsIHNjcmVlbnMuICBPcmlnaW5hbCBwYXRjaGVzIGJ5IEphbiBLYW5pcyBhbmQgTGl0YSBDaG8uCi0KLS0gSXNzdWUgIzE4MTMyOiBUdXJ0bGVkZW1vIGJ1dHRvbnMgbm8gbG9uZ2VyIGRpc2FwcGVhciB3aGVuIHRoZSB3aW5kb3cgaXMKLSAgc2hydW5rLiAgT3JpZ2luYWwgcGF0Y2hlcyBieSBKYW4gS2FuaXMgYW5kIExpdGEgQ2hvLgotCi0tIElzc3VlICMyMjMxMjogRml4IG50cGF0aC5zcGxpdGRyaXZlIEluZGV4RXJyb3IuCi0KLS0gSXNzdWUgIzIyMjE2OiBzbXRwbGliIG5vdyByZXNldHMgaXRzIHN0YXRlIG1vcmUgY29tcGxldGVseSBhZnRlciBhIHF1aXQuICBUaGUKLSAgbW9zdCBvYnZpb3VzIGNvbnNlcXVlbmNlIG9mIHRoZSBwcmV2aW91cyBiZWhhdmlvciB3YXMgYSBTVEFSVFRMUyBmYWlsdXJlCi0gIGR1cmluZyBhIGNvbm5lY3Qvc3RhcnR0bHMvcXVpdC9jb25uZWN0L3N0YXJ0dGxzIHNlcXVlbmNlLgotCi0tIElzc3VlICMyMTMwNTogb3MudXJhbmRvbSBub3cgY2FjaGVzIGEgZmQgdG8gL2Rldi91cmFuZG9tLiBUaGlzIGlzIGEgUEVQIDQ2NgotICBiYWNrcG9ydCBmcm9tIFB5dGhvbiAzLgotCi0tIElzc3VlICMyMTMwNzogQXMgcGFydCBvZiBQRVAgNDY2LCBiYWNrcG9ydCBoYXNobGliLmFsZ29yaXRobXNfZ3VhcmFudGVlZCBhbmQKLSAgaGFzaGxpYi5hbGdvcml0aG1zX2F2YWlsYWJsZS4KLQotLSBJc3N1ZSAjMjIyNTk6IEZpeCBzZWdmYXVsdCB3aGVuIGF0dGVtcHRpbmcgdG8gZm9wZW4gYSBmaWxlIGRlc2NyaXB0b3IKLSAgY29ycmVzcG9uZGluZyB0byBhIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMjIyMzY6IEZpeGVkIFRraW50ZXIgaW1hZ2VzIGNvcHlpbmcgb3BlcmF0aW9ucyBpbiBOb0RlZmF1bHRSb290IG1vZGUuCi0KLS0gSXNzdWUgIzIyMTkxOiBGaXhlZCB3YXJuaW5ncy5fX2FsbF9fLgotCi0tIElzc3VlICMyMTMwODogQmFja3BvcnQgbnVtZXJvdXMgZmVhdHVyZXMgZnJvbSBQeXRob24ncyBzc2wgbW9kdWxlLiBUaGlzIGlzCi0gIHBhcnQgb2YgUEVQIDQ2Ni4KLQotLSBJc3N1ZSAjMTU2OTY6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIG1tYXAgb2JqZWN0cyBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM4Nzk3OiBSYWlzZSBIVFRQRXJyb3Igb24gZmFpbGVkIEJhc2ljIEF1dGhlbnRpY2F0aW9uIGltbWVkaWF0ZWx5LgotICBJbml0aWFsIHBhdGNoIGJ5IFNhbSBCdWxsLgotCi0tIElzc3VlICMyMjA2ODogQXZvaWRlZCByZWZlcmVuY2UgbG9vcHMgd2l0aCBWYXJpYWJsZXMgYW5kIEZvbnRzIGluIFRraW50ZXIuCi0KLS0gSXNzdWUgIzIxNDQ4OiBDaGFuZ2VkIEZlZWRQYXJzZXIgZmVlZCgpIHRvIGF2b2lkIE8oTioqMikgYmVoYXZpb3Igd2hlbgotICBwYXJzaW5nIGxvbmcgbGluZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IFJheW1vbmQgSGV0dGluZ2VyLgotCi0tIElzc3VlICMxNzkyMzogZ2xvYigpIHBhdHRlcm5zIGVuZGluZyB3aXRoIGEgc2xhc2ggbm8gbG9uZ2VyIG1hdGNoIG5vbi1kaXJzIG9uCi0gIEFJWC4gIEJhc2VkIG9uIHBhdGNoIGJ5IERlbGhhbGx0LgotCi0tIElzc3VlICMyMTk3NTogRml4ZWQgY3Jhc2ggd2hlbiB1c2luZyB1bmluaXRpYWxpemVkIHNxbGl0ZTMuUm93IChpbiBwYXJ0aWN1bGFyCi0gIHdoZW4gdW5waWNrbGluZyBwaWNrbGVkIHNxbGl0ZTMuUm93KS4gIHNxbGl0ZTMuUm93IGlzIG5vdyBpbml0aWFsaXplZCBpbiB0aGUKLSAgX19uZXdfXygpIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTYwMzc6IEhUVFBNZXNzYWdlLnJlYWRoZWFkZXJzKCkgcmFpc2VzIGFuIEhUVFBFeGNlcHRpb24gd2hlbiBtb3JlCi0gIHRoYW4gMTAwIGhlYWRlcnMgYXJlIHJlYWQuIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4gYW5kIERhbmllbCBFcmlrc3Nvbi4KLQotLSBJc3N1ZSAjMjE1ODA6IE5vdyBUa2ludGVyIGNvcnJlY3RseSBoYW5kbGVzIGJpbmFyeSAiZGF0YSIgYW5kICJtYXNrZGF0YSIKLSAgY29uZmlndXJlIG9wdGlvbnMgb2YgdGtpbnRlci5QaG90b0ltYWdlLgotCi0tIElzc3VlICMxOTYxMjogc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIG5vdyBhbHNvIGlnbm9yZXMgRUlOVkFMIHdoZW4gdXNpbmcgYXQKLSAgbGVhc3QgdHdvIHBpcGVzLgotCi0tIEZpeCByZXByKF9zb2NrZXQuc29ja2V0KSBvbiBXaW5kb3dzIDY0LWJpdDogZG9uJ3QgZmFpbCB3aXRoIE92ZXJmbG93RXJyb3IKLSAgb24gY2xvc2VkIHNvY2tldC4KLQotLSBJc3N1ZSAjMTYxMzM6IFRoZSBhc3luY2hhdC5hc3luY19jaGF0LmhhbmRsZV9yZWFkKCkgbWV0aG9kIG5vdyBpZ25vcmVzCi0gIHNvY2tldC5lcnJvcigpIGV4Y2VwdGlvbnMgd2l0aCBibG9ja2luZyBJL08gZXJyb3JzOiBFQUdBSU4sIEVBTFJFQURZLAotICBFSU5QUk9HUkVTUywgb3IgRVdPVUxEQkxPQ0suCi0KLS0gSXNzdWUgIzIxOTkwOiBDbGVhbi11cCB1bm5lY2Vzc2FyeSBhbmQgc2xvdyBpbm5lciBjbGFzcyBkZWZpbml0aW9uIGluCi0gIHNheHV0aWxzIChDb250cmlidXRlZCBieSBBbGV4IEdheW5vcikuCi0KLS0gSXNzdWUgIzE3MzAxMzY6IEZpeCB0aGUgY29tcGFyaXNvbiBiZXR3ZWVuIGEgdGtGb250LkZvbnQgYW5kIGFuIG9iamVjdCBvZgotICBhbm90aGVyIGtpbmQuCi0KLS0gSXNzdWUgIzE5ODg0OiByZWFkbGluZTogRGlzYWJsZSB0aGUgbWV0YSBtb2RpZmllciBrZXkgaWYgc3Rkb3V0IGlzIG5vdAotICBhIHRlcm1pbmFsIHRvIG5vdCB3cml0ZSB0aGUgQU5TSSBzZXF1ZW5jZSAiXDAzM1sxMDM0aCIgaW50byBzdGRvdXQuIFRoaXMKLSAgc2VxdWVuY2UgaXMgdXNlZCBvbiBzb21lIHRlcm1pbmFsIChleDogVEVSTT14dGVybS0yNTZjb2xvciIpIHRvIGVuYWJsZQotICBzdXBwb3J0IG9mIDggYml0IGNoYXJhY3RlcnMuCi0KLS0gSXNzdWUgIzIyMDE3OiBDb3JyZWN0IHJlZmVyZW5jZSBjb3VudGluZyBlcnJyb3IgaW4gdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZQotICBfd2FybmluZ3MgbW9kdWxlLgotCi0tIElzc3VlICMyMTg2ODogUHJldmVudCB0dXJ0bGUgY3Jhc2ggd2hlbiB1bmRvIGJ1ZmZlciBzZXQgdG8gYSB2YWx1ZSBsZXNzCi0gIHRoYW4gb25lLgotCi0tIElzc3VlICMyMTE1MTogRml4ZWQgYSBzZWdmYXVsdCBpbiB0aGUgX3dpbnJlZyBtb2R1bGUgd2hlbiBgYE5vbmVgYCBpcyBwYXNzZWQKLSAgYXMgYSBgYFJFR19CSU5BUllgYCB2YWx1ZSB0byBTZXRWYWx1ZUV4LiAgUGF0Y2ggYnkgSm9obiBFaHJlc21hbi4KLQotLSBJc3N1ZSAjMjEwOTA6IGlvLkZpbGVJTy5yZWFkYWxsKCkgZG9lcyBub3QgaWdub3JlIEkvTyBlcnJvcnMgYW55bW9yZS4gQmVmb3JlLAotICBpdCBpZ25vcmVkIEkvTyBlcnJvcnMgaWYgYXQgbGVhc3QgdGhlIGZpcnN0IEMgY2FsbCByZWFkKCkgc3VjY2VlZC4KLQotLSBJc3N1ZSAjMTk4NzA6IEJhc2VDb29raWUgbm93IHBhcnNlcyAnc2VjdXJlJyBhbmQgJ2h0dHBvbmx5JyBmbGFncy4KLSAgQmFja3BvcnQgb2YgaXNzdWUgIzE2NjExLgotCi0tIElzc3VlICMyMTkyMzogUHJldmVudCBBdHRyaWJ1dGVFcnJvciBpbiBkaXN0dXRpbHMuc3lzY29uZmlnLmN1c3RvbWl6ZV9jb21waWxlcgotICBkdWUgdG8gcG9zc2libGUgdW5pbml0aWFsaXplZCBfY29uZmlnX3ZhcnMuCi0KLS0gSXNzdWUgIzIxMzIzOiBGaXggQ0dJSFRUUFNlcnZlciB0byBhZ2FpbiBoYW5kbGUgc2NyaXB0cyBpbiBDR0kgc3ViZGlyZWN0b3JpZXMsCi0gIGJyb2tlbiBieSB0aGUgZml4IGZvciBzZWN1cml0eSBpc3N1ZSAjMTk0MzUuICBQYXRjaCBieSBaYWNoIEJ5cm5lLgotCi0tIElzc3VlICMyMjE5OTogTWFrZSBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSBhdmFpbGFibGUgaW4gTGliL3N5c2NvbmZpZy5weQotICBmb3IgMi43IHRvIG1hdGNoIG90aGVyIHZlcnNpb25zIG9mIHN5c2NvbmZpZy4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMzMDY4OiBBZGQgSWRsZSBleHRlbnNpb24gY29uZmlndXJhdGlvbiBkaWFsb2cgdG8gT3B0aW9ucyBtZW51LgotICBDaGFuZ2VzIGFyZSB3cml0dGVuIHRvIEhPTUUvLmlkbGVyYy9jb25maWctZXh0ZW5zaW9ucy5jZmcuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFRhbCBFaW5hdC4KLQotLSBJc3N1ZSAjMTYyMzM6IEEgbW9kdWxlIGJyb3dzZXIgKEZpbGUgOiBDbGFzcyBCcm93c2VyLCBBbHQrQykgcmVxdWlyZXMgYW4KLSAgZWRpdG9yIHdpbmRvdyB3aXRoIGEgZmlsZW5hbWUuICBXaGVuIENsYXNzIEJyb3dzZXIgaXMgcmVxdWVzdGVkIG90aGVyd2lzZSwKLSAgZnJvbSBhIHNoZWxsLCBvdXRwdXQgd2luZG93LCBvciAnVW50aXRsZWQnIGVkaXRvciwgSWRsZSBubyBsb25nZXIgZGlzcGxheXMKLSAgYW4gZXJyb3IgYm94LiAgSXQgbm93IHBvcHMgdXAgYW4gT3BlbiBNb2R1bGUgYm94IChBbHQrTSkuIElmIGEgdmFsaWQgbmFtZQotICBpcyBlbnRlcmVkIGFuZCBhIG1vZHVsZSBpcyBvcGVuZWQsIGEgY29ycmVzcG9uZGluZyBicm93c2VyIGlzIGFsc28gb3BlbmVkLgotCi0tIElzc3VlICM0ODMyOiBTYXZlIEFzIHRvIHR5cGUgUHl0aG9uIGZpbGVzIGF1dG9tYXRpY2FsbHkgYWRkcyAucHkgdG8gdGhlCi0gIG5hbWUgeW91IGVudGVyIChldmVuIGlmIHlvdXIgc3lzdGVtIGRvZXMgbm90IGRpc3BsYXkgaXQpLiAgU29tZSBzeXN0ZW1zCi0gIGF1dG9tYXRpY2FsbHkgYWRkIC50eHQgd2hlbiB0eXBlIGlzIFRleHQgZmlsZXMuCi0KLS0gSXNzdWUgIzIxOTg2OiBDb2RlIG9iamVjdHMgYXJlIG5vdCBub3JtYWxseSBwaWNrbGVkIGJ5IHRoZSBwaWNrbGUgbW9kdWxlLgotICBUbyBtYXRjaCB0aGlzLCB0aGV5IGFyZSBubyBsb25nZXIgcGlja2xlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgSWRsZS4KLQotLSBJc3N1ZSAjMjIyMjE6IElETEUgbm93IGlnbm9yZXMgdGhlIHNvdXJjZSBlbmNvZGluZyBkZWNsYXJhdGlvbiBvbiB0aGUgc2Vjb25kCi0gIGxpbmUgaWYgdGhlIGZpcnN0IGxpbmUgY29udGFpbnMgYW55dGhpbmcgZXhjZXB0IGEgY29tbWVudC4KLQotLSBJc3N1ZSAjMTczOTA6IEFkanVzdCBFZGl0b3Igd2luZG93IHRpdGxlOyByZW1vdmUgJ1B5dGhvbicsCi0gIG1vdmUgdmVyc2lvbiB0byBlbmQuCi0KLS0gSXNzdWUgIzE0MTA1OiBJZGxlIGRlYnVnZ2VyIGJyZWFrcG9pbnRzIG5vIGxvbmdlciBkaXNhcHBlYXIKLSAgd2hlbiBpbnNlcnRpbmcgb3IgZGVsZXRpbmcgbGluZXMuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMjM4MTogVXBkYXRlIHpsaWIgdG8gMS4yLjguCi0KLS0gSXNzdWUgIzIyMTc2OiBVcGRhdGUgdGhlIGN0eXBlcyBtb2R1bGUncyBsaWJmZmkgdG8gdjMuMS4gIFRoaXMgcmVsZWFzZQotICBhZGRzIHN1cHBvcnQgZm9yIHRoZSBMaW51eCBBQXJjaDY0IGFuZCBQT1dFUlBDIEVMRiBBQkl2MiBsaXR0bGUgZW5kaWFuCi0gIGFyY2hpdGVjdHVyZXMuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDcxMjogMnRvMyBoYXMgYSBuZXcgImFzc2VydHMiIGZpeGVyIHRoYXQgcmVwbGFjZXMgZGVwcmVjYXRlZCBuYW1lcwotICBvZiB1bml0dGVzdCBtZXRob2RzIChlLmcuIGZhaWxVbmxlc3NFcXVhbCAtPiBhc3NlcnRFcXVhbCkuCi0KLS0gSXNzdWUgIzIyMjIxOiAydG8zIGFuZCB0aGUgZmluZG5vY29kaW5nLnB5IHNjcmlwdCBub3cgaWdub3JlIHRoZSBzb3VyY2UKLSAgZW5jb2RpbmcgZGVjbGFyYXRpb24gb24gdGhlIHNlY29uZCBsaW5lIGlmIHRoZSBmaXJzdCBsaW5lIGNvbnRhaW5zIGFueXRoaW5nCi0gIGV4Y2VwdCBhIGNvbW1lbnQuCi0KLS0gSXNzdWUgIzIyMjAxOiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHRoZSB6aXBmaWxlIG1vZHVsZSBub3cgY29ycmVjdGx5Ci0gIGV4dHJhY3RzIFpJUCBmaWxlcyB3aXRoIGRpcmVjdG9yeSBlbnRyaWVzLiAgUGF0Y2ggYnkgUnlhbiBXaWxzb24uCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMyMjIzNjogVGtpbnRlciB0ZXN0cyBub3cgZG9uJ3QgcmV1c2UgZGVmYXVsdCByb290IHdpbmRvdy4gIE5ldyByb290Ci0gIHdpbmRvdyBpcyBjcmVhdGVkIGZvciBldmVyeSB0ZXN0IGNsYXNzLgotCi0tIElzc3VlICMxODAwNDogdGVzdF9vdmVyZmxvdyBpbiB0ZXN0X2xpc3QgYnkgbWlzdGFrZSBjb25zdW1lZCA0MCBHaUIgb2YgbWVtb3J5Ci0gIG9uIDY0LWJpdCBzeXN0ZW1zLgotCi0tIElzc3VlICMyMTk3NjogRml4IHRlc3Rfc3NsIHRvIGFjY2VwdCBMaWJyZVNTTCB2ZXJzaW9uIHN0cmluZ3MuICBUaGFua3MKLSAgdG8gV2lsbGlhbSBPcnIuCi0KLS0gSXNzdWUgIzIyNzcwOiBQcmV2ZW50IHNvbWUgVGsgc2VnZmF1bHRzIG9uIE9TIFggd2hlbiBydW5uaW5nIGd1aSB0ZXN0cy4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzIwMjIxOiBSZW1vdmVkIGNvbmZsaWN0aW5nIChvciBjaXJjdWxhcikgaHlwb3QgZGVmaW5pdGlvbiB3aGVuCi0gIGNvbXBpbGVkIHdpdGggVlMgMjAxMCBvciBhYm92ZS4gIEluaXRpYWwgcGF0Y2ggYnkgVGFicmV6IE1vaGFtbWVkLgotCi0tIElzc3VlICMxNjUzNzogQ2hlY2sgd2hldGhlciBzZWxmLmV4dGVuc2lvbnMgaXMgZW1wdHkgaW4gc2V0dXAucHkuIFBhdGNoIGJ5Ci0gIEpvbmF0aGFuIEhvc21lci4KLQotLSBUaGUgZG9jdW1lbnRhdGlvbiBNYWtlZmlsZSBubyBsb25nZXIgYXV0b21hdGljYWxseSBkb3dubG9hZHMgU3BoaW54LiBVc2VycyBhcmUKLSAgbm93IHJlcXVpcmVkIHRvIGhhdmUgU3BoaW54IGFscmVhZHkgaW5zdGFsbGVkIHRvIGJ1aWxkIHRoZSBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMyMTk1ODogRGVmaW5lIEhBVkVfUk9VTkQgd2hlbiBidWlsZGluZyB3aXRoIFZpc3VhbCBTdHVkaW8gMjAxMyBhbmQKLSAgYWJvdmUuICBQYXRjaCBieSBaYWNoYXJ5IFR1cm5lci4KLQotLSBJc3N1ZSAjMTU3NTk6ICJtYWtlIHN1c3BpY2lvdXMiLCAibWFrZSBsaW5rY2hlY2siIGFuZCAibWFrZSBkb2N0ZXN0IiBpbiBEb2MvCi0gIG5vdyBkaXNwbGF5IHNwZWNpYWwgbWVzc2FnZSB3aGVuIGFuZCBvbmx5IHdoZW4gdGhlcmUgYXJlIGZhaWx1cmVzLgotCi0tIElzc3VlICMyMTE2NjogUHJldmVudCBwb3NzaWJsZSBzZWdmYXVsdHMgYW5kIG90aGVyIHJhbmRvbSBmYWlsdXJlcyBvZgotICBweXRob24gLS1nZW5lcmF0ZS1wb3NpeC12YXJzIGluIHB5YnVpbGRkaXIudHh0IGJ1aWxkIHRhcmdldC4KLQotLSBJc3N1ZSAjMTgwOTY6IEZpeCBsaWJyYXJ5IG9yZGVyIHJldHVybmVkIGJ5IHB5dGhvbi1jb25maWcuCi0KLS0gSXNzdWUgIzE3MjE5OiBBZGQgbGlicmFyeSBidWlsZCBkaXIgZm9yIFB5dGhvbiBleHRlbnNpb24gY3Jvc3MtYnVpbGRzLgotCi0tIElzc3VlICMyMjg3NzogUEVQIDQ3NyAtIE9TIFggaW5zdGFsbGVyIG5vdyBpbnN0YWxscyBwaXAuCi0KLS0gSXNzdWUgIzIyODc4OiBQRVAgNDc3IC0gIm1ha2UgaW5zdGFsbCIgYW5kICJtYWtlIGFsdGluc3RhbGwiIGNhbiBub3cgaW5zdGFsbAotICBvciB1cGdyYWRlIHBpcCwgdXNpbmcgdGhlIGJ1bmRsZWQgcGlwIHByb3ZpZGVkIGJ5IHRoZSBiYWNrcG9ydGVkIGVuc3VyZXBpcAotICBtb2R1bGUuICBBIGNvbmZpZ3VyZSBvcHRpb24sIC0td2l0aC1lbnN1cmVwaXBbPXVwZ3JhZGV8aW5zdGFsbHxub10sIGlzCi0gIGF2YWlsYWJsZSB0byBzZXQgdGhlIG9wdGlvbiBmb3Igc3Vic2VxdWVudCBpbnN0YWxsczsgdGhlIGRlZmF1bHQgZm9yIFB5dGhvbiAyCi0gIGluICJubyIgKGRvIG5vdCBpbnN0YWxsIG9yIHVwZ3JhZGUgcGlwKS4gIFRoZSBvcHRpb24gY2FuIGFsc28gYmUgc2V0IHdpdGgKLSAgIm1ha2UgW2FsdF1pbnN0YWxsIEVOU1VSRVBJUD1bdXBncmFkZXxpbnN0YWxsfG5vXSIuCi0KLVdpbmRvd3MKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTc4OTY6IFRoZSBXaW5kb3dzIGJ1aWxkIHNjcmlwdHMgbm93IGV4cGVjdCBleHRlcm5hbCBsaWJyYXJ5IHNvdXJjZXMKLSAgdG8gYmUgaW4gYGBQQ2J1aWxkXC4uXGV4dGVybmFsc2BgIHJhdGhlciB0aGFuIGBgUENidWlsZFwuLlwuLmBgLgotCi0tIElzc3VlICMxNzcxNzogVGhlIFdpbmRvd3MgYnVpbGQgc2NyaXB0cyBub3cgdXNlIGEgY29weSBvZiBOQVNNIHB1bGxlZCBmcm9tCi0gIHN2bi5weXRob24ub3JnIHRvIGJ1aWxkIE9wZW5TU0wuCi0KLS0gSXNzdWUgIzIyNjQ0OiBUaGUgYnVuZGxlZCB2ZXJzaW9uIG9mIE9wZW5TU0wgaGFzIGJlZW4gdXBkYXRlZCB0byAxLjAuMWouCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi43Ljg/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAxNC0wNi0yOSoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzQzNDY6IEluIFB5T2JqZWN0X0NhbGxNZXRob2QgYW5kIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzLCBkb24ndAotICBvdmVyd3JpdGUgdGhlIGVycm9yIHNldCBpbiBQeU9iamVjdF9HZXRBdHRyLgotCi0tIElzc3VlICMyMTgzMTogQXZvaWQgaW50ZWdlciBvdmVyZmxvdyB3aGVuIGxhcmdlIHNpemVzIGFuZCBvZmZzZXRzIGFyZSBnaXZlbiB0bwotICB0aGUgYnVmZmVyIHR5cGUuIENWRS0yMDE0LTcxODUuCi0KLS0gSXNzdWUgIzE5NjU2OiBSdW5uaW5nIFB5dGhvbiB3aXRoIHRoZSAtMyBvcHRpb24gbm93IGFsc28gd2FybnMgYWJvdXQKLSAgbm9uLWFzY2lpIGJ5dGVzIGxpdGVyYWxzLgotCi0tIElzc3VlICMyMTY0MjogSWYgdGhlIGNvbmRpdGlvbmFsIGlmLWVsc2UgZXhwcmVzc2lvbiwgYWxsb3cgYW4gaW50ZWdlciB3cml0dGVuCi0gIHdpdGggbm8gc3BhY2UgYmV0d2VlbiBpdHNlbGYgYW5kIHRoZSBgYGVsc2VgYCBrZXl3b3JkIChlLmcuIGBgVHJ1ZSBpZiA0MmVsc2UKLSAgRmFsc2VgYCkgdG8gYmUgdmFsaWQgc3ludGF4LgotCi0tIElzc3VlICMyMTUyMzogRml4IG92ZXItcGVzc2ltaXN0aWMgY29tcHV0YXRpb24gb2YgdGhlIHN0YWNrIGVmZmVjdCBvZgotICBzb21lIG9wY29kZXMgaW4gdGhlIGNvbXBpbGVyLiAgVGhpcyBhbHNvIGZpeGVzIGEgcXVhZHJhdGljIGNvbXBpbGF0aW9uCi0gIHRpbWUgaXNzdWUgbm90aWNlYWJsZSB3aGVuIGNvbXBpbGluZyBjb2RlIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgImFuZCIKLSAgYW5kICJvciIgb3BlcmF0b3JzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzIxNjUyOiBQcmV2ZW50IG1pbWV0eXBlcy50eXBlX21hcCBmcm9tIGNvbnRhaW5pbmcgdW5pY29kZSBrZXlzIG9uCi0gIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzIxNzI5OiBVc2VkIHRoZSAid2l0aCIgc3RhdGVtZW50IGluIHRoZSBkYm0uZHVtYiBtb2R1bGUgdG8gZW5zdXJlCi0gIGZpbGVzIGNsb3NpbmcuCi0KLS0gSXNzdWUgIzIxNjcyOiBGaXggdGhlIGJlaGF2aW9yIG9mIG50cGF0aC5qb2luIG9uIFVOQy1zdHlsZSBwYXRocy4KLQotLSBJc3N1ZSAjMTkxNDU6IFRoZSB0aW1lcyBhcmd1bWVudCBmb3IgaXRlcnRvb2xzLnJlcGVhdCBub3cgaGFuZGxlcwotICBuZWdhdGl2ZSB2YWx1ZXMgdGhlIHNhbWUgd2F5IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpdCBkb2VzIGZvcgotICBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMjE4MzI6IFJlcXVpcmUgbmFtZWQgdHVwbGUgaW5wdXRzIHRvIGJlIGV4YWN0IHN0cmluZ3MuCi0KLS0gSXNzdWUgIzgzNDM6IE5hbWVkIGdyb3VwIGVycm9yIG1lc3NhZ2VzIGluIHRoZSByZSBtb2R1bGUgZGlkIG5vdCBzaG93Ci0gIHRoZSBuYW1lIG9mIHRoZSBlcnJvbmVvdXMgZ3JvdXAuCi0KLS0gSXNzdWUgIzIxNDkxOiBTb2NrZXRTZXJ2ZXI6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIGNoaWxkIHByb2Nlc3NlcyByZWFwaW5nLgotCi0tIElzc3VlICMyMTYzNTogVGhlIGRpZmZsaWIgU2VxdWVuY2VNYXRjaGVyLmdldF9tYXRjaGluZ19ibG9ja3MoKSBtZXRob2QKLSAgY2FjaGUgZGlkbid0IG1hdGNoIHRoZSBhY3R1YWwgcmVzdWx0LiAgVGhlIGZvcm1lciB3YXMgYSBsaXN0IG9mIHR1cGxlcwotICBhbmQgdGhlIGxhdHRlciB3YXMgYSBsaXN0IG9mIG5hbWVkIHR1cGxlcy4KLQotLSBJc3N1ZSAjMjE3MjI6IFRoZSBkaXN0dXRpbHMgInVwbG9hZCIgY29tbWFuZCBub3cgZXhpdHMgd2l0aCBhIG5vbi16ZXJvCi0gIHJldHVybiBjb2RlIHdoZW4gdXBsb2FkaW5nIGZhaWxzLiAgUGF0Y2ggYnkgTWFydGluIERlbmdsZXIuCi0KLS0gSXNzdWUgIzIxNzY2OiBQcmV2ZW50IGEgc2VjdXJpdHkgaG9sZSBpbiBDR0lIVFRQU2VydmVyIGJ5IFVSTCB1bnF1b3RpbmcgcGF0aHMKLSAgYmVmb3JlIGNoZWNraW5nIGZvciBhIENHSSBzY3JpcHQgYXQgdGhhdCBwYXRoLgotCi0tIElzc3VlICMyMTMxMDogRml4ZWQgcG9zc2libGUgcmVzb3VyY2UgbGVhayBpbiBmYWlsZWQgb3BlbigpLgotCi0tIElzc3VlICMyMTMwNDogQmFja3BvcnQgdGhlIGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIGhhc2hsaWIucGJrZGYyX2htYWMgZnJvbQotICBQeXRob24gMyBwZXIgUEVQIDQ2Ni4KLQotLSBJc3N1ZSAjMTE3MDk6IEZpeCB0aGUgcHlkb2MuaGVscCBmdW5jdGlvbiB0byBub3QgZmFpbCB3aGVuIHN5cy5zdGRpbiBpcyBub3QgYQotICB2YWxpZCBmaWxlLgotCi0tIElzc3VlICMxMzIyMzogRml4IHB5ZG9jLndyaXRlZG9jIHNvIHRoYXQgdGhlIEhUTUwgZG9jdW1lbnRhdGlvbiBmb3IgbWV0aG9kcwotICB0aGF0IHVzZSAnc2VsZicgaW4gdGhlIGV4YW1wbGUgY29kZSBpcyBnZW5lcmF0ZWQgY29ycmVjdGx5LgotCi0tIElzc3VlICMyMTU1MjogRml4ZWQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBvZiB0b28gbG9uZyBzdHJpbmcgbGVuZ3RocyBpbgotICB0aGUgdGtpbnRlciBtb2R1bGUgb24gNjQtYml0IHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTQzMTU6IFRoZSB6aXBmaWxlIG1vZHVsZSBub3cgaWdub3JlcyBleHRyYSBmaWVsZHMgaW4gdGhlIGNlbnRyYWwKLSAgZGlyZWN0b3J5IHRoYXQgYXJlIHRvbyBzaG9ydCB0byBiZSBwYXJzZWQgaW5zdGVhZCBvZiBsZXR0aW5nIGEgc3RydWN0LnVucGFjawotICBlcnJvciBidWJibGUgdXAgYXMgdGhpcyAiYmFkIGRhdGEiIGFwcGVhcnMgaW4gbWFueSByZWFsIHdvcmxkIHppcCBmaWxlcyBpbgotICB0aGUgd2lsZCBhbmQgaXMgaWdub3JlZCBieSBvdGhlciB6aXAgdG9vbHMuCi0KLS0gSXNzdWUgIzIxNDAyOiBUa2ludGVyLnR0ayBub3cgd29ya3Mgd2hlbiBkZWZhdWx0IHJvb3Qgd2luZG93IGlzIG5vdCBzZXQuCi0KLS0gSXNzdWUgIzEwMjAzOiBzcWxpdGUzLlJvdyBub3cgdHJ1bHkgc3VwcG9ydHMgc2VxdWVuY2UgcHJvdG9jb2wuICBJbiBwYXJ0aWN1bHIKLSAgaXQgc3VwcG9ydHMgcmV2ZXJzZSgpIGFuZCBuZWdhdGl2ZSBpbmRpY2VzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgotCi0tIElzc3VlICM4NzQzOiBGaXggaW50ZXJvcGVyYWJpbGl0eSBiZXR3ZWVuIHNldCBvYmplY3RzIGFuZCB0aGUKLSAgY29sbGVjdGlvbnMuU2V0KCkgYWJzdHJhY3QgYmFzZSBjbGFzcy4KLQotLSBJc3N1ZSAjMjE0ODE6IEFyZ3BhcnNlIGVxdWFsaXR5IGFuZCBpbmVxdWFsaXR5IHRlc3RzIG5vdyByZXR1cm4KLSAgTm90SW1wbGVtZW50ZWQgd2hlbiBjb21wYXJpbmcgdG8gYW4gdW5rbm93biB0eXBlLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzIxOTQwOiBBZGQgdW5pdHRlc3QgZm9yIFdpZGdldFJlZGlyZWN0b3IuIEluaXRpYWwgcGF0Y2ggYnkgU2FpbWFkaGF2Ci0gIEhlYmxpa2FyLgotCi0tIElzc3VlICMxODU5MjogQWRkIHVuaXR0ZXN0IGZvciBTZWFyY2hEaWFsb2dCYXNlLiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCi0KLS0gSXNzdWUgIzIxNjk0OiBBZGQgdW5pdHRlc3QgZm9yIFBhcmVuTWF0Y2guIFBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KLQotLSBJc3N1ZSAjMjE2ODY6IGFkZCB1bml0dGVzdCBmb3IgSHlwZXJQYXJzZXIuIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdgotICBIZWJsaWthci4KLQotLSBJc3N1ZSAjMTIzODc6IEFkZCBtaXNzaW5nIHVwcGVyKGxvd2VyKWNhc2UgdmVyc2lvbnMgb2YgZGVmYXVsdCBXaW5kb3dzIGtleQotICBiaW5kaW5ncyBmb3IgSWRsZSBzbyBDYXBzIExvY2sgZG9lcyBub3QgZGlzYWJsZSB0aGVtLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KLQotLSBJc3N1ZSAjMjE2OTU6IENsb3NpbmcgYSBGaW5kLWluLWZpbGVzIG91dHB1dCB3aW5kb3cgd2hpbGUgdGhlIHNlYXJjaCBpcwotICBzdGlsbCBpbiBwcm9ncmVzcyBubyBsb25nZXIgY2xvc2VzIElkbGUuCi0KLS0gSXNzdWUgIzE4OTEwOiBBZGQgdW5pdHRlc3QgZm9yIHRleHRWaWV3LiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCi0KLS0gSXNzdWUgIzE4MjkyOiBBZGQgdW5pdHRlc3QgZm9yIEF1dG9FeHBhbmQuIFBhdGNoIGJ5IFNhaWhhZGhhdiBIZWJsaWthci4KLQotLSBJc3N1ZSAjMTg0MDk6IEFkZCB1bml0dGVzdCBmb3IgQXV0b0NvbXBsZXRlLiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMyMDE1NTogQ2hhbmdlZCBIVFRQIG1ldGhvZCBuYW1lcyBpbiBmYWlsaW5nIHRlc3RzIGluIHRlc3RfaHR0cHNlcnZlcnMKLSAgc28gdGhhdCBwYWNrZXQgZmlsdGVyaW5nIHNvZnR3YXJlIChzcGVjaWZpY2FsbHkgV2luZG93cyBCYXNlIEZpbHRlcmluZyBFbmdpbmUpCi0gIGRvZXMgbm90IGludGVyZmVyZSB3aXRoIHRoZSB0cmFuc2FjdGlvbiBzZW1hbnRpY3MgZXhwZWN0ZWQgYnkgdGhlIHRlc3RzLgotCi0tIElzc3VlICMxOTQ5MzogUmVmYWN0b3JlZCB0aGUgY3R5cGVzIHRlc3QgcGFja2FnZSB0byBza2lwIHRlc3RzIGV4cGxpY2l0bHkKLSAgcmF0aGVyIHRoYW4gc2lsZW50bHkuCi0KLS0gSXNzdWUgIzE4NDkyOiBBbGwgcmVzb3VyY2VzIGFyZSBub3cgYWxsb3dlZCB3aGVuIHRlc3RzIGFyZSBub3QgcnVuIGJ5Ci0gIHJlZ3J0ZXN0LnB5LgotCi0tIElzc3VlICMyMTYwNTogQWRkZWQgdGVzdHMgZm9yIFRraW50ZXIgaW1hZ2VzLgotCi0tIElzc3VlICMyMTQ5MzogQWRkZWQgdGVzdCBmb3IgbnRwYXRoLmV4cGFuZHVzZXIoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIENsYXVkaXUgUG9wYS4KLQotLSBJc3N1ZSAjMTk5MjU6IEFkZGVkIHRlc3RzIGZvciB0aGUgc3B3ZCBtb2R1bGUuIE9yaWdpbmFsIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KLQotLSBJc3N1ZSAjMTMzNTU6IHJhbmRvbS50cmlhbmd1bGFyKCkgbm8gbG9uZ2VyIGZhaWxzIHdpdGggYSBaZXJvRGl2aXNpb25FcnJvcgotICB3aGVuIGxvdyBlcXVhbHMgaGlnaC4KLQotLSBJc3N1ZSAjMjE1MjI6IEFkZGVkIFRraW50ZXIgdGVzdHMgZm9yIExpc3Rib3guaXRlbWNvbmZpZ3VyZSgpLAotICBQYW5lZFdpbmRvdy5wYW5lY29uZmlndXJlKCksIGFuZCBNZW51LmVudHJ5Y29uZmlndXJlKCkuCi0KLS0gSXNzdWUgIzIwNjM1OiBBZGRlZCB0ZXN0cyBmb3IgVGsgZ2VvbWV0cnkgbWFuYWdlcnMuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMyMTgxMTogQW50aWNpcGF0ZWQgZml4ZXMgdG8gc3VwcG9ydCBPUyBYIHZlcnNpb25zID4gMTAuOS4KLQotV2luZG93cwotLS0tLS0tLQotCi0tIElzc3VlICMyMTY3MSwgQ1ZFLTIwMTQtMDIyNDogVGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiBPcGVuU1NMIGhhcyBiZWVuCi0gIHVwZGF0ZWQgdG8gMS4wLjFoLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNy43Ci09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDE0LTA1LTMxKgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMjE0NjI6IEJ1aWxkIHRoZSBXaW5kb3dzIGluc3RhbGxlcnMgd2l0aCBPcGVuU1NMIDEuMC4xZy4KLQotLSBJc3N1ZSAjMTk4NjY6IEluY2x1ZGUgc29tZSB0ZXN0IGRhdGEgaW4gdGhlIFdpbmRvd3MgaW5zdGFsbGVycywgc28gdGVzdHMgZG9uJ3QKLSAgZmFpbC4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcuNyByZWxlYXNlIGNhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAxNC0wNS0xNyoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIxMzUwOiBGaXggZmlsZS53cml0ZWxpbmVzKCkgdG8gYWNjZXB0IGFyYml0cmFyeSBidWZmZXIgb2JqZWN0cywKLSAgYXMgYWR2ZXJ0aXNlZC4gIFBhdGNoIGJ5IEJyaWFuIEtlYXJucy4KLQotLSBJc3N1ZSAjMjA0Mzc6IEZpeGVkIDQzIHBvdGVudGlhbCBidWdzIHdoZW4gZGVsZXRpbmcgb2JqZWN0IHJlZmVyZW5jZXMuCi0KLS0gSXNzdWUgIzIxMTM0OiBGaXggc2VnZmF1bHQgd2hlbiBzdHIgaXMgY2FsbGVkIG9uIGFuIHVuaW5pdGlhbGl6ZWQKLSAgVW5pY29kZUVuY29kZUVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IsIG9yIFVuaWNvZGVUcmFuc2xhdGVFcnJvciBvYmplY3QuCi0KLS0gSXNzdWUgIzIwNDk0OiBFbnN1cmUgdGhhdCBmcmVlKClkIG1lbW9yeSBhcmVuYXMgYXJlIHJlYWxseSByZWxlYXNlZCBvbiBQT1NJWAotICBzeXN0ZW1zIHN1cHBvcnRpbmcgYW5vbnltb3VzIG1lbW9yeSBtYXBwaW5ncy4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzCi0gIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTc4MjU6IEN1cnNvciAiXiIgaXMgY29ycmVjdGx5IHBvc2l0aW9uZWQgZm9yIFN5bnRheEVycm9yIGFuZAotICBJbmRlbnRhdGlvbkVycm9yLgotCi0tIFJhaXNlIGEgYmV0dGVyIGVycm9yIHdoZW4gbm9uLXVuaWNvZGUgY29kZWNzIGFyZSB1c2VkIGZvciBhIGZpbGUncyBjb2RpbmcKLSAgY29va2llLgotCi0tIElzc3VlICMxNzk3NjogRml4ZWQgcG90ZW50aWFsIHByb2JsZW0gd2l0aCBmaWxlLndyaXRlKCkgbm90IGRldGVjdGluZyBJTyBlcnJvcgotICBieSBpbnNwZWN0aW5nIHRoZSByZXR1cm4gdmFsdWUgb2YgZndyaXRlKCkuICBCYXNlZCBvbiBwYXRjaGVzIGJ5IEphYWtrbyBNb2lzaW8KLSAgYW5kIFZpY3RvciBTdGlubmVyLgotCi0tIElzc3VlICMxNDQzMjogR2VuZXJhdG9yIG5vdyBjbGVhcnMgdGhlIGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0aGUgdGhyZWFkCi0gIHN0YXRlLiBGaXggYSBjcmFzaCB3aGVuIGEgZ2VuZXJhdG9yIGlzIGNyZWF0ZWQgaW4gYSBDIHRocmVhZCB0aGF0IGlzCi0gIGRlc3Ryb3llZCB3aGlsZSB0aGUgZ2VuZXJhdG9yIGlzIHN0aWxsIHVzZWQuIFRoZSBpc3N1ZSB3YXMgdGhhdCBhIGdlbmVyYXRvcgotICBjb250YWlucyBhIGZyYW1lLCBhbmQgdGhlIGZyYW1lIGtlcHQgYSByZWZlcmVuY2UgdG8gdGhlIFB5dGhvbiBzdGF0ZSBvZiB0aGUKLSAgZGVzdHJveWVkIEMgdGhyZWFkLiBUaGUgY3Jhc2ggb2NjdXJzIHdoZW4gYSB0cmFjZSBmdW5jdGlvbiBpcyBzZXR1cC4KLQotLSBJc3N1ZSAjMTk5MzI6IEZpeCB0eXBvIGluIGltcG9ydC5oLCBtaXNzaW5nIHdoaXRlc3BhY2VzIGluIGZ1bmN0aW9uIHByb3RvdHlwZXMuCi0KLS0gSXNzdWUgIzE5NjM4OiBGaXggcG9zc2libGUgY3Jhc2ggLyB1bmRlZmluZWQgYmVoYXZpb3VyIGZyb20gaHVnZSAobW9yZSB0aGFuIDIKLSAgYmlsbGlvbiBjaGFyYWN0ZXJzKSBpbnB1dCBzdHJpbmdzIGluIF9QeV9kZ19zdHJ0b2QuCi0KLS0gSXNzdWUgIzEyNTQ2OiBBbGxvdyBceDAwIHRvIGJlIHVzZWQgYXMgYSBmaWxsIGNoYXJhY3RlciB3aGVuIHVzaW5nIHN0ciwgaW50LAotICBmbG9hdCwgYW5kIGNvbXBsZXggX19mb3JtYXRfXyBtZXRob2RzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwNzQ0OiBGaXggUEVQIDMxMTggZm9ybWF0IHN0cmluZ3Mgb24gY3R5cGVzIG9iamVjdHMgd2l0aCBhIG5vbnRyaXZpYWwKLSAgc2hhcGUuCi0KLS0gSXNzdWUgIzc3NzY6IEJhY2twb3J0IEZpeCBgYEhvc3Q6JycgaGVhZGVyIGFuZCByZWNvbm5lY3Rpb24gd2hlbiB1c2luZwotICBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5zZXRfdHVubmVsKCkgZnJvbSBQeXRob24gMy4gIFBhdGNoIGJ5IE5pa29sYXVzCi0gIFJhdGguCi0KLS0gSXNzdWUgIzIxMzA2OiBCYWNrcG9ydCBobWFjLmNvbXBhcmVfZGlnZXN0IGZyb20gUHl0aG9uIDMuIFRoaXMgaXMgcGFydCBvZiBQRVAKLSAgNDY2LgotCi0tIElzc3VlICMyMTQ3MDogRG8gYSBiZXR0ZXIgam9iIHNlZWRpbmcgdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGJ5Ci0gIHVzaW5nIGVub3VnaCBieXRlcyB0byBzcGFuIHRoZSBmdWxsIHN0YXRlIHNwYWNlIG9mIHRoZSBNZXJzZW5uZSBUd2lzdGVyLgotCi0tIElzc3VlICMyMTQ2OTogUmVkdWNlZCB0aGUgcmlzayBvZiBmYWxzZSBwb3NpdGl2ZXMgaW4gcm9ib3RwYXJzZXIgYnkKLSAgY2hlY2tpbmcgdG8gbWFrZSBzdXJlIHRoYXQgcm9ib3RzLnR4dCBoYXMgYmVlbiByZWFkIG9yIGRvZXMgbm90IGV4aXN0Ci0gIHByaW9yIHRvIHJldHVybmluZyBUcnVlIGluIGNhbl9mZXRjaCgpLgotCi0tIElzc3VlICMyMTMyMTogaXRlcnRvb2xzLmlzbGljZSgpIG5vdyByZWxlYXNlcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzb3VyY2UKLSAgaXRlcmF0b3Igd2hlbiB0aGUgc2xpY2UgaXMgZXhoYXVzdGVkLiAgUGF0Y2ggYnkgQW50b24gQWZhbmFzeWV2LgotCi0tIElzc3VlICM5MjkxOiBEbyBub3QgYXR0ZW1wdCB0byByZS1lbmNvZGUgbWltZXR5cGUgZGF0YSByZWFkIGZyb20gcmVnaXN0cnkgaW4KLSAgQU5TSSBtb2RlLiBJbml0aWFsIHBhdGNoZXMgYnkgRG1pdHJ5IEplbWVyb3YgJiBWbGFkaW1pciBJb2Zpay4KLQotLSBJc3N1ZSAjMjEzNDk6IFBhc3NpbmcgYSBtZW1vcnl2aWV3IHRvIF93aW5yZWcuU2V0VmFsdWVFeCBub3cgY29ycmVjdGx5IHJhaXNlcwotICBhIFR5cGVFcnJvciB3aGVyZSBpdCBwcmV2aW91c2x5IGNyYXNoZWQgdGhlIGludGVycHJldGVyLiBQYXRjaCBieSBCcmlhbiBLZWFybnMKLQotLSBJc3N1ZSAjMjE1MjkgKENWRS0yMDE0LTQ2MTYpOiBGaXggYXJiaXRyYXJ5IG1lbW9yeSBhY2Nlc3MgaW4KLSAgSlNPTkRlY29kZXIucmF3X2RlY29kZSB3aXRoIGEgbmVnYXRpdmUgc2Vjb25kIHBhcmFtZXRlci4gQnVnIHJlcG9ydGVkIGJ5IEd1aWRvCi0gIFZyYW5rZW4uCi0KLS0gSXNzdWUgIzIxMTcyOiBpc2luc3RhbmNlIGNoZWNrIHJlbGF4ZWQgZnJvbSBkaWN0IHRvIGNvbGxlY3Rpb25zLk1hcHBpbmcuCi0KLS0gSXNzdWUgIzIxMTkxOiBJbiBvcy5mZG9wZW4sIG5ldmVyIGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3Igd2hlbiBhbiBleGNlcHRpb24KLSAgaGFwcGVucy4KLQotLSBJc3N1ZSAjMjExNDk6IEltcHJvdmVkIHRocmVhZC1zYWZldHkgaW4gbG9nZ2luZyBjbGVhbnVwIGR1cmluZyBpbnRlcnByZXRlcgotICBzaHV0ZG93bi4gVGhhbmtzIHRvIERldmluIEplYW5waWVycmUgZm9yIHRoZSBwYXRjaC4KLQotLSBGaXggcG9zc2libGUgb3ZlcmZsb3cgYnVnIGluIHN0cm9wLmV4cGFuZHRhYnMuIFlvdSBzaG91bGRuJ3QgYmUgdXNpbmcgdGhpcwotICBtb2R1bGUhCi0KLS0gSXNzdWUgIzIwMTQ1OiBgYXNzZXJ0UmFpc2VzUmVnZXhgIG5vdyByYWlzZXMgYSBUeXBlRXJyb3IgaWYgdGhlIHNlY29uZAotICBhcmd1bWVudCBpcyBub3QgYSBzdHJpbmcgb3IgY29tcGlsZWQgcmVnZXguCi0KLS0gSXNzdWUgIzIxMDU4OiBGaXggYSBsZWFrIG9mIGZpbGUgZGVzY3JpcHRvciBpbiB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoKSwKLSAgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciBpZiBvcy5mZG9wZW4oKSBmYWlscwotCi0tIElzc3VlICMyMDI4MzogUkUgcGF0dGVybiBtZXRob2RzIG5vdyBhY2NlcHQgdGhlIHN0cmluZyBrZXl3b3JkIHBhcmFtZXRlcnMKLSAgYXMgZG9jdW1lbnRlZC4gIFRoZSBwYXR0ZXJuIGFuZCBzb3VyY2Uga2V5d29yZCBwYXJhbWV0ZXJzIGFyZSBsZWZ0IGFzCi0gIGRlcHJlY2F0ZWQgYWxpYXNlcy4KLQotLSBJc3N1ZSAjMTE1OTk6IFdoZW4gYW4gZXh0ZXJuYWwgY29tbWFuZCAoZS5nLiBjb21waWxlcikgZmFpbHMsIGRpc3R1dGlscyBub3cKLSAgcHJpbnRzIG91dCB0aGUgd2hvbGUgY29tbWFuZCBsaW5lIChpbnN0ZWFkIG9mIGp1c3QgdGhlIGNvbW1hbmQgbmFtZSkgaWYgdGhlCi0gIGVudmlyb25tZW50IHZhcmlhYmxlIERJU1RVVElMU19ERUJVRyBpcyBzZXQuCi0KLS0gSXNzdWUgIzQ5MzE6IGRpc3R1dGlscyBzaG91bGQgbm90IHByb2R1Y2UgdW5oZWxwZnVsICJlcnJvcjogTm9uZSIgbWVzc2FnZXMKLSAgYW55bW9yZS4gIGRpc3R1dGlscy51dGlsLmdyb2tfZW52aXJvbm1lbnRfZXJyb3IgaXMga2VwdCBidXQgZG9jLWRlcHJlY2F0ZWQuCi0KLS0gSW1wcm92ZSB0aGUgcmFuZG9tIG1vZHVsZSdzIGRlZmF1bHQgc2VlZGluZyB0byB1c2UgMjU2IGJpdHMgb2YgZW50cm9weQotICBmcm9tIG9zLnVyYW5kb20oKS4gIFRoaXMgd2FzIGFscmVhZHkgZG9uZSBmb3IgUHl0aG9uIDMsIG1pbGRseSBpbXByb3ZpbmcKLSAgc2VjdXJpdHkgd2l0aCBhIGJpZ2dlciBzZWVkIHNwYWNlLgotCi0tIElzc3VlICMxNTYxODogTWFrZSB0dXJ0bGUucHkgY29tcGF0aWJsZSB3aXRoICdmcm9tIF9fZnV0dXJlX18gaW1wb3J0Ci0gIHVuaWNvZGVfbGl0ZXJhbHMnLiAgSW5pdGlhbCBwYXRjaCBieSBKdWFuY2FybG8gQcOxZXouCi0KLS0gSXNzdWUgIzIwNTAxOiBmaWxlaW5wdXQgbW9kdWxlIG5vIGxvbmdlciByZWFkcyB3aG9sZSBmaWxlIGludG8gbWVtb3J5IHdoZW4gdXNpbmcKLSAgZmlsZWlucHV0Lmhvb2tfZW5jb2RlZC4KLQotLSBJc3N1ZSAjNjgxNTogb3MucGF0aC5leHBhbmR2YXJzKCkgbm93IHN1cHBvcnRzIG5vbi1BU0NJSSBVbmljb2RlIGVudmlyb25tZW50Ci0gIHZhcmlhYmxlcyBuYW1lcyBhbmQgdmFsdWVzLgotCi0tIElzc3VlICMyMDYzNTogRml4ZWQgZ3JpZF9jb2x1bW5jb25maWd1cmUoKSBhbmQgZ3JpZF9yb3djb25maWd1cmUoKSBtZXRob2RzIG9mCi0gIFRraW50ZXIgd2lkZ2V0cyB0byB3b3JrIGluIHdhbnRvYmplY3RzPVRydWUgbW9kZS4KLQotLSBJc3N1ZSAjMTc2NzE6IEZpeGVkIGEgY3Jhc2ggd2hlbiB1c2Ugbm9uLWluaXRpYWxpemVkIGlvLkJ1ZmZlcmVkUldQYWlyLgotICBCYXNlZCBvbiBwYXRjaCBieSBTdGVwaGVuIFR1LgotCi0tIElzc3VlICM4NDc4OiBVbnRva2VuaXplci5jb21wYXQgcHJvY2Vzc2VzIGZpcnN0IHRva2VuIGZyb20gaXRlcmF0b3IgaW5wdXQuCi0gIFBhdGNoIGJhc2VkIG9uIGxpbmVzIGZyb20gR2VvcmcgQnJhbmRsLCBFcmljIFNub3csIGFuZCBHYXJldGggUmVlcy4KLQotLSBJc3N1ZSAjMjA1OTQ6IEF2b2lkIG5hbWUgY2xhc2ggd2l0aCB0aGUgbGliYyBmdW5jdGlvbiBwb3NpeF9jbG9zZS4KLQotLSBJc3N1ZSAjMTk4NTY6IHNodXRpbC5tb3ZlKCkgZmFpbGVkIHRvIG1vdmUgYSBkaXJlY3RvcnkgdG8gb3RoZXIgZGlyZWN0b3J5Ci0gIG9uIFdpbmRvd3MgaWYgc291cmNlIG5hbWUgZW5kcyB3aXRoIG9zLmFsdHNlcC4KLQotLSBJc3N1ZSAjMTQ5ODM6IGVtYWlsLmdlbmVyYXRvciBub3cgYWx3YXlzIGFkZHMgYSBsaW5lIGVuZCBhZnRlciBlYWNoIE1JTUUKLSAgYm91bmRhcnkgbWFya2VyLCBpbnN0ZWFkIG9mIGRvaW5nIHNvIG9ubHkgd2hlbiB0aGVyZSBpcyBhbiBlcGlsb2d1ZS4gIFRoaXMKLSAgZml4ZXMgYW4gUkZDIGNvbXBsaWFuY2UgYnVnIGFuZCBzb2x2ZXMgYW4gaXNzdWUgd2l0aCBzaWduZWQgTUlNRSBwYXJ0cy4KLQotLSBJc3N1ZSAjMjAwMTM6IFNvbWUgaW1hcCBzZXJ2ZXJzIGRpc2Nvbm5lY3QgaWYgdGhlIGN1cnJlbnQgbWFpbGJveCBpcwotICBkZWxldGVkLCBhbmQgaW1hcGxpYiBkaWQgbm90IGhhbmRsZSB0aGF0IGNhc2UgZ3JhY2VmdWxseS4gIE5vdyBpdAotICBoYW5kbGVzIHRoZSAnYnllJyBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzIwNDI2OiBXaGVuIHBhc3NpbmcgdGhlIHJlLkRFQlVHIGZsYWcsIHJlLmNvbXBpbGUoKSBkaXNwbGF5cyB0aGUKLSAgZGVidWcgb3V0cHV0IGV2ZXJ5IHRpbWUgaXQgaXMgY2FsbGVkLCByZWdhcmRsZXNzIG9mIHRoZSBjb21waWxhdGlvbiBjYWNoZS4KLQotLSBJc3N1ZSAjMjAzNjg6IFRoZSBudWxsIGNoYXJhY3RlciBub3cgY29ycmVjdGx5IHBhc3NlZCBmcm9tIFRjbCB0byBQeXRob24gKGluCi0gIHVuaWNvZGUgc3RyaW5ncyBvbmx5KS4gIEltcHJvdmVkIGVycm9yIGhhbmRsaW5nIGluIHZhcmlhYmxlcy1yZWxhdGVkIGNvbW1hbmRzLgotCi0tIElzc3VlICMyMDQzNTogRml4IF9weWlvLlN0cmluZ0lPLmdldHZhbHVlKCkgdG8gdGFrZSBpbnRvIGFjY291bnQgbmV3bGluZQotICB0cmFuc2xhdGlvbiBzZXR0aW5ncy4KLQotLSBJc3N1ZSAjMjAyODg6IGZpeCBoYW5kbGluZyBvZiBpbnZhbGlkIG51bWVyaWMgY2hhcnJlZnMgaW4gSFRNTFBhcnNlci4KLQotLSBJc3N1ZSAjMTk0NTY6IG50cGF0aC5qb2luKCkgbm93IGpvaW5zIHJlbGF0aXZlIHBhdGhzIGNvcnJlY3RseSB3aGVuIGEgZHJpdmUKLSAgaXMgcHJlc2VudC4KLQotLSBJc3N1ZSAjODI2MDogVGhlIHJlYWQoKSwgcmVhZGxpbmUoKSBhbmQgcmVhZGxpbmVzKCkgbWV0aG9kcyBvZgotICBjb2RlY3MuU3RyZWFtUmVhZGVyIHJldHVybmVkIGluY29tcGxldGUgZGF0YSB3aGVuIHdlcmUgY2FsbGVkIGFmdGVyCi0gIHJlYWRsaW5lKCkgb3IgcmVhZChzaXplKS4gIEJhc2VkIG9uIHBhdGNoIGJ5IEFtYXVyeSBGb3JnZW90IGQnQXJjLgotCi0tIElzc3VlICMyMDM3NDogRml4IGJ1aWxkIHdpdGggR05VIHJlYWRsaW5lID49IDYuMy4KLQotLSBJc3N1ZSAjMTQ1NDg6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGZpbmFsaXplcnMgY2hlY2sgcGlkIGJlZm9yZQotICBydW5uaW5nIHRvIGNvcGUgd2l0aCBwb3NzaWJpbGl0eSBvZiBnYyBydW5uaW5nIGp1c3QgYWZ0ZXIgZm9yay4KLSAgKEJhY2twb3J0IGZyb20gMy54LikKLQotLSBJc3N1ZSAjMjAyNjI6IFdhcm5pbmdzIGFyZSByYWlzZWQgbm93IHdoZW4gZHVwbGljYXRlIG5hbWVzIGFyZSBhZGRlZCBpbiB0aGUKLSAgWklQIGZpbGUgb3IgdG9vIGxvbmcgWklQIGZpbGUgY29tbWVudCBpcyB0cnVuY2F0ZWQuCi0KLS0gSXNzdWUgIzIwMjcwOiB1cmxsaWIgYW5kIHVybHBhcnNlIG5vdyBzdXBwb3J0IGVtcHR5IHBvcnRzLgotCi0tIElzc3VlICMyMDI0MzogVGFyRmlsZSBubyBsb25nZXIgcmFpc2UgUmVhZEVycm9yIHdoZW4gb3BlbmVkIGluIHdyaXRlIG1vZGUuCi0KLS0gSXNzdWUgIzIwMjQ1OiBUaGUgb3BlbiBmdW5jdGlvbnMgaW4gdGhlIHRhcmZpbGUgbW9kdWxlIG5vdyBjb3JyZWN0bHkgaGFuZGxlCi0gIGVtcHR5IG1vZGUuCi0KLS0gSXNzdWUgIzIwMDg2OiBSZXN0b3JlZCB0aGUgdXNlIG9mIGxvY2FsZS1pbmRlcGVuZGVudCBtYXBwaW5nIGluc3RlYWQgb2YKLSAgbG9jYWxlLWRlcGVuZGVudCBzdHIubG93ZXIoKSBpbiBsb2NhbGUubm9ybWFsaXplKCkuCi0KLS0gSXNzdWUgIzIwMjQ2OiBGaXggYnVmZmVyIG92ZXJmbG93IGluIHNvY2tldC5yZWN2ZnJvbV9pbnRvLgotCi0tIElzc3VlICMxOTA4MjogV29ya2luZyBTaW1wbGVYTUxSUENTZXJ2ZXIgYW5kIHhtbHJwY2xpYiBleGFtcGxlcywgYm90aCBpbgotICBtb2R1bGVzIGFuZCBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxMzEwNzogYXJncGFyc2UgYW5kIG9wdHBhcnNlIG5vIGxvbmdlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gb3V0cHV0Ci0gIGEgaGVscCBvbiBlbnZpcm9ubWVudCB3aXRoIHRvbyBzbWFsbCBDT0xVTU5TLiAgQmFzZWQgb24gcGF0Y2ggYnkKLSAgRWxhemFyIEdlcnNodW5pLgotCi0tIElzc3VlICMyMDIwNzogQWx3YXlzIGRpc2FibGUgU1NMdjIgZXhjZXB0IHdoZW4gUFJPVE9DT0xfU1NMdjIgaXMgZXhwbGljaXRseQotICBhc2tlZCBmb3IuCi0KLS0gSXNzdWUgIzIwMDcyOiBGaXhlZCBtdWx0aXBsZSBlcnJvcnMgaW4gdGtpbnRlciB3aXRoIHdhbnRvYmplY3RzIGlzIEZhbHNlLgotCi0tIElzc3VlICMxMDY1OTg2OiBweWRvYyBjYW4gbm93IGhhbmRsZSB1bmljb2RlIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE2MDM5OiBDVkUtMjAxMy0xNzUyOiBDaGFuZ2UgdXNlIG9mIHJlYWRsaW5lIGluIGltYXBsaWIgbW9kdWxlIHRvCi0gIGxpbWl0IGxpbmUgbGVuZ3RoLiAgUGF0Y2ggYnkgRW1pbCBMaW5kLgotCi0tIElzc3VlICMxOTQyMjogRXhwbGljaXRseSBkaXNhbGxvdyBub24tU09DS19TVFJFQU0gc29ja2V0cyBpbiB0aGUgc3NsCi0gIG1vZHVsZSwgcmF0aGVyIHRoYW4gc2lsZW50bHkgbGV0IHRoZW0gZW1pdCBjbGVhciB0ZXh0IGRhdGEuCi0KLS0gSXNzdWUgIzIwMDI3OiBGaXhlZCBsb2NhbGUgYWxpYXNlcyBmb3IgZGV2YW5hZ2FyaSBsb2NhbGVzLgotCi0tIElzc3VlICMyMDA2NzogVGtpbnRlciB2YXJpYWJsZXMgbm93IHdvcmsgd2hlbiB3YW50b2JqZWN0cyBpcyBmYWxzZS4KLQotLSBJc3N1ZSAjMTkwMjA6IFRraW50ZXIgbm93IHVzZXMgc3BsaXRsaXN0KCkgaW5zdGVhZCBvZiBzcGxpdCgpIGluIGNvbmZpZ3VyZQotICBtZXRob2RzLgotCi0tIElzc3VlICMxMjIyNjogSFRUUFMgaXMgbm93IHVzZWQgYnkgZGVmYXVsdCB3aGVuIGNvbm5lY3RpbmcgdG8gUHlQSS4KLQotLSBJc3N1ZSAjMjAwNDg6IEZpeGVkIFppcEV4dEZpbGUucGVlaygpIHdoZW4gaXQgaXMgY2FsbGVkIG9uIHRoZSBib3VuZGFyeSBvZgotICB0aGUgdW5jb21wcmVzcyBidWZmZXIgYW5kIHJlYWQoKSBnb2VzIHRocm91Z2ggbW9yZSB0aGFuIG9uZSByZWFkYnVmZmVyLgotCi0tIElzc3VlICMyMDAzNDogVXBkYXRlZCBhbGlhcyBtYXBwaW5nIHRvIG1vc3QgcmVjZW50IGxvY2FsZS5hbGlhcyBmaWxlCi0gIGZyb20gWC5vcmcgZGlzdHJpYnV0aW9uIHVzaW5nIG1ha2Vsb2NhbGVhbGlhcy5weS4KLQotLSBJc3N1ZSAjNTgxNTogRml4ZWQgc3VwcG9ydCBmb3IgbG9jYWxlcyB3aXRoIG1vZGlmaWVycy4gIEZpeGVkIHN1cHBvcnQgZm9yCi0gIGxvY2FsZSBlbmNvZGluZ3Mgd2l0aCBoeXBoZW5zLgotCi0tIElzc3VlICMyMDAyNjogRml4IHRoZSBzcWxpdGUgbW9kdWxlIHRvIGhhbmRsZSBjb3JyZWN0bHkgaW52YWxpZCBpc29sYXRpb24KLSAgbGV2ZWwgKHdyb25nIHR5cGUpLgotCi0tIElzc3VlICMxODgyOTogY3N2LkRpYWxlY3QoKSBub3cgY2hlY2tzIHR5cGUgZm9yIGRlbGltaXRlciwgZXNjYXBlY2hhciBhbmQKLSAgcXVvdGVjaGFyIGZpZWxkcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KLQotLSBJc3N1ZSAjMTk4NTU6IHV1aWQuZ2V0bm9kZSgpIG9uIFVuaXggbm93IGxvb2tzIG9uIHRoZSBQQVRIIGZvciB0aGUKLSAgZXhlY3V0YWJsZXMgdXNlZCB0byBmaW5kIHRoZSBtYWMgYWRkcmVzcywgd2l0aCAvc2JpbiBhbmQgL3Vzci9zYmluIGFzCi0gIGZhbGxiYWNrcy4KLQotLSBJc3N1ZSAjMjAwMDc6IEhUVFBSZXNwb25zZS5yZWFkKDApIG5vIG1vcmUgcHJlbWF0dXJlbHkgY2xvc2VzIGNvbm5lY3Rpb24uCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNpbW9uIFNhcGluLgotCi0tIElzc3VlICMxOTkxMjogRml4ZWQgbnVtZXJvdXMgYnVncyBpbiBudHBhdGguc3BsaXR1bmMoKS4KLQotLSBJc3N1ZSAjMTk2MjM6IEZpeGVkIHdyaXRpbmcgdG8gdW5zZWVrYWJsZSBmaWxlcyBpbiB0aGUgYWlmYyBtb2R1bGUuCi0gIEZpeGVkIHdyaXRpbmcgJ3VsYXcnIChsb3dlciBjYXNlKSBjb21wcmVzc2VkIEFJRkMgZmlsZXMuCi0KLS0gSXNzdWUgIzE3OTE5OiBzZWxlY3QucG9sbC5yZWdpc3RlcigpIGFnYWluIHdvcmtzIHdpdGggcG9sbC5QT0xMTlZBTCBvbiBBSVguCi0gIEZpeGVkIGludGVnZXIgb3ZlcmZsb3cgaW4gdGhlIGV2ZW50bWFzayBwYXJhbWV0ZXIuCi0KLS0gSXNzdWUgIzE3MjAwOiB0ZWxuZXRsaWIncyByZWFkX3VudGlsIGFuZCBleHBlY3QgdGltZW91dCB3YXMgYnJva2VuIGJ5IHRoZQotICBmaXggdG8gSXNzdWUgIzE0NjM1IGluIFB5dGhvbiAyLjcuNCB0byBiZSBpbnRlcnByZXRlZCBhcyBtaWxsaXNlY29uZHMKLSAgaW5zdGVhZCBvZiBzZWNvbmRzIHdoZW4gdGhlIHBsYXRmb3JtIHN1cHBvcnRzIHNlbGVjdC5wb2xsIChpZTogZXZlcnl3aGVyZSkuCi0gIEl0IGlzIG5vdyB0cmVhdGVkIGFzIHNlY29uZHMgb25jZSBhZ2Fpbi4KLQotLSBJc3N1ZSAjMTkwOTk6IFRoZSBzdHJ1Y3QgbW9kdWxlIG5vdyBzdXBwb3J0cyBVbmljb2RlIGZvcm1hdCBzdHJpbmdzLgotCi0tIElzc3VlICMxOTg3ODogRml4IHNlZ2ZhdWx0IGluIGJ6MiBtb2R1bGUgYWZ0ZXIgY2FsbGluZyBfX2luaXRfXyB0d2ljZSB3aXRoCi0gIG5vbi1leGlzdGVudCBmaWxlbmFtZS4gSW5pdGlhbCBwYXRjaCBieSBWYWpyYXNreSBLb2suCi0KLS0gSXNzdWUgIzE2MzczOiBQcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbiBmb3IgQUJDIFNldCBjbGFzcyBjb21wYXJpc29ucy4KLQotLSBJc3N1ZSAjMTkxMzg6IGRvY3Rlc3QncyBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTCBub3cgYWxsb3dzIGEgbWF0Y2ggd2hlbgotICBubyBleGNlcHRpb24gZGV0YWlsIGV4aXN0cyAobm8gY29sb24gZm9sbG93aW5nIHRoZSBleGNlcHRpb24ncyBuYW1lLCBvcgotICBhIGNvbG9uIGRvZXMgZm9sbG93IGJ1dCBubyB0ZXh0IGZvbGxvd3MgdGhlIGNvbG9uKS4KLQotLSBJc3N1ZSAjMTYyMzE6IEZpeGVkIHBpY2tsZS5QaWNrbGVyIHRvIG9ubHkgZmFsbGJhY2sgdG8gaXRzIGRlZmF1bHQgcGlja2xpbmcKLSAgYmVoYXZpb3VyIHdoZW4gUGlja2xlci5wZXJzaXN0ZW50X2lkIHJldHVybnMgTm9uZSwgYnV0IG5vdCBmb3IgYW55IG90aGVyCi0gIGZhbHNlIHZhbHVlcy4gIFRoaXMgYWxsb3dzIGZhbHNlIHZhbHVlcyBvdGhlciB0aGFuIE5vbmUgdG8gYmUgdXNlZCBhcwotICBwZXJzaXN0ZW50IElEcy4gIFRoaXMgYmVoYXZpb3VyIGlzIGNvbnNpc3RlbnQgd2l0aCBjUGlja2xlLgotCi0tIElzc3VlICMxMTUwODogRml4ZWQgdXVpZC5nZXRub2RlKCkgYW5kIHV1aWQudXVpZDEoKSBvbiBlbnZpcm9ubWVudCB3aXRoCi0gIHZpcnR1YWwgaW50ZXJmYWNlLiAgT3JpZ2luYWwgcGF0Y2ggYnkgS2VudCBGcmF6aWVyLgotCi0tIElzc3VlICMxMTQ4OTogSlNPTiBkZWNvZGVyIG5vdyBhY2NlcHRzIGxvbmUgc3Vycm9nYXRlcy4KLQotLSBGaXggdGVzdC50ZXN0X3N1cHBvcnQuYmluZF9wb3J0KCkgdG8gbm90IGNhdXNlIGFuIGVycm9yIHdoZW4gUHl0aG9uIHdhcwotICBjb21waWxlZCBvbiBhIHN5c3RlbSB3aXRoIFNPX1JFVVNFUE9SVCBkZWZpbmVkIGluIHRoZSBoZWFkZXJzIGJ1dCBydW4gb24KLSAgYSBzeXN0ZW0gd2l0aCBhbiBPUyBrZXJuZWwgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgbmV3IHNvY2tldCBvcHRpb24uCi0KLS0gSXNzdWUgIzE5NjMzOiBGaXhlZCB3cml0aW5nIG5vdCBjb21wcmVzc2VkIDE2LSBhbmQgMzItYml0IHdhdmUgZmlsZXMgb24KLSAgYmlnLWVuZGlhbiBwbGF0Zm9ybXMuCi0KLS0gSXNzdWUgIzE5NDQ5OiBpbiBjc3YncyB3cml0ZXJvdywgaGFuZGxlIG5vbi1zdHJpbmcga2V5cyB3aGVuIGdlbmVyYXRpbmcgdGhlCi0gIGVycm9yIG1lc3NhZ2UgdGhhdCBjZXJ0YWluIGtleXMgYXJlIG5vdCBpbiB0aGUgJ2ZpZWxkbmFtZXMnIGxpc3QuCi0KLS0gSXNzdWUgIzEyODUzOiBGaXggTmFtZUVycm9yIGluIGRpc3R1dGlscy5jb21tYW5kLnVwbG9hZC4KLQotLSBJc3N1ZSAjMTk1MjM6IENsb3NlZCBGaWxlSGFuZGxlciBsZWFrIHdoaWNoIG9jY3VycmVkIHdoZW4gZGVsYXkgd2FzIHNldC4KLQotLSBJc3N1ZSAjMTU3NTAyMDogRml4ZWQgc3VwcG9ydCBvZiAyNC1iaXQgd2F2ZSBmaWxlcyBvbiBiaWctZW5kaWFuIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTk0ODA6IEhUTUxQYXJzZXIgbm93IGFjY2VwdHMgYWxsIHZhbGlkIHN0YXJ0LXRhZyBuYW1lcyBhcyBkZWZpbmVkCi0gIGJ5IHRoZSBIVE1MNSBzdGFuZGFyZC4KLQotLSBJc3N1ZSAjMTc4Mjc6IEFkZCB0aGUgbWlzc2luZyBkb2N1bWVudGF0aW9uIGZvciBgYGNvZGVjcy5lbmNvZGVgYCBhbmQKLSAgYGBjb2RlY3MuZGVjb2RlYGAuCi0KLS0gSXNzdWUgIzYxNTc6IEZpeGVkIFRraW50ZXIuVGV4dC5kZWJ1ZygpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCi0KLS0gSXNzdWUgIzYxNjA6IFRoZSBiYm94KCkgbWV0aG9kIG9mIHRraW50ZXIuU3BpbmJveCBub3cgcmV0dXJucyBhIHR1cGxlIG9mCi0gIGludGVnZXJzIGluc3RlYWQgb2YgYSBzdHJpbmcuICBCYXNlZCBvbiBwYXRjaCBieSBHdWlsaGVybWUgUG9sby4KLQotLSBJc3N1ZSAjMTkyODY6IERpcmVjdG9yaWVzIGluIGBgcGFja2FnZV9kYXRhYGAgYXJlIG5vIGxvbmdlciBhZGRlZCB0bwotICB0aGUgZmlsZWxpc3QsIHByZXZlbnRpbmcgZmFpbHVyZSBvdXRsaW5lZCBpbiB0aGUgdGlja2V0LgotCi0tIElzc3VlICM2Njc2OiBFbnN1cmUgYSBtZWFuaW5nZnVsIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2hlbiBhdHRlbXB0aW5nCi0gIHRvIHBhcnNlIG1vcmUgdGhhbiBvbmUgWE1MIGRvY3VtZW50IHBlciBweWV4cGF0IHhtbHBhcnNlciBpbnN0YW5jZS4KLSAgKE9yaWdpbmFsIHBhdGNoZXMgYnkgSGlyb2thenUgWWFtYW1vdG8gYW5kIEFtYXVyeSBGb3JnZW90IGQnQXJjLCB3aXRoCi0gIHN1Z2dlc3RlZCB3b3JkaW5nIGJ5IERhdmlkIEd1dHRlcmlkZ2UpCi0KLS0gSXNzdWUgIzIxMzExOiBBdm9pZCBleGNlcHRpb24gaW4gX29zeF9zdXBwb3J0IHdpdGggbm9uLXN0YW5kYXJkIGNvbXBpbGVyCi0gIGNvbmZpZ3VyYXRpb25zLiAgUGF0Y2ggYnkgSm9obiBTemFrbWVpc3Rlci4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzM1NjE6IFRoZSBXaW5kb3dzIGluc3RhbGxlciBub3cgaGFzIGFuIG9wdGlvbiwgb2ZmIGJ5IGRlZmF1bHQsIGZvcgotICBwbGFjaW5nIHRoZSBQeXRob24gaW5zdGFsbGF0aW9uIGludG8gdGhlIHN5c3RlbSAiUGF0aCIgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0gIFRoaXMgd2FzIGJhY2twb3J0ZWQgZnJvbSBQeXRob24gMy4zLgotCi0tIEFkZCBzdXBwb3J0IGZvciBgYHlpZWxkIGZyb21gYCB0byAydG8zLgotCi0tIEFkZCBzdXBwb3J0IGZvciB0aGUgUEVQIDQ2NSBtYXRyaXggbXVsdGlwbGljYXRpb24gb3BlcmF0b3IgdG8gMnRvMy4KLQotLSBJc3N1ZSAjMTk5MzY6IEFkZGVkIGV4ZWN1dGFibGUgYml0cyBvciBzaGViYW5nIGxpbmVzIHRvIFB5dGhvbiBzY3JpcHRzIHdoaWNoCi0gIHJlcXVpcmVzIHRoZW0uICBEaXNhYmxlIGV4ZWN1dGFibGUgYml0cyBhbmQgc2hlYmFuZyBsaW5lcyBpbiB0ZXN0IGFuZAotICBiZW5jaG1hcmsgZmlsZXMgaW4gb3JkZXIgdG8gcHJldmVudCB1c2luZyBhIHJhbmRvbSBzeXN0ZW0gcHl0aG9uLCBhbmQgaW4KLSAgc291cmNlIGZpbGVzIG9mIG1vZHVsZXMgd2hpY2ggZG9uJ3QgcHJvdmlkZSBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzE4MTA0OiBBZGQgaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkgd2l0aCBhIGZldyBzYW1wbGUgdGVzdHMgdG8gYmVnaW4KLSAgY29uc29saWRhdGluZyBhbmQgaW1wcm92aW5nIGh1bWFuLXZhbGlkYXRlZCB0ZXN0cyBvZiBJZGxlLiBDaGFuZ2Ugb3RoZXIgZmlsZXMKLSAgYXMgbmVlZGVkIHRvIHdvcmsgd2l0aCBodGVzdC4gIFJ1bm5pbmcgdGhlIG1vZHVsZSBhcyBfX21haW5fXyBydW5zIGFsbCB0ZXN0cy4KLQotLSBJc3N1ZSAjMjExMzk6IENoYW5nZSBkZWZhdWx0IHBhcmFncmFwaCB3aWR0aCB0byA3MiwgdGhlIFBFUCA4IHJlY29tbWVuZGF0aW9uLgotCi0tIElzc3VlICMyMTI4NDogUGFyYWdyYXBoIHJlZm9ybWF0IHRlc3QgcGFzc2VzIGFmdGVyIHVzZXIgY2hhbmdlcyByZWZvcm1hdCB3aWR0aC4KLQotLSBJc3N1ZSAjMjA0MDY6IFVzZSBQeXRob24gYXBwbGljYXRpb24gaWNvbnMgZm9yIElkbGUgd2luZG93IHRpdGxlIGJhcnMuCi0gIFBhdGNoIG1vc3RseSBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMyMTAyOTogT2NjdXJyZW5jZXMgb2YgInByaW50IiBhcmUgbm93IGNvbnNpc3RlbnRseSBjb2xvcmVkIGFzCi0gIGJlaW5nIGEga2V5d29yZCAodGhlIGNvbG9yaXplciBkb2Vzbid0IGtub3cgaWYgcHJpbnQgZnVuY3Rpb25zIGFyZQotICBlbmFibGVkIGluIHRoZSBzb3VyY2UpLgotCi0tIElzc3VlICMxNzcyMTogUmVtb3ZlIG5vbi1mdW5jdGlvbmFsIGNvbmZpZ3VyYXRpb24gZGlhbG9nIGhlbHAgYnV0dG9uIHVudGlsIHdlCi0gIG1ha2UgaXQgYWN0dWFsbHkgZ2l2ZXMgc29tZSBoZWxwIHdoZW4gY2xpY2tlZC4gUGF0Y2ggYnkgR3VpbGhlcm1lIFNpbcO1ZXMuCi0KLS0gSXNzdWUgIzE3MzkwOiBBZGQgUHl0aG9uIHZlcnNpb24gdG8gSWRsZSBlZGl0b3Igd2luZG93IHRpdGxlIGJhci4KLSAgT3JpZ2luYWwgcGF0Y2hlcyBieSBFZG1vbmQgQnVybmV0dCBhbmQgS2VudCBKb2huc29uLgotCi0tIElzc3VlICMyMDA1ODogc3lzLnN0ZGluLnJlYWRsaW5lKCkgaW4gSURMRSBub3cgYWx3YXlzIHJldHVybnMgb25seSBvbmUgbGluZS4KLQotLSBJc3N1ZSAjMTk0ODE6IHByaW50KCkgb2YgdW5pY29kZSwgc3RyIG9yIGJ5dGVhcnJheSBzdWJjbGFzcyBpbnN0YW5jZSBpbiBJRExFCi0gIG5vIG1vcmUgaGFuZ3MuCi0KLS0gSXNzdWUgIzE4MjcwOiBQcmV2ZW50IHBvc3NpYmxlIElETEUgQXR0cmlidXRlRXJyb3Igb24gT1MgWCB3aGVuIG5vIGluaXRpYWwKLSAgc2hlbGwgd2luZG93IGlzIHByZXNlbnQuCi0KLS0gSXNzdWUgIzE3NjU0OiBFbnN1cmUgSURMRSBtZW51cyBhcmUgY3VzdG9taXplZCBwcm9wZXJseSBvbiBPUyBYIGZvcgotICBub24tZnJhbWV3b3JrIGJ1aWxkcyBhbmQgZm9yIGFsbCB2YXJpYW50cyBvZiBUay4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzE3NzUyOiBGaXggZGlzdHV0aWxzIHRlc3RzIHdoZW4gcnVuIGZyb20gdGhlIGluc3RhbGxlZCBsb2NhdGlvbi4KLQotLSBJc3N1ZSAjMTg2MDQ6IENvbnNvbGlkYXRlZCBjaGVja3MgZm9yIEdVSSBhdmFpbGFiaWxpdHkuICBBbGwgcGxhdGZvcm1zIG5vdwotICBhdCBsZWFzdCBjaGVjayB3aGV0aGVyIFRrIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2hlbiB0aGUgR1VJIHJlc291cmNlIGlzCi0gIHJlcXVlc3RlZC4KLQotLSBJc3N1ZSAjMjA5NDY6IENvcnJlY3QgYWxpZ25tZW50IGFzc3VtcHRpb25zIG9mIHNvbWUgY3R5cGVzIHRlc3RzLgotCi0tIElzc3VlICMyMDc0MzogRml4IGEgcmVmZXJlbmNlIGxlYWsgaW4gdGVzdF90Y2wuCi0KLS0gSXNzdWUgIzIwNTEwOiBSZXdyb3RlIHRlc3RfZXhpdCBpbiB0ZXN0X3N5cyB0byBtYXRjaCBleGlzdGluZyBjb21tZW50cywKLSAgdXNlIG1vZGVybiB1bml0dGVzdCBmZWF0dXJlcywgYW5kIHVzZSBoZWxwZXJzIGZyb20gdGVzdC5zY3JpcHRfaGVscGVyCi0gIGluc3RlYWQgb2YgdXNpbmcgc3VicHJvY2VzcyBkaXJlY3RseS4gIEluaXRpYWwgcGF0Y2ggYnkgR2FyZXRoIFJlZXMuCi0KLS0gSXNzdWUgIzIwNTMyOiBUZXN0cyB3aGljaCB1c2UgX3Rlc3RjYXBpIG5vdyBhcmUgbWFya2VkIGFzIENQeXRob24gb25seS4KLQotLSBJc3N1ZSAjMTk5MjA6IEFkZGVkIHRlc3RzIGZvciBUYXJGaWxlLmxpc3QoKS4gIEJhc2VkIG9uIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KLQotLSBJc3N1ZSAjMTk5OTA6IEFkZGVkIHRlc3RzIGZvciB0aGUgaW1naGRyIG1vZHVsZS4gIEJhc2VkIG9uIHBhdGNoIGJ5Ci0gIENsYXVkaXUgUG9wYS4KLQotLSBJc3N1ZSAjMTk4MDQ6IFRoZSB0ZXN0X2ZpbmRfbWFjIHRlc3QgaW4gdGVzdF91dWlkIGlzIG5vdyBza2lwcGVkIGlmIHRoZQotICBpZmNvbmZpZyBleGVjdXRhYmxlIGlzIG5vdCBhdmFpbGFibGUuCi0KLS0gSXNzdWUgIzE5ODg2OiBVc2UgYmV0dGVyIGVzdGltYXRlZCBtZW1vcnkgcmVxdWlyZW1lbnRzIGZvciBiaWdtZW0gdGVzdHMuCi0KLS0gQmFja3BvcnRlZCB0ZXN0cyBmb3IgVGtpbnRlciB2YXJpYWJsZXMuCi0KLS0gSXNzdWUgIzE5MzIwOiB0ZXN0X3RjbCBubyBsb25nZXIgZmFpbHMgd2hlbiB3YW50b2JqZWN0cyBpcyBmYWxzZS4KLQotLSBJc3N1ZSAjMTk2ODM6IFJlbW92ZWQgZW1wdHkgdGVzdHMgZnJvbSB0ZXN0X21pbmlkb20uICBJbml0aWFsIHBhdGNoIGJ5Ci0gIEFqaXRlc2ggR3VwdGEuCi0KLS0gSXNzdWUgIzE5OTI4OiBJbXBsZW1lbnRlZCBhIHRlc3QgZm9yIHJlcHIoKSBvZiBjZWxsIG9iamVjdHMuCi0KLS0gSXNzdWUgIzE5NTk1LCAjMTk5ODc6IFJlLWVuYWJsZWQgYSBsb25nLWRpc2FibGVkIHRlc3QgaW4gdGVzdF93aW5zb3VuZC4KLQotLSBJc3N1ZSAjMTk1ODg6IEZpeGVkIHRlc3RzIGluIHRlc3RfcmFuZG9tIHRoYXQgd2VyZSBzaWxlbnRseSBza2lwcGVkIG1vc3QKLSAgb2YgdGhlIHRpbWUuICBQYXRjaCBieSBKdWxpYW4gR2luZGkuCi0KLS0gSXNzdWUgIzE3ODgzOiBUd2VhayB0ZXN0X3RjbCB0ZXN0TG9hZFdpdGhVTkMgdG8gc2tpcCB0aGUgdGVzdCBpbiB0aGUKLSAgZXZlbnQgb2YgYSBwZXJtaXNzaW9uIGVycm9yIG9uIFdpbmRvd3MgYW5kIHRvIHByb3Blcmx5IHJlcG9ydCBvdGhlcgotICBza2lwIGNvbmRpdGlvbnMuCi0KLS0gSXNzdWUgIzE3ODgzOiBCYWNrcG9ydGVkIF9pc19ndWlfYXZhaWxhYmxlKCkgaW4gdGVzdC50ZXN0X3N1cHBvcnQgdG8KLSAgYXZvaWQgaGFuZ2luZyBXaW5kb3dzIGJ1aWxkYm90cyBvbiB0ZXN0X3R0a19ndWlvbmx5LgotCi0tIElzc3VlICMxODcwMiwgIzE5NTcyOiBBbGwgc2tpcHBlZCB0ZXN0cyBub3cgcmVwb3J0ZWQgYXMgc2tpcHBlZC4KLQotLSBJc3N1ZSAjMTkwODU6IEFkZGVkIGJhc2ljIHRlc3RzIGZvciBhbGwgdGtpbnRlciB3aWRnZXQgb3B0aW9ucy4KLQotLSBJc3N1ZSAjMjA2MDU6IE1ha2UgdGVzdF9zb2NrZXQgZ2V0YWRkcmluZm8gT1MgWCBzZWdmYXVsdCB0ZXN0IG1vcmUgcm9idXN0LgotCi0tIElzc3VlICMyMDkzOTogQXZvaWQgdmFyaW91cyBuZXR3b3JrIHRlc3QgZmFpbHVyZXMgZHVlIHRvIG5ldwotICByZWRpcmVjdCBvZiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvIHRvIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmc6Ci0gIHVzZSBodHRwOi8vd3d3LmV4YW1wbGUuY29tIGluc3RlYWQuCi0KLS0gSXNzdWUgIzIxMDkzOiBQcmV2ZW50IGZhaWx1cmVzIG9mIGN0eXBlcyB0ZXN0X21hY2hvbGliIG9uIE9TIFggaWYgYQotICBjb3B5IG9mIGxpYnogZXhpc3RzIGluICRIT01FL2xpYiBvciAvdXNyL2xvY2FsL2xpYi4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzIxMjg1OiBSZWZhY3RvciBhbmQgZml4IGN1cnNlcyBjb25maWd1cmUgY2hlY2sgdG8gYWx3YXlzIHNlYXJjaAotICBpbiBhIG5jdXJzZXN3IGRpcmVjdG9yeS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyMDI1NTogVXBkYXRlIHRoZSBhYm91dCBhbmQgYnVncyBwYWdlcy4KLQotLSBJc3N1ZSAjMTg4NDA6IEludHJvZHVjZSB0aGUganNvbiBtb2R1bGUgaW4gdGhlIHR1dG9yaWFsLCBhbmQgZGUtZW1waGFzaXplCi0gIHRoZSBwaWNrbGUgbW9kdWxlLgotCi0tIElzc3VlICMxOTc5NTogSW1wcm92ZWQgbWFya3VwIG9mIFRydWUvRmFsc2UgY29uc3RhbnRzLgotCi1XaW5kb3dzCi0tLS0tLS0tCi0KLS0gSXNzdWUgIzIxMzAzLCAjMjA1NjU6IFVwZGF0ZWQgdGhlIHZlcnNpb24gb2YgVGNsL1RrIGluY2x1ZGVkIGluIHRoZQotICBpbnN0YWxsZXIgZnJvbSA4LjUuMiB0byA4LjUuMTUuCi0KLU1hYyBPUyBYCi0tLS0tLS0tLQotCi0tIEFzIG9mIDIuNy44LCB0aGUgMzItYml0LW9ubHkgaW5zdGFsbGVyIHdpbGwgc3VwcG9ydCBPUyBYIDEwLjUKLSAgYW5kIGxhdGVyIHN5c3RlbXMgYXMgaXMgY3VycmVudGx5IGRvbmUgZm9yIFB5dGhvbiAzLnggaW5zdGFsbGVycy4KLSAgRm9yIDIuNy43IG9ubHksIHdlIHdpbGwgcHJvdmlkZSB0aHJlZSBpbnN0YWxsZXJzOgotICB0aGUgbGVnYWN5IGRlcHJlY2F0ZWQgMTAuMysgMzItYml0LW9ubHkgZm9ybWF0OwotICB0aGUgbmV3ZXIgMTAuNSsgMzItYml0LW9ubHkgZm9ybWF0OwotICBhbmQgdGhlIHVuY2hhbmdlZCAxMC42KyA2NC0vMzItYml0IGZvcm1hdC4KLSAgQWx0aG91Z2ggYmluYXJ5IGluc3RhbGxlcnMgd2lsbCBubyBsb25nZXIgYmUgYXZhaWxhYmxlIGZyb20KLSAgcHl0aG9uLm9yZyBhcyBvZiAyLjcuOCwgaXQgd2lsbCBzdGlsbCBiZSBwb3NzaWJsZSB0byBidWlsZCBmcm9tCi0gIHNvdXJjZSBvbiAxMC4zLjkgYW5kIDEwLjQgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCi0gIFNlZSBNYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KLQotCi1XaGF0cycgTmV3IGluIFB5dGhvbiAyLjcuNj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDEzLTExLTEwKgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE5NDM1OiBGaXggZGlyZWN0b3J5IHRyYXZlcnNhbCBhdHRhY2sgb24gQ0dJSHR0cFJlcXVlc3RIYW5kbGVyLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzE5NDI2OiBGaXhlZCB0aGUgb3BlbmluZyBvZiBQeXRob24gc291cmNlIGZpbGUgd2l0aCBzcGVjaWZpZWQgZW5jb2RpbmcuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxOTQ1NzogRml4ZWQgeG1sY2hhcnJlZnJlcGxhY2UgdGVzdHMgb24gd2lkZSBidWlsZCB3aGVuIHRlc3RzIGFyZQotICBsb2FkZWQgZnJvbSAucHlbY29dIGZpbGVzLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTU2NjM6IFJldmVydCBPUyBYIGluc3RhbGxlciBidWlsdC1pbiBUY2wvVGsgc3VwcG9ydCBmb3IgMi43LjYuCi0gIFNvbWUgdGhpcmQtcGFydHkgcHJvamVjdHMsIHN1Y2ggYXMgTWF0cGxvdGxpYiBhbmQgUElML1BpbGxvdywKLSAgZGVwZW5kZWQgb24gYmVpbmcgYWJsZSB0byBidWlsZCB3aXRoIFRjbCBhbmQgVGsgZnJhbWV3b3JrcyBpbgotICAvTGlicmFyeS9GcmFtZXdvcmtzLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNy42IHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDEzLTEwLTI2KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTg2MDM6IEVuc3VyZSB0aGF0IFB5T1NfbXlzdHJpY21wIGFuZCBQeU9TX215c3RybmljbXAgYXJlIGluIHRoZQotICBQeXRob24gZXhlY3V0YWJsZSBhbmQgbm90IHJlbW92ZWQgYnkgdGhlIGxpbmtlcidzIG9wdGltaXplci4KLQotLSBJc3N1ZSAjMTkyNzk6IFVURi03IGRlY29kZXIgbm8gbW9yZSBwcm9kdWNlcyBpbGxlZ2FsIHVuaWNvZGUgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTg3Mzk6IEZpeCBhbiBpbmNvbnNpc3RlbmN5IGJldHdlZW4gbWF0aC5sb2cobikgYW5kIG1hdGgubG9nKGxvbmcobikpOwotICB0aGUgcmVzdWx0cyBjb3VsZCBiZSBvZmYgZnJvbSBvbmUgYW5vdGhlciBieSBhIHVscCBvciB0d28uCi0KLS0gSXNzdWUgIzEzNDYxOiBGaXggYSBjcmFzaCBpbiB0aGUgInJlcGxhY2UiIGVycm9yIGhhbmRsZXIgb24gNjQtYml0IHBsYXRmb3Jtcy4KLSAgUGF0Y2ggYnkgWW9nZXNoIENoYXVkaGFyaS4KLQotLSBJc3N1ZSAjMTU4NjY6IFRoZSB4bWxjaGFycmVmcmVwbGFjZSBlcnJvciBoYW5kbGVyIG5vIG1vcmUgcHJvZHVjZXMgdHdvIFhNTAotICBlbnRpdGllcyBmb3IgYSBub24tQk1QIGNoYXJhY3RlciBvbiBuYXJyb3cgYnVpbGQuCi0KLS0gSXNzdWUgIzE4MTg0OiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgpIGFuZCBQeVVuaWNvZGVfRnJvbUZvcm1hdFYoKSBub3cgcmFpc2UKLSAgT3ZlcmZsb3dFcnJvciB3aGVuIGFuIGFyZ3VtZW50IG9mICVjIGZvcm1hdCBpcyBvdXQgb2YgcmFuZ2UuCi0KLS0gSXNzdWUgIzE4MTM3OiBEZXRlY3QgaW50ZWdlciBvdmVyZmxvdyBvbiBwcmVjaXNpb24gaW4gZmxvYXQuX19mb3JtYXRfXygpCi0gIGFuZCBjb21wbGV4Ll9fZm9ybWF0X18oKS4KLQotLSBJc3N1ZSAjMTgwMzg6IFN5bnRheEVycm9yIHJhaXNlZCBkdXJpbmcgY29tcGlsYXRpb24gc291cmNlcyB3aXRoIGlsbGVnYWwKLSAgZW5jb2Rpbmcgbm93IGFsd2F5cyBjb250YWlucyBhbiBlbmNvZGluZyBuYW1lLgotCi0tIElzc3VlICMxODAxOTogRml4IGNyYXNoIGluIHRoZSByZXByIG9mIGRpY3Rpb25hcmllcyBjb250YWluaW5nIHRoZWlyIG93bgotICB2aWV3cy4KLQotLSBJc3N1ZSAjMTg0Mjc6IHN0ci5yZXBsYWNlIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlciB3aXRoIGh1Z2Ugc3RyaW5ncy4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMxOTM5MzogRml4IHN5bXRhYmxlLnN5bXRhYmxlIGZ1bmN0aW9uIHRvIG5vdCBiZSBjb25mdXNlZCB3aGVuIHRoZXJlIGFyZQotICBmdW5jdGlvbnMgb3IgY2xhc3NlcyBuYW1lZCAidG9wIi4KLQotLSBJc3N1ZSAjMTkzMjc6IEZpeGVkIHRoZSB3b3JraW5nIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2l0aCB0b28gYmlnIGNoYXJzZXQuCi0KLS0gSXNzdWUgIzE5MzUwOiBJbmNyZWFzaW5nIHRoZSB0ZXN0IGNvdmVyYWdlIG9mIG1hY3VybDJwYXRoLiBQYXRjaCBieSBDb2xpbgotICBXaWxsaWFtcy4KLQotLSBJc3N1ZSAjMTkzNTI6IEZpeCB1bml0dGVzdCBkaXNjb3Zlcnkgd2hlbiBhIG1vZHVsZSBjYW4gYmUgcmVhY2hlZAotICB0aHJvdWdoIHNldmVyYWwgcGF0aHMgKGUuZy4gdW5kZXIgRGViaWFuL1VidW50dSB3aXRoIHZpcnR1YWxlbnYpLgotCi0tIElzc3VlICMxNTIwNzogRml4IG1pbWV0eXBlcyB0byByZWFkIGZyb20gY29ycmVjdCBwYXJ0IG9mIFdpbmRvd3MgcmVnaXN0cnkKLSAgT3JpZ2luYWwgcGF0Y2ggYnkgRGF2ZSBDaGFtYmVycwotCi0tIElzc3VlICM4OTY0OiBmaXggcGxhdGZvcm0uX3N5c192ZXJzaW9uIHRvIGhhbmRsZSBJcm9uUHl0aG9uIDIuNisuCi0gIFBhdGNoIGJ5IE1hcnRpbiBNYXR1c2lhay4KLQotLSBJc3N1ZSAjMTYwMzg6IENWRS0yMDEzLTE3NTI6IGZ0cGxpYjogTGltaXQgYW1vdW50IG9mIGRhdGEgcmVhZCBieQotICBsaW1pdGluZyB0aGUgY2FsbCB0byByZWFkbGluZSgpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWljaGHFggotICBKYXN0cnrEmWJza2kgYW5kIEdpYW1wYW9sbyBSb2RvbGEuCi0KLS0gSXNzdWUgIzE5Mjc2OiBGaXhlZCB0aGUgd2F2ZSBtb2R1bGUgb24gNjQtYml0IGJpZy1lbmRpYW4gcGxhdGZvcm1zLgotCi0tIElzc3VlICMxODQ1ODogUHJldmVudCBjcmFzaGVzIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgbGliZWRpdC4gIEl0cyByZWFkbGluZQotICBlbXVsYXRpb24gaGFzIGNoYW5nZWQgZnJvbSAwLWJhc2VkIGluZGV4aW5nIHRvIDEtYmFzZWQgbGlrZSBnbnUgcmVhZGxpbmUuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFJvbmFsZCBPdXNzb3Jlbi4KLQotLSBJc3N1ZSAjMTg5MTk6IElmIHRoZSBjbG9zZSgpIG1ldGhvZCBvZiBhIHdyaXRlciBpbiB0aGUgc3VuYXUgb3Igd2F2ZSBtb2R1bGUKLSAgZmFpbGVkLCBzZWNvbmQgaW52b2NhdGlvbiBvZiBjbG9zZSgpIGFuZCBkZXN0cnVjdG9yIG5vIG1vcmUgcmFpc2UgYW4KLSAgZXhjZXB0aW9uLiAgU2Vjb25kIGludm9jYXRpb24gb2YgY2xvc2UoKSBvbiBzdW5hdSB3cml0ZXIgbm93IGhhcyBubyBlZmZlY3RzLgotICBUaGUgYWlmYyBtb2R1bGUgbm93IGFjY2VwdHMgbG93ZXIgY2FzZSBvZiBuYW1lcyBvZiB0aGUgJ3VsYXcnIGFuZCAnYWxhdycKLSAgY29kZWNzLgotCi0tIElzc3VlICMxOTEzMTogVGhlIGFpZmMgbW9kdWxlIG5vdyBjb3JyZWN0bHkgcmVhZHMgYW5kIHdyaXRlcyBzYW1wd2lkdGggb2YKLSAgY29tcHJlc3NlZCBzdHJlYW1zLgotCi0tIElzc3VlICMxOTE1ODogQSByYXJlIHJhY2UgaW4gQm91bmRlZFNlbWFwaG9yZSBjb3VsZCBhbGxvdyAucmVsZWFzZSgpIHRvbwotICBvZnRlbi4KLQotLSBJc3N1ZSAjMTgwMzc6IDJ0bzMgbm93IGVzY2FwZXMgJ1x1JyBhbmQgJ1xVJyBpbiBuYXRpdmUgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTkxMzc6IFRoZSBwcHJpbnQgbW9kdWxlIG5vdyBjb3JyZWN0bHkgZm9ybWF0cyBlbXB0eSBzZXQgYW5kIGZyb3plbnNldAotICBhbmQgaW5zdGFuY2VzIG9mIHNldCBhbmQgZnJvemVuc2V0IHN1YmNsYXNzZXMuCi0KLS0gSXNzdWUgIzE2MDQwOiBDVkUtMjAxMy0xNzUyOiBubnRwbGliOiBMaW1pdCBtYXhpbXVtIGxpbmUgbGVuZ3RocyB0byAyMDQ4IHRvCi0gIHByZXZlbnQgcmVhZGxpbmUoKSBjYWxscyBmcm9tIGNvbnN1bWluZyB0b28gbXVjaCBtZW1vcnkuICBQYXRjaCBieSBKeXJraQotICBQdWxsaWFpbmVuLgotCi0tIElzc3VlICMxMjY0MTogQXZvaWQgcGFzc2luZyAiLW1uby1jeWd3aW4iIHRvIHRoZSBtaW5ndzMyIGNvbXBpbGVyLCBleGNlcHQKLSAgd2hlbiBuZWNlc3NhcnkuICBQYXRjaCBieSBPc2NhciBCZW5qYW1pbi4KLQotLSBQcm9wZXJseSBpbml0aWFsaXplIGFsbCBmaWVsZHMgb2YgYSBTU0wgb2JqZWN0IGFmdGVyIGFsbG9jYXRpb24uCi0KLS0gSXNzdWUgIzQzNjY6IEZpeCBidWlsZGluZyBleHRlbnNpb25zIG9uIGFsbCBwbGF0Zm9ybXMgd2hlbiAtLWVuYWJsZS1zaGFyZWQKLSAgaXMgdXNlZC4KLQotLSBJc3N1ZSAjMTg5NTA6IEZpeCBtaXNjZWxsYW5lb3VzIGJ1Z3MgaW4gdGhlIHN1bmF1IG1vZHVsZS4KLSAgQXVfcmVhZC5yZWFkZnJhbWVzKCkgbm93IHVwZGF0ZXMgY3VycmVudCBmaWxlIHBvc2l0aW9uIGFuZCByZWFkcyBjb3JyZWN0Ci0gIG51bWJlciBvZiBmcmFtZXMgZnJvbSBtdWx0aWNoYW5uZWwgc3RyZWFtLiAgQXVfd3JpdGUud3JpdGVmcmFtZXNyYXcoKSBub3cKLSAgY29ycmVjdGx5IHVwZGF0ZXMgY3VycmVudCBmaWxlIHBvc2l0aW9uLiAgQXVfcmVhZCBhbmQgQXVfd3JpdGUgbm93IGNvcnJlY3RseQotICB3b3JrIHdpdGggZmlsZSBvYmplY3QgaWYgc3RhcnQgZmlsZSBwb3NpdGlvbiBpcyBub3QgYSB6ZXJvLgotCi0tIElzc3VlICMxODA1MDogRml4ZWQgYW4gaW5jb21wYXRpYmlsaXR5IG9mIHRoZSByZSBtb2R1bGUgd2l0aCBQeXRob24gMi43LjMKLSAgYW5kIG9sZGVyIGJpbmFyaWVzLgotCi0tIElzc3VlICMxOTAzNzogVGhlIG1haWxib3ggbW9kdWxlIG5vdyBtYWtlcyBhbGwgY2hhbmdlcyB0byBtYWlsZGlyIGZpbGVzCi0gIGJlZm9yZSBtb3ZpbmcgdGhlbSBpbnRvIHBsYWNlLCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2l0aCBvdGhlciBwcm9ncmFtcwotICB0aGF0IG1heSBiZSBhY2Nlc3NpbmcgdGhlIG1haWxkaXIgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxNDk4NDogT24gUE9TSVggc3lzdGVtcywgd2hlbiBuZXRyYyBpcyBjYWxsZWQgd2l0aG91dCBhIGZpbGVuYW1lCi0gIGFyZ3VtZW50IChhbmQgdGhlcmVmb3JlIGlzIHJlYWRpbmcgdGhlIHVzZXIncyAkSE9NRS8ubmV0cmMgZmlsZSksIGl0IG5vdwotICBlbmZvcmNlcyB0aGUgc2FtZSBzZWN1cml0eSBydWxlcyBhcyB0eXBpY2FsIGZ0cCBjbGllbnRzOiB0aGUgLm5ldHJjIGZpbGUgbXVzdAotICBiZSBvd25lZCBieSB0aGUgdXNlciB0aGF0IG93bnMgdGhlIHByb2Nlc3MgYW5kIG11c3Qgbm90IGJlIHJlYWRhYmxlIGJ5IGFueQotICBvdGhlciB1c2VyLgotCi0tIElzc3VlICMxNzMyNDogRml4IGh0dHAuc2VydmVyJ3MgcmVxdWVzdCBoYW5kbGluZyBjYXNlIG9uIHRyYWlsaW5nICcvJy4gUGF0Y2gKLSAgY29udHJpYnV0ZWQgYnkgVmFqcmFza3kgS29rLgotCi0tIElzc3VlICMxOTAxODogVGhlIGhlYXBxLm1lcmdlKCkgZnVuY3Rpb24gbm8gbG9uZ2VyIHN1cHByZXNzZXMgSW5kZXhFcnJvcgotICBpbiB0aGUgdW5kZXJseWluZyBpdGVyYWJsZXMuCi0KLS0gSXNzdWUgIzE4Nzg0OiBUaGUgdXVpZCBtb2R1bGUgbm8gbW9yZSBhdHRlbXB0cyB0byBsb2FkIGxpYmMgdmlhIGN0eXBlcy5DRExMLAotICBpZiBhbGwgbmVjZXNzYXJ5IGZ1bmN0aW9ucyBhcmUgYWxyZWFkeSBmb3VuZCBpbiBsaWJ1dWlkLgotICBQYXRjaCBieSBFdmdlbnkgU29sb2d1Ym92LgotCi0tIElzc3VlICMxNDk3MTogdW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgbm8gbG9uZ2VyIGdldHMgY29uZnVzZWQgd2hlbiBhIGZ1bmN0aW9uCi0gIGhhcyBhIGRpZmZlcmVudCBfX25hbWVfXyB0aGFuIGl0cyBuYW1lIGluIHRoZSBUZXN0Q2FzZSBjbGFzcyBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICMxODY3MjogRml4ZWQgZm9ybWF0IHNwZWNpZmllcnMgZm9yIFB5X3NzaXplX3QgaW4gZGVidWdnaW5nIG91dHB1dCBpbgotICB0aGUgX3NyZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzE4ODMwOiBpbnNwZWN0LmdldGNsYXNzdHJlZSgpIG5vIG1vcmUgcHJvZHVjZXMgZHVwbGljYXRlZCBlbnRyaWVzIGV2ZW4KLSAgd2hlbiBpbnB1dCBsaXN0IGNvbnRhaW5zIGR1cGxpY2F0ZXMuCi0KLS0gSXNzdWUgIzE4OTA5OiBGaXggX3RraW50ZXIudGthcHAuaW50ZXJwYWRkcigpIG9uIFdpbmRvd3MgNjQtYml0LCBkb24ndCBjYXN0Ci0gIDY0LWJpdCBwb2ludGVyIHRvIGxvbmcgKDMyIGJpdHMpLgotCi0tIElzc3VlICMxODg3NjogVGhlIEZpbGVJTy5tb2RlIGF0dHJpYnV0ZSBub3cgYmV0dGVyIHJlZmxlY3RzIHRoZSBhY3R1YWwgbW9kZQotICB1bmRlciB3aGljaCB0aGUgZmlsZSB3YXMgb3BlbmVkLiAgUGF0Y2ggYnkgRXJpayBCcmF5LgotCi0tIElzc3VlICMxODg1MTogQXZvaWQgYSBkb3VibGUgY2xvc2Ugb2Ygc3VicHJvY2VzcyBwaXBlcyB3aGVuIHRoZSBjaGlsZAotICBwcm9jZXNzIGZhaWxzIHN0YXJ0aW5nLgotCi0tIElzc3VlICMxODQxODogQWZ0ZXIgZm9yaygpLCByZWluaXQgYWxsIHRocmVhZHMgc3RhdGVzLCBub3Qgb25seSBhY3RpdmUgb25lcy4KLSAgUGF0Y2ggYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuCi0KLS0gSXNzdWUgIzExOTczOiBGaXggYSBwcm9ibGVtIGluIGtldmVudC4gVGhlIGZsYWdzIGFuZCBmZmxhZ3MgZmllbGRzIGFyZSBub3cKLSAgcHJvcGVybHkgaGFuZGxlZCBhcyB1bnNpZ25lZC4KLQotLSBJc3N1ZSAjMTY4MDk6IEZpeGVkIHNvbWUgdGtpbnRlciBpbmNvbXBhYmlsaXRpZXMgd2l0aCBUY2wvVGsgOC42LgotCi0tIElzc3VlICMxNjgwOTogVGtpbnRlcidzIHNwbGl0bGlzdCgpIGFuZCBzcGxpdCgpIG1ldGhvZHMgbm93IGFjY2VwdCBUY2xfT2JqCi0gIGFyZ3VtZW50LgotCi0tIElzc3VlICMxNzExOTogRml4ZWQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBwcm9jZXNzaW5nIGxhcmdlIFVuaWNvZGUgc3RyaW5ncwotICBhbmQgdHVwbGVzIGluIHRoZSB0a2ludGVyIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTUyMzM6IFB5dGhvbiBub3cgZ3VhcmFudGVlcyB0aGF0IGNhbGxhYmxlcyByZWdpc3RlcmVkIHdpdGggdGhlIGF0ZXhpdAotICBtb2R1bGUgd2lsbCBiZSBjYWxsZWQgaW4gYSBkZXRlcm1pbmlzdGljIG9yZGVyLgotCi0tIElzc3VlICMxODc0NzogUmUtc2VlZCBPcGVuU1NMJ3MgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGFmdGVyIGZvcmsuCi0gIEEgcHRocmVhZF9hdGZvcmsoKSBwYXJlbnQgaGFuZGxlciBpcyB1c2VkIHRvIHNlZWQgdGhlIFBSTkcgd2l0aCBwaWQsIHRpbWUKLSAgYW5kIHNvbWUgc3RhY2sgZGF0YS4KLQotLSBJc3N1ZSAjODg2NTogQ29uY3VycmVudCBpbnZvY2F0aW9uIG9mIHNlbGVjdC5wb2xsLnBvbGwoKSBub3cgcmFpc2VzIGEKLSAgUnVudGltZUVycm9yIGV4Y2VwdGlvbi4gIFBhdGNoIGJ5IENocmlzdGlhbiBTY2h1YmVydC4KLQotLSBJc3N1ZSAjMTM0NjE6IEZpeCBhIGNyYXNoIGluIHRoZSBUZXh0SU9XcmFwcGVyLnRlbGwgbWV0aG9kIG9uIDY0LWJpdAotICBwbGF0Zm9ybXMuICBQYXRjaCBieSBZb2dlc2ggQ2hhdWRoYXJpLgotCi0tIElzc3VlICMxODc3NzogVGhlIHNzbCBtb2R1bGUgbm93IHVzZXMgdGhlIG5ldyBDUllQVE9fVEhSRUFESUQgQVBJIG9mCi0gIE9wZW5TU0wgMS4wLjArIGluc3RlYWQgb2YgdGhlIGRlcHJlY2F0ZWQgQ1JZUFRPIGlkIGNhbGxiYWNrIGZ1bmN0aW9uLgotCi0tIElzc3VlICMxODc2ODogQ29ycmVjdCBkb2Mgc3RyaW5nIG9mIFJBTkRfZWRnKCkuIFBhdGNoIGJ5IFZhanJhc2t5IEtvay4KLQotLSBJc3N1ZSAjMTgxNzg6IEZpeCBjdHlwZXMgb24gQlNELiBkbG1hbGxvYy5jIHdhcyBjb21waWxlZCB0d2ljZSB3aGljaCBicm9rZQotICBtYWxsb2Mgd2VhayBzeW1ib2xzLgotCi0tIElzc3VlICMxODcwOTogRml4IENWRS0yMDEzLTQyMzguIFRoZSBTU0wgbW9kdWxlIG5vdyBoYW5kbGVzIE5VTEwgYnl0ZXMKLSAgaW5zaWRlIHN1YmplY3RBbHROYW1lIGNvcnJlY3RseS4gRm9ybWVybHkgdGhlIG1vZHVsZSBoYXMgdXNlZCBPcGVuU1NMJ3MKLSAgR0VORVJBTF9OQU1FX3ByaW50KCkgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgQVNOLjEKLSAgc3RyaW5ncyBmb3IgYGByZmM4MjJOYW1lYGAgKGVtYWlsKSwgYGBkTlNOYW1lYGAgKEROUykgYW5kCi0gIGBgdW5pZm9ybVJlc291cmNlSWRlbnRpZmllcmBgIChVUkkpLgotCi0tIElzc3VlICMxODc1NjogSW1wcm92ZSBlcnJvciByZXBvcnRpbmcgaW4gb3MudXJhbmRvbSgpIHdoZW4gdGhlIGZhaWx1cmUKLSAgaXMgZHVlIHRvIHNvbWV0aGluZyBlbHNlIHRoYW4gL2Rldi91cmFuZG9tIG5vdCBleGlzdGluZyAoZm9yIGV4YW1wbGUsCi0gIGV4aGF1c3RpbmcgdGhlIGZpbGUgZGVzY3JpcHRvciBsaW1pdCkuCi0KLS0gRml4IHRraW50ZXIgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IHRoZSBzZWN1cml0eSBmaXggaW4gaXNzdWUgIzE2MjQ4LgotCi0tIElzc3VlICMxODY3NjogQ2hhbmdlICdwb3NpdGl2ZScgdG8gJ25vbi1uZWdhdGl2ZScgaW4gcXVldWUucHkgcHV0IGFuZCBnZXQKLSAgZG9jc3RyaW5ncyBhbmQgVmFsdWVFcnJvciBtZXNzYWdlcy4gUGF0Y2ggYnkgWmhvbmd5dWUgTHVvCi0KLS0gSXNzdWUgIzE3OTk4OiBGaXggYW4gaW50ZXJuYWwgZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uIGVuZ2luZS4KLQotLSBJc3N1ZSAjMTc1NTc6IEZpeCBvcy5nZXRncm91cHMoKSB0byB3b3JrIHdpdGggdGhlIG1vZGlmaWVkIGJlaGF2aW9yIG9mCi0gIGdldGdyb3VwcygyKSBvbiBPUyBYIDEwLjguICBPcmlnaW5hbCBwYXRjaCBieSBNYXRldXN6IExlbmlrLgotCi0tIElzc3VlICMxODQ1NTogbXVsdGlwcm9jZXNzaW5nIHNob3VsZCBub3QgcmV0cnkgY29ubmVjdCgpIHdpdGggc2FtZSBzb2NrZXQuCi0KLS0gSXNzdWUgIzE4NTEzOiBGaXggYmVoYXZpb3VyIG9mIGNtYXRoLnJlY3Qgdy5yLnQuIHNpZ25lZCB6ZXJvcyBvbiBPUyBYIDEwLjggKwotICBnY2MuCi0KLS0gSXNzdWUgIzE4MTAxOiBUY2wuc3BsaXQoKSBub3cgcHJvY2VzcyBVbmljb2RlIHN0cmluZ3MgbmVzdGVkIGluIGEgdHVwbGUgYXMgaXQKLSAgZG8gd2l0aCBieXRlIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE4MzQ3OiBFbGVtZW50VHJlZSdzIGh0bWwgc2VyaWFsaXplciBub3cgcHJlc2VydmVzIHRoZSBjYXNlIG9mCi0gIGNsb3NpbmcgdGFncy4KLQotLSBJc3N1ZSAjMTcyNjE6IEVuc3VyZSBtdWx0aXByb2Nlc3NpbmcncyBwcm94aWVzIHVzZSBwcm9wZXIgYWRkcmVzcy4KLQotLSBJc3N1ZSAjMTcwOTc6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGlnbm9yZSBFSU5UUi4KLQotLSBJc3N1ZSAjMTgxNTU6IFRoZSBjc3YgbW9kdWxlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBjc3YgZmlsZXMgdGhhdCB1c2UKLSAgYSBkZWxpbWl0ZXIgY2hhcmFjdGVyIHRoYXQgaGFzIGEgc3BlY2lhbCBtZWFuaW5nIGluIHJlZ2V4ZXMsIGluc3RlYWQgb2YKLSAgdGhyb3dpbmcgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICMxODEzNTogc3NsLlNTTFNvY2tldC53cml0ZSgpIG5vdyByYWlzZXMgYW4gT3ZlcmZsb3dFcnJvciBpZiB0aGUgaW5wdXQKLSAgc3RyaW5nIGluIGxvbmdlciB0aGFuIDIgZ2lnYWJ5dGVzLiBUaGUgc3NsIG1vZHVsZSBkb2VzIG5vdCBzdXBwb3J0IHBhcnRpYWwKLSAgd3JpdGUuCi0KLS0gSXNzdWUgIzE4MTY3OiBjZ2kuRmllbGRTdG9yYWdlIG5vIGxvbmdlciBmYWlscyB0byBoYW5kbGUgbXVsdGlwYXJ0L2Zvcm0tZGF0YQotICB3aGVuIFxyXG4gYXBwZWFycyBhdCBlbmQgb2YgNjU1MzUgYnl0ZXMgd2l0aG91dCBvdGhlciBuZXdsaW5lcy4KLQotLSBJc3N1ZSAjMTc0MDM6IHVybGxpYi5wYXJzZS5yb2JvdHBhcnNlciBub3JtYWxpemVzIHRoZSB1cmxzIGJlZm9yZSBhZGRpbmcgdG8KLSAgcnVsZWxpbmUuIFRoaXMgaGVscHMgaW4gaGFuZGxpbmcgY2VydGFpbiB0eXBlcyBpbnZhbGlkIHVybHMgaW4gYSBjb25zZXJ2YXRpdmUKLSAgbWFubmVyLiBQYXRjaCBjb250cmlidXRlZCBieSBNaGVyIE1vdnNpc3lhbi4KLQotLSBJbXBsZW1lbnQgaW5lcXVhbGl0eSBvbiB3ZWFrcmVmLldlYWtTZXQuCi0KLS0gSXNzdWUgIzE3OTgxOiBDbG9zZWQgc29ja2V0IG9uIGVycm9yIGluIFN5c0xvZ0hhbmRsZXIuCi0KLS0gSXNzdWUgIzE4MDE1OiBGaXggdW5waWNrbGluZyBvZiAyLjcuMyBhbmQgMi43LjQgbmFtZWR0dXBsZXMuCi0KLS0gSXNzdWUgIzE3NzU0OiBNYWtlIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpIGluZGVwZW5kZW50IG9mIHRoZSBsb2NhbGUuCi0KLS0gRml4IHR5cG9zIGluIHRoZSBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlLgotCi0tIElzc3VlICMxNzI2OTogV29ya2Fyb3VuZCBmb3Igc29ja2V0LmdldGFkZHJpbmZvIGNyYXNoIG9uIE1hY09TIFgKLSAgd2l0aCBwb3J0IE5vbmUgb3IgIjAiIGFuZCBmbGFncyBBSV9OVU1FUklDU0VSVi4KLQotLSBJc3N1ZSAjMTgwODA6IFdoZW4gYnVpbGRpbmcgYSBDIGV4dGVuc2lvbiBtb2R1bGUgb24gT1MgWCwgaWYgdGhlIGNvbXBpbGVyCi0gIGlzIG92ZXJyaWRkZW4gd2l0aCB0aGUgQ0MgZW52aXJvbm1lbnQgdmFyaWFibGUsIHVzZSB0aGUgbmV3IGNvbXBpbGVyIGFzCi0gIHRoZSBkZWZhdWx0IGZvciBsaW5raW5nIGlmIExEU0hBUkVEIGlzIG5vdCBhbHNvIG92ZXJyaWRkZW4uICBUaGlzIHJlc3RvcmVzCi0gIERpc3R1dGlscyBiZWhhdmlvciBpbnRyb2R1Y2VkIGluIDIuNy4zIGFuZCBpbmFkdmVydGVudGx5IGRyb3BwZWQgaW4gMi43LjQuCi0KLS0gSXNzdWUgIzE4MDcxOiBDIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG9uIE9TIFggY291bGQgZmFpbCB3aXRoIFR5cGVFcnJvcgotICBpZiB0aGUgWGNvZGUgY29tbWFuZCBsaW5lIHRvb2xzIHdlcmUgbm90IGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjMTgxMTM6IEZpeGVkIGEgcmVmY291bnQgbGVhayBpbiB0aGUgY3Vyc2VzLnBhbmVsIG1vZHVsZSdzCi0gIHNldF91c2VycHRyKCkgbWV0aG9kLiAgUmVwb3J0ZWQgYnkgQXRzdW8gSXNoaW1vdG8uCi0KLS0gSXNzdWUgIzE4ODQ5OiBGaXhlZCBhIFdpbmRvd3Mtc3BlY2lmaWMgdGVtcGZpbGUgYnVnIHdoZXJlIGNvbGxpc2lvbiB3aXRoIGFuCi0gIGV4aXN0aW5nIGRpcmVjdG9yeSBjYXVzZWQgbWtzdGVtcCBhbmQgcmVsYXRlZCBBUElzIHRvIGZhaWwgaW5zdGVhZCBvZgotICByZXRyeWluZy4gUmVwb3J0IGFuZCBmaXggYnkgVmxhZCBTaGNoZXJiaW5hLgotCi0tIElzc3VlICMxOTQwMDogUHJldmVudCBleHRlbnNpb24gbW9kdWxlIGJ1aWxkIGZhaWx1cmVzIHdpdGggWGNvZGUgNSBvbiBPUyBYCi0gIDEwLjgrIHdoZW4gdXNpbmcgYSB1bml2ZXJzYWwgUHl0aG9uIHRoYXQgaW5jbHVkZWQgYSBQUEMgYXJjaGl0ZWN0dXJlLAotICBzdWNoIGFzIHdpdGggYSBweXRob24ub3JnIDMyLWJpdC1vbmx5IGJpbmFyeSBpbnN0YWxsZXIuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxODg3MzogMnRvMyBhbmQgdGhlIGZpbmRub2NvZGluZy5weSBzY3JpcHQgbm93IGRldGVjdCBQeXRob24gc291cmNlCi0gIGNvZGUgZW5jb2Rpbmcgb25seSBpbiBjb21tZW50IGxpbmVzLgotCi0tIElzc3VlICMxODgxNzogRml4IGEgcmVzb3VyY2Ugd2FybmluZyBpbiBMaWIvYWlmYy5weSBkZW1vLgotCi0tIElzc3VlICMxODQzOTogTWFrZSBwYXRjaGNoZWNrIHdvcmsgb24gV2luZG93cyBmb3IgQUNLUywgTkVXUy4KLQotLSBJc3N1ZSAjMTg0NDg6IEZpeCBhIHR5cG8gaW4gRGVtby9uZXdtZXRhY2xhc3Nlcy9FaWZmZWwucHkuCi0KLS0gSXNzdWUgIzEyOTkwOiBUaGUgIlB5dGhvbiBMYXVuY2hlciIgb24gT1NYIGNvdWxkIG5vdCBsYXVuY2ggcHl0aG9uIHNjcmlwdHMKLSAgdGhhdCBoYXZlIHBhdGhzIHRoYXQgaW5jbHVkZSB3aWRlIGNoYXJhY3RlcnMuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxNjA2NzogQWRkIGRlc2NyaXB0aW9uIGludG8gTVNJIGZpbGUgdG8gcmVwbGFjZSBpbnN0YWxsZXIncyB0ZW1wb3JhcnkgbmFtZS4KLQotLSBJc3N1ZSAjMTgyNTY6IENvbXBpbGF0aW9uIGZpeCBmb3IgcmVjZW50IEFJWCByZWxlYXNlcy4gIFBhdGNoIGJ5Ci0gIERhdmlkIEVkZWxzb2huLgotCi0tIElzc3VlICMxODA5ODogVGhlIGRlcHJlY2F0ZWQgT1MgWCBCdWlsZCBBcHBsZXQuYXBwIGZhaWxzIHRvIGJ1aWxkIG9uCi0gIE9TIFggMTAuOCBzeXN0ZW1zIGJlY2F1c2UgdGhlIEFwcGxlLWRlcHJlY2F0ZWQgUXVpY2tEcmF3IGhlYWRlcnMgaGF2ZQotICBiZWVuIHJlbW92ZWQgZnJvbSBYY29kZSA0LiAgU2tpcCBidWlsZGluZyBpdCBpbiB0aGlzIGNhc2UuCi0KLS0gSXNzdWUgIzE1ODQ6IFByb3ZpZGUgb3B0aW9ucyB0byBvdmVycmlkZSBkZWZhdWx0IHNlYXJjaCBwYXRocyBmb3IKLSAgVGNsIGFuZCBUayB3aGVuIGJ1aWxkaW5nIF90a2ludGVyLgotCi0tIElzc3VlICMxNTY2MzogVGNsL1RrIDguNS4xNSBpcyBub3cgaW5jbHVkZWQgd2l0aCB0aGUgT1MgWCAxMC42KwotICA2NC1iaXQvMzItYml0IGluc3RhbGxlciBmb3IgMTAuNisuICBJdCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5Ci0gIHRvIGluc3RhbGwgYSB0aGlyZC1wYXJ0eSB2ZXJzaW9uIG9mIFRjbC9UayA4LjUgdG8gd29yayBhcm91bmQgdGhlCi0gIHByb2JsZW1zIGluIHRoZSBBcHBsZS1zdXBwbGllZCBUY2wvVGsgOC41IHNoaXBwZWQgaW4gT1MgWCAxMC42Ci0gIGFuZCBsYXRlciByZWxlYXNlcy4KLQotLSBJc3N1ZSAjMTkwMTk6IENoYW5nZSB0aGUgT1MgWCBpbnN0YWxsZXIgYnVpbGQgc2NyaXB0IHRvIHVzZSBDRkxBR1MgaW5zdGVhZAotICBvZiBPUFQgZm9yIHNwZWNpYWwgYnVpbGQgb3B0aW9ucy4gIEJ5IHNldHRpbmcgT1BULCBzb21lIGNvbXBpbGVyLXNwZWNpZmljCi0gIG9wdGlvbnMgbGlrZSAtZndyYXB2IHdlcmUgb3ZlcnJpZGRlbiBhbmQgdGh1cyBub3QgdXNlZCwgd2hpY2ggY291bGQgcmVzdWx0Ci0gIGluIGJyb2tlbiBpbnRlcnByZXRlcnMgd2hlbiBidWlsZGluZyB3aXRoIGNsYW5nLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzE4ODczOiBJRExFIG5vdyBkZXRlY3RzIFB5dGhvbiBzb3VyY2UgY29kZSBlbmNvZGluZyBvbmx5IGluIGNvbW1lbnQKLSAgbGluZXMuCi0KLS0gSXNzdWUgIzE4OTg4OiBUaGUgIlRhYiIga2V5IG5vdyB3b3JrcyB3aGVuIGEgd29yZCBpcyBhbHJlYWR5IGF1dG9jb21wbGV0ZWQuCi0KLS0gSXNzdWUgIzE4NDg5OiBBZGQgdGVzdHMgZm9yIFNlYXJjaEVuZ2luZS4gT3JpZ2luYWwgcGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgotCi0tIElzc3VlICMxODQyOTogRm9ybWF0IC8gRm9ybWF0IFBhcmFncmFwaCwgbm93IHdvcmtzIHdoZW4gY29tbWVudCBibG9ja3MKLSAgYXJlIHNlbGVjdGVkLiBBcyB3aXRoIHRleHQgYmxvY2tzLCB0aGlzIHdvcmtzIGJlc3Qgd2hlbiB0aGUgc2VsZWN0aW9uCi0gIG9ubHkgaW5jbHVkZXMgY29tcGxldGUgbGluZXMuCi0KLS0gSXNzdWUgIzE4MjI2OiBBZGQgZG9jc3RyaW5ncyBhbmQgdW5pdHRlc3RzIGZvciBGb3JtYXRQYXJhZ3JhcGgucHkuCi0gIE9yaWdpbmFsIHBhdGNoZXMgYnkgVG9kZCBSb3ZpdG8gYW5kIFBoaWwgV2Vic3Rlci4KLQotLSBJc3N1ZSAjMTgyNzk6IEZvcm1hdCAtIFN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2Ugbm8gbG9uZ2VyIG1hcmtzIGEgZmlsZSBhcwotICBjaGFuZ2VkIHdoZW4gaXQgaGFzIG5vdCBiZWVuIGNoYW5nZWQuIFRoaXMgZml4IGZvbGxvd2VkIHRoZSBhZGRpdGlvbiBvZiBhCi0gIHRlc3QgZmlsZSBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGhpbCBXZWJzdGVyICh0aGUgaXNzdWUncyBtYWluIGdvYWwpLgotCi0tIElzc3VlICMxODUzOTogQ2FsbHRpcHMgbm93IHdvcmsgZm9yIGZsb2F0IGRlZmF1bHQgYXJndW1lbnRzLgotCi0tIElzc3VlICM3MTM2OiBJbiB0aGUgSWRsZSBGaWxlIG1lbnUsICJOZXcgV2luZG93IiBpcyByZW5hbWVkICJOZXcgRmlsZSIuCi0gIFBhdGNoIGJ5IFRhbCBFaW5hdCwgUm9nZXQgU2Vyd3ksIGFuZCBUb2RkIFJvdml0by4KLQotLSBJc3N1ZSAjODUxNTogU2V0IF9fZmlsZV9fIHdoZW4gcnVuIGZpbGUgaW4gSURMRS4KLSAgSW5pdGlhbCBwYXRjaCBieSBCcnVjZSBGcmVkZXJpa3Nlbi4KLQotLSBJc3N1ZSAjNTQ5MjogQXZvaWQgdHJhY2ViYWNrIHdoZW4gZXhpdGluZyBJRExFIGNhdXNlZCBieSBhIHJhY2UgY29uZGl0aW9uLgotCi0tIElzc3VlICMxNzUxMTogS2VlcCBJRExFIGZpbmQgZGlhbG9nIG9wZW4gYWZ0ZXIgY2xpY2tpbmcgIkZpbmQgTmV4dCIuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhcmFoIEsuCi0KLS0gSXNzdWUgIzE1MzkyOiBDcmVhdGUgYSB1bml0dGVzdCBmcmFtZXdvcmsgZm9yIElETEUuCi0gIFByZWxpbWluYXJ5IHBhdGNoIGJ5IFJhamFnb3BhbGFzYXJtYSBKYXlha3Jpc2huYW4KLSAgU2VlIExpYi9pZGxlbGliL2lkbGVfdGVzdC9SRUFETUUudHh0IGZvciBob3cgdG8gcnVuIElkbGUgdGVzdHMuCi0KLS0gSXNzdWUgIzE0MTQ2OiBIaWdobGlnaHQgc291cmNlIGxpbmUgd2hpbGUgZGVidWdnaW5nIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE3NTMyOiBBbHdheXMgaW5jbHVkZSBPcHRpb25zIG1lbnUgZm9yIElETEUgb24gT1MgWC4KLSAgUGF0Y2ggYnkgR3VpbGhlcm1lIFNpbcO1ZXMuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxODkxOTogQWRkZWQgdGVzdHMgZm9yIHRoZSBzdW5hdSBtb2R1bGUuICBVbmlmaWVkIGFuZCBleHRlbmRlZCB0ZXN0cwotICBmb3IgYXVkaW8gbW9kdWxlczogYWlmYywgc3VuYXUgYW5kIHdhdmUuCi0KLS0gSXNzdWUgIzE4NzkyOiBVc2UgIjEyNy4wLjAuMSIgb3IgIjo6MSIgaW5zdGVhZCBvZiAibG9jYWxob3N0IiBhcyBtdWNoIGFzCi0gIHBvc3NpYmxlLCBzaW5jZSAibG9jYWxob3N0IiBnb2VzIHRocm91Z2ggYSBETlMgbG9va3VwIHVuZGVyIHJlY2VudCBXaW5kb3dzCi0gIHZlcnNpb25zLgotCi0tIElzc3VlICMxODM1NzogYWRkIHRlc3RzIGZvciBkaWN0dmlldyBzZXQgZGlmZmVyZW5jZS4KLSAgUGF0Y2ggYnkgRnJhc2VyIFR3ZWVkYWxlLgotCi0tIElzc3VlICMxMTE4NTogRml4IHRlc3Rfd2FpdDQgdW5kZXIgQUlYLiAgUGF0Y2ggYnkgU8OpYmFzdGllbiBTYWJsw6kuCi0KLS0gSXNzdWUgIzE4MDk0OiB0ZXN0X3V1aWQgbm8gbW9yZSByZXBvcnRzIHNraXBwZWQgdGVzdHMgYXMgcGFzc2VkLgotCi0tIElzc3VlICMxMTk5NTogdGVzdF9weWRvYyBkb2Vzbid0IGltcG9ydCBhbGwgc3lzLnBhdGggbW9kdWxlcyBhbnltb3JlLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE4NzU4OiBGaXhlZCBhbmQgaW1wcm92ZWQgY3Jvc3MtcmVmZXJlbmNlcy4KLQotLSBJc3N1ZSAjMTg3MTg6IGRhdGV0aW1lIGRvY3VtZW50YXRpb24gY29udHJhZGljdG9yeSBvbiBsZWFwIHNlY29uZCBzdXBwb3J0LgotCi0tIElzc3VlICMxNzcwMTogSW1wcm92aW5nIHN0cmZ0aW1lIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE3ODQ0OiBSZWZhY3RvciBhIGRvY3VtZW50YXRpb24gb2YgUHl0aG9uIHNwZWNpZmljIGVuY29kaW5ncy4KLSAgQWRkIGxpbmtzIHRvIGVuY29kZXJzIGFuZCBkZWNvZGVycyBmb3IgYmluYXJ5LXRvLWJpbmFyeSBjb2RlY3MuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi43LjU/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAxMy0wNS0xMioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1NTM1OiBGaXhlZCByZWdyZXNzaW9uIGluIHRoZSBwaWNrbGluZyBvZiBuYW1lZCB0dXBsZXMgYnkKLSAgcmVtb3ZpbmcgdGhlIF9fZGljdF9fIHByb3BlcnR5IGludHJvZHVjZWQgaW4gMi43LjQuCi0KLS0gSXNzdWUgIzE3ODU3OiBQcmV2ZW50IGJ1aWxkIGZhaWx1cmVzIHdpdGggcHJlLTMuNS4wIHZlcnNpb25zIG9mIHNxbGl0ZTMsCi0gIHN1Y2ggYXMgd2FzIHNoaXBwZWQgd2l0aCBDZW50b3MgNSBhbmQgTWFjIE9TIFggMTAuNC4KLQotLSBJc3N1ZSAjMTc3MDM6IEZpeCBhIHJlZ3Jlc3Npb24gd2hlcmUgYW4gaWxsZWdhbCB1c2Ugb2YgUHlfREVDUkVGKCkgYWZ0ZXIKLSAgaW50ZXJwcmV0ZXIgZmluYWxpemF0aW9uIGNhbiBjYXVzZSBhIGNyYXNoLgotCi0tIElzc3VlICMxNjQ0NzogRml4ZWQgcG90ZW50aWFsIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHNldHRpbmcgX19uYW1lX18gb24gYQotICBjbGFzcy4KLQotLSBJc3N1ZSAjMTc2MTA6IERvbid0IHJlbHkgb24gbm9uLXN0YW5kYXJkIGJlaGF2aW9yIG9mIHRoZSBDIHFzb3J0KCkgZnVuY3Rpb24uCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTc5Nzk6IEZpeGVkIHRoZSByZSBtb2R1bGUgaW4gYnVpbGQgd2l0aCAtLWRpc2FibGUtdW5pY29kZS4KLQotLSBJc3N1ZSAjMTc2MDY6IEZpeGVkIHN1cHBvcnQgb2YgZW5jb2RlZCBieXRlIHN0cmluZ3MgaW4gdGhlIFhNTEdlbmVyYXRvcgotIC5jaGFyYWN0ZXJzKCkgYW5kIGlnbm9yYWJsZVdoaXRlc3BhY2UoKSBtZXRob2RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgU2ViYXN0aWFuCi0gIE9ydGl6IFZhc3F1ZXouCi0KLS0gSXNzdWUgIzE2NjAxOiBSZXN0YXJ0aW5nIGl0ZXJhdGlvbiBvdmVyIHRhcmZpbGUgbm8gbW9yZSBjb250aW51ZXMgZnJvbSB3aGVyZQotICBpdCBsZWZ0IG9mZi4gIFBhdGNoIGJ5IE1pY2hhZWwgQmlydHdlbGwuCi0KLS0gSXNzdWUgIzE2NTg0OiBpbiBmaWxlY29tcC5fY21wLCBjYXRjaCBJT0Vycm9yIGFzIHdlbGwgYXMgb3MuZXJyb3IuCi0gIFBhdGNoIGJ5IFRpbGwgTWFhcy4KLQotLSBJc3N1ZSAjMTc5MjY6IEZpeCBkYm0uX19jb250YWluc19fIG9uIDY0LWJpdCBiaWctZW5kaWFuIG1hY2hpbmVzLgotCi0tIElzc3VlICMxOTI2NzogRml4IHN1cHBvcnQgb2YgbXVsdGlieXRlIGVuY29kaW5nIChleDogVVRGLTE2KSBpbiB0aGUgbG9nZ2luZwotICBtb2R1bGUuCi0KLS0gSXNzdWUgIzE3OTE4OiBXaGVuIHVzaW5nIFNTTFNvY2tldC5hY2NlcHQoKSwgaWYgdGhlIFNTTCBoYW5kc2hha2UgZmFpbGVkCi0gIG9uIHRoZSBuZXcgc29ja2V0LCB0aGUgc29ja2V0IHdvdWxkIGxpbmdlciBpbmRlZmluaXRlbHkuICBUaGFua3MgdG8KLSAgUGV0ZXIgU2F2ZWxpZXYgZm9yIHJlcG9ydGluZy4KLQotLSBJc3N1ZSAjMTcyODk6IFRoZSByZWFkbGluZSBtb2R1bGUgbm93IHBsYXlzIG5pY2VyIHdpdGggZXh0ZXJuYWwgbW9kdWxlcwotICBvciBhcHBsaWNhdGlvbnMgY2hhbmdpbmcgdGhlIHJsX2NvbXBsZXRlcl93b3JkX2JyZWFrX2NoYXJhY3RlcnMgZ2xvYmFsCi0gIHZhcmlhYmxlLiAgSW5pdGlhbCBwYXRjaCBieSBCcmFkbGV5IEZyb2VobGUuCi0KLS0gSXNzdWUgIzEyMTgxOiBzZWxlY3QgbW9kdWxlOiBGaXggc3RydWN0IGtldmVudCBkZWZpbml0aW9uIG9uIE9wZW5CU0QgNjQtYml0Ci0gIHBsYXRmb3Jtcy4gUGF0Y2ggYnkgRmVkZXJpY28gU2Nod2luZHQuCi0KLS0gSXNzdWUgIzE0MTczOiBBdm9pZCBjcmFzaGluZyB3aGVuIHJlYWRpbmcgYSBzaWduYWwgaGFuZGxlciBkdXJpbmcKLSAgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCi0KLS0gSXNzdWUgIzE2MzE2OiBtaW1ldHlwZXMgbm93IHJlY29nbml6ZXMgdGhlIC54eiBhbmQgLnR4eiAoLnRhci54eikgZXh0ZW5zaW9ucy4KLQotLSBJc3N1ZSAjMTcxOTI6IFJlc3RvcmUgdGhlIHBhdGNoIGZvciBJc3N1ZSAjMTAzMDkgd2hpY2ggd2FzIG9tbWl0dGVkCi0gIGluIDIuNy40IHdoZW4gdXBkYXRpbmcgdGhlIGJ1bmRsZWQgdmVyc2lvbiBvZiBsaWJmZmkgdXNlZCBieSBjdHlwZXMuCi0KLS0gSXNzdWUgIzE3ODQzOiBSZW1vdmVkIHRlc3QgZGF0YSBmaWxlIHRoYXQgd2FzIHRyaWdnZXJpbmcgZmFsc2UtcG9zaXRpdmUgdmlydXMKLSAgd2FybmluZ3Mgd2l0aCBjZXJ0YWluIGFudGl2aXJ1cyBzb2Z0d2FyZS4KLQotLSBJc3N1ZSAjMTczNTM6IFBsaXN0bGliIGVtaXR0ZWQgZW1wdHkgZGF0YSB0YWdzIHdpdGggZGVlcGx5IG5lc3RlZCBkYXRhc3RydWN0dXJlcwotCi0tIElzc3VlICMxMTcxNDogVXNlICd3aXRoJyBzdGF0ZW1lbnRzIHRvIGFzc3VyZSBhIFNlbWFwaG9yZSByZWxlYXNlcyBhCi0gIGNvbmRpdGlvbiB2YXJpYWJsZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBSYWNoZWwuCi0KLS0gSXNzdWUgIzE3Nzk1OiBSZXZlcnRlZCBiYWNrd2FyZHMtaW5jb21wYXRpYmxlIGNoYW5nZSBpbiBTeXNMb2dIYW5kbGVyIHdpdGgKLSAgVW5peCBkb21haW4gc29ja2V0cy4KLQotLSBJc3N1ZSAjMTc1NTU6IEZpeCBGb3JrQXdhcmVUaHJlYWRMb2NrIHNvIHRoYXQgc2l6ZSBvZiBhZnRlciBmb3JrCi0gIHJlZ2lzdHJ5IGRvZXMgbm90IGdyb3cgZXhwb25lbnRpYWxseSB3aXRoIGdlbmVyYXRpb24gb2YgcHJvY2Vzcy4KLQotLSBJc3N1ZSAjMTc3MTA6IEZpeCBjUGlja2xlIHJhaXNpbmcgYSBTeXN0ZW1FcnJvciBvbiBib2d1cyBpbnB1dC4KLQotLSBJc3N1ZSAjMTczNDE6IEluY2x1ZGUgdGhlIGludmFsaWQgbmFtZSBpbiB0aGUgZXJyb3IgbWVzc2FnZXMgZnJvbSByZSBhYm91dAotICBpbnZhbGlkIGdyb3VwIG5hbWVzLgotCi0tIElzc3VlICMxNzAxNjogR2V0IHJpZCBvZiBwb3NzaWJsZSBwb2ludGVyIHdyYXBhcm91bmRzIGFuZCBpbnRlZ2VyIG92ZXJmbG93cwotICBpbiB0aGUgcmUgbW9kdWxlLiAgUGF0Y2ggYnkgTmlja29sYWkgWmVsZG92aWNoLgotCi0tIElzc3VlICMxNzUzNjogQWRkIHRvIHdlYmJyb3dzZXIncyBicm93c2VyIGxpc3Q6IHhkZy1vcGVuLCBndmZzLW9wZW4sCi0gIHd3dy1icm93c2VyLCB4LXd3dy1icm93c2VyLCBjaHJvbWl1bSBicm93c2VycywgaWNld2Vhc2VsLCBpY2VhcGUuCi0KLS0gSXNzdWUgIzE3NjU2OiBGaXggZXh0cmFjdGlvbiBvZiB6aXAgZmlsZXMgd2l0aCB1bmljb2RlIG1lbWJlciBwYXRocy4KLQotLSBJc3N1ZSAjMTc2NjY6IEZpeCByZWFkaW5nIGd6aXAgZmlsZXMgd2l0aCBhbiBleHRyYSBmaWVsZC4KLQotLSBJc3N1ZSAjMTMxNTAsICMxNzUxMjogc3lzY29uZmlnIG5vIGxvbmdlciBwYXJzZXMgdGhlIE1ha2VmaWxlIGFuZCBjb25maWcuaAotICBmaWxlcyB3aGVuIGltcG9ydGVkLCBpbnN0ZWFkIGRvaW5nIGl0IGF0IGJ1aWxkIHRpbWUuICBUaGlzIG1ha2VzIGltcG9ydGluZwotICBzeXNjb25maWcgZmFzdGVyIGFuZCByZWR1Y2VzIFB5dGhvbiBzdGFydHVwIHRpbWUgYnkgMjAlLgotCi0tIElzc3VlICMxMzE2MzogUmVuYW1lIG9wZXJhbmRzIGluIHNtdHBsaWIuU01UUC5fZ2V0X3NvY2tldCB0byBjb3JyZWN0IG5hbWVzOwotICBmaXhlcyBvdGhlcndpc2UgbWlzbGVhZGluZyBvdXRwdXQgaW4gdHJhY2ViYWNrcyBhbmQgd2hlbiB3aGVuIGRlYnVnIGlzIG9uLgotCi0tIElzc3VlICMxNzUyNjogZml4IGFuIEluZGV4RXJyb3IgcmFpc2VkIHdoaWxlIHBhc3NpbmcgY29kZSB3aXRob3V0IGZpbGVuYW1lIHRvCi0gIGluc3BlY3QuZmluZHNvdXJjZSgpLiAgSW5pdGlhbCBwYXRjaCBieSBUeWxlciBEb3lsZS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE3NTQ3OiBJbiBjb25maWd1cmUsIGV4cGxpY2l0bHkgcGFzcyAtV2Zvcm1hdCBmb3IgdGhlIGJlbmVmaXQgZm9yIEdDQwotICA0LjguCi0KLS0gSXNzdWUgIzE3NjgyOiBBZGQgdGhlIF9pbyBtb2R1bGUgdG8gTW9kdWxlcy9TZXR1cC5kaXN0IChjb21tZW50ZWQgb3V0KS4KLQotLSBJc3N1ZSAjMTcwODY6IFNlYXJjaCB0aGUgaW5jbHVkZSBhbmQgbGlicmFyeSBkaXJlY3RvcmllcyBwcm92aWRlZCBieSB0aGUKLSAgY29tcGlsZXIuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxNzkyODogRml4IHRlc3Rfc3RydWN0bWVtYmVycyBvbiA2NC1iaXQgYmlnLWVuZGlhbiBtYWNoaW5lcy4KLQotLSBJc3N1ZSAjMTc4ODM6IEZpeCBidWlsZGJvdCB0ZXN0aW5nIG9mIFRraW50ZXIgb24gV2luZG93cy4KLSAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICM3ODU1OiBBZGQgdGVzdHMgZm9yIGN0eXBlcy93aW5yZWcgZm9yIGlzc3VlcyBmb3VuZCBpbiBJcm9uUHl0aG9uLgotICBJbml0aWFsIHBhdGNoIGJ5IERpbm8gVmllaGxhbmQuCi0KLS0gSXNzdWUgIzE3NzEyOiBGaXggdGVzdF9nZGIgZmFpbHVyZXMgb24gVWJ1bnR1IDEzLjA0LgotCi0tIElzc3VlICMxNzA2NTogVXNlIHByb2Nlc3MtdW5pcXVlIGtleSBmb3Igd2lucmVnIHRlc3RzIHRvIGF2b2lkIGZhaWx1cmVzIGlmCi0gIHRlc3QgaXMgcnVuIG11bHRpcGxlIHRpbWVzIGluIHBhcmFsbGVsIChlZzogb24gYSBidWlsZGJvdCBob3N0KS4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMxNzgzODogQWxsb3cgc3lzLnN0ZGluIHRvIGJlIHJlYXNzaWduZWQuCi0KLS0gSXNzdWUgIzE0NzM1OiBVcGRhdGUgSURMRSBkb2NzIHRvIG9taXQgIkNvbnRyb2wteiBvbiBXaW5kb3dzIi4KLQotLSBJc3N1ZSAjMTc1ODU6IEZpeGVkIElETEUgcmVncmVzc2lvbi4gTm93IGNsb3NlcyB3aGVuIHVzaW5nIGV4aXQoKSBvciBxdWl0KCkuCi0KLS0gSXNzdWUgIzE3NjU3OiBTaG93IGZ1bGwgVGsgdmVyc2lvbiBpbiBJRExFJ3MgYWJvdXQgZGlhbG9nLgotICBQYXRjaCBieSBUb2RkIFJvdml0by4KLQotLSBJc3N1ZSAjMTc2MTM6IFByZXZlbnQgdHJhY2ViYWNrIHdoZW4gcmVtb3Zpbmcgc3ludGF4IGNvbG9yaXplciBpbiBJRExFLgotCi0tIElzc3VlICMxMjA3NTg5OiBCYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBwYXRjaCBmb3IgcmlnaHQtY2xpY2sgbWVudSBpbiBJRExFLgotCi0tIElzc3VlICMxNjg4NzogSURMRSBub3cgYWNjZXB0cyBDYW5jZWwgaW4gdGFiaWZ5L3VudGFiaWZ5IGRpYWxvZyBib3guCi0KLS0gSXNzdWUgIzE0MjU0OiBJRExFIG5vdyBoYW5kbGVzIHJlYWRsaW5lIGNvcnJlY3RseSBhY3Jvc3Mgc2hlbGwgcmVzdGFydHMuCi0KLS0gSXNzdWUgIzE3NjE0OiBJRExFIG5vIGxvbmdlciByYWlzZXMgZXhjZXB0aW9uIHdoZW4gcXVpY2tseSBjbG9zaW5nIGEgZmlsZS4KLQotLSBJc3N1ZSAjNjY5ODogSURMRSBub3cgb3BlbnMganVzdCBhbiBlZGl0b3Igd2luZG93IHdoZW4gY29uZmlndXJlZCB0byBkbyBzby4KLQotLSBJc3N1ZSAjODkwMDogVXNpbmcga2V5Ym9hcmQgc2hvcnRjdXRzIGluIElETEUgdG8gb3BlbiBhIGZpbGUgbm8gbG9uZ2VyCi0gIHJhaXNlcyBhbiBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzY2NDk6IEZpeGVkIG1pc3NpbmcgZXhpdCBzdGF0dXMgaW4gSURMRS4gUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCi0KLS0gSXNzdWUgIzE3MzkwOiBEaXNwbGF5IFB5dGhvbiB2ZXJzaW9uIG9uIElkbGUgdGl0bGUgYmFyLgotICBJbml0aWFsIHBhdGNoIGJ5IEVkbW9uZCBCdXJuZXR0LgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE1OTQwOiBTcGVjaWZ5IGVmZmVjdCBvZiBsb2NhbGUgb24gdGltZSBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzY2OTY6IGFkZCBkb2N1bWVudGF0aW9uIGZvciB0aGUgUHJvZmlsZSBvYmplY3RzLCBhbmQgaW1wcm92ZQotICBwcm9maWxlL2NQcm9maWxlIGRvY3MuICBQYXRjaCBieSBUb20gUGluY2tuZXkuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi43LjQ/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAxMy0wNC0wNioKLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE3NTUwOiBGaXggdGhlIC0tZW5hYmxlLXByb2ZpbGluZyBjb25maWd1cmUgc3dpdGNoLgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTU4MDEgKGFnYWluKTogV2l0aCBzdHJpbmcgJSBmb3JtYXR0aW5nLCByZWxheCB0aGUgdHlwZSBjaGVjayBmb3IgYQotICBtYXBwaW5nIHN1Y2ggdGhhdCBhbnkgdHlwZSB3aXRoIGEgX19nZXRpdGVtX18gY2FuIGJlIHVzZWQgb24gdGhlIHJpZ2h0IGhhbmQKLSAgc2lkZS4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICMxNzYyNTogSW4gSURMRSwgY2xvc2UgdGhlIHJlcGxhY2UgZGlhbG9nIGFmdGVyIGl0IGlzIHVzZWQuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMxNzgzNTogRml4IHRlc3RfaW8gd2hlbiB0aGUgZGVmYXVsdCBPUyBwaXBlIGJ1ZmZlciBzaXplIGlzIGxhcmdlcgotICB0aGFuIG9uZSBtaWxsaW9uIGJ5dGVzLgotCi0tIElzc3VlICMxNzUzMTogRml4IHRlc3RzIHRoYXQgdGhvdWdodCBncm91cCBhbmQgdXNlciBpZHMgd2VyZSBhbHdheXMgdGhlIGludAotICB0eXBlLiBBbHNvLCBhbHdheXMgYWxsb3cgLTEgYXMgYSB2YWxpZCBncm91cCBhbmQgdXNlciBpZC4KLQotLSBJc3N1ZSAjMTc1MzM6IEZpeCB0ZXN0X3hwaWNrbGUgd2l0aCBvbGRlciB2ZXJzaW9ucyBvZiBQeXRob24gMi41LgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE3NTM4OiBEb2N1bWVudCBYTUwgdnVsbmVyYWJpbHRpZXMKLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcuNCByZWxlYXNlIGNhbmRpZGF0ZSAxCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMTMtMDMtMjMqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxMDIxMTogQnVmZmVyIG9iamVjdHMgZXhwb3NlIHRoZSBuZXcgYnVmZmVyIGludGVyZmFjZSBpbnRlcm5hbGx5Ci0KLS0gSXNzdWUgIzE2NDQ1OiBGaXhlZCBwb3RlbnRpYWwgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gZGVsZXRpbmcgYW4gZXhjZXB0aW9uCi0gIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzE3Mjc1OiBDb3JyZWN0ZWQgY2xhc3MgbmFtZSBpbiBpbml0IGVycm9yIG1lc3NhZ2VzIG9mIHRoZSBDIHZlcnNpb24gb2YKLSAgQnVmZmVyZWRXcml0ZXIgYW5kIEJ1ZmZlcmVkUmFuZG9tLgotCi0tIElzc3VlICM3OTYzOiBGaXhlZCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2UgdGhhdCBpc3N1ZWQgd2hlbiBvYmplY3QgaXMKLSAgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzLgotCi0tIElzc3VlICM1MzA4OiBSYWlzZSBWYWx1ZUVycm9yIHdoZW4gbWFyc2hhbGxpbmcgdG9vIGxhcmdlIG9iamVjdCAoYSBzZXF1ZW5jZQotICB3aXRoIHNpemUgPj0gMioqMzEpLCBpbnN0ZWFkIG9mIHByb2R1Y2luZyBpbGxlZ2FsIG1hcnNoYWwgZGF0YS4KLQotLSBJc3N1ZSAjMTcwNDM6IFRoZSB1bmljb2RlLWludGVybmFsIGRlY29kZXIgbm8gbG9uZ2VyIHJlYWQgcGFzdCB0aGUgZW5kIG9mCi0gIGlucHV0IGJ1ZmZlci4KLQotLSBJc3N1ZSAjMTY5Nzk6IEZpeCBlcnJvciBoYW5kbGluZyBidWdzIGluIHRoZSB1bmljb2RlLWVzY2FwZS1kZWNvZGUgZGVjb2Rlci4KLQotLSBJc3N1ZSAjMTAxNTY6IEluIHRoZSBpbnRlcnByZXRlcidzIGluaXRpYWxpemF0aW9uIHBoYXNlLCB1bmljb2RlIGdsb2JhbHMKLSAgYXJlIG5vdyBpbml0aWFsaXplZCBkeW5hbWljYWxseSBhcyBuZWVkZWQuCi0KLS0gSXNzdWUgIzE2OTc1OiBGaXggZXJyb3IgaGFuZGxpbmcgYnVnIGluIHRoZSBlc2NhcGUtZGVjb2RlIGRlY29kZXIuCi0KLS0gSXNzdWUgIzE0ODUwOiBOb3cgYSBjaGFybWFwIGRlY29kZXIgdHJlYXRzIFUrRkZGRSBhcyAidW5kZWZpbmVkIG1hcHBpbmciCi0gIGluIGFueSBtYXBwaW5nLCBub3Qgb25seSBpbiBhIFVuaWNvZGUgc3RyaW5nLgotCi0tIElzc3VlICMxMTQ2MTogRml4IHRoZSBpbmNyZW1lbnRhbCBVVEYtMTYgZGVjb2Rlci4gT3JpZ2luYWwgcGF0Y2ggYnkKLSAgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCi0KLS0gSXNzdWUgIzE2MzY3OiBGaXggRmlsZUlPLnJlYWRhbGwoKSBvbiBXaW5kb3dzIGZvciBmaWxlcyBsYXJnZXIgdGhhbiAyIEdCLgotCi0tIElzc3VlICMxNTUxNjogRml4IGEgYnVnIGluIFB5U3RyaW5nX0Zyb21Gb3JtYXQgd2hlcmUgaXQgZmFpbGVkIHRvIHByb3Blcmx5Ci0gIGlnbm9yZSBlcnJvcnMgZnJvbSBhIF9faW50X18oKSBtZXRob2QuCi0KLS0gSXNzdWUgIzE2ODM5OiBGaXggYSBzZWdmYXVsdCB3aGVuIGNhbGxpbmcgdW5pY29kZSgpIG9uIGEgY2xhc3NpYyBjbGFzcyBlYXJseQotICBpbiBpbnRlcnByZXRlciBpbml0aWFsaXphdGlvbi4KLQotLSBJc3N1ZSAjMTY3NjE6IENhbGxpbmcgYGBpbnQoKWBgIGFuZCBgYGxvbmcoKWBgIHdpdGggKmJhc2UqIGFyZ3VtZW50IG9ubHkKLSAgbm93IHJhaXNlcyBUeXBlRXJyb3IuCi0KLS0gSXNzdWUgIzE2NzU5OiBTdXBwb3J0IHRoZSBmdWxsIERXT1JEICh1bnNpZ25lZCBsb25nKSByYW5nZSBpbiBSZWcyUHkKLSAgd2hlbiByZXRyaWV2aW5nIGEgUkVHX0RXT1JEIHZhbHVlLiBUaGlzIGNvcnJlY3RzIGZ1bmN0aW9ucyBsaWtlCi0gIHdpbnJlZy5RdWVyeVZhbHVlRXggdGhhdCBtYXkgaGF2ZSBiZWVuIHJldHVybmluZyB0cnVuY2F0ZWQgdmFsdWVzLgotCi0tIElzc3VlICMxNDQyMDogU3VwcG9ydCB0aGUgZnVsbCBEV09SRCAodW5zaWduZWQgbG9uZykgcmFuZ2UgaW4gUHkyUmVnCi0gIHdoZW4gcGFzc2VkIGEgUkVHX0RXT1JEIHZhbHVlLiBGaXhlcyBWYWx1ZUVycm9yIGluIHdpbnJlZy5TZXRWYWx1ZUV4IHdoZW4KLSAgZ2l2ZW4gYSBsb25nLgotCi0tIElzc3VlICMxMzg2MzogV29yayBhcm91bmQgYnVnZ3kgJ2ZzdGF0JyBpbXBsZW1lbnRhdGlvbiBvbiBXaW5kb3dzIC8gTlRGUyB0aGF0Ci0gIGxlYWQgdG8gaW5jb3JyZWN0IHRpbWVzdGFtcHMgKG9mZiBieSBvbmUgaG91cikgYmVpbmcgc3RvcmVkIGluIC5weWMgZmlsZXMgb24KLSAgc29tZSBzeXN0ZW1zLgotCi0tIElzc3VlICMxNjYwMjogV2hlbiBhIHdlYWtyZWYncyB0YXJnZXQgd2FzIHBhcnQgb2YgYSBsb25nIGRlYWxsb2NhdGlvbgotICBjaGFpbiwgdGhlIG9iamVjdCBjb3VsZCByZW1haW4gcmVhY2hhYmxlIHRocm91Z2ggaXRzIHdlYWtyZWYgZXZlbiB0aG91Z2gKLSAgaXRzIHJlZmNvdW50IGhhZCBkcm9wcGVkIHRvIHplcm8uCi0KLS0gSXNzdWUgIzkwMTE6IEZpeCBoYWNreSBBU1QgY29kZSB0aGF0IG1vZGlmaWVkIHRoZSBDU1Qgd2hlbiBjb21waWxpbmcKLSAgYSBuZWdhdGVkIG51bWVyaWMgbGl0ZXJhbC4KLQotLSBJc3N1ZSAjMTYzMDY6IEZpeCBtdWx0aXBsZSBlcnJvciBtZXNzYWdlcyB3aGVuIHVua25vd24gY29tbWFuZCBsaW5lCi0gIHBhcmFtZXRlcnMgd2hlcmUgcGFzc2VkIHRvIHRoZSBpbnRlcnByZXRlci4gIFBhdGNoIGJ5IEhpZXUgTmd1eWVuLgotCi0tIElzc3VlICMxNTM3OTogRml4IHBhc3Npbmcgb2Ygbm9uLUJNUCBjaGFyYWN0ZXJzIGFzIGludGVnZXJzIGZvciB0aGUgY2hhcm1hcAotICBkZWNvZGVyIChhbHJlYWR5IHdvcmtpbmcgYXMgdW5pY29kZSBzdHJpbmdzKS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE2NDUzOiBGaXggZXF1YWxpdHkgdGVzdGluZyBvZiBkZWFkIHdlYWtyZWYgb2JqZWN0cy4KLQotLSBJc3N1ZSAjOTUzNTogRml4IHBlbmRpbmcgc2lnbmFscyB0aGF0IGhhdmUgYmVlbiByZWNlaXZlZCBidXQgbm90IHlldAotICBoYW5kbGVkIGJ5IFB5dGhvbiB0byBub3QgcGVyc2lzdCBhZnRlciBvcy5mb3JrKCkgaW4gdGhlIGNoaWxkIHByb2Nlc3MuCi0KLS0gSXNzdWUgIzE1MDAxOiBmaXggc2VnZmF1bHQgb24gImRlbCBzeXMubW9kdWxlc1snX19tYWluX18nXSIuIFBhdGNoIGJ5IFZpY3RvcgotICBTdGlubmVyLgotCi0tIElzc3VlICM1MDU3OiB0aGUgcGVlcGhvbGVyIG5vIGxvbmdlciBvcHRpbWl6ZXMgc3Vic2NyaXB0aW9uIG9uIHVuaWNvZGUKLSAgbGl0ZXJhbHMgKGUuZy4gdSdmb28nWzBdKSBpbiBvcmRlciB0byBwcm9kdWNlIGNvbXBhdGlibGUgcHljIGZpbGVzIGJldHdlZW4KLSAgbmFycm93IGFuZCB3aWRlIGJ1aWxkcy4KLQotLSBJc3N1ZSAjODQwMTogYXNzaWduaW5nIGFuIGludCB0byBhIGJ5dGVhcnJheSBzbGljZSAoZS5nLiBiWzM6NF0gPSA1KSBub3cKLSAgcmFpc2VzIGFuIGVycm9yLgotCi0tIElzc3VlICMxNDcwMDogRml4IGJ1Z2d5IG92ZXJmbG93IGNoZWNrcyBmb3IgbGFyZ2Ugd2lkdGggYW5kIHByZWNpc2lvbgotICBpbiBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb25zLgotCi0tIElzc3VlICMxNjM0NTogRml4IGFuIGluZmluaXRlIGxvb3Agd2hlbiBgYGZyb21rZXlzYGAgb24gYSBkaWN0IHN1YmNsYXNzCi0gIHJlY2VpdmVkIGEgbm9uZW1wdHkgZGljdCBmcm9tIHRoZSBjb25zdHJ1Y3Rvci4KLQotLSBJc3N1ZSAjNjA3NDogRW5zdXJlIGNhY2hlZCBieXRlY29kZSBmaWxlcyBjYW4gYWx3YXlzIGJlIHVwZGF0ZWQgYnkgdGhlCi0gIHVzZXIgdGhhdCBjcmVhdGVkIHRoZW0sIGV2ZW4gd2hlbiB0aGUgc291cmNlIGZpbGUgaXMgcmVhZC1vbmx5LgotCi0tIElzc3VlICMxNDc4MzogSW1wcm92ZSBpbnQoKSBhbmQgbG9uZygpIGRvY3N0cmluZ3MgYW5kIHN3aXRjaCBkb2NzdHJpbmdzIGZvcgotICB1bmljb2RlKCksIHNsaWNlKCksIHJhbmdlKCksIGFuZCB4cmFuZ2UoKSB0byB1c2UgbXVsdGktbGluZSBzaWduYXR1cmVzLgotCi0tIElzc3VlICMxNjAzMDogRml4IG92ZXJmbG93IGJ1ZyBpbiBjb21wdXRpbmcgdGhlIGByZXByYCBvZiBhbiB4cmFuZ2Ugb2JqZWN0Ci0gIHdpdGggbGFyZ2Ugc3RhcnQsIHN0ZXAgb3IgbGVuZ3RoLgotCi0tIElzc3VlICMxNjAyOTogRml4IG92ZXJmbG93IGJ1ZyBvY2N1cnJpbmcgd2hlbiBwaWNrbGluZyB4cmFuZ2VzIHdpdGggbGFyZ2UKLSAgc3RhcnQsIHN0ZXAgb3IgbGVuZ3RoLgotCi0tIElzc3VlICMxNjAzNzogTGltaXQgaHR0cGxpYidzIF9yZWFkX3N0YXR1cygpIGZ1bmN0aW9uIHRvIHdvcmsgYXJvdW5kIGJyb2tlbgotICBIVFRQIHNlcnZlcnMgYW5kIHJlZHVjZSBtZW1vcnkgdXNhZ2UuIEl0J3MgYWN0dWFsbHkgYSBiYWNrcG9ydCBvZiBhIFB5dGhvbgotICAzLjIgZml4LiBUaGFua3MgdG8gQWRyaWVuIEt1bnlzei4KLQotLSBJc3N1ZSAjMTY1ODg6IFNpbGVuY2UgdW51c2VkLWJ1dC1zZXQgd2FybmluZ3MgaW4gUHl0aG9uL3RocmVhZF9wdGhyZWFkCi0KLS0gSXNzdWUgIzEzOTkyOiBUaGUgdHJhc2hjYW4gbWVjaGFuaXNtIGlzIG5vdyB0aHJlYWQtc2FmZS4gIFRoaXMgZWxpbWluYXRlcwotICBzcG9yYWRpYyBjcmFzaGVzIGluIG11bHRpLXRocmVhZCBwcm9ncmFtcyB3aGVuIHNldmVyYWwgbG9uZyBkZWFsbG9jYXRvcgotICBjaGFpbnMgcmFuIGNvbmN1cnJlbnRseSBhbmQgaW52b2x2ZWQgc3ViY2xhc3NlcyBvZiBidWlsdC1pbiBjb250YWluZXIKLSAgdHlwZXMuCi0KLS0gSXNzdWUgIzE1ODAxOiBNYWtlIHN1cmUgbWFwcGluZ3MgcGFzc2VkIHRvICclJyBmb3JtYXR0aW5nIGFyZSBhY3R1YWxseQotICBzdWJzY3JpcHRhYmxlLgotCi0tIElzc3VlICMxNTYwNDogVXBkYXRlIHVzZXMgb2YgUHlPYmplY3RfSXNUcnVlKCkgdG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUKLSAgZXJyb3JzIGNvcnJlY3RseS4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE0NTc5OiBGaXggZXJyb3IgaGFuZGxpbmcgYnVnIGluIHRoZSB1dGYtMTYgZGVjb2Rlci4gIFBhdGNoIGJ5Ci0gIFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MzY4OiBBbiBpc3N1ZSB0aGF0IGNhdXNlZCBieXRlY29kZSBnZW5lcmF0aW9uIHRvIGJlCi0gIG5vbi1kZXRlcm1pbmlzdGljIHdoZW4gdXNpbmcgcmFuZG9taXplZCBoYXNoaW5nICgtUikgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzE1ODk3OiB6aXBpbXBvcnQuYyBkb2Vzbid0IGNoZWNrIHJldHVybiB2YWx1ZSBvZiBmc2VlaygpLgotICBQYXRjaCBieSBGZWxpcGUgQ3J1ei4KLQotLSBJc3N1ZSAjMTYzNjk6IEdsb2JhbCBQeVR5cGVPYmplY3RzIG5vdCBpbml0aWFsaXplZCB3aXRoIFB5VHlwZV9SZWFkeSguLi4pLgotCi0tIElzc3VlICMxNTAzMzogRml4IHRoZSBleGl0IHN0YXR1cyBidWcgd2hlbiBtb2R1bGVzIGludm9rZWQgdXNpbmcgLW0gc3dpdGNoLAotICByZXR1cm4gdGhlIHByb3BlciBmYWlsdXJlIHJldHVybiB2YWx1ZSAoMSkuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IEplZmYgS251cHAuCi0KLS0gSXNzdWUgIzEyMjY4OiBGaWxlIHJlYWRsaW5lLCByZWFkbGluZXMgYW5kIHJlYWQoKSBtZXRob2RzIG5vIGxvbmdlciBsb3NlCi0gIGRhdGEgd2hlbiBhbiB1bmRlcmx5aW5nIHJlYWQgc3lzdGVtIGNhbGwgaXMgaW50ZXJydXB0ZWQuICBJT0Vycm9yIGlzIG5vCi0gIGxvbmdlciByYWlzZWQgZHVlIHRvIGEgcmVhZCBzeXN0ZW0gY2FsbCByZXR1cm5pbmcgRUlOVFIgZnJvbSB3aXRoaW4gdGhlc2UKLSAgbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTM1MTI6IENyZWF0ZSB+Ly5weXBpcmMgc2VjdXJlbHkgKENWRS0yMDExLTQ5NDQpLiAgSW5pdGlhbCBwYXRjaCBieQotICBQaGlsaXAgSmVudmV5LCB0ZXN0ZWQgYnkgTWFnZWlhIGFuZCBEZWJpYW4uCi0KLS0gSXNzdWUgIzc3MTk6IE1ha2UgZGlzdHV0aWxzIGlnbm9yZSBgYC5uZnMqYGAgZmlsZXMgaW5zdGVhZCBvZiBjaG9raW5nIGxhdGVyCi0gIG9uLiAgSW5pdGlhbCBwYXRjaCBieSBTaWxlbnRHaG9zdCBhbmQgSmVmZiBSYW1uYW5pLgotCi0tIElzc3VlICMxMDA1MzogRG9uJ3QgY2xvc2UgRkRzIHdoZW4gRmlsZUlPLl9faW5pdF9fIGZhaWxzLiBMb29zZWx5IGJhc2VkIG9uCi0gIHRoZSB3b3JrIGJ5IEhpcm9rYXp1IFlhbWFtb3RvLgotCi0tIElzc3VlICMxNDc3NTogRml4IGEgcG90ZW50aWFsIHF1YWRyYXRpYyBkaWN0IGJ1aWxkLXVwIGR1ZSB0byB0aGUgZ2FyYmFnZQotICBjb2xsZWN0b3IgcmVwZWF0ZWRseSB0cnlpbmcgdG8gdW50cmFjayBkaWN0cy4KLQotLSBJc3N1ZSAjMTQ0OTQ6IEZpeCBfX2Z1dHVyZV9fLnB5IGFuZCBpdHMgZG9jdW1lbnRhdGlvbiB0byBub3RlIHRoYXQKLSAgYWJzb2x1dGUgaW1wb3J0cyBhcmUgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LgotICBQYXRjaCBieSBTdmVuIE1hcm5hY2guCi0KLS0gSXNzdWUgIzE0NzYxOiBGaXggcG90ZW50aWFsIGxlYWsgb24gYW4gZXJyb3IgY2FzZSBpbiB0aGUgaW1wb3J0IG1hY2hpbmVyeS4KLQotLSBJc3N1ZSAjMTQ2OTk6IEZpeCBjYWxsaW5nIHRoZSBjbGFzc21ldGhvZCBkZXNjcmlwdG9yIGRpcmVjdGx5LgotCi0tIElzc3VlICMxMTYwMyAoYWdhaW4pOiBTZXR0aW5nIF9fcmVwcl9fIHRvIF9fc3RyX18gbm93IHJhaXNlcyBhIFJ1bnRpbWVFcnJvcgotICB3aGVuIHJlcHIoKSBvciBzdHIoKSBpcyBjYWxsZWQgb24gc3VjaCBhbiBvYmplY3QuCi0KLS0gSXNzdWUgIzE0NjU4OiBGaXggYmluZGluZyBhIHNwZWNpYWwgbWV0aG9kIHRvIGEgYnVpbHRpbiBpbXBsZW1lbnRhdGlvbiBvZiBhCi0gIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KLQotLSBJc3N1ZSAjMTQ2MTI6IEZpeCBqdW1waW5nIGFyb3VuZCB3aXRoIGJsb2NrcyBieSBzZXR0aW5nIGZfbGluZW5vLgotCi0tIElzc3VlICMxMzg4OTogQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nCi0gIGFueSBvZiB0aGUgZHRvYS5jIHN0cmluZyA8LT4gZmxvYXQgY29udmVyc2lvbiBmdW5jdGlvbnMsIG9uIE1TVkMgYnVpbGRzIG9mCi0gIFB5dGhvbi4gIFRoaXMgZml4ZXMgaXNzdWVzIHdoZW4gZW1iZWRkaW5nIFB5dGhvbiBpbiBhIERlbHBoaSBhcHAuCi0KLS0gSXNzdWUgIzE0NTA1OiBGaXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgd2hlbiBkZWFsbG9jYXRpbmcgZmlsZSBvYmplY3RzCi0gIGNyZWF0ZWQgd2l0aCBQeUZpbGVfRnJvbVN0cmluZygpLgotCi0tIElzc3VlICMxNDQ3NDogU2F2ZSBhbmQgcmVzdG9yZSBleGNlcHRpb24gc3RhdGUgaW4gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKQotICB3aGlsZSB3cml0aW5nIGVycm9yIG1lc3NhZ2UgaWYgdGhlIHRocmVhZCBsZWF2ZXMgYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTMwMTk6IEZpeCBwb3RlbnRpYWwgcmVmZXJlbmNlIGxlYWtzIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoCi0gIGJ5IFN1bWFuIFNhaGEuCi0KLS0gSXNzdWUgIzE0Mzc4OiBGaXggY29tcGlsaW5nIGFzdC5JbXBvcnRGcm9tIG5vZGVzIHdpdGggYSAiX19mdXR1cmVfXyIgc3RyaW5nIGFzCi0gIHRoZSBtb2R1bGUgbmFtZSB0aGF0IHdhcyBub3QgaW50ZXJuZWQuCi0KLS0gSXNzdWUgIzE0MzMxOiBVc2Ugc2lnbmlmaWNhbnRseSBsZXNzIHN0YWNrIHNwYWNlIHdoZW4gaW1wb3J0aW5nIG1vZHVsZXMgYnkKLSAgYWxsb2NhdGluZyBwYXRoIGJ1ZmZlcnMgb24gdGhlIGhlYXAgaW5zdGVhZCBvZiB0aGUgc3RhY2suCi0KLS0gSXNzdWUgIzE0MzM0OiBQcmV2ZW50IGluIGEgc2VnZmF1bHQgaW4gdHlwZS5fX2dldGF0dHJpYnV0ZV9fIHdoZW4gaXQgd2FzIG5vdAotICBwYXNzZWQgc3RyaW5ncy4gQWxzbyBmaXggc2VnZmF1bHRzIGluIHRoZSBfX2dldGF0dHJpYnV0ZV9fIGFuZCBfX3NldGF0dHJfXwotICBtZXRob2RzIG9mIG9sZC1zdHlsZSBjbGFzc2VzLgotCi0tIElzc3VlICMxNDE2MTogZml4IHRoZSBfX3JlcHJfXyBvZiBmaWxlIG9iamVjdHMgdG8gZXNjYXBlIHRoZSBmaWxlIG5hbWUuCi0KLS0gSXNzdWUgIzE0Njk2Mjk6IEFsbG93IGN5Y2xlcyB0aHJvdWdoIGFuIG9iamVjdCdzIF9fZGljdF9fIHNsb3QgdG8gYmUKLSAgY29sbGVjdGVkLiAoRm9yIGV4YW1wbGUgaWYgYGB4Ll9fZGljdF9fIGlzIHhgYCkuCi0KLS0gSXNzdWUgIzEzNTIxOiBkaWN0LnNldGRlZmF1bHQoKSBub3cgZG9lcyBvbmx5IG9uZSBsb29rdXAgZm9yIHRoZSBnaXZlbiBrZXksCi0gIG1ha2luZyBpdCAiYXRvbWljIiBmb3IgbWFueSBwdXJwb3Nlcy4gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCi0KLS0gSXNzdWUgIzE2MDIxMzM6IG9uIE1hYyBPUyBYIGEgc2hhcmVkIGxpYnJhcnkgYnVpbGQgKGBgLS1lbmFibGUtc2hhcmVkYGApCi0gIG5vdyBmaWxscyB0aGUgYGBvcy5lbnZpcm9uYGAgdmFyaWFibGUgY29ycmVjdGx5LgotCi0tIElzc3VlICMxMDUzODogV2hlbiB1c2luZyB0aGUgInMqIiBjb2RlIHdpdGggUHlBcmdfUGFyc2VUdXBsZSgpIHRvIGZpbGwgYQotICBQeV9idWZmZXIgc3RydWN0dXJlIHdpdGggZGF0YSBmcm9tIGFuIG9iamVjdCBzdXBwb3J0aW5nIG9ubHkgdGhlIG9sZAotICBQeUJ1ZmZlciBpbnRlcmZhY2UsIGEgcmVmZXJlbmNlIHRvIHRoZSBzb3VyY2Ugb2JqZWN0cyBpcyBub3cgcHJvcGVybHkgYWRkZWQKLSAgdG8gdGhlIFB5X2J1ZmZlci5vYmogbWVtYmVyLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyNzE4OiBGaXggaW50ZXJhY3Rpb24gd2l0aCB3aW5wZGIgb3ZlcnJpZGluZyBfX2ltcG9ydF9fIGJ5IHNldHRpbmcKLSAgaW1wb3J0ZXIgYXR0cmlidXRlIG9uIEJhc2VDb25maWd1cmF0b3IgaW5zdGFuY2UuCi0KLS0gSXNzdWUgIzE3NTIxOiBDb3JyZWN0ZWQgbm9uLWVuYWJsaW5nIG9mIGxvZ2dlciBmb2xsb3dpbmcgdHdvIGNhbGxzIHRvCi0gIGZpbGVDb25maWcoKS4KLQotLSBJc3N1ZSAjMTc1MDg6IENvcnJlY3RlZCBNZW1vcnlIYW5kbGVyIGNvbmZpZ3VyYXRpb24gaW4gZGljdENvbmZpZygpIHdoZXJlCi0gIHRoZSB0YXJnZXQgaGFuZGxlciB3YXNuJ3QgY29uZmlndXJlZCBmaXJzdC4KLQotLSBJc3N1ZSAjMTAyMTI6IGNTdHJpbmdJTyBhbmQgc3RydWN0LnVucGFjayBzdXBwb3J0IG5ldyBidWZmZXIgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTIwOTg6IG11bHRpcHJvY2Vzc2luZyBvbiBXaW5kb3dzIG5vdyBzdGFydHMgY2hpbGQgcHJvY2Vzc2VzCi0gIHVzaW5nIHRoZSBzYW1lIHN5cy5mbGFncyBhcyB0aGUgY3VycmVudCBwcm9jZXNzLiAgSW5pdGlhbCBwYXRjaCBieQotICBTZXJnZXkgTWV6ZW50c2V2LgotCi0tIElzc3VlICM4ODYyOiBGaXhlZCBjdXJzZXMgY2xlYW51cCB3aGVuIGdldGtleSBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KLQotLSBJc3N1ZSAjOTA5MDogV2hlbiBhIHNvY2tldCB3aXRoIGEgdGltZW91dCBmYWlscyB3aXRoIEVXT1VMREJMT0NLIG9yIEVBR0FJTiwKLSAgcmV0cnkgdGhlIHNlbGVjdCgpIGxvb3AgaW5zdGVhZCBvZiBiYWlsaW5nIG91dC4gIFRoaXMgaXMgYmVjYXVzZSBzZWxlY3QoKQotICBjYW4gaW5jb3JyZWN0bHkgcmVwb3J0IGEgc29ja2V0IGFzIHJlYWR5IGZvciByZWFkaW5nIChmb3IgZXhhbXBsZSwgaWYgaXQKLSAgcmVjZWl2ZWQgc29tZSBkYXRhIHdpdGggYW4gaW52YWxpZCBjaGVja3N1bSkuCi0KLS0gSXNzdWUgIzEyODUwODY6IEdldCByaWQgb2YgdGhlIHJlZmNvdW50aW5nIGhhY2sgYW5kIHNwZWVkIHVwIHVybGxpYi51bnF1b3RlKCkuCi0KLS0gSXNzdWUgIzE3MzY4OiBGaXggYW4gb2ZmLWJ5LW9uZSBlcnJvciBpbiB0aGUgUHl0aG9uIEpTT04gZGVjb2RlciB0aGF0IGNhdXNlZAotICBhIGZhaWx1cmUgd2hpbGUgZGVjb2RpbmcgZW1wdHkgb2JqZWN0IGxpdGVyYWxzIHdoZW4gb2JqZWN0X3BhaXJzX2hvb2sgd2FzCi0gIHNwZWNpZmllZC4KLQotLSBJc3N1ZSAjMTcyNzg6IEZpeCBhIGNyYXNoIGluIGhlYXBxLmhlYXBwdXNoKCkgYW5kIGhlYXBxLmhlYXBwb3AoKSB3aGVuCi0gIHRoZSBsaXN0IGlzIGJlaW5nIHJlc2l6ZWQgY29uY3VycmVudGx5LgotCi0tIElzc3VlICMxNzAxODogTWFrZSBQcm9jZXNzLmpvaW4oKSByZXRyeSBpZiBvcy53YWl0cGlkKCkgZmFpbHMgd2l0aCBFSU5UUi4KLQotLSBJc3N1ZSAjMTQ3MjA6IHNxbGl0ZTM6IENvbnZlcnQgZGF0ZXRpbWUgbWljcm9zZWNvbmRzIGNvcnJlY3RseS4KLSAgUGF0Y2ggYnkgTG93ZSBUaGlkZXJtYW4uCi0KLS0gSXNzdWUgIzE3MjI1OiBKU09OIGRlY29kZXIgbm93IGNvdW50cyBjb2x1bW5zIGluIHRoZSBmaXJzdCBsaW5lIHN0YXJ0aW5nCi0gIHdpdGggMSwgYXMgaW4gb3RoZXIgbGluZXMuCi0KLS0gSXNzdWUgIzc4NDI6IGJhY2twb3J0ZWQgZml4IGZvciBweV9jb21waWxlLmNvbXBpbGUoKSBzeW50YXggZXJyb3IgaGFuZGxpbmcuCi0KLS0gSXNzdWUgIzEzMTUzOiBUa2ludGVyIGZ1bmN0aW9ucyBub3cgcmFpc2UgVGNsRXJyb3IgaW5zdGVhZCBvZiBWYWx1ZUVycm9yIHdoZW4KLSAgYSB1bmljb2RlIGFyZ3VtZW50IGNvbnRhaW5zIG5vbi1CTVAgY2hhcmFjdGVyLgotCi0tIElzc3VlICM5NjY5OiBQcm90ZWN0IHJlIGFnYWluc3QgaW5maW5pdGUgbG9vcHMgb24gemVyby13aWR0aCBtYXRjaGluZyBpbgotICBub24tZ3JlZWR5IHJlcGVhdC4gIFBhdGNoIGJ5IE1hdHRoZXcgQmFybmV0dC4KLQotLSBJc3N1ZSAjMTMxNjk6IFRoZSBtYXhpbWFsIHJlcGV0aXRpb24gbnVtYmVyIGluIGEgcmVndWxhciBleHByZXNzaW9uIGhhcyBiZWVuCi0gIGluY3JlYXNlZCBmcm9tIDY1NTM0IHRvIDIxNDc0ODM2NDcgKG9uIDMyLWJpdCBwbGF0Zm9ybSkgb3IgNDI5NDk2NzI5NCAob24KLSAgNjQtYml0KS4KLQotLSBJc3N1ZSAjMTY3NDM6IEZpeCBtbWFwIG92ZXJmbG93IGNoZWNrIG9uIDMyIGJpdCBXaW5kb3dzLgotCi0tIElzc3VlICMxMTMxMTogU3RyaW5nSU8ucmVhZGxpbmUoMCkgbm93IHJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGFzIGFsbCBvdGhlcgotICBmaWxlLWxpa2Ugb2JqZWN0cy4KLQotLSBJc3N1ZSAjMTY4MDA6IHRlbXBmaWxlLmdldHRlbXBkaXIoKSBubyBsb25nZXIgbGVmdCB0ZW1wb3JhcnkgZmlsZXMgd2hlbgotICB0aGUgZGlzayBpcyBmdWxsLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQW1pciBTemVrZWx5LgotCi0tIElzc3VlICMxMzU1NTogY1BpY2tsZSBub3cgc3VwcG9ydHMgZmlsZXMgbGFyZ2VyIHRoYW4gMiBHaUIuCi0KLS0gSXNzdWUgIzE3MDUyOiB1bml0dGVzdCBkaXNjb3Zlcnkgc2hvdWxkIHVzZSBzZWxmLnRlc3RMb2FkZXIuCi0KLS0gSXNzdWUgIzQ1OTE6IFVpZCBhbmQgZ2lkIHZhbHVlcyBsYXJnZXIgdGhhbiAyKiozMSBhcmUgc3VwcG9ydGVkIG5vdy4KLQotLSBJc3N1ZSAjMTcxNDE6IHJhbmRvbS52b25taXNlc3ZhcmlhdGUoKSBubyBtb3JlIGhhbmdzIGZvciBsYXJnZSBrYXBwYXMuCi0KLS0gSXNzdWUgIzE3MTQ5OiBGaXggcmFuZG9tLnZvbm1pc2VzdmFyaWF0ZSB0byBhbHdheXMgcmV0dXJuIHJlc3VsdHMgaW4KLSAgdGhlIHJhbmdlIFswLCAyKm1hdGgucGldLgotCi0tIElzc3VlICMxNDcwNTQ4OiBYTUxHZW5lcmF0b3Igbm93IHdvcmtzIHdpdGggVVRGLTE2IGFuZCBVVEYtMzIgZW5jb2RpbmdzLgotCi0tIElzc3VlICM2OTc1OiBvcy5wYXRoLnJlYWxwYXRoKCkgbm93IGNvcnJlY3RseSByZXNvbHZlcyBtdWx0aXBsZSBuZXN0ZWQKLSAgc3ltbGlua3Mgb24gUE9TSVggcGxhdGZvcm1zLgotCi0tIElzc3VlICM3MzU4OiBjU3RyaW5nSU8uU3RyaW5nSU8gbm93IHN1cHBvcnRzIHdyaXRpbmcgdG8gYW5kIHJlYWRpbmcgZnJvbQotICBhIHN0cmVhbSBsYXJnZXIgdGhhbiAyIEdpQiBvbiA2NC1iaXQgc3lzdGVtcy4KLQotLSBJc3N1ZSAjMTAzNTU6IEluIFNwb29sZWRUZW1wb3JhcnlGaWxlIGNsYXNzIG1vZGUgYW5kIG5hbWUgcHJvcGVydGllcyBhbmQKLSAgeHJlYWRsaW5lcyBtZXRob2Qgbm93IHdvcmsgZm9yIHVucm9sbGVkIGZpbGVzLiAgZW5jb2RpbmcgYW5kIG5ld2xpbmVzCi0gIHByb3BlcnRpZXMgbm93IHJlbW92ZWQgYXMgdGhleSBoYXZlIG5vIHNlbnNlIGFuZCBhbHdheXMgcHJvZHVjZWQKLSAgQXR0cmlidXRlRXJyb3IuCi0KLS0gSXNzdWUgIzE2Njg2OiBGaXhlZCBhIGxvdCBvZiBidWdzIGluIGF1ZGlvb3AgbW9kdWxlLiAgRml4ZWQgY3Jhc2hlcyBpbgotICBhdmdwcCgpLCBtYXhwcCgpIGFuZCByYXRlY3YoKS4gIEZpeGVkIGFuIGludGVnZXIgb3ZlcmZsb3cgaW4gYWRkKCksIGJpYXMoKSwKLSAgYW5kIHJhdGVjdigpLiAgcmV2ZXJzZSgpLCBsaW4ybGluKCkgYW5kIHJhdGVjdigpIG5vIG1vcmUgbG9zZSBwcmVjaXNpb24gZm9yCi0gIDMyLWJpdCBzYW1wbGVzLiAgbWF4KCkgYW5kIHJtcygpIG5vIG1vcmUgcmV0dXJucyBhIG5lZ2F0aXZlIHJlc3VsdCBhbmQKLSAgdmFyaW91cyBvdGhlciBmdW5jdGlvbnMgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggMzItYml0IHNhbXBsZSAtMHg4MDAwMDAwMC4KLQotLSBJc3N1ZSAjMTcwNzM6IEZpeCBzb21lIGludGVnZXIgb3ZlcmZsb3dzIGluIHNxbGl0ZTMgbW9kdWxlLgotCi0tIElzc3VlICM2MDgzOiBGaXggbXVsdGlwbGUgc2VnbWVudGF0aW9uIGZhdWx0cyBvY2N1cnJlZCB3aGVuIFB5QXJnX1BhcnNlVHVwbGUKLSAgcGFyc2VzIG5lc3RlZCBtdXRhdGluZyBzZXF1ZW5jZS4KLQotLSBJc3N1ZSAjNTI4OTogRml4IGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSBvbiBTb2xhcmlzLgotCi0tIElzc3VlICMxNzEwNjogRml4IGEgc2VnbWVudGF0aW9uIGZhdWx0IGluIGlvLlRleHRJT1dyYXBwZXIgd2hlbiBhbiB1bmRlcmx5aW5nCi0gIHN0cmVhbSBvciBhIGRlY29kZXIgcHJvZHVjZXMgZGF0YSBvZiBhbiB1bmV4cGVjdGVkIHR5cGUgKGkuZS4gd2hlbgotICBpby5UZXh0SU9XcmFwcGVyIGluaXRpYWxpemVkIHdpdGggdGV4dCBzdHJlYW0gb3IgdXNlIGJ5dGVzLXRvLWJ5dGVzIGNvZGVjKS4KLQotLSBJc3N1ZSAjMTM5OTQ6IEFkZCBjb21wYXRpYmlsaXR5IGFsaWFzIGluIGRpc3R1dGlscy5jY29tcGlsZXIgZm9yCi0gIGRpc3R1dGlscy5zeXNjb25maWcuY3VzdG9taXplX2NvbXBpbGVyLgotCi0tIElzc3VlICMxNTYzMzogaHR0cGxpYi5IVFRQUmVzcG9uc2UgaXMgbm93IG1hcmsgY2xvc2VkIHdoZW4gdGhlIHNlcnZlcgotICBzZW5kcyBsZXNzIHRoYW4gdGhlIGFkdmVydGlzZWQgQ29udGVudC1MZW5ndGguCi0KLS0gSXNzdWUgIzE1ODgxOiBGaXhlZCBhdGV4aXQgaG9vayBpbiBtdWx0aXByb2Nlc3NpbmcuCi0KLS0gSXNzdWUgIzE0MzQwOiBVcGdyYWRlIHRoZSBlbWJlZGRlZCBleHBhdCBsaWJyYXJ5IHRvIHZlcnNpb24gMi4xLjAuCi0KLS0gSXNzdWUgIzExMTU5OiBTQVggcGFyc2VyIG5vdyBzdXBwb3J0cyB1bmljb2RlIGZpbGUgbmFtZXMuCi0KLS0gSXNzdWUgIzY5NzI6IFRoZSB6aXBmaWxlIG1vZHVsZSBubyBsb25nZXIgb3ZlcndyaXRlcyBmaWxlcyBvdXRzaWRlIG9mCi0gIGl0cyBkZXN0aW5hdGlvbiBwYXRoIHdoZW4gZXh0cmFjdGluZyBtYWxpY2lvdXMgemlwIGZpbGVzLgotCi0tIElzc3VlICMxNzA0OTogTG9jYWxpemVkIGNhbGVuZGFyIG1ldGhvZHMgbm93IHJldHVybiB1bmljb2RlIGlmIGEgbG9jYWxlCi0gIGluY2x1ZGVzIGFuIGVuY29kaW5nIGFuZCB0aGUgcmVzdWx0IHN0cmluZyBjb250YWlucyBtb250aCBvciB3ZWVrZGF5ICh3YXMKLSAgcmVncmVzc2lvbiBmcm9tIFB5dGhvbiAyLjYpLgotCi0tIElzc3VlICM0ODQ0OiBaaXBGaWxlIG5vdyByYWlzZXMgQmFkWmlwZmlsZSB3aGVuIG9wZW5zIGEgWklQIGZpbGUgd2l0aCBhbgotICBpbmNvbXBsZXRlICJFbmQgb2YgQ2VudHJhbCBEaXJlY3RvcnkiIHJlY29yZC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEd1aWxoZXJtZQotICBQb2xvIGFuZCBBbGFuIE1jSW50eXJlLgotCi0tIElzc3VlICMxNTUwNTogYHVuaXR0ZXN0Lmluc3RhbGxIYW5kbGVyYCBubyBsb25nZXIgYXNzdW1lcyBTSUdJTlQgaGFuZGxlciBpcwotICBzZXQgdG8gYSBjYWxsYWJsZSBvYmplY3QuCi0KLS0gSXNzdWUgIzE3MDUxOiBGaXggYSBtZW1vcnkgbGVhayBpbiBvcy5wYXRoLmlzZGlyKCkgb24gV2luZG93cy4gUGF0Y2ggYnkKLSAgUm9iZXJ0IFhpYW8uCi0KLS0gSXNzdWUgIzEzNDU0OiBGaXggYSBjcmFzaCB3aGVuIGRlbGV0aW5nIGFuIGl0ZXJhdG9yIGNyZWF0ZWQgYnkgaXRlcnRvb2xzLnRlZSgpCi0gIGlmIGFsbCBvdGhlciBpdGVyYXRvcnMgd2VyZSB2ZXJ5IGFkdmFuY2VkIGJlZm9yZS4KLQotLSBJc3N1ZSAjMTY5OTI6IE9uIFdpbmRvd3MgaW4gc2lnbmFsLnNldF93YWtldXBfZmQsIHZhbGlkYXRlIHRoZSBmaWxlCi0gIGRlc2NyaXB0b3IgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzE1ODYxOiB0a2ludGVyIG5vdyBjb3JyZWN0bHkgd29ya3Mgd2l0aCBsaXN0cyBhbmQgdHVwbGVzIGNvbnRhaW5pbmcKLSAgc3RyaW5ncyB3aXRoIHdoaXRlc3BhY2VzLCBiYWNrc2xhc2hlcyBvciB1bmJhbGFuY2VkIGJyYWNlcy4KLQotLSBJc3N1ZSAjMTA1Mjc6IFVzZSBwb2xsKCkgaW5zdGVhZCBvZiBzZWxlY3QoKSBmb3IgbXVsdGlwcm9jZXNzaW5nIHBpcGVzLgotCi0tIElzc3VlICM5NzIwOiB6aXBmaWxlIG5vdyB3cml0ZXMgY29ycmVjdCBsb2NhbCBoZWFkZXJzIGZvciBmaWxlcyBsYXJnZXIgdGhhbgotICA0IEdpQi4KLQotLSBJc3N1ZSAjMTM4OTk6IFxBLCBcWiwgYW5kIFxCIG5vdyBjb3JyZWN0bHkgbWF0Y2ggdGhlIEEsIFosIGFuZCBCIGxpdGVyYWxzCi0gIHdoZW4gdXNlZCBpbnNpZGUgY2hhcmFjdGVyIGNsYXNzZXMgKGUuZy4gJ1tcQV0nKS4gIFBhdGNoIGJ5IE1hdHRoZXcgQmFybmV0dC4KLQotLSBJc3N1ZSAjMTYzOTg6IE9wdGltaXplIGRlcXVlLnJvdGF0ZSgpIHNvIHRoYXQgaXQgb25seSBtb3ZlcyBwb2ludGVycwotICBhbmQgZG9lc24ndCB0b3VjaCB0aGUgdW5kZXJseWluZyBkYXRhIHdpdGggaW5jcmVmcyBhbmQgZGVjcmVmcy4KLQotLSBJc3N1ZSAjMTUxMDk6IEZpeCByZWdyZXNzaW9uIGluIHNxbGl0ZTMncyBpdGVyZHVtcCBtZXRob2Qgd2hlcmUgaXQgd291bGQKLSAgZGllIHdpdGggYW4gZW5jb2RpbmcgZXJyb3IgaWYgdGhlIGRhdGFiYXNlIGNvbnRhaW5lZCBzdHJpbmcgdmFsdWVzCi0gIGNvbnRhaW5pbmcgbm9uLUFTQ0lJLiAgKFJlZ3Jlc3Npb24gd2FzIGludHJvZHVjZWQgYnkgZml4IGZvciA5NzUwKS4KLQotLSBJc3N1ZSAjMTU1NDU6IEZpeCByZWdyZXNzaW9uIGluIHNxbGl0ZTMncyBpdGVyZHVtcCBtZXRob2Qgd2hlcmUgaXQgd2FzCi0gIGZhaWxpbmcgaWYgdGhlIGNvbm5lY3Rpb24gdXNlZCBhIHJvdyBmYWN0b3J5IChzdWNoIGFzIHNxbGl0ZTMuUm93KSB0aGF0Ci0gIHByb2R1Y2VkIHVuc29ydGFibGUgb2JqZWN0cy4gKFJlZ3Jlc3Npb24gd2FzIGludHJvZHVjZWQgYnkgZml4IGZvciA5NzUwKS4KLQotLSBJc3N1ZSAjMTY4Mjg6IEZpeCBlcnJvciBpbmNvcnJlY3RseSByYWlzZWQgYnkgYnoyLmNvbXByZXNzKCcnKS4gUGF0Y2ggYnkKLSAgTWFydGluIFBhY2ttYW4uCi0KLS0gSXNzdWUgIzk1ODY6IFJlZGVmaW5lIFNFTV9GQUlMRUQgb24gTWFjT1NYIHRvIGtlZXAgY29tcGlsZXIgaGFwcHkuCi0KLS0gSXNzdWUgIzEwNTI3OiBtYWtlIG11bHRpcHJvY2Vzc2luZyB1c2UgcG9sbCgpIGluc3RlYWQgb2Ygc2VsZWN0KCkgaWYgYXZhaWxhYmxlLgotCi0tIElzc3VlICMxNjQ4NTogTm93IGZpbGUgZGVzY3JpcHRvcnMgYXJlIGNsb3NlZCBpZiBmaWxlIGhlYWRlciBwYXRjaGluZyBmYWlsZWQKLSAgb24gY2xvc2luZyBhbiBhaWZjIGZpbGUuCi0KLS0gSXNzdWUgIzEyMDY1OiBjb25uZWN0X2V4KCkgb24gYW4gU1NMIHNvY2tldCBub3cgcmV0dXJucyB0aGUgb3JpZ2luYWwgZXJybm8KLSAgd2hlbiB0aGUgc29ja2V0J3MgdGltZW91dCBleHBpcmVzIChpdCB1c2VkIHRvIHJldHVybiBOb25lKS4KLQotLSBJc3N1ZSAjMTY3MTM6IEZpeCB0aGUgcGFyc2luZyBvZiB0ZWwgdXJsIHdpdGggcGFyYW1zIHVzaW5nIHVybHBhcnNlIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTY0NDM6IEFkZCBkb2NzdHJpbmdzIHRvIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaCBvYmplY3RzLgotICBQYXRjaCBieSBBbnRvbiBLYXN5YW5vdi4KLQotLSBJc3N1ZSAjODg1MzogQWxsb3cgcG9ydCB0byBiZSBvZiB0eXBlIGxvbmcgZm9yIHNvY2tldC5nZXRhZGRyaW5mbygpLgotCi0tIElzc3VlICMxNjU5NzogSW4gYnVmZmVyZWQgYW5kIHRleHQgSU8sIGNhbGwgY2xvc2UoKSBvbiB0aGUgdW5kZXJseWluZyBzdHJlYW0KLSAgaWYgaW52b2tpbmcgZmx1c2goKSBmYWlscy4KLQotLSBJc3N1ZSAjMTU3MDE6IEZpeCBIVFRQRXJyb3IgaW5mbyBtZXRob2QgY2FsbCB0byByZXR1cm4gdGhlIGhlYWRlcnMgaW5mb3JtYXRpb24uCi0KLS0gSXNzdWUgIzE2NjQ2OiBmdHBsaWIuRlRQLm1ha2Vwb3J0KCkgbWlnaHQgbG9zZSBzb2NrZXQgZXJyb3IgZGV0YWlscy4KLSAgKHBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EpCi0KLS0gSXNzdWUgIzE2NjI2OiBGaXggaW5maW5pdGUgcmVjdXJzaW9uIGluIGdsb2IuZ2xvYigpIG9uIFdpbmRvd3Mgd2hlbiB0aGUKLSAgcGF0dGVybiBjb250YWlucyBhIHdpbGRjYXJkIGluIHRoZSBkcml2ZSBvciBVTkMgcGF0aC4gIFBhdGNoIGJ5IFNlcmhpeQotICBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE2Mjk4OiBJbiBIVFRQUmVzcG9uc2UucmVhZCgpLCBjbG9zZSB0aGUgc29ja2V0IHdoZW4gdGhlcmUgaXMgbm8KLSAgQ29udGVudC1MZW5ndGggYW5kIHRoZSBpbmNvbWluZyBzdHJlYW0gaXMgZmluaXNoZWQuICBQYXRjaCBieSBFcmFuCi0gIFJ1bmRzdGVpbi4KLQotLSBJc3N1ZSAjMTYyNDg6IERpc2FibGUgY29kZSBleGVjdXRpb24gZnJvbSB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IGJ5Ci0gIHRraW50ZXIgd2hlbiB0aGUgLUUgZmxhZyBpcyBwYXNzZWQgdG8gUHl0aG9uLiAgUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgotCi0tIElzc3VlICMxNjYyODogRml4IGEgbWVtb3J5IGxlYWsgaW4gY3R5cGVzLnJlc2l6ZSgpLgotCi0tIElzc3VlICMxMzYxNDogRml4IHNldHVwLnB5IHJlZ2lzdGVyIGZhaWx1cmUgd2l0aCBpbnZhbGlkIHJzdCBpbiBkZXNjcmlwdGlvbi4KLSAgUGF0Y2ggYnkgSnVsaWVuIENvdXJ0ZWF1IGFuZCBQaWVycmUgUGF1bCBMZWZlYnZyZS4KLQotLSBJc3N1ZSAjMTAxODI6IFRoZSByZSBtb2R1bGUgZG9lc24ndCB0cnVuY2F0ZSBpbmRpY2VzIHRvIDMyIGJpdHMgYW55bW9yZS4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTY1NzM6IEluIDJ0bzMsIHRyZWF0IGVudW1lcmF0ZSgpIGxpa2UgYSBjb25zdW1pbmcgY2FsbCwgc28gc3VwZXJmbHVvdXMKLSAgbGlzdCgpIGNhbGxzIGFyZW4ndCBhZGRlZCB0byBmaWx0ZXIoKSwgbWFwKCksIGFuZCB6aXAoKSB3aGljaCBhcmUgZGlyZWN0bHkKLSAgcGFzc2VkIGVudW1lcmF0ZSgpLgotCi0tIElzc3VlICMxMTYwOiBGaXggY29tcGlsaW5nIGxhcmdlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgb24gVUNTMiBidWlsZHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE0MzEzOiB6aXBmaWxlIG5vdyByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvciB3aGVuIHRoZSBjb21wcmVzc2lvbgotICB0eXBlIGlzIHVua25vd24uCi0KLS0gSXNzdWUgIzE2NDA4OiBGaXggZmlsZSBkZXNjcmlwdG9ycyBub3QgYmVpbmcgY2xvc2VkIGluIGVycm9yIGNvbmRpdGlvbnMKLSAgaW4gdGhlIHppcGZpbGUgbW9kdWxlLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTYzMjc6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBubyBsb25nZXIgbGVha3MgZmlsZSBkZXNjcmlwdG9ycwotICB1c2VkIGZvciBzdGRpbi9zdGRvdXQvc3RkZXJyIHBpcGVzIHRvIHRoZSBjaGlsZCB3aGVuIGZvcmsoKSBmYWlscy4KLQotLSBJc3N1ZSAjMTQzOTY6IEhhbmRsZSB0aGUgb2RkIHJhcmUgY2FzZSBvZiB3YWl0cGlkIHJldHVybmluZyAwIHdoZW4gbm90Ci0gIGV4cGVjdGVkIGluIHN1YnByb2Nlc3MuUG9wZW4ud2FpdCgpLgotCi0tIElzc3VlICMxNjQxMTogRml4IGEgYnVnIHdoZXJlIHpsaWIuZGVjb21wcmVzc29iaigpLmZsdXNoKCkgbWlnaHQgdHJ5IHRvIGFjY2VzcwotICBwcmV2aW91c2x5LWZyZWVkIG1lbW9yeS4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTYzNTA6IHpsaWIuZGVjb21wcmVzc29iaigpLmRlY29tcHJlc3MoKSBub3cgYWNjdW11bGF0ZXMgZGF0YSBmcm9tCi0gIHN1Y2Nlc3NpdmUgY2FsbHMgYWZ0ZXIgRU9GIGluIHVudXNlZF9kYXRhLCBpbnN0ZWFkIG9mIG9ubHkgc2F2aW5nIHRoZSBhcmd1bWVudAotICB0byB0aGUgbGFzdCBjYWxsLiBkZWNvbXByZXNzb2JqKCkuZmx1c2goKSBub3cgY29ycmVjdGx5IHNldHMgdW51c2VkX2RhdGEgYW5kCi0gIHVuY29uc3VtZWRfdGFpbC4gQSBidWcgaW4gdGhlIGhhbmRsaW5nIG9mIE1lbW9yeUVycm9yIHdoZW4gc2V0dGluZyB0aGUKLSAgdW5jb25zdW1lZF90YWlsIGF0dHJpYnV0ZSBoYXMgYWxzbyBiZWVuIGZpeGVkLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxMjc1OTogc3JlX3BhcnNlIG5vdyByYWlzZXMgYSBwcm9wZXIgZXJyb3Igd2hlbiB0aGUgbmFtZSBvZiB0aGUgZ3JvdXAKLSAgaXMgbWlzc2luZy4gIEluaXRpYWwgcGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTYxNTI6IGZpeCB0b2tlbml6ZSB0byBpZ25vcmUgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBjb2RlIHdoZW4KLSAgbm8gbmV3bGluZSBpcyBmb3VuZC4gIFBhdGNoIGJ5IE5lZCBCYXRjaGVsZGVyLgotCi0tIElzc3VlICMxNjIzMDogRml4IGEgY3Jhc2ggaW4gc2VsZWN0LnNlbGVjdCgpIHdoZW4gb25lIG9mIHRoZSBsaXN0cyBjaGFuZ2VzCi0gIHNpemUgd2hpbGUgaXRlcmF0ZWQgb24uICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNjIyODogRml4IGEgY3Jhc2ggaW4gdGhlIGpzb24gbW9kdWxlIHdoZXJlIGEgbGlzdCBjaGFuZ2VzIHNpemUKLSAgd2hpbGUgaXQgaXMgYmVpbmcgZW5jb2RlZC4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE0ODk3OiBFbmhhbmNlIGVycm9yIG1lc3NhZ2VzIG9mIHN0cnVjdC5wYWNrIGFuZAotICBzdHJ1Y3QucGFja19pbnRvLiBQYXRjaCBieSBNYXR0aSBNw6RraS4KLQotLSBJc3N1ZSAjMTI4OTA6IGNnaXRiIG5vIGxvbmdlciBwcmludHMgc3B1cmlvdXMgPHA+IHRhZ3MgaW4gdGV4dAotICBtb2RlIHdoZW4gdGhlIGxvZ2RpciBvcHRpb24gaXMgc3BlY2lmaWVkLgotCi0tIElzc3VlICMxNDM5ODogRml4IHNpemUgdHJ1bmNhdGlvbiBhbmQgb3ZlcmZsb3cgYnVncyBpbiB0aGUgYnoyIG1vZHVsZS4KLQotLSBJc3N1ZSAjNTE0ODogSWdub3JlICdVJyBpbiBtb2RlIGdpdmVuIHRvIGd6aXAub3BlbigpIGFuZCBnemlwLkd6aXBGaWxlKCkuCi0KLS0gSXNzdWUgIzE2MjIwOiB3c2dpcmVmIG5vdyBhbHdheXMgY2FsbHMgY2xvc2UoKSBvbiBhbiBpdGVyYWJsZSByZXNwb25zZS4KLSAgUGF0Y2ggYnkgQnJlbnQgVHViYnMuCi0KLS0gSXNzdWUgIzE2NDYxOiBXYXZlIGxpYnJhcnkgc2hvdWxkIGJlIGFibGUgdG8gZGVhbCB3aXRoIDRHQiB3YXYgZmlsZXMsCi0gIGFuZCBzYW1wbGUgcmF0ZSBvZiA0NDEwMCBIei4KLQotLSBJc3N1ZSAjMTYxNzY6IFByb3Blcmx5IGlkZW50aWZ5IFdpbmRvd3MgOCB2aWEgcGxhdGZvcm0ucGxhdGZvcm0oKQotCi0tIElzc3VlICMxNTc1Njogc3VicHJvY2Vzcy5wb2xsKCkgbm93IHByb3Blcmx5IGhhbmRsZXMgZXJybm8uRUNISUxEIHRvCi0gIHJldHVybiBhIHJldHVybmNvZGUgb2YgMCB3aGVuIHRoZSBjaGlsZCBoYXMgYWxyZWFkeSBleGl0ZWQgb3IgY2Fubm90Ci0gIGJlIHdhaXRlZCBvbi4KLQotLSBJc3N1ZSAjMTIzNzY6IFBhc3Mgb24gcGFyYW1ldGVycyBpbiBUZXh0VGVzdFJlc3VsdC5fX2luaXRfXyBzdXBlciBjYWxsCi0KLS0gSXNzdWUgIzE1MjIyOiBJbnNlcnQgYmxhbmsgbGluZSBhZnRlciBlYWNoIG1lc3NhZ2UgaW4gbWJveCBtYWlsYm94ZXMKLQotLSBJc3N1ZSAjMTYwMTM6IEZpeCBDU1YgUmVhZGVyIHBhcnNpbmcgaXNzdWUgd2l0aCBlbmRpbmcgcXVvdGUgY2hhcmFjdGVycy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU0MjE6IGZpeCBhbiBPdmVyZmxvd0Vycm9yIGluIENhbGVuZGFyLml0ZXJtb250aGRhdGVzKCkgYWZ0ZXIKLSAgZGF0ZXRpbWUuTUFYWUVBUi4gIFBhdGNoIGJ5IEPDqWRyaWMgS3JpZXIuCi0KLS0gSXNzdWUgIzE1OTcwOiB4bWwuZXRyZWUuRWxlbWVudFRyZWUgbm93IHNlcmlhbGl6ZXMgY29ycmVjdGx5IHRoZSBlbXB0eSBIVE1MCi0gIGVsZW1lbnRzICdtZXRhJyBhbmQgJ3BhcmFtJy4KLQotLSBJc3N1ZSAjMTU2NzY6IE5vdyAibW1hcCIgY2hlY2sgZm9yIGVtcHR5IGZpbGVzIGJlZm9yZSBkb2luZyB0aGUKLSAgb2Zmc2V0IGNoZWNrLiAgUGF0Y2ggYnkgU3RldmVuIFdpbGxpcy4KLQotLSBJc3N1ZSAjMTUzNDA6IEZpeCBpbXBvcnRpbmcgdGhlIHJhbmRvbSBtb2R1bGUgd2hlbiAvZGV2L3VyYW5kb20gY2Fubm90Ci0gIGJlIG9wZW5lZC4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBjYXVzZWQgYnkgdGhlIGhhc2ggcmFuZG9taXphdGlvbiBwYXRjaC4KLQotLSBJc3N1ZSAjMTU4NDE6IFRoZSByZWFkYWJsZSgpLCB3cml0YWJsZSgpIGFuZCBzZWVrYWJsZSgpIG1ldGhvZHMgb2YKLSAgaW8uQnl0ZXNJTyBhbmQgaW8uU3RyaW5nSU8gb2JqZWN0cyBub3cgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBvYmplY3QgaGFzCi0gIGJlZW4gY2xvc2VkLiAgUGF0Y2ggYnkgQWxlc3NhbmRybyBNb3VyYS4KLQotLSBJc3N1ZSAjMTYxMTI6IHBsYXRmb3JtLmFyY2hpdGVjdHVyZSBkb2VzIG5vdCBjb3JyZWN0bHkgZXNjYXBlIGFyZ3VtZW50IHRvCi0gIC91c3IvYmluL2ZpbGUuICBQYXRjaCBieSBEYXZpZCBCZW5qYW1pbi4KLQotLSBJc3N1ZSAjMTI3NzYsIzExODM5OiBjYWxsIGFyZ3BhcnNlIHR5cGUgZnVuY3Rpb24gKHNwZWNpZmllZCBieSBhZGRfYXJndW1lbnQpCi0gIG9ubHkgb25jZS4gQmVmb3JlLCB0aGUgdHlwZSBmdW5jdGlvbiB3YXMgY2FsbGVkIHR3aWNlIGluIHRoZSBjYXNlIHdoZXJlIHRoZQotICBkZWZhdWx0IHdhcyBzcGVjaWZpZWQgYW5kIHRoZSBhcmd1bWVudCB3YXMgZ2l2ZW4gYXMgd2VsbC4gIFRoaXMgd2FzCi0gIGVzcGVjaWFsbHkgcHJvYmxlbWF0aWMgZm9yIHRoZSBGaWxlVHlwZSB0eXBlLCBhcyBhIGRlZmF1bHQgZmlsZSB3b3VsZCBhbHdheXMKLSAgYmUgb3BlbmVkLCBldmVuIGlmIGEgZmlsZSBhcmd1bWVudCB3YXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzE1OTA2OiBGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlIGNhdXNlZCBieSB0aGUgcHJlY2VkaW5nIGNoYW5nZSwKLSAgd2hlbiBhY3Rpb249J2FwcGVuZCcsIHR5cGU9J3N0cicgYW5kIGRlZmF1bHQ9W10uCi0KLS0gSXNzdWUgIzEzMzcwOiBFbnN1cmUgdGhhdCBjdHlwZXMgd29ya3Mgb24gTWFjIE9TIFggd2hlbiBQeXRob24gaXMKLSAgY29tcGlsZWQgdXNpbmcgdGhlIGNsYW5nIGNvbXBpbGVyCi0KLS0gSXNzdWUgIzE1NTQ0OiBGaXggRGVjaW1hbC5fX2Zsb2F0X18gdG8gd29yayB3aXRoIHBheWxvYWQtY2FycnlpbmcgTmFOcy4KLQotLSBJc3N1ZSAjMTUxOTk6IEZpeCBKYXZhU2NyaXB0J3MgZGVmYXVsdCBNSU1FIHR5cGUgdG8gYXBwbGljYXRpb24vamF2YXNjcmlwdC4KLSAgUGF0Y2ggYnkgQm9odXNsYXYgS2FicmRhLgotCi0tIElzc3VlICMxNTQ3NzogSW4gY21hdGggYW5kIG1hdGggbW9kdWxlcywgYWRkIHdvcmthcm91bmQgZm9yIHBsYXRmb3JtcyB3aG9zZQotICBzeXN0ZW0tc3VwcGxpZWQgbG9nMXAgZnVuY3Rpb24gZG9lc24ndCByZXNwZWN0IHNpZ25zIG9mIHplcm9zLgotCi0tIElzc3VlICMxMTA2MjogRml4IGFkZGluZyBhIG1lc3NhZ2UgZnJvbSBmaWxlIHRvIEJhYnlsIG1haWxib3guCi0KLS0gSXNzdWUgIzE1NjQ2OiBQcmV2ZW50IGVxdWl2YWxlbnQgb2YgYSBmb3JrIGJvbWIgd2hlbiB1c2luZwotICBtdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyB3aXRob3V0IHRoZSAiaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJyIKLSAgaWRpb20uCi0KLS0gSXNzdWUgIzE1NTY3OiBGaXggTmFtZUVycm9yIHdoZW4gcnVubmluZyB0aHJlYWRpbmcuX3Rlc3QKLQotLSBJc3N1ZSAjMTU0MjQ6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGFycmF5IG9iamVjdHMuCi0gIFBhdGNoIGJ5IEx1ZHdpZyBIw6RobmUuCi0KLS0gSXNzdWUgIzE1NTM4OiBGaXggY29tcGlsYXRpb24gb2YgdGhlIGdldG5hbWVpbmZvKCkgLyBnZXRhZGRyaW5mbygpCi0gIGVtdWxhdGlvbiBjb2RlLiAgUGF0Y2ggYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KLQotLSBJc3N1ZSAjMTIyODg6IENvbnNpZGVyICcwJyBhbmQgJzAuMCcgYXMgdmFsaWQgaW5pdGlhbHZhbHVlCi0gIGZvciB0a2ludGVyIFNpbXBsZURpYWxvZy4KLQotLSBJc3N1ZSAjMTU0ODk6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIEJ5dGVzSU8gb2JqZWN0cy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU0Njk6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIGRlcXVlIG9iamVjdHMuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NDg3OiBBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBidWZmZXJlZCBJL08gb2JqZWN0cy4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU1MTI6IEFkZCBhIF9fc2l6ZW9mX18gaW1wbGVtZW50YXRpb24gZm9yIHBhcnNlci4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTU0MDI6IEFuIGlzc3VlIGluIHRoZSBzdHJ1Y3QgbW9kdWxlIHRoYXQgY2F1c2VkIHN5cy5nZXRzaXplb2YgdG8KLSAgcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIGZvciBzdHJ1Y3QuU3RydWN0IGluc3RhbmNlcyBoYXMgYmVlbiBmaXhlZC4KLSAgSW5pdGlhbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMxNTIzMjogd2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBlbWFpbC5HZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzCi0gIGxpbmVzIHRoYXQgc3RhcnQgd2l0aCAnRnJvbSAnIHRoYXQgb2NjdXIgaW4gYSBNSU1FIHByZWFtYmxlIG9yIGVwaWxvZy4KLQotLSBJc3N1ZSAjMTM5MjI6IGFyZ3BhcnNlIG5vIGxvbmdlciBpbmNvcnJlY3RseSBzdHJpcHMgJy0tJ3MgdGhhdCBhcHBlYXIKLSAgYWZ0ZXIgdGhlIGZpcnN0IG9uZS4KLQotLSBJc3N1ZSAjMTIzNTM6IGFyZ3BhcnNlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KLQotLSBJc3N1ZSAjNjQ5MzogQW4gaXNzdWUgaW4gY3R5cGVzIG9uIFdpbmRvd3MgdGhhdCBjYXVzZWQgc3RydWN0dXJlIGJpdGZpZWxkcwotICBvZiB0eXBlIGN0eXBlcy5jX3VpbnQzMiBhbmQgd2lkdGggMzIgdG8gaW5jb3JyZWN0bHkgYmUgc2V0IGhhcyBiZWVuIGZpeGVkLgotCi0tIElzc3VlICMxNDYzNTogdGVsbmV0bGliIHdpbGwgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSB3aGVuIHBvc3NpYmxlCi0gIHRvIGF2b2lkIGZhaWxpbmcgZHVlIHRvIHRoZSBzZWxlY3QoKSBmaWxlIGRlc2NyaXB0b3IgbGltaXQuCi0KLS0gSXNzdWUgIzE1MjQ3OiBGaWxlSU8gbm93IHJhaXNlcyBhbiBlcnJvciB3aGVuIGdpdmVuIGEgZmlsZSBkZXNjcmlwdG9yCi0gIHBvaW50aW5nIHRvIGEgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxNDU5MTogRml4IGJ1ZyBpbiBSYW5kb20uanVtcGFoZWFkIHRoYXQgY291bGQgcHJvZHVjZSBhbiBpbnZhbGlkCi0gIE1lcnNlbm5lIFR3aXN0ZXIgc3RhdGUgb24gNjQtYml0IG1hY2hpbmVzLgotCi0tIElzc3VlICM1MzQ2OiBQcmVzZXJ2ZSBwZXJtaXNzaW9ucyBvZiBtYm94LCBNTURGIGFuZCBCYWJ5bCBtYWlsYm94Ci0gIGZpbGVzIG9uIGZsdXNoKCkuCi0KLS0gSXNzdWUgIzE1MjE5OiBGaXggYSByZWZlcmVuY2UgbGVhayB3aGVuIGhhc2hsaWIubmV3KCkgaXMgY2FsbGVkIHdpdGgKLSAgaW52YWxpZCBwYXJhbWV0ZXJzLgotCi0tIElzc3VlICM5NTU5OiBJZiBtZXNzYWdlcyB3ZXJlIG9ubHkgYWRkZWQsIGEgbmV3IGZpbGUgaXMgbm8gbG9uZ2VyCi0gIGNyZWF0ZWQgYW5kIHJlbmFtZWQgb3ZlciB0aGUgb2xkIGZpbGUgd2hlbiBmbHVzaCgpIGlzIGNhbGxlZCBvbiBhbgotICBtYm94LCBNTURGIG9yIEJhYnlsIG1haWxib3guCi0KLS0gSXNzdWUgIzE0NjUzOiBlbWFpbC51dGlscy5ta3RpbWVfdHooKSBubyBsb25nZXIgcmVsaWVzIG9uIHN5c3RlbQotICBta3RpbWUoKSB3aGVuIHRpbWV6b25lIG9mZmVzdCBpcyBzdXBwbGllZC4KLQotLSBJc3N1ZSAjNjA1NjogTWFrZSBtdWx0aXByb2Nlc3NpbmcgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZQotICBzb2NrZXRzIGl0IHVzZXMuICBPcmlnaW5hbCBwYXRjaCBieSBKIERlcmVrIFdpbHNvbi4KLQotLSBJc3N1ZSAjMTUxMDE6IE1ha2UgcG9vbCBmaW5hbGl6ZXIgYXZvaWQgam9pbmluZyBjdXJyZW50IHRocmVhZC4KLQotLSBJc3N1ZSAjMTUwNTQ6IEEgYnVnIGluIHRva2VuaXplLnRva2VuaXplIHRoYXQgY2F1c2VkIHN0cmluZyBsaXRlcmFscwotICB3aXRoICdiJyBhbmQgJ2JyJyBwcmVmaXhlcyB0byBiZSBpbmNvcnJlY3RseSB0b2tlbml6ZWQgaGFzIGJlZW4gZml4ZWQuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1MDM2OiBNYWlsYm94IG5vIGxvbmdlciB0aHJvd3MgYW4gZXJyb3IgaWYgYSBmbHVzaCBpcyBkb25lCi0gIGJldHdlZW4gb3BlcmF0aW9ucyB3aGVuIHJlbW92aW5nIG9yIGNoYW5naW5nIG11bHRpcGxlIGl0ZW1zIGluIG1ib3gsCi0gIE1NREYsIG9yIEJhYnlsIG1haWxib3hlcy4KLQotLSBJc3N1ZSAjMTAxMzM6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIGRlYWxsb2NhdGUgYnVmZmVyIGlmIHNvY2tldCByZWFkCi0gIGZhaWxzLiAgUGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KLQotLSBJc3N1ZSAjMTM4NTQ6IE1ha2UgbXVsdGlwcm9jZXNzaW5nIHByb3Blcmx5IGhhbmRsZSBub24taW50ZWdlcgotICBub24tc3RyaW5nIGFyZ3VtZW50IHRvIFN5c3RlbUV4aXQuCi0KLS0gSXNzdWUgIzEyMTU3OiBNYWtlIHBvb2wubWFwKCkgZW1wdHkgaXRlcmFibGVzIGNvcnJlY3RseS4gIEluaXRpYWwKLSAgcGF0Y2ggYnkgbW91YWQuCi0KLS0gSXNzdWUgIzE0MDM2OiBBZGQgYW4gYWRkaXRpb25hbCBjaGVjayB0byB2YWxpZGF0ZSB0aGF0IHBvcnQgaW4gdXJscGFyc2UgZG9lcwotICBub3QgZ28gaW4gaWxsZWdhbCByYW5nZSBhbmQgcmV0dXJucyBOb25lLgotCi0tIElzc3VlICMxNDg4ODogRml4IG1pc2JlaGF2aW91ciBvZiB0aGUgX21kNSBtb2R1bGUgd2hlbiBjYWxsZWQgb24gZGF0YQotICBsYXJnZXIgdGhhbiAyKiozMiBieXRlcy4KLQotLSBJc3N1ZSAjMTU5MDg6IEZpeCBtaXNiZWhhdmlvdXIgb2YgdGhlIHNoYTEgbW9kdWxlIHdoZW4gY2FsbGVkIG9uIGRhdGEKLSAgbGFyZ2VyIHRoYW4gMioqMzIgYnl0ZXMuCi0KLS0gSXNzdWUgIzE1OTEwOiBGaXggbWlzYmVoYXZpb3VyIG9mIF9tZDUgYW5kIHNoYTEgbW9kdWxlcyB3aGVuICJ1cGRhdGluZyIKLSAgb24gZGF0YSBsYXJnZXIgdGhhbiAyKiozMiBieXRlcy4KLQotLSBJc3N1ZSAjMTQ4NzU6IFVzZSBmbG9hdCgnaW5mJykgaW5zdGVhZCBvZiBmbG9hdCgnMWU2NjY2NicpIGluIHRoZSBqc29uIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTQ1NzI6IFByZXZlbnQgYnVpbGQgZmFpbHVyZXMgd2l0aCBwcmUtMy41LjAgdmVyc2lvbnMgb2YKLSAgc3FsaXRlMywgc3VjaCBhcyB3YXMgc2hpcHBlZCB3aXRoIENlbnRvcyA1IGFuZCBNYWMgT1MgWCAxMC40LgotCi0tIElzc3VlICMxNDQyNjogQ29ycmVjdCB0aGUgRGF0ZSBmb3JtYXQgaW4gRXhwaXJlcyBhdHRyaWJ1dGUgb2YgU2V0LUNvb2tpZQotICBIZWFkZXIgaW4gQ29va2llLnB5LgotCi0tIElzc3VlICMxNDcyMTogU2VuZCBwcm9wZXIgaGVhZGVyLCBDb250ZW50LWxlbmd0aDogMCB3aGVuIHRoZSBib2R5IGlzIGFuIGVtcHR5Ci0gIHN0cmluZyAnJy4gSW5pdGlhbCBQYXRjaCBjb250cmlidXRlZCBieSBBcnZlIEtudWRzZW4uCi0KLS0gSXNzdWUgIzE0MDcyOiBGaXggcGFyc2luZyBvZiAndGVsJyBVUklzIGluIHVybHBhcnNlIGJ5IG1ha2luZyB0aGUgY2hlY2sgZm9yCi0gIHBvcnRzIHN0cmljdGVyLgotCi0tIElzc3VlICM5Mzc0OiBHZW5lcmljIHBhcnNpbmcgb2YgcXVlcnkgYW5kIGZyYWdtZW50IHBvcnRpb25zIG9mIHVybCBmb3IgYW55Ci0gIHNjaGVtZS4gU3VwcG9ydGVkIGJvdGggYnkgUkZDMzk4NiBhbmQgUkZDMjM5Ni4KLQotLSBJc3N1ZSAjMTQ3OTg6IEZpeCB0aGUgZnVuY3Rpb25zIGluIHB5Y2xiciB0byByYWlzZSBhbiBJbXBvcnRFcnJvcgotICB3aGVuIHRoZSBmaXJzdCBwYXJ0IG9mIGEgZG90dGVkIG5hbWUgaXMgbm90IGEgcGFja2FnZS4gUGF0Y2ggYnkKLSAgWGF2aWVyIGRlIEdheWUuCi0KLS0gSXNzdWUgIzE0ODMyOiBmaXhlZCB0aGUgb3JkZXIgb2YgdGhlIGFyZ3VtZW50IHJlZmVyZW5jZXMgaW4gdGhlIGVycm9yCi0gIG1lc3NhZ2UgcHJvZHVjZWQgYnkgdW5pdHRlc3QncyBhc3NlcnRJdGVtc0VxdWFsLgotCi0tIElzc3VlICMxNDgyOTogRml4IGJpc2VjdCBpc3N1ZXMgdW5kZXIgNjQtYml0IFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE0Nzc3OiB0a2ludGVyIG1heSByZXR1cm4gdW5kZWNvZGVkIFVURi04IGJ5dGVzIGFzIGEgc3RyaW5nIHdoZW4KLSAgYWNjZXNzaW5nIHRoZSBUayBjbGlwYm9hcmQuICBNb2RpZnkgY2xpcGJvYXJkX2dldCgpIHRvIGZpcnN0IHJlcXVlc3QgdHlwZQotICBVVEY4X1NUUklORyB3aGVuIG5vIHNwZWNpZmljIHR5cGUgaXMgcmVxdWVzdGVkIGluIGFuIFgxMSB3aW5kb3dpbmcKLSAgZW52aXJvbm1lbnQsIGZhbGxpbmcgYmFjayB0byB0aGUgY3VycmVudCBkZWZhdWx0IHR5cGUgU1RSSU5HIGlmIHRoYXQgZmFpbHMuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBLbHV5dmVyLgotCi0tIElzc3VlICMxMjU0MTogQmUgbGVuaWVudCB3aXRoIHF1b3RlcyBhcm91bmQgUmVhbG0gZmllbGQgd2l0aCBIVFRQIEJhc2ljCi0gIEF1dGhlbnRhdGlvbiBpbiB1cmxsaWIyLgotCi0tIElzc3VlICMxNDY2MjogUHJldmVudCBzaHV0aWwgZmFpbHVyZXMgb24gT1MgWCB3aGVuIGRlc3RpbmF0aW9uIGRvZXMgbm90Ci0gIHN1cHBvcnQgY2hmbGFnIG9wZXJhdGlvbnMuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCi0KLS0gSXNzdWUgIzE0MTU3OiBGaXggdGltZS5zdHJwdGltZSBmYWlsaW5nIHdpdGhvdXQgYSB5ZWFyIG9uIEZlYnJ1YXJ5IDI5dGguCi0gIFBhdGNoIGJ5IEh5bmVrIFNjaGxhd2Fjay4KLQotLSBJc3N1ZSAjMTQ3Njg6IG9zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aGVuIEhPTUUgaXMgJy8nLgotCi0tIElzc3VlICMxMzE4MzogRml4IHBkYiBza2lwcGluZyBmcmFtZXMgYWZ0ZXIgaGl0dGluZyBhIGJyZWFrcG9pbnQgYW5kIHJ1bm5pbmcKLSAgc3RlcC4gIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgotCi0tIElzc3VlICMxNDY2NDogSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSBAdW5pdHRlc3Quc2tpcHtJZixVbmxlc3N9IG9uIGEKLSAgdGVzdCBjbGFzcyB0aGF0IGRvZXNuJ3QgaW5oZXJpdCBmcm9tIFRlc3RDYXNlIChpLmUuIGEgbWl4aW4pLgotCi0tIElzc3VlICMxNDE2MDogVGFyRmlsZS5leHRyYWN0ZmlsZSgpIGZhaWxlZCB0byByZXNvbHZlIHN5bWJvbGljIGxpbmtzIHdoZW4KLSAgdGhlIGxpbmtzIHdlcmUgbm90IGxvY2F0ZWQgaW4gYW4gYXJjaGl2ZSBzdWJkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzE0NjM4OiBweWRvYyBub3cgdHJlYXRzIG5vbi1zdHJpbmcgX19uYW1lX18gdmFsdWVzIGFzIGlmIHRoZXkKLSAgd2VyZSBtaXNzaW5nLCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzEzNjg0OiBGaXggaHR0cGxpYiB0dW5uZWwgaXNzdWUgb2YgaW5maW5pdGUgbG9vcHMgZm9yIGNlcnRhaW4gc2l0ZXMKLSAgd2hpY2ggc2VuZCBFT0Ygd2l0aG91dCB0cmFpbGluZyBcclxuLgotCi0tIElzc3VlICMxNDMwODogRml4IGFuIGV4Y2VwdGlvbiB3aGVuIGEgImR1bW15IiB0aHJlYWQgaXMgaW4gdGhlIHRocmVhZGluZwotICBtb2R1bGUncyBhY3RpdmUgbGlzdCBhZnRlciBhIGZvcmsoKS4KLQotLSBJc3N1ZSAjMTQ1Mzg6IEhUTUxQYXJzZXIgY2FuIG5vdyBwYXJzZSBjb3JyZWN0bHkgc3RhcnQgdGFncyB0aGF0IGNvbnRhaW4KLSAgYSBiYXJlICcvJy4KLQotLSBJc3N1ZSAjMTQ0NTI6IFN5c0xvZ0hhbmRsZXIgbm8gbG9uZ2VyIGluc2VydHMgYSBVVEYtOCBCT00gaW50byB0aGUgbWVzc2FnZS4KLQotLSBJc3N1ZSAjMTM0OTY6IEZpeCBwb3RlbnRpYWwgb3ZlcmZsb3cgaW4gYmlzZWN0LmJpc2VjdCBhbGdvcml0aG0gd2hlbiBhcHBsaWVkCi0gIHRvIGEgY29sbGVjdGlvbiBvZiBzaXplID4gc3lzLm1heHNpemUgLyAyLgotCi0tIElzc3VlICMxNDM5OTogemlwZmlsZSBub3cgcmVjb2duaXplcyB0aGF0IHRoZSBhcmNoaXZlIGhhcyBiZWVuIG1vZGlmaWVkIGV2ZW4KLSAgaWYgb25seSB0aGUgY29tbWVudCBpcyBjaGFuZ2VkLiAgQXMgYSBjb25zZXF1ZW5jZSBvZiB0aGlzIGZpeCwgWmlwRmlsZSBpcyBub3cKLSAgYSBuZXcgc3R5bGUgY2xhc3MuCi0KLS0gSXNzdWUgIzc5Nzg6IFNvY2tldFNlcnZlciBub3cgcmVzdGFydHMgdGhlIHNlbGVjdCgpIGNhbGwgd2hlbiBFSU5UUiBpcwotICByZXR1cm5lZC4gIFRoaXMgYXZvaWRzIGNyYXNoaW5nIHRoZSBzZXJ2ZXIgbG9vcCB3aGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLgotICBQYXRjaCBieSBKZXJ6eSBLb3plcmEuCi0KLS0gSXNzdWUgIzEwMzQwOiBhc3luY29yZSAtIHByb3Blcmx5IGhhbmRsZSBFSU5WQUwgaW4gZGlzcGF0Y2hlciBjb25zdHJ1Y3RvciBvbgotICBPU1g7IGF2b2lkIHRvIGNhbGwgaGFuZGxlX2Nvbm5lY3QgaW4gY2FzZSBvZiBhIGRpc2Nvbm5lY3RlZCBzb2NrZXQgd2hpY2gKLSAgd2FzIG5vdCBtZWFudCB0byBjb25uZWN0LgotCi0tIElzc3VlICMxMjc1NzogRml4IHRoZSBza2lwcGluZyBvZiBkb2N0ZXN0cyB3aGVuIHB5dGhvbiBpcyBydW4gd2l0aCAtT08gc28KLSAgdGhhdCBpdCB3b3JrcyBpbiB1bml0dGVzdCdzIHZlcmJvc2UgbW9kZSBhcyB3ZWxsIGFzIG5vbi12ZXJib3NlIG1vZGUuCi0KLS0gSXNzdWUgIzEzNjk0OiBhc3luY2hyb25vdXMgY29ubmVjdCBpbiBhc3luY29yZS5kaXNwYXRjaGVyIGRvZXMgbm90IHNldCBhZGRyCi0gIGF0dHJpYnV0ZS4KLQotLSBJc3N1ZSAjMTA0ODQ6IEZpeCB0aGUgQ0dJSFRUUFNlcnZlcidzIFBBVEhfSU5GTyBoYW5kbGluZyBwcm9ibGVtLgotCi0tIElzc3VlICMxMTE5OTogRml4IHRoZSB3aXRoIHVybGxpYiB3aGljaCBoYW5ncyBvbiBwYXJ0aWN1bGFyIGZ0cCB1cmxzLgotCi0tIElzc3VlICMxNDI1MjogRml4IHN1YnByb2Nlc3MuUG9wZW4udGVybWluYXRlKCkgdG8gbm90IHJhaXNlIGFuIGVycm9yIHVuZGVyCi0gIFdpbmRvd3Mgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBoYXMgYWxyZWFkeSBleGl0ZWQuCi0KLS0gSXNzdWUgIzE0MTk1OiBBbiBpc3N1ZSB0aGF0IGNhdXNlZCB3ZWFrcmVmLldlYWtTZXQgaW5zdGFuY2VzIHRvIGluY29ycmVjdGx5Ci0gIHJldHVybiBUcnVlIGZvciBhIFdlYWtTZXQgaW5zdGFuY2UgJ2EnIGluIGJvdGggJ2EgPCBhJyBhbmQgJ2EgPiBhJyBoYXMgYmVlbgotICBmaXhlZC4KLQotLSBJc3N1ZSAjMTQxNTk6IEZpeCB0aGUgbGVuKCkgb2Ygd2VhayBzZXRzIHRvIHJldHVybiBhIGJldHRlciBhcHByb3hpbWF0aW9uCi0gIHdoZW4gc29tZSBvYmplY3RzIGFyZSBkZWFkIG9yIGR5aW5nLiAgTW9yZW92ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cKLSAgTygxKSByYXRoZXIgdGhhbiBPKG4pLgotCi0tIElzc3VlICMyOTQ1OiBNYWtlIHRoZSBkaXN0dXRpbHMgdXBsb2FkIGNvbW1hbmQgYXdhcmUgb2YgYmRpc3RfcnBtIHByb2R1Y3RzLgotCi0tIElzc3VlICM2ODg0OiBGaXggbG9uZy1zdGFuZGluZyBidWdzIHdpdGggTUFOSUZFU1QuaW4gcGFyc2luZyBpbiBkaXN0dXRpbHMKLSAgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMTY0NDE6IEF2b2lkIGV4Y2Vzc2l2ZSBtZW1vcnkgdXNhZ2Ugd29ya2luZyB3aXRoIGxhcmdlIGd6aXAKLSAgZmlsZXMgdXNpbmcgdGhlIGd6aXAgbW9kdWxlLgotCi0tIElzc3VlICMxNTc4MjogUHJldmVudCBjb21waWxlIGVycm9ycyBvZiBPUyBYIENhcmJvbiBtb2R1bGVzIF9GbSwgX1FkLCBhbmQKLSAgX1Fkb2ZmcyB3aGVuIGNvbXBpbGluZyB3aXRoIGFuIFNESyBvZiAxMC43IG9yIGxhdGVyLiAgVGhlIE9TIFggQVBJcyB0aGV5Ci0gIHdyYXAgaGF2ZSBsb25nIGJlZW4gZGVwcmVjYXRlZCBhbmQgaGF2ZSBub3cgYmVlbiByZW1vdmVkIHdpdGggMTAuNy4KLSAgVGhlc2UgbW9kdWxlcyB3ZXJlIGFscmVhZHkgZW1wdHkgZm9yIDY0LWJpdCBidWlsZHMgYW5kIGhhdmUgYmVlbiByZW1vdmVkCi0gIGluIFB5dGhvbiAzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTc0Nzc6IFVwZGF0ZSB0aGUgYnNkZGIgbW9kdWxlIHRvIHB5YnNkZGIgNS4zLjAsIHN1cHBvcnRpbmcKLSAgZGItNS54LCBhbmQgZHJvcHBpbmcgc3VwcG9ydCBmb3IgZGItNC4xIGFuZCBkYi00LjIuCi0KLS0gSXNzdWUgIzE3MTkyOiBVcGRhdGUgdGhlIGN0eXBlcyBtb2R1bGUncyBsaWJmZmkgdG8gdjMuMC4xMy4gIFRoaXMKLSAgc3BlY2lmaWNhbGx5IGFkZHJlc3NlcyBhIHN0YWNrIG1pc2FsaWdubWVudCBpc3N1ZSBvbiB4ODYgYW5kIGlzc3VlcyBvbgotICBzb21lIG1vcmUgcmVjZW50IHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTIyNjg6IFRoZSBpbyBtb2R1bGUgZmlsZSBvYmplY3Qgd3JpdGUgbWV0aG9kcyBubyBsb25nZXIgYWJvcnQgZWFybHkKLSAgd2hlbiBhIHdyaXRlIHN5c3RlbSBjYWxscyBpcyBpbnRlcnJ1cHRlZCAoRUlOVFIpLgotCi0tIEZpeCB0aGUgbGVhayBvZiBhIGRpY3QgaW4gdGhlIHRpbWUgbW9kdWxlIHdoZW4gdXNlZCBpbiBhbiBlbWJlZGRlZAotICBpbnRlcnByZXRlciB0aGF0IGlzIHJlcGVhdGVkbHkgaW5pdGlhbGl6ZWQgYW5kIHNodXRkb3duIGFuZCByZWluaXRpYWxpemVkLgotCi0tIElzc3VlICMxMjI2ODogRmlsZSByZWFkbGluZSwgcmVhZGxpbmVzIGFuZCByZWFkIG9yIHJlYWRhbGwgbWV0aG9kcwotICBubyBsb25nZXIgbG9zZSBkYXRhIHdoZW4gYW4gdW5kZXJseWluZyByZWFkIHN5c3RlbSBjYWxsIGlzIGludGVycnVwdGVkCi0gIHdpdGhpbiBhbiBpbyBtb2R1bGUgb2JqZWN0LiAgSU9FcnJvciBpcyBubyBsb25nZXIgcmFpc2VkIGR1ZSB0byBhIHJlYWQKLSAgc3lzdGVtIGNhbGwgcmV0dXJuaW5nIEVJTlRSIGZyb20gd2l0aGluIHRoZXNlIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzE2MDEyOiBGaXggYSByZWdyZXNzaW9uIGluIHB5ZXhwYXQuIFRoZSBwYXJzZXIncyBVc2VGb3JlaWduRFREKCkKLSAgbWV0aG9kIGRvZXNuJ3QgcmVxdWlyZSBhbiBhcmd1bWVudCBhZ2Fpbi4KLQotLSBJc3N1ZSAjMTM1OTA6IE9TIFggWGNvZGUgNCAtIGltcHJvdmUgc3VwcG9ydCBmb3IgdW5pdmVyc2FsIGV4dGVuc2lvbiBtb2R1bGVzCi0gIEluIHBhcnRpY3VsYXIsIGZpeCBleHRlbnNpb24gbW9kdWxlIGJ1aWxkIGZhaWx1cmVzIHdoZW4gdHJ5aW5nIHRvIHVzZQotICAzMi1iaXQtb25seSBpbnN0YWxsZXIgUHl0aG9ucyBvbiBzeXN0ZW1zIHdpdGggWGNvZGUgNCAoY3VycmVudGx5Ci0gIE9TIFggMTAuOCwgMTAuNywgYW5kIG9wdGlvbmFsbHkgMTAuNikuCi0gICogQmFja3BvcnQgMy4zLjAgZml4ZXMgdG8gMi43IGJyYW5jaCAoZm9yIHJlbGVhc2UgaW4gMi43LjQpCi0gICogU2luY2UgWGNvZGUgNCByZW1vdmVzIHBwYyBzdXBwb3J0LCBleHRlbnNpb24gbW9kdWxlIGJ1aWxkcyBub3cKLSAgICBjaGVjayBmb3IgcHBjIGNvbXBpbGVyIHN1cHBvcnQgYW5kIGJ5IGRlZmF1bHQgcmVtb3ZlIHBwYyBhbmQKLSAgICBwcGM2NCBhcmNocyB3aGVuIHRoZXkgYXJlIG5vdCBhdmFpbGFibGUuCi0gICogRXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMgbm93IHJldmVydCB0byB1c2luZyBzeXN0ZW0gaW5zdGFsbGVkCi0gICAgaGVhZGVycyBhbmQgbGlicyAoL3VzciBhbmQgL1N5c3RlbS9MaWJyYXJ5KSBpZiB0aGUgU0RLIHVzZWQKLSAgICB0byBidWlsZCB0aGUgaW50ZXJwcmV0ZXIgaXMgbm90IGluc3RhbGxlZCBvciBoYXMgbW92ZWQuCi0gICogVHJ5IHRvIGF2b2lkIGJ1aWxkaW5nIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggZGVwcmVjYXRlZAotICAgIGFuZCBwcm9ibGVtYXRpYyBBcHBsZSBsbHZtLWdjYyBjb21waWxlci4gIElmIG9yaWdpbmFsIGNvbXBpbGVyCi0gICAgaXMgbm90IGF2YWlsYWJsZSwgdXNlIGNsYW5nIGluc3RlYWQgYnkgZGVmYXVsdC4KLQotSURMRQotLS0tLQotCi0tIElETEUgd2FzIGRpc3BsYXlpbmcgc3B1cmlvdXMgU3lzdGVtRXhpdCB0cmFjZWJhY2tzIHdoZW4gcnVubmluZyBzY3JpcHRzCi0gIHRoYXQgdGVybWluYXRlZCBieSByYWlzaW5nIFN5c3RlbUV4aXQgKGkuZS4gdW5pdHRlc3QgYW5kIHR1cnRsZWRlbW8pLgotCi0tIElzc3VlICM5MjkwOiBJbiBJRExFIHRoZSBzeXMuc3RkKiBzdHJlYW1zIG5vdyBpbXBsZW1lbnQgaW8uVGV4dElPQmFzZQotICBpbnRlcmZhY2UgYW5kIHN1cHBvcnQgYWxsIG1hbmRhdG9yeSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLgotCi0tIElzc3VlICMxNjgyOTogSURMRSBwcmludGluZyBubyBsb25nZXIgZmFpbHMgaWYgdGhlcmUgYXJlIHNwYWNlcyBvciBvdGhlcgotICBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIGZpbGUgcGF0aC4KLQotLSBJc3N1ZSAjMTY4MTk6IElETEUgbWV0aG9kIGNvbXBsZXRpb24gbm93IGNvcnJlY3RseSB3b3JrcyBmb3IgdW5pY29kZSBsaXRlcmFscy4KLQotLSBJc3N1ZSAjMTY1MDQ6IElETEUgbm93IGNhdGNoZXMgU3ludGF4RXJyb3JzIHJhaXNlZCBieSB0b2tlbml6ZXIuIFBhdGNoIGJ5Ci0gIFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMxMjA3NTg5OiBBZGQgQ3V0L0NvcHkvUGFzdGUgaXRlbXMgdG8gSURMRSByaWdodCBjbGljayBDb250ZXh0IE1lbnUuCi0gIFBhdGNoIGJ5IFRvZGQgUm92aXRvLgotCi0tIElzc3VlICMxMzA1MjogRml4IElETEUgY3Jhc2hpbmcgd2hlbiByZXBsYWNlIHN0cmluZyBpbiBTZWFyY2gvUmVwbGFjZSBkaWFsb2cKLSAgZW5kZWQgd2l0aCAnXCcuIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICM5ODAzOiBEb24ndCBjbG9zZSBJRExFIG9uIHNhdmluZyBpZiBicmVha3BvaW50IGlzIG9wZW4uCi0gIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMxNDk1ODogQ2hhbmdlIElETEUgc3lzdGF4IGhpZ2hsaWdodGluZyB0byByZWNvZ25pemUgYWxsIHN0cmluZyBhbmQgYnl0ZQotICBsaXRlcmFscyBjdXJyZW50bHkgc3VwcG9ydGVkIGluIFB5dGhvbiAyLjcuCi0KLS0gSXNzdWUgIzE0OTYyOiBVcGRhdGUgdGV4dCBjb2xvcmluZyBpbiBJRExFIHNoZWxsIHdpbmRvdyBhZnRlciBjaGFuZ2luZwotICBvcHRpb25zLiAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzEwOTk3OiBQcmV2ZW50IGEgZHVwbGljYXRlIGVudHJ5IGluIElETEUncyAiUmVjZW50IEZpbGVzIiBtZW51LgotCi0tIElzc3VlICMxMjUxMDogQXR0ZW1wdGluZyB0byBnZXQgaW52YWxpZCB0b29sdGlwIG5vIGxvbmdlciBjbG9zZXMgSURMRS4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzEwMzY1OiBGaWxlIG9wZW4gZGlhbG9nIG5vdyB3b3JrcyBpbnN0ZWFkIG9mIGNyYXNoaW5nCi0gIGV2ZW4gd2hlbiBwYXJlbnQgd2luZG93IGlzIGNsb3NlZC4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzE0ODc2OiBVc2UgdXNlci1zZWxlY3RlZCBmb250IGZvciBoaWdobGlnaHQgY29uZmlndXJhdGlvbi4KLSAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzE0NDA5OiBJRExFIG5vdyBwcm9wZXJseSBleGVjdXRlcyBjb21tYW5kcyBpbiB0aGUgU2hlbGwgd2luZG93Ci0gIHdoZW4gaXQgY2Fubm90IHJlYWQgdGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQKLSAgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkgYmluZGluZ3MuCi0gIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCi0KLS0gSXNzdWUgIzM1NzM6IElETEUgaGFuZ3Mgd2hlbiBwYXNzaW5nIGludmFsaWQgY29tbWFuZCBsaW5lIGFyZ3MKLSAgKGRpcmVjdG9yeShpZXMpIGluc3RlYWQgb2YgZmlsZShzKSkgKFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvKQotCi0tIElzc3VlICM1MjE5OiBQcmV2ZW50IGV2ZW50IGhhbmRsZXIgY2FzY2FkZSBpbiBJRExFLgotCi0tIElzc3VlICMxNTMxODogUHJldmVudCB3cml0aW5nIHRvIHN5cy5zdGRpbi4KLQotLSBJc3N1ZSAjMTM1MzIsICMxNTMxOTogQ2hlY2sgdGhhdCBhcmd1bWVudHMgdG8gc3lzLnN0ZG91dC53cml0ZSBhcmUgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTAzNjU6IEZpbGUgb3BlbiBkaWFsb2cgbm93IHdvcmtzIGluc3RlYWQgb2YgY3Jhc2hpbmcgZXZlbiB3aGVuCi0gIHBhcmVudCB3aW5kb3cgaXMgY2xvc2VkIHdoaWxlIGRpYWxvZyBpcyBvcGVuLgotCi0tIElzc3VlICMxNDAxODogVXBkYXRlIGNoZWNrcyBmb3IgdW5zdGFibGUgc3lzdGVtIFRjbC9UayB2ZXJzaW9ucyBvbiBPUyBYCi0gIHRvIGluY2x1ZGUgdmVyc2lvbnMgc2hpcHBlZCB3aXRoIE9TIFggMTAuNyBhbmQgMTAuOCBpbiBhZGRpdGlvbiB0byAxMC42LgotCi0tIElzc3VlICMxNTg1MzogUHJldmVudCBJRExFIGNyYXNoIG9uIE9TIFggd2hlbiBvcGVuaW5nIFByZWZlcmVuY2VzIG1lbnUKLSAgd2l0aCBjZXJ0YWluIHZlcnNpb25zIG9mIFRrIDguNS4gIEluaXRpYWwgcGF0Y2ggYnkgS2V2aW4gV2FsemVyLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTY3MDI6IHRlc3RfdXJsbGliMl9sb2NhbG5ldCB0ZXN0cyBub3cgY29ycmVjdGx5IGlnbm9yZXMgcHJveGllcyBmb3IKLSAgbG9jYWxob3N0IHRlc3RzLgotCi0tIElzc3VlICMxMzQ0NzogQWRkIGEgdGVzdCBmaWxlIHRvIGhvc3QgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncyBpbiB0aGUKLSAgc2NyaXB0cyBmb3VuZCBpbiB0aGUgVG9vbHMgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxMTQyMDogbWFrZSB0ZXN0IHN1aXRlIHBhc3Mgd2l0aCAtQi9ET05UV1JJVEVCWVRFQ09ERSBzZXQuCi0gIEluaXRpYWwgcGF0Y2ggYnkgVGhvbWFzIFdvdXRlcnMuCi0KLS0gSXNzdWUgIzE3Mjk5OiBBZGQgdGVzdCBjb3ZlcmFnZSBmb3IgY1BpY2tsZSB3aXRoIGZpbGUgb2JqZWN0cyBhbmQgZ2VuZXJhbCBJTwotICBvYmplY3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQW1hbiBTaGFoLgotCi0tIElzc3VlICMxMTk2MzogcmVtb3ZlIGh1bWFuIHZlcmlmaWNhdGlvbiBmcm9tIHRlc3RfcGFyc2VyIGFuZCB0ZXN0X3N1YnByb2Nlc3MuCi0KLS0gSXNzdWUgIzE3MjQ5OiBjb252ZXJ0IGEgdGVzdCBpbiB0ZXN0X2NhcGkgdG8gdXNlIHVuaXR0ZXN0IGFuZCByZWFwIHRocmVhZHMuCi0KLS0gV2Ugbm93IHJ1biBib3RoIHRlc3RfZW1haWwucHkgYW5kIHRlc3RfZW1haWxfcmVuYW1lZC5weSB3aGVuIHJ1bm5pbmcgdGhlCi0gIHRlc3RfZW1haWwgcmVncmVzc2lvbiB0ZXN0LiAgdGVzdF9lbWFpbF9yZW5hbWVkIGNvbnRhaW5zIHNvbWUgdGVzdHMgdGhhdAotICB0ZXN0X2VtYWlsIGRvZXMgbm90LgotCi0tIElzc3VlICMxNzA0MTogRml4IHRlc3Rpbmcgd2hlbiBQeXRob24gaXMgY29uZmlndXJlZCB3aXRoIHRoZQotICAtLXdpdGhvdXQtZG9jLXN0cmluZ3Mgb3B0aW9uLgotCi0tIElzc3VlICMxNTUzOTogQWRkZWQgcmVncmVzc2lvbiB0ZXN0cyBmb3IgVG9vbHMvc2NyaXB0cy9waW5kZW50LnB5LgotCi0tIElzc3VlICMxNTMyNDogRml4IHJlZ3J0ZXN0IHBhcnNpbmcgb2YgLS1mcm9tZmlsZSBhbmQgLS1yYW5kb21pemUgb3B0aW9ucy4KLQotLSBJc3N1ZSAjMTY2MTg6IEFkZCBtb3JlIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGdsb2IuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE2NjY0OiBBZGQgcmVncmVzc2lvbiB0ZXN0cyBmb3IgZ2xvYidzIGJlaGF2aW91ciBjb25jZXJuaW5nIGVudHJpZXMKLSAgc3RhcnRpbmcgd2l0aCBhICIuIi4gIFBhdGNoIGJ5IFNlYmFzdGlhbiBLcmVmdC4KLQotLSBJc3N1ZSAjMTU3NDc6IFpGUyBhbHdheXMgcmV0dXJucyBFT1BOT1RTVVBQIHdoZW4gYXR0ZW1wdGluZyB0byBzZXQgdGhlCi0gIFVGX0lNTVVUQUJMRSBmbGFnICh2aWEgZWl0aGVyIGNoZmxhZ3Mgb3IgbGNoZmxhZ3MpOyByZWZhY3RvciBhZmZlY3RlZAotICB0ZXN0cyBpbiB0ZXN0X3Bvc2l4LnB5IHRvIGFjY291bnQgZm9yIHRoaXMuCi0KLS0gSXNzdWUgIzE2NTQ5OiBBZGQgdGVzdHMgZm9yIGpzb24udG9vbHMuICBJbml0aWFsIHBhdGNoIGJ5IEJlcmtlciBQZWtzYWcKLSAgYW5kIFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE2NTU5OiBBZGQgbW9yZSB0ZXN0cyBmb3IgdGhlIGpzb24gbW9kdWxlLCBpbmNsdWRpbmcgc29tZSBmcm9tIHRoZQotICBvZmZpY2lhbCB0ZXN0IHN1aXRlIGF0IGpzb24ub3JnLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotLSBJc3N1ZSAjMTYyNzQ6IEZpeCB0ZXN0X2FzeW5jb3JlIG9uIFNvbGFyaXMuICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KLQotLSBJc3N1ZSAjMTUwNDA6IENsb3NlIGZpbGVzIGluIG1haWxib3ggdGVzdHMgZm9yIFB5UHkgY29tcGF0aWJpbGl0eS4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgTWF0dGkgUGljdXMuCi0KLS0gSXNzdWUgIzE1ODAyOiBGaXggdGVzdCBsb2dpYyBpbiBUZXN0TWFpbGRpci50ZXN0X2NyZWF0ZV90bXAuIFBhdGNoCi0gIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzE1NzY1OiBFeHRlbmQgYSBwcmV2aW91cyBmaXggdG8gU29sYXJpcyBhbmQgT3BlbkJTRCBmb3IgcXVpcmt5Ci0gIGdldGN3ZCgpIGJlaGF2aW91ciAoaXNzdWUgIzkxODUpIHRvIE5ldEJTRCBhcyB3ZWxsLgotCi0tIElzc3VlICMxNTYxNTogQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBqc29uIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQKLSAgaW5wdXQgZGF0YS4gIFBhdGNoIGJ5IEt1c2hhbCBEYXMuCi0KLS0gSXNzdWUgIzE1NDk2OiBBZGQgZGlyZWN0b3J5IHJlbW92YWwgaGVscGVycyBmb3IgdGVzdHMgb24gV2luZG93cy4KLSAgUGF0Y2ggYnkgSmVyZW15IEtsb3RoLgotCi0tIElzc3VlICMxNTA0MzogdGVzdF9nZGIgaXMgbm93IHNraXBwZWQgZW50aXJlbHkgaWYgZ2RiIHNlY3VyaXR5IHNldHRpbmdzCi0gIGJsb2NrIGxvYWRpbmcgb2YgdGhlIGdkYiBob29rcwotCi0tIElzc3VlICMxNDU4OTogVXBkYXRlIGNlcnRpZmljYXRlIGNoYWluIGZvciBzaGEyNTYudGJzLWludGVybmV0LmNvbSwgZml4aW5nCi0gIGEgdGVzdCBmYWlsdXJlIGluIHRlc3Rfc3NsLgotCi0tIElzc3VlICMxNjY5ODogU2tpcCBwb3NpeCB0ZXN0X2dldGdyb3VwcyB3aGVuIGJ1aWx0IHdpdGggT1MgWAotICBkZXBsb3ltZW50IHRhcmdldCBwcmlvciB0byAxMC42LgotCi0tIElzc3VlICMxNzExMTogUHJldmVudCB0ZXN0X3N1cnJvZ2F0ZXMgKHRlc3RfZmlsZWlvKSBmYWlsdXJlIG9uIE9TIFggMTAuNC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzE3NDI1OiBCdWlsZCBhZ2FpbnN0IG9wZW5zc2wgMC45Ljh5IG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzE2MDA0OiBBZGQgYG1ha2UgdG91Y2hgLgotCi0tIElzc3VlICM1MDMzOiBGaXggYnVpbGRpbmcgb2YgdGhlIHNxbGl0ZTMgZXh0ZW5zaW9uIG1vZHVsZSB3aGVuIHRoZQotICBTUUxpdGUgbGlicmFyeSB2ZXJzaW9uIGhhcyAiYmV0YSIgaW4gaXQuIFBhdGNoIGJ5IEFuZHJlYXMgUGVsbWUuCi0KLS0gSXNzdWUgIzE3MjI4OiBGaXggYnVpbGRpbmcgd2l0aG91dCBweW1hbGxvYy4KLQotLSBJc3N1ZSAjMTcwODY6IEJhY2twb3J0IHRoZSBwYXRjaGVzIGZyb20gdGhlIDMuMyBicmFuY2ggdG8gY3Jvc3MtYnVpbGQKLSAgdGhlIHBhY2thZ2UuCi0KLS0gSXNzdWUgIzM3NTQ6IGZpeCB0eXBvIGluIHB0aHJlYWQgQUNfQ0FDSEVfVkFMLgotCi0tIElzc3VlICMxNzAyOTogTGV0IGgycHkgc2VhcmNoIHRoZSBtdWx0aWFyY2ggc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3J5LgotCi0tIElzc3VlICMxNjk1MzogRml4IHNvY2tldCBtb2R1bGUgY29tcGlsYXRpb24gb24gcGxhdGZvcm1zIHdpdGgKLSAgSEFWRV9CUk9LRU5fUE9MTC4gUGF0Y2ggYnkgSmVmZnJleSBBcm1zdHJvbmcuCi0KLS0gSXNzdWUgIzE2ODM2OiBFbmFibGUgSVB2NiBzdXBwb3J0IGV2ZW4gaWYgSVB2NiBpcyBkaXNhYmxlZCBvbiB0aGUgYnVpbGQgaG9zdC4KLQotLSBJc3N1ZSAjMTU5MjM6IGZpeCBhIG1pc3Rha2UgaW4gYXNkbF9jLnB5IHRoYXQgcmVzdWx0ZWQgaW4gYSBUeXBlRXJyb3IgYWZ0ZXIKLSAgMjgwMWJmODc1YTI0IChzZWUgIzE1ODAxKS4KLQotLSBJc3N1ZSAjMTE3MTU6IEZpeCBtdWx0aWFyY2ggZGV0ZWN0aW9uIHdpdGhvdXQgaGF2aW5nIERlYmlhbiBkZXZlbG9wbWVudAotICB0b29scyAoZHBrZy1kZXYpIGluc3RhbGxlZC4KLQotLSBJc3N1ZSAjMTU4MTk6IE1ha2Ugc3VyZSB3ZSBjYW4gYnVpbGQgUHl0aG9uIG91dC1vZi10cmVlIGZyb20gYSByZWFkb25seQotICBzb3VyY2UgZGlyZWN0b3J5LiAgKFNvbWV3aGF0IHJlbGF0ZWQgdG8gSXNzdWUgIzk4NjAuKQotCi0tIElzc3VlICMxNTgyMjogRW5zdXJlIDJ0bzMgZ3JhbW1hciBwaWNrbGVzIGFyZSBwcm9wZXJseSBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzE1NTYwOiBGaXggYnVpbGRpbmcgX3NxbGl0ZTMgZXh0ZW5zaW9uIG9uIE9TIFggd2l0aCBhbiBTREsuCi0KLS0gSXNzdWUgIzg4NDc6IERpc2FibGUgQ09NREFUIGZvbGRpbmcgaW4gV2luZG93cyBQR08gYnVpbGRzLgotCi0tIElzc3VlICMxNDAxODogRml4IE9TIFggVGNsL1RrIGZyYW1ld29yayBjaGVja2luZyB3aGVuIHVzaW5nIE9TIFggU0RLcy4KLQotLSBJc3N1ZSAjMTYyNTY6IE9TIFggaW5zdGFsbGVyIG5vdyBzZXRzIGNvcnJlY3QgcGVybWlzc2lvbnMgZm9yIGRvYyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzg3Njc6IFJlc3RvcmUgYnVpbGRpbmcgd2l0aCAtLWRpc2FibGUtdW5pY29kZS4KLSAgUGF0Y2ggYnkgU3RlZmFubyBUYXNjaGluaS4KLQotLSBCdWlsZCBhZ2FpbnN0IGJ6aXAyIDEuMC42IGFuZCBvcGVuc3NsIDAuOS44eCBvbiBXaW5kb3dzLgotCi0tIElzc3VlICMxNDU1NzogRml4IGV4dGVuc2lvbnMgYnVpbGQgb24gSFAtVVguIFBhdGNoIGJ5IEFkaSBSb2liYW4uCi0KLS0gSXNzdWUgIzE0NDM3OiBGaXggYnVpbGRpbmcgdGhlIF9pbyBtb2R1bGUgdW5kZXIgQ3lnd2luLgotCi0tIElzc3VlICMxNTU4NzogRW5hYmxlIFRrIGhpZ2gtcmVzb2x1dGlvbiB0ZXh0IHJlbmRlcmluZyBvbiBNYWNzIHdpdGgKLSAgUmV0aW5hIGRpc3BsYXlzLiAgQXBwbGllcyB0byBUa2ludGVyIGFwcHMsIHN1Y2ggYXMgSURMRSwgb24gT1MgWAotICBmcmFtZXdvcmsgYnVpbGRzIGxpbmtlZCB3aXRoIENvY29hIFRrIDguNS4KLQotLSBJc3N1ZSAjMTcxNjE6IG1ha2UgaW5zdGFsbCBub3cgYWxzbyBpbnN0YWxscyBhIHB5dGhvbjIgYW5kIHB5dGhvbiBtYW4gcGFnZS4KLQotLSBJc3N1ZSAjMTY4NDg6IHB5dGhvbi1jb25maWcgbm93IHJldHVybnMgcHJvcGVyIC0tbGRmbGFncyB2YWx1ZXMgZm9yIE9TIFgKLSAgZnJhbWV3b3JrIGJ1aWxkcy4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzE3MTU2OiBweWdldHRleHQucHkgbm93IGNvcnJlY3RseSBlc2NhcGVzIG5vbi1hc2NpaSBjaGFyYWN0ZXJzLgotCi0tIElzc3VlICMxNTUzOTogRml4IGEgbnVtYmVyIG9mIGJ1Z3MgaW4gVG9vbHMvc2NyaXB0cy9waW5kZW50LnB5LiAgTm93Ci0gIHBpbmRlbnQucHkgd29ya3Mgd2l0aCBhICJ3aXRoIiBzdGF0ZW1lbnQuICBwaW5kZW50LnB5IG5vIGxvbmdlciBwcm9kdWNlcwotICBpbXByb3BlciBpbmRlbnRhdGlvbi4gIHBpbmRlbnQucHkgbm93IHdvcmtzIHdpdGggY29udGludWVkIGxpbmVzIGJyb2tlbiBhZnRlcgotICAiY2xhc3MiIG9yICJkZWYiIGtleXdvcmRzIGFuZCB3aXRoIGNvbnRpbnVhdGlvbnMgYXQgdGhlIHN0YXJ0IG9mIGxpbmUuCi0KLS0gSXNzdWUgIzE2NDc2OiBGaXgganNvbi50b29sIHRvIGF2b2lkIGluY2x1ZGluZyB0cmFpbGluZyB3aGl0ZXNwYWNlLgotCi0tIElzc3VlICMxMzMwMTogdXNlIGFzdC5saXRlcmFsX2V2YWwoKSBpbnN0ZWFkIG9mIGV2YWwoKSBpbiBUb29scy9pMThuL21zZ2ZtdC5weS4KLSAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNTA0MTogVXBkYXRlICJzZWUgYWxzbyIgbGlzdCBpbiB0a2ludGVyIGRvY3VtZW50YXRpb24uCi0KLS0gSXNzdWUgIzE3NDEyOiB1cGRhdGUgMi43IERvYy9tYWtlLmJhdCB0byBhbHNvIHVzZSBzcGhpbngtMS4wLjcuCi0KLS0gSXNzdWUgIzE3MDQ3OiByZW1vdmUgZG91YmxlZCB3b3JkcyBpbiBkb2NzIGFuZCBkb2NzdHJpbmdzCi0gIHJlcG9ydGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgYW5kIE1hdHRoZXcgQmFybmV0dC4KLQotLSBJc3N1ZSAjMTY0MDY6IGNvbWJpbmUgdGhlIHBhZ2VzIGZvciB1cGxvYWRpbmcgYW5kIHJlZ2lzdGVyaW5nIHRvIFB5UEkuCi0KLS0gSXNzdWUgIzE2NDAzOiBEb2N1bWVudCBob3cgZGlzdHV0aWxzIHVzZXMgdGhlIG1haW50YWluZXIgZmllbGQgaW4KLSAgUEtHLUlORk8uIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCi0KLS0gSXNzdWUgIzE2Njk1OiBEb2N1bWVudCBob3cgZ2xvYiBoYW5kbGVzIGZpbGVuYW1lcyBzdGFydGluZyB3aXRoIGEKLSAgZG90LiBJbml0aWFsIHBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCi0KLS0gSXNzdWUgIzg4OTA6IFN0b3AgYWR2ZXJ0aXNpbmcgYW4gaW5zZWN1cmUgcHJhY3RpY2UgYnkgcmVwbGFjaW5nIHVzZXMKLSAgb2YgdGhlIC90bXAgZGlyZWN0b3J5IHdpdGggYmV0dGVyIGFsdGVybmF0aXZlcyBpbiB0aGUgZG9jdW1lbnRhdGlvbi4KLSAgUGF0Y2ggYnkgR2VvZmYgV2lsc29uLgotCi0tIElzc3VlICMxNzIwMzogYWRkIGxvbmcgb3B0aW9uIG5hbWVzIHRvIHVuaXR0ZXN0IGRpc2NvdmVyeSBkb2NzLgotCi0tIElzc3VlICMxMzA5NDogYWRkICJXaHkgZG8gbGFtYmRhcyBkZWZpbmVkIGluIGEgbG9vcCB3aXRoIGRpZmZlcmVudCB2YWx1ZXMKLSAgYWxsIHJldHVybiB0aGUgc2FtZSByZXN1bHQ/IiBwcm9ncmFtbWluZyBGQVEuCi0KLS0gSXNzdWUgIzE0OTAxOiBVcGRhdGUgcG9ydGlvbnMgb2YgdGhlIFdpbmRvd3MgRkFRLgotICBQYXRjaCBieSBBc2hpc2ggTml0aW4gUGF0aWwuCi0KLS0gSXNzdWUgIzE1OTkwOiBJbXByb3ZlIGFyZ3VtZW50L3BhcmFtZXRlciBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNjQwMDogVXBkYXRlIHRoZSBkZXNjcmlwdGlvbiBvZiB3aGljaCB2ZXJzaW9ucyBvZiBhIGdpdmVuIHBhY2thZ2UKLSAgUHlQSSBkaXNwbGF5cy4KLQotLSBJc3N1ZSAjMTU2Nzc6IERvY3VtZW50IHRoYXQgemxpYiBhbmQgZ3ppcCBhY2NlcHQgYSBjb21wcmVzc2lvbiBsZXZlbCBvZiAwIHRvCi0gIG1lYW4gJ25vIGNvbXByZXNzaW9uJy4gUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIElzc3VlICM4MDQwOiBhZGRlZCBhIHZlcnNpb24gc3dpdGNoZXIgdG8gdGhlIGRvY3VtZW50YXRpb24uICBQYXRjaCBieQotICBZdXJ5IFNlbGl2YW5vdi4KLQotLSBJc3N1ZSAjMTYxMTU6IEltcHJvdmUgc3VicHJvY2Vzcy5Qb3BlbigpIGRvY3VtZW50YXRpb24gYXJvdW5kIGFyZ3MsIHNoZWxsLAotICBhbmQgZXhlY3V0YWJsZSBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzE1OTc5OiBJbXByb3ZlIHRpbWVpdCBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxNjAzNjogSW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIGJ1aWx0LWluIGludCgpJ3Mgc2lnbmF0dXJlIGFuZAotICBhcmd1bWVudHMuCi0KLS0gSXNzdWUgIzE1OTM1OiBDbGFyaWZpY2F0aW9uIG9mIGFyZ3BhcnNlIGRvY3MsIHJlOiBhZGRfYXJndW1lbnQoKSB0eXBlIGFuZAotICBkZWZhdWx0IGFyZ3VtZW50cy4gIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxMzc2OTogRG9jdW1lbnQgdGhlIGVmZmVjdCBvZiBlbnN1cmVfYXNjaWkgdG8gdGhlIHJldHVybiB0eXBlCi0gIG9mIEpTT04gZGVjb2RpbmcgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxNDg4MDogRml4IGt3YXJncyBub3RhdGlvbiBpbiBjc3YucmVhZGVyLCAud3JpdGVyICYgLnJlZ2lzdGVyX2RpYWxlY3QuCi0gIFBhdGNoIGJ5IENocmlzIFJlYmVydC4KLQotLSBJc3N1ZSAjMTQ2NzQ6IEFkZCBhIGRpc2N1c3Npb24gb2YgdGhlIGpzb24gbW9kdWxlJ3Mgc3RhbmRhcmQgY29tcGxpYW5jZS4KLSAgUGF0Y2ggYnkgQ2hyaXMgUmViZXJ0LgotCi0tIElzc3VlICMxNTYzMDogQWRkIGFuIGV4YW1wbGUgZm9yICJjb250aW51ZSIgc3RtdCBpbiB0aGUgdHV0b3JpYWwuIFBhdGNoIGJ5Ci0gIERhbmllbCBFbGxpcy4KLQotLSBJc3N1ZSAjMTM1NTc6IENsYXJpZnkgZWZmZWN0IG9mIGdpdmluZyB0d28gZGlmZmVyZW50IG5hbWVzcGFjZXMgdG8gZXhlYyBvcgotICBleGVjZmlsZSgpLgotCi0tIElzc3VlICMxNDAzNDogYWRkZWQgdGhlIGFyZ3BhcnNlIHR1dG9yaWFsLgotCi0tIElzc3VlICMxNTI1MDogRG9jdW1lbnQgdGhhdCBmaWxlY21wLmRpcmNtcCBjb21wYXJlcyBmaWxlcyBzaGFsbG93bHkuIFBhdGNoCi0gIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgotCi0tIElzc3VlICMxNTExNjogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYXBwc2NyaXB0IGFzIGl0IGlzIG5vIGxvbmdlciBiZWluZwotICBzdXBwb3J0ZWQuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi43LjMgcmVsZWFzZSBjYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMTItMDMtMTcqCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQyMzQ6IENWRS0yMDEyLTA4NzY6IFJhbmRvbWl6ZSBoYXNoZXMgb2YgeG1sIGF0dHJpYnV0ZXMgaW4gdGhlIGhhc2gKLSAgdGFibGUgaW50ZXJuYWwgdG8gdGhlIHB5ZXhwYXQgbW9kdWxlJ3MgY29weSBvZiB0aGUgZXhwYXQgbGlicmFyeSB0byBhdm9pZCBhCi0gIGRlbmlhbCBvZiBzZXJ2aWNlIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMuICBQYXRjaCBieSBEYXZpZCBNYWxjb2xtIHdpdGggc29tZQotICBtb2RpZmljYXRpb25zIGJ5IHRoZSBleHBhdCBwcm9qZWN0LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNy4zIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDEyLTAyLTIzKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTMwMjA6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIHdoZW4gYWxsb2NhdGluZyBhIHN0cnVjdHNlcXVlbmNlIG9iamVjdAotICBmYWlscy4gIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCi0KLS0gSXNzdWUgIzEzNzAzOiBvQ0VSVC0yMDExLTAwMzogYWRkIC1SIGNvbW1hbmQtbGluZSBvcHRpb24gYW5kIFBZVEhPTkhBU0hTRUVECi0gIGVudmlyb25tZW50IHZhcmlhYmxlLCB0byBwcm92aWRlIGFuIG9wdC1pbiB3YXkgdG8gcHJvdGVjdCBhZ2FpbnN0IGRlbmlhbCBvZgotICBzZXJ2aWNlIGF0dGFja3MgZHVlIHRvIGhhc2ggY29sbGlzaW9ucyB3aXRoaW4gdGhlIGRpY3QgYW5kIHNldCB0eXBlcy4gIFBhdGNoCi0gIGJ5IERhdmlkIE1hbGNvbG0sIGJhc2VkIG9uIHdvcmsgYnkgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzExMjM1OiBGaXggT3ZlcmZsb3dFcnJvciB3aGVuIHRyeWluZyB0byBpbXBvcnQgYSBzb3VyY2UgZmlsZSB3aG9zZQotICBtb2RpZmljYXRpb24gdGltZSBkb2Vzbid0IGZpdCBpbiBhIDMyLWJpdCB0aW1lc3RhbXAuCi0KLS0gSXNzdWUgIzExNjM4OiBVbmljb2RlIHN0cmluZ3MgaW4gJ25hbWUnIGFuZCAndmVyc2lvbicgbm8gbG9uZ2VyIGNhdXNlCi0gIFVuaWNvZGVEZWNvZGVFcnJvcnMuCi0KLS0gRml4IHRoZSBmaXggZm9yIGlzc3VlICMxMjE0OTogaXQgd2FzIGluY29ycmVjdCwgYWx0aG91Z2ggaXQgaGFkIHRoZSBzaWRlCi0gIGVmZmVjdCBvZiBhcHBlYXJpbmcgdG8gcmVzb2x2ZSB0aGUgaXNzdWUuICBUaGFua3MgdG8gTWFyayBTaGFubm9uIGZvcgotICBub3RpY2luZy4KLQotLSBJc3N1ZSAjMTM1NDY6IEZpeGVkIGFuIG92ZXJmbG93IGlzc3VlIHRoYXQgY291bGQgY3Jhc2ggdGhlIGludGVwcmV0ZXIgd2hlbgotICBjYWxsaW5nIHN5cy5zZXRyZWN1cnNpb25saW1pdCgoMTw8MzEpLTEpLgotCi0tIElzc3VlICMxMzMzMzogVGhlIFVURi03IGRlY29kZXIgbm93IGFjY2VwdHMgbG9uZSBzdXJyb2dhdGVzICh0aGUgZW5jb2RlcgotICBhbHJlYWR5IGFjY2VwdHMgdGhlbSkuCi0KLS0gSXNzdWUgIzEwNTE5OiBBdm9pZCB1bm5lY2Vzc2FyeSByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMgaW4KLSAgc2V0b2JqZWN0LmMuCi0KLS0gSXNzdWUgIzEzMjY4OiBGaXggdGhlIGFzc2VydCBzdGF0ZW1lbnQgd2hlbiBhIHR1cGxlIGlzIHBhc3NlZCBhcyB0aGUgbWVzc2FnZS4KLQotLSBJc3N1ZSAjMTMwMTg6IEZpeCByZWZlcmVuY2UgbGVha3MgaW4gZXJyb3IgcGF0aHMgaW4gZGljdG9iamVjdC5jLgotICBQYXRjaCBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxMjYwNDogVlRSQUNFIG1hY3JvIGV4cGFuZGVkIHRvIG5vLW9wIGluIF9zcmUuYyB0byBhdm9pZCBjb21waWxlcgotICB3YXJuaW5ncy4gUGF0Y2ggYnkgSm9zaCBUcmlwbGV0dCBhbmQgUGV0cmkgTGVodGluZW4uCi0KLS0gSXNzdWUgIzc4MzM6IEV4dGVuc2lvbiBtb2R1bGVzIGJ1aWx0IHVzaW5nIGRpc3R1dGlscyBvbiBXaW5kb3dzIHdpbGwgbm8KLSAgbG9uZ2VyIGluY2x1ZGUgYSAibWFuaWZlc3QiIHRvIHByZXZlbnQgdGhlbSBmYWlsaW5nIGF0IGltcG9ydCB0aW1lIGluIHNvbWUKLSAgZW1iZWRkZWQgc2l0dWF0aW9ucy4KLQotLSBJc3N1ZSAjMTMxODY6IEZpeCBfX2RlbGl0ZW1fXyBvbiBvbGQtc3R5bGUgaW5zdGFuY2VzIHdoZW4gaW52b2tlZCB0aHJvdWdoCi0gIFB5U2VxdWVuY2VfRGVsSXRlbS4KLQotLSBJc3N1ZSAjMTMxNTY6IFJldmVydCB0aGUgcGF0Y2ggZm9yIGlzc3VlICMxMDUxNyAocmVzZXQgVExTIHVwb24gZm9yaygpKSwKLSAgd2hpY2ggd2FzIG9ubHkgcmVsZXZhbnQgZm9yIHRoZSBuYXRpdmUgcHRocmVhZCBUTFMgaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzc3MzI6IEZpeCBhIGNyYXNoIG9uIGltcG9ydGluZyBhIG1vZHVsZSBpZiBhIGRpcmVjdG9yeSBoYXMgdGhlIHNhbWUKLSAgbmFtZSB0aGFuIGEgUHl0aG9uIG1vZHVsZSAoZS5nLiAiX19pbml0X18ucHkiKTogZG9uJ3QgY2xvc2UgdGhlIGZpbGUgdHdpY2UuCi0KLS0gSXNzdWUgIzEyOTczOiBGaXggb3ZlcmZsb3cgY2hlY2tzIHRoYXQgaW52b2tlZCB1bmRlZmluZWQgYmVoYXZpb3VyIGluCi0gIGludC5fX3Bvd19fLiAgVGhlc2Ugb3ZlcmZsb3cgY2hlY2tzIHdlcmUgY2F1c2luZyBpbnQuX19wb3dfXyB0byBwcm9kdWNlCi0gIGluY29ycmVjdCByZXN1bHRzIHdpdGggcmVjZW50IHZlcnNpb25zIG9mIENsYW5nLCBhcyBhIHJlc3VsdCBvZiB0aGUKLSAgY29tcGlsZXIgb3B0aW1pemluZyB0aGUgY2hlY2sgYXdheS4gIEFsc28gZml4IHNpbWlsYXIgb3ZlcmZsb3cgY2hlY2tzCi0gIGluIGxpc3RfcmVwZWF0IChsaXN0b2JqZWN0LmMpIGFuZCBpc2xpY2VfbmV4dCAoaXRlcnRvb2xzbW9kdWxlLmMpLiAgVGhlc2UKLSAgYnVncyBjYXVzZWQgdGVzdCBmYWlsdXJlcyB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZiBDbGFuZy4KLQotLSBJc3N1ZSAjMTIyNjY6IEZpeCBzdHIuY2FwaXRhbGl6ZSgpIHRvIGNvcnJlY3RseSB1cHBlcmNhc2UvbG93ZXJjYXNlCi0gIHRpdGxlY2FzZWQgYW5kIGNhc2VkIG5vbi1sZXR0ZXIgY2hhcmFjdGVycy4KLQotLSBJc3N1ZXMgIzEyNjEwIGFuZCAjMTI2MDk6IFZlcmlmeSB0aGF0IHVzZXIgZ2VuZXJhdGVkIEFTVCBoYXMgY29ycmVjdCBzdHJpbmcKLSAgYW5kIGlkZW50aWZpZXIgdHlwZXMgYmVmb3JlIGNvbXBpbGluZy4KLQotLSBJc3N1ZSAjMTE2Mjc6IEZpeCBzZWdmYXVsdCB3aGVuIF9fbmV3X18gb24gYW4gZXhjZXB0aW9uIHJldHVybnMgYQotICBub24tZXhjZXB0aW9uIGNsYXNzLgotCi0tIElzc3VlICMxMjE0OTogVXBkYXRlIHRoZSBtZXRob2QgY2FjaGUgYWZ0ZXIgYSB0eXBlJ3MgZGljdGlvbm5hcnkgZ2V0cwotICBjbGVhcmVkIGJ5IHRoZSBnYXJiYWdlIGNvbGxlY3Rvci4gIFRoaXMgZml4ZXMgYSBzZWdmYXVsdCB3aGVuIGFuIGluc3RhbmNlCi0gIGFuZCBpdHMgdHlwZSBnZXQgY2F1Z2h0IGluIGEgcmVmZXJlbmNlIGN5Y2xlLCBhbmQgdGhlIGluc3RhbmNlJ3MKLSAgZGVhbGxvY2F0b3IgY2FsbHMgb25lIG9mIHRoZSBtZXRob2RzIG9uIHRoZSB0eXBlIChlLmcuIHdoZW4gc3ViY2xhc3NpbmcKLSAgSU9CYXNlKS4gIERpYWdub3NpcyBhbmQgcGF0Y2ggYnkgRGF2aWRlIFJpenpvLgotCi0tIElzc3VlICMxMjUwMTogUmVtb3ZlIFB5M2sgd2FybmluZyBmb3IgY2FsbGFibGUuIGNhbGxhYmxlKCkgaXMgc3VwcG9ydGVkCi0gIGFnYWluIGluIFB5dGhvbiAzLjIuCi0KLS0gSXNzdWUgIzk2MTEsICM5MDE1OiBGaWxlSU8ucmVhZCgpLCBGaWxlSU8ucmVhZGludG8oKSwgRmlsZUlPLndyaXRlKCkgYW5kCi0gIG9zLndyaXRlKCkgY2xhbXAgdGhlIGxlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzExOTU6IG15X2ZnZXRzKCkgbm93IGFsd2F5cyBjbGVhcnMgZXJyb3JzIGJlZm9yZSBjYWxsaW5nIGZnZXRzKCkuIEZpeAotICB0aGUgZm9sbG93aW5nIGNhc2U6IHN5cy5zdGRpbi5yZWFkKCkgc3RvcHBlZCB3aXRoIENUUkwrZCAoZW5kIG9mIGZpbGUpLAotICByYXdfaW5wdXQoKSBpbnRlcnJ1cHRlZCBieSBDVFJMK2MuCi0KLS0gSXNzdWUgIzEwODYwOiBodHRwbGliIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBhbiBlbXB0eSBwb3J0IGFmdGVyIHBvcnQKLSAgZGVsaW1pdGVyIGluIFVSTHMuCi0KLS0gZGljdF9wcm94eSBvYmplY3RzIG5vdyBkaXNwbGF5IHRoZWlyIGNvbnRlbnRzIHJhdGhlciB0aGFuIGp1c3QgdGhlIGNsYXNzCi0gIG5hbWUuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjODAzMzogc3FsaXRlMzogRml4IDY0LWJpdCBpbnRlZ2VyIGhhbmRsaW5nIGluIHVzZXIgZnVuY3Rpb25zCi0gIG9uIDMyLWJpdCBhcmNoaXRlY3R1cmVzLiBJbml0aWFsIHBhdGNoIGJ5IFBoaWxpcHBlIERldmFsa2VuZWVyLgotCi0tIEhUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIHNsYXNoZXMgaW4gdGhlIHN0YXJ0IHRhZy4KLQotLSBJc3N1ZSAjMTQwMDE6IENWRS0yMDEyLTA4NDU6IHhtbHJwYzogRml4IGFuIGVuZGxlc3MgbG9vcCBpbgotICBTaW1wbGVYTUxSUENTZXJ2ZXIgdXBvbiBtYWxmb3JtZWQgUE9TVCByZXF1ZXN0LgotCi0tIElzc3VlICMyNDg5OiBwdHkuc3Bhd24gY291bGQgY29uc3VtZSAxMDAlIGNwdSB3aGVuIGl0IGVuY291bnRlcmVkIGFuIEVPRi4KLQotLSBJc3N1ZSAjMTMwMTQ6IEZpeCBhIHBvc3NpYmxlIHJlZmVyZW5jZSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VydCgpLgotCi0tIElzc3VlICMxMzk4NzogSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgRU9GcyBpbiB0aGUgbWlkZGxlIG9mIGEKLSAgY29uc3RydWN0IGFuZCBtYWxmb3JtZWQgc3RhcnQgdGFncy4KLQotLSBJc3N1ZSAjMTMwMTU6IEZpeCBhIHBvc3NpYmxlIHJlZmVyZW5jZSBsZWFrIGluIGRlZmF1bHRkaWN0Ll9fcmVwcl9fLgotICBQYXRjaCBieSBTdW1hbiBTYWhhLgotCi0tIElzc3VlICMxMzk3OTogQSBidWcgaW4gY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IHRoYXQgY2F1c2VkCi0gIHRoZSB3cm9uZyBsaWJyYXJ5IG5hbWUgdG8gYmUgcmV0dXJuZWQgaGFzIGJlZW4gZml4ZWQuCi0KLS0gSXNzdWUgIzEzMjYxMTM6IGRpc3R1dGlscycgYnVpbGRfZXh0IGNvbW1hbmQgLS1saWJyYXJpZXMgb3B0aW9uIG5vdwotICBjb3JyZWN0bHkgcGFyc2VzIG11bHRpcGxlIHZhbHVlcyBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSBvciBjb21tYXMuCi0KLS0gSXNzdWUgIzEzOTkzOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gZW5kIHRhZ3MuCi0KLS0gSXNzdWUgIzEzOTYwOiBIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gY29tbWVudHMuCi0KLS0gSXNzdWUgIzk3NTA6IEZpeCBzcWxpdGUzLkNvbm5lY3Rpb24uaXRlcmR1bXAgb24gdGFibGVzIGFuZCBmaWVsZHMKLSAgd2l0aCBhIG5hbWUgdGhhdCBpcyBhIGtleXdvcmQgb3IgY29udGFpbnMgcXVvdGVzLiBQYXRjaCBieSBNYXJrbwotICBLb2h0YWxhLgotCi0tIElzc3VlICMxMzk5NDogRWFybGllciBwYXJ0aWFsIHJldmVydCBvZiBEaXN0dXRpbHMgZW5oYW5jZW1lbnRzIGluIDIuNwotICBoYXMgbGVmdCB0d28gdmVyc2lvbnMgb2YgY3VzdG9taXplX2NvbXBpbGVyLCB0aGUgb3JpZ2luYWwgaW4KLSAgZGlzdHV0aWxzLnN5c2NvbmZpZyBhbmQgYW5vdGhlciBjb3B5IGluIGRpc3R1dGlscy5jY29tcGlsZXIsIHdpdGggc29tZQotICBwYXJ0cyBvZiBkaXN0dXRpbHMgY2FsbGluZyBvbmUgYW5kIG90aGVycyB1c2luZyB0aGUgb3RoZXIuCi0gIENvbXBsZXRlIHRoZSByZXZlcnQgYmFjayB0byBvbmx5IGhhdmluZyBvbmUgaW4gZGlzdHV0aWxzLnN5c2NvbmZpZyBhcwotICBpcyB0aGUgY2FzZSBpbiAzLnguCi0KLS0gSXNzdWUgIzEzNTkwOiBPbiBPUyBYIDEwLjcgYW5kIDEwLjYgd2l0aCBYY29kZSA0LjIsIGJ1aWxkaW5nCi0gIERpc3R1dGlscy1iYXNlZCBwYWNrYWdlcyB3aXRoIEMgZXh0ZW5zaW9uIG1vZHVsZXMgbWF5IGZhaWwgYmVjYXVzZQotICBBcHBsZSBoYXMgcmVtb3ZlZCBnY2MtNC4yLCB0aGUgdmVyc2lvbiB1c2VkIHRvIGJ1aWxkIHB5dGhvbi5vcmcKLSAgNjQtYml0LzMyLWJpdCBQeXRob25zLiAgSWYgdGhlIHVzZXIgZG9lcyBub3QgZXhwbGljaXRseSBvdmVycmlkZQotICB0aGUgZGVmYXVsdCBDIGNvbXBpbGVyIGJ5IHNldHRpbmcgdGhlIENDIGVudmlyb25tZW50IHZhcmlhYmxlLAotICBEaXN0dXRpbHMgd2lsbCBub3cgYXR0ZW1wdCB0byBjb21waWxlIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggY2xhbmcKLSAgaWYgZ2NjLTQuMiBpcyByZXF1aXJlZCBidXQgbm90IGZvdW5kLiBBbHNvIGFzIGEgY29udmVuaWVuY2UsIGlmCi0gIHRoZSB1c2VyIGRvZXMgZXhwbGljaXRseSBzZXQgQ0MsIHN1YnN0aXR1dGUgaXRzIHZhbHVlIGFzIHRoZSBkZWZhdWx0Ci0gIGNvbXBpbGVyIGluIHRoZSBEaXN0dXRpbHMgTERTSEFSRUQgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBmb3IgT1MgWC4KLSAgKE5vdGUsIHRoZSBweXRob24ub3JnIDMyLWJpdC1vbmx5IFB5dGhvbnMgdXNlIGdjYy00LjAgYW5kIHRoZSAxMC40dQotICBTREssIG5laXRoZXIgb2Ygd2hpY2ggYXJlIGF2YWlsYWJsZSBpbiBYY29kZSA0LiAgVGhpcyBjaGFuZ2UgZG9lcyBub3QKLSAgYXR0ZW1wdCB0byBvdmVycmlkZSBzZXR0aW5ncyB0byBzdXBwb3J0IHRoZWlyIHVzZSB3aXRoIFhjb2RlIDQuKQotCi0tIElzc3VlICM5MDIxOiBBZGQgYW4gaW50cm9kdWN0aW9uIHRvIHRoZSBjb3B5IG1vZHVsZSBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICM2MDA1OiBFeGFtcGxlcyBpbiB0aGUgc29ja2V0IGxpYnJhcnkgZG9jdW1lbnRhdGlvbiB1c2Ugc2VuZGFsbCwgd2hlcmUKLSAgcmVsZXZhbnQsIGluc3RlYWQgc2VuZCBtZXRob2QuCi0KLS0gSXNzdWUgIzEwODExOiBGaXggcmVjdXJzaXZlIHVzYWdlIG9mIGN1cnNvcnMuIEluc3RlYWQgb2YgY3Jhc2hpbmcsCi0gIHJhaXNlIGEgUHJvZ3JhbW1pbmdFcnJvciBub3cuCi0KLS0gSXNzdWUgIzEzNjc2OiBIYW5kbGUgc3RyaW5ncyB3aXRoIGVtYmVkZGVkIHplcm9zIGNvcnJlY3RseSBpbiBzcWxpdGUzLgotCi0tIElzc3VlICMxMzgwNjogVGhlIHNpemUgY2hlY2sgaW4gYXVkaW9vcCBkZWNvbXByZXNzaW9uIGZ1bmN0aW9ucyB3YXMgdG9vCi0gIHN0cmljdCBhbmQgY291bGQgcmVqZWN0IHZhbGlkIGNvbXByZXNzZWQgZGF0YS4gIFBhdGNoIGJ5IE9sZWcgUGxha2hvdG55dWsuCi0KLS0gSXNzdWUgIzEzODg1OiBDVkUtMjAxMS0zMzg5OiB0aGUgX3NzbCBtb2R1bGUgd291bGQgYWx3YXlzIGRpc2FibGUgdGhlIENCQwotICBJViBhdHRhY2sgY291bnRlcm1lYXN1cmUuCi0KLS0gSXNzdWUgIzY2MzE6IERpc2FsbG93IHJlbGF0aXZlIGZpbGUgcGF0aHMgaW4gdXJsbGliIHVybG9wZW4gbWV0aG9kcy4KLQotLSBJc3N1ZSAjMTM3ODE6IFByZXZlbnQgZ3ppcC5HemlwRmlsZSBmcm9tIHVzaW5nIHRoZSBkdW1teSBmaWxlbmFtZSBwcm92aWRlZCBieQotICBmaWxlIG9iamVjdHMgb3BlbmVkIHdpdGggb3MuZmRvcGVuKCkuCi0KLS0gSXNzdWUgIzEzNTg5OiBGaXggc29tZSBzZXJpYWxpemF0aW9uIHByaW1pdGl2ZXMgaW4gdGhlIGFpZmMgbW9kdWxlLgotICBQYXRjaCBieSBPbGVnIFBsYWtob3RueXVrLgotCi0tIElzc3VlICMxMzgwMzogVW5kZXIgU29sYXJpcywgZGlzdHV0aWxzIGRvZXNuJ3QgaW5jbHVkZSBiaXRuZXNzCi0gIGluIHRoZSBkaXJlY3RvcnkgbmFtZS4KLQotLSBJc3N1ZSAjMTM2NDI6IFVucXVvdGUgYmVmb3JlIGI2NGVuY29kaW5nIHVzZXI6cGFzc3dvcmQgZHVyaW5nIEJhc2ljCi0gIEF1dGhlbnRpY2F0aW9uLiBQYXRjaCBjb250cmlidXRlZCBieSBKb29uYXMgS3VvcmlsZWh0byBhbmQgTWljaGVsZSBPcnLDuS4KLQotLSBJc3N1ZSAjMTM2MzY6IFdlYWsgY2lwaGVycyBhcmUgbm93IGRpc2FibGVkIGJ5IGRlZmF1bHQgaW4gdGhlIHNzbCBtb2R1bGUKLSAgKGV4Y2VwdCB3aGVuIFNTTHYyIGlzIGV4cGxpY2l0bHkgYXNrZWQgZm9yKS4KLQotLSBJc3N1ZSAjMTI3OTg6IFVwZGF0ZWQgdGhlIG1pbWV0eXBlcyBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxMzYzOTogQWNjZXB0IHVuaWNvZGUgZmlsZW5hbWVzIGluIHRhcmZpbGUub3Blbihtb2RlPSJ3fGd6IikuCi0KLS0gSXNzdWUgIzE3ODU6IEZpeCBpbnNwZWN0IGFuZCBweWRvYyB3aXRoIG1pc2JlaGF2aW5nIGRlc2NyaXB0b3JzLgotCi0tIElzc3VlICM3NTAyOiBGaXggZXF1YWxpdHkgY29tcGFyaXNvbiBmb3IgRG9jVGVzdENhc2UgaW5zdGFuY2VzLiAgUGF0Y2ggYnkKLSAgQ8OpZHJpYyBLcmllci4KLQotLSBJc3N1ZSAjMTE4NzA6IHRocmVhZGluZzogUHJvcGVybHkgcmVpbml0aWFsaXplIHRocmVhZHMgaW50ZXJuYWwgbG9ja3MgYW5kCi0gIGNvbmRpdGlvbiB2YXJpYWJsZXMgdG8gYXZvaWQgZGVhZGxvY2tzIGluIGNoaWxkIHByb2Nlc3Nlcy4KLQotLSBJc3N1ZSAjODAzNTogdXJsbGliOiBGaXggYSBidWcgd2hlcmUgdGhlIGNsaWVudCBjb3VsZCByZW1haW4gc3R1Y2sgYWZ0ZXIgYQotICByZWRpcmVjdGlvbiBvciBhbiBlcnJvci4KLQotLSB0YXJmaWxlLnB5OiBDb3JyZWN0bHkgZGV0ZWN0IGJ6aXAyIGNvbXByZXNzZWQgc3RyZWFtcyB3aXRoIGJsb2Nrc2l6ZXMKLSAgb3RoZXIgdGhhbiA5MDBrLgotCi0tIElzc3VlICMxMzU3MzogVGhlIGNzdi53cml0ZXIgbm93IHVzZXMgdGhlIHJlcHIoKSBmb3IgZmxvYXRzIHJhdGhlciB0aGFuIHN0cigpLgotICBUaGlzIGFsbG93cyBmbG9hdHMgdG8gcm91bmQtdHJpcCB3aXRob3V0IGxvc3Mgb2YgcHJlY2lzaW9uLgotCi0tIElzc3VlICMxMzQzOTogRml4IG1hbnkgZXJyb3JzIGluIHR1cnRsZSBkb2NzdHJpbmdzLgotCi0tIElzc3VlICMxMjg1NjogRW5zdXJlIGNoaWxkIHByb2Nlc3NlcyBkbyBub3QgaW5oZXJpdCB0aGUgcGFyZW50J3MgcmFuZG9tCi0gIHNlZWQgZm9yIGZpbGVuYW1lIGdlbmVyYXRpb24gaW4gdGhlIHRlbXBmaWxlIG1vZHVsZS4gIFBhdGNoIGJ5IEJyaWFuCi0gIEhhcnJpbmcuCi0KLS0gSXNzdWUgIzEzNDU4OiBGaXggYSBtZW1vcnkgbGVhayBpbiB0aGUgc3NsIG1vZHVsZSB3aGVuIGRlY29kaW5nIGEKLSAgY2VydGlmaWNhdGUgd2l0aCBhIHN1YmplY3RBbHROYW1lLiAgUGF0Y2ggYnkgUm9iZXJ0IFhpYW8uCi0KLS0gSXNzdWUgIzEzNDE1OiBvcy51bnNldGVudigpIGRvZXNuJ3QgaWdub3JlIGVycm9ycyBhbnltb3JlLgotCi0tIElzc3VlICMxMzMyMjogRml4IEJ1ZmZlcmVkV3JpdGVyLndyaXRlKCkgdG8gZW5zdXJlIHRoYXQgQmxvY2tpbmdJT0Vycm9yIGlzCi0gIHJhaXNlZCB3aGVuIHRoZSB3cmFwcGVkIHJhdyBmaWxlIGlzIG5vbi1ibG9ja2luZyBhbmQgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLgotICBQcmV2aW91cyBjb2RlIGFzc3VtZWQgdGhhdCB0aGUgcmF3IHdyaXRlKCkgd291bGQgcmFpc2UgQmxvY2tpbmdJT0Vycm9yLCBidXQKLSAgUmF3SU9CYXNlLndyaXRlKCkgaXMgZGVmaW5lZCB0byByZXR1cm5lZCBOb25lIHdoZW4gdGhlIGNhbGwgd291bGQgYmxvY2suCi0gIFBhdGNoIGJ5IHNidC4KLQotLSBJc3N1ZSAjMTMzNTg6IEhUTUxQYXJzZXIgbm93IGNhbGxzIGhhbmRsZV9kYXRhIG9ubHkgb25jZSBmb3IgZWFjaCBDREFUQS4KLQotLSBJc3N1ZSAjNDE0NzogbWluaWRvbSdzIHRvcHJldHR5eG1sIG5vIGxvbmdlciBhZGRzIHdoaXRlc3BhY2UgYXJvdW5kIGEgdGV4dAotICBub2RlIHdoZW4gaXQgaXMgdGhlIG9ubHkgY2hpbGQgb2YgYW4gZWxlbWVudC4gIEluaXRpYWwgcGF0Y2ggYnkgRGFuCi0gIEtlbmlnc2JlcmcuCi0KLS0gSXNzdWVzICMxNzQ1NzYxLCAjNzU1NjcwLCAjMTMzNTcsICMxMjYyOSwgIzEyMDAzMTM6IEhUTUxQYXJzZXIgbm93IGNvcnJlY3RseQotICBoYW5kbGVzIG5vbi12YWxpZCBhdHRyaWJ1dGVzLCBpbmNsdWRpbmcgYWRqYWNlbnQgYW5kIHVucXVvdGVkIGF0dHJpYnV0ZXMuCi0KLS0gSXNzdWUgIzEzMzczOiBtdWx0aXByb2Nlc3NpbmcuUXVldWUuZ2V0KCkgY291bGQgc29tZXRpbWVzIGJsb2NrIGluZGVmaW5pdGVseQotICB3aGVuIGNhbGxlZCB3aXRoIGEgdGltZW91dC4gIFBhdGNoIGJ5IEFybmF1ZCBZc21hbC4KLQotLSBJc3N1ZSAjMzA2NzogRW5oYW5jZSB0aGUgZG9jdW1lbnRhdGlvbiBhbmQgZG9jc3RyaW5nIG9mCi0gIGxvY2FsZS5zZXRsb2NhbGUoKS4KLQotLSBJc3N1ZSAjMTMyNTQ6IEZpeCBNYWlsZGlyIGluaXRpYWxpemF0aW9uIHNvIHRoYXQgbWFpbGRpciBjb250ZW50cwotICBhcmUgcmVhZCBjb3JyZWN0bHkuCi0KLS0gSXNzdWUgIzEzMTQwOiBGaXggdGhlIGRhZW1vbl90aHJlYWRzIGF0dHJpYnV0ZSBvZiBUaHJlYWRpbmdNaXhJbi4KLQotLSBJc3N1ZSAjMjg5MjogcHJlc2VydmUgaXRlcnBhcnNlIGV2ZW50cyBpbiBjYXNlIG9mIFN5bnRheEVycm9yLgotCi0tIElzc3VlICM2NzA2NjQ6IEZpeCBIVE1MUGFyc2VyIHRvIGNvcnJlY3RseSBoYW5kbGUgdGhlIGNvbnRlbnQgb2YKLSAgYGA8c2NyaXB0Pi4uLjwvc2NyaXB0PmBgIGFuZCBgYDxzdHlsZT4uLi48L3N0eWxlPmBgLgotCi0tIElzc3VlICMxMDgxNzogRml4IHVybHJldHJpZXZlIGZ1bmN0aW9uIHRvIHJhaXNlIENvbnRlbnRUb29TaG9ydEVycm9yIGV2ZW4KLSAgd2hlbiByZXBvcnRob29rIGlzIE5vbmUuIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCi0KLS0gSXNzdWUgIzczMzQ6IGNsb3NlIHNvdXJjZSBmaWxlcyBvbiBFbGVtZW50VHJlZS5wYXJzZSBhbmQgaXRlcnBhcnNlLgotCi0tIElzc3VlICMxMzIzMjogbG9nZ2luZzogSW1wcm92ZWQgbG9nZ2luZyBvZiBleGNlcHRpb25zIGluIHRoZSBwcmVzZW5jZSBvZgotICBtdWx0aXBsZSBlbmNvZGluZ3MuCi0KLS0gSXNzdWUgIzEwMzMyOiBtdWx0aXByb2Nlc3Npbmc6IGZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYSBQb29sIGlzIGNsb3NlZAotICBiZWZvcmUgYWxsIHRhc2tzIGhhdmUgY29tcGxldGVkLgotCi0tIElzc3VlICMxNTQ4ODkxOiBUaGUgY1N0cmluZ0lPLlN0cmluZ0lPKCkgY29uc3RydWN0b3Igbm93IGVuY29kZXMgdW5pY29kZQotICBhcmd1bWVudHMgd2l0aCB0aGUgc3lzdGVtIGRlZmF1bHQgZW5jb2RpbmcganVzdCBsaWtlIHRoZSB3cml0ZSgpIG1ldGhvZAotICBkb2VzLCBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgaXQgdG8gYSByYXcgYnVmZmVyLiAgVGhpcyBhbHNvIGZpeGVzIGhhbmRsaW5nIG9mCi0gIHVuaWNvZGUgaW5wdXQgaW4gdGhlIHNobGV4IG1vZHVsZSAoIzY5ODgsICMxMTcwKS4KLQotLSBJc3N1ZSAjOTE2ODogbm93IHNtdHBkIGlzIGFibGUgdG8gYmluZCBwcml2aWxlZ2VkIHBvcnQuCi0KLS0gSXNzdWUgIzEyNTI5OiBmaXggY2dpLnBhcnNlX2hlYWRlciBpc3N1ZSBvbiBzdHJpbmdzIHdpdGggZG91YmxlLXF1b3RlcyBhbmQKLSAgc2VtaWNvbG9ucyB0b2dldGhlci4gUGF0Y2ggYnkgQmVuIERhcm5lbGwgYW5kIFBldHJpIExlaHRpbmVuLgotCi0tIElzc3VlICM2MDkwOiB6aXBmaWxlIHJhaXNlcyBhIFZhbHVlRXJyb3Igd2hlbiBhIGRvY3VtZW50IHdpdGggYSB0aW1lc3RhbXAKLSAgZWFybGllciB0aGFuIDE5ODAgaXMgcHJvdmlkZWQuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IFBldHJpIExlaHRpbmVuLgotCi0tIElzc3VlICMxMzE5NDogemxpYi5jb21wcmVzc29iaigpLmNvcHkoKSBhbmQgemxpYi5kZWNvbXByZXNzb2JqKCkuY29weSgpIGFyZQotICBub3cgYXZhaWxhYmxlIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEzMTE0OiBGaXggdGhlIGRpc3R1dGlscyBjb21tYW5kcyBjaGVjayBhbmQgcmVnaXN0ZXIgd2hlbiB0aGUKLSAgbG9uZyBkZXNjcmlwdGlvbiBpcyBhIFVuaWNvZGUgc3RyaW5nIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnMuCi0KLS0gSXNzdWUgIzczNjc6IEZpeCBwa2d1dGlsLndhbGtfcGF0aHMgdG8gc2tpcCBkaXJlY3RvcmllcyB3aG9zZQotICBjb250ZW50cyBjYW5ub3QgYmUgcmVhZC4KLQotLSBJc3N1ZSAjNzQyNTogUHJldmVudCBweWRvYyAtayBmYWlsdXJlcyBkdWUgdG8gbW9kdWxlIGltcG9ydCBlcnJvcnMuCi0gIChCYWNrcG9ydCB0byAyLjcgb2YgZXhpc3RpbmcgMy54IGZpeCkKLQotLSBJc3N1ZSAjMTMwOTk6IEZpeCBzcWxpdGUzLkN1cnNvci5sYXN0cm93aWQgdW5kZXIgYSBUdXJraXNoIGxvY2FsZS4KLSAgUmVwb3J0ZWQgYW5kIGRpYWdub3NlZCBieSBUaG9tYXMgS2x1eXZlci4KLQotLSBJc3N1ZSAjNzY4OTogQWxsb3cgcGlja2xpbmcgb2YgZHluYW1pY2FsbHkgY3JlYXRlZCBjbGFzc2VzIHdoZW4gdGhlaXIKLSAgbWV0YWNsYXNzIGlzIHJlZ2lzdGVyZWQgd2l0aCBjb3B5X3JlZy4gIFBhdGNoIGJ5IE5pY29sYXMgTS4gVGhpw6lyeSBhbmQKLSAgQ3JhaWcgQ2l0cm8uCi0KLS0gSXNzdWUgIzEzMDU4OiBvc3NhdWRpb2RldjogZml4IGEgZmlsZSBkZXNjcmlwdG9yIGxlYWsgb24gZXJyb3IuIFBhdGNoIGJ5Ci0gIFRob21hcyBKYXJvc2NoLgotCi0tIElzc3VlICMxMjkzMTogeG1scnBjbGliIG5vdyBlbmNvZGVzIFVuaWNvZGUgVVJJIHRvIElTTy04ODU5LTEsIGluc3RlYWQgb2YKLSAgZmFpbGluZyB3aXRoIGEgVW5pY29kZURlY29kZUVycm9yLgotCi0tIElzc3VlICM4OTMzOiBkaXN0dXRpbHMnIFBLRy1JTkZPIGZpbGVzIHdpbGwgbm93IGNvcnJlY3RseSByZXBvcnQKLSAgTWV0YWRhdGEtVmVyc2lvbjogMS4xIGluc3RlYWQgb2YgMS4wIGlmIGEgQ2xhc3NpZmllciBvciBEb3dubG9hZC1VUkwgZmllbGQgaXMKLSAgcHJlc2VudC4KLQotLSBJc3N1ZSAjODI4NjogVGhlIGRpc3R1dGlscyBjb21tYW5kIHNkaXN0IHdpbGwgcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2UgaW5zdGVhZAotICBvZiBjcmFzaGluZyB3aGVuIGFuIGludmFsaWQgcGF0aCBpcyBnaXZlbiBpbiB0aGUgbWFuaWZlc3QgdGVtcGxhdGUuCi0KLS0gSXNzdWUgIzEyODQxOiB0YXJmaWxlIHVubmVjZXNzYXJpbHkgY2hlY2tlZCB0aGUgZXhpc3RlbmNlIG9mIG51bWVyaWNhbCB1c2VyCi0gIGFuZCBncm91cCBpZHMgb24gZXh0cmFjdGlvbi4gSWYgb25lIG9mIHRoZW0gZGlkIG5vdCBleGlzdCB0aGUgcmVzcGVjdGl2ZSBpZAotICBvZiB0aGUgY3VycmVudCB1c2VyIChpLmUuIHJvb3QpIHdhcyB1c2VkIGZvciB0aGUgZmlsZSBhbmQgb3duZXJzaGlwCi0gIGluZm9ybWF0aW9uIHdhcyBsb3N0LgotCi0tIElzc3VlICMxMDk0NjogVGhlIGRpc3R1dGlscyBjb21tYW5kcyBiZGlzdF9kdW1iLCBiZGlzdF93aW5pbnN0IGFuZCBiZGlzdF9tc2kKLSAgbm93IHJlc3BlY3QgYSAtLXNraXAtYnVpbGQgb3B0aW9uIGdpdmVuIHRvIGJkaXN0LgotCi0tIElzc3VlICMxMjI4NzogRml4IGEgc3RhY2sgY29ycnVwdGlvbiBpbiBvc3NhdWRpb2RldiBtb2R1bGUgd2hlbiB0aGUgRkQgaXMKLSAgZ3JlYXRlciB0aGFuIEZEX1NFVFNJWkUuCi0KLS0gSXNzdWUgIzEyODM5OiBGaXggY3Jhc2ggaW4gemxpYiBtb2R1bGUgZHVlIHRvIHZlcnNpb24gbWlzbWF0Y2guCi0gIEZpeCBieSBSaWNoYXJkIE0uIFRldy4KLQotLSBJc3N1ZSAjMTI3ODY6IFNldCBjb21tdW5pY2F0aW9uIHBpcGVzIHVzZWQgYnkgc3VicHJvY2Vzcy5Qb3BlbiBDTE9FWEVDIHRvCi0gIGF2b2lkIHRoZW0gYmVpbmcgaW5oZXJpdGVkIGJ5IG90aGVyIHN1YnByb2Nlc3Nlcy4KLQotLSBJc3N1ZSAjNDEwNjogRml4IG9jY2FzaW9uYWwgZXhjZXB0aW9ucyBwcmludGVkIG91dCBieSBtdWx0aXByb2Nlc3Npbmcgb24KLSAgaW50ZXJwcmV0ZXIgc2h1dGRvd24uCi0KLS0gSXNzdWUgIzExNjU3OiBGaXggc2VuZGluZyBmaWxlIGRlc2NyaXB0b3JzIG92ZXIgMjU1IG92ZXIgYSBtdWx0aXByb2Nlc3NpbmcKLSAgUGlwZS4KLQotLSBJc3N1ZSAjMTIyMTM6IEZpeCBhIGJ1ZmZlcmluZyBidWcgd2l0aCBpbnRlcmxlYXZlZCByZWFkcyBhbmQgd3JpdGVzIHRoYXQKLSAgY291bGQgYXBwZWFyIG9uIGlvLkJ1ZmZlcmVkUmFuZG9tIHN0cmVhbXMuCi0KLS0gSXNzdWUgIzEyMzI2OiBzeXMucGxhdGZvcm0gaXMgbm93IGFsd2F5cyAnbGludXgyJyBvbiBMaW51eCwgZXZlbiBpZiBQeXRob24KLSAgaXMgY29tcGlsZWQgb24gTGludXggMy4KLQotLSBJc3N1ZSAjMTMwMDc6IHdoaWNoZGIgc2hvdWxkIHJlY29nbml6ZSBnZGJtIDEuOSBtYWdpYyBudW1iZXJzLgotCi0tIElzc3VlICM5MTczOiBMZXQgc2h1dGlsLl9tYWtlX2FyY2hpdmUgd29yayBpZiB0aGUgbG9nZ2VyIGFyZ3VtZW50IGlzIE5vbmUuCi0KLS0gSXNzdWUgIzEyNjUwOiBGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBhIHN1YnByb2Nlc3MuUG9wZW4gY291bGQgbGVhawotICByZXNvdXJjZXMgKEZEL3pvbWJpZSkgd2hlbiBraWxsZWQgYXQgdGhlIHdyb25nIHRpbWUuCi0KLS0gSXNzdWUgIzEyNzUyOiBGaXggcmVncmVzc2lvbiB3aGljaCBwcmV2ZW50ZWQgbG9jYWxlLm5vcm1hbGl6ZSgpIGZyb20KLSAgYWNjZXB0aW5nIHVuaWNvZGUgc3RyaW5ncy4KLQotLSBJc3N1ZSAjMTI2ODM6IHVybHBhcnNlIHVwZGF0ZWQgdG8gaW5jbHVkZSBzdm4gYXMgc2NoZW1lcyB0aGF0IHVzZXMgcmVsYXRpdmUKLSAgcGF0aHMuIChzdm4gZnJvbSAxLjUgb253YXJkcyBzdXBwb3J0IHJlbGF0aXZlIHBhdGgpLgotCi0tIElzc3VlICMxMTkzMzogRml4IGluY29ycmVjdCBtdGltZSBjb21wYXJpc29uIGluIGRpc3R1dGlscy4KLQotLSBJc3N1ZXMgIzExMTA0LCAjODY4ODogRml4IHRoZSBiZWhhdmlvciBvZiBkaXN0dXRpbHMnIHNkaXN0IGNvbW1hbmQgd2l0aAotICBtYW51YWxseS1tYWludGFpbmVkIE1BTklGRVNUIGZpbGVzLgotCi0tIElzc3VlICM4ODg3OiAicHlkb2Mgc29tZWJ1aWx0aW4uc29tZW1ldGhvZCIgKG9yIGhlbHAoJ3NvbWVidWlsdGluLnNvbWVtZXRob2QnKQotICBpbiBQeXRob24gY29kZSkgbm93IGZpbmRzIHRoZSBkb2Mgb2YgdGhlIG1ldGhvZC4KLQotLSBJc3N1ZSAjMTI2MDM6IEZpeCBweWRvYy5zeW5vcHNpcygpIG9uIGZpbGVzIHdpdGggbm9uLW5lZ2F0aXZlIHN0X210aW1lLgotCi0tIElzc3VlICMxMjUxNDogVXNlIHRyeS9maW5hbGx5IHRvIGFzc3VyZSB0aGUgdGltZWl0IG1vZHVsZSByZXN0b3JlcyBnYXJiYWdlCi0gIGNvbGxlY3Rpb25zIHdoZW4gaXQgaXMgZG9uZS4KLQotLSBJc3N1ZSAjMTI2MDc6IEluIHN1YnByb2Nlc3MsIGZpeCBpc3N1ZSB3aGVyZSBpZiBzdGRpbiwgc3Rkb3V0IG9yIHN0ZGVyciBpcwotICBnaXZlbiBhcyBhIGxvdyBmZCwgaXQgZ2V0cyBvdmVyd3JpdHRlbi4KLQotLSBJc3N1ZSAjMTIxMDI6IERvY3VtZW50IHRoYXQgYnVmZmVyZWQgZmlsZXMgbXVzdCBiZSBmbHVzaGVkIGJlZm9yZSBiZWluZyB1c2VkCi0gIHdpdGggbW1hcC4gUGF0Y2ggYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KLQotLSBJc3N1ZSAjMTI1NjA6IEJ1aWxkIGxpYnB5dGhvbi5zbyBvbiBPcGVuQlNELiBQYXRjaCBieSBTdGVmYW4gU3BlcmxpbmcuCi0KLS0gSXNzdWUgIzE4MTM6IEZpeCBjb2RlYyBsb29rdXAgYW5kIHNldHRpbmcvZ2V0dGluZyBsb2NhbGVzIHVuZGVyIFR1cmtpc2gKLSAgbG9jYWxlcy4KLQotLSBJc3N1ZSAjMTA4ODM6IEZpeCBzb2NrZXQgbGVha3MgaW4gdXJsbGliIHdoZW4gdXNpbmcgRlRQLgotCi0tIElzc3VlICMxMjU5MjogTWFrZSBQeXRob24gYnVpbGQgb24gT3BlbkJTRCA1IChhbmQgZnV0dXJlIG1ham9yIHJlbGVhc2VzKS4KLQotLSBJc3N1ZSAjMTIzNzI6IFBPU0lYIHNlbWFwaG9yZXMgYXJlIGJyb2tlbiBvbiBBSVg6IGRvbid0IHVzZSB0aGVtLgotCi0tIElzc3VlICMxMjU3MTogQWRkIGEgcGxhdC1saW51eDMgZGlyZWN0b3J5IG1pcnJvcmluZyB0aGUgcGxhdC1saW51eDIKLSAgZGlyZWN0b3J5LCBzbyB0aGF0ICJpbXBvcnQgRExGQ04iIGFuZCBvdGhlciBzaW1pbGFyIGltcG9ydHMgd29yayBvbgotICBMaW51eCAzLjAuCi0KLS0gSXNzdWUgIzc0ODQ6IHNtdHBsaWIgbm8gbG9uZ2VyIHB1dHMgPD4gYXJvdW5kIGFkZHJlc3NlcyBpbiBWUkZZIGFuZCBFWFBOCi0gIGNvbW1hbmRzOyB0aGV5IGFyZW4ndCByZXF1aXJlZCBhbmQgaW4gZmFjdCBwb3N0Zml4IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0IGZvcm0uCi0KLS0gSXNzdWUgIzExNjAzOiBGaXggYSBjcmFzaCB3aGVuIF9fc3RyX18gaXMgcmVib3VuZCBhcyBfX3JlcHJfXy4gIFBhdGNoIGJ5Ci0gIEFuZHJlYXMgU3TDvGhyay4KLQotLSBJc3N1ZSAjMTI1MDI6IGFzeW5jb3JlOiBmaXggcG9sbGluZyBsb29wIHdpdGggQUZfVU5JWCBzb2NrZXRzLgotCi0tIElzc3VlICM0Mzc2OiBjdHlwZXMgbm93IHN1cHBvcnRzIG5lc3RlZCBzdHJ1Y3R1cmVzIGluIGFuIGVuZGlhbiBkaWZmZXJlbnQgdGhhbgotICB0aGUgcGFyZW50IHN0cnVjdHVyZS4gUGF0Y2ggYnkgVmxhZCBSaXNjdXRpYS4KLQotLSBJc3N1ZSAjMTI0OTM6IHN1YnByb2Nlc3M6IFBvcGVuLmNvbW11bmljYXRlKCkgbm93IGFsc28gaGFuZGxlcyBFSU5UUiBlcnJvcnMKLSAgaWYgdGhlIHByb2Nlc3MgaGFzIG9ubHkgb25lIHBpcGUuCi0KLS0gSXNzdWUgIzEyNDY3OiB3YXJuaW5nczogZml4IGEgcmFjZSBjb25kaXRpb24gaWYgYSB3YXJuaW5nIGlzIGVtaXR0ZWQgYXQKLSAgc2h1dGRvd24sIGlmIGdsb2JhbHMoKVsnX19maWxlX18nXSBpcyBOb25lLgotCi0tIElzc3VlICMxMjM1MjogRml4IGEgZGVhZGxvY2sgaW4gbXVsdGlwcm9jZXNzaW5nLkhlYXAgd2hlbiBhIGJsb2NrIGlzIGZyZWVkIGJ5Ci0gIHRoZSBnYXJiYWdlIGNvbGxlY3RvciB3aGlsZSB0aGUgSGVhcCBsb2NrIGlzIGhlbGQuCi0KLS0gSXNzdWUgIzk1MTY6IE9uIE1hYyBPUyBYLCBjaGFuZ2UgRGlzdHV0aWxzIHRvIG5vIGxvbmdlciBnbG9iYWxseSBhdHRlbXB0IHRvCi0gIGNoZWNrIG9yIHNldCB0aGUgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGUKLSAgaW50ZXJwcmV0ZXIgcHJvY2Vzcy4gIFRoaXMgY291bGQgY2F1c2UgZmFpbHVyZXMgaW4gbm9uLURpc3R1dGlscyBzdWJwcm9jZXNzZXMKLSAgYW5kIHdhcyB1bnJlbGlhYmxlIHNpbmNlIHRlc3RzIG9yIHVzZXIgcHJvZ3JhbXMgY291bGQgbW9kaWZ5IHRoZSBpbnRlcnByZXRlcgotICBlbnZpcm9ubWVudCBhZnRlciBEaXN0dXRpbHMgc2V0IGl0LiAgSW5zdGVhZCwgaGF2ZSBEaXN0dXRpbHMgc2V0IHRoZQotICBkZXBsb3ltZW50IHRhcmdldCBvbmx5IGluIHRoZSBlbnZpcm9ubWVudCBvZiBlYWNoIGJ1aWxkIHN1YnByb2Nlc3MuICBJdCBpcwotICBzdGlsbCBwb3NzaWJsZSB0byBnbG9iYWxseSBvdmVycmlkZSB0aGUgZGVmYXVsdCBieSBzZXR0aW5nCi0gIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBiZWZvcmUgbGF1bmNoaW5nIHRoZSBpbnRlcnByZXRlcjsgaXRzIHZhbHVlIG11c3QgYmUKLSAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGUgZGVmYXVsdCB2YWx1ZSwgdGhlIHZhbHVlIHdpdGggd2hpY2ggdGhlIGludGVycHJldGVyCi0gIHdhcyBidWlsdC4KLQotLSBJc3N1ZSAjMTE4MDI6IFRoZSBjYWNoZSBpbiBmaWxlY21wIG5vdyBoYXMgYSBtYXhpbXVtIHNpemUgb2YgMTAwIHNvIHRoYXQKLSAgaXQgd29uJ3QgZ3JvdyB3aXRob3V0IGJvdW5kLgotCi0tIElzc3VlICMxMjQwNDogUmVtb3ZlIEM4OSBpbmNvbXBhdGlibGUgY29kZSBmcm9tIG1tYXAgbW9kdWxlLiBQYXRjaCBieSBBa2lyYQotICBLaXRhZGEuCi0KLS0gSXNzdWUgIzExNzAwOiBtYWlsYm94IHByb3h5IG9iamVjdCBjbG9zZSBtZXRob2RzIGNhbiBub3cgYmUgY2FsbGVkIG11bHRpcGxlCi0gIHRpbWVzIHdpdGhvdXQgZXJyb3IsIGFuZCBfUHJveHlGaWxlIG5vdyBjbG9zZXMgdGhlIHdyYXBwZWQgZmlsZS4KLQotLSBJc3N1ZSAjMTIxMzM6IEFic3RyYWN0SFRUUEhhbmRsZXIuZG9fb3BlbigpIG9mIHVybGxpYi5yZXF1ZXN0IGNsb3NlcyB0aGUgSFRUUAotICBjb25uZWN0aW9uIGlmIGl0cyBnZXRyZXNwb25zZSgpIG1ldGhvZCBmYWlscyB3aXRoIGEgc29ja2V0IGVycm9yLiBQYXRjaAotICB3cml0dGVuIGJ5IEV6aW8gTWVsb3R0aS4KLQotLSBJc3N1ZSAjOTI4NDogQWxsb3cgaW5zcGVjdC5maW5kc291cmNlKCkgdG8gZmluZCB0aGUgc291cmNlIG9mIGRvY3Rlc3QKLSAgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxMDY5NDogemlwZmlsZSBub3cgaWdub3JlcyBnYXJiYWdlIGF0IHRoZSBlbmQgb2YgYSB6aXBmaWxlLgotCi0tIElzc3VlICMxMTU4MzogU3BlZWQgdXAgb3MucGF0aC5pc2RpciBvbiBXaW5kb3dzIGJ5IHVzaW5nIEdldEZpbGVBdHRyaWJ1dGVzCi0gIGluc3RlYWQgb2Ygb3Muc3RhdC4KLQotLSBJc3N1ZSAjMTIwODA6IEZpeCBhIHBlcmZvcm1hbmNlIGlzc3VlIGluIERlY2ltYWwuX3Bvd2VyX2V4YWN0IHRoYXQgY2F1c2VkCi0gIHNvbWUgY29ybmVyLWNhc2UgRGVjaW1hbC5fX3Bvd19fIGNhbGxzIHRvIHRha2UgYW4gdW5yZWFzb25hYmx5IGxvbmcgdGltZS4KLQotLSBOYW1lZCB0dXBsZXMgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggdmFycygpLgotCi0tIHN5cy5zZXRjaGVja2ludGVydmFsKCkgbm93IHVwZGF0ZXMgdGhlIGN1cnJlbnQgdGlja2VyIGNvdW50IGFzIHdlbGwgYXMKLSAgdXBkYXRpbmcgdGhlIGNoZWNrIGludGVydmFsLCBzbyBpZiB0aGUgdXNlciBkZWNyZWFzZXMgdGhlIGNoZWNrIGludGVydmFsLAotICB0aGUgdGlja2VyIGRvZXNuJ3QgaGF2ZSB0byB3aW5kIGRvd24gdG8gemVybyBmcm9tIHRoZSBvbGQgc3RhcnRpbmcgcG9pbnQKLSAgYmVmb3JlIHRoZSBuZXcgaW50ZXJ2YWwgdGFrZXMgZWZmZWN0LiAgQW5kIGlmIHRoZSB1c2VyIGluY3JlYXNlcyB0aGUKLSAgaW50ZXJ2YWwsIGl0IG1ha2VzIHN1cmUgdGhlIG5ldyBsaW1pdCB0YWtlcyBlZmZlY3QgcmlnaHQgYXdheSByYXRoZXIgaGF2ZSBhbgotICBlYXJseSB0YXNrIHN3aXRjaCBiZWZvcmUgcmVjb2duaXppbmcgdGhlIG5ldyBpbnRlcnZhbC4KLQotLSBJc3N1ZSAjMTIwODU6IEZpeCBhbiBhdHRyaWJ1dGUgZXJyb3IgaW4gc3VicHJvY2Vzcy5Qb3BlbiBkZXN0cnVjdG9yIGlmIHRoZQotICBjb25zdHJ1Y3RvciBoYXMgZmFpbGVkLCBlLmcuIGJlY2F1c2Ugb2YgYW4gdW5kZWNsYXJlZCBrZXl3b3JkIGFyZ3VtZW50LiBQYXRjaAotICB3cml0dGVuIGJ5IE9sZWcgT3NobXlhbi4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzkwNDE6IEFuIGlzc3VlIGluIGN0eXBlcy5jX2xvbmdkb3VibGUsIGN0eXBlcy5jX2RvdWJsZSwgYW5kCi0gIGN0eXBlcy5jX2Zsb2F0IHRoYXQgY2F1c2VkIGFuIGluY29ycmVjdCBleGNlcHRpb24gdG8gYmUgcmV0dXJuZWQgaW4gdGhlCi0gIGNhc2Ugb2Ygb3ZlcmZsb3cgaGFzIGJlZW4gZml4ZWQuCi0KLS0gYnNkZGIgbW9kdWxlOiBFcnJhdGljIGJlaGF2aW91ciBvZiAiREJFbnYtPnJlcF9lbGVjdCgpIiBiZWNhdXNlIGEgdHlwby4KLSAgUG9zc2libGUgY3Jhc2guCi0KLS0gSXNzdWUgIzEzNzc0OiBqc29uOiBGaXggYSBTeXN0ZW1FcnJvciB3aGVuIGEgYm9ndXMgZW5jb2RpbmcgaXMgcGFzc2VkIHRvCi0gIGpzb24ubG9hZHMoKS4KLQotLSBJc3N1ZSAjOTk3NTogc29ja2V0OiBGaXggaW5jb3JyZWN0IHVzZSBvZiBmbG93aW5mbyBhbmQgc2NvcGVfaWQuIFBhdGNoIGJ5Ci0gIFZpbG1vcyBOZWJlaGFqLgotCi0tIElzc3VlICMxMzE1OTogRmlsZUlPLCBCWjJGaWxlLCBhbmQgdGhlIGJ1aWx0LWluIGZpbGUgY2xhc3Mgbm93IHVzZSBhCi0gIGxpbmVhci10aW1lIGJ1ZmZlciBncm93dGggc3RyYXRlZ3kgaW5zdGVhZCBvZiBhIHF1YWRyYXRpYyBvbmUuCi0KLS0gSXNzdWUgIzEzMDcwOiBGaXggYSBjcmFzaCB3aGVuIGEgVGV4dElPV3JhcHBlciBjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUKLSAgd291bGQgYmUgZmluYWxpemVkIGFmdGVyIHRoZSByZWZlcmVuY2UgdG8gaXRzIHVuZGVybHlpbmcgQnVmZmVyZWRSV1BhaXIncwotICB3cml0ZXIgZ290IGNsZWFyZWQgYnkgdGhlIEdDLgotCi0tIElzc3VlICMxMjg4MTogY3R5cGVzOiBGaXggc2VnZmF1bHQgd2l0aCBsYXJnZSBzdHJ1Y3R1cmUgZmllbGQgbmFtZXMuCi0KLS0gSXNzdWUgIzEzMDEzOiBjdHlwZXM6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIGluIFB5Q0FycmF5VHlwZV9mcm9tX2N0eXBlLgotICBUaGFua3MgdG8gU3VtYW4gU2FoYSBmb3IgZmluZGluZyB0aGUgYnVnIGFuZCBwcm92aWRpbmcgYSBwYXRjaC4KLQotLSBJc3N1ZSAjMTMwMjI6IEZpeDogX211bHRpcHJvY2Vzc2luZy5yZWN2ZmQoKSBkb2Vzbid0IGNoZWNrIHRoYXQKLSAgZmlsZSBkZXNjcmlwdG9yIHdhcyBhY3R1YWxseSByZWNlaXZlZC4KLQotLSBJc3N1ZSAjMTI0ODM6IGN0eXBlczogRml4IGEgY3Jhc2ggd2hlbiB0aGUgZGVzdHJ1Y3Rpb24gb2YgYSBjYWxsYmFjawotICBvYmplY3QgdHJpZ2dlcnMgdGhlIGdhcmJhZ2UgY29sbGVjdG9yLgotCi0tIElzc3VlICMxMjk1MDogRml4IHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9ycyBpbiBtdWx0aXByb2Nlc3NpbmcsIHVuZGVyCi0gIE9wZW5JbmRpYW5hL0lsbHVtb3MuCi0KLS0gSXNzdWUgIzEyNzY0OiBGaXggYSBjcmFzaCBpbiBjdHlwZXMgd2hlbiB0aGUgbmFtZSBvZiBhIFN0cnVjdHVyZSBmaWVsZCBpcyBub3QKLSAgYSBzdHJpbmcuCi0KLS0gSXNzdWUgIzk2NTE6IEZpeCBhIGNyYXNoIHdoZW4gY3R5cGVzLmNyZWF0ZV9zdHJpbmdfYnVmZmVyKDApIHdhcyBwYXNzZWQgdG8KLSAgc29tZSBmdW5jdGlvbnMgbGlrZSBmaWxlLndyaXRlKCkuCi0KLS0gSXNzdWUgIzEwMzA5OiBEZWZpbmUgX0dOVV9TT1VSQ0Ugc28gdGhhdCBtcmVtYXAoKSBnZXRzIHRoZSBwcm9wZXIKLSAgc2lnbmF0dXJlLiAgV2l0aG91dCB0aGlzLCBhcmNoaXRlY3R1cmVzIHdoZXJlIHNpemVvZiB2b2lkKiAhPSBzaXplb2YgaW50IGFyZQotICBicm9rZW4uICBQYXRjaCBnaXZlbiBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgotCi1JRExFCi0tLS0tCi0KLS0gSXNzdWUgIzk2NDQzNzogTWFrZSBJRExFIGhlbHAgd2luZG93IG5vbi1tb2RhbC4KLSAgUGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8gYW5kIFJvZ2VyIFNlcnd5LgotCi0tIElzc3VlICMxMzkzMzogSURMRSBhdXRvLWNvbXBsZXRlIGRpZCBub3Qgd29yayB3aXRoIHNvbWUgaW1wb3J0ZWQKLSAgbW9kdWxlLCBsaWtlIGhhc2hsaWIuICAoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCi0KLS0gSXNzdWUgIzEzNTA2OiBBZGQgJycgdG8gcGF0aCBmb3IgSURMRSBTaGVsbCB3aGVuIHN0YXJ0ZWQgYW5kIHJlc3RhcnRlZCB3aXRoIFJlc3RhcnQgU2hlbGwuCi0gIE9yaWdpbmFsIHBhdGNoZXMgYnkgTWFyY28gU2NhdGFnbGluaSBhbmQgUm9nZXIgU2Vyd3kuCi0KLS0gSXNzdWUgIzQ2MjU6IElmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50Ci0gIGZpbGVzLCBkaXNwbGF5IGEgbWVzc2FnZSBwb3B1cCBhbmQgY29udGludWUgcmF0aGVyIHRoYW4gY3Jhc2guCi0gIChvcmlnaW5hbCBwYXRjaCBieSBSb2dlciBTZXJ3eSkKLQotLSBJc3N1ZSAjODc5MzogUHJldmVudCBJRExFIGNyYXNoIHdoZW4gZ2l2ZW4gc3RyaW5ncyB3aXRoIGludmFsaWQgaGV4IGVzY2FwZQotICBzZXF1ZW5jZXMuCi0KLS0gSXNzdWUgIzEzMjk2OiBGaXggSURMRSB0byBjbGVhciBjb21waWxlIF9fZnV0dXJlX18gZmxhZ3Mgb24gc2hlbGwgcmVzdGFydC4KLSAgKFBhdGNoIGJ5IFJvZ2VyIFNlcnd5KQotCi0tIElzc3VlICMxNDQwOTogSURMRSBub3cgcHJvcGVybHkgZXhlY3V0ZXMgY29tbWFuZHMgaW4gdGhlIFNoZWxsIHdpbmRvdwotICB3aGVuIGl0IGNhbm5vdCByZWFkIHRoZSBub3JtYWwgY29uZmlnIGZpbGVzIG9uIHN0YXJ0dXAgYW5kCi0gIGhhcyB0byB1c2UgdGhlIGJ1aWx0LWluIGRlZmF1bHQga2V5IGJpbmRpbmdzLgotICBUaGVyZSB3YXMgcHJldmlvdXNseSBhIGJ1ZyBpbiBvbmUgb2YgdGhlIGRlZmF1bHRzLgotCi0tIElzc3VlICMzNTczOiBJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzCi0gIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mIGZpbGUocykpLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjNjgwNzogUnVuIG1zaXN1cHBvcnQubWFrIGVhcmxpZXIuCi0KLS0gSXNzdWUgIzEwNTgwOiBNaW5vciBncmFtbWFyIGNoYW5nZSBpbiBXaW5kb3dzIGluc3RhbGxlci4KLQotLSBJc3N1ZSAjMTI2Mjc6IEltcGxlbWVudCBQRVAgMzk0IGZvciBQeXRob24gMi43ICgicHl0aG9uMiIpLgotCi0tIElzc3VlICM4NzQ2OiBDb3JyZWN0IGZhdWx0eSBjb25maWd1cmUgY2hlY2tzIHNvIHRoYXQgb3MuY2hmbGFncygpIGFuZAotICBvcy5sY2hmbGFncygpIGFyZSBvbmNlIGFnYWluIGJ1aWx0IG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZXNlCi0gIGZ1bmN0aW9ucyAoKkJTRCBhbmQgT1MgWCkuICBBbHNvIGFkZCBuZXcgc3RhdCBmaWxlIGZsYWdzIGZvciBPUyBYCi0gIChVRl9ISURERU4gYW5kIFVGX0NPTVBSRVNTRUQpLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTQwNTM6IHBhdGNoY2hlY2sucHkgKCJtYWtlIHBhdGNoY2hlY2siKSBub3cgd29ya3Mgd2l0aCBNUSBwYXRjaGVzLgotICBQYXRjaCBieSBGcmFuY2lzY28gTWFydMOtbiBCcnVndcOpLgotCi0tIElzc3VlICMxMzkzMDogMnRvMyBpcyBub3cgYWJsZSB0byB3cml0ZSBpdHMgY29udmVydGVkIG91dHB1dCBmaWxlcyB0byBhbm90aGVyCi0gIGRpcmVjdG9yeSB0cmVlIGFzIHdlbGwgYXMgY29weWluZyB1bmNoYW5nZWQgZmlsZXMgYW5kIGFsdGVyaW5nIHRoZSBmaWxlCi0gIHN1ZmZpeC4gIFNlZSBpdHMgbmV3IC1vLCAtVyBhbmQgLS1hZGQtc3VmZml4IG9wdGlvbnMuICBUaGlzIG1ha2VzIGl0IG1vcmUKLSAgdXNlZnVsIGluIG1hbnkgYXV0b21hdGVkIGNvZGUgdHJhbnNsYXRpb24gd29ya2Zsb3dzLgotCi0tIElzc3VlICMxMDYzOTogcmVpbmRlbnQucHkgbm8gbG9uZ2VyIGNvbnZlcnRzIG5ld2xpbmVzIGFuZCB3aWxsIHJhaXNlCi0gIGFuIGVycm9yIGlmIGF0dGVtcHRpbmcgdG8gY29udmVydCBhIGZpbGUgd2l0aCBtaXhlZCBuZXdsaW5lcy4KLQotLSBJc3N1ZSAjMTM2Mjg6IHB5dGhvbi1nZGIucHkgaXMgbm93IGFibGUgdG8gcmV0cmlldmUgbW9yZSBmcmFtZXMgaW4gdGhlIFB5dGhvbgotICB0cmFjZWJhY2sgaWYgUHl0aG9uIGlzIG9wdGltaXplZC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzE1NDY3OiBNb3ZlIGhlbHBlcnMgZm9yIF9fc2l6ZW9mX18gdGVzdHMgaW50byB0ZXN0X3N1cHBvcnQuCi0gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCi0KLS0gSXNzdWUgIzExNjg5OiBGaXggYSB2YXJpYWJsZSBzY29waW5nIGVycm9yIGluIGFuIHNxbGl0ZTMgdGVzdC4KLSAgSW5pdGlhbCBwYXRjaCBieSBUb3JzdGVuIExhbmRzY2hvZmYuCi0KLS0gSXNzdWUgIzEwODgxOiBGaXggdGVzdF9zaXRlIGZhaWx1cmVzIHdpdGggT1MgWCBmcmFtZXdvcmsgYnVpbGRzLgotCi0tIElzc3VlICMxMzkwMTogUHJldmVudCB0ZXN0X2Rpc3R1dGlscyBmYWlsdXJlcyBvbiBPUyBYIHdpdGggLS1lbmFibGUtc2hhcmVkLgotCi0tIElzc3VlICMxMzMwNDogU2tpcCB0ZXN0IGNhc2UgaWYgdXNlciBzaXRlLXBhY2thZ2VzIGRpc2FibGVkICgtcyBvcgotICBQWVRIT05OT1VTRVJTSVRFKS4gIChQYXRjaCBieSBDYXJsIE1leWVyKQotCi0tIElzc3VlICMxMzIxODogRml4IHRlc3Rfc3NsIGZhaWx1cmVzIG9uIERlYmlhbi9VYnVudHUuCi0KLS0gSXNzdWUgIzEyODIxOiBGaXggdGVzdF9mY250bCBmYWlsdXJlcyBvbiBPcGVuQlNEIDUuCi0KLS0gSXNzdWUgIzEyMzMxOiBUaGUgdGVzdCBzdWl0ZSBmb3IgbGliMnRvMyBjYW4gbm93IHJ1biBmcm9tIGFuIGluc3RhbGxlZAotICBQeXRob24uCi0KLS0gSXNzdWUgIzEyNTQ5OiBDb3JyZWN0IHRlc3RfcGxhdGZvcm0gdG8gbm90IGZhaWwgd2hlbiBPUyBYIHJldHVybnMgJ3g4Nl82NCcKLSAgYXMgdGhlIHByb2Nlc3NvciB0eXBlIG9uIHNvbWUgTWFjIHN5c3RlbXMuCi0KLS0gU2tpcCBuZXR3b3JrIHRlc3RzIHdoZW4gZ2V0YWRkcmluZm8oKSByZXR1cm5zIEVBSV9BR0FJTiwgbWVhbmluZyBhIHRlbXBvcmFyeQotICBmYWlsdXJlIGluIG5hbWUgcmVzb2x1dGlvbi4KLQotLSBJc3N1ZSAjMTE4MTI6IFNvbHZlIHRyYW5zaWVudCBzb2NrZXQgZmFpbHVyZSB0byBjb25uZWN0IHRvICdsb2NhbGhvc3QnCi0gIGluIHRlc3RfdGVsbmV0bGliLnB5LgotCi0tIFNvbHZlZCBhIHBvdGVudGlhbCBkZWFkbG9jayBpbiB0ZXN0X3RlbG5ldGxpYi5weS4gUmVsYXRlZCB0byBpc3N1ZSAjMTE4MTIuCi0KLS0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3JvYm90cGFyc2VyIHdoZW4gbXVlYmxlc21vcmFsZWRhLmNvbSBpcyBmbGFreSBhbmQKLSAgYW4gb3ZlcnplYWxvdXMgRE5TIHNlcnZpY2UgKGUuZy4gT3BlbkROUykgcmVkaXJlY3RzIHRvIGEgcGxhY2Vob2xkZXIKLSAgV2ViIHNpdGUuCi0KLS0gQXZvaWQgZmFpbGluZyBpbiB0ZXN0X3VybGxpYm5ldC50ZXN0X2JhZF9hZGRyZXNzIHdoZW4gc29tZSBvdmVyemVhbG91cwotICBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZXNvbHZlcyBhIG5vbi1leGlzdGVudCBkb21haW4gbmFtZS4gIFRoZSB0ZXN0Ci0gIGlzIG5vdyBza2lwcGVkIGluc3RlYWQuCi0KLS0gSXNzdWUgIzg3MTY6IEF2b2lkIGNyYXNoZXMgY2F1c2VkIGJ5IEFxdWEgVGsgb24gT1NYIHdoZW4gYXR0ZW1wdGluZyB0byBydW4KLSAgdGVzdF90ayBvciB0ZXN0X3R0a19ndWlvbmx5IHVuZGVyIGEgdXNlcm5hbWUgdGhhdCBpcyBub3QgY3VycmVudGx5IGxvZ2dlZAotICBpbiB0byB0aGUgY29uc29sZSB3aW5kb3dzZXJ2ZXIgKGFzIG1heSBiZSB0aGUgY2FzZSB1bmRlciBidWlsZGJvdCBvciBzc2gpLgotCi0tIElzc3VlICMxMjE0MTogSW5zdGFsbCBhIGNvcHkgb2YgdGVtcGxhdGUgQyBtb2R1bGUgZmlsZSBzbyB0aGF0Ci0gIHRlc3RfYnVpbGRfZXh0IG9mIHRlc3RfZGlzdHV0aWxzIGlzIG5vIGxvbmdlciBzaWxlbnRseSBza2lwcGVkIHdoZW4KLSAgcnVuIG91dHNpZGUgb2YgYSBidWlsZCBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzg3NDY6IEFkZCBhZGRpdGlvbmFsIHRlc3RzIGZvciBvcy5jaGZsYWdzKCkgYW5kIG9zLmxjaGZsYWdzKCkuCi0gIFBhdGNoIGJ5IEdhcnJldHQgQ29vcGVyLgotCi0tIElzc3VlICMxMDczNjogRml4IHRlc3RfdHRrIHRlc3Rfd2lkZ2V0cyBmYWlsdXJlcyB3aXRoIENvY29hIFRrIDguNS45Ci0gIG9uIE1hYyBPUyBYLiAgKFBhdGNoIGJ5IFJvbmFsZCBPdXNzb3JlbikKLQotLSBJc3N1ZSAjMTIwNTc6IEFkZCB0ZXN0cyBmb3IgSVNPIDIwMjIgY29kZWNzIChpc28yMDIyX2pwLCBpc28yMDIyX2pwXzIsCi0gIGlzbzIwMjJfa3IpLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWVzICMxMzQ5MSBhbmQgIzEzOTk1OiBGaXggbWFueSBlcnJvcnMgaW4gc3FsaXRlMyBkb2N1bWVudGF0aW9uLgotICBJbml0aWFsIHBhdGNoIGZvciAjMTM0OTEgYnkgSm9oYW5uZXMgVm9nZWwuCi0KLS0gSXNzdWUgIzEzNDAyOiBEb2N1bWVudCBhYnNvbHV0ZW5lc3Mgb2Ygc3lzLmV4ZWN1dGFibGUuCi0KLS0gSXNzdWUgIzEzODgzOiBQWVRIT05DQVNFT0sgYWxzbyB3b3JrcyBvbiBPUyBYLCBPUy8yLCBhbmQgUmlzY09TLgotCi0tIElzc3VlICMyMTM0OiBUaGUgdG9rZW5pemUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBjbGFyaWZpZWQgdG8gZXhwbGFpbiB3aHkKLSAgYWxsIG9wZXJhdG9yIGFuZCBkZWxpbWl0ZXIgdG9rZW5zIGFyZSB0cmVhdGVkIGFzIHRva2VuLk9QIHRva2Vucy4KLQotLSBJc3N1ZSAjMTM1MTM6IEZpeCBpby5JT0Jhc2UgZG9jdW1lbnRhdGlvbiB0byBjb3JyZWN0bHkgbGluayB0byB0aGUKLSAgaW8uSU9CYXNlLnJlYWRsaW5lIG1ldGhvZCBpbnN0ZWFkIG9mIHRoZSByZWFkbGluZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzEzMjM3OiBSZW9yZ2FuaXNlIHN1YnByb2Nlc3MgZG9jdW1lbnRhdGlvbiB0byBlbXBoYXNpc2UgY29udmVuaWVuY2UKLSAgZnVuY3Rpb25zIGFuZCB0aGUgbW9zdCBjb21tb25seSBuZWVkZWQgYXJndW1lbnRzIHRvIFBvcGVuLgotCi0tIElzc3VlICMxMzE0MTogRGVtb25zdHJhdGUgcmVjb21tZW5kZWQgc3R5bGUgZm9yIFNvY2tldFNlcnZlciBleGFtcGxlcy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDExLTA2LTExKgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyMDA5OiBGaXhlZCByZWdyZXNzaW9uIGluIG5ldHJjIGZpbGUgY29tbWVudCBoYW5kbGluZy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEyMjE6IE1ha2UgcHlleHBhdC5fX3ZlcnNpb25fXyBlcXVhbCB0byB0aGUgUHl0aG9uIHZlcnNpb24uCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi43LjIgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMTEtMDUtMjkqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5NjcwOiBJbmNyZWFzZSB0aGUgZGVmYXVsdCBzdGFjayBzaXplIGZvciBzZWNvbmRhcnkgdGhyZWFkcyBvbgotICBNYWMgT1MgWCBhbmQgRnJlZUJTRCB0byByZWR1Y2UgdGhlIGNoYW5jZXMgb2YgYSBjcmFzaCBpbnN0ZWFkIG9mIGEKLSAgIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIiBSdW50aW1lRXJyb3IgZXhjZXB0aW9uLgotICAocGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQotCi0tIENvcnJlY3QgbG9va3VwIG9mIF9fZGlyX18gb24gb2JqZWN0cy4gVGhpcyBhbGxvd3Mgb2xkLXN0eWxlIGNsYXNzZXMgdG8gaGF2ZQotICBfX2Rpcl9fLiBJdCBhbHNvIGNhdXNlcyBlcnJvcnMgYmVzaWRlcyBBdHRyaWJ1dGVFcnJvciBmb3VuZCBvbiBsb29rdXAgdG8gYmUKLSAgcHJvcGFnYXRlZC4KLQotLSBJc3N1ZSAjMTE5NTogRml4IGlucHV0KCkgaWYgaXQgaXMgaW50ZXJydXB0ZWQgYnkgQ1RSTCtkIGFuZCB0aGVuIENUUkwrYywKLSAgY2xlYXIgdGhlIGVuZC1vZi1maWxlIGluZGljYXRvciBhZnRlciBDVFJMK2QuCi0KLS0gSXNzdWUgIzg2NTE6IFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9ucyByYWlzZSBhbiBPdmVyZmxvd0Vycm9yIGlmIHRoZSBmaWxlCi0gIGRvZXNuJ3QgaGF2ZSBQWV9TU0laRV9UX0NMRUFOIGRlZmluZSBhbmQgdGhlIHNpemUgZG9lc24ndCBmaXQgaW4gYW4gaW50Ci0gIChsZW5ndGggYmlnZ2VyIHRoYW4gMl4zMS0xIGJ5dGVzKS4KLQotLSBJc3N1ZSAjODY1MTogRml4ICJ6IyIgZm9ybWF0IG9mIFB5QXJnX1BhcnNlKigpIGZ1bmN0aW9uOiB0aGUgc2l6ZSB3YXMgbm90Ci0gIHdyaXR0ZW4gaWYgUFlfU1NJWkVfVF9DTEVBTiBpcyBkZWZpbmVkLgotCi0tIElzc3VlICM5NzU2OiBXaGVuIGNhbGxpbmcgYSBtZXRob2QgZGVzY3JpcHRvciBvciBhIHNsb3Qgd3JhcHBlciBkZXNjcmlwdG9yLAotICB0aGUgY2hlY2sgb2YgdGhlIG9iamVjdCB0eXBlIGRvZXNuJ3QgcmVhZCB0aGUgX19jbGFzc19fIGF0dHJpYnV0ZSBhbnltb3JlLgotICBGaXggYSBjcmFzaCBpZiBhIGNsYXNzIG92ZXJyaWRlIGl0cyBfX2NsYXNzX18gYXR0cmlidXRlIChlLmcuIGEgcHJveHkgb2YgdGhlCi0gIHN0ciB0eXBlKS4gUGF0Y2ggd3JpdHRlbiBieSBBbmRyZWFzIFN0w7xocmsuCi0KLS0gSXNzdWUgIzEwNTE3OiBBZnRlciBmb3JrKCksIHJlaW5pdGlhbGl6ZSB0aGUgVExTIHVzZWQgYnkgdGhlIFB5R0lMU3RhdGVfKgotICBBUElzLCB0byBhdm9pZCBhIGNyYXNoIHdpdGggdGhlIHB0aHJlYWQgaW1wbGVtZW50YXRpb24gaW4gUkhFTCA1LiAgUGF0Y2gKLSAgYnkgQ2hhcmxlcy1GcmFuw6dvaXMgTmF0YWxpLgotCi0tIElzc3VlICM2NzgwOiBmaXggc3RhcnRzL2VuZHN3aXRoIGVycm9yIG1lc3NhZ2UgdG8gbWVudGlvbiB0aGF0IHR1cGxlcyBhcmUKLSAgYWNjZXB0ZWQgdG9vLgotCi0tIElzc3VlICM1MDU3OiBmaXggYSBidWcgaW4gdGhlIHBlZXBob2xlciB0aGF0IGxlZCB0byBub24tcG9ydGFibGUgcHljIGZpbGVzCi0gIGJldHdlZW4gbmFycm93IGFuZCB3aWRlIGJ1aWxkcyB3aGlsZSBvcHRpbWl6aW5nIEJJTkFSWV9TVUJTQ1Igb24gbm9uLUJNUAotICBjaGFycyAoZS5nLiB1IlxVMDAwMTIzNDUiWzBdKS4KLQotLSBJc3N1ZSAjMTE2NTA6IFB5T1NfU3RkaW9SZWFkbGluZSgpIHJldHJpZXMgZmdldHMoKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQKLSAgKEVJTlRSKSwgZm9yIGV4YW1wbGUgaWYgdGhlIHByb2dyYW0gaXMgc3RvcHBlZCB3aXRoIENUUkwreiBvbiBNYWMgT1MgWC4gUGF0Y2gKLSAgd3JpdHRlbiBieSBDaGFybGVzLUZyYW5jb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTExNDQ6IEVuc3VyZSB0aGF0IGludChhX2Zsb2F0KSByZXR1cm5zIGFuIGludCB3aGVuZXZlciBwb3NzaWJsZS4KLSAgUHJldmlvdXNseSwgdGhlcmUgd2VyZSBzb21lIGNvcm5lciBjYXNlcyB3aGVyZSBhIGxvbmcgd2FzIHJldHVybmVkIGV2ZW4KLSAgdGhvdWdoIHRoZSByZXN1bHQgd2FzIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgYW4gaW50LgotCi0tIElzc3VlICMxMTQ1MDogRG9uJ3QgdHJ1bmNhdGUgaGcgdmVyc2lvbiBpbmZvIGluIFB5X0dldEJ1aWxkSW5mbygpIHdoZW4KLSAgdGhlcmUgYXJlIG1hbnkgdGFncyAoZS5nLiB3aGVuIHVzaW5nIG1xKS4gIFBhdGNoIGJ5IE5hZGVlbSBWYXdkYS4KLQotLSBJc3N1ZSAjMTA0NTE6IG1lbW9yeXZpZXcgb2JqZWN0cyBjb3VsZCBhbGxvdyBtdXRhdGluZyBhIHJlYWRhYmxlIGJ1ZmZlci4KLSAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjMTA4OTI6IERvbid0IHNlZ2ZhdWx0IHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBfX2Fic3RyYWN0bWV0aG9kc19fIGZyb20gYQotICBjbGFzcy4KLQotLSBJc3N1ZSAjODAyMDogQXZvaWQgYSBjcmFzaCB3aGVyZSB0aGUgc21hbGwgb2JqZWN0cyBhbGxvY2F0b3Igd291bGQgcmVhZAotICBub24tUHl0aG9uIG1hbmFnZWQgbWVtb3J5IHdoaWxlIGl0IGlzIGJlaW5nIG1vZGlmaWVkIGJ5IGFub3RoZXIgdGhyZWFkLgotICBQYXRjaCBieSBNYXR0IEJhbmR5LgotCi0tIElzc3VlICMxMTAwNDogUmVwYWlyZWQgZWRnZSBjYXNlIGluIGRlcXVlLmNvdW50KCkuCi0KLS0gSXNzdWUgIzgyNzg6IE9uIFdpbmRvd3MgYW5kIHdpdGggYSBOVEZTIGZpbGVzeXN0ZW0sIG9zLnN0YXQoKSBhbmQgb3MudXRpbWUoKQotICBjYW4gbm93IGhhbmRsZSBkYXRlcyBhZnRlciAyMDM4LgotCi0tIElzc3VlICM0MjM2OiBQeV9Jbml0TW9kdWxlNCBub3cgY2hlY2tzIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGRpcmVjdGx5Ci0gIHJhdGhlciB0aGFuIHRoZSBQeV9Jc0luaXRpYWxpemVkIGZsYWcsIGF2b2lkaW5nIGEgRmF0YWwgUHl0aG9uCi0gIGVycm9yIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuIGFuIGltcG9ydCBpcyBkb25lIGluIF9fZGVsX18uCi0KLS0gSXNzdWUgIzExODI4OiBzdGFydHN3aXRoIGFuZCBlbmRzd2l0aCBkb24ndCBhY2NlcHQgTm9uZSBhcyBzbGljZSBpbmRleC4KLSAgUGF0Y2ggYnkgVG9yc3RlbiBCZWNrZXIuCi0KLS0gSXNzdWUgIzEwNjc0OiBSZW1vdmUgdW51c2VkICdkaWN0bWFrZXInIHJ1bGUgZnJvbSBncmFtbWFyLgotCi0tIElzc3VlICMxMDU5NjogRml4IGZsb2F0Ll9fbW9kX18gdG8gaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIgYXMKLSAgZmxvYXQuX19kaXZtb2RfXyB3aXRoIHJlc3BlY3QgdG8gc2lnbmVkIHplcm9zLiAgLTQuMCAlIDQuMCBzaG91bGQgYmUKLSAgMC4wLCBub3QgLTAuMC4KLQotLSBJc3N1ZSAjMTEzODY6IGJ5dGVhcnJheS5wb3AoKSBub3cgdGhyb3dzIEluZGV4RXJyb3Igd2hlbiB0aGUgYnl0ZWFycmF5IGlzCi0gIGVtcHR5LCBpbnN0ZWFkIG9mIE92ZXJmbG93RXJyb3IuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTIxNjE6IENhdXNlIFN0cmluZ0lPLmdldHZhbHVlKCkgdG8gcmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gdXNlZCBvbiBhCi0gIGNsb3NlZCBTdHJpbmdJTyBpbnN0YW5jZS4KLQotLSBJc3N1ZSAjMTIxODI6IEZpeCBweWRvYy5IVE1MRG9jLm11bHRpY29sdW1uKCkgaWYgUHl0aG9uIHVzZXMgdGhlIG5ldyAodHJ1ZSkKLSAgZGl2aXNpb24gKHB5dGhvbiAtUW5ldykuIFBhdGNoIHdyaXR0ZW4gYnkgUmFsZiBXLiBHcm9zc2UtS3Vuc3RsZXZlLgotCi0tIElzc3VlICMxMjE3NTogUmF3SU9CYXNlLnJlYWRhbGwoKSBub3cgcmV0dXJucyBOb25lIGlmIHJlYWQoKSByZXR1cm5zIE5vbmUuCi0KLS0gSXNzdWUgIzEyMTc1OiBGaWxlSU8ucmVhZGFsbCgpIG5vdyByYWlzZXMgYSBWYWx1ZUVycm9yIGluc3RlYWQgb2YgYW4gSU9FcnJvcgotICBpZiB0aGUgZmlsZSBpcyBjbG9zZWQuCi0KLS0gSXNzdWUgIzE0NDE1MzA6IEluIGltYXBsaWIsIHVzZSBtYWtlZmlsZSgpIHRvIHdyYXAgdGhlIFNTTCBzb2NrZXQgdG8gYXZvaWQKLSAgaGVhcCBmcmFnbWVudGF0aW9uIGFuZCBNZW1vcnlFcnJvciB3aXRoIHNvbWUgbWFsbG9jIGltcGxlbWVudGF0aW9ucy4KLQotLSBJc3N1ZSAjMTIxMDA6IERvbid0IHJlc2V0IGluY3JlbWVudGFsIGVuY29kZXJzIG9mIENKSyBjb2RlY3MgYXQgZWFjaCBjYWxsIHRvCi0gIHRoZWlyIGVuY29kZSgpIG1ldGhvZCBhbnltb3JlLCBidXQgY29udGludWUgdG8gY2FsbCB0aGUgcmVzZXQoKSBtZXRob2QgaWYgdGhlCi0gIGZpbmFsIGFyZ3VtZW50IGlzIFRydWUuCi0KLS0gSXNzdWUgIzEyMTI0OiB6aXBpbXBvcnQgZG9lc24ndCBrZWVwIGEgcmVmZXJlbmNlIHRvIHpsaWIuZGVjb21wcmVzcygpIGFueW1vcmUKLSAgdG8gYmUgYWJsZSB0byB1bmxvYWQgdGhlIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTAxNTQsICMxMDA5MDogY2hhbmdlIHRoZSBub3JtYWxpemF0aW9uIG9mIFVURi04IHRvICJVVEYtOCIgaW5zdGVhZAotICBvZiAiVVRGOCIgaW4gdGhlIGxvY2FsZSBtb2R1bGUgYXMgdGhlIGxhdHRlciBpcyBub3Qgc3VwcG9ydGVkIE1hY09TWCBhbmQgT3BlbkJTRC4KLQotLSBJc3N1ZSAjOTUxNjogYXZvaWQgZXJyb3JzIGluIHN5c2NvbmZpZyB3aGVuIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpcwotICBzZXQgaW4gc2hlbGwuCi0KLS0gSXNzdWUgIzEyMDUwOiB6bGliLmRlY29tcHJlc3NvYmooKS5kZWNvbXByZXNzKCkgbm93IGNsZWFycyB0aGUgdW5jb25zdW1lZF90YWlsCi0gIGF0dHJpYnV0ZSB3aGVuIGNhbGxlZCB3aXRob3V0IGEgbWF4X2xlbmd0aCBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMTIwNjI6IEluIHRoZSBgaW9gIG1vZHVsZSwgZml4IGEgZmx1c2hpbmcgYnVnIHdoZW4gZG9pbmcgYSBjZXJ0YWluCi0gIHR5cGUgb2YgSS9PIHNlcXVlbmNlIG9uIGEgZmlsZSBvcGVuZWQgaW4gcmVhZCt3cml0ZSBtb2RlIChuYW1lbHk6IHJlYWRpbmcsCi0gIHNlZWtpbmcgYSBiaXQgZm9yd2FyZCwgd3JpdGluZywgdGhlbiBzZWVraW5nIGJlZm9yZSB0aGUgcHJldmlvdXMgd3JpdGUgYnV0Ci0gIHN0aWxsIHdpdGhpbiBidWZmZXJlZCBkYXRhLCBhbmQgd3JpdGluZyBhZ2FpbikuCi0KLS0gSXNzdWUgIzg0OTg6IEluIHNvY2tldC5hY2NlcHQoKSwgYWxsb3cgc3BlY2lmeWluZyAwIGFzIGEgYmFja2xvZyB2YWx1ZSBpbgotICBvcmRlciB0byBhY2NlcHQgZXhhY3RseSBvbmUgY29ubmVjdGlvbi4gIFBhdGNoIGJ5IERhbmllbCBFdmVycy4KLQotLSBJc3N1ZSAjMTIwMTI6IHNzbC5QUk9UT0NPTF9TU0x2MiBiZWNvbWVzIG9wdGlvbmFsLgotCi0tIElzc3VlICMxMTkyNzogU01UUF9TU0wgbm93IHVzZXMgcG9ydCA0NjUgYnkgZGVmYXVsdCBhcyBkb2N1bWVudGVkLiAgUGF0Y2gKLSAgYnkgS2FzdW4gSGVyYXRoLgotCi0tIElzc3VlICMxMTk5OTogZml4ZWQgc3BvcmFkaWMgc3luYyBmYWlsdXJlIG1haWxib3guTWFpbGRpciBkdWUgdG8gaXRzIHRyeWluZyB0bwotICBkZXRlY3QgbXRpbWUgY2hhbmdlcyBieSBjb21wYXJpbmcgdG8gdGhlIHN5c3RlbSBjbG9jayBpbnN0ZWFkIG9mIHRvIHRoZQotICBwcmV2aW91cyB2YWx1ZSBvZiB0aGUgbXRpbWUuCi0KLS0gSXNzdWUgIzEwNjg0OiBzaHV0aWwubW92ZSB1c2VkIHRvIGRlbGV0ZSBhIGZvbGRlciBvbiBjYXNlIGluc2Vuc2l0aXZlCi0gIGZpbGVzeXN0ZW1zIHdoZW4gdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gbmFtZSB3aGVyZSB0aGUgc2FtZSBleGNlcHQKLSAgZm9yIHRoZSBjYXNlLgotCi0tIElzc3VlICMxMTk4MjogZml4IGpzb24ubG9hZHMoJyIiJykgdG8gcmV0dXJuIHUnJyByYXRoZXIgdGhhbiAnJy4KLQotLSBJc3N1ZSAjMTEyNzc6IG1tYXAubW1hcCgpIGNhbGxzIGZjbnRsKGZkLCBGX0ZVTExGU1lOQykgb24gTWFjIE9TIFggdG8gZ2V0Ci0gIGFyb3VuZCBhIG1tYXAgYnVnIHdpdGggc3BhcnNlIGZpbGVzLiBQYXRjaCB3cml0dGVuIGJ5IFN0ZWZmZW4gRGFvZGUgTnVycG1lc28uCi0KLS0gSXNzdWUgIzEwNzYxOiBGaXggdGFyZmlsZS5leHRyYWN0YWxsIGZhaWx1cmUgd2hlbiBzeW1saW5rZWQgZmlsZXMgYXJlCi0gIHByZXNlbnQuIEluaXRpYWwgcGF0Y2ggYnkgU2NvdHQgTGVlcnNzZW4uCi0KLS0gSXNzdWUgIzExNzYzOiBkb24ndCB1c2UgZGlmZmxpYiBpbiBUZXN0Q2FzZS5hc3NlcnRNdWx0aUxpbmVFcXVhbCBpZiB0aGUKLSAgc3RyaW5ncyBhcmUgdG9vIGxvbmcuCi0KLS0gSXNzdWUgIzExMjM2OiBnZXRwYXNzLmdldHBhc3MgcmVzcG9uZHMgdG8gY3RybC1jIG9yIGN0cmwteiBvbiB0ZXJtaW5hbC4KLQotLSBJc3N1ZSAjMTE3Njg6IFRoZSBzaWduYWwgaGFuZGxlciBvZiB0aGUgc2lnbmFsIG1vZHVsZSBvbmx5IGNhbGxzCi0gIFB5X0FkZFBlbmRpbmdDYWxsKCkgZm9yIHRoZSBmaXJzdCBzaWduYWwgdG8gZml4IGEgZGVhZGxvY2sgb24gcmVlbnRyYW50IG9yCi0gIHBhcmFsbGVsIGNhbGxzLiBQeUVycl9TZXRJbnRlcnJ1cHQoKSB3cml0ZXMgYWxzbyBpbnRvIHRoZSB3YWtlIHVwIGZpbGUuCi0KLS0gSXNzdWUgIzExODc1OiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCdzIF9fcmVkdWNlX18gd2FzIHRlbXBvcmFyaWx5Ci0gIG11dGF0aW5nIHRoZSBvYmplY3QgaW5zdGVhZCBvZiBqdXN0IHdvcmtpbmcgb24gYSBjb3B5LgotCi0tIElzc3VlICMxMTQ0MjogQWRkIGEgY2hhcnNldCBwYXJhbWV0ZXIgdG8gdGhlIENvbnRlbnQtdHlwZSBpbiBTaW1wbGVIVFRQU2VydmVyCi0gIHRvIGF2b2lkIFhTUyBhdHRhY2tzLgotCi0tIElzc3VlICMxMTQ2NzogRml4IHVybHBhcnNlIGJlaGF2aW9yIHdoZW4gaGFuZGxpbmcgdXJscyB3aGljaCBjb250YWlucyBzY2hlbWUKLSAgc3BlY2lmaWMgcGFydCBvbmx5IGRpZ2l0cy4gUGF0Y2ggYnkgU2FudG9zbyBXaWpheWEuCi0KLS0gY29sbGVjdGlvbnMuQ291bnRlcigpLmNvcHkoKSBub3cgd29ya3MgY29ycmVjdGx5IGZvciBzdWJjbGFzc2VzLgotCi0tIElzc3VlICMxMTQ3NDogRml4IHRoZSBidWcgd2l0aCB1cmwycGF0aG5hbWUoKSBoYW5kbGluZyBvZiAnL0N8Lycgb24gV2luZG93cy4KLSAgUGF0Y2ggYnkgU2FudG9zbyBXaWpheWEuCi0KLS0gSXNzdWUgIzkyMzM6IEZpeCBqc29uLmxvYWRzKCd7fScpIHRvIHJldHVybiBhIGRpY3QgKGluc3RlYWQgb2YgYSBsaXN0KSwgd2hlbgotICBfanNvbiBpcyBub3QgYXZhaWxhYmxlLgotCi0tIElzc3VlICMxMTcwMzogdXJsbGliMi5nZXR1cmwoKSBkb2VzIG5vdCByZXR1cm4gY29ycmVjdCB1cmwgd2hlbiB0aGUgb3JpZ2luYWwKLSAgdXJsIGNvbnRhaW5zICNmcmFnbWVudC4KLQotLSBJc3N1ZSAjMTAwMTk6IEZpeGVkIHJlZ3Jlc3Npb24gaW4ganNvbiBtb2R1bGUgd2hlcmUgYW4gaW5kZW50IG9mIDAgc3RvcHBlZAotICBhZGRpbmcgbmV3bGluZXMgYW5kIGFjdGVkIGluc3RlYWQgbGlrZSAnTm9uZScuCi0KLS0gSXNzdWUgIzUxNjI6IFRyZWF0IHNlcnZpY2VzIGxpa2UgZnJvemVuIGV4ZWN1dGFibGVzIHRvIGFsbG93IGNoaWxkIHNwYXduaW5nCi0gIGZyb20gbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjNDg3NzogRml4IGEgc2VnZmF1bHQgaW4geG1sLnBhcnNlcnMuZXhwYXQgd2hpbGUgYXR0ZW1wdGluZyB0byBwYXJzZQotICBhIGNsb3NlZCBmaWxlLgotCi0tIElzc3VlICMxMTgzMDogUmVtb3ZlIHVubmVjZXNzYXJ5IGludHJvc3BlY3Rpb24gY29kZSBpbiB0aGUgZGVjaW1hbCBtb2R1bGUuCi0gIEl0IHdhcyBjYXVzaW5nIGEgZmFpbGVkIGltcG9ydCBpbiB0aGUgVHVya2lzaCBsb2NhbGUgd2hlcmUgdGhlIGxvY2FsZQotICBzZW5zaXRpdmUgc3RyLnVwcGVyKCkgbWV0aG9kIGNhdXNlZCBhIG5hbWUgbWlzbWF0Y2guCi0KLS0gSXNzdWUgIzg0Mjg6IEZpeCBhIHJhY2UgY29uZGl0aW9uIGluIG11bHRpcHJvY2Vzc2luZy5Qb29sIHdoZW4gdGVybWluYXRpbmcKLSAgd29ya2VyIHByb2Nlc3NlczogbmV3IHByb2Nlc3NlcyB3b3VsZCBiZSBzcGF3bmVkIHdoaWxlIHRoZSBwb29sIGlzIGJlaW5nCi0gIHNodXQgZG93bi4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjNzMxMTogRml4IEhUTUxQYXJzZXIgdG8gYWNjZXB0IG5vbi1BU0NJSSBhdHRyaWJ1dGUgdmFsdWVzLgotCi0tIElzc3VlICMxMDk2MzogRW5zdXJlIHRoYXQgc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIG5ldmVyIHJhaXNlcyBFUElQRS4KLQotLSBJc3N1ZSAjMTE2NjI6IE1ha2UgdXJsbGliIGFuZCB1cmxsaWIyIGlnbm9yZSByZWRpcmVjdGlvbnMgaWYgdGhlCi0gIHNjaGVtZSBpcyBub3QgSFRUUCwgSFRUUFMgb3IgRlRQIChDVkUtMjAxMS0xNTIxKS4KLQotLSBJc3N1ZSAjMTEyNTY6IEZpeCBpbnNwZWN0LmdldGNhbGxhcmdzIG9uIGZ1bmN0aW9ucyB0aGF0IHRha2Ugb25seSBrZXl3b3JkCi0gIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMTE2OTY6IEZpeCBJRCBnZW5lcmF0aW9uIGluIG1zaWxpYi4KLQotLSBJc3N1ZSAjOTY5NjogRml4IGV4Y2VwdGlvbiBpbmNvcnJlY3RseSByYWlzZWQgYnkgeGRybGliLlBhY2tlci5wYWNrX2ludCB3aGVuCi0gIHRyeWluZyB0byBwYWNrIGEgbmVnYXRpdmUgKGluLXJhbmdlKSBpbnRlZ2VyLgotCi0tIElzc3VlICMxMTY3NTogbXVsdGlwcm9jZXNzaW5nLltSYXddQXJyYXkgb2JqZWN0cyBjcmVhdGVkIGZyb20gYW4gaW50ZWdlciBzaXplCi0gIGFyZSBub3cgemVyb2VkIG9uIGNyZWF0aW9uLiAgVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvdXIgc3BlY2lmaWVkIGJ5IHRoZQotICBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICM3NjM5OiBGaXggc2hvcnQgZmlsZSBuYW1lIGdlbmVyYXRpb24gaW4gYmRpc3RfbXNpLgotCi0tIElzc3VlICMxMTY2NjogbGV0IGhlbHAoKSBkaXNwbGF5IG5hbWVkIHR1cGxlIGF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMKLSAgdGhhdCBzdGFydCB3aXRoIGEgbGVhZGluZyB1bmRlcnNjb3JlLgotCi0tIElzc3VlICMxMTY3MzogRml4IG11bHRpcHJvY2Vzc2luZyBBcnJheSBhbmQgUmF3QXJyYXkgY29uc3RydWN0b3JzIHRvIGFjY2VwdCBhCi0gIHNpemUgb2YgdHlwZSAnbG9uZycsIHJhdGhlciB0aGFuIG9ubHkgYWNjZXB0aW5nICdpbnQnLgotCi0tIElzc3VlICMxMDA0MjogRml4ZWQgdGhlIHRvdGFsX29yZGVyaW5nIGRlY29yYXRvciB0byBoYW5kbGUgY3Jvc3MtdHlwZQotICBjb21wYXJpc29ucyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLgotCi0tIElzc3VlICMxMDk3OTogdW5pdHRlc3Qgc3Rkb3V0IGJ1ZmZlcmluZyBub3cgd29ya3Mgd2l0aCBjbGFzcyBhbmQgbW9kdWxlCi0gIHNldHVwIGFuZCB0ZWFyZG93bi4KLQotLSBJc3N1ZSAjMTE1Njk6IHVzZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBzeXNjdGwgY29tbWFuZCBpbiBtdWx0aXByb2Nlc3NpbmcgdG8KLSAgZW5zdXJlIHRoYXQgaXQgd2lsbCBiZSBmb3VuZCByZWdhcmRsZXNzIG9mIHRoZSBzaGVsbCBQQVRILiBUaGlzIGVuc3VyZXMKLSAgdGhhdCBtdWx0aXByb2Nlc3NpbmcuY3B1X2NvdW50IHdvcmtzIG9uIGRlZmF1bHQgaW5zdGFsbHMgb2YgTWFjT1NYLgotCi0tIElzc3VlICMxMTUwMDogRml4ZWQgYSBidWcgaW4gdGhlIG9zIHggcHJveHkgYnlwYXNzIGNvZGUgZm9yIGZ1bGx5IHF1YWxpZmllZAotICBJUCBhZGRyZXNzZXMgaW4gdGhlIHByb3h5IGV4Y2VwdGlvbiBsaXN0LgotCi0tIElzc3VlICMxMTEzMTogRml4IHNpZ24gb2YgemVybyBpbiBwbHVzIGFuZCBtaW51cyBvcGVyYXRpb25zIHdoZW4KLSAgdGhlIGNvbnRleHQgcm91bmRpbmcgbW9kZSBpcyBST1VORF9GTE9PUi4KLQotLSBJc3N1ZSAjNTYyMjogRml4IGN1cnNlcy53cmFwcGVyIHRvIHJhaXNlIGNvcnJlY3QgZXhjZXB0aW9uIGlmIGN1cnNlcwotICBpbml0aWFsaXphdGlvbiBmYWlscy4KLQotLSBJc3N1ZSAjMTEzOTE6IFdyaXRpbmcgdG8gYSBtbWFwIG9iamVjdCBjcmVhdGVkIHdpdGgKLSAgYGBtbWFwLlBST1RfUkVBRHxtbWFwLlBST1RfRVhFQ2BgIHdvdWxkIHNlZ2ZhdWx0IGluc3RlYWQgb2YgcmFpc2luZyBhCi0gIFR5cGVFcnJvci4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KLQotLSBJc3N1ZSAjMTEzMDY6IG1haWxib3ggaW4gY2VydGFpbiBjYXNlcyBhZGFwdHMgdG8gYW4gaW5hYmlsaXR5IHRvIG9wZW4KLSAgY2VydGFpbiBmaWxlcyBpbiByZWFkLXdyaXRlIG1vZGUuICBQcmV2aW91c2x5IGl0IGRldGVjdGVkIHRoaXMgYnkKLSAgY2hlY2tpbmcgZm9yIEVBQ0NFUywgbm93IGl0IGFsc28gY2hlY2tzIGZvciBFUk9GUy4KLQotLSBJc3N1ZSAjMTEyNjU6IGFzeW5jb3JlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBFUElQRSwgRUJBREYgYW5kIEVBR0FJTiBlcnJvcnMKLSAgb24gYWNjZXB0KCksIHNlbmQoKSBhbmQgcmVjdigpLgotCi0tIElzc3VlICMxMTMyNjogQWRkIHRoZSBtaXNzaW5nIGNvbm5lY3RfZXgoKSBpbXBsZW1lbnRhdGlvbiBmb3IgU1NMIHNvY2tldHMsCi0gIGFuZCBtYWtlIGl0IHdvcmsgZm9yIG5vbi1ibG9ja2luZyBjb25uZWN0cy4KLQotLSBJc3N1ZSAjMTA5NTY6IEJ1ZmZlcmVkIEkvTyBjbGFzc2VzIHJldHJ5IHJlYWRpbmcgb3Igd3JpdGluZyBhZnRlciBhIHNpZ25hbAotICBoYXMgYXJyaXZlZCBhbmQgdGhlIGhhbmRsZXIgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LgotCi0tIElzc3VlICMxMDY4MDogRml4IG11dHVhbGx5IGV4Y2x1c2l2ZSBhcmd1bWVudHMgZm9yIGFyZ3VtZW50IGdyb3VwcyBpbgotICBhcmdwYXJzZS4KLQotLSBJc3N1ZSAjNDY4MTogQWxsb3cgbW1hcCgpIHRvIHdvcmsgb24gZmlsZSBzaXplcyBhbmQgb2Zmc2V0cyBsYXJnZXIgdGhhbgotICA0R0IsIGV2ZW4gb24gMzItYml0IGJ1aWxkcy4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwsIGFkYXB0ZWQgZm9yCi0gIDMyLWJpdCBXaW5kb3dzLgotCi0tIElzc3VlICMxMDM2MDogSW4gV2Vha1NldCwgZG8gbm90IHJhaXNlIFR5cGVFcnJvcnMgd2hlbiB0ZXN0aW5nIGZvcgotICBtZW1iZXJzaGlwIG9mIG5vbi13ZWFrcmVmYWJsZSBvYmplY3RzLgotCi0tIElzc3VlICMxMDU0OTogRml4IHB5ZG9jIHRyYWNlYmFjayB3aGVuIHRleHQtZG9jdW1lbnRpbmcgY2VydGFpbiBjbGFzc2VzLgotCi0tIElzc3VlICM5NDAyODY6IHB5ZG9jLkhlbHBlci5oZWxwKCkgaWdub3JlcyBpbnB1dC9vdXRwdXQgaW5pdCBwYXJhbWV0ZXJzLgotCi0tIElzc3VlICMxMTE3MTogRml4IGRldGVjdGlvbiBvZiBjb25maWcvTWFrZWZpbGUgd2hlbiAtLXByZWZpeCAhPQotICAtLWV4ZWMtcHJlZml4LCB3aGljaCBjYXVzZWQgUHl0aG9uIHRvIG5vdCBzdGFydC4KLQotLSBJc3N1ZSAjMTExMTY6IGFueSBlcnJvciBkdXJpbmcgYWRkaXRpb24gb2YgYSBtZXNzYWdlIHRvIGEgbWFpbGJveCBub3cgY2F1c2VzCi0gIGEgcm9sbGJhY2ssIGluc3RlYWQgb2YgbGVhdmluZyB0aGUgbWFpbGJveCBwYXJ0aWFsbHkgbW9kaWZpZWQuCi0KLS0gSXNzdWUgIzgyNzU6IEZpeCBwYXNzaW5nIG9mIGNhbGxiYWNrIGFyZ3VtZW50cyB3aXRoIGN0eXBlcyB1bmRlciBXaW42NC4KLSAgUGF0Y2ggYnkgU3RhbiBNaWhhaS4KLQotLSBJc3N1ZSAjMTA5NDk6IEltcHJvdmVkIHJvYnVzdG5lc3Mgb2Ygcm90YXRpbmcgZmlsZSBoYW5kbGVycy4KLQotLSBJc3N1ZSAjMTA5NTU6IEZpeCBhIHBvdGVudGlhbCBjcmFzaCB3aGVuIHRyeWluZyB0byBtbWFwKCkgYSBmaWxlIHBhc3QgaXRzCi0gIGxlbmd0aC4gIEluaXRpYWwgcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzEwODk4OiBBbGxvdyBjb21waWxpbmcgdGhlIHBvc2l4IG1vZHVsZSB3aGVuIHRoZSBDIGxpYnJhcnkgZGVmaW5lcwotICBhIHN5bWJvbCBuYW1lZCBGU1RBVC4KLQotLSBJc3N1ZSAjMTA5MTY6IG1tYXAgc2hvdWxkIG5vdCBzZWdmYXVsdCB3aGVuIGEgZmlsZSBpcyBtYXBwZWQgdXNpbmcgMCBhcwotICBsZW5ndGggYW5kIGEgbm9uLXplcm8gb2Zmc2V0LCBhbmQgYW4gYXR0ZW1wdCB0byByZWFkIHBhc3QgdGhlIGVuZCBvZiBmaWxlCi0gIGlzIG1hZGUgKEluZGV4RXJyb3IgaXMgcmFpc2VkIGluc3RlYWQpLiAgUGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzEwODc1OiBVcGRhdGUgUmVndWxhciBFeHByZXNzaW9uIEhPV1RPOyBwYXRjaCBieSAnU2lsZW50R2hvc3QnLgotCi0tIElzc3VlICMxMDgyNzogQ2hhbmdlZCB0aGUgcnVsZXMgZm9yIDItZGlnaXQgeWVhcnMuICBUaGUgdGltZS5hc2N0aW1lCi0gIGZ1bmN0aW9uIHdpbGwgbm93IGZvcm1hdCBhbnkgeWVhciB3aGVuIGBgdGltZS5hY2NlcHQyZHllYXJgYCBpcwotICBmYWxzZSBhbmQgd2lsbCBhY2NlcHQgeWVhcnMgPj0gMTAwMCBvdGhlcndpc2UuICBUaGUgeWVhciByYW5nZQotICBhY2NlcHRlZCBieSBgYHRpbWUubWt0aW1lYGAgYW5kIGBgdGltZS5zdHJmdGltZWBgIGlzIHN0aWxsIHN5c3RlbQotICBkZXBlbmRlbnQsIGJ1dCBgYHRpbWUubWt0aW1lYGAgd2lsbCBub3cgYWNjZXB0IGZ1bGwgcmFuZ2Ugc3VwcG9ydGVkCi0gIGJ5IHRoZSBPUy4gIENvbnZlcnNpb24gb2YgMi1kaWdpdCB5ZWFycyB0byA0LWRpZ2l0IGlzIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzEwODY5OiBGaXhlZCBidWcgd2hlcmUgYXN0LmluY3JlbWVudF9saW5lbm8gbW9kaWZpZWQgdGhlIHJvb3QKLSAgbm9kZSB0d2ljZS4KLQotLSBJc3N1ZSAjNzg1ODogUmFpc2UgYW4gZXJyb3IgcHJvcGVybHkgd2hlbiBvcy51dGltZSgpIGZhaWxzIHVuZGVyIFdpbmRvd3MKLSAgb24gYW4gZXhpc3RpbmcgZmlsZS4KLQotLSBJc3N1ZSAjMzgzOTogd3NnaXJlZiBzaG91bGQgbm90IG92ZXJyaWRlIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIHNldCBieQotICB0aGUgYXBwbGljYXRpb24uICBJbml0aWFsIHBhdGNoIGJ5IENsb3ZpcyBGYWJyaWNpby4KLQotLSBJc3N1ZSAjMTA4MDYsIGlzc3VlICM5OTA1OiBGaXggc3VicHJvY2VzcyBwaXBlcyB3aGVuIHNvbWUgb2YgdGhlIHN0YW5kYXJkCi0gIGZpbGUgZGVzY3JpcHRvcnMgKDAsIDEsIDIpIGFyZSBjbG9zZWQgaW4gdGhlIHBhcmVudCBwcm9jZXNzLiAgSW5pdGlhbAotICBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KLQotLSBJc3N1ZSAjNDY2Mjogb3MudGVtcG5hbSgpLCBvcy50bXBmaWxlKCkgYW5kIG9zLnRtcG5hbSgpIG5vdyByYWlzZSBhIHB5M2sKLSAgRGVwcmVjYXRpb25XYXJuaW5nLgotCi0tIFN1YmNsYXNzZXMgb2YgY29sbGVjdGlvbnMuT3JkZXJlZERpY3Qgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggX19taXNzaW5nX18uCi0KLS0gSXNzdWUgIzEwNzUzOiBDaGFyYWN0ZXJzICc7JywgJz0nIGFuZCAnLCcgaW4gdGhlIFBBVEhfSU5GTyBlbnZpcm9ubWVudAotICB2YXJpYWJsZSB3b24ndCBiZSBxdW90ZWQgd2hlbiB0aGUgVVJJIGlzIGNvbnN0cnVjdGVkIGJ5IHRoZSB3c2dpcmVmLnV0aWwgJ3MKLSAgcmVxdWVzdF91cmkgbWV0aG9kLiBBY2NvcmRpbmcgdG8gUkZDIDM5ODYsIHRoZXNlIGNoYXJhY3RlcnMgY2FuIGJlIGEgcGFydCBvZgotICBwYXJhbXMgaW4gUEFUSCBjb21wb25lbnQgb2YgVVJJIGFuZCBuZWVkIG5vdCBiZSBxdW90ZWQuCi0KLS0gSXNzdWUgIzEwNzM4OiBGaXggd2ViYnJvd3Nlci5PcGVyYS5yYWlzZV9vcHRzCi0KLS0gSXNzdWUgIzk4MjQ6IFNpbXBsZUNvb2tpZSBub3cgZW5jb2RlcyAsIGFuZCA7IGluIHZhbHVlcyB0byBjYXRlciB0byBob3cKLSAgYnJvd3NlcnMgYWN0dWFsbHkgcGFyc2UgY29va2llcy4KLQotLSBJc3N1ZSAjMTM3OTQxNjogZWxpbWluYXRlZCBhIHNvdXJjZSBvZiBhY2NpZGVudGFsIHVuaWNvZGUgcHJvbW90aW9uIGluCi0gIGVtYWlsLmhlYWRlci5IZWFkZXIuZW5jb2RlLgotCi0tIElzc3VlICM1MjU4LyMxMDY0MjogaWYgc2l0ZS5weSBlbmNvdW50ZXJzIGEgLnB0aCBmaWxlIHRoYXQgZ2VuZXJhdGVzIGFuIGVycm9yLAotICBpdCBub3cgcHJpbnRzIHRoZSBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZCB0cmFjZWJhY2sgdG8gc3RkZXJyIGFuZCBza2lwcwotICB0aGUgcmVzdCBvZiB0aGF0IGluZGl2aWR1YWwgZmlsZSwgaW5zdGVhZCBvZiBzdG9wcGluZyBwcm9jZXNzaW5nIGVudGlyZWx5LgotCi0tIElzc3VlICMxMDc1MDogVGhlIGBgcmF3YGAgYXR0cmlidXRlIG9mIGJ1ZmZlcmVkIElPIG9iamVjdHMgaXMgbm93IHJlYWQtb25seS4KLQotLSBJc3N1ZSAjMTAyNDI6IHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydEl0ZW1zRXF1YWwgbWFrZXMgdG9vIG1hbnkgYXNzdW1wdGlvbnMKLSAgYWJvdXQgaW5wdXQuCi0KLS0gSXNzdWUgIzEwNjExOiBTeXN0ZW1FeGl0IHNob3VsZCBub3QgY2F1c2UgYSB1bml0dGVzdCB0ZXN0IHJ1biB0byBleGl0LgotCi0tIElzc3VlICM2NzkxOiBMaW1pdCBoZWFkZXIgbGluZSBsZW5ndGggKHRvIDY1NTM1IGJ5dGVzKSBpbiBodHRwLmNsaWVudCwKLSAgdG8gYXZvaWQgZGVuaWFsIG9mIHNlcnZpY2VzIGZyb20gdGhlIG90aGVyIHBhcnR5LgotCi0tIElzc3VlICM5OTA3OiBGaXggdGFiIGhhbmRsaW5nIG9uIE9TWCB3aGVuIHVzaW5nIGVkaXRsaW5lIGJ5IGNhbGxpbmcKLSAgcmxfaW5pdGlhbGl6ZSBmaXJzdCwgdGhlbiBzZXR0aW5nIG91ciBjdXN0b20gZGVmYXVsdHMsIHRoZW4gcmVhZGluZyAuZWRpdHJjLgotCi0tIElzc3VlICM0MTg4OiBBdm9pZCBjcmVhdGluZyBkdW1teSB0aHJlYWQgb2JqZWN0cyB3aGVuIGxvZ2dpbmcgb3BlcmF0aW9ucwotICBmcm9tIHRoZSB0aHJlYWRpbmcgbW9kdWxlICh3aXRoIHRoZSBpbnRlcm5hbCB2ZXJib3NlIGZsYWcgYWN0aXZhdGVkKS4KLQotLSBJc3N1ZSAjOTcyMTogRml4IHRoZSBiZWhhdmlvciBvZiB1cmxqb2luIHdoZW4gdGhlIHJlbGF0aXZlIHVybCBzdGFydHMgd2l0aCBhCi0gICc7JyBjaGFyYWN0ZXIuIFBhdGNoIGJ5IFdlcyBDaG93LgotCi0tIElzc3VlICMxMDcxNDogTGltaXQgbGVuZ3RoIG9mIGluY29taW5nIHJlcXVlc3QgaW4gaHR0cC5zZXJ2ZXIgdG8gNjU1MzYgYnl0ZXMKLSAgZm9yIHNlY3VyaXR5IHJlYXNvbnMuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgotCi0tIElzc3VlICM5NTU4OiBGaXggZGlzdHV0aWxzLmNvbW1hbmQuYnVpbGRfZXh0IHdpdGggVlMgOC4wLgotCi0tIElzc3VlICMxMDY5NTogcGFzc2luZyB0aGUgcG9ydCBhcyBhIHN0cmluZyB2YWx1ZSB0byB0ZWxuZXRsaWIgbm8gbG9uZ2VyCi0gIGNhdXNlcyBkZWJ1ZyBtb2RlIHRvIGZhaWwuCi0KLS0gSXNzdWUgIzEwNDc4OiBSZWVudHJhbnQgY2FsbHMgaW5zaWRlIGJ1ZmZlcmVkIElPIG9iamVjdHMgKGZvciBleGFtcGxlIGJ5Ci0gIHdheSBvZiBhIHNpZ25hbCBoYW5kbGVyKSBub3cgcmFpc2UgYSBSdW50aW1lRXJyb3IgaW5zdGVhZCBvZiBmcmVlemluZyB0aGUKLSAgY3VycmVudCBwcm9jZXNzLgotCi0tIElzc3VlICMxMDQ5NzogRml4IGluY29ycmVjdCB1c2Ugb2YgZ2V0dGV4dCBpbiBhcmdwYXJzZS4KLQotLSBJc3N1ZSAjMTA0NjQ6IG5ldHJjIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBsaW5lcyB3aXRoIGVtYmVkZGVkICcjJyBjaGFyYWN0ZXJzLgotCi0tIElzc3VlICMxNzMxNzE3OiBGaXhlZCB0aGUgcHJvYmxlbSB3aGVyZSBzdWJwcm9jZXNzLndhaXQoKSBjb3VsZCBjYXVzZSBhbgotICBPU0Vycm9yIGV4Y2VwdGlvbiB3aGVuIFRoZSBPUyBoYWQgYmVlbiB0b2xkIHRvIGlnbm9yZSBTSUdDTEQgaW4gb3VyIHByb2Nlc3MKLSAgb3Igb3RoZXJ3aXNlIG5vdCB3YWl0IGZvciBleGl0aW5nIGNoaWxkIHByb2Nlc3Nlcy4KLQotLSBJc3N1ZSAjOTUwOTogYXJncGFyc2Ugbm93IHByb3Blcmx5IGhhbmRsZXMgSU9FcnJvcnMgcmFpc2VkIGJ5Ci0gIGFyZ3BhcnNlLkZpbGVUeXBlLgotCi0tIElzc3VlICM5MzQ4OiBSYWlzZSBhbiBlYXJseSBlcnJvciBpZiBhcmdwYXJzZSBuYXJncyBhbmQgbWV0YXZhciBkb24ndCBtYXRjaC4KLQotLSBJc3N1ZSAjODk4MjogSW1wcm92ZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGFyZ3BhcnNlIE5hbWVzcGFjZSBvYmplY3QuCi0KLS0gSXNzdWUgIzkzNDM6IERvY3VtZW50IHRoYXQgYXJncGFyc2UgcGFyZW50IHBhcnNlcnMgbXVzdCBiZSBjb25maWd1cmVkIGJlZm9yZQotICB0aGVpciBjaGlsZHJlbi4KLQotLSBJc3N1ZSAjOTAyNjogRml4IG9yZGVyIG9mIGFyZ3BhcnNlIHN1Yi1jb21tYW5kcyBpbiBoZWxwIG1lc3NhZ2VzLgotCi0tIElzc3VlICM5MzQ3OiBGaXggZm9ybWF0dGluZyBmb3IgdHVwbGVzIGluIGFyZ3BhcnNlIHR5cGU9IGVycm9yIG1lc3NhZ2VzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBTdG9wIHVzaW5nIHRoZSBvbGQgaW50ZXJmYWNlIGZvciBwcm92aWRpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlcyBpbiB0aGUgX3NyZQotICBtb2R1bGUuIEFtb25nIG90aGVyIHRoaW5ncywgdGhpcyBnaXZlcyB0aGVzZSBjbGFzc2VzIGBgX19jbGFzc19fYGAKLSAgYXR0cmlidXRlcy4gKFNlZSAjMTIwOTkpCi0KLS0gSXNzdWUgIzEwMTY5OiBGaXggYXJndW1lbnQgcGFyc2luZyBpbiBzb2NrZXQuc2VuZHRvKCkgdG8gYXZvaWQgZXJyb3IgbWFza2luZy4KLQotLSBJc3N1ZSAjMTIwNTE6IEZpeCBzZWdmYXVsdCBpbiBqc29uLmR1bXBzKCkgd2hpbGUgZW5jb2RpbmcgaGlnaGx5LW5lc3RlZAotICBvYmplY3RzIHVzaW5nIHRoZSBDIGFjY2VsZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzEyMDE3OiBGaXggc2VnZmF1bHQgaW4ganNvbi5sb2FkcygpIHdoaWxlIGRlY29kaW5nIGhpZ2hseS1uZXN0ZWQKLSAgb2JqZWN0cyB1c2luZyB0aGUgQyBhY2NlbGVyYXRpb25zLgotCi0tIElzc3VlICMxODM4OiBQcmV2ZW50IHNlZ2ZhdWx0IGluIGN0eXBlcywgd2hlbiBfYXNfcGFyYW1ldGVyXyBvbiBhIGNsYXNzIGlzIHNldAotICB0byBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3MuCi0KLS0gSXNzdWUgIzY3ODI1MDogTWFrZSBtbWFwIGZsdXNoIGEgbm9vcCBvbiBBQ0NFU1NfUkVBRCBhbmQgQUNDRVNTX0NPUFkuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMTE3MTg6IElETEUncyBvcGVuIG1vZHVsZSBkaWFsb2cgY291bGRuJ3QgZmluZCB0aGUgX19pbml0X18ucHkKLSAgZmlsZSBpbiBhIHBhY2thZ2UuCi0KLS0gSXNzdWUgIzEyNTkwOiBJRExFIGVkaXRvciB3aW5kb3cgbm93IGFsd2F5cyBkaXNwbGF5cyB0aGUgZmlyc3QgbGluZQotICB3aGVuIG9wZW5pbmcgYSBsb25nIGZpbGUuICBXaXRoIFRrIDguNSwgdGhlIGZpcnN0IGxpbmUgd2FzIGhpZGRlbi4KLQotLSBJc3N1ZSAjMTEwODg6IGRvbid0IGNyYXNoIHdoZW4gdXNpbmcgRjUgdG8gcnVuIGEgc2NyaXB0IGluIElETEUgb24gTWFjT1NYCi0gIHdpdGggVGsgOC41LgotCi0tIElzc3VlICMxMDk0MDogV29ya2Fyb3VuZCBhbiBJRExFIGhhbmcgb24gTWFjIE9TIFggMTAuNiB3aGVuIHVzaW5nIHRoZQotICBtZW51IGFjY2VsZXJhdG9ycyBmb3IgT3BlbiBNb2R1bGUsIEdvIHRvIExpbmUsIGFuZCBOZXcgSW5kZW50IFdpZHRoLgotICBUaGUgYWNjZWxlcmF0b3JzIHN0aWxsIHdvcmsgYnV0IG5vIGxvbmdlciBhcHBlYXIgaW4gdGhlIG1lbnUgaXRlbXMuCi0KLS0gSXNzdWUgIzEwOTA3OiBXYXJuIE9TIFggMTAuNiBJRExFIHVzZXJzIHRvIHVzZSBBY3RpdmVTdGF0ZSBUY2wvVGsgOC41LCByYXRoZXIKLSAgdGhhbiB0aGUgY3VycmVudGx5IHByb2JsZW1hdGljIEFwcGxlLXN1cHBsaWVkIG9uZSwgd2hlbiBydW5uaW5nIHdpdGggdGhlCi0gIDY0LS8zMi1iaXQgaW5zdGFsbGVyIHZhcmlhbnQuCi0KLS0gSXNzdWUgIzExMDUyOiBDb3JyZWN0IElETEUgbWVudSBhY2NlbGVyYXRvcnMgb24gTWFjIE9TIFggZm9yIFNhdmUKLSAgY29tbWFuZHMuCi0KLS0gSXNzdWUgIzYwNzU6IElETEUgb24gTWFjIE9TIFggbm93IHdvcmtzIHdpdGggYm90aCBDYXJib24gQXF1YVRrIGFuZAotICBDb2NvYSBBcXVhVGsuCi0KLS0gSXNzdWUgIzEwNDA0OiBVc2UgY3RsLWJ1dHRvbi0xIG9uIE9TWCBmb3IgdGhlIGNvbnRleHQgbWVudSBpbiBJZGxlLgotCi0tIElzc3VlICMxMDEwNzogV2FybiBhYm91dCB1bnNhdmVkIGZpbGVzIGluIElETEUgb24gT1NYLgotCi0tIElzc3VlICMxMDQwNjogRW5hYmxlIFJzdHJpcCBJRExFIGV4dGVuc2lvbiBvbiBPU1ggKGp1c3QgbGlrZSBvbiBvdGhlcgotICBwbGF0Zm9ybXMpLgotCi0tIElzc3VlICM2Mzc4OiBGdXJ0aGVyIGFkanVzdCBpZGxlLmJhdCB0byBzdGFydCBhc3NvY2lhdGVkIFB5dGhvbgotCi0tIElzc3VlICMxMTg5NjogU2F2ZSBvbiBDbG9zZSBmYWlsZWQgZGVzcGl0ZSBzZWxlY3RpbmcgIlllcyIgaW4gZGlhbG9nLgotCi0tIElzc3VlICM0Njc2OiA8SG9tZT4gdG9nZ2xlIGZhaWxpbmcgb24gVGsgOC41LCBjYXVzaW5nIElETEUgZXhpdHMgYW5kCi0gIHN0cmFuZ2Ugc2VsZWN0aW9uIGJlaGF2aW9yLiAgSW1wcm92ZSBzZWxlY3Rpb24gZXh0ZW5zaW9uIGJlaGF2aW91ci4KLQotLSBJc3N1ZSAjMzg1MTogPEhvbWU+IHRvZ2dsZSBub24tZnVuY3Rpb25hbCB3aGVuIE51bUxvY2sgc2V0IG9uIFdpbmRvd3MuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMxMTIxNzogRm9yIDY0LWJpdC8zMi1iaXQgTWFjIE9TIFggdW5pdmVyc2FsIGZyYW1ld29yayBidWlsZHMsCi0gIGVuc3VyZSAibWFrZSBpbnN0YWxsIiBjcmVhdGVzIHN5bWxpbmtzIGluIC0tcHJlZml4IGJpbiBmb3IgdGhlICItMzIiCi0gIGZpbGVzIGluIHRoZSBmcmFtZXdvcmsgYmluIGRpcmVjdG9yeSBsaWtlIHRoZSBpbnN0YWxsZXIgZG9lcy4KLQotLSBJc3N1ZSAjMTE0MTE6IEZpeCAnbWFrZSBERVNURElSPScgd2l0aCBhIHJlbGF0aXZlIGRlc3RpbmF0aW9uLgotCi0tIElzc3VlICMxMDcwOTogQWRkIHVwZGF0ZWQgQUlYIG5vdGVzIGluIE1pc2MvUkVBRE1FLkFJWC4KLQotLSBJc3N1ZSAjMTExODQ6IEZpeCBsYXJnZS1maWxlIHN1cHBvcnQgb24gQUlYLgotCi0tIElzc3VlICM5NDEzNDY6IEZpeCBicm9rZW4gc2hhcmVkIGxpYnJhcnkgYnVpbGQgb24gQUlYLgotCi0tIElzc3VlICMxMTI2ODogUHJldmVudCBNYWMgT1MgWCBJbnN0YWxsZXIgZmFpbHVyZSBpZiBEb2N1bWVudGF0aW9uCi0gIHBhY2thZ2UgaGFkIHByZXZpb3VzbHkgYmVlbiBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzExMDc5OiBUaGUgL0FwcGxpY2F0aW9ucy9QeXRob24geC54IGZvbGRlciBjcmVhdGVkIGJ5IHRoZSBNYWMKLSAgT1MgWCBpbnN0YWxsZXJzIG5vdyBpbmNsdWRlcyBhIGxpbmsgdG8gdGhlIGluc3RhbGxlZCBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICMxMTA1NDogQWxsb3cgTWFjIE9TIFggaW5zdGFsbGVyIGJ1aWxkcyB0byBhZ2FpbiB3b3JrIG9uIDEwLjUgd2l0aAotICB0aGUgc3lzdGVtLXByb3ZpZGVkIFB5dGhvbi4KLQotLSBJc3N1ZSAjMTA4NDM6IFVwZGF0ZSB0aGlyZC1wYXJ0eSBsaWJyYXJ5IHZlcnNpb25zIHVzZWQgaW4gT1MgWAotICAzMi1iaXQgaW5zdGFsbGVyIGJ1aWxkczogYnppcDIgMS4wLjYsIHJlYWRsaW5lIDYuMS4yLCBTUUxpdGUgMy43LjQKLSAgKHdpdGggRlRTMy9GVFM0IGFuZCBSVFJFRSBlbmFibGVkKSwgYW5kIG5jdXJzZXN3IDUuNSAod2lkZS1jaGFyCi0gIHN1cHBvcnQgZW5hYmxlZCkuCi0KLS0gRG9uJ3QgcnVuIHBnZW4gdHdpY2Ugd2hlbiB1c2luZyBtYWtlIC1qLgotCi0tIElzc3VlICM3NzE2OiBVbmRlciBTb2xhcmlzLCBkb24ndCBhc3N1bWUgZXhpc3RlbmNlIG9mIC91c3IveHBnNC9iaW4vZ3JlcCBpbgotICB0aGUgY29uZmlndXJlIHNjcmlwdCBidXQgdXNlICRHUkVQIGluc3RlYWQuICBQYXRjaCBieSBGYWJpYW4gR3JvZmZlbi4KLQotLSBJc3N1ZSAjMTA0NzU6IERvbid0IGhhcmRjb2RlIGNvbXBpbGVycyBmb3IgTERTSEFSRUQvTERDWFhTSEFSRUQgb24gTmV0QlNECi0gIGFuZCBEcmFnb25GbHkgQlNELiAgUGF0Y2ggYnkgTmljb2xhcyBKb2x5LgotCi0tIElzc3VlICMxMDY1NTogRml4IHRoZSBidWlsZCBvbiBQb3dlclBDIG9uIExpbnV4IHdpdGggR0NDIHdoZW4gYnVpbGRpbmcgd2l0aAotICB0aW1lc3RhbXAgcHJvZmlsaW5nICgtLXdpdGgtdHNjKTogdGhlIHByZXByb2Nlc3NvciB0ZXN0IGZvciB0aGUgUG93ZXJQQwotICBzdXBwb3J0IG5vdyBsb29rcyBmb3IgIl9fcG93ZXJwY19fIiBhcyB3ZWxsIGFzICJfX3BwY19fIjogdGhlIGxhdHRlciBzZWVtcyB0bwotICBvbmx5IGJlIHByZXNlbnQgb24gT1MgWDsgdGhlIGZvcm1lciBpcyB0aGUgY29ycmVjdCBvbmUgZm9yIExpbnV4IHdpdGggR0NDLgotCi0tIElzc3VlICMxMDk5OiBGaXggdGhlIGJ1aWxkIG9uIE1hY09TWCB3aGVuIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggcHlkZWJ1ZwotICB1c2luZyBHQ0MgNC4wLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMTExNjQ6IFJlbW92ZSBvYnNvbGV0ZSBhbGxub2RlcyB0ZXN0IGZyb20gbWluaWRvbSB0ZXN0LgotCi0tIElzc3VlICMxMjIwNTogRml4IHRlc3Rfc3VicHJvY2VzcyBmYWlsdXJlIGR1ZSB0byB1bmluc3RhbGxlZCB0ZXN0IGRhdGEuCi0KLS0gSXNzdWUgIzU3MjM6IEltcHJvdmUganNvbiB0ZXN0cyB0byBiZSBleGVjdXRlZCB3aXRoIGFuZCB3aXRob3V0IGFjY2VsZXJhdGlvbnMuCi0KLS0gSXNzdWUgIzExOTEwOiBGaXggdGVzdF9oZWFwcSB0byBza2lwIHRoZSBDIHRlc3RzIHdoZW4gX2hlYXBxIGlzIG1pc3NpbmcuCi0KLS0gRml4IHRlc3Rfc3RhcnRmaWxlIHRvIHdhaXQgZm9yIGNoaWxkIHByb2Nlc3MgdG8gdGVybWluYXRlIGJlZm9yZSBmaW5pc2hpbmcuCi0KLS0gSXNzdWUgIzExNzE5OiBGaXggbWVzc2FnZSBhYm91dCB1bmV4cGVjdGVkIHRlc3RfbXNpbGliIHNraXAgb24gbm9uLVdpbmRvd3MKLSAgcGxhdGZvcm1zLiBQYXRjaCBieSBOYWRlZW0gVmF3ZGEuCi0KLS0gSXNzdWUgIzcxMDg6IEZpeCB0ZXN0X2NvbW1hbmRzIHRvIG5vdCBmYWlsIHdoZW4gc3BlY2lhbCBhdHRyaWJ1dGVzICgnQCcKLSAgb3IgJy4nKSBhcHBlYXIgaW4gJ2xzIC1sJyBvdXRwdXQuCi0KLS0gSXNzdWUgIzExNDkwOiB0ZXN0X3N1YnByb2Nlc3M6dGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYQotICBmYWxzZSBwb3NpdGl2ZSBpZiB0aGUgbGFzdCBkaXJlY3RvcnkgaW4gdGhlIHBhdGggaXMgaW5hY2Nlc3NpYmxlLgotCi0tIElzc3VlICMxMDgyMjogRml4IHRlc3RfcG9zaXg6dGVzdF9nZXRncm91cHMgZmFpbHVyZSB1bmRlciBTb2xhcmlzLiAgUGF0Y2gKLSAgYnkgUm9zcyBMYWdlcndhbGwuCi0KLS0gSXNzdWUgIzYyOTM6IEhhdmUgcmVncnRlc3QucHkgZWNobyBiYWNrIHN5cy5mbGFncy4gIFRoaXMgaXMgZG9uZSBieSBkZWZhdWx0Ci0gIGluIHdob2xlIHJ1bnMgYW5kIGVuYWJsZWQgc2VsZWN0aXZlbHkgdXNpbmcgYGAtLWhlYWRlcmBgIHdoZW4gcnVubmluZyBhbgotICBleHBsaWNpdCBsaXN0IG9mIHRlc3RzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ29sbGluIFdpbnRlci4KLQotLSBJc3N1ZSAjNzc1OTY0OiB0ZXN0X2dycCBub3cgc2tpcHMgWVAvTklTIGVudHJpZXMgaW5zdGVhZCBvZiBmYWlsaW5nIHdoZW4KLSAgZW5jb3VudGVyaW5nIHRoZW0uCi0KLS0gSXNzdWUgIzcxMTA6IHJlZ3J0ZXN0IG5vdyBzZW5kcyB0ZXN0IGZhaWx1cmUgcmVwb3J0cyBhbmQgc2luZ2xlLWZhaWx1cmUKLSAgdHJhY2ViYWNrcyB0byBzdGRlcnIgcmF0aGVyIHRoYW4gc3Rkb3V0LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNy4xPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMTAtMTEtMjcqCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjIzNjogZGlzdHV0aWxzJyBta3BhdGggaWdub3JlZCB0aGUgbW9kZSBwYXJhbWV0ZXIuCi0KLS0gRml4IHR5cG8gaW4gb25lIHNkaXN0IG9wdGlvbiAobWVkYXRhLWNoZWNrKS4KLQotLSBJc3N1ZSAjMTAzMjM6IGl0ZXJ0b29scy5pc2xpY2UoKSBub3cgY29uc3VtZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mCi0gIGlucHV0cyBiZWZvcmUgc3RvcHBpbmcuICBGb3JtZXJseSwgdGhlIGZpbmFsIHN0YXRlIG9mIHRoZSB1bmRlcmx5aW5nCi0gIGl0ZXJhdG9yIHdhcyB1bmRlZmluZWQuCi0KLS0gSXNzdWUgIzEwNTY1OiBUaGUgY29sbGVjdGlvbnMuSXRlcmF0b3IgQUJDIG5vdyBjaGVja3MgZm9yIGJvdGgKLSAgYGBfX2l0ZXJfX2BgIGFuZCBgYG5leHRgYC4KLQotLSBJc3N1ZSAjMTAwOTI6IFByb3Blcmx5IHJlc2V0IGxvY2FsZSBpbiBjYWxlbmRhci5Mb2NhbGUqQ2FsZW5kYXIgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMTA0NTk6IFVwZGF0ZSBDSksgY2hhcmFjdGVyIG5hbWVzIHRvIFVuaWNvZGUgNS4yLgotCi0tIElzc3VlICM2MDk4OiBEb24ndCBjbGFpbSBET00gbGV2ZWwgMyBjb25mb3JtYW5jZSBpbiBtaW5pZG9tLgotCi0tIElzc3VlICMxMDU2MTogSW4gcGRiLCBjbGVhciB0aGUgYnJlYWtwb2ludHMgYnkgdGhlIGJyZWFrcG9pbnQgbnVtYmVyLgotCi0tIElzc3VlICM1NzYyOiBGaXggQXR0cmlidXRlRXJyb3IgcmFpc2VkIGJ5IGBgeG1sLmRvbS5taW5pZG9tYGAgd2hlbiBhbiBlbXB0eQotICBYTUwgbmFtZXNwYWNlIGF0dHJpYnV0ZSBpcyBlbmNvdW50ZXJlZC4KLQotLSBJc3N1ZSAjMTcxMDcwMzogV3JpdGUgc3RydWN0dXJlcyBmb3IgYW4gZW1wdHkgWklQIGFyY2hpdmUgd2hlbiBhIFppcEZpbGUgaXMKLSAgY3JlYXRlZCBpbiBtb2RlcyAnYScgb3IgJ3cnIGFuZCB0aGVuIGNsb3NlZCB3aXRob3V0IGFkZGluZyBhbnkgZmlsZXMuIFJhaXNlCi0gIEJhZFppcGZpbGUgKHJhdGhlciB0aGFuIElPRXJyb3IpIHdoZW4gb3BlbmluZyBzbWFsbCBub24tWklQIGZpbGVzLgotCi0tIElzc3VlICM0NDkzOiB1cmxsaWIyIGFkZHMgJy8nIGluIGZyb250IG9mIHBhdGggY29tcG9uZW50cyB3aGljaCBkb2VzIG5vdAotICBzdGFydCB3aXRoICcvLiBDb21tb24gYmVoYXZpb3IgZXhoaWJpdGVkIGJ5IGJyb3dzZXJzIGFuZCBvdGhlciBjbGllbnRzLgotCi0tIElzc3VlICMxMDQwNzogRml4IG9uZSBOYW1lRXJyb3IgaW4gZGlzdHV0aWxzLgotCi0tIElzc3VlICMxMDE5ODogZml4IGR1cGxpY2F0ZSBoZWFkZXIgd3JpdHRlbiB0byB3YXZlIGZpbGVzIHdoZW4gd3JpdGVmcmFtZXMoKQotICBpcyBjYWxsZWQgd2l0aG91dCBkYXRhLgotCi0tIElzc3VlICMxMDQ2NzogRml4IEJ5dGVzSU8ucmVhZGludG8oKSBhZnRlciBzZWVraW5nIGludG8gYSBwb3NpdGlvbiBhZnRlciB0aGUKLSAgZW5kIG9mIHRoZSBmaWxlLgotCi0tIElzc3VlICM1MTExOiBJUHY2IEhvc3QgaW4gdGhlIEhlYWRlciBpcyB3cmFwcGVkIGluc2lkZSBbIF0uIFBhdGNoIGJ5IENoYW5kcnUuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjNjM3ODogaWRsZS5iYXQgbm93IHJ1bnMgd2l0aCB0aGUgYXBwcm9wcmlhdGUgUHl0aG9uIHZlcnNpb24gcmF0aGVyIHRoYW4KLSAgdGhlIHN5c3RlbSBkZWZhdWx0LiBQYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIEJhY2twb3J0IHI4MzM5OSB0byBhbGxvdyB0ZXN0X2Rpc3R1dGlscyB0byBwYXNzIG9uIGluc3RhbGxlZCB2ZXJzaW9ucy4KLQotLSBJc3N1ZSAjMTMwMzQzNDogR2VuZXJhdGUgWklQIGZpbGUgY29udGFpbmluZyBhbGwgUERCcy4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzk0MjQ6IFJlcGxhY2UgZGVwcmVjYXRlZCBhc3NlcnQqIG1ldGhvZHMgaW4gdGhlIFB5dGhvbiB0ZXN0IHN1aXRlLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzEwMjk5OiBMaXN0IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgaW4gYSB0YWJsZSBpbiBmdW5jdGlvbnMucnN0LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNy4xIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDEwLTExLTEzKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTAyMjE6IGRpY3QucG9wKGspIG5vdyBoYXMgYSBrZXkgZXJyb3IgbWVzc2FnZSB0aGF0IGluY2x1ZGVzIHRoZQotICBtaXNzaW5nIGtleSAoc2FtZSBtZXNzYWdlIGRba10gcmV0dXJucyBmb3IgbWlzc2luZyBrZXlzKS4KLQotLSBJc3N1ZSAjMTAxMjU6IERvbid0IHNlZ2ZhdWx0IHdoZW4gdGhlIGl0ZXJhdG9yIHBhc3NlZCB0bwotICBgYGZpbGUud3JpdGVsaW5lcygpYGAgY2xvc2VzIHRoZSBmaWxlLgotCi0tIElzc3VlICMxMDE4NjogRml4IHRoZSBTeW50YXhFcnJvciBjYXJldCB3aGVuIHRoZSBvZmZzZXQgaXMgZXF1YWwgdG8gdGhlCi0gIGxlbmd0aCBvZiB0aGUgb2ZmZW5kaW5nIGxpbmUuCi0KLS0gSXNzdWUgIzk5OTc6IERvbid0IGxldCB0aGUgbmFtZSAidG9wIiBoYXZlIHNwZWNpYWwgc2lnbmlmaWNhbmNlIGluIHNjb3BlCi0gIHJlc29sdXRpb24uCi0KLS0gSXNzdWUgIzk4NjI6IENvbXBlbnNhdGUgZm9yIGJyb2tlbiBQSVBFX0JVRiBpbiBBSVggYnkgaGFyZCBjb2RpbmcKLSAgaXRzIHZhbHVlIGFzIHRoZSBkZWZhdWx0IDUxMiB3aGVuIGNvbXBpbGluZyBvbiBBSVguCi0KLS0gSXNzdWUgIzk2NzU6IENPYmplY3QgdXNlIGlzIG1hcmtlZCBhcyBhIFB5M2sgd2FybmluZywgbm90IGEgZGVwcmVjYXRpb24KLSAgd2FybmluZy4KLQotLSBJc3N1ZSAjMTAwNjg6IEdsb2JhbCBvYmplY3RzIHdoaWNoIGhhdmUgcmVmZXJlbmNlIGN5Y2xlcyB3aXRoIHRoZWlyIG1vZHVsZSdzCi0gIGRpY3QgYXJlIG5vdyBjbGVhcmVkIGFnYWluLiBUaGlzIGNhdXNlcyBpc3N1ZSAjNzE0MCB0byBhcHBlYXIgYWdhaW4uCi0KLS0gSXNzdWUgIzk4Njk6IE1ha2UgbG9uZygpIGFuZCBQeU51bWJlcl9Mb25nIHJldHVybiBzb21ldGhpbmcgb2YgdHlwZQotICBsb25nIGZvciBhIGNsYXNzIHdob3NlIF9fbG9uZ19fIG1ldGhvZCByZXR1cm5zIGEgcGxhaW4gaW50LiAgVGhpcwotICBmaXhlcyBhbiBpbnRlcnByZXRlciBjcmFzaCB3aGVuIGluaXRpYWxpemluZyBhbiBpbnN0YW5jZSBvZiBhIGxvbmcKLSAgc3ViY2xhc3MgZnJvbSBhbiBvYmplY3Qgd2hvc2UgX19sb25nX18gbWV0aG9kIHJldHVybnMgYSBwbGFpbiBpbnQuCi0KLS0gSXNzdWUgIzEwMDA2OiB0eXBlLl9fYWJzdHJhY3RtZXRob2RzX18gbm93IHJhaXNlcyBhbiBBdHRyaWJ1dGVFcnJvci4KLQotLSBJc3N1ZSAjOTc5NzogcHlzdGF0ZS5jIHdyb25nbHkgYXNzdW1lZCB0aGF0IHplcm8gY291bGRuJ3QgYmUgYSB2YWxpZAotICB0aHJlYWQtbG9jYWwgc3RvcmFnZSBrZXkuCi0KLS0gSXNzdWUgIzQ5NDc6IFRoZSB3cml0ZSgpIG1ldGhvZCBvZiBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIHVzZXMgdGhlaXIKLSAgZW5jb2RpbmcgYW5kIGVycm9ycyBhdHRyaWJ1dGVzIGluc3RlYWQgb2YgdXNpbmcgdXRmLTggaW4gc3RyaWN0IG1vZGUsIHRvIGdldAotICB0aGUgc2FtZSBiZWhhdmlvdXIgdGhhbiB0aGUgcHJpbnQgc3RhdGVtZW50LgotCi0tIElzc3VlICM5NzM3OiBGaXggYSBjcmFzaCB3aGVuIHRyeWluZyB0byBkZWxldGUgYSBzbGljZSBvciBhbiBpdGVtIGZyb20KLSAgYSBtZW1vcnl2aWV3IG9iamVjdC4KLQotLSBSZXN0b3JlIEdJTCBpbiBuaXNfY2F0IGluIGNhc2Ugb2YgZXJyb3IuCi0KLS0gSXNzdWUgIzk2ODg6IF9fYmFzaWNzaXplX18gYW5kIF9faXRlbXNpemVfXyBtdXN0IGJlIGFjY2Vzc2VkIGFzIFB5X3NzaXplX3QuCi0KLS0gSXNzdWUgIzg1MzA6IFByZXZlbnQgc3RyaW5nbGliIGZhc3RzZWFyY2ggZnJvbSByZWFkaW5nIGJleW9uZCB0aGUgZnJvbnQKLSAgb2YgYW4gYXJyYXkuCi0KLS0gSXNzdWUgIzgzNzU1OiBJbXBsaWNpdCBzZXQtdG8tZnJvemVuc2V0IGNvbnZlcnNpb24gd2FzIG5vdCB0aHJlYWQtc2FmZS4KLQotLSBJc3N1ZSAjOTQxNjogRml4IHNvbWUgaXNzdWVzIHdpdGggY29tcGxleCBmb3JtYXR0aW5nIHdoZXJlIHRoZQotICBvdXRwdXQgd2l0aCBubyB0eXBlIHNwZWNpZmllciBmYWlsZWQgdG8gbWF0Y2ggdGhlIHN0ciBvdXRwdXQ6Ci0KLSAgICAtIGZvcm1hdChjb21wbGV4KC0wLjAsIDIuMCksICctJykgb21pdHRlZCB0aGUgcmVhbCBwYXJ0IGZyb20gdGhlIG91dHB1dCwKLSAgICAtIGZvcm1hdChjb21wbGV4KDAuMCwgMi4wKSwgJy0nKSBpbmNsdWRlZCBhIHNpZ24gYW5kIHBhcmVudGhlc2VzLgotCi0tIElzc3VlICM3NjE2OiBGaXggY29weWluZyBvZiBvdmVybGFwcGluZyBtZW1vcnl2aWV3IHNsaWNlcyB3aXRoIHRoZSBJbnRlbAotICBjb21waWxlci4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICM5OTI2OiBXcmFwcGVkIFRlc3RTdWl0ZSBzdWJjbGFzcyBkb2VzIG5vdCBnZXQgX19jYWxsX18gZXhlY3V0ZWQKLQotLSBJc3N1ZSAjNDQ3MTogUHJvcGVybHkgc2h1dGRvd24gc29ja2V0IGluIElNQVAuc2h1dGRvd24oKS4gIFBhdGNoIGJ5Ci0gIExvcmVuem8gTS4gQ2F0dWNjaS4KLQotLSBJc3N1ZSAjMTAxMjY6IEZpeCBkaXN0dXRpbHMnIHRlc3RfYnVpbGQgd2hlbiBQeXRob24gd2FzIGJ1aWx0IHdpdGgKLSAgLS1lbmFibGUtc2hhcmVkLgotCi0tIEZpeCB0eXBvIGluIG9uZSBzZGlzdCBvcHRpb24gKG1lZGF0YS1jaGVjaykuCi0KLS0gSXNzdWUgIzkxOTk6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIGRpc3R1dGlscy5jbWQuQ29tbWFuZC5hbm5vdW5jZS4KLQotLSBJc3N1ZSAjMTcxODU3NDogRml4IG9wdGlvbnMgdGhhdCB3ZXJlIHN1cHBvc2VkIHRvIGFjY2VwdCBhcmd1bWVudHMgYnV0IGRpZAotICBub3QgaW4gYnVpbGRfY2xpYi4KLQotLSBJc3N1ZSAjOTI4MTogUHJldmVudCByYWNlIGNvbmRpdGlvbiB3aXRoIG1rZGlyIGluIGRpc3R1dGlscy4gIFBhdGNoIGJ5Ci0gIEFyZnJldmVyLgotCi0tIElzc3VlICMxMDIyOTogRml4IGNhY2hpbmcgZXJyb3IgaW4gZ2V0dGV4dC4KLQotLSBJc3N1ZSAjMTAyNTI6IENsb3NlIGZpbGUgb2JqZWN0cyBpbiBhIHRpbWVseSBtYW5uZXIgaW4gZGlzdHV0aWxzIGNvZGUgYW5kCi0gIHRlc3RzLiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLCBjb21wbGV0ZWQgYnkgw4lyaWMgQXJhdWpvLgotCi0tIElzc3VlICMxMDMxMTogVGhlIHNpZ25hbCBtb2R1bGUgbm93IHJlc3RvcmVzIGVycm5vIGJlZm9yZSByZXR1cm5pbmcgZnJvbQotICBpdHMgbG93LWxldmVsIHNpZ25hbCBoYW5kbGVyLiAgUGF0Y2ggYnkgSGFsbHZhcmQgQiBGdXJ1c2V0aC4KLQotLSBJc3N1ZSAjMTAwMzg6IGpzb24ubG9hZHMoKSBvbiBzdHIgc2hvdWxkIGFsd2F5cyByZXR1cm4gdW5pY29kZSAocmVncmVzc2lvbgotICBmcm9tIFB5dGhvbiAyLjYpLiAgUGF0Y2ggYnkgV2FsdGVyIETDtnJ3YWxkLgotCi0tIElzc3VlICMxMjAxNzY6IFdyYXBwZWQgVGVzdFN1aXRlIHN1YmNsYXNzIGRvZXMgbm90IGdldCBfX2NhbGxfXyBleGVjdXRlZC4KLQotLSBJc3N1ZSAjNjcwNjogYXN5bmNvcmUgYWNjZXB0KCkgbWV0aG9kIG5vIGxvbmdlciByYWlzZXMKLSAgRVdPVUxEQkxPQ0svRUNPTk5BQk9SVEVEIG9uIGluY29tcGxldGUgY29ubmVjdGlvbiBhdHRlbXB0IGJ1dCByZXR1cm5zIE5vbmUKLSAgaW5zdGVhZC4KLQotLSBJc3N1ZSAjMTAyNjY6IHV1LmRlY29kZSBkaWRuJ3QgY2xvc2UgaW5fZmlsZSBleHBsaWNpdGx5IHdoZW4gaXQgd2FzIGdpdmVuCi0gIGFzIGEgZmlsZW5hbWUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gSXNzdWUgIzEwMjQ2OiB1dS5lbmNvZGUgZGlkbid0IGNsb3NlIGZpbGUgb2JqZWN0cyBleHBsaWNpdGx5IHdoZW4gZmlsZW5hbWVzCi0gIHdlcmUgZ2l2ZW4gdG8gaXQuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gSXNzdWUgIzEwMjUzOiBGaWxlSU8gbGVha3MgYSBmaWxlIGRlc2NyaXB0b3Igd2hlbiB0cnlpbmcgdG8gb3BlbiBhIGZpbGUKLSAgZm9yIGFwcGVuZCB0aGF0IGlzbid0IHNlZWthYmxlLiAgUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgotCi0tIElzc3VlICM2MTA1OiBqc29uLmR1bXBzIG5vdyByZXNwZWN0cyBPcmRlcmVkRGljdCdzIGl0ZXJhdGlvbiBvcmRlci4KLQotLSBJc3N1ZSAjOTI5NTogRml4IGEgY3Jhc2ggdW5kZXIgV2luZG93cyB3aGVuIGNhbGxpbmcgY2xvc2UoKSBvbiBhIGZpbGUKLSAgb2JqZWN0IHdpdGggY3VzdG9tIGJ1ZmZlcmluZyBmcm9tIHR3byB0aHJlYWRzIGF0IG9uY2UuCi0KLS0gSXNzdWUgIzUwMjc6IFRoZSBzdGFuZGFyZCBgYHhtbGBgIG5hbWVzcGFjZSBpcyBub3cgdW5kZXJzdG9vZCBieQotICB4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvciBhcyBiZWluZyBib3VuZCB0bwotICBodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UuICBQYXRjaCBieSBUcm95IEouIEZhcnJlbGwuCi0KLS0gSXNzdWUgIzEwMTYzOiBTa2lwIHVucmVhZGFibGUgcmVnaXN0cnkga2V5cyBkdXJpbmcgbWltZXR5cGVzCi0gIGluaXRpYWxpemF0aW9uLgotCi0tIElzc3VlICM1MTE3OiBGaXhlZCByb290IGRpcmVjdG9yeSByZWxhdGVkIGlzc3VlIG9uIHBvc2l4cGF0aC5yZWxwYXRoKCkgYW5kCi0gIG50cGF0aC5yZWxwYXRoKCkuCi0KLS0gSXNzdWUgIzk0MDk6IEZpeCB0aGUgcmVnZXggdG8gbWF0Y2ggYWxsIGtpbmQgb2YgZmlsZW5hbWVzLCBmb3IgaW50ZXJhY3RpdmUKLSAgZGVidWdnaW5nIGluIGRvY3Rlc3RzLgotCi0tIElzc3VlICM2NjEyOiBGaXggc2l0ZSBhbmQgc3lzY29uZmlnIHRvIGNhdGNoIG9zLmdldGN3ZCgpIGVycm9yLCBlZy4gaWYgdGhlCi0gIGN1cnJlbnQgZGlyZWN0b3J5IHdhcyBkZWxldGVkLiBQYXRjaCB3cml0dGVuIGJ5IFcuIFRyZXZvciBLaW5nLgotCi0tIElzc3VlICMxMDA0NTogSW1wcm92ZWQgcGVyZm9ybWFuY2Ugd2hlbiB3cml0aW5nIGFmdGVyIHNlZWtpbmcgcGFzdCB0aGUKLSAgZW5kIG9mIHRoZSAiZmlsZSIgaW4gY1N0cmluZ0lPLgotCi0tIElzc3VlICM5OTQ4OiBGaXhlZCBwcm9ibGVtIG9mIGxvc2luZyBmaWxlbmFtZSBjYXNlIGluZm9ybWF0aW9uLgotCi0tIElzc3VlICM5NDM3OiBGaXggYnVpbGRpbmcgQyBleHRlbnNpb25zIHdpdGggbm9uLWRlZmF1bHQgTERGTEFHUy4KLQotLSBJc3N1ZSAjOTc1OTogR3ppcEZpbGUgbm93IHJhaXNlcyBWYWx1ZUVycm9yIHdoZW4gYW4gb3BlcmF0aW9uIGlzIGF0dGVtcHRlZAotICBhZnRlciB0aGUgZmlsZSBpcyBjbG9zZWQuICBQYXRjaCBieSBKZWZmcmV5IEZpbmtlbHN0ZWluLgotCi0tIElzc3VlICM5MDQyOiBGaXggaW50ZXJhY3Rpb24gb2YgY3VzdG9tIHRyYW5zbGF0aW9uIGNsYXNzZXMgYW5kIGNhY2hpbmcgaW4KLSAgZ2V0dGV4dC4KLQotLSBJc3N1ZSAjOTA2NTogdGFyZmlsZSBubyBsb25nZXIgdXNlcyAicm9vdCIgYXMgdGhlIGRlZmF1bHQgZm9yIHRoZSB1bmFtZSBhbmQKLSAgZ25hbWUgZmllbGQuCi0KLS0gSXNzdWUgIzEwNTAyNjg6IHBhcnNlYWRkciBub3cgY29ycmVjdGx5IHF1b3RlcyBkb3VibGUgcXVvdGUgYW5kIGJhY2tzbGFzaAotICBjaGFyYWN0ZXJzIHRoYXQgYXBwZWFyIGluc2lkZSBxdW90ZWQgc3RyaW5ncyBpbiBlbWFpbCBhZGRyZXNzZXMuCi0KLS0gSXNzdWUgIzEwMDA0OiBxdW9wcmltaW1lIG5vIGxvbmdlciBnZW5lcmF0ZXMgYSB0cmFjZWJhY2sgd2hlbiBjb25mcm9udGVkCi0gIHdpdGggaW52YWxpZCBjaGFyYWN0ZXJzIGFmdGVyICc9JyBpbiBhIFEtZW5jb2RlZCB3b3JkLgotCi0tIElzc3VlICM5OTUwOiBGaXggc29ja2V0LnNlbmRhbGwoKSBjcmFzaCBvciBtaXNiZWhhdmlvdXIgd2hlbiBhIHNpZ25hbCBpcwotICByZWNlaXZlZC4gIE5vdyBzZW5kYWxsKCkgcHJvcGVybHkgY2FsbHMgc2lnbmFsIGhhbmRsZXJzIGlmIG5lY2Vzc2FyeSwKLSAgYW5kIHJldHJpZXMgc2VuZGluZyBpZiB0aGVzZSByZXR1cm5lZCBzdWNjZXNzZnVsbHksIGluY2x1ZGluZyBvbiBzb2NrZXRzCi0gIHdpdGggYSB0aW1lb3V0LgotCi0tIElzc3VlICM5OTQ3OiBsb2dnaW5nOiBGaXhlZCBsb2NraW5nIGJ1ZyBpbiBzdG9wTGlzdGVuaW5nLgotCi0tIElzc3VlICM5OTQ1OiBsb2dnaW5nOiBGaXhlZCBsb2NraW5nIGJ1Z3MgaW4gYWRkSGFuZGxlci9yZW1vdmVIYW5kbGVyLgotCi0tIElzc3VlICM5OTM2OiBGaXhlZCBleGVjdXRhYmxlIGxpbmVzJyBzZWFyY2ggaW4gdGhlIHRyYWNlIG1vZHVsZS4KLQotLSBJc3N1ZSAjOTkyODogUHJvcGVybHkgaW5pdGlhbGl6ZSB0aGUgdHlwZXMgZXhwb3J0ZWQgYnkgdGhlIGJ6MiBtb2R1bGUuCi0KLS0gSXNzdWUgIzk4NTQ6IFRoZSBkZWZhdWx0IHJlYWQoKSBpbXBsZW1lbnRhdGlvbiBpbiBpby5SYXdJT0Jhc2Ugbm93Ci0gIGhhbmRsZXMgbm9uLWJsb2NraW5nIHJlYWRpbnRvKCkgcmV0dXJuaW5nIE5vbmUgY29ycmVjdGx5LgotCi0tIElzc3VlICM5NzI5OiBGaXggdGhlIHNpZ25hdHVyZSBvZiBTU0xTb2NrZXQucmVjdmZyb20oKSBhbmQKLSAgU1NMU29ja2V0LnNlbmR0bygpIHRvIG1hdGNoIHRoZSBjb3JyZXNwb25kaW5nIHNvY2tldCBtZXRob2RzLiAgQWxzbywKLSAgZml4IHZhcmlvdXMgU1NMU29ja2V0IG1ldGhvZHMgdG8gcmFpc2Ugc29ja2V0LmVycm9yIHJhdGhlciB0aGFuIGFuCi0gIHVuaGVscGZ1bCBUeXBlRXJyb3Igd2hlbiBjYWxsZWQgb24gYW4gdW5jb25uZWN0ZWQgc29ja2V0LiAgT3JpZ2luYWwgcGF0Y2gKLSAgYnkgQW5kcmV3IEJlbm5ldHRzLgotCi0tIElzc3VlICM5ODI2OiBPcmRlcmVkRGljdC5fX3JlcHJfXyBjYW4gbm93IGhhbmRsZSBzZWxmLXJlZmVyZW50aWFsCi0gIHZhbHVlczogICBkWyd4J10gPSBkLgotCi0tIElzc3VlICM3Njc2NDU6IFNldCBvcy5wYXRoLnN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzIHRvIFRydWUgb24gTWFjIE9TIFguCi0KLS0gSXNzdWUgIzk4Mzc6IFRoZSByZWFkKCkgbWV0aG9kIG9mIFppcEV4dEZpbGUgb2JqZWN0cyAoYXMgcmV0dXJuZWQgYnkKLSAgWmlwRmlsZS5vcGVuKCkpIGNvdWxkIHJldHVybiBtb3JlIGJ5dGVzIHRoYW4gcmVxdWVzdGVkLgotCi0tIElzc3VlICM5ODI1OiByZW1vdmVkIF9fZGVsX18gZnJvbSB0aGUgZGVmaW5pdGlvbiBvZiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdC4KLSAgVGhpcyBwcmV2ZW50cyB1c2VyLWNyZWF0ZWQgc2VsZi1yZWZlcmVuY2luZyBvcmRlcmVkIGRpY3Rpb25hcmllcyBmcm9tCi0gIGJlY29taW5nIHBlcm1hbmVudGx5IHVuY29sbGVjdGFibGUgR0MgZ2FyYmFnZS4gIFRoZSBkb3duc2lkZSBpcyB0aGF0Ci0gIHJlbW92aW5nIF9fZGVsX18gbWVhbnMgdGhhdCB0aGUgaW50ZXJuYWwgZG91Ymx5LWxpbmtlZCBsaXN0IGhhcyB0byB3YWl0IGZvcgotICBHQyBjb2xsZWN0aW9uIHJhdGhlciB0aGFuIGZyZWVpbmcgbWVtb3J5IGltbWVkaWF0ZWx5IHdoZW4gdGhlIHJlZmNudCBkcm9wcwotICB0byB6ZXJvLgotCi0tIElzc3VlICM5ODE2OiByYW5kb20uUmFuZG9tLmp1bXBhaGVhZChuKSBkaWQgbm90IHByb2R1Y2UgYSBzdWZmaWNpZW50bHkKLSAgZGlmZmVyZW50IGludGVybmFsIHN0YXRlIGZvciBzbWFsbCB2YWx1ZXMgb2Ygbi4gIEZpeGVkIGJ5IHNhbHRpbmcgdGhlCi0gIHZhbHVlLgotCi0tIElzc3VlICM5NzkyOiBJbiBjYXNlIG9mIGNvbm5lY3Rpb24gZmFpbHVyZSwgc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKCkKLSAgd291bGQgc3dhbGxvdyB0aGUgZXhjZXB0aW9uIGFuZCByYWlzZSBhIG5ldyBvbmUsIG1ha2luZyBpdCBpbXBvc3NpYmxlCi0gIHRvIGZldGNoIHRoZSBvcmlnaW5hbCBlcnJubywgb3IgdG8gZmlsdGVyIHRpbWVvdXQgZXJyb3JzLiAgTm93IHRoZQotICBvcmlnaW5hbCBlcnJvciBpcyByZS1yYWlzZWQuCi0KLS0gSXNzdWUgIzk3NTg6IFdoZW4gZmNudGwuaW9jdGwoKSB3YXMgY2FsbGVkIHdpdGggbXV0YWJsZV9mbGFnIHNldCB0byBUcnVlLAotICBhbmQgdGhlIHBhc3NlZCBidWZmZXIgd2FzIGV4YWN0bHkgMTAyNCBieXRlcyBsb25nLCB0aGUgYnVmZmVyIHdvdWxkbid0Ci0gIGJlIHVwZGF0ZWQgYmFjayBhZnRlciB0aGUgc3lzdGVtIGNhbGwuICBPcmlnaW5hbCBwYXRjaCBieSBCcmlhbiBCcmF6aWwuCi0KLS0gSXNzdWUgIzExMDA1NjI6IEZpeCBkZWVwLWNvcHlpbmcgb2Ygb2JqZWN0cyBkZXJpdmVkIGZyb20gdGhlIGxpc3QgYW5kCi0gIGRpY3QgdHlwZXMuICBQYXRjaCBieSBNaWNoZWxlIE9ycsO5IGFuZCBCasO2cm4gTGluZHF2aXN0LgotCi0tIElzc3VlICM3MDA1OiBGaXhlZCBvdXRwdXQgb2YgTm9uZSB2YWx1ZXMgZm9yIFJhd0NvbmZpZ1BhcnNlci53cml0ZSBhbmQKLSAgQ29uZmlnUGFyc2VyLndyaXRlLgotCi0tIElzc3VlICM4MDgxNjQ6IEZpeGVkIHNvY2tldC5jbG9zZSB0byBhdm9pZCByZWZlcmVuY2VzIHRvIGdsb2JhbHMsIHRvCi0gIGF2b2lkIGlzc3VlcyB3aGVuIHNvY2tldC5jbG9zZSBpcyBjYWxsZWQgZnJvbSBhIF9fZGVsX18gbWV0aG9kLgotCi0tIElzc3VlICMyOTg2OiBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlciBnZXRzIGEgbmV3IHBhcmFtZXRlciwgYXV0b2p1bmssIHdoaWNoCi0gIGNhbiBiZSBzZXQgdG8gRmFsc2UgdG8gdHVybiBvZmYgdGhlIHByZXZpb3VzbHkgdW5kb2N1bWVudGVkICdwb3B1bGFyaXR5JwotICBoZXVyaXN0aWMuIFBhdGNoIGJ5IFRlcnJ5IFJlZWR5IGFuZCBFbGkgQmVuZGVyc2t5Ci0KLS0gSXNzdWUgIzg3OTc6IHVybGxpYjIgZG9lcyBhIHJldHJ5IGZvciBCYXNpYyBBdXRoZW50aWNhdGlvbiBmYWlsdXJlIGluc3RlYWQgb2YKLSAgZmFsbGluZyBpbnRvIHJlY3Vyc2lvbi4KLQotLSBJc3N1ZSAjMTE5NDIyMjogZW1haWwudXRpbHMucGFyc2VkYXRlIG5vdyByZXR1cm5zIFJGQzI4MjIgY29tcGxpYW50IGZvdXIKLSAgY2hhcmFjdGVyIHllYXJzIGV2ZW4gaWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgUkZDODIyIHR3byBjaGFyYWN0ZXIgeWVhcnMuCi0KLS0gSXNzdWUgIzg3NTA6IEZpeGVkIE11dGFibGVTZXQncyBtZXRob2RzIHRvIGNvcnJlY3RseSBoYW5kbGUKLSAgcmVmbGV4aXZlIG9wZXJhdGlvbnMsIG5hbWVseSB4IC09IHggYW5kIHggXj0geC4KLQotLSBJc3N1ZSAjOTEyOTogc210cGQucHkgaXMgdnVsbmVyYWJsZSB0byBEb1MgYXR0YWNrcyBkZXJpdmluZyBmcm9tIG1pc3NpbmcKLSAgZXJyb3IgaGFuZGxpbmcgd2hlbiBhY2NlcHRpbmcgYSBuZXcgY29ubmVjdGlvbi4KLQotLSBJc3N1ZSAjNjU4NzQ5OiBhc3luY29yZSdzIGNvbm5lY3QoKSBtZXRob2Qgbm93IGNvcnJlY3RseSBpbnRlcnByZXRzIHdpbnNvY2sKLSAgZXJyb3JzLgotCi0tIElzc3VlICM5NTAxOiBGaXhlZCBsb2dnaW5nIHJlZ3Jlc3Npb25zIGluIGNsZWFudXAgY29kZS4KLQotLSBJc3N1ZSAjOTIxNDogU2V0IG9wZXJhdGlvbnMgb24gS2V5c1ZpZXcgb3IgSXRlbXNWaWV3IGluIHRoZSBjb2xsZWN0aW9ucwotICBtb2R1bGUgbm93IGNvcnJlY3RseSByZXR1cm4gYSBzZXQuICAoUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4pCi0KLS0gSXNzdWUgIzk2MTc6IFNpZ25hbHMgcmVjZWl2ZWQgZHVyaW5nIGEgbG93LWxldmVsIHdyaXRlIG9wZXJhdGlvbiBhcmVuJ3QKLSAgaWdub3JlZCBieSB0aGUgYnVmZmVyZWQgSU8gbGF5ZXIgYW55bW9yZS4KLQotLSBJc3N1ZSAjMjUyMTogVXNlIHdlYWtyZWZzIG9uIGZvciBjYWNoaW5nIGluIHRoZSBhYmMgbW9kdWxlLCBzbyB0aGF0IGNsYXNzZXMKLSAgYXJlIG5vdCBoZWxkIG9udG8gYWZ0ZXIgdGhleSBhcmUgZGVsZXRlZCBlbHNld2hlcmUuCi0KLS0gSXNzdWUgIzk2MjY6IHRoZSB2aWV3IG1ldGhvZHMgZm9yIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkgd2VyZSByZXR1cm5pbmcKLSAgdGhlIHVub3JkZXJlZCB2ZXJzaW9ucyBpbmhlcml0ZWQgZnJvbSBkaWN0LiAgVGhvc2UgbWV0aG9kcyBhcmUgbm93Ci0gIG92ZXJyaWRkZW4gdG8gcHJvdmlkZSBvcmRlcmVkIHZpZXdzLgotCi0tIElzc3VlICM4Njg4OiBNQU5JRkVTVCBmaWxlcyBjcmVhdGVkIGJ5IGRpc3R1dGlscyBub3cgaW5jbHVkZSBhIG1hZ2ljCi0gIGNvbW1lbnQgaW5kaWNhdGluZyB0aGV5IGFyZSBnZW5lcmF0ZWQuICBNYW51YWxseSBtYWludGFpbmVkIE1BTklGRVNUcwotICB3aXRob3V0IHRoaXMgbWFya2VyIHdpbGwgbm90IGJlIG92ZXJ3cml0dGVuIG9yIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzc0Njc6IHdoZW4gcmVhZGluZyBhIGZpbGUgZnJvbSBhIFpJUCBhcmNoaXZlLCBpdHMgQ1JDIGlzIGNoZWNrZWQKLSAgYW5kIGEgQmFkWmlwZmlsZSBlcnJvciBpcyByYWlzZWQgaWYgaXQgZG9lc24ndCBtYXRjaCAoYXMgdXNlZCB0byBiZSB0aGUKLSAgY2FzZSBpbiBQeXRob24gMi41IGFuZCBlYXJsaWVyKS4KLQotLSBJc3N1ZSAjOTU1MDogYSBCdWZmZXJlZFJlYWRlciBjb3VsZCBpc3N1ZSBhbiBhZGRpdGlvbmFsIHJlYWQgd2hlbiB0aGUKLSAgb3JpZ2luYWwgcmVhZCByZXF1ZXN0IGhhZCBiZWVuIHNhdGlzZmllZCwgd2hpY2ggY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5Ci0gIHdoZW4gdGhlIHVuZGVybHlpbmcgcmF3IElPIGNoYW5uZWwgd2FzIGUuZy4gYSBzb2NrZXQuICBSZXBvcnQgYW5kIG9yaWdpbmFsCi0gIHBhdGNoIGJ5IEphc29uIFYuIE1pbGxlci4KLQotLSBJc3N1ZSAjOTU1MTogRG9uJ3QgcmFpc2UgVHlwZUVycm9yIHdoZW4gc2V0dGluZyB0aGUgdmFsdWUgdG8gTm9uZSBmb3IKLSAgU2FmZUNvbmZpZ1BhcnNlciBpbnN0YW5jZXMgY29uc3RydWN0ZWQgd2l0aCBhbGxvd19ub192YWx1ZSA9PSBUcnVlLgotCi0tIElzc3VlICM2OTE1OiBVbmRlciBXaW5kb3dzLCBvcy5saXN0ZGlyKCkgZGlkbid0IHJlbGVhc2UgdGhlIEdsb2JhbAotICBJbnRlcnByZXRlciBMb2NrIGFyb3VuZCBhbGwgc3lzdGVtIGNhbGxzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUnlhbiBLZWxseS4KLQotLSBJc3N1ZSAjMzc1NzogdGhyZWFkLWxvY2FsIG9iamVjdHMgbm93IHN1cHBvcnQgY3ljbGljIGdhcmJhZ2UgY29sbGVjdGlvbi4KLSAgVGhyZWFkLWxvY2FsIG9iamVjdHMgaW52b2x2ZWQgaW4gcmVmZXJlbmNlIGN5Y2xlcyB3aWxsIGJlIGRlYWxsb2NhdGVkCi0gIHRpbWVseSBieSB0aGUgY3ljbGljIEdDLCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLgotCi0tIElzc3VlICM2MjMxOiBGaXggeG1sLmV0cmVlLkVsZW1lbnRJbmNsdWRlIHRvIGluY2x1ZGUgdGhlIHRhaWwgb2YgdGhlCi0gIGN1cnJlbnQgbm9kZS4KLQotLSBJc3N1ZSAjNjg2OTogRml4IGEgcmVmY291bnQgcHJvYmxlbSBpbiB0aGUgX2N0eXBlcyBleHRlbnNpb24uCi0KLS0gSXNzdWUgIzU1MDQ6IGN0eXBlcyBzaG91bGQgbm93IHdvcmsgd2l0aCBzeXN0ZW1zIHdoZXJlIG1tYXAgY2FuJ3QgYmUKLSAgUFJPVF9XUklURSBhbmQgUFJPVF9FWEVDLgotCi0tIElzc3VlICM4MjgwOiB1cmxsaWIyJ3MgUmVxdWVzdCBtZXRob2Qgd2lsbCByZW1vdmUgZnJhZ2VtZW50cyBpbiB0aGUgdXJsLgotICBUaGlzIGlzIGhvdyBpdCBpcyBzdXBwb3NlZCB0byB3b3JrLCB3Z2V0IGFuZCBjdXJsIGRvIHRoZSBzYW1lLiAgUHJldmlvdXMKLSAgYmVoYXZpb3Igd2FzIHdyb25nLgotCi0tIElzc3VlICMyOTQ0OiBhc3luY29yZSBkb2Vzbid0IGhhbmRsZSBjb25uZWN0aW9uIHJlZnVzZWQgY29ycmVjdGx5LgotCi0tIElzc3VlICMzMTk2OiBlbWFpbCBoZWFkZXIgZGVjb2RpbmcgaXMgbm93IGZvcmdpdmluZyBpZiBhbiBSRkMyMDQ3Ci0gIGVuY29kZWQgd29yZCBlbmNvZGVkIGluIGJhc2U2NCBpcyBsYWNraW5nIHBhZGRpbmcuCi0KLS0gSXNzdWUgIzk0NDQ6IEFyZ3BhcnNlIG5vdyB1c2VzIHRoZSBmaXJzdCBlbGVtZW50IG9mIHByZWZpeF9jaGFycyBhcwotICB0aGUgb3B0aW9uIGNoYXJhY3RlciBmb3IgdGhlIGFkZGVkICdoL2hlbHAnIG9wdGlvbiBpZiBwcmVmaXhfY2hhcnMKLSAgZG9lcyBub3QgY29udGFpbiBhICctJywgaW5zdGVhZCBvZiByYWlzaW5nIGFuIGVycm9yLgotCi0tIElzc3VlICM5MzU0OiBQcm92aWRlIGdldHNvY2tvcHQoKSBpbiBhc3luY29yZSdzIGZpbGVfd3JhcHBlci4KLQotLSBJc3N1ZSAjOTQyODogRml4IHJ1bm5pbmcgc2NyaXB0cyB3aXRoIHRoZSBwcm9maWxlL2NQcm9maWxlIG1vZHVsZXMgZnJvbQotICB0aGUgY29tbWFuZCBsaW5lLgotCi0tIElzc3VlICM3NzgxOiBGaXggcmVzdHJpY3Rpbmcgc3RhdHMgYnkgZW50cnkgY291bnRzIGluIHRoZSBwc3RhdHMKLSAgaW50ZXJhY3RpdmUgYnJvd3Nlci4KLQotLSBJc3N1ZSAjOTIwOTogRG8gbm90IGNyYXNoIGluIHRoZSBwc3RhdHMgaW50ZXJhY3RpdmUgYnJvd3NlciBvbiBpbnZhbGlkCi0gIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCi0KLS0gSXNzdWUgIzczNzI6IEZpeCBwc3RhdHMgcmVncmVzc2lvbiB3aGVuIHN0cmlwcGluZyBwYXRocyBmcm9tIHByb2ZpbGUKLSAgZGF0YSBnZW5lcmF0ZWQgd2l0aCB0aGUgcHJvZmlsZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzQxMDg6IEluIHVybGxpYi5yb2JvdHBhcnNlciwgaWYgdGhlcmUgYXJlIG11bHRpcGxlICdVc2VyLWFnZW50OiAqJwotICBlbnRyaWVzLCBjb25zaWRlciB0aGUgZmlyc3Qgb25lLgotCi0tIElzc3VlICM4Mzk3OiBSYWlzZSBhbiBlcnJvciB3aGVuIGF0dGVtcHRpbmcgdG8gbWl4IGl0ZXJhdGlvbiBhbmQgcmVndWxhcgotICByZWFkcyBvbiBhIEJaMkZpbGUgb2JqZWN0LCByYXRoZXIgdGhhbiByZXR1cm5pbmcgaW5jb3JyZWN0IHJlc3VsdHMuCi0KLS0gSXNzdWUgIzUyOTQ6IEZpeCB0aGUgYmVoYXZpb3Igb2YgcGRiJ3MgImNvbnRpbnVlIiBjb21tYW5kIHdoZW4gY2FsbGVkCi0gIGluIHRoZSB0b3AtbGV2ZWwgZGVidWdnZWQgZnJhbWUuCi0KLS0gSXNzdWUgIzU3Mjc6IFJlc3RvcmUgdGhlIGFiaWxpdHkgdG8gdXNlIHJlYWRsaW5lIHdoZW4gY2FsbGluZyBpbnRvIHBkYgotICBpbiBkb2N0ZXN0cy4KLQotLSBJc3N1ZSAjNjcxOTogSW4gcGRiLCBkbyBub3Qgc3RvcCBzb21ld2hlcmUgaW4gdGhlIGVuY29kaW5ncyBtYWNoaW5lcnkKLSAgaWYgdGhlIHNvdXJjZSBmaWxlIHRvIGJlIGRlYnVnZ2VkIGlzIGluIGEgbm9uLWJ1aWx0aW4gZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzgwNDg6IFByZXZlbnQgZG9jdGVzdHMgZnJvbSBmYWlsaW5nIHdoZW4gc3lzLmRpc3BsYXlob29rIGhhcwotICBiZWVuIHJlYXNzaWduZWQuCi0KLS0gSXNzdWUgIzgwMTU6IEluIHBkYiwgZG8gbm90IGNyYXNoIHdoZW4gYW4gZW1wdHkgbGluZSBpcyBlbnRlcmVkIGFzCi0gIGEgYnJlYWtwb2ludCBjb21tYW5kLgotCi0tIElzc3VlICM5NDQ4OiBGaXggYSBsZWFrIG9mIE9TIHJlc291cmNlcyAobXV0ZXhlcyBvciBzZW1hcGhvcmVzKSB3aGVuCi0gIHJlLWluaXRpYWxpemluZyBhIGJ1ZmZlcmVkIElPIG9iamVjdCBieSBjYWxsaW5nIGl0cyBgYF9faW5pdF9fYGAgbWV0aG9kLgotCi0tIElzc3VlICM3OTA5OiBEbyBub3QgdG91Y2ggcGF0aHMgd2l0aCB0aGUgc3BlY2lhbCBwcmVmaXhlcyBgYFxcLlxgYAotICBvciBgYFxcP1xgYCBpbiBudHBhdGgubm9ybXBhdGgoKS4KLQotLSBJc3N1ZSAjNTE0NjogSGFuZGxlIFVJRCBUSFJFQUQgY29tbWFuZCBjb3JyZWN0bHkgaW4gaW1hcGxpYi4KLQotLSBJc3N1ZSAjNTE0NzogRml4IHRoZSBoZWFkZXIgZ2VuZXJhdGVkIGZvciBjb29raWUgZmlsZXMgd3JpdHRlbiBieQotICBodHRwLmNvb2tpZWphci5Nb3ppbGxhQ29va2llSmFyLgotCi0tIElzc3VlICM4MTk4OiBJbiBweWRvYywgb3V0cHV0IGFsbCBoZWxwIHRleHQgdG8gdGhlIGNvcnJlY3Qgc3RyZWFtCi0gIHdoZW4gc3lzLnN0ZG91dCBpcyByZWFzc2lnbmVkLgotCi0tIElzc3VlICM3Mzk1OiBGaXggdHJhY2ViYWNrcyBpbiBwc3RhdHMgaW50ZXJhY3RpdmUgYnJvd3Nlci4KLQotLSBJc3N1ZSAjODIzMDogRml4IExpYi90ZXN0L3NvcnRwZXJmLnB5LgotCi0tIElzc3VlICMxNzEzOiBGaXggb3MucGF0aC5pc21vdW50KCksIHdoaWNoIHJldHVybmVkIHRydWUgZm9yIHN5bWJvbGljIGxpbmtzCi0gIGFjcm9zcyBkZXZpY2VzLgotCi0tIElzc3VlICM4ODI2OiBQcm9wZXJseSBsb2FkIG9sZC1zdHlsZSAiZXhwaXJlcyIgYXR0cmlidXRlIGluIGh0dHAuY29va2llcy4KLQotLSBJc3N1ZSAjMTY5MDEwMzogRml4IGluaXRpYWwgbmFtZXNwYWNlIGZvciBjb2RlIHJ1biB3aXRoIHRyYWNlLm1haW4oKS4KLQotLSBJc3N1ZSAjODQ3MTogSW4gZG9jdGVzdCwgcHJvcGVybHkgcmVzZXQgdGhlIG91dHB1dCBzdHJlYW0gdG8gYW4gZW1wdHkKLSAgc3RyaW5nIHdoZW4gVW5pY29kZSB3YXMgcHJldmlvdXNseSBvdXRwdXQuCi0KLS0gSXNzdWUgIzg2MjA6IHdoZW4gYSBDbWQgaXMgZmVkIGlucHV0IHRoYXQgcmVhY2hlcyBFT0Ygd2l0aG91dCBhIGZpbmFsCi0gIG5ld2xpbmUsIGl0IG5vIGxvbmdlciB0cnVuY2F0ZXMgdGhlIGxhc3QgY2hhcmFjdGVyIG9mIHRoZSBsYXN0IGNvbW1hbmQgbGluZS4KLQotLSBJc3N1ZSAjNjIxMzogSW1wbGVtZW50IGdldHN0YXRlKCkgYW5kIHNldHN0YXRlKCkgbWV0aG9kcyBvZiB1dGYtOC1zaWcgYW5kCi0gIHV0Zi0xNiBpbmNyZW1lbnRhbCBlbmNvZGVycy4KLQotLSBJc3N1ZSAjNzExMzogU3BlZWQgdXAgbG9hZGluZyBpbiBDb25maWdQYXJzZXIuIFBhdGNoIGJ5IMWBdWthc3ogTGFuZ2EuCi0KLS0gSXNzdWUgIzM3MDQ6IGNvb2tpZWxpYiB3YXMgbm90IHByb3Blcmx5IGhhbmRsaW5nIFVSTHMgd2l0aCBhIC8gaW4gdGhlCi0gIHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzkwMzI6IFhNTC1SUEMgY2xpZW50IHJldHJpZXMgdGhlIHJlcXVlc3Qgb24gRVBJUEUgZXJyb3IuIFRoZSBFUElQRQotICBlcnJvciBvY2N1cnMgd2hlbiB0aGUgc2VydmVyIGNsb3NlcyB0aGUgc29ja2V0IGFuZCB0aGUgY2xpZW50IHNlbmRzIGEgYmlnCi0gIFhNTC1SUEMgcmVxdWVzdC4KLQotLSBJc3N1ZSAjNTU0MjogUmVtb3ZlIHNwZWNpYWwgbG9naWMgdGhhdCBjbG9zZXMgSFRUUENvbm5lY3Rpb24gc29ja2V0IG9uIEVQSVBFLgotCi0tIElzc3VlICM0NjI5OiBnZXRvcHQgcmFpc2VzIGFuIGVycm9yIGlmIGFuIGFyZ3VtZW50IGVuZHMgd2l0aCA9IHdoZXJlYXMgZ2V0b3B0Ci0gIGRvZXNuJ3QgZXhjZXB0IGEgdmFsdWUgKGVnLiAtLWhlbHA9IGlzIHJlamVjdGVkIGlmIGdldG9wdCB1c2VzIFsnaGVscD0nXSBsb25nCi0gIG9wdGlvbnMpLgotCi0tIElzc3VlICM3ODk1OiBwbGF0Zm9ybS5tYWNfdmVyKCkgbm8gbG9uZ2VyIGNyYXNoZXMgYWZ0ZXIgY2FsbGluZyBvcy5mb3JrKCkKLQotLSBJc3N1ZSAjNTM5NTogYXJyYXkuZnJvbWZpbGUoKSB3b3VsZCByYWlzZSBhIHNwdXJpb3VzIEVPRkVycm9yIHdoZW4gYW4KLSAgSS9PIGVycm9yIG9jY3VycmVkLiAgTm93IGFuIElPRXJyb3IgaXMgcmFpc2VkIGluc3RlYWQuICBQYXRjaCBieSBjaHVjawotICAoSmFuIEhvc2FuZykuCi0KLS0gSXNzdWUgIzc2NDY6IFRoZSBmbm1hdGNoIHBhdHRlcm4gY2FjaGUgbm8gbG9uZ2VyIGdyb3dzIHdpdGhvdXQgYm91bmQuCi0KLS0gSXNzdWUgIzkxMzY6IEZpeCAnZGljdGlvbmFyeSBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbicKLSAgUnVudGltZUVycm9yIHByb2R1Y2VkIHdoZW4gcHJvZmlsaW5nIHRoZSBkZWNpbWFsIG1vZHVsZS4gIFRoaXMgd2FzCi0gIGR1ZSB0byBhIGRhbmdlcm91cyBpdGVyYXRpb24gb3ZlciAnbG9jYWxzKCknIGluIENvbnRleHQuX19pbml0X18uCi0KLS0gRml4IGV4dHJlbWUgc3BlZWQgaXNzdWUgaW4gRGVjaW1hbC5wb3cgd2hlbiB0aGUgYmFzZSBpcyBhbiBleGFjdAotICBwb3dlciBvZiAxMCBhbmQgdGhlIGV4cG9uZW50IGlzIHRpbnkgKGZvciBleGFtcGxlLAotICBEZWNpbWFsKDEwKSAqKiBEZWNpbWFsKCcxZS05OTk5OTk5OTknKSkuCi0KLS0gSXNzdWUgIzkxNjE6IEZpeCByZWdyZXNzaW9uIGluIG9wdHBhcnNlJ3MgYWNjZXB0YW5jZSBvZiB1bmljb2RlCi0gIHN0cmluZ3MgaW4gYWRkX29wdGlvbiBjYWxscy4KLQotLSBJc3N1ZSAjOTEzMDogRml4IHZhbGlkYXRpb24gb2YgcmVsYXRpdmUgaW1wb3J0cyBpbiBwYXJzZXIgbW9kdWxlLgotCi0tIElzc3VlICM5MTI4OiBGaXggdmFsaWRhdGlvbiBvZiBjbGFzcyBkZWNvcmF0b3JzIGluIHBhcnNlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzkxNjQ6IEVuc3VyZSBzeXNjb25maWcgaGFuZGxlcyBkdXBibGljZSBhcmNocyB3aGlsZSBidWlsZGluZyBvbiBPU1gKLQotLSBJc3N1ZSAjOTMxNTogRml4IGZvciB0aGUgdHJhY2UgbW9kdWxlIHRvIHJlY29yZCBjb3JyZWN0IGNsYXNzIG5hbWUKLSAgZm9yIHRyYWNpbmcgbWV0aG9kcy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzkwNTQ6IEZpeCBhIGNyYXNoIG9jY3VycmluZyB3aGVuIHVzaW5nIHRoZSBweWV4cGF0IG1vZHVsZQotICB3aXRoIGV4cGF0IHZlcnNpb24gMi4wLjEuCi0KLS0gSXNzdWUgIzEwMDAzOiBBbGxvdyBoYW5kbGluZyBvZiBTSUdCUkVBSyBvbiBXaW5kb3dzLiBGaXhlcyBhIHJlZ3Jlc3Npb24KLSAgaW50cm9kdWNlZCBieSBpc3N1ZSAjOTMyNC4KLQotLSBJc3N1ZSAjODczNDogQXZvaWQgY3Jhc2ggaW4gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoKSB3aGVuIGFuIGludmFsaWQgZmlsZQotICBkZXNjcmlwdG9yIGlzIHByb3ZpZGVkLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCi0KLS0gSXNzdWUgIzc3MzY6IFJlbGVhc2UgdGhlIEdJTCBhcm91bmQgY2FsbHMgdG8gb3BlbmRpcigpIGFuZCBjbG9zZWRpcigpCi0gIGluIHRoZSBwb3NpeCBtb2R1bGUuICBQYXRjaCBieSBNYXJjaW4gQmFjaHJ5LgotCi0tIEFzIGEgcmVzdWx0IG9mIGlzc3VlICMyNTIxLCB0aGUgX3dlYWtyZWYgbW9kdWxlIGlzIG5vdyBjb21waWxlZCBpbnRvIHRoZQotICBpbnRlcnByZXRlciBieSBkZWZhdWx0LgotCi0tIElzc3VlICM5MzI0OiBBZGQgcGFyYW1ldGVyIHZhbGlkYXRpb24gdG8gc2lnbmFsLnNpZ25hbCBvbiBXaW5kb3dzIGluIG9yZGVyCi0gIHRvIHByZXZlbnQgY3Jhc2hlcy4KLQotLSBJc3N1ZSAjOTUyNjogUmVtb3ZlIHNvbWUgb3V0ZGF0ZWQgKGludCkgY2FzdHMgdGhhdCB3ZXJlIHByZXZlbnRpbmcKLSAgdGhlIGFycmF5IG1vZHVsZSBmcm9tIHdvcmtpbmcgY29ycmVjdGx5IHdpdGggYXJyYXlzIG9mIG1vcmUgdGhhbgotICAyKiozMSBlbGVtZW50cy4KLQotLSBGaXggbWVtb3J5IGxlYWsgaW4gc3NsLl9zc2wuX3Rlc3RfZGVjb2RlX2NlcnQuCi0KLS0gSXNzdWUgIzgwNjU6IEZpeCBtZW1vcnkgbGVhayBpbiByZWFkbGluZSBtb2R1bGUgKGZyb20gZmFpbHVyZSB0bwotICBmcmVlIHRoZSByZXN1bHQgb2YgaGlzdG9yeV9nZXRfaGlzdG9yeV9zdGF0ZSgpKS4KLQotLSBJc3N1ZSAjOTQ1MDogRml4IG1lbW9yeSBsZWFrIGluIHJlYWRsaW5lLnJlcGxhY2VfaGlzdG9yeV9pdGVtIGFuZAotICByZWFkbGluZS5yZW1vdmVfaGlzdG9yeV9pdGVtIGZvciByZWFkbGluZSB2ZXJzaW9uID49IDUuMC4KLQotLSBJc3N1ZSAjODEwNTogVmFsaWRhdGUgZmlsZSBkZXNjcmlwdG9yIHBhc3NlZCB0byBtbWFwLm1tYXAgb24gV2luZG93cy4KLQotLSBJc3N1ZSAjMTAxOTg4MjogRml4IEluZGV4RXJyb3Igd2hlbiBsb2FkaW5nIGNlcnRhaW4gaG90c2hvdCBzdGF0cy4KLQotLSBJc3N1ZSAjOTQyMjogRml4IG1lbW9yeSBsZWFrIHdoZW4gcmUtaW5pdGlhbGl6aW5nIGEgc3RydWN0LlN0cnVjdCBvYmplY3QuCi0KLS0gSXNzdWUgIzc5MDA6IFRoZSBnZXRncm91cHMoMikgc3lzdGVtIGNhbGwgb24gTWFjT1NYIGJlaGF2ZXMgcmF0aGVyIG9kZGx5Ci0gIGNvbXBhcmVkIHRvIG90aGVyIHVuaXggc3lzdGVtcy4gSW4gcGFydGljdWxhciwgb3MuZ2V0Z3JvdXBzKCkgZG9lcwotICBub3QgcmVmbGVjdCBhbnkgY2hhbmdlcyBtYWRlIHVzaW5nIG9zLnNldGdyb3VwcygpIGJ1dCBiYXNpY2FsbHkgYWx3YXlzCi0gIHJldHVybnMgdGhlIHNhbWUgaW5mb3JtYXRpb24gYXMgdGhlIGlkIGNvbW1hbmQuCi0KLSAgb3MuZ2V0Z3JvdXBzKCkgY2FuIG5vdyByZXR1cm4gbW9yZSB0aGFuIDE2IGdyb3VwcyBvbiBNYWNPU1guCi0KLS0gSXNzdWUgIzkyNzc6IEZpeCBidWcgaW4gc3RydWN0LnBhY2sgZm9yIGJvb2xzIGluIHN0YW5kYXJkIG1vZGUKLSAgKGUuZy4sIHN0cnVjdC5wYWNrKCc+PycpKTogaWYgY29udmVyc2lvbiB0byBib29sIHJhaXNlZCBhbiBleGNlcHRpb24KLSAgdGhlbiB0aGF0IGV4Y2VwdGlvbiB3YXNuJ3QgcHJvcGVybHkgcHJvcGFnYXRlZCBvbiBtYWNoaW5lcyB3aGVyZQotICBjaGFyIGlzIHVuc2lnbmVkLgotCi0tIElzc3VlICM3NTY3OiBEb24ndCBjYWxsIGBzZXR1cHRlcm0nIHR3aWNlLgotCi1Ub29scy9EZW1vcwotLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNzI4NzogRGVtby9pbXB1dGlsL2tuZWUucHkgd2FzIHJlbW92ZWQuCi0KLS0gSXNzdWUgIzkxODg6IFRoZSBnZGIgZXh0ZW5zaW9uIG5vdyBoYW5kbGVzIGNvcnJlY3RseSBuYXJyb3cgKFVDUzIpIGFzIHdlbGwKLSAgYXMgd2lkZSAoVUNTNCkgdW5pY29kZSBidWlsZHMgZm9yIGJvdGggdGhlIGhvc3QgaW50ZXJwcmV0ZXIgKGVtYmVkZGVkCi0gIGluc2lkZSBnZGIpIGFuZCB0aGUgaW50ZXJwcmV0ZXIgdW5kZXIgdGVzdC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzg4NTI6IEFsbG93IHRoZSBzb2NrZXQgbW9kdWxlIHRvIGJ1aWxkIG9uIE9wZW5Tb2xhcmlzLgotCi0tIElzc3VlICMxMDA1NDogU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSB1aW50cHRyX3QgaW4gaW50dHlwZXMuaC4gIFBhdGNoIGJ5Ci0gIEFraXJhIEtpdGFkYS4KLQotLSBJc3N1ZSAjMTAwNTU6IE1ha2UganNvbiBDODktY29tcGxpYW50IGluIFVDUzQgbW9kZS4KLQotLSBJc3N1ZSAjMTYzMzg2MzogRG9uJ3QgaWdub3JlICRDQyB1bmRlciBBSVguCi0KLS0gSXNzdWUgIzk4MTA6IENvbXBpbGUgYnppcDIgc291cmNlIGZpbGVzIGluIHB5dGhvbidzIHByb2plY3QgZmlsZQotICBkaXJlY3RseS4gSXQgdXNlZCB0byBiZSBidWlsdCB3aXRoIGJ6aXAyJ3MgbWFrZWZpbGUuCi0KLS0gSXNzdWUgIzk0MTM0NjogSW1wcm92ZSB0aGUgYnVpbGQgcHJvY2VzcyB1bmRlciBBSVggYW5kIGFsbG93IFB5dGhvbiB0bwotICBiZSBidWlsdCBhcyBhIHNoYXJlZCBsaWJyYXJ5LiAgUGF0Y2ggYnkgU8OpYmFzdGllbiBTYWJsw6kuCi0KLS0gSXNzdWUgIzQwMjY6IE1ha2UgdGhlIGZjbnRsIGV4dGVuc2lvbiBidWlsZCB1bmRlciBBSVguICBQYXRjaCBieSBTw6liYXN0aWVuCi0gIFNhYmzDqS4KLQotLSBJc3N1ZSAjMzEwMTogSGVscGVyIGZ1bmN0aW9ucyBfYWRkX29uZV90b19pbmRleF9DKCkgYW5kCi0gIF9hZGRfb25lX3RvX2luZGV4X0YoKSBiZWNvbWUgX1B5X2FkZF9vbmVfdG9faW5kZXhfQygpIGFuZAotICBfUHlfYWRkX29uZV90b19pbmRleF9GKCksIHJlc3BlY3RpdmVseS4KLQotLSBJc3N1ZSAjOTcwMDogZGVmaW5lIEhBVkVfQlJPS0VOX1BPU0lYX1NFTUFQSE9SRVMgdW5kZXIgQUlYIDYueC4gIFBhdGNoIGJ5Ci0gIFPDqWJhc3RpZW4gU2FibMOpLgotCi0tIElzc3VlICM5MjgwOiBNYWtlIHNoYXJlZGluc3RhbGwgZGVwZW5kIG9uIHNoYXJlZG1vZHMuCi0KLS0gSXNzdWUgIzkyNzU6IFRoZSBPU1ggaW5zdGFsbGVyIG9uY2UgYWdhaW4gaW5zdGFsbHMgbGlua3MgdG8gYmluYXJpZXMgaW4KLSAgYGAvdXNyL2xvY2FsL2JpbmBgLgotCi0tIElzc3VlICM5MzkyOiBBIGZyYW1ld29yayBidWlsZCBvbiBPU1ggd2lsbCBvbmNlIGFnYWluIHVzZSBhIHZlcnNpb25lZCBuYW1lCi0gIG9mIHRoZSBgYDJ0bzNgYCB0b29sLCB0aGF0IGlzIHlvdSBjYW4gdXNlIGBgMnRvMy0yLjdgYCB0byBzZWxlY3QgdGhlIFB5dGhvbgotICAyLjcgZWRpdGlvbiBvZiAydG8zLgotCi0tIElzc3VlICM5NzAxOiBUaGUgTWFjT1NYIGluc3RhbGxlciBjYW4gcGF0Y2ggdGhlIHNoZWxsIHByb2ZpbGUgdG8gZW5zdXJlIHRoYXQKLSAgdGhlICJiaW4iIGRpcmVjdG9yeSBpbnNpZGUgdGhlIGZyYW1ld29yayBpcyBvbiB0aGUgc2hlbGwncyBzZWFyY2ggcGF0aC4gVGhpcwotICBmZWF0dXJlIG5vdyBhbHNvIHN1cHBvcnRzIHRoZSBaU0ggc2hlbGwuCi0KLS0gSXNzdWUgIzc0NzM6IGF2b2lkIGxpbmsgZXJyb3JzIHdoZW4gYnVpbGRpbmcgYSBmcmFtZXdvcmsgd2l0aCBhIGRpZmZlcmVudAotICBzZXQgb2YgYXJjaGl0ZWN0dXJlcyB0aGFuIHRoZSBvbmUgdGhhdCBpcyBjdXJyZW50bHkgaW5zdGFsbGVkLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjOTk3ODogV2FpdCB1bnRpbCBzdWJwcm9jZXNzIGNvbXBsZXRlcyBpbml0aWFsaXphdGlvbi4gKFdpbjMyS2lsbFRlc3RzCi0gIGluIHRlc3Rfb3MpCi0KLS0gSXNzdWUgIzk4OTQ6IERvIG5vdCBoYXJkY29kZSBFTk9FTlQgaW4gdGVzdF9zdWJwcm9jZXNzLgotCi0tIElzc3VlICM5MzIzOiBNYWtlIHRlc3QucmVncnRlc3QuX19maWxlX18gYWJzb2x1dGUsIHRoaXMgd2FzIG5vdCBhbHdheXMgdGhlCi0gIGNhc2Ugd2hlbiBydW5uaW5nIHByb2ZpbGUgb3IgdHJhY2UsIGZvciBleGFtcGxlLgotCi0tIElzc3VlICM5MzE1OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHRyYWNlIG1vZHVsZS4gIFBhdGNoIGJ5IEVsaSBCZW5kZXJza3kuCi0KLS0gU3RyZW5ndGhlbiB0ZXN0X3VuaWNvZGUgd2l0aCBleHBsaWNpdCB0eXBlIGNoZWNraW5nIGZvciBhc3NlcnRFcXVhbCB0ZXN0cy4KLQotLSBJc3N1ZSAjODg1NzogUHJvdmlkZSBhIHRlc3QgY2FzZSBmb3Igc29ja2V0LmdldGFkZHJpbmZvLgotCi0tIElzc3VlICM3NTY0OiBTa2lwIHRlc3RfaW9jdGwgaWYgYW5vdGhlciBwcm9jZXNzIGlzIGF0dGFjaGVkIHRvIC9kZXYvdHR5LgotCi0tIElzc3VlICM4NDMzOiBGaXggdGVzdF9jdXJzZXMgZmFpbHVyZSB3aXRoIG5ld2VyIHZlcnNpb25zIG9mIG5jdXJzZXMuCi0KLS0gSXNzdWUgIzk0OTY6IFByb3ZpZGUgYSB0ZXN0IHN1aXRlIGZvciB0aGUgcmxjb21wbGV0ZXIgbW9kdWxlLiAgUGF0Y2ggYnkKLSAgTWljaGVsZSBPcnLDuS4KLQotLSBJc3N1ZSAjODYwNTogU2tpcCB0ZXN0X2dkYiBpZiBQeXRob24gaXMgY29tcGlsZWQgd2l0aCBvcHRpbWl6YXRpb25zLgotCi0tIElzc3VlICM5NTY4OiBGaXggdGVzdF91cmxsaWIyX2xvY2FsbmV0IG9uIE9TIFggMTAuMy4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM5ODE3OiBBZGQgZXhwYXQgQ09QWUlORyBmaWxlOyBhZGQgZXhwYXQsIGxpYmZmaSBhbmQgZXhwYXQgbGljZW5zZXMKLSAgdG8gRG9jL2xpY2Vuc2UucnN0LgotCi0tIElzc3VlICM5NTI0OiBEb2N1bWVudCB0aGF0IHR3byBDVFJMKiBzaWduYWxzIGFyZSBtZWFudCBmb3IgdXNlIG9ubHkKLSAgd2l0aCBvcy5raWxsLgotCi0tIElzc3VlICM5MjU1OiBEb2N1bWVudCB0aGF0IHRoZSAndGVzdCcgcGFja2FnZSBpcyBmb3IgaW50ZXJuYWwgUHl0aG9uIHVzZQotICBvbmx5LgotCi0tIElzc3VlICM3ODI5OiBEb2N1bWVudCBpbiBkaXMgdGhhdCBieXRlY29kZSBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi43PwotPT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDEwLTA3LTAzKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBQcmV2ZW50IGFzc2lnbm1lbnQgdG8gc2V0IGxpdGVyYWxzLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gSXNzdWUgIzE4Njg6IEVsaW1pbmF0ZSBzdWJ0bGUgdGltaW5nIGlzc3VlcyBpbiB0aHJlYWQtbG9jYWwgb2JqZWN0cyBieQotICBnZXR0aW5nIHJpZCBvZiB0aGUgY2FjaGVkIGNvcHkgb2YgdGhyZWFkLWxvY2FsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICM5MTI1OiBBZGQgcmVjb2duaXRpb24gb2YgJ2V4Y2VwdCAuLi4gYXMgLi4uJyBzeW50YXggdG8gcGFyc2VyIG1vZHVsZS4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzc2NzM6IEZpeCBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IChDVkUtMjAxMC0yMDg5KSBpbiB0aGUgYXVkaW9vcCBtb2R1bGUsCi0gIGVuc3VyZSB0aGF0IHRoZSBpbnB1dCBzdHJpbmcgbGVuZ3RoIGlzIGEgbXVsdGlwbGUgb2YgdGhlIGZyYW1lIHNpemUuCi0KLS0gSXNzdWUgIzkwNzU6IEluIHRoZSBzc2wgbW9kdWxlLCByZW1vdmUgdGhlIHNldHRpbmcgb2YgYSBgYGRlYnVnYGAgZmxhZwotICBvbiBhbiBPcGVuU1NMIHN0cnVjdHVyZS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcgcmVsZWFzZSBjYW5kaWRhdGUgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDEwLTA2LTIwKgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTA1ODogUmVtb3ZlIGFzc2VydGlvbnMgYWJvdXQgSU5UX01BWCBpbiBVbmljb2RlRGVjb2RlRXJyb3IuCi0KLS0gSXNzdWUgIzgyMDI6IFByZXZpb3VzIGNoYW5nZSB0byBgYHN5cy5hcmd2WzBdYGAgaGFuZGxpbmcgZm9yIC1tIGNvbW1hbmQgbGluZQotICBvcHRpb24gcmV2ZXJ0ZWQgZHVlIHRvIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzIG9uIGhhbmRsaW5nIG9mIGBgc3lzLnBhdGhgYC4KLSAgU2VlIHRyYWNrZXIgaXNzdWUgZm9yIGRldGFpbHMuCi0KLS0gSXNzdWUgIzg5NDE6IGRlY29kaW5nIGJpZyBlbmRpYW4gVVRGLTMyIGRhdGEgaW4gVUNTLTIgYnVpbGRzIGNvdWxkIGNyYXNoCi0gIHRoZSBpbnRlcnByZXRlciB3aXRoIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgQmFzaWMgTXVsdGlsaW5ndWFsIFBsYW5lCi0gIChoaWdoZXIgdGhhbiAweDEwMDAwKS4KLQotLSBJbiB0aGUgdW5pY29kZS9zdHIuZm9ybWF0KCksIHJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGluZGV4ZXMgdG8gYXJndW1lbnRzIGFyZQotICB0b28gbGFyZ2UuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICM4ODU0OiBGaXggZmluZGluZyBWaXN1YWwgU3R1ZGlvIDIwMDggb24gV2luZG93cyB4NjQuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjU4OTogY2xlYW51cCBhc3luY29yZS5zb2NrZXRfbWFwIGluIGNhc2Ugc210cGQuU01UUFNlcnZlciBjb25zdHJ1Y3RvcgotICByYWlzZXMgYW4gZXhjZXB0aW9uLgotCi0tIElzc3VlICM4OTU5OiBmaXggcmVncmVzc2lvbiBjYXVzZWQgYnkgdXNpbmcgdW5tb2RpZmllZCBsaWJmZmkKLSAgbGlicmFyeSBvbiBXaW5kb3dzLiAgY3R5cGVzIGRvZXMgbm93IGFnYWluIGNoZWNrIHRoZSBzdGFjayBiZWZvcmUKLSAgYW5kIGFmdGVyIGNhbGxpbmcgZm9yZWlnbiBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzg3MjA6IGZpeCByZWdyZXNzaW9uIGNhdXNlZCBieSBmaXggZm9yICM0MDUwIGJ5IG1ha2luZyBnZXRzb3VyY2VmaWxlCi0gIHNtYXJ0IGVub3VnaCB0byBmaW5kIHNvdXJjZSBmaWxlcyBpbiB0aGUgbGluZWNhY2hlLgotCi0tIElzc3VlICM4OTg2OiBtYXRoLmVyZmMgd2FzIGluY29ycmVjdGx5IHJhaXNpbmcgT3ZlcmZsb3dFcnJvciBmb3IKLSAgdmFsdWVzIGJldHdlZW4gLTI3LjMgYW5kIC0zMC4wIG9uIHNvbWUgcGxhdGZvcm1zLgotCi0tIElzc3VlICM4OTI0OiBsb2dnaW5nOiBJbXByb3ZlZCBlcnJvciBoYW5kbGluZyBmb3IgVW5pY29kZSBpbiBleGNlcHRpb24gdGV4dC4KLQotLSBJc3N1ZSAjODk0ODogY2xlYW51cCBmdW5jdGlvbnMgYW5kIGNsYXNzIC8gbW9kdWxlIHNldHVwcyBhbmQgdGVhcmRvd25zIGFyZQotICBub3cgaG9ub3JlZCBpbiB1bml0dGVzdCBkZWJ1ZyBtZXRob2RzLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzg5MDk6IEFkZGVkIHRoZSBzaXplIG9mIHRoZSBiaXRtYXAgdXNlZCBpbiB0aGUgaW5zdGFsbGVyIGNyZWF0ZWQgYnkKLSAgZGlzdHV0aWxzJyBiZGlzdF93aW5pbnN0LiBQYXRjaCBieSBBbmF0b2x5IFRlY2h0b25pay4KLQotTWlzYwotLS0tLQotCi0tIElzc3VlICM4MzYyOiBBZGQgbWFpbnRhaW5lcnMucnN0OiBsaXN0IG9mIG1vZHVsZSBtYWludGFpbmVycwotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNyBSZWxlYXNlIENhbmRpZGF0ZSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMTAtMDYtMDUqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM4MjcxOiBkdXJpbmcgdGhlIGRlY29kaW5nIG9mIGFuIGludmFsaWQgVVRGLTggYnl0ZSBzZXF1ZW5jZSwgb25seSB0aGUKLSAgc3RhcnQgYnl0ZSBhbmQgdGhlIGNvbnRpbnVhdGlvbiBieXRlKHMpIGFyZSBub3cgY29uc2lkZXJlZCBpbnZhbGlkLCBpbnN0ZWFkCi0gIG9mIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3BlY2lmaWVkIGJ5IHRoZSBzdGFydCBieXRlLgotICBFLmcuOiAnXHhmMVx4ODBBQicuZGVjb2RlKCd1dGYtOCcsICdyZXBsYWNlJykgbm93IHJldHVybnMgdSdcdWZmZmRBQicgYW5kCi0gIHJlcGxhY2VzIHdpdGggVStGRkZEIG9ubHkgdGhlIHN0YXJ0IGJ5dGUgKCdceGYxJykgYW5kIHRoZSBjb250aW51YXRpb24gYnl0ZQotICAoJ1x4ODAnKSBldmVuIGlmICdceGYxJyBpcyB0aGUgc3RhcnQgYnl0ZSBvZiBhIDQtYnl0ZXMgc2VxdWVuY2UuCi0gIFByZXZpb3VzIHZlcnNpb25zIHJldHVybmVkIGEgc2luZ2xlIHUnXHVmZmZkJy4KLQotLSBJc3N1ZSAjODYyNzogUmVtb3ZlIGJvZ3VzICJPdmVycmlkaW5nIF9fY21wX18gYmxvY2tzIGluaGVyaXRhbmNlIG9mCi0gIF9faGFzaF9fIGluIDMueCIgd2FybmluZy4gIEFsc28gZml4ICJYWFggdW5kZXRlY3RlZCBlcnJvciIgdGhhdAotICBhcmlzZXMgZnJvbSB0aGUgIk92ZXJyaWRpbmcgX19lcV9fIGJsb2NrcyBpbmhlcml0YW5jZSAuLi4iIHdhcm5pbmcKLSAgd2hlbiB0dXJuZWQgaW50byBhbiBleGNlcHRpb246IGluIHRoaXMgY2FzZSB0aGUgZXhjZXB0aW9uIHNpbXBseQotICBnZXRzIGlnbm9yZWQuCi0KLS0gSXNzdWUgIzg3NDg6IEZpeCB0d28gaXNzdWVzIHdpdGggY29tcGFyaXNvbnMgYmV0d2VlbiBjb21wbGV4IGFuZCBpbnRlZ2VyCi0gIG9iamVjdHMuICAoMSkgVGhlIGNvbXBhcmlzb24gY291bGQgaW5jb3JyZWN0bHkgcmV0dXJuIFRydWUgaW4gc29tZSBjYXNlcwotICAoMioqNTMrMSA9PSBjb21wbGV4KDIqKjUzKSA9PSAyKio1MyksIGJyZWFraW5nIHRyYW5zaXZpdHkgb2YgZXF1YWxpdHkuCi0gICgyKSBUaGUgY29tcGFyaXNvbiByYWlzZWQgYW4gT3ZlcmZsb3dFcnJvciBmb3IgbGFyZ2UgaW50ZWdlcnMsIGxlYWRpbmcKLSAgdG8gdW5wcmVkaWN0YWJsZSBleGNlcHRpb25zIHdoZW4gY29tYmluaW5nIGludGVnZXJzIGFuZCBjb21wbGV4IG9iamVjdHMKLSAgaW4gc2V0cyBvciBkaWN0cy4KLQotLSBJc3N1ZSAjNTIxMTogSW1wbGljaXQgY29lcmNpb24gZm9yIHRoZSBjb21wbGV4IHR5cGUgaXMgbm93IGNvbXBsZXRlbHkKLSAgcmVtb3ZlZC4gIChDb2VyY2lvbiBmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zIHdhcyBhbHJlYWR5IHJlbW92ZWQgaW4gMi43Ci0gIGFscGhhIDQsIGJ1dCBjb2VyY2lvbiBmb3IgcmljaCBjb21wYXJpc29ucyB3YXMgYWNjaWRlbnRhbGx5IGxlZnQgaW4uKQotCi0tIElzc3VlICMzNzk4OiBXcml0ZSBzeXMuZXhpdCgpIG1lc3NhZ2UgdG8gc3lzLnN0ZGVyciB0byB1c2Ugc3RkZXJyIGVuY29kaW5nCi0gIGFuZCBlcnJvciBoYW5kbGVyLCBpbnN0ZWFkIG9mIHdyaXRpbmcgdG8gdGhlIEMgc3RkZXJyIGZpbGUgaW4gdXRmLTgKLQotLSBJc3N1ZSAjNzkwMjogV2hlbiB1c2luZyBleHBsaWNpdCByZWxhdGl2ZSBpbXBvcnQgc3ludGF4LCBkb24ndCB0cnkgaW1wbGljaXQKLSAgcmVsYXRpdmUgaW1wb3J0IHNlbWFudGljcy4KLQotLSBJc3N1ZSAjNzA3OTogRml4IGEgcG9zc2libGUgY3Jhc2ggd2hlbiBjbG9zaW5nIGEgZmlsZSBvYmplY3Qgd2hpbGUgdXNpbmcgaXQKLSAgZnJvbSBhbm90aGVyIHRocmVhZC4gIFBhdGNoIGJ5IERhbmllbCBTdHV0emJhY2guCi0KLS0gSXNzdWUgIzg4Njg6IEZpeCB0aGF0IGVuc3VyZXMgdGhhdCBweXRob24gc2NyaXB0cyBoYXZlIGFjY2VzcyB0byB0aGUKLSAgV2luZG93IFNlcnZlciBhZ2FpbiBpbiBhIGZyYW1ld29yayBidWlsZCBvbiBNYWNPU1ggMTAuNSBvciBlYXJsaWVyLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjNTc1MzogQSBuZXcgQyBBUEkgZnVuY3Rpb24sIDpjZnVuYzpgUHlTeXNfU2V0QXJndkV4YCwgYWxsb3dzIGVtYmVkZGVycwotICBvZiB0aGUgaW50ZXJwcmV0ZXIgdG8gc2V0IHN5cy5hcmd2IHdpdGhvdXQgYWxzbyBtb2RpZnlpbmcgc3lzLnBhdGguICBUaGlzCi0gIGhlbHBzIGZpeCBgQ1ZFLTIwMDgtNTk4MwotICA8aHR0cDovL2N2ZS5taXRyZS5vcmcvY2dpLWJpbi9jdmVuYW1lLmNnaT9uYW1lPUNWRS0yMDA4LTU5ODM+YF8uCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjODMwMjogU2tpcFRlc3QgaW4gdW5pdHRlc3QuVGVzdENhc2Uuc2V0VXBDbGFzcyBvciBzZXRVcE1vZHVsZSBpcyBub3cKLSAgcmVwb3J0ZWQgYXMgYSBza2lwIHJhdGhlciB0aGFuIGFuIGVycm9yLgotCi0tIElzc3VlICM4MzUxOiBFeGNlc3NpdmVseSBsYXJnZSBkaWZmcyBkdWUgdG8KLSAgdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0U2VxdWVuY2VFcXVhbCBhcmUgbm8gbG9uZ2VyIGluY2x1ZGVkIGluIGZhaWx1cmUKLSAgcmVwb3J0cy4KLQotLSBJc3N1ZSAjODg5OTogdGltZS5zdHJ1Y3RfdGltZSBub3cgaGFzIGNsYXNzIGFuZCBhdHRyaWJ1dGUgZG9jc3RyaW5ncy4KLQotLSBJc3N1ZSAjNDQ4NzogZW1haWwgbm93IGFjY2VwdHMgYXMgY2hhcnNldCBhbGlhc2VzIGFsbCBjb2RlYyBhbGlhc2VzCi0gIGFjY2VwdGVkIGJ5IHRoZSBjb2RlY3MgbW9kdWxlLgotCi0tIElzc3VlICM2NDcwOiBEcm9wIFVOQyBwcmVmaXggaW4gRml4VGsuCi0KLS0gSXNzdWUgIzU2MTA6IGZlZWRwYXJzZXIgbm8gbG9uZ2VyIGVhdHMgZXh0cmEgY2hhcmFjdGVycyBhdCB0aGUgZW5kIG9mCi0gIGEgYm9keSBwYXJ0IGlmIHRoZSBib2R5IHBhcnQgZW5kcyB3aXRoIGEgXHJcbi4KLQotLSBJc3N1ZSAjODgzMzogdGFyZmlsZSBjcmVhdGVkIGhhcmQgbGluayBlbnRyaWVzIHdpdGggYSBzaXplIGZpZWxkICE9IDAgYnkKLSAgbWlzdGFrZS4KLQotLSBJc3N1ZSAjMTM2ODI0Nzogc2V0X2NoYXJzZXQgKGFuZCB0aGVyZWZvcmUgTUlNRVRleHQpIG5vdyBhdXRvbWF0aWNhbGx5Ci0gIGVuY29kZXMgYSB1bmljb2RlIF9wYXlsb2FkIHRvIHRoZSBvdXRwdXRfY2hhcnNldC4KLQotLSBJc3N1ZSAjNzE1MDogUmFpc2UgT3ZlcmZsb3dFcnJvciBpZiB0aGUgcmVzdWx0IG9mIGFkZGluZyBvciBzdWJ0cmFjdGluZwotICB0aW1lZGVsdGEgZnJvbSBkYXRlIG9yIGRhdGV0aW1lIGZhbGxzIG91dHNpZGUgb2YgdGhlIE1JTllFQVI6TUFYWUVBUiByYW5nZS4KLQotLSBJc3N1ZSAjNjY2MjogRml4IHBhcnNpbmcgb2YgbWFsZm9ybWF0dGVkIGNoYXJyZWYgKCYjYmFkOyksIHBhdGNoIHdyaXR0ZW4gYnkKLSAgRnJlZHJpayBIw6XDpXJkCi0KLS0gSXNzdWUgIzgwMTY6IEFkZCB0aGUgQ1A4NTggY29kZWMuCi0KLS0gSXNzdWUgIzM5MjQ6IElnbm9yZSBjb29raWVzIHdpdGggaW52YWxpZCAidmVyc2lvbiIgZmllbGQgaW4gY29va2llbGliLgotCi0tIElzc3VlICM2MjY4OiBGaXggc2VlaygpIG1ldGhvZCBvZiBjb2RlY3Mub3BlbigpLCBkb24ndCByZWFkIG9yIHdyaXRlIHRoZSBCT00KLSAgdHdpY2UgYWZ0ZXIgc2VlaygwKS4gRml4IGFsc28gcmVzZXQoKSBtZXRob2Qgb2YgY29kZWNzLCBVVEYtMTYsIFVURi0zMiBhbmQKLSAgU3RyZWFtV3JpdGVyIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzU2NDA6IEZpeCBTaGlmdC1KSVMgaW5jcmVtZW50YWwgZW5jb2RlciBmb3IgZXJyb3IgaGFuZGxlcnMgZGlmZmVyZW50Ci0gIHRoYW4gJ3N0cmljdCcuCi0KLS0gSXNzdWUgIzg3ODI6IEFkZCBhIHRyYWlsaW5nIG5ld2xpbmUgaW4gbGluZWNhY2hlLnVwZGF0ZWNhY2hlIHRvIHRoZSBsYXN0IGxpbmUKLSAgb2YgZmlsZXMgd2l0aG91dCBvbmUuCi0KLS0gSXNzdWUgIzg3Mjk6IFJldHVybiBOb3RJbXBsZW1lbnRlZCBmcm9tIGBgY29sbGVjdGlvbnMuTWFwcGluZy5fX2VxX18oKWBgIHdoZW4KLSAgY29tcGFyaW5nIHRvIGEgbm9uLW1hcHBpbmcuCi0KLS0gSXNzdWUgIzg3NTk6IEZpeCB1c2VyIHBhdGhzIGluIHN5c2NvbmZpZyBmb3IgcG9zaXggYW5kIG9zMiBzY2hlbWVzLgotCi0tIElzc3VlICMxMjg1MDg2OiBTcGVlZCB1cCBgYHVybGxpYi5xdW90ZSgpYGAgYW5kIHVybGxpYi51bnF1b3RlIGZvciBzaW1wbGUKLSAgY2FzZXMuCi0KLS0gSXNzdWUgIzg2ODg6IERpc3R1dGlscyBub3cgcmVjYWxjdWxhdGVzIE1BTklGRVNUIGV2ZXJ5IHRpbWUuCi0KLS0gSXNzdWUgIzUwOTk6IFRoZSBgYF9fZGVsX18oKWBgIG1ldGhvZCBvZiBgYHN1YnByb2Nlc3MuUG9wZW5gYCAoYW5kIHRoZSBtZXRob2RzCi0gIGl0IGNhbGxzKSByZWZlcmVuY2VkIGdsb2JhbCBvYmplY3RzLCBjYXVzaW5nIGVycm9ycyB0byBwb3AgdXAgZHVyaW5nCi0gIGludGVycHJldGVyIHNodXRkb3duLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNzM4NDogSWYgdGhlIHN5c3RlbSByZWFkbGluZSBsaWJyYXJ5IGlzIGxpbmtlZCBhZ2FpbnN0IG5jdXJzZXMsCi0gIHRoZSBjdXJzZXMgbW9kdWxlIG11c3QgYmUgbGlua2VkIGFnYWluc3QgbmN1cnNlcyBhcyB3ZWxsLiBPdGhlcndpc2UgaXQKLSAgaXMgbm90IHNhZmUgdG8gbG9hZCBib3RoIHRoZSByZWFkbGluZSBhbmQgY3Vyc2VzIG1vZHVsZXMgaW4gYW4gYXBwbGljYXRpb24uCi0KLS0gSXNzdWUgIzI4MTA6IEZpeCBjYXNlcyB3aGVyZSB0aGUgV2luZG93cyByZWdpc3RyeSBBUEkgcmV0dXJucwotICBFUlJPUl9NT1JFX0RBVEEsIHJlcXVpcmluZyBhIHJlLXRyeSBpbiBvcmRlciB0byBnZXQgdGhlIGNvbXBsZXRlIHJlc3VsdC4KLQotLSBJc3N1ZSAjODY3NDogRml4ZWQgYSBudW1iZXIgb2YgaW5jb3JyZWN0IG9yIHVuZGVmaW5lZC1iZWhhdmlvdXItaW5kdWNpbmcKLSAgb3ZlcmZsb3cgY2hlY2tzIGluIHRoZSBgYGF1ZGlvb3BgYCBtb2R1bGUuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM4ODg5OiB0ZXN0X3N1cHBvcnQudHJhbnNpZW50X2ludGVybmV0IHJld3JpdHRlbiBzbyB0aGF0IHRoZSBuZXcKLSAgY2hlY2tzIGFsc28gd29yayBvbiBGcmVlQlNELCB3aGljaCBsYWNrcyBFQUlfTk9EQVRBLgotCi0tIElzc3VlICM4ODM1OiB0ZXN0X3N1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCkgY2F0Y2hlcyBnYWllcnJvcihFQUlfTk9OQU1FKQotICBhbmQgZ2FpZXJyb3IoRUFJX05PREFUQSkKLQotLSBJc3N1ZSAjNzQ0OTogU2tpcCB0ZXN0X3NvY2tldHNlcnZlciBpZiB0aHJlYWRpbmcgc3VwcG9ydCBpcyBkaXNhYmxlZAotCi0tIE9uIGRhcndpbiwgYGB0ZXN0X3NpdGVgYCBhc3N1bWVkIHRoYXQgYSBmcmFtZXdvcmsgYnVpbGQgd2FzIGJlaW5nIHVzZWQsCi0gIGxlYWRpbmcgdG8gYSBmYWlsdXJlIHdoZXJlIGZvdXIgZGlyZWN0b3JpZXMgd2VyZSBleHBlY3RlZCBmb3Igc2l0ZS1wYWNrYWdlcwotICBpbnN0ZWFkIG9mIHR3byBpbiBhIG5vbi1mcmFtZXdvcmsgYnVpbGQuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIERpc3BsYXkgaW5zdGFsbGVyIHdhcm5pbmcgdGhhdCBXaW5kb3dzIDIwMDAgd29uJ3QgYmUgc3VwcG9ydGVkIGluIGZ1dHVyZQotICByZWxlYXNlcy4KLQotLSBJc3N1ZXMgIzE3NTkxNjksICM4ODY0OiBEcm9wIF9YT1BFTl9TT1VSQ0Ugb24gU29sYXJpcywgZGVmaW5lIGl0IGZvcgotICBtdWx0aXByb2Nlc3Npbmcgb25seS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzU0NjQ6IEltcGxlbWVudCBwbHVyYWwgZm9ybXMgaW4gbXNnZm10LnB5LgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNyBiZXRhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDEwLTA1LTA4KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBSdW4gQ2xhbmcgMi43J3Mgc3RhdGljIGFuYWx5emVyIGZvciBgYE9iamVjdHMvYGAgYW5kIGBgUHl0aG9uL2BgLgotCi0tIElzc3VlICMxNTMzOiBGaXggaW5jb25zaXN0ZW5jeSBpbiByYW5nZSBmdW5jdGlvbiBhcmd1bWVudCBwcm9jZXNzaW5nOiBhbnkKLSAgbm9uLWZsb2F0IG5vbi1pbnRlZ2VyIGFyZ3VtZW50IGlzIG5vdyBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlciAoaWYgcG9zc2libGUpCi0gIHVzaW5nIGl0cyBfX2ludF9fIG1ldGhvZC4gIFByZXZpb3VzbHksIG9ubHkgc21hbGwgYXJndW1lbnRzIHdlcmUgdHJlYXRlZCB0aGlzCi0gIHdheTsgbGFyZ2VyIGFyZ3VtZW50cyAodGhvc2Ugd2hvc2UgX19pbnRfXyB3YXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YgYSBDIGxvbmcpCi0gIHdvdWxkIHByb2R1Y2UgYSBUeXBlRXJyb3IuCi0KLS0gSXNzdWUgIzgyMDI6IGBgc3lzLmFyZ3ZbMF1gYCBpcyBub3cgc2V0IHRvICctbScgaW5zdGVhZCBvZiAnLWMnIHdoZW4gc2VhcmNoaW5nCi0gIGZvciB0aGUgbW9kdWxlIGZpbGUgdG8gYmUgZXhlY3V0ZWQgd2l0aCB0aGUgLW0gY29tbWFuZCBsaW5lIG9wdGlvbi4KLQotLSBJc3N1ZSAjNzMxOTogV2hlbiAtUSBpcyB1c2VkLCBkbyBub3Qgc2lsZW5jZSBEZXByZWNhdGlvbldhcm5pbmcuCi0KLS0gSXNzdWUgIzczMzI6IFJlbW92ZSB0aGUgMTZLQiBzdGFjay1iYXNlZCBidWZmZXIgaW4KLSAgYGBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZWBgLCB3aGljaCBkb2Vzbid0IGJyaW5nIGFueSBub3RpY2VhYmxlCi0gIGJlbmVmaXQgY29tcGFyZWQgdG8gdGhlIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gZmFsbGJhY2suICBQYXRjaCBieQotICBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCi0KLS0gSXNzdWUgIzg0MTc6IFJhaXNlIGFuIE92ZXJmbG93RXJyb3Igd2hlbiBhbiBpbnRlZ2VyIGxhcmdlciB0aGFuIHN5cy5tYXhzaXplIGlzCi0gIHBhc3NlZCB0byBieXRlYXJyYXkuCi0KLS0gSXNzdWUgIzcwNzI6IGBgaXNzcGFjZSgweGEwKWBgIGlzIHRydWUgb24gTWFjIE9TIFguCi0KLS0gSXNzdWUgIzg0MDQ6IEZpeCBzZXQgb3BlcmF0aW9ucyBvbiBkaWN0aW9uYXJ5IHZpZXdzLgotCi0tIElzc3VlICM4MDg0OiBQRVAgMzcwIG5vdyBjb25mb3JtcyB0byBzeXN0ZW0gY29udmVudGlvbnMgZm9yIGZyYW1ld29yayBidWlsZHMKLSAgb24gTWFjT1MgWC4gVGhhdCBpcywgYGBweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXJgYCB3aWxsIGluc3RhbGwgaW50bwotICBgYH4vTGlicmFyeS9QeXRob24vMi43YGAgaW5zdGVhZCBvZiBgYH4vLmxvY2FsYGAuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjODY4MTogTWFrZSB0aGUgemxpYiBtb2R1bGUncyBlcnJvciBtZXNzYWdlcyBtb3JlIGluZm9ybWF0aXZlIHdoZW4gdGhlCi0gIHpsaWIgaXRzZWxmIGRvZXNuJ3QgZ2l2ZSBhbnkgZGV0YWlsZWQgZXhwbGFuYXRpb24uCi0KLS0gSXNzdWUgIzg1NzE6IEZpeCBhbiBpbnRlcm5hbCBlcnJvciB3aGVuIGNvbXByZXNzaW5nIG9yIGRlY29tcHJlc3NpbmcgYSBjaHVuawotICBsYXJnZXIgdGhhbiAxR0Igd2l0aCB0aGUgemxpYiBtb2R1bGUncyBjb21wcmVzc29yIGFuZCBkZWNvbXByZXNzb3Igb2JqZWN0cy4KLQotLSBJc3N1ZSAjODU3MzogYXN5bmNvcmUgYGBfc3RyZXJyb3IoKWBgIGZ1bmN0aW9uIG1pZ2h0IHRocm93IFZhbHVlRXJyb3IuCi0KLS0gSXNzdWUgIzg0ODM6IGFzeW5jb3JlLmRpc3BhdGNoZXIncyBfX2dldGF0dHJfXyBtZXRob2QgcHJvZHVjZWQgY29uZnVzaW5nIGVycm9yCi0gIG1lc3NhZ2VzIHdoZW4gYWNjZXNzaW5nIHVuZGVmaW5lZCBjbGFzcyBhdHRyaWJ1dGVzIGJlY2F1c2Ugb2YgdGhlIGNoZWFwCi0gIGluaGVyaXRhbmNlIHdpdGggdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4gIFRoZSBjaGVhcCBpbmhlcml0YW5jZSBoYXMgYmVlbgotICBkZXByZWNhdGVkLgotCi0tIElzc3VlICM0MjY1OiBgYHNodXRpbC5jb3B5ZmlsZSgpYGAgd2FzIGxlYWtpbmcgZmlsZSBkZXNjcmlwdG9ycyB3aGVuIGRpc2sKLSAgZmlsbHMuICBQYXRjaCBieSBUcmVzIFNlYXZlci4KLQotLSBJc3N1ZSAjNzc1NTogVXNlIGFuIHVuZW5jdW1iZXJlZCBhdWRpbyBmaWxlIGZvciB0ZXN0cy4KLQotLSBJc3N1ZSAjODYyMTogYGB1dWlkLnV1aWQ0KClgYCByZXR1cm5lZCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgaW4gdGhlCi0gIHBhcmVudCBhbmQgYW55IGNoaWxkcmVuIGNyZWF0ZWQgdXNpbmcgYGBvcy5mb3JrYGAgb24gTWFjIE9TIFggMTAuNi4KLQotLSBJc3N1ZSAjODMxMzogYGB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KClgYCBlbmNvZGVzIHVuaWNvZGUgbWVzc2FnZSB0bwotICBBU0NJSSB3aXRoIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlciBpZiBgYHN0cih2YWx1ZSlgYCBmYWlsZWQuCi0KLS0gSXNzdWUgIzg1Njc6IEZpeCBwcmVjZWRlbmNlIG9mIHNpZ25hbHMgaW4gRGVjaW1hbCBtb2R1bGU6IHdoZW4gYSBEZWNpbWFsCi0gIG9wZXJhdGlvbiByYWlzZXMgbXVsdGlwbGUgc2lnbmFscyBhbmQgbW9yZSB0aGFuIG9uZSBvZiB0aG9zZSBzaWduYWxzIGlzCi0gIHRyYXBwZWQsIHRoZSBzcGVjaWZpY2F0aW9uIGRldGVybWluZXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBzaWduYWxzIHNob3VsZCBiZQotICBoYW5kbGVkLiAgSW4gbWFueSBjYXNlcyB0aGlzIG9yZGVyIHdhc24ndCBiZWluZyBmb2xsb3dlZCwgbGVhZGluZyB0byB0aGUgd3JvbmcKLSAgUHl0aG9uIGV4Y2VwdGlvbiBiZWluZyByYWlzZWQuCi0KLS0gSXNzdWUgIzc4NjU6IFRoZSBjbG9zZSgpIG1ldGhvZCBvZiA6bW9kOmBpb2Agb2JqZWN0cyBzaG91bGQgbm90IHN3YWxsb3cKLSAgZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhlIGltcGxpY2l0IGZsdXNoKCkuICBBbHNvIGVuc3VyZSB0aGF0IGNhbGxpbmcgY2xvc2UoKQotICBzZXZlcmFsIHRpbWVzIGlzIHN1cHBvcnRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgotCi0tIElzc3VlICM4NTc2OiBsb2dnaW5nIHVwZGF0ZWQgdG8gcmVtb3ZlIHVzYWdlIG9mIGZpbmRfdW51c2VkX3BvcnQoKS4KLQotLSBJc3N1ZSAjNDY4NzogRml4IGFjY3VyYWN5IG9mIGdhcmJhZ2UgY29sbGVjdGlvbiBydW50aW1lcyBkaXNwbGF5ZWQgd2l0aAotICBnYy5ERUJVR19TVEFUUy4KLQotLSBJc3N1ZSAjODM1NDogVGhlIHNpZ2ludGVycnVwdCBzZXR0aW5nIGlzIG5vdyBwcmVzZXJ2ZWQgZm9yIGFsbCBzaWduYWxzLCBub3QKLSAganVzdCBTSUdDSExELgotCi0tIElzc3VlICM3MTkyOiBgYHdlYmJyb3dzZXIuZ2V0KCJmaXJlZm94IilgYCBub3cgd29ya3Mgb24gTWFjIE9TIFgsIGFzIGRvZXMKLSAgYGB3ZWJicm93c2VyLmdldCgic2FmYXJpIilgYC4KLQotLSBJc3N1ZSAjODU3NzogYGBkaXN0dXRpbHMuc3lzY29uZmlnLmdldF9weXRob25faW5jKClgYCBub3cgbWFrZXMgYSBkaWZmZXJlbmNlCi0gIGJldHdlZW4gdGhlIGJ1aWxkIGRpciBhbmQgdGhlIHNvdXJjZSBkaXIgd2hlbiBsb29raW5nIGZvciAicHl0aG9uLmgiIG9yCi0gICJJbmNsdWRlIi4KLQotLSBJc3N1ZSAjODQ2NDogdGFyZmlsZSBubyBsb25nZXIgY3JlYXRlcyBmaWxlcyB3aXRoIGV4ZWN1dGUgcGVybWlzc2lvbnMgc2V0IHdoZW4KLSAgbW9kZT0id3wiIGlzIHVzZWQuCi0KLS0gSXNzdWUgIzc4MzQ6IEZpeCBjb25uZWN0KCkgb2YgQmx1ZXRvb3RoIEwyQ0FQIHNvY2tldHMgd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YKLSAgdGhlIExpbnV4IGtlcm5lbC4gIFBhdGNoIGJ5IFlhbml2IEFrbmluLgotCi0tIElzc3VlICM2MzEyOiBGaXggaHR0cCBIRUFEIHJlcXVlc3Qgd2hlbiB0aGUgdHJhbnNmZXIgZW5jb2RpbmcgaXMgY2h1bmtlZC4gIEl0Ci0gIHNob3VsZCBjb3JyZWN0bHkgcmV0dXJuIGFuIGVtcHR5IHJlc3BvbnNlIG5vdy4KLQotLSBJc3N1ZSAjNzQ5MDogVG8gZmFjaWxpdGF0ZSBzaGFyaW5nIG9mIGRvY3Rlc3RzIGJldHdlZW4gMi54IGFuZCAzLnggdGVzdAotICBzdWl0ZXMsIHRoZSBgYElHTk9SRV9FWENFUFRJT05fREVUQUlMYGAgZGlyZWN0aXZlIG5vdyBhbHNvIGlnbm9yZXMgdGhlIG1vZHVsZQotICBsb2NhdGlvbiBvZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbi4gIEJhc2VkIG9uIGluaXRpYWwgcGF0Y2ggYnkgTGVubmFydCBSZWdlYnJvLgotCi0tIElzc3VlICM4MDg2OiBJbiA6ZnVuYzpgc3NsLkRFUl9jZXJ0X3RvX1BFTV9jZXJ0KClgLCBmaXggbWlzc2luZyBuZXdsaW5lIGJlZm9yZQotICB0aGUgY2VydGlmaWNhdGUgZm9vdGVyLiAgUGF0Y2ggYnkgS3lsZSBWYW5kZXJCZWVrLgotCi0tIElzc3VlICM4NTQ2OiBSZWplY3QgTm9uZSBnaXZlbiBhcyB0aGUgYnVmZmVyaW5nIGFyZ3VtZW50IHRvIGBgX3B5aW8ub3BlbigpYGAuCi0KLS0gSXNzdWUgIzg1NDk6IEZpeCBjb21waWxpbmcgdGhlIF9zc2wgZXh0ZW5zaW9uIHVuZGVyIEFJWC4gIFBhdGNoIGJ5IFNyaWRoYXIKLSAgUmF0bmFrdW1hci4KLQotLSBJc3N1ZSAjNjY1NjogRml4IGxvY2FsZS5mb3JtYXRfc3RyaW5nIHRvIGhhbmRsZSBlc2NhcGVkIHBlcmNlbnRzIGFuZCBtYXBwaW5ncy4KLQotLSBJc3N1ZSAjMjMwMjogRml4IGEgcmFjZSBjb25kaXRpb24gaW4gU29ja2V0U2VydmVyLkJhc2VTZXJ2ZXIuc2h1dGRvd24sIHdoZXJlCi0gIHRoZSBtZXRob2QgY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5IGlmIGNhbGxlZCBqdXN0IGJlZm9yZSB0aGUgZXZlbnQgbG9vcAotICBzdGFydGVkIHJ1bm5pbmcuICBUaGlzIGFsc28gZml4ZXMgdGhlIG9jY2FzaW9uYWwgZnJlZXplcyB3aXRuZXNzZWQgaW4KLSAgdGVzdF9odHRwc2VydmVycy4KLQotLSBJc3N1ZSAjNTEwMzogU1NMIGhhbmRzaGFrZSB3b3VsZCBpZ25vcmUgdGhlIHNvY2tldCB0aW1lb3V0IGFuZCBibG9jawotICBpbmRlZmluaXRlbHkgaWYgdGhlIG90aGVyIGVuZCBkaWRuJ3QgcmVzcG9uZC4KLQotLSBUaGUgZG9faGFuZHNoYWtlKCkgbWV0aG9kIG9mIFNTTCBvYmplY3RzIG5vdyBhZGp1c3RzIHRoZSBibG9ja2luZyBtb2RlIG9mIHRoZQotICBTU0wgc3RydWN0dXJlIGlmIG5lY2Vzc2FyeSAoYXMgb3RoZXIgbWV0aG9kcyBhbHJlYWR5IGRvKS4KLQotLSBJc3N1ZSAjNzUwNzogUXVvdGUgIiEiIGluIHBpcGVzLnF1b3RlKCk7IGl0IGlzIHNwZWNpYWwgdG8gc29tZSBzaGVsbHMuCi0KLS0gSXNzdWUgIzUyMzg6IENhbGxpbmcgbWFrZWZpbGUoKSBvbiBhbiBTU0wgb2JqZWN0IHdvdWxkIHByZXZlbnQgdGhlIHVuZGVybHlpbmcKLSAgc29ja2V0IGZyb20gYmVpbmcgY2xvc2VkIHVudGlsIGFsbCBvYmplY3RzIGdldCB0cnVlbHkgZGVzdHJveWVkLgotCi0tIElzc3VlICM3OTQzOiBGaXggY2lyY3VsYXIgcmVmZXJlbmNlIGNyZWF0ZWQgd2hlbiBpbnN0YW50aWF0aW5nIGFuIFNTTCBzb2NrZXQuCi0gIEluaXRpYWwgcGF0Y2ggYnkgUMOpdGVyIFN6YWLDsy4KLQotLSBJc3N1ZSAjODQ1MTogU3lzbG9nIG1vZHVsZSBub3cgdXNlcyBiYXNlbmFtZShzeXMuYXJndlswXSkgaW5zdGVhZCBvZiB0aGUKLSAgc3RyaW5nICJweXRob24iIGFzIHRoZSAqaWRlbnQqLiAgb3BlbmxvZygpIGFyZ3VtZW50cyBhcmUgYWxsIG9wdGlvbmFsIGFuZAotICBrZXl3b3Jkcy4KLQotLSBJc3N1ZSAjODEwODogRml4IHRoZSB1bndyYXAoKSBtZXRob2Qgb2YgU1NMIG9iamVjdHMgd2hlbiB0aGUgc29ja2V0IGhhcyBhCi0gIG5vbi1pbmZpbml0ZSB0aW1lb3V0LiAgQWxzbyBtYWtlIHRoYXQgbWV0aG9kIGZyaWVuZGxpZXIgd2l0aCBhcHBsaWNhdGlvbnMKLSAgd2FudGluZyB0byBjb250aW51ZSB1c2luZyB0aGUgc29ja2V0IGluIGNsZWFyLXRleHQgbW9kZSwgYnkgZGlzYWJsaW5nCi0gIE9wZW5TU0wncyBpbnRlcm5hbCByZWFkYWhlYWQuICBUaGFua3MgdG8gRGFycnlsIE1pbGVzIGZvciBndWlkYW5jZS4KLQotLSBJc3N1ZSAjODQ4NDogTG9hZCBhbGwgY2lwaGVycyBhbmQgZGlnZXN0IGFsZ29yaXRobXMgd2hlbiBpbml0aWFsaXppbmcgdGhlIF9zc2wKLSAgZXh0ZW5zaW9uLCBzdWNoIHRoYXQgdmVyaWZpY2F0aW9uIG9mIHNvbWUgU1NMIGNlcnRpZmljYXRlcyBkb2Vzbid0IGZhaWwKLSAgYmVjYXVzZSBvZiBhbiAidW5rbm93biBhbGdvcml0aG0iLgotCi0tIElzc3VlICM4NDM3OiBGaXggdGVzdF9nZGIgZmFpbHVyZXMsIHBhdGNoIHdyaXR0ZW4gYnkgRGF2ZSBNYWxjb2xtCi0KLS0gSXNzdWUgIzQ4MTQ6IFRoZSB0aW1lb3V0IHBhcmFtZXRlciBpcyBub3cgYXBwbGllZCBhbHNvIGZvciBjb25uZWN0aW9ucwotICByZXN1bHRpbmcgZnJvbSBQT1JUL0VQUlQgY29tbWFuZHMuCi0KLS0gSXNzdWUgIzg0NjM6IEFkZCBtaXNzaW5nIHJlZmVyZW5jZSB0byBienRhciBpbiBzaHV0aWwncyBkb2N1bWVudGF0aW9uLgotCi0tIElzc3VlICM4NDM4OiBSZW1vdmUgcmVmZXJlbmNlIHRvIHRoZSBtaXNzaW5nICJzdXJyb2dhdGVlc2NhcGUiIGVuY29kaW5nIGVycm9yCi0gIGhhbmRsZXIgZnJvbSB0aGUgbmV3IElPIGxpYnJhcnkuCi0KLS0gSXNzdWUgIzM4MTc6IGZ0cGxpYi5GVFAuYWJvcnQoKSBtZXRob2Qgbm93IGNvbnNpZGVycyAyMjUgYSB2YWxpZCByZXNwb25zZSBjb2RlCi0gIGFzIHN0YXRlZCBpbiBSRkMtOTU5IGF0IGNoYXB0ZXIgNS40LgotCi0tIElzc3VlICM4Mjc5OiBGaXggdGVzdF9nZGIgZmFpbHVyZXMuCi0KLS0gSXNzdWUgIzgzMjI6IEFkZCBhICpjaXBoZXJzKiBhcmd1bWVudCB0byBTU0wgc29ja2V0cywgc28gYXMgdG8gY2hhbmdlIHRoZQotICBhdmFpbGFibGUgY2lwaGVyIGxpc3QuICBIZWxwcyBmaXggdGVzdF9zc2wgd2l0aCBPcGVuU1NMIDEuMC4wLgotCi0tIElzc3VlICMyOTg3OiBSRkMgMjczMiBzdXBwb3J0IGZvciB1cmxwYXJzZSAoSVB2NiBhZGRyZXNzZXMpLiAgUGF0Y2ggYnkgVG9ueQotICBMb2NrZSBhbmQgSGFucyBVbHJpY2ggTmllZGVybWFubi4KLQotLSBJc3N1ZSAjNzU4NTogZGlmZmxpYiBjb250ZXh0IGFuZCB1bmlmaWVkIGRpZmZzIG5vdyBwbGFjZSBhIHRhYiBiZXR3ZWVuCi0gIGZpbGVuYW1lIGFuZCBkYXRlLCBjb25mb3JtaW5nIHRvIHRoZSAnc3RhbmRhcmRzJyB0aGV5IHdlcmUgb3JpZ2luYWxseSBkZXNpZ25lZAotICB0byBmb2xsb3cuICBUaGlzIGltcHJvdmVzIGNvbXBhdGliaWxpdHkgd2l0aCBwYXRjaCB0b29scy4KLQotLSBJc3N1ZSAjNzQ3MjogRml4ZWQgdHlwbyBpbiBlbWFpbC5lbmNvZGVycyBtb2R1bGU7IG1lc3NhZ2VzIHVzaW5nIElTTy0yMDIyCi0gIGNoYXJhY3RlciBzZXRzIHdpbGwgbm93IGNvbnNpc3RlbnRseSB1c2UgYSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIG9mIDdiaXQKLSAgcmF0aGVyIHRoYW4gc29tZXRpbWVzIGJlaW5nIG1hcmtlZCBhcyA4Yml0LgotCi0tIElzc3VlICM4MzMwOiBGaXggZXhwZWN0ZWQgb3V0cHV0IGluIHRlc3RfZ2RiLgotCi0tIElzc3VlICM4Mzc0OiBVcGRhdGUgdGhlIGludGVybmFsIGFsaWFzIHRhYmxlIGluIHRoZSA6bW9kOmBsb2NhbGVgIG1vZHVsZSB0bwotICBjb3ZlciByZWNlbnQgbG9jYWxlIGNoYW5nZXMgYW5kIGFkZGl0aW9ucy4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzg2NDQ6IEltcHJvdmVkIGFjY3VyYWN5IG9mIGBgdGltZWRlbHRhLnRvdGFsX3NlY29uZHMoKWBgLgotCi0tIFVzZSBDbGFuZyAyLjcncyBzdGF0aWMgYW5hbHl6ZXIgdG8gZmluZCBwbGFjZXMgdG8gY2xlYW4gdXAgc29tZSBjb2RlLgotCi0tIEJ1aWxkIHRoZSBvc3NhdWRpbyBleHRlbnNpb24gb24gR05VL2tGcmVlQlNELgotCi0tIE9uIFdpbmRvd3MsIGN0eXBlcyBubyBsb25nZXIgY2hlY2tzIHRoZSBzdGFjayBiZWZvcmUgYW5kIGFmdGVyIGNhbGxpbmcgYQotICBmb3JlaWduIGZ1bmN0aW9uLiAgVGhpcyBhbGxvd3MgdXNpbmcgdGhlIHVubW9kaWZpZWQgbGliZmZpIGxpYnJhcnkuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM4NjcyOiBBZGQgYSB6bGliIHRlc3QgZW5zdXJpbmcgdGhhdCBhbiBpbmNvbXBsZXRlIHN0cmVhbSBjYW4gYmUgaGFuZGxlZAotICBieSBhIGRlY29tcHJlc3NvciBvYmplY3Qgd2l0aG91dCBlcnJvcnMgKGl0IHJldHVybnMgaW5jb21wbGV0ZSB1bmNvbXByZXNzZWQKLSAgZGF0YSkuCi0KLS0gSXNzdWUgIzg0OTA6IGFzeW5jb3JlIG5vdyBoYXMgYSBtb3JlIHNvbGlkIHRlc3Qgc3VpdGUgd2hpY2ggYWN0dWFsbHkgdGVzdHMgaXRzCi0gIEFQSS4KLQotLSBJc3N1ZSAjODU3NjogUmVtb3ZlIHVzZSBvZiBmaW5kX3VudXNlZF9wb3J0KCkgaW4gdGVzdF9zbXRwbGliIGFuZAotICB0ZXN0X211bHRpcHJvY2Vzc2luZy4gIFBhdGNoIGJ5IFBhdWwgTW9vcmUuCi0KLS0gSXNzdWUgIzc0NDk6IEZpeCBtYW55IHRlc3RzIHRvIHN1cHBvcnQgUHl0aG9uIGNvbXBpbGVkIHdpdGhvdXQgdGhyZWFkIHN1cHBvcnQuCi0gIFBhdGNoZXMgd3JpdHRlbiBieSBKZXJyeSBTZXV0dGVyLgotCi0tIElzc3VlICM4MTA4OiB0ZXN0X2Z0cGxpYidzIG5vbi1ibG9ja2luZyBTU0wgc2VydmVyIG5vdyBoYXMgcHJvcGVyIGhhbmRsaW5nIG9mCi0gIFNTTCBzaHV0ZG93bnMuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICM4NjI1OiBUdXJuIG9mZiBvcHRpbWl6YXRpb24gaW4gYGAtLXdpdGgtcHlkZWJ1Z2BgIGJ1aWxkcyB3aXRoIGdjYy4KLSAgKE9wdGltaXphdGlvbiB3YXMgdW5pbnRlbnRpb25hbGx5IHR1cm5lZCBvbiBpbiBnY2MgLS13aXRoLXB5ZGVidWcgYnVpbGRzIGluCi0gIDIuNyBiZXRhMSBhcyBhIHJlc3VsdCBvZiB0aGUgaXNzdWUgIzE2Mjg0ODQgZml4LCBjb21iaW5lZCB3aXRoIGF1dG9jb25mJ3MKLSAgc3RyYW5nZSBjaG9pY2Ugb2YgZGVmYXVsdCBDRkxBR1MgcHJvZHVjZWQgYnkgQUNfUFJPR19DQyBmb3IgZ2NjLikKLQotLSBJc3N1ZSAjODUwOTogRml4IHF1b3RpbmcgaW4gaGVscCBzdHJpbmdzIGFuZCBjb2RlIHNuaXBwZXRzIGluIGNvbmZpZ3VyZS5pbi4KLQotLSBJc3N1ZSAjMzY0NjogSXQgaXMgbm93IGVhc2lseSBwb3NzaWJsZSB0byBpbnN0YWxsIGEgUHl0aG9uIGZyYW1ld29yayBpbnRvIHlvdXIKLSAgaG9tZSBkaXJlY3Rvcnkgb24gTWFjIE9TIFgsIHNlZSBNYWMvUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCi0tIElzc3VlICM4NTEwOiBVcGRhdGUgdG8gYXV0b2NvbmYgMi42NS4KLQotTWlzYwotLS0tLQotCi0tIFVwZGF0ZSB0aGUgVmltIHN5bnRheCBoaWdobGlnaHQgZmlsZS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcgYmV0YSAxPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAxMC0wNC0xMCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzczMDE6IEFkZCBlbnZpcm9ubWVudCB2YXJpYWJsZSAkUFlUSE9OV0FSTklOR1MuCi0KLS0gSXNzdWUgIzgzMjk6IERvbid0IHJldHVybiB0aGUgc2FtZSBsaXN0cyBmcm9tIHNlbGVjdC5zZWxlY3Qgd2hlbiBubyBmZHMgYXJlCi0gIGNoYW5nZWQuCi0KLS0gSXNzdWUgIzgyNTk6IGBgMUwgPDwgKDIqKjMxKWBgIG5vIGxvbmdlciBwcm9kdWNlcyBhbiAnb3V0cmFnZW91cyBzaGlmdCBlcnJvcicKLSAgb24gNjQtYml0IG1hY2hpbmVzLiAgVGhlIHNoaWZ0IGNvdW50IGZvciBlaXRoZXIgbGVmdCBvciByaWdodCBzaGlmdCBpcwotICBwZXJtaXR0ZWQgdG8gYmUgdXAgdG8gc3lzLm1heHNpemUuCi0KLS0gRW5zdXJlIHRoYXQgdG9rZW5pemF0aW9uIG9mIGlkZW50aWZpZXJzIGlzIG5vdCBhZmZlY3RlZCBieSBsb2NhbGUuCi0KLS0gSXNzdWUgIzEyMjI1ODU6IEFkZGVkIExEQ1hYU0hBUkVEIGZvciBDKysgc3VwcG9ydC4gIFBhdGNoIGJ5IEFyZnJldmVyLgotCi0tIFJhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBhIFRfU1RSSU5HX0lOUExBQ0Ugc3RydWN0IG1lbWJlci4KLQotLSBJc3N1ZSAjNzk5NDogSXNzdWUgYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGlmIG9iamVjdC5fX2Zvcm1hdF9fIGlzIGNhbGxlZAotICB3aXRoIGEgbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcuIFRoaXMgaXMgYW4gZWZmb3J0IHRvIGZ1dHVyZS1wcm9vZiB1c2VyCi0gIGNvZGUuIElmIGEgZGVyaXZlZCBjbGFzcyBkb2VzIG5vdCBjdXJyZW50bHkgaW1wbGVtZW50IF9fZm9ybWF0X18gYnV0IGxhdGVyCi0gIGFkZHMgaXRzIG93biBfX2Zvcm1hdF9fLCBpdCB3b3VsZCBtb3N0IGxpa2VseSBicmVhayB1c2VyIGNvZGUgdGhhdCBoYWQKLSAgc3VwcGxpZWQgYSBmb3JtYXQgc3RyaW5nLiBUaGlzIHdpbGwgYmUgY2hhbmdlZCB0byBhIERlcHJlY2F0aW9uV2FybmluZyBpbgotICBQeXRob24gMy4zIGFuZCBpdCB3aWxsIGJlIGFuIGVycm9yIGluIFB5dGhvbiAzLjQuCi0KLS0gSXNzdWUgIzgyNjg6IE9sZC1zdHlsZSBjbGFzc2VzIChub3QganVzdCBpbnN0YW5jZXMpIG5vdyBzdXBwb3J0IHdlYWsKLSAgcmVmZXJlbmNlcy4KLQotLSBJc3N1ZSAjODIxMTogU2F2ZS9yZXN0b3JlIENGTEFHUyBhcm91bmQgQUNfUFJPR19DQyBpbiBjb25maWd1cmUuaW4sIGluIGNhc2UgaXQKLSAgaXMgc2V0LgotCi0tIElzc3VlICMxNTgzODYzOiBBIHVuaWNvZGUgc3ViY2xhc3MgY2FuIG5vdyBvdmVycmlkZSB0aGUgX191bmljb2RlX18gbWV0aG9kCi0KLS0gSXNzdWUgIzY0NzQ6IE1ha2UgZXJyb3IgbWVzc2FnZSBmcm9tIHBhc3NpbmcgYW4gaW5hZGVxdWF0ZSBudW1iZXIgb2Yga2V5d29yZAotICBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbiBjb3JyZWN0LgotCi0tIElzc3VlICM4MTY0OiBEb24ndCBhbGxvdyBsYW1iZGEgZnVuY3Rpb25zIHRvIGhhdmUgYSBkb2NzdHJpbmcuCi0KLS0gSXNzdWUgIzMxMzc6IERvbid0IGlnbm9yZSBlcnJvcnMgYXQgc3RhcnR1cCwgZXNwZWNpYWxseSBhIGtleWJvYXJkIGludGVycnVwdAotICAoU0lHSU5UKS4gIElmIGFuIGVycm9yIG9jY3VycyB3aGlsZSBpbXBvcnRpbmcgdGhlIHNpdGUgbW9kdWxlLCB0aGUgZXJyb3IgaXMKLSAgcHJpbnRlZCBhbmQgUHl0aG9uIGV4aXRzLiAgSW5pdGlhbGl6ZSB0aGUgR0lMIGJlZm9yZSBpbXBvcnRpbmcgdGhlIHNpdGUKLSAgbW9kdWxlLgotCi0tIENvZGUgb2JqZWN0cyBub3cgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNTI3NzogRml4IHF1b3RlIGNvdW50aW5nIHdoZW4gcGFyc2luZyBSRkMgMjIzMSBlbmNvZGVkIHBhcmFtZXRlcnMuCi0KLS0gSXNzdWUgIzgzMjE6IEdpdmUgYWNjZXNzIHRvIE9wZW5TU0wgdmVyc2lvbiBudW1iZXJzIGZyb20gdGhlIGBzc2xgIG1vZHVsZSwKLSAgdXNpbmcgdGhlIG5ldyBhdHRyaWJ1dGVzIGBzc2wuT1BFTlNTTF9WRVJTSU9OYCwgYHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GT2AgYW5kCi0gIGBzc2wuT1BFTlNTTF9WRVJTSU9OX05VTUJFUmAuCi0KLS0gSXNzdWUgIzgzMTA6IEFsbG93IGRpcyB0byBleGFtaW5lIG5ldyBzdHlsZSBjbGFzc2VzLgotCi0tIElzc3VlICM4MjU3OiBUaGUgRGVjaW1hbCBjb25zdHJ1Y3Qgbm93IGFjY2VwdHMgYSBmbG9hdCBpbnN0YW5jZSBkaXJlY3RseSwKLSAgY29udmVydGluZyB0aGF0IGZsb2F0IHRvIGEgRGVjaW1hbCBvZiBlcXVhbCB2YWx1ZToKLQotICAgICA+Pj4gRGVjaW1hbCgxLjEpCi0gICAgIERlY2ltYWwoJzEuMTAwMDAwMDAwMDAwMDAwMDg4ODE3ODQxOTcwMDEyNTIzMjMzODkwNTMzNDQ3MjY1NjI1JykKLQotLSBjb2xsZWN0aW9ucy5Db3VudGVyKCkgbm93IHN1cHBvcnRzIGEgc3VidHJhY3QoKSBtZXRob2QuCi0KLS0gVGhlIGZ1bmN0b29scyBtb2R1bGUgbm93IGhhcyBhIHRvdGFsX29yZGVyaW5nKCkgY2xhc3MgZGVjb3JhdG9yIHRvIHNpbXBsaWZ5Ci0gIHRoZSBzcGVjaWZpY2F0aW9uIG9mIHJpY2ggY29tcGFyaXNvbnMuCi0KLS0gVGhlIGZ1bmN0b29scyBtb2R1bGUgYWxzbyBhZGRzIGNtcF90b19rZXkoKSBhcyBhIHRvb2wgdG8gdHJhbnNpdGlvbiBvbGQtc3R5bGUKLSAgY29tcGFyaXNvbiBmdW5jdGlvbnMgdG8gbmV3LXN0eWxlIGtleS1mdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzgyOTQ6IFRoZSBGcmFjdGlvbiBjb25zdHJ1Y3RvciBub3cgYWNjZXB0cyBEZWNpbWFsIGFuZCBmbG9hdCBpbnN0YW5jZXMKLSAgZGlyZWN0bHkuCi0KLS0gSXNzdWUgIzcyNzk6IENvbXBhcmlzb25zIGludm9sdmluZyBhIERlY2ltYWwgc2lnbmFsaW5nIE5hTiBub3cgc2lnbmFsCi0gIEludmFsaWRPcGVyYXRpb24gaW5zdGVhZCBvZiByZXR1cm5pbmcgRmFsc2UuICAoQ29tcGFyaXNvbnMgaW52b2x2aW5nIGEgcXVpZXQKLSAgTmFOIGFyZSB1bmNoYW5nZWQuKSAgQWxzbywgRGVjaW1hbCBxdWlldCBOYU5zIGFyZSBub3cgaGFzaGFibGU7IERlY2ltYWwKLSAgc2lnbmFsaW5nIE5hTnMgcmVtYWluIHVuaGFzaGFibGUuCi0KLS0gSXNzdWUgIzI1MzE6IENvbXBhcmlzb24gb3BlcmF0aW9ucyBiZXR3ZWVuIGZsb2F0cyBhbmQgRGVjaW1hbCBpbnN0YW5jZXMgbm93Ci0gIHJldHVybiBhIHJlc3VsdCBiYXNlZCBvbiB0aGUgbnVtZXJpYyB2YWx1ZXMgb2YgdGhlIG9wZXJhbmRzOyBwcmV2aW91c2x5IHRoZXkKLSAgcmV0dXJuZWQgYW4gYXJiaXRyYXJ5IHJlc3VsdCBiYXNlZCBvbiB0aGUgcmVsYXRpdmUgb3JkZXJpbmcgb2YgaWQoZmxvYXQpIGFuZAotICBpZChEZWNpbWFsKS4KLQotLSBJc3N1ZSAjODIzMzogV2hlbiBydW4gYXMgYSBzY3JpcHQsIHB5X2NvbXBpbGUucHkgb3B0aW9uYWxseSB0YWtlcyBhIHNpbmdsZQotICBhcmd1bWVudCBgLWAgd2hpY2ggdGVsbHMgaXQgdG8gcmVhZCBmaWxlcyB0byBjb21waWxlIGZyb20gc3RkaW4uICBFYWNoIGxpbmUgaXMKLSAgcmVhZCBvbiBkZW1hbmQgYW5kIHRoZSBuYW1lZCBmaWxlIGlzIGNvbXBpbGVkIGltbWVkaWF0ZWx5LiAgKE9yaWdpbmFsIHBhdGNoIGJ5Ci0gIFBpb3RyIE/FvGFyb3dza2kpLgotCi0tIElzc3VlICMzMTM1OiBBZGQgYGBpbnNwZWN0LmdldGNhbGxhcmdzKClgYCwgd2hpY2ggYmluZHMgYXJndW1lbnRzIHRvIGEKLSAgZnVuY3Rpb24gbGlrZSBhIG5vcm1hbCBjYWxsLgotCi0tIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUgY2hhbmdlOiBVbmljb2RlIGNvZGVwb2ludHMgbGluZSB0YWJ1bGF0aW9uICgweDBCKSBhbmQKLSAgZm9ybSBmZWVkICgweDBDKSBhcmUgbm93IGNvbnNpZGVyZWQgbGluZWJyZWFrcywgYXMgc3BlY2lmaWVkIGluIFVuaWNvZGUKLSAgU3RhbmRhcmQgQW5uZXggIzE0LiAgU2VlIGlzc3VlICM3NjQzLiAgaHR0cDovL3d3dy51bmljb2RlLm9yZy9yZXBvcnRzL3RyMTQvCi0KLS0gQ29tcGFyaXNvbnMgdXNpbmcgb25lIG9mIDwsIDw9LCA+LCA+PSBiZXR3ZWVuIGEgY29tcGxleCBpbnN0YW5jZSBhbmQgYQotICBGcmFjdGlvbnMgaW5zdGFuY2Ugbm93IHJhaXNlIFR5cGVFcnJvciBpbnN0ZWFkIG9mIHJldHVybmluZyBUcnVlL0ZhbHNlLiAgVGhpcwotICBtYWtlcyBGcmFjdGlvbiA8PT4gY29tcGxleCBjb21wYXJpc29ucyBjb25zaXN0ZW50IHdpdGggaW50IDw9PiBjb21wbGV4LCBmbG9hdAotICA8PT4gY29tcGxleCwgYW5kIGNvbXBsZXggPD0+IGNvbXBsZXggY29tcGFyaXNvbnMuCi0KLS0gQWRkaXRpb24gb2YgYGBXZWFrU2V0YGAgdG8gdGhlIGBgd2Vha3JlZmBgIG1vZHVsZS4KLQotLSBsb2dnaW5nOiBBZGRlZCBMT0dfRlRQIHRvIFN5c0xvZ0hhbmRsZXIgYW5kIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjODIwNTogUmVtb3ZlIHRoZSAiTW9kdWxlcyIgZGlyZWN0b3J5IGZyb20gc3lzLnBhdGggd2hlbiBQeXRob24gaXMKLSAgcnVubmluZyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkgKFBPU0lYIG9ubHkpLgotCi0tIElzc3VlICM3NjY3OiBGaXggZG9jdGVzdCBmYWlsdXJlcyB3aXRoIG5vbi1BU0NJSSBwYXRocy4KLQotLSBJc3N1ZSAjNzUxMjogc2h1dGlsLmNvcHlzdGF0KCkgY291bGQgcmFpc2UgYW4gT1NFcnJvciB3aGVuIHRoZSBmaWxlc3lzdGVtCi0gIGRpZG4ndCBzdXBwb3J0IGNoZmxhZ3MoKSAoZm9yIGV4YW1wbGUgWkZTIHVuZGVyIEZyZWVCU0QpLiAgVGhlIGVycm9yIGlzIG5vdwotICBzaWxlbmNlZC4KLQotLSBJc3N1ZSAjNzcwMzogY3R5cGVzIHN1cHBvcnRzIGJvdGggYnVmZmVyKCkgYW5kIG1lbW9yeXZpZXcoKS4gIFRoZSBmb3JtZXIgaXMKLSAgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjNzg2MDogcGxhdGZvcm0udW5hbWUgbm93IHJlcG9ydHMgdGhlIGNvcnJlY3QgJ21hY2hpbmUnIHR5cGUgd2hlbiBQeXRob24KLSAgaXMgcnVubmluZyBpbiBXT1c2NCBtb2RlIG9uIDY0IGJpdCBXaW5kb3dzLgotCi0tIGxvZ2dpbmc6IEFkZGVkIGdldENoaWxkIHV0aWxpdHkgbWV0aG9kIHRvIExvZ2dlciBhbmQgYWRkZWQgaXNFbmFibGVkRm9yIG1ldGhvZAotICB0byBMb2dnZXJBZGFwdGVyLgotCi0tIElzc3VlICM4MjAxOiBsb2dnaW5nOiBIYW5kbGUgc2l0dWF0aW9uIG9mIG5vbi1BU0NJSSBhbmQgVW5pY29kZSBsb2dnZXIgbmFtZXMKLSAgZXhpc3RpbmcgYXQgdGhlIHNhbWUgdGltZSwgY2F1c2luZyBhIFVuaWNvZGUgZXJyb3Igd2hlbiBjb25maWd1cmF0aW9uIGNvZGUKLSAgYXR0ZW1wdGVkIHRvIHNvcnQgdGhlIGV4aXN0aW5nIGxvZ2dlcnMuCi0KLS0gSXNzdWUgIzgyMDA6IGxvZ2dpbmc6IEhhbmRsZSBlcnJvcnMgd2hlbiBtdWx0aXByb2Nlc3NpbmcgaXMgbm90IGZ1bGx5IGxvYWRlZAotICB3aGVuIGxvZ2dpbmcgb2NjdXJzLgotCi0tIElzc3VlICMzODkwLCAjODIyMjogRml4IHJlY3YoKSBhbmQgcmVjdl9pbnRvKCkgb24gbm9uLWJsb2NraW5nIFNTTCBzb2NrZXRzLgotICBBbHNvLCBlbmFibGUgdGhlIFNTTF9NT0RFX0FVVE9fUkVUUlkgZmxhZyBvbiBTU0wgc29ja2V0cywgc28gdGhhdCBibG9ja2luZwotICByZWFkcyBhbmQgd3JpdGVzIGFyZSBhbHdheXMgcmV0cmllZCBieSBPcGVuU1NMIGl0c2VsZi4KLQotLSBJc3N1ZSAjODE3OTogRml4IG1hY3BhdGgucmVhbHBhdGgoKSBvbiBhIG5vbi1leGlzdGluZyBwYXRoLgotCi0tIElzc3VlICM4MDI0OiBVcGRhdGUgdGhlIFVuaWNvZGUgZGF0YWJhc2UgdG8gNS4yLgotCi0tIElzc3VlICM4MTA0OiBzb2NrZXQucmVjdl9pbnRvKCkgYW5kIHNvY2tldC5yZWN2ZnJvbV9pbnRvKCkgbm93IHN1cHBvcnQgd3JpdGluZwotICBpbnRvIG9iamVjdHMgc3VwcG9ydGluZyB0aGUgbmV3IGJ1ZmZlciBBUEksIGZvciBleGFtcGxlIGJ5dGVhcnJheXMgb3IKLSAgbWVtb3J5dmlld3MuCi0KLS0gSXNzdWUgIzQ5NjE6IEluY29uc2lzdGVudC93cm9uZyByZXN1bHQgb2YgYXNreWVzbm8gZnVuY3Rpb24gaW4gdGtNZXNzYWdlQm94Ci0gIHdpdGggVGNsL1RrLTguNS4KLQotLSBJc3N1ZSAjODE0MDogRXh0ZW5kIGNvbXBpbGVhbGwgdG8gY29tcGlsZSBzaW5nbGUgZmlsZXMuICBBZGQgLWkgb3B0aW9uLgotCi0tIElzc3VlICM3Nzc0OiBTZXQgc3lzLmV4ZWN1dGFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGlmIGBgYXJndlswXWBgIGhhcyBiZWVuIHNldAotICB0byBhIG5vbiBleGlzdGVudCBwcm9ncmFtIG5hbWUgYW5kIFB5dGhvbiBpcyB1bmFibGUgdG8gcmV0cmlldmUgdGhlIHJlYWwKLSAgcHJvZ3JhbSBuYW1lLgotCi0tIElzc3VlICM4MTE3OiBsb2dnaW5nOiBJbXByb3ZlZCBhbGdvcml0aG0gZm9yIGNvbXB1dGluZyBpbml0aWFsIHJvbGxvdmVyIHRpbWUKLSAgZm9yIGBgVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyYGAgYnkgdXNpbmcgdGhlIG1vZGlmaWNhdGlvbiB0aW1lIG9mIGFuIGV4aXN0aW5nCi0gIGxvZyBmaWxlIHRvIGNvbXB1dGUgdGhlIG5leHQgcm9sbG92ZXIgdGltZS4gIElmIHRoZSBsb2cgZmlsZSBkb2VzIG5vdCBleGlzdCwKLSAgdGhlIGN1cnJlbnQgdGltZSBpcyB1c2VkIGFzIHRoZSBiYXNpcyBmb3IgdGhlIGNvbXB1dGF0aW9uLgotCi0tIElzc3VlICM2NDcyOiBUaGUgYGB4bWwuZXRyZWVgYCBwYWNrYWdlIGlzIHVwZGF0ZWQgdG8gRWxlbWVudFRyZWUgMS4zLiAgVGhlCi0gIGNFbGVtZW50VHJlZSBtb2R1bGUgaXMgdXBkYXRlZCB0b28uCi0KLS0gSXNzdWUgIzc4ODA6IEZpeCBzeXNjb25maWcgd2hlbiB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgaXMgYSBzeW1ib2xpYyBsaW5rLgotCi0tIElzc3VlICM3NjI0OiBGaXggYGBpc2luc3RhbmNlKGZvbygpLCBjb2xsZWN0aW9ucy5DYWxsYWJsZSlgYCBmb3Igb2xkLXN0eWxlCi0gIGNsYXNzZXMuCi0KLS0gSXNzdWUgIzcxNDM6IGVtYWlsOiBgYGdldF9wYXlsb2FkKClgYCB1c2VkIHRvIHN0cmlwIGFueSB0cmFpbGluZyBuZXdsaW5lIGZyb20KLSAgYSBiYXNlNjQgdHJhbnNmZXItZW5jb2RlZCBwYXlsb2FkICphZnRlciogZGVjb2RpbmcgaXQ7IGl0IG5vIGxvbmdlciBkb2VzLgotICBUaGlzIGlzIGEgYmVoYXZpb3IgY2hhbmdlLCBzbyBlbWFpbCdzIG1pbm9yIHZlcnNpb24gbnVtYmVyIGlzIG5vdyBidW1wZWQsIHRvCi0gIHZlcnNpb24gNC4wLjIsIGZvciB0aGUgMi43IHJlbGVhc2UuCi0KLS0gSXNzdWUgIzgyMzU6IF9zb2NrZXQ6IEFkZCB0aGUgY29uc3RhbnQgYGBTT19TRVRGSUJgYC4gIFNPX1NFVEZJQiBpcwotICBhIHNvY2tldCBvcHRpb24gYXZhaWxhYmxlIG9uIEZyZWVCU0QgNy4xIGFuZCBuZXdlci4KLQotLSBJc3N1ZSAjODAzODogdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0Tm90UmVnZXhwTWF0Y2hlcwotCi0tIEFkZGl0aW9uIG9mIC1iIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gdW5pdHRlc3QgZm9yIGJ1ZmZlcmluZyBzdGRvdXQgLyBzdGRlcnIKLSAgZHVyaW5nIHRlc3QgcnVucy4KLQotLSBJc3N1ZSAjMTIyMDIxMjogQWRkZWQgb3Mua2lsbCBzdXBwb3J0IGZvciBXaW5kb3dzLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IKLSAgc2VuZGluZyBDVFJMK0MgYW5kIENUUkwrQlJFQUsgZXZlbnRzIHRvIGNvbnNvbGUgc3VicHJvY2Vzc2VzLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjODMxNDogRml4IHVuc2lnbmVkIGxvbmcgbG9uZyBidWcgaW4gbGliZmZpIG9uIFNwYXJjIHY4LgotCi0tIElzc3VlICMxMDM5LCAjODE1NDogRml4IG9zLmV4ZWNscCgpIGNyYXNoIHdpdGggbWlzc2luZyAybmQgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzgxNTY6IGJzZGRiIG1vZHVsZSB1cGRhdGVkIHRvIHZlcnNpb24gNC44LjQuCi0gIGh0dHA6Ly93d3cuamNlYS5lcy9wcm9ncmFtYWNpb24vcHlic2RkYi5odG0jYnNkZGIzLTQuOC40LiAgVGhpcyB1cGRhdGUgZHJvcHMKLSAgc3VwcG9ydCBmb3IgQmVya2VsZXkgREIgNC4wLCBhbmQgYWRkcyBzdXBwb3J0IGZvciA0LjguCi0KLS0gSXNzdWUgIzM5Mjg6IG9zLm1rbm9kKCkgbm93IGF2YWlsYWJsZSBpbiBTb2xhcmlzLCBhbHNvLgotCi0tIElzc3VlICM4MTQyOiBVcGRhdGUgbGliZmZpIHRvIHRoZSAzLjAuOSByZWxlYXNlLgotCi0tIElzc3VlICM4MzAwOiBXaGVuIHBhc3NpbmcgYSBub24taW50ZWdlciBhcmd1bWVudCB0byBzdHJ1Y3QucGFjayB3aXRoIGFueQotICBpbnRlZ2VyIGZvcm1hdCBjb2RlLCBzdHJ1Y3QucGFjayBmaXJzdCBhdHRlbXB0cyB0byBjb252ZXJ0IHRoZSBub24taW50ZWdlcgotICB1c2luZyBpdHMgX19pbmRleF9fIG1ldGhvZC4gIElmIHRoYXQgbWV0aG9kIGlzIG5vbi1leGlzdGVudCBvciByYWlzZXMKLSAgVHlwZUVycm9yIGl0IGdvZXMgb24gdG8gdHJ5IHRoZSBfX2ludF9fIG1ldGhvZCwgYXMgZGVzY3JpYmVkIGJlbG93LgotCi0tIElzc3VlICMxNTMwNTU5OiBXaGVuIHBhc3NpbmcgYSBub24taW50ZWdlciBhcmd1bWVudCB0byBzdHJ1Y3QucGFjayB3aXRoICphbnkqCi0gIGludGVnZXIgZm9ybWF0IGNvZGUgKG9uZSBvZiAnYkJoSGlJbExxUScpLCBzdHJ1Y3QucGFjayBhdHRlbXB0cyB0byB1c2UgdGhlCi0gIGFyZ3VtZW50J3MgX19pbnRfXyBtZXRob2QgdG8gY29udmVydCB0byBhbiBpbnRlZ2VyIGJlZm9yZSBwYWNraW5nLiAgSXQgYWxzbwotICBwcm9kdWNlcyBhIERlcHJlY2F0aW9uV2FybmluZyBpbiB0aGlzIGNhc2UuICAoSW4gUHl0aG9uIDIuNiwgdGhlIGJlaGF2aW91ciB3YXMKLSAgaW5jb25zaXN0ZW50OiBfX2ludF9fIHdhcyB1c2VkIGZvciBzb21lIGludGVnZXIgY29kZXMgYnV0IG5vdCBmb3Igb3RoZXJzLCBhbmQKLSAgdGhlIHNldCBvZiBpbnRlZ2VyIGNvZGVzIGZvciB3aGljaCBpdCB3YXMgdXNlZCBkaWZmZXJlZCBiZXR3ZWVuIG5hdGl2ZSBwYWNraW5nCi0gIGFuZCBzdGFuZGFyZCBwYWNraW5nLikKLQotLSBJc3N1ZSAjNzM0NzogX3dpbnJlZzogQWRkIENyZWF0ZUtleUV4IGFuZCBEZWxldGVLZXlFeCwgYXMgd2VsbCBhcyBmaXggYSBidWcgaW4KLSAgdGhlIHJldHVybiB2YWx1ZSBvZiBRdWVyeVJlZmxlY3Rpb25LZXkuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM3OTkzOiBBZGQgYSB0ZXN0IG9mIElPIHBhY2tldCBwcm9jZXNzaW5nIGJhbmR3aWR0aCB0byBjY2JlbmNoLiAgSXQKLSAgbWVhc3VyZXMgdGhlIG51bWJlciBvZiBVRFAgcGFja2V0cyBwcm9jZXNzZWQgcGVyIHNlY29uZCBkZXBlbmRpbmcgb24gdGhlCi0gIG51bWJlciBvZiBiYWNrZ3JvdW5kIENQVS1ib3VuZCBQeXRob24gdGhyZWFkcy4KLQotLSBweXRob24tY29uZmlnIG5vdyBzdXBwb3J0cyBtdWx0aXBsZSBvcHRpb25zIG9uIHRoZSBzYW1lIGNvbW1hbmQgbGluZS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzgwMzI6IEZvciBnZGI3LCBhIHB5dGhvbi1nZGIucHkgZmlsZSBpcyBhZGRlZCB0byB0aGUgYnVpbGQsIGFsbG93aW5nIHRvCi0gIHVzZSBhZHZhbmNlZCBnZGIgZmVhdHVyZXMgd2hlbiBkZWJ1Z2dpbmcgUHl0aG9uLgotCi0tIElzc3VlICMxNjI4NDg0OiBUaGUgTWFrZWZpbGUgZG9lc24ndCBpZ25vcmUgdGhlIENGTEFHUyBlbnZpcm9ubWVudCB2YXJpYWJsZQotICBhbnltb3JlLiAgSXQgYWxzbyBmb3J3YXJkcyB0aGUgTERGTEFHUyBzZXR0aW5ncyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgYQotICBzaGFyZWQgbGlicmFyeS4KLQotLSBJc3N1ZSAjNjcxNjogUXVvdGUgLXggYXJndW1lbnRzIG9mIGNvbXBpbGVhbGwgaW4gTVNJIGluc3RhbGxlci4KLQotLSBJc3N1ZSAjNzcwNTogRml4IGxpbmtpbmcgb24gRnJlZUJTRC4KLQotLSBNYWtlIHN1cmUgdGhhdCB0aGUgRnJlZUJTRCBidWlsZCBvZiB0aGUgaW5jbHVkZWQgbGliZmZpIHVzZXMgdGhlIHByb3BlcgotICBhc3NlbWJseSBmaWxlLgotCi1DLUFQSQotLS0tLS0KLQotLSBJc3N1ZSAjODI3NjogUHlFdmFsX0NhbGxPYmplY3QoKSBpcyBub3cgb25seSBhdmFpbGFibGUgaW4gbWFjcm8gZm9ybS4gIFRoZQotICBmdW5jdGlvbiBkZWNsYXJhdGlvbiwgd2hpY2ggd2FzIGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGlzCi0gIG5vdyByZW1vdmVkICh0aGUgbWFjcm8gd2FzIGludHJvZHVjZWQgaW4gMTk5NyEpLgotCi0tIElzc3VlICM3OTkyOiBBIHJlcGxhY2VtZW50IFB5Q09iamVjdCBBUEksIFB5Q2Fwc3VsZSwgaGFzIGJlZW4gYmFja3BvcnRlZCBmcm9tCi0gIFB5dGhvbiAzLjEuICBBbGwgZXhpc3RpbmcgUHl0aG9uIENPYmplY3RzIGluIHRoZSBtYWluIGRpc3RyaWJ1dGlvbiBoYXZlIGJlZW4KLSAgY29udmVydGVkIHRvIGNhcHN1bGVzLiAgVG8gYWRkcmVzcyBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBjb25jZXJucywKLSAgUHlDT2JqZWN0X0FzVm9pZFB0cigpIHdhcyBjaGFuZ2VkIHRvIHVuZGVyc3RhbmQgY2Fwc3VsZXMuCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICMzODY0OiBTa2lwIHRocmVlIHRlc3Rfc2lnbmFsIHRlc3RzIG9uIGZyZWVic2Q2IGJlY2F1c2UgdGhleSBmYWlsIGlmIGFueQotICB0aHJlYWQgd2FzIHByZXZpb3VzbHkgc3RhcnRlZCwgbW9zdCBsaWtlbHkgZHVlIHRvIGEgcGxhdGZvcm0gYnVnLgotCi0tIElzc3VlICM4MzQ4OiBGaXggdGVzdCBmdHAgdXJsIGluIHRlc3RfdXJsbGliMm5ldC4KLQotLSBJc3N1ZSAjODIwNDogRml4IHRlc3RfdHRrIG5vdGVib29rIHRlc3QgYnkgZm9yY2luZyBmb2N1cy4KLQotLSBJc3N1ZSAjODM0NDogRml4IHRlc3RfdHRrIGJ1ZyBvbiBGcmVlQlNELgotCi0tIElzc3VlICM4MTkzOiBGaXggdGVzdF96bGliIGZhaWx1cmUgd2l0aCB6bGliIDEuMi40LgotCi0tIElzc3VlICM4MjQ4OiBBZGQgc29tZSB0ZXN0cyBmb3IgdGhlIGJvb2wgdHlwZS4gIFBhdGNoIGJ5IEdyZWdvcnkgTm9maS4KLQotLSBJc3N1ZSAjODI2MzogTm93IHJlZ3J0ZXN0LnB5IHdpbGwgcmVwb3J0IGEgZmFpbHVyZSBpZiBpdCByZWNlaXZlcyBhCi0gIEtleWJvYXJkSW50ZXJydXB0IChTSUdJTlQpLgotCi0tIElzc3VlICM4MTgwIGFuZCAjODIwNzogRml4IHRlc3RfcGVwMjc3IG9uIE9TIFggYW5kIGFkZCBtb3JlIHRlc3RzIGZvciBzcGVjaWFsCi0gIFVuaWNvZGUgbm9ybWFsaXphdGlvbiBjYXNlcy4KLQotLSBJc3N1ZSAjNzc4MzogdGVzdC50ZXN0X3N1cHBvcnQub3Blbl91cmxyZXNvdXJjZSBpbnZhbGlkYXRlcyB0aGUgb3V0ZGF0ZWQgZmlsZXMKLSAgZnJvbSB0aGUgbG9jYWwgY2FjaGUuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi43IGFscGhhIDQ/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMjAxMC0wMy0wNioKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzc1NDQ6IFByZWFsbG9jYXRlIHRocmVhZCBtZW1vcnkgYmVmb3JlIGNyZWF0aW5nIHRoZSB0aHJlYWQgdG8gYXZvaWQgYQotICBmYXRhbCBlcnJvciBpbiBsb3cgbWVtb3J5IGNvbmRpdGlvbi4KLQotLSBJc3N1ZSAjNzgyMDogVGhlIHBhcnNlciB0b2tlbml6ZXIgcmVzdG9yZXMgYWxsIGJ5dGVzIGluIHRoZSByaWdodCBpZiB0aGUgQk9NCi0gIGNoZWNrIGZhaWxzLgotCi0tIElzc3VlICM3MzA5OiBGaXggdW5jaGVja2VkIGF0dHJpYnV0ZSBhY2Nlc3Mgd2hlbiBjb252ZXJ0aW5nCi0gIFVuaWNvZGVFbmNvZGVFcnJvciwgVW5pY29kZURlY29kZUVycm9yLCBhbmQgVW5pY29kZVRyYW5zbGF0ZUVycm9yIHRvIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzc2NDk6ICJ1JyVjJyAlIGNoYXIiIG5vdyBiZWhhdmVzIGxpa2UgInUnJXMnICUgY2hhciIgYW5kIHJhaXNlcyBhCi0gIFVuaWNvZGVEZWNvZGVFcnJvciBpZiAnY2hhcicgaXMgYSBieXRlIHN0cmluZyB0aGF0IGNhbid0IGJlIGRlY29kZWQgdXNpbmcgdGhlCi0gIGRlZmF1bHQgZW5jb2RpbmcuCi0KLS0gSXNzdWUgIzY5MDI6IEZpeCBwcm9ibGVtIHdpdGggYnVpbHQtaW4gdHlwZXMgZm9ybWF0IGluY29ycmVjdGx5IHdpdGggMAotICBwYWRkaW5nLgotCi0tIElzc3VlICMyNTYwOiBSZW1vdmUgYW4gdW5uZWNlc3NhcnkgJ2ZvcicgbG9vcCBmcm9tIGBgbXlfZmdldHMoKWBgIGluCi0gIFBhcnNlci9teXJlYWRsaW5lLmMuCi0KLS0gSXNzdWUgIzc5ODg6IEZpeCBkZWZhdWx0IGFsaWdubWVudCB0byBiZSByaWdodCBhbGlnbmVkIGZvcgotICBgYGNvbXBsZXguX19mb3JtYXRfX2BgLiAgTm93IGl0IG1hdGNoZXMgb3RoZXIgbnVtZXJpYyB0eXBlcy4KLQotLSBJc3N1ZSAjNTIxMTogVGhlIGNvbXBsZXggdHlwZSBubyBsb25nZXIgdXNlcyBpbXBsaWNpdCBjb2VyY2lvbiBpbiBtaXhlZC10eXBlCi0gIGJpbmFyeSBhcml0aG1ldGljIG9wZXJhdGlvbnMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNzkwNDogQ2hhbmdlcyB0byB1cmxsaWIucGFyc2UudXJsc3BsaXQgdG8gaGFuZGxlIHNjaGVtZXMgYXMgZGVmaW5lZCBieQotICBSRkMzOTg2LiBBbnl0aGluZyBiZWZvcmUgOi8vIGlzIGNvbnNpZGVyZWQgYSBzY2hlbWUgYW5kIGlzIGZvbGxvd2VkIGJ5IGFuCi0gIGF1dGhvcml0eSAob3IgbmV0bG9jKSBhbmQgYnkgJy8nIGxlZCBwYXRoLCB3aGljaCBpcyBvcHRpb25hbC4KLQotLSBJc3N1ZSAjMTU1NTU3MDogZW1haWwgbm8gbG9uZ2VyIGluc2VydHMgZXh0cmEgYmxhbmsgbGluZXMgd2hlbiBhIFxyXG4KLSAgY29tYm8gY3Jvc3NlcyBhbiA4MTkyIGJ5dGUgYm91bmRhcnkuCi0KLS0gSXNzdWUgIzY5MDY6IFRrIHNob3VsZCBub3Qgc2V0IFVuaWNvZGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzEwNTQ5NDM6IEZpeCBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgnTkZDJywgdGV4dClgYCBmb3IgdGhlIFB1YmxpYwotICBSZXZpZXcgSXNzdWUgIzI5IChodHRwOi8vdW5pY29kZS5vcmcvcmV2aWV3L3ByLTI5Lmh0bWwpLgotCi0tIElzc3VlICM3NDk0OiBGaXggYSBjcmFzaCBpbiBgYF9sc3Byb2ZgYCAoY1Byb2ZpbGUpIGFmdGVyIGNsZWFyaW5nIHRoZSBwcm9maWxlciwKLSAgcmVzZXQgYWxzbyB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudCBwb2ludGVyIGNvbnRleHQuCi0KLS0gSXNzdWUgIzcyMzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sIHRvIHRoZQotICBgYHRhcmZpbGUuVGFyRmlsZWBgIGNsYXNzLgotCi0tIElzc3VlICM3MjUwOiBGaXggaW5mbyBsZWFrIG9mIG9zLmVudmlyb24gYWNyb3NzIG11bHRpLXJ1biB1c2VzIG9mCi0gIGBgd3NnaXJlZi5oYW5kbGVycy5DR0lIYW5kbGVyYGAuCi0KLS0gSXNzdWUgIzE3MjkzMDU6IEZpeCBkb2N0ZXN0IHRvIGhhbmRsZSBlbmNvZGUgZXJyb3Igd2l0aCAiYmFja3NsYXNocmVwbGFjZSIuCi0KLS0gSXNzdWUgIzY5MTI5MTogYGBjb2RlY3Mub3BlbigpYGAgc2hvdWxkIG5vdCBjb252ZXJ0IGVuZCBvZiBsaW5lcyBvbiByZWFkaW5nCi0gIGFuZCB3cml0aW5nLgotCi0tIElzc3VlICM3OTc1OiBDb3JyZWN0IHJlZ3Jlc3Npb24gaW4gZGljdCBtZXRob2RzIHN1cHBvcnRlZCBieSBic2RkYi5kYnNoZWx2ZS4KLQotLSBJc3N1ZSAjNzk1OTogY3R5cGVzIGNhbGxiYWNrIGZ1bmN0aW9ucyBhcmUgbm93IHJlZ2lzdGVyZWQgY29ycmVjdGx5IHdpdGggdGhlCi0gIGN5Y2xlIGdhcmJhZ2UgY29sbGVjdG9yLgotCi0tIElzc3VlICM3OTcwOiBgYGVtYWlsLkdlbmVyYXRvci5mbGF0dGVuYGAgbm93IGNvcnJlY3RseSBmbGF0dGVucwotICBtZXNzYWdlL3JmYzgyMiBtZXNzYWdlcyBwYXJzZWQgYnkgYGBlbWFpbC5QYXJzZXIuSGVhZGVyUGFyc2VyYGAuCi0KLS0gSXNzdWUgIzM0MjY6IGBgb3MucGF0aC5hYnNwYXRoYGAgbm93IHJldHVybnMgdW5pY29kZSB3aGVuIGl0cyBhcmcgaXMgdW5pY29kZS4KLQotLSBJc3N1ZSAjNzYzMzogSW4gdGhlIGRlY2ltYWwgbW9kdWxlLCBgYENvbnRleHRgYCBjbGFzcyBtZXRob2RzICh3aXRoIHRoZQotICBleGNlcHRpb24gb2YgY2Fub25pY2FsIGFuZCBpc19jYW5vbmljYWwpIG5vdyBhY2NlcHQgaW5zdGFuY2VzIG9mIGludCBhbmQgbG9uZwotICB3aGVyZXZlciBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWNjZXB0ZWQsIGFuZCBpbXBsaWNpdGx5IGNvbnZlcnQgdGhhdCBhcmd1bWVudAotICB0byBEZWNpbWFsLiAgUHJldmlvdXNseSBvbmx5IHNvbWUgYXJndW1lbnRzIHdlcmUgY29udmVydGVkLgotCi0tIElzc3VlICM2MDAzOiBBZGQgYW4gYXJndW1lbnQgdG8gYGB6aXBmaWxlLlppcGZpbGUud3JpdGVzdHJgYCB0byBzcGVjaWZ5IHRoZQotICBjb21wcmVzc2lvbiB0eXBlLgotCi0tIElzc3VlICM3ODkzOiBgYHVuaXR0ZXN0LlRleHRUZXN0UmVzdWx0YGAgaXMgbWFkZSBwdWJsaWMgYW5kIGEgYGByZXN1bHRjbGFzc2BgCi0gIGFyZ3VtZW50IGFkZGVkIHRvIHRoZSBUZXh0VGVzdFJ1bm5lciBjb25zdHJ1Y3RvciBhbGxvd2luZyBhIGRpZmZlcmVudCByZXN1bHQKLSAgY2xhc3MgdG8gYmUgdXNlZCB3aXRob3V0IGhhdmluZyB0byBzdWJjbGFzcy4KLQotLSBJc3N1ZSAjNzU4ODogYGB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdC5nZXREZXNjcmlwdGlvbmBgIG5vdyBpbmNsdWRlcyB0aGUgdGVzdAotICBuYW1lIGluIGZhaWx1cmUgcmVwb3J0cyBldmVuIGlmIHRoZSB0ZXN0IGhhcyBhIGRvY3N0cmluZy4KLQotLSBJc3N1ZSAjNTgwMTogUmVtb3ZlIHNwdXJpb3VzIGVtcHR5IGxpbmVzIGluIHdzZ2lyZWYuCi0KLS0gSXNzdWUgIzE1Mzc3MjE6IEFkZCBhIGBgd3JpdGVoZWFkZXIoKWBgIG1ldGhvZCB0byBgYGNzdi5EaWN0V3JpdGVyYGAuCi0KLS0gSXNzdWUgIzc0Mjc6IEltcHJvdmUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIGh0dHBsaWIuQmFkU3RhdHVzTGluZSBleGNlcHRpb25zLgotCi0tIElzc3VlICM3NDgxOiBXaGVuIGEgYGB0aHJlYWRpbmcuVGhyZWFkYGAgZmFpbGVkIHRvIHN0YXJ0IGl0IHdvdWxkIGxlYXZlIHRoZQotICBpbnN0YW5jZSBzdHVjayBpbiBpbml0aWFsIHN0YXRlIGFuZCBwcmVzZW50IGluIGBgdGhyZWFkaW5nLmVudW1lcmF0ZSgpYGAuCi0KLS0gSXNzdWUgIzEwNjgyNjg6IFRoZSBzdWJwcm9jZXNzIG1vZHVsZSBub3cgaGFuZGxlcyBFSU5UUiBpbiBpbnRlcm5hbAotICBgYG9zLndhaXRwaWQoKWBgIGFuZCBgYG9zLnJlYWQoKWBgIHN5c3RlbSBjYWxscyB3aGVyZSBhcHByb3ByaWF0ZS4KLQotLSBJc3N1ZSAjNjcyOTogQWRkIGBgY3R5cGVzLmNfc3NpemVfdGBgIHRvIHJlcHJlc2VudCBzc2l6ZV90LgotCi0tIElzc3VlICM2MjQ3OiBUaGUgYXJncGFyc2UgbW9kdWxlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBUaGUgc3FsaXRlMyBtb2R1bGUgd2FzIHVwZGF0ZWQgdG8gcHlzcWxpdGUgMi42LjAuICBUaGlzIGZpeGVzIHNldmVyYWwgb2JzY3VyZQotICBidWdzIGFuZCBhbGxvd3MgbG9hZGluZyBTUUxpdGUgZXh0ZW5zaW9ucyBmcm9tIHNoYXJlZCBsaWJyYXJpZXMuCi0KLS0gSXNzdWUgIzc4MDg6IEZpeCByZWZlcmVuY2UgbGVha3MgaW4gX2JzZGRiIGFuZCByZWxhdGVkIHRlc3RzLgotCi0tIElzc3VlICM2NTQ0OiBGaXggYSByZWZlcmVuY2UgbGVhayBpbiB0aGUga3F1ZXVlIGltcGxlbWVudGF0aW9uJ3MgZXJyb3IKLSAgaGFuZGxpbmcuCi0KLS0gU3RvcCBwcm92aWRpbmcgY3J0YXNzZW0uaCBzeW1ib2xzIHdoZW4gY29tcGlsaW5nIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEwLCBhcwotICBtc3ZjcjEwMC5kbGwgaXMgbm90IGEgcGxhdGZvcm0gYXNzZW1ibHkgYW55bW9yZS4KLQotLSBJc3N1ZSAjNzI0MjogT24gU29sYXJpcyA5IGFuZCBlYXJsaWVyIGNhbGxpbmcgYGBvcy5mb3JrKClgYCBmcm9tIHdpdGhpbiBhCi0gIHRocmVhZCBjb3VsZCByYWlzZSBhbiBpbmNvcnJlY3QgUnVudGltZUVycm9yIGFib3V0IG5vdCBob2xkaW5nIHRoZSBpbXBvcnQKLSAgbG9jay4gIFRoZSBpbXBvcnQgbG9jayBpcyBub3cgcmVpbml0aWFsaXplZCBhZnRlciBmb3JrLgotCi0tIElzc3VlICM3OTk5OiBgYG9zLnNldHJldWlkKClgYCBhbmQgYGBvcy5zZXRyZWdpZCgpYGAgd291bGQgcmVmdXNlIHRvIGFjY2VwdCBhCi0gIC0xIHBhcmFtZXRlciBvbiBzb21lIHBsYXRmb3JtcyBzdWNoIGFzIE9TIFguCi0KLVRlc3RzCi0tLS0tLQotCi0tIElzc3VlICM3ODQ5OiBUaGUgdXRpbGl0eSBgYHRlc3QudGVzdF9zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKClgYCB2ZXJpZmllcyBpZgotICB3YXJuaW5ncyBhcmUgZWZmZWN0aXZlbHkgcmFpc2VkLiAgQSBuZXcgdXRpbGl0eSBgYGNoZWNrX3B5M2tfd2FybmluZ3MoKWBgIGlzCi0gIGF2YWlsYWJsZS4KLQotLSBUaGUgZm91ciBwYXRoIG1vZHVsZXMgKGdlbmVyaWNwYXRoLCBtYWNwYXRoLCBudHBhdGgsIHBvc2l4cGF0aCkgc2hhcmUgYQotICBjb21tb24gVGVzdENhc2UgZm9yIHNvbWUgdGVzdHM6IHRlc3RfZ2VuZXJpY3BhdGguQ29tbW9uVGVzdC4KLQotLSBQcmludCBwbGF0Zm9ybSBpbmZvcm1hdGlvbiB3aGVuIHJ1bm5pbmcgdGhlIHdob2xlIHRlc3Qgc3VpdGUsIG9yIHVzaW5nIHRoZQotICBgYC0tdmVyYm9zZWBgIGZsYWcuCi0KLS0gSXNzdWUgIzc2NzY3NTogRW5hYmxlIHRlc3RfcGVwMjc3IG9uIFBPU0lYIHBsYXRmb3JtcyB3aXRoIFVuaWNvZGUtZnJpZW5kbHkKLSAgZmlsZXN5c3RlbSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNjI5MjogRm9yIHRoZSBtb21lbnQgYXQgbGVhc3QsIHRoZSB0ZXN0IHN1aXRlIHJ1bnMgY2xlYW5seSBpZiBweXRob24KLSAgaXMgcnVuIHdpdGggdGhlIC1PTyBmbGFnLiAgVGVzdHMgcmVxdWlyaW5nIGRvY3N0cmluZ3MgYXJlIHNraXBwZWQuCi0KLS0gSXNzdWUgIzc3MTI6IHRlc3Rfc3VwcG9ydCBnYWluZWQgYSBuZXcgYGB0ZW1wX2N3ZGBgIGNvbnRleHQgbWFuYWdlciB3aGljaCBpcwotICBub3cgYWxzbyB1c2VkIGJ5IHJlZ3J0ZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gIFRoZQotICBvcmlnaW5hbCBDV0QgaXMgc2F2ZWQgaW4gYGB0ZXN0LnRlc3Rfc3VwcG9ydC5TQVZFRENXRGBgLiAgVGhhbmtzIHRvIEZsb3JlbnQKLSAgWGljbHVuYSB3aG8gaGVscGVkIHdpdGggdGhlIHBhdGNoLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMzkyMCwgIzc5MDM6IERlZmluZSBfQlNEX1NPVVJDRSBvbiBPcGVuQlNEIDQuNCB0aHJvdWdoIDQuOS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcgYWxwaGEgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDEwLTAyLTA2KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNTY3NzogRXhwbGljaXRseSBmb3JiaWQgd3JpdGUgb3BlcmF0aW9ucyBvbiByZWFkLW9ubHkgZmlsZSBvYmplY3RzLAotICBhbmQgcmVhZCBvcGVyYXRpb25zIG9uIHdyaXRlLW9ubHkgZmlsZSBvYmplY3RzLiAgT24gV2luZG93cywgdGhlIHN5c3RlbSBDCi0gIGxpYnJhcnkgd291bGQgcmV0dXJuIGEgYm9ndXMgcmVzdWx0OyBvbiBTb2xhcmlzLCBpdCB3YXMgcG9zc2libGUgdG8gY3Jhc2ggdGhlCi0gIGludGVycHJldGVyLiAgUGF0Y2ggYnkgU3RlZmFuIEtyYWguCi0KLS0gSXNzdWUgIzc4NTM6IE5vcm1hbGl6ZSBleGNlcHRpb25zIGJlZm9yZSB0aGV5IGFyZSBwYXNzZWQgdG8gYSBjb250ZXh0Ci0gIG1hbmFnZXIncyBgYF9fZXhpdF9fKClgYCBtZXRob2QuCi0KLS0gSXNzdWUgIzczODU6IEZpeCBhIGNyYXNoIGluIGBgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoKWBgIHdoZW4KLSAgYGBQeU9iamVjdF9HZXRCdWZmZXIoKWBgIGZhaWxzLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgotCi0tIElzc3VlICM3ODE5OiBDaGVjayBgYHN5cy5jYWxsX3RyYWNpbmcoKWBgIGFyZ3VtZW50cyB0eXBlcy4KLQotLSBJc3N1ZSAjNzc4ODogRml4IGFuIGludGVycHJldGVyIGNyYXNoIHByb2R1Y2VkIGJ5IGRlbGV0aW5nIGEgbGlzdCBzbGljZSB3aXRoCi0gIHZlcnkgbGFyZ2Ugc3RlcCB2YWx1ZS4KLQotLSBJc3N1ZSAjNzc2NjogQ2hhbmdlIGBgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKClgYCByZXR1cm4gdmFsdWUgdG8gYSBuYW1lZCB0dXBsZQotICBhbmQgYWRkIHRoZSBhZGRpdGlvbmFsIG1lbWJlcnMgcmV0dXJuZWQgaW4gYW4gT1NWRVJTSU9OSU5GT0VYIHN0cnVjdHVyZS4gIFRoZQotICBuZXcgbWVtYmVycyBhcmUgc2VydmljZV9wYWNrX21ham9yLCBzZXJ2aWNlX3BhY2tfbWlub3IsIHN1aXRlX21hc2ssIGFuZAotICBwcm9kdWN0X3R5cGUuCi0KLS0gSXNzdWUgIzc1NjE6IE9wZXJhdGlvbnMgb24gZW1wdHkgYnl0ZWFycmF5cyAoc3VjaCBhcyBgYGludChieXRlYXJyYXkoKSlgYCkKLSAgY291bGQgY3Jhc2ggaW4gbWFueSBwbGFjZXMgYmVjYXVzZSBvZiB0aGUgYGBQeUJ5dGVBcnJheV9BU19TVFJJTkcoKWBgIG1hY3JvCi0gIHJldHVybmluZyBOVUxMLiAgVGhlIG1hY3JvIG5vdyByZXR1cm5zIGEgc3RhdGljYWxseSBhbGxvY2F0ZWQgZW1wdHkgc3RyaW5nCi0gIGluc3RlYWQuCi0KLS0gSXNzdWUgIzc2MjI6IEltcHJvdmUgdGhlIHNwbGl0KCksIHJzcGxpdCgpLCBzcGxpdGxpbmVzKCkgYW5kIHJlcGxhY2UoKQotICBtZXRob2RzIG9mIGJ5dGVzLCBieXRlYXJyYXkgYW5kIHVuaWNvZGUgb2JqZWN0cyBieSB1c2luZyBhIGNvbW1vbgotICBpbXBsZW1lbnRhdGlvbiBiYXNlZCBvbiBzdHJpbmdsaWIncyBmYXN0IHNlYXJjaC4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KLQotLSBJc3N1ZSAjNzYzMjogRml4IHZhcmlvdXMgc3RyIC0+IGZsb2F0IGNvbnZlcnNpb24gYnVncyBwcmVzZW50IGluIDIuNyBhbHBoYSAyLAotICBpbmNsdWRpbmc6Ci0KLSAgKDEpIGEgc2VyaW91cyAnd3Jvbmcgb3V0cHV0JyBidWcgdGhhdCBjb3VsZCBvY2N1ciBmb3IgbG9uZyAoPiA0MCBkaWdpdCkgaW5wdXQKLSAgICAgIHN0cmluZ3MsCi0gICgyKSBhIGNyYXNoIGluIGR0b2EuYyB0aGF0IG9jY3VycmVkIGluIGRlYnVnIGJ1aWxkcyB3aGVuIHBhcnNpbmcgY2VydGFpbiBsb25nCi0gICAgICBudW1lcmljIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0byBzdWJub3JtYWwgdmFsdWVzLAotICAoMykgYSBtZW1vcnkgbGVhayBmb3Igc29tZSB2YWx1ZXMgbGFyZ2UgZW5vdWdoIHRvIGNhdXNlIG92ZXJmbG93LCBhbmQKLSAgKDQpIGEgbnVtYmVyIG9mIGZsYXdzIHRoYXQgY291bGQgbGVhZCB0byBpbmNvcnJlY3RseSByb3VuZGVkIHJlc3VsdHMuCi0KLS0gSXNzdWUgIzczMTksICM3NzcwOiBTaWxlbmNlIGBgRGVwcmVjYXRpb25XYXJuaW5nYGAgYnkgZGVmYXVsdCB3aGVuIHRoZSAtMwotICBvcHRpb24gaXMgbm90IHVzZWQuCi0KLS0gSXNzdWUgIzIzMzU6IEJhY2twb3J0IHNldCBsaXRlcmFscyBzeW50YXggZnJvbSBQeXRob24gMy54LgotCi0tIElzc3VlICMyMzMzOiBCYWNrcG9ydCBzZXQgYW5kIGRpY3QgY29tcHJlaGVuc2lvbnMgc3ludGF4IGZyb20gUHl0aG9uIDMueC4KLQotLSBJc3N1ZSAjMTk2NzogQmFja3BvcnQgZGljdGlvbmFyeSB2aWV3cyBmcm9tIFB5dGhvbiAzLnguCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjOTEzNzogRml4IGlzc3VlIGluIE11dGFibGVNYXBwaW5nLnVwZGF0ZSwgd2hpY2ggaW5jb3JyZWN0bHkKLSAgdHJlYXRlZCBrZXl3b3JkIGFyZ3VtZW50cyBjYWxsZWQgJ3NlbGYnIG9yICdvdGhlcicgc3BlY2lhbGx5LgotCi0tIElzc3VlICM3ODM1OiBzaGVsdmUgc2hvdWxkIG5vIGxvbmdlciBwcm9kdWNlIG15c3RlcmlvdXMgd2FybmluZ3MgZHVyaW5nCi0gIGludGVycHJldGVyIHNodXRkb3duLgotCi0tIElzc3VlICMyNzQ2OiBEb24ndCBlc2NhcGUgYW1wZXJzYW5kcyBhbmQgYW5nbGUgYnJhY2tldHMgKCImIiwgIjwiLCAiPiIpIGluCi0gIFhNTCBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyBhbmQgY29tbWVudHMuICBUaGVzZSByYXcgY2hhcmFjdGVycyBhcmUgYWxsb3dlZAotICBieSB0aGUgWE1MIHNwZWNpZmljYXRpb24sIGFuZCBhcmUgbmVjZXNzYXJ5IHdoZW4gb3V0cHV0dGluZyBlLmcuICBQSFAgY29kZSBpbgotICBhIHByb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24uICBQYXRjaCBieSBOZWlsIE11bGxlci4KLQotLSBJc3N1ZSAjNzg2OTogbG9nZ2luZzogSW1wcm92ZWQgZGlhZ25vc3RpYyBmb3IgZm9ybWF0LXRpbWUgZXJyb3JzLgotCi0tIElzc3VlICM3ODY4OiBsb2dnaW5nOiBBZGRlZCBsb2dnZXJDbGFzcyBhdHRyaWJ1dGUgdG8gTWFuYWdlci4KLQotLSBJc3N1ZSAjNzg1MTogbG9nZ2luZzogQ2xhcmlmaWNhdGlvbiBvbiBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0KLS0gSXNzdWUgIzQ3NzI6IFJhaXNlIGEgVmFsdWVFcnJvciB3aGVuIGFuIHVua25vd24gQmx1ZXRvb3RoIHByb3RvY29sIGlzCi0gIHNwZWNpZmllZCwgcmF0aGVyIHRoYW4gZmFsbCB0aHJvdWdoIHRvIEFGX1BBQ0tFVCAoaW4gdGhlIGBgc29ja2V0YGAgbW9kdWxlKS4KLSAgQWxzbywgcmFpc2UgVmFsdWVFcnJvciByYXRoZXIgdGhhbiBUeXBlRXJyb3Igd2hlbiBhbiB1bmtub3duIFRJUEMgYWRkcmVzcwotICB0eXBlIGlzIHNwZWNpZmllZC4gIFBhdGNoIGJ5IEJyaWFuIEN1cnRpbi4KLQotLSBsb2dnaW5nOiBJbXBsZW1lbnRlZCBQRVAgMzkxLgotCi0tIElzc3VlICM2OTM5OiBGaXggZmlsZSBJL08gb2JqZWN0cyBpbiB0aGUgYGlvYCBtb2R1bGUgdG8ga2VlcCB0aGUgb3JpZ2luYWwKLSAgZmlsZSBwb3NpdGlvbiB3aGVuIGNhbGxpbmcgYHRydW5jYXRlKClgLiAgSXQgd291bGQgcHJldmlvdXNseSBjaGFuZ2UgdGhlIGZpbGUKLSAgcG9zaXRpb24gdG8gdGhlIGdpdmVuIGFyZ3VtZW50LCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIHRyYWRpdGlvbiBvZgotICBmdHJ1bmNhdGUoKSBhbmQgb3RoZXIgdHJ1bmNhdGlvbiBBUElzLiAgUGF0Y2ggYnkgUGFzY2FsIENoYW1ib24uCi0KLS0gSXNzdWUgIzc2MTA6IFJld29ya2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBpbnRlcm5hbCBgYHppcGZpbGUuWmlwRXh0RmlsZWBgCi0gIGNsYXNzIHVzZWQgdG8gcmVwcmVzZW50IGZpbGVzIHN0b3JlZCBpbnNpZGUgYW4gYXJjaGl2ZS4gIFRoZSBuZXcKLSAgaW1wbGVtZW50YXRpb24gaXMgc2lnbmlmaWNhbnRseSBmYXN0ZXIgYW5kIGNhbiBiZSB3cmFwcGVkIGluIGFuCi0gIGBgaW8uQnVmZmVyZWRSZWFkZXJgYCBvYmplY3QgZm9yIG1vcmUgc3BlZWR1cHMuICBJdCBhbHNvIHNvbHZlcyBhbiBpc3N1ZQotICB3aGVyZSBpbnRlcmxlYXZlZCBjYWxscyB0byBgYHJlYWQoKWBgIGFuZCBgYHJlYWRsaW5lKClgYCBnaXZlIHdyb25nIHJlc3VsdHMuCi0gIFBhdGNoIGJ5IE5pciBBaWRlcy4KLQotLSBJc3N1ZSAjNzc5MjogUmVnaXN0ZXJpbmcgbm9uLWNsYXNzZXMgdG8gQUJDcyByYWlzZWQgYW4gb2JzY3VyZSBlcnJvci4KLQotLSBSZW1vdmVkIHRoZSBkZXByZWNhdGVkIGZ1bmN0aW9ucyBgYHZlcmlmeSgpYGAgYW5kIGBgdmVyZXEoKWBgIGZyb20KLSAgTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5LgotCi0tIElzc3VlICM3NzczOiBGaXggYW4gVW5ib3VuZExvY2FsRXJyb3IgaW4gYGBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKWBgCi0gIHdoZW4gdGhlIHJlbGVhc2UgZmlsZSBpcyBlbXB0eS4KLQotLSBJc3N1ZSAjNzc0ODogU2luY2UgdW5pY29kZSB2YWx1ZXMgYXJlIHN1cHBvcnRlZCBmb3Igc29tZSBtZXRhZGF0YSBvcHRpb25zIGluCi0gIERpc3R1dGlscywgdGhlIERpc3RyaWJ1dGlvbk1ldGFkYXRhIGdldF8qIG1ldGhvZHMgd2lsbCBub3cgcmV0dXJuIGEgdXRmLTgKLSAgZW5jb2RlZCBzdHJpbmcgZm9yIHRoZW0uICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdXBsb2FkIGFuZCByZWdpc3RlciBjb21tYW5kcwotICBzZW5kIHRoZSBjb3JyZWN0IHZhbHVlcyB0byBQeVBJIHdpdGhvdXQgYW55IGVycm9yLgotCi0tIElzc3VlICMxNjcwNzY1OiBQcmV2ZW50IGBgZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmBgIGZyb20gcmUtd3JhcHBpbmcKLSAgaGVhZGVycyBpbiBtdWx0aXBhcnQvc2lnbmVkIE1JTUUgcGFydHMsIHdoaWNoIGZpeGVzIG9uZSBvZiB0aGUgc291cmNlcyBvZgotICBpbnZhbGlkIG1vZGlmaWNhdGlvbnMgdG8gc3VjaCBwYXJ0cyBieSBHZW5lcmF0b3IuCi0KLS0gSXNzdWUgIzc3MDE6IEZpeCBjcmFzaCBpbiBgYGJpbmFzY2lpLmIyYV91dSgpYGAgaW4gZGVidWcgbW9kZSB3aGVuIGdpdmVuIGEKLSAgMS1ieXRlIGFyZ3VtZW50LiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzMyOTk6IEZpeCBwb3NzaWJsZSBjcmFzaCBpbiB0aGUgX3NyZSBtb2R1bGUgd2hlbiBnaXZlbiBiYWQgYXJndW1lbnQKLSAgdmFsdWVzIGluIGRlYnVnIG1vZGUuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KLQotLSBJc3N1ZSAjNzcwMzogQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYnVmZmVyIEFQSSB0byBmdW5jdGlvbnMgb2YgdGhlIGJpbmFzY2lpCi0gIG1vZHVsZS4gIEJhY2twb3J0ZWQgZnJvbSBweTNrIGJ5IEZsb3JlbnQgWGljbHVuYSwgd2l0aCBzb21lIGFkZGl0aW9uYWwgdGVzdHMuCi0KLS0gSXNzdWUgIzI4NDY6IEFkZCBzdXBwb3J0IGZvciBnemlwLkd6aXBGaWxlIHJlYWRpbmcgemVyby1wYWRkZWQgZmlsZXMuICBQYXRjaAotICBieSBCcmlhbiBDdXJ0aW4uCi0KLS0gSXNzdWUgIzU4Mjc6IE1ha2Ugc3VyZSB0aGF0IG5vcm1wYXRoIHByZXNlcnZlcyB1bmljb2RlLiAgSW5pdGlhbCBwYXRjaCBieQotICBNYXR0IEdpdWNhLgotCi0tIElzc3VlICM1MzcyOiBEcm9wIHRoZSByZXVzZSBvZiAubyBmaWxlcyBpbiBEaXN0dXRpbHMnIGNjb21waWxlciAoc2luY2UKLSAgRXh0ZW5zaW9uIGV4dHJhIG9wdGlvbnMgbWF5IGNoYW5nZSB0aGUgb3V0cHV0IHdpdGhvdXQgY2hhbmdpbmcgdGhlIC5jIGZpbGUpLgotICBJbml0aWFsIHBhdGNoIGJ5IENvbGxpbiBXaW50ZXIuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIEV4cGF0OiBGaXggRG9TIHZpYSBYTUwgZG9jdW1lbnQgd2l0aCBtYWxmb3JtZWQgVVRGLTggc2VxdWVuY2VzCi0gIChDVkVfMjAwOV8zNTYwKS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzc2MzI6IFdoZW4gUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSIGlzIGRlZmluZWQsIGRpc2FibGUgdGhlIHByaXZhdGUKLSAgbWVtb3J5IGFsbG9jYXRpb24gc2NoZW1lIGluIGR0b2EuYyBhbmQgdXNlIFB5TWVtX01hbGxvYyBhbmQgUHlNZW1fRnJlZQotICBpbnN0ZWFkLiAgQWxzbyBkaXNhYmxlIGNhY2hpbmcgb2YgcG93ZXJzIG9mIDUuCi0KLS0gSXNzdWUgIzc2NTg6IEVuc3VyZSB0aGF0IHRoZSBuZXcgcHl0aG9udyBleGVjdXRhYmxlIHdvcmtzIG9uIE9TWCAxMC40Ci0KLS0gSXNzdWUgIzc3MTQ6IFVzZSBgYGdjYyAtZHVtcHZlcnNpb25gYCB0byBkZXRlY3QgdGhlIHZlcnNpb24gb2YgR0NDIG9uCi0gIE1hY09TWC4KLQotLSBJc3N1ZSAjNzY2MTogQWxsb3cgY3R5cGVzIHRvIGJlIGJ1aWx0IGZyb20gYSBub24tQVNDSUkgZGlyZWN0b3J5IHBhdGguCi0gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gaW9iZW5jaCAoYSBmaWxlIEkvTyBiZW5jaG1hcmspIGFuZCBjY2JlbmNoIChhIGNvbmN1cnJlbmN5IGJlbmNobWFyaykgd2VyZQotICBhZGRlZCB0byB0aGUgYGBUb29sc2BgIGRpcmVjdG9yeS4gIFRoZXkgd2VyZSBwcmV2aW91c2x5IGxpdmluZyBpbiB0aGUKLSAgc2FuZGJveC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzc3Mjg6IHRlc3RfdGltZW91dCB3YXMgY2hhbmdlZCB0byB1c2UgYGB0ZXN0X3N1cHBvcnQuYmluZF9wb3J0KClgYAotICBpbnN0ZWFkIG9mIGEgaGFyZCBjb2RlZCBwb3J0LgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gVXBkYXRlZCAiVXNpbmcgUHl0aG9uIiBkb2N1bWVudGF0aW9uIHRvIGluY2x1ZGUgZGVzY3JpcHRpb24gb2YgQ1B5dGhvbidzIC1KLAotICAtVSBhbmQgLVggb3B0aW9ucy4KLQotLSBVcGRhdGVkIFB5dGhvbiBtYW51YWwgcGFnZSAob3B0aW9ucyAtQiwgLU8wLCAtcywgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFLCBQWVRIT05OT1VTRVJTSVRFKS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjcgYWxwaGEgMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyMDEwLTAxLTA5KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBUaGUgYGBfX2NvbXBsZXhfXygpYGAgbWV0aG9kIGlzIG5vdyBsb29rZWQgdXAgb24gdGhlIGNsYXNzIG9mIGluc3RhbmNlcyB0bwotICBtYWtlIGl0IGNvbnNpc3RlbnQgd2l0aCBvdGhlciBzcGVjaWFsIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzc0NjI6IEltcGxlbWVudCB0aGUgc3RyaW5nbGliIGZhc3Qgc2VhcmNoIGFsZ29yaXRobSBmb3IgdGhlIGByZmluZGAsCi0gIGByaW5kZXhgLCBgcnNwbGl0YCBhbmQgYHJwYXJ0aXRpb25gIG1ldGhvZHMuICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCi0KLS0gSXNzdWUgIzUwODA6IEEgbnVtYmVyIG9mIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyBwcmV2aW91c2x5IHByb2R1Y2VkIGEKLSAgRGVwcmVjYXRpb25XYXJuaW5nIHdoZW4gcGFzc2VkIGEgZmxvYXQgYXJndW1lbnQgd2hlcmUgYW4gaW50ZWdlciB3YXMgZXhwZWN0ZWQuCi0gIFRoZXNlIGZ1bmN0aW9ucyBhbmQgbWV0aG9kcyBub3cgcmFpc2UgVHlwZUVycm9yIGluc3RlYWQuICBUaGUgbWFqb3JpdHkgb2YgdGhlCi0gIGVmZmVjdHMgb2YgdGhpcyBjaGFuZ2UgYXJlIGluIHRoZSBleHRlbnNpb24gbW9kdWxlcywgYnV0IHNvbWUgY29yZSBmdW5jdGlvbnMKLSAgYW5kIG1ldGhvZHMgYXJlIGFmZmVjdGVkOiBub3RhYmx5IHRoZSAnY2hyJywgJ3JhbmdlJyBhbmQgJ3hyYW5nZScgYnVpbHRpbnMsCi0gIGFuZCBtYW55IHVuaWNvZGUvc3RyIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzc2MDQ6IERlbGV0aW5nIGFuIHVuc2V0IHNsb3R0ZWQgYXR0cmlidXRlIGRpZCBub3QgcmFpc2UgYW4KLSAgQXR0cmlidXRlRXJyb3IuCi0KLS0gSXNzdWUgIzc1MzQ6IEZpeCBoYW5kbGluZyBvZiBJRUVFIHNwZWNpYWxzIChpbmZpbml0aWVzLCBuYW5zLCBuZWdhdGl2ZSB6ZXJvKQotICBpbiAqKiBvcGVyYXRvci4gIFRoZSBiZWhhdmlvdXIgbm93IGNvbmZvcm1zIHRvIHRoYXQgZGVzY3JpYmVkIGluIEM5OSBBbm5leCBGLgotCi0tIElzc3VlICM3NTc5OiBUaGUgbXN2Y3J0IG1vZHVsZSBub3cgaGFzIGRvY3N0cmluZ3MgZm9yIGFsbCBpdHMgZnVuY3Rpb25zLgotCi0tIElzc3VlICM3NDEzOiBQYXNzaW5nICdcMCcgYXMgdGhlIHNlcGFyYXRvciB0byBkYXRldGltZS5kYXRldGltZS5pc29mb3JtYXQoKQotICB1c2VkIHRvIGRyb3AgdGhlIHRpbWUgcGFydCBvZiB0aGUgcmVzdWx0LgotCi0tIElzc3VlICMxODExOiBJbXByb3ZlIGFjY3VyYWN5IGFuZCBjcm9zcy1wbGF0Zm9ybSBjb25zaXN0ZW5jeSBmb3IgdHJ1ZSBkaXZpc2lvbgotICBvZiBpbnRlZ2VyczogdGhlIHJlc3VsdCBvZiBhL2IgaXMgbm93IGNvcnJlY3RseSByb3VuZGVkIGZvciBpbnRzIGEgYW5kIGIgKGF0Ci0gIGxlYXN0IG9uIElFRUUgNzU0IHBsYXRmb3JtcyksIGFuZCBpbiBwYXJ0aWN1bGFyIGRvZXMgbm90IGRlcGVuZCBvbiB0aGUKLSAgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYSBsb25nLgotCi0tIElzc3VlICM2MTA4OiBgYHVuaWNvZGUoZXhjZXB0aW9uKWBgIGFuZCBgYHN0cihleGNlcHRpb24pYGAgc2hvdWxkIHJldHVybiB0aGUKLSAgc2FtZSBtZXNzYWdlIHdoZW4gb25seSBgYF9fc3RyX18oKWBgIChhbmQgbm90IGBgX191bmljb2RlX18oKWBgKSBpcyBvdmVycmlkZGVuCi0gIGluIHRoZSBzdWJjbGFzcy4KLQotLSBJc3N1ZSAjNjgzNDogUmVwbGFjZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAncHl0aG9uJyBhbmQgJ3B5dGhvbncnCi0gIGV4ZWN1dGFibGVzIG9uIE9TWC4KLQotICBUaGVzZSBleGVjdXRhYmxlcyBub3cgd29yayBwcm9wZXJseSB3aXRoIHRoZSBhcmNoKDEpIGNvbW1hbmQ6IGBgYXJjaCAtcHBjCi0gIHB5dGhvbmBgIHdpbGwgc3RhcnQgYSB1bml2ZXJzYWwgYmluYXJ5IHZlcnNpb24gb2YgcHl0aG9uIGluIFBQQyBtb2RlICh1bmxpa2UKLSAgcHJldmlvdXMgcmVsZWFzZXMpLgotCi0tIElzc3VlICMxNjgwMTU5OiBVbmljb2RlIGNvZXJjaW9uIGR1cmluZyBhbiAnaW4nIG9wZXJhdGlvbiBubyBsb25nZXIgbWFza3MgdGhlCi0gIHVuZGVybHlpbmcgZXJyb3Igd2hlbiB0aGUgY29lcmNpb24gZmFpbHMgZm9yIHRoZSBsZWZ0IGhhbmQgb3BlcmFuZC4KLQotLSBJc3N1ZSAjNzQ5MTogTWV0YWNsYXNzJ3MgX19jbXBfXyBtZXRob2Qgd2FzIGlnbm9yZWQuCi0KLS0gSXNzdWUgIzc0NjY6IFNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBpcyBjYWxsZWQgaW4gdGhlCi0gIG1pZGRsZSBvZiBwb3B1bGF0aW5nIGEgdHVwbGUuICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjk2MzogQWRkZWQgIm1heHRhc2tzcGVyY2hpbGQiIGFyZ3VtZW50IHRvIGBgbXVsdGlwcm9jZXNzaW5nLlBvb2xgYCwKLSAgYWxsb3dpbmcgZm9yIGEgbWF4aW11bSBudW1iZXIgb2YgdGFza3Mgd2l0aGluIHRoZSBwb29sIHRvIGJlIGNvbXBsZXRlZCBieSB0aGUKLSAgd29ya2VyIGJlZm9yZSB0aGF0IHdvcmtlciBpcyB0ZXJtaW5hdGVkLCBhbmQgYSBuZXcgb25lIGNyZWF0ZWQgdG8gcmVwbGFjZSBpdC4KLQotLSBJc3N1ZSAjNzYxNzogTWFrZSBzdXJlIGRpc3R1dGlscy51bml4Y2NvbXBpbGVyLlVuaXhDQ29tcGlsZXIgcmVjb2duaXplcyBnY2MKLSAgd2hlbiBpdCBoYXMgYSBmdWxseSBxdWFsaWZpZWQgY29uZmlndXJhdGlvbiBwcmVmaXguICBJbml0aWFsIHBhdGNoIGJ5Ci0gIEFyZnJldmVyLgotCi0tIElzc3VlICM3MDkyOiBSZW1vdmUgcHkzayB3YXJuaW5nIHdoZW4gaW1wb3J0aW5nIGNQaWNrbGUuICAydG8zIGhhbmRsZXMKLSAgcmVuYW1pbmcgb2YgYGNQaWNrbGVgIHRvIGBwaWNrbGVgLiAgVGhlIHdhcm5pbmcgd2FzIGFubm95aW5nIHNpbmNlIHRoZXJlJ3Mgbm8KLSAgYWx0ZXJuYXRpdmUgdG8gY1BpY2tsZSBpZiB5b3UgY2FyZSBhYm91dCBwZXJmb3JtYW5jZS4gIFBhdGNoIGJ5IEZsb3JlbnQKLSAgWGljbHVuYS4KLQotLSBJc3N1ZSAjNzQ1NTogRml4IHBvc3NpYmxlIGNyYXNoIGluIGNQaWNrbGUgb24gaW52YWxpZCBpbnB1dC4gIFBhdGNoIGJ5IFZpY3RvcgotICBTdGlubmVyLgotCi0tIElzc3VlICM3MDkyOiBGaXggdGhlIERlcHJlY2F0aW9uV2FybmluZ3MgZW1pdHRlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyeSB3aGVuCi0gIHVzaW5nIHRoZSAtMyBmbGFnLiAgUGF0Y2ggYnkgRmxvcmVudCBYaWNsdW5hLgotCi0tIElzc3VlICM3NDcxOiBJbXByb3ZlIHRoZSBwZXJmb3JtYW5jZSBvZiBHemlwRmlsZSdzIGJ1ZmZlcmluZyBtZWNoYW5pc20sIGFuZAotICBtYWtlIGl0IGltcGxlbWVudCB0aGUgYGBpby5CdWZmZXJlZElPQmFzZWBgIEFCQyB0byBhbGxvdyBmb3IgZnVydGhlciBzcGVlZHVwcwotICBieSB3cmFwcGluZyBpdCBpbiBhbiBgYGlvLkJ1ZmZlcmVkUmVhZGVyYGAuICBQYXRjaCBieSBOaXIgQWlkZXMuCi0KLS0gSXNzdWUgIzM5NzI6IGBgaHR0cGxpYi5IVFRQQ29ubmVjdGlvbmBgIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIHNvdXJjZV9hZGRyZXNzCi0gIHBhcmFtZXRlciB0byBhbGxvdyBzcGVjaWZ5aW5nIHdoZXJlIHlvdXIgY29ubmVjdGlvbnMgY29tZSBmcm9tLgotCi0tIGBgc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKClgYCBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCBzb3VyY2VfYWRkcmVzcwotICBwYXJhbWV0ZXIuCi0KLS0gSXNzdWUgIzU1MTE6IGBgemlwZmlsZS5aaXBGaWxlYGAgY2FuIG5vdyBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2VyLgotICBJbml0aWFsIHBhdGNoIGJ5IEJyaWFuIEN1cnRpbi4KLQotLSBEaXN0dXRpbHMgbm93IGNvcnJlY3RseSBpZGVudGlmaWVzIHRoZSBidWlsZCBhcmNoaXRlY3R1cmUgYXMgIng4Nl82NCIgd2hlbgotICBidWlsZGluZyBvbiBPU1ggMTAuNiB3aXRob3V0ICItYXJjaCIgZmxhZ3MuCi0KLS0gSXNzdWUgIzc1NTY6IERpc3R1dGlscycgbXN2Yzljb21waWxlciBub3cgb3BlbnMgdGhlIE1TVkMgTWFuaWZlc3QgZmlsZSBpbiB0ZXh0Ci0gIG1vZGUuCi0KLS0gSXNzdWUgIzc1NTI6IFJlbW92ZWQgbGluZSBmZWVkIGluIHRoZSBiYXNlNjQgQXV0aG9yaXphdGlvbiBoZWFkZXIgaW4gdGhlCi0gIERpc3R1dGlscyB1cGxvYWQgY29tbWFuZCB0byBhdm9pZCBhbiBlcnJvciB3aGVuIFB5UEkgcmVhZHMgaXQuICBUaGlzIG9jY3VycyBvbgotICBsb25nIHBhc3N3b3Jkcy4gIEluaXRpYWwgcGF0Y2ggYnkgSlAgU3QuIFBpZXJyZS4KLQotLSBJc3N1ZSAjNzIzMTogdXJsbGliMiBjYW5ub3QgaGFuZGxlIGh0dHBzIHdpdGggcHJveHkgcmVxdWlyaW5nIGF1dGguICBQYXRjaCBieQotICBUYXRzdWhpcm8gVHN1amlrYXdhLgotCi0tIElzc3VlICM3MzQ5OiBNYWtlIG1ldGhvZHMgb2YgZmlsZSBvYmplY3RzIGluIHRoZSBpbyBtb2R1bGUgYWNjZXB0IE5vbmUgYXMgYW4KLSAgYXJndW1lbnQgd2hlcmUgZmlsZS1saWtlIG9iamVjdHMgKGllIFN0cmluZ0lPIGFuZCBCeXRlc0lPKSBhY2NlcHQgdGhlbSB0byBtZWFuCi0gIHRoZSBzYW1lIGFzIHBhc3Npbmcgbm8gYXJndW1lbnQuCi0KLS0gSXNzdWUgIzczNDg6IGBgU3RyaW5nSU8uU3RyaW5nSU8ucmVhZGxpbmUoLTEpYGAgbm93IGFjdHMgYXMgaWYgaXQgZ290IG5vCi0gIGFyZ3VtZW50IGxpa2Ugb3RoZXIgZmlsZSBvYmplY3RzLgotCi0tIElzc3VlICM3MzU3OiB0YXJmaWxlIG5vIGxvbmdlciBzdXBwcmVzc2VzIGZhdGFsIGV4dHJhY3Rpb24gZXJyb3JzIGJ5IGRlZmF1bHQuCi0KLS0gSXNzdWUgIzc0NzA6IGxvZ2dpbmc6IEZpeCBidWcgaW4gVW5pY29kZSBlbmNvZGluZyBmYWxsYmFjay4KLQotLSBJc3N1ZSAjNTk0OTogRml4ZWQgSU1BUDRfU1NMIGhhbmcgd2hlbiB0aGUgSU1BUCBzZXJ2ZXIgcmVzcG9uc2UgaXMgbWlzc2luZwotICBwcm9wZXIgZW5kLW9mLWxpbmUgdGVybWluYXRpb24uCi0KLS0gSXNzdWUgIzc0NTc6IEFkZGVkIGEgcmVhZF9wa2dfZmlsZSBtZXRob2QgdG8KLSAgYGBkaXN0dXRpbHMuZGlzdC5EaXN0cmlidXRpb25NZXRhZGF0YWBgLgotCi0tIElzc3VlICMzNzQ1OiBVbmRvIHRoZSAyLjdhMSBjaGFuZ2UgdG8gaGF2ZSBoYXNobGliIHRvIHJlamVjdCB1bmljb2RlIGFuZCBub24KLSAgYnVmZmVyIEFQSSBzdXBwb3J0aW5nIG9iamVjdHMgYXMgaW5wdXQuICBUaGF0IGJlaGF2aW9yIGlzIGZvciAzLnggb25seS4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzc3Njc6IE5ldyBmdW5jdGlvbiBgYFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coKWBgIGFkZGVkLCBhbmFsb2dvdXMKLSAgdG8gYGBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3coKWBgLgotCi0tIElzc3VlICM1MDgwOiBUaGUgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgYGBQeUFyZ19QYXJzZVR1cGxlKClgYCwKLSAgYGBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKWBgLCBgYFB5QXJnX1ZhUGFyc2UoKWBgLAotICBgYFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzKClgYCBhbmQgYGBQeUFyZ19QYXJzZSgpYGAgbm8gbG9uZ2VyIGFjY2VwdAotICBmbG9hdCBhcmd1bWVudHMgZm9yIGludGVnZXIgZm9ybWF0IGNvZGVzIChvdGhlciB0aGFuICdMJyk6IHByZXZpb3VzbHkgYW4KLSAgYXR0ZW1wdCB0byBwYXNzIGEgZmxvYXQgcmVzdWx0ZWQgaW4gYSBEZXByZWNhdGlvbldhcm5pbmc7IG5vdyBpdCBnaXZlcyBhCi0gIFR5cGVFcnJvci4gIEZvciB0aGUgJ0wnIGZvcm1hdCBjb2RlICh3aGljaCBwcmV2aW91c2x5IGhhZCBubyB3YXJuaW5nKSB0aGVyZSBpcwotICBub3cgYSBEZXByZWNhdGlvbldhcm5pbmcuCi0KLS0gSXNzdWUgIzcwMzM6IEZ1bmN0aW9uIGBgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYygpYGAgYWRkZWQuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICM2NDkxOiBBbGxvdyAtLXdpdGgtZGJtbGlib3JkZXIgdG8gc3BlY2lmeSB0aGF0IG5vIGRibXMgd2lsbCBiZSBidWlsdC4KLQotLSBJc3N1ZSAjNjk0MzogVXNlIHBrZy1jb25maWcgdG8gZmluZCB0aGUgbGliZmZpIGhlYWRlcnMgd2hlbiB0aGUKLSAgYGAtLXdpdGgtc3lzdGVtLWZmaWBgIGZsYWcgaXMgdXNlZC4KLQotLSBJc3N1ZSAjNzYwOTogQWRkIGEgYGAtLXdpdGgtc3lzdGVtLWV4cGF0YGAgb3B0aW9uIHRoYXQgY2F1c2VzIHRoZSBzeXN0ZW0ncwotICBleHBhdCBsaWJyYXJ5IHRvIGJlIHVzZWQgZm9yIHRoZSBweWV4cGF0IG1vZHVsZSBpbnN0ZWFkIG9mIHRoZSBvbmUgaW5jbHVkZWQKLSAgd2l0aCBQeXRob24uCi0KLS0gSXNzdWUgIzc1ODk6IE9ubHkgYnVpbGQgdGhlIG5pcyBtb2R1bGUgd2hlbiB0aGUgY29ycmVjdCBoZWFkZXIgZmlsZXMgYXJlCi0gIGZvdW5kLgotCi0tIFN3aXRjaCB0byBPcGVuU1NMIDAuOS44bCBhbmQgc3FsaXRlIDMuNi4yMSBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM3NTQxOiB3aGVuIHVzaW5nIGBgcHl0aG9uLWNvbmZpZ2BgIHdpdGggYSBmcmFtZXdvcmsgaW5zdGFsbCB0aGUKLSAgY29tcGlsZXIgbWlnaHQgdXNlIHRoZSB3cm9uZyBsaWJyYXJ5LgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjNzM3NjogSW5zdGVhZCBvZiBydW5uaW5nIGEgc2VsZi10ZXN0ICh3aGljaCB3YXMgZmFpbGluZykgd2hlbiBjYWxsZWQKLSAgd2l0aCBubyBhcmd1bWVudHMsIGRvY3Rlc3QucHkgbm93IGdpdmVzIGEgdXNhZ2UgbWVzc2FnZS4KLQotLSBJc3N1ZSAjNzM5NjogRml4IHJlZ3J0ZXN0IC1zLCB3aGljaCB3YXMgYnJva2VuIGJ5IHRoZSAtaiBlbmhhbmNlbWVudC4KLQotLSBJc3N1ZSAjNzQ5ODogdGVzdF9tdWx0aXByb2Nlc3Npbmcgbm93IHVzZXMgdGVzdF9zdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQKLSAgaW5zdGVhZCBvZiBhIGhhcmRjb2RlZCBwb3J0IG51bWJlciBpbiB0ZXN0X3JhcGlkX3Jlc3RhcnQuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi43IGFscGhhIDEKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwMDktMTItMDUqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICM3NDE5OiBgYGxvY2FsZS5zZXRsb2NhbGUoKWBgIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlciBvbiBXaW5kb3dzCi0gIHdoZW4gY2FsbGVkIHdpdGggaW52YWxpZCB2YWx1ZXMuCi0KLS0gSXNzdWUgIzMzODI6ICdGJyBmb3JtYXR0aW5nIGZvciBmbG9hdCBhbmQgY29tcGxleCBub3cgY29udmVydCB0aGUgcmVzdWx0IHRvCi0gIHVwcGVyIGNhc2UuICBUaGlzIG9ubHkgYWZmZWN0cyAnaW5mJyBhbmQgJ25hbicsIHNpbmNlICdmJyBubyBsb25nZXIgY29udmVydHMKLSAgdG8gJ2cnIGZvciBsYXJnZSB2YWx1ZXMuCi0KLS0gUmVtb3ZlIHN3aXRjaCBmcm9tICIlZiIgZm9ybWF0dGluZyB0byAiJWciIGZvcm1hdHRpbmcgZm9yIGZsb2F0cyBsYXJnZXIgdGhhbgotICAxZTUwIGluIGFic29sdXRlIHZhbHVlLgotCi0tIFJlbW92ZSByZXN0cmljdGlvbnMgb24gcHJlY2lzaW9uIHdoZW4gZm9ybWF0dGluZyBmbG9hdHMuICBFLmcuLCAiJS4xMjBnIiAlCi0gIDFlLTEwMCB1c2VkIHRvIHJhaXNlIE92ZXJmbG93RXJyb3IsIGJ1dCBub3cgZ2l2ZXMgdGhlIHJlcXVlc3RlZCAxMjAKLSAgc2lnbmlmaWNhbnQgZGlnaXRzIGluc3RlYWQuCi0KLS0gQWRkIFB5M2sgd2FybmluZ3MgZm9yIHBhcmFtZXRlciBuYW1lcyBpbiBwYXJlbnRoZXNlcy4KLQotLSBJc3N1ZSAjNzM2MjogR2l2ZSBhIHByb3BlciBlcnJvciBtZXNzYWdlIGZvciBgYGRlZiBmKCh4KT0zKTogcGFzc2BgLgotCi0tIElzc3VlICM3MDg1OiBGaXggY3Jhc2ggd2hlbiBpbXBvcnRpbmcgc29tZSBleHRlbnNpb25zIGluIGEgdGhyZWFkIG9uIE1hY09TWAotICAxMC42LgotCi0tIElzc3VlICM3MTE3OiBgYHJlcHIoeClgYCBmb3IgYSBmbG9hdCB4IHJldHVybnMgYSByZXN1bHQgYmFzZWQgb24gdGhlIHNob3J0ZXN0Ci0gIGRlY2ltYWwgc3RyaW5nIHRoYXQncyBndWFyYW50ZWVkIHRvIHJvdW5kIGJhY2sgdG8geCB1bmRlciBjb3JyZWN0IHJvdW5kaW5nCi0gICh3aXRoIHJvdW5kLWhhbGYtdG8tZXZlbiByb3VuZGluZyBtb2RlKS4gIFByZXZpb3VzbHkgaXQgZ2F2ZSBhIHN0cmluZyBiYXNlZCBvbgotICByb3VuZGluZyB4IHRvIDE3IGRlY2ltYWwgZGlnaXRzLiAgcmVwcih4KSBmb3IgYSBjb21wbGV4IG51bWJlciBiZWhhdmVzCi0gIHNpbWlsYXJseS4gIE9uIHBsYXRmb3JtcyB3aGVyZSB0aGUgY29ycmVjdGx5LXJvdW5kZWQgc3RydG9kIGFuZCBkdG9hIGNvZGUgaXMKLSAgbm90IHN1cHBvcnRlZCAoc2VlIGJlbG93KSwgcmVwciBpcyB1bmNoYW5nZWQuCi0KLS0gSXNzdWUgIzcxMTc6IE9uIGFsbW9zdCBhbGwgcGxhdGZvcm1zOiBmbG9hdC10by1zdHJpbmcgYW5kIHN0cmluZy10by1mbG9hdAotICBjb252ZXJzaW9ucyB3aXRoaW4gUHl0aG9uIGFyZSBub3cgY29ycmVjdGx5IHJvdW5kZWQuICBQbGFjZXMgdGhlc2UgY29udmVyc2lvbnMKLSAgb2NjdXIgaW5jbHVkZTogc3RyIGZvciBmbG9hdHMgYW5kIGNvbXBsZXggbnVtYmVyczsgdGhlIGZsb2F0IGFuZCBjb21wbGV4Ci0gIGNvbnN0cnVjdG9yczsgb2xkLXN0eWxlIGFuZCBuZXctc3R5bGUgbnVtZXJpYyBmb3JtYXR0aW5nOyBzZXJpYWxpemF0aW9uIGFuZAotICBkZXNlcmlhbGl6YXRpb24gb2YgZmxvYXRzIGFuZCBjb21wbGV4IG51bWJlcnMgdXNpbmcgbWFyc2hhbCwgcGlja2xlIGFuZCBqc29uOwotICBwYXJzaW5nIG9mIGZsb2F0IGFuZCBpbWFnaW5hcnkgbGl0ZXJhbHMgaW4gUHl0aG9uIGNvZGU7IERlY2ltYWwtdG8tZmxvYXQKLSAgY29udmVyc2lvbi4KLQotICBUaGUgY29udmVyc2lvbnMgdXNlIGEgUHl0aG9uLWFkYXB0ZWQgdmVyc2lvbiBvZiBEYXZpZCBHYXkncyB3ZWxsLWtub3duIGR0b2EuYywKLSAgcHJvdmlkaW5nIGNvcnJlY3RseS1yb3VuZGVkIHN0cnRvZCBhbmQgZHRvYSBDIGZ1bmN0aW9ucy4gIFRoaXMgY29kZSBpcwotICBzdXBwb3J0ZWQgb24gV2luZG93cywgYW5kIG9uIFVuaXgtbGlrZSBwbGF0Zm9ybXMgdXNpbmcgZ2NjLCBpY2Mgb3Igc3VuY2MgYXMKLSAgdGhlIEMgY29tcGlsZXIuICBUaGVyZSBtYXkgYmUgYSBzbWFsbCBudW1iZXIgb2YgcGxhdGZvcm1zIG9uIHdoaWNoIGNvcnJlY3QKLSAgb3BlcmF0aW9uIG9mIHRoaXMgY29kZSBjYW5ub3QgYmUgZ3VhcmFudGVlZCwgc28gdGhlIGNvZGUgaXMgbm90IHVzZWQ6IG5vdGFibHksCi0gIHRoaXMgYXBwbGllcyB0byBwbGF0Zm9ybXMgd2hlcmUgdGhlIEMgZG91YmxlIGZvcm1hdCBpcyBub3QgSUVFRSA3NTQgYmluYXJ5NjQsCi0gIGFuZCB0byBwbGF0Zm9ybXMgb24geDg2IGhhcmR3YXJlIHdoZXJlIHRoZSB4ODcgRlBVIGlzIHNldCB0byA2NC1iaXQgcHJlY2lzaW9uCi0gIGFuZCBQeXRob24ncyBjb25maWd1cmUgc2NyaXB0IGlzIHVuYWJsZSB0byBkZXRlcm1pbmUgaG93IHRvIGNoYW5nZSB0aGUgRlBVCi0gIHByZWNpc2lvbi4gIE9uIHRoZXNlIHBsYXRmb3JtcyBjb252ZXJzaW9ucyB1c2UgdGhlIHBsYXRmb3JtIHN0cnRvZCBhbmQgZHRvYSwKLSAgYXMgYmVmb3JlLgotCi0tIElzc3VlICM3MTE3OiBCYWNrcG9ydCByb3VuZCBpbXBsZW1lbnRhdGlvbiBmcm9tIFB5dGhvbiAzLnguICBgYHJvdW5kKClgYCBub3cKLSAgdXNlcyB0aGUgY29ycmVjdGx5LXJvdW5kZWQgc3RyaW5nIDwtPiBmbG9hdCBjb252ZXJzaW9ucyBkZXNjcmliZWQgYWJvdmUgKHdoZW4KLSAgYXZhaWxhYmxlKSwgYW5kIHNvIHByb2R1Y2VzIGNvcnJlY3RseSByb3VuZGVkIHJlc3VsdHMgdGhhdCB3aWxsIGRpc3BsYXkgbmljZWx5Ci0gIHVuZGVyIHRoZSBmbG9hdCByZXByLiAgVGhlcmUgYXJlIHR3byByZWxhdGVkIHNtYWxsIGNoYW5nZXM6ICgxKSByb3VuZCBub3cKLSAgYWNjZXB0cyBhbnkgY2xhc3Mgd2l0aCBhbiBgYF9faW5kZXhfXygpYGAgbWV0aG9kIGZvciBpdHMgc2Vjb25kIGFyZ3VtZW50IChidXQKLSAgbm8gbG9uZ2VyIGFjY2VwdHMgZmxvYXRzIGZvciB0aGUgc2Vjb25kIGFyZ3VtZW50KSwgYW5kICgyKSBhbiBleGNlc3NpdmVseQotICBsYXJnZSBzZWNvbmQgaW50ZWdlciBhcmd1bWVudCAoZS5nLiwgYGByb3VuZCgxLjIzNCwgMTAqKjEwMClgYCkgbm8gbG9uZ2VyCi0gIHJhaXNlcyBhbiBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzE3NTcxMjY6IEZpeCB0aGUgY3lyaWxsaWMtYXNpYW4gYWxpYXMgZm9yIHRoZSBwdGNwMTU0IGVuY29kaW5nLgotCi0tIEZpeCBzZXZlcmFsIGlzc3VlcyB3aXRoIGBgY29tcGlsZSgpYGAuICBUaGUgaW5wdXQgY2FuIG5vdyBjb250YWluIFdpbmRvd3MgYW5kCi0gIE1hYyBuZXdsaW5lcyBhbmQgaXMgbm8gbG9uZ2VyIHJlcXVpcmVkIHRvIGVuZCBpbiBhIG5ld2xpbmUuCi0KLS0gUmVtb3ZlIGxlbmd0aCBsaW1pdGF0aW9uIHdoZW4gY29uc3RydWN0aW5nIGEgY29tcGxleCBudW1iZXIgZnJvbSBhIHVuaWNvZGUKLSAgc3RyaW5nLgotCi0tIElzc3VlICM3MjQ0OiBgYGl0ZXJ0b29scy5pemlwX2xvbmdlc3QoKWBgIG5vIGxvbmdlciBpZ25vcmVzIGV4Y2VwdGlvbnMgcmFpc2VkCi0gIGR1cmluZyB0aGUgZm9ybWF0aW9uIG9mIGFuIG91dHB1dCB0dXBsZS4KLQotLSBJc3N1ZSAjMTA4NzQxODogQm9vc3QgcGVyZm9ybWFuY2Ugb2YgYml0d2lzZSBvcGVyYXRpb25zIGZvciBsb25ncy4KLQotLSBJc3N1ZSAjMTcyMjM0NDogYGB0aHJlYWRpbmcuX3NodXRkb3duKClgYCBpcyBub3cgY2FsbGVkIGluIGBgUHlfRmluYWxpemUoKWBgLAotICB3aGljaCBmaXhlcyB0aGUgcHJvYmxlbSBvZiBzb21lIGV4Y2VwdGlvbnMgYmVpbmcgdGhyb3duIGF0IHNodXRkb3duIHdoZW4gdGhlCi0gIGludGVycHJldGVyIGlzIGtpbGxlZC4gIFBhdGNoIGJ5IEFkYW0gT2xzZW4uCi0KLS0gSXNzdWUgIzcxNjg6IERvY3VtZW50IGBgUHlGbG9hdF9Bc1N0cmluZygpYGAgYW5kIGBgUHlGbG9hdF9Bc1JlcHJTdHJpbmcoKWBgLAotICBhbmQgbm90ZSB0aGF0IHRoZXkgYXJlIHVuc2FmZSBhbmQgZGVwcmVjYXRlZC4KLQotLSBJc3N1ZSAjNzEyMDogbG9nZ2luZzogUmVtb3ZlIGltcG9ydCBvZiBtdWx0aXByb2Nlc3Npbmcgd2hpY2ggaXMgY2F1c2luZyBjcmFzaAotICBpbiBHQUUuCi0KLS0gSXNzdWUgIzcxNDA6IFRoZSBgYF9fZGljdF9fYGAgb2YgYSBtb2R1bGUgc2hvdWxkIG5vdCBiZSBjbGVhcmVkIHVubGVzcyB0aGUKLSAgbW9kdWxlIGlzIHRoZSBvbmx5IG9iamVjdCBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIGl0LgotCi0tIElzc3VlICMxNzU0MDk0OiBJbXByb3ZlIHRoZSBzdGFjayBkZXB0aCBjYWxjdWxhdGlvbiBpbiB0aGUgY29tcGlsZXIuICBUaGVyZQotICBzaG91bGQgYmUgbm8gb3RoZXIgZWZmZWN0IHRoYW4gYSBzbWFsbCBkZWNyZWFzZSBpbiBtZW1vcnkgdXNlLiAgUGF0Y2ggYnkKLSAgQ2hyaXN0b3BoZXIgVHVyIExlc25pZXdza2ktTGFhcy4KLQotLSBJc3N1ZSAjNzA4NDogRml4IGEgKHZlcnkgdW5saWtlbHkpIGNyYXNoIHdoZW4gcHJpbnRpbmcgYSBsaXN0IGZyb20gb25lIHRocmVhZCwKLSAgYW5kIG11dGF0aW5nIGl0IGZyb20gYW5vdGhlciBvbmUuICBQYXRjaCBieSBTY290dCBEaWFsLgotCi0tIElzc3VlICMxNTcxMTg0OiBUaGUgVW5pY29kZSBkYXRhYmFzZSBjb250YWlucyBwcm9wZXJ0aWVzIGZvciBtb3JlIGNoYXJhY3RlcnMuCi0gIFRoZSB0YWJsZXMgZm9yIGNvZGUgcG9pbnRzIHJlcHJlc2VudGluZyBudW1lcmljIHZhbHVlcywgd2hpdGUgc3BhY2VzIG9yIGxpbmUKLSAgYnJlYWtzIGFyZSBub3cgZ2VuZXJhdGVkIGZyb20gdGhlIG9mZmljaWFsIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGZpbGVzLAotICBhbmQgaW5jbHVkZSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBVbmloYW4udHh0IGZpbGUuCi0KLS0gSXNzdWUgIzcwNTA6IEZpeCBhIFN5c3RlbUVycm9yIHdoZW4gdHJ5aW5nIHRvIHVzZSB1bnBhY2tpbmcgYW5kIGF1Z21lbnRlZAotICBhc3NpZ25tZW50LgotCi0tIElzc3VlICM1MzI5OiBGaXggYGBvcy5wb3BlbipgYCByZWdyZXNzaW9uIGZyb20gMi41IHdpdGggY29tbWFuZHMgYXMgYSBzZXF1ZW5jZQotICBydW5uaW5nIHRocm91Z2ggdGhlIHNoZWxsLiAgUGF0Y2ggYnkgSmVhbi1QYXVsIENhbGRlcm9uZSBhbmQgSmFuaSBIYWthbGEuCi0KLS0gSXNzdWUgIzcwMTk6IFJhaXNlIFZhbHVlRXJyb3Igd2hlbiB1bm1hcnNoYWxsaW5nIGJhZCBsb25nIGRhdGEsIGluc3RlYWQgb2YKLSAgcHJvZHVjaW5nIGludGVybmFsbHkgaW5jb25zaXN0ZW50IFB5dGhvbiBsb25ncy4KLQotLSBJc3N1ZSAjNjk5MDogRml4IGBgdGhyZWFkaW5nLmxvY2FsYGAgc3ViY2xhc3NlcyBsZWF2aW5nIG9sZCBzdGF0ZSBhcm91bmQgYWZ0ZXIKLSAgYSByZWZlcmVuY2UgY3ljbGUgR0Mgd2hpY2ggY291bGQgYmUgcmVjeWNsZWQgYnkgbmV3IGxvY2Fscy4KLQotLSBJc3N1ZSAjNjMwMDogdW5pY29kZS5lbmNvZGUsIHVuaWNvZGUuZGVjb2RlLCBzdHIuZGVjb2RlLCBhbmQgc3RyLmVuY29kZSBub3cKLSAgdGFrZSBrZXl3b3JkIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjNjkyMjogRml4IGFuIGluZmluaXRlIGxvb3Agd2hlbiB0cnlpbmcgdG8gZGVjb2RlIGFuIGludmFsaWQgVVRGLTMyCi0gIHN0cmVhbSB3aXRoIGEgbm9uLXJhaXNpbmcgZXJyb3IgaGFuZGxlciBsaWtlICJyZXBsYWNlIiBvciAiaWdub3JlIi4KLQotLSBJc3N1ZSAjNjcxMzogSW1wcm92ZSBwZXJmb3JtYW5jZSBvZiBiYXNlIDEwIGludCAtPiBzdHJpbmcgYW5kIGxvbmcgLT4gc3RyaW5nCi0gIGNvbnZlcnNpb25zLgotCi0tIElzc3VlICMxNTkwODY0OiBGaXggcG90ZW50aWFsIGRlYWRsb2NrIHdoZW4gbWl4aW5nIHRocmVhZHMgYW5kIGZvcmsoKS4KLQotLSBJc3N1ZSAjNjg0NDogRG8gbm90IGVtaXQgRGVwcmVjYXRpb25XYXJuaW5ncyB3aGVuIGFjY2Vzc2luZyBhICJtZXNzYWdlIgotICBhdHRyaWJ1dGUgb24gZXhjZXB0aW9ucyB0aGF0IHdhcyBzZXQgZXhwbGljaXRseS4KLQotLSBJc3N1ZSAjNjg0NjogRml4IGJ1ZyB3aGVyZSBieXRlYXJyYXkucG9wKCkgcmV0dXJucyBuZWdhdGl2ZSBpbnRlZ2Vycy4KLQotLSBgYGNsYXNzbWV0aG9kKClgYCBubyBsb25nZXIgY2hlY2tzIGlmIGl0cyBhcmd1bWVudCBpcyBjYWxsYWJsZS4KLQotLSBJc3N1ZSAjNjc1MDogQSB0ZXh0IGZpbGUgb3BlbmVkIHdpdGggYGBpby5vcGVuKClgYCBjb3VsZCBkdXBsaWNhdGUgaXRzIG91dHB1dAotICB3aGVuIHdyaXRpbmcgZnJvbSBtdWx0aXBsZSB0aHJlYWRzIGF0IHRoZSBzYW1lIHRpbWUuCi0KLS0gSXNzdWUgIzY3MDQ6IEltcHJvdmUgdGhlIGNvbF9vZmZzZXQgaW4gQVNUIGZvciAiZm9yIiBzdGF0ZW1lbnRzIHdpdGggYSB0YXJnZXQKLSAgb2YgdHVwbGUgdW5wYWNraW5nLgotCi0tIElzc3VlICM2NzA3OiBgYGRpcigpYGAgb24gYW4gdW5pbml0aWFsaXplZCBtb2R1bGUgY2F1c2VkIGEgY3Jhc2guCi0KLS0gSXNzdWUgIzY1NDA6IEZpeGVkIGNyYXNoIGZvciBgYGJ5dGVhcnJheS50cmFuc2xhdGUoKWBgIHdpdGggaW52YWxpZCBwYXJhbWV0ZXJzLgotCi0tIElzc3VlICM2NTczOiBgYHNldC51bmlvbigpYGAgc3RvcHBlZCBwcm9jZXNzaW5nIGlucHV0cyBpZiBhbiBpbnN0YW5jZSBvZiBzZWxmCi0gIG9jY3VycmVkIGluIHRoZSBhcmd1bWVudCBjaGFpbi4KLQotLSBJc3N1ZSAjMTYxNjk3OTogQWRkZWQgdGhlIGNwNzIwIChBcmFiaWMgRE9TKSBlbmNvZGluZy4KLQotLSBJc3N1ZSAjNjA3MDogT24gcG9zaXggcGxhdGZvcm1zIGltcG9ydCBubyBsb25nZXIgY29waWVzIHRoZSBleGVjdXRlIGJpdCBmcm9tCi0gIHRoZSAucHkgZmlsZSB0byB0aGUgLnB5YyBmaWxlIGlmIGl0IGlzIHNldC4gIFBhdGNoIGJ5IE1hcmNvIE4uCi0KLS0gSXNzdWUgIzQ2MTg6IFdoZW4gdW5pY29kZSBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byBgYHByaW50KClgYCwgdGhlIGRlZmF1bHQKLSAgc2VwYXJhdG9yIGFuZCBlbmQgc2hvdWxkIGJlIHVuaWNvZGUgYWxzby4KLQotLSBJc3N1ZSAjNjExOTogRml4ZWQgYW4gaW5jb3JyZWN0IFB5M2sgd2FybmluZyBhYm91dCBvcmRlciBjb21wYXJpc29ucyBvZgotICBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzYzNDc6IEluY2x1ZGUgaW50dHlwZXMuaCBhcyB3ZWxsIGFzIHN0ZGludC5oIGluIHB5cG9ydC5oLiAgVGhpcyBmaXhlcyBhCi0gIGJ1aWxkIGZhaWx1cmUgb24gSFAtVVg6IGludDMyX3QgYW5kIHVpbnQzMl90IGFyZSBkZWZpbmVkIGluIGludHR5cGVzLmggaW5zdGVhZAotICBvZiBzdGRpbnQuaCBvbiB0aGF0IHBsYXRmb3JtLgotCi0tIElzc3VlICM0ODU2OiBSZW1vdmUgY2hlY2tzIGZvciB3aW4gTlQuCi0KLS0gSXNzdWUgIzIwMTY6IEZpeGVkIGEgY3Jhc2ggaW4gYSBjb3JuZXIgY2FzZSB3aGVyZSB0aGUgZGljdGlvbmFyeSBvZiBrZXl3b3JkCi0gIGFyZ3VtZW50cyBjb3VsZCBiZSBtb2RpZmllZCBkdXJpbmcgdGhlIGZ1bmN0aW9uIGNhbGwgc2V0dXAuCi0KLS0gUmVtb3ZlZCB0aGUgaXBhZGRyIG1vZHVsZS4KLQotLSBJc3N1ZSAjNjMyOTogRml4ZWQgaXRlcmF0aW9uIGZvciBtZW1vcnl2aWV3IG9iamVjdHMgKGl0IHdhcyBiZWluZyBibG9ja2VkCi0gIGJlY2F1c2UgaXQgd2Fzbid0IHJlY29nbml6ZWQgYXMgYSBzZXF1ZW5jZSkuCi0KLS0gSXNzdWUgIzYyODk6IEVuY29kaW5nIGVycm9ycyBmcm9tIGBgY29tcGlsZSgpYGAgd2VyZSBiZWluZyBtYXNrZWQuCi0KLS0gV2hlbiBubyBtb2R1bGUgaXMgZ2l2ZW4gaW4gYSByZWxhdGl2ZSBpbXBvcnQsIHRoZSBtb2R1bGUgZmllbGQgb2YgdGhlCi0gIEltcG9ydEZyb20gQVNUIG5vZGUgaXMgbm93IE5vbmUgaW5zdGVhZCBvZiBhbiBlbXB0eSBzdHJpbmcuCi0KLS0gQXNzaWdubWVudCB0byBOb25lIHVzaW5nIGltcG9ydCBzdGF0ZW1lbnRzIG5vdyByYWlzZXMgYSBTeW50YXhFcnJvci4KLQotLSBJc3N1ZSAjNDU0NzogV2hlbiBkZWJ1Z2dpbmcgYSB2ZXJ5IGxhcmdlIGZ1bmN0aW9uLCBpdCB3YXMgbm90IGFsd2F5cyBwb3NzaWJsZQotICB0byB1cGRhdGUgdGhlIGxpbmVubyBhdHRyaWJ1dGUgb2YgdGhlIGN1cnJlbnQgZnJhbWUuCi0KLS0gSXNzdWUgIzUzMzA6IEMgZnVuY3Rpb25zIGNhbGxlZCB3aXRoIGtleXdvcmQgYXJndW1lbnRzIHdlcmUgbm90IHJlcG9ydGVkIGJ5Ci0gIHRoZSB2YXJpb3VzIHByb2ZpbGluZyBtb2R1bGVzIChwcm9maWxlLCBjUHJvZmlsZSkuICBQYXRjaCBieSBIYWdlbiBGw7xyc3RlbmF1LgotCi0tIElzc3VlICM1OTgyOiBzdGF0aWNtZXRob2QgYW5kIGNsYXNzbWV0aG9kIG5vdyBleHBvc2UgdGhlIHdyYXBwZWQgZnVuY3Rpb24gd2l0aAotICBgYF9fZnVuY19fYGAuCi0KLS0gQWRkZWQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBtYW5hZ2VycyBpbiB0aGUgc2FtZSB3aXRoLXN0YXRlbWVudC4KLSAgRGVwcmVjYXRlZCBgYGNvbnRleHRsaWIubmVzdGVkKClgYCB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkLgotCi0tIElzc3VlICM2MTAxOiBBIG5ldyBvcGNvZGUsIFNFVFVQX1dJVEgsIGhhcyBiZWVuIGFkZGVkIHRvIHNwZWVkIHVwIHRoZSB3aXRoCi0gIHN0YXRlbWVudCBhbmQgY29ycmVjdGx5IGxvb2t1cCB0aGUgX19lbnRlcl9fIGFuZCBfX2V4aXRfXyBzcGVjaWFsIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzU4Mjk6IGNvbXBsZXgoIjFlNTAwIikgbm8gbG9uZ2VyIHJhaXNlcyBPdmVyZmxvd0Vycm9yLiAgVGhpcyBtYWtlcyBpdAotICBjb25zaXN0ZW50IHdpdGggZmxvYXQoIjFlNTAwIikgYW5kIGludGVycHJldGF0aW9uIG9mIHJlYWwgYW5kIGltYWdpbmFyeQotICBsaXRlcmFscy4KLQotLSBJc3N1ZSAjMzUyNzogUmVtb3ZlZCBQeV9XSU5fV0lERV9GSUxFTkFNRVMgd2hpY2ggaXMgbm90IHVzZWQgYW55IG1vcmUuCi0KLS0gYGBfX2luc3RhbmNlY2hlY2tfXygpYGAgYW5kIGBgX19zdWJjbGFzc2NoZWNrX18oKWBgIGFyZSBub3cgY29tcGxldGVseSBpZ25vcmVkCi0gIG9uIGNsYXNzaWMgY2xhc3NlcyBhbmQgaW5zdGFuY2VzLgotCi0tIElzc3VlICM1OTk0OiBUaGUgbWFyc2hhbCBtb2R1bGUgbm93IGhhcyBkb2NzdHJpbmdzLgotCi0tIElzc3VlICM1OTgxOiBGaXggdGhyZWUgbWlub3IgaW5mL25hbiBpc3N1ZXMgaW4gZmxvYXQuZnJvbWhleDoKLQotICAoMSkgaW5mIGFuZCBuYW4gc3RyaW5ncyB3aXRoIHRyYWlsaW5nIHdoaXRlc3BhY2Ugd2VyZSBpbmNvcnJlY3RseSByZWplY3RlZDsKLSAgKDIpIHBhcnNpbmcgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgaW5maW5pdGllcyBhbmQgbmFucyB3YXMgbG9jYWxlIGF3YXJlOyBhbmQKLSAgKDMpIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBmcm9taGV4KCctbmFuJykgZGlkbid0IG1hdGNoIHRoYXQgb2YgZmxvYXQoJy1uYW4nKS4KLQotLSBJc3N1ZSAjNTkyMDogRm9yIGBgZmxvYXQuX19mb3JtYXRfXygpYGAsIGNoYW5nZSB0aGUgYmVoYXZpb3Igd2l0aCB0aGUgZW1wdHkKLSAgcHJlc2VudGF0aW9uIHR5cGUgKHRoYXQgaXMsIG5vdCBvbmUgb2YgJ2UnLCAnZicsICdnJywgb3IgJ24nKSB0byBiZSBsaWtlICdnJwotICBidXQgd2l0aCBhdCBsZWFzdCBvbmUgZGVjaW1hbCBwb2ludCBhbmQgd2l0aCBhIGRlZmF1bHQgcHJlY2lzaW9uCi0gIG9mIDEyLiBQcmV2aW91c2x5LCB0aGUgYmVoYXZpb3IgdGhlIHNhbWUgYnV0IHdpdGggYSBkZWZhdWx0IHByZWNpc2lvbiBvZiA2LgotICBUaGlzIG1vcmUgY2xvc2VseSBtYXRjaGVzIGBgc3RyKClgYCwgYW5kIHJlZHVjZXMgc3VycHJpc2VzIHdoZW4gYWRkaW5nCi0gIGFsaWdubWVudCBmbGFncyB0byB0aGUgZW1wdHkgcHJlc2VudGF0aW9uIHR5cGUuIFRoaXMgYWxzbyBhZmZlY3RzIHRoZSBuZXcKLSAgY29tcGxleC5fX2Zvcm1hdF9fIGluIHRoZSBzYW1lIHdheS4KLQotLSBJc3N1ZSAjNTg5MDogSW4gc3ViY2xhc3NlcyBvZiAncHJvcGVydHknIHRoZSBfX2RvY19fIGF0dHJpYnV0ZSB3YXMgc2hhZG93ZWQgYnkKLSAgY2xhc3N0eXBlJ3MsIGV2ZW4gaWYgaXQgd2FzIE5vbmUuICBwcm9wZXJ0eSBub3cgaW5zZXJ0cyB0aGUgX19kb2NfXyBpbnRvIHRoZQotICBzdWJjbGFzcyBpbnN0YW5jZSBfX2RpY3RfXy4KLQotLSBJc3N1ZSAjNDQyNjogVGhlIFVURi03IGRlY29kZXIgd2FzIHRvbyBzdHJpY3QgYW5kIGRpZG4ndCBhY2NlcHQgc29tZSBsZWdhbAotICBzZXF1ZW5jZXMuICBQYXRjaCBieSBOaWNrIEJhcm5lcyBhbmQgVmljdG9yIFN0aW5uZXIuCi0KLS0gSXNzdWUgIzE1ODg6IEFkZCBjb21wbGV4Ll9fZm9ybWF0X18uIEZvciBleGFtcGxlLCBgYGZvcm1hdChjb21wbGV4KDEsIDIuLzMpLAotICAnLjUnKWBgIG5vdyBwcm9kdWNlcyBhIHNlbnNpYmxlIHJlc3VsdC4KLQotLSBJc3N1ZSAjNTg2NDogRml4IGVtcHR5IGZvcm1hdCBjb2RlIGZvcm1hdHRpbmcgZm9yIGZsb2F0cyBzbyB0aGF0IGl0IG5ldmVyCi0gIGdpdmVzIG1vcmUgdGhhbiB0aGUgcmVxdWVzdGVkIG51bWJlciBvZiBzaWduaWZpY2FudCBkaWdpdHMuCi0KLS0gSXNzdWUgIzU3OTM6IFJhdGlvbmFsaXplIGlzZGlnaXQgLyBpc2FscGhhIC8gdG9sb3dlciwgZXRjLiBJbmNsdWRlcyBuZXcKLSAgUHlfSVNESUdJVCAvIFB5X0lTQUxQSEEgLyBQeV9UT0xPV0VSLCBldGMuIGluIHBjdHlwZXMuaC4KLQotLSBJc3N1ZSAjNDk3MTogRml4IHRpdGxlY2FzZSBmb3IgY2hhcmFjdGVycyB0aGF0IGFyZSB0aGVpciBvd24gdGl0bGVjYXNlLCBidXQKLSAgbm90IHRoZWlyIG93biB1cHBlcmNhc2UuCi0KLS0gSXNzdWUgIzU4MzU6IERlcHJlY2F0ZSBQeU9TX2FzY2lpX2Zvcm1hdGQgYW5kIHJlcGxhY2UgaXQgd2l0aAotICBfUHlPU19kb3VibGVfdG9fc3RyaW5nIG9yIFB5T1NfZG91YmxlX3RvX3N0cmluZy4KLQotLSBJc3N1ZSAjNTI4MzogU2V0dGluZyBfX2NsYXNzX18gaW4gX19kZWxfXyBjYXVzZWQgYSBzZWdmYXVsdC4KLQotLSBJc3N1ZSAjNTgxNjogYGBjb21wbGV4KHJlcHIoeikpYGAgbm93IHJlY292ZXJzIHogZXhhY3RseSwgZXZlbiB3aGVuIHogaW52b2x2ZXMKLSAgbmFucywgaW5mcyBvciBuZWdhdGl2ZSB6ZXJvcy4KLQotLSBJbXBsZW1lbnQgUEVQIDM3OCwgRm9ybWF0IFNwZWNpZmllciBmb3IgVGhvdXNhbmRzIFNlcGFyYXRvciwgZm9yIGZsb2F0cywgaW50cywKLSAgYW5kIGxvbmdzLgotCi0tIElzc3VlICM1NTE1OiAnbicgZm9ybWF0dGluZyBmb3IgaW50cywgbG9uZ3MsIGFuZCBmbG9hdHMgaGFuZGxlcyBsZWFkaW5nIHplcm8KLSAgZm9ybWF0dGluZyBwb29ybHkuCi0KLS0gSXNzdWUgIzU3NzI6IEZvciBmbG9hdC5fX2Zvcm1hdF9fLCBkb24ndCBhZGQgYSB0cmFpbGluZyAiLjAiIGlmIHdlJ3JlIHVzaW5nIG5vCi0gIHR5cGUgY29kZSBhbmQgd2UgaGF2ZSBhbiBleHBvbmVudC4KLQotLSBJc3N1ZSAjMzE2NjogTWFrZSBsb25nIC0+IGZsb2F0IChhbmQgaW50IC0+IGZsb2F0KSBjb252ZXJzaW9ucyBjb3JyZWN0bHkKLSAgcm91bmRlZC4KLQotLSBJc3N1ZSAjNTc4NzogYGBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzb21lX3R5cGUsICJfX2Jhc2VzX18iKWBgIHNlZ2ZhdWx0ZWQgb24KLSAgc29tZSBidWlsdC1pbiB0eXBlcy4KLQotLSBJc3N1ZSAjMTg2OTogRml4IGEgY291cGxlIG9mIG1pbm9yIHJvdW5kKCkgaXNzdWVzLiAgYGByb3VuZCg1ZTE1KzEpYGAgd2FzCi0gIGdpdmluZyA1ZTE1KzI7IGBgcm91bmQoLTAuMClgYCB3YXMgbG9zaW5nIHRoZSBzaWduIG9mIHRoZSB6ZXJvLgotCi0tIElzc3VlICM1NzU5OiBmbG9hdCgpIGRpZG4ndCBjYWxsIF9fZmxvYXRfXyBvbiBzdHIgc3ViY2xhc3Nlcy4KLQotLSBJc3N1ZSAjNTcwNDogVGhlICItMyIgY29tbWFuZC1saW5lIG9wdGlvbiBub3cgaW1wbGllcyAiLXQiLgotCi0tIElzc3VlICMyMTcwOiBSZWZhY3RvcmVkIGBgeG1sLmRvbS5taW5pZG9tLm5vcm1hbGl6ZWBgLCBpbmNyZWFzaW5nIGJvdGggaXRzCi0gIGNsYXJpdHkgYW5kIGl0cyBzcGVlZC4KLQotLSBJc3N1ZSAjMjM5NjogVGhlIG1lbW9yeXZpZXcgb2JqZWN0IHdhcyBiYWNrcG9ydGVkIGZyb20gUHl0aG9uIDMuMS4KLQotLSBGaXggYSBwcm9ibGVtIGluIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbiB0aGF0IGxlYWRzIHRvICJ1bmRldGVjdGVkIGVycm9ycyIKLSAgd2hlbiBoaXR0aW5nIHRoZSByZWN1cnNpb24gbGltaXQgdW5kZXIgY2VydGFpbiBjaXJjdW1zdGFuY2VzLgotCi0tIElzc3VlICMxNjY1MjA2OiBSZW1vdmUgdGhlIGxhc3QgZWFnZXIgaW1wb3J0IGluIF93YXJuaW5ncy5jIGFuZCBtYWtlIGl0IGxhenkuCi0KLS0gSXNzdWUgIzQ4NjU6IE9uIE1hY09TWCAvTGlicmFyeS9QeXRob24vMi43L3NpdGUtcGFja2FnZXMgaXMgYWRkZWQgdG8gdGhlIGVuZAotICBzeXMucGF0aCwgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc3lzdGVtIGluc3RhbGwgb2YgUHl0aG9uLgotCi0tIElzc3VlICM0Njg4OiBBZGQgYSBoZXVyaXN0aWMgc28gdGhhdCB0dXBsZXMgYW5kIGRpY3RzIGNvbnRhaW5pbmcgb25seQotICB1bnRyYWNrYWJsZSBvYmplY3RzIGFyZSBub3QgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuIFRoaXMgY2FuIHJlZHVjZQotICB0aGUgc2l6ZSBvZiBjb2xsZWN0aW9ucyBhbmQgdGhlcmVmb3JlIHRoZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3ZlcmhlYWQgb24KLSAgbG9uZy1ydW5uaW5nIHByb2dyYW1zLCBkZXBlbmRpbmcgb24gdGhlaXIgcGFydGljdWxhciB1c2Ugb2YgZGF0YXR5cGVzLgotCi0tIElzc3VlICM1NTEyOiBSZXdyaXRlIFB5TG9uZyBsb25nIGRpdmlzaW9uIGFsZ29yaXRobSAoeF9kaXZyZW0pIHRvIGltcHJvdmUgaXRzCi0gIHBlcmZvcm1hbmNlLiAgTG9uZyBkaXZpc2lvbnMgYW5kIHJlbWFpbmRlciBvcGVyYXRpb25zIGFyZSBub3cgYmV0d2VlbiA1MCUgYW5kCi0gIDE1MCUgZmFzdGVyLgotCi0tIElzc3VlICM0MjU4OiBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBiYXNlIDIqKjMwIGluc3RlYWQgb2YgYmFzZSAyKioxNSBmb3IgdGhlCi0gIGludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIEJhc2UgMioqMzAgaXMKLSAgZW5hYmxlZCBieSBkZWZhdWx0IG9uIDY0LWJpdCBtYWNoaW5lcy4gIEFkZCAtLWVuYWJsZS1iaWctZGlnaXRzIG9wdGlvbiB0bwotICBjb25maWd1cmUsIHdoaWNoIG92ZXJyaWRlcyB0aGUgZGVmYXVsdC4gIEFkZCBzeXMubG9uZ19pbmZvIHN0cnVjdHNlcSB0bwotICBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBpbnRlcm5hbCBmb3JtYXQuCi0KLS0gSXNzdWUgIzQwMzQ6IEZpeCB3ZWlyZCBhdHRyaWJ1dGUgZXJyb3IgbWVzc2FnZXMgb2YgdGhlIHRyYWNlYmFjayBvYmplY3QuIChBcyBhCi0gIHJlc3VsdCB0cmFjZWJhY2suX19tZW1iZXJzX18gbm8gbG9uZ2VyIGV4aXN0cy4pCi0KLS0gSXNzdWUgIzQ0NzQ6IFB5VW5pY29kZV9Gcm9tV2lkZUNoYXIgbm93IGNvbnZlcnRzIGNoYXJhY3RlcnMgb3V0c2lkZSB0aGUgQk1QIHRvCi0gIHN1cnJvZ2F0ZSBwYWlycywgb24gc3lzdGVtcyB3aXRoIHNpemVvZih3Y2hhcl90KSA9PSA0IGFuZCBzaXplb2YoUHlfVU5JQ09ERSkKLSAgPT0gMi4KLQotLSBJc3N1ZSAjNTIzNzogQWxsb3cgYXV0by1udW1iZXJlZCBmaWVsZHMgaW4gc3RyLmZvcm1hdCgpLiBGb3IgZXhhbXBsZTogYGAne30KLSAge30nLmZvcm1hdCgxLCAyKSA9PSAnMSAyJ2BgLgotCi0tIElzc3VlICMzNjUyOiBNYWtlIHRoZSAnbGluZScgYXJndW1lbnQgZm9yIGBgd2FybmluZ3Muc2hvd3dhcm5pbmcoKWBgIGEKLSAgcmVxdWlyZW1lbnQuICBNZWFucyB0aGUgRGVwcmVjYXRpb25XYXJuaW5nIGZyb20gUHl0aG9uIDIuNiBjYW4gZ28gYXdheS4KLQotLSBJc3N1ZSAjNTI0NzogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gdW5rbm93biBmb3JtYXQgY29kZXMgYXJlIHVzZWQgd2hlbgotICB1c2luZyBgYHN0ci5mb3JtYXQoKWBgIHdpdGggc3RyLCB1bmljb2RlLCBsb25nLCBpbnQsIGFuZCBmbG9hdCBhcmd1bWVudHMuCi0KLS0gUnVubmluZyBQeXRob24gd2l0aCB0aGUgLTMgb3B0aW9uIG5vdyBhbHNvIHdhcm5zIGFib3V0IGNsYXNzaWMgZGl2aXNpb24gZm9yCi0gIGludHMgYW5kIGxvbmdzLgotCi0tIElzc3VlICM1MjYwOiBMb25nIGludGVnZXJzIG5vdyBjb25zdW1lIGxlc3MgbWVtb3J5OiBhdmVyYWdlIHNhdmluZyBpcyAyIGJ5dGVzCi0gIHBlciBsb25nIG9uIGEgMzItYml0IHN5c3RlbSBhbmQgNiBieXRlcyBwZXIgbG9uZyBvbiBhIDY0LWJpdCBzeXN0ZW0uCi0KLS0gSXNzdWUgIzUxODY6IFJlZHVjZSBoYXNoIGNvbGxpc2lvbnMgZm9yIG9iamVjdHMgd2l0aCBubyBfX2hhc2hfXyBtZXRob2QgYnkKLSAgcm90YXRpbmcgdGhlIG9iamVjdCBwb2ludGVyIGJ5IDQgYml0cyB0byB0aGUgcmlnaHQuCi0KLS0gSXNzdWUgIzQ1NzU6IEZpeCBQeV9JU19JTkZJTklUWSBtYWNybyB0byB3b3JrIGNvcnJlY3RseSBvbiB4ODcgRlBVczogaXQgbm93Ci0gIGZvcmNlcyBpdHMgYXJndW1lbnQgdG8gZG91YmxlIGJlZm9yZSB0ZXN0aW5nIGZvciBpbmZpbml0eS4KLQotLSBJc3N1ZSAjNDk3ODogUGFzc2luZyBrZXl3b3JkIGFyZ3VtZW50cyBhcyB1bmljb2RlIHN0cmluZ3MgaXMgbm93IGFsbG93ZWQuCi0KLS0gSXNzdWUgIzEyNDI2NTc6IHRoZSBfX2xlbl9fKCkgYW5kIF9fbGVuZ3RoX2hpbnRfXygpIGNhbGxzIGluIHNldmVyYWwgdG9vbHMKLSAgd2VyZSBzdXBwcmVzc2luZyBhbGwgZXhjZXB0aW9ucy4gIFRoZXNlIGluY2x1ZGUgbGlzdCgpLCBmaWx0ZXIoKSwgbWFwKCksCi0gIHppcCgpLCBhbmQgYnl0ZWFycmF5KCkuCi0KLS0gb3MuZnRydW5jYXRlIHJhaXNlcyBPU0Vycm9ycyBpbnN0ZWFkIG9mIElPRXJyb3JzIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIG9zCi0gIGZ1bmN0aW9ucy4KLQotLSBJc3N1ZSAjNDk5MTogUGFzc2luZyBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMgdG8gaW8uRmlsZUlPIG5vdyByYWlzZXMgYW4KLSAgT1NFcnJvci4KLQotLSBJc3N1ZSAjNDgwNzogUG9ydCB0aGUgX3dpbnJlZyBtb2R1bGUgdG8gV2luZG93cyBDRS4KLQotLSBJc3N1ZSAjNDkzNTogVGhlIG92ZXJmbG93IGNoZWNraW5nIGNvZGUgaW4gdGhlIGV4cGFuZHRhYnMoKSBtZXRob2QgY29tbW9uIHRvCi0gIHN0ciwgYnl0ZXMgYW5kIGJ5dGVhcnJheSBjb3VsZCBiZSBvcHRpbWl6ZWQgYXdheSBieSB0aGUgY29tcGlsZXIsIGxldHRpbmcgdGhlCi0gIGludGVycHJldGVyIHNlZ2ZhdWx0IGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KLQotLSBJc3N1ZSAjMzcyMDogRml4IGEgY3Jhc2ggd2hlbiBhbiBpdGVyYXRvciBtb2RpZmllcyBpdHMgY2xhc3MgYW5kIHJlbW92ZXMgaXRzCi0gIF9fbmV4dF9fIG1ldGhvZC4KLQotLSBJc3N1ZSAjNDg5MzogVXNlIE5UIHRocmVhZGluZyBvbiBDRS4KLQotLSBJc3N1ZSAjNDkxNTogUG9ydCBzeXNtb2R1bGUgdG8gV2luZG93cyBDRS4KLQotLSBJc3N1ZSAjNDA3NDogQ2hhbmdlIHRoZSBjcml0ZXJpYSBmb3IgZG9pbmcgYSBmdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiAoaS5lLgotICBjb2xsZWN0aW5nIHRoZSBvbGRlc3QgZ2VuZXJhdGlvbikgc28gdGhhdCBhbGxvY2F0aW5nIGxvdHMgb2Ygb2JqZWN0cyB3aXRob3V0Ci0gIGRlc3Ryb3lpbmcgdGhlbSBkb2VzIG5vdCBzaG93IHF1YWRyYXRpYyBwZXJmb3JtYW5jZS4gQmFzZWQgb24gYSBwcm9wb3NhbCBieQotICBNYXJ0aW4gdm9uIEzDtndpcyBhdAotICBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tZGV2LzIwMDgtSnVuZS8wODA1NzkuaHRtbC4KLQotLSBJc3N1ZSAjNDg1MDogQ2hhbmdlIENPVU5UX0FMTE9DUyB2YXJpYWJsZXMgdG8gUHlfc3NpemVfdC4KLQotLSBJc3N1ZSAjMTE4MDE5MzogV2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIC5weWMgKG9yIC5weW8pIGZpbGUgd2l0aCBhbgotICBleGlzdGluZyAucHkgY291bnRlcnBhcnQsIG92ZXJyaWRlIHRoZSBjb19maWxlbmFtZSBhdHRyaWJ1dGVzIG9mIGFsbCBjb2RlCi0gIG9iamVjdHMgaWYgdGhlIG9yaWdpbmFsIGZpbGVuYW1lIGlzIG9ic29sZXRlICh3aGljaCBjYW4gaGFwcGVuIGlmIHRoZSBmaWxlIGhhcwotICBiZWVuIHJlbmFtZWQsIG1vdmVkLCBvciBpZiBpdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIGRpZmZlcmVudCBwYXRocykuICBQYXRjaCBieQotICBaaWdhIFNlaWxuYWNodCBhbmQgSmVhbi1QYXVsIENhbGRlcm9uZS4KLQotLSBJc3N1ZSAjNDA3NTogVXNlIGBgT3V0cHV0RGVidWdTdHJpbmdXKClgYCBpbiBQeV9GYXRhbEVycm9yLgotCi0tIElzc3VlICM0Nzk3OiBJT0Vycm9yLmZpbGVuYW1lIHdhcyBub3Qgc2V0IHdoZW4gX2ZpbGVpby5GaWxlSU8gZmFpbGVkIHRvIG9wZW4KLSAgZmlsZSB3aXRoIGBzdHInIGZpbGVuYW1lIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzM2ODA6IFJlZmVyZW5jZSBjeWNsZXMgY3JlYXRlZCB0aHJvdWdoIGEgZGljdCwgc2V0IG9yIGRlcXVlIGl0ZXJhdG9yCi0gIGRpZCBub3QgZ2V0IGNvbGxlY3RlZC4KLQotLSBJc3N1ZSAjNDcwMTogUHlPYmplY3RfSGFzaCBub3cgaW1wbGljaXRseSBjYWxscyBQeVR5cGVfUmVhZHkgb24gdHlwZXMgd2hlcmUKLSAgdGhlIHRwX2hhc2ggYW5kIHRwX2RpY3Qgc2xvdHMgYXJlIGJvdGggTlVMTC4KLQotLSBJc3N1ZSAjNDc2NDogV2l0aCBpby5vcGVuLCBJT0Vycm9yLmZpbGVuYW1lIGlzIHNldCB3aGVuIHRyeWluZyB0byBvcGVuIGEKLSAgZGlyZWN0b3J5IG9uIFBPU0lYIHN5c3RlbXMuCi0KLS0gSXNzdWUgIzQ3NjQ6IElPRXJyb3IuZmlsZW5hbWUgaXMgc2V0IHdoZW4gdHJ5aW5nIHRvIG9wZW4gYSBkaXJlY3Rvcnkgb24gUE9TSVgKLSAgc3lzdGVtcy4KLQotLSBJc3N1ZSAjNDc1OTogTm9uZSBpcyBub3cgYWxsb3dlZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgb2YKLSAgYGBieXRlYXJyYXkudHJhbnNsYXRlKClgYC4gIEl0IHdhcyBhbHdheXMgYWxsb3dlZCBmb3IgYGBieXRlcy50cmFuc2xhdGUoKWBgLgotCi0tIEFkZGVkIHRlc3QgY2FzZSB0byBlbnN1cmUgYXR0ZW1wdHMgdG8gcmVhZCBmcm9tIGEgZmlsZSBvcGVuZWQgZm9yIHdyaXRpbmcKLSAgZmFpbC4KLQotLSBJc3N1ZSAjMjQ2NzogZ2MuREVCVUdfU1RBVFMgcmVwb3J0ZWQgaW52YWxpZCBlbGFwc2VkIHRpbWVzLiBBbHNvLCBhbHdheXMgcHJpbnQKLSAgZWxhcHNlZCB0aW1lcywgbm90IG9ubHkgd2hlbiBzb21lIG9iamVjdHMgYXJlIHVuY29sbGVjdGFibGUvdW5yZWFjaGFibGUuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IE5laWwgU2NoZW1lbmF1ZXIuCi0KLS0gSXNzdWUgIzM0Mzk6IEFkZCBhIGJpdF9sZW5ndGggbWV0aG9kIHRvIGludCBhbmQgbG9uZy4KLQotLSBJc3N1ZSAjMjE4MzogU2ltcGxpZnkgYW5kIG9wdGltaXplIGJ5dGVjb2RlIGZvciBsaXN0IGNvbXByZWhlbnNpb25zLiAgT3JpZ2luYWwKLSAgcGF0Y2ggYnkgTmVhbCBOb3J3aXR6LgotCi0tIElzc3VlICM0NTk3OiBGaXhlZCBleGNlcHRpb24gaGFuZGxpbmcgd2hlbiB0aGUgX19leGl0X18gZnVuY3Rpb24gb2YgYSBjb250ZXh0Ci0gIG1hbmFnZXIgcmV0dXJucyBhIHZhbHVlIHRoYXQgY2Fubm90IGJlIGNvbnZlcnRlZCB0byBhIGJvb2wuCi0KLS0gSXNzdWUgIzQ1OTc6IEZpeGVkIHNldmVyYWwgb3Bjb2RlcyB0aGF0IHdlcmVuJ3QgYWx3YXlzIHByb3BhZ2F0aW5nIGV4Y2VwdGlvbnMuCi0KLS0gSXNzdWUgIzQ0NDU6IFJlcGxhY2UgYGBzaXplb2YoUHlTdHJpbmdPYmplY3QpYGAgd2l0aAotICBgYG9mZnNldG9mKFB5U3RyaW5nT2JqZWN0LCBvYl9zdmFsKSArIDFgYCB3aGVuIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBzdHIKLSAgaW5zdGFuY2VzLiAgT24gYSB0eXBpY2FsIG1hY2hpbmUgdGhpcyBzYXZlcyAzIGJ5dGVzIG9mIG1lbW9yeSAob24gYXZlcmFnZSkgcGVyCi0gIHN0cmluZyBhbGxvY2F0aW9uLgotCi0tIElzc3VlICMzOTk2OiBPbiBXaW5kb3dzLCB0aGUgUHlPU19DaGVja1N0YWNrIGZ1bmN0aW9uIHdvdWxkIGNhdXNlIHRoZQotICBpbnRlcnByZXRlciB0byBhYm9ydCAoIkZhdGFsIFB5dGhvbiBlcnJvcjogQ291bGQgbm90IHJlc2V0IHRoZSBzdGFjayEiKQotICBpbnN0ZWFkIG9mIHRocm93aW5nIGEgTWVtb3J5RXJyb3IuCi0KLS0gSXNzdWUgIzM2ODk6IFRoZSBsaXN0IHJldmVyc2VkIGl0ZXJhdG9yIG5vdyBzdXBwb3J0cyBfX2xlbmd0aF9oaW50X18gaW5zdGVhZAotICBvZiBfX2xlbl9fLiAgQmVoYXZpb3Igbm93IG1hdGNoZXMgb3RoZXIgcmV2ZXJzZWQgaXRlcmF0b3JzLgotCi0tIElzc3VlICM0MzY3OiBQeXRob24gd291bGQgc2VnZmF1bHQgZHVyaW5nIGNvbXBpbGluZyB3aGVuIHRoZSB1bmljb2RlZGF0YQotICBtb2R1bGUgY291bGRuJ3QgYmUgaW1wb3J0ZWQgYW5kIFxOIGVzY2FwZXMgd2VyZSBwcmVzZW50LgotCi0tIElzc3VlICM0MjMzOiBDaGFuZ2VkIHNlbWFudGljIG9mIGBgX2ZpbGVpby5GaWxlSU9gYCdzIGBgY2xvc2UoKWBgIG1ldGhvZCBvbgotICBmaWxlIG9iamVjdHMgd2l0aCBjbG9zZWZkPUZhbHNlLiBUaGUgZmlsZSBkZXNjcmlwdG9yIGlzIHN0aWxsIGtlcHQgb3BlbiBidXQKLSAgdGhlIGZpbGUgb2JqZWN0IGJlaGF2ZXMgbGlrZSBhIGNsb3NlZCBmaWxlLiBUaGUgYGBGaWxlSU9gYCBvYmplY3QgYWxzbyBnb3QgYQotICBuZXcgcmVhZG9ubHkgYXR0cmlidXRlIGBgY2xvc2VmZGBgLgotCi0tIElzc3VlICM0MzQ4OiBTb21lIGJ5dGVhcnJheSBtZXRob2RzIHJldHVybmVkIHRoYXQgZGlkbid0IGNhdXNlIGFueSBjaGFuZ2UgdG8KLSAgdGhlIGJ5dGVhcnJheSwgcmV0dXJuZWQgdGhlIHNhbWUgYnl0ZWFycmF5IGluc3RlYWQgb2YgYSBjb3B5LgotCi0tIElzc3VlICM0MzE3OiBGaXhlZCBhIGNyYXNoIGluIHRoZSBgYGltYWdlb3AucmdiMnJnYjgoKWBgIGZ1bmN0aW9uLgotCi0tIElzc3VlICM0MjMwOiBJZiBgYF9fZ2V0YXR0cl9fYGAgaXMgYSBkZXNjcmlwdG9yLCBpdCBub3cgZnVuY3Rpb25zIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjNDA0ODogVGhlIHBhcnNlciBtb2R1bGUgbm93IGNvcnJlY3RseSB2YWxpZGF0ZXMgcmVsYXRpdmUgaW1wb3J0cy4KLQotLSBJc3N1ZSAjNDIyNTogYGBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHNgYCBkaWRuJ3Qgd29yayBpbiBhbgotICBleGVjIHN0YXRlbWVudC4KLQotLSBJc3N1ZSAjNDE3NjogRml4ZWQgYSBjcmFzaCB3aGVuIHBpY2tsaW5nIGFuIG9iamVjdCB3aGljaCBgYF9fcmVkdWNlX19gYCBtZXRob2QKLSAgZG9lcyBub3QgcmV0dXJuIGl0ZXJhdG9ycyBmb3IgdGhlIDR0aCBhbmQgNXRoIGl0ZW1zLgotCi0tIElzc3VlICM0MjA5OiBFbmFibGluZyB1bmljb2RlX2xpdGVyYWxzIGFuZCB0aGUgcHJpbnRfZnVuY3Rpb24gaW4gdGhlIHNhbWUKLSAgX19mdXR1cmVfXyBpbXBvcnQgZGlkbid0IHdvcmsuCi0KLS0gVXNpbmcgYGBub25sb2NhbGBgIGFzIGEgdmFyaWFibGUgbmFtZSB3aWxsIG5vdyByYWlzZSBhIFB5M2sgU3ludGF4V2FybmluZwotICBiZWNhdXNlIGl0IGlzIGEgcmVzZXJ2ZWQgd29yZCBpbiAzLnguCi0KLS0gT24gd2luZG93cywgYGBvcy5jaGRpcigpYGAgZ2l2ZW4gdW5pY29kZSB3YXMgbm90IHdvcmtpbmcgaWYKLSAgR2V0Q3VycmVudERpcmVjdG9yeVcgcmV0dXJuZWQgYSBwYXRoIGxvbmdlciB0aGFuIE1BWF9QQVRILiAoQnV0IEl0J3MgZG91YnRmdWwKLSAgdGhpcyBjb2RlIHBhdGggaXMgcmVhbGx5IGV4ZWN1dGVkIGJlY2F1c2UgSSBjYW5ub3QgbW92ZSB0byBzdWNoIGRpcmVjdG9yeSBvbgotICB3aW4yaykKLQotLSBJc3N1ZSAjNDA2OTogV2hlbiBgYHNldC5yZW1vdmUoZWxlbWVudClgYCBpcyB1c2VkIHdpdGggYSBzZXQgZWxlbWVudCwgdGhlCi0gIGVsZW1lbnQgaXMgdGVtcG9yYXJpbHkgcmVwbGFjZWQgd2l0aCBhbiBlcXVpdmFsZW50IGZyb3plbnNldC4gIEJ1dCB0aGUKLSAgZXZlbnR1YWwgS2V5RXJyb3Igd291bGQgYWx3YXlzIHJlcG9ydCB0aGUgZW1wdHkgYGBmcm96ZW5zZXQoKWBgIGFzIHRoZSBtaXNzaW5nCi0gIGtleS4gIE5vdyBpdCBjb3JyZWN0bHkgcmVmZXJzIHRvIHRoZSBpbml0aWFsIGVsZW1lbnQuCi0KLS0gSXNzdWUgIzQ1MDk6IFZhcmlvdXMgaXNzdWVzIHN1cnJvdW5kaW5nIHJlc2l6ZSBvZiBieXRlYXJyYXkgb2JqZWN0cyB0byB3aGljaAotICB0aGVyZSBhcmUgYnVmZmVyIGV4cG9ydHMuCi0KLS0gSXNzdWUgIzQ3NDg6IExhbWJkYSBnZW5lcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYSB2YWx1ZS4KLQotLSBJc3N1ZSAjMzU4MjogVXNlIG5hdGl2ZSBUTFMgZnVuY3Rpb25zIG9uIFdpbmRvd3MKLQotLSBUaGUgcmUuc3ViKCksIHJlLnN1Ym4oKSBhbmQgcmUuc3BsaXQoKSBmdW5jdGlvbnMgbm93IGFjY2VwdCBhIGZsYWdzIHBhcmFtZXRlci4KLQotLSBJc3N1ZSAjMzg0NTogSW4gUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MgYXZvaWQgaW52YWxpZCBtZW1vcnkgYWNjZXNzIHdpdGggc2hvcnQKLSAgZmlsZSBuYW1lcy4KLQotLSBJc3N1ZSAjMTExMzI0NDogUHlfWElOQ1JFRiwgUHlfREVDUkVGLCBQeV9YREVDUkVGOiBBZGQgYGRvIHsgLi4uIH0gd2hpbGUgKDApJwotICB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KLQotLSBJc3N1ZSAjNTcwNTogb3Muc2V0dWlkKCkgd291bGQgbm90IGFjY2VwdCB2YWx1ZXMgPiAyKiozMS0xIGJ1dCBwd2QuZ2V0cHduYW0oKQotICByZXR1cm5lZCB0aGVtIG9uIDY0Yml0IHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjNTEwODogSGFuZGxlICVzIGxpa2UgJVMgYW5kICVSIGluIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpOiBDYWxsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEY4KCkgb25jZSwgcmVtZW1iZXIgdGhlIHJlc3VsdCBhbmQgb3V0cHV0IGl0IGluIGEgc2Vjb25kCi0gIHN0ZXAuIFRoaXMgYXZvaWRzIHByb2JsZW1zIHdpdGggY291bnRpbmcgVVRGLTggYnl0ZXMgdGhhdCBpZ25vcmVzIHRoZSBlZmZlY3QKLSAgb2YgdXNpbmcgdGhlIHJlcGxhY2UgZXJyb3IgaGFuZGxlciBpbiBQeVVuaWNvZGVfRGVjb2RlVVRGOCgpLgotCi0tIElzc3VlICMzNzM5OiBUaGUgdW5pY29kZS1pbnRlcm5hbCBlbmNvZGVyIG5vdyByZXBvcnRzIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycwotICBjb25zdW1lZCBsaWtlIGFueSBvdGhlciBlbmNvZGVyIChpbnN0ZWFkIG9mIHRoZSBudW1iZXIgb2YgYnl0ZXMpLgotCi0tIElzc3VlICMyNDIyOiBXaGVuIGNvbXBpbGVkIHdpdGggdGhlIGBgLS13aXRoLXZhbGdyaW5kYGAgb3B0aW9uLCB0aGUgcHltYWxsb2MKLSAgYWxsb2NhdG9yIHdpbGwgYmUgYXV0b21hdGljYWxseSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgVmFsZ3JpbmQuICBUaGlzCi0gIGdpdmVzIGltcHJvdmVkIG1lbW9yeSBsZWFrIGRldGVjdGlvbiB3aGVuIHJ1bm5pbmcgdW5kZXIgVmFsZ3JpbmQsIHdoaWxlIHRha2luZwotICBhZHZhbnRhZ2Ugb2YgcHltYWxsb2MgYXQgb3RoZXIgdGltZXMuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBBZGQgY291bnQoKSBhbmQgcmV2ZXJzZSgpIG1ldGhvZHMgdG8gY29sbGVjdGlvbnMuZGVxdWUoKS4KLQotLSBGaXggdmFyaWF0aW9ucyBvZiBleHRlbmRpbmcgZGVxdWVzOiAgZC5leHRlbmQoZCkgIGQuZXh0ZW5kbGVmdChkKSAgZCs9ZAotCi0tIElzc3VlICM2OTg2OiBGaXggY3Jhc2ggaW4gdGhlIEpTT04gQyBhY2NlbGVyYXRvciB3aGVuIGNhbGxlZCB3aXRoIHRoZSB3cm9uZwotICBwYXJhbWV0ZXIgdHlwZXMuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KLQotLSBsb2dnaW5nOiBBZGRlZCBvcHRpb25hbCAic2VjdXJlIiBwYXJhbWV0ZXIgdG8gU01UUEhhbmRsZXIsIHRvIGVuYWJsZSB1c2Ugb2YKLSAgVExTIHdpdGggYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuCi0KLS0gSXNzdWUgIzE5MjM6IEZpeGVkIHRoZSByZW1vdmFsIG9mIG1lYW5pbmdmdWwgc3BhY2VzIHdoZW4gUEtHLUlORk8gaXMgZ2VuZXJhdGVkCi0gIGluIERpc3R1dGlscy4gUGF0Y2ggYnkgU3RlcGhlbiBFbXNsaWUuCi0KLS0gSXNzdWUgIzQxMjA6IERyb3AgcmVmZXJlbmNlIHRvIENSVCBmcm9tIG1hbmlmZXN0IHdoZW4gYnVpbGRpbmcgZXh0ZW5zaW9ucyB3aXRoCi0gIG1zdmM5Y29tcGlsZXIuCi0KLS0gSXNzdWUgIzczMzM6IFRoZSBgYHBvc2l4YGAgbW9kdWxlIGdhaW5zIGFuIGBgaW5pdGdyb3VwcygpYGAgZnVuY3Rpb24gcHJvdmlkaW5nCi0gIGFjY2VzcyB0byB0aGUgaW5pdGdyb3VwcygzKSBDIGxpYnJhcnkgY2FsbCBvbiBVbml4IHN5c3RlbXMgd2hpY2ggaW1wbGVtZW50IGl0LgotICBQYXRjaCBieSBKZWFuLVBhdWwgQ2FsZGVyb25lLgotCi0tIElzc3VlICM3NDA4OiBGaXhlZCBkaXN0dXRpbHMudGVzdHMuc2Rpc3Qgc28gaXQgZG9lc24ndCBjaGVjayBmb3IgZ3JvdXAKLSAgb3duZXJzaGlwIHdoZW4gdGhlIGdyb3VwIGlzIG5vdCBmb3JjZWQsIGJlY2F1c2UgdGhlIGdyb3VwIG1heSBiZSBkaWZmZXJlbnQKLSAgZnJvbSB0aGUgdXNlcidzIGdyb3VwIGFuZCBpbmhlcml0IGZyb20gaXRzIGNvbnRhaW5lciB3aGVuIHRoZSB0ZXN0IGlzIHJ1bi4KLQotLSBJc3N1ZSAjMTUxNTogRW5hYmxlIHVzZSBvZiBkZWVwY29weSgpIHdpdGggaW5zdGFuY2UgbWV0aG9kcy4gIFBhdGNoIGJ5IFJvYmVydAotICBDb2xsaW5zLgotCi0tIElzc3VlICM3NDAzOiBsb2dnaW5nOiBGaXhlZCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbiBpbiBsb2NrIGNyZWF0aW9uLgotCi0tIElzc3VlICM2ODQ1OiBBZGQgcmVzdGFydCBzdXBwb3J0IGZvciBiaW5hcnkgdXBsb2FkIGluIGZ0cGxpYi4gIFRoZQotICBgYHN0b3JiaW5hcnkoKWBgIG1ldGhvZCBvZiBGVFAgYW5kIEZUUF9UTFMgb2JqZWN0cyBnYWlucyBhbiBvcHRpb25hbCAicmVzdCIKLSAgYXJndW1lbnQuICBQYXRjaCBieSBQYWJsbyBNb3V6by4KLQotLSBJc3N1ZSAjNTc4ODogYGBkYXRldGltZS50aW1lZGVsdGFgYCBvYmplY3RzIGdldCBhIG5ldyBgYHRvdGFsX3NlY29uZHMoKWBgCi0gIG1ldGhvZCByZXR1cm5pbmcgdGhlIHRvdGFsIG51bWJlciBvZiBzZWNvbmRzIGluIHRoZSBkdXJhdGlvbi4gIFBhdGNoIGJ5IEJyaWFuCi0gIFF1aW5sYW4uCi0KLS0gSXNzdWUgIzY2MTU6IGxvZ2dpbmc6IFVzZWQgd2Vha3JlZnMgaW4gaW50ZXJuYWwgaGFuZGxlciBsaXN0LgotCi0tIElzc3VlICMxNDg4OTQzOiBgYGRpZmZsaWIuRGlmZmVyYGAgZG9lc24ndCBhbHdheXMgYWRkIGhpbnRzIGZvciB0YWIKLSAgY2hhcmFjdGVycy4KLQotLSBJc3N1ZSAjNjEyMzogdGFyZmlsZSBub3cgb3BlbnMgZW1wdHkgYXJjaGl2ZXMgY29ycmVjdGx5IGFuZCBjb25zaXN0ZW50bHkKLSAgcmFpc2VzIFJlYWRFcnJvciBvbiBlbXB0eSBmaWxlcy4KLQotLSBJc3N1ZSAjNzM1NDogZGlzdHV0aWxzLnRlc3RzLnRlc3RfbXN2Yzljb21waWxlciAtIGRyYWdmdWxsd2luZG93cyBjYW4gYmUgMi4KLQotLSBJc3N1ZSAjNTAzNzogUHJveHkgdGhlIF9fdW5pY29kZV9fIHNwZWNpYWwgbWV0aG9kIHRvIF9fdW5pY29kZV9fIGluc3RlYWQgb2YKLSAgX19zdHJfXy4KLQotLSBJc3N1ZSAjNzM0MTogQ2xvc2UgdGhlIGludGVybmFsIGZpbGUgb2JqZWN0IGluIHRoZSBUYXJGaWxlIGNvbnN0cnVjdG9yIGluIGNhc2UKLSAgb2YgYW4gZXJyb3IuCi0KLS0gSXNzdWUgIzcyOTM6IGBgZGlzdHV0aWxzLnRlc3RfbXN2Yzljb21waWxlcmBgIGlzIGZpeGVkIHRvIHdvcmsgb24gYW55IGZyZXNoCi0gIFdpbmRvd3MgYm94LiAgSGVscCBwcm92aWRlZCBieSBEYXZpZCBCb2xlbi4KLQotLSBJc3N1ZSAjNzMyODogcHlkb2Mgbm8gbG9uZ2VyIGNvcnJ1cHRzIHN5cy5wYXRoIHdoZW4gcnVuIHdpdGggdGhlICctbScgc3dpdGNoLgotCi0tIElzc3VlICMyMDU0OiBmdHBsaWIgbm93IHByb3ZpZGVzIGFuIEZUUF9UTFMgY2xhc3MgdG8gZG8gc2VjdXJlIEZUUCB1c2luZyBUTFMKLSAgb3IgU1NMLiAgUGF0Y2ggYnkgR2lhbXBhb2xvIFJvZG9sYScuCi0KLS0gSXNzdWUgIzQ5Njk6IFRoZSBtaW1ldHlwZXMgbW9kdWxlIG5vdyByZWFkcyB0aGUgTUlNRSBkYXRhYmFzZSBmcm9tIHRoZQotICByZWdpc3RyeSB1bmRlciBXaW5kb3dzLiAgUGF0Y2ggYnkgR2FicmllbCBHZW5lbGxpbmEuCi0KLS0gSXNzdWUgIzY4MTY6IHJ1bnB5IG5vdyBwcm92aWRlcyBhIHJ1bl9wYXRoIGZ1bmN0aW9uIHRoYXQgYWxsb3dzIFB5dGhvbiBjb2RlIHRvCi0gIGV4ZWN1dGUgZmlsZSBwYXRocyB0aGF0IHJlZmVyIHRvIHNvdXJjZSBvciBjb21waWxlZCBQeXRob24gZmlsZXMgYXMgd2VsbCBhcwotICB6aXBmaWxlcywgZGlyZWN0b3JpZXMgYW5kIG90aGVyIHZhbGlkIHN5cy5wYXRoIGVudHJpZXMgdGhhdCBjb250YWluIGEKLSAgX19tYWluX18ucHkgZmlsZS4gVGhpcyBhbGxvd3MgYXBwbGljYXRpb25zIHRoYXQgcnVuIG90aGVyIFB5dGhvbiBzY3JpcHRzIHRvCi0gIHN1cHBvcnQgdGhlIHNhbWUgZmxleGliaWxpdHkgYXMgdGhlIENQeXRob24gY29tbWFuZCBsaW5lIGl0c2VsZi4KLQotLSBJc3N1ZSAjNzMxODogbXVsdGlwcm9jZXNzaW5nIG5vdyB1c2VzIGEgdGltZW91dCB3aGVuIGl0IGZhaWxzIHRvIGVzdGFibGlzaCBhCi0gIGNvbm5lY3Rpb24gd2l0aCBhbm90aGVyIHByb2Nlc3MsIHJhdGhlciB0aGFuIGxvb3BpbmcgZW5kbGVzc2x5LiBUaGUgZGVmYXVsdAotICB0aW1lb3V0IGlzIDIwIHNlY29uZHMsIHdoaWNoIHNob3VsZCBiZSBhbXBseSBzdWZmaWNpZW50IGZvciBsb2NhbCBjb25uZWN0aW9ucy4KLQotLSBJc3N1ZSAjNzE5NzogQWxsb3cgdW5pdHRlc3QuVGV4dFRlc3RSdW5uZXIgb2JqZWN0cyB0byBiZSBwaWNrbGVkIGFuZAotICB1bnBpY2tsZWQuICBUaGlzIGZpeGVzIGNyYXNoZXMgdW5kZXIgV2luZG93cyB3aGVuIHRyeWluZyB0byBydW4KLSAgdGVzdF9tdWx0aXByb2Nlc3NpbmcgaW4gdmVyYm9zZSBtb2RlLgotCi0tIElzc3VlICM3MjgyOiBGaXggYSBtZW1vcnkgbGVhayB3aGVuIGFuIFJMb2NrIHdhcyB1c2VkIGluIGEgdGhyZWFkIG90aGVyIHRoYW4KLSAgdGhvc2Ugc3RhcnRlZCB0aHJvdWdoIGBgdGhyZWFkaW5nLlRocmVhZGBgIChmb3IgZXhhbXBsZSwgdXNpbmcKLSAgYGB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgpYGAuCi0KLS0gSXNzdWUgIzcyNjQ6IEZpeCBhIHBvc3NpYmxlIGRlYWRsb2NrIHdoZW4gZGVhbGxvY2F0aW5nIHRocmVhZC1sb2NhbCBvYmplY3RzCi0gIHdoaWNoIGFyZSBwYXJ0IG9mIGEgcmVmZXJlbmNlIGN5Y2xlLgotCi0tIElzc3VlICM3MjExOiBBbGxvdyA2NC1iaXQgdmFsdWVzIGZvciB0aGUgYGBpZGVudGBgIGFuZCBgYGRhdGFgYCBmaWVsZHMgb2YKLSAga2V2ZW50IG9iamVjdHMgb24gNjQtYml0IHN5c3RlbXMuICBQYXRjaCBieSBNaWNoYWVsIEJyb2dodG9uLgotCi0tIElzc3VlICM2ODk2OiBgYG1haWxib3guTWFpbGRpcmBgIG5vdyBpbnZhbGlkYXRlcyBpdHMgaW50ZXJuYWwgY2FjaGUgZWFjaCB0aW1lCi0gIGEgbW9kaWZpY2F0aW9uIGlzIGRvbmUgdGhyb3VnaCBpdC4gIFRoaXMgZml4ZXMgaW5jb25zaXN0ZW5jaWVzIGFuZCB0ZXN0Ci0gIGZhaWx1cmVzIG9uIHN5c3RlbXMgd2l0aCBzbGlnaHRseSBib2d1cyBtdGltZSBiZWhhdmlvdXIuCi0KLS0gSXNzdWUgIzcyNDYgJiBJc3N1ZSAjNzIwODogZ2V0cGFzcyBub3cgcHJvcGVybHkgZmx1c2hlcyBpbnB1dCBiZWZvcmUgcmVhZGluZwotICBmcm9tIHN0ZGluIHNvIHRoYXQgZXhpc3RpbmcgaW5wdXQgZG9lcyBub3QgY29uZnVzZSBpdCBhbmQgbGVhZCB0byBpbmNvcnJlY3QKLSAgZW50cnkgb3IgYW4gSU9FcnJvci4gIEl0IGFsc28gcHJvcGVybHkgZmx1c2hlcyBpdCBhZnRlcndhcmRzIHRvIGF2b2lkIHRoZQotICB0ZXJtaW5hbCBlY2hvaW5nIHRoZSBpbnB1dCBhZnRlcndhcmRzIG9uIE9TZXMgc3VjaCBhcyBTb2xhcmlzLgotCi0tIElzc3VlICM3MjMzOiBGaXggYSBudW1iZXIgb2YgdHdvLWFyZ3VtZW50IERlY2ltYWwgbWV0aG9kcyB0byBtYWtlIHN1cmUgdGhhdAotICB0aGV5IGFjY2VwdCBhbiBpbnQgb3IgbG9uZyBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50LiAgQWxzbyBmaXggYnVnZ3kgaGFuZGxpbmcgb2YKLSAgbGFyZ2UgYXJndW1lbnRzICh0aG9zZSB3aXRoIGNvZWZmaWNpZW50IGxvbmdlciB0aGFuIHRoZSBjdXJyZW50IHByZWNpc2lvbikgaW4KLSAgc2hpZnQgYW5kIHJvdGF0ZS4KLQotLSBJc3N1ZSAjNDc1MDogU3RvcmUgdGhlIGJhc2VuYW1lIG9mIHRoZSBvcmlnaW5hbCBmaWxlbmFtZSBpbiB0aGUgZ3ppcCBGTkFNRQotICBoZWFkZXIgYXMgcmVxdWlyZWQgYnkgUkZDIDE5NTIuCi0KLS0gSXNzdWUgIzExODA6IEFkZGVkIGEgbmV3IGdsb2JhbCBvcHRpb24gdG8gaWdub3JlIH4vLnB5ZGlzdHV0aWxzLmNmZyBpbgotICBEaXN0dXRpbHMuCi0KLS0gSXNzdWUgIzcyMTg6IEZpeCB0ZXN0X3NpdGUgZm9yIHdpbjMyLCB0aGUgZGlyZWN0b3J5IGNvbXBhcmlzb24gd2FzIGRvbmUgd2l0aAotICBhbiB1cHBlcmNhc2UuCi0KLS0gSXNzdWUgIzcyMDU6IEZpeCBhIHBvc3NpYmxlIGRlYWRsb2NrIHdoZW4gdXNpbmcgYSBCWjJGaWxlIG9iamVjdCBmcm9tIHNldmVyYWwKLSAgdGhyZWFkcyBhdCBvbmNlLgotCi0tIElzc3VlICM3MDcxOiBieXRlLWNvbXBpbGF0aW9uIGluIERpc3R1dGlscyBpcyBub3cgZG9uZSB3aXRoIHJlc3BlY3QgdG8KLSAgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUuCi0KLS0gSXNzdWUgIzcwNjY6IGFyY2hpdmVfdXRpbC5tYWtlX2FyY2hpdmUgbm93IHJlc3RvcmVzIHRoZSBjd2QgaWYgYW4gZXJyb3IgaXMKLSAgcmFpc2VkLiBJbml0aWFsIHBhdGNoIGJ5IEV6aW8gTWVsb3R0aS4KLQotLSBJc3N1ZSAjNjIxODogaW8uU3RyaW5nSU8gYW5kIGlvLkJ5dGVzSU8gaW5zdGFuY2VzIGFyZSBub3cgcGlja2xhYmxlIHdpdGgKLSAgcHJvdG9jb2wgMi4KLQotLSBJc3N1ZSAjNzA3NzogbG9nZ2luZzogU3lzTG9nSGFuZGxlciBub3cgdHJlYXRzIFVuaWNvZGUgYXMgcGVyIFJGQyA1NDI0LgotCi0tIElzc3VlICM3MDk5OiBEZWNpbWFsLmlzX25vcm1hbCBub3cgcmV0dXJucyBUcnVlIGZvciBudW1iZXJzIHdpdGggZXhwb25lbnQKLSAgbGFyZ2VyIHRoYW4gZW1heC4KLQotLSBJc3N1ZSAjNTgzMzogRml4IGV4dHJhIHNwYWNlIGNoYXJhY3RlciBpbiByZWFkbGluZSBjb21wbGV0aW9uIHdpdGggdGhlIEdOVQotICByZWFkbGluZSBsaWJyYXJ5IHZlcnNpb24gNi4wLgotCi0tIElzc3VlICM3MTMzOiBTU0wgb2JqZWN0cyBub3cgc3VwcG9ydCB0aGUgbmV3IGJ1ZmZlciBBUEkuCi0KLS0gSXNzdWUgIzcxNDk6IHVybGxpYiBmYWlscyBvbiBPU1ggaW4gdGhlIHByb3h5IGRldGVjdGlvbiBjb2RlLgotCi0tIElzc3VlICM3MDY5OiBNYWtlIGluc3BlY3QuaXNhYnN0cmFjdCgpIHJldHVybiBhIGJvb2xlYW4uCi0KLS0gQWRkIHN1cHBvcnQgdG8gdGhlIGBgaWhvb2tzYGAgbW9kdWxlIGZvciByZWxhdGl2ZSBpbXBvcnRzLgotCi0tIElzc3VlICM2ODk0OiBGaXhlZCB0aGUgaXNzdWUgdXJsbGliMiBkb2Vzbid0IHJlc3BlY3QgIm5vX3Byb3h5IiBlbnZpcm9ubWVudC4KLQotLSBJc3N1ZSAjNzA4NjogQWRkZWQgVENQIHN1cHBvcnQgdG8gU3lzTG9nSGFuZGxlciwgYW5kIHRpZGllZCB1cCBzb21lCi0gIGFuYWNocm9uaXNtcyBpbiB0aGUgY29kZSB3aGljaCB3ZXJlIGEgcmVsaWMgb2YgMS41LjIgY29tcGF0aWJpbGl0eS4KLQotLSBJc3N1ZSAjNzA4MjogV2hlbiBmYWxsaW5nIGJhY2sgdG8gdGhlIE1JTUUgJ25hbWUnIHBhcmFtZXRlciwgdGhlIGNvcnJlY3QgcGxhY2UKLSAgdG8gbG9vayBmb3IgaXQgaXMgdGhlIENvbnRlbnQtVHlwZSBoZWFkZXIuCi0KLS0gSXNzdWUgIzcwNDg6IEZvcmNlIERlY2ltYWwubG9nYiB0byByb3VuZCBpdHMgcmVzdWx0IHdoZW4gdGhhdCByZXN1bHQgaXMgdG9vCi0gIGxhcmdlIHRvIGZpdCBpbiB0aGUgY3VycmVudCBwcmVjaXNpb24uCi0KLS0gSXNzdWUgIzY1MTY6IEFkZGVkIG93bmVyL2dyb3VwIHN1cHBvcnQgd2hlbiBjcmVhdGluZyB0YXIgYXJjaGl2ZXMgaW4KLSAgRGlzdHV0aWxzLgotCi0tIElzc3VlICM3MDMxOiBBZGQgYGBUZXN0Q2FzZS5hc3NlcnQoTm90KUlzSW5zdGFuY2UoKWBgIG1ldGhvZHMuCi0KLS0gSXNzdWUgIzY3OTA6IE1ha2UgaXQgcG9zc2libGUgYWdhaW4gdG8gcGFzcyBhbiBgYGFycmF5LmFycmF5YGAgdG8KLSAgYGBodHRwbGliLkhUVFBDb25uZWN0aW9uLnNlbmRgYC4gIFBhdGNoIGJ5IEtpcmsgTWNEb25hbGQuCi0KLS0gSXNzdWUgIzYyMzYsICM2MzQ4OiBGaXggdmFyaW91cyBmYWlsdXJlcyBpbiB0aGUgYGlvYCBtb2R1bGUgdW5kZXIgQUlYIGFuZAotICBvdGhlciBwbGF0Zm9ybXMsIHdoZW4gdXNpbmcgYSBub24tZ2NjIGNvbXBpbGVyLiAgUGF0Y2ggYnkgZWdyZWVuLgotCi0tIElzc3VlICM2OTU0OiBGaXhlZCBjcmFzaCB3aGVuIHVzaW5nIERJU1RVVElMU19ERUJVRyBmbGFnIGluIERpc3R1dGlscy4KLQotLSBJc3N1ZSAjNjg1MTogRml4IHVybGxpYi51cmxvcGVuIGNyYXNoIG9uIHNlY29uZGFpcnkgdGhyZWFkcyBvbiBPU1ggMTAuNgotCi0tIElzc3VlICM0NjA2OiBQYXNzaW5nICdOb25lJyBpZiBjdHlwZXMgYXJndHlwZSBpcyBzZXQgdG8gUE9JTlRFUiguLi4pIGRvZXMgbm93Ci0gIGFsd2F5cyByZXN1bHQgaW4gTlVMTC4KLQotLSBJc3N1ZSAjNTA0MjogY3R5cGVzIFN0cnVjdHVyZSBzdWItc3ViY2xhc3MgZG9lcyBub3cgaW5pdGlhbGl6ZSBjb3JyZWN0bHkgd2l0aAotICBiYXNlIGNsYXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzLgotCi0tIElzc3VlICM2OTM4OiBGaXggYSBUeXBlRXJyb3IgaW4gc3RyaW5nIGZvcm1hdHRpbmcgb2YgYSBtdWx0aXByb2Nlc3NpbmcgZGVidWcKLSAgbWVzc2FnZS4KLQotLSBJc3N1ZSAjNjYzNTogRml4IHByb2ZpbGVyIHByaW50aW5nIHVzYWdlIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzY4NTY6IEFkZCBhIGZpbHRlciBrZXl3b3JkIGFyZ3VtZW50IHRvIFRhckZpbGUuYWRkKCkuCi0KLS0gSXNzdWUgIzYxNjM6IEZpeGVkIEhQLVVYIHJ1bnRpbWUgbGlicmFyeSBkaXIgb3B0aW9ucyBpbgotICBkaXN0dXRpbHMudW5peGNvbXBpbGVyLiAgSW5pdGlhbCBwYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIgYW5kIE1pY2hhZWwKLSAgSGF1YmVud2FsbG5lci4KLQotLSBJc3N1ZSAjNjg1NzogRGVmYXVsdCBmb3JtYXQoKSBhbGlnbm1lbnQgc2hvdWxkIGJlICc+JyBmb3IgRGVjaW1hbCBpbnN0YW5jZXMuCi0KLS0gSXNzdWUgIzY3OTU6IGludChEZWNpbWFsKCduYW4nKSkgbm93IHJhaXNlcyBWYWx1ZUVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nCi0gIE5hTiBvciByYWlzaW5nIEludmFsaWRDb250ZXh0LiAgQWxzbywgZml4IGluZmluaXRlIHJlY3Vyc2lvbiBpbgotICBsb25nKERlY2ltYWwoJ25hbicpKS4KLQotLSBJc3N1ZSAjNjg1MDogRml4IGJ1ZyBpbiBEZWNpbWFsLl9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyIGZvciBmb3JtYXRzIHdpdGggbm8KLSAgdHlwZSBzcGVjaWZpZXIuCi0KLS0gSXNzdWUgIzQ5Mzc6IHBsYXQtbWFjL2J1bmRsZWJ1aWxkZXIgcmVmZXJzIHRvIG5vbi1leGlzdGluZyB2ZXJzaW9uLnBsaXN0LgotCi0tIElzc3VlICM2ODM4OiBVc2UgYSBsaXN0IHRvIGFjY3VtdWxhdGUgdGhlIHZhbHVlIGluc3RlYWQgb2YgcmVwZWF0ZWRseQotICBjb25jYXRlbmF0aW5nIHN0cmluZ3MgaW4gaHR0cGxpYidzIEhUVFBSZXNwb25zZS5fcmVhZF9jaHVua2VkIHByb3ZpZGluZyBhCi0gIHNpZ25pZmljYW50IHNwZWVkIGluY3JlYXNlIHdoZW4gZG93bmxvYWRpbmcgbGFyZ2UgZmlsZXMgc2VydmVuZCB3aXRoIGEKLSAgVHJhbnNmZXItRW5jb2Rpbmcgb2YgJ2NodW5rZWQnLgotCi0tIElzc3VlICM1Mjc1OiBJbiBDb29raWUncyBDb29raWUubG9hZCgpLCBwcm9wZXJseSBoYW5kbGUgbm9uLXN0cmluZyBhcmd1bWVudHMKLSAgYXMgZG9jdW1lbnRlZC4KLQotLSBJc3N1ZSAjMjY2NjogSGFuZGxlIEJST1dTRVIgZW52aXJvbm1lbnQgdmFyaWFibGUgcHJvcGVybHkgZm9yIHVua25vd24gYnJvd3NlcgotICBuYW1lcyBpbiB0aGUgd2ViYnJvd3NlciBtb2R1bGUuCi0KLS0gSXNzdWUgIzYwNTQ6IERvIG5vdCBub3JtYWxpemUgc3RvcmVkIHBhdGhuYW1lcyBpbiB0YXJmaWxlLgotCi0tIElzc3VlICM2Nzk0OiBGaXggRGVjaW1hbC5jb21wYXJlX3RvdGFsIGFuZCBEZWNpbWFsLmNvbXBhcmVfdG90YWxfbWFnOiBOYU4KLSAgcGF5bG9hZHMgYXJlIG5vdyBvcmRlcmVkIGJ5IGludGVnZXIgdmFsdWUgcmF0aGVyIHRoYW4gbGV4aWNvZ3JhcGhpY2FsbHkuCi0KLS0gSXNzdWUgIzY2OTM6IE5ldyBmdW5jdGlvbnMgaW4gc2l0ZS5weSB0byBnZXQgdXNlci9nbG9iYWwgc2l0ZSBwYWNrYWdlcyBwYXRocy4KLQotLSBUaGUgdGhyZWFkLmxvY2sgdHlwZSBub3cgc3VwcG9ydHMgd2VhayByZWZlcmVuY2VzLgotCi0tIElzc3VlICMxMzU2OTY5OiBBZGQgbWlzc2luZyBpbmZvIG1ldGhvZHMgaW4gVGl4LkhMaXN0LgotCi0tIElzc3VlICMxNTIyNTg3OiBOZXcgY29uc3RhbnRzIGFuZCBtZXRob2RzIGZvciB0aGUgVGl4LkdyaWQgd2lkZ2V0LgotCi0tIElzc3VlICMxMjUwNDY5OiBGaXggdGhlIHJldHVybiB2YWx1ZSBvZiBUaXguUGFuZWRXaW5kb3cucGFuZXMuCi0KLS0gSXNzdWUgIzExMTk2NzM6IERvIG5vdCBvdmVycmlkZSBUa2ludGVyLlRleHQgbWV0aG9kcyB3aGVuIGNyZWF0aW5nIGEKLSAgU2Nyb2xsZWRUZXh0LgotCi0tIElzc3VlICM2NjY1OiBGaXggZm5tYXRjaCB0byBwcm9wZXJseSBtYXRjaCBmaWxlbmFtZXMgd2l0aCBuZXdsaW5lcyBpbiB0aGVtLgotCi0tIElzc3VlICMxMTM1OiBBZGQgdGhlIFhWaWV3IGFuZCBZVmlldyBtaXgtaW5zIHRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSB4dmlldyoKLSAgYW5kIHl2aWV3KiBtZXRob2RzLgotCi0tIElzc3VlICM2NjI5OiBGaXggYSBkYXRhIGNvcnJ1cHRpb24gaXNzdWUgaW4gdGhlIG5ldyBgaW9gIHBhY2thZ2UsIHdoaWNoIGNvdWxkCi0gIG9jY3VyIHdoZW4gd3JpdGluZyB0byBhIEJ1ZmZlcmVkUmFuZG9tIG9iamVjdCAoZS5nLiBhIGZpbGUgb3BlbmVkIGluICJyYisiIG9yCi0gICJ3YisiIG1vZGUpIGFmdGVyIGhhdmluZyBidWZmZXJlZCBhIGNlcnRhaW4gYW1vdW50IG9mIGRhdGEgZm9yIHJlYWRpbmcuIFRoaXMKLSAgYnVnIHdhcyBub3QgcHJlc2VudCBpbiB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzQ2NjA6IElmIGEgbXVsdGlwcm9jZXNzaW5nLkpvaW5hYmxlUXVldWUucHV0KCkgd2FzIHByZWVtcHRlZCwgaXQgd2FzCi0gIHBvc3NpYmxlIHRvIGdldCBhIHNwdXJpb3VzICd0YXNrX2RvbmUoKSBjYWxsZWQgdG9vIG1hbnkgdGltZXMnIGVycm9yLgotCi0tIElzc3VlICMxNjI4MjA1OiBTb2NrZXQgZmlsZSBvYmplY3RzIHJldHVybmVkIGJ5IHNvY2tldC5zb2NrZXQubWFrZWZpbGUoKSBub3cKLSAgcHJvcGVybHkgaGFuZGxlcyBFSU5UUiB3aXRoaW4gdGhlIHJlYWQsIHJlYWRsaW5lLCB3cml0ZSAmIGZsdXNoIG1ldGhvZHMuICBUaGUKLSAgc29ja2V0LnNlbmRhbGwoKSBtZXRob2Qgbm93IHByb3Blcmx5IGhhbmRsZXMgaW50ZXJydXB0ZWQgc3lzdGVtIGNhbGxzLgotCi0tIElzc3VlICM2NTk1OiBUaGUgRGVjaW1hbCBjb25zdHJ1Y3RvciBub3cgYWxsb3dzIGFyYml0cmFyeSBVbmljb2RlIGRlY2ltYWwKLSAgZGlnaXRzIGluIGlucHV0LCBhcyByZWNvbW1lbmRlZCBieSB0aGUgc3RhbmRhcmQuICBQcmV2aW91c2x5IGl0IHdhcyByZXN0cmljdGVkCi0gIHRvIGFjY2VwdGluZyBbMC05XS4KLQotLSBJc3N1ZSAjNjUxMTogWmlwRmlsZSBub3cgcmFpc2VzIEJhZFppcGZpbGUgKGluc3RlYWQgb2YgYW4gSU9FcnJvcikgd2hlbgotICBvcGVuaW5nIGFuIGVtcHR5IG9yIHZlcnkgc21hbGwgZmlsZS4KLQotLSBJc3N1ZSAjNjU1MzogRml4ZWQgYSBjcmFzaCBpbiBjUGlja2xlLmxvYWQoKSwgd2hlbiBnaXZlbiBhIGZpbGUtbGlrZSBvYmplY3QKLSAgY29udGFpbmluZyBpbmNvbXBsZXRlIGRhdGEuCi0KLS0gSXNzdWUgIzY1NDU6IFJlbW92ZWQgYXNzZXJ0IHN0YXRlbWVudHMgaW4gZGlzdHV0aWxzLkV4dGVuc2lvbiwgc28gdGhlIGJlaGF2aW9yCi0gIGlzIHNpbWlsYXIgd2hlbiB1c2VkIHdpdGggLU8uCi0KLS0gdW5pdHRlc3QgaGFzIGJlZW4gc3BsaXQgdXAgaW50byBhIHBhY2thZ2UuICBBbGwgb2xkIG5hbWVzIHNob3VsZCBzdGlsbCB3b3JrLgotCi0tIElzc3VlICM2NDMxOiBNYWtlIEZyYWN0aW9uIHR5cGUgcmV0dXJuIE5vdEltcGxlbWVudGVkIHdoZW4gaXQgZG9lc24ndCBrbm93IGhvdwotICB0byBoYW5kbGUgYSBjb21wYXJpc29uIHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uICBBbHNvIGFkZCBjb3JyZWN0IGhhbmRsaW5nCi0gIG9mIGluZmluaXRpZXMgYW5kIG5hbnMgZm9yIGNvbXBhcmlzb25zIHdpdGggZmxvYXQuCi0KLS0gSXNzdWUgIzY0MTU6IEZpeGVkIHdhcm5pbmdzLndhcm4gc2VnZmF1bHQgb24gYmFkIGZvcm1hdHRlZCBzdHJpbmcuCi0KLS0gSXNzdWUgIzY0NjY6IE5vdyBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyIGFuZCBkaXN0dXRpbHMuZW14Y2NvbXBpbGVyIHVzZXMgdGhlCi0gIHNhbWUgcmVmYWN0b3JlZCBmdW5jdGlvbiB0byBnZXQgZ2NjL2xkL2RsbHdyYXAgdmVyc2lvbnMgbnVtYmVycy4gIEl0J3MKLSAgYGBkaXN0dXRpbHMudXRpbC5nZXRfY29tcGlsZXJfdmVyc2lvbnMoKWBgLiAgQWRkZWQgZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yCi0gIHRoZSBvYnNvbGV0ZSBnZXRfdmVyc2lvbnMoKSBmdW5jdGlvbnMuCi0KLS0gSXNzdWUgIzY0MzM6IEZpeGVkIGlzc3VlcyB3aXRoIG11bHRpcHJvY2Vzc2luZy5wb29sLm1hcCBoYW5naW5nIG9uIGVtcHR5IGxpc3QuCi0KLS0gSXNzdWUgIzYzMTQ6IGxvZ2dpbmc6IEV4dHJhIGNoZWNrcyBvbiB0aGUgImxldmVsIiBhcmd1bWVudCBpbiBtb3JlIHBsYWNlcy4KLQotLSBJc3N1ZSAjMjYyMjogRml4ZWQgYW4gSW1wb3J0RXJyb3Igd2hlbiBpbXBvcnRpbmcgZW1haWwubWVzc3NhZ2UgZnJvbSBhCi0gIHN0YW5kYWxvbmUgYXBwbGljYXRpb24gYnVpbHQgd2l0aCBweTJleGUgb3IgcHkyYXBwLgotCi0tIElzc3VlICM2NDU1OiBGaXhlZCB0ZXN0X2J1aWxkX2V4dCB1bmRlciB3aW4zMi4KLQotLSBJc3N1ZSAjNjM3NzogRW5hYmxlZCB0aGUgY29tcGlsZXIgb3B0aW9uLCBhbmQgZGVwcmVjYXRlIGl0cyB1c2FnZSBhcyBhbgotICBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzY0MTM6IEZpeGVkIHRoZSBsb2cgbGV2ZWwgaW4gZGlzdHV0aWxzLmRpc3QgZm9yIGFubm91bmNlLgotCi0tIElzc3VlICMzMzkyOiBUaGUgc3VicHJvY2VzcyBjb21tdW5pY2F0ZSgpIG1ldGhvZCBubyBsb25nZXIgZmFpbHMgaW4gc2VsZWN0KCkKLSAgd2hlbiBmaWxlIGRlc2NyaXB0b3JzIGFyZSBsYXJnZTsgY29tbXVuaWNhdGUoKSBub3cgdXNlcyBwb2xsKCkgd2hlbiBwb3NzaWJsZS4KLQotLSBJc3N1ZSAjNjQwMzogRml4ZWQgcGFja2FnZSBwYXRoIHVzYWdlIGluIGJ1aWxkX2V4dC4KLQotLSBJc3N1ZXMgIzUxNTUsICM1MzEzLCAjNTMzMTogbXVsdGlwcm9jZXNzaW5nLlByb2Nlc3MuX2Jvb3RzdHJhcCB3YXMKLSAgdW5jb25kaXRpb25hbGx5IGNhbGxpbmcgIm9zLmNsb3NlKHN5cy5zdGRpbi5maWxlbm8oKSkiIHJlc3VsdGluZyBpbiBmaWxlCi0gIGRlc2NyaXB0b3IgZXJyb3JzLgotCi0tIElzc3VlICM2MzY1OiBEaXN0dXRpbHMgYnVpbGRfZXh0IGlucGxhY2UgbW9kZSB3YXMgY29weWluZyB0aGUgY29tcGlsZWQKLSAgZXh0ZW5zaW9uIGluIGEgc3ViZGlyZWN0b3J5IGlmIHRoZSBleHRlbnNpb24gbmFtZSBoYWQgZG90cy4KLQotLSBJc3N1ZSAjNjM0NDogRml4ZWQgYSBjcmFzaCBvZiBtbWFwLnJlYWQoKSB3aGVuIHBhc3NlZCBhIG5lZ2F0aXZlIGFyZ3VtZW50LgotCi0tIElzc3VlICM1MjMwOiBweWRvYyB3b3VsZCByZXBvcnQgbm8gZG9jdW1lbnRhdGlvbiBmb3VuZCBpZiBhIG1vZHVsZSBnZW5lcmF0ZWQgYQotICAnbm90IGZvdW5kJyBpbXBvcnQgZXJyb3Igd2hlbiBsb2FkZWQ7IGl0IG5vdyByZXBvcnRzIHRoZSBpbXBvcnQgZXJyb3JzLgotICBUaGFua3MgdG8gTHVjYXMgUHJhZG8gTWVsbyBmb3IgaW5pdGlhbCBmaXggYW5kIGNvbGxhYm9yYXRpb24gb24gdGhlIHRlc3RzLgotCi0tIElzc3VlICM2MzE0OiBgYGxvZ2dpbmcuYmFzaWNDb25maWcoKWBgIHBlcmZvcm1zIGV4dHJhIGNoZWNrcyBvbiB0aGUgImxldmVsIgotICBhcmd1bWVudC4KLQotLSBJc3N1ZSAjNjE2NDogQWRkZWQgYW4gQUlYIHNwZWNpZmljIGxpbmtlciBhcmd1bWVudCBpbiBEaXN0dXRpbHMgdW5peGNvbXBpbGVyLgotICBPcmlnaW5hbCBwYXRjaCBieSBTcmlkaGFyIFJhdG5ha3VtYXIuCi0KLS0gSXNzdWUgIzYyNzQ6IEZpeGVkIHBvc3NpYmxlIGZpbGUgZGVzY3JpcHRvcnMgbGVhayBpbiBzdWJwcm9jZXNzLnB5LgotCi0tIElzc3VlICM2MTg5OiBSZXN0b3JlZCBjb21wYXRpYmlsaXR5IG9mIHN1YnByb2Nlc3MucHkgd2l0aCBQeXRob24gMi4yLgotCi0tIElzc3VlICM2Mjg3OiBBZGRlZCB0aGUgbGljZW5zZSBmaWVsZCBpbiBEaXN0dXRpbHMgZG9jdW1lbnRhdGlvbi4KLQotLSBJc3N1ZSAjNjI4NjogTm93IERpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBpcyBiYXNlZCBvbiB1cmxsaWIyIGluc3RlYWQgb2YKLSAgaHR0cGxpYiwgYWxsb3dpbmcgdGhlIHVzYWdlIG9mIGh0dHBfcHJveHkuCi0KLS0gSXNzdWUgIzYyNzE6IG1tYXAgdHJpZWQgdG8gY2xvc2UgaW52YWxpZCBmaWxlIGhhbmRsZSAoLTEpIGZvciBhbm9ueW1vdXMgbWFwcwotICBvbiBVbml4LgotCi0tIElzc3VlICM2MjE1OiBBbGwgYnVnIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMgZnJvbSB0aGUgUHl0aG9uIDMuMSBpbyBsaWJyYXJ5Ci0gIChpbmNsdWRpbmcgdGhlIGZhc3QgQyBpbXBsZW1lbnRhdGlvbikgaGF2ZSBiZWVuIGJhY2twb3J0ZWQgdG8gdGhlIHN0YW5kYXJkCi0gIGBgaW9gYCBtb2R1bGUuCi0KLS0gSXNzdWUgIzYyNTg6IFN1cHBvcnQgQU1ENjQgaW4gYmRpc3RfbXNpLgotCi0tIElzc3VlICM2MjUyOiBGaXhlZCBidWcgaW4gbmV4dCByb2xsb3ZlciB0aW1lIGNvbXB1dGF0aW9uIGluCi0gIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlci4KLQotLSBJc3N1ZSAjNjI2MzogRml4ZWQgc3ludGF4IGVycm9yIGluIGRpc3R1dGlscy5jeWd3aW5jb21waWxlci4KLQotLSBJc3N1ZSAjNTIwMTogZGlzdHV0aWxzLnN5c2NvbmZpZy5wYXJzZV9tYWtlZmlsZSgpIG5vdyB1bmRlcnN0YW5kcyBgYCQkYGAgaW4KLSAgTWFrZWZpbGVzLiAgVGhpcyBwcmV2ZW50cyBjb21waWxlIGVycm9ycyB3aGVuIHVzaW5nIHN5bnRheCBsaWtlOgotICBgYExERkxBR1M9Jy1ycGF0aD1cJCRMSUI6L3NvbWUvb3RoZXIvcGF0aCdgYC4gIFBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgotCi0tIElzc3VlICM1NzY3OiBSZW1vdmVkIHNnbWxvcCBzdXBwb3J0IGZyb20geG1scnBjbGliLgotCi0tIElzc3VlICM2MTMxOiB0ZXN0X21vZHVsZWZpbmRlciBsZWFrZWQgd2hlbiBydW4gYWZ0ZXIgdGVzdF9kaXN0dXRpbHMuICBQYXRjaCBieQotICBIaXJva2F6dSBZYW1hbW90by4KLQotLSBJc3N1ZSAjNjA0ODogTm93IERpc3R1dGlscyB1c2VzIHRoZSB0YXJmaWxlIG1vZHVsZSBpbiBhcmNoaXZlX3V0aWwuCi0KLS0gSXNzdWUgIzYxMjE6IHB5ZG9jIG5vdyBpZ25vcmVzIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcyBpbiB0aGUgYXJndW1lbnQgdG8KLSAgdGhlICdoZWxwJyBmdW5jdGlvbi4KLQotLSBJbiB1bml0dGVzdCwgdXNpbmcgYSBza2lwcGluZyBkZWNvcmF0b3Igb24gYSBjbGFzcyBpcyBub3cgZXF1aXZhbGVudCB0bwotICBza2lwcGluZyBldmVyeSB0ZXN0IG9uIHRoZSBjbGFzcy4gIFRoZSBDbGFzc1Rlc3RTdWl0ZSBjbGFzcyBoYXMgYmVlbiByZW1vdmVkLgotCi0tIElzc3VlICM2MDUwOiBEb24ndCBmYWlsIGV4dHJhY3RpbmcgYSBkaXJlY3RvcnkgZnJvbSBhIHppcGZpbGUgaWYgdGhlIGRpcmVjdG9yeQotICBhbHJlYWR5IGV4aXN0cy4KLQotLSBJc3N1ZSAjNTMxMTogYmRpc3RfbXNpIGNhbiBub3cgYnVpbGQgcGFja2FnZXMgdGhhdCBkbyBub3QgZGVwZW5kIG9uIGEgc3BlY2lmaWMKLSAgUHl0aG9uIHZlcnNpb24uCi0KLS0gSXNzdWUgIzEzMDkzNTI6IGZjbnRsIG5vdyBjb252ZXJ0cyBpdHMgdGhpcmQgYXJndW1lbnRzIHRvIGEgQyBgbG9uZ2AgcmF0aGVyCi0gIHRoYW4gYW4gaW50LCB3aGljaCBtYWtlcyBzb21lIG9wZXJhdGlvbnMgcG9zc2libGUgdW5kZXIgNjQtYml0IExpbnV4IChlLmcuCi0gIEROX01VTFRJU0hPVCB3aXRoIEZfTk9USUZZKS4KLQotLSBJc3N1ZSAjMTQyNDE1MjogRml4IGZvciBodHRwbGliLCB1cmxsaWIyIHRvIHN1cHBvcnQgU1NMIHdoaWxlIHdvcmtpbmcgdGhyb3VnaAotICBwcm94eS4gT3JpZ2luYWwgcGF0Y2ggYnkgQ2hyaXN0b3BoZXIgTGksIGNoYW5nZXMgbWFkZSBieSBTZW50aGlsIEt1bWFyYW4uCi0KLS0gSXNzdWUgIzE5ODM6IEZpeCBmdW5jdGlvbnMgdGFraW5nIG9yIHJldHVybmluZyBhIHByb2Nlc3MgaWRlbnRpZmllciB0byB1c2UgdGhlCi0gIGRlZGljYXRlZCBDIHR5cGUgYGBwaWRfdGBgIGluc3RlYWQgb2YgYSBDIGBgaW50YGAuICBTb21lIHBsYXRmb3JtcyBoYXZlIGEKLSAgcHJvY2VzcyBpZGVudGlmaWVyIHR5cGUgd2lkZXIgdGhhbiB0aGUgc3RhbmRhcmQgQyBpbnRlZ2VyIHR5cGUuCi0KLS0gSXNzdWUgIzQwNjY6IHNtdHBsaWIuU01UUF9TU0wuX2dldF9zb2NrZXQgbm93IGNvcnJlY3RseSByZXR1cm5zIHRoZSBzb2NrZXQuCi0gIFBhdGNoIGJ5IEZhcmhhbiBBaG1hZCwgdGVzdCBieSBNYXJjaW4gQmFjaHJ5LgotCi0tIElzc3VlICM2MDYyOiBJbiBkaXN0dXRpbHMsIGZpeGVkIHRoZSBwYWNrYWdlIG9wdGlvbiBvZiBidWlsZF9leHQuICBGZWVkYmFjawotICBhbmQgdGVzdHMgb24gcHl3aW4zMiBieSBUaW0gR29sZGVuLgotCi0tIElzc3VlICM2MDUzOiBGaXhlZCBkaXN0dXRpbHMgdGVzdHMgb24gd2luMzIuICBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KLQotLSBJc3N1ZSAjNjA0NjogRml4ZWQgdGhlIGxpYnJhcnkgZXh0ZW5zaW9uIHdoZW4gZGlzdHV0aWxzIGJ1aWxkX2V4dCBpcyB1c2VkIGluCi0gIHBsYWNlLiAgSW5pdGlhbCBwYXRjaCBieSBSb3VtZW4gUGV0cm92LgotCi0tIElzc3VlICM2MDQxOiBOb3cgZGlzdHV0aWxzIGBzZGlzdGAgYW5kIGByZWdpc3RlcmAgY29tbWFuZHMgdXNlIGBjaGVja2AgYXMgYQotICBzdWJjb21tYW5kLgotCi0tIElzc3VlICMyMTE2OiBXZWFrIHJlZmVyZW5jZXMgYW5kIHdlYWsgZGljdGlvbmFyaWVzIG5vdyBzdXBwb3J0IGNvcHkoKWluZyBhbmQKLSAgZGVlcGNvcHkoKWluZy4KLQotLSBJc3N1ZSAjMTY1NTogTWFrZSBpbWFwbGliIElQdjYtY2FwYWJsZS4gIFBhdGNoIGJ5IERlcmVrIE1vcnIuCi0KLS0gSXNzdWUgIzU5MTg6IEZpeCBhIGNyYXNoIGluIHRoZSBwYXJzZXIgbW9kdWxlLgotCi0tIElzc3VlICMxNjY0OiBNYWtlIG5udHBsaWIgSVB2Ni1jYXBhYmxlLiAgUGF0Y2ggYnkgRGVyZWsgTW9yci4KLQotLSBJc3N1ZSAjNjAyMjogQSB0ZXN0IGZpbGUgd2FzIGNyZWF0ZWQgaW4gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgYnkKLSAgdGVzdF9nZXRfb3V0cHV0cyBpbiBEaXN0dXRpbHMuCi0KLS0gSXNzdWUgIzQwNTA6IGluc3BlY3QuZmluZHNvdXJjZS9nZXRzb3VyY2Ugbm93IHJhaXNlIGFuIElPRXJyb3IgaWYgdGhlICdzb3VyY2UnCi0gIGZpbGUgaXMgYSBiaW5hcnkuICBQYXRjaCBieSBCcm9kaWUgUmFvLCB0ZXN0cyBieSBEYW5pZWwgRGluaXouCi0KLS0gSXNzdWUgIzU5Nzc6IGRpc3R1dGlscyBidWlsZF9leHQuZ2V0X291dHB1dHMgd2FzIG5vdCB0YWtpbmcgaW50byBhY2NvdW50IHRoZQotICBpbnBsYWNlIG9wdGlvbi4gIEluaXRpYWwgcGF0Y2ggYnkga3hyb2JlcnRvLgotCi0tIElzc3VlICM1OTg0OiBkaXN0dXRpbHMuY29tbWFuZC5idWlsZF9leHQuY2hlY2tfZXh0ZW5zaW9uc19saXN0IGNoZWNrcyB3ZXJlCi0gIGJyb2tlbiBmb3Igb2xkLXN0eWxlIGV4dGVuc2lvbnMuCi0KLS0gSXNzdWUgIzU5NzE6IFN0cmVhbUhhbmRsZXIuaGFuZGxlRXJyb3Igbm93IHN3YWxsb3dzIElPRXJyb3JzIHdoaWNoIG9jY3VyIHdoZW4KLSAgdHJ5aW5nIHRvIHByaW50IGEgdHJhY2ViYWNrLgotCi0tIElzc3VlICM1OTc2OiBGaXhlZCBEaXN0dXRpbHMgdGVzdF9jaGVja19lbnZpcm9uLgotCi0tIElzc3VlICM1OTAwOiBFbnN1cmUgUlVOUEFUSCBpcyBhZGRlZCB0byBleHRlbnNpb24gbW9kdWxlcyB3aXRoIFJQQVRIIGlmIEdOVSBsZAotICBpcyB1c2VkLiAgT3JpZ2luYWwgcGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCi0KLS0gSXNzdWUgIzU5NDE6IERpc3R1dGlscyBidWlsZF9jbGliIGNvbW1hbmQgd2FzIG5vdCB3b3JraW5nIGFueW1vcmUgYmVjYXVzZSBvZgotICBhbiBpbmNvbXBsZXRlIGN1c3RvbWl6YXRpb24gb2YgdGhlIGFyY2hpdmVyIGNvbW1hbmQuICBBZGRlZCBBUkZMQUdTIGluIHRoZQotICBNYWtlZmlsZSBiZXNpZGVzIEFSIGFuZCBtYWtlIERpc3R1dGlscyB1c2UgaXQuICBPcmlnaW5hbCBwYXRjaCBieSBEYXZpZAotICBDb3VybmFwZWF1LgotCi0tIElzc3VlICM1OTU1OiBhaWZjJ3MgY2xvc2UgbWV0aG9kIGRpZCBub3QgY2xvc2UgdGhlIGZpbGUgaXQgd3JhcHBlZCwgbm93IGl0Ci0gIGRvZXMuICBUaGlzIGFsc28gbWVhbnMgZ2V0ZnAgbWV0aG9kIG5vdyByZXR1cm5zIHRoZSByZWFsIGZwLgotCi0tIElzc3VlICM0ODc1OiBPbiB3aW4zMiwgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IGRvZXMgbm8gbG9uZ2VyIHJldHVybgotICBkaXJlY3Rvcmllcy4KLQotLSBJc3N1ZSAjNTE0MjogQWRkIHRoZSBhYmlsaXR5IHRvIHNraXAgbW9kdWxlcyB3aGlsZSBzdGVwcGluZyB0byBwZGIuCi0KLS0gSXNzdWUgIzEzMDk1Njc6IEZpeCBsaW5lY2FjaGUgYmVoYXZpb3Igb2Ygc3RyaXBwaW5nIHN1YmRpcmVjdG9yaWVzIHdoZW4KLSAgbG9va2luZyBmb3IgZmlsZXMgZ2l2ZW4gYnkgYSByZWxhdGl2ZSBmaWxlbmFtZS4KLQotLSBJc3N1ZSAjNTY5MjogSW4gYGB6aXBmaWxlLlppcGZpbGVgYCwgZml4IHdyb25nIHBhdGggY2FsY3VsYXRpb24gd2hlbgotICBleHRyYWN0aW5nIGEgZmlsZSB0byB0aGUgcm9vdCBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzU5MTM6IGBgb3MubGlzdGRpcigpYGAgc2hvdWxkIGZhaWwgZm9yIGVtcHR5IHBhdGggb24gd2luZG93cy4KLQotLSBJc3N1ZSAjNTA4NDogVW5waWNrbGluZyBub3cgaW50ZXJucyB0aGUgYXR0cmlidXRlIG5hbWVzIG9mIHBpY2tsZWQgb2JqZWN0cywKLSAgc2F2aW5nIG1lbW9yeSBhbmQgYXZvaWRpbmcgZ3Jvd3RoIGluIHNpemUgb2Ygc3Vic2VxdWVudCBwaWNrbGVzLiAgUHJvcG9zYWwgYW5kCi0gIG9yaWdpbmFsIHBhdGNoIGJ5IEpha2UgTWNHdWlyZS4KLQotLSBJc3N1ZSAjMzAwMjogYGBzaHV0aWwuY29weWZpbGUoKWBgIGFuZCBgYHNodXRpbC5jb3B5dHJlZSgpYGAgbm93IHJhaXNlIGFuCi0gIGVycm9yIHdoZW4gYSBuYW1lZCBwaXBlIGlzIGVuY291bnRlcmVkLCByYXRoZXIgdGhhbiBibG9ja2luZyBpbmZpbml0ZWx5LgotCi0tIElzc3VlICMzOTU5OiBUaGUgaXBhZGRyIG1vZHVsZSBoYXMgYmVlbiBhZGRlZCB0byB0aGUgc3RhbmRhcmQgbGlicmFyeS4KLSAgQ29udHJpYnV0ZWQgYnkgR29vZ2xlLgotCi0tIElzc3VlICMyMjQ1OiBhaWZjIG5vdyBza2lwcyBjaHVuayB0eXBlcyBpdCBkb2Vzbid0IHJlY29nbml6ZSwgcGVyIHNwZWMuCi0KLS0gSXNzdWUgIzU4NzQ6IGRpc3R1dGlscy50ZXN0cy50ZXN0X2NvbmZpZ19jbWQgaXMgbm90IGxvY2FsZS1zZW5zaXRpdmUgYW55bW9yZS4KLQotLSBJc3N1ZSAjNDMwNTogY3R5cGVzIHNob3VsZCBub3cgYnVpbGQgYWdhaW4gb24gbWlwc2VsLWxpbnV4LWdudQotCi0tIElzc3VlICMxNzM0MjM0OiBNYXNzaXZlbHkgc3BlZWR1cCBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpYGAgd2hlbiB0aGUgc3RyaW5nCi0gIGlzIGFscmVhZHkgaW4gbm9ybWFsaXplZCBmb3JtLCBieSBwZXJmb3JtaW5nIGEgcXVpY2sgY2hlY2sgYmVmb3JlaGFuZC4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgUmF1bGkgUnVvaG9uZW4uCi0KLS0gSXNzdWUgIzU4NTM6IENhbGxpbmcgYSBmdW5jdGlvbiBvZiB0aGUgbWltZXR5cGVzIG1vZHVsZSBmcm9tIHNldmVyYWwgdGhyZWFkcwotICBhdCBvbmNlIGNvdWxkIGhpdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGlmIHRoZSBtaW1ldHlwZXMgZGF0YWJhc2UgaGFkbid0IGJlZW4KLSAgaW5pdGlhbGl6ZWQgYmVmb3JlLgotCi0tIElzc3VlICM1ODU0OiBVcGRhdGVkIF9fYWxsX18gdG8gaW5jbHVkZSBzb21lIG1pc3NpbmcgbmFtZXMgYW5kIHJlbW92ZSBzb21lCi0gIG5hbWVzIHdoaWNoIHNob3VsZCBub3QgYmUgZXhwb3J0ZWQuCi0KLS0gSXNzdWUgIzU4MTA6IEZpeGVkIERpc3R1dGlscyB0ZXN0X2J1aWxkX3NjcmlwdHMgc28gaXQgdXNlcwotICBgYHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcnMoKWBgLgotCi0tIElzc3VlICM0OTUxOiBGaXhlZCBmYWlsdXJlIGluIHRlc3RfaHR0cHNlcnZlcnMuCi0KLS0gSXNzdWUgIzMxMDI6IEFsbCBnbG9iYWwgc3ltYm9scyB0aGF0IHRoZSBfY3R5cGVzIGV4dGVuc2lvbiBkZWZpbmVzIGFyZSBub3cKLSAgcHJlZml4ZWQgd2l0aCAnUHknIG9yICdfY3R5cGVzJy4KLQotLSBJc3N1ZSAjNTA0MTogY3R5cGVzIGRvZXMgbm93IGFsbG93IHBpY2tsaW5nIHdpZGUgY2hhcmFjdGVyLgotCi0tIElzc3VlICM1ODEyOiBGb3IgdGhlIHR3by1hcmd1bWVudCBmb3JtIG9mIHRoZSBGcmFjdGlvbiBjb25zdHJ1Y3RvciwKLSAgYGBGcmFjdGlvbihtLCBuKWBgLCBtIGFuZCBuIGFyZSBwZXJtaXR0ZWQgdG8gYmUgYXJiaXRyYXJ5IFJhdGlvbmFsIGluc3RhbmNlcy4KLQotLSBJc3N1ZSAjNTgxMjogRnJhY3Rpb24oJzFlNicpIGlzIHZhbGlkOiBtb3JlIGdlbmVyYWxseSwgYW55IHN0cmluZyB0aGF0J3MgdmFsaWQKLSAgZm9yIGZsb2F0KCkgaXMgbm93IHZhbGlkIGZvciBGcmFjdGlvbigpLCB3aXRoIHRoZSBleGNlcHRpb24gb2Ygc3RyaW5ncwotICByZXByZXNlbnRpbmcgTmFOcyBhbmQgaW5maW5pdGllcy4KLQotLSBJc3N1ZSAjNTc5NTogRml4ZWQgdGVzdF9kaXN0dXRpbHMgZmFpbHVyZSBvbiBEZWJpYW4gcHBjLgotCi0tIElzc3VlICM1NzY4OiBGaXhlZCBidWcgaW4gVW5pY29kZSBvdXRwdXQgbG9naWMgYW5kIHRlc3QgY2FzZSBmb3Igc2FtZS4KLQotLSBJc3N1ZSAjMTE2MTAzMTogRml4IHJlYWR3cml0ZSBzZWxlY3QgZmxhZyBoYW5kbGluZzogUE9MTFBSSSBub3cgcmVzdWx0cyBpbiBhCi0gIGhhbmRsZV9leHB0X2V2ZW50IGNhbGwsIG5vdCBoYW5kbGVfcmVhZF9ldmVudCwgYW5kIFBPTExFUlIgYW5kIFBPTExOVkFMIG5vdwotICBjYWxsIGhhbmRsZV9jbG9zZSwgbm90IGhhbmRsZV9leHB0X2V2ZW50LiAgQWxzbywgZGlzcGF0Y2hlciBub3cgaGFzIGFuCi0gICdpZ25vcmVfbG9nX3R5cGVzJyBhdHRyaWJ1dGUgZm9yIHN1cHByZXNzaW5nIGxvZyBtZXNzYWdlcywgd2hpY2ggaXMgc2V0IHRvCi0gICd3YXJuaW5nJyBieSBkZWZhdWx0LgotCi0tIElzc3VlICM1NjA3OiBGaXhlZCBEaXN0dXRpbHMgdGVzdF9nZXRfcGxhdGZvcm0gZm9yIE1hYyBPUyBYIGZhdCBiaW5hcmllcy4KLQotLSBJc3N1ZSAjNTc0MTogRG9uJ3QgZGlzYWxsb3cgIiUlIiAod2hpY2ggaXMgYW4gZXNjYXBlIGZvciAiJSIpIHdoZW4gc2V0dGluZyBhCi0gIHZhbHVlIGluIFNhZmVDb25maWdQYXJzZXIuCi0KLS0gSXNzdWUgIzU3MzI6IEFkZGVkIGEgbmV3IGNvbW1hbmQgaW4gRGlzdHV0aWxzOiBjaGVjay4KLQotLSBJc3N1ZSAjNTczMTogRGlzdHV0aWxzIGJkaXN0X3dpbmluc3Qgbm8gbG9uZ2VyIHdvcmtlZCBvbiBub24tV2luZG93cwotICBwbGF0Zm9ybXMuICBJbml0aWFsIHBhdGNoIGJ5IFBhdWwgTW9vcmUuCi0KLS0gSXNzdWUgIzIyNTQ6IEZpeCBDR0lIVFRQU2VydmVyIGluZm9ybWF0aW9uIGRpc2Nsb3N1cmUuICBSZWxhdGl2ZSBwYXRocyBhcmUgbm93Ci0gIGNvbGxhcHNlZCB3aXRoaW4gdGhlIHVybCBwcm9wZXJseSBiZWZvcmUgbG9va2luZyBpbiBjZ2lfZGlyZWN0b3JpZXMuCi0KLS0gSXNzdWUgIzUwOTU6IEFkZGVkIGJkaXN0X21zaSB0byB0aGUgbGlzdCBvZiBiZGlzdCBzdXBwb3J0ZWQgZm9ybWF0cy4gIEluaXRpYWwKLSAgZml4IGJ5IFN0ZXZlbiBCZXRoYXJkLgotCi0tIElzc3VlICMxNDkxNDMxOiBGaXhlZCBkaXN0dXRpbHMuZmlsZWxpc3QuZ2xvYl90b19yZSBmb3IgZWRnZSBjYXNlcy4gIEluaXRpYWwKLSAgZml4IGJ5IFdheW5lIERhdmlzb24uCi0KLS0gSXNzdWUgIzU2OTM6IFRlc3RTdWl0ZS5fX2l0ZXJfXyBjYW4gbm93IGJlIGNvbnNpc3RlbnRseSBvdmVycmlkZGVuIGluCi0gIHN1YmNsYXNzZXMuCi0KLS0gSXNzdWUgIzU2OTQ6IFJlbW92ZWQgc3B1cmlvdXMgdGVzdCBvdXRwdXQgaW4gRGlzdHV0aWxzICh0ZXN0X2NsZWFuKS4KLQotLSBJc3N1ZSAjNTQ3MTogRml4IG9zLnBhdGguZXhwYW5kdXNlcigpIGZvciAkSE9NRSBzZXQgdG8gJy8nLgotCi0tIElzc3VlICMxMzI2MDc3OiBGaXggdGhlIGZvcm1hdHRpbmcgb2YgU3ludGF4RXJyb3JzIGJ5IHRoZSB0cmFjZWJhY2sgbW9kdWxlLgotCi0tIElzc3VlICMxNzI2MTcyOiBGaXggSW5kZXhFcnJvciBpbiB0aGUgY2FzZSBvZiBhbmQgZW1wdHkgcmVzcG9uc2UgaW4gZnRwbGliLgotCi0tIElzc3VlICMyNjI1OiBBZGRlZCBtaXNzaW5nIGl0ZXJpdGVtcygpIGNhbGwgdG8gdGhlIGZvciBsb29wIGluCi0gIG1haWxib3guTUguZ2V0X21lc3NhZ2UoKS4KLQotLSBJc3N1ZSAjNTU4NTogQWRkIHRoZSBhYmlsaXR5IHRvIGNhbGwgYW4gaW5pdGlhbGl6ZXIgdG8KLSAgbXVsdGlwcm9jZXNzaW5nLm1hbmFnZXIgc28gdGhhdCB1c2VycyBjYW4gaW5zdGFsbCBjdXN0b20gaGFuZGxlcnMvZXRjLgotCi0tIElzc3VlICMzNTUxOiBQYXRjaCBtdWx0aXByb2Nlc3NpbmcgdG8gcmFpc2UgYSBwcm9wZXIgZXhjZXB0aW9uIGlmIHRoZSBzaXplIG9mCi0gIHRoZSBvYmplY3Qgd2hlbiB3cml0ZWZpbGUgaXMgY2FsbGVkIGNhdXNlcyBhbiBFUlJPUl9OT19TWVNURU1fUkVTT1VSQ0VTLiAgQWRkZWQKLSAgZG9jcyB0byBub3RlIHRoZSBsaW1pdGF0aW9uLgotCi0tIHVuaXR0ZXN0LmFzc2VydE5vdEVxdWFsKCkgbm93IHVzZXMgdGhlIGluZXF1YWxpdHkgb3BlcmF0b3IgKCE9KSBpbnN0ZWFkIG9mIHRoZQotICBlcXVhbGl0eSBvcGVyYXRvci4KLQotLSBJc3N1ZSAjNjAwMTogVGVzdCBkaXNjb3ZlcnkgZm9yIHVuaXR0ZXN0LiBJbXBsZW1lbnRlZCBpbgotICB1bml0dGVzdC5UZXN0TG9hZGVyLmRpc2NvdmVyIGFuZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCi0KLS0gSXNzdWUgIzU2Nzk6IFRoZSBtZXRob2RzIHVuaXR0ZXN0LlRlc3RDYXNlLmFkZENsZWFudXAgYW5kIGRvQ2xlYW51cHMgd2VyZQotICBhZGRlZC4gIGFkZENsZWFudXAgYWxsb3dzIHlvdSB0byBhZGQgY2xlYW51cCBmdW5jdGlvbnMgdGhhdCB3aWxsIGJlIGNhbGxlZAotICB1bmNvbmRpdGlvbmFsbHkgKGFmdGVyIHNldFVwIGlmIHNldFVwIGZhaWxzLCBvdGhlcndpc2UgYWZ0ZXIgdGVhckRvd24pLiBUaGlzCi0gIGFsbG93cyBmb3IgbXVjaCBzaW1wbGVyIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBkdXJpbmcgdGVzdHMuCi0KLS0gSXNzdWUgIzMzNzk6IHVuaXR0ZXN0Lm1haW4gbm93IHRha2VzIGFuIG9wdGlvbmFsIGV4aXQgYXJndW1lbnQuIElmIEZhbHNlIG1haW4KLSAgZG9lc24ndCBjYWxsIHN5cy5leGl0IGFsbG93aW5nIGl0IHRvIGJlIHVzZWQgZnJvbSB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIuCi0KLS0gSXNzdWUgIzU5OTU6IHVuaXR0ZXN0Lm1haW4gbm93IHRha2VzIGFuIG9wdGlvbmFsIHZlcmJvc2l0eSBhcmd1bWVudCBhbGxvd2luZwotICB0ZXN0IG1vZHVsZXMgdG8gYmUgcnVuIHdpdGggYSBoaWdoZXIgdGhhbiBkZWZhdWx0IHZlcmJvc2l0eS4KLQotLSBJc3N1ZSAjNTk5NTogQSBmaXggdG8gYWxsb3cgeW91IHRvIHJ1biAicHl0aG9uIC1tIHVuaXR0ZXN0IHRlc3RfbW9kdWxlIiBvcgotICAicHl0aG9uIC1tIHVuaXR0ZXN0IHRlc3RfbW9kdWxlLlRlc3RDbGFzcyIgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgotCi0tIElzc3VlICM1NzI4OiB1bml0dGVzdC5UZXN0UmVzdWx0IGhhcyBuZXcgc3RhcnRUZXN0UnVuIGFuZCBzdG9wVGVzdFJ1biBtZXRob2RzOwotICBjYWxsZWQgaW1tZWRpYXRlbHkgYmVmb3JlIGFuZCBhZnRlciBhIHRlc3QgcnVuLgotCi0tIElzc3VlICM1NjYzOiBCZXR0ZXIgZmFpbHVyZSBtZXNzYWdlcyBmb3IgdW5pdHRlc3QgYXNzZXJ0cy4gRGVmYXVsdCBhc3NlcnRUcnVlCi0gIGFuZCBhc3NlcnRGYWxzZSBtZXNzYWdlcyBhcmUgbm93IHVzZWZ1bC4gVGVzdENhc2UgaGFzIGEgbG9uZ01lc3NhZ2UgYXR0cmlidXRlLgotICBUaGlzIGRlZmF1bHRzIHRvIEZhbHNlLCBidXQgaWYgc2V0IHRvIFRydWUgdXNlZnVsIGVycm9yIG1lc3NhZ2VzIGFyZSBzaG93biBpbgotICBhZGRpdGlvbiB0byBleHBsaWNpdCBtZXNzYWdlcyBwYXNzZWQgdG8gYXNzZXJ0IG1ldGhvZHMuCi0KLS0gSXNzdWUgIzMxMTA6IEFkZCBhZGRpdGlvbmFsIHByb3RlY3QgYXJvdW5kIFNFTV9WQUxVRV9NQVggZm9yIG11bHRpcHJvY2Vzc2luZy4KLQotLSBJbiBQZGIsIHByZXZlbnQgdGhlIHJlYXNzaWdubWVudCBvZiBfX2J1aWx0aW5fXy5fIGJ5IHN5cy5kaXNwbGF5aG9vayBvbgotICBwcmludGluZyBvdXQgdmFsdWVzLgotCi0tIElzc3VlICM0NTcyOiBBZGRlZCBTRUVLXyogc3ltYm9saWMgY29uc3RhbnRzIHRvIGlvIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTY2NTIwNiAocGFydGlhbGx5KTogTW92ZSBpbXBvcnRzIGluIGNnaXRiIHRvIHRoZSB0b3Agb2YgdGhlIG1vZHVsZQotICBpbnN0ZWFkIG9mIHBlcmZvcm1pbmcgdGhlbSBpbiBmdW5jdGlvbnMuIEhlbHBzIHByZXZlbnQgaW1wb3J0IGRlYWRsb2NraW5nIGluCi0gIHRocmVhZHMuCi0KLS0gSXNzdWUgIzU2NDc6IE11dGFibGVTZXQuX19pYW5kX18oKSBubyBsb25nZXIgbXV0YXRlcyBzZWxmIGR1cmluZyBpdGVyYXRpb24uCi0KLS0gQWN0dWFsbHkgbWFrZSB0aGUgU2ltcGxlWE1MUlBDU2VydmVyIENHSSBoYW5kbGVyIHdvcmsuCi0KLS0gSXNzdWUgIzI1MjI6IGxvY2FsZS5mb3JtYXQoKSBub3cgY2hlY2tzIGl0cyBmaXJzdCBhcmd1bWVudCB0byBlbnN1cmUgaXQgaGFzCi0gIGJlZW4gcGFzc2VkIG9ubHkgb25lIHBhdHRlcm4sIGF2b2lkaW5nIG15c3RlcmlvdXMgZXJyb3JzIHdoZXJlIGl0IGFwcGVhcmVkCi0gIHRoYXQgaXQgd2FzIGZhaWxpbmcgdG8gZG8gbG9jYWxpemF0aW9uLgotCi0tIElzc3VlICM1NTgzOiBBZGRlZCBvcHRpb25hbCBleHRlbnNpb25zIGluIERpc3R1dGlscy4gIEluaXRpYWwgcGF0Y2ggYnkgR2VvcmcKLSAgQnJhbmRsLgotCi0tIElzc3VlICM1NjE5OiBNdWx0aXByb2Nlc3NpbmcgY2hpbGRyZW4gZGlzb2JleSB0aGUgZGVidWcgZmxhZyBhbmQgY2F1c2VzIHBvcHVwcwotICBvbiB3aW5kb3dzIGJ1aWxkYm90cy4gIFBhdGNoIGFwcGxpZWQgdG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZS4KLQotLSBJc3N1ZSAjNTYzMjogVGhyZWFkLmlkZW50IHdhcyBOb25lIGZvciB0aGUgbWFpbiB0aHJlYWQgYW5kIHRocmVhZHMgbm90IGNyZWF0ZWQKLSAgd2l0aCB0aGUgdGhyZWFkaW5nIG1vZHVsZS4KLQotLSBJc3N1ZSAjNTQwMDogQWRkZWQgcGF0Y2ggZm9yIG11bHRpcHJvY2Vzc2luZyBvbiBuZXRic2QgY29tcGlsYXRpb24vc3VwcG9ydC4KLQotLSBJc3N1ZSAjNTM4NzogRml4ZWQgbW1hcC5tb3ZlIGNyYXNoIGJ5IGludGVnZXIgb3ZlcmZsb3cuCi0KLS0gSXNzdWUgIzUyNjE6IFBhdGNoIG11bHRpcHJvY2Vzc2luZydzIHNlbWFwaG9yZS5jIHRvIHN1cHBvcnQgY29udGV4dCBtYW5hZ2VyCi0gIHVzZTogIndpdGggbXVsdGlwcm9jZXNzaW5nLkxvY2soKSIgd29ya3Mgbm93LgotCi0tIElzc3VlICM1MTc3OiBNdWx0aXByb2Nlc3NpbmcncyBTb2NrZXRMaXN0ZW5lciBjbGFzcyBub3cgdXNlcwotICBzb2NrZXQuU09fUkVVU0VBRERSIG9uIGFsbCBjb25uZWN0aW9ucyBzbyB0aGF0IHRoZSB1c2VyIG5vIGxvbmdlciBuZWVkcyB0bwotICB3YWl0IDEyMCBzZWNvbmRzIGZvciB0aGUgc29ja2V0IHRvIGV4cGlyZS4KLQotLSBBZGp1c3RlZCBfdGtpbnRlciB0byBjb21waWxlIHdpdGhvdXQgd2FybmluZ3Mgd2hlbiBXSVRIX1RIUkVBRCBpcyBub3QgZGVmaW5lZAotICAocGFydCBvZiBpc3N1ZSAjNTAzNSkuCi0KLS0gSXNzdWUgIzU1NjE6IFJlbW92ZWQgdGhlIHN5cy52ZXJzaW9uX2luZm8gc2hvcnRjdXRzIGZyb20gcGxhdGZvcm0ncwotICBweXRob25fdmVyc2lvbigpIGFuZCBweXRob25fdmVyc2lvbl90dXBsZSgpIHNpbmNlIHRoZXkgcHJvZHVjZWQgZGlmZmVyZW50Ci0gIG91dHB1dCBjb21wYXJlZCB0byBwcmV2aW91cyBQeXRob24gdmVyc2lvbnMuCi0KLS0gSXNzdWUgIzEwMzQwNTM6IHVuaXR0ZXN0IG5vdyBzdXBwb3J0cyBza2lwcGluZyB0ZXN0cyBhbmQgZXhwZWN0ZWQgZmFpbHVyZXMuCi0KLS0gVGhlIHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydFJhaXNlcygpIG1ldGhvZCBub3cgcmV0dXJucyBhIGNvbnRleHQgbWFuYWdlciB3aGVuCi0gIG5vdCBnaXZlbiBhIGNhbGxhYmxlIHNvIHRoYXQgY29kZSB0byBiZSB0ZXN0ZWQgY2FuIGJlIHdyaXR0ZW4gaW5saW5lIHVzaW5nIGEKLSAgd2l0aCBzdGF0ZW1lbnQuCi0KLS0gSXNzdWUgIzI1Nzg6IFRoZSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRFcXVhbCgpIG5vdyBkaXNwbGF5cyB0aGUgZGlmZmVyZW5jZXMKLSAgaW4gbGlzdHMsIHR1cGxlcywgZGljdHMgYW5kIHNldHMgb24gZmFpbHVyZS4gIE1hbnkgbmV3IGhhbmR5IHR5cGUgYW5kCi0gIGNvbXBhcmlzb24gc3BlY2lmaWMgYXNzZXJ0KiBtZXRob2RzIGhhdmUgYmVlbiBhZGRlZCB0aGF0IGZhaWwgd2l0aCBlcnJvcgotICBtZXNzYWdlcyBhY3R1YWxseSB1c2VmdWwgZm9yIGRlYnVnZ2luZy4gIENvbnRyaWJ1dGVkIGluIHBhcnQgYnkgR29vZ2xlLgotCi0tIElzc3VlICM1MDY4OiBGaXhlZCB0aGUgdGFyZmlsZS5fQloyUHJveHkucmVhZCgpIG1ldGhvZCB0aGF0IHdvdWxkIGxvb3AgZm9yZXZlcgotICBvbiBpbmNvbXBsZXRlIGlucHV0LiAgVGhhdCBjYXVzZWQgdGFyZmlsZS5vcGVuKCkgdG8gaGFuZyB3aGVuIHVzZWQgd2l0aCBtb2RlCi0gICdyJyBvciAncjpiejInIGFuZCBhIGZpbGVvYmogYXJndW1lbnQgdGhhdCBjb250YWluZWQgbm8gZGF0YSBvciBwYXJ0aWFsIGJ6aXAyCi0gIGNvbXByZXNzZWQgZGF0YS4KLQotLSBJc3N1ZSAjNTUzNjogdXJsbGliLnVybHJldHJpZXZlIG1ha2VzIHN1cmUgdG8gY2xvc2UgdGhlIGZpbGUgaXQncyB3cml0aW5nIHRvCi0gIGV2ZW4gaWYgYW4gZXhjZXB0aW9uIG9jY3Vycy4KLQotLSBJc3N1ZSAjNTM4MTogQWRkZWQgb2JqZWN0X3BhaXJzX2hvb2sgdG8gdGhlIGpzb24gbW9kdWxlLiAgVGhpcyBhbGxvd3MKLSAgT3JkZXJlZERpY3RzIHRvIGJlIGJ1aWx0IGJ5IHRoZSBkZWNvZGVyLgotCi0tIElzc3VlICMyMTEwOiBBZGQgc3VwcG9ydCBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvciBhbmQgJ24nIHR5cGUgc3BlY2lmaWVyIHRvCi0gIGBgRGVjaW1hbC5fX2Zvcm1hdF9fKClgYC4KLQotLSBGaXggRGVjaW1hbC5fX2Zvcm1hdF9fIGJ1ZyB0aGF0IHN3YXBwZWQgdGhlIG1lYW5pbmdzIG9mIHRoZSAnPCcgYW5kICc+JwotICBhbGlnbm1lbnQgY2hhcmFjdGVycy4KLQotLSBJc3N1ZSAjMTIyMjogYGBsb2NhbGUuZm9ybWF0KClgYCBidWcgd2hlbiB0aGUgdGhvdXNhbmRzIHNlcGFyYXRvciBpcyBhIHNwYWNlCi0gIGNoYXJhY3Rlci4KLQotLSBJc3N1ZSAjNTQ3MjogRml4ZWQgZGlzdHV0aWxzLnRlc3RfdXRpbCB0ZWFyIGRvd24uIE9yaWdpbmFsIHBhdGNoIGJ5IFRpbQotICBHb2xkZW4uCi0KLS0gY29sbGVjdGlvbnMuZGVxdWUgb2JqZWN0cyBub3cgaGF2ZSBhIHJlYWQtb25seSBhdHRyaWJ1dGUgY2FsbGVkIG1heGxlbi4KLQotLSBJc3N1ZSAjMjYzODogU2hvdyBhIHdpbmRvdyBjb25zdHJ1Y3RlZCB3aXRoIHRrU2ltcGxlRGlhbG9nLkRpYWxvZyBvbmx5IGFmdGVyCi0gIGl0IGlzIGhhcyBiZWVuIHBvcHVsYXRlZCBhbmQgcHJvcGVybHkgY29uZmlndXJlZCBpbiBvcmRlciB0byBwcmV2ZW50IHdpbmRvdwotICBmbGFzaGluZy4KLQotLSBJc3N1ZSAjNDc5MjogUHJldmVudCBhIHNlZ2ZhdWx0IGluIF90a2ludGVyIGJ5IHVzaW5nIHRoZSBndWFyYW50ZWVkIHRvIGJlIHNhZmUKLSAgaW50ZXJwIGFyZ3VtZW50IGdpdmVuIHRvIHRoZSBQeXRob25DbWQgaW4gcGxhY2Ugb2YgdGhlIFRjbCBpbnRlcnByZXRlciB0YWtlbgotICBmcm9tIGEgUHl0aG9uQ21kX0NsaWVudERhdGEuCi0KLS0gSXNzdWUgIzUxOTM6IEd1YXJhbnRlZSB0aGF0IFRraW50ZXIuVGV4dC5zZWFyY2ggcmV0dXJucyBhIHN0cmluZy4KLQotLSBJc3N1ZSAjNTM5NDogUmVtb3ZlZCA+IDIuMyBzeW50YXggZnJvbSBkaXN0dXRpbHMubXN2Yzljb21waWxlci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgQWtpcmEgS2l0YWRhLgotCi0tIElzc3VlICM1Mzg1OiBGaXhlZCBtbWFwIGNyYXNoIGFmdGVyIHJlc2l6ZSBmYWlsdXJlIG9uIHdpbmRvd3MuCi0KLS0gSXNzdWUgIzUxNzk6IEZpeGVkIHN1YnByb2Nlc3MgaGFuZGxlIGxlYWsgb24gZmFpbHVyZSBvbiB3aW5kb3dzLgotCi0tIFBFUCAzNzI6IEFkZGVkIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkuCi0KLS0gVGhlIF9hc2RpY3QoKSBmb3IgbWV0aG9kIGZvciBuYW1lZHR1cGxlcyBub3cgcmV0dXJucyBhbiBPcmRlcmVkRGljdCgpLgotCi0tIFRoZSBjb25maWdwYXJzZXIgbW9kdWxlIG5vdyBkZWZhdWx0cyB0byB1c2luZyBhbiBvcmRlcmVkIGRpY3Rpb25hcnkuCi0KLS0gSXNzdWUgIzQzMDg6IGh0dHBsaWIuSW5jb21wbGV0ZVJlYWQncyByZXByIGRvZXNuJ3QgaW5jbHVkZSBhbGwgb2YgdGhlIGRhdGEgYWxsCi0gIHJlYWR5IHJlY2VpdmVkLgotCi0tIElzc3VlICM1NDAxOiBGaXhlZCBhIHBlcmZvcm1hbmNlIHByb2JsZW0gaW4gbWltZXR5cGVzIHdoZW4gYGBmcm9tIG1pbWV0eXBlcwotICBpbXBvcnQgZ3Vlc3NfZXh0ZW5zaW9uYGAgd2FzIHVzZWQuCi0KLS0gSXNzdWUgIzE3MzM5ODY6IEZpeGVkIG1tYXAgY3Jhc2ggb24gV2luZG93cyBpbiBhY2Nlc3NpbmcgZWxlbWVudHMgb2Ygc2Vjb25kCi0gIG1hcCBvYmplY3Qgd2l0aCBzYW1lIHRhZ25hbWUgYnV0IGxhcmdlciBzaXplIHRoYW4gZmlyc3QgbWFwLgotCi0tIElzc3VlICM1Mzg2OiBtbWFwLndyaXRlX2J5dGUgZGlkbid0IGNoZWNrIG1hcCBzaXplLCBzbyBpdCBjb3VsZCBjYXVzZSBidWZmZXIKLSAgb3ZlcnJ1bi4KLQotLSBJc3N1ZSAjMTUzMzE2NDogSW5zdGFsbGVkIGJ1dCBub3QgbGlzdGVkICoucHlvIHdhcyBicmVha2luZyBEaXN0dXRpbHMKLSAgYmRpc3RfcnBtIGNvbW1hbmQuCi0KLS0gSXNzdWUgIzUzNzg6IEFkZGVkIC0tcXVpZXQgb3B0aW9uIHRvIERpc3R1dGlscyBiZGlzdF9ycG0gY29tbWFuZC4KLQotLSBJc3N1ZSAjNTA1MjogTWFrZSBEaXN0dXRpbHMgY29tcGF0aWJsZSB3aXRoIDIuMyBhZ2Fpbi4KLQotLSBEZXByZWNhdGVkIG1ldGhvZHMgb2Ygc3ltdGFibGUuU3ltYm9sIGhhdmUgYmVlbiByZW1vdmVkOiBpc19rZXl3b3JkYXJnKCksCi0gIGlzX3ZhcmFyZygpLCBhbmQgaXNfaW5fdHVwbGUoKS4KLQotLSBJc3N1ZSAjNTMxNjogRml4ZWQgYnVpbGRib3QgZmFpbHVyZXMgaW50cm9kdWNlZCBieSBtdWx0aXBsZSBpbmhlcml0YW5jZSBpbgotICBEaXN0dXRpbHMgdGVzdHMuCi0KLS0gSXNzdWUgIzUyODc6IEFkZCBleGNlcHRpb24gaGFuZGxpbmcgYXJvdW5kIGZpbmRDYWxsZXIoKSBjYWxsIHRvIGhlbHAgb3V0Ci0gIElyb25QeXRob24uCi0KLS0gSXNzdWUgIzUyODI6IEZpeGVkIG1tYXAgcmVzaXplIG9uIDMyYml0IFdpbmRvd3MgYW5kIFVuaXguICBXaGVuIGBgb2Zmc2V0ID4KLSAgMGBgLCB0aGUgZmlsZSB3YXMgcmVzaXplZCB0byB3cm9uZyBzaXplLgotCi0tIElzc3VlICM1MjkyOiBGaXhlZCBtbWFwIGNyYXNoIG9uIGl0cyBib3VuZGFyeSBhY2Nlc3MgbVtsZW4obSldLgotCi0tIElzc3VlICMyMjc5OiBkaXN0dXRpbHMuc2Rpc3QuYWRkX2RlZmF1bHRzIG5vdyBhZGQgZmlsZXMgZnJvbSB0aGUgcGFja2FnZV9kYXRhCi0gIGFuZCB0aGUgZGF0YV9maWxlcyBtZXRhZGF0YS4KLQotLSBJc3N1ZSAjNTI1NzogUmVmYWN0b3JlZCBhbGwgdGVzdHMgaW4gZGlzdHV0aWxzLCBzbyB0aGV5IHVzZQotICBzdXBwb3J0LlRlbXBkaXJNYW5hZ2VyLCB0byBhdm9pZCB3cml0aW5nIGluIHRoZSB0ZXN0cyBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzQ1MjQ6IGRpc3R1dGlscyBidWlsZF9zY3JpcHQgY29tbWFuZCBmYWlsZWQgd2l0aCAtLXdpdGgtc3VmZml4PTMuCi0gIEluaXRpYWwgcGF0Y2ggYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCi0KLS0gSXNzdWUgIzI0NjE6IEFkZGVkIHRlc3RzIGZvciBkaXN0dXRpbHMudXRpbC4KLQotLSBJc3N1ZSAjMTAwODA4NjogRml4ZWQgc29ja2V0LmluZXRfYXRvbigpIHRvIGFsd2F5cyByZXR1cm4gNCBieXRlcyBldmVuIG9uIExQNjQKLSAgcGxhdGZvcm1zIChtb3N0IDY0LWJpdCBMaW51eCwgYnNkLCB1bml4IHN5c3RlbXMpLgotCi0tIElzc3VlICM1MjAzOiBGaXhlZCBjdHlwZXMgc2VnZmF1bHRzIHdoZW4gcGFzc2luZyBhIHVuaWNvZGUgc3RyaW5nIHRvIGEKLSAgZnVuY3Rpb24gd2l0aG91dCBhcmd0eXBlcyAob25seSBvY2N1cnMgaWYgSEFWRV9VU0FCTEVfV0NIQVJfVCBpcyBmYWxzZSkuCi0KLS0gSXNzdWUgIzMzODY6IGRpc3R1dGlscy5zeXNjb25maWcuZ2V0X3B5dGhvbl9saWIgcHJlZml4IGFyZ3VtZW50IHdhcyBpZ25vcmVkCi0gIHVuZGVyIE5UIGFuZCBPUzIuIFBhdGNoIGJ5IFBoaWxpcCBKZW52ZXkuCi0KLS0gSXNzdWUgIzUxMjg6IE1ha2UgY29tcGlsZWFsbCBwcm9wZXJseSBpbnNwZWN0IGJ5dGVjb2RlIHRvIGRldGVybWluZSBpZiBuZWVkcwotICB0byBiZSByZWNyZWF0ZWQuICBUaGlzIGF2b2lkcyBhIHRpbWluZyBob2xlIHRoYW5rcyB0byB0aGUgb2xkIHJlbGlhbmNlIG9uIHRoZQotICBjdGltZSBvZiB0aGUgZmlsZXMgaW52b2x2ZWQuCi0KLS0gSXNzdWUgIzUxMjI6IFN5bmNocm9uaXplIHRrIGxvYWQgZmFpbHVyZSBjaGVjayB0byBwcmV2ZW50IGEgcG90ZW50aWFsCi0gIGRlYWRsb2NrLgotCi0tIElzc3VlICMxODE4OiBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgbm93IHN1cHBvcnRzIGEga2V5d29yZCBhcmd1bWVudCAncmVuYW1lJwotICB3aGljaCBsZXRzIGludmFsaWQgZmllbGRuYW1lcyBiZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBwb3NpdGlvbmFsIG5hbWVzCi0gIGluIHRoZSBmb3JtLCBfMSwgXzIsIC4uLgotCi0tIElzc3VlICM0ODkwOiBIYW5kbGUgZW1wdHkgdGV4dCBzZWFyY2ggcGF0dGVybiBpbiBUa2ludGVyLlRleHQuc2VhcmNoLgotCi0tIElzc3VlICM1MTcwOiBGaXhlZCBVbmljb2RlIG91dHB1dCBidWcgaW4gbG9nZ2luZyBhbmQgYWRkZWQgdGVzdCBjYXNlLiAgVGhpcyBpcwotICBhIHJlZ3Jlc3Npb24gd2hpY2ggZGlkIG5vdCBvY2N1ciBpbiAyLjUuCi0KLS0gSXNzdWUgIzQ1MTIgKHBhcnQgMik6IFByb21vdGUgYGBaaXBJbXBvcnRlci5fZ2V0X2ZpbGVuYW1lKClgYCB0byBiZSBhIHB1YmxpYwotICBkb2N1bWVudGVkIG1ldGhvZCBgYFppcEltcG9ydGVyLmdldF9maWxlbmFtZSgpYGAuCi0KLS0gSXNzdWUgIzQxOTU6IFRoZSBgYHJ1bnB5YGAgbW9kdWxlIChhbmQgdGhlIGBgLW1gYCBzd2l0Y2gpIG5vdyBzdXBwb3J0IHRoZQotICBleGVjdXRpb24gb2YgcGFja2FnZXMgYnkgbG9va2luZyBmb3IgYW5kIGV4ZWN1dGluZyBhIGBgX19tYWluX19gYCBzdWJtb2R1bGUKLSAgd2hlbiBhIHBhY2thZ2UgbmFtZSBpcyBzdXBwbGllZC4gSW5pdGlhbCBwYXRjaCBieSBBbmRpIFZhamRhLgotCi0tIElzc3VlICMxNzMxNzA2OiBDYWxsIFRjbF9Db25kaXRpb25GaW5hbGl6ZSBmb3IgVGNsX0NvbmRpdGlvbnMgdGhhdCB3aWxsIG5vdCBiZQotICB1c2VkIGFnYWluICh0aGlzIHJlcXVpcmVzIFRjbC9UayA4LjMuMSksIGFsc28gZml4IGEgbWVtb3J5IGxlYWsgaW4gVGthcHBfQ2FsbAotICB3aGVuIGNhbGxpbmcgZnJvbSBhIHRocmVhZCBkaWZmZXJlbnQgdGhhbiB0aGUgb25lIHRoYXQgY3JlYXRlZCB0aGUgVGNsCi0gIGludGVycHJldGVyLiAgUGF0Y2ggYnkgUm9iZXJ0IEhhbmNvY2suCi0KLS0gSXNzdWUgIzE1MjA4Nzc6IE5vdyBkaXN0dXRpbHMuc3lzY29uZmlnIHJlYWRzICRBUiBmcm9tIHRoZQotICBlbnZpcm9ubWVudC9NYWtlZmlsZS4gUGF0Y2ggYnkgRG91Z2xhcyBHcmVpbWFuLgotCi0tIElzc3VlICM0Mjg1OiBDaGFuZ2Ugc3lzLnZlcnNpb25faW5mbyB0byBiZSBhIG5hbWVkIHR1cGxlLiAgUGF0Y2ggYnkgUm9zcwotICBMaWdodC4KLQotLSBJc3N1ZSAjMTI3Njc2ODogVGhlIHZlcmJvc2Ugb3B0aW9uIHdhcyBub3QgdXNlZCBpbiB0aGUgY29kZSBvZgotICBkaXN0dXRpbHMuZmlsZV91dGlsIGFuZCBkaXN0dXRpbHMuZGlyX3V0aWwuCi0KLS0gSXNzdWUgIzUxMzI6IEZpeGVkIHRyb3VibGUgYnVpbGRpbmcgZXh0ZW5zaW9ucyB1bmRlciBTb2xhcmlzIHdpdGgKLSAgLS1lbmFibGVkLXNoYXJlZCBhY3RpdmF0ZWQuIEluaXRpYWwgcGF0Y2ggYnkgRGF2ZSBQZXRlcnNvbi4KLQotLSBJc3N1ZSAjMTU4MTQ3NjogQWx3YXlzIHVzZSB0aGUgVGNsIGdsb2JhbCBuYW1lc3BhY2Ugd2hlbiBjYWxsaW5nIGludG8gVGNsLgotCi0tIElzc3VlICMyMDQ3OiBzaHV0aWwubW92ZSgpIGNvdWxkIGJlbGlldmUgdGhhdCBpdHMgZGVzdGluYXRpb24gcGF0aCB3YXMgaW5zaWRlCi0gIGl0cyBzb3VyY2UgcGF0aCBpZiBpdCBiZWdhbiB3aXRoIHRoZSBzYW1lIGxldHRlcnMgKGUuZy4gInNyYyIgdnMuICAic3JjLm5ldyIpLgotCi0tIElzc3VlICM0OTIwOiBGaXhlZCAubmV4dCgpIHZzIC5fX25leHRfXygpIGlzc3VlcyBpbiB0aGUgQUJDcyBmb3IgSXRlcmF0b3IgYW5kCi0gIE11dGFibGVTZXQuCi0KLS0gQWRkZWQgdGhlIHR0ayBtb2R1bGUuIFNlZSBpc3N1ZSAjMjk4MzogVHRrIHN1cHBvcnQgZm9yIFRraW50ZXIuCi0KLS0gSXNzdWUgIzUwMjE6IGRvY3Rlc3QudGVzdGZpbGUoKSBkaWQgbm90IGNyZWF0ZSBfX25hbWVfXyBhbmQKLSAgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpIHJlbGllZCBvbiBfX25hbWVfXyBiZWluZyBkZWZpbmVkLgotCi0tIEJhY2twb3J0IGltcG9ydGxpYiBmcm9tIFB5dGhvbiAzLjEuIE9ubHkgdGhlIGltcG9ydF9tb2R1bGUoKSBmdW5jdGlvbiBoYXMgYmVlbgotICBiYWNrcG9ydGVkIHRvIGhlbHAgZmFjaWxpdGF0ZSB0cmFuc2l0aW9ucyBmcm9tIDIuNyB0byAzLjEuCi0KLS0gSXNzdWUgIzE4ODU6IGRpc3R1dGlsczogV2hlbiBydW5uaW5nIHNkaXN0IHdpdGggLS1mb3JtYXRzPXRhcixnenRhciB0aGUgdGFyCi0gIGZpbGUgd2FzIG92ZXJyaWRkZW4gYnkgdGhlIGd6dGFyIG9uZS4KLQotLSBJc3N1ZSAjNDg2MzogZGlzdHV0aWxzLm13ZXJrc2NvbXBpbGVyIGhhcyBiZWVuIHJlbW92ZWQuCi0KLS0gQWRkZWQgbmV3IGl0ZXJ0b29scyBmdW5jdGlvbnM6IGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCkgYW5kIGNvbXByZXNzKCkuCi0KLS0gSXNzdWUgIzUwMzI6IEFkZGVkIGEgc3RlcCBhcmd1bWVudCB0byBpdGVydG9vbHMuY291bnQoKSBhbmQgYWxsb3dlZAotICBub24taW50ZWdlciBhcmd1bWVudHMuCi0KLS0gRml4IGFuZCBwcm9wZXJseSBkb2N1bWVudCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSdzIGxvZ2dpbmcgc3VwcG9ydCwgZXhwb3NlCi0gIHRoZSBpbnRlcm5hbCBsZXZlbHMgYW5kIHByb3ZpZGUgcHJvcGVyIHVzYWdlIGV4YW1wbGVzLgotCi0tIElzc3VlICMxNjcyMzMyOiBGaXggdW5waWNrbGluZyBvZiBzdWJub3JtYWwgZmxvYXRzLCB3aGljaCB3YXMKLSAgcHJvZHVjaW5nIGEgVmFsdWVFcnJvciBvbiBzb21lIHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMzg4MTogSGVscCBUY2wgdG8gbG9hZCBldmVuIHdoZW4gc3RhcnRlZCB0aHJvdWdoIHRoZSB1bnJlYWRhYmxlIGxvY2FsCi0gIHN5bWxpbmsgdG8gIlByb2dyYW0gRmlsZXMiIG9uIFZpc3RhLgotCi0tIElzc3VlICM0NzEwOiBFeHRyYWN0IGRpcmVjdG9yaWVzIHByb3Blcmx5IGluIHRoZSB6aXBmaWxlIG1vZHVsZTsgYWxsb3cgYWRkaW5nCi0gIGRpcmVjdG9yaWVzIHRvIGEgemlwZmlsZS4KLQotLSBJc3N1ZSAjMzgwNzogX211bHRpcHJvY2Vzc2luZyBidWlsZCBmYWlscyB3aGVuIGNvbmZpZ3VyZSBpcyBwYXNzZWQKLSAgLS13aXRob3V0LXRocmVhZHMgYXJndW1lbnQuIFdoZW4gdGhpcyBvY2N1cnMsIF9tdWx0aXByb2Nlc3Npbmcgd2lsbCBiZQotICBkaXNhYmxlZCwgYW5kIG5vdCBjb21waWxlZC4KLQotLSBJc3N1ZSAjNTAwODogV2hlbiBhIGZpbGUgaXMgb3BlbmVkIGluIGFwcGVuZCBtb2RlIHdpdGggdGhlIG5ldyBJTyBsaWJyYXJ5LCBkbwotICBhbiBleHBsaWNpdCBzZWVrIHRvIHRoZSBlbmQgb2YgZmlsZSAoc28gdGhhdCBlLmcuIHRlbGwoKSByZXR1cm5zIHRoZSBmaWxlIHNpemUKLSAgcmF0aGVyIHRoYW4gMCkuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBiZWhhdmlvdXIgb2YgdGhlIHRyYWRpdGlvbmFsIDIueAotICBmaWxlIG9iamVjdC4KLQotLSBJc3N1ZSAjNTAxMzogRml4ZWQgYSBidWcgaW4gRmlsZUhhbmRsZXIgd2hpY2ggb2NjdXJyZWQgd2hlbiB0aGUgZGVsYXkKLSAgcGFyYW1ldGVyIHdhcyBzZXQuCi0KLS0gSXNzdWUgIzQ5OTg6IFRoZSBtZW1vcnkgc2F2aW5nIGVmZmVjdCBvZiBfX3Nsb3RzX18gaGFkIGJlZW4gbG9zdCBvbiBGcmFjdGlvbnMKLSAgd2hpY2ggaW5oZXJpdGVkIGZyb20gbnVtYmVycy5weSB3aGljaCBkaWQgbm90IGhhdmUgX19zbG90c19fIGRlZmluZWQuICBUaGUKLSAgbnVtYmVycyBoaWVyYXJjaHkgbm93IGhhcyBpdHMgb3duIF9fc2xvdHNfXyBkZWNsYXJhdGlvbnMuCi0KLS0gSXNzdWUgIzMzMjE6IF9tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbigpIGRvZXNuJ3QgY2hlY2sgaGFuZGxlOyBhZGRlZCBjaGVja3MKLSAgZm9yICpuaXggbWFjaGluZXMgZm9yIG5lZ2F0aXZlIGhhbmRsZXMgYW5kIGxhcmdlIGludCBoYW5kbGVzLiAgV2l0aG91dCB0aGlzCi0gIGNoZWNrIGl0IGlzIHBvc3NpYmxlIHRvIHNlZ2ZhdWx0IHRoZSBpbnRlcnByZXRlci4KLQotLSBJc3N1ZSAjNDQ0OTogQXNzZXJ0aW9uRXJyb3IgaW4gbXBfYmVuY2htYXJrcy5weSwgY2F1c2VkIGJ5IGFuIHVuZGVybHlpbmcgaXNzdWUKLSAgaW4gc2hhcmVkY3R5cGVzLnB5LgotCi0tIElzc3VlICMxMjI1MTA3OiBpbnNwZWN0LmlzY2xhc3MoKSByZXR1cm5lZCBUcnVlIGZvciBpbnN0YW5jZXMgd2l0aCBhIGN1c3RvbQotICBfX2dldGF0dHJfXy4KLQotLSBJc3N1ZSAjMzk5NzogWmlwZmlsZXMgZ2VuZXJhdGVkIHdpdGggbW9yZSB0aGFuIDY1NTM2IGZpbGVzIGNvdWxkIG5vdCBiZSBvcGVuZWQKLSAgd2l0aCBvdGhlciBhcHBsaWNhdGlvbnMuCi0KLS0gSXNzdWUgIzExNjIxNTQ6IGBgaW5zcGVjdC5nZXRtZW1iZXJzKClgYCBub3cgc2tpcHMgYXR0cmlidXRlcyB0aGF0IHJhaXNlCi0gIEF0dHJpYnV0ZUVycm9yLCBlLmcuIGEgX19zbG90c19fIGF0dHJpYnV0ZSB3aGljaCBoYXMgbm90IGJlZW4gc2V0LgotCi0tIElzc3VlICMxNjk2MTk5OiBBZGQgY29sbGVjdGlvbnMuQ291bnRlcigpIGZvciByYXBpZCBhbmQgY29udmVuaWVudCBjb3VudGluZy4KLQotLSBJc3N1ZSAjMzg2MDogR3ppcEZpbGUgYW5kIEJaMkZpbGUgbm93IHN1cHBvcnQgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbC4KLQotLSBJc3N1ZSAjNDI3MjogQWRkIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRvIHRoZSBHemlwRmlsZSBjb25zdHJ1Y3RvciB0byBvdmVycmlkZQotICB0aGUgdGltZXN0YW1wIGluIHRoZSBnemlwIHN0cmVhbS4gIFRoZSBkZWZhdWx0IHZhbHVlIHJlbWFpbnMgdGhlIGN1cnJlbnQgdGltZS4KLSAgVGhlIGluZm9ybWF0aW9uIGNhbiBiZSB1c2VkIGJ5IGUuZy4gZ3VuemlwIHdoZW4gZGVjb21wcmVzc2luZy4gIFBhdGNoIGJ5Ci0gIEphY3F1ZXMgRnJlY2hldC4KLQotLSBSZXN0b3JlIFB5dGhvbiAyLjMgY29tcGF0aWJpbGl0eSBmb3IgZGVjaW1hbC5weS4KLQotLSBJc3N1ZSAjMTcwMjU1MTogZGlzdHV0aWxzIHNkaXN0IHdhcyBub3QgZXhjbHVkaW5nIFZDUyBkaXJlY3RvcmllcyB1bmRlcgotICBXaW5kb3dzLiBJbml0aWFsIHNvbHV0aW9uIGJ5IEd1eSBEYWxiZXJ0by4KLQotLSBUaGUgX3RraW50ZXIgbW9kdWxlIGZ1bmN0aW9ucyAiY3JlYXRlZmlsZWhhbmRsZXIiLCAiZGVsZXRlZmlsZWhhbmRsZXIiLAotICAiY3JlYXRldGltZXJoYW5kbGVyIiwgIm1haW5sb29wIiwgImRvb25lZXZlbnQiIGFuZCAicXVpdCIgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQKLSAgZm9yIHJlbW92YWwgaW4gMy54Ci0KLS0gSXNzdWUgIzQ3OTY6IEFkZGVkIERlY2ltYWwuZnJvbV9mbG9hdCgpIGFuZAotICBDb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKSB0byB0aGUgZGVjaW1hbCBtb2R1bGUuCi0KLS0gSXNzdWUgIzQ4MTI6IEFkZCBtaXNzaW5nIHVuZGVyc2NvcmUgcHJlZml4IHRvIHNvbWUgaW50ZXJuYWwtdXNlLW9ubHkgY29uc3RhbnRzCi0gIGluIHRoZSBkZWNpbWFsIG1vZHVsZS4gIChEZWNfMCBiZWNvbWVzIF9EZWNfMCwgZXRjLikKLQotLSBJc3N1ZSAjNDc5NTogaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uKCkgcmV0dXJucyBGYWxzZSBpbnN0ZWFkIG9mIE5vbmUgd2hlbgotICB0aGUgZnVuY3Rpb24gaXMgbm90IGEgZ2VuZXJhdG9yLgotCi0tIElzc3VlICM0NzAyOiBUaHJvd2luZyBhIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IgaW5zdGVhZCBvZiBJT0Vycm9yIGluIGNhc2Ugbm8KLSAgTVNWQyBjb21waWxlciBpcyBmb3VuZCB1bmRlciBXaW5kb3dzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUGhpbGlwIEplbnZleS4KLQotLSBJc3N1ZSAjNDY0NjogZGlzdHV0aWxzIHdhcyBjaG9raW5nIG9uIGVtcHR5IG9wdGlvbnMgYXJnIGluIHRoZSBzZXR1cCBmdW5jdGlvbi4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgVGhvbWFzIEhlbGxlci4KLQotLSBGcmFjdGlvbnMuZnJvbV9mbG9hdCgpIG5vIGxvbmdlciBsb3NlcyBwcmVjaXNpb24gZm9yIGludGVnZXJzIHRvbyBiaWcgdG8gY2FzdAotICBhcyBmbG9hdHMuCi0KLS0gSXNzdWUgIzQ3OTA6IFRoZSBuc21hbGxlc3QoKSBhbmQgbmxhcmdlc3QoKSBmdW5jdGlvbnMgaW4gdGhlIGhlYXBxIG1vZHVsZSBkaWQKLSAgdW5uZWNlc3Nhcnkgd29yayBpbiB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgbm8ga2V5IGZ1bmN0aW9uIHdhcyBzcGVjaWZpZWQuCi0KLS0gSXNzdWUgIzM3Njc6IENvbnZlcnQgVGsgb2JqZWN0IHRvIHN0cmluZyBpbiB0a0NvbG9yQ2hvb3Nlci4KLQotLSBJc3N1ZSAjMzI0ODogQWxsb3cgcGxhY2luZyBTY3JvbGxlZFRleHQgaW4gYSBQYW5lZFdpbmRvdy4KLQotLSBJc3N1ZSAjNDQ0NDogQWxsb3cgYXNzZXJ0UmFpc2VzKCkgdG8gYmUgdXNlZCBhcyBhIGNvbnRleHQgaGFuZGxlciwgc28gdGhhdCB0aGUKLSAgY29kZSB1bmRlciB0ZXN0IGNhbiBiZSB3cml0dGVuIGlubGluZSBpZiBtb3JlIHByYWN0aWNhbC4KLQotLSBJc3N1ZSAjNDczOTogQWRkIHB5ZG9jIGhlbHAgdG9waWNzIGZvciBzeW1ib2xzLCBzbyB0aGF0IGUuZy4gaGVscCgnQCcpIHdvcmtzCi0gIGFzIGV4cGVjdGVkIGluIHRoZSBpbnRlcmFjdGl2ZSBlbnZpcm9ubWVudC4KLQotLSBJc3N1ZSAjNDc1NjogemlwZmlsZS5pc196aXBmaWxlKCkgbm93IHN1cHBvcnRzIGZpbGUtbGlrZSBvYmplY3RzLiBQYXRjaCBieQotICBHYWJyaWVsIEdlbmVsbGluYS4KLQotLSBJc3N1ZSAjNDQwMDogLnB5cGlyYyBkZWZhdWx0IGdlbmVyYXRlZCBmaWxlIHdhcyBicm9rZW4gaW4gZGlzdHV0aWxzLgotCi0tIElzc3VlICM0NzM2OiBpby5CdWZmZXJlZFJXUGFpcidzIGNsb3NlZCBwcm9wZXJ0eSBub3cgZnVuY3Rpb25zIHByb3Blcmx5LgotCi0tIElzc3VlICMzOTU0OiBGaXggYSBwb3RlbnRpYWwgU3lzdGVtRXJyb3IgaW4gX2hvdHNob3QubG9ncmVhZGVyIGVycm9yIGhhbmRsaW5nLgotCi0tIElzc3VlICM0NTc0OiBGaXggYSBjcmFzaCBpbiBpby5JbmNyZW1lbnRhbE5ld2xpbmVEZWNvZGVyIHdoZW4gYSBjYXJyaWFnZQotICByZXR1cm4gZW5jb2RlcyB0byBtb3JlIHRoYW4gb25lIGJ5dGUgaW4gdGhlIHNvdXJjZSBlbmNvZGluZyAoZS5nLiBVVEYtMTYpIGFuZAotICBnZXRzIHNwbGl0IG9uIGEgY2h1bmsgYm91bmRhcnkuCi0KLS0gSXNzdWUgIzQyMjM6IGluc3BlY3QuZ2V0c291cmNlKCkgd2lsbCBub3cgY29ycmVjdGx5IGRpc3BsYXkgc291cmNlIGNvZGUgZm9yCi0gIHBhY2thZ2VzIGxvYWRlZCB2aWEgemlwaW1wb3J0IChvciBhbnkgb3RoZXIgY29uZm9ybWFudCBQRVAgMzAyCi0gIGxvYWRlcikuIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5LgotCi0tIElzc3VlICM0MjAxOiBwZGIgY2FuIG5vdyBhY2Nlc3MgYW5kIGRpc3BsYXkgc291cmNlIGNvZGUgbG9hZGVkIHZpYSB6aXBpbXBvcnQKLSAgKG9yIGFueSBvdGhlciBjb25mb3JtYW50IFBFUCAzMDIgbG9hZGVyKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZXhhbmRlcgotICBCZWxvcG9sc2t5LgotCi0tIElzc3VlICM0MTk3OiBEb2N0ZXN0cyBpbiBtb2R1bGVzIGxvYWRlZCB2aWEgemlwaW1wb3J0IChvciBhbnkgb3RoZXIgUEVQIDMwMgotICBjb25mb3JtYW50IGxvYWRlcikgd2lsbCBub3cgd29yayBjb3JyZWN0bHkgaW4gbW9zdCBjYXNlcyAodGhleSBhcmUgc3RpbGwKLSAgc3ViamVjdCB0byB0aGUgY29uc3RyYWludHMgdGhhdCBleGlzdCBmb3IgYWxsIGNvZGUgcnVubmluZyBmcm9tIGluc2lkZSBhCi0gIG1vZHVsZSBsb2FkZWQgdmlhIGEgUEVQIDMwMiBsb2FkZXIgYW5kIGF0dGVtcHRpbmcgdG8gcGVyZm9ybSBJTyBvcGVyYXRpb25zCi0gIGJhc2VkIG9uIF9fZmlsZV9fKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5LgotCi0tIElzc3VlcyAjNDA4MiBhbmQgIzQ1MTI6IEFkZCBydW5weSBzdXBwb3J0IHRvIHppcGltcG9ydCBpbiBhIG1hbm5lciB0aGF0IGFsbG93cwotICBiYWNrcG9ydGluZyB0byBtYWludGVuYW5jZSBicmFuY2hlcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5LgotCi0tIElzc3VlICM0MTYzOiBVc2UgdW5pY29kZS1mcmllbmRseSB3b3JkIHNwbGl0dGluZyBpbiB0aGUgdGV4dHdyYXAgZnVuY3Rpb25zCi0gIHdoZW4gZ2l2ZW4gYSBVbmljb2RlIHN0cmluZy4KLQotLSBJc3N1ZSAjNDYxNjogVGFyRmlsZS51dGltZSgpOiBSZXN0b3JlIGRpcmVjdG9yeSB0aW1lcyBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM0MDg0OiBGaXggbWF4LCBtaW4sIG1heF9tYWcgYW5kIG1pbl9tYWcgRGVjaW1hbCBtZXRob2RzIHRvIGdpdmUgY29ycmVjdAotICByZXN1bHRzIGluIHRoZSBjYXNlIHdoZXJlIG9uZSBhcmd1bWVudCBpcyBhIHF1aWV0IE5hTiBhbmQgdGhlIG90aGVyIGlzIGEKLSAgZmluaXRlIG51bWJlciB0aGF0IHJlcXVpcmVzIHJvdW5kaW5nLgotCi0tIElzc3VlICMxMDMwMjUwOiBEaXN0dXRpbHMgY3JlYXRlZCBkaXJlY3RvcmllcyBldmVuIHdoZW4gcnVuIHdpdGggdGhlIC0tZHJ5LXJ1bgotICBvcHRpb24uCi0KLS0gSXNzdWUgIzQ0ODM6IF9kYm0gbW9kdWxlIG5vdyBidWlsZHMgb24gc3lzdGVtcyB3aXRoIGdkYm0gJiBnZGJtX2NvbXBhdCBsaWJzLgotCi0tIElzc3VlICM0NTI5OiBGaXggdGhlIHBhcnNlciBtb2R1bGUncyB2YWxpZGF0aW9uIG9mIHRyeS1leGNlcHQtZmluYWxseQotICBzdGF0ZW1lbnRzLgotCi0tIElzc3VlICM0NDU4OiBnZXRvcHQuZ251X2dldG9wdCgpIG5vdyByZWNvZ25pemVzIGEgc2luZ2xlICItIiBhcyBhbiBhcmd1bWVudCwKLSAgbm90IGEgbWFsZm9ybWVkIG9wdGlvbi4KLQotLSBBZGRlZCB0aGUgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgb3V0cHV0IGZyb20gYQotICBzdWJwcm9jZXNzIG9uIHN1Y2Nlc3Mgb3IgcmFpc2UgYW4gZXhjZXB0aW9uIG9uIGVycm9yLgotCi0tIElzc3VlICMxMDU1MjM0OiBjZ2kucGFyc2VfaGVhZGVyKCk6IEZpeGVkIHBhcnNpbmcgb2YgaGVhZGVyIHBhcmFtZXRlcnMgdG8KLSAgc3VwcG9ydCB1bnVzdWFsIGZpbGVuYW1lcyAoc3VjaCBhcyB0aG9zZSBjb250YWluaW5nIHNlbWktY29sb25zKSBpbgotICBDb250ZW50LURpc3Bvc2l0aW9uIGhlYWRlcnMuCi0KLS0gSXNzdWUgIzQzODQ6IEFkZGVkIGxvZ2dpbmcgaW50ZWdyYXRpb24gd2l0aCB3YXJuaW5ncyBtb2R1bGUgdXNpbmcKLSAgY2FwdHVyZVdhcm5pbmdzKCkuICBUaGlzIGNoYW5nZSBpbmNsdWRlcyBhIE51bGxIYW5kbGVyIHdoaWNoIGRvZXMgbm90aGluZzsgaXQKLSAgd2lsbCBiZSBvZiB1c2UgdG8gbGlicmFyeSBkZXZlbG9wZXJzIHdobyB3YW50IHRvIGF2b2lkIHRoZSAiTm8gaGFuZGxlcnMgY291bGQKLSAgYmUgZm91bmQgZm9yIGxvZ2dlciBYWFgiIG1lc3NhZ2Ugd2hpY2ggY2FuIGFwcGVhciBpZiB0aGUgbGlicmFyeSB1c2VyIGRvZXNuJ3QKLSAgY29uZmlndXJlIGxvZ2dpbmcuCi0KLS0gSXNzdWUgIzM3NDE6IERJU1RVVElMU19VU0VfU0RLIHNldCBjYXVzZXMgbXN2Yzljb21waWxlci5weSB0byByYWlzZSBhbgotICBleGNlcHRpb24uCi0KLS0gSXNzdWUgIzQzNjM6IFRoZSB1dWlkLnV1aWQxKCkgYW5kIHV1aWQudXVpZDQoKSBmdW5jdGlvbnMgbm93IHdvcmsgZXZlbiBpZiB0aGUKLSAgY3R5cGVzIG1vZHVsZSBpcyBub3QgcHJlc2VudC4KLQotLSBGaWxlSU8ncyBtb2RlIGF0dHJpYnV0ZSBub3cgYWx3YXlzIGluY2x1ZGVzIGBgImIiYGAuCi0KLS0gSXNzdWUgIzQxMTY6IFJlc29sdmUgbWVtYmVyIG5hbWUgY29uZmxpY3QgaW4gU2Nyb2xsZWRDYW52YXMuX19pbml0X18uCi0KLS0gaHR0cGxpYi5IVFRQQ29ubmVjdGlvbi5wdXRoZWFkZXIoKSBub3cgYWNjZXB0cyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHZhbHVlcwotICBmb3IgYW55IGhlYWRlciwgbWF0Y2hpbmcgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBoYXMgY2xhaW1lZCBmb3IgYSB3aGlsZS4KLQotLSBJc3N1ZSAjMzc3NDogRml4ZWQgYW4gZXJyb3Igd2hlbiBjcmVhdGUgYSBUa2ludGVyIG1lbnUgaXRlbSB3aXRob3V0IGNvbW1hbmQKLSAgYW5kIHRoZW4gcmVtb3ZlIGl0LgotCi0tIEZpeGVkIGEgbW9kdWxlZmluZGVyIGNyYXNoIG9uIGNlcnRhaW4gcmVsYXRpdmUgaW1wb3J0cy4KLQotLSBJc3N1ZSAjNDE1MDogUGRiJ3MgInVwIiBjb21tYW5kIG5vdyB3b3JrcyBmb3IgZ2VuZXJhdG9yIGZyYW1lcyBpbiBwb3N0LW1vcnRlbQotICBkZWJ1Z2dpbmcuCi0KLS0gSXNzdWUgIzQwOTI6IFJldHVybiBBcmdJbmZvIGFzIHByb21pc2VkIGluIHRoZSBkb2N1bWVudGF0aW9uIGZyb20KLSAgaW5zcGVjdC5nZXRhcmd2YWx1ZXMuCi0KLS0gSXNzdWUgIzM5MzU6IFByb3Blcmx5IHN1cHBvcnQgbGlzdCBzdWJjbGFzc2VzIGluIGJpc2VjdCdzIEMgaW1wbGVtZW50YXRpb24uCi0KLS0gSXNzdWUgIzQwMTQ6IERvbid0IGNsYWltIHRoYXQgUHl0aG9uIGhhcyBhbiBBbHBoYSByZWxlYXNlIHN0YXR1cywgaW4gYWRkaXRpb24KLSAgdG8gY2xhaW1pbmcgaXQgaXMgTWF0dXJlLgotCi0tIElzc3VlICM0NzMwOiBGaXhlZCB0aGUgY1BpY2tsZSBtb2R1bGUgdG8gaGFuZGxlIGNvcnJlY3RseSBhc3RyYWwgY2hhcmFjdGVycwotICB3aGVuIHByb3RvY29sIDAgaXMgdXNlZC4KLQotLSBJc3N1ZSAjMTU5NDogTWFjT1MuR2V0Q3JlYXRvckFuZFR5cGUgbm93IGFsd2F5cyByZXR1cm5zIGEgYmlnLWVuZGlhbiByZXN1bHQsCi0gIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBBcHBsZSB0b29scy4KLQotLSBJc3N1ZSAjOTAwOTQ5OiBwbGF0LW1hYy92aWRlb3JlYWRlci5weSBubyBsb25nZXIgcmVsaWVzIG9uIGEgbm9uLWV4aXN0aW5nCi0gIG1vZHVsZS4KLQotLSBJc3N1ZSAjMTYyNzg5NTI6IHBsYXQtbWFjL3ZpZGVvcmVhZGVyLnB5IG5vdyBjb3JyZWN0bHkgaW1wb3J0cyBNZWRpYURlc2NyCi0KLS0gSXNzdWUgIzE3Mzc4MzI6IHBsYXQtbWFjL0Vhc3lEaWFsb2cucHkgbm8gbG9uZ2VyIHVzZXMgdGhlIGJyb2tlbiBhZXBhY2sKLSAgbW9kdWxlLgotCi0tIElzc3VlICMxMTQ5ODA0OiBtYWNvc3Rvb2xzLm1rZGlycyBub3cgZXZlbiB3b3JrcyB3aGVuIGFub3RoZXIgcHJvY2VzcyBjcmVhdGVzCi0gIG9uZSBvZiB0aGUgbmVlZGVkIHN1YmRpcmVjdG9yaWVzLgotCi0tIElzc3VlICM5MDA1MDY6IGFkZGVkIC0tbm8temlwaW1wb3J0IGZsYWcgdG8gdGhlIGJ1bmRsZWJ1aWxkZXIgc2NyaXB0LgotCi0tIElzc3VlICM4NDE4MDA6IGJ1bmRsZWJ1aWxkZXIgbm93IHdvcmtzIHdpdGggJ3B5dGhvbiAtTycuCi0KLS0gSXNzdWUgIzQ4NjE6IGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpOiBSb2J1c3RpZnkuIEZpeCBsaWJyYXJ5IGRldGVjdGlvbiBvbgotICBiaWFyY2ggc3lzdGVtcy4gIFRyeSB0byByZWx5IG9uIGxkY29uZmlnIG9ubHksIHdpdGhvdXQgdXNpbmcgb2JqZHVtcCBhbmQgZ2NjLgotCi0tIElzc3VlICM1MTA0OiBUaGUgc29ja2V0IG1vZHVsZSBub3cgcmFpc2VzIE92ZXJmbG93RXJyb3Igd2hlbiAxNi1iaXQgcG9ydCBhbmQKLSAgcHJvdG9jb2wgbnVtYmVycyBhcmUgc3VwcGxpZWQgb3V0c2lkZSB0aGUgYWxsb3dlZCAwLTY1NTM2IHJhbmdlIG9uIGJpbmQoKSBhbmQKLSAgZ2V0c2VydmJ5cG9ydCgpLgotCi0tIElzc3VlICM5OTkwNDI6IFRoZSBQeXRob24gY29tcGlsZXIgbm93IGhhbmRsZXMgZXhwbGljdCBnbG9iYWwgc3RhdGVtZW50cwotICBjb3JyZWN0bHkgKHNob3VsZCBiZSBhc3NpZ25lZCB1c2luZyBTVE9SRV9HTE9CQUwgb3Bjb2RlKS4KLQotLSBJc3N1ZSAjMjcwMzogU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXzogUHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3Ci0gIGFyZ3VtZW50cyBpbnRyb2R1Y2VkIGluIDIuNS4KLQotLSBJc3N1ZSAjNTgyOCAoSW52YWxpZCBiZWhhdmlvciBvZiB1bmljb2RlLmxvd2VyKTogRml4ZWQgYm9ndXMgbG9naWMgaW4KLSAgbWFrZXVuaWNvZGVkYXRhLnB5IGFuZCByZWdlbmVyYXRlZCB0aGUgVW5pY29kZSBkYXRhYmFzZSAoVGhpcyBmaXhlcwotICB1J1x1MWQ3OScubG93ZXIoKSA9PSAnXHgwMCcpLgotCi0tIFdpbmRvd3MgbG9jYWxlIG1hcHBpbmcgdXBkYXRlZCB0byBWaXN0YS4KLQotSURMRQotLS0tLQotCi0tIElzc3VlICM1MTUwOiBJRExFJ3MgZm9ybWF0IG1lbnUgbm93IGhhcyBhbiBvcHRpb24gdG8gc3RyaXAgdHJhaWxpbmcKLSAgd2hpdGVzcGFjZS4KLQotLSBJc3N1ZSAjNTg0NzogUmVtb3ZlIC1uIHN3aXRjaCBvbiAiRWRpdCB3aXRoIElETEUiIG1lbnUgaXRlbS4KLQotLSBpZGxlLnB5IG1vZGlmaWVkIGFuZCBzaW1wbGlmaWVkIHRvIGJldHRlciBzdXBwb3J0IGRldmVsb3BpbmcgZXhwZXJpbWVudGFsCi0gIHZlcnNpb25zIG9mIElETEUgd2hpY2ggYXJlIG5vdCBpbnN0YWxsZWQgaW4gdGhlIHN0YW5kYXJkIGxvY2F0aW9uLgotCi0tIElzc3VlICM1NTU5OiBPdXRwdXRXaW5kb3cvUHlTaGVsbCByaWdodCBjbGljayBtZW51ICJHbyB0byBmaWxlL2xpbmUiCi0gIHdhc24ndCB3b3JraW5nIHdpdGggZmlsZSBwYXRocyBjb250YWluaW5nIHNwYWNlcy4KLQotLSBJc3N1ZSAjNTc4MzogV2luZG93czogVmVyc2lvbiBzdHJpbmcgZm9yIHRoZSAuY2htIGhlbHAgZmlsZSBjaGFuZ2VkLAotICBmaWxlIG5vdCBiZWluZyBhY2Nlc3NlZC4gIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvLwotCi0tIElzc3VlICMxNTI5MTQyOiBBbGxvdyBtdWx0aXBsZSBJRExFIEdVSS9zdWJwcm9jZXNzIHBhaXJzIHRvIGV4aXN0Ci0gIHNpbXVsdGFuZW91c2x5LiBUaGFua3MgdG8gRGF2aWQgU2NoZXJlciBmb3Igc3VnZ2VzdGluZyB0aGUgdXNlIG9mIGFuCi0gIGVwaGVtZXJhbCBwb3J0IGZvciB0aGUgR1VJLiAgUGF0Y2ggYnkgV2VlYmxlLgotCi0tIFJlbW92ZSBwb3J0IHNwZWMgZnJvbSBydW4ucHkgYW5kIGZpeCBidWcgd2hlcmUgc3VicHJvY2VzcyBmYWlscyB0bwotICBleHRyYWN0IHBvcnQgZnJvbSBjb21tYW5kIGxpbmUgd2hlbiB3YXJuaW5ncyBhcmUgcHJlc2VudC4KLQotLSBJc3N1ZSAjNTEyOTogVGsgOC41IFRleHQgd2lkZ2V0IHJlcXVpcmVzICd3b3JkcHJvY2Vzc29yJyB0YWJzdHlsZSBhdHRyCi0gIHRvIGhhbmRsZSBtaXhlZCBzcGFjZS90YWIgcHJvcGVybHkuIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvLgotCi0tIElzc3VlICMzNTQ5OiBPbiBNYWNPUyB0aGUgcHJlZmVyZW5jZXMgbWVudSB3YXMgbm90IHByZXNlbnQKLQotVG9vbHMvRGVtb3MKLS0tLS0tLS0tLS0tCi0KLS0gVHRrIGRlbW9zIGFkZGVkIGluIERlbW8vdGtpbnRlci90dGsvLgotCi0tIElzc3VlICM0Njc3OiBBZGQgdHdvIGxpc3QgY29tcHJlaGVuc2lvbiB0ZXN0cyB0byBweWJlbmNoLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjNjYwMzogQ2hhbmdlIFJFQURfVElNRVNUQU1QIG1hY3JvIGluIGNldmFsLmMgc28gdGhhdCBpdCBjb21waWxlcwotICBjb3JyZWN0bHkgdW5kZXIgZ2NjIG9uIHg4Ni02NC4gIFRoaXMgZml4ZXMgYSByZXBvcnRlZCBwcm9ibGVtIHdpdGggdGhlCi0gIC0td2l0aC10c2MgYnVpbGQgb24geDg2LTY0LgotCi0tIEFkZCAyIG5ldyBvcHRpb25zIHRvIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNoc2BgIG9uIE1hY09TWDogYGBpbnRlbGBgIGJ1aWxkcyBhCi0gIGRpc3RyaWJ1dGlvbiB3aXRoIGBgaTM4NmBgIGFuZCBgYHg4Nl82NGBgIGFyY2hpdGVjdHVyZXMsIHdoaWxlIGBgMy13YXlgYAotICBidWlsZHMgYSBkaXN0cmlidXRpb24gd2l0aCB0aGUgYGBwcGNgYCwgYGBpMzg2YGAgYW5kIGBgeDg2XzY0YGAgYXJjaGl0ZWN0dXJlcy4KLQotLSBJc3N1ZSAjNjgwMjogRml4IGJ1aWxkIGlzc3VlcyBvbiBNYWNPU1ggMTAuNi4KLQotLSBJc3N1ZSAjNjI0NDogQWxsb3cgZGV0ZWN0X3RraW50ZXIgdG8gbG9vayBmb3IgVGNsL1RrIDguNi4KLQotLSBJc3N1ZSAjNTM5MDogQWRkIHVuaW5zdGFsbCBpY29uIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgZmlsZSBleHRlbnNpb25zIGFyZQotICBpbnN0YWxsZWQuCi0KLS0gSXNzdWUgIzU4MDk6IFNwZWNpZnlpbmcgYm90aCAtLWVuYWJsZS1mcmFtZXdvcmsgYW5kIC0tZW5hYmxlLXNoYXJlZCBpcyBhbgotICBlcnJvci4gQ29uZmlndXJlIG5vdyBleHBsaWNpdGx5IHRlbGxzIHlvdSBhYm91dCB0aGlzLgotCi0tIElzc3VlICMzNTg1OiBBZGQgcGtnLWNvbmZpZyBzdXBwb3J0LiAgSXQgY3JlYXRlcyBhIHB5dGhvbi0yLjcucGMgZmlsZSBhbmQgYQotICBweXRob24ucGMgc3ltbGluayBpbiB0aGUgJChMSUJESVIpL3BrZ2NvbmZpZyBkaXJlY3RvcnkuICBQYXRjaCBieSBDbGludG9uIFJveS4KLQotLSBJc3N1ZSAjNjA5NDogQnVpbGQgY29ycmVjdGx5IHdpdGggU3VidmVyc2lvbiAxLjcuCi0KLS0gSXNzdWUgIzU3MjY6IE1ha2UgTW9kdWxlcy9sZF9zb19haXggcmV0dXJuIHRoZSBhY3R1YWwgZXhpdCBjb2RlIG9mIHRoZSBsaW5rZXIsCi0gIHJhdGhlciB0aGFuIGFsd2F5cyBleGl0IHN1Y2Nlc3NmdWxseS4gIFBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgotCi0tIElzc3VlICM0NTg3OiBBZGQgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtZGJtbGlib3JkZXI9ZGIxOmRiMjouLi4gdG8gc3BlY2lmeQotICB0aGUgb3JkZXIgdGhhdCBiYWNrZW5kcyBmb3IgdGhlIGRibSBleHRlbnNpb24gYXJlIGNoZWNrZWQuCi0KLS0gTGluayB0aGUgc2hhcmVkIHB5dGhvbiBsaWJyYXJ5IHdpdGggJChNT0RMSUJTKS4KLQotLSBJc3N1ZSAjNTEzNDogU2lsZW5jZSBjb21waWxlciB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBzcWxpdGUgd2l0aCBWQysrLgotCi0tIElzc3VlICM0NDk0OiBGaXggYnVpbGQgd2l0aCBQeV9OT19FTkFCTEVfU0hBUkVEIG9uIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzQ4OTU6IFVzZSBfc3RyZHVwIG9uIFdpbmRvd3MgQ0UuCi0KLS0gSXNzdWUgIzQ0NzI6IGBgY29uZmlndXJlIC0tZW5hYmxlLXNoYXJlZGBgIG5vdyB3b3JrcyBvbiBPU1guCi0KLS0gSXNzdWVzICM0NzI4IGFuZCAjNDA2MDogV09SRFNfQklHRURJQU4gaXMgbm93IGNvcnJlY3QgaW4gVW5pdmVyc2FsIGJ1aWxkcy4KLQotLSBJc3N1ZSAjNDM4OTogQWRkIGljb24gdG8gdGhlIHVuaW5zdGFsbCBlbnRyeSBpbiAiYWRkLWFuZC1yZW1vdmUtcHJvZ3JhbXMiLgotCi0tIElzc3VlICM0Mjg5OiBSZW1vdmUgQ2FuY2VsIGJ1dHRvbiBmcm9tIEFkdmFuY2VkRGxnLgotCi0tIElzc3VlICMxNjU2Njc1OiBSZWdpc3RlciBhIGRyb3AgaGFuZGxlciBmb3IgLnB5KiBmaWxlcyBvbiBXaW5kb3dzLgotCi0tIElzc3VlICM0MTIwOiBFeGNsdWRlIG1hbmlmZXN0IGZyb20gZXh0ZW5zaW9uIG1vZHVsZXMgaW4gVlMyMDA4LgotCi0tIElzc3VlICM0MDkxOiBJbnN0YWxsIHB5dGhvbnh5LmRsbCBpbiBzeXN0ZW0zMiBhZ2Fpbi4KLQotLSBJc3N1ZSAjNDAxODogRGlzYWJsZSAiZm9yIG1lIiBpbnN0YWxsYXRpb25zIG9uIFZpc3RhLgotCi0tIElzc3VlICMzNzU4OiBBZGQgYGBwYXRjaGNoZWNrYGAgYnVpbGQgdGFyZ2V0IHRvIGBgLlBIT05ZYGAuCi0KLS0gSXNzdWUgIzQyMDQ6IEZpeGVkIG1vZHVsZSBidWlsZCBlcnJvcnMgb24gRnJlZUJTRCA0LgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzY1NTY6IEZpeGVkIHRoZSBEaXN0dXRpbHMgY29uZmlndXJhdGlvbiBmaWxlcyBsb2NhdGlvbiBleHBsYW5hdGlvbiBmb3IKLSAgV2luZG93cy4KLQotLSBJc3N1ZSAjNjgwMTogc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlIGFsc28gYWNjZXB0cyBgYHxgYC4gIFRoYW5rcyB0byBDYXJsCi0gIENoZW5ldC4KLQotQy1BUEkKLS0tLS0tCi0KLS0gSXNzdWUgIzc1Mjg6IEFkZCBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cgKGJhY2twb3J0ZWQgZnJvbSBweTNrKS4KLQotLSBJc3N1ZSAjNzIyODogQWRkICclbGxkJyBhbmQgJyVsbHUnIHN1cHBvcnQgdG8gUHlTdHJpbmdfRnJvbUZvcm1hdChWKSBhbmQKLSAgUHlFcnJfRm9ybWF0LCBvbiBtYWNoaW5lcyB3aXRoIEhBVkVfTE9OR19MT05HIGRlZmluZWQuCi0KLS0gQWRkIG5ldyBDLUFQSSBmdW5jdGlvbiBQeU9TX3N0cmluZ190b19kb3VibGUsIGFuZCBkZXByZWNhdGVkIFB5T1NfYXNjaWlfYXRvZgotICBhbmQgUHlPU19hc2NpaV9zdHJ0b2QuCi0KLS0gUmVtb3ZlZCBfUHlPU19kb3VibGVfdG9fc3RyaW5nLiBVc2UgUHlPU19kb3VibGVfdG9fc3RyaW5nIGluc3RlYWQuICBUaGlzIGlzIGluCi0gIHByZXBhcmF0aW9uIGZvciAoYnV0IG5vdCBzdHJpY3RseSByZWxhdGVkIHRvKSBpc3N1ZSAjNzExNywgc2hvcnQgZmxvYXQgcmVwci4KLQotLSBJc3N1ZSAjNjYyNDogUHlBcmdfUGFyc2VUdXBsZSB3aXRoICJzIiBmb3JtYXQgd2hlbiBwYXJzaW5nIGFyZ3VtZW50IHdpdGggTlVMTDoKLSAgQm9ndXMgVHlwZUVycm9yIGRldGFpbCBzdHJpbmcuCi0KLS0gSXNzdWUgIzU5NTQ6IEFkZCBhIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIGZ1bmN0aW9uIHRvIHJlcGxhY2UgbW9zdCB1c2VzIG9mCi0gIFB5Q29kZV9BZGRyMkxpbmUoKS4KLQotLSBJc3N1ZSAjNTk1OTogQWRkIGEgUHlDb2RlX05ld0VtcHR5KCkgZnVuY3Rpb24gdG8gY3JlYXRlIGEgbmV3IGVtcHR5IGNvZGUKLSAgb2JqZWN0IGF0IGEgc3BlY2lmaWVkIGZpbGUsIGZ1bmN0aW9uLCBhbmQgbGluZSBudW1iZXIuCi0KLS0gSXNzdWUgIzE0MTk2NTI6IENoYW5nZSB0aGUgZmlyc3QgYXJndW1lbnQgdG8gUHlJbXBvcnRfQXBwZW5kSW5pdHRhYigpIHRvCi0gIGBgY29uc3QgY2hhciAqYGAgYXMgdGhlIHN0cmluZyBpcyBzdG9yZWQgYmV5b25kIHRoZSBjYWxsLgotCi0tIFNvbWUgUHlCeXRlc18qIGFsaWFzZXMgaGF2ZSBiZWVuIHJlbW92ZWQgYmVjYXVzZSB0aGV5IGRvbid0IGV4aXN0IGluIDMueC4KLQotLSBJc3N1ZSAjNTE3NTogUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZyBub3cgcmFpc2VzIE92ZXJmbG93RXJyb3IgZm9yIG5lZ2F0aXZlCi0gIGFyZ3VtZW50cy4gIFByZXZpb3VzbHksIGl0IHJhaXNlZCBUeXBlRXJyb3IuCi0KLS0gSXNzdWUgIzQ3MjA6IFRoZSBmb3JtYXQgZm9yIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBjYW4gYmVnaW4gd2l0aCAnfCcuCi0KLS0gSXNzdWUgIzM2MzI6IEZyb20gdGhlIGdkYiBkZWJ1Z2dlciwgdGhlICdweW8nIG1hY3JvIGNhbiBub3cgYmUgY2FsbGVkIHdoZW4gdGhlCi0gIEdJTCBpcyByZWxlYXNlZCwgb3Igb3duZWQgYnkgYW5vdGhlciB0aHJlYWQuCi0KLS0gSXNzdWUgIzQxMjI6IE9uIFdpbmRvd3MsIGZpeCBhIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNpbmcgdGhlCi0gIFB5X1VOSUNPREVfSVNTUEFDRSBtYWNybyBpbiBhbiBleHRlbnNpb24gbW9kdWxlLgotCi0tIElzc3VlICM0MjkzOiBQeV9BZGRQZW5kaW5nQ2FsbCgpIGlzIG5vdyB0aHJlYWQgc2FmZSBhbmQgY2FuIGJlIHVzZWQgZm9yCi0gIGFzeW5jaHJvbm91cyBub3RpZmljYXRpb25zIHRvIHB5dGhvbiBmcm9tIGFueSB0aHJlYWQuICBEb2N1bWVudGF0aW9uIGFkZGVkLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjNjUwODogQWRkIHBvc2l4LntnZXRyZXN1aWQsZ2V0cmVzZ2lkLHNldHJlc3VpZCxzZXRyZXNnaWR9LgotCi0tIElzc3VlICM3MDc4OiBTZXQgc3RydWN0Ll9fZG9jX18gZnJvbSBfc3RydWN0Ll9fZG9jX18uCi0KLS0gSXNzdWUgIzMzNjY6IEFkZCBlcmYsIGVyZmMsIGV4cG0xLCBnYW1tYSwgbGdhbW1hIGZ1bmN0aW9ucyB0byBtYXRoIG1vZHVsZS4KLQotLSBJc3N1ZSAjNjgyMzogQWxsb3cgdGltZS5zdHJmdGltZSgpIHRvIGFjY2VwdCBhIHR1cGxlIHdpdGggYSBpc2RzdCBmaWVsZAotICBvdXRzaWRlIG9mIHRoZSByYW5nZSBvZiBbLTEsIDFdIGJ5IG5vcm1hbGl6aW5nIHRoZSB2YWx1ZSB0byB3aXRoaW4gdGhhdCByYW5nZS4KLQotLSBJc3N1ZSAjNjg3NzogTWFrZSBpdCBwb3NzaWJsZSB0byBsaW5rIHRoZSByZWFkbGluZSBleHRlbnNpb24gdG8gbGliZWRpdCBvbgotICBPU1guCi0KLS0gSXNzdWUgIzY5NDQ6IEZpeCBhIFN5c3RlbUVycm9yIHdoZW4gc29ja2V0LmdldG5hbWVpbmZvKCkgd2FzIGNhbGxlZCB3aXRoCi0gIHNvbWV0aGluZyBvdGhlciB0aGFuIGEgdHVwbGUgYXMgZmlyc3QgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzY4NjU6IEZpeCByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwd2QKLSAgbW9kdWxlLgotCi0tIElzc3VlICM2ODQ4OiBGaXggY3Vyc2VzIG1vZHVsZSBidWlsZCBmYWlsdXJlIG9uIE9TIFggMTAuNi4KLQotLSBGaXggYSBzZWdmYXVsdCBpbiBleHBhdCB3aGVuIGdpdmVuIGEgc3BlY2lhbGx5IGNyYWZ0ZWQgaW5wdXQgbGVhZCB0byB0aGUKLSAgdG9rZW5pemVyIG5vdCBzdG9wcGluZy4gQ1ZFLTIwMDktMzcyMC4KLQotLSBJc3N1ZSAjNjU2MTogJ1xkJyBpbiBhIHJlZ2V4IG5vdyBtYXRjaGVzIG9ubHkgY2hhcmFjdGVycyB3aXRoIFVuaWNvZGUgY2F0ZWdvcnkKLSAgJ05kJyAoTnVtYmVyLCBEZWNpbWFsIERpZ2l0KS4gIFByZXZpb3VzbHkgaXQgYWxzbyBtYXRjaGVkIGNoYXJhY3RlcnMgd2l0aAotICBjYXRlZ29yeSAnTm8nLgotCi0tIElzc3VlICMxNTIzOiBSZW1vdmUgZGVwcmVjYXRlZCBvdmVyZmxvdyB3cmFwcGluZyBmb3Igc3RydWN0LnBhY2sgd2l0aCBhbgotICBpbnRlZ2VyIGZvcm1hdCBjb2RlICgnYkJoSGlJbExxUScpLiAgUGFja2luZyBhbiBvdXQtb2YtcmFuZ2UgaW50ZWdlciBub3cKLSAgY29uc2lzdGVudGx5IHJhaXNlcyBzdHJ1Y3QuZXJyb3IuCi0KLS0gSXNzdWVzICMxNTMwNTU5LCAjMTc0MTEzMDogRml4IHZhcmlvdXMgc3RydWN0LnBhY2sgaW5jb25zaXN0ZW5jaWVzIGZvciB0aGUKLSAgaW50ZWdlciBmb3JtYXRzICgnYkJoSGlJbExxUScpLiAgSW4gdGhlIGZvbGxvd2luZywgJyonIHJlcHJlc2VudHMgYW55IG9mICc9JywKLSAgJzwnLCAnPicuCi0KLSAgICAtIFBhY2tpbmcgYSBmbG9hdCBub3cgYWx3YXlzIGdpdmVzIGEgRGVwcmVjYXRpb24gV2FybmluZy4gIFByZXZpb3VzbHkgaXQKLSAgICAgIG9ubHkgd2FybmVkIGZvciAnSScsICdMJywgJypCJywgJypIJywgJypJJywgJypMJy4KLQotICAgIC0gSWYgeCBpcyBub3QgYW4gaW50LCBsb25nIG9yIGZsb2F0LCB0aGVuIHBhY2tpbmcgeCB3aWxsIGFsd2F5cyByZXN1bHQgaW4KLSAgICAgIHN0cnVjdC5lcnJvci4gIFByZXZpb3VzbHkgYW4geCB3aXRoIGFuIF9faW50X18gbWV0aG9kIGNvdWxkIGJlIHBhY2tlZCBieQotICAgICAgJ2InLCAnQicsICdoJywgJ0gnLCAnaScsICdsJywgJypiJywgJypoJyAsJyppJywgJypsJywgYW5kIGFuIHggd2l0aCBhCi0gICAgICBfX2xvbmdfXyBtZXRob2QgY291bGQgYmUgcGFja2VkIGJ5ICdxJywgJ1EnLCAnKnEnLCAnKlEnOyBmb3IgeCB3aXRoCi0gICAgICBuZWl0aGVyIF9faW50X18gbm9yIF9fbG9uZ19fLCBUeXBlRXJyb3IgdXNlZCB0byBiZSByYWlzZWQgKHdpdGggYQotICAgICAgY29uZnVzaW5nIGVycm9yIG1lc3NhZ2UpIGZvciAnSScsICdMJywgJypCJywgJypIJywgJypJJywgJypMJywgYW5kCi0gICAgICBzdHJ1Y3QuZXJyb3IgaW4gb3RoZXIgY2FzZXMuCi0KLSAgTm90ZTogYXMgb2YgUHl0aG9uIDIuNyBiZXRhIDEsIHRoZSBhYm92ZSBpcyBvdXQgb2YgZGF0ZS4gIEluIDIuNyBiZXRhIDEsIGFueQotICBhcmd1bWVudCB3aXRoIGFuIF9faW50X18gbWV0aG9kIGNhbiBiZSBwYWNrZWQsIGJ1dCB1c2Ugb2YgdGhpcyBmZWF0dXJlCi0gIHRyaWdnZXJzIGEgRGVwcmVjYXRpb25XYXJuaW5nLgotCi0tIElzc3VlICM0ODczOiBGaXggcmVzb3VyY2UgbGVha3MgaW4gZXJyb3IgY2FzZXMgb2YgcHdkIGFuZCBncnAuCi0KLS0gSXNzdWUgIzQ3NTE6IEZvciBoYXNobGliIGFsZ29yaXRobXMgcHJvdmlkZWQgYnkgT3BlblNTTCwgdGhlIFB5dGhvbiBHSUwgaXMgbm93Ci0gIHJlbGVhc2VkIGR1cmluZyBjb21wdXRhdGlvbiBvbiBkYXRhIGxlbmd0aHMgPj0gMjA0OCBieXRlcy4KLQotLSBJc3N1ZSAjMzc0NTogRml4IGhhc2hsaWIgdG8gYWx3YXlzIHJlamVjdCB1bmljb2RlIGFuZCBub24gYnVmZmVyLWFwaQotICBzdXBwb3J0aW5nIG9iamVjdHMgYXMgaW5wdXQgbm8gbWF0dGVyIGhvdyBpdCB3YXMgY29tcGlsZWQgKGJ1aWx0IGluCi0gIGltcGxlbWVudGF0aW9ucyBvciBleHRlcm5hbCBvcGVuc3NsIGxpYnJhcnkpLiAgTk9URTogVW5kb25lIGluIDIuN2EyLgotCi0tIElzc3VlICM0Mzk3OiBGaXggb2NjYXNpb25hbCB0ZXN0X3NvY2tldCBmYWlsdXJlIG9uIE9TIFguCi0KLS0gSXNzdWUgIzQyNzk6IEZpeCBidWlsZCBvZiBwYXJzZXJtb2R1bGUgdW5kZXIgQ3lnd2luLgotCi0tIElzc3VlICM0MDUxOiBQcmV2ZW50IGNvbmZsaWN0IG9mIFVOSUNPREUgbWFjcm9zIGluIGNQaWNrbGUuCi0KLS0gSXNzdWUgIzQyMjg6IFBhY2sgbmVnYXRpdmUgdmFsdWVzIHRoZSBzYW1lIHdheSBhcyAyLjQgaW4gc3RydWN0J3MgTCBmb3JtYXQuCi0KLS0gSXNzdWUgIzEwNDAwMjY6IEZpeCBvcy50aW1lcyByZXN1bHQgb24gc3lzdGVtcyB3aGVyZSBIWiBpcyBpbmNvcnJlY3QuCi0KLS0gSXNzdWVzICMzMTY3LCAjMzY4MjogRml4IHRlc3RfbWF0aCBmYWlsdXJlcyBmb3IgbG9nLCBsb2cxMCBvbiBTb2xhcmlzLAotICBPcGVuQlNELgotCi0tIElzc3VlICM0MzY1OiBBZGQgY3J0YXNzZW0uaCBjb25zdGFudHMgdG8gdGhlIG1zdmNydCBtb2R1bGUuCi0KLS0gSXNzdWUgIzQzOTY6IFRoZSBwYXJzZXIgbW9kdWxlIG5vdyBjb3JyZWN0bHkgdmFsaWRhdGVzIHRoZSB3aXRoIHN0YXRlbWVudC4KLQotLSBJc3N1ZSAjNTIyODogTWFrZSBmdW5jdG9vbHMucGFydGlhbCBvYmplY3RzIGNhbiBub3cgYmUgcGlja2xlZC4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzc0MzE6IFVzZSBURVNURk4gaW4gdGVzdF9saW5lY2FjaGUgaW5zdGVhZCBvZiB0cnlpbmcgdG8gY3JlYXRlIGEgZmlsZQotICBpbiB0aGUgTGliL3Rlc3QgZGlyZWN0b3J5LCB3aGljaCBtaWdodCBiZSByZWFkLW9ubHkgZm9yIHRoZSB1c2VyIHJ1bm5pbmcgdGhlCi0gIHRlc3RzLgotCi0tIElzc3VlICM3MzI0OiBBZGQgYSBzYW5pdHkgY2hlY2sgdG8gcmVncnRlc3QgYXJndW1lbnQgcGFyc2luZyB0byBjYXRjaCB0aGUgY2FzZQotICBvZiBhbiBvcHRpb24gd2l0aCBubyBoYW5kbGVyLgotCi0tIElzc3VlICM3MzEyOiBBZGQgYSAtRiBmbGFnIHRvIHJ1biB0aGUgc2VsZWN0ZWQgdGVzdHMgaW4gYSBsb29wIHVudGlsIGEgdGVzdAotICBmYWlscy4gIENhbiBiZSBjb21iaW5lZCB3aXRoIC1qLgotCi0tIElzc3VlICM3Mjk1OiBEbyBub3QgdXNlIGEgaGFyZGNvZGVkIGZpbGUgbmFtZSBpbiB0ZXN0X3RhcmZpbGUuCi0KLS0gSXNzdWUgIzcyNzA6IEFkZCBzb21lIGRlZGljYXRlZCB1bml0IHRlc3RzIGZvciBtdWx0aS10aHJlYWQgc3luY2hyb25pemF0aW9uCi0gIHByaW1pdGl2ZXMgc3VjaCBhcyBMb2NrLCBSTG9jaywgQ29uZGl0aW9uLCBFdmVudCBhbmQgU2VtYXBob3JlLgotCi0tIElzc3VlICM3MjIyOiBNYWtlIHRocmVhZCAicmVhcGluZyIgbW9yZSByZWxpYWJsZSBzbyB0aGF0IHJlZmVyZW5jZQotICBsZWFrLWNoYXNpbmcgdGVzdCBydW5zIGdpdmUgc2Vuc2libGUgcmVzdWx0cy4gIFRoZSBwcmV2aW91cyBtZXRob2Qgb2YgcmVhcGluZwotICB0aHJlYWRzIGNvdWxkIHJldHVybiBzdWNjZXNzZnVsbHkgd2hpbGUgc29tZSBUaHJlYWQgb2JqZWN0cyB3ZXJlIHN0aWxsCi0gIHJlZmVyZW5jZWQuICBUaGlzIGFsc28gaW50cm9kdWNlcyBhIG5ldyBwcml2YXRlIGZ1bmN0aW9uOiBgYHRocmVhZC5fY291bnQoKWBgLgotCi0tIElzc3VlICM3MTUxOiBGaXhlZCByZWdydGVzdCAtaiBzbyB0aGF0IG91dHB1dCB0byBzdGRlcnIgZnJvbSBhIHRlc3Qgbm8gbG9uZ2VyCi0gIHJ1bnMgdGhlIHJpc2sgb2YgY2F1c2luZyB0aGUgd29ya2VyIHRocmVhZCB0byBmYWlsLgotCi0tIElzc3VlICM3MDU1OiB0ZXN0X19fYWxsX18gbm93IGdyZWVkaWx5IGRldGVjdHMgYWxsIG1vZHVsZXMgd2hpY2ggaGF2ZSBhbgotICBfX2FsbF9fIGF0dHJpYnV0ZSwgcmF0aGVyIHRoYW4gdXNpbmcgYSBoYXJkY29kZWQgYW5kIGluY29tcGxldGUgbGlzdC4KLQotLSBJc3N1ZSAjNzA1ODogQWRkZWQgc2F2ZS9yZXN0b3JlIGZvciB0aGluZ3MgbGlrZSBzeXMuYXJndiBhbmQgY3dkIHRvCi0gIHJ1bnRlc3RfaW5uZXIgaW4gcmVncnRlc3QsIHdpdGggd2FybmluZ3MgaWYgdGhlIGNhbGxlZCB0ZXN0IG1vZGlmaWVzIHRoZW0sCi0gIGFuZCBhIG5ldyBzZWN0aW9uIGluIHRoZSBzdW1tYXJ5IHJlcG9ydCBhdCB0aGUgZW5kLgotCi0tIElzc3VlICM3MDQyOiBGaXggdGVzdF9zaWduYWwgKHRlc3RfaXRpbWVyX3ZpcnR1YWwpIGZhaWx1cmUgb24gT1MgWCAxMC42LgotCi0tIElzc3VlICM2ODA2OiB0ZXN0X3BsYXRmb3JtIGZhaWxlZCB1bmRlciBPUyBYIDEwLjYuMCBiZWNhdXNlIGBgc3dfdmVyYGAgbGVhdmVzCi0gIG9mZiB0aGUgdHJhaWxpbmcgMCBpbiB0aGUgdmVyc2lvbiBudW1iZXIuCi0KLS0gSXNzdWUgIzU0NTA6IE1vdmVkIHRlc3RzIGludm9sdmluZyBsb2FkaW5nIHRrIGZyb20gTGliL3Rlc3QvdGVzdF90Y2wgdG8KLSAgTGliL2xpYi10ay90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X2xvYWR0ay4gV2l0aCB0aGlzLCB0aGVzZSB0ZXN0cyBkZW1vbnN0cmF0ZQotICB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgdGVzdF90dGtndWlvbmx5IChhbmQgbm93IGFsc28gdGVzdF90aykgd2hpY2ggaXMgdG8gc2tpcAotICB0aGUgdGVzdHMgaWYgRElTUExBWSBpcyBkZWZpbmVkIGJ1dCBjYW4ndCBiZSB1c2VkLgotCi0tIElzc3VlICM2MTUyOiBOZXcgb3B0aW9uICctaicvJy0tbXVsdGlwcm9jZXNzJyBmb3IgcmVncnRlc3QgYWxsb3dzIHJ1bm5pbmcKLSAgcmVncmVzc2lvbiB0ZXN0cyBpbiBwYXJhbGxlbCwgc2hvcnRlbmluZyB0aGUgdG90YWwgcnVudGltZS4KLQotLSBJc3N1ZSAjNTM1NDogTmV3IHRlc3Qgc3VwcG9ydCBmdW5jdGlvbiBpbXBvcnRfZnJlc2hfbW9kdWxlKCkgbWFrZXMgaXQgZWFzeSB0bwotICBpbXBvcnQgYm90aCBub3JtYWwgYW5kIG9wdGltaXNlZCB2ZXJzaW9ucyBvZiBtb2R1bGVzLiAgdGVzdF9oZWFwcSBhbmQKLSAgdGVzdF93YXJuaW5ncyBoYXZlIGJlZW4gYWRqdXN0ZWQgdG8gdXNlIGl0LCB0ZXN0cyBmb3Igb3RoZXIgbW9kdWxlcyB3aXRoIGJvdGgKLSAgQyBhbmQgUHl0aG9uIGltcGxlbWVudGF0aW9ucyBpbiB0aGUgc3RkbGliIGNhbiBiZSBhZGp1c3RlZCB0byB1c2UgaXQgb3ZlcgotICB0aW1lLgotCi0tIEZpeCB0ZXN0X3dhcm5pbmdzIHRvIG5vIGxvbmdlciByZXNldCB0aGUgd2FybmluZ3MgZmlsdGVyLgotCi0tIEZpeCB0ZXN0X2xvZ2dpbmcgdG8gbm8gbG9uZ2VyIHJlc2V0IHRoZSB3YXJuaW5ncyBmaWx0ZXIuCi0KLS0gSXNzdWUgIzU2MzU6IEZpeCBydW5uaW5nIHRlc3Rfc3lzIHdpdGggdHJhY2luZyBlbmFibGVkLgotCi0tIHJlZ3J0ZXN0IG5vIGxvbmdlciB0cmVhdHMgSW1wb3J0RXJyb3IgYXMgZXF1aXZhbGVudCB0byBTa2lwVGVzdC4gIEltcG9ydHMgdGhhdAotICBzaG91bGQgY2F1c2UgYSB0ZXN0IHRvIGJlIHNraXBwZWQgYXJlIG5vdyBkb25lIHVzaW5nIGltcG9ydF9tb2R1bGUgZnJvbSB0ZXN0Ci0gIHN1cHBvcnQsIHdoaWNoIGRvZXMgdGhlIGNvbnZlcnNpb24uCi0KLS0gSXNzdWUgIzUwODM6IE5ldyAnZ3VpJyByZXNvdXJjZSBmb3IgcmVncnRlc3QuCi0KLS0gSXNzdWUgIzU4Mzc6IENlcnRhaW4gc2VxdWVuY2VzIG9mIGNhbGxzIHRvIHNldCgpIGFuZCB1bnNldCgpIGZvcgotICBzdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQgb2JqZWN0cyByZXN0b3JlZCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gIGluY29ycmVjdGx5IG9uIF9fZXhpdF9fLgotCi0tIElzc3VlICMyMzg5OiBBcnJheSBvYmplY3RzIGFyZSBub3cgcGlja2xlZCBpbiBhIHBvcnRhYmxlIG1hbm5lci4KLQotTWlzYwotLS0tLQotCi0tIElzc3VlICM1NjExOiBBdXRvLWRldGVjdCB3aGV0aGVyIGEgQyBmaWxlIHVzZXMgdGFicyBvciBzcGFjZXMgaW4gVmltLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNiBmaW5hbAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDAxLU9jdC0yMDA4KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzk2NzogRml4ZWQgYSBjcmFzaCBpbiB0aGUgY291bnQoKSBhbmQgZmluZCgpIG1ldGhvZHMgb2Ygc3RyaW5nLWxpa2UKLSAgb2JqZWN0cywgd2hlbiB0aGUgInN0YXJ0IiBwYXJhbWV0ZXIgaXMgYSBodWdlIHZhbHVlLgotCi0tIElzc3VlICMzOTY1OiBGaXhlZCBhIGNyYXNoIG9uIFdpbmRvd3Mgd2hlbiBvcGVuKCkgaXMgZ2l2ZW4gYW4gaW52YWxpZAotICBmaWxlbmFtZSBvciBtb2RlLCBhbmQgdGhlIGZpbGVuYW1lIGlzIGEgdW5pY29kZSBzdHJpbmcuCi0KLS0gQnVnICMzOTUxOiBQeV9VU0lOR19NRU1PUllfREVCVUdHRVIgc2hvdWxkIG5vdCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzk2NTogQWxsb3cgcmVwZWF0ZWQgY2FsbHMgdG8gdHVydGxlLlNjcmVlbiwgYnkgbWFraW5nIGl0IGEKLSAgdHJ1ZSBzaW5nbGV0b24gb2JqZWN0LgotCi0tIElzc3VlICMzODk1OiBJdCB3YXMgcG9zc2libGUgdG8gY3Jhc2ggdGhlIGludGVycHJldGVyIHdoZW4gYW4gZXh0ZXJuYWwgdGltZXIKLSAgd2FzIHVzZWQgd2l0aCBjUHJvZmlsZSB0aGF0IHJldHVybmVkIGFuIG9iamVjdCB0aGF0IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQKLSAgaW50byBhIGZsb2F0LgotCi0tIElzc3VlICMzOTUwOiBNYWRlIHR1cnRsZSByZXNwZWN0IHNjYWxlIGZhY3RvcnMuCi0KLS0gSXNzdWUgIzM1NDc6IEZpeGVkIGN0eXBlcyBzdHJ1Y3R1cmVzIGJpdGZpZWxkcyBvZiB2YXJ5aW5nIGludGVnZXIKLSAgc2l6ZXMuCi0KLS0gSXNzdWUgIzM4Nzk6IEEgcmVncmVzc2lvbiBpbiB1cmxsaWIuZ2V0cHJveGllc19lbnZpcm9ubWVudCB3YXMgZml4ZWQuCi0KLS0gSXNzdWUgIzM4NjM6IERpc2FibGVkIGEgdW5pdCB0ZXN0IG9mIGZvcmsgYmVpbmcgY2FsbGVkIGZyb20gYSB0aHJlYWQKLSAgd2hlbiBydW5uaW5nIG9uIHBsYXRmb3JtcyBrbm93biB0byBleGhpYml0IE9TIGJ1Z3Mgd2hlbiBhdHRlbXB0aW5nIHRoYXQuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIEJ1ZyAjMzk4OTogUGFja2FnZSB0aGUgMnRvMyBzY3JpcHQgKGFzIDJ0bzMucHkpIGluIHRoZSBXaW5kb3dzCi0gIGluc3RhbGxlci4KLQotLSBCdWcgIzM4ODc6IFBhY2thZ2UgeDY0IHZlcnNpb24gb2YgQ1JUIGZvciBBTUQ2NCBXaW5kb3dzIGJpbmFyaWVzLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNiByZWxlYXNlIGNhbmRpZGF0ZSAyPwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDE3LVNlcC0yMDA4KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gU2VjdXJpdHkgSXNzdWUgIzI6IGltYWdlb3AgZGlkIG5vdCB2YWxpZGF0ZSBhcmd1bWVudHMgY29ycmVjdGx5IGFuZCBjb3VsZAotICBzZWdmYXVsdCBhcyBhIHJlc3VsdC4KLQotLSBJc3N1ZSAjMzg4NjogUG9zc2libGUgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIF9oYXNob3BlbnNzbCBtb2R1bGUgd2VyZQotICBjbG9zZWQuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMzODUwOiByZWN1cnNpb24gdGVzdHMgaW4gVG9vbHMvc2NyaXB0cy9maW5kX3JlY3Vyc2lvbl9saW1pdC5weSBjYW4gcmFpc2UKLSAgQXR0cmlidXRlRXJyb3IgaW5zdGVhZCBvZiBSdW50aW1lRXJyb3IsIGRlcGVuZGluZyBpbiB3aGljaCBDIEFQSSBjYWxsCi0gIGV4YWN0bHkgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBleGNlZWRlZC4gQ29uc2VxdWVudGx5LCBib3RoIGV4Y2VwdGlvbiB0eXBlcwotICBhcmUgY2F1Z2h0IGFuZCBzaWxlbmNlZC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gSXNzdWUgIzM2MTc6IEluY2x1ZGUgYSBsaWNlbnNpbmcgc3RhdGVtZW50IHJlZ2FyZGluZyB0aGUgTWljcm9zb2Z0Ci0gIEMgcnVudGltZSBpbiB0aGUgV2luZG93cyBpbnN0YWxsZXIuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi42IHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMTItU2VwLTIwMDgqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMzNjQyOiBTdXBwcmVzcyB3YXJuaW5nIGluIG9ibWFsbG9jIHdoZW4gc2l6ZV90IGlzIGxhcmdlciB0aGFuIHVpbnQuCi0KLS0gSXNzdWUgIzM3NDM6IEluIGEgZmV3IHBsYWNlcywgUFlfRk9STUFUX1NJWkVfVCB3YXMgaW5jb3JyZWN0bHkgdXNlZCB3aXRoCi0gIFB5U3RyaW5nX0Zyb21Gb3JtYXQgb3IgUHlFcnJfRm9ybWF0IHRvIGRpc3BsYXkgc2l6ZV90IHZhbHVlcy4gVGhlIG1hY3JvCi0gIFBZX0ZPUk1BVF9TSVpFX1QgaXMgZGVzaWduZWQgdG8gc2VsZWN0IHRoZSBjb3JyZWN0IGZvcm1hdCBmb3IgdGhlIE9TCi0gIGBgcHJpbnRmYGAgZnVuY3Rpb24sIHdoZXJlYXMgUHlTdHJpbmdfRnJvbUZvcm1hdCBoYXMgYW4gaW5kZXBlbmRlbnQKLSAgaW1wbGVtZW50YXRpb24gYW5kIHVzZXMgIiV6ZCIgb24gYWxsIHBsYXRmb3JtcyBmb3Igc2l6ZV90IHZhbHVlcy4KLSAgVGhpcyBtYWtlcyBhIGRpZmZlcmVuY2Ugb24gd2luNjQsIHdoZXJlIGBgcHJpbnRmYGAgbmVlZHMgIiVJZCIgdG8gZGlzcGxheQotICA2NGJpdCB2YWx1ZXMuCi0KLS0gSXNzdWUgIzM2MzQ6IF93ZWFrcmVmLnJlZihFeGNlcHRpb24pLl9faW5pdF9fKCkgZ2F2ZSBpbnZhbGlkIHJldHVybiB2YWx1ZSBvbgotICBlcnJvci4KLQotLSBJc3N1ZSAjMzc3NzogbG9uZygpIGFwcGxpZWQgdG8gYSBmbG9hdCBvYmplY3Qgbm93IGFsd2F5cyByZXR1cm4gYSBsb25nCi0gIG9iamVjdDsgcHJldmlvdXNseSBhbiBpbnQgd291bGQgYmUgcmV0dXJuZWQgZm9yIHNtYWxsIHZhbHVlcy4gdGhlIF9fbG9uZ19fCi0gIG1ldGhvZCBpcyBhbGxvd2VkIHRvIHJldHVybiBlaXRoZXIgYW4gaW50IG9yIGEgbG9uZywgYnV0IHRoZSBiZWhhdmlvdXIgb2YKLSAgZmxvYXQgb2JqZWN0cyBzaG91bGQgbm90IGNoYW5nZSB0byByZXNwZWN0IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuCi0KLS0gSXNzdWUgIzM3NTE6IHN0ci5ycGFydGl0aW9uIHdvdWxkIHBlcmZvcm0gYSBsZWZ0LXBhcnRpdGlvbiB3aGVuIGNhbGxlZCB3aXRoCi0gIGEgdW5pY29kZSBhcmd1bWVudC4KLQotLSBJc3N1ZSAjMzY4MzogRml4IGNvbXBpbGF0aW9uIHdoZW4gLS13aXRob3V0LXRocmVhZHMgaXMgZ2l2ZW4uCi0KLS0gSXNzdWUgIzM2Njg6IEZpeCBhIG1lbW9yeSBsZWFrIHdpdGggdGhlICJzKiIgYXJndW1lbnQgcGFyc2VyIGluCi0gIFB5QXJnX1BhcnNlVHVwbGUgYW5kIGZyaWVuZHMsIHdoaWNoIG9jY3VycmVkIHdoZW4gdGhlIGFyZ3VtZW50IGZvciAicyoiCi0gIHdhcyBjb3JyZWN0bHkgcGFyc2VkIGJ1dCBwYXJzaW5nIG9mIHN1YnNlcXVlbnQgYXJndW1lbnRzIGZhaWxlZC4KLQotLSBJc3N1ZSAjMjUzNDogc3BlZWQgdXAgaXNpbnN0YW5jZSgpIGFuZCBpc3N1YmNsYXNzKCkgYnkgNTAtNzAlLCBzbyBhcyB0bwotICBtYXRjaCBQeXRob24gMi41IHNwZWVkIGRlc3BpdGUgdGhlIF9faW5zdGFuY2VjaGVja19fIC8gX19zdWJjbGFzc2NoZWNrX18KLSAgbWVjaGFuaXNtLiBJbiB0aGUgcHJvY2VzcywgZml4IGEgYnVnIHdoZXJlIGlzaW5zdGFuY2UoKSBhbmQgaXNzdWJjbGFzcygpLAotICB3aGVuIGdpdmVuIGEgdHVwbGUgb2YgY2xhc3NlcyBhcyBzZWNvbmQgYXJndW1lbnQsIHdlcmUgbG9va2luZyB1cAotICBfX2luc3RhbmNlY2hlY2tfXyAvIF9fc3ViY2xhc3NjaGVja19fIG9uIHRoZSB0dXBsZSByYXRoZXIgdGhhbiBvbiBlYWNoCi0gIHR5cGUgb2JqZWN0LgotCi0tIEZpeCBjcmFzaGVzIG9uIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUgZm91bmQgd2l0aCBmYWlsbWFsbG9jLgotCi0tIEZpeCBtZW1vcnkgbGVha3MgZm91bmQgd2l0aCB2YWxncmluZCBhbmQgdXBkYXRlIHN1cHByZXNzaW9ucyBmaWxlLgotCi0tIEZpeCBjb21waWxlciB3YXJuaW5ncyBpbiBvcHQgbW9kZSB3aGljaCB3b3VsZCBsZWFkIHRvIGludmFsaWQgbWVtb3J5IHJlYWRzLgotCi0tIEZpeCBwcm9ibGVtIHVzaW5nIHdyb25nIG5hbWUgaW4gZGVjaW1hbCBtb2R1bGUgcmVwb3J0ZWQgYnkgcHljaGVja2VyLgotCi0tIFNpbGVuY2VkIGFub3RoZXIgY29tcGlsZXIgd2FybmluZyBhYm91dCBhIHVzZWQgYnV0IG5vdCBkZWZpbmVkCi0gIGZ1bmN0aW9uICdzdHJpbmdsaWJfY29udGFpbnNfb2JqJy4KLQotLSBBZGRlZCB3YXJuaW5ncyBvbiB0aGUgdXNlIG9mIGBgX19nZXRzbGljZV9fYGAsIGBgX19zZXRzbGljZV9fYGAsIG9yCi0gIGBgX19kZWxzbGljZV9fYGAuCi0KLS0gSXNzdWUgIzM2Nzg6IENvcnJlY3RseSBwYXNzIExERkxBR1MgYW5kIExETEFTVCB0byB0aGUgbGlua2VyIG9uIHNoYXJlZAotICBsaWJyYXJ5IHRhcmdldHMgaW4gdGhlIE1ha2VmaWxlLgotCi0tIElzc3VlICMxMjA0OiBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgdGVzdHMgZm9yIGFkZGl0aW9uYWwgbGlicmFyaWVzCi0gIHRoYXQgbWF5IGJlIHJlcXVpcmVkIHdoZW4gbGlua2luZyBhZ2FpbnN0IHJlYWRsaW5lLiAgVGhpcyBmaXhlcyBpc3N1ZXMKLSAgd2l0aCB4ODZfNjQgYnVpbGRzIG9uIHNvbWUgcGxhdGZvcm1zIChhIGZldyBMaW51eCBmbGF2b3JzIGFuZCBPcGVuQlNEKS4KLQotQy1BUEkKLS0tLS0tCi0KLS0gQWxpYXNlZCBQeU9iamVjdF9CeXRlcyB0byBQeU9iamVjdF9TdHIuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzY0MDogUGlja2xpbmcgYSBsaXN0IG9yIGEgZGljdCB1c2VzIGxlc3MgbG9jYWwgdmFyaWFibGVzLCB0byByZWR1Y2UKLSAgc3RhY2sgdXNhZ2UgaW4gdGhlIGNhc2Ugb2YgZGVlcGx5IG5lc3RlZCBvYmplY3RzLgotCi0tIElzc3VlICMzNjI5OiBGaXggc3JlICJieXRlY29kZSIgdmFsaWRhdG9yIGZvciBhbiBlbmQgY2FzZS4KLQotLSBJc3N1ZSAjMzgxMTogVGhlIFVuaWNvZGUgZGF0YWJhc2Ugd2FzIHVwZGF0ZWQgdG8gNS4xLgotCi0tIElzc3VlICMzNzgxOiBGdXJ0aGVyIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCkgY2xlYW51cCB0byBwcmV2ZW50Ci0gIHNpbGVudCBtaXNiZWhhdmlvdXIgd2hlbiBhIHNpbmdsZSBpbnN0YW5jZSBpcyBuZXN0ZWQgaW4gbXVsdGlwbGUKLSAgd2l0aCBzdGF0ZW1lbnRzLCBvciB3aGVuIHRoZSBtZXRob2RzIGFyZSBpbnZva2VkIGluIHRoZSB3cm9uZyBvcmRlci4KLQotLSBJc3N1ZSAjMzgwOTogRml4ZWQgc3B1cmlvdXMgJ3Rlc3QuYmxhaCcgZmlsZSBsZWZ0IGJlaGluZCBieSB0ZXN0X2xvZ2dpbmcuCi0KLS0gSXNzdWUgIzM3ODE6IENsZWFuIHVwIHRoZSBBUEkgZm9yIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCkgYnkgaGF2aW5nIGl0Ci0gIHJldHVybiBhIGxpc3Qgb3IgTm9uZSByYXRoZXIgdGhhbiBhIGN1c3RvbSBvYmplY3QuCi0KLS0gSXNzdWUgIzE2MzgwMzM6IENvb2tpZS5Nb3JzZWwgZ2FpbmVkIHRoZSBodHRwb25seSBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzM1MzU6IHppcGZpbGUgY291bGRuJ3QgcmVhZCBzb21lIHppcCBmaWxlcyBsYXJnZXIgdGhhbiAyR0IuCi0KLS0gSXNzdWUgIzM3NzY6IERlcHJlY2F0ZSB0aGUgYnNkZGIgcGFja2FnZSBmb3IgcmVtb3ZhbCBpbiAzLjAuCi0KLS0gSXNzdWUgIzM3NjI6IHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpIGZhaWxzIGlmIHB5dGhvbiBpcyBsYW5jaGVkIHZpYQotICBpdHMgc3ltYm9saWMgbGluay4KLQotLSBJc3N1ZSAjMzc3MjogRml4ZWQgcmVncmVzc2lvbiBwcm9ibGVtIGluIFN0cmVhbUhhbmRsZXIuZW1pdCgpLgotCi0tIElzc3VlICM2MDAzNjI6IFJlbG9jYXRlZCBwYXJzZV9xcygpIGFuZCBwYXJzZV9xc2woKSwgZnJvbSB0aGUgY2dpIG1vZHVsZQotICB0byB0aGUgdXJscGFyc2Ugb25lLiAgQWRkZWQgYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIGluIHRoZSBvbGQKLSAgbW9kdWxlLCBpdCB3aWxsIGJlIGRlcHJlY2F0ZWQgaW4gdGhlIGZ1dHVyZS4KLQotLSBJc3N1ZSAjMjU2MjogRml4IGRpc3R1dGlscyBQS0ctSU5GTyB3cml0aW5nIGxvZ2ljIHRvIGFsbG93IGhhdmluZwotICBub24tYXNjaWkgY2hhcmFjdGVycyBhbmQgVW5pY29kZSBpbiBzZXR1cC5weSBtZXRhLWRhdGEuCi0KLS0gSXNzdWUgIzM3MjY6IEFsbG93IHNwYWNlcyBpbiBzZXBhcmF0b3JzIGluIGxvZ2dpbmcgY29uZmlndXJhdGlvbiBmaWxlcy4KLQotLSBJc3N1ZSAjMzcxOTogcGxhdGZvcm0uYXJjaGl0ZWN0dXJlKCkgZmFpbHMgaWYgdGhlcmUgYXJlIHNwYWNlcyBpbiB0aGUKLSAgcGF0aCB0byB0aGUgUHl0aG9uIGJpbmFyeS4KLQotLSBJc3N1ZSAjMzYwMjogTW92ZWQgdGVzdC50ZXN0X3N1cHBvcnQuY2F0Y2hfd2FybmluZygpIHRvCi0gIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCkgYWxvbmcgd2l0aCBzb21lIEFQSSBjbGVhbnVwLiBFeHBhbmRpbmcgdGhlIHRlc3RzCi0gIGZvciBjYXRjaF93YXJuaW5ncygpIGFsc28gbGVkIHRvIGFuIGltcHJvdmVtZW50IGluIHRoZSByYWlzaW5nIG9mIGEKLSAgRGVwcmVjYXRpb25XYXJuaW5nIHJlbGF0ZWQgdG8gd2FybmluZ3Mud2Fybl9leHBsaWNpdCgpLgotCi0tIFRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IgdGhlIG9sZCBjYW1lbENhc2UgdGhyZWFkaW5nIEFQSSB3ZXJlIHJlbW92ZWQuCi0KLS0gbG9nZ2luZzogZml4ZWQgbGFjayBvZiB1c2Ugb2YgZW5jb2RpbmcgYXR0cmlidXRlIHNwZWNpZmllZCBvbiBhIHN0cmVhbS4KLQotLSBTaWxlbmNlZCBhIHRyaXZpYWwgY29tcGlsZXIgd2FybmluZyBpbiB0aGUgc3FsaXRlIG1vZHVsZS4KLQotLSBGaXhlZCB0d28gZm9ybWF0IHN0cmluZ3MgaW4gdGhlIF9jb2xsZWN0aW9ucyBtb2R1bGUuCi0KLS0gSXNzdWUgIzM3MDM6IF9maWxlaW8uRmlsZUlPIGdhdmUgdW5oZWxwZnVsIGVycm9yIG1lc3NhZ2Ugd2hlbiB0cnlpbmcgdG8gb3BlbiBhCi0gIGRpcmVjdG9yeS4KLQotLSBJc3N1ZSAjMzcwODogb3MudXJhbmRvbSBubyBsb25nZXIgZ29lcyBpbnRvIGFuIGluZmluaXRlIGxvb3Agd2hlbiBwYXNzZWQgYQotICBub24taW50ZWdlciBmbG9hdGluZyBwb2ludCBudW1iZXIuCi0KLS0gSXNzdWUgIzMxMTA6IG11bHRpcHJvY2Vzc2luZyBmYWlscyB0byBjb21waWVsIG9uIHNvbGFyaXMgMTAgZHVlIHRvIG1pc3NpbmcKLSAgU0VNX1ZBTFVFX01BWC4KLQotRXh0ZW5zaW9uIE1vZHVsZXMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzQzMDE6IFBhdGNoIHRoZSBsb2dnaW5nIG1vZHVsZSB0byBhZGQgcHJvY2Vzc05hbWUgc3VwcG9ydCwgcmVtb3ZlCi0gIF9jaGVja19sb2dnZXJfY2xhc3MgZnJvbSBtdWx0aXByb2Nlc3NpbmcuCi0KLS0gSXNzdWUgIzI5NzU6IFdoZW4gY29tcGlsaW5nIHNldmVyYWwgZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMDgKLSAgZnJvbSB0aGUgc2FtZSBweXRob24gaW50ZXJwcmV0ZXIsIHNvbWUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdvdWxkIGdyb3cKLSAgd2l0aG91dCBsaW1pdC4KLQotLSBJc3N1ZSAjMzY0MzogQWRkZWQgYSBmZXcgbW9yZSBjaGVja3MgdG8gX3Rlc3RjYXBpIHRvIHByZXZlbnQgc2VnZmF1bHRzIGJ5Ci0gIGV4cGxvaXRhdGlvbiBvZiBwb29yIGFyZ3VtZW50IGNoZWNraW5nLgotCi0tIHNxbGl0ZTM6IENoYW5nZWQgZG9jc3RyaW5nIG9mIGl0ZXJkdW1wKCkgdG8gbWFyayBtZXRob2QgYXMgIk5vbi1zdGFuZGFyZCIuCi0KLS0gSXNzdWUgIzMxMDM6IFJlZHVjZWQgZ2xvYmFscyBzeW1ib2xzIHVzZWQgYnkgc3FsaXRlMyBtb2R1bGUgYW5kIG1hZGUgc3VyZSBhbGwKLSAgcmVtYWluaW5nIG9uZXMgaGF2ZSAicHlzcWxpdGVfIiBwcmVmaXguCi0KLS0gSXNzdWUgIzM4NDY6IFJlbGVhc2UgdGhlIEdJTCBkdXJpbmcgc3FsaXRlM19wcmVwYXJlIGNhbGxzLiBUaGlzIGltcHJvdmVzCi0gIGNvbmN1cnJlbnQgYWNjZXNzIHRvIHRoZSBzYW1lIFNRTGl0ZSBkYXRhYmFzZSBmcm9tIG11bHRpcGxlCi0gIHRocmVhZHMvcHJvY2Vzc2VzLgotCi1UZXN0cwotLS0tLS0KLQotLSBJc3N1ZSAjMzc4MTogQWRkIHRlc3QudGVzdF9zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCkgYXMgYSBjb252ZW5pZW5jZQotICB3cmFwcGVyIGZvciB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpIHRoYXQgbWFrZXMgaXQgZWFzaWVyIHRvIGNoZWNrCi0gIHRoYXQgZXhwZWN0ZWQgd2FybmluZyBtZXNzYWdlcyBhcmUgYmVpbmcgcmVwb3J0ZWQuCi0KLS0gSXNzdWUgIzM3OTY6IFNvbWUgdGVzdHMgZnVuY3Rpb25zIHdlcmUgbm90IGVuYWJsZWQgaW4gdGVzdF9mbG9hdC4KLQotLSBJc3N1ZSAjMzc2ODogTW92ZSB0ZXN0X3B5M2t3YXJuIG92ZXIgdG8gdGhlIG5ldyBBUEkgZm9yIGNhdGNoX3dhcm5pbmdzKCkuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMzODMzOiBVc2UgYSBkaWZmZXJlbnQgdXBncmFkZSBjb2RlIGZvciBXaW42NCBpbnN0YWxsZXJzLgotCi0tIElzc3VlICMyMjcxOiBTZXQgU2VjdXJlQ3VzdG9tUHJvcGVydGllcyBzbyB0aGF0IGluc3RhbGxhdGlvbiB3aWxsIHByb3Blcmx5Ci0gIHVzZSB0aGUgVEFSR0VURElSIGV2ZW4gZm9yIHVucHJpdmlsZWdlZCB1c2Vycy4KLQotLSBBbGxvdyBwYXNzaW5nIHRoZSBNU0kgZmlsZSBuYW1lIHRvIG1lcmdlLnB5LgotCi0tIElzc3VlICMzNzU4OiBSZW5hbWUgdGhlICdjaGVjaycgdGFyZ2V0IHRvICdwYXRjaGNoZWNrJyBzbyBhcyB0byBub3QgY2xhc2gKLSAgd2l0aCBHTlUgYnVpbGQgdGFyZ2V0IGd1aWRlbGluZXMuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi42IGJldGEgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSpSZWxlYXNlIGRhdGU6IDIwLUF1Zy0yMDA4KgotCi1Db3JlIGFuZCBCdWlsdGlucwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMTg3ODogUmVtb3ZlIFB5X1RQRkxBR1NfSEFWRV9WRVJTSU9OX1RBRyBmcm9tCi0gIFB5X1RQRkxBR1NfREVGQVVMVCB3aGVuIG5vdCBidWlsZGluZyB0aGUgY29yZS4gIFRoaXMgbWVhbnMgM3JkIHBhcnR5Ci0gIGV4dGVuc2lvbnMgZG8gbm90IGF1dG9tYXRpY2FsbHkgYmVuZWZpdCBmcm9tIHRoZSBjbGFzcyBhdHRyaWJ1dGUKLSAgY2FjaGU7IHRoZXkgd2lsbCBoYXZlIHRvIGV4cGxpY2l0bHkgYWRkIFB5X1RQRkxBR1NfSEFWRV9WRVJTSU9OX1RBRwotICB0byB0aGVpciB0cF9mbGFncyBmaWVsZCBpZiB0aGV5IGNhcmUuICBUaGlzIGlzIGEgYmFja3dhcmRzCi0gIGNvbXBhdGliaWxpdHkgZmVhdHVyZTsgaW4gMy4wLCBhbGwgdHlwZXMgd2lsbCB1c2UgdGhlIGNhY2hlIGJ5Ci0gIGRlZmF1bHQuCi0KLS0gS2V5d29yZCBhcmd1bWVudHMgY2FuIG5vdyBmb2xsb3cgc3RhcnJlZCBhcmd1bWVudHMuIChgYGYoYSwgKmFyZ3MsCi0gIGtleXdvcmQ9MjMpYGAgaXMgbm93IHZhbGlkIHN5bnRheC4pCi0KLS0gY3R5cGVzIGZ1bmN0aW9uIHBvaW50ZXJzIHRoYXQgYXJlIENPTSBtZXRob2RzIGhhdmUgYSBib29sZWFuIFRydWUKLSAgdmFsdWUgYWdhaW4uCi0KLS0gSXNzdWUgIzMxMzk6IE1ha2UgYnVmZmVyLWludGVyZmFjZSB0aHJlYWQtc2FmZSB3cnQuIFB5QXJnX1BhcnNlVHVwbGUsCi0gIGJ5IGRlbnlpbmcgcyMgdG8gcGFyc2Ugb2JqZWN0cyB0aGF0IGhhdmUgYSByZWxlYXNlYnVmZmVyIHByb2NlZHVyZSwKLSAgYW5kIGludHJvZHVjaW5nIHMqLgotCi0tIElzc3VlICMzNTM3OiBGaXggYW4gYXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBhbiBlbXB0eSBidXQgcHJlc2l6ZWQgZGljdAotICBvYmplY3Qgd2FzIHN0b3JlZCBpbiB0aGUgZnJlZWxpc3QuCi0KLS0gSXNzdWUgIzE0ODEyOTY6IE1ha2UgbG9uZyhmbG9hdCgnbmFuJykpIGFuZCBpbnQoZmxvYXQoJ25hbicpKSByYWlzZQotICBWYWx1ZUVycm9yIGNvbnNpc3RlbnRseSBhY3Jvc3MgcGxhdGZvcm1zLgotCi0tIElzc3VlICMzNDc5OiBPbiBwbGF0Zm9ybXMgd2hlcmUgc2l6ZW9mKGludCkgaXMgc21hbGxlciB0aGFuIHNpemVvZihsb25nKQotICAoNjRiaXQgVW5peCwgZm9yIGV4YW1wbGUpLCB1bmljaHIoKSB3b3VsZCB0cnVuY2F0ZSBpdHMgYXJndW1lbnQgYW5kIHJldHVybgotICB1J1x4MDAnIGZvciB1bmljaHIoMioqMzIpLiBOb3cgaXQgcHJvcGVybHkgcmFpc2VzIGFuIE92ZXJmbG93RXJyb3IuCi0KLS0gQXBwbHkgc2VjdXJpdHkgcGF0Y2hlcyBmcm9tIEFwcGxlLgotCi0tIElzc3VlICMyNTQyOiBOb3cgdGhhdCBpc3N1YmNsYXNzKCkgbWF5IGNhbGwgYXJiaXRyYXJ5IGNvZGUsIGVuc3VyZSB0aGF0Ci0gIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMgcmV0dXJucyAwIHdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyB0aGVyZS4KLQotLSBJc3N1ZSAjMTgxOTogZnVuY3Rpb24gY2FsbHMgd2l0aCBzZXZlcmFsIG5hbWVkIHBhcmFtZXRlcnMgYXJlIG5vdyBvbgotICBhdmVyYWdlIDM1JSBmYXN0ZXIgKGFzIG1lYXN1cmVkIGJ5IHB5YmVuY2gpLgotCi0tIElzc3VlICMyMzc4OiBBbiB1bmV4cGVjdGVkIFVuYm91bmRMb2NhbEVycm9yIG9yIE5hbWVFcnJvciBjb3VsZCBhcHBlYXIgd2hlbgotICB0aGUgcHl0aG9uIGRlYnVnZ2VyIHN0ZXBzIGludG8gYSBjbGFzcyBzdGF0ZW1lbnQ6IHRoZSBmcmVlIHZhcmlhYmxlcyAobG9jYWwKLSAgdmFyaWFibGVzIGRlZmluZWQgaW4gYW4gb3V0ZXIgc2NvcGUpIHdvdWxkIGJlIGRlbGV0ZWQgZnJvbSB0aGUgb3V0ZXIgc2NvcGUuCi0KLS0gSXNzdWUgIzI2MjA6IE92ZXJmbG93IGNoZWNraW5nIHdoZW4gYWxsb2NhdGluZyBvciByZWFsbG9jYXRpbmcgbWVtb3J5Ci0gIHdhcyBub3QgYWx3YXlzIGJlaW5nIGRvbmUgcHJvcGVybHkgaW4gc29tZSBweXRob24gdHlwZXMgYW5kIGV4dGVuc2lvbgotICBtb2R1bGVzLiAgUHlNZW1fTUFMTE9DLCBQeU1lbV9SRUFMTE9DLCBQeU1lbV9ORVcgYW5kIFB5TWVtX1JFU0laRSBoYXZlCi0gIGFsbCBiZWVuIHVwZGF0ZWQgdG8gcGVyZm9ybSBiZXR0ZXIgY2hlY2tzIGFuZCBwbGFjZXMgaW4gdGhlIGNvZGUgdGhhdAotICB3b3VsZCBwcmV2aW91c2x5IGxlYWsgbWVtb3J5IG9uIHRoZSBlcnJvciBwYXRoIHdoZW4gc3VjaCBhbiBhbGxvY2F0aW9uCi0gIGZhaWxlZCBoYXZlIGJlZW4gZml4ZWQuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzYxMjogQWRkZWQgc29tZSBtaXNzaW5nIGJhc2ljIHR5cGVzIGluIGN0eXBlcy53aW50eXBlcy4KLQotLSBUaGUgbWV0aG9kcyBgYGlzX2luX3R1cGxlKClgYCwgYGBpc192YXJhcmcoKWBgLCBhbmQgYGBpc19rZXl3b3JkYXJnKClgYCBvZgotICBzeW10YWJsZS5TeW1ib2wgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gMy4wIGFuZCB0aGUgbmV4dCByZWxlYXNlLgotCi0tIElzc3VlICMyMjM0OiBkaXN0dXRpbHMgZmFpbGVkIGZvciBzb21lIHZlcnNpb25zIG9mIHRoZSBjeWd3aW4gY29tcGlsZXIuIFRoZQotICB2ZXJzaW9uIHJlcG9ydGVkIGJ5IHRoZXNlIHRvb2xzIGRvZXMgbm90IG5lY2Vzc2FyaWx5IGZvbGxvdyB0aGUgcHl0aG9uCi0gIHZlcnNpb24gbnVtYmVyaW5nIHNjaGVtZSwgc28gdGhlIG1vZHVsZSBpcyBsZXNzIHN0cmljdCB3aGVuIHBhcnNpbmcgaXQuCi0KLS0gSXNzdWUgIzIyMzU6IEFkZGVkIFB5M2sgd2FybmluZ3MgZm9yIHR5cGVzIHdoaWNoIHdpbGwgYmVjb21lIHVuaGFzaGFibGUKLSAgdW5kZXIgdGhlIHN0cmljdGVyIF9faGFzaF9fIGluaGVyaXRhbmNlIHJ1bGVzIGluIDMuMC4gU2V2ZXJhbCB0eXBlcwotICB3aGljaCBkaWQgbm90IG1lZXQgdGhlIHJ1bGVzIGZvciBoYXNoIGludmFyaWFudHMgYW5kIHdlcmUgYWxyZWFkeQotICB1bmhhc2hhYmxlIGluIDMuMCBoYXZlIG5vdyBiZWVuIGV4cGxpY2l0bHkgZmxhZ2dlZCBhcyB1bmhhc2hhYmxlIGluCi0gIDIuNiBhcyB3ZWxsIChjb2xsZWN0aW9ucy5NYXBwaW5nLCBjb2xsZWN0aW9ucy5TZXQsIHVuaXR0ZXN0LlRlc3RTdWl0ZSwKLSAgeG1sLmRvbS5taW5pZG9tLk5hbWVkTm9kZU1hcCwgbnVtYmVycy5OdW1iZXIsIFVzZXJMaXN0LlVzZXJMaXN0KQotCi0tIFVwZGF0ZSBfX2FsbF9fIGZvciBjb29raWVsaWIsIGNzdiwgb3MsIHVybGxpYjIsIGFuZCB3ZWFrcmVmIHRvIGluY2x1ZGUgdGhpbmdzCi0gIGltcG9ydGVkIGludG8gdGhlIG1vZHVsZSBidXQgZXhwb3NlZCBhcyBwYXJ0IG9mIHRoZSBtb2R1bGUncyBBUEkuCi0KLS0gUmVtb3ZlIGFuIHVubmVlZGVkIGltcG9ydCBvZiBhYmMuQUJDTWV0YSBmcm9tICdpbnNwZWN0Jy4KLQotLSBSZW1vdmUgdW5uZWVkZWQgaW1wb3J0cyBvZiAnc3lzJyBhbmQgJ3dhcm5pbmdzJyBmcm9tICdpbycuCi0KLS0gUmVtb3ZlIHVubmVlZGVkIGltcG9ydHMgb2YgJ3dhcm5pbmdzJyBmcm9tIHNoZWx2ZSwgZmlsZWNtcCwgYW5kIGR1bW15X3RocmVhZC4KLQotLSBJc3N1ZSAjMzU3NTogSW5jcmVtZW50YWwgZGVjb2RlcidzIGRlY29kZSBmdW5jdGlvbiBub3cgdGFrZXMgYnl0ZWFycmF5Ci0gIGJ5IHVzaW5nICdzKicgaW5zdGVhZCBvZiAndCMnLgotCi0tIElzc3VlICMyMjIyOiBGaXhlZCByZWZlcmVuY2UgbGVhayB3aGVuIG9jY3VycmVkIG9zLnJlbmFtZSgpCi0gIGZhaWxzIHVuaWNvZGUgY29udmVyc2lvbiBvbiAybmQgcGFyYW1ldGVyLiAod2luZG93cyBvbmx5KQotCi0tIElzc3VlICMyNDY0OiB1cmxsaWIyIG5vdyBzdXBwb3J0cyBhIG1hbGZvcm1hdGlvbiBpbiB0aGUgVVJMIHJlY2VpdmVkCi0gIGluIGEgcmVkaXJlY3QuCi0KLS0gU2lsZW5jZSB0aGUgRGVwcmVjYXRpb25XYXJuaW5nIHJhaXNlZCB3aGVuIGltcG9ydGluZyBtaW1ldG9vbHMgaW4KLSAgQmFzZUhUVFBTZXJ2ZXIsIGNnaSAoYW5kIHJmYzgyMiksIGh0dHBsaWIuCi0KLS0gSXNzdWUgIzI3NzY6IGZpeGVkIHNtYWxsIGlzc3VlIHdoZW4gaGFuZGxpbmcgYSBVUkwgd2l0aCBkb3VibGUgc2xhc2gKLSAgYWZ0ZXIgYSAzMDIgcmVzcG9uc2UgaW4gdGhlIGNhc2Ugb2Ygbm90IGdvaW5nIHRocm91Z2ggYSBwcm94eS4KLQotLSBJc3N1ZSAjMjY3NjogaW4gdGhlIGVtYWlsIHBhY2thZ2UsIGNvbnRlbnQtdHlwZSBwYXJzaW5nIHdhcyBoYW5naW5nIG9uCi0gIHBhdGhvbG9naWNhbCBpbnB1dCBiZWNhdXNlIG9mIHF1YWRyYXRpYyBvciBleHBvbmVudGlhbCBiZWhhdmlvdXIgb2YgYQotICByZWd1bGFyIGV4cHJlc3Npb24uCi0KLS0gSXNzdWUgIzM0NzY6IGJpbmFyeSBidWZmZXJlZCByZWFkaW5nIHRocm91Z2ggdGhlIG5ldyAiaW8iIGxpYnJhcnkgaXMgbm93Ci0gIHRocmVhZC1zYWZlLgotCi0tIFNpbGVuY2UgdGhlIERlcHJlY2F0aW9uV2FybmluZyBvZiByZmM4MjIgd2hlbiBpdCBpcyBpbXBvcnRlZCBieSBtaW1ldG9vbHMKLSAgc2luY2UgbWltZXRvb2xzIGl0c2VsZiBpcyBkZXByZWNhdGVkLiBCZWNhdXNlIG1vZHVsZXMgYXJlIGNhY2hlZCwgYWxsCi0gIHN1YnNlcXVlbnQgaW1wb3J0cyBvZiByZmM4MjIgd2lsbCBub3QgcmFpc2UgYSB2aXNpYmxlIERlcHJlY2F0aW9uV2FybmluZy4KLQotLSBJc3N1ZSAjMzEzNDogc2h1dGlsIHJlZmVyZW5jZWQgdW5kZWZpbmVkIFdpbmRvd3NFcnJvciBzeW1ib2wuCi0KLS0gSXNzdWUgIzEzNDI4MTE6IEZpeCBsZWFrIGluIFRraW50ZXIuTWVudS5kZWxldGUuIENvbW1hbmRzIGFzc29jaWF0ZWQgdG8KLSAgbWVudSBlbnRyaWVzIHdlcmUgbm90IGRlbGV0ZWQuCi0KLS0gQ29waWVkIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiByZWR1Y2UoKSB0byBfZnVuY3Rvb2xzLnJlZHVjZSgpIHRvIGhhdmUgYQotICB2ZXJzaW9uIHRoYXQgZGlkIG5vdCByYWlzZSBhIERlcHJlY2F0aW9uV2FybmluZyB1bmRlciAtMy4KLQotLSBJc3N1ZSAjMzIwNTogV2hlbiBpdGVyYXRpbmcgb3ZlciBhIEJaMkZpbGUgZmFpbHMgYWxsb2NhdGluZyBtZW1vcnksIHJhaXNlCi0gIGEgTWVtb3J5RXJyb3IgcmF0aGVyIHRoYW4gc2lsZW50bHkgc3RvcCB0aGUgaXRlcmF0aW9uLgotCi0tIElzc3VlICMzNDg3OiBzcmUgImJ5dGVjb2RlIiB2YWxpZGF0b3IuICBQYXNzaW5nIGludmFsaWQgInJlLWJ5dGVjb2RlIgotICB0byBfc3JlLmNvbXBpbGUoKSB3aWxsIG5vdyBiZSByZWplY3RlZC4gIFRoaXMgc2hvdWxkIG5vdCBhZmZlY3QgYW55Ym9keQotICBzaW5jZSB0aGUgcmUuY29tcGlsZSgpIGZ1bmN0aW9uIG5ldmVyIGdlbmVyYXRlcyBpbnZhbGlkIHJlLWJ5dGVjb2RlLgotCi0tIElzc3VlICMzNDM2OiBNYWtlIGNzdi5EaWN0UmVhZGVyJ3MgZmllbGRuYW1lcyBhdHRyaWJ1dGUgYSBwcm9wZXJ0eSBzbyB0aGF0Ci0gIHVwb24gZmlyc3QgYWNjZXNzIGl0IGNhbiBiZSBhdXRvbWF0aWNhbGx5IGluaXRpYWxpemVkIGZyb20gdGhlIGNzdiBmaWxlIGlmCi0gIGl0IHdhc24ndCBpbml0aWFsaXplZCBkdXJpbmcgaW5zdGFudGlhdGlvbi4KLQotLSBJc3N1ZSAjMjMzODogQ3JlYXRlIGltcC5yZWxvYWQoKSB0byBoZWxwIHdpdGggdHJhbnNpdGlvbmluZyB0byBQeXRob24gMy4wIGFzCi0gIHRoZSByZWxvYWQoKSBidWlsdC1pbiBoYXMgYmVlbiByZW1vdmVkLgotCi0tIENoYW5nZWQgY29kZSBpbiB0aGUgZm9sbG93aW5nIG1vZHVsZXMvcGFja2FnZXMgdG8gcmVtb3ZlIHdhcm5pbmdzIHJhaXNlZAotICB3aGlsZSBydW5uaW5nIHVuZGVyIHRoZSBgYC0zYGAgZmxhZzogYWlmYywgYXN5bmNoYXQsIGFzeW5jb3JlLCBiZGIsIGJzZGRiLAotICBDb25maWdQYXJzZXIsIGNvb2tpZWxpYiwgY3N2LCBkaWZmbGliLCBkaXN0dXRpbHMsIERvY1hNTFJQQ1NlcnZlciwgZW1haWwsCi0gIGZpbGVjbXAsIGZpbGVpbnB1dCwgaW5zcGVjdCwgbG9nZ2luZywgbW9kdWxlZmluZGVyLCBwZGIsIHBpY2tsZSwgcHJvZmlsZSwKLSAgcHN0YXRzLCBweWRvYywgcmUsIHJsY29tcGxldGVyLCBTaW1wbGVYTUxSUENTZXJ2ZXIsIHNoZWx2ZSwgc29ja2V0LAotICBzdWJwcm9jZXNzLCBzcWxpdGUzLCB0YXJmaWxlLCBUa2ludGVyLCB0ZXN0LnRlc3Rfc3VwcG9ydCwgdGV4dHdyYXAsCi0gIHRocmVhZGluZywgdG9rZW5pemUsIHRyYWNlYmFjaywgdXJscGFyc2UsIHdzZ2lyZWYsIHhtbCwgeG1scnBjbGliLgotCi0tIElzc3VlICMzMDM5OiBGaXggdGFyZmlsZS5UYXJGaWxlQ29tcGF0LndyaXRlc3RyKCkgd2hpY2ggYWx3YXlzCi0gIHJhaXNlZCBhbiBBdHRyaWJ1dGVFcnJvci4KLQotLSBJc3N1ZSAjMjUyMzogRml4IHF1YWRyYXRpYyBiZWhhdmlvdXIgd2hlbiByZWFkKClpbmcgYSBiaW5hcnkgZmlsZSB3aXRob3V0Ci0gIGFza2luZyBmb3IgYSBzcGVjaWZpYyBsZW5ndGguIFRoaXMgcHJvYmxlbSBvbmx5IGFmZmVjdGVkIGZpbGVzIG9wZW5lZAotICB1c2luZyB0aGUgbmV3ICJpbyIgbW9kdWxlLCBub3QgdGhlIGJ1aWx0LWluIG9wZW4oKSBmdW5jdGlvbi4KLQotLSBJc3N1ZSAjMzQ0OTogVXBkYXRlIGRlY2ltYWwgbW9kdWxlIHRvIHVzZSBtb3N0IHJlY2VudCBzcGVjaWZpY2F0aW9uCi0gICh2LiAxLjY4KSBhbmQgdGVzdHMgKHYuIDIuNTgpIGZyb20gSUJNLgotCi0tIElzc3VlICMzNDM3OiBCdWcgZml4IGluIHJvYm90cGFyc2VyIHBhcnNpbmcgb2YgQWxsb3c6IGxpbmVzLgotCi0tIElzc3VlICMxNTkyOiBJbXByb3ZlIGVycm9yIHJlcG9ydGluZyB3aGVuIG9wZXJhdGlvbnMgYXJlIGF0dGVtcHRlZAotICBvbiBhIGNsb3NlZCBzaGVsZi4KLQotLSBEZXByZWNhdGUgdGhlICJhc3QiIHBhcnNlciBmdW5jdGlvbiBhbGlhc2VzLgotCi0tIElzc3VlICMzMTIwOiBPbiA2NC1iaXQgV2luZG93cyB0aGUgc3VicHJvY2VzcyBtb2R1bGUgd2FzIHRydW5jYXRpbmcgaGFuZGxlcy4KLQotLSBJc3N1ZSAjMzMwMzogRml4IGEgY3Jhc2ggaW4gbG9jYWxlLnN0cmNvbGwoKSB3aGVuIGNhbGxpbmcgaXQgd2l0aAotICBpbnZhbGlkIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMzMwMjogRml4IHNldmVyYWwgY3Jhc2hlcyB3aGVuIGNhbGxpbmcgbG9jYWxlJ3MgZ2V0dGV4dCBmdW5jdGlvbnMKLSAgd2l0aCBOb25lIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMzM4OTogQWxsb3cgcmVzb2x2aW5nIGRvdHRlZCBuYW1lcyBmb3IgaGFuZGxlcnMgaW4gbG9nZ2luZwotICBjb25maWd1cmF0aW9uIGZpbGVzLgotCi0tIERlcHJlY2F0ZSB0aGUgc3VuYXVkaW8gbW9kdWxlIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gSXNzdWUgIzMzOTQ6IHppcGZpbGUud3JpdGVzdHIgc2V0cyBleHRlcm5hbCBhdHRyaWJ1dGVzIHdoZW4gcGFzc2VkIGEKLSAgZmlsZSBuYW1lIHJhdGhlciB0aGFuIGEgWmlwSW5mbyBpbnN0YW5jZSwgc28gZmlsZXMgYXJlIGV4dHJhY3RlZCB3aXRoCi0gIG1vZGUgMDYwMCByYXRoZXIgdGhhbiAwMDAgdW5kZXIgVW5peC4KLQotLSBJc3N1ZSAjMTg1Nzogc3VicHJvY2Vzcy5Qb3Blbi5wb2xsIGdhaW5lZCBhbiBhZGRpdGlvbmFsIF9kZWFkc3RhdGUga2V5d29yZAotICBhcmd1bWVudCBpbiBweXRob24gMi41LCB0aGlzIGJyb2tlIGNvZGUgdGhhdCBzdWJjbGFzc2VkIFBvcGVuIHRvIGluY2x1ZGUgaXRzCi0gIG93biBwb2xsIG1ldGhvZC4gIEZpeGVkIG15IG1vdmluZyBfZGVhZHN0YXRlIHRvIGFuIF9pbnRlcm5hbF9wb2xsIG1ldGhvZC4KLQotQnVpbGQKLS0tLS0tCi0KLS0gR2VuZXJhdGUgdGhlIFBhdHRlcm5HcmFtbWFyIHBpY2tsZSBkdXJpbmcgIm1ha2UgaW5zdGFsbCIuCi0KLURvY3VtZW50YXRpb24KLS0tLS0tLS0tLS0tLS0KLQotLSBJc3N1ZSAjMjIzNTogdGhlIEMgQVBJIGZ1bmN0aW9uIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZCBhbmQgaXRzCi0gIGludGVyYWN0aW9uIHdpdGggdGhlIHRwX2hhc2ggc2xvdCAoYWRkZWQgaW4gMi42YjIpIGFyZSBub3cgZG9jdW1lbnRlZAotCi0tIElzc3VlICM2NDM4NDE6IFRoZSBsYW5ndWFnZSByZWZlcmVuY2Ugbm93IHByb3ZpZGVzIG1vcmUgZGV0YWlsZWQKLSAgY292ZXJhZ2Ugb2YgdGhlIGxvb2t1cCBwcm9jZXNzIGZvciBzcGVjaWFsIG1ldGhvZHMuIFRoZSBkaXNjbGFpbWVycwotICByZWdhcmRpbmcgbGFjayBvZiBjb3ZlcmFnZSBvZiBuZXctc3R5bGUgY2xhc3NlcyBoYXZlIGFsc28gYmVlbgotICByZW1vdmVkLCBzaW5jZSB0aGUgY292ZXJhZ2UgaXMgbm93IGZhaXJseSByZWFzb25hYmxlLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNiBiZXRhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxNy1KdWwtMjAwOCoKLQotQ29yZSBhbmQgQnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzMxNTY6IEZpeCBpbmNvbnNpc3RlbnQgYmVoYXZpb3Igb2YgdGhlIGJ5dGVhcnJheSB0eXBlOiBhbGwKLSAgaXRzIG1ldGhvZHMgbm93IGFsbG93IGZvciBpdGVtcyBvYmplY3RzIHRoYXQgY2FuIGJlIGNvbnZlcnRlZCB0bwotICBhbiBpbnRlZ2VyIHVzaW5nIG9wZXJhdG9yLmluZGV4KCkuCi0KLS0gSXNzdWUgIzMzNjA6IEZpeCBpbmNvcnJlY3QgcGFyc2luZyBvZiAnMDIwMDAwMDAwMDAwLjAnLCB3aGljaAotICBwcm9kdWNlZCBhIFZhbHVlRXJyb3IgaW5zdGVhZCBvZiBnaXZpbmcgdGhlIGNvcnJlY3QgZmxvYXQuCi0KLS0gSXNzdWUgIzMwODM6IEFkZCBhbHRlcm5hdGUgKCMpIGZvcm1hdHRpbmcgZm9yIGJpbiwgb2N0LCBoZXggb3V0cHV0Ci0gIGZvciBzdHIuZm9ybWF0KCkuICBUaGlzIGFkZHMgdGhlIHByZWZpeCAwYiwgMG8sIG9yIDB4LCByZXNwZWN0aXZlbHkuCi0KLS0gSXNzdWUgIzMwMDg6IHRoZSBmbG9hdCB0eXBlIGhhcyBhIG5ldyBpbnN0YW5jZSBtZXRob2QgJ2Zsb2F0LmhleCcKLSAgYW5kIGEgbmV3IGNsYXNzIG1ldGhvZCAnZmxvYXQuZnJvbWhleCcgdG8gY29udmVydCBmbG9hdGluZy1wb2ludAotICBudW1iZXJzIHRvIGFuZCBmcm9tIGhleGFkZWNpbWFsIHN0cmluZ3MsIHJlc3BlY3RpdmVseS4KLQotLSBJc3N1ZSAjMjIzNTogX19oYXNoX18gaXMgb25jZSBhZ2FpbiBpbmhlcml0ZWQgYnkgZGVmYXVsdC4gVG8gYWxsb3cKLSAgY29sbGVjdGlvbnMuSGFzaGFibGUgdG8gcmVtYWluIG1lYW5pbmdmdWwgaW4gdGhlIHByZXNlbmNlIG9mIHRoZQotICBkZWZhdWx0IGhhc2ggaW1wbGVtZW50YXRpb24gKG9iamVjdC5fX2hhc2hfXyksIGl0IGlzIG5vdyBwb3NzaWJsZQotICB0byBleHBsaWNpdCBibG9jayBpbmhlcml0YW5jZSBvZiBoYXNoIGJ5IHNldHRpbmcgX19oYXNoX189Tm9uZSBhdAotICB0aGUgUHl0aG9uIGxldmVsLCBvciB0cF9oYXNoPVB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZCBhdCB0aGUgQwotICBsZXZlbC4KLQotLSBJc3N1ZSAjMzIyMTogSXNzdWUgYSBSdW50aW1lV2FybmluZyBpbnN0ZWFkIG9mIHJhaXNpbmcgU3lzdGVtRXJyb3IgaWYKLSAgdGhlIHBhcmVudCBtb2R1bGUgY2Fubm90IGJlIGZvdW5kIHdoaWxlIHBlcmZvcm1pbmcgYW4gYWJzb2x1dGUgaW1wb3J0LgotICBUaGlzIG1lYW5zIHRoYXQgYW4gaW5jb3JyZWN0bHkgZGVmaW5lZCBfX3BhY2thZ2VfXyBhdHRyaWJ1dGUgd2lsbAotICBub3cgb25seSBwcmV2ZW50IHJlbGF0aXZlIGltcG9ydHMgaW4gdGhhdCBtb2R1bGUgcmF0aGVyIHRoYW4gY2F1c2luZwotICBhbGwgaW1wb3J0cyBmcm9tIHRoYXQgbW9kdWxlIHRvIGZhaWwuCi0KLS0gSXNzdWUgIzI1MTc6IEFsbG93IHVuaWNvZGUgbWVzc2FnZXMgaW4gRXhjZXB0aW9ucyBhZ2FpbiBieSBjb3JyZWN0bHkKLSAgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IHdoZW4gbG9va2luZyB1cCBfX3VuaWNvZGVfXyBvbgotICBuZXctc3R5bGUgY2xhc3Nlcy4KLQotLSBJc3N1ZSAjMzI0MjogRml4IGEgY3Jhc2ggaW5zaWRlIHRoZSBwcmludCBzdGF0ZW1lbnQsIGlmIHN5cy5zdGRvdXQgaXMKLSAgc2V0IHRvIGEgY3VzdG9tIG9iamVjdCB3aG9zZSB3cml0ZSgpIG1ldGhvZCBoYXBwZW5zIHRvIGluc3RhbGwKLSAgYW5vdGhlciBmaWxlIGluIHN5cy5zdGRvdXQuCi0KLS0gSXNzdWUgIzMwODg6IENvcnJlY3RlZCBhIHJhY2UgY29uZGl0aW9uIGluIGNsYXNzZXMgZGVyaXZlZCBmcm9tCi0gIHRocmVhZGluZy5sb2NhbDogdGhlIGZpcnN0IG1lbWJlciBzZXQgYnkgYSB0aHJlYWQgY291bGQgYmUgc2F2ZWQgaW4KLSAgYW5vdGhlciB0aHJlYWQncyBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICMzMDA0OiBNaW5vciBjaGFuZ2UgdG8gc2xpY2UuaW5kaWNlcygpOiB0aGUgc3RhcnQgYW5kIHN0b3AKLSAgYXJndW1lbnRzIGFyZSBub3cgdHJlYXRlZCBpZGVudGljYWxseSwgbWFraW5nIHRoZSBiZWhhdmlvdXIgZWFzaWVyCi0gIHRvIGRlc2NyaWJlIGFuZCB1bmRlcnN0YW5kLiAgRm9yIGV4YW1wbGUsIHNsaWNlKE5vbmUsIC0xMCwKLSAgMSkuaW5kaWNlcyg5KSBub3cgcmV0dXJucyAoMCwgMCwgMSkgaW5zdGVhZCBvZiAoMCwgLTEsIDEpLCBhbmQKLSAgc2xpY2UoTm9uZSwgMTAsIC0xKS5pbmRpY2VzKDEwKSByZXR1cm5zICg5LCA5LCAtMSkgaW5zdGVhZCBvZiAoOSwKLSAgMTAsIC0xKS4KLQotLSBJc3N1ZSAjMzIxOTogQ2FsbGluZyBhIGZ1bmN0aW9uIHdpdGggcmVwZWF0ZWQga2V5d29yZCBhcmd1bWVudHMsCi0gIGYoYT0yLCBhPTIzKSwgd291bGQgbm90IGNhdXNlIGEgc3ludGF4IGVycm9yLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uCi0gIGZyb20gMi40IGNhdXNlZCBieSB0aGUgc3dpdGNoIHRvIHRoZSBuZXcgY29tcGlsZXIuCi0KLS0gSXNzdWUgIzI4NjI6IE1ha2UgaW50IGFuZCBmbG9hdCBmcmVlbGlzdCBtYW5hZ2VtZW50IGNvbnNpc3RlbnQgd2l0aAotICBvdGhlciBmcmVlbGlzdHMuICBDaGFuZ2VzIHRoZWlyIENvbXBhY3RGcmVlTGlzdCBhcGlzIGludG8KLSAgQ2xlYXJGcmVlTGlzdCBhcGlzIGFuZCBjYWxscyB0aGVtIHZpYSBnYy5jb2xsZWN0KCkuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBJc3N1ZSAjMzU1NDogY3R5cGVzLnN0cmluZ19hdCBhbmQgY3R5cGVzLndzdHJpbmdfYXQgZGlkIGNhbGwgUHl0aG9uCi0gIGFwaSBmdW5jdGlvbnMgd2l0aG91dCBob2xkaW5nIHRoZSBHSUwsIHdoaWNoIGNvdWxkIGxlYWQgdG8gYSBmYXRhbAotICBlcnJvciB3aGVuIHRoZXkgZmFpbGVkLgotCi0tIElzc3VlICM3OTk0Mjg6IEZpeCBUa2ludGVyLk1pc2MuX25hbWV0b3dpZGdldCB0byB1bndyYXAgVGNsIGNvbW1hbmQgb2JqZWN0cy4KLQotLSBJc3N1ZSAjMzM5NTogZml4IHJlZmVyZW5jZSBpbiB0ZXN0X211bHRpcHJvY2Vzc2luZyB0byBvbGQgZGVidWdJbmZvIG1ldGhvZAotCi0tIElzc3VlICMzMzEyOiBGaXggdHdvIGNyYXNoZXMgaW4gc3FsaXRlMy4KLQotLSBJc3N1ZSAjMTYwODgxODogRml4IG1pc2JlaGF2aW9yIGluIG9zLmxpc3RkaXIoKSBpZiByZWFkZGlyKCkgZmFpbHMuCi0KLS0gSXNzdWUgIzMxMjU6IFJlbW92ZSBjb3B5X3JlZyBpbiBtdWx0aXByb2Nlc3NpbmcgYW5kIHJlcGxhY2UgaXQgd2l0aAotICBGb3JraW5nUGlja2xlci5yZWdpc3RlcigpIHRvIHJlc29sdmUgY29uZmxpY3Qgd2l0aCBjdHlwZXMuCi0KLS0gSXNzdWUgIzMwOTA6IEZpeGVkIEFSQ0hGTEFHUyBwYXJzaW5nIG9uIE9TL1gKLQotLSBJc3N1ZSAjMzMxMzogRml4ZWQgYSBjcmFzaCB3aGVuIGEgZmFpbGVkIGRsb3BlbigpIGNhbGwgZG9lcyBub3Qgc2V0Ci0gIGEgdmFsaWQgZGxlcnJvcigpIG1lc3NhZ2UuCi0KLS0gSXNzdWUgIzMyNTg6IEZpeGVkIGEgY3Jhc2ggd2hlbiBhIGN0eXBlcyBQT0lOVEVSIHR5cGUgdG8gYW4KLSAgaW5jb21wbGV0ZSBzdHJ1Y3R1cmUgd2FzIGNyZWF0ZWQuCi0KLS0gSXNzdWUgIzMzMzk6IGR1bW15X3RocmVhZC5hY3F1aXJlKCkgc2hvdWxkIG5vdCByZXR1cm4gTm9uZS4KLQotLSBJc3N1ZSAjMzI4NTogRnJhY3Rpb25zIGZyb21fZmxvYXQoKSBhbmQgZnJvbV9kZWNpbWFsKCkgYWNjZXB0IEludGVncmFsIGFyZ3VtZW50cy4KLQotLSBJc3N1ZSAjMzMwMTogQmlzZWN0IG1vZHVsZSBiZWhhdmVkIGJhZGx5IHdoZW4gbG8gd2FzIG5lZ2F0aXZlLgotCi0tIElzc3VlICM4Mzk0OTY6IFNpbXBsZUhUVFBTZXJ2ZXIgdXNlZCB0byBvcGVuIHRleHQgZmlsZXMgaW4gdGV4dCBtb2RlLiBUaGlzIGlzCi0gIGJvdGggdW5uZWNlc3NhcnkgKEhUVFAgYWxsb3dzIHRleHQgY29udGVudCB0byBiZSBzZW50IGluIHNldmVyYWwgZm9ybXMpIGFuZAotICB3cm9uZyBiZWNhdXNlIHRoZSBhY3R1YWwgdHJhbnNtaXR0ZWQgc2l6ZSBjb3VsZCBkaWZmZXIgZnJvbSB0aGUKLSAgY29udGVudC1sZW5ndGguICBUaGUgcHJvYmxlbSBoYWQgYmVlbiBjb3JyZWN0ZWQgaW4gdGhlIDIuNCBicmFuY2gsIGJ1dCBuZXZlcgotICBtZXJnZWQgaW50byB0cnVuay4KLQotLSBJc3N1ZSAjMjY2MzogYWRkIGZpbHRlcmluZyBjYXBhYmlsaXR5IHRvIHNodXRpbC5jb3B5dHJlZSgpLgotCi0tIElzc3VlICMxNjIyOiBDb3JyZWN0IGludGVycHJldGF0aW9uIG9mIHZhcmlvdXMgWklQIGhlYWRlciBmaWVsZHMuCi0KLS0gSXNzdWUgIzE1MjY6IEFsbG93IG1vcmUgdGhhbiA2NGsgZmlsZXMgdG8gYmUgYWRkZWQgdG8gWmlwNjQgZmlsZS4KLQotLSBJc3N1ZSAjMTc0NjogQ29ycmVjdCBoYW5kbGluZyBvZiB6aXBmaWxlIGFyY2hpdmUgY29tbWVudHMgKHByZXZpb3VzbHkKLSAgYXJjaGl2ZXMgd2l0aCBjb21tZW50cyBvdmVyIDRrIHdlcmUgZmxhZ2dlZCBhcyBpbnZhbGlkKS4gQWxsb3cgd3JpdGluZwotICBaaXAgZmlsZXMgd2l0aCBhcmNoaXZlcyBieSBzZXR0aW5nIHRoZSAnY29tbWVudCcgYXR0cmlidXRlIG9mIGEgWmlwRmlsZS4KLQotLSBJc3N1ZSAjNDQ5MjI3OiBUaGUgcmxjb21wbGV0ZXIgbW9kdWxlIG5vdyBhZGRzICIoIiB0byBjYWxsYWJsZSBvYmplY3RzCi0gIHdoZW4gY29tcGxldGVkLgotCi0tIElzc3VlICMzMTkwOiBQeWRvYyBub3cgaGlkZXMgdGhlIGF1dG9tYXRpYyBtb2R1bGUgYXR0cmlidXRlIF9fcGFja2FnZV9fICh0aGUKLSAgaGFuZGxpbmcgaXMgbm93IHRoZSBzYW1lIGFzIHRoYXQgb2Ygb3RoZXIgc3BlY2lhbCBhdHRyaWJ1dGVzIGxpa2UgX19uYW1lX18pLgotCi0tIElzc3VlICMyODg1IChwYXJ0aWFsKTogVGhlIHVybGxpYi51cmxvcGVuKCkgZnVuY3Rpb24gaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IKLSAgcmVtb3ZhbCBpbiBQeXRob24gMy4wIGluIGZhdm9yIG9mIHVybGxpYjIudXJsb3BlbigpLgotCi0tIElzc3VlICMyMTEzOiBGaXggZXJyb3IgaW4gc3VicHJvY2Vzcy5Qb3BlbiBpZiB0aGUgc2VsZWN0IHN5c3RlbSBjYWxsIGlzCi0gIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsLgotCi0tIElzc3VlICMzMzA5OiBGaXggYnoyLkJaRmlsZSBpdGVyYXRvciB0byByZWxlYXNlIGl0cyBpbnRlcm5hbCBsb2NrCi0gIHByb3Blcmx5IHdoZW4gcmFpc2luZyBhbiBleGNlcHRpb24gZHVlIHRvIHRoZSBiejJmaWxlIGJlaW5nIGNsb3NlZC4KLSAgUHJldmVudHMgYSBkZWFkbG9jay4KLQotLSBJc3N1ZSAjMzA5NDogaHR0cGxpYi5IVFRQU0Nvbm5lY3Rpb24gSG9zdDogaGVhZGVycyBubyBsb25nZXIgaW5jbHVkZSB0aGUKLSAgcmVkdW5kYW50ICI6NDQzIiBwb3J0IG51bWJlciBkZXNpZ25hdGlvbiB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIHVzaW5nIHRoZQotICBkZWZhdWx0IGh0dHBzIHBvcnQgKDQ0MykuCi0KLS0gSXNzdWUgIzg3NDkwMDogYWZ0ZXIgYW4gb3MuZm9yaygpIGNhbGwgdGhlIHRocmVhZGluZyBtb2R1bGUgc3RhdGUgaXMgY2xlYW5lZAotICB1cCBpbiB0aGUgY2hpbGQgcHJvY2VzcyB0byBwcmV2ZW50IGRlYWRsb2NrIGFuZCByZXBvcnQgcHJvcGVyIHRocmVhZCBjb3VudHMKLSAgaWYgdGhlIG5ldyBwcm9jZXNzIHVzZXMgdGhlIHRocmVhZGluZyBtb2R1bGUuCi0KLVRlc3RzCi0tLS0tLQotCi0tIHRlc3QudGVzdF9zdXBwb3J0LmNhdGNoX3dhcm5pbmcgbm93IGtlZXBzIHRyYWNrIG9mIGFsbCB3YXJuaW5ncyBpdCBzZWVzCi0gIGFuZCBpcyBub3cgYmV0dGVyIGRvY3VtZW50ZWQuIEV4cGxpY2l0IHVuaXQgdGVzdHMgZm9yIHRoaXMgY29udGV4dCBtYW5hZ2VyCi0gIGhhdmUgYmVlbiBhZGRlZCB0byB0ZXN0X3dhcm5pbmdzLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMzIxNTogQnVpbGQgc3FsaXRlMyBhcyBzcWxpdGUzLmRsbCwgbm90IHNxbGl0ZTMucHlkLgotCi1Eb2N1bWVudGF0aW9uCi0tLS0tLS0tLS0tLS0tCi0KLS0gRG9jdW1lbnQgdGhhdCByb2JvdHBhcnNlciBoYXMgYmVlbiByZW5hbWVkIHRvIHVybGxpYi5yb2JvdHBhcnNlciBpbgotICBQeXRob24gMy4wLgotCi0tIERvY3VtZW50IHRoYXQgdXJscGFyc2UgaGFzIGJlZW4gcmVuYW1lZCB0byB1cmxsaWIucGFyc2UgaW4gUHl0aG9uIDMuMC4KLQotLSBEb2N1bWVudCB0aGF0IHVybGxpYjIgaXMgc3BsaXQgYWNyb3NzIG11bHRpcGxlIG1vZHVsZXMgYW5kIHJlbmFtZWQgaW4KLSAgUHl0aG9uIDMuMC4KLQotLSBEb2N1bWVudCB0aGF0IHVybGxpYiBpcyBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUgbW9kdWxlcyBhbmQgcmVuYW1lZCBpbgotICBQeXRob24gMy4wLgotCi0KLVdoYXQncyBOZXcgaW4gUHl0aG9uIDIuNiBiZXRhIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAxOC1KdW5lLTIwMDgqCi0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMzMjExOiB3YXJuaW5ncy53YXJuX2V4cGxpY2l0KCkgZGlkIG5vdCBndWFyZCBhZ2FpbnN0IGl0cyAncmVnaXN0cnknCi0gIGFyZ3VtZW50IGJlaW5nIGFueXRoaW5nIG90aGVyIHRoYW4gYSBkaWN0IG9yIE5vbmUuIEFsc28gZml4ZWQgYSBidWcgaW4gZXJyb3IKLSAgaGFuZGxpbmcgd2hlbiAnbWVzc2FnZScgYW5kICdjYXRlZ29yeScgd2VyZSBib3RoIHNldCB0byBOb25lLCB0cmlnZ2VyaW5nIGEKLSAgYnVzIGVycm9yLgotCi0tIElzc3VlICMzMTAwOiBDb3JyZWN0ZWQgYSBjcmFzaCBvbiBkZWFsbG9jYXRpb24gb2YgYSBzdWJjbGFzc2VkIHdlYWtyZWYgd2hpY2gKLSAgaG9sZHMgdGhlIGxhc3QgKHN0cm9uZykgcmVmZXJlbmNlIHRvIGl0cyByZWZlcmVudC4KLQotLSBBZGQgZnV0dXJlX2J1aWx0aW5zLmFzY2lpKCkuCi0KLS0gU2V2ZXJhbCBzZXQgbWV0aG9kcyBub3cgYWNjZXB0IG11bHRpcGxlIGFyZ3VtZW50czogdXBkYXRlKCksIHVuaW9uKCksCi0gIGludGVyc2VjdGlvbigpLCBpbnRlcnNlY3Rpb25fdXBkYXRlKCksIGRpZmZlcmVuY2UoKSwgYW5kIGRpZmZlcmVuY2VfdXBkYXRlKCkuCi0KLS0gSXNzdWUgIzI4OTg6IEFkZGVkIHN5cy5nZXRzaXplb2YoKSB0byByZXRyaWV2ZSBzaXplIG9mIG9iamVjdHMgaW4gYnl0ZXMuCi0KLS0gTmV3IGVudmlyb25tZW50IHZhcmlhYmxlIFBZVEhPTklPRU5DT0RJTkcuCi0KLS0gUGF0Y2ggIzI0ODg6IEFkZCBzeXMubWF4c2l6ZS4KLQotLSBJc3N1ZSAjMjM1MzogZmlsZS54cmVhZGxpbmVzKCkgbm93IGVtaXRzIGEgUHkzayB3YXJuaW5nLgotCi0tIElzc3VlICMyODYzOiBnZW5lcmF0b3JzIG5vdyBoYXZlIGEgYGBnZW4uX19uYW1lX19gYCBhdHRyaWJ1dGUgdGhhdAotICBlcXVhbHMgYGBnZW4uZ2lfY29kZS5jb19uYW1lYGAsIGxpa2UgYGBmdW5jLl9fbmFtZV9fX2BgIHRoYXQgZXF1YWxzCi0gIGBgZnVuYy5mdW5jX2NvZGUuY29fbmFtZWBgLiAgVGhlIHJlcHIoKSBvZiBhIGdlbmVyYXRvciBub3cgYWxzbwotICBjb250YWlucyB0aGlzIG5hbWUuCi0KLS0gSXNzdWUgIzI4MzE6IGVudW1lcmF0ZSgpIG5vdyBoYXMgYSBgYHN0YXJ0YGAgYXJndW1lbnQuCi0KLS0gSXNzdWUgIzI4MDE6IGZpeCBidWcgaW4gdGhlIGZsb2F0LmlzX2ludGVnZXIgbWV0aG9kIHdoZXJlIGEKLSAgVmFsdWVFcnJvciB3YXMgc29tZXRpbWVzIGluY29ycmVjdGx5IHJhaXNlZC4KLQotLSBJc3N1ZSAjMjc5MDogc3lzLmZsYWdzIHdhcyBub3QgcHJvcGVybHkgZXhwb3NpbmcgaXRzIGJ5dGVzX3dhcm5pbmcKLSAgYXR0cmlidXRlLgotCi0tIElzc3VlICMyMTk2OiBoYXNhdHRyKCkgbm93IGxldHMgZXhjZXB0aW9ucyB3aGljaCBkbyBub3QgaW5oZXJpdAotICBFeGNlcHRpb24gKEtleWJvYXJkSW50ZXJydXB0LCBhbmQgU3lzdGVtRXhpdCkgcHJvcGFnYXRlIGluc3RlYWQgb2YKLSAgaWdub3JpbmcgdGhlbS4KLQotLSBBZGRlZCBjaGVja3MgZm9yIGludGVnZXIgb3ZlcmZsb3dzLCBjb250cmlidXRlZCBieSBHb29nbGUuIFNvbWUgYXJlCi0gIG9ubHkgYXZhaWxhYmxlIGlmIGFzc2VydHMgYXJlIGxlZnQgaW4gdGhlIGNvZGUsIGluIGNhc2VzIHdoZXJlIHRoZXkKLSAgY2FuJ3QgYmUgdHJpZ2dlcmVkIGZyb20gUHl0aG9uIGNvZGUuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotLSBJc3N1ZSAjMTE3OTogW0NWRS0yMDA3LTQ5NjVdIEludGVnZXIgb3ZlcmZsb3cgaW4gaW1hZ2VvcCBtb2R1bGUuCi0KLS0gSXNzdWUgIzMxMTY6IG1hcnNoYWwuZHVtcHMoKSBoYWQgcXVhZHJhdGljIGJlaGF2aW9yIGZvciBzdHJpbmdzID4gMzJNYi4KLQotLSBJc3N1ZSAjMjEzODogQWRkIGZhY3RvcmlhbCgpIHRvIHRoZSBtYXRoIG1vZHVsZS4KLQotLSBUaGUgaGVhcHEgbW9kdWxlIGRvZXMgY29tcGFyaXNvbnMgdXNpbmcgTFQgaW5zdGVhZCBvZiBMRS4gIFRoaXMKLSAgbWFrZXMgaXRzIGltcGxlbWVudGF0aW9uIG1hdGNoIHRoYXQgdXNlZCBieSBsaXN0LnNvcnQoKS4KLQotLSBJc3N1ZSAjMjgxOTogYWRkIGZ1bGwtcHJlY2lzaW9uIHN1bW1hdGlvbiBmdW5jdGlvbiB0byBtYXRoIG1vZHVsZSwKLSAgYmFzZWQgb24gSGV0dGluZ2VyJ3MgQVNQTiBQeXRob24gQ29va2Jvb2sgcmVjaXBlLgotCi0tIElzc3VlICMyNTkyOiBkZWxlZ2F0ZSBuYl9pbmRleCBhbmQgdGhlIGZsb29yL3RydWVkaXYgc2xvdHMgaW4KLSAgd2Vha3JlZi5wcm94eS4KLQotLSBTdXBwb3J0IG9zLk9fQVNZTkMgYW5kIGZjbnRsLkZBU1lOQyBpZiB0aGUgY29uc3RhbnRzIGV4aXN0IG9uIHRoZQotICBwbGF0Zm9ybS4KLQotLSBTdXBwb3J0IGZvciBXaW5kb3dzIDl4IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgd2luc291bmQgbW9kdWxlLgotCi0tIGJzZGRiIG1vZHVsZSB1cGRhdGVkIHRvIHZlcnNpb24gNC43LjMuCi0gIGh0dHA6Ly93d3cuamNlYS5lcy9wcm9ncmFtYWNpb24vcHlic2RkYi5odG0jYnNkZGIzLTQuNy4zLiBUaGlzCi0gIGNvZGUgc2hvdWxkIGJlIGNvbXBhdGlibGUgd2l0aCBQeXRob24gMy4wLgotCi0tIElzc3VlICMyODU4OiBGaXggcG90ZW50aWFsIG1lbW9yeSBjb3JydXB0aW9uIHdoZW4KLSAgYnNkZGIuZGIuREJFbnYubG9ja19nZXQgYW5kIG90aGVyIGJzZGRiLmRiIG9iamVjdCBjb25zdHJ1Y3RvcnMKLSAgcmFpc2VkIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMjY2OTogYnNkZGIvX19pbml0X18ucHkgaXRlcmF0aW9uIG5vIGxvbmdlciBzaWxlbnRseSBmYWlscyB3aGVuCi0gIHRoZSBkYXRhYmFzZSBoYXMgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24uICBJdCBub3cgcmFpc2VzIGEKLSAgUnVudGltZUVycm9yIGluIHRoZSBzYW1lIG1hbm5lciBhcyBhIGRpY3Rpb25hcnkuCi0KLS0gSXNzdWUgIzI4NzA6IGNtYXRobW9kdWxlLmMgY29tcGlsZSBlcnJvci4KLQotLSBBZGRlZCBhIHRocmVhZGluZy5UaHJlYWQuaWRlbnQgcHJvcGVydHkuCi0KLUxpYnJhcnkKLS0tLS0tLS0KLQotLSBsb2dnaW5nLmNvbmZpZzogUmVtb3ZlZCBvdXQtb2YtZGF0ZSBjb21tZW50IGluIF9pbnN0YWxsX2hhbmRsZXJzIGFuZAotICB1c2VkIGlzc3ViY2xhc3MgaW4gcGxhY2Ugb2YgZXF1YWxpdHkgY29tcGFyaXNvbiBvZiBjbGFzc2VzLgotCi0tIElzc3VlICMyNzIyOiBOb3cgdGhlIG9zLmdldGN3ZCgpIHN1cHBvcnRzIHZlcnkgbG9uZyBwYXRoIG5hbWVzLgotCi0tIElzc3VlICMyODg4OiBGaXhlZCB0aGUgYmVoYXZpb3VyIG9mIHBwcmludCB3aGVuIHdvcmtpbmcgd2l0aCBuZXN0ZWQKLSAgc3RydWN0dXJlcywgdG8gbWF0Y2ggdGhlIGJlaGF2aW91ciBvZiAyLjUgYW5kIDMuMCAobm93IGZvbGxvd3MgdGhlIGNvbW1vbgotICBzZW5zZSkuCi0KLS0gSXNzdWUgIzE4MTc6IGNnaSBub3cgY29ycmVjdGx5IGhhbmRsZXMgdGhlIHF1ZXJ5c3RyaW5nIG9uIFBPU1QgcmVxdWVzdHMKLQotLSBJc3N1ZSAjMzEzNjogZmlsZUNvbmZpZygpJ3MgZGlzYWJsaW5nIG9mIG9sZCBsb2dnZXJzIGlzIG5vdyBjb25kaXRpb25hbCB2aWEKLSAgYW4gb3B0aW9uYWwgZGlzYWJsZV9leGlzdGluZ19sb2dnZXJzIHBhcmFtZXRlciwgYnV0IHRoZSBkZWZhdWx0IHZhbHVlIGlzCi0gIHN1Y2ggdGhhdCB0aGUgb2xkIGJlaGF2aW91ciBpcyBwcmVzZXJ2ZWQuIFRoYW5rcyB0byBMZWFuZHJvIEx1Y2FyZWxsYSBmb3IKLSAgdGhlIHBhdGNoLgotCi0tIElzc3VlICMzMTI2OiBTdHJlYW1IYW5kbGVyIGFuZCBGaWxlSGFuZGxlciBjaGVjayBiZWZvcmUgY2FsbGluZyAiZmx1c2giIGFuZAotICAiY2xvc2UiIHRoYXQgdGhlIHN0cmVhbSBvYmplY3QgaGFzIHRoZXNlLCB1c2luZyBoYXNhdHRyICh0aGFua3MgdG8gYm9iZiBmb3IKLSAgdGhlIHBhdGNoKS4KLQotLSBJc3N1ZSAjMjkxMjogcGxhdGZvcm0udW5hbWUgbm93IHRyaWVzIHRvIGRldGVybWluZSB1bmtub3duIGluZm9ybWF0aW9uIGV2ZW4gaWYKLSAgb3MudW5hbWUgZXhpc3RzLgotCi0tIFRoZSByZmM4MjIgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gMy4wLgotCi0tIFRoZSBtaW1ldG9vbHMgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gMy4wLgotCi0tIFRoZSBjdHlwZXMuYnlyZWYgZnVuY3Rpb24gbm93IHRha2VzIGFuIG9wdGlvbmFsIHNlY29uZCBwYXJhbWV0ZXIKLSAgd2hpY2ggc3BlY2lmaWVzIGFuIG9mZnNldCBpbiBieXRlcyBmb3IgdGhlIGNvbnN0cnVjdGVkIHBvaW50ZXItbGlrZSBvYmplY3QuCi0KLS0gQWRkZWQgdGhlIGFzdCBtb2R1bGUuCi0KLS0gQWRkZWQgdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUsIFBFUCAzNzEuCi0KLS0gRmFjdG9yZWQgb3V0IHRoZSBpbmRlbnRhdGlvbiBjbGVhbmluZyBmcm9tIGluc3BlY3QuZ2V0ZG9jKCkgaW50bwotICBpbnNwZWN0LmNsZWFuZG9jKCkgdG8gZWFzZSBzdGFuZGFsb25lIHVzZS4KLQotLSBJc3N1ZSAjMTc5ODogQWRkIGN0eXBlcyBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBhbGxvd3Mgc2FmZSBhY2Nlc3MKLSAgdG8gZXJybm8uCi0KLS0gSXNzdWUgIzI0MDQ6IGN0eXBlcyBvYmplY3RzIHN1cHBvcnQgdGhlIG5ldyBwZXAzMTE4IGJ1ZmZlciBpbnRlcmZhY2UuCi0KLS0gUGF0Y2ggIzIxMjU6IEFkZCBHZXRJbnRlZ2VyIGFuZCBHZXRTdHJpbmcgbWV0aG9kcyBmb3IKLSAgbXNpbGliLlJlY29yZCBvYmplY3RzLgotCi0tIElzc3VlICMyNzgyOiBUaGUgZGF0ZXRpbWUgbW9kdWxlJ3Mgc3RyZnRpbWUgbWV0aG9kcyBub3cgYWNjZXB0Ci0gIHVuaWNvZGUgZm9ybWF0IHN0cmluZ3MganVzdCBhcyB0aW1lLnN0cmZ0aW1lIGFsd2F5cyBoYXMuCi0KLS0gVGhlIHNnbWxsaWIgYW5kIGh0bWxsaWIgbW9kdWxlcyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbAotICBpbiBQeXRob24gMy4wLgotCi0tIElzc3VlICMzMDExOiBsb2NhbGUgbW9kdWxlIGFsaWFzIHRhYmxlIHdhcyB1cGRhdGVkIHRvIHRoZSBsYXRlc3QKLSAgdmVyc2lvbiBmcm9tIHRoZSBYLm9yZyBsb2NhbGUuYWxpYXMgZmlsZS4KLQotLSBJc3N1ZSAjMTc5NyAocGFydGlhbCBmaXgpOiBjdHlwZXMgTlVMTCBmdW5jdGlvbiBwb2ludGVycyBoYXZlIGEKLSAgRmFsc2UgYm9vbGVhbiB2YWx1ZSBub3cuCi0KLS0gSXNzdWUgIzI5ODU6IEFsbG93IDY0LWJpdCBpbnRlZ2VyIHJlc3BvbnNlcyAoYGA8aTg+YGApIGluIFhNTFJQQwotICB0cmFuc2ZlcnMuCi0KLS0gSXNzdWUgIzI4Nzc6IFRoZSBVc2VyU3RyaW5nLk11dGFibGVTdHJpbmcgY2xhc3MgaGFzIGJlZW4gcmVtb3ZlZCBpbgotICBQeXRob24gMy4wLgotCi0tIERvIG5vdCBjbG9zZSBleHRlcm5hbCBmaWxlIG9iamVjdHMgcGFzc2VkIHRvIHRhcmZpbGUub3Blbihtb2RlPSd3OmJ6MicpCi0gIHdoZW4gdGhlIFRhckZpbGUgaXMgY2xvc2VkLgotCi0tIElzc3VlICMyOTU5OiBGb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBmaWxlLWxpa2Ugb2JqZWN0cywgZ3ppcCdzCi0gIEd6aXBGaWxlLmNsb3NlKCkgY2FuIG5vdyBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aG91dCByYWlzaW5nCi0gIGFuIGV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMTM5MDogUmFpc2UgVmFsdWVFcnJvciBpbiB0b3htbCB3aGVuIGFuIGludmFsaWQgY29tbWVudCB3b3VsZAotICBvdGhlcndpc2UgYmUgcHJvZHVjZWQuCi0KLS0gSXNzdWUgIzI5MTQ6IFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciBub3cgdGFrZXMgYW4gb3B0aW9uYWwga2V5d29yZAotICBhcmd1bWVudCAidXRjIiB0byB1c2UgVVRDIHRpbWUgcmF0aGVyIHRoYW4gbG9jYWwgdGltZS4KLQotLSBJc3N1ZSAjMjkyOTogVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyIHdhcyB1c2luZyB0aGUgd3JvbmcgcGF0aCB3aGVuCi0gIGRlbGV0aW5nIG9sZCBsb2cgZmlsZXMgKGZpbGVuYW1lIG9ubHkgaW5zdGVhZCBvZiBmdWxsIHBhdGgpLgotCi0tIElzc3VlICMxNzc1MDI1OiBZb3UgY2FuIG5vdyBzcGVjaWZ5IHppcGZpbGUgbWVtYmVycyB0byBvcGVuKCksCi0gIHJlYWQoKSBvciBleHRyYWN0KCkgdmlhIGEgWmlwSW5mbyBpbnN0YW5jZS4gIFRoaXMgYWxsb3dzIGhhbmRsaW5nCi0gIGR1cGxpY2F0ZSBmaWxlbmFtZXMgaW4gemlwZmlsZXMuCi0KLS0gSXNzdWUgIzk2MTgwNTogRml4IFRleHQuZWRpdF9tb2RpZmllZCgpIGluIFRraW50ZXIuCi0KLS0gSXNzdWUgIzE3OTM6IEZ1bmN0aW9uIGN0eXBlcy51dGlsLmZpbmRfbXN2Y3J0KCkgYWRkZWQgdGhhdCByZXR1cm5zCi0gIHRoZSBuYW1lIG9mIHRoZSBDIHJ1bnRpbWUgbGlicmFyeSB0aGF0IFB5dGhvbiB1c2VzLgotICBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkobmFtZSkgbm93IGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIG5hbWUgaXMKLSAgJ20nIG9yICdjJy4KLQotLSBUaGUgc3RhdHZmcyBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgotCi0tIFRoZSBzdW5hdWRpb2RldiBhbmQgU1VOQVVESU9ERVYgbW9kdWxlcyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IKLSAgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgotCi0tIFRoZSBXQUlUIG1vZHVsZSBmcm9tIElSSVggaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24KLSAgMy4wLgotCi0tIFRoZSB0b3JnYiBtb2R1bGUgZnJvbSBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uCi0gIDMuMC4KLQotLSBUaGUgU1YgbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbgotICAzLjAuCi0KLS0gVGhlIHJlYWRjZCBtb2R1bGUgZnJvbSBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4KLSAgUHl0aG9uIDMuMC4KLQotLSBUaGUgcGFuZWxwYXJzZXIgbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluCi0gIFB5dGhvbiAzLjAuCi0KLS0gVGhlIHBhbmVsIG1vZHVsZSBmcm9tIElSSVggaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24KLSAgMy4wLgotCi0tIFRoZSBqcGVnIG1vZHVsZSBmcm9tIElSSVggaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24KLSAgMy4wLgotCi0tIFRoZSBJT0NUTCBtb2R1bGUgZnJvbSBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uCi0gIDMuMC4KLQotLSBUaGUgSU4gbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbgotICAzLjAuCi0KLS0gVGhlIGltZ2ZpbGUgbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluCi0gIFB5dGhvbiAzLjAuCi0KLS0gVGhlIEdMV1MgbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbgotICAzLjAuCi0KLS0gVGhlIEdFVCBtb2R1bGUgZnJvbSBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uCi0gIDMuMC4KLQotLSBUaGUgZm0gbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbgotICAzLjAuCi0KLS0gVGhlIEZMLCBmbHAsIGFuZCBmbCBtb2R1bGVzIGZyb20gSVJJWCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IKLSAgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgotCi0tIFRoZSBGSUxFIG1vZHVsZSBvbiBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uCi0gIDMuMC4KLQotLSBUaGUgRVJSTk8gbW9kdWxlIG9uIElSSVggaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24KLSAgMy4wLgotCi0tIFRoZSBERVZJQ0UsIEdMLCBnbCwgYW5kIGNnZW4gbW9kdWxlcyAod2hpY2ggaW5kaXJlY3RseSBpbmNsdWRlcwotICBjZ2Vuc3VwcG9ydCkgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KLQotLSBUaGUgQ0wsIENMX29sZCwgYW5kIGNsIG1vZHVsZXMgZm9yIElSSVggaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yCi0gIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KLQotLSBUaGUgY2RwbGF5ZXIgbW9kdWxlIGZvciBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4KLSAgUHl0aG9uIDMuMC4KLQotLSBUaGUgY2RkYiBtb2R1bGUgZm9yIElSSVggaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24KLSAgMy4wLgotCi0tIFRoZSBjZCBhbmQgQ0QgbW9kdWxlcyBmb3IgSVJJWCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbgotICBQeXRob24gMy4wLgotCi0tIFRoZSBhbCBhbmQgQUwgbW9kdWxlcyBmb3IgSVJJWCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbgotICBQeXRob24gMy4wLgotCi0tIElzc3VlICMxNzEzMDQxOiBmaXggcHByaW50J3MgaGFuZGxpbmcgb2YgbWF4aW11bSBkZXB0aC4KLQotLSBUaGUgdGltaW5nIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gVGhlIHN2IG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gVGhlIG11bHRpZmlsZSBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBhcyBwZXIgUEVQIDQuCi0KLS0gVGhlIGltYWdlb3AgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KLQotLSBJc3N1ZSAjMjI1MDogRXhjZXB0aW9ucyByYWlzZWQgZHVyaW5nIGV2YWx1YXRpb24gb2YgbmFtZXMgaW4KLSAgcmxjb21wbGV0ZXIncyBgYENvbXBsZXRlci5jb21wbGV0ZSgpYGAgbWV0aG9kIGFyZSBub3cgY2F1Z2h0IGFuZAotICBpZ25vcmVkLgotCi0tIElzc3VlICMyNjU5OiBBZGRlZCBgYGJyZWFrX29uX2h5cGhlbnNgYCBvcHRpb24gdG8gdGV4dHdyYXAKLSAgVGV4dFdyYXBwZXIgY2xhc3MuCi0KLS0gVGhlIG1obGliIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gVGhlIGxpbnV4YXVkaW9kZXYgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uCi0gIDMuMC4KLQotLSBUaGUgaWhvb2tzIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gVGhlIGZwZm9ybWF0IG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gVGhlIGRsIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gVGhlIENhbnZhcyBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgotCi0tIFRoZSBjb21waWxlciBwYWNrYWdlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KLQotLSBUaGUgQmFzdGlvbiBhbmQgcmV4ZWMgbW9kdWxlcyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbgotICBQeXRob24gMy4wLgotCi0tIFRoZSBic2RkYjE4NSBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgotCi0tIFRoZSBwdXJlIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gSXNzdWUgIzI0ODc6IGNoYW5nZSB0aGUgc2VtYW50aWNzIG9mIG1hdGgubGRleHAoeCwgbikgd2hlbiBuIGlzIHRvbwotICBsYXJnZSB0byBmaXQgaW4gYSBDIGxvbmcuICBsZGV4cCh4LCBuKSBub3cgcmV0dXJucyBhIHplcm8gKHdpdGgKLSAgc3VpdGFibGUgc2lnbikgaWYgbiBpcyBsYXJnZSBhbmQgbmVnYXRpdmU7IHByZXZpb3VzbHksIGl0IHJhaXNlZAotICBPdmVyZmxvd0Vycm9yLgotCi0tIFRoZSB0b2FpZmYgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KLQotLSBUaGUgdGVzdC50ZXN0YWxsIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbgotICAzLjAuCi0KLS0gVGhlIG5ldyBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgotCi0tIFRoZSB1c2VyIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gVGhlIHN0cmluZ29sZCBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgotCi0tIFRoZSBtdXRleCBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgotCi0tIFRoZSBpbXB1dGlsIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gdGVzdC50ZXN0X3N1cHBvcnQuY2F0Y2hfd2FybmluZygpIGdhaW5lZCBhICdyZWNvcmQnIGFyZ3VtZW50LgotCi0tIG9zLnBhdGgud2FsayBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9zLndhbGsuCi0KLS0gcGRiIGdhaW5lZCB0aGUgInVudGlsIiBjb21tYW5kLgotCi0tIFRoZSBNYWMgTW9kdWxlcyAoaW5jbHVkaW5nIENhcmJvbikgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwKLSAgaW4gUHl0aG9uIDMuMC4KLQotLSBMaWJyYXJ5OiBvbiBNYWNPUyBYIHlvdSBjYW4gbm93IHNldCBgYEFSQ0hGTEFHU2BgIGluIHRoZSBzaGVsbAotICBlbnZpcm9ubWVudCB0byBjb250cm9sIHRoZSAnLWFyY2gnIGZsYWdzIHRoYXQgYXJlIHVzZWQgdG8gYnVpbGQKLSAgYW4gZXh0ZW5zaW9uLiBUaGlzIHdhcyBhZGRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEFwcGxlJ3MgYnVpbGQKLSAgb2YgUHl0aG9uLgotCi0tIFRoZSBidW5kbGVkIE9TWC1zcGVjaWZpYyBjb3B5IG9mIGxpYmJmZmkgaXMgbm93IGluIHN5bmMgd2l0aCB0aGUgdmVyc2lvbgotICBzaGlwcGVkIHdpdGggUHlPYmpDIDIuMCBhbmQgaW5jbHVkZXMgc3VwcG9ydCBmb3IgeDg2XzY0IGFuZCBwcGM2NCBwbGF0Zm9ybXMuCi0KLS0gVGhlIHRocmVhZGluZyBtb2R1bGUgZ2FpbmVkIGFsaWFzZXMgZm9yIG5hbWVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZQotICAzLnggc2VyaWVzLgotCi1CdWlsZAotLS0tLS0KLQotLSBUaGUgV2luZG93cyBpbnN0YWxsZXIgbm93IGluY2x1ZGVzIFRrIDguNSwgYnppcDIgMS4wLjUsIGFuZCBTUUxpdGUgMy41LjkuCi0KLS0gUGF0Y2ggIzE3MjIyMjU6IFN1cHBvcnQgUU5YIDYuCi0KLS0gYGBMaWIvbGliLW9sZGBgIGlzIG5vdyBhZGRlZCB0byBzeXMucGF0aC4KLQotLSBPbiBNYWNPUyBYIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBpbnN0YWxsIHRoZSBmcmFtZXdvcmsgaW4gNjQtYml0Ci0gIG1vZGUgb3IgZXZlbiBhcyBhIDQtd2F5IHVuaXZlcnNhbCBiaW5hcnkgKHRoYXQgaXMsIFBQQywgaTM4NiwKLSAgUFBDNjQgYW5kIHg4Nl82NCBzdXBwb3J0IGluIG9uZSBiaW5hcnkpLgotCi0gIFRoaXMgaXMgY29udHJvbGxlZCBieSB0aGUgY29uZmlndXJlIGFyZ3VtZW50IGBgLS13aXRoLXVuaXZlcnNhbC1hcmNoc2BgOgotCi0gIC0gYGAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzPWFsbGBgOiBpbnN0YWxsIDQtd2F5IHVuaXZlcnNhbAotCi0gIC0gYGAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzPTMyLWJpdGBgOiBpbnN0YWxsIDItd2F5IHVuaXZlcnNhbCwgMzItYml0ICh0aGUgZGVmYXVsdCkKLQotICAtIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNocz02NC1iaXRgYDogaW5zdGFsbCAyLXdheSB1bml2ZXJzYWwsIDY0LWJpdAotCi0gIFRoaXMgb3B0aW9uIHNob3VsZCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uIHdpdGggYGAtLWVuYWJsZS11bml2ZXJzYWxzZGs9YGAuCi0KLSAgTk9URTogNjQtYml0IGFuZCA0LXdheSBidWlsZHMgYXJlIG9ubHkgc3VwcHBvcnRlZCBvbiBNYWMgT1MgWCAxMC41IChvciBsYXRlcikuCi0KLUMgQVBJCi0tLS0tLQotCi0tIEFkZCBgYFB5VHlwZV9Nb2RpZmllZCgpYGAgYXMgYSBwdWJsaWMgQVBJIHRvIGNsZWFyIHRoZSB0eXBlIGNhY2hlLgotCi0tIFRoZSBQeUJ5dGVzIGZ1bmN0aW9ucyBoYXZlIGJlZW4gcmVuYW1lZCB0byBQeUJ5dGVBcnJheS4KLQotLSBUaGUgUHlTdHJpbmcgZnVuY3Rpb25zIGhhdmUgYmVlbiByZW5hbWVkIHRvIFB5Qnl0ZXMuIEEgYmF0Y2ggb2YKLSAgZGVmaW5lcyB3ZXJlIGFkZGVkIHNvIHRoYXQgdGhlIGxpbmtlciBzdGlsbCBzZWVzIHRoZSBvcmlnaW5hbAotICBQeVN0cmluZyBuYW1lcy4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjYgYWxwaGEgMz8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAwOC1NYXktMjAwOCoKLQotQ29yZSBhbmQgYnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzI3MTk6IGJhY2twb3J0ZWQgdGhlIGBgbmV4dCgpYGAgYnVpbHRpbiBmcm9tIFB5dGhvbiAzLgotCi0tIElzc3VlICMyNjgxOiBUaGUgb2N0YWwgbGl0ZXJhbCBgYDBvOGBgIHdhcyBpbmNvcnJlY2x5IGFjY3RlcHRlZC4gTm93Ci0gIGl0IHByb3Blcmx5IHJhaXNlcyBhIFN5bnRheEVycm9yLgotCi0tIElzc3VlICMyNjE3OiBSZXNlcnZlZCAtSiBhbmQgLVggYXJndW1lbnRzIGZvciBKeXRob24sIElyb25QeXRob24gYW5kCi0gIG90aGVyIGltcGxlbWVudGF0aW9ucyBvZiBQeXRob24uCi0KLS0gSW1wbGVtZW50ZWQgUEVQIDM3MDogUGVyIHVzZXIgc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcnkuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyNjcwOiBGaXggYSBmYWlsdXJlIGluIHVybGxpYjIuYnVpbGRfb3BlbmVyKCksIHdoZW4gcGFzc2VkCi0gIHR3byBoYW5kbGVycyB0aGF0IGRlcml2ZSB0aGUgc2FtZSBkZWZhdWx0IGJhc2UgY2xhc3MuCi0KLS0gQWRkZWQga2lsbCwgdGVybWluYXRlIGFuZCBzZW5kX3NpZ25hbChzaWcpIHRvIHN1YnByb2Nlc3MuUG9wZW4uCi0KLS0gQWRkZWQgcGhhc2UoeikgLT4gcGhpLCBwb2xhcih6KSAtPiByLCBwaGkgYW5kIHJlY3QociwgcGhpKSAtPiB6IHRvCi0gIHRoZSBjbWF0aCBtb2R1bGUuCi0KLS0gRm91ciBuZXcgbWV0aG9kcyB3ZXJlIGFkZGVkIHRvIHRoZSBtYXRoIGFuZCBjbWF0aCBtb2R1bGVzOiBhY29zaCwKLSAgYXNpbmgsIGF0YW5oIGFuZCBsb2cxcC4KLQotLSB6bGliLmRlY29tcHJlc3NvYmooKS5mbHVzaCh2YWx1ZSkgbm8gbG9uZ2VyIGNyYXNoZXMgdGhlIGludGVycHJldGVyCi0gIHdoZW4gcGFzc2VkIGEgdmFsdWUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIHplcm8uCi0KLS0gSXNzdWUgIzE2MzExNzE6IFJlLWltcGxlbWVudCB0aGUgJ3dhcm5pbmdzJyBtb2R1bGUgaW4gQyAodGhlCi0gIG9yaWdpbmFsIFB5dGhvbiBjb2RlIGhhcyBiZWVuIGtlcHQgYXMgYmFja3VwKS4gVGhpcyB3aWxsIGFsbG93IGZvcgotICB1c2luZyB0aGUgJ3dhcm5pbmcncyBtYWNoaW5lcnkgaW4gc3VjaCBwbGFjZXMgYXMgdGhlIHBhcnNlciB3aGVyZQotICB1c2Ugb2YgcHVyZSBQeXRob24gY29kZSBpcyBub3QgcG9zc2libGUuICBCb3RoIHRoZSBgYHNob3dhcm5pbmcoKWBgCi0gIGFuZCBgYGZvcm1hdHdhcm5pbmcoKWBgIGdhaW4gYW4gb3B0aW9uYWwgJ2xpbmUnIGFyZ3VtZW50IHdoaWNoIGlzCi0gIG5vdCBjYWxsZWQgYnkgZGVmYXVsdCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgcmVhc29ucy4gU2V0dGluZwotICBgYHdhcm5pbmdzLnNob3d3YXJuaW5nKClgYCB0byBhbiBpbXBsZW1lbnRhdGlvbiB0aGF0IGxhY2tzIHN1cHBvcnQKLSAgZm9yIHRoZSBgYGxpbmVgYCBhcmd1bWVudCB3aWxsIHJhaXNlIGEgRGVwcmVjYXRpb25XYXJuaW5nLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gVGhlIGF1ZGlvZGV2IG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCi0KLS0gSXNzdWUgIzI3NTA6IEFkZCB0aGUgJ2pzb24nIHBhY2thZ2UuIEJhc2VkIG9uIHNpbXBsZWpzb24gMS45IGFuZAotICBjb250cmlidXRlZCBieSBCb2IgSXBwb2xpdG8uCi0KLS0gSXNzdWUgIzE3MzQzNDY6IFN1cHBvcnQgVW5pY29kZSBmaWxlIG5hbWVzIGZvciB6aXBmaWxlcy4KLQotLSBJc3N1ZSAjMjU4MTogZGlzdHV0aWxzOiBWaXN0YSBVQUMvZWxldmF0aW9uIHN1cHBvcnQgZm9yCi0gIGJkaXN0X3dpbmluc3QuCi0KLS0gSXNzdWUgIzI2MzU6IEZpeCBidWcgaW4gJ2ZpeF9zZW50ZW5jZV9lbmRpbmdzJyB0ZXh0d3JhcC5maWxsIG9wdGlvbiwKLSAgd2hlcmUgYW4gZXh0cmEgc3BhY2Ugd2FzIGFkZGVkIGFmdGVyIGEgd29yZCBjb250YWluaW5nIChidXQgbm90Ci0gIGVuZGluZyBpbikgJy4nLCAnIScgb3IgJz8nLgotCi0tIEFkZCBmcm9tX2J1ZmZlcigpIGFuZCBmcm9tX2J1ZmZlcl9jb3B5KCkgY2xhc3MgbWV0aG9kcyB0byBjdHlwZXMKLSAgZGF0YSB0eXBlcy4KLQotLSBJc3N1ZSAjMjY4MjogY3R5cGVzIGNhbGxiYWNrIGZ1bmN0aW9ucyBubyBsb25nZXIgY29udGFpbiBhIGN5Y2xpYwotICByZWZlcmVuY2UgdG8gdGhlbXNlbHZlcy4KLQotLSBUaGUgZ2V0cGFzcyBtb2R1bGUgaGFzIGJlZW4gaW1wcm92ZWQgb24gVW5peC4gIEl0IG5vdyB1c2VzIC9kZXYvdHR5Ci0gIGJ5IGRlZmF1bHQgYW5kIHVzZXMgc3RkZXJyIGluc3RlYWQgb2Ygc3Rkb3V0LiAgQSBHZXRQYXNzV2FybmluZyBpcwotICBpc3N1ZWQgd2hlbiBpbnB1dCBlY2hvIGNhbm5vdCBiZSBjb250cm9sbGVkLgotCi0tIElzc3VlICMyMDE0OiBBbGxvdyBYTUwtUlBDIGRhdGV0aW1lIG9iamVjdHMgdG8gaGF2ZSBkYXRlcyBiZWZvcmUKLSAgMTkwMC0wMS0wMS4KLQotLSBJc3N1ZSAjMjQzOTogQWRkZWQgbmV3IGZ1bmN0aW9uIHBrZ3V0aWwuZ2V0X2RhdGEoKSwgd2hpY2ggaXMgYQotICBjb252ZW5pZW5jZSB3cmFwcGVyIGZvciB0aGUgUEVQIDMwMiBnZXRfZGF0YSgpIEFQSS4KLQotLSBJc3N1ZSAjMjYxNjogVGhlIGN0eXBlcy5wb2ludGVyKCkgYW5kIGN0eXBlcy5QT0lOVEVSKCkgZnVuY3Rpb25zIGFyZQotICBub3cgaW1wbGVtZW50ZWQgaW4gQyBmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgotCi0tIElzc3VlICMyNDA4OiBUaGUgYGBfdHlwZXNgYCBtb2R1bGUsIHdoaWNoIHdhcyB1c2VkIGFzIGluCi0gIGltcGxlbWVudGF0aW9uIGRldGFpbCBvZiB0aGUgcHVibGljIGBgdHlwZXNgYCBtb2R1bGUsIGhhcyBiZWVuCi0gIHJlbW92ZWQgYW5kIHJlcGxhY2VkIGJ5IHB1cmUgcHl0aG9uIGNvZGUuCi0KLS0gSXNzdWUgIzI1MTM6IGRpc3R1dGlscyBvbiBXaW5kb3dzIGlzIG5vdyBjYXBhYmxlIG9mIGNyb3NzLWNvbXBpbGluZwotICBleHRlbnNpb24gbW9kdWxlcyBiZXR3ZWVuIDMyIGFuZCA2NCBiaXQgcGxhdGZvcm1zLiAgU2VlIHRoZSBkaXN0dXRscwotICBidWlsZCBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCi0tIElzc3VlICM4MTU2NDY6IEluZGl2aWR1YWwgZmlsZSBvYmplY3RzIG1heSBub3cgYmUgdXNlZCBmcm9tIG11bHRpcGxlCi0gIHRocmVhZHMgYXQgb25jZSB3aXRob3V0IGZlYXIgb2YgY3Jhc2hpbmcgdGhlIFB5dGhvbiBpbnRlcnByZXRlci4gIElmCi0gIGZpbGUuY2xvc2UoKSBpcyBjYWxsZWQgd2hpbGUgYW4gb2JqZWN0IGlzIGluIHVzZSBieSBhbm90aGVyIHRocmVhZAotICBhbiBJT0Vycm9yIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCBhbmQgdGhlIGZpbGUgd2lsbCBub3QgYmUgY2xvc2VkLgotCi0tIFRoZSBidW5kbGVkIGxpYmZmaSBjb3B5IGlzIG5vdyBpbiBzeW5jIHdpdGggdGhlIHJlY2VudGx5IHJlbGVhc2VkCi0gIGxpYmZmaTMuMC41IHZlcnNpb24sIGFwYXJ0IGZyb20gc29tZSBzbWFsbCBjaGFuZ2VzIHRvCi0gIE1vZHVsZXMvX2N0eXBlcy9saWJmZmkvY29uZmlndXJlLmFjLgotCi0tIElzc3VlICMyMzg1OiBkaXN0dXRpbHMuY29yZS5ydW5fc2NyaXB0KCkgbWFrZXMgX19maWxlX18gYXZhaWxhYmxlLAotICBzbyB0aGUgY29udHJvbGxlZCBlbnZpcm9ubWVudCB3aWxsIG1vcmUgY2xvc2VseSBtaXJyb3IgdGhlIHR5cGljYWwKLSAgc2NyaXB0IGVudmlyb25tZW50LiAgVGhpcyBzdXBwb3J0cyBzZXR1cC5weSBzY3JpcHRzIHRoYXQgcmVmZXIgdG8KLSAgZGF0YSBmaWxlcy4KLQotVGVzdHMKLS0tLS0tCi0KLS0gSXNzdWUgIzI1NTA6IFRoZSBhcHByb2FjaCB1c2VkIGJ5IGNsaWVudC9zZXJ2ZXIgY29kZSBmb3Igb2J0YWluaW5nCi0gIHBvcnRzIHRvIGxpc3RlbiBvbiBpbiBuZXR3b3JrLW9yaWVudGVkIHRlc3RzIGhhcyBiZWVuIHJlZmluZWQgaW4gYW4KLSAgZWZmb3J0IHRvIGZhY2lsaXRhdGUgcnVubmluZyBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIGVudGlyZQotICByZWdyZXNzaW9uIHRlc3Qgc3VpdGUgaW4gcGFyYWxsZWwgd2l0aG91dCBpc3N1ZS4KLSAgdGVzdF9zdXBwb3J0LmJpbmRfcG9ydCgpIGhhcyBiZWVuIGZpeGVkIHN1Y2ggdGhhdCBpdCB3aWxsIGFsd2F5cwotICByZXR1cm4gYSB1bmlxdWUgcG9ydCAtLSB3aGljaCB3YXNuJ3QgYWx3YXlzIHRoZSBjYXNlIHdpdGggdGhlCi0gIHByZXZpb3VzIGltcGxlbWVudGF0aW9uLCBlc3BlY2lhbGx5IGlmIHNvY2tldCBvcHRpb25zIGhhZCBiZWVuIHNldAotICB0aGF0IGFmZmVjdGVkIGFkZHJlc3MgcmV1c2UgKGkuZS4gU09fUkVVU0VBRERSLCBTT19SRVVTRVBPUlQpLiAgVGhlCi0gIG5ldyBpbXBsZW1lbnRhdGlvbiBvZiBiaW5kX3BvcnQoKSB3aWxsIGFjdHVhbGx5IHJhaXNlIGFuIGV4Y2VwdGlvbgotICBpZiBpdCBpcyBwYXNzZWQgYW4gQUZfSU5FVC9TT0NLX1NUUkVBTSBzb2NrZXQgd2l0aCBlaXRoZXIgdGhlCi0gIFNPX1JFVVNFQUREUiBvciBTT19SRVVTRVBPUlQgc29ja2V0IG9wdGlvbiBzZXQuICBGdXJ0aGVybW9yZSwgaWYKLSAgYXZhaWxhYmxlLCBiaW5kX3BvcnQoKSB3aWxsIHNldCB0aGUgU09fRVhDTFVTSVZFQUREUlVTRSBvcHRpb24gb24KLSAgdGhlIHNvY2tldCBpdCdzIGJlZW4gcGFzc2VkLiAgVGhpcyBjdXJyZW50bHkgb25seSBhcHBsaWVzIHRvCi0gIFdpbmRvd3MuICBUaGlzIG9wdGlvbiBwcmV2ZW50cyBhbnkgb3RoZXIgc29ja2V0cyBmcm9tIGJpbmRpbmcgdG8gdGhlCi0gIGhvc3QvcG9ydCB3ZSd2ZSBib3VuZCB0bywgdGh1cyByZW1vdmluZyB0aGUgcG9zc2liaWxpdHkgb2YgdGhlCi0gICdub24tZGV0ZXJtaW5pc3RpYycgYmVoYXZpb3VyLCBhcyBNaWNyb3NvZnQgcHV0cyBpdCwgdGhhdCBvY2N1cnMKLSAgd2hlbiBhIHNlY29uZCBTT0NLX1NUUkVBTSBzb2NrZXQgYmluZHMgYW5kIGFjY2VwdHMgdG8gYSBob3N0L3BvcnQKLSAgdGhhdCdzIGFscmVhZHkgYmVlbiBib3VuZCBieSBhbm90aGVyIHNvY2tldC4gIFRoZSBvcHRpb25hbCBwcmVmZXJyZWQKLSAgcG9ydCBwYXJhbWV0ZXIgdG8gYmluZF9wb3J0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gIFVuZGVyIG5vCi0gIGNpcmN1bXN0YW5jZXMgc2hvdWxkIHRlc3RzIGJlIGhhcmQgY29kaW5nIHBvcnRzIQotCi0gIHRlc3Rfc3VwcG9ydC5maW5kX3VudXNlZF9wb3J0KCkgaGFzIGFsc28gYmVlbiBpbnRyb2R1Y2VkLCB3aGljaCB3aWxsCi0gIHBhc3MgYSB0ZW1wb3Jhcnkgc29ja2V0IG9iamVjdCB0byBiaW5kX3BvcnQoKSBpbiBvcmRlciB0byBvYnRhaW4gYW4KLSAgdW51c2VkIHBvcnQuICBUaGUgdGVtcG9yYXJ5IHNvY2tldCBvYmplY3QgaXMgdGhlbiBjbG9zZWQgYW5kCi0gIGRlbGV0ZWQsIGFuZCB0aGUgcG9ydCBpcyByZXR1cm5lZC4gIFRoaXMgbWV0aG9kIHNob3VsZCBvbmx5IGJlIHVzZWQKLSAgZm9yIG9idGFpbmluZyBhbiB1bnVzZWQgcG9ydCBpbiBvcmRlciB0byBwYXNzIHRvIGFuIGV4dGVybmFsIHByb2dyYW0KLSAgKGkuZS4gdGhlIC1hY2NlcHQgW3BvcnRdIGFyZ3VtZW50IHRvIG9wZW5zc2wncyBzX3NlcnZlciBtb2RlKSBvciBhcwotICBhIHBhcmFtZXRlciB0byBhIHNlcnZlci1vcmllbnRlZCBjbGFzcyB0aGF0IGRvZXNuJ3QgZ2l2ZSB5b3UgZGlyZWN0Ci0gIGFjY2VzcyB0byB0aGUgdW5kZXJseWluZyBzb2NrZXQgdXNlZC4KLQotICBGaW5hbGx5LCB0ZXN0X3N1cHBvcnQuSE9TVCBoYXMgYmVlbiBpbnRyb2R1Y2VkLCB3aGljaCBzaG91bGQgYmUgdXNlZAotICBmb3IgdGhlIGhvc3QgYXJndW1lbnQgb2YgYW55IHJlbGV2YW50IHNvY2tldCBjYWxscyAoaS5lLiBiaW5kIGFuZAotICBjb25uZWN0KS4KLQotICBUaGUgZm9sbG93aW5nIHRlc3RzIHdlcmUgdXBkYXRlZCB0byBmb2xsb3dpbmcgdGhlIG5ldyBjb252ZW50aW9uczoKLSAgICB0ZXN0X3NvY2tldCwgdGVzdF9zbXRwbGliLCB0ZXN0X2FzeW5jb3JlLCB0ZXN0X3NzbCwgdGVzdF9odHRwbGliLAotICAgIHRlc3RfcG9wbGliLCB0ZXN0X2Z0cGxpYiwgdGVzdF90ZWxuZXRsaWIsIHRlc3Rfc29ja2V0c2VydmVyLAotICAgIHRlc3RfYXN5bmNoYXQgYW5kIHRlc3Rfc29ja2V0X3NzbC4KLQotICBJdCBpcyBub3cgcG9zc2libGUgZm9yIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgcmVncmVzc2lvbiB0ZXN0Ci0gIHN1aXRlIHRvIHJ1biBpbiBwYXJhbGxlbCB3aXRob3V0IGlzc3VlLgotCi1CdWlsZAotLS0tLS0KLQotLSBJc3N1ZSAjMTQ5NjAzMjogT24gYWxwaGEsIHVzZSAtbWllZWUgd2hlbiBnY2MgaXMgdGhlIGNvbXBpbGVyLgotCi0tIElzc3VlICMyNTQ0OiBPbiBIUC1VWCBzeXN0ZW1zLCB1c2UgJ2djYyAtc2hhcmVkJyBmb3IgbGlua2luZyB3aGVuCi0gIGdjYyBpcyB1c2VkIGFzIGNvbXBpbGVyLgotCi0tIElzc3VlICMyNTczOiBPbiBNYWNPUyBYIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBpbnN0YWxsIHRoZSBmcmFtZXdvcmsKLSAgd2l0aCBhIGRpZmZlcmVudCBuYW1lIHVzaW5nIC0td2l0aC1mcmFtZXdvcmstbmFtZT1OQU1FLgotCi1DIEFQSQotLS0tLS0KLQotLSBBZGRlZCBpbXBsZW1lbnRhdGlvbiBvZiBjb3B5c2lnbiwgYWNvc2gsIGFzaW5oLCBhdGFuaCBhbmQgbG9nMXAgdG8KLSAgdGhlIG5ldyBmaWxlcyBJbmNsdWRlL3B5bWF0aC5oIGFuZCBQeXRob24vcHltYXRoLmggZm9yIHBsYXRmb3JtcwotICB3aGljaCBwcm92aWRlIHRoZSBmdW5jdGlvbnMgdGhyb3VnaCB0aGVpciBsaWJtLiBUaGUgZmlsZXMgYWxzbwotICBjb250YWlucyBzZXZlcmFsIGhlbHBlcnMgYW5kIGNvbnN0YW50cyBmb3IgbWF0aC4KLQotLSBBZGRlZCBhIG5ldyBjb252ZW5pZW5jZSBtYWNybywgUHlFcnJfV2FyblB5M2ssIGZvciBpc3N1aW5nIFB5M2sgd2FybmluZ3MuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMi42IGFscGhhIDI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKlJlbGVhc2UgZGF0ZTogMDItQXByLTIwMDgqCi0KLUNvcmUgYW5kIGJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMxNzMzNzU3OiBUaGUgaW50ZXJwcmV0ZXIgd291bGQgaGFuZyBvbiBzaHV0ZG93biBpZiB0aGUKLSAgdHJhY2luZyBmdW5jdGlvbiBzZXQgYnkgc3lzLnNldHRyYWNlIGlzIHN0aWxsIGFjdGl2ZSBhbmQgaGFwcGVucyB0bwotICBjYWxsIHRocmVhZGluZy5jdXJyZW50VGhyZWFkKCkuCi0KLS0gUGF0Y2ggIzE0NDI6IHByb3Blcmx5IHJlcG9ydCBleGNlcHRpb25zIHdoZW4gdGhlIFBZVEhPTlNUQVJUVVAgZmlsZQotICBjYW5ub3QgYmUgZXhlY3V0ZWQuCi0KLS0gVGhlIGNvbXBpbGF0aW9uIG9mIGEgY2xhc3MgbmVzdGVkIGluIGFub3RoZXIgY2xhc3MgdXNlZCB0byBsZWFrIG9uZQotICByZWZlcmVuY2Ugb24gdGhlIG91dGVyIGNsYXNzIG5hbWUuCi0KLS0gUGF0Y2ggIzE4MTA6IGNvbXBpbGUoKSBjYW4gbm93IGNvbXBpbGUgX2FzdCB0cmVlcyBhcyByZXR1cm5lZCBieQotICBgYGNvbXBpbGUoLi4uLCBQeUNGX09OTFlfQVNUKWBgLgotCi0tIFBhdGNoICMyNDI2OiBBZGRlZCBzcWxpdGUzLkNvbm5lY3Rpb24uaXRlcmR1bXAgbWV0aG9kIHRvIGFsbG93IGVhc3kKLSAgZHVtcGluZyBvZiBkYXRhYmFzZXMuICBDb250cmlidXRlZCBieSBQYXVsIEtpcHBlcyBhdCBQeUNvbiAyMDA4LgotCi0tIFBhdGNoICMyNDc3OiBBZGRlZCBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMuCi0KLS0gQWRkZWQgYmFja3BvcnQgb2YgYnl0ZWFycmF5IHR5cGUuCi0KLS0gSXNzdWUgIzIzNTU6IGFkZCBQeTNrIHdhcm5pbmcgZm9yIGJ1ZmZlcigpLgotCi0tIElzc3VlICMxNDc3OiBXaXRoIG5hcnJvdyBVbmljb2RlIGJ1aWxkcywgdGhlIHVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlCi0gIFxVeHh4eHh4eHggZGlkIG5vdCBhY2NlcHQgdmFsdWVzIG91dHNpZGUgdGhlIEJhc2ljIE11bHRpbGluZ3VhbAotICBQbGFuZS4gIFRoaXMgYWZmZWN0ZWQgcmF3IHVuaWNvZGUgbGl0ZXJhbHMgYW5kIHRoZQotICAncmF3LXVuaWNvZGUtZXNjYXBlJyBjb2RlYy4gIE5vdyBVVEYtMTYgc3Vycm9nYXRlcyBhcmUgZ2VuZXJhdGVkIGluCi0gIHRoaXMgY2FzZSwgbGlrZSBub3JtYWwgdW5pY29kZSBsaXRlcmFscyBhbmQgdGhlICd1bmljb2RlLWVzY2FwZScKLSAgY29kZWMuCi0KLS0gSXNzdWUgIzIzNDg6IGFkZCBQeTNrIHdhcm5pbmcgZm9yIGZpbGUuc29mdHNwYWNlLgotCi0tIElzc3VlICMyMzQ2LyMyMzQ3OiBhZGQgUHkzayB3YXJuaW5ncyBmb3IgX19tZXRob2RzX18gYW5kCi0gIF9fbWVtYmVyc19fLgotCi0tIElzc3VlICMyMzU4OiBBZGQgYSBQeTNrIHdhcm5pbmcgb24gc3lzLmV4Y19jbGVhcigpIHVzYWdlLgotCi0tIElzc3VlICMyNDAwOiBBbGxvdyByZWxhdGl2ZSBpbXBvcnRzIHRvICJpbXBvcnQgKiIuCi0KLS0gSXNzdWUgIzE3NDU6IEJhY2twb3J0IHByaW50IGZ1bmN0aW9uIHdpdGggYGBmcm9tIF9fZnV0dXJlX18gaW1wb3J0Ci0gIHByaW50X2Z1bmN0aW9uYGAuCi0KLS0gSXNzdWUgIzIzMzI6IGFkZCBuZXcgYXR0cmlidXRlIG5hbWVzIGZvciBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0cy4KLSAgVGhlIHR3byBjaGFuZ2VzIGFyZTogaW1fc2VsZiAtPiBfX3NlbGZfXyBhbmQgaW1fZnVuYyAtPiBfX2Z1bmNfXwotCi0tIElzc3VlICMyMzc5OiBSYWlzZSBhIFB5M0sgd2FybmluZyBmb3IgX19nZXRpdGVtX18gb3IgX19nZXRzbGljZV9fIG9uCi0gIGV4Y2VwdGlvbiBpbnN0YW5jZXMuCi0KLS0gSXNzdWUgIzIzNzE6IEFkZCBhIFB5M2sgd2FybmluZyB3aGVuIGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB0aGF0Ci0gIGRvZXNuJ3QgZGVyaXZlIGZyb20gQmFzZUV4Y2VwdGlvbi4KLQotLSBJc3N1ZSAjMjM0MTogQWRkIGEgUHkzayB3YXJuaW5nIHdoZW4gcmFpc2luZyBhbiBleGNlcHRpb24gdGhhdAotICBkb2Vzbid0IGRlcml2ZSBmcm9tIEJhc2VFeGNlcHRpb24uCi0KLS0gSXNzdWUgIzIzMjE6IHVzZSBweW1hbGxvYyBmb3IgdW5pY29kZSBvYmplY3Qgc3RyaW5nIGRhdGEgdG8gcmVkdWNlCi0gIG1lbW9yeSB1c2FnZSBpbiBzb21lIGNpcmN1bXN0YW5jZXMuCi0KLS0gUEVQIDMxMjc6IG9jdGFsIGxpdGVyYWxzIG5vdyBzdGFydCB3aXRoICIwbyIuIE9sZC1zdHlsZSBvY3RhbAotICBsaXRlcmFscyBhcmUgc3RpbGwgdmFsaWQuIFRoZXJlIGFyZSBiaW5hcnkgbGl0ZXJhbHMgd2l0aCBhIHByZWZpeCBvZgotICAiMGIiLiAgVGhpcyBhbHNvIGFmZmVjdHMgaW50KHgsIDApLgotCi0tIElzc3VlICMyMzU5OiBBZGRpbmcgZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yIGFycmF5LntyZWFkLHdyaXRlfS4KLQotLSBJc3N1ZSAjMTc3OTg3MTogR05VIGdjYyBjYW4gbm93IGJ1aWxkIFB5dGhvbiBvbiBPUyBYIGJlY2F1c2UgdGhlCi0gIGZsYWdzIC1Xbm8tbG9uZy1kb3VibGUsIC1uby1jcHAtcHJlY29tcCwgYW5kIC1tbm8tZnVzZWQtbWFkZCBhcmUgbm8KLSAgbG9uZ2VyIHBhc3NlZC4KLQotLSBBZGQgYSB3YXJuaW5nIHdoZW4gYXNzZXJ0aW5nIGEgbm9uLWVtcHR5IHR1cGxlIHdoaWNoIGlzIGFsd2F5cyB0cnVlLgotCi0tIElzc3VlICMyMTc5OiBzcGVlZCB1cCB3aXRoIHN0YXRlbWVudCBleGVjdXRpb24gYnkgc3RvcmluZyB0aGUgZXhpdAotICBtZXRob2Qgb24gdGhlIHN0YWNrIGluc3RlYWQgb2YgaW4gYSB0ZW1wb3JhcnkgdmFyaWFibGUgKHBhdGNoIGJ5Ci0gIEplZmZyZXkgWWFza2luKQotCi0tIElzc3VlICMyMjM4OiBTb21lIHN5bnRheCBlcnJvcnMgaW4gKmFyZ3MgYW5kICoqa3dhcmdzIGV4cHJlc3Npb25zCi0gIGNvdWxkIGdpdmUgYm9ndXMgZXJyb3IgbWVzc2FnZXMuCi0KLS0gSXNzdWUgIzIxNDM6IEZpeCBlbWJlZGRlZCByZWFkbGluZSgpIGhhbmcgb24gU1NMIHNvY2tldCBFT0YuCi0KLUV4dGVuc2lvbiBNb2R1bGVzCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIFBhdGNoICMyMjQwOiBJbXBsZW1lbnQgc2lnbmFsLnNldGl0aW1lciBhbmQgc2lnbmFsLmdldGl0aW1lci4KLQotTGlicmFyeQotLS0tLS0tLQotCi0tIElzc3VlICMyMzE1OiBsb2dnaW5nLmhhbmRsZXJzOiBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIgbm93IGFjY291bnRzCi0gIGZvciBkYXlsaWdodCBzYXZpbmdzIHRpbWUgaW4gY2FsY3VsYXRpbmcgdGhlIG5leHQgcm9sbG92ZXIuCi0KLS0gSXNzdWUgIzIzMTY6IGxvZ2dpbmcuaGFuZGxlcnM6IFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciBub3cKLSAgY2FsY3VsYXRlcyByb2xsb3ZlcnMgY29ycmVjdGx5IGV2ZW4gd2hlbiBub3RoaW5nIGlzIGxvZ2dlZCBmb3IgYQotICB3aGlsZS4KLQotLSBJc3N1ZSAjMjMxNzogbG9nZ2luZy5oYW5kbGVyczogVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyIG5vdyB1c2VzCi0gIGltcHJvdmVkIGxvZ2ljIGZvciByZW1vdmluZyBvbGQgZmlsZXMuCi0KLS0gSXNzdWUgIzI0OTU6IHRva2VuaXplLnVudG9rZW5pemUgbm93IGluc2VydHMgYSBzcGFjZSBiZXR3ZWVuIHR3bwotICBjb25zZWN1dGl2ZSBzdHJpbmcgbGl0ZXJhbHM7IHByZXZpb3VzbHksIFsiIiAiIl0gd2FzIHJlbmRlcmVkIGFzCi0gIFsiIiIiXSwgd2hpY2ggaXMgaW5jb3JyZWN0IHB5dGhvbiBjb2RlLgotCi0tIElzc3VlICMyMjQ4OiByZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgUVVJVCBjb21tYW5kLiBmcm9tCi0gIFNNVFAucXVpdCgpLgotCi0tIEJhY2twb3J0IG9mIFB5dGhvbiAzLjAncyBpbyBtb2R1bGUuCi0KLS0gSXNzdWUgIzI0ODI6IE1ha2Ugc3VyZSB0aGF0IHRoZSBjb2VmZmljaWVudCBvZiBhIERlY2ltYWwgaXMgYWx3YXlzCi0gIHN0b3JlZCBhcyBhIHN0ciBpbnN0YW5jZSwgbm90IGFzIGEgdW5pY29kZSBpbnN0YW5jZS4gIFRoaXMgZW5zdXJlcwotICB0aGF0IHN0cihEZWNpbWFsKSBpcyBhbHdheXMgYW4gaW5zdGFuY2Ugb2Ygc3RyLgotCi0tIElzc3VlICMyNDc4OiBmaXggZmFpbHVyZSBvZiBkZWNpbWFsLkRlY2ltYWwoMCkuc3FydCgpCi0KLS0gSXNzdWUgIzI0MzI6IGdpdmUgRGljdFJlYWRlciB0aGUgZGlhbGVjdCBhbmQgbGluZV9udW0gYXR0cmlidXRlcwotICBhZHZlcnRpc2VkIGluIHRoZSBkb2NzLgotCi0tIElzc3VlICMyNDYwOiBNYWtlIEVsbGlwc2lzIG9iamVjdCBjb3B5YWJsZS4KLQotLSBJc3N1ZSAjMTY4MTQzMjogQWRkIHRyaWFuZ3VsYXIgZGlzdHJpYnV0aW9uIHRvIHRoZSByYW5kb20gbW9kdWxlCi0KLS0gSXNzdWUgIzIxMzY6IHVybGxpYjIncyBhdXRoIGhhbmRsZXIgbm93IGFsbG93cyBzaW5nbGUtcXVvdGVkIHJlYWxtcwotICBpbiB0aGUgV1dXLUF1dGhlbnRpY2F0ZSBoZWFkZXIuCi0KLS0gSXNzdWUgIzI0MzQ6IEVuaGFuY2VkIHBsYXRmb3JtLndpbjMyX3ZlcigpIHRvIGFsc28gd29yayBvbiBQeXRob24KLSAgaW5zdGFsbGF0aW9uIHdoaWNoIGRvIG5vdCBoYXZlIHRoZSB3aW4zMmFsbCBwYWNrYWdlIGluc3RhbGxlZC4KLQotLSBBZGRlZCBzdXBwb3J0IHRvIHBsYXRmb3JtLnVuYW1lKCkgdG8gYWxzbyByZXBvcnQgdGhlIG1hY2hpbmUgYW5kCi0gIHByb2Nlc3NvciBpbmZvcm1hdGlvbiBvbiBXaW5kb3dzIFhQIGFuZCBsYXRlci4gQXMgYSByZXN1bHQsCi0gIHBsYXRmb3JtLm1hY2hpbmUoKSBhbmQgcGxhdGZvcm0ucHJvY2Vzc29yKCkgd2lsbCByZXBvcnQgdGhpcwotICBpbmZvcm1hdGlvbiBhcyB3ZWxsLgotCi0tIFRoZSBsaWJyYXJ5IGltcGxlbWVudGluZyB0aGUgMnRvMyBjb252ZXJzaW9uLCBsaWIydG8zLCB3YXMgYWRkZWQgdG8KLSAgdGhlIHN0YW5kYXJkIGRpc3RyaWJ1dGlvbi4KLQotLSBJc3N1ZSAjMTc0Nzg1ODogRml4IGNob3duIHRvIHdvcmsgd2l0aCBsYXJnZSB1aWQncyBhbmQgZ2lkJ3Mgb24KLSAgNjQtYml0IHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTIwMjogemxpYi5jcmMzMiBhbmQgemxpYi5hZGxlcjMyIG5vIGxvbmdlciByZXR1cm4gZGlmZmVyZW50Ci0gIHZhbHVlcyBvbiAzMi1iaXQgdnMuIDY0LWJpdCBweXRob24gaW50ZXJwcmV0ZXJzLiAgQm90aCB3ZXJlIGNvcnJlY3QsCi0gIGJ1dCB0aGV5IG5vdyBib3RoIHJldHVybiBhIHNpZ25lZCBpbnRlZ2VyIG9iamVjdCBmb3IgY29uc2lzdGVuY3kuCi0KLS0gSXNzdWUgIzExNTg6IGFkZCAlZiBmb3JtYXQgKGZyYWN0aW9ucyBvZiBhIHNlY29uZCByZXByZXNlbnRlZCBhcwotICBtaWNyb3NlY29uZHMpIHRvIGRhdGV0aW1lIG9iamVjdHMuICBVbmRlcnN0b29kIGJ5IGJvdGggc3RycHRpbWUgYW5kCi0gIHN0cmZ0aW1lLgotCi0tIElzc3VlICM3MDU4MzY6IHN0cnVjdC5wYWNrKCI+ZiIsIHgpIG5vdyByYWlzZXMgT3ZlcmZsb3dFcnJvciBvbiBhbGwKLSAgcGxhdGZvcm1zIHdoZW4geCBpcyB0b28gbGFyZ2UgdG8gZml0IGludG8gYW4gSUVFRSA3NTQgZmxvYXQ7Ci0gIHByZXZpb3VzbHkgaXQgb25seSByYWlzZWQgT3ZlcmZsb3dFcnJvciBvbiBub24gSUVFRSA3NTQgcGxhdGZvcm1zLgotCi0tIElzc3VlcyAjMjE2NiwgIzE3NDEgYW5kICMxNTMxNTA1OiBub3cgZGlzdHV0aWxzIGRlYWxzIHdpdGggSE9NRQotICBjb3JyZWN0bHkgdW5kZXIgd2luMzIKLQotLSBQYXRjaCAjMTg1ODogZGlzdHV0aWxzOiBhZGRlZCBtdWx0aXBsZSBzZXJ2ZXIgc3VwcG9ydCBpbiAucHlwaXJjCi0KLS0gSXNzdWUgIzExMDYzMTY6IHBkYi5wb3N0X21vcnRlbSgpJ3MgcGFyYW1ldGVyLCAidHJhY2ViYWNrIiwgaXMgbm93Ci0gIG9wdGlvbmFsOiBpdCBkZWZhdWx0cyB0byB0aGUgdHJhY2ViYWNrIG9mIHRoZSBleGNlcHRpb24gdGhhdCBpcwotICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoaXMgbWFuZGF0b3J5IHRvIGJlIGluIHRoZSBtaWRkbGUgb2YgYW4KLSAgZXhjZXB0aW9uLCBvdGhlcndpc2UgaXQgcmFpc2VzIFZhbHVlRXJyb3IpLgotCi0tIElzc3VlICMxMTkzNTc3OiBBIC5zaHV0ZG93bigpIG1ldGhvZCBoYXMgYmVlbiBhZGRlZCB0byBTb2NrZXRTZXJ2ZXJzCi0gIHdoaWNoIHRlcm1pbmF0ZXMgdGhlIC5zZXJ2ZV9mb3JldmVyKCkgbG9vcC4KLQotLSBJc3N1ZSAjMjIyMDogaGFuZGxlIHJsY29tcGxldGVyIGF0dHJpYnV0ZSBtYXRjaCBmYWlsdXJlIG1vcmUKLSAgZ3JhY2VmdWxseS4KLQotLSBJc3N1ZSAjMjIyNTogcHlfY29tcGlsZSwgd2hlbiBleGVjdXRlZCBhcyBhIHNjcmlwdCwgbm93IHJldHVybnMgYQotICBub24tIHplcm8gc3RhdHVzIGNvZGUgaWYgbm90IGFsbCBmaWxlcyBjb3VsZCBiZSBjb21waWxlZAotICBzdWNjZXNzZnVsbHkuCi0KLS0gQnVnICMxNzI1NzM3OiBJbiBkaXN0dXRpbHMnIHNkaXN0LCBleGNsdWRlIFJDUywgQ1ZTIGV0Yy4gYWxzbyBpbiB0aGUKLSAgcm9vdCBkaXJlY3RvcnksIGFuZCBhbHNvIGV4Y2x1ZGUgLmhnLCAuZ2l0LCAuYnpyLCBhbmQgX2RhcmNzLgotCi0tIElzc3VlICMxODcyOiBUaGUgc3RydWN0IG1vZHVsZSB0eXBlY29kZSBmb3IgX0Jvb2wgaGFzIGJlZW4gY2hhbmdlZAotICBmcm9tICd0JyB0byAnPycuCi0KLS0gVGhlIGJ1bmRsZWQgbGliZmZpIGNvcHkgaXMgbm93IGluIHN5bmMgd2l0aCB0aGUgcmVjZW50bHkgcmVsZWFzZWQKLSAgbGliZmZpMy4wLjQgdmVyc2lvbiwgYXBhcnQgZnJvbSBzb21lIHNtYWxsIGNoYW5nZXMgdG8KLSAgTW9kdWxlcy9fY3R5cGVzL2xpYmZmaS9jb25maWd1cmUuYWMuICBPbiBPUyBYLCBwcmVjb25maWd1cmVkIGxpYmZmaQotICBmaWxlcyBhcmUgdXNlZC4gIE9uIGFsbCBsaW51eCBzeXN0ZW1zIHRoZSAtLXdpdGgtc3lzdGVtLWZmaQotICBjb25maWd1cmUgb3B0aW9uIGRlZmF1bHRzIHRvICJ5ZXMiLgotCi0tIElzc3VlICMxNTc3OiBzaHV0aWwubW92ZSgpIG5vdyBjYWxscyBvcy5yZW5hbWUoKSBpZiB0aGUgZGVzdGluYXRpb24KLSAgaXMgYSBkaXJlY3RvcnkgaW5zdGVhZCBvZiBjb3B5aW5nLXRoZW4tcmVtb3ZlLXNvdXJjZS4KLQotVGVzdHMKLS0tLS0tCi0KLS0gdGVzdF9uaXMgbm8gbG9uZ2VyIGZhaWxzIHdoZW4gdGVzdC50ZXN0X3N1cHBvcnQudmVyYm9zZSBpcyB0cnVlIGFuZAotICBOSVMgaXMgbm90IHNldCB1cCBvbiB0aGUgdGVzdGluZyBtYWNoaW5lLgotCi0tIE91dHB1dCBjb21wYXJpc29uIHRlc3RzIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkLgotCi0tIFJld3JpdGUgdGVzdF9lcnJubyB0byB1c2UgdW5pdHRlc3QgYW5kIG5vIGxvbmdlciBiZSBhIG5vLW9wLgotCi0tIEdIT1AgMjM0OiBDb252ZXJ0IHRlc3RfZXh0Y2FsbCB0byBkb2N0ZXN0LgotCi0tIEdIT1AgMjkwOiBDb252ZXJ0IHRlc3RfZGJtIGFuZCB0ZXN0X2R1bW15X3RocmVhZGluZyB0byB1bml0dGVzdC4KLQotLSBHSE9QIDI5MzogQ29udmVydCB0ZXN0X3N0cmZ0aW1lLCB0ZXN0X2dldGFyZ3MsIGFuZCB0ZXN0X3BlcDI0NyB0bwotICB1bml0dGVzdC4KLQotLSBJc3N1ZSAjMjA1NTogQ29udmVydCB0ZXN0X2ZjbnRsIHRvIHVuaXR0ZXN0LgotCi0tIElzc3VlICMxOTYwOiBDb252ZXJ0IHRlc3RfZ2RibSB0byB1bml0dGVzdC4KLQotLSBHSE9QIDI5NDogQ29udmVydCB0ZXN0X2NvbnRhaW5zLCB0ZXN0X2NyeXB0LCBhbmQgdGVzdF9zZWxlY3QgdG8KLSAgdW5pdHRlc3QuCi0KLS0gR0hPUCAyMzg6IENvbnZlcnQgdGVzdF90b2tlbml6ZSB0byB1c2UgZG9jdGVzdC4KLQotLSBHSE9QIDIzNzogUmV3cml0ZSB0ZXN0X3RocmVhZCB1c2luZyB1bml0dGVzdC4KLQotLSBQYXRjaCAjMjIzMjogb3MudG1wZmlsZSBtaWdodCBmYWlsIG9uIFdpbmRvd3MgaWYgdGhlIHVzZXIgaGFzIG5vCi0gIHBlcm1pc3Npb24gdG8gY3JlYXRlIGZpbGVzIGluIHRoZSByb290IGRpcmVjdG9yeS4KLQotQnVpbGQKLS0tLS0tCi0KLS0gQSBuZXcgc2NyaXB0IDJ0bzMgaXMgbm93IGluc3RhbGxlZCwgdG8gcnVuIHRoZSAyLnggdG8gMy54IGNvbnZlcnRlci4KLQotLSBQeXRob24vbWVtbW92ZS5jIGFuZCBQeXRob24vc3RyZXJyb3IuYyBoYXZlIGJlZW4gcmVtb3ZlZDsgYm90aAotICBmdW5jdGlvbnMgYXJlIGluIHRoZSBDODkgc3RhbmRhcmQgbGlicmFyeS4KLQotLSBQYXRjaCAjMjI4NDogQWRkIC14NjQgb3B0aW9uIHRvIHJ0LmJhdC4KLQotQyBBUEkKLS0tLS0tCi0KLS0gUGF0Y2ggIzI0Nzc6IEFkZGVkIFB5UGFyc2VyX1BhcnNlRmlsZUZsYWdzRXgoKSBhbmQKLSAgUHlQYXJzZXJfUGFyc2VTdHJpbmdGbGFnc0ZpbGVuYW1lRXgoKS4KLQotCi1XaGF0J3MgTmV3IGluIFB5dGhvbiAyLjYgYWxwaGEgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qUmVsZWFzZSBkYXRlOiAyOS1GZWItMjAwOCoKLQotQ29yZSBhbmQgYnVpbHRpbnMKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS0gSXNzdWUgIzIwNTE6IHB5YyBhbmQgcHlvIGZpbGVzIGFyZSBubyBsb25nZXIgY3JlYXRlZCB3aXRoIHBlcm1pc3Npb24KLSAgNjQ0LiBUaGUgbW9kZSBpcyBub3cgaW5oZXJpdGVkIGZyb20gdGhlIHB5IGZpbGUuCi0KLS0gSXNzdWUgIzIwNjc6IGZpbGUuX19leGl0X18oKSBub3cgY2FsbHMgc3ViY2xhc3NlcycgY2xvc2UoKSBtZXRob2QuCi0KLS0gUGF0Y2ggIzE3NTk6IEJhY2twb3J0IG9mIFBFUCAzMTI5IGNsYXNzIGRlY29yYXRvcnMuCi0KLS0gSXNzdWUgIzE4ODE6IEFuIGludGVybmFsIHBhcnNlciBsaW1pdCBoYXMgYmVlbiBpbmNyZWFzZWQuIEFsc28gc2VlCi0gIGlzc3VlICMyMTU1NTUgZm9yIGEgZGlzY3Vzc2lvbi4KLQotLSBBZGRlZCB0aGUgZnV0dXJlX2J1aWx0aW5zIG1vZHVsZSwgd2hpY2ggY29udGFpbnMgaGV4KCkgYW5kIG9jdCgpLgotICBUaGVzZSBhcmUgdGhlIFBFUCAzMTI3IHZlcnNpb24gb2YgdGhlc2UgZnVuY3Rpb25zLCBkZXNpZ25lZCB0byBiZQotICBjb21wYXRpYmxlIHdpdGggdGhlIGhleCgpIGFuZCBvY3QoKSBidWlsdGlucyBmcm9tIFB5dGhvbiAzLjAuICBUaGV5Ci0gIGRpZmZlciBzbGlnaHRseSBpbiB0aGVpciBvdXRwdXQgZm9ybWF0cyBmcm9tIHRoZSBleGlzdGluZywgdW5jaGFuZ2VkCi0gIFB5dGhvbiAyLjYgYnVpbHRpbnMuICBUaGUgZXhwZWN0ZWQgdXNhZ2Ugb2YgdGhlIGZ1dHVyZV9idWlsdGlucwotICBtb2R1bGUgaXM6Ci0gICAgZnJvbSBmdXR1cmVfYnVpbHRpbnMgaW1wb3J0IGhleCwgb2N0Ci0KLS0gSXNzdWUgIzE2MDA6IE1vZGlmaWVkIFB5T1NfYXNjaWlfZm9ybWF0ZCB0byB1c2UgYXQgbW9zdCAyIGRpZ2l0Ci0gIGV4cG9uZW50cyBmb3IgZXhwb25lbnRzIHdpdGggYWJzb2x1dGUgdmFsdWUgPCAxMDAuICBGb2xsb3dzIEM5OQotICBzdGFuZGFyZC4gIFRoaXMgaXMgYSBjaGFuZ2Ugb24gV2luZG93cywgd2hpY2ggd291bGQgdXNlIDMgZGlnaXRzLgotICBBbHNvLCBhZGRlZCAnbicgdG8gdGhlIGZvcm1hdHMgdGhhdCBQeU9TX2FzY2lpX2Zvcm1hdGQgdW5kZXJzdGFuZHMsCi0gIHNvIHRoYXQgYW55IGFsdGVyYXRpb25zIGl0IGRvZXMgdG8gdGhlIHJlc3VsdGluZyBzdHJpbmcgd2lsbCBiZQotICBhdmFpbGFibGUgaW4gc3RyaW5nbGliL2Zvcm1hdHRlci5oIChmb3IgZmxvYXQuX19mb3JtYXRfXykuCi0KLS0gSW1wbGVtZW50ZWQgUEVQIDMxMDEsIEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nLiAgVGhpcyBhZGRzIGEgbmV3Ci0gIGJ1aWx0aW4gZm9ybWF0KCk7IGEgZm9ybWF0KCkgbWV0aG9kIGZvciBzdHIgYW5kIHVuaWNvZGU7IGEKLSAgX19mb3JtYXRfXygpIG1ldGhvZCB0byBvYmplY3QsIHN0ciwgdW5pY29kZSwgaW50LCBsb25nLCBmbG9hdCwgYW5kCi0gIGRhdGV0aW1lOyB0aGUgY2xhc3Mgc3RyaW5nLkZvcm1hdHRlcjsgYW5kIHRoZSBDIEFQSQotICBQeU9iamVjdF9Gb3JtYXQoKS4KLQotLSBGaXhlZCBzZXZlcmFsIHBvdGVudGlhbCBjcmFzaGVzLCBhbGwgY2F1c2VkIGJ5IHNwZWNpYWxseSBjcmFmdGVkCi0gIF9fZGVsX18gbWV0aG9kcyBleHBsb2l0aW5nIG9iamVjdHMgaW4gdGVtcG9yYXJpbHkgaW5jb25zaXN0ZW50Ci0gIHN0YXRlLgotCi0tIElzc3VlICMyMTE1OiBJbXBvcnRhbnQgc3BlZWR1cCBpbiBzZXR0aW5nIF9fc2xvdF9fIGF0dHJpYnV0ZXMuICBBbHNvCi0gIHByZXZlbnQgYSBwb3NzaWJsZSBjcmFzaDogYW4gQWJzdHJhY3QgQmFzZSBDbGFzcyB3b3VsZCB0cnkgdG8gYWNjZXNzCi0gIGEgc2xvdCBvbiBhIHJlZ2lzdGVyZWQgdmlydHVhbCBzdWJjbGFzcy4KLQotLSBGaXhlZCByZXByKCkgYW5kIHN0cigpIG9mIGNvbXBsZXggbnVtYmVycyB3aXRoIGluZmluaXR5IG9yIG5hbiBhcwotICByZWFsIG9yIGltYWdpbmFyeSBwYXJ0LgotCi0tIENsZWFyIGFsbCBmcmVlIGxpc3RzIGR1cmluZyBhIGdjLmNvbGxlY3QoKSBvZiB0aGUgaGlnaGVzdCBnZW5lcmF0aW9uCi0gIGluIG9yZGVyIHRvIGFsbG93IHB5bWFsbG9jIHRvIGZyZWUgbW9yZSBhcmVuYXMuIFB5dGhvbiBtYXkgZ2l2ZSBiYWNrCi0gIG1lbW9yeSB0byB0aGUgT1MgZWFybGllci4KLQotLSBJc3N1ZSAjMjA0NTogRml4IGFuIGluZmluaXRlIHJlY3Vyc2lvbiB0cmlnZ2VyZWQgd2hlbiBwcmludGluZyBhCi0gIHN1YmNsYXNzIG9mIGNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0LCBpZiBpdHMgZGVmYXVsdF9mYWN0b3J5IGlzIHNldAotICB0byBhIGJvdW5kIG1ldGhvZC4KLQotLSBGaXhlZCBhIG1pbm9yIG1lbW9yeSBsZWFrIGluIGRpY3RvYmplY3QuYy4gVGhlIGNvbnRlbnQgb2YgdGhlIGZyZWUKLSAgbGlzdCB3YXMgbm90IGZyZWVkIG9uIGludGVycHJldGVyIHNodXRkb3duLgotCi0tIExpbWl0IGZyZWUgbGlzdCBvZiBtZXRob2QgYW5kIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdHMgdG8gMjU2Ci0gIGVudHJpZXMgZWFjaC4KLQotLSBQYXRjaCAjMTk1MzogQWRkZWQgYGBzeXMuX2NvbXBhY3RfZnJlZWxpc3RzKClgYCBhbmQgdGhlIEMgQVBJCi0gIGZ1bmN0aW9ucyBgYFB5SW50X0NvbXBhY3RGcmVlTGlzdGBgIGFuZCBgYFB5RmxvYXRfQ29tcGFjdEZyZWVMaXN0YGAKLSAgdG8gY29tcGFjdCB0aGUgaW50ZXJuYWwgZnJlZSBsaXN0cyBvZiBwcmUtYWxsb2N0ZWQgaW50cyBhbmQgZmxvYXRzLgotCi0tIElzc3VlICMxOTgzOiBGaXhlZCByZXR1cm4gdHlwZSBvZiBmb3JrKCksIGZvcmsxKCkgYW5kIGZvcmtwdHkoKQotICBjYWxscy4gIFB5dGhvbiBleHBlY3RlZCB0aGUgcmV0dXJuIHR5cGUgaW50IGJ1dCB0aGUgZm9yayBmYW1pbGllCi0gIHJldHVybnMgcGlfdC4KLQotLSBJc3N1ZSAjMTY3ODM4MDogRml4IGEgYnVnIHRoYXQgaWRlbnRpZmllcyAwaiBhbmQgLTBqIHdoZW4gdGhleQotICBhcHBlYXIgaW4gdGhlIHNhbWUgY29kZSB1bml0LgotCi0tIElzc3VlICMyMDI1OiBBZGQgdHVwbGUuY291bnQoKSBhbmQgdHVwbGUuaW5kZXgoKSBtZXRob2RzIHRvIGNvbXBseQotICB3aXRoIHRoZSBjb2xsZWN0aW9ucy5TZXF1ZW5jZSBBUEkuCi0KLS0gUGF0Y2ggIzE5NzAgYnkgQW50b2luZSBQaXRyb3U6IFNwZWVkdXAgdW5pY29kZSB3aGl0ZXNwYWNlIGFuZAotICBsaW5lYnJlYWsgZGV0ZWN0aW9uCi0KLS0gQWRkZWQgYGBQeVR5cGVfQ2xlYXJDYWNoZSgpYGAgYW5kIGBgc3lzLl9jbGVhcl90eXBlX2NhY2hlYGAgdG8gY2xlYXIKLSAgdGhlIGludGVybmFsIGxvb2t1cCBjYWNoZSBmb3IgcmVmIGxlYWsgdGVzdHMuCi0KLS0gUGF0Y2ggIzE0NzMyNTc6IGdlbmVyYXRvciBvYmplY3RzIGdhaW4gYSBnaV9jb2RlIGF0dHJpYnV0ZS4gVGhpcyBpcwotICB0aGUgc2FtZSBvYmplY3QgYXMgdGhlIGZ1bmNfY29kZSBhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQKLSAgcHJvZHVjZWQgdGhlIGdlbmVyYXRvci4KLQotLSBJc3N1ZSAjMTkyMDogIndoaWxlIDAiIHN0YXRlbWVudHMgd2VyZSBjb21wbGV0ZWx5IHJlbW92ZWQgYnkgdGhlCi0gIGNvbXBpbGVyLCBldmVuIGluIHRoZSBwcmVzZW5jZSBvZiBhbiAiZWxzZSIgY2xhdXNlLCB3aGljaCBpcwotICBzdXBwb3NlZCB0byBiZSBydW4gd2hlbiB0aGUgY29uZGl0aW9uIGlzIGZhbHNlLiBOb3cgdGhlIGNvbXBpbGVyCi0gIGNvcnJlY3RseSBlbWl0cyBieXRlY29kZSBmb3IgdGhlICJlbHNlIiBzdWl0ZS4KLQotLSBBIGZldyBjcmFzaGVycyBmaXhlZDogd2Vha3JlZl9pbl9kZWwucHkgKGlzc3VlICMxMzc3ODU4KTsKLSAgbG9vc2luZ19kaWN0X3JlZi5weSAoaXNzdWUgIzEzMDM2MTQsIHRlc3Q2Ny5weSk7Ci0gIGJvcnJvd2VkX3JlZl9bMzRdLnB5IChub3QgaW4gdHJhY2tlcikuCi0KLS0gSXNzdWUgIzEwNjk0MTA6IFRoZSAiY2FuJ3QgbG9hZCBkbGwiIG1lc3NhZ2UgYm94IG9uIFdpbmRvd3MgaXMKLSAgc3VwcHJlc3NlZCB3aGlsZSBhbiBleHRlbnNpb24gaXMgbG9hZGVkIGJ5IGNhbGxpbmcgU2V0RXJyb3JNb2RlIGluCi0gIGR5bmxvYWRfd2luLmMuIFRoZSBlcnJvciBpcyBzdGlsbCByZXBvcnRlZCBwcm9wZXJseS4KLQotLSBJc3N1ZSAjMTkxNTogUHl0aG9uIGNvbXBpbGVzIHdpdGggLS1lbmFibGUtdW5pY29kZT1ubyBhZ2Fpbi4gSG93ZXZlcgotICBzZXZlcmFsIGV4dGVuc2lvbiBtZXRob2RzIGFuZCBtb2R1bGVzIGRvIG5vdCB3b3JrIHdpdGhvdXQgdW5pY29kZQotICBzdXBwb3J0LgotCi0tIElzc3VlICMxODgyOiB3aGVuIGNvbXBpbGluZyBjb2RlIGZyb20gYSBzdHJpbmcsIGVuY29kaW5nIGNvb2tpZXMgaW4gdGhlCi0gIHNlY29uZCBsaW5lIG9mIGNvZGUgd2VyZSBub3QgYWx3YXlzIHJlY29nbml6ZWQgY29ycmVjdGx5LgotCi0tIElzc3VlICMxNjc5OiAiMHgiIHdhcyB0YWtlbiBhcyBhIHZhbGlkIGludGVnZXIgbGl0ZXJhbC4KLQotLSBJc3N1ZSAjMTg2NTogYGBieXRlc2BgIGFzIGFuIGFsaWFzIGZvciBgYHN0cmBgIGFuZCBiIiIgYXMgYW4gYWxpYXMgIiIgd2VyZQotICBhZGRlZC4KLQotLSBzeXMuZmxvYXRfaW5mbyAvIFB5RmxvYXRfR2V0SW5mbzogVGhlIGZsb2F0aW5nIHBvaW50IGluZm9ybWF0aW9uCi0gIG9iamVjdCB3YXMgY29udmVydGVkIGZyb20gYSBkaWN0IHRvIGEgc3BlY2lhbGl6ZWQgc3RydWN0c2VxIG9iamVjdC4KLQotLSBQYXRjaCAjMTgxNjogQWRkZWQgc3lzLmZsYWdzIHN0cnVjdHNlcS4gSXQgZXhwb3NlcyB0aGUgc3RhdHVzIG9mCi0gIG1vc3QgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQgUFlUSE9OKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0KLS0gT2JqZWN0cy9zdHJ1Y3RzZXEuYzogSW1wbGVtZW50ZWQgbmV3IHN0cnVjdHNlcSByZXByZXNlbnRhdGlvbi4gVGhlCi0gIHBhdGNoIG1ha2VzIHN0cnVjdHNlcXMgKGUuZy4gdGhlIHJldHVybiB2YWx1ZSBvZiBvcy5zdGF0KSBtb3JlCi0gIHJlYWRhYmxlLgotCi0tIFBhdGNoICMxNzAwMjg4OiBhZGRlZCBhIHR5cGUgYXR0cmlidXRlIGNhY2hlIHRoYXQgY2FjaGVzIG1ldGhvZAotICBhY2Nlc3NlcywgcmVzdWx0aW5nIGluIHNwZWVkdXBzIGluIGhlYXZpbHkgb2JqZWN0LW9yaWVudGVkIGNvZGUuCi0KLS0gQnVnICMxNzc2OiBfX2ltcG9ydF9fKCkgbm8gbG9uZ2VyIGFjY2VwdHMgZmlsZW5hbWVzIG9uIGFueSBwbGF0Zm9ybS4KLSAgVGhlIGZpcnN0IHBhcmFtZXRlciB0byBfX2ltcG9ydF9fKCkgbXVzdCBiZSBhIHZhbGlkIG1vZHVsZSBuYW1lLgotCi0tIFBhdGNoICMxNjY4OiByZW5hbWVkIFRIUkVBRERFQlVHIGVudnZhciB0byBQWVRIT05USFJFQURERUJVRy4KLQotLSBQYXRjaCAjNjAyMzQ1OiBBZGQgLUIgY29tbWFuZCBsaW5lIG9wdGlvbiwgUFlUSE9ORE9OVFdSSVRFQllURUNPREUKLSAgZW52dmFyIGFuZCBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBhdHRyaWJ1dGUuIEFsbCB0aGVzZSBjYW4gYmUgc2V0Ci0gIHRvIGZvcmJpZCBQeXRob24gdG8gYXR0ZW1wdCB0byB3cml0ZSBjb21waWxlZCBieXRlY29kZSBmaWxlcy4KLQotLSBJbXByb3ZlIHNvbWUgZXhjZXB0aW9uIG1lc3NhZ2VzIHdoZW4gV2luZG93cyBmYWlscyB0byBsb2FkIGFuCi0gIGV4dGVuc2lvbiBtb2R1bGUuIE5vdyB3ZSBnZXQgZm9yIGV4YW1wbGUgJyUxIGlzIG5vdCBhIHZhbGlkIFdpbjMyCi0gIGFwcGxpY2F0aW9uJyBpbnN0ZWFkIG9mICdlcnJvciBjb2RlIDE5MycuCi0KLS0gQnVnICMxNDgxMjk2OiBGaXhlZCBsb25nKGZsb2F0KCduYW4nKSkgIT0gMEwuCi0KLS0gSXNzdWUgIzE2NDA6IEFkZGVkIG1hdGguaXNpbmYoeCksIG1hdGguaXNuYW4oeCkgYW5kIG1hdGguY29weXNpZ24oeCwKLSAgeSkgZnVuY3Rpb25zLgotCi0tIElzc3VlICMxNjM1OiBQbGF0Zm9ybSBpbmRlcGVuZGVudCBjcmVhdGlvbiBhbmQgcmVwcmVzZW50YXRpb24gb2YgTmFOCi0gIGFuZCBJTkYuIGZsb2F0KCJuYW4iKSwgZmxvYXQoImluZiIpIGFuZCBmbG9hdCgiLWluZiIpIG5vdyB3b3JrIG9uCi0gIGV2ZXJ5IHBsYXRmb3JtIHdpdGggSUVFRSA3NTQgc2VtYW50aWNzLgotCi0tIENvbXBpbGVyIG5vdyBnZW5lcmF0ZXMgc2ltcGxlciBhbmQgZmFzdGVyIGNvZGUgZm9yIGRpY3Rpb25hcnkKLSAgbGl0ZXJhbHMuICBUaGUgb3BhcmcgZm9yIEJVSUxEX01BUCBub3cgaW5kaWNhdGVzIGFuIGVzdGltYXRlZAotICBkaWN0aW9uYXJ5IHNpemUuICBUaGVyZSBpcyBhIG5ldyBvcGNvZGUsIFNUT1JFX01BUCwgZm9yIGFkZGluZwotICBlbnRyaWVzIHRvIHRoZSBkaWN0aW9uYXJ5LgotCi0tIElzc3VlICMxNjM4OiAlemQgY29uZmlndXJlIHRlc3QgZmFpbHMgb24gTGludXguCi0KLS0gSXNzdWUgIzE2MjA6IE5ldyBwcm9wZXJ0eSBkZWNvcmF0b3Igc3ludGF4IHdhcyBtb2RpZnlpbmcgdGhlCi0gIGRlY29yYXRvciBpbiBwbGFjZSBpbnN0ZWFkIG9mIGNyZWF0aW5nIGEgbmV3IGRlY29yYXRvciBvYmplY3QuCi0KLS0gSXNzdWUgIzE1Mzg6IEF2b2lkIGNvcHlpbmcgc3RyaW5nIGluIHNwbGl0L3JzcGxpdCBpZiB0aGUgc3BsaXQgY2hhcgotICBpcyBub3QgZm91bmQuCi0KLS0gSXNzdWUgIzE1NTM6IEFuIGVycm9uZW91cyBfX2xlbmd0aF9oaW50X18gY2FuIG1ha2UgbGlzdCgpIHJhaXNlIGEKLSAgU3lzdGVtRXJyb3IuCi0KLS0gUEVQIDM2NjogQWxsb3cgZXhwbGljaXQgcmVsYXRpdmUgaW1wb3J0cyB3aGVuIGV4ZWN1dGluZyBtb2R1bGVzCi0gIGluc2lkZSBwYWNrYWdlcyB3aXRoIHRoZSAtbSBzd2l0Y2ggdmlhIGEgbmV3IG1vZHVsZSBsZXZlbAotICBfX3BhY2thZ2VfXyBhdHRyaWJ1dGUuCi0KLS0gSXNzdWUgIzE0MDI6IEZpeCBhIGNyYXNoIG9uIGV4aXQsIHdoZW4gYW5vdGhlciB0aHJlYWQgaXMgc3RpbGwKLSAgcnVubmluZywgYW5kIGlmIHRoZSBkZWFsbG9jYXRpb24gb2YgaXRzIGZyYW1lcyBzb21laG93IGNhbGxzIHRoZQotICBQeUdJTFN0YXRlX0Vuc3VyZSgpIC8gUHlHSUxTdGF0ZV9SZWxlYXNlKCkgZnVuY3Rpb25zLgotCi0tIEV4cG9zZSB0aGUgUHlfUHkza1dhcm5pbmdGbGFnIGFzIHN5cy5weTNrd2FybmluZy4KLQotLSBJc3N1ZSAjMTQ0NTogRml4IGEgU3lzdGVtRXJyb3Igd2hlbiBhY2Nlc3NpbmcgdGhlIGBgY2VsbF9jb250ZW50c2BgCi0gIGF0dHJpYnV0ZSBvZiBhbiBlbXB0eSBjZWxsIG9iamVjdC4KLQotLSBJc3N1ZSAjMTQ2MDogVGhlIHV0Zi03IGluY3JlbWVudGFsIGRlY29kZXIgZGlkIG5vdCBhY2NlcHQgdHJ1bmNhdGVkCi0gIGlucHV0LiAgSXQgbm93IGNvcnJlY3RseSBzYXZlcyBpdHMgc3RhdGUgYmV0d2VlbiBjaHVua3Mgb2YgZGF0YS4KLQotLSBQYXRjaCAjMTczOTQ2ODogRGlyZWN0b3JpZXMgYW5kIHppcGZpbGVzIGNvbnRhaW5pbmcgYSBfX21haW5fXy5weQotICBmaWxlIGNhbiBub3cgYmUgZGlyZWN0bHkgZXhlY3V0ZWQgYnkgcGFzc2luZyB0aGVpciBuYW1lIHRvIHRoZQotICBpbnRlcnByZXRlci4gVGhlIGRpcmVjdG9yeS96aXBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgaW5zZXJ0ZWQgYXMgdGhlCi0gIGZpcnN0IGVudHJ5IGluIHN5cy5wYXRoLgotCi0tIElzc3VlICMxMjY1OiBGaXggYSBwcm9ibGVtIHdpdGggc3lzLnNldHRyYWNlLCBpZiB0aGUgdHJhY2luZwotICBmdW5jdGlvbiB1c2VzIGEgZ2VuZXJhdG9yIGV4cHJlc3Npb24gd2hlbiBhdCB0aGUgc2FtZSB0aW1lIHRoZQotICBleGVjdXRlZCBjb2RlIGlzIGNsb3NpbmcgYSBwYXVzZWQgZ2VuZXJhdG9yLgotCi0tIHNldHMgYW5kIGZyb3plbnNldHMgbm93IGhhdmUgYW4gaXNkaXNqb2ludCgpIG1ldGhvZC4KLQotLSBvcHRpbWl6ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgYnVpbHRpbi5zdW0oKS4KLQotLSBGaXggd2FybmluZ3MgZm91bmQgYnkgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBDb3Zlcml0eSBjaGVja2VyLgotCi0tIFRoZSBlbnVtZXJhdGUoKSBidWlsdC1pbiBmdW5jdGlvbiBpcyBubyBsb25nZXIgYm91bmRlZCB0byBzZXF1ZW5jZXMKLSAgc21hbGxlciB0aGFuIExPTkdfTUFYLiAgRm9ybWVybHksIGl0IHJhaXNlZCBhbiBPdmVyZmxvd0Vycm9yLiAgTm93LAotICBhdXRvbWF0aWNhbGx5IHNoaWZ0cyBmcm9tIGludHMgdG8gbG9uZ3MuCi0KLS0gSXNzdWUgIzE2ODYzODY6IFR1cGxlJ3MgdHBfcmVwciBkaWQgbm90IHRha2UgaW50byBhY2NvdW50IHRoZQotICBwb3NzaWJpbGl0eSBvZiBoYXZpbmcgYSBzZWxmLXJlZmVyZW50aWFsIHR1cGxlLCB3aGljaCBpcyBwb3NzaWJsZQotICBmcm9tIEMgY29kZS4gIE5vciBkaWQgb2JqZWN0J3MgdHBfc3RyIGNvbnNpZGVyIHRoYXQgYSB0eXBlJ3MgdHBfc3RyCi0gIGNvdWxkIGRvIHNvbWV0aGluZyB0aGF0IGNvdWxkIGxlYWQgdG8gYW4gaW5pZmluaXRlIHJlY3Vyc2lvbi4KLSAgUHlfUmVwckVudGVyKCkgYW5kIFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgpLCByZXNwZWN0aXZlbHksIGZpeGVkIHRoZQotICBpc3N1ZXMuCi0KLS0gSXNzdWUgIzExNjQ6IEl0IHdhcyBwb3NzaWJsZSB0byB0cmlnZ2VyIGRlYWRsb2NrIHdoZW4gdXNpbmcgdGhlCi0gICdwcmludCcgc3RhdGVtZW50IHRvIHdyaXRlIHRvIGEgZmlsZSBzaW5jZSB0aGUgR0lMIHdhcyBub3QgcmVsZWFzZWQKLSAgYXMgbmVlZGVkLiAgTm93IFB5T2JqZWN0X1ByaW50KCkgZG9lcyB0aGUgcmlnaHQgdGhpbmcgYWxvbmcgd2l0aAotICB2YXJpb3VzIHRwX3ByaW50IGltcGxlbWVudGF0aW9ucyBvZiB0aGUgYnVpbHQtaW4gdHlwZXMgYW5kIHRob3NlIGluCi0gIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUuCi0KLS0gSXNzdWUgIzExNDc6IEV4Y2VwdGlvbnMgd2VyZSBkaXJlY3RseSBhbGxvd2luZyBzdHJpbmcgZXhjZXB0aW9ucyBpbgotICB0aGVpciB0aHJvdygpIG1ldGhvZCBldmVuIHRob3VnaCBzdHJpbmcgZXhjZXB0aW9ucyBubyBsb25nZXIKLSAgYWxsb3dlZC4KLQotLSBJc3N1ZSAjMTA5NjogUHJldmVudCBhIHNlZ2ZhdWx0IGZyb20gZ2V0dGluZyB0aGUgcmVwciBvZiBhIHZlcnkKLSAgZGVlcGx5IG5lc3RlZCBsaXN0IGJ5IHVzaW5nIHRoZSByZWN1cnNpb24gY291bnRlci4KLQotLSBJc3N1ZSAjMTIwMjUzMzogRml4IGluZmluaXRlIHJlY3Vyc2lvbiBjYWxscyB0cmlnZ2VyZWQgYnkgY2FsbHMgdG8KLSAgUHlPYmplY3RfQ2FsbCgpIG5ldmVyIGNhbGxpbmcgYmFjayBvdXQgdG8gUHl0aG9uIGNvZGUgdG8gdHJpZ2dlcgotICByZWN1cnNpb24gZGVwdGggdXBkYXRlcy9jaGVja3MuICBSZXF1aXJlZCB0aGUgY3JlYXRpb24gb2YgYSBzdGF0aWMKLSAgUnVudGltZUVycm9yIGluc3RhbmNlIGluIGNhc2Ugbm9ybWFsaXppbmcgYW4gZXhjZXB0aW9uIHB1dCB0aGUKLSAgcmVjdXJzaW9uIGNoZWNrIHZhbHVlIHBhc3QgaXRzIGxpbWl0LiAgRml4ZXMgY3Jhc2hlcnMKLSAgaW5maW5pdGVfcmVjXygxfDJ8NHw1KS5weS4KLQotLSBQYXRjaCAjMTAzMTIxMzogRGVjb2RlIHNvdXJjZSBsaW5lIGluIFN5bnRheEVycm9ycyBiYWNrIHRvIGl0cwotICBvcmlnaW5hbCBzb3VyY2UgZW5jb2RpbmcuCi0KLS0gUGF0Y2ggIzE2NzM3NTk6IGFkZCBhIG1pc3Npbmcgb3ZlcmZsb3cgY2hlY2sgd2hlbiBmb3JtYXR0aW5nIGZsb2F0cwotICB3aXRoICVHLgotCi0tIFByZXZlbnQgZXhwYW5kdGFicygpIG9uIHN0cmluZyBhbmQgdW5pY29kZSBvYmplY3RzIGZyb20gY2F1c2luZyBhCi0gIHNlZ2ZhdWx0IHdoZW4gYSBsYXJnZSB3aWR0aCBpcyBwYXNzZWQgb24gMzItYml0IHBsYXRmb3Jtcy4KLQotLSBJc3N1ZSAjMTczMzQ4ODogRml4IGNvbXBpbGF0aW9uIG9mIGJ1ZmZlcm9iamVjdC5jIG9uIEFJWC4KLQotLSBJc3N1ZSAjMTcyMjQ4NTogcmVtb3ZlIGRvY3N0cmluZ3MgYWdhaW4gd2hlbiBydW5uaW5nIHdpdGggLU9PLgotCi0tIEFkZCBuZXcgYXR0cmlidXRlIG5hbWVzIGZvciBmdW5jdGlvbiBvYmplY3RzLiAgQWxsIHRoZSBmdW5jXyogYmVjb21lCi0gIF9fKl9fIGF0dHJpYnV0ZXMuICAoU29tZSBhbHJlYWR5IGV4aXN0ZWQsIGUuZy4sIF9fZG9jX18gYW5kCi0gIF9fbmFtZV9fLikKLQotLSBBZGQgLTMgb3B0aW9uIHRvIHRoZSBpbnRlcnByZXRlciB0byB3YXJuIGFib3V0IGZlYXR1cmVzIHRoYXQgYXJlCi0gIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgY2hhbmdlZC9yZW1vdmVkIGluIFB5dGhvbiAzLjAuCi0KLS0gUGF0Y2ggIzE2ODY0ODc6IHlvdSBjYW4gbm93IHBhc3MgYW55IG1hcHBpbmcgYWZ0ZXIgJyoqJyBpbiBmdW5jdGlvbgotICBjYWxscy4KLQotLSBleGNlcHQgY2xhdXNlcyBtYXkgbm93IGJlIHNwZWxsZWQgZWl0aGVyICJleGNlcHQgRSwgdGFyZ2V0OiIgb3IKLSAgImV4Y2VwdCBFIGFzIHRhcmdldDoiLiBUaGlzIGlzIHRvIHByb3ZpZGUgZm9yd2FyZHMgY29tcGF0aWJpbGl0eQotICB3aXRoIFB5dGhvbiAzLjAuCi0KLS0gRGVwcmVjYXRlIEJhc2VFeGNlcHRpb24ubWVzc2FnZSBhcyBwZXIgUEVQIDM1Mi4KLQotLSBJc3N1ZSAjMTMwMzYxNDogZG9uJ3QgZXhwb3NlIG9iamVjdCdzIF9fZGljdF9fIHdoZW4gdGhlIGRpY3QgaXMKLSAgaW5oZXJpdGVkIGZyb20gYSBidWlsdC1pbiBiYXNlLgotCi0tIFdoZW4gX19zbG90c19fIGFyZSBzZXQgdG8gYSB1bmljb2RlIHN0cmluZywgbWFrZSBpdCB3b3JrIHRoZSBzYW1lIGFzCi0gIHNldHRpbmcgYSBwbGFpbiBzdHJpbmcsIGllIGRvbid0IGV4cGFuZCB0byBzaW5nbGUgbGV0dGVyIGlkZW50aWZpZXJzLgotCi0tIFJlcXVlc3QgIzExOTE2OTk6IFNsaWNlcyBjYW4gbm93IGJlIHBpY2tsZWQuCi0KLS0gUmVxdWVzdCAjMTE5MzEyODogc3RyLnRyYW5zbGF0ZSgpIG5vdyBhbGxvd3MgYSBOb25lIGFyZ3VtZW50IGZvcgotICB0cmFuc2xhdGlvbnMgdGhhdCBvbmx5IHJlbW92ZSBjaGFyYWN0ZXJzIHdpdGhvdXQgcmUtbWFwcGluZyB0aGUKLSAgcmVtYWluaW5nIGNoYXJhY3RlcnMuCi0KLS0gUGF0Y2ggIzE2ODIyMDU6IGEgVHlwZUVycm9yIHdoaWxlIHVucGFja2luZyBhbiBpdGVyYWJsZSBpcyBubyBsb25nZXIKLSAgbWFza2VkIGJ5IGEgZ2VuZXJpYyBvbmUgd2l0aCB0aGUgbWVzc2FnZSAidW5wYWNrIG5vbi1zZXF1ZW5jZSIuCi0KLS0gUmVtb3ZlIHVudXNlZCBmaWxlIFB5dGhvbi9mbW9kLmMuCi0KLS0gQnVnICMxNjgzMzY4OiBUaGUgb2JqZWN0Ll9faW5pdF9fKCkgYW5kIG9iamVjdC5fX25ld19fKCkgbWV0aG9kcyBhcmUKLSAgbm93IHN0cmljdGVyIGluIHJlamVjdGluZyBleGNlc3MgYXJndW1lbnRzLiAgVGhlIG9ubHkgdGltZSB3aGVuCi0gIGVpdGhlciBhbGxvd3MgZXhjZXNzIGFyZ3VtZW50cyBpcyB3aGVuIGl0IGlzIG5vdCBvdmVycmlkZGVuIGFuZCB0aGUKLSAgb3RoZXIgb25lIGlzLiAgRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB3aGVuIGJvdGggYXJlCi0gIG92ZXJyaWRkZW4sIGl0IGlzIGEgZGVwcmVjYXRpb24gd2FybmluZyAoZm9yIG5vdzsgbWF5YmUgYSBQeTNrCi0gIHdhcm5pbmcgbGF0ZXIpLiAgQWxzbywgdHlwZS5fX2luaXRfXygpIGluc2lzdHMgb24gdGhlIHNhbWUgc2lnbmF0dXJlCi0gIGFzIHN1cHBvcnRlZCBieSB0eXBlLl9fbmV3X18oKS4KLQotLSBQYXRjaCAjMTY3NTQyMzogUHlDb21wbGV4X0FzQ0NvbXBsZXgoKSBub3cgdHJpZXMgdG8gY29udmVydCBhbgotICBvYmplY3QgdG8gY29tcGxleCB1c2luZyBpdHMgX19jb21wbGV4X18oKSBtZXRob2QgYmVmb3JlIGZhbGxpbmcgYmFjawotICB0byB0aGUgX19mbG9hdF9fKCkgbWV0aG9kLiBUaGVyZWZvcmUsIHRoZSBmdW5jdGlvbnMgaW4gdGhlIGNtYXRoCi0gIG1vZHVsZSBub3cgY2FuIG9wZXJhdGUgb24gb2JqZWN0cyB0aGF0IGRlZmluZSBhIF9fY29tcGxleF9fKCkKLSAgbWV0aG9kLgotCi0tIFBhdGNoICMxNjIzNTYzOiBhbGxvdyBfX2NsYXNzX18gYXNzaWdubWVudCBmb3IgY2xhc3NlcyB3aXRoCi0gIF9fc2xvdHNfXy4gIFRoZSBvbGQgYW5kIHRoZSBuZXcgY2xhc3MgYXJlIHN0aWxsIHJlcXVpcmVkIHRvIGhhdmUgdGhlCi0gIHNhbWUgc2xvdCBuYW1lcy4KLQotLSBQYXRjaCAjMTY0MjU0NzogRml4IGFuIGVycm9yL2NyYXNoIHdoZW4gZW5jb3VudGVyaW5nIHN5bnRheCBlcnJvcnMKLSAgaW4gY29tcGxleCBpZiBzdGF0ZW1lbnRzLgotCi0tIFBhdGNoICMxNDYyNDg4OiBQeXRob24gbm8gbG9uZ2VyIHNlZ2ZhdWx0cyB3aGVuCi0gIGBgb2JqZWN0Ll9fcmVkdWNlX2V4X18oKWBgIGlzIGNhbGxlZCB3aXRoIGFuIG9iamVjdCB0aGF0IGlzIGZha2luZwotICBpdHMgdHlwZS4KLQotLSBQYXRjaCAjMTY4MDAxNTogRG9uJ3QgbW9kaWZ5IF9fc2xvdHNfXyB0dXBsZSBpZiBpdCBjb250YWlucyBhCi0gIHVuaWNvZGUgbmFtZS4KLQotLSBQYXRjaCAjMTQ0NDUyOTogdGhlIGJ1aWx0aW4gY29tcGlsZSgpIG5vdyBhY2NlcHRzIGtleXdvcmQgYXJndW1lbnRzLgotCi0tIEJ1ZyAjMTY3ODY0Nzogd3JpdGUgYSBuZXdsaW5lIGFmdGVyIHByaW50aW5nIGFuIGV4Y2VwdGlvbiBpbiBhbnkKLSAgY2FzZSwgZXZlbiB3aGVuIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGEgc3RyaW5nIGZhaWxlZC4KLQotLSBUaGUgZGlyKCkgZnVuY3Rpb24gaGFzIGJlZW4gZXh0ZW5kZWQgdG8gY2FsbCB0aGUgX19kaXJfXygpIG1ldGhvZCBvbgotICBpdHMgYXJndW1lbnQsIGlmIGl0IGV4aXN0cy4gSWYgbm90LCBpdCB3aWxsIHdvcmsgbGlrZSBiZWZvcmUuIFRoaXMKLSAgYWxsb3dzIGN1c3RvbWl6aW5nIHRoZSBvdXRwdXQgb2YgZGlyKCkgaW4gdGhlIHByZXNlbmNlIG9mIGEKLSAgX19nZXRhdHRyX18oKS4KLQotLSBQYXRjaCAjOTIyMTY3OiBQeXRob24gbm8gbG9uZ2VyIHNlZ2ZhdWx0cyB3aGVuIGZhY2VkIHdpdGggaW5maW5pdGVseQotICBzZWxmLXJlY3Vyc2l2ZSByZWxvYWQoKSBjYWxscyAoYXMgcmVwb3J0ZWQgYnkgYnVnICM3NDIzNDIpLgotCi0tIFBhdGNoICMxNjc1OTgxOiByZW1vdmUgdW5yZWFjaGFibGUgY29kZSBmcm9tIGBgdHlwZS5fX25ld19fKClgYAotICBtZXRob2QuCi0KLS0gUGF0Y2ggIzE0OTE4NjY6IGNoYW5nZSB0aGUgY29tcGxleCgpIGNvbnN0cnVjdG9yIHRvIGFsbG93Ci0gIHBhcnRoZW5zaXplZCBmb3Jtcy4gVGhpcyBtZWFucyBjb21wbGV4KHJlcHIoeCkpIG5vdyB3b3JrcyBpbnN0ZWFkIG9mCi0gIHJhaXNpbmcgYSBWYWx1ZUVycm9yLgotCi0tIFBhdGNoICM3MDM3Nzk6IHVuc2V0IF9fZmlsZV9fIGluIF9fbWFpbl9fIGFmdGVyIHJ1bm5pbmcgYSBmaWxlLiBUaGlzCi0gIG1ha2VzIHRoZSBmaWxlbmFtZXMgdGhlIHdhcm5pbmcgbW9kdWxlIHByaW50cyBtdWNoIG1vcmUgc2Vuc2libGUKLSAgd2hlbiBhIFBZVEhPTlNUQVJUVVAgZmlsZSBpcyB1c2VkLgotCi0tIFZhcmlhbnQgb2YgcGF0Y2ggIzY5NzYxMzogZG9uJ3QgZXhpdCB0aGUgaW50ZXJwcmV0ZXIgb24gYSBTeXN0ZW1FeGl0Ci0gIGV4Y2VwdGlvbiBpZiB0aGUgLWkgY29tbWFuZCBsaW5lIG9wdGlvbiBvciBQWVRIT05JTlNQRUNUIGVudmlyb25tZW50Ci0gIHZhcmlhYmxlIGlzIGdpdmVuLCBidXQgYnJlYWsgaW50byB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIganVzdAotICBsaWtlIG9uIG90aGVyIGV4Y2VwdGlvbnMgb3Igbm9ybWFsIHByb2dyYW0gZXhpdC4KLQotLSBQYXRjaCAjMTYzODg3OTogZG9uJ3QgYWNjZXB0IHN0cmluZ3Mgd2l0aCBlbWJlZGRlZCBOVUwgYnl0ZXMgaW4KLSAgbG9uZygpLgotCi0tIEJ1ZyAjMTY3NDUwMzogY2xvc2UgdGhlIGZpbGUgb3BlbmVkIGJ5IGV4ZWNmaWxlKCkgaW4gYW4gZXJyb3IKLSAgY29uZGl0aW9uLgotCi0tIFBhdGNoICMxNjc0MjI4OiB3aGVuIGFzc2lnbmluZyBhIHNsaWNlIChvbGQtc3R5bGUpLCBjaGVjayBmb3IgdGhlCi0gIHNxX2Fzc19zbGljZSBpbnN0ZWFkIG9mIHRoZSBzcV9zbGljZSBzbG90LgotCi0tIFdoZW4gcHJpbnRpbmcgYW4gdW5yYWlzYWJsZSBlcnJvciwgZG9uJ3QgcHJpbnQgZXhjZXB0aW9ucy4gYmVmb3JlCi0gIHRoZSBuYW1lLiAgVGhpcyBkdXBsaWNhdGVzIHRoZSBiZWhhdmlvciB3aGVuaW5nIG5vcm1hbGx5IHByaW50aW5nCi0gIGV4Y2VwdGlvbnMuCi0KLS0gQnVnICMxNjUzNzM2OiBQcm9wZXJseSBkaXNjYXJkIHRoaXJkIGFyZ3VtZW50IHRvCi0gIHNsb3RfbmJfaW5wbGFjZV9wb3dlci4KLQotLSBQRVAgMzUyOiBSYWlzaW5nIGEgc3RyaW5nIGV4Y2VwdGlvbiBub3cgdHJpZ2dlcnMgYSBUeXBlRXJyb3IuCi0gIEF0dGVtcHRpbmcgdG8gY2F0Y2ggYSBzdHJpbmcgZXhjZXB0aW9uIHJhaXNlcyBEZXByZWNhdGlvbldhcm5pbmcuCi0KLS0gQnVnICMxMzc3ODU4OiBGaXggdGhlIHNlZ2ZhdWx0aW5nIG9mIHRoZSBpbnRlcnByZXRlciB3aGVuIGFuIG9iamVjdAotICBjcmVhdGVkIGEgd2Vha3JlZiBvbiBpdHNlbGYgZHVyaW5nIGEgX19kZWxfXyBjYWxsIGZvciBuZXctc3R5bGUKLSAgY2xhc3NlcyAoY2xhc3NpYyBjbGFzc2VzIHN0aWxsIGhhdmUgdGhlIGJ1ZykuCi0KLS0gQnVnICMxNTc5MzcwOiBNYWtlIFB5VHJhY2VCYWNrX0hlcmUgdXNlIHRoZSBjdXJyZW50IHRocmVhZCwgbm90IHRoZQotICBmcmFtZSdzIHRocmVhZCBzdGF0ZS4KLQotLSBwYXRjaCAjMTYzMDk3NTogRml4IGNyYXNoIHdoZW4gcmVwbGFjaW5nIHN5cy5zdGRvdXQgaW4KLSAgc2l0ZWN1c3RvbWl6ZS5weS4KLQotLSBQcmV2ZW50IHNlZyBmYXVsdCBvbiBzaHV0ZG93biB3aGljaCBjb3VsZCBvY2N1ciBpZiBhbiBvYmplY3QgcmFpc2VkCi0gIGEgd2FybmluZy4KLQotLSBCdWcgIzE1NjYyODA6IEV4cGxpY2l0bHkgaW52b2tlIHRocmVhZGluZy5fc2h1dGRvd24gZnJvbSBQeV9NYWluLCB0bwotICBhdm9pZCByZWx5aW5nIG9uIGF0ZXhpdC4KLQotLSBCdWcgIzE1OTA4OTE6IHJhbmRvbS5yYW5kcmFuZ2UgZG9uJ3QgcmV0dXJuIGNvcnJlY3QgdmFsdWUgZm9yIGJpZwotICBudW1iZXIuCi0KLS0gUGF0Y2ggIzE1ODY3OTE6IEJldHRlciBleGNlcHRpb24gbWVzc2FnZXMgZm9yIHNvbWUgb3BlcmF0aW9ucyBvbgotICBzdHJpbmdzLCB0dXBsZXMgYW5kIGxpc3RzLgotCi0tIEJ1ZyAjMTA2Nzc2MDogRGVwcmVjYXRlIHBhc3NpbmcgZmxvYXRzIHRvIGZpbGUuc2Vlay4KLQotLSBCdWcgIzE1OTE5OTY6IENvcnJlY3RseSBmb3J3YXJkIGV4Y2VwdGlvbiBpbiBpbnN0YW5jZV9jb250YWlucygpLgotCi0tIEJ1ZyAjMTU4ODI4NzogZml4IGludmFsaWQgYXNzZXJ0aW9uIGZvciBgMSwyYCBpbiBkZWJ1ZyBidWlsZHMuCi0KLS0gQnVnICMxNTc2NjU3OiB3aGVuIHNldHRpbmcgYSBLZXlFcnJvciBmb3IgYSB0dXBsZSBrZXksIG1ha2Ugc3VyZQotICB0aGF0IHRoZSB0dXBsZSBpc24ndCB1c2VkIGFzIHRoZSAiZXhjZXB0aW9uIGFyZ3VtZW50cyB0dXBsZSIuCi0KLS0gQnVnICMxNTY1NTE0OiBTeXN0ZW1FcnJvciBub3QgcmFpc2VkIG9uIHRvbyBtYW55IG5lc3RlZCBibG9ja3MuCi0KLS0gQnVnICMxNTc2MTc0OiBXaW5kb3dzRXJyb3Igbm93IGRpc3BsYXlzIHRoZSB3aW5kb3dzIGVycm9yIGNvZGUKLSAgYWdhaW4sIG5vIGxvbmdlciB0aGUgcG9zaXggZXJyb3IgY29kZS4KLQotLSBQYXRjaCAjMTU0OTA0OTogU3VwcG9ydCBsb25nIHZhbHVlcyBpbiBzdHJ1Y3RtZW1iZXIsIGlzc3VlIHdhcm5pbmdzCi0gIGlmIHRoZSBhc3NpZ25lZCB2YWx1ZSBmb3Igc3RydWN0bWVtYmVyIGZpZWxkcyBnZXRzIHRydW5jYXRlZC4KLQotLSBVcGRhdGUgdGhlIHBlZXBob2xlIG9wdGltaXplciB0byByZW1vdmUgbW9yZSBkZWFkIGNvZGUgKGp1bXBzIGFmdGVyCi0gIHJldHVybnMpIGFuZCBpbmxpbmUgdW5jb25kaXRpb25hbCBqdW1wcyB0byByZXR1cm5zLgotCi0tIEJ1ZyAjMTU0NTQ5Nzogd2hlbiBnaXZlbiBhbiBleHBsaWNpdCBiYXNlLCBpbnQoKSBkaWQgaWdub3JlIE5VTHMKLSAgZW1iZWRkZWQgaW4gdGhlIHN0cmluZyB0byBjb252ZXJ0LgotCi0tIEJ1ZyAjMTU2OTk5ODogYnJlYWsgaW5zaWRlIGEgdHJ5IHN0YXRlbWVudCAob3V0c2lkZSBhIGxvb3ApIGlzIG5vdwotICByZWNvZ25pemVkIGFuZCByZWplY3RlZC4KLQotLSBsaXN0LnBvcCh4KSBhY2NlcHRzIGFueSBvYmplY3QgeCBmb2xsb3dpbmcgdGhlIF9faW5kZXhfXyBwcm90b2NvbC4KLQotLSBBIG51bWJlciBvZiBwbGFjZXMsIGluY2x1ZGluZyBpbnRlZ2VyIG5lZ2F0aW9uIGFuZCBhYnNvbHV0ZSB2YWx1ZSwKLSAgd2VyZSBmaXhlZCB0byBub3QgcmVseSBvbiB1bmRlZmluZWQgYmVoYXZpb3VyIG9mIHRoZSBDIGNvbXBpbGVyCi0gIGFueW1vcmUuCi0KLS0gQnVnICMxNTY2ODAwOiBtYWtlIHN1cmUgdGhhdCBFbnZpcm9ubWVudEVycm9yIGNhbiBiZSBjYWxsZWQgd2l0aCBhbnkKLSAgbnVtYmVyIG9mIGFyZ3VtZW50cywgYXMgd2FzIHRoZSBjYXNlIGluIFB5dGhvbiAyLjQuCi0KLS0gUGF0Y2ggIzE1Njc2OTE6IHN1cGVyKCkgYW5kIG5ldy5pbnN0YW5jZW1ldGhvZCgpIG5vdyBkb24ndCBhY2NlcHQKLSAga2V5d29yZCBhcmd1bWVudHMgYW55IG1vcmUgKHByZXZpb3VzbHkgdGhleSBhY2NlcHRlZCB0aGVtLCBidXQKLSAgZGlkbid0IHVzZSB0aGVtKS4KLQotLSBGaXggYSBidWcgaW4gdGhlIHBhcnNlcidzIGZ1dHVyZSBzdGF0ZW1lbnQgaGFuZGxpbmcgdGhhdCBsZWQgdG8KLSAgIndpdGgiIG5vdCBiZWluZyByZWNvZ25pemVkIGFzIGEga2V5d29yZCBhZnRlciwgZS5nLiwgdGhpcwotICBzdGF0ZW1lbnQ6IGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHdpdGhfc3RhdGVtZW50Ci0KLS0gQnVnICMxNTU3MjMyOiBmaXggc2VnIGZhdWx0IHdpdGggZGVmIGYoKCgoeCkpKSkgYW5kIGRlZiBmKCgoeCksKSkuCi0KLS0gRml4ICV6ZCBzdHJpbmcgZm9ybWF0dGluZyBvbiBNYWMgT1MgWCBzbyBpdCBwcmludHMgbmVnYXRpdmUgbnVtYmVycy4KLQotLSBBbGxvdyBleGNlcHRpb24gaW5zdGFuY2VzIHRvIGJlIGRpcmVjdGx5IHNsaWNlZCBhZ2Fpbi4KLQotLSBCdWcgIzE1NTE0MzI6IEV4Y2VwdGlvbnMgZG8gbm90IGRlZmluZSBhbiBleHBsaWNpdCBfX3VuaWNvZGVfXwotICBtZXRob2QuICBUaGlzIGFsbG93cyBjYWxsaW5nIHVuaWNvZGUoKSBvbiBleGNlcHRpb25zIGNsYXNzZXMKLSAgZGlyZWN0bHkgdG8gc3VjY2VlZC4KLQotLSBCdWcgIzE1NDIwNTE6IEV4Y2VwdGlvbnMgbm93IGNvcnJlY3RseSBjYWxsIFB5T2JqZWN0X0dDX1VuVHJhY2suCi0gIEFsc28gbWFrZSBzdXJlIHRoYXQgZXZlcnkgZXhjZXB0aW9uIGNsYXNzIGhhcyBfX21vZHVsZV9fIHNldCB0bwotICAnZXhjZXB0aW9ucycuCi0KLS0gQnVnICMxNTUwOTgzOiBlbWl0IGJldHRlciBlcnJvciBtZXNzYWdlcyBmb3IgZXJyb25lb3VzIHJlbGF0aXZlCi0gIGltcG9ydHMgKGlmIG5vdCBpbiBwYWNrYWdlIGFuZCBpZiBiZXlvbmQgdG9wbGV2ZWwgcGFja2FnZSkuCi0KLS0gT3ZlcmZsb3cgY2hlY2tpbmcgY29kZSBpbiBpbnRlZ2VyIGRpdmlzaW9uIHJhbiBhZm91bCBvZiBuZXcgZ2NjCi0gIG9wdGltaXphdGlvbnMuICBDaGFuZ2VkIHRvIGJlIG1vcmUgc3RhbmRhcmQtY29uZm9ybWluZy4KLQotLSBQYXRjaCAjMTU0MjQ1MTogZGlzYWxsb3cgY29udGludWUgYW55d2hlcmUgdW5kZXIgYSBmaW5hbGx5LgotCi0tIFBhdGNoICMxNTQ2Mjg4OiBmaXggc2VnIGZhdWx0IGluIGRpY3RfZXF1YWwgZHVlIHRvIHJlZiBjb3VudGluZyBidWcuCi0KLS0gVGhlIHJldHVybiB0dXBsZSBmcm9tIHN0ci5ycGFydGl0aW9uKHNlcCkgaXMgKHRhaWwsIHNlcCwgaGVhZCkgd2hlcmUKLSAgaGVhZCBpcyB0aGUgb3JpZ2luYWwgc3RyaW5nIGlmIHNlcCB3YXMgbm90IGZvdW5kLgotCi0tIEJ1ZyAjMTUyMDg2NDogdW5wYWNraW5nIHNpbmdsZXRvbiB0dXBsZXMgaW4gbGlzdCBjb21wcmVoZW5zaW9ucyBhbmQKLSAgZ2VuZXJhdG9yIGV4cHJlc3Npb25zICh4IGZvciB4LCBpbiAuLi4gKSB3b3JrcyBhZ2Fpbi4gIEZpeGluZyB0aGlzCi0gIHByb2JsZW0gcmVxdWlyZWQgY2hhbmdpbmcgdGhlIC5weWMgbWFnaWMgbnVtYmVyLiAgVGhpcyBtZWFucyB0aGF0Ci0gIC5weWMgZmlsZXMgZ2VuZXJhdGVkIGJlZm9yZSAyLjVjMiB3aWxsIGJlIHJlZ2VuZXJhdGVkLgotCi0tIGBgd2l0aGBgIGFuZCBgYGFzYGAgYXJlIG5vdyBrZXl3b3Jkcy4KLQotLSBCdWcgIzE2NjQ5NjY6IEZpeCBjcmFzaCBpbiBleGVjIGlmIFVuaWNvZGUgZmlsZW5hbWUgY2FuJ3QgYmUKLSAgZGVjb2RlZC4KLQotLSBJc3N1ZSAjMTUzNzogQ2hhbmdlZCBHZW5lcmF0b3JFeGl0J3MgYmFzZSBjbGFzcyBmcm9tIEV4Y2VwdGlvbiB0bwotICBCYXNlRXhjZXB0aW9uLgotCi0tIElzc3VlICMxNzAzNDQ4OiBBIGpvaW5lZCB0aHJlYWQgY291bGQgc2hvdyB1cCBpbiB0aGUKLSAgdGhyZWFkaW5nLmVudW1lcmF0ZSgpIGxpc3QgYWZ0ZXIgdGhlIGpvaW4oKSBmb3IgYSBicmllZiBwZXJpb2QgdW50aWwKLSAgaXQgYWN0dWFsbHkgZXhpdGVkLgotCi1MaWJyYXJ5Ci0tLS0tLS0tCi0KLS0gUGF0Y2ggIzIyNzQ6IEFkZCBoZWFwcS5oZWFwcHVzaHBvcCgpLgotCi0tIEFkZCBpbnNwZWN0LmlzYWJzdHJhY3Qob2JqZWN0KSB0byBmaXggYnVnICMyMjIzCi0KLS0gQWRkIGEgX19mb3JtYXRfXyBtZXRob2QgdG8gRGVjaW1hbCwgdG8gc3VwcG9ydCBQRVAgMzEwMS4KLQotLSBBZGQgYSB0aW1pbmcgcGFyYW1ldGVyIHdoZW4gdXNpbmcgdHJhY2UuVHJhY2UgdG8gcHJpbnQgb3V0Ci0gIHRpbWVzdGFtcHMuCi0KLS0gSXNzdWUgIzE2Mjc6IGh0dHBsaWIgbm93IGlnbm9yZXMgbmVnYXRpdmUgQ29udGVudC1MZW5ndGggaGVhZGVycy4KLQotLSBJc3N1ZSAjOTAwNzQ0OiBJZiBhbiBpbnZhbGlkIGNodW5rZWQtZW5jb2RpbmcgaGVhZGVyIGlzIHNlbnQgYnkgYQotICBzZXJ2ZXIsIGh0dHBsaWIgd2lsbCBub3cgcmFpc2UgSW5jb21wbGV0ZVJlYWQgYW5kIGNsb3NlIHRoZQotICBjb25uZWN0aW9uIGluc3RlYWQgb2YgcmFpc2luZyBWYWx1ZUVycm9yLgotCi0tIElzc3VlICMxNDkyOiBUaGUgY29udGVudCB0eXBlIG9mIEJhc2VIVFRQU2VydmVyIGVycm9yIG1lc3NhZ2VzIGNhbgotICBub3cgYmUgb3ZlcnJpZGRlbi4KLQotLSBJc3N1ZSAjMTc4MTogQ29uZmlnUGFyc2VyIG5vdyBkb2VzIG5vdCBsZXQgeW91IGFkZCB0aGUgImRlZmF1bHQiIHNlY3Rpb24KLSAgKGlnbm9yZS1jYXNlKQotCi0tIFJlbW92ZWQgdXNlcyBvZiBkaWN0Lmhhc19rZXkoKSBmcm9tIGRpc3R1dGlscywgYW5kIHVzZXMgb2YKLSAgY2FsbGFibGUoKSBmcm9tIGNvcHlfcmVnLnB5LCBzbyB0aGUgaW50ZXJwcmV0ZXIgbm93IHN0YXJ0cyB1cAotICB3aXRob3V0IHdhcm5pbmdzIHdoZW4gJy0zJyBpcyBnaXZlbi4gIE1vcmUgd29yayBsaWtlIHRoaXMgbmVlZHMgdG8KLSAgYmUgZG9uZSBpbiB0aGUgcmVzdCBvZiB0aGUgc3RkbGliLgotCi0tIElzc3VlICMxOTE2OiBhZGRlZCBpc2dlbmVyYXRvcigpIGFuZCBpc2dlbmVyYXRvcmZ1bmN0aW9uKCkgdG8KLSAgaW5zcGVjdC5weS4KLQotLSBJc3N1ZSAjMTIyNDogRml4ZWQgYmFkIHVybCBwYXJzaW5nIHdoZW4gcGF0aCBiZWdpbnMgd2l0aCBkb3VibGUKLSAgc2xhc2guCi0KLS0gY3R5cGVzIGluc3RhbmNlcyB0aGF0IGFyZSBub3Qgb3IgZG8gbm90IGNvbnRhaW4gcG9pbnRlcnMgY2FuIG5vdyBiZQotICBwaWNrbGVkLgotCi0tIFBhdGNoICMxOTY2OiBCcmVhayBpbmZpbml0ZSBsb29wIGluIGh0dHBsaWIgd2hlbiB0aGUgc2VydmVycwotICBpbXBsZW1lbnRzIHRoZSBjaHVua2VkIGVuY29kaW5nIGluY29ycmVjdGx5LgotCi0tIFJlbmFtZSByYXRpb25hbC5weSB0byBmcmFjdGlvbnMucHkgYW5kIHRoZSByYXRpb25hbC5SYXRpb25hbCBjbGFzcwotICB0byBmcmFjdGlvbnMuRnJhY3Rpb24sIHRvIGF2b2lkIHRoZSBuYW1lIGNsYXNoIHdpdGggdGhlIGFic3RyYWN0Ci0gIGJhc2UgY2xhc3MgbnVtYmVycy5SYXRpb25hbC4gIFNlZSBkaXNjdXNzaW9uIGluIGlzc3VlICMxNjgyLgotCi0tIFRoZSBwaWNrbGV0b29scyBtb2R1bGUgbm93IHByb3ZpZGVzIGFuIG9wdGltaXplKCkgZnVuY3Rpb24gdGhhdAotICBlbGltaW5hdGVzIHVudXNlZCBQVVQgb3Bjb2RlcyBmcm9tIGEgcGlja2xlIHN0cmluZy4KLQotLSBQYXRjaCAjMjAyMTogQWxsb3cgdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlIGFuZAotICBTcG9vbGVkVGVtcG9yYXJ5RmlsZSB0byBiZSB1c2VkIGluIHdpdGggc3RhdGVtZW50cyBieSBjb3JyZWN0bHkKLSAgc3VwcG9ydGluZyB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLgotCi0tIFBhdGNoICMxOTc5OiBBZGQgcmljaCBjb21wYXJpc29ucyB0byBEZWNpbWFsLCBhbmQgbWFrZSBEZWNpbWFsCi0gIGNvbXBhcmlzb25zIGludm9sdmluZyBhIE5hTiBmb2xsb3cgdGhlIElFRUUgNzU0IHN0YW5kYXJkLgotCi0tIElzc3VlICMyMDA0OiB0YXJmaWxlLnB5OiBVc2UgbW9kZSAwNzAwIGZvciB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMgYW5kCi0gIGRlZmF1bHQgcGVybWlzc2lvbnMgZm9yIG1pc3NpbmcgZGlyZWN0b3JpZXMuCi0KLS0gSXNzdWUgIzE3NTAwNjogVGhlIGRlYnVnZ2VyIHVzZWQgdG8gc2tpcCB0aGUgY29uZGl0aW9uIG9mIGEgIndoaWxlIgotICBzdGF0ZW1lbnQgYWZ0ZXIgdGhlIGZpcnN0IGl0ZXJhdGlvbi4gTm93IGl0IGNvcnJlY3RseSBzdGVwcyBvbiB0aGUKLSAgZXhwcmVzc2lvbiwgYW5kIGJyZWFrcG9pbnRzIG9uIHRoZSAid2hpbGUiIHN0YXRlbWVudCBhcmUgaG9ub3JlZCBvbgotICBlYWNoIGxvb3AuCi0KLS0gSXNzdWUgIzE3NjUxNDA6IGFkZCBhbiBvcHRpb25hbCBkZWxheSBhcmd1bWVudCB0byBGaWxlSGFuZGxlciBhbmQKLSAgaXRzIHN1YmNsYXNzZXMuIERlZmF1bHRzIHRvIGZhbHNlIChleGlzdGluZyBiZWhhdmlvdXIpLCBidXQgaWYgdHJ1ZSwKLSAgZGVmZXJzIG9wZW5pbmcgdGhlIGZpbGUgdW50aWwgdGhlIGZpcnN0IGNhbGwgdG8gZW1pdCgpLgotCi0tIFRoZSBwcHJpbnQgbW9kdWxlIG5vdyBzdXBwb3J0cyBzZXRzIGFuZCBmcm96ZW5zZXRzLgotCi0tIElzc3VlICMxMjIxNTk4OiBhZGQgb3B0aW9uYWwgY2FsbGJhY2tzIHRvIGZ0cGxpYi5GVFAncyBzdG9yYmluYXJ5KCkKLSAgYW5kIHN0b3JsaW5lcygpIG1ldGhvZHMuICAoQ29udHJpYnV0ZWQgYnkgUGhpbCBTY2h3YXJ0eikKLQotLSBJc3N1ZSAjMTcxNTogaW5jbHVkZSBzdWItZXh0ZW5zaW9uIG1vZHVsZXMgaW4gcHlkb2MncyB0ZXh0IG91dHB1dC4KLQotLSBJc3N1ZSAjMTgzNjogZml4IGFuIG9mZi1ieS1vbmUgYnVnIGluIFRpbWVkUm90YXRpbmdIYW5kbGVyJ3MKLSAgcm9sbG92ZXIgdGltZSBjYWxjdWxhdGlvbi4KLQotLSBJc3N1ZSAjMTAyMTogZml4IGEgYnVnIHRvIGFsbG93IGJhc2ljQ29uZmlnIHRvIGFjY2VwdCBOT1RTRVQgYXMgYQotICBsZXZlbC4KLQotLSBJc3N1ZSAjOTMyNTYzOiBhZGQgTG9nZ2VyQWRhcHRlciBjb252ZW5pZW5jZSBjbGFzcyB0byBtYWtlIGl0IGVhc2llcgotICB0byBhZGQgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBpbiBsb2dnaW5nIG91dHB1dC4KLQotLSBJc3N1ZSAjMTc2MDU1NjogZml4IGEgYnVnIHRvIGF2b2lkIEZpbGVIYW5kbGVyIHRocm93aW5nIGFuIGV4Y2VwdGlvbgotICBpbiBmbHVzaCgpLgotCi0tIEJ1ZyAjMTUzMDk1OTogZGlzdHV0aWxzJyBidWlsZCBjb21tYW5kIG5vdyB1c2VzIGRpZmZlcmVudCBidWlsZAotICBkaXJlY3Rvcnkgd2hlbiBidWlsZGluZyBleHRlbnNpb24gbW9kdWxlcyBhZ2FpbnN0IHZlcnNpb25zIG9mIFB5dGhvbgotICBjb21waWxlZCB3aXRoIGBgLS13aXRoLXB5ZGVidWdgYC4KLQotLSBJc3N1ZSAjMTU1NTUwMTogbW92ZSBwbGlzdGxpYiBmcm9tIHBsYXQtbWFjIGRpcmVjdG9yeSB0byBnZW5lcmFsCi0gIGxpYnJhcnkuCi0KLS0gSXNzdWUgIzEyNjk6IGZpeCBhIGJ1ZyBpbiBwc3RhdHMuYWRkX2NhbGxlcnMoKSBhbmQgYWRkIGEgdW5pdCB0ZXN0Ci0gIGZpbGUgZm9yIHBzdGF0cy4KLQotLSBJc3N1ZSAjMTY2OTogZG9uJ3QgYWxsb3cgc2h1dGlsLnJtdHJlZSgpIHRvIGJlIGNhbGxlZCBvbiBhIHN5bWxpbmsKLSAgdG8gYSBkaXJlY3RvcnkuCi0KLS0gSXNzdWUgIzE2NjQ1MjI6IGluIHVybGxpYiwgZG9uJ3QgcmVhZCBub24tZXhpc3RpbmcgZGlyZWN0b3JpZXMgaW4KLSAgZnRwIG1vZGUsIHJldHVybmluZyBhIDAtYnl0ZSBmaWxlIC0tIHJhaXNlIGFuIElPRXJyb3IgaW5zdGVhZC4KLQotLSBJc3N1ZSAjODU2MDQ3OiByZXNwZWN0IHRoZSBgYG5vX3Byb3h5YGAgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbgotICB1c2luZyB0aGUgYGBodHRwX3Byb3h5YGAgZXRjLiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gdXJsbGliLgotCi0tIElzc3VlICMxMTc4MTQxOiBhZGQgYSBnZXRjb2RlKCkgbWV0aG9kIHRvIHRoZSBhZGRpbmZvdXJscyB0aGF0Ci0gIHVybGxpYi5vcGVuKCkgcmV0dXJucyBzbyB0aGF0IHlvdSBjYW4gcmV0cmlldmUgdGhlIEhUVFAgc3RhdHVzIGNvZGUuCi0KLS0gSXNzdWUgIzEwMDM6IEZpeCB6aXBmaWxlIGRlY3J5cHRpb24gY2hlY2ssIGl0IHdvdWxkIGZhaWwgemlwIGZpbGVzCi0gIHdpdGggZXh0ZW5kZWQgbG9jYWwgaGVhZGVycy4KLQotLSBJc3N1ZSAjMTE4OTIxNjogRml4IHRoZSB6aXBmaWxlIG1vZHVsZSB0byB3b3JrIG9uIGFyY2hpdmVzIHdpdGgKLSAgaGVhZGVycyBwYXN0IHRoZSAyKiozMSBieXRlIGJvdW5kYXJ5LgotCi0tIElzc3VlICMxMzM2OiBmaXggYSByYWNlIGNvbmRpdGlvbiBpbiBzdWJwcm9jZXNzLlBvcGVuIGlmIHRoZSBnYXJiYWdlCi0gIGNvbGxlY3RvciBraWNrZWQgaW4gYXQgdGhlIHdyb25nIHRpbWUgdGhhdCB3b3VsZCBjYXVzZSB0aGUgcHJvY2VzcwotICB0byBoYW5nIHdoZW4gdGhlIGNoaWxkIHdyb3RlIHRvIHN0ZGVyci4KLQotLSBJc3N1ZSAjMTE0NjogZml4IGhvdyB0ZXh0d3JhcCBicmVha3MgYSBsb25nIHdvcmQgdGhhdCB3b3VsZCBzdGFydCBpbgotICB0aGUgbGFzdCBjb2x1bW4gb2YgYSBsaW5lLgotCi0tIElzc3VlICMxNjkzMTQ5OiB0cmFjZS5weSAtLWlnbm9yZS1tb2R1bGUgLSBhY2NlcHQgbXVsdGlwbGUKLSAgY29tbWEtc2VwYXJhdGVkIG1vZHVsZXMgdG8gYmUgZ2l2ZW4uCi0KLS0gSXNzdWUgIzE4MjI6IE1JTUVNdWx0aXBhcnQuaXNfbXVsdGlwYXJ0KCkgYmVoYXZlcyBjb3JyZWN0bHkgZm9yIGEKLSAganVzdC1jcmVhdGVkIChhbmQgZW1wdHkpIGluc3RhbmNlLiBUaGFua3MgSm9uYXRoYW4gU2hhcmUuCi0KLS0gSXNzdWUgIzE4NjE6IEFkZGVkIGFuIGF0dHJpYnV0ZSB0byB0aGUgc2NoZWQgbW9kdWxlIHdoaWNoIHJldHVybnMgYW4KLSAgb3JkZXJlZCBsaXN0IG9mIHVwY29taW5nIGV2ZW50cyAoZGlzcGxheWVkIGFzIG5hbWVkIHR1cGxlcykuCi0KLS0gSXNzdWUgIzE4Mzc6IFRoZSBxdWV1ZSBtb2R1bGUgbm93IGFsc28gc3VwcG9ydHMgYSBMSUZPIHF1ZXVlIGFuZCBhCi0gIHByaW9yaXR5IHF1ZXVlLgotCi0tIFBhdGNoICMxMDQ4ODIwOiBBZGQgaW5zZXJ0LW1vZGUgZWRpdGluZyB0byBjdXJzZXMudGV4dHBhZC5UZXh0Ym94Ci0gIChwYXRjaCBieSBTdGVmYW4gV2VocikuICBBbHNvLCBmaXggYW4gb2ZmLWJ5LW9uZSBidWcgaW4KLSAgVGV4dGJveC5nYXRoZXIoKS4KLQotLSBJc3N1ZSAjMTgzMTogY3R5cGVzIG5vdyByYWlzZXMgYSBUeXBlRXJyb3IgaWYgY29uZmxpY3RpbmcgcG9zaXRpb25hbAotICBhbmQgbmFtZWQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gYSBTdHJ1Y3R1cmUgb3IgVW5pb24gaW5pdGlhbGl6ZXIuCi0gIFdoZW4gdG9vIG1hbnkgcG9zaXRpb25hbCBhcmd1bWVudHMgYXJlIHBhc3NlZCwgYWxzbyBhIFR5cGVFcnJvciBpcwotICByYWlzZWQgaW5zdGVhZCBvZiBhIFZhbHVlRXJyb3IuCi0KLS0gQ29udmVydCB0aGUgaW50ZXJuYWwgY3R5cGVzIGFycmF5IHR5cGUgY2FjaGUgdG8gYSBXZWFrVmFsdWVEaWN0IHNvCi0gIHRoYXQgYXJyYXkgdHlwZXMgZG8gbm90IGxpdmUgbG9uZ2VyIHRoYW4gbmVlZGVkLgotCi0tIElzc3VlICMxNzg2OiBwZGIgc2hvdWxkIHVzZSBpdHMgb3duIHN0ZGluL3N0ZG91dCBhcm91bmQgYW4gZXhlYyBjYWxsCi0gIGFuZCB3aGVuIGNyZWF0aW5nIGEgcmVjdXJzaXZlIGluc3RhbmNlLgotCi0tIElzc3VlICMxNjk4Mzk4OiBaaXBGaWxlLnByaW50ZGlyKCkgY3Jhc2hlZCBiZWNhdXNlIHRoZSBmb3JtYXQgc3RyaW5nCi0gIGV4cGVjdGVkIGEgdHVwbGUgdHlwZSBvZiBsZW5ndGggc2l4IGluc3RlYWQgb2YgdGltZS5zdHJ1Y3RfdGltZQotICBvYmplY3QuCi0KLS0gSXNzdWUgIzE3ODA6IFRoZSBEZWNpbWFsIGNvbnN0cnVjdG9yIG5vdyBhY2NlcHRzIGFyYml0cmFyeSBsZWFkaW5nCi0gIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIHdoZW4gY29uc3RydWN0aW5nIGZyb20gYSBzdHJpbmcuCi0gIENvbnRleHQuY3JlYXRlX2RlY2ltYWwgbm8gbG9uZ2VyIGFjY2VwdHMgdHJhaWxpbmcgbmV3bGluZXMuCi0KLS0gRGVjaW1hbC5hc190dXBsZSgpLCBkaWZmbGliLmZpbmRfbG9uZ2VzdF9tYXRjaCgpIGFuZCBpbnNwZWN0Ci0gIGZ1bmN0aW9ucyB0aGF0IHJldHVybmVkIGEgdHVwbGUgbm93IHJldHVybiBhIG5hbWVkIHR1cGxlLgotCi0tIERvY3Rlc3Qgbm93IHJldHVybnMgcmVzdWx0cyBhcyBhIG5hbWVkIHR1cGxlIGZvciByZWFkYWJpbGl0eToKLSAgICAgICgwLCA3KSAtLT4gVGVzdFJlc3VsdHMoZmFpbGVkPTAsIGF0dGVtcHRlZD03KQotCi0tIElzc3VlICM4NDYzODg6IHJlLm1hdGNoIGlzIGludGVycnVwdGlibGUgbm93LCB3aGljaCBpcyBwYXJ0aWN1bGFybHkKLSAgZ29vZCBmb3IgbG9uZyByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2hlcy4KLQotLSBQYXRjaCAjMTEzNzogYWxsb3cgc2V0dGluZyBidWZmZXJfc2l6ZSBhdHRyaWJ1dGUgb24gcHlleHBhdCBQYXJzZXIKLSAgb2JqZWN0cyB0byBzZXQgdGhlIGNoYXJhY3RlciBkYXRhIGJ1ZmZlciBzaXplLgotCi0tIElzc3VlICMxNzU3OiBUaGUgaGFzaCBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgbm8gbG9uZ2VyIGFmZmVjdGVkIGJ5Ci0gIHRoZSBjdXJyZW50IGNvbnRleHQuCi0KLS0gUGF0Y2ggIzQ2NzkyNDogYWRkIFppcEZpbGUuZXh0cmFjdCgpIGFuZCBaaXBGaWxlLmV4dHJhY3RhbGwoKSBpbiB0aGUKLSAgemlwZmlsZSBtb2R1bGUuCi0KLS0gSXNzdWUgIzE2NDY6IE1ha2Ugc29ja2V0IHN1cHBvcnQgdGhlIFRJUEMgcHJvdG9jb2wuCi0KLS0gQnVnICMxNzQyOiByZXR1cm4gb3MuY3VyZGlyIGZyb20gb3MucGF0aC5yZWxwYXRoKCkgaWYgYm90aCBhcmd1bWVudHMKLSAgYXJlIGVxdWFsIGluc3RlYWQgb2YgcmFpc2luZyBhbiBleGNlcHRpb24uCi0KLS0gUGF0Y2ggIzE2Mzc6IGZpeCB1cmxwYXJzZSBmb3IgVVJMcyBsaWtlICdodHRwOi8veC5jb20/YXJnPS9mb28nLgotCi0tIFBhdGNoICMxNjk4OiBhbGxvdyAnQCcgaW4gdXNlcm5hbWUgcGFyc2VkIGJ5IHVybHBhcnNlLnB5LgotCi0tIElzc3VlICMxNzM1OiBUYXJGaWxlLmV4dHJhY3RhbGwoKSBub3cgY29ycmVjdGx5IHNldHMgZGlyZWN0b3J5Ci0gIHBlcm1pc3Npb25zIGFuZCB0aW1lcy4KLQotLSBCdWcgIzE3MTM6IHBvc2l4cGF0aC5pc21vdW50KCkgY2xhaW1zIHN5bWxpbmsgdG8gYSBtb3VudHBvaW50IGlzIGEgbW91bnRwb2ludC4KLQotLSBCdWcgIzE2ODc6IEZ4ZWQgcGxpc3RsaWIucHkgcmVzdHJpY3RzIDxpbnRlZ2VyPiB0byBQeXRob24gaW50IHdoZW4KLSAgd3JpdGluZwotCi0tIElzc3VlICMxNzAwOiBSZWd1bGFyIGV4cHJlc3Npb24gaW5saW5lIGZsYWdzIGluY29ycmVjdGx5IGhhbmRsZQotICBjZXJ0YWluIHVuaWNvZGUgY2hhcmFjdGVycy4KLQotLSBJc3N1ZSAjMTY4OTogUEVQIDMxNDEsIG51bWVyaWMgYWJzdHJhY3QgYmFzZSBjbGFzc2VzLgotCi0tIFRrIGlzc3VlICMxODUxNTI2OiBSZXR1cm4gcmVzdWx0cyBmcm9tIFB5dGhvbiBjYWxsYmFja3MgdG8gVGNsIGFzCi0gIFRjbCBvYmplY3RzLgotCi0tIElzc3VlICMxNjQyOiBGaXggc2VnZmF1bHQgaW4gY3R5cGVzIHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBhdHRyaWJ1dGVzLgotCi0tIElzc3VlICMxNzI3NzgwOiBTdXBwb3J0IGxvYWRpbmcgcGlja2xlcyBvZiByYW5kb20uUmFuZG9tIG9iamVjdHMKLSAgY3JlYXRlZCBvbiAzMi1iaXQgc3lzdGVtcyBvbiA2NC1iaXQgc3lzdGVtcywgYW5kIHZpY2UgdmVyc2EuIEFzIGEKLSAgY29uc2VxdWVuY2Ugb2YgdGhlIGNoYW5nZSwgUmFuZG9tIHBpY2tsZXMgY3JlYXRlZCBieSBQeXRob24gMi42Ci0gIGNhbm5vdCBiZSBsb2FkZWQgaW4gUHl0aG9uIDIuNS4KLQotLSBJc3N1ZSAjMTQ1NTogVGhlIGRpc3R1dGlscyBwYWNrYWdlIG5vdyBzdXBwb3J0cyBWUyAyMDA1IGFuZCBWUyAyMDA4Ci0gIGZvciBib3RoIHRoZSBtc3ZjY29tcGlsZXIgYW5kIGN5Z3dpbmNvbXBpbGVyLgotCi0tIElzc3VlICMxNTMxOiB0YXJmaWxlLnB5OiBSZWFkIGZpbGVvYmogZnJvbSB0aGUgY3VycmVudCBvZmZzZXQsIGRvCi0gIG5vdCBzZWVrIHRvIHRoZSBzdGFydC4KLQotLSBJc3N1ZSAjMTUzNDogQWRkZWQgYSBkaWN0aW9uYXJ5IHN5cy5mbG9hdF9pbmZvIHdpdGggaW5mb3JtYXRpb24KLSAgYWJvdXQgdGhlIGludGVybmFsIGZsb2F0aW5nIHBvaW50IHR5cGUgdG8gdGhlIHN5cyBtb2R1bGUuCi0KLS0gSXNzdWUgIzE0Mjk4MTg6IHBhdGNoIGZvciB0cmFjZSBhbmQgZG9jdGVzdCBtb2R1bGVzIHNvIHRoZXkgcGxheQotICBuaWNlbHkgdG9nZXRoZXIuCi0KLS0gZG9jdGVzdCBtYWRlIGEgYmFkIGFzc3VtcHRpb24gdGhhdCBhIHBhY2thZ2UncyBfX2xvYWRlcl9fLmdldF9kYXRhKCkKLSAgbWV0aG9kIHVzZWQgdW5pdmVyc2FsIG5ld2xpbmVzLgotCi0tIElzc3VlICMxNzA1MTcwOiBjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyIHdhcyBzdGlsbCBzd2FsbG93aW5nCi0gIFN0b3BJdGVyYXRpb24gaW4gc29tZSBjYXNlcy4gVGhpcyBzaG91bGQgbm8gbG9uZ2VyIGhhcHBlbi4KLQotLSBJc3N1ZSAjMTI5MjogT24gYWxwaGEsIGFybSwgcHBjLCBhbmQgczM5MCBsaW51eCBzeXN0ZW1zIHRoZQotICAtLXdpdGgtc3lzdGVtLWZmaSBjb25maWd1cmUgb3B0aW9uIGRlZmF1bHRzIHRvICJ5ZXMiLgotCi0tIElOIG1vZHVsZSBmb3IgRnJlZUJTRCA4IGlzIGFkZGVkIGFuZCBwcmVleGlzdGluZyBGcmVlQlNEIDYgYW5kIDcKLSAgZmlsZXMgYXJlIHVwZGF0ZWQuCi0KLS0gSXNzdWVzICMxMTgxLCAjMTI4NzogdW5zZXRlbnYoKSBpcyBub3cgY2FsbGVkIHdoZW4gdGhlCi0gIG9zLmVudmlyb24ucG9wKCkgYW5kIG9zLmVudmlyb24uY2xlYXIoKSBtZXRob2RzIGFyZSB1c2VkLgotCi0tIGN0eXBlcyB3aWxsIG5vdyB3b3JrIGNvcnJlY3RseSBvbiAzMi1iaXQgc3lzdGVtcyB3aGVuIFB5dGhvbiBpcwotICBjb25maWd1cmVkIHdpdGggLS13aXRoLXN5c3RlbS1mZmkuCi0KLS0gUGF0Y2ggIzEyMDM6IGN0eXBlcyBub3cgZG9lcyB3b3JrIG9uIE9TIFggd2hlbiBQeXRob24gaXMgYnVpbHQgd2l0aAotICAtLWRpc2FibGUtdG9vbGJveC1nbHVlLgotCi0tIGNvbGxlY3Rpb25zLmRlcXVlKCkgbm93IHN1cHBvcnRzIGEgIm1heGxlbiIgYXJndW1lbnQuCi0KLS0gaXRlcnRvb2xzLmNvdW50KCkgaXMgbm8gbG9uZ2VyIGJvdW5kZWQgdG8gTE9OR19NQVguICBGb3JtZXJseSwgaXQKLSAgcmFpc2VkIGFuIE92ZXJmbG93RXJyb3IuICBOb3csIGF1dG9tYXRpY2FsbHkgc2hpZnRzIGZyb20gaW50cyB0bwotICBsb25ncy4KLQotLSBBZGRlZCBpdGVydG9vbHMucHJvZHVjdCgpIHdoaWNoIGZvcm1zIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aGUKLSAgaW5wdXQgaXRlcmFibGVzLgotCi0tIEFkZGVkIGl0ZXJ0b29scy5jb21iaW5hdGlvbnMoKSBhbmQgaXRlcnRvb2xzLnBlcm11dGF0aW9ucygpLgotCi0tIFBhdGNoICMxNTQxNDYzOiBvcHRpbWl6ZSBwZXJmb3JtYW5jZSBvZiBjZ2kuRmllbGRTdG9yYWdlIG9wZXJhdGlvbnMuCi0KLS0gRGVjaW1hbCBpcyBmdWxseSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgRGVjaW1hbCBTcGVjaWZpY2F0aW9uCi0gICh2MS42NikuCi0KLS0gQnVnICMxMTUzOiByZXByLnJlcHIoKSBub3cgZG9lc24ndCByZXF1aXJlIHNldCBhbmQgZGljdGlvbmFyeSBpdGVtcwotICB0byBiZSBvcmRlcmFibGUgdG8gcHJvcGVybHkgcmVwcmVzZW50IHRoZW0uCi0KLS0gQSAnY19sb25nZG91YmxlJyB0eXBlIHdhcyBhZGRlZCB0byB0aGUgY3R5cGVzIG1vZHVsZS4KLQotLSBCdWcgIzE3MDk1OTk6IFJ1biB0ZXN0XzE1NjUxNTAgb25seSBpZiB0aGUgZmlsZSBzeXN0ZW0gaXMgTlRGUy4KLQotLSBXaGVuIGVuY291bnRlcmluZyBhIHBhc3N3b3JkLXByb3RlY3RlZCByb2JvdHMudHh0IGZpbGUgdGhlCi0gIFJvYm90RmlsZVBhcnNlciBubyBsb25nZXIgcHJvbXB0cyBpbnRlcmFjdGl2ZWx5IGZvciBhIHVzZXJuYW1lIGFuZAotICBwYXNzd29yZCAoYnVnIDgxMzk4NikuCi0KLS0gVGFyRmlsZS5fX2luaXRfXygpIG5vIGxvbmdlciBmYWlscyBpZiBubyBuYW1lIGFyZ3VtZW50IGlzIHBhc3NlZCBhbmQKLSAgdGhlIGZpbGVvYmogYXJndW1lbnQgaGFzIG5vIHVzYWJsZSBuYW1lIGF0dHJpYnV0ZSAoZS5nLiBTdHJpbmdJTykuCi0KLS0gVGhlIGZ1bmN0b29scyBtb2R1bGUgbm93IHByb3ZpZGVzICdyZWR1Y2UnLCBmb3IgZm9yd2FyZAotICBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMwMDAuCi0KLS0gU2VydmVyLXNpZGUgU1NMIHN1cHBvcnQgYW5kIGNlcnQgdmVyaWZpY2F0aW9uIGFkZGVkLCBieSBCaWxsCi0gIEphbnNzZW4uCi0KLS0gc29ja2V0LnNzbCBkZXByZWNhdGVkOyB1c2UgbmV3IHNzbCBtb2R1bGUgaW5zdGVhZC4KLQotLSB1dWlkIGNyZWF0aW9uIGlzIG5vdyB0aHJlYWRzYWZlLgotCi0tIEVVQy1LUiBjb2RlYyBub3cgaGFuZGxlcyB0aGUgY2hlb3QtZ2Eta2V1dCBjb21wb3NlZCBtYWtlLXVwIGhhbmd1bAotICBzeWxsYWJsZXMuCi0KLS0gR0IxODAzMCBjb2RlYyBub3cgY2FuIGVuY29kZSBhZGRpdGlvbmFsIHR3by1ieXRlIGNoYXJhY3RlcnMgdGhhdCBhcmUKLSAgbWlzc2luZyBpbiBHQksuCi0KLS0gQWRkIG5ldyBjb2RlY3MgZm9yIFVURi0zMiwgVVRGLTMyLUxFIGFuZCBVVEYtMzItQkUuCi0KLS0gQnVnICMxNzA0NzkzOiBSZXR1cm4gVVRGLTE2IHBhaXIgaWYgdW5pY29kZWRhdGEubG9va3VwIGNhbm5vdAotICByZXByZXNlbnQgdGhlIHJlc3VsdCBpbiBhIHNpbmdsZSBjaGFyYWN0ZXIuCi0KLS0gQnVnICM5Nzg4MzM6IENsb3NlIGh0dHBzIHNvY2tldHMgYnkgcmVsZWFzaW5nIHRoZSBfc3NsIG9iamVjdC4KLQotLSBDaGFuZ2UgbG9jYXRpb24gb2YgdGhlIHBhY2thZ2UgaW5kZXggdG8gcHlwaS5weXRob24ub3JnL3B5cGkKLQotLSBCdWcgIzE3MDE0MDk6IEZpeCBhIHNlZ2ZhdWx0IGluIHByaW50aW5nIGN0eXBlcy5jX2NoYXJfcCBhbmQKLSAgY3R5cGVzLmNfd2NoYXJfcCB3aGVuIHRoZXkgcG9pbnQgdG8gYW4gaW52YWxpZCBsb2NhdGlvbi4gIEFzIGEKLSAgc2lkZWVmZmVjdCB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlc2UgaW5zdGFuY2VzIGhhcyBjaGFuZ2VkLgotCi0tIHRhcmZpbGUucHk6IEFkZGVkICJleGNsdWRlIiBrZXl3b3JkIGFyZ3VtZW50IHRvIFRhckZpbGUuYWRkKCkuCi0KLS0gQnVnICMxNzM0NzIzOiBGaXggcmVwci5SZXByKCkgc28gaXQgZG9lc24ndCBpZ25vcmUgdGhlIG1heHR1cGxlCi0gIGF0dHJpYnV0ZS4KLQotLSBUaGUgdXJsb3BlbiBmdW5jdGlvbiBvZiB1cmxsaWIyIG5vdyBoYXMgYW4gb3B0aW9uYWwgdGltZW91dAotICBwYXJhbWV0ZXIgKG5vdGUgdGhhdCBpdCBhY3R1YWxseSB3b3JrcyB3aXRoIEhUVFAsIEhUVFBTLCBGVFAgYW5kCi0gIEZUUFMgY29ubmVjdGlvbnMpLgotCi0tIEluIGZ0cGxpYiwgdGhlIEZUUC5udHJhbnNmZXJjbWQgbWV0aG9kLCB3aGVuIGluIHBhc3NpdmUgbW9kZSwgbm93Ci0gIHVzZXMgdGhlIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbiBmdW5jdGlvbiwgdXNpbmcgdGhlIHRpbWVvdXQKLSAgc3BlY2lmaWVkIGF0IGNvbm5lY3Rpb24gdGltZS4KLQotLSBCdWcgIzE3Mjg0MDM6IEZpeCBhIGJ1ZyB0aGF0IENKS0NvZGVjcyBTdHJlYW1SZWFkZXIgaGFuZ3Mgd2hlbiBpdAotICByZWFkcyBhIGZpbGUgdGhhdCBlbmRzIHdpdGggaW5jb21wbGV0ZSBzZXF1ZW5jZSBhbmQgc2l6ZWhpbnQKLSAgYXJndW1lbnQgZm9yIC5yZWFkKCkgaXMgc3BlY2lmaWVkLgotCi0tIEJ1ZyAjMTczMDM4OTogQ2hhbmdlIHRpbWUuc3RycHRpbWUoKSB0byB1c2UgYGBccytgYCBpbnN0ZWFkIG9mCi0gIGBgXHMqYGAgd2hlbiBtYXRjaGluZyBzcGFjZXMgaW4gdGhlIHNwZWNpZmllZCBmb3JtYXQgYXJndW1lbnQuCi0KLS0gQnVncyAjMTY2ODU5Ni8jMTcyMDg5NzogZGlzdHV0aWxzIG5vdyBjb3BpZXMgZGF0YSBmaWxlcyBldmVuIGlmCi0gIHBhY2thZ2VfZGlyIGlzIGVtcHR5LgotCi0tIHNoYSBub3cgcmFpc2VzIGEgRGVwcmVjYXRpb25XYXJuaW5nIHVwb24gaW1wb3J0LgotCi0tIG1kNSBub3cgcmFpc2VzIGEgRGVwcmVjYXRpb25XYXJuaW5nIHVwb24gaW1wb3J0LgotCi0tIElzc3VlICMxMzg1OiBUaGUgaG1hYyBtb2R1bGUgbm93IGNvbXB1dGVzIHRoZSBjb3JyZWN0IGhtYWMgd2hlbgotICB1c2luZyBoYXNoZXMgd2l0aCBhIGJsb2NrIHNpemUgb3RoZXIgdGhhbiA2NCBieXRlcyAoc3VjaCBhcyBzaGEzODQKLSAgYW5kIHNoYTUxMikuCi0KLS0gbWltaWZ5IG5vdyByYWlzZXMgYSBEZXByZWNhdGlvbldhcm5pbmcgdXBvbiBpbXBvcnQuCi0KLS0gTWltZVdyaXRlciBub3cgcmFpc2VzIGEgRGVwcmVjYXRpb25XYXJuaW5nIHVwb24gaW1wb3J0LgotCi0tIHRhcmZpbGUucHk6IEltcHJvdmVkIHVuaWNvZGUgc3VwcG9ydC4gVW5pY29kZSBpbnB1dCBuYW1lcyBhcmUgbm93Ci0gIG9mZmljaWFsbHkgc3VwcG9ydGVkLiBBZGRlZCAiZXJyb3JzIiBhcmd1bWVudCB0byB0aGUgVGFyRmlsZSBjbGFzcy4KLQotLSB1cmxsaWIuZnRwd3JhcHBlciBjbGFzcyBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCB0aW1lb3V0LgotCi0tIHNobGV4LnNwbGl0KCkgbm93IGhhcyBhbiBvcHRpb25hbCAicG9zaXgiIHBhcmFtZXRlci4KLQotLSBUaGUgcG9zaXhmaWxlIG1vZHVsZSBub3cgcmFpc2VzIGEgRGVwcmVjYXRpb25XYXJuaW5nLgotCi0tIFJlbW92ZSB0aGUgZ29waGVybGliIG1vZHVsZS4gIFRoaXMgYWxzbyBsZWFkcyB0byB0aGUgcmVtb3ZhbCBvZgotICBnb3BoZXIgc3VwcG9ydCBpbiB1cmxsaWIvdXJsbGliMi4KLQotLSBGaXggYnVnIGluIG1hcnNoYWwgd2hlcmUgYmFkIGRhdGEgd291bGQgY2F1c2UgYSBzZWdmYXVsdCBkdWUgdG8gbGFjawotICBvZiBhbiBpbmZpbml0ZSByZWN1cnNpb24gY2hlY2suCi0KLS0gUmVtb3ZlZCBwbGF0LWZyZWVic2QyIGFuZCBwbGF0LWZyZWVic2QzIGRpcmVjdG9yaWVzIChhbmQgSU4ucHkgaW4KLSAgdGhlIGRpcmVjdG9yaWVzKS4KLQotLSBIVE1MLWVzY2FwZSB0aGUgcGxhaW4gdHJhY2ViYWNrIGluIGNnaXRiJ3MgSFRNTCBvdXRwdXQsIHRvIHByZXZlbnQKLSAgdGhlIHRyYWNlYmFjayBpbmFkdmVydGVudGx5IG9yIG1hbGljaW91c2x5IGNsb3NpbmcgdGhlIGNvbW1lbnQgYW5kCi0gIGluamVjdGluZyBIVE1MIGludG8gdGhlIGVycm9yIHBhZ2UuCi0KLS0gVGhlIHBvcGVuMiBtb2R1bGUgYW5kIG9zLnBvcGVuKiBhcmUgZGVwcmVjYXRlZC4gIFVzZSB0aGUgc3VicHJvY2VzcwotICBtb2R1bGUuCi0KLS0gQWRkZWQgYW4gb3B0aW9uYWwgY3JlZGVudGlhbHMgYXJndW1lbnQgdG8gU01UUEhhbmRsZXIsIGZvciB1c2Ugd2l0aAotICBTTVRQIHNlcnZlcnMgd2hpY2ggcmVxdWlyZSBhdXRoZW50aWNhdGlvbi4KLQotLSBQYXRjaCAjMTY5NTk0ODogQWRkZWQgb3B0aW9uYWwgdGltZW91dCBwYXJhbWV0ZXIgdG8gU29ja2V0SGFuZGxlci4KLQotLSBCdWcgIzE2NTI3ODg6IE1pbm9yIGZpeCBmb3IgY3VycmVudGZyYW1lLgotCi0tIFBhdGNoICMxNTk4NDE1OiBBZGRlZCBXYXRjaGVkRmlsZUhhbmRsZXIgdG8gYmV0dGVyIHN1cHBvcnQgZXh0ZXJuYWwKLSAgbG9nIGZpbGUgcm90YXRpb24gdXNpbmcgZS5nLiBuZXdzeXNsb2cgb3IgbG9ncm90YXRlLiBUaGlzIGhhbmRsZXIgaXMKLSAgb25seSB1c2VmdWwgaW4gVW5peC9MaW51eCBlbnZpcm9ubWVudHMuCi0KLS0gQnVnICMxNzA2MzgxOiBTcGVjaWZ5aW5nIHRoZSBTV0lHIG9wdGlvbiAiLWMrKyIgaW4gdGhlIHNldHVwLnB5IGZpbGUKLSAgKGFzIG9wcG9zZWQgdG8gdGhlIGNvbW1hbmQgbGluZSkgd2lsbCBub3cgd3JpdGUgZmlsZSBuYW1lcyBlbmRpbmcgaW4KLSAgIi5jcHAiIHRvby4KLQotLSBBcyBzcGVjaWZpZWQgaW4gUkZDIDI2MTYsIGFuIEhUVFAgcmVzcG9uc2UgbGlrZSAyeHggaW5kaWNhdGVzIHRoYXQKLSAgdGhlIGNsaWVudCdzIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWxseSByZWNlaXZlZCwgdW5kZXJzdG9vZCwgYW5kCi0gIGFjY2VwdGVkLiAgTm93IGluIHRoZXNlIGNhc2VzIG5vIGVycm9yIGlzIHJhaXNlZCBpbiB1cmxsaWIgKGlzc3VlCi0gICMxMTc3KSBhbmQgdXJsbGliMi4KLQotLSBCdWcgIzEyOTA1MDU6IHRpbWUuc3RycHRpbWUncyBpbnRlcm5hbCBjYWNoZSBvZiBsb2NhbGUgaW5mb3JtYXRpb24KLSAgaXMgbm93IHByb3Blcmx5IHJlY3JlYXRlZCB3aGVuIHRoZSBsb2NhbGUgaXMgY2hhbmdlZC4KLQotLSBQYXRjaCAjMTY4NTU2MzogcmVtb3ZlIChkb24ndCBhZGQpIGR1cGxpY2F0ZSBwYXRocyBpbgotICBkaXN0dXRpbHMuTVNWQ0NvbXBpbGVyLgotCi0tIEFkZGVkIGEgdGltZW91dCBwYXJhbWV0ZXIgdG8gdGhlIGNvbnN0cnVjdG9yIG9mIG90aGVyIHByb3RvY29scwotICAodGVsbmV0bGliLCBmdHBsaWIsIHNtdHBsaWIgYW5kIHBvcGxpYikuIFRoaXMgaXMgc2Vjb25kIHBhcnQgb2YgdGhlCi0gIHdvcmsgc3RhcnRlZCB3aXRoIGNyZWF0ZV9jb25uZWN0aW9uKCkgYW5kIHRpbWVvdXQgaW4gaHR0cGxpYiwgYW5kCi0gIGNsb3NlcyBwYXRjaCAjNzIzMzEyLgotCi0tIFBhdGNoICMxNjc2ODIzOiBBZGRlZCBjcmVhdGVfY29ubmVjdGlvbigpIHRvIHNvY2tldC5weSwgd2hpY2ggbWF5IGJlCi0gIGNhbGxlZCB3aXRoIGEgdGltZW91dCwgYW5kIHVzZSBpdCBmcm9tIGh0dHBsaWIgKHdob3NlIEhUVFBDb25uZWN0aW9uCi0gIGFuZCBIVFRQU0Nvbm5lY3Rpb24gbm93IGFjY2VwdCBhbiBvcHRpb25hbCB0aW1lb3V0KS4KLQotLSBCdWcgIzk3ODgzMzogUmV2ZXJ0IHI1MDg0NCwgYXMgaXQgYnJva2UgX3NvY2tldG9iamVjdC5kdXAuCi0KLS0gQnVnICMxNjc1OTY3OiByZSBwYXR0ZXJucyBwaWNrbGVkIHdpdGggUHl0aG9uIDIuNCBhbmQgZWFybGllciBjYW4KLSAgbm93IGJlIHVucGlja2xlZCB3aXRoIFB5dGhvbiAyLjUgYW5kIG5ld2VyLgotCi0tIFBhdGNoICMxNjMwMTE4OiBhZGQgYSBTcG9vbGVkVGVtcG9yYXJ5RmlsZSBjbGFzcyB0byB0ZW1wZmlsZS5weS4KLQotLSBQYXRjaCAjMTI3MzgyOTogb3Mud2FsaygpIG5vdyBoYXMgYSAiZm9sbG93bGlua3MiIHBhcmFtZXRlci4gSWYgc2V0Ci0gIHRvIFRydWUgKHdoaWNoIGlzIG5vdCB0aGUgZGVmYXVsdCksIGl0IHZpc2l0cyBzeW1saW5rcyBwb2ludGluZyB0bwotICBkaXJlY3Rvcmllcy4KLQotLSBCdWcgIzE2ODEyMjg6IHRoZSB3ZWJicm93c2VyIG1vZHVsZSBub3cgY29ycmVjdGx5IHVzZXMgdGhlIGRlZmF1bHQKLSAgR05PTUUgb3IgS0RFIGJyb3dzZXIsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGlzIGEgc2Vzc2lvbiBvZiBvbmUKLSAgb2YgdGhvc2UgcHJlc2VudC4gQWxzbywgaXQgdHJpZXMgdGhlIFdpbmRvd3MgZGVmYXVsdCBicm93c2VyIGJlZm9yZQotICB0cnlpbmcgTW96aWxsYSB2YXJpYW50cy4KLQotLSBQYXRjaCAjMTMzOTc5NjogYWRkIGEgcmVscGF0aCgpIGZ1bmN0aW9uIHRvIG9zLnBhdGguCi0KLS0gUGF0Y2ggIzE2ODExNTM6IHRoZSB3YXZlIG1vZHVsZSBub3cgY2xvc2VzIGEgZmlsZSBvYmplY3QgaXQgb3BlbmVkIGlmCi0gIGluaXRpYWxpemF0aW9uIGZhaWxlZC4KLQotLSBCdWcgIzc2NzExMTogZml4IGxvbmctc3RhbmRpbmcgYnVnIGluIHVybGxpYiB3aGljaCBjYXVzZWQgYW4KLSAgQXR0cmlidXRlRXJyb3IgaW5zdGVhZCBvZiBhbiBJT0Vycm9yIHdoZW4gdGhlIHNlcnZlcidzIHJlc3BvbnNlCi0gIGRpZG4ndCBjb250YWluIGEgdmFsaWQgSFRUUCBzdGF0dXMgbGluZS4KLQotLSBQYXRjaCAjOTU3NjUwOiAiJXZhciUiIGVudmlyb25tZW50IHZhcmlhYmxlIHJlZmVyZW5jZXMgYXJlIG5vdwotICBwcm9wZXJseSBleHBhbmRlZCBpbiBudHBhdGguZXhwYW5kdmFycygpLCBhbHNvICJ+dXNlciIgaG9tZQotICBkaXJlY3RvcnkgcmVmZXJlbmNlcyBhcmUgcmVjb2duaXplZCBhbmQgaGFuZGxlZCBvbiBXaW5kb3dzLgotCi0tIFBhdGNoICMxNDI5NTM5OiBwZGIgbm93IGNvcnJlY3RseSBpbml0aWFsaXplcyB0aGUgX19tYWluX18gbW9kdWxlCi0gIGZvciB0aGUgZGVidWdnZWQgc2NyaXB0LCB3aGljaCBtZWFucyB0aGF0IGltcG9ydHMgZnJvbSBfX21haW5fXyB3b3JrCi0gIGNvcnJlY3RseSBub3cuCi0KLS0gVGhlIG5vbm9idmlvdXMgY29tbWFuZHMuZ2V0c3RhdHVzKCkgZnVuY3Rpb24gaXMgbm93IGRlcHJlY2F0ZWQuCi0KLS0gUGF0Y2ggIzEzOTM2Njc6IHBkYiBub3cgaGFzIGEgInJ1biIgY29tbWFuZCB3aGljaCByZXN0YXJ0cyB0aGUKLSAgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0sIG9wdGlvbmFsbHkgd2l0aCBkaWZmZXJlbnQgYXJndW1lbnRzLgotCi0tIFBhdGNoICMxNjQ5MTkwOiBBZGRpbmcgc3VwcG9ydCBmb3IgX0Jvb2wgdG8gY3R5cGVzIGFzIGNfYm9vbC4KLQotLSBQYXRjaCAjMTUzMDQ4MjogYWRkIHB5ZG9jLnJlbmRlcl9kb2MoKSB3aGljaCByZXR1cm5zIHRoZQotICBkb2N1bWVudGF0aW9uIGZvciBhIHRoaW5nIGluc3RlYWQgb2YgcGFnaW5nIGl0IHRvIHN0ZG91dCwgd2hpY2gKLSAgcHlkb2MuZG9jKCkgZG9lcy4KLQotLSBQYXRjaCAjMTUzMzkwOTogdGhlIHRpbWVpdCBtb2R1bGUgbm93IGFjY2VwdHMgY2FsbGFibGVzIGluIGFkZGl0aW9uCi0gIHRvIHN0cmluZ3MgZm9yIHRoZSBjb2RlIHRvIHRpbWUgYW5kIHRoZSBzZXR1cCBjb2RlLiBBbHNvIGFkZGVkIHR3bwotICBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGluc3RhbnRpYXRpbmcgYSBUaW1lciBhbmQgY2FsbGluZyBpdHMKLSAgbWV0aG9kcy4KLQotLSBQYXRjaCAjMTUzNzg1MDogdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlIG5vdyBoYXMgYSAiZGVsZXRlIgotICBwYXJhbWV0ZXIgd2hpY2ggY2FuIGJlIHNldCB0byBGYWxzZSB0byBwcmV2ZW50IHRoZSBkZWZhdWx0Ci0gIGRlbGV0ZS1vbi1jbG9zZSBiZWhhdmlvci4KLQotLSBQYXRjaCAjMTU4MTA3MzogYWRkIGEgZmxhZyB0byB0ZXh0d3JhcCB0aGF0IHByZXZlbnRzIHRoZSBkcm9wcGluZyBvZgotICB3aGl0ZXNwYWNlIHdoaWxlIHdyYXBwaW5nLgotCi0tIFBhdGNoICMxNjAzNjg4OiBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlciBub3cgY2hlY2tzIHZhbHVlcyB0aGF0Ci0gIGFyZSBzZXQgZm9yIGludmFsaWQgaW50ZXJwb2xhdGlvbiBzZXF1ZW5jZXMgdGhhdCB3b3VsZCBsZWFkIHRvCi0gIGVycm9ycyBvbiByZWFkaW5nIGJhY2sgdGhvc2UgdmFsdWVzLgotCi0tIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBQT1NJWC4xLTIwMDEgKHBheCkgZm9ybWF0IHRvCi0gIHRhcmZpbGUucHkuIEV4dGVuZGVkIGFuZCBjbGVhbmVkIHVwIHRoZSB0ZXN0IHN1aXRlLiBBZGRlZCBhIG5ldwotICB0ZXN0dGFyLnRhci4KLQotLSBQYXRjaCAjMTQ0OTI0NDogU3VwcG9ydCBVbmljb2RlIHN0cmluZ3MgaW4KLSAgZW1haWwubWVzc2FnZS5NZXNzYWdlLntzZXRfY2hhcnNldCxnZXRfY29udGVudF9jaGFyc2V0fS4KLQotLSBQYXRjaCAjMTU0MjY4MTogYWRkIGVudHJpZXMgZm9yICJ3aXRoIiwgImFzIiBhbmQgIkNPTlRFWFRNQU5BR0VSUyIKLSAgdG8gcHlkb2MncyBoZWxwIGtleXdvcmRzLgotCi0tIFBhdGNoICMxNTU1MDk4OiB1c2Ugc3RyLmpvaW4oKSBpbnN0ZWFkIG9mIHJlcGVhdGVkIHN0cmluZwotICBjb25jYXRlbmF0aW9uIGluIHJvYm90cGFyc2VyLgotCi0tIFBhdGNoICMxNjM1NDU0OiB0aGUgY3N2LkRpY3RXcml0ZXIgY2xhc3Mgbm93IGluY2x1ZGVzIHRoZSBvZmZlbmRpbmcKLSAgZmllbGQgbmFtZXMgaW4gaXRzIGV4Y2VwdGlvbiBtZXNzYWdlIGlmIHlvdSB0cnkgdG8gd3JpdGUgYSByZWNvcmQKLSAgd2l0aCBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBmaWVsZHMgbm90IGluIHRoZSBDU1YgZmllbGQgbmFtZXMgbGlzdC4KLQotLSBQYXRjaCAjMTY2ODEwMDogdXJsbGliMiBub3cgY29ycmVjdGx5IHJhaXNlcyBVUkxFcnJvciBpbnN0ZWFkIG9mCi0gIE9TRXJyb3IgaWYgYWNjZXNzaW5nIGEgbG9jYWwgZmlsZSB2aWEgdGhlIGZpbGU6Ly8gcHJvdG9jb2wgZmFpbHMuCi0KLS0gUGF0Y2ggIzE2Nzc4NjI6IFJlcXVpcmUgYSBzcGFjZSBvciB0YWIgYWZ0ZXIgaW1wb3J0IGluIC5wdGggZmlsZXMuCi0KLS0gUGF0Y2ggIzExOTI1OTA6IEZpeCBwZGIncyAiaWdub3JlIiBhbmQgImNvbmRpdGlvbiIgY29tbWFuZHMgc28gdGhleQotICB0cmFwIHRoZSBJbmRleEVycm9yIGNhdXNlZCBieSBwYXNzaW5nIGluIGFuIGludmFsaWQgYnJlYWtwb2ludAotICBudW1iZXIuCi0KLS0gUGF0Y2ggIzE1OTk4NDU6IEFkZCBhbiBvcHRpb24gdG8gZGlzYWJsZSB0aGUgaW1wbGljaXQgY2FsbHMgdG8KLSAgc2VydmVyX2JpbmQoKSBhbmQgc2VydmVyX2FjdGl2YXRlKCkgaW4gdGhlIGNvbnN0cnVjdG9ycyBmb3IKLSAgVENQU2VydmVyLCBTaW1wbGVYTUxSUENTZXJ2ZXIgYW5kIERvY1hNTFJQQ1NlcnZlci4KLQotLSBCdWcgIzE1MzE5NjM6IE1ha2UgU29ja2V0U2VydmVyLlRDUFNlcnZlcidzIHNlcnZlcl9hZGRyZXNzIGFsd2F5cyBiZQotICBlcXVhbCB0byBjYWxsaW5nIGdldHNvY2tuYW1lKCkgb24gdGhlIHNlcnZlcidzIHNvY2tldC4gRml4ZWQgYnkKLSAgcGF0Y2ggIzE1NDUwMTEuCi0KLS0gUGF0Y2ggIzc0MjU5ODogQWRkIC50aW1lb3V0IGF0dHJpYnV0ZSB0byBTb2NrZXRTZXJ2ZXIgdGhhdCBjYWxscwotICAuaGFuZGxlX3RpbWVvdXQoKSB3aGVuIG5vIHJlcXVlc3RzIGFyZSByZWNlaXZlZC4KLQotLSBCdWcgIzE2NTEyMzU6IFdoZW4gYSB0dXBsZSB3YXMgcGFzc2VkIHRvIGEgY3R5cGVzIGZ1bmN0aW9uIGNhbGwsCi0gIFB5dGhvbiB3b3VsZCBjcmFzaCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCi0KLS0gQnVnICMxNjQ2NjMwOiBjdHlwZXMuc3RyaW5nX2F0KGJ1ZiwgMCkgYW5kIGN0eXBlcy53c3RyaW5nX2F0KGJ1ZiwgMCkKLSAgcmV0dXJuZWQgc3RyaW5nIHVwIHRvIHRoZSBmaXJzdCBOVUwgY2hhcmFjdGVyLgotCi0tIFBhdGNoICM5NTcwMDM6IEltcGxlbWVudCBzbXRwbGliLkxNVFAuCi0KLS0gUGF0Y2ggIzE0ODEwNzk6IGFkZCBzdXBwb3J0IGZvciBIVFRQX1JFRkVSRVIgdG8gQ0dJSFRUUFNlcnZlci4KLQotLSBQYXRjaCAjMTY3NTQyNDogQWRkZWQgdGVzdHMgZm9yIHVuY292ZXJlZCBjb2RlIGluIHRoZSB6aXBmaWxlCi0gIG1vZHVsZS4gIFRoZSBLZXlFcnJvciByYWlzZWQgYnkgWmlwZmlsZS5nZXRpbmZvIGZvciBub25leGlzdGVudAotICBuYW1lcyBub3cgaGFzIGEgZGVzY3JpcHRpdmUgbWVzc2FnZS4KLQotLSBCdWcgIzExMTU4ODY6IG9zLnBhdGguc3BsaXRleHQoJy5jc2hyYycpIGdpdmVzIG5vdyAoJy5jc2hyYycsICcnKS4KLQotLSB1bml0dGVzdCBub3cgdmVyaWZpZXMgbW9yZSBvZiBpdHMgYXNzdW1wdGlvbnMuIEluIHBhcnRpY3VsYXIsCi0gIFRlc3RDYXNlIGFuZCBUZXN0U3VpdGUgc3ViY2xhc3NlcyAobm90IGluc3RhbmNlcykgYXJlIG5vIGxvbmdlcgotICBhY2NlcHRlZCBpbiBUZXN0U3VpdGUuYWRkVGVzdCgpLiBUaGlzIHNob3VsZCBjYXVzZSBubwotICBpbmNvbXBhdGliaWxpdHkgc2luY2UgaXQgbmV2ZXIgbWFkZSBzZW5zZSB3aXRoIG9yZGluYXJ5IHN1YmNsYXNzZXMKLSAgLS0gdGhlIGZhaWx1cmUganVzdCBvY2N1cnJlZCBsYXRlciwgd2l0aCBhIG1vcmUgY3VtYmVyc29tZQotICBleGNlcHRpb24uCi0KLS0gUGF0Y2ggIzc4Nzc4OTogYWxsb3cgcGFzc2luZyBjdXN0b20gVGVzdFJ1bm5lciBpbnN0YW5jZXMgdG8KLSAgdW5pdHRlc3QncyBtYWluKCkgZnVuY3Rpb24uCi0KLS0gUGF0Y2hlcyAjMTU1MDI3MywgIzE1NTAyNzI6IGZpeCBhIGZldyBidWdzIGluIHVuaXR0ZXN0IGFuZCBhZGQgYQotICBjb21wcmVoZW5zaXZlIHRlc3Qgc3VpdGUgZm9yIHRoZSBtb2R1bGUuCi0KLS0gUGF0Y2ggIzEwMDE2MDQ6IGdsb2IuZ2xvYigpIG5vdyByZXR1cm5zIHVuaWNvZGUgZmlsZW5hbWVzIGlmIGl0IHdhcwotICBnaXZlbiBhIHVuaWNvZGUgYXJndW1lbnQgYW5kIG9zLmxpc3RkaXIoKSByZXR1cm5zIHVuaWNvZGUgZmlsZW5hbWVzLgotCi0tIFBhdGNoICMxNjczNjE5OiBzZXR1cC5weSBpZGVudGlmaWVzIGV4dGVuc2lvbiBtb2R1bGVzIGl0IGRvZXNuJ3QKLSAga25vdyBob3cgdG8gYnVpbGQgYW5kIHRob3NlIGl0IGtub3dzIGhvdyB0byBidWlsZCBidXQgdGhhdCBmYWlsIHRvCi0gIGJ1aWxkLgotCi0tIFBhdGNoICM5MTI0MTA6IFJlcGxhY2UgSFRNTCBlbnRpdHkgcmVmZXJlbmNlcyBmb3IgYXR0cmlidXRlIHZhbHVlcwotICBpbiBIVE1MUGFyc2VyLgotCi0tIFBhdGNoICMxNjYzMjM0OiB5b3UgY2FuIG5vdyBydW4gZG9jdGVzdCBvbiB0ZXN0IGZpbGVzIGFuZCBtb2R1bGVzCi0gIHVzaW5nICJweXRob24gLW0gZG9jdGVzdCBbLXZdIGZpbGVuYW1lIC4uLiIuCi0KLS0gUGF0Y2ggIzExMjExNDI6IEltcGxlbWVudCBaaXBGaWxlLm9wZW4uCi0KLS0gVGF1Z2h0IHNldHVwLnB5IGhvdyB0byBsb2NhdGUgQmVya2VsZXkgREIgb24gTWFjcyB1c2luZyBNYWNQb3J0cy4KLQotLSBBZGRlZCBoZWFwcS5tZXJnZSgpIGZvciBtZXJnaW5nIHNvcnRlZCBpbnB1dCBzdHJlYW1zLgotCi0tIEFkZGVkIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSBmb3IgYXNzaWduaW5nIGZpZWxkIG5hbWVzIHRvIHR1cGxlcy4KLQotLSBBZGRlZCBpdGVydG9vbHMuaXppcF9sb25nZXN0KCkuCi0KLS0gSGF2ZSB0aGUgZW5jb2RpbmcgcGFja2FnZSdzIHNlYXJjaCBmdW5jdGlvbiBkeW5hbWljYWxseSBpbXBvcnQgdXNpbmcKLSAgYWJzb2x1dGUgaW1wb3J0IHNlbWFudGljcy4KLQotLSBQYXRjaCAjMTY0NzQ4NDogUmVuYW1lZCBHemlwRmlsZSdzIGZpbGVuYW1lIGF0dHJpYnV0ZSB0byBuYW1lLgotCi0tIFBhdGNoICMxNTE3ODkxOiBNb2RlICdhJyBmb3IgWmlwRmlsZSBub3cgY3JlYXRlcyB0aGUgZmlsZSBpZiBpdAotICBkb2Vzbid0IGV4aXN0LgotCi0tIFBhdGNoICM2OTg4MzM6IFN1cHBvcnQgZmlsZSBkZWNyeXB0aW9uIGluIHppcGZpbGUuCi0KLS0gUGF0Y2ggIzY4NTI2ODogQ29uc2lkZXIgYSBwYWNrYWdlJ3MgX19wYXRoX18gaW4gaW1wdXRpbC4KLQotLSBQYXRjaCAjMTQ2MzAyNjogU3VwcG9ydCBkZWZhdWx0IG5hbWVzcGFjZSBpbiBYTUxHZW5lcmF0b3IuCi0KLS0gUGF0Y2ggIzE1NzEzNzk6IE1ha2UgdHJhY2UncyAtLWlnbm9yZS1kaXIgZmFjaWxpdHkgd29yayBpbiB0aGUgZmFjZQotICBvZiByZWxhdGl2ZSBkaXJlY3RvcnkgbmFtZXMuCi0KLS0gQnVnICMxNjAwODYwOiBTZWFyY2ggZm9yIHNoYXJlZCBweXRob24gbGlicmFyeSBpbiBMSUJESVIsIG5vdAotICBsaWIvcHl0aG9uL2NvbmZpZywgb24gImxpbnV4IiBhbmQgImdudSIgc3lzdGVtcy4KLQotLSBQYXRjaCAjMTY1MjY4MTogdGFyZmlsZS5weTogY3JlYXRlIG5vbmV4aXN0ZW50IGZpbGVzIGluIGFwcGVuZCBtb2RlCi0gIGFuZCBhbGxvdyBhcHBlbmRpbmcgdG8gZW1wdHkgZmlsZXMuCi0KLS0gQnVnICMxMTI0ODYxOiBBdXRvbWF0aWNhbGx5IGNyZWF0ZSBwaXBlcyBpZiBHZXRTdGRIYW5kbGUgZmFpbHMgaW4KLSAgc3VicHJvY2Vzcy4KLQotLSBQYXRjaCAjMTYzNDc3ODogYWRkIG1pc3NpbmcgZW5jb2RpbmcgYWxpYXNlcyBmb3IgaXNvODg1OV8xNSBhbmQKLSAgaXNvODg1OV8xNi4KLQotLSBQYXRjaCAjMTYzODI0MzogdGhlIGNvbXBpbGVyIHBhY2thZ2UgaXMgbm93IGFibGUgdG8gY29ycmVjdGx5Ci0gIGNvbXBpbGUgYSB3aXRoIHN0YXRlbWVudDsgcHJldmlvdXNseSwgZXhlY3V0aW5nIGNvZGUgY29udGFpbmluZyBhCi0gIHdpdGggc3RhdGVtZW50IGNvbXBpbGVkIGJ5IHRoZSBjb21waWxlciBwYWNrYWdlIGNyYXNoZWQgdGhlCi0gIGludGVycHJldGVyLgotCi0tIEJ1ZyAjMTY0Mzk0MzogRml4IHRpbWUuc3RycHRpbWUncyBzdXBwb3J0IGZvciB0aGUgJVUgZGlyZWN0aXZlLgotCi0tIFBhdGNoICMxNTA3MjQ3OiB0YXJmaWxlLnB5OiB1c2UgY3VycmVudCB1bWFzayBmb3IgaW50ZXJtZWRpYXRlCi0gIGRpcmVjdG9yaWVzLgotCi0tIFBhdGNoICMxNjI3NDQxOiBjbG9zZSBzb2NrZXRzIHByb3Blcmx5IGluIHVybGxpYjIuCi0KLS0gQnVnICM0OTQ1ODk6IG1ha2UgbnRwYXRoLmV4cGFuZHZhcnMgYmVoYXZlIGFjY29yZGluZyB0byBpdHMKLSAgZG9jc3RyaW5nLgotCi0tIENoYW5nZWQgcGxhdGZvcm0gbW9kdWxlIEFQSSBweXRob25fdmVyc2lvbl90dXBsZSgpIHRvIGFjdHVhbGx5Ci0gIHJldHVybiBhIHR1cGxlIChpdCB1c2VkIHRvIHJldHVybiBhIGxpc3QpLgotCi0tIEFkZGVkIG5ldyBwbGF0Zm9ybSBtb2R1bGUgQVBJcyBweXRob25fYnJhbmNoKCksIHB5dGhvbl9yZXZpc2lvbigpLAotICBweXRob25faW1wbGVtZW50YXRpb24oKSBhbmQgbGludXhfZGlzdHJpYnV0aW9uKCkuCi0KLS0gQWRkZWQgc3VwcG9ydCBmb3IgSXJvblB5dGhvbiBhbmQgSnl0aG9uIHRvIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCi0KLS0gVGhlIHNldHMgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQuICBVc2UgdGhlIGJ1aWx0LWluIHNldC9mcm96ZW5zZXQKLSAgdHlwZXMgaW5zdGVhZC4KLQotLSBCdWcgIzE2MTA3OTU6IG1ha2UgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IHdvcmsgb24gQlNEIHN5c3RlbXMuCi0KLS0gRml4ZXMgZm9yIDY0LWJpdCBXaW5kb3dzOiBJbiBjdHlwZXMud2ludHlwZXMsIGNvcnJlY3QgdGhlCi0gIGRlZmluaXRpb25zIG9mIEhBTkRMRSwgV1BBUkFNLCBMUEFSQU0gZGF0YSB0eXBlcy4gIE1ha2UKLSAgcGFyYW1ldGVybGVzcyBmb3JlaWduIGZ1bmN0aW9uIGNhbGxzIHdvcmsuCi0KLS0gVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBjdHlwZXMgcGFja2FnZSBjaGFuZ2VkIHRvICIxLjEuMCIuCi0KLS0gQnVnICMxNjI3NTc1OiBsb2dnaW5nOiBBZGRlZCBfb3BlbigpIG1ldGhvZCB0byBGaWxlSGFuZGxlciB3aGljaCBjYW4KLSAgYmUgdXNlZCB0byByZW9wZW4gZmlsZXMuIFRoZSBGaWxlSGFuZGxlciBpbnN0YW5jZSBub3cgc2F2ZXMgdGhlCi0gIGVuY29kaW5nICh3aGljaCBjYW4gYmUgTm9uZSkgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCAiZW5jb2RpbmciLgotCi0tIEJ1ZyAjNDExODgxOiBsb2dnaW5nLmhhbmRsZXJzOiBiYXJlIGV4Y2VwdCBjbGF1c2UgcmVtb3ZlZCBmcm9tCi0gIFNNVFBIYW5kbGVyLmVtaXQuIE5vdywgb25seSBJbXBvcnRFcnJvciBpcyB0cmFwcGVkLgotCi0tIEJ1ZyAjNDExODgxOiBsb2dnaW5nLmhhbmRsZXJzOiBiYXJlIGV4Y2VwdCBjbGF1c2UgcmVtb3ZlZCBmcm9tCi0gIFNvY2tldEhhbmRsZXIuY3JlYXRlU29ja2V0LiBOb3csIG9ubHkgc29ja2V0LmVycm9yIGlzIHRyYXBwZWQuCi0KLS0gQnVnICM0MTE4ODE6IGxvZ2dpbmc6IGJhcmUgZXhjZXB0IGNsYXVzZSByZW1vdmVkIGZyb20KLSAgTG9nUmVjb3JkLl9faW5pdF9fLiAgTm93LCBvbmx5IFZhbHVlRXJyb3IsIFR5cGVFcnJvciBhbmQKLSAgQXR0cmlidXRlRXJyb3IgYXJlIHRyYXBwZWQuCi0KLS0gUGF0Y2ggIzE1MDQwNzM6IEZpeCB0YXJmaWxlLm9wZW4oKSBmb3IgbW9kZSAiciIgd2l0aCBhIGZpbGVvYmoKLSAgYXJndW1lbnQuCi0KLS0gUGF0Y2ggIzExODIzOTQgZnJvbSBTaGFuZSBIb2xsb3dheTogc3BlZWQgdXAgSE1BQy5oZXhkaWdlc3QuCi0KLS0gUGF0Y2ggIzEyNjIwMzY6IFByZXZlbnQgVGFyRmlsZXMgZnJvbSBiZWluZyBhZGRlZCB0byB0aGVtc2VsdmVzCi0gIHVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucy4KLQotLSBQYXRjaCAjMTIzMDQ0NjogdGFyZmlsZS5weTogZml4IEV4RmlsZU9iamVjdCBzbyB0aGF0IHJlYWQoKSBhbmQKLSAgdGVsbCgpIHdvcmsgY29ycmVjdGx5IHRvZ2V0aGVyIHdpdGggcmVhZGxpbmUoKS4KLQotLSBQYXRjaCAjMTQ4NDY5NTogVGhlIHRhcmZpbGUgbW9kdWxlIG5vdyByYWlzZXMgYSBIZWFkZXJFcnJvcgotICBleGNlcHRpb24gaWYgYSBidWZmZXIgZ2l2ZW4gdG8gZnJvbWJ1ZigpIGlzIGludmFsaWQuCi0KLS0gQnVnICMxNTAzNzY1OiBGaXggYSBwcm9ibGVtIGluIGxvZ2dpbmcuY29uZmlnIHdpdGggc3BhY2VzIGluIGNvbW1hLQotICBzZXBhcmF0ZWQgbGlzdHMgcmVhZCBmcm9tIGxvZ2dpbmcgY29uZmlnIGZpbGVzLgotCi0tIFBhdGNoICMxNjA0OTA3OiBGaXggcHJvYmxlbXMgaW4gbG9nZ2luZy5oYW5kbGVycyBjYXVzZWQgYXQgbG9nZ2luZwotICBzaHV0ZG93biB3aGVuIHN5c2xvZyBoYW5kbGVycyBmYWlsIHRvIGluaXRpYWxpemUgYmVjYXVzZSBvZiBzeXNsb2dkCi0gIHByb2JsZW1zLgotCi0tIFBhdGNoICMxNjA4MjY3OiBmaXggYSByYWNlIGNvbmRpdGlvbiBpbiBvcy5tYWtlZGlycygpIGlmIHRoZQotICBkaXJlY3RvcnkgdG8gYmUgY3JlYXRlZCBpcyBhbHJlYWR5IHRoZXJlLgotCi0tIFBhdGNoICMxNjEwNDM3OiBmaXggYSB0YXJmaWxlIGJ1ZyB3aXRoIGxvbmcgZmlsZW5hbWUgaGVhZGVycy4KLQotLSBQYXRjaCAjMTM3MTA3NTogTWFrZSBDb25maWdQYXJzZXIgYWNjZXB0IG9wdGlvbmFsIGRpY3QgdHlwZSBmb3IKLSAgb3JkZXJpbmcsIHNvcnRpbmcsIGV0Yy4KLQotLSBCdWcgIzE1NjM4MDc6IF9jdHlwZXMgYnVpbHQgb24gQUlYIGZhaWxzIHdpdGggbGQgZmZpIGVycm9yLgotCi0tIEJ1ZyAjMTU5ODYyMDogQSBjdHlwZXMgU3RydWN0dXJlIGNhbm5vdCBjb250YWluIGl0c2VsZi4KLQotLSBQYXRjaCAjMTA3MDA0NjogTWFyc2hhbCBuZXctc3R5bGUgb2JqZWN0cyBsaWtlIEluc3RhbmNlVHlwZSBpbgotICB4bWxycGNsaWIuCi0KLS0gY1N0cmluZ0lPLnRydW5jYXRlKC0xKSBub3cgcmFpc2VzIGFuIElPRXJyb3IsIGxpa2UgU3RyaW5nSU8gYW5kCi0gIHJlZ3VsYXIgZmlsZXMuCi0KLS0gUGF0Y2ggIzE0NzI4Nzc6IEZpeCBUaXggc3Vid2lkZ2V0IG5hbWUgcmVzb2x1dGlvbi4KLQotLSBQYXRjaCAjMTU5NDU1NDogQWx3YXlzIGNsb3NlIGEgdGtTaW1wbGVEaWFsb2cgb24gb2soKSwgZXZlbiBpZiBhbgotICBleGNlcHRpb24gb2NjdXJzLgotCi0tIFBhdGNoICMxNTM4ODc4OiBEb24ndCBtYWtlIHRrU2ltcGxlRGlhbG9nIGRpYWxvZ3MgdHJhbnNpZW50IGlmIHRoZQotICBwYXJlbnQgd2luZG93IGlzIHdpdGhkcmF3bi4KLQotLSBCdWcgIzE1OTc4MjQ6IHJldHVybiB0aGUgcmVnaXN0ZXJlZCBmdW5jdGlvbiBmcm9tIGF0ZXhpdC5yZWdpc3RlcigpCi0gIHRvIGZhY2lsaXRhdGUgdXNhZ2UgYXMgYSBkZWNvcmF0b3IuCi0KLS0gUGF0Y2ggIzEzNjAyMDA6IFVzZSB1bm1hbmdsZWRfdmVyc2lvbiBSUE0gc3BlYyBmaWVsZCB0byBkZWFsIHdpdGgKLSAgZmlsZSBuYW1lIG1hbmdsaW5nLgotCi0tIFBhdGNoICMxMzU5MjE3OiBQcm9jZXNzIDJ4eCByZXNwb25zZSBpbiBhbiBmdHBsaWIgdHJhbnNmZXIgdGhhdAotICBwcmVjZWRlcyBhbiAxeHggcmVzcG9uc2UuCi0KLS0gUGF0Y2ggIzEzNTUwMjM6IHN1cHBvcnQgd2hlbmNlIGFyZ3VtZW50IGZvciBHemlwRmlsZS5zZWVrLgotCi0tIFBhdGNoICMxMDY1MjU3OiBTdXBwb3J0IHBhc3Npbmcgb3BlbiBmaWxlcyBhcyBib2R5IGluCi0gIEhUVFBDb25uZWN0aW9uLnJlcXVlc3QoKS4KLQotLSBCdWcgIzE1Njk3OTA6IG1haWxib3gucHk6IE1haWxkaXIuZ2V0X2ZvbGRlcigpIGFuZCBNSC5nZXRfZm9sZGVyKCkKLSAgd2VyZW4ndCBwYXNzaW5nIHRoZSBtZXNzYWdlIGZhY3Rvcnkgb24gdG8gbmV3bHkgY3JlYXRlZCBNYWlsZGlyL01ICi0gIG9iamVjdHMuCi0KLS0gUGF0Y2ggIzE1MTQ1NDM6IG1haWxib3gucHk6IEluIHRoZSBNYWlsZGlyIGNsYXNzLCByZXBvcnQgZXJyb3JzIGlmCi0gIHRoZXJlJ3MgYSBmaWxlbmFtZSBjbGFzaCBpbnN0ZWFkIG9mIHBvc3NpYmx5IGxvc2luZyBhIG1lc3NhZ2UuCi0gIChQYXRjaCBieSBEYXZpZCBXYXRzb24uKQotCi0tIFBhdGNoICMxNTE0NTQ0OiBUcnkgdG8gZW5zdXJlIHRoYXQgbWVzc2FnZXMvaW5kZXhlcyBoYXZlIGJlZW4KLSAgcGh5c2ljYWxseSB3cml0dGVuIHRvIGRpc2sgYWZ0ZXIgY2FsbGluZyAuZmx1c2goKSBvcgotICAuY2xvc2UoKS4gKFBhdGNoIGJ5IERhdmlkIFdhdHNvbi4pCi0KLS0gUGF0Y2ggIzE1OTIyNTA6IEFkZCBlbGlkZSBhcmd1bWVudCB0byBUa2ludGVyLlRleHQuc2VhcmNoLgotCi0tIFBhdGNoICM4Mzg1NDY6IE1ha2UgdGVybWluYWwgYmVjb21lIGNvbnRyb2xsaW5nIGluIHB0eS5mb3JrKCkuCi0KLS0gUGF0Y2ggIzEzNTE3NDQ6IEFkZCBhc2t5ZXNub2NhbmNlbCBoZWxwZXIgZm9yIHRrTWVzc2FnZUJveC4KLQotLSBQYXRjaCAjMTA2MDU3NzogRXh0cmFjdCBsaXN0IG9mIFJQTSBmaWxlcyBmcm9tIHNwZWMgZmlsZSBpbgotICBiZGlzdF9ycG0uCi0KLS0gQnVnICMxNTg2NjEzOiBmaXggemxpYiBhbmQgYnoyIGNvZGVjcycgaW5jcmVtZW50YWwgZW4vZGVjb2RlcnMuCi0KLS0gUGF0Y2ggIzE1ODM4ODA6IGZpeCB0YXJmaWxlJ3MgcHJvYmxlbXMgd2l0aCBsb25nIG5hbWVzIGFuZCBwb3NpeC8KLSAgR05VIG1vZGVzLgotCi0tIEJ1ZyAjMTU4NjQ0ODogdGhlIGNvbXBpbGVyIG1vZHVsZSBub3cgZW1pdHMgdGhlIHNhbWUgYnl0ZWNvZGUgZm9yCi0gIGxpc3QgY29tcHJlaGVuc2lvbnMgYXMgdGhlIGJ1aWx0LWluIGNvbXBpbGVyLCB1c2luZyB0aGUgTElTVF9BUFBFTkQKLSAgb3Bjb2RlLgotCi0tIEZpeCBjb2RlY3MuRW5jb2RlZEZpbGUgd2hpY2ggZGlkIG5vdCB1c2UgZmlsZV9lbmNvZGluZyBpbiAyLjUuMCwgYW5kCi0gIGZpeCBhbGwgY29kZWNzIGZpbGUgd3JhcHBlcnMgdG8gd29yayBjb3JyZWN0bHkgd2l0aCB0aGUgIndpdGgiCi0gIHN0YXRlbWVudCAoYnVnICMxNTg2NTEzKS4KLQotLSBMaWIvbW9kdWxlZmluZGVyLnB5IG5vdyBoYW5kbGVzIGFic29sdXRlIGFuZCByZWxhdGl2ZSBpbXBvcnRzCi0gIGNvcnJlY3RseS4KLQotLSBQYXRjaCAjMTU2NzI3NDogU3VwcG9ydCBTTVRQIG92ZXIgVExTLgotCi0tIFBhdGNoICMxNTYwNjk1OiBBZGQgLm5vdGUuR05VLXN0YWNrIHRvIGN0eXBlcycgc3lzdi5TIHNvIHRoYXQgY3R5cGVzCi0gIGlzbid0IGNvbnNpZGVyZWQgYXMgcmVxdWlyaW5nIGV4ZWN1dGFibGUgc3RhY2tzLgotCi0tIGN0eXBlcyBjYWxsYmFjayBmdW5jdGlvbnMgb25seSBzdXBwb3J0ICdmdW5kYW1lbnRhbCcgZGF0YSB0eXBlcyBhcwotICByZXN1bHQgdHlwZS4gIFJhaXNlIGFuIGVycm9yIHdoZW4gc29tZXRoaW5nIGVsc2UgaXMgdXNlZC4gIFRoaXMgaXMgYQotICBwYXJ0aWFsIGZpeCBmb3IgQnVnICMxNTc0NTg0LgotCi0tIEZpeCB0dXJ0bGUgc28gdGhhdCB0aW1lLnNsZWVwIGlzIGltcG9ydGVkIGZvciB0aGUgZW50aXJlIGxpYnJhcnkuCi0gIEFsbG93cyB0aGUgZGVtbzIgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgb24gaXRzIG93biBpbnN0ZWFkIG9mIG9ubHkKLSAgd2hlbiB0aGUgbW9kdWxlIGlzIHJ1biBhcyBhIHNjcmlwdC4KLQotLSBCdWcgIzE1NjUxNTA6IEZpeCBzdWJzZWNvbmQgcHJvY2Vzc2luZyBmb3Igb3MudXRpbWUgb24gV2luZG93cy4KLQotLSBTdXBwb3J0IGZvciBNU1ZDIDggd2FzIGFkZGVkIHRvIGJkaXN0X3dpbmluc3QuCi0KLS0gQnVnICMxNDQ2MDQzOiBjb3JyZWN0bHkgcmFpc2UgYSBMb29rdXBFcnJvciBpZiBhbiBlbmNvZGluZyBuYW1lCi0gIGdpdmVuIHRvIGVuY29kaW5ncy5zZWFyY2hfZnVuY3Rpb24oKSBjb250YWlucyBhIGRvdC4KLQotLSBCdWcgIzE1NjA2MTc6IGluIHB5Y2xiciwgcmV0dXJuIGZ1bGwgbW9kdWxlIG5hbWUgbm90IG9ubHkgZm9yCi0gIGNsYXNzZXMsIGJ1dCBhbHNvIGZvciBmdW5jdGlvbnMuCi0KLS0gQnVnICMxNDU3ODIzOiBjZ2kuKFN2KUZvcm1Db250ZW50RGljdCdzIGNvbnN0cnVjdG9yIG5vdyB0YWtlcwotICBrZWVwX2JsYW5rX3ZhbHVlcyBhbmQgc3RyaWN0X3BhcnNpbmcga2V5d29yZCBhcmd1bWVudHMuCi0KLS0gQnVnICMxNTY2NjAyOiBjb3JyZWN0IGZhaWx1cmUgb2YgcG9zaXhwYXRoIHVuaXR0ZXN0IHdoZW4gJEhPTUUgZW5kcwotICB3aXRoIGEgc2xhc2guCi0KLS0gQnVnICMxNTY1NjYxOiBpbiB3ZWJicm93c2VyLCBzcGxpdCgpIHRoZSBjb21tYW5kIGZvciB0aGUgZGVmYXVsdAotICBHTk9NRSBicm93c2VyIGluIGNhc2UgaXQgaXMgYSBjb21tYW5kIHdpdGggYXJncy4KLQotLSBNYWRlIHRoZSBlcnJvciBtZXNzYWdlIGZvciB0aW1lLnN0cnB0aW1lIHdoZW4gdGhlIGRhdGEgYW5kCi0gIGZvcm1hdCBkbyBtYXRjaCBiZSBtb3JlIGNsZWFyLgotCi0tIEZpeCBhIGJ1ZyBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KCkgdGhhdCBsZWQgdG8gYW4gZXJyb3IKLSAgYmVpbmcgcmFpc2VkIHdoZW4gcHJpbnRfZXhjKCkgd2FzIGNhbGxlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiBzZXQuCi0gIEluIHZlcnNpb24gMi40LCB0aGlzIHByaW50ZWQgIk5vbmUiLCByZXN0b3JlZCB0aGF0IGJlaGF2aW9yLgotCi0tIE1ha2Ugd2ViYnJvd3Nlci5CYWNrZ3JvdW5kQnJvd3NlciB1c2FibGUgaW4gV2luZG93cyAoaXQgd2Fzbid0Ci0gIGJlY2F1c2UgdGhlIGNsb3NlX2ZkcyBhcmcgdG8gc3VicHJvY2Vzcy5Qb3BlbiBpcyBub3Qgc3VwcG9ydGVkKS4KLQotLSBSZXZlcnRlZCBwYXRjaCAjMTUwNDMzMyB0byBzZ21sbGliIGJlY2F1c2UgaXQgaW50cm9kdWNlZCBhbiBpbmZpbml0ZQotICBsb29wLgotCi0tIFBhdGNoICMxNTUzMzE0OiBGaXggdGhlIGluc3BlY3QucHkgc2xvd2Rvd24gdGhhdCB3YXMgaHVydGluZyBJUHl0aG9uCi0gICYgU0FHRSBieSBhZGRpbmcgc21hcnRlciBjYWNoaW5nIGluIGluc3BlY3QuZ2V0bW9kdWxlKCkKLQotLSBGaXggbWlzc2luZyBpbXBvcnQgb2YgdGhlIHR5cGVzIG1vZHVsZSBpbiBsb2dnaW5nLmNvbmZpZy4KLQotLSBQYXRjaCAjMTU1MDg4NjogRml4IGRlY2ltYWwgbW9kdWxlIGNvbnRleHQgbWFuYWdlbWVudCBpbXBsZW1lbnRhdGlvbgotICB0byBtYXRjaCB0aGUgbG9jYWxjb250ZXh0KCkgZXhhbXBsZSBmcm9tIFBFUCAzNDMuCi0KLS0gQnVnICMxNTQ1MzQxOiBUaGUgJ2NsYXNzaWZpZXInIGtleXdvcmQgYXJndW1lbnQgdG8gdGhlIERpc3R1dGlscwotICBzZXR1cCgpIGZ1bmN0aW9uIG5vdyBhY2NlcHRzIHR1cGxlcyBhcyB3ZWxsIGFzIGxpc3RzLgotCi0tIEJ1ZyAjMTU0MTg2MzogdXVpZC51dWlkMSBmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIGlkZW50aWZpZXJzIG9uCi0gIHN5c3RlbXMgd2l0aCBsb3cgY2xvY2sgcmVzb2x1dGlvbi4KLQotLSBCdWcgIzE1MzE4NjI6IERvIG5vdCBjbG9zZSBzdGFuZGFyZCBmaWxlIGRlc2NyaXB0b3JzIGluIHN1YnByb2Nlc3MuCi0KLS0gRml4IHV0Zi04LXNpZyBpbmNyZW1lbnRhbCBkZWNvZGVyLCB3aGljaCBkaWRuJ3QgcmVjb2duaXNlIGEgQk9NIHdoZW4KLSAgdGhlIGZpcnN0IGNodW5rIGZlZCB0byB0aGUgZGVjb2RlciBzdGFydGVkIHdpdGggYSBCT00sIGJ1dCB3YXMKLSAgbG9uZ2VyIHRoYW4gMyBieXRlcy4KLQotLSBUaGUgaW1wbGVtZW50YXRpb24gb2YgVW5pY29kZUVycm9yIG9iamVjdHMgaGFzIGJlZW4gc2ltcGxpZmllZAotICAoc3RhcnQgYW5kIGVuZCBhdHRyaWJ1dGVzIGFyZSBub3cgc3RvcmVkIGRpcmVjdGx5IGFzIFB5X3NzaXplX3QKLSAgbWVtYmVycykuCi0KLS0gSXNzdWUgIzgyOTk1MTogSW4gdGhlIHNtdHBsaWIgbW9kdWxlLCBTTVRQLnN0YXJ0dGxzKCkgbm93IGNvbXBsaWVzCi0gIHdpdGggUkZDIDMyMDcgYW5kIGZvcmdldHMgYW55IGtub3dsZWRnZSBvYnRhaW5lZCBmcm9tIHRoZSBzZXJ2ZXIgbm90Ci0gIG9idGFpbmVkIGZyb20gdGhlIFRMUyBuZWdvdGlhdGlvbiBpdHNlbGYuICBQYXRjaCBjb250cmlidXRlZCBieSBCaWxsCi0gIEZlbm5lci4KLQotLSBJc3N1ZSAjMTMzOTogVGhlIHNtdHBsaWIuU01UUCBjbGFzcyBoYXMgYmVlbiByZWZhY3RvcmVkIGEgYml0IHN1Y2gKLSAgdGhhdCB0aGUgU01UUC5zdGFydHRscygpIGNhbGxlciBubyBsb25nZXIgbmVlZHMgdG8gY2FsbCBlaGxvKCkKLSAgYmVmb3JlaGFuZC4gIFNNVFAuc3RhcnR0bHMoKSBub3cgcmFpc2VzIGFuIGV4Y2VwdGlvbiBvZiB0aGUgc2VydmVyCi0gIGRvZXMgbm90IGNsYWltIHRvIHN1cHBvcnQgc3RhcnR0bHMuICBBZGRzIHRoZQotICBTTVRQLmVobG9fb3JfaGVsb19pZl9uZWVkZWQoKSBtZXRob2QuICBQYXRjaCBjb250cmlidXRlZCBieSBCaWxsCi0gIEZlbm5lci4KLQotLSBQYXRjaCAjMTA4OTM1ODogQWRkIHNpZ25hbC5zaWdpbnRlcnJ1cHQsIGEgd3JhcHBlciBhcm91bmQKLSAgc2lnaW50ZXJydXB0KDMpLgotCi1FeHRlbnNpb24gTW9kdWxlcwotLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBQYXRjaCAjMTY1NzogYWRkZWQgc2VsZWN0LmVwb2xsIGFuZCBzZWxlY3Qua3F1ZXVlLgotCi0tIFBhdGNoICMxNTA2MTcxOiBhZGRlZCBvcGVyYXRvci5tZXRob2RjYWxsZXIoKS4KLQotLSBQYXRjaCAjMTgyNjogb3BlcmF0b3IuYXR0cmdldHRlcigpIG5vdyBzdXBwb3J0cyBkb3R0ZWQgYXR0cmlidXRlIHBhdGhzLgotCi0tIFBhdGNoICMxOTU3OiBzeXNsb2dtb2R1bGU6IFJlbGVhc2UgR0lMIHdoZW4gY2FsbGluZyBzeXNsb2coMykuCi0KLS0gQnVnICMyMTEyOiBtbWFwLmVycm9yIGlzIG5vdyBhIHN1YmNsYXNzIG9mIEVudmlyb25tZW50RXJyb3IgYW5kIG5vdAotICBhIGRpcmVjdCBFbnZpcm9ubWVudEVycm9yLgotCi0tIEJ1ZyAjMjExMTogbW1hcCBzZWdmYXVsdHMgd2hlbiB0cnlpbmcgdG8gd3JpdGUgYSBibG9jayBvcGVuZWQgd2l0aAotICBQUk9UX1JFQUQuCi0KLS0gQnVnICMyMDYzOiBjb3JyZWN0IG9yZGVyIG9mIHV0aW1lIGFuZCBzdGltZSBpbiBvcy50aW1lcygpIHJlc3VsdCBvbgotICBXaW5kb3dzLgotCi0tIFBhdGNoICMxNzM2OiBGaXggZmlsZSBuYW1lIGhhbmRsaW5nIG9mIF9tc2kuRkNJQ3JlYXRlLgotCi0tIFVwZGF0ZWQgYGBiaWc1aGtzY3NgYCBjb2RlYyB0byB0aGUgSEtTQ1MgcmV2aXNpb24gb2YgMjAwNC4KLQotLSBJc3N1ZSAjMTk0MDogbWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgY3Vyc2VzLmZpbHRlcigpIGJlZm9yZQotICBjdXJzZXMuaW5pdHNjcigpIGFzIHRoZSBkb2N1bWVudGF0aW9uIHNheXMuCi0KLS0gQmFja3BvcnQgb2YgX2ZpbGVpbyBtb2R1bGUgZnJvbSBQeXRob24gMy4wLgotCi0tIFBhdGNoICMxMDg3NzQxOiBtbWFwLm1tYXAgaXMgbm93IGEgY2xhc3MsIG5vdCBhIGZhY3RvcnkgZnVuY3Rpb24uIEl0Ci0gIGlzIGFsc28gc3ViY2xhc3NhYmxlIG5vdy4KLQotLSBQYXRjaCAjMTY0ODogYWRkZWQgYGBzeXMuZ2V0cHJvZmlsZSgpYGAgYW5kIGBgc3lzLmdldHRyYWNlKClgYC4KLQotLSBQYXRjaCAjMTY2MzMyOTogYWRkZWQgYGBvcy5jbG9zZXJhbmdlKClgYCBmdW5jdGlvbiB0byBxdWlja2x5IGNsb3NlCi0gIGEgcmFuZ2Ugb2YgZmlsZSBkZXNjcmlwdG9ycyB3aXRob3V0IGNvbnNpZGVyaW5nIGVycm9ycy4KLQotLSBQYXRjaCAjOTc2ODgwOiBgYG1tYXBgYCBvYmplY3RzIG5vdyBoYXZlIGFuIGBgcmZpbmRgYCBtZXRob2QgdGhhdAotICB3b3JrcyBhcyBleHBlY3RlZC4gIGBgbW1hcC5maW5kYGAgYWxzbyB0YWtlcyBhbiBvcHRpb25hbCBgYGVuZGBgCi0gIHBhcmFtZXRlci4KLQotLSBfd2lucmVnJ3MgSEtFWSBvYmplY3QgaGFzIGdhaW5lZCBfX2VudGVyX18gYW5kIF9fZXhpdF9fIG1ldGhvZHMgdG8KLSAgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLiAgVGhlIF93aW5yZWcgbW9kdWxlIGFsc28KLSAgZ2FpbmVkIGEgbmV3IGZ1bmN0aW9uIGBgRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzYGAgdG8gZXhwYW5kCi0gIFJFR19FWFBBTkRfU1oga2V5cy4KLQotLSBpdGVydG9vbHMuc3Rhcm1hcCgpIG5vdyBhY2NlcHRzIGFueSBpdGVyYWJsZSBpbnB1dC4gUHJldmlvdXNseSwgaXQKLSAgcmVxdWlyZWQgdGhlIGZ1bmN0aW9uIGlucHV0cyB0byBiZSB0dXBsZXMuCi0KLS0gaXRlcnRvb2xzLmNoYWluKCkgbm93IGhhcyBhbiBhbHRlcm5hdGUgY29uc3RydWN0b3IsCi0gIGNoYWluLmZyb21faXRlcmFibGUoKS4KLQotLSBJc3N1ZSAjMTY0NjogTWFrZSBzb2NrZXQgc3VwcG9ydCBUSVBDLiBUaGUgc29ja2V0IG1vZHVsZSBub3cgaGFzCi0gIHN1cHBvcnQgZm9yIFRJUEMgdW5kZXIgTGludXgsIHNlZSBodHRwOi8vdGlwYy5zZi5uZXQvIGZvciBtb3JlCi0gIGluZm9ybWF0aW9uLgotCi0tIEFkZGVkIGludGVyZmFjZSBmb3IgV2luZG93cycgV1NBSW9jdGwgdG8gc29ja2V0IG9iamVjdCBhbmQgYWRkZWQgYW4KLSAgZXhhbXBsZSBmb3IgYSBzaW1wbGUgbmV0d29yayBzbmlmZmVyLgotCi0tIEJ1ZyAjMTMwMTogQmFkIGFzc2VydCBpbiBfdGtpbnRlciBmaXhlZC4KLQotLSBBZGRlZCBiZGlzdF93aW5pbnN0IGV4ZWN1dGFibGUgZm9yIFZTIDIwMDguCi0KLS0gQnVnICMxNjA0OiBjb2xsZWN0aW9ucy5kZXF1ZS5fX2luaXRfXyhpdGVyYWJsZSkgbm93IGNsZWFycyBhbnkgcHJpb3IKLSAgY29udGVudHMgYmVmb3JlIGFkZGluZyBlbGVtZW50cyBmcm9tIHRoZSBpdGVyYWJsZS4gIFRoaXMgZml4IGJyaW5ncwotICB0aGUgYmVoYXZpb3IgaW50byBsaW5lIHdpdGggdGhhdCBmb3IgbGlzdC5fX2luaXRfXygpLgotCi0tIEFkZGVkIHdpZGUgY2hhciBmdW5jdGlvbnMgdG8gbXN2Y3J0IG1vZHVsZTogZ2V0d2NoLCBnZXR3Y2hlLCBwdXR3Y2gKLSAgYW5kIHVuZ2V0d2NoLiBUaGUgZnVuY3Rpb25zIGFjY2VwdCBvciByZXR1cm4gdW5pY29kZS4KLQotLSBvcy5hY2Nlc3Mgbm93IHJldHVybnMgVHJ1ZSBvbiBXaW5kb3dzIGZvciBhbnkgZXhpc3RpbmcgZGlyZWN0b3J5LgotCi0tIEFkZGVkIHdhcm5weTNrIGZ1bmN0aW9uIHRvIHRoZSB3YXJuaW5ncyBtb2R1bGUuCi0KLS0gTWFyc2hhbC5kdW1wcygpIG5vdyBleHBlY3RzIGV4YWN0IHR5cGUgbWF0Y2hlcyBmb3IgaW50LCBsb25nLCBmbG9hdCwKLSAgY29tcGxleCwgdHVwbGUsIGxpc3QsIGRpY3QsIHNldCwgYW5kIGZyb3plbnNldC4gIEZvcm1lcmx5LCBpdCB3b3VsZAotICBzaWxlbnRseSBtaXNjb2RlIHN1YmNsYXNzZXMgb2YgdGhvc2UgdHlwZXMuICBOb3csIGl0IHJhaXNlcyBhCi0gIFZhbHVlRXJyb3IgaW5zdGVhZC4KLQotLSBQYXRjaCAjMTM4ODQ0MDogQWRkIHNldF9jb21wbGV0aW9uX2Rpc3BsYXlfbWF0Y2hlc19ob29rIGFuZAotICBnZXRfY29tcGxldGlvbl90eXBlIHRvIHJlYWRsaW5lLgotCi0tIEJ1ZyAjMTY0OTA5ODogQXZvaWQgZGVjbGFyYXRpb24gb2YgemVyby1zaXplZCBhcnJheSBkZWNsYXJhdGlvbiBpbgotICBzdHJ1Y3R1cmUuCi0KLS0gUmVtb3ZlZCB0aGUgcmdiaW1nIG1vZHVsZTsgYmVlbiBkZXByZWNhdGVkIHNpbmNlIFB5dGhvbiAyLjUuCi0KLS0gQnVnICMxNzIxMzA5OiBwcmV2ZW50IGJzZGRiIG1vZHVsZSBmcm9tIGZyZWVpbmcgcmFuZG9tIG1lbW9yeS4KLQotLSBCdWcgIzEyMzM6IGZpeCBic2RkYi5kYnNoZWx2ZS5EQlNoZWxmIGFwcGVuZCBtZXRob2QgdG8gd29yayBhcwotICBpbnRlbmRlZCBmb3IgUkVDTk8gZGF0YWJhc2VzLgotCi0tIHB5YnNkZGIuc2YubmV0IEJ1ZyAjNDc3MTgyOiBMb2FkIHRoZSBkYXRhYmFzZSBmbGFncyBhdCBkYXRhYmFzZSBvcGVuCi0gIHRpbWUgc28gdGhhdCBvcGVuaW5nIGEgZGF0YWJhc2UgcHJldmlvdXNseSBjcmVhdGVkIHdpdGggdGhlIERCX0RVUAotICBvciBEQl9EVVBTT1JUIGZsYWcgc2V0IHdpbGwga2VlcCB0aGUgcHJvcGVyIGJlaGF2aW9yIG9uIHN1YnNlcXVlbnQKLSAgb3BlbnMuICBTcGVjaWZpY2FsbHk6IGRpY3Rpb25hcnkgYXNzaWdubWVudCB0byBhIERCIG9iamVjdCB3aWxsCi0gIHJlcGxhY2UgYWxsIHZhbHVlcyBmb3IgYSBnaXZlbiBrZXkgd2hlbiB0aGUgZGF0YWJhc2UgYWxsb3dzCi0gIGR1cGxpY2F0ZSB2YWx1ZXMuICBEQiB1c2VycyBzaG91bGQgdXNlIERCLnB1dChrLCB2KSB3aGVuIHRoZXkgd2FudAotICB0byBzdG9yZSBkdXBsaWNhdGVzOyBub3QgREJba10gPSB2LgotCi0tIEFkZCB0aGUgYnNkZGIuZGIuREJFbnYubG9ja19pZF9mcmVlIG1ldGhvZC4KLQotLSBCdWcgIzE2ODY0NzU6IFN1cHBvcnQgc3RhdCdpbmcgb3BlbiBmaWxlcyBvbiBXaW5kb3dzIGFnYWluLgotCi0tIFBhdGNoICMxMTg1NDQ3OiBiaW5hc2NpaS5iMmFfcXAoKSBub3cgY29ycmVjdGx5IHF1b3RlcyBiaW5hcnkKLSAgY2hhcmFjdGVycyB3aXRoIEFTQ0lJIHZhbHVlIGxlc3MgdGhhbiAzMi4gQWxzbywgaXQgY29ycmVjdGx5IHF1b3RlcwotICBkb3RzIG9ubHkgaWYgdGhleSBvY2N1ciBvbiBhIHNpbmdsZSBsaW5lLCBhcyBvcHBvc2VkIHRvIHRoZSBwcmV2aW91cwotICBiZWhhdmlvciBvZiBxdW90aW5nIGRvdHMgaWYgdGhleSBhcmUgdGhlIHNlY29uZCBjaGFyYWN0ZXIgb2YgYW55Ci0gIGxpbmUuCi0KLS0gQnVnICMxNjIyODk2OiBmaXggYSByYXJlIGNvcm5lciBjYXNlIHdoZXJlIHRoZSBiejIgbW9kdWxlIHJhaXNlZCBhbgotICBlcnJvciBpbiBzcGl0ZSBvZiBhIHN1Y2Nlc2Z1bCBjb21wcmVzc2lvbi4KLQotLSBQYXRjaCAjMTY1NDQxNzogbWFrZSBvcGVyYXRvci57Z2V0LHNldCxkZWx9c2xpY2UgdXNlIHRoZSBmdWxsIHJhbmdlCi0gIG9mIFB5X3NzaXplX3QuCi0KLS0gUGF0Y2ggIzE2NDY3Mjg6IGRhdGV0aW1lLmZyb210aW1lc3RhbXAgZmFpbHMgd2l0aCBuZWdhdGl2ZQotICBmcmFjdGlvbmFsIHRpbWVzLiAgV2l0aCB1bml0dGVzdC4KLQotLSBQYXRjaCAjMTQ5MDE5MDogcG9zaXhtb2R1bGUgbm93IGluY2x1ZGVzIG9zLmNoZmxhZ3MoKSBhbmQKLSAgb3MubGNoZmxhZ3MoKSBmdW5jdGlvbnMgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSB1bmRlcmx5aW5nIHN5c3RlbQotICBjYWxscyBhcmUgYXZhaWxhYmxlLgotCi0tIFBhdGNoICMxNDk0MTQwOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIG5ldyBzdHJ1Y3QuU3RydWN0IG9iamVjdC4KLQotLSBQYXRjaCAjMTQzMjM5OTogU3VwcG9ydCB0aGUgSENJIHByb3RvY29sIGZvciBibHVldG9vdGggc29ja2V0cwotCi0tIFBhdGNoICMxNjU3Mjc2OiBNYWtlIE5FVExJTktfRE5SVE1TRyBjb25kaXRpb25hbC4KLQotLSBCdWcgIzE2NTM3MzY6IENvbXBsYWluIGFib3V0IGtleXdvcmQgYXJndW1lbnRzIHRvIHRpbWUuaXNvZm9ybWF0LgotCi0tIEJ1ZyAjMTQ4NjY2MzogZG9uJ3QgcmVqZWN0IGtleXdvcmQgYXJndW1lbnRzIGZvciBzdWJjbGFzc2VzIG9mCi0gIGJ1aWx0LWluIHR5cGVzLgotCi0tIFBhdGNoICMxNjEwNTc1OiBUaGUgc3RydWN0IG1vZHVsZSBub3cgc3VwcG9ydHMgdGhlICd0JyBjb2RlLCBmb3IgQzk5Ci0gIF9Cb29sLgotCi0tIFBhdGNoICMxNjM1MDU4OiBlbnN1cmUgdGhhdCBodG9ubCBhbmQgZnJpZW5kcyBuZXZlciBhY2NlcHQgb3IgcmV0dXJuCi0gIG5lZ2F0aXZlIG51bWJlcnMsIHBlciB0aGUgdW5kZXJseWluZyBDIGltcGxlbWVudGF0aW9uLgotCi0tIFBhdGNoICMxNTQ0Mjc5OiBJbXByb3ZlIHRocmVhZC1zYWZldHkgb2YgdGhlIHNvY2tldCBtb2R1bGUgYnkgbW92aW5nCi0gIHRoZSBzb2NrX2FkZHJfdCBzdG9yYWdlIG91dCBvZiB0aGUgc29ja2V0IG9iamVjdC4KLQotLSBQYXRjaCAjMTAxOTgwODogZml4IGJ1ZyB0aGF0IGNhdXNlcyBhbiBpbmNvcnJlY3QgZXJyb3IgdG8gYmUKLSAgcmV0dXJuZWQgd2hlbiBhIHNvY2tldCB0aW1lb3V0IGlzIHNldCBhbmQgYSBjb25uZWN0aW9uIGF0dGVtcHQKLSAgZmFpbHMuCi0KLS0gU3BlZWQgdXAgZnVuY3Rpb24gY2FsbHMgaW50byB0aGUgbWF0aCBtb2R1bGUuCi0KLS0gQnVnICMxNTg4MjE3OiBkb24ndCBwYXJzZSAiPSAiIGFzIGEgc29mdCBsaW5lIGJyZWFrIGluIGJpbmFzY2lpJ3MKLSAgYTJiX3FwKCkgZnVuY3Rpb24sIGluc3RlYWQgbGVhdmUgaXQgaW4gdGhlIHN0cmluZyBhcyBxdW9wcmkuZGVjb2RlKCkKLSAgZG9lcy4KLQotLSBCdWcgIzE1OTk3ODI6IEZpeCBzZWdmYXVsdCBvbiBic2RkYi5kYi5EQigpLnR5cGUoKS4KLQotLSBCdWcgIzE1Njc2NjY6IEVtdWxhdGUgR2V0RmlsZUF0dHJpYnV0ZXNFeEEgZm9yIFdpbjk1LgotCi0tIFBhdGNoICMxNTc2MTY2OiBTdXBwb3J0IG9zLnV0aW1lIGZvciBkaXJlY3RvcmllcyBvbiBXaW5kb3dzIE5UKy4KLQotLSBQYXRjaCAjMTU3MjcyNDogZml4IHR5cG8gKCc9JyBpbnN0ZWFkIG9mICc9PScpIGluIF9tc2kuYy4KLQotLSBCdWcgIzE1NzI4MzI6IGZpeCBhIGJ1ZyBpbiBJU08tMjAyMiBjb2RlY3Mgd2hpY2ggbWF5IGNhdXNlIHNlZ2ZhdWx0Ci0gIHdoZW4gZW5jb2Rpbmcgbm9uLUJNUCB1bmljb2RlIGNoYXJhY3RlcnMuCi0KLS0gQnVnICMxNTU2Nzg0OiBhbGxvdyBmb3JtYXQgc3RyaW5ncyBsb25nZXIgdGhhbiAxMjcgY2hhcmFjdGVycyBpbgotICBkYXRldGltZSdzIHN0cmZ0aW1lIGZ1bmN0aW9uLgotCi0tIEZpeCBpdGVydG9vbHMuY291bnQobikgdG8gd29yayB3aXRoIG5lZ2F0aXZlIG51bWJlcnMgYWdhaW4uCi0KLS0gUkxJTUlUX1NCU0laRSB3YXMgYWRkZWQgdG8gdGhlIHJlc291cmNlIG1vZHVsZSB3aGVyZSBhdmFpbGFibGUuCi0KLS0gQnVnICMxNTUxNDI3OiBmaXggYSB3cm9uZyBOVUxMIHBvaW50ZXIgY2hlY2sgaW4gdGhlIHdpbjMyIHZlcnNpb24gb2YKLSAgb3MudXJhbmRvbSgpLgotCi0tIEJ1ZyAjMTU0ODA5MjogZml4IGN1cnNlcy50cGFybSBzZWcgZmF1bHQgb24gaW52YWxpZCBpbnB1dC4KLQotLSBQYXRjaCAjMTExNDogZml4IGN1cnNlcyBtb2R1bGUgY29tcGlsYXRpb24gb24gNjQtYml0IEFJWCwgJiBwb3NzaWJseQotICBvdGhlciA2NC1iaXQgTFA2NCBwbGF0Zm9ybXMgd2hlcmUgYXR0cl90IGlzIG5vdCB0aGUgc2FtZSBzaXplIGFzIGEKLSAgbG9uZy4gIChDb250cmlidXRlZCBieSBMdWtlIE1ld2J1cm4uKQotCi0tIEJ1ZyAjMTU1MDcxNDogZml4IFN5c3RlbUVycm9yIGZyb20gaXRlcnRvb2xzLnRlZSBvbiBuZWdhdGl2ZSB2YWx1ZQotICBmb3Igbi4KLQotLSBGaXhlZCBhIGZldyBidWdzIG9uIGNqa2NvZGVjczoKLSAgLSBnYmsgYW5kIGdiMTgwMzAgY29kZWMgbm93IGhhbmRsZSBVKzMwRkIgS0FUQUtBTkEgTUlERExFIERPVAotICAgIGNvcnJlY3RseS4KLSAgLSBpc28yMDIyX2pwXzIgY29kZWMgbm93IGVuY29kZXMgaW50byBHMCBmb3IgS1MgWCAxMDAxLCBHQjIzMTIKLSAgICBjb2RlcG9pbnRzIHRvIGNvbmZvcm0gdGhlIHN0YW5kYXJkLgotICAtIGlzbzIwMjJfanBfMyBhbmQgaXNvMjAyMl9qcF8yMDA0IGNvZGVjIGNhbiBlbmNvZGUgSklTIFggMDIxMzoyCi0gICAgY29kZXBvaW50cyBub3cuCi0KLS0gQnVnICMxNTUyNzI2OiBpbiByZWFkbGluZS5jLCBhdm9pZCByZXBlYXRlZGx5IHBvbGxpbmcgaW4gaW50ZXJhY3RpdmUKLSAgbW9kZSBieSBvbmx5IHBsYWNpbmcgYSB0aW1lb3V0IG9uIHRoZSBzZWxlY3QoKSBpZiBhbiBpbnB1dCBob29rIGhhcwotICBiZWVuIGRlZmluZWQuICBUaGlzIHByZXZlbnRzIGFuIGludGVyYWN0aXZlIFB5dGhvbiBmcm9tIHdha2luZyB1cCAxMAotICB0aW1lcyBwZXIgc2Vjb25kLiAgUGF0Y2ggYnkgUmljaGFyZCBCb3VsdG9uLgotCi0tIGZpeGVkIGEgYnVnIHdpdGggYnNkZGIuREIuc3RhdDogdGhlIGZsYWdzIGFuZCB0eG4ga2V5d29yZCBhcmd1bWVudHMKLSAgd2VyZSB0cmFuc3Bvc2VkLgotCi0tIEFkZGVkIHN1cHBvcnQgZm9yIGxpbmtpbmcgdGhlIGJzZGRiIG1vZHVsZSBhZ2FpbnN0IEJlcmtlbGV5REIgNC41LngsCi0gIDQuNi54IGFuZCA0LjcueC4KLQotLSBCdWcgIzE2MzM2MjE6IGlmIGN1cnNlcy5yZXNpemV0ZXJtKCkgb3IgY3Vyc2VzLnJlc2l6ZV90ZXJtKCkgaXMKLSAgY2FsbGVkLCB1cGRhdGUgX2N1cnNlcy5MSU5FUywgX2N1cnNlcy5DT0xTLCBjdXJzZXMuTElORVMgYW5kCi0gIGN1cnNlcy5DT0xTLgotCi0tIEZpeCBhbiBvZmYtYnktb25lIGJ1ZyBpbiBsb2NhbGUuc3RyeGZybSgpLgotCi0tIEZpeCBsaWJmZmkgY29uZmlndXJlIGZvciBocHBhKi0qLWxpbnV4KiB8IHBhcmlzYyotKi1saW51eCouCi0KLS0gQnVpbGQgdXNpbmcgc3lzdGVtIGZmaSBsaWJyYXJ5IG9uIGFybSotbGludXgqLgotCi0tIEJ1ZyAjMTM3MjogemxpYm1vZHVsZS5jOiBpbnQgb3ZlcmZsb3cgaW4gUHlabGliX2RlY29tcHJlc3MKLQotLSBic2RkYiBtb2R1bGU6IEZpeCBtZW1vcnkgbGVhayB3aGVuIHVzaW5nIGRhdGFiYXNlIGN1cnNvcnMgb24KLSAgZGF0YWJhc2VzIHdpdGhvdXQgYSBEQkVudi4KLQotLSBUaGUgc3FsaXRlMyBtb2R1bGUgd2FzIHVwZGF0ZWQgdG8gcHlzcWxpdGUgMi40LjEuCi0KLUlETEUKLS0tLS0KLQotLSBCdWcgIzgxMzM0MjogU3RhcnQgdGhlIElETEUgc3VicHJvY2VzcyB3aXRoIC1RbmV3IGlmIHRoZSBwYXJlbnQgaXMKLSAgc3RhcnRlZCB3aXRoIHRoYXQgb3B0aW9uLgotCi0tIElETEU6IEhvbm9yIHRoZSAiQ2FuY2VsIiBhY3Rpb24gaW4gdGhlIHNhdmUgZGlhbG9nIChEZWJpYW4gYnVnCi0gICMyOTkwOTIpLgotCi1UZXN0cwotLS0tLS0KLQotLSBSZWZhY3RvciB0ZXN0X2xvZ2dpbmcgdG8gdXNlIHVuaXR0ZXN0LgotCi0tIFJlZmFjdG9yIHRlc3RfcHJvZmlsZSBhbmQgdGVzdF9jcHJvZmlsZSB0byB1c2UgdGhlIHNhbWUgY29kZSB0bwotICBwcm9maWxlLgotCi0tIE1ha2UgdGVzdF9ydW5weSByZWVudHJhbnQgYnkgZml4aW5nIF9jaGVja19tb2R1bGUgdG8gY2xlYXIgb3V0IGFueQotICBtb2R1bGUgYmVpbmcgdGVzdGVkLiAgV2FzIGNhdXNpbmcgYW4gZXJyb3IgYnkgX19pbXBvcnRfXyBkb2luZyBhCi0gIHJlbG9hZCBvbiB0aGUgc2Vjb25kIHJ1biBhbmQgdGh1cyBzdXBwcmVzc2luZyBieXRlY29kZSByZWNyZWF0aW9uLgotCi0tIENhcHR1cmUgc29ja2V0IGNvbm5lY3Rpb24gcmVzZXRzIGFuZCB0aW1lb3V0cyBpbiB0ZXN0X3NvY2tldF9zc2wgYW5kCi0gIHRlc3RfdXJsbGliMm5ldCBhbmQgcmFpc2UgdGVzdC50ZXN0X3N1cHBvcnQuUmVzb3VyY2VEZW5pZWQuCi0KLS0gUGF0Y2ggIzE1NTk0MTM6IEZpeCB0ZXN0X2NtZF9saW5lIGlmIHN5cy5leGVjdXRhYmxlIGNvbnRhaW5zIGEKLSAgc3BhY2UuCi0KLS0gQWRkZWQgdGVzdC50ZXN0X3N1cHBvcnQuVHJhbnNpZW50UmVzb3VyY2Ugd2hpY2ggaXMgYSBjb250ZXh0IG1hbmFnZXIKLSAgdG8gc3Vycm91bmQgY2FsbHMgdG8gcmVzb3VyY2VzIHRoYXQgYXJlIG5vdCBndWFyYW50ZWVkIHRvIHdvcmsgZXZlbgotICBpZiB0ZXN0LnRlc3Rfc3VwcG9ydC5yZXF1aXJlcyBzYXlzIHRoYXQgdGhlIHJlc291cmNlIHNob3VsZCBleGlzdC4KLQotLSBBZGRlZCBhIHRlc3QgZm9yIHNsaWNpbmcgb2YgYW4gZXhjZXB0aW9uLgotCi0tIEFkZGVkIHRlc3QudGVzdF9zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQuICBJdCdzIGEgY2xhc3MgdGhhdAotICBwcm92aWRlcyBhIGNvbnRleHQgbWFuYWdlciBzbyB0aGF0IG9uZSBjYW4gdGVtcG9yYXJpbHkgc2V0IG9yIHVuc2V0Ci0gIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLQotLSBBZGRlZCBzb21lIHRlc3RzIGZvciBtb2R1bGVmaW5kZXIuCi0KLS0gQ29udmVydGVkIHRlc3RfaW1wIHRvIHVzZSB1bml0dGVzdC4KLQotLSBGaXggYnNkZGIgdGVzdF9iYXNpY3MudGVzdDA2X1RyYW5zYWN0aW9ucyB0byBjaGVjayB0aGUgdmVyc2lvbgotICBudW1iZXIgcHJvcGVybHkuCi0KLS0gdGVzdC50ZXN0X3N1cHBvcnQuY2F0Y2hfd2FybmluZyBpcyBhIG5ldyBjb250ZXh0IG1hbmFnZXIgdGhhdCBjYW4gYmUKLSAgdXNlZCB0byBjYXRjaCB0aGUgd2FybmluZ3MgaXNzdWVkIGJ5IHRoZSB3YXJuaW5nIGZyYW1ld29yay4KLQotVG9vbHMKLS0tLS0tCi0KLS0gVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSBub3cgY3JlYXRlcyB0aGUgYmFja3VwIGZpbGUgdXNpbmcKLSAgc2h1dGlsLmNvcHkgdG8gcHJlc2VydmUgdXNlci9ncm91cCBhbmQgcGVybWlzc2lvbnMuIEFkZGVkIGFsc28gYQotICAtLW5vYmFja3VwIG9wdGlvbiB0byBub3QgY3JlYXRlIHRoZSBiYWNrdXAgaWYgdGhlIHVzZXIgaXMgY29uY2VybmVkCi0gIHJlZ2FyZGluZyB0aGlzLiAgQ2hlY2sgaXNzdWUgIzEwNTA4MjggZm9yIG1vcmUgZGV0YWlscy4KLQotLSBUb29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weSB3YXMgYWRkZWQuIFRoZSBzaW1wbGUgc2NyaXB0IG1vZGlmZXMKLSAgdGhlIFBBVEggZW52aXJvbm1lbnQgdmFyIG9mIHRoZSBIS0NVIHRyZWUgYW5kIGFkZHMgdGhlIHB5dGhvbiBiaW4KLSAgYW5kIHNjcmlwdCBkaXJlY3RvcnkuCi0KLS0gVG9vbHMvMThuL3B5Z2V0dGV4dC5weSB3YXMgYWRkZWQgdG8gdGhlIGxpc3Qgb2Ygc2NyaXB0cyBpbnN0YWxsZWQgYnkKLSAgVG9vbHMvc2NyaXB0cy9zZXR1cC5weSAodHJhY2tlciBpdGVtIDY0MjMwOSkuCi0KLS0gQWRkZWQgSXJvblB5dGhvbiBhbmQgSnl0aG9uIHN1cHBvcnQgdG8gcHliZW5jaCAocGFydCBvZiB3aGljaCB3YXMKLSAgcGF0Y2ggIzE1NjM4NDQpLgotCi0tIE1hZGUgc29tZSBtaW5vciBjaGFuZ2VzIHRvIHB5YmVuY2ggb3V0cHV0IHRvIGFsbG93IHRoZSB1c2VyIHRvIHNlZQotICB3aGljaCBQeXRob24gdmVyc2lvbiBpcyBydW5uaW5nIHB5YmVuY2guCi0KLS0gQWRkZWQgc3VwcG9ydCBmb3IgdGhlIG5ldyBwbGF0Zm9ybSBtb2R1bGUgZmVhdHVyZQotICBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKTsgdGhpcyB3aWxsIG5vdyBiZSBzYXZlZCBpbiB0aGUKLSAgYmVuY2htYXJrIHBpY2tsZS4KLQotRG9jdW1lbnRhdGlvbgotLS0tLS0tLS0tLS0tLQotCi0tIFJGRSAjMTc2NTE0MDogVXBkYXRlZCBkb2N1bWVudGF0aW9uIG9uIEZpbGVIYW5kbGVyIGFuZCBzdWJjbGFzc2VzIHRvCi0gIGluY2x1ZGUgbmV3IG9wdGlvbmFsIGRlbGF5IGFyZ3VtZW50LgotCi0tIEJ1ZyAjOTMyNTYzOiBBZGRlZCBzZWN0aW9uIG9uIGdldHRpbmcgY29udGV4dHVhbCBpbmZvcm1hdGlvbiBpbnRvCi0gIGxvZ2dpbmcgb3V0cHV0LCBhbmQgYWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIG5ldyBMb2dnZXJBZGFwdGVyCi0gIGNsYXNzLgotCi0tIEJ1ZyAjMTI5NTogQWRkZWQgaW5mb3JtYXRpb24gYWJvdXQgY2FjaGluZyBvZiBmb3JtYXR0ZWQgZXhjZXB0aW9uCi0gIGluZm9ybWF0aW9uIGluIHRoZSBMb2dSZWNvcmQgYnkgRm9ybWF0dGVyLmZvcm1hdCgpLgotCi0tIEJ1ZyAjMTYzNzM2NTogYWRkIHN1YnNlY3Rpb24gYWJvdXQgIl9fbmFtZV9fID09IF9fbWFpbl9fIiB0byB0aGUKLSAgUHl0aG9uIHR1dG9yaWFsLgotCi0tIFBhdGNoICMxNjk4NzY4OiB1cGRhdGVkIHRoZSAidXNpbmcgUHl0aG9uIG9uIHRoZSBNYWMiIGludHJvLgotCi0tIEJ1ZyAjMTU2OTA1NzogRG9jdW1lbnQgdGhhdCBjYWxsaW5nIGZpbGUubmV4dCgpIHdoZW4gdGhlIGZpbGUgaXMKLSAgb3BlbiBmb3Igd3JpdGluZyBpcyB1bmRlZmluZWQuCi0KLS0gUGF0Y2ggIzE0ODk3NzE6IHRoZSBzeW50YXggcnVsZXMgaW4gUHl0aG9uIFJlZmVyZW5jZSBNYW51YWwgd2VyZQotICB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIGN1cnJlbnQgUHl0aG9uIHN5bnRheC4KLQotLSBQYXRjaCAjMTY4NjQ1MTogRml4IHJldHVybiB0eXBlIGZvcgotICBQeVNlcXVlbmNlX3tDb3VudCxJbmRleCxGYXN0X0dFVF9TSVpFfS4KLQotLSBQYXRjaCAjMTY3OTM3OTogYWRkIGRvY3VtZW50YXRpb24gZm9yIGZubWF0Y2gudHJhbnNsYXRlKCkuCi0KLS0gQnVnICMxNjI5NTY2OiBjbGFyaWZ5IHRoZSBkb2NzIG9uIHRoZSByZXR1cm4gdmFsdWVzIG9mIHBhcnNlZGF0ZSgpCi0gIGFuZCBwYXJzZWRhdGVfdHooKSBpbiBlbWFpbC51dGlscyBhbmQgcmZjODIyLgotCi0tIFBhdGNoICMxNjcxNDUwOiBhZGQgYSBzZWN0aW9uIGFib3V0IHN1YmNsYXNzaW5nIGJ1aWx0LWluIHR5cGVzIHRvIHRoZQotICAiZXh0ZW5kaW5nIGFuZCBlbWJlZGRpbmciIHR1dG9yaWFsLgotCi0tIEJ1ZyAjMTYyOTEyNTogZml4IHdyb25nIGRhdGEgdHlwZSAoaW50IC0+IFB5X3NzaXplX3QpIGluIFB5RGljdF9OZXh0Ci0gIGRvY3MuCi0KLS0gQnVnICMxNTY1OTE5OiBkb2N1bWVudCBzZXQgdHlwZXMgaW4gdGhlIExhbmd1YWdlIFJlZmVyZW5jZS4KLQotLSBCdWcgIzE1NDYwNTI6IGNsYXJpZnkgdGhhdCBQeVN0cmluZ19Gcm9tU3RyaW5nKEFuZFNpemUpIGNvcGllcyB0aGUKLSAgc3RyaW5nIHBvaW50ZWQgdG8gYnkgaXRzIHBhcmFtZXRlci4KLQotLSBCdWcgIzE1NjY2NjM6IHJlbW92ZSBvYnNvbGV0ZSBleGFtcGxlIGZyb20gZGF0ZXRpbWUgZG9jcy4KLQotLSBCdWcgIzE1NDE2ODI6IEZpeCBleGFtcGxlIGluIHRoZSAiUmVmY291bnQgZGV0YWlscyIgQVBJIGRvY3MuCi0gIEFkZGl0aW9uYWxseSwgcmVtb3ZlIGEgZmF1bHR5IGV4YW1wbGUgc2hvd2luZyBQeVNlcXVlbmNlX1NldEl0ZW0KLSAgYXBwbGllZCB0byBhIG5ld2x5IGNyZWF0ZWQgbGlzdCBvYmplY3QgYW5kIGFkZCBub3RlcyB0aGF0IHRoaXMgaXNuJ3QKLSAgYSBnb29kIGlkZWEuCi0KLVRvb2xzL0RlbW9zCi0tLS0tLS0tLS0tLQotCi0tIFBhdGNoICMxNTUyMDI0OiBhZGQgZGVjb3JhdG9yIHN1cHBvcnQgdG8gdW5wYXJzZS5weSBkZW1vIHNjcmlwdC4KLQotLSBNYWtlIGF1dG8tZ2VuZXJhdGVkIHB5dGhvbi52aW0gZmlsZSBsaXN0IGJ1aWx0LWlucyBhbmQgZXhjZXB0aW9ucyBpbgotICBhbHBoYXRiZXRpY2FsIG9yZGVyLiAgTWFrZXMgb3V0cHV0IG1vcmUgZGV0ZXJtaW5pc3RpYyBhbmQgZWFzaWVyIHRvCi0gIHRlbGwgaWYgdGhlIGZpbGUgaXMgc3RhbGUgb3Igbm90LgotCi0tIEJ1ZyAjMTU0NjM3MjogRml4ZWQgc21hbGwgYnVnZ2xldCBpbiBweWJlbmNoIHRoYXQgY2F1c2VkIGEgbWlzc2luZwotICBmaWxlIG5vdCB0byBnZXQgcmVwb3J0ZWQgcHJvcGVybHkuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIEhhdmUgdGhlIHNlYXJjaCBwYXRoIGZvciBidWlsZGluZyBleHRlbnNpb25zIGZvbGxvdyB0aGUgZGVjbGFyZWQKLSAgb3JkZXIgaW4gJENQUEZMQUdTIGFuZCAkTERGTEFHUyB3aGVuIGFkZGluZyBkaXJlY3RvcmllcyBmcm9tIHRob3NlCi0gIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLQotLSBCdWcgIzE5ODM6IEFkZGVkIGEgY2hlY2sgdG8gcHlwb3J0IHRvIHZlcmlmeSB0aGF0IHNpemVvZihwaWRfdCkgaXMKLSAgc21hbGxlciBvciBlcXVhbCBzaXplb2YobG9uZykuCi0KLS0gQnVnICMxMjM0OiBGaXhlZCBzZW1hcGhvcmUgZXJyb3JzIG9uIEFJWCA1LjIKLQotLSBJc3N1ZSAjMTcyNjogUmVtb3ZlIFB5dGhvbi9hdG9mLmMgZnJvbSBQQ0J1aWxkL3B5dGhvbmNvcmUudmNwcm9qLgotCi0tIFJlbW92ZWQgUENidWlsZDgvIGRpcmVjdG9yeSBhbmQgYWRkZWQgYSBuZXcgYnVpbGQgZGlyZWN0b3J5IGZvciBWUwotICAyMDA1IGJhc2VkIG9uIHRoZSBWUyAyMDA4IGJ1aWxkIGRpcmVjdG9yeSB0byBQQy9WUzguMC4gVGhlIHNjcmlwdAotICBQQ2J1aWxkL3ZzOHRvOS5weSB3YXMgYWRkZWQgdG8gc3luYyBjaGFuZ2VzIGZyb20gUENidWlsZCB0bwotICBQQy9WUzguMC4KLQotLSBNb3ZlZCBQQ2J1aWxkLyBkaXJlY3RvcnkgZm9yIFZTIDIwMDMgdG8gUEMvVlM3LjEgYW5kIHJlbmFtZWQKLSAgUENCdWlsZDkvIGRpcmVjdG9yeSB0byBQQ0J1aWxkLy4KLQotLSBCdWcgIzE2OTk6IERlZmluZSBfQlNEX1NPVVJDRSBvbmx5IG9uIE9wZW5CU0QuCi0KLS0gQnVnICMxNjA4OiB1c2UgLWZ3cmFwdiB3aGVuIEdDQyBzdXBwb3J0cyBpdC4gIFRoaXMgaXMgaW1wb3J0YW50LAotICBuZXdlciBHQ0MgdmVyc2lvbnMgbWF5IG9wdGltaXplIGF3YXkgb3ZlcmZsb3cgYnVmZmVyIG92ZXJmbG93IGNoZWNrcwotICB3aXRob3V0IHRoaXMgb3B0aW9uIQotCi0tIFBhdGNoICMxNDE4OiBNYWtlIHRoZSBBQ19SRVBMQUNFX0ZVTkNTIG9iamVjdCBmaWxlcyBhY3R1YWxseSB3b3JrLgotCi0tIEFkZCBhIEZBU1RfTE9PUFMgYnVpbGQgb3B0aW9uIHRoYXQgc3BlZWRzLXVwIGxvb3BpbmcgYnkgdHJhZGluZyBhd2F5Ci0gIHBlcmlvZGljIHRocmVhZHN0YXRlIGFuZCBzaWduYWwgY2hlY2tpbmcgaW4gdGlnaHQgbG9vcHMuICBCeQotICBkZWZhdWx0LCB0aGlzIG9wdGlvbiBpcyB0dXJuZWQtb2ZmLiAgSXQgc2hvdWxkIG9ubHkgYmUgZW5hYmxlZCBpbgotICBkZWJ1Z2dlZCwgcGVyZm9ybWFuY2UgY3JpdGljYWwgYXBwbGljYXRpb25zLgotCi0tIFBhdGNoICM3ODY3Mzc6IEFsbG93IGJ1aWxkaW5nIGluIGEgdHJlZSBvZiBzeW1saW5rcyBwb2ludGluZyB0byBhCi0gIHJlYWRvbmx5IHNvdXJjZS4KLQotLSBCdWcgIzE3MzcyMTA6IENoYW5nZSBNYW51ZmFjdHVyZXIgb2YgV2luZG93cyBpbnN0YWxsZXIgdG8gUFNGLgotCi0tIEJ1ZyAjMTc0Njg4MDogQ29ycmVjdGx5IGluc3RhbGwgRExMcyBpbnRvIHN5c3RlbTMyIGZvbGRlciBvbiBXaW42NC4KLQotLSBEZWZpbmUgX0JTRF9TT1VSQ0UsIHRvIGdldCBhY2Nlc3MgdG8gUE9TSVggZXh0ZW5zaW9ucyBvbiBPcGVuQlNECi0gIDQuMSsuCi0KLS0gU3RvcCBzdXBwb3J0aW5nIEF0aGVPUyBhbmQgY2F1c2UgYSBidWlsZCBlcnJvciBpbiBjb25maWd1cmUgZm9yIHRoZQotICBwbGF0Zm9ybS4KLQotLSBCdWcgIzE2NTUzOTI6IGRvbid0IGFkZCAtTC91c3IvbGliL3B5dGhvblguWS9jb25maWcgdG8gdGhlIExERkxBR1MKLSAgcmV0dXJuZWQgYnkgcHl0aG9uLWNvbmZpZyBpZiBQeXRob24gd2FzIGJ1aWx0IHdpdGggLS1lbmFibGUtc2hhcmVkCi0gIGJlY2F1c2UgdGhhdCBwcmV2ZW50ZWQgdGhlIHNoYXJlZCBsaWJyYXJ5IGZyb20gYmVpbmcgdXNlZC4KLQotLSBQYXRjaCAjMTU2OTc5ODogZml4IGEgYnVnIGluIGRpc3R1dGlscyB3aGVuIGJ1aWxkaW5nIFB5dGhvbiBmcm9tIGEKLSAgZGlyZWN0b3J5IHdpdGhpbiBzeXMuZXhlY19wcmVmaXguCi0KLS0gQnVnICMxNjc1NTExOiBVc2UgLUtwaWMgaW5zdGVhZCBvZiAteGNvZGU9cGljMzIgb24gU29sYXJpcy94ODYuCi0KLS0gRGlzYWJsZSBfWE9QRU5fU09VUkNFIG9uIE5ldEJTRCAxLnguCi0KLS0gY29uZmlndXJlIG5vdyBjaGVja3Mgd2hldGhlciBnY2Mgc3VwcG9ydHMgdGhlIFB5QXJnX1BhcnNlVHVwbGUKLSAgZm9ybWF0IGF0dHJpYnV0ZS4KLQotLSBCdWcgIzE1Nzg1MTM6IENyb3NzIGNvbXBpbGF0aW9uIHdhcyBicm9rZW4gYnkgYSBjaGFuZ2UgdG8gY29uZmlndXJlLgotICBSZXBhaXIgc28gdGhhdCBpdCdzIGJhY2sgdG8gaG93IGl0IHdhcyBpbiAyLjQuMy4KLQotLSBQYXRjaCAjMTU3Njk1NDogVXBkYXRlIFZDNiBidWlsZCBkaXJlY3Rvcnk7IHJlbW92ZSByZWR1bmRhbnQgZmlsZXMKLSAgaW4gVkM3LgotCi0tIEJ1ZyAjMTU2ODg0MjogRml4IHRlc3QgZm9yIHVpbnRwdHJfdC4KLQotLSBQYXRjaCAjMTU0MDQ3MDogZm9yIE9wZW5CU0QgNC4wLgotCi0tIEZpeCBidWlsZCBmYWlsdXJlIG9uIGtmcmVlYnNkIGFuZCBvbiB0aGUgaHVyZC4KLQotLSBGaXggdGhlIGJ1aWxkIG9mIHRoZSBsaWJyYXJ5IHJlZmVyZW5jZSBpbiBpbmZvIGZvcm1hdC4KLQotLSBBbGxvdyBFbWFjcyAyMiBmb3IgYnVpbGRpbmcgdGhlIGRvY3VtZW50YXRpb24gaW4gaW5mbyBmb3JtYXQuCi0KLS0gTWFrZWZpbGUucHJlLmluKGJ1aWxkYm90dGVzdCk6IFJ1biBhbiBvcHRpb25hbCBzY3JpcHQKLSAgcHlidWlsZGJvdC5pZGVudGlmeSB0byBpbmNsdWRlIHNvbWUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGJ1aWxkCi0gIGVudmlyb25tZW50LgotCi1DIEFQSQotLS0tLS0KLQotLSBVbmlmaWVkIG5hbWluZyBjb252ZW50aW9uIGZvciBmcmVlIGxpc3RzIGFuZCB0aGVpciBsaW1pdHMuIEFsbCBmcmVlCi0gIGxpc3RzIGluIE9iamVjdC8gYXJlIG5hbWVkIGBgZnJlZV9saXN0YGAsIHRoZSBjb3VudGVyIGBgbnVtZnJlZWBgCi0gIGFuZCB0aGUgdXBwZXIgbGltaXQgaXMgYSBtYWNybyBgYFB5TmFtZV9NQVhGUkVFTElTVGBgIGluc2lkZSBhbgotICAjaWZuZGVmIGJsb2NrLgotCi0tIGBgUHlTZXRfQWRkKClgYCBjYW4gbm93IG1vZGlmeSBhIG5ld2x5IGNyZWF0ZWQgZnJvemVuc2V0LiAgU2ltaWxhcmx5Ci0gIHRvIGBgUHlUdXBsZV9TZXRJdGVtYGAsIGl0IGNhbiBiZSB1c2VkIHRvIHBvcHVsYXRlIGEgYnJhbmQgbmV3Ci0gIGZyb3plbnNldDsgYnV0IGl0IGRvZXMgbm90IHN0ZWFsIGEgcmVmZXJlbmNlIHRvIHRoZSBhZGRlZCBpdGVtLgotCi0tIEFkZGVkIGBgUHlTZXRfQ2hlY2soKWBgIGFuZCBgYFB5RnJvemVuU2V0X0NoZWNrKClgYCB0byB0aGUgc2V0IEFQSS4KLQotLSBCYWNrcG9ydCBvZiBQeVVuaWNvZGVfRnJvbVN0cmluZygpLCBfRnJvbVN0cmluZ0FuZFNpemUoKSwgX0Zvcm1hdAotICBhbmQgX0Zvcm1hdFYgZnJvbSBQeXRob24gMy4wLiBNYWRlIFB5TG9uZ19Bc1NzaXplX3QgYW5kCi0gIFB5TG9uZ19Gcm9tU3NpemVfdCBwdWJsaWMgZnVuY3Rpb25zLgotCi0tIFBhdGNoICMxNzIwNTk1OiBhZGQgVF9CT09MIHRvIHRoZSByYW5nZSBvZiBzdHJ1Y3RtZW1iZXIgdHlwZXMuCi0KLS0gSXNzdWUgIzE1MzQ6IEFkZGVkIGBgUHlGbG9hdF9HZXRNYXgoKWBgLCBgYFB5RmxvYXRfR2V0TWluKClgYCBhbmQKLSAgYGBQeUZsb2F0X0dldEluZm8oKWBgIHRvIHRoZSBmbG9hdCBBUEkuCi0KLS0gSXNzdWUgIzE1MjE6IE9uIDY0Yml0IHBsYXRmb3JtcywgdXNpbmcgUHlBcmdzX1BhcnNlVHVwbGUgd2l0aCB0aGUgdCMKLSAgb2YgdyMgZm9ybWF0IGNvZGUgaW5jb3JyZWN0bHkgdHJ1bmNhdGVkIHRoZSBsZW5ndGggdG8gYW4gaW50LCBldmVuCi0gIHdoZW4gUFlfU1NJWkVfVF9DTEVBTiBpcyBzZXQuICBUaGUgc3RyLmRlY29kZSBtZXRob2QgdXNlZCB0byByZXR1cm4KLSAgaW5jb3JyZWN0IHJlc3VsdHMgd2l0aCBodWdlIHN0cmluZ3MuCi0KLS0gSXNzdWUgIzE2Mjk6IFJlbmFtZWQgUHlfU2l6ZSwgUHlfVHlwZSBhbmQgUHlfUmVmY250IHRvIFB5X1NJWkUsCi0gIFB5X1RZUEUgYW5kIFB5X1JFRkNOVC4KLQotLSBQRVAgMzEyMzogUHJvdmlkZSBmb3J3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBQeXRob24gMy4wLCB3aGlsZQotICBrZWVwaW5nIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LiBBZGQgUHlfUmVmY250LCBQeV9UeXBlLCBQeV9TaXplLAotICBhbmQgUHlWYXJPYmplY3RfSEVBRF9JTklULgotCi0tIFB5X3NzaXplX3QgZmllbGRzIHdvcmsgaW4gc3RydWN0bWVtYmVyIHdoZW4gSEFWRV9MT05HX0xPTkcgaXMgbm90Ci0gIGRlZmluZWQuCi0KLS0gUGF0Y2ggIzE3MzM5NjA6IEFsbG93IFRfTE9OR0xPTkcgdG8gYWNjZXB0IGludHMuCi0KLS0gVF9QWVNTSVpFVCBjYW4gbm93IGJlIHVzZWQgaW4gUHlNZW1iZXJEZWYgbGlzdHMgZm9yIFB5X3NzaXplX3QgbWVtYmVycy4KLQotLSBBZGRlZCBhIG5ldyBBUEkgZnVuY3Rpb24gYGBQeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrYGAuCi0KLS0gQnVnICMxNjM3MDIyOiBQcmVmaXggQVNUIHN5bWJvbHMgd2l0aCBfUHlfLgotCi0tIEZpeCBzb21lIGxlZnRvdmVycyBmcm9tIHRoZSBjb252ZXJzaW9uIGZyb20gaW50IHRvIFB5X3NzaXplX3QKLSAgKHJlbGV2YW50IHRvIHN0cmluZ3MgYW5kIHNlcXVlbmNlcyBvZiBtb3JlIHRoYW4gMioqMzEgaXRlbXMpLgotCi0tIE1ha2UgX1B5R0lMU3RhdGVfTm90ZVRocmVhZFN0YXRlKCkgc3RhdGljLCBpdCB3YXMgbm90IHVzZWQgYW55d2hlcmUKLSAgb3V0c2lkZSBvZiBweXN0YXRlLmMgYW5kIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5LgotCi0tIGBgUHlJbXBvcnRfSW1wb3J0YGAgYW5kIGBgUHlJbXBvcnRfSW1wb3J0TW9kdWxlYGAgbm93IGFsd2F5cyBkbwotICBhYnNvbHV0ZSBpbXBvcnRzLiBJbiBlYXJsaWVyIHZlcnNpb25zIHRoZXkgbWlnaHQgaGF2ZSB1c2VkIHJlbGF0aXZlCi0gIGltcG9ydHMgdW5kZXIgc29tZSBjb25kaXRpb25zLgotCi0tIEFkZGVkIGNhc2UgaW5zZW5zaXRpdmUgY29tcGFyaXNvbiBtZXRob2RzIGBgUHlPU19zdHJpY21wKGNoYXIqLAotICBjaGFyKilgYCBhbmQgYGBQeU9TX3N0cm5pY21wKGNoYXIqLCBjaGFyKiwgUHlfc3NpemVfdClgYC4KLQotLSBCdWcgIzE1NDI2OTM6IHJlbW92ZSBzZW1pLWNvbG9uIGF0IGVuZCBvZiBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeAotICBtYWNybyBzbyBpdCBjYW4gYmUgdXNlZCBhcyBhbiBleHByZXNzaW9uLgotCi1XaW5kb3dzCi0tLS0tLS0tCi0KLS0gUGF0Y2ggIzE3MDY6IERyb3Agc3VwcG9ydCBmb3IgV2luOXgsIFdpbk1FIGFuZCBOVDQuIFB5dGhvbiBub3cKLSAgcmVxdWlyZXMgV2luZG93cyAyMDAwIG9yIGdyZWF0ZXIuIFRoZSBfV0lOVkVSIGFuZCBOVERESV9WRVJTSU9OCi0gIG1hY3JvcyBhcmUgc2V0IHRvIFdpbjJrIGZvciB4ODYvMzJiaXQgYnVpbGRzIGFuZCBXaW5YUCBmb3IgQU1ENjQKLSAgYnVpbGRzLgotCi0tIENvbmRpdGlvbmFsaXplIGRlZmluaXRpb24gb2YgX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFIGFuZAotICBfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFLgotCi0tIEJ1ZyAjMTIxNjogUmVzdG9yZSBzdXBwb3J0IGZvciBWaXN1YWwgU3R1ZGlvIDIwMDIuCi0KLU1hYwotLS0tCi0KLS0gY2ZtZmlsZSBub3cgcmFpc2VzIGEgRGVwcmVjYXRpb25XYXJuaW5nLgotCi0tIGJ1aWxkdG9vbHMgbm93IHJhaXNlcyBhIERlcHJlY2F0aW9uV2FybmluZy4KLQotLSBSZW1vdmVkIHRoZSBtYWNmcyBtb2R1bGUuICBJdCBoYWQgYmVlbiBkZXByZWNhdGVkIHNpbmNlIFB5dGhvbiAyLjUuCi0gIFRoaXMgbGVhZCB0byB0aGUgZGVwcmVjYXRpb24gb2YgbWFjb3N0b29scy50b3VjaGVkKCkgYXMgaXQgcmVsaWVkCi0gIHNvbGVseSBvbiBtYWNmcyBhbmQgd2FzIGEgbm8tb3AgdW5kZXIgT1MgWC4KLQotLS0tLQotCi0qKihGb3IgaW5mb3JtYXRpb24gYWJvdXQgb2xkZXIgdmVyc2lvbnMsIGNvbnN1bHQgdGhlIEhJU1RPUlkgZmlsZS4pKioKLQpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvMi42LnJzdCBiL01pc2MvTkVXUy5kLzIuNi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3NTNhNwotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNi5yc3QKQEAgLTAsMCArMSwxMDIgQEAKKy4uIGJwbzogMzk2NworLi4gZGF0ZTogNzE3OQorLi4gbm9uY2U6IHE3Ry15ZworLi4gcmVsZWFzZSBkYXRlOiAwMS1PY3QtMjAwOAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgYSBjcmFzaCBpbiB0aGUgY291bnQoKSBhbmQgZmluZCgpIG1ldGhvZHMgb2Ygc3RyaW5nLWxpa2Ugb2JqZWN0cywgd2hlbgordGhlICJzdGFydCIgcGFyYW1ldGVyIGlzIGEgaHVnZSB2YWx1ZS4KKworLi4KKworLi4gYnBvOiAzOTY1CisuLiBkYXRlOiA3MTc4CisuLiBub25jZTogb0Q2UGVNCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBhIGNyYXNoIG9uIFdpbmRvd3Mgd2hlbiBvcGVuKCkgaXMgZ2l2ZW4gYW4gaW52YWxpZCBmaWxlbmFtZSBvciBtb2RlLAorYW5kIHRoZSBmaWxlbmFtZSBpcyBhIHVuaWNvZGUgc3RyaW5nLgorCisuLgorCisuLiBicG86IDM5NTEKKy4uIGRhdGU6IDcxNzcKKy4uIG5vbmNlOiBXTVJTMzUKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1B5X1VTSU5HX01FTU9SWV9ERUJVR0dFUiBzaG91bGQgbm90IGJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KKworLi4KKworLi4gYnBvOiAzOTY1CisuLiBkYXRlOiA3MTc2CisuLiBub25jZTogNjdXS1RyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FsbG93IHJlcGVhdGVkIGNhbGxzIHRvIHR1cnRsZS5TY3JlZW4sIGJ5IG1ha2luZyBpdCBhIHRydWUgc2luZ2xldG9uIG9iamVjdC4KKworLi4KKworLi4gYnBvOiAzODk1CisuLiBkYXRlOiA3MTc1CisuLiBub25jZTogN3pBRzVLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0l0IHdhcyBwb3NzaWJsZSB0byBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIgd2hlbiBhbiBleHRlcm5hbCB0aW1lciB3YXMgdXNlZAord2l0aCBjUHJvZmlsZSB0aGF0IHJldHVybmVkIGFuIG9iamVjdCB0aGF0IGNvdWxkIG5vdCBiZSBjb252ZXJ0ZWQgaW50byBhCitmbG9hdC4KKworLi4KKworLi4gYnBvOiAzOTUwCisuLiBkYXRlOiA3MTc0CisuLiBub25jZTogelpYTGFMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01hZGUgdHVydGxlIHJlc3BlY3Qgc2NhbGUgZmFjdG9ycy4KKworLi4KKworLi4gYnBvOiAzNTQ3CisuLiBkYXRlOiA3MTczCisuLiBub25jZTogTUVBT3N4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGN0eXBlcyBzdHJ1Y3R1cmVzIGJpdGZpZWxkcyBvZiB2YXJ5aW5nIGludGVnZXIgc2l6ZXMuCisKKy4uCisKKy4uIGJwbzogMzg3OQorLi4gZGF0ZTogNzE3MgorLi4gbm9uY2U6IEY4dTdJcworLi4gc2VjdGlvbjogTGlicmFyeQorCitBIHJlZ3Jlc3Npb24gaW4gdXJsbGliLmdldHByb3hpZXNfZW52aXJvbm1lbnQgd2FzIGZpeGVkLgorCisuLgorCisuLiBicG86IDM4NjMKKy4uIGRhdGU6IDcxNzEKKy4uIG5vbmNlOiA1bnVTNXgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRGlzYWJsZWQgYSB1bml0IHRlc3Qgb2YgZm9yayBiZWluZyBjYWxsZWQgZnJvbSBhIHRocmVhZCB3aGVuIHJ1bm5pbmcgb24KK3BsYXRmb3JtcyBrbm93biB0byBleGhpYml0IE9TIGJ1Z3Mgd2hlbiBhdHRlbXB0aW5nIHRoYXQuCisKKy4uCisKKy4uIGJwbzogMzk4OQorLi4gZGF0ZTogNzE3MAorLi4gbm9uY2U6IFJXM2tTNgorLi4gc2VjdGlvbjogQnVpbGQKKworUGFja2FnZSB0aGUgMnRvMyBzY3JpcHQgKGFzIDJ0bzMucHkpIGluIHRoZSBXaW5kb3dzIGluc3RhbGxlci4KKworLi4KKworLi4gYnBvOiAzODg3CisuLiBkYXRlOiA3MTY5CisuLiBub25jZTogcVllWXdhCisuLiBzZWN0aW9uOiBCdWlsZAorCitQYWNrYWdlIHg2NCB2ZXJzaW9uIG9mIENSVCBmb3IgQU1ENjQgV2luZG93cyBiaW5hcmllcy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNmExLnJzdCBiL01pc2MvTkVXUy5kLzIuNmExLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNThkOGM0Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi42YTEucnN0CkBAIC0wLDAgKzEsNTUwNyBAQAorLi4gYnBvOiAyMDUxCisuLiBkYXRlOiA2NzkzCisuLiBub25jZTogcmE2OWN6CisuLiByZWxlYXNlIGRhdGU6IDI5LUZlYi0yMDA4CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitweWMgYW5kIHB5byBmaWxlcyBhcmUgbm8gbG9uZ2VyIGNyZWF0ZWQgd2l0aCBwZXJtaXNzaW9uIDY0NC4gVGhlIG1vZGUgaXMgbm93Citpbmhlcml0ZWQgZnJvbSB0aGUgcHkgZmlsZS4KKworLi4KKworLi4gYnBvOiAyMDY3CisuLiBkYXRlOiA2NzkyCisuLiBub25jZTogZG5PcV9uCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitmaWxlLl9fZXhpdF9fKCkgbm93IGNhbGxzIHN1YmNsYXNzZXMnIGNsb3NlKCkgbWV0aG9kLgorCisuLgorCisuLiBicG86IDE3NTkKKy4uIGRhdGU6IDY3OTEKKy4uIG5vbmNlOiBxNDFnVkkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0JhY2twb3J0IG9mIFBFUCAzMTI5IGNsYXNzIGRlY29yYXRvcnMuCisKKy4uCisKKy4uIGJwbzogMTg4MQorLi4gZGF0ZTogNjc5MAorLi4gbm9uY2U6IFowWHNVRgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQW4gaW50ZXJuYWwgcGFyc2VyIGxpbWl0IGhhcyBiZWVuIGluY3JlYXNlZC4gQWxzbyBzZWUgaXNzdWUgIzIxNTU1NSBmb3IgYQorZGlzY3Vzc2lvbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2Nzg5CisuLiBub25jZTogdDRSSVZMCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGRlZCB0aGUgZnV0dXJlX2J1aWx0aW5zIG1vZHVsZSwgd2hpY2ggY29udGFpbnMgaGV4KCkgYW5kIG9jdCgpLiBUaGVzZSBhcmUKK3RoZSBQRVAgMzEyNyB2ZXJzaW9uIG9mIHRoZXNlIGZ1bmN0aW9ucywgZGVzaWduZWQgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHRoZQoraGV4KCkgYW5kIG9jdCgpIGJ1aWx0aW5zIGZyb20gUHl0aG9uIDMuMC4gIFRoZXkgZGlmZmVyIHNsaWdodGx5IGluIHRoZWlyCitvdXRwdXQgZm9ybWF0cyBmcm9tIHRoZSBleGlzdGluZywgdW5jaGFuZ2VkIFB5dGhvbiAyLjYgYnVpbHRpbnMuICBUaGUKK2V4cGVjdGVkIHVzYWdlIG9mIHRoZSBmdXR1cmVfYnVpbHRpbnMgbW9kdWxlIGlzOiAgIGZyb20gZnV0dXJlX2J1aWx0aW5zCitpbXBvcnQgaGV4LCBvY3QKKworLi4KKworLi4gYnBvOiAxNjAwCisuLiBkYXRlOiA2Nzg4CisuLiBub25jZTogczlZbVpxCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitNb2RpZmllZCBQeU9TX2FzY2lpX2Zvcm1hdGQgdG8gdXNlIGF0IG1vc3QgMiBkaWdpdCBleHBvbmVudHMgZm9yIGV4cG9uZW50cword2l0aCBhYnNvbHV0ZSB2YWx1ZSA8IDEwMC4gIEZvbGxvd3MgQzk5IHN0YW5kYXJkLiAgVGhpcyBpcyBhIGNoYW5nZSBvbgorV2luZG93cywgd2hpY2ggd291bGQgdXNlIDMgZGlnaXRzLiBBbHNvLCBhZGRlZCAnbicgdG8gdGhlIGZvcm1hdHMgdGhhdAorUHlPU19hc2NpaV9mb3JtYXRkIHVuZGVyc3RhbmRzLCBzbyB0aGF0IGFueSBhbHRlcmF0aW9ucyBpdCBkb2VzIHRvIHRoZQorcmVzdWx0aW5nIHN0cmluZyB3aWxsIGJlIGF2YWlsYWJsZSBpbiBzdHJpbmdsaWIvZm9ybWF0dGVyLmggKGZvcgorZmxvYXQuX19mb3JtYXRfXykuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjc4NworLi4gbm9uY2U6IDNoZVdMNAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworSW1wbGVtZW50ZWQgUEVQIDMxMDEsIEFkdmFuY2VkIFN0cmluZyBGb3JtYXR0aW5nLiAgVGhpcyBhZGRzIGEgbmV3IGJ1aWx0aW4KK2Zvcm1hdCgpOyBhIGZvcm1hdCgpIG1ldGhvZCBmb3Igc3RyIGFuZCB1bmljb2RlOyBhIF9fZm9ybWF0X18oKSBtZXRob2QgdG8KK29iamVjdCwgc3RyLCB1bmljb2RlLCBpbnQsIGxvbmcsIGZsb2F0LCBhbmQgZGF0ZXRpbWU7IHRoZSBjbGFzcworc3RyaW5nLkZvcm1hdHRlcjsgYW5kIHRoZSBDIEFQSSBQeU9iamVjdF9Gb3JtYXQoKS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2Nzg2CisuLiBub25jZTogNURPTnFuCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBzZXZlcmFsIHBvdGVudGlhbCBjcmFzaGVzLCBhbGwgY2F1c2VkIGJ5IHNwZWNpYWxseSBjcmFmdGVkIF9fZGVsX18KK21ldGhvZHMgZXhwbG9pdGluZyBvYmplY3RzIGluIHRlbXBvcmFyaWx5IGluY29uc2lzdGVudCBzdGF0ZS4KKworLi4KKworLi4gYnBvOiAyMTE1CisuLiBkYXRlOiA2Nzg1CisuLiBub25jZTogMGhsdE01CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbXBvcnRhbnQgc3BlZWR1cCBpbiBzZXR0aW5nIF9fc2xvdF9fIGF0dHJpYnV0ZXMuICBBbHNvIHByZXZlbnQgYSBwb3NzaWJsZQorY3Jhc2g6IGFuIEFic3RyYWN0IEJhc2UgQ2xhc3Mgd291bGQgdHJ5IHRvIGFjY2VzcyBhIHNsb3Qgb24gYSByZWdpc3RlcmVkCit2aXJ0dWFsIHN1YmNsYXNzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3ODQKKy4uIG5vbmNlOiBtdzFHM0cKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIHJlcHIoKSBhbmQgc3RyKCkgb2YgY29tcGxleCBudW1iZXJzIHdpdGggaW5maW5pdHkgb3IgbmFuIGFzIHJlYWwgb3IKK2ltYWdpbmFyeSBwYXJ0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3ODMKKy4uIG5vbmNlOiA5aVhnZnEKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0NsZWFyIGFsbCBmcmVlIGxpc3RzIGR1cmluZyBhIGdjLmNvbGxlY3QoKSBvZiB0aGUgaGlnaGVzdCBnZW5lcmF0aW9uIGluCitvcmRlciB0byBhbGxvdyBweW1hbGxvYyB0byBmcmVlIG1vcmUgYXJlbmFzLiBQeXRob24gbWF5IGdpdmUgYmFjayBtZW1vcnkgdG8KK3RoZSBPUyBlYXJsaWVyLgorCisuLgorCisuLiBicG86IDIwNDUKKy4uIGRhdGU6IDY3ODIKKy4uIG5vbmNlOiByMVk1SkwKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBhbiBpbmZpbml0ZSByZWN1cnNpb24gdHJpZ2dlcmVkIHdoZW4gcHJpbnRpbmcgYSBzdWJjbGFzcyBvZgorY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QsIGlmIGl0cyBkZWZhdWx0X2ZhY3RvcnkgaXMgc2V0IHRvIGEgYm91bmQgbWV0aG9kLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3ODEKKy4uIG5vbmNlOiBJeDRhaVQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIGEgbWlub3IgbWVtb3J5IGxlYWsgaW4gZGljdG9iamVjdC5jLiBUaGUgY29udGVudCBvZiB0aGUgZnJlZSBsaXN0IHdhcworbm90IGZyZWVkIG9uIGludGVycHJldGVyIHNodXRkb3duLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3ODAKKy4uIG5vbmNlOiBjTDJPd3oKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0xpbWl0IGZyZWUgbGlzdCBvZiBtZXRob2QgYW5kIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdHMgdG8gMjU2IGVudHJpZXMgZWFjaC4KKworLi4KKworLi4gYnBvOiAxOTUzCisuLiBkYXRlOiA2Nzc5CisuLiBub25jZTogZV9tUE1LCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGRlZCBgYHN5cy5fY29tcGFjdF9mcmVlbGlzdHMoKWBgIGFuZCB0aGUgQyBBUEkgZnVuY3Rpb25zCitgYFB5SW50X0NvbXBhY3RGcmVlTGlzdGBgIGFuZCBgYFB5RmxvYXRfQ29tcGFjdEZyZWVMaXN0YGAgdG8gY29tcGFjdCB0aGUKK2ludGVybmFsIGZyZWUgbGlzdHMgb2YgcHJlLWFsbG9jdGVkIGludHMgYW5kIGZsb2F0cy4KKworLi4KKworLi4gYnBvOiAxOTgzCisuLiBkYXRlOiA2Nzc4CisuLiBub25jZTogOHNGRU94CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCByZXR1cm4gdHlwZSBvZiBmb3JrKCksIGZvcmsxKCkgYW5kIGZvcmtwdHkoKSBjYWxscy4gIFB5dGhvbiBleHBlY3RlZAordGhlIHJldHVybiB0eXBlIGludCBidXQgdGhlIGZvcmsgZmFtaWxpZSByZXR1cm5zIHBpX3QuCisKKy4uCisKKy4uIGJwbzogMTY3ODM4MAorLi4gZGF0ZTogNjc3NworLi4gbm9uY2U6IFFEc1ZpZgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgYnVnIHRoYXQgaWRlbnRpZmllcyAwaiBhbmQgLTBqIHdoZW4gdGhleSBhcHBlYXIgaW4gdGhlIHNhbWUgY29kZSB1bml0LgorCisuLgorCisuLiBicG86IDIwMjUKKy4uIGRhdGU6IDY3NzYKKy4uIG5vbmNlOiBTOWl1SGsKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZCB0dXBsZS5jb3VudCgpIGFuZCB0dXBsZS5pbmRleCgpIG1ldGhvZHMgdG8gY29tcGx5IHdpdGggdGhlCitjb2xsZWN0aW9ucy5TZXF1ZW5jZSBBUEkuCisKKy4uCisKKy4uIGJwbzogMTk3MAorLi4gZGF0ZTogNjc3NQorLi4gbm9uY2U6IFFlZlNGNgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU3BlZWR1cCB1bmljb2RlIHdoaXRlc3BhY2UgYW5kIGxpbmVicmVhayBkZXRlY3Rpb24uICAoUGF0Y2ggYnkgQW50b2luZQorUGl0cm91LikKKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2Nzc0CisuLiBub25jZTogWVluREhjCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGRlZCBgYFB5VHlwZV9DbGVhckNhY2hlKClgYCBhbmQgYGBzeXMuX2NsZWFyX3R5cGVfY2FjaGVgYCB0byBjbGVhciB0aGUKK2ludGVybmFsIGxvb2t1cCBjYWNoZSBmb3IgcmVmIGxlYWsgdGVzdHMuCisKKy4uCisKKy4uIGJwbzogMTQ3MzI1NworLi4gZGF0ZTogNjc3MworLi4gbm9uY2U6IFo1NzlLMworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZ2VuZXJhdG9yIG9iamVjdHMgZ2FpbiBhIGdpX2NvZGUgYXR0cmlidXRlLiBUaGlzIGlzIHRoZSBzYW1lIG9iamVjdCBhcyB0aGUKK2Z1bmNfY29kZSBhdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgcHJvZHVjZWQgdGhlIGdlbmVyYXRvci4KKworLi4KKworLi4gYnBvOiAxOTIwCisuLiBkYXRlOiA2NzcyCisuLiBub25jZTogejhXWDZMCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCisid2hpbGUgMCIgc3RhdGVtZW50cyB3ZXJlIGNvbXBsZXRlbHkgcmVtb3ZlZCBieSB0aGUgY29tcGlsZXIsIGV2ZW4gaW4gdGhlCitwcmVzZW5jZSBvZiBhbiAiZWxzZSIgY2xhdXNlLCB3aGljaCBpcyBzdXBwb3NlZCB0byBiZSBydW4gd2hlbiB0aGUgY29uZGl0aW9uCitpcyBmYWxzZS4gTm93IHRoZSBjb21waWxlciBjb3JyZWN0bHkgZW1pdHMgYnl0ZWNvZGUgZm9yIHRoZSAiZWxzZSIgc3VpdGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjc3MQorLi4gbm9uY2U6IFZwVDlQbQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQSBmZXcgY3Jhc2hlcnMgZml4ZWQ6IHdlYWtyZWZfaW5fZGVsLnB5IChpc3N1ZSAjMTM3Nzg1OCk7Citsb29zaW5nX2RpY3RfcmVmLnB5IChpc3N1ZSAjMTMwMzYxNCwgdGVzdDY3LnB5KTsgYm9ycm93ZWRfcmVmX1szNF0ucHkgKG5vdAoraW4gdHJhY2tlcikuCisKKy4uCisKKy4uIGJwbzogMTA2OTQxMAorLi4gZGF0ZTogNjc3MAorLi4gbm9uY2U6IEdYMHQtZQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlICJjYW4ndCBsb2FkIGRsbCIgbWVzc2FnZSBib3ggb24gV2luZG93cyBpcyBzdXBwcmVzc2VkIHdoaWxlIGFuIGV4dGVuc2lvbgoraXMgbG9hZGVkIGJ5IGNhbGxpbmcgU2V0RXJyb3JNb2RlIGluIGR5bmxvYWRfd2luLmMuIFRoZSBlcnJvciBpcyBzdGlsbAorcmVwb3J0ZWQgcHJvcGVybHkuCisKKy4uCisKKy4uIGJwbzogMTkxNQorLi4gZGF0ZTogNjc2OQorLi4gbm9uY2U6IE1BaEVFTgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHl0aG9uIGNvbXBpbGVzIHdpdGggLS1lbmFibGUtdW5pY29kZT1ubyBhZ2Fpbi4gSG93ZXZlciBzZXZlcmFsIGV4dGVuc2lvbgorbWV0aG9kcyBhbmQgbW9kdWxlcyBkbyBub3Qgd29yayB3aXRob3V0IHVuaWNvZGUgc3VwcG9ydC4KKworLi4KKworLi4gYnBvOiAxODgyCisuLiBkYXRlOiA2NzY4CisuLiBub25jZTogLVR4U2FnCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCit3aGVuIGNvbXBpbGluZyBjb2RlIGZyb20gYSBzdHJpbmcsIGVuY29kaW5nIGNvb2tpZXMgaW4gdGhlIHNlY29uZCBsaW5lIG9mCitjb2RlIHdlcmUgbm90IGFsd2F5cyByZWNvZ25pemVkIGNvcnJlY3RseS4KKworLi4KKworLi4gYnBvOiAxNjc5CisuLiBkYXRlOiA2NzY3CisuLiBub25jZTogNDhQUGRWCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCisiMHgiIHdhcyB0YWtlbiBhcyBhIHZhbGlkIGludGVnZXIgbGl0ZXJhbC4KKworLi4KKworLi4gYnBvOiAxODY1CisuLiBkYXRlOiA2NzY2CisuLiBub25jZTogd0d6WUR6CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitgYGJ5dGVzYGAgYXMgYW4gYWxpYXMgZm9yIGBgc3RyYGAgYW5kIGIiIiBhcyBhbiBhbGlhcyAiIiB3ZXJlIGFkZGVkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3NjUKKy4uIG5vbmNlOiB4MmllRnIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3N5cy5mbG9hdF9pbmZvIC8gUHlGbG9hdF9HZXRJbmZvOiBUaGUgZmxvYXRpbmcgcG9pbnQgaW5mb3JtYXRpb24gb2JqZWN0IHdhcworY29udmVydGVkIGZyb20gYSBkaWN0IHRvIGEgc3BlY2lhbGl6ZWQgc3RydWN0c2VxIG9iamVjdC4KKworLi4KKworLi4gYnBvOiAxODE2CisuLiBkYXRlOiA2NzY0CisuLiBub25jZTogWUJqZDVICisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGRlZCBzeXMuZmxhZ3Mgc3RydWN0c2VxLiBJdCBleHBvc2VzIHRoZSBzdGF0dXMgb2YgbW9zdCBjb21tYW5kIGxpbmUKK2FyZ3VtZW50cyBhbmQgUFlUSE9OKiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjc2MworLi4gbm9uY2U6IHdtYzBzVAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworT2JqZWN0cy9zdHJ1Y3RzZXEuYzogSW1wbGVtZW50ZWQgbmV3IHN0cnVjdHNlcSByZXByZXNlbnRhdGlvbi4gVGhlIHBhdGNoCittYWtlcyBzdHJ1Y3RzZXFzIChlLmcuIHRoZSByZXR1cm4gdmFsdWUgb2Ygb3Muc3RhdCkgbW9yZSByZWFkYWJsZS4KKworLi4KKworLi4gYnBvOiAxNzAwMjg4CisuLiBkYXRlOiA2NzYyCisuLiBub25jZTogbHdKZkRaCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCithZGRlZCBhIHR5cGUgYXR0cmlidXRlIGNhY2hlIHRoYXQgY2FjaGVzIG1ldGhvZCBhY2Nlc3NlcywgcmVzdWx0aW5nIGluCitzcGVlZHVwcyBpbiBoZWF2aWx5IG9iamVjdC1vcmllbnRlZCBjb2RlLgorCisuLgorCisuLiBicG86IDE3NzYKKy4uIGRhdGU6IDY3NjEKKy4uIG5vbmNlOiBKWWRxSC0KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK19faW1wb3J0X18oKSBubyBsb25nZXIgYWNjZXB0cyBmaWxlbmFtZXMgb24gYW55IHBsYXRmb3JtLiBUaGUgZmlyc3QKK3BhcmFtZXRlciB0byBfX2ltcG9ydF9fKCkgbXVzdCBiZSBhIHZhbGlkIG1vZHVsZSBuYW1lLgorCisuLgorCisuLiBicG86IDE2NjgKKy4uIGRhdGU6IDY3NjAKKy4uIG5vbmNlOiBtWjVrU2oKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3JlbmFtZWQgVEhSRUFEREVCVUcgZW52dmFyIHRvIFBZVEhPTlRIUkVBRERFQlVHLgorCisuLgorCisuLiBicG86IDYwMjM0NQorLi4gZGF0ZTogNjc1OQorLi4gbm9uY2U6IE9PZ0ZYWQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQWRkIC1CIGNvbW1hbmQgbGluZSBvcHRpb24sIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFIGVudnZhciBhbmQKK3N5cy5kb250X3dyaXRlX2J5dGVjb2RlIGF0dHJpYnV0ZS4gQWxsIHRoZXNlIGNhbiBiZSBzZXQgdG8gZm9yYmlkIFB5dGhvbiB0bworYXR0ZW1wdCB0byB3cml0ZSBjb21waWxlZCBieXRlY29kZSBmaWxlcy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NzU4CisuLiBub25jZTogXzdhX0xsCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbXByb3ZlIHNvbWUgZXhjZXB0aW9uIG1lc3NhZ2VzIHdoZW4gV2luZG93cyBmYWlscyB0byBsb2FkIGFuIGV4dGVuc2lvbgorbW9kdWxlLiBOb3cgd2UgZ2V0IGZvciBleGFtcGxlICclMSBpcyBub3QgYSB2YWxpZCBXaW4zMiBhcHBsaWNhdGlvbicgaW5zdGVhZAorb2YgJ2Vycm9yIGNvZGUgMTkzJy4KKworLi4KKworLi4gYnBvOiAxNDgxMjk2CisuLiBkYXRlOiA2NzU3CisuLiBub25jZTogblJNcUNYCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBsb25nKGZsb2F0KCduYW4nKSkgIT0gMEwuCisKKy4uCisKKy4uIGJwbzogMTY0MAorLi4gZGF0ZTogNjc1NgorLi4gbm9uY2U6IElOdlVyRgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQWRkZWQgbWF0aC5pc2luZih4KSwgbWF0aC5pc25hbih4KSBhbmQgbWF0aC5jb3B5c2lnbih4LCB5KSBmdW5jdGlvbnMuCisKKy4uCisKKy4uIGJwbzogMTYzNQorLi4gZGF0ZTogNjc1NQorLi4gbm9uY2U6IGZpWFNmTgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUGxhdGZvcm0gaW5kZXBlbmRlbnQgY3JlYXRpb24gYW5kIHJlcHJlc2VudGF0aW9uIG9mIE5hTiBhbmQgSU5GLgorZmxvYXQoIm5hbiIpLCBmbG9hdCgiaW5mIikgYW5kIGZsb2F0KCItaW5mIikgbm93IHdvcmsgb24gZXZlcnkgcGxhdGZvcm0gd2l0aAorSUVFRSA3NTQgc2VtYW50aWNzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3NTQKKy4uIG5vbmNlOiBNTk1zckYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0NvbXBpbGVyIG5vdyBnZW5lcmF0ZXMgc2ltcGxlciBhbmQgZmFzdGVyIGNvZGUgZm9yIGRpY3Rpb25hcnkgbGl0ZXJhbHMuICBUaGUKK29wYXJnIGZvciBCVUlMRF9NQVAgbm93IGluZGljYXRlcyBhbiBlc3RpbWF0ZWQgZGljdGlvbmFyeSBzaXplLiAgVGhlcmUgaXMgYQorbmV3IG9wY29kZSwgU1RPUkVfTUFQLCBmb3IgYWRkaW5nIGVudHJpZXMgdG8gdGhlIGRpY3Rpb25hcnkuCisKKy4uCisKKy4uIGJwbzogMTYzOAorLi4gZGF0ZTogNjc1MworLi4gbm9uY2U6IGVnNHQzbQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworJXpkIGNvbmZpZ3VyZSB0ZXN0IGZhaWxzIG9uIExpbnV4LgorCisuLgorCisuLiBicG86IDE2MjAKKy4uIGRhdGU6IDY3NTIKKy4uIG5vbmNlOiA5cUJlVksKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK05ldyBwcm9wZXJ0eSBkZWNvcmF0b3Igc3ludGF4IHdhcyBtb2RpZnlpbmcgdGhlIGRlY29yYXRvciBpbiBwbGFjZSBpbnN0ZWFkCitvZiBjcmVhdGluZyBhIG5ldyBkZWNvcmF0b3Igb2JqZWN0LgorCisuLgorCisuLiBicG86IDE1MzgKKy4uIGRhdGU6IDY3NTEKKy4uIG5vbmNlOiBPa3ZLSlIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0F2b2lkIGNvcHlpbmcgc3RyaW5nIGluIHNwbGl0L3JzcGxpdCBpZiB0aGUgc3BsaXQgY2hhciBpcyBub3QgZm91bmQuCisKKy4uCisKKy4uIGJwbzogMTU1MworLi4gZGF0ZTogNjc1MAorLi4gbm9uY2U6IEZDZ05ERQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQW4gZXJyb25lb3VzIF9fbGVuZ3RoX2hpbnRfXyBjYW4gbWFrZSBsaXN0KCkgcmFpc2UgYSBTeXN0ZW1FcnJvci4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NzQ5CisuLiBub25jZTogendfNVBBCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQRVAgMzY2OiBBbGxvdyBleHBsaWNpdCByZWxhdGl2ZSBpbXBvcnRzIHdoZW4gZXhlY3V0aW5nIG1vZHVsZXMgaW5zaWRlCitwYWNrYWdlcyB3aXRoIHRoZSAtbSBzd2l0Y2ggdmlhIGEgbmV3IG1vZHVsZSBsZXZlbCBfX3BhY2thZ2VfXyBhdHRyaWJ1dGUuCisKKy4uCisKKy4uIGJwbzogMTQwMgorLi4gZGF0ZTogNjc0OAorLi4gbm9uY2U6IFpUZWdMUQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgY3Jhc2ggb24gZXhpdCwgd2hlbiBhbm90aGVyIHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLCBhbmQgaWYgdGhlCitkZWFsbG9jYXRpb24gb2YgaXRzIGZyYW1lcyBzb21laG93IGNhbGxzIHRoZSBQeUdJTFN0YXRlX0Vuc3VyZSgpIC8KK1B5R0lMU3RhdGVfUmVsZWFzZSgpIGZ1bmN0aW9ucy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NzQ3CisuLiBub25jZTogSjNCd2h5CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitFeHBvc2UgdGhlIFB5X1B5M2tXYXJuaW5nRmxhZyBhcyBzeXMucHkza3dhcm5pbmcuCisKKy4uCisKKy4uIGJwbzogMTQ0NQorLi4gZGF0ZTogNjc0NgorLi4gbm9uY2U6IDYteWZrYworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgU3lzdGVtRXJyb3Igd2hlbiBhY2Nlc3NpbmcgdGhlIGBgY2VsbF9jb250ZW50c2BgIGF0dHJpYnV0ZSBvZiBhbiBlbXB0eQorY2VsbCBvYmplY3QuCisKKy4uCisKKy4uIGJwbzogMTQ2MAorLi4gZGF0ZTogNjc0NQorLi4gbm9uY2U6IHk3VFA1bQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlIHV0Zi03IGluY3JlbWVudGFsIGRlY29kZXIgZGlkIG5vdCBhY2NlcHQgdHJ1bmNhdGVkIGlucHV0LiAgSXQgbm93Citjb3JyZWN0bHkgc2F2ZXMgaXRzIHN0YXRlIGJldHdlZW4gY2h1bmtzIG9mIGRhdGEuCisKKy4uCisKKy4uIGJwbzogMTczOTQ2OAorLi4gZGF0ZTogNjc0NAorLi4gbm9uY2U6IHlNM0IzcgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRGlyZWN0b3JpZXMgYW5kIHppcGZpbGVzIGNvbnRhaW5pbmcgYSBfX21haW5fXy5weSBmaWxlIGNhbiBub3cgYmUgZGlyZWN0bHkKK2V4ZWN1dGVkIGJ5IHBhc3NpbmcgdGhlaXIgbmFtZSB0byB0aGUgaW50ZXJwcmV0ZXIuIFRoZSBkaXJlY3RvcnkvemlwZmlsZSBpcworYXV0b21hdGljYWxseSBpbnNlcnRlZCBhcyB0aGUgZmlyc3QgZW50cnkgaW4gc3lzLnBhdGguCisKKy4uCisKKy4uIGJwbzogMTI2NQorLi4gZGF0ZTogNjc0MworLi4gbm9uY2U6IDQtSWFKZAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgcHJvYmxlbSB3aXRoIHN5cy5zZXR0cmFjZSwgaWYgdGhlIHRyYWNpbmcgZnVuY3Rpb24gdXNlcyBhIGdlbmVyYXRvcgorZXhwcmVzc2lvbiB3aGVuIGF0IHRoZSBzYW1lIHRpbWUgdGhlIGV4ZWN1dGVkIGNvZGUgaXMgY2xvc2luZyBhIHBhdXNlZAorZ2VuZXJhdG9yLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3NDIKKy4uIG5vbmNlOiA3aDRsQ2IKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3NldHMgYW5kIGZyb3plbnNldHMgbm93IGhhdmUgYW4gaXNkaXNqb2ludCgpIG1ldGhvZC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NzQxCisuLiBub25jZTogMUFvWUFRCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitvcHRpbWl6ZSB0aGUgcGVyZm9ybWFuY2Ugb2YgYnVpbHRpbi5zdW0oKS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NzQwCisuLiBub25jZTogRkhKX0o4CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggd2FybmluZ3MgZm91bmQgYnkgdGhlIG5ldyB2ZXJzaW9uIG9mIHRoZSBDb3Zlcml0eSBjaGVja2VyLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3MzkKKy4uIG5vbmNlOiA2ZG5jcmMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSBlbnVtZXJhdGUoKSBidWlsdC1pbiBmdW5jdGlvbiBpcyBubyBsb25nZXIgYm91bmRlZCB0byBzZXF1ZW5jZXMgc21hbGxlcgordGhhbiBMT05HX01BWC4gIEZvcm1lcmx5LCBpdCByYWlzZWQgYW4gT3ZlcmZsb3dFcnJvci4gIE5vdywgYXV0b21hdGljYWxseQorc2hpZnRzIGZyb20gaW50cyB0byBsb25ncy4KKworLi4KKworLi4gYnBvOiAxNjg2Mzg2CisuLiBkYXRlOiA2NzM4CisuLiBub25jZTogbUZ3Mk81CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitUdXBsZSdzIHRwX3JlcHIgZGlkIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUgcG9zc2liaWxpdHkgb2YgaGF2aW5nIGEKK3NlbGYtcmVmZXJlbnRpYWwgdHVwbGUsIHdoaWNoIGlzIHBvc3NpYmxlIGZyb20gQyBjb2RlLiAgTm9yIGRpZCBvYmplY3QncyB0cF9zdHIKK2NvbnNpZGVyIHRoYXQgYSB0eXBlJ3MgdHBfc3RyIGNvdWxkIGRvIHNvbWV0aGluZyB0aGF0IGNvdWxkIGxlYWQgdG8gYW4KK2luaWZpbml0ZSByZWN1cnNpb24uIFB5X1JlcHJFbnRlcigpIGFuZCBQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoKSwKK3Jlc3BlY3RpdmVseSwgZml4ZWQgdGhlIGlzc3Vlcy4KKworLi4KKworLi4gYnBvOiAxMTY0CisuLiBkYXRlOiA2NzM3CisuLiBub25jZTogdU1IVDQwCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJdCB3YXMgcG9zc2libGUgdG8gdHJpZ2dlciBkZWFkbG9jayB3aGVuIHVzaW5nIHRoZSAncHJpbnQnIHN0YXRlbWVudCB0bword3JpdGUgdG8gYSBmaWxlIHNpbmNlIHRoZSBHSUwgd2FzIG5vdCByZWxlYXNlZCBhcyBuZWVkZWQuICBOb3cKK1B5T2JqZWN0X1ByaW50KCkgZG9lcyB0aGUgcmlnaHQgdGhpbmcgYWxvbmcgd2l0aCB2YXJpb3VzIHRwX3ByaW50CitpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGJ1aWx0LWluIHR5cGVzIGFuZCB0aG9zZSBpbiB0aGUgY29sbGVjdGlvbnMgbW9kdWxlLgorCisuLgorCisuLiBicG86IDExNDcKKy4uIGRhdGU6IDY3MzYKKy4uIG5vbmNlOiBhb0o3T0YKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0V4Y2VwdGlvbnMgd2VyZSBkaXJlY3RseSBhbGxvd2luZyBzdHJpbmcgZXhjZXB0aW9ucyBpbiB0aGVpciB0aHJvdygpIG1ldGhvZAorZXZlbiB0aG91Z2ggc3RyaW5nIGV4Y2VwdGlvbnMgbm8gbG9uZ2VyIGFsbG93ZWQuCisKKy4uCisKKy4uIGJwbzogMTA5NgorLi4gZGF0ZTogNjczNQorLi4gbm9uY2U6IE83YUNwNQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHJldmVudCBhIHNlZ2ZhdWx0IGZyb20gZ2V0dGluZyB0aGUgcmVwciBvZiBhIHZlcnkgZGVlcGx5IG5lc3RlZCBsaXN0IGJ5Cit1c2luZyB0aGUgcmVjdXJzaW9uIGNvdW50ZXIuCisKKy4uCisKKy4uIGJwbzogMTIwMjUzMworLi4gZGF0ZTogNjczNAorLi4gbm9uY2U6IGFuOHRyRworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGluZmluaXRlIHJlY3Vyc2lvbiBjYWxscyB0cmlnZ2VyZWQgYnkgY2FsbHMgdG8gUHlPYmplY3RfQ2FsbCgpIG5ldmVyCitjYWxsaW5nIGJhY2sgb3V0IHRvIFB5dGhvbiBjb2RlIHRvIHRyaWdnZXIgcmVjdXJzaW9uIGRlcHRoIHVwZGF0ZXMvY2hlY2tzLgorUmVxdWlyZWQgdGhlIGNyZWF0aW9uIG9mIGEgc3RhdGljIFJ1bnRpbWVFcnJvciBpbnN0YW5jZSBpbiBjYXNlIG5vcm1hbGl6aW5nCithbiBleGNlcHRpb24gcHV0IHRoZSByZWN1cnNpb24gY2hlY2sgdmFsdWUgcGFzdCBpdHMgbGltaXQuICBGaXhlcyBjcmFzaGVycworaW5maW5pdGVfcmVjXygxfDJ8NHw1KS5weS4KKworLi4KKworLi4gYnBvOiAxMDMxMjEzCisuLiBkYXRlOiA2NzMzCisuLiBub25jZTogLXBJY25wCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitEZWNvZGUgc291cmNlIGxpbmUgaW4gU3ludGF4RXJyb3JzIGJhY2sgdG8gaXRzIG9yaWdpbmFsIHNvdXJjZSBlbmNvZGluZy4KKworLi4KKworLi4gYnBvOiAxNjczNzU5CisuLiBkYXRlOiA2NzMyCisuLiBub25jZTogQmlvalV1CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCithZGQgYSBtaXNzaW5nIG92ZXJmbG93IGNoZWNrIHdoZW4gZm9ybWF0dGluZyBmbG9hdHMgd2l0aCAlRy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NzMxCisuLiBub25jZTogaXJwZjdTCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQcmV2ZW50IGV4cGFuZHRhYnMoKSBvbiBzdHJpbmcgYW5kIHVuaWNvZGUgb2JqZWN0cyBmcm9tIGNhdXNpbmcgYSBzZWdmYXVsdAord2hlbiBhIGxhcmdlIHdpZHRoIGlzIHBhc3NlZCBvbiAzMi1iaXQgcGxhdGZvcm1zLgorCisuLgorCisuLiBicG86IDE3MzM0ODgKKy4uIGRhdGU6IDY3MzAKKy4uIG5vbmNlOiB0bDd3TmMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBjb21waWxhdGlvbiBvZiBidWZmZXJvYmplY3QuYyBvbiBBSVguCisKKy4uCisKKy4uIGJwbzogMTcyMjQ4NQorLi4gZGF0ZTogNjcyOQorLi4gbm9uY2U6IGs2TXFJUQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworcmVtb3ZlIGRvY3N0cmluZ3MgYWdhaW4gd2hlbiBydW5uaW5nIHdpdGggLU9PLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3MjgKKy4uIG5vbmNlOiA3RGRwdHcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZCBuZXcgYXR0cmlidXRlIG5hbWVzIGZvciBmdW5jdGlvbiBvYmplY3RzLiAgQWxsIHRoZSBmdW5jXyogYmVjb21lIF9fKl9fCithdHRyaWJ1dGVzLiAgKFNvbWUgYWxyZWFkeSBleGlzdGVkLCBlLmcuLCBfX2RvY19fIGFuZCBfX25hbWVfXy4pCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjcyNworLi4gbm9uY2U6IHlYZkVDSQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQWRkIC0zIG9wdGlvbiB0byB0aGUgaW50ZXJwcmV0ZXIgdG8gd2FybiBhYm91dCBmZWF0dXJlcyB0aGF0IGFyZSBkZXByZWNhdGVkCithbmQgd2lsbCBiZSBjaGFuZ2VkL3JlbW92ZWQgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAxNjg2NDg3CisuLiBkYXRlOiA2NzI2CisuLiBub25jZTogSzhtdENSCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCit5b3UgY2FuIG5vdyBwYXNzIGFueSBtYXBwaW5nIGFmdGVyICcqKicgaW4gZnVuY3Rpb24gY2FsbHMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjcyNQorLi4gbm9uY2U6IEpLWG4xdQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZXhjZXB0IGNsYXVzZXMgbWF5IG5vdyBiZSBzcGVsbGVkIGVpdGhlciAiZXhjZXB0IEUsIHRhcmdldDoiIG9yICJleGNlcHQgRSBhcwordGFyZ2V0OiIuIFRoaXMgaXMgdG8gcHJvdmlkZSBmb3J3YXJkcyBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NzI0CisuLiBub25jZTogOExaZDZzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitEZXByZWNhdGUgQmFzZUV4Y2VwdGlvbi5tZXNzYWdlIGFzIHBlciBQRVAgMzUyLgorCisuLgorCisuLiBicG86IDEzMDM2MTQKKy4uIGRhdGU6IDY3MjMKKy4uIG5vbmNlOiA0dndPbXkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2Rvbid0IGV4cG9zZSBvYmplY3QncyBfX2RpY3RfXyB3aGVuIHRoZSBkaWN0IGlzIGluaGVyaXRlZCBmcm9tIGEgYnVpbHQtaW4KK2Jhc2UuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjcyMgorLi4gbm9uY2U6IFZOODh3YQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworV2hlbiBfX3Nsb3RzX18gYXJlIHNldCB0byBhIHVuaWNvZGUgc3RyaW5nLCBtYWtlIGl0IHdvcmsgdGhlIHNhbWUgYXMgc2V0dGluZworYSBwbGFpbiBzdHJpbmcsIGllIGRvbid0IGV4cGFuZCB0byBzaW5nbGUgbGV0dGVyIGlkZW50aWZpZXJzLgorCisuLgorCisuLiBicG86IDExOTE2OTkKKy4uIGRhdGU6IDY3MjEKKy4uIG5vbmNlOiBWMFVXY08KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1NsaWNlcyBjYW4gbm93IGJlIHBpY2tsZWQuCisKKy4uCisKKy4uIGJwbzogMTE5MzEyOAorLi4gZGF0ZTogNjcyMAorLi4gbm9uY2U6IGhUV1lqRworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworc3RyLnRyYW5zbGF0ZSgpIG5vdyBhbGxvd3MgYSBOb25lIGFyZ3VtZW50IGZvciB0cmFuc2xhdGlvbnMgdGhhdCBvbmx5IHJlbW92ZQorY2hhcmFjdGVycyB3aXRob3V0IHJlLW1hcHBpbmcgdGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzLgorCisuLgorCisuLiBicG86IDE2ODIyMDUKKy4uIGRhdGU6IDY3MTkKKy4uIG5vbmNlOiBNYTV4d24KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2EgVHlwZUVycm9yIHdoaWxlIHVucGFja2luZyBhbiBpdGVyYWJsZSBpcyBubyBsb25nZXIgbWFza2VkIGJ5IGEgZ2VuZXJpYyBvbmUKK3dpdGggdGhlIG1lc3NhZ2UgInVucGFjayBub24tc2VxdWVuY2UiLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3MTgKKy4uIG5vbmNlOiAzeTROQ0cKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JlbW92ZSB1bnVzZWQgZmlsZSBQeXRob24vZm1vZC5jLgorCisuLgorCisuLiBicG86IDE2ODMzNjgKKy4uIGRhdGU6IDY3MTcKKy4uIG5vbmNlOiA0RHliSlYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSBvYmplY3QuX19pbml0X18oKSBhbmQgb2JqZWN0Ll9fbmV3X18oKSBtZXRob2RzIGFyZSBub3cgc3RyaWN0ZXIgaW4KK3JlamVjdGluZyBleGNlc3MgYXJndW1lbnRzLiAgVGhlIG9ubHkgdGltZSB3aGVuIGVpdGhlciBhbGxvd3MgZXhjZXNzCithcmd1bWVudHMgaXMgd2hlbiBpdCBpcyBub3Qgb3ZlcnJpZGRlbiBhbmQgdGhlIG90aGVyIG9uZSBpcy4gIEZvciBiYWNrd2FyZHMKK2NvbXBhdGliaWxpdHksIHdoZW4gYm90aCBhcmUgb3ZlcnJpZGRlbiwgaXQgaXMgYSBkZXByZWNhdGlvbiB3YXJuaW5nIChmb3IKK25vdzsgbWF5YmUgYSBQeTNrIHdhcm5pbmcgbGF0ZXIpLiAgQWxzbywgdHlwZS5fX2luaXRfXygpIGluc2lzdHMgb24gdGhlIHNhbWUKK3NpZ25hdHVyZSBhcyBzdXBwb3J0ZWQgYnkgdHlwZS5fX25ld19fKCkuCisKKy4uCisKKy4uIGJwbzogMTY3NTQyMworLi4gZGF0ZTogNjcxNgorLi4gbm9uY2U6IDFKb1BscAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHlDb21wbGV4X0FzQ0NvbXBsZXgoKSBub3cgdHJpZXMgdG8gY29udmVydCBhbiBvYmplY3QgdG8gY29tcGxleCB1c2luZyBpdHMKK19fY29tcGxleF9fKCkgbWV0aG9kIGJlZm9yZSBmYWxsaW5nIGJhY2sgdG8gdGhlIF9fZmxvYXRfXygpIG1ldGhvZC4KK1RoZXJlZm9yZSwgdGhlIGZ1bmN0aW9ucyBpbiB0aGUgY21hdGggbW9kdWxlIG5vdyBjYW4gb3BlcmF0ZSBvbiBvYmplY3RzIHRoYXQKK2RlZmluZSBhIF9fY29tcGxleF9fKCkgbWV0aG9kLgorCisuLgorCisuLiBicG86IDE2MjM1NjMKKy4uIGRhdGU6IDY3MTUKKy4uIG5vbmNlOiBBTVE1dDIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2FsbG93IF9fY2xhc3NfXyBhc3NpZ25tZW50IGZvciBjbGFzc2VzIHdpdGggX19zbG90c19fLiAgVGhlIG9sZCBhbmQgdGhlIG5ldworY2xhc3MgYXJlIHN0aWxsIHJlcXVpcmVkIHRvIGhhdmUgdGhlIHNhbWUgc2xvdCBuYW1lcy4KKworLi4KKworLi4gYnBvOiAxNjQyNTQ3CisuLiBkYXRlOiA2NzE0CisuLiBub25jZTogamtTNVFsCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYW4gZXJyb3IvY3Jhc2ggd2hlbiBlbmNvdW50ZXJpbmcgc3ludGF4IGVycm9ycyBpbiBjb21wbGV4IGlmIHN0YXRlbWVudHMuCisKKy4uCisKKy4uIGJwbzogMTQ2MjQ4OAorLi4gZGF0ZTogNjcxMworLi4gbm9uY2U6IENpODdjdQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHl0aG9uIG5vIGxvbmdlciBzZWdmYXVsdHMgd2hlbiBgYG9iamVjdC5fX3JlZHVjZV9leF9fKClgYCBpcyBjYWxsZWQgd2l0aCBhbgorb2JqZWN0IHRoYXQgaXMgZmFraW5nIGl0cyB0eXBlLgorCisuLgorCisuLiBicG86IDE2ODAwMTUKKy4uIGRhdGU6IDY3MTIKKy4uIG5vbmNlOiBGUzZhRVQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0Rvbid0IG1vZGlmeSBfX3Nsb3RzX18gdHVwbGUgaWYgaXQgY29udGFpbnMgYSB1bmljb2RlIG5hbWUuCisKKy4uCisKKy4uIGJwbzogMTQ0NDUyOQorLi4gZGF0ZTogNjcxMQorLi4gbm9uY2U6IDY5dk1DaworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKwordGhlIGJ1aWx0aW4gY29tcGlsZSgpIG5vdyBhY2NlcHRzIGtleXdvcmQgYXJndW1lbnRzLgorCisuLgorCisuLiBicG86IDE2Nzg2NDcKKy4uIGRhdGU6IDY3MTAKKy4uIG5vbmNlOiBPazRRdmsKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3dyaXRlIGEgbmV3bGluZSBhZnRlciBwcmludGluZyBhbiBleGNlcHRpb24gaW4gYW55IGNhc2UsIGV2ZW4gd2hlbgorY29udmVydGluZyB0aGUgdmFsdWUgdG8gYSBzdHJpbmcgZmFpbGVkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY3MDkKKy4uIG5vbmNlOiBlYzZnekgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSBkaXIoKSBmdW5jdGlvbiBoYXMgYmVlbiBleHRlbmRlZCB0byBjYWxsIHRoZSBfX2Rpcl9fKCkgbWV0aG9kIG9uIGl0cworYXJndW1lbnQsIGlmIGl0IGV4aXN0cy4gSWYgbm90LCBpdCB3aWxsIHdvcmsgbGlrZSBiZWZvcmUuIFRoaXMgYWxsb3dzCitjdXN0b21pemluZyB0aGUgb3V0cHV0IG9mIGRpcigpIGluIHRoZSBwcmVzZW5jZSBvZiBhIF9fZ2V0YXR0cl9fKCkuCisKKy4uCisKKy4uIGJwbzogOTIyMTY3CisuLiBkYXRlOiA2NzA4CisuLiBub25jZTogZ25QSUNjCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQeXRob24gbm8gbG9uZ2VyIHNlZ2ZhdWx0cyB3aGVuIGZhY2VkIHdpdGggaW5maW5pdGVseSBzZWxmLXJlY3Vyc2l2ZQorcmVsb2FkKCkgY2FsbHMgKGFzIHJlcG9ydGVkIGJ5IGJ1ZyAjNzQyMzQyKS4KKworLi4KKworLi4gYnBvOiAxNjc1OTgxCisuLiBkYXRlOiA2NzA3CisuLiBub25jZTogWURBVXBhCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCityZW1vdmUgdW5yZWFjaGFibGUgY29kZSBmcm9tIGBgdHlwZS5fX25ld19fKClgYCBtZXRob2QuCisKKy4uCisKKy4uIGJwbzogMTQ5MTg2NgorLi4gZGF0ZTogNjcwNgorLi4gbm9uY2U6IFJOUXVtWAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworY2hhbmdlIHRoZSBjb21wbGV4KCkgY29uc3RydWN0b3IgdG8gYWxsb3cgcGFydGhlbnNpemVkIGZvcm1zLiBUaGlzIG1lYW5zCitjb21wbGV4KHJlcHIoeCkpIG5vdyB3b3JrcyBpbnN0ZWFkIG9mIHJhaXNpbmcgYSBWYWx1ZUVycm9yLgorCisuLgorCisuLiBicG86IDcwMzc3OQorLi4gZGF0ZTogNjcwNQorLi4gbm9uY2U6IDYwOVMyQgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKwordW5zZXQgX19maWxlX18gaW4gX19tYWluX18gYWZ0ZXIgcnVubmluZyBhIGZpbGUuIFRoaXMgbWFrZXMgdGhlIGZpbGVuYW1lcwordGhlIHdhcm5pbmcgbW9kdWxlIHByaW50cyBtdWNoIG1vcmUgc2Vuc2libGUgd2hlbiBhIFBZVEhPTlNUQVJUVVAgZmlsZSBpcwordXNlZC4KKworLi4KKworLi4gYnBvOiA2OTc2MTMKKy4uIGRhdGU6IDY3MDQKKy4uIG5vbmNlOiBibnp0U3oKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0Rvbid0IGV4aXQgdGhlIGludGVycHJldGVyIG9uIGEgU3lzdGVtRXhpdCBleGNlcHRpb24gaWYgdGhlIC1pIGNvbW1hbmQgbGluZQorb3B0aW9uIG9yIFBZVEhPTklOU1BFQ1QgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgZ2l2ZW4sIGJ1dCBicmVhayBpbnRvIHRoZQoraW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIganVzdCBsaWtlIG9uIG90aGVyIGV4Y2VwdGlvbnMgb3Igbm9ybWFsIHByb2dyYW0KK2V4aXQuCisKKy4uCisKKy4uIGJwbzogMTYzODg3OQorLi4gZGF0ZTogNjcwMworLi4gbm9uY2U6IDI1clc4MworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZG9uJ3QgYWNjZXB0IHN0cmluZ3Mgd2l0aCBlbWJlZGRlZCBOVUwgYnl0ZXMgaW4gbG9uZygpLgorCisuLgorCisuLiBicG86IDE2NzQ1MDMKKy4uIGRhdGU6IDY3MDIKKy4uIG5vbmNlOiBrX2R3blIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2Nsb3NlIHRoZSBmaWxlIG9wZW5lZCBieSBleGVjZmlsZSgpIGluIGFuIGVycm9yIGNvbmRpdGlvbi4KKworLi4KKworLi4gYnBvOiAxNjc0MjI4CisuLiBkYXRlOiA2NzAxCisuLiBub25jZTogOTM2bC02CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCit3aGVuIGFzc2lnbmluZyBhIHNsaWNlIChvbGQtc3R5bGUpLCBjaGVjayBmb3IgdGhlIHNxX2Fzc19zbGljZSBpbnN0ZWFkIG9mCit0aGUgc3Ffc2xpY2Ugc2xvdC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NzAwCisuLiBub25jZTogNFIwdTRICisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitXaGVuIHByaW50aW5nIGFuIHVucmFpc2FibGUgZXJyb3IsIGRvbid0IHByaW50IGV4Y2VwdGlvbnMuIGJlZm9yZSB0aGUgbmFtZS4KK1RoaXMgZHVwbGljYXRlcyB0aGUgYmVoYXZpb3Igd2hlbmluZyBub3JtYWxseSBwcmludGluZyBleGNlcHRpb25zLgorCisuLgorCisuLiBicG86IDE2NTM3MzYKKy4uIGRhdGU6IDY2OTkKKy4uIG5vbmNlOiBwdVhfZi0KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1Byb3Blcmx5IGRpc2NhcmQgdGhpcmQgYXJndW1lbnQgdG8gc2xvdF9uYl9pbnBsYWNlX3Bvd2VyLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY2OTgKKy4uIG5vbmNlOiBMTTY3Ry0KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1BFUCAzNTI6IFJhaXNpbmcgYSBzdHJpbmcgZXhjZXB0aW9uIG5vdyB0cmlnZ2VycyBhIFR5cGVFcnJvci4gQXR0ZW1wdGluZyB0bworY2F0Y2ggYSBzdHJpbmcgZXhjZXB0aW9uIHJhaXNlcyBEZXByZWNhdGlvbldhcm5pbmcuCisKKy4uCisKKy4uIGJwbzogMTM3Nzg1OAorLi4gZGF0ZTogNjY5NworLi4gbm9uY2U6IFBvV3FfTAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHRoZSBzZWdmYXVsdGluZyBvZiB0aGUgaW50ZXJwcmV0ZXIgd2hlbiBhbiBvYmplY3QgY3JlYXRlZCBhIHdlYWtyZWYgb24KK2l0c2VsZiBkdXJpbmcgYSBfX2RlbF9fIGNhbGwgZm9yIG5ldy1zdHlsZSBjbGFzc2VzIChjbGFzc2ljIGNsYXNzZXMgc3RpbGwKK2hhdmUgdGhlIGJ1ZykuCisKKy4uCisKKy4uIGJwbzogMTU3OTM3MAorLi4gZGF0ZTogNjY5NgorLi4gbm9uY2U6IDBKbTI5ZworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworTWFrZSBQeVRyYWNlQmFja19IZXJlIHVzZSB0aGUgY3VycmVudCB0aHJlYWQsIG5vdCB0aGUgZnJhbWUncyB0aHJlYWQgc3RhdGUuCisKKy4uCisKKy4uIGJwbzogMTYzMDk3NQorLi4gZGF0ZTogNjY5NQorLi4gbm9uY2U6IE1vQTJDVAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGNyYXNoIHdoZW4gcmVwbGFjaW5nIHN5cy5zdGRvdXQgaW4gc2l0ZWN1c3RvbWl6ZS5weS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2Njk0CisuLiBub25jZTogZkt3RDR1CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQcmV2ZW50IHNlZyBmYXVsdCBvbiBzaHV0ZG93biB3aGljaCBjb3VsZCBvY2N1ciBpZiBhbiBvYmplY3QgcmFpc2VkIGEKK3dhcm5pbmcuCisKKy4uCisKKy4uIGJwbzogMTU2NjI4MAorLi4gZGF0ZTogNjY5MworLi4gbm9uY2U6IGRETnE5YgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRXhwbGljaXRseSBpbnZva2UgdGhyZWFkaW5nLl9zaHV0ZG93biBmcm9tIFB5X01haW4sIHRvIGF2b2lkIHJlbHlpbmcgb24KK2F0ZXhpdC4KKworLi4KKworLi4gYnBvOiAxNTkwODkxCisuLiBkYXRlOiA2NjkyCisuLiBub25jZTogVnlGa1h4CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCityYW5kb20ucmFuZHJhbmdlIGRvbid0IHJldHVybiBjb3JyZWN0IHZhbHVlIGZvciBiaWcgbnVtYmVyLgorCisuLgorCisuLiBicG86IDE1ODY3OTEKKy4uIGRhdGU6IDY2OTEKKy4uIG5vbmNlOiB4eUVaLXoKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0JldHRlciBleGNlcHRpb24gbWVzc2FnZXMgZm9yIHNvbWUgb3BlcmF0aW9ucyBvbiBzdHJpbmdzLCB0dXBsZXMgYW5kIGxpc3RzLgorCisuLgorCisuLiBicG86IDEwNjc3NjAKKy4uIGRhdGU6IDY2OTAKKy4uIG5vbmNlOiBIdGdWQ2IKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0RlcHJlY2F0ZSBwYXNzaW5nIGZsb2F0cyB0byBmaWxlLnNlZWsuCisKKy4uCisKKy4uIGJwbzogMTU5MTk5NgorLi4gZGF0ZTogNjY4OQorLi4gbm9uY2U6IGoxQVR0RQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQ29ycmVjdGx5IGZvcndhcmQgZXhjZXB0aW9uIGluIGluc3RhbmNlX2NvbnRhaW5zKCkuCisKKy4uCisKKy4uIGJwbzogMTU4ODI4NworLi4gZGF0ZTogNjY4OAorLi4gbm9uY2U6IE11eDhFYgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZml4IGludmFsaWQgYXNzZXJ0aW9uIGZvciBgMSwyYCBpbiBkZWJ1ZyBidWlsZHMuCisKKy4uCisKKy4uIGJwbzogMTU3NjY1NworLi4gZGF0ZTogNjY4NworLi4gbm9uY2U6IEpmSlZ2VAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKword2hlbiBzZXR0aW5nIGEgS2V5RXJyb3IgZm9yIGEgdHVwbGUga2V5LCBtYWtlIHN1cmUgdGhhdCB0aGUgdHVwbGUgaXNuJ3QgdXNlZAorYXMgdGhlICJleGNlcHRpb24gYXJndW1lbnRzIHR1cGxlIi4KKworLi4KKworLi4gYnBvOiAxNTY1NTE0CisuLiBkYXRlOiA2Njg2CisuLiBub25jZTogM2tNMnprCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitTeXN0ZW1FcnJvciBub3QgcmFpc2VkIG9uIHRvbyBtYW55IG5lc3RlZCBibG9ja3MuCisKKy4uCisKKy4uIGJwbzogMTU3NjE3NAorLi4gZGF0ZTogNjY4NQorLi4gbm9uY2U6IEtzME9vTgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworV2luZG93c0Vycm9yIG5vdyBkaXNwbGF5cyB0aGUgd2luZG93cyBlcnJvciBjb2RlIGFnYWluLCBubyBsb25nZXIgdGhlIHBvc2l4CitlcnJvciBjb2RlLgorCisuLgorCisuLiBicG86IDE1NDkwNDkKKy4uIGRhdGU6IDY2ODQKKy4uIG5vbmNlOiB1ZlZtQzkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1N1cHBvcnQgbG9uZyB2YWx1ZXMgaW4gc3RydWN0bWVtYmVyLCBpc3N1ZSB3YXJuaW5ncyBpZiB0aGUgYXNzaWduZWQgdmFsdWUKK2ZvciBzdHJ1Y3RtZW1iZXIgZmllbGRzIGdldHMgdHJ1bmNhdGVkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY2ODMKKy4uIG5vbmNlOiB2OVpIa2wKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1VwZGF0ZSB0aGUgcGVlcGhvbGUgb3B0aW1pemVyIHRvIHJlbW92ZSBtb3JlIGRlYWQgY29kZSAoanVtcHMgYWZ0ZXIgcmV0dXJucykKK2FuZCBpbmxpbmUgdW5jb25kaXRpb25hbCBqdW1wcyB0byByZXR1cm5zLgorCisuLgorCisuLiBicG86IDE1NDU0OTcKKy4uIGRhdGU6IDY2ODIKKy4uIG5vbmNlOiAwWW50RnYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3doZW4gZ2l2ZW4gYW4gZXhwbGljaXQgYmFzZSwgaW50KCkgZGlkIGlnbm9yZSBOVUxzIGVtYmVkZGVkIGluIHRoZSBzdHJpbmcgdG8KK2NvbnZlcnQuCisKKy4uCisKKy4uIGJwbzogMTU2OTk5OAorLi4gZGF0ZTogNjY4MQorLi4gbm9uY2U6IG1xQ1lScworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworYnJlYWsgaW5zaWRlIGEgdHJ5IHN0YXRlbWVudCAob3V0c2lkZSBhIGxvb3ApIGlzIG5vdyByZWNvZ25pemVkIGFuZAorcmVqZWN0ZWQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjY4MAorLi4gbm9uY2U6IE1kSUM4NQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworbGlzdC5wb3AoeCkgYWNjZXB0cyBhbnkgb2JqZWN0IHggZm9sbG93aW5nIHRoZSBfX2luZGV4X18gcHJvdG9jb2wuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjY3OQorLi4gbm9uY2U6IG5XYTM2UAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQSBudW1iZXIgb2YgcGxhY2VzLCBpbmNsdWRpbmcgaW50ZWdlciBuZWdhdGlvbiBhbmQgYWJzb2x1dGUgdmFsdWUsIHdlcmUKK2ZpeGVkIHRvIG5vdCByZWx5IG9uIHVuZGVmaW5lZCBiZWhhdmlvdXIgb2YgdGhlIEMgY29tcGlsZXIgYW55bW9yZS4KKworLi4KKworLi4gYnBvOiAxNTY2ODAwCisuLiBkYXRlOiA2Njc4CisuLiBub25jZTogNDZKVXZECisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCittYWtlIHN1cmUgdGhhdCBFbnZpcm9ubWVudEVycm9yIGNhbiBiZSBjYWxsZWQgd2l0aCBhbnkgbnVtYmVyIG9mIGFyZ3VtZW50cywKK2FzIHdhcyB0aGUgY2FzZSBpbiBQeXRob24gMi40LgorCisuLgorCisuLiBicG86IDE1Njc2OTEKKy4uIGRhdGU6IDY2NzcKKy4uIG5vbmNlOiByRERBcFcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3N1cGVyKCkgYW5kIG5ldy5pbnN0YW5jZW1ldGhvZCgpIG5vdyBkb24ndCBhY2NlcHQga2V5d29yZCBhcmd1bWVudHMgYW55IG1vcmUKKyhwcmV2aW91c2x5IHRoZXkgYWNjZXB0ZWQgdGhlbSwgYnV0IGRpZG4ndCB1c2UgdGhlbSkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjY3NgorLi4gbm9uY2U6IEZFUHIyVgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgYnVnIGluIHRoZSBwYXJzZXIncyBmdXR1cmUgc3RhdGVtZW50IGhhbmRsaW5nIHRoYXQgbGVkIHRvICJ3aXRoIiBub3QKK2JlaW5nIHJlY29nbml6ZWQgYXMgYSBrZXl3b3JkIGFmdGVyLCBlLmcuLCB0aGlzIHN0YXRlbWVudDogZnJvbSBfX2Z1dHVyZV9fCitpbXBvcnQgZGl2aXNpb24sIHdpdGhfc3RhdGVtZW50CisKKy4uCisKKy4uIGJwbzogMTU1NzIzMgorLi4gZGF0ZTogNjY3NQorLi4gbm9uY2U6IDJlVlhWUworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZml4IHNlZyBmYXVsdCB3aXRoIGRlZiBmKCgoKHgpKSkpIGFuZCBkZWYgZigoKHgpLCkpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY2NzQKKy4uIG5vbmNlOiBhRXdEdkcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCAlemQgc3RyaW5nIGZvcm1hdHRpbmcgb24gTWFjIE9TIFggc28gaXQgcHJpbnRzIG5lZ2F0aXZlIG51bWJlcnMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjY3MworLi4gbm9uY2U6IF9YUWdHUworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQWxsb3cgZXhjZXB0aW9uIGluc3RhbmNlcyB0byBiZSBkaXJlY3RseSBzbGljZWQgYWdhaW4uCisKKy4uCisKKy4uIGJwbzogMTU1MTQzMgorLi4gZGF0ZTogNjY3MgorLi4gbm9uY2U6IDRGY29fbAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRXhjZXB0aW9ucyBkbyBub3QgZGVmaW5lIGFuIGV4cGxpY2l0IF9fdW5pY29kZV9fIG1ldGhvZC4gIFRoaXMgYWxsb3dzCitjYWxsaW5nIHVuaWNvZGUoKSBvbiBleGNlcHRpb25zIGNsYXNzZXMgZGlyZWN0bHkgdG8gc3VjY2VlZC4KKworLi4KKworLi4gYnBvOiAxNTQyMDUxCisuLiBkYXRlOiA2NjcxCisuLiBub25jZTogbFZQZm5DCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitFeGNlcHRpb25zIG5vdyBjb3JyZWN0bHkgY2FsbCBQeU9iamVjdF9HQ19VblRyYWNrLiBBbHNvIG1ha2Ugc3VyZSB0aGF0IGV2ZXJ5CitleGNlcHRpb24gY2xhc3MgaGFzIF9fbW9kdWxlX18gc2V0IHRvICdleGNlcHRpb25zJy4KKworLi4KKworLi4gYnBvOiAxNTUwOTgzCisuLiBkYXRlOiA2NjcwCisuLiBub25jZTogY1VwVUEtCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitlbWl0IGJldHRlciBlcnJvciBtZXNzYWdlcyBmb3IgZXJyb25lb3VzIHJlbGF0aXZlIGltcG9ydHMgKGlmIG5vdCBpbiBwYWNrYWdlCithbmQgaWYgYmV5b25kIHRvcGxldmVsIHBhY2thZ2UpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY2NjkKKy4uIG5vbmNlOiBfNERpdEMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK092ZXJmbG93IGNoZWNraW5nIGNvZGUgaW4gaW50ZWdlciBkaXZpc2lvbiByYW4gYWZvdWwgb2YgbmV3IGdjYworb3B0aW1pemF0aW9ucy4gIENoYW5nZWQgdG8gYmUgbW9yZSBzdGFuZGFyZC1jb25mb3JtaW5nLgorCisuLgorCisuLiBicG86IDE1NDI0NTEKKy4uIGRhdGU6IDY2NjgKKy4uIG5vbmNlOiAyaUZZRWUKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2Rpc2FsbG93IGNvbnRpbnVlIGFueXdoZXJlIHVuZGVyIGEgZmluYWxseS4KKworLi4KKworLi4gYnBvOiAxNTQ2Mjg4CisuLiBkYXRlOiA2NjY3CisuLiBub25jZTogSUJrYVB2CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitmaXggc2VnIGZhdWx0IGluIGRpY3RfZXF1YWwgZHVlIHRvIHJlZiBjb3VudGluZyBidWcuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjY2NgorLi4gbm9uY2U6IGtOSVlzcworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlIHJldHVybiB0dXBsZSBmcm9tIHN0ci5ycGFydGl0aW9uKHNlcCkgaXMgKHRhaWwsIHNlcCwgaGVhZCkgd2hlcmUgaGVhZCBpcwordGhlIG9yaWdpbmFsIHN0cmluZyBpZiBzZXAgd2FzIG5vdCBmb3VuZC4KKworLi4KKworLi4gYnBvOiAxNTIwODY0CisuLiBkYXRlOiA2NjY1CisuLiBub25jZTogRzZGMzRuCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCit1bnBhY2tpbmcgc2luZ2xldG9uIHR1cGxlcyBpbiBsaXN0IGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbnMKKyh4IGZvciB4LCBpbiAuLi4gKSB3b3JrcyBhZ2Fpbi4gIEZpeGluZyB0aGlzIHByb2JsZW0gcmVxdWlyZWQgY2hhbmdpbmcgdGhlCisucHljIG1hZ2ljIG51bWJlci4gIFRoaXMgbWVhbnMgdGhhdCAucHljIGZpbGVzIGdlbmVyYXRlZCBiZWZvcmUgMi41YzIgd2lsbAorYmUgcmVnZW5lcmF0ZWQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjY2NAorLi4gbm9uY2U6IFIzYlpBUAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworYGB3aXRoYGAgYW5kIGBgYXNgYCBhcmUgbm93IGtleXdvcmRzLgorCisuLgorCisuLiBicG86IDE2NjQ5NjYKKy4uIGRhdGU6IDY2NjMKKy4uIG5vbmNlOiB3VTJhdkcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBjcmFzaCBpbiBleGVjIGlmIFVuaWNvZGUgZmlsZW5hbWUgY2FuJ3QgYmUgZGVjb2RlZC4KKworLi4KKworLi4gYnBvOiAxNTM3CisuLiBkYXRlOiA2NjYyCisuLiBub25jZTogUXQ5Q1FBCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitDaGFuZ2VkIEdlbmVyYXRvckV4aXQncyBiYXNlIGNsYXNzIGZyb20gRXhjZXB0aW9uIHRvIEJhc2VFeGNlcHRpb24uCisKKy4uCisKKy4uIGJwbzogMTcwMzQ0OAorLi4gZGF0ZTogNjY2MQorLi4gbm9uY2U6IGRBY1hKVAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQSBqb2luZWQgdGhyZWFkIGNvdWxkIHNob3cgdXAgaW4gdGhlIHRocmVhZGluZy5lbnVtZXJhdGUoKSBsaXN0IGFmdGVyIHRoZQoram9pbigpIGZvciBhIGJyaWVmIHBlcmlvZCB1bnRpbCBpdCBhY3R1YWxseSBleGl0ZWQuCisKKy4uCisKKy4uIGJwbzogMjI3NAorLi4gZGF0ZTogNjY2MAorLi4gbm9uY2U6IENPSEZ6TQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgaGVhcHEuaGVhcHB1c2hwb3AoKS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NjU5CisuLiBub25jZTogZlFBemI5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBpbnNwZWN0LmlzYWJzdHJhY3Qob2JqZWN0KSB0byBmaXggYnVnICMyMjIzCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjY1OAorLi4gbm9uY2U6IEpYdVg4agorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYSBfX2Zvcm1hdF9fIG1ldGhvZCB0byBEZWNpbWFsLCB0byBzdXBwb3J0IFBFUCAzMTAxLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY2NTcKKy4uIG5vbmNlOiBvZmhpRzEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGEgdGltaW5nIHBhcmFtZXRlciB3aGVuIHVzaW5nIHRyYWNlLlRyYWNlIHRvIHByaW50IG91dCB0aW1lc3RhbXBzLgorCisuLgorCisuLiBicG86IDE2MjcKKy4uIGRhdGU6IDY2NTYKKy4uIG5vbmNlOiAtNWdYTlQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaHR0cGxpYiBub3cgaWdub3JlcyBuZWdhdGl2ZSBDb250ZW50LUxlbmd0aCBoZWFkZXJzLgorCisuLgorCisuLiBicG86IDkwMDc0NAorLi4gZGF0ZTogNjY1NQorLi4gbm9uY2U6IHM1UkxqYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitJZiBhbiBpbnZhbGlkIGNodW5rZWQtZW5jb2RpbmcgaGVhZGVyIGlzIHNlbnQgYnkgYSBzZXJ2ZXIsIGh0dHBsaWIgd2lsbCBub3cKK3JhaXNlIEluY29tcGxldGVSZWFkIGFuZCBjbG9zZSB0aGUgY29ubmVjdGlvbiBpbnN0ZWFkIG9mIHJhaXNpbmcgVmFsdWVFcnJvci4KKworLi4KKworLi4gYnBvOiAxNDkyCisuLiBkYXRlOiA2NjU0CisuLiBub25jZTogNGJwNXpiCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBjb250ZW50IHR5cGUgb2YgQmFzZUhUVFBTZXJ2ZXIgZXJyb3IgbWVzc2FnZXMgY2FuIG5vdyBiZSBvdmVycmlkZGVuLgorCisuLgorCisuLiBicG86IDE3ODEKKy4uIGRhdGU6IDY2NTMKKy4uIG5vbmNlOiBtX3NuSXAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29uZmlnUGFyc2VyIG5vdyBkb2VzIG5vdCBsZXQgeW91IGFkZCB0aGUgImRlZmF1bHQiIHNlY3Rpb24gKGlnbm9yZS1jYXNlKQorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY2NTIKKy4uIG5vbmNlOiBhNW1USTYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlZCB1c2VzIG9mIGRpY3QuaGFzX2tleSgpIGZyb20gZGlzdHV0aWxzLCBhbmQgdXNlcyBvZiBjYWxsYWJsZSgpIGZyb20KK2NvcHlfcmVnLnB5LCBzbyB0aGUgaW50ZXJwcmV0ZXIgbm93IHN0YXJ0cyB1cCB3aXRob3V0IHdhcm5pbmdzIHdoZW4gJy0zJyBpcworZ2l2ZW4uICBNb3JlIHdvcmsgbGlrZSB0aGlzIG5lZWRzIHRvIGJlIGRvbmUgaW4gdGhlIHJlc3Qgb2YgdGhlIHN0ZGxpYi4KKworLi4KKworLi4gYnBvOiAxOTE2CisuLiBkYXRlOiA2NjUxCisuLiBub25jZTogdzFKaUdNCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FkZGVkIGlzZ2VuZXJhdG9yKCkgYW5kIGlzZ2VuZXJhdG9yZnVuY3Rpb24oKSB0byBpbnNwZWN0LnB5LgorCisuLgorCisuLiBicG86IDEyMjQKKy4uIGRhdGU6IDY2NTAKKy4uIG5vbmNlOiBVTjJTeFgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYmFkIHVybCBwYXJzaW5nIHdoZW4gcGF0aCBiZWdpbnMgd2l0aCBkb3VibGUgc2xhc2guCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjY0OQorLi4gbm9uY2U6IFQ5WTRrMgorLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXMgaW5zdGFuY2VzIHRoYXQgYXJlIG5vdCBvciBkbyBub3QgY29udGFpbiBwb2ludGVycyBjYW4gbm93IGJlIHBpY2tsZWQuCisKKy4uCisKKy4uIGJwbzogMTk2NgorLi4gZGF0ZTogNjY0OAorLi4gbm9uY2U6IDh2aXVldQorLi4gc2VjdGlvbjogTGlicmFyeQorCitCcmVhayBpbmZpbml0ZSBsb29wIGluIGh0dHBsaWIgd2hlbiB0aGUgc2VydmVycyBpbXBsZW1lbnRzIHRoZSBjaHVua2VkCitlbmNvZGluZyBpbmNvcnJlY3RseS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NjQ3CisuLiBub25jZTogcDZhNmpKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbmFtZSByYXRpb25hbC5weSB0byBmcmFjdGlvbnMucHkgYW5kIHRoZSByYXRpb25hbC5SYXRpb25hbCBjbGFzcyB0bworZnJhY3Rpb25zLkZyYWN0aW9uLCB0byBhdm9pZCB0aGUgbmFtZSBjbGFzaCB3aXRoIHRoZSBhYnN0cmFjdCBiYXNlIGNsYXNzCitudW1iZXJzLlJhdGlvbmFsLiAgU2VlIGRpc2N1c3Npb24gaW4gaXNzdWUgIzE2ODIuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjY0NgorLi4gbm9uY2U6IEtxZm1PNQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgcGlja2xldG9vbHMgbW9kdWxlIG5vdyBwcm92aWRlcyBhbiBvcHRpbWl6ZSgpIGZ1bmN0aW9uIHRoYXQgZWxpbWluYXRlcwordW51c2VkIFBVVCBvcGNvZGVzIGZyb20gYSBwaWNrbGUgc3RyaW5nLgorCisuLgorCisuLiBicG86IDIwMjEKKy4uIGRhdGU6IDY2NDUKKy4uIG5vbmNlOiBqaHJJM0YKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWxsb3cgdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlIGFuZCBTcG9vbGVkVGVtcG9yYXJ5RmlsZSB0byBiZSB1c2VkIGluCit3aXRoIHN0YXRlbWVudHMgYnkgY29ycmVjdGx5IHN1cHBvcnRpbmcgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbC4KKworLi4KKworLi4gYnBvOiAxOTc5CisuLiBkYXRlOiA2NjQ0CisuLiBub25jZTogSmlfb0htCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCByaWNoIGNvbXBhcmlzb25zIHRvIERlY2ltYWwsIGFuZCBtYWtlIERlY2ltYWwgY29tcGFyaXNvbnMgaW52b2x2aW5nIGEKK05hTiBmb2xsb3cgdGhlIElFRUUgNzU0IHN0YW5kYXJkLgorCisuLgorCisuLiBicG86IDIwMDQKKy4uIGRhdGU6IDY2NDMKKy4uIG5vbmNlOiBKSjBzeGYKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGFyZmlsZS5weTogVXNlIG1vZGUgMDcwMCBmb3IgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIGFuZCBkZWZhdWx0IHBlcm1pc3Npb25zCitmb3IgbWlzc2luZyBkaXJlY3Rvcmllcy4KKworLi4KKworLi4gYnBvOiAxNzUwMDYKKy4uIGRhdGU6IDY2NDIKKy4uIG5vbmNlOiAxeVFwVi0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGRlYnVnZ2VyIHVzZWQgdG8gc2tpcCB0aGUgY29uZGl0aW9uIG9mIGEgIndoaWxlIiBzdGF0ZW1lbnQgYWZ0ZXIgdGhlCitmaXJzdCBpdGVyYXRpb24uIE5vdyBpdCBjb3JyZWN0bHkgc3RlcHMgb24gdGhlIGV4cHJlc3Npb24sIGFuZCBicmVha3BvaW50cworb24gdGhlICJ3aGlsZSIgc3RhdGVtZW50IGFyZSBob25vcmVkIG9uIGVhY2ggbG9vcC4KKworLi4KKworLi4gYnBvOiAxNzY1MTQwCisuLiBkYXRlOiA2NjQxCisuLiBub25jZTogOWh0SWhLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FkZCBhbiBvcHRpb25hbCBkZWxheSBhcmd1bWVudCB0byBGaWxlSGFuZGxlciBhbmQgaXRzIHN1YmNsYXNzZXMuIERlZmF1bHRzCit0byBmYWxzZSAoZXhpc3RpbmcgYmVoYXZpb3VyKSwgYnV0IGlmIHRydWUsIGRlZmVycyBvcGVuaW5nIHRoZSBmaWxlIHVudGlsCit0aGUgZmlyc3QgY2FsbCB0byBlbWl0KCkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjY0MAorLi4gbm9uY2U6IGtXQWdWbQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgcHByaW50IG1vZHVsZSBub3cgc3VwcG9ydHMgc2V0cyBhbmQgZnJvemVuc2V0cy4KKworLi4KKworLi4gYnBvOiAxMjIxNTk4CisuLiBkYXRlOiA2NjM5CisuLiBub25jZTogVHYzUThECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FkZCBvcHRpb25hbCBjYWxsYmFja3MgdG8gZnRwbGliLkZUUCdzIHN0b3JiaW5hcnkoKSBhbmQgc3RvcmxpbmVzKCkgbWV0aG9kcy4KKyhDb250cmlidXRlZCBieSBQaGlsIFNjaHdhcnR6KQorCisuLgorCisuLiBicG86IDE3MTUKKy4uIGRhdGU6IDY2MzgKKy4uIG5vbmNlOiBKaWVSTFQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaW5jbHVkZSBzdWItZXh0ZW5zaW9uIG1vZHVsZXMgaW4gcHlkb2MncyB0ZXh0IG91dHB1dC4KKworLi4KKworLi4gYnBvOiAxODM2CisuLiBkYXRlOiA2NjM3CisuLiBub25jZTogZHZXaUFXCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeCBhbiBvZmYtYnktb25lIGJ1ZyBpbiBUaW1lZFJvdGF0aW5nSGFuZGxlcidzIHJvbGxvdmVyIHRpbWUgY2FsY3VsYXRpb24uCisKKy4uCisKKy4uIGJwbzogMTAyMQorLi4gZGF0ZTogNjYzNgorLi4gbm9uY2U6IG9KMkVmZworLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggYSBidWcgdG8gYWxsb3cgYmFzaWNDb25maWcgdG8gYWNjZXB0IE5PVFNFVCBhcyBhIGxldmVsLgorCisuLgorCisuLiBicG86IDkzMjU2MworLi4gZGF0ZTogNjYzNQorLi4gbm9uY2U6IEt6RGo1MgorLi4gc2VjdGlvbjogTGlicmFyeQorCithZGQgTG9nZ2VyQWRhcHRlciBjb252ZW5pZW5jZSBjbGFzcyB0byBtYWtlIGl0IGVhc2llciB0byBhZGQgY29udGV4dHVhbAoraW5mb3JtYXRpb24gaW4gbG9nZ2luZyBvdXRwdXQuCisKKy4uCisKKy4uIGJwbzogMTc2MDU1NgorLi4gZGF0ZTogNjYzNAorLi4gbm9uY2U6IFRKa19EdQorLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggYSBidWcgdG8gYXZvaWQgRmlsZUhhbmRsZXIgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIGluIGZsdXNoKCkuCisKKy4uCisKKy4uIGJwbzogMTUzMDk1OQorLi4gZGF0ZTogNjYzMworLi4gbm9uY2U6IEZwTkh4cQorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMnIGJ1aWxkIGNvbW1hbmQgbm93IHVzZXMgZGlmZmVyZW50IGJ1aWxkIGRpcmVjdG9yeSB3aGVuIGJ1aWxkaW5nCitleHRlbnNpb24gbW9kdWxlcyBhZ2FpbnN0IHZlcnNpb25zIG9mIFB5dGhvbiBjb21waWxlZCB3aXRoCitgYC0td2l0aC1weWRlYnVnYGAuCisKKy4uCisKKy4uIGJwbzogMTU1NTUwMQorLi4gZGF0ZTogNjYzMgorLi4gbm9uY2U6IFpXTVl6SworLi4gc2VjdGlvbjogTGlicmFyeQorCittb3ZlIHBsaXN0bGliIGZyb20gcGxhdC1tYWMgZGlyZWN0b3J5IHRvIGdlbmVyYWwgbGlicmFyeS4KKworLi4KKworLi4gYnBvOiAxMjY5CisuLiBkYXRlOiA2NjMxCisuLiBub25jZTogbVhoQjh5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeCBhIGJ1ZyBpbiBwc3RhdHMuYWRkX2NhbGxlcnMoKSBhbmQgYWRkIGEgdW5pdCB0ZXN0IGZpbGUgZm9yIHBzdGF0cy4KKworLi4KKworLi4gYnBvOiAxNjY5CisuLiBkYXRlOiA2NjMwCisuLiBub25jZTogd1liNGtrCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Rvbid0IGFsbG93IHNodXRpbC5ybXRyZWUoKSB0byBiZSBjYWxsZWQgb24gYSBzeW1saW5rIHRvIGEgZGlyZWN0b3J5LgorCisuLgorCisuLiBicG86IDE2NjQ1MjIKKy4uIGRhdGU6IDY2MjkKKy4uIG5vbmNlOiBpS3E0MlAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaW4gdXJsbGliLCBkb24ndCByZWFkIG5vbi1leGlzdGluZyBkaXJlY3RvcmllcyBpbiBmdHAgbW9kZSwgcmV0dXJuaW5nIGEKKzAtYnl0ZSBmaWxlIC0tIHJhaXNlIGFuIElPRXJyb3IgaW5zdGVhZC4KKworLi4KKworLi4gYnBvOiA4NTYwNDcKKy4uIGRhdGU6IDY2MjgKKy4uIG5vbmNlOiB1OExjTXoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcmVzcGVjdCB0aGUgYGBub19wcm94eWBgIGVudmlyb25tZW50IHZhcmlhYmxlIHdoZW4gdXNpbmcgdGhlIGBgaHR0cF9wcm94eWBgCitldGMuIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB1cmxsaWIuCisKKy4uCisKKy4uIGJwbzogMTE3ODE0MQorLi4gZGF0ZTogNjYyNworLi4gbm9uY2U6IGtPdk5PSAorLi4gc2VjdGlvbjogTGlicmFyeQorCithZGQgYSBnZXRjb2RlKCkgbWV0aG9kIHRvIHRoZSBhZGRpbmZvdXJscyB0aGF0IHVybGxpYi5vcGVuKCkgcmV0dXJucyBzbyB0aGF0Cit5b3UgY2FuIHJldHJpZXZlIHRoZSBIVFRQIHN0YXR1cyBjb2RlLgorCisuLgorCisuLiBicG86IDEwMDMKKy4uIGRhdGU6IDY2MjYKKy4uIG5vbmNlOiBXd3lPbGIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHppcGZpbGUgZGVjcnlwdGlvbiBjaGVjaywgaXQgd291bGQgZmFpbCB6aXAgZmlsZXMgd2l0aCBleHRlbmRlZCBsb2NhbAoraGVhZGVycy4KKworLi4KKworLi4gYnBvOiAxMTg5MjE2CisuLiBkYXRlOiA2NjI1CisuLiBub25jZTogdXg3dWpvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0aGUgemlwZmlsZSBtb2R1bGUgdG8gd29yayBvbiBhcmNoaXZlcyB3aXRoIGhlYWRlcnMgcGFzdCB0aGUgMioqMzEgYnl0ZQorYm91bmRhcnkuCisKKy4uCisKKy4uIGJwbzogMTMzNgorLi4gZGF0ZTogNjYyNAorLi4gbm9uY2U6IHI0WmRBUworLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggYSByYWNlIGNvbmRpdGlvbiBpbiBzdWJwcm9jZXNzLlBvcGVuIGlmIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBraWNrZWQgaW4KK2F0IHRoZSB3cm9uZyB0aW1lIHRoYXQgd291bGQgY2F1c2UgdGhlIHByb2Nlc3MgdG8gaGFuZyB3aGVuIHRoZSBjaGlsZCB3cm90ZQordG8gc3RkZXJyLgorCisuLgorCisuLiBicG86IDExNDYKKy4uIGRhdGU6IDY2MjMKKy4uIG5vbmNlOiAzRmc4WTQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4IGhvdyB0ZXh0d3JhcCBicmVha3MgYSBsb25nIHdvcmQgdGhhdCB3b3VsZCBzdGFydCBpbiB0aGUgbGFzdCBjb2x1bW4gb2YgYQorbGluZS4KKworLi4KKworLi4gYnBvOiAxNjkzMTQ5CisuLiBkYXRlOiA2NjIyCisuLiBub25jZTogVURCVDVPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3RyYWNlLnB5IC0taWdub3JlLW1vZHVsZSAtIGFjY2VwdCBtdWx0aXBsZSBjb21tYS1zZXBhcmF0ZWQgbW9kdWxlcyB0byBiZQorZ2l2ZW4uCisKKy4uCisKKy4uIGJwbzogMTgyMgorLi4gZGF0ZTogNjYyMQorLi4gbm9uY2U6IHAtQUJjNgorLi4gc2VjdGlvbjogTGlicmFyeQorCitNSU1FTXVsdGlwYXJ0LmlzX211bHRpcGFydCgpIGJlaGF2ZXMgY29ycmVjdGx5IGZvciBhIGp1c3QtY3JlYXRlZCAoYW5kCitlbXB0eSkgaW5zdGFuY2UuIFRoYW5rcyBKb25hdGhhbiBTaGFyZS4KKworLi4KKworLi4gYnBvOiAxODYxCisuLiBkYXRlOiA2NjIwCisuLiBub25jZTogWUszOVB3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIGFuIGF0dHJpYnV0ZSB0byB0aGUgc2NoZWQgbW9kdWxlIHdoaWNoIHJldHVybnMgYW4gb3JkZXJlZCBsaXN0IG9mCit1cGNvbWluZyBldmVudHMgKGRpc3BsYXllZCBhcyBuYW1lZCB0dXBsZXMpLgorCisuLgorCisuLiBicG86IDE4MzcKKy4uIGRhdGU6IDY2MTkKKy4uIG5vbmNlOiBsdFpmQ1cKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHF1ZXVlIG1vZHVsZSBub3cgYWxzbyBzdXBwb3J0cyBhIExJRk8gcXVldWUgYW5kIGEgcHJpb3JpdHkgcXVldWUuCisKKy4uCisKKy4uIGJwbzogMTA0ODgyMAorLi4gZGF0ZTogNjYxOAorLi4gbm9uY2U6IGhLZGRQUworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgaW5zZXJ0LW1vZGUgZWRpdGluZyB0byBjdXJzZXMudGV4dHBhZC5UZXh0Ym94IChwYXRjaCBieSBTdGVmYW4gV2VocikuCitBbHNvLCBmaXggYW4gb2ZmLWJ5LW9uZSBidWcgaW4gVGV4dGJveC5nYXRoZXIoKS4KKworLi4KKworLi4gYnBvOiAxODMxCisuLiBkYXRlOiA2NjE3CisuLiBub25jZTogbkV5OHdxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2N0eXBlcyBub3cgcmFpc2VzIGEgVHlwZUVycm9yIGlmIGNvbmZsaWN0aW5nIHBvc2l0aW9uYWwgYW5kIG5hbWVkIGFyZ3VtZW50cworYXJlIHBhc3NlZCB0byBhIFN0cnVjdHVyZSBvciBVbmlvbiBpbml0aWFsaXplci4gV2hlbiB0b28gbWFueSBwb3NpdGlvbmFsCithcmd1bWVudHMgYXJlIHBhc3NlZCwgYWxzbyBhIFR5cGVFcnJvciBpcyByYWlzZWQgaW5zdGVhZCBvZiBhIFZhbHVlRXJyb3IuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjYxNgorLi4gbm9uY2U6IDJfWGx2WAorLi4gc2VjdGlvbjogTGlicmFyeQorCitDb252ZXJ0IHRoZSBpbnRlcm5hbCBjdHlwZXMgYXJyYXkgdHlwZSBjYWNoZSB0byBhIFdlYWtWYWx1ZURpY3Qgc28gdGhhdAorYXJyYXkgdHlwZXMgZG8gbm90IGxpdmUgbG9uZ2VyIHRoYW4gbmVlZGVkLgorCisuLgorCisuLiBicG86IDE3ODYKKy4uIGRhdGU6IDY2MTUKKy4uIG5vbmNlOiBnbHpTZkUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcGRiIHNob3VsZCB1c2UgaXRzIG93biBzdGRpbi9zdGRvdXQgYXJvdW5kIGFuIGV4ZWMgY2FsbCBhbmQgd2hlbiBjcmVhdGluZyBhCityZWN1cnNpdmUgaW5zdGFuY2UuCisKKy4uCisKKy4uIGJwbzogMTY5ODM5OAorLi4gZGF0ZTogNjYxNAorLi4gbm9uY2U6IHl4ZmgxUgorLi4gc2VjdGlvbjogTGlicmFyeQorCitaaXBGaWxlLnByaW50ZGlyKCkgY3Jhc2hlZCBiZWNhdXNlIHRoZSBmb3JtYXQgc3RyaW5nIGV4cGVjdGVkIGEgdHVwbGUgdHlwZQorb2YgbGVuZ3RoIHNpeCBpbnN0ZWFkIG9mIHRpbWUuc3RydWN0X3RpbWUgb2JqZWN0LgorCisuLgorCisuLiBicG86IDE3ODAKKy4uIGRhdGU6IDY2MTMKKy4uIG5vbmNlOiBQRXFmZ3gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIERlY2ltYWwgY29uc3RydWN0b3Igbm93IGFjY2VwdHMgYXJiaXRyYXJ5IGxlYWRpbmcgYW5kIHRyYWlsaW5nCit3aGl0ZXNwYWNlIHdoZW4gY29uc3RydWN0aW5nIGZyb20gYSBzdHJpbmcuIENvbnRleHQuY3JlYXRlX2RlY2ltYWwgbm8gbG9uZ2VyCithY2NlcHRzIHRyYWlsaW5nIG5ld2xpbmVzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY2MTIKKy4uIG5vbmNlOiBlNU1ObmEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRGVjaW1hbC5hc190dXBsZSgpLCBkaWZmbGliLmZpbmRfbG9uZ2VzdF9tYXRjaCgpIGFuZCBpbnNwZWN0IGZ1bmN0aW9ucyB0aGF0CityZXR1cm5lZCBhIHR1cGxlIG5vdyByZXR1cm4gYSBuYW1lZCB0dXBsZS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NjExCisuLiBub25jZTogcjhfa1gtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0RvY3Rlc3Qgbm93IHJldHVybnMgcmVzdWx0cyBhcyBhIG5hbWVkIHR1cGxlIGZvciByZWFkYWJpbGl0eTogICAgICgwLCA3KSAtLT4KK1Rlc3RSZXN1bHRzKGZhaWxlZD0wLCBhdHRlbXB0ZWQ9NykKKworLi4KKworLi4gYnBvOiA4NDYzODgKKy4uIGRhdGU6IDY2MTAKKy4uIG5vbmNlOiBoMkFtT1QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcmUubWF0Y2ggaXMgaW50ZXJydXB0aWJsZSBub3csIHdoaWNoIGlzIHBhcnRpY3VsYXJseSBnb29kIGZvciBsb25nIHJlZ3VsYXIKK2V4cHJlc3Npb24gbWF0Y2hlcy4KKworLi4KKworLi4gYnBvOiAxMTM3CisuLiBkYXRlOiA2NjA5CisuLiBub25jZTogVVNzMk5PCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FsbG93IHNldHRpbmcgYnVmZmVyX3NpemUgYXR0cmlidXRlIG9uIHB5ZXhwYXQgUGFyc2VyIG9iamVjdHMgdG8gc2V0IHRoZQorY2hhcmFjdGVyIGRhdGEgYnVmZmVyIHNpemUuCisKKy4uCisKKy4uIGJwbzogMTc1NworLi4gZGF0ZTogNjYwOAorLi4gbm9uY2U6IFpYb25wRworLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgaGFzaCBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgbm8gbG9uZ2VyIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IGNvbnRleHQuCisKKy4uCisKKy4uIGJwbzogNDY3OTI0CisuLiBkYXRlOiA2NjA3CisuLiBub25jZTogVnF6QlJ6CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FkZCBaaXBGaWxlLmV4dHJhY3QoKSBhbmQgWmlwRmlsZS5leHRyYWN0YWxsKCkgaW4gdGhlIHppcGZpbGUgbW9kdWxlLgorCisuLgorCisuLiBicG86IDE2NDYKKy4uIGRhdGU6IDY2MDYKKy4uIG5vbmNlOiAwU2h2djYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBzb2NrZXQgc3VwcG9ydCB0aGUgVElQQyBwcm90b2NvbC4KKworLi4KKworLi4gYnBvOiAxNzQyCisuLiBkYXRlOiA2NjA1CisuLiBub25jZTogdmRoNW1oCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3JldHVybiBvcy5jdXJkaXIgZnJvbSBvcy5wYXRoLnJlbHBhdGgoKSBpZiBib3RoIGFyZ3VtZW50cyBhcmUgZXF1YWwgaW5zdGVhZAorb2YgcmFpc2luZyBhbiBleGNlcHRpb24uCisKKy4uCisKKy4uIGJwbzogMTYzNworLi4gZGF0ZTogNjYwNAorLi4gbm9uY2U6IDljay1CRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggdXJscGFyc2UgZm9yIFVSTHMgbGlrZSAnaHR0cDovL3guY29tP2FyZz0vZm9vJy4KKworLi4KKworLi4gYnBvOiAxNjk4CisuLiBkYXRlOiA2NjAzCisuLiBub25jZTogS1RDMEVQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FsbG93ICdAJyBpbiB1c2VybmFtZSBwYXJzZWQgYnkgdXJscGFyc2UucHkuCisKKy4uCisKKy4uIGJwbzogMTczNQorLi4gZGF0ZTogNjYwMgorLi4gbm9uY2U6IFhnZi1fbgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUYXJGaWxlLmV4dHJhY3RhbGwoKSBub3cgY29ycmVjdGx5IHNldHMgZGlyZWN0b3J5IHBlcm1pc3Npb25zIGFuZCB0aW1lcy4KKworLi4KKworLi4gYnBvOiAxNzEzCisuLiBkYXRlOiA2NjAxCisuLiBub25jZTogU080ZzdLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3Bvc2l4cGF0aC5pc21vdW50KCkgY2xhaW1zIHN5bWxpbmsgdG8gYSBtb3VudHBvaW50IGlzIGEgbW91bnRwb2ludC4KKworLi4KKworLi4gYnBvOiAxNjg3CisuLiBkYXRlOiA2NjAwCisuLiBub25jZTogcW1tUTM5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Z4ZWQgcGxpc3RsaWIucHkgcmVzdHJpY3RzIDxpbnRlZ2VyPiB0byBQeXRob24gaW50IHdoZW4gd3JpdGluZworCisuLgorCisuLiBicG86IDE3MDAKKy4uIGRhdGU6IDY1OTkKKy4uIG5vbmNlOiB1MFN0RlAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVndWxhciBleHByZXNzaW9uIGlubGluZSBmbGFncyBpbmNvcnJlY3RseSBoYW5kbGUgY2VydGFpbiB1bmljb2RlCitjaGFyYWN0ZXJzLgorCisuLgorCisuLiBicG86IDE2ODkKKy4uIGRhdGU6IDY1OTgKKy4uIG5vbmNlOiBkeDBYQU8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworUEVQIDMxNDEsIG51bWVyaWMgYWJzdHJhY3QgYmFzZSBjbGFzc2VzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1OTcKKy4uIG5vbmNlOiBCT1Q2QU4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGsgaXNzdWUgIzE4NTE1MjY6IFJldHVybiByZXN1bHRzIGZyb20gUHl0aG9uIGNhbGxiYWNrcyB0byBUY2wgYXMgVGNsCitvYmplY3RzLgorCisuLgorCisuLiBicG86IDE2NDIKKy4uIGRhdGU6IDY1OTYKKy4uIG5vbmNlOiBkb0dnMUkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHNlZ2ZhdWx0IGluIGN0eXBlcyB3aGVuIHRyeWluZyB0byBkZWxldGUgYXR0cmlidXRlcy4KKworLi4KKworLi4gYnBvOiAxNzI3NzgwCisuLiBkYXRlOiA2NTk1CisuLiBub25jZTogWDBVSmJmCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1N1cHBvcnQgbG9hZGluZyBwaWNrbGVzIG9mIHJhbmRvbS5SYW5kb20gb2JqZWN0cyBjcmVhdGVkIG9uIDMyLWJpdCBzeXN0ZW1zCitvbiA2NC1iaXQgc3lzdGVtcywgYW5kIHZpY2UgdmVyc2EuIEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhlIGNoYW5nZSwgUmFuZG9tCitwaWNrbGVzIGNyZWF0ZWQgYnkgUHl0aG9uIDIuNiBjYW5ub3QgYmUgbG9hZGVkIGluIFB5dGhvbiAyLjUuCisKKy4uCisKKy4uIGJwbzogMTQ1NQorLi4gZGF0ZTogNjU5NAorLi4gbm9uY2U6IHFlclBPMQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZGlzdHV0aWxzIHBhY2thZ2Ugbm93IHN1cHBvcnRzIFZTIDIwMDUgYW5kIFZTIDIwMDggZm9yIGJvdGggdGhlCittc3ZjY29tcGlsZXIgYW5kIGN5Z3dpbmNvbXBpbGVyLgorCisuLgorCisuLiBicG86IDE1MzEKKy4uIGRhdGU6IDY1OTMKKy4uIG5vbmNlOiBoTThjU1YKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGFyZmlsZS5weTogUmVhZCBmaWxlb2JqIGZyb20gdGhlIGN1cnJlbnQgb2Zmc2V0LCBkbyBub3Qgc2VlayB0byB0aGUgc3RhcnQuCisKKy4uCisKKy4uIGJwbzogMTUzNAorLi4gZGF0ZTogNjU5MgorLi4gbm9uY2U6IDJTX3lmcAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBhIGRpY3Rpb25hcnkgc3lzLmZsb2F0X2luZm8gd2l0aCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW50ZXJuYWwKK2Zsb2F0aW5nIHBvaW50IHR5cGUgdG8gdGhlIHN5cyBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMTQyOTgxOAorLi4gZGF0ZTogNjU5MQorLi4gbm9uY2U6IGY3cTlfLQorLi4gc2VjdGlvbjogTGlicmFyeQorCitwYXRjaCBmb3IgdHJhY2UgYW5kIGRvY3Rlc3QgbW9kdWxlcyBzbyB0aGV5IHBsYXkgbmljZWx5IHRvZ2V0aGVyLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1OTAKKy4uIG5vbmNlOiB5ZFVKNDUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZG9jdGVzdCBtYWRlIGEgYmFkIGFzc3VtcHRpb24gdGhhdCBhIHBhY2thZ2UncyBfX2xvYWRlcl9fLmdldF9kYXRhKCkgbWV0aG9kCit1c2VkIHVuaXZlcnNhbCBuZXdsaW5lcy4KKworLi4KKworLi4gYnBvOiAxNzA1MTcwCisuLiBkYXRlOiA2NTg5CisuLiBub25jZTogMGlOZGF0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2NvbnRleHRsaWIuY29udGV4dG1hbmFnZXIgd2FzIHN0aWxsIHN3YWxsb3dpbmcgU3RvcEl0ZXJhdGlvbiBpbiBzb21lIGNhc2VzLgorVGhpcyBzaG91bGQgbm8gbG9uZ2VyIGhhcHBlbi4KKworLi4KKworLi4gYnBvOiAxMjkyCisuLiBkYXRlOiA2NTg4CisuLiBub25jZToga1czWXVSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK09uIGFscGhhLCBhcm0sIHBwYywgYW5kIHMzOTAgbGludXggc3lzdGVtcyB0aGUgLS13aXRoLXN5c3RlbS1mZmkgY29uZmlndXJlCitvcHRpb24gZGVmYXVsdHMgdG8gInllcyIuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU4NworLi4gbm9uY2U6IG5HVXpCWQorLi4gc2VjdGlvbjogTGlicmFyeQorCitJTiBtb2R1bGUgZm9yIEZyZWVCU0QgOCBpcyBhZGRlZCBhbmQgcHJlZXhpc3RpbmcgRnJlZUJTRCA2IGFuZCA3IGZpbGVzIGFyZQordXBkYXRlZC4KKworLi4KKworLi4gYnBvOiAxMTgxCisuLiBkYXRlOiA2NTg2CisuLiBub25jZTogLWVKREJfCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3Vuc2V0ZW52KCkgaXMgbm93IGNhbGxlZCB3aGVuIHRoZSBvcy5lbnZpcm9uLnBvcCgpIGFuZCBvcy5lbnZpcm9uLmNsZWFyKCkKK21ldGhvZHMgYXJlIHVzZWQuIChTZWUgYWxzbzogYnBvLTEyODcpCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU4NQorLi4gbm9uY2U6IDc2cVJqMAorLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXMgd2lsbCBub3cgd29yayBjb3JyZWN0bHkgb24gMzItYml0IHN5c3RlbXMgd2hlbiBQeXRob24gaXMgY29uZmlndXJlZAord2l0aCAtLXdpdGgtc3lzdGVtLWZmaS4KKworLi4KKworLi4gYnBvOiAxMjAzCisuLiBkYXRlOiA2NTg0CisuLiBub25jZTogTVBvaEZMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2N0eXBlcyBub3cgZG9lcyB3b3JrIG9uIE9TIFggd2hlbiBQeXRob24gaXMgYnVpbHQgd2l0aAorYGAtLWRpc2FibGUtdG9vbGJveC1nbHVlYGAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU4MworLi4gbm9uY2U6IDRnazlqSworLi4gc2VjdGlvbjogTGlicmFyeQorCitjb2xsZWN0aW9ucy5kZXF1ZSgpIG5vdyBzdXBwb3J0cyBhICJtYXhsZW4iIGFyZ3VtZW50LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1ODIKKy4uIG5vbmNlOiBLRXpicXUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaXRlcnRvb2xzLmNvdW50KCkgaXMgbm8gbG9uZ2VyIGJvdW5kZWQgdG8gTE9OR19NQVguICBGb3JtZXJseSwgaXQgcmFpc2VkIGFuCitPdmVyZmxvd0Vycm9yLiAgTm93LCBhdXRvbWF0aWNhbGx5IHNoaWZ0cyBmcm9tIGludHMgdG8gbG9uZ3MuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU4MQorLi4gbm9uY2U6IDhPYUthYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBpdGVydG9vbHMucHJvZHVjdCgpIHdoaWNoIGZvcm1zIHRoZSBDYXJ0ZXNpYW4gcHJvZHVjdCBvZiB0aGUgaW5wdXQKK2l0ZXJhYmxlcy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTgwCisuLiBub25jZTogdzJoeHFnCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIGl0ZXJ0b29scy5jb21iaW5hdGlvbnMoKSBhbmQgaXRlcnRvb2xzLnBlcm11dGF0aW9ucygpLgorCisuLgorCisuLiBicG86IDE1NDE0NjMKKy4uIGRhdGU6IDY1NzkKKy4uIG5vbmNlOiB4R25JX1oKKy4uIHNlY3Rpb246IExpYnJhcnkKKworb3B0aW1pemUgcGVyZm9ybWFuY2Ugb2YgY2dpLkZpZWxkU3RvcmFnZSBvcGVyYXRpb25zLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1NzgKKy4uIG5vbmNlOiBvSjNlU0MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRGVjaW1hbCBpcyBmdWxseSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgRGVjaW1hbCBTcGVjaWZpY2F0aW9uICh2MS42NikuCisKKy4uCisKKy4uIGJwbzogMTE1MworLi4gZGF0ZTogNjU3NworLi4gbm9uY2U6IG94c01aLQorLi4gc2VjdGlvbjogTGlicmFyeQorCityZXByLnJlcHIoKSBub3cgZG9lc24ndCByZXF1aXJlIHNldCBhbmQgZGljdGlvbmFyeSBpdGVtcyB0byBiZSBvcmRlcmFibGUgdG8KK3Byb3Blcmx5IHJlcHJlc2VudCB0aGVtLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1NzYKKy4uIG5vbmNlOiAzTnhIZE0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworQSAnY19sb25nZG91YmxlJyB0eXBlIHdhcyBhZGRlZCB0byB0aGUgY3R5cGVzIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAxNzA5NTk5CisuLiBkYXRlOiA2NTc1CisuLiBub25jZTogWkluUW8xCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1J1biB0ZXN0XzE1NjUxNTAgb25seSBpZiB0aGUgZmlsZSBzeXN0ZW0gaXMgTlRGUy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTc0CisuLiBub25jZTogZFhQSDd3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1doZW4gZW5jb3VudGVyaW5nIGEgcGFzc3dvcmQtcHJvdGVjdGVkIHJvYm90cy50eHQgZmlsZSB0aGUgUm9ib3RGaWxlUGFyc2VyCitubyBsb25nZXIgcHJvbXB0cyBpbnRlcmFjdGl2ZWx5IGZvciBhIHVzZXJuYW1lIGFuZCBwYXNzd29yZCAoYnVnIDgxMzk4NikuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU3MworLi4gbm9uY2U6IC1qWGRCeAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUYXJGaWxlLl9faW5pdF9fKCkgbm8gbG9uZ2VyIGZhaWxzIGlmIG5vIG5hbWUgYXJndW1lbnQgaXMgcGFzc2VkIGFuZCB0aGUKK2ZpbGVvYmogYXJndW1lbnQgaGFzIG5vIHVzYWJsZSBuYW1lIGF0dHJpYnV0ZSAoZS5nLiBTdHJpbmdJTykuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU3MgorLi4gbm9uY2U6IE96dkJmNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZnVuY3Rvb2xzIG1vZHVsZSBub3cgcHJvdmlkZXMgJ3JlZHVjZScsIGZvciBmb3J3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAorUHl0aG9uIDMwMDAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU3MQorLi4gbm9uY2U6IE5CdHR4WQorLi4gc2VjdGlvbjogTGlicmFyeQorCitTZXJ2ZXItc2lkZSBTU0wgc3VwcG9ydCBhbmQgY2VydCB2ZXJpZmljYXRpb24gYWRkZWQsIGJ5IEJpbGwgSmFuc3Nlbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTcwCisuLiBub25jZTogZktTS3I3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3NvY2tldC5zc2wgZGVwcmVjYXRlZDsgdXNlIG5ldyBzc2wgbW9kdWxlIGluc3RlYWQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU2OQorLi4gbm9uY2U6IHo2NjNRbAorLi4gc2VjdGlvbjogTGlicmFyeQorCit1dWlkIGNyZWF0aW9uIGlzIG5vdyB0aHJlYWRzYWZlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1NjgKKy4uIG5vbmNlOiBOR2NfdlMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRVVDLUtSIGNvZGVjIG5vdyBoYW5kbGVzIHRoZSBjaGVvdC1nYS1rZXV0IGNvbXBvc2VkIG1ha2UtdXAgaGFuZ3VsCitzeWxsYWJsZXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU2NworLi4gbm9uY2U6IGFicHpVeQorLi4gc2VjdGlvbjogTGlicmFyeQorCitHQjE4MDMwIGNvZGVjIG5vdyBjYW4gZW5jb2RlIGFkZGl0aW9uYWwgdHdvLWJ5dGUgY2hhcmFjdGVycyB0aGF0IGFyZSBtaXNzaW5nCitpbiBHQksuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU2NgorLi4gbm9uY2U6IGhvU1dRNQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgbmV3IGNvZGVjcyBmb3IgVVRGLTMyLCBVVEYtMzItTEUgYW5kIFVURi0zMi1CRS4KKworLi4KKworLi4gYnBvOiAxNzA0NzkzCisuLiBkYXRlOiA2NTY1CisuLiBub25jZTogbzZHMkZZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JldHVybiBVVEYtMTYgcGFpciBpZiB1bmljb2RlZGF0YS5sb29rdXAgY2Fubm90IHJlcHJlc2VudCB0aGUgcmVzdWx0IGluIGEKK3NpbmdsZSBjaGFyYWN0ZXIuCisKKy4uCisKKy4uIGJwbzogOTc4ODMzCisuLiBkYXRlOiA2NTY0CisuLiBub25jZTogbm9zUC1nCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Nsb3NlIGh0dHBzIHNvY2tldHMgYnkgcmVsZWFzaW5nIHRoZSBfc3NsIG9iamVjdC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTYzCisuLiBub25jZTogSGE4X2dhCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NoYW5nZSBsb2NhdGlvbiBvZiB0aGUgcGFja2FnZSBpbmRleCB0byBweXBpLnB5dGhvbi5vcmcvcHlwaQorCisuLgorCisuLiBicG86IDE3MDE0MDkKKy4uIGRhdGU6IDY1NjIKKy4uIG5vbmNlOiB4M1FzMXQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgc2VnZmF1bHQgaW4gcHJpbnRpbmcgY3R5cGVzLmNfY2hhcl9wIGFuZCBjdHlwZXMuY193Y2hhcl9wIHdoZW4gdGhleQorcG9pbnQgdG8gYW4gaW52YWxpZCBsb2NhdGlvbi4gIEFzIGEgc2lkZWVmZmVjdCB0aGUgcmVwcmVzZW50YXRpb24gb2YgdGhlc2UKK2luc3RhbmNlcyBoYXMgY2hhbmdlZC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTYxCisuLiBub25jZTogUUhkLU9WCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3RhcmZpbGUucHk6IEFkZGVkICJleGNsdWRlIiBrZXl3b3JkIGFyZ3VtZW50IHRvIFRhckZpbGUuYWRkKCkuCisKKy4uCisKKy4uIGJwbzogMTczNDcyMworLi4gZGF0ZTogNjU2MAorLi4gbm9uY2U6IHpmZEZyNworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcmVwci5SZXByKCkgc28gaXQgZG9lc24ndCBpZ25vcmUgdGhlIG1heHR1cGxlIGF0dHJpYnV0ZS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTU5CisuLiBub25jZTogQTdLTGZ6CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSB1cmxvcGVuIGZ1bmN0aW9uIG9mIHVybGxpYjIgbm93IGhhcyBhbiBvcHRpb25hbCB0aW1lb3V0IHBhcmFtZXRlciAobm90ZQordGhhdCBpdCBhY3R1YWxseSB3b3JrcyB3aXRoIEhUVFAsIEhUVFBTLCBGVFAgYW5kIEZUUFMgY29ubmVjdGlvbnMpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1NTgKKy4uIG5vbmNlOiBtTXhoby0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gZnRwbGliLCB0aGUgRlRQLm50cmFuc2ZlcmNtZCBtZXRob2QsIHdoZW4gaW4gcGFzc2l2ZSBtb2RlLCBub3cgdXNlcyB0aGUKK3NvY2tldC5jcmVhdGVfY29ubmVjdGlvbiBmdW5jdGlvbiwgdXNpbmcgdGhlIHRpbWVvdXQgc3BlY2lmaWVkIGF0IGNvbm5lY3Rpb24KK3RpbWUuCisKKy4uCisKKy4uIGJwbzogMTcyODQwMworLi4gZGF0ZTogNjU1NworLi4gbm9uY2U6IFN1c1d2ZQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBidWcgdGhhdCBDSktDb2RlY3MgU3RyZWFtUmVhZGVyIGhhbmdzIHdoZW4gaXQgcmVhZHMgYSBmaWxlIHRoYXQgZW5kcword2l0aCBpbmNvbXBsZXRlIHNlcXVlbmNlIGFuZCBzaXplaGludCBhcmd1bWVudCBmb3IgLnJlYWQoKSBpcyBzcGVjaWZpZWQuCisKKy4uCisKKy4uIGJwbzogMTczMDM4OQorLi4gZGF0ZTogNjU1NgorLi4gbm9uY2U6IFdWdkEtOAorLi4gc2VjdGlvbjogTGlicmFyeQorCitDaGFuZ2UgdGltZS5zdHJwdGltZSgpIHRvIHVzZSBgYFxzK2BgIGluc3RlYWQgb2YgYGBccypgYCB3aGVuIG1hdGNoaW5nCitzcGFjZXMgaW4gdGhlIHNwZWNpZmllZCBmb3JtYXQgYXJndW1lbnQuCisKKy4uCisKKy4uIGJwbzogMTY2ODU5NgorLi4gZGF0ZTogNjU1NQorLi4gbm9uY2U6IDVsMlFuaworLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMgbm93IGNvcGllcyBkYXRhIGZpbGVzIGV2ZW4gaWYgcGFja2FnZV9kaXIgaXMgZW1wdHkuIChTZWUgYWxzbzoKK2Jwby0xNzIwODk3KQorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1NTQKKy4uIG5vbmNlOiBqV0RnVjQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc2hhIG5vdyByYWlzZXMgYSBEZXByZWNhdGlvbldhcm5pbmcgdXBvbiBpbXBvcnQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU1MworLi4gbm9uY2U6IGZlcEc5TworLi4gc2VjdGlvbjogTGlicmFyeQorCittZDUgbm93IHJhaXNlcyBhIERlcHJlY2F0aW9uV2FybmluZyB1cG9uIGltcG9ydC4KKworLi4KKworLi4gYnBvOiAxMzg1CisuLiBkYXRlOiA2NTUyCisuLiBub25jZTogcG1zMzRGCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBobWFjIG1vZHVsZSBub3cgY29tcHV0ZXMgdGhlIGNvcnJlY3QgaG1hYyB3aGVuIHVzaW5nIGhhc2hlcyB3aXRoIGEgYmxvY2sKK3NpemUgb3RoZXIgdGhhbiA2NCBieXRlcyAoc3VjaCBhcyBzaGEzODQgYW5kIHNoYTUxMikuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU1MQorLi4gbm9uY2U6IHNvRnBFQgorLi4gc2VjdGlvbjogTGlicmFyeQorCittaW1pZnkgbm93IHJhaXNlcyBhIERlcHJlY2F0aW9uV2FybmluZyB1cG9uIGltcG9ydC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTUwCisuLiBub25jZTogZVNEM0Y3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01pbWVXcml0ZXIgbm93IHJhaXNlcyBhIERlcHJlY2F0aW9uV2FybmluZyB1cG9uIGltcG9ydC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTQ5CisuLiBub25jZTogQ1Fab1JXCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3RhcmZpbGUucHk6IEltcHJvdmVkIHVuaWNvZGUgc3VwcG9ydC4gVW5pY29kZSBpbnB1dCBuYW1lcyBhcmUgbm93IG9mZmljaWFsbHkKK3N1cHBvcnRlZC4gQWRkZWQgImVycm9ycyIgYXJndW1lbnQgdG8gdGhlIFRhckZpbGUgY2xhc3MuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU0OAorLi4gbm9uY2U6IE5MZ2JhTQorLi4gc2VjdGlvbjogTGlicmFyeQorCit1cmxsaWIuZnRwd3JhcHBlciBjbGFzcyBub3cgYWNjZXB0cyBhbiBvcHRpb25hbCB0aW1lb3V0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1NDcKKy4uIG5vbmNlOiBhUm14TEMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc2hsZXguc3BsaXQoKSBub3cgaGFzIGFuIG9wdGlvbmFsICJwb3NpeCIgcGFyYW1ldGVyLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1NDYKKy4uIG5vbmNlOiAxNkhjckUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHBvc2l4ZmlsZSBtb2R1bGUgbm93IHJhaXNlcyBhIERlcHJlY2F0aW9uV2FybmluZy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTQ1CisuLiBub25jZTogb1VZS1VWCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbW92ZSB0aGUgZ29waGVybGliIG1vZHVsZS4gIFRoaXMgYWxzbyBsZWFkcyB0byB0aGUgcmVtb3ZhbCBvZiBnb3BoZXIKK3N1cHBvcnQgaW4gdXJsbGliL3VybGxpYjIuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU0NAorLi4gbm9uY2U6IE5INlJBaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYnVnIGluIG1hcnNoYWwgd2hlcmUgYmFkIGRhdGEgd291bGQgY2F1c2UgYSBzZWdmYXVsdCBkdWUgdG8gbGFjayBvZiBhbgoraW5maW5pdGUgcmVjdXJzaW9uIGNoZWNrLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1NDMKKy4uIG5vbmNlOiA5WEhVMV8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlZCBwbGF0LWZyZWVic2QyIGFuZCBwbGF0LWZyZWVic2QzIGRpcmVjdG9yaWVzIChhbmQgSU4ucHkgaW4gdGhlCitkaXJlY3RvcmllcykuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjU0MgorLi4gbm9uY2U6IFNiczRPRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitIVE1MLWVzY2FwZSB0aGUgcGxhaW4gdHJhY2ViYWNrIGluIGNnaXRiJ3MgSFRNTCBvdXRwdXQsIHRvIHByZXZlbnQgdGhlCit0cmFjZWJhY2sgaW5hZHZlcnRlbnRseSBvciBtYWxpY2lvdXNseSBjbG9zaW5nIHRoZSBjb21tZW50IGFuZCBpbmplY3RpbmcKK0hUTUwgaW50byB0aGUgZXJyb3IgcGFnZS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTQxCisuLiBub25jZTogZkRQYUZVCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBwb3BlbjIgbW9kdWxlIGFuZCBvcy5wb3BlbiogYXJlIGRlcHJlY2F0ZWQuICBVc2UgdGhlIHN1YnByb2Nlc3MgbW9kdWxlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1NDAKKy4uIG5vbmNlOiBEaU05SUcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgYW4gb3B0aW9uYWwgY3JlZGVudGlhbHMgYXJndW1lbnQgdG8gU01UUEhhbmRsZXIsIGZvciB1c2Ugd2l0aCBTTVRQCitzZXJ2ZXJzIHdoaWNoIHJlcXVpcmUgYXV0aGVudGljYXRpb24uCisKKy4uCisKKy4uIGJwbzogMTY5NTk0OAorLi4gZGF0ZTogNjUzOQorLi4gbm9uY2U6IEdral8xTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBvcHRpb25hbCB0aW1lb3V0IHBhcmFtZXRlciB0byBTb2NrZXRIYW5kbGVyLgorCisuLgorCisuLiBicG86IDE2NTI3ODgKKy4uIGRhdGU6IDY1MzgKKy4uIG5vbmNlOiBXcDNZT04KKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWlub3IgZml4IGZvciBjdXJyZW50ZnJhbWUuCisKKy4uCisKKy4uIGJwbzogMTU5ODQxNQorLi4gZGF0ZTogNjUzNworLi4gbm9uY2U6IHozelp3TQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBXYXRjaGVkRmlsZUhhbmRsZXIgdG8gYmV0dGVyIHN1cHBvcnQgZXh0ZXJuYWwgbG9nIGZpbGUgcm90YXRpb24gdXNpbmcKK2UuZy4gbmV3c3lzbG9nIG9yIGxvZ3JvdGF0ZS4gVGhpcyBoYW5kbGVyIGlzIG9ubHkgdXNlZnVsIGluIFVuaXgvTGludXgKK2Vudmlyb25tZW50cy4KKworLi4KKworLi4gYnBvOiAxNzA2MzgxCisuLiBkYXRlOiA2NTM2CisuLiBub25jZTogTHdIS0ZJCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NwZWNpZnlpbmcgdGhlIFNXSUcgb3B0aW9uICItYysrIiBpbiB0aGUgc2V0dXAucHkgZmlsZSAoYXMgb3Bwb3NlZCB0byB0aGUKK2NvbW1hbmQgbGluZSkgd2lsbCBub3cgd3JpdGUgZmlsZSBuYW1lcyBlbmRpbmcgaW4gIi5jcHAiIHRvby4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NTM1CisuLiBub25jZTogOTYwaTU4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FzIHNwZWNpZmllZCBpbiBSRkMgMjYxNiwgYW4gSFRUUCByZXNwb25zZSBsaWtlIDJ4eCBpbmRpY2F0ZXMgdGhhdCB0aGUKK2NsaWVudCdzIHJlcXVlc3Qgd2FzIHN1Y2Nlc3NmdWxseSByZWNlaXZlZCwgdW5kZXJzdG9vZCwgYW5kIGFjY2VwdGVkLiAgTm93CitpbiB0aGVzZSBjYXNlcyBubyBlcnJvciBpcyByYWlzZWQgaW4gdXJsbGliIChpc3N1ZSAjMTE3NykgYW5kIHVybGxpYjIuCisKKy4uCisKKy4uIGJwbzogMTI5MDUwNQorLi4gZGF0ZTogNjUzNAorLi4gbm9uY2U6IGJYZnJ6cQorLi4gc2VjdGlvbjogTGlicmFyeQorCit0aW1lLnN0cnB0aW1lJ3MgaW50ZXJuYWwgY2FjaGUgb2YgbG9jYWxlIGluZm9ybWF0aW9uIGlzIG5vdyBwcm9wZXJseQorcmVjcmVhdGVkIHdoZW4gdGhlIGxvY2FsZSBpcyBjaGFuZ2VkLgorCisuLgorCisuLiBicG86IDE2ODU1NjMKKy4uIGRhdGU6IDY1MzMKKy4uIG5vbmNlOiBjZV83dHQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcmVtb3ZlIChkb24ndCBhZGQpIGR1cGxpY2F0ZSBwYXRocyBpbiBkaXN0dXRpbHMuTVNWQ0NvbXBpbGVyLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY1MzIKKy4uIG5vbmNlOiAwVlM5QVEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgYSB0aW1lb3V0IHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3Igb2Ygb3RoZXIgcHJvdG9jb2xzICh0ZWxuZXRsaWIsCitmdHBsaWIsIHNtdHBsaWIgYW5kIHBvcGxpYikuIFRoaXMgaXMgc2Vjb25kIHBhcnQgb2YgdGhlIHdvcmsgc3RhcnRlZCB3aXRoCitjcmVhdGVfY29ubmVjdGlvbigpIGFuZCB0aW1lb3V0IGluIGh0dHBsaWIsIGFuZCBjbG9zZXMgcGF0Y2ggIzcyMzMxMi4KKworLi4KKworLi4gYnBvOiAxNjc2ODIzCisuLiBkYXRlOiA2NTMxCisuLiBub25jZTogVWpsbXFhCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIGNyZWF0ZV9jb25uZWN0aW9uKCkgdG8gc29ja2V0LnB5LCB3aGljaCBtYXkgYmUgY2FsbGVkIHdpdGggYSB0aW1lb3V0LAorYW5kIHVzZSBpdCBmcm9tIGh0dHBsaWIgKHdob3NlIEhUVFBDb25uZWN0aW9uIGFuZCBIVFRQU0Nvbm5lY3Rpb24gbm93IGFjY2VwdAorYW4gb3B0aW9uYWwgdGltZW91dCkuCisKKy4uCisKKy4uIGJwbzogOTc4ODMzCisuLiBkYXRlOiA2NTMwCisuLiBub25jZTogekY0SDJZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JldmVydCByNTA4NDQsIGFzIGl0IGJyb2tlIF9zb2NrZXRvYmplY3QuZHVwLgorCisuLgorCisuLiBicG86IDE2NzU5NjcKKy4uIGRhdGU6IDY1MjkKKy4uIG5vbmNlOiAxaXc1VTIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcmUgcGF0dGVybnMgcGlja2xlZCB3aXRoIFB5dGhvbiAyLjQgYW5kIGVhcmxpZXIgY2FuIG5vdyBiZSB1bnBpY2tsZWQgd2l0aAorUHl0aG9uIDIuNSBhbmQgbmV3ZXIuCisKKy4uCisKKy4uIGJwbzogMTYzMDExOAorLi4gZGF0ZTogNjUyOAorLi4gbm9uY2U6IGVaaVZ4cQorLi4gc2VjdGlvbjogTGlicmFyeQorCithZGQgYSBTcG9vbGVkVGVtcG9yYXJ5RmlsZSBjbGFzcyB0byB0ZW1wZmlsZS5weS4KKworLi4KKworLi4gYnBvOiAxMjczODI5CisuLiBkYXRlOiA2NTI3CisuLiBub25jZTogbWo0UU5UCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK29zLndhbGsoKSBub3cgaGFzIGEgImZvbGxvd2xpbmtzIiBwYXJhbWV0ZXIuIElmIHNldCB0byBUcnVlICh3aGljaCBpcyBub3QKK3RoZSBkZWZhdWx0KSwgaXQgdmlzaXRzIHN5bWxpbmtzIHBvaW50aW5nIHRvIGRpcmVjdG9yaWVzLgorCisuLgorCisuLiBicG86IDE2ODEyMjgKKy4uIGRhdGU6IDY1MjYKKy4uIG5vbmNlOiA0TU1RMDEKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGhlIHdlYmJyb3dzZXIgbW9kdWxlIG5vdyBjb3JyZWN0bHkgdXNlcyB0aGUgZGVmYXVsdCBHTk9NRSBvciBLREUgYnJvd3NlciwKK2RlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXJlIGlzIGEgc2Vzc2lvbiBvZiBvbmUgb2YgdGhvc2UgcHJlc2VudC4gQWxzbywgaXQKK3RyaWVzIHRoZSBXaW5kb3dzIGRlZmF1bHQgYnJvd3NlciBiZWZvcmUgdHJ5aW5nIE1vemlsbGEgdmFyaWFudHMuCisKKy4uCisKKy4uIGJwbzogMTMzOTc5NgorLi4gZGF0ZTogNjUyNQorLi4gbm9uY2U6IE5uLUtieQorLi4gc2VjdGlvbjogTGlicmFyeQorCithZGQgYSByZWxwYXRoKCkgZnVuY3Rpb24gdG8gb3MucGF0aC4KKworLi4KKworLi4gYnBvOiAxNjgxMTUzCisuLiBkYXRlOiA2NTI0CisuLiBub25jZTogZlFFTGN4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3RoZSB3YXZlIG1vZHVsZSBub3cgY2xvc2VzIGEgZmlsZSBvYmplY3QgaXQgb3BlbmVkIGlmIGluaXRpYWxpemF0aW9uIGZhaWxlZC4KKworLi4KKworLi4gYnBvOiA3NjcxMTEKKy4uIGRhdGU6IDY1MjMKKy4uIG5vbmNlOiBDOWxPWTAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4IGxvbmctc3RhbmRpbmcgYnVnIGluIHVybGxpYiB3aGljaCBjYXVzZWQgYW4gQXR0cmlidXRlRXJyb3IgaW5zdGVhZCBvZiBhbgorSU9FcnJvciB3aGVuIHRoZSBzZXJ2ZXIncyByZXNwb25zZSBkaWRuJ3QgY29udGFpbiBhIHZhbGlkIEhUVFAgc3RhdHVzIGxpbmUuCisKKy4uCisKKy4uIGJwbzogOTU3NjUwCisuLiBkYXRlOiA2NTIyCisuLiBub25jZTogMmo5Y2I0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKKyIldmFyJSIgZW52aXJvbm1lbnQgdmFyaWFibGUgcmVmZXJlbmNlcyBhcmUgbm93IHByb3Blcmx5IGV4cGFuZGVkIGluCitudHBhdGguZXhwYW5kdmFycygpLCBhbHNvICJ+dXNlciIgaG9tZSBkaXJlY3RvcnkgcmVmZXJlbmNlcyBhcmUgcmVjb2duaXplZAorYW5kIGhhbmRsZWQgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiAxNDI5NTM5CisuLiBkYXRlOiA2NTIxCisuLiBub25jZTogX1ZZV3lWCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3BkYiBub3cgY29ycmVjdGx5IGluaXRpYWxpemVzIHRoZSBfX21haW5fXyBtb2R1bGUgZm9yIHRoZSBkZWJ1Z2dlZCBzY3JpcHQsCit3aGljaCBtZWFucyB0aGF0IGltcG9ydHMgZnJvbSBfX21haW5fXyB3b3JrIGNvcnJlY3RseSBub3cuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjUyMAorLi4gbm9uY2U6IDhvY3pkVworLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbm9ub2J2aW91cyBjb21tYW5kcy5nZXRzdGF0dXMoKSBmdW5jdGlvbiBpcyBub3cgZGVwcmVjYXRlZC4KKworLi4KKworLi4gYnBvOiAxMzkzNjY3CisuLiBkYXRlOiA2NTE5CisuLiBub25jZTogcWJhLXVpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3BkYiBub3cgaGFzIGEgInJ1biIgY29tbWFuZCB3aGljaCByZXN0YXJ0cyB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0sCitvcHRpb25hbGx5IHdpdGggZGlmZmVyZW50IGFyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiAxNjQ5MTkwCisuLiBkYXRlOiA2NTE4CisuLiBub25jZTogV1JCejJkCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGluZyBzdXBwb3J0IGZvciBfQm9vbCB0byBjdHlwZXMgYXMgY19ib29sLgorCisuLgorCisuLiBicG86IDE1MzA0ODIKKy4uIGRhdGU6IDY1MTcKKy4uIG5vbmNlOiAxSERydy0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworYWRkIHB5ZG9jLnJlbmRlcl9kb2MoKSB3aGljaCByZXR1cm5zIHRoZSBkb2N1bWVudGF0aW9uIGZvciBhIHRoaW5nIGluc3RlYWQKK29mIHBhZ2luZyBpdCB0byBzdGRvdXQsIHdoaWNoIHB5ZG9jLmRvYygpIGRvZXMuCisKKy4uCisKKy4uIGJwbzogMTUzMzkwOQorLi4gZGF0ZTogNjUxNgorLi4gbm9uY2U6IEkzSVJSRAorLi4gc2VjdGlvbjogTGlicmFyeQorCit0aGUgdGltZWl0IG1vZHVsZSBub3cgYWNjZXB0cyBjYWxsYWJsZXMgaW4gYWRkaXRpb24gdG8gc3RyaW5ncyBmb3IgdGhlIGNvZGUKK3RvIHRpbWUgYW5kIHRoZSBzZXR1cCBjb2RlLiBBbHNvIGFkZGVkIHR3byBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yCitpbnN0YW50aWF0aW5nIGEgVGltZXIgYW5kIGNhbGxpbmcgaXRzIG1ldGhvZHMuCisKKy4uCisKKy4uIGJwbzogMTUzNzg1MAorLi4gZGF0ZTogNjUxNQorLi4gbm9uY2U6IG1valpQLQorLi4gc2VjdGlvbjogTGlicmFyeQorCit0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUgbm93IGhhcyBhICJkZWxldGUiIHBhcmFtZXRlciB3aGljaCBjYW4gYmUgc2V0IHRvCitGYWxzZSB0byBwcmV2ZW50IHRoZSBkZWZhdWx0IGRlbGV0ZS1vbi1jbG9zZSBiZWhhdmlvci4KKworLi4KKworLi4gYnBvOiAxNTgxMDczCisuLiBkYXRlOiA2NTE0CisuLiBub25jZTogSW01YklWCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FkZCBhIGZsYWcgdG8gdGV4dHdyYXAgdGhhdCBwcmV2ZW50cyB0aGUgZHJvcHBpbmcgb2Ygd2hpdGVzcGFjZSB3aGlsZQord3JhcHBpbmcuCisKKy4uCisKKy4uIGJwbzogMTYwMzY4OAorLi4gZGF0ZTogNjUxMworLi4gbm9uY2U6IE12X2psTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlciBub3cgY2hlY2tzIHZhbHVlcyB0aGF0IGFyZSBzZXQgZm9yIGludmFsaWQKK2ludGVycG9sYXRpb24gc2VxdWVuY2VzIHRoYXQgd291bGQgbGVhZCB0byBlcnJvcnMgb24gcmVhZGluZyBiYWNrIHRob3NlCit2YWx1ZXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjUxMgorLi4gbm9uY2U6IFpZbzA2cAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBzdXBwb3J0IGZvciB0aGUgUE9TSVguMS0yMDAxIChwYXgpIGZvcm1hdCB0byB0YXJmaWxlLnB5LiBFeHRlbmRlZCBhbmQKK2NsZWFuZWQgdXAgdGhlIHRlc3Qgc3VpdGUuIEFkZGVkIGEgbmV3IHRlc3R0YXIudGFyLgorCisuLgorCisuLiBicG86IDE0NDkyNDQKKy4uIGRhdGU6IDY1MTEKKy4uIG5vbmNlOiB1SGtLamsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU3VwcG9ydCBVbmljb2RlIHN0cmluZ3MgaW4KK2VtYWlsLm1lc3NhZ2UuTWVzc2FnZS57c2V0X2NoYXJzZXQsZ2V0X2NvbnRlbnRfY2hhcnNldH0uCisKKy4uCisKKy4uIGJwbzogMTU0MjY4MQorLi4gZGF0ZTogNjUxMAorLi4gbm9uY2U6IDV5NXVDVgorLi4gc2VjdGlvbjogTGlicmFyeQorCithZGQgZW50cmllcyBmb3IgIndpdGgiLCAiYXMiIGFuZCAiQ09OVEVYVE1BTkFHRVJTIiB0byBweWRvYydzIGhlbHAga2V5d29yZHMuCisKKy4uCisKKy4uIGJwbzogMTU1NTA5OAorLi4gZGF0ZTogNjUwOQorLi4gbm9uY2U6IG1PNzlsTQorLi4gc2VjdGlvbjogTGlicmFyeQorCit1c2Ugc3RyLmpvaW4oKSBpbnN0ZWFkIG9mIHJlcGVhdGVkIHN0cmluZyBjb25jYXRlbmF0aW9uIGluIHJvYm90cGFyc2VyLgorCisuLgorCisuLiBicG86IDE2MzU0NTQKKy4uIGRhdGU6IDY1MDgKKy4uIG5vbmNlOiA4R3Y1RWsKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGhlIGNzdi5EaWN0V3JpdGVyIGNsYXNzIG5vdyBpbmNsdWRlcyB0aGUgb2ZmZW5kaW5nIGZpZWxkIG5hbWVzIGluIGl0cworZXhjZXB0aW9uIG1lc3NhZ2UgaWYgeW91IHRyeSB0byB3cml0ZSBhIHJlY29yZCB3aXRoIGEgZGljdGlvbmFyeSBjb250YWluaW5nCitmaWVsZHMgbm90IGluIHRoZSBDU1YgZmllbGQgbmFtZXMgbGlzdC4KKworLi4KKworLi4gYnBvOiAxNjY4MTAwCisuLiBkYXRlOiA2NTA3CisuLiBub25jZTogQmZBVTlpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VybGxpYjIgbm93IGNvcnJlY3RseSByYWlzZXMgVVJMRXJyb3IgaW5zdGVhZCBvZiBPU0Vycm9yIGlmIGFjY2Vzc2luZyBhCitsb2NhbCBmaWxlIHZpYSB0aGUgZmlsZTovLyBwcm90b2NvbCBmYWlscy4KKworLi4KKworLi4gYnBvOiAxNjc3ODYyCisuLiBkYXRlOiA2NTA2CisuLiBub25jZTogWXVYTnM2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlcXVpcmUgYSBzcGFjZSBvciB0YWIgYWZ0ZXIgaW1wb3J0IGluIC5wdGggZmlsZXMuCisKKy4uCisKKy4uIGJwbzogMTE5MjU5MAorLi4gZGF0ZTogNjUwNQorLi4gbm9uY2U6IGQydU1naQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcGRiJ3MgImlnbm9yZSIgYW5kICJjb25kaXRpb24iIGNvbW1hbmRzIHNvIHRoZXkgdHJhcCB0aGUgSW5kZXhFcnJvcgorY2F1c2VkIGJ5IHBhc3NpbmcgaW4gYW4gaW52YWxpZCBicmVha3BvaW50IG51bWJlci4KKworLi4KKworLi4gYnBvOiAxNTk5ODQ1CisuLiBkYXRlOiA2NTA0CisuLiBub25jZTogOXpoTlFYCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBhbiBvcHRpb24gdG8gZGlzYWJsZSB0aGUgaW1wbGljaXQgY2FsbHMgdG8gc2VydmVyX2JpbmQoKSBhbmQKK3NlcnZlcl9hY3RpdmF0ZSgpIGluIHRoZSBjb25zdHJ1Y3RvcnMgZm9yIFRDUFNlcnZlciwgU2ltcGxlWE1MUlBDU2VydmVyIGFuZAorRG9jWE1MUlBDU2VydmVyLgorCisuLgorCisuLiBicG86IDE1MzE5NjMKKy4uIGRhdGU6IDY1MDMKKy4uIG5vbmNlOiBwNUdKY3UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBTb2NrZXRTZXJ2ZXIuVENQU2VydmVyJ3Mgc2VydmVyX2FkZHJlc3MgYWx3YXlzIGJlIGVxdWFsIHRvIGNhbGxpbmcKK2dldHNvY2tuYW1lKCkgb24gdGhlIHNlcnZlcidzIHNvY2tldC4gRml4ZWQgYnkgcGF0Y2ggIzE1NDUwMTEuCisKKy4uCisKKy4uIGJwbzogNzQyNTk4CisuLiBkYXRlOiA2NTAyCisuLiBub25jZTogLTUwTnNvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCAudGltZW91dCBhdHRyaWJ1dGUgdG8gU29ja2V0U2VydmVyIHRoYXQgY2FsbHMgLmhhbmRsZV90aW1lb3V0KCkgd2hlbiBubworcmVxdWVzdHMgYXJlIHJlY2VpdmVkLgorCisuLgorCisuLiBicG86IDE2NTEyMzUKKy4uIGRhdGU6IDY1MDEKKy4uIG5vbmNlOiBjWThDVjcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV2hlbiBhIHR1cGxlIHdhcyBwYXNzZWQgdG8gYSBjdHlwZXMgZnVuY3Rpb24gY2FsbCwgUHl0aG9uIHdvdWxkIGNyYXNoCitpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXJyb3IuCisKKy4uCisKKy4uIGJwbzogMTY0NjYzMAorLi4gZGF0ZTogNjUwMAorLi4gbm9uY2U6IHJrUzdnYworLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXMuc3RyaW5nX2F0KGJ1ZiwgMCkgYW5kIGN0eXBlcy53c3RyaW5nX2F0KGJ1ZiwgMCkgcmV0dXJuZWQgc3RyaW5nIHVwIHRvCit0aGUgZmlyc3QgTlVMIGNoYXJhY3Rlci4KKworLi4KKworLi4gYnBvOiA5NTcwMDMKKy4uIGRhdGU6IDY0OTkKKy4uIG5vbmNlOiBTc2tSb2IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW1wbGVtZW50IHNtdHBsaWIuTE1UUC4KKworLi4KKworLi4gYnBvOiAxNDgxMDc5CisuLiBkYXRlOiA2NDk4CisuLiBub25jZTogZ0VZQWtDCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FkZCBzdXBwb3J0IGZvciBIVFRQX1JFRkVSRVIgdG8gQ0dJSFRUUFNlcnZlci4KKworLi4KKworLi4gYnBvOiAxNjc1NDI0CisuLiBkYXRlOiA2NDk3CisuLiBub25jZTogOEE5ZndvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIHRlc3RzIGZvciB1bmNvdmVyZWQgY29kZSBpbiB0aGUgemlwZmlsZSBtb2R1bGUuICBUaGUgS2V5RXJyb3IgcmFpc2VkCitieSBaaXBmaWxlLmdldGluZm8gZm9yIG5vbmV4aXN0ZW50IG5hbWVzIG5vdyBoYXMgYSBkZXNjcmlwdGl2ZSBtZXNzYWdlLgorCisuLgorCisuLiBicG86IDExMTU4ODYKKy4uIGRhdGU6IDY0OTYKKy4uIG5vbmNlOiBRLTQyQTkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworb3MucGF0aC5zcGxpdGV4dCgnLmNzaHJjJykgZ2l2ZXMgbm93ICgnLmNzaHJjJywgJycpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY0OTUKKy4uIG5vbmNlOiB3bFZUcHoKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordW5pdHRlc3Qgbm93IHZlcmlmaWVzIG1vcmUgb2YgaXRzIGFzc3VtcHRpb25zLiBJbiBwYXJ0aWN1bGFyLCBUZXN0Q2FzZSBhbmQKK1Rlc3RTdWl0ZSBzdWJjbGFzc2VzIChub3QgaW5zdGFuY2VzKSBhcmUgbm8gbG9uZ2VyIGFjY2VwdGVkIGluCitUZXN0U3VpdGUuYWRkVGVzdCgpLiBUaGlzIHNob3VsZCBjYXVzZSBubyBpbmNvbXBhdGliaWxpdHkgc2luY2UgaXQgbmV2ZXIKK21hZGUgc2Vuc2Ugd2l0aCBvcmRpbmFyeSBzdWJjbGFzc2VzIC0tIHRoZSBmYWlsdXJlIGp1c3Qgb2NjdXJyZWQgbGF0ZXIsIHdpdGgKK2EgbW9yZSBjdW1iZXJzb21lIGV4Y2VwdGlvbi4KKworLi4KKworLi4gYnBvOiA3ODc3ODkKKy4uIGRhdGU6IDY0OTQKKy4uIG5vbmNlOiBqeklNdTgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYWxsb3cgcGFzc2luZyBjdXN0b20gVGVzdFJ1bm5lciBpbnN0YW5jZXMgdG8gdW5pdHRlc3QncyBtYWluKCkgZnVuY3Rpb24uCisKKy4uCisKKy4uIGJwbzogMTU1MDI3MworLi4gZGF0ZTogNjQ5MworLi4gbm9uY2U6IFJhOFFVWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggYSBmZXcgYnVncyBpbiB1bml0dGVzdCBhbmQgYWRkIGEgY29tcHJlaGVuc2l2ZSB0ZXN0IHN1aXRlIGZvciB0aGUKK21vZHVsZS4gKFNlZSBhbHNvOiBicG8tMTU1MDI3MikKKworLi4KKworLi4gYnBvOiAxMDAxNjA0CisuLiBkYXRlOiA2NDkyCisuLiBub25jZTogVmRxaHVxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2dsb2IuZ2xvYigpIG5vdyByZXR1cm5zIHVuaWNvZGUgZmlsZW5hbWVzIGlmIGl0IHdhcyBnaXZlbiBhIHVuaWNvZGUgYXJndW1lbnQKK2FuZCBvcy5saXN0ZGlyKCkgcmV0dXJucyB1bmljb2RlIGZpbGVuYW1lcy4KKworLi4KKworLi4gYnBvOiAxNjczNjE5CisuLiBkYXRlOiA2NDkxCisuLiBub25jZTogajE2WVByCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3NldHVwLnB5IGlkZW50aWZpZXMgZXh0ZW5zaW9uIG1vZHVsZXMgaXQgZG9lc24ndCBrbm93IGhvdyB0byBidWlsZCBhbmQgdGhvc2UKK2l0IGtub3dzIGhvdyB0byBidWlsZCBidXQgdGhhdCBmYWlsIHRvIGJ1aWxkLgorCisuLgorCisuLiBicG86IDkxMjQxMAorLi4gZGF0ZTogNjQ5MAorLi4gbm9uY2U6IG1oMGNHSAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZXBsYWNlIEhUTUwgZW50aXR5IHJlZmVyZW5jZXMgZm9yIGF0dHJpYnV0ZSB2YWx1ZXMgaW4gSFRNTFBhcnNlci4KKworLi4KKworLi4gYnBvOiAxNjYzMjM0CisuLiBkYXRlOiA2NDg5CisuLiBub25jZTogWVpscDUzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3lvdSBjYW4gbm93IHJ1biBkb2N0ZXN0IG9uIHRlc3QgZmlsZXMgYW5kIG1vZHVsZXMgdXNpbmcgInB5dGhvbiAtbSBkb2N0ZXN0CitbLXZdIGZpbGVuYW1lIC4uLiIuCisKKy4uCisKKy4uIGJwbzogMTEyMTE0MgorLi4gZGF0ZTogNjQ4OAorLi4gbm9uY2U6IEV1bHBxTAorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbXBsZW1lbnQgWmlwRmlsZS5vcGVuLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY0ODcKKy4uIG5vbmNlOiBqaW1BaWsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGF1Z2h0IHNldHVwLnB5IGhvdyB0byBsb2NhdGUgQmVya2VsZXkgREIgb24gTWFjcyB1c2luZyBNYWNQb3J0cy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NDg2CisuLiBub25jZTogcWJVc0hvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIGhlYXBxLm1lcmdlKCkgZm9yIG1lcmdpbmcgc29ydGVkIGlucHV0IHN0cmVhbXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjQ4NQorLi4gbm9uY2U6IGM2OW9LdworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCkgZm9yIGFzc2lnbmluZyBmaWVsZCBuYW1lcyB0byB0dXBsZXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjQ4NAorLi4gbm9uY2U6IDV5Nlk5TgorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBpdGVydG9vbHMuaXppcF9sb25nZXN0KCkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjQ4MworLi4gbm9uY2U6IFZ6c1RKaQorLi4gc2VjdGlvbjogTGlicmFyeQorCitIYXZlIHRoZSBlbmNvZGluZyBwYWNrYWdlJ3Mgc2VhcmNoIGZ1bmN0aW9uIGR5bmFtaWNhbGx5IGltcG9ydCB1c2luZworYWJzb2x1dGUgaW1wb3J0IHNlbWFudGljcy4KKworLi4KKworLi4gYnBvOiAxNjQ3NDg0CisuLiBkYXRlOiA2NDgyCisuLiBub25jZTogRmtONVNQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbmFtZWQgR3ppcEZpbGUncyBmaWxlbmFtZSBhdHRyaWJ1dGUgdG8gbmFtZS4KKworLi4KKworLi4gYnBvOiAxNTE3ODkxCisuLiBkYXRlOiA2NDgxCisuLiBub25jZTogQXZZdzhqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01vZGUgJ2EnIGZvciBaaXBGaWxlIG5vdyBjcmVhdGVzIHRoZSBmaWxlIGlmIGl0IGRvZXNuJ3QgZXhpc3QuCisKKy4uCisKKy4uIGJwbzogNjk4ODMzCisuLiBkYXRlOiA2NDgwCisuLiBub25jZTogVWFnRU5wCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1N1cHBvcnQgZmlsZSBkZWNyeXB0aW9uIGluIHppcGZpbGUuCisKKy4uCisKKy4uIGJwbzogNjg1MjY4CisuLiBkYXRlOiA2NDc5CisuLiBub25jZTogajdnUm8zCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NvbnNpZGVyIGEgcGFja2FnZSdzIF9fcGF0aF9fIGluIGltcHV0aWwuCisKKy4uCisKKy4uIGJwbzogMTQ2MzAyNgorLi4gZGF0ZTogNjQ3OAorLi4gbm9uY2U6IF8wcm1tYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitTdXBwb3J0IGRlZmF1bHQgbmFtZXNwYWNlIGluIFhNTEdlbmVyYXRvci4KKworLi4KKworLi4gYnBvOiAxNTcxMzc5CisuLiBkYXRlOiA2NDc3CisuLiBub25jZTogVExOZm5QCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgdHJhY2UncyAtLWlnbm9yZS1kaXIgZmFjaWxpdHkgd29yayBpbiB0aGUgZmFjZSBvZiByZWxhdGl2ZSBkaXJlY3RvcnkKK25hbWVzLgorCisuLgorCisuLiBicG86IDE2MDA4NjAKKy4uIGRhdGU6IDY0NzYKKy4uIG5vbmNlOiBnWTNGNjYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU2VhcmNoIGZvciBzaGFyZWQgcHl0aG9uIGxpYnJhcnkgaW4gTElCRElSLCBub3QgbGliL3B5dGhvbi9jb25maWcsIG9uCisibGludXgiIGFuZCAiZ251IiBzeXN0ZW1zLgorCisuLgorCisuLiBicG86IDE2NTI2ODEKKy4uIGRhdGU6IDY0NzUKKy4uIG5vbmNlOiBaaVlRZG0KKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGFyZmlsZS5weTogY3JlYXRlIG5vbmV4aXN0ZW50IGZpbGVzIGluIGFwcGVuZCBtb2RlIGFuZCBhbGxvdyBhcHBlbmRpbmcgdG8KK2VtcHR5IGZpbGVzLgorCisuLgorCisuLiBicG86IDExMjQ4NjEKKy4uIGRhdGU6IDY0NzQKKy4uIG5vbmNlOiBhdWx5SmoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQXV0b21hdGljYWxseSBjcmVhdGUgcGlwZXMgaWYgR2V0U3RkSGFuZGxlIGZhaWxzIGluIHN1YnByb2Nlc3MuCisKKy4uCisKKy4uIGJwbzogMTYzNDc3OAorLi4gZGF0ZTogNjQ3MworLi4gbm9uY2U6IHBTY0hMSQorLi4gc2VjdGlvbjogTGlicmFyeQorCithZGQgbWlzc2luZyBlbmNvZGluZyBhbGlhc2VzIGZvciBpc284ODU5XzE1IGFuZCBpc284ODU5XzE2LgorCisuLgorCisuLiBicG86IDE2MzgyNDMKKy4uIGRhdGU6IDY0NzIKKy4uIG5vbmNlOiBTQVZsUUMKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGhlIGNvbXBpbGVyIHBhY2thZ2UgaXMgbm93IGFibGUgdG8gY29ycmVjdGx5IGNvbXBpbGUgYSB3aXRoIHN0YXRlbWVudDsKK3ByZXZpb3VzbHksIGV4ZWN1dGluZyBjb2RlIGNvbnRhaW5pbmcgYSB3aXRoIHN0YXRlbWVudCBjb21waWxlZCBieSB0aGUKK2NvbXBpbGVyIHBhY2thZ2UgY3Jhc2hlZCB0aGUgaW50ZXJwcmV0ZXIuCisKKy4uCisKKy4uIGJwbzogMTY0Mzk0MworLi4gZGF0ZTogNjQ3MQorLi4gbm9uY2U6IGE0bnh2MworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGltZS5zdHJwdGltZSdzIHN1cHBvcnQgZm9yIHRoZSAlVSBkaXJlY3RpdmUuCisKKy4uCisKKy4uIGJwbzogMTUwNzI0NworLi4gZGF0ZTogNjQ3MAorLi4gbm9uY2U6IEFZcVJUbQorLi4gc2VjdGlvbjogTGlicmFyeQorCit0YXJmaWxlLnB5OiB1c2UgY3VycmVudCB1bWFzayBmb3IgaW50ZXJtZWRpYXRlIGRpcmVjdG9yaWVzLgorCisuLgorCisuLiBicG86IDE2Mjc0NDEKKy4uIGRhdGU6IDY0NjkKKy4uIG5vbmNlOiBuVHJicVkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY2xvc2Ugc29ja2V0cyBwcm9wZXJseSBpbiB1cmxsaWIyLgorCisuLgorCisuLiBicG86IDQ5NDU4OQorLi4gZGF0ZTogNjQ2OAorLi4gbm9uY2U6IDJrQ2JOWQorLi4gc2VjdGlvbjogTGlicmFyeQorCittYWtlIG50cGF0aC5leHBhbmR2YXJzIGJlaGF2ZSBhY2NvcmRpbmcgdG8gaXRzIGRvY3N0cmluZy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NDY3CisuLiBub25jZTogZXpwVTBECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NoYW5nZWQgcGxhdGZvcm0gbW9kdWxlIEFQSSBweXRob25fdmVyc2lvbl90dXBsZSgpIHRvIGFjdHVhbGx5IHJldHVybiBhCit0dXBsZSAoaXQgdXNlZCB0byByZXR1cm4gYSBsaXN0KS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NDY2CisuLiBub25jZTogMi1rVnRnCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIG5ldyBwbGF0Zm9ybSBtb2R1bGUgQVBJcyBweXRob25fYnJhbmNoKCksIHB5dGhvbl9yZXZpc2lvbigpLAorcHl0aG9uX2ltcGxlbWVudGF0aW9uKCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvbigpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY0NjUKKy4uIG5vbmNlOiBxenJJWFAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgc3VwcG9ydCBmb3IgSXJvblB5dGhvbiBhbmQgSnl0aG9uIHRvIHRoZSBwbGF0Zm9ybSBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjQ2NAorLi4gbm9uY2U6IE1TOEMzegorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgc2V0cyBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZC4gIFVzZSB0aGUgYnVpbHQtaW4gc2V0L2Zyb3plbnNldCB0eXBlcworaW5zdGVhZC4KKworLi4KKworLi4gYnBvOiAxNjEwNzk1CisuLiBkYXRlOiA2NDYzCisuLiBub25jZTogRkVJdXg2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK21ha2UgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IHdvcmsgb24gQlNEIHN5c3RlbXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjQ2MgorLi4gbm9uY2U6IHJmdjBwTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlcyBmb3IgNjQtYml0IFdpbmRvd3M6IEluIGN0eXBlcy53aW50eXBlcywgY29ycmVjdCB0aGUgZGVmaW5pdGlvbnMgb2YKK0hBTkRMRSwgV1BBUkFNLCBMUEFSQU0gZGF0YSB0eXBlcy4gIE1ha2UgcGFyYW1ldGVybGVzcyBmb3JlaWduIGZ1bmN0aW9uCitjYWxscyB3b3JrLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY0NjEKKy4uIG5vbmNlOiBpQ3UyRUIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBjdHlwZXMgcGFja2FnZSBjaGFuZ2VkIHRvICIxLjEuMCIuCisKKy4uCisKKy4uIGJwbzogMTYyNzU3NQorLi4gZGF0ZTogNjQ2MAorLi4gbm9uY2U6IGVrcWNIdQorLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nOiBBZGRlZCBfb3BlbigpIG1ldGhvZCB0byBGaWxlSGFuZGxlciB3aGljaCBjYW4gYmUgdXNlZCB0byByZW9wZW4KK2ZpbGVzLiBUaGUgRmlsZUhhbmRsZXIgaW5zdGFuY2Ugbm93IHNhdmVzIHRoZSBlbmNvZGluZyAod2hpY2ggY2FuIGJlIE5vbmUpCitpbiBhbiBhdHRyaWJ1dGUgY2FsbGVkICJlbmNvZGluZyIuCisKKy4uCisKKy4uIGJwbzogNDExODgxCisuLiBkYXRlOiA2NDU5CisuLiBub25jZTogU2RQQkpTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmcuaGFuZGxlcnM6IGJhcmUgZXhjZXB0IGNsYXVzZSByZW1vdmVkIGZyb20gU01UUEhhbmRsZXIuZW1pdC4gTm93LAorb25seSBJbXBvcnRFcnJvciBpcyB0cmFwcGVkLgorCisuLgorCisuLiBicG86IDQxMTg4MQorLi4gZGF0ZTogNjQ1OAorLi4gbm9uY2U6IEh1aTVMaQorLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nLmhhbmRsZXJzOiBiYXJlIGV4Y2VwdCBjbGF1c2UgcmVtb3ZlZCBmcm9tCitTb2NrZXRIYW5kbGVyLmNyZWF0ZVNvY2tldC4gTm93LCBvbmx5IHNvY2tldC5lcnJvciBpcyB0cmFwcGVkLgorCisuLgorCisuLiBicG86IDQxMTg4MQorLi4gZGF0ZTogNjQ1NworLi4gbm9uY2U6IEVCMmJvZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nOiBiYXJlIGV4Y2VwdCBjbGF1c2UgcmVtb3ZlZCBmcm9tIExvZ1JlY29yZC5fX2luaXRfXy4gIE5vdywgb25seQorVmFsdWVFcnJvciwgVHlwZUVycm9yIGFuZCBBdHRyaWJ1dGVFcnJvciBhcmUgdHJhcHBlZC4KKworLi4KKworLi4gYnBvOiAxNTA0MDczCisuLiBkYXRlOiA2NDU2CisuLiBub25jZTogaTQ4RnZaCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0YXJmaWxlLm9wZW4oKSBmb3IgbW9kZSAiciIgd2l0aCBhIGZpbGVvYmogYXJndW1lbnQuCisKKy4uCisKKy4uIGJwbzogMTE4MjM5NAorLi4gZGF0ZTogNjQ1NQorLi4gbm9uY2U6IG9EUkJ4dQorLi4gc2VjdGlvbjogTGlicmFyeQorCitTcGVlZCB1cCBgYEhNQUMuaGV4ZGlnZXN0YGAuICAoUGF0Y2ggYnkgU2hhbmUgSG9sbG93YXkuKQorCisuLgorCisuLiBicG86IDEyNjIwMzYKKy4uIGRhdGU6IDY0NTQKKy4uIG5vbmNlOiAxWTF4Z0IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJldmVudCBUYXJGaWxlcyBmcm9tIGJlaW5nIGFkZGVkIHRvIHRoZW1zZWx2ZXMgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zLgorCisuLgorCisuLiBicG86IDEyMzA0NDYKKy4uIGRhdGU6IDY0NTMKKy4uIG5vbmNlOiBPd094ek0KKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGFyZmlsZS5weTogZml4IEV4RmlsZU9iamVjdCBzbyB0aGF0IHJlYWQoKSBhbmQgdGVsbCgpIHdvcmsgY29ycmVjdGx5Cit0b2dldGhlciB3aXRoIHJlYWRsaW5lKCkuCisKKy4uCisKKy4uIGJwbzogMTQ4NDY5NQorLi4gZGF0ZTogNjQ1MgorLi4gbm9uY2U6IGticFVkWQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgdGFyZmlsZSBtb2R1bGUgbm93IHJhaXNlcyBhIEhlYWRlckVycm9yIGV4Y2VwdGlvbiBpZiBhIGJ1ZmZlciBnaXZlbiB0bworZnJvbWJ1ZigpIGlzIGludmFsaWQuCisKKy4uCisKKy4uIGJwbzogMTUwMzc2NQorLi4gZGF0ZTogNjQ1MQorLi4gbm9uY2U6IE41VUNIaQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBwcm9ibGVtIGluIGxvZ2dpbmcuY29uZmlnIHdpdGggc3BhY2VzIGluIGNvbW1hLSBzZXBhcmF0ZWQgbGlzdHMgcmVhZAorZnJvbSBsb2dnaW5nIGNvbmZpZyBmaWxlcy4KKworLi4KKworLi4gYnBvOiAxNjA0OTA3CisuLiBkYXRlOiA2NDUwCisuLiBub25jZTogQVhRaWk4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwcm9ibGVtcyBpbiBsb2dnaW5nLmhhbmRsZXJzIGNhdXNlZCBhdCBsb2dnaW5nIHNodXRkb3duIHdoZW4gc3lzbG9nCitoYW5kbGVycyBmYWlsIHRvIGluaXRpYWxpemUgYmVjYXVzZSBvZiBzeXNsb2dkIHByb2JsZW1zLgorCisuLgorCisuLiBicG86IDE2MDgyNjcKKy4uIGRhdGU6IDY0NDkKKy4uIG5vbmNlOiBsZGNEaWgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4IGEgcmFjZSBjb25kaXRpb24gaW4gb3MubWFrZWRpcnMoKSBpZiB0aGUgZGlyZWN0b3J5IHRvIGJlIGNyZWF0ZWQgaXMKK2FscmVhZHkgdGhlcmUuCisKKy4uCisKKy4uIGJwbzogMTYxMDQzNworLi4gZGF0ZTogNjQ0OAorLi4gbm9uY2U6IHBYUEs0eAorLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggYSB0YXJmaWxlIGJ1ZyB3aXRoIGxvbmcgZmlsZW5hbWUgaGVhZGVycy4KKworLi4KKworLi4gYnBvOiAxMzcxMDc1CisuLiBkYXRlOiA2NDQ3CisuLiBub25jZTogTkU3QlkzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgQ29uZmlnUGFyc2VyIGFjY2VwdCBvcHRpb25hbCBkaWN0IHR5cGUgZm9yIG9yZGVyaW5nLCBzb3J0aW5nLCBldGMuCisKKy4uCisKKy4uIGJwbzogMTU2MzgwNworLi4gZGF0ZTogNjQ0NgorLi4gbm9uY2U6IHI1YWg4YgorLi4gc2VjdGlvbjogTGlicmFyeQorCitfY3R5cGVzIGJ1aWx0IG9uIEFJWCBmYWlscyB3aXRoIGxkIGZmaSBlcnJvci4KKworLi4KKworLi4gYnBvOiAxNTk4NjIwCisuLiBkYXRlOiA2NDQ1CisuLiBub25jZTogakh1S1VuCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0EgY3R5cGVzIFN0cnVjdHVyZSBjYW5ub3QgY29udGFpbiBpdHNlbGYuCisKKy4uCisKKy4uIGJwbzogMTA3MDA0NgorLi4gZGF0ZTogNjQ0NAorLi4gbm9uY2U6IEUxM3hjXworLi4gc2VjdGlvbjogTGlicmFyeQorCitNYXJzaGFsIG5ldy1zdHlsZSBvYmplY3RzIGxpa2UgSW5zdGFuY2VUeXBlIGluIHhtbHJwY2xpYi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NDQzCisuLiBub25jZTogUC1mRVhICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2NTdHJpbmdJTy50cnVuY2F0ZSgtMSkgbm93IHJhaXNlcyBhbiBJT0Vycm9yLCBsaWtlIFN0cmluZ0lPIGFuZCByZWd1bGFyCitmaWxlcy4KKworLi4KKworLi4gYnBvOiAxNDcyODc3CisuLiBkYXRlOiA2NDQyCisuLiBub25jZTogcUwwODNMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBUaXggc3Vid2lkZ2V0IG5hbWUgcmVzb2x1dGlvbi4KKworLi4KKworLi4gYnBvOiAxNTk0NTU0CisuLiBkYXRlOiA2NDQxCisuLiBub25jZTogU3FMM2lUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Fsd2F5cyBjbG9zZSBhIHRrU2ltcGxlRGlhbG9nIG9uIG9rKCksIGV2ZW4gaWYgYW4gZXhjZXB0aW9uIG9jY3Vycy4KKworLi4KKworLi4gYnBvOiAxNTM4ODc4CisuLiBkYXRlOiA2NDQwCisuLiBub25jZTogbTJoak51CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Rvbid0IG1ha2UgdGtTaW1wbGVEaWFsb2cgZGlhbG9ncyB0cmFuc2llbnQgaWYgdGhlIHBhcmVudCB3aW5kb3cgaXMKK3dpdGhkcmF3bi4KKworLi4KKworLi4gYnBvOiAxNTk3ODI0CisuLiBkYXRlOiA2NDM5CisuLiBub25jZTogT1JSMm9vCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3JldHVybiB0aGUgcmVnaXN0ZXJlZCBmdW5jdGlvbiBmcm9tIGF0ZXhpdC5yZWdpc3RlcigpIHRvIGZhY2lsaXRhdGUgdXNhZ2UgYXMKK2EgZGVjb3JhdG9yLgorCisuLgorCisuLiBicG86IDEzNjAyMDAKKy4uIGRhdGU6IDY0MzgKKy4uIG5vbmNlOiAyeW1JM3gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXNlIHVubWFuZ2xlZF92ZXJzaW9uIFJQTSBzcGVjIGZpZWxkIHRvIGRlYWwgd2l0aCBmaWxlIG5hbWUgbWFuZ2xpbmcuCisKKy4uCisKKy4uIGJwbzogMTM1OTIxNworLi4gZGF0ZTogNjQzNworLi4gbm9uY2U6IFJsa0RWUQorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcm9jZXNzIDJ4eCByZXNwb25zZSBpbiBhbiBmdHBsaWIgdHJhbnNmZXIgdGhhdCBwcmVjZWRlcyBhbiAxeHggcmVzcG9uc2UuCisKKy4uCisKKy4uIGJwbzogMTM1NTAyMworLi4gZGF0ZTogNjQzNgorLi4gbm9uY2U6IGd6M2pGSAorLi4gc2VjdGlvbjogTGlicmFyeQorCitzdXBwb3J0IHdoZW5jZSBhcmd1bWVudCBmb3IgR3ppcEZpbGUuc2Vlay4KKworLi4KKworLi4gYnBvOiAxMDY1MjU3CisuLiBkYXRlOiA2NDM1CisuLiBub25jZTogZHp1bzlVCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1N1cHBvcnQgcGFzc2luZyBvcGVuIGZpbGVzIGFzIGJvZHkgaW4gSFRUUENvbm5lY3Rpb24ucmVxdWVzdCgpLgorCisuLgorCisuLiBicG86IDE1Njk3OTAKKy4uIGRhdGU6IDY0MzQKKy4uIG5vbmNlOiBYTlp0blgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbWFpbGJveC5weTogTWFpbGRpci5nZXRfZm9sZGVyKCkgYW5kIE1ILmdldF9mb2xkZXIoKSB3ZXJlbid0IHBhc3NpbmcgdGhlCittZXNzYWdlIGZhY3Rvcnkgb24gdG8gbmV3bHkgY3JlYXRlZCBNYWlsZGlyL01IIG9iamVjdHMuCisKKy4uCisKKy4uIGJwbzogMTUxNDU0MworLi4gZGF0ZTogNjQzMworLi4gbm9uY2U6IEp4U3F1bgorLi4gc2VjdGlvbjogTGlicmFyeQorCittYWlsYm94LnB5OiBJbiB0aGUgTWFpbGRpciBjbGFzcywgcmVwb3J0IGVycm9ycyBpZiB0aGVyZSdzIGEgZmlsZW5hbWUgY2xhc2gKK2luc3RlYWQgb2YgcG9zc2libHkgbG9zaW5nIGEgbWVzc2FnZS4gKFBhdGNoIGJ5IERhdmlkIFdhdHNvbi4pCisKKy4uCisKKy4uIGJwbzogMTUxNDU0NAorLi4gZGF0ZTogNjQzMgorLi4gbm9uY2U6IG5mbXgtLQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUcnkgdG8gZW5zdXJlIHRoYXQgbWVzc2FnZXMvaW5kZXhlcyBoYXZlIGJlZW4gcGh5c2ljYWxseSB3cml0dGVuIHRvIGRpc2sKK2FmdGVyIGNhbGxpbmcgLmZsdXNoKCkgb3IgLmNsb3NlKCkuIChQYXRjaCBieSBEYXZpZCBXYXRzb24uKQorCisuLgorCisuLiBicG86IDE1OTIyNTAKKy4uIGRhdGU6IDY0MzEKKy4uIG5vbmNlOiBjRXJmeWMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGVsaWRlIGFyZ3VtZW50IHRvIFRraW50ZXIuVGV4dC5zZWFyY2guCisKKy4uCisKKy4uIGJwbzogODM4NTQ2CisuLiBkYXRlOiA2NDMwCisuLiBub25jZTogeUJvaGhoCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgdGVybWluYWwgYmVjb21lIGNvbnRyb2xsaW5nIGluIHB0eS5mb3JrKCkuCisKKy4uCisKKy4uIGJwbzogMTM1MTc0NAorLi4gZGF0ZTogNjQyOQorLi4gbm9uY2U6IGE0eDNRNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYXNreWVzbm9jYW5jZWwgaGVscGVyIGZvciB0a01lc3NhZ2VCb3guCisKKy4uCisKKy4uIGJwbzogMTA2MDU3NworLi4gZGF0ZTogNjQyOAorLi4gbm9uY2U6IDdIcG93bQorLi4gc2VjdGlvbjogTGlicmFyeQorCitFeHRyYWN0IGxpc3Qgb2YgUlBNIGZpbGVzIGZyb20gc3BlYyBmaWxlIGluIGJkaXN0X3JwbS4KKworLi4KKworLi4gYnBvOiAxNTg2NjEzCisuLiBkYXRlOiA2NDI3CisuLiBub25jZTogcElYbGkwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeCB6bGliIGFuZCBiejIgY29kZWNzJyBpbmNyZW1lbnRhbCBlbi9kZWNvZGVycy4KKworLi4KKworLi4gYnBvOiAxNTgzODgwCisuLiBkYXRlOiA2NDI2CisuLiBub25jZTogbndpTEFXCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeCB0YXJmaWxlJ3MgcHJvYmxlbXMgd2l0aCBsb25nIG5hbWVzIGFuZCBwb3NpeC8gR05VIG1vZGVzLgorCisuLgorCisuLiBicG86IDE1ODY0NDgKKy4uIGRhdGU6IDY0MjUKKy4uIG5vbmNlOiBGbUZvY18KKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGhlIGNvbXBpbGVyIG1vZHVsZSBub3cgZW1pdHMgdGhlIHNhbWUgYnl0ZWNvZGUgZm9yIGxpc3QgY29tcHJlaGVuc2lvbnMgYXMKK3RoZSBidWlsdC1pbiBjb21waWxlciwgdXNpbmcgdGhlIExJU1RfQVBQRU5EIG9wY29kZS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NDI0CisuLiBub25jZTogMmdCZ1dHCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBjb2RlY3MuRW5jb2RlZEZpbGUgd2hpY2ggZGlkIG5vdCB1c2UgZmlsZV9lbmNvZGluZyBpbiAyLjUuMCwgYW5kIGZpeCBhbGwKK2NvZGVjcyBmaWxlIHdyYXBwZXJzIHRvIHdvcmsgY29ycmVjdGx5IHdpdGggdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGJ1ZworIzE1ODY1MTMpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY0MjMKKy4uIG5vbmNlOiB6dmhwb3cKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTGliL21vZHVsZWZpbmRlci5weSBub3cgaGFuZGxlcyBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgaW1wb3J0cyBjb3JyZWN0bHkuCisKKy4uCisKKy4uIGJwbzogMTU2NzI3NAorLi4gZGF0ZTogNjQyMgorLi4gbm9uY2U6IExBX0RINQorLi4gc2VjdGlvbjogTGlicmFyeQorCitTdXBwb3J0IFNNVFAgb3ZlciBUTFMuCisKKy4uCisKKy4uIGJwbzogMTU2MDY5NQorLi4gZGF0ZTogNjQyMQorLi4gbm9uY2U6IGtWcGpwVworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgLm5vdGUuR05VLXN0YWNrIHRvIGN0eXBlcycgc3lzdi5TIHNvIHRoYXQgY3R5cGVzIGlzbid0IGNvbnNpZGVyZWQgYXMKK3JlcXVpcmluZyBleGVjdXRhYmxlIHN0YWNrcy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NDIwCisuLiBub25jZTogZktER2JVCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2N0eXBlcyBjYWxsYmFjayBmdW5jdGlvbnMgb25seSBzdXBwb3J0ICdmdW5kYW1lbnRhbCcgZGF0YSB0eXBlcyBhcyByZXN1bHQKK3R5cGUuICBSYWlzZSBhbiBlcnJvciB3aGVuIHNvbWV0aGluZyBlbHNlIGlzIHVzZWQuICBUaGlzIGlzIGEgcGFydGlhbCBmaXgKK2ZvciBCdWcgIzE1NzQ1ODQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjQxOQorLi4gbm9uY2U6IHlMZFZlWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdHVydGxlIHNvIHRoYXQgdGltZS5zbGVlcCBpcyBpbXBvcnRlZCBmb3IgdGhlIGVudGlyZSBsaWJyYXJ5LiBBbGxvd3MgdGhlCitkZW1vMiBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCBvbiBpdHMgb3duIGluc3RlYWQgb2Ygb25seSB3aGVuIHRoZSBtb2R1bGUgaXMKK3J1biBhcyBhIHNjcmlwdC4KKworLi4KKworLi4gYnBvOiAxNTY1MTUwCisuLiBkYXRlOiA2NDE4CisuLiBub25jZTogREpoX2ktCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzdWJzZWNvbmQgcHJvY2Vzc2luZyBmb3Igb3MudXRpbWUgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NDE3CisuLiBub25jZTogcF9ncmU5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1N1cHBvcnQgZm9yIE1TVkMgOCB3YXMgYWRkZWQgdG8gYmRpc3Rfd2luaW5zdC4KKworLi4KKworLi4gYnBvOiAxNDQ2MDQzCisuLiBkYXRlOiA2NDE2CisuLiBub25jZTogeUt6X1E0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2NvcnJlY3RseSByYWlzZSBhIExvb2t1cEVycm9yIGlmIGFuIGVuY29kaW5nIG5hbWUgZ2l2ZW4gdG8KK2VuY29kaW5ncy5zZWFyY2hfZnVuY3Rpb24oKSBjb250YWlucyBhIGRvdC4KKworLi4KKworLi4gYnBvOiAxNTYwNjE3CisuLiBkYXRlOiA2NDE1CisuLiBub25jZTogYUFpc1NKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2luIHB5Y2xiciwgcmV0dXJuIGZ1bGwgbW9kdWxlIG5hbWUgbm90IG9ubHkgZm9yIGNsYXNzZXMsIGJ1dCBhbHNvIGZvcgorZnVuY3Rpb25zLgorCisuLgorCisuLiBicG86IDE0NTc4MjMKKy4uIGRhdGU6IDY0MTQKKy4uIG5vbmNlOiBDUnhMejQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY2dpLihTdilGb3JtQ29udGVudERpY3QncyBjb25zdHJ1Y3RvciBub3cgdGFrZXMga2VlcF9ibGFua192YWx1ZXMgYW5kCitzdHJpY3RfcGFyc2luZyBrZXl3b3JkIGFyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiAxNTY2NjAyCisuLiBkYXRlOiA2NDEzCisuLiBub25jZTogYkIzQ0FCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2NvcnJlY3QgZmFpbHVyZSBvZiBwb3NpeHBhdGggdW5pdHRlc3Qgd2hlbiAkSE9NRSBlbmRzIHdpdGggYSBzbGFzaC4KKworLi4KKworLi4gYnBvOiAxNTY1NjYxCisuLiBkYXRlOiA2NDEyCisuLiBub25jZTogQVAyNVFtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2luIHdlYmJyb3dzZXIsIHNwbGl0KCkgdGhlIGNvbW1hbmQgZm9yIHRoZSBkZWZhdWx0IEdOT01FIGJyb3dzZXIgaW4gY2FzZSBpdAoraXMgYSBjb21tYW5kIHdpdGggYXJncy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NDExCisuLiBub25jZTogRFprd3FJCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01hZGUgdGhlIGVycm9yIG1lc3NhZ2UgZm9yIHRpbWUuc3RycHRpbWUgd2hlbiB0aGUgZGF0YSBhbmQgZm9ybWF0IGRvIG1hdGNoCitiZSBtb3JlIGNsZWFyLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY0MTAKKy4uIG5vbmNlOiA3ZHV2RW4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgYnVnIGluIHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkoKSB0aGF0IGxlZCB0byBhbiBlcnJvciBiZWluZworcmFpc2VkIHdoZW4gcHJpbnRfZXhjKCkgd2FzIGNhbGxlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiBzZXQuIEluIHZlcnNpb24gMi40LAordGhpcyBwcmludGVkICJOb25lIiwgcmVzdG9yZWQgdGhhdCBiZWhhdmlvci4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NDA5CisuLiBub25jZTogNzA5bXBfCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2Ugd2ViYnJvd3Nlci5CYWNrZ3JvdW5kQnJvd3NlciB1c2FibGUgaW4gV2luZG93cyAoaXQgd2Fzbid0IGJlY2F1c2UgdGhlCitjbG9zZV9mZHMgYXJnIHRvIHN1YnByb2Nlc3MuUG9wZW4gaXMgbm90IHN1cHBvcnRlZCkuCisKKy4uCisKKy4uIGJwbzogMTUwNDMzMworLi4gZGF0ZTogNjQwOAorLi4gbm9uY2U6IHk0NmVrVQorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZXZlcnRlZCBjaGFuZ2UgdG8gc2dtbGxpYiBiZWNhdXNlIGl0IGludHJvZHVjZWQgYW4gaW5maW5pdGUgbG9vcC4KKworLi4KKworLi4gYnBvOiAxNTUzMzE0CisuLiBkYXRlOiA2NDA3CisuLiBub25jZTogUkN1bUQwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0aGUgaW5zcGVjdC5weSBzbG93ZG93biB0aGF0IHdhcyBodXJ0aW5nIElQeXRob24gJiBTQUdFIGJ5IGFkZGluZworc21hcnRlciBjYWNoaW5nIGluIGluc3BlY3QuZ2V0bW9kdWxlKCkKKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2NDA2CisuLiBub25jZTogNkk2V1hBCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBtaXNzaW5nIGltcG9ydCBvZiB0aGUgdHlwZXMgbW9kdWxlIGluIGxvZ2dpbmcuY29uZmlnLgorCisuLgorCisuLiBicG86IDE1NTA4ODYKKy4uIGRhdGU6IDY0MDUKKy4uIG5vbmNlOiBEdVY4cTUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGRlY2ltYWwgbW9kdWxlIGNvbnRleHQgbWFuYWdlbWVudCBpbXBsZW1lbnRhdGlvbiB0byBtYXRjaCB0aGUKK2xvY2FsY29udGV4dCgpIGV4YW1wbGUgZnJvbSBQRVAgMzQzLgorCisuLgorCisuLiBicG86IDE1NDUzNDEKKy4uIGRhdGU6IDY0MDQKKy4uIG5vbmNlOiBFYUxoWloKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlICdjbGFzc2lmaWVyJyBrZXl3b3JkIGFyZ3VtZW50IHRvIHRoZSBEaXN0dXRpbHMgc2V0dXAoKSBmdW5jdGlvbiBub3cKK2FjY2VwdHMgdHVwbGVzIGFzIHdlbGwgYXMgbGlzdHMuCisKKy4uCisKKy4uIGJwbzogMTU0MTg2MworLi4gZGF0ZTogNjQwMworLi4gbm9uY2U6IEhVaDQweAorLi4gc2VjdGlvbjogTGlicmFyeQorCit1dWlkLnV1aWQxIGZhaWxlZCB0byBnZW5lcmF0ZSB1bmlxdWUgaWRlbnRpZmllcnMgb24gc3lzdGVtcyB3aXRoIGxvdyBjbG9jaworcmVzb2x1dGlvbi4KKworLi4KKworLi4gYnBvOiAxNTMxODYyCisuLiBkYXRlOiA2NDAyCisuLiBub25jZTogeXlZZng1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0RvIG5vdCBjbG9zZSBzdGFuZGFyZCBmaWxlIGRlc2NyaXB0b3JzIGluIHN1YnByb2Nlc3MuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjQwMQorLi4gbm9uY2U6IGxJU2FLbAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdXRmLTgtc2lnIGluY3JlbWVudGFsIGRlY29kZXIsIHdoaWNoIGRpZG4ndCByZWNvZ25pc2UgYSBCT00gd2hlbiB0aGUKK2ZpcnN0IGNodW5rIGZlZCB0byB0aGUgZGVjb2RlciBzdGFydGVkIHdpdGggYSBCT00sIGJ1dCB3YXMgbG9uZ2VyIHRoYW4gMworYnl0ZXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjQwMAorLi4gbm9uY2U6IFJGWHZndAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgaW1wbGVtZW50YXRpb24gb2YgVW5pY29kZUVycm9yIG9iamVjdHMgaGFzIGJlZW4gc2ltcGxpZmllZCAoc3RhcnQgYW5kCitlbmQgYXR0cmlidXRlcyBhcmUgbm93IHN0b3JlZCBkaXJlY3RseSBhcyBQeV9zc2l6ZV90IG1lbWJlcnMpLgorCisuLgorCisuLiBicG86IDgyOTk1MQorLi4gZGF0ZTogNjM5OQorLi4gbm9uY2U6IHY1eS1XMgorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiB0aGUgc210cGxpYiBtb2R1bGUsIFNNVFAuc3RhcnR0bHMoKSBub3cgY29tcGxpZXMgd2l0aCBSRkMgMzIwNyBhbmQKK2ZvcmdldHMgYW55IGtub3dsZWRnZSBvYnRhaW5lZCBmcm9tIHRoZSBzZXJ2ZXIgbm90IG9idGFpbmVkIGZyb20gdGhlIFRMUworbmVnb3RpYXRpb24gaXRzZWxmLiAgUGF0Y2ggY29udHJpYnV0ZWQgYnkgQmlsbCBGZW5uZXIuCisKKy4uCisKKy4uIGJwbzogMTMzOQorLi4gZGF0ZTogNjM5OAorLi4gbm9uY2U6IHpOQWtWTgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgc210cGxpYi5TTVRQIGNsYXNzIGhhcyBiZWVuIHJlZmFjdG9yZWQgYSBiaXQgc3VjaCB0aGF0IHRoZQorU01UUC5zdGFydHRscygpIGNhbGxlciBubyBsb25nZXIgbmVlZHMgdG8gY2FsbCBlaGxvKCkgYmVmb3JlaGFuZC4KK1NNVFAuc3RhcnR0bHMoKSBub3cgcmFpc2VzIGFuIGV4Y2VwdGlvbiBvZiB0aGUgc2VydmVyIGRvZXMgbm90IGNsYWltIHRvCitzdXBwb3J0IHN0YXJ0dGxzLiAgQWRkcyB0aGUgU01UUC5laGxvX29yX2hlbG9faWZfbmVlZGVkKCkgbWV0aG9kLiAgUGF0Y2gKK2NvbnRyaWJ1dGVkIGJ5IEJpbGwgRmVubmVyLgorCisuLgorCisuLiBicG86IDEwODkzNTgKKy4uIGRhdGU6IDYzOTcKKy4uIG5vbmNlOiA5MVBMYlcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHNpZ25hbC5zaWdpbnRlcnJ1cHQsIGEgd3JhcHBlciBhcm91bmQgc2lnaW50ZXJydXB0KDMpLgorCisuLgorCisuLiBicG86IDE2NTcKKy4uIGRhdGU6IDYzOTYKKy4uIG5vbmNlOiBLRXVqdGwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYWRkZWQgc2VsZWN0LmVwb2xsIGFuZCBzZWxlY3Qua3F1ZXVlLgorCisuLgorCisuLiBicG86IDE1MDYxNzEKKy4uIGRhdGU6IDYzOTUKKy4uIG5vbmNlOiBoMllvdHYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYWRkZWQgb3BlcmF0b3IubWV0aG9kY2FsbGVyKCkuCisKKy4uCisKKy4uIGJwbzogMTgyNgorLi4gZGF0ZTogNjM5NAorLi4gbm9uY2U6IFA5cXBvcAorLi4gc2VjdGlvbjogTGlicmFyeQorCitvcGVyYXRvci5hdHRyZ2V0dGVyKCkgbm93IHN1cHBvcnRzIGRvdHRlZCBhdHRyaWJ1dGUgcGF0aHMuCisKKy4uCisKKy4uIGJwbzogMTk1NworLi4gZGF0ZTogNjM5MworLi4gbm9uY2U6IG9RX3pERworLi4gc2VjdGlvbjogTGlicmFyeQorCitzeXNsb2dtb2R1bGU6IFJlbGVhc2UgR0lMIHdoZW4gY2FsbGluZyBzeXNsb2coMykuCisKKy4uCisKKy4uIGJwbzogMjExMgorLi4gZGF0ZTogNjM5MgorLi4gbm9uY2U6IENmU3J0WQorLi4gc2VjdGlvbjogTGlicmFyeQorCittbWFwLmVycm9yIGlzIG5vdyBhIHN1YmNsYXNzIG9mIEVudmlyb25tZW50RXJyb3IgYW5kIG5vdCBhIGRpcmVjdAorRW52aXJvbm1lbnRFcnJvci4KKworLi4KKworLi4gYnBvOiAyMTExCisuLiBkYXRlOiA2MzkxCisuLiBub25jZTogblVQSGRaCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK21tYXAgc2VnZmF1bHRzIHdoZW4gdHJ5aW5nIHRvIHdyaXRlIGEgYmxvY2sgb3BlbmVkIHdpdGggUFJPVF9SRUFELgorCisuLgorCisuLiBicG86IDIwNjMKKy4uIGRhdGU6IDYzOTAKKy4uIG5vbmNlOiAtQVFiUjMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY29ycmVjdCBvcmRlciBvZiB1dGltZSBhbmQgc3RpbWUgaW4gb3MudGltZXMoKSByZXN1bHQgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiAxNzM2CisuLiBkYXRlOiA2Mzg5CisuLiBub25jZTogQWc1cEdCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBmaWxlIG5hbWUgaGFuZGxpbmcgb2YgX21zaS5GQ0lDcmVhdGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjM4OAorLi4gbm9uY2U6IHpOc0dtUworLi4gc2VjdGlvbjogTGlicmFyeQorCitVcGRhdGVkIGBgYmlnNWhrc2NzYGAgY29kZWMgdG8gdGhlIEhLU0NTIHJldmlzaW9uIG9mIDIwMDQuCisKKy4uCisKKy4uIGJwbzogMTk0MAorLi4gZGF0ZTogNjM4NworLi4gbm9uY2U6IFZUajl1VworLi4gc2VjdGlvbjogTGlicmFyeQorCittYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBjdXJzZXMuZmlsdGVyKCkgYmVmb3JlIGN1cnNlcy5pbml0c2NyKCkgYXMgdGhlCitkb2N1bWVudGF0aW9uIHNheXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjM4NgorLi4gbm9uY2U6IEoxVlhjMworLi4gc2VjdGlvbjogTGlicmFyeQorCitCYWNrcG9ydCBvZiBfZmlsZWlvIG1vZHVsZSBmcm9tIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMTA4Nzc0MQorLi4gZGF0ZTogNjM4NQorLi4gbm9uY2U6IHBjREFabQorLi4gc2VjdGlvbjogTGlicmFyeQorCittbWFwLm1tYXAgaXMgbm93IGEgY2xhc3MsIG5vdCBhIGZhY3RvcnkgZnVuY3Rpb24uIEl0IGlzIGFsc28gc3ViY2xhc3NhYmxlCitub3cuCisKKy4uCisKKy4uIGJwbzogMTY0OAorLi4gZGF0ZTogNjM4NAorLi4gbm9uY2U6IDFDNUpYRworLi4gc2VjdGlvbjogTGlicmFyeQorCithZGRlZCBgYHN5cy5nZXRwcm9maWxlKClgYCBhbmQgYGBzeXMuZ2V0dHJhY2UoKWBgLgorCisuLgorCisuLiBicG86IDE2NjMzMjkKKy4uIGRhdGU6IDYzODMKKy4uIG5vbmNlOiBtMGc4dnUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYWRkZWQgYGBvcy5jbG9zZXJhbmdlKClgYCBmdW5jdGlvbiB0byBxdWlja2x5IGNsb3NlIGEgcmFuZ2Ugb2YgZmlsZQorZGVzY3JpcHRvcnMgd2l0aG91dCBjb25zaWRlcmluZyBlcnJvcnMuCisKKy4uCisKKy4uIGJwbzogOTc2ODgwCisuLiBkYXRlOiA2MzgyCisuLiBub25jZTogUjUxdVFrCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2BgbW1hcGBgIG9iamVjdHMgbm93IGhhdmUgYW4gYGByZmluZGBgIG1ldGhvZCB0aGF0IHdvcmtzIGFzIGV4cGVjdGVkLgorYGBtbWFwLmZpbmRgYCBhbHNvIHRha2VzIGFuIG9wdGlvbmFsIGBgZW5kYGAgcGFyYW1ldGVyLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzODEKKy4uIG5vbmNlOiB3ckdYb3UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworX3dpbnJlZydzIEhLRVkgb2JqZWN0IGhhcyBnYWluZWQgX19lbnRlcl9fIGFuZCBfX2V4aXRfXyBtZXRob2RzIHRvIHN1cHBvcnQKK3RoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2wuICBUaGUgX3dpbnJlZyBtb2R1bGUgYWxzbyBnYWluZWQgYSBuZXcKK2Z1bmN0aW9uIGBgRXhwYW5kRW52aXJvbm1lbnRTdHJpbmdzYGAgdG8gZXhwYW5kIFJFR19FWFBBTkRfU1oga2V5cy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzgwCisuLiBub25jZToga2UwUEs0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2l0ZXJ0b29scy5zdGFybWFwKCkgbm93IGFjY2VwdHMgYW55IGl0ZXJhYmxlIGlucHV0LiBQcmV2aW91c2x5LCBpdCByZXF1aXJlZAordGhlIGZ1bmN0aW9uIGlucHV0cyB0byBiZSB0dXBsZXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjM3OQorLi4gbm9uY2U6IEpOS0taOAorLi4gc2VjdGlvbjogTGlicmFyeQorCitpdGVydG9vbHMuY2hhaW4oKSBub3cgaGFzIGFuIGFsdGVybmF0ZSBjb25zdHJ1Y3RvciwgY2hhaW4uZnJvbV9pdGVyYWJsZSgpLgorCisuLgorCisuLiBicG86IDE2NDYKKy4uIGRhdGU6IDYzNzgKKy4uIG5vbmNlOiBEcVFpRzcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBzb2NrZXQgc3VwcG9ydCBUSVBDLiBUaGUgc29ja2V0IG1vZHVsZSBub3cgaGFzIHN1cHBvcnQgZm9yIFRJUEMgdW5kZXIKK0xpbnV4LCBzZWUgaHR0cDovL3RpcGMuc2YubmV0LyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2Mzc3CisuLiBub25jZTogWXJKaEdhCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIGludGVyZmFjZSBmb3IgV2luZG93cycgV1NBSW9jdGwgdG8gc29ja2V0IG9iamVjdCBhbmQgYWRkZWQgYW4gZXhhbXBsZQorZm9yIGEgc2ltcGxlIG5ldHdvcmsgc25pZmZlci4KKworLi4KKworLi4gYnBvOiAxMzAxCisuLiBkYXRlOiA2Mzc2CisuLiBub25jZTogdzNOOEluCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0JhZCBhc3NlcnQgaW4gX3RraW50ZXIgZml4ZWQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjM3NQorLi4gbm9uY2U6IDF6bWZEbworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBiZGlzdF93aW5pbnN0IGV4ZWN1dGFibGUgZm9yIFZTIDIwMDguCisKKy4uCisKKy4uIGJwbzogMTYwNAorLi4gZGF0ZTogNjM3NAorLi4gbm9uY2U6IGQzSEhSUgorLi4gc2VjdGlvbjogTGlicmFyeQorCitjb2xsZWN0aW9ucy5kZXF1ZS5fX2luaXRfXyhpdGVyYWJsZSkgbm93IGNsZWFycyBhbnkgcHJpb3IgY29udGVudHMgYmVmb3JlCithZGRpbmcgZWxlbWVudHMgZnJvbSB0aGUgaXRlcmFibGUuICBUaGlzIGZpeCBicmluZ3MgdGhlIGJlaGF2aW9yIGludG8gbGluZQord2l0aCB0aGF0IGZvciBsaXN0Ll9faW5pdF9fKCkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjM3MworLi4gbm9uY2U6IGhISVBvNworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCB3aWRlIGNoYXIgZnVuY3Rpb25zIHRvIG1zdmNydCBtb2R1bGU6IGdldHdjaCwgZ2V0d2NoZSwgcHV0d2NoIGFuZAordW5nZXR3Y2guIFRoZSBmdW5jdGlvbnMgYWNjZXB0IG9yIHJldHVybiB1bmljb2RlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzNzIKKy4uIG5vbmNlOiBPRkstb1kKKy4uIHNlY3Rpb246IExpYnJhcnkKKworb3MuYWNjZXNzIG5vdyByZXR1cm5zIFRydWUgb24gV2luZG93cyBmb3IgYW55IGV4aXN0aW5nIGRpcmVjdG9yeS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzcxCisuLiBub25jZTogdkRlM00zCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIHdhcm5weTNrIGZ1bmN0aW9uIHRvIHRoZSB3YXJuaW5ncyBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjM3MAorLi4gbm9uY2U6IGJyUjN4bAorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYXJzaGFsLmR1bXBzKCkgbm93IGV4cGVjdHMgZXhhY3QgdHlwZSBtYXRjaGVzIGZvciBpbnQsIGxvbmcsIGZsb2F0LAorY29tcGxleCwgdHVwbGUsIGxpc3QsIGRpY3QsIHNldCwgYW5kIGZyb3plbnNldC4gIEZvcm1lcmx5LCBpdCB3b3VsZCBzaWxlbnRseQorbWlzY29kZSBzdWJjbGFzc2VzIG9mIHRob3NlIHR5cGVzLiAgTm93LCBpdCByYWlzZXMgYSBWYWx1ZUVycm9yIGluc3RlYWQuCisKKy4uCisKKy4uIGJwbzogMTM4ODQ0MAorLi4gZGF0ZTogNjM2OQorLi4gbm9uY2U6IEwwcTRnaworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgc2V0X2NvbXBsZXRpb25fZGlzcGxheV9tYXRjaGVzX2hvb2sgYW5kIGdldF9jb21wbGV0aW9uX3R5cGUgdG8gcmVhZGxpbmUuCisKKy4uCisKKy4uIGJwbzogMTY0OTA5OAorLi4gZGF0ZTogNjM2OAorLi4gbm9uY2U6IGFoT3Z3LQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBdm9pZCBkZWNsYXJhdGlvbiBvZiB6ZXJvLXNpemVkIGFycmF5IGRlY2xhcmF0aW9uIGluIHN0cnVjdHVyZS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzY3CisuLiBub25jZTogLWdzb1hUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbW92ZWQgdGhlIHJnYmltZyBtb2R1bGU7IGJlZW4gZGVwcmVjYXRlZCBzaW5jZSBQeXRob24gMi41LgorCisuLgorCisuLiBicG86IDE3MjEzMDkKKy4uIGRhdGU6IDYzNjYKKy4uIG5vbmNlOiBYbTJZNjAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcHJldmVudCBic2RkYiBtb2R1bGUgZnJvbSBmcmVlaW5nIHJhbmRvbSBtZW1vcnkuCisKKy4uCisKKy4uIGJwbzogMTIzMworLi4gZGF0ZTogNjM2NQorLi4gbm9uY2U6IDg1LXlDMworLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggYnNkZGIuZGJzaGVsdmUuREJTaGVsZiBhcHBlbmQgbWV0aG9kIHRvIHdvcmsgYXMgaW50ZW5kZWQgZm9yIFJFQ05PCitkYXRhYmFzZXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjM2NAorLi4gbm9uY2U6IFA2MTdBSworLi4gc2VjdGlvbjogTGlicmFyeQorCitweWJzZGRiLnNmLm5ldCBCdWcgIzQ3NzE4MjogTG9hZCB0aGUgZGF0YWJhc2UgZmxhZ3MgYXQgZGF0YWJhc2Ugb3BlbiB0aW1lIHNvCit0aGF0IG9wZW5pbmcgYSBkYXRhYmFzZSBwcmV2aW91c2x5IGNyZWF0ZWQgd2l0aCB0aGUgREJfRFVQIG9yIERCX0RVUFNPUlQKK2ZsYWcgc2V0IHdpbGwga2VlcCB0aGUgcHJvcGVyIGJlaGF2aW9yIG9uIHN1YnNlcXVlbnQgb3BlbnMuICBTcGVjaWZpY2FsbHk6CitkaWN0aW9uYXJ5IGFzc2lnbm1lbnQgdG8gYSBEQiBvYmplY3Qgd2lsbCByZXBsYWNlIGFsbCB2YWx1ZXMgZm9yIGEgZ2l2ZW4ga2V5Cit3aGVuIHRoZSBkYXRhYmFzZSBhbGxvd3MgZHVwbGljYXRlIHZhbHVlcy4gIERCIHVzZXJzIHNob3VsZCB1c2UgREIucHV0KGssIHYpCit3aGVuIHRoZXkgd2FudCB0byBzdG9yZSBkdXBsaWNhdGVzOyBub3QgREJba10gPSB2LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzNjMKKy4uIG5vbmNlOiA1TkhHTmMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHRoZSBic2RkYi5kYi5EQkVudi5sb2NrX2lkX2ZyZWUgbWV0aG9kLgorCisuLgorCisuLiBicG86IDE2ODY0NzUKKy4uIGRhdGU6IDYzNjIKKy4uIG5vbmNlOiBnd3B6cHEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU3VwcG9ydCBzdGF0J2luZyBvcGVuIGZpbGVzIG9uIFdpbmRvd3MgYWdhaW4uCisKKy4uCisKKy4uIGJwbzogMTE4NTQ0NworLi4gZGF0ZTogNjM2MQorLi4gbm9uY2U6IDRTZEVpdQorLi4gc2VjdGlvbjogTGlicmFyeQorCitiaW5hc2NpaS5iMmFfcXAoKSBub3cgY29ycmVjdGx5IHF1b3RlcyBiaW5hcnkgY2hhcmFjdGVycyB3aXRoIEFTQ0lJIHZhbHVlCitsZXNzIHRoYW4gMzIuIEFsc28sIGl0IGNvcnJlY3RseSBxdW90ZXMgZG90cyBvbmx5IGlmIHRoZXkgb2NjdXIgb24gYSBzaW5nbGUKK2xpbmUsIGFzIG9wcG9zZWQgdG8gdGhlIHByZXZpb3VzIGJlaGF2aW9yIG9mIHF1b3RpbmcgZG90cyBpZiB0aGV5IGFyZSB0aGUKK3NlY29uZCBjaGFyYWN0ZXIgb2YgYW55IGxpbmUuCisKKy4uCisKKy4uIGJwbzogMTYyMjg5NgorLi4gZGF0ZTogNjM2MAorLi4gbm9uY2U6IDRXYm1rTworLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggYSByYXJlIGNvcm5lciBjYXNlIHdoZXJlIHRoZSBiejIgbW9kdWxlIHJhaXNlZCBhbiBlcnJvciBpbiBzcGl0ZSBvZiBhCitzdWNjZXNmdWwgY29tcHJlc3Npb24uCisKKy4uCisKKy4uIGJwbzogMTY1NDQxNworLi4gZGF0ZTogNjM1OQorLi4gbm9uY2U6IEgxcDJFVAorLi4gc2VjdGlvbjogTGlicmFyeQorCittYWtlIG9wZXJhdG9yLntnZXQsc2V0LGRlbH1zbGljZSB1c2UgdGhlIGZ1bGwgcmFuZ2Ugb2YgUHlfc3NpemVfdC4KKworLi4KKworLi4gYnBvOiAxNjQ2NzI4CisuLiBkYXRlOiA2MzU4CisuLiBub25jZTogcWt2ekVSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2RhdGV0aW1lLmZyb210aW1lc3RhbXAgZmFpbHMgd2l0aCBuZWdhdGl2ZSBmcmFjdGlvbmFsIHRpbWVzLiAgV2l0aCB1bml0dGVzdC4KKworLi4KKworLi4gYnBvOiAxNDkwMTkwCisuLiBkYXRlOiA2MzU3CisuLiBub25jZTogbjdlbkVLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3Bvc2l4bW9kdWxlIG5vdyBpbmNsdWRlcyBvcy5jaGZsYWdzKCkgYW5kIG9zLmxjaGZsYWdzKCkgZnVuY3Rpb25zIG9uCitwbGF0Zm9ybXMgd2hlcmUgdGhlIHVuZGVybHlpbmcgc3lzdGVtIGNhbGxzIGFyZSBhdmFpbGFibGUuCisKKy4uCisKKy4uIGJwbzogMTQ5NDE0MAorLi4gZGF0ZTogNjM1NgorLi4gbm9uY2U6IC0tQ0tXUAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIG5ldyBzdHJ1Y3QuU3RydWN0IG9iamVjdC4KKworLi4KKworLi4gYnBvOiAxNDMyMzk5CisuLiBkYXRlOiA2MzU1CisuLiBub25jZTogdVZrMEpZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1N1cHBvcnQgdGhlIEhDSSBwcm90b2NvbCBmb3IgYmx1ZXRvb3RoIHNvY2tldHMKKworLi4KKworLi4gYnBvOiAxNjU3Mjc2CisuLiBkYXRlOiA2MzU0CisuLiBub25jZTogZmNVZExtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgTkVUTElOS19ETlJUTVNHIGNvbmRpdGlvbmFsLgorCisuLgorCisuLiBicG86IDE2NTM3MzYKKy4uIGRhdGU6IDYzNTMKKy4uIG5vbmNlOiB0TnVVcTcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29tcGxhaW4gYWJvdXQga2V5d29yZCBhcmd1bWVudHMgdG8gdGltZS5pc29mb3JtYXQuCisKKy4uCisKKy4uIGJwbzogMTQ4NjY2MworLi4gZGF0ZTogNjM1MgorLi4gbm9uY2U6IHNSMzVvUQorLi4gc2VjdGlvbjogTGlicmFyeQorCitkb24ndCByZWplY3Qga2V5d29yZCBhcmd1bWVudHMgZm9yIHN1YmNsYXNzZXMgb2YgYnVpbHQtaW4gdHlwZXMuCisKKy4uCisKKy4uIGJwbzogMTYxMDU3NQorLi4gZGF0ZTogNjM1MQorLi4gbm9uY2U6IHhDMEYyeAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgc3RydWN0IG1vZHVsZSBub3cgc3VwcG9ydHMgdGhlICd0JyBjb2RlLCBmb3IgQzk5IF9Cb29sLgorCisuLgorCisuLiBicG86IDE2MzUwNTgKKy4uIGRhdGU6IDYzNTAKKy4uIG5vbmNlOiAxSDRXTmwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZW5zdXJlIHRoYXQgaHRvbmwgYW5kIGZyaWVuZHMgbmV2ZXIgYWNjZXB0IG9yIHJldHVybiBuZWdhdGl2ZSBudW1iZXJzLCBwZXIKK3RoZSB1bmRlcmx5aW5nIEMgaW1wbGVtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogMTU0NDI3OQorLi4gZGF0ZTogNjM0OQorLi4gbm9uY2U6IG9TOVFtSworLi4gc2VjdGlvbjogTGlicmFyeQorCitJbXByb3ZlIHRocmVhZC1zYWZldHkgb2YgdGhlIHNvY2tldCBtb2R1bGUgYnkgbW92aW5nIHRoZSBzb2NrX2FkZHJfdCBzdG9yYWdlCitvdXQgb2YgdGhlIHNvY2tldCBvYmplY3QuCisKKy4uCisKKy4uIGJwbzogMTAxOTgwOAorLi4gZGF0ZTogNjM0OAorLi4gbm9uY2U6IFdaZUo1RworLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggYnVnIHRoYXQgY2F1c2VzIGFuIGluY29ycmVjdCBlcnJvciB0byBiZSByZXR1cm5lZCB3aGVuIGEgc29ja2V0IHRpbWVvdXQKK2lzIHNldCBhbmQgYSBjb25uZWN0aW9uIGF0dGVtcHQgZmFpbHMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjM0NworLi4gbm9uY2U6IHlnZ1FWYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitTcGVlZCB1cCBmdW5jdGlvbiBjYWxscyBpbnRvIHRoZSBtYXRoIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAxNTg4MjE3CisuLiBkYXRlOiA2MzQ2CisuLiBub25jZTogQ1otamRPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Rvbid0IHBhcnNlICI9ICIgYXMgYSBzb2Z0IGxpbmUgYnJlYWsgaW4gYmluYXNjaWkncyBhMmJfcXAoKSBmdW5jdGlvbiwKK2luc3RlYWQgbGVhdmUgaXQgaW4gdGhlIHN0cmluZyBhcyBxdW9wcmkuZGVjb2RlKCkgZG9lcy4KKworLi4KKworLi4gYnBvOiAxNTk5NzgyCisuLiBkYXRlOiA2MzQ1CisuLiBub25jZTogblpWNmsxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzZWdmYXVsdCBvbiBic2RkYi5kYi5EQigpLnR5cGUoKS4KKworLi4KKworLi4gYnBvOiAxNTY3NjY2CisuLiBkYXRlOiA2MzQ0CisuLiBub25jZTogWXk4bmJmCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0VtdWxhdGUgR2V0RmlsZUF0dHJpYnV0ZXNFeEEgZm9yIFdpbjk1LgorCisuLgorCisuLiBicG86IDE1NzYxNjYKKy4uIGRhdGU6IDYzNDMKKy4uIG5vbmNlOiB1UHVFTDMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU3VwcG9ydCBvcy51dGltZSBmb3IgZGlyZWN0b3JpZXMgb24gV2luZG93cyBOVCsuCisKKy4uCisKKy4uIGJwbzogMTU3MjcyNAorLi4gZGF0ZTogNjM0MgorLi4gbm9uY2U6IEFTMTdvdAorLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggdHlwbyAoJz0nIGluc3RlYWQgb2YgJz09JykgaW4gX21zaS5jLgorCisuLgorCisuLiBicG86IDE1NzI4MzIKKy4uIGRhdGU6IDYzNDEKKy4uIG5vbmNlOiB1c3FIbnkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4IGEgYnVnIGluIElTTy0yMDIyIGNvZGVjcyB3aGljaCBtYXkgY2F1c2Ugc2VnZmF1bHQgd2hlbiBlbmNvZGluZyBub24tQk1QCit1bmljb2RlIGNoYXJhY3RlcnMuCisKKy4uCisKKy4uIGJwbzogMTU1Njc4NAorLi4gZGF0ZTogNjM0MAorLi4gbm9uY2U6IDFDQVphaQorLi4gc2VjdGlvbjogTGlicmFyeQorCithbGxvdyBmb3JtYXQgc3RyaW5ncyBsb25nZXIgdGhhbiAxMjcgY2hhcmFjdGVycyBpbiBkYXRldGltZSdzIHN0cmZ0aW1lCitmdW5jdGlvbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzM5CisuLiBub25jZTogSVgxc3U3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBpdGVydG9vbHMuY291bnQobikgdG8gd29yayB3aXRoIG5lZ2F0aXZlIG51bWJlcnMgYWdhaW4uCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjMzOAorLi4gbm9uY2U6IEUxM25MWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSTElNSVRfU0JTSVpFIHdhcyBhZGRlZCB0byB0aGUgcmVzb3VyY2UgbW9kdWxlIHdoZXJlIGF2YWlsYWJsZS4KKworLi4KKworLi4gYnBvOiAxNTUxNDI3CisuLiBkYXRlOiA2MzM3CisuLiBub25jZTogRmJ4cmpBCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeCBhIHdyb25nIE5VTEwgcG9pbnRlciBjaGVjayBpbiB0aGUgd2luMzIgdmVyc2lvbiBvZiBvcy51cmFuZG9tKCkuCisKKy4uCisKKy4uIGJwbzogMTU0ODA5MgorLi4gZGF0ZTogNjMzNgorLi4gbm9uY2U6IENRM1picworLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggY3Vyc2VzLnRwYXJtIHNlZyBmYXVsdCBvbiBpbnZhbGlkIGlucHV0LgorCisuLgorCisuLiBicG86IDExMTQKKy4uIGRhdGU6IDYzMzUKKy4uIG5vbmNlOiBoczMyRG8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4IGN1cnNlcyBtb2R1bGUgY29tcGlsYXRpb24gb24gNjQtYml0IEFJWCwgJiBwb3NzaWJseSBvdGhlciA2NC1iaXQgTFA2NAorcGxhdGZvcm1zIHdoZXJlIGF0dHJfdCBpcyBub3QgdGhlIHNhbWUgc2l6ZSBhcyBhIGxvbmcuICAoQ29udHJpYnV0ZWQgYnkgTHVrZQorTWV3YnVybi4pCisKKy4uCisKKy4uIGJwbzogMTU1MDcxNAorLi4gZGF0ZTogNjMzNAorLi4gbm9uY2U6IF8zTHByTgorLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggU3lzdGVtRXJyb3IgZnJvbSBpdGVydG9vbHMudGVlIG9uIG5lZ2F0aXZlIHZhbHVlIGZvciBuLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzMzMKKy4uIG5vbmNlOiA0NGhnVTUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYSBmZXcgYnVncyBvbiBjamtjb2RlY3M6IC0gZ2JrIGFuZCBnYjE4MDMwIGNvZGVjIG5vdyBoYW5kbGUgVSszMEZCCitLQVRBS0FOQSBNSURETEUgRE9UICAgY29ycmVjdGx5LiAtIGlzbzIwMjJfanBfMiBjb2RlYyBub3cgZW5jb2RlcyBpbnRvIEcwCitmb3IgS1MgWCAxMDAxLCBHQjIzMTIgICBjb2RlcG9pbnRzIHRvIGNvbmZvcm0gdGhlIHN0YW5kYXJkLiAtIGlzbzIwMjJfanBfMworYW5kIGlzbzIwMjJfanBfMjAwNCBjb2RlYyBjYW4gZW5jb2RlIEpJUyBYIDAyMTM6MiAgIGNvZGVwb2ludHMgbm93LgorCisuLgorCisuLiBicG86IDE1NTI3MjYKKy4uIGRhdGU6IDYzMzIKKy4uIG5vbmNlOiBLUmlVdjQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaW4gcmVhZGxpbmUuYywgYXZvaWQgcmVwZWF0ZWRseSBwb2xsaW5nIGluIGludGVyYWN0aXZlIG1vZGUgYnkgb25seSBwbGFjaW5nCithIHRpbWVvdXQgb24gdGhlIHNlbGVjdCgpIGlmIGFuIGlucHV0IGhvb2sgaGFzIGJlZW4gZGVmaW5lZC4gIFRoaXMgcHJldmVudHMKK2FuIGludGVyYWN0aXZlIFB5dGhvbiBmcm9tIHdha2luZyB1cCAxMCB0aW1lcyBwZXIgc2Vjb25kLiAgUGF0Y2ggYnkgUmljaGFyZAorQm91bHRvbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzMxCisuLiBub25jZTogYTk0eHdTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeGVkIGEgYnVnIHdpdGggYnNkZGIuREIuc3RhdDogdGhlIGZsYWdzIGFuZCB0eG4ga2V5d29yZCBhcmd1bWVudHMgd2VyZQordHJhbnNwb3NlZC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzMwCisuLiBub25jZTogbTN1VGtLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIHN1cHBvcnQgZm9yIGxpbmtpbmcgdGhlIGJzZGRiIG1vZHVsZSBhZ2FpbnN0IEJlcmtlbGV5REIgNC41LngsIDQuNi54CithbmQgNC43LnguCisKKy4uCisKKy4uIGJwbzogMTYzMzYyMQorLi4gZGF0ZTogNjMyOQorLi4gbm9uY2U6IE01TmRjagorLi4gc2VjdGlvbjogTGlicmFyeQorCitpZiBjdXJzZXMucmVzaXpldGVybSgpIG9yIGN1cnNlcy5yZXNpemVfdGVybSgpIGlzIGNhbGxlZCwgdXBkYXRlCitfY3Vyc2VzLkxJTkVTLCBfY3Vyc2VzLkNPTFMsIGN1cnNlcy5MSU5FUyBhbmQgY3Vyc2VzLkNPTFMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjMyOAorLi4gbm9uY2U6IEhydEVBNgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYW4gb2ZmLWJ5LW9uZSBidWcgaW4gbG9jYWxlLnN0cnhmcm0oKS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzI3CisuLiBub25jZTogb2pZd0RVCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBsaWJmZmkgY29uZmlndXJlIGZvciBocHBhKi0qLWxpbnV4KiB8IHBhcmlzYyotKi1saW51eCouCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjMyNgorLi4gbm9uY2U6IEExaWRZegorLi4gc2VjdGlvbjogTGlicmFyeQorCitCdWlsZCB1c2luZyBzeXN0ZW0gZmZpIGxpYnJhcnkgb24gYXJtKi1saW51eCouCisKKy4uCisKKy4uIGJwbzogMTM3MgorLi4gZGF0ZTogNjMyNQorLi4gbm9uY2U6IFZwWE9KOQorLi4gc2VjdGlvbjogTGlicmFyeQorCit6bGlibW9kdWxlLmM6IGludCBvdmVyZmxvdyBpbiBQeVpsaWJfZGVjb21wcmVzcworCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzMjQKKy4uIG5vbmNlOiBhdDVYZF8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworYnNkZGIgbW9kdWxlOiBGaXggbWVtb3J5IGxlYWsgd2hlbiB1c2luZyBkYXRhYmFzZSBjdXJzb3JzIG9uIGRhdGFiYXNlcword2l0aG91dCBhIERCRW52LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzMjMKKy4uIG5vbmNlOiBpbE9oS1EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHNxbGl0ZTMgbW9kdWxlIHdhcyB1cGRhdGVkIHRvIHB5c3FsaXRlIDIuNC4xLgorCisuLgorCisuLiBicG86IDgxMzM0MgorLi4gZGF0ZTogNjMyMgorLi4gbm9uY2U6IHM1eXVrRQorLi4gc2VjdGlvbjogSURMRQorCitTdGFydCB0aGUgSURMRSBzdWJwcm9jZXNzIHdpdGggLVFuZXcgaWYgdGhlIHBhcmVudCBpcyBzdGFydGVkIHdpdGggdGhhdAorb3B0aW9uLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzMjEKKy4uIG5vbmNlOiBKaXlDZEYKKy4uIHNlY3Rpb246IElETEUKKworSURMRTogSG9ub3IgdGhlICJDYW5jZWwiIGFjdGlvbiBpbiB0aGUgc2F2ZSBkaWFsb2cgKERlYmlhbiBidWcgIzI5OTA5MikuCisKKy4uCisKKy4uIGJwbzogMzAzNTcKKy4uIGRhdGU6IDYzMjAKKy4uIG5vbmNlOiBuNENQRWEKKy4uIHNlY3Rpb246IFRlc3RzCisKK3Rlc3RfdGhyZWFkOiBzZXRVcCgpIG5vdyB1c2VzIHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkgYW5kCitzdXBwb3J0LnRocmVhZGluZ19jbGVhbnVwKCkgdG8gd2FpdCB1bnRpbCB0aHJlYWRzIGNvbXBsZXRlIHRvIGF2b2lkIHJhbmRvbQorc2lkZSBlZmZlY3RzIG9uIGZvbGxvd2luZyB0ZXN0cy4gSW5pdGlhbCBwYXRjaCB3cml0dGVuIGJ5IEdyemVnb3J6IEdyenl3YWN6LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzMTkKKy4uIG5vbmNlOiBQVmpOclUKKy4uIHNlY3Rpb246IFRlc3RzCisKK1JlZmFjdG9yIHRlc3RfbG9nZ2luZyB0byB1c2UgdW5pdHRlc3QuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjMxOAorLi4gbm9uY2U6IDdqLWhoQQorLi4gc2VjdGlvbjogVGVzdHMKKworUmVmYWN0b3IgdGVzdF9wcm9maWxlIGFuZCB0ZXN0X2Nwcm9maWxlIHRvIHVzZSB0aGUgc2FtZSBjb2RlIHRvIHByb2ZpbGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjMxNworLi4gbm9uY2U6IHE5czNlNworLi4gc2VjdGlvbjogVGVzdHMKKworTWFrZSB0ZXN0X3J1bnB5IHJlZW50cmFudCBieSBmaXhpbmcgX2NoZWNrX21vZHVsZSB0byBjbGVhciBvdXQgYW55IG1vZHVsZQorYmVpbmcgdGVzdGVkLiAgV2FzIGNhdXNpbmcgYW4gZXJyb3IgYnkgX19pbXBvcnRfXyBkb2luZyBhIHJlbG9hZCBvbiB0aGUKK3NlY29uZCBydW4gYW5kIHRodXMgc3VwcHJlc3NpbmcgYnl0ZWNvZGUgcmVjcmVhdGlvbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzE2CisuLiBub25jZTogN2pRbmtZCisuLiBzZWN0aW9uOiBUZXN0cworCitDYXB0dXJlIHNvY2tldCBjb25uZWN0aW9uIHJlc2V0cyBhbmQgdGltZW91dHMgaW4gdGVzdF9zb2NrZXRfc3NsIGFuZAordGVzdF91cmxsaWIybmV0IGFuZCByYWlzZSB0ZXN0LnRlc3Rfc3VwcG9ydC5SZXNvdXJjZURlbmllZC4KKworLi4KKworLi4gYnBvOiAxNTU5NDEzCisuLiBkYXRlOiA2MzE1CisuLiBub25jZTogR29XUWltCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggdGVzdF9jbWRfbGluZSBpZiBzeXMuZXhlY3V0YWJsZSBjb250YWlucyBhIHNwYWNlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzMTQKKy4uIG5vbmNlOiB2anRSX0QKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZGVkIHRlc3QudGVzdF9zdXBwb3J0LlRyYW5zaWVudFJlc291cmNlIHdoaWNoIGlzIGEgY29udGV4dCBtYW5hZ2VyIHRvCitzdXJyb3VuZCBjYWxscyB0byByZXNvdXJjZXMgdGhhdCBhcmUgbm90IGd1YXJhbnRlZWQgdG8gd29yayBldmVuIGlmCit0ZXN0LnRlc3Rfc3VwcG9ydC5yZXF1aXJlcyBzYXlzIHRoYXQgdGhlIHJlc291cmNlIHNob3VsZCBleGlzdC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzEzCisuLiBub25jZTogNno3YktCCisuLiBzZWN0aW9uOiBUZXN0cworCitBZGRlZCBhIHRlc3QgZm9yIHNsaWNpbmcgb2YgYW4gZXhjZXB0aW9uLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzMTIKKy4uIG5vbmNlOiBpZWlsX08KKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZGVkIHRlc3QudGVzdF9zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQuICBJdCdzIGEgY2xhc3MgdGhhdCBwcm92aWRlcyBhCitjb250ZXh0IG1hbmFnZXIgc28gdGhhdCBvbmUgY2FuIHRlbXBvcmFyaWx5IHNldCBvciB1bnNldCBlbnZpcm9ubWVudAordmFyaWFibGVzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzMTEKKy4uIG5vbmNlOiBqbXVtSDAKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZGVkIHNvbWUgdGVzdHMgZm9yIG1vZHVsZWZpbmRlci4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzEwCisuLiBub25jZTogMEt6NDRICisuLiBzZWN0aW9uOiBUZXN0cworCitDb252ZXJ0ZWQgdGVzdF9pbXAgdG8gdXNlIHVuaXR0ZXN0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYzMDkKKy4uIG5vbmNlOiBzbXJSZnMKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCBic2RkYiB0ZXN0X2Jhc2ljcy50ZXN0MDZfVHJhbnNhY3Rpb25zIHRvIGNoZWNrIHRoZSB2ZXJzaW9uIG51bWJlcgorcHJvcGVybHkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjMwOAorLi4gbm9uY2U6IFo0SzNDSgorLi4gc2VjdGlvbjogVGVzdHMKKwordGVzdC50ZXN0X3N1cHBvcnQuY2F0Y2hfd2FybmluZyBpcyBhIG5ldyBjb250ZXh0IG1hbmFnZXIgdGhhdCBjYW4gYmUgdXNlZCB0bworY2F0Y2ggdGhlIHdhcm5pbmdzIGlzc3VlZCBieSB0aGUgd2FybmluZyBmcmFtZXdvcmsuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjMwNworLi4gbm9uY2U6IGxFcUJZTworLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weSBub3cgY3JlYXRlcyB0aGUgYmFja3VwIGZpbGUgdXNpbmcgc2h1dGlsLmNvcHkgdG8KK3ByZXNlcnZlIHVzZXIvZ3JvdXAgYW5kIHBlcm1pc3Npb25zLiBBZGRlZCBhbHNvIGEgLS1ub2JhY2t1cCBvcHRpb24gdG8gbm90CitjcmVhdGUgdGhlIGJhY2t1cCBpZiB0aGUgdXNlciBpcyBjb25jZXJuZWQgcmVnYXJkaW5nIHRoaXMuICBDaGVjayBpc3N1ZQorIzEwNTA4MjggZm9yIG1vcmUgZGV0YWlscy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzA2CisuLiBub25jZTogSkhyQTk3CisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitUb29scy9zY3JpcHRzL3dpbl9hZGQycGF0aC5weSB3YXMgYWRkZWQuIFRoZSBzaW1wbGUgc2NyaXB0IG1vZGlmZXMgdGhlIFBBVEgKK2Vudmlyb25tZW50IHZhciBvZiB0aGUgSEtDVSB0cmVlIGFuZCBhZGRzIHRoZSBweXRob24gYmluIGFuZCBzY3JpcHQKK2RpcmVjdG9yeS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzA1CisuLiBub25jZTogY2oxSXBfCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitUb29scy8xOG4vcHlnZXR0ZXh0LnB5IHdhcyBhZGRlZCB0byB0aGUgbGlzdCBvZiBzY3JpcHRzIGluc3RhbGxlZCBieQorVG9vbHMvc2NyaXB0cy9zZXR1cC5weSAodHJhY2tlciBpdGVtIDY0MjMwOSkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjMwNAorLi4gbm9uY2U6IHE2ZW81cQorLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworQWRkZWQgSXJvblB5dGhvbiBhbmQgSnl0aG9uIHN1cHBvcnQgdG8gcHliZW5jaCAocGFydCBvZiB3aGljaCB3YXMgcGF0Y2gKKyMxNTYzODQ0KS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzAzCisuLiBub25jZTogeFBxVkE0CisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitNYWRlIHNvbWUgbWlub3IgY2hhbmdlcyB0byBweWJlbmNoIG91dHB1dCB0byBhbGxvdyB0aGUgdXNlciB0byBzZWUgd2hpY2gKK1B5dGhvbiB2ZXJzaW9uIGlzIHJ1bm5pbmcgcHliZW5jaC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MzAyCisuLiBub25jZTogVWZuXzc2CisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitBZGRlZCBzdXBwb3J0IGZvciB0aGUgbmV3IHBsYXRmb3JtIG1vZHVsZSBmZWF0dXJlCitwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKTsgdGhpcyB3aWxsIG5vdyBiZSBzYXZlZCBpbiB0aGUgYmVuY2htYXJrCitwaWNrbGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjMwMQorLi4gbm9uY2U6IFNKR3JvcgorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitSRkUgIzE3NjUxNDA6IFVwZGF0ZWQgZG9jdW1lbnRhdGlvbiBvbiBGaWxlSGFuZGxlciBhbmQgc3ViY2xhc3NlcyB0byBpbmNsdWRlCituZXcgb3B0aW9uYWwgZGVsYXkgYXJndW1lbnQuCisKKy4uCisKKy4uIGJwbzogOTMyNTYzCisuLiBkYXRlOiA2MzAwCisuLiBub25jZTogdWpZZHJJCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0FkZGVkIHNlY3Rpb24gb24gZ2V0dGluZyBjb250ZXh0dWFsIGluZm9ybWF0aW9uIGludG8gbG9nZ2luZyBvdXRwdXQsIGFuZAorYWRkZWQgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIG5ldyBMb2dnZXJBZGFwdGVyIGNsYXNzLgorCisuLgorCisuLiBicG86IDEyOTUKKy4uIGRhdGU6IDYyOTkKKy4uIG5vbmNlOiBXQkgyWkIKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworQWRkZWQgaW5mb3JtYXRpb24gYWJvdXQgY2FjaGluZyBvZiBmb3JtYXR0ZWQgZXhjZXB0aW9uIGluZm9ybWF0aW9uIGluIHRoZQorTG9nUmVjb3JkIGJ5IEZvcm1hdHRlci5mb3JtYXQoKS4KKworLi4KKworLi4gYnBvOiAxNjM3MzY1CisuLiBkYXRlOiA2Mjk4CisuLiBub25jZTogaEh5bktLCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK2FkZCBzdWJzZWN0aW9uIGFib3V0ICJfX25hbWVfXyA9PSBfX21haW5fXyIgdG8gdGhlIFB5dGhvbiB0dXRvcmlhbC4KKworLi4KKworLi4gYnBvOiAxNjk4NzY4CisuLiBkYXRlOiA2Mjk3CisuLiBub25jZTogZTRoN0pwCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK3VwZGF0ZWQgdGhlICJ1c2luZyBQeXRob24gb24gdGhlIE1hYyIgaW50cm8uCisKKy4uCisKKy4uIGJwbzogMTU2OTA1NworLi4gZGF0ZTogNjI5NgorLi4gbm9uY2U6IERxRGdpbgorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitEb2N1bWVudCB0aGF0IGNhbGxpbmcgZmlsZS5uZXh0KCkgd2hlbiB0aGUgZmlsZSBpcyBvcGVuIGZvciB3cml0aW5nIGlzCit1bmRlZmluZWQuCisKKy4uCisKKy4uIGJwbzogMTQ4OTc3MQorLi4gZGF0ZTogNjI5NQorLi4gbm9uY2U6IFlnY2hxbAorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCit0aGUgc3ludGF4IHJ1bGVzIGluIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsIHdlcmUgdXBkYXRlZCB0byByZWZsZWN0IHRoZQorY3VycmVudCBQeXRob24gc3ludGF4LgorCisuLgorCisuLiBicG86IDE2ODY0NTEKKy4uIGRhdGU6IDYyOTQKKy4uIG5vbmNlOiBPRHJkRlIKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworRml4IHJldHVybiB0eXBlIGZvciBQeVNlcXVlbmNlX3tDb3VudCxJbmRleCxGYXN0X0dFVF9TSVpFfS4KKworLi4KKworLi4gYnBvOiAxNjc5Mzc5CisuLiBkYXRlOiA2MjkzCisuLiBub25jZTogVF9OZFg0CisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK2FkZCBkb2N1bWVudGF0aW9uIGZvciBmbm1hdGNoLnRyYW5zbGF0ZSgpLgorCisuLgorCisuLiBicG86IDE2Mjk1NjYKKy4uIGRhdGU6IDYyOTIKKy4uIG5vbmNlOiBJa0VUSVMKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworY2xhcmlmeSB0aGUgZG9jcyBvbiB0aGUgcmV0dXJuIHZhbHVlcyBvZiBwYXJzZWRhdGUoKSBhbmQgcGFyc2VkYXRlX3R6KCkgaW4KK2VtYWlsLnV0aWxzIGFuZCByZmM4MjIuCisKKy4uCisKKy4uIGJwbzogMTY3MTQ1MAorLi4gZGF0ZTogNjI5MQorLi4gbm9uY2U6IG5KckVZYQorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCithZGQgYSBzZWN0aW9uIGFib3V0IHN1YmNsYXNzaW5nIGJ1aWx0LWluIHR5cGVzIHRvIHRoZSAiZXh0ZW5kaW5nIGFuZAorZW1iZWRkaW5nIiB0dXRvcmlhbC4KKworLi4KKworLi4gYnBvOiAxNjI5MTI1CisuLiBkYXRlOiA2MjkwCisuLiBub25jZTogOUpkSGxECisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK2ZpeCB3cm9uZyBkYXRhIHR5cGUgKGludCAtPiBQeV9zc2l6ZV90KSBpbiBQeURpY3RfTmV4dCBkb2NzLgorCisuLgorCisuLiBicG86IDE1NjU5MTkKKy4uIGRhdGU6IDYyODkKKy4uIG5vbmNlOiBod3BqSHYKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworZG9jdW1lbnQgc2V0IHR5cGVzIGluIHRoZSBMYW5ndWFnZSBSZWZlcmVuY2UuCisKKy4uCisKKy4uIGJwbzogMTU0NjA1MgorLi4gZGF0ZTogNjI4OAorLi4gbm9uY2U6IDNfS2NxdQorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitjbGFyaWZ5IHRoYXQgUHlTdHJpbmdfRnJvbVN0cmluZyhBbmRTaXplKSBjb3BpZXMgdGhlIHN0cmluZyBwb2ludGVkIHRvIGJ5CitpdHMgcGFyYW1ldGVyLgorCisuLgorCisuLiBicG86IDE1NjY2NjMKKy4uIGRhdGU6IDYyODcKKy4uIG5vbmNlOiBtQWdjSU8KKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworcmVtb3ZlIG9ic29sZXRlIGV4YW1wbGUgZnJvbSBkYXRldGltZSBkb2NzLgorCisuLgorCisuLiBicG86IDE1NDE2ODIKKy4uIGRhdGU6IDYyODYKKy4uIG5vbmNlOiAxMEJYeVYKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworRml4IGV4YW1wbGUgaW4gdGhlICJSZWZjb3VudCBkZXRhaWxzIiBBUEkgZG9jcy4gQWRkaXRpb25hbGx5LCByZW1vdmUgYQorZmF1bHR5IGV4YW1wbGUgc2hvd2luZyBQeVNlcXVlbmNlX1NldEl0ZW0gYXBwbGllZCB0byBhIG5ld2x5IGNyZWF0ZWQgbGlzdAorb2JqZWN0IGFuZCBhZGQgbm90ZXMgdGhhdCB0aGlzIGlzbid0IGEgZ29vZCBpZGVhLgorCisuLgorCisuLiBicG86IDE1NTIwMjQKKy4uIGRhdGU6IDYyODUKKy4uIG5vbmNlOiBGUXNZTFkKKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK2FkZCBkZWNvcmF0b3Igc3VwcG9ydCB0byB1bnBhcnNlLnB5IGRlbW8gc2NyaXB0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYyODQKKy4uIG5vbmNlOiB3aGprVjAKKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK01ha2UgYXV0by1nZW5lcmF0ZWQgcHl0aG9uLnZpbSBmaWxlIGxpc3QgYnVpbHQtaW5zIGFuZCBleGNlcHRpb25zIGluCithbHBoYXRiZXRpY2FsIG9yZGVyLiAgTWFrZXMgb3V0cHV0IG1vcmUgZGV0ZXJtaW5pc3RpYyBhbmQgZWFzaWVyIHRvIHRlbGwgaWYKK3RoZSBmaWxlIGlzIHN0YWxlIG9yIG5vdC4KKworLi4KKworLi4gYnBvOiAxNTQ2MzcyCisuLiBkYXRlOiA2MjgzCisuLiBub25jZTogTVZ0ZDRVCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitGaXhlZCBzbWFsbCBidWdnbGV0IGluIHB5YmVuY2ggdGhhdCBjYXVzZWQgYSBtaXNzaW5nIGZpbGUgbm90IHRvIGdldAorcmVwb3J0ZWQgcHJvcGVybHkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjI4MgorLi4gbm9uY2U6IGtlTkZmdAorLi4gc2VjdGlvbjogQnVpbGQKKworSGF2ZSB0aGUgc2VhcmNoIHBhdGggZm9yIGJ1aWxkaW5nIGV4dGVuc2lvbnMgZm9sbG93IHRoZSBkZWNsYXJlZCBvcmRlciBpbgorJENQUEZMQUdTIGFuZCAkTERGTEFHUyB3aGVuIGFkZGluZyBkaXJlY3RvcmllcyBmcm9tIHRob3NlIGVudmlyb25tZW50Cit2YXJpYWJsZXMuCisKKy4uCisKKy4uIGJwbzogMTk4MworLi4gZGF0ZTogNjI4MQorLi4gbm9uY2U6IERNVVVmUgorLi4gc2VjdGlvbjogQnVpbGQKKworQWRkZWQgYSBjaGVjayB0byBweXBvcnQgdG8gdmVyaWZ5IHRoYXQgc2l6ZW9mKHBpZF90KSBpcyBzbWFsbGVyIG9yIGVxdWFsCitzaXplb2YobG9uZykuCisKKy4uCisKKy4uIGJwbzogMTIzNAorLi4gZGF0ZTogNjI4MAorLi4gbm9uY2U6IHVWUHRlaworLi4gc2VjdGlvbjogQnVpbGQKKworRml4ZWQgc2VtYXBob3JlIGVycm9ycyBvbiBBSVggNS4yCisKKy4uCisKKy4uIGJwbzogMTcyNgorLi4gZGF0ZTogNjI3OQorLi4gbm9uY2U6IFZQVzNnZAorLi4gc2VjdGlvbjogQnVpbGQKKworUmVtb3ZlIFB5dGhvbi9hdG9mLmMgZnJvbSBQQ0J1aWxkL3B5dGhvbmNvcmUudmNwcm9qLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYyNzgKKy4uIG5vbmNlOiB2M3ZrY0UKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1JlbW92ZWQgUENidWlsZDgvIGRpcmVjdG9yeSBhbmQgYWRkZWQgYSBuZXcgYnVpbGQgZGlyZWN0b3J5IGZvciBWUyAyMDA1CitiYXNlZCBvbiB0aGUgVlMgMjAwOCBidWlsZCBkaXJlY3RvcnkgdG8gUEMvVlM4LjAuIFRoZSBzY3JpcHQKK1BDYnVpbGQvdnM4dG85LnB5IHdhcyBhZGRlZCB0byBzeW5jIGNoYW5nZXMgZnJvbSBQQ2J1aWxkIHRvIFBDL1ZTOC4wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYyNzcKKy4uIG5vbmNlOiBQaUhVTm0KKy4uIHNlY3Rpb246IEJ1aWxkCisKK01vdmVkIFBDYnVpbGQvIGRpcmVjdG9yeSBmb3IgVlMgMjAwMyB0byBQQy9WUzcuMSBhbmQgcmVuYW1lZCBQQ0J1aWxkOS8KK2RpcmVjdG9yeSB0byBQQ0J1aWxkLy4KKworLi4KKworLi4gYnBvOiAxNjk5CisuLiBkYXRlOiA2Mjc2CisuLiBub25jZTogcDdBSVhDCisuLiBzZWN0aW9uOiBCdWlsZAorCitEZWZpbmUgX0JTRF9TT1VSQ0Ugb25seSBvbiBPcGVuQlNELgorCisuLgorCisuLiBicG86IDE2MDgKKy4uIGRhdGU6IDYyNzUKKy4uIG5vbmNlOiBIMDhNc3kKKy4uIHNlY3Rpb246IEJ1aWxkCisKK3VzZSAtZndyYXB2IHdoZW4gR0NDIHN1cHBvcnRzIGl0LiAgVGhpcyBpcyBpbXBvcnRhbnQsIG5ld2VyIEdDQyB2ZXJzaW9ucyBtYXkKK29wdGltaXplIGF3YXkgb3ZlcmZsb3cgYnVmZmVyIG92ZXJmbG93IGNoZWNrcyB3aXRob3V0IHRoaXMgb3B0aW9uIQorCisuLgorCisuLiBicG86IDE0MTgKKy4uIGRhdGU6IDYyNzQKKy4uIG5vbmNlOiBEYnFNVjQKKy4uIHNlY3Rpb246IEJ1aWxkCisKK01ha2UgdGhlIEFDX1JFUExBQ0VfRlVOQ1Mgb2JqZWN0IGZpbGVzIGFjdHVhbGx5IHdvcmsuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjI3MworLi4gbm9uY2U6IHZvVkZfNgorLi4gc2VjdGlvbjogQnVpbGQKKworQWRkIGEgRkFTVF9MT09QUyBidWlsZCBvcHRpb24gdGhhdCBzcGVlZHMtdXAgbG9vcGluZyBieSB0cmFkaW5nIGF3YXkKK3BlcmlvZGljIHRocmVhZHN0YXRlIGFuZCBzaWduYWwgY2hlY2tpbmcgaW4gdGlnaHQgbG9vcHMuICBCeSBkZWZhdWx0LCB0aGlzCitvcHRpb24gaXMgdHVybmVkLW9mZi4gIEl0IHNob3VsZCBvbmx5IGJlIGVuYWJsZWQgaW4gZGVidWdnZWQsIHBlcmZvcm1hbmNlCitjcml0aWNhbCBhcHBsaWNhdGlvbnMuCisKKy4uCisKKy4uIGJwbzogNzg2NzM3CisuLiBkYXRlOiA2MjcyCisuLiBub25jZTogbUpKcjAxCisuLiBzZWN0aW9uOiBCdWlsZAorCitBbGxvdyBidWlsZGluZyBpbiBhIHRyZWUgb2Ygc3ltbGlua3MgcG9pbnRpbmcgdG8gYSByZWFkb25seSBzb3VyY2UuCisKKy4uCisKKy4uIGJwbzogMTczNzIxMAorLi4gZGF0ZTogNjI3MQorLi4gbm9uY2U6IGhNeGFRSAorLi4gc2VjdGlvbjogQnVpbGQKKworQ2hhbmdlIE1hbnVmYWN0dXJlciBvZiBXaW5kb3dzIGluc3RhbGxlciB0byBQU0YuCisKKy4uCisKKy4uIGJwbzogMTc0Njg4MAorLi4gZGF0ZTogNjI3MAorLi4gbm9uY2U6IGhyUjJLTQorLi4gc2VjdGlvbjogQnVpbGQKKworQ29ycmVjdGx5IGluc3RhbGwgRExMcyBpbnRvIHN5c3RlbTMyIGZvbGRlciBvbiBXaW42NC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MjY5CisuLiBub25jZTogeEtIRDUyCisuLiBzZWN0aW9uOiBCdWlsZAorCitEZWZpbmUgX0JTRF9TT1VSQ0UsIHRvIGdldCBhY2Nlc3MgdG8gUE9TSVggZXh0ZW5zaW9ucyBvbiBPcGVuQlNEIDQuMSsuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjI2OAorLi4gbm9uY2U6IDNKWGpKNworLi4gc2VjdGlvbjogQnVpbGQKKworU3RvcCBzdXBwb3J0aW5nIEF0aGVPUyBhbmQgY2F1c2UgYSBidWlsZCBlcnJvciBpbiBjb25maWd1cmUgZm9yIHRoZQorcGxhdGZvcm0uCisKKy4uCisKKy4uIGJwbzogMTY1NTM5MgorLi4gZGF0ZTogNjI2NworLi4gbm9uY2U6IGJ3QWRXTgorLi4gc2VjdGlvbjogQnVpbGQKKworZG9uJ3QgYWRkIC1ML3Vzci9saWIvcHl0aG9uWC5ZL2NvbmZpZyB0byB0aGUgTERGTEFHUyByZXR1cm5lZCBieQorcHl0aG9uLWNvbmZpZyBpZiBQeXRob24gd2FzIGJ1aWx0IHdpdGggLS1lbmFibGUtc2hhcmVkIGJlY2F1c2UgdGhhdCBwcmV2ZW50ZWQgdGhlCitzaGFyZWQgbGlicmFyeSBmcm9tIGJlaW5nIHVzZWQuCisKKy4uCisKKy4uIGJwbzogMTU2OTc5OAorLi4gZGF0ZTogNjI2NgorLi4gbm9uY2U6IDdDYW16agorLi4gc2VjdGlvbjogQnVpbGQKKworZml4IGEgYnVnIGluIGRpc3R1dGlscyB3aGVuIGJ1aWxkaW5nIFB5dGhvbiBmcm9tIGEgZGlyZWN0b3J5IHdpdGhpbgorc3lzLmV4ZWNfcHJlZml4LgorCisuLgorCisuLiBicG86IDE2NzU1MTEKKy4uIGRhdGU6IDYyNjUKKy4uIG5vbmNlOiBqOHhpTFQKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1VzZSAtS3BpYyBpbnN0ZWFkIG9mIC14Y29kZT1waWMzMiBvbiBTb2xhcmlzL3g4Ni4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MjY0CisuLiBub25jZTogRF9ITzVJCisuLiBzZWN0aW9uOiBCdWlsZAorCitEaXNhYmxlIF9YT1BFTl9TT1VSQ0Ugb24gTmV0QlNEIDEueC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MjYzCisuLiBub25jZTogaXBkX3lkCisuLiBzZWN0aW9uOiBCdWlsZAorCitjb25maWd1cmUgbm93IGNoZWNrcyB3aGV0aGVyIGdjYyBzdXBwb3J0cyB0aGUgUHlBcmdfUGFyc2VUdXBsZSBmb3JtYXQKK2F0dHJpYnV0ZS4KKworLi4KKworLi4gYnBvOiAxNTc4NTEzCisuLiBkYXRlOiA2MjYyCisuLiBub25jZTogTWtjcVIyCisuLiBzZWN0aW9uOiBCdWlsZAorCitDcm9zcyBjb21waWxhdGlvbiB3YXMgYnJva2VuIGJ5IGEgY2hhbmdlIHRvIGNvbmZpZ3VyZS4gUmVwYWlyIHNvIHRoYXQgaXQncworYmFjayB0byBob3cgaXQgd2FzIGluIDIuNC4zLgorCisuLgorCisuLiBicG86IDE1NzY5NTQKKy4uIGRhdGU6IDYyNjEKKy4uIG5vbmNlOiBSZDJqeWoKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1VwZGF0ZSBWQzYgYnVpbGQgZGlyZWN0b3J5OyByZW1vdmUgcmVkdW5kYW50IGZpbGVzIGluIFZDNy4KKworLi4KKworLi4gYnBvOiAxNTY4ODQyCisuLiBkYXRlOiA2MjYwCisuLiBub25jZTogeEJXMWQyCisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggdGVzdCBmb3IgdWludHB0cl90LgorCisuLgorCisuLiBicG86IDE1NDA0NzAKKy4uIGRhdGU6IDYyNTkKKy4uIG5vbmNlOiBKUy1BR3cKKy4uIHNlY3Rpb246IEJ1aWxkCisKK2ZvciBPcGVuQlNEIDQuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MjU4CisuLiBub25jZTogN3VLYVNrCisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggYnVpbGQgZmFpbHVyZSBvbiBrZnJlZWJzZCBhbmQgb24gdGhlIGh1cmQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjI1NworLi4gbm9uY2U6IGNQQVFfTQorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IHRoZSBidWlsZCBvZiB0aGUgbGlicmFyeSByZWZlcmVuY2UgaW4gaW5mbyBmb3JtYXQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjI1NgorLi4gbm9uY2U6IHZYbzRRVQorLi4gc2VjdGlvbjogQnVpbGQKKworQWxsb3cgRW1hY3MgMjIgZm9yIGJ1aWxkaW5nIHRoZSBkb2N1bWVudGF0aW9uIGluIGluZm8gZm9ybWF0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYyNTUKKy4uIG5vbmNlOiBVSEVwMkYKKy4uIHNlY3Rpb246IEJ1aWxkCisKK01ha2VmaWxlLnByZS5pbihidWlsZGJvdHRlc3QpOiBSdW4gYW4gb3B0aW9uYWwgc2NyaXB0IHB5YnVpbGRib3QuaWRlbnRpZnkgdG8KK2luY2x1ZGUgc29tZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYnVpbGQgZW52aXJvbm1lbnQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjI1NAorLi4gbm9uY2U6IFd3czJnbworLi4gc2VjdGlvbjogQyBBUEkKKworVW5pZmllZCBuYW1pbmcgY29udmVudGlvbiBmb3IgZnJlZSBsaXN0cyBhbmQgdGhlaXIgbGltaXRzLiBBbGwgZnJlZSBsaXN0cyBpbgorT2JqZWN0LyBhcmUgbmFtZWQgYGBmcmVlX2xpc3RgYCwgdGhlIGNvdW50ZXIgYGBudW1mcmVlYGAgYW5kIHRoZSB1cHBlciBsaW1pdAoraXMgYSBtYWNybyBgYFB5TmFtZV9NQVhGUkVFTElTVGBgIGluc2lkZSBhbiAjaWZuZGVmIGJsb2NrLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYyNTMKKy4uIG5vbmNlOiB2d1FtWFIKKy4uIHNlY3Rpb246IEMgQVBJCisKK2BgUHlTZXRfQWRkKClgYCBjYW4gbm93IG1vZGlmeSBhIG5ld2x5IGNyZWF0ZWQgZnJvemVuc2V0LiAgU2ltaWxhcmx5IHRvCitgYFB5VHVwbGVfU2V0SXRlbWBgLCBpdCBjYW4gYmUgdXNlZCB0byBwb3B1bGF0ZSBhIGJyYW5kIG5ldyBmcm96ZW5zZXQ7IGJ1dAoraXQgZG9lcyBub3Qgc3RlYWwgYSByZWZlcmVuY2UgdG8gdGhlIGFkZGVkIGl0ZW0uCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjI1MgorLi4gbm9uY2U6IGIzUHN5dAorLi4gc2VjdGlvbjogQyBBUEkKKworQWRkZWQgYGBQeVNldF9DaGVjaygpYGAgYW5kIGBgUHlGcm96ZW5TZXRfQ2hlY2soKWBgIHRvIHRoZSBzZXQgQVBJLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYyNTEKKy4uIG5vbmNlOiBVclhqbkQKKy4uIHNlY3Rpb246IEMgQVBJCisKK0JhY2twb3J0IG9mIFB5VW5pY29kZV9Gcm9tU3RyaW5nKCksIF9Gcm9tU3RyaW5nQW5kU2l6ZSgpLCBfRm9ybWF0IGFuZAorX0Zvcm1hdFYgZnJvbSBQeXRob24gMy4wLiBNYWRlIFB5TG9uZ19Bc1NzaXplX3QgYW5kIFB5TG9uZ19Gcm9tU3NpemVfdAorcHVibGljIGZ1bmN0aW9ucy4KKworLi4KKworLi4gYnBvOiAxNzIwNTk1CisuLiBkYXRlOiA2MjUwCisuLiBub25jZTogRmRMdEtQCisuLiBzZWN0aW9uOiBDIEFQSQorCithZGQgVF9CT09MIHRvIHRoZSByYW5nZSBvZiBzdHJ1Y3RtZW1iZXIgdHlwZXMuCisKKy4uCisKKy4uIGJwbzogMTUzNAorLi4gZGF0ZTogNjI0OQorLi4gbm9uY2U6IGs5dmpidworLi4gc2VjdGlvbjogQyBBUEkKKworQWRkZWQgYGBQeUZsb2F0X0dldE1heCgpYGAsIGBgUHlGbG9hdF9HZXRNaW4oKWBgIGFuZCBgYFB5RmxvYXRfR2V0SW5mbygpYGAKK3RvIHRoZSBmbG9hdCBBUEkuCisKKy4uCisKKy4uIGJwbzogMTUyMQorLi4gZGF0ZTogNjI0OAorLi4gbm9uY2U6IGVISTNJRworLi4gc2VjdGlvbjogQyBBUEkKKworT24gNjRiaXQgcGxhdGZvcm1zLCB1c2luZyBQeUFyZ3NfUGFyc2VUdXBsZSB3aXRoIHRoZSB0IyBvZiB3IyBmb3JtYXQgY29kZQoraW5jb3JyZWN0bHkgdHJ1bmNhdGVkIHRoZSBsZW5ndGggdG8gYW4gaW50LCBldmVuIHdoZW4gUFlfU1NJWkVfVF9DTEVBTiBpcworc2V0LiAgVGhlIHN0ci5kZWNvZGUgbWV0aG9kIHVzZWQgdG8gcmV0dXJuIGluY29ycmVjdCByZXN1bHRzIHdpdGggaHVnZQorc3RyaW5ncy4KKworLi4KKworLi4gYnBvOiAxNjI5CisuLiBkYXRlOiA2MjQ3CisuLiBub25jZTogWWt0cFhRCisuLiBzZWN0aW9uOiBDIEFQSQorCitSZW5hbWVkIFB5X1NpemUsIFB5X1R5cGUgYW5kIFB5X1JlZmNudCB0byBQeV9TSVpFLCBQeV9UWVBFIGFuZCBQeV9SRUZDTlQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjI0NgorLi4gbm9uY2U6IGc4eE1hZQorLi4gc2VjdGlvbjogQyBBUEkKKworUEVQIDMxMjM6IFByb3ZpZGUgZm9yd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggUHl0aG9uIDMuMCwgd2hpbGUga2VlcGluZworYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuIEFkZCBQeV9SZWZjbnQsIFB5X1R5cGUsIFB5X1NpemUsIGFuZAorUHlWYXJPYmplY3RfSEVBRF9JTklULgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYyNDUKKy4uIG5vbmNlOiBzR0w4OVMKKy4uIHNlY3Rpb246IEMgQVBJCisKK1B5X3NzaXplX3QgZmllbGRzIHdvcmsgaW4gc3RydWN0bWVtYmVyIHdoZW4gSEFWRV9MT05HX0xPTkcgaXMgbm90IGRlZmluZWQuCisKKy4uCisKKy4uIGJwbzogMTczMzk2MAorLi4gZGF0ZTogNjI0NAorLi4gbm9uY2U6IDhyVUtNcworLi4gc2VjdGlvbjogQyBBUEkKKworQWxsb3cgVF9MT05HTE9ORyB0byBhY2NlcHQgaW50cy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MjQzCisuLiBub25jZTogVlk2TGdOCisuLiBzZWN0aW9uOiBDIEFQSQorCitUX1BZU1NJWkVUIGNhbiBub3cgYmUgdXNlZCBpbiBQeU1lbWJlckRlZiBsaXN0cyBmb3IgUHlfc3NpemVfdCBtZW1iZXJzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYyNDIKKy4uIG5vbmNlOiBaa3pBVGsKKy4uIHNlY3Rpb246IEMgQVBJCisKK0FkZGVkIGEgbmV3IEFQSSBmdW5jdGlvbiBgYFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2tgYC4KKworLi4KKworLi4gYnBvOiAxNjM3MDIyCisuLiBkYXRlOiA2MjQxCisuLiBub25jZTogd0JxMVZTCisuLiBzZWN0aW9uOiBDIEFQSQorCitQcmVmaXggQVNUIHN5bWJvbHMgd2l0aCBfUHlfLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYyNDAKKy4uIG5vbmNlOiBZQWlja2EKKy4uIHNlY3Rpb246IEMgQVBJCisKK0ZpeCBzb21lIGxlZnRvdmVycyBmcm9tIHRoZSBjb252ZXJzaW9uIGZyb20gaW50IHRvIFB5X3NzaXplX3QgKHJlbGV2YW50IHRvCitzdHJpbmdzIGFuZCBzZXF1ZW5jZXMgb2YgbW9yZSB0aGFuIDIqKjMxIGl0ZW1zKS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MjM5CisuLiBub25jZTogQTdvLWxECisuLiBzZWN0aW9uOiBDIEFQSQorCitNYWtlIF9QeUdJTFN0YXRlX05vdGVUaHJlYWRTdGF0ZSgpIHN0YXRpYywgaXQgd2FzIG5vdCB1c2VkIGFueXdoZXJlIG91dHNpZGUKK29mIHB5c3RhdGUuYyBhbmQgc2hvdWxkIG5vdCBiZSBuZWNlc3NhcnkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjIzOAorLi4gbm9uY2U6IFpwbnBIVAorLi4gc2VjdGlvbjogQyBBUEkKKworYGBQeUltcG9ydF9JbXBvcnRgYCBhbmQgYGBQeUltcG9ydF9JbXBvcnRNb2R1bGVgYCBub3cgYWx3YXlzIGRvIGFic29sdXRlCitpbXBvcnRzLiBJbiBlYXJsaWVyIHZlcnNpb25zIHRoZXkgbWlnaHQgaGF2ZSB1c2VkIHJlbGF0aXZlIGltcG9ydHMgdW5kZXIKK3NvbWUgY29uZGl0aW9ucy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MjM3CisuLiBub25jZTogMTV1N3NQCisuLiBzZWN0aW9uOiBDIEFQSQorCitBZGRlZCBjYXNlIGluc2Vuc2l0aXZlIGNvbXBhcmlzb24gbWV0aG9kcyBgYFB5T1Nfc3RyaWNtcChjaGFyKiwgY2hhciopYGAgYW5kCitgYFB5T1Nfc3RybmljbXAoY2hhciosIGNoYXIqLCBQeV9zc2l6ZV90KWBgLgorCisuLgorCisuLiBicG86IDE1NDI2OTMKKy4uIGRhdGU6IDYyMzYKKy4uIG5vbmNlOiBaUFo5RGYKKy4uIHNlY3Rpb246IEMgQVBJCisKK3JlbW92ZSBzZW1pLWNvbG9uIGF0IGVuZCBvZiBQeUltcG9ydF9JbXBvcnRNb2R1bGVFeCBtYWNybyBzbyBpdCBjYW4gYmUgdXNlZAorYXMgYW4gZXhwcmVzc2lvbi4KKworLi4KKworLi4gYnBvOiAxNzA2CisuLiBkYXRlOiA2MjM1CisuLiBub25jZTogRDhDMkszCisuLiBzZWN0aW9uOiBXaW5kb3dzCisKK0Ryb3Agc3VwcG9ydCBmb3IgV2luOXgsIFdpbk1FIGFuZCBOVDQuIFB5dGhvbiBub3cgcmVxdWlyZXMgV2luZG93cyAyMDAwIG9yCitncmVhdGVyLiBUaGUgX1dJTlZFUiBhbmQgTlRERElfVkVSU0lPTiBtYWNyb3MgYXJlIHNldCB0byBXaW4yayBmb3IgeDg2LzMyYml0CitidWlsZHMgYW5kIFdpblhQIGZvciBBTUQ2NCBidWlsZHMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjIzNAorLi4gbm9uY2U6IGNLaXpNNworLi4gc2VjdGlvbjogV2luZG93cworCitDb25kaXRpb25hbGl6ZSBkZWZpbml0aW9uIG9mIF9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURSBhbmQKK19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUuCisKKy4uCisKKy4uIGJwbzogMTIxNgorLi4gZGF0ZTogNjIzMworLi4gbm9uY2U6IERibEptVgorLi4gc2VjdGlvbjogV2luZG93cworCitSZXN0b3JlIHN1cHBvcnQgZm9yIFZpc3VhbCBTdHVkaW8gMjAwMi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2MjMyCisuLiBub25jZTogMkRCMUJnCisuLiBzZWN0aW9uOiBtYWNPUworCitjZm1maWxlIG5vdyByYWlzZXMgYSBEZXByZWNhdGlvbldhcm5pbmcuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjIzMQorLi4gbm9uY2U6IHI0RWtZZAorLi4gc2VjdGlvbjogbWFjT1MKKworYnVpbGR0b29scyBub3cgcmFpc2VzIGEgRGVwcmVjYXRpb25XYXJuaW5nLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDYyMzAKKy4uIG5vbmNlOiBNZGs1cTEKKy4uIHNlY3Rpb246IG1hY09TCisKK1JlbW92ZWQgdGhlIG1hY2ZzIG1vZHVsZS4gIEl0IGhhZCBiZWVuIGRlcHJlY2F0ZWQgc2luY2UgUHl0aG9uIDIuNS4gVGhpcworbGVhZCB0byB0aGUgZGVwcmVjYXRpb24gb2YgbWFjb3N0b29scy50b3VjaGVkKCkgYXMgaXQgcmVsaWVkIHNvbGVseSBvbiBtYWNmcworYW5kIHdhcyBhIG5vLW9wIHVuZGVyIE9TIFguCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjZhMi5yc3QgYi9NaXNjL05FV1MuZC8yLjZhMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdjNjY0MQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNmEyLnJzdApAQCAtMCwwICsxLDY5NCBAQAorLi4gYnBvOiAxNzMzNzU3CisuLiBkYXRlOiA2ODY1CisuLiBub25jZTogY3lLdk10CisuLiByZWxlYXNlIGRhdGU6IDAyLUFwci0yMDA4CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitUaGUgaW50ZXJwcmV0ZXIgd291bGQgaGFuZyBvbiBzaHV0ZG93biBpZiB0aGUgdHJhY2luZyBmdW5jdGlvbiBzZXQgYnkKK3N5cy5zZXR0cmFjZSBpcyBzdGlsbCBhY3RpdmUgYW5kIGhhcHBlbnMgdG8gY2FsbCB0aHJlYWRpbmcuY3VycmVudFRocmVhZCgpLgorCisuLgorCisuLiBicG86IDE0NDIKKy4uIGRhdGU6IDY4NjQKKy4uIG5vbmNlOiBoNzNaVG0KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3Byb3Blcmx5IHJlcG9ydCBleGNlcHRpb25zIHdoZW4gdGhlIFBZVEhPTlNUQVJUVVAgZmlsZSBjYW5ub3QgYmUgZXhlY3V0ZWQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjg2MworLi4gbm9uY2U6IHEzTFdYMAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlIGNvbXBpbGF0aW9uIG9mIGEgY2xhc3MgbmVzdGVkIGluIGFub3RoZXIgY2xhc3MgdXNlZCB0byBsZWFrIG9uZQorcmVmZXJlbmNlIG9uIHRoZSBvdXRlciBjbGFzcyBuYW1lLgorCisuLgorCisuLiBicG86IDE4MTAKKy4uIGRhdGU6IDY4NjIKKy4uIG5vbmNlOiBFU1hqUkcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2NvbXBpbGUoKSBjYW4gbm93IGNvbXBpbGUgX2FzdCB0cmVlcyBhcyByZXR1cm5lZCBieSBgYGNvbXBpbGUoLi4uLAorUHlDRl9PTkxZX0FTVClgYC4KKworLi4KKworLi4gYnBvOiAyNDI2CisuLiBkYXRlOiA2ODYxCisuLiBub25jZTogSC1ORlQ2CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGRlZCBzcWxpdGUzLkNvbm5lY3Rpb24uaXRlcmR1bXAgbWV0aG9kIHRvIGFsbG93IGVhc3kgZHVtcGluZyBvZiBkYXRhYmFzZXMuCitDb250cmlidXRlZCBieSBQYXVsIEtpcHBlcyBhdCBQeUNvbiAyMDA4LgorCisuLgorCisuLiBicG86IDI0NzcKKy4uIGRhdGU6IDY4NjAKKy4uIG5vbmNlOiBpRWVlZTIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZGVkIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2ODU5CisuLiBub25jZTogTVFDVDNqCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGRlZCBiYWNrcG9ydCBvZiBieXRlYXJyYXkgdHlwZS4KKworLi4KKworLi4gYnBvOiAyMzU1CisuLiBkYXRlOiA2ODU4CisuLiBub25jZTogM0lyRkpuCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCithZGQgUHkzayB3YXJuaW5nIGZvciBidWZmZXIoKS4KKworLi4KKworLi4gYnBvOiAxNDc3CisuLiBkYXRlOiA2ODU3CisuLiBub25jZToga0w4VDlZCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitXaXRoIG5hcnJvdyBVbmljb2RlIGJ1aWxkcywgdGhlIHVuaWNvZGUgZXNjYXBlIHNlcXVlbmNlIFxVeHh4eHh4eHggZGlkIG5vdAorYWNjZXB0IHZhbHVlcyBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUuICBUaGlzIGFmZmVjdGVkIHJhdwordW5pY29kZSBsaXRlcmFscyBhbmQgdGhlICdyYXctdW5pY29kZS1lc2NhcGUnIGNvZGVjLiAgTm93IFVURi0xNiBzdXJyb2dhdGVzCithcmUgZ2VuZXJhdGVkIGluIHRoaXMgY2FzZSwgbGlrZSBub3JtYWwgdW5pY29kZSBsaXRlcmFscyBhbmQgdGhlCisndW5pY29kZS1lc2NhcGUnIGNvZGVjLgorCisuLgorCisuLiBicG86IDIzNDgKKy4uIGRhdGU6IDY4NTYKKy4uIG5vbmNlOiBiVEtScngKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2FkZCBQeTNrIHdhcm5pbmcgZm9yIGZpbGUuc29mdHNwYWNlLgorCisuLgorCisuLiBicG86IDIzNDYKKy4uIGRhdGU6IDY4NTUKKy4uIG5vbmNlOiBaZHhCSVcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2FkZCBQeTNrIHdhcm5pbmdzIGZvciBfX21ldGhvZHNfXyBhbmQgX19tZW1iZXJzX18uIChTZWUgYWxzbzogYnBvLTIzNDcpCisKKy4uCisKKy4uIGJwbzogMjM1OAorLi4gZGF0ZTogNjg1NAorLi4gbm9uY2U6IC05cF9xQQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQWRkIGEgUHkzayB3YXJuaW5nIG9uIHN5cy5leGNfY2xlYXIoKSB1c2FnZS4KKworLi4KKworLi4gYnBvOiAyNDAwCisuLiBkYXRlOiA2ODUzCisuLiBub25jZTogVmg5eTZPCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBbGxvdyByZWxhdGl2ZSBpbXBvcnRzIHRvICJpbXBvcnQgKiIuCisKKy4uCisKKy4uIGJwbzogMTc0NQorLi4gZGF0ZTogNjg1MgorLi4gbm9uY2U6IEU3LWNVRworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQmFja3BvcnQgcHJpbnQgZnVuY3Rpb24gd2l0aCBgYGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb25gYC4KKworLi4KKworLi4gYnBvOiAyMzMyCisuLiBkYXRlOiA2ODUxCisuLiBub25jZTogSjVpVTUxCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCithZGQgbmV3IGF0dHJpYnV0ZSBuYW1lcyBmb3IgaW5zdGFuY2UgbWV0aG9kIG9iamVjdHMuIFRoZSB0d28gY2hhbmdlcyBhcmU6CitpbV9zZWxmIC0+IF9fc2VsZl9fIGFuZCBpbV9mdW5jIC0+IF9fZnVuY19fCisKKy4uCisKKy4uIGJwbzogMjM3OQorLi4gZGF0ZTogNjg1MAorLi4gbm9uY2U6IDktdHFnQworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmFpc2UgYSBQeTNLIHdhcm5pbmcgZm9yIF9fZ2V0aXRlbV9fIG9yIF9fZ2V0c2xpY2VfXyBvbiBleGNlcHRpb24gaW5zdGFuY2VzLgorCisuLgorCisuLiBicG86IDIzNzEKKy4uIGRhdGU6IDY4NDkKKy4uIG5vbmNlOiB4dXZkcHkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZCBhIFB5M2sgd2FybmluZyB3aGVuIGNhdGNoaW5nIGFuIGV4Y2VwdGlvbiB0aGF0IGRvZXNuJ3QgZGVyaXZlIGZyb20KK0Jhc2VFeGNlcHRpb24uCisKKy4uCisKKy4uIGJwbzogMjM0MQorLi4gZGF0ZTogNjg0OAorLi4gbm9uY2U6IExtRDJONworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQWRkIGEgUHkzayB3YXJuaW5nIHdoZW4gcmFpc2luZyBhbiBleGNlcHRpb24gdGhhdCBkb2Vzbid0IGRlcml2ZSBmcm9tCitCYXNlRXhjZXB0aW9uLgorCisuLgorCisuLiBicG86IDIzMjEKKy4uIGRhdGU6IDY4NDcKKy4uIG5vbmNlOiB2N0Z6VHkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3VzZSBweW1hbGxvYyBmb3IgdW5pY29kZSBvYmplY3Qgc3RyaW5nIGRhdGEgdG8gcmVkdWNlIG1lbW9yeSB1c2FnZSBpbiBzb21lCitjaXJjdW1zdGFuY2VzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4NDYKKy4uIG5vbmNlOiBPOEE3Mm0KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1BFUCAzMTI3OiBvY3RhbCBsaXRlcmFscyBub3cgc3RhcnQgd2l0aCAiMG8iLiBPbGQtc3R5bGUgb2N0YWwgbGl0ZXJhbHMgYXJlCitzdGlsbCB2YWxpZC4gVGhlcmUgYXJlIGJpbmFyeSBsaXRlcmFscyB3aXRoIGEgcHJlZml4IG9mICIwYiIuICBUaGlzIGFsc28KK2FmZmVjdHMgaW50KHgsIDApLgorCisuLgorCisuLiBicG86IDIzNTkKKy4uIGRhdGU6IDY4NDUKKy4uIG5vbmNlOiBjUjdmN2kKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZGluZyBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IgYXJyYXkue3JlYWQsd3JpdGV9LgorCisuLgorCisuLiBicG86IDE3Nzk4NzEKKy4uIGRhdGU6IDY4NDQKKy4uIG5vbmNlOiBROXU3LVQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0dOVSBnY2MgY2FuIG5vdyBidWlsZCBQeXRob24gb24gT1MgWCBiZWNhdXNlIHRoZSBmbGFncyAtV25vLWxvbmctZG91YmxlLAorLW5vLWNwcC1wcmVjb21wLCBhbmQgLW1uby1mdXNlZC1tYWRkIGFyZSBubyBsb25nZXIgcGFzc2VkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4NDMKKy4uIG5vbmNlOiAwMHNwQUIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZCBhIHdhcm5pbmcgd2hlbiBhc3NlcnRpbmcgYSBub24tZW1wdHkgdHVwbGUgd2hpY2ggaXMgYWx3YXlzIHRydWUuCisKKy4uCisKKy4uIGJwbzogMjE3OQorLi4gZGF0ZTogNjg0MgorLi4gbm9uY2U6IDZaQThjLQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworc3BlZWQgdXAgd2l0aCBzdGF0ZW1lbnQgZXhlY3V0aW9uIGJ5IHN0b3JpbmcgdGhlIGV4aXQgbWV0aG9kIG9uIHRoZSBzdGFjaworaW5zdGVhZCBvZiBpbiBhIHRlbXBvcmFyeSB2YXJpYWJsZSAocGF0Y2ggYnkgSmVmZnJleSBZYXNraW4pCisKKy4uCisKKy4uIGJwbzogMjIzOAorLi4gZGF0ZTogNjg0MQorLi4gbm9uY2U6IExNVXZ5cAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU29tZSBzeW50YXggZXJyb3JzIGluICphcmdzIGFuZCAqKmt3YXJncyBleHByZXNzaW9ucyBjb3VsZCBnaXZlIGJvZ3VzIGVycm9yCittZXNzYWdlcy4KKworLi4KKworLi4gYnBvOiAyMTQzCisuLiBkYXRlOiA2ODQwCisuLiBub25jZTogMzlodzlHCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggZW1iZWRkZWQgcmVhZGxpbmUoKSBoYW5nIG9uIFNTTCBzb2NrZXQgRU9GLgorCisuLgorCisuLiBicG86IDIyNDAKKy4uIGRhdGU6IDY4MzkKKy4uIG5vbmNlOiBXTlJlR28KKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW1wbGVtZW50IHNpZ25hbC5zZXRpdGltZXIgYW5kIHNpZ25hbC5nZXRpdGltZXIuCisKKy4uCisKKy4uIGJwbzogMjMxNQorLi4gZGF0ZTogNjgzOAorLi4gbm9uY2U6IHBxbm81bworLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nLmhhbmRsZXJzOiBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIgbm93IGFjY291bnRzIGZvciBkYXlsaWdodCBzYXZpbmdzCit0aW1lIGluIGNhbGN1bGF0aW5nIHRoZSBuZXh0IHJvbGxvdmVyLgorCisuLgorCisuLiBicG86IDIzMTYKKy4uIGRhdGU6IDY4MzcKKy4uIG5vbmNlOiBaUzg5eEIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbG9nZ2luZy5oYW5kbGVyczogVGltZWRSb3RhdGluZ0ZpbGVIYW5kbGVyIG5vdyBjYWxjdWxhdGVzIHJvbGxvdmVycworY29ycmVjdGx5IGV2ZW4gd2hlbiBub3RoaW5nIGlzIGxvZ2dlZCBmb3IgYSB3aGlsZS4KKworLi4KKworLi4gYnBvOiAyMzE3CisuLiBkYXRlOiA2ODM2CisuLiBub25jZTogNFJEVWcyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmcuaGFuZGxlcnM6IFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlciBub3cgdXNlcyBpbXByb3ZlZCBsb2dpYyBmb3IKK3JlbW92aW5nIG9sZCBmaWxlcy4KKworLi4KKworLi4gYnBvOiAyNDk1CisuLiBkYXRlOiA2ODM1CisuLiBub25jZTogWGFOVl9ECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3Rva2VuaXplLnVudG9rZW5pemUgbm93IGluc2VydHMgYSBzcGFjZSBiZXR3ZWVuIHR3byBjb25zZWN1dGl2ZSBzdHJpbmcKK2xpdGVyYWxzOyBwcmV2aW91c2x5LCBbIiIgIiJdIHdhcyByZW5kZXJlZCBhcyBbIiIiIl0sIHdoaWNoIGlzIGluY29ycmVjdAorcHl0aG9uIGNvZGUuCisKKy4uCisKKy4uIGJwbzogMjI0OAorLi4gZGF0ZTogNjgzNAorLi4gbm9uY2U6IEVGZGdOSworLi4gc2VjdGlvbjogTGlicmFyeQorCityZXR1cm4gdGhlIHJlc3VsdCBvZiB0aGUgUVVJVCBjb21tYW5kLiBmcm9tIFNNVFAucXVpdCgpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4MzMKKy4uIG5vbmNlOiBsRE1GMmgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQmFja3BvcnQgb2YgUHl0aG9uIDMuMCdzIGlvIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAyNDgyCisuLiBkYXRlOiA2ODMyCisuLiBub25jZTogZ3Q1azdGCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2Ugc3VyZSB0aGF0IHRoZSBjb2VmZmljaWVudCBvZiBhIERlY2ltYWwgaXMgYWx3YXlzIHN0b3JlZCBhcyBhIHN0cgoraW5zdGFuY2UsIG5vdCBhcyBhIHVuaWNvZGUgaW5zdGFuY2UuICBUaGlzIGVuc3VyZXMgdGhhdCBzdHIoRGVjaW1hbCkgaXMKK2Fsd2F5cyBhbiBpbnN0YW5jZSBvZiBzdHIuCisKKy4uCisKKy4uIGJwbzogMjQ3OAorLi4gZGF0ZTogNjgzMQorLi4gbm9uY2U6IEEzM0gxbgorLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggZmFpbHVyZSBvZiBkZWNpbWFsLkRlY2ltYWwoMCkuc3FydCgpCisKKy4uCisKKy4uIGJwbzogMjQzMgorLi4gZGF0ZTogNjgzMAorLi4gbm9uY2U6IEtfV212NgorLi4gc2VjdGlvbjogTGlicmFyeQorCitnaXZlIERpY3RSZWFkZXIgdGhlIGRpYWxlY3QgYW5kIGxpbmVfbnVtIGF0dHJpYnV0ZXMgYWR2ZXJ0aXNlZCBpbiB0aGUgZG9jcy4KKworLi4KKworLi4gYnBvOiAyNDYwCisuLiBkYXRlOiA2ODI5CisuLiBub25jZTogTi1HUUdQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgRWxsaXBzaXMgb2JqZWN0IGNvcHlhYmxlLgorCisuLgorCisuLiBicG86IDE2ODE0MzIKKy4uIGRhdGU6IDY4MjgKKy4uIG5vbmNlOiBVTUVqOWwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHRyaWFuZ3VsYXIgZGlzdHJpYnV0aW9uIHRvIHRoZSByYW5kb20gbW9kdWxlCisKKy4uCisKKy4uIGJwbzogMjEzNgorLi4gZGF0ZTogNjgyNworLi4gbm9uY2U6IHBNVUNsdworLi4gc2VjdGlvbjogTGlicmFyeQorCit1cmxsaWIyJ3MgYXV0aCBoYW5kbGVyIG5vdyBhbGxvd3Mgc2luZ2xlLXF1b3RlZCByZWFsbXMgaW4gdGhlCitXV1ctQXV0aGVudGljYXRlIGhlYWRlci4KKworLi4KKworLi4gYnBvOiAyNDM0CisuLiBkYXRlOiA2ODI2CisuLiBub25jZTogN05oWDR4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0VuaGFuY2VkIHBsYXRmb3JtLndpbjMyX3ZlcigpIHRvIGFsc28gd29yayBvbiBQeXRob24gaW5zdGFsbGF0aW9uIHdoaWNoIGRvCitub3QgaGF2ZSB0aGUgd2luMzJhbGwgcGFja2FnZSBpbnN0YWxsZWQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjgyNQorLi4gbm9uY2U6IE11YV84aworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBzdXBwb3J0IHRvIHBsYXRmb3JtLnVuYW1lKCkgdG8gYWxzbyByZXBvcnQgdGhlIG1hY2hpbmUgYW5kIHByb2Nlc3NvcgoraW5mb3JtYXRpb24gb24gV2luZG93cyBYUCBhbmQgbGF0ZXIuIEFzIGEgcmVzdWx0LCBwbGF0Zm9ybS5tYWNoaW5lKCkgYW5kCitwbGF0Zm9ybS5wcm9jZXNzb3IoKSB3aWxsIHJlcG9ydCB0aGlzIGluZm9ybWF0aW9uIGFzIHdlbGwuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjgyNAorLi4gbm9uY2U6IFRWZmNObgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbGlicmFyeSBpbXBsZW1lbnRpbmcgdGhlIDJ0bzMgY29udmVyc2lvbiwgbGliMnRvMywgd2FzIGFkZGVkIHRvIHRoZQorc3RhbmRhcmQgZGlzdHJpYnV0aW9uLgorCisuLgorCisuLiBicG86IDE3NDc4NTgKKy4uIGRhdGU6IDY4MjMKKy4uIG5vbmNlOiBxNDVtZVgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGNob3duIHRvIHdvcmsgd2l0aCBsYXJnZSB1aWQncyBhbmQgZ2lkJ3Mgb24gNjQtYml0IHBsYXRmb3Jtcy4KKworLi4KKworLi4gYnBvOiAxMjAyCisuLiBkYXRlOiA2ODIyCisuLiBub25jZTogYWloYkQ1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3psaWIuY3JjMzIgYW5kIHpsaWIuYWRsZXIzMiBubyBsb25nZXIgcmV0dXJuIGRpZmZlcmVudCB2YWx1ZXMgb24gMzItYml0IHZzLgorNjQtYml0IHB5dGhvbiBpbnRlcnByZXRlcnMuICBCb3RoIHdlcmUgY29ycmVjdCwgYnV0IHRoZXkgbm93IGJvdGggcmV0dXJuIGEKK3NpZ25lZCBpbnRlZ2VyIG9iamVjdCBmb3IgY29uc2lzdGVuY3kuCisKKy4uCisKKy4uIGJwbzogMTE1OAorLi4gZGF0ZTogNjgyMQorLi4gbm9uY2U6IEFrVnpBbQorLi4gc2VjdGlvbjogTGlicmFyeQorCithZGQgJWYgZm9ybWF0IChmcmFjdGlvbnMgb2YgYSBzZWNvbmQgcmVwcmVzZW50ZWQgYXMgbWljcm9zZWNvbmRzKSB0bworZGF0ZXRpbWUgb2JqZWN0cy4gIFVuZGVyc3Rvb2QgYnkgYm90aCBzdHJwdGltZSBhbmQgc3RyZnRpbWUuCisKKy4uCisKKy4uIGJwbzogNzA1ODM2CisuLiBkYXRlOiA2ODIwCisuLiBub25jZTogZzVwZUlJCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3N0cnVjdC5wYWNrKCI+ZiIsIHgpIG5vdyByYWlzZXMgT3ZlcmZsb3dFcnJvciBvbiBhbGwgcGxhdGZvcm1zIHdoZW4geCBpcyB0b28KK2xhcmdlIHRvIGZpdCBpbnRvIGFuIElFRUUgNzU0IGZsb2F0OyBwcmV2aW91c2x5IGl0IG9ubHkgcmFpc2VkIE92ZXJmbG93RXJyb3IKK29uIG5vbiBJRUVFIDc1NCBwbGF0Zm9ybXMuCisKKy4uCisKKy4uIGJwbzogMjE2NgorLi4gZGF0ZTogNjgxOQorLi4gbm9uY2U6IFdGMmY1ZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitub3cgZGlzdHV0aWxzIGRlYWxzIHdpdGggSE9NRSBjb3JyZWN0bHkgdW5kZXIgd2luMzIgKFNlZSBhbHNvOiBicG8tMTc0MSwKK2Jwby0xNTMxNTA1KQorCisuLgorCisuLiBicG86IDE4NTgKKy4uIGRhdGU6IDY4MTgKKy4uIG5vbmNlOiBqR0NNTHcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlzdHV0aWxzOiBhZGRlZCBtdWx0aXBsZSBzZXJ2ZXIgc3VwcG9ydCBpbiAucHlwaXJjCisKKy4uCisKKy4uIGJwbzogMTEwNjMxNgorLi4gZGF0ZTogNjgxNworLi4gbm9uY2U6IHVrMzZyRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitwZGIucG9zdF9tb3J0ZW0oKSdzIHBhcmFtZXRlciwgInRyYWNlYmFjayIsIGlzIG5vdyBvcHRpb25hbDogaXQgZGVmYXVsdHMgdG8KK3RoZSB0cmFjZWJhY2sgb2YgdGhlIGV4Y2VwdGlvbiB0aGF0IGlzIGN1cnJlbnRseSBiZWluZyBoYW5kbGVkIChpcyBtYW5kYXRvcnkKK3RvIGJlIGluIHRoZSBtaWRkbGUgb2YgYW4gZXhjZXB0aW9uLCBvdGhlcndpc2UgaXQgcmFpc2VzIFZhbHVlRXJyb3IpLgorCisuLgorCisuLiBicG86IDExOTM1NzcKKy4uIGRhdGU6IDY4MTYKKy4uIG5vbmNlOiBiLUJhaFkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQSAuc2h1dGRvd24oKSBtZXRob2QgaGFzIGJlZW4gYWRkZWQgdG8gU29ja2V0U2VydmVycyB3aGljaCB0ZXJtaW5hdGVzIHRoZQorLnNlcnZlX2ZvcmV2ZXIoKSBsb29wLgorCisuLgorCisuLiBicG86IDIyMjAKKy4uIGRhdGU6IDY4MTUKKy4uIG5vbmNlOiBxall4V0gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaGFuZGxlIHJsY29tcGxldGVyIGF0dHJpYnV0ZSBtYXRjaCBmYWlsdXJlIG1vcmUgZ3JhY2VmdWxseS4KKworLi4KKworLi4gYnBvOiAyMjI1CisuLiBkYXRlOiA2ODE0CisuLiBub25jZTogYTBRc0ZBCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3B5X2NvbXBpbGUsIHdoZW4gZXhlY3V0ZWQgYXMgYSBzY3JpcHQsIG5vdyByZXR1cm5zIGEgbm9uLSB6ZXJvIHN0YXR1cyBjb2RlCitpZiBub3QgYWxsIGZpbGVzIGNvdWxkIGJlIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseS4KKworLi4KKworLi4gYnBvOiAxNzI1NzM3CisuLiBkYXRlOiA2ODEzCisuLiBub25jZTogbnZmSzZBCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIGRpc3R1dGlscycgc2Rpc3QsIGV4Y2x1ZGUgUkNTLCBDVlMgZXRjLiBhbHNvIGluIHRoZSByb290IGRpcmVjdG9yeSwgYW5kCithbHNvIGV4Y2x1ZGUgLmhnLCAuZ2l0LCAuYnpyLCBhbmQgX2RhcmNzLgorCisuLgorCisuLiBicG86IDE4NzIKKy4uIGRhdGU6IDY4MTIKKy4uIG5vbmNlOiBtOFRtUnYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHN0cnVjdCBtb2R1bGUgdHlwZWNvZGUgZm9yIF9Cb29sIGhhcyBiZWVuIGNoYW5nZWQgZnJvbSAndCcgdG8gJz8nLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4MTEKKy4uIG5vbmNlOiBWcUFsQXoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGJ1bmRsZWQgbGliZmZpIGNvcHkgaXMgbm93IGluIHN5bmMgd2l0aCB0aGUgcmVjZW50bHkgcmVsZWFzZWQKK2xpYmZmaTMuMC40IHZlcnNpb24sIGFwYXJ0IGZyb20gc29tZSBzbWFsbCBjaGFuZ2VzIHRvCitNb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZS5hYy4gIE9uIE9TIFgsIHByZWNvbmZpZ3VyZWQgbGliZmZpIGZpbGVzCithcmUgdXNlZC4gIE9uIGFsbCBsaW51eCBzeXN0ZW1zIHRoZSAtLXdpdGgtc3lzdGVtLWZmaSBjb25maWd1cmUgb3B0aW9uCitkZWZhdWx0cyB0byAieWVzIi4KKworLi4KKworLi4gYnBvOiAxNTc3CisuLiBkYXRlOiA2ODEwCisuLiBub25jZTogbmpyZ1VKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3NodXRpbC5tb3ZlKCkgbm93IGNhbGxzIG9zLnJlbmFtZSgpIGlmIHRoZSBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeQoraW5zdGVhZCBvZiBjb3B5aW5nLXRoZW4tcmVtb3ZlLXNvdXJjZS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2ODA5CisuLiBub25jZTogSzVaRDdUCisuLiBzZWN0aW9uOiBUZXN0cworCit0ZXN0X25pcyBubyBsb25nZXIgZmFpbHMgd2hlbiB0ZXN0LnRlc3Rfc3VwcG9ydC52ZXJib3NlIGlzIHRydWUgYW5kIE5JUyBpcworbm90IHNldCB1cCBvbiB0aGUgdGVzdGluZyBtYWNoaW5lLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4MDgKKy4uIG5vbmNlOiAxWkUtZTIKKy4uIHNlY3Rpb246IFRlc3RzCisKK091dHB1dCBjb21wYXJpc29uIHRlc3RzIGFyZSBubyBsb25nZXIgc3VwcG9ydGVkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4MDcKKy4uIG5vbmNlOiBOMndHeHUKKy4uIHNlY3Rpb246IFRlc3RzCisKK1Jld3JpdGUgdGVzdF9lcnJubyB0byB1c2UgdW5pdHRlc3QgYW5kIG5vIGxvbmdlciBiZSBhIG5vLW9wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4MDYKKy4uIG5vbmNlOiBmODBwVHoKKy4uIHNlY3Rpb246IFRlc3RzCisKK0dIT1AgMjM0OiBDb252ZXJ0IHRlc3RfZXh0Y2FsbCB0byBkb2N0ZXN0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4MDUKKy4uIG5vbmNlOiBJRzFmV3cKKy4uIHNlY3Rpb246IFRlc3RzCisKK0dIT1AgMjkwOiBDb252ZXJ0IHRlc3RfZGJtIGFuZCB0ZXN0X2R1bW15X3RocmVhZGluZyB0byB1bml0dGVzdC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2ODA0CisuLiBub25jZTogMlByNWhWCisuLiBzZWN0aW9uOiBUZXN0cworCitHSE9QIDI5MzogQ29udmVydCB0ZXN0X3N0cmZ0aW1lLCB0ZXN0X2dldGFyZ3MsIGFuZCB0ZXN0X3BlcDI0NyB0byB1bml0dGVzdC4KKworLi4KKworLi4gYnBvOiAyMDU1CisuLiBkYXRlOiA2ODAzCisuLiBub25jZTogeW9GdjRICisuLiBzZWN0aW9uOiBUZXN0cworCitDb252ZXJ0IHRlc3RfZmNudGwgdG8gdW5pdHRlc3QuCisKKy4uCisKKy4uIGJwbzogMTk2MAorLi4gZGF0ZTogNjgwMgorLi4gbm9uY2U6IDhiRlJPOQorLi4gc2VjdGlvbjogVGVzdHMKKworQ29udmVydCB0ZXN0X2dkYm0gdG8gdW5pdHRlc3QuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjgwMQorLi4gbm9uY2U6IDVWWHVVVQorLi4gc2VjdGlvbjogVGVzdHMKKworR0hPUCAyOTQ6IENvbnZlcnQgdGVzdF9jb250YWlucywgdGVzdF9jcnlwdCwgYW5kIHRlc3Rfc2VsZWN0IHRvIHVuaXR0ZXN0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4MDAKKy4uIG5vbmNlOiBIdXExOHYKKy4uIHNlY3Rpb246IFRlc3RzCisKK0dIT1AgMjM4OiBDb252ZXJ0IHRlc3RfdG9rZW5pemUgdG8gdXNlIGRvY3Rlc3QuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjc5OQorLi4gbm9uY2U6IHlyT0lncAorLi4gc2VjdGlvbjogVGVzdHMKKworR0hPUCAyMzc6IFJld3JpdGUgdGVzdF90aHJlYWQgdXNpbmcgdW5pdHRlc3QuCisKKy4uCisKKy4uIGJwbzogMjIzMgorLi4gZGF0ZTogNjc5OAorLi4gbm9uY2U6IGdUMlUtbAorLi4gc2VjdGlvbjogVGVzdHMKKworb3MudG1wZmlsZSBtaWdodCBmYWlsIG9uIFdpbmRvd3MgaWYgdGhlIHVzZXIgaGFzIG5vIHBlcm1pc3Npb24gdG8gY3JlYXRlCitmaWxlcyBpbiB0aGUgcm9vdCBkaXJlY3RvcnkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjc5NworLi4gbm9uY2U6IHhDbHE1SgorLi4gc2VjdGlvbjogQnVpbGQKKworQSBuZXcgc2NyaXB0IDJ0bzMgaXMgbm93IGluc3RhbGxlZCwgdG8gcnVuIHRoZSAyLnggdG8gMy54IGNvbnZlcnRlci4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2Nzk2CisuLiBub25jZTogS19xRFdmCisuLiBzZWN0aW9uOiBCdWlsZAorCitQeXRob24vbWVtbW92ZS5jIGFuZCBQeXRob24vc3RyZXJyb3IuYyBoYXZlIGJlZW4gcmVtb3ZlZDsgYm90aCBmdW5jdGlvbnMgYXJlCitpbiB0aGUgQzg5IHN0YW5kYXJkIGxpYnJhcnkuCisKKy4uCisKKy4uIGJwbzogMjI4NAorLi4gZGF0ZTogNjc5NQorLi4gbm9uY2U6IGc1SFhmeQorLi4gc2VjdGlvbjogQnVpbGQKKworQWRkIC14NjQgb3B0aW9uIHRvIHJ0LmJhdC4KKworLi4KKworLi4gYnBvOiAyNDc3CisuLiBkYXRlOiA2Nzk0CisuLiBub25jZTogZmYzcXhXCisuLiBzZWN0aW9uOiBDIEFQSQorCitBZGRlZCBQeVBhcnNlcl9QYXJzZUZpbGVGbGFnc0V4KCkgYW5kIFB5UGFyc2VyX1BhcnNlU3RyaW5nRmxhZ3NGaWxlbmFtZUV4KCkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjZhMy5yc3QgYi9NaXNjL05FV1MuZC8yLjZhMy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY1M2QzOAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNmEzLnJzdApAQCAtMCwwICsxLDM1NiBAQAorLi4gYnBvOiAyNzE5CisuLiBkYXRlOiA2ODk3CisuLiBub25jZTogNE5IX1huCisuLiByZWxlYXNlIGRhdGU6IDA4LU1heS0yMDA4CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitiYWNrcG9ydGVkIHRoZSBgYG5leHQoKWBgIGJ1aWx0aW4gZnJvbSBQeXRob24gMy4KKworLi4KKworLi4gYnBvOiAyNjgxCisuLiBkYXRlOiA2ODk2CisuLiBub25jZTogOFVYeDkwCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitUaGUgb2N0YWwgbGl0ZXJhbCBgYDBvOGBgIHdhcyBpbmNvcnJlY2x5IGFjY3RlcHRlZC4gTm93IGl0IHByb3Blcmx5IHJhaXNlcyBhCitTeW50YXhFcnJvci4KKworLi4KKworLi4gYnBvOiAyNjE3CisuLiBkYXRlOiA2ODk1CisuLiBub25jZTogMWdUUzZyCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSZXNlcnZlZCAtSiBhbmQgLVggYXJndW1lbnRzIGZvciBKeXRob24sIElyb25QeXRob24gYW5kIG90aGVyCitpbXBsZW1lbnRhdGlvbnMgb2YgUHl0aG9uLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4OTQKKy4uIG5vbmNlOiBhUk85Z0UKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ltcGxlbWVudGVkIFBFUCAzNzA6IFBlciB1c2VyIHNpdGUtcGFja2FnZXMgZGlyZWN0b3J5LgorCisuLgorCisuLiBicG86IDI2NzAKKy4uIGRhdGU6IDY4OTMKKy4uIG5vbmNlOiBWTTJMdWoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgZmFpbHVyZSBpbiB1cmxsaWIyLmJ1aWxkX29wZW5lcigpLCB3aGVuIHBhc3NlZCB0d28gaGFuZGxlcnMgdGhhdAorZGVyaXZlIHRoZSBzYW1lIGRlZmF1bHQgYmFzZSBjbGFzcy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2ODkyCisuLiBub25jZTogN2ZibEhaCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIGtpbGwsIHRlcm1pbmF0ZSBhbmQgc2VuZF9zaWduYWwoc2lnKSB0byBzdWJwcm9jZXNzLlBvcGVuLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4OTEKKy4uIG5vbmNlOiA4OFdTaVkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgcGhhc2UoeikgLT4gcGhpLCBwb2xhcih6KSAtPiByLCBwaGkgYW5kIHJlY3QociwgcGhpKSAtPiB6IHRvIHRoZSBjbWF0aAorbW9kdWxlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4OTAKKy4uIG5vbmNlOiA2ZGVqTWQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRm91ciBuZXcgbWV0aG9kcyB3ZXJlIGFkZGVkIHRvIHRoZSBtYXRoIGFuZCBjbWF0aCBtb2R1bGVzOiBhY29zaCwgYXNpbmgsCithdGFuaCBhbmQgbG9nMXAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjg4OQorLi4gbm9uY2U6IHYtVkFkOAorLi4gc2VjdGlvbjogTGlicmFyeQorCit6bGliLmRlY29tcHJlc3NvYmooKS5mbHVzaCh2YWx1ZSkgbm8gbG9uZ2VyIGNyYXNoZXMgdGhlIGludGVycHJldGVyIHdoZW4KK3Bhc3NlZCBhIHZhbHVlIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLgorCisuLgorCisuLiBicG86IDE2MzExNzEKKy4uIGRhdGU6IDY4ODgKKy4uIG5vbmNlOiA4QmMwWmwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmUtaW1wbGVtZW50IHRoZSAnd2FybmluZ3MnIG1vZHVsZSBpbiBDICh0aGUgb3JpZ2luYWwgUHl0aG9uIGNvZGUgaGFzIGJlZW4KK2tlcHQgYXMgYmFja3VwKS4gVGhpcyB3aWxsIGFsbG93IGZvciB1c2luZyB0aGUgJ3dhcm5pbmcncyBtYWNoaW5lcnkgaW4gc3VjaAorcGxhY2VzIGFzIHRoZSBwYXJzZXIgd2hlcmUgdXNlIG9mIHB1cmUgUHl0aG9uIGNvZGUgaXMgbm90IHBvc3NpYmxlLiAgQm90aAordGhlIGBgc2hvd2FybmluZygpYGAgYW5kIGBgZm9ybWF0d2FybmluZygpYGAgZ2FpbiBhbiBvcHRpb25hbCAnbGluZScKK2FyZ3VtZW50IHdoaWNoIGlzIG5vdCBjYWxsZWQgYnkgZGVmYXVsdCBmb3IgYmFja3dhcmRzLWNvbXBhdGliaWxpdHkgcmVhc29ucy4KK1NldHRpbmcgYGB3YXJuaW5ncy5zaG93d2FybmluZygpYGAgdG8gYW4gaW1wbGVtZW50YXRpb24gdGhhdCBsYWNrcyBzdXBwb3J0Citmb3IgdGhlIGBgbGluZWBgIGFyZ3VtZW50IHdpbGwgcmFpc2UgYSBEZXByZWNhdGlvbldhcm5pbmcuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjg4NworLi4gbm9uY2U6IENOcWRyYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgYXVkaW9kZXYgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAyNzUwCisuLiBkYXRlOiA2ODg2CisuLiBub25jZTogbnYtaGtnCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCB0aGUgJ2pzb24nIHBhY2thZ2UuIEJhc2VkIG9uIHNpbXBsZWpzb24gMS45IGFuZCBjb250cmlidXRlZCBieSBCb2IKK0lwcG9saXRvLgorCisuLgorCisuLiBicG86IDE3MzQzNDYKKy4uIGRhdGU6IDY4ODUKKy4uIG5vbmNlOiBsZlI4Y2EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU3VwcG9ydCBVbmljb2RlIGZpbGUgbmFtZXMgZm9yIHppcGZpbGVzLgorCisuLgorCisuLiBicG86IDI1ODEKKy4uIGRhdGU6IDY4ODQKKy4uIG5vbmNlOiBmT2tkQ1QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlzdHV0aWxzOiBWaXN0YSBVQUMvZWxldmF0aW9uIHN1cHBvcnQgZm9yIGJkaXN0X3dpbmluc3QuCisKKy4uCisKKy4uIGJwbzogMjYzNQorLi4gZGF0ZTogNjg4MworLi4gbm9uY2U6IEY4WTkydworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYnVnIGluICdmaXhfc2VudGVuY2VfZW5kaW5ncycgdGV4dHdyYXAuZmlsbCBvcHRpb24sIHdoZXJlIGFuIGV4dHJhIHNwYWNlCit3YXMgYWRkZWQgYWZ0ZXIgYSB3b3JkIGNvbnRhaW5pbmcgKGJ1dCBub3QgZW5kaW5nIGluKSAnLicsICchJyBvciAnPycuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjg4MgorLi4gbm9uY2U6IGxZazNMQQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgZnJvbV9idWZmZXIoKSBhbmQgZnJvbV9idWZmZXJfY29weSgpIGNsYXNzIG1ldGhvZHMgdG8gY3R5cGVzIGRhdGEgdHlwZXMuCisKKy4uCisKKy4uIGJwbzogMjY4MgorLi4gZGF0ZTogNjg4MQorLi4gbm9uY2U6IE5MckplMgorLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXMgY2FsbGJhY2sgZnVuY3Rpb25zIG5vIGxvbmdlciBjb250YWluIGEgY3ljbGljIHJlZmVyZW5jZSB0bwordGhlbXNlbHZlcy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2ODgwCisuLiBub25jZTogVFRXSm9mCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBnZXRwYXNzIG1vZHVsZSBoYXMgYmVlbiBpbXByb3ZlZCBvbiBVbml4LiAgSXQgbm93IHVzZXMgL2Rldi90dHkgYnkKK2RlZmF1bHQgYW5kIHVzZXMgc3RkZXJyIGluc3RlYWQgb2Ygc3Rkb3V0LiAgQSBHZXRQYXNzV2FybmluZyBpcyBpc3N1ZWQgd2hlbgoraW5wdXQgZWNobyBjYW5ub3QgYmUgY29udHJvbGxlZC4KKworLi4KKworLi4gYnBvOiAyMDE0CisuLiBkYXRlOiA2ODc5CisuLiBub25jZTogQ0t2dTZZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FsbG93IFhNTC1SUEMgZGF0ZXRpbWUgb2JqZWN0cyB0byBoYXZlIGRhdGVzIGJlZm9yZSAxOTAwLTAxLTAxLgorCisuLgorCisuLiBicG86IDI0MzkKKy4uIGRhdGU6IDY4NzgKKy4uIG5vbmNlOiBLd3d2NFUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgbmV3IGZ1bmN0aW9uIHBrZ3V0aWwuZ2V0X2RhdGEoKSwgd2hpY2ggaXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvcgordGhlIFBFUCAzMDIgZ2V0X2RhdGEoKSBBUEkuCisKKy4uCisKKy4uIGJwbzogMjYxNgorLi4gZGF0ZTogNjg3NworLi4gbm9uY2U6IFVIUFk3cgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgY3R5cGVzLnBvaW50ZXIoKSBhbmQgY3R5cGVzLlBPSU5URVIoKSBmdW5jdGlvbnMgYXJlIG5vdyBpbXBsZW1lbnRlZCBpbiBDCitmb3IgYmV0dGVyIHBlcmZvcm1hbmNlLgorCisuLgorCisuLiBicG86IDI0MDgKKy4uIGRhdGU6IDY4NzYKKy4uIG5vbmNlOiBHaEx2WjUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGBgX3R5cGVzYGAgbW9kdWxlLCB3aGljaCB3YXMgdXNlZCBhcyBpbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwgb2YgdGhlCitwdWJsaWMgYGB0eXBlc2BgIG1vZHVsZSwgaGFzIGJlZW4gcmVtb3ZlZCBhbmQgcmVwbGFjZWQgYnkgcHVyZSBweXRob24gY29kZS4KKworLi4KKworLi4gYnBvOiAyNTEzCisuLiBkYXRlOiA2ODc1CisuLiBub25jZTogeDNLajVFCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Rpc3R1dGlscyBvbiBXaW5kb3dzIGlzIG5vdyBjYXBhYmxlIG9mIGNyb3NzLWNvbXBpbGluZyBleHRlbnNpb24gbW9kdWxlcworYmV0d2VlbiAzMiBhbmQgNjQgYml0IHBsYXRmb3Jtcy4gIFNlZSB0aGUgZGlzdHV0bHMgYnVpbGQgZG9jdW1lbnRhdGlvbiBmb3IKK21vcmUgaW5mb3JtYXRpb24uCisKKy4uCisKKy4uIGJwbzogODE1NjQ2CisuLiBkYXRlOiA2ODc0CisuLiBub25jZTogR2hDbUpECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luZGl2aWR1YWwgZmlsZSBvYmplY3RzIG1heSBub3cgYmUgdXNlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXQgb25jZQord2l0aG91dCBmZWFyIG9mIGNyYXNoaW5nIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBJZiBmaWxlLmNsb3NlKCkgaXMgY2FsbGVkCit3aGlsZSBhbiBvYmplY3QgaXMgaW4gdXNlIGJ5IGFub3RoZXIgdGhyZWFkIGFuIElPRXJyb3IgZXhjZXB0aW9uIHdpbGwgYmUKK3JhaXNlZCBhbmQgdGhlIGZpbGUgd2lsbCBub3QgYmUgY2xvc2VkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4NzMKKy4uIG5vbmNlOiBOZEJ1RXAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGJ1bmRsZWQgbGliZmZpIGNvcHkgaXMgbm93IGluIHN5bmMgd2l0aCB0aGUgcmVjZW50bHkgcmVsZWFzZWQKK2xpYmZmaTMuMC41IHZlcnNpb24sIGFwYXJ0IGZyb20gc29tZSBzbWFsbCBjaGFuZ2VzIHRvCitNb2R1bGVzL19jdHlwZXMvbGliZmZpL2NvbmZpZ3VyZS5hYy4KKworLi4KKworLi4gYnBvOiAyMzg1CisuLiBkYXRlOiA2ODcyCisuLiBub25jZTogcUlCVlZGCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Rpc3R1dGlscy5jb3JlLnJ1bl9zY3JpcHQoKSBtYWtlcyBfX2ZpbGVfXyBhdmFpbGFibGUsIHNvIHRoZSBjb250cm9sbGVkCitlbnZpcm9ubWVudCB3aWxsIG1vcmUgY2xvc2VseSBtaXJyb3IgdGhlIHR5cGljYWwgc2NyaXB0IGVudmlyb25tZW50LiAgVGhpcworc3VwcG9ydHMgc2V0dXAucHkgc2NyaXB0cyB0aGF0IHJlZmVyIHRvIGRhdGEgZmlsZXMuCisKKy4uCisKKy4uIGJwbzogMjU1MAorLi4gZGF0ZTogNjg3MQorLi4gbm9uY2U6IHdiVjIySgorLi4gc2VjdGlvbjogVGVzdHMKKworVGhlIGFwcHJvYWNoIHVzZWQgYnkgY2xpZW50L3NlcnZlciBjb2RlIGZvciBvYnRhaW5pbmcgcG9ydHMgdG8gbGlzdGVuIG9uIGluCituZXR3b3JrLW9yaWVudGVkIHRlc3RzIGhhcyBiZWVuIHJlZmluZWQgaW4gYW4gZWZmb3J0IHRvIGZhY2lsaXRhdGUgcnVubmluZworbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBlbnRpcmUgcmVncmVzc2lvbiB0ZXN0IHN1aXRlIGluIHBhcmFsbGVsIHdpdGhvdXQKK2lzc3VlLiB0ZXN0X3N1cHBvcnQuYmluZF9wb3J0KCkgaGFzIGJlZW4gZml4ZWQgc3VjaCB0aGF0IGl0IHdpbGwgYWx3YXlzCityZXR1cm4gYSB1bmlxdWUgcG9ydCAtLSB3aGljaCB3YXNuJ3QgYWx3YXlzIHRoZSBjYXNlIHdpdGggdGhlIHByZXZpb3VzCitpbXBsZW1lbnRhdGlvbiwgZXNwZWNpYWxseSBpZiBzb2NrZXQgb3B0aW9ucyBoYWQgYmVlbiBzZXQgdGhhdCBhZmZlY3RlZAorYWRkcmVzcyByZXVzZSAoaS5lLiBTT19SRVVTRUFERFIsIFNPX1JFVVNFUE9SVCkuICBUaGUgbmV3IGltcGxlbWVudGF0aW9uIG9mCitiaW5kX3BvcnQoKSB3aWxsIGFjdHVhbGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyBwYXNzZWQgYW4KK0FGX0lORVQvU09DS19TVFJFQU0gc29ja2V0IHdpdGggZWl0aGVyIHRoZSBTT19SRVVTRUFERFIgb3IgU09fUkVVU0VQT1JUCitzb2NrZXQgb3B0aW9uIHNldC4gIEZ1cnRoZXJtb3JlLCBpZiBhdmFpbGFibGUsIGJpbmRfcG9ydCgpIHdpbGwgc2V0IHRoZQorU09fRVhDTFVTSVZFQUREUlVTRSBvcHRpb24gb24gdGhlIHNvY2tldCBpdCdzIGJlZW4gcGFzc2VkLiAgVGhpcyBjdXJyZW50bHkKK29ubHkgYXBwbGllcyB0byBXaW5kb3dzLiAgVGhpcyBvcHRpb24gcHJldmVudHMgYW55IG90aGVyIHNvY2tldHMgZnJvbQorYmluZGluZyB0byB0aGUgaG9zdC9wb3J0IHdlJ3ZlIGJvdW5kIHRvLCB0aHVzIHJlbW92aW5nIHRoZSBwb3NzaWJpbGl0eSBvZgordGhlICdub24tZGV0ZXJtaW5pc3RpYycgYmVoYXZpb3VyLCBhcyBNaWNyb3NvZnQgcHV0cyBpdCwgdGhhdCBvY2N1cnMgd2hlbiBhCitzZWNvbmQgU09DS19TVFJFQU0gc29ja2V0IGJpbmRzIGFuZCBhY2NlcHRzIHRvIGEgaG9zdC9wb3J0IHRoYXQncyBhbHJlYWR5CitiZWVuIGJvdW5kIGJ5IGFub3RoZXIgc29ja2V0LiAgVGhlIG9wdGlvbmFsIHByZWZlcnJlZCBwb3J0IHBhcmFtZXRlciB0bworYmluZF9wb3J0KCkgaGFzIGJlZW4gcmVtb3ZlZC4gIFVuZGVyIG5vIGNpcmN1bXN0YW5jZXMgc2hvdWxkIHRlc3RzIGJlIGhhcmQKK2NvZGluZyBwb3J0cyEKKwordGVzdF9zdXBwb3J0LmZpbmRfdW51c2VkX3BvcnQoKSBoYXMgYWxzbyBiZWVuIGludHJvZHVjZWQsIHdoaWNoIHdpbGwgcGFzcyBhCit0ZW1wb3Jhcnkgc29ja2V0IG9iamVjdCB0byBiaW5kX3BvcnQoKSBpbiBvcmRlciB0byBvYnRhaW4gYW4gdW51c2VkIHBvcnQuCitUaGUgdGVtcG9yYXJ5IHNvY2tldCBvYmplY3QgaXMgdGhlbiBjbG9zZWQgYW5kIGRlbGV0ZWQsIGFuZCB0aGUgcG9ydCBpcworcmV0dXJuZWQuICBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSB1c2VkIGZvciBvYnRhaW5pbmcgYW4gdW51c2VkIHBvcnQgaW4KK29yZGVyIHRvIHBhc3MgdG8gYW4gZXh0ZXJuYWwgcHJvZ3JhbSAoaS5lLiB0aGUgLWFjY2VwdCBbcG9ydF0gYXJndW1lbnQgdG8KK29wZW5zc2wncyBzX3NlcnZlciBtb2RlKSBvciBhcyBhIHBhcmFtZXRlciB0byBhIHNlcnZlci1vcmllbnRlZCBjbGFzcyB0aGF0Citkb2Vzbid0IGdpdmUgeW91IGRpcmVjdCBhY2Nlc3MgdG8gdGhlIHVuZGVybHlpbmcgc29ja2V0IHVzZWQuCisKK0ZpbmFsbHksIHRlc3Rfc3VwcG9ydC5IT1NUIGhhcyBiZWVuIGludHJvZHVjZWQsIHdoaWNoIHNob3VsZCBiZSB1c2VkIGZvciB0aGUKK2hvc3QgYXJndW1lbnQgb2YgYW55IHJlbGV2YW50IHNvY2tldCBjYWxscyAoaS5lLiBiaW5kIGFuZCBjb25uZWN0KS4KKworVGhlIGZvbGxvd2luZyB0ZXN0cyB3ZXJlIHVwZGF0ZWQgdG8gZm9sbG93aW5nIHRoZSBuZXcgY29udmVudGlvbnM6Cit0ZXN0X3NvY2tldCwgdGVzdF9zbXRwbGliLCB0ZXN0X2FzeW5jb3JlLCB0ZXN0X3NzbCwgdGVzdF9odHRwbGliLAordGVzdF9wb3BsaWIsIHRlc3RfZnRwbGliLCB0ZXN0X3RlbG5ldGxpYiwgdGVzdF9zb2NrZXRzZXJ2ZXIsICAgdGVzdF9hc3luY2hhdAorYW5kIHRlc3Rfc29ja2V0X3NzbC4KKworSXQgaXMgbm93IHBvc3NpYmxlIGZvciBtdWx0aXBsZSBpbnN0YW5jZXMgb2YgdGhlIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZSB0bworcnVuIGluIHBhcmFsbGVsIHdpdGhvdXQgaXNzdWUuCisKKy4uCisKKy4uIGJwbzogMTQ5NjAzMgorLi4gZGF0ZTogNjg3MAorLi4gbm9uY2U6IERjSnROdQorLi4gc2VjdGlvbjogQnVpbGQKKworT24gYWxwaGEsIHVzZSAtbWllZWUgd2hlbiBnY2MgaXMgdGhlIGNvbXBpbGVyLgorCisuLgorCisuLiBicG86IDI1NDQKKy4uIGRhdGU6IDY4NjkKKy4uIG5vbmNlOiAtSF9OWm0KKy4uIHNlY3Rpb246IEJ1aWxkCisKK09uIEhQLVVYIHN5c3RlbXMsIHVzZSAnZ2NjIC1zaGFyZWQnIGZvciBsaW5raW5nIHdoZW4gZ2NjIGlzIHVzZWQgYXMKK2NvbXBpbGVyLgorCisuLgorCisuLiBicG86IDI1NzMKKy4uIGRhdGU6IDY4NjgKKy4uIG5vbmNlOiA0d0RlSjcKKy4uIHNlY3Rpb246IEJ1aWxkCisKK09uIE1hY09TIFggaXQgaXMgbm93IHBvc3NpYmxlIHRvIGluc3RhbGwgdGhlIGZyYW1ld29yayB3aXRoIGEgZGlmZmVyZW50IG5hbWUKK3VzaW5nIC0td2l0aC1mcmFtZXdvcmstbmFtZT1OQU1FLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4NjcKKy4uIG5vbmNlOiB5em5zS3EKKy4uIHNlY3Rpb246IEMgQVBJCisKK0FkZGVkIGltcGxlbWVudGF0aW9uIG9mIGNvcHlzaWduLCBhY29zaCwgYXNpbmgsIGF0YW5oIGFuZCBsb2cxcCB0byB0aGUgbmV3CitmaWxlcyBJbmNsdWRlL3B5bWF0aC5oIGFuZCBQeXRob24vcHltYXRoLmggZm9yIHBsYXRmb3JtcyB3aGljaCBwcm92aWRlIHRoZQorZnVuY3Rpb25zIHRocm91Z2ggdGhlaXIgbGlibS4gVGhlIGZpbGVzIGFsc28gY29udGFpbnMgc2V2ZXJhbCBoZWxwZXJzIGFuZAorY29uc3RhbnRzIGZvciBtYXRoLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4NjYKKy4uIG5vbmNlOiBLcjY1YW4KKy4uIHNlY3Rpb246IEMgQVBJCisKK0FkZGVkIGEgbmV3IGNvbnZlbmllbmNlIG1hY3JvLCBQeUVycl9XYXJuUHkzaywgZm9yIGlzc3VpbmcgUHkzayB3YXJuaW5ncy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNmIxLnJzdCBiL01pc2MvTkVXUy5kLzIuNmIxLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjgwNzA4Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi42YjEucnN0CkBAIC0wLDAgKzEsMTE0OSBAQAorLi4gYnBvOiAzMjExCisuLiBkYXRlOiA3MDE3CisuLiBub25jZTogNTNlb3VDCisuLiByZWxlYXNlIGRhdGU6IDE4LUp1bmUtMjAwOAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKword2FybmluZ3Mud2Fybl9leHBsaWNpdCgpIGRpZCBub3QgZ3VhcmQgYWdhaW5zdCBpdHMgJ3JlZ2lzdHJ5JyBhcmd1bWVudCBiZWluZworYW55dGhpbmcgb3RoZXIgdGhhbiBhIGRpY3Qgb3IgTm9uZS4gQWxzbyBmaXhlZCBhIGJ1ZyBpbiBlcnJvciBoYW5kbGluZyB3aGVuCisnbWVzc2FnZScgYW5kICdjYXRlZ29yeScgd2VyZSBib3RoIHNldCB0byBOb25lLCB0cmlnZ2VyaW5nIGEgYnVzIGVycm9yLgorCisuLgorCisuLiBicG86IDMxMDAKKy4uIGRhdGU6IDcwMTYKKy4uIG5vbmNlOiBGR1VheHQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0NvcnJlY3RlZCBhIGNyYXNoIG9uIGRlYWxsb2NhdGlvbiBvZiBhIHN1YmNsYXNzZWQgd2Vha3JlZiB3aGljaCBob2xkcyB0aGUKK2xhc3QgKHN0cm9uZykgcmVmZXJlbmNlIHRvIGl0cyByZWZlcmVudC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MDE1CisuLiBub25jZTogaGFiZ3E5CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGQgZnV0dXJlX2J1aWx0aW5zLmFzY2lpKCkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzAxNAorLi4gbm9uY2U6IFpxQ3dXbgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU2V2ZXJhbCBzZXQgbWV0aG9kcyBub3cgYWNjZXB0IG11bHRpcGxlIGFyZ3VtZW50czogdXBkYXRlKCksIHVuaW9uKCksCitpbnRlcnNlY3Rpb24oKSwgaW50ZXJzZWN0aW9uX3VwZGF0ZSgpLCBkaWZmZXJlbmNlKCksIGFuZAorZGlmZmVyZW5jZV91cGRhdGUoKS4KKworLi4KKworLi4gYnBvOiAyODk4CisuLiBkYXRlOiA3MDEzCisuLiBub25jZTogM0FsNXZYCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGRlZCBzeXMuZ2V0c2l6ZW9mKCkgdG8gcmV0cmlldmUgc2l6ZSBvZiBvYmplY3RzIGluIGJ5dGVzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwMTIKKy4uIG5vbmNlOiA3TlpLTTcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK05ldyBlbnZpcm9ubWVudCB2YXJpYWJsZSBQWVRIT05JT0VOQ09ESU5HLgorCisuLgorCisuLiBicG86IDI0ODgKKy4uIGRhdGU6IDcwMTEKKy4uIG5vbmNlOiBTZ2xOLXAKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZCBzeXMubWF4c2l6ZS4KKworLi4KKworLi4gYnBvOiAyMzUzCisuLiBkYXRlOiA3MDEwCisuLiBub25jZTogSVlPd2loCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitmaWxlLnhyZWFkbGluZXMoKSBub3cgZW1pdHMgYSBQeTNrIHdhcm5pbmcuCisKKy4uCisKKy4uIGJwbzogMjg2MworLi4gZGF0ZTogNzAwOQorLi4gbm9uY2U6IHJwSnhZNworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZ2VuZXJhdG9ycyBub3cgaGF2ZSBhIGBgZ2VuLl9fbmFtZV9fYGAgYXR0cmlidXRlIHRoYXQgZXF1YWxzCitgYGdlbi5naV9jb2RlLmNvX25hbWVgYCwgbGlrZSBgYGZ1bmMuX19uYW1lX19fYGAgdGhhdCBlcXVhbHMKK2BgZnVuYy5mdW5jX2NvZGUuY29fbmFtZWBgLiAgVGhlIHJlcHIoKSBvZiBhIGdlbmVyYXRvciBub3cgYWxzbyBjb250YWlucwordGhpcyBuYW1lLgorCisuLgorCisuLiBicG86IDI4MzEKKy4uIGRhdGU6IDcwMDgKKy4uIG5vbmNlOiBDbG9rYW8KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2VudW1lcmF0ZSgpIG5vdyBoYXMgYSBgYHN0YXJ0YGAgYXJndW1lbnQuCisKKy4uCisKKy4uIGJwbzogMjgwMQorLi4gZGF0ZTogNzAwNworLi4gbm9uY2U6IG1LSF9oOQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZml4IGJ1ZyBpbiB0aGUgZmxvYXQuaXNfaW50ZWdlciBtZXRob2Qgd2hlcmUgYSBWYWx1ZUVycm9yIHdhcyBzb21ldGltZXMKK2luY29ycmVjdGx5IHJhaXNlZC4KKworLi4KKworLi4gYnBvOiAyNzkwCisuLiBkYXRlOiA3MDA2CisuLiBub25jZTogWEVTZWtvCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitzeXMuZmxhZ3Mgd2FzIG5vdCBwcm9wZXJseSBleHBvc2luZyBpdHMgYnl0ZXNfd2FybmluZyBhdHRyaWJ1dGUuCisKKy4uCisKKy4uIGJwbzogMjE5NgorLi4gZGF0ZTogNzAwNQorLi4gbm9uY2U6IEJ6YzV2QworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworaGFzYXR0cigpIG5vdyBsZXRzIGV4Y2VwdGlvbnMgd2hpY2ggZG8gbm90IGluaGVyaXQgRXhjZXB0aW9uCisoS2V5Ym9hcmRJbnRlcnJ1cHQsIGFuZCBTeXN0ZW1FeGl0KSBwcm9wYWdhdGUgaW5zdGVhZCBvZiBpZ25vcmluZyB0aGVtLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwMDQKKy4uIG5vbmNlOiBQQm1Ed2MKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZGVkIGNoZWNrcyBmb3IgaW50ZWdlciBvdmVyZmxvd3MsIGNvbnRyaWJ1dGVkIGJ5IEdvb2dsZS4gU29tZSBhcmUgb25seQorYXZhaWxhYmxlIGlmIGFzc2VydHMgYXJlIGxlZnQgaW4gdGhlIGNvZGUsIGluIGNhc2VzIHdoZXJlIHRoZXkgY2FuJ3QgYmUKK3RyaWdnZXJlZCBmcm9tIFB5dGhvbiBjb2RlLgorCisuLgorCisuLiBicG86IDExNzkKKy4uIGRhdGU6IDcwMDMKKy4uIG5vbmNlOiBaaUc2T3EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworW0NWRS0yMDA3LTQ5NjVdIEludGVnZXIgb3ZlcmZsb3cgaW4gaW1hZ2VvcCBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMzExNgorLi4gZGF0ZTogNzAwMgorLi4gbm9uY2U6IEFfYmFGUworLi4gc2VjdGlvbjogTGlicmFyeQorCittYXJzaGFsLmR1bXBzKCkgaGFkIHF1YWRyYXRpYyBiZWhhdmlvciBmb3Igc3RyaW5ncyA+IDMyTWIuCisKKy4uCisKKy4uIGJwbzogMjEzOAorLi4gZGF0ZTogNzAwMQorLi4gbm9uY2U6IDF2OFdkcworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgZmFjdG9yaWFsKCkgdG8gdGhlIG1hdGggbW9kdWxlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwMDAKKy4uIG5vbmNlOiBaZzA4eGgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGhlYXBxIG1vZHVsZSBkb2VzIGNvbXBhcmlzb25zIHVzaW5nIExUIGluc3RlYWQgb2YgTEUuICBUaGlzIG1ha2VzIGl0cworaW1wbGVtZW50YXRpb24gbWF0Y2ggdGhhdCB1c2VkIGJ5IGxpc3Quc29ydCgpLgorCisuLgorCisuLiBicG86IDI4MTkKKy4uIGRhdGU6IDY5OTkKKy4uIG5vbmNlOiA4ckpPcUEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYWRkIGZ1bGwtcHJlY2lzaW9uIHN1bW1hdGlvbiBmdW5jdGlvbiB0byBtYXRoIG1vZHVsZSwgYmFzZWQgb24gSGV0dGluZ2VyJ3MKK0FTUE4gUHl0aG9uIENvb2tib29rIHJlY2lwZS4KKworLi4KKworLi4gYnBvOiAyNTkyCisuLiBkYXRlOiA2OTk4CisuLiBub25jZTogZHlZTTlGCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2RlbGVnYXRlIG5iX2luZGV4IGFuZCB0aGUgZmxvb3IvdHJ1ZWRpdiBzbG90cyBpbiB3ZWFrcmVmLnByb3h5LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5OTcKKy4uIG5vbmNlOiA5cHExQVUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU3VwcG9ydCBvcy5PX0FTWU5DIGFuZCBmY250bC5GQVNZTkMgaWYgdGhlIGNvbnN0YW50cyBleGlzdCBvbiB0aGUgcGxhdGZvcm0uCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk5NgorLi4gbm9uY2U6IHhwdUd5dQorLi4gc2VjdGlvbjogTGlicmFyeQorCitTdXBwb3J0IGZvciBXaW5kb3dzIDl4IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgd2luc291bmQgbW9kdWxlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5OTUKKy4uIG5vbmNlOiBRcUdtSXIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYnNkZGIgbW9kdWxlIHVwZGF0ZWQgdG8gdmVyc2lvbiA0LjcuMy4KK2h0dHA6Ly93d3cuamNlYS5lcy9wcm9ncmFtYWNpb24vcHlic2RkYi5odG0jYnNkZGIzLTQuNy4zLiBUaGlzIGNvZGUgc2hvdWxkCitiZSBjb21wYXRpYmxlIHdpdGggUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAyODU4CisuLiBkYXRlOiA2OTk0CisuLiBub25jZToga2xtcGZVCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwb3RlbnRpYWwgbWVtb3J5IGNvcnJ1cHRpb24gd2hlbiBic2RkYi5kYi5EQkVudi5sb2NrX2dldCBhbmQgb3RoZXIKK2JzZGRiLmRiIG9iamVjdCBjb25zdHJ1Y3RvcnMgcmFpc2VkIGFuIGV4Y2VwdGlvbi4KKworLi4KKworLi4gYnBvOiAyNjY5CisuLiBkYXRlOiA2OTkzCisuLiBub25jZTogVGhIQ0lyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2JzZGRiL19faW5pdF9fLnB5IGl0ZXJhdGlvbiBubyBsb25nZXIgc2lsZW50bHkgZmFpbHMgd2hlbiB0aGUgZGF0YWJhc2UgaGFzCitjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbi4gIEl0IG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3IgaW4gdGhlIHNhbWUKK21hbm5lciBhcyBhIGRpY3Rpb25hcnkuCisKKy4uCisKKy4uIGJwbzogMjg3MAorLi4gZGF0ZTogNjk5MgorLi4gbm9uY2U6IGRtdTV3NgorLi4gc2VjdGlvbjogTGlicmFyeQorCitjbWF0aG1vZHVsZS5jIGNvbXBpbGUgZXJyb3IuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk5MQorLi4gbm9uY2U6IEYtM2JDVAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBhIHRocmVhZGluZy5UaHJlYWQuaWRlbnQgcHJvcGVydHkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk5MAorLi4gbm9uY2U6IGVvel9JUQorLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nLmNvbmZpZzogUmVtb3ZlZCBvdXQtb2YtZGF0ZSBjb21tZW50IGluIF9pbnN0YWxsX2hhbmRsZXJzIGFuZCB1c2VkCitpc3N1YmNsYXNzIGluIHBsYWNlIG9mIGVxdWFsaXR5IGNvbXBhcmlzb24gb2YgY2xhc3Nlcy4KKworLi4KKworLi4gYnBvOiAyNzIyCisuLiBkYXRlOiA2OTg5CisuLiBub25jZTogd3FncldOCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK05vdyB0aGUgb3MuZ2V0Y3dkKCkgc3VwcG9ydHMgdmVyeSBsb25nIHBhdGggbmFtZXMuCisKKy4uCisKKy4uIGJwbzogMjg4OAorLi4gZGF0ZTogNjk4OAorLi4gbm9uY2U6IGdKZTQ2TQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aGUgYmVoYXZpb3VyIG9mIHBwcmludCB3aGVuIHdvcmtpbmcgd2l0aCBuZXN0ZWQgc3RydWN0dXJlcywgdG8gbWF0Y2gKK3RoZSBiZWhhdmlvdXIgb2YgMi41IGFuZCAzLjAgKG5vdyBmb2xsb3dzIHRoZSBjb21tb24gc2Vuc2UpLgorCisuLgorCisuLiBicG86IDE4MTcKKy4uIGRhdGU6IDY5ODcKKy4uIG5vbmNlOiBwUE1wVTMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY2dpIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyB0aGUgcXVlcnlzdHJpbmcgb24gUE9TVCByZXF1ZXN0cworCisuLgorCisuLiBicG86IDMxMzYKKy4uIGRhdGU6IDY5ODYKKy4uIG5vbmNlOiBoX0JUS3IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZmlsZUNvbmZpZygpJ3MgZGlzYWJsaW5nIG9mIG9sZCBsb2dnZXJzIGlzIG5vdyBjb25kaXRpb25hbCB2aWEgYW4gb3B0aW9uYWwKK2Rpc2FibGVfZXhpc3RpbmdfbG9nZ2VycyBwYXJhbWV0ZXIsIGJ1dCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBzdWNoIHRoYXQgdGhlCitvbGQgYmVoYXZpb3VyIGlzIHByZXNlcnZlZC4gVGhhbmtzIHRvIExlYW5kcm8gTHVjYXJlbGxhIGZvciB0aGUgcGF0Y2guCisKKy4uCisKKy4uIGJwbzogMzEyNgorLi4gZGF0ZTogNjk4NQorLi4gbm9uY2U6IGZUYWZYbAorLi4gc2VjdGlvbjogTGlicmFyeQorCitTdHJlYW1IYW5kbGVyIGFuZCBGaWxlSGFuZGxlciBjaGVjayBiZWZvcmUgY2FsbGluZyAiZmx1c2giIGFuZCAiY2xvc2UiIHRoYXQKK3RoZSBzdHJlYW0gb2JqZWN0IGhhcyB0aGVzZSwgdXNpbmcgaGFzYXR0ciAodGhhbmtzIHRvIGJvYmYgZm9yIHRoZSBwYXRjaCkuCisKKy4uCisKKy4uIGJwbzogMjkxMgorLi4gZGF0ZTogNjk4NAorLi4gbm9uY2U6IGVPTUNSdQorLi4gc2VjdGlvbjogTGlicmFyeQorCitwbGF0Zm9ybS51bmFtZSBub3cgdHJpZXMgdG8gZGV0ZXJtaW5lIHVua25vd24gaW5mb3JtYXRpb24gZXZlbiBpZiBvcy51bmFtZQorZXhpc3RzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5ODMKKy4uIG5vbmNlOiBzdVBjU0kKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHJmYzgyMiBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk4MgorLi4gbm9uY2U6IFVPWk5DSgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbWltZXRvb2xzIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTgxCisuLiBub25jZTogUnFaXzV5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBjdHlwZXMuYnlyZWYgZnVuY3Rpb24gbm93IHRha2VzIGFuIG9wdGlvbmFsIHNlY29uZCBwYXJhbWV0ZXIgd2hpY2gKK3NwZWNpZmllcyBhbiBvZmZzZXQgaW4gYnl0ZXMgZm9yIHRoZSBjb25zdHJ1Y3RlZCBwb2ludGVyLWxpa2Ugb2JqZWN0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5ODAKKy4uIG5vbmNlOiBvVFd1VXUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgdGhlIGFzdCBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk3OQorLi4gbm9uY2U6IGZIRml1UworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSwgUEVQIDM3MS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTc4CisuLiBub25jZTogbmxmVnVQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZhY3RvcmVkIG91dCB0aGUgaW5kZW50YXRpb24gY2xlYW5pbmcgZnJvbSBpbnNwZWN0LmdldGRvYygpIGludG8KK2luc3BlY3QuY2xlYW5kb2MoKSB0byBlYXNlIHN0YW5kYWxvbmUgdXNlLgorCisuLgorCisuLiBicG86IDE3OTgKKy4uIGRhdGU6IDY5NzcKKy4uIG5vbmNlOiBBemdSYVkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGN0eXBlcyBjYWxsaW5nIGNvbnZlbnRpb24gdGhhdCBhbGxvd3Mgc2FmZSBhY2Nlc3MgdG8gZXJybm8uCisKKy4uCisKKy4uIGJwbzogMjQwNAorLi4gZGF0ZTogNjk3NgorLi4gbm9uY2U6IHkzVmkydAorLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXMgb2JqZWN0cyBzdXBwb3J0IHRoZSBuZXcgcGVwMzExOCBidWZmZXIgaW50ZXJmYWNlLgorCisuLgorCisuLiBicG86IDIxMjUKKy4uIGRhdGU6IDY5NzUKKy4uIG5vbmNlOiB3WmdzcWQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIEdldEludGVnZXIgYW5kIEdldFN0cmluZyBtZXRob2RzIGZvciBtc2lsaWIuUmVjb3JkIG9iamVjdHMuCisKKy4uCisKKy4uIGJwbzogMjc4MgorLi4gZGF0ZTogNjk3NAorLi4gbm9uY2U6IGNEZE05WQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZGF0ZXRpbWUgbW9kdWxlJ3Mgc3RyZnRpbWUgbWV0aG9kcyBub3cgYWNjZXB0IHVuaWNvZGUgZm9ybWF0IHN0cmluZ3MKK2p1c3QgYXMgdGltZS5zdHJmdGltZSBhbHdheXMgaGFzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5NzMKKy4uIG5vbmNlOiBsaElFSDAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHNnbWxsaWIgYW5kIGh0bWxsaWIgbW9kdWxlcyBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24KKzMuMC4KKworLi4KKworLi4gYnBvOiAzMDExCisuLiBkYXRlOiA2OTcyCisuLiBub25jZTogNmJkS3NuCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvY2FsZSBtb2R1bGUgYWxpYXMgdGFibGUgd2FzIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIGZyb20gdGhlIFgub3JnCitsb2NhbGUuYWxpYXMgZmlsZS4KKworLi4KKworLi4gYnBvOiAxNzk3CisuLiBkYXRlOiA2OTcxCisuLiBub25jZTogcTdzZThRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2N0eXBlcyBOVUxMIGZ1bmN0aW9uIHBvaW50ZXJzIGhhdmUgYSBGYWxzZSBib29sZWFuIHZhbHVlIG5vdy4KKworLi4KKworLi4gYnBvOiAyOTg1CisuLiBkYXRlOiA2OTcwCisuLiBub25jZTogTGo4RlQ2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FsbG93IDY0LWJpdCBpbnRlZ2VyIHJlc3BvbnNlcyAoYGA8aTg+YGApIGluIFhNTFJQQyB0cmFuc2ZlcnMuCisKKy4uCisKKy4uIGJwbzogMjg3NworLi4gZGF0ZTogNjk2OQorLi4gbm9uY2U6IERIeDBWcAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgVXNlclN0cmluZy5NdXRhYmxlU3RyaW5nIGNsYXNzIGhhcyBiZWVuIHJlbW92ZWQgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTY4CisuLiBub25jZTogZUFaTk5BCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0RvIG5vdCBjbG9zZSBleHRlcm5hbCBmaWxlIG9iamVjdHMgcGFzc2VkIHRvIHRhcmZpbGUub3Blbihtb2RlPSd3OmJ6MicpIHdoZW4KK3RoZSBUYXJGaWxlIGlzIGNsb3NlZC4KKworLi4KKworLi4gYnBvOiAyOTU5CisuLiBkYXRlOiA2OTY3CisuLiBub25jZTogVmZjVUdkCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIGZpbGUtbGlrZSBvYmplY3RzLCBnemlwJ3MgR3ppcEZpbGUuY2xvc2UoKSBjYW4KK25vdyBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgd2l0aG91dCByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KKworLi4KKworLi4gYnBvOiAxMzkwCisuLiBkYXRlOiA2OTY2CisuLiBub25jZTogcjVWRDRLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JhaXNlIFZhbHVlRXJyb3IgaW4gdG94bWwgd2hlbiBhbiBpbnZhbGlkIGNvbW1lbnQgd291bGQgb3RoZXJ3aXNlIGJlCitwcm9kdWNlZC4KKworLi4KKworLi4gYnBvOiAyOTE0CisuLiBkYXRlOiA2OTY1CisuLiBub25jZTogdkZpNEQ2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RpbWVkUm90YXRpbmdGaWxlSGFuZGxlciBub3cgdGFrZXMgYW4gb3B0aW9uYWwga2V5d29yZCBhcmd1bWVudCAidXRjIiB0byB1c2UKK1VUQyB0aW1lIHJhdGhlciB0aGFuIGxvY2FsIHRpbWUuCisKKy4uCisKKy4uIGJwbzogMjkyOQorLi4gZGF0ZTogNjk2NAorLi4gbm9uY2U6IHJOMGtoRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIgd2FzIHVzaW5nIHRoZSB3cm9uZyBwYXRoIHdoZW4gZGVsZXRpbmcgb2xkIGxvZworZmlsZXMgKGZpbGVuYW1lIG9ubHkgaW5zdGVhZCBvZiBmdWxsIHBhdGgpLgorCisuLgorCisuLiBicG86IDE3NzUwMjUKKy4uIGRhdGU6IDY5NjMKKy4uIG5vbmNlOiAwekFfclgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworWW91IGNhbiBub3cgc3BlY2lmeSB6aXBmaWxlIG1lbWJlcnMgdG8gb3BlbigpLCByZWFkKCkgb3IgZXh0cmFjdCgpIHZpYSBhCitaaXBJbmZvIGluc3RhbmNlLiAgVGhpcyBhbGxvd3MgaGFuZGxpbmcgZHVwbGljYXRlIGZpbGVuYW1lcyBpbiB6aXBmaWxlcy4KKworLi4KKworLi4gYnBvOiA5NjE4MDUKKy4uIGRhdGU6IDY5NjIKKy4uIG5vbmNlOiBsaWM4SDQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IFRleHQuZWRpdF9tb2RpZmllZCgpIGluIFRraW50ZXIuCisKKy4uCisKKy4uIGJwbzogMTc5MworLi4gZGF0ZTogNjk2MQorLi4gbm9uY2U6IHVxd1pxNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGdW5jdGlvbiBjdHlwZXMudXRpbC5maW5kX21zdmNydCgpIGFkZGVkIHRoYXQgcmV0dXJucyB0aGUgbmFtZSBvZiB0aGUgQworcnVudGltZSBsaWJyYXJ5IHRoYXQgUHl0aG9uIHVzZXMuIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeShuYW1lKSBub3cgY2FsbAordGhpcyBmdW5jdGlvbiB3aGVuIG5hbWUgaXMgJ20nIG9yICdjJy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTYwCisuLiBub25jZTogVFlmYW9DCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBzdGF0dmZzIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk1OQorLi4gbm9uY2U6IFl4SFZmZAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgc3VuYXVkaW9kZXYgYW5kIFNVTkFVRElPREVWIG1vZHVsZXMgaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4KK1B5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk1OAorLi4gbm9uY2U6IHh4cHZnNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgV0FJVCBtb2R1bGUgZnJvbSBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTU3CisuLiBub25jZTogMkVFdVZsCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSB0b3JnYiBtb2R1bGUgZnJvbSBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTU2CisuLiBub25jZTogRHhjcXlKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBTViBtb2R1bGUgZnJvbSBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTU1CisuLiBub25jZTogVDNZbjZLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSByZWFkY2QgbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk1NAorLi4gbm9uY2U6IEg5WElOYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgcGFuZWxwYXJzZXIgbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbgorMy4wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5NTMKKy4uIG5vbmNlOiB6VmkyUWEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHBhbmVsIG1vZHVsZSBmcm9tIElSSVggaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5NTIKKy4uIG5vbmNlOiBHN1RBNVQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGpwZWcgbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk1MQorLi4gbm9uY2U6IG1WQTc4UgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgSU9DVEwgbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk1MAorLi4gbm9uY2U6IEo0S3lYNgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgSU4gbW9kdWxlIGZyb20gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk0OQorLi4gbm9uY2U6IE51aDZVTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgaW1nZmlsZSBtb2R1bGUgZnJvbSBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTQ4CisuLiBub25jZTogVUJzZUV3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBHTFdTIG1vZHVsZSBmcm9tIElSSVggaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5NDcKKy4uIG5vbmNlOiB4Z3pDLWoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIEdFVCBtb2R1bGUgZnJvbSBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTQ2CisuLiBub25jZTogTmdCd2tsCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBmbSBtb2R1bGUgZnJvbSBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTQ1CisuLiBub25jZTogOWtEMUstCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBGTCwgZmxwLCBhbmQgZmwgbW9kdWxlcyBmcm9tIElSSVggaGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4KK1B5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk0NAorLi4gbm9uY2U6IEFZb1ZKUgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgRklMRSBtb2R1bGUgb24gSVJJWCBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjk0MworLi4gbm9uY2U6IENRMzhpagorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgRVJSTk8gbW9kdWxlIG9uIElSSVggaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5NDIKKy4uIG5vbmNlOiBSLTlZTEgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIERFVklDRSwgR0wsIGdsLCBhbmQgY2dlbiBtb2R1bGVzICh3aGljaCBpbmRpcmVjdGx5IGluY2x1ZGVzIGNnZW5zdXBwb3J0KQoraGF2ZSBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTQxCisuLiBub25jZTogZEtPRjJnCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBDTCwgQ0xfb2xkLCBhbmQgY2wgbW9kdWxlcyBmb3IgSVJJWCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbgorUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTQwCisuLiBub25jZTogNWNGa1lkCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBjZHBsYXllciBtb2R1bGUgZm9yIElSSVggaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MzkKKy4uIG5vbmNlOiA1eTB5ZWsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGNkZGIgbW9kdWxlIGZvciBJUklYIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTM4CisuLiBub25jZTogMHBITHVTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBjZCBhbmQgQ0QgbW9kdWxlcyBmb3IgSVJJWCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24KKzMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTM3CisuLiBub25jZTogZUYwZjZPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBhbCBhbmQgQUwgbW9kdWxlcyBmb3IgSVJJWCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24KKzMuMC4KKworLi4KKworLi4gYnBvOiAxNzEzMDQxCisuLiBkYXRlOiA2OTM2CisuLiBub25jZTogSnpzVF96CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeCBwcHJpbnQncyBoYW5kbGluZyBvZiBtYXhpbXVtIGRlcHRoLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MzUKKy4uIG5vbmNlOiBGcEJ1QlAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHRpbWluZyBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MzQKKy4uIG5vbmNlOiBMejlZc2QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHN2IG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjkzMworLi4gbm9uY2U6IGt3anU3LQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbXVsdGlmaWxlIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGFzIHBlciBQRVAgNC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTMyCisuLiBub25jZTogRy1DdWo2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBpbWFnZW9wIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMjI1MAorLi4gZGF0ZTogNjkzMQorLi4gbm9uY2U6IHY0SExpdgorLi4gc2VjdGlvbjogTGlicmFyeQorCitFeGNlcHRpb25zIHJhaXNlZCBkdXJpbmcgZXZhbHVhdGlvbiBvZiBuYW1lcyBpbiBybGNvbXBsZXRlcidzCitgYENvbXBsZXRlci5jb21wbGV0ZSgpYGAgbWV0aG9kIGFyZSBub3cgY2F1Z2h0IGFuZCBpZ25vcmVkLgorCisuLgorCisuLiBicG86IDI2NTkKKy4uIGRhdGU6IDY5MzAKKy4uIG5vbmNlOiBGdWh3RGIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgYGBicmVha19vbl9oeXBoZW5zYGAgb3B0aW9uIHRvIHRleHR3cmFwIFRleHRXcmFwcGVyIGNsYXNzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MjkKKy4uIG5vbmNlOiB3OFh2Z2oKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIG1obGliIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjkyOAorLi4gbm9uY2U6IGY0SFdMRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbGludXhhdWRpb2RldiBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MjcKKy4uIG5vbmNlOiBPOVVKc1IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGlob29rcyBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MjYKKy4uIG5vbmNlOiBKRkpobWsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGZwZm9ybWF0IG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjkyNQorLi4gbm9uY2U6IEJWeHllRworLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZGwgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTI0CisuLiBub25jZTogTUNzeUxKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBDYW52YXMgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTIzCisuLiBub25jZTogYVZqaG01CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBjb21waWxlciBwYWNrYWdlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTIyCisuLiBub25jZTogUjYtUEIzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBCYXN0aW9uIGFuZCByZXhlYyBtb2R1bGVzIGhhdmUgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbgorMy4wLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MjEKKy4uIG5vbmNlOiBCdmxjaFQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGJzZGRiMTg1IG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjkyMAorLi4gbm9uY2U6IEx0NHBKRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgcHVyZSBtb2R1bGUgaGFzIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiBQeXRob24gMy4wLgorCisuLgorCisuLiBicG86IDI0ODcKKy4uIGRhdGU6IDY5MTkKKy4uIG5vbmNlOiBuMkFoWk8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgbWF0aC5sZGV4cCh4LCBuKSB3aGVuIG4gaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBhIEMKK2xvbmcuICBsZGV4cCh4LCBuKSBub3cgcmV0dXJucyBhIHplcm8gKHdpdGggc3VpdGFibGUgc2lnbikgaWYgbiBpcyBsYXJnZSBhbmQKK25lZ2F0aXZlOyBwcmV2aW91c2x5LCBpdCByYWlzZWQgT3ZlcmZsb3dFcnJvci4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTE4CisuLiBub25jZTogNklfVkhfCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSB0b2FpZmYgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTE3CisuLiBub25jZTogcVdRbWVfCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSB0ZXN0LnRlc3RhbGwgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTE2CisuLiBub25jZTogSFBpeEdVCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBuZXcgbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTE1CisuLiBub25jZTogc1EwYUVFCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSB1c2VyIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjkxNAorLi4gbm9uY2U6IEoteTd1cQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgc3RyaW5nb2xkIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjkxMworLi4gbm9uY2U6IHUxUmhBYworLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbXV0ZXggbW9kdWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTEyCisuLiBub25jZTogTmxXZVN5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBpbXB1dGlsIG1vZHVsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjkxMQorLi4gbm9uY2U6IGlJXzRycAorLi4gc2VjdGlvbjogTGlicmFyeQorCit0ZXN0LnRlc3Rfc3VwcG9ydC5jYXRjaF93YXJuaW5nKCkgZ2FpbmVkIGEgJ3JlY29yZCcgYXJndW1lbnQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjkxMAorLi4gbm9uY2U6IDBEdHNMOQorLi4gc2VjdGlvbjogTGlicmFyeQorCitvcy5wYXRoLndhbGsgaXMgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiBvcy53YWxrLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MDkKKy4uIG5vbmNlOiBNV1ZneTgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcGRiIGdhaW5lZCB0aGUgInVudGlsIiBjb21tYW5kLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MDgKKy4uIG5vbmNlOiBSOTc4bWIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIE1hYyBNb2R1bGVzIChpbmNsdWRpbmcgQ2FyYm9uKSBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbgorUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTA3CisuLiBub25jZTogMmhSZlhTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0xpYnJhcnk6IG9uIE1hY09TIFggeW91IGNhbiBub3cgc2V0IGBgQVJDSEZMQUdTYGAgaW4gdGhlIHNoZWxsIGVudmlyb25tZW50Cit0byBjb250cm9sIHRoZSAnLWFyY2gnIGZsYWdzIHRoYXQgYXJlIHVzZWQgdG8gYnVpbGQgYW4gZXh0ZW5zaW9uLiBUaGlzIHdhcworYWRkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBBcHBsZSdzIGJ1aWxkIG9mIFB5dGhvbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTA2CisuLiBub25jZTogSGpvZFNpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBidW5kbGVkIE9TWC1zcGVjaWZpYyBjb3B5IG9mIGxpYmJmZmkgaXMgbm93IGluIHN5bmMgd2l0aCB0aGUgdmVyc2lvbgorc2hpcHBlZCB3aXRoIFB5T2JqQyAyLjAgYW5kIGluY2x1ZGVzIHN1cHBvcnQgZm9yIHg4Nl82NCBhbmQgcHBjNjQgcGxhdGZvcm1zLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MDUKKy4uIG5vbmNlOiBpVHAzejMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHRocmVhZGluZyBtb2R1bGUgZ2FpbmVkIGFsaWFzZXMgZm9yIG5hbWVzIHRoYXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZQorMy54IHNlcmllcy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTA0CisuLiBub25jZTogMENCSE5sCisuLiBzZWN0aW9uOiBCdWlsZAorCitUaGUgV2luZG93cyBpbnN0YWxsZXIgbm93IGluY2x1ZGVzIFRrIDguNSwgYnppcDIgMS4wLjUsIGFuZCBTUUxpdGUgMy41LjkuCisKKy4uCisKKy4uIGJwbzogMTcyMjIyNQorLi4gZGF0ZTogNjkwMworLi4gbm9uY2U6IGo5T1NQeQorLi4gc2VjdGlvbjogQnVpbGQKKworU3VwcG9ydCBRTlggNi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA2OTAyCisuLiBub25jZTogQ0JvNUpHCisuLiBzZWN0aW9uOiBCdWlsZAorCitgYExpYi9saWItb2xkYGAgaXMgbm93IGFkZGVkIHRvIHN5cy5wYXRoLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY5MDEKKy4uIG5vbmNlOiBzZWhEdF8KKy4uIHNlY3Rpb246IEJ1aWxkCisKK09uIE1hY09TIFggaXQgaXMgbm93IHBvc3NpYmxlIHRvIGluc3RhbGwgdGhlIGZyYW1ld29yayBpbiA2NC1iaXQgbW9kZSBvcgorZXZlbiBhcyBhIDQtd2F5IHVuaXZlcnNhbCBiaW5hcnkgKHRoYXQgaXMsIFBQQywgaTM4NiwgUFBDNjQgYW5kIHg4Nl82NAorc3VwcG9ydCBpbiBvbmUgYmluYXJ5KS4KKworVGhpcyBpcyBjb250cm9sbGVkIGJ5IHRoZSBjb25maWd1cmUgYXJndW1lbnQgYGAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzYGA6CisKKy0gYGAtLXdpdGgtdW5pdmVyc2FsLWFyY2hzPWFsbGBgOiBpbnN0YWxsIDQtd2F5IHVuaXZlcnNhbAorCistIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNocz0zMi1iaXRgYDogaW5zdGFsbCAyLXdheSB1bml2ZXJzYWwsIDMyLWJpdCAodGhlCitkZWZhdWx0KQorCistIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNocz02NC1iaXRgYDogaW5zdGFsbCAyLXdheSB1bml2ZXJzYWwsIDY0LWJpdAorCitUaGlzIG9wdGlvbiBzaG91bGQgYmUgdXNlZCBpbiBjb21iaW5hdGlvbiB3aXRoIGBgLS1lbmFibGUtdW5pdmVyc2Fsc2RrPWBgLgorCitOT1RFOiA2NC1iaXQgYW5kIDQtd2F5IGJ1aWxkcyBhcmUgb25seSBzdXBwcG9ydGVkIG9uIE1hYyBPUyBYIDEwLjUgKG9yCitsYXRlcikuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjkwMAorLi4gbm9uY2U6IGRXc3FMcAorLi4gc2VjdGlvbjogQyBBUEkKKworQWRkIGBgUHlUeXBlX01vZGlmaWVkKClgYCBhcyBhIHB1YmxpYyBBUEkgdG8gY2xlYXIgdGhlIHR5cGUgY2FjaGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNjg5OQorLi4gbm9uY2U6IGtCUDdpaAorLi4gc2VjdGlvbjogQyBBUEkKKworVGhlIFB5Qnl0ZXMgZnVuY3Rpb25zIGhhdmUgYmVlbiByZW5hbWVkIHRvIFB5Qnl0ZUFycmF5LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDY4OTgKKy4uIG5vbmNlOiBBYjV3REgKKy4uIHNlY3Rpb246IEMgQVBJCisKK1RoZSBQeVN0cmluZyBmdW5jdGlvbnMgaGF2ZSBiZWVuIHJlbmFtZWQgdG8gUHlCeXRlcy4gQSBiYXRjaCBvZiBkZWZpbmVzIHdlcmUKK2FkZGVkIHNvIHRoYXQgdGhlIGxpbmtlciBzdGlsbCBzZWVzIHRoZSBvcmlnaW5hbCBQeVN0cmluZyBuYW1lcy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNmIyLnJzdCBiL01pc2MvTkVXUy5kLzIuNmIyLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGU3N2FmCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi42YjIucnN0CkBAIC0wLDAgKzEsNDI0IEBACisuLiBicG86IDMxNTYKKy4uIGRhdGU6IDcwNTkKKy4uIG5vbmNlOiBoZG01S00KKy4uIHJlbGVhc2UgZGF0ZTogMTctSnVsLTIwMDgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBpbmNvbnNpc3RlbnQgYmVoYXZpb3Igb2YgdGhlIGJ5dGVhcnJheSB0eXBlOiBhbGwgaXRzIG1ldGhvZHMgbm93IGFsbG93Citmb3IgaXRlbXMgb2JqZWN0cyB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQgdG8gYW4gaW50ZWdlciB1c2luZworb3BlcmF0b3IuaW5kZXgoKS4KKworLi4KKworLi4gYnBvOiAzMzYwCisuLiBkYXRlOiA3MDU4CisuLiBub25jZTogSXJqbE1jCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggaW5jb3JyZWN0IHBhcnNpbmcgb2YgJzAyMDAwMDAwMDAwMC4wJywgd2hpY2ggcHJvZHVjZWQgYSBWYWx1ZUVycm9yCitpbnN0ZWFkIG9mIGdpdmluZyB0aGUgY29ycmVjdCBmbG9hdC4KKworLi4KKworLi4gYnBvOiAzMDgzCisuLiBkYXRlOiA3MDU3CisuLiBub25jZTogLWxHYlVZCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGQgYWx0ZXJuYXRlICgjKSBmb3JtYXR0aW5nIGZvciBiaW4sIG9jdCwgaGV4IG91dHB1dCBmb3Igc3RyLmZvcm1hdCgpLgorVGhpcyBhZGRzIHRoZSBwcmVmaXggMGIsIDBvLCBvciAweCwgcmVzcGVjdGl2ZWx5LgorCisuLgorCisuLiBicG86IDMwMDgKKy4uIGRhdGU6IDcwNTYKKy4uIG5vbmNlOiBZc1pPMTIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3RoZSBmbG9hdCB0eXBlIGhhcyBhIG5ldyBpbnN0YW5jZSBtZXRob2QgJ2Zsb2F0LmhleCcgYW5kIGEgbmV3IGNsYXNzIG1ldGhvZAorJ2Zsb2F0LmZyb21oZXgnIHRvIGNvbnZlcnQgZmxvYXRpbmctcG9pbnQgbnVtYmVycyB0byBhbmQgZnJvbSBoZXhhZGVjaW1hbAorc3RyaW5ncywgcmVzcGVjdGl2ZWx5LgorCisuLgorCisuLiBicG86IDIyMzUKKy4uIGRhdGU6IDcwNTUKKy4uIG5vbmNlOiA4QnJzX04KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK19faGFzaF9fIGlzIG9uY2UgYWdhaW4gaW5oZXJpdGVkIGJ5IGRlZmF1bHQuIFRvIGFsbG93IGNvbGxlY3Rpb25zLkhhc2hhYmxlCit0byByZW1haW4gbWVhbmluZ2Z1bCBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhlIGRlZmF1bHQgaGFzaCBpbXBsZW1lbnRhdGlvbgorKG9iamVjdC5fX2hhc2hfXyksIGl0IGlzIG5vdyBwb3NzaWJsZSB0byBleHBsaWNpdCBibG9jayBpbmhlcml0YW5jZSBvZiBoYXNoCitieSBzZXR0aW5nIF9faGFzaF9fPU5vbmUgYXQgdGhlIFB5dGhvbiBsZXZlbCwgb3IKK3RwX2hhc2g9UHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkIGF0IHRoZSBDIGxldmVsLgorCisuLgorCisuLiBicG86IDMyMjEKKy4uIGRhdGU6IDcwNTQKKy4uIG5vbmNlOiAtMEhBRUIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0lzc3VlIGEgUnVudGltZVdhcm5pbmcgaW5zdGVhZCBvZiByYWlzaW5nIFN5c3RlbUVycm9yIGlmIHRoZSBwYXJlbnQgbW9kdWxlCitjYW5ub3QgYmUgZm91bmQgd2hpbGUgcGVyZm9ybWluZyBhbiBhYnNvbHV0ZSBpbXBvcnQuIFRoaXMgbWVhbnMgdGhhdCBhbgoraW5jb3JyZWN0bHkgZGVmaW5lZCBfX3BhY2thZ2VfXyBhdHRyaWJ1dGUgd2lsbCBub3cgb25seSBwcmV2ZW50IHJlbGF0aXZlCitpbXBvcnRzIGluIHRoYXQgbW9kdWxlIHJhdGhlciB0aGFuIGNhdXNpbmcgYWxsIGltcG9ydHMgZnJvbSB0aGF0IG1vZHVsZSB0bworZmFpbC4KKworLi4KKworLi4gYnBvOiAyNTE3CisuLiBkYXRlOiA3MDUzCisuLiBub25jZTogWUh3ZktwCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBbGxvdyB1bmljb2RlIG1lc3NhZ2VzIGluIEV4Y2VwdGlvbnMgYWdhaW4gYnkgY29ycmVjdGx5IGJ5cGFzc2luZyB0aGUKK2luc3RhbmNlIGRpY3Rpb25hcnkgd2hlbiBsb29raW5nIHVwIF9fdW5pY29kZV9fIG9uIG5ldy1zdHlsZSBjbGFzc2VzLgorCisuLgorCisuLiBicG86IDMyNDIKKy4uIGRhdGU6IDcwNTIKKy4uIG5vbmNlOiB1Rm5lTTEKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBhIGNyYXNoIGluc2lkZSB0aGUgcHJpbnQgc3RhdGVtZW50LCBpZiBzeXMuc3Rkb3V0IGlzIHNldCB0byBhIGN1c3RvbQorb2JqZWN0IHdob3NlIHdyaXRlKCkgbWV0aG9kIGhhcHBlbnMgdG8gaW5zdGFsbCBhbm90aGVyIGZpbGUgaW4gc3lzLnN0ZG91dC4KKworLi4KKworLi4gYnBvOiAzMDg4CisuLiBkYXRlOiA3MDUxCisuLiBub25jZTogYlNIbE5pCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitDb3JyZWN0ZWQgYSByYWNlIGNvbmRpdGlvbiBpbiBjbGFzc2VzIGRlcml2ZWQgZnJvbSB0aHJlYWRpbmcubG9jYWw6IHRoZQorZmlyc3QgbWVtYmVyIHNldCBieSBhIHRocmVhZCBjb3VsZCBiZSBzYXZlZCBpbiBhbm90aGVyIHRocmVhZCdzIGRpY3Rpb25hcnkuCisKKy4uCisKKy4uIGJwbzogMzAwNAorLi4gZGF0ZTogNzA1MAorLi4gbm9uY2U6IFA0Z192VQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworTWlub3IgY2hhbmdlIHRvIHNsaWNlLmluZGljZXMoKTogdGhlIHN0YXJ0IGFuZCBzdG9wIGFyZ3VtZW50cyBhcmUgbm93Cit0cmVhdGVkIGlkZW50aWNhbGx5LCBtYWtpbmcgdGhlIGJlaGF2aW91ciBlYXNpZXIgdG8gZGVzY3JpYmUgYW5kIHVuZGVyc3RhbmQuCitGb3IgZXhhbXBsZSwgc2xpY2UoTm9uZSwgLTEwLCAxKS5pbmRpY2VzKDkpIG5vdyByZXR1cm5zICgwLCAwLCAxKSBpbnN0ZWFkIG9mCisoMCwgLTEsIDEpLCBhbmQgc2xpY2UoTm9uZSwgMTAsIC0xKS5pbmRpY2VzKDEwKSByZXR1cm5zICg5LCA5LCAtMSkgaW5zdGVhZAorb2YgKDksIDEwLCAtMSkuCisKKy4uCisKKy4uIGJwbzogMzIxOQorLi4gZGF0ZTogNzA0OQorLi4gbm9uY2U6IDZhd2k5YworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQ2FsbGluZyBhIGZ1bmN0aW9uIHdpdGggcmVwZWF0ZWQga2V5d29yZCBhcmd1bWVudHMsIGYoYT0yLCBhPTIzKSwgd291bGQgbm90CitjYXVzZSBhIHN5bnRheCBlcnJvci4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBmcm9tIDIuNCBjYXVzZWQgYnkgdGhlIHN3aXRjaAordG8gdGhlIG5ldyBjb21waWxlci4KKworLi4KKworLi4gYnBvOiAyODYyCisuLiBkYXRlOiA3MDQ4CisuLiBub25jZTogUi1Bdnl5CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitNYWtlIGludCBhbmQgZmxvYXQgZnJlZWxpc3QgbWFuYWdlbWVudCBjb25zaXN0ZW50IHdpdGggb3RoZXIgZnJlZWxpc3RzLgorQ2hhbmdlcyB0aGVpciBDb21wYWN0RnJlZUxpc3QgYXBpcyBpbnRvIENsZWFyRnJlZUxpc3QgYXBpcyBhbmQgY2FsbHMgdGhlbQordmlhIGdjLmNvbGxlY3QoKS4KKworLi4KKworLi4gYnBvOiAzNTU0CisuLiBkYXRlOiA3MDQ3CisuLiBub25jZTogXzVETzhCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2N0eXBlcy5zdHJpbmdfYXQgYW5kIGN0eXBlcy53c3RyaW5nX2F0IGRpZCBjYWxsIFB5dGhvbiBhcGkgZnVuY3Rpb25zIHdpdGhvdXQKK2hvbGRpbmcgdGhlIEdJTCwgd2hpY2ggY291bGQgbGVhZCB0byBhIGZhdGFsIGVycm9yIHdoZW4gdGhleSBmYWlsZWQuCisKKy4uCisKKy4uIGJwbzogNzk5NDI4CisuLiBkYXRlOiA3MDQ2CisuLiBub25jZToga0E3c0pTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBUa2ludGVyLk1pc2MuX25hbWV0b3dpZGdldCB0byB1bndyYXAgVGNsIGNvbW1hbmQgb2JqZWN0cy4KKworLi4KKworLi4gYnBvOiAzMzk1CisuLiBkYXRlOiA3MDQ1CisuLiBub25jZTogajZxOU02CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeCByZWZlcmVuY2UgaW4gdGVzdF9tdWx0aXByb2Nlc3NpbmcgdG8gb2xkIGRlYnVnSW5mbyBtZXRob2QKKworLi4KKworLi4gYnBvOiAzMzEyCisuLiBkYXRlOiA3MDQ0CisuLiBub25jZTogcEdOWlZZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0d28gY3Jhc2hlcyBpbiBzcWxpdGUzLgorCisuLgorCisuLiBicG86IDE2MDg4MTgKKy4uIGRhdGU6IDcwNDMKKy4uIG5vbmNlOiBGdHZHR2sKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG1pc2JlaGF2aW9yIGluIG9zLmxpc3RkaXIoKSBpZiByZWFkZGlyKCkgZmFpbHMuCisKKy4uCisKKy4uIGJwbzogMzEyNQorLi4gZGF0ZTogNzA0MgorLi4gbm9uY2U6IGZFQVB4WQorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmUgY29weV9yZWcgaW4gbXVsdGlwcm9jZXNzaW5nIGFuZCByZXBsYWNlIGl0IHdpdGgKK0ZvcmtpbmdQaWNrbGVyLnJlZ2lzdGVyKCkgdG8gcmVzb2x2ZSBjb25mbGljdCB3aXRoIGN0eXBlcy4KKworLi4KKworLi4gYnBvOiAzMDkwCisuLiBkYXRlOiA3MDQxCisuLiBub25jZTogRGw1QXI0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIEFSQ0hGTEFHUyBwYXJzaW5nIG9uIE9TL1gKKworLi4KKworLi4gYnBvOiAzMzEzCisuLiBkYXRlOiA3MDQwCisuLiBub25jZTogd3ZtNkhQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGEgY3Jhc2ggd2hlbiBhIGZhaWxlZCBkbG9wZW4oKSBjYWxsIGRvZXMgbm90IHNldCBhIHZhbGlkIGRsZXJyb3IoKQorbWVzc2FnZS4KKworLi4KKworLi4gYnBvOiAzMjU4CisuLiBkYXRlOiA3MDM5CisuLiBub25jZTogSkJCbWdpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGEgY3Jhc2ggd2hlbiBhIGN0eXBlcyBQT0lOVEVSIHR5cGUgdG8gYW4gaW5jb21wbGV0ZSBzdHJ1Y3R1cmUgd2FzCitjcmVhdGVkLgorCisuLgorCisuLiBicG86IDMzMzkKKy4uIGRhdGU6IDcwMzgKKy4uIG5vbmNlOiBMNEZuOWYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZHVtbXlfdGhyZWFkLmFjcXVpcmUoKSBzaG91bGQgbm90IHJldHVybiBOb25lLgorCisuLgorCisuLiBicG86IDMyODUKKy4uIGRhdGU6IDcwMzcKKy4uIG5vbmNlOiA5QjNGRl8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRnJhY3Rpb25zIGZyb21fZmxvYXQoKSBhbmQgZnJvbV9kZWNpbWFsKCkgYWNjZXB0IEludGVncmFsIGFyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiAzMzAxCisuLiBkYXRlOiA3MDM2CisuLiBub25jZTogMDYzb2FRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Jpc2VjdCBtb2R1bGUgYmVoYXZlZCBiYWRseSB3aGVuIGxvIHdhcyBuZWdhdGl2ZS4KKworLi4KKworLi4gYnBvOiA4Mzk0OTYKKy4uIGRhdGU6IDcwMzUKKy4uIG5vbmNlOiBwbDAyaC0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworU2ltcGxlSFRUUFNlcnZlciB1c2VkIHRvIG9wZW4gdGV4dCBmaWxlcyBpbiB0ZXh0IG1vZGUuIFRoaXMgaXMgYm90aAordW5uZWNlc3NhcnkgKEhUVFAgYWxsb3dzIHRleHQgY29udGVudCB0byBiZSBzZW50IGluIHNldmVyYWwgZm9ybXMpIGFuZCB3cm9uZworYmVjYXVzZSB0aGUgYWN0dWFsIHRyYW5zbWl0dGVkIHNpemUgY291bGQgZGlmZmVyIGZyb20gdGhlIGNvbnRlbnQtbGVuZ3RoLgorVGhlIHByb2JsZW0gaGFkIGJlZW4gY29ycmVjdGVkIGluIHRoZSAyLjQgYnJhbmNoLCBidXQgbmV2ZXIgbWVyZ2VkIGludG8KK3RydW5rLgorCisuLgorCisuLiBicG86IDI2NjMKKy4uIGRhdGU6IDcwMzQKKy4uIG5vbmNlOiBqMDM3VEIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYWRkIGZpbHRlcmluZyBjYXBhYmlsaXR5IHRvIHNodXRpbC5jb3B5dHJlZSgpLgorCisuLgorCisuLiBicG86IDE2MjIKKy4uIGRhdGU6IDcwMzMKKy4uIG5vbmNlOiBZaTduQmYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29ycmVjdCBpbnRlcnByZXRhdGlvbiBvZiB2YXJpb3VzIFpJUCBoZWFkZXIgZmllbGRzLgorCisuLgorCisuLiBicG86IDE1MjYKKy4uIGRhdGU6IDcwMzIKKy4uIG5vbmNlOiBHVG1GekIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWxsb3cgbW9yZSB0aGFuIDY0ayBmaWxlcyB0byBiZSBhZGRlZCB0byBaaXA2NCBmaWxlLgorCisuLgorCisuLiBicG86IDE3NDYKKy4uIGRhdGU6IDcwMzEKKy4uIG5vbmNlOiA5SFQ4RHEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29ycmVjdCBoYW5kbGluZyBvZiB6aXBmaWxlIGFyY2hpdmUgY29tbWVudHMgKHByZXZpb3VzbHkgYXJjaGl2ZXMgd2l0aAorY29tbWVudHMgb3ZlciA0ayB3ZXJlIGZsYWdnZWQgYXMgaW52YWxpZCkuIEFsbG93IHdyaXRpbmcgWmlwIGZpbGVzIHdpdGgKK2FyY2hpdmVzIGJ5IHNldHRpbmcgdGhlICdjb21tZW50JyBhdHRyaWJ1dGUgb2YgYSBaaXBGaWxlLgorCisuLgorCisuLiBicG86IDQ0OTIyNworLi4gZGF0ZTogNzAzMAorLi4gbm9uY2U6IDVMc1plSQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgcmxjb21wbGV0ZXIgbW9kdWxlIG5vdyBhZGRzICIoIiB0byBjYWxsYWJsZSBvYmplY3RzIHdoZW4gY29tcGxldGVkLgorCisuLgorCisuLiBicG86IDMxOTAKKy4uIGRhdGU6IDcwMjkKKy4uIG5vbmNlOiBWdERub3UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHlkb2Mgbm93IGhpZGVzIHRoZSBhdXRvbWF0aWMgbW9kdWxlIGF0dHJpYnV0ZSBfX3BhY2thZ2VfXyAodGhlIGhhbmRsaW5nIGlzCitub3cgdGhlIHNhbWUgYXMgdGhhdCBvZiBvdGhlciBzcGVjaWFsIGF0dHJpYnV0ZXMgbGlrZSBfX25hbWVfXykuCisKKy4uCisKKy4uIGJwbzogMjg4NQorLi4gZGF0ZTogNzAyOAorLi4gbm9uY2U6IHVpSEVWcgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgdXJsbGliLnVybG9wZW4oKSBmdW5jdGlvbiBoYXMgYmVlbiBkZXByZWNhdGVkIGZvciByZW1vdmFsIGluIFB5dGhvbiAzLjAKK2luIGZhdm9yIG9mIHVybGxpYjIudXJsb3BlbigpLgorCisuLgorCisuLiBicG86IDIxMTMKKy4uIGRhdGU6IDcwMjcKKy4uIG5vbmNlOiBiWVd5cnQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGVycm9yIGluIHN1YnByb2Nlc3MuUG9wZW4gaWYgdGhlIHNlbGVjdCBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCBieSBhCitzaWduYWwuCisKKy4uCisKKy4uIGJwbzogMzMwOQorLi4gZGF0ZTogNzAyNgorLi4gbm9uY2U6IFk3RFZSRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYnoyLkJaRmlsZSBpdGVyYXRvciB0byByZWxlYXNlIGl0cyBpbnRlcm5hbCBsb2NrIHByb3Blcmx5IHdoZW4gcmFpc2luZworYW4gZXhjZXB0aW9uIGR1ZSB0byB0aGUgYnoyZmlsZSBiZWluZyBjbG9zZWQuIFByZXZlbnRzIGEgZGVhZGxvY2suCisKKy4uCisKKy4uIGJwbzogMzA5NAorLi4gZGF0ZTogNzAyNQorLi4gbm9uY2U6IER1VXZrcgorLi4gc2VjdGlvbjogTGlicmFyeQorCitodHRwbGliLkhUVFBTQ29ubmVjdGlvbiBIb3N0OiBoZWFkZXJzIG5vIGxvbmdlciBpbmNsdWRlIHRoZSByZWR1bmRhbnQgIjo0NDMiCitwb3J0IG51bWJlciBkZXNpZ25hdGlvbiB3aGVuIHRoZSBjb25uZWN0aW9uIGlzIHVzaW5nIHRoZSBkZWZhdWx0IGh0dHBzIHBvcnQKKyg0NDMpLgorCisuLgorCisuLiBicG86IDg3NDkwMAorLi4gZGF0ZTogNzAyNAorLi4gbm9uY2U6IE80YTZxbworLi4gc2VjdGlvbjogTGlicmFyeQorCithZnRlciBhbiBvcy5mb3JrKCkgY2FsbCB0aGUgdGhyZWFkaW5nIG1vZHVsZSBzdGF0ZSBpcyBjbGVhbmVkIHVwIGluIHRoZQorY2hpbGQgcHJvY2VzcyB0byBwcmV2ZW50IGRlYWRsb2NrIGFuZCByZXBvcnQgcHJvcGVyIHRocmVhZCBjb3VudHMgaWYgdGhlIG5ldworcHJvY2VzcyB1c2VzIHRoZSB0aHJlYWRpbmcgbW9kdWxlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwMjMKKy4uIG5vbmNlOiBxbmtNSmIKKy4uIHNlY3Rpb246IFRlc3RzCisKK3Rlc3QudGVzdF9zdXBwb3J0LmNhdGNoX3dhcm5pbmcgbm93IGtlZXBzIHRyYWNrIG9mIGFsbCB3YXJuaW5ncyBpdCBzZWVzIGFuZAoraXMgbm93IGJldHRlciBkb2N1bWVudGVkLiBFeHBsaWNpdCB1bml0IHRlc3RzIGZvciB0aGlzIGNvbnRleHQgbWFuYWdlciBoYXZlCitiZWVuIGFkZGVkIHRvIHRlc3Rfd2FybmluZ3MuCisKKy4uCisKKy4uIGJwbzogMzIxNQorLi4gZGF0ZTogNzAyMgorLi4gbm9uY2U6IEpBNklVSQorLi4gc2VjdGlvbjogQnVpbGQKKworQnVpbGQgc3FsaXRlMyBhcyBzcWxpdGUzLmRsbCwgbm90IHNxbGl0ZTMucHlkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwMjEKKy4uIG5vbmNlOiBBMjV3YkMKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworRG9jdW1lbnQgdGhhdCByb2JvdHBhcnNlciBoYXMgYmVlbiByZW5hbWVkIHRvIHVybGxpYi5yb2JvdHBhcnNlciBpbiBQeXRob24KKzMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MDIwCisuLiBub25jZTogazI0S1pXCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0RvY3VtZW50IHRoYXQgdXJscGFyc2UgaGFzIGJlZW4gcmVuYW1lZCB0byB1cmxsaWIucGFyc2UgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MDE5CisuLiBub25jZTogd3RHS0I3CisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0RvY3VtZW50IHRoYXQgdXJsbGliMiBpcyBzcGxpdCBhY3Jvc3MgbXVsdGlwbGUgbW9kdWxlcyBhbmQgcmVuYW1lZCBpbiBQeXRob24KKzMuMC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MDE4CisuLiBub25jZToga1dmYVlTCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0RvY3VtZW50IHRoYXQgdXJsbGliIGlzIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBtb2R1bGVzIGFuZCByZW5hbWVkIGluIFB5dGhvbgorMy4wLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvMi42YjMucnN0IGIvTWlzYy9ORVdTLmQvMi42YjMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMjNkNmMKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC8yLjZiMy5yc3QKQEAgLTAsMCArMSw1MzEgQEAKKy4uIGJwbzogMTg3OAorLi4gZGF0ZTogNzExMQorLi4gbm9uY2U6IGV4Q21qaAorLi4gcmVsZWFzZSBkYXRlOiAyMC1BdWctMjAwOAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmVtb3ZlIFB5X1RQRkxBR1NfSEFWRV9WRVJTSU9OX1RBRyBmcm9tIFB5X1RQRkxBR1NfREVGQVVMVCB3aGVuIG5vdCBidWlsZGluZwordGhlIGNvcmUuICBUaGlzIG1lYW5zIDNyZCBwYXJ0eSBleHRlbnNpb25zIGRvIG5vdCBhdXRvbWF0aWNhbGx5IGJlbmVmaXQgZnJvbQordGhlIGNsYXNzIGF0dHJpYnV0ZSBjYWNoZTsgdGhleSB3aWxsIGhhdmUgdG8gZXhwbGljaXRseSBhZGQKK1B5X1RQRkxBR1NfSEFWRV9WRVJTSU9OX1RBRyB0byB0aGVpciB0cF9mbGFncyBmaWVsZCBpZiB0aGV5IGNhcmUuICBUaGlzIGlzIGEKK2JhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZlYXR1cmU7IGluIDMuMCwgYWxsIHR5cGVzIHdpbGwgdXNlIHRoZSBjYWNoZSBieQorZGVmYXVsdC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MTEwCisuLiBub25jZTogN2NySmdHCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitLZXl3b3JkIGFyZ3VtZW50cyBjYW4gbm93IGZvbGxvdyBzdGFycmVkIGFyZ3VtZW50cy4gKGBgZihhLCAqYXJncywKK2tleXdvcmQ9MjMpYGAgaXMgbm93IHZhbGlkIHN5bnRheC4pCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzEwOQorLi4gbm9uY2U6IE9memhDUAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworY3R5cGVzIGZ1bmN0aW9uIHBvaW50ZXJzIHRoYXQgYXJlIENPTSBtZXRob2RzIGhhdmUgYSBib29sZWFuIFRydWUgdmFsdWUKK2FnYWluLgorCisuLgorCisuLiBicG86IDMxMzkKKy4uIGRhdGU6IDcxMDgKKy4uIG5vbmNlOiBqNEZUOTUKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK01ha2UgYnVmZmVyLWludGVyZmFjZSB0aHJlYWQtc2FmZSB3cnQuIFB5QXJnX1BhcnNlVHVwbGUsIGJ5IGRlbnlpbmcgcyMgdG8KK3BhcnNlIG9iamVjdHMgdGhhdCBoYXZlIGEgcmVsZWFzZWJ1ZmZlciBwcm9jZWR1cmUsIGFuZCBpbnRyb2R1Y2luZyBzKi4KKworLi4KKworLi4gYnBvOiAzNTM3CisuLiBkYXRlOiA3MTA3CisuLiBub25jZTogSmQxUlJaCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYW4gYXNzZXJ0aW9uIGZhaWx1cmUgd2hlbiBhbiBlbXB0eSBidXQgcHJlc2l6ZWQgZGljdCBvYmplY3Qgd2FzIHN0b3JlZAoraW4gdGhlIGZyZWVsaXN0LgorCisuLgorCisuLiBicG86IDE0ODEyOTYKKy4uIGRhdGU6IDcxMDYKKy4uIG5vbmNlOiA5TVhLVGYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK01ha2UgbG9uZyhmbG9hdCgnbmFuJykpIGFuZCBpbnQoZmxvYXQoJ25hbicpKSByYWlzZSBWYWx1ZUVycm9yIGNvbnNpc3RlbnRseQorYWNyb3NzIHBsYXRmb3Jtcy4KKworLi4KKworLi4gYnBvOiAzNDc5CisuLiBkYXRlOiA3MTA1CisuLiBub25jZTogMng0cmtUCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitPbiBwbGF0Zm9ybXMgd2hlcmUgc2l6ZW9mKGludCkgaXMgc21hbGxlciB0aGFuIHNpemVvZihsb25nKSAoNjRiaXQgVW5peCwgZm9yCitleGFtcGxlKSwgdW5pY2hyKCkgd291bGQgdHJ1bmNhdGUgaXRzIGFyZ3VtZW50IGFuZCByZXR1cm4gdSdceDAwJyBmb3IKK3VuaWNocigyKiozMikuIE5vdyBpdCBwcm9wZXJseSByYWlzZXMgYW4gT3ZlcmZsb3dFcnJvci4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MTA0CisuLiBub25jZTogZHBpbzZoCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBcHBseSBzZWN1cml0eSBwYXRjaGVzIGZyb20gQXBwbGUuCisKKy4uCisKKy4uIGJwbzogMjU0MgorLi4gZGF0ZTogNzEwMworLi4gbm9uY2U6IE9HclBMaAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworTm93IHRoYXQgaXNzdWJjbGFzcygpIG1heSBjYWxsIGFyYml0cmFyeSBjb2RlLCBlbnN1cmUgdGhhdAorUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyByZXR1cm5zIDAgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIHRoZXJlLgorCisuLgorCisuLiBicG86IDE4MTkKKy4uIGRhdGU6IDcxMDIKKy4uIG5vbmNlOiBMenJEMzYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2Z1bmN0aW9uIGNhbGxzIHdpdGggc2V2ZXJhbCBuYW1lZCBwYXJhbWV0ZXJzIGFyZSBub3cgb24gYXZlcmFnZSAzNSUgZmFzdGVyCisoYXMgbWVhc3VyZWQgYnkgcHliZW5jaCkuCisKKy4uCisKKy4uIGJwbzogMjM3OAorLi4gZGF0ZTogNzEwMQorLi4gbm9uY2U6IGpuSk4yXworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQW4gdW5leHBlY3RlZCBVbmJvdW5kTG9jYWxFcnJvciBvciBOYW1lRXJyb3IgY291bGQgYXBwZWFyIHdoZW4gdGhlIHB5dGhvbgorZGVidWdnZXIgc3RlcHMgaW50byBhIGNsYXNzIHN0YXRlbWVudDogdGhlIGZyZWUgdmFyaWFibGVzIChsb2NhbCB2YXJpYWJsZXMKK2RlZmluZWQgaW4gYW4gb3V0ZXIgc2NvcGUpIHdvdWxkIGJlIGRlbGV0ZWQgZnJvbSB0aGUgb3V0ZXIgc2NvcGUuCisKKy4uCisKKy4uIGJwbzogMjYyMAorLi4gZGF0ZTogNzEwMAorLi4gbm9uY2U6IGc3TlJaWgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworT3ZlcmZsb3cgY2hlY2tpbmcgd2hlbiBhbGxvY2F0aW5nIG9yIHJlYWxsb2NhdGluZyBtZW1vcnkgd2FzIG5vdCBhbHdheXMKK2JlaW5nIGRvbmUgcHJvcGVybHkgaW4gc29tZSBweXRob24gdHlwZXMgYW5kIGV4dGVuc2lvbiBtb2R1bGVzLgorUHlNZW1fTUFMTE9DLCBQeU1lbV9SRUFMTE9DLCBQeU1lbV9ORVcgYW5kIFB5TWVtX1JFU0laRSBoYXZlIGFsbCBiZWVuCit1cGRhdGVkIHRvIHBlcmZvcm0gYmV0dGVyIGNoZWNrcyBhbmQgcGxhY2VzIGluIHRoZSBjb2RlIHRoYXQgd291bGQKK3ByZXZpb3VzbHkgbGVhayBtZW1vcnkgb24gdGhlIGVycm9yIHBhdGggd2hlbiBzdWNoIGFuIGFsbG9jYXRpb24gZmFpbGVkIGhhdmUKK2JlZW4gZml4ZWQuCisKKy4uCisKKy4uIGJwbzogMzYxMgorLi4gZGF0ZTogNzA5OQorLi4gbm9uY2U6IFJYM25GUworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBzb21lIG1pc3NpbmcgYmFzaWMgdHlwZXMgaW4gY3R5cGVzLndpbnR5cGVzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwOTgKKy4uIG5vbmNlOiA2YXJmYi0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIG1ldGhvZHMgYGBpc19pbl90dXBsZSgpYGAsIGBgaXNfdmFyYXJnKClgYCwgYW5kIGBgaXNfa2V5d29yZGFyZygpYGAgb2YKK3N5bXRhYmxlLlN5bWJvbCBoYXZlIGJlZW4gZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiAzLjAgYW5kIHRoZSBuZXh0CityZWxlYXNlLgorCisuLgorCisuLiBicG86IDIyMzQKKy4uIGRhdGU6IDcwOTcKKy4uIG5vbmNlOiBaWTdxQXAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlzdHV0aWxzIGZhaWxlZCBmb3Igc29tZSB2ZXJzaW9ucyBvZiB0aGUgY3lnd2luIGNvbXBpbGVyLiBUaGUgdmVyc2lvbgorcmVwb3J0ZWQgYnkgdGhlc2UgdG9vbHMgZG9lcyBub3QgbmVjZXNzYXJpbHkgZm9sbG93IHRoZSBweXRob24gdmVyc2lvbgorbnVtYmVyaW5nIHNjaGVtZSwgc28gdGhlIG1vZHVsZSBpcyBsZXNzIHN0cmljdCB3aGVuIHBhcnNpbmcgaXQuCisKKy4uCisKKy4uIGJwbzogMjIzNQorLi4gZGF0ZTogNzA5NgorLi4gbm9uY2U6IGxaNHVEZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBQeTNrIHdhcm5pbmdzIGZvciB0eXBlcyB3aGljaCB3aWxsIGJlY29tZSB1bmhhc2hhYmxlIHVuZGVyIHRoZQorc3RyaWN0ZXIgX19oYXNoX18gaW5oZXJpdGFuY2UgcnVsZXMgaW4gMy4wLiBTZXZlcmFsIHR5cGVzIHdoaWNoIGRpZCBub3QgbWVldAordGhlIHJ1bGVzIGZvciBoYXNoIGludmFyaWFudHMgYW5kIHdlcmUgYWxyZWFkeSB1bmhhc2hhYmxlIGluIDMuMCBoYXZlIG5vdworYmVlbiBleHBsaWNpdGx5IGZsYWdnZWQgYXMgdW5oYXNoYWJsZSBpbiAyLjYgYXMgd2VsbCAoY29sbGVjdGlvbnMuTWFwcGluZywKK2NvbGxlY3Rpb25zLlNldCwgdW5pdHRlc3QuVGVzdFN1aXRlLCB4bWwuZG9tLm1pbmlkb20uTmFtZWROb2RlTWFwLAorbnVtYmVycy5OdW1iZXIsIFVzZXJMaXN0LlVzZXJMaXN0KQorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwOTUKKy4uIG5vbmNlOiBuanYwWXYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXBkYXRlIF9fYWxsX18gZm9yIGNvb2tpZWxpYiwgY3N2LCBvcywgdXJsbGliMiwgYW5kIHdlYWtyZWYgdG8gaW5jbHVkZQordGhpbmdzIGltcG9ydGVkIGludG8gdGhlIG1vZHVsZSBidXQgZXhwb3NlZCBhcyBwYXJ0IG9mIHRoZSBtb2R1bGUncyBBUEkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzA5NAorLi4gbm9uY2U6IElPVUx4MworLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmUgYW4gdW5uZWVkZWQgaW1wb3J0IG9mIGFiYy5BQkNNZXRhIGZyb20gJ2luc3BlY3QnLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwOTMKKy4uIG5vbmNlOiB1aTFicGkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlIHVubmVlZGVkIGltcG9ydHMgb2YgJ3N5cycgYW5kICd3YXJuaW5ncycgZnJvbSAnaW8nLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwOTIKKy4uIG5vbmNlOiA1VWxIdGQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlIHVubmVlZGVkIGltcG9ydHMgb2YgJ3dhcm5pbmdzJyBmcm9tIHNoZWx2ZSwgZmlsZWNtcCwgYW5kCitkdW1teV90aHJlYWQuCisKKy4uCisKKy4uIGJwbzogMzU3NQorLi4gZGF0ZTogNzA5MQorLi4gbm9uY2U6IGYwQjQ0VgorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbmNyZW1lbnRhbCBkZWNvZGVyJ3MgZGVjb2RlIGZ1bmN0aW9uIG5vdyB0YWtlcyBieXRlYXJyYXkgYnkgdXNpbmcgJ3MqJworaW5zdGVhZCBvZiAndCMnLgorCisuLgorCisuLiBicG86IDIyMjIKKy4uIGRhdGU6IDcwOTAKKy4uIG5vbmNlOiA3NkxTLTcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgcmVmZXJlbmNlIGxlYWsgd2hlbiBvY2N1cnJlZCBvcy5yZW5hbWUoKSBmYWlscyB1bmljb2RlIGNvbnZlcnNpb24gb24KKzJuZCBwYXJhbWV0ZXIuICh3aW5kb3dzIG9ubHkpCisKKy4uCisKKy4uIGJwbzogMjQ2NAorLi4gZGF0ZTogNzA4OQorLi4gbm9uY2U6IEhtN2dCTgorLi4gc2VjdGlvbjogTGlicmFyeQorCit1cmxsaWIyIG5vdyBzdXBwb3J0cyBhIG1hbGZvcm1hdGlvbiBpbiB0aGUgVVJMIHJlY2VpdmVkIGluIGEgcmVkaXJlY3QuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzA4OAorLi4gbm9uY2U6IDEtOEdycAorLi4gc2VjdGlvbjogTGlicmFyeQorCitTaWxlbmNlIHRoZSBEZXByZWNhdGlvbldhcm5pbmcgcmFpc2VkIHdoZW4gaW1wb3J0aW5nIG1pbWV0b29scyBpbgorQmFzZUhUVFBTZXJ2ZXIsIGNnaSAoYW5kIHJmYzgyMiksIGh0dHBsaWIuCisKKy4uCisKKy4uIGJwbzogMjc3NgorLi4gZGF0ZTogNzA4NworLi4gbm9uY2U6IHBjZkRQMAorLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXhlZCBzbWFsbCBpc3N1ZSB3aGVuIGhhbmRsaW5nIGEgVVJMIHdpdGggZG91YmxlIHNsYXNoIGFmdGVyIGEgMzAyIHJlc3BvbnNlCitpbiB0aGUgY2FzZSBvZiBub3QgZ29pbmcgdGhyb3VnaCBhIHByb3h5LgorCisuLgorCisuLiBicG86IDI2NzYKKy4uIGRhdGU6IDcwODYKKy4uIG5vbmNlOiBtdXoxQmgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaW4gdGhlIGVtYWlsIHBhY2thZ2UsIGNvbnRlbnQtdHlwZSBwYXJzaW5nIHdhcyBoYW5naW5nIG9uIHBhdGhvbG9naWNhbCBpbnB1dAorYmVjYXVzZSBvZiBxdWFkcmF0aWMgb3IgZXhwb25lbnRpYWwgYmVoYXZpb3VyIG9mIGEgcmVndWxhciBleHByZXNzaW9uLgorCisuLgorCisuLiBicG86IDM0NzYKKy4uIGRhdGU6IDcwODUKKy4uIG5vbmNlOiBHZHA1SGcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYmluYXJ5IGJ1ZmZlcmVkIHJlYWRpbmcgdGhyb3VnaCB0aGUgbmV3ICJpbyIgbGlicmFyeSBpcyBub3cgdGhyZWFkLXNhZmUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzA4NAorLi4gbm9uY2U6IDRqYW8xVgorLi4gc2VjdGlvbjogTGlicmFyeQorCitTaWxlbmNlIHRoZSBEZXByZWNhdGlvbldhcm5pbmcgb2YgcmZjODIyIHdoZW4gaXQgaXMgaW1wb3J0ZWQgYnkgbWltZXRvb2xzCitzaW5jZSBtaW1ldG9vbHMgaXRzZWxmIGlzIGRlcHJlY2F0ZWQuIEJlY2F1c2UgbW9kdWxlcyBhcmUgY2FjaGVkLCBhbGwKK3N1YnNlcXVlbnQgaW1wb3J0cyBvZiByZmM4MjIgd2lsbCBub3QgcmFpc2UgYSB2aXNpYmxlIERlcHJlY2F0aW9uV2FybmluZy4KKworLi4KKworLi4gYnBvOiAzMTM0CisuLiBkYXRlOiA3MDgzCisuLiBub25jZTogc0dQSGVvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3NodXRpbCByZWZlcmVuY2VkIHVuZGVmaW5lZCBXaW5kb3dzRXJyb3Igc3ltYm9sLgorCisuLgorCisuLiBicG86IDEzNDI4MTEKKy4uIGRhdGU6IDcwODIKKy4uIG5vbmNlOiBNZjVUTHAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGxlYWsgaW4gVGtpbnRlci5NZW51LmRlbGV0ZS4gQ29tbWFuZHMgYXNzb2NpYXRlZCB0byBtZW51IGVudHJpZXMgd2VyZQorbm90IGRlbGV0ZWQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzA4MQorLi4gbm9uY2U6IFhJQzVMWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitDb3BpZWQgdGhlIGltcGxlbWVudGF0aW9uIG9mIHJlZHVjZSgpIHRvIF9mdW5jdG9vbHMucmVkdWNlKCkgdG8gaGF2ZSBhCit2ZXJzaW9uIHRoYXQgZGlkIG5vdCByYWlzZSBhIERlcHJlY2F0aW9uV2FybmluZyB1bmRlciAtMy4KKworLi4KKworLi4gYnBvOiAzMjA1CisuLiBkYXRlOiA3MDgwCisuLiBub25jZTogUmNyRDJHCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1doZW4gaXRlcmF0aW5nIG92ZXIgYSBCWjJGaWxlIGZhaWxzIGFsbG9jYXRpbmcgbWVtb3J5LCByYWlzZSBhIE1lbW9yeUVycm9yCityYXRoZXIgdGhhbiBzaWxlbnRseSBzdG9wIHRoZSBpdGVyYXRpb24uCisKKy4uCisKKy4uIGJwbzogMzQ4NworLi4gZGF0ZTogNzA3OQorLi4gbm9uY2U6IExvTDBYcAorLi4gc2VjdGlvbjogTGlicmFyeQorCitzcmUgImJ5dGVjb2RlIiB2YWxpZGF0b3IuICBQYXNzaW5nIGludmFsaWQgInJlLWJ5dGVjb2RlIiB0byBfc3JlLmNvbXBpbGUoKQord2lsbCBub3cgYmUgcmVqZWN0ZWQuICBUaGlzIHNob3VsZCBub3QgYWZmZWN0IGFueWJvZHkgc2luY2UgdGhlIHJlLmNvbXBpbGUoKQorZnVuY3Rpb24gbmV2ZXIgZ2VuZXJhdGVzIGludmFsaWQgcmUtYnl0ZWNvZGUuCisKKy4uCisKKy4uIGJwbzogMzQzNgorLi4gZGF0ZTogNzA3OAorLi4gbm9uY2U6IEgxMEd6NQorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIGNzdi5EaWN0UmVhZGVyJ3MgZmllbGRuYW1lcyBhdHRyaWJ1dGUgYSBwcm9wZXJ0eSBzbyB0aGF0IHVwb24gZmlyc3QKK2FjY2VzcyBpdCBjYW4gYmUgYXV0b21hdGljYWxseSBpbml0aWFsaXplZCBmcm9tIHRoZSBjc3YgZmlsZSBpZiBpdCB3YXNuJ3QKK2luaXRpYWxpemVkIGR1cmluZyBpbnN0YW50aWF0aW9uLgorCisuLgorCisuLiBicG86IDIzMzgKKy4uIGRhdGU6IDcwNzcKKy4uIG5vbmNlOiBqQjk3djgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ3JlYXRlIGltcC5yZWxvYWQoKSB0byBoZWxwIHdpdGggdHJhbnNpdGlvbmluZyB0byBQeXRob24gMy4wIGFzIHRoZSByZWxvYWQoKQorYnVpbHQtaW4gaGFzIGJlZW4gcmVtb3ZlZC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MDc2CisuLiBub25jZTogWUFtWlctCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NoYW5nZWQgY29kZSBpbiB0aGUgZm9sbG93aW5nIG1vZHVsZXMvcGFja2FnZXMgdG8gcmVtb3ZlIHdhcm5pbmdzIHJhaXNlZAord2hpbGUgcnVubmluZyB1bmRlciB0aGUgYGAtM2BgIGZsYWc6IGFpZmMsIGFzeW5jaGF0LCBhc3luY29yZSwgYmRiLCBic2RkYiwKK0NvbmZpZ1BhcnNlciwgY29va2llbGliLCBjc3YsIGRpZmZsaWIsIGRpc3R1dGlscywgRG9jWE1MUlBDU2VydmVyLCBlbWFpbCwKK2ZpbGVjbXAsIGZpbGVpbnB1dCwgaW5zcGVjdCwgbG9nZ2luZywgbW9kdWxlZmluZGVyLCBwZGIsIHBpY2tsZSwgcHJvZmlsZSwKK3BzdGF0cywgcHlkb2MsIHJlLCBybGNvbXBsZXRlciwgU2ltcGxlWE1MUlBDU2VydmVyLCBzaGVsdmUsIHNvY2tldCwKK3N1YnByb2Nlc3MsIHNxbGl0ZTMsIHRhcmZpbGUsIFRraW50ZXIsIHRlc3QudGVzdF9zdXBwb3J0LCB0ZXh0d3JhcCwKK3RocmVhZGluZywgdG9rZW5pemUsIHRyYWNlYmFjaywgdXJscGFyc2UsIHdzZ2lyZWYsIHhtbCwgeG1scnBjbGliLgorCisuLgorCisuLiBicG86IDMwMzkKKy4uIGRhdGU6IDcwNzUKKy4uIG5vbmNlOiA2MTA2bHAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRhcmZpbGUuVGFyRmlsZUNvbXBhdC53cml0ZXN0cigpIHdoaWNoIGFsd2F5cyByYWlzZWQgYW4gQXR0cmlidXRlRXJyb3IuCisKKy4uCisKKy4uIGJwbzogMjUyMworLi4gZGF0ZTogNzA3NAorLi4gbm9uY2U6IEY5b3NNNQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcXVhZHJhdGljIGJlaGF2aW91ciB3aGVuIHJlYWQoKWluZyBhIGJpbmFyeSBmaWxlIHdpdGhvdXQgYXNraW5nIGZvciBhCitzcGVjaWZpYyBsZW5ndGguIFRoaXMgcHJvYmxlbSBvbmx5IGFmZmVjdGVkIGZpbGVzIG9wZW5lZCB1c2luZyB0aGUgbmV3ICJpbyIKK21vZHVsZSwgbm90IHRoZSBidWlsdC1pbiBvcGVuKCkgZnVuY3Rpb24uCisKKy4uCisKKy4uIGJwbzogMzQ0OQorLi4gZGF0ZTogNzA3MworLi4gbm9uY2U6IEhJSlJKUworLi4gc2VjdGlvbjogTGlicmFyeQorCitVcGRhdGUgZGVjaW1hbCBtb2R1bGUgdG8gdXNlIG1vc3QgcmVjZW50IHNwZWNpZmljYXRpb24gKHYuIDEuNjgpIGFuZCB0ZXN0cworKHYuIDIuNTgpIGZyb20gSUJNLgorCisuLgorCisuLiBicG86IDM0MzcKKy4uIGRhdGU6IDcwNzIKKy4uIG5vbmNlOiBtRlMwTUwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQnVnIGZpeCBpbiByb2JvdHBhcnNlciBwYXJzaW5nIG9mIEFsbG93OiBsaW5lcy4KKworLi4KKworLi4gYnBvOiAxNTkyCisuLiBkYXRlOiA3MDcxCisuLiBub25jZTogenExU09JCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ltcHJvdmUgZXJyb3IgcmVwb3J0aW5nIHdoZW4gb3BlcmF0aW9ucyBhcmUgYXR0ZW1wdGVkIG9uIGEgY2xvc2VkIHNoZWxmLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwNzAKKy4uIG5vbmNlOiBxNkFJX0MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRGVwcmVjYXRlIHRoZSAiYXN0IiBwYXJzZXIgZnVuY3Rpb24gYWxpYXNlcy4KKworLi4KKworLi4gYnBvOiAzMTIwCisuLiBkYXRlOiA3MDY5CisuLiBub25jZTogeC1rQUZqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK09uIDY0LWJpdCBXaW5kb3dzIHRoZSBzdWJwcm9jZXNzIG1vZHVsZSB3YXMgdHJ1bmNhdGluZyBoYW5kbGVzLgorCisuLgorCisuLiBicG86IDMzMDMKKy4uIGRhdGU6IDcwNjgKKy4uIG5vbmNlOiBNR2o4elQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgY3Jhc2ggaW4gbG9jYWxlLnN0cmNvbGwoKSB3aGVuIGNhbGxpbmcgaXQgd2l0aCBpbnZhbGlkIGFyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiAzMzAyCisuLiBkYXRlOiA3MDY3CisuLiBub25jZTogcW5aNUljCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzZXZlcmFsIGNyYXNoZXMgd2hlbiBjYWxsaW5nIGxvY2FsZSdzIGdldHRleHQgZnVuY3Rpb25zIHdpdGggTm9uZQorYXJndW1lbnRzLgorCisuLgorCisuLiBicG86IDMzODkKKy4uIGRhdGU6IDcwNjYKKy4uIG5vbmNlOiBEaGYzRUEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWxsb3cgcmVzb2x2aW5nIGRvdHRlZCBuYW1lcyBmb3IgaGFuZGxlcnMgaW4gbG9nZ2luZyBjb25maWd1cmF0aW9uIGZpbGVzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwNjUKKy4uIG5vbmNlOiB3dFlQNWkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRGVwcmVjYXRlIHRoZSBzdW5hdWRpbyBtb2R1bGUgZm9yIHJlbW92YWwgaW4gUHl0aG9uIDMuMC4KKworLi4KKworLi4gYnBvOiAzMzk0CisuLiBkYXRlOiA3MDY0CisuLiBub25jZTogUERkYXBXCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3ppcGZpbGUud3JpdGVzdHIgc2V0cyBleHRlcm5hbCBhdHRyaWJ1dGVzIHdoZW4gcGFzc2VkIGEgZmlsZSBuYW1lIHJhdGhlcgordGhhbiBhIFppcEluZm8gaW5zdGFuY2UsIHNvIGZpbGVzIGFyZSBleHRyYWN0ZWQgd2l0aCBtb2RlIDA2MDAgcmF0aGVyIHRoYW4KKzAwMCB1bmRlciBVbml4LgorCisuLgorCisuLiBicG86IDE4NTcKKy4uIGRhdGU6IDcwNjMKKy4uIG5vbmNlOiBWTHU1X2gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc3VicHJvY2Vzcy5Qb3Blbi5wb2xsIGdhaW5lZCBhbiBhZGRpdGlvbmFsIF9kZWFkc3RhdGUga2V5d29yZCBhcmd1bWVudCBpbgorcHl0aG9uIDIuNSwgdGhpcyBicm9rZSBjb2RlIHRoYXQgc3ViY2xhc3NlZCBQb3BlbiB0byBpbmNsdWRlIGl0cyBvd24gcG9sbAorbWV0aG9kLiAgRml4ZWQgbXkgbW92aW5nIF9kZWFkc3RhdGUgdG8gYW4gX2ludGVybmFsX3BvbGwgbWV0aG9kLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcwNjIKKy4uIG5vbmNlOiB5X2hFNHoKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0dlbmVyYXRlIHRoZSBQYXR0ZXJuR3JhbW1hciBwaWNrbGUgZHVyaW5nICJtYWtlIGluc3RhbGwiLgorCisuLgorCisuLiBicG86IDIyMzUKKy4uIGRhdGU6IDcwNjEKKy4uIG5vbmNlOiBCTXVuUVYKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKwordGhlIEMgQVBJIGZ1bmN0aW9uIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZCBhbmQgaXRzIGludGVyYWN0aW9uIHdpdGggdGhlCit0cF9oYXNoIHNsb3QgKGFkZGVkIGluIDIuNmIyKSBhcmUgbm93IGRvY3VtZW50ZWQKKworLi4KKworLi4gYnBvOiA2NDM4NDEKKy4uIGRhdGU6IDcwNjAKKy4uIG5vbmNlOiBEYzc3RWMKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworVGhlIGxhbmd1YWdlIHJlZmVyZW5jZSBub3cgcHJvdmlkZXMgbW9yZSBkZXRhaWxlZCBjb3ZlcmFnZSBvZiB0aGUgbG9va3VwCitwcm9jZXNzIGZvciBzcGVjaWFsIG1ldGhvZHMuIFRoZSBkaXNjbGFpbWVycyByZWdhcmRpbmcgbGFjayBvZiBjb3ZlcmFnZSBvZgorbmV3LXN0eWxlIGNsYXNzZXMgaGF2ZSBhbHNvIGJlZW4gcmVtb3ZlZCwgc2luY2UgdGhlIGNvdmVyYWdlIGlzIG5vdyBmYWlybHkKK3JlYXNvbmFibGUuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjZyYzEucnN0IGIvTWlzYy9ORVdTLmQvMi42cmMxLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTU1OTgwCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi42cmMxLnJzdApAQCAtMCwwICsxLDUxNyBAQAorLi4gYnBvOiAzNjQyCisuLiBkYXRlOiA3MTY0CisuLiBub25jZTogVHJhUXc5CisuLiByZWxlYXNlIGRhdGU6IDEyLVNlcC0yMDA4CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitTdXBwcmVzcyB3YXJuaW5nIGluIG9ibWFsbG9jIHdoZW4gc2l6ZV90IGlzIGxhcmdlciB0aGFuIHVpbnQuCisKKy4uCisKKy4uIGJwbzogMzc0MworLi4gZGF0ZTogNzE2MworLi4gbm9uY2U6IF9BVVlZSQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworSW4gYSBmZXcgcGxhY2VzLCBQWV9GT1JNQVRfU0laRV9UIHdhcyBpbmNvcnJlY3RseSB1c2VkIHdpdGgKK1B5U3RyaW5nX0Zyb21Gb3JtYXQgb3IgUHlFcnJfRm9ybWF0IHRvIGRpc3BsYXkgc2l6ZV90IHZhbHVlcy4gVGhlIG1hY3JvCitQWV9GT1JNQVRfU0laRV9UIGlzIGRlc2lnbmVkIHRvIHNlbGVjdCB0aGUgY29ycmVjdCBmb3JtYXQgZm9yIHRoZSBPUworYGBwcmludGZgYCBmdW5jdGlvbiwgd2hlcmVhcyBQeVN0cmluZ19Gcm9tRm9ybWF0IGhhcyBhbiBpbmRlcGVuZGVudAoraW1wbGVtZW50YXRpb24gYW5kIHVzZXMgIiV6ZCIgb24gYWxsIHBsYXRmb3JtcyBmb3Igc2l6ZV90IHZhbHVlcy4gVGhpcyBtYWtlcworYSBkaWZmZXJlbmNlIG9uIHdpbjY0LCB3aGVyZSBgYHByaW50ZmBgIG5lZWRzICIlSWQiIHRvIGRpc3BsYXkgNjRiaXQgdmFsdWVzLgorCisuLgorCisuLiBicG86IDM2MzQKKy4uIGRhdGU6IDcxNjIKKy4uIG5vbmNlOiBxMXp6VFYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK193ZWFrcmVmLnJlZihFeGNlcHRpb24pLl9faW5pdF9fKCkgZ2F2ZSBpbnZhbGlkIHJldHVybiB2YWx1ZSBvbiBlcnJvci4KKworLi4KKworLi4gYnBvOiAzNzc3CisuLiBkYXRlOiA3MTYxCisuLiBub25jZTogTmt2RTlLCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitsb25nKCkgYXBwbGllZCB0byBhIGZsb2F0IG9iamVjdCBub3cgYWx3YXlzIHJldHVybiBhIGxvbmcgb2JqZWN0OyBwcmV2aW91c2x5CithbiBpbnQgd291bGQgYmUgcmV0dXJuZWQgZm9yIHNtYWxsIHZhbHVlcy4gdGhlIF9fbG9uZ19fIG1ldGhvZCBpcyBhbGxvd2VkIHRvCityZXR1cm4gZWl0aGVyIGFuIGludCBvciBhIGxvbmcsIGJ1dCB0aGUgYmVoYXZpb3VyIG9mIGZsb2F0IG9iamVjdHMgc2hvdWxkCitub3QgY2hhbmdlIHRvIHJlc3BlY3QgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKworLi4KKworLi4gYnBvOiAzNzUxCisuLiBkYXRlOiA3MTYwCisuLiBub25jZTogYWZXc0YzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitzdHIucnBhcnRpdGlvbiB3b3VsZCBwZXJmb3JtIGEgbGVmdC1wYXJ0aXRpb24gd2hlbiBjYWxsZWQgd2l0aCBhIHVuaWNvZGUKK2FyZ3VtZW50LgorCisuLgorCisuLiBicG86IDM2ODMKKy4uIGRhdGU6IDcxNTkKKy4uIG5vbmNlOiBDYnlXVEgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBjb21waWxhdGlvbiB3aGVuIC0td2l0aG91dC10aHJlYWRzIGlzIGdpdmVuLgorCisuLgorCisuLiBicG86IDM2NjgKKy4uIGRhdGU6IDcxNTgKKy4uIG5vbmNlOiB5NXBGc28KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBhIG1lbW9yeSBsZWFrIHdpdGggdGhlICJzKiIgYXJndW1lbnQgcGFyc2VyIGluIFB5QXJnX1BhcnNlVHVwbGUgYW5kCitmcmllbmRzLCB3aGljaCBvY2N1cnJlZCB3aGVuIHRoZSBhcmd1bWVudCBmb3IgInMqIiB3YXMgY29ycmVjdGx5IHBhcnNlZCBidXQKK3BhcnNpbmcgb2Ygc3Vic2VxdWVudCBhcmd1bWVudHMgZmFpbGVkLgorCisuLgorCisuLiBicG86IDI1MzQKKy4uIGRhdGU6IDcxNTcKKy4uIG5vbmNlOiBaekpnT1IKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3NwZWVkIHVwIGlzaW5zdGFuY2UoKSBhbmQgaXNzdWJjbGFzcygpIGJ5IDUwLTcwJSwgc28gYXMgdG8gbWF0Y2ggUHl0aG9uIDIuNQorc3BlZWQgZGVzcGl0ZSB0aGUgX19pbnN0YW5jZWNoZWNrX18gLyBfX3N1YmNsYXNzY2hlY2tfXyBtZWNoYW5pc20uIEluIHRoZQorcHJvY2VzcywgZml4IGEgYnVnIHdoZXJlIGlzaW5zdGFuY2UoKSBhbmQgaXNzdWJjbGFzcygpLCB3aGVuIGdpdmVuIGEgdHVwbGUKK29mIGNsYXNzZXMgYXMgc2Vjb25kIGFyZ3VtZW50LCB3ZXJlIGxvb2tpbmcgdXAgX19pbnN0YW5jZWNoZWNrX18gLworX19zdWJjbGFzc2NoZWNrX18gb24gdGhlIHR1cGxlIHJhdGhlciB0aGFuIG9uIGVhY2ggdHlwZSBvYmplY3QuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzE1NgorLi4gbm9uY2U6IElPaEVZRworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGNyYXNoZXMgb24gbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZSBmb3VuZCB3aXRoIGZhaWxtYWxsb2MuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzE1NQorLi4gbm9uY2U6IDdmVXRuVQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IG1lbW9yeSBsZWFrcyBmb3VuZCB3aXRoIHZhbGdyaW5kIGFuZCB1cGRhdGUgc3VwcHJlc3Npb25zIGZpbGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzE1NAorLi4gbm9uY2U6IEMyaUtYXworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGNvbXBpbGVyIHdhcm5pbmdzIGluIG9wdCBtb2RlIHdoaWNoIHdvdWxkIGxlYWQgdG8gaW52YWxpZCBtZW1vcnkgcmVhZHMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzE1MworLi4gbm9uY2U6IEY4cUlBRworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHByb2JsZW0gdXNpbmcgd3JvbmcgbmFtZSBpbiBkZWNpbWFsIG1vZHVsZSByZXBvcnRlZCBieSBweWNoZWNrZXIuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzE1MgorLi4gbm9uY2U6IDlHNy03OQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU2lsZW5jZWQgYW5vdGhlciBjb21waWxlciB3YXJuaW5nIGFib3V0IGEgdXNlZCBidXQgbm90IGRlZmluZWQgZnVuY3Rpb24KKydzdHJpbmdsaWJfY29udGFpbnNfb2JqJy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MTUxCisuLiBub25jZTogY0w1Rk5ICisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGRlZCB3YXJuaW5ncyBvbiB0aGUgdXNlIG9mIGBgX19nZXRzbGljZV9fYGAsIGBgX19zZXRzbGljZV9fYGAsIG9yCitgYF9fZGVsc2xpY2VfX2BgLgorCisuLgorCisuLiBicG86IDM2NzgKKy4uIGRhdGU6IDcxNTAKKy4uIG5vbmNlOiB0U1NlYkgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0NvcnJlY3RseSBwYXNzIExERkxBR1MgYW5kIExETEFTVCB0byB0aGUgbGlua2VyIG9uIHNoYXJlZCBsaWJyYXJ5IHRhcmdldHMgaW4KK3RoZSBNYWtlZmlsZS4KKworLi4KKworLi4gYnBvOiAxMjA0CisuLiBkYXRlOiA3MTQ5CisuLiBub25jZTogOUl1SXA0CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgdGVzdHMgZm9yIGFkZGl0aW9uYWwgbGlicmFyaWVzIHRoYXQgbWF5IGJlIHJlcXVpcmVkCit3aGVuIGxpbmtpbmcgYWdhaW5zdCByZWFkbGluZS4gIFRoaXMgZml4ZXMgaXNzdWVzIHdpdGggeDg2XzY0IGJ1aWxkcyBvbiBzb21lCitwbGF0Zm9ybXMgKGEgZmV3IExpbnV4IGZsYXZvcnMgYW5kIE9wZW5CU0QpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcxNDgKKy4uIG5vbmNlOiBBbW8tYVIKKy4uIHNlY3Rpb246IEMgQVBJCisKK0FsaWFzZWQgUHlPYmplY3RfQnl0ZXMgdG8gUHlPYmplY3RfU3RyLgorCisuLgorCisuLiBicG86IDM2NDAKKy4uIGRhdGU6IDcxNDcKKy4uIG5vbmNlOiB3WnpiYWUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUGlja2xpbmcgYSBsaXN0IG9yIGEgZGljdCB1c2VzIGxlc3MgbG9jYWwgdmFyaWFibGVzLCB0byByZWR1Y2Ugc3RhY2sgdXNhZ2UKK2luIHRoZSBjYXNlIG9mIGRlZXBseSBuZXN0ZWQgb2JqZWN0cy4KKworLi4KKworLi4gYnBvOiAzNjI5CisuLiBkYXRlOiA3MTQ2CisuLiBub25jZTogMnE2SzJjCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzcmUgImJ5dGVjb2RlIiB2YWxpZGF0b3IgZm9yIGFuIGVuZCBjYXNlLgorCisuLgorCisuLiBicG86IDM4MTEKKy4uIGRhdGU6IDcxNDUKKy4uIG5vbmNlOiAxcWdROWMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIFVuaWNvZGUgZGF0YWJhc2Ugd2FzIHVwZGF0ZWQgdG8gNS4xLgorCisuLgorCisuLiBicG86IDM3ODEKKy4uIGRhdGU6IDcxNDQKKy4uIG5vbmNlOiBIWVc1T1UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRnVydGhlciB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpIGNsZWFudXAgdG8gcHJldmVudCBzaWxlbnQgbWlzYmVoYXZpb3VyCit3aGVuIGEgc2luZ2xlIGluc3RhbmNlIGlzIG5lc3RlZCBpbiBtdWx0aXBsZSB3aXRoIHN0YXRlbWVudHMsIG9yIHdoZW4gdGhlCittZXRob2RzIGFyZSBpbnZva2VkIGluIHRoZSB3cm9uZyBvcmRlci4KKworLi4KKworLi4gYnBvOiAzODA5CisuLiBkYXRlOiA3MTQzCisuLiBub25jZTogMkEtYXFQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHNwdXJpb3VzICd0ZXN0LmJsYWgnIGZpbGUgbGVmdCBiZWhpbmQgYnkgdGVzdF9sb2dnaW5nLgorCisuLgorCisuLiBicG86IDM3ODEKKy4uIGRhdGU6IDcxNDIKKy4uIG5vbmNlOiBqcGtuMEkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ2xlYW4gdXAgdGhlIEFQSSBmb3Igd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKSBieSBoYXZpbmcgaXQgcmV0dXJuIGEgbGlzdCBvcgorTm9uZSByYXRoZXIgdGhhbiBhIGN1c3RvbSBvYmplY3QuCisKKy4uCisKKy4uIGJwbzogMTYzODAzMworLi4gZGF0ZTogNzE0MQorLi4gbm9uY2U6IGtUMlVWSQorLi4gc2VjdGlvbjogTGlicmFyeQorCitDb29raWUuTW9yc2VsIGdhaW5lZCB0aGUgaHR0cG9ubHkgYXR0cmlidXRlLgorCisuLgorCisuLiBicG86IDM1MzUKKy4uIGRhdGU6IDcxNDAKKy4uIG5vbmNlOiBkeFJWeEUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworemlwZmlsZSBjb3VsZG4ndCByZWFkIHNvbWUgemlwIGZpbGVzIGxhcmdlciB0aGFuIDJHQi4KKworLi4KKworLi4gYnBvOiAzNzc2CisuLiBkYXRlOiA3MTM5CisuLiBub25jZTogQ3Q3cjU1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0RlcHJlY2F0ZSB0aGUgYnNkZGIgcGFja2FnZSBmb3IgcmVtb3ZhbCBpbiAzLjAuCisKKy4uCisKKy4uIGJwbzogMzc2MgorLi4gZGF0ZTogNzEzOAorLi4gbm9uY2U6IFIzdDdZYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitwbGF0Zm9ybS5hcmNoaXRlY3R1cmUoKSBmYWlscyBpZiBweXRob24gaXMgbGFuY2hlZCB2aWEgaXRzIHN5bWJvbGljIGxpbmsuCisKKy4uCisKKy4uIGJwbzogMzc3MgorLi4gZGF0ZTogNzEzNworLi4gbm9uY2U6IDlSVWRvRQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCByZWdyZXNzaW9uIHByb2JsZW0gaW4gU3RyZWFtSGFuZGxlci5lbWl0KCkuCisKKy4uCisKKy4uIGJwbzogNjAwMzYyCisuLiBkYXRlOiA3MTM2CisuLiBub25jZTogYmItR3BrCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbG9jYXRlZCBwYXJzZV9xcygpIGFuZCBwYXJzZV9xc2woKSwgZnJvbSB0aGUgY2dpIG1vZHVsZSB0byB0aGUgdXJscGFyc2UKK29uZS4gIEFkZGVkIGEgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBpbiB0aGUgb2xkIG1vZHVsZSwgaXQgd2lsbCBiZQorZGVwcmVjYXRlZCBpbiB0aGUgZnV0dXJlLgorCisuLgorCisuLiBicG86IDI1NjIKKy4uIGRhdGU6IDcxMzUKKy4uIG5vbmNlOiBndkJzWDQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGRpc3R1dGlscyBQS0ctSU5GTyB3cml0aW5nIGxvZ2ljIHRvIGFsbG93IGhhdmluZyBub24tYXNjaWkgY2hhcmFjdGVycworYW5kIFVuaWNvZGUgaW4gc2V0dXAucHkgbWV0YS1kYXRhLgorCisuLgorCisuLiBicG86IDM3MjYKKy4uIGRhdGU6IDcxMzQKKy4uIG5vbmNlOiBvTnkzdlIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWxsb3cgc3BhY2VzIGluIHNlcGFyYXRvcnMgaW4gbG9nZ2luZyBjb25maWd1cmF0aW9uIGZpbGVzLgorCisuLgorCisuLiBicG86IDM3MTkKKy4uIGRhdGU6IDcxMzMKKy4uIG5vbmNlOiB2dF83R1gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcGxhdGZvcm0uYXJjaGl0ZWN0dXJlKCkgZmFpbHMgaWYgdGhlcmUgYXJlIHNwYWNlcyBpbiB0aGUgcGF0aCB0byB0aGUgUHl0aG9uCitiaW5hcnkuCisKKy4uCisKKy4uIGJwbzogMzYwMgorLi4gZGF0ZTogNzEzMgorLi4gbm9uY2U6IFNGTm1GNworLi4gc2VjdGlvbjogTGlicmFyeQorCitNb3ZlZCB0ZXN0LnRlc3Rfc3VwcG9ydC5jYXRjaF93YXJuaW5nKCkgdG8gd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKSBhbG9uZword2l0aCBzb21lIEFQSSBjbGVhbnVwLiBFeHBhbmRpbmcgdGhlIHRlc3RzIGZvciBjYXRjaF93YXJuaW5ncygpIGFsc28gbGVkIHRvCithbiBpbXByb3ZlbWVudCBpbiB0aGUgcmFpc2luZyBvZiBhIERlcHJlY2F0aW9uV2FybmluZyByZWxhdGVkIHRvCit3YXJuaW5ncy53YXJuX2V4cGxpY2l0KCkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzEzMQorLi4gbm9uY2U6IEZ4aS1YdgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZGVwcmVjYXRpb24gd2FybmluZ3MgZm9yIHRoZSBvbGQgY2FtZWxDYXNlIHRocmVhZGluZyBBUEkgd2VyZSByZW1vdmVkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcxMzAKKy4uIG5vbmNlOiBfV21qODgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbG9nZ2luZzogZml4ZWQgbGFjayBvZiB1c2Ugb2YgZW5jb2RpbmcgYXR0cmlidXRlIHNwZWNpZmllZCBvbiBhIHN0cmVhbS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MTI5CisuLiBub25jZTogeU9OLUNYCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NpbGVuY2VkIGEgdHJpdmlhbCBjb21waWxlciB3YXJuaW5nIGluIHRoZSBzcWxpdGUgbW9kdWxlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcxMjgKKy4uIG5vbmNlOiBVZEZGb3AKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgdHdvIGZvcm1hdCBzdHJpbmdzIGluIHRoZSBfY29sbGVjdGlvbnMgbW9kdWxlLgorCisuLgorCisuLiBicG86IDM3MDMKKy4uIGRhdGU6IDcxMjcKKy4uIG5vbmNlOiBKVldtaTQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworX2ZpbGVpby5GaWxlSU8gZ2F2ZSB1bmhlbHBmdWwgZXJyb3IgbWVzc2FnZSB3aGVuIHRyeWluZyB0byBvcGVuIGEgZGlyZWN0b3J5LgorCisuLgorCisuLiBicG86IDM3MDgKKy4uIGRhdGU6IDcxMjYKKy4uIG5vbmNlOiBkYmhyNUwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworb3MudXJhbmRvbSBubyBsb25nZXIgZ29lcyBpbnRvIGFuIGluZmluaXRlIGxvb3Agd2hlbiBwYXNzZWQgYSBub24taW50ZWdlcgorZmxvYXRpbmcgcG9pbnQgbnVtYmVyLgorCisuLgorCisuLiBicG86IDMxMTAKKy4uIGRhdGU6IDcxMjUKKy4uIG5vbmNlOiBUWE5qTjcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbXVsdGlwcm9jZXNzaW5nIGZhaWxzIHRvIGNvbXBpZWwgb24gc29sYXJpcyAxMCBkdWUgdG8gbWlzc2luZyBTRU1fVkFMVUVfTUFYLgorCisuLgorCisuLiBicG86IDQzMDEKKy4uIGRhdGU6IDcxMjQKKy4uIG5vbmNlOiBUb19FcjEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUGF0Y2ggdGhlIGxvZ2dpbmcgbW9kdWxlIHRvIGFkZCBwcm9jZXNzTmFtZSBzdXBwb3J0LCByZW1vdmUKK19jaGVja19sb2dnZXJfY2xhc3MgZnJvbSBtdWx0aXByb2Nlc3NpbmcuCisKKy4uCisKKy4uIGJwbzogMjk3NQorLi4gZGF0ZTogNzEyMworLi4gbm9uY2U6IDNuVFZwTgorLi4gc2VjdGlvbjogTGlicmFyeQorCitXaGVuIGNvbXBpbGluZyBzZXZlcmFsIGV4dGVuc2lvbiBtb2R1bGVzIHdpdGggVmlzdWFsIFN0dWRpbyAyMDA4IGZyb20gdGhlCitzYW1lIHB5dGhvbiBpbnRlcnByZXRlciwgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgd291bGQgZ3JvdyB3aXRob3V0CitsaW1pdC4KKworLi4KKworLi4gYnBvOiAzNjQzCisuLiBkYXRlOiA3MTIyCisuLiBub25jZTogcjJKSFNoCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIGEgZmV3IG1vcmUgY2hlY2tzIHRvIF90ZXN0Y2FwaSB0byBwcmV2ZW50IHNlZ2ZhdWx0cyBieSBleHBsb2l0YXRpb24gb2YKK3Bvb3IgYXJndW1lbnQgY2hlY2tpbmcuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzEyMQorLi4gbm9uY2U6IFdlRmp6dgorLi4gc2VjdGlvbjogTGlicmFyeQorCitzcWxpdGUzOiBDaGFuZ2VkIGRvY3N0cmluZyBvZiBpdGVyZHVtcCgpIHRvIG1hcmsgbWV0aG9kIGFzICJOb24tc3RhbmRhcmQiLgorCisuLgorCisuLiBicG86IDMxMDMKKy4uIGRhdGU6IDcxMjAKKy4uIG5vbmNlOiBXTy0yTkEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVkdWNlZCBnbG9iYWxzIHN5bWJvbHMgdXNlZCBieSBzcWxpdGUzIG1vZHVsZSBhbmQgbWFkZSBzdXJlIGFsbCByZW1haW5pbmcKK29uZXMgaGF2ZSAicHlzcWxpdGVfIiBwcmVmaXguCisKKy4uCisKKy4uIGJwbzogMzg0NgorLi4gZGF0ZTogNzExOQorLi4gbm9uY2U6IElGNnJNdAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZWxlYXNlIHRoZSBHSUwgZHVyaW5nIHNxbGl0ZTNfcHJlcGFyZSBjYWxscy4gVGhpcyBpbXByb3ZlcyBjb25jdXJyZW50CithY2Nlc3MgdG8gdGhlIHNhbWUgU1FMaXRlIGRhdGFiYXNlIGZyb20gbXVsdGlwbGUgdGhyZWFkcy9wcm9jZXNzZXMuCisKKy4uCisKKy4uIGJwbzogMzc4MQorLi4gZGF0ZTogNzExOAorLi4gbm9uY2U6IGM4aEZzeQorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkIHRlc3QudGVzdF9zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCkgYXMgYSBjb252ZW5pZW5jZSB3cmFwcGVyIGZvcgord2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKSB0aGF0IG1ha2VzIGl0IGVhc2llciB0byBjaGVjayB0aGF0IGV4cGVjdGVkCit3YXJuaW5nIG1lc3NhZ2VzIGFyZSBiZWluZyByZXBvcnRlZC4KKworLi4KKworLi4gYnBvOiAzNzk2CisuLiBkYXRlOiA3MTE3CisuLiBub25jZTogMDRFNkdnCisuLiBzZWN0aW9uOiBUZXN0cworCitTb21lIHRlc3RzIGZ1bmN0aW9ucyB3ZXJlIG5vdCBlbmFibGVkIGluIHRlc3RfZmxvYXQuCisKKy4uCisKKy4uIGJwbzogMzc2OAorLi4gZGF0ZTogNzExNgorLi4gbm9uY2U6IHdLN0dZcQorLi4gc2VjdGlvbjogVGVzdHMKKworTW92ZSB0ZXN0X3B5M2t3YXJuIG92ZXIgdG8gdGhlIG5ldyBBUEkgZm9yIGNhdGNoX3dhcm5pbmdzKCkuCisKKy4uCisKKy4uIGJwbzogMzgzMworLi4gZGF0ZTogNzExNQorLi4gbm9uY2U6IDhnWkRnQgorLi4gc2VjdGlvbjogQnVpbGQKKworVXNlIGEgZGlmZmVyZW50IHVwZ3JhZGUgY29kZSBmb3IgV2luNjQgaW5zdGFsbGVycy4KKworLi4KKworLi4gYnBvOiAyMjcxCisuLiBkYXRlOiA3MTE0CisuLiBub25jZTogOE1YQy1vCisuLiBzZWN0aW9uOiBCdWlsZAorCitTZXQgU2VjdXJlQ3VzdG9tUHJvcGVydGllcyBzbyB0aGF0IGluc3RhbGxhdGlvbiB3aWxsIHByb3Blcmx5IHVzZSB0aGUKK1RBUkdFVERJUiBldmVuIGZvciB1bnByaXZpbGVnZWQgdXNlcnMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzExMworLi4gbm9uY2U6IDRYQlV6ZworLi4gc2VjdGlvbjogQnVpbGQKKworQWxsb3cgcGFzc2luZyB0aGUgTVNJIGZpbGUgbmFtZSB0byBtZXJnZS5weS4KKworLi4KKworLi4gYnBvOiAzNzU4CisuLiBkYXRlOiA3MTEyCisuLiBub25jZTogeFo0UmxqCisuLiBzZWN0aW9uOiBCdWlsZAorCitSZW5hbWUgdGhlICdjaGVjaycgdGFyZ2V0IHRvICdwYXRjaGNoZWNrJyBzbyBhcyB0byBub3QgY2xhc2ggd2l0aCBHTlUgYnVpbGQKK3RhcmdldCBndWlkZWxpbmVzLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvMi42cmMyLnJzdCBiL01pc2MvTkVXUy5kLzIuNnJjMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdkNDM1ZAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNnJjMi5yc3QKQEAgLTAsMCArMSwzOSBAQAorLi4gYnBvOiAwCisuLiBkYXRlOiA3MTY4CisuLiBub25jZTogMGloV2gyCisuLiByZWxlYXNlIGRhdGU6IDE3LVNlcC0yMDA4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NlY3VyaXR5IElzc3VlICMyOiBpbWFnZW9wIGRpZCBub3QgdmFsaWRhdGUgYXJndW1lbnRzIGNvcnJlY3RseSBhbmQgY291bGQKK3NlZ2ZhdWx0IGFzIGEgcmVzdWx0LgorCisuLgorCisuLiBicG86IDM4ODYKKy4uIGRhdGU6IDcxNjcKKy4uIG5vbmNlOiBsNmt6RmwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUG9zc2libGUgaW50ZWdlciBvdmVyZmxvd3MgaW4gdGhlIF9oYXNob3BlbnNzbCBtb2R1bGUgd2VyZSBjbG9zZWQuCisKKy4uCisKKy4uIGJwbzogMzg1MAorLi4gZGF0ZTogNzE2NgorLi4gbm9uY2U6IEFKQmJZdworLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworcmVjdXJzaW9uIHRlc3RzIGluIFRvb2xzL3NjcmlwdHMvZmluZF9yZWN1cnNpb25fbGltaXQucHkgY2FuIHJhaXNlCitBdHRyaWJ1dGVFcnJvciBpbnN0ZWFkIG9mIFJ1bnRpbWVFcnJvciwgZGVwZW5kaW5nIGluIHdoaWNoIEMgQVBJIGNhbGwKK2V4YWN0bHkgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBleGNlZWRlZC4gQ29uc2VxdWVudGx5LCBib3RoIGV4Y2VwdGlvbiB0eXBlcworYXJlIGNhdWdodCBhbmQgc2lsZW5jZWQuCisKKy4uCisKKy4uIGJwbzogMzYxNworLi4gZGF0ZTogNzE2NQorLi4gbm9uY2U6IGFSMURpbQorLi4gc2VjdGlvbjogQnVpbGQKKworSW5jbHVkZSBhIGxpY2Vuc2luZyBzdGF0ZW1lbnQgcmVnYXJkaW5nIHRoZSBNaWNyb3NvZnQgQyBydW50aW1lIGluIHRoZQorV2luZG93cyBpbnN0YWxsZXIuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjcuMS5yc3QgYi9NaXNjL05FV1MuZC8yLjcuMS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwNzJjMQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNy4xLnJzdApAQCAtMCwwICsxLDE4NyBAQAorLi4gYnBvOiAyMjM2CisuLiBkYXRlOiA4MjkzCisuLiBub25jZTogMU1qNFZKCisuLiByZWxlYXNlIGRhdGU6IDIwMTAtMTEtMjcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlzdHV0aWxzJyBta3BhdGggaWdub3JlZCB0aGUgbW9kZSBwYXJhbWV0ZXIuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODI5MgorLi4gbm9uY2U6IE5GZVdSYworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdHlwbyBpbiBvbmUgc2Rpc3Qgb3B0aW9uIChtZWRhdGEtY2hlY2spLgorCisuLgorCisuLiBicG86IDEwMzIzCisuLiBkYXRlOiA4MjkxCisuLiBub25jZTogckZLSTNYCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2l0ZXJ0b29scy5pc2xpY2UoKSBub3cgY29uc3VtZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGlucHV0cyBiZWZvcmUKK3N0b3BwaW5nLiAgRm9ybWVybHksIHRoZSBmaW5hbCBzdGF0ZSBvZiB0aGUgdW5kZXJseWluZyBpdGVyYXRvciB3YXMKK3VuZGVmaW5lZC4KKworLi4KKworLi4gYnBvOiAxMDU2NQorLi4gZGF0ZTogODI5MAorLi4gbm9uY2U6IGczTDlkYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgY29sbGVjdGlvbnMuSXRlcmF0b3IgQUJDIG5vdyBjaGVja3MgZm9yIGJvdGggYGBfX2l0ZXJfX2BgIGFuZCBgYG5leHRgYC4KKworLi4KKworLi4gYnBvOiAxMDA5MgorLi4gZGF0ZTogODI4OQorLi4gbm9uY2U6IC1CN3luWQorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcm9wZXJseSByZXNldCBsb2NhbGUgaW4gY2FsZW5kYXIuTG9jYWxlKkNhbGVuZGFyIGNsYXNzZXMuCisKKy4uCisKKy4uIGJwbzogMTA0NTkKKy4uIGRhdGU6IDgyODgKKy4uIG5vbmNlOiBHMFJGb0QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXBkYXRlIENKSyBjaGFyYWN0ZXIgbmFtZXMgdG8gVW5pY29kZSA1LjIuCisKKy4uCisKKy4uIGJwbzogNjA5OAorLi4gZGF0ZTogODI4NworLi4gbm9uY2U6IENLaXNhYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitEb24ndCBjbGFpbSBET00gbGV2ZWwgMyBjb25mb3JtYW5jZSBpbiBtaW5pZG9tLgorCisuLgorCisuLiBicG86IDEwNTYxCisuLiBkYXRlOiA4Mjg2CisuLiBub25jZTogZ3hzNmJRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHBkYiwgY2xlYXIgdGhlIGJyZWFrcG9pbnRzIGJ5IHRoZSBicmVha3BvaW50IG51bWJlci4KKworLi4KKworLi4gYnBvOiA1NzYyCisuLiBkYXRlOiA4Mjg1CisuLiBub25jZTogQUR2R3piCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBBdHRyaWJ1dGVFcnJvciByYWlzZWQgYnkgYGB4bWwuZG9tLm1pbmlkb21gYCB3aGVuIGFuIGVtcHR5IFhNTCBuYW1lc3BhY2UKK2F0dHJpYnV0ZSBpcyBlbmNvdW50ZXJlZC4KKworLi4KKworLi4gYnBvOiAxNzEwNzAzCisuLiBkYXRlOiA4Mjg0CisuLiBub25jZTogTkFBaC1kCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1dyaXRlIHN0cnVjdHVyZXMgZm9yIGFuIGVtcHR5IFpJUCBhcmNoaXZlIHdoZW4gYSBaaXBGaWxlIGlzIGNyZWF0ZWQgaW4gbW9kZXMKKydhJyBvciAndycgYW5kIHRoZW4gY2xvc2VkIHdpdGhvdXQgYWRkaW5nIGFueSBmaWxlcy4gUmFpc2UgQmFkWmlwZmlsZQorKHJhdGhlciB0aGFuIElPRXJyb3IpIHdoZW4gb3BlbmluZyBzbWFsbCBub24tWklQIGZpbGVzLgorCisuLgorCisuLiBicG86IDQ0OTMKKy4uIGRhdGU6IDgyODMKKy4uIG5vbmNlOiBpZE1qTUcKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordXJsbGliMiBhZGRzICcvJyBpbiBmcm9udCBvZiBwYXRoIGNvbXBvbmVudHMgd2hpY2ggZG9lcyBub3Qgc3RhcnQgd2l0aCAnLy4KK0NvbW1vbiBiZWhhdmlvciBleGhpYml0ZWQgYnkgYnJvd3NlcnMgYW5kIG90aGVyIGNsaWVudHMuCisKKy4uCisKKy4uIGJwbzogMTA0MDcKKy4uIGRhdGU6IDgyODIKKy4uIG5vbmNlOiBmOExyRl8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG9uZSBOYW1lRXJyb3IgaW4gZGlzdHV0aWxzLgorCisuLgorCisuLiBicG86IDEwMTk4CisuLiBkYXRlOiA4MjgxCisuLiBub25jZTogN3J1aGRZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeCBkdXBsaWNhdGUgaGVhZGVyIHdyaXR0ZW4gdG8gd2F2ZSBmaWxlcyB3aGVuIHdyaXRlZnJhbWVzKCkgaXMgY2FsbGVkCit3aXRob3V0IGRhdGEuCisKKy4uCisKKy4uIGJwbzogMTA0NjcKKy4uIGRhdGU6IDgyODAKKy4uIG5vbmNlOiB1TldHaVkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IEJ5dGVzSU8ucmVhZGludG8oKSBhZnRlciBzZWVraW5nIGludG8gYSBwb3NpdGlvbiBhZnRlciB0aGUgZW5kIG9mIHRoZQorZmlsZS4KKworLi4KKworLi4gYnBvOiA1MTExCisuLiBkYXRlOiA4Mjc5CisuLiBub25jZTogWGVnWUZSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0lQdjYgSG9zdCBpbiB0aGUgSGVhZGVyIGlzIHdyYXBwZWQgaW5zaWRlIFsgXS4gUGF0Y2ggYnkgQ2hhbmRydS4KKworLi4KKworLi4gYnBvOiA2Mzc4CisuLiBkYXRlOiA4Mjc4CisuLiBub25jZTogb3ZjWU90CisuLiBzZWN0aW9uOiBJRExFCisKK2lkbGUuYmF0IG5vdyBydW5zIHdpdGggdGhlIGFwcHJvcHJpYXRlIFB5dGhvbiB2ZXJzaW9uIHJhdGhlciB0aGFuIHRoZSBzeXN0ZW0KK2RlZmF1bHQuIFBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA4Mjc3CisuLiBub25jZTogNjRzc2ZTCisuLiBzZWN0aW9uOiBCdWlsZAorCitCYWNrcG9ydCByODMzOTkgdG8gYWxsb3cgdGVzdF9kaXN0dXRpbHMgdG8gcGFzcyBvbiBpbnN0YWxsZWQgdmVyc2lvbnMuCisKKy4uCisKKy4uIGJwbzogMTMwMzQzNAorLi4gZGF0ZTogODI3NgorLi4gbm9uY2U6IEFWTzZFRworLi4gc2VjdGlvbjogQnVpbGQKKworR2VuZXJhdGUgWklQIGZpbGUgY29udGFpbmluZyBhbGwgUERCcy4KKworLi4KKworLi4gYnBvOiA5NDI0CisuLiBkYXRlOiA4Mjc1CisuLiBub25jZTogQk81SmZhCisuLiBzZWN0aW9uOiBUZXN0cworCitSZXBsYWNlIGRlcHJlY2F0ZWQgYXNzZXJ0KiBtZXRob2RzIGluIHRoZSBQeXRob24gdGVzdCBzdWl0ZS4KKworLi4KKworLi4gYnBvOiAxMDI5OQorLi4gZGF0ZTogODI3NAorLi4gbm9uY2U6IEVSdGJQYQorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitMaXN0IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgaW4gYSB0YWJsZSBpbiBmdW5jdGlvbnMucnN0LgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvMi43LjEwLnJzdCBiL01pc2MvTkVXUy5kLzIuNy4xMC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVlODIzMgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNy4xMC5yc3QKQEAgLTAsMCArMSw3IEBACisuLiBicG86IDIyOTMxCisuLiBkYXRlOiA5NTg5CisuLiBub25jZTogNEN1V1lECisuLiByZWxlYXNlIGRhdGU6IDIwMTUtMDUtMjMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWxsb3cgJ1snIGFuZCAnXScgaW4gY29va2llIHZhbHVlcy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy4xMHJjMS5yc3QgYi9NaXNjL05FV1MuZC8yLjcuMTByYzEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhZDM0ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC8yLjcuMTByYzEucnN0CkBAIC0wLDAgKzEsOTA2IEBACisuLiBicG86IDIzOTcxCisuLiBkYXRlOiA5NTg4CisuLiBub25jZTogZlFadEpyCisuLiByZWxlYXNlIGRhdGU6IDIwMTUtMDUtMTAKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCB1bmRlcmVzdGltYXRlZCBwcmVzaXppbmcgaW4gZGljdC5mcm9ta2V5cygpLgorCisuLgorCisuLiBicG86IDIzNzU3CisuLiBkYXRlOiA5NTg3CisuLiBub25jZTogUTlrd1lfCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQeVNlcXVlbmNlX1R1cGxlKCkgaW5jb3JyZWN0bHkgY2FsbGVkIHRoZSBjb25jcmV0ZSBsaXN0IEFQSSB3aGVuIHRoZSBkYXRhCit3YXMgYSBsaXN0IHN1YmNsYXNzLgorCisuLgorCisuLiBicG86IDIzNjI5CisuLiBkYXRlOiA5NTg2CisuLiBub25jZTogcjlNdDJDCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggdGhlIGRlZmF1bHQgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgdmFyaWFibGUtc2l6ZWQgb2JqZWN0cy4KKworLi4KKworLi4gYnBvOiAyMzA1NQorLi4gZGF0ZTogOTU4NQorLi4gbm9uY2U6IHJSa1JJSgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgYSBidWZmZXIgb3ZlcmZsb3cgaW4gUHlVbmljb2RlX0Zyb21Gb3JtYXRWLiAgQW5hbHlzaXMgYW5kIGZpeCBieSBHdWlkbworVnJhbmtlbi4KKworLi4KKworLi4gYnBvOiAyMzA0OAorLi4gZGF0ZTogOTU4NAorLi4gbm9uY2U6IFg1QlVkMworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGp1bXBpbmcgb3V0IG9mIGFuIGluZmluaXRlIHdoaWxlIGxvb3AgaW4gdGhlIHBkYi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA5NTgzCisuLiBub25jZTogZmdYOFFlCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBrZXl3b3JkcyBhdHRyaWJ1dGUgb2YgZnVuY3Rvb2xzLnBhcnRpYWwgaXMgbm93IGFsd2F5cyBhIGRpY3Rpb25hcnkuCisKKy4uCisKKy4uIGJwbzogMjAyNzQKKy4uIGRhdGU6IDk1ODIKKy4uIG5vbmNlOiB1VkhvZ2cKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV2hlbiBjYWxsaW5nIGEgX3NxbGl0ZS5Db25uZWN0aW9uLCBpdCBub3cgY29tcGxhaW5zIGlmIHBhc3NlZCBhbnkga2V5d29yZAorYXJndW1lbnRzLiAgUHJldmlvdXNseSBpdCBzaWxlbnRseSBpZ25vcmVkIHRoZW0uCisKKy4uCisKKy4uIGJwbzogMjAyNzQKKy4uIGRhdGU6IDk1ODEKKy4uIG5vbmNlOiBoQnN0NE0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlIGlnbm9yZWQgYW5kIGVycm9uZW91cyAia3dhcmdzIiBwYXJhbWV0ZXJzIGZyb20gdGhyZWUgTUVUSF9WQVJBUkdTCittZXRob2RzIG9uIF9zcWxpdGUuQ29ubmVjdGlvbi4KKworLi4KKworLi4gYnBvOiAyNDEzNAorLi4gZGF0ZTogOTU4MAorLi4gbm9uY2U6IFRUMGtIRQorLi4gc2VjdGlvbjogTGlicmFyeQorCithc3NlcnRSYWlzZXMoKSBhbmQgYXNzZXJ0UmFpc2VzUmVnZXhwKCkgY2hlY2tzIGFyZSBub3QgbG9uZ2VyIHN1Y2Nlc3NmdWwgaWYKK3RoZSBjYWxsYWJsZSBpcyBOb25lLgorCisuLgorCisuLiBicG86IDIzMDA4CisuLiBkYXRlOiA5NTc5CisuLiBub25jZTogT1pGQ2QtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHJlc29sdmluZyBhdHRyaWJ1dGVzIHdpdGggYm9vbGVhbiB2YWx1ZSBpcyBGYWxzZSBpbiBweWRvYy4KKworLi4KKworLi4gYnBvOiAyNDA5OQorLi4gZGF0ZTogOTU3OAorLi4gbm9uY2U6IDJ1QUhYNworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdXNlLWFmdGVyLWZyZWUgYnVnIGluIGhlYXBxJ3Mgc2lmdHVwIGFuZCBzaWZ0ZG93biBmdW5jdGlvbnMuIChTZWUgYWxzbzoKK2Jwby0yNDEwMCwgYnBvLTI0MTAxKQorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDk1NzcKKy4uIG5vbmNlOiBPdUk5NGIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQmFja3BvcnQgY29sbGVjdGlvbnMuZGVxdWUgZml4ZXMgZnJvbSBQeXRob24gMy41LiAgUHJldmVudHMgcmVlbnRyYW50CitiYWRuZXNzIGR1cmluZyBkZWxldGlvbiBieSBkZWZlcnJpbmcgdGhlIGRlY3JlZiB1bnRpbCB0aGUgY29udGFpbmVyIGhhcyBiZWVuCityZXN0b3JlZCB0byBhIGNvbnNpc3RlbnQgc3RhdGUuCisKKy4uCisKKy4uIGJwbzogMjM4NDIKKy4uIGRhdGU6IDk1NzYKKy4uIG5vbmNlOiA4VUQycV8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworb3MubWFqb3IoKSwgb3MubWlub3IoKSBhbmQgb3MubWFrZWRldigpIG5vdyBzdXBwb3J0IGludHMgYWdhaW4uCisKKy4uCisKKy4uIGJwbzogMjM4MTEKKy4uIGRhdGU6IDk1NzUKKy4uIG5vbmNlOiBCNnR6ZjkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIG1pc3NpbmcgbmV3bGluZSB0byB0aGUgUHlDb21waWxlRXJyb3IgZXJyb3IgbWVzc2FnZS4gUGF0Y2ggYnkgQWxleAorU2hrb3AuCisKKy4uCisKKy4uIGJwbzogMTc4OTgKKy4uIGRhdGU6IDk1NzQKKy4uIG5vbmNlOiBFc2JDblgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGV4Y2VwdGlvbiBpbiBnZXR0ZXh0LnB5IHdoZW4gcGFyc2luZyBjZXJ0YWluIHBsdXJhbCBmb3Jtcy4KKworLi4KKworLi4gYnBvOiAyMzg2NQorLi4gZGF0ZTogOTU3MworLi4gbm9uY2U6IFB0U0xnVQorLi4gc2VjdGlvbjogTGlicmFyeQorCitjbG9zZSgpIG1ldGhvZHMgaW4gbXVsdGlwbGUgbW9kdWxlcyBub3cgYXJlIGlkZW1wb3RlbnQgYW5kIG1vcmUgcm9idXN0IGF0CitzaHV0ZG93bi4gSWYgdGhleSBuZWVkIHRvIHJlbGVhc2UgbXVsdGlwbGUgcmVzb3VyY2VzLCBhbGwgYXJlIHJlbGVhc2VkIGV2ZW4KK2lmIGVycm9ycyBvY2N1ci4KKworLi4KKworLi4gYnBvOiAyMzg4MQorLi4gZGF0ZTogOTU3MgorLi4gbm9uY2U6IENZbXZXdgorLi4gc2VjdGlvbjogTGlicmFyeQorCit1cmxsaWIuZnRwd3JhcHBlciBjb25zdHJ1Y3RvciBub3cgY2xvc2VzIHRoZSBzb2NrZXQgaWYgdGhlIEZUUCBjb25uZWN0aW9uCitmYWlsZWQuCisKKy4uCisKKy4uIGJwbzogMTUxMzMKKy4uIGRhdGU6IDk1NzEKKy4uIG5vbmNlOiBpSHBraHcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworX3RraW50ZXIudGthcHAuZ2V0Ym9vbGVhbigpIG5vdyBzdXBwb3J0cyBsb25nIGFuZCBUY2xfT2JqIGFuZCBhbHdheXMgcmV0dXJucworYm9vbC4gIHRraW50ZXIuQm9vbGVhblZhciBub3cgdmFsaWRhdGVzIGlucHV0IHZhbHVlcyAoYWNjZXB0ZWQgYm9vbCwgaW50LAorbG9uZywgc3RyLCB1bmljb2RlLCBhbmQgVGNsX09iaikuICB0a2ludGVyLkJvb2xlYW5WYXIuZ2V0KCkgbm93IGFsd2F5cworcmV0dXJucyBib29sLgorCisuLgorCisuLiBicG86IDIzMzM4CisuLiBkYXRlOiA5NTcwCisuLiBub25jZTogWllNR04xCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGZvcm1hdHRpbmcgY3R5cGVzIGVycm9yIG1lc3NhZ2VzIG9uIEN5Z3dpbi4gUGF0Y2ggYnkgTWFrb3RvIEthdG8uCisKKy4uCisKKy4uIGJwbzogMTY4NDAKKy4uIGRhdGU6IDk1NjkKKy4uIG5vbmNlOiBrS0loUG0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGtpbnRlciBub3cgc3VwcG9ydHMgNjQtYml0IGludGVnZXJzIGFkZGVkIGluIFRjbCA4LjQgYW5kIGFyYml0cmFyeQorcHJlY2lzaW9uIGludGVnZXJzIGFkZGVkIGluIFRjbCA4LjUuCisKKy4uCisKKy4uIGJwbzogMjM4MzQKKy4uIGRhdGU6IDk1NjgKKy4uIG5vbmNlOiAxdzVZSXoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHNvY2tldC5zZW5kdG8oKSwgdXNlIHRoZSBDIGxvbmcgdHlwZSB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIHNlbmR0bygpCitpbnN0ZWFkIG9mIHRoZSBDIGludCB0eXBlLgorCisuLgorCisuLiBicG86IDIxNTI2CisuLiBkYXRlOiA5NTY3CisuLiBub25jZTogUVFFWHJSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RraW50ZXIgbm93IHN1cHBvcnRzIG5ldyBib29sZWFuIHR5cGUgaW4gVGNsIDguNS4KKworLi4KKworLi4gYnBvOiAyMzgzOAorLi4gZGF0ZTogOTU2NgorLi4gbm9uY2U6IElYNkZQWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitsaW5lY2FjaGUgbm93IGNsZWFycyB0aGUgY2FjaGUgYW5kIHJldHVybnMgYW4gZW1wdHkgcmVzdWx0IG9uIE1lbW9yeUVycm9yLgorCisuLgorCisuLiBicG86IDIzNzQyCisuLiBkYXRlOiA5NTY1CisuLiBub25jZTogX0VrQUlhCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK250cGF0aC5leHBhbmR2YXJzKCkgbm8gbG9uZ2VyIGxvc2VzIHVuYmFsYW5jZWQgc2luZ2xlIHF1b3Rlcy4KKworLi4KKworLi4gYnBvOiAyMTgwMgorLi4gZGF0ZTogOTU2NAorLi4gbm9uY2U6IHlnU00yQQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgcmVhZGVyIGluIEJ1ZmZlcmVkUldQYWlyIG5vdyBpcyBjbG9zZWQgZXZlbiB3aGVuIGNsb3Npbmcgd3JpdGVyIGZhaWxlZAoraW4gQnVmZmVyZWRSV1BhaXIuY2xvc2UoKS4KKworLi4KKworLi4gYnBvOiAyMzY3MQorLi4gZGF0ZTogOTU2MworLi4gbm9uY2U6IHpXUG0tYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitzdHJpbmcuVGVtcGxhdGUgbm93IGFsbG93cyBzcGVjaWZ5aW5nIHRoZSAic2VsZiIgcGFyYW1ldGVyIGFzIGEga2V5d29yZAorYXJndW1lbnQuICBzdHJpbmcuRm9ybWF0dGVyIG5vdyBhbGxvd3Mgc3BlY2lmeWluZyB0aGUgInNlbGYiIGFuZCB0aGUKKyJmb3JtYXRfc3RyaW5nIiBwYXJhbWV0ZXJzIGFzIGtleXdvcmQgYXJndW1lbnRzLgorCisuLgorCisuLiBicG86IDIxNTYwCisuLiBkYXRlOiA5NTYyCisuLiBub25jZTogbHFmWXY4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FuIGF0dGVtcHQgdG8gd3JpdGUgYSBkYXRhIG9mIHdyb25nIHR5cGUgbm8gbG9uZ2VyIGNhdXNlIEd6aXBGaWxlCitjb3JydXB0aW9uLiAgT3JpZ2luYWwgcGF0Y2ggYnkgV29sZmdhbmcgTWFpZXIuCisKKy4uCisKKy4uIGJwbzogMjM2NDcKKy4uIGRhdGU6IDk1NjEKKy4uIG5vbmNlOiBwWDJxcngKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW5jcmVhc2UgaW1wYWxpYidzIE1BWExJTkUgdG8gYWNjb21tb2RhdGUgbW9kZXJuIG1haWxib3ggc2l6ZXMuCisKKy4uCisKKy4uIGJwbzogMjM1MzkKKy4uIGRhdGU6IDk1NjAKKy4uIG5vbmNlOiA1QlZVaW0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworSWYgYm9keSBpcyBOb25lLCBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbi5yZXF1ZXN0IG5vdyBzZXRzIENvbnRlbnQtTGVuZ3RoCit0byAwIGZvciBQVVQsIFBPU1QsIGFuZCBQQVRDSCBoZWFkZXJzIHRvIGF2b2lkIDQxMSBlcnJvcnMgZnJvbSBzb21lIHdlYgorc2VydmVycy4KKworLi4KKworLi4gYnBvOiAyMzEzNgorLi4gZGF0ZTogOTU1OQorLi4gbm9uY2U6IDFibnBuYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitfc3RycHRpbWUgbm93IHVuaWZvcm1seSBoYW5kbGVzIGFsbCBkYXlzIGluIHdlZWsgMCwgaW5jbHVkaW5nIERlYyAzMCBvZgorcHJldmlvdXMgeWVhci4gIEJhc2VkIG9uIHBhdGNoIGJ5IEppbSBDYXJyb2xsLgorCisuLgorCisuLiBicG86IDIzMTM4CisuLiBkYXRlOiA5NTU4CisuLiBub25jZTogNHZNb01aCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHBhcnNpbmcgY29va2llcyB3aXRoIGFic2VudCBrZXlzIG9yIHZhbHVlcyBpbiBjb29raWVqYXIuIFBhdGNoIGJ5CitEZW1pYW4gQnJlY2h0LgorCisuLgorCisuLiBicG86IDIzMDUxCisuLiBkYXRlOiA5NTU3CisuLiBub25jZTogVmk1dENaCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK211bHRpcHJvY2Vzc2luZy5Qb29sIG1ldGhvZHMgaW1hcCgpIGFuZCBpbWFwX3Vub3JkZXJlZCgpIG5vdyBoYW5kbGUKK2V4Y2VwdGlvbnMgcmFpc2VkIGJ5IGFuIGl0ZXJhdG9yLiAgUGF0Y2ggYnkgQWxvbiBEaWFtYW50IGFuZCBEYXZpbiBQb3R0cy4KKworLi4KKworLi4gYnBvOiAyMjkyOAorLi4gZGF0ZTogOTU1NgorLi4gbm9uY2U6IDFiSkpJRworLi4gc2VjdGlvbjogTGlicmFyeQorCitEaXNhYmxlZCBIVFRQIGhlYWRlciBpbmplY3Rpb25zIGluIGh0dHBsaWIuIE9yaWdpbmFsIHBhdGNoIGJ5IERlbWlhbiBCcmVjaHQuCisKKy4uCisKKy4uIGJwbzogMjM2MTUKKy4uIGRhdGU6IDk1NTUKKy4uIG5vbmNlOiBTUlNvYXYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTW9kdWxlIHRhcmZpbGUgaXMgbm93IGNhbiBiZSByZWxvYWRlZCB3aXRoIGltcC5yZWxvYWQoKS4KKworLi4KKworLi4gYnBvOiAyMjg1MworLi4gZGF0ZTogOTU1NAorLi4gbm9uY2U6IExVQmVkQworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIGRlYWRsb2NrIHdoZW4gdXNlIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSBhdCBpbXBvcnQgdGltZS4gUGF0Y2ggYnkKK0Zsb3JpYW4gRmlua2VybmFnZWwgYW5kIERhdmluIFBvdHRzLgorCisuLgorCisuLiBicG86IDIzNDc2CisuLiBkYXRlOiA5NTUzCisuLiBub25jZTogODJRVjlJCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHRoZSBzc2wgbW9kdWxlLCBlbmFibGUgT3BlblNTTCdzIFg1MDlfVl9GTEFHX1RSVVNURURfRklSU1QgZmxhZyBvbgorY2VydGlmaWNhdGUgc3RvcmVzIHdoZW4gaXQgaXMgYXZhaWxhYmxlLgorCisuLgorCisuLiBicG86IDIzNTc2CisuLiBkYXRlOiA5NTUyCisuLiBub25jZTogOThGLVBQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0F2b2lkIHN0YWxsaW5nIGluIFNTTCByZWFkcyB3aGVuIEVPRiBoYXMgYmVlbiByZWFjaGVkIGluIHRoZSBTU0wgbGF5ZXIgYnV0Cit0aGUgdW5kZXJseWluZyBjb25uZWN0aW9uIGhhc24ndCBiZWVuIGNsb3NlZC4KKworLi4KKworLi4gYnBvOiAyMzUwNAorLi4gZGF0ZTogOTU1MQorLi4gbm9uY2U6IG8zMWg1SQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBhbiBfX2FsbF9fIHRvIHRoZSB0eXBlcyBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMjM0NTgKKy4uIGRhdGU6IDk1NTAKKy4uIG5vbmNlOiBRR0JGUnIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworT24gUE9TSVgsIHRoZSBmaWxlIGRlc2NyaXB0b3Iga2VwdCBvcGVuIGJ5IG9zLnVyYW5kb20oKSBpcyBub3cgc2V0IHRvIG5vbgoraW5oZXJpdGFibGUKKworLi4KKworLi4gYnBvOiAyMjExMworLi4gZGF0ZTogOTU0OQorLi4gbm9uY2U6IEw1Rm81YworLi4gc2VjdGlvbjogTGlicmFyeQorCitzdHJ1Y3QucGFja19pbnRvKCkgbm93IHN1cHBvcnRzIG5ldyBidWZmZXIgcHJvdG9jb2wgKGluIHBhcnRpY3VsYXIgYWNjZXB0cword3JpdGFibGUgbWVtb3J5dmlldykuCisKKy4uCisKKy4uIGJwbzogODE0MjUzCisuLiBkYXRlOiA5NTQ4CisuLiBub25jZTogQUpXRHNZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1dhcm5pbmdzIG5vdyBhcmUgcmFpc2VkIHdoZW4gZ3JvdXAgcmVmZXJlbmNlcyBhbmQgY29uZGl0aW9uYWwgZ3JvdXAKK3JlZmVyZW5jZXMgYXJlIHVzZWQgaW4gbG9va2JlaGluZCBhc3NlcnRpb25zIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuIChTZWUKK2Fsc286IGJwby05MTc5KQorCisuLgorCisuLiBicG86IDIzMjE1CisuLiBkYXRlOiA5NTQ3CisuLiBub25jZTogVkhWU1ZYCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK011bHRpYnl0ZSBjb2RlY3Mgd2l0aCBjdXN0b20gZXJyb3IgaGFuZGxlcnMgdGhhdCBpZ25vcmVzIGVycm9ycyBjb25zdW1lZCB0b28KK211Y2ggbWVtb3J5IGFuZCByYWlzZWQgU3lzdGVtRXJyb3Igb3IgTWVtb3J5RXJyb3IuIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZWtzaQorVG9yaGFtby4KKworLi4KKworLi4gYnBvOiA1NzAwCisuLiBkYXRlOiA5NTQ2CisuLiBub25jZTogaUE1eXpMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2lvLkZpbGVJTygpIGNhbGxlZCBmbHVzaCgpIGFmdGVyIGNsb3NpbmcgdGhlIGZpbGUuIGZsdXNoKCkgd2FzIG5vdCBjYWxsZWQgaW4KK2Nsb3NlKCkgaWYgY2xvc2VmZD1GYWxzZS4KKworLi4KKworLi4gYnBvOiAyMTU0OAorLi4gZGF0ZTogOTU0NQorLi4gbm9uY2U6IFJyMWwtYworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcHlkb2Muc3lub3BzaXMoKSBhbmQgcHlkb2MuYXByb3BvcygpIG9uIG1vZHVsZXMgd2l0aCBlbXB0eSBkb2NzdHJpbmdzLgorSW5pdGlhbCBwYXRjaCBieSBZdXlhbmcgR3VvLgorCisuLgorCisuLiBicG86IDIyODg1CisuLiBkYXRlOiA5NTQ0CisuLiBub25jZTogYzM5MzdtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGFyYml0cmFyeSBjb2RlIGV4ZWN1dGlvbiB2dWxuZXJhYmlsaXR5IGluIHRoZSBkdW1iZGJtIG1vZHVsZS4KK09yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLi4KKworLi4gYnBvOiAyMzQ4MQorLi4gZGF0ZTogOTU0MworLi4gbm9uY2U6IFpXd2xpRworLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmUgUkM0IGZyb20gdGhlIFNTTCBtb2R1bGUncyBkZWZhdWx0IGNpcGhlciBsaXN0LgorCisuLgorCisuLiBicG86IDIxODQ5CisuLiBkYXRlOiA5NTQyCisuLiBub25jZTogWFVuVHA4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHhtbHJwY2xpYiBzZXJpYWxpemF0aW9uIG9mIG5vbi1BU0NJSSB1bmljb2RlIHN0cmluZ3MgaW4gdGhlCittdWx0aXByb2Nlc3NpbmcgbW9kdWxlLgorCisuLgorCisuLiBicG86IDIxODQwCisuLiBkYXRlOiA5NTQxCisuLiBub25jZTogUHJPd1NDCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGV4cGFuZGluZyB1bmljb2RlIHZhcmlhYmxlcyBvZiBmb3JtICR2YXIgaW4gcG9zaXhwYXRoLmV4cGFuZHZhcnMoKS4KK0ZpeGVkIGFsbCBvcy5wYXRoIGltcGxlbWVudGF0aW9ucyBvbiB1bmljb2RlLWRpc2FibGVkIGJ1aWxkcy4KKworLi4KKworLi4gYnBvOiAyMzM2NworLi4gZGF0ZTogOTU0MAorLi4gbm9uY2U6IGtIbkZpegorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcG9zc2libGUgb3ZlcmZsb3dzIGluIHRoZSB1bmljb2RlZGF0YSBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMjMzNjMKKy4uIGRhdGU6IDk1MzkKKy4uIG5vbmNlOiAta29hb2wKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHBvc3NpYmxlIG92ZXJmbG93IGluIGl0ZXJ0b29scy5wZXJtdXRhdGlvbnMuCisKKy4uCisKKy4uIGJwbzogMjMzNjQKKy4uIGRhdGU6IDk1MzgKKy4uIG5vbmNlOiAzeUJWLTYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHBvc3NpYmxlIG92ZXJmbG93IGluIGl0ZXJ0b29scy5wcm9kdWN0LgorCisuLgorCisuLiBicG86IDIzMzY1CisuLiBkYXRlOiA5NTM3CisuLiBub25jZTogaDVqTFE5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4gaXRlcnRvb2xzLmNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50LgorCisuLgorCisuLiBicG86IDIzMzY2CisuLiBkYXRlOiA5NTM2CisuLiBub25jZTogdHlBZm04CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4gaXRlcnRvb2xzLmNvbWJpbmF0aW9ucy4KKworLi4KKworLi4gYnBvOiAyMzE5MQorLi4gZGF0ZTogOTUzNQorLi4gbm9uY2U6IDU1Q3djYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitmbm1hdGNoIGZ1bmN0aW9ucyB0aGF0IHVzZSBjYWNoaW5nIGFyZSBub3cgdGhyZWFkc2FmZS4KKworLi4KKworLi4gYnBvOiAxODUxOAorLi4gZGF0ZTogOTUzNAorLi4gbm9uY2U6IEpYZ2ljQworLi4gc2VjdGlvbjogTGlicmFyeQorCit0aW1laXQgbm93IHJlamVjdHMgc3RhdGVtZW50cyB3aGljaCBjYW4ndCBiZSBjb21waWxlZCBvdXRzaWRlIGEgZnVuY3Rpb24gb3IKK2EgbG9vcCAoZS5nLiAicmV0dXJuIiBvciAiYnJlYWsiKS4KKworLi4KKworLi4gYnBvOiAxOTk5NgorLi4gZGF0ZTogOTUzMworLi4gbm9uY2U6IEZ2TXlIMAorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIDptb2Q6YGh0dHBsaWJgIGlnbm9yZSBoZWFkZXJzIHdpdGggbm8gbmFtZSByYXRoZXIgdGhhbiBhc3N1bWluZyB0aGUKK2JvZHkgaGFzIHN0YXJ0ZWQuCisKKy4uCisKKy4uIGJwbzogMjAxODgKKy4uIGRhdGU6IDk1MzIKKy4uIG5vbmNlOiB4b2NZLTIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU3VwcG9ydCBBcHBsaWNhdGlvbi1MYXllciBQcm90b2NvbCBOZWdvdGlhdGlvbiAoQUxQTikgaW4gdGhlIHNzbCBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMjMyNDgKKy4uIGRhdGU6IDk1MzEKKy4uIG5vbmNlOiBGamN5Q1AKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXBkYXRlIHNzbCBlcnJvciBjb2RlcyBmcm9tIGxhdGVzdCBPcGVuU1NMIGdpdCBtYXN0ZXIuCisKKy4uCisKKy4uIGJwbzogMjMwOTgKKy4uIGRhdGU6IDk1MzAKKy4uIG5vbmNlOiA3VndGM0sKKy4uIHNlY3Rpb246IExpYnJhcnkKKworNjQtYml0IGRldl90IGlzIG5vdyBzdXBwb3J0ZWQgaW4gdGhlIG9zIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAyMzA2MworLi4gZGF0ZTogOTUyOQorLi4gbm9uY2U6IDktVUpScworLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiB0aGUgZGlzdXRpbHMnIGNoZWNrIGNvbW1hbmQsIGZpeCBwYXJzaW5nIG9mIHJlU1Qgd2l0aCBjb2RlIG9yIGNvZGUtYmxvY2sKK2RpcmVjdGl2ZXMuCisKKy4uCisKKy4uIGJwbzogMjEzNTYKKy4uIGRhdGU6IDk1MjgKKy4uIG5vbmNlOiA4Tlk3NUoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBzc2wuUkFORF9lZ2QoKSBvcHRpb25hbCB0byBzdXBwb3J0IExpYnJlU1NMLiBUaGUgYXZhaWxhYmlsaXR5IG9mIHRoZQorZnVuY3Rpb24gaXMgY2hlY2tlZCBkdXJpbmcgdGhlIGNvbXBpbGF0aW9uLiBQYXRjaCB3cml0dGVuIGJ5IEJlcm5hcmQgU3BpbC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA5NTI3CisuLiBub25jZTogU1pSU3huCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0JhY2twb3J0IHRoZSBjb250ZXh0IGFyZ3VtZW50IHRvIGZ0cGxpYi5GVFBfVExTLgorCisuLgorCisuLiBicG86IDIzMTExCisuLiBkYXRlOiA5NTI2CisuLiBub25jZTogQTZDQVpLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01heGltaXplIGNvbXBhdGliaWxpdHkgaW4gcHJvdG9jb2wgdmVyc2lvbnMgb2YgZnRwbGliLkZUUF9UTFMuCisKKy4uCisKKy4uIGJwbzogMjMxMTIKKy4uIGRhdGU6IDk1MjUKKy4uIG5vbmNlOiBkWkdmODIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IFNpbXBsZUhUVFBTZXJ2ZXIgdG8gY29ycmVjdGx5IGNhcnJ5IHRoZSBxdWVyeSBzdHJpbmcgYW5kIGZyYWdtZW50IHdoZW4KK2l0IHJlZGlyZWN0cyB0byBhZGQgYSB0cmFpbGluZyBzbGFzaC4KKworLi4KKworLi4gYnBvOiAyMjU4NQorLi4gZGF0ZTogOTUyNAorLi4gbm9uY2U6IEY0QmtObworLi4gc2VjdGlvbjogTGlicmFyeQorCitPbiBPcGVuQlNEIDUuNiBhbmQgbmV3ZXIsIG9zLnVyYW5kb20oKSBub3cgY2FsbHMgZ2V0ZW50cm9weSgpLCBpbnN0ZWFkIG9mCityZWFkaW5nIC9kZXYvdXJhbmRvbSwgdG8gZ2V0IHBzZXVkby1yYW5kb20gYnl0ZXMuCisKKy4uCisKKy4uIGJwbzogMjMwOTMKKy4uIGRhdGU6IDk1MjMKKy4uIG5vbmNlOiBjUDdPcUQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gdGhlIGlvLCBtb2R1bGUgYWxsb3cgbW9yZSBvcGVyYXRpb25zIHRvIHdvcmsgb24gZGV0YWNoZWQgc3RyZWFtcy4KKworLi4KKworLi4gYnBvOiAyMzA3MQorLi4gZGF0ZTogOTUyMgorLi4gbm9uY2U6IDNCU3FGNworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBtaXNzaW5nIG5hbWVzIHRvIGNvZGVjcy5fX2FsbF9fLiAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLi4KKworLi4gYnBvOiAyMzAxNgorLi4gZGF0ZTogOTUyMQorLi4gbm9uY2U6IHdjdGtZMworLi4gc2VjdGlvbjogTGlicmFyeQorCitBIHdhcm5pbmcgbm8gbG9uZ2VyIHByb2R1Y2VzIGFuIEF0dHJpYnV0ZUVycm9yIHdoZW4gc3lzLnN0ZGVyciBpcyBOb25lLgorCisuLgorCisuLiBicG86IDIxMDMyCisuLiBkYXRlOiA5NTIwCisuLiBub25jZTogd3hUXzQxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHNvY2tldCBsZWFrIGlmIEhUVFBDb25uZWN0aW9uLmdldHJlc3BvbnNlKCkgZmFpbHMuIE9yaWdpbmFsIHBhdGNoIGJ5CitNYXJ0aW4gUGFudGVyLgorCisuLgorCisuLiBicG86IDIyNjA5CisuLiBkYXRlOiA5NTE5CisuLiBub25jZTogbW1Mb2ViCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NvbnN0cnVjdG9ycyBhbmQgdXBkYXRlIG1ldGhvZHMgb2YgbWFwcGluZyBjbGFzc2VzIGluIHRoZSBjb2xsZWN0aW9ucyBtb2R1bGUKK25vdyBhY2NlcHQgdGhlIHNlbGYga2V5d29yZCBhcmd1bWVudC4KKworLi4KKworLi4gYnBvOiAyMzAwNgorLi4gZGF0ZTogOTUxOAorLi4gbm9uY2U6IDYtdTRNdgorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitJbXByb3ZlIHRoZSBkb2N1bWVudGF0aW9uIGFuZCBpbmRleGluZyBvZiBkaWN0Ll9fbWlzc2luZ19fLiBBZGQgYW4gZW50cnkgaW4KK3RoZSBsYW5ndWFnZSBkYXRhbW9kZWwgc3BlY2lhbCBtZXRob2RzIHNlY3Rpb24uIFJldmlzZSBhbmQgaW5kZXggaXRzCitkaXNjdXNzaW9uIGluIHRoZSBzdGR0eXBlcyBtYXBwaW5nL2RpY3Qgc2VjdGlvbi4gQmFja3BvcnQgdGhlIGNvZGUgZXhhbXBsZQorZnJvbSAzLjQuCisKKy4uCisKKy4uIGJwbzogMjE1MTQKKy4uIGRhdGU6IDk1MTcKKy4uIG5vbmNlOiAxSDE2VDYKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworVGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIGpzb24gbW9kdWxlIG5vdyByZWZlcnMgdG8gbmV3IEpTT04gUkZDIDcxNTkgaW5zdGVhZAorb2Ygb2Jzb2xldGVkIFJGQyA0NjI3LgorCisuLgorCisuLiBicG86IDIzMzMwCisuLiBkYXRlOiA5NTE2CisuLiBub25jZTogTFRsS0RwCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitoMnB5IG5vdyBzdXBwb3J0cyBhcmJpdHJhcnkgZmlsZW5hbWVzIGluICNpbmNsdWRlLgorCisuLgorCisuLiBicG86IDY2MzkKKy4uIGRhdGU6IDk1MTUKKy4uIG5vbmNlOiBybWpVbUcKKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK01vZHVsZS1sZXZlbCB0dXJ0bGUgZnVuY3Rpb25zIG5vIGxvbmdlciByYWlzZSBUY2xFcnJvciBhZnRlciBjbG9zaW5nIHRoZQord2luZG93LgorCisuLgorCisuLiBicG86IDIyMzE0CisuLiBkYXRlOiA5NTE0CisuLiBub25jZTogd3M2eHNICisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitweWRvYyBub3cgd29ya3Mgd2hlbiB0aGUgTElORVMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0LgorCisuLgorCisuLiBicG86IDE4OTA1CisuLiBkYXRlOiA5NTEzCisuLiBub25jZTogb0tUdno1CisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCisicHlkb2MgLXAgMCIgbm93IG91dHB1dHMgYWN0dWFsbHkgdXNlZCBwb3J0LiAgQmFzZWQgb24gcGF0Y2ggYnkgV2llbGFuZAorSG9mZm1hbm4uCisKKy4uCisKKy4uIGJwbzogMjMzNDUKKy4uIGRhdGU6IDk1MTIKKy4uIG5vbmNlOiBISUdCS3gKKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK1ByZXZlbnQgdGVzdF9zc2wgZmFpbHVyZXMgd2l0aCBsYXJnZSBPcGVuU1NMIHBhdGNoIGxldmVsIHZhbHVlcyAobGlrZQorMC45Ljh6YykuCisKKy4uCisKKy4uIGJwbzogMjM3OTkKKy4uIGRhdGU6IDk1MTEKKy4uIG5vbmNlOiBJWnRtSF8KKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZGVkIHRlc3QudGVzdF9zdXBwb3J0LnN0YXJ0X3RocmVhZHMoKSBmb3IgcnVubmluZyBhbmQgY2xlYW5pbmcgdXAgbXVsdGlwbGUKK3RocmVhZHMuCisKKy4uCisKKy4uIGJwbzogMjIzOTAKKy4uIGRhdGU6IDk1MTAKKy4uIG5vbmNlOiBVUFZGbnEKKy4uIHNlY3Rpb246IFRlc3RzCisKK3Rlc3QucmVncnRlc3Qgbm93IGVtaXRzIGEgd2FybmluZyBpZiB0ZW1wb3JhcnkgZmlsZXMgb3IgZGlyZWN0b3JpZXMgYXJlIGxlZnQKK2FmdGVyIHJ1bm5pbmcgYSB0ZXN0LgorCisuLgorCisuLiBicG86IDIzNTgzCisuLiBkYXRlOiA5NTA5CisuLiBub25jZTogYlk4QWJNCisuLiBzZWN0aW9uOiBUZXN0cworCitBZGRlZCB0ZXN0cyBmb3Igc3RhbmRhcmQgSU8gc3RyZWFtcyBpbiBJRExFLgorCisuLgorCisuLiBicG86IDIzMzkyCisuLiBkYXRlOiA5NTA4CisuLiBub25jZTogUGU3X1dLCisuLiBzZWN0aW9uOiBUZXN0cworCitBZGRlZCB0ZXN0cyBmb3IgbWFyc2hhbCBDIEFQSSB0aGF0IHdvcmtzIHdpdGggRklMRSouCisKKy4uCisKKy4uIGJwbzogMTg5ODIKKy4uIGRhdGU6IDk1MDcKKy4uIG5vbmNlOiBUeW5TTTYKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZCB0ZXN0cyBmb3IgQ0xJIG9mIHRoZSBjYWxlbmRhciBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMTk5NDkKKy4uIGRhdGU6IDk1MDYKKy4uIG5vbmNlOiB5dzdUNTQKKy4uIHNlY3Rpb246IFRlc3RzCisKK1RoZSB0ZXN0X3hwaWNrbGUgdGVzdCBub3cgdGVzdHMgY29tcGF0aWJpbGl0eSB3aXRoIGluc3RhbGxlZCBQeXRob24gMi43IGFuZAorcmVwb3J0cyBza2lwcGVkIHRlc3RzLiAgQmFzZWQgb24gcGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCisuLgorCisuLiBicG86IDExNTc4CisuLiBkYXRlOiA5NTA1CisuLiBub25jZTogMUlhQVhoCisuLiBzZWN0aW9uOiBUZXN0cworCitCYWNrcG9ydGVkIHRlc3QgZm9yIHRoZSB0aW1laXQgbW9kdWxlLgorCisuLgorCisuLiBicG86IDIyOTQzCisuLiBkYXRlOiA5NTA0CisuLiBub25jZTogdDBNVzNBCisuLiBzZWN0aW9uOiBUZXN0cworCitic2RkYiB0ZXN0cyBhcmUgbG9jYWxlIGluZGVwZW5kZW5kIG5vdy4KKworLi4KKworLi4gYnBvOiAyMzU4MworLi4gZGF0ZTogOTUwMworLi4gbm9uY2U6IEFwSVJMNQorLi4gc2VjdGlvbjogSURMRQorCitGaXhlZCB3cml0aW5nIHVuaWNvZGUgdG8gc3RhbmRhcmQgb3V0cHV0IHN0cmVhbSBpbiBJRExFLgorCisuLgorCisuLiBicG86IDIwNTc3CisuLiBkYXRlOiA5NTAyCisuLiBub25jZTogWTcxSU1qCisuLiBzZWN0aW9uOiBJRExFCisKK0NvbmZpZ3VyYXRpb24gb2YgdGhlIG1heCBsaW5lIGxlbmd0aCBmb3IgdGhlIEZvcm1hdFBhcmFncmFwaCBleHRlbnNpb24gaGFzCitiZWVuIG1vdmVkIGZyb20gdGhlIEdlbmVyYWwgdGFiIG9mIHRoZSBJZGxlIHByZWZlcmVuY2VzIGRpYWxvZyB0byB0aGUKK0Zvcm1hdFBhcmFncmFwaCB0YWIgb2YgdGhlIENvbmZpZyBFeHRlbnNpb25zIGRpYWxvZy4gUGF0Y2ggYnkgVGFsIEVpbmF0LgorCisuLgorCisuLiBicG86IDE2ODkzCisuLiBkYXRlOiA5NTAxCisuLiBub25jZTogSmZIQUE0CisuLiBzZWN0aW9uOiBJRExFCisKK1VwZGF0ZSBJZGxlIGRvYyBjaGFwdGVyIHRvIG1hdGNoIGN1cnJlbnQgSWRsZSBhbmQgYWRkIG5ldyBpbmZvcm1hdGlvbi4KKworLi4KKworLi4gYnBvOiAyMzE4MAorLi4gZGF0ZTogOTUwMAorLi4gbm9uY2U6IGNFXzg5RgorLi4gc2VjdGlvbjogSURMRQorCitSZW5hbWUgSURMRSAiV2luZG93cyIgbWVudSBpdGVtIHRvICJXaW5kb3ciLiBQYXRjaCBieSBBbCBTd2VpZ2FydC4KKworLi4KKworLi4gYnBvOiAxNTUwNgorLi4gZGF0ZTogOTQ5OQorLi4gbm9uY2U6IG5oOEtsUgorLi4gc2VjdGlvbjogQnVpbGQKKworVXNlIHN0YW5kYXJkIFBLR19QUk9HX1BLR19DT05GSUcgYXV0b2NvbmYgbWFjcm8gaW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCisKKy4uCisKKy4uIGJwbzogMjMwMzIKKy4uIGRhdGU6IDk0OTgKKy4uIG5vbmNlOiBGOGZpSWwKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeCBpbnN0YWxsZXIgYnVpbGQgZmFpbHVyZXMgb24gT1MgWCAxMC40IFRpZ2VyIGJ5IGRpc2FibGluZyBhc3NlbWJseSBjb2RlCitpbiB0aGUgT3BlblNTTCBidWlsZC4KKworLi4KKworLi4gYnBvOiAyMzY4NgorLi4gZGF0ZTogOTQ5NworLi4gbm9uY2U6IFFaQnN2aAorLi4gc2VjdGlvbjogQnVpbGQKKworVXBkYXRlIE9TIFggMTAuNSBpbnN0YWxsZXIgYW5kIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yYS4KKworLi4KKworLi4gYnBvOiAyMzk5OAorLi4gZGF0ZTogOTQ5NgorLi4gbm9uY2U6IHo3bWxMVworLi4gc2VjdGlvbjogQyBBUEkKKworUHlJbXBvcnRfUmVJbml0TG9jaygpIG5vdyBjaGVja3MgZm9yIGxvY2sgYWxsb2NhdGlvbiBlcnJvcgorCisuLgorCisuLiBicG86IDIyMDc5CisuLiBkYXRlOiA5NDk1CisuLiBub25jZTogemhzMnFNCisuLiBzZWN0aW9uOiBDIEFQSQorCitQeVR5cGVfUmVhZHkoKSBub3cgY2hlY2tzIHRoYXQgc3RhdGljYWxseSBhbGxvY2F0ZWQgdHlwZSBoYXMgbm8gZHluYW1pY2FsbHkKK2FsbG9jYXRlZCBiYXNlcy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy4xMS5yc3QgYi9NaXNjL05FV1MuZC8yLjcuMTEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiOGZkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC8yLjcuMTEucnN0CkBAIC0wLDAgKzEsOCBAQAorLi4gYnBvOiAyNTYyNAorLi4gZGF0ZTogOTcwMgorLi4gbm9uY2U6IGVkLWZNMAorLi4gcmVsZWFzZSBkYXRlOiAyMDE1LTEyLTA1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ppcEZpbGUgbm93IGFsd2F5cyB3cml0ZXMgYSBaSVBfU1RPUkVEIGhlYWRlciBmb3IgZGlyZWN0b3J5IGVudHJpZXMuICBQYXRjaAorYnkgRGluZ3l1YW4gV2FuZy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy4xMXJjMS5yc3QgYi9NaXNjL05FV1MuZC8yLjcuMTFyYzEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiYTMxMzIKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC8yLjcuMTFyYzEucnN0CkBAIC0wLDAgKzEsMTEyNyBAQAorLi4gYnBvOiAyNTY3OAorLi4gZGF0ZTogOTcwMQorLi4gbm9uY2U6IGFPQ3M0eQorLi4gcmVsZWFzZSBkYXRlOiAyMDE1LTExLTIxCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBdm9pZCBidWZmZXIgb3ZlcnJlYWRzIHdoZW4gaW50KCksIGxvbmcoKSwgZmxvYXQoKSwgYW5kIGNvbXBpbGUoKSBhcmUgcGFzc2VkCitidWZmZXIgb2JqZWN0cy4gIFRoZXNlIG9iamVjdHMgYXJlIG5vdCBuZWNlc3NhcmlseSB0ZXJtaW5hdGVkIGJ5IGEgbnVsbAorYnl0ZSwgYnV0IHRoZSBmdW5jdGlvbnMgYXNzdW1lZCB0aGV5IHdlcmUuCisKKy4uCisKKy4uIGJwbzogMjUzODgKKy4uIGRhdGU6IDk3MDAKKy4uIG5vbmNlOiBZbDRIUkwKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIHRva2VuaXplciBoYW5nIHdoZW4gcHJvY2Vzc2luZyB1bmRlY29kYWJsZSBzb3VyY2UgY29kZSB3aXRoIGEgbnVsbAorYnl0ZS4KKworLi4KKworLi4gYnBvOiAyMjk5NQorLi4gZGF0ZTogOTY5OQorLi4gbm9uY2U6IDkwa3B1UAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBvZiBfX3JlZHVjZV9fIGFuZCBfX3JlZHVjZV9leF9fIG5vdyByZWplY3RzIGJ1aWx0aW4KK3R5cGVzIHdpdGggbm90IGRlZmluZWQgX19uZXdfXy4KKworLi4KKworLi4gYnBvOiA3MjY3CisuLiBkYXRlOiA5Njk4CisuLiBub25jZTogZWplX2s0CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitmb3JtYXQoaW50LCAnYycpIG5vdyByYWlzZXMgT3ZlcmZsb3dFcnJvciB3aGVuIHRoZSBhcmd1bWVudCBpcyBub3QgaW4KK3JhbmdlKDAsIDI1NikuCisKKy4uCisKKy4uIGJwbzogMjQ4MDYKKy4uIGRhdGU6IDk2OTcKKy4uIG5vbmNlOiBOYjB6blQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1ByZXZlbnQgYnVpbHRpbiB0eXBlcyB0aGF0IGFyZSBub3QgYWxsb3dlZCB0byBiZSBzdWJjbGFzc2VkIGZyb20gYmVpbmcKK3N1YmNsYXNzZWQgdGhyb3VnaCBtdWx0aXBsZSBpbmhlcml0YW5jZS4KKworLi4KKworLi4gYnBvOiAyNDg0OAorLi4gZGF0ZTogOTY5NgorLi4gbm9uY2U6IEhsVVN1eQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgYSBudW1iZXIgb2YgYnVncyBpbiBVVEYtNyBkZWNvZGluZyBvZiBtaXNmb3JtZWQgZGF0YS4KKworLi4KKworLi4gYnBvOiAyNTAwMworLi4gZGF0ZTogOTY5NQorLi4gbm9uY2U6IC1iZHhPbAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworb3MudXJhbmRvbSgpIGRvZXNuJ3QgdXNlIGdldGVudHJvcHkoKSBvbiBTb2xhcmlzIGJlY2F1c2UgZ2V0ZW50cm9weSgpIGlzCitibG9ja2luZywgd2hlcmVhcyBvcy51cmFuZG9tKCkgc2hvdWxkIG5vdCBibG9jay4gZ2V0ZW50cm9weSgpIGlzIHN1cHBvcnRlZAorc2luY2UgU29sYXJpcyAxMS4zLgorCisuLgorCisuLiBicG86IDIxMTY3CisuLiBkYXRlOiA5Njk0CisuLiBub25jZTogdW9tLURxCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitOQU4gb3BlcmF0aW9ucyBhcmUgbm93IGhhbmRsZWQgY29ycmVjdGx5IHdoZW4gcHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggSUNDCitldmVuIGlmIC1mcC1tb2RlbCBzdHJpY3QgaXMgbm90IHNwZWNpZmllZC4KKworLi4KKworLi4gYnBvOiAyNDQ2NworLi4gZGF0ZTogOTY5MworLi4gbm9uY2U6IEJBSjgwLQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgcG9zc2libGUgYnVmZmVyIG92ZXItcmVhZCBpbiBieXRlYXJyYXkuIFRoZSBieXRlYXJyYXkgb2JqZWN0IG5vdworYWx3YXlzIGFsbG9jYXRlcyBwbGFjZSBmb3IgdHJhaWxpbmcgbnVsbCBieXRlIGFuZCBpdCdzIGJ1ZmZlciBub3cgaXMgYWx3YXlzCitudWxsLXRlcm1pbmF0ZWQuCisKKy4uCisKKy4uIGJwbzogMTk1NDMKKy4uIGRhdGU6IDk2OTIKKy4uIG5vbmNlOiBPVDdKTWUKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2VuY29kZSgpIGFuZCBkZWNvZGUoKSBtZXRob2RzIGFuZCBjb25zdHJ1Y3RvcnMgb2Ygc3RyLCB1bmljb2RlIGFuZCBieXRlYXJyYXkKK2NsYXNzZXMgbm93IGVtaXQgZGVwcmVjYXRpb24gd2FybmluZyBmb3Iga25vd24gbm9uLXRleHQgZW5jb2RpbmdzIHdoZW4KK1B5dGhvbiBpcyByYW4gd2l0aCB0aGUgLTMgb3B0aW9uLgorCisuLgorCisuLiBicG86IDI0MTE1CisuLiBkYXRlOiA5NjkxCisuLiBub25jZTogeTllX01PCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitVcGRhdGUgdXNlcyBvZiBQeU9iamVjdF9Jc1RydWUoKSwgUHlPYmplY3RfTm90KCksIFB5T2JqZWN0X0lzSW5zdGFuY2UoKSwKK1B5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCgpIGFuZCBfUHlEaWN0X0NvbnRhaW5zKCkgdG8gY2hlY2sgZm9yIGFuZCBoYW5kbGUKK2Vycm9ycyBjb3JyZWN0bHkuCisKKy4uCisKKy4uIGJwbzogNDc1MworLi4gZGF0ZTogOTY5MAorLi4gbm9uY2U6IG83anBZZgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworT24gY29tcGlsZXJzIHdoZXJlIGl0IGlzIHN1cHBvcnRlZCwgdXNlICJjb21wdXRlZCBnb3RvcyIgZm9yIGJ5dGVjb2RlCitkaXNwYXRjaCBpbiB0aGUgaW50ZXJwcmV0ZXIuIFRoaXMgaW1wcm92ZXMgaW50ZXJwcmV0YXRpb24gcGVyZm9ybWFuY2UuCisKKy4uCisKKy4uIGJwbzogMjI5MzkKKy4uIGRhdGU6IDk2ODkKKy4uIG5vbmNlOiBnckJNelYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIGludGVnZXIgb3ZlcmZsb3cgaW4gaXRlcmF0b3Igb2JqZWN0LiAgT3JpZ2luYWwgcGF0Y2ggYnkgQ2xlbWVudAorUm91YXVsdC4KKworLi4KKworLi4gYnBvOiAyNDEwMgorLi4gZGF0ZTogOTY4OAorLi4gbm9uY2U6IDlUNmgzbQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgZXhjZXB0aW9uIHR5cGUgY2hlY2tpbmcgaW4gc3RhbmRhcmQgZXJyb3IgaGFuZGxlcnMuCisKKy4uCisKKy4uIGJwbzogMTAxMjgKKy4uIGRhdGU6IDk2ODcKKy4uIG5vbmNlOiAwcFJLQ2YKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYmFja3BvcnQgaXNzdWUgIzEwODQ1J3MgbWl0aWdhdGlvbiBvZiBpbmNvbXBhdGliaWxpdGllcyBiZXR3ZWVuIHRoZQorbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSBhbmQgZGlyZWN0b3J5IGFuZCB6aXBmaWxlIGV4ZWN1dGlvbi4gTXVsdGlwcm9jZXNzaW5nCitvbiBXaW5kb3dzIHdpbGwgbm93IGF1dG9tYXRpY2FsbHkgc2tpcCByZXJ1bm5pbmcgX19tYWluX18gaW4gc3Bhd25lZAorcHJvY2Vzc2VzLCByYXRoZXIgdGhhbiBmYWlsaW5nIHdpdGggQXNzZXJ0aW9uRXJyb3IuCisKKy4uCisKKy4uIGJwbzogMjU1NzgKKy4uIGRhdGU6IDk2ODYKKy4uIG5vbmNlOiBHNlMtZnQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IChhbm90aGVyKSBtZW1vcnkgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcigpLgorCisuLgorCisuLiBicG86IDI1NTkwCisuLiBkYXRlOiA5Njg1CisuLiBub25jZTogYUN0LXlXCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHRoZSBSZWFkbGluZSBjb21wbGV0ZXIsIG9ubHkgY2FsbCBnZXRhdHRyKCkgb25jZSBwZXIgYXR0cmlidXRlLgorCisuLgorCisuLiBicG86IDI1NTMwCisuLiBkYXRlOiA5Njg0CisuLiBub25jZTogaERGa3d1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Rpc2FibGUgdGhlIHZ1bG5lcmFibGUgU1NMdjMgcHJvdG9jb2wgYnkgZGVmYXVsdCB3aGVuIGNyZWF0aW5nCitzc2wuU1NMQ29udGV4dC4KKworLi4KKworLi4gYnBvOiAyNTU2OQorLi4gZGF0ZTogOTY4MworLi4gbm9uY2U6IENmdlFqSworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggbWVtb3J5IGxlYWsgaW4gU1NMU29ja2V0LmdldHBlZXJjZXJ0KCkuCisKKy4uCisKKy4uIGJwbzogNzc1OQorLi4gZGF0ZTogOTY4MgorLi4gbm9uY2U6IGE3MnFBYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aGUgbWhsaWIgbW9kdWxlIG9uIGZpbGVzeXN0ZW1zIHRoYXQgZG9lc24ndCBzdXBwb3J0IGxpbmsgY291bnRpbmcgZm9yCitkaXJlY3Rvcmllcy4KKworLi4KKworLi4gYnBvOiA4OTI5MDIKKy4uIGRhdGU6IDk2ODEKKy4uIG5vbmNlOiBWX2tNd3QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgcGlja2xpbmcgcmVjdXJzaXZlIG9iamVjdHMuCisKKy4uCisKKy4uIGJwbzogMTgwMTAKKy4uIGRhdGU6IDk2ODAKKy4uIG5vbmNlOiBwSGNqbnAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBweWRvYyBHVUkncyBzZWFyY2ggZnVuY3Rpb24gdG8gaGFuZGxlIGV4Y2VwdGlvbnMgZnJvbSBpbXBvcnRpbmcKK3BhY2thZ2VzLgorCisuLgorCisuLiBicG86IDI1NTE1CisuLiBkYXRlOiA5Njc5CisuLiBub25jZTogZlFzeVlHCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Fsd2F5cyB1c2Ugb3MudXJhbmRvbSBhcyBhIHNvdXJjZSBvZiByYW5kb21uZXNzIGluIHV1aWQudXVpZDQuCisKKy4uCisKKy4uIGJwbzogMjE4MjcKKy4uIGRhdGU6IDk2NzgKKy4uIG5vbmNlOiBrMm9yZVIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgdGV4dHdyYXAuZGVkZW50KCkgZm9yIHRoZSBjYXNlIHdoZW4gbGFyZ2VzdCBjb21tb24gd2hpdGVzcGFjZSBpcyBhCitzdWJzdHJpbmcgb2Ygc21hbGxlc3QgbGVhZGluZyB3aGl0ZXNwYWNlLiBCYXNlZCBvbiBwYXRjaCBieSBSb2JlcnQgTGkuCisKKy4uCisKKy4uIGJwbzogMjE3MDkKKy4uIGRhdGU6IDk2NzcKKy4uIG5vbmNlOiBoaUFUT0sKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBsb2dnaW5nIG1vZHVsZSB0byBub3QgZGVwZW5kIHVwb24gX19maWxlX18gYmVpbmcgc2V0IHByb3Blcmx5IHRvIGdldAordGhlIGZpbGVuYW1lIG9mIGl0cyBjYWxsZXIgZnJvbSB0aGUgc3RhY2suICBUaGlzIGFsbG93cyBpdCB0byB3b3JrIGlmIHJ1biBpbgorYSBmcm96ZW4gb3IgZW1iZWRkZWQgZW52aXJvbm1lbnQgd2hlcmUgdGhlIG1vZHVsZSdzIC5fX2ZpbGVfXyBhdHRyaWJ1dGUgZG9lcworbm90IG1hdGNoIGl0cyBjb2RlIG9iamVjdCdzIC5jb19maWxlbmFtZS4KKworLi4KKworLi4gYnBvOiAyNTMxOQorLi4gZGF0ZTogOTY3NgorLi4gbm9uY2U6IGl5dWdsdgorLi4gc2VjdGlvbjogTGlicmFyeQorCitXaGVuIHRocmVhZGluZy5FdmVudCBpcyByZWluaXRpYWxpemVkLCB0aGUgdW5kZXJseWluZyBjb25kaXRpb24gc2hvdWxkIHVzZSBhCityZWd1bGFyIGxvY2sgcmF0aGVyIHRoYW4gYSByZWN1cnNpdmUgbG9jay4KKworLi4KKworLi4gYnBvOiAyNTIzMgorLi4gZGF0ZTogOTY3NQorLi4gbm9uY2U6IEtoS2pDRQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggQ0dJUmVxdWVzdEhhbmRsZXIgdG8gc3BsaXQgdGhlIHF1ZXJ5IGZyb20gdGhlIFVSTCBhdCB0aGUgZmlyc3QgcXVlc3Rpb24KK21hcmsgKD8pIHJhdGhlciB0aGFuIHRoZSBsYXN0LiBQYXRjaCBmcm9tIFhpYW5nIFpoYW5nLgorCisuLgorCisuLiBicG86IDI0NjU3CisuLiBkYXRlOiA5Njc0CisuLiBub25jZTogaDJBZzd5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ByZXZlbnQgQ0dJUmVxdWVzdEhhbmRsZXIgZnJvbSBjb2xsYXBzaW5nIHNsYXNoZXMgaW4gdGhlIHF1ZXJ5IHBhcnQgb2YgdGhlCitVUkwgYXMgaWYgaXQgd2VyZSBhIHBhdGguIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCisKKy4uCisKKy4uIGJwbzogMjI5NTgKKy4uIGRhdGU6IDk2NzMKKy4uIG5vbmNlOiAwNHdjYTEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29uc3RydWN0b3IgYW5kIHVwZGF0ZSBtZXRob2Qgb2Ygd2Vha3JlZi5XZWFrVmFsdWVEaWN0aW9uYXJ5IG5vdyBhY2NlcHQgdGhlCitzZWxmIGtleXdvcmQgYXJndW1lbnQuCisKKy4uCisKKy4uIGJwbzogMjI2MDkKKy4uIGRhdGU6IDk2NzIKKy4uIG5vbmNlOiBhVENLYmsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29uc3RydWN0b3IgYW5kIHRoZSB1cGRhdGUgbWV0aG9kIG9mIGNvbGxlY3Rpb25zLlVzZXJEaWN0IG5vdyBhY2NlcHQgdGhlCitzZWxmIGtleXdvcmQgYXJndW1lbnQuCisKKy4uCisKKy4uIGJwbzogMjUyMDMKKy4uIGRhdGU6IDk2NzEKKy4uIG5vbmNlOiBJZ0RFYnQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRmFpbGVkIHJlYWRsaW5lLnNldF9jb21wbGV0ZXJfZGVsaW1zKCkgbm8gbG9uZ2VyIGxlZnQgdGhlIG1vZHVsZSBpbgoraW5jb25zaXN0ZW50IHN0YXRlLgorCisuLgorCisuLiBicG86IDE5MTQzCisuLiBkYXRlOiA5NjcwCisuLiBub25jZTogNzZTQlNPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3BsYXRmb3JtIG1vZHVsZSBub3cgcmVhZHMgV2luZG93cyB2ZXJzaW9uIGZyb20ga2VybmVsMzIuZGxsIHRvIGF2b2lkCitjb21wYXRpYmlsaXR5IHNoaW1zLgorCisuLgorCisuLiBicG86IDI1MTM1CisuLiBkYXRlOiA5NjY5CisuLiBub25jZTogZ1ZITnktCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgZGVxdWVfY2xlYXIoKSBzYWZlciBieSBlbXB0eWluZyB0aGUgZGVxdWUgYmVmb3JlIGNsZWFyaW5nLiBUaGlzIGhlbHBzCithdm9pZCBwb3NzaWJsZSByZWVudHJhbmN5IGlzc3Vlcy4KKworLi4KKworLi4gYnBvOiAyNDY4NAorLi4gZGF0ZTogOTY2OAorLi4gbm9uY2U6IDdld1VBTAorLi4gc2VjdGlvbjogTGlicmFyeQorCitzb2NrZXQuc29ja2V0LmdldGFkZHJpbmZvKCkgbm93IGNhbGxzIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcoKSBpbnN0ZWFkIG9mCitjYWxsaW5nIHRoZSBlbmNvZGUoKSBtZXRob2Qgb2YgdGhlIGhvc3QsIHRvIGhhbmRsZSBjb3JyZWN0bHkgY3VzdG9tIHVuaWNvZGUKK3N0cmluZyB3aXRoIGFuIGVuY29kZSgpIG1ldGhvZCB3aGljaCBkb2Vzbid0IHJldHVybiBhIGJ5dGUgc3RyaW5nLiBUaGUKK2VuY29kZXIgb2YgdGhlIElETkEgY29kZWMgaXMgbm93IGNhbGxlZCBkaXJlY3RseSBpbnN0ZWFkIG9mIGNhbGxpbmcgdGhlCitlbmNvZGUoKSBtZXRob2Qgb2YgdGhlIHN0cmluZy4KKworLi4KKworLi4gYnBvOiAyNDk4MgorLi4gZGF0ZTogOTY2NworLi4gbm9uY2U6IHNHTU1BUgorLi4gc2VjdGlvbjogTGlicmFyeQorCitzaHV0aWwubWFrZV9hcmNoaXZlKCkgd2l0aCB0aGUgInppcCIgZm9ybWF0IG5vdyBhZGRzIGVudHJpZXMgZm9yIGRpcmVjdG9yaWVzCisoaW5jbHVkaW5nIGVtcHR5IGRpcmVjdG9yaWVzKSBpbiBaSVAgZmlsZS4KKworLi4KKworLi4gYnBvOiAxNzg0OQorLi4gZGF0ZTogOTY2NgorLi4gbm9uY2U6IHByd3ZHWQorLi4gc2VjdGlvbjogTGlicmFyeQorCitSYWlzZSBhIHNlbnNpYmxlIGV4Y2VwdGlvbiBpZiBhbiBpbnZhbGlkIHJlc3BvbnNlIGlzIHJlY2VpdmVkIGZvciBhIEhUVFAKK3R1bm5lbCByZXF1ZXN0LCBhcyBzZWVuIHdpdGggc29tZSBzZXJ2ZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgdHVubmVsbGluZy4KK0luaXRpYWwgcGF0Y2ggZnJvbSBDb3J5IEJlbmZpZWxkLgorCisuLgorCisuLiBicG86IDE2MTgwCisuLiBkYXRlOiA5NjY1CisuLiBub25jZTogNklVY05TCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0V4aXQgcGRiIGlmIGZpbGUgaGFzIHN5bnRheCBlcnJvciwgaW5zdGVhZCBvZiB0cmFwcGluZyB1c2VyIGluIGFuIGluZmluaXRlCitsb29wLiAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCisKKy4uCisKKy4uIGJwbzogMjI4MTIKKy4uIGRhdGU6IDk2NjQKKy4uIG5vbmNlOiBrTENGMEcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHVuaXR0ZXN0IGRpc2NvdmVyeSBleGFtcGxlcy4gUGF0Y2ggZnJvbSBQYW0gTWNBJ051bHR5LgorCisuLgorCisuLiBicG86IDI0NjM0CisuLiBkYXRlOiA5NjYzCisuLiBub25jZTogN2JuVmdyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ltcG9ydGluZyB1dWlkIHNob3VsZCBub3QgdHJ5IHRvIGxvYWQgbGliYyBvbiBXaW5kb3dzCisKKy4uCisKKy4uIGJwbzogMjM2NTIKKy4uIGRhdGU6IDk2NjIKKy4uIG5vbmNlOiBEZFpSU3IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBpdCBwb3NzaWJsZSB0byBjb21waWxlIHRoZSBzZWxlY3QgbW9kdWxlIGFnYWluc3QgdGhlIGxpYmMgaGVhZGVycyBmcm9tCit0aGUgTGludXggU3RhbmRhcmQgQmFzZSwgd2hpY2ggZG8gbm90IGluY2x1ZGUgc29tZSBFUE9MTCBtYWNyb3MuICBJbml0aWFsCitwYXRjaCBieSBNYXR0IEZyYW5rLgorCisuLgorCisuLiBicG86IDE1MTM4CisuLiBkYXRlOiA5NjYxCisuLiBub25jZTogUFhqN21qCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NwZWVkIHVwIGJhc2U2NC51cmxzYWZlX2I2NHtlbixkZX1jb2RlIGNvbnNpZGVyYWJseS4KKworLi4KKworLi4gYnBvOiAyMzMxOQorLi4gZGF0ZTogOTY2MAorLi4gbm9uY2U6IEZYeVVILQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggY3R5cGVzLkJpZ0VuZGlhblN0cnVjdHVyZSwgc3dhcCBjb3JyZWN0bHkgYnl0ZXMuIFBhdGNoIHdyaXR0ZW4gYnkKK01hdHRoaWV1IEdhdXRpZXIuCisKKy4uCisKKy4uIGJwbzogMjMyNTQKKy4uIGRhdGU6IDk2NTkKKy4uIG5vbmNlOiB6Tml5MVgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRG9jdW1lbnQgaG93IHRvIGNsb3NlIHRoZSBUQ1BTZXJ2ZXIgbGlzdGVuaW5nIHNvY2tldC4gUGF0Y2ggZnJvbSBNYXJ0aW4KK1BhbnRlci4KKworLi4KKworLi4gYnBvOiAxNzUyNworLi4gZGF0ZTogOTY1OAorLi4gbm9uY2U6IHZlOWZ5dworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgUEFUQ0ggdG8gd3NnaXJlZi52YWxpZGF0b3IuIFBhdGNoIGZyb20gTHVjYSBTYmFyZGVsbGEuCisKKy4uCisKKy4uIGJwbzogMjQ2MTMKKy4uIGRhdGU6IDk2NTcKKy4uIG5vbmNlOiBRWnJkX1AKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ2FsbGluZyBhcnJheS5mcm9tc3RyaW5nKCkgd2l0aCBzZWxmIGlzIG5vIGxvbmdlciBhbGxvd2VkIHRvIHByZXZlbnQgdGhlCit1c2UtYWZ0ZXItZnJlZSBlcnJvci4gIFBhdGNoIGJ5IEpvaG4gTGVpdGNoLgorCisuLgorCisuLiBicG86IDI0NzA4CisuLiBkYXRlOiA5NjU2CisuLiBub25jZTogV0laV2J1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIHN0cm9wLnJlcGxhY2UoKS4KKworLi4KKworLi4gYnBvOiAyNDYyMAorLi4gZGF0ZTogOTY1NQorLi4gbm9uY2U6IHJybnhCLQorLi4gc2VjdGlvbjogTGlicmFyeQorCitSYW5kb20uc2V0c3RhdGUoKSBub3cgdmFsaWRhdGVzIHRoZSB2YWx1ZSBvZiBzdGF0ZSBsYXN0IGVsZW1lbnQuCisKKy4uCisKKy4uIGJwbzogMTM5MzgKKy4uIGRhdGU6IDk2NTQKKy4uIG5vbmNlOiBlNU5TRTEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworMnRvMyBjb252ZXJ0cyBTdHJpbmdUeXBlcyB0byBhIHR1cGxlLiBQYXRjaCBmcm9tIE1hcmsgSGFtbW9uZC4KKworLi4KKworLi4gYnBvOiAyNDYxMQorLi4gZGF0ZTogOTY1MworLi4gbm9uY2U6IF9LTnM4ZAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBjb21waWxpbmcgdGhlIHBvc2l4IG1vZHVsZSBvbiBub24tV2luZG93cyBwbGF0Zm9ybXMgd2l0aG91dCBta25vZCgpIG9yCittYWtlZGV2KCkgKGUuZy4gb24gVW5peHdhcmUpLgorCisuLgorCisuLiBicG86IDE4Njg0CisuLiBkYXRlOiA5NjUyCisuLiBub25jZTogUzJlczBGCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHJlYWRpbmcgb3V0IG9mIHRoZSBidWZmZXIgaW4gdGhlIHJlIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAyNDI1OQorLi4gZGF0ZTogOTY1MQorLi4gbm9uY2U6IHZNQWkxQQorLi4gc2VjdGlvbjogTGlicmFyeQorCit0YXJmaWxlIG5vdyByYWlzZXMgYSBSZWFkRXJyb3IgaWYgYW4gYXJjaGl2ZSBpcyB0cnVuY2F0ZWQgaW5zaWRlIGEgZGF0YQorc2VnbWVudC4KKworLi4KKworLi4gYnBvOiAyNDUxNAorLi4gZGF0ZTogOTY1MAorLi4gbm9uY2U6IF94UmIycgorLi4gc2VjdGlvbjogTGlicmFyeQorCit0YXJmaWxlIG5vdyB0b2xlcmF0ZXMgbnVtYmVyIGZpZWxkcyBjb25zaXN0aW5nIG9mIG9ubHkgd2hpdGVzcGFjZS4KKworLi4KKworLi4gYnBvOiAyMDM4NworLi4gZGF0ZTogOTY0OQorLi4gbm9uY2U6IGFBYldiUQorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZXN0b3JlIHNlbWFudGljIHJvdW5kLXRyaXAgY29ycmVjdG5lc3MgaW4gdG9rZW5pemUvdW50b2tlbml6ZSBmb3IKK3RhYi1pbmRlbnRlZCBibG9ja3MuCisKKy4uCisKKy4uIGJwbzogMjQ0NTYKKy4uIGRhdGU6IDk2NDgKKy4uIG5vbmNlOiBzd2tKZ1MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgcG9zc2libGUgYnVmZmVyIG92ZXItcmVhZCBpbiBhZHBjbTJsaW4oKSBhbmQgbGluMmFkcGNtKCkgZnVuY3Rpb25zIG9mCit0aGUgYXVkaW9vcCBtb2R1bGUuICBGaXhlZCBTeXN0ZW1FcnJvciB3aGVuIHRoZSBzdGF0ZSBpcyBub3QgYSB0dXBsZS4gIEZpeGVkCitwb3NzaWJsZSBtZW1vcnkgbGVhay4KKworLi4KKworLi4gYnBvOiAyNDQ4MQorLi4gZGF0ZTogOTY0NworLi4gbm9uY2U6IEVzSlRRNworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcG9zc2libGUgbWVtb3J5IGNvcnJ1cHRpb24gd2l0aCBsYXJnZSBwcm9maWxlciBpbmZvIHN0cmluZ3MgaW4gaG90c2hvdC4KKworLi4KKworLi4gYnBvOiAyNDQ4OQorLi4gZGF0ZTogOTY0NgorLi4gbm9uY2U6IEdKbk1jVworLi4gc2VjdGlvbjogTGlicmFyeQorCitlbnN1cmUgYSBwcmV2aW91c2x5IHNldCBDIGVycm5vIGRvZXNuJ3QgZGlzdHVyYiBjbWF0aC5wb2xhcigpLgorCisuLgorCisuLiBicG86IDE5NTQzCisuLiBkYXRlOiA5NjQ1CisuLiBub25jZTogOFh4QkRqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2lvLlRleHRJT1dyYXBwZXIgKGFuZCBoZW5jZSBpby5vcGVuKCkpIG5vdyB1c2VzIHRoZSBpbnRlcm5hbCBjb2RlYyBtYXJraW5nCitzeXN0ZW0gYWRkZWQgdG8gZW1pdCBkZXByZWNhdGlvbiB3YXJuaW5nIGZvciBrbm93biBub24tdGV4dCBlbmNvZGluZ3MgYXQKK3N0cmVhbSBjb25zdHJ1Y3Rpb24gdGltZSB3aGVuIFB5dGhvbiBpcyByYW4gd2l0aCB0aGUgLTMgb3B0aW9uLgorCisuLgorCisuLiBicG86IDI0MjY0CisuLiBkYXRlOiA5NjQ0CisuLiBub25jZTogM3pNYzM4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGJ1ZmZlciBvdmVyZmxvdyBpbiB0aGUgaW1hZ2VvcCBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogNTYzMworLi4gZGF0ZTogOTY0MworLi4gbm9uY2U6IEpOektacQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aW1laXQgd2hlbiB0aGUgc3RhdGVtZW50IGlzIGEgc3RyaW5nIGFuZCB0aGUgc2V0dXAgaXMgbm90LgorCisuLgorCisuLiBicG86IDI0MzI2CisuLiBkYXRlOiA5NjQyCisuLiBub25jZTogNHRfNkd5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGF1ZGlvb3AucmF0ZWN2KCkgd2l0aCBub24tZGVmYXVsdCB3ZWlnaHRCIGFyZ3VtZW50LiBPcmlnaW5hbCBwYXRjaCBieQorRGF2aWQgTW9vcmUuCisKKy4uCisKKy4uIGJwbzogMjIwOTUKKy4uIGRhdGU6IDk2NDEKKy4uIG5vbmNlOiBpSVN6eE0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgSFRUUENvbm5lY3Rpb24uc2V0X3R1bm5lbCB3aXRoIGRlZmF1bHQgcG9ydC4gIFRoZSBwb3J0IHZhbHVlIGluIHRoZQoraG9zdCBoZWFkZXIgd2FzIHNldCB0byAiTm9uZSIuICBQYXRjaCBieSBEZW1pYW4gQnJlY2h0LgorCisuLgorCisuLiBicG86IDI0MjU3CisuLiBkYXRlOiA5NjQwCisuLiBub25jZTogTF9lZnEwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHNlZ21lbnRhdGlvbiBmYXVsdCBpbiBzcWxpdGUzLlJvdyBjb25zdHJ1Y3RvciB3aXRoIGZha2VkIGN1cnNvciB0eXBlLgorCisuLgorCisuLiBicG86IDI0Mjg2CisuLiBkYXRlOiA5NjM5CisuLiBub25jZTogUVRVNjV6CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0RpY3QgdmlldyB3ZXJlIG5vdCByZWdpc3RlcmVkIHdpdGggdGhlIE1hcHBpbmdWaWV3IGFic3RyYWN0IGJhc2UgY2xhc3Nlcy4KK1RoaXMgY2F1c2VkIGtleSBhbmQgaXRlbSB2aWV3cyBpbiBPcmRlcmVkRGljdCB0byBub3QgYmUgZXF1YWwgdG8gdGhlaXIKK3JlZ3VsYXIgZGljdCBjb3VudGVycGFydHMuCisKKy4uCisKKy4uIGJwbzogMjIxMDcKKy4uIGRhdGU6IDk2MzgKKy4uIG5vbmNlOiAyRjhrNFcKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGVtcGZpbGUuZ2V0dGVtcGRpcigpIGFuZCB0ZW1wZmlsZS5ta2R0ZW1wKCkgbm93IHRyeSBhZ2FpbiB3aGVuIGEgZGlyZWN0b3J5Cit3aXRoIHRoZSBjaG9zZW4gbmFtZSBhbHJlYWR5IGV4aXN0cyBvbiBXaW5kb3dzIGFzIHdlbGwgYXMgb24gVW5peC4KK3RlbXBmaWxlLm1rc3RlbXAoKSBub3cgZmFpbHMgZWFybHkgaWYgcGFyZW50IGRpcmVjdG9yeSBpcyBub3QgdmFsaWQgKG5vdAorZXhpc3RzIG9yIGlzIGEgZmlsZSkgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiA2NTk4CisuLiBkYXRlOiA5NjM3CisuLiBub25jZTogSmRaTkR0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luY3JlYXNlZCB0aW1lIHByZWNpc2lvbiBhbmQgcmFuZG9tIG51bWJlciByYW5nZSBpbiBlbWFpbC51dGlscy5tYWtlX21zZ2lkKCkKK3RvIHN0cmVuZ3RoZW4gdGhlIHVuaXF1ZW5lc3Mgb2YgdGhlIG1lc3NhZ2UgSUQuCisKKy4uCisKKy4uIGJwbzogMjQwOTEKKy4uIGRhdGU6IDk2MzYKKy4uIG5vbmNlOiB2Qk5lVEkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgdmFyaW91cyBjcmFzaGVzIGluIGNvcm5lciBjYXNlcyBpbiBjRWxlbWVudFRyZWUuCisKKy4uCisKKy4uIGJwbzogMTUyNjcKKy4uIGRhdGU6IDk2MzUKKy4uIG5vbmNlOiB4VDY1bWMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSFRUUENvbm5lY3Rpb24ucmVxdWVzdCgpIG5vdyBpcyBjb21wYXRpYmxlIHdpdGggb2xkLXN0eWxlIGNsYXNzZXMgKHN1Y2ggYXMKK1RlbXBvcmFyeUZpbGUpLiAgT3JpZ2luYWwgcGF0Y2ggYnkgQXRzdW8gSXNoaW1vdG8uCisKKy4uCisKKy4uIGJwbzogMjAwMTQKKy4uIGRhdGU6IDk2MzQKKy4uIG5vbmNlOiBOZkhRZDEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYXJyYXkuYXJyYXkoKSBub3cgYWNjZXB0cyB1bmljb2RlIHR5cGVjb2Rlcy4gIEJhc2VkIG9uIHBhdGNoIGJ5IFZhanJhc2t5CitLb2suCisKKy4uCisKKy4uIGJwbzogMjM2MzcKKy4uIGRhdGU6IDk2MzMKKy4uIG5vbmNlOiAxeUZXQXkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU2hvd2luZyBhIHdhcm5pbmcgbm8gbG9uZ2VyIGZhaWxzIHdpdGggVW5pY29kZUVycm9yLiBGb3JtYXR0aW5nIHVuaWNvZGUKK3dhcm5pbmcgaW4gdGhlIGZpbGUgd2l0aCB0aGUgcGF0aCBjb250YWluaW5nIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIG5vIGxvbmdlcgorZmFpbHMgd2l0aCBVbmljb2RlRXJyb3IuCisKKy4uCisKKy4uIGJwbzogMjQxMzQKKy4uIGRhdGU6IDk2MzIKKy4uIG5vbmNlOiA0Y1BmaDEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmV2ZXJ0ZWQgaXNzdWUgIzI0MTM0IGNoYW5nZXMuCisKKy4uCisKKy4uIGJwbzogMTUzNDgKKy4uIGRhdGU6IDk2MzEKKy4uIG5vbmNlOiBkMUZnMDEKKy4uIHNlY3Rpb246IElETEUKKworU3RvcCB0aGUgZGVidWdnZXIgZW5naW5lIChub3JtYWxseSBpbiBhIHVzZXIgcHJvY2VzcykgYmVmb3JlIGNsb3NpbmcgdGhlCitkZWJ1Z2dlciB3aW5kb3cgKHJ1bm5pbmcgaW4gdGhlIElETEUgcHJvY2VzcykuIFRoaXMgcHJldmVudHMgdGhlCitSdW50aW1lRXJyb3JzIHRoYXQgd2VyZSBiZWluZyBjYXVnaHQgYW5kIGlnbm9yZWQuCisKKy4uCisKKy4uIGJwbzogMjQ0NTUKKy4uIGRhdGU6IDk2MzAKKy4uIG5vbmNlOiB4NllxdEUKKy4uIHNlY3Rpb246IElETEUKKworUHJldmVudCBJRExFIGZyb20gaGFuZ2luZyB3aGVuIGEpIGNsb3NpbmcgdGhlIHNoZWxsIHdoaWxlIHRoZSBkZWJ1Z2dlciBpcworYWN0aXZlICgxNTM0Nyk7IGIpIGNsb3NpbmcgdGhlIGRlYnVnZ2VyIHdpdGggdGhlIFtYXSBidXR0b24gKDE1MzQ4KTsgYW5kIGMpCithY3RpdmF0aW5nIHRoZSBkZWJ1Z2dlciB3aGVuIGFscmVhZHkgYWN0aXZlICgyNDQ1NSkuIFRoZSBwYXRjaCBieSBNYXJrCitSb3NlbWFuIGRvZXMgdGhpcyBieSBtYWtpbmcgdHdvIGNoYW5nZXMuIDEuIFN1c3BlbmQgYW5kIHJlc3VtZSB0aGUKK2d1aS5pbnRlcmFjdGlvbiBtZXRob2Qgd2l0aCB0aGUgdGNsIHZ3YWl0IG1lY2hhbmlzbSBpbnRlbmRlZCBmb3IgdGhpcworcHVycG9zZSAoaW5zdGVhZCBvZiByb290Lm1haW5sb29wICYgLnF1aXQpLiAyLiBJbiBndWkucnVuLCBhbGxvdyBhbnkKK2V4aXN0aW5nIGludGVyYWN0aW9uIHRvIHRlcm1pbmF0ZSBmaXJzdC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA5NjI5CisuLiBub25jZTogWXA5TFJZCisuLiBzZWN0aW9uOiBJRExFCisKK0NoYW5nZSAnVGhlIHByb2dyYW0nIHRvICdZb3VyIHByb2dyYW0nIGluIGFuIElETEUgJ2tpbGwgcHJvZ3JhbT8nIG1lc3NhZ2UgdG8KK21ha2UgaXQgY2xlYXJlciB0aGF0IHRoZSBwcm9ncmFtIHJlZmVycmVkIHRvIGlzIHRoZSBjdXJyZW50bHkgcnVubmluZyB1c2VyCitwcm9ncmFtLCBub3QgSURMRSBpdHNlbGYuCisKKy4uCisKKy4uIGJwbzogMjQ3NTAKKy4uIGRhdGU6IDk2MjgKKy4uIG5vbmNlOiB4Z3NpLUsKKy4uIHNlY3Rpb246IElETEUKKworSW1wcm92ZSB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgSURMRSBlZGl0b3Igd2luZG93IHN0YXR1cyBiYXIuIFBhdGNoIGJ5IE1hcmsKK1Jvc2VtYW4uCisKKy4uCisKKy4uIGJwbzogMjUzMTMKKy4uIGRhdGU6IDk2MjcKKy4uIG5vbmNlOiB4TVhIcE8KKy4uIHNlY3Rpb246IElETEUKKworQ2hhbmdlIHRoZSBoYW5kbGluZyBvZiBuZXcgYnVpbHQtaW4gdGV4dCBjb2xvciB0aGVtZXMgdG8gYmV0dGVyIGFkZHJlc3MgdGhlCitjb21wYXRpYmlsaXR5IHByb2JsZW0gaW50cm9kdWNlZCBieSB0aGUgYWRkaXRpb24gb2YgSURMRSBEYXJrLiBDb25zaXN0ZW50bHkKK3VzZSB0aGUgcmV2aXNlZCBpZGxlQ29uZi5DdXJyZW50VGhlbWUgZXZlcnl3aGVyZSBpbiBpZGxlbGliLgorCisuLgorCisuLiBicG86IDI0NzgyCisuLiBkYXRlOiA5NjI2CisuLiBub25jZTogUENzV2FkCisuLiBzZWN0aW9uOiBJRExFCisKK0V4dGVuc2lvbiBjb25maWd1cmF0aW9uIGlzIG5vdyBhIHRhYiBpbiB0aGUgSURMRSBQcmVmZXJlbmNlcyBkaWFsb2cgcmF0aGVyCit0aGFuIGEgc2VwYXJhdGUgZGlhbG9nLiAgIFRoZSBmb3JtZXIgdGFicyBhcmUgbm93IGEgc29ydGVkIGxpc3QuICBQYXRjaCBieQorTWFyayBSb3NlbWFuLgorCisuLgorCisuLiBicG86IDIyNzI2CisuLiBkYXRlOiA5NjI1CisuLiBub25jZTogeDhUMGRBCisuLiBzZWN0aW9uOiBJRExFCisKK1JlLWFjdGl2YXRlIHRoZSBjb25maWcgZGlhbG9nIGhlbHAgYnV0dG9uIHdpdGggc29tZSBjb250ZW50IGFib3V0IHRoZSBvdGhlcgorYnV0dG9ucyBhbmQgdGhlIG5ldyBJRExFIERhcmsgdGhlbWUuCisKKy4uCisKKy4uIGJwbzogMjQ4MjAKKy4uIGRhdGU6IDk2MjQKKy4uIG5vbmNlOiBURlBKaHIKKy4uIHNlY3Rpb246IElETEUKKworSURMRSBub3cgaGFzIGFuICdJRExFIERhcmsnIGJ1aWx0LWluIHRleHQgY29sb3IgdGhlbWUuIEl0IGlzIG1vcmUgb3IgbGVzcworSURMRSBDbGFzc2ljIGludmVydGVkLCB3aXRoIGEgY29iYWx0IGJsdWUgYmFja2dyb3VuZC4gU3RyaW5ncywgY29tbWVudHMsCitrZXl3b3JkcywgLi4uIGFyZSBzdGlsbCBncmVlbiwgcmVkLCBvcmFuZ2UsIC4uLiAuIFRvIHVzZSBpdCB3aXRoIElETEVzCityZWxlYXNlZCBiZWZvcmUgTm92ZW1iZXIgMjAxNSwgaGl0IHRoZSAnU2F2ZSBhcyBOZXcgQ3VzdG9tIFRoZW1lJyBidXR0b24gYW5kCitlbnRlciBhIG5ldyBuYW1lLCBzdWNoIGFzICdDdXN0b20gRGFyaycuICBUaGUgY3VzdG9tIHRoZW1lIHdpbGwgd29yayB3aXRoCithbnkgSURMRSByZWxlYXNlLCBhbmQgY2FuIGJlIG1vZGlmaWVkLgorCisuLgorCisuLiBicG86IDI1MjI0CisuLiBkYXRlOiA5NjIzCisuLiBub25jZTogNUxsd280CisuLiBzZWN0aW9uOiBJRExFCisKK1JFQURNRS50eHQgaXMgbm93IGFuIGlkbGVsaWIgaW5kZXggZm9yIElETEUgZGV2ZWxvcGVycyBhbmQgY3VyaW91cyB1c2Vycy4KK1RoZSBwcmV2aW91cyB1c2VyIGNvbnRlbnQgaXMgbm93IGluIHRoZSBJRExFIGRvYyBjaGFwdGVyLiAnSURMRScgbm93IG1lYW5zCisnSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBhbmQgTGVhcm5pbmcgRW52aXJvbm1lbnQnLgorCisuLgorCisuLiBicG86IDI0ODIwCisuLiBkYXRlOiA5NjIyCisuLiBub25jZTogWlV6OUZuCisuLiBzZWN0aW9uOiBJRExFCisKK1VzZXJzIGNhbiBub3cgc2V0IGJyZWFrcG9pbnQgY29sb3JzIGluIFNldHRpbmdzIC0+IEN1c3RvbSBIaWdobGlnaHRpbmcuCitPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy4uCisKKy4uIGJwbzogMjQ5NzIKKy4uIGRhdGU6IDk2MjEKKy4uIG5vbmNlOiB1YzB1Tm8KKy4uIHNlY3Rpb246IElETEUKKworSW5hY3RpdmUgc2VsZWN0aW9uIGJhY2tncm91bmQgbm93IG1hdGNoZXMgYWN0aXZlIHNlbGVjdGlvbiBiYWNrZ3JvdW5kLCBhcworY29uZmlndXJlZCBieSB1c2Vycywgb24gYWxsIHN5c3RlbXMuICBGb3VuZCBpdGVtcyBhcmUgbm93IGFsd2F5cyBoaWdobGlnaHRlZAorb24gV2luZG93cy4gIEluaXRpYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCisuLgorCisuLiBicG86IDI0NTcwCisuLiBkYXRlOiA5NjIwCisuLiBub25jZTogczNFa05uCisuLiBzZWN0aW9uOiBJRExFCisKK0lkbGU6IG1ha2UgY2FsbHRpcCBhbmQgY29tcGxldGlvbiBib3hlcyBhcHBlYXIgb24gTWFjcyBhZmZlY3RlZCBieSBhIHRrCityZWdyZXNzaW9uLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy4uCisKKy4uIGJwbzogMjQ5ODgKKy4uIGRhdGU6IDk2MTkKKy4uIG5vbmNlOiB0WHFxNFQKKy4uIHNlY3Rpb246IElETEUKKworSWRsZSBTY3JvbGxlZExpc3QgY29udGV4dCBtZW51cyAodXNlZCBpbiBkZWJ1Z2dlcikgbm93IHdvcmsgb24gTWFjIEFxdWEuCitQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy4uCisKKy4uIGJwbzogMjQ4MDEKKy4uIGRhdGU6IDk2MTgKKy4uIG5vbmNlOiAtYmpfT3UKKy4uIHNlY3Rpb246IElETEUKKworTWFrZSByaWdodC1jbGljayBmb3IgY29udGV4dCBtZW51IHdvcmsgb24gTWFjIEFxdWEuIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLi4KKworLi4gYnBvOiAyNTE3MworLi4gZGF0ZTogOTYxNworLi4gbm9uY2U6IEVaenJQZworLi4gc2VjdGlvbjogSURMRQorCitBc3NvY2lhdGUgdGtpbnRlciBtZXNzYWdlYm94ZXMgd2l0aCBhIHNwZWNpZmljIHdpZGdldC4gRm9yIE1hYyBPU1gsIG1ha2UKK3RoZW0gYSAnc2hlZXQnLiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCisuLgorCisuLiBicG86IDI1MTk4CisuLiBkYXRlOiA5NjE2CisuLiBub25jZTogLWpfQlY3CisuLiBzZWN0aW9uOiBJRExFCisKK0VuaGFuY2UgdGhlIGluaXRpYWwgaHRtbCB2aWV3ZXIgbm93IHVzZWQgZm9yIElkbGUgSGVscC4gKiBQcm9wZXJseSBpbmRlbnQKK2ZpeGVkLXBpdGNoIHRleHQgKHBhdGNoIGJ5IE1hcmsgUm9zZW1hbikuICogR2l2ZSBjb2RlIHNuaXBwZXQgYSB2ZXJ5CitTcGhpbngtbGlrZSBsaWdodCBibHVlaXNoLWdyYXkgYmFja2dyb3VuZC4gKiBSZS11c2UgaW5pdGlhbCB3aWR0aCBhbmQgaGVpZ2h0IHNldCBieQordXNlcnMgZm9yIHNoZWxsIGFuZCBlZGl0b3IuICogV2hlbiB0aGUgVGFibGUgb2YgQ29udGVudHMgKFRPQykgbWVudSBpcyB1c2VkLAorcHV0IHRoZSBzZWN0aW9uIGhlYWRlciBhdCB0aGUgdG9wIG9mIHRoZSBzY3JlZW4uCisKKy4uCisKKy4uIGJwbzogMjUyMjUKKy4uIGRhdGU6IDk2MTUKKy4uIG5vbmNlOiA5cHZkcTYKKy4uIHNlY3Rpb246IElETEUKKworQ29uZGVuc2UgYW5kIHJld3JpdGUgSWRsZSBkb2Mgc2VjdGlvbiBvbiB0ZXh0IGNvbG9ycy4KKworLi4KKworLi4gYnBvOiAyMTk5NQorLi4gZGF0ZTogOTYxNAorLi4gbm9uY2U6IEM1Um16eAorLi4gc2VjdGlvbjogSURMRQorCitFeHBsYWluIHNvbWUgZGlmZmVyZW5jZXMgYmV0d2VlbiBJRExFIGFuZCBjb25zb2xlIFB5dGhvbi4KKworLi4KKworLi4gYnBvOiAyMjgyMAorLi4gZGF0ZTogOTYxMworLi4gbm9uY2U6IGhpeF84WAorLi4gc2VjdGlvbjogSURMRQorCitFeHBsYWluIG5lZWQgZm9yICpwcmludCogd2hlbiBydW5uaW5nIGZpbGUgZnJvbSBJZGxlIGVkaXRvci4KKworLi4KKworLi4gYnBvOiAyNTIyNAorLi4gZGF0ZTogOTYxMgorLi4gbm9uY2U6IFVWTVlRcQorLi4gc2VjdGlvbjogSURMRQorCitEb2M6IGF1Z21lbnQgSWRsZSBmZWF0dXJlIGxpc3QgYW5kIG5vLXN1YnByb2Nlc3Mgc2VjdGlvbi4KKworLi4KKworLi4gYnBvOiAyNTIxOQorLi4gZGF0ZTogOTYxMQorLi4gbm9uY2U6IDhfOURZZworLi4gc2VjdGlvbjogSURMRQorCitVcGRhdGUgZG9jIGZvciBJZGxlIGNvbW1hbmQgbGluZSBvcHRpb25zLiBTb21lIHdlcmUgbWlzc2luZyBhbmQgbm90ZXMgd2VyZQorbm90IGNvcnJlY3QuCisKKy4uCisKKy4uIGJwbzogMjQ4NjEKKy4uIGRhdGU6IDk2MTAKKy4uIG5vbmNlOiBFY2cyeVQKKy4uIHNlY3Rpb246IElETEUKKworTW9zdCBvZiBpZGxlbGliIGlzIHByaXZhdGUgYW5kIHN1YmplY3QgdG8gY2hhbmdlLiBVc2UgaWRsZWliLmlkbGUuKiB0byBzdGFydAorSWRsZS4gU2VlIGlkbGVsaWIuX19pbml0X18uX19kb2NfXy4KKworLi4KKworLi4gYnBvOiAyNTE5OQorLi4gZGF0ZTogOTYwOQorLi4gbm9uY2U6IGloN3lZMworLi4gc2VjdGlvbjogSURMRQorCitJZGxlOiBhZGQgc3luY2hyb25pemF0aW9uIGNvbW1lbnRzIGZvciBmdXR1cmUgbWFpbnRhaW5lcnMuCisKKy4uCisKKy4uIGJwbzogMTY4OTMKKy4uIGRhdGU6IDk2MDgKKy4uIG5vbmNlOiBiWnRQZ0oKKy4uIHNlY3Rpb246IElETEUKKworUmVwbGFjZSBoZWxwLnR4dCB3aXRoIGhlbHAuaHRtbCBmb3IgSWRsZSBkb2MgZGlzcGxheS4gVGhlIG5ldworaWRsZWxpYi9oZWxwLmh0bWwgaXMgcnN0cmlwcGVkIERvYy9idWlsZC9odG1sL2xpYnJhcnkvaWRsZS5odG1sLiBJdCBsb29rcworYmV0dGVyIHRoYW4gaGVscC50eHQgYW5kIHdpbGwgYmV0dGVyIGRvY3VtZW50IElkbGUgYXMgcmVsZWFzZWQuIFRoZSB0a2ludGVyCitodG1sIHZpZXdlciB0aGF0IHdvcmtzIGZvciB0aGlzIGZpbGUgd2FzIHdyaXR0ZW4gYnkgTWFyayBSb3NlbWFuLiBUaGUgbm93Cit1bnVzZWQgRWRpdG9yV2luZG93LkhlbHBEaWFsb2cgY2xhc3MgYW5kIGhlbHQudHh0IGZpbGUgYXJlIGRlcHJlY2F0ZWQuCisKKy4uCisKKy4uIGJwbzogMjQxOTkKKy4uIGRhdGU6IDk2MDcKKy4uIG5vbmNlOiBWS25aRXYKKy4uIHNlY3Rpb246IElETEUKKworRGVwcmVjYXRlIHVudXNlZCBpZGxlbGliLmlkbGV2ZXIgd2l0aCBwb3NzaWJsZSByZW1vdmFsIGluIDMuNi4KKworLi4KKworLi4gYnBvOiAyNDc5MAorLi4gZGF0ZTogOTYwNgorLi4gbm9uY2U6IGhEMWhsagorLi4gc2VjdGlvbjogSURMRQorCitSZW1vdmUgZXh0cmFuZW91cyBjb2RlICh3aGljaCBhbHNvIGNyZWF0ZSAyICYgMyBjb25mbGljdHMpLgorCisuLgorCisuLiBicG86IDIzNjcyCisuLiBkYXRlOiA5NjA1CisuLiBub25jZTogOHRkMnNlCisuLiBzZWN0aW9uOiBJRExFCisKK0FsbG93IElkbGUgdG8gZWRpdCBhbmQgcnVuIGZpbGVzIHdpdGggYXN0cmFsIGNoYXJzIGluIG5hbWUuIFBhdGNoIGJ5IE1vaGQKK1NhbmFkIFpha2kgUml6dmkuCisKKy4uCisKKy4uIGJwbzogMjQ3NDUKKy4uIGRhdGU6IDk2MDQKKy4uIG5vbmNlOiBlZGJ6aVQKKy4uIHNlY3Rpb246IElETEUKKworSWRsZSBlZGl0b3IgZGVmYXVsdCBmb250LiBTd2l0Y2ggZnJvbSBDb3VyaWVyIHRvIHBsYXRmb3JtLXNlbnNpdGl2ZQorVGtGaXhlZEZvbnQuICBUaGlzIHNob3VsZCBub3QgYWZmZWN0IGN1cnJlbnQgY3VzdG9taXplZCBmb250IHNlbGVjdGlvbnMuICBJZgordGhlcmUgaXMgYSBwcm9ibGVtLCBlZGl0ICRIT01FLy5pZGxlcmMvY29uZmlnLW1haW4uY2ZnIGFuZCByZW1vdmUgJ2ZvbnR4eHgnCitlbnRyaWVzIGZyb20gW0VkaXRvciBXaW5kb3ddLiAgUGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCisuLgorCisuLiBicG86IDIxMTkyCisuLiBkYXRlOiA5NjAzCisuLiBub25jZTogQ2RiaXBICisuLiBzZWN0aW9uOiBJRExFCisKK0lkbGUgZWRpdG9yLiBXaGVuIGEgZmlsZSBpcyBydW4sIHB1dCBpdHMgbmFtZSBpbiB0aGUgcmVzdGFydCBiYXIuIERvIG5vdAorcHJpbnQgZmFsc2UgcHJvbXB0cy4gT3JpZ2luYWwgcGF0Y2ggYnkgQWRuYW4gVW1lci4KKworLi4KKworLi4gYnBvOiAxMzg4NAorLi4gZGF0ZTogOTYwMgorLi4gbm9uY2U6IHZWY08xRQorLi4gc2VjdGlvbjogSURMRQorCitJZGxlIG1lbnVzLiBSZW1vdmUgdGVhcm9mZiBsaW5lcy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy4uCisKKy4uIGJwbzogMTU4MDkKKy4uIGRhdGU6IDk2MDEKKy4uIG5vbmNlOiBtZmF3ZHIKKy4uIHNlY3Rpb246IElETEUKKworSURMRSBzaGVsbCBub3cgdXNlcyBsb2NhbGUgZW5jb2RpbmcgaW5zdGVhZCBvZiBMYXRpbjEgZm9yIGRlY29kaW5nIHVuaWNvZGUKK2xpdGVyYWxzLgorCisuLgorCisuLiBicG86IDI0OTUyCisuLiBkYXRlOiA5NjAwCisuLiBub25jZTogYUp2OXgxCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0NsYXJpZnkgdGhlIGRlZmF1bHQgc2l6ZSBhcmd1bWVudCBvZiBzdGFja19zaXplKCkgaW4gdGhlICJ0aHJlYWRpbmciIGFuZAorInRocmVhZCIgbW9kdWxlcy4gUGF0Y2ggZnJvbSBNYXR0aXAuCisKKy4uCisKKy4uIGJwbzogMjA3NjkKKy4uIGRhdGU6IDk1OTkKKy4uIG5vbmNlOiBaVWM5ejkKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworSW1wcm92ZSByZWxvYWQoKSBkb2NzLiBQYXRjaCBieSBEb3JpYW4gUHVsYS4KKworLi4KKworLi4gYnBvOiAyMzU4OQorLi4gZGF0ZTogOTU5OAorLi4gbm9uY2U6IHJqVTQyMQorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitSZW1vdmUgZHVwbGljYXRlIHNlbnRlbmNlIGZyb20gdGhlIEZBUS4gIFBhdGNoIGJ5IFlvbmd6aGkgUGFuLgorCisuLgorCisuLiBicG86IDIyMTU1CisuLiBkYXRlOiA5NTk3CisuLiBub25jZTogNktxNVR2CisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0FkZCBGaWxlIEhhbmRsZXJzIHN1YnNlY3Rpb24gd2l0aCBjcmVhdGVmaWxlaGFuZGxlciB0byBUa2ludGVyIGRvYy4gIFJlbW92ZQorb2Jzb2xldGUgZXhhbXBsZSBmcm9tIEZBUS4gIFBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCisKKy4uCisKKy4uIGJwbzogMjQ3NTEKKy4uIGRhdGU6IDk1OTYKKy4uIG5vbmNlOiBwTDJwYmoKKy4uIHNlY3Rpb246IFRlc3RzCisKK1doZW4gcnVubmluZyByZWdydGVzdCB3aXRoIHRoZSBgYC13YGAgY29tbWFuZCBsaW5lIG9wdGlvbiwgYSB0ZXN0IHJ1biBpcyBubworbG9uZ2VyIG1hcmtlZCBhcyBhIGZhaWx1cmUgaWYgYWxsIHRlc3RzIHN1Y2NlZWQgd2hlbiByZS1ydW4uCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTU5NQorLi4gbm9uY2U6IHllSEpLSgorLi4gc2VjdGlvbjogVGVzdHMKKworUENidWlsZFxydC5iYXQgbm93IGFjY2VwdHMgYW4gdW5saW1pdGVkIG51bWJlciBvZiBhcmd1bWVudHMgdG8gcGFzcyBhbG9uZyB0bworcmVncnRlc3QucHkuICBQcmV2aW91c2x5IHRoZXJlIHdhcyBhIGxpbWl0IG9mIDkuCisKKy4uCisKKy4uIGJwbzogMjQ5MTUKKy4uIGRhdGU6IDk1OTQKKy4uIG5vbmNlOiBOOU1yUVkKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1doZW4gZG9pbmcgYSBQR08gYnVpbGQsIHRoZSB0ZXN0IHN1aXRlIGlzIG5vdyB1c2VkIGluc3RlYWQgb2YgcHliZW5jaDsgQ2xhbmcKK3N1cHBvcnQgd2FzIGFsc28gYWRkZWQgYXMgcGFydCBvZmYgdGhpcyB3b3JrLiBJbml0aWFsIHBhdGNoIGJ5IEFsZWNzYW5kcnUKK1BhdHJhc2N1IG9mIEludGVsLgorCisuLgorCisuLiBicG86IDI0OTg2CisuLiBkYXRlOiA5NTkzCisuLiBub25jZTogMVd5WGVVCisuLiBzZWN0aW9uOiBCdWlsZAorCitJdCBpcyBub3cgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIG9uIFdpbmRvd3Mgd2l0aG91dCBlcnJvcnMgd2hlbiBleHRlcm5hbAorbGlicmFyaWVzIGFyZSBub3QgYXZhaWxhYmxlLgorCisuLgorCisuLiBicG86IDI0NTA4CisuLiBkYXRlOiA5NTkyCisuLiBub25jZTogbTgtTGE4CisuLiBzZWN0aW9uOiBCdWlsZAorCitCYWNrcG9ydGVkIHRoZSBNU0J1aWxkIHByb2plY3QgZmlsZXMgZnJvbSBQeXRob24gMy41LiAgVGhlIGJhY2twb3J0ZWQgZmlsZXMKK3JlcGxhY2UgdGhlIG9sZCBwcm9qZWN0IGZpbGVzIGluIFBDYnVpbGQ7IHRoZSBvbGQgZmlsZXMgbW92ZWQgdG8gUEMvVlM5LjAKK2FuZCByZW1haW4gc3VwcG9ydGVkLgorCisuLgorCisuLiBicG86IDI0NjAzCisuLiBkYXRlOiA5NTkxCisuLiBub25jZTogUHlIeUY1CisuLiBzZWN0aW9uOiBCdWlsZAorCitVcGRhdGUgV2luZG93cyBidWlsZHMgYW5kIE9TIFggMTAuNSBpbnN0YWxsZXIgdG8gdXNlIE9wZW5TU0wgMS4wLjJkLgorCisuLgorCisuLiBicG86IDI1MDIyCisuLiBkYXRlOiA5NTkwCisuLiBub25jZTogdkF0X3pyCisuLiBzZWN0aW9uOiBXaW5kb3dzCisKK1JlbW92ZWQgdmVyeSBvdXRkYXRlZCBQQy9leGFtcGxlX250LyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjcuMTIucnN0IGIvTWlzYy9ORVdTLmQvMi43LjEyLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjIwOTlhCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43LjEyLnJzdApAQCAtMCwwICsxLDI2IEBACisuLiBicG86IDI3NjQxCisuLiBkYXRlOiA5ODIxCisuLiBub25jZTogRmh0dmhpCisuLiByZWxlYXNlIGRhdGU6IDIwMTYtMDYtMjUKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1RoZSBjb25maWd1cmUgc2NyaXB0IG5vdyBpbnNlcnRzIGNvbW1lbnRzIGludG8gdGhlIG1ha2VmaWxlIHRvIHByZXZlbnQgdGhlCitwZ2VuIGV4ZWN1dGFibGUgZnJvbSBiZWluZyBjcm9zcy1jb21waWxlZC4KKworLi4KKworLi4gYnBvOiAyNjkzMAorLi4gZGF0ZTogOTgyMAorLi4gbm9uY2U6IDlKVWVTRAorLi4gc2VjdGlvbjogQnVpbGQKKworVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yaC4KKworLi4KKworLi4gYnBvOiAyNzM2NQorLi4gZGF0ZTogOTgxOQorLi4gbm9uY2U6IHk4Q1ZzbgorLi4gc2VjdGlvbjogSURMRQorCitGaXggYWJvdXQgZGlhbG9nLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvMi43LjEycmMxLnJzdCBiL01pc2MvTkVXUy5kLzIuNy4xMnJjMS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg2ZGYzOQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNy4xMnJjMS5yc3QKQEAgLTAsMCArMSwxMTYxIEBACisuLiBicG86IDIwMDQxCisuLiBkYXRlOiA5ODE4CisuLiBub25jZTogVHlweUdwCisuLiByZWxlYXNlIGRhdGU6IDIwMTYtMDYtMTIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIFR5cGVFcnJvciB3aGVuIGZyYW1lLmZfdHJhY2UgaXMgc2V0IHRvIE5vbmUuIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgorCisuLgorCisuLiBicG86IDI1NzAyCisuLiBkYXRlOiA5ODE3CisuLiBub25jZTogaXB4eUpzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBIC0td2l0aC1sdG8gY29uZmlndXJlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0aGF0IHdpbGwgZW5hYmxlIGxpbmsgdGltZQorb3B0aW1pemF0aW9ucyBhdCBidWlsZCB0aW1lIGR1cmluZyBhIG1ha2UgcHJvZmlsZS1vcHQuIFNvbWUgY29tcGlsZXJzIGFuZAordG9vbGNoYWlucyBhcmUga25vd24gdG8gbm90IHByb2R1Y2Ugc3RhYmxlIGNvZGUgd2hlbiB1c2luZyBMVE8sIGJlIHN1cmUgdG8KK3Rlc3QgdGhpbmdzIHRob3JvdWdobHkgYmVmb3JlIHJlbHlpbmcgb24gaXQuIEl0IGNhbiBwcm92aWRlIGEgZmV3ICUgc3BlZWQgdXAKK292ZXIgcHJvZmlsZS1vcHQgYWxvbmUuCisKKy4uCisKKy4uIGJwbzogMjYxNjgKKy4uIGRhdGU6IDk4MTYKKy4uIG5vbmNlOiAtblBCTDYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIHBvc3NpYmxlIHJlZmxlYWtzIGluIGZhaWxpbmcgUHlfQnVpbGRWYWx1ZSgpIHdpdGggdGhlICJOIiBmb3JtYXQgdW5pdC4KKworLi4KKworLi4gYnBvOiAyNzAzOQorLi4gZGF0ZTogOTgxNQorLi4gbm9uY2U6IFpqN3RWNworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgYnl0ZWFycmF5LnJlbW92ZSgpIGZvciB2YWx1ZXMgZ3JlYXRlciB0aGFuIDEyNy4gIFBhdGNoIGJ5IEpvZSBKZXZuaWsuCisKKy4uCisKKy4uIGJwbzogNDgwNgorLi4gZGF0ZTogOTgxNAorLi4gbm9uY2U6IEJPYXB1QQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQXZvaWQgbWFza2luZyB0aGUgb3JpZ2luYWwgVHlwZUVycm9yIGV4Y2VwdGlvbiB3aGVuIHVzaW5nIHN0YXIgKCopIHVucGFja2luZworYW5kIHRoZSBleGNlcHRpb24gd2FzIHJhaXNlZCBmcm9tIGEgZ2VuZXJhdG9yLiAgQmFzZWQgb24gcGF0Y2ggYnkgSGFnZW4KK0bDvHJzdGVuYXUuCisKKy4uCisKKy4uIGJwbzogMjY2NTkKKy4uIGRhdGU6IDk4MTMKKy4uIG5vbmNlOiA1UFJhODMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK01ha2UgdGhlIGJ1aWx0aW4gc2xpY2UgdHlwZSBzdXBwb3J0IGN5Y2xlIGNvbGxlY3Rpb24uCisKKy4uCisKKy4uIGJwbzogMjY3MTgKKy4uIGRhdGU6IDk4MTIKKy4uIG5vbmNlOiBLNVBROGoKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3N1cGVyLl9faW5pdF9fIG5vIGxvbmdlciBsZWFrcyBtZW1vcnkgaWYgY2FsbGVkIG11bHRpcGxlIHRpbWVzLiBOT1RFOiBBCitkaXJlY3QgY2FsbCBvZiBzdXBlci5fX2luaXRfXyBpcyBub3QgZW5kb3JzZWQhCisKKy4uCisKKy4uIGJwbzogMTM0MTAKKy4uIGRhdGU6IDk4MTEKKy4uIG5vbmNlOiB3eWxkUTQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIGEgYnVnIGluIFB5VW5pY29kZV9Gb3JtYXQgd2hlcmUgaXQgZmFpbGVkIHRvIHByb3Blcmx5IGlnbm9yZSBlcnJvcnMKK2Zyb20gYSBfX2ludF9fKCkgbWV0aG9kLgorCisuLgorCisuLiBicG86IDI2NDk0CisuLiBkYXRlOiA5ODEwCisuLiBub25jZTogQXI3SUx0CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBjcmFzaCBvbiBpdGVyYXRpbmcgZXhoYXVzdGluZyBpdGVyYXRvcnMuIEFmZmVjdGVkIGNsYXNzZXMgYXJlIGdlbmVyaWMKK3NlcXVlbmNlIGl0ZXJhdG9ycywgaXRlcmF0b3JzIG9mIGJ5dGVhcnJheSwgbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LAorZGljdCwgT3JkZXJlZERpY3QgYW5kIGNvcnJlc3BvbmRpbmcgdmlld3MuCisKKy4uCisKKy4uIGJwbzogMjY1ODEKKy4uIGRhdGU6IDk4MDkKKy4uIG5vbmNlOiB5TkE3bm0KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0lmIGNvZGluZyBjb29raWUgaXMgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzIG9uIGEgbGluZSBpbiBQeXRob24gc291cmNlIGNvZGUKK2ZpbGUsIG9ubHkgdGhlIGZpcnN0IG9uZSBpcyB0YWtlbiB0byBhY2NvdW50LgorCisuLgorCisuLiBicG86IDIyODM2CisuLiBkYXRlOiA5ODA4CisuLiBub25jZTogY2ltdDF5CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitFbnN1cmUgZXhjZXB0aW9uIHJlcG9ydHMgZnJvbSBQeUVycl9EaXNwbGF5KCkgYW5kIFB5RXJyX1dyaXRlVW5yYWlzYWJsZSgpCithcmUgc2Vuc2libGUgZXZlbiB3aGVuIGZvcm1hdHRpbmcgdGhlbSBwcm9kdWNlcyBzZWNvbmRhcnkgZXJyb3JzLiAgVGhpcworYWZmZWN0cyB0aGUgcmVwb3J0cyBwcm9kdWNlZCBieSBzeXMuX19leGNlcHRob29rX18oKSBhbmQgd2hlbiBfX2RlbF9fKCkKK3JhaXNlcyBhbiBleGNlcHRpb24uCisKKy4uCisKKy4uIGJwbzogMjI4NDcKKy4uIGRhdGU6IDk4MDcKKy4uIG5vbmNlOiA2YmFqOWYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ltcHJvdmUgbWV0aG9kIGNhY2hlIGVmZmljaWVuY3kuCisKKy4uCisKKy4uIGJwbzogMjU4NDMKKy4uIGRhdGU6IDk4MDYKKy4uIG5vbmNlOiB0MmtHdWcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1doZW4gY29tcGlsaW5nIGNvZGUsIGRvbid0IG1lcmdlIGNvbnN0YW50cyBpZiB0aGV5IGFyZSBlcXVhbCBidXQgaGF2ZSBhCitkaWZmZXJlbnQgdHlwZXMuIEZvciBleGFtcGxlLCBgYGYxLCBmMiA9IGxhbWJkYTogMSwgbGFtYmRhOiAxLjBgYCBpcyBub3cKK2NvcnJlY3RseSBjb21waWxlZCB0byB0d28gZGlmZmVyZW50IGZ1bmN0aW9uczogYGBmMSgpYGAgcmV0dXJucyBgYDFgYAorKGBgaW50YGApIGFuZCBgYGYyKClgYCByZXR1cm5zIGBgMS4wYGAgKGBgaW50YGApLCBldmVuIGlmIGBgMWBgIGFuZCBgYDEuMGBgCithcmUgZXF1YWwuCisKKy4uCisKKy4uIGJwbzogMjI5OTUKKy4uIGRhdGU6IDk4MDUKKy4uIG5vbmNlOiBSaHI5RGgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1tVUERBVEVdIFJlbW92ZSB0aGUgb25lIG9mIHRoZSBwaWNrbGVhYmlsaXR5IHRlc3RzIGluIF9QeU9iamVjdF9HZXRTdGF0ZSgpCitkdWUgdG8gcmVncmVzc2lvbnMgb2JzZXJ2ZWQgaW4gQ3l0aG9uLWJhc2VkIHByb2plY3RzLgorCisuLgorCisuLiBicG86IDI1OTYxCisuLiBkYXRlOiA5ODA0CisuLiBub25jZTogSGRqancwCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitEaXNhbGxvd2VkIG51bGwgY2hhcmFjdGVycyBpbiB0aGUgdHlwZSBuYW1lLgorCisuLgorCisuLiBicG86IDIyOTk1CisuLiBkYXRlOiA5ODAzCisuLiBub25jZTogV3EwRTg2CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbnN0YW5jZXMgb2YgZXh0ZW5zaW9uIHR5cGVzIHdpdGggYSBzdGF0ZSB0aGF0IGFyZW4ndCBzdWJjbGFzc2VzIG9mIGxpc3Qgb3IKK2RpY3QgYW5kIGhhdmVuJ3QgaW1wbGVtZW50ZWQgYW55IHBpY2tsZS1yZWxhdGVkIG1ldGhvZHMgKF9fcmVkdWNlX18sCitfX3JlZHVjZV9leF9fLCBfX2dldG5ld2FyZ3NfXywgX19nZXRuZXdhcmdzX2V4X18sIG9yIF9fZ2V0c3RhdGVfXyksIGNhbiBubworbG9uZ2VyIGJlIHBpY2tsZWQuICBJbmNsdWRpbmcgbWVtb3J5dmlldy4KKworLi4KKworLi4gYnBvOiAyMDQ0MAorLi4gZGF0ZTogOTgwMgorLi4gbm9uY2U6IEdDd09mSAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworTWFzc2l2ZSByZXBsYWNpbmcgdW5zYWZlIGF0dHJpYnV0ZSBzZXR0aW5nIGNvZGUgd2l0aCBzcGVjaWFsIG1hY3JvCitQeV9TRVRSRUYuCisKKy4uCisKKy4uIGJwbzogMjU0MjEKKy4uIGRhdGU6IDk4MDEKKy4uIG5vbmNlOiBjNDdZRUwKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK19fc2l6ZW9mX18gbWV0aG9kcyBvZiBidWlsdGluIHR5cGVzIG5vdyB1c2UgZHluYW1pYyBiYXNpYyBzaXplLiBUaGlzIGFsbG93cworc3lzLmdldHNpemUoKSB0byB3b3JrIGNvcnJlY3RseSB3aXRoIHRoZWlyIHN1YmNsYXNzZXMgd2l0aCBfX3Nsb3RzX18KK2RlZmluZWQuCisKKy4uCisKKy4uIGJwbzogMTk1NDMKKy4uIGRhdGU6IDk4MDAKKy4uIG5vbmNlOiBGTHRQVEcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZGVkIFB5M2sgd2FybmluZyBmb3IgZGVjb2RpbmcgdW5pY29kZS4KKworLi4KKworLi4gYnBvOiAyNDA5NworLi4gZGF0ZTogOTc5OQorLi4gbm9uY2U6IFZ0NEUtaQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgY3Jhc2ggaW4gb2JqZWN0Ll9fcmVkdWNlX18oKSBpZiBzbG90IG5hbWUgaXMgZnJlZWQgaW5zaWRlIF9fZ2V0YXR0cl9fLgorCisuLgorCisuLiBicG86IDI0NzMxCisuLiBkYXRlOiA5Nzk4CisuLiBub25jZTogRjRVU0ROCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBjcmFzaCBvbiBjb252ZXJ0aW5nIG9iamVjdHMgd2l0aCBzcGVjaWFsIG1ldGhvZHMgX19zdHJfXywgX190cnVuY19fLAorYW5kIF9fZmxvYXRfXyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIHN1YmNsYXNzZXMgb2Ygc3RyLCBsb25nLCBhbmQgZmxvYXQgdG8KK3N1YmNsYXNzZXMgb2Ygc3RyLCBsb25nLCBhbmQgZmxvYXQgY29ycmVzcG9uZGluZ2x5LgorCisuLgorCisuLiBicG86IDI2NDc4CisuLiBkYXRlOiA5Nzk3CisuLiBub25jZTogbjBkQjhlCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggc2VtYW50aWMgYnVncyB3aGVuIHVzaW5nIGJpbmFyeSBvcGVyYXRvcnMgd2l0aCBkaWN0aW9uYXJ5IHZpZXdzIGFuZAordHVwbGVzLgorCisuLgorCisuLiBicG86IDI2MTcxCisuLiBkYXRlOiA5Nzk2CisuLiBub25jZTogOFNhUUVhCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBhbmQgaGVhcCBjb3JydXB0aW9uIGluIHppcGltcG9ydGVyLmdldF9kYXRhKCkuCisKKy4uCisKKy4uIGJwbzogMjY1NTYKKy4uIGRhdGU6IDk3OTUKKy4uIG5vbmNlOiB2NWoydUwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXBkYXRlIGV4cGF0IHRvIDIuMS4xLCBmaXhlcyBDVkUtMjAxNS0xMjgzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDk3OTQKKy4uIG5vbmNlOiBxUDhXVC0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IFRMUyBzdHJpcHBpbmcgdnVsbmVyYWJpbGl0eSBpbiBzbXB0bGliLCBDVkUtMjAxNi0wNzcyLiAgUmVwb3J0ZWQgYnkgVGVhbQorT3N0c3Ryb20KKworLi4KKworLi4gYnBvOiA3MzU2CisuLiBkYXRlOiA5NzkzCisuLiBub25jZTogY1M1d2dqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2N0eXBlcy51dGlsOiBNYWtlIHBhcnNpbmcgb2YgbGRjb25maWcgb3V0cHV0IGluZGVwZW5kZW50IG9mIHRoZSBsb2NhbGUuCisKKy4uCisKKy4uIGJwbzogMjU3MzgKKy4uIGRhdGU6IDk3OTIKKy4uIG5vbmNlOiBJXzFqcFEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU3RvcCBCYXNlSFRUUFNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLnNlbmRfZXJyb3IoKSBmcm9tIHNlbmRpbmcgYQorbWVzc2FnZSBib2R5IGZvciAyMDUgUmVzZXQgQ29udGVudC4gIEFsc28sIGRvbid0IHNlbmQgdGhlIENvbnRlbnQtVHlwZQoraGVhZGVyIGZpZWxkIGluIHJlc3BvbnNlcyB0aGF0IGRvbid0IGhhdmUgYSBib2R5LiAgQmFzZWQgb24gcGF0Y2ggYnkgU3VzdW11CitLb3NoaWJhLgorCisuLgorCisuLiBicG86IDIxMzEzCisuLiBkYXRlOiA5NzkxCisuLiBub25jZTogVzMwTUJyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0aGUgInBsYXRmb3JtIiBtb2R1bGUgdG8gdG9sZXJhdGUgd2hlbiBzeXMudmVyc2lvbiBjb250YWlucyB0cnVuY2F0ZWQKK2J1aWxkIGluZm9ybWF0aW9uLgorCisuLgorCisuLiBicG86IDI3MjExCisuLiBkYXRlOiA5NzkwCisuLiBub25jZTogXzdIWWp4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwb3NzaWJsZSBtZW1vcnkgY29ycnVwdGlvbiBpbiBpby5JT0Jhc2UucmVhZGxpbmUoKS4KKworLi4KKworLi4gYnBvOiAyNzExNAorLi4gZGF0ZTogOTc4OQorLi4gbm9uY2U6IGJHQ3VBTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggU1NMQ29udGV4dC5fbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIHdpdGggUGVybWlzc2lvbkVycm9yCisKKy4uCisKKy4uIGJwbzogMTQxMzIKKy4uIGRhdGU6IDk3ODgKKy4uIG5vbmNlOiBHcGl1eGsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHVybGxpYi5yZXF1ZXN0IHJlZGlyZWN0IGhhbmRsaW5nIHdoZW4gdGhlIHRhcmdldCBvbmx5IGhhcyBhIHF1ZXJ5CitzdHJpbmcuICBGaXggYnkgSsOhbiBKYW5lY2guCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTc4NworLi4gbm9uY2U6IGJNckN6OAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmVkIHRoZSByZXF1aXJlbWVudHMgZm9yIHRoZSBjdHlwZXMgYW5kIG1vZHVsZWZpbmRlciBtb2R1bGVzIHRvIGJlCitjb21wYXRpYmxlIHdpdGggZWFybGllciBQeXRob24gdmVyc2lvbnMuCisKKy4uCisKKy4uIGJwbzogMjIyNzQKKy4uIGRhdGU6IDk3ODYKKy4uIG5vbmNlOiAwUkhETU4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gdGhlIHN1YnByb2Nlc3MgbW9kdWxlLCBhbGxvdyBzdGRlcnIgdG8gYmUgcmVkaXJlY3RlZCB0byBzdGRvdXQgZXZlbiB3aGVuCitzdGRvdXQgaXMgbm90IHJlZGlyZWN0ZWQuICBQYXRjaCBieSBBa2lyYSBMaS4KKworLi4KKworLi4gYnBvOiAxMjA0NQorLi4gZGF0ZTogOTc4NQorLi4gbm9uY2U6IExFSDA5VworLi4gc2VjdGlvbjogTGlicmFyeQorCitBdm9pZCBkdXBsaWNhdGUgZXhlY3V0aW9uIG9mIGNvbW1hbmQgaW4gY3R5cGVzLnV0aWwuX2dldF9zb25hbWUoKS4gUGF0Y2ggYnkKK1NpamluIEpvc2VwaC4KKworLi4KKworLi4gYnBvOiAyNjk2MAorLi4gZGF0ZTogOTc4NAorLi4gbm9uY2U6IDJsX0lPbAorLi4gc2VjdGlvbjogTGlicmFyeQorCitCYWNrcG9ydGVkICMxNjI3MCBmcm9tIFB5dGhvbiAzIHRvIFB5dGhvbiAyLCB0byBwcmV2ZW50IHVybGxpYiBmcm9tIGhhbmdpbmcKK3doZW4gcmV0cmlldmluZyBjZXJ0YWluIEZUUCBmaWxlcy4KKworLi4KKworLi4gYnBvOiAyNTc0NQorLi4gZGF0ZTogOTc4MworLi4gbm9uY2U6IC1uOGFjVQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBsZWFraW5nIGEgdXNlcnB0ciBpbiBjdXJzZXMgcGFuZWwgZGVzdHJ1Y3Rvci4KKworLi4KKworLi4gYnBvOiAxNzc2NQorLi4gZGF0ZTogOTc4MgorLi4gbm9uY2U6IGhpU1ZTMQorLi4gc2VjdGlvbjogTGlicmFyeQorCit3ZWFrcmVmLnJlZigpIG5vIGxvbmdlciBzaWxlbnRseSBpZ25vcmVzIGtleXdvcmQgYXJndW1lbnRzLiBQYXRjaCBieSBHZW9yZworQnJhbmRsLgorCisuLgorCisuLiBicG86IDI2ODczCisuLiBkYXRlOiA5NzgxCisuLiBub25jZTogX3FJUFVwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3htbHJwY2xpYiBub3cgcmFpc2VzIFJlc3BvbnNlRXJyb3Igb24gdW5zdXBwb3J0ZWQgdHlwZSB0YWdzIGluc3RlYWQgb2YKK3NpbGVudGx5IHJldHVybiBpbmNvcnJlY3QgcmVzdWx0LgorCisuLgorCisuLiBicG86IDI0MTE0CisuLiBkYXRlOiA5NzgwCisuLiBub25jZTogUk1STXRNCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGluIGBjdHlwZXMudXRpbGAuCisKK1RoZSBidWcgb25seSBvY2N1cnMgb24gU3VuT1Mgd2hlbiB0aGUgY3R5cGVzIGltcGxlbWVudGF0aW9uIHNlYXJjaGVzIGZvciB0aGUKK2BjcmxlYCBwcm9ncmFtLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuICBUZXN0ZWQgb24gU3VuT1MgYnkgS2VlcyBCb3MuCisKKy4uCisKKy4uIGJwbzogMjY4NjQKKy4uIGRhdGU6IDk3NzkKKy4uIG5vbmNlOiBERnNndkkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gdXJsbGliLCBjaGFuZ2UgdGhlIHByb3h5IGJ5cGFzcyBob3N0IGNoZWNraW5nIGFnYWluc3Qgbm9fcHJveHkgdG8gYmUKK2Nhc2UtaW5zZW5zaXRpdmUsIGFuZCB0byBub3QgbWF0Y2ggdW5yZWxhdGVkIGhvc3QgbmFtZXMgdGhhdCBoYXBwZW4gdG8gaGF2ZQorYSBieXBhc3NlZCBob3N0bmFtZSBhcyBhIHN1ZmZpeC4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCisuLgorCisuLiBicG86IDI2ODA0CisuLiBkYXRlOiA5Nzc4CisuLiBub25jZTogNmI5X1VXCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VybGxpYiB3aWxsIHByZWZlciBsb3dlcl9jYXNlIHByb3h5IGVudmlyb25tZW50IHZhcmlhYmxlcyBvdmVyIFVQUEVSX0NBU0Ugb3IKK01peGVkX0Nhc2Ugb25lcy4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSGFucy1QZXRlciBKYW5zZW4uCisKKy4uCisKKy4uIGJwbzogMjY4MzcKKy4uIGRhdGU6IDk3NzcKKy4uIG5vbmNlOiBJS3Q5TkoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYXNzZXJ0U2VxdWVuY2VFcXVhbCgpIG5vdyBjb3JyZWN0bHkgb3V0cHV0cyBub24tc3RyaW5naWZpZWQgZGlmZmVyaW5nIGl0ZW1zLgorVGhpcyBhZmZlY3RzIGFzc2VydExpc3RFcXVhbCgpIGFuZCBhc3NlcnRUdXBsZUVxdWFsKCkuCisKKy4uCisKKy4uIGJwbzogMjY4MjIKKy4uIGRhdGU6IDk3NzYKKy4uIG5vbmNlOiByWVNMNFcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaXRlbWdldHRlciwgYXR0cmdldHRlciBhbmQgbWV0aG9kY2FsbGVyIG9iamVjdHMgbm8gbG9uZ2VyIHNpbGVudGx5IGlnbm9yZQora2V5d29yZCBhcmd1bWVudHMuCisKKy4uCisKKy4uIGJwbzogMjY2NTcKKy4uIGRhdGU6IDk3NzUKKy4uIG5vbmNlOiBkZnRldWIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGRpcmVjdG9yeSB0cmF2ZXJzYWwgdnVsbmVyYWJpbGl0eSB3aXRoIFNpbXBsZUhUVFBTZXJ2ZXIgb24gV2luZG93cy4KK1RoaXMgZml4ZXMgYSByZWdyZXNzaW9uIHRoYXQgd2FzIGludHJvZHVjZWQgaW4gMi43LjcuICBCYXNlZCBvbiBwYXRjaCBieQorUGhpbGlwcCBIYWdlbWVpc3Rlci4KKworLi4KKworLi4gYnBvOiAxOTM3NworLi4gZGF0ZTogOTc3NAorLi4gbm9uY2U6IEFsOVM1MworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgLnN2ZyB0byBtaW1ldHlwZXMudHlwZXNfbWFwLgorCisuLgorCisuLiBicG86IDEzOTUyCisuLiBkYXRlOiA5NzczCisuLiBub25jZTogU09vVFZFCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCAuY3N2IHRvIG1pbWV0eXBlcy50eXBlc19tYXAuICBQYXRjaCBieSBHZW9mZiBXaWxzb24uCisKKy4uCisKKy4uIGJwbzogMTYzMjkKKy4uIGRhdGU6IDk3NzIKKy4uIG5vbmNlOiBudVhEOFcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIC53ZWJtIHRvIG1pbWV0eXBlcy50eXBlc19tYXAuICBQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KKworLi4KKworLi4gYnBvOiAyMzczNQorLi4gZGF0ZTogOTc3MQorLi4gbm9uY2U6IFk1b1E5cgorLi4gc2VjdGlvbjogTGlicmFyeQorCitIYW5kbGUgdGVybWluYWwgcmVzaXppbmcgd2l0aCBSZWFkbGluZSA2LjMrIGJ5IGluc3RhbGxpbmcgb3VyIG93biBTSUdXSU5DSAoraGFuZGxlci4gIFBhdGNoIGJ5IEVyaWMgUHJpY2UuCisKKy4uCisKKy4uIGJwbzogMjY2NDQKKy4uIGRhdGU6IDk3NzAKKy4uIG5vbmNlOiA3dHQxdGsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmFpc2UgVmFsdWVFcnJvciByYXRoZXIgdGhhbiBTeXN0ZW1FcnJvciB3aGVuIGEgbmVnYXRpdmUgbGVuZ3RoIGlzIHBhc3NlZCB0bworU1NMU29ja2V0LnJlY3YoKSBvciByZWFkKCkuCisKKy4uCisKKy4uIGJwbzogMjM4MDQKKy4uIGRhdGU6IDk3NjkKKy4uIG5vbmNlOiBQUDYzRmYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IFNTTCByZWN2KDApIGFuZCByZWFkKDApIG1ldGhvZHMgdG8gcmV0dXJuIHplcm8gYnl0ZXMgaW5zdGVhZCBvZiB1cCB0bworMTAyNC4KKworLi4KKworLi4gYnBvOiAyNDI2NgorLi4gZGF0ZTogOTc2OAorLi4gbm9uY2U6IFlaZ1Z5TQorLi4gc2VjdGlvbjogTGlicmFyeQorCitDdHJsK0MgZHVyaW5nIFJlYWRsaW5lIGhpc3Rvcnkgc2VhcmNoIG5vdyBjYW5jZWxzIHRoZSBzZWFyY2ggbW9kZSB3aGVuCitjb21waWxlZCB3aXRoIFJlYWRsaW5lIDcuCisKKy4uCisKKy4uIGJwbzogMjM4NTcKKy4uIGRhdGU6IDk3NjcKKy4uIG5vbmNlOiB1OTR5RUwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW1wbGVtZW50IFBFUCA0OTMsIGFkZGluZyBhIFB5dGhvbi0yLW9ubHkgc3NsIG1vZHVsZSBBUEkgYW5kIGVudmlyb25tZW50Cit2YXJpYWJsZSB0byBjb25maWd1cmUgdGhlIGRlZmF1bHQgaGFuZGxpbmcgb2YgU1NML1RMUyBjZXJ0aWZpY2F0ZXMgZm9yIEhUVFBTCitjb25uZWN0aW9ucy4KKworLi4KKworLi4gYnBvOiAyNjMxMworLi4gZGF0ZTogOTc2NgorLi4gbm9uY2U6IHhoWDJHdQorLi4gc2VjdGlvbjogTGlicmFyeQorCitzc2wucHkgX2xvYWRfd2luZG93c19zdG9yZV9jZXJ0cyBmYWlscyBpZiB3aW5kb3dzIGNlcnQgc3RvcmUgaXMgZW1wdHkuIFBhdGNoCitieSBCYWppLgorCisuLgorCisuLiBicG86IDI2NTEzCisuLiBkYXRlOiA5NzY1CisuLiBub25jZTogSG9QZXB5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVzIHBsYXRmb3JtIG1vZHVsZSBkZXRlY3Rpb24gb2YgV2luZG93cyBTZXJ2ZXIKKworLi4KKworLi4gYnBvOiAyMzcxOAorLi4gZGF0ZTogOTc2NAorLi4gbm9uY2U6IEFNUEMwbworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBwYXJzaW5nIHRpbWUgaW4gd2VlayAwIGJlZm9yZSBKYW4gMS4gIE9yaWdpbmFsIHBhdGNoIGJ5IFRhbcOhcyBCZW5jZQorR2VkYWkuCisKKy4uCisKKy4uIGJwbzogMjYxNzcKKy4uIGRhdGU6IDk3NjMKKy4uIG5vbmNlOiBIbFNXZXIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgdGhlIGtleXMoKSBtZXRob2QgZm9yIENhbnZhcyBhbmQgU2Nyb2xsYmFyIHdpZGdldHMuCisKKy4uCisKKy4uIGJwbzogMTUwNjgKKy4uIGRhdGU6IDk3NjIKKy4uIG5vbmNlOiBiY0h0aXcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworR290IHJpZCBvZiBleGNlc3NpdmUgYnVmZmVyaW5nIGluIHRoZSBmaWxlaW5wdXQgbW9kdWxlLiBUaGUgYnVmc2l6ZQorcGFyYW1ldGVyIGlzIG5vIGxvbmdlciB1c2VkLgorCisuLgorCisuLiBicG86IDIyMDIKKy4uIGRhdGU6IDk3NjEKKy4uIG5vbmNlOiBFUHNyT0EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IFVuYm91bmRMb2NhbEVycm9yIGluIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXIuZ2V0X2FsZ29yaXRobV9pbXBscy4KK0luaXRpYWwgcGF0Y2ggYnkgTWF0aGlldSBEdXB1eS4KKworLi4KKworLi4gYnBvOiAyNjQ3NQorLi4gZGF0ZTogOTc2MAorLi4gbm9uY2U6IEpYVmNjWQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBkZWJ1Z2dpbmcgb3V0cHV0IGZvciByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggdGhlICg/eCkgZmxhZy4KKworLi4KKworLi4gYnBvOiAyNjM4NQorLi4gZGF0ZTogOTc1OQorLi4gbm9uY2U6IG1md055dAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmUgdGhlIGZpbGUgaWYgdGhlIGludGVybmFsIGZkb3BlbigpIGNhbGwgaW4gTmFtZWRUZW1wb3JhcnlGaWxlKCkgZmFpbHMuCitCYXNlZCBvbiBwYXRjaCBieSBTaWxlbnQgR2hvc3QuCisKKy4uCisKKy4uIGJwbzogMjYzMDkKKy4uIGRhdGU6IDk3NTgKKy4uIG5vbmNlOiBUU1RKM0EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gdGhlICJTb2NrZXRTZXJ2ZXIiIG1vZHVsZSwgc2h1dCBkb3duIHRoZSByZXF1ZXN0IChjbG9zaW5nIHRoZSBjb25uZWN0ZWQKK3NvY2tldCkgd2hlbiB2ZXJpZnlfcmVxdWVzdCgpIHJldHVybnMgZmFsc2UuICBCYXNlZCBvbiBwYXRjaCBieSBBdml2CitQYWxpdm9kYS4KKworLi4KKworLi4gYnBvOiAyNTkzOQorLi4gZGF0ZTogOTc1NworLi4gbm9uY2U6IEktcUsyRQorLi4gc2VjdGlvbjogTGlicmFyeQorCitPbiBXaW5kb3dzIG9wZW4gdGhlIGNlcnQgc3RvcmUgcmVhZG9ubHkgaW4gc3NsLmVudW1fY2VydGlmaWNhdGVzLgorCisuLgorCisuLiBicG86IDI0MzAzCisuLiBkYXRlOiA5NzU2CisuLiBub25jZTogRkRCSldNCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCByYW5kb20gRUVYSVNUIHVwb24gbXVsdGlwcm9jZXNzaW5nIHNlbWFwaG9yZXMgY3JlYXRpb24gd2l0aCBMaW51eCBQSUQKK25hbWVzcGFjZXMgZW5hYmxlZC4KKworLi4KKworLi4gYnBvOiAyNTY5OAorLi4gZGF0ZTogOTc1NQorLi4gbm9uY2U6IElkM05BbworLi4gc2VjdGlvbjogTGlicmFyeQorCitJbXBvcnRpbmcgbW9kdWxlIGlmIHRoZSBzdGFjayBpcyB0b28gZGVlcCBubyBsb25nZXIgcmVwbGFjZXMgaW1wb3J0ZWQgbW9kdWxlCit3aXRoIHRoZSBlbXB0eSBvbmUuCisKKy4uCisKKy4uIGJwbzogMTI5MjMKKy4uIGRhdGU6IDk3NTQKKy4uIG5vbmNlOiBIUEF1LUIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVzZXQgRmFuY3lVUkxvcGVuZXIncyByZWRpcmVjdCBjb3VudGVyIGV2ZW4gaWYgdGhlcmUgaXMgYW4gZXhjZXB0aW9uLgorQmFzZWQgb24gcGF0Y2hlcyBieSBCcmlhbiBCcmF6aWwgYW5kIERhbmllbCBSb2Njby4KKworLi4KKworLi4gYnBvOiAyNTk0NQorLi4gZGF0ZTogOTc1MworLi4gbm9uY2U6IGd1TmdOTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIGNyYXNoIHdoZW4gdW5waWNrbGUgdGhlIGZ1bmN0b29scy5wYXJ0aWFsIG9iamVjdCB3aXRoIHdyb25nIHN0YXRlLgorRml4ZWQgYSBsZWFrIGluIGZhaWxlZCBmdW5jdG9vbHMucGFydGlhbCBjb25zdHJ1Y3Rvci4gImFyZ3MiIGFuZCAia2V5d29yZHMiCithdHRyaWJ1dGVzIG9mIGZ1bmN0b29scy5wYXJ0aWFsIGhhdmUgbm93IGFsd2F5cyB0eXBlcyB0dXBsZSBhbmQgZGljdAorY29ycmVzcG9uZGluZ2x5LgorCisuLgorCisuLiBicG86IDE5ODgzCisuLiBkYXRlOiA5NzUyCisuLiBub25jZTogejlUc082CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3dzIGluIHppcGltcG9ydC4KKworLi4KKworLi4gYnBvOiAyNjE0NworLi4gZGF0ZTogOTc1MQorLi4gbm9uY2U6IFVBOE82cworLi4gc2VjdGlvbjogTGlicmFyeQorCit4bWxycGNsaWIgbm93IHdvcmtzIHdpdGggdW5pY29kZSBub3QgZW5jb2RhYmxlIHdpdGggdXNlZCBub24tVVRGLTggZW5jb2RpbmcuCisKKy4uCisKKy4uIGJwbzogMTY2MjAKKy4uIGRhdGU6IDk3NTAKKy4uIG5vbmNlOiByeHBuX1kKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgQXR0cmlidXRlRXJyb3IgaW4gbXNpbGliLkRpcmVjdG9yeS5nbG9iKCkuCisKKy4uCisKKy4uIGJwbzogMjE4NDcKKy4uIGRhdGU6IDk3NDkKKy4uIG5vbmNlOiBzbUxubGwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgeG1scnBjbGliIG9uIFVuaWNvZGUtZGlzYWJsZWQgYnVpbGRzLgorCisuLgorCisuLiBicG86IDY1MDAKKy4uIGRhdGU6IDk3NDgKKy4uIG5vbmNlOiBuOE5HbzQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgaW5maW5pdGUgcmVjdXJzaW9uIGluIHVybGxpYjIuUmVxdWVzdC5fX2dldGF0dHJfXygpLgorCisuLgorCisuLiBicG86IDI2MDgzCisuLiBkYXRlOiA5NzQ3CisuLiBub25jZTogc2l5T25TCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1dvcmthcm91bmQgYSBzdWJwcm9jZXNzIGJ1ZyB0aGF0IHJhaXNlcyBhbiBpbmNvcnJlY3QgIlZhbHVlRXJyb3I6IGluc2VjdXJlCitzdHJpbmcgcGlja2xlIiBleGNlcHRpb24gaW5zdGVhZCBvZiB0aGUgYWN0dWFsIGV4Y2VwdGlvbiBvbiBzb21lIHBsYXRmb3Jtcworc3VjaCBhcyBNYWMgT1MgWCB3aGVuIGFuIGV4Y2VwdGlvbiByYWlzZWQgaW4gdGhlIGZvcmtlZCBjaGlsZCBwcm9jZXNzIHByaW9yCit0byB0aGUgZXhlYygpIHdhcyBsYXJnZSBlbm91Z2ggdGhhdCBpdCBvdmVyZmxvd2VkIHRoZSBpbnRlcm5hbCBlcnJwaXBlX3JlYWQKK3BpcGUgYnVmZmVyLgorCisuLgorCisuLiBicG86IDI0MTAzCisuLiBkYXRlOiA5NzQ2CisuLiBub25jZTogZ1dBRzByCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHBvc3NpYmxlIHVzZSBhZnRlciBmcmVlIGluIEVsZW1lbnRUcmVlLml0ZXJwYXJzZSgpLgorCisuLgorCisuLiBicG86IDIwOTU0CisuLiBkYXRlOiA5NzQ1CisuLiBub25jZTogSDktTllPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK19hcmdzX2Zyb21faW50ZXJwcmV0ZXJfZmxhZ3MgdXNlZCBieSBtdWx0aXByb2Nlc3NpbmcgYW5kIHNvbWUgdGVzdHMgbm8KK2xvbmdlciBiZWhhdmVzIGluY29ycmVjdGx5IGluIHRoZSBwcmVzZW5jZSBvZiB0aGUgUFlUSE9OSEFTSFNFRUQgZW52aXJvbm1lbnQKK3ZhcmlhYmxlLgorCisuLgorCisuLiBicG86IDE0Mjg1CisuLiBkYXRlOiA5NzQ0CisuLiBub25jZTogWjVZY1F5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1doZW4gZXhlY3V0aW5nIGEgcGFja2FnZSB3aXRoIHRoZSAicHl0aG9uIC1tIHBhY2thZ2UiIG9wdGlvbiwgYW5kIHBhY2thZ2UKK2luaXRpYWxpemF0aW9uIHJhaXNlcyBJbXBvcnRFcnJvciwgYSBwcm9wZXIgdHJhY2ViYWNrIGlzIG5vdyByZXBvcnRlZC4KKworLi4KKworLi4gYnBvOiA2NDc4CisuLiBkYXRlOiA5NzQzCisuLiBub25jZTogLUJpOUhiCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK19zdHJwdGltZSdzIHJlZ2V4cCBjYWNoZSBub3cgaXMgcmVzZXQgYWZ0ZXIgY2hhbmdpbmcgdGltZXpvbmUgd2l0aAordGltZS50enNldCgpLgorCisuLgorCisuLiBicG86IDI1NzE4CisuLiBkYXRlOiA5NzQyCisuLiBub25jZTogRDltSFpGCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGNvcHlpbmcgb2JqZWN0IHdpdGggc3RhdGUgd2l0aCBib29sZWFuIHZhbHVlIGlzIGZhbHNlLgorCisuLgorCisuLiBicG86IDI1NzQyCisuLiBkYXRlOiA5NzQxCisuLiBub25jZTogeTZBQVE0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKKzpmdW5jOmBsb2NhbGUuc2V0bG9jYWxlYCBub3cgYWNjZXB0cyBhIFVuaWNvZGUgc3RyaW5nIGZvciBpdHMgc2Vjb25kCitwYXJhbWV0ZXIuCisKKy4uCisKKy4uIGJwbzogMTAxMzEKKy4uIGRhdGU6IDk3NDAKKy4uIG5vbmNlOiBhN3RwdHoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgZGVlcCBjb3B5aW5nIG9mIG1pbmlkb20gZG9jdW1lbnRzLiAgQmFzZWQgb24gcGF0Y2ggYnkgTWFyaWFuIEdhbmlzaW4uCisKKy4uCisKKy4uIGJwbzogMjU3MjUKKy4uIGRhdGU6IDk3MzkKKy4uIG5vbmNlOiBtR1JycWIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYSByZWZlcmVuY2UgbGVhayBpbiBjUGlja2xlLmxvYWRzKCkgd2hlbiB1bnBpY2tsaW5nIGludmFsaWQgZGF0YQoraW5jbHVkaW5nIHR1cGxlIGluc3RydWN0aW9ucy4KKworLi4KKworLi4gYnBvOiAyNTY2MworLi4gZGF0ZTogOTczOAorLi4gbm9uY2U6IE9md2ZxYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiB0aGUgUmVhZGxpbmUgY29tcGxldGVyLCBhdm9pZCBsaXN0aW5nIGR1cGxpY2F0ZSBnbG9iYWwgbmFtZXMsIGFuZCBzZWFyY2gKK3RoZSBnbG9iYWwgbmFtZXNwYWNlIGJlZm9yZSBzZWFyY2hpbmcgYnVpbHRpbnMuCisKKy4uCisKKy4uIGJwbzogMjU2ODgKKy4uIGRhdGU6IDk3MzcKKy4uIG5vbmNlOiA4UDFIT3YKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgZmlsZSBsZWFrIGluIEVsZW1lbnRUcmVlLml0ZXJwYXJzZSgpIHJhaXNpbmcgYW4gZXJyb3IuCisKKy4uCisKKy4uIGJwbzogMjM5MTQKKy4uIGRhdGU6IDk3MzYKKy4uIG5vbmNlOiB2UVM0OGIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgU3lzdGVtRXJyb3IgcmFpc2VkIGJ5IENQaWNrbGUgdW5waWNrbGVyIG9uIGJyb2tlbiBkYXRhLgorCisuLgorCisuLiBicG86IDI1OTI0CisuLiBkYXRlOiA5NzM1CisuLiBub25jZTogVXhyMnZ0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0F2b2lkIHVubmVjZXNzYXJ5IHNlcmlhbGl6YXRpb24gb2YgZ2V0YWRkcmluZm8oMykgY2FsbHMgb24gT1MgWCB2ZXJzaW9ucworMTAuNSBvciBoaWdoZXIuICBPcmlnaW5hbCBwYXRjaCBieSBBLiBKZXNzZSBKaXJ5dSBEYXZpcy4KKworLi4KKworLi4gYnBvOiAyNjQwNgorLi4gZGF0ZTogOTczNAorLi4gbm9uY2U6IGlodmhGNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBdm9pZCB1bm5lY2Vzc2FyeSBzZXJpYWxpemF0aW9uIG9mIGdldGFkZHJpbmZvKDMpIGNhbGxzIG9uIGN1cnJlbnQgdmVyc2lvbnMKK29mIE9wZW5CU0QgYW5kIE5ldEJTRC4gIFBhdGNoIGJ5IEEuIEplc3NlIEppcnl1IERhdmlzLgorCisuLgorCisuLiBicG86IDUxMjQKKy4uIGRhdGU6IDk3MzMKKy4uIG5vbmNlOiA0a3dCdk0KKy4uIHNlY3Rpb246IElETEUKKworUGFzdGUgd2l0aCB0ZXh0IHNlbGVjdGVkIG5vdyByZXBsYWNlcyB0aGUgc2VsZWN0aW9uIG9uIFgxMS4gVGhpcyBtYXRjaGVzIGhvdworcGFzdGUgd29ya3Mgb24gV2luZG93cywgTWFjLCBtb3N0IG1vZGVybiBMaW51eCBhcHBzLCBhbmQgdHRrIHdpZGdldHMuCitPcmlnaW5hbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCisuLgorCisuLiBicG86IDI0NzU5CisuLiBkYXRlOiA5NzMyCisuLiBub25jZTogY2NteVN1CisuLiBzZWN0aW9uOiBJRExFCisKK01ha2UgY2xlYXIgaW4gaWRsZWxpYi5pZGxlX3Rlc3QuX19pbml0X18gdGhhdCB0aGUgZGlyZWN0b3J5IGlzIGEgcHJpdmF0ZQoraW1wbGVtZW50YXRpb24gb2YgdGVzdC50ZXN0X2lkbGUgYW5kIHRvb2wgZm9yIG1haW50YWluZXJzLgorCisuLgorCisuLiBicG86IDI2NjczCisuLiBkYXRlOiA5NzMxCisuLiBub25jZTogZGgwX0lqCisuLiBzZWN0aW9uOiBJRExFCisKK1doZW4gdGsgcmVwb3J0cyBmb250IHNpemUgYXMgMCwgY2hhbmdlIHRvIHNpemUgMTAuIFN1Y2ggZm9udHMgb24gTGludXgKK3ByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgorCisuLgorCisuLiBicG86IDI3MDQ0CisuLiBkYXRlOiA5NzMwCisuLiBub25jZTogNHk3dHlNCisuLiBzZWN0aW9uOiBJRExFCisKK0FkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTcyOQorLi4gbm9uY2U6IF9ZSmZHNworLi4gc2VjdGlvbjogSURMRQorCitJbiB0aGUgJ0lETEUtY29uc29sZSBkaWZmZXJlbmNlcycgc2VjdGlvbiBvZiB0aGUgSURMRSBkb2MsIGNsYXJpZnkgaG93CitydW5uaW5nIHdpdGggSURMRSBhZmZlY3RzIHN5cy5tb2R1bGVzIGFuZCB0aGUgc3RhbmRhcmQgc3RyZWFtcy4KKworLi4KKworLi4gYnBvOiAyNTUwNworLi4gZGF0ZTogOTcyOAorLi4gbm9uY2U6IGJ4LW1pWAorLi4gc2VjdGlvbjogSURMRQorCitmaXggaW5jb3JyZWN0IGNoYW5nZSBpbiBJT0JpbmRpbmcgdGhhdCBwcmV2ZW50ZWQgcHJpbnRpbmcuIENoYW5nZSBhbHNvCitwcmV2ZW50ZWQgc2F2aW5nIHNoZWxsIHdpbmRvdyB3aXRoIG5vbi1hc2NpaSBjaGFyYWN0ZXJzLiBBdWdtZW50IElPQmluZGluZworaHRlc3QgdG8gaW5jbHVkZSBhbGwgbWFqb3IgSU9CaW5kaW5nIGZ1bmN0aW9ucy4KKworLi4KKworLi4gYnBvOiAyNTkwNQorLi4gZGF0ZTogOTcyNworLi4gbm9uY2U6IEZ6TmIzQgorLi4gc2VjdGlvbjogSURMRQorCitSZXZlcnQgdW53YW50ZWQgY29udmVyc2lvbiBvZiAnIHRvIOKAmSBSSUdIVCBTSU5HTEUgUVVPVEFUSU9OIE1BUksgaW4KK1JFQURNRS50eHQgYW5kIG9wZW4gdGhpcyBhbmQgTkVXUy50eHQgd2l0aCAnYXNjaWknLiBSZS1lbmNvZGUgQ1JFRElUUy50eHQgdG8KK3V0Zi04IGFuZCBvcGVuIGl0IHdpdGggJ3V0Zi04Jy4KKworLi4KKworLi4gYnBvOiAyNjQxNworLi4gZGF0ZTogOTcyNgorLi4gbm9uY2U6IFhtU3hFSworLi4gc2VjdGlvbjogSURMRQorCitQcmV2ZW50IHNwdXJpb3VzIGVycm9ycyBhbmQgaW5jb3JyZWN0IGRlZmF1bHRzIHdoZW4gaW5zdGFsbGluZyBJRExFIDIuNyBvbgorT1MgWDogZGVmYXVsdCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSBubyBsb25nZXIgaW5zdGFsbGVkIGZyb20gT1MgWAorc3BlY2lmaWMgY29waWVzLgorCisuLgorCisuLiBicG86IDI2NzM2CisuLiBkYXRlOiA5NzI1CisuLiBub25jZTogVV9IeXFvCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK1VzZWQgSFRUUFMgZm9yIGV4dGVybmFsIGxpbmtzIGluIHRoZSBkb2N1bWVudGF0aW9uIGlmIHBvc3NpYmxlLgorCisuLgorCisuLiBicG86IDY5NTMKKy4uIGRhdGU6IDk3MjQKKy4uIG5vbmNlOiBaazZybm8KKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworUmV3b3JrIHRoZSBSZWFkbGluZSBtb2R1bGUgZG9jdW1lbnRhdGlvbiB0byBncm91cCByZWxhdGVkIGZ1bmN0aW9ucwordG9nZXRoZXIsIGFuZCBhZGQgbW9yZSBkZXRhaWxzIHN1Y2ggYXMgd2hhdCB1bmRlcmx5aW5nIFJlYWRsaW5lIGZ1bmN0aW9ucworYW5kIHZhcmlhYmxlcyBhcmUgYWNjZXNzZWQuCisKKy4uCisKKy4uIGJwbzogMjYwMTQKKy4uIGRhdGU6IDk3MjMKKy4uIG5vbmNlOiBDM0hiYjcKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworR3VpZGUgdXNlcnMgdG8gdGhlIG5ld2VyIHBhY2thZ2luZyBkb2N1bWVudGF0aW9uIGFzIHdhcyBkb25lIGZvciBQeXRob24gMy54LgorSW4gcGFydGljdWxhciwgdGhlIHRvcC1sZXZlbCAyLjcgZG9jdW1lbnRhdGlvbiBwYWdlIG5vdyBsaW5rcyB0byB0aGUgbmV3ZXIKK2luc3RhbGxlciBhbmQgZGlzdHJpYnV0aW9ucyBwYWdlcyByYXRoZXIgdGhhbiB0aGUgbGVnYWN5IGluc3RhbGwgYW5kCitEaXN0dXRpbHMgcGFnZXM7IHRoZXNlIGFyZSBzdGlsbCBsaW5rZWQgdG8gaW4gdGhlIGxpYnJhcnkvZGlzdHV0aWxzIGRvYworcGFnZS4KKworLi4KKworLi4gYnBvOiAyMTkxNgorLi4gZGF0ZTogOTcyMgorLi4gbm9uY2U6IG11d0N5cAorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkZWQgdGVzdHMgZm9yIHRoZSB0dXJ0bGUgbW9kdWxlLiAgUGF0Y2ggYnkgaW5ncmlkLCBHcmVnb3J5IExveXNlIGFuZCBKZWxsZQorWmlqbHN0cmEuCisKKy4uCisKKy4uIGJwbzogMjU5NDAKKy4uIGRhdGU6IDk3MjEKKy4uIG5vbmNlOiBQZ2lMVk4KKy4uIHNlY3Rpb246IFRlc3RzCisKK0NoYW5nZWQgdGVzdF9zc2wgdG8gdXNlIHNlbGYtc2lnbmVkLnB5dGhvbnRlc3QubmV0LiAgVGhpcyBhdm9pZHMgcmVseWluZyBvbgorc3ZuLnB5dGhvbi5vcmcsIHdoaWNoIHJlY2VudGx5IGNoYW5nZWQgcm9vdCBjZXJ0aWZpY2F0ZS4KKworLi4KKworLi4gYnBvOiAyNTYxNgorLi4gZGF0ZTogOTcyMAorLi4gbm9uY2U6IFFyLTYwcAorLi4gc2VjdGlvbjogVGVzdHMKKworVGVzdHMgZm9yIE9yZGVyZWREaWN0IGFyZSBleHRyYWN0ZWQgZnJvbSB0ZXN0X2NvbGxlY3Rpb25zIGludG8gc2VwYXJhdGUgZmlsZQordGVzdF9vcmRlcmVkX2RpY3QuCisKKy4uCisKKy4uIGJwbzogMjIzNTkKKy4uIGRhdGU6IDk3MTkKKy4uIG5vbmNlOiBsYVk5eUIKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0F2b2lkIGluY29ycmVjdCByZWN1cnNpdmUgJChNQUtFKSwgYW5kIGRpc2FibGUgdGhlIHJ1bGVzIGZvciBydW5uaW5nIHBnZW4KK3doZW4gY3Jvc3MtY29tcGlsaW5nLiAgVGhlIHBnZW4gb3V0cHV0IGlzIG5vcm1hbGx5IHNhdmVkIHdpdGggdGhlIHNvdXJjZQorY29kZSBhbnl3YXksIGFuZCBpcyBzdGlsbCByZWdlbmVyYXRlZCB3aGVuIGRvaW5nIGEgbmF0aXZlIGJ1aWxkLiBQYXRjaCBieQorSm9uYXMgV2FnbmVyIGFuZCBYYXZpZXIgZGUgR2F5ZS4KKworLi4KKworLi4gYnBvOiAxOTQ1MAorLi4gZGF0ZTogOTcxOAorLi4gbm9uY2U6IGlTOHhoVgorLi4gc2VjdGlvbjogQnVpbGQKKworVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBTUUxpdGUgMy44LjExLjAuCisKKy4uCisKKy4uIGJwbzogMjcyMjkKKy4uIGRhdGU6IDk3MTcKKy4uIG5vbmNlOiBDMk5EY2gKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeCB0aGUgY3Jvc3MtY29tcGlsaW5nIHBnZW4gcnVsZSBmb3IgaW4tdHJlZSBidWlsZHMuICBQYXRjaCBieSBYYXZpZXIgZGUKK0dheWUuCisKKy4uCisKKy4uIGJwbzogMTc2MDMKKy4uIGRhdGU6IDk3MTYKKy4uIG5vbmNlOiAxMDJEQS0KKy4uIHNlY3Rpb246IEJ1aWxkCisKK0F2b2lkIGVycm9yIGFib3V0IG5vbmV4aXN0YW50IGZpbGVibG9ja3MubyBmaWxlIGJ5IHVzaW5nIGEgbG93ZXItbGV2ZWwgY2hlY2sKK2ZvciBzdF9ibG9ja3MgaW4gc3RydWN0IHN0YXQuCisKKy4uCisKKy4uIGJwbzogMjY0NjUKKy4uIGRhdGU6IDk3MTUKKy4uIG5vbmNlOiBfWVI2MDgKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1VwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmcuCisKKy4uCisKKy4uIGJwbzogMjQ0MjEKKy4uIGRhdGU6IDk3MTQKKy4uIG5vbmNlOiAyelk3dk0KKy4uIHNlY3Rpb246IEJ1aWxkCisKK0NvbXBpbGUgTW9kdWxlcy9fbWF0aC5jIG9uY2UsIGJlZm9yZSBidWlsZGluZyBleHRlbnNpb25zLiBQcmV2aW91c2x5IGl0Citjb3VsZCBmYWlsIHRvIGNvbXBpbGUgcHJvcGVybHkgaWYgdGhlIG1hdGggYW5kIGNtYXRoIGJ1aWxkcyB3ZXJlIGNvbmN1cnJlbnQuCisKKy4uCisKKy4uIGJwbzogMjU4MjQKKy4uIGRhdGU6IDk3MTMKKy4uIG5vbmNlOiB1MEhUb2gKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeGVzIHN5cy53aW52ZXIgdG8gbm90IGluY2x1ZGUgYW55IGFyY2hpdGVjdHVyZSBzdWZmaXguCisKKy4uCisKKy4uIGJwbzogMjUzNDgKKy4uIGRhdGU6IDk3MTIKKy4uIG5vbmNlOiB1Nl9CYVEKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0FkZGVkIGBgLS1wZ29gYCBhbmQgYGAtLXBnby1qb2JgYCBhcmd1bWVudHMgdG8gYGBQQ2J1aWxkXGJ1aWxkLmJhdGBgIGZvcgorYnVpbGRpbmcgd2l0aCBQcm9maWxlLUd1aWRlZCBPcHRpbWl6YXRpb24uICBUaGUgb2xkCitgYFBDYnVpbGRcYnVpbGRfcGdvLmJhdGBgIHNjcmlwdCBpcyBub3cgZGVwcmVjYXRlZCwgYW5kIHNpbXBseSBjYWxscworYGBQQ2J1aWxkXGJ1aWxkLmJhdCAtLXBnbyAlKmBgLgorCisuLgorCisuLiBicG86IDI1ODI3CisuLiBkYXRlOiA5NzExCisuLiBub25jZTogeWczRE1NCisuLiBzZWN0aW9uOiBCdWlsZAorCitBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aCBJQ0MgdG8gYGBjb25maWd1cmVgYCwgaW5jbHVkaW5nIGEgbmV3CitgYC0td2l0aC1pY2NgYCBmbGFnLgorCisuLgorCisuLiBicG86IDI1Njk2CisuLiBkYXRlOiA5NzEwCisuLiBub25jZTogMlJfd0l2CisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggaW5zdGFsbGF0aW9uIG9mIFB5dGhvbiBvbiBVTklYIHdpdGggbWFrZSAtajkuCisKKy4uCisKKy4uIGJwbzogMjY5MzAKKy4uIGRhdGU6IDk3MDkKKy4uIG5vbmNlOiBTcXoyTzMKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1VwZGF0ZSBPUyBYIDEwLjUrIDMyLWJpdC1vbmx5IGluc3RhbGxlciB0byBidWlsZCBhbmQgbGluayB3aXRoIE9wZW5TU0wKKzEuMC4yaC4KKworLi4KKworLi4gYnBvOiAyNjI2OAorLi4gZGF0ZTogOTcwOAorLi4gbm9uY2U6IEkzLVlMaAorLi4gc2VjdGlvbjogQnVpbGQKKworVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yZi4KKworLi4KKworLi4gYnBvOiAyNTEzNgorLi4gZGF0ZTogOTcwNworLi4gbm9uY2U6IFZpLWZtTworLi4gc2VjdGlvbjogQnVpbGQKKworU3VwcG9ydCBBcHBsZSBYY29kZSA3J3MgbmV3IHRleHR1YWwgU0RLIHN0dWIgbGlicmFyaWVzLgorCisuLgorCisuLiBicG86IDI2Nzk5CisuLiBkYXRlOiA5NzA2CisuLiBub25jZTogZ0syVlhYCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitGaXggcHl0aG9uLWdkYi5weTogZG9uJ3QgZ2V0IEMgdHlwZXMgb25jZSB3aGVuIHRoZSBQeXRob24gY29kZSBpcyBsb2FkZWQsCitidXQgZ2V0IEMgdHlwZXMgb24gZGVtYW5kLiBUaGUgQyB0eXBlcyBjYW4gY2hhbmdlIGlmIHB5dGhvbi1nZGIucHkgaXMgbG9hZGVkCitiZWZvcmUgdGhlIFB5dGhvbiBleGVjdXRhYmxlLiBQYXRjaCB3cml0dGVuIGJ5IFRob21hcyBJbHNjaGUuCisKKy4uCisKKy4uIGJwbzogMzAyNTUKKy4uIGRhdGU6IDk3MDUKKy4uIG5vbmNlOiBFR2YtelcKKy4uIHNlY3Rpb246IEMgQVBJCisKK1B5U2xpY2VfR2V0SW5kaWNlc0V4IG5vdyBjbGlwcyB0aGUgc3RlcCB0byBbLVBZX1NTSVpFX1RfTUFYLCBQWV9TU0laRV9UX01BWF0KK2luc3RlYWQgb2YgWy1QWV9TU0laRV9UX01BWC0xLCBQWV9TU0laRV9UX01BWF0uICBUaGlzIG1ha2VzIGl0IHNhZmUgdG8gZG8KKyJzdGVwID0gLXN0ZXAiIHdoZW4gcmV2ZXJzaW5nIGEgc2xpY2UuCisKKy4uCisKKy4uIGJwbzogMjY0NzYKKy4uIGRhdGU6IDk3MDQKKy4uIG5vbmNlOiBvSnJiNnEKKy4uIHNlY3Rpb246IEMgQVBJCisKK0ZpeGVkIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNlIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpIGluIEMrKy4gUGF0Y2ggYnkKK0plcm9lbiBEZW1leWVyLgorCisuLgorCisuLiBicG86IDE3NTAwCisuLiBkYXRlOiA5NzAzCisuLiBub25jZTogUVRaYlJWCisuLiBzZWN0aW9uOiBXaW5kb3dzCisKK1JlbW92ZSB1bnVzZWQgYW5kIG91dGRhdGVkIGljb25zLiAoU2VlIGFsc286CitodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3B5dGhvbmRvdG9yZy9pc3N1ZXMvOTQ1KQpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvMi43LjEzLnJzdCBiL01pc2MvTkVXUy5kLzIuNy4xMy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQwNjVlOAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNy4xMy5yc3QKQEAgLTAsMCArMSw3IEBACisuLiBicG86IDUzMjIKKy4uIGRhdGU6IDk5MjYKKy4uIG5vbmNlOiBfQ2FFaU4KKy4uIHJlbGVhc2UgZGF0ZTogMjAxNi0xMi0xNworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmV2ZXJ0IGEzN2NjM2Q5MjZlYy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy4xM3JjMS5yc3QgYi9NaXNjL05FV1MuZC8yLjcuMTNyYzEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZWY0NTQKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC8yLjcuMTNyYzEucnN0CkBAIC0wLDAgKzEsMTAyNSBAQAorLi4gYnBvOiA1MzIyCisuLiBkYXRlOiA5OTI1CisuLiBub25jZTogOEZxMDU5CisuLiByZWxlYXNlIGRhdGU6IDIwMTYtMTItMDMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIHNldHRpbmcgX19uZXdfXyB0byBhIFB5Q0Z1bmN0aW9uIGluc2lkZSBQeXRob24gY29kZS4gT3JpZ2luYWwgcGF0Y2ggYnkKK0FuZHJlYXMgU3TDvGhyay4KKworLi4KKworLi4gYnBvOiAyODg0NworLi4gZGF0ZTogOTkyNAorLi4gbm9uY2U6IGlHNlZSRAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZHVtYmRibSBubyBsb25nZXIgd3JpdGVzIHRoZSBpbmRleCBmaWxlIGluIHdoZW4gaXQgaXMgbm90IGNoYW5nZWQgYW5kCitzdXBwb3J0cyByZWFkaW5nIHJlYWQtb25seSBmaWxlcy4KKworLi4KKworLi4gYnBvOiAxMTE0NQorLi4gZGF0ZTogOTkyMworLi4gbm9uY2U6IDNCZVphegorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgbWlzY2VsbGFuZW91cyBpc3N1ZXMgd2l0aCBDLXN0eWxlIGZvcm1hdHRpbmcgb2YgdHlwZXMgd2l0aCBjdXN0b20KK19fb2N0X18gYW5kIF9faGV4X18uCisKKy4uCisKKy4uIGJwbzogMjQ0NjkKKy4uIGRhdGU6IDk5MjIKKy4uIG5vbmNlOiBkbDhsSjQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIG1lbW9yeSBsZWFrIGNhdXNlZCBieSBpbnQgc3ViY2xhc3NlcyB3aXRob3V0IG92ZXJyaWRkZW4gdHBfZnJlZSAoZS5nLgorQy1pbmhlcml0ZWQgQ3l0aG9uIGNsYXNzZXMpLgorCisuLgorCisuLiBicG86IDE5Mzk4CisuLiBkYXRlOiA5OTIxCisuLiBub25jZTogUlliRUdICisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitFeHRyYSBzbGFzaCBubyBsb25nZXIgYWRkZWQgdG8gc3lzLnBhdGggY29tcG9uZW50cyBpbiBjYXNlIG9mIGVtcHR5Citjb21waWxlLXRpbWUgUFlUSE9OUEFUSCBjb21wb25lbnRzLgorCisuLgorCisuLiBicG86IDIxNzIwCisuLiBkYXRlOiA5OTIwCisuLiBub25jZTogWFNkNkxJCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbXByb3ZlIGV4Y2VwdGlvbiBtZXNzYWdlIHdoZW4gdGhlIHR5cGUgb2YgZnJvbWxpc3QgaXMgdW5pY29kZS4gZnJvbWxpc3QKK3BhcmFtZXRlciBvZiBfX2ltcG9ydF9fKCkgb25seSBhY2NlcHRzIHN0ciBpbiBQeXRob24gMiBhbmQgdGhpcyB3aWxsIGhlbHAgdG8KK2lkZW50aWZ5IHRoZSBwcm9ibGVtIGVzcGVjaWFsbHkgd2hlbiB0aGUgdW5pY29kZV9saXRlcmFscyBmdXR1cmUgaW1wb3J0IGlzCit1c2VkLgorCisuLgorCisuLiBicG86IDI2OTA2CisuLiBkYXRlOiA5OTE5CisuLiBub25jZTogWUJqY3dJCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSZXNvbHZpbmcgc3BlY2lhbCBtZXRob2RzIG9mIHVuaW5pdGlhbGl6ZWQgdHlwZSBub3cgY2F1c2VzIGltcGxpY2l0Citpbml0aWFsaXphdGlvbiBvZiB0aGUgdHlwZSBpbnN0ZWFkIG9mIGEgZmFpbC4KKworLi4KKworLi4gYnBvOiAxODI4NworLi4gZGF0ZTogOTkxOAorLi4gbm9uY2U6IGs2amZmUworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHlUeXBlX1JlYWR5KCkgbm93IGNoZWNrcyB0aGF0IHRwX25hbWUgaXMgbm90IE5VTEwuIE9yaWdpbmFsIHBhdGNoIGJ5IE5pa2xhcworS29lcC4KKworLi4KKworLi4gYnBvOiAyNDA5OAorLi4gZGF0ZTogOTkxNworLi4gbm9uY2U6IFhxbFBfMQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgcG9zc2libGUgY3Jhc2ggd2hlbiBBU1QgaXMgY2hhbmdlZCBpbiBwcm9jZXNzIG9mIGNvbXBpbGluZyBpdC4KKworLi4KKworLi4gYnBvOiAyODM1MAorLi4gZGF0ZTogOTkxNgorLi4gbm9uY2U6IDhNNUVnOQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU3RyaW5nIGNvbnN0YW50cyB3aXRoIG51bGwgY2hhcmFjdGVyIG5vIGxvbmdlciBpbnRlcm5lZC4KKworLi4KKworLi4gYnBvOiAyNzk0MgorLi4gZGF0ZTogOTkxNQorLi4gbm9uY2U6IFpHdWhucworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU3RyaW5nIGNvbnN0YW50cyBub3cgaW50ZXJuZWQgcmVjdXJzaXZlbHkgaW4gdHVwbGVzIGFuZCBmcm96ZW5zZXRzLgorCisuLgorCisuLiBicG86IDE1NTc4CisuLiBkYXRlOiA5OTE0CisuLiBub25jZTogeFNRV2l1CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitDb3JyZWN0bHkgaW5jcmVmIHRoZSBwYXJlbnQgbW9kdWxlIHdoaWxlIGltcG9ydGluZy4KKworLi4KKworLi4gYnBvOiAyNjMwNworLi4gZGF0ZTogOTkxMworLi4gbm9uY2U6IFB1azJyZAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlIHByb2ZpbGUtb3B0IGJ1aWxkIG5vdyBhcHBsaWVzIFBHTyB0byB0aGUgYnVpbHQtaW4gbW9kdWxlcy4KKworLi4KKworLi4gYnBvOiAyNjAyMAorLi4gZGF0ZTogOTkxMgorLi4gbm9uY2U6IG5pTGJMYQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworc2V0IGxpdGVyYWwgZXZhbHVhdGlvbiBvcmRlciBkaWQgbm90IG1hdGNoIGRvY3VtZW50ZWQgYmVoYXZpb3VyLgorCisuLgorCisuLiBicG86IDI3ODcwCisuLiBkYXRlOiA5OTExCisuLiBub25jZTogWTB1MzR1CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBIGxlZnQgc2hpZnQgb2YgemVybyBieSBhIGxhcmdlIGludGVnZXIgbm8gbG9uZ2VyIGF0dGVtcHRzIHRvIGFsbG9jYXRlIGxhcmdlCithbW91bnRzIG9mIG1lbW9yeS4KKworLi4KKworLi4gYnBvOiAyNTYwNAorLi4gZGF0ZTogOTkxMAorLi4gbm9uY2U6IFVrZUhHeQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgbWlub3IgYnVnIGluIGludGVnZXIgdHJ1ZSBkaXZpc2lvbjsgdGhpcyBidWcgY291bGQgcG90ZW50aWFsbHkgaGF2ZQorY2F1c2VkIG9mZi1ieS1vbmUtdWxwIHJlc3VsdHMgb24gcGxhdGZvcm1zIHdpdGggdW5yZWxpYWJsZSBsZGV4cAoraW1wbGVtZW50YXRpb25zLgorCisuLgorCisuLiBicG86IDI3NDczCisuLiBkYXRlOiA5OTA5CisuLiBub25jZTogZDhIV3plCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIHN0ciwgdW5pY29kZSBhbmQgYnl0ZWFycmF5IGNvbmNhdGVuYXRpb25zCithbmQgcmVwZXRpdGlvbnMuICBCYXNlZCBvbiBwYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLi4KKworLi4gYnBvOiAyNzUwNworLi4gZGF0ZTogOTkwOAorLi4gbm9uY2U6IDNwWDBCZQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQWRkIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy4uCisKKy4uIGJwbzogMjc1ODEKKy4uIGRhdGU6IDk5MDcKKy4uIG5vbmNlOiBLZXpqTnQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0Rvbid0IHJlbHkgb24gd3JhcHBpbmcgZm9yIG92ZXJmbG93IGNoZWNrIGluIFB5U2VxdWVuY2VfVHVwbGUoKS4gIFBhdGNoIGJ5CitYaWFuZyBaaGFuZy4KKworLi4KKworLi4gYnBvOiAyMzkwOAorLi4gZGF0ZTogOTkwNgorLi4gbm9uY2U6IHhYTDZfYworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworb3MgZnVuY3Rpb25zLCBvcGVuKCkgYW5kIHRoZSBpby5GaWxlSU8gY29uc3RydWN0b3Igbm93IHJlamVjdCB1bmljb2RlIHBhdGhzCit3aXRoIGVtYmVkZGVkIG51bGwgY2hhcmFjdGVyIG9uIFdpbmRvd3MgaW5zdGVhZCBvZiBzaWxlbnRseSB0cnVuY2F0aW5nIHRoZW0uCisKKy4uCisKKy4uIGJwbzogMjc1MTQKKy4uIGRhdGU6IDk5MDUKKy4uIG5vbmNlOiBOTGJ3UEcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK01ha2UgaGF2aW5nIHRvbyBtYW55IHN0YXRpY2FsbHkgbmVzdGVkIGJsb2NrcyBhIFN5bnRheEVycm9yIGluc3RlYWQgb2YKK1N5c3RlbUVycm9yLgorCisuLgorCisuLiBicG86IDI1NjU5CisuLiBkYXRlOiA5OTA0CisuLiBub25jZTogbEUySWxUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIGN0eXBlcywgcHJldmVudCBhIGNyYXNoIGNhbGxpbmcgdGhlIGZyb21fYnVmZmVyKCkgYW5kIGZyb21fYnVmZmVyX2NvcHkoKQorbWV0aG9kcyBvbiBhYnN0cmFjdCBjbGFzc2VzIGxpa2UgQXJyYXkuCisKKy4uCisKKy4uIGJwbzogMjg1NjMKKy4uIGRhdGU6IDk5MDMKKy4uIG5vbmNlOiBpd2VFaXcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgcG9zc2libGUgRG9TIGFuZCBhcmJpdHJhcnkgY29kZSBleGVjdXRpb24gd2hlbiBoYW5kbGUgcGx1cmFsIGZvcm0KK3NlbGVjdGlvbnMgaW4gdGhlIGdldHRleHQgbW9kdWxlLiAgVGhlIGV4cHJlc3Npb24gcGFyc2VyIG5vdyBzdXBwb3J0cyBleGFjdAorc3ludGF4IHN1cHBvcnRlZCBieSBHTlUgZ2V0dGV4dC4KKworLi4KKworLi4gYnBvOiAyODM4NworLi4gZGF0ZTogOTkwMgorLi4gbm9uY2U6IDFjbEp1NworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBwb3NzaWJsZSBjcmFzaCBpbiBfaW8uVGV4dElPV3JhcHBlciBkZWFsbG9jYXRvciB3aGVuIHRoZSBnYXJiYWdlCitjb2xsZWN0b3IgaXMgaW52b2tlZCBpbiBvdGhlciB0aHJlYWQuICBCYXNlZCBvbiBwYXRjaCBieSBTZWJhc3RpYW4gQ3VmcmUuCisKKy4uCisKKy4uIGJwbzogMjg0NDkKKy4uIGRhdGU6IDk5MDEKKy4uIG5vbmNlOiA1Sks2RVMKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGFyZmlsZS5vcGVuKCkgd2l0aCBtb2RlICJyIiBvciAicjoiIG5vdyB0cmllcyB0byBvcGVuIGEgdGFyIGZpbGUgd2l0aAorY29tcHJlc3Npb24gYmVmb3JlIHRyeWluZyB0byBvcGVuIGl0IHdpdGhvdXQgY29tcHJlc3Npb24uICBPdGhlcndpc2UgaXQgaGFkCis1MCUgY2hhbmNlIGZhaWxlZCB3aXRoIGlnbm9yZV96ZXJvcz1UcnVlLgorCisuLgorCisuLiBicG86IDI1NDY0CisuLiBkYXRlOiA5OTAwCisuLiBub25jZTogRFRHYmJyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIEhMaXN0LmhlYWRlcl9leGlzdHMoKSBpbiBUaXggbW9kdWxlIGJ5IGFkZGluZyBhIHdvcmthcm91bmQgdG8gVGl4CitsaWJyYXJ5IGJ1Zy4KKworLi4KKworLi4gYnBvOiAyODQ4OAorLi4gZGF0ZTogOTg5OQorLi4gbm9uY2U6IFRnTzExMgorLi4gc2VjdGlvbjogTGlicmFyeQorCitzaHV0aWwubWFrZV9hcmNoaXZlKCkgbm8gbG9uZ2VyIGFkZHMgZW50cnkgIi4vIiB0byBaSVAgYXJjaGl2ZS4KKworLi4KKworLi4gYnBvOiAyODQ4MAorLi4gZGF0ZTogOTg5OAorLi4gbm9uY2U6IFFoNFhlcQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggZXJyb3IgYnVpbGRpbmcgX3NxbGl0ZTMgbW9kdWxlIHdoZW4gbXVsdGl0aHJlYWRpbmcgaXMgZGlzYWJsZWQuCisKKy4uCisKKy4uIGJwbzogMjQ0NTIKKy4uIGRhdGU6IDk4OTcKKy4uIG5vbmNlOiBtOUt5ZzMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSB3ZWJicm93c2VyIHN1cHBvcnQgQ2hyb21lIG9uIE1hYyBPUyBYLgorCisuLgorCisuLiBicG86IDI2MjkzCisuLiBkYXRlOiA5ODk2CisuLiBub25jZTogMm1qdndYCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHdyaXRpbmcgWklQIGZpbGVzIHRoYXQgc3RhcnRzIG5vdCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gIE9mZnNldHMKK2luIFpJUCBmaWxlIG5vdyBhcmUgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBhcmNoaXZlIGluIGNvbmZvcm1pbmcgdG8KK3RoZSBzcGVjaWZpY2F0aW9uLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDk4OTUKKy4uIG5vbmNlOiA4MWpObnMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3dzIGFuZCBjcmFzaGVzIGluIHRoZSBtbWFwIG1vZHVsZSB3aXRoIHVudXN1YWwKK3VzYWdlIHBhdHRlcm5zLgorCisuLgorCisuLiBicG86IDI3ODk3CisuLiBkYXRlOiA5ODk0CisuLiBub25jZTogd2ZXZTlCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHBvc3NpYmxlIGNyYXNoIGluIHNxbGl0ZTMuQ29ubmVjdGlvbi5jcmVhdGVfY29sbGF0aW9uKCkgaWYgcGFzcworaW52YWxpZCBzdHJpbmctbGlrZSBvYmplY3QgYXMgYSBuYW1lLiAgT3JpZ2luYWwgcGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy4uCisKKy4uIGJwbzogMTcwMzE3OAorLi4gZGF0ZTogOTg5MworLi4gbm9uY2U6IG1lYjQ5SworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIGFiaWxpdHkgdG8gcGFzcyB0aGUgLS1saW5rLW9iamVjdHMgb3B0aW9uIHRvIHRoZSBkaXN0dXRpbHMgYnVpbGRfZXh0Citjb21tYW5kLgorCisuLgorCisuLiBicG86IDI4MjUzCisuLiBkYXRlOiA5ODkyCisuLiBub25jZTogYUxmbWhlCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGNhbGVuZGFyIGZ1bmN0aW9ucyBmb3IgZXh0cmVtZSBtb250aHM6IDAwMDEtMDEgYW5kIDk5OTktMTIuCisKK01ldGhvZHMgaXRlcm1vbnRoZGF5cygpIGFuZCBpdGVybW9udGhkYXlzMigpIGFyZSByZWltcGxlbWVudGVkIHNvIHRoYXQgdGhleQorZG9uJ3QgY2FsbCBpdGVybW9udGhkYXRlcygpIHdoaWNoIGNhbiBjYXVzZSBkYXRldGltZS5kYXRlIHVuZGVyL292ZXJmbG93LgorCisuLgorCisuLiBicG86IDI3OTYzCisuLiBkYXRlOiA5ODkxCisuLiBub25jZTogWERncjNMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHBvc3NpYmxlIG51bGwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBjdHlwZXMuc2V0X2NvbnZlcnNpb25fbW9kZSgpLgorUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy4uCisKKy4uIGJwbzogMjgyODQKKy4uIGRhdGU6IDk4OTAKKy4uIG5vbmNlOiBrSGJoN2UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU3RyZW5ndGhlbiByZXNpc3RhbmNlIG9mIGBgX2pzb24uZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkoKWBgIHRvIGludGVnZXIKK292ZXJmbG93LgorCisuLgorCisuLiBicG86IDI3NjExCisuLiBkYXRlOiA5ODg5CisuLiBub25jZTogeWZPa0Q2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHN1cHBvcnQgb2YgZGVmYXVsdCByb290IHdpbmRvdyBpbiB0aGUgVGl4IG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAyNDM2MworLi4gZGF0ZTogOTg4OAorLi4gbm9uY2U6IFBWUWc3cgorLi4gc2VjdGlvbjogTGlicmFyeQorCitXaGVuIHBhcnNpbmcgSFRUUCBoZWFkZXIgZmllbGRzLCBpZiBhbiBpbnZhbGlkIGxpbmUgaXMgZW5jb3VudGVyZWQsIHNraXAgaXQKK2FuZCBjb250aW51ZSBwYXJzaW5nLiAgUHJldmlvdXNseSwgbm8gbW9yZSBoZWFkZXIgZmllbGRzIHdlcmUgcGFyc2VkLCB3aGljaAorY291bGQgbGVhZCB0byBmaWVsZHMgZm9yIEhUVFAgZnJhbWluZyBsaWtlIENvbnRlbnQtTGVuZ3RoIGFuZAorVHJhbnNmZXItRW5jb2RpbmcgYmVpbmcgb3Zlcmxvb2tlZC4KKworLi4KKworLi4gYnBvOiAyNzU5OQorLi4gZGF0ZTogOTg4NworLi4gbm9uY2U6IGl0dm04VAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBidWZmZXIgb3ZlcnJ1biBpbiBiaW5hc2NpaS5iMmFfcXAoKSBhbmQgYmluYXNjaWkuYTJiX3FwKCkuCisKKy4uCisKKy4uIGJwbzogMjU5NjkKKy4uIGRhdGU6IDk4ODYKKy4uIG5vbmNlOiBxU1BrbC0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXBkYXRlIHRoZSBsaWIydG8zIGdyYW1tYXIgdG8gaGFuZGxlIHRoZSB1bnBhY2tpbmcgZ2VuZXJhbGl6YXRpb25zIGFkZGVkIGluCiszLjUuCisKKy4uCisKKy4uIGJwbzogMjQ1OTQKKy4uIGRhdGU6IDk4ODUKKy4uIG5vbmNlOiA5Q25GVlMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVmFsaWRhdGVzIHBlcnNpc3QgcGFyYW1ldGVyIHdoZW4gb3BlbmluZyBNU0kgZGF0YWJhc2UKKworLi4KKworLi4gYnBvOiAyNzU3MAorLi4gZGF0ZTogOTg4NAorLi4gbm9uY2U6IHBVMFppZQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBdm9pZCB6ZXJvLWxlbmd0aCBtZW1jcHkoKSBldGMgY2FsbHMgd2l0aCBudWxsIHNvdXJjZSBwb2ludGVycyBpbiB0aGUKKyJjdHlwZXMiIGFuZCAiYXJyYXkiIG1vZHVsZXMuCisKKy4uCisKKy4uIGJwbzogMjI0NTAKKy4uIGRhdGU6IDk4ODMKKy4uIG5vbmNlOiBhV3BkZGUKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordXJsbGliIG5vdyBpbmNsdWRlcyBhbiAiQWNjZXB0OiAqLyoiIGhlYWRlciBhbW9uZyB0aGUgZGVmYXVsdCBoZWFkZXJzLiAgVGhpcworbWFrZXMgdGhlIHJlc3VsdHMgb2YgUkVTVCBBUEkgcmVxdWVzdHMgbW9yZSBjb25zaXN0ZW50IGFuZCBwcmVkaWN0YWJsZQorZXNwZWNpYWxseSB3aGVuIHByb3h5IHNlcnZlcnMgYXJlIGludm9sdmVkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDk4ODIKKy4uIG5vbmNlOiBQVlpTdFIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbGliMnRvMy5wZ2VuMy5kcml2ZXIubG9hZF9ncmFtbWFyKCkgbm93IGNyZWF0ZXMgYSBzdGFibGUgY2FjaGUgZmlsZSBiZXR3ZWVuCitydW5zIGdpdmVuIHRoZSBzYW1lIEdyYW1tYXIudHh0IGlucHV0IHJlZ2FyZGxlc3Mgb2YgdGhlIGhhc2ggcmFuZG9taXphdGlvbgorc2V0dGluZy4KKworLi4KKworLi4gYnBvOiAyNzY5MQorLi4gZGF0ZTogOTg4MQorLi4gbm9uY2U6IFRNWUY1XworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc3NsIG1vZHVsZSdzIHBhcnNpbmcgb2YgR0VOX1JJRCBzdWJqZWN0IGFsdGVybmF0aXZlIG5hbWUgZmllbGRzIGluIFguNTA5CitjZXJ0cy4KKworLi4KKworLi4gYnBvOiAyNzg1MAorLi4gZGF0ZTogOTg4MAorLi4gbm9uY2U6IGtJVlEwbQorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmUgM0RFUyBmcm9tIHNzbCBtb2R1bGUncyBkZWZhdWx0IGNpcGhlciBsaXN0IHRvIGNvdW50ZXIgbWVhc3VyZSBzd2VldDMyCithdHRhY2sgKENWRS0yMDE2LTIxODMpLgorCisuLgorCisuLiBicG86IDI3NzY2CisuLiBkYXRlOiA5ODc5CisuLiBub25jZTogV0k3MFRjCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBDaGFDaGEyMCBQb2x5MTMwNSB0byBzc2wgbW9kdWxlJ3MgZGVmYXVsdCBjaXBlciBsaXN0LiAoUmVxdWlyZWQgT3BlblNTTAorMS4xLjAgb3IgTGlicmVTU0wpLgorCisuLgorCisuLiBicG86IDI2NDcwCisuLiBkYXRlOiA5ODc4CisuLiBub25jZTogUUd1X3dvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1BvcnQgc3NsIGFuZCBoYXNobGliIG1vZHVsZSB0byBPcGVuU1NMIDEuMS4wLgorCisuLgorCisuLiBicG86IDI3OTQ0CisuLiBkYXRlOiA5ODc3CisuLiBub25jZTogRVZYZGZrCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzb21lIG1lbW9yeS1jb3JydXB0aW9uIGJ1Z3MgaW4gdGhlIGxvZyByZWFkaW5nIGNvZGUgb2YgdGhlIF9ob3RzaG90Cittb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMjc5MzQKKy4uIGRhdGU6IDk4NzYKKy4uIG5vbmNlOiB1Y1FFM3AKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXNlIGBgZmxvYXQuX19yZXByX19gYCBpbnN0ZWFkIG9mIHBsYWluIGBgcmVwcmBgIHdoZW4gSlNPTi0gZW5jb2RpbmcgYW4KK2luc3RhbmNlIG9mIGEgZmxvYXQgc3ViY2xhc3MuIFRoYW5rcyBFZGRpZSBKYW1lcy4KKworLi4KKworLi4gYnBvOiAyNzg2MQorLi4gZGF0ZTogOTg3NQorLi4gbm9uY2U6IERCWXVvOQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIGNyYXNoIGluIHNxbGl0ZTMuQ29ubmVjdGlvbi5jdXJzb3IoKSB3aGVuIGEgZmFjdG9yeSBjcmVhdGVzIG5vdCBhCitjdXJzb3IuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLi4KKworLi4gYnBvOiAxOTg4NAorLi4gZGF0ZTogOTg3NAorLi4gbm9uY2U6IE1POEFXSAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBdm9pZCBzcHVyaW91cyBvdXRwdXQgb24gT1MgWCB3aXRoIEdudSBSZWFkbGluZS4KKworLi4KKworLi4gYnBvOiAxMDUxMworLi4gZGF0ZTogOTg3MworLi4gbm9uY2U6IHRRSVFEXworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSByZWdyZXNzaW9uIGluIENvbm5lY3Rpb24uY29tbWl0KCkuICBTdGF0ZW1lbnRzIHNob3VsZCBub3QgYmUgcmVzZXQKK2FmdGVyIGEgY29tbWl0LgorCisuLgorCisuLiBicG86IDI0NjYKKy4uIGRhdGU6IDk4NzIKKy4uIG5vbmNlOiBWUk5sa2cKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcG9zaXhwYXRoLmlzbW91bnQgbm93IGNvcnJlY3RseSByZWNvZ25pemVzIG1vdW50IHBvaW50cyB3aGljaCB0aGUgdXNlciBkb2VzCitub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2Vzcy4KKworLi4KKworLi4gYnBvOiAyNzc4MworLi4gZGF0ZTogOTg3MQorLi4gbm9uY2U6IDZmQ0NZOQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcG9zc2libGUgdXNhZ2Ugb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gb3BlcmF0b3IubWV0aG9kY2FsbGVyLgorCisuLgorCisuLiBicG86IDI3Nzc0CisuLiBkYXRlOiA5ODcwCisuLiBub25jZTogRkRjaWsxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwb3NzaWJsZSBQeV9ERUNSRUYgb24gdW5vd25lZCBvYmplY3QgaW4gX3NyZS4KKworLi4KKworLi4gYnBvOiAyNzc2MAorLi4gZGF0ZTogOTg2OQorLi4gbm9uY2U6IGd4TWpwNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiBiaW5hc2NpaS5iMmFfcXAuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTg2OAorLi4gbm9uY2U6IE55OW9QdgorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiB0aGUgY3Vyc2VzIG1vZHVsZSwgcmFpc2UgYW4gZXJyb3IgaWYgd2luZG93LmdldHN0cigpIG9yIHdpbmRvdy5pbnN0cigpIGlzCitwYXNzZWQgYSBuZWdhdGl2ZSB2YWx1ZS4KKworLi4KKworLi4gYnBvOiAyNzc1OAorLi4gZGF0ZTogOTg2NworLi4gbm9uY2U6IHg5REM0UgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiB0aGUgX2NzdiBtb2R1bGUgZm9yIGxhcmdlIHJlY29yZCBsZW5ndGhzLgorCisuLgorCisuLiBicG86IDIzMzY5CisuLiBkYXRlOiA5ODY2CisuLiBub25jZTogbnFDaHlFCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3cgaW4gX2pzb24uZW5jb2RlX2Jhc2VzdHJpbmdfYXNjaWkuCisKKy4uCisKKy4uIGJwbzogMjc1NjgKKy4uIGRhdGU6IDk4NjUKKy4uIG5vbmNlOiBPbnVPOXMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJldmVudCBIVFRQb3h5IGF0dGFjayAoQ1ZFLTIwMTYtMTAwMDExMCkuIElnbm9yZSB0aGUgSFRUUF9QUk9YWSB2YXJpYWJsZQord2hlbiBSRVFVRVNUX01FVEhPRCBlbnZpcm9ubWVudCBpcyBzZXQsIHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBzY3JpcHQgaXMKK2luIENHSSBtb2RlLgorCisuLgorCisuLiBicG86IDI3MTMwCisuLiBkYXRlOiA5ODY0CisuLiBub25jZTogelZ2TkR0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHRoZSAiemxpYiIgbW9kdWxlLCBmaXggaGFuZGxpbmcgb2YgbGFyZ2UgYnVmZmVycyAodHlwaWNhbGx5IDIgb3IgNCBHaUIpLgorUHJldmlvdXNseSwgaW5wdXRzIHdlcmUgbGltaXRlZCB0byAyIEdpQiwgYW5kIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uCitvcGVyYXRpb25zIGRpZCBub3QgcHJvcGVybHkgaGFuZGxlIHJlc3VsdHMgb2YgMiBvciA0IEdpQi4KKworLi4KKworLi4gYnBvOiAyMzgwNAorLi4gZGF0ZTogOTg2MworLi4gbm9uY2U6IGlwRnZ4YworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggU1NMIHplcm8tbGVuZ3RoIHJlY3YoKSBjYWxscyB0byBub3QgYmxvY2sgYW5kIG5vdCByYWlzZSBhbiBlcnJvciBhYm91dAordW5jbGVhbiBFT0YuCisKKy4uCisKKy4uIGJwbzogMjc0NjYKKy4uIGRhdGU6IDk4NjIKKy4uIG5vbmNlOiBDXzNhOEUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ2hhbmdlIHRpbWUgZm9ybWF0IHJldHVybmVkIGJ5IGh0dHAuY29va2llLnRpbWUybmV0c2NhcGUsIGNvbmZpcm1pbmcgdGhlCituZXRzY2FwZSBjb29raWUgZm9ybWF0IGFuZCBtYWtpbmcgaXQgY29uc2lzdGVudCB3aXRoIGRvY3VtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogMjIxMTUKKy4uIGRhdGU6IDk4NjEKKy4uIG5vbmNlOiBWcGoyYUgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgdHJhY2luZyBUa2ludGVyIHZhcmlhYmxlczogdHJhY2VfdmRlbGV0ZSgpIHdpdGggd3JvbmcgbW9kZSBubyBsb25nZXIKK2JyZWFrIHRyYWNpbmcsIHRyYWNlX3ZpbmZvKCkgbm93IGFsd2F5cyByZXR1cm5zIGEgbGlzdCBvZiBwYWlycyBvZiBzdHJpbmdzLgorCisuLgorCisuLiBicG86IDI3MDc5CisuLiBkYXRlOiA5ODYwCisuLiBub25jZTogYzdkMFltCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGN1cnNlcy5hc2NpaSBmdW5jdGlvbnMgaXNibGFuaygpLCBpc2NudHJsKCkgYW5kIGlzcHVuY3QoKS4KKworLi4KKworLi4gYnBvOiAyMjYzNgorLi4gZGF0ZTogOTg1OQorLi4gbm9uY2U6IDNmUVdfZworLi4gc2VjdGlvbjogTGlicmFyeQorCitBdm9pZCBzaGVsbCBpbmplY3Rpb24gcHJvYmxlbXMgd2l0aCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkoKS4KKworLi4KKworLi4gYnBvOiAyNzMzMAorLi4gZGF0ZTogOTg1OAorLi4gbm9uY2U6IEdKYUZDVgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBwb3NzaWJsZSBsZWFrcyBpbiB0aGUgY3R5cGVzIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAyNzIzOAorLi4gZGF0ZTogOTg1NworLi4gbm9uY2U6IFE2djZRdgorLi4gc2VjdGlvbjogTGlicmFyeQorCitHb3QgcmlkIG9mIGJhcmUgZXhjZXB0cyBpbiB0aGUgdHVydGxlIG1vZHVsZS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEplbGxlCitaaWpsc3RyYS4KKworLi4KKworLi4gYnBvOiAyNjM4NgorLi4gZGF0ZTogOTg1NgorLi4gbm9uY2U6IDlMM1V0NAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0dGsuVHJlZVZpZXcgc2VsZWN0aW9uIG9wZXJhdGlvbnMgd2l0aCBpdGVtIGlkJ3MgY29udGFpbmluZyBzcGFjZXMuCisKKy4uCisKKy4uIGJwbzogMjU0NTUKKy4uIGRhdGU6IDk4NTUKKy4uIG5vbmNlOiB0al80OWYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYSBjcmFzaCBpbiByZXByIG9mIGNFbGVtZW50VHJlZS5FbGVtZW50IHdpdGggcmVjdXJzaXZlIHRhZy4KKworLi4KKworLi4gYnBvOiAyMTIwMQorLi4gZGF0ZTogOTg1NAorLi4gbm9uY2U6IHdMQ0tpQQorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbXByb3ZlcyByZWFkYWJpbGl0eSBvZiBtdWx0aXByb2Nlc3NpbmcgZXJyb3IgbWVzc2FnZS4gIFRoYW5rcyB0byBXb2pjaWVjaAorV2FsY3phayBmb3IgcGF0Y2guCisKKy4uCisKKy4uIGJwbzogMjc4NTQKKy4uIGRhdGU6IDk4NTMKKy4uIG5vbmNlOiA4TF9USmIKKy4uIHNlY3Rpb246IElETEUKKworTWFrZSBIZWxwID0+IElETEUgSGVscCB3b3JrIGFnYWluIG9uIFdpbmRvd3MuIEluY2x1ZGUgaWRsZWxpYi9oZWxwLmh0bWwgaW4KKzIuNyBXaW5kb3dzIGluc3RhbGxlci4KKworLi4KKworLi4gYnBvOiAyNTUwNworLi4gZGF0ZTogOTg1MgorLi4gbm9uY2U6IGJRVnNNWgorLi4gc2VjdGlvbjogSURMRQorCitBZGQgYmFjayBpbXBvcnQgbmVlZGVkIGZvciAyLnggZW5jb2Rpbmcgd2FybmluZyBib3guIEFkZCBwb2ludGVyIHRvCisnRW5jb2RpbmcgZGVjbGFyYXRpb24nIGluIExhbmd1YWdlIFJlZmVyZW5jZS4KKworLi4KKworLi4gYnBvOiAxNTMwOAorLi4gZGF0ZTogOTg1MQorLi4gbm9uY2U6IHpaeG44bQorLi4gc2VjdGlvbjogSURMRQorCitBZGQgJ2ludGVycnVwdCBleGVjdXRpb24nICheQykgdG8gU2hlbGwgbWVudS4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3ksIHVwZGF0ZWQKK2J5IEJheWFyZCBSYW5kZWwuCisKKy4uCisKKy4uIGJwbzogMjc5MjIKKy4uIGRhdGU6IDk4NTAKKy4uIG5vbmNlOiBVRXRFdjkKKy4uIHNlY3Rpb246IElETEUKKworU3RvcCBJRExFIHRlc3RzIGZyb20gJ2ZsYXNoaW5nJyBndWkgd2lkZ2V0cyBvbiB0aGUgc2NyZWVuLgorCisuLgorCisuLiBicG86IDE3NjQyCisuLiBkYXRlOiA5ODQ5CisuLiBub25jZTogQjBCTk9CCisuLiBzZWN0aW9uOiBJRExFCisKK2FkZCBsYXJnZXIgZm9udCBzaXplcyBmb3IgY2xhc3Nyb29tIHByb2plY3Rpb24uCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTg0OAorLi4gbm9uY2U6IHpXWnM2bworLi4gc2VjdGlvbjogSURMRQorCitBZGQgdmVyc2lvbiB0byB0aXRsZSBvZiBJRExFIGhlbHAgd2luZG93LgorCisuLgorCisuLiBicG86IDI1NTY0CisuLiBkYXRlOiA5ODQ3CisuLiBub25jZTogR04wcDE0CisuLiBzZWN0aW9uOiBJRExFCisKK0luIHNlY3Rpb24gb24gSURMRSAtLSBjb25zb2xlIGRpZmZlcmVuY2VzLCBtZW50aW9uIHRoYXQgdXNpbmcgZXhlYyBtZWFucwordGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCisKKy4uCisKKy4uIGJwbzogMjc3MTQKKy4uIGRhdGU6IDk4NDYKKy4uIG5vbmNlOiBiVUVEc0kKKy4uIHNlY3Rpb246IElETEUKKwordGV4dF90ZXh0dmlldyBhbmQgdGVzdF9hdXRvY29tcGxldGUgbm93IHBhc3Mgd2hlbiByZS1ydW4gaW4gdGhlIHNhbWUKK3Byb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZSAtdyBvcHRpb24gYnV0Cit3aXRob3V0IC1qbi4gIEZpeCB3YXJuaW5nIGZyb20gdGVzdF9jb25maWcuCisKKy4uCisKKy4uIGJwbzogMjc0NTIKKy4uIGRhdGU6IDk4NDUKKy4uIG5vbmNlOiBSdFdueVIKKy4uIHNlY3Rpb246IElETEUKKworYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCisKKy4uCisKKy4uIGJwbzogMjczNjUKKy4uIGRhdGU6IDk4NDQKKy4uIG5vbmNlOiB5N3lzX0EKKy4uIHNlY3Rpb246IElETEUKKworQWxsb3cgbm9uLWFzY2lpIGNoYXJzIGluIElETEUgTkVXUy50eHQsIGZvciBjb250cmlidXRvciBuYW1lcy4KKworLi4KKworLi4gYnBvOiAyNzI0NQorLi4gZGF0ZTogOTg0MworLi4gbm9uY2U6IHU5YUtPMQorLi4gc2VjdGlvbjogSURMRQorCitJRExFOiBDbGVhbmx5IGRlbGV0ZSBjdXN0b20gdGhlbWVzIGFuZCBrZXkgYmluZGluZ3MuIFByZXZpb3VzbHksIHdoZW4gSURMRQord2FzIHN0YXJ0ZWQgZnJvbSBhIGNvbnNvbGUgb3IgYnkgaW1wb3J0LCBhIGNhc2NhZGUgb2Ygd2FybmluZ3Mgd2FzIGVtaXR0ZWQuCitQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCisuLgorCisuLiBicG86IDI4NTEzCisuLiBkYXRlOiA5ODQyCisuLiBub25jZTogTDNqb0F6CisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0RvY3VtZW50ZWQgY29tbWFuZC1saW5lIGludGVyZmFjZSBvZiB6aXBmaWxlLgorCisuLgorCisuLiBicG86IDE2NDg0CisuLiBkYXRlOiA5ODQxCisuLiBub25jZTogSVR6Y0dnCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0NoYW5nZSB0aGUgZGVmYXVsdCBQWVRIT05ET0NTIFVSTCB0byAiaHR0cHM6IiwgYW5kIGZpeCB0aGUgcmVzdWx0aW5nIGxpbmtzCit0byB1c2UgbG93ZXJjYXNlLiAgUGF0Y2ggYnkgU2VhbiBSb2RtYW4sIHRlc3QgYnkgS2F1c2hpayBOYWRpa3VkaXRpLgorCisuLgorCisuLiBicG86IDI4NjY2CisuLiBkYXRlOiA5ODQwCisuLiBub25jZTogc2JHVjJLCisuLiBzZWN0aW9uOiBUZXN0cworCitOb3cgdGVzdC50ZXN0X3N1cHBvcnQucm10cmVlIGlzIGFibGUgdG8gcmVtb3ZlIHVud3JpdGFibGUgb3IgdW5yZWFkYWJsZQorZGlyZWN0b3JpZXMuCisKKy4uCisKKy4uIGJwbzogMjM4MzkKKy4uIGRhdGU6IDk4MzkKKy4uIG5vbmNlOiB6c1RfTDkKKy4uIHNlY3Rpb246IFRlc3RzCisKK1ZhcmlvdXMgY2FjaGVzIG5vdyBhcmUgY2xlYXJlZCBiZWZvcmUgcnVubmluZyBldmVyeSB0ZXN0IGZpbGUuCisKKy4uCisKKy4uIGJwbzogMjczNjkKKy4uIGRhdGU6IDk4MzgKKy4uIG5vbmNlOiBMRzdVMkQKKy4uIHNlY3Rpb246IFRlc3RzCisKK0luIHRlc3RfcHlleHBhdCwgYXZvaWQgdGVzdGluZyBhbiBlcnJvciBtZXNzYWdlIGRldGFpbCB0aGF0IGNoYW5nZWQgaW4gRXhwYXQKKzIuMi4wLgorCisuLgorCisuLiBicG86IDEwNjU2CisuLiBkYXRlOiA5ODM3CisuLiBub25jZTogcFI4RkZVCisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggb3V0LW9mLXRyZWUgYnVpbGRpbmcgb24gQUlYLiAgUGF0Y2ggYnkgVHJpc3RhbiBDYXJlbCBhbmQgTWljaGFlbAorSGF1YmVud2FsbG5lci4KKworLi4KKworLi4gYnBvOiAyNjM1OQorLi4gZGF0ZTogOTgzNgorLi4gbm9uY2U6IENMejZxeQorLi4gc2VjdGlvbjogQnVpbGQKKworUmVuYW1lIC0td2l0aC1vcHRpbWlhdGlvbnMgdG8gLS1lbmFibGUtb3B0aW1pemF0aW9ucy4KKworLi4KKworLi4gYnBvOiAyODI0OAorLi4gZGF0ZTogOTgzNQorLi4gbm9uY2U6IEtZXy1lbgorLi4gc2VjdGlvbjogQnVpbGQKKworVXBkYXRlIFdpbmRvd3MgYnVpbGQgYW5kIE9TIFggaW5zdGFsbGVycyB0byB1c2UgT3BlblNTTCAxLjAuMmouCisKKy4uCisKKy4uIGJwbzogMjgyNTgKKy4uIGRhdGU6IDk4MzQKKy4uIG5vbmNlOiBwUU5VSWQKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeGVkIGJ1aWxkIHdpdGggRXN0b25pYW4gbG9jYWxlIChkaXN0Y2xlYW4gdGFyZ2V0IGluIE1ha2VmaWxlKS4gIFBhdGNoIGJ5CitBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcy4KKworLi4KKworLi4gYnBvOiAyNjY2MQorLi4gZGF0ZTogOTgzMworLi4gbm9uY2U6IFpfSE5icworLi4gc2VjdGlvbjogQnVpbGQKKworc2V0dXAucHkgbm93IGRldGVjdHMgc3lzdGVtIGxpYmZmaSB3aXRoIG11bHRpYXJjaCB3cmFwcGVyLgorCisuLgorCisuLiBicG86IDE1ODE5CisuLiBkYXRlOiA5ODMyCisuLiBub25jZTogV2kzbmFYCisuLiBzZWN0aW9uOiBCdWlsZAorCitUaGUgSW5jbHVkZSBkaXJlY3RvcnkgaW4gdGhlIGJ1aWxkIHRyZWUgaXMgYWxyZWFkeSBzZWFyY2hlZDsgZHJvcCB1bnVzZWQKK2NvZGUgdHJ5aW5nIHRvIGFkZCBpdCBhZ2Fpbi4KKworLi4KKworLi4gYnBvOiAyNzU2NgorLi4gZGF0ZTogOTgzMQorLi4gbm9uY2U6IHhEV2pFYgorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IGNsZWFuIHRhcmdldCBpbiBmcmVlemUgbWFrZWZpbGUgKHBhdGNoIGJ5IExpc2EgUm9hY2gpCisKKy4uCisKKy4uIGJwbzogMjc5ODMKKy4uIGRhdGU6IDk4MzAKKy4uIG5vbmNlOiBqTF8xbjgKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0NhdXNlIGxhY2sgb2YgbGx2bS1wcm9mZGF0YSB0b29sIHdoZW4gdXNpbmcgY2xhbmcgYXMgcmVxdWlyZWQgZm9yIFBHTworbGlua2luZyB0byBiZSBhIGNvbmZpZ3VyZSB0aW1lIGVycm9yIHJhdGhlciB0aGFuIG1ha2UgdGltZSB3aGVuCitgYC0td2l0aC1vcHRpbWl6YXRpb25zYGAgaXMgZW5hYmxlZC4gIEFsc28gaW1wcm92ZSBvdXIgYWJpbGl0eSB0byBmaW5kIHRoZQorbGx2bS1wcm9mZGF0YSB0b29sIG9uIE1hY09TIGFuZCBzb21lIExpbnV4ZXMuCisKKy4uCisKKy4uIGJwbzogMjYzNTkKKy4uIGRhdGU6IDk4MjkKKy4uIG5vbmNlOiBXWEJMLVkKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0FkZCB0aGUgLS13aXRoLW9wdGltaXphdGlvbnMgY29uZmlndXJlIGZsYWcuCisKKy4uCisKKy4uIGJwbzogMTA5MTAKKy4uIGRhdGU6IDk4MjgKKy4uIG5vbmNlOiBaZFJheWIKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0F2b2lkIEMrKyBjb21waWxhdGlvbiBlcnJvcnMgb24gRnJlZUJTRCBhbmQgT1MgWC4gQWxzbyB1cGRhdGUgRnJlZWRCU0QKK3ZlcnNpb24gY2hlY2tzIGZvciB0aGUgb3JpZ2luYWwgY3R5cGUgVVRGLTggd29ya2Fyb3VuZC4KKworLi4KKworLi4gYnBvOiAyNzgwNgorLi4gZGF0ZTogOTgyNworLi4gbm9uY2U6IERFaFBzbQorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IDMyLWJpdCBidWlsZHMgb24gbWFjT1MgU2llcnJhIDEwLjEyIGJyb2tlbiBieSByZW1vdmFsIG9mIGRlcHJlY2F0ZWQKK1F1aWNrVGltZS9RdWlja1RpbWUuaCBoZWFkZXIgZmlsZS4gIFBhdGNoIGJ5IEFsZWtzIEJ1bmluLgorCisuLgorCisuLiBicG86IDI4Njc2CisuLiBkYXRlOiA5ODI2CisuLiBub25jZTogNDFQTDNRCisuLiBzZWN0aW9uOiBCdWlsZAorCitQcmV2ZW50IG1pc3NpbmcgJ2dldGVudHJvcHknIGRlY2xhcmF0aW9uIHdhcm5pbmcgb24gbWFjT1MuIEluaXRpYWwgcGF0Y2ggYnkKK0dhcmV0aCBSZWVzLgorCisuLgorCisuLiBicG86IDI3OTUyCisuLiBkYXRlOiA5ODI1CisuLiBub25jZTogT08taEJvCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitHZXQgVG9vbHMvc2NyaXB0cy9maXhjaWQucHkgd29ya2luZyB3aXRoIHRoZSBjdXJyZW50ICJyZSIgbW9kdWxlLCBhdm9pZAoraW52YWxpZCBQeXRob24gYmFja3NsYXNoIGVzY2FwZXMsIGFuZCBmaXggYSBidWcgcGFyc2luZyBlc2NhcGVkIEMgcXVvdGUKK3NpZ25zLgorCisuLgorCisuLiBicG86IDI3OTMyCisuLiBkYXRlOiA5ODI0CisuLiBub25jZTogbXRnbC02CisuLiBzZWN0aW9uOiBXaW5kb3dzCisKK1ByZXZlbnQgbWVtb3J5IGxlYWsgaW4gd2luMzJfdmVyKCkuCisKKy4uCisKKy4uIGJwbzogMjc4ODgKKy4uIGRhdGU6IDk4MjMKKy4uIG5vbmNlOiB4Q2xJTGQKKy4uIHNlY3Rpb246IFdpbmRvd3MKKworUHJldmVudCBXaW5kb3dzIGluc3RhbGxlciBmcm9tIGRpc3BsYXlpbmcgY29uc29sZSB3aW5kb3dzIGFuZCBmYWlsaW5nIHdoZW4KK3BpcCBjYW5ub3QgYmUgaW5zdGFsbGVkL3VuaW5zdGFsbGVkLgorCisuLgorCisuLiBicG86IDI4NDQwCisuLiBkYXRlOiA5ODIyCisuLiBub25jZTogS0JNbURnCisuLiBzZWN0aW9uOiBtYWNPUworCitObyBsb25nZXIgYWRkIC9MaWJyYXJ5L1B5dGhvbi9zaXRlLXBhY2thZ2VzLCB0aGUgQXBwbGUtc3VwcGxpZWQgc3lzdGVtCitQeXRob24gc2l0ZS1wYWNrYWdlcyBkaXJlY3RvcnksIHRvIHN5cy5wYXRoIGZvciBtYWNPUyBmcmFtZXdvcmsgYnVpbGRzLiBUaGUKK2NvdXBsaW5nIGJldHdlZW4gdGhlIHR3byBQeXRob24gaW5zdGFuY2VzIG9mdGVuIGNhdXNlZCBjb25mdXNpb24gYW5kLCBhcyBvZgorbWFjT1MgMTAuMTIsIGNoYW5nZXMgdG8gdGhlIHNpdGUtcGFja2FnZXMgbGF5b3V0IGNhbiBjYXVzZSBwaXAgY29tcG9uZW50CitpbnN0YWxsYXRpb25zIHRvIGZhaWwuICBUaGlzIGNoYW5nZSByZXZlcnRzIHRoZSBlZmZlY3RzIGludHJvZHVjZWQgaW4gMi43LjAKK2J5IElzc3VlICM0ODY1LiAgSWYgeW91IGFyZSB1c2luZyBhIHBhY2thZ2Ugd2l0aCBib3RoIHRoZSBBcHBsZSBzeXN0ZW0KK1B5dGhvbiAyLjcgYW5kIGEgdXNlci1pbnN0YWxsZWQgUHl0aG9uIDIuNywgeW91IHdpbGwgbmVlZCB0byBlbnN1cmUgdGhhdAorY29waWVzIG9mIHRoZSBwYWNrYWdlIGFyZSBpbnN0YWxsZWQgd2l0aCBib3RoIFB5dGhvbiBpbnN0YW5jZXMuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjcuMTRyYzEucnN0IGIvTWlzYy9ORVdTLmQvMi43LjE0cmMxLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzc0ZjIyCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43LjE0cmMxLnJzdApAQCAtMCwwICsxLDE0OSBAQAorLi4gYnBvOiAzMDk0NworLi4gZGF0ZTogMjAxNy0wOC0xNi0xNi0zNS01OQorLi4gbm9uY2U6IGlOTW1tNAorLi4gcmVsZWFzZSBkYXRlOiAyMDE3LTA4LTI2CisuLiBzZWN0aW9uOiBTZWN1cml0eQorCitVcGdyYWRlIGxpYmV4cGF0IGVtYmVkZGVkIGNvcHkgZnJvbSB2ZXJzaW9uIDIuMi4xIHRvIDIuMi4zIHRvIGdldCBzZWN1cml0eQorZml4ZXMuCisKKy4uCisKKy4uIGJwbzogMzA3NjUKKy4uIGRhdGU6IDIwMTctMDYtMjYtMTQtMjktNTAKKy4uIG5vbmNlOiBRNWlCbWYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0F2b2lkIGJsb2NraW5nIGluIHB0aHJlYWRfbXV0ZXhfbG9jaygpIHdoZW4gUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCkgaXMgYXNrZWQKK25vdCB0byBibG9jay4KKworLi4KKworLi4gYnBvOiAzMTEzNQorLi4gZGF0ZTogMjAxNy0wOC0wOC0xNC01OS0yNgorLi4gbm9uY2U6IDlxMVFkQgorLi4gc2VjdGlvbjogTGlicmFyeQorCit0dGs6IEZpeCBMYWJlbGVkU2NhbGUgYW5kIE9wdGlvbk1lbnUgZGVzdHJveSgpIG1ldGhvZC4gQ2FsbCB0aGUgcGFyZW50CitkZXN0cm95KCkgbWV0aG9kIGV2ZW4gaWYgdGhlIHVzZWQgYXR0cmlidXRlIGRvZXNuJ3QgZXhpc3QuIFRoZQorTGFiZWxlZFNjYWxlLmRlc3Ryb3koKSBtZXRob2Qgbm93IGFsc28gZXhwbGljaXRseSBjbGVhcnMgbGFiZWwgYW5kIHNjYWxlCithdHRyaWJ1dGVzIHRvIGhlbHAgdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHRvIGRlc3Ryb3kgYWxsIHdpZGdldHMuCisKKy4uCisKKy4uIGJwbzogMzExMDcKKy4uIGRhdGU6IDIwMTctMDgtMDItMTItNDgtMTUKKy4uIG5vbmNlOiAxdDJobjUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGBjb3B5X3JlZy5fc2xvdG5hbWVzKClgIG1hbmdsZWQgYXR0cmlidXRlIGNhbGN1bGF0aW9uIGZvciBjbGFzc2VzIHdob3NlCituYW1lIGJlZ2lucyB3aXRoIGFuIHVuZGVyc2NvcmUuIFBhdGNoIGJ5IFNoYW5lIEhhcnZleS4KKworLi4KKworLi4gYnBvOiAyOTUxOQorLi4gZGF0ZTogMjAxNy0wNy0zMS0xOS0zMi01NworLi4gbm9uY2U6IF9qMWF3ZworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggd2Vha3JlZiBzcGV3aW5nIGV4Y2VwdGlvbnMgZHVyaW5nIGludGVycHJldGVyIHNodXRkb3duIHdoZW4gdXNlZCB3aXRoIGEKK3JhcmUgY29tYmluYXRpb24gb2YgbXVsdGlwcm9jZXNzaW5nIGFuZCBjdXN0b20gY29kZWNzLgorCisuLgorCisuLiBicG86IDMwMTE5CisuLiBkYXRlOiAyMDE3LTA3LTI2LTIyLTAyLTA3CisuLiBub25jZTogRFo2Q19TCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Z0cGxpYi5GVFAucHV0bGluZSgpIG5vdyB0aHJvd3MgVmFsdWVFcnJvciBvbiBjb21tYW5kcyB0aGF0IGNvbnRhaW5zIENSIG9yCitMRi4gUGF0Y2ggYnkgRG9uZy1oZWUgTmEuCisKKy4uCisKKy4uIGJwbzogMzA1OTUKKy4uIGRhdGU6IDIwMTctMDctMjYtMDQtNDYtMTIKKy4uIG5vbmNlOiAteko3ZDgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbXVsdGlwcm9jZXNzaW5nLlF1ZXVlLmdldCgpIHdpdGggYSB0aW1lb3V0IG5vdyBwb2xscyBpdHMgcmVhZGVyIGluCitub24tYmxvY2tpbmcgbW9kZSBpZiBpdCBzdWNjZWVkZWQgdG8gYXF1aXJlIHRoZSBsb2NrIGJ1dCB0aGUgYWNxdWlyZSB0b29rIGxvbmdlcgordGhhbiB0aGUgdGltZW91dC4KKworLi4KKworLi4gYnBvOiAyOTkwMgorLi4gZGF0ZTogMjAxNy0wNy0yMy0xMy00Ny0yMgorLi4gbm9uY2U6IENpdUZkbgorLi4gc2VjdGlvbjogTGlicmFyeQorCitQeTNrIGRlcHJlY2F0aW9uIHdhcm5pbmcgbm93IGlzIGVtaXR0ZWQgd2hlbiBwaWNrbGluZyBvciBjb3B5aW5nIHNvbWUKK2J1aWx0aW4gYW5kIGV4dGVuc2lvbiBvYmplY3RzIHRoYXQgZG9uJ3Qgc3VwcG9ydCBwaWNrbGluZyBleHBsaWNpdGx5IGFuZCBhcmUKK3BpY2tsZWQgaW5jb3JyZWN0bHkgYnkgZGVmYXVsdCAobGlrZSBtZW1vcnl2aWV3IG9yIHN0YXRpY21ldGhvZCkuICBUaGlzIGlzIGEKK1R5cGVFcnJvciBpbiBQeXRob24gMy42LgorCisuLgorCisuLiBicG86IDI5ODU0CisuLiBkYXRlOiAyMDE3LTA3LTA3LTAyLTE4LTU3CisuLiBub25jZTogSjh3S2JfCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzZWdmYXVsdCBpbiByZWFkbGluZSB3aGVuIHVzaW5nIHJlYWRsaW5lJ3MgaGlzdG9yeS1zaXplIG9wdGlvbi4gIFBhdGNoCitieSBOaXIgU29mZmVyLgorCisuLgorCisuLiBicG86IDMwODA3CisuLiBkYXRlOiAyMDE3LTA2LTI5LTIyLTA0LTQ0CisuLiBub25jZTogc0x0alktCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3NpZ25hbC5zZXRpdGltZXIoKSBtYXkgZGlzYWJsZSB0aGUgdGltZXIgd2hlbiBwYXNzZWQgYSB0aW55IHZhbHVlLgorCitUaW55IHZhbHVlcyAoc3VjaCBhcyAxZS02KSBhcmUgdmFsaWQgbm9uLXplcm8gdmFsdWVzIGZvciBzZXRpdGltZXIoKSwgd2hpY2gKK2lzIHNwZWNpZmllZCBhcyB0YWtpbmcgbWljcm9zZWNvbmQtcmVzb2x1dGlvbiBpbnRlcnZhbHMuIEhvd2V2ZXIsIG9uIHNvbWUKK3BsYXRmb3JtLCBvdXIgY29udmVyc2lvbiByb3V0aW5lIGNvdWxkIGNvbnZlcnQgMWUtNiBpbnRvIGEgemVybyBpbnRlcnZhbCwKK3RoZXJlZm9yZSBkaXNhYmxpbmcgdGhlIHRpbWVyIGluc3RlYWQgb2YgKHJlLSlzY2hlZHVsaW5nIGl0LgorCisuLgorCisuLiBicG86IDMwNzE1CisuLiBkYXRlOiAyMDE3LTA3LTI1LTE1LTI3LTQ0CisuLiBub25jZTogU3A3YlRGCisuLiBzZWN0aW9uOiBUZXN0cworCitBZGRyZXNzIEFMUE4gY2FsbGJhY2sgY2hhbmdlcyBmb3IgT3BlblNTTCAxLjEuMGYuIFRoZSBsYXRlc3QgdmVyc2lvbiBiZWhhdmVzCitsaWtlIE9wZW5TU0wgMS4wLjIgYW5kIG5vIGxvbmdlciBhYm9ydHMgaGFuZHNoYWtlLgorCisuLgorCisuLiBicG86IDMwODIyCisuLiBkYXRlOiAyMDE3LTA3LTIwLTE0LTI5LTU0CisuLiBub25jZTogWDB3UkVvCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggcmVncnRlc3QgY29tbWFuZCBsaW5lIHBhcnNlciB0byBhbGxvdyBwYXNzaW5nIC11IGV4dHJhbGFyZ2VmaWxlIHRvIHJ1bgordGVzdF96aXBmaWxlNjQuCisKKy4uCisKKy4uIGJwbzogMzAyODMKKy4uIGRhdGU6IDIwMTctMDYtMjYtMTEtMjQtMTQKKy4uIG5vbmNlOiBxQ1FtbG0KKy4uIHNlY3Rpb246IFRlc3RzCisKK3JlZ3J0ZXN0OiBFbmhhbmNlIHJlZ3J0ZXN0IGFuZCBiYWNrcG9ydCBmZWF0dXJlcyBmcm9tIHRoZSBtYXN0ZXIgYnJhbmNoLgorCitBZGQgb3B0aW9uczogLS1jb3ZlcmFnZSwgLS10ZXN0ZGlyLCAtLWxpc3QtdGVzdHMgKGxpc3QgdGVzdCBmaWxlcywgZG9uJ3QgcnVuCit0aGVtKSwgLS1saXN0LWNhc2VzIChsaXN0IHRlc3QgaWRlbnRpZmllcnMsIGRvbid0IHJ1biB0aGVtLCA6aXNzdWU6YDMwNTIzYCksCistLW1hdGNoZmlsZSAobG9hZCBhIGxpc3Qgb2YgdGVzdCBmaWx0ZXJzIGZyb20gYSB0ZXh0IGZpbGUsIDppc3N1ZTpgMzA1NDBgKSwKKy0tc2xvd2VzdCAoYWxpYXMgdG8gLS1zbG93KS4KKworRW5oYW5jZSBvdXRwdXQ6IGFkZCB0aW1lc3RhbXAsIHRlc3QgcmVzdWx0LCBjdXJyZW50bHkgcnVubmluZyB0ZXN0cywgIlRlc3RzCityZXN1bHQ6IHh4eCIgc3VtbWFyeSB3aXRoIHRvdGFsIGR1cmF0aW9uLCBldGMuCisKK0ZpeCByZWZlcmVuY2UgbGVhayBodW50aW5nIGluIHJlZ3J0ZXN0LCAtLWh1bnRybGVha3M6IHJlZ3J0ZXN0IG5vdyB3YXJtcyB1cAorY2FjaGVzLCBjcmVhdGUgZXhwbGljaXRseSBhbGwgaW50ZXJuYWwgc2luZ2xldG9ucyB3aGljaCBhcmUgY3JlYXRlZCBvbgorZGVtYW5kIHRvIHByZXZlbnQgZmFsc2UgcG9zaXRpdmVzIHdoZW4gY2hlY2tpbmcgZm9yIHJlZmVyZW5jZSBsZWFrcy4KKyg6aXNzdWU6YDMwNjc1YCkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjcuMTUucnN0IGIvTWlzYy9ORVdTLmQvMi43LjE1LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmI5OWRhCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43LjE1LnJzdApAQCAtMCwwICsxLDkgQEAKKy4uIGJwbzogMzMzNzQKKy4uIGRhdGU6IDIwMTgtMDQtMjktMTItMDctMDAKKy4uIG5vbmNlOiAteGVnTDYKKy4uIHJlbGVhc2UgZGF0ZTogMjAxOC0wNC0yOQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVHdlYWsgdGhlIGRlZmluaXRpb24gb2YgUHlHQ19IZWFkLCBzbyBjb21waWxlcnMgZG8gbm90IGJlbGlldmUgaXQgaXMgYWx3YXlzCisxNi1ieXRlIGFsaWduZWQgb24geDg2LiBUaGlzIHByZXZlbnRzIGNyYXNoZXMgd2l0aCBtb3JlIGFnZ3Jlc3NpdmUKK29wdGltaXphdGlvbnMgcHJlc2VudCBpbiBHQ0MgOC4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy4xNXJjMS5yc3QgYi9NaXNjL05FV1MuZC8yLjcuMTVyYzEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNWY2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC8yLjcuMTVyYzEucnN0CkBAIC0wLDAgKzEsMTY4MyBAQAorLi4gYnBvOiAzMjk5NworLi4gZGF0ZTogMjAxOC0wMy0wNS0xMC0xNC00MgorLi4gbm9uY2U6IGhwMnM4bgorLi4gcmVsZWFzZSBkYXRlOiAyMDE4LTA0LTE0CisuLiBzZWN0aW9uOiBTZWN1cml0eQorCitBIHJlZ2V4IGluIGZwZm9ybWF0IHdhcyB2dWxuZXJhYmxlIHRvIGNhdGFzdHJvcGhpYyBiYWNrdHJhY2tpbmcuIFRoaXMgcmVnZXgKK3dhcyBhIHBvdGVudGlhbCBET1MgdmVjdG9yIChSRURPUykuIEJhc2VkIG9uIHR5cGljYWwgdXNlcyBvZiBmcGZvcm1hdCB0aGUKK3Jpc2sgc2VlbXMgbG93LiBUaGUgcmVnZXggaGFzIGJlZW4gcmVmYWN0b3JlZCBhbmQgaXMgbm93IHNhZmUuIFBhdGNoIGJ5CitKYW1pZSBEYXZpcy4KKworLi4KKworLi4gYnBvOiAzMjk4MQorLi4gZGF0ZTogMjAxOC0wMy0wMi0xMC0yNC01MgorLi4gbm9uY2U6IE9fcUR5agorLi4gc2VjdGlvbjogU2VjdXJpdHkKKworUmVnZXhlcyBpbiBkaWZmbGliIGFuZCBwb3BsaWIgd2VyZSB2dWxuZXJhYmxlIHRvIGNhdGFzdHJvcGhpYyBiYWNrdHJhY2tpbmcuCitUaGVzZSByZWdleGVzIGZvcm1lZCBwb3RlbnRpYWwgRE9TIHZlY3RvcnMgKFJFRE9TKS4gVGhleSBoYXZlIGJlZW4KK3JlZmFjdG9yZWQuIFRoaXMgcmVzb2x2ZXMgQ1ZFLTIwMTgtMTA2MCBhbmQgQ1ZFLTIwMTgtMTA2MS4gUGF0Y2ggYnkgSmFtaWUKK0RhdmlzLgorCisuLgorCisuLiBicG86IDMxMzM5CisuLiBkYXRlOiAyMDE3LTA5LTA0LTIxLTI0LTUxCisuLiBub25jZTogWVNjelpOCisuLiBzZWN0aW9uOiBTZWN1cml0eQorCitSZXdyaXRlIHRpbWUuYXNjdGltZSgpIGFuZCB0aW1lLmN0aW1lKCkuIEJhY2twb3J0IGFuZCBhZGFwdCB0aGUgX2FzY3RpbWUoKQorZnVuY3Rpb24gZnJvbSB0aGUgbWFzdGVyIGJyYW5jaCB0byBub3QgZGVwZW5kIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBvZgorYXNjdGltZSgpIGFuZCBjdGltZSgpIGZyb20gdGhlIGV4dGVybmFsIEMgbGlicmFyeS4gVGhpcyBjaGFuZ2UgZml4ZXMgYSBidWcKK3doZW4gUHl0aG9uIGlzIHJ1biB1c2luZyB0aGUgbXVzbCBDIGxpYnJhcnkuCisKKy4uCisKKy4uIGJwbzogMzA3MzAKKy4uIGRhdGU6IDA2MAorLi4gbm9uY2U6IHJKc3lUSAorLi4gb3JpZ2luYWwgc2VjdGlvbjogTGlicmFyeQorLi4gc2VjdGlvbjogU2VjdXJpdHkKKworUHJldmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW5qZWN0aW9uIGluIHN1YnByb2Nlc3Mgb24gV2luZG93cy4gIFByZXZlbnQKK3Bhc3Npbmcgb3RoZXIgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCBjb21tYW5kIGFyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiAzMDY5NAorLi4gZGF0ZTogMDU5CisuLiBub25jZTogV2tNV01fCisuLiBvcmlnaW5hbCBzZWN0aW9uOiBMaWJyYXJ5CisuLiBzZWN0aW9uOiBTZWN1cml0eQorCitVcGdyYWRlIGV4cGF0IGNvcHkgZnJvbSAyLjIuMCB0byAyLjIuMSB0byBnZXQgZml4ZXMgb2YgbXVsdGlwbGUgc2VjdXJpdHkKK3Z1bG5lcmFiaWxpdGllcyBpbmNsdWRpbmc6IENWRS0yMDE3LTkyMzMgKEV4dGVybmFsIGVudGl0eSBpbmZpbml0ZSBsb29wCitEb1MpLCBDVkUtMjAxNi05MDYzIChJbnRlZ2VyIG92ZXJmbG93LCByZS1maXgpLCBDVkUtMjAxNi0wNzE4IChGaXgKK3JlZ3Jlc3Npb24gYnVncyBmcm9tIDIuMi4wJ3MgZml4IHRvIENWRS0yMDE2LTA3MTgpIGFuZCBDVkUtMjAxMi0wODc2CisoQ291bnRlciBoYXNoIGZsb29kaW5nIHdpdGggU2lwSGFzaCkuIE5vdGU6IHRoZSBDVkUtMjAxNi01MzAwIChVc2UKK29zLXNwZWNpZmljIGVudHJvcHkgc291cmNlcyBsaWtlIGdldHJhbmRvbSkgZG9lc24ndCBpbXBhY3QgUHl0aG9uLCBzaW5jZSBQeXRob24KK2FscmVhZHkgZ2V0cyBlbnRyb3B5IGZyb20gdGhlIE9TIHRvIHNldCB0aGUgZXhwYXQgc2VjcmV0IHVzaW5nCitgYFhNTF9TZXRIYXNoU2FsdCgpYGAuCisKKy4uCisKKy4uIGJwbzogMzA1MDAKKy4uIGRhdGU6IDA1OAorLi4gbm9uY2U6IGo1S3JFcAorLi4gb3JpZ2luYWwgc2VjdGlvbjogTGlicmFyeQorLi4gc2VjdGlvbjogU2VjdXJpdHkKKworRml4IHVybGxpYi5zcGxpdGhvc3QoKSB0byBjb3JyZWN0bHkgcGFyc2UgZnJhZ21lbnRzLiBGb3IgZXhhbXBsZSwKK2Bgc3BsaXRob3N0KCcvLzEyNy4wLjAuMSNAZXZpbC5jb20vJylgYCBub3cgY29ycmVjdGx5IHJldHVybnMgdGhlCitgYDEyNy4wLjAuMWBgIGhvc3QsIGluc3RlYWQgb2YgdHJlYXRpbmcgYGBAZXZpbC5jb21gYCBhcyB0aGUgaG9zdCBpbiBhbgorYXV0aGVudGlmaWNhdGlvbiAoYGBsb2dpbkBob3N0YGApLgorCisuLgorCisuLiBicG86IDI5NTkxCisuLiBkYXRlOiAwNTcKKy4uIG5vbmNlOiBFeEtibHcKKy4uIG9yaWdpbmFsIHNlY3Rpb246IExpYnJhcnkKKy4uIHNlY3Rpb246IFNlY3VyaXR5CisKK1VwZGF0ZSBleHBhdCBjb3B5IGZyb20gMi4xLjEgdG8gMi4yLjAgdG8gZ2V0IGZpeGVzIG9mIENWRS0yMDE2LTA3MTggYW5kCitDVkUtMjAxNi00NDcyLiBTZWUgaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC9leHBhdC9idWdzLzUzNy8gZm9yIG1vcmUKK2luZm9ybWF0aW9uLgorCisuLgorCisuLiBicG86IDMzMDI2CisuLiBkYXRlOiAyMDE4LTAzLTA4LTA5LTQ4LTM4CisuLiBub25jZTogUVpBM0JhCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBqdW1waW5nIG91dCBvZiAid2l0aCIgYmxvY2sgYnkgc2V0dGluZyBmX2xpbmVuby4KKworLi4KKworLi4gYnBvOiAxNzI4OAorLi4gZGF0ZTogMjAxOC0wMi0yNy0xMy0zNi0yMQorLi4gbm9uY2U6IEdkajI0UworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHJldmVudCBqdW1wcyBmcm9tICdyZXR1cm4nIGFuZCAnZXhjZXB0aW9uJyB0cmFjZSBldmVudHMuCisKKy4uCisKKy4uIGJwbzogMTg1MzMKKy4uIGRhdGU6IDIwMTctMTItMTMtMTYtNDYtMjMKKy4uIG5vbmNlOiBEbGs4ZDcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2BgcmVwcigpYGAgb24gYSBkaWN0IGNvbnRhaW5pbmcgaXRzIG93biBgYHZpZXd2YWx1ZXMoKWBgIG9yIGBgdmlld2l0ZW1zKClgYAorbm8gbG9uZ2VyIHJhaXNlcyBgYFJ1bnRpbWVFcnJvcmBgLiAgSW5zdGVhZCwgdXNlIGBgLi4uYGAsIGFzIGZvciBvdGhlcgorcmVjdXJzaXZlIHN0cnVjdHVyZXMuICBQYXRjaCBieSBCZW4gTm9ydGguCisKKy4uCisKKy4uIGJwbzogMTA1NDQKKy4uIGRhdGU6IDIwMTctMTEtMjctMDgtMzctMzQKKy4uIG5vbmNlOiAwN25pb1QKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1lpZWxkIGV4cHJlc3Npb25zIGFyZSBub3cgZGVwcmVjYXRlZCBpbiBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yCitleHByZXNzaW9ucyB3aGVuIGNoZWNraW5nIFB5dGhvbiAzIGNvbXBhdGliaWxpdHkuIFRoZXkgYXJlIHN0aWxsIHBlcm1pdHRlZAoraW4gdGhlIGRlZmluaXRpb24gb2YgdGhlIG91dGVybW9zdCBpdGVyYWJsZSwgYXMgdGhhdCBpcyBldmFsdWF0ZWQgZGlyZWN0bHkKK2luIHRoZSBlbmNsb3Npbmcgc2NvcGUuCisKKy4uCisKKy4uIGJwbzogMzIxMzcKKy4uIGRhdGU6IDIwMTctMTEtMjYtMTQtMzYtMzAKKy4uIG5vbmNlOiBTdGo1bkwKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSByZXByIG9mIGRlZXBseSBuZXN0ZWQgZGljdCBub3cgcmFpc2VzIGEgUmVjdXJzaW9uRXJyb3IgaW5zdGVhZCBvZgorY3Jhc2hpbmcgZHVlIHRvIGEgc3RhY2sgb3ZlcmZsb3cuCisKKy4uCisKKy4uIGJwbzogMjAwNDcKKy4uIGRhdGU6IDIwMTctMTAtMjgtMTktMTEtMDUKKy4uIG5vbmNlOiBHdU5BdG8KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0J5dGVhcnJheSBtZXRob2RzIHBhcnRpdGlvbigpIGFuZCBycGFydGl0aW9uKCkgbm93IGFjY2VwdCBvbmx5IGJ5dGVzLWxpa2UKK29iamVjdHMgYXMgc2VwYXJhdG9yLCBhcyBkb2N1bWVudGVkLiAgSW4gcGFydGljdWxhciB0aGV5IG5vdyByYWlzZSBUeXBlRXJyb3IKK3JhdGhlciBvZiByZXR1cm5pbmcgYSBib2d1cyByZXN1bHQgd2hlbiBhbiBpbnRlZ2VyIGlzIHBhc3NlZCBhcyBhIHNlcGFyYXRvci4KKworLi4KKworLi4gYnBvOiAzMTczMworLi4gZGF0ZTogMjAxNy0xMC0wOS0xNS00Ni0zNworLi4gbm9uY2U6IHBJZjE3TgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQWRkIGEgbmV3IFBZVEhPTlNIT1dSRUZDT1VOVCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gSW4gZGVidWcgbW9kZSwgUHl0aG9uIG5vdworb25seSBwcmludCB0aGUgdG90YWwgcmVmZXJlbmNlIGNvdW50IGlmIFBZVEhPTlNIT1dSRUZDT1VOVCBpcyBzZXQuCisKKy4uCisKKy4uIGJwbzogMzE2OTIKKy4uIGRhdGU6IDIwMTctMTAtMDktMTEtMDMtMTMKKy4uIG5vbmNlOiA1LWJwZGsKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZCBhIG5ldyBQWVRIT05TSE9XQUxMT0NDT1VOVCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gV2hlbiBQeXRob24gaXMgY29tcGlsZWQKK3dpdGggQ09VTlRfQUxMT0NTLCBQWVRIT05TSE9XQUxMT0NDT1VOVCBub3cgaGFzIHRvIGJlIHNldCB0byBkdW1wIGFsbG9jYXRpb24KK2NvdW50cyBpbnRvIHN0ZGVyciBvbiBzaHV0ZG93bi4gTW9yZW92ZXIsIGFsbG9jYXRpb25zIHN0YXRpc3RpY3MgYXJlIG5vdworZHVtcGVkIGludG8gc3RkZXJyIHJhdGhlciB0aGFuIHN0ZG91dC4KKworLi4KKworLi4gYnBvOiAzMTQ3OAorLi4gZGF0ZTogMjAxNy0xMC0wMS0xOC01OS00MAorLi4gbm9uY2U6IG93dHFvTworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHJldmVudCB1bndhbnRlZCBiZWhhdmlvciBpbiBgX3JhbmRvbS5SYW5kb20uc2VlZCgpYCBpbiBjYXNlIHRoZSBhcmd1bWVudAoraGFzIGEgYmFkIGBgX19hYnNfXygpYGAgbWV0aG9kLiBQYXRjaCBieSBPcmVuIE1pbG1hbi4KKworLi4KKworLi4gYnBvOiAzMTUzMAorLi4gZGF0ZTogMjAxNy0wOS0yMC0xOC0yOC0wOQorLi4gbm9uY2U6IENkTE9NNworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgY3Jhc2hlcyB3aGVuIGl0ZXJhdGluZyBvdmVyIGEgZmlsZSBvbiBtdWx0aXBsZSB0aHJlYWRzLgorCisuLgorCisuLiBicG86IDMxNDkwCisuLiBkYXRlOiAyMDE3LTA5LTE2LTEzLTMyLTM1CisuLiBub25jZTogcjdtMnNqCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYW4gYXNzZXJ0aW9uIGZhaWx1cmUgaW4gYGN0eXBlc2AgY2xhc3MgZGVmaW5pdGlvbiwgaW4gY2FzZSB0aGUgY2xhc3MgaGFzCithbiBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpcyBzcGVjaWZpZWQgaW4gYGBfYW5vbnltb3VzX2BgIGJ1dCBub3QgaW4KK2BgX2ZpZWxkc19gYC4gUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKKy4uCisKKy4uIGJwbzogMzE0MTEKKy4uIGRhdGU6IDIwMTctMDktMTEtMDgtNTAtNDEKKy4uIG5vbmNlOiBIWno4MkkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JhaXNlIGEgVHlwZUVycm9yIGluc3RlYWQgb2YgU3lzdGVtRXJyb3IgaW4gY2FzZSB3YXJuaW5ncy5vbmNlcmVnaXN0cnkgaXMKK25vdCBhIGRpY3Rpb25hcnkuIFBhdGNoIGJ5IE9yZW4gTWlsbWFuLgorCisuLgorCisuLiBicG86IDMxMzQzCisuLiBkYXRlOiAyMDE3LTA5LTA0LTE0LTU3LTI3CisuLiBub25jZTogS2xfZlM1CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbmNsdWRlIHN5cy9zeXNtYWNyb3MuaCBmb3IgbWFqb3IoKSwgbWlub3IoKSwgYW5kIG1ha2VkZXYoKS4gR05VIEMgbGlicmF5CitwbGFucyB0byByZW1vdmUgdGhlIGZ1bmN0aW9ucyBmcm9tIHN5cy90eXBlcy5oLgorCisuLgorCisuLiBicG86IDMxMzExCisuLiBkYXRlOiAyMDE3LTA4LTMxLTE3LTUyLTU2CisuLiBub25jZTogYk5FMmwtCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYSBjcmFzaCBpbiB0aGUgYGBfX3NldHN0YXRlX18oKWBgIG1ldGhvZCBvZiBgY3R5cGVzLl9DRGF0YWAsIGluIGNhc2Ugb2YKK2EgYmFkIGBgX19kaWN0X19gYC4gUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKKy4uCisKKy4uIGJwbzogMzEyNDMKKy4uIGRhdGU6IDIwMTctMDgtMjktMTQtMjQtMzQKKy4uIG5vbmNlOiB0cjBFNFYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBhIGNyYXNoIGluIHNvbWUgbWV0aG9kcyBvZiBgaW8uVGV4dElPV3JhcHBlcmAsIHdoZW4gdGhlIGRlY29kZXIncyBzdGF0ZQoraXMgaW52YWxpZC4gUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKKy4uCisKKy4uIGJwbzogMzEwOTUKKy4uIGRhdGU6IDIwMTctMDgtMDEtMTgtNDgtMzAKKy4uIG5vbmNlOiBiWFdaRGIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBwb3RlbnRpYWwgY3Jhc2ggZHVyaW5nIEdDIGNhdXNlZCBieSBgYHRwX2RlYWxsb2NgYCB3aGljaCBkb2Vzbid0IGNhbGwKK2BgUHlPYmplY3RfR0NfVW5UcmFjaygpYGAuCisKKy4uCisKKy4uIGJwbzogMzA2NTcKKy4uIGRhdGU6IDA3MworLi4gbm9uY2U6IFFfcjdKSgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiBQeVN0cmluZ19EZWNvZGVFc2NhcGUuIFBhdGNoIGJ5IEpheQorQm9zYW1peWEuCisKKy4uCisKKy4uIGJwbzogMjc5NDUKKy4uIGRhdGU6IDA3MgorLi4gbm9uY2U6IHAyOXIzTworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgdmFyaW91cyBzZWdmYXVsdHMgd2l0aCBkaWN0IHdoZW4gaW5wdXQgY29sbGVjdGlvbnMgYXJlIG11dGF0ZWQgZHVyaW5nCitzZWFyY2hpbmcsIGluc2VydGluZyBvciBjb21wYXJpbmcuICBCYXNlZCBvbiBwYXRjaGVzIGJ5IER1YW5lIEdyaWZmaW4gYW5kCitUaW0gTWl0Y2hlbGwuCisKKy4uCisKKy4uIGJwbzogMjU3OTQKKy4uIGRhdGU6IDA3MQorLi4gbm9uY2U6IGowbko1eAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgdHlwZS5fX3NldGF0dHJfXygpIGFuZCB0eXBlLl9fZGVsYXR0cl9fKCkgZm9yIG5vbi1pbnRlcm5lZCBvciB1bmljb2RlCithdHRyaWJ1dGUgbmFtZXMuICBCYXNlZCBvbiBwYXRjaCBieSBFcnlrIFN1bi4KKworLi4KKworLi4gYnBvOiAyOTkzNQorLi4gZGF0ZTogMDcwCisuLiBub25jZTogMlpUU3hSCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBlcnJvciBtZXNzYWdlcyBpbiB0aGUgaW5kZXgoKSBtZXRob2Qgb2YgdHVwbGUgYW5kIGxpc3Qgd2hlbiBwYXNzCitpbmRpY2VzIG9mIHdyb25nIHR5cGUuCisKKy4uCisKKy4uIGJwbzogMjg1OTgKKy4uIGRhdGU6IDA2OQorLi4gbm9uY2U6IFF4YnpRbgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU3VwcG9ydCBfX3Jtb2RfXyBmb3Igc3ViY2xhc3NlcyBvZiBzdHIgYmVpbmcgY2FsbGVkIGJlZm9yZSBzdHIuX19tb2RfXy4KK1BhdGNoIGJ5IE1hcnRpam4gUGlldGVycy4KKworLi4KKworLi4gYnBvOiAyOTYwMgorLi4gZGF0ZTogMDY4CisuLiBub25jZTogcXl5c2tDCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggaW5jb3JyZWN0IGhhbmRsaW5nIG9mIHNpZ25lZCB6ZXJvcyBpbiBjb21wbGV4IGNvbnN0cnVjdG9yIGZvciBjb21wbGV4CitzdWJjbGFzc2VzIGFuZCBmb3IgaW5wdXRzIGhhdmluZyBhIF9fY29tcGxleF9fIG1ldGhvZC4gUGF0Y2ggYnkgU2VyaGl5CitTdG9yY2hha2EuCisKKy4uCisKKy4uIGJwbzogMjkzNDcKKy4uIGRhdGU6IDA2NworLi4gbm9uY2U6IDFSUFBHTgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgcG9zc2libHkgZGVyZWZlcmVuY2luZyB1bmRlZmluZWQgcG9pbnRlcnMgd2hlbiBjcmVhdGluZyB3ZWFrcmVmCitvYmplY3RzLgorCisuLgorCisuLiBicG86IDE0Mzc2CisuLiBkYXRlOiAwNjYKKy4uIG5vbmNlOiB4cktOcVgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FsbG93IHN5cy5leGl0IHRvIGFjY2VwdCBsb25ncyBhcyB3ZWxsIGFzIGludHMuIFBhdGNoIGJ5IEdhcmV0aCBSZWVzLgorCisuLgorCisuLiBicG86IDI5MDI4CisuLiBkYXRlOiAwNjUKKy4uIG5vbmNlOiBCeEdjZDkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIHBvc3NpYmxlIHVzZS1hZnRlci1mcmVlIGJ1Z3MgaW4gdGhlIHN1YnNjcmlwdGlvbiBvZiB0aGUgYnVmZmVyIG9iamVjdAord2l0aCBjdXN0b20gaW5kZXggb2JqZWN0LgorCisuLgorCisuLiBicG86IDI5MTQ1CisuLiBkYXRlOiAwNjQKKy4uIG5vbmNlOiAyeDVOT2IKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBvdmVyZmxvdyBjaGVja3MgaW4gc3RyaW5nLCBieXRlYXJyYXkgYW5kIHVuaWNvZGUuIFBhdGNoIGJ5IGphbiBtYXRlamVrCithbmQgWGlhbmcgWmhhbmcuCisKKy4uCisKKy4uIGJwbzogMjg5MzIKKy4uIGRhdGU6IDA2MworLi4gbm9uY2U6IFFuTHg4QQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRG8gbm90IGluY2x1ZGUgPHN5cy9yYW5kb20uaD4gaWYgaXQgZG9lcyBub3QgZXhpc3QuCisKKy4uCisKKy4uIGJwbzogMzMwOTYKKy4uIGRhdGU6IDIwMTgtMDMtMjUtMTMtMTgtMTYKKy4uIG5vbmNlOiBvZmRiZTcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWxsb3cgdHRrLlRyZWV2aWV3Lmluc2VydCB0byBpbnNlcnQgaWlkIHRoYXQgaGFzIGEgZmFsc2UgYm9vbGVhbiB2YWx1ZS4gTm90ZQoraWlkPTAgYW5kIGlpZD1GYWxzZSB3b3VsZCBiZSBzYW1lLiBQYXRjaCBieSBHYXJ2aXQgS2hhdHJpLgorCisuLgorCisuLiBicG86IDMzMTI3CisuLiBkYXRlOiAyMDE4LTAzLTI0LTE1LTA4LTI0CisuLiBub25jZTogb2xKbUh2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBzc2wgbW9kdWxlIG5vdyBjb21waWxlcyB3aXRoIExpYnJlU1NMIDIuNy4xLgorCisuLgorCisuLiBicG86IDMwNjIyCisuLiBkYXRlOiAyMDE4LTAyLTI0LTIxLTQwLTQyCisuLiBub25jZTogZFFqeFNlCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBzc2wgbW9kdWxlIG5vdyBkZXRlY3RzIG1pc3NpbmcgTlBOIHN1cHBvcnQgaW4gTGlicmVTU0wuCisKKy4uCisKKy4uIGJwbzogMjEwNjAKKy4uIGRhdGU6IDIwMTgtMDItMTctMTktMjAtMTkKKy4uIG5vbmNlOiBTMVoteDYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmV3cml0ZSBjb25mdXNpbmcgbWVzc2FnZSBmcm9tIHNldHVwLnB5IHVwbG9hZCBmcm9tICJObyBkaXN0IGZpbGUgY3JlYXRlZCBpbgorZWFybGllciBjb21tYW5kIiB0byB0aGUgbW9yZSBoZWxwZnVsICJNdXN0IGNyZWF0ZSBhbmQgdXBsb2FkIGZpbGVzIGluIG9uZQorY29tbWFuZCIuCisKKy4uCisKKy4uIGJwbzogMzAxNTcKKy4uIGRhdGU6IDIwMTgtMDItMDktMTQtNDQtNDMKKy4uIG5vbmNlOiBsRWlpQUsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgZ3Vlc3NpbmcgcXVvdGUgYW5kIGRlbGltaXRlciBpbiBjc3YuU25pZmZlci5zbmlmZigpIHdoZW4gb25seSB0aGUgbGFzdAorZmllbGQgaXMgcXVvdGVkLiAgUGF0Y2ggYnkgSmFrZSBEYXZpcy4KKworLi4KKworLi4gYnBvOiAzMjY0NworLi4gZGF0ZTogMjAxOC0wMi0wNS0xMy0zMS00MgorLi4gbm9uY2U6IGt0bWZSXworLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgY3R5cGVzIG1vZHVsZSB1c2VkIHRvIGRlcGVuZCBvbiBpbmRpcmVjdCBsaW5raW5nIGZvciBkbG9wZW4uIFRoZSBzaGFyZWQKK2V4dGVuc2lvbiBpcyBub3cgZXhwbGljaXRseSBsaW5rZWQgYWdhaW5zdCBsaWJkbCBvbiBwbGF0Zm9ybXMgd2l0aCBkbC4KKworLi4KKworLi4gYnBvOiAzMjMwNAorLi4gZGF0ZTogMjAxOC0wMS0yMS0xNi0zMy01MworLi4gbm9uY2U6IFRJdHJOdgorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMnIHVwbG9hZCBjb21tYW5kIG5vIGxvbmdlciBjb3JydXB0cyB0YXIgZmlsZXMgZW5kaW5nIHdpdGggYSBDUgorYnl0ZSwgYW5kIG5vIGxvbmdlciB0cmllcyB0byBjb252ZXJ0IENSIHRvIENSTEYgaW4gYW55IG9mIHRoZSB1cGxvYWQgdGV4dAorZmllbGRzLgorCisuLgorCisuLiBicG86IDMxODQ4CisuLiBkYXRlOiAyMDE4LTAxLTE4LTIzLTM0LTE3CisuLiBub25jZTogTTJjbGR5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gQWlmY19yZWFkLmluaXRmcCgpIHdoZW4gdGhlIFNTTkQgY2h1bmsgaXMgbm90Citmb3VuZC4gUGF0Y2ggYnkgWmFja2VyeSBTcHl0ei4KKworLi4KKworLi4gYnBvOiAzMjUyMQorLi4gZGF0ZTogMjAxOC0wMS0xNS0xMi01My0xMworLi4gbm9uY2U6IEl4WDRCYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbmlzIG1vZHVsZSBpcyBub3cgY29tcGF0aWJsZSB3aXRoIG5ldyBsaWJuc2wgYW5kIGhlYWRlcnMgbG9jYXRpb24uCisKKy4uCisKKy4uIGJwbzogMzI1MzkKKy4uIGRhdGU6IDIwMTgtMDEtMTItMDktMjAtMjIKKy4uIG5vbmNlOiBEN0FiZEUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGBgT1NFcnJvcmBgIGZvciBgYG9zLmxpc3RkaXJgYCB3aXRoIGRlZXAgcGF0aHMgKHN0YXJ0aW5nIHdpdGggYGBcXD9cYGApCitvbiB3aW5kb3dzLiAgUGF0Y2ggYnkgQW50aG9ueSBTb3R0aWxlLgorCisuLgorCisuLiBicG86IDMyNTIxCisuLiBkYXRlOiAyMDE4LTAxLTA4LTE4LTAyLTMzCisuLiBub25jZTogS2gtS29OCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2dsaWJjIGhhcyByZW1vdmVkIFN1biBSUEMuIFVzZSByZXBsYWNlbWVudCBsaWJ0aXJwYyBoZWFkZXJzIGFuZCBsaWJyYXJ5IGluCituaXMgbW9kdWxlLgorCisuLgorCisuLiBicG86IDE4MDM1CisuLiBkYXRlOiAyMDE3LTEyLTI5LTE1LTE2LTU2CisuLiBub25jZTogYzZyZEN0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2BgdGVsbmV0bGliYGA6IGBgc2VsZWN0LmVycm9yYGAgZG9lc24ndCBoYXZlIGFuIGBgZXJybm9gYCBhdHRyaWJ1dGUuIFBhdGNoCitieSBTZWdldiBGaW5lci4KKworLi4KKworLi4gYnBvOiAzMjE4NQorLi4gZGF0ZTogMjAxNy0xMi0yMC0wOS0yNS0xMAorLi4gbm9uY2U6IElMMGNNdAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgU1NMIG1vZHVsZSBubyBsb25nZXIgc2VuZHMgSVAgYWRkcmVzc2VzIGluIFNOSSBUTFMgZXh0ZW5zaW9uIG9uCitwbGF0Zm9ybXMgd2l0aCBPcGVuU1NMIDEuMC4yKyBvciBpbmV0X3B0b24uCisKKy4uCisKKy4uIGJwbzogMzIxODYKKy4uIGRhdGU6IDIwMTctMTEtMzAtMjAtMzMtMjIKKy4uIG5vbmNlOiBPNDJiVmUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ3JlYXRpbmcgaW8uRmlsZUlPKCkgYW5kIGJ1aWx0aW4gZmlsZSgpIG9iamVjdHMgbm93IHJlbGVhc2UgdGhlIEdJTCB3aGVuCitjaGVja2luZyB0aGUgZmlsZSBkZXNjcmlwdG9yLiBpby5GaWxlSU8ucmVhZGFsbCgpLCBpby5GaWxlSU8ucmVhZCgpLCBhbmQKK2ZpbGUucmVhZCgpIG5vdyByZWxlYXNlIHRoZSBHSUwgd2hlbiBnZXR0aW5nIHRoZSBmaWxlIHNpemUuICBGaXhlZCBoYW5nIG9mCithbGwgdGhyZWFkcyB3aXRoIGluYWNjZXNzaWJsZSBORlMgc2VydmVyLiAgUGF0Y2ggYnkgTmlyIFNvZmZlci4KKworLi4KKworLi4gYnBvOiAzMjExMAorLi4gZGF0ZTogMjAxNy0xMS0yMi0wOS00NC0xNQorLi4gbm9uY2U6IFZKYTlibworLi4gc2VjdGlvbjogTGlicmFyeQorCitgYGNvZGVjcy5TdHJlYW1SZWFkZXIucmVhZChuKWBgIG5vdyByZXR1cm5zIG5vdCBtb3JlIHRoYW4gKm4qCitjaGFyYWN0ZXJzL2J5dGVzIGZvciBub24tbmVnYXRpdmUgKm4qLiBUaGlzIG1ha2VzIGl0IGNvbXBhdGlibGUgd2l0aAorYGByZWFkKClgYCBtZXRob2RzIG9mIG90aGVyIGZpbGUtbGlrZSBvYmplY3RzLgorCisuLgorCisuLiBicG86IDIxMTQ5CisuLiBkYXRlOiAyMDE3LTExLTEwLTE3LTE5LTI0CisuLiBub25jZTogOFVWZmVUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NpbGVuY2UgYSBgJ05vbmVUeXBlJyBvYmplY3QgaXMgbm90IGNhbGxhYmxlYCBpbiBgX3JlbW92ZUhhbmRsZXJSZWZgIGVycm9yCit0aGF0IGNvdWxkIGhhcHBlbiB3aGVuIGEgbG9nZ2luZyBIYW5kbGVyIGlzIGRlc3Ryb3llZCBhcyBwYXJ0IG9mIGN5Y2xpYworZ2FyYmFnZSBjb2xsZWN0aW9uIGR1cmluZyBwcm9jZXNzIHNodXRkb3duLgorCisuLgorCisuLiBicG86IDMxNzY0CisuLiBkYXRlOiAyMDE3LTExLTA4LTExLTAyLTAxCisuLiBub25jZTogZ3RsaEtqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ByZXZlbnQgYSBjcmFzaCBpbiBgYHNxbGl0ZTMuQ3Vyc29yLmNsb3NlKClgYCBpbiBjYXNlIHRoZSBgYEN1cnNvcmBgIG9iamVjdAoraXMgdW5pbml0aWFsaXplZC4gUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKKy4uCisKKy4uIGJwbzogMzE5NTUKKy4uIGRhdGU6IDIwMTctMTEtMDctMTktMTItMjUKKy4uIG5vbmNlOiAxRFd1LVMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IENDb21waWxlci5zZXRfZXhlY3V0YWJsZSgpIG9mIGRpc3R1dGlscyB0byBoYW5kbGUgcHJvcGVybHkgVW5pY29kZQorc3RyaW5ncy4KKworLi4KKworLi4gYnBvOiA5Njc4CisuLiBkYXRlOiAyMDE3LTExLTAzLTIyLTA1LTQ3CisuLiBub25jZTogb0Q1MXE2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGRldGVybWluaW5nIHRoZSBNQUMgYWRkcmVzcyBpbiB0aGUgdXVpZCBtb2R1bGU6CisKKyogVXNpbmcgaWZjb25maWcgb24gTmV0QlNEIGFuZCBPcGVuQlNELgorKiBVc2luZyBhcnAgb24gTGludXgsIEZyZWVCU0QsIE5ldEJTRCBhbmQgT3BlbkJTRC4KKworQmFzZWQgb24gcGF0Y2ggYnkgVGFrYXl1a2kgU2hpbWl6dWthd2EuCisKKy4uCisKKy4uIGJwbzogMzAwNTcKKy4uIGRhdGU6IDIwMTctMTEtMDMtMTktMTEtNDMKKy4uIG5vbmNlOiBOQ2FpakkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHBvdGVudGlhbCBtaXNzZWQgc2lnbmFsIGluIHNpZ25hbC5zaWduYWwoKS4KKworLi4KKworLi4gYnBvOiAzMTkyNworLi4gZGF0ZTogMjAxNy0xMS0wMi0xOC0yNi00MAorLi4gbm9uY2U6IDQwSzZrcAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCByZWFkaW5nIGFyYml0cmFyeSBkYXRhIHdoZW4gcGFyc2UgYSBBRl9CTFVFVE9PVEggYWRkcmVzcyBvbiBOZXRCU0QgYW5kCitEcmFnb25GbHkgQlNELgorCisuLgorCisuLiBicG86IDI3NjY2CisuLiBkYXRlOiAyMDE3LTExLTAxLTE4LTEzLTQyCisuLiBub25jZTogajJ6Um5GCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHN0YWNrIGNvcnJ1cHRpb24gaW4gY3Vyc2VzLmJveCgpIGFuZCBjdXJzZXMudW5nZXRtb3VzZSgpIHdoZW4gdGhlIHNpemUKK29mIHR5cGVzIGNodHlwZSBvciBtbWFza190IGlzIGxlc3MgdGhhbiB0aGUgc2l6ZSBvZiBDIGxvbmcuICBjdXJzZXMuYm94KCkKK25vdyBhY2NlcHRzIGNoYXJhY3RlcnMgYXMgYXJndW1lbnRzLiAgQmFzZWQgb24gcGF0Y2ggYnkgU3RldmUgRmluay4KKworLi4KKworLi4gYnBvOiAyNTcyMAorLi4gZGF0ZTogMjAxNy0xMC0yOS0xNy01Mi00MAorLi4gbm9uY2U6IHZTdmI1aAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIG1ldGhvZCBmb3IgY2hlY2tpbmcgcGFkIHN0YXRlIG9mIGN1cnNlcyBXSU5ET1cuIFBhdGNoIGJ5IE1hc2F5dWtpCitZYW1hbW90by4KKworLi4KKworLi4gYnBvOiAzMTg5MworLi4gZGF0ZTogMjAxNy0xMC0yOS0xMy01MS0wMQorLi4gbm9uY2U6IDhMWktFegorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aGUgbGF5b3V0IG9mIHRoZSBrcXVldWVfZXZlbnQgc3RydWN0dXJlIG9uIE9wZW5CU0QgYW5kIE5ldEJTRC4gRml4ZWQKK3RoZSBjb21wYXJpc29uIG9mIHRoZSBrcXVldWVfZXZlbnQgb2JqZWN0cy4KKworLi4KKworLi4gYnBvOiAzMTg5MQorLi4gZGF0ZTogMjAxNy0xMC0yOS0xMS0yMy0yNAorLi4gbm9uY2U6IDlrQVBoYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBidWlsZGluZyB0aGUgY3Vyc2VzIG1vZHVsZSBvbiBOZXRCU0QuCisKKy4uCisKKy4uIGJwbzogMzAwNTgKKy4uIGRhdGU6IDIwMTctMTAtMTItMTktMDAtNTMKKy4uIG5vbmNlOiBjRU50cnkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYnVmZmVyIG92ZXJmbG93IGluIHNlbGVjdC5rcXVldWUuY29udHJvbCgpLgorCisuLgorCisuLiBicG86IDMxNzcwCisuLiBkYXRlOiAyMDE3LTEwLTEyLTE4LTQ1LTM4CisuLiBub25jZTogR1YzTVB4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ByZXZlbnQgYSBjcmFzaCB3aGVuIGNhbGxpbmcgdGhlIGBgX19pbml0X18oKWBgIG1ldGhvZCBvZiBhCitgYHNxbGl0ZTMuQ3Vyc29yYGAgb2JqZWN0IG1vcmUgdGhhbiBvbmNlLiBQYXRjaCBieSBPcmVuIE1pbG1hbi4KKworLi4KKworLi4gYnBvOiAzMTcyOAorLi4gZGF0ZTogMjAxNy0xMC0xMS0xMy0wNS0xOQorLi4gbm9uY2U6IFhyVk1NRQorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcmV2ZW50IGNyYXNoZXMgaW4gYF9lbGVtZW50dHJlZWAgZHVlIHRvIHVuc2FmZSBjbGVhbnVwIG9mIGBFbGVtZW50LnRleHRgCithbmQgYEVsZW1lbnQudGFpbGAuIFBhdGNoIGJ5IE9yZW4gTWlsbWFuLgorCisuLgorCisuLiBicG86IDMxNzUyCisuLiBkYXRlOiAyMDE3LTEwLTExLTAwLTQ1LTAxCisuLiBub25jZTogRGhXZXZOCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwb3NzaWJsZSBjcmFzaCBpbiB0aW1lZGVsdGEgY29uc3RydWN0b3IgY2FsbGVkIHdpdGggY3VzdG9tIGludGVnZXJzLgorCisuLgorCisuLiBicG86IDMxNjgxCisuLiBkYXRlOiAyMDE3LTEwLTAzLTE1LTQxLTA4CisuLiBub25jZTogc09KTUtWCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwa2d1dGlsLmdldF9kYXRhIHRvIGF2b2lkIGxlYWtpbmcgb3BlbiBmaWxlcy4KKworLi4KKworLi4gYnBvOiAzMTY3NQorLi4gZGF0ZTogMjAxNy0xMC0wMy0xNS0wNi0yNAorLi4gbm9uY2U6IE5oN2pKMworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBtZW1vcnkgbGVha3MgaW4gVGtpbnRlcidzIG1ldGhvZHMgc3BsaXRsaXN0KCkgYW5kIHNwbGl0KCkgd2hlbiBwYXNzIGEKK3N0cmluZyBsYXJnZXIgdGhhbiAyIEdpQi4KKworLi4KKworLi4gYnBvOiAzMDgwNgorLi4gZGF0ZTogMjAxNy0wOS0yOQorLi4gbm9uY2U6IGxQNUdySAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIG5ldHJjIG9iamVjdC4KKworLi4KKworLi4gYnBvOiAzMDM0NworLi4gZGF0ZTogMjAxNy0wOS0yNS0xNC0wNC0zMAorLi4gbm9uY2U6IEI0LS1fRAorLi4gc2VjdGlvbjogTGlicmFyeQorCitTdG9wIGNyYXNoZXMgd2hlbiBjb25jdXJyZW50bHkgaXRlcmF0ZSBvdmVyIGl0ZXJ0b29scy5ncm91cGJ5KCkgaXRlcmF0b3JzLgorCisuLgorCisuLiBicG86IDI1NzMyCisuLiBkYXRlOiAyMDE3LTA5LTI1LTEzLTEwLTA4CisuLiBub25jZTogUldXZ3pnCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2BmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKWAgbm93IGltcGxlbWVudHMgdGhlIGBfX25lX19gIG1ldGhvZC4KKworLi4KKworLi4gYnBvOiAzMTM1MQorLi4gZGF0ZTogMjAxNy0wOS0xNy0xNS0yNC0yNQorLi4gbm9uY2U6IHlRZEt2LQorLi4gc2VjdGlvbjogTGlicmFyeQorCitweXRob24gLW0gZW5zdXJlcGlwIG5vdyBleGl0cyB3aXRoIG5vbi16ZXJvIGV4aXQgY29kZSBpZiBwaXAgYm9vdHN0cmFwcGluZworaGFzIGZhaWxlZC4KKworLi4KKworLi4gYnBvOiAzMTU0NAorLi4gZGF0ZTogMjAxNy0wOS0xMy0xOS01NS0zNQorLi4gbm9uY2U6IGJlVGg2dAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgQyBhY2NlbGVyYXRvciBtb2R1bGUgb2YgRWxlbWVudFRyZWUgaWdub3JlZCBleGNlcHRpb25zIHJhaXNlZCB3aGVuCitsb29raW5nIHVwIFRyZWVCdWlsZGVyIHRhcmdldCBtZXRob2RzIGluIFhNTFBhcnNlcigpLgorCisuLgorCisuLiBicG86IDMxNDU1CisuLiBkYXRlOiAyMDE3LTA5LTEzLTE5LTU1LTM1CisuLiBub25jZTogYmVUaDZ0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBDIGFjY2VsZXJhdG9yIG1vZHVsZSBvZiBFbGVtZW50VHJlZSBpZ25vcmVkIGV4Y2VwdGlvbnMgcmFpc2VkIHdoZW4KK2xvb2tpbmcgdXAgVHJlZUJ1aWxkZXIgdGFyZ2V0IG1ldGhvZHMgaW4gWE1MUGFyc2VyKCkuCisKKy4uCisKKy4uIGJwbzogMjU0MDQKKy4uIGRhdGU6IDIwMTctMDktMDgtMTEtMDQtMTAKKy4uIG5vbmNlOiBwWGV0Q2wKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU1NMQ29udGV4dC5sb2FkX2RoX3BhcmFtcygpIG5vdyBzdXBwb3J0cyBub24tQVNDSUkgcGF0aC4KKworLi4KKworLi4gYnBvOiAyODk1OAorLi4gZGF0ZTogMjAxNy0wOS0wNi0xOS00MS0wMQorLi4gbm9uY2U6IHg0LUs1RgorLi4gc2VjdGlvbjogTGlicmFyeQorCitzc2wuU1NMQ29udGV4dCgpIG5vdyB1c2VzIE9wZW5TU0wgZXJyb3IgaW5mb3JtYXRpb24gd2hlbiBhIGNvbnRleHQgY2Fubm90IGJlCitpbnN0YW50aWF0ZWQuCisKKy4uCisKKy4uIGJwbzogMjc0NDgKKy4uIGRhdGU6IDIwMTctMDktMDUtMTAtNTUtNTAKKy4uIG5vbmNlOiBRZEFxeloKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV29yayBhcm91bmQgYSBgZ2MuZGlzYWJsZSgpYCByYWNlIGNvbmRpdGlvbiBpbiB0aGUgYHN1YnByb2Nlc3NgIG1vZHVsZSB0aGF0Citjb3VsZCBsZWF2ZSBnYXJiYWdlIGNvbGxlY3Rpb24gZGlzYWJsZWQgd2hlbiBtdWx0aXBsZSB0aHJlYWRzIGFyZSBzcGF3bmluZworc3VicHJvY2Vzc2VzIGF0IG9uY2UuICBVc2VycyBhcmUgKnN0cm9uZ2x5IGVuY291cmFnZWQqIHRvIHVzZSB0aGUKK2BzdWJwcm9jZXNzMzJgIG1vZHVsZSBmcm9tIFB5UEkgb24gUHl0aG9uIDIuNyBpbnN0ZWFkLCBpdCBpcyBtdWNoIG1vcmUKK3JlbGlhYmxlLgorCisuLgorCisuLiBicG86IDMxMTcwCisuLiBkYXRlOiAyMDE3LTA5LTA0LTIzLTQxLTM1CisuLiBub25jZTogUUdtSjF0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2V4cGF0OiBVcGRhdGUgbGliZXhwYXQgZnJvbSAyLjIuMyB0byAyLjIuNC4gRml4IGNvcHlpbmcgb2YgcGFydGlhbAorY2hhcmFjdGVycyBmb3IgVVRGLTggaW5wdXQgKGxpYmV4cGF0IGJ1ZyAxMTUpOgoraHR0cHM6Ly9naXRodWIuY29tL2xpYmV4cGF0L2xpYmV4cGF0L2lzc3Vlcy8xMTUKKworLi4KKworLi4gYnBvOiAyOTEzNgorLi4gZGF0ZTogMjAxNy0wOS0wNC0xNi0zOS00OQorLi4gbm9uY2U6IHZTbjFvUgorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgVExTIDEuMyBjaXBoZXIgc3VpdGVzIGFuZCBPUF9OT19UTFN2MV8zLgorCisuLgorCisuLiBicG86IDMxMzM0CisuLiBkYXRlOiAyMDE3LTA5LTA0LTAwLTIyLTMxCisuLiBub25jZTogOVdZUmZpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBgYHBvbGwucG9sbChbdGltZW91dF0pYGAgaW4gdGhlIGBgc2VsZWN0YGAgbW9kdWxlIGZvciBhcmJpdHJhcnkgbmVnYXRpdmUKK3RpbWVvdXRzIG9uIGFsbCBPU2VzIHdoZXJlIGl0IGNhbiBvbmx5IGJlIGEgbm9uLW5lZ2F0aXZlIGludGVnZXIgb3IgLTEuCitQYXRjaCBieSBSaWNjYXJkbyBDb2NjaW9saS4KKworLi4KKworLi4gYnBvOiAxMDc0NgorLi4gZGF0ZTogMjAxNy0wOC0yOC0xMy0wMS0wNQorLi4gbm9uY2U6IG5tQXZmdQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggY3R5cGVzIHByb2R1Y2luZyB3cm9uZyBQRVAgMzExOCB0eXBlIGNvZGVzIGZvciBpbnRlZ2VyIHR5cGVzLgorCisuLgorCisuLiBicG86IDMwMTAyCisuLiBkYXRlOiAyMDE3LTA4LTE2LTIxLTE0LTMxCisuLiBub25jZTogMXNQcW1jCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBzc2wgYW5kIGhhc2hsaWIgbW9kdWxlcyBub3cgY2FsbCBPUEVOU1NMX2FkZF9hbGxfYWxnb3JpdGhtc19ub2NvbmYoKSBvbgorT3BlblNTTCA8IDEuMS4wLiBUaGUgZnVuY3Rpb24gZGV0ZWN0cyBDUFUgZmVhdHVyZXMgYW5kIGVuYWJsZXMgb3B0aW1pemF0aW9ucworb24gc29tZSBDUFUgYXJjaGl0ZWN0dXJlcyBzdWNoIGFzIFBPV0VSOC4gUGF0Y2ggaXMgYmFzZWQgb24gcmVzZWFyY2ggZnJvbQorR3VzdGF2byBTZXJyYSBTY2FsZXQuCisKKy4uCisKKy4uIGJwbzogMzA1MDIKKy4uIGRhdGU6IDIwMTctMDctMjctMTEtMzMtNTgKKy4uIG5vbmNlOiBHSmxmVTgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGhhbmRsaW5nIG9mIGxvbmcgb2lkcyBpbiBzc2wuICBCYXNlZCBvbiBwYXRjaCBieSBDaHJpc3RpYW4gSGVpbWVzLgorCisuLgorCisuLiBicG86IDI1Njg0CisuLiBkYXRlOiAyMDE3LTA3LTE3LTExLTM1LTAwCisuLiBub25jZTogdXNFTFZ4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NoYW5nZSBgYHR0ay5PcHRpb25NZW51YGAgcmFkaW9idXR0b25zIHRvIGJlIHVuaXF1ZSBhY3Jvc3MgaW5zdGFuY2VzIG9mCitgYE9wdGlvbk1lbnVgYC4KKworLi4KKworLi4gYnBvOiAyOTE2OQorLi4gZGF0ZTogMDYyCisuLiBub25jZTogOHlwQXBtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VwZGF0ZSB6bGliIHRvIDEuMi4xMS4KKworLi4KKworLi4gYnBvOiAzMDc0NgorLi4gZGF0ZTogMDYxCisuLiBub25jZTogN2RyUUkwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Byb2hpYml0ZWQgdGhlICc9JyBjaGFyYWN0ZXIgaW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMgaW4KK2Bgb3MucHV0ZW52KClgYCBhbmQgYGBvcy5zcGF3biooKWBgLgorCisuLgorCisuLiBicG86IDMwNDE4CisuLiBkYXRlOiAwNTUKKy4uIG5vbmNlOiBFd0lTUW0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworT24gV2luZG93cywgc3VicHJvY2Vzcy5Qb3Blbi5jb21tdW5pY2F0ZSgpIG5vdyBhbHNvIGlnbm9yZSBFSU5WQUwgb24KK3N0ZGluLndyaXRlKCkgaWYgdGhlIGNoaWxkIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZyBidXQgY2xvc2VkIHRoZSBwaXBlLgorCisuLgorCisuLiBicG86IDMwMzc4CisuLiBkYXRlOiAwNTQKKy4uIG5vbmNlOiBSXzE5XzUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBwcm9ibGVtIHRoYXQgbG9nZ2luZy5oYW5kbGVycy5TeXNMb2dIYW5kbGVyIGNhbm5vdCBoYW5kbGUgSVB2NgorYWRkcmVzc2VzLgorCisuLgorCisuLiBicG86IDI5OTYwCisuLiBkYXRlOiAwNTMKKy4uIG5vbmNlOiBnMHdyM3IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJlc2VydmUgZ2VuZXJhdG9yIHN0YXRlIHdoZW4gX3JhbmRvbS5SYW5kb20uc2V0c3RhdGUoKSByYWlzZXMgYW4gZXhjZXB0aW9uLgorUGF0Y2ggYnkgQnJ5YW4gT2xzb24uCisKKy4uCisKKy4uIGJwbzogMzAzMTAKKy4uIGRhdGU6IDA1MgorLi4gbm9uY2U6IFNBa0U2ZQorLi4gc2VjdGlvbjogTGlicmFyeQorCit0a0ZvbnQgbm93IHN1cHBvcnRzIHVuaWNvZGUgb3B0aW9ucyAoZS5nLiBmb250IGZhbWlseSkuCisKKy4uCisKKy4uIGJwbzogMzA0MTQKKy4uIGRhdGU6IDA1MQorLi4gbm9uY2U6IGpHbDFMYgorLi4gc2VjdGlvbjogTGlicmFyeQorCittdWx0aXByb2Nlc3NpbmcuUXVldWUuX2ZlZWQgYmFja2dyb3VuZCBydW5uaW5nIHRocmVhZCBkbyBub3QgYnJlYWsgZnJvbSBtYWluCitsb29wIG9uIGV4Y2VwdGlvbi4KKworLi4KKworLi4gYnBvOiAzMDAwMworLi4gZGF0ZTogMDUwCisuLiBub25jZTogQk9sOUhFCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBoYW5kbGluZyBlc2NhcGUgY2hhcmFjdGVycyBpbiBIWiBjb2RlYy4gIEJhc2VkIG9uIHBhdGNoIGJ5IE1hIExpbi4KKworLi4KKworLi4gYnBvOiAzMDM3NQorLi4gZGF0ZTogMDQ5CisuLiBub25jZTogOWM4cU03CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1dhcm5pbmdzIGVtaXR0ZWQgd2hlbiBjb21waWxlIGEgcmVndWxhciBleHByZXNzaW9uIG5vdyBhbHdheXMgcG9pbnQgdG8gdGhlCitsaW5lIGluIHRoZSB1c2VyIGNvZGUuICBQcmV2aW91c2x5IHRoZXkgY291bGQgcG9pbnQgaW50byBpbm5lcnMgb2YgdGhlIHJlCittb2R1bGUgaWYgZW1pdHRlZCBmcm9tIGluc2lkZSBvZiBncm91cHMgb3IgY29uZGl0aW9uYWxzLgorCisuLgorCisuLiBicG86IDMwMzYzCisuLiBkYXRlOiAwNDgKKy4uIG5vbmNlOiBsNko0MVkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUnVubmluZyBQeXRob24gd2l0aCB0aGUgLTMgb3B0aW9uIG5vdyB3YXJucyBhYm91dCByZWd1bGFyIGV4cHJlc3Npb24gc3ludGF4Cit0aGF0IGlzIGludmFsaWQgb3IgaGFzIGRpZmZlcmVudCBzZW1hbnRpYyBpbiBQeXRob24gMyBvciB3aWxsIGNoYW5nZSB0aGUKK2JlaGF2aW9yIGluIGZ1dHVyZSBQeXRob24gdmVyc2lvbnMuCisKKy4uCisKKy4uIGJwbzogMzAzNjUKKy4uIGRhdGU6IDA0NworLi4gbm9uY2U6IGVEd2RtQworLi4gc2VjdGlvbjogTGlicmFyeQorCitSdW5uaW5nIFB5dGhvbiB3aXRoIHRoZSAtMyBvcHRpb24gbm93IGVtaXRzIGRlcHJlY2F0aW9uIHdhcm5pbmdzIGZvcgorZ2V0Y2hpbGRyZW4oKSBhbmQgZ2V0aXRlcmF0b3IoKSBtZXRob2RzIG9mIHRoZSBFbGVtZW50IGNsYXNzIGluIHRoZQoreG1sLmV0cmVlLmNFbGVtZW50VHJlZSBtb2R1bGUgYW5kIHdoZW4gcGFzcyB0aGUgaHRtbCBhcmd1bWVudCB0bworeG1sLmV0cmVlLkVsZW1lbnRUcmVlLlhNTFBhcnNlcigpLgorCisuLgorCisuLiBicG86IDMwMzY1CisuLiBkYXRlOiAwNDYKKy4uIG5vbmNlOiBYVlA3X00KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYSBkZXByZWNhdGlvbiB3YXJuaW5nIGFib3V0IHRoZSBkb2N0eXBlKCkgbWV0aG9kIG9mIHRoZQoreG1sLmV0cmVlLkVsZW1lbnRUcmVlLlhNTFBhcnNlciBjbGFzcy4gIE5vdyBpdCBpcyBlbWl0dGVkIG9ubHkgd2hlbiBkZWZpbmUKK3RoZSBkb2N0eXBlKCkgbWV0aG9kIGluIHRoZSBzdWJjbGFzcyBvZiBYTUxQYXJzZXIuCisKKy4uCisKKy4uIGJwbzogMzAzMjkKKy4uIGRhdGU6IDA0NQorLi4gbm9uY2U6IFliMU1UcgorLi4gc2VjdGlvbjogTGlicmFyeQorCitpbWFwbGliIG5vdyBjYXRjaHMgdGhlIFdpbmRvd3Mgc29ja2V0IFdTQUVJTlZBTCBlcnJvciAoY29kZSAxMDAyMikgb24KK3NodXRkb3duKFNIVVRfUkRXUik6IEFuIGludmFsaWQgb3BlcmF0aW9uIHdhcyBhdHRlbXB0ZWQuIFRoaXMgZXJyb3Igb2NjdXJzCitzb21ldGltZXMgb24gU1NMIGNvbm5lY3Rpb25zLgorCisuLgorCisuLiBicG86IDMwMzQyCisuLiBkYXRlOiAwNDQKKy4uIG5vbmNlOiA4N1FndXIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKSBpZiBQeXRob24gaXMgYnVpbHQgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMDgKKyhWUyA5LjApLgorCisuLgorCisuLiBicG86IDI5OTkwCisuLiBkYXRlOiAwNDMKKy4uIG5vbmNlOiBIV1Y2S0UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHJhbmdlIGNoZWNraW5nIGluIEdCMTgwMzAgZGVjb2Rlci4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hIExpbi4KKworLi4KKworLi4gYnBvOiAzMDI0MworLi4gZGF0ZTogMDQyCisuLiBub25jZTogUkhRdDB2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbW92ZWQgdGhlIF9faW5pdF9fIG1ldGhvZHMgb2YgX2pzb24ncyBzY2FubmVyIGFuZCBlbmNvZGVyLiBNaXN1c2luZyB0aGVtCitjb3VsZCBjYXVzZSBtZW1vcnkgbGVha3Mgb3IgY3Jhc2hlcy4gIE5vdyBzY2FubmVyIGFuZCBlbmNvZGVyIG9iamVjdHMgYXJlCitjb21wbGV0ZWx5IGluaXRpYWxpemVkIGluIHRoZSBfX25ld19fIG1ldGhvZHMuCisKKy4uCisKKy4uIGJwbzogMjYyOTMKKy4uIGRhdGU6IDA0MQorLi4gbm9uY2U6IHdpZzBZRworLi4gc2VjdGlvbjogTGlicmFyeQorCitDaGFuZ2UgcmVzdWx0ZWQgYmVjYXVzZSBvZiB6aXBmaWxlIGJyZWFrYWdlLiAoU2VlIGFsc286IGJwby0yOTA5NCkKKworLi4KKworLi4gYnBvOiAzMDA3MAorLi4gZGF0ZTogMDQwCisuLiBub25jZTogWE1fQjQxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGxlYWtzIGFuZCBjcmFzaGVzIGluIGVycm9ycyBoYW5kbGluZyBpbiB0aGUgcGFyc2VyIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAzMDA2MQorLi4gZGF0ZTogMDM5CisuLiBub25jZTogaWx4TlB0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGNyYXNoZXMgaW4gSU9CYXNlIG1ldGhvZHMgbmV4dCgpIGFuZCByZWFkbGluZXMoKSB3aGVuIHJlYWRsaW5lKCkgb3IKK25leHQoKSByZXNwZWN0aXZlbHkgcmV0dXJuIG5vbi1zaXplYWJsZSBvYmplY3QuIEZpeGVkIHBvc3NpYmxlIG90aGVyIGVycm9ycworY2F1c2VkIGJ5IG5vdCBjaGVja2luZyByZXN1bHRzIG9mIFB5T2JqZWN0X1NpemUoKSwgUHlTZXF1ZW5jZV9TaXplKCksIG9yCitQeU1hcHBpbmdfU2l6ZSgpLgorCisuLgorCisuLiBicG86IDMwMDExCisuLiBkYXRlOiAwMzgKKy4uIG5vbmNlOiAyTUxmUWoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgcmFjZSBjb25kaXRpb24gaW4gSFRNTFBhcnNlci51bmVzY2FwZSgpLgorCisuLgorCisuLiBicG86IDMwMDY4CisuLiBkYXRlOiAwMzcKKy4uIG5vbmNlOiBuNHE0N3IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworX2lvLl9JT0Jhc2UucmVhZGxpbmVzIHdpbGwgY2hlY2sgaWYgaXQncyBjbG9zZWQgZmlyc3Qgd2hlbiBoaW50IGlzIHByZXNlbnQuCisKKy4uCisKKy4uIGJwbzogMjc4NjMKKy4uIGRhdGU6IDAzNgorLi4gbm9uY2U6IHBQWUhISQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBtdWx0aXBsZSBjcmFzaGVzIGluIEVsZW1lbnRUcmVlIGNhdXNlZCBieSByYWNlIGNvbmRpdGlvbnMgYW5kIHdyb25nCit0eXBlcy4KKworLi4KKworLi4gYnBvOiAyOTk0MgorLi4gZGF0ZTogMDM1CisuLiBub25jZTogQ3NHTnVUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIGNyYXNoIGluIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlIHdoZW4gZW5jb3VudGVyaW5nIGxvbmcgcnVucyBvZgorZW1wdHkgaXRlcmFibGVzLgorCisuLgorCisuLiBicG86IDI5ODYxCisuLiBkYXRlOiAwMzQKKy4uIG5vbmNlOiB0MlpvUksKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVsZWFzZSByZWZlcmVuY2VzIHRvIHRhc2tzLCB0aGVpciBhcmd1bWVudHMgYW5kIHRoZWlyIHJlc3VsdHMgYXMgc29vbiBhcwordGhleSBhcmUgZmluaXNoZWQgaW4gbXVsdGlwcm9jZXNzaW5nLlBvb2wuCisKKy4uCisKKy4uIGJwbzogMjc4ODAKKy4uIGRhdGU6IDAzMworLi4gbm9uY2U6IGVsRkZBRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBpbnRlZ2VyIG92ZXJmbG93IGluIGNQaWNrbGUgd2hlbiBwaWNrbGUgbGFyZ2Ugc3RyaW5ncyBvciB0b28gbWFueQorb2JqZWN0cy4KKworLi4KKworLi4gYnBvOiAyOTExMAorLi4gZGF0ZTogMDMyCisuLiBub25jZTogSUJXdVoyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBmaWxlIG9iamVjdCBsZWFrIGluIGFpZmMub3BlbigpIHdoZW4gZmlsZSBpcyBnaXZlbiBhcyBhIGZpbGVzeXN0ZW0gcGF0aAorYW5kIGlzIG5vdCBpbiB2YWxpZCBBSUZGIGZvcm1hdC4gT3JpZ2luYWwgcGF0Y2ggYnkgQW50aG9ueSBaaGFuZy4KKworLi4KKworLi4gYnBvOiAyOTM1NAorLi4gZGF0ZTogMDMxCisuLiBub25jZTogVEgydk1YCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGluc3BlY3QuZ2V0YXJncygpIGZvciBwYXJhbWV0ZXJzIHdoaWNoIGFyZSBjZWxsIHZhcmlhYmxlcy4KKworLi4KKworLi4gYnBvOiAyOTMzNQorLi4gZGF0ZTogMDMwCisuLiBub25jZTogX0tDN0lLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzdWJwcm9jZXNzLlBvcGVuLndhaXQoKSB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGhhcyBleGl0ZWQgdG8gYSBzdG9wcGVkCitpbnN0ZWFkIG9mIHRlcm1pbmF0ZWQgc3RhdGUgKGV4OiB3aGVuIHVuZGVyIHB0cmFjZSkuCisKKy4uCisKKy4uIGJwbzogMjkyMTkKKy4uIGRhdGU6IDAyOQorLi4gbm9uY2U6IGt4dWk3dAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBpbmZpbml0ZSByZWN1cnNpb24gaW4gdGhlIHJlcHIgb2YgdW5pbml0aWFsaXplZCBjdHlwZXMuQ0RMTCBpbnN0YW5jZXMuCisKKy4uCisKKy4uIGJwbzogMjkwODIKKy4uIGRhdGU6IDAyOAorLi4gbm9uY2U6IEQ1WHM3RgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBsb2FkaW5nIGxpYnJhcmllcyBpbiBjdHlwZXMgYnkgdW5pY29kZSBuYW1lcyBvbiBXaW5kb3dzLiBPcmlnaW5hbAorcGF0Y2ggYnkgQ2hpIEhzdWFuIFllbi4KKworLi4KKworLi4gYnBvOiAyOTE4OAorLi4gZGF0ZTogMDI3CisuLiBub25jZTogUkkzdjFRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1N1cHBvcnQgZ2xpYmMgMi4yNCBvbiBMaW51eDogZG9uJ3QgdXNlIGdldGVudHJvcHkoKSBmdW5jdGlvbiBidXQgcmVhZCBmcm9tCisvZGV2L3VyYW5kb20gdG8gZ2V0IHJhbmRvbSBieXRlcywgZm9yIGV4YW1wbGUgaW4gb3MudXJhbmRvbSgpLiBPbiBMaW51eCwKK2dldGVudHJvcHkoKSBpcyBpbXBsZW1lbnRlZCB3aGljaCBnZXRyYW5kb20oKSBpcyBibG9ja2luZyBtb2RlLCB3aGVyZWFzCitvcy51cmFuZG9tKCkgc2hvdWxkIG5vdCBibG9jay4KKworLi4KKworLi4gYnBvOiAyOTE0MgorLi4gZGF0ZTogMDI2CisuLiBub25jZTogX0ZUeXZtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHVybGxpYiwgc3VmZml4ZXMgaW4gbm9fcHJveHkgZW52aXJvbm1lbnQgdmFyaWFibGUgd2l0aCBsZWFkaW5nIGRvdHMgY291bGQKK21hdGNoIHJlbGF0ZWQgaG9zdG5hbWVzIGFnYWluIChlLmcuIC5iLmMgbWF0Y2hlcyBhLmIuYykuIFBhdGNoIGJ5IE1pbGFuCitPYmVya2lyY2guCisKKy4uCisKKy4uIGJwbzogMTMwNTEKKy4uIGRhdGU6IDAyNQorLi4gbm9uY2U6IFl6QzFUZQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCByZWN1cnNpb24gZXJyb3JzIGluIGxhcmdlIG9yIHJlc2l6ZWQgY3Vyc2VzLnRleHRwYWQuVGV4dGJveC4gIEJhc2VkIG9uCitwYXRjaCBieSBUeWNobyBBbmRlcnNlbi4KKworLi4KKworLi4gYnBvOiA5NzcwCisuLiBkYXRlOiAwMjQKKy4uIG5vbmNlOiBXSkpud1AKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY3Vyc2VzLmFzY2lpIHByZWRpY2F0ZXMgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggbmVnYXRpdmUgaW50ZWdlcnMuCisKKy4uCisKKy4uIGJwbzogMjg0MjcKKy4uIGRhdGU6IDAyMworLi4gbm9uY2U6IHZVZC12YQorLi4gc2VjdGlvbjogTGlicmFyeQorCitvbGQga2V5cyBzaG91bGQgbm90IHJlbW92ZSBuZXcgdmFsdWVzIGZyb20gV2Vha1ZhbHVlRGljdGlvbmFyeSB3aGVuCitjb2xsZWN0aW5nIGZyb20gYW5vdGhlciB0aHJlYWQuCisKKy4uCisKKy4uIGJwbzogMjg5OTgKKy4uIGRhdGU6IDAyMgorLi4gbm9uY2U6IE5mQmdtYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitNb3JlIEFQSXMgbm93IHN1cHBvcnQgbG9uZ3MgYXMgd2VsbCBhcyBpbnRzLgorCisuLgorCisuLiBicG86IDI4OTIzCisuLiBkYXRlOiAwMjEKKy4uIG5vbmNlOiBfaHJYaUwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlIGVkaXRvciBhcnRpZmFjdHMgZnJvbSBUaXgucHksIGluY2x1ZGluZyBlbmNvZGluZyBub3QgcmVjb2duaXplZCBieQorY29kZWNzLmxvb2t1cC4KKworLi4KKworLi4gYnBvOiAyOTAxOQorLi4gZGF0ZTogMDIwCisuLiBub25jZTogTU8yQWVSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBkaWN0LmZyb21rZXlzKHgpIG92ZXJhbGxvY2F0ZXMgd2hlbiB4IGlzIHNwYXJjZSBkaWN0LiBPcmlnaW5hbCBwYXRjaCBieQorUmFzbXVzIFZpbGxlbW9lcy4KKworLi4KKworLi4gYnBvOiAxOTU0MgorLi4gZGF0ZTogMDE5CisuLiBub25jZTogNXRDa2FLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBidWdzIGluIFdlYWtWYWx1ZURpY3Rpb25hcnkuc2V0ZGVmYXVsdCgpIGFuZCBXZWFrVmFsdWVEaWN0aW9uYXJ5LnBvcCgpCit3aGVuIGEgR0MgY29sbGVjdGlvbiBoYXBwZW5zIGluIGFub3RoZXIgdGhyZWFkLgorCisuLgorCisuLiBicG86IDI4OTI1CisuLiBkYXRlOiAwMTgKKy4uIG5vbmNlOiA5ekx5Z2kKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY1BpY2tsZSBub3cgY29ycmVjdGx5IHByb3BhZ2F0ZXMgZXJyb3JzIHdoZW4gdW5waWNrbGUgaW5zdGFuY2VzIG9mIG9sZC1zdHlsZQorY2xhc3Nlcy4KKworLi4KKworLi4gYnBvOiAyNzIxMgorLi4gZGF0ZTogMjAxOC0wMy0yMi0xOS0yMy0wNAorLi4gbm9uY2U6IHdyRTVLUgorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitNb2RpZnkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIDpmdW5jOmBpc2xpY2VgIHJlY2lwZSB0byBjb25zdW1lIGluaXRpYWwgdmFsdWVzCit1cCB0byB0aGUgc3RhcnQgaW5kZXguCisKKy4uCisKKy4uIGJwbzogMzI4MDAKKy4uIGRhdGU6IDIwMTgtMDItMTAtMTUtMTYtMDQKKy4uIG5vbmNlOiBGeXJxQ2sKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworVXBkYXRlIGxpbmsgdG8gdzNjIGRvYyBmb3IgeG1sIGRlZmF1bHQgbmFtZXNwYWNlcy4KKworLi4KKworLi4gYnBvOiAxNzc5OQorLi4gZGF0ZTogMjAxOC0wMS0yMi0yMS0xMy00NgorLi4gbm9uY2U6IHJkWi1WaworLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitFeHBsYWluIHJlYWwgYmVoYXZpb3VyIG9mIHN5cy5zZXR0cmFjZSBhbmQgc3lzLnNldHByb2ZpbGUgYW5kIHRoZWlyIEMtQVBJCitjb3VudGVycGFydHMgcmVnYXJkaW5nIHdoaWNoIHR5cGUgb2YgZXZlbnRzIGFyZSByZWNlaXZlZCBpbiBlYWNoIGZ1bmN0aW9uLgorUGF0Y2ggYnkgUGFibG8gR2FsaW5kbyBTYWxnYWRvLgorCisuLgorCisuLiBicG86IDgyNDMKKy4uIGRhdGU6IDIwMTgtMDEtMTMtMjAtMzAtNTMKKy4uIG5vbmNlOiBzOThyMjgKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworQWRkIGEgbm90ZSBhYm91dCBjdXJzZXMuYWRkY2ggYW5kIGN1cnNlcy5hZGRzdHIgZXhjZXB0aW9uIGJlaGF2aW9yIHdoZW4KK3dyaXRpbmcgb3V0c2lkZSBhIHdpbmRvdywgb3IgcGFkLgorCisuLgorCisuLiBicG86IDIxNjQ5CisuLiBkYXRlOiAyMDE3LTA5LTA2LTEwLTExLTU3CisuLiBub25jZTogRVV2cUE5CisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0FkZCBSRkMgNzUyNSBhbmQgTW96aWxsYSBzZXJ2ZXIgc2lkZSBUTFMgbGlua3MgdG8gU1NMIGRvY3VtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogMzAxNzYKKy4uIGRhdGU6IDAxNworLi4gbm9uY2U6IFZpdm1DZworLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitBZGQgbWlzc2luZyBhdHRyaWJ1dGUgcmVsYXRlZCBjb25zdGFudHMgaW4gY3Vyc2VzIGRvY3VtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogMjg5MjkKKy4uIGRhdGU6IDAxNgorLi4gbm9uY2U6IE1kN2tiMAorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitMaW5rIHRoZSBkb2N1bWVudGF0aW9uIHRvIGl0cyBzb3VyY2UgZmlsZSBvbiBHaXRIdWIuCisKKy4uCisKKy4uIGJwbzogMjYzNTUKKy4uIGRhdGU6IDAxNQorLi4gbm9uY2U6IFNEcV84WQorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitBZGQgY2Fub25pY2FsIGhlYWRlciBsaW5rIG9uIGVhY2ggcGFnZSB0byBjb3JyZXNwb25kaW5nIG1ham9yIHZlcnNpb24gb2YgdGhlCitkb2N1bWVudGF0aW9uLiBQYXRjaCBieSBNYXR0aGlhcyBCdXNzb25uaWVyLgorCisuLgorCisuLiBicG86IDEyMDY3CisuLiBkYXRlOiAwMTQKKy4uIG5vbmNlOiA4UmJ5T3oKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworUmV3cml0ZSBDb21wYXJpc29ucyBzZWN0aW9uIGluIHRoZSBFeHByZXNzaW9ucyBjaGFwdGVyIG9mIHRoZSBsYW5ndWFnZQorcmVmZXJlbmNlLiBTb21lIG9mIHRoZSBkZXRhaWxzIG9mIGNvbXBhcmluZyBtaXhlZCB0eXBlcyB3ZXJlIGluY29ycmVjdCBvcgorYW1iaWd1b3VzLiBBZGRlZCBkZWZhdWx0IGJlaGF2aW91ciBhbmQgY29uc2lzdGVuY3kgc3VnZ2VzdGlvbnMgZm9yCit1c2VyLWRlZmluZWQgY2xhc3Nlcy4gQmFzZWQgb24gcGF0Y2ggZnJvbSBBbmR5IE1haWVyLgorCisuLgorCisuLiBicG86IDMxNzE5CisuLiBkYXRlOiAyMDE3LTEwLTA2LTIyLTM3LTM4CisuLiBub25jZTogZ0h5clYzCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggdGVzdF9yZWdydGVzdC50ZXN0X2NyYXNoZWQoKSBvbiBzMzkweC4gQWRkIGEgbmV3IF90ZXN0Y2FwaS5fcmVhZF9udWxsKCkKK2Z1bmN0aW9uIHRvIGNyYXNoIFB5dGhvbiBpbiBhIHJlbGlhYmxlIHdheSBvbiBzMzkweC4gT24gczM5MHgsCitjdHlwZXMuc3RyaW5nX2F0KDApIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nIHJhdGhlciB0aGFuIGNyYXNoaW5nLgorCisuLgorCisuLiBicG86IDMxNTE4CisuLiBkYXRlOiAyMDE3LTA5LTE5LTIwLTQ4LTUwCisuLiBub25jZTogS3dUTU16CisuLiBzZWN0aW9uOiBUZXN0cworCitEZWJpYW4gVW5zdGFibGUgaGFzIGRpc2FibGVkIFRMUyAxLjAgYW5kIDEuMSBmb3IgU1NMdjIzX01FVEhPRCgpLiBDaGFuZ2UKK1RMUy9TU0wgcHJvdG9jb2wgb2Ygc29tZSB0ZXN0cyB0byBQUk9UT0NPTF9UTFMgb3IgUFJPVE9DT0xfVExTdjFfMiB0byBtYWtlCit0aGVtIHBhc3Mgb24gRGViaWFuLgorCisuLgorCisuLiBicG86IDI1Njc0CisuLiBkYXRlOiAyMDE3LTA5LTA0LTEzLTAzLTU1CisuLiBub25jZTogd2hWVFhoCisuLiBzZWN0aW9uOiBUZXN0cworCitSZW1vdmUgc2hhMjU2LnRicy1pbnRlcm5ldC5jb20gc3NsIHRlc3QKKworLi4KKworLi4gYnBvOiAxMTc5MAorLi4gZGF0ZTogMDA3CisuLiBub25jZTogMGFjdFpmCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggc3BvcmFkaWMgZmFpbHVyZXMgaW4gdGVzdF9tdWx0aXByb2Nlc3NpbmcuV2l0aFByb2Nlc3Nlc1Rlc3RDb25kaXRpb24uCisKKy4uCisKKy4uIGJwbzogMzAyMzYKKy4uIGRhdGU6IDAwNgorLi4gbm9uY2U6IHZPWVREcQorLi4gc2VjdGlvbjogVGVzdHMKKworQmFja3BvcnRlZCB0ZXN0LnJlZ3J0ZXN0IG9wdGlvbnMgLW0vLS1tYXRjaCBhbmQgLUcvLS1mYWlsZmFzdCBmcm9tIFB5dGhvbiAzLgorCisuLgorCisuLiBicG86IDMwMjIzCisuLiBkYXRlOiAwMDUKKy4uIG5vbmNlOiBUWUM5ckEKKy4uIHNlY3Rpb246IFRlc3RzCisKK1RvIHVuaWZ5IHJ1bm5pbmcgdGVzdHMgaW4gUHl0aG9uIDIuNyBhbmQgUHl0aG9uIDMsIHRoZSB0ZXN0IHBhY2thZ2UgY2FuIGJlCitydW4gYXMgYSBzY3JpcHQuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gcnVubmluZyB0aGUgdGVzdC5yZWdydGVzdCBtb2R1bGUgYXMKK2Egc2NyaXB0LgorCisuLgorCisuLiBicG86IDMwMjA3CisuLiBkYXRlOiAwMDQKKy4uIG5vbmNlOiBFaVJoR2kKKy4uIHNlY3Rpb246IFRlc3RzCisKK1RvIHNpbXBsaWZ5IGJhY2twb3J0cyBmcm9tIFB5dGhvbiAzLCB0aGUgdGVzdC50ZXN0X3N1cHBvcnQgbW9kdWxlIHdhcworY29udmVydGVkIGludG8gYSBwYWNrYWdlIGFuZCByZW5hbWVkIHRvIHRlc3Quc3VwcG9ydC4gIFRoZQordGVzdC5zY3JpcHRfaGVscGVyIG1vZHVsZSB3YXMgbW92ZWQgaW50byB0aGUgdGVzdC5zdXBwb3J0IHBhY2thZ2UuIE5hbWVzCit0ZXN0LnRlc3Rfc3VwcG9ydCBhbmQgdGVzdC5zY3JpcHRfaGVscGVyIGFyZSBsZWZ0IGFzIGFsaWFzZXMgdG8gdGVzdC5zdXBwb3J0CithbmQgdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIuCisKKy4uCisKKy4uIGJwbzogMzAxOTcKKy4uIGRhdGU6IDAwMworLi4gbm9uY2U6IGhhall2ZAorLi4gc2VjdGlvbjogVGVzdHMKKworRW5oYW5jZWQgZnVuY3Rpb24gc3dhcF9hdHRyKCkgaW4gdGhlIHRlc3QudGVzdF9zdXBwb3J0IG1vZHVsZS4gSXQgbm93IHdvcmtzCit3aGVuIGRlbGV0ZSByZXBsYWNlZCBhdHRyaWJ1dGUgaW5zaWRlIHRoZSB3aXRoIHN0YXRlbWVudC4gIFRoZSBvbGQgdmFsdWUgb2YKK3RoZSBhdHRyaWJ1dGUgKG9yIE5vbmUgaWYgaXQgZG9lc24ndCBleGlzdCkgbm93IHdpbGwgYmUgYXNzaWduZWQgdG8gdGhlCit0YXJnZXQgb2YgdGhlICJhcyIgY2xhdXNlLCBpZiB0aGVyZSBpcyBvbmUuIEFsc28gYmFja3BvcnRlZCBmdW5jdGlvbgorc3dhcF9pdGVtKCkuCisKKy4uCisKKy4uIGJwbzogMjgwODcKKy4uIGRhdGU6IDAwMgorLi4gbm9uY2U6IG04ZGM0UgorLi4gc2VjdGlvbjogVGVzdHMKKworU2tpcCB0ZXN0X2FzeW5jb3JlIGFuZCB0ZXN0X2VpbnRyIHBvbGwgZmFpbHVyZXMgb24gbWFjT1MuIFNraXAgc29tZSB0ZXN0cyBvZgorc2VsZWN0LnBvbGwgd2hlbiBydW5uaW5nIG9uIG1hY09TIGR1ZSB0byB1bnJlc29sdmVkIGlzc3VlcyB3aXRoIHRoZQordW5kZXJseWluZyBzeXN0ZW0gcG9sbCBmdW5jdGlvbiBvbiBzb21lIG1hY09TIHZlcnNpb25zLgorCisuLgorCisuLiBicG86IDE1MDgzCisuLiBkYXRlOiAwMDEKKy4uIG5vbmNlOiBUejNaWm0KKy4uIHNlY3Rpb246IFRlc3RzCisKK0NvbnZlcnQgRWxlbWVudFRyZWUgZG9jdGVzdHMgdG8gdW5pdHRlc3RzLgorCisuLgorCisuLiBicG86IDMzMTYzCisuLiBkYXRlOiAyMDE4LTAzLTI4LTA0LTE1LTAzCisuLiBub25jZTogaGZwV3VVCisuLiBzZWN0aW9uOiBCdWlsZAorCitVcGdyYWRlIHBpcCB0byA5LjAuMyBhbmQgc2V0dXB0b29scyB0byB2MzkuMC4xLgorCisuLgorCisuLiBicG86IDMyNjE2CisuLiBkYXRlOiAyMDE4LTAyLTA3LTExLTI0LTM4CisuLiBub25jZTogbzdtRkozCisuLiBzZWN0aW9uOiBCdWlsZAorCitEaXNhYmxlIGNvbXB1dGVkIGdvdG9zIGJ5IGRlZmF1bHQgZm9yIGNsYW5nIDwgNS4wLiBJdCBjYXVzZWQgc2lnbmlmaWNhbnQKK3BlcmZvcm1hbmNlIHJlZ3Jlc3Npb24uCisKKy4uCisKKy4uIGJwbzogMzI2MzUKKy4uIGRhdGU6IDIwMTgtMDEtMjMtMTUtMzMtNDAKKy4uIG5vbmNlOiBxSHdJWnkKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeCBzZWdmYXVsdCBvZiB0aGUgY3J5cHQgbW9kdWxlIHdoZW4gbGlieGNyeXB0IGlzIHByb3ZpZGVkIGluc3RlYWQgb2YKK2xpYmNyeXB0IGF0IHRoZSBzeXN0ZW0uCisKKy4uCisKKy4uIGJwbzogMzE5MzQKKy4uIGRhdGU6IDIwMTctMTEtMDMtMTUtMTctNTAKKy4uIG5vbmNlOiA4YlVscHYKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0Fib3J0IHRoZSBidWlsZCB3aGVuIGJ1aWxkaW5nIG91dCBvZiBhIG5vdCBjbGVhbiBzb3VyY2UgdHJlZS4KKworLi4KKworLi4gYnBvOiAzMTQ3NAorLi4gZGF0ZTogMjAxNy0wOS0xNC0xOS0zOC0xOQorLi4gbm9uY2U6IDBzX21wRAorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IC1XaW50LWluLWJvb2wtY29udGV4dCB3YXJuaW5ncyBpbiBQeU1lbV9NQUxMT0MgYW5kIFB5TWVtX1JFQUxMT0MgbWFjcm9zCisKKy4uCisKKy4uIGJwbzogMjkyNDMKKy4uIGRhdGU6IDAxMworLi4gbm9uY2U6IFdESzRoVAorLi4gc2VjdGlvbjogQnVpbGQKKworUHJldmVudCB1bm5lY2Vzc2FyeSByZWJ1aWxkaW5nIG9mIFB5dGhvbiBkdXJpbmcgYGBtYWtlIHRlc3RgYCwgYGBtYWtlCitpbnN0YWxsYGAgYW5kIHNvbWUgb3RoZXIgbWFrZSB0YXJnZXRzIHdoZW4gY29uZmlndXJlZCB3aXRoCitgYC0tZW5hYmxlLW9wdGltaXphdGlvbnNgYC4KKworLi4KKworLi4gYnBvOiAyMzQwNAorLi4gZGF0ZTogMDEyCisuLiBub25jZTogUGRZVldnCisuLiBzZWN0aW9uOiBCdWlsZAorCitEb24ndCByZWdlbmVyYXRlIGdlbmVyYXRlZCBmaWxlcyBiYXNlZCBvbiBmaWxlIG1vZGlmaWNhdGlvbiB0aW1lIGFueW1vcmU6Cit0aGUgYWN0aW9uIGlzIG5vdyBleHBsaWNpdC4gUmVwbGFjZSBgYG1ha2UgdG91Y2hgYCB3aXRoIGBgbWFrZSByZWdlbi1hbGxgYC4KKworLi4KKworLi4gYnBvOiAyNzU5MworLi4gZGF0ZTogMDExCisuLiBub25jZTogdjg3eEVyCisuLiBzZWN0aW9uOiBCdWlsZAorCitzeXMudmVyc2lvbiBhbmQgdGhlIHBsYXRmb3JtIG1vZHVsZSBweXRob25fYnVpbGQoKSwgcHl0aG9uX2JyYW5jaCgpLCBhbmQKK3B5dGhvbl9yZXZpc2lvbigpIGZ1bmN0aW9ucyBub3cgdXNlIGdpdCBpbmZvcm1hdGlvbiByYXRoZXIgdGhhbiBoZyB3aGVuCitidWlsZGluZyBmcm9tIGEgcmVwby4KKworLi4KKworLi4gYnBvOiAyOTY0MworLi4gZGF0ZTogMDEwCisuLiBub25jZTogNERyakVCCisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggYGAtLWVuYWJsZS1vcHRpbWl6YXRpb25gYCBjb25maWd1cmUgb3B0aW9uIGRpZG4ndCB3b3JrLgorCisuLgorCisuLiBicG86IDI5NTcyCisuLiBkYXRlOiAwMDkKKy4uIG5vbmNlOiBpWjFYS0sKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1VwZGF0ZSBXaW5kb3dzIGJ1aWxkIGFuZCBPUyBYIGluc3RhbGxlcnMgdG8gdXNlIE9wZW5TU0wgMS4wLjJrLgorCisuLgorCisuLiBicG86IDI4NzY4CisuLiBkYXRlOiAwMDgKKy4uIG5vbmNlOiBiOV9hNkUKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeCBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiBfc2V0bW9kZS4gUGF0Y2ggYnkgTWFzYXl1a2kgWWFtYW1vdG8KKworLi4KKworLi4gYnBvOiAzMzE4NAorLi4gZGF0ZTogMjAxOC0wNC0xNC0xNC01MC0wMQorLi4gbm9uY2U6IHRvMHRJagorLi4gc2VjdGlvbjogV2luZG93cworCitVcGRhdGUgV2luZG93cyBidWlsZCB0byB1c2UgT3BlblNTTCAxLjAuMm8uCisKKy4uCisKKy4uIGJwbzogMzI5MDMKKy4uIGRhdGU6IDIwMTgtMDItMjgtMTEtMDMtMjQKKy4uIG5vbmNlOiAxU1hZNHQKKy4uIHNlY3Rpb246IFdpbmRvd3MKKworRml4IGEgbWVtb3J5IGxlYWsgaW4gb3MuY2hkaXIoKSBvbiBXaW5kb3dzIGlmIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBpcyBzZXQKK3RvIGEgVU5DIHBhdGguCisKKy4uCisKKy4uIGJwbzogMzA4NTUKKy4uIGRhdGU6IDIwMTctMTEtMjQtMTgtMTgtMzEKKy4uIG5vbmNlOiBTb3dmN2oKKy4uIHNlY3Rpb246IFdpbmRvd3MKKworQnVtcCBUY2wvVGsgdG8gOC41LjE5LgorCisuLgorCisuLiBicG86IDMwNDUwCisuLiBkYXRlOiAyMDE3LTA5LTA0LTE0LTAwLTM3CisuLiBub25jZTogWXdpdGFKCisuLiBzZWN0aW9uOiBXaW5kb3dzCisKK1B1bGwgYnVpbGQgZGVwZW5kZW5jaWVzIGZyb20gR2l0SHViIHJhdGhlciB0aGFuIHN2bi5weXRob24ub3JnLgorCisuLgorCisuLiBicG86IDMyNzI2CisuLiBkYXRlOiAyMDE4LTA0LTE0LTA4LTU2LTIwCisuLiBub25jZTogTXRpY3luCisuLiBzZWN0aW9uOiBtYWNPUworCitQcm92aWRlIGFuIGFkZGl0aW9uYWwsIG1vcmUgbW9kZXJuIG1hY09TIGluc3RhbGxlciB2YXJpYW50IHRoYXQgc3VwcG9ydHMKK21hY09TIDEwLjkrIHN5c3RlbXMgaW4gNjQtYml0IG1vZGUgb25seS4gVXBncmFkZSB0aGUgc3VwcGxpZWQgdGhpcmQtcGFydHkKK2xpYnJhcmllcyB0byBPcGVuU1NMIDEuMC4ybiBhbmQgU1FMaXRlIDMuMjIuMC4gVGhlIDEwLjkrIGluc3RhbGxlciBub3cKK3N1cHBsaWVzIGl0cyBvd24gcHJpdmF0ZSBjb3B5IG9mIFRjbC9UayA4LjYuOC4KKworLi4KKworLi4gYnBvOiAyNDQxNAorLi4gZGF0ZTogMjAxOC0wNC0xNC0wOC01NS0zNgorLi4gbm9uY2U6IFo1QTFjUworLi4gc2VjdGlvbjogbWFjT1MKKworRGVmYXVsdCBtYWNPUyBkZXBsb3ltZW50IHRhcmdldCBpcyBub3cgc2V0IGJ5IGBgY29uZmlndXJlYGAgdG8gdGhlIGJ1aWxkCitzeXN0ZW0ncyBPUyB2ZXJzaW9uIChhcyBpcyBkb25lIGJ5IFB5dGhvbiAzKSwgbm90IGBgMTAuNGBgOyBvdmVycmlkZSB3aXRoLAorZm9yIGV4YW1wbGUsIGBgLi9jb25maWd1cmUgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPTEwLjRgYC4KKworLi4KKworLi4gYnBvOiAxNzEyOAorLi4gZGF0ZTogMjAxOC0wNC0xNC0wOC01NC0zMQorLi4gbm9uY2U6IG1Sa2IwdworLi4gc2VjdGlvbjogbWFjT1MKKworQWxsIDIuNyBtYWNPUyBpbnN0YWxsZXIgdmFyaWFudHMgbm93IHN1cHBseSB0aGVpciBvd24gdmVyc2lvbiBvZiBgYE9wZW5TU0wKKzEuMC4yYGA7IHRoZSBBcHBsZS1zdXBwbGllZCBTU0wgbGlicmFyaWVzIGFuZCByb290IGNlcnRpZmljYXRlcyBhcmUgbm90Citsb25nZXIgdXNlZC4gIFRoZSBgYEluc3RhbGxlciBDZXJ0aWZpY2F0ZWBgIGNvbW1hbmQgaW4KK2BgL0FwcGxpY2F0aW9ucy9QeXRob24gMi43YGAgbWF5IGJlIHVzZWQgdG8gZG93bmxvYWQgYW5kIGluc3RhbGwgYSBkZWZhdWx0CitzZXQgb2Ygcm9vdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgdGhpcmQtcGFydHkgYGBjZXJ0aWZpYGAgcGFja2FnZS4KKworLi4KKworLi4gYnBvOiAxMTQ4NQorLi4gZGF0ZTogMjAxOC0wNC0xNC0wOC00OS00MAorLi4gbm9uY2U6IG9BTG50RQorLi4gc2VjdGlvbjogbWFjT1MKKworcHl0aG9uLm9yZyBtYWNPUyBQeXRob25zIG5vIGxvbmdlciBzdXBwbHkgYSBkZWZhdWx0IFNESyB2YWx1ZSAoZS5nLgorYGAtaXN5c3Jvb3QgL2BgKSBvciBzcGVjaWZpYyBjb21waWxlciB2ZXJzaW9uIGRlZmF1bHQgKGUuZy4gYGBnY2MtNC4yYGApCit3aGVuIGJ1aWxkaW5nIGV4dGVuc2lvbiBtb2R1bGVzLiAgVXNlIGBgQ0NgYCwgYGBTREtST09UYGAsIGFuZAorYGBERVZFTE9QRVJfRElSYGAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIG92ZXJyaWRlIGNvbXBpbGVycyBvciB0byB1c2UgYW4KK1NESy4gIFNlZSBBcHBsZSdzIGBgeGNydW5gYCBtYW4gcGFnZSBmb3IgbW9yZSBpbmZvLgorCisuLgorCisuLiBicG86IDMzMTg0CisuLiBkYXRlOiAyMDE4LTA0LTA3LTAwLTU4LTUwCisuLiBub25jZTogck1UaXF1CisuLiBzZWN0aW9uOiBtYWNPUworCitVcGRhdGUgbWFjT1MgaW5zdGFsbGVyIGJ1aWxkIHRvIHVzZSBPcGVuU1NMIDEuMC4yby4KKworLi4KKworLi4gYnBvOiAzMTkyMAorLi4gZGF0ZTogMjAxOC0wMy0yNi0xOC01NC0yNAorLi4gbm9uY2U6IHVfV0tzVAorLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworRml4ZWQgaGFuZGxpbmcgZGlyZWN0b3JpZXMgYXMgYXJndW1lbnRzIGluIHRoZSBgYHB5Z2V0dGV4dGBgIHNjcmlwdC4gQmFzZWQKK29uIHBhdGNoIGJ5IE9sZWcgS3Jhc25pa292LgorCisuLgorCisuLiBicG86IDMwMTA5CisuLiBkYXRlOiAyMDE4LTAyLTEyLTE0LTI3LTAxCisuLiBub25jZTogbElZbGFmCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitGaXhlZCBUb29scy9zY3JpcHRzL3JlaW5kZW50LnB5IGZvciBub24tQVNDSUkgZmlsZXMuIEl0IG5vdyBwcm9jZXNzZXMgZmlsZXMKK2FzIGJpbmFyeSBzdHJlYW1zLiBUaGlzIGFsc28gZml4ZXMgIm1ha2UgcmVpbmRlbnQiLgorCisuLgorCisuLiBicG86IDI0OTYwCisuLiBkYXRlOiAyMDE3LTEyLTIyLTA5LTI1LTUxCisuLiBub25jZTogVEdkQWdPCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCisydG8zIGFuZCBsaWIydG8zIGNhbiBub3cgcmVhZCBwaWNrbGVkIGdyYW1tYXIgZmlsZXMgdXNpbmcgcGtndXRpbC5nZXRfZGF0YSgpCityYXRoZXIgdGhhbiBwcm9iaW5nIHRoZSBmaWxlc3lzdGVtLiBUaGlzIGxldHMgMnRvMyBhbmQgbGliMnRvMyB3b3JrIHdoZW4gcnVuCitmcm9tIGEgemlwZmlsZS4KKworLi4KKworLi4gYnBvOiAyMDg5MQorLi4gZGF0ZTogMjAxNy0xMS0zMC0xOC0xMy00NQorLi4gbm9uY2U6IHdCbk1kRgorLi4gc2VjdGlvbjogQyBBUEkKKworRml4IFB5R0lMU3RhdGVfRW5zdXJlKCkuIFdoZW4gUHlHSUxTdGF0ZV9FbnN1cmUoKSBpcyBjYWxsZWQgaW4gYSBub24tUHl0aG9uCit0aHJlYWQgYmVmb3JlIFB5RXZhbF9Jbml0VGhyZWFkcygpLCBvbmx5IGNhbGwgUHlFdmFsX0luaXRUaHJlYWRzKCkgYWZ0ZXIKK2NhbGxpbmcgUHlUaHJlYWRTdGF0ZV9OZXcoKSB0byBmaXggYSBjcmFzaC4KKworLi4KKworLi4gYnBvOiAzMTYyNgorLi4gZGF0ZTogMjAxNy0xMS0wNy0xMS01OS00NAorLi4gbm9uY2U6IExQLUNvRAorLi4gc2VjdGlvbjogQyBBUEkKKworV2hlbiBQeXRob24gaXMgYnVpbHQgaW4gZGVidWcgbW9kZSwgdGhlIG1lbW9yeSBkZWJ1ZyBob29rcyBub3cgZmFpbCB3aXRoIGEKK2ZhdGFsIGVycm9yIGlmIHJlYWxsb2MoKSBmYWlscyB0byBzaHJpbmsgYSBtZW1vcnkgYmxvY2ssIGJlY2F1c2UgdGhlIGRlYnVnCitob29rIGp1c3QgZXJhc2VkIGZyZWVkIGJ5dGVzIHdpdGhvdXQga2VlcGluZyBhIGNvcHkgb2YgdGhlbS4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy4xcmMxLnJzdCBiL01pc2MvTkVXUy5kLzIuNy4xcmMxLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGU4MGVkCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43LjFyYzEucnN0CkBAIC0wLDAgKzEsMTcyNiBAQAorLi4gYnBvOiAxMDIyMQorLi4gZGF0ZTogODI3MworLi4gbm9uY2U6IDROcHBuWAorLi4gcmVsZWFzZSBkYXRlOiAyMDEwLTExLTEzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitkaWN0LnBvcChrKSBub3cgaGFzIGEga2V5IGVycm9yIG1lc3NhZ2UgdGhhdCBpbmNsdWRlcyB0aGUgbWlzc2luZyBrZXkgKHNhbWUKK21lc3NhZ2UgZFtrXSByZXR1cm5zIGZvciBtaXNzaW5nIGtleXMpLgorCisuLgorCisuLiBicG86IDEwMTI1CisuLiBkYXRlOiA4MjcyCisuLiBub25jZTogWnMwWnNBCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitEb24ndCBzZWdmYXVsdCB3aGVuIHRoZSBpdGVyYXRvciBwYXNzZWQgdG8gYGBmaWxlLndyaXRlbGluZXMoKWBgIGNsb3NlcyB0aGUKK2ZpbGUuCisKKy4uCisKKy4uIGJwbzogMTAxODYKKy4uIGRhdGU6IDgyNzEKKy4uIG5vbmNlOiBfTGdUa08KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCB0aGUgU3ludGF4RXJyb3IgY2FyZXQgd2hlbiB0aGUgb2Zmc2V0IGlzIGVxdWFsIHRvIHRoZSBsZW5ndGggb2YgdGhlCitvZmZlbmRpbmcgbGluZS4KKworLi4KKworLi4gYnBvOiA5OTk3CisuLiBkYXRlOiA4MjcwCisuLiBub25jZTogbUdxN0RkCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitEb24ndCBsZXQgdGhlIG5hbWUgInRvcCIgaGF2ZSBzcGVjaWFsIHNpZ25pZmljYW5jZSBpbiBzY29wZSByZXNvbHV0aW9uLgorCisuLgorCisuLiBicG86IDk4NjIKKy4uIGRhdGU6IDgyNjkKKy4uIG5vbmNlOiAxOFBqUlEKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0NvbXBlbnNhdGUgZm9yIGJyb2tlbiBQSVBFX0JVRiBpbiBBSVggYnkgaGFyZCBjb2RpbmcgaXRzIHZhbHVlIGFzIHRoZQorZGVmYXVsdCA1MTIgd2hlbiBjb21waWxpbmcgb24gQUlYLgorCisuLgorCisuLiBicG86IDk2NzUKKy4uIGRhdGU6IDgyNjgKKy4uIG5vbmNlOiBnclJZMGwKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0NPYmplY3QgdXNlIGlzIG1hcmtlZCBhcyBhIFB5M2sgd2FybmluZywgbm90IGEgZGVwcmVjYXRpb24gd2FybmluZy4KKworLi4KKworLi4gYnBvOiAxMDA2OAorLi4gZGF0ZTogODI2NworLi4gbm9uY2U6IENZQmlOVworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworR2xvYmFsIG9iamVjdHMgd2hpY2ggaGF2ZSByZWZlcmVuY2UgY3ljbGVzIHdpdGggdGhlaXIgbW9kdWxlJ3MgZGljdCBhcmUgbm93CitjbGVhcmVkIGFnYWluLiBUaGlzIGNhdXNlcyBpc3N1ZSAjNzE0MCB0byBhcHBlYXIgYWdhaW4uCisKKy4uCisKKy4uIGJwbzogOTg2OQorLi4gZGF0ZTogODI2NgorLi4gbm9uY2U6IGd3Z0hDbAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworTWFrZSBsb25nKCkgYW5kIFB5TnVtYmVyX0xvbmcgcmV0dXJuIHNvbWV0aGluZyBvZiB0eXBlIGxvbmcgZm9yIGEgY2xhc3MKK3dob3NlIF9fbG9uZ19fIG1ldGhvZCByZXR1cm5zIGEgcGxhaW4gaW50LiAgVGhpcyBmaXhlcyBhbiBpbnRlcnByZXRlciBjcmFzaAord2hlbiBpbml0aWFsaXppbmcgYW4gaW5zdGFuY2Ugb2YgYSBsb25nIHN1YmNsYXNzIGZyb20gYW4gb2JqZWN0IHdob3NlCitfX2xvbmdfXyBtZXRob2QgcmV0dXJucyBhIHBsYWluIGludC4KKworLi4KKworLi4gYnBvOiAxMDAwNgorLi4gZGF0ZTogODI2NQorLi4gbm9uY2U6IFFNQTJrQworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKwordHlwZS5fX2Fic3RyYWN0bWV0aG9kc19fIG5vdyByYWlzZXMgYW4gQXR0cmlidXRlRXJyb3IuCisKKy4uCisKKy4uIGJwbzogOTc5NworLi4gZGF0ZTogODI2NAorLi4gbm9uY2U6IFl4aXNGbgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworcHlzdGF0ZS5jIHdyb25nbHkgYXNzdW1lZCB0aGF0IHplcm8gY291bGRuJ3QgYmUgYSB2YWxpZCB0aHJlYWQtbG9jYWwgc3RvcmFnZQora2V5LgorCisuLgorCisuLiBicG86IDQ5NDcKKy4uIGRhdGU6IDgyNjMKKy4uIG5vbmNlOiBhYkEwQVQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSB3cml0ZSgpIG1ldGhvZCBvZiBzeXMuc3Rkb3V0IGFuZCBzeXMuc3RkZXJyIHVzZXMgdGhlaXIgZW5jb2RpbmcgYW5kCitlcnJvcnMgYXR0cmlidXRlcyBpbnN0ZWFkIG9mIHVzaW5nIHV0Zi04IGluIHN0cmljdCBtb2RlLCB0byBnZXQgdGhlIHNhbWUKK2JlaGF2aW91ciB0aGFuIHRoZSBwcmludCBzdGF0ZW1lbnQuCisKKy4uCisKKy4uIGJwbzogOTczNworLi4gZGF0ZTogODI2MgorLi4gbm9uY2U6IEpsdXNJTQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgY3Jhc2ggd2hlbiB0cnlpbmcgdG8gZGVsZXRlIGEgc2xpY2Ugb3IgYW4gaXRlbSBmcm9tIGEgbWVtb3J5dmlldworb2JqZWN0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDgyNjEKKy4uIG5vbmNlOiBNSTFoMUYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1Jlc3RvcmUgR0lMIGluIG5pc19jYXQgaW4gY2FzZSBvZiBlcnJvci4KKworLi4KKworLi4gYnBvOiA5Njg4CisuLiBkYXRlOiA4MjYwCisuLiBub25jZTogUFRBS0JMCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitfX2Jhc2ljc2l6ZV9fIGFuZCBfX2l0ZW1zaXplX18gbXVzdCBiZSBhY2Nlc3NlZCBhcyBQeV9zc2l6ZV90LgorCisuLgorCisuLiBicG86IDg1MzAKKy4uIGRhdGU6IDgyNTkKKy4uIG5vbmNlOiA0T2x4WnEKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1ByZXZlbnQgc3RyaW5nbGliIGZhc3RzZWFyY2ggZnJvbSByZWFkaW5nIGJleW9uZCB0aGUgZnJvbnQgb2YgYW4gYXJyYXkuCisKKy4uCisKKy4uIGJwbzogODM3NTUKKy4uIGRhdGU6IDgyNTgKKy4uIG5vbmNlOiBMRm9HS00KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ltcGxpY2l0IHNldC10by1mcm96ZW5zZXQgY29udmVyc2lvbiB3YXMgbm90IHRocmVhZC1zYWZlLgorCisuLgorCisuLiBicG86IDk0MTYKKy4uIGRhdGU6IDgyNTcKKy4uIG5vbmNlOiBFcWVjclcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBzb21lIGlzc3VlcyB3aXRoIGNvbXBsZXggZm9ybWF0dGluZyB3aGVyZSB0aGUgb3V0cHV0IHdpdGggbm8gdHlwZQorc3BlY2lmaWVyIGZhaWxlZCB0byBtYXRjaCB0aGUgc3RyIG91dHB1dDoKKworLSBmb3JtYXQoY29tcGxleCgtMC4wLCAyLjApLCAnLScpIG9taXR0ZWQgdGhlIHJlYWwgcGFydCBmcm9tIHRoZSBvdXRwdXQsICAgLQorZm9ybWF0KGNvbXBsZXgoMC4wLCAyLjApLCAnLScpIGluY2x1ZGVkIGEgc2lnbiBhbmQgcGFyZW50aGVzZXMuCisKKy4uCisKKy4uIGJwbzogNzYxNgorLi4gZGF0ZTogODI1NgorLi4gbm9uY2U6IEFPR21TagorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGNvcHlpbmcgb2Ygb3ZlcmxhcHBpbmcgbWVtb3J5dmlldyBzbGljZXMgd2l0aCB0aGUgSW50ZWwgY29tcGlsZXIuCisKKy4uCisKKy4uIGJwbzogOTkyNgorLi4gZGF0ZTogODI1NQorLi4gbm9uY2U6IEo0QkdHWQorLi4gc2VjdGlvbjogTGlicmFyeQorCitXcmFwcGVkIFRlc3RTdWl0ZSBzdWJjbGFzcyBkb2VzIG5vdCBnZXQgX19jYWxsX18gZXhlY3V0ZWQKKworLi4KKworLi4gYnBvOiA0NDcxCisuLiBkYXRlOiA4MjU0CisuLiBub25jZTogWkpEbHJzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Byb3Blcmx5IHNodXRkb3duIHNvY2tldCBpbiBJTUFQLnNodXRkb3duKCkuICBQYXRjaCBieSBMb3JlbnpvIE0uIENhdHVjY2kuCisKKy4uCisKKy4uIGJwbzogMTAxMjYKKy4uIGRhdGU6IDgyNTMKKy4uIG5vbmNlOiB6dlRaVi0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGRpc3R1dGlscycgdGVzdF9idWlsZCB3aGVuIFB5dGhvbiB3YXMgYnVpbHQgd2l0aCAtLWVuYWJsZS1zaGFyZWQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODI1MgorLi4gbm9uY2U6IE5GZVdSYworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdHlwbyBpbiBvbmUgc2Rpc3Qgb3B0aW9uIChtZWRhdGEtY2hlY2spLgorCisuLgorCisuLiBicG86IDkxOTkKKy4uIGRhdGU6IDgyNTEKKy4uIG5vbmNlOiA4V0ZfUHAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGluY29ycmVjdCB1c2Ugb2YgZGlzdHV0aWxzLmNtZC5Db21tYW5kLmFubm91bmNlLgorCisuLgorCisuLiBicG86IDE3MTg1NzQKKy4uIGRhdGU6IDgyNTAKKy4uIG5vbmNlOiBpcUxWMjAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG9wdGlvbnMgdGhhdCB3ZXJlIHN1cHBvc2VkIHRvIGFjY2VwdCBhcmd1bWVudHMgYnV0IGRpZCBub3QgaW4KK2J1aWxkX2NsaWIuCisKKy4uCisKKy4uIGJwbzogOTI4MQorLi4gZGF0ZTogODI0OQorLi4gbm9uY2U6IDB4WU5mTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcmV2ZW50IHJhY2UgY29uZGl0aW9uIHdpdGggbWtkaXIgaW4gZGlzdHV0aWxzLiAgUGF0Y2ggYnkgQXJmcmV2ZXIuCisKKy4uCisKKy4uIGJwbzogMTAyMjkKKy4uIGRhdGU6IDgyNDgKKy4uIG5vbmNlOiAxMG9OUzcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGNhY2hpbmcgZXJyb3IgaW4gZ2V0dGV4dC4KKworLi4KKworLi4gYnBvOiAxMDI1MgorLi4gZGF0ZTogODI0NworLi4gbm9uY2U6IHBHaEVZTworLi4gc2VjdGlvbjogTGlicmFyeQorCitDbG9zZSBmaWxlIG9iamVjdHMgaW4gYSB0aW1lbHkgbWFubmVyIGluIGRpc3R1dGlscyBjb2RlIGFuZCB0ZXN0cy4gIFBhdGNoIGJ5CitCcmlhbiBCcmF6aWwsIGNvbXBsZXRlZCBieSDDiXJpYyBBcmF1am8uCisKKy4uCisKKy4uIGJwbzogMTAzMTEKKy4uIGRhdGU6IDgyNDYKKy4uIG5vbmNlOiB1MXQ3dXAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHNpZ25hbCBtb2R1bGUgbm93IHJlc3RvcmVzIGVycm5vIGJlZm9yZSByZXR1cm5pbmcgZnJvbSBpdHMgbG93LWxldmVsCitzaWduYWwgaGFuZGxlci4gIFBhdGNoIGJ5IEhhbGx2YXJkIEIgRnVydXNldGguCisKKy4uCisKKy4uIGJwbzogMTAwMzgKKy4uIGRhdGU6IDgyNDUKKy4uIG5vbmNlOiA1RUtjRDcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworanNvbi5sb2FkcygpIG9uIHN0ciBzaG91bGQgYWx3YXlzIHJldHVybiB1bmljb2RlIChyZWdyZXNzaW9uIGZyb20gUHl0aG9uCisyLjYpLiAgUGF0Y2ggYnkgV2FsdGVyIETDtnJ3YWxkLgorCisuLgorCisuLiBicG86IDEyMDE3NgorLi4gZGF0ZTogODI0NAorLi4gbm9uY2U6IDlrMk5hUAorLi4gc2VjdGlvbjogTGlicmFyeQorCitXcmFwcGVkIFRlc3RTdWl0ZSBzdWJjbGFzcyBkb2VzIG5vdCBnZXQgX19jYWxsX18gZXhlY3V0ZWQuCisKKy4uCisKKy4uIGJwbzogNjcwNgorLi4gZGF0ZTogODI0MworLi4gbm9uY2U6IEVzLVlydworLi4gc2VjdGlvbjogTGlicmFyeQorCithc3luY29yZSBhY2NlcHQoKSBtZXRob2Qgbm8gbG9uZ2VyIHJhaXNlcyBFV09VTERCTE9DSy9FQ09OTkFCT1JURUQgb24KK2luY29tcGxldGUgY29ubmVjdGlvbiBhdHRlbXB0IGJ1dCByZXR1cm5zIE5vbmUgaW5zdGVhZC4KKworLi4KKworLi4gYnBvOiAxMDI2NgorLi4gZGF0ZTogODI0MgorLi4gbm9uY2U6IEJaOWR1TworLi4gc2VjdGlvbjogTGlicmFyeQorCit1dS5kZWNvZGUgZGlkbid0IGNsb3NlIGluX2ZpbGUgZXhwbGljaXRseSB3aGVuIGl0IHdhcyBnaXZlbiBhcyBhIGZpbGVuYW1lLgorUGF0Y2ggYnkgQnJpYW4gQnJhemlsLgorCisuLgorCisuLiBicG86IDEwMjQ2CisuLiBkYXRlOiA4MjQxCisuLiBub25jZTogTlBHM29MCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3V1LmVuY29kZSBkaWRuJ3QgY2xvc2UgZmlsZSBvYmplY3RzIGV4cGxpY2l0bHkgd2hlbiBmaWxlbmFtZXMgd2VyZSBnaXZlbiB0bworaXQuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy4uCisKKy4uIGJwbzogMTAyNTMKKy4uIGRhdGU6IDgyNDAKKy4uIG5vbmNlOiBUTDFGOTAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRmlsZUlPIGxlYWtzIGEgZmlsZSBkZXNjcmlwdG9yIHdoZW4gdHJ5aW5nIHRvIG9wZW4gYSBmaWxlIGZvciBhcHBlbmQgdGhhdAoraXNuJ3Qgc2Vla2FibGUuICBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy4uCisKKy4uIGJwbzogNjEwNQorLi4gZGF0ZTogODIzOQorLi4gbm9uY2U6IHF0OXhUVgorLi4gc2VjdGlvbjogTGlicmFyeQorCitqc29uLmR1bXBzIG5vdyByZXNwZWN0cyBPcmRlcmVkRGljdCdzIGl0ZXJhdGlvbiBvcmRlci4KKworLi4KKworLi4gYnBvOiA5Mjk1CisuLiBkYXRlOiA4MjM4CisuLiBub25jZTogTTd5MG1CCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIGNyYXNoIHVuZGVyIFdpbmRvd3Mgd2hlbiBjYWxsaW5nIGNsb3NlKCkgb24gYSBmaWxlIG9iamVjdCB3aXRoIGN1c3RvbQorYnVmZmVyaW5nIGZyb20gdHdvIHRocmVhZHMgYXQgb25jZS4KKworLi4KKworLi4gYnBvOiA1MDI3CisuLiBkYXRlOiA4MjM3CisuLiBub25jZTogNm1ZUk5jCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBzdGFuZGFyZCBgYHhtbGBgIG5hbWVzcGFjZSBpcyBub3cgdW5kZXJzdG9vZCBieQoreG1sLnNheC5zYXh1dGlscy5YTUxHZW5lcmF0b3IgYXMgYmVpbmcgYm91bmQgdG8KK2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZS4gIFBhdGNoIGJ5IFRyb3kgSi4gRmFycmVsbC4KKworLi4KKworLi4gYnBvOiAxMDE2MworLi4gZGF0ZTogODIzNgorLi4gbm9uY2U6IExydmQ2SQorLi4gc2VjdGlvbjogTGlicmFyeQorCitTa2lwIHVucmVhZGFibGUgcmVnaXN0cnkga2V5cyBkdXJpbmcgbWltZXR5cGVzIGluaXRpYWxpemF0aW9uLgorCisuLgorCisuLiBicG86IDUxMTcKKy4uIGRhdGU6IDgyMzUKKy4uIG5vbmNlOiBGekQ3cWQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgcm9vdCBkaXJlY3RvcnkgcmVsYXRlZCBpc3N1ZSBvbiBwb3NpeHBhdGgucmVscGF0aCgpIGFuZAorbnRwYXRoLnJlbHBhdGgoKS4KKworLi4KKworLi4gYnBvOiA5NDA5CisuLiBkYXRlOiA4MjM0CisuLiBub25jZTogSFJuaEhUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0aGUgcmVnZXggdG8gbWF0Y2ggYWxsIGtpbmQgb2YgZmlsZW5hbWVzLCBmb3IgaW50ZXJhY3RpdmUgZGVidWdnaW5nIGluCitkb2N0ZXN0cy4KKworLi4KKworLi4gYnBvOiA2NjEyCisuLiBkYXRlOiA4MjMzCisuLiBub25jZTogcWFxbm5oCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzaXRlIGFuZCBzeXNjb25maWcgdG8gY2F0Y2ggb3MuZ2V0Y3dkKCkgZXJyb3IsIGVnLiBpZiB0aGUgY3VycmVudAorZGlyZWN0b3J5IHdhcyBkZWxldGVkLiBQYXRjaCB3cml0dGVuIGJ5IFcuIFRyZXZvciBLaW5nLgorCisuLgorCisuLiBicG86IDEwMDQ1CisuLiBkYXRlOiA4MjMyCisuLiBub25jZTogaXo2S3BRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ltcHJvdmVkIHBlcmZvcm1hbmNlIHdoZW4gd3JpdGluZyBhZnRlciBzZWVraW5nIHBhc3QgdGhlIGVuZCBvZiB0aGUgImZpbGUiCitpbiBjU3RyaW5nSU8uCisKKy4uCisKKy4uIGJwbzogOTk0OAorLi4gZGF0ZTogODIzMQorLi4gbm9uY2U6IEZPdjhrcAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBwcm9ibGVtIG9mIGxvc2luZyBmaWxlbmFtZSBjYXNlIGluZm9ybWF0aW9uLgorCisuLgorCisuLiBicG86IDk0MzcKKy4uIGRhdGU6IDgyMzAKKy4uIG5vbmNlOiBhOTVIRWIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGJ1aWxkaW5nIEMgZXh0ZW5zaW9ucyB3aXRoIG5vbi1kZWZhdWx0IExERkxBR1MuCisKKy4uCisKKy4uIGJwbzogOTc1OQorLi4gZGF0ZTogODIyOQorLi4gbm9uY2U6IGFHc1FpYworLi4gc2VjdGlvbjogTGlicmFyeQorCitHemlwRmlsZSBub3cgcmFpc2VzIFZhbHVlRXJyb3Igd2hlbiBhbiBvcGVyYXRpb24gaXMgYXR0ZW1wdGVkIGFmdGVyIHRoZSBmaWxlCitpcyBjbG9zZWQuICBQYXRjaCBieSBKZWZmcmV5IEZpbmtlbHN0ZWluLgorCisuLgorCisuLiBicG86IDkwNDIKKy4uIGRhdGU6IDgyMjgKKy4uIG5vbmNlOiBkUVRLX0MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGludGVyYWN0aW9uIG9mIGN1c3RvbSB0cmFuc2xhdGlvbiBjbGFzc2VzIGFuZCBjYWNoaW5nIGluIGdldHRleHQuCisKKy4uCisKKy4uIGJwbzogOTA2NQorLi4gZGF0ZTogODIyNworLi4gbm9uY2U6IFBUc3Y2XworLi4gc2VjdGlvbjogTGlicmFyeQorCit0YXJmaWxlIG5vIGxvbmdlciB1c2VzICJyb290IiBhcyB0aGUgZGVmYXVsdCBmb3IgdGhlIHVuYW1lIGFuZCBnbmFtZSBmaWVsZC4KKworLi4KKworLi4gYnBvOiAxMDUwMjY4CisuLiBkYXRlOiA4MjI2CisuLiBub25jZTogb090R1ZECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3BhcnNlYWRkciBub3cgY29ycmVjdGx5IHF1b3RlcyBkb3VibGUgcXVvdGUgYW5kIGJhY2tzbGFzaCBjaGFyYWN0ZXJzIHRoYXQKK2FwcGVhciBpbnNpZGUgcXVvdGVkIHN0cmluZ3MgaW4gZW1haWwgYWRkcmVzc2VzLgorCisuLgorCisuLiBicG86IDEwMDA0CisuLiBkYXRlOiA4MjI1CisuLiBub25jZTogTlRZX3pNCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3F1b3ByaW1pbWUgbm8gbG9uZ2VyIGdlbmVyYXRlcyBhIHRyYWNlYmFjayB3aGVuIGNvbmZyb250ZWQgd2l0aCBpbnZhbGlkCitjaGFyYWN0ZXJzIGFmdGVyICc9JyBpbiBhIFEtZW5jb2RlZCB3b3JkLgorCisuLgorCisuLiBicG86IDk5NTAKKy4uIGRhdGU6IDgyMjQKKy4uIG5vbmNlOiBvbU9nal8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHNvY2tldC5zZW5kYWxsKCkgY3Jhc2ggb3IgbWlzYmVoYXZpb3VyIHdoZW4gYSBzaWduYWwgaXMgcmVjZWl2ZWQuICBOb3cKK3NlbmRhbGwoKSBwcm9wZXJseSBjYWxscyBzaWduYWwgaGFuZGxlcnMgaWYgbmVjZXNzYXJ5LCBhbmQgcmV0cmllcyBzZW5kaW5nCitpZiB0aGVzZSByZXR1cm5lZCBzdWNjZXNzZnVsbHksIGluY2x1ZGluZyBvbiBzb2NrZXRzIHdpdGggYSB0aW1lb3V0LgorCisuLgorCisuLiBicG86IDk5NDcKKy4uIGRhdGU6IDgyMjMKKy4uIG5vbmNlOiBZQ2JBUm8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworbG9nZ2luZzogRml4ZWQgbG9ja2luZyBidWcgaW4gc3RvcExpc3RlbmluZy4KKworLi4KKworLi4gYnBvOiA5OTQ1CisuLiBkYXRlOiA4MjIyCisuLiBub25jZTogRFRJeWdZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmc6IEZpeGVkIGxvY2tpbmcgYnVncyBpbiBhZGRIYW5kbGVyL3JlbW92ZUhhbmRsZXIuCisKKy4uCisKKy4uIGJwbzogOTkzNgorLi4gZGF0ZTogODIyMQorLi4gbm9uY2U6IGV2ZDF2dgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBleGVjdXRhYmxlIGxpbmVzJyBzZWFyY2ggaW4gdGhlIHRyYWNlIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiA5OTI4CisuLiBkYXRlOiA4MjIwCisuLiBub25jZTogUzVMSEQ4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Byb3Blcmx5IGluaXRpYWxpemUgdGhlIHR5cGVzIGV4cG9ydGVkIGJ5IHRoZSBiejIgbW9kdWxlLgorCisuLgorCisuLiBicG86IDk4NTQKKy4uIGRhdGU6IDgyMTkKKy4uIG5vbmNlOiBEeERLbG4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGRlZmF1bHQgcmVhZCgpIGltcGxlbWVudGF0aW9uIGluIGlvLlJhd0lPQmFzZSBub3cgaGFuZGxlcyBub24tYmxvY2tpbmcKK3JlYWRpbnRvKCkgcmV0dXJuaW5nIE5vbmUgY29ycmVjdGx5LgorCisuLgorCisuLiBicG86IDk3MjkKKy4uIGRhdGU6IDgyMTgKKy4uIG5vbmNlOiBtU0NyQkgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBzaWduYXR1cmUgb2YgU1NMU29ja2V0LnJlY3Zmcm9tKCkgYW5kIFNTTFNvY2tldC5zZW5kdG8oKSB0byBtYXRjaAordGhlIGNvcnJlc3BvbmRpbmcgc29ja2V0IG1ldGhvZHMuICBBbHNvLCBmaXggdmFyaW91cyBTU0xTb2NrZXQgbWV0aG9kcyB0bworcmFpc2Ugc29ja2V0LmVycm9yIHJhdGhlciB0aGFuIGFuIHVuaGVscGZ1bCBUeXBlRXJyb3Igd2hlbiBjYWxsZWQgb24gYW4KK3VuY29ubmVjdGVkIHNvY2tldC4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFuZHJldyBCZW5uZXR0cy4KKworLi4KKworLi4gYnBvOiA5ODI2CisuLiBkYXRlOiA4MjE3CisuLiBub25jZTogT0h2bHpqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK09yZGVyZWREaWN0Ll9fcmVwcl9fIGNhbiBub3cgaGFuZGxlIHNlbGYtcmVmZXJlbnRpYWwgdmFsdWVzOiAgIGRbJ3gnXSA9IGQuCisKKy4uCisKKy4uIGJwbzogNzY3NjQ1CisuLiBkYXRlOiA4MjE2CisuLiBub25jZTogWWdiRFBwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NldCBvcy5wYXRoLnN1cHBvcnRzX3VuaWNvZGVfZmlsZW5hbWVzIHRvIFRydWUgb24gTWFjIE9TIFguCisKKy4uCisKKy4uIGJwbzogOTgzNworLi4gZGF0ZTogODIxNQorLi4gbm9uY2U6IEVab3dUMgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgcmVhZCgpIG1ldGhvZCBvZiBaaXBFeHRGaWxlIG9iamVjdHMgKGFzIHJldHVybmVkIGJ5IFppcEZpbGUub3BlbigpKQorY291bGQgcmV0dXJuIG1vcmUgYnl0ZXMgdGhhbiByZXF1ZXN0ZWQuCisKKy4uCisKKy4uIGJwbzogOTgyNQorLi4gZGF0ZTogODIxNAorLi4gbm9uY2U6IE1WWU5VbAorLi4gc2VjdGlvbjogTGlicmFyeQorCityZW1vdmVkIF9fZGVsX18gZnJvbSB0aGUgZGVmaW5pdGlvbiBvZiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdC4gVGhpcworcHJldmVudHMgdXNlci1jcmVhdGVkIHNlbGYtcmVmZXJlbmNpbmcgb3JkZXJlZCBkaWN0aW9uYXJpZXMgZnJvbSBiZWNvbWluZworcGVybWFuZW50bHkgdW5jb2xsZWN0YWJsZSBHQyBnYXJiYWdlLiAgVGhlIGRvd25zaWRlIGlzIHRoYXQgcmVtb3ZpbmcgX19kZWxfXworbWVhbnMgdGhhdCB0aGUgaW50ZXJuYWwgZG91Ymx5LWxpbmtlZCBsaXN0IGhhcyB0byB3YWl0IGZvciBHQyBjb2xsZWN0aW9uCityYXRoZXIgdGhhbiBmcmVlaW5nIG1lbW9yeSBpbW1lZGlhdGVseSB3aGVuIHRoZSByZWZjbnQgZHJvcHMgdG8gemVyby4KKworLi4KKworLi4gYnBvOiA5ODE2CisuLiBkYXRlOiA4MjEzCisuLiBub25jZTogak9nZmVECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3JhbmRvbS5SYW5kb20uanVtcGFoZWFkKG4pIGRpZCBub3QgcHJvZHVjZSBhIHN1ZmZpY2llbnRseSBkaWZmZXJlbnQgaW50ZXJuYWwKK3N0YXRlIGZvciBzbWFsbCB2YWx1ZXMgb2Ygbi4gIEZpeGVkIGJ5IHNhbHRpbmcgdGhlIHZhbHVlLgorCisuLgorCisuLiBicG86IDk3OTIKKy4uIGRhdGU6IDgyMTIKKy4uIG5vbmNlOiA2ZDhLTjcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gY2FzZSBvZiBjb25uZWN0aW9uIGZhaWx1cmUsIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbigpIHdvdWxkIHN3YWxsb3cgdGhlCitleGNlcHRpb24gYW5kIHJhaXNlIGEgbmV3IG9uZSwgbWFraW5nIGl0IGltcG9zc2libGUgdG8gZmV0Y2ggdGhlIG9yaWdpbmFsCitlcnJubywgb3IgdG8gZmlsdGVyIHRpbWVvdXQgZXJyb3JzLiAgTm93IHRoZSBvcmlnaW5hbCBlcnJvciBpcyByZS1yYWlzZWQuCisKKy4uCisKKy4uIGJwbzogOTc1OAorLi4gZGF0ZTogODIxMQorLi4gbm9uY2U6IGJUQ1gzcworLi4gc2VjdGlvbjogTGlicmFyeQorCitXaGVuIGZjbnRsLmlvY3RsKCkgd2FzIGNhbGxlZCB3aXRoIG11dGFibGVfZmxhZyBzZXQgdG8gVHJ1ZSwgYW5kIHRoZSBwYXNzZWQKK2J1ZmZlciB3YXMgZXhhY3RseSAxMDI0IGJ5dGVzIGxvbmcsIHRoZSBidWZmZXIgd291bGRuJ3QgYmUgdXBkYXRlZCBiYWNrCithZnRlciB0aGUgc3lzdGVtIGNhbGwuICBPcmlnaW5hbCBwYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy4uCisKKy4uIGJwbzogMTEwMDU2MgorLi4gZGF0ZTogODIxMAorLi4gbm9uY2U6IHc2MUNyeAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggZGVlcC1jb3B5aW5nIG9mIG9iamVjdHMgZGVyaXZlZCBmcm9tIHRoZSBsaXN0IGFuZCBkaWN0IHR5cGVzLiAgUGF0Y2ggYnkKK01pY2hlbGUgT3Jyw7kgYW5kIEJqw7ZybiBMaW5kcXZpc3QuCisKKy4uCisKKy4uIGJwbzogNzAwNQorLi4gZGF0ZTogODIwOQorLi4gbm9uY2U6IE1WT3p5TAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBvdXRwdXQgb2YgTm9uZSB2YWx1ZXMgZm9yIFJhd0NvbmZpZ1BhcnNlci53cml0ZSBhbmQKK0NvbmZpZ1BhcnNlci53cml0ZS4KKworLi4KKworLi4gYnBvOiA4MDgxNjQKKy4uIGRhdGU6IDgyMDgKKy4uIG5vbmNlOiBQNVlPX0IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgc29ja2V0LmNsb3NlIHRvIGF2b2lkIHJlZmVyZW5jZXMgdG8gZ2xvYmFscywgdG8gYXZvaWQgaXNzdWVzIHdoZW4KK3NvY2tldC5jbG9zZSBpcyBjYWxsZWQgZnJvbSBhIF9fZGVsX18gbWV0aG9kLgorCisuLgorCisuLiBicG86IDI5ODYKKy4uIGRhdGU6IDgyMDcKKy4uIG5vbmNlOiBCZUJuX3MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlmZmxpYi5TZXF1ZW5jZU1hdGNoZXIgZ2V0cyBhIG5ldyBwYXJhbWV0ZXIsIGF1dG9qdW5rLCB3aGljaCBjYW4gYmUgc2V0IHRvCitGYWxzZSB0byB0dXJuIG9mZiB0aGUgcHJldmlvdXNseSB1bmRvY3VtZW50ZWQgJ3BvcHVsYXJpdHknIGhldXJpc3RpYy4gUGF0Y2gKK2J5IFRlcnJ5IFJlZWR5IGFuZCBFbGkgQmVuZGVyc2t5CisKKy4uCisKKy4uIGJwbzogODc5NworLi4gZGF0ZTogODIwNgorLi4gbm9uY2U6IElrUXhZQQorLi4gc2VjdGlvbjogTGlicmFyeQorCit1cmxsaWIyIGRvZXMgYSByZXRyeSBmb3IgQmFzaWMgQXV0aGVudGljYXRpb24gZmFpbHVyZSBpbnN0ZWFkIG9mIGZhbGxpbmcKK2ludG8gcmVjdXJzaW9uLgorCisuLgorCisuLiBicG86IDExOTQyMjIKKy4uIGRhdGU6IDgyMDUKKy4uIG5vbmNlOiBVWENKTHEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZW1haWwudXRpbHMucGFyc2VkYXRlIG5vdyByZXR1cm5zIFJGQzI4MjIgY29tcGxpYW50IGZvdXIgY2hhcmFjdGVyIHllYXJzCitldmVuIGlmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIFJGQzgyMiB0d28gY2hhcmFjdGVyIHllYXJzLgorCisuLgorCisuLiBicG86IDg3NTAKKy4uIGRhdGU6IDgyMDQKKy4uIG5vbmNlOiBsZHFPRHQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgTXV0YWJsZVNldCdzIG1ldGhvZHMgdG8gY29ycmVjdGx5IGhhbmRsZSByZWZsZXhpdmUgb3BlcmF0aW9ucywgbmFtZWx5Cit4IC09IHggYW5kIHggXj0geC4KKworLi4KKworLi4gYnBvOiA5MTI5CisuLiBkYXRlOiA4MjAzCisuLiBub25jZTogQVlYQUFmCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3NtdHBkLnB5IGlzIHZ1bG5lcmFibGUgdG8gRG9TIGF0dGFja3MgZGVyaXZpbmcgZnJvbSBtaXNzaW5nIGVycm9yIGhhbmRsaW5nCit3aGVuIGFjY2VwdGluZyBhIG5ldyBjb25uZWN0aW9uLgorCisuLgorCisuLiBicG86IDY1ODc0OQorLi4gZGF0ZTogODIwMgorLi4gbm9uY2U6IFRITDJJXworLi4gc2VjdGlvbjogTGlicmFyeQorCithc3luY29yZSdzIGNvbm5lY3QoKSBtZXRob2Qgbm93IGNvcnJlY3RseSBpbnRlcnByZXRzIHdpbnNvY2sgZXJyb3JzLgorCisuLgorCisuLiBicG86IDk1MDEKKy4uIGRhdGU6IDgyMDEKKy4uIG5vbmNlOiBHLU0tcGMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgbG9nZ2luZyByZWdyZXNzaW9ucyBpbiBjbGVhbnVwIGNvZGUuCisKKy4uCisKKy4uIGJwbzogOTIxNAorLi4gZGF0ZTogODIwMAorLi4gbm9uY2U6IGoxby1abworLi4gc2VjdGlvbjogTGlicmFyeQorCitTZXQgb3BlcmF0aW9ucyBvbiBLZXlzVmlldyBvciBJdGVtc1ZpZXcgaW4gdGhlIGNvbGxlY3Rpb25zIG1vZHVsZSBub3cKK2NvcnJlY3RseSByZXR1cm4gYSBzZXQuICAoUGF0Y2ggYnkgRWxpIEJlbmRlcnNreS4pCisKKy4uCisKKy4uIGJwbzogOTYxNworLi4gZGF0ZTogODE5OQorLi4gbm9uY2U6IGJsSm9MNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitTaWduYWxzIHJlY2VpdmVkIGR1cmluZyBhIGxvdy1sZXZlbCB3cml0ZSBvcGVyYXRpb24gYXJlbid0IGlnbm9yZWQgYnkgdGhlCitidWZmZXJlZCBJTyBsYXllciBhbnltb3JlLgorCisuLgorCisuLiBicG86IDI1MjEKKy4uIGRhdGU6IDgxOTgKKy4uIG5vbmNlOiBpVGw3WlUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXNlIHdlYWtyZWZzIG9uIGZvciBjYWNoaW5nIGluIHRoZSBhYmMgbW9kdWxlLCBzbyB0aGF0IGNsYXNzZXMgYXJlIG5vdCBoZWxkCitvbnRvIGFmdGVyIHRoZXkgYXJlIGRlbGV0ZWQgZWxzZXdoZXJlLgorCisuLgorCisuLiBicG86IDk2MjYKKy4uIGRhdGU6IDgxOTcKKy4uIG5vbmNlOiBWb3diNlgKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGhlIHZpZXcgbWV0aG9kcyBmb3IgY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKSB3ZXJlIHJldHVybmluZyB0aGUgdW5vcmRlcmVkCit2ZXJzaW9ucyBpbmhlcml0ZWQgZnJvbSBkaWN0LiAgVGhvc2UgbWV0aG9kcyBhcmUgbm93IG92ZXJyaWRkZW4gdG8gcHJvdmlkZQorb3JkZXJlZCB2aWV3cy4KKworLi4KKworLi4gYnBvOiA4Njg4CisuLiBkYXRlOiA4MTk2CisuLiBub25jZTogZkZkdFduCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01BTklGRVNUIGZpbGVzIGNyZWF0ZWQgYnkgZGlzdHV0aWxzIG5vdyBpbmNsdWRlIGEgbWFnaWMgY29tbWVudCBpbmRpY2F0aW5nCit0aGV5IGFyZSBnZW5lcmF0ZWQuICBNYW51YWxseSBtYWludGFpbmVkIE1BTklGRVNUcyB3aXRob3V0IHRoaXMgbWFya2VyIHdpbGwKK25vdCBiZSBvdmVyd3JpdHRlbiBvciByZW1vdmVkLgorCisuLgorCisuLiBicG86IDc0NjcKKy4uIGRhdGU6IDgxOTUKKy4uIG5vbmNlOiAyYXE1VmsKKy4uIHNlY3Rpb246IExpYnJhcnkKKword2hlbiByZWFkaW5nIGEgZmlsZSBmcm9tIGEgWklQIGFyY2hpdmUsIGl0cyBDUkMgaXMgY2hlY2tlZCBhbmQgYSBCYWRaaXBmaWxlCitlcnJvciBpcyByYWlzZWQgaWYgaXQgZG9lc24ndCBtYXRjaCAoYXMgdXNlZCB0byBiZSB0aGUgY2FzZSBpbiBQeXRob24gMi41CithbmQgZWFybGllcikuCisKKy4uCisKKy4uIGJwbzogOTU1MAorLi4gZGF0ZTogODE5NAorLi4gbm9uY2U6IGd6MFBTUworLi4gc2VjdGlvbjogTGlicmFyeQorCithIEJ1ZmZlcmVkUmVhZGVyIGNvdWxkIGlzc3VlIGFuIGFkZGl0aW9uYWwgcmVhZCB3aGVuIHRoZSBvcmlnaW5hbCByZWFkCityZXF1ZXN0IGhhZCBiZWVuIHNhdGlzZmllZCwgd2hpY2ggY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5IHdoZW4gdGhlCit1bmRlcmx5aW5nIHJhdyBJTyBjaGFubmVsIHdhcyBlLmcuIGEgc29ja2V0LiAgUmVwb3J0IGFuZCBvcmlnaW5hbCBwYXRjaCBieQorSmFzb24gVi4gTWlsbGVyLgorCisuLgorCisuLiBicG86IDk1NTEKKy4uIGRhdGU6IDgxOTMKKy4uIG5vbmNlOiAycTJWRkoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRG9uJ3QgcmFpc2UgVHlwZUVycm9yIHdoZW4gc2V0dGluZyB0aGUgdmFsdWUgdG8gTm9uZSBmb3IgU2FmZUNvbmZpZ1BhcnNlcgoraW5zdGFuY2VzIGNvbnN0cnVjdGVkIHdpdGggYWxsb3dfbm9fdmFsdWUgPT0gVHJ1ZS4KKworLi4KKworLi4gYnBvOiA2OTE1CisuLiBkYXRlOiA4MTkyCisuLiBub25jZTogTmgyTDYtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VuZGVyIFdpbmRvd3MsIG9zLmxpc3RkaXIoKSBkaWRuJ3QgcmVsZWFzZSB0aGUgR2xvYmFsIEludGVycHJldGVyIExvY2sKK2Fyb3VuZCBhbGwgc3lzdGVtIGNhbGxzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgUnlhbiBLZWxseS4KKworLi4KKworLi4gYnBvOiAzNzU3CisuLiBkYXRlOiA4MTkxCisuLiBub25jZTogRGZ1ZTF0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3RocmVhZC1sb2NhbCBvYmplY3RzIG5vdyBzdXBwb3J0IGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3Rpb24uIFRocmVhZC1sb2NhbAorb2JqZWN0cyBpbnZvbHZlZCBpbiByZWZlcmVuY2UgY3ljbGVzIHdpbGwgYmUgZGVhbGxvY2F0ZWQgdGltZWx5IGJ5IHRoZQorY3ljbGljIEdDLCBldmVuIGlmIHRoZSB1bmRlcmx5aW5nIHRocmVhZCBpcyBzdGlsbCBydW5uaW5nLgorCisuLgorCisuLiBicG86IDYyMzEKKy4uIGRhdGU6IDgxOTAKKy4uIG5vbmNlOiBmdlM2akYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHhtbC5ldHJlZS5FbGVtZW50SW5jbHVkZSB0byBpbmNsdWRlIHRoZSB0YWlsIG9mIHRoZSBjdXJyZW50IG5vZGUuCisKKy4uCisKKy4uIGJwbzogNjg2OQorLi4gZGF0ZTogODE4OQorLi4gbm9uY2U6IFNJMWh5SgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSByZWZjb3VudCBwcm9ibGVtIGluIHRoZSBfY3R5cGVzIGV4dGVuc2lvbi4KKworLi4KKworLi4gYnBvOiA1NTA0CisuLiBkYXRlOiA4MTg4CisuLiBub25jZTogRHl2VktvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2N0eXBlcyBzaG91bGQgbm93IHdvcmsgd2l0aCBzeXN0ZW1zIHdoZXJlIG1tYXAgY2FuJ3QgYmUgUFJPVF9XUklURSBhbmQKK1BST1RfRVhFQy4KKworLi4KKworLi4gYnBvOiA4MjgwCisuLiBkYXRlOiA4MTg3CisuLiBub25jZTogUHJwTVh4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VybGxpYjIncyBSZXF1ZXN0IG1ldGhvZCB3aWxsIHJlbW92ZSBmcmFnZW1lbnRzIGluIHRoZSB1cmwuIFRoaXMgaXMgaG93IGl0CitpcyBzdXBwb3NlZCB0byB3b3JrLCB3Z2V0IGFuZCBjdXJsIGRvIHRoZSBzYW1lLiAgUHJldmlvdXMgYmVoYXZpb3Igd2FzCit3cm9uZy4KKworLi4KKworLi4gYnBvOiAyOTQ0CisuLiBkYXRlOiA4MTg2CisuLiBub25jZTogdXZhNE1HCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FzeW5jb3JlIGRvZXNuJ3QgaGFuZGxlIGNvbm5lY3Rpb24gcmVmdXNlZCBjb3JyZWN0bHkuCisKKy4uCisKKy4uIGJwbzogMzE5NgorLi4gZGF0ZTogODE4NQorLi4gbm9uY2U6IG9Ga25hagorLi4gc2VjdGlvbjogTGlicmFyeQorCitlbWFpbCBoZWFkZXIgZGVjb2RpbmcgaXMgbm93IGZvcmdpdmluZyBpZiBhbiBSRkMyMDQ3IGVuY29kZWQgd29yZCBlbmNvZGVkIGluCitiYXNlNjQgaXMgbGFja2luZyBwYWRkaW5nLgorCisuLgorCisuLiBicG86IDk0NDQKKy4uIGRhdGU6IDgxODQKKy4uIG5vbmNlOiBLZEt4T0IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQXJncGFyc2Ugbm93IHVzZXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgcHJlZml4X2NoYXJzIGFzIHRoZSBvcHRpb24gY2hhcmFjdGVyCitmb3IgdGhlIGFkZGVkICdoL2hlbHAnIG9wdGlvbiBpZiBwcmVmaXhfY2hhcnMgZG9lcyBub3QgY29udGFpbiBhICctJywKK2luc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KKworLi4KKworLi4gYnBvOiA5MzU0CisuLiBkYXRlOiA4MTgzCisuLiBub25jZTogNG1HUnJKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Byb3ZpZGUgZ2V0c29ja29wdCgpIGluIGFzeW5jb3JlJ3MgZmlsZV93cmFwcGVyLgorCisuLgorCisuLiBicG86IDk0MjgKKy4uIGRhdGU6IDgxODIKKy4uIG5vbmNlOiAwcGVhNnkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHJ1bm5pbmcgc2NyaXB0cyB3aXRoIHRoZSBwcm9maWxlL2NQcm9maWxlIG1vZHVsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorCisuLgorCisuLiBicG86IDc3ODEKKy4uIGRhdGU6IDgxODEKKy4uIG5vbmNlOiBxSklNNlMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHJlc3RyaWN0aW5nIHN0YXRzIGJ5IGVudHJ5IGNvdW50cyBpbiB0aGUgcHN0YXRzIGludGVyYWN0aXZlIGJyb3dzZXIuCisKKy4uCisKKy4uIGJwbzogOTIwOQorLi4gZGF0ZTogODE4MAorLi4gbm9uY2U6IHE1aDJhTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitEbyBub3QgY3Jhc2ggaW4gdGhlIHBzdGF0cyBpbnRlcmFjdGl2ZSBicm93c2VyIG9uIGludmFsaWQgcmVndWxhcgorZXhwcmVzc2lvbnMuCisKKy4uCisKKy4uIGJwbzogNzM3MgorLi4gZGF0ZTogODE3OQorLi4gbm9uY2U6IGJqV2tGbQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcHN0YXRzIHJlZ3Jlc3Npb24gd2hlbiBzdHJpcHBpbmcgcGF0aHMgZnJvbSBwcm9maWxlIGRhdGEgZ2VuZXJhdGVkIHdpdGgKK3RoZSBwcm9maWxlIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiA0MTA4CisuLiBkYXRlOiA4MTc4CisuLiBub25jZTogU0dXNHRwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHVybGxpYi5yb2JvdHBhcnNlciwgaWYgdGhlcmUgYXJlIG11bHRpcGxlICdVc2VyLWFnZW50OiAqJyBlbnRyaWVzLAorY29uc2lkZXIgdGhlIGZpcnN0IG9uZS4KKworLi4KKworLi4gYnBvOiA4Mzk3CisuLiBkYXRlOiA4MTc3CisuLiBub25jZTogeE5sMWMwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JhaXNlIGFuIGVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBtaXggaXRlcmF0aW9uIGFuZCByZWd1bGFyIHJlYWRzIG9uIGEKK0JaMkZpbGUgb2JqZWN0LCByYXRoZXIgdGhhbiByZXR1cm5pbmcgaW5jb3JyZWN0IHJlc3VsdHMuCisKKy4uCisKKy4uIGJwbzogNTI5NAorLi4gZGF0ZTogODE3NgorLi4gbm9uY2U6IE9XMXFoZworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIGJlaGF2aW9yIG9mIHBkYidzICJjb250aW51ZSIgY29tbWFuZCB3aGVuIGNhbGxlZCBpbiB0aGUgdG9wLWxldmVsCitkZWJ1Z2dlZCBmcmFtZS4KKworLi4KKworLi4gYnBvOiA1NzI3CisuLiBkYXRlOiA4MTc1CisuLiBub25jZTogc1ltX044CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Jlc3RvcmUgdGhlIGFiaWxpdHkgdG8gdXNlIHJlYWRsaW5lIHdoZW4gY2FsbGluZyBpbnRvIHBkYiBpbiBkb2N0ZXN0cy4KKworLi4KKworLi4gYnBvOiA2NzE5CisuLiBkYXRlOiA4MTc0CisuLiBub25jZTogXzl0NENECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHBkYiwgZG8gbm90IHN0b3Agc29tZXdoZXJlIGluIHRoZSBlbmNvZGluZ3MgbWFjaGluZXJ5IGlmIHRoZSBzb3VyY2UgZmlsZQordG8gYmUgZGVidWdnZWQgaXMgaW4gYSBub24tYnVpbHRpbiBlbmNvZGluZy4KKworLi4KKworLi4gYnBvOiA4MDQ4CisuLiBkYXRlOiA4MTczCisuLiBub25jZTogVU1LRTVTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ByZXZlbnQgZG9jdGVzdHMgZnJvbSBmYWlsaW5nIHdoZW4gc3lzLmRpc3BsYXlob29rIGhhcyBiZWVuIHJlYXNzaWduZWQuCisKKy4uCisKKy4uIGJwbzogODAxNQorLi4gZGF0ZTogODE3MgorLi4gbm9uY2U6IFlOYVA3NQorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiBwZGIsIGRvIG5vdCBjcmFzaCB3aGVuIGFuIGVtcHR5IGxpbmUgaXMgZW50ZXJlZCBhcyBhIGJyZWFrcG9pbnQgY29tbWFuZC4KKworLi4KKworLi4gYnBvOiA5NDQ4CisuLiBkYXRlOiA4MTcxCisuLiBub25jZTogVUQwYmxoCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIGxlYWsgb2YgT1MgcmVzb3VyY2VzIChtdXRleGVzIG9yIHNlbWFwaG9yZXMpIHdoZW4gcmUtaW5pdGlhbGl6aW5nIGEKK2J1ZmZlcmVkIElPIG9iamVjdCBieSBjYWxsaW5nIGl0cyBgYF9faW5pdF9fYGAgbWV0aG9kLgorCisuLgorCisuLiBicG86IDc5MDkKKy4uIGRhdGU6IDgxNzAKKy4uIG5vbmNlOiBLTld0aFYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRG8gbm90IHRvdWNoIHBhdGhzIHdpdGggdGhlIHNwZWNpYWwgcHJlZml4ZXMgYGBcXC5cYGAgb3IgYGBcXD9cYGAgaW4KK250cGF0aC5ub3JtcGF0aCgpLgorCisuLgorCisuLiBicG86IDUxNDYKKy4uIGRhdGU6IDgxNjkKKy4uIG5vbmNlOiBmOU53Q1UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSGFuZGxlIFVJRCBUSFJFQUQgY29tbWFuZCBjb3JyZWN0bHkgaW4gaW1hcGxpYi4KKworLi4KKworLi4gYnBvOiA1MTQ3CisuLiBkYXRlOiA4MTY4CisuLiBub25jZTogQU51c2JGCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0aGUgaGVhZGVyIGdlbmVyYXRlZCBmb3IgY29va2llIGZpbGVzIHdyaXR0ZW4gYnkKK2h0dHAuY29va2llamFyLk1vemlsbGFDb29raWVKYXIuCisKKy4uCisKKy4uIGJwbzogODE5OAorLi4gZGF0ZTogODE2NworLi4gbm9uY2U6IFdyR20yYworLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiBweWRvYywgb3V0cHV0IGFsbCBoZWxwIHRleHQgdG8gdGhlIGNvcnJlY3Qgc3RyZWFtIHdoZW4gc3lzLnN0ZG91dCBpcworcmVhc3NpZ25lZC4KKworLi4KKworLi4gYnBvOiA3Mzk1CisuLiBkYXRlOiA4MTY2CisuLiBub25jZTogRmtaazd2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0cmFjZWJhY2tzIGluIHBzdGF0cyBpbnRlcmFjdGl2ZSBicm93c2VyLgorCisuLgorCisuLiBicG86IDgyMzAKKy4uIGRhdGU6IDgxNjUKKy4uIG5vbmNlOiBwQmt6TTgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IExpYi90ZXN0L3NvcnRwZXJmLnB5LgorCisuLgorCisuLiBicG86IDE3MTMKKy4uIGRhdGU6IDgxNjQKKy4uIG5vbmNlOiBma25rSS0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG9zLnBhdGguaXNtb3VudCgpLCB3aGljaCByZXR1cm5lZCB0cnVlIGZvciBzeW1ib2xpYyBsaW5rcyBhY3Jvc3MKK2RldmljZXMuCisKKy4uCisKKy4uIGJwbzogODgyNgorLi4gZGF0ZTogODE2MworLi4gbm9uY2U6IFBjUTlOQQorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcm9wZXJseSBsb2FkIG9sZC1zdHlsZSAiZXhwaXJlcyIgYXR0cmlidXRlIGluIGh0dHAuY29va2llcy4KKworLi4KKworLi4gYnBvOiAxNjkwMTAzCisuLiBkYXRlOiA4MTYyCisuLiBub25jZTogNXRUNDdfCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBpbml0aWFsIG5hbWVzcGFjZSBmb3IgY29kZSBydW4gd2l0aCB0cmFjZS5tYWluKCkuCisKKy4uCisKKy4uIGJwbzogODQ3MQorLi4gZGF0ZTogODE2MQorLi4gbm9uY2U6IFJxTjZmYworLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiBkb2N0ZXN0LCBwcm9wZXJseSByZXNldCB0aGUgb3V0cHV0IHN0cmVhbSB0byBhbiBlbXB0eSBzdHJpbmcgd2hlbiBVbmljb2RlCit3YXMgcHJldmlvdXNseSBvdXRwdXQuCisKKy4uCisKKy4uIGJwbzogODYyMAorLi4gZGF0ZTogODE2MAorLi4gbm9uY2U6IHFRUjdFMQorLi4gc2VjdGlvbjogTGlicmFyeQorCit3aGVuIGEgQ21kIGlzIGZlZCBpbnB1dCB0aGF0IHJlYWNoZXMgRU9GIHdpdGhvdXQgYSBmaW5hbCBuZXdsaW5lLCBpdCBubworbG9uZ2VyIHRydW5jYXRlcyB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgdGhlIGxhc3QgY29tbWFuZCBsaW5lLgorCisuLgorCisuLiBicG86IDYyMTMKKy4uIGRhdGU6IDgxNTkKKy4uIG5vbmNlOiBveUF0WjAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW1wbGVtZW50IGdldHN0YXRlKCkgYW5kIHNldHN0YXRlKCkgbWV0aG9kcyBvZiB1dGYtOC1zaWcgYW5kIHV0Zi0xNgoraW5jcmVtZW50YWwgZW5jb2RlcnMuCisKKy4uCisKKy4uIGJwbzogNzExMworLi4gZGF0ZTogODE1OAorLi4gbm9uY2U6IHZPLV95OAorLi4gc2VjdGlvbjogTGlicmFyeQorCitTcGVlZCB1cCBsb2FkaW5nIGluIENvbmZpZ1BhcnNlci4gUGF0Y2ggYnkgxYF1a2FzeiBMYW5nYS4KKworLi4KKworLi4gYnBvOiAzNzA0CisuLiBkYXRlOiA4MTU3CisuLiBub25jZTogVWJ1VW4zCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Nvb2tpZWxpYiB3YXMgbm90IHByb3Blcmx5IGhhbmRsaW5nIFVSTHMgd2l0aCBhIC8gaW4gdGhlIHBhcmFtZXRlcnMuCisKKy4uCisKKy4uIGJwbzogOTAzMgorLi4gZGF0ZTogODE1NgorLi4gbm9uY2U6IHpYMzl0aAorLi4gc2VjdGlvbjogTGlicmFyeQorCitYTUwtUlBDIGNsaWVudCByZXRyaWVzIHRoZSByZXF1ZXN0IG9uIEVQSVBFIGVycm9yLiBUaGUgRVBJUEUgZXJyb3Igb2NjdXJzCit3aGVuIHRoZSBzZXJ2ZXIgY2xvc2VzIHRoZSBzb2NrZXQgYW5kIHRoZSBjbGllbnQgc2VuZHMgYSBiaWcgWE1MLVJQQworcmVxdWVzdC4KKworLi4KKworLi4gYnBvOiA1NTQyCisuLiBkYXRlOiA4MTU1CisuLiBub25jZTogdjV2bzFvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbW92ZSBzcGVjaWFsIGxvZ2ljIHRoYXQgY2xvc2VzIEhUVFBDb25uZWN0aW9uIHNvY2tldCBvbiBFUElQRS4KKworLi4KKworLi4gYnBvOiA0NjI5CisuLiBkYXRlOiA4MTU0CisuLiBub25jZTogd2FyVWNmCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2dldG9wdCByYWlzZXMgYW4gZXJyb3IgaWYgYW4gYXJndW1lbnQgZW5kcyB3aXRoID0gd2hlcmVhcyBnZXRvcHQgZG9lc24ndAorZXhjZXB0IGEgdmFsdWUgKGVnLiAtLWhlbHA9IGlzIHJlamVjdGVkIGlmIGdldG9wdCB1c2VzIFsnaGVscD0nXSBsb25nCitvcHRpb25zKS4KKworLi4KKworLi4gYnBvOiA3ODk1CisuLiBkYXRlOiA4MTUzCisuLiBub25jZTogY2l0QjRHCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3BsYXRmb3JtLm1hY192ZXIoKSBubyBsb25nZXIgY3Jhc2hlcyBhZnRlciBjYWxsaW5nIG9zLmZvcmsoKQorCisuLgorCisuLiBicG86IDUzOTUKKy4uIGRhdGU6IDgxNTIKKy4uIG5vbmNlOiBfQWFaaWgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYXJyYXkuZnJvbWZpbGUoKSB3b3VsZCByYWlzZSBhIHNwdXJpb3VzIEVPRkVycm9yIHdoZW4gYW4gSS9PIGVycm9yIG9jY3VycmVkLgorTm93IGFuIElPRXJyb3IgaXMgcmFpc2VkIGluc3RlYWQuICBQYXRjaCBieSBjaHVjayAoSmFuIEhvc2FuZykuCisKKy4uCisKKy4uIGJwbzogNzY0NgorLi4gZGF0ZTogODE1MQorLi4gbm9uY2U6IGFmNkxHOAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZm5tYXRjaCBwYXR0ZXJuIGNhY2hlIG5vIGxvbmdlciBncm93cyB3aXRob3V0IGJvdW5kLgorCisuLgorCisuLiBicG86IDkxMzYKKy4uIGRhdGU6IDgxNTAKKy4uIG5vbmNlOiBHRlFnMGMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ICdkaWN0aW9uYXJ5IGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uJyBSdW50aW1lRXJyb3IgcHJvZHVjZWQgd2hlbgorcHJvZmlsaW5nIHRoZSBkZWNpbWFsIG1vZHVsZS4gIFRoaXMgd2FzIGR1ZSB0byBhIGRhbmdlcm91cyBpdGVyYXRpb24gb3ZlcgorJ2xvY2FscygpJyBpbiBDb250ZXh0Ll9faW5pdF9fLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDgxNDkKKy4uIG5vbmNlOiBhWDFfZlQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGV4dHJlbWUgc3BlZWQgaXNzdWUgaW4gRGVjaW1hbC5wb3cgd2hlbiB0aGUgYmFzZSBpcyBhbiBleGFjdCBwb3dlciBvZiAxMAorYW5kIHRoZSBleHBvbmVudCBpcyB0aW55IChmb3IgZXhhbXBsZSwgRGVjaW1hbCgxMCkgKioKK0RlY2ltYWwoJzFlLTk5OTk5OTk5OScpKS4KKworLi4KKworLi4gYnBvOiA5MTYxCisuLiBkYXRlOiA4MTQ4CisuLiBub25jZTogOEF6X2FJCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCByZWdyZXNzaW9uIGluIG9wdHBhcnNlJ3MgYWNjZXB0YW5jZSBvZiB1bmljb2RlIHN0cmluZ3MgaW4gYWRkX29wdGlvbgorY2FsbHMuCisKKy4uCisKKy4uIGJwbzogOTEzMAorLi4gZGF0ZTogODE0NworLi4gbm9uY2U6IGNCX3otRAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdmFsaWRhdGlvbiBvZiByZWxhdGl2ZSBpbXBvcnRzIGluIHBhcnNlciBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogOTEyOAorLi4gZGF0ZTogODE0NgorLi4gbm9uY2U6IDJPS0JWaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdmFsaWRhdGlvbiBvZiBjbGFzcyBkZWNvcmF0b3JzIGluIHBhcnNlciBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogOTE2NAorLi4gZGF0ZTogODE0NQorLi4gbm9uY2U6IFNLNUNPVgorLi4gc2VjdGlvbjogTGlicmFyeQorCitFbnN1cmUgc3lzY29uZmlnIGhhbmRsZXMgZHVwYmxpY2UgYXJjaHMgd2hpbGUgYnVpbGRpbmcgb24gT1NYCisKKy4uCisKKy4uIGJwbzogOTMxNQorLi4gZGF0ZTogODE0NAorLi4gbm9uY2U6IGNaa1R2UworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggZm9yIHRoZSB0cmFjZSBtb2R1bGUgdG8gcmVjb3JkIGNvcnJlY3QgY2xhc3MgbmFtZSBmb3IgdHJhY2luZyBtZXRob2RzLgorCisuLgorCisuLiBicG86IDkwNTQKKy4uIGRhdGU6IDgxNDMKKy4uIG5vbmNlOiBVa0EtT1IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgY3Jhc2ggb2NjdXJyaW5nIHdoZW4gdXNpbmcgdGhlIHB5ZXhwYXQgbW9kdWxlIHdpdGggZXhwYXQgdmVyc2lvbgorMi4wLjEuCisKKy4uCisKKy4uIGJwbzogMTAwMDMKKy4uIGRhdGU6IDgxNDIKKy4uIG5vbmNlOiBBemFPZGQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWxsb3cgaGFuZGxpbmcgb2YgU0lHQlJFQUsgb24gV2luZG93cy4gRml4ZXMgYSByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkKK2lzc3VlICM5MzI0LgorCisuLgorCisuLiBicG86IDg3MzQKKy4uIGRhdGU6IDgxNDEKKy4uIG5vbmNlOiBmMUN0RmkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQXZvaWQgY3Jhc2ggaW4gbXN2Y3J0LmdldF9vc2ZoYW5kbGUoKSB3aGVuIGFuIGludmFsaWQgZmlsZSBkZXNjcmlwdG9yIGlzCitwcm92aWRlZC4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgorCisuLgorCisuLiBicG86IDc3MzYKKy4uIGRhdGU6IDgxNDAKKy4uIG5vbmNlOiA3bjBBUzEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVsZWFzZSB0aGUgR0lMIGFyb3VuZCBjYWxscyB0byBvcGVuZGlyKCkgYW5kIGNsb3NlZGlyKCkgaW4gdGhlIHBvc2l4Cittb2R1bGUuICBQYXRjaCBieSBNYXJjaW4gQmFjaHJ5LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDgxMzkKKy4uIG5vbmNlOiBaNXd5elkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQXMgYSByZXN1bHQgb2YgaXNzdWUgIzI1MjEsIHRoZSBfd2Vha3JlZiBtb2R1bGUgaXMgbm93IGNvbXBpbGVkIGludG8gdGhlCitpbnRlcnByZXRlciBieSBkZWZhdWx0LgorCisuLgorCisuLiBicG86IDkzMjQKKy4uIGRhdGU6IDgxMzgKKy4uIG5vbmNlOiBjX204YWYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHBhcmFtZXRlciB2YWxpZGF0aW9uIHRvIHNpZ25hbC5zaWduYWwgb24gV2luZG93cyBpbiBvcmRlciB0byBwcmV2ZW50CitjcmFzaGVzLgorCisuLgorCisuLiBicG86IDk1MjYKKy4uIGRhdGU6IDgxMzcKKy4uIG5vbmNlOiA4YU8xODkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlIHNvbWUgb3V0ZGF0ZWQgKGludCkgY2FzdHMgdGhhdCB3ZXJlIHByZXZlbnRpbmcgdGhlIGFycmF5IG1vZHVsZSBmcm9tCit3b3JraW5nIGNvcnJlY3RseSB3aXRoIGFycmF5cyBvZiBtb3JlIHRoYW4gMioqMzEgZWxlbWVudHMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODEzNgorLi4gbm9uY2U6IHlmYzN6UgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggbWVtb3J5IGxlYWsgaW4gc3NsLl9zc2wuX3Rlc3RfZGVjb2RlX2NlcnQuCisKKy4uCisKKy4uIGJwbzogODA2NQorLi4gZGF0ZTogODEzNQorLi4gbm9uY2U6IGM1d0JIZQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggbWVtb3J5IGxlYWsgaW4gcmVhZGxpbmUgbW9kdWxlIChmcm9tIGZhaWx1cmUgdG8gZnJlZSB0aGUgcmVzdWx0IG9mCitoaXN0b3J5X2dldF9oaXN0b3J5X3N0YXRlKCkpLgorCisuLgorCisuLiBicG86IDk0NTAKKy4uIGRhdGU6IDgxMzQKKy4uIG5vbmNlOiAxNml3TG4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG1lbW9yeSBsZWFrIGluIHJlYWRsaW5lLnJlcGxhY2VfaGlzdG9yeV9pdGVtIGFuZAorcmVhZGxpbmUucmVtb3ZlX2hpc3RvcnlfaXRlbSBmb3IgcmVhZGxpbmUgdmVyc2lvbiA+PSA1LjAuCisKKy4uCisKKy4uIGJwbzogODEwNQorLi4gZGF0ZTogODEzMworLi4gbm9uY2U6IEdNNUU3dgorLi4gc2VjdGlvbjogTGlicmFyeQorCitWYWxpZGF0ZSBmaWxlIGRlc2NyaXB0b3IgcGFzc2VkIHRvIG1tYXAubW1hcCBvbiBXaW5kb3dzLgorCisuLgorCisuLiBicG86IDEwMTk4ODIKKy4uIGRhdGU6IDgxMzIKKy4uIG5vbmNlOiBWblFfMkoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IEluZGV4RXJyb3Igd2hlbiBsb2FkaW5nIGNlcnRhaW4gaG90c2hvdCBzdGF0cy4KKworLi4KKworLi4gYnBvOiA5NDIyCisuLiBkYXRlOiA4MTMxCisuLiBub25jZTogTVd4dVpqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBtZW1vcnkgbGVhayB3aGVuIHJlLWluaXRpYWxpemluZyBhIHN0cnVjdC5TdHJ1Y3Qgb2JqZWN0LgorCisuLgorCisuLiBicG86IDc5MDAKKy4uIGRhdGU6IDgxMzAKKy4uIG5vbmNlOiBzOG12TnoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGdldGdyb3VwcygyKSBzeXN0ZW0gY2FsbCBvbiBNYWNPU1ggYmVoYXZlcyByYXRoZXIgb2RkbHkgY29tcGFyZWQgdG8KK290aGVyIHVuaXggc3lzdGVtcy4gSW4gcGFydGljdWxhciwgb3MuZ2V0Z3JvdXBzKCkgZG9lcyBub3QgcmVmbGVjdCBhbnkKK2NoYW5nZXMgbWFkZSB1c2luZyBvcy5zZXRncm91cHMoKSBidXQgYmFzaWNhbGx5IGFsd2F5cyByZXR1cm5zIHRoZSBzYW1lCitpbmZvcm1hdGlvbiBhcyB0aGUgaWQgY29tbWFuZC4KKworb3MuZ2V0Z3JvdXBzKCkgY2FuIG5vdyByZXR1cm4gbW9yZSB0aGFuIDE2IGdyb3VwcyBvbiBNYWNPU1guCisKKy4uCisKKy4uIGJwbzogOTI3NworLi4gZGF0ZTogODEyOQorLi4gbm9uY2U6IHlSbk8zWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYnVnIGluIHN0cnVjdC5wYWNrIGZvciBib29scyBpbiBzdGFuZGFyZCBtb2RlIChlLmcuLCBzdHJ1Y3QucGFjaygnPj8nKSk6CitpZiBjb252ZXJzaW9uIHRvIGJvb2wgcmFpc2VkIGFuIGV4Y2VwdGlvbiB0aGVuIHRoYXQgZXhjZXB0aW9uIHdhc24ndAorcHJvcGVybHkgcHJvcGFnYXRlZCBvbiBtYWNoaW5lcyB3aGVyZSBjaGFyIGlzIHVuc2lnbmVkLgorCisuLgorCisuLiBicG86IDc1NjcKKy4uIGRhdGU6IDgxMjgKKy4uIG5vbmNlOiBodWpUQnUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRG9uJ3QgY2FsbCBgc2V0dXB0ZXJtJyB0d2ljZS4KKworLi4KKworLi4gYnBvOiA3Mjg3CisuLiBkYXRlOiA4MTI3CisuLiBub25jZTogNkc1MDNRCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitEZW1vL2ltcHV0aWwva25lZS5weSB3YXMgcmVtb3ZlZC4KKworLi4KKworLi4gYnBvOiA5MTg4CisuLiBkYXRlOiA4MTI2CisuLiBub25jZTogWEljSWpWCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitUaGUgZ2RiIGV4dGVuc2lvbiBub3cgaGFuZGxlcyBjb3JyZWN0bHkgbmFycm93IChVQ1MyKSBhcyB3ZWxsIGFzIHdpZGUgKFVDUzQpCit1bmljb2RlIGJ1aWxkcyBmb3IgYm90aCB0aGUgaG9zdCBpbnRlcnByZXRlciAoZW1iZWRkZWQgaW5zaWRlIGdkYikgYW5kIHRoZQoraW50ZXJwcmV0ZXIgdW5kZXIgdGVzdC4KKworLi4KKworLi4gYnBvOiA4ODUyCisuLiBkYXRlOiA4MTI1CisuLiBub25jZTogV0Q5LXI1CisuLiBzZWN0aW9uOiBCdWlsZAorCitBbGxvdyB0aGUgc29ja2V0IG1vZHVsZSB0byBidWlsZCBvbiBPcGVuU29sYXJpcy4KKworLi4KKworLi4gYnBvOiAxMDA1NAorLi4gZGF0ZTogODEyNAorLi4gbm9uY2U6IFBpNUlKbgorLi4gc2VjdGlvbjogQnVpbGQKKworU29tZSBwbGF0Zm9ybXMgcHJvdmlkZSB1aW50cHRyX3QgaW4gaW50dHlwZXMuaC4gIFBhdGNoIGJ5IEFraXJhIEtpdGFkYS4KKworLi4KKworLi4gYnBvOiAxMDA1NQorLi4gZGF0ZTogODEyMworLi4gbm9uY2U6IHhmVFBabgorLi4gc2VjdGlvbjogQnVpbGQKKworTWFrZSBqc29uIEM4OS1jb21wbGlhbnQgaW4gVUNTNCBtb2RlLgorCisuLgorCisuLiBicG86IDE2MzM4NjMKKy4uIGRhdGU6IDgxMjIKKy4uIG5vbmNlOiAwOE84T2cKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0Rvbid0IGlnbm9yZSAkQ0MgdW5kZXIgQUlYLgorCisuLgorCisuLiBicG86IDk4MTAKKy4uIGRhdGU6IDgxMjEKKy4uIG5vbmNlOiBKQUNUV0MKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0NvbXBpbGUgYnppcDIgc291cmNlIGZpbGVzIGluIHB5dGhvbidzIHByb2plY3QgZmlsZSBkaXJlY3RseS4gSXQgdXNlZCB0byBiZQorYnVpbHQgd2l0aCBiemlwMidzIG1ha2VmaWxlLgorCisuLgorCisuLiBicG86IDk0MTM0NgorLi4gZGF0ZTogODEyMAorLi4gbm9uY2U6IDRhRTIxVgorLi4gc2VjdGlvbjogQnVpbGQKKworSW1wcm92ZSB0aGUgYnVpbGQgcHJvY2VzcyB1bmRlciBBSVggYW5kIGFsbG93IFB5dGhvbiB0byBiZSBidWlsdCBhcyBhIHNoYXJlZAorbGlicmFyeS4gIFBhdGNoIGJ5IFPDqWJhc3RpZW4gU2FibMOpLgorCisuLgorCisuLiBicG86IDQwMjYKKy4uIGRhdGU6IDgxMTkKKy4uIG5vbmNlOiAyS3pfdUwKKy4uIHNlY3Rpb246IEJ1aWxkCisKK01ha2UgdGhlIGZjbnRsIGV4dGVuc2lvbiBidWlsZCB1bmRlciBBSVguICBQYXRjaCBieSBTw6liYXN0aWVuIFNhYmzDqS4KKworLi4KKworLi4gYnBvOiAzMTAxCisuLiBkYXRlOiA4MTE4CisuLiBub25jZTogenEzcDBzCisuLiBzZWN0aW9uOiBCdWlsZAorCitIZWxwZXIgZnVuY3Rpb25zIF9hZGRfb25lX3RvX2luZGV4X0MoKSBhbmQgX2FkZF9vbmVfdG9faW5kZXhfRigpIGJlY29tZQorX1B5X2FkZF9vbmVfdG9faW5kZXhfQygpIGFuZCBfUHlfYWRkX29uZV90b19pbmRleF9GKCksIHJlc3BlY3RpdmVseS4KKworLi4KKworLi4gYnBvOiA5NzAwCisuLiBkYXRlOiA4MTE3CisuLiBub25jZTogdEM0Y29mCisuLiBzZWN0aW9uOiBCdWlsZAorCitkZWZpbmUgSEFWRV9CUk9LRU5fUE9TSVhfU0VNQVBIT1JFUyB1bmRlciBBSVggNi54LiAgUGF0Y2ggYnkgU8OpYmFzdGllbgorU2FibMOpLgorCisuLgorCisuLiBicG86IDkyODAKKy4uIGRhdGU6IDgxMTYKKy4uIG5vbmNlOiAyUElTRkYKKy4uIHNlY3Rpb246IEJ1aWxkCisKK01ha2Ugc2hhcmVkaW5zdGFsbCBkZXBlbmQgb24gc2hhcmVkbW9kcy4KKworLi4KKworLi4gYnBvOiA5Mjc1CisuLiBkYXRlOiA4MTE1CisuLiBub25jZTogRGNGaW4tCisuLiBzZWN0aW9uOiBCdWlsZAorCitUaGUgT1NYIGluc3RhbGxlciBvbmNlIGFnYWluIGluc3RhbGxzIGxpbmtzIHRvIGJpbmFyaWVzIGluCitgYC91c3IvbG9jYWwvYmluYGAuCisKKy4uCisKKy4uIGJwbzogOTM5MgorLi4gZGF0ZTogODExNAorLi4gbm9uY2U6IGFZN3c2dworLi4gc2VjdGlvbjogQnVpbGQKKworQSBmcmFtZXdvcmsgYnVpbGQgb24gT1NYIHdpbGwgb25jZSBhZ2FpbiB1c2UgYSB2ZXJzaW9uZWQgbmFtZSBvZiB0aGUKK2BgMnRvM2BgIHRvb2wsIHRoYXQgaXMgeW91IGNhbiB1c2UgYGAydG8zLTIuN2BgIHRvIHNlbGVjdCB0aGUgUHl0aG9uIDIuNworZWRpdGlvbiBvZiAydG8zLgorCisuLgorCisuLiBicG86IDk3MDEKKy4uIGRhdGU6IDgxMTMKKy4uIG5vbmNlOiBoZ2FFVTgKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1RoZSBNYWNPU1ggaW5zdGFsbGVyIGNhbiBwYXRjaCB0aGUgc2hlbGwgcHJvZmlsZSB0byBlbnN1cmUgdGhhdCB0aGUgImJpbiIKK2RpcmVjdG9yeSBpbnNpZGUgdGhlIGZyYW1ld29yayBpcyBvbiB0aGUgc2hlbGwncyBzZWFyY2ggcGF0aC4gVGhpcyBmZWF0dXJlCitub3cgYWxzbyBzdXBwb3J0cyB0aGUgWlNIIHNoZWxsLgorCisuLgorCisuLiBicG86IDc0NzMKKy4uIGRhdGU6IDgxMTIKKy4uIG5vbmNlOiBOdVMxOTYKKy4uIHNlY3Rpb246IEJ1aWxkCisKK2F2b2lkIGxpbmsgZXJyb3JzIHdoZW4gYnVpbGRpbmcgYSBmcmFtZXdvcmsgd2l0aCBhIGRpZmZlcmVudCBzZXQgb2YKK2FyY2hpdGVjdHVyZXMgdGhhbiB0aGUgb25lIHRoYXQgaXMgY3VycmVudGx5IGluc3RhbGxlZC4KKworLi4KKworLi4gYnBvOiA5OTc4CisuLiBkYXRlOiA4MTExCisuLiBub25jZTogUGdOektXCisuLiBzZWN0aW9uOiBUZXN0cworCitXYWl0IHVudGlsIHN1YnByb2Nlc3MgY29tcGxldGVzIGluaXRpYWxpemF0aW9uLiAoV2luMzJLaWxsVGVzdHMgaW4gdGVzdF9vcykKKworLi4KKworLi4gYnBvOiA5ODk0CisuLiBkYXRlOiA4MTEwCisuLiBub25jZTogOWN3NjlfCisuLiBzZWN0aW9uOiBUZXN0cworCitEbyBub3QgaGFyZGNvZGUgRU5PRU5UIGluIHRlc3Rfc3VicHJvY2Vzcy4KKworLi4KKworLi4gYnBvOiA5MzIzCisuLiBkYXRlOiA4MTA5CisuLiBub25jZTogcUFKOC1pCisuLiBzZWN0aW9uOiBUZXN0cworCitNYWtlIHRlc3QucmVncnRlc3QuX19maWxlX18gYWJzb2x1dGUsIHRoaXMgd2FzIG5vdCBhbHdheXMgdGhlIGNhc2Ugd2hlbgorcnVubmluZyBwcm9maWxlIG9yIHRyYWNlLCBmb3IgZXhhbXBsZS4KKworLi4KKworLi4gYnBvOiA5MzE1CisuLiBkYXRlOiA4MTA4CisuLiBub25jZTogZjFpMHFxCisuLiBzZWN0aW9uOiBUZXN0cworCitBZGRlZCB0ZXN0cyBmb3IgdGhlIHRyYWNlIG1vZHVsZS4gIFBhdGNoIGJ5IEVsaSBCZW5kZXJza3kuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODEwNworLi4gbm9uY2U6IEFWd05uOQorLi4gc2VjdGlvbjogVGVzdHMKKworU3RyZW5ndGhlbiB0ZXN0X3VuaWNvZGUgd2l0aCBleHBsaWNpdCB0eXBlIGNoZWNraW5nIGZvciBhc3NlcnRFcXVhbCB0ZXN0cy4KKworLi4KKworLi4gYnBvOiA4ODU3CisuLiBkYXRlOiA4MTA2CisuLiBub25jZTogSHk2UW1mCisuLiBzZWN0aW9uOiBUZXN0cworCitQcm92aWRlIGEgdGVzdCBjYXNlIGZvciBzb2NrZXQuZ2V0YWRkcmluZm8uCisKKy4uCisKKy4uIGJwbzogNzU2NAorLi4gZGF0ZTogODEwNQorLi4gbm9uY2U6IHBzLXBOMworLi4gc2VjdGlvbjogVGVzdHMKKworU2tpcCB0ZXN0X2lvY3RsIGlmIGFub3RoZXIgcHJvY2VzcyBpcyBhdHRhY2hlZCB0byAvZGV2L3R0eS4KKworLi4KKworLi4gYnBvOiA4NDMzCisuLiBkYXRlOiA4MTA0CisuLiBub25jZToga011Qjd1CisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggdGVzdF9jdXJzZXMgZmFpbHVyZSB3aXRoIG5ld2VyIHZlcnNpb25zIG9mIG5jdXJzZXMuCisKKy4uCisKKy4uIGJwbzogOTQ5NgorLi4gZGF0ZTogODEwMworLi4gbm9uY2U6IFVESUdSMAorLi4gc2VjdGlvbjogVGVzdHMKKworUHJvdmlkZSBhIHRlc3Qgc3VpdGUgZm9yIHRoZSBybGNvbXBsZXRlciBtb2R1bGUuICBQYXRjaCBieSBNaWNoZWxlIE9ycsO5LgorCisuLgorCisuLiBicG86IDg2MDUKKy4uIGRhdGU6IDgxMDIKKy4uIG5vbmNlOiBqeElwNlkKKy4uIHNlY3Rpb246IFRlc3RzCisKK1NraXAgdGVzdF9nZGIgaWYgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggb3B0aW1pemF0aW9ucy4KKworLi4KKworLi4gYnBvOiA5NTY4CisuLiBkYXRlOiA4MTAxCisuLiBub25jZTogT29KWUU1CisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggdGVzdF91cmxsaWIyX2xvY2FsbmV0IG9uIE9TIFggMTAuMy4KKworLi4KKworLi4gYnBvOiA5ODE3CisuLiBkYXRlOiA4MTAwCisuLiBub25jZTogc2szUTNUCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0FkZCBleHBhdCBDT1BZSU5HIGZpbGU7IGFkZCBleHBhdCwgbGliZmZpIGFuZCBleHBhdCBsaWNlbnNlcyB0bworRG9jL2xpY2Vuc2UucnN0LgorCisuLgorCisuLiBicG86IDk1MjQKKy4uIGRhdGU6IDgwOTkKKy4uIG5vbmNlOiBFczI1eHcKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworRG9jdW1lbnQgdGhhdCB0d28gQ1RSTCogc2lnbmFscyBhcmUgbWVhbnQgZm9yIHVzZSBvbmx5IHdpdGggb3Mua2lsbC4KKworLi4KKworLi4gYnBvOiA5MjU1CisuLiBkYXRlOiA4MDk4CisuLiBub25jZTogdHA4MVVTCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0RvY3VtZW50IHRoYXQgdGhlICd0ZXN0JyBwYWNrYWdlIGlzIGZvciBpbnRlcm5hbCBQeXRob24gdXNlIG9ubHkuCisKKy4uCisKKy4uIGJwbzogNzgyOQorLi4gZGF0ZTogODA5NworLi4gbm9uY2U6IG8xQkxGMAorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitEb2N1bWVudCBpbiBkaXMgdGhhdCBieXRlY29kZSBpcyBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjcuMi5yc3QgYi9NaXNjL05FV1MuZC8yLjcuMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ2YWZiMQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNy4yLnJzdApAQCAtMCwwICsxLDE2IEBACisuLiBicG86IDEyMDA5CisuLiBkYXRlOiA4NDYzCisuLiBub25jZTogblFQZzhZCisuLiByZWxlYXNlIGRhdGU6IDIwMTEtMDYtMTEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgcmVncmVzc2lvbiBpbiBuZXRyYyBmaWxlIGNvbW1lbnQgaGFuZGxpbmcuCisKKy4uCisKKy4uIGJwbzogMTIyMQorLi4gZGF0ZTogODQ2MgorLi4gbm9uY2U6IHZGSkI2dAorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIHB5ZXhwYXQuX192ZXJzaW9uX18gZXF1YWwgdG8gdGhlIFB5dGhvbiB2ZXJzaW9uLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvMi43LjJyYzEucnN0IGIvTWlzYy9ORVdTLmQvMi43LjJyYzEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNTViZTUKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC8yLjcuMnJjMS5yc3QKQEAgLTAsMCArMSwxNjYxIEBACisuLiBicG86IDk2NzAKKy4uIGRhdGU6IDg0NjEKKy4uIG5vbmNlOiBENHA1MFcKKy4uIHJlbGVhc2UgZGF0ZTogMjAxMS0wNS0yOQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworSW5jcmVhc2UgdGhlIGRlZmF1bHQgc3RhY2sgc2l6ZSBmb3Igc2Vjb25kYXJ5IHRocmVhZHMgb24gTWFjIE9TIFggYW5kCitGcmVlQlNEIHRvIHJlZHVjZSB0aGUgY2hhbmNlcyBvZiBhIGNyYXNoIGluc3RlYWQgb2YgYSAibWF4aW11bSByZWN1cnNpb24KK2RlcHRoIiBSdW50aW1lRXJyb3IgZXhjZXB0aW9uLiAocGF0Y2ggYnkgUm9uYWxkIE91c3NvcmVuKQorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDg0NjAKKy4uIG5vbmNlOiB3MTIyaDkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0NvcnJlY3QgbG9va3VwIG9mIF9fZGlyX18gb24gb2JqZWN0cy4gVGhpcyBhbGxvd3Mgb2xkLXN0eWxlIGNsYXNzZXMgdG8gaGF2ZQorX19kaXJfXy4gSXQgYWxzbyBjYXVzZXMgZXJyb3JzIGJlc2lkZXMgQXR0cmlidXRlRXJyb3IgZm91bmQgb24gbG9va3VwIHRvIGJlCitwcm9wYWdhdGVkLgorCisuLgorCisuLiBicG86IDExOTUKKy4uIGRhdGU6IDg0NTkKKy4uIG5vbmNlOiByVXZsZWMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBpbnB1dCgpIGlmIGl0IGlzIGludGVycnVwdGVkIGJ5IENUUkwrZCBhbmQgdGhlbiBDVFJMK2MsIGNsZWFyIHRoZQorZW5kLW9mLWZpbGUgaW5kaWNhdG9yIGFmdGVyIENUUkwrZC4KKworLi4KKworLi4gYnBvOiA4NjUxCisuLiBkYXRlOiA4NDU4CisuLiBub25jZTogS1QwVld5CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQeUFyZ19QYXJzZSooKSBmdW5jdGlvbnMgcmFpc2UgYW4gT3ZlcmZsb3dFcnJvciBpZiB0aGUgZmlsZSBkb2Vzbid0IGhhdmUKK1BZX1NTSVpFX1RfQ0xFQU4gZGVmaW5lIGFuZCB0aGUgc2l6ZSBkb2Vzbid0IGZpdCBpbiBhbiBpbnQgKGxlbmd0aCBiaWdnZXIKK3RoYW4gMl4zMS0xIGJ5dGVzKS4KKworLi4KKworLi4gYnBvOiA4NjUxCisuLiBkYXRlOiA4NDU3CisuLiBub25jZTogZC1LVjljCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggInojIiBmb3JtYXQgb2YgUHlBcmdfUGFyc2UqKCkgZnVuY3Rpb246IHRoZSBzaXplIHdhcyBub3Qgd3JpdHRlbiBpZgorUFlfU1NJWkVfVF9DTEVBTiBpcyBkZWZpbmVkLgorCisuLgorCisuLiBicG86IDk3NTYKKy4uIGRhdGU6IDg0NTYKKy4uIG5vbmNlOiBMOTYyWE4KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1doZW4gY2FsbGluZyBhIG1ldGhvZCBkZXNjcmlwdG9yIG9yIGEgc2xvdCB3cmFwcGVyIGRlc2NyaXB0b3IsIHRoZSBjaGVjayBvZgordGhlIG9iamVjdCB0eXBlIGRvZXNuJ3QgcmVhZCB0aGUgX19jbGFzc19fIGF0dHJpYnV0ZSBhbnltb3JlLiBGaXggYSBjcmFzaCBpZgorYSBjbGFzcyBvdmVycmlkZSBpdHMgX19jbGFzc19fIGF0dHJpYnV0ZSAoZS5nLiBhIHByb3h5IG9mIHRoZSBzdHIgdHlwZSkuCitQYXRjaCB3cml0dGVuIGJ5IEFuZHJlYXMgU3TDvGhyay4KKworLi4KKworLi4gYnBvOiAxMDUxNworLi4gZGF0ZTogODQ1NQorLi4gbm9uY2U6IGVIUmdQZQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQWZ0ZXIgZm9yaygpLCByZWluaXRpYWxpemUgdGhlIFRMUyB1c2VkIGJ5IHRoZSBQeUdJTFN0YXRlXyogQVBJcywgdG8gYXZvaWQgYQorY3Jhc2ggd2l0aCB0aGUgcHRocmVhZCBpbXBsZW1lbnRhdGlvbiBpbiBSSEVMIDUuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcworTmF0YWxpLgorCisuLgorCisuLiBicG86IDY3ODAKKy4uIGRhdGU6IDg0NTQKKy4uIG5vbmNlOiBNUzF5RksKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2ZpeCBzdGFydHMvZW5kc3dpdGggZXJyb3IgbWVzc2FnZSB0byBtZW50aW9uIHRoYXQgdHVwbGVzIGFyZSBhY2NlcHRlZCB0b28uCisKKy4uCisKKy4uIGJwbzogNTA1NworLi4gZGF0ZTogODQ1MworLi4gbm9uY2U6IEJNbVMybgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZml4IGEgYnVnIGluIHRoZSBwZWVwaG9sZXIgdGhhdCBsZWQgdG8gbm9uLXBvcnRhYmxlIHB5YyBmaWxlcyBiZXR3ZWVuIG5hcnJvdworYW5kIHdpZGUgYnVpbGRzIHdoaWxlIG9wdGltaXppbmcgQklOQVJZX1NVQlNDUiBvbiBub24tQk1QIGNoYXJzIChlLmcuCit1IlxVMDAwMTIzNDUiWzBdKS4KKworLi4KKworLi4gYnBvOiAxMTY1MAorLi4gZGF0ZTogODQ1MgorLi4gbm9uY2U6IHI0N0p2aworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHlPU19TdGRpb1JlYWRsaW5lKCkgcmV0cmllcyBmZ2V0cygpIGlmIGl0IHdhcyBpbnRlcnJ1cHRlZCAoRUlOVFIpLCBmb3IKK2V4YW1wbGUgaWYgdGhlIHByb2dyYW0gaXMgc3RvcHBlZCB3aXRoIENUUkwreiBvbiBNYWMgT1MgWC4gUGF0Y2ggd3JpdHRlbiBieQorQ2hhcmxlcy1GcmFuY29pcyBOYXRhbGkuCisKKy4uCisKKy4uIGJwbzogMTExNDQKKy4uIGRhdGU6IDg0NTEKKy4uIG5vbmNlOiBGRTFjWUMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0Vuc3VyZSB0aGF0IGludChhX2Zsb2F0KSByZXR1cm5zIGFuIGludCB3aGVuZXZlciBwb3NzaWJsZS4gUHJldmlvdXNseSwgdGhlcmUKK3dlcmUgc29tZSBjb3JuZXIgY2FzZXMgd2hlcmUgYSBsb25nIHdhcyByZXR1cm5lZCBldmVuIHRob3VnaCB0aGUgcmVzdWx0IHdhcword2l0aGluIHRoZSByYW5nZSBvZiBhbiBpbnQuCisKKy4uCisKKy4uIGJwbzogMTE0NTAKKy4uIGRhdGU6IDg0NTAKKy4uIG5vbmNlOiB1bEk5eEoKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0Rvbid0IHRydW5jYXRlIGhnIHZlcnNpb24gaW5mbyBpbiBQeV9HZXRCdWlsZEluZm8oKSB3aGVuIHRoZXJlIGFyZSBtYW55IHRhZ3MKKyhlLmcuIHdoZW4gdXNpbmcgbXEpLiAgUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgorCisuLgorCisuLiBicG86IDEwNDUxCisuLiBkYXRlOiA4NDQ5CisuLiBub25jZTogd2xZaUk4CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCittZW1vcnl2aWV3IG9iamVjdHMgY291bGQgYWxsb3cgbXV0YXRpbmcgYSByZWFkYWJsZSBidWZmZXIuIEluaXRpYWwgcGF0Y2ggYnkKK1Jvc3MgTGFnZXJ3YWxsLgorCisuLgorCisuLiBicG86IDEwODkyCisuLiBkYXRlOiA4NDQ4CisuLiBub25jZTogQVRqd0RfCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitEb24ndCBzZWdmYXVsdCB3aGVuIHRyeWluZyB0byBkZWxldGUgX19hYnN0cmFjdG1ldGhvZHNfXyBmcm9tIGEgY2xhc3MuCisKKy4uCisKKy4uIGJwbzogODAyMAorLi4gZGF0ZTogODQ0NworLi4gbm9uY2U6IGFFUnVaRQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQXZvaWQgYSBjcmFzaCB3aGVyZSB0aGUgc21hbGwgb2JqZWN0cyBhbGxvY2F0b3Igd291bGQgcmVhZCBub24tUHl0aG9uCittYW5hZ2VkIG1lbW9yeSB3aGlsZSBpdCBpcyBiZWluZyBtb2RpZmllZCBieSBhbm90aGVyIHRocmVhZC4gUGF0Y2ggYnkgTWF0dAorQmFuZHkuCisKKy4uCisKKy4uIGJwbzogMTEwMDQKKy4uIGRhdGU6IDg0NDYKKy4uIG5vbmNlOiAyV2o0dDgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JlcGFpcmVkIGVkZ2UgY2FzZSBpbiBkZXF1ZS5jb3VudCgpLgorCisuLgorCisuLiBicG86IDgyNzgKKy4uIGRhdGU6IDg0NDUKKy4uIG5vbmNlOiA4UC1rTWkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK09uIFdpbmRvd3MgYW5kIHdpdGggYSBOVEZTIGZpbGVzeXN0ZW0sIG9zLnN0YXQoKSBhbmQgb3MudXRpbWUoKSBjYW4gbm93CitoYW5kbGUgZGF0ZXMgYWZ0ZXIgMjAzOC4KKworLi4KKworLi4gYnBvOiA0MjM2CisuLiBkYXRlOiA4NDQ0CisuLiBub25jZToga01qUUs2CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQeV9Jbml0TW9kdWxlNCBub3cgY2hlY2tzIHRoZSBpbXBvcnQgbWFjaGluZXJ5IGRpcmVjdGx5IHJhdGhlciB0aGFuIHRoZQorUHlfSXNJbml0aWFsaXplZCBmbGFnLCBhdm9pZGluZyBhIEZhdGFsIFB5dGhvbiBlcnJvciBpbiBjZXJ0YWluCitjaXJjdW1zdGFuY2VzIHdoZW4gYW4gaW1wb3J0IGlzIGRvbmUgaW4gX19kZWxfXy4KKworLi4KKworLi4gYnBvOiAxMTgyOAorLi4gZGF0ZTogODQ0MworLi4gbm9uY2U6IG5CbG5zdAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworc3RhcnRzd2l0aCBhbmQgZW5kc3dpdGggZG9uJ3QgYWNjZXB0IE5vbmUgYXMgc2xpY2UgaW5kZXguIFBhdGNoIGJ5IFRvcnN0ZW4KK0JlY2tlci4KKworLi4KKworLi4gYnBvOiAxMDY3NAorLi4gZGF0ZTogODQ0MgorLi4gbm9uY2U6IFpORlExZgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmVtb3ZlIHVudXNlZCAnZGljdG1ha2VyJyBydWxlIGZyb20gZ3JhbW1hci4KKworLi4KKworLi4gYnBvOiAxMDU5NgorLi4gZGF0ZTogODQ0MQorLi4gbm9uY2U6IHIwNXh6bQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGZsb2F0Ll9fbW9kX18gdG8gaGF2ZSB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgZmxvYXQuX19kaXZtb2RfXyB3aXRoCityZXNwZWN0IHRvIHNpZ25lZCB6ZXJvcy4gIC00LjAgJSA0LjAgc2hvdWxkIGJlIDAuMCwgbm90IC0wLjAuCisKKy4uCisKKy4uIGJwbzogMTEzODYKKy4uIGRhdGU6IDg0NDAKKy4uIG5vbmNlOiB3cnJCOEsKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2J5dGVhcnJheS5wb3AoKSBub3cgdGhyb3dzIEluZGV4RXJyb3Igd2hlbiB0aGUgYnl0ZWFycmF5IGlzIGVtcHR5LCBpbnN0ZWFkCitvZiBPdmVyZmxvd0Vycm9yLgorCisuLgorCisuLiBicG86IDEyMTYxCisuLiBkYXRlOiA4NDM5CisuLiBub25jZTogQ21EcE5WCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NhdXNlIFN0cmluZ0lPLmdldHZhbHVlKCkgdG8gcmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gdXNlZCBvbiBhIGNsb3NlZAorU3RyaW5nSU8gaW5zdGFuY2UuCisKKy4uCisKKy4uIGJwbzogMTIxODIKKy4uIGRhdGU6IDg0MzgKKy4uIG5vbmNlOiBJV3J1WlEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHB5ZG9jLkhUTUxEb2MubXVsdGljb2x1bW4oKSBpZiBQeXRob24gdXNlcyB0aGUgbmV3ICh0cnVlKSBkaXZpc2lvbgorKHB5dGhvbiAtUW5ldykuIFBhdGNoIHdyaXR0ZW4gYnkgUmFsZiBXLiBHcm9zc2UtS3Vuc3RsZXZlLgorCisuLgorCisuLiBicG86IDEyMTc1CisuLiBkYXRlOiA4NDM3CisuLiBub25jZTogOU01NUNWCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Jhd0lPQmFzZS5yZWFkYWxsKCkgbm93IHJldHVybnMgTm9uZSBpZiByZWFkKCkgcmV0dXJucyBOb25lLgorCisuLgorCisuLiBicG86IDEyMTc1CisuLiBkYXRlOiA4NDM2CisuLiBub25jZTogVTNrNGl3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpbGVJTy5yZWFkYWxsKCkgbm93IHJhaXNlcyBhIFZhbHVlRXJyb3IgaW5zdGVhZCBvZiBhbiBJT0Vycm9yIGlmIHRoZSBmaWxlCitpcyBjbG9zZWQuCisKKy4uCisKKy4uIGJwbzogMTQ0MTUzMAorLi4gZGF0ZTogODQzNQorLi4gbm9uY2U6IHBTbG5GaworLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiBpbWFwbGliLCB1c2UgbWFrZWZpbGUoKSB0byB3cmFwIHRoZSBTU0wgc29ja2V0IHRvIGF2b2lkIGhlYXAKK2ZyYWdtZW50YXRpb24gYW5kIE1lbW9yeUVycm9yIHdpdGggc29tZSBtYWxsb2MgaW1wbGVtZW50YXRpb25zLgorCisuLgorCisuLiBicG86IDEyMTAwCisuLiBkYXRlOiA4NDM0CisuLiBub25jZTogNHNiLWdKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Rvbid0IHJlc2V0IGluY3JlbWVudGFsIGVuY29kZXJzIG9mIENKSyBjb2RlY3MgYXQgZWFjaCBjYWxsIHRvIHRoZWlyCitlbmNvZGUoKSBtZXRob2QgYW55bW9yZSwgYnV0IGNvbnRpbnVlIHRvIGNhbGwgdGhlIHJlc2V0KCkgbWV0aG9kIGlmIHRoZQorZmluYWwgYXJndW1lbnQgaXMgVHJ1ZS4KKworLi4KKworLi4gYnBvOiAxMjEyNAorLi4gZGF0ZTogODQzMworLi4gbm9uY2U6IHFwTUk3ZworLi4gc2VjdGlvbjogTGlicmFyeQorCit6aXBpbXBvcnQgZG9lc24ndCBrZWVwIGEgcmVmZXJlbmNlIHRvIHpsaWIuZGVjb21wcmVzcygpIGFueW1vcmUgdG8gYmUgYWJsZQordG8gdW5sb2FkIHRoZSBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMTAxNTQKKy4uIGRhdGU6IDg0MzIKKy4uIG5vbmNlOiA0aVBWcjgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY2hhbmdlIHRoZSBub3JtYWxpemF0aW9uIG9mIFVURi04IHRvICJVVEYtOCIgaW5zdGVhZCBvZiAiVVRGOCIgaW4gdGhlIGxvY2FsZQorbW9kdWxlIGFzIHRoZSBsYXR0ZXIgaXMgbm90IHN1cHBvcnRlZCBNYWNPU1ggYW5kIE9wZW5CU0QuIChTZWUgYWxzbzoKK2Jwby0xMDA5MCkKKworLi4KKworLi4gYnBvOiA5NTE2CisuLiBkYXRlOiA4NDMxCisuLiBub25jZTogV0xreHVDCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2F2b2lkIGVycm9ycyBpbiBzeXNjb25maWcgd2hlbiBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgaXMgc2V0IGluIHNoZWxsLgorCisuLgorCisuLiBicG86IDEyMDUwCisuLiBkYXRlOiA4NDMwCisuLiBub25jZTogdjZIRjlpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3psaWIuZGVjb21wcmVzc29iaigpLmRlY29tcHJlc3MoKSBub3cgY2xlYXJzIHRoZSB1bmNvbnN1bWVkX3RhaWwgYXR0cmlidXRlCit3aGVuIGNhbGxlZCB3aXRob3V0IGEgbWF4X2xlbmd0aCBhcmd1bWVudC4KKworLi4KKworLi4gYnBvOiAxMjA2MgorLi4gZGF0ZTogODQyOQorLi4gbm9uY2U6IGZVVnV5TworLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiB0aGUgYGlvYCBtb2R1bGUsIGZpeCBhIGZsdXNoaW5nIGJ1ZyB3aGVuIGRvaW5nIGEgY2VydGFpbiB0eXBlIG9mIEkvTworc2VxdWVuY2Ugb24gYSBmaWxlIG9wZW5lZCBpbiByZWFkK3dyaXRlIG1vZGUgKG5hbWVseTogcmVhZGluZywgc2Vla2luZyBhIGJpdAorZm9yd2FyZCwgd3JpdGluZywgdGhlbiBzZWVraW5nIGJlZm9yZSB0aGUgcHJldmlvdXMgd3JpdGUgYnV0IHN0aWxsIHdpdGhpbgorYnVmZmVyZWQgZGF0YSwgYW5kIHdyaXRpbmcgYWdhaW4pLgorCisuLgorCisuLiBicG86IDg0OTgKKy4uIGRhdGU6IDg0MjgKKy4uIG5vbmNlOiBYb29HVkkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gc29ja2V0LmFjY2VwdCgpLCBhbGxvdyBzcGVjaWZ5aW5nIDAgYXMgYSBiYWNrbG9nIHZhbHVlIGluIG9yZGVyIHRvIGFjY2VwdAorZXhhY3RseSBvbmUgY29ubmVjdGlvbi4gIFBhdGNoIGJ5IERhbmllbCBFdmVycy4KKworLi4KKworLi4gYnBvOiAxMjAxMgorLi4gZGF0ZTogODQyNworLi4gbm9uY2U6IHJhRlVvUgorLi4gc2VjdGlvbjogTGlicmFyeQorCitzc2wuUFJPVE9DT0xfU1NMdjIgYmVjb21lcyBvcHRpb25hbC4KKworLi4KKworLi4gYnBvOiAxMTkyNworLi4gZGF0ZTogODQyNgorLi4gbm9uY2U6IFVxdlJBVgorLi4gc2VjdGlvbjogTGlicmFyeQorCitTTVRQX1NTTCBub3cgdXNlcyBwb3J0IDQ2NSBieSBkZWZhdWx0IGFzIGRvY3VtZW50ZWQuICBQYXRjaCBieSBLYXN1biBIZXJhdGguCisKKy4uCisKKy4uIGJwbzogMTE5OTkKKy4uIGRhdGU6IDg0MjUKKy4uIG5vbmNlOiBhTGEtSEQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4ZWQgc3BvcmFkaWMgc3luYyBmYWlsdXJlIG1haWxib3guTWFpbGRpciBkdWUgdG8gaXRzIHRyeWluZyB0byBkZXRlY3QKK210aW1lIGNoYW5nZXMgYnkgY29tcGFyaW5nIHRvIHRoZSBzeXN0ZW0gY2xvY2sgaW5zdGVhZCBvZiB0byB0aGUgcHJldmlvdXMKK3ZhbHVlIG9mIHRoZSBtdGltZS4KKworLi4KKworLi4gYnBvOiAxMDY4NAorLi4gZGF0ZTogODQyNAorLi4gbm9uY2U6IEN0eWU2bworLi4gc2VjdGlvbjogTGlicmFyeQorCitzaHV0aWwubW92ZSB1c2VkIHRvIGRlbGV0ZSBhIGZvbGRlciBvbiBjYXNlIGluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zIHdoZW4gdGhlCitzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIG5hbWUgd2hlcmUgdGhlIHNhbWUgZXhjZXB0IGZvciB0aGUgY2FzZS4KKworLi4KKworLi4gYnBvOiAxMTk4MgorLi4gZGF0ZTogODQyMworLi4gbm9uY2U6IDRDaUhSTworLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXgganNvbi5sb2FkcygnIiInKSB0byByZXR1cm4gdScnIHJhdGhlciB0aGFuICcnLgorCisuLgorCisuLiBicG86IDExMjc3CisuLiBkYXRlOiA4NDIyCisuLiBub25jZTogNG5DVXh2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK21tYXAubW1hcCgpIGNhbGxzIGZjbnRsKGZkLCBGX0ZVTExGU1lOQykgb24gTWFjIE9TIFggdG8gZ2V0IGFyb3VuZCBhIG1tYXAKK2J1ZyB3aXRoIHNwYXJzZSBmaWxlcy4gUGF0Y2ggd3JpdHRlbiBieSBTdGVmZmVuIERhb2RlIE51cnBtZXNvLgorCisuLgorCisuLiBicG86IDEwNzYxCisuLiBkYXRlOiA4NDIxCisuLiBub25jZTogcndTUUU3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0YXJmaWxlLmV4dHJhY3RhbGwgZmFpbHVyZSB3aGVuIHN5bWxpbmtlZCBmaWxlcyBhcmUgcHJlc2VudC4gSW5pdGlhbAorcGF0Y2ggYnkgU2NvdHQgTGVlcnNzZW4uCisKKy4uCisKKy4uIGJwbzogMTE3NjMKKy4uIGRhdGU6IDg0MjAKKy4uIG5vbmNlOiBMUEdybkcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZG9uJ3QgdXNlIGRpZmZsaWIgaW4gVGVzdENhc2UuYXNzZXJ0TXVsdGlMaW5lRXF1YWwgaWYgdGhlIHN0cmluZ3MgYXJlIHRvbworbG9uZy4KKworLi4KKworLi4gYnBvOiAxMTIzNgorLi4gZGF0ZTogODQxOQorLi4gbm9uY2U6IER5V2RuTAorLi4gc2VjdGlvbjogTGlicmFyeQorCitnZXRwYXNzLmdldHBhc3MgcmVzcG9uZHMgdG8gY3RybC1jIG9yIGN0cmwteiBvbiB0ZXJtaW5hbC4KKworLi4KKworLi4gYnBvOiAxMTc2OAorLi4gZGF0ZTogODQxOAorLi4gbm9uY2U6IEhSZzVIeQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgc2lnbmFsIGhhbmRsZXIgb2YgdGhlIHNpZ25hbCBtb2R1bGUgb25seSBjYWxscyBQeV9BZGRQZW5kaW5nQ2FsbCgpIGZvcgordGhlIGZpcnN0IHNpZ25hbCB0byBmaXggYSBkZWFkbG9jayBvbiByZWVudHJhbnQgb3IgcGFyYWxsZWwgY2FsbHMuCitQeUVycl9TZXRJbnRlcnJ1cHQoKSB3cml0ZXMgYWxzbyBpbnRvIHRoZSB3YWtlIHVwIGZpbGUuCisKKy4uCisKKy4uIGJwbzogMTE4NzUKKy4uIGRhdGU6IDg0MTcKKy4uIG5vbmNlOiB4Rm4teUQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY29sbGVjdGlvbnMuT3JkZXJlZERpY3QncyBfX3JlZHVjZV9fIHdhcyB0ZW1wb3JhcmlseSBtdXRhdGluZyB0aGUgb2JqZWN0CitpbnN0ZWFkIG9mIGp1c3Qgd29ya2luZyBvbiBhIGNvcHkuCisKKy4uCisKKy4uIGJwbzogMTE0NDIKKy4uIGRhdGU6IDg0MTYKKy4uIG5vbmNlOiBKdGE4Z28KKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGEgY2hhcnNldCBwYXJhbWV0ZXIgdG8gdGhlIENvbnRlbnQtdHlwZSBpbiBTaW1wbGVIVFRQU2VydmVyIHRvIGF2b2lkIFhTUworYXR0YWNrcy4KKworLi4KKworLi4gYnBvOiAxMTQ2NworLi4gZGF0ZTogODQxNQorLi4gbm9uY2U6IHRoOEIwTgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdXJscGFyc2UgYmVoYXZpb3Igd2hlbiBoYW5kbGluZyB1cmxzIHdoaWNoIGNvbnRhaW5zIHNjaGVtZSBzcGVjaWZpYyBwYXJ0Citvbmx5IGRpZ2l0cy4gUGF0Y2ggYnkgU2FudG9zbyBXaWpheWEuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODQxNAorLi4gbm9uY2U6IE1PZDc4MgorLi4gc2VjdGlvbjogTGlicmFyeQorCitjb2xsZWN0aW9ucy5Db3VudGVyKCkuY29weSgpIG5vdyB3b3JrcyBjb3JyZWN0bHkgZm9yIHN1YmNsYXNzZXMuCisKKy4uCisKKy4uIGJwbzogMTE0NzQKKy4uIGRhdGU6IDg0MTMKKy4uIG5vbmNlOiBVS1RBV0EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBidWcgd2l0aCB1cmwycGF0aG5hbWUoKSBoYW5kbGluZyBvZiAnL0N8Lycgb24gV2luZG93cy4gUGF0Y2ggYnkKK1NhbnRvc28gV2lqYXlhLgorCisuLgorCisuLiBicG86IDkyMzMKKy4uIGRhdGU6IDg0MTIKKy4uIG5vbmNlOiBBSVJjcWkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGpzb24ubG9hZHMoJ3t9JykgdG8gcmV0dXJuIGEgZGljdCAoaW5zdGVhZCBvZiBhIGxpc3QpLCB3aGVuIF9qc29uIGlzIG5vdAorYXZhaWxhYmxlLgorCisuLgorCisuLiBicG86IDExNzAzCisuLiBkYXRlOiA4NDExCisuLiBub25jZTogaHdJNU13CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VybGxpYjIuZ2V0dXJsKCkgZG9lcyBub3QgcmV0dXJuIGNvcnJlY3QgdXJsIHdoZW4gdGhlIG9yaWdpbmFsIHVybCBjb250YWlucworI2ZyYWdtZW50LgorCisuLgorCisuLiBicG86IDEwMDE5CisuLiBkYXRlOiA4NDEwCisuLiBub25jZTogSjdRVkZVCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHJlZ3Jlc3Npb24gaW4ganNvbiBtb2R1bGUgd2hlcmUgYW4gaW5kZW50IG9mIDAgc3RvcHBlZCBhZGRpbmcgbmV3bGluZXMKK2FuZCBhY3RlZCBpbnN0ZWFkIGxpa2UgJ05vbmUnLgorCisuLgorCisuLiBicG86IDUxNjIKKy4uIGRhdGU6IDg0MDkKKy4uIG5vbmNlOiBVWUpyTy0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVHJlYXQgc2VydmljZXMgbGlrZSBmcm96ZW4gZXhlY3V0YWJsZXMgdG8gYWxsb3cgY2hpbGQgc3Bhd25pbmcgZnJvbQorbXVsdGlwcm9jZXNzaW5nLmZvcmtpbmcgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiA0ODc3CisuLiBkYXRlOiA4NDA4CisuLiBub25jZTogNEI3dURKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIHNlZ2ZhdWx0IGluIHhtbC5wYXJzZXJzLmV4cGF0IHdoaWxlIGF0dGVtcHRpbmcgdG8gcGFyc2UgYSBjbG9zZWQgZmlsZS4KKworLi4KKworLi4gYnBvOiAxMTgzMAorLi4gZGF0ZTogODQwNworLi4gbm9uY2U6IHRGRXRXbAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmUgdW5uZWNlc3NhcnkgaW50cm9zcGVjdGlvbiBjb2RlIGluIHRoZSBkZWNpbWFsIG1vZHVsZS4gSXQgd2FzIGNhdXNpbmcKK2EgZmFpbGVkIGltcG9ydCBpbiB0aGUgVHVya2lzaCBsb2NhbGUgd2hlcmUgdGhlIGxvY2FsZSBzZW5zaXRpdmUgc3RyLnVwcGVyKCkKK21ldGhvZCBjYXVzZWQgYSBuYW1lIG1pc21hdGNoLgorCisuLgorCisuLiBicG86IDg0MjgKKy4uIGRhdGU6IDg0MDYKKy4uIG5vbmNlOiB2VnU3SjYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgcmFjZSBjb25kaXRpb24gaW4gbXVsdGlwcm9jZXNzaW5nLlBvb2wgd2hlbiB0ZXJtaW5hdGluZyB3b3JrZXIKK3Byb2Nlc3NlczogbmV3IHByb2Nlc3NlcyB3b3VsZCBiZSBzcGF3bmVkIHdoaWxlIHRoZSBwb29sIGlzIGJlaW5nIHNodXQgZG93bi4KK1BhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLi4KKworLi4gYnBvOiA3MzExCisuLiBkYXRlOiA4NDA1CisuLiBub25jZTogbFJva0NRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBIVE1MUGFyc2VyIHRvIGFjY2VwdCBub24tQVNDSUkgYXR0cmlidXRlIHZhbHVlcy4KKworLi4KKworLi4gYnBvOiAxMDk2MworLi4gZGF0ZTogODQwNAorLi4gbm9uY2U6IF9KLU1XOQorLi4gc2VjdGlvbjogTGlicmFyeQorCitFbnN1cmUgdGhhdCBzdWJwcm9jZXNzLmNvbW11bmljYXRlKCkgbmV2ZXIgcmFpc2VzIEVQSVBFLgorCisuLgorCisuLiBicG86IDExNjYyCisuLiBkYXRlOiA4NDAzCisuLiBub25jZTogR3BIYmdrCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgdXJsbGliIGFuZCB1cmxsaWIyIGlnbm9yZSByZWRpcmVjdGlvbnMgaWYgdGhlIHNjaGVtZSBpcyBub3QgSFRUUCwgSFRUUFMKK29yIEZUUCAoQ1ZFLTIwMTEtMTUyMSkuCisKKy4uCisKKy4uIGJwbzogMTEyNTYKKy4uIGRhdGU6IDg0MDIKKy4uIG5vbmNlOiBBVnFySFoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGluc3BlY3QuZ2V0Y2FsbGFyZ3Mgb24gZnVuY3Rpb25zIHRoYXQgdGFrZSBvbmx5IGtleXdvcmQgYXJndW1lbnRzLgorCisuLgorCisuLiBicG86IDExNjk2CisuLiBkYXRlOiA4NDAxCisuLiBub25jZTogZHp6N25NCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBJRCBnZW5lcmF0aW9uIGluIG1zaWxpYi4KKworLi4KKworLi4gYnBvOiA5Njk2CisuLiBkYXRlOiA4NDAwCisuLiBub25jZTogTmgwdThKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBleGNlcHRpb24gaW5jb3JyZWN0bHkgcmFpc2VkIGJ5IHhkcmxpYi5QYWNrZXIucGFja19pbnQgd2hlbiB0cnlpbmcgdG8KK3BhY2sgYSBuZWdhdGl2ZSAoaW4tcmFuZ2UpIGludGVnZXIuCisKKy4uCisKKy4uIGJwbzogMTE2NzUKKy4uIGRhdGU6IDgzOTkKKy4uIG5vbmNlOiBxRmZta1UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbXVsdGlwcm9jZXNzaW5nLltSYXddQXJyYXkgb2JqZWN0cyBjcmVhdGVkIGZyb20gYW4gaW50ZWdlciBzaXplIGFyZSBub3cKK3plcm9lZCBvbiBjcmVhdGlvbi4gIFRoaXMgbWF0Y2hlcyB0aGUgYmVoYXZpb3VyIHNwZWNpZmllZCBieSB0aGUKK2RvY3VtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogNzYzOQorLi4gZGF0ZTogODM5OAorLi4gbm9uY2U6IFBLZm13egorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc2hvcnQgZmlsZSBuYW1lIGdlbmVyYXRpb24gaW4gYmRpc3RfbXNpLgorCisuLgorCisuLiBicG86IDExNjY2CisuLiBkYXRlOiA4Mzk3CisuLiBub25jZTogSG5pNTZlCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xldCBoZWxwKCkgZGlzcGxheSBuYW1lZCB0dXBsZSBhdHRyaWJ1dGVzIGFuZCBtZXRob2RzIHRoYXQgc3RhcnQgd2l0aCBhCitsZWFkaW5nIHVuZGVyc2NvcmUuCisKKy4uCisKKy4uIGJwbzogMTE2NzMKKy4uIGRhdGU6IDgzOTYKKy4uIG5vbmNlOiB1WGx4NFcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG11bHRpcHJvY2Vzc2luZyBBcnJheSBhbmQgUmF3QXJyYXkgY29uc3RydWN0b3JzIHRvIGFjY2VwdCBhIHNpemUgb2YgdHlwZQorJ2xvbmcnLCByYXRoZXIgdGhhbiBvbmx5IGFjY2VwdGluZyAnaW50Jy4KKworLi4KKworLi4gYnBvOiAxMDA0MgorLi4gZGF0ZTogODM5NQorLi4gbm9uY2U6IFNDdFJpRAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aGUgdG90YWxfb3JkZXJpbmcgZGVjb3JhdG9yIHRvIGhhbmRsZSBjcm9zcy10eXBlIGNvbXBhcmlzb25zIHRoYXQKK2NvdWxkIGxlYWQgdG8gaW5maW5pdGUgcmVjdXJzaW9uLgorCisuLgorCisuLiBicG86IDEwOTc5CisuLiBkYXRlOiA4Mzk0CisuLiBub25jZTogRmp5VnJUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VuaXR0ZXN0IHN0ZG91dCBidWZmZXJpbmcgbm93IHdvcmtzIHdpdGggY2xhc3MgYW5kIG1vZHVsZSBzZXR1cCBhbmQKK3RlYXJkb3duLgorCisuLgorCisuLiBicG86IDExNTY5CisuLiBkYXRlOiA4MzkzCisuLiBub25jZTogZnA0NjFGCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VzZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBzeXNjdGwgY29tbWFuZCBpbiBtdWx0aXByb2Nlc3NpbmcgdG8gZW5zdXJlIHRoYXQgaXQKK3dpbGwgYmUgZm91bmQgcmVnYXJkbGVzcyBvZiB0aGUgc2hlbGwgUEFUSC4gVGhpcyBlbnN1cmVzIHRoYXQKK211bHRpcHJvY2Vzc2luZy5jcHVfY291bnQgd29ya3Mgb24gZGVmYXVsdCBpbnN0YWxscyBvZiBNYWNPU1guCisKKy4uCisKKy4uIGJwbzogMTE1MDAKKy4uIGRhdGU6IDgzOTIKKy4uIG5vbmNlOiBTT0dkNFkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYSBidWcgaW4gdGhlIG9zIHggcHJveHkgYnlwYXNzIGNvZGUgZm9yIGZ1bGx5IHF1YWxpZmllZCBJUCBhZGRyZXNzZXMKK2luIHRoZSBwcm94eSBleGNlcHRpb24gbGlzdC4KKworLi4KKworLi4gYnBvOiAxMTEzMQorLi4gZGF0ZTogODM5MQorLi4gbm9uY2U6IFBubVJ3bworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc2lnbiBvZiB6ZXJvIGluIHBsdXMgYW5kIG1pbnVzIG9wZXJhdGlvbnMgd2hlbiB0aGUgY29udGV4dCByb3VuZGluZyBtb2RlCitpcyBST1VORF9GTE9PUi4KKworLi4KKworLi4gYnBvOiA1NjIyCisuLiBkYXRlOiA4MzkwCisuLiBub25jZTogZE03dG5XCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBjdXJzZXMud3JhcHBlciB0byByYWlzZSBjb3JyZWN0IGV4Y2VwdGlvbiBpZiBjdXJzZXMgaW5pdGlhbGl6YXRpb24KK2ZhaWxzLgorCisuLgorCisuLiBicG86IDExMzkxCisuLiBkYXRlOiA4Mzg5CisuLiBub25jZTogaGRvUlBlCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1dyaXRpbmcgdG8gYSBtbWFwIG9iamVjdCBjcmVhdGVkIHdpdGggYGBtbWFwLlBST1RfUkVBRHxtbWFwLlBST1RfRVhFQ2BgCit3b3VsZCBzZWdmYXVsdCBpbnN0ZWFkIG9mIHJhaXNpbmcgYSBUeXBlRXJyb3IuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcworTmF0YWxpLgorCisuLgorCisuLiBicG86IDExMzA2CisuLiBkYXRlOiA4Mzg4CisuLiBub25jZTogMnJYRHQ0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK21haWxib3ggaW4gY2VydGFpbiBjYXNlcyBhZGFwdHMgdG8gYW4gaW5hYmlsaXR5IHRvIG9wZW4gY2VydGFpbiBmaWxlcyBpbgorcmVhZC13cml0ZSBtb2RlLiAgUHJldmlvdXNseSBpdCBkZXRlY3RlZCB0aGlzIGJ5IGNoZWNraW5nIGZvciBFQUNDRVMsIG5vdyBpdAorYWxzbyBjaGVja3MgZm9yIEVST0ZTLgorCisuLgorCisuLiBicG86IDExMjY1CisuLiBkYXRlOiA4Mzg3CisuLiBub25jZTogWTUxb3luCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FzeW5jb3JlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBFUElQRSwgRUJBREYgYW5kIEVBR0FJTiBlcnJvcnMgb24gYWNjZXB0KCksCitzZW5kKCkgYW5kIHJlY3YoKS4KKworLi4KKworLi4gYnBvOiAxMTMyNgorLi4gZGF0ZTogODM4NgorLi4gbm9uY2U6IDJHVVB5VQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgdGhlIG1pc3NpbmcgY29ubmVjdF9leCgpIGltcGxlbWVudGF0aW9uIGZvciBTU0wgc29ja2V0cywgYW5kIG1ha2UgaXQKK3dvcmsgZm9yIG5vbi1ibG9ja2luZyBjb25uZWN0cy4KKworLi4KKworLi4gYnBvOiAxMDk1NgorLi4gZGF0ZTogODM4NQorLi4gbm9uY2U6IEFyTk90NgorLi4gc2VjdGlvbjogTGlicmFyeQorCitCdWZmZXJlZCBJL08gY2xhc3NlcyByZXRyeSByZWFkaW5nIG9yIHdyaXRpbmcgYWZ0ZXIgYSBzaWduYWwgaGFzIGFycml2ZWQgYW5kCit0aGUgaGFuZGxlciByZXR1cm5lZCBzdWNjZXNzZnVsbHkuCisKKy4uCisKKy4uIGJwbzogMTA2ODAKKy4uIGRhdGU6IDgzODQKKy4uIG5vbmNlOiBwQW1GbkMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG11dHVhbGx5IGV4Y2x1c2l2ZSBhcmd1bWVudHMgZm9yIGFyZ3VtZW50IGdyb3VwcyBpbiBhcmdwYXJzZS4KKworLi4KKworLi4gYnBvOiA0NjgxCisuLiBkYXRlOiA4MzgzCisuLiBub25jZTogSTIwamdxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FsbG93IG1tYXAoKSB0byB3b3JrIG9uIGZpbGUgc2l6ZXMgYW5kIG9mZnNldHMgbGFyZ2VyIHRoYW4gNEdCLCBldmVuIG9uCiszMi1iaXQgYnVpbGRzLiAgSW5pdGlhbCBwYXRjaCBieSBSb3NzIExhZ2Vyd2FsbCwgYWRhcHRlZCBmb3IgMzItYml0IFdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogMTAzNjAKKy4uIGRhdGU6IDgzODIKKy4uIG5vbmNlOiBKQVl3NGwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gV2Vha1NldCwgZG8gbm90IHJhaXNlIFR5cGVFcnJvcnMgd2hlbiB0ZXN0aW5nIGZvciBtZW1iZXJzaGlwIG9mCitub24td2Vha3JlZmFibGUgb2JqZWN0cy4KKworLi4KKworLi4gYnBvOiAxMDU0OQorLi4gZGF0ZTogODM4MQorLi4gbm9uY2U6IDE1Y0FTVworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcHlkb2MgdHJhY2ViYWNrIHdoZW4gdGV4dC1kb2N1bWVudGluZyBjZXJ0YWluIGNsYXNzZXMuCisKKy4uCisKKy4uIGJwbzogOTQwMjg2CisuLiBkYXRlOiA4MzgwCisuLiBub25jZTogY1BnbElnCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3B5ZG9jLkhlbHBlci5oZWxwKCkgaWdub3JlcyBpbnB1dC9vdXRwdXQgaW5pdCBwYXJhbWV0ZXJzLgorCisuLgorCisuLiBicG86IDExMTcxCisuLiBkYXRlOiA4Mzc5CisuLiBub25jZTogWlhFRlhUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBkZXRlY3Rpb24gb2YgY29uZmlnL01ha2VmaWxlIHdoZW4gLS1wcmVmaXggIT0gLS1leGVjLXByZWZpeCwgd2hpY2gKK2NhdXNlZCBQeXRob24gdG8gbm90IHN0YXJ0LgorCisuLgorCisuLiBicG86IDExMTE2CisuLiBkYXRlOiA4Mzc4CisuLiBub25jZTogSjB4Z1dICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FueSBlcnJvciBkdXJpbmcgYWRkaXRpb24gb2YgYSBtZXNzYWdlIHRvIGEgbWFpbGJveCBub3cgY2F1c2VzIGEgcm9sbGJhY2ssCitpbnN0ZWFkIG9mIGxlYXZpbmcgdGhlIG1haWxib3ggcGFydGlhbGx5IG1vZGlmaWVkLgorCisuLgorCisuLiBicG86IDgyNzUKKy4uIGRhdGU6IDgzNzcKKy4uIG5vbmNlOiAtVFJBRHMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHBhc3Npbmcgb2YgY2FsbGJhY2sgYXJndW1lbnRzIHdpdGggY3R5cGVzIHVuZGVyIFdpbjY0LiBQYXRjaCBieSBTdGFuCitNaWhhaS4KKworLi4KKworLi4gYnBvOiAxMDk0OQorLi4gZGF0ZTogODM3NgorLi4gbm9uY2U6IHNrbkJUdAorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbXByb3ZlZCByb2J1c3RuZXNzIG9mIHJvdGF0aW5nIGZpbGUgaGFuZGxlcnMuCisKKy4uCisKKy4uIGJwbzogMTA5NTUKKy4uIGRhdGU6IDgzNzUKKy4uIG5vbmNlOiBSU3FQUk4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgcG90ZW50aWFsIGNyYXNoIHdoZW4gdHJ5aW5nIHRvIG1tYXAoKSBhIGZpbGUgcGFzdCBpdHMgbGVuZ3RoLiAgSW5pdGlhbAorcGF0Y2ggYnkgUm9zcyBMYWdlcndhbGwuCisKKy4uCisKKy4uIGJwbzogMTA4OTgKKy4uIGRhdGU6IDgzNzQKKy4uIG5vbmNlOiAyVmhWeFMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWxsb3cgY29tcGlsaW5nIHRoZSBwb3NpeCBtb2R1bGUgd2hlbiB0aGUgQyBsaWJyYXJ5IGRlZmluZXMgYSBzeW1ib2wgbmFtZWQKK0ZTVEFULgorCisuLgorCisuLiBicG86IDEwOTE2CisuLiBkYXRlOiA4MzczCisuLiBub25jZTogeHBkRWc4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK21tYXAgc2hvdWxkIG5vdCBzZWdmYXVsdCB3aGVuIGEgZmlsZSBpcyBtYXBwZWQgdXNpbmcgMCBhcyBsZW5ndGggYW5kIGEKK25vbi16ZXJvIG9mZnNldCwgYW5kIGFuIGF0dGVtcHQgdG8gcmVhZCBwYXN0IHRoZSBlbmQgb2YgZmlsZSBpcyBtYWRlIChJbmRleEVycm9yCitpcyByYWlzZWQgaW5zdGVhZCkuICBQYXRjaCBieSBSb3NzIExhZ2Vyd2FsbC4KKworLi4KKworLi4gYnBvOiAxMDg3NQorLi4gZGF0ZTogODM3MgorLi4gbm9uY2U6IFJTTllMUworLi4gc2VjdGlvbjogTGlicmFyeQorCitVcGRhdGUgUmVndWxhciBFeHByZXNzaW9uIEhPV1RPOyBwYXRjaCBieSAnU2lsZW50R2hvc3QnLgorCisuLgorCisuLiBicG86IDEwODI3CisuLiBkYXRlOiA4MzcxCisuLiBub25jZTogdmpaQ1pyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NoYW5nZWQgdGhlIHJ1bGVzIGZvciAyLWRpZ2l0IHllYXJzLiAgVGhlIHRpbWUuYXNjdGltZSBmdW5jdGlvbiB3aWxsIG5vdworZm9ybWF0IGFueSB5ZWFyIHdoZW4gYGB0aW1lLmFjY2VwdDJkeWVhcmBgIGlzIGZhbHNlIGFuZCB3aWxsIGFjY2VwdCB5ZWFycyA+PQorMTAwMCBvdGhlcndpc2UuICBUaGUgeWVhciByYW5nZSBhY2NlcHRlZCBieSBgYHRpbWUubWt0aW1lYGAgYW5kCitgYHRpbWUuc3RyZnRpbWVgYCBpcyBzdGlsbCBzeXN0ZW0gZGVwZW5kZW50LCBidXQgYGB0aW1lLm1rdGltZWBgIHdpbGwgbm93CithY2NlcHQgZnVsbCByYW5nZSBzdXBwb3J0ZWQgYnkgdGhlIE9TLiAgQ29udmVyc2lvbiBvZiAyLWRpZ2l0IHllYXJzIHRvCis0LWRpZ2l0IGlzIGRlcHJlY2F0ZWQuCisKKy4uCisKKy4uIGJwbzogMTA4NjkKKy4uIGRhdGU6IDgzNzAKKy4uIG5vbmNlOiAzeEJrV3gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYnVnIHdoZXJlIGFzdC5pbmNyZW1lbnRfbGluZW5vIG1vZGlmaWVkIHRoZSByb290IG5vZGUgdHdpY2UuCisKKy4uCisKKy4uIGJwbzogNzg1OAorLi4gZGF0ZTogODM2OQorLi4gbm9uY2U6IERLWk1PQQorLi4gc2VjdGlvbjogTGlicmFyeQorCitSYWlzZSBhbiBlcnJvciBwcm9wZXJseSB3aGVuIG9zLnV0aW1lKCkgZmFpbHMgdW5kZXIgV2luZG93cyBvbiBhbiBleGlzdGluZworZmlsZS4KKworLi4KKworLi4gYnBvOiAzODM5CisuLiBkYXRlOiA4MzY4CisuLiBub25jZTogek1OU2l0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3dzZ2lyZWYgc2hvdWxkIG5vdCBvdmVycmlkZSBhIENvbnRlbnQtTGVuZ3RoIGhlYWRlciBzZXQgYnkgdGhlIGFwcGxpY2F0aW9uLgorSW5pdGlhbCBwYXRjaCBieSBDbG92aXMgRmFicmljaW8uCisKKy4uCisKKy4uIGJwbzogMTA4MDYKKy4uIGRhdGU6IDgzNjcKKy4uIG5vbmNlOiBkRXp0dUIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHN1YnByb2Nlc3MgcGlwZXMgd2hlbiBzb21lIG9mIHRoZSBzdGFuZGFyZCBmaWxlIGRlc2NyaXB0b3JzICgwLCAxLCAyKQorYXJlIGNsb3NlZCBpbiB0aGUgcGFyZW50IHByb2Nlc3MuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLiAoU2VlCithbHNvOiBicG8tOTkwNSkKKworLi4KKworLi4gYnBvOiA0NjYyCisuLiBkYXRlOiA4MzY2CisuLiBub25jZTogbTNmSG5JCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK29zLnRlbXBuYW0oKSwgb3MudG1wZmlsZSgpIGFuZCBvcy50bXBuYW0oKSBub3cgcmFpc2UgYSBweTNrCitEZXByZWNhdGlvbldhcm5pbmcuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODM2NQorLi4gbm9uY2U6IHQ4UkoyUAorLi4gc2VjdGlvbjogTGlicmFyeQorCitTdWJjbGFzc2VzIG9mIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IG5vdyB3b3JrIGNvcnJlY3RseSB3aXRoIF9fbWlzc2luZ19fLgorCisuLgorCisuLiBicG86IDEwNzUzCisuLiBkYXRlOiA4MzY0CisuLiBub25jZTogcGpjUUNUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NoYXJhY3RlcnMgJzsnLCAnPScgYW5kICcsJyBpbiB0aGUgUEFUSF9JTkZPIGVudmlyb25tZW50IHZhcmlhYmxlIHdvbid0IGJlCitxdW90ZWQgd2hlbiB0aGUgVVJJIGlzIGNvbnN0cnVjdGVkIGJ5IHRoZSB3c2dpcmVmLnV0aWwgJ3MgcmVxdWVzdF91cmkKK21ldGhvZC4gQWNjb3JkaW5nIHRvIFJGQyAzOTg2LCB0aGVzZSBjaGFyYWN0ZXJzIGNhbiBiZSBhIHBhcnQgb2YgcGFyYW1zIGluCitQQVRIIGNvbXBvbmVudCBvZiBVUkkgYW5kIG5lZWQgbm90IGJlIHF1b3RlZC4KKworLi4KKworLi4gYnBvOiAxMDczOAorLi4gZGF0ZTogODM2MworLi4gbm9uY2U6IEdUN1FaYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggd2ViYnJvd3Nlci5PcGVyYS5yYWlzZV9vcHRzCisKKy4uCisKKy4uIGJwbzogOTgyNAorLi4gZGF0ZTogODM2MgorLi4gbm9uY2U6IHZKQklBaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitTaW1wbGVDb29raWUgbm93IGVuY29kZXMgLCBhbmQgOyBpbiB2YWx1ZXMgdG8gY2F0ZXIgdG8gaG93IGJyb3dzZXJzIGFjdHVhbGx5CitwYXJzZSBjb29raWVzLgorCisuLgorCisuLiBicG86IDEzNzk0MTYKKy4uIGRhdGU6IDgzNjEKKy4uIG5vbmNlOiBmcFdnRVIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZWxpbWluYXRlZCBhIHNvdXJjZSBvZiBhY2NpZGVudGFsIHVuaWNvZGUgcHJvbW90aW9uIGluCitlbWFpbC5oZWFkZXIuSGVhZGVyLmVuY29kZS4KKworLi4KKworLi4gYnBvOiA1MjU4CisuLiBkYXRlOiA4MzYwCisuLiBub25jZTogZk5lbm1KCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2lmIHNpdGUucHkgZW5jb3VudGVycyBhIC5wdGggZmlsZSB0aGF0IGdlbmVyYXRlcyBhbiBlcnJvciwgaXQgbm93IHByaW50cyB0aGUKK2ZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kIHRyYWNlYmFjayB0byBzdGRlcnIgYW5kIHNraXBzIHRoZSByZXN0IG9mIHRoYXQKK2luZGl2aWR1YWwgZmlsZSwgaW5zdGVhZCBvZiBzdG9wcGluZyBwcm9jZXNzaW5nIGVudGlyZWx5LiAoU2VlIGFsc286CiticG8tMTA2NDIpCisKKy4uCisKKy4uIGJwbzogMTA3NTAKKy4uIGRhdGU6IDgzNTkKKy4uIG5vbmNlOiBvLUtGVG4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGBgcmF3YGAgYXR0cmlidXRlIG9mIGJ1ZmZlcmVkIElPIG9iamVjdHMgaXMgbm93IHJlYWQtb25seS4KKworLi4KKworLi4gYnBvOiAxMDI0MgorLi4gZGF0ZTogODM1OAorLi4gbm9uY2U6IHV3Z0s4cworLi4gc2VjdGlvbjogTGlicmFyeQorCit1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRJdGVtc0VxdWFsIG1ha2VzIHRvbyBtYW55IGFzc3VtcHRpb25zIGFib3V0IGlucHV0LgorCisuLgorCisuLiBicG86IDEwNjExCisuLiBkYXRlOiA4MzU3CisuLiBub25jZTogeTY3V3B2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1N5c3RlbUV4aXQgc2hvdWxkIG5vdCBjYXVzZSBhIHVuaXR0ZXN0IHRlc3QgcnVuIHRvIGV4aXQuCisKKy4uCisKKy4uIGJwbzogNjc5MQorLi4gZGF0ZTogODM1NgorLi4gbm9uY2U6IGI1YjRNNworLi4gc2VjdGlvbjogTGlicmFyeQorCitMaW1pdCBoZWFkZXIgbGluZSBsZW5ndGggKHRvIDY1NTM1IGJ5dGVzKSBpbiBodHRwLmNsaWVudCwgdG8gYXZvaWQgZGVuaWFsIG9mCitzZXJ2aWNlcyBmcm9tIHRoZSBvdGhlciBwYXJ0eS4KKworLi4KKworLi4gYnBvOiA5OTA3CisuLiBkYXRlOiA4MzU1CisuLiBub25jZTogRUNfV3J5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0YWIgaGFuZGxpbmcgb24gT1NYIHdoZW4gdXNpbmcgZWRpdGxpbmUgYnkgY2FsbGluZyBybF9pbml0aWFsaXplIGZpcnN0LAordGhlbiBzZXR0aW5nIG91ciBjdXN0b20gZGVmYXVsdHMsIHRoZW4gcmVhZGluZyAuZWRpdHJjLgorCisuLgorCisuLiBicG86IDQxODgKKy4uIGRhdGU6IDgzNTQKKy4uIG5vbmNlOiBuSXI1ZUYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQXZvaWQgY3JlYXRpbmcgZHVtbXkgdGhyZWFkIG9iamVjdHMgd2hlbiBsb2dnaW5nIG9wZXJhdGlvbnMgZnJvbSB0aGUKK3RocmVhZGluZyBtb2R1bGUgKHdpdGggdGhlIGludGVybmFsIHZlcmJvc2UgZmxhZyBhY3RpdmF0ZWQpLgorCisuLgorCisuLiBicG86IDk3MjEKKy4uIGRhdGU6IDgzNTMKKy4uIG5vbmNlOiBHOGktU08KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBiZWhhdmlvciBvZiB1cmxqb2luIHdoZW4gdGhlIHJlbGF0aXZlIHVybCBzdGFydHMgd2l0aCBhICc7JworY2hhcmFjdGVyLiBQYXRjaCBieSBXZXMgQ2hvdy4KKworLi4KKworLi4gYnBvOiAxMDcxNAorLi4gZGF0ZTogODM1MgorLi4gbm9uY2U6IDJ5dFhXSQorLi4gc2VjdGlvbjogTGlicmFyeQorCitMaW1pdCBsZW5ndGggb2YgaW5jb21pbmcgcmVxdWVzdCBpbiBodHRwLnNlcnZlciB0byA2NTUzNiBieXRlcyBmb3Igc2VjdXJpdHkKK3JlYXNvbnMuICBJbml0aWFsIHBhdGNoIGJ5IFJvc3MgTGFnZXJ3YWxsLgorCisuLgorCisuLiBicG86IDk1NTgKKy4uIGRhdGU6IDgzNTEKKy4uIG5vbmNlOiBadTN6NlEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dCB3aXRoIFZTIDguMC4KKworLi4KKworLi4gYnBvOiAxMDY5NQorLi4gZGF0ZTogODM1MAorLi4gbm9uY2U6IDlQb1pMSQorLi4gc2VjdGlvbjogTGlicmFyeQorCitwYXNzaW5nIHRoZSBwb3J0IGFzIGEgc3RyaW5nIHZhbHVlIHRvIHRlbG5ldGxpYiBubyBsb25nZXIgY2F1c2VzIGRlYnVnIG1vZGUKK3RvIGZhaWwuCisKKy4uCisKKy4uIGJwbzogMTA0NzgKKy4uIGRhdGU6IDgzNDkKKy4uIG5vbmNlOiAzcnVzVGcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVlbnRyYW50IGNhbGxzIGluc2lkZSBidWZmZXJlZCBJTyBvYmplY3RzIChmb3IgZXhhbXBsZSBieSB3YXkgb2YgYSBzaWduYWwKK2hhbmRsZXIpIG5vdyByYWlzZSBhIFJ1bnRpbWVFcnJvciBpbnN0ZWFkIG9mIGZyZWV6aW5nIHRoZSBjdXJyZW50IHByb2Nlc3MuCisKKy4uCisKKy4uIGJwbzogMTA0OTcKKy4uIGRhdGU6IDgzNDgKKy4uIG5vbmNlOiBLQ1ZwMHYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGluY29ycmVjdCB1c2Ugb2YgZ2V0dGV4dCBpbiBhcmdwYXJzZS4KKworLi4KKworLi4gYnBvOiAxMDQ2NAorLi4gZGF0ZTogODM0NworLi4gbm9uY2U6IG9UNzZDbQorLi4gc2VjdGlvbjogTGlicmFyeQorCituZXRyYyBub3cgY29ycmVjdGx5IGhhbmRsZXMgbGluZXMgd2l0aCBlbWJlZGRlZCAnIycgY2hhcmFjdGVycy4KKworLi4KKworLi4gYnBvOiAxNzMxNzE3CisuLiBkYXRlOiA4MzQ2CisuLiBub25jZTogMVdpTjJ1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHRoZSBwcm9ibGVtIHdoZXJlIHN1YnByb2Nlc3Mud2FpdCgpIGNvdWxkIGNhdXNlIGFuIE9TRXJyb3IgZXhjZXB0aW9uCit3aGVuIFRoZSBPUyBoYWQgYmVlbiB0b2xkIHRvIGlnbm9yZSBTSUdDTEQgaW4gb3VyIHByb2Nlc3Mgb3Igb3RoZXJ3aXNlIG5vdAord2FpdCBmb3IgZXhpdGluZyBjaGlsZCBwcm9jZXNzZXMuCisKKy4uCisKKy4uIGJwbzogOTUwOQorLi4gZGF0ZTogODM0NQorLi4gbm9uY2U6IE9oLWlNeQorLi4gc2VjdGlvbjogTGlicmFyeQorCithcmdwYXJzZSBub3cgcHJvcGVybHkgaGFuZGxlcyBJT0Vycm9ycyByYWlzZWQgYnkgYXJncGFyc2UuRmlsZVR5cGUuCisKKy4uCisKKy4uIGJwbzogOTM0OAorLi4gZGF0ZTogODM0NAorLi4gbm9uY2U6IHpzSlBQagorLi4gc2VjdGlvbjogTGlicmFyeQorCitSYWlzZSBhbiBlYXJseSBlcnJvciBpZiBhcmdwYXJzZSBuYXJncyBhbmQgbWV0YXZhciBkb24ndCBtYXRjaC4KKworLi4KKworLi4gYnBvOiA4OTgyCisuLiBkYXRlOiA4MzQzCisuLiBub25jZTogZlRPTk5ICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ltcHJvdmUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBhcmdwYXJzZSBOYW1lc3BhY2Ugb2JqZWN0LgorCisuLgorCisuLiBicG86IDkzNDMKKy4uIGRhdGU6IDgzNDIKKy4uIG5vbmNlOiA5VC1ReXoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRG9jdW1lbnQgdGhhdCBhcmdwYXJzZSBwYXJlbnQgcGFyc2VycyBtdXN0IGJlIGNvbmZpZ3VyZWQgYmVmb3JlIHRoZWlyCitjaGlsZHJlbi4KKworLi4KKworLi4gYnBvOiA5MDI2CisuLiBkYXRlOiA4MzQxCisuLiBub25jZTogMnhxRUZUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBvcmRlciBvZiBhcmdwYXJzZSBzdWItY29tbWFuZHMgaW4gaGVscCBtZXNzYWdlcy4KKworLi4KKworLi4gYnBvOiA5MzQ3CisuLiBkYXRlOiA4MzQwCisuLiBub25jZTogUjh4QnNRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBmb3JtYXR0aW5nIGZvciB0dXBsZXMgaW4gYXJncGFyc2UgdHlwZT0gZXJyb3IgbWVzc2FnZXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODMzOQorLi4gbm9uY2U6IHFYeFhXcAorLi4gc2VjdGlvbjogTGlicmFyeQorCitTdG9wIHVzaW5nIHRoZSBvbGQgaW50ZXJmYWNlIGZvciBwcm92aWRpbmcgbWV0aG9kcyBhbmQgYXR0cmlidXRlcyBpbiB0aGUKK19zcmUgbW9kdWxlLiBBbW9uZyBvdGhlciB0aGluZ3MsIHRoaXMgZ2l2ZXMgdGhlc2UgY2xhc3NlcyBgYF9fY2xhc3NfX2BgCithdHRyaWJ1dGVzLiAoU2VlICMxMjA5OSkKKworLi4KKworLi4gYnBvOiAxMDE2OQorLi4gZGF0ZTogODMzOAorLi4gbm9uY2U6IE9YSjlOaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYXJndW1lbnQgcGFyc2luZyBpbiBzb2NrZXQuc2VuZHRvKCkgdG8gYXZvaWQgZXJyb3IgbWFza2luZy4KKworLi4KKworLi4gYnBvOiAxMjA1MQorLi4gZGF0ZTogODMzNworLi4gbm9uY2U6IDdIallfVQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc2VnZmF1bHQgaW4ganNvbi5kdW1wcygpIHdoaWxlIGVuY29kaW5nIGhpZ2hseS1uZXN0ZWQgb2JqZWN0cyB1c2luZyB0aGUKK0MgYWNjZWxlcmF0aW9ucy4KKworLi4KKworLi4gYnBvOiAxMjAxNworLi4gZGF0ZTogODMzNgorLi4gbm9uY2U6IHcyNVlOcQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc2VnZmF1bHQgaW4ganNvbi5sb2FkcygpIHdoaWxlIGRlY29kaW5nIGhpZ2hseS1uZXN0ZWQgb2JqZWN0cyB1c2luZyB0aGUKK0MgYWNjZWxlcmF0aW9ucy4KKworLi4KKworLi4gYnBvOiAxODM4CisuLiBkYXRlOiA4MzM1CisuLiBub25jZTogRXpLVTN6CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ByZXZlbnQgc2VnZmF1bHQgaW4gY3R5cGVzLCB3aGVuIF9hc19wYXJhbWV0ZXJfIG9uIGEgY2xhc3MgaXMgc2V0IHRvIGFuCitpbnN0YW5jZSBvZiB0aGUgY2xhc3MuCisKKy4uCisKKy4uIGJwbzogNjc4MjUwCisuLiBkYXRlOiA4MzM0CisuLiBub25jZTogYTV2dGxPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgbW1hcCBmbHVzaCBhIG5vb3Agb24gQUNDRVNTX1JFQUQgYW5kIEFDQ0VTU19DT1BZLgorCisuLgorCisuLiBicG86IDExNzE4CisuLiBkYXRlOiA4MzMzCisuLiBub25jZTogZ2lTMWlZCisuLiBzZWN0aW9uOiBJRExFCisKK0lETEUncyBvcGVuIG1vZHVsZSBkaWFsb2cgY291bGRuJ3QgZmluZCB0aGUgX19pbml0X18ucHkgZmlsZSBpbiBhIHBhY2thZ2UuCisKKy4uCisKKy4uIGJwbzogMTI1OTAKKy4uIGRhdGU6IDgzMzIKKy4uIG5vbmNlOiBkY0RqbzcKKy4uIHNlY3Rpb246IElETEUKKworSURMRSBlZGl0b3Igd2luZG93IG5vdyBhbHdheXMgZGlzcGxheXMgdGhlIGZpcnN0IGxpbmUgd2hlbiBvcGVuaW5nIGEgbG9uZworZmlsZS4gIFdpdGggVGsgOC41LCB0aGUgZmlyc3QgbGluZSB3YXMgaGlkZGVuLgorCisuLgorCisuLiBicG86IDExMDg4CisuLiBkYXRlOiA4MzMxCisuLiBub25jZTogMDhOSTV2CisuLiBzZWN0aW9uOiBJRExFCisKK2Rvbid0IGNyYXNoIHdoZW4gdXNpbmcgRjUgdG8gcnVuIGEgc2NyaXB0IGluIElETEUgb24gTWFjT1NYIHdpdGggVGsgOC41LgorCisuLgorCisuLiBicG86IDEwOTQwCisuLiBkYXRlOiA4MzMwCisuLiBub25jZTogcXdpM2NtCisuLiBzZWN0aW9uOiBJRExFCisKK1dvcmthcm91bmQgYW4gSURMRSBoYW5nIG9uIE1hYyBPUyBYIDEwLjYgd2hlbiB1c2luZyB0aGUgbWVudSBhY2NlbGVyYXRvcnMKK2ZvciBPcGVuIE1vZHVsZSwgR28gdG8gTGluZSwgYW5kIE5ldyBJbmRlbnQgV2lkdGguIFRoZSBhY2NlbGVyYXRvcnMgc3RpbGwKK3dvcmsgYnV0IG5vIGxvbmdlciBhcHBlYXIgaW4gdGhlIG1lbnUgaXRlbXMuCisKKy4uCisKKy4uIGJwbzogMTA5MDcKKy4uIGRhdGU6IDgzMjkKKy4uIG5vbmNlOiBCSEhjX3IKKy4uIHNlY3Rpb246IElETEUKKworV2FybiBPUyBYIDEwLjYgSURMRSB1c2VycyB0byB1c2UgQWN0aXZlU3RhdGUgVGNsL1RrIDguNSwgcmF0aGVyIHRoYW4gdGhlCitjdXJyZW50bHkgcHJvYmxlbWF0aWMgQXBwbGUtc3VwcGxpZWQgb25lLCB3aGVuIHJ1bm5pbmcgd2l0aCB0aGUgNjQtLzMyLWJpdAoraW5zdGFsbGVyIHZhcmlhbnQuCisKKy4uCisKKy4uIGJwbzogMTEwNTIKKy4uIGRhdGU6IDgzMjgKKy4uIG5vbmNlOiBhdm10U1EKKy4uIHNlY3Rpb246IElETEUKKworQ29ycmVjdCBJRExFIG1lbnUgYWNjZWxlcmF0b3JzIG9uIE1hYyBPUyBYIGZvciBTYXZlIGNvbW1hbmRzLgorCisuLgorCisuLiBicG86IDYwNzUKKy4uIGRhdGU6IDgzMjcKKy4uIG5vbmNlOiBBSEtORVoKKy4uIHNlY3Rpb246IElETEUKKworSURMRSBvbiBNYWMgT1MgWCBub3cgd29ya3Mgd2l0aCBib3RoIENhcmJvbiBBcXVhVGsgYW5kIENvY29hIEFxdWFUay4KKworLi4KKworLi4gYnBvOiAxMDQwNAorLi4gZGF0ZTogODMyNgorLi4gbm9uY2U6IENCenNfRworLi4gc2VjdGlvbjogSURMRQorCitVc2UgY3RsLWJ1dHRvbi0xIG9uIE9TWCBmb3IgdGhlIGNvbnRleHQgbWVudSBpbiBJZGxlLgorCisuLgorCisuLiBicG86IDEwMTA3CisuLiBkYXRlOiA4MzI1CisuLiBub25jZTogQnN4LUY0CisuLiBzZWN0aW9uOiBJRExFCisKK1dhcm4gYWJvdXQgdW5zYXZlZCBmaWxlcyBpbiBJRExFIG9uIE9TWC4KKworLi4KKworLi4gYnBvOiAxMDQwNgorLi4gZGF0ZTogODMyNAorLi4gbm9uY2U6IEhLU2VmUworLi4gc2VjdGlvbjogSURMRQorCitFbmFibGUgUnN0cmlwIElETEUgZXh0ZW5zaW9uIG9uIE9TWCAoanVzdCBsaWtlIG9uIG90aGVyIHBsYXRmb3JtcykuCisKKy4uCisKKy4uIGJwbzogNjM3OAorLi4gZGF0ZTogODMyMworLi4gbm9uY2U6IFZyX3gzVworLi4gc2VjdGlvbjogSURMRQorCitGdXJ0aGVyIGFkanVzdCBpZGxlLmJhdCB0byBzdGFydCBhc3NvY2lhdGVkIFB5dGhvbgorCisuLgorCisuLiBicG86IDExODk2CisuLiBkYXRlOiA4MzIyCisuLiBub25jZTogWFB3ZGt3CisuLiBzZWN0aW9uOiBJRExFCisKK1NhdmUgb24gQ2xvc2UgZmFpbGVkIGRlc3BpdGUgc2VsZWN0aW5nICJZZXMiIGluIGRpYWxvZy4KKworLi4KKworLi4gYnBvOiA0Njc2CisuLiBkYXRlOiA4MzIxCisuLiBub25jZTogcVFrdWVkCisuLiBzZWN0aW9uOiBJRExFCisKKzxIb21lPiB0b2dnbGUgZmFpbGluZyBvbiBUayA4LjUsIGNhdXNpbmcgSURMRSBleGl0cyBhbmQgc3RyYW5nZSBzZWxlY3Rpb24KK2JlaGF2aW9yLiAgSW1wcm92ZSBzZWxlY3Rpb24gZXh0ZW5zaW9uIGJlaGF2aW91ci4KKworLi4KKworLi4gYnBvOiAzODUxCisuLiBkYXRlOiA4MzIwCisuLiBub25jZTogaXk2RU5YCisuLiBzZWN0aW9uOiBJRExFCisKKzxIb21lPiB0b2dnbGUgbm9uLWZ1bmN0aW9uYWwgd2hlbiBOdW1Mb2NrIHNldCBvbiBXaW5kb3dzLgorCisuLgorCisuLiBicG86IDExMjE3CisuLiBkYXRlOiA4MzE5CisuLiBub25jZTogbUlFd2ZjCisuLiBzZWN0aW9uOiBCdWlsZAorCitGb3IgNjQtYml0LzMyLWJpdCBNYWMgT1MgWCB1bml2ZXJzYWwgZnJhbWV3b3JrIGJ1aWxkcywgZW5zdXJlICJtYWtlIGluc3RhbGwiCitjcmVhdGVzIHN5bWxpbmtzIGluIC0tcHJlZml4IGJpbiBmb3IgdGhlICItMzIiIGZpbGVzIGluIHRoZSBmcmFtZXdvcmsgYmluCitkaXJlY3RvcnkgbGlrZSB0aGUgaW5zdGFsbGVyIGRvZXMuCisKKy4uCisKKy4uIGJwbzogMTE0MTEKKy4uIGRhdGU6IDgzMTgKKy4uIG5vbmNlOiAxbTlmanYKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeCAnbWFrZSBERVNURElSPScgd2l0aCBhIHJlbGF0aXZlIGRlc3RpbmF0aW9uLgorCisuLgorCisuLiBicG86IDEwNzA5CisuLiBkYXRlOiA4MzE3CisuLiBub25jZTogUXBMQ0ZrCisuLiBzZWN0aW9uOiBCdWlsZAorCitBZGQgdXBkYXRlZCBBSVggbm90ZXMgaW4gTWlzYy9SRUFETUUuQUlYLgorCisuLgorCisuLiBicG86IDExMTg0CisuLiBkYXRlOiA4MzE2CisuLiBub25jZTogc0dmQVh3CisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggbGFyZ2UtZmlsZSBzdXBwb3J0IG9uIEFJWC4KKworLi4KKworLi4gYnBvOiA5NDEzNDYKKy4uIGRhdGU6IDgzMTUKKy4uIG5vbmNlOiBoZU1BREQKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeCBicm9rZW4gc2hhcmVkIGxpYnJhcnkgYnVpbGQgb24gQUlYLgorCisuLgorCisuLiBicG86IDExMjY4CisuLiBkYXRlOiA4MzE0CisuLiBub25jZTogTGdja2E2CisuLiBzZWN0aW9uOiBCdWlsZAorCitQcmV2ZW50IE1hYyBPUyBYIEluc3RhbGxlciBmYWlsdXJlIGlmIERvY3VtZW50YXRpb24gcGFja2FnZSBoYWQgcHJldmlvdXNseQorYmVlbiBpbnN0YWxsZWQuCisKKy4uCisKKy4uIGJwbzogMTEwNzkKKy4uIGRhdGU6IDgzMTMKKy4uIG5vbmNlOiBZMEhoNVYKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1RoZSAvQXBwbGljYXRpb25zL1B5dGhvbiB4LnggZm9sZGVyIGNyZWF0ZWQgYnkgdGhlIE1hYyBPUyBYIGluc3RhbGxlcnMgbm93CitpbmNsdWRlcyBhIGxpbmsgdG8gdGhlIGluc3RhbGxlZCBkb2N1bWVudGF0aW9uLgorCisuLgorCisuLiBicG86IDExMDU0CisuLiBkYXRlOiA4MzEyCisuLiBub25jZTogQk4zc1lVCisuLiBzZWN0aW9uOiBCdWlsZAorCitBbGxvdyBNYWMgT1MgWCBpbnN0YWxsZXIgYnVpbGRzIHRvIGFnYWluIHdvcmsgb24gMTAuNSB3aXRoIHRoZQorc3lzdGVtLXByb3ZpZGVkIFB5dGhvbi4KKworLi4KKworLi4gYnBvOiAxMDg0MworLi4gZGF0ZTogODMxMQorLi4gbm9uY2U6IEVkeUZSNgorLi4gc2VjdGlvbjogQnVpbGQKKworVXBkYXRlIHRoaXJkLXBhcnR5IGxpYnJhcnkgdmVyc2lvbnMgdXNlZCBpbiBPUyBYIDMyLWJpdCBpbnN0YWxsZXIgYnVpbGRzOgorYnppcDIgMS4wLjYsIHJlYWRsaW5lIDYuMS4yLCBTUUxpdGUgMy43LjQgKHdpdGggRlRTMy9GVFM0IGFuZCBSVFJFRQorZW5hYmxlZCksIGFuZCBuY3Vyc2VzdyA1LjUgKHdpZGUtY2hhciBzdXBwb3J0IGVuYWJsZWQpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDgzMTAKKy4uIG5vbmNlOiBuc1kzeFUKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0Rvbid0IHJ1biBwZ2VuIHR3aWNlIHdoZW4gdXNpbmcgbWFrZSAtai4KKworLi4KKworLi4gYnBvOiA3NzE2CisuLiBkYXRlOiA4MzA5CisuLiBub25jZTogS2taLTJiCisuLiBzZWN0aW9uOiBCdWlsZAorCitVbmRlciBTb2xhcmlzLCBkb24ndCBhc3N1bWUgZXhpc3RlbmNlIG9mIC91c3IveHBnNC9iaW4vZ3JlcCBpbiB0aGUgY29uZmlndXJlCitzY3JpcHQgYnV0IHVzZSAkR1JFUCBpbnN0ZWFkLiAgUGF0Y2ggYnkgRmFiaWFuIEdyb2ZmZW4uCisKKy4uCisKKy4uIGJwbzogMTA0NzUKKy4uIGRhdGU6IDgzMDgKKy4uIG5vbmNlOiBMVktTYkIKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0Rvbid0IGhhcmRjb2RlIGNvbXBpbGVycyBmb3IgTERTSEFSRUQvTERDWFhTSEFSRUQgb24gTmV0QlNEIGFuZCBEcmFnb25GbHkKK0JTRC4gIFBhdGNoIGJ5IE5pY29sYXMgSm9seS4KKworLi4KKworLi4gYnBvOiAxMDY1NQorLi4gZGF0ZTogODMwNworLi4gbm9uY2U6IFdhdUxKcAorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IHRoZSBidWlsZCBvbiBQb3dlclBDIG9uIExpbnV4IHdpdGggR0NDIHdoZW4gYnVpbGRpbmcgd2l0aCB0aW1lc3RhbXAKK3Byb2ZpbGluZyAoLS13aXRoLXRzYyk6IHRoZSBwcmVwcm9jZXNzb3IgdGVzdCBmb3IgdGhlIFBvd2VyUEMgc3VwcG9ydCBub3cKK2xvb2tzIGZvciAiX19wb3dlcnBjX18iIGFzIHdlbGwgYXMgIl9fcHBjX18iOiB0aGUgbGF0dGVyIHNlZW1zIHRvIG9ubHkgYmUKK3ByZXNlbnQgb24gT1MgWDsgdGhlIGZvcm1lciBpcyB0aGUgY29ycmVjdCBvbmUgZm9yIExpbnV4IHdpdGggR0NDLgorCisuLgorCisuLiBicG86IDEwOTkKKy4uIGRhdGU6IDgzMDYKKy4uIG5vbmNlOiBLaWtPc3UKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeCB0aGUgYnVpbGQgb24gTWFjT1NYIHdoZW4gYnVpbGRpbmcgYSBmcmFtZXdvcmsgd2l0aCBweWRlYnVnIHVzaW5nIEdDQworNC4wLgorCisuLgorCisuLiBicG86IDExMTY0CisuLiBkYXRlOiA4MzA1CisuLiBub25jZTogdzJucllVCisuLiBzZWN0aW9uOiBUZXN0cworCitSZW1vdmUgb2Jzb2xldGUgYWxsbm9kZXMgdGVzdCBmcm9tIG1pbmlkb20gdGVzdC4KKworLi4KKworLi4gYnBvOiAxMjIwNQorLi4gZGF0ZTogODMwNAorLi4gbm9uY2U6IGdWaFdtQworLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3Rfc3VicHJvY2VzcyBmYWlsdXJlIGR1ZSB0byB1bmluc3RhbGxlZCB0ZXN0IGRhdGEuCisKKy4uCisKKy4uIGJwbzogNTcyMworLi4gZGF0ZTogODMwMworLi4gbm9uY2U6IExmZzFPWAorLi4gc2VjdGlvbjogVGVzdHMKKworSW1wcm92ZSBqc29uIHRlc3RzIHRvIGJlIGV4ZWN1dGVkIHdpdGggYW5kIHdpdGhvdXQgYWNjZWxlcmF0aW9ucy4KKworLi4KKworLi4gYnBvOiAxMTkxMAorLi4gZGF0ZTogODMwMgorLi4gbm9uY2U6IEhoUXg0OQorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3RfaGVhcHEgdG8gc2tpcCB0aGUgQyB0ZXN0cyB3aGVuIF9oZWFwcSBpcyBtaXNzaW5nLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDgzMDEKKy4uIG5vbmNlOiBpOFFPWGUKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCB0ZXN0X3N0YXJ0ZmlsZSB0byB3YWl0IGZvciBjaGlsZCBwcm9jZXNzIHRvIHRlcm1pbmF0ZSBiZWZvcmUgZmluaXNoaW5nLgorCisuLgorCisuLiBicG86IDExNzE5CisuLiBkYXRlOiA4MzAwCisuLiBub25jZTogb2phbVVMCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggbWVzc2FnZSBhYm91dCB1bmV4cGVjdGVkIHRlc3RfbXNpbGliIHNraXAgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgorUGF0Y2ggYnkgTmFkZWVtIFZhd2RhLgorCisuLgorCisuLiBicG86IDcxMDgKKy4uIGRhdGU6IDgyOTkKKy4uIG5vbmNlOiB4YUYzT0UKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCB0ZXN0X2NvbW1hbmRzIHRvIG5vdCBmYWlsIHdoZW4gc3BlY2lhbCBhdHRyaWJ1dGVzICgnQCcgb3IgJy4nKSBhcHBlYXIgaW4KKydscyAtbCcgb3V0cHV0LgorCisuLgorCisuLiBicG86IDExNDkwCisuLiBkYXRlOiA4Mjk4CisuLiBub25jZTogSTg2R3h6CisuLiBzZWN0aW9uOiBUZXN0cworCit0ZXN0X3N1YnByb2Nlc3M6dGVzdF9sZWFraW5nX2Zkc19vbl9lcnJvciBubyBsb25nZXIgZ2l2ZXMgYSBmYWxzZSBwb3NpdGl2ZQoraWYgdGhlIGxhc3QgZGlyZWN0b3J5IGluIHRoZSBwYXRoIGlzIGluYWNjZXNzaWJsZS4KKworLi4KKworLi4gYnBvOiAxMDgyMgorLi4gZGF0ZTogODI5NworLi4gbm9uY2U6IFAwVnJJWgorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3RfcG9zaXg6dGVzdF9nZXRncm91cHMgZmFpbHVyZSB1bmRlciBTb2xhcmlzLiAgUGF0Y2ggYnkgUm9zcworTGFnZXJ3YWxsLgorCisuLgorCisuLiBicG86IDYyOTMKKy4uIGRhdGU6IDgyOTYKKy4uIG5vbmNlOiBKN3VyMVUKKy4uIHNlY3Rpb246IFRlc3RzCisKK0hhdmUgcmVncnRlc3QucHkgZWNobyBiYWNrIHN5cy5mbGFncy4gIFRoaXMgaXMgZG9uZSBieSBkZWZhdWx0IGluIHdob2xlIHJ1bnMKK2FuZCBlbmFibGVkIHNlbGVjdGl2ZWx5IHVzaW5nIGBgLS1oZWFkZXJgYCB3aGVuIHJ1bm5pbmcgYW4gZXhwbGljaXQgbGlzdCBvZgordGVzdHMuICBPcmlnaW5hbCBwYXRjaCBieSBDb2xsaW4gV2ludGVyLgorCisuLgorCisuLiBicG86IDc3NTk2NAorLi4gZGF0ZTogODI5NQorLi4gbm9uY2U6IDdhMlhMTgorLi4gc2VjdGlvbjogVGVzdHMKKwordGVzdF9ncnAgbm93IHNraXBzIFlQL05JUyBlbnRyaWVzIGluc3RlYWQgb2YgZmFpbGluZyB3aGVuIGVuY291bnRlcmluZyB0aGVtLgorCisuLgorCisuLiBicG86IDcxMTAKKy4uIGRhdGU6IDgyOTQKKy4uIG5vbmNlOiBTeVFyZUoKKy4uIHNlY3Rpb246IFRlc3RzCisKK3JlZ3J0ZXN0IG5vdyBzZW5kcyB0ZXN0IGZhaWx1cmUgcmVwb3J0cyBhbmQgc2luZ2xlLWZhaWx1cmUgdHJhY2ViYWNrcyB0bworc3RkZXJyIHJhdGhlciB0aGFuIHN0ZG91dC4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy4zcmMxLnJzdCBiL01pc2MvTkVXUy5kLzIuNy4zcmMxLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmRjMTlmCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43LjNyYzEucnN0CkBAIC0wLDAgKzEsMTkxNiBAQAorLi4gYnBvOiAxMzAyMAorLi4gZGF0ZTogODY1NgorLi4gbm9uY2U6IDd5NTFQSgorLi4gcmVsZWFzZSBkYXRlOiAyMDEyLTAyLTIzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYSByZWZlcmVuY2UgbGVhayB3aGVuIGFsbG9jYXRpbmcgYSBzdHJ1Y3RzZXF1ZW5jZSBvYmplY3QgZmFpbHMuICBQYXRjaAorYnkgU3VtYW4gU2FoYS4KKworLi4KKworLi4gYnBvOiAxMzcwMworLi4gZGF0ZTogODY1NQorLi4gbm9uY2U6IDhGeWxxWQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworb0NFUlQtMjAxMS0wMDM6IGFkZCAtUiBjb21tYW5kLWxpbmUgb3B0aW9uIGFuZCBQWVRIT05IQVNIU0VFRCBlbnZpcm9ubWVudAordmFyaWFibGUsIHRvIHByb3ZpZGUgYW4gb3B0LWluIHdheSB0byBwcm90ZWN0IGFnYWluc3QgZGVuaWFsIG9mIHNlcnZpY2UKK2F0dGFja3MgZHVlIHRvIGhhc2ggY29sbGlzaW9ucyB3aXRoaW4gdGhlIGRpY3QgYW5kIHNldCB0eXBlcy4gIFBhdGNoIGJ5CitEYXZpZCBNYWxjb2xtLCBiYXNlZCBvbiB3b3JrIGJ5IFZpY3RvciBTdGlubmVyLgorCisuLgorCisuLiBicG86IDExMjM1CisuLiBkYXRlOiA4NjU0CisuLiBub25jZTogNnd6a3YtCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggT3ZlcmZsb3dFcnJvciB3aGVuIHRyeWluZyB0byBpbXBvcnQgYSBzb3VyY2UgZmlsZSB3aG9zZSBtb2RpZmljYXRpb24KK3RpbWUgZG9lc24ndCBmaXQgaW4gYSAzMi1iaXQgdGltZXN0YW1wLgorCisuLgorCisuLiBicG86IDExNjM4CisuLiBkYXRlOiA4NjUzCisuLiBub25jZTogTS1ENzBaCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitVbmljb2RlIHN0cmluZ3MgaW4gJ25hbWUnIGFuZCAndmVyc2lvbicgbm8gbG9uZ2VyIGNhdXNlIFVuaWNvZGVEZWNvZGVFcnJvcnMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODY1MgorLi4gbm9uY2U6IDJKNGtSTAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHRoZSBmaXggZm9yIGlzc3VlICMxMjE0OTogaXQgd2FzIGluY29ycmVjdCwgYWx0aG91Z2ggaXQgaGFkIHRoZSBzaWRlCitlZmZlY3Qgb2YgYXBwZWFyaW5nIHRvIHJlc29sdmUgdGhlIGlzc3VlLiAgVGhhbmtzIHRvIE1hcmsgU2hhbm5vbiBmb3IKK25vdGljaW5nLgorCisuLgorCisuLiBicG86IDEzNTQ2CisuLiBkYXRlOiA4NjUxCisuLiBub25jZTogaU5OWndLCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBhbiBvdmVyZmxvdyBpc3N1ZSB0aGF0IGNvdWxkIGNyYXNoIHRoZSBpbnRlcHJldGVyIHdoZW4gY2FsbGluZworc3lzLnNldHJlY3Vyc2lvbmxpbWl0KCgxPDwzMSktMSkuCisKKy4uCisKKy4uIGJwbzogMTMzMzMKKy4uIGRhdGU6IDg2NTAKKy4uIG5vbmNlOiBqa3pqUE4KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSBVVEYtNyBkZWNvZGVyIG5vdyBhY2NlcHRzIGxvbmUgc3Vycm9nYXRlcyAodGhlIGVuY29kZXIgYWxyZWFkeSBhY2NlcHRzCit0aGVtKS4KKworLi4KKworLi4gYnBvOiAxMDUxOQorLi4gZGF0ZTogODY0OQorLi4gbm9uY2U6IHZuUFVoWgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQXZvaWQgdW5uZWNlc3NhcnkgcmVjdXJzaXZlIGZ1bmN0aW9uIGNhbGxzIGluIHNldG9iamVjdC5jLgorCisuLgorCisuLiBicG86IDEzMjY4CisuLiBkYXRlOiA4NjQ4CisuLiBub25jZTogMWFkZDFBCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggdGhlIGFzc2VydCBzdGF0ZW1lbnQgd2hlbiBhIHR1cGxlIGlzIHBhc3NlZCBhcyB0aGUgbWVzc2FnZS4KKworLi4KKworLi4gYnBvOiAxMzAxOAorLi4gZGF0ZTogODY0NworLi4gbm9uY2U6IFdSeVN4bgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHJlZmVyZW5jZSBsZWFrcyBpbiBlcnJvciBwYXRocyBpbiBkaWN0b2JqZWN0LmMuIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCisKKy4uCisKKy4uIGJwbzogMTI2MDQKKy4uIGRhdGU6IDg2NDYKKy4uIG5vbmNlOiBkRGVndXgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1ZUUkFDRSBtYWNybyBleHBhbmRlZCB0byBuby1vcCBpbiBfc3JlLmMgdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuIFBhdGNoCitieSBKb3NoIFRyaXBsZXR0IGFuZCBQZXRyaSBMZWh0aW5lbi4KKworLi4KKworLi4gYnBvOiA3ODMzCisuLiBkYXRlOiA4NjQ1CisuLiBub25jZTogTmNTbm5KCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitFeHRlbnNpb24gbW9kdWxlcyBidWlsdCB1c2luZyBkaXN0dXRpbHMgb24gV2luZG93cyB3aWxsIG5vIGxvbmdlciBpbmNsdWRlIGEKKyJtYW5pZmVzdCIgdG8gcHJldmVudCB0aGVtIGZhaWxpbmcgYXQgaW1wb3J0IHRpbWUgaW4gc29tZSBlbWJlZGRlZAorc2l0dWF0aW9ucy4KKworLi4KKworLi4gYnBvOiAxMzE4NgorLi4gZGF0ZTogODY0NAorLi4gbm9uY2U6IDh4LUlLUAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IF9fZGVsaXRlbV9fIG9uIG9sZC1zdHlsZSBpbnN0YW5jZXMgd2hlbiBpbnZva2VkIHRocm91Z2gKK1B5U2VxdWVuY2VfRGVsSXRlbS4KKworLi4KKworLi4gYnBvOiAxMzE1NgorLi4gZGF0ZTogODY0MworLi4gbm9uY2U6IFlRX29IQQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmV2ZXJ0IHRoZSBwYXRjaCBmb3IgaXNzdWUgIzEwNTE3IChyZXNldCBUTFMgdXBvbiBmb3JrKCkpLCB3aGljaCB3YXMgb25seQorcmVsZXZhbnQgZm9yIHRoZSBuYXRpdmUgcHRocmVhZCBUTFMgaW1wbGVtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogNzczMgorLi4gZGF0ZTogODY0MgorLi4gbm9uY2U6IFN1NDVsbworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgY3Jhc2ggb24gaW1wb3J0aW5nIGEgbW9kdWxlIGlmIGEgZGlyZWN0b3J5IGhhcyB0aGUgc2FtZSBuYW1lIHRoYW4gYQorUHl0aG9uIG1vZHVsZSAoZS5nLiAiX19pbml0X18ucHkiKTogZG9uJ3QgY2xvc2UgdGhlIGZpbGUgdHdpY2UuCisKKy4uCisKKy4uIGJwbzogMTI5NzMKKy4uIGRhdGU6IDg2NDEKKy4uIG5vbmNlOiBpMzZ5UGoKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBvdmVyZmxvdyBjaGVja3MgdGhhdCBpbnZva2VkIHVuZGVmaW5lZCBiZWhhdmlvdXIgaW4gaW50Ll9fcG93X18uICBUaGVzZQorb3ZlcmZsb3cgY2hlY2tzIHdlcmUgY2F1c2luZyBpbnQuX19wb3dfXyB0byBwcm9kdWNlIGluY29ycmVjdCByZXN1bHRzIHdpdGgKK3JlY2VudCB2ZXJzaW9ucyBvZiBDbGFuZywgYXMgYSByZXN1bHQgb2YgdGhlIGNvbXBpbGVyIG9wdGltaXppbmcgdGhlIGNoZWNrCithd2F5LiAgQWxzbyBmaXggc2ltaWxhciBvdmVyZmxvdyBjaGVja3MgaW4gbGlzdF9yZXBlYXQgKGxpc3RvYmplY3QuYykgYW5kCitpc2xpY2VfbmV4dCAoaXRlcnRvb2xzbW9kdWxlLmMpLiAgVGhlc2UgYnVncyBjYXVzZWQgdGVzdCBmYWlsdXJlcyB3aXRoCityZWNlbnQgdmVyc2lvbnMgb2YgQ2xhbmcuCisKKy4uCisKKy4uIGJwbzogMTIyNjYKKy4uIGRhdGU6IDg2NDAKKy4uIG5vbmNlOiBTaWZzZ0QKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBzdHIuY2FwaXRhbGl6ZSgpIHRvIGNvcnJlY3RseSB1cHBlcmNhc2UvbG93ZXJjYXNlIHRpdGxlY2FzZWQgYW5kIGNhc2VkCitub24tbGV0dGVyIGNoYXJhY3RlcnMuCisKKy4uCisKKy4uIGJwbzogMTI2MTAKKy4uIGRhdGU6IDg2MzkKKy4uIG5vbmNlOiBwcFJpNUkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1ZlcmlmeSB0aGF0IHVzZXIgZ2VuZXJhdGVkIEFTVCBoYXMgY29ycmVjdCBzdHJpbmcgYW5kIGlkZW50aWZpZXIgdHlwZXMKK2JlZm9yZSBjb21waWxpbmcuIChTZWUgYWxzbzogYnBvLTEyNjA5KQorCisuLgorCisuLiBicG86IDExNjI3CisuLiBkYXRlOiA4NjM4CisuLiBub25jZTogc2ZSd19FCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggc2VnZmF1bHQgd2hlbiBfX25ld19fIG9uIGFuIGV4Y2VwdGlvbiByZXR1cm5zIGEgbm9uLWV4Y2VwdGlvbiBjbGFzcy4KKworLi4KKworLi4gYnBvOiAxMjE0OQorLi4gZGF0ZTogODYzNworLi4gbm9uY2U6IHRwLVBURgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVXBkYXRlIHRoZSBtZXRob2QgY2FjaGUgYWZ0ZXIgYSB0eXBlJ3MgZGljdGlvbm5hcnkgZ2V0cyBjbGVhcmVkIGJ5IHRoZQorZ2FyYmFnZSBjb2xsZWN0b3IuICBUaGlzIGZpeGVzIGEgc2VnZmF1bHQgd2hlbiBhbiBpbnN0YW5jZSBhbmQgaXRzIHR5cGUgZ2V0CitjYXVnaHQgaW4gYSByZWZlcmVuY2UgY3ljbGUsIGFuZCB0aGUgaW5zdGFuY2UncyBkZWFsbG9jYXRvciBjYWxscyBvbmUgb2YgdGhlCittZXRob2RzIG9uIHRoZSB0eXBlIChlLmcuIHdoZW4gc3ViY2xhc3NpbmcgSU9CYXNlKS4gIERpYWdub3NpcyBhbmQgcGF0Y2ggYnkKK0RhdmlkZSBSaXp6by4KKworLi4KKworLi4gYnBvOiAxMjUwMQorLi4gZGF0ZTogODYzNgorLi4gbm9uY2U6IDI1UGRXMQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmVtb3ZlIFB5M2sgd2FybmluZyBmb3IgY2FsbGFibGUuIGNhbGxhYmxlKCkgaXMgc3VwcG9ydGVkIGFnYWluIGluIFB5dGhvbgorMy4yLgorCisuLgorCisuLiBicG86IDk2MTEKKy4uIGRhdGU6IDg2MzUKKy4uIG5vbmNlOiB0UUVtdWgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpbGVJTy5yZWFkKCksIEZpbGVJTy5yZWFkaW50bygpLCBGaWxlSU8ud3JpdGUoKSBhbmQgb3Mud3JpdGUoKSBjbGFtcCB0aGUKK2xlbmd0aCB0byBJTlRfTUFYIG9uIFdpbmRvd3MuIChTZWUgYWxzbzogYnBvLTkwMTUpCisKKy4uCisKKy4uIGJwbzogMTE5NQorLi4gZGF0ZTogODYzNAorLi4gbm9uY2U6IFRwX0o4WQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworbXlfZmdldHMoKSBub3cgYWx3YXlzIGNsZWFycyBlcnJvcnMgYmVmb3JlIGNhbGxpbmcgZmdldHMoKS4gRml4IHRoZQorZm9sbG93aW5nIGNhc2U6IHN5cy5zdGRpbi5yZWFkKCkgc3RvcHBlZCB3aXRoIENUUkwrZCAoZW5kIG9mIGZpbGUpLAorcmF3X2lucHV0KCkgaW50ZXJydXB0ZWQgYnkgQ1RSTCtjLgorCisuLgorCisuLiBicG86IDEwODYwCisuLiBkYXRlOiA4NjMzCisuLiBub25jZTogX3czS3ZsCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitodHRwbGliIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBhbiBlbXB0eSBwb3J0IGFmdGVyIHBvcnQgZGVsaW1pdGVyIGluIFVSTHMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODYzMgorLi4gbm9uY2U6IGRoN1hUNworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZGljdF9wcm94eSBvYmplY3RzIG5vdyBkaXNwbGF5IHRoZWlyIGNvbnRlbnRzIHJhdGhlciB0aGFuIGp1c3QgdGhlIGNsYXNzCituYW1lLgorCisuLgorCisuLiBicG86IDgwMzMKKy4uIGRhdGU6IDg2MzEKKy4uIG5vbmNlOiB2Wi1BV1UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc3FsaXRlMzogRml4IDY0LWJpdCBpbnRlZ2VyIGhhbmRsaW5nIGluIHVzZXIgZnVuY3Rpb25zIG9uIDMyLWJpdAorYXJjaGl0ZWN0dXJlcy4gSW5pdGlhbCBwYXRjaCBieSBQaGlsaXBwZSBEZXZhbGtlbmVlci4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA4NjMwCisuLiBub25jZTogQXBkX3h6CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0hUTUxQYXJzZXIgaXMgbm93IGFibGUgdG8gaGFuZGxlIHNsYXNoZXMgaW4gdGhlIHN0YXJ0IHRhZy4KKworLi4KKworLi4gYnBvOiAxNDAwMQorLi4gZGF0ZTogODYyOQorLi4gbm9uY2U6IFphX2gzOAorLi4gc2VjdGlvbjogTGlicmFyeQorCitDVkUtMjAxMi0wODQ1OiB4bWxycGM6IEZpeCBhbiBlbmRsZXNzIGxvb3AgaW4gU2ltcGxlWE1MUlBDU2VydmVyIHVwb24KK21hbGZvcm1lZCBQT1NUIHJlcXVlc3QuCisKKy4uCisKKy4uIGJwbzogMjQ4OQorLi4gZGF0ZTogODYyOAorLi4gbm9uY2U6IEVFTlAxSgorLi4gc2VjdGlvbjogTGlicmFyeQorCitwdHkuc3Bhd24gY291bGQgY29uc3VtZSAxMDAlIGNwdSB3aGVuIGl0IGVuY291bnRlcmVkIGFuIEVPRi4KKworLi4KKworLi4gYnBvOiAxMzAxNAorLi4gZGF0ZTogODYyNworLi4gbm9uY2U6IGJmWkxIUworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBwb3NzaWJsZSByZWZlcmVuY2UgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKS4KKworLi4KKworLi4gYnBvOiAxMzk4NworLi4gZGF0ZTogODYyNgorLi4gbm9uY2U6IHJaTEREbworLi4gc2VjdGlvbjogTGlicmFyeQorCitIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBFT0ZzIGluIHRoZSBtaWRkbGUgb2YgYSBjb25zdHJ1Y3QgYW5kCittYWxmb3JtZWQgc3RhcnQgdGFncy4KKworLi4KKworLi4gYnBvOiAxMzAxNQorLi4gZGF0ZTogODYyNQorLi4gbm9uY2U6IGJ4d3M2UworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBwb3NzaWJsZSByZWZlcmVuY2UgbGVhayBpbiBkZWZhdWx0ZGljdC5fX3JlcHJfXy4gUGF0Y2ggYnkgU3VtYW4gU2FoYS4KKworLi4KKworLi4gYnBvOiAxMzk3OQorLi4gZGF0ZTogODYyNAorLi4gbm9uY2U6IFEwY2kydworLi4gc2VjdGlvbjogTGlicmFyeQorCitBIGJ1ZyBpbiBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgdGhhdCBjYXVzZWQgdGhlIHdyb25nIGxpYnJhcnkgbmFtZSB0byBiZQorcmV0dXJuZWQgaGFzIGJlZW4gZml4ZWQuCisKKy4uCisKKy4uIGJwbzogMTMyNjExMworLi4gZGF0ZTogODYyMworLi4gbm9uY2U6IFF2Ri1YTAorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMnIGJ1aWxkX2V4dCBjb21tYW5kIC0tbGlicmFyaWVzIG9wdGlvbiBub3cgY29ycmVjdGx5IHBhcnNlcworbXVsdGlwbGUgdmFsdWVzIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIG9yIGNvbW1hcy4KKworLi4KKworLi4gYnBvOiAxMzk5MworLi4gZGF0ZTogODYyMgorLi4gbm9uY2U6IDRnM3ozUAorLi4gc2VjdGlvbjogTGlicmFyeQorCitIVE1MUGFyc2VyIGlzIG5vdyBhYmxlIHRvIGhhbmRsZSBicm9rZW4gZW5kIHRhZ3MuCisKKy4uCisKKy4uIGJwbzogMTM5NjAKKy4uIGRhdGU6IDg2MjEKKy4uIG5vbmNlOiBnMFRqd1oKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSFRNTFBhcnNlciBpcyBub3cgYWJsZSB0byBoYW5kbGUgYnJva2VuIGNvbW1lbnRzLgorCisuLgorCisuLiBicG86IDk3NTAKKy4uIGRhdGU6IDg2MjAKKy4uIG5vbmNlOiBDc1F5Vk0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHNxbGl0ZTMuQ29ubmVjdGlvbi5pdGVyZHVtcCBvbiB0YWJsZXMgYW5kIGZpZWxkcyB3aXRoIGEgbmFtZSB0aGF0IGlzIGEKK2tleXdvcmQgb3IgY29udGFpbnMgcXVvdGVzLiBQYXRjaCBieSBNYXJrbyBLb2h0YWxhLgorCisuLgorCisuLiBicG86IDEzOTk0CisuLiBkYXRlOiA4NjE5CisuLiBub25jZTogcG5MckVCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0VhcmxpZXIgcGFydGlhbCByZXZlcnQgb2YgRGlzdHV0aWxzIGVuaGFuY2VtZW50cyBpbiAyLjcgaGFzIGxlZnQgdHdvCit2ZXJzaW9ucyBvZiBjdXN0b21pemVfY29tcGlsZXIsIHRoZSBvcmlnaW5hbCBpbiBkaXN0dXRpbHMuc3lzY29uZmlnIGFuZAorYW5vdGhlciBjb3B5IGluIGRpc3R1dGlscy5jY29tcGlsZXIsIHdpdGggc29tZSBwYXJ0cyBvZiBkaXN0dXRpbHMgY2FsbGluZworb25lIGFuZCBvdGhlcnMgdXNpbmcgdGhlIG90aGVyLiBDb21wbGV0ZSB0aGUgcmV2ZXJ0IGJhY2sgdG8gb25seSBoYXZpbmcgb25lCitpbiBkaXN0dXRpbHMuc3lzY29uZmlnIGFzIGlzIHRoZSBjYXNlIGluIDMueC4KKworLi4KKworLi4gYnBvOiAxMzU5MAorLi4gZGF0ZTogODYxOAorLi4gbm9uY2U6IGI2UXZyagorLi4gc2VjdGlvbjogTGlicmFyeQorCitPbiBPUyBYIDEwLjcgYW5kIDEwLjYgd2l0aCBYY29kZSA0LjIsIGJ1aWxkaW5nIERpc3R1dGlscy1iYXNlZCBwYWNrYWdlcyB3aXRoCitDIGV4dGVuc2lvbiBtb2R1bGVzIG1heSBmYWlsIGJlY2F1c2UgQXBwbGUgaGFzIHJlbW92ZWQgZ2NjLTQuMiwgdGhlIHZlcnNpb24KK3VzZWQgdG8gYnVpbGQgcHl0aG9uLm9yZyA2NC1iaXQvMzItYml0IFB5dGhvbnMuICBJZiB0aGUgdXNlciBkb2VzIG5vdAorZXhwbGljaXRseSBvdmVycmlkZSB0aGUgZGVmYXVsdCBDIGNvbXBpbGVyIGJ5IHNldHRpbmcgdGhlIENDIGVudmlyb25tZW50Cit2YXJpYWJsZSwgRGlzdHV0aWxzIHdpbGwgbm93IGF0dGVtcHQgdG8gY29tcGlsZSBleHRlbnNpb24gbW9kdWxlcyB3aXRoIGNsYW5nCitpZiBnY2MtNC4yIGlzIHJlcXVpcmVkIGJ1dCBub3QgZm91bmQuIEFsc28gYXMgYSBjb252ZW5pZW5jZSwgaWYgdGhlIHVzZXIKK2RvZXMgZXhwbGljaXRseSBzZXQgQ0MsIHN1YnN0aXR1dGUgaXRzIHZhbHVlIGFzIHRoZSBkZWZhdWx0IGNvbXBpbGVyIGluIHRoZQorRGlzdHV0aWxzIExEU0hBUkVEIGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZm9yIE9TIFguIChOb3RlLCB0aGUgcHl0aG9uLm9yZworMzItYml0LW9ubHkgUHl0aG9ucyB1c2UgZ2NjLTQuMCBhbmQgdGhlIDEwLjR1IFNESywgbmVpdGhlciBvZiB3aGljaCBhcmUKK2F2YWlsYWJsZSBpbiBYY29kZSA0LiAgVGhpcyBjaGFuZ2UgZG9lcyBub3QgYXR0ZW1wdCB0byBvdmVycmlkZSBzZXR0aW5ncyB0bworc3VwcG9ydCB0aGVpciB1c2Ugd2l0aCBYY29kZSA0LikKKworLi4KKworLi4gYnBvOiA5MDIxCisuLiBkYXRlOiA4NjE3CisuLiBub25jZTogQTBXUnNUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBhbiBpbnRyb2R1Y3Rpb24gdG8gdGhlIGNvcHkgbW9kdWxlIGRvY3VtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogNjAwNQorLi4gZGF0ZTogODYxNgorLi4gbm9uY2U6IGN5OFoyMgorLi4gc2VjdGlvbjogTGlicmFyeQorCitFeGFtcGxlcyBpbiB0aGUgc29ja2V0IGxpYnJhcnkgZG9jdW1lbnRhdGlvbiB1c2Ugc2VuZGFsbCwgd2hlcmUgcmVsZXZhbnQsCitpbnN0ZWFkIHNlbmQgbWV0aG9kLgorCisuLgorCisuLiBicG86IDEwODExCisuLiBkYXRlOiA4NjE1CisuLiBub25jZTogbTZiX1pDCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCByZWN1cnNpdmUgdXNhZ2Ugb2YgY3Vyc29ycy4gSW5zdGVhZCBvZiBjcmFzaGluZywgcmFpc2UgYQorUHJvZ3JhbW1pbmdFcnJvciBub3cuCisKKy4uCisKKy4uIGJwbzogMTM2NzYKKy4uIGRhdGU6IDg2MTQKKy4uIG5vbmNlOiBJd1BnS0wKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSGFuZGxlIHN0cmluZ3Mgd2l0aCBlbWJlZGRlZCB6ZXJvcyBjb3JyZWN0bHkgaW4gc3FsaXRlMy4KKworLi4KKworLi4gYnBvOiAxMzgwNgorLi4gZGF0ZTogODYxMworLi4gbm9uY2U6IFkzNExnMworLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgc2l6ZSBjaGVjayBpbiBhdWRpb29wIGRlY29tcHJlc3Npb24gZnVuY3Rpb25zIHdhcyB0b28gc3RyaWN0IGFuZCBjb3VsZAorcmVqZWN0IHZhbGlkIGNvbXByZXNzZWQgZGF0YS4gIFBhdGNoIGJ5IE9sZWcgUGxha2hvdG55dWsuCisKKy4uCisKKy4uIGJwbzogMTM4ODUKKy4uIGRhdGU6IDg2MTIKKy4uIG5vbmNlOiBmVE5yeWsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ1ZFLTIwMTEtMzM4OTogdGhlIF9zc2wgbW9kdWxlIHdvdWxkIGFsd2F5cyBkaXNhYmxlIHRoZSBDQkMgSVYgYXR0YWNrCitjb3VudGVybWVhc3VyZS4KKworLi4KKworLi4gYnBvOiA2NjMxCisuLiBkYXRlOiA4NjExCisuLiBub25jZTogRnl4aENwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Rpc2FsbG93IHJlbGF0aXZlIGZpbGUgcGF0aHMgaW4gdXJsbGliIHVybG9wZW4gbWV0aG9kcy4KKworLi4KKworLi4gYnBvOiAxMzc4MQorLi4gZGF0ZTogODYxMAorLi4gbm9uY2U6IHhXbk5jWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcmV2ZW50IGd6aXAuR3ppcEZpbGUgZnJvbSB1c2luZyB0aGUgZHVtbXkgZmlsZW5hbWUgcHJvdmlkZWQgYnkgZmlsZSBvYmplY3RzCitvcGVuZWQgd2l0aCBvcy5mZG9wZW4oKS4KKworLi4KKworLi4gYnBvOiAxMzU4OQorLi4gZGF0ZTogODYwOQorLi4gbm9uY2U6IHNRc25FZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc29tZSBzZXJpYWxpemF0aW9uIHByaW1pdGl2ZXMgaW4gdGhlIGFpZmMgbW9kdWxlLiBQYXRjaCBieSBPbGVnCitQbGFraG90bnl1ay4KKworLi4KKworLi4gYnBvOiAxMzgwMworLi4gZGF0ZTogODYwOAorLi4gbm9uY2U6IFduUEl0cworLi4gc2VjdGlvbjogTGlicmFyeQorCitVbmRlciBTb2xhcmlzLCBkaXN0dXRpbHMgZG9lc24ndCBpbmNsdWRlIGJpdG5lc3MgaW4gdGhlIGRpcmVjdG9yeSBuYW1lLgorCisuLgorCisuLiBicG86IDEzNjQyCisuLiBkYXRlOiA4NjA3CisuLiBub25jZTogOHFVZy1HCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VucXVvdGUgYmVmb3JlIGI2NGVuY29kaW5nIHVzZXI6cGFzc3dvcmQgZHVyaW5nIEJhc2ljIEF1dGhlbnRpY2F0aW9uLiBQYXRjaAorY29udHJpYnV0ZWQgYnkgSm9vbmFzIEt1b3JpbGVodG8gYW5kIE1pY2hlbGUgT3Jyw7kuCisKKy4uCisKKy4uIGJwbzogMTM2MzYKKy4uIGRhdGU6IDg2MDYKKy4uIG5vbmNlOiBlV1JmMXQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV2VhayBjaXBoZXJzIGFyZSBub3cgZGlzYWJsZWQgYnkgZGVmYXVsdCBpbiB0aGUgc3NsIG1vZHVsZSAoZXhjZXB0IHdoZW4KK1NTTHYyIGlzIGV4cGxpY2l0bHkgYXNrZWQgZm9yKS4KKworLi4KKworLi4gYnBvOiAxMjc5OAorLi4gZGF0ZTogODYwNQorLi4gbm9uY2U6IGdnZHNtWQorLi4gc2VjdGlvbjogTGlicmFyeQorCitVcGRhdGVkIHRoZSBtaW1ldHlwZXMgZG9jdW1lbnRhdGlvbi4KKworLi4KKworLi4gYnBvOiAxMzYzOQorLi4gZGF0ZTogODYwNAorLi4gbm9uY2U6IFgwejNkbgorLi4gc2VjdGlvbjogTGlicmFyeQorCitBY2NlcHQgdW5pY29kZSBmaWxlbmFtZXMgaW4gdGFyZmlsZS5vcGVuKG1vZGU9Ind8Z3oiKS4KKworLi4KKworLi4gYnBvOiAxNzg1CisuLiBkYXRlOiA4NjAzCisuLiBub25jZTogREtMNUk4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBpbnNwZWN0IGFuZCBweWRvYyB3aXRoIG1pc2JlaGF2aW5nIGRlc2NyaXB0b3JzLgorCisuLgorCisuLiBicG86IDc1MDIKKy4uIGRhdGU6IDg2MDIKKy4uIG5vbmNlOiBsSU15anUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGVxdWFsaXR5IGNvbXBhcmlzb24gZm9yIERvY1Rlc3RDYXNlIGluc3RhbmNlcy4gIFBhdGNoIGJ5IEPDqWRyaWMgS3JpZXIuCisKKy4uCisKKy4uIGJwbzogMTE4NzAKKy4uIGRhdGU6IDg2MDEKKy4uIG5vbmNlOiA4NWJBQjkKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGhyZWFkaW5nOiBQcm9wZXJseSByZWluaXRpYWxpemUgdGhyZWFkcyBpbnRlcm5hbCBsb2NrcyBhbmQgY29uZGl0aW9uCit2YXJpYWJsZXMgdG8gYXZvaWQgZGVhZGxvY2tzIGluIGNoaWxkIHByb2Nlc3Nlcy4KKworLi4KKworLi4gYnBvOiA4MDM1CisuLiBkYXRlOiA4NjAwCisuLiBub25jZTogeXpuX09hCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VybGxpYjogRml4IGEgYnVnIHdoZXJlIHRoZSBjbGllbnQgY291bGQgcmVtYWluIHN0dWNrIGFmdGVyIGEgcmVkaXJlY3Rpb24gb3IKK2FuIGVycm9yLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDg1OTkKKy4uIG5vbmNlOiB4Wk84NzMKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGFyZmlsZS5weTogQ29ycmVjdGx5IGRldGVjdCBiemlwMiBjb21wcmVzc2VkIHN0cmVhbXMgd2l0aCBibG9ja3NpemVzIG90aGVyCit0aGFuIDkwMGsuCisKKy4uCisKKy4uIGJwbzogMTM1NzMKKy4uIGRhdGU6IDg1OTgKKy4uIG5vbmNlOiAyb1BhSmEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGNzdi53cml0ZXIgbm93IHVzZXMgdGhlIHJlcHIoKSBmb3IgZmxvYXRzIHJhdGhlciB0aGFuIHN0cigpLiBUaGlzIGFsbG93cworZmxvYXRzIHRvIHJvdW5kLXRyaXAgd2l0aG91dCBsb3NzIG9mIHByZWNpc2lvbi4KKworLi4KKworLi4gYnBvOiAxMzQzOQorLi4gZGF0ZTogODU5NworLi4gbm9uY2U6IEg4d2RPdAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggbWFueSBlcnJvcnMgaW4gdHVydGxlIGRvY3N0cmluZ3MuCisKKy4uCisKKy4uIGJwbzogMTI4NTYKKy4uIGRhdGU6IDg1OTYKKy4uIG5vbmNlOiA3ZUlmTjgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRW5zdXJlIGNoaWxkIHByb2Nlc3NlcyBkbyBub3QgaW5oZXJpdCB0aGUgcGFyZW50J3MgcmFuZG9tIHNlZWQgZm9yIGZpbGVuYW1lCitnZW5lcmF0aW9uIGluIHRoZSB0ZW1wZmlsZSBtb2R1bGUuICBQYXRjaCBieSBCcmlhbiBIYXJyaW5nLgorCisuLgorCisuLiBicG86IDEzNDU4CisuLiBkYXRlOiA4NTk1CisuLiBub25jZTogRUh5ekVECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIG1lbW9yeSBsZWFrIGluIHRoZSBzc2wgbW9kdWxlIHdoZW4gZGVjb2RpbmcgYSBjZXJ0aWZpY2F0ZSB3aXRoIGEKK3N1YmplY3RBbHROYW1lLiAgUGF0Y2ggYnkgUm9iZXJ0IFhpYW8uCisKKy4uCisKKy4uIGJwbzogMTM0MTUKKy4uIGRhdGU6IDg1OTQKKy4uIG5vbmNlOiBBcDhqb08KKy4uIHNlY3Rpb246IExpYnJhcnkKKworb3MudW5zZXRlbnYoKSBkb2Vzbid0IGlnbm9yZSBlcnJvcnMgYW55bW9yZS4KKworLi4KKworLi4gYnBvOiAxMzMyMgorLi4gZGF0ZTogODU5MworLi4gbm9uY2U6IEVjdDg5cQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggQnVmZmVyZWRXcml0ZXIud3JpdGUoKSB0byBlbnN1cmUgdGhhdCBCbG9ja2luZ0lPRXJyb3IgaXMgcmFpc2VkIHdoZW4gdGhlCit3cmFwcGVkIHJhdyBmaWxlIGlzIG5vbi1ibG9ja2luZyBhbmQgdGhlIHdyaXRlIHdvdWxkIGJsb2NrLiBQcmV2aW91cyBjb2RlCithc3N1bWVkIHRoYXQgdGhlIHJhdyB3cml0ZSgpIHdvdWxkIHJhaXNlIEJsb2NraW5nSU9FcnJvciwgYnV0CitSYXdJT0Jhc2Uud3JpdGUoKSBpcyBkZWZpbmVkIHRvIHJldHVybmVkIE5vbmUgd2hlbiB0aGUgY2FsbCB3b3VsZCBibG9jay4KK1BhdGNoIGJ5IHNidC4KKworLi4KKworLi4gYnBvOiAxMzM1OAorLi4gZGF0ZTogODU5MgorLi4gbm9uY2U6IGtQTzFqYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitIVE1MUGFyc2VyIG5vdyBjYWxscyBoYW5kbGVfZGF0YSBvbmx5IG9uY2UgZm9yIGVhY2ggQ0RBVEEuCisKKy4uCisKKy4uIGJwbzogNDE0NworLi4gZGF0ZTogODU5MQorLi4gbm9uY2U6IHdRYk5jdworLi4gc2VjdGlvbjogTGlicmFyeQorCittaW5pZG9tJ3MgdG9wcmV0dHl4bWwgbm8gbG9uZ2VyIGFkZHMgd2hpdGVzcGFjZSBhcm91bmQgYSB0ZXh0IG5vZGUgd2hlbiBpdAoraXMgdGhlIG9ubHkgY2hpbGQgb2YgYW4gZWxlbWVudC4gIEluaXRpYWwgcGF0Y2ggYnkgRGFuIEtlbmlnc2JlcmcuCisKKy4uCisKKy4uIGJwbzogMTc0NTc2MQorLi4gZGF0ZTogODU5MAorLi4gbm9uY2U6IHpmTzFuZworLi4gc2VjdGlvbjogTGlicmFyeQorCitIVE1MUGFyc2VyIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBub24tdmFsaWQgYXR0cmlidXRlcywgaW5jbHVkaW5nIGFkamFjZW50CithbmQgdW5xdW90ZWQgYXR0cmlidXRlcy4gKFNlZSBhbHNvOiBicG8tNzU1NjcwLCBicG8tMTMzNTcsIGJwby0xMjYyOSwKK2Jwby0xMjAwMzEzKQorCisuLgorCisuLiBicG86IDEzMzczCisuLiBkYXRlOiA4NTg5CisuLiBub25jZTogOHdNM2JQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK211bHRpcHJvY2Vzc2luZy5RdWV1ZS5nZXQoKSBjb3VsZCBzb21ldGltZXMgYmxvY2sgaW5kZWZpbml0ZWx5IHdoZW4gY2FsbGVkCit3aXRoIGEgdGltZW91dC4gIFBhdGNoIGJ5IEFybmF1ZCBZc21hbC4KKworLi4KKworLi4gYnBvOiAzMDY3CisuLiBkYXRlOiA4NTg4CisuLiBub25jZTogeWpNSVU5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0VuaGFuY2UgdGhlIGRvY3VtZW50YXRpb24gYW5kIGRvY3N0cmluZyBvZiBsb2NhbGUuc2V0bG9jYWxlKCkuCisKKy4uCisKKy4uIGJwbzogMTMyNTQKKy4uIGRhdGU6IDg1ODcKKy4uIG5vbmNlOiBDS0p4VDAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IE1haWxkaXIgaW5pdGlhbGl6YXRpb24gc28gdGhhdCBtYWlsZGlyIGNvbnRlbnRzIGFyZSByZWFkIGNvcnJlY3RseS4KKworLi4KKworLi4gYnBvOiAxMzE0MAorLi4gZGF0ZTogODU4NgorLi4gbm9uY2U6IEVndVBTRAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIGRhZW1vbl90aHJlYWRzIGF0dHJpYnV0ZSBvZiBUaHJlYWRpbmdNaXhJbi4KKworLi4KKworLi4gYnBvOiAyODkyCisuLiBkYXRlOiA4NTg1CisuLiBub25jZToga3VndFJxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3ByZXNlcnZlIGl0ZXJwYXJzZSBldmVudHMgaW4gY2FzZSBvZiBTeW50YXhFcnJvci4KKworLi4KKworLi4gYnBvOiA2NzA2NjQKKy4uIGRhdGU6IDg1ODQKKy4uIG5vbmNlOiBkUE16S3QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IEhUTUxQYXJzZXIgdG8gY29ycmVjdGx5IGhhbmRsZSB0aGUgY29udGVudCBvZiBgYDxzY3JpcHQ+Li4uPC9zY3JpcHQ+YGAKK2FuZCBgYDxzdHlsZT4uLi48L3N0eWxlPmBgLgorCisuLgorCisuLiBicG86IDEwODE3CisuLiBkYXRlOiA4NTgzCisuLiBub25jZTogMk5aNHlWCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB1cmxyZXRyaWV2ZSBmdW5jdGlvbiB0byByYWlzZSBDb250ZW50VG9vU2hvcnRFcnJvciBldmVuIHdoZW4gcmVwb3J0aG9vaworaXMgTm9uZS4gUGF0Y2ggYnkgSnlya2kgUHVsbGlhaW5lbi4KKworLi4KKworLi4gYnBvOiA3MzM0CisuLiBkYXRlOiA4NTgyCisuLiBub25jZTogSFZtSjVJCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Nsb3NlIHNvdXJjZSBmaWxlcyBvbiBFbGVtZW50VHJlZS5wYXJzZSBhbmQgaXRlcnBhcnNlLgorCisuLgorCisuLiBicG86IDEzMjMyCisuLiBkYXRlOiA4NTgxCisuLiBub25jZTogV1dGN1FaCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmc6IEltcHJvdmVkIGxvZ2dpbmcgb2YgZXhjZXB0aW9ucyBpbiB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlwbGUKK2VuY29kaW5ncy4KKworLi4KKworLi4gYnBvOiAxMDMzMgorLi4gZGF0ZTogODU4MAorLi4gbm9uY2U6IEU5cUZtaQorLi4gc2VjdGlvbjogTGlicmFyeQorCittdWx0aXByb2Nlc3Npbmc6IGZpeCBhIHJhY2UgY29uZGl0aW9uIHdoZW4gYSBQb29sIGlzIGNsb3NlZCBiZWZvcmUgYWxsIHRhc2tzCitoYXZlIGNvbXBsZXRlZC4KKworLi4KKworLi4gYnBvOiAxNTQ4ODkxCisuLiBkYXRlOiA4NTc5CisuLiBub25jZTogaXNUakFzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBjU3RyaW5nSU8uU3RyaW5nSU8oKSBjb25zdHJ1Y3RvciBub3cgZW5jb2RlcyB1bmljb2RlIGFyZ3VtZW50cyB3aXRoIHRoZQorc3lzdGVtIGRlZmF1bHQgZW5jb2RpbmcganVzdCBsaWtlIHRoZSB3cml0ZSgpIG1ldGhvZCBkb2VzLCBpbnN0ZWFkIG9mCitjb252ZXJ0aW5nIGl0IHRvIGEgcmF3IGJ1ZmZlci4gIFRoaXMgYWxzbyBmaXhlcyBoYW5kbGluZyBvZiB1bmljb2RlIGlucHV0IGluCit0aGUgc2hsZXggbW9kdWxlICgjNjk4OCwgIzExNzApLgorCisuLgorCisuLiBicG86IDkxNjgKKy4uIGRhdGU6IDg1NzgKKy4uIG5vbmNlOiBlTEdXa0wKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbm93IHNtdHBkIGlzIGFibGUgdG8gYmluZCBwcml2aWxlZ2VkIHBvcnQuCisKKy4uCisKKy4uIGJwbzogMTI1MjkKKy4uIGRhdGU6IDg1NzcKKy4uIG5vbmNlOiBUWDJOTkkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4IGNnaS5wYXJzZV9oZWFkZXIgaXNzdWUgb24gc3RyaW5ncyB3aXRoIGRvdWJsZS1xdW90ZXMgYW5kIHNlbWljb2xvbnMKK3RvZ2V0aGVyLiBQYXRjaCBieSBCZW4gRGFybmVsbCBhbmQgUGV0cmkgTGVodGluZW4uCisKKy4uCisKKy4uIGJwbzogNjA5MAorLi4gZGF0ZTogODU3NgorLi4gbm9uY2U6IDhCVmFzSgorLi4gc2VjdGlvbjogTGlicmFyeQorCit6aXBmaWxlIHJhaXNlcyBhIFZhbHVlRXJyb3Igd2hlbiBhIGRvY3VtZW50IHdpdGggYSB0aW1lc3RhbXAgZWFybGllciB0aGFuCisxOTgwIGlzIHByb3ZpZGVkLiBQYXRjaCBjb250cmlidXRlZCBieSBQZXRyaSBMZWh0aW5lbi4KKworLi4KKworLi4gYnBvOiAxMzE5NAorLi4gZGF0ZTogODU3NQorLi4gbm9uY2U6IGIwSFFwdQorLi4gc2VjdGlvbjogTGlicmFyeQorCit6bGliLmNvbXByZXNzb2JqKCkuY29weSgpIGFuZCB6bGliLmRlY29tcHJlc3NvYmooKS5jb3B5KCkgYXJlIG5vdyBhdmFpbGFibGUKK29uIFdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogMTMxMTQKKy4uIGRhdGU6IDg1NzQKKy4uIG5vbmNlOiBxdFM2RVEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBkaXN0dXRpbHMgY29tbWFuZHMgY2hlY2sgYW5kIHJlZ2lzdGVyIHdoZW4gdGhlIGxvbmcgZGVzY3JpcHRpb24gaXMgYQorVW5pY29kZSBzdHJpbmcgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVycy4KKworLi4KKworLi4gYnBvOiA3MzY3CisuLiBkYXRlOiA4NTczCisuLiBub25jZTogMnhvQzQxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwa2d1dGlsLndhbGtfcGF0aHMgdG8gc2tpcCBkaXJlY3RvcmllcyB3aG9zZSBjb250ZW50cyBjYW5ub3QgYmUgcmVhZC4KKworLi4KKworLi4gYnBvOiA3NDI1CisuLiBkYXRlOiA4NTcyCisuLiBub25jZTogZTRnSDJ4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ByZXZlbnQgcHlkb2MgLWsgZmFpbHVyZXMgZHVlIHRvIG1vZHVsZSBpbXBvcnQgZXJyb3JzLiAoQmFja3BvcnQgdG8gMi43IG9mCitleGlzdGluZyAzLnggZml4KQorCisuLgorCisuLiBicG86IDEzMDk5CisuLiBkYXRlOiA4NTcxCisuLiBub25jZTogaGhtYmdwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzcWxpdGUzLkN1cnNvci5sYXN0cm93aWQgdW5kZXIgYSBUdXJraXNoIGxvY2FsZS4gUmVwb3J0ZWQgYW5kIGRpYWdub3NlZAorYnkgVGhvbWFzIEtsdXl2ZXIuCisKKy4uCisKKy4uIGJwbzogNzY4OQorLi4gZGF0ZTogODU3MAorLi4gbm9uY2U6IC0taUgzMQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBbGxvdyBwaWNrbGluZyBvZiBkeW5hbWljYWxseSBjcmVhdGVkIGNsYXNzZXMgd2hlbiB0aGVpciBtZXRhY2xhc3MgaXMKK3JlZ2lzdGVyZWQgd2l0aCBjb3B5X3JlZy4gIFBhdGNoIGJ5IE5pY29sYXMgTS4gVGhpw6lyeSBhbmQgQ3JhaWcgQ2l0cm8uCisKKy4uCisKKy4uIGJwbzogMTMwNTgKKy4uIGRhdGU6IDg1NjkKKy4uIG5vbmNlOiBLSjNrRUEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworb3NzYXVkaW9kZXY6IGZpeCBhIGZpbGUgZGVzY3JpcHRvciBsZWFrIG9uIGVycm9yLiBQYXRjaCBieSBUaG9tYXMgSmFyb3NjaC4KKworLi4KKworLi4gYnBvOiAxMjkzMQorLi4gZGF0ZTogODU2OAorLi4gbm9uY2U6IGI2TGE0RworLi4gc2VjdGlvbjogTGlicmFyeQorCit4bWxycGNsaWIgbm93IGVuY29kZXMgVW5pY29kZSBVUkkgdG8gSVNPLTg4NTktMSwgaW5zdGVhZCBvZiBmYWlsaW5nIHdpdGggYQorVW5pY29kZURlY29kZUVycm9yLgorCisuLgorCisuLiBicG86IDg5MzMKKy4uIGRhdGU6IDg1NjcKKy4uIG5vbmNlOiB5aVZIQ0oKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlzdHV0aWxzJyBQS0ctSU5GTyBmaWxlcyB3aWxsIG5vdyBjb3JyZWN0bHkgcmVwb3J0IE1ldGFkYXRhLVZlcnNpb246IDEuMQoraW5zdGVhZCBvZiAxLjAgaWYgYSBDbGFzc2lmaWVyIG9yIERvd25sb2FkLVVSTCBmaWVsZCBpcyBwcmVzZW50LgorCisuLgorCisuLiBicG86IDgyODYKKy4uIGRhdGU6IDg1NjYKKy4uIG5vbmNlOiA5Z0pBWk4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGRpc3R1dGlscyBjb21tYW5kIHNkaXN0IHdpbGwgcHJpbnQgYSB3YXJuaW5nIG1lc3NhZ2UgaW5zdGVhZCBvZiBjcmFzaGluZword2hlbiBhbiBpbnZhbGlkIHBhdGggaXMgZ2l2ZW4gaW4gdGhlIG1hbmlmZXN0IHRlbXBsYXRlLgorCisuLgorCisuLiBicG86IDEyODQxCisuLiBkYXRlOiA4NTY1CisuLiBub25jZTogVlJUbmZ5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3RhcmZpbGUgdW5uZWNlc3NhcmlseSBjaGVja2VkIHRoZSBleGlzdGVuY2Ugb2YgbnVtZXJpY2FsIHVzZXIgYW5kIGdyb3VwIGlkcworb24gZXh0cmFjdGlvbi4gSWYgb25lIG9mIHRoZW0gZGlkIG5vdCBleGlzdCB0aGUgcmVzcGVjdGl2ZSBpZCBvZiB0aGUgY3VycmVudAordXNlciAoaS5lLiByb290KSB3YXMgdXNlZCBmb3IgdGhlIGZpbGUgYW5kIG93bmVyc2hpcCBpbmZvcm1hdGlvbiB3YXMgbG9zdC4KKworLi4KKworLi4gYnBvOiAxMDk0NgorLi4gZGF0ZTogODU2NAorLi4gbm9uY2U6IEhZZ1J1dAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZGlzdHV0aWxzIGNvbW1hbmRzIGJkaXN0X2R1bWIsIGJkaXN0X3dpbmluc3QgYW5kIGJkaXN0X21zaSBub3cgcmVzcGVjdCBhCistLXNraXAtYnVpbGQgb3B0aW9uIGdpdmVuIHRvIGJkaXN0LgorCisuLgorCisuLiBicG86IDEyMjg3CisuLiBkYXRlOiA4NTYzCisuLiBub25jZTogX2IxSHkzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIHN0YWNrIGNvcnJ1cHRpb24gaW4gb3NzYXVkaW9kZXYgbW9kdWxlIHdoZW4gdGhlIEZEIGlzIGdyZWF0ZXIgdGhhbgorRkRfU0VUU0laRS4KKworLi4KKworLi4gYnBvOiAxMjgzOQorLi4gZGF0ZTogODU2MgorLi4gbm9uY2U6IFlGUXl3ZQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggY3Jhc2ggaW4gemxpYiBtb2R1bGUgZHVlIHRvIHZlcnNpb24gbWlzbWF0Y2guIEZpeCBieSBSaWNoYXJkIE0uIFRldy4KKworLi4KKworLi4gYnBvOiAxMjc4NgorLi4gZGF0ZTogODU2MQorLi4gbm9uY2U6IFd2NThTdAorLi4gc2VjdGlvbjogTGlicmFyeQorCitTZXQgY29tbXVuaWNhdGlvbiBwaXBlcyB1c2VkIGJ5IHN1YnByb2Nlc3MuUG9wZW4gQ0xPRVhFQyB0byBhdm9pZCB0aGVtIGJlaW5nCitpbmhlcml0ZWQgYnkgb3RoZXIgc3VicHJvY2Vzc2VzLgorCisuLgorCisuLiBicG86IDQxMDYKKy4uIGRhdGU6IDg1NjAKKy4uIG5vbmNlOiBDV0hzZlMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG9jY2FzaW9uYWwgZXhjZXB0aW9ucyBwcmludGVkIG91dCBieSBtdWx0aXByb2Nlc3Npbmcgb24gaW50ZXJwcmV0ZXIKK3NodXRkb3duLgorCisuLgorCisuLiBicG86IDExNjU3CisuLiBkYXRlOiA4NTU5CisuLiBub25jZTogSzZOa0tzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzZW5kaW5nIGZpbGUgZGVzY3JpcHRvcnMgb3ZlciAyNTUgb3ZlciBhIG11bHRpcHJvY2Vzc2luZyBQaXBlLgorCisuLgorCisuLiBicG86IDEyMjEzCisuLiBkYXRlOiA4NTU4CisuLiBub25jZTogbkwzQUpFCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIGJ1ZmZlcmluZyBidWcgd2l0aCBpbnRlcmxlYXZlZCByZWFkcyBhbmQgd3JpdGVzIHRoYXQgY291bGQgYXBwZWFyIG9uCitpby5CdWZmZXJlZFJhbmRvbSBzdHJlYW1zLgorCisuLgorCisuLiBicG86IDEyMzI2CisuLiBkYXRlOiA4NTU3CisuLiBub25jZTogb1I4OFN6CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3N5cy5wbGF0Zm9ybSBpcyBub3cgYWx3YXlzICdsaW51eDInIG9uIExpbnV4LCBldmVuIGlmIFB5dGhvbiBpcyBjb21waWxlZCBvbgorTGludXggMy4KKworLi4KKworLi4gYnBvOiAxMzAwNworLi4gZGF0ZTogODU1NgorLi4gbm9uY2U6IDZPY1VpaQorLi4gc2VjdGlvbjogTGlicmFyeQorCit3aGljaGRiIHNob3VsZCByZWNvZ25pemUgZ2RibSAxLjkgbWFnaWMgbnVtYmVycy4KKworLi4KKworLi4gYnBvOiA5MTczCisuLiBkYXRlOiA4NTU1CisuLiBub25jZTogN0NTWmVuCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0xldCBzaHV0aWwuX21ha2VfYXJjaGl2ZSB3b3JrIGlmIHRoZSBsb2dnZXIgYXJndW1lbnQgaXMgTm9uZS4KKworLi4KKworLi4gYnBvOiAxMjY1MAorLi4gZGF0ZTogODU1NAorLi4gbm9uY2U6IGhZMkdMYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSByYWNlIGNvbmRpdGlvbiB3aGVyZSBhIHN1YnByb2Nlc3MuUG9wZW4gY291bGQgbGVhayByZXNvdXJjZXMKKyhGRC96b21iaWUpIHdoZW4ga2lsbGVkIGF0IHRoZSB3cm9uZyB0aW1lLgorCisuLgorCisuLiBicG86IDEyNzUyCisuLiBkYXRlOiA4NTUzCisuLiBub25jZTogM3VpeU9OCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCByZWdyZXNzaW9uIHdoaWNoIHByZXZlbnRlZCBsb2NhbGUubm9ybWFsaXplKCkgZnJvbSBhY2NlcHRpbmcgdW5pY29kZQorc3RyaW5ncy4KKworLi4KKworLi4gYnBvOiAxMjY4MworLi4gZGF0ZTogODU1MgorLi4gbm9uY2U6IHB5U2RGTQorLi4gc2VjdGlvbjogTGlicmFyeQorCit1cmxwYXJzZSB1cGRhdGVkIHRvIGluY2x1ZGUgc3ZuIGFzIHNjaGVtZXMgdGhhdCB1c2VzIHJlbGF0aXZlIHBhdGhzLiAoc3ZuCitmcm9tIDEuNSBvbndhcmRzIHN1cHBvcnQgcmVsYXRpdmUgcGF0aCkuCisKKy4uCisKKy4uIGJwbzogMTE5MzMKKy4uIGRhdGU6IDg1NTEKKy4uIG5vbmNlOiB2b0dUa2UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGluY29ycmVjdCBtdGltZSBjb21wYXJpc29uIGluIGRpc3R1dGlscy4KKworLi4KKworLi4gYnBvOiAxMTEwNAorLi4gZGF0ZTogODU1MAorLi4gbm9uY2U6IEVaUnpBSworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIGJlaGF2aW9yIG9mIGRpc3R1dGlscycgc2Rpc3QgY29tbWFuZCB3aXRoIG1hbnVhbGx5LW1haW50YWluZWQKK01BTklGRVNUIGZpbGVzLiAoU2VlIGFsc286IGJwby04Njg4KQorCisuLgorCisuLiBicG86IDg4ODcKKy4uIGRhdGU6IDg1NDkKKy4uIG5vbmNlOiBHVjJGQUcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworInB5ZG9jIHNvbWVidWlsdGluLnNvbWVtZXRob2QiIChvciBoZWxwKCdzb21lYnVpbHRpbi5zb21lbWV0aG9kJykgaW4gUHl0aG9uCitjb2RlKSBub3cgZmluZHMgdGhlIGRvYyBvZiB0aGUgbWV0aG9kLgorCisuLgorCisuLiBicG86IDEyNjAzCisuLiBkYXRlOiA4NTQ4CisuLiBub25jZTogd084RFE4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBweWRvYy5zeW5vcHNpcygpIG9uIGZpbGVzIHdpdGggbm9uLW5lZ2F0aXZlIHN0X210aW1lLgorCisuLgorCisuLiBicG86IDEyNTE0CisuLiBkYXRlOiA4NTQ3CisuLiBub25jZTogZTFQUjRhCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VzZSB0cnkvZmluYWxseSB0byBhc3N1cmUgdGhlIHRpbWVpdCBtb2R1bGUgcmVzdG9yZXMgZ2FyYmFnZSBjb2xsZWN0aW9ucword2hlbiBpdCBpcyBkb25lLgorCisuLgorCisuLiBicG86IDEyNjA3CisuLiBkYXRlOiA4NTQ2CisuLiBub25jZTogdDVSV0h0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHN1YnByb2Nlc3MsIGZpeCBpc3N1ZSB3aGVyZSBpZiBzdGRpbiwgc3Rkb3V0IG9yIHN0ZGVyciBpcyBnaXZlbiBhcyBhIGxvdworZmQsIGl0IGdldHMgb3ZlcndyaXR0ZW4uCisKKy4uCisKKy4uIGJwbzogMTIxMDIKKy4uIGRhdGU6IDg1NDUKKy4uIG5vbmNlOiBWSlNnR0EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRG9jdW1lbnQgdGhhdCBidWZmZXJlZCBmaWxlcyBtdXN0IGJlIGZsdXNoZWQgYmVmb3JlIGJlaW5nIHVzZWQgd2l0aCBtbWFwLgorUGF0Y2ggYnkgU3RlZmZlbiBEYW9kZSBOdXJwbWVzby4KKworLi4KKworLi4gYnBvOiAxMjU2MAorLi4gZGF0ZTogODU0NAorLi4gbm9uY2U6IDl5ZGtXXworLi4gc2VjdGlvbjogTGlicmFyeQorCitCdWlsZCBsaWJweXRob24uc28gb24gT3BlbkJTRC4gUGF0Y2ggYnkgU3RlZmFuIFNwZXJsaW5nLgorCisuLgorCisuLiBicG86IDE4MTMKKy4uIGRhdGU6IDg1NDMKKy4uIG5vbmNlOiBNMUlrUm0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGNvZGVjIGxvb2t1cCBhbmQgc2V0dGluZy9nZXR0aW5nIGxvY2FsZXMgdW5kZXIgVHVya2lzaCBsb2NhbGVzLgorCisuLgorCisuLiBicG86IDEwODgzCisuLiBkYXRlOiA4NTQyCisuLiBub25jZTogX2UwV2xTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzb2NrZXQgbGVha3MgaW4gdXJsbGliIHdoZW4gdXNpbmcgRlRQLgorCisuLgorCisuLiBicG86IDEyNTkyCisuLiBkYXRlOiA4NTQxCisuLiBub25jZTogLUVacmszCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgUHl0aG9uIGJ1aWxkIG9uIE9wZW5CU0QgNSAoYW5kIGZ1dHVyZSBtYWpvciByZWxlYXNlcykuCisKKy4uCisKKy4uIGJwbzogMTIzNzIKKy4uIGRhdGU6IDg1NDAKKy4uIG5vbmNlOiA3UVJTek8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworUE9TSVggc2VtYXBob3JlcyBhcmUgYnJva2VuIG9uIEFJWDogZG9uJ3QgdXNlIHRoZW0uCisKKy4uCisKKy4uIGJwbzogMTI1NzEKKy4uIGRhdGU6IDg1MzkKKy4uIG5vbmNlOiBxcmtqZ2gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGEgcGxhdC1saW51eDMgZGlyZWN0b3J5IG1pcnJvcmluZyB0aGUgcGxhdC1saW51eDIgZGlyZWN0b3J5LCBzbyB0aGF0CisiaW1wb3J0IERMRkNOIiBhbmQgb3RoZXIgc2ltaWxhciBpbXBvcnRzIHdvcmsgb24gTGludXggMy4wLgorCisuLgorCisuLiBicG86IDc0ODQKKy4uIGRhdGU6IDg1MzgKKy4uIG5vbmNlOiAwYlpvQUgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc210cGxpYiBubyBsb25nZXIgcHV0cyA8PiBhcm91bmQgYWRkcmVzc2VzIGluIFZSRlkgYW5kIEVYUE4gY29tbWFuZHM7IHRoZXkKK2FyZW4ndCByZXF1aXJlZCBhbmQgaW4gZmFjdCBwb3N0Zml4IGRvZXNuJ3Qgc3VwcG9ydCB0aGF0IGZvcm0uCisKKy4uCisKKy4uIGJwbzogMTE2MDMKKy4uIGRhdGU6IDg1MzcKKy4uIG5vbmNlOiBCMDE2clEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgY3Jhc2ggd2hlbiBfX3N0cl9fIGlzIHJlYm91bmQgYXMgX19yZXByX18uICBQYXRjaCBieSBBbmRyZWFzIFN0w7xocmsuCisKKy4uCisKKy4uIGJwbzogMTI1MDIKKy4uIGRhdGU6IDg1MzYKKy4uIG5vbmNlOiBwOEtlZHIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYXN5bmNvcmU6IGZpeCBwb2xsaW5nIGxvb3Agd2l0aCBBRl9VTklYIHNvY2tldHMuCisKKy4uCisKKy4uIGJwbzogNDM3NgorLi4gZGF0ZTogODUzNQorLi4gbm9uY2U6IDZ5VWF0cworLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXMgbm93IHN1cHBvcnRzIG5lc3RlZCBzdHJ1Y3R1cmVzIGluIGFuIGVuZGlhbiBkaWZmZXJlbnQgdGhhbiB0aGUgcGFyZW50CitzdHJ1Y3R1cmUuIFBhdGNoIGJ5IFZsYWQgUmlzY3V0aWEuCisKKy4uCisKKy4uIGJwbzogMTI0OTMKKy4uIGRhdGU6IDg1MzQKKy4uIG5vbmNlOiBxYVBxX1EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc3VicHJvY2VzczogUG9wZW4uY29tbXVuaWNhdGUoKSBub3cgYWxzbyBoYW5kbGVzIEVJTlRSIGVycm9ycyBpZiB0aGUgcHJvY2VzcworaGFzIG9ubHkgb25lIHBpcGUuCisKKy4uCisKKy4uIGJwbzogMTI0NjcKKy4uIGRhdGU6IDg1MzMKKy4uIG5vbmNlOiB4MHNNS3QKKy4uIHNlY3Rpb246IExpYnJhcnkKKword2FybmluZ3M6IGZpeCBhIHJhY2UgY29uZGl0aW9uIGlmIGEgd2FybmluZyBpcyBlbWl0dGVkIGF0IHNodXRkb3duLCBpZgorZ2xvYmFscygpWydfX2ZpbGVfXyddIGlzIE5vbmUuCisKKy4uCisKKy4uIGJwbzogMTIzNTIKKy4uIGRhdGU6IDg1MzIKKy4uIG5vbmNlOiBIdG04T2UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgZGVhZGxvY2sgaW4gbXVsdGlwcm9jZXNzaW5nLkhlYXAgd2hlbiBhIGJsb2NrIGlzIGZyZWVkIGJ5IHRoZSBnYXJiYWdlCitjb2xsZWN0b3Igd2hpbGUgdGhlIEhlYXAgbG9jayBpcyBoZWxkLgorCisuLgorCisuLiBicG86IDk1MTYKKy4uIGRhdGU6IDg1MzEKKy4uIG5vbmNlOiB2OEFoSGsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworT24gTWFjIE9TIFgsIGNoYW5nZSBEaXN0dXRpbHMgdG8gbm8gbG9uZ2VyIGdsb2JhbGx5IGF0dGVtcHQgdG8gY2hlY2sgb3Igc2V0Cit0aGUgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGUgaW50ZXJwcmV0ZXIKK3Byb2Nlc3MuICBUaGlzIGNvdWxkIGNhdXNlIGZhaWx1cmVzIGluIG5vbi1EaXN0dXRpbHMgc3VicHJvY2Vzc2VzIGFuZCB3YXMKK3VucmVsaWFibGUgc2luY2UgdGVzdHMgb3IgdXNlciBwcm9ncmFtcyBjb3VsZCBtb2RpZnkgdGhlIGludGVycHJldGVyCitlbnZpcm9ubWVudCBhZnRlciBEaXN0dXRpbHMgc2V0IGl0LiAgSW5zdGVhZCwgaGF2ZSBEaXN0dXRpbHMgc2V0IHRoZQorZGVwbG95bWVudCB0YXJnZXQgb25seSBpbiB0aGUgZW52aXJvbm1lbnQgb2YgZWFjaCBidWlsZCBzdWJwcm9jZXNzLiAgSXQgaXMKK3N0aWxsIHBvc3NpYmxlIHRvIGdsb2JhbGx5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJ5IHNldHRpbmcKK01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBiZWZvcmUgbGF1bmNoaW5nIHRoZSBpbnRlcnByZXRlcjsgaXRzIHZhbHVlIG11c3QgYmUKK2dyZWF0ZXIgb3IgZXF1YWwgdG8gdGhlIGRlZmF1bHQgdmFsdWUsIHRoZSB2YWx1ZSB3aXRoIHdoaWNoIHRoZSBpbnRlcnByZXRlcgord2FzIGJ1aWx0LgorCisuLgorCisuLiBicG86IDExODAyCisuLiBkYXRlOiA4NTMwCisuLiBub25jZTogNmt0QXAyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBjYWNoZSBpbiBmaWxlY21wIG5vdyBoYXMgYSBtYXhpbXVtIHNpemUgb2YgMTAwIHNvIHRoYXQgaXQgd29uJ3QgZ3Jvdword2l0aG91dCBib3VuZC4KKworLi4KKworLi4gYnBvOiAxMjQwNAorLi4gZGF0ZTogODUyOQorLi4gbm9uY2U6IGJTNS1RZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmUgQzg5IGluY29tcGF0aWJsZSBjb2RlIGZyb20gbW1hcCBtb2R1bGUuIFBhdGNoIGJ5IEFraXJhIEtpdGFkYS4KKworLi4KKworLi4gYnBvOiAxMTcwMAorLi4gZGF0ZTogODUyOAorLi4gbm9uY2U6IFZwZEdTNQorLi4gc2VjdGlvbjogTGlicmFyeQorCittYWlsYm94IHByb3h5IG9iamVjdCBjbG9zZSBtZXRob2RzIGNhbiBub3cgYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHdpdGhvdXQKK2Vycm9yLCBhbmQgX1Byb3h5RmlsZSBub3cgY2xvc2VzIHRoZSB3cmFwcGVkIGZpbGUuCisKKy4uCisKKy4uIGJwbzogMTIxMzMKKy4uIGRhdGU6IDg1MjcKKy4uIG5vbmNlOiBBZzl5dHkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWJzdHJhY3RIVFRQSGFuZGxlci5kb19vcGVuKCkgb2YgdXJsbGliLnJlcXVlc3QgY2xvc2VzIHRoZSBIVFRQIGNvbm5lY3Rpb24KK2lmIGl0cyBnZXRyZXNwb25zZSgpIG1ldGhvZCBmYWlscyB3aXRoIGEgc29ja2V0IGVycm9yLiBQYXRjaCB3cml0dGVuIGJ5IEV6aW8KK01lbG90dGkuCisKKy4uCisKKy4uIGJwbzogOTI4NAorLi4gZGF0ZTogODUyNgorLi4gbm9uY2U6IC1OaEJjRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitBbGxvdyBpbnNwZWN0LmZpbmRzb3VyY2UoKSB0byBmaW5kIHRoZSBzb3VyY2Ugb2YgZG9jdGVzdCBmdW5jdGlvbnMuCisKKy4uCisKKy4uIGJwbzogMTA2OTQKKy4uIGRhdGU6IDg1MjUKKy4uIG5vbmNlOiBKRDZxWHIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworemlwZmlsZSBub3cgaWdub3JlcyBnYXJiYWdlIGF0IHRoZSBlbmQgb2YgYSB6aXBmaWxlLgorCisuLgorCisuLiBicG86IDExNTgzCisuLiBkYXRlOiA4NTI0CisuLiBub25jZTogV3UxeE1oCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NwZWVkIHVwIG9zLnBhdGguaXNkaXIgb24gV2luZG93cyBieSB1c2luZyBHZXRGaWxlQXR0cmlidXRlcyBpbnN0ZWFkIG9mCitvcy5zdGF0LgorCisuLgorCisuLiBicG86IDEyMDgwCisuLiBkYXRlOiA4NTIzCisuLiBub25jZTogb0RtVnhrCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIHBlcmZvcm1hbmNlIGlzc3VlIGluIERlY2ltYWwuX3Bvd2VyX2V4YWN0IHRoYXQgY2F1c2VkIHNvbWUgY29ybmVyLWNhc2UKK0RlY2ltYWwuX19wb3dfXyBjYWxscyB0byB0YWtlIGFuIHVucmVhc29uYWJseSBsb25nIHRpbWUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODUyMgorLi4gbm9uY2U6IGFNbmNsQworLi4gc2VjdGlvbjogTGlicmFyeQorCitOYW1lZCB0dXBsZXMgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggdmFycygpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDg1MjEKKy4uIG5vbmNlOiBxZEhpSncKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc3lzLnNldGNoZWNraW50ZXJ2YWwoKSBub3cgdXBkYXRlcyB0aGUgY3VycmVudCB0aWNrZXIgY291bnQgYXMgd2VsbCBhcwordXBkYXRpbmcgdGhlIGNoZWNrIGludGVydmFsLCBzbyBpZiB0aGUgdXNlciBkZWNyZWFzZXMgdGhlIGNoZWNrIGludGVydmFsLAordGhlIHRpY2tlciBkb2Vzbid0IGhhdmUgdG8gd2luZCBkb3duIHRvIHplcm8gZnJvbSB0aGUgb2xkIHN0YXJ0aW5nIHBvaW50CitiZWZvcmUgdGhlIG5ldyBpbnRlcnZhbCB0YWtlcyBlZmZlY3QuICBBbmQgaWYgdGhlIHVzZXIgaW5jcmVhc2VzIHRoZQoraW50ZXJ2YWwsIGl0IG1ha2VzIHN1cmUgdGhlIG5ldyBsaW1pdCB0YWtlcyBlZmZlY3QgcmlnaHQgYXdheSByYXRoZXIgaGF2ZSBhbgorZWFybHkgdGFzayBzd2l0Y2ggYmVmb3JlIHJlY29nbml6aW5nIHRoZSBuZXcgaW50ZXJ2YWwuCisKKy4uCisKKy4uIGJwbzogMTIwODUKKy4uIGRhdGU6IDg1MjAKKy4uIG5vbmNlOiBjdTktU3AKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGFuIGF0dHJpYnV0ZSBlcnJvciBpbiBzdWJwcm9jZXNzLlBvcGVuIGRlc3RydWN0b3IgaWYgdGhlIGNvbnN0cnVjdG9yIGhhcworZmFpbGVkLCBlLmcuIGJlY2F1c2Ugb2YgYW4gdW5kZWNsYXJlZCBrZXl3b3JkIGFyZ3VtZW50LiBQYXRjaCB3cml0dGVuIGJ5CitPbGVnIE9zaG15YW4uCisKKy4uCisKKy4uIGJwbzogOTA0MQorLi4gZGF0ZTogODUxOQorLi4gbm9uY2U6IGlMWHVISworLi4gc2VjdGlvbjogTGlicmFyeQorCitBbiBpc3N1ZSBpbiBjdHlwZXMuY19sb25nZG91YmxlLCBjdHlwZXMuY19kb3VibGUsIGFuZCBjdHlwZXMuY19mbG9hdCB0aGF0CitjYXVzZWQgYW4gaW5jb3JyZWN0IGV4Y2VwdGlvbiB0byBiZSByZXR1cm5lZCBpbiB0aGUgY2FzZSBvZiBvdmVyZmxvdyBoYXMKK2JlZW4gZml4ZWQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODUxOAorLi4gbm9uY2U6IHpSdU5UTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitic2RkYiBtb2R1bGU6IEVycmF0aWMgYmVoYXZpb3VyIG9mICJEQkVudi0+cmVwX2VsZWN0KCkiIGJlY2F1c2UgYSB0eXBvLgorUG9zc2libGUgY3Jhc2guCisKKy4uCisKKy4uIGJwbzogMTM3NzQKKy4uIGRhdGU6IDg1MTcKKy4uIG5vbmNlOiAtSGtQYkgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworanNvbjogRml4IGEgU3lzdGVtRXJyb3Igd2hlbiBhIGJvZ3VzIGVuY29kaW5nIGlzIHBhc3NlZCB0byBqc29uLmxvYWRzKCkuCisKKy4uCisKKy4uIGJwbzogOTk3NQorLi4gZGF0ZTogODUxNgorLi4gbm9uY2U6IDJTUktwNQorLi4gc2VjdGlvbjogTGlicmFyeQorCitzb2NrZXQ6IEZpeCBpbmNvcnJlY3QgdXNlIG9mIGZsb3dpbmZvIGFuZCBzY29wZV9pZC4gUGF0Y2ggYnkgVmlsbW9zIE5lYmVoYWouCisKKy4uCisKKy4uIGJwbzogMTMxNTkKKy4uIGRhdGU6IDg1MTUKKy4uIG5vbmNlOiBab2owd0QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRmlsZUlPLCBCWjJGaWxlLCBhbmQgdGhlIGJ1aWx0LWluIGZpbGUgY2xhc3Mgbm93IHVzZSBhIGxpbmVhci10aW1lIGJ1ZmZlcgorZ3Jvd3RoIHN0cmF0ZWd5IGluc3RlYWQgb2YgYSBxdWFkcmF0aWMgb25lLgorCisuLgorCisuLiBicG86IDEzMDcwCisuLiBkYXRlOiA4NTE0CisuLiBub25jZTogemNvWVZZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIGNyYXNoIHdoZW4gYSBUZXh0SU9XcmFwcGVyIGNhdWdodCBpbiBhIHJlZmVyZW5jZSBjeWNsZSB3b3VsZCBiZQorZmluYWxpemVkIGFmdGVyIHRoZSByZWZlcmVuY2UgdG8gaXRzIHVuZGVybHlpbmcgQnVmZmVyZWRSV1BhaXIncyB3cml0ZXIgZ290CitjbGVhcmVkIGJ5IHRoZSBHQy4KKworLi4KKworLi4gYnBvOiAxMjg4MQorLi4gZGF0ZTogODUxMworLi4gbm9uY2U6IElwT082agorLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXM6IEZpeCBzZWdmYXVsdCB3aXRoIGxhcmdlIHN0cnVjdHVyZSBmaWVsZCBuYW1lcy4KKworLi4KKworLi4gYnBvOiAxMzAxMworLi4gZGF0ZTogODUxMgorLi4gbm9uY2U6IEtMSDk2VgorLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXM6IEZpeCBhIHJlZmVyZW5jZSBsZWFrIGluIFB5Q0FycmF5VHlwZV9mcm9tX2N0eXBlLiBUaGFua3MgdG8gU3VtYW4KK1NhaGEgZm9yIGZpbmRpbmcgdGhlIGJ1ZyBhbmQgcHJvdmlkaW5nIGEgcGF0Y2guCisKKy4uCisKKy4uIGJwbzogMTMwMjIKKy4uIGRhdGU6IDg1MTEKKy4uIG5vbmNlOiB6ZW84aHMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4OiBfbXVsdGlwcm9jZXNzaW5nLnJlY3ZmZCgpIGRvZXNuJ3QgY2hlY2sgdGhhdCBmaWxlIGRlc2NyaXB0b3Igd2FzCithY3R1YWxseSByZWNlaXZlZC4KKworLi4KKworLi4gYnBvOiAxMjQ4MworLi4gZGF0ZTogODUxMAorLi4gbm9uY2U6IElwR2hLVgorLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXM6IEZpeCBhIGNyYXNoIHdoZW4gdGhlIGRlc3RydWN0aW9uIG9mIGEgY2FsbGJhY2sgb2JqZWN0IHRyaWdnZXJzIHRoZQorZ2FyYmFnZSBjb2xsZWN0b3IuCisKKy4uCisKKy4uIGJwbzogMTI5NTAKKy4uIGRhdGU6IDg1MDkKKy4uIG5vbmNlOiBaN3hsLVIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHBhc3NpbmcgZmlsZSBkZXNjcmlwdG9ycyBpbiBtdWx0aXByb2Nlc3NpbmcsIHVuZGVyIE9wZW5JbmRpYW5hL0lsbHVtb3MuCisKKy4uCisKKy4uIGJwbzogMTI3NjQKKy4uIGRhdGU6IDg1MDgKKy4uIG5vbmNlOiBZdEJvSWoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgY3Jhc2ggaW4gY3R5cGVzIHdoZW4gdGhlIG5hbWUgb2YgYSBTdHJ1Y3R1cmUgZmllbGQgaXMgbm90IGEgc3RyaW5nLgorCisuLgorCisuLiBicG86IDk2NTEKKy4uIGRhdGU6IDg1MDcKKy4uIG5vbmNlOiBJTlBjd2YKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgY3Jhc2ggd2hlbiBjdHlwZXMuY3JlYXRlX3N0cmluZ19idWZmZXIoMCkgd2FzIHBhc3NlZCB0byBzb21lIGZ1bmN0aW9ucworbGlrZSBmaWxlLndyaXRlKCkuCisKKy4uCisKKy4uIGJwbzogMTAzMDkKKy4uIGRhdGU6IDg1MDYKKy4uIG5vbmNlOiAtel9NeHoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRGVmaW5lIF9HTlVfU09VUkNFIHNvIHRoYXQgbXJlbWFwKCkgZ2V0cyB0aGUgcHJvcGVyIHNpZ25hdHVyZS4gIFdpdGhvdXQKK3RoaXMsIGFyY2hpdGVjdHVyZXMgd2hlcmUgc2l6ZW9mIHZvaWQqICE9IHNpemVvZiBpbnQgYXJlIGJyb2tlbi4gIFBhdGNoCitnaXZlbiBieSBIYWxsdmFyZCBCIEZ1cnVzZXRoLgorCisuLgorCisuLiBicG86IDk2NDQzNworLi4gZGF0ZTogODUwNQorLi4gbm9uY2U6IGJ1d05HSworLi4gc2VjdGlvbjogSURMRQorCitNYWtlIElETEUgaGVscCB3aW5kb3cgbm9uLW1vZGFsLiBQYXRjaCBieSBHdWlsaGVybWUgUG9sbyBhbmQgUm9nZXIgU2Vyd3kuCisKKy4uCisKKy4uIGJwbzogMTM5MzMKKy4uIGRhdGU6IDg1MDQKKy4uIG5vbmNlOiA1Q0F3OGwKKy4uIHNlY3Rpb246IElETEUKKworSURMRSBhdXRvLWNvbXBsZXRlIGRpZCBub3Qgd29yayB3aXRoIHNvbWUgaW1wb3J0ZWQgbW9kdWxlLCBsaWtlIGhhc2hsaWIuCisoUGF0Y2ggYnkgUm9nZXIgU2Vyd3kpCisKKy4uCisKKy4uIGJwbzogMTM1MDYKKy4uIGRhdGU6IDg1MDMKKy4uIG5vbmNlOiB6dFhIaEQKKy4uIHNlY3Rpb246IElETEUKKworQWRkICcnIHRvIHBhdGggZm9yIElETEUgU2hlbGwgd2hlbiBzdGFydGVkIGFuZCByZXN0YXJ0ZWQgd2l0aCBSZXN0YXJ0IFNoZWxsLgorT3JpZ2luYWwgcGF0Y2hlcyBieSBNYXJjbyBTY2F0YWdsaW5pIGFuZCBSb2dlciBTZXJ3eS4KKworLi4KKworLi4gYnBvOiA0NjI1CisuLiBkYXRlOiA4NTAyCisuLiBub25jZTogMnBTNHRXCisuLiBzZWN0aW9uOiBJRExFCisKK0lmIElETEUgY2Fubm90IHdyaXRlIHRvIGl0cyByZWNlbnQgZmlsZSBvciBicmVha3BvaW50IGZpbGVzLCBkaXNwbGF5IGEKK21lc3NhZ2UgcG9wdXAgYW5kIGNvbnRpbnVlIHJhdGhlciB0aGFuIGNyYXNoLiAob3JpZ2luYWwgcGF0Y2ggYnkgUm9nZXIKK1Nlcnd5KQorCisuLgorCisuLiBicG86IDg3OTMKKy4uIGRhdGU6IDg1MDEKKy4uIG5vbmNlOiAyZUExSE8KKy4uIHNlY3Rpb246IElETEUKKworUHJldmVudCBJRExFIGNyYXNoIHdoZW4gZ2l2ZW4gc3RyaW5ncyB3aXRoIGludmFsaWQgaGV4IGVzY2FwZSBzZXF1ZW5jZXMuCisKKy4uCisKKy4uIGJwbzogMTMyOTYKKy4uIGRhdGU6IDg1MDAKKy4uIG5vbmNlOiBiTUhJRmUKKy4uIHNlY3Rpb246IElETEUKKworRml4IElETEUgdG8gY2xlYXIgY29tcGlsZSBfX2Z1dHVyZV9fIGZsYWdzIG9uIHNoZWxsIHJlc3RhcnQuIChQYXRjaCBieSBSb2dlcgorU2Vyd3kpCisKKy4uCisKKy4uIGJwbzogMTQ0MDkKKy4uIGRhdGU6IDg0OTkKKy4uIG5vbmNlOiA4U055UlIKKy4uIHNlY3Rpb246IElETEUKKworSURMRSBub3cgcHJvcGVybHkgZXhlY3V0ZXMgY29tbWFuZHMgaW4gdGhlIFNoZWxsIHdpbmRvdyB3aGVuIGl0IGNhbm5vdCByZWFkCit0aGUgbm9ybWFsIGNvbmZpZyBmaWxlcyBvbiBzdGFydHVwIGFuZCBoYXMgdG8gdXNlIHRoZSBidWlsdC1pbiBkZWZhdWx0IGtleQorYmluZGluZ3MuIFRoZXJlIHdhcyBwcmV2aW91c2x5IGEgYnVnIGluIG9uZSBvZiB0aGUgZGVmYXVsdHMuCisKKy4uCisKKy4uIGJwbzogMzU3MworLi4gZGF0ZTogODQ5OAorLi4gbm9uY2U6IHlJUVJ0ZAorLi4gc2VjdGlvbjogSURMRQorCitJRExFIGhhbmdzIHdoZW4gcGFzc2luZyBpbnZhbGlkIGNvbW1hbmQgbGluZSBhcmdzIChkaXJlY3RvcnkoaWVzKSBpbnN0ZWFkIG9mCitmaWxlKHMpKS4KKworLi4KKworLi4gYnBvOiA2ODA3CisuLiBkYXRlOiA4NDk3CisuLiBub25jZTogbGZza1NHCisuLiBzZWN0aW9uOiBCdWlsZAorCitSdW4gbXNpc3VwcG9ydC5tYWsgZWFybGllci4KKworLi4KKworLi4gYnBvOiAxMDU4MAorLi4gZGF0ZTogODQ5NgorLi4gbm9uY2U6IEdrd1dIRgorLi4gc2VjdGlvbjogQnVpbGQKKworTWlub3IgZ3JhbW1hciBjaGFuZ2UgaW4gV2luZG93cyBpbnN0YWxsZXIuCisKKy4uCisKKy4uIGJwbzogMTI2MjcKKy4uIGRhdGU6IDg0OTUKKy4uIG5vbmNlOiBwVkdtYnYKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ltcGxlbWVudCBQRVAgMzk0IGZvciBQeXRob24gMi43ICgicHl0aG9uMiIpLgorCisuLgorCisuLiBicG86IDg3NDYKKy4uIGRhdGU6IDg0OTQKKy4uIG5vbmNlOiB6LWFhZ1QKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0NvcnJlY3QgZmF1bHR5IGNvbmZpZ3VyZSBjaGVja3Mgc28gdGhhdCBvcy5jaGZsYWdzKCkgYW5kIG9zLmxjaGZsYWdzKCkgYXJlCitvbmNlIGFnYWluIGJ1aWx0IG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IHRoZXNlIGZ1bmN0aW9ucyAoKkJTRCBhbmQgT1MgWCkuCitBbHNvIGFkZCBuZXcgc3RhdCBmaWxlIGZsYWdzIGZvciBPUyBYIChVRl9ISURERU4gYW5kIFVGX0NPTVBSRVNTRUQpLgorCisuLgorCisuLiBicG86IDE0MDUzCisuLiBkYXRlOiA4NDkzCisuLiBub25jZTogdFI0RERDCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitwYXRjaGNoZWNrLnB5ICgibWFrZSBwYXRjaGNoZWNrIikgbm93IHdvcmtzIHdpdGggTVEgcGF0Y2hlcy4gUGF0Y2ggYnkKK0ZyYW5jaXNjbyBNYXJ0w61uIEJydWd1w6kuCisKKy4uCisKKy4uIGJwbzogMTM5MzAKKy4uIGRhdGU6IDg0OTIKKy4uIG5vbmNlOiBqVWRmSi0KKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKKzJ0bzMgaXMgbm93IGFibGUgdG8gd3JpdGUgaXRzIGNvbnZlcnRlZCBvdXRwdXQgZmlsZXMgdG8gYW5vdGhlciBkaXJlY3RvcnkKK3RyZWUgYXMgd2VsbCBhcyBjb3B5aW5nIHVuY2hhbmdlZCBmaWxlcyBhbmQgYWx0ZXJpbmcgdGhlIGZpbGUgc3VmZml4LiAgU2VlCitpdHMgbmV3IC1vLCAtVyBhbmQgLS1hZGQtc3VmZml4IG9wdGlvbnMuICBUaGlzIG1ha2VzIGl0IG1vcmUgdXNlZnVsIGluIG1hbnkKK2F1dG9tYXRlZCBjb2RlIHRyYW5zbGF0aW9uIHdvcmtmbG93cy4KKworLi4KKworLi4gYnBvOiAxMDYzOQorLi4gZGF0ZTogODQ5MQorLi4gbm9uY2U6IFpHdS0wSworLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworcmVpbmRlbnQucHkgbm8gbG9uZ2VyIGNvbnZlcnRzIG5ld2xpbmVzIGFuZCB3aWxsIHJhaXNlIGFuIGVycm9yIGlmCithdHRlbXB0aW5nIHRvIGNvbnZlcnQgYSBmaWxlIHdpdGggbWl4ZWQgbmV3bGluZXMuCisKKy4uCisKKy4uIGJwbzogMTM2MjgKKy4uIGRhdGU6IDg0OTAKKy4uIG5vbmNlOiBYem5VRDMKKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK3B5dGhvbi1nZGIucHkgaXMgbm93IGFibGUgdG8gcmV0cmlldmUgbW9yZSBmcmFtZXMgaW4gdGhlIFB5dGhvbiB0cmFjZWJhY2sgaWYKK1B5dGhvbiBpcyBvcHRpbWl6ZWQuCisKKy4uCisKKy4uIGJwbzogMTU0NjcKKy4uIGRhdGU6IDg0ODkKKy4uIG5vbmNlOiBJbGt2amQKKy4uIHNlY3Rpb246IFRlc3RzCisKK01vdmUgaGVscGVycyBmb3IgX19zaXplb2ZfXyB0ZXN0cyBpbnRvIHRlc3Rfc3VwcG9ydC4gUGF0Y2ggYnkgU2VyaGl5CitTdG9yY2hha2EuCisKKy4uCisKKy4uIGJwbzogMTE2ODkKKy4uIGRhdGU6IDg0ODgKKy4uIG5vbmNlOiBuMVVQWUsKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCBhIHZhcmlhYmxlIHNjb3BpbmcgZXJyb3IgaW4gYW4gc3FsaXRlMyB0ZXN0LiBJbml0aWFsIHBhdGNoIGJ5IFRvcnN0ZW4KK0xhbmRzY2hvZmYuCisKKy4uCisKKy4uIGJwbzogMTA4ODEKKy4uIGRhdGU6IDg0ODcKKy4uIG5vbmNlOiBDRzdFY24KKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCB0ZXN0X3NpdGUgZmFpbHVyZXMgd2l0aCBPUyBYIGZyYW1ld29yayBidWlsZHMuCisKKy4uCisKKy4uIGJwbzogMTM5MDEKKy4uIGRhdGU6IDg0ODYKKy4uIG5vbmNlOiBJQ0tHUEgKKy4uIHNlY3Rpb246IFRlc3RzCisKK1ByZXZlbnQgdGVzdF9kaXN0dXRpbHMgZmFpbHVyZXMgb24gT1MgWCB3aXRoIC0tZW5hYmxlLXNoYXJlZC4KKworLi4KKworLi4gYnBvOiAxMzMwNAorLi4gZGF0ZTogODQ4NQorLi4gbm9uY2U6IGpERGk5NworLi4gc2VjdGlvbjogVGVzdHMKKworU2tpcCB0ZXN0IGNhc2UgaWYgdXNlciBzaXRlLXBhY2thZ2VzIGRpc2FibGVkICgtcyBvciBQWVRIT05OT1VTRVJTSVRFKS4KKyhQYXRjaCBieSBDYXJsIE1leWVyKQorCisuLgorCisuLiBicG86IDEzMjE4CisuLiBkYXRlOiA4NDg0CisuLiBub25jZTogRVozam5WCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggdGVzdF9zc2wgZmFpbHVyZXMgb24gRGViaWFuL1VidW50dS4KKworLi4KKworLi4gYnBvOiAxMjgyMQorLi4gZGF0ZTogODQ4MworLi4gbm9uY2U6IGZtQTcxNQorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3RfZmNudGwgZmFpbHVyZXMgb24gT3BlbkJTRCA1LgorCisuLgorCisuLiBicG86IDEyMzMxCisuLiBkYXRlOiA4NDgyCisuLiBub25jZTogWlNQZUpXCisuLiBzZWN0aW9uOiBUZXN0cworCitUaGUgdGVzdCBzdWl0ZSBmb3IgbGliMnRvMyBjYW4gbm93IHJ1biBmcm9tIGFuIGluc3RhbGxlZCBQeXRob24uCisKKy4uCisKKy4uIGJwbzogMTI1NDkKKy4uIGRhdGU6IDg0ODEKKy4uIG5vbmNlOiBTNHVyTkwKKy4uIHNlY3Rpb246IFRlc3RzCisKK0NvcnJlY3QgdGVzdF9wbGF0Zm9ybSB0byBub3QgZmFpbCB3aGVuIE9TIFggcmV0dXJucyAneDg2XzY0JyBhcyB0aGUKK3Byb2Nlc3NvciB0eXBlIG9uIHNvbWUgTWFjIHN5c3RlbXMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODQ4MAorLi4gbm9uY2U6IEVvZlFxcgorLi4gc2VjdGlvbjogVGVzdHMKKworU2tpcCBuZXR3b3JrIHRlc3RzIHdoZW4gZ2V0YWRkcmluZm8oKSByZXR1cm5zIEVBSV9BR0FJTiwgbWVhbmluZyBhIHRlbXBvcmFyeQorZmFpbHVyZSBpbiBuYW1lIHJlc29sdXRpb24uCisKKy4uCisKKy4uIGJwbzogMTE4MTIKKy4uIGRhdGU6IDg0NzkKKy4uIG5vbmNlOiBqZU5hQ0IKKy4uIHNlY3Rpb246IFRlc3RzCisKK1NvbHZlIHRyYW5zaWVudCBzb2NrZXQgZmFpbHVyZSB0byBjb25uZWN0IHRvICdsb2NhbGhvc3QnIGluCit0ZXN0X3RlbG5ldGxpYi5weS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA4NDc4CisuLiBub25jZTogY1VkbDM5CisuLiBzZWN0aW9uOiBUZXN0cworCitTb2x2ZWQgYSBwb3RlbnRpYWwgZGVhZGxvY2sgaW4gdGVzdF90ZWxuZXRsaWIucHkuIFJlbGF0ZWQgdG8gaXNzdWUgIzExODEyLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDg0NzcKKy4uIG5vbmNlOiBRdFRpbVcKKy4uIHNlY3Rpb246IFRlc3RzCisKK0F2b2lkIGZhaWxpbmcgaW4gdGVzdF9yb2JvdHBhcnNlciB3aGVuIG11ZWJsZXNtb3JhbGVkYS5jb20gaXMgZmxha3kgYW5kIGFuCitvdmVyemVhbG91cyBETlMgc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZWRpcmVjdHMgdG8gYSBwbGFjZWhvbGRlciBXZWIgc2l0ZS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA4NDc2CisuLiBub25jZTogVnZoLTJQCisuLiBzZWN0aW9uOiBUZXN0cworCitBdm9pZCBmYWlsaW5nIGluIHRlc3RfdXJsbGlibmV0LnRlc3RfYmFkX2FkZHJlc3Mgd2hlbiBzb21lIG92ZXJ6ZWFsb3VzIEROUworc2VydmljZSAoZS5nLiBPcGVuRE5TKSByZXNvbHZlcyBhIG5vbi1leGlzdGVudCBkb21haW4gbmFtZS4gIFRoZSB0ZXN0IGlzIG5vdworc2tpcHBlZCBpbnN0ZWFkLgorCisuLgorCisuLiBicG86IDg3MTYKKy4uIGRhdGU6IDg0NzUKKy4uIG5vbmNlOiAtcVVlLXoKKy4uIHNlY3Rpb246IFRlc3RzCisKK0F2b2lkIGNyYXNoZXMgY2F1c2VkIGJ5IEFxdWEgVGsgb24gT1NYIHdoZW4gYXR0ZW1wdGluZyB0byBydW4gdGVzdF90ayBvcgordGVzdF90dGtfZ3Vpb25seSB1bmRlciBhIHVzZXJuYW1lIHRoYXQgaXMgbm90IGN1cnJlbnRseSBsb2dnZWQgaW4gdG8gdGhlCitjb25zb2xlIHdpbmRvd3NlcnZlciAoYXMgbWF5IGJlIHRoZSBjYXNlIHVuZGVyIGJ1aWxkYm90IG9yIHNzaCkuCisKKy4uCisKKy4uIGJwbzogMTIxNDEKKy4uIGRhdGU6IDg0NzQKKy4uIG5vbmNlOiAtNVlDZ1oKKy4uIHNlY3Rpb246IFRlc3RzCisKK0luc3RhbGwgYSBjb3B5IG9mIHRlbXBsYXRlIEMgbW9kdWxlIGZpbGUgc28gdGhhdCB0ZXN0X2J1aWxkX2V4dCBvZgordGVzdF9kaXN0dXRpbHMgaXMgbm8gbG9uZ2VyIHNpbGVudGx5IHNraXBwZWQgd2hlbiBydW4gb3V0c2lkZSBvZiBhIGJ1aWxkCitkaXJlY3RvcnkuCisKKy4uCisKKy4uIGJwbzogODc0NgorLi4gZGF0ZTogODQ3MworLi4gbm9uY2U6IEk0OTdPLQorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkIGFkZGl0aW9uYWwgdGVzdHMgZm9yIG9zLmNoZmxhZ3MoKSBhbmQgb3MubGNoZmxhZ3MoKS4gUGF0Y2ggYnkgR2FycmV0dAorQ29vcGVyLgorCisuLgorCisuLiBicG86IDEwNzM2CisuLiBkYXRlOiA4NDcyCisuLiBub25jZTogNjB0XzdhCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggdGVzdF90dGsgdGVzdF93aWRnZXRzIGZhaWx1cmVzIHdpdGggQ29jb2EgVGsgOC41Ljkgb24gTWFjIE9TIFguICAoUGF0Y2gKK2J5IFJvbmFsZCBPdXNzb3JlbikKKworLi4KKworLi4gYnBvOiAxMjA1NworLi4gZGF0ZTogODQ3MQorLi4gbm9uY2U6IDdRVkc2VAorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkIHRlc3RzIGZvciBJU08gMjAyMiBjb2RlY3MgKGlzbzIwMjJfanAsIGlzbzIwMjJfanBfMiwgaXNvMjAyMl9rcikuCisKKy4uCisKKy4uIGJwbzogMTM0OTEKKy4uIGRhdGU6IDg0NzAKKy4uIG5vbmNlOiB6TUZOSUQKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworRml4IG1hbnkgZXJyb3JzIGluIHNxbGl0ZTMgZG9jdW1lbnRhdGlvbi4gSW5pdGlhbCBwYXRjaCBmb3IgIzEzNDkxIGJ5CitKb2hhbm5lcyBWb2dlbC4gKFNlZSBhbHNvOiBicG8tMTM5OTUpCisKKy4uCisKKy4uIGJwbzogMTM0MDIKKy4uIGRhdGU6IDg0NjkKKy4uIG5vbmNlOiBWU05yRzAKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworRG9jdW1lbnQgYWJzb2x1dGVuZXNzIG9mIHN5cy5leGVjdXRhYmxlLgorCisuLgorCisuLiBicG86IDEzODgzCisuLiBkYXRlOiA4NDY4CisuLiBub25jZTogYXRGU05oCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK1BZVEhPTkNBU0VPSyBhbHNvIHdvcmtzIG9uIE9TIFgsIE9TLzIsIGFuZCBSaXNjT1MuCisKKy4uCisKKy4uIGJwbzogMjEzNAorLi4gZGF0ZTogODQ2NworLi4gbm9uY2U6IGxrZHpydQorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitUaGUgdG9rZW5pemUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiBjbGFyaWZpZWQgdG8gZXhwbGFpbiB3aHkgYWxsIG9wZXJhdG9yCithbmQgZGVsaW1pdGVyIHRva2VucyBhcmUgdHJlYXRlZCBhcyB0b2tlbi5PUCB0b2tlbnMuCisKKy4uCisKKy4uIGJwbzogMTM1MTMKKy4uIGRhdGU6IDg0NjYKKy4uIG5vbmNlOiBaNmwzOXEKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworRml4IGlvLklPQmFzZSBkb2N1bWVudGF0aW9uIHRvIGNvcnJlY3RseSBsaW5rIHRvIHRoZSBpby5JT0Jhc2UucmVhZGxpbmUKK21ldGhvZCBpbnN0ZWFkIG9mIHRoZSByZWFkbGluZSBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMTMyMzcKKy4uIGRhdGU6IDg0NjUKKy4uIG5vbmNlOiBFVlZqWksKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworUmVvcmdhbmlzZSBzdWJwcm9jZXNzIGRvY3VtZW50YXRpb24gdG8gZW1waGFzaXNlIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBhbmQKK3RoZSBtb3N0IGNvbW1vbmx5IG5lZWRlZCBhcmd1bWVudHMgdG8gUG9wZW4uCisKKy4uCisKKy4uIGJwbzogMTMxNDEKKy4uIGRhdGU6IDg0NjQKKy4uIG5vbmNlOiByRExpbUkKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworRGVtb25zdHJhdGUgcmVjb21tZW5kZWQgc3R5bGUgZm9yIFNvY2tldFNlcnZlciBleGFtcGxlcy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy4zcmMyLnJzdCBiL01pc2MvTkVXUy5kLzIuNy4zcmMyLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTI3MzEwCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43LjNyYzIucnN0CkBAIC0wLDAgKzEsMTAgQEAKKy4uIGJwbzogMTQyMzQKKy4uIGRhdGU6IDg2NTcKKy4uIG5vbmNlOiAzLTVrOF8KKy4uIHJlbGVhc2UgZGF0ZTogMjAxMi0wMy0xNworLi4gc2VjdGlvbjogTGlicmFyeQorCitDVkUtMjAxMi0wODc2OiBSYW5kb21pemUgaGFzaGVzIG9mIHhtbCBhdHRyaWJ1dGVzIGluIHRoZSBoYXNoIHRhYmxlIGludGVybmFsCit0byB0aGUgcHlleHBhdCBtb2R1bGUncyBjb3B5IG9mIHRoZSBleHBhdCBsaWJyYXJ5IHRvIGF2b2lkIGEgZGVuaWFsIG9mCitzZXJ2aWNlIGR1ZSB0byBoYXNoIGNvbGxpc2lvbnMuICBQYXRjaCBieSBEYXZpZCBNYWxjb2xtIHdpdGggc29tZQorbW9kaWZpY2F0aW9ucyBieSB0aGUgZXhwYXQgcHJvamVjdC4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy40LnJzdCBiL01pc2MvTkVXUy5kLzIuNy40LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmJlM2FiCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43LjQucnN0CkBAIC0wLDAgKzEsNjQgQEAKKy4uIGJwbzogMTc1NTAKKy4uIGRhdGU6IDkwMTMKKy4uIG5vbmNlOiB6bjhnT2sKKy4uIHJlbGVhc2UgZGF0ZTogMjAxMy0wNC0wNgorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IHRoZSAtLWVuYWJsZS1wcm9maWxpbmcgY29uZmlndXJlIHN3aXRjaC4KKworLi4KKworLi4gYnBvOiAxNTgwMQorLi4gZGF0ZTogOTAxMgorLi4gbm9uY2U6IHpzTGNFWQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworV2l0aCBzdHJpbmcgJSBmb3JtYXR0aW5nLCByZWxheCB0aGUgdHlwZSBjaGVjayBmb3IgYSBtYXBwaW5nIHN1Y2ggdGhhdCBhbnkKK3R5cGUgd2l0aCBhIF9fZ2V0aXRlbV9fIGNhbiBiZSB1c2VkIG9uIHRoZSByaWdodCBoYW5kIHNpZGUuCisKKy4uCisKKy4uIGJwbzogMTc2MjUKKy4uIGRhdGU6IDkwMTEKKy4uIG5vbmNlOiBTb0RtOUoKKy4uIHNlY3Rpb246IElETEUKKworSW4gSURMRSwgY2xvc2UgdGhlIHJlcGxhY2UgZGlhbG9nIGFmdGVyIGl0IGlzIHVzZWQuCisKKy4uCisKKy4uIGJwbzogMTc4MzUKKy4uIGRhdGU6IDkwMTAKKy4uIG5vbmNlOiBtSmRSNzEKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCB0ZXN0X2lvIHdoZW4gdGhlIGRlZmF1bHQgT1MgcGlwZSBidWZmZXIgc2l6ZSBpcyBsYXJnZXIgdGhhbiBvbmUgbWlsbGlvbgorYnl0ZXMuCisKKy4uCisKKy4uIGJwbzogMTc1MzEKKy4uIGRhdGU6IDkwMDkKKy4uIG5vbmNlOiA3UHpXQzIKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCB0ZXN0cyB0aGF0IHRob3VnaHQgZ3JvdXAgYW5kIHVzZXIgaWRzIHdlcmUgYWx3YXlzIHRoZSBpbnQgdHlwZS4gQWxzbywKK2Fsd2F5cyBhbGxvdyAtMSBhcyBhIHZhbGlkIGdyb3VwIGFuZCB1c2VyIGlkLgorCisuLgorCisuLiBicG86IDE3NTMzCisuLiBkYXRlOiA5MDA4CisuLiBub25jZTogWEdlak05CisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggdGVzdF94cGlja2xlIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgUHl0aG9uIDIuNS4KKworLi4KKworLi4gYnBvOiAxNzUzOAorLi4gZGF0ZTogOTAwNworLi4gbm9uY2U6IE04RlZMegorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitEb2N1bWVudCBYTUwgdnVsbmVyYWJpbHRpZXMKZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy40cmMxLnJzdCBiL01pc2MvTkVXUy5kLzIuNy40cmMxLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGM2MTViCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43LjRyYzEucnN0CkBAIC0wLDAgKzEsMzQxOSBAQAorLi4gYnBvOiAxMDIxMQorLi4gZGF0ZTogOTAwNgorLi4gbm9uY2U6IEpGNlFKTgorLi4gcmVsZWFzZSBkYXRlOiAyMDEzLTAzLTIzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitCdWZmZXIgb2JqZWN0cyBleHBvc2UgdGhlIG5ldyBidWZmZXIgaW50ZXJmYWNlIGludGVybmFsbHkKKworLi4KKworLi4gYnBvOiAxNjQ0NQorLi4gZGF0ZTogOTAwNQorLi4gbm9uY2U6IEVGMTlubAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgcG90ZW50aWFsIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGRlbGV0aW5nIGFuIGV4Y2VwdGlvbiBtZXNzYWdlLgorCisuLgorCisuLiBicG86IDE3Mjc1CisuLiBkYXRlOiA5MDA0CisuLiBub25jZTogQXFlcmZ0CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitDb3JyZWN0ZWQgY2xhc3MgbmFtZSBpbiBpbml0IGVycm9yIG1lc3NhZ2VzIG9mIHRoZSBDIHZlcnNpb24gb2YKK0J1ZmZlcmVkV3JpdGVyIGFuZCBCdWZmZXJlZFJhbmRvbS4KKworLi4KKworLi4gYnBvOiA3OTYzCisuLiBkYXRlOiA5MDAzCisuLiBub25jZTogRldKdFVUCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBtaXNsZWFkaW5nIGVycm9yIG1lc3NhZ2UgdGhhdCBpc3N1ZWQgd2hlbiBvYmplY3QgaXMgY2FsbGVkIHdpdGhvdXQKK2FyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiA1MzA4CisuLiBkYXRlOiA5MDAyCisuLiBub25jZTogczV1QWJQCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSYWlzZSBWYWx1ZUVycm9yIHdoZW4gbWFyc2hhbGxpbmcgdG9vIGxhcmdlIG9iamVjdCAoYSBzZXF1ZW5jZSB3aXRoIHNpemUgPj0KKzIqKjMxKSwgaW5zdGVhZCBvZiBwcm9kdWNpbmcgaWxsZWdhbCBtYXJzaGFsIGRhdGEuCisKKy4uCisKKy4uIGJwbzogMTcwNDMKKy4uIGRhdGU6IDkwMDEKKy4uIG5vbmNlOiA0T1ZoR2sKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSB1bmljb2RlLWludGVybmFsIGRlY29kZXIgbm8gbG9uZ2VyIHJlYWQgcGFzdCB0aGUgZW5kIG9mIGlucHV0IGJ1ZmZlci4KKworLi4KKworLi4gYnBvOiAxNjk3OQorLi4gZGF0ZTogOTAwMAorLi4gbm9uY2U6IGpUUjNPZQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGVycm9yIGhhbmRsaW5nIGJ1Z3MgaW4gdGhlIHVuaWNvZGUtZXNjYXBlLWRlY29kZSBkZWNvZGVyLgorCisuLgorCisuLiBicG86IDEwMTU2CisuLiBkYXRlOiA4OTk5CisuLiBub25jZTogaUVaR2hZCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbiB0aGUgaW50ZXJwcmV0ZXIncyBpbml0aWFsaXphdGlvbiBwaGFzZSwgdW5pY29kZSBnbG9iYWxzIGFyZSBub3cKK2luaXRpYWxpemVkIGR5bmFtaWNhbGx5IGFzIG5lZWRlZC4KKworLi4KKworLi4gYnBvOiAxNjk3NQorLi4gZGF0ZTogODk5OAorLi4gbm9uY2U6IEg5RXNHOQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGVycm9yIGhhbmRsaW5nIGJ1ZyBpbiB0aGUgZXNjYXBlLWRlY29kZSBkZWNvZGVyLgorCisuLgorCisuLiBicG86IDE0ODUwCisuLiBkYXRlOiA4OTk3CisuLiBub25jZTogRWhVX0lmCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitOb3cgYSBjaGFybWFwIGRlY29kZXIgdHJlYXRzIFUrRkZGRSBhcyAidW5kZWZpbmVkIG1hcHBpbmciIGluIGFueSBtYXBwaW5nLAorbm90IG9ubHkgaW4gYSBVbmljb2RlIHN0cmluZy4KKworLi4KKworLi4gYnBvOiAxMTQ2MQorLi4gZGF0ZTogODk5NgorLi4gbm9uY2U6IHh3bl9adworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHRoZSBpbmNyZW1lbnRhbCBVVEYtMTYgZGVjb2Rlci4gT3JpZ2luYWwgcGF0Y2ggYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMuCisKKy4uCisKKy4uIGJwbzogMTYzNjcKKy4uIGRhdGU6IDg5OTUKKy4uIG5vbmNlOiBsZXdsQ2cKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBGaWxlSU8ucmVhZGFsbCgpIG9uIFdpbmRvd3MgZm9yIGZpbGVzIGxhcmdlciB0aGFuIDIgR0IuCisKKy4uCisKKy4uIGJwbzogMTU1MTYKKy4uIGRhdGU6IDg5OTQKKy4uIG5vbmNlOiA1LUpKTzcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBhIGJ1ZyBpbiBQeVN0cmluZ19Gcm9tRm9ybWF0IHdoZXJlIGl0IGZhaWxlZCB0byBwcm9wZXJseSBpZ25vcmUgZXJyb3JzCitmcm9tIGEgX19pbnRfXygpIG1ldGhvZC4KKworLi4KKworLi4gYnBvOiAxNjgzOQorLi4gZGF0ZTogODk5MworLi4gbm9uY2U6IGFFdzZaQgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgc2VnZmF1bHQgd2hlbiBjYWxsaW5nIHVuaWNvZGUoKSBvbiBhIGNsYXNzaWMgY2xhc3MgZWFybHkgaW4KK2ludGVycHJldGVyIGluaXRpYWxpemF0aW9uLgorCisuLgorCisuLiBicG86IDE2NzYxCisuLiBkYXRlOiA4OTkyCisuLiBub25jZTogWjJkMFRyCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitDYWxsaW5nIGBgaW50KClgYCBhbmQgYGBsb25nKClgYCB3aXRoICpiYXNlKiBhcmd1bWVudCBvbmx5IG5vdyByYWlzZXMKK1R5cGVFcnJvci4KKworLi4KKworLi4gYnBvOiAxNjc1OQorLi4gZGF0ZTogODk5MQorLi4gbm9uY2U6IFUwLUNGUworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU3VwcG9ydCB0aGUgZnVsbCBEV09SRCAodW5zaWduZWQgbG9uZykgcmFuZ2UgaW4gUmVnMlB5IHdoZW4gcmV0cmlldmluZyBhCitSRUdfRFdPUkQgdmFsdWUuIFRoaXMgY29ycmVjdHMgZnVuY3Rpb25zIGxpa2Ugd2lucmVnLlF1ZXJ5VmFsdWVFeCB0aGF0IG1heQoraGF2ZSBiZWVuIHJldHVybmluZyB0cnVuY2F0ZWQgdmFsdWVzLgorCisuLgorCisuLiBicG86IDE0NDIwCisuLiBkYXRlOiA4OTkwCisuLiBub25jZTogdWtucWFDCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitTdXBwb3J0IHRoZSBmdWxsIERXT1JEICh1bnNpZ25lZCBsb25nKSByYW5nZSBpbiBQeTJSZWcgd2hlbiBwYXNzZWQgYQorUkVHX0RXT1JEIHZhbHVlLiBGaXhlcyBWYWx1ZUVycm9yIGluIHdpbnJlZy5TZXRWYWx1ZUV4IHdoZW4gZ2l2ZW4gYSBsb25nLgorCisuLgorCisuLiBicG86IDEzODYzCisuLiBkYXRlOiA4OTg5CisuLiBub25jZTogamZvTmxQCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitXb3JrIGFyb3VuZCBidWdneSAnZnN0YXQnIGltcGxlbWVudGF0aW9uIG9uIFdpbmRvd3MgLyBOVEZTIHRoYXQgbGVhZCB0bworaW5jb3JyZWN0IHRpbWVzdGFtcHMgKG9mZiBieSBvbmUgaG91cikgYmVpbmcgc3RvcmVkIGluIC5weWMgZmlsZXMgb24gc29tZQorc3lzdGVtcy4KKworLi4KKworLi4gYnBvOiAxNjYwMgorLi4gZGF0ZTogODk4OAorLi4gbm9uY2U6IEZqbkxURAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworV2hlbiBhIHdlYWtyZWYncyB0YXJnZXQgd2FzIHBhcnQgb2YgYSBsb25nIGRlYWxsb2NhdGlvbiBjaGFpbiwgdGhlIG9iamVjdAorY291bGQgcmVtYWluIHJlYWNoYWJsZSB0aHJvdWdoIGl0cyB3ZWFrcmVmIGV2ZW4gdGhvdWdoIGl0cyByZWZjb3VudCBoYWQKK2Ryb3BwZWQgdG8gemVyby4KKworLi4KKworLi4gYnBvOiA5MDExCisuLiBkYXRlOiA4OTg3CisuLiBub25jZTogRU5XVFdmCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggaGFja3kgQVNUIGNvZGUgdGhhdCBtb2RpZmllZCB0aGUgQ1NUIHdoZW4gY29tcGlsaW5nIGEgbmVnYXRlZCBudW1lcmljCitsaXRlcmFsLgorCisuLgorCisuLiBicG86IDE2MzA2CisuLiBkYXRlOiA4OTg2CisuLiBub25jZTogSDI5U1huCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggbXVsdGlwbGUgZXJyb3IgbWVzc2FnZXMgd2hlbiB1bmtub3duIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzIHdoZXJlCitwYXNzZWQgdG8gdGhlIGludGVycHJldGVyLiAgUGF0Y2ggYnkgSGlldSBOZ3V5ZW4uCisKKy4uCisKKy4uIGJwbzogMTUzNzkKKy4uIGRhdGU6IDg5ODUKKy4uIG5vbmNlOiBJeDJOVGIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBwYXNzaW5nIG9mIG5vbi1CTVAgY2hhcmFjdGVycyBhcyBpbnRlZ2VycyBmb3IgdGhlIGNoYXJtYXAgZGVjb2RlcgorKGFscmVhZHkgd29ya2luZyBhcyB1bmljb2RlIHN0cmluZ3MpLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxNjQ1MworLi4gZGF0ZTogODk4NAorLi4gbm9uY2U6IDBabTllbgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGVxdWFsaXR5IHRlc3Rpbmcgb2YgZGVhZCB3ZWFrcmVmIG9iamVjdHMuCisKKy4uCisKKy4uIGJwbzogOTUzNQorLi4gZGF0ZTogODk4MworLi4gbm9uY2U6IGhraXhQRAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHBlbmRpbmcgc2lnbmFscyB0aGF0IGhhdmUgYmVlbiByZWNlaXZlZCBidXQgbm90IHlldCBoYW5kbGVkIGJ5IFB5dGhvbiB0bworbm90IHBlcnNpc3QgYWZ0ZXIgb3MuZm9yaygpIGluIHRoZSBjaGlsZCBwcm9jZXNzLgorCisuLgorCisuLiBicG86IDE1MDAxCisuLiBkYXRlOiA4OTgyCisuLiBub25jZTogb0QzZ3RYCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitmaXggc2VnZmF1bHQgb24gImRlbCBzeXMubW9kdWxlc1snX19tYWluX18nXSIuIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgorCisuLgorCisuLiBicG86IDUwNTcKKy4uIGRhdGU6IDg5ODEKKy4uIG5vbmNlOiA1SEZlaHQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3RoZSBwZWVwaG9sZXIgbm8gbG9uZ2VyIG9wdGltaXplcyBzdWJzY3JpcHRpb24gb24gdW5pY29kZSBsaXRlcmFscyAoZS5nLgordSdmb28nWzBdKSBpbiBvcmRlciB0byBwcm9kdWNlIGNvbXBhdGlibGUgcHljIGZpbGVzIGJldHdlZW4gbmFycm93IGFuZCB3aWRlCitidWlsZHMuCisKKy4uCisKKy4uIGJwbzogODQwMQorLi4gZGF0ZTogODk4MAorLi4gbm9uY2U6IFRzbFJacgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworYXNzaWduaW5nIGFuIGludCB0byBhIGJ5dGVhcnJheSBzbGljZSAoZS5nLiBiWzM6NF0gPSA1KSBub3cgcmFpc2VzIGFuIGVycm9yLgorCisuLgorCisuLiBicG86IDE0NzAwCisuLiBkYXRlOiA4OTc5CisuLiBub25jZTogMWhJczYxCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYnVnZ3kgb3ZlcmZsb3cgY2hlY2tzIGZvciBsYXJnZSB3aWR0aCBhbmQgcHJlY2lzaW9uIGluIHN0cmluZyBmb3JtYXR0aW5nCitvcGVyYXRpb25zLgorCisuLgorCisuLiBicG86IDE2MzQ1CisuLiBkYXRlOiA4OTc4CisuLiBub25jZTogYXp2UHBQCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYW4gaW5maW5pdGUgbG9vcCB3aGVuIGBgZnJvbWtleXNgYCBvbiBhIGRpY3Qgc3ViY2xhc3MgcmVjZWl2ZWQgYQorbm9uZW1wdHkgZGljdCBmcm9tIHRoZSBjb25zdHJ1Y3Rvci4KKworLi4KKworLi4gYnBvOiA2MDc0CisuLiBkYXRlOiA4OTc3CisuLiBub25jZTogQ1hsdmVICisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitFbnN1cmUgY2FjaGVkIGJ5dGVjb2RlIGZpbGVzIGNhbiBhbHdheXMgYmUgdXBkYXRlZCBieSB0aGUgdXNlciB0aGF0IGNyZWF0ZWQKK3RoZW0sIGV2ZW4gd2hlbiB0aGUgc291cmNlIGZpbGUgaXMgcmVhZC1vbmx5LgorCisuLgorCisuLiBicG86IDE0NzgzCisuLiBkYXRlOiA4OTc2CisuLiBub25jZTogU2s0ZGZoCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbXByb3ZlIGludCgpIGFuZCBsb25nKCkgZG9jc3RyaW5ncyBhbmQgc3dpdGNoIGRvY3N0cmluZ3MgZm9yIHVuaWNvZGUoKSwKK3NsaWNlKCksIHJhbmdlKCksIGFuZCB4cmFuZ2UoKSB0byB1c2UgbXVsdGktbGluZSBzaWduYXR1cmVzLgorCisuLgorCisuLiBicG86IDE2MDMwCisuLiBkYXRlOiA4OTc1CisuLiBub25jZTogbGp3bWtNCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggb3ZlcmZsb3cgYnVnIGluIGNvbXB1dGluZyB0aGUgYHJlcHJgIG9mIGFuIHhyYW5nZSBvYmplY3Qgd2l0aCBsYXJnZQorc3RhcnQsIHN0ZXAgb3IgbGVuZ3RoLgorCisuLgorCisuLiBicG86IDE2MDI5CisuLiBkYXRlOiA4OTc0CisuLiBub25jZTogekd6bDY4CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggb3ZlcmZsb3cgYnVnIG9jY3VycmluZyB3aGVuIHBpY2tsaW5nIHhyYW5nZXMgd2l0aCBsYXJnZSBzdGFydCwgc3RlcCBvcgorbGVuZ3RoLgorCisuLgorCisuLiBicG86IDE2MDM3CisuLiBkYXRlOiA4OTczCisuLiBub25jZTogdEE3Y0EyCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitMaW1pdCBodHRwbGliJ3MgX3JlYWRfc3RhdHVzKCkgZnVuY3Rpb24gdG8gd29yayBhcm91bmQgYnJva2VuIEhUVFAgc2VydmVycworYW5kIHJlZHVjZSBtZW1vcnkgdXNhZ2UuIEl0J3MgYWN0dWFsbHkgYSBiYWNrcG9ydCBvZiBhIFB5dGhvbiAzLjIgZml4LgorVGhhbmtzIHRvIEFkcmllbiBLdW55c3ouCisKKy4uCisKKy4uIGJwbzogMTY1ODgKKy4uIGRhdGU6IDg5NzIKKy4uIG5vbmNlOiBZS2d4T2EKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1NpbGVuY2UgdW51c2VkLWJ1dC1zZXQgd2FybmluZ3MgaW4gUHl0aG9uL3RocmVhZF9wdGhyZWFkCisKKy4uCisKKy4uIGJwbzogMTM5OTIKKy4uIGRhdGU6IDg5NzEKKy4uIG5vbmNlOiBKYXNhZjIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSB0cmFzaGNhbiBtZWNoYW5pc20gaXMgbm93IHRocmVhZC1zYWZlLiAgVGhpcyBlbGltaW5hdGVzIHNwb3JhZGljIGNyYXNoZXMKK2luIG11bHRpLXRocmVhZCBwcm9ncmFtcyB3aGVuIHNldmVyYWwgbG9uZyBkZWFsbG9jYXRvciBjaGFpbnMgcmFuCitjb25jdXJyZW50bHkgYW5kIGludm9sdmVkIHN1YmNsYXNzZXMgb2YgYnVpbHQtaW4gY29udGFpbmVyIHR5cGVzLgorCisuLgorCisuLiBicG86IDE1ODAxCisuLiBkYXRlOiA4OTcwCisuLiBub25jZTogZ3BjUVYzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitNYWtlIHN1cmUgbWFwcGluZ3MgcGFzc2VkIHRvICclJyBmb3JtYXR0aW5nIGFyZSBhY3R1YWxseSBzdWJzY3JpcHRhYmxlLgorCisuLgorCisuLiBicG86IDE1NjA0CisuLiBkYXRlOiA4OTY5CisuLiBub25jZTogcTFWM3NjCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitVcGRhdGUgdXNlcyBvZiBQeU9iamVjdF9Jc1RydWUoKSB0byBjaGVjayBmb3IgYW5kIGhhbmRsZSBlcnJvcnMgY29ycmVjdGx5LgorUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxNDU3OQorLi4gZGF0ZTogODk2OAorLi4gbm9uY2U6IEJjZzFKMQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGVycm9yIGhhbmRsaW5nIGJ1ZyBpbiB0aGUgdXRmLTE2IGRlY29kZXIuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCisuLgorCisuLiBicG86IDE1MzY4CisuLiBkYXRlOiA4OTY3CisuLiBub25jZTogaUFhaWF0CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBbiBpc3N1ZSB0aGF0IGNhdXNlZCBieXRlY29kZSBnZW5lcmF0aW9uIHRvIGJlIG5vbi1kZXRlcm1pbmlzdGljIHdoZW4gdXNpbmcKK3JhbmRvbWl6ZWQgaGFzaGluZyAoLVIpIGhhcyBiZWVuIGZpeGVkLgorCisuLgorCisuLiBicG86IDE1ODk3CisuLiBkYXRlOiA4OTY2CisuLiBub25jZTogR1Fwb0JFCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCit6aXBpbXBvcnQuYyBkb2Vzbid0IGNoZWNrIHJldHVybiB2YWx1ZSBvZiBmc2VlaygpLiBQYXRjaCBieSBGZWxpcGUgQ3J1ei4KKworLi4KKworLi4gYnBvOiAxNjM2OQorLi4gZGF0ZTogODk2NQorLi4gbm9uY2U6IEd0UlR1eAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworR2xvYmFsIFB5VHlwZU9iamVjdHMgbm90IGluaXRpYWxpemVkIHdpdGggUHlUeXBlX1JlYWR5KC4uLikuCisKKy4uCisKKy4uIGJwbzogMTUwMzMKKy4uIGRhdGU6IDg5NjQKKy4uIG5vbmNlOiBnS2wxRWcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCB0aGUgZXhpdCBzdGF0dXMgYnVnIHdoZW4gbW9kdWxlcyBpbnZva2VkIHVzaW5nIC1tIHN3aXRjaCwgcmV0dXJuIHRoZQorcHJvcGVyIGZhaWx1cmUgcmV0dXJuIHZhbHVlICgxKS4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgSmVmZiBLbnVwcC4KKworLi4KKworLi4gYnBvOiAxMjI2OAorLi4gZGF0ZTogODk2MworLi4gbm9uY2U6IDZtbnNRSQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRmlsZSByZWFkbGluZSwgcmVhZGxpbmVzIGFuZCByZWFkKCkgbWV0aG9kcyBubyBsb25nZXIgbG9zZSBkYXRhIHdoZW4gYW4KK3VuZGVybHlpbmcgcmVhZCBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZC4gIElPRXJyb3IgaXMgbm8gbG9uZ2VyIHJhaXNlZCBkdWUKK3RvIGEgcmVhZCBzeXN0ZW0gY2FsbCByZXR1cm5pbmcgRUlOVFIgZnJvbSB3aXRoaW4gdGhlc2UgbWV0aG9kcy4KKworLi4KKworLi4gYnBvOiAxMzUxMgorLi4gZGF0ZTogODk2MgorLi4gbm9uY2U6IEtXOER1OQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQ3JlYXRlIH4vLnB5cGlyYyBzZWN1cmVseSAoQ1ZFLTIwMTEtNDk0NCkuICBJbml0aWFsIHBhdGNoIGJ5IFBoaWxpcCBKZW52ZXksCit0ZXN0ZWQgYnkgTWFnZWlhIGFuZCBEZWJpYW4uCisKKy4uCisKKy4uIGJwbzogNzcxOQorLi4gZGF0ZTogODk2MQorLi4gbm9uY2U6IE8ta2RwNgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworTWFrZSBkaXN0dXRpbHMgaWdub3JlIGBgLm5mcypgYCBmaWxlcyBpbnN0ZWFkIG9mIGNob2tpbmcgbGF0ZXIgb24uICBJbml0aWFsCitwYXRjaCBieSBTaWxlbnRHaG9zdCBhbmQgSmVmZiBSYW1uYW5pLgorCisuLgorCisuLiBicG86IDEwMDUzCisuLiBkYXRlOiA4OTYwCisuLiBub25jZTogck94cDBpCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitEb24ndCBjbG9zZSBGRHMgd2hlbiBGaWxlSU8uX19pbml0X18gZmFpbHMuIExvb3NlbHkgYmFzZWQgb24gdGhlIHdvcmsgYnkKK0hpcm9rYXp1IFlhbWFtb3RvLgorCisuLgorCisuLiBicG86IDE0Nzc1CisuLiBkYXRlOiA4OTU5CisuLiBub25jZTogQUhFM0xjCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYSBwb3RlbnRpYWwgcXVhZHJhdGljIGRpY3QgYnVpbGQtdXAgZHVlIHRvIHRoZSBnYXJiYWdlIGNvbGxlY3RvcgorcmVwZWF0ZWRseSB0cnlpbmcgdG8gdW50cmFjayBkaWN0cy4KKworLi4KKworLi4gYnBvOiAxNDQ5NAorLi4gZGF0ZTogODk1OAorLi4gbm9uY2U6IE9qSnFmdQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IF9fZnV0dXJlX18ucHkgYW5kIGl0cyBkb2N1bWVudGF0aW9uIHRvIG5vdGUgdGhhdCBhYnNvbHV0ZSBpbXBvcnRzIGFyZQordGhlIGRlZmF1bHQgYmVoYXZpb3IgaW4gMy4wIGluc3RlYWQgb2YgMi43LiBQYXRjaCBieSBTdmVuIE1hcm5hY2guCisKKy4uCisKKy4uIGJwbzogMTQ3NjEKKy4uIGRhdGU6IDg5NTcKKy4uIG5vbmNlOiBBOFRFRTYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBwb3RlbnRpYWwgbGVhayBvbiBhbiBlcnJvciBjYXNlIGluIHRoZSBpbXBvcnQgbWFjaGluZXJ5LgorCisuLgorCisuLiBicG86IDE0Njk5CisuLiBkYXRlOiA4OTU2CisuLiBub25jZTogQXVvZU1zCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggY2FsbGluZyB0aGUgY2xhc3NtZXRob2QgZGVzY3JpcHRvciBkaXJlY3RseS4KKworLi4KKworLi4gYnBvOiAxMTYwMworLi4gZGF0ZTogODk1NQorLi4gbm9uY2U6IGFHc0ZzbgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU2V0dGluZyBfX3JlcHJfXyB0byBfX3N0cl9fIG5vdyByYWlzZXMgYSBSdW50aW1lRXJyb3Igd2hlbiByZXByKCkgb3Igc3RyKCkKK2lzIGNhbGxlZCBvbiBzdWNoIGFuIG9iamVjdC4KKworLi4KKworLi4gYnBvOiAxNDY1OAorLi4gZGF0ZTogODk1NAorLi4gbm9uY2U6IGplU2txTAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGJpbmRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byBhIGJ1aWx0aW4gaW1wbGVtZW50YXRpb24gb2YgYSBzcGVjaWFsIG1ldGhvZAord2l0aCBhIGRpZmZlcmVudCBuYW1lLgorCisuLgorCisuLiBicG86IDE0NjEyCisuLiBkYXRlOiA4OTUzCisuLiBub25jZTogdVRCbHBnCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXgganVtcGluZyBhcm91bmQgd2l0aCBibG9ja3MgYnkgc2V0dGluZyBmX2xpbmVuby4KKworLi4KKworLi4gYnBvOiAxMzg4OQorLi4gZGF0ZTogODk1MgorLi4gbm9uY2U6IDVqVWJETAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQ2hlY2sgYW5kIChpZiBuZWNlc3NhcnkpIHNldCBGUFUgY29udHJvbCB3b3JkIGJlZm9yZSBjYWxsaW5nIGFueSBvZiB0aGUKK2R0b2EuYyBzdHJpbmcgPC0+IGZsb2F0IGNvbnZlcnNpb24gZnVuY3Rpb25zLCBvbiBNU1ZDIGJ1aWxkcyBvZiBQeXRob24uCitUaGlzIGZpeGVzIGlzc3VlcyB3aGVuIGVtYmVkZGluZyBQeXRob24gaW4gYSBEZWxwaGkgYXBwLgorCisuLgorCisuLiBicG86IDE0NTA1CisuLiBkYXRlOiA4OTUxCisuLiBub25jZTogb2VHRDRKCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgd2hlbiBkZWFsbG9jYXRpbmcgZmlsZSBvYmplY3RzIGNyZWF0ZWQgd2l0aAorUHlGaWxlX0Zyb21TdHJpbmcoKS4KKworLi4KKworLi4gYnBvOiAxNDQ3NAorLi4gZGF0ZTogODk1MAorLi4gbm9uY2U6IDhUdUtOTgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU2F2ZSBhbmQgcmVzdG9yZSBleGNlcHRpb24gc3RhdGUgaW4gdGhyZWFkLnN0YXJ0X25ld190aHJlYWQoKSB3aGlsZSB3cml0aW5nCitlcnJvciBtZXNzYWdlIGlmIHRoZSB0aHJlYWQgbGVhdmVzIGFuIHVuaGFuZGxlZCBleGNlcHRpb24uCisKKy4uCisKKy4uIGJwbzogMTMwMTkKKy4uIGRhdGU6IDg5NDkKKy4uIG5vbmNlOiBMWUhnSk8KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBwb3RlbnRpYWwgcmVmZXJlbmNlIGxlYWtzIGluIGJ5dGVhcnJheS5leHRlbmQoKS4gIFBhdGNoIGJ5IFN1bWFuIFNhaGEuCisKKy4uCisKKy4uIGJwbzogMTQzNzgKKy4uIGRhdGU6IDg5NDgKKy4uIG5vbmNlOiBTWUVTb3oKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBjb21waWxpbmcgYXN0LkltcG9ydEZyb20gbm9kZXMgd2l0aCBhICJfX2Z1dHVyZV9fIiBzdHJpbmcgYXMgdGhlIG1vZHVsZQorbmFtZSB0aGF0IHdhcyBub3QgaW50ZXJuZWQuCisKKy4uCisKKy4uIGJwbzogMTQzMzEKKy4uIGRhdGU6IDg5NDcKKy4uIG5vbmNlOiB4Y1RINm0KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1VzZSBzaWduaWZpY2FudGx5IGxlc3Mgc3RhY2sgc3BhY2Ugd2hlbiBpbXBvcnRpbmcgbW9kdWxlcyBieSBhbGxvY2F0aW5nIHBhdGgKK2J1ZmZlcnMgb24gdGhlIGhlYXAgaW5zdGVhZCBvZiB0aGUgc3RhY2suCisKKy4uCisKKy4uIGJwbzogMTQzMzQKKy4uIGRhdGU6IDg5NDYKKy4uIG5vbmNlOiBsOFlRaGcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1ByZXZlbnQgaW4gYSBzZWdmYXVsdCBpbiB0eXBlLl9fZ2V0YXR0cmlidXRlX18gd2hlbiBpdCB3YXMgbm90IHBhc3NlZAorc3RyaW5ncy4gQWxzbyBmaXggc2VnZmF1bHRzIGluIHRoZSBfX2dldGF0dHJpYnV0ZV9fIGFuZCBfX3NldGF0dHJfXyBtZXRob2RzCitvZiBvbGQtc3R5bGUgY2xhc3Nlcy4KKworLi4KKworLi4gYnBvOiAxNDE2MQorLi4gZGF0ZTogODk0NQorLi4gbm9uY2U6IFZvckE1TgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZml4IHRoZSBfX3JlcHJfXyBvZiBmaWxlIG9iamVjdHMgdG8gZXNjYXBlIHRoZSBmaWxlIG5hbWUuCisKKy4uCisKKy4uIGJwbzogMTQ2OTYyOQorLi4gZGF0ZTogODk0NAorLi4gbm9uY2U6IGVqODZaLQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQWxsb3cgY3ljbGVzIHRocm91Z2ggYW4gb2JqZWN0J3MgX19kaWN0X18gc2xvdCB0byBiZSBjb2xsZWN0ZWQuIChGb3IgZXhhbXBsZQoraWYgYGB4Ll9fZGljdF9fIGlzIHhgYCkuCisKKy4uCisKKy4uIGJwbzogMTM1MjEKKy4uIGRhdGU6IDg5NDMKKy4uIG5vbmNlOiBMX2luYksKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2RpY3Quc2V0ZGVmYXVsdCgpIG5vdyBkb2VzIG9ubHkgb25lIGxvb2t1cCBmb3IgdGhlIGdpdmVuIGtleSwgbWFraW5nIGl0CisiYXRvbWljIiBmb3IgbWFueSBwdXJwb3Nlcy4gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kuCisKKy4uCisKKy4uIGJwbzogMTYwMjEzMworLi4gZGF0ZTogODk0MgorLi4gbm9uY2U6IGxZcXBVbworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworb24gTWFjIE9TIFggYSBzaGFyZWQgbGlicmFyeSBidWlsZCAoYGAtLWVuYWJsZS1zaGFyZWRgYCkgbm93IGZpbGxzIHRoZQorYGBvcy5lbnZpcm9uYGAgdmFyaWFibGUgY29ycmVjdGx5LgorCisuLgorCisuLiBicG86IDEwNTM4CisuLiBkYXRlOiA4OTQxCisuLiBub25jZTogRjdHZXJyCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitXaGVuIHVzaW5nIHRoZSAicyoiIGNvZGUgd2l0aCBQeUFyZ19QYXJzZVR1cGxlKCkgdG8gZmlsbCBhIFB5X2J1ZmZlcgorc3RydWN0dXJlIHdpdGggZGF0YSBmcm9tIGFuIG9iamVjdCBzdXBwb3J0aW5nIG9ubHkgdGhlIG9sZCBQeUJ1ZmZlcgoraW50ZXJmYWNlLCBhIHJlZmVyZW5jZSB0byB0aGUgc291cmNlIG9iamVjdHMgaXMgbm93IHByb3Blcmx5IGFkZGVkIHRvIHRoZQorUHlfYnVmZmVyLm9iaiBtZW1iZXIuCisKKy4uCisKKy4uIGJwbzogMTI3MTgKKy4uIGRhdGU6IDg5NDAKKy4uIG5vbmNlOiBsckd1ZW8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGludGVyYWN0aW9uIHdpdGggd2lucGRiIG92ZXJyaWRpbmcgX19pbXBvcnRfXyBieSBzZXR0aW5nIGltcG9ydGVyCithdHRyaWJ1dGUgb24gQmFzZUNvbmZpZ3VyYXRvciBpbnN0YW5jZS4KKworLi4KKworLi4gYnBvOiAxNzUyMQorLi4gZGF0ZTogODkzOQorLi4gbm9uY2U6IHJER0tlNworLi4gc2VjdGlvbjogTGlicmFyeQorCitDb3JyZWN0ZWQgbm9uLWVuYWJsaW5nIG9mIGxvZ2dlciBmb2xsb3dpbmcgdHdvIGNhbGxzIHRvIGZpbGVDb25maWcoKS4KKworLi4KKworLi4gYnBvOiAxNzUwOAorLi4gZGF0ZTogODkzOAorLi4gbm9uY2U6IHNPNnFtWQorLi4gc2VjdGlvbjogTGlicmFyeQorCitDb3JyZWN0ZWQgTWVtb3J5SGFuZGxlciBjb25maWd1cmF0aW9uIGluIGRpY3RDb25maWcoKSB3aGVyZSB0aGUgdGFyZ2V0CitoYW5kbGVyIHdhc24ndCBjb25maWd1cmVkIGZpcnN0LgorCisuLgorCisuLiBicG86IDEwMjEyCisuLiBkYXRlOiA4OTM3CisuLiBub25jZTogWEdYQVFRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2NTdHJpbmdJTyBhbmQgc3RydWN0LnVucGFjayBzdXBwb3J0IG5ldyBidWZmZXIgb2JqZWN0cy4KKworLi4KKworLi4gYnBvOiAxMjA5OAorLi4gZGF0ZTogODkzNgorLi4gbm9uY2U6IGtjUXBEWQorLi4gc2VjdGlvbjogTGlicmFyeQorCittdWx0aXByb2Nlc3Npbmcgb24gV2luZG93cyBub3cgc3RhcnRzIGNoaWxkIHByb2Nlc3NlcyB1c2luZyB0aGUgc2FtZQorc3lzLmZsYWdzIGFzIHRoZSBjdXJyZW50IHByb2Nlc3MuICBJbml0aWFsIHBhdGNoIGJ5IFNlcmdleSBNZXplbnRzZXYuCisKKy4uCisKKy4uIGJwbzogODg2MgorLi4gZGF0ZTogODkzNQorLi4gbm9uY2U6IFdwQnRpXworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBjdXJzZXMgY2xlYW51cCB3aGVuIGdldGtleSBpcyBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbC4KKworLi4KKworLi4gYnBvOiA5MDkwCisuLiBkYXRlOiA4OTM0CisuLiBub25jZTogRlV5eVNpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1doZW4gYSBzb2NrZXQgd2l0aCBhIHRpbWVvdXQgZmFpbHMgd2l0aCBFV09VTERCTE9DSyBvciBFQUdBSU4sIHJldHJ5IHRoZQorc2VsZWN0KCkgbG9vcCBpbnN0ZWFkIG9mIGJhaWxpbmcgb3V0LiAgVGhpcyBpcyBiZWNhdXNlIHNlbGVjdCgpIGNhbgoraW5jb3JyZWN0bHkgcmVwb3J0IGEgc29ja2V0IGFzIHJlYWR5IGZvciByZWFkaW5nIChmb3IgZXhhbXBsZSwgaWYgaXQKK3JlY2VpdmVkIHNvbWUgZGF0YSB3aXRoIGFuIGludmFsaWQgY2hlY2tzdW0pLgorCisuLgorCisuLiBicG86IDEyODUwODYKKy4uIGRhdGU6IDg5MzMKKy4uIG5vbmNlOiBVN09OQkwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworR2V0IHJpZCBvZiB0aGUgcmVmY291bnRpbmcgaGFjayBhbmQgc3BlZWQgdXAgdXJsbGliLnVucXVvdGUoKS4KKworLi4KKworLi4gYnBvOiAxNzM2OAorLi4gZGF0ZTogODkzMgorLi4gbm9uY2U6IHk4UWlKZAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYW4gb2ZmLWJ5LW9uZSBlcnJvciBpbiB0aGUgUHl0aG9uIEpTT04gZGVjb2RlciB0aGF0IGNhdXNlZCBhIGZhaWx1cmUKK3doaWxlIGRlY29kaW5nIGVtcHR5IG9iamVjdCBsaXRlcmFscyB3aGVuIG9iamVjdF9wYWlyc19ob29rIHdhcyBzcGVjaWZpZWQuCisKKy4uCisKKy4uIGJwbzogMTcyNzgKKy4uIGRhdGU6IDg5MzEKKy4uIG5vbmNlOiBwT0Y0QW4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgY3Jhc2ggaW4gaGVhcHEuaGVhcHB1c2goKSBhbmQgaGVhcHEuaGVhcHBvcCgpIHdoZW4gdGhlIGxpc3QgaXMgYmVpbmcKK3Jlc2l6ZWQgY29uY3VycmVudGx5LgorCisuLgorCisuLiBicG86IDE3MDE4CisuLiBkYXRlOiA4OTMwCisuLiBub25jZTogbDhfc2E4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgUHJvY2Vzcy5qb2luKCkgcmV0cnkgaWYgb3Mud2FpdHBpZCgpIGZhaWxzIHdpdGggRUlOVFIuCisKKy4uCisKKy4uIGJwbzogMTQ3MjAKKy4uIGRhdGU6IDg5MjkKKy4uIG5vbmNlOiByalQwT0oKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc3FsaXRlMzogQ29udmVydCBkYXRldGltZSBtaWNyb3NlY29uZHMgY29ycmVjdGx5LiBQYXRjaCBieSBMb3dlIFRoaWRlcm1hbi4KKworLi4KKworLi4gYnBvOiAxNzIyNQorLi4gZGF0ZTogODkyOAorLi4gbm9uY2U6IFozOTZmTgorLi4gc2VjdGlvbjogTGlicmFyeQorCitKU09OIGRlY29kZXIgbm93IGNvdW50cyBjb2x1bW5zIGluIHRoZSBmaXJzdCBsaW5lIHN0YXJ0aW5nIHdpdGggMSwgYXMgaW4KK290aGVyIGxpbmVzLgorCisuLgorCisuLiBicG86IDc4NDIKKy4uIGRhdGU6IDg5MjcKKy4uIG5vbmNlOiBwMmtNQUMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYmFja3BvcnRlZCBmaXggZm9yIHB5X2NvbXBpbGUuY29tcGlsZSgpIHN5bnRheCBlcnJvciBoYW5kbGluZy4KKworLi4KKworLi4gYnBvOiAxMzE1MworLi4gZGF0ZTogODkyNgorLi4gbm9uY2U6IElON0RkbQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUa2ludGVyIGZ1bmN0aW9ucyBub3cgcmFpc2UgVGNsRXJyb3IgaW5zdGVhZCBvZiBWYWx1ZUVycm9yIHdoZW4gYSB1bmljb2RlCithcmd1bWVudCBjb250YWlucyBub24tQk1QIGNoYXJhY3Rlci4KKworLi4KKworLi4gYnBvOiA5NjY5CisuLiBkYXRlOiA4OTI1CisuLiBub25jZTogVGQ5YWxCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Byb3RlY3QgcmUgYWdhaW5zdCBpbmZpbml0ZSBsb29wcyBvbiB6ZXJvLXdpZHRoIG1hdGNoaW5nIGluIG5vbi1ncmVlZHkKK3JlcGVhdC4gIFBhdGNoIGJ5IE1hdHRoZXcgQmFybmV0dC4KKworLi4KKworLi4gYnBvOiAxMzE2OQorLi4gZGF0ZTogODkyNAorLi4gbm9uY2U6IHR4RE1nSAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbWF4aW1hbCByZXBldGl0aW9uIG51bWJlciBpbiBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBoYXMgYmVlbiBpbmNyZWFzZWQKK2Zyb20gNjU1MzQgdG8gMjE0NzQ4MzY0NyAob24gMzItYml0IHBsYXRmb3JtKSBvciA0Mjk0OTY3Mjk0IChvbiA2NC1iaXQpLgorCisuLgorCisuLiBicG86IDE2NzQzCisuLiBkYXRlOiA4OTIzCisuLiBub25jZTogN3Z3ZkROCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBtbWFwIG92ZXJmbG93IGNoZWNrIG9uIDMyIGJpdCBXaW5kb3dzLgorCisuLgorCisuLiBicG86IDExMzExCisuLiBkYXRlOiA4OTIyCisuLiBub25jZTogTnZnT2JRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1N0cmluZ0lPLnJlYWRsaW5lKDApIG5vdyByZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBhcyBhbGwgb3RoZXIgZmlsZS1saWtlCitvYmplY3RzLgorCisuLgorCisuLiBicG86IDE2ODAwCisuLiBkYXRlOiA4OTIxCisuLiBub25jZTogSHhTbzU4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3RlbXBmaWxlLmdldHRlbXBkaXIoKSBubyBsb25nZXIgbGVmdCB0ZW1wb3JhcnkgZmlsZXMgd2hlbiB0aGUgZGlzayBpcyBmdWxsLgorT3JpZ2luYWwgcGF0Y2ggYnkgQW1pciBTemVrZWx5LgorCisuLgorCisuLiBicG86IDEzNTU1CisuLiBkYXRlOiA4OTIwCisuLiBub25jZTogYlhHMWE0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2NQaWNrbGUgbm93IHN1cHBvcnRzIGZpbGVzIGxhcmdlciB0aGFuIDIgR2lCLgorCisuLgorCisuLiBicG86IDE3MDUyCisuLiBkYXRlOiA4OTE5CisuLiBub25jZTogVEVXZHpRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VuaXR0ZXN0IGRpc2NvdmVyeSBzaG91bGQgdXNlIHNlbGYudGVzdExvYWRlci4KKworLi4KKworLi4gYnBvOiA0NTkxCisuLiBkYXRlOiA4OTE4CisuLiBub25jZTogOXdKbEQ4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VpZCBhbmQgZ2lkIHZhbHVlcyBsYXJnZXIgdGhhbiAyKiozMSBhcmUgc3VwcG9ydGVkIG5vdy4KKworLi4KKworLi4gYnBvOiAxNzE0MQorLi4gZGF0ZTogODkxNworLi4gbm9uY2U6IHBYRklDcAorLi4gc2VjdGlvbjogTGlicmFyeQorCityYW5kb20udm9ubWlzZXN2YXJpYXRlKCkgbm8gbW9yZSBoYW5ncyBmb3IgbGFyZ2Uga2FwcGFzLgorCisuLgorCisuLiBicG86IDE3MTQ5CisuLiBkYXRlOiA4OTE2CisuLiBub25jZTogT050Sm5KCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCByYW5kb20udm9ubWlzZXN2YXJpYXRlIHRvIGFsd2F5cyByZXR1cm4gcmVzdWx0cyBpbiB0aGUgcmFuZ2UgWzAsCisyKm1hdGgucGldLgorCisuLgorCisuLiBicG86IDE0NzA1NDgKKy4uIGRhdGU6IDg5MTUKKy4uIG5vbmNlOiB4cl9Dc0oKKy4uIHNlY3Rpb246IExpYnJhcnkKKworWE1MR2VuZXJhdG9yIG5vdyB3b3JrcyB3aXRoIFVURi0xNiBhbmQgVVRGLTMyIGVuY29kaW5ncy4KKworLi4KKworLi4gYnBvOiA2OTc1CisuLiBkYXRlOiA4OTE0CisuLiBub25jZTogNEdvUFhXCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK29zLnBhdGgucmVhbHBhdGgoKSBub3cgY29ycmVjdGx5IHJlc29sdmVzIG11bHRpcGxlIG5lc3RlZCBzeW1saW5rcyBvbiBQT1NJWAorcGxhdGZvcm1zLgorCisuLgorCisuLiBicG86IDczNTgKKy4uIGRhdGU6IDg5MTMKKy4uIG5vbmNlOiAtalBsVHoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY1N0cmluZ0lPLlN0cmluZ0lPIG5vdyBzdXBwb3J0cyB3cml0aW5nIHRvIGFuZCByZWFkaW5nIGZyb20gYSBzdHJlYW0gbGFyZ2VyCit0aGFuIDIgR2lCIG9uIDY0LWJpdCBzeXN0ZW1zLgorCisuLgorCisuLiBicG86IDEwMzU1CisuLiBkYXRlOiA4OTEyCisuLiBub25jZTogbGtocW85CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIFNwb29sZWRUZW1wb3JhcnlGaWxlIGNsYXNzIG1vZGUgYW5kIG5hbWUgcHJvcGVydGllcyBhbmQgeHJlYWRsaW5lcyBtZXRob2QKK25vdyB3b3JrIGZvciB1bnJvbGxlZCBmaWxlcy4gIGVuY29kaW5nIGFuZCBuZXdsaW5lcyBwcm9wZXJ0aWVzIG5vdyByZW1vdmVkCithcyB0aGV5IGhhdmUgbm8gc2Vuc2UgYW5kIGFsd2F5cyBwcm9kdWNlZCBBdHRyaWJ1dGVFcnJvci4KKworLi4KKworLi4gYnBvOiAxNjY4NgorLi4gZGF0ZTogODkxMQorLi4gbm9uY2U6IHpUX2JwZQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIGxvdCBvZiBidWdzIGluIGF1ZGlvb3AgbW9kdWxlLiAgRml4ZWQgY3Jhc2hlcyBpbiBhdmdwcCgpLCBtYXhwcCgpCithbmQgcmF0ZWN2KCkuICBGaXhlZCBhbiBpbnRlZ2VyIG92ZXJmbG93IGluIGFkZCgpLCBiaWFzKCksIGFuZCByYXRlY3YoKS4KK3JldmVyc2UoKSwgbGluMmxpbigpIGFuZCByYXRlY3YoKSBubyBtb3JlIGxvc2UgcHJlY2lzaW9uIGZvciAzMi1iaXQgc2FtcGxlcy4KK21heCgpIGFuZCBybXMoKSBubyBtb3JlIHJldHVybnMgYSBuZWdhdGl2ZSByZXN1bHQgYW5kIHZhcmlvdXMgb3RoZXIKK2Z1bmN0aW9ucyBub3cgd29yayBjb3JyZWN0bHkgd2l0aCAzMi1iaXQgc2FtcGxlIC0weDgwMDAwMDAwLgorCisuLgorCisuLiBicG86IDE3MDczCisuLiBkYXRlOiA4OTEwCisuLiBub25jZTogd2xDYXIxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzb21lIGludGVnZXIgb3ZlcmZsb3dzIGluIHNxbGl0ZTMgbW9kdWxlLgorCisuLgorCisuLiBicG86IDYwODMKKy4uIGRhdGU6IDg5MDkKKy4uIG5vbmNlOiBNVkFJd0kKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG11bHRpcGxlIHNlZ21lbnRhdGlvbiBmYXVsdHMgb2NjdXJyZWQgd2hlbiBQeUFyZ19QYXJzZVR1cGxlIHBhcnNlcworbmVzdGVkIG11dGF0aW5nIHNlcXVlbmNlLgorCisuLgorCisuLiBicG86IDUyODkKKy4uIGRhdGU6IDg5MDgKKy4uIG5vbmNlOiA0YXp6Mm0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSBvbiBTb2xhcmlzLgorCisuLgorCisuLiBicG86IDE3MTA2CisuLiBkYXRlOiA4OTA3CisuLiBub25jZTogLTJfY2JWCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIHNlZ21lbnRhdGlvbiBmYXVsdCBpbiBpby5UZXh0SU9XcmFwcGVyIHdoZW4gYW4gdW5kZXJseWluZyBzdHJlYW0gb3IgYQorZGVjb2RlciBwcm9kdWNlcyBkYXRhIG9mIGFuIHVuZXhwZWN0ZWQgdHlwZSAoaS5lLiB3aGVuIGlvLlRleHRJT1dyYXBwZXIKK2luaXRpYWxpemVkIHdpdGggdGV4dCBzdHJlYW0gb3IgdXNlIGJ5dGVzLXRvLWJ5dGVzIGNvZGVjKS4KKworLi4KKworLi4gYnBvOiAxMzk5NAorLi4gZGF0ZTogODkwNgorLi4gbm9uY2U6IFk4OUdaQgorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgY29tcGF0aWJpbGl0eSBhbGlhcyBpbiBkaXN0dXRpbHMuY2NvbXBpbGVyIGZvcgorZGlzdHV0aWxzLnN5c2NvbmZpZy5jdXN0b21pemVfY29tcGlsZXIuCisKKy4uCisKKy4uIGJwbzogMTU2MzMKKy4uIGRhdGU6IDg5MDUKKy4uIG5vbmNlOiB0NDA3eVoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaHR0cGxpYi5IVFRQUmVzcG9uc2UgaXMgbm93IG1hcmsgY2xvc2VkIHdoZW4gdGhlIHNlcnZlciBzZW5kcyBsZXNzIHRoYW4gdGhlCithZHZlcnRpc2VkIENvbnRlbnQtTGVuZ3RoLgorCisuLgorCisuLiBicG86IDE1ODgxCisuLiBkYXRlOiA4OTA0CisuLiBub25jZTogVWZ6S21QCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGF0ZXhpdCBob29rIGluIG11bHRpcHJvY2Vzc2luZy4KKworLi4KKworLi4gYnBvOiAxNDM0MAorLi4gZGF0ZTogODkwMworLi4gbm9uY2U6IDZYTWZvWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitVcGdyYWRlIHRoZSBlbWJlZGRlZCBleHBhdCBsaWJyYXJ5IHRvIHZlcnNpb24gMi4xLjAuCisKKy4uCisKKy4uIGJwbzogMTExNTkKKy4uIGRhdGU6IDg5MDIKKy4uIG5vbmNlOiBQLTNNZjMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU0FYIHBhcnNlciBub3cgc3VwcG9ydHMgdW5pY29kZSBmaWxlIG5hbWVzLgorCisuLgorCisuLiBicG86IDY5NzIKKy4uIGRhdGU6IDg5MDEKKy4uIG5vbmNlOiBlMkxxNFQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHppcGZpbGUgbW9kdWxlIG5vIGxvbmdlciBvdmVyd3JpdGVzIGZpbGVzIG91dHNpZGUgb2YgaXRzIGRlc3RpbmF0aW9uCitwYXRoIHdoZW4gZXh0cmFjdGluZyBtYWxpY2lvdXMgemlwIGZpbGVzLgorCisuLgorCisuLiBicG86IDE3MDQ5CisuLiBkYXRlOiA4OTAwCisuLiBub25jZTogQ29PeDhXCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0xvY2FsaXplZCBjYWxlbmRhciBtZXRob2RzIG5vdyByZXR1cm4gdW5pY29kZSBpZiBhIGxvY2FsZSBpbmNsdWRlcyBhbgorZW5jb2RpbmcgYW5kIHRoZSByZXN1bHQgc3RyaW5nIGNvbnRhaW5zIG1vbnRoIG9yIHdlZWtkYXkgKHdhcyByZWdyZXNzaW9uCitmcm9tIFB5dGhvbiAyLjYpLgorCisuLgorCisuLiBicG86IDQ4NDQKKy4uIGRhdGU6IDg4OTkKKy4uIG5vbmNlOiBqdlhXZkwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworWmlwRmlsZSBub3cgcmFpc2VzIEJhZFppcGZpbGUgd2hlbiBvcGVucyBhIFpJUCBmaWxlIHdpdGggYW4gaW5jb21wbGV0ZSAiRW5kCitvZiBDZW50cmFsIERpcmVjdG9yeSIgcmVjb3JkLiAgT3JpZ2luYWwgcGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8gYW5kIEFsYW4KK01jSW50eXJlLgorCisuLgorCisuLiBicG86IDE1NTA1CisuLiBkYXRlOiA4ODk4CisuLiBub25jZTogLXBIOU1oCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2B1bml0dGVzdC5pbnN0YWxsSGFuZGxlcmAgbm8gbG9uZ2VyIGFzc3VtZXMgU0lHSU5UIGhhbmRsZXIgaXMgc2V0IHRvIGEKK2NhbGxhYmxlIG9iamVjdC4KKworLi4KKworLi4gYnBvOiAxNzA1MQorLi4gZGF0ZTogODg5NworLi4gbm9uY2U6IGVyS2cxVQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBtZW1vcnkgbGVhayBpbiBvcy5wYXRoLmlzZGlyKCkgb24gV2luZG93cy4gUGF0Y2ggYnkgUm9iZXJ0IFhpYW8uCisKKy4uCisKKy4uIGJwbzogMTM0NTQKKy4uIGRhdGU6IDg4OTYKKy4uIG5vbmNlOiA4MXJVSS0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgY3Jhc2ggd2hlbiBkZWxldGluZyBhbiBpdGVyYXRvciBjcmVhdGVkIGJ5IGl0ZXJ0b29scy50ZWUoKSBpZiBhbGwKK290aGVyIGl0ZXJhdG9ycyB3ZXJlIHZlcnkgYWR2YW5jZWQgYmVmb3JlLgorCisuLgorCisuLiBicG86IDE2OTkyCisuLiBkYXRlOiA4ODk1CisuLiBub25jZTogc19SWElNCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK09uIFdpbmRvd3MgaW4gc2lnbmFsLnNldF93YWtldXBfZmQsIHZhbGlkYXRlIHRoZSBmaWxlIGRlc2NyaXB0b3IgYXJndW1lbnQuCisKKy4uCisKKy4uIGJwbzogMTU4NjEKKy4uIGRhdGU6IDg4OTQKKy4uIG5vbmNlOiBnR2t4Q00KKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGtpbnRlciBub3cgY29ycmVjdGx5IHdvcmtzIHdpdGggbGlzdHMgYW5kIHR1cGxlcyBjb250YWluaW5nIHN0cmluZ3Mgd2l0aAord2hpdGVzcGFjZXMsIGJhY2tzbGFzaGVzIG9yIHVuYmFsYW5jZWQgYnJhY2VzLgorCisuLgorCisuLiBicG86IDEwNTI3CisuLiBkYXRlOiA4ODkzCisuLiBub25jZTogRXVOS2lwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VzZSBwb2xsKCkgaW5zdGVhZCBvZiBzZWxlY3QoKSBmb3IgbXVsdGlwcm9jZXNzaW5nIHBpcGVzLgorCisuLgorCisuLiBicG86IDk3MjAKKy4uIGRhdGU6IDg4OTIKKy4uIG5vbmNlOiBYUFhEa3MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworemlwZmlsZSBub3cgd3JpdGVzIGNvcnJlY3QgbG9jYWwgaGVhZGVycyBmb3IgZmlsZXMgbGFyZ2VyIHRoYW4gNCBHaUIuCisKKy4uCisKKy4uIGJwbzogMTM4OTkKKy4uIGRhdGU6IDg4OTEKKy4uIG5vbmNlOiB5ejNoWEEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworXEEsIFxaLCBhbmQgXEIgbm93IGNvcnJlY3RseSBtYXRjaCB0aGUgQSwgWiwgYW5kIEIgbGl0ZXJhbHMgd2hlbiB1c2VkIGluc2lkZQorY2hhcmFjdGVyIGNsYXNzZXMgKGUuZy4gJ1tcQV0nKS4gIFBhdGNoIGJ5IE1hdHRoZXcgQmFybmV0dC4KKworLi4KKworLi4gYnBvOiAxNjM5OAorLi4gZGF0ZTogODg5MAorLi4gbm9uY2U6IEpVN2NMNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitPcHRpbWl6ZSBkZXF1ZS5yb3RhdGUoKSBzbyB0aGF0IGl0IG9ubHkgbW92ZXMgcG9pbnRlcnMgYW5kIGRvZXNuJ3QgdG91Y2ggdGhlCit1bmRlcmx5aW5nIGRhdGEgd2l0aCBpbmNyZWZzIGFuZCBkZWNyZWZzLgorCisuLgorCisuLiBicG86IDE1MTA5CisuLiBkYXRlOiA4ODg5CisuLiBub25jZTogUWs2WFZ0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCByZWdyZXNzaW9uIGluIHNxbGl0ZTMncyBpdGVyZHVtcCBtZXRob2Qgd2hlcmUgaXQgd291bGQgZGllIHdpdGggYW4KK2VuY29kaW5nIGVycm9yIGlmIHRoZSBkYXRhYmFzZSBjb250YWluZWQgc3RyaW5nIHZhbHVlcyBjb250YWluaW5nIG5vbi1BU0NJSS4KKyhSZWdyZXNzaW9uIHdhcyBpbnRyb2R1Y2VkIGJ5IGZpeCBmb3IgOTc1MCkuCisKKy4uCisKKy4uIGJwbzogMTU1NDUKKy4uIGRhdGU6IDg4ODgKKy4uIG5vbmNlOiBGQ0JOTlYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHJlZ3Jlc3Npb24gaW4gc3FsaXRlMydzIGl0ZXJkdW1wIG1ldGhvZCB3aGVyZSBpdCB3YXMgZmFpbGluZyBpZiB0aGUKK2Nvbm5lY3Rpb24gdXNlZCBhIHJvdyBmYWN0b3J5IChzdWNoIGFzIHNxbGl0ZTMuUm93KSB0aGF0IHByb2R1Y2VkIHVuc29ydGFibGUKK29iamVjdHMuIChSZWdyZXNzaW9uIHdhcyBpbnRyb2R1Y2VkIGJ5IGZpeCBmb3IgOTc1MCkuCisKKy4uCisKKy4uIGJwbzogMTY4MjgKKy4uIGRhdGU6IDg4ODcKKy4uIG5vbmNlOiBLQjg4NlQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGVycm9yIGluY29ycmVjdGx5IHJhaXNlZCBieSBiejIuY29tcHJlc3MoJycpLiBQYXRjaCBieSBNYXJ0aW4gUGFja21hbi4KKworLi4KKworLi4gYnBvOiA5NTg2CisuLiBkYXRlOiA4ODg2CisuLiBub25jZTogOXR1S2dSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlZGVmaW5lIFNFTV9GQUlMRUQgb24gTWFjT1NYIHRvIGtlZXAgY29tcGlsZXIgaGFwcHkuCisKKy4uCisKKy4uIGJwbzogMTA1MjcKKy4uIGRhdGU6IDg4ODUKKy4uIG5vbmNlOiA3YnRWdk4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworbWFrZSBtdWx0aXByb2Nlc3NpbmcgdXNlIHBvbGwoKSBpbnN0ZWFkIG9mIHNlbGVjdCgpIGlmIGF2YWlsYWJsZS4KKworLi4KKworLi4gYnBvOiAxNjQ4NQorLi4gZGF0ZTogODg4NAorLi4gbm9uY2U6IGFVSnlUWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitOb3cgZmlsZSBkZXNjcmlwdG9ycyBhcmUgY2xvc2VkIGlmIGZpbGUgaGVhZGVyIHBhdGNoaW5nIGZhaWxlZCBvbiBjbG9zaW5nIGFuCithaWZjIGZpbGUuCisKKy4uCisKKy4uIGJwbzogMTIwNjUKKy4uIGRhdGU6IDg4ODMKKy4uIG5vbmNlOiBGQlpweUQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY29ubmVjdF9leCgpIG9uIGFuIFNTTCBzb2NrZXQgbm93IHJldHVybnMgdGhlIG9yaWdpbmFsIGVycm5vIHdoZW4gdGhlCitzb2NrZXQncyB0aW1lb3V0IGV4cGlyZXMgKGl0IHVzZWQgdG8gcmV0dXJuIE5vbmUpLgorCisuLgorCisuLiBicG86IDE2NzEzCisuLiBkYXRlOiA4ODgyCisuLiBub25jZTogWVg1d3lRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0aGUgcGFyc2luZyBvZiB0ZWwgdXJsIHdpdGggcGFyYW1zIHVzaW5nIHVybHBhcnNlIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAxNjQ0MworLi4gZGF0ZTogODg4MQorLi4gbm9uY2U6IFNuR29zaQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgZG9jc3RyaW5ncyB0byByZWd1bGFyIGV4cHJlc3Npb24gbWF0Y2ggb2JqZWN0cy4gUGF0Y2ggYnkgQW50b24gS2FzeWFub3YuCisKKy4uCisKKy4uIGJwbzogODg1MworLi4gZGF0ZTogODg4MAorLi4gbm9uY2U6IHZTUVBBRworLi4gc2VjdGlvbjogTGlicmFyeQorCitBbGxvdyBwb3J0IHRvIGJlIG9mIHR5cGUgbG9uZyBmb3Igc29ja2V0LmdldGFkZHJpbmZvKCkuCisKKy4uCisKKy4uIGJwbzogMTY1OTcKKy4uIGRhdGU6IDg4NzkKKy4uIG5vbmNlOiB6OHVNRU4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gYnVmZmVyZWQgYW5kIHRleHQgSU8sIGNhbGwgY2xvc2UoKSBvbiB0aGUgdW5kZXJseWluZyBzdHJlYW0gaWYgaW52b2tpbmcKK2ZsdXNoKCkgZmFpbHMuCisKKy4uCisKKy4uIGJwbzogMTU3MDEKKy4uIGRhdGU6IDg4NzgKKy4uIG5vbmNlOiByQWgxU3kKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IEhUVFBFcnJvciBpbmZvIG1ldGhvZCBjYWxsIHRvIHJldHVybiB0aGUgaGVhZGVycyBpbmZvcm1hdGlvbi4KKworLi4KKworLi4gYnBvOiAxNjY0NgorLi4gZGF0ZTogODg3NworLi4gbm9uY2U6IFRjM3ZzcQorLi4gc2VjdGlvbjogTGlicmFyeQorCitmdHBsaWIuRlRQLm1ha2Vwb3J0KCkgbWlnaHQgbG9zZSBzb2NrZXQgZXJyb3IgZGV0YWlscy4gKHBhdGNoIGJ5IFNlcmhpeQorU3RvcmNoYWthKQorCisuLgorCisuLiBicG86IDE2NjI2CisuLiBkYXRlOiA4ODc2CisuLiBub25jZTogUDl4S2N1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBpbmZpbml0ZSByZWN1cnNpb24gaW4gZ2xvYi5nbG9iKCkgb24gV2luZG93cyB3aGVuIHRoZSBwYXR0ZXJuIGNvbnRhaW5zIGEKK3dpbGRjYXJkIGluIHRoZSBkcml2ZSBvciBVTkMgcGF0aC4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy4uCisKKy4uIGJwbzogMTYyOTgKKy4uIGRhdGU6IDg4NzUKKy4uIG5vbmNlOiBrTjNvNTIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gSFRUUFJlc3BvbnNlLnJlYWQoKSwgY2xvc2UgdGhlIHNvY2tldCB3aGVuIHRoZXJlIGlzIG5vIENvbnRlbnQtTGVuZ3RoIGFuZAordGhlIGluY29taW5nIHN0cmVhbSBpcyBmaW5pc2hlZC4gIFBhdGNoIGJ5IEVyYW4gUnVuZHN0ZWluLgorCisuLgorCisuLiBicG86IDE2MjQ4CisuLiBkYXRlOiA4ODc0CisuLiBub25jZTogeU9vcG50CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Rpc2FibGUgY29kZSBleGVjdXRpb24gZnJvbSB0aGUgdXNlcidzIGhvbWUgZGlyZWN0b3J5IGJ5IHRraW50ZXIgd2hlbiB0aGUgLUUKK2ZsYWcgaXMgcGFzc2VkIHRvIFB5dGhvbi4gIFBhdGNoIGJ5IFphY2hhcnkgV2FyZS4KKworLi4KKworLi4gYnBvOiAxNjYyOAorLi4gZGF0ZTogODg3MworLi4gbm9uY2U6IHFuV01MMworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBtZW1vcnkgbGVhayBpbiBjdHlwZXMucmVzaXplKCkuCisKKy4uCisKKy4uIGJwbzogMTM2MTQKKy4uIGRhdGU6IDg4NzIKKy4uIG5vbmNlOiBidXFBMmoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHNldHVwLnB5IHJlZ2lzdGVyIGZhaWx1cmUgd2l0aCBpbnZhbGlkIHJzdCBpbiBkZXNjcmlwdGlvbi4gUGF0Y2ggYnkKK0p1bGllbiBDb3VydGVhdSBhbmQgUGllcnJlIFBhdWwgTGVmZWJ2cmUuCisKKy4uCisKKy4uIGJwbzogMTAxODIKKy4uIGRhdGU6IDg4NzEKKy4uIG5vbmNlOiAwbkg3OUgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHJlIG1vZHVsZSBkb2Vzbid0IHRydW5jYXRlIGluZGljZXMgdG8gMzIgYml0cyBhbnltb3JlLiBQYXRjaCBieSBTZXJoaXkKK1N0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxNjU3MworLi4gZGF0ZTogODg3MAorLi4gbm9uY2U6IGtLang3MgorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiAydG8zLCB0cmVhdCBlbnVtZXJhdGUoKSBsaWtlIGEgY29uc3VtaW5nIGNhbGwsIHNvIHN1cGVyZmx1b3VzIGxpc3QoKQorY2FsbHMgYXJlbid0IGFkZGVkIHRvIGZpbHRlcigpLCBtYXAoKSwgYW5kIHppcCgpIHdoaWNoIGFyZSBkaXJlY3RseSBwYXNzZWQKK2VudW1lcmF0ZSgpLgorCisuLgorCisuLiBicG86IDExNjAKKy4uIGRhdGU6IDg4NjkKKy4uIG5vbmNlOiBuNzlmT0EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGNvbXBpbGluZyBsYXJnZSByZWd1bGFyIGV4cHJlc3Npb25zIG9uIFVDUzIgYnVpbGRzLiBQYXRjaCBieSBTZXJoaXkKK1N0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxNDMxMworLi4gZGF0ZTogODg2OAorLi4gbm9uY2U6IFdwREI5MworLi4gc2VjdGlvbjogTGlicmFyeQorCit6aXBmaWxlIG5vdyByYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvciB3aGVuIHRoZSBjb21wcmVzc2lvbiB0eXBlIGlzIHVua25vd24uCisKKy4uCisKKy4uIGJwbzogMTY0MDgKKy4uIGRhdGU6IDg4NjcKKy4uIG5vbmNlOiBpcXprczQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGZpbGUgZGVzY3JpcHRvcnMgbm90IGJlaW5nIGNsb3NlZCBpbiBlcnJvciBjb25kaXRpb25zIGluIHRoZSB6aXBmaWxlCittb2R1bGUuICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCisuLgorCisuLiBicG86IDE2MzI3CisuLiBkYXRlOiA4ODY2CisuLiBub25jZTogdVZBSHYzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBzdWJwcm9jZXNzIG1vZHVsZSBubyBsb25nZXIgbGVha3MgZmlsZSBkZXNjcmlwdG9ycyB1c2VkIGZvcgorc3RkaW4vc3Rkb3V0L3N0ZGVyciBwaXBlcyB0byB0aGUgY2hpbGQgd2hlbiBmb3JrKCkgZmFpbHMuCisKKy4uCisKKy4uIGJwbzogMTQzOTYKKy4uIGRhdGU6IDg4NjUKKy4uIG5vbmNlOiBhVWdQdVYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSGFuZGxlIHRoZSBvZGQgcmFyZSBjYXNlIG9mIHdhaXRwaWQgcmV0dXJuaW5nIDAgd2hlbiBub3QgZXhwZWN0ZWQgaW4KK3N1YnByb2Nlc3MuUG9wZW4ud2FpdCgpLgorCisuLgorCisuLiBicG86IDE2NDExCisuLiBkYXRlOiA4ODY0CisuLiBub25jZTogOU1uMDdPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIGJ1ZyB3aGVyZSB6bGliLmRlY29tcHJlc3NvYmooKS5mbHVzaCgpIG1pZ2h0IHRyeSB0byBhY2Nlc3MKK3ByZXZpb3VzbHktZnJlZWQgbWVtb3J5LiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCisuLgorCisuLiBicG86IDE2MzUwCisuLiBkYXRlOiA4ODYzCisuLiBub25jZTogYjc3dEY2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3psaWIuZGVjb21wcmVzc29iaigpLmRlY29tcHJlc3MoKSBub3cgYWNjdW11bGF0ZXMgZGF0YSBmcm9tIHN1Y2Nlc3NpdmUgY2FsbHMKK2FmdGVyIEVPRiBpbiB1bnVzZWRfZGF0YSwgaW5zdGVhZCBvZiBvbmx5IHNhdmluZyB0aGUgYXJndW1lbnQgdG8gdGhlIGxhc3QKK2NhbGwuIGRlY29tcHJlc3NvYmooKS5mbHVzaCgpIG5vdyBjb3JyZWN0bHkgc2V0cyB1bnVzZWRfZGF0YSBhbmQKK3VuY29uc3VtZWRfdGFpbC4gQSBidWcgaW4gdGhlIGhhbmRsaW5nIG9mIE1lbW9yeUVycm9yIHdoZW4gc2V0dGluZyB0aGUKK3VuY29uc3VtZWRfdGFpbCBhdHRyaWJ1dGUgaGFzIGFsc28gYmVlbiBmaXhlZC4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxMjc1OQorLi4gZGF0ZTogODg2MgorLi4gbm9uY2U6IGM3cDhhdworLi4gc2VjdGlvbjogTGlicmFyeQorCitzcmVfcGFyc2Ugbm93IHJhaXNlcyBhIHByb3BlciBlcnJvciB3aGVuIHRoZSBuYW1lIG9mIHRoZSBncm91cCBpcyBtaXNzaW5nLgorSW5pdGlhbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCisuLgorCisuLiBicG86IDE2MTUyCisuLiBkYXRlOiA4ODYxCisuLiBub25jZTogTHlwdnNwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeCB0b2tlbml6ZSB0byBpZ25vcmUgd2hpdGVzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSBjb2RlIHdoZW4gbm8gbmV3bGluZSBpcworZm91bmQuICBQYXRjaCBieSBOZWQgQmF0Y2hlbGRlci4KKworLi4KKworLi4gYnBvOiAxNjIzMAorLi4gZGF0ZTogODg2MAorLi4gbm9uY2U6IFk3WFUwLQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBjcmFzaCBpbiBzZWxlY3Quc2VsZWN0KCkgd2hlbiBvbmUgb2YgdGhlIGxpc3RzIGNoYW5nZXMgc2l6ZSB3aGlsZQoraXRlcmF0ZWQgb24uICBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCisuLgorCisuLiBicG86IDE2MjI4CisuLiBkYXRlOiA4ODU5CisuLiBub25jZTogenNuYS04CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIGNyYXNoIGluIHRoZSBqc29uIG1vZHVsZSB3aGVyZSBhIGxpc3QgY2hhbmdlcyBzaXplIHdoaWxlIGl0IGlzIGJlaW5nCitlbmNvZGVkLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxNDg5NworLi4gZGF0ZTogODg1OAorLi4gbm9uY2U6IE9HYkFMagorLi4gc2VjdGlvbjogTGlicmFyeQorCitFbmhhbmNlIGVycm9yIG1lc3NhZ2VzIG9mIHN0cnVjdC5wYWNrIGFuZCBzdHJ1Y3QucGFja19pbnRvLiBQYXRjaCBieSBNYXR0aQorTcOka2kuCisKKy4uCisKKy4uIGJwbzogMTI4OTAKKy4uIGRhdGU6IDg4NTcKKy4uIG5vbmNlOiBrRGFEeGEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY2dpdGIgbm8gbG9uZ2VyIHByaW50cyBzcHVyaW91cyA8cD4gdGFncyBpbiB0ZXh0IG1vZGUgd2hlbiB0aGUgbG9nZGlyIG9wdGlvbgoraXMgc3BlY2lmaWVkLgorCisuLgorCisuLiBicG86IDE0Mzk4CisuLiBkYXRlOiA4ODU2CisuLiBub25jZTogalBUNE1FCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzaXplIHRydW5jYXRpb24gYW5kIG92ZXJmbG93IGJ1Z3MgaW4gdGhlIGJ6MiBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogNTE0OAorLi4gZGF0ZTogODg1NQorLi4gbm9uY2U6IFZIb08yQworLi4gc2VjdGlvbjogTGlicmFyeQorCitJZ25vcmUgJ1UnIGluIG1vZGUgZ2l2ZW4gdG8gZ3ppcC5vcGVuKCkgYW5kIGd6aXAuR3ppcEZpbGUoKS4KKworLi4KKworLi4gYnBvOiAxNjIyMAorLi4gZGF0ZTogODg1NAorLi4gbm9uY2U6IEtBdHZiZworLi4gc2VjdGlvbjogTGlicmFyeQorCit3c2dpcmVmIG5vdyBhbHdheXMgY2FsbHMgY2xvc2UoKSBvbiBhbiBpdGVyYWJsZSByZXNwb25zZS4gUGF0Y2ggYnkgQnJlbnQKK1R1YmJzLgorCisuLgorCisuLiBicG86IDE2NDYxCisuLiBkYXRlOiA4ODUzCisuLiBub25jZTogNFhMQjdMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1dhdmUgbGlicmFyeSBzaG91bGQgYmUgYWJsZSB0byBkZWFsIHdpdGggNEdCIHdhdiBmaWxlcywgYW5kIHNhbXBsZSByYXRlIG9mCis0NDEwMCBIei4KKworLi4KKworLi4gYnBvOiAxNjE3NgorLi4gZGF0ZTogODg1MgorLi4gbm9uY2U6IGlaei14NQorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcm9wZXJseSBpZGVudGlmeSBXaW5kb3dzIDggdmlhIHBsYXRmb3JtLnBsYXRmb3JtKCkKKworLi4KKworLi4gYnBvOiAxNTc1NgorLi4gZGF0ZTogODg1MQorLi4gbm9uY2U6IGNWNFRFVworLi4gc2VjdGlvbjogTGlicmFyeQorCitzdWJwcm9jZXNzLnBvbGwoKSBub3cgcHJvcGVybHkgaGFuZGxlcyBlcnJuby5FQ0hJTEQgdG8gcmV0dXJuIGEgcmV0dXJuY29kZQorb2YgMCB3aGVuIHRoZSBjaGlsZCBoYXMgYWxyZWFkeSBleGl0ZWQgb3IgY2Fubm90IGJlIHdhaXRlZCBvbi4KKworLi4KKworLi4gYnBvOiAxMjM3NgorLi4gZGF0ZTogODg1MAorLi4gbm9uY2U6IG1rcFF3dgorLi4gc2VjdGlvbjogTGlicmFyeQorCitQYXNzIG9uIHBhcmFtZXRlcnMgaW4gVGV4dFRlc3RSZXN1bHQuX19pbml0X18gc3VwZXIgY2FsbAorCisuLgorCisuLiBicG86IDE1MjIyCisuLiBkYXRlOiA4ODQ5CisuLiBub25jZTogbE9ubjZ0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luc2VydCBibGFuayBsaW5lIGFmdGVyIGVhY2ggbWVzc2FnZSBpbiBtYm94IG1haWxib3hlcworCisuLgorCisuLiBicG86IDE2MDEzCisuLiBkYXRlOiA4ODQ4CisuLiBub25jZTogbEpJbUtwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBDU1YgUmVhZGVyIHBhcnNpbmcgaXNzdWUgd2l0aCBlbmRpbmcgcXVvdGUgY2hhcmFjdGVycy4gUGF0Y2ggYnkgU2VyaGl5CitTdG9yY2hha2EuCisKKy4uCisKKy4uIGJwbzogMTU0MjEKKy4uIGRhdGU6IDg4NDcKKy4uIG5vbmNlOiBTVUVFUHYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4IGFuIE92ZXJmbG93RXJyb3IgaW4gQ2FsZW5kYXIuaXRlcm1vbnRoZGF0ZXMoKSBhZnRlciBkYXRldGltZS5NQVhZRUFSLgorUGF0Y2ggYnkgQ8OpZHJpYyBLcmllci4KKworLi4KKworLi4gYnBvOiAxNTk3MAorLi4gZGF0ZTogODg0NgorLi4gbm9uY2U6IDhkZW8ySworLi4gc2VjdGlvbjogTGlicmFyeQorCit4bWwuZXRyZWUuRWxlbWVudFRyZWUgbm93IHNlcmlhbGl6ZXMgY29ycmVjdGx5IHRoZSBlbXB0eSBIVE1MIGVsZW1lbnRzCisnbWV0YScgYW5kICdwYXJhbScuCisKKy4uCisKKy4uIGJwbzogMTU2NzYKKy4uIGRhdGU6IDg4NDUKKy4uIG5vbmNlOiBWX2F1UWgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTm93ICJtbWFwIiBjaGVjayBmb3IgZW1wdHkgZmlsZXMgYmVmb3JlIGRvaW5nIHRoZSBvZmZzZXQgY2hlY2suICBQYXRjaCBieQorU3RldmVuIFdpbGxpcy4KKworLi4KKworLi4gYnBvOiAxNTM0MAorLi4gZGF0ZTogODg0NAorLi4gbm9uY2U6IEFxbjBjMQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggaW1wb3J0aW5nIHRoZSByYW5kb20gbW9kdWxlIHdoZW4gL2Rldi91cmFuZG9tIGNhbm5vdCBiZSBvcGVuZWQuICBUaGlzCit3YXMgYSByZWdyZXNzaW9uIGNhdXNlZCBieSB0aGUgaGFzaCByYW5kb21pemF0aW9uIHBhdGNoLgorCisuLgorCisuLiBicG86IDE1ODQxCisuLiBkYXRlOiA4ODQzCisuLiBub25jZTogTTExbndhCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSByZWFkYWJsZSgpLCB3cml0YWJsZSgpIGFuZCBzZWVrYWJsZSgpIG1ldGhvZHMgb2YgaW8uQnl0ZXNJTyBhbmQKK2lvLlN0cmluZ0lPIG9iamVjdHMgbm93IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgb2JqZWN0IGhhcyBiZWVuIGNsb3NlZC4KK1BhdGNoIGJ5IEFsZXNzYW5kcm8gTW91cmEuCisKKy4uCisKKy4uIGJwbzogMTYxMTIKKy4uIGRhdGU6IDg4NDIKKy4uIG5vbmNlOiA3VVF0aHEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcGxhdGZvcm0uYXJjaGl0ZWN0dXJlIGRvZXMgbm90IGNvcnJlY3RseSBlc2NhcGUgYXJndW1lbnQgdG8gL3Vzci9iaW4vZmlsZS4KK1BhdGNoIGJ5IERhdmlkIEJlbmphbWluLgorCisuLgorCisuLiBicG86IDEyNzc2CisuLiBkYXRlOiA4ODQxCisuLiBub25jZTogTXpNLXhMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2NhbGwgYXJncGFyc2UgdHlwZSBmdW5jdGlvbiAoc3BlY2lmaWVkIGJ5IGFkZF9hcmd1bWVudCkgb25seSBvbmNlLiBCZWZvcmUsCit0aGUgdHlwZSBmdW5jdGlvbiB3YXMgY2FsbGVkIHR3aWNlIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBkZWZhdWx0IHdhcworc3BlY2lmaWVkIGFuZCB0aGUgYXJndW1lbnQgd2FzIGdpdmVuIGFzIHdlbGwuICBUaGlzIHdhcyBlc3BlY2lhbGx5Citwcm9ibGVtYXRpYyBmb3IgdGhlIEZpbGVUeXBlIHR5cGUsIGFzIGEgZGVmYXVsdCBmaWxlIHdvdWxkIGFsd2F5cyBiZSBvcGVuZWQsCitldmVuIGlmIGEgZmlsZSBhcmd1bWVudCB3YXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUuIChTZWUgYWxzbzoKK2Jwby0xMTgzOSkKKworLi4KKworLi4gYnBvOiAxNTkwNgorLi4gZGF0ZTogODg0MAorLi4gbm9uY2U6IHNZLVRndQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSByZWdyZXNzaW9uIGluIGFyZ3BhcnNlIGNhdXNlZCBieSB0aGUgcHJlY2VkaW5nIGNoYW5nZSwgd2hlbgorYWN0aW9uPSdhcHBlbmQnLCB0eXBlPSdzdHInIGFuZCBkZWZhdWx0PVtdLgorCisuLgorCisuLiBicG86IDEzMzcwCisuLiBkYXRlOiA4ODM5CisuLiBub25jZTogRTlSdmVLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Vuc3VyZSB0aGF0IGN0eXBlcyB3b3JrcyBvbiBNYWMgT1MgWCB3aGVuIFB5dGhvbiBpcyBjb21waWxlZCB1c2luZyB0aGUgY2xhbmcKK2NvbXBpbGVyCisKKy4uCisKKy4uIGJwbzogMTU1NDQKKy4uIGRhdGU6IDg4MzgKKy4uIG5vbmNlOiAzUWpXZFUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IERlY2ltYWwuX19mbG9hdF9fIHRvIHdvcmsgd2l0aCBwYXlsb2FkLWNhcnJ5aW5nIE5hTnMuCisKKy4uCisKKy4uIGJwbzogMTUxOTkKKy4uIGRhdGU6IDg4MzcKKy4uIG5vbmNlOiBpT09WMVgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IEphdmFTY3JpcHQncyBkZWZhdWx0IE1JTUUgdHlwZSB0byBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LiBQYXRjaCBieQorQm9odXNsYXYgS2FicmRhLgorCisuLgorCisuLiBicG86IDE1NDc3CisuLiBkYXRlOiA4ODM2CisuLiBub25jZTogOWdHcVB3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIGNtYXRoIGFuZCBtYXRoIG1vZHVsZXMsIGFkZCB3b3JrYXJvdW5kIGZvciBwbGF0Zm9ybXMgd2hvc2UKK3N5c3RlbS1zdXBwbGllZCBsb2cxcCBmdW5jdGlvbiBkb2Vzbid0IHJlc3BlY3Qgc2lnbnMgb2YgemVyb3MuCisKKy4uCisKKy4uIGJwbzogMTEwNjIKKy4uIGRhdGU6IDg4MzUKKy4uIG5vbmNlOiBaaFRGMjEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGFkZGluZyBhIG1lc3NhZ2UgZnJvbSBmaWxlIHRvIEJhYnlsIG1haWxib3guCisKKy4uCisKKy4uIGJwbzogMTU2NDYKKy4uIGRhdGU6IDg4MzQKKy4uIG5vbmNlOiBWYmhLcTQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJldmVudCBlcXVpdmFsZW50IG9mIGEgZm9yayBib21iIHdoZW4gdXNpbmcgbXVsdGlwcm9jZXNzaW5nIG9uIFdpbmRvd3MKK3dpdGhvdXQgdGhlICJpZiBfX25hbWVfXyA9PSAnX19tYWluX18nIiBpZGlvbS4KKworLi4KKworLi4gYnBvOiAxNTU2NworLi4gZGF0ZTogODgzMworLi4gbm9uY2U6IE1HdVo4TgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggTmFtZUVycm9yIHdoZW4gcnVubmluZyB0aHJlYWRpbmcuX3Rlc3QKKworLi4KKworLi4gYnBvOiAxNTQyNAorLi4gZGF0ZTogODgzMgorLi4gbm9uY2U6IDZaYUNmSgorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBhcnJheSBvYmplY3RzLiBQYXRjaCBieSBMdWR3aWcgSMOkaG5lLgorCisuLgorCisuLiBicG86IDE1NTM4CisuLiBkYXRlOiA4ODMxCisuLiBub25jZTogQ0pIdEFzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBjb21waWxhdGlvbiBvZiB0aGUgZ2V0bmFtZWluZm8oKSAvIGdldGFkZHJpbmZvKCkgZW11bGF0aW9uIGNvZGUuICBQYXRjaAorYnkgUGhpbGlwcCBIYWdlbWVpc3Rlci4KKworLi4KKworLi4gYnBvOiAxMjI4OAorLi4gZGF0ZTogODgzMAorLi4gbm9uY2U6IEVlQlVWQworLi4gc2VjdGlvbjogTGlicmFyeQorCitDb25zaWRlciAnMCcgYW5kICcwLjAnIGFzIHZhbGlkIGluaXRpYWx2YWx1ZSBmb3IgdGtpbnRlciBTaW1wbGVEaWFsb2cuCisKKy4uCisKKy4uIGJwbzogMTU0ODkKKy4uIGRhdGU6IDg4MjkKKy4uIG5vbmNlOiBQOS12SDkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgQnl0ZXNJTyBvYmplY3RzLiBQYXRjaCBieSBTZXJoaXkKK1N0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxNTQ2OQorLi4gZGF0ZTogODgyOAorLi4gbm9uY2U6IGVGc0pYWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBkZXF1ZSBvYmplY3RzLiBQYXRjaCBieSBTZXJoaXkKK1N0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxNTQ4NworLi4gZGF0ZTogODgyNworLi4gbm9uY2U6IHZ0RUJ0dworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBidWZmZXJlZCBJL08gb2JqZWN0cy4gUGF0Y2ggYnkgU2VyaGl5CitTdG9yY2hha2EuCisKKy4uCisKKy4uIGJwbzogMTU1MTIKKy4uIGRhdGU6IDg4MjYKKy4uIG5vbmNlOiBKTzNiYlYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGEgX19zaXplb2ZfXyBpbXBsZW1lbnRhdGlvbiBmb3IgcGFyc2VyLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCisuLgorCisuLiBicG86IDE1NDAyCisuLiBkYXRlOiA4ODI1CisuLiBub25jZTogTVdzMGQxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FuIGlzc3VlIGluIHRoZSBzdHJ1Y3QgbW9kdWxlIHRoYXQgY2F1c2VkIHN5cy5nZXRzaXplb2YgdG8gcmV0dXJuIGluY29ycmVjdAorcmVzdWx0cyBmb3Igc3RydWN0LlN0cnVjdCBpbnN0YW5jZXMgaGFzIGJlZW4gZml4ZWQuIEluaXRpYWwgcGF0Y2ggYnkgU2VyaGl5CitTdG9yY2hha2EuCisKKy4uCisKKy4uIGJwbzogMTUyMzIKKy4uIGRhdGU6IDg4MjQKKy4uIG5vbmNlOiBSNzIzSlcKKy4uIHNlY3Rpb246IExpYnJhcnkKKword2hlbiBtYW5nbGVfZnJvbSBpcyBUcnVlLCBlbWFpbC5HZW5lcmF0b3Igbm93IGNvcnJlY3RseSBtYW5nbGVzIGxpbmVzIHRoYXQKK3N0YXJ0IHdpdGggJ0Zyb20gJyB0aGF0IG9jY3VyIGluIGEgTUlNRSBwcmVhbWJsZSBvciBlcGlsb2cuCisKKy4uCisKKy4uIGJwbzogMTM5MjIKKy4uIGRhdGU6IDg4MjMKKy4uIG5vbmNlOiBtZzB5cHoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYXJncGFyc2Ugbm8gbG9uZ2VyIGluY29ycmVjdGx5IHN0cmlwcyAnLS0ncyB0aGF0IGFwcGVhciBhZnRlciB0aGUgZmlyc3Qgb25lLgorCisuLgorCisuLiBicG86IDEyMzUzCisuLiBkYXRlOiA4ODIyCisuLiBub25jZTogUzNOVVFiCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FyZ3BhcnNlIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBudWxsIGFyZ3VtZW50IHZhbHVlcy4KKworLi4KKworLi4gYnBvOiA2NDkzCisuLiBkYXRlOiA4ODIxCisuLiBub25jZTogb25BdU9vCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FuIGlzc3VlIGluIGN0eXBlcyBvbiBXaW5kb3dzIHRoYXQgY2F1c2VkIHN0cnVjdHVyZSBiaXRmaWVsZHMgb2YgdHlwZQorY3R5cGVzLmNfdWludDMyIGFuZCB3aWR0aCAzMiB0byBpbmNvcnJlY3RseSBiZSBzZXQgaGFzIGJlZW4gZml4ZWQuCisKKy4uCisKKy4uIGJwbzogMTQ2MzUKKy4uIGRhdGU6IDg4MjAKKy4uIG5vbmNlOiBSODlyc2wKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGVsbmV0bGliIHdpbGwgdXNlIHBvbGwoKSByYXRoZXIgdGhhbiBzZWxlY3QoKSB3aGVuIHBvc3NpYmxlIHRvIGF2b2lkCitmYWlsaW5nIGR1ZSB0byB0aGUgc2VsZWN0KCkgZmlsZSBkZXNjcmlwdG9yIGxpbWl0LgorCisuLgorCisuLiBicG86IDE1MjQ3CisuLiBkYXRlOiA4ODE5CisuLiBub25jZTogWFFsT2dZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpbGVJTyBub3cgcmFpc2VzIGFuIGVycm9yIHdoZW4gZ2l2ZW4gYSBmaWxlIGRlc2NyaXB0b3IgcG9pbnRpbmcgdG8gYQorZGlyZWN0b3J5LgorCisuLgorCisuLiBicG86IDE0NTkxCisuLiBkYXRlOiA4ODE4CisuLiBub25jZTogV2lMMzk4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBidWcgaW4gUmFuZG9tLmp1bXBhaGVhZCB0aGF0IGNvdWxkIHByb2R1Y2UgYW4gaW52YWxpZCBNZXJzZW5uZSBUd2lzdGVyCitzdGF0ZSBvbiA2NC1iaXQgbWFjaGluZXMuCisKKy4uCisKKy4uIGJwbzogNTM0NgorLi4gZGF0ZTogODgxNworLi4gbm9uY2U6IEthenFOZAorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcmVzZXJ2ZSBwZXJtaXNzaW9ucyBvZiBtYm94LCBNTURGIGFuZCBCYWJ5bCBtYWlsYm94IGZpbGVzIG9uIGZsdXNoKCkuCisKKy4uCisKKy4uIGJwbzogMTUyMTkKKy4uIGRhdGU6IDg4MTYKKy4uIG5vbmNlOiBxOGFoOFcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgcmVmZXJlbmNlIGxlYWsgd2hlbiBoYXNobGliLm5ldygpIGlzIGNhbGxlZCB3aXRoIGludmFsaWQgcGFyYW1ldGVycy4KKworLi4KKworLi4gYnBvOiA5NTU5CisuLiBkYXRlOiA4ODE1CisuLiBub25jZTogSE5ycFN6CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0lmIG1lc3NhZ2VzIHdlcmUgb25seSBhZGRlZCwgYSBuZXcgZmlsZSBpcyBubyBsb25nZXIgY3JlYXRlZCBhbmQgcmVuYW1lZAorb3ZlciB0aGUgb2xkIGZpbGUgd2hlbiBmbHVzaCgpIGlzIGNhbGxlZCBvbiBhbiBtYm94LCBNTURGIG9yIEJhYnlsIG1haWxib3guCisKKy4uCisKKy4uIGJwbzogMTQ2NTMKKy4uIGRhdGU6IDg4MTQKKy4uIG5vbmNlOiB3eHIxSHAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZW1haWwudXRpbHMubWt0aW1lX3R6KCkgbm8gbG9uZ2VyIHJlbGllcyBvbiBzeXN0ZW0gbWt0aW1lKCkgd2hlbiB0aW1lem9uZQorb2ZmZXN0IGlzIHN1cHBsaWVkLgorCisuLgorCisuLiBicG86IDYwNTYKKy4uIGRhdGU6IDg4MTMKKy4uIG5vbmNlOiBRQjdKa0YKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBtdWx0aXByb2Nlc3NpbmcgdXNlIHNldGJsb2NraW5nKFRydWUpIG9uIHRoZSBzb2NrZXRzIGl0IHVzZXMuICBPcmlnaW5hbAorcGF0Y2ggYnkgSiBEZXJlayBXaWxzb24uCisKKy4uCisKKy4uIGJwbzogMTUxMDEKKy4uIGRhdGU6IDg4MTIKKy4uIG5vbmNlOiBJV3ZrOVgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBwb29sIGZpbmFsaXplciBhdm9pZCBqb2luaW5nIGN1cnJlbnQgdGhyZWFkLgorCisuLgorCisuLiBicG86IDE1MDU0CisuLiBkYXRlOiA4ODExCisuLiBub25jZTogdEU3MkxfCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0EgYnVnIGluIHRva2VuaXplLnRva2VuaXplIHRoYXQgY2F1c2VkIHN0cmluZyBsaXRlcmFscyB3aXRoICdiJyBhbmQgJ2JyJworcHJlZml4ZXMgdG8gYmUgaW5jb3JyZWN0bHkgdG9rZW5pemVkIGhhcyBiZWVuIGZpeGVkLiBQYXRjaCBieSBTZXJoaXkKK1N0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxNTAzNgorLi4gZGF0ZTogODgxMAorLi4gbm9uY2U6IE1obTUxMgorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWlsYm94IG5vIGxvbmdlciB0aHJvd3MgYW4gZXJyb3IgaWYgYSBmbHVzaCBpcyBkb25lIGJldHdlZW4gb3BlcmF0aW9ucyB3aGVuCityZW1vdmluZyBvciBjaGFuZ2luZyBtdWx0aXBsZSBpdGVtcyBpbiBtYm94LCBNTURGLCBvciBCYWJ5bCBtYWlsYm94ZXMuCisKKy4uCisKKy4uIGJwbzogMTAxMzMKKy4uIGRhdGU6IDg4MDkKKy4uIG5vbmNlOiBScmVkU1QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBtdWx0aXByb2Nlc3NpbmcgZGVhbGxvY2F0ZSBidWZmZXIgaWYgc29ja2V0IHJlYWQgZmFpbHMuICBQYXRjaCBieQorSGFsbHZhcmQgQiBGdXJ1c2V0aC4KKworLi4KKworLi4gYnBvOiAxMzg1NAorLi4gZGF0ZTogODgwOAorLi4gbm9uY2U6IG1zOFBVMworLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIG11bHRpcHJvY2Vzc2luZyBwcm9wZXJseSBoYW5kbGUgbm9uLWludGVnZXIgbm9uLXN0cmluZyBhcmd1bWVudCB0bworU3lzdGVtRXhpdC4KKworLi4KKworLi4gYnBvOiAxMjE1NworLi4gZGF0ZTogODgwNworLi4gbm9uY2U6IGF3eFdRSgorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIHBvb2wubWFwKCkgZW1wdHkgaXRlcmFibGVzIGNvcnJlY3RseS4gIEluaXRpYWwgcGF0Y2ggYnkgbW91YWQuCisKKy4uCisKKy4uIGJwbzogMTQwMzYKKy4uIGRhdGU6IDg4MDYKKy4uIG5vbmNlOiB3ZnJOM04KKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGFuIGFkZGl0aW9uYWwgY2hlY2sgdG8gdmFsaWRhdGUgdGhhdCBwb3J0IGluIHVybHBhcnNlIGRvZXMgbm90IGdvIGluCitpbGxlZ2FsIHJhbmdlIGFuZCByZXR1cm5zIE5vbmUuCisKKy4uCisKKy4uIGJwbzogMTQ4ODgKKy4uIGRhdGU6IDg4MDUKKy4uIG5vbmNlOiA4ZDNHUEYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG1pc2JlaGF2aW91ciBvZiB0aGUgX21kNSBtb2R1bGUgd2hlbiBjYWxsZWQgb24gZGF0YSBsYXJnZXIgdGhhbiAyKiozMgorYnl0ZXMuCisKKy4uCisKKy4uIGJwbzogMTU5MDgKKy4uIGRhdGU6IDg4MDQKKy4uIG5vbmNlOiB4ZkQzUjQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG1pc2JlaGF2aW91ciBvZiB0aGUgc2hhMSBtb2R1bGUgd2hlbiBjYWxsZWQgb24gZGF0YSBsYXJnZXIgdGhhbiAyKiozMgorYnl0ZXMuCisKKy4uCisKKy4uIGJwbzogMTU5MTAKKy4uIGRhdGU6IDg4MDMKKy4uIG5vbmNlOiBYaWswZVkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IG1pc2JlaGF2aW91ciBvZiBfbWQ1IGFuZCBzaGExIG1vZHVsZXMgd2hlbiAidXBkYXRpbmciIG9uIGRhdGEgbGFyZ2VyCit0aGFuIDIqKjMyIGJ5dGVzLgorCisuLgorCisuLiBicG86IDE0ODc1CisuLiBkYXRlOiA4ODAyCisuLiBub25jZTogcEdOTi1XCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VzZSBmbG9hdCgnaW5mJykgaW5zdGVhZCBvZiBmbG9hdCgnMWU2NjY2NicpIGluIHRoZSBqc29uIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAxNDU3MgorLi4gZGF0ZTogODgwMQorLi4gbm9uY2U6IEZ4SW53RgorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcmV2ZW50IGJ1aWxkIGZhaWx1cmVzIHdpdGggcHJlLTMuNS4wIHZlcnNpb25zIG9mIHNxbGl0ZTMsIHN1Y2ggYXMgd2FzCitzaGlwcGVkIHdpdGggQ2VudG9zIDUgYW5kIE1hYyBPUyBYIDEwLjQuCisKKy4uCisKKy4uIGJwbzogMTQ0MjYKKy4uIGRhdGU6IDg4MDAKKy4uIG5vbmNlOiBHU2F5NDUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29ycmVjdCB0aGUgRGF0ZSBmb3JtYXQgaW4gRXhwaXJlcyBhdHRyaWJ1dGUgb2YgU2V0LUNvb2tpZSBIZWFkZXIgaW4KK0Nvb2tpZS5weS4KKworLi4KKworLi4gYnBvOiAxNDcyMQorLi4gZGF0ZTogODc5OQorLi4gbm9uY2U6IDNnRGFrbQorLi4gc2VjdGlvbjogTGlicmFyeQorCitTZW5kIHByb3BlciBoZWFkZXIsIENvbnRlbnQtbGVuZ3RoOiAwIHdoZW4gdGhlIGJvZHkgaXMgYW4gZW1wdHkgc3RyaW5nICcnLgorSW5pdGlhbCBQYXRjaCBjb250cmlidXRlZCBieSBBcnZlIEtudWRzZW4uCisKKy4uCisKKy4uIGJwbzogMTQwNzIKKy4uIGRhdGU6IDg3OTgKKy4uIG5vbmNlOiA0YlZaeWUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHBhcnNpbmcgb2YgJ3RlbCcgVVJJcyBpbiB1cmxwYXJzZSBieSBtYWtpbmcgdGhlIGNoZWNrIGZvciBwb3J0cworc3RyaWN0ZXIuCisKKy4uCisKKy4uIGJwbzogOTM3NAorLi4gZGF0ZTogODc5NworLi4gbm9uY2U6IDczZ19WXworLi4gc2VjdGlvbjogTGlicmFyeQorCitHZW5lcmljIHBhcnNpbmcgb2YgcXVlcnkgYW5kIGZyYWdtZW50IHBvcnRpb25zIG9mIHVybCBmb3IgYW55IHNjaGVtZS4KK1N1cHBvcnRlZCBib3RoIGJ5IFJGQzM5ODYgYW5kIFJGQzIzOTYuCisKKy4uCisKKy4uIGJwbzogMTQ3OTgKKy4uIGRhdGU6IDg3OTYKKy4uIG5vbmNlOiB1d19QVC0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBmdW5jdGlvbnMgaW4gcHljbGJyIHRvIHJhaXNlIGFuIEltcG9ydEVycm9yIHdoZW4gdGhlIGZpcnN0IHBhcnQgb2YgYQorZG90dGVkIG5hbWUgaXMgbm90IGEgcGFja2FnZS4gUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCisKKy4uCisKKy4uIGJwbzogMTQ4MzIKKy4uIGRhdGU6IDg3OTUKKy4uIG5vbmNlOiBaeUx2ZlkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4ZWQgdGhlIG9yZGVyIG9mIHRoZSBhcmd1bWVudCByZWZlcmVuY2VzIGluIHRoZSBlcnJvciBtZXNzYWdlIHByb2R1Y2VkIGJ5Cit1bml0dGVzdCdzIGFzc2VydEl0ZW1zRXF1YWwuCisKKy4uCisKKy4uIGJwbzogMTQ4MjkKKy4uIGRhdGU6IDg3OTQKKy4uIG5vbmNlOiB5V1pLeVAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGJpc2VjdCBpc3N1ZXMgdW5kZXIgNjQtYml0IFdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogMTQ3NzcKKy4uIGRhdGU6IDg3OTMKKy4uIG5vbmNlOiBTUzBYRWYKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGtpbnRlciBtYXkgcmV0dXJuIHVuZGVjb2RlZCBVVEYtOCBieXRlcyBhcyBhIHN0cmluZyB3aGVuIGFjY2Vzc2luZyB0aGUgVGsKK2NsaXBib2FyZC4gIE1vZGlmeSBjbGlwYm9hcmRfZ2V0KCkgdG8gZmlyc3QgcmVxdWVzdCB0eXBlIFVURjhfU1RSSU5HIHdoZW4gbm8KK3NwZWNpZmljIHR5cGUgaXMgcmVxdWVzdGVkIGluIGFuIFgxMSB3aW5kb3dpbmcgZW52aXJvbm1lbnQsIGZhbGxpbmcgYmFjayB0bwordGhlIGN1cnJlbnQgZGVmYXVsdCB0eXBlIFNUUklORyBpZiB0aGF0IGZhaWxzLiBPcmlnaW5hbCBwYXRjaCBieSBUaG9tYXMKK0tsdXl2ZXIuCisKKy4uCisKKy4uIGJwbzogMTI1NDEKKy4uIGRhdGU6IDg3OTIKKy4uIG5vbmNlOiBzcnZVWWEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQmUgbGVuaWVudCB3aXRoIHF1b3RlcyBhcm91bmQgUmVhbG0gZmllbGQgd2l0aCBIVFRQIEJhc2ljIEF1dGhlbnRhdGlvbiBpbgordXJsbGliMi4KKworLi4KKworLi4gYnBvOiAxNDY2MgorLi4gZGF0ZTogODc5MQorLi4gbm9uY2U6IGtCZ0dlbgorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcmV2ZW50IHNodXRpbCBmYWlsdXJlcyBvbiBPUyBYIHdoZW4gZGVzdGluYXRpb24gZG9lcyBub3Qgc3VwcG9ydCBjaGZsYWcKK29wZXJhdGlvbnMuICBQYXRjaCBieSBIeW5layBTY2hsYXdhY2suCisKKy4uCisKKy4uIGJwbzogMTQxNTcKKy4uIGRhdGU6IDg3OTAKKy4uIG5vbmNlOiBRVlA2dk8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRpbWUuc3RycHRpbWUgZmFpbGluZyB3aXRob3V0IGEgeWVhciBvbiBGZWJydWFyeSAyOXRoLiBQYXRjaCBieSBIeW5laworU2NobGF3YWNrLgorCisuLgorCisuLiBicG86IDE0NzY4CisuLiBkYXRlOiA4Nzg5CisuLiBub25jZTogVUZ6clFhCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK29zLnBhdGguZXhwYW5kdXNlcignfi9hJykgZG9lc24ndCB3b3JrIGNvcnJlY3RseSB3aGVuIEhPTUUgaXMgJy8nLgorCisuLgorCisuLiBicG86IDEzMTgzCisuLiBkYXRlOiA4Nzg4CisuLiBub25jZTogV1hvaG9VCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwZGIgc2tpcHBpbmcgZnJhbWVzIGFmdGVyIGhpdHRpbmcgYSBicmVha3BvaW50IGFuZCBydW5uaW5nIHN0ZXAuICBQYXRjaAorYnkgWGF2aWVyIGRlIEdheWUuCisKKy4uCisKKy4uIGJwbzogMTQ2NjQKKy4uIGRhdGU6IDg3ODcKKy4uIG5vbmNlOiBwZHlmUUUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSXQgaXMgbm93IHBvc3NpYmxlIHRvIHVzZSBAdW5pdHRlc3Quc2tpcHtJZixVbmxlc3N9IG9uIGEgdGVzdCBjbGFzcyB0aGF0Citkb2Vzbid0IGluaGVyaXQgZnJvbSBUZXN0Q2FzZSAoaS5lLiBhIG1peGluKS4KKworLi4KKworLi4gYnBvOiAxNDE2MAorLi4gZGF0ZTogODc4NgorLi4gbm9uY2U6IGVQOWE1ZQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUYXJGaWxlLmV4dHJhY3RmaWxlKCkgZmFpbGVkIHRvIHJlc29sdmUgc3ltYm9saWMgbGlua3Mgd2hlbiB0aGUgbGlua3Mgd2VyZQorbm90IGxvY2F0ZWQgaW4gYW4gYXJjaGl2ZSBzdWJkaXJlY3RvcnkuCisKKy4uCisKKy4uIGJwbzogMTQ2MzgKKy4uIGRhdGU6IDg3ODUKKy4uIG5vbmNlOiBjZk1pbVgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcHlkb2Mgbm93IHRyZWF0cyBub24tc3RyaW5nIF9fbmFtZV9fIHZhbHVlcyBhcyBpZiB0aGV5IHdlcmUgbWlzc2luZywgaW5zdGVhZAorb2YgcmFpc2luZyBhbiBlcnJvci4KKworLi4KKworLi4gYnBvOiAxMzY4NAorLi4gZGF0ZTogODc4NAorLi4gbm9uY2U6IEdNYWtRaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggaHR0cGxpYiB0dW5uZWwgaXNzdWUgb2YgaW5maW5pdGUgbG9vcHMgZm9yIGNlcnRhaW4gc2l0ZXMgd2hpY2ggc2VuZCBFT0YKK3dpdGhvdXQgdHJhaWxpbmcgXHJcbi4KKworLi4KKworLi4gYnBvOiAxNDMwOAorLi4gZGF0ZTogODc4MworLi4gbm9uY2U6IFZJX1l0VworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYW4gZXhjZXB0aW9uIHdoZW4gYSAiZHVtbXkiIHRocmVhZCBpcyBpbiB0aGUgdGhyZWFkaW5nIG1vZHVsZSdzIGFjdGl2ZQorbGlzdCBhZnRlciBhIGZvcmsoKS4KKworLi4KKworLi4gYnBvOiAxNDUzOAorLi4gZGF0ZTogODc4MgorLi4gbm9uY2U6IGw2MWVJVgorLi4gc2VjdGlvbjogTGlicmFyeQorCitIVE1MUGFyc2VyIGNhbiBub3cgcGFyc2UgY29ycmVjdGx5IHN0YXJ0IHRhZ3MgdGhhdCBjb250YWluIGEgYmFyZSAnLycuCisKKy4uCisKKy4uIGJwbzogMTQ0NTIKKy4uIGRhdGU6IDg3ODEKKy4uIG5vbmNlOiBUUE5nejgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU3lzTG9nSGFuZGxlciBubyBsb25nZXIgaW5zZXJ0cyBhIFVURi04IEJPTSBpbnRvIHRoZSBtZXNzYWdlLgorCisuLgorCisuLiBicG86IDEzNDk2CisuLiBkYXRlOiA4NzgwCisuLiBub25jZTogWlRxNnlrCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwb3RlbnRpYWwgb3ZlcmZsb3cgaW4gYmlzZWN0LmJpc2VjdCBhbGdvcml0aG0gd2hlbiBhcHBsaWVkIHRvIGEKK2NvbGxlY3Rpb24gb2Ygc2l6ZSA+IHN5cy5tYXhzaXplIC8gMi4KKworLi4KKworLi4gYnBvOiAxNDM5OQorLi4gZGF0ZTogODc3OQorLi4gbm9uY2U6IHVjbm9xNQorLi4gc2VjdGlvbjogTGlicmFyeQorCit6aXBmaWxlIG5vdyByZWNvZ25pemVzIHRoYXQgdGhlIGFyY2hpdmUgaGFzIGJlZW4gbW9kaWZpZWQgZXZlbiBpZiBvbmx5IHRoZQorY29tbWVudCBpcyBjaGFuZ2VkLiAgQXMgYSBjb25zZXF1ZW5jZSBvZiB0aGlzIGZpeCwgWmlwRmlsZSBpcyBub3cgYSBuZXcKK3N0eWxlIGNsYXNzLgorCisuLgorCisuLiBicG86IDc5NzgKKy4uIGRhdGU6IDg3NzgKKy4uIG5vbmNlOiBEZFl3enUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU29ja2V0U2VydmVyIG5vdyByZXN0YXJ0cyB0aGUgc2VsZWN0KCkgY2FsbCB3aGVuIEVJTlRSIGlzIHJldHVybmVkLiAgVGhpcworYXZvaWRzIGNyYXNoaW5nIHRoZSBzZXJ2ZXIgbG9vcCB3aGVuIGEgc2lnbmFsIGlzIHJlY2VpdmVkLiBQYXRjaCBieSBKZXJ6eQorS296ZXJhLgorCisuLgorCisuLiBicG86IDEwMzQwCisuLiBkYXRlOiA4Nzc3CisuLiBub25jZTogUVpEREstCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FzeW5jb3JlIC0gcHJvcGVybHkgaGFuZGxlIEVJTlZBTCBpbiBkaXNwYXRjaGVyIGNvbnN0cnVjdG9yIG9uIE9TWDsgYXZvaWQgdG8KK2NhbGwgaGFuZGxlX2Nvbm5lY3QgaW4gY2FzZSBvZiBhIGRpc2Nvbm5lY3RlZCBzb2NrZXQgd2hpY2ggd2FzIG5vdCBtZWFudCB0bworY29ubmVjdC4KKworLi4KKworLi4gYnBvOiAxMjc1NworLi4gZGF0ZTogODc3NgorLi4gbm9uY2U6IGxmQ0NLbworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIHNraXBwaW5nIG9mIGRvY3Rlc3RzIHdoZW4gcHl0aG9uIGlzIHJ1biB3aXRoIC1PTyBzbyB0aGF0IGl0IHdvcmtzIGluCit1bml0dGVzdCdzIHZlcmJvc2UgbW9kZSBhcyB3ZWxsIGFzIG5vbi12ZXJib3NlIG1vZGUuCisKKy4uCisKKy4uIGJwbzogMTM2OTQKKy4uIGRhdGU6IDg3NzUKKy4uIG5vbmNlOiBxcmVzV0MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYXN5bmNocm9ub3VzIGNvbm5lY3QgaW4gYXN5bmNvcmUuZGlzcGF0Y2hlciBkb2VzIG5vdCBzZXQgYWRkciBhdHRyaWJ1dGUuCisKKy4uCisKKy4uIGJwbzogMTA0ODQKKy4uIGRhdGU6IDg3NzQKKy4uIG5vbmNlOiBOZ0RTZEoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBDR0lIVFRQU2VydmVyJ3MgUEFUSF9JTkZPIGhhbmRsaW5nIHByb2JsZW0uCisKKy4uCisKKy4uIGJwbzogMTExOTkKKy4uIGRhdGU6IDg3NzMKKy4uIG5vbmNlOiBVTWl2Q2EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSB3aXRoIHVybGxpYiB3aGljaCBoYW5ncyBvbiBwYXJ0aWN1bGFyIGZ0cCB1cmxzLgorCisuLgorCisuLiBicG86IDE0MjUyCisuLiBkYXRlOiA4NzcyCisuLiBub25jZTogLTV6akw5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzdWJwcm9jZXNzLlBvcGVuLnRlcm1pbmF0ZSgpIHRvIG5vdCByYWlzZSBhbiBlcnJvciB1bmRlciBXaW5kb3dzIHdoZW4KK3RoZSBjaGlsZCBwcm9jZXNzIGhhcyBhbHJlYWR5IGV4aXRlZC4KKworLi4KKworLi4gYnBvOiAxNDE5NQorLi4gZGF0ZTogODc3MQorLi4gbm9uY2U6IFhwQ0pZUQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBbiBpc3N1ZSB0aGF0IGNhdXNlZCB3ZWFrcmVmLldlYWtTZXQgaW5zdGFuY2VzIHRvIGluY29ycmVjdGx5IHJldHVybiBUcnVlCitmb3IgYSBXZWFrU2V0IGluc3RhbmNlICdhJyBpbiBib3RoICdhIDwgYScgYW5kICdhID4gYScgaGFzIGJlZW4gZml4ZWQuCisKKy4uCisKKy4uIGJwbzogMTQxNTkKKy4uIGRhdGU6IDg3NzAKKy4uIG5vbmNlOiAtckppT2QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBsZW4oKSBvZiB3ZWFrIHNldHMgdG8gcmV0dXJuIGEgYmV0dGVyIGFwcHJveGltYXRpb24gd2hlbiBzb21lCitvYmplY3RzIGFyZSBkZWFkIG9yIGR5aW5nLiAgTW9yZW92ZXIsIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBub3cgTygxKSByYXRoZXIKK3RoYW4gTyhuKS4KKworLi4KKworLi4gYnBvOiAyOTQ1CisuLiBkYXRlOiA4NzY5CisuLiBub25jZTogUVpDZmVICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgdGhlIGRpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBhd2FyZSBvZiBiZGlzdF9ycG0gcHJvZHVjdHMuCisKKy4uCisKKy4uIGJwbzogNjg4NAorLi4gZGF0ZTogODc2OAorLi4gbm9uY2U6IHctRFdGRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggbG9uZy1zdGFuZGluZyBidWdzIHdpdGggTUFOSUZFU1QuaW4gcGFyc2luZyBpbiBkaXN0dXRpbHMgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiAxNjQ0MQorLi4gZGF0ZTogODc2NworLi4gbm9uY2U6IHptMWdhZAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBdm9pZCBleGNlc3NpdmUgbWVtb3J5IHVzYWdlIHdvcmtpbmcgd2l0aCBsYXJnZSBnemlwIGZpbGVzIHVzaW5nIHRoZSBnemlwCittb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMTU3ODIKKy4uIGRhdGU6IDg3NjYKKy4uIG5vbmNlOiBjLXJ0SHoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJldmVudCBjb21waWxlIGVycm9ycyBvZiBPUyBYIENhcmJvbiBtb2R1bGVzIF9GbSwgX1FkLCBhbmQgX1Fkb2ZmcyB3aGVuCitjb21waWxpbmcgd2l0aCBhbiBTREsgb2YgMTAuNyBvciBsYXRlci4gIFRoZSBPUyBYIEFQSXMgdGhleSB3cmFwIGhhdmUgbG9uZworYmVlbiBkZXByZWNhdGVkIGFuZCBoYXZlIG5vdyBiZWVuIHJlbW92ZWQgd2l0aCAxMC43LiBUaGVzZSBtb2R1bGVzIHdlcmUKK2FscmVhZHkgZW1wdHkgZm9yIDY0LWJpdCBidWlsZHMgYW5kIGhhdmUgYmVlbiByZW1vdmVkIGluIFB5dGhvbiAzLgorCisuLgorCisuLiBicG86IDE3NDc3CisuLiBkYXRlOiA4NzY1CisuLiBub25jZTogbWtvektHCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VwZGF0ZSB0aGUgYnNkZGIgbW9kdWxlIHRvIHB5YnNkZGIgNS4zLjAsIHN1cHBvcnRpbmcgZGItNS54LCBhbmQgZHJvcHBpbmcKK3N1cHBvcnQgZm9yIGRiLTQuMSBhbmQgZGItNC4yLgorCisuLgorCisuLiBicG86IDE3MTkyCisuLiBkYXRlOiA4NzY0CisuLiBub25jZTogVTBvS0ZvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VwZGF0ZSB0aGUgY3R5cGVzIG1vZHVsZSdzIGxpYmZmaSB0byB2My4wLjEzLiAgVGhpcyBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEKK3N0YWNrIG1pc2FsaWdubWVudCBpc3N1ZSBvbiB4ODYgYW5kIGlzc3VlcyBvbiBzb21lIG1vcmUgcmVjZW50IHBsYXRmb3Jtcy4KKworLi4KKworLi4gYnBvOiAxMjI2OAorLi4gZGF0ZTogODc2MworLi4gbm9uY2U6IGNXdmNHQQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgaW8gbW9kdWxlIGZpbGUgb2JqZWN0IHdyaXRlIG1ldGhvZHMgbm8gbG9uZ2VyIGFib3J0IGVhcmx5IHdoZW4gYSB3cml0ZQorc3lzdGVtIGNhbGxzIGlzIGludGVycnVwdGVkIChFSU5UUikuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODc2MgorLi4gbm9uY2U6IFI0MUdOdworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIGxlYWsgb2YgYSBkaWN0IGluIHRoZSB0aW1lIG1vZHVsZSB3aGVuIHVzZWQgaW4gYW4gZW1iZWRkZWQKK2ludGVycHJldGVyIHRoYXQgaXMgcmVwZWF0ZWRseSBpbml0aWFsaXplZCBhbmQgc2h1dGRvd24gYW5kIHJlaW5pdGlhbGl6ZWQuCisKKy4uCisKKy4uIGJwbzogMTIyNjgKKy4uIGRhdGU6IDg3NjEKKy4uIG5vbmNlOiBfRG5zUDIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRmlsZSByZWFkbGluZSwgcmVhZGxpbmVzIGFuZCByZWFkIG9yIHJlYWRhbGwgbWV0aG9kcyBubyBsb25nZXIgbG9zZSBkYXRhCit3aGVuIGFuIHVuZGVybHlpbmcgcmVhZCBzeXN0ZW0gY2FsbCBpcyBpbnRlcnJ1cHRlZCB3aXRoaW4gYW4gaW8gbW9kdWxlCitvYmplY3QuICBJT0Vycm9yIGlzIG5vIGxvbmdlciByYWlzZWQgZHVlIHRvIGEgcmVhZCBzeXN0ZW0gY2FsbCByZXR1cm5pbmcKK0VJTlRSIGZyb20gd2l0aGluIHRoZXNlIG1ldGhvZHMuCisKKy4uCisKKy4uIGJwbzogMTYwMTIKKy4uIGRhdGU6IDg3NjAKKy4uIG5vbmNlOiBPM2U2Ry0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgcmVncmVzc2lvbiBpbiBweWV4cGF0LiBUaGUgcGFyc2VyJ3MgVXNlRm9yZWlnbkRURCgpIG1ldGhvZCBkb2Vzbid0CityZXF1aXJlIGFuIGFyZ3VtZW50IGFnYWluLgorCisuLgorCisuLiBicG86IDEzNTkwCisuLiBkYXRlOiA4NzU5CisuLiBub25jZTogMWFFd2g0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK09TIFggWGNvZGUgNCAtIGltcHJvdmUgc3VwcG9ydCBmb3IgdW5pdmVyc2FsIGV4dGVuc2lvbiBtb2R1bGVzIEluCitwYXJ0aWN1bGFyLCBmaXggZXh0ZW5zaW9uIG1vZHVsZSBidWlsZCBmYWlsdXJlcyB3aGVuIHRyeWluZyB0byB1c2UKKzMyLWJpdC1vbmx5IGluc3RhbGxlciBQeXRob25zIG9uIHN5c3RlbXMgd2l0aCBYY29kZSA0IChjdXJyZW50bHkgT1MgWCAxMC44LCAxMC43LAorYW5kIG9wdGlvbmFsbHkgMTAuNikuICogQmFja3BvcnQgMy4zLjAgZml4ZXMgdG8gMi43IGJyYW5jaCAoZm9yIHJlbGVhc2UgaW4KKzIuNy40KSAqIFNpbmNlIFhjb2RlIDQgcmVtb3ZlcyBwcGMgc3VwcG9ydCwgZXh0ZW5zaW9uIG1vZHVsZSBidWlsZHMgbm93CitjaGVjayBmb3IgcHBjIGNvbXBpbGVyIHN1cHBvcnQgYW5kIGJ5IGRlZmF1bHQgcmVtb3ZlIHBwYyBhbmQgICBwcGM2NCBhcmNocword2hlbiB0aGV5IGFyZSBub3QgYXZhaWxhYmxlLiAqIEV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG5vdyByZXZlcnQgdG8gdXNpbmcKK3N5c3RlbSBpbnN0YWxsZWQgICBoZWFkZXJzIGFuZCBsaWJzICgvdXNyIGFuZCAvU3lzdGVtL0xpYnJhcnkpIGlmIHRoZSBTREsKK3VzZWQgICB0byBidWlsZCB0aGUgaW50ZXJwcmV0ZXIgaXMgbm90IGluc3RhbGxlZCBvciBoYXMgbW92ZWQuICogVHJ5IHRvCithdm9pZCBidWlsZGluZyBleHRlbnNpb24gbW9kdWxlcyB3aXRoIGRlcHJlY2F0ZWQgICBhbmQgcHJvYmxlbWF0aWMgQXBwbGUKK2xsdm0tZ2NjIGNvbXBpbGVyLiAgSWYgb3JpZ2luYWwgY29tcGlsZXIgICBpcyBub3QgYXZhaWxhYmxlLCB1c2UgY2xhbmcKK2luc3RlYWQgYnkgZGVmYXVsdC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA4NzU4CisuLiBub25jZTogaEh4ci1tCisuLiBzZWN0aW9uOiBJRExFCisKK0lETEUgd2FzIGRpc3BsYXlpbmcgc3B1cmlvdXMgU3lzdGVtRXhpdCB0cmFjZWJhY2tzIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQKK3Rlcm1pbmF0ZWQgYnkgcmFpc2luZyBTeXN0ZW1FeGl0IChpLmUuIHVuaXR0ZXN0IGFuZCB0dXJ0bGVkZW1vKS4KKworLi4KKworLi4gYnBvOiA5MjkwCisuLiBkYXRlOiA4NzU3CisuLiBub25jZTogTXNiYWN3CisuLiBzZWN0aW9uOiBJRExFCisKK0luIElETEUgdGhlIHN5cy5zdGQqIHN0cmVhbXMgbm93IGltcGxlbWVudCBpby5UZXh0SU9CYXNlIGludGVyZmFjZSBhbmQKK3N1cHBvcnQgYWxsIG1hbmRhdG9yeSBtZXRob2RzIGFuZCBwcm9wZXJ0aWVzLgorCisuLgorCisuLiBicG86IDE2ODI5CisuLiBkYXRlOiA4NzU2CisuLiBub25jZTogdTQ0VWVsCisuLiBzZWN0aW9uOiBJRExFCisKK0lETEUgcHJpbnRpbmcgbm8gbG9uZ2VyIGZhaWxzIGlmIHRoZXJlIGFyZSBzcGFjZXMgb3Igb3RoZXIgc3BlY2lhbAorY2hhcmFjdGVycyBpbiB0aGUgZmlsZSBwYXRoLgorCisuLgorCisuLiBicG86IDE2ODE5CisuLiBkYXRlOiA4NzU1CisuLiBub25jZTogcmNKRHJrCisuLiBzZWN0aW9uOiBJRExFCisKK0lETEUgbWV0aG9kIGNvbXBsZXRpb24gbm93IGNvcnJlY3RseSB3b3JrcyBmb3IgdW5pY29kZSBsaXRlcmFscy4KKworLi4KKworLi4gYnBvOiAxNjUwNAorLi4gZGF0ZTogODc1NAorLi4gbm9uY2U6IG90aHROXworLi4gc2VjdGlvbjogSURMRQorCitJRExFIG5vdyBjYXRjaGVzIFN5bnRheEVycm9ycyByYWlzZWQgYnkgdG9rZW5pemVyLiBQYXRjaCBieSBSb2dlciBTZXJ3eS4KKworLi4KKworLi4gYnBvOiAxMjA3NTg5CisuLiBkYXRlOiA4NzUzCisuLiBub25jZTogMGJtaXVlCisuLiBzZWN0aW9uOiBJRExFCisKK0FkZCBDdXQvQ29weS9QYXN0ZSBpdGVtcyB0byBJRExFIHJpZ2h0IGNsaWNrIENvbnRleHQgTWVudS4gUGF0Y2ggYnkgVG9kZAorUm92aXRvLgorCisuLgorCisuLiBicG86IDEzMDUyCisuLiBkYXRlOiA4NzUyCisuLiBub25jZTogdWxSbXFvCisuLiBzZWN0aW9uOiBJRExFCisKK0ZpeCBJRExFIGNyYXNoaW5nIHdoZW4gcmVwbGFjZSBzdHJpbmcgaW4gU2VhcmNoL1JlcGxhY2UgZGlhbG9nIGVuZGVkIHdpdGgKKydcJy4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy4uCisKKy4uIGJwbzogOTgwMworLi4gZGF0ZTogODc1MQorLi4gbm9uY2U6IGxKaG5laQorLi4gc2VjdGlvbjogSURMRQorCitEb24ndCBjbG9zZSBJRExFIG9uIHNhdmluZyBpZiBicmVha3BvaW50IGlzIG9wZW4uIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCisuLgorCisuLiBicG86IDE0OTU4CisuLiBkYXRlOiA4NzUwCisuLiBub25jZTogZldBM0VoCisuLiBzZWN0aW9uOiBJRExFCisKK0NoYW5nZSBJRExFIHN5c3RheCBoaWdobGlnaHRpbmcgdG8gcmVjb2duaXplIGFsbCBzdHJpbmcgYW5kIGJ5dGUgbGl0ZXJhbHMKK2N1cnJlbnRseSBzdXBwb3J0ZWQgaW4gUHl0aG9uIDIuNy4KKworLi4KKworLi4gYnBvOiAxNDk2MgorLi4gZGF0ZTogODc0OQorLi4gbm9uY2U6IFdfdDhTdworLi4gc2VjdGlvbjogSURMRQorCitVcGRhdGUgdGV4dCBjb2xvcmluZyBpbiBJRExFIHNoZWxsIHdpbmRvdyBhZnRlciBjaGFuZ2luZyBvcHRpb25zLiAgUGF0Y2ggYnkKK1JvZ2VyIFNlcnd5LgorCisuLgorCisuLiBicG86IDEwOTk3CisuLiBkYXRlOiA4NzQ4CisuLiBub25jZTogRDU5Wm9fCisuLiBzZWN0aW9uOiBJRExFCisKK1ByZXZlbnQgYSBkdXBsaWNhdGUgZW50cnkgaW4gSURMRSdzICJSZWNlbnQgRmlsZXMiIG1lbnUuCisKKy4uCisKKy4uIGJwbzogMTI1MTAKKy4uIGRhdGU6IDg3NDcKKy4uIG5vbmNlOiA1aGxONzcKKy4uIHNlY3Rpb246IElETEUKKworQXR0ZW1wdGluZyB0byBnZXQgaW52YWxpZCB0b29sdGlwIG5vIGxvbmdlciBjbG9zZXMgSURMRS4gT3JpZ2luYWwgcGF0Y2ggYnkKK1JvZ2VyIFNlcnd5LgorCisuLgorCisuLiBicG86IDEwMzY1CisuLiBkYXRlOiA4NzQ2CisuLiBub25jZTogREktRHJICisuLiBzZWN0aW9uOiBJRExFCisKK0ZpbGUgb3BlbiBkaWFsb2cgbm93IHdvcmtzIGluc3RlYWQgb2YgY3Jhc2hpbmcgZXZlbiB3aGVuIHBhcmVudCB3aW5kb3cgaXMKK2Nsb3NlZC4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy4uCisKKy4uIGJwbzogMTQ4NzYKKy4uIGRhdGU6IDg3NDUKKy4uIG5vbmNlOiA3M1hxZ0cKKy4uIHNlY3Rpb246IElETEUKKworVXNlIHVzZXItc2VsZWN0ZWQgZm9udCBmb3IgaGlnaGxpZ2h0IGNvbmZpZ3VyYXRpb24uIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LgorCisuLgorCisuLiBicG86IDE0NDA5CisuLiBkYXRlOiA4NzQ0CisuLiBub25jZTogOFNOeVJSCisuLiBzZWN0aW9uOiBJRExFCisKK0lETEUgbm93IHByb3Blcmx5IGV4ZWN1dGVzIGNvbW1hbmRzIGluIHRoZSBTaGVsbCB3aW5kb3cgd2hlbiBpdCBjYW5ub3QgcmVhZAordGhlIG5vcm1hbCBjb25maWcgZmlsZXMgb24gc3RhcnR1cCBhbmQgaGFzIHRvIHVzZSB0aGUgYnVpbHQtaW4gZGVmYXVsdCBrZXkKK2JpbmRpbmdzLiBUaGVyZSB3YXMgcHJldmlvdXNseSBhIGJ1ZyBpbiBvbmUgb2YgdGhlIGRlZmF1bHRzLgorCisuLgorCisuLiBicG86IDM1NzMKKy4uIGRhdGU6IDg3NDMKKy4uIG5vbmNlOiBGSWJXclkKKy4uIHNlY3Rpb246IElETEUKKworSURMRSBoYW5ncyB3aGVuIHBhc3NpbmcgaW52YWxpZCBjb21tYW5kIGxpbmUgYXJncyAoZGlyZWN0b3J5KGllcykgaW5zdGVhZCBvZgorZmlsZShzKSkgKFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvKQorCisuLgorCisuLiBicG86IDUyMTkKKy4uIGRhdGU6IDg3NDIKKy4uIG5vbmNlOiBXZTcycnAKKy4uIHNlY3Rpb246IElETEUKKworUHJldmVudCBldmVudCBoYW5kbGVyIGNhc2NhZGUgaW4gSURMRS4KKworLi4KKworLi4gYnBvOiAxNTMxOAorLi4gZGF0ZTogODc0MQorLi4gbm9uY2U6IEgxLWlFUworLi4gc2VjdGlvbjogSURMRQorCitQcmV2ZW50IHdyaXRpbmcgdG8gc3lzLnN0ZGluLgorCisuLgorCisuLiBicG86IDEzNTMyCisuLiBkYXRlOiA4NzQwCisuLiBub25jZTogY3NORUtfCisuLiBzZWN0aW9uOiBJRExFCisKK0NoZWNrIHRoYXQgYXJndW1lbnRzIHRvIHN5cy5zdGRvdXQud3JpdGUgYXJlIHN0cmluZ3MuIChTZWUgYWxzbzogYnBvLTE1MzE5KQorCisuLgorCisuLiBicG86IDEwMzY1CisuLiBkYXRlOiA4NzM5CisuLiBub25jZTogTUluaWJyCisuLiBzZWN0aW9uOiBJRExFCisKK0ZpbGUgb3BlbiBkaWFsb2cgbm93IHdvcmtzIGluc3RlYWQgb2YgY3Jhc2hpbmcgZXZlbiB3aGVuIHBhcmVudCB3aW5kb3cgaXMKK2Nsb3NlZCB3aGlsZSBkaWFsb2cgaXMgb3Blbi4KKworLi4KKworLi4gYnBvOiAxNDAxOAorLi4gZGF0ZTogODczOAorLi4gbm9uY2U6IEhqTi03YgorLi4gc2VjdGlvbjogSURMRQorCitVcGRhdGUgY2hlY2tzIGZvciB1bnN0YWJsZSBzeXN0ZW0gVGNsL1RrIHZlcnNpb25zIG9uIE9TIFggdG8gaW5jbHVkZQordmVyc2lvbnMgc2hpcHBlZCB3aXRoIE9TIFggMTAuNyBhbmQgMTAuOCBpbiBhZGRpdGlvbiB0byAxMC42LgorCisuLgorCisuLiBicG86IDE1ODUzCisuLiBkYXRlOiA4NzM3CisuLiBub25jZTogUmUxdEstCisuLiBzZWN0aW9uOiBJRExFCisKK1ByZXZlbnQgSURMRSBjcmFzaCBvbiBPUyBYIHdoZW4gb3BlbmluZyBQcmVmZXJlbmNlcyBtZW51IHdpdGggY2VydGFpbgordmVyc2lvbnMgb2YgVGsgOC41LiAgSW5pdGlhbCBwYXRjaCBieSBLZXZpbiBXYWx6ZXIuCisKKy4uCisKKy4uIGJwbzogMTY3MDIKKy4uIGRhdGU6IDg3MzYKKy4uIG5vbmNlOiAzWGZfdC0KKy4uIHNlY3Rpb246IFRlc3RzCisKK3Rlc3RfdXJsbGliMl9sb2NhbG5ldCB0ZXN0cyBub3cgY29ycmVjdGx5IGlnbm9yZXMgcHJveGllcyBmb3IgbG9jYWxob3N0Cit0ZXN0cy4KKworLi4KKworLi4gYnBvOiAxMzQ0NworLi4gZGF0ZTogODczNQorLi4gbm9uY2U6IF93eXMtNgorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkIGEgdGVzdCBmaWxlIHRvIGhvc3QgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYnVncyBpbiB0aGUgc2NyaXB0cyBmb3VuZCBpbgordGhlIFRvb2xzIGRpcmVjdG9yeS4KKworLi4KKworLi4gYnBvOiAxMTQyMAorLi4gZGF0ZTogODczNAorLi4gbm9uY2U6IEo1b2F4VAorLi4gc2VjdGlvbjogVGVzdHMKKworbWFrZSB0ZXN0IHN1aXRlIHBhc3Mgd2l0aCAtQi9ET05UV1JJVEVCWVRFQ09ERSBzZXQuIEluaXRpYWwgcGF0Y2ggYnkgVGhvbWFzCitXb3V0ZXJzLgorCisuLgorCisuLiBicG86IDE3Mjk5CisuLiBkYXRlOiA4NzMzCisuLiBub25jZTogTl9KQTFyCisuLiBzZWN0aW9uOiBUZXN0cworCitBZGQgdGVzdCBjb3ZlcmFnZSBmb3IgY1BpY2tsZSB3aXRoIGZpbGUgb2JqZWN0cyBhbmQgZ2VuZXJhbCBJTyBvYmplY3RzLgorT3JpZ2luYWwgcGF0Y2ggYnkgQW1hbiBTaGFoLgorCisuLgorCisuLiBicG86IDExOTYzCisuLiBkYXRlOiA4NzMyCisuLiBub25jZTogX2c4ZF9nCisuLiBzZWN0aW9uOiBUZXN0cworCityZW1vdmUgaHVtYW4gdmVyaWZpY2F0aW9uIGZyb20gdGVzdF9wYXJzZXIgYW5kIHRlc3Rfc3VicHJvY2Vzcy4KKworLi4KKworLi4gYnBvOiAxNzI0OQorLi4gZGF0ZTogODczMQorLi4gbm9uY2U6IHdHdnc3RworLi4gc2VjdGlvbjogVGVzdHMKKworY29udmVydCBhIHRlc3QgaW4gdGVzdF9jYXBpIHRvIHVzZSB1bml0dGVzdCBhbmQgcmVhcCB0aHJlYWRzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDg3MzAKKy4uIG5vbmNlOiBlYUgxcnQKKy4uIHNlY3Rpb246IFRlc3RzCisKK1dlIG5vdyBydW4gYm90aCB0ZXN0X2VtYWlsLnB5IGFuZCB0ZXN0X2VtYWlsX3JlbmFtZWQucHkgd2hlbiBydW5uaW5nIHRoZQordGVzdF9lbWFpbCByZWdyZXNzaW9uIHRlc3QuICB0ZXN0X2VtYWlsX3JlbmFtZWQgY29udGFpbnMgc29tZSB0ZXN0cyB0aGF0Cit0ZXN0X2VtYWlsIGRvZXMgbm90LgorCisuLgorCisuLiBicG86IDE3MDQxCisuLiBkYXRlOiA4NzI5CisuLiBub25jZTogNTdWNWlECisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggdGVzdGluZyB3aGVuIFB5dGhvbiBpcyBjb25maWd1cmVkIHdpdGggdGhlIC0td2l0aG91dC1kb2Mtc3RyaW5ncyBvcHRpb24uCisKKy4uCisKKy4uIGJwbzogMTU1MzkKKy4uIGRhdGU6IDg3MjgKKy4uIG5vbmNlOiBhMV9HMFEKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZGVkIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIFRvb2xzL3NjcmlwdHMvcGluZGVudC5weS4KKworLi4KKworLi4gYnBvOiAxNTMyNAorLi4gZGF0ZTogODcyNworLi4gbm9uY2U6IFZsUEdVTgorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHJlZ3J0ZXN0IHBhcnNpbmcgb2YgLS1mcm9tZmlsZSBhbmQgLS1yYW5kb21pemUgb3B0aW9ucy4KKworLi4KKworLi4gYnBvOiAxNjYxOAorLi4gZGF0ZTogODcyNgorLi4gbm9uY2U6IGEyWG95bgorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkIG1vcmUgcmVncmVzc2lvbiB0ZXN0cyBmb3IgZ2xvYi4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxNjY2NAorLi4gZGF0ZTogODcyNQorLi4gbm9uY2U6IEN4Ylp3WAorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkIHJlZ3Jlc3Npb24gdGVzdHMgZm9yIGdsb2IncyBiZWhhdmlvdXIgY29uY2VybmluZyBlbnRyaWVzIHN0YXJ0aW5nIHdpdGggYQorIi4iLiAgUGF0Y2ggYnkgU2ViYXN0aWFuIEtyZWZ0LgorCisuLgorCisuLiBicG86IDE1NzQ3CisuLiBkYXRlOiA4NzI0CisuLiBub25jZTogVEUzclZrCisuLiBzZWN0aW9uOiBUZXN0cworCitaRlMgYWx3YXlzIHJldHVybnMgRU9QTk9UU1VQUCB3aGVuIGF0dGVtcHRpbmcgdG8gc2V0IHRoZSBVRl9JTU1VVEFCTEUgZmxhZworKHZpYSBlaXRoZXIgY2hmbGFncyBvciBsY2hmbGFncyk7IHJlZmFjdG9yIGFmZmVjdGVkIHRlc3RzIGluIHRlc3RfcG9zaXgucHkKK3RvIGFjY291bnQgZm9yIHRoaXMuCisKKy4uCisKKy4uIGJwbzogMTY1NDkKKy4uIGRhdGU6IDg3MjMKKy4uIG5vbmNlOiA5RU5QT00KKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZCB0ZXN0cyBmb3IganNvbi50b29scy4gIEluaXRpYWwgcGF0Y2ggYnkgQmVya2VyIFBla3NhZyBhbmQgU2VyaGl5CitTdG9yY2hha2EuCisKKy4uCisKKy4uIGJwbzogMTY1NTkKKy4uIGRhdGU6IDg3MjIKKy4uIG5vbmNlOiBKdnhXYnEKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZCBtb3JlIHRlc3RzIGZvciB0aGUganNvbiBtb2R1bGUsIGluY2x1ZGluZyBzb21lIGZyb20gdGhlIG9mZmljaWFsIHRlc3QKK3N1aXRlIGF0IGpzb24ub3JnLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAxNjI3NAorLi4gZGF0ZTogODcyMQorLi4gbm9uY2U6IDktdVZiXworLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3RfYXN5bmNvcmUgb24gU29sYXJpcy4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgorCisuLgorCisuLiBicG86IDE1MDQwCisuLiBkYXRlOiA4NzIwCisuLiBub25jZTogRjMwVFllCisuLiBzZWN0aW9uOiBUZXN0cworCitDbG9zZSBmaWxlcyBpbiBtYWlsYm94IHRlc3RzIGZvciBQeVB5IGNvbXBhdGliaWxpdHkuIE9yaWdpbmFsIHBhdGNoIGJ5IE1hdHRpCitQaWN1cy4KKworLi4KKworLi4gYnBvOiAxNTgwMgorLi4gZGF0ZTogODcxOQorLi4gbm9uY2U6IE93LXpyRAorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3QgbG9naWMgaW4gVGVzdE1haWxkaXIudGVzdF9jcmVhdGVfdG1wLiBQYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCisuLgorCisuLiBicG86IDE1NzY1CisuLiBkYXRlOiA4NzE4CisuLiBub25jZTogckg2S0IyCisuLiBzZWN0aW9uOiBUZXN0cworCitFeHRlbmQgYSBwcmV2aW91cyBmaXggdG8gU29sYXJpcyBhbmQgT3BlbkJTRCBmb3IgcXVpcmt5IGdldGN3ZCgpIGJlaGF2aW91cgorKGlzc3VlICM5MTg1KSB0byBOZXRCU0QgYXMgd2VsbC4KKworLi4KKworLi4gYnBvOiAxNTYxNQorLi4gZGF0ZTogODcxNworLi4gbm9uY2U6IEM5WXVFdAorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBqc29uIG1vZHVsZSdzIGhhbmRsaW5nIG9mIGludmFsaWQgaW5wdXQgZGF0YS4gIFBhdGNoCitieSBLdXNoYWwgRGFzLgorCisuLgorCisuLiBicG86IDE1NDk2CisuLiBkYXRlOiA4NzE2CisuLiBub25jZTogdG03NmRECisuLiBzZWN0aW9uOiBUZXN0cworCitBZGQgZGlyZWN0b3J5IHJlbW92YWwgaGVscGVycyBmb3IgdGVzdHMgb24gV2luZG93cy4gUGF0Y2ggYnkgSmVyZW15IEtsb3RoLgorCisuLgorCisuLiBicG86IDE1MDQzCisuLiBkYXRlOiA4NzE1CisuLiBub25jZTogUjJqOEhiCisuLiBzZWN0aW9uOiBUZXN0cworCit0ZXN0X2dkYiBpcyBub3cgc2tpcHBlZCBlbnRpcmVseSBpZiBnZGIgc2VjdXJpdHkgc2V0dGluZ3MgYmxvY2sgbG9hZGluZyBvZgordGhlIGdkYiBob29rcworCisuLgorCisuLiBicG86IDE0NTg5CisuLiBkYXRlOiA4NzE0CisuLiBub25jZTogOWFOdHVSCisuLiBzZWN0aW9uOiBUZXN0cworCitVcGRhdGUgY2VydGlmaWNhdGUgY2hhaW4gZm9yIHNoYTI1Ni50YnMtaW50ZXJuZXQuY29tLCBmaXhpbmcgYSB0ZXN0IGZhaWx1cmUKK2luIHRlc3Rfc3NsLgorCisuLgorCisuLiBicG86IDE2Njk4CisuLiBkYXRlOiA4NzEzCisuLiBub25jZTogUmdtWWpZCisuLiBzZWN0aW9uOiBUZXN0cworCitTa2lwIHBvc2l4IHRlc3RfZ2V0Z3JvdXBzIHdoZW4gYnVpbHQgd2l0aCBPUyBYIGRlcGxveW1lbnQgdGFyZ2V0IHByaW9yIHRvCisxMC42LgorCisuLgorCisuLiBicG86IDE3MTExCisuLiBkYXRlOiA4NzEyCisuLiBub25jZTogeXBjNjZyCisuLiBzZWN0aW9uOiBUZXN0cworCitQcmV2ZW50IHRlc3Rfc3Vycm9nYXRlcyAodGVzdF9maWxlaW8pIGZhaWx1cmUgb24gT1MgWCAxMC40LgorCisuLgorCisuLiBicG86IDE3NDI1CisuLiBkYXRlOiA4NzExCisuLiBub25jZTogd1RDU2h0CisuLiBzZWN0aW9uOiBCdWlsZAorCitCdWlsZCBhZ2FpbnN0IG9wZW5zc2wgMC45Ljh5IG9uIFdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogMTYwMDQKKy4uIGRhdGU6IDg3MTAKKy4uIG5vbmNlOiA1b19EWm8KKy4uIHNlY3Rpb246IEJ1aWxkCisKK0FkZCBgbWFrZSB0b3VjaGAuCisKKy4uCisKKy4uIGJwbzogNTAzMworLi4gZGF0ZTogODcwOQorLi4gbm9uY2U6IEhLQWdEQQorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IGJ1aWxkaW5nIG9mIHRoZSBzcWxpdGUzIGV4dGVuc2lvbiBtb2R1bGUgd2hlbiB0aGUgU1FMaXRlIGxpYnJhcnkgdmVyc2lvbgoraGFzICJiZXRhIiBpbiBpdC4gUGF0Y2ggYnkgQW5kcmVhcyBQZWxtZS4KKworLi4KKworLi4gYnBvOiAxNzIyOAorLi4gZGF0ZTogODcwOAorLi4gbm9uY2U6IENDa0FNMAorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IGJ1aWxkaW5nIHdpdGhvdXQgcHltYWxsb2MuCisKKy4uCisKKy4uIGJwbzogMTcwODYKKy4uIGRhdGU6IDg3MDcKKy4uIG5vbmNlOiBpTm9vcG0KKy4uIHNlY3Rpb246IEJ1aWxkCisKK0JhY2twb3J0IHRoZSBwYXRjaGVzIGZyb20gdGhlIDMuMyBicmFuY2ggdG8gY3Jvc3MtYnVpbGQgdGhlIHBhY2thZ2UuCisKKy4uCisKKy4uIGJwbzogMzc1NAorLi4gZGF0ZTogODcwNgorLi4gbm9uY2U6IHNVZE9VcAorLi4gc2VjdGlvbjogQnVpbGQKKworZml4IHR5cG8gaW4gcHRocmVhZCBBQ19DQUNIRV9WQUwuCisKKy4uCisKKy4uIGJwbzogMTcwMjkKKy4uIGRhdGU6IDg3MDUKKy4uIG5vbmNlOiBkVWQxTlQKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0xldCBoMnB5IHNlYXJjaCB0aGUgbXVsdGlhcmNoIHN5c3RlbSBpbmNsdWRlIGRpcmVjdG9yeS4KKworLi4KKworLi4gYnBvOiAxNjk1MworLi4gZGF0ZTogODcwNAorLi4gbm9uY2U6IHRXMUtWWQorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IHNvY2tldCBtb2R1bGUgY29tcGlsYXRpb24gb24gcGxhdGZvcm1zIHdpdGggSEFWRV9CUk9LRU5fUE9MTC4gUGF0Y2ggYnkKK0plZmZyZXkgQXJtc3Ryb25nLgorCisuLgorCisuLiBicG86IDE2ODM2CisuLiBkYXRlOiA4NzAzCisuLiBub25jZTogSlotek83CisuLiBzZWN0aW9uOiBCdWlsZAorCitFbmFibGUgSVB2NiBzdXBwb3J0IGV2ZW4gaWYgSVB2NiBpcyBkaXNhYmxlZCBvbiB0aGUgYnVpbGQgaG9zdC4KKworLi4KKworLi4gYnBvOiAxNTkyMworLi4gZGF0ZTogODcwMgorLi4gbm9uY2U6IFBJdjcwVgorLi4gc2VjdGlvbjogQnVpbGQKKworZml4IGEgbWlzdGFrZSBpbiBhc2RsX2MucHkgdGhhdCByZXN1bHRlZCBpbiBhIFR5cGVFcnJvciBhZnRlciAyODAxYmY4NzVhMjQKKyhzZWUgIzE1ODAxKS4KKworLi4KKworLi4gYnBvOiAxMTcxNQorLi4gZGF0ZTogODcwMQorLi4gbm9uY2U6IE0zTWFwUAorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IG11bHRpYXJjaCBkZXRlY3Rpb24gd2l0aG91dCBoYXZpbmcgRGViaWFuIGRldmVsb3BtZW50IHRvb2xzIChkcGtnLWRldikKK2luc3RhbGxlZC4KKworLi4KKworLi4gYnBvOiAxNTgxOQorLi4gZGF0ZTogODcwMAorLi4gbm9uY2U6IDA5WExIYgorLi4gc2VjdGlvbjogQnVpbGQKKworTWFrZSBzdXJlIHdlIGNhbiBidWlsZCBQeXRob24gb3V0LW9mLXRyZWUgZnJvbSBhIHJlYWRvbmx5IHNvdXJjZSBkaXJlY3RvcnkuCisoU29tZXdoYXQgcmVsYXRlZCB0byBJc3N1ZSAjOTg2MC4pCisKKy4uCisKKy4uIGJwbzogMTU4MjIKKy4uIGRhdGU6IDg2OTkKKy4uIG5vbmNlOiBhTGplblEKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0Vuc3VyZSAydG8zIGdyYW1tYXIgcGlja2xlcyBhcmUgcHJvcGVybHkgaW5zdGFsbGVkLgorCisuLgorCisuLiBicG86IDE1NTYwCisuLiBkYXRlOiA4Njk4CisuLiBub25jZTogSTh5TVUwCisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggYnVpbGRpbmcgX3NxbGl0ZTMgZXh0ZW5zaW9uIG9uIE9TIFggd2l0aCBhbiBTREsuCisKKy4uCisKKy4uIGJwbzogODg0NworLi4gZGF0ZTogODY5NworLi4gbm9uY2U6IGxxSV9yOAorLi4gc2VjdGlvbjogQnVpbGQKKworRGlzYWJsZSBDT01EQVQgZm9sZGluZyBpbiBXaW5kb3dzIFBHTyBidWlsZHMuCisKKy4uCisKKy4uIGJwbzogMTQwMTgKKy4uIGRhdGU6IDg2OTYKKy4uIG5vbmNlOiBSSGF3T18KKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeCBPUyBYIFRjbC9UayBmcmFtZXdvcmsgY2hlY2tpbmcgd2hlbiB1c2luZyBPUyBYIFNES3MuCisKKy4uCisKKy4uIGJwbzogMTYyNTYKKy4uIGRhdGU6IDg2OTUKKy4uIG5vbmNlOiB2cng2NnIKKy4uIHNlY3Rpb246IEJ1aWxkCisKK09TIFggaW5zdGFsbGVyIG5vdyBzZXRzIGNvcnJlY3QgcGVybWlzc2lvbnMgZm9yIGRvYyBkaXJlY3RvcnkuCisKKy4uCisKKy4uIGJwbzogODc2NworLi4gZGF0ZTogODY5NAorLi4gbm9uY2U6IHN3SGJnUQorLi4gc2VjdGlvbjogQnVpbGQKKworUmVzdG9yZSBidWlsZGluZyB3aXRoIC0tZGlzYWJsZS11bmljb2RlLiBQYXRjaCBieSBTdGVmYW5vIFRhc2NoaW5pLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDg2OTMKKy4uIG5vbmNlOiB3Wkx6dXkKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0J1aWxkIGFnYWluc3QgYnppcDIgMS4wLjYgYW5kIG9wZW5zc2wgMC45Ljh4IG9uIFdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogMTQ1NTcKKy4uIGRhdGU6IDg2OTIKKy4uIG5vbmNlOiBVQ2JJcTcKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeCBleHRlbnNpb25zIGJ1aWxkIG9uIEhQLVVYLiBQYXRjaCBieSBBZGkgUm9pYmFuLgorCisuLgorCisuLiBicG86IDE0NDM3CisuLiBkYXRlOiA4NjkxCisuLiBub25jZTogNjF0bVF0CisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggYnVpbGRpbmcgdGhlIF9pbyBtb2R1bGUgdW5kZXIgQ3lnd2luLgorCisuLgorCisuLiBicG86IDE1NTg3CisuLiBkYXRlOiA4NjkwCisuLiBub25jZTogZ1I3dmVpCisuLiBzZWN0aW9uOiBCdWlsZAorCitFbmFibGUgVGsgaGlnaC1yZXNvbHV0aW9uIHRleHQgcmVuZGVyaW5nIG9uIE1hY3Mgd2l0aCBSZXRpbmEgZGlzcGxheXMuCitBcHBsaWVzIHRvIFRraW50ZXIgYXBwcywgc3VjaCBhcyBJRExFLCBvbiBPUyBYIGZyYW1ld29yayBidWlsZHMgbGlua2VkIHdpdGgKK0NvY29hIFRrIDguNS4KKworLi4KKworLi4gYnBvOiAxNzE2MQorLi4gZGF0ZTogODY4OQorLi4gbm9uY2U6IDhRcjRmbAorLi4gc2VjdGlvbjogQnVpbGQKKworbWFrZSBpbnN0YWxsIG5vdyBhbHNvIGluc3RhbGxzIGEgcHl0aG9uMiBhbmQgcHl0aG9uIG1hbiBwYWdlLgorCisuLgorCisuLiBicG86IDE2ODQ4CisuLiBkYXRlOiA4Njg4CisuLiBub25jZTogQ3R5dlZDCisuLiBzZWN0aW9uOiBCdWlsZAorCitweXRob24tY29uZmlnIG5vdyByZXR1cm5zIHByb3BlciAtLWxkZmxhZ3MgdmFsdWVzIGZvciBPUyBYIGZyYW1ld29yayBidWlsZHMuCisKKy4uCisKKy4uIGJwbzogMTcxNTYKKy4uIGRhdGU6IDg2ODcKKy4uIG5vbmNlOiBpYUZKaXoKKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK3B5Z2V0dGV4dC5weSBub3cgY29ycmVjdGx5IGVzY2FwZXMgbm9uLWFzY2lpIGNoYXJhY3RlcnMuCisKKy4uCisKKy4uIGJwbzogMTU1MzkKKy4uIGRhdGU6IDg2ODYKKy4uIG5vbmNlOiA2YnFxVi0KKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK0ZpeCBhIG51bWJlciBvZiBidWdzIGluIFRvb2xzL3NjcmlwdHMvcGluZGVudC5weS4gIE5vdyBwaW5kZW50LnB5IHdvcmtzIHdpdGgKK2EgIndpdGgiIHN0YXRlbWVudC4gIHBpbmRlbnQucHkgbm8gbG9uZ2VyIHByb2R1Y2VzIGltcHJvcGVyIGluZGVudGF0aW9uLgorcGluZGVudC5weSBub3cgd29ya3Mgd2l0aCBjb250aW51ZWQgbGluZXMgYnJva2VuIGFmdGVyICJjbGFzcyIgb3IgImRlZiIKK2tleXdvcmRzIGFuZCB3aXRoIGNvbnRpbnVhdGlvbnMgYXQgdGhlIHN0YXJ0IG9mIGxpbmUuCisKKy4uCisKKy4uIGJwbzogMTY0NzYKKy4uIGRhdGU6IDg2ODUKKy4uIG5vbmNlOiB4QW9tcmQKKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK0ZpeCBqc29uLnRvb2wgdG8gYXZvaWQgaW5jbHVkaW5nIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisKKy4uCisKKy4uIGJwbzogMTMzMDEKKy4uIGRhdGU6IDg2ODQKKy4uIG5vbmNlOiBBNFdPazUKKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK3VzZSBhc3QubGl0ZXJhbF9ldmFsKCkgaW5zdGVhZCBvZiBldmFsKCkgaW4gVG9vbHMvaTE4bi9tc2dmbXQucHkuIFBhdGNoIGJ5CitTZXJoaXkgU3RvcmNoYWthLgorCisuLgorCisuLiBicG86IDE1MDQxCisuLiBkYXRlOiA4NjgzCisuLiBub25jZTogbk15aHdGCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK1VwZGF0ZSAic2VlIGFsc28iIGxpc3QgaW4gdGtpbnRlciBkb2N1bWVudGF0aW9uLgorCisuLgorCisuLiBicG86IDE3NDEyCisuLiBkYXRlOiA4NjgyCisuLiBub25jZTogOXhJd0VoCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK3VwZGF0ZSAyLjcgRG9jL21ha2UuYmF0IHRvIGFsc28gdXNlIHNwaGlueC0xLjAuNy4KKworLi4KKworLi4gYnBvOiAxNzA0NworLi4gZGF0ZTogODY4MQorLi4gbm9uY2U6IHNWenBieQorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCityZW1vdmUgZG91YmxlZCB3b3JkcyBpbiBkb2NzIGFuZCBkb2NzdHJpbmdzIHJlcG9ydGVkIGJ5IFNlcmhpeSBTdG9yY2hha2EgYW5kCitNYXR0aGV3IEJhcm5ldHQuCisKKy4uCisKKy4uIGJwbzogMTY0MDYKKy4uIGRhdGU6IDg2ODAKKy4uIG5vbmNlOiBfWjhhbEUKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworY29tYmluZSB0aGUgcGFnZXMgZm9yIHVwbG9hZGluZyBhbmQgcmVnaXN0ZXJpbmcgdG8gUHlQSS4KKworLi4KKworLi4gYnBvOiAxNjQwMworLi4gZGF0ZTogODY3OQorLi4gbm9uY2U6IHdQdVlnQQorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitEb2N1bWVudCBob3cgZGlzdHV0aWxzIHVzZXMgdGhlIG1haW50YWluZXIgZmllbGQgaW4gUEtHLUlORk8uIFBhdGNoIGJ5IEp5cmtpCitQdWxsaWFpbmVuLgorCisuLgorCisuLiBicG86IDE2Njk1CisuLiBkYXRlOiA4Njc4CisuLiBub25jZTogTzMtcTRrCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0RvY3VtZW50IGhvdyBnbG9iIGhhbmRsZXMgZmlsZW5hbWVzIHN0YXJ0aW5nIHdpdGggYSBkb3QuIEluaXRpYWwgcGF0Y2ggYnkKK0p5cmtpIFB1bGxpYWluZW4uCisKKy4uCisKKy4uIGJwbzogODg5MAorLi4gZGF0ZTogODY3NworLi4gbm9uY2U6IGxkS2dXVAorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitTdG9wIGFkdmVydGlzaW5nIGFuIGluc2VjdXJlIHByYWN0aWNlIGJ5IHJlcGxhY2luZyB1c2VzIG9mIHRoZSAvdG1wCitkaXJlY3Rvcnkgd2l0aCBiZXR0ZXIgYWx0ZXJuYXRpdmVzIGluIHRoZSBkb2N1bWVudGF0aW9uLiBQYXRjaCBieSBHZW9mZgorV2lsc29uLgorCisuLgorCisuLiBicG86IDE3MjAzCisuLiBkYXRlOiA4Njc2CisuLiBub25jZTogYjQySld4CisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK2FkZCBsb25nIG9wdGlvbiBuYW1lcyB0byB1bml0dGVzdCBkaXNjb3ZlcnkgZG9jcy4KKworLi4KKworLi4gYnBvOiAxMzA5NAorLi4gZGF0ZTogODY3NQorLi4gbm9uY2U6IHVqZE54egorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCithZGQgIldoeSBkbyBsYW1iZGFzIGRlZmluZWQgaW4gYSBsb29wIHdpdGggZGlmZmVyZW50IHZhbHVlcyBhbGwgcmV0dXJuIHRoZQorc2FtZSByZXN1bHQ/IiBwcm9ncmFtbWluZyBGQVEuCisKKy4uCisKKy4uIGJwbzogMTQ5MDEKKy4uIGRhdGU6IDg2NzQKKy4uIG5vbmNlOiBvX3RoWm8KKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworVXBkYXRlIHBvcnRpb25zIG9mIHRoZSBXaW5kb3dzIEZBUS4gUGF0Y2ggYnkgQXNoaXNoIE5pdGluIFBhdGlsLgorCisuLgorCisuLiBicG86IDE1OTkwCisuLiBkYXRlOiA4NjczCisuLiBub25jZTogNDFDNV9NCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0ltcHJvdmUgYXJndW1lbnQvcGFyYW1ldGVyIGRvY3VtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogMTY0MDAKKy4uIGRhdGU6IDg2NzIKKy4uIG5vbmNlOiBrRExaUlYKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworVXBkYXRlIHRoZSBkZXNjcmlwdGlvbiBvZiB3aGljaCB2ZXJzaW9ucyBvZiBhIGdpdmVuIHBhY2thZ2UgUHlQSSBkaXNwbGF5cy4KKworLi4KKworLi4gYnBvOiAxNTY3NworLi4gZGF0ZTogODY3MQorLi4gbm9uY2U6IF8wdlktaAorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitEb2N1bWVudCB0aGF0IHpsaWIgYW5kIGd6aXAgYWNjZXB0IGEgY29tcHJlc3Npb24gbGV2ZWwgb2YgMCB0byBtZWFuICdubworY29tcHJlc3Npb24nLiBQYXRjaCBieSBCcmlhbiBCcmF6aWwuCisKKy4uCisKKy4uIGJwbzogODA0MAorLi4gZGF0ZTogODY3MAorLi4gbm9uY2U6IFI4VkF5cworLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCithZGRlZCBhIHZlcnNpb24gc3dpdGNoZXIgdG8gdGhlIGRvY3VtZW50YXRpb24uICBQYXRjaCBieSBZdXJ5IFNlbGl2YW5vdi4KKworLi4KKworLi4gYnBvOiAxNjExNQorLi4gZGF0ZTogODY2OQorLi4gbm9uY2U6IEJhMU1IXworLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitJbXByb3ZlIHN1YnByb2Nlc3MuUG9wZW4oKSBkb2N1bWVudGF0aW9uIGFyb3VuZCBhcmdzLCBzaGVsbCwgYW5kIGV4ZWN1dGFibGUKK2FyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiAxNTk3OQorLi4gZGF0ZTogODY2OAorLi4gbm9uY2U6IFVBVHRSWgorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitJbXByb3ZlIHRpbWVpdCBkb2N1bWVudGF0aW9uLgorCisuLgorCisuLiBicG86IDE2MDM2CisuLiBkYXRlOiA4NjY3CisuLiBub25jZTogQUdSNEFtCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0ltcHJvdmUgZG9jdW1lbnRhdGlvbiBvZiBidWlsdC1pbiBpbnQoKSdzIHNpZ25hdHVyZSBhbmQgYXJndW1lbnRzLgorCisuLgorCisuLiBicG86IDE1OTM1CisuLiBkYXRlOiA4NjY2CisuLiBub25jZTogSWs3WTB6CisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0NsYXJpZmljYXRpb24gb2YgYXJncGFyc2UgZG9jcywgcmU6IGFkZF9hcmd1bWVudCgpIHR5cGUgYW5kIGRlZmF1bHQKK2FyZ3VtZW50cy4gIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IENocmlzIEplcmRvbmVrLgorCisuLgorCisuLiBicG86IDEzNzY5CisuLiBkYXRlOiA4NjY1CisuLiBub25jZTogVGZSdFFUCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0RvY3VtZW50IHRoZSBlZmZlY3Qgb2YgZW5zdXJlX2FzY2lpIHRvIHRoZSByZXR1cm4gdHlwZSBvZiBKU09OIGRlY29kaW5nCitmdW5jdGlvbnMuCisKKy4uCisKKy4uIGJwbzogMTQ4ODAKKy4uIGRhdGU6IDg2NjQKKy4uIG5vbmNlOiBiZmF6RngKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworRml4IGt3YXJncyBub3RhdGlvbiBpbiBjc3YucmVhZGVyLCAud3JpdGVyICYgLnJlZ2lzdGVyX2RpYWxlY3QuIFBhdGNoIGJ5CitDaHJpcyBSZWJlcnQuCisKKy4uCisKKy4uIGJwbzogMTQ2NzQKKy4uIGRhdGU6IDg2NjMKKy4uIG5vbmNlOiBBTU9KVF8KKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworQWRkIGEgZGlzY3Vzc2lvbiBvZiB0aGUganNvbiBtb2R1bGUncyBzdGFuZGFyZCBjb21wbGlhbmNlLiBQYXRjaCBieSBDaHJpcworUmViZXJ0LgorCisuLgorCisuLiBicG86IDE1NjMwCisuLiBkYXRlOiA4NjYyCisuLiBub25jZTogaWpocXlUCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0FkZCBhbiBleGFtcGxlIGZvciAiY29udGludWUiIHN0bXQgaW4gdGhlIHR1dG9yaWFsLiBQYXRjaCBieSBEYW5pZWwgRWxsaXMuCisKKy4uCisKKy4uIGJwbzogMTM1NTcKKy4uIGRhdGU6IDg2NjEKKy4uIG5vbmNlOiBJSHpIUm4KKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworQ2xhcmlmeSBlZmZlY3Qgb2YgZ2l2aW5nIHR3byBkaWZmZXJlbnQgbmFtZXNwYWNlcyB0byBleGVjIG9yIGV4ZWNmaWxlKCkuCisKKy4uCisKKy4uIGJwbzogMTQwMzQKKy4uIGRhdGU6IDg2NjAKKy4uIG5vbmNlOiAzNEdEVHYKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworYWRkZWQgdGhlIGFyZ3BhcnNlIHR1dG9yaWFsLgorCisuLgorCisuLiBicG86IDE1MjUwCisuLiBkYXRlOiA4NjU5CisuLiBub25jZTogdkxMUEdLCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0RvY3VtZW50IHRoYXQgZmlsZWNtcC5kaXJjbXAgY29tcGFyZXMgZmlsZXMgc2hhbGxvd2x5LiBQYXRjaCBjb250cmlidXRlZCBieQorQ2hyaXMgSmVyZG9uZWsuCisKKy4uCisKKy4uIGJwbzogMTUxMTYKKy4uIGRhdGU6IDg2NTgKKy4uIG5vbmNlOiB1RFFJXzgKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYXBwc2NyaXB0IGFzIGl0IGlzIG5vIGxvbmdlciBiZWluZyBzdXBwb3J0ZWQuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjcuNS5yc3QgYi9NaXNjL05FV1MuZC8yLjcuNS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNkNDgzZQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNy41LnJzdApAQCAtMCwwICsxLDUxMCBAQAorLi4gYnBvOiAxNTUzNQorLi4gZGF0ZTogOTA2NworLi4gbm9uY2U6IFVjQkV2bAorLi4gcmVsZWFzZSBkYXRlOiAyMDEzLTA1LTEyCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCByZWdyZXNzaW9uIGluIHRoZSBwaWNrbGluZyBvZiBuYW1lZCB0dXBsZXMgYnkgcmVtb3ZpbmcgdGhlIF9fZGljdF9fCitwcm9wZXJ0eSBpbnRyb2R1Y2VkIGluIDIuNy40LgorCisuLgorCisuLiBicG86IDE3ODU3CisuLiBkYXRlOiA5MDY2CisuLiBub25jZTogN2NDS0RrCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQcmV2ZW50IGJ1aWxkIGZhaWx1cmVzIHdpdGggcHJlLTMuNS4wIHZlcnNpb25zIG9mIHNxbGl0ZTMsIHN1Y2ggYXMgd2FzCitzaGlwcGVkIHdpdGggQ2VudG9zIDUgYW5kIE1hYyBPUyBYIDEwLjQuCisKKy4uCisKKy4uIGJwbzogMTc3MDMKKy4uIGRhdGU6IDkwNjUKKy4uIG5vbmNlOiBlTGYydHUKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBhIHJlZ3Jlc3Npb24gd2hlcmUgYW4gaWxsZWdhbCB1c2Ugb2YgUHlfREVDUkVGKCkgYWZ0ZXIgaW50ZXJwcmV0ZXIKK2ZpbmFsaXphdGlvbiBjYW4gY2F1c2UgYSBjcmFzaC4KKworLi4KKworLi4gYnBvOiAxNjQ0NworLi4gZGF0ZTogOTA2NAorLi4gbm9uY2U6IE5xeXBqYQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgcG90ZW50aWFsIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIHNldHRpbmcgX19uYW1lX18gb24gYSBjbGFzcy4KKworLi4KKworLi4gYnBvOiAxNzYxMAorLi4gZGF0ZTogOTA2MworLi4gbm9uY2U6IFFwSXpFQgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRG9uJ3QgcmVseSBvbiBub24tc3RhbmRhcmQgYmVoYXZpb3Igb2YgdGhlIEMgcXNvcnQoKSBmdW5jdGlvbi4KKworLi4KKworLi4gYnBvOiAxNzk3OQorLi4gZGF0ZTogOTA2MgorLi4gbm9uY2U6IGw2QnROeAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aGUgcmUgbW9kdWxlIGluIGJ1aWxkIHdpdGggLS1kaXNhYmxlLXVuaWNvZGUuCisKKy4uCisKKy4uIGJwbzogMTc2MDYKKy4uIGRhdGU6IDkwNjEKKy4uIG5vbmNlOiB5TmQ0N0YKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgc3VwcG9ydCBvZiBlbmNvZGVkIGJ5dGUgc3RyaW5ncyBpbiB0aGUgWE1MR2VuZXJhdG9yIC5jaGFyYWN0ZXJzKCkgYW5kCitpZ25vcmFibGVXaGl0ZXNwYWNlKCkgbWV0aG9kcy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNlYmFzdGlhbiBPcnRpeiBWYXNxdWV6LgorCisuLgorCisuLiBicG86IDE2NjAxCisuLiBkYXRlOiA5MDYwCisuLiBub25jZTogX0ZpQnJCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Jlc3RhcnRpbmcgaXRlcmF0aW9uIG92ZXIgdGFyZmlsZSBubyBtb3JlIGNvbnRpbnVlcyBmcm9tIHdoZXJlIGl0IGxlZnQgb2ZmLgorUGF0Y2ggYnkgTWljaGFlbCBCaXJ0d2VsbC4KKworLi4KKworLi4gYnBvOiAxNjU4NAorLi4gZGF0ZTogOTA1OQorLi4gbm9uY2U6IDZ5eUN1WAorLi4gc2VjdGlvbjogTGlicmFyeQorCitpbiBmaWxlY29tcC5fY21wLCBjYXRjaCBJT0Vycm9yIGFzIHdlbGwgYXMgb3MuZXJyb3IuIFBhdGNoIGJ5IFRpbGwgTWFhcy4KKworLi4KKworLi4gYnBvOiAxNzkyNgorLi4gZGF0ZTogOTA1OAorLi4gbm9uY2U6IG52NWZMZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggZGJtLl9fY29udGFpbnNfXyBvbiA2NC1iaXQgYmlnLWVuZGlhbiBtYWNoaW5lcy4KKworLi4KKworLi4gYnBvOiAxOTI2NworLi4gZGF0ZTogOTA1NworLi4gbm9uY2U6IFNYdi1CaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc3VwcG9ydCBvZiBtdWx0aWJ5dGUgZW5jb2RpbmcgKGV4OiBVVEYtMTYpIGluIHRoZSBsb2dnaW5nIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAxNzkxOAorLi4gZGF0ZTogOTA1NgorLi4gbm9uY2U6IHF0RU4tTAorLi4gc2VjdGlvbjogTGlicmFyeQorCitXaGVuIHVzaW5nIFNTTFNvY2tldC5hY2NlcHQoKSwgaWYgdGhlIFNTTCBoYW5kc2hha2UgZmFpbGVkIG9uIHRoZSBuZXcKK3NvY2tldCwgdGhlIHNvY2tldCB3b3VsZCBsaW5nZXIgaW5kZWZpbml0ZWx5LiAgVGhhbmtzIHRvIFBldGVyIFNhdmVsaWV2IGZvcgorcmVwb3J0aW5nLgorCisuLgorCisuLiBicG86IDE3Mjg5CisuLiBkYXRlOiA5MDU1CisuLiBub25jZTogTlBIT2tzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSByZWFkbGluZSBtb2R1bGUgbm93IHBsYXlzIG5pY2VyIHdpdGggZXh0ZXJuYWwgbW9kdWxlcyBvciBhcHBsaWNhdGlvbnMKK2NoYW5naW5nIHRoZSBybF9jb21wbGV0ZXJfd29yZF9icmVha19jaGFyYWN0ZXJzIGdsb2JhbCB2YXJpYWJsZS4gIEluaXRpYWwKK3BhdGNoIGJ5IEJyYWRsZXkgRnJvZWhsZS4KKworLi4KKworLi4gYnBvOiAxMjE4MQorLi4gZGF0ZTogOTA1NAorLi4gbm9uY2U6IERxMm1vQworLi4gc2VjdGlvbjogTGlicmFyeQorCitzZWxlY3QgbW9kdWxlOiBGaXggc3RydWN0IGtldmVudCBkZWZpbml0aW9uIG9uIE9wZW5CU0QgNjQtYml0IHBsYXRmb3Jtcy4KK1BhdGNoIGJ5IEZlZGVyaWNvIFNjaHdpbmR0LgorCisuLgorCisuLiBicG86IDE0MTczCisuLiBkYXRlOiA5MDUzCisuLiBub25jZTogbVpNOVByCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0F2b2lkIGNyYXNoaW5nIHdoZW4gcmVhZGluZyBhIHNpZ25hbCBoYW5kbGVyIGR1cmluZyBpbnRlcnByZXRlciBzaHV0ZG93bi4KKworLi4KKworLi4gYnBvOiAxNjMxNgorLi4gZGF0ZTogOTA1MgorLi4gbm9uY2U6IEFPa3hQZAorLi4gc2VjdGlvbjogTGlicmFyeQorCittaW1ldHlwZXMgbm93IHJlY29nbml6ZXMgdGhlIC54eiBhbmQgLnR4eiAoLnRhci54eikgZXh0ZW5zaW9ucy4KKworLi4KKworLi4gYnBvOiAxNzE5MgorLi4gZGF0ZTogOTA1MQorLi4gbm9uY2U6IEYtdklGbAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZXN0b3JlIHRoZSBwYXRjaCBmb3IgSXNzdWUgIzEwMzA5IHdoaWNoIHdhcyBvbW1pdHRlZCBpbiAyLjcuNCB3aGVuIHVwZGF0aW5nCit0aGUgYnVuZGxlZCB2ZXJzaW9uIG9mIGxpYmZmaSB1c2VkIGJ5IGN0eXBlcy4KKworLi4KKworLi4gYnBvOiAxNzg0MworLi4gZGF0ZTogOTA1MAorLi4gbm9uY2U6IDlJQmU5QQorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmVkIHRlc3QgZGF0YSBmaWxlIHRoYXQgd2FzIHRyaWdnZXJpbmcgZmFsc2UtcG9zaXRpdmUgdmlydXMgd2FybmluZ3MKK3dpdGggY2VydGFpbiBhbnRpdmlydXMgc29mdHdhcmUuCisKKy4uCisKKy4uIGJwbzogMTczNTMKKy4uIGRhdGU6IDkwNDkKKy4uIG5vbmNlOiA2V2lxZmwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUGxpc3RsaWIgZW1pdHRlZCBlbXB0eSBkYXRhIHRhZ3Mgd2l0aCBkZWVwbHkgbmVzdGVkIGRhdGFzdHJ1Y3R1cmVzCisKKy4uCisKKy4uIGJwbzogMTE3MTQKKy4uIGRhdGU6IDkwNDgKKy4uIG5vbmNlOiBFWnh6WWwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXNlICd3aXRoJyBzdGF0ZW1lbnRzIHRvIGFzc3VyZSBhIFNlbWFwaG9yZSByZWxlYXNlcyBhIGNvbmRpdGlvbiB2YXJpYWJsZS4KK09yaWdpbmFsIHBhdGNoIGJ5IFRob21hcyBSYWNoZWwuCisKKy4uCisKKy4uIGJwbzogMTc3OTUKKy4uIGRhdGU6IDkwNDcKKy4uIG5vbmNlOiBJZ1Z3TXYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmV2ZXJ0ZWQgYmFja3dhcmRzLWluY29tcGF0aWJsZSBjaGFuZ2UgaW4gU3lzTG9nSGFuZGxlciB3aXRoIFVuaXggZG9tYWluCitzb2NrZXRzLgorCisuLgorCisuLiBicG86IDE3NTU1CisuLiBkYXRlOiA5MDQ2CisuLiBub25jZTogOWtsSkNCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBGb3JrQXdhcmVUaHJlYWRMb2NrIHNvIHRoYXQgc2l6ZSBvZiBhZnRlciBmb3JrIHJlZ2lzdHJ5IGRvZXMgbm90IGdyb3cKK2V4cG9uZW50aWFsbHkgd2l0aCBnZW5lcmF0aW9uIG9mIHByb2Nlc3MuCisKKy4uCisKKy4uIGJwbzogMTc3MTAKKy4uIGRhdGU6IDkwNDUKKy4uIG5vbmNlOiBwLWFtSGgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGNQaWNrbGUgcmFpc2luZyBhIFN5c3RlbUVycm9yIG9uIGJvZ3VzIGlucHV0LgorCisuLgorCisuLiBicG86IDE3MzQxCisuLiBkYXRlOiA5MDQ0CisuLiBub25jZTogREktMUFPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luY2x1ZGUgdGhlIGludmFsaWQgbmFtZSBpbiB0aGUgZXJyb3IgbWVzc2FnZXMgZnJvbSByZSBhYm91dCBpbnZhbGlkIGdyb3VwCituYW1lcy4KKworLi4KKworLi4gYnBvOiAxNzAxNgorLi4gZGF0ZTogOTA0MworLi4gbm9uY2U6IGxRbk1JOAorLi4gc2VjdGlvbjogTGlicmFyeQorCitHZXQgcmlkIG9mIHBvc3NpYmxlIHBvaW50ZXIgd3JhcGFyb3VuZHMgYW5kIGludGVnZXIgb3ZlcmZsb3dzIGluIHRoZSByZQorbW9kdWxlLiAgUGF0Y2ggYnkgTmlja29sYWkgWmVsZG92aWNoLgorCisuLgorCisuLiBicG86IDE3NTM2CisuLiBkYXRlOiA5MDQyCisuLiBub25jZTogRTZyY3JuCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCB0byB3ZWJicm93c2VyJ3MgYnJvd3NlciBsaXN0OiB4ZGctb3BlbiwgZ3Zmcy1vcGVuLCB3d3ctYnJvd3NlciwKK3gtd3d3LWJyb3dzZXIsIGNocm9taXVtIGJyb3dzZXJzLCBpY2V3ZWFzZWwsIGljZWFwZS4KKworLi4KKworLi4gYnBvOiAxNzY1NgorLi4gZGF0ZTogOTA0MQorLi4gbm9uY2U6IHd0UXEyeAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggZXh0cmFjdGlvbiBvZiB6aXAgZmlsZXMgd2l0aCB1bmljb2RlIG1lbWJlciBwYXRocy4KKworLi4KKworLi4gYnBvOiAxNzY2NgorLi4gZGF0ZTogOTA0MAorLi4gbm9uY2U6IEw4R3E4dQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcmVhZGluZyBnemlwIGZpbGVzIHdpdGggYW4gZXh0cmEgZmllbGQuCisKKy4uCisKKy4uIGJwbzogMTMxNTAKKy4uIGRhdGU6IDkwMzkKKy4uIG5vbmNlOiBmVy13WWkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc3lzY29uZmlnIG5vIGxvbmdlciBwYXJzZXMgdGhlIE1ha2VmaWxlIGFuZCBjb25maWcuaCBmaWxlcyB3aGVuIGltcG9ydGVkLAoraW5zdGVhZCBkb2luZyBpdCBhdCBidWlsZCB0aW1lLiAgVGhpcyBtYWtlcyBpbXBvcnRpbmcgc3lzY29uZmlnIGZhc3RlciBhbmQKK3JlZHVjZXMgUHl0aG9uIHN0YXJ0dXAgdGltZSBieSAyMCUuIChTZWUgYWxzbzogYnBvLTE3NTEyKQorCisuLgorCisuLiBicG86IDEzMTYzCisuLiBkYXRlOiA5MDM4CisuLiBub25jZTogb0hTS2E1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbmFtZSBvcGVyYW5kcyBpbiBzbXRwbGliLlNNVFAuX2dldF9zb2NrZXQgdG8gY29ycmVjdCBuYW1lczsgZml4ZXMKK290aGVyd2lzZSBtaXNsZWFkaW5nIG91dHB1dCBpbiB0cmFjZWJhY2tzIGFuZCB3aGVuIHdoZW4gZGVidWcgaXMgb24uCisKKy4uCisKKy4uIGJwbzogMTc1MjYKKy4uIGRhdGU6IDkwMzcKKy4uIG5vbmNlOiB3aVl2bGsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4IGFuIEluZGV4RXJyb3IgcmFpc2VkIHdoaWxlIHBhc3NpbmcgY29kZSB3aXRob3V0IGZpbGVuYW1lIHRvCitpbnNwZWN0LmZpbmRzb3VyY2UoKS4gIEluaXRpYWwgcGF0Y2ggYnkgVHlsZXIgRG95bGUuCisKKy4uCisKKy4uIGJwbzogMTc1NDcKKy4uIGRhdGU6IDkwMzYKKy4uIG5vbmNlOiB5VmxsUmQKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0luIGNvbmZpZ3VyZSwgZXhwbGljaXRseSBwYXNzIC1XZm9ybWF0IGZvciB0aGUgYmVuZWZpdCBmb3IgR0NDIDQuOC4KKworLi4KKworLi4gYnBvOiAxNzY4MgorLi4gZGF0ZTogOTAzNQorLi4gbm9uY2U6IFVKeXAxYQorLi4gc2VjdGlvbjogQnVpbGQKKworQWRkIHRoZSBfaW8gbW9kdWxlIHRvIE1vZHVsZXMvU2V0dXAuZGlzdCAoY29tbWVudGVkIG91dCkuCisKKy4uCisKKy4uIGJwbzogMTcwODYKKy4uIGRhdGU6IDkwMzQKKy4uIG5vbmNlOiBQUHhBRnMKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1NlYXJjaCB0aGUgaW5jbHVkZSBhbmQgbGlicmFyeSBkaXJlY3RvcmllcyBwcm92aWRlZCBieSB0aGUgY29tcGlsZXIuCisKKy4uCisKKy4uIGJwbzogMTc5MjgKKy4uIGRhdGU6IDkwMzMKKy4uIG5vbmNlOiB5NnRpVDIKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCB0ZXN0X3N0cnVjdG1lbWJlcnMgb24gNjQtYml0IGJpZy1lbmRpYW4gbWFjaGluZXMuCisKKy4uCisKKy4uIGJwbzogMTc4ODMKKy4uIGRhdGU6IDkwMzIKKy4uIG5vbmNlOiBTck9fdUUKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCBidWlsZGJvdCB0ZXN0aW5nIG9mIFRraW50ZXIgb24gV2luZG93cy4gUGF0Y2ggYnkgWmFjaGFyeSBXYXJlLgorCisuLgorCisuLiBicG86IDc4NTUKKy4uIGRhdGU6IDkwMzEKKy4uIG5vbmNlOiBaYlg5MWQKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZCB0ZXN0cyBmb3IgY3R5cGVzL3dpbnJlZyBmb3IgaXNzdWVzIGZvdW5kIGluIElyb25QeXRob24uIEluaXRpYWwgcGF0Y2ggYnkKK0Rpbm8gVmllaGxhbmQuCisKKy4uCisKKy4uIGJwbzogMTc3MTIKKy4uIGRhdGU6IDkwMzAKKy4uIG5vbmNlOiBScWtIVUIKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCB0ZXN0X2dkYiBmYWlsdXJlcyBvbiBVYnVudHUgMTMuMDQuCisKKy4uCisKKy4uIGJwbzogMTcwNjUKKy4uIGRhdGU6IDkwMjkKKy4uIG5vbmNlOiBycWw4bEYKKy4uIHNlY3Rpb246IFRlc3RzCisKK1VzZSBwcm9jZXNzLXVuaXF1ZSBrZXkgZm9yIHdpbnJlZyB0ZXN0cyB0byBhdm9pZCBmYWlsdXJlcyBpZiB0ZXN0IGlzIHJ1bgorbXVsdGlwbGUgdGltZXMgaW4gcGFyYWxsZWwgKGVnOiBvbiBhIGJ1aWxkYm90IGhvc3QpLgorCisuLgorCisuLiBicG86IDE3ODM4CisuLiBkYXRlOiA5MDI4CisuLiBub25jZTogLUREZGhUCisuLiBzZWN0aW9uOiBJRExFCisKK0FsbG93IHN5cy5zdGRpbiB0byBiZSByZWFzc2lnbmVkLgorCisuLgorCisuLiBicG86IDE0NzM1CisuLiBkYXRlOiA5MDI3CisuLiBub25jZTogbGJidzQ5CisuLiBzZWN0aW9uOiBJRExFCisKK1VwZGF0ZSBJRExFIGRvY3MgdG8gb21pdCAiQ29udHJvbC16IG9uIFdpbmRvd3MiLgorCisuLgorCisuLiBicG86IDE3NTg1CisuLiBkYXRlOiA5MDI2CisuLiBub25jZTogb1hsY1ZYCisuLiBzZWN0aW9uOiBJRExFCisKK0ZpeGVkIElETEUgcmVncmVzc2lvbi4gTm93IGNsb3NlcyB3aGVuIHVzaW5nIGV4aXQoKSBvciBxdWl0KCkuCisKKy4uCisKKy4uIGJwbzogMTc2NTcKKy4uIGRhdGU6IDkwMjUKKy4uIG5vbmNlOiByR2Z4Tm8KKy4uIHNlY3Rpb246IElETEUKKworU2hvdyBmdWxsIFRrIHZlcnNpb24gaW4gSURMRSdzIGFib3V0IGRpYWxvZy4gUGF0Y2ggYnkgVG9kZCBSb3ZpdG8uCisKKy4uCisKKy4uIGJwbzogMTc2MTMKKy4uIGRhdGU6IDkwMjQKKy4uIG5vbmNlOiBNZkFKMzEKKy4uIHNlY3Rpb246IElETEUKKworUHJldmVudCB0cmFjZWJhY2sgd2hlbiByZW1vdmluZyBzeW50YXggY29sb3JpemVyIGluIElETEUuCisKKy4uCisKKy4uIGJwbzogMTIwNzU4OQorLi4gZGF0ZTogOTAyMworLi4gbm9uY2U6IHdxemtqaAorLi4gc2VjdGlvbjogSURMRQorCitCYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBwYXRjaCBmb3IgcmlnaHQtY2xpY2sgbWVudSBpbiBJRExFLgorCisuLgorCisuLiBicG86IDE2ODg3CisuLiBkYXRlOiA5MDIyCisuLiBub25jZTogLXRiLTBnCisuLiBzZWN0aW9uOiBJRExFCisKK0lETEUgbm93IGFjY2VwdHMgQ2FuY2VsIGluIHRhYmlmeS91bnRhYmlmeSBkaWFsb2cgYm94LgorCisuLgorCisuLiBicG86IDE0MjU0CisuLiBkYXRlOiA5MDIxCisuLiBub25jZTogaGVlTUctCisuLiBzZWN0aW9uOiBJRExFCisKK0lETEUgbm93IGhhbmRsZXMgcmVhZGxpbmUgY29ycmVjdGx5IGFjcm9zcyBzaGVsbCByZXN0YXJ0cy4KKworLi4KKworLi4gYnBvOiAxNzYxNAorLi4gZGF0ZTogOTAyMAorLi4gbm9uY2U6IDlwbXBZVworLi4gc2VjdGlvbjogSURMRQorCitJRExFIG5vIGxvbmdlciByYWlzZXMgZXhjZXB0aW9uIHdoZW4gcXVpY2tseSBjbG9zaW5nIGEgZmlsZS4KKworLi4KKworLi4gYnBvOiA2Njk4CisuLiBkYXRlOiA5MDE5CisuLiBub25jZTogZlhvaXYyCisuLiBzZWN0aW9uOiBJRExFCisKK0lETEUgbm93IG9wZW5zIGp1c3QgYW4gZWRpdG9yIHdpbmRvdyB3aGVuIGNvbmZpZ3VyZWQgdG8gZG8gc28uCisKKy4uCisKKy4uIGJwbzogODkwMAorLi4gZGF0ZTogOTAxOAorLi4gbm9uY2U6IGprVzk5cgorLi4gc2VjdGlvbjogSURMRQorCitVc2luZyBrZXlib2FyZCBzaG9ydGN1dHMgaW4gSURMRSB0byBvcGVuIGEgZmlsZSBubyBsb25nZXIgcmFpc2VzIGFuCitleGNlcHRpb24uCisKKy4uCisKKy4uIGJwbzogNjY0OQorLi4gZGF0ZTogOTAxNworLi4gbm9uY2U6IHV3R2ljZQorLi4gc2VjdGlvbjogSURMRQorCitGaXhlZCBtaXNzaW5nIGV4aXQgc3RhdHVzIGluIElETEUuIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvLgorCisuLgorCisuLiBicG86IDE3MzkwCisuLiBkYXRlOiA5MDE2CisuLiBub25jZTogbzN3NHZjCisuLiBzZWN0aW9uOiBJRExFCisKK0Rpc3BsYXkgUHl0aG9uIHZlcnNpb24gb24gSWRsZSB0aXRsZSBiYXIuIEluaXRpYWwgcGF0Y2ggYnkgRWRtb25kIEJ1cm5ldHQuCisKKy4uCisKKy4uIGJwbzogMTU5NDAKKy4uIGRhdGU6IDkwMTUKKy4uIG5vbmNlOiBYTDYyeHUKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworU3BlY2lmeSBlZmZlY3Qgb2YgbG9jYWxlIG9uIHRpbWUgZnVuY3Rpb25zLgorCisuLgorCisuLiBicG86IDY2OTYKKy4uIGRhdGU6IDkwMTQKKy4uIG5vbmNlOiAtYVJWcmYKKy4uIHNlY3Rpb246IERvY3VtZW50YXRpb24KKworYWRkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBQcm9maWxlIG9iamVjdHMsIGFuZCBpbXByb3ZlIHByb2ZpbGUvY1Byb2ZpbGUKK2RvY3MuICBQYXRjaCBieSBUb20gUGluY2tuZXkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjcuNi5yc3QgYi9NaXNjL05FV1MuZC8yLjcuNi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFhYjliYwotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNy42LnJzdApAQCAtMCwwICsxLDM3IEBACisuLiBicG86IDE5NDM1CisuLiBkYXRlOiA5MTg2CisuLiBub25jZToga1hxTXozCisuLiByZWxlYXNlIGRhdGU6IDIwMTMtMTEtMTAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGRpcmVjdG9yeSB0cmF2ZXJzYWwgYXR0YWNrIG9uIENHSUh0dHBSZXF1ZXN0SGFuZGxlci4KKworLi4KKworLi4gYnBvOiAxOTQyNgorLi4gZGF0ZTogOTE4NQorLi4gbm9uY2U6IFB3YXRQNworLi4gc2VjdGlvbjogSURMRQorCitGaXhlZCB0aGUgb3BlbmluZyBvZiBQeXRob24gc291cmNlIGZpbGUgd2l0aCBzcGVjaWZpZWQgZW5jb2RpbmcuCisKKy4uCisKKy4uIGJwbzogMTk0NTcKKy4uIGRhdGU6IDkxODQKKy4uIG5vbmNlOiBIR3dFRngKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeGVkIHhtbGNoYXJyZWZyZXBsYWNlIHRlc3RzIG9uIHdpZGUgYnVpbGQgd2hlbiB0ZXN0cyBhcmUgbG9hZGVkIGZyb20KKy5weVtjb10gZmlsZXMuCisKKy4uCisKKy4uIGJwbzogMTU2NjMKKy4uIGRhdGU6IDkxODMKKy4uIG5vbmNlOiBwLXZWVEcKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1JldmVydCBPUyBYIGluc3RhbGxlciBidWlsdC1pbiBUY2wvVGsgc3VwcG9ydCBmb3IgMi43LjYuIFNvbWUgdGhpcmQtcGFydHkKK3Byb2plY3RzLCBzdWNoIGFzIE1hdHBsb3RsaWIgYW5kIFBJTC9QaWxsb3csIGRlcGVuZGVkIG9uIGJlaW5nIGFibGUgdG8gYnVpbGQKK3dpdGggVGNsIGFuZCBUayBmcmFtZXdvcmtzIGluIC9MaWJyYXJ5L0ZyYW1ld29ya3MuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjcuNnJjMS5yc3QgYi9NaXNjL05FV1MuZC8yLjcuNnJjMS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJlZTJlNgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNy42cmMxLnJzdApAQCAtMCwwICsxLDExMzAgQEAKKy4uIGJwbzogMTg2MDMKKy4uIGRhdGU6IDkxODIKKy4uIG5vbmNlOiA3U015QVEKKy4uIHJlbGVhc2UgZGF0ZTogMjAxMy0xMC0yNgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRW5zdXJlIHRoYXQgUHlPU19teXN0cmljbXAgYW5kIFB5T1NfbXlzdHJuaWNtcCBhcmUgaW4gdGhlIFB5dGhvbiBleGVjdXRhYmxlCithbmQgbm90IHJlbW92ZWQgYnkgdGhlIGxpbmtlcidzIG9wdGltaXplci4KKworLi4KKworLi4gYnBvOiAxOTI3OQorLi4gZGF0ZTogOTE4MQorLi4gbm9uY2U6IGJYaV9hMQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVVRGLTcgZGVjb2RlciBubyBtb3JlIHByb2R1Y2VzIGlsbGVnYWwgdW5pY29kZSBzdHJpbmdzLgorCisuLgorCisuLiBicG86IDE4NzM5CisuLiBkYXRlOiA5MTgwCisuLiBub25jZTogWlV1c3BZCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYW4gaW5jb25zaXN0ZW5jeSBiZXR3ZWVuIG1hdGgubG9nKG4pIGFuZCBtYXRoLmxvZyhsb25nKG4pKTsgdGhlIHJlc3VsdHMKK2NvdWxkIGJlIG9mZiBmcm9tIG9uZSBhbm90aGVyIGJ5IGEgdWxwIG9yIHR3by4KKworLi4KKworLi4gYnBvOiAxMzQ2MQorLi4gZGF0ZTogOTE3OQorLi4gbm9uY2U6IEV4VjN0WAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgY3Jhc2ggaW4gdGhlICJyZXBsYWNlIiBlcnJvciBoYW5kbGVyIG9uIDY0LWJpdCBwbGF0Zm9ybXMuIFBhdGNoIGJ5CitZb2dlc2ggQ2hhdWRoYXJpLgorCisuLgorCisuLiBicG86IDE1ODY2CisuLiBkYXRlOiA5MTc4CisuLiBub25jZTogbWVaSEUtCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitUaGUgeG1sY2hhcnJlZnJlcGxhY2UgZXJyb3IgaGFuZGxlciBubyBtb3JlIHByb2R1Y2VzIHR3byBYTUwgZW50aXRpZXMgZm9yIGEKK25vbi1CTVAgY2hhcmFjdGVyIG9uIG5hcnJvdyBidWlsZC4KKworLi4KKworLi4gYnBvOiAxODE4NAorLi4gZGF0ZTogOTE3NworLi4gbm9uY2U6IHhMTlZHMworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHlVbmljb2RlX0Zyb21Gb3JtYXQoKSBhbmQgUHlVbmljb2RlX0Zyb21Gb3JtYXRWKCkgbm93IHJhaXNlIE92ZXJmbG93RXJyb3IKK3doZW4gYW4gYXJndW1lbnQgb2YgJWMgZm9ybWF0IGlzIG91dCBvZiByYW5nZS4KKworLi4KKworLi4gYnBvOiAxODEzNworLi4gZGF0ZTogOTE3NgorLi4gbm9uY2U6IGFfVnNvcgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRGV0ZWN0IGludGVnZXIgb3ZlcmZsb3cgb24gcHJlY2lzaW9uIGluIGZsb2F0Ll9fZm9ybWF0X18oKSBhbmQKK2NvbXBsZXguX19mb3JtYXRfXygpLgorCisuLgorCisuLiBicG86IDE4MDM4CisuLiBkYXRlOiA5MTc1CisuLiBub25jZTogUThwcmhkCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitTeW50YXhFcnJvciByYWlzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIHNvdXJjZXMgd2l0aCBpbGxlZ2FsIGVuY29kaW5nIG5vdworYWx3YXlzIGNvbnRhaW5zIGFuIGVuY29kaW5nIG5hbWUuCisKKy4uCisKKy4uIGJwbzogMTgwMTkKKy4uIGRhdGU6IDkxNzQKKy4uIG5vbmNlOiBIZEFJbmwKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBjcmFzaCBpbiB0aGUgcmVwciBvZiBkaWN0aW9uYXJpZXMgY29udGFpbmluZyB0aGVpciBvd24gdmlld3MuCisKKy4uCisKKy4uIGJwbzogMTg0MjcKKy4uIGRhdGU6IDkxNzMKKy4uIG5vbmNlOiBYRUJONkwKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3N0ci5yZXBsYWNlIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlciB3aXRoIGh1Z2Ugc3RyaW5ncy4KKworLi4KKworLi4gYnBvOiAxOTM5MworLi4gZGF0ZTogOTE3MgorLi4gbm9uY2U6IHl0YkF3bAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc3ltdGFibGUuc3ltdGFibGUgZnVuY3Rpb24gdG8gbm90IGJlIGNvbmZ1c2VkIHdoZW4gdGhlcmUgYXJlIGZ1bmN0aW9ucworb3IgY2xhc3NlcyBuYW1lZCAidG9wIi4KKworLi4KKworLi4gYnBvOiAxOTMyNworLi4gZGF0ZTogOTE3MQorLi4gbm9uY2U6IFM3WHZ4cworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aGUgd29ya2luZyBvZiByZWd1bGFyIGV4cHJlc3Npb25zIHdpdGggdG9vIGJpZyBjaGFyc2V0LgorCisuLgorCisuLiBicG86IDE5MzUwCisuLiBkYXRlOiA5MTcwCisuLiBub25jZTogTUNDS2pLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luY3JlYXNpbmcgdGhlIHRlc3QgY292ZXJhZ2Ugb2YgbWFjdXJsMnBhdGguIFBhdGNoIGJ5IENvbGluIFdpbGxpYW1zLgorCisuLgorCisuLiBicG86IDE5MzUyCisuLiBkYXRlOiA5MTY5CisuLiBub25jZTogM1RmQWtZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB1bml0dGVzdCBkaXNjb3Zlcnkgd2hlbiBhIG1vZHVsZSBjYW4gYmUgcmVhY2hlZCB0aHJvdWdoIHNldmVyYWwgcGF0aHMKKyhlLmcuIHVuZGVyIERlYmlhbi9VYnVudHUgd2l0aCB2aXJ0dWFsZW52KS4KKworLi4KKworLi4gYnBvOiAxNTIwNworLi4gZGF0ZTogOTE2OAorLi4gbm9uY2U6IHBpT0JCaQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggbWltZXR5cGVzIHRvIHJlYWQgZnJvbSBjb3JyZWN0IHBhcnQgb2YgV2luZG93cyByZWdpc3RyeSBPcmlnaW5hbCBwYXRjaAorYnkgRGF2ZSBDaGFtYmVycworCisuLgorCisuLiBicG86IDg5NjQKKy4uIGRhdGU6IDkxNjcKKy4uIG5vbmNlOiBkelUyRkIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZml4IHBsYXRmb3JtLl9zeXNfdmVyc2lvbiB0byBoYW5kbGUgSXJvblB5dGhvbiAyLjYrLiBQYXRjaCBieSBNYXJ0aW4KK01hdHVzaWFrLgorCisuLgorCisuLiBicG86IDE2MDM4CisuLiBkYXRlOiA5MTY2CisuLiBub25jZTogVFpHYlNvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NWRS0yMDEzLTE3NTI6IGZ0cGxpYjogTGltaXQgYW1vdW50IG9mIGRhdGEgcmVhZCBieSBsaW1pdGluZyB0aGUgY2FsbCB0bworcmVhZGxpbmUoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1pY2hhxYIgSmFzdHJ6xJlic2tpIGFuZCBHaWFtcGFvbG8gUm9kb2xhLgorCisuLgorCisuLiBicG86IDE5Mjc2CisuLiBkYXRlOiA5MTY1CisuLiBub25jZTogWTY5UW12CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHRoZSB3YXZlIG1vZHVsZSBvbiA2NC1iaXQgYmlnLWVuZGlhbiBwbGF0Zm9ybXMuCisKKy4uCisKKy4uIGJwbzogMTg0NTgKKy4uIGRhdGU6IDkxNjQKKy4uIG5vbmNlOiA2QnMwZ3IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJldmVudCBjcmFzaGVzIHdpdGggbmV3ZXIgdmVyc2lvbnMgb2YgbGliZWRpdC4gIEl0cyByZWFkbGluZSBlbXVsYXRpb24gaGFzCitjaGFuZ2VkIGZyb20gMC1iYXNlZCBpbmRleGluZyB0byAxLWJhc2VkIGxpa2UgZ251IHJlYWRsaW5lLiBPcmlnaW5hbCBwYXRjaAorYnkgUm9uYWxkIE91c3NvcmVuLgorCisuLgorCisuLiBicG86IDE4OTE5CisuLiBkYXRlOiA5MTYzCisuLiBub25jZTogcklPM01RCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0lmIHRoZSBjbG9zZSgpIG1ldGhvZCBvZiBhIHdyaXRlciBpbiB0aGUgc3VuYXUgb3Igd2F2ZSBtb2R1bGUgZmFpbGVkLCBzZWNvbmQKK2ludm9jYXRpb24gb2YgY2xvc2UoKSBhbmQgZGVzdHJ1Y3RvciBubyBtb3JlIHJhaXNlIGFuIGV4Y2VwdGlvbi4gIFNlY29uZAoraW52b2NhdGlvbiBvZiBjbG9zZSgpIG9uIHN1bmF1IHdyaXRlciBub3cgaGFzIG5vIGVmZmVjdHMuIFRoZSBhaWZjIG1vZHVsZQorbm93IGFjY2VwdHMgbG93ZXIgY2FzZSBvZiBuYW1lcyBvZiB0aGUgJ3VsYXcnIGFuZCAnYWxhdycgY29kZWNzLgorCisuLgorCisuLiBicG86IDE5MTMxCisuLiBkYXRlOiA5MTYyCisuLiBub25jZTogZVpYenByCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBhaWZjIG1vZHVsZSBub3cgY29ycmVjdGx5IHJlYWRzIGFuZCB3cml0ZXMgc2FtcHdpZHRoIG9mIGNvbXByZXNzZWQKK3N0cmVhbXMuCisKKy4uCisKKy4uIGJwbzogMTkxNTgKKy4uIGRhdGU6IDkxNjEKKy4uIG5vbmNlOiBHdmtadVUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQSByYXJlIHJhY2UgaW4gQm91bmRlZFNlbWFwaG9yZSBjb3VsZCBhbGxvdyAucmVsZWFzZSgpIHRvbyBvZnRlbi4KKworLi4KKworLi4gYnBvOiAxODAzNworLi4gZGF0ZTogOTE2MAorLi4gbm9uY2U6IHBtWlJTNworLi4gc2VjdGlvbjogTGlicmFyeQorCisydG8zIG5vdyBlc2NhcGVzICdcdScgYW5kICdcVScgaW4gbmF0aXZlIHN0cmluZ3MuCisKKy4uCisKKy4uIGJwbzogMTkxMzcKKy4uIGRhdGU6IDkxNTkKKy4uIG5vbmNlOiBrZEpjaG4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHBwcmludCBtb2R1bGUgbm93IGNvcnJlY3RseSBmb3JtYXRzIGVtcHR5IHNldCBhbmQgZnJvemVuc2V0IGFuZAoraW5zdGFuY2VzIG9mIHNldCBhbmQgZnJvemVuc2V0IHN1YmNsYXNzZXMuCisKKy4uCisKKy4uIGJwbzogMTYwNDAKKy4uIGRhdGU6IDkxNTgKKy4uIG5vbmNlOiB4ZzN4bFgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ1ZFLTIwMTMtMTc1Mjogbm50cGxpYjogTGltaXQgbWF4aW11bSBsaW5lIGxlbmd0aHMgdG8gMjA0OCB0byBwcmV2ZW50CityZWFkbGluZSgpIGNhbGxzIGZyb20gY29uc3VtaW5nIHRvbyBtdWNoIG1lbW9yeS4gIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4uCisKKy4uCisKKy4uIGJwbzogMTI2NDEKKy4uIGRhdGU6IDkxNTcKKy4uIG5vbmNlOiByOXNJeVgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQXZvaWQgcGFzc2luZyAiLW1uby1jeWd3aW4iIHRvIHRoZSBtaW5ndzMyIGNvbXBpbGVyLCBleGNlcHQgd2hlbiBuZWNlc3NhcnkuCitQYXRjaCBieSBPc2NhciBCZW5qYW1pbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA5MTU2CisuLiBub25jZTogMDhUc0c1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Byb3Blcmx5IGluaXRpYWxpemUgYWxsIGZpZWxkcyBvZiBhIFNTTCBvYmplY3QgYWZ0ZXIgYWxsb2NhdGlvbi4KKworLi4KKworLi4gYnBvOiA0MzY2CisuLiBkYXRlOiA5MTU1CisuLiBub25jZTogbERFZGZLCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBidWlsZGluZyBleHRlbnNpb25zIG9uIGFsbCBwbGF0Zm9ybXMgd2hlbiAtLWVuYWJsZS1zaGFyZWQgaXMgdXNlZC4KKworLi4KKworLi4gYnBvOiAxODk1MAorLi4gZGF0ZTogOTE1NAorLi4gbm9uY2U6IEFvWjVHWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggbWlzY2VsbGFuZW91cyBidWdzIGluIHRoZSBzdW5hdSBtb2R1bGUuIEF1X3JlYWQucmVhZGZyYW1lcygpIG5vdyB1cGRhdGVzCitjdXJyZW50IGZpbGUgcG9zaXRpb24gYW5kIHJlYWRzIGNvcnJlY3QgbnVtYmVyIG9mIGZyYW1lcyBmcm9tIG11bHRpY2hhbm5lbAorc3RyZWFtLiAgQXVfd3JpdGUud3JpdGVmcmFtZXNyYXcoKSBub3cgY29ycmVjdGx5IHVwZGF0ZXMgY3VycmVudCBmaWxlCitwb3NpdGlvbi4gIEF1X3JlYWQgYW5kIEF1X3dyaXRlIG5vdyBjb3JyZWN0bHkgd29yayB3aXRoIGZpbGUgb2JqZWN0IGlmIHN0YXJ0CitmaWxlIHBvc2l0aW9uIGlzIG5vdCBhIHplcm8uCisKKy4uCisKKy4uIGJwbzogMTgwNTAKKy4uIGRhdGU6IDkxNTMKKy4uIG5vbmNlOiBMVUtyQlQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYW4gaW5jb21wYXRpYmlsaXR5IG9mIHRoZSByZSBtb2R1bGUgd2l0aCBQeXRob24gMi43LjMgYW5kIG9sZGVyCitiaW5hcmllcy4KKworLi4KKworLi4gYnBvOiAxOTAzNworLi4gZGF0ZTogOTE1MgorLi4gbm9uY2U6IE9mQmhvVQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbWFpbGJveCBtb2R1bGUgbm93IG1ha2VzIGFsbCBjaGFuZ2VzIHRvIG1haWxkaXIgZmlsZXMgYmVmb3JlIG1vdmluZyB0aGVtCitpbnRvIHBsYWNlLCB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2l0aCBvdGhlciBwcm9ncmFtcyB0aGF0IG1heSBiZQorYWNjZXNzaW5nIHRoZSBtYWlsZGlyIGRpcmVjdG9yeS4KKworLi4KKworLi4gYnBvOiAxNDk4NAorLi4gZGF0ZTogOTE1MQorLi4gbm9uY2U6IGlSYkZwNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitPbiBQT1NJWCBzeXN0ZW1zLCB3aGVuIG5ldHJjIGlzIGNhbGxlZCB3aXRob3V0IGEgZmlsZW5hbWUgYXJndW1lbnQgKGFuZAordGhlcmVmb3JlIGlzIHJlYWRpbmcgdGhlIHVzZXIncyAkSE9NRS8ubmV0cmMgZmlsZSksIGl0IG5vdyBlbmZvcmNlcyB0aGUgc2FtZQorc2VjdXJpdHkgcnVsZXMgYXMgdHlwaWNhbCBmdHAgY2xpZW50czogdGhlIC5uZXRyYyBmaWxlIG11c3QgYmUgb3duZWQgYnkgdGhlCit1c2VyIHRoYXQgb3ducyB0aGUgcHJvY2VzcyBhbmQgbXVzdCBub3QgYmUgcmVhZGFibGUgYnkgYW55IG90aGVyIHVzZXIuCisKKy4uCisKKy4uIGJwbzogMTczMjQKKy4uIGRhdGU6IDkxNTAKKy4uIG5vbmNlOiAwUGtPVGkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGh0dHAuc2VydmVyJ3MgcmVxdWVzdCBoYW5kbGluZyBjYXNlIG9uIHRyYWlsaW5nICcvJy4gUGF0Y2ggY29udHJpYnV0ZWQKK2J5IFZhanJhc2t5IEtvay4KKworLi4KKworLi4gYnBvOiAxOTAxOAorLi4gZGF0ZTogOTE0OQorLi4gbm9uY2U6IG1udEtPVworLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgaGVhcHEubWVyZ2UoKSBmdW5jdGlvbiBubyBsb25nZXIgc3VwcHJlc3NlcyBJbmRleEVycm9yIGluIHRoZSB1bmRlcmx5aW5nCitpdGVyYWJsZXMuCisKKy4uCisKKy4uIGJwbzogMTg3ODQKKy4uIGRhdGU6IDkxNDgKKy4uIG5vbmNlOiBvY1UzR0cKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHV1aWQgbW9kdWxlIG5vIG1vcmUgYXR0ZW1wdHMgdG8gbG9hZCBsaWJjIHZpYSBjdHlwZXMuQ0RMTCwgaWYgYWxsCituZWNlc3NhcnkgZnVuY3Rpb25zIGFyZSBhbHJlYWR5IGZvdW5kIGluIGxpYnV1aWQuIFBhdGNoIGJ5IEV2Z2VueSBTb2xvZ3Vib3YuCisKKy4uCisKKy4uIGJwbzogMTQ5NzEKKy4uIGRhdGU6IDkxNDcKKy4uIG5vbmNlOiBjYzh4TkEKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordW5pdHRlc3QgdGVzdCBkaXNjb3Zlcnkgbm8gbG9uZ2VyIGdldHMgY29uZnVzZWQgd2hlbiBhIGZ1bmN0aW9uIGhhcyBhCitkaWZmZXJlbnQgX19uYW1lX18gdGhhbiBpdHMgbmFtZSBpbiB0aGUgVGVzdENhc2UgY2xhc3MgZGljdGlvbmFyeS4KKworLi4KKworLi4gYnBvOiAxODY3MgorLi4gZGF0ZTogOTE0NgorLi4gbm9uY2U6IENJYmxEaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBmb3JtYXQgc3BlY2lmaWVycyBmb3IgUHlfc3NpemVfdCBpbiBkZWJ1Z2dpbmcgb3V0cHV0IGluIHRoZSBfc3JlCittb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMTg4MzAKKy4uIGRhdGU6IDkxNDUKKy4uIG5vbmNlOiBVemktWTQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaW5zcGVjdC5nZXRjbGFzc3RyZWUoKSBubyBtb3JlIHByb2R1Y2VzIGR1cGxpY2F0ZWQgZW50cmllcyBldmVuIHdoZW4gaW5wdXQKK2xpc3QgY29udGFpbnMgZHVwbGljYXRlcy4KKworLi4KKworLi4gYnBvOiAxODkwOQorLi4gZGF0ZTogOTE0NAorLi4gbm9uY2U6IFhTdTk4TgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggX3RraW50ZXIudGthcHAuaW50ZXJwYWRkcigpIG9uIFdpbmRvd3MgNjQtYml0LCBkb24ndCBjYXN0IDY0LWJpdCBwb2ludGVyCit0byBsb25nICgzMiBiaXRzKS4KKworLi4KKworLi4gYnBvOiAxODg3NgorLi4gZGF0ZTogOTE0MworLi4gbm9uY2U6IDMwSXN0OQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgRmlsZUlPLm1vZGUgYXR0cmlidXRlIG5vdyBiZXR0ZXIgcmVmbGVjdHMgdGhlIGFjdHVhbCBtb2RlIHVuZGVyIHdoaWNoCit0aGUgZmlsZSB3YXMgb3BlbmVkLiAgUGF0Y2ggYnkgRXJpayBCcmF5LgorCisuLgorCisuLiBicG86IDE4ODUxCisuLiBkYXRlOiA5MTQyCisuLiBub25jZTogLVlzRjZYCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0F2b2lkIGEgZG91YmxlIGNsb3NlIG9mIHN1YnByb2Nlc3MgcGlwZXMgd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBmYWlscworc3RhcnRpbmcuCisKKy4uCisKKy4uIGJwbzogMTg0MTgKKy4uIGRhdGU6IDkxNDEKKy4uIG5vbmNlOiBfU0ZHOHcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWZ0ZXIgZm9yaygpLCByZWluaXQgYWxsIHRocmVhZHMgc3RhdGVzLCBub3Qgb25seSBhY3RpdmUgb25lcy4gUGF0Y2ggYnkgQS4KK0plc3NlIEppcnl1IERhdmlzLgorCisuLgorCisuLiBicG86IDExOTczCisuLiBkYXRlOiA5MTQwCisuLiBub25jZTogdVB0QnZHCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIHByb2JsZW0gaW4ga2V2ZW50LiBUaGUgZmxhZ3MgYW5kIGZmbGFncyBmaWVsZHMgYXJlIG5vdyBwcm9wZXJseQoraGFuZGxlZCBhcyB1bnNpZ25lZC4KKworLi4KKworLi4gYnBvOiAxNjgwOQorLi4gZGF0ZTogOTEzOQorLi4gbm9uY2U6IFRGNW1ENworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBzb21lIHRraW50ZXIgaW5jb21wYXRpYmlsaXRpZXMgd2l0aCBUY2wvVGsgOC42LgorCisuLgorCisuLiBicG86IDE2ODA5CisuLiBkYXRlOiA5MTM4CisuLiBub25jZTogV3FTSGRQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RraW50ZXIncyBzcGxpdGxpc3QoKSBhbmQgc3BsaXQoKSBtZXRob2RzIG5vdyBhY2NlcHQgVGNsX09iaiBhcmd1bWVudC4KKworLi4KKworLi4gYnBvOiAxNzExOQorLi4gZGF0ZTogOTEzNworLi4gbm9uY2U6IHNmcDQ3ZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBpbnRlZ2VyIG92ZXJmbG93cyB3aGVuIHByb2Nlc3NpbmcgbGFyZ2UgVW5pY29kZSBzdHJpbmdzIGFuZCB0dXBsZXMgaW4KK3RoZSB0a2ludGVyIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiAxNTIzMworLi4gZGF0ZTogOTEzNgorLi4gbm9uY2U6IDhZUVcwLQorLi4gc2VjdGlvbjogTGlicmFyeQorCitQeXRob24gbm93IGd1YXJhbnRlZXMgdGhhdCBjYWxsYWJsZXMgcmVnaXN0ZXJlZCB3aXRoIHRoZSBhdGV4aXQgbW9kdWxlIHdpbGwKK2JlIGNhbGxlZCBpbiBhIGRldGVybWluaXN0aWMgb3JkZXIuCisKKy4uCisKKy4uIGJwbzogMTg3NDcKKy4uIGRhdGU6IDkxMzUKKy4uIG5vbmNlOiB0UFprYkcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmUtc2VlZCBPcGVuU1NMJ3MgcHNldWRvLXJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGFmdGVyIGZvcmsuIEEKK3B0aHJlYWRfYXRmb3JrKCkgcGFyZW50IGhhbmRsZXIgaXMgdXNlZCB0byBzZWVkIHRoZSBQUk5HIHdpdGggcGlkLCB0aW1lIGFuZAorc29tZSBzdGFjayBkYXRhLgorCisuLgorCisuLiBicG86IDg4NjUKKy4uIGRhdGU6IDkxMzQKKy4uIG5vbmNlOiBjS0JTSmgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29uY3VycmVudCBpbnZvY2F0aW9uIG9mIHNlbGVjdC5wb2xsLnBvbGwoKSBub3cgcmFpc2VzIGEgUnVudGltZUVycm9yCitleGNlcHRpb24uICBQYXRjaCBieSBDaHJpc3RpYW4gU2NodWJlcnQuCisKKy4uCisKKy4uIGJwbzogMTM0NjEKKy4uIGRhdGU6IDkxMzMKKy4uIG5vbmNlOiBuTGVTMlIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgY3Jhc2ggaW4gdGhlIFRleHRJT1dyYXBwZXIudGVsbCBtZXRob2Qgb24gNjQtYml0IHBsYXRmb3Jtcy4gIFBhdGNoIGJ5CitZb2dlc2ggQ2hhdWRoYXJpLgorCisuLgorCisuLiBicG86IDE4Nzc3CisuLiBkYXRlOiA5MTMyCisuLiBub25jZTogVkxzak93CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBzc2wgbW9kdWxlIG5vdyB1c2VzIHRoZSBuZXcgQ1JZUFRPX1RIUkVBRElEIEFQSSBvZiBPcGVuU1NMIDEuMC4wKworaW5zdGVhZCBvZiB0aGUgZGVwcmVjYXRlZCBDUllQVE8gaWQgY2FsbGJhY2sgZnVuY3Rpb24uCisKKy4uCisKKy4uIGJwbzogMTg3NjgKKy4uIGRhdGU6IDkxMzEKKy4uIG5vbmNlOiByM1RTQ28KKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29ycmVjdCBkb2Mgc3RyaW5nIG9mIFJBTkRfZWRnKCkuIFBhdGNoIGJ5IFZhanJhc2t5IEtvay4KKworLi4KKworLi4gYnBvOiAxODE3OAorLi4gZGF0ZTogOTEzMAorLi4gbm9uY2U6IGk0aG5mLQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggY3R5cGVzIG9uIEJTRC4gZGxtYWxsb2MuYyB3YXMgY29tcGlsZWQgdHdpY2Ugd2hpY2ggYnJva2UgbWFsbG9jIHdlYWsKK3N5bWJvbHMuCisKKy4uCisKKy4uIGJwbzogMTg3MDkKKy4uIGRhdGU6IDkxMjkKKy4uIG5vbmNlOiBEV3pwUmUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IENWRS0yMDEzLTQyMzguIFRoZSBTU0wgbW9kdWxlIG5vdyBoYW5kbGVzIE5VTEwgYnl0ZXMgaW5zaWRlCitzdWJqZWN0QWx0TmFtZSBjb3JyZWN0bHkuIEZvcm1lcmx5IHRoZSBtb2R1bGUgaGFzIHVzZWQgT3BlblNTTCdzCitHRU5FUkFMX05BTUVfcHJpbnQoKSBmdW5jdGlvbiB0byBnZXQgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBBU04uMQorc3RyaW5ncyBmb3IgYGByZmM4MjJOYW1lYGAgKGVtYWlsKSwgYGBkTlNOYW1lYGAgKEROUykgYW5kCitgYHVuaWZvcm1SZXNvdXJjZUlkZW50aWZpZXJgYCAoVVJJKS4KKworLi4KKworLi4gYnBvOiAxODc1NgorLi4gZGF0ZTogOTEyOAorLi4gbm9uY2U6IG1vUlVmWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbXByb3ZlIGVycm9yIHJlcG9ydGluZyBpbiBvcy51cmFuZG9tKCkgd2hlbiB0aGUgZmFpbHVyZSBpcyBkdWUgdG8gc29tZXRoaW5nCitlbHNlIHRoYW4gL2Rldi91cmFuZG9tIG5vdCBleGlzdGluZyAoZm9yIGV4YW1wbGUsIGV4aGF1c3RpbmcgdGhlIGZpbGUKK2Rlc2NyaXB0b3IgbGltaXQpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDkxMjcKKy4uIG5vbmNlOiBiOUdTaFkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRraW50ZXIgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IHRoZSBzZWN1cml0eSBmaXggaW4gaXNzdWUgIzE2MjQ4LgorCisuLgorCisuLiBicG86IDE4Njc2CisuLiBkYXRlOiA5MTI2CisuLiBub25jZTogV0FxMWlCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NoYW5nZSAncG9zaXRpdmUnIHRvICdub24tbmVnYXRpdmUnIGluIHF1ZXVlLnB5IHB1dCBhbmQgZ2V0IGRvY3N0cmluZ3MgYW5kCitWYWx1ZUVycm9yIG1lc3NhZ2VzLiBQYXRjaCBieSBaaG9uZ3l1ZSBMdW8KKworLi4KKworLi4gYnBvOiAxNzk5OAorLi4gZGF0ZTogOTEyNQorLi4gbm9uY2U6IGhJYnJ1NQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYW4gaW50ZXJuYWwgZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uIGVuZ2luZS4KKworLi4KKworLi4gYnBvOiAxNzU1NworLi4gZGF0ZTogOTEyNAorLi4gbm9uY2U6IHM2QkVNSQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggb3MuZ2V0Z3JvdXBzKCkgdG8gd29yayB3aXRoIHRoZSBtb2RpZmllZCBiZWhhdmlvciBvZiBnZXRncm91cHMoMikgb24gT1MKK1ggMTAuOC4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hdGV1c3ogTGVuaWsuCisKKy4uCisKKy4uIGJwbzogMTg0NTUKKy4uIGRhdGU6IDkxMjMKKy4uIG5vbmNlOiB0MWIwUl8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworbXVsdGlwcm9jZXNzaW5nIHNob3VsZCBub3QgcmV0cnkgY29ubmVjdCgpIHdpdGggc2FtZSBzb2NrZXQuCisKKy4uCisKKy4uIGJwbzogMTg1MTMKKy4uIGRhdGU6IDkxMjIKKy4uIG5vbmNlOiAxMkpVWmkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGJlaGF2aW91ciBvZiBjbWF0aC5yZWN0IHcuci50LiBzaWduZWQgemVyb3Mgb24gT1MgWCAxMC44ICsgZ2NjLgorCisuLgorCisuLiBicG86IDE4MTAxCisuLiBkYXRlOiA5MTIxCisuLiBub25jZTogaFdmVU5NCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RjbC5zcGxpdCgpIG5vdyBwcm9jZXNzIFVuaWNvZGUgc3RyaW5ncyBuZXN0ZWQgaW4gYSB0dXBsZSBhcyBpdCBkbyB3aXRoIGJ5dGUKK3N0cmluZ3MuCisKKy4uCisKKy4uIGJwbzogMTgzNDcKKy4uIGRhdGU6IDkxMjAKKy4uIG5vbmNlOiByOThZaC0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRWxlbWVudFRyZWUncyBodG1sIHNlcmlhbGl6ZXIgbm93IHByZXNlcnZlcyB0aGUgY2FzZSBvZiBjbG9zaW5nIHRhZ3MuCisKKy4uCisKKy4uIGJwbzogMTcyNjEKKy4uIGRhdGU6IDkxMTkKKy4uIG5vbmNlOiBGQnpMVmgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRW5zdXJlIG11bHRpcHJvY2Vzc2luZydzIHByb3hpZXMgdXNlIHByb3BlciBhZGRyZXNzLgorCisuLgorCisuLiBicG86IDE3MDk3CisuLiBkYXRlOiA5MTE4CisuLiBub25jZTogbnBqZTFTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgbXVsdGlwcm9jZXNzaW5nIGlnbm9yZSBFSU5UUi4KKworLi4KKworLi4gYnBvOiAxODE1NQorLi4gZGF0ZTogOTExNworLi4gbm9uY2U6IFAtTzN3dgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgY3N2IG1vZHVsZSBub3cgY29ycmVjdGx5IGhhbmRsZXMgY3N2IGZpbGVzIHRoYXQgdXNlIGEgZGVsaW1pdGVyCitjaGFyYWN0ZXIgdGhhdCBoYXMgYSBzcGVjaWFsIG1lYW5pbmcgaW4gcmVnZXhlcywgaW5zdGVhZCBvZiB0aHJvd2luZyBhbgorZXhjZXB0aW9uLgorCisuLgorCisuLiBicG86IDE4MTM1CisuLiBkYXRlOiA5MTE2CisuLiBub25jZTogQVlQRThMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3NzbC5TU0xTb2NrZXQud3JpdGUoKSBub3cgcmFpc2VzIGFuIE92ZXJmbG93RXJyb3IgaWYgdGhlIGlucHV0IHN0cmluZyBpbgorbG9uZ2VyIHRoYW4gMiBnaWdhYnl0ZXMuIFRoZSBzc2wgbW9kdWxlIGRvZXMgbm90IHN1cHBvcnQgcGFydGlhbCB3cml0ZS4KKworLi4KKworLi4gYnBvOiAxODE2NworLi4gZGF0ZTogOTExNQorLi4gbm9uY2U6IENFNlpNTworLi4gc2VjdGlvbjogTGlicmFyeQorCitjZ2kuRmllbGRTdG9yYWdlIG5vIGxvbmdlciBmYWlscyB0byBoYW5kbGUgbXVsdGlwYXJ0L2Zvcm0tZGF0YSB3aGVuIFxyXG4KK2FwcGVhcnMgYXQgZW5kIG9mIDY1NTM1IGJ5dGVzIHdpdGhvdXQgb3RoZXIgbmV3bGluZXMuCisKKy4uCisKKy4uIGJwbzogMTc0MDMKKy4uIGRhdGU6IDkxMTQKKy4uIG5vbmNlOiBndEloVWQKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordXJsbGliLnBhcnNlLnJvYm90cGFyc2VyIG5vcm1hbGl6ZXMgdGhlIHVybHMgYmVmb3JlIGFkZGluZyB0byBydWxlbGluZS4gVGhpcworaGVscHMgaW4gaGFuZGxpbmcgY2VydGFpbiB0eXBlcyBpbnZhbGlkIHVybHMgaW4gYSBjb25zZXJ2YXRpdmUgbWFubmVyLiBQYXRjaAorY29udHJpYnV0ZWQgYnkgTWhlciBNb3ZzaXN5YW4uCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTExMworLi4gbm9uY2U6IGpNNUVQRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbXBsZW1lbnQgaW5lcXVhbGl0eSBvbiB3ZWFrcmVmLldlYWtTZXQuCisKKy4uCisKKy4uIGJwbzogMTc5ODEKKy4uIGRhdGU6IDkxMTIKKy4uIG5vbmNlOiBrSWN6djcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ2xvc2VkIHNvY2tldCBvbiBlcnJvciBpbiBTeXNMb2dIYW5kbGVyLgorCisuLgorCisuLiBicG86IDE4MDE1CisuLiBkYXRlOiA5MTExCisuLiBub25jZTogODVfWXVOCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB1bnBpY2tsaW5nIG9mIDIuNy4zIGFuZCAyLjcuNCBuYW1lZHR1cGxlcy4KKworLi4KKworLi4gYnBvOiAxNzc1NAorLi4gZGF0ZTogOTExMAorLi4gbm9uY2U6IHhhNkJjMworLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIGN0eXBlcy51dGlsLmZpbmRfbGlicmFyeSgpIGluZGVwZW5kZW50IG9mIHRoZSBsb2NhbGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTEwOQorLi4gbm9uY2U6IDlPR0NKSAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdHlwb3MgaW4gdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMTcyNjkKKy4uIGRhdGU6IDkxMDgKKy4uIG5vbmNlOiA3THh5S3oKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV29ya2Fyb3VuZCBmb3Igc29ja2V0LmdldGFkZHJpbmZvIGNyYXNoIG9uIE1hY09TIFggd2l0aCBwb3J0IE5vbmUgb3IgIjAiIGFuZAorZmxhZ3MgQUlfTlVNRVJJQ1NFUlYuCisKKy4uCisKKy4uIGJwbzogMTgwODAKKy4uIGRhdGU6IDkxMDcKKy4uIG5vbmNlOiA4Yk1kRTMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV2hlbiBidWlsZGluZyBhIEMgZXh0ZW5zaW9uIG1vZHVsZSBvbiBPUyBYLCBpZiB0aGUgY29tcGlsZXIgaXMgb3ZlcnJpZGRlbgord2l0aCB0aGUgQ0MgZW52aXJvbm1lbnQgdmFyaWFibGUsIHVzZSB0aGUgbmV3IGNvbXBpbGVyIGFzIHRoZSBkZWZhdWx0IGZvcgorbGlua2luZyBpZiBMRFNIQVJFRCBpcyBub3QgYWxzbyBvdmVycmlkZGVuLiAgVGhpcyByZXN0b3JlcyBEaXN0dXRpbHMKK2JlaGF2aW9yIGludHJvZHVjZWQgaW4gMi43LjMgYW5kIGluYWR2ZXJ0ZW50bHkgZHJvcHBlZCBpbiAyLjcuNC4KKworLi4KKworLi4gYnBvOiAxODA3MQorLi4gZGF0ZTogOTEwNgorLi4gbm9uY2U6IDJGd1UwUworLi4gc2VjdGlvbjogTGlicmFyeQorCitDIGV4dGVuc2lvbiBtb2R1bGUgYnVpbGRzIG9uIE9TIFggY291bGQgZmFpbCB3aXRoIFR5cGVFcnJvciBpZiB0aGUgWGNvZGUKK2NvbW1hbmQgbGluZSB0b29scyB3ZXJlIG5vdCBpbnN0YWxsZWQuCisKKy4uCisKKy4uIGJwbzogMTgxMTMKKy4uIGRhdGU6IDkxMDUKKy4uIG5vbmNlOiA3dzgxS0oKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYSByZWZjb3VudCBsZWFrIGluIHRoZSBjdXJzZXMucGFuZWwgbW9kdWxlJ3Mgc2V0X3VzZXJwdHIoKSBtZXRob2QuCitSZXBvcnRlZCBieSBBdHN1byBJc2hpbW90by4KKworLi4KKworLi4gYnBvOiAxODg0OQorLi4gZGF0ZTogOTEwNAorLi4gbm9uY2U6IFEwa0YwUgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIFdpbmRvd3Mtc3BlY2lmaWMgdGVtcGZpbGUgYnVnIHdoZXJlIGNvbGxpc2lvbiB3aXRoIGFuIGV4aXN0aW5nCitkaXJlY3RvcnkgY2F1c2VkIG1rc3RlbXAgYW5kIHJlbGF0ZWQgQVBJcyB0byBmYWlsIGluc3RlYWQgb2YgcmV0cnlpbmcuCitSZXBvcnQgYW5kIGZpeCBieSBWbGFkIFNoY2hlcmJpbmEuCisKKy4uCisKKy4uIGJwbzogMTk0MDAKKy4uIGRhdGU6IDkxMDMKKy4uIG5vbmNlOiBRQXFwazUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJldmVudCBleHRlbnNpb24gbW9kdWxlIGJ1aWxkIGZhaWx1cmVzIHdpdGggWGNvZGUgNSBvbiBPUyBYIDEwLjgrIHdoZW4KK3VzaW5nIGEgdW5pdmVyc2FsIFB5dGhvbiB0aGF0IGluY2x1ZGVkIGEgUFBDIGFyY2hpdGVjdHVyZSwgc3VjaCBhcyB3aXRoIGEKK3B5dGhvbi5vcmcgMzItYml0LW9ubHkgYmluYXJ5IGluc3RhbGxlci4KKworLi4KKworLi4gYnBvOiAxODg3MworLi4gZGF0ZTogOTEwMgorLi4gbm9uY2U6IGlfMVRmXworLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworMnRvMyBhbmQgdGhlIGZpbmRub2NvZGluZy5weSBzY3JpcHQgbm93IGRldGVjdCBQeXRob24gc291cmNlIGNvZGUgZW5jb2RpbmcKK29ubHkgaW4gY29tbWVudCBsaW5lcy4KKworLi4KKworLi4gYnBvOiAxODgxNworLi4gZGF0ZTogOTEwMQorLi4gbm9uY2U6IHltYTNHaAorLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworRml4IGEgcmVzb3VyY2Ugd2FybmluZyBpbiBMaWIvYWlmYy5weSBkZW1vLgorCisuLgorCisuLiBicG86IDE4NDM5CisuLiBkYXRlOiA5MTAwCisuLiBub25jZTogVzlEeGVMCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitNYWtlIHBhdGNoY2hlY2sgd29yayBvbiBXaW5kb3dzIGZvciBBQ0tTLCBORVdTLgorCisuLgorCisuLiBicG86IDE4NDQ4CisuLiBkYXRlOiA5MDk5CisuLiBub25jZTogZ01BNXBnCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitGaXggYSB0eXBvIGluIERlbW8vbmV3bWV0YWNsYXNzZXMvRWlmZmVsLnB5LgorCisuLgorCisuLiBicG86IDEyOTkwCisuLiBkYXRlOiA5MDk4CisuLiBub25jZTogRTFnZUwtCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitUaGUgIlB5dGhvbiBMYXVuY2hlciIgb24gT1NYIGNvdWxkIG5vdCBsYXVuY2ggcHl0aG9uIHNjcmlwdHMgdGhhdCBoYXZlIHBhdGhzCit0aGF0IGluY2x1ZGUgd2lkZSBjaGFyYWN0ZXJzLgorCisuLgorCisuLiBicG86IDE2MDY3CisuLiBkYXRlOiA5MDk3CisuLiBub25jZTogeGVZT2ZqCisuLiBzZWN0aW9uOiBCdWlsZAorCitBZGQgZGVzY3JpcHRpb24gaW50byBNU0kgZmlsZSB0byByZXBsYWNlIGluc3RhbGxlcidzIHRlbXBvcmFyeSBuYW1lLgorCisuLgorCisuLiBicG86IDE4MjU2CisuLiBkYXRlOiA5MDk2CisuLiBub25jZTogUGlFa1lUCisuLiBzZWN0aW9uOiBCdWlsZAorCitDb21waWxhdGlvbiBmaXggZm9yIHJlY2VudCBBSVggcmVsZWFzZXMuICBQYXRjaCBieSBEYXZpZCBFZGVsc29obi4KKworLi4KKworLi4gYnBvOiAxODA5OAorLi4gZGF0ZTogOTA5NQorLi4gbm9uY2U6IEtabWZvRQorLi4gc2VjdGlvbjogQnVpbGQKKworVGhlIGRlcHJlY2F0ZWQgT1MgWCBCdWlsZCBBcHBsZXQuYXBwIGZhaWxzIHRvIGJ1aWxkIG9uIE9TIFggMTAuOCBzeXN0ZW1zCitiZWNhdXNlIHRoZSBBcHBsZS1kZXByZWNhdGVkIFF1aWNrRHJhdyBoZWFkZXJzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gWGNvZGUKKzQuICBTa2lwIGJ1aWxkaW5nIGl0IGluIHRoaXMgY2FzZS4KKworLi4KKworLi4gYnBvOiAxNTg0CisuLiBkYXRlOiA5MDk0CisuLiBub25jZTogcWpEeHBSCisuLiBzZWN0aW9uOiBCdWlsZAorCitQcm92aWRlIG9wdGlvbnMgdG8gb3ZlcnJpZGUgZGVmYXVsdCBzZWFyY2ggcGF0aHMgZm9yIFRjbCBhbmQgVGsgd2hlbgorYnVpbGRpbmcgX3RraW50ZXIuCisKKy4uCisKKy4uIGJwbzogMTU2NjMKKy4uIGRhdGU6IDkwOTMKKy4uIG5vbmNlOiA5RGFfUmoKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1RjbC9UayA4LjUuMTUgaXMgbm93IGluY2x1ZGVkIHdpdGggdGhlIE9TIFggMTAuNisgNjQtYml0LzMyLWJpdCBpbnN0YWxsZXIKK2ZvciAxMC42Ky4gIEl0IGlzIG5vIGxvbmdlciBuZWNlc3NhcnkgdG8gaW5zdGFsbCBhIHRoaXJkLXBhcnR5IHZlcnNpb24gb2YKK1RjbC9UayA4LjUgdG8gd29yayBhcm91bmQgdGhlIHByb2JsZW1zIGluIHRoZSBBcHBsZS1zdXBwbGllZCBUY2wvVGsgOC41CitzaGlwcGVkIGluIE9TIFggMTAuNiBhbmQgbGF0ZXIgcmVsZWFzZXMuCisKKy4uCisKKy4uIGJwbzogMTkwMTkKKy4uIGRhdGU6IDkwOTIKKy4uIG5vbmNlOiA1Vzdsd18KKy4uIHNlY3Rpb246IEJ1aWxkCisKK0NoYW5nZSB0aGUgT1MgWCBpbnN0YWxsZXIgYnVpbGQgc2NyaXB0IHRvIHVzZSBDRkxBR1MgaW5zdGVhZCBvZiBPUFQgZm9yCitzcGVjaWFsIGJ1aWxkIG9wdGlvbnMuICBCeSBzZXR0aW5nIE9QVCwgc29tZSBjb21waWxlci1zcGVjaWZpYyBvcHRpb25zIGxpa2UKKy1md3JhcHYgd2VyZSBvdmVycmlkZGVuIGFuZCB0aHVzIG5vdCB1c2VkLCB3aGljaCBjb3VsZCByZXN1bHQgaW4gYnJva2VuCitpbnRlcnByZXRlcnMgd2hlbiBidWlsZGluZyB3aXRoIGNsYW5nLgorCisuLgorCisuLiBicG86IDE4ODczCisuLiBkYXRlOiA5MDkxCisuLiBub25jZTogZHlMUFk5CisuLiBzZWN0aW9uOiBJRExFCisKK0lETEUgbm93IGRldGVjdHMgUHl0aG9uIHNvdXJjZSBjb2RlIGVuY29kaW5nIG9ubHkgaW4gY29tbWVudCBsaW5lcy4KKworLi4KKworLi4gYnBvOiAxODk4OAorLi4gZGF0ZTogOTA5MAorLi4gbm9uY2U6IDZDcGVzVworLi4gc2VjdGlvbjogSURMRQorCitUaGUgIlRhYiIga2V5IG5vdyB3b3JrcyB3aGVuIGEgd29yZCBpcyBhbHJlYWR5IGF1dG9jb21wbGV0ZWQuCisKKy4uCisKKy4uIGJwbzogMTg0ODkKKy4uIGRhdGU6IDkwODkKKy4uIG5vbmNlOiBuT3Z4T0gKKy4uIHNlY3Rpb246IElETEUKKworQWRkIHRlc3RzIGZvciBTZWFyY2hFbmdpbmUuIE9yaWdpbmFsIHBhdGNoIGJ5IFBoaWwgV2Vic3Rlci4KKworLi4KKworLi4gYnBvOiAxODQyOQorLi4gZGF0ZTogOTA4OAorLi4gbm9uY2U6IEYxbFRxMQorLi4gc2VjdGlvbjogSURMRQorCitGb3JtYXQgLyBGb3JtYXQgUGFyYWdyYXBoLCBub3cgd29ya3Mgd2hlbiBjb21tZW50IGJsb2NrcyBhcmUgc2VsZWN0ZWQuIEFzCit3aXRoIHRleHQgYmxvY2tzLCB0aGlzIHdvcmtzIGJlc3Qgd2hlbiB0aGUgc2VsZWN0aW9uIG9ubHkgaW5jbHVkZXMgY29tcGxldGUKK2xpbmVzLgorCisuLgorCisuLiBicG86IDE4MjI2CisuLiBkYXRlOiA5MDg3CisuLiBub25jZTogNUh0clcxCisuLiBzZWN0aW9uOiBJRExFCisKK0FkZCBkb2NzdHJpbmdzIGFuZCB1bml0dGVzdHMgZm9yIEZvcm1hdFBhcmFncmFwaC5weS4gT3JpZ2luYWwgcGF0Y2hlcyBieQorVG9kZCBSb3ZpdG8gYW5kIFBoaWwgV2Vic3Rlci4KKworLi4KKworLi4gYnBvOiAxODI3OQorLi4gZGF0ZTogOTA4NgorLi4gbm9uY2U6IFVvRi1vUgorLi4gc2VjdGlvbjogSURMRQorCitGb3JtYXQgLSBTdHJpcCB0cmFpbGluZyB3aGl0ZXNwYWNlIG5vIGxvbmdlciBtYXJrcyBhIGZpbGUgYXMgY2hhbmdlZCB3aGVuIGl0CitoYXMgbm90IGJlZW4gY2hhbmdlZC4gVGhpcyBmaXggZm9sbG93ZWQgdGhlIGFkZGl0aW9uIG9mIGEgdGVzdCBmaWxlCitvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgUGhpbCBXZWJzdGVyICh0aGUgaXNzdWUncyBtYWluIGdvYWwpLgorCisuLgorCisuLiBicG86IDE4NTM5CisuLiBkYXRlOiA5MDg1CisuLiBub25jZTogX2RkV092CisuLiBzZWN0aW9uOiBJRExFCisKK0NhbGx0aXBzIG5vdyB3b3JrIGZvciBmbG9hdCBkZWZhdWx0IGFyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiA3MTM2CisuLiBkYXRlOiA5MDg0CisuLiBub25jZTogN2hvclFmCisuLiBzZWN0aW9uOiBJRExFCisKK0luIHRoZSBJZGxlIEZpbGUgbWVudSwgIk5ldyBXaW5kb3ciIGlzIHJlbmFtZWQgIk5ldyBGaWxlIi4gUGF0Y2ggYnkgVGFsCitFaW5hdCwgUm9nZXQgU2Vyd3ksIGFuZCBUb2RkIFJvdml0by4KKworLi4KKworLi4gYnBvOiA4NTE1CisuLiBkYXRlOiA5MDgzCisuLiBub25jZTogd1kxM3QwCisuLiBzZWN0aW9uOiBJRExFCisKK1NldCBfX2ZpbGVfXyB3aGVuIHJ1biBmaWxlIGluIElETEUuIEluaXRpYWwgcGF0Y2ggYnkgQnJ1Y2UgRnJlZGVyaWtzZW4uCisKKy4uCisKKy4uIGJwbzogNTQ5MgorLi4gZGF0ZTogOTA4MgorLi4gbm9uY2U6IExDeDdscQorLi4gc2VjdGlvbjogSURMRQorCitBdm9pZCB0cmFjZWJhY2sgd2hlbiBleGl0aW5nIElETEUgY2F1c2VkIGJ5IGEgcmFjZSBjb25kaXRpb24uCisKKy4uCisKKy4uIGJwbzogMTc1MTEKKy4uIGRhdGU6IDkwODEKKy4uIG5vbmNlOiA2WHFkVEgKKy4uIHNlY3Rpb246IElETEUKKworS2VlcCBJRExFIGZpbmQgZGlhbG9nIG9wZW4gYWZ0ZXIgY2xpY2tpbmcgIkZpbmQgTmV4dCIuIE9yaWdpbmFsIHBhdGNoIGJ5CitTYXJhaCBLLgorCisuLgorCisuLiBicG86IDE1MzkyCisuLiBkYXRlOiA5MDgwCisuLiBub25jZTogckI1Vm9WCisuLiBzZWN0aW9uOiBJRExFCisKK0NyZWF0ZSBhIHVuaXR0ZXN0IGZyYW1ld29yayBmb3IgSURMRS4gUHJlbGltaW5hcnkgcGF0Y2ggYnkgUmFqYWdvcGFsYXNhcm1hCitKYXlha3Jpc2huYW4gU2VlIExpYi9pZGxlbGliL2lkbGVfdGVzdC9SRUFETUUudHh0IGZvciBob3cgdG8gcnVuIElkbGUgdGVzdHMuCisKKy4uCisKKy4uIGJwbzogMTQxNDYKKy4uIGRhdGU6IDkwNzkKKy4uIG5vbmNlOiAtbjVnemQKKy4uIHNlY3Rpb246IElETEUKKworSGlnaGxpZ2h0IHNvdXJjZSBsaW5lIHdoaWxlIGRlYnVnZ2luZyBvbiBXaW5kb3dzLgorCisuLgorCisuLiBicG86IDE3NTMyCisuLiBkYXRlOiA5MDc4CisuLiBub25jZTogd2dBNzBaCisuLiBzZWN0aW9uOiBJRExFCisKK0Fsd2F5cyBpbmNsdWRlIE9wdGlvbnMgbWVudSBmb3IgSURMRSBvbiBPUyBYLiBQYXRjaCBieSBHdWlsaGVybWUgU2ltw7Vlcy4KKworLi4KKworLi4gYnBvOiAxODkxOQorLi4gZGF0ZTogOTA3NworLi4gbm9uY2U6IEJPcTFCWQorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkZWQgdGVzdHMgZm9yIHRoZSBzdW5hdSBtb2R1bGUuICBVbmlmaWVkIGFuZCBleHRlbmRlZCB0ZXN0cyBmb3IgYXVkaW8KK21vZHVsZXM6IGFpZmMsIHN1bmF1IGFuZCB3YXZlLgorCisuLgorCisuLiBicG86IDE4NzkyCisuLiBkYXRlOiA5MDc2CisuLiBub25jZTogNVJrWWRLCisuLiBzZWN0aW9uOiBUZXN0cworCitVc2UgIjEyNy4wLjAuMSIgb3IgIjo6MSIgaW5zdGVhZCBvZiAibG9jYWxob3N0IiBhcyBtdWNoIGFzIHBvc3NpYmxlLCBzaW5jZQorImxvY2FsaG9zdCIgZ29lcyB0aHJvdWdoIGEgRE5TIGxvb2t1cCB1bmRlciByZWNlbnQgV2luZG93cyB2ZXJzaW9ucy4KKworLi4KKworLi4gYnBvOiAxODM1NworLi4gZGF0ZTogOTA3NQorLi4gbm9uY2U6IGpSaXlRQQorLi4gc2VjdGlvbjogVGVzdHMKKworYWRkIHRlc3RzIGZvciBkaWN0dmlldyBzZXQgZGlmZmVyZW5jZS4gUGF0Y2ggYnkgRnJhc2VyIFR3ZWVkYWxlLgorCisuLgorCisuLiBicG86IDExMTg1CisuLiBkYXRlOiA5MDc0CisuLiBub25jZTogTWNJSGVUCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggdGVzdF93YWl0NCB1bmRlciBBSVguICBQYXRjaCBieSBTw6liYXN0aWVuIFNhYmzDqS4KKworLi4KKworLi4gYnBvOiAxODA5NAorLi4gZGF0ZTogOTA3MworLi4gbm9uY2U6IFZlTWgxSAorLi4gc2VjdGlvbjogVGVzdHMKKwordGVzdF91dWlkIG5vIG1vcmUgcmVwb3J0cyBza2lwcGVkIHRlc3RzIGFzIHBhc3NlZC4KKworLi4KKworLi4gYnBvOiAxMTk5NQorLi4gZGF0ZTogOTA3MgorLi4gbm9uY2U6IHZhcmZOMQorLi4gc2VjdGlvbjogVGVzdHMKKwordGVzdF9weWRvYyBkb2Vzbid0IGltcG9ydCBhbGwgc3lzLnBhdGggbW9kdWxlcyBhbnltb3JlLgorCisuLgorCisuLiBicG86IDE4NzU4CisuLiBkYXRlOiA5MDcxCisuLiBub25jZTogaE1DaTdaCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0ZpeGVkIGFuZCBpbXByb3ZlZCBjcm9zcy1yZWZlcmVuY2VzLgorCisuLgorCisuLiBicG86IDE4NzE4CisuLiBkYXRlOiA5MDcwCisuLiBub25jZTogQ3RwSzVICisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK2RhdGV0aW1lIGRvY3VtZW50YXRpb24gY29udHJhZGljdG9yeSBvbiBsZWFwIHNlY29uZCBzdXBwb3J0LgorCisuLgorCisuLiBicG86IDE3NzAxCisuLiBkYXRlOiA5MDY5CisuLiBub25jZTogRnRUWjY2CisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0ltcHJvdmluZyBzdHJmdGltZSBkb2N1bWVudGF0aW9uLgorCisuLgorCisuLiBicG86IDE3ODQ0CisuLiBkYXRlOiA5MDY4CisuLiBub25jZTogUjRHc3NhCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK1JlZmFjdG9yIGEgZG9jdW1lbnRhdGlvbiBvZiBQeXRob24gc3BlY2lmaWMgZW5jb2RpbmdzLiBBZGQgbGlua3MgdG8gZW5jb2RlcnMKK2FuZCBkZWNvZGVycyBmb3IgYmluYXJ5LXRvLWJpbmFyeSBjb2RlY3MuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjcuNy5yc3QgYi9NaXNjL05FV1MuZC8yLjcuNy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhZDlhZAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNy43LnJzdApAQCAtMCwwICsxLDE2IEBACisuLiBicG86IDIxNDYyCisuLiBkYXRlOiA5MzI4CisuLiBub25jZTogRWU0b0tICisuLiByZWxlYXNlIGRhdGU6IDIwMTQtMDUtMzEKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0J1aWxkIHRoZSBXaW5kb3dzIGluc3RhbGxlcnMgd2l0aCBPcGVuU1NMIDEuMC4xZy4KKworLi4KKworLi4gYnBvOiAxOTg2NgorLi4gZGF0ZTogOTMyNworLi4gbm9uY2U6IDE1RDA4aQorLi4gc2VjdGlvbjogQnVpbGQKKworSW5jbHVkZSBzb21lIHRlc3QgZGF0YSBpbiB0aGUgV2luZG93cyBpbnN0YWxsZXJzLCBzbyB0ZXN0cyBkb24ndCBmYWlsLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvMi43LjdyYzEucnN0IGIvTWlzYy9ORVdTLmQvMi43LjdyYzEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZWY1NjkKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC8yLjcuN3JjMS5yc3QKQEAgLTAsMCArMSwxMzc2IEBACisuLiBicG86IDIxMzUwCisuLiBkYXRlOiA5MzI2CisuLiBub25jZTogam5xNmdPCisuLiByZWxlYXNlIGRhdGU6IDIwMTQtMDUtMTcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBmaWxlLndyaXRlbGluZXMoKSB0byBhY2NlcHQgYXJiaXRyYXJ5IGJ1ZmZlciBvYmplY3RzLCBhcyBhZHZlcnRpc2VkLgorUGF0Y2ggYnkgQnJpYW4gS2Vhcm5zLgorCisuLgorCisuLiBicG86IDIwNDM3CisuLiBkYXRlOiA5MzI1CisuLiBub25jZTogOVJzaXVhCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCA0MyBwb3RlbnRpYWwgYnVncyB3aGVuIGRlbGV0aW5nIG9iamVjdCByZWZlcmVuY2VzLgorCisuLgorCisuLiBicG86IDIxMTM0CisuLiBkYXRlOiA5MzI0CisuLiBub25jZTogWkw0U0tvCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggc2VnZmF1bHQgd2hlbiBzdHIgaXMgY2FsbGVkIG9uIGFuIHVuaW5pdGlhbGl6ZWQgVW5pY29kZUVuY29kZUVycm9yLAorVW5pY29kZURlY29kZUVycm9yLCBvciBVbmljb2RlVHJhbnNsYXRlRXJyb3Igb2JqZWN0LgorCisuLgorCisuLiBicG86IDIwNDk0CisuLiBkYXRlOiA5MzIzCisuLiBub25jZTogdUdJRlBYCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitFbnN1cmUgdGhhdCBmcmVlKClkIG1lbW9yeSBhcmVuYXMgYXJlIHJlYWxseSByZWxlYXNlZCBvbiBQT1NJWCBzeXN0ZW1zCitzdXBwb3J0aW5nIGFub255bW91cyBtZW1vcnkgbWFwcGluZ3MuICBQYXRjaCBieSBDaGFybGVzLUZyYW7Dp29pcyBOYXRhbGkuCisKKy4uCisKKy4uIGJwbzogMTc4MjUKKy4uIGRhdGU6IDkzMjIKKy4uIG5vbmNlOiB0b1JvWmYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0N1cnNvciAiXiIgaXMgY29ycmVjdGx5IHBvc2l0aW9uZWQgZm9yIFN5bnRheEVycm9yIGFuZCBJbmRlbnRhdGlvbkVycm9yLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDkzMjEKKy4uIG5vbmNlOiBuZnczUzgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JhaXNlIGEgYmV0dGVyIGVycm9yIHdoZW4gbm9uLXVuaWNvZGUgY29kZWNzIGFyZSB1c2VkIGZvciBhIGZpbGUncyBjb2RpbmcKK2Nvb2tpZS4KKworLi4KKworLi4gYnBvOiAxNzk3NgorLi4gZGF0ZTogOTMyMAorLi4gbm9uY2U6IHc0MDJCZgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgcG90ZW50aWFsIHByb2JsZW0gd2l0aCBmaWxlLndyaXRlKCkgbm90IGRldGVjdGluZyBJTyBlcnJvciBieQoraW5zcGVjdGluZyB0aGUgcmV0dXJuIHZhbHVlIG9mIGZ3cml0ZSgpLiAgQmFzZWQgb24gcGF0Y2hlcyBieSBKYWFra28gTW9pc2lvCithbmQgVmljdG9yIFN0aW5uZXIuCisKKy4uCisKKy4uIGJwbzogMTQ0MzIKKy4uIGRhdGU6IDkzMTkKKy4uIG5vbmNlOiBrWjFtWXIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0dlbmVyYXRvciBub3cgY2xlYXJzIHRoZSBib3Jyb3dlZCByZWZlcmVuY2UgdG8gdGhlIHRocmVhZCBzdGF0ZS4gRml4IGEgY3Jhc2gKK3doZW4gYSBnZW5lcmF0b3IgaXMgY3JlYXRlZCBpbiBhIEMgdGhyZWFkIHRoYXQgaXMgZGVzdHJveWVkIHdoaWxlIHRoZQorZ2VuZXJhdG9yIGlzIHN0aWxsIHVzZWQuIFRoZSBpc3N1ZSB3YXMgdGhhdCBhIGdlbmVyYXRvciBjb250YWlucyBhIGZyYW1lLAorYW5kIHRoZSBmcmFtZSBrZXB0IGEgcmVmZXJlbmNlIHRvIHRoZSBQeXRob24gc3RhdGUgb2YgdGhlIGRlc3Ryb3llZCBDCit0aHJlYWQuIFRoZSBjcmFzaCBvY2N1cnMgd2hlbiBhIHRyYWNlIGZ1bmN0aW9uIGlzIHNldHVwLgorCisuLgorCisuLiBicG86IDE5OTMyCisuLiBkYXRlOiA5MzE4CisuLiBub25jZTogWlVfdFhXCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggdHlwbyBpbiBpbXBvcnQuaCwgbWlzc2luZyB3aGl0ZXNwYWNlcyBpbiBmdW5jdGlvbiBwcm90b3R5cGVzLgorCisuLgorCisuLiBicG86IDE5NjM4CisuLiBkYXRlOiA5MzE3CisuLiBub25jZTogbGg1QXd0CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggcG9zc2libGUgY3Jhc2ggLyB1bmRlZmluZWQgYmVoYXZpb3VyIGZyb20gaHVnZSAobW9yZSB0aGFuIDIgYmlsbGlvbgorY2hhcmFjdGVycykgaW5wdXQgc3RyaW5ncyBpbiBfUHlfZGdfc3RydG9kLgorCisuLgorCisuLiBicG86IDEyNTQ2CisuLiBkYXRlOiA5MzE2CisuLiBub25jZToga0RxRl9zCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBbGxvdyBceDAwIHRvIGJlIHVzZWQgYXMgYSBmaWxsIGNoYXJhY3RlciB3aGVuIHVzaW5nIHN0ciwgaW50LCBmbG9hdCwgYW5kCitjb21wbGV4IF9fZm9ybWF0X18gbWV0aG9kcy4KKworLi4KKworLi4gYnBvOiAxMDc0NAorLi4gZGF0ZTogOTMxNQorLi4gbm9uY2U6IGtmVjB3bQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggUEVQIDMxMTggZm9ybWF0IHN0cmluZ3Mgb24gY3R5cGVzIG9iamVjdHMgd2l0aCBhIG5vbnRyaXZpYWwgc2hhcGUuCisKKy4uCisKKy4uIGJwbzogNzc3NgorLi4gZGF0ZTogOTMxNAorLi4gbm9uY2U6IERGVWdydgorLi4gc2VjdGlvbjogTGlicmFyeQorCitCYWNrcG9ydCBGaXggYGBIb3N0OicnIGhlYWRlciBhbmQgcmVjb25uZWN0aW9uIHdoZW4gdXNpbmcKK2h0dHAuY2xpZW50LkhUVFBDb25uZWN0aW9uLnNldF90dW5uZWwoKSBmcm9tIFB5dGhvbiAzLiAgUGF0Y2ggYnkgTmlrb2xhdXMKK1JhdGguCisKKy4uCisKKy4uIGJwbzogMjEzMDYKKy4uIGRhdGU6IDkzMTMKKy4uIG5vbmNlOiA4QUJ2R1gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQmFja3BvcnQgaG1hYy5jb21wYXJlX2RpZ2VzdCBmcm9tIFB5dGhvbiAzLiBUaGlzIGlzIHBhcnQgb2YgUEVQIDQ2Ni4KKworLi4KKworLi4gYnBvOiAyMTQ3MAorLi4gZGF0ZTogOTMxMgorLi4gbm9uY2U6IHVILXlDRAorLi4gc2VjdGlvbjogTGlicmFyeQorCitEbyBhIGJldHRlciBqb2Igc2VlZGluZyB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgYnkgdXNpbmcgZW5vdWdoIGJ5dGVzIHRvCitzcGFuIHRoZSBmdWxsIHN0YXRlIHNwYWNlIG9mIHRoZSBNZXJzZW5uZSBUd2lzdGVyLgorCisuLgorCisuLiBicG86IDIxNDY5CisuLiBkYXRlOiA5MzExCisuLiBub25jZTogX2ZGR3VxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlZHVjZWQgdGhlIHJpc2sgb2YgZmFsc2UgcG9zaXRpdmVzIGluIHJvYm90cGFyc2VyIGJ5IGNoZWNraW5nIHRvIG1ha2Ugc3VyZQordGhhdCByb2JvdHMudHh0IGhhcyBiZWVuIHJlYWQgb3IgZG9lcyBub3QgZXhpc3QgcHJpb3IgdG8gcmV0dXJuaW5nIFRydWUgaW4KK2Nhbl9mZXRjaCgpLgorCisuLgorCisuLiBicG86IDIxMzIxCisuLiBkYXRlOiA5MzEwCisuLiBub25jZTogd1VrVE9OCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2l0ZXJ0b29scy5pc2xpY2UoKSBub3cgcmVsZWFzZXMgdGhlIHJlZmVyZW5jZSB0byB0aGUgc291cmNlIGl0ZXJhdG9yIHdoZW4KK3RoZSBzbGljZSBpcyBleGhhdXN0ZWQuICBQYXRjaCBieSBBbnRvbiBBZmFuYXN5ZXYuCisKKy4uCisKKy4uIGJwbzogOTI5MQorLi4gZGF0ZTogOTMwOQorLi4gbm9uY2U6IFFsSHVQbworLi4gc2VjdGlvbjogTGlicmFyeQorCitEbyBub3QgYXR0ZW1wdCB0byByZS1lbmNvZGUgbWltZXR5cGUgZGF0YSByZWFkIGZyb20gcmVnaXN0cnkgaW4gQU5TSSBtb2RlLgorSW5pdGlhbCBwYXRjaGVzIGJ5IERtaXRyeSBKZW1lcm92ICYgVmxhZGltaXIgSW9maWsuCisKKy4uCisKKy4uIGJwbzogMjEzNDkKKy4uIGRhdGU6IDkzMDgKKy4uIG5vbmNlOiBHNmRuR08KKy4uIHNlY3Rpb246IExpYnJhcnkKKworUGFzc2luZyBhIG1lbW9yeXZpZXcgdG8gX3dpbnJlZy5TZXRWYWx1ZUV4IG5vdyBjb3JyZWN0bHkgcmFpc2VzIGEgVHlwZUVycm9yCit3aGVyZSBpdCBwcmV2aW91c2x5IGNyYXNoZWQgdGhlIGludGVycHJldGVyLiBQYXRjaCBieSBCcmlhbiBLZWFybnMKKworLi4KKworLi4gYnBvOiAyMTUyOQorLi4gZGF0ZTogOTMwNworLi4gbm9uY2U6IDU3Ul9GYworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYXJiaXRyYXJ5IG1lbW9yeSBhY2Nlc3MgaW4gSlNPTkRlY29kZXIucmF3X2RlY29kZSB3aXRoIGEgbmVnYXRpdmUgc2Vjb25kCitwYXJhbWV0ZXIuIEJ1ZyByZXBvcnRlZCBieSBHdWlkbyBWcmFua2VuLiAoU2VlIGFsc286IENWRS0yMDE0LTQ2MTYpCisKKy4uCisKKy4uIGJwbzogMjExNzIKKy4uIGRhdGU6IDkzMDYKKy4uIG5vbmNlOiBkUTd5WTcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaXNpbnN0YW5jZSBjaGVjayByZWxheGVkIGZyb20gZGljdCB0byBjb2xsZWN0aW9ucy5NYXBwaW5nLgorCisuLgorCisuLiBicG86IDIxMTkxCisuLiBkYXRlOiA5MzA1CisuLiBub25jZTogVDhnTEJICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIG9zLmZkb3BlbiwgbmV2ZXIgY2xvc2UgdGhlIGZpbGUgZGVzY3JpcHRvciB3aGVuIGFuIGV4Y2VwdGlvbiBoYXBwZW5zLgorCisuLgorCisuLiBicG86IDIxMTQ5CisuLiBkYXRlOiA5MzA0CisuLiBub25jZTogY25qd01SCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ltcHJvdmVkIHRocmVhZC1zYWZldHkgaW4gbG9nZ2luZyBjbGVhbnVwIGR1cmluZyBpbnRlcnByZXRlciBzaHV0ZG93bi4KK1RoYW5rcyB0byBEZXZpbiBKZWFucGllcnJlIGZvciB0aGUgcGF0Y2guCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTMwMworLi4gbm9uY2U6IFdLY1ZuWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcG9zc2libGUgb3ZlcmZsb3cgYnVnIGluIHN0cm9wLmV4cGFuZHRhYnMuIFlvdSBzaG91bGRuJ3QgYmUgdXNpbmcgdGhpcworbW9kdWxlIQorCisuLgorCisuLiBicG86IDIwMTQ1CisuLiBkYXRlOiA5MzAyCisuLiBub25jZTogSmVab0puCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Bhc3NlcnRSYWlzZXNSZWdleGAgbm93IHJhaXNlcyBhIFR5cGVFcnJvciBpZiB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5vdCBhCitzdHJpbmcgb3IgY29tcGlsZWQgcmVnZXguCisKKy4uCisKKy4uIGJwbzogMjEwNTgKKy4uIGRhdGU6IDkzMDEKKy4uIG5vbmNlOiBTcXpuUDEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgbGVhayBvZiBmaWxlIGRlc2NyaXB0b3IgaW4gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKCksIGNsb3NlIHRoZQorZmlsZSBkZXNjcmlwdG9yIGlmIG9zLmZkb3BlbigpIGZhaWxzCisKKy4uCisKKy4uIGJwbzogMjAyODMKKy4uIGRhdGU6IDkzMDAKKy4uIG5vbmNlOiB2MFZzOVYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUkUgcGF0dGVybiBtZXRob2RzIG5vdyBhY2NlcHQgdGhlIHN0cmluZyBrZXl3b3JkIHBhcmFtZXRlcnMgYXMgZG9jdW1lbnRlZC4KK1RoZSBwYXR0ZXJuIGFuZCBzb3VyY2Uga2V5d29yZCBwYXJhbWV0ZXJzIGFyZSBsZWZ0IGFzIGRlcHJlY2F0ZWQgYWxpYXNlcy4KKworLi4KKworLi4gYnBvOiAxMTU5OQorLi4gZGF0ZTogOTI5OQorLi4gbm9uY2U6IDlRT1hmNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitXaGVuIGFuIGV4dGVybmFsIGNvbW1hbmQgKGUuZy4gY29tcGlsZXIpIGZhaWxzLCBkaXN0dXRpbHMgbm93IHByaW50cyBvdXQgdGhlCit3aG9sZSBjb21tYW5kIGxpbmUgKGluc3RlYWQgb2YganVzdCB0aGUgY29tbWFuZCBuYW1lKSBpZiB0aGUgZW52aXJvbm1lbnQKK3ZhcmlhYmxlIERJU1RVVElMU19ERUJVRyBpcyBzZXQuCisKKy4uCisKKy4uIGJwbzogNDkzMQorLi4gZGF0ZTogOTI5OAorLi4gbm9uY2U6IHVGMTBocgorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMgc2hvdWxkIG5vdCBwcm9kdWNlIHVuaGVscGZ1bCAiZXJyb3I6IE5vbmUiIG1lc3NhZ2VzIGFueW1vcmUuCitkaXN0dXRpbHMudXRpbC5ncm9rX2Vudmlyb25tZW50X2Vycm9yIGlzIGtlcHQgYnV0IGRvYy1kZXByZWNhdGVkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDkyOTcKKy4uIG5vbmNlOiBtZGNXR0EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW1wcm92ZSB0aGUgcmFuZG9tIG1vZHVsZSdzIGRlZmF1bHQgc2VlZGluZyB0byB1c2UgMjU2IGJpdHMgb2YgZW50cm9weSBmcm9tCitvcy51cmFuZG9tKCkuICBUaGlzIHdhcyBhbHJlYWR5IGRvbmUgZm9yIFB5dGhvbiAzLCBtaWxkbHkgaW1wcm92aW5nIHNlY3VyaXR5Cit3aXRoIGEgYmlnZ2VyIHNlZWQgc3BhY2UuCisKKy4uCisKKy4uIGJwbzogMTU2MTgKKy4uIGRhdGU6IDkyOTYKKy4uIG5vbmNlOiByNV9BQ1IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSB0dXJ0bGUucHkgY29tcGF0aWJsZSB3aXRoICdmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMnLgorSW5pdGlhbCBwYXRjaCBieSBKdWFuY2FybG8gQcOxZXouCisKKy4uCisKKy4uIGJwbzogMjA1MDEKKy4uIGRhdGU6IDkyOTUKKy4uIG5vbmNlOiBKd2ZncGgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZmlsZWlucHV0IG1vZHVsZSBubyBsb25nZXIgcmVhZHMgd2hvbGUgZmlsZSBpbnRvIG1lbW9yeSB3aGVuIHVzaW5nCitmaWxlaW5wdXQuaG9va19lbmNvZGVkLgorCisuLgorCisuLiBicG86IDY4MTUKKy4uIGRhdGU6IDkyOTQKKy4uIG5vbmNlOiBwb1Utdm0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworb3MucGF0aC5leHBhbmR2YXJzKCkgbm93IHN1cHBvcnRzIG5vbi1BU0NJSSBVbmljb2RlIGVudmlyb25tZW50IHZhcmlhYmxlcworbmFtZXMgYW5kIHZhbHVlcy4KKworLi4KKworLi4gYnBvOiAyMDYzNQorLi4gZGF0ZTogOTI5MworLi4gbm9uY2U6IFpLd09wbgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBncmlkX2NvbHVtbmNvbmZpZ3VyZSgpIGFuZCBncmlkX3Jvd2NvbmZpZ3VyZSgpIG1ldGhvZHMgb2YgVGtpbnRlcgord2lkZ2V0cyB0byB3b3JrIGluIHdhbnRvYmplY3RzPVRydWUgbW9kZS4KKworLi4KKworLi4gYnBvOiAxNzY3MQorLi4gZGF0ZTogOTI5MgorLi4gbm9uY2U6IDh0SFJLSgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIGNyYXNoIHdoZW4gdXNlIG5vbi1pbml0aWFsaXplZCBpby5CdWZmZXJlZFJXUGFpci4gQmFzZWQgb24gcGF0Y2ggYnkKK1N0ZXBoZW4gVHUuCisKKy4uCisKKy4uIGJwbzogODQ3OAorLi4gZGF0ZTogOTI5MQorLi4gbm9uY2U6IE9TN3ExaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitVbnRva2VuaXplci5jb21wYXQgcHJvY2Vzc2VzIGZpcnN0IHRva2VuIGZyb20gaXRlcmF0b3IgaW5wdXQuIFBhdGNoIGJhc2VkIG9uCitsaW5lcyBmcm9tIEdlb3JnIEJyYW5kbCwgRXJpYyBTbm93LCBhbmQgR2FyZXRoIFJlZXMuCisKKy4uCisKKy4uIGJwbzogMjA1OTQKKy4uIGRhdGU6IDkyOTAKKy4uIG5vbmNlOiBCVkh4UGQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQXZvaWQgbmFtZSBjbGFzaCB3aXRoIHRoZSBsaWJjIGZ1bmN0aW9uIHBvc2l4X2Nsb3NlLgorCisuLgorCisuLiBicG86IDE5ODU2CisuLiBkYXRlOiA5Mjg5CisuLiBub25jZTogakZoWVdfCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3NodXRpbC5tb3ZlKCkgZmFpbGVkIHRvIG1vdmUgYSBkaXJlY3RvcnkgdG8gb3RoZXIgZGlyZWN0b3J5IG9uIFdpbmRvd3MgaWYKK3NvdXJjZSBuYW1lIGVuZHMgd2l0aCBvcy5hbHRzZXAuCisKKy4uCisKKy4uIGJwbzogMTQ5ODMKKy4uIGRhdGU6IDkyODgKKy4uIG5vbmNlOiBIX2dzOHcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZW1haWwuZ2VuZXJhdG9yIG5vdyBhbHdheXMgYWRkcyBhIGxpbmUgZW5kIGFmdGVyIGVhY2ggTUlNRSBib3VuZGFyeSBtYXJrZXIsCitpbnN0ZWFkIG9mIGRvaW5nIHNvIG9ubHkgd2hlbiB0aGVyZSBpcyBhbiBlcGlsb2d1ZS4gIFRoaXMgZml4ZXMgYW4gUkZDCitjb21wbGlhbmNlIGJ1ZyBhbmQgc29sdmVzIGFuIGlzc3VlIHdpdGggc2lnbmVkIE1JTUUgcGFydHMuCisKKy4uCisKKy4uIGJwbzogMjAwMTMKKy4uIGRhdGU6IDkyODcKKy4uIG5vbmNlOiBlck55OFYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU29tZSBpbWFwIHNlcnZlcnMgZGlzY29ubmVjdCBpZiB0aGUgY3VycmVudCBtYWlsYm94IGlzIGRlbGV0ZWQsIGFuZCBpbWFwbGliCitkaWQgbm90IGhhbmRsZSB0aGF0IGNhc2UgZ3JhY2VmdWxseS4gIE5vdyBpdCBoYW5kbGVzIHRoZSAnYnllJyBjb3JyZWN0bHkuCisKKy4uCisKKy4uIGJwbzogMjA0MjYKKy4uIGRhdGU6IDkyODYKKy4uIG5vbmNlOiBmMG96QVAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV2hlbiBwYXNzaW5nIHRoZSByZS5ERUJVRyBmbGFnLCByZS5jb21waWxlKCkgZGlzcGxheXMgdGhlIGRlYnVnIG91dHB1dCBldmVyeQordGltZSBpdCBpcyBjYWxsZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlIGNvbXBpbGF0aW9uIGNhY2hlLgorCisuLgorCisuLiBicG86IDIwMzY4CisuLiBkYXRlOiA5Mjg1CisuLiBub25jZTogQmxYRUZvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBudWxsIGNoYXJhY3RlciBub3cgY29ycmVjdGx5IHBhc3NlZCBmcm9tIFRjbCB0byBQeXRob24gKGluIHVuaWNvZGUKK3N0cmluZ3Mgb25seSkuICBJbXByb3ZlZCBlcnJvciBoYW5kbGluZyBpbiB2YXJpYWJsZXMtcmVsYXRlZCBjb21tYW5kcy4KKworLi4KKworLi4gYnBvOiAyMDQzNQorLi4gZGF0ZTogOTI4NAorLi4gbm9uY2U6IF9VTmhsSAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggX3B5aW8uU3RyaW5nSU8uZ2V0dmFsdWUoKSB0byB0YWtlIGludG8gYWNjb3VudCBuZXdsaW5lIHRyYW5zbGF0aW9uCitzZXR0aW5ncy4KKworLi4KKworLi4gYnBvOiAyMDI4OAorLi4gZGF0ZTogOTI4MworLi4gbm9uY2U6IDZ6VVplMworLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggaGFuZGxpbmcgb2YgaW52YWxpZCBudW1lcmljIGNoYXJyZWZzIGluIEhUTUxQYXJzZXIuCisKKy4uCisKKy4uIGJwbzogMTk0NTYKKy4uIGRhdGU6IDkyODIKKy4uIG5vbmNlOiA2SGhzRngKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbnRwYXRoLmpvaW4oKSBub3cgam9pbnMgcmVsYXRpdmUgcGF0aHMgY29ycmVjdGx5IHdoZW4gYSBkcml2ZSBpcyBwcmVzZW50LgorCisuLgorCisuLiBicG86IDgyNjAKKy4uIGRhdGU6IDkyODEKKy4uIG5vbmNlOiBuZjdnZzkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHJlYWQoKSwgcmVhZGxpbmUoKSBhbmQgcmVhZGxpbmVzKCkgbWV0aG9kcyBvZiBjb2RlY3MuU3RyZWFtUmVhZGVyCityZXR1cm5lZCBpbmNvbXBsZXRlIGRhdGEgd2hlbiB3ZXJlIGNhbGxlZCBhZnRlciByZWFkbGluZSgpIG9yIHJlYWQoc2l6ZSkuCitCYXNlZCBvbiBwYXRjaCBieSBBbWF1cnkgRm9yZ2VvdCBkJ0FyYy4KKworLi4KKworLi4gYnBvOiAyMDM3NAorLi4gZGF0ZTogOTI4MAorLi4gbm9uY2U6IEVXb2ZIYgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYnVpbGQgd2l0aCBHTlUgcmVhZGxpbmUgPj0gNi4zLgorCisuLgorCisuLiBicG86IDE0NTQ4CisuLiBkYXRlOiA5Mjc5CisuLiBub25jZTogQ2xBa21FCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgbXVsdGlwcm9jZXNzaW5nIGZpbmFsaXplcnMgY2hlY2sgcGlkIGJlZm9yZSBydW5uaW5nIHRvIGNvcGUgd2l0aAorcG9zc2liaWxpdHkgb2YgZ2MgcnVubmluZyBqdXN0IGFmdGVyIGZvcmsuIChCYWNrcG9ydCBmcm9tIDMueC4pCisKKy4uCisKKy4uIGJwbzogMjAyNjIKKy4uIGRhdGU6IDkyNzgKKy4uIG5vbmNlOiBjbzB0MVIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV2FybmluZ3MgYXJlIHJhaXNlZCBub3cgd2hlbiBkdXBsaWNhdGUgbmFtZXMgYXJlIGFkZGVkIGluIHRoZSBaSVAgZmlsZSBvcgordG9vIGxvbmcgWklQIGZpbGUgY29tbWVudCBpcyB0cnVuY2F0ZWQuCisKKy4uCisKKy4uIGJwbzogMjAyNzAKKy4uIGRhdGU6IDkyNzcKKy4uIG5vbmNlOiBoRGNjanIKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordXJsbGliIGFuZCB1cmxwYXJzZSBub3cgc3VwcG9ydCBlbXB0eSBwb3J0cy4KKworLi4KKworLi4gYnBvOiAyMDI0MworLi4gZGF0ZTogOTI3NgorLi4gbm9uY2U6IG5BcEtDSworLi4gc2VjdGlvbjogTGlicmFyeQorCitUYXJGaWxlIG5vIGxvbmdlciByYWlzZSBSZWFkRXJyb3Igd2hlbiBvcGVuZWQgaW4gd3JpdGUgbW9kZS4KKworLi4KKworLi4gYnBvOiAyMDI0NQorLi4gZGF0ZTogOTI3NQorLi4gbm9uY2U6IDkza2ZfaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgb3BlbiBmdW5jdGlvbnMgaW4gdGhlIHRhcmZpbGUgbW9kdWxlIG5vdyBjb3JyZWN0bHkgaGFuZGxlIGVtcHR5IG1vZGUuCisKKy4uCisKKy4uIGJwbzogMjAwODYKKy4uIGRhdGU6IDkyNzQKKy4uIG5vbmNlOiBSVjNTR2kKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVzdG9yZWQgdGhlIHVzZSBvZiBsb2NhbGUtaW5kZXBlbmRlbnQgbWFwcGluZyBpbnN0ZWFkIG9mIGxvY2FsZS1kZXBlbmRlbnQKK3N0ci5sb3dlcigpIGluIGxvY2FsZS5ub3JtYWxpemUoKS4KKworLi4KKworLi4gYnBvOiAyMDI0NgorLi4gZGF0ZTogOTI3MworLi4gbm9uY2U6IENDOHVUcQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYnVmZmVyIG92ZXJmbG93IGluIHNvY2tldC5yZWN2ZnJvbV9pbnRvLgorCisuLgorCisuLiBicG86IDE5MDgyCisuLiBkYXRlOiA5MjcyCisuLiBub25jZTogUXY2Vzd0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1dvcmtpbmcgU2ltcGxlWE1MUlBDU2VydmVyIGFuZCB4bWxycGNsaWIgZXhhbXBsZXMsIGJvdGggaW4gbW9kdWxlcyBhbmQKK2RvY3VtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogMTMxMDcKKy4uIGRhdGU6IDkyNzEKKy4uIG5vbmNlOiBZZ0VFTUUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYXJncGFyc2UgYW5kIG9wdHBhcnNlIG5vIGxvbmdlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gb3V0cHV0IGEgaGVscCBvbgorZW52aXJvbm1lbnQgd2l0aCB0b28gc21hbGwgQ09MVU1OUy4gIEJhc2VkIG9uIHBhdGNoIGJ5IEVsYXphciBHZXJzaHVuaS4KKworLi4KKworLi4gYnBvOiAyMDIwNworLi4gZGF0ZTogOTI3MAorLi4gbm9uY2U6IHppSXlGMQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBbHdheXMgZGlzYWJsZSBTU0x2MiBleGNlcHQgd2hlbiBQUk9UT0NPTF9TU0x2MiBpcyBleHBsaWNpdGx5IGFza2VkIGZvci4KKworLi4KKworLi4gYnBvOiAyMDA3MgorLi4gZGF0ZTogOTI2OQorLi4gbm9uY2U6IEZ6VkcxNQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBtdWx0aXBsZSBlcnJvcnMgaW4gdGtpbnRlciB3aXRoIHdhbnRvYmplY3RzIGlzIEZhbHNlLgorCisuLgorCisuLiBicG86IDEwNjU5ODYKKy4uIGRhdGU6IDkyNjgKKy4uIG5vbmNlOiBwU2F3NTYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcHlkb2MgY2FuIG5vdyBoYW5kbGUgdW5pY29kZSBzdHJpbmdzLgorCisuLgorCisuLiBicG86IDE2MDM5CisuLiBkYXRlOiA5MjY3CisuLiBub25jZTogQ3kzX0JMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NWRS0yMDEzLTE3NTI6IENoYW5nZSB1c2Ugb2YgcmVhZGxpbmUgaW4gaW1hcGxpYiBtb2R1bGUgdG8gbGltaXQgbGluZQorbGVuZ3RoLiAgUGF0Y2ggYnkgRW1pbCBMaW5kLgorCisuLgorCisuLiBicG86IDE5NDIyCisuLiBkYXRlOiA5MjY2CisuLiBub25jZTogMWRSYVBTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0V4cGxpY2l0bHkgZGlzYWxsb3cgbm9uLVNPQ0tfU1RSRUFNIHNvY2tldHMgaW4gdGhlIHNzbCBtb2R1bGUsIHJhdGhlciB0aGFuCitzaWxlbnRseSBsZXQgdGhlbSBlbWl0IGNsZWFyIHRleHQgZGF0YS4KKworLi4KKworLi4gYnBvOiAyMDAyNworLi4gZGF0ZTogOTI2NQorLi4gbm9uY2U6IGR0QjdPRworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBsb2NhbGUgYWxpYXNlcyBmb3IgZGV2YW5hZ2FyaSBsb2NhbGVzLgorCisuLgorCisuLiBicG86IDIwMDY3CisuLiBkYXRlOiA5MjY0CisuLiBub25jZTogTWxubFlkCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RraW50ZXIgdmFyaWFibGVzIG5vdyB3b3JrIHdoZW4gd2FudG9iamVjdHMgaXMgZmFsc2UuCisKKy4uCisKKy4uIGJwbzogMTkwMjAKKy4uIGRhdGU6IDkyNjMKKy4uIG5vbmNlOiBfMTZLX18KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGtpbnRlciBub3cgdXNlcyBzcGxpdGxpc3QoKSBpbnN0ZWFkIG9mIHNwbGl0KCkgaW4gY29uZmlndXJlIG1ldGhvZHMuCisKKy4uCisKKy4uIGJwbzogMTIyMjYKKy4uIGRhdGU6IDkyNjIKKy4uIG5vbmNlOiAtdlhDQk0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworSFRUUFMgaXMgbm93IHVzZWQgYnkgZGVmYXVsdCB3aGVuIGNvbm5lY3RpbmcgdG8gUHlQSS4KKworLi4KKworLi4gYnBvOiAyMDA0OAorLi4gZGF0ZTogOTI2MQorLi4gbm9uY2U6IFl2dlVvVworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBaaXBFeHRGaWxlLnBlZWsoKSB3aGVuIGl0IGlzIGNhbGxlZCBvbiB0aGUgYm91bmRhcnkgb2YgdGhlIHVuY29tcHJlc3MKK2J1ZmZlciBhbmQgcmVhZCgpIGdvZXMgdGhyb3VnaCBtb3JlIHRoYW4gb25lIHJlYWRidWZmZXIuCisKKy4uCisKKy4uIGJwbzogMjAwMzQKKy4uIGRhdGU6IDkyNjAKKy4uIG5vbmNlOiBHbFlwTlgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXBkYXRlZCBhbGlhcyBtYXBwaW5nIHRvIG1vc3QgcmVjZW50IGxvY2FsZS5hbGlhcyBmaWxlIGZyb20gWC5vcmcKK2Rpc3RyaWJ1dGlvbiB1c2luZyBtYWtlbG9jYWxlYWxpYXMucHkuCisKKy4uCisKKy4uIGJwbzogNTgxNQorLi4gZGF0ZTogOTI1OQorLi4gbm9uY2U6IEZ4U2IwUAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBzdXBwb3J0IGZvciBsb2NhbGVzIHdpdGggbW9kaWZpZXJzLiAgRml4ZWQgc3VwcG9ydCBmb3IgbG9jYWxlCitlbmNvZGluZ3Mgd2l0aCBoeXBoZW5zLgorCisuLgorCisuLiBicG86IDIwMDI2CisuLiBkYXRlOiA5MjU4CisuLiBub25jZTogS08xakI2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0aGUgc3FsaXRlIG1vZHVsZSB0byBoYW5kbGUgY29ycmVjdGx5IGludmFsaWQgaXNvbGF0aW9uIGxldmVsICh3cm9uZwordHlwZSkuCisKKy4uCisKKy4uIGJwbzogMTg4MjkKKy4uIGRhdGU6IDkyNTcKKy4uIG5vbmNlOiBRUHdKRm4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworY3N2LkRpYWxlY3QoKSBub3cgY2hlY2tzIHR5cGUgZm9yIGRlbGltaXRlciwgZXNjYXBlY2hhciBhbmQgcXVvdGVjaGFyCitmaWVsZHMuICBPcmlnaW5hbCBwYXRjaCBieSBWYWpyYXNreSBLb2suCisKKy4uCisKKy4uIGJwbzogMTk4NTUKKy4uIGRhdGU6IDkyNTYKKy4uIG5vbmNlOiBUdEJVTzYKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordXVpZC5nZXRub2RlKCkgb24gVW5peCBub3cgbG9va3Mgb24gdGhlIFBBVEggZm9yIHRoZSBleGVjdXRhYmxlcyB1c2VkIHRvCitmaW5kIHRoZSBtYWMgYWRkcmVzcywgd2l0aCAvc2JpbiBhbmQgL3Vzci9zYmluIGFzIGZhbGxiYWNrcy4KKworLi4KKworLi4gYnBvOiAyMDAwNworLi4gZGF0ZTogOTI1NQorLi4gbm9uY2U6IElhU25QbworLi4gc2VjdGlvbjogTGlicmFyeQorCitIVFRQUmVzcG9uc2UucmVhZCgwKSBubyBtb3JlIHByZW1hdHVyZWx5IGNsb3NlcyBjb25uZWN0aW9uLiBPcmlnaW5hbCBwYXRjaAorYnkgU2ltb24gU2FwaW4uCisKKy4uCisKKy4uIGJwbzogMTk5MTIKKy4uIGRhdGU6IDkyNTQKKy4uIG5vbmNlOiBUdmlJUGkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgbnVtZXJvdXMgYnVncyBpbiBudHBhdGguc3BsaXR1bmMoKS4KKworLi4KKworLi4gYnBvOiAxOTYyMworLi4gZGF0ZTogOTI1MworLi4gbm9uY2U6IGNQTDhYSAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB3cml0aW5nIHRvIHVuc2Vla2FibGUgZmlsZXMgaW4gdGhlIGFpZmMgbW9kdWxlLiBGaXhlZCB3cml0aW5nICd1bGF3JworKGxvd2VyIGNhc2UpIGNvbXByZXNzZWQgQUlGQyBmaWxlcy4KKworLi4KKworLi4gYnBvOiAxNzkxOQorLi4gZGF0ZTogOTI1MgorLi4gbm9uY2U6IEg1aUdYdgorLi4gc2VjdGlvbjogTGlicmFyeQorCitzZWxlY3QucG9sbC5yZWdpc3RlcigpIGFnYWluIHdvcmtzIHdpdGggcG9sbC5QT0xMTlZBTCBvbiBBSVguIEZpeGVkIGludGVnZXIKK292ZXJmbG93IGluIHRoZSBldmVudG1hc2sgcGFyYW1ldGVyLgorCisuLgorCisuLiBicG86IDE3MjAwCisuLiBkYXRlOiA5MjUxCisuLiBub25jZTogeTFldVpoCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3RlbG5ldGxpYidzIHJlYWRfdW50aWwgYW5kIGV4cGVjdCB0aW1lb3V0IHdhcyBicm9rZW4gYnkgdGhlIGZpeCB0byBJc3N1ZQorIzE0NjM1IGluIFB5dGhvbiAyLjcuNCB0byBiZSBpbnRlcnByZXRlZCBhcyBtaWxsaXNlY29uZHMgaW5zdGVhZCBvZiBzZWNvbmRzCit3aGVuIHRoZSBwbGF0Zm9ybSBzdXBwb3J0cyBzZWxlY3QucG9sbCAoaWU6IGV2ZXJ5d2hlcmUpLiBJdCBpcyBub3cgdHJlYXRlZAorYXMgc2Vjb25kcyBvbmNlIGFnYWluLgorCisuLgorCisuLiBicG86IDE5MDk5CisuLiBkYXRlOiA5MjUwCisuLiBub25jZTogVTRDSEprCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBzdHJ1Y3QgbW9kdWxlIG5vdyBzdXBwb3J0cyBVbmljb2RlIGZvcm1hdCBzdHJpbmdzLgorCisuLgorCisuLiBicG86IDE5ODc4CisuLiBkYXRlOiA5MjQ5CisuLiBub25jZTogN29WUEN5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzZWdmYXVsdCBpbiBiejIgbW9kdWxlIGFmdGVyIGNhbGxpbmcgX19pbml0X18gdHdpY2Ugd2l0aCBub24tZXhpc3RlbnQKK2ZpbGVuYW1lLiBJbml0aWFsIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KKworLi4KKworLi4gYnBvOiAxNjM3MworLi4gZGF0ZTogOTI0OAorLi4gbm9uY2U6IDlkclhGWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcmV2ZW50IGluZmluaXRlIHJlY3Vyc2lvbiBmb3IgQUJDIFNldCBjbGFzcyBjb21wYXJpc29ucy4KKworLi4KKworLi4gYnBvOiAxOTEzOAorLi4gZGF0ZTogOTI0NworLi4gbm9uY2U6IHh3S3JYXworLi4gc2VjdGlvbjogTGlicmFyeQorCitkb2N0ZXN0J3MgSUdOT1JFX0VYQ0VQVElPTl9ERVRBSUwgbm93IGFsbG93cyBhIG1hdGNoIHdoZW4gbm8gZXhjZXB0aW9uCitkZXRhaWwgZXhpc3RzIChubyBjb2xvbiBmb2xsb3dpbmcgdGhlIGV4Y2VwdGlvbidzIG5hbWUsIG9yIGEgY29sb24gZG9lcworZm9sbG93IGJ1dCBubyB0ZXh0IGZvbGxvd3MgdGhlIGNvbG9uKS4KKworLi4KKworLi4gYnBvOiAxNjIzMQorLi4gZGF0ZTogOTI0NgorLi4gbm9uY2U6IEJvc3BUZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBwaWNrbGUuUGlja2xlciB0byBvbmx5IGZhbGxiYWNrIHRvIGl0cyBkZWZhdWx0IHBpY2tsaW5nIGJlaGF2aW91ciB3aGVuCitQaWNrbGVyLnBlcnNpc3RlbnRfaWQgcmV0dXJucyBOb25lLCBidXQgbm90IGZvciBhbnkgb3RoZXIgZmFsc2UgdmFsdWVzLgorVGhpcyBhbGxvd3MgZmFsc2UgdmFsdWVzIG90aGVyIHRoYW4gTm9uZSB0byBiZSB1c2VkIGFzIHBlcnNpc3RlbnQgSURzLiAgVGhpcworYmVoYXZpb3VyIGlzIGNvbnNpc3RlbnQgd2l0aCBjUGlja2xlLgorCisuLgorCisuLiBicG86IDExNTA4CisuLiBkYXRlOiA5MjQ1CisuLiBub25jZTogZng3QWJzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHV1aWQuZ2V0bm9kZSgpIGFuZCB1dWlkLnV1aWQxKCkgb24gZW52aXJvbm1lbnQgd2l0aCB2aXJ0dWFsIGludGVyZmFjZS4KK09yaWdpbmFsIHBhdGNoIGJ5IEtlbnQgRnJhemllci4KKworLi4KKworLi4gYnBvOiAxMTQ4OQorLi4gZGF0ZTogOTI0NAorLi4gbm9uY2U6IDNaUUhpOAorLi4gc2VjdGlvbjogTGlicmFyeQorCitKU09OIGRlY29kZXIgbm93IGFjY2VwdHMgbG9uZSBzdXJyb2dhdGVzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDkyNDMKKy4uIG5vbmNlOiBtcnpKaWYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRlc3QudGVzdF9zdXBwb3J0LmJpbmRfcG9ydCgpIHRvIG5vdCBjYXVzZSBhbiBlcnJvciB3aGVuIFB5dGhvbiB3YXMKK2NvbXBpbGVkIG9uIGEgc3lzdGVtIHdpdGggU09fUkVVU0VQT1JUIGRlZmluZWQgaW4gdGhlIGhlYWRlcnMgYnV0IHJ1biBvbiBhCitzeXN0ZW0gd2l0aCBhbiBPUyBrZXJuZWwgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoYXQgbmV3IHNvY2tldCBvcHRpb24uCisKKy4uCisKKy4uIGJwbzogMTk2MzMKKy4uIGRhdGU6IDkyNDIKKy4uIG5vbmNlOiBYSk5RaXQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgd3JpdGluZyBub3QgY29tcHJlc3NlZCAxNi0gYW5kIDMyLWJpdCB3YXZlIGZpbGVzIG9uIGJpZy1lbmRpYW4KK3BsYXRmb3Jtcy4KKworLi4KKworLi4gYnBvOiAxOTQ0OQorLi4gZGF0ZTogOTI0MQorLi4gbm9uY2U6IEYyVGJDXworLi4gc2VjdGlvbjogTGlicmFyeQorCitpbiBjc3YncyB3cml0ZXJvdywgaGFuZGxlIG5vbi1zdHJpbmcga2V5cyB3aGVuIGdlbmVyYXRpbmcgdGhlIGVycm9yIG1lc3NhZ2UKK3RoYXQgY2VydGFpbiBrZXlzIGFyZSBub3QgaW4gdGhlICdmaWVsZG5hbWVzJyBsaXN0LgorCisuLgorCisuLiBicG86IDEyODUzCisuLiBkYXRlOiA5MjQwCisuLiBub25jZTogSGY3RVlICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBOYW1lRXJyb3IgaW4gZGlzdHV0aWxzLmNvbW1hbmQudXBsb2FkLgorCisuLgorCisuLiBicG86IDE5NTIzCisuLiBkYXRlOiA5MjM5CisuLiBub25jZTogdE5pWTlpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Nsb3NlZCBGaWxlSGFuZGxlciBsZWFrIHdoaWNoIG9jY3VycmVkIHdoZW4gZGVsYXkgd2FzIHNldC4KKworLi4KKworLi4gYnBvOiAxNTc1MDIwCisuLiBkYXRlOiA5MjM4CisuLiBub25jZTogc2tXeXZsCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHN1cHBvcnQgb2YgMjQtYml0IHdhdmUgZmlsZXMgb24gYmlnLWVuZGlhbiBwbGF0Zm9ybXMuCisKKy4uCisKKy4uIGJwbzogMTk0ODAKKy4uIGRhdGU6IDkyMzcKKy4uIG5vbmNlOiBNWTNkbVcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSFRNTFBhcnNlciBub3cgYWNjZXB0cyBhbGwgdmFsaWQgc3RhcnQtdGFnIG5hbWVzIGFzIGRlZmluZWQgYnkgdGhlIEhUTUw1CitzdGFuZGFyZC4KKworLi4KKworLi4gYnBvOiAxNzgyNworLi4gZGF0ZTogOTIzNgorLi4gbm9uY2U6IEhKR0ZETAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgdGhlIG1pc3NpbmcgZG9jdW1lbnRhdGlvbiBmb3IgYGBjb2RlY3MuZW5jb2RlYGAgYW5kIGBgY29kZWNzLmRlY29kZWBgLgorCisuLgorCisuLiBicG86IDYxNTcKKy4uIGRhdGU6IDkyMzUKKy4uIG5vbmNlOiBaVzY3YWUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgVGtpbnRlci5UZXh0LmRlYnVnKCkuICBPcmlnaW5hbCBwYXRjaCBieSBHdWlsaGVybWUgUG9sby4KKworLi4KKworLi4gYnBvOiA2MTYwCisuLiBkYXRlOiA5MjM0CisuLiBub25jZTogTXI1VXVBCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBiYm94KCkgbWV0aG9kIG9mIHRraW50ZXIuU3BpbmJveCBub3cgcmV0dXJucyBhIHR1cGxlIG9mIGludGVnZXJzIGluc3RlYWQKK29mIGEgc3RyaW5nLiAgQmFzZWQgb24gcGF0Y2ggYnkgR3VpbGhlcm1lIFBvbG8uCisKKy4uCisKKy4uIGJwbzogMTkyODYKKy4uIGRhdGU6IDkyMzMKKy4uIG5vbmNlOiBUVVpldEYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRGlyZWN0b3JpZXMgaW4gYGBwYWNrYWdlX2RhdGFgYCBhcmUgbm8gbG9uZ2VyIGFkZGVkIHRvIHRoZSBmaWxlbGlzdCwKK3ByZXZlbnRpbmcgZmFpbHVyZSBvdXRsaW5lZCBpbiB0aGUgdGlja2V0LgorCisuLgorCisuLiBicG86IDY2NzYKKy4uIGRhdGU6IDkyMzIKKy4uIG5vbmNlOiBDSnU1T24KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRW5zdXJlIGEgbWVhbmluZ2Z1bCBleGNlcHRpb24gaXMgcmFpc2VkIHdoZW4gYXR0ZW1wdGluZyB0byBwYXJzZSBtb3JlIHRoYW4KK29uZSBYTUwgZG9jdW1lbnQgcGVyIHB5ZXhwYXQgeG1scGFyc2VyIGluc3RhbmNlLiAoT3JpZ2luYWwgcGF0Y2hlcyBieQorSGlyb2thenUgWWFtYW1vdG8gYW5kIEFtYXVyeSBGb3JnZW90IGQnQXJjLCB3aXRoIHN1Z2dlc3RlZCB3b3JkaW5nIGJ5IERhdmlkCitHdXR0ZXJpZGdlKQorCisuLgorCisuLiBicG86IDIxMzExCisuLiBkYXRlOiA5MjMxCisuLiBub25jZTogSnNERjhICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0F2b2lkIGV4Y2VwdGlvbiBpbiBfb3N4X3N1cHBvcnQgd2l0aCBub24tc3RhbmRhcmQgY29tcGlsZXIgY29uZmlndXJhdGlvbnMuCitQYXRjaCBieSBKb2huIFN6YWttZWlzdGVyLgorCisuLgorCisuLiBicG86IDM1NjEKKy4uIGRhdGU6IDkyMzAKKy4uIG5vbmNlOiBEdU5yNkMKKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK1RoZSBXaW5kb3dzIGluc3RhbGxlciBub3cgaGFzIGFuIG9wdGlvbiwgb2ZmIGJ5IGRlZmF1bHQsIGZvciBwbGFjaW5nIHRoZQorUHl0aG9uIGluc3RhbGxhdGlvbiBpbnRvIHRoZSBzeXN0ZW0gIlBhdGgiIGVudmlyb25tZW50IHZhcmlhYmxlLiBUaGlzIHdhcworYmFja3BvcnRlZCBmcm9tIFB5dGhvbiAzLjMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTIyOQorLi4gbm9uY2U6IF8tZ2UtZworLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworQWRkIHN1cHBvcnQgZm9yIGBgeWllbGQgZnJvbWBgIHRvIDJ0bzMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTIyOAorLi4gbm9uY2U6IGRwRmJ5WgorLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworQWRkIHN1cHBvcnQgZm9yIHRoZSBQRVAgNDY1IG1hdHJpeCBtdWx0aXBsaWNhdGlvbiBvcGVyYXRvciB0byAydG8zLgorCisuLgorCisuLiBicG86IDE5OTM2CisuLiBkYXRlOiA5MjI3CisuLiBub25jZTogbW9ldDFLCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitBZGRlZCBleGVjdXRhYmxlIGJpdHMgb3Igc2hlYmFuZyBsaW5lcyB0byBQeXRob24gc2NyaXB0cyB3aGljaCByZXF1aXJlcwordGhlbS4gIERpc2FibGUgZXhlY3V0YWJsZSBiaXRzIGFuZCBzaGViYW5nIGxpbmVzIGluIHRlc3QgYW5kIGJlbmNobWFyayBmaWxlcworaW4gb3JkZXIgdG8gcHJldmVudCB1c2luZyBhIHJhbmRvbSBzeXN0ZW0gcHl0aG9uLCBhbmQgaW4gc291cmNlIGZpbGVzIG9mCittb2R1bGVzIHdoaWNoIGRvbid0IHByb3ZpZGUgY29tbWFuZCBsaW5lIGludGVyZmFjZS4KKworLi4KKworLi4gYnBvOiAxODEwNAorLi4gZGF0ZTogOTIyNgorLi4gbm9uY2U6IDhGajlQZgorLi4gc2VjdGlvbjogSURMRQorCitBZGQgaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkgd2l0aCBhIGZldyBzYW1wbGUgdGVzdHMgdG8gYmVnaW4KK2NvbnNvbGlkYXRpbmcgYW5kIGltcHJvdmluZyBodW1hbi12YWxpZGF0ZWQgdGVzdHMgb2YgSWRsZS4gQ2hhbmdlIG90aGVyCitmaWxlcyBhcyBuZWVkZWQgdG8gd29yayB3aXRoIGh0ZXN0LiAgUnVubmluZyB0aGUgbW9kdWxlIGFzIF9fbWFpbl9fIHJ1bnMgYWxsCit0ZXN0cy4KKworLi4KKworLi4gYnBvOiAyMTEzOQorLi4gZGF0ZTogOTIyNQorLi4gbm9uY2U6IGtxZXRuZworLi4gc2VjdGlvbjogSURMRQorCitDaGFuZ2UgZGVmYXVsdCBwYXJhZ3JhcGggd2lkdGggdG8gNzIsIHRoZSBQRVAgOCByZWNvbW1lbmRhdGlvbi4KKworLi4KKworLi4gYnBvOiAyMTI4NAorLi4gZGF0ZTogOTIyNAorLi4gbm9uY2U6IEtLSmZtdgorLi4gc2VjdGlvbjogSURMRQorCitQYXJhZ3JhcGggcmVmb3JtYXQgdGVzdCBwYXNzZXMgYWZ0ZXIgdXNlciBjaGFuZ2VzIHJlZm9ybWF0IHdpZHRoLgorCisuLgorCisuLiBicG86IDIwNDA2CisuLiBkYXRlOiA5MjIzCisuLiBub25jZTogQWdCZV81CisuLiBzZWN0aW9uOiBJRExFCisKK1VzZSBQeXRob24gYXBwbGljYXRpb24gaWNvbnMgZm9yIElkbGUgd2luZG93IHRpdGxlIGJhcnMuIFBhdGNoIG1vc3RseSBieQorU2VyaGl5IFN0b3JjaGFrYS4KKworLi4KKworLi4gYnBvOiAyMTAyOQorLi4gZGF0ZTogOTIyMgorLi4gbm9uY2U6IEpubEFBdAorLi4gc2VjdGlvbjogSURMRQorCitPY2N1cnJlbmNlcyBvZiAicHJpbnQiIGFyZSBub3cgY29uc2lzdGVudGx5IGNvbG9yZWQgYXMgYmVpbmcgYSBrZXl3b3JkICh0aGUKK2NvbG9yaXplciBkb2Vzbid0IGtub3cgaWYgcHJpbnQgZnVuY3Rpb25zIGFyZSBlbmFibGVkIGluIHRoZSBzb3VyY2UpLgorCisuLgorCisuLiBicG86IDE3NzIxCisuLiBkYXRlOiA5MjIxCisuLiBub25jZTogOEpoOEMxCisuLiBzZWN0aW9uOiBJRExFCisKK1JlbW92ZSBub24tZnVuY3Rpb25hbCBjb25maWd1cmF0aW9uIGRpYWxvZyBoZWxwIGJ1dHRvbiB1bnRpbCB3ZSBtYWtlIGl0CithY3R1YWxseSBnaXZlcyBzb21lIGhlbHAgd2hlbiBjbGlja2VkLiBQYXRjaCBieSBHdWlsaGVybWUgU2ltw7Vlcy4KKworLi4KKworLi4gYnBvOiAxNzM5MAorLi4gZGF0ZTogOTIyMAorLi4gbm9uY2U6IDltNlpoVgorLi4gc2VjdGlvbjogSURMRQorCitBZGQgUHl0aG9uIHZlcnNpb24gdG8gSWRsZSBlZGl0b3Igd2luZG93IHRpdGxlIGJhci4gT3JpZ2luYWwgcGF0Y2hlcyBieQorRWRtb25kIEJ1cm5ldHQgYW5kIEtlbnQgSm9obnNvbi4KKworLi4KKworLi4gYnBvOiAyMDA1OAorLi4gZGF0ZTogOTIxOQorLi4gbm9uY2U6IEtuRGxoSAorLi4gc2VjdGlvbjogSURMRQorCitzeXMuc3RkaW4ucmVhZGxpbmUoKSBpbiBJRExFIG5vdyBhbHdheXMgcmV0dXJucyBvbmx5IG9uZSBsaW5lLgorCisuLgorCisuLiBicG86IDE5NDgxCisuLiBkYXRlOiA5MjE4CisuLiBub25jZTogYjVFSG1uCisuLiBzZWN0aW9uOiBJRExFCisKK3ByaW50KCkgb2YgdW5pY29kZSwgc3RyIG9yIGJ5dGVhcnJheSBzdWJjbGFzcyBpbnN0YW5jZSBpbiBJRExFIG5vIG1vcmUKK2hhbmdzLgorCisuLgorCisuLiBicG86IDE4MjcwCisuLiBkYXRlOiA5MjE3CisuLiBub25jZTogbHU2ZFJXCisuLiBzZWN0aW9uOiBJRExFCisKK1ByZXZlbnQgcG9zc2libGUgSURMRSBBdHRyaWJ1dGVFcnJvciBvbiBPUyBYIHdoZW4gbm8gaW5pdGlhbCBzaGVsbCB3aW5kb3cgaXMKK3ByZXNlbnQuCisKKy4uCisKKy4uIGJwbzogMTc2NTQKKy4uIGRhdGU6IDkyMTYKKy4uIG5vbmNlOiBOYnpoTlMKKy4uIHNlY3Rpb246IElETEUKKworRW5zdXJlIElETEUgbWVudXMgYXJlIGN1c3RvbWl6ZWQgcHJvcGVybHkgb24gT1MgWCBmb3Igbm9uLWZyYW1ld29yayBidWlsZHMKK2FuZCBmb3IgYWxsIHZhcmlhbnRzIG9mIFRrLgorCisuLgorCisuLiBicG86IDE3NzUyCisuLiBkYXRlOiA5MjE1CisuLiBub25jZTogUDhpRzQ0CisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggZGlzdHV0aWxzIHRlc3RzIHdoZW4gcnVuIGZyb20gdGhlIGluc3RhbGxlZCBsb2NhdGlvbi4KKworLi4KKworLi4gYnBvOiAxODYwNAorLi4gZGF0ZTogOTIxNAorLi4gbm9uY2U6IFEwMFhyagorLi4gc2VjdGlvbjogVGVzdHMKKworQ29uc29saWRhdGVkIGNoZWNrcyBmb3IgR1VJIGF2YWlsYWJpbGl0eS4gIEFsbCBwbGF0Zm9ybXMgbm93IGF0IGxlYXN0IGNoZWNrCit3aGV0aGVyIFRrIGNhbiBiZSBpbnN0YW50aWF0ZWQgd2hlbiB0aGUgR1VJIHJlc291cmNlIGlzIHJlcXVlc3RlZC4KKworLi4KKworLi4gYnBvOiAyMDk0NgorLi4gZGF0ZTogOTIxMworLi4gbm9uY2U6IGlJNE1sSworLi4gc2VjdGlvbjogVGVzdHMKKworQ29ycmVjdCBhbGlnbm1lbnQgYXNzdW1wdGlvbnMgb2Ygc29tZSBjdHlwZXMgdGVzdHMuCisKKy4uCisKKy4uIGJwbzogMjA3NDMKKy4uIGRhdGU6IDkyMTIKKy4uIG5vbmNlOiBoeFpRVWYKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCBhIHJlZmVyZW5jZSBsZWFrIGluIHRlc3RfdGNsLgorCisuLgorCisuLiBicG86IDIwNTEwCisuLiBkYXRlOiA5MjExCisuLiBub25jZTogWDlwX0syCisuLiBzZWN0aW9uOiBUZXN0cworCitSZXdyb3RlIHRlc3RfZXhpdCBpbiB0ZXN0X3N5cyB0byBtYXRjaCBleGlzdGluZyBjb21tZW50cywgdXNlIG1vZGVybgordW5pdHRlc3QgZmVhdHVyZXMsIGFuZCB1c2UgaGVscGVycyBmcm9tIHRlc3Quc2NyaXB0X2hlbHBlciBpbnN0ZWFkIG9mIHVzaW5nCitzdWJwcm9jZXNzIGRpcmVjdGx5LiAgSW5pdGlhbCBwYXRjaCBieSBHYXJldGggUmVlcy4KKworLi4KKworLi4gYnBvOiAyMDUzMgorLi4gZGF0ZTogOTIxMAorLi4gbm9uY2U6IHFzT3Q0ZAorLi4gc2VjdGlvbjogVGVzdHMKKworVGVzdHMgd2hpY2ggdXNlIF90ZXN0Y2FwaSBub3cgYXJlIG1hcmtlZCBhcyBDUHl0aG9uIG9ubHkuCisKKy4uCisKKy4uIGJwbzogMTk5MjAKKy4uIGRhdGU6IDkyMDkKKy4uIG5vbmNlOiBzdU9JQzcKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZGVkIHRlc3RzIGZvciBUYXJGaWxlLmxpc3QoKS4gIEJhc2VkIG9uIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KKworLi4KKworLi4gYnBvOiAxOTk5MAorLi4gZGF0ZTogOTIwOAorLi4gbm9uY2U6IExwMU1WagorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkZWQgdGVzdHMgZm9yIHRoZSBpbWdoZHIgbW9kdWxlLiAgQmFzZWQgb24gcGF0Y2ggYnkgQ2xhdWRpdSBQb3BhLgorCisuLgorCisuLiBicG86IDE5ODA0CisuLiBkYXRlOiA5MjA3CisuLiBub25jZTogeElISWw3CisuLiBzZWN0aW9uOiBUZXN0cworCitUaGUgdGVzdF9maW5kX21hYyB0ZXN0IGluIHRlc3RfdXVpZCBpcyBub3cgc2tpcHBlZCBpZiB0aGUgaWZjb25maWcKK2V4ZWN1dGFibGUgaXMgbm90IGF2YWlsYWJsZS4KKworLi4KKworLi4gYnBvOiAxOTg4NgorLi4gZGF0ZTogOTIwNgorLi4gbm9uY2U6IG5xREZSQworLi4gc2VjdGlvbjogVGVzdHMKKworVXNlIGJldHRlciBlc3RpbWF0ZWQgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgYmlnbWVtIHRlc3RzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDkyMDUKKy4uIG5vbmNlOiA2TFE4cVgKKy4uIHNlY3Rpb246IFRlc3RzCisKK0JhY2twb3J0ZWQgdGVzdHMgZm9yIFRraW50ZXIgdmFyaWFibGVzLgorCisuLgorCisuLiBicG86IDE5MzIwCisuLiBkYXRlOiA5MjA0CisuLiBub25jZTogOXhfY3c1CisuLiBzZWN0aW9uOiBUZXN0cworCit0ZXN0X3RjbCBubyBsb25nZXIgZmFpbHMgd2hlbiB3YW50b2JqZWN0cyBpcyBmYWxzZS4KKworLi4KKworLi4gYnBvOiAxOTY4MworLi4gZGF0ZTogOTIwMworLi4gbm9uY2U6IGlENzZDcQorLi4gc2VjdGlvbjogVGVzdHMKKworUmVtb3ZlZCBlbXB0eSB0ZXN0cyBmcm9tIHRlc3RfbWluaWRvbS4gIEluaXRpYWwgcGF0Y2ggYnkgQWppdGVzaCBHdXB0YS4KKworLi4KKworLi4gYnBvOiAxOTkyOAorLi4gZGF0ZTogOTIwMgorLi4gbm9uY2U6IGR3T1E5NQorLi4gc2VjdGlvbjogVGVzdHMKKworSW1wbGVtZW50ZWQgYSB0ZXN0IGZvciByZXByKCkgb2YgY2VsbCBvYmplY3RzLgorCisuLgorCisuLiBicG86IDE5NTk1CisuLiBkYXRlOiA5MjAxCisuLiBub25jZTogcTVvTkVfCisuLiBzZWN0aW9uOiBUZXN0cworCitSZS1lbmFibGVkIGEgbG9uZy1kaXNhYmxlZCB0ZXN0IGluIHRlc3Rfd2luc291bmQuIChTZWUgYWxzbzogYnBvLTE5OTg3KQorCisuLgorCisuLiBicG86IDE5NTg4CisuLiBkYXRlOiA5MjAwCisuLiBub25jZTogRVhLeHBDCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXhlZCB0ZXN0cyBpbiB0ZXN0X3JhbmRvbSB0aGF0IHdlcmUgc2lsZW50bHkgc2tpcHBlZCBtb3N0IG9mIHRoZSB0aW1lLgorUGF0Y2ggYnkgSnVsaWFuIEdpbmRpLgorCisuLgorCisuLiBicG86IDE3ODgzCisuLiBkYXRlOiA5MTk5CisuLiBub25jZTogclFmUnBQCisuLiBzZWN0aW9uOiBUZXN0cworCitUd2VhayB0ZXN0X3RjbCB0ZXN0TG9hZFdpdGhVTkMgdG8gc2tpcCB0aGUgdGVzdCBpbiB0aGUgZXZlbnQgb2YgYSBwZXJtaXNzaW9uCitlcnJvciBvbiBXaW5kb3dzIGFuZCB0byBwcm9wZXJseSByZXBvcnQgb3RoZXIgc2tpcCBjb25kaXRpb25zLgorCisuLgorCisuLiBicG86IDE3ODgzCisuLiBkYXRlOiA5MTk4CisuLiBub25jZTogMTJxTjFpCisuLiBzZWN0aW9uOiBUZXN0cworCitCYWNrcG9ydGVkIF9pc19ndWlfYXZhaWxhYmxlKCkgaW4gdGVzdC50ZXN0X3N1cHBvcnQgdG8gYXZvaWQgaGFuZ2luZyBXaW5kb3dzCitidWlsZGJvdHMgb24gdGVzdF90dGtfZ3Vpb25seS4KKworLi4KKworLi4gYnBvOiAxODcwMgorLi4gZGF0ZTogOTE5NworLi4gbm9uY2U6IGEyalAtVgorLi4gc2VjdGlvbjogVGVzdHMKKworQWxsIHNraXBwZWQgdGVzdHMgbm93IHJlcG9ydGVkIGFzIHNraXBwZWQuIChTZWUgYWxzbzogYnBvLTE5NTcyKQorCisuLgorCisuLiBicG86IDE5MDg1CisuLiBkYXRlOiA5MTk2CisuLiBub25jZTogR2NsOVhYCisuLiBzZWN0aW9uOiBUZXN0cworCitBZGRlZCBiYXNpYyB0ZXN0cyBmb3IgYWxsIHRraW50ZXIgd2lkZ2V0IG9wdGlvbnMuCisKKy4uCisKKy4uIGJwbzogMjA2MDUKKy4uIGRhdGU6IDkxOTUKKy4uIG5vbmNlOiB1ZWY1cFQKKy4uIHNlY3Rpb246IFRlc3RzCisKK01ha2UgdGVzdF9zb2NrZXQgZ2V0YWRkcmluZm8gT1MgWCBzZWdmYXVsdCB0ZXN0IG1vcmUgcm9idXN0LgorCisuLgorCisuLiBicG86IDIwOTM5CisuLiBkYXRlOiA5MTk0CisuLiBub25jZTogeDNLUTM1CisuLiBzZWN0aW9uOiBUZXN0cworCitBdm9pZCB2YXJpb3VzIG5ldHdvcmsgdGVzdCBmYWlsdXJlcyBkdWUgdG8gbmV3IHJlZGlyZWN0IG9mCitodHRwOi8vd3d3LnB5dGhvbi5vcmcvIHRvIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmc6IHVzZSBodHRwOi8vd3d3LmV4YW1wbGUuY29tCitpbnN0ZWFkLgorCisuLgorCisuLiBicG86IDIxMDkzCisuLiBkYXRlOiA5MTkzCisuLiBub25jZTogQ2NwUmltCisuLiBzZWN0aW9uOiBUZXN0cworCitQcmV2ZW50IGZhaWx1cmVzIG9mIGN0eXBlcyB0ZXN0X21hY2hvbGliIG9uIE9TIFggaWYgYSBjb3B5IG9mIGxpYnogZXhpc3RzIGluCiskSE9NRS9saWIgb3IgL3Vzci9sb2NhbC9saWIuCisKKy4uCisKKy4uIGJwbzogMjEyODUKKy4uIGRhdGU6IDkxOTIKKy4uIG5vbmNlOiBjVTlwMkUKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1JlZmFjdG9yIGFuZCBmaXggY3Vyc2VzIGNvbmZpZ3VyZSBjaGVjayB0byBhbHdheXMgc2VhcmNoIGluIGEgbmN1cnNlc3cKK2RpcmVjdG9yeS4KKworLi4KKworLi4gYnBvOiAyMDI1NQorLi4gZGF0ZTogOTE5MQorLi4gbm9uY2U6IFA5SGZUUgorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitVcGRhdGUgdGhlIGFib3V0IGFuZCBidWdzIHBhZ2VzLgorCisuLgorCisuLiBicG86IDE4ODQwCisuLiBkYXRlOiA5MTkwCisuLiBub25jZTogXzJVSXRWCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0ludHJvZHVjZSB0aGUganNvbiBtb2R1bGUgaW4gdGhlIHR1dG9yaWFsLCBhbmQgZGUtZW1waGFzaXplIHRoZSBwaWNrbGUKK21vZHVsZS4KKworLi4KKworLi4gYnBvOiAxOTc5NQorLi4gZGF0ZTogOTE4OQorLi4gbm9uY2U6IHo1c2JlMQorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitJbXByb3ZlZCBtYXJrdXAgb2YgVHJ1ZS9GYWxzZSBjb25zdGFudHMuCisKKy4uCisKKy4uIGJwbzogMjEzMDMKKy4uIGRhdGU6IDkxODgKKy4uIG5vbmNlOiBBSFk1QXMKKy4uIHNlY3Rpb246IFdpbmRvd3MKKworVXBkYXRlZCB0aGUgdmVyc2lvbiBvZiBUY2wvVGsgaW5jbHVkZWQgaW4gdGhlIGluc3RhbGxlciBmcm9tIDguNS4yIHRvCis4LjUuMTUuIChTZWUgYWxzbzogYnBvLTIwNTY1KQorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDkxODcKKy4uIG5vbmNlOiBGaHBrVlMKKy4uIHNlY3Rpb246IG1hY09TCisKK0FzIG9mIDIuNy44LCB0aGUgMzItYml0LW9ubHkgaW5zdGFsbGVyIHdpbGwgc3VwcG9ydCBPUyBYIDEwLjUgYW5kIGxhdGVyCitzeXN0ZW1zIGFzIGlzIGN1cnJlbnRseSBkb25lIGZvciBQeXRob24gMy54IGluc3RhbGxlcnMuIEZvciAyLjcuNyBvbmx5LCB3ZQord2lsbCBwcm92aWRlIHRocmVlIGluc3RhbGxlcnM6IHRoZSBsZWdhY3kgZGVwcmVjYXRlZCAxMC4zKyAzMi1iaXQtb25seQorZm9ybWF0OyB0aGUgbmV3ZXIgMTAuNSsgMzItYml0LW9ubHkgZm9ybWF0OyBhbmQgdGhlIHVuY2hhbmdlZCAxMC42KworNjQtLzMyLWJpdCBmb3JtYXQuIEFsdGhvdWdoIGJpbmFyeSBpbnN0YWxsZXJzIHdpbGwgbm8gbG9uZ2VyIGJlIGF2YWlsYWJsZQorZnJvbSBweXRob24ub3JnIGFzIG9mIDIuNy44LCBpdCB3aWxsIHN0aWxsIGJlIHBvc3NpYmxlIHRvIGJ1aWxkIGZyb20gc291cmNlCitvbiAxMC4zLjkgYW5kIDEwLjQgc3lzdGVtcyBpZiBuZWNlc3NhcnkuIFNlZSBNYWMvQnVpbGRTY3JpcHQvUkVBRE1FLnR4dCBmb3IKK21vcmUgaW5mb3JtYXRpb24uCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjcuOC5yc3QgYi9NaXNjL05FV1MuZC8yLjcuOC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ0NDYyYwotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuNy44LnJzdApAQCAtMCwwICsxLDQzMyBAQAorLi4gYnBvOiA0MzQ2CisuLiBkYXRlOiA5MzczCisuLiBub25jZTogVUFTSDd1CisuLiByZWxlYXNlIGRhdGU6IDIwMTQtMDYtMjkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0luIFB5T2JqZWN0X0NhbGxNZXRob2QgYW5kIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzLCBkb24ndCBvdmVyd3JpdGUgdGhlCitlcnJvciBzZXQgaW4gUHlPYmplY3RfR2V0QXR0ci4KKworLi4KKworLi4gYnBvOiAyMTgzMQorLi4gZGF0ZTogOTM3MgorLi4gbm9uY2U6IExNb0F1MworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQXZvaWQgaW50ZWdlciBvdmVyZmxvdyB3aGVuIGxhcmdlIHNpemVzIGFuZCBvZmZzZXRzIGFyZSBnaXZlbiB0byB0aGUgYnVmZmVyCit0eXBlLiBDVkUtMjAxNC03MTg1LgorCisuLgorCisuLiBicG86IDE5NjU2CisuLiBkYXRlOiA5MzcxCisuLiBub25jZTogSF9qdkVpCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSdW5uaW5nIFB5dGhvbiB3aXRoIHRoZSAtMyBvcHRpb24gbm93IGFsc28gd2FybnMgYWJvdXQgbm9uLWFzY2lpIGJ5dGVzCitsaXRlcmFscy4KKworLi4KKworLi4gYnBvOiAyMTY0MgorLi4gZGF0ZTogOTM3MAorLi4gbm9uY2U6IENqSXFhVQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworSWYgdGhlIGNvbmRpdGlvbmFsIGlmLWVsc2UgZXhwcmVzc2lvbiwgYWxsb3cgYW4gaW50ZWdlciB3cml0dGVuIHdpdGggbm8KK3NwYWNlIGJldHdlZW4gaXRzZWxmIGFuZCB0aGUgYGBlbHNlYGAga2V5d29yZCAoZS5nLiBgYFRydWUgaWYgNDJlbHNlCitGYWxzZWBgKSB0byBiZSB2YWxpZCBzeW50YXguCisKKy4uCisKKy4uIGJwbzogMjE1MjMKKy4uIGRhdGU6IDkzNjkKKy4uIG5vbmNlOiBmX1BQWU8KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBvdmVyLXBlc3NpbWlzdGljIGNvbXB1dGF0aW9uIG9mIHRoZSBzdGFjayBlZmZlY3Qgb2Ygc29tZSBvcGNvZGVzIGluIHRoZQorY29tcGlsZXIuICBUaGlzIGFsc28gZml4ZXMgYSBxdWFkcmF0aWMgY29tcGlsYXRpb24gdGltZSBpc3N1ZSBub3RpY2VhYmxlCit3aGVuIGNvbXBpbGluZyBjb2RlIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgImFuZCIgYW5kICJvciIgb3BlcmF0b3JzLgorCisuLgorCisuLiBicG86IDIxNjUyCisuLiBkYXRlOiA5MzY4CisuLiBub25jZToga0NOa2JFCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ByZXZlbnQgbWltZXR5cGVzLnR5cGVfbWFwIGZyb20gY29udGFpbmluZyB1bmljb2RlIGtleXMgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiAyMTcyOQorLi4gZGF0ZTogOTM2NworLi4gbm9uY2U6IG9hMmtENgorLi4gc2VjdGlvbjogTGlicmFyeQorCitVc2VkIHRoZSAid2l0aCIgc3RhdGVtZW50IGluIHRoZSBkYm0uZHVtYiBtb2R1bGUgdG8gZW5zdXJlIGZpbGVzIGNsb3NpbmcuCisKKy4uCisKKy4uIGJwbzogMjE2NzIKKy4uIGRhdGU6IDkzNjYKKy4uIG5vbmNlOiBpTVJOV00KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSBiZWhhdmlvciBvZiBudHBhdGguam9pbiBvbiBVTkMtc3R5bGUgcGF0aHMuCisKKy4uCisKKy4uIGJwbzogMTkxNDUKKy4uIGRhdGU6IDkzNjUKKy4uIG5vbmNlOiBjUnJLcFcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHRpbWVzIGFyZ3VtZW50IGZvciBpdGVydG9vbHMucmVwZWF0IG5vdyBoYW5kbGVzIG5lZ2F0aXZlIHZhbHVlcyB0aGUgc2FtZQord2F5IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhcyBpdCBkb2VzIGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiAyMTgzMgorLi4gZGF0ZTogOTM2NAorLi4gbm9uY2U6IFBCQTBVdQorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZXF1aXJlIG5hbWVkIHR1cGxlIGlucHV0cyB0byBiZSBleGFjdCBzdHJpbmdzLgorCisuLgorCisuLiBicG86IDgzNDMKKy4uIGRhdGU6IDkzNjMKKy4uIG5vbmNlOiAyS05uQ0gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTmFtZWQgZ3JvdXAgZXJyb3IgbWVzc2FnZXMgaW4gdGhlIHJlIG1vZHVsZSBkaWQgbm90IHNob3cgdGhlIG5hbWUgb2YgdGhlCitlcnJvbmVvdXMgZ3JvdXAuCisKKy4uCisKKy4uIGJwbzogMjE0OTEKKy4uIGRhdGU6IDkzNjIKKy4uIG5vbmNlOiBzdU5LWmYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU29ja2V0U2VydmVyOiBGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBjaGlsZCBwcm9jZXNzZXMgcmVhcGluZy4KKworLi4KKworLi4gYnBvOiAyMTYzNQorLi4gZGF0ZTogOTM2MQorLi4gbm9uY2U6IEVUM09KWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZGlmZmxpYiBTZXF1ZW5jZU1hdGNoZXIuZ2V0X21hdGNoaW5nX2Jsb2NrcygpIG1ldGhvZCBjYWNoZSBkaWRuJ3QgbWF0Y2gKK3RoZSBhY3R1YWwgcmVzdWx0LiAgVGhlIGZvcm1lciB3YXMgYSBsaXN0IG9mIHR1cGxlcyBhbmQgdGhlIGxhdHRlciB3YXMgYQorbGlzdCBvZiBuYW1lZCB0dXBsZXMuCisKKy4uCisKKy4uIGJwbzogMjE3MjIKKy4uIGRhdGU6IDkzNjAKKy4uIG5vbmNlOiBXVEh1UnkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGRpc3R1dGlscyAidXBsb2FkIiBjb21tYW5kIG5vdyBleGl0cyB3aXRoIGEgbm9uLXplcm8gcmV0dXJuIGNvZGUgd2hlbgordXBsb2FkaW5nIGZhaWxzLiAgUGF0Y2ggYnkgTWFydGluIERlbmdsZXIuCisKKy4uCisKKy4uIGJwbzogMjE3NjYKKy4uIGRhdGU6IDkzNTkKKy4uIG5vbmNlOiAweGtfeEMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJldmVudCBhIHNlY3VyaXR5IGhvbGUgaW4gQ0dJSFRUUFNlcnZlciBieSBVUkwgdW5xdW90aW5nIHBhdGhzIGJlZm9yZQorY2hlY2tpbmcgZm9yIGEgQ0dJIHNjcmlwdCBhdCB0aGF0IHBhdGguCisKKy4uCisKKy4uIGJwbzogMjEzMTAKKy4uIGRhdGU6IDkzNTgKKy4uIG5vbmNlOiAybWpCeUoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgcG9zc2libGUgcmVzb3VyY2UgbGVhayBpbiBmYWlsZWQgb3BlbigpLgorCisuLgorCisuLiBicG86IDIxMzA0CisuLiBkYXRlOiA5MzU3CisuLiBub25jZTogeFh5eVN6CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0JhY2twb3J0IHRoZSBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbiBoYXNobGliLnBia2RmMl9obWFjIGZyb20gUHl0aG9uIDMgcGVyCitQRVAgNDY2LgorCisuLgorCisuLiBicG86IDExNzA5CisuLiBkYXRlOiA5MzU2CisuLiBub25jZTogSmRPYnZMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0aGUgcHlkb2MuaGVscCBmdW5jdGlvbiB0byBub3QgZmFpbCB3aGVuIHN5cy5zdGRpbiBpcyBub3QgYSB2YWxpZCBmaWxlLgorCisuLgorCisuLiBicG86IDEzMjIzCisuLiBkYXRlOiA5MzU1CisuLiBub25jZTogOUF6RWJOCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBweWRvYy53cml0ZWRvYyBzbyB0aGF0IHRoZSBIVE1MIGRvY3VtZW50YXRpb24gZm9yIG1ldGhvZHMgdGhhdCB1c2UKKydzZWxmJyBpbiB0aGUgZXhhbXBsZSBjb2RlIGlzIGdlbmVyYXRlZCBjb3JyZWN0bHkuCisKKy4uCisKKy4uIGJwbzogMjE1NTIKKy4uIGRhdGU6IDkzNTQKKy4uIG5vbmNlOiB1Vnk0dE0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBvZiB0b28gbG9uZyBzdHJpbmcgbGVuZ3RocyBpbiB0aGUgdGtpbnRlcgorbW9kdWxlIG9uIDY0LWJpdCBwbGF0Zm9ybXMuCisKKy4uCisKKy4uIGJwbzogMTQzMTUKKy4uIGRhdGU6IDkzNTMKKy4uIG5vbmNlOiBZelp6UzgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHppcGZpbGUgbW9kdWxlIG5vdyBpZ25vcmVzIGV4dHJhIGZpZWxkcyBpbiB0aGUgY2VudHJhbCBkaXJlY3RvcnkgdGhhdAorYXJlIHRvbyBzaG9ydCB0byBiZSBwYXJzZWQgaW5zdGVhZCBvZiBsZXR0aW5nIGEgc3RydWN0LnVucGFjayBlcnJvciBidWJibGUKK3VwIGFzIHRoaXMgImJhZCBkYXRhIiBhcHBlYXJzIGluIG1hbnkgcmVhbCB3b3JsZCB6aXAgZmlsZXMgaW4gdGhlIHdpbGQgYW5kCitpcyBpZ25vcmVkIGJ5IG90aGVyIHppcCB0b29scy4KKworLi4KKworLi4gYnBvOiAyMTQwMgorLi4gZGF0ZTogOTM1MgorLi4gbm9uY2U6IEd1VnkxTAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUa2ludGVyLnR0ayBub3cgd29ya3Mgd2hlbiBkZWZhdWx0IHJvb3Qgd2luZG93IGlzIG5vdCBzZXQuCisKKy4uCisKKy4uIGJwbzogMTAyMDMKKy4uIGRhdGU6IDkzNTEKKy4uIG5vbmNlOiBnRVJ2VmsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc3FsaXRlMy5Sb3cgbm93IHRydWx5IHN1cHBvcnRzIHNlcXVlbmNlIHByb3RvY29sLiAgSW4gcGFydGljdWxyIGl0IHN1cHBvcnRzCityZXZlcnNlKCkgYW5kIG5lZ2F0aXZlIGluZGljZXMuICBPcmlnaW5hbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCisKKy4uCisKKy4uIGJwbzogODc0MworLi4gZGF0ZTogOTM1MAorLi4gbm9uY2U6IEk2XzJyMworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggaW50ZXJvcGVyYWJpbGl0eSBiZXR3ZWVuIHNldCBvYmplY3RzIGFuZCB0aGUgY29sbGVjdGlvbnMuU2V0KCkgYWJzdHJhY3QKK2Jhc2UgY2xhc3MuCisKKy4uCisKKy4uIGJwbzogMjE0ODEKKy4uIGRhdGU6IDkzNDkKKy4uIG5vbmNlOiBZRHJsZjcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQXJncGFyc2UgZXF1YWxpdHkgYW5kIGluZXF1YWxpdHkgdGVzdHMgbm93IHJldHVybiBOb3RJbXBsZW1lbnRlZCB3aGVuCitjb21wYXJpbmcgdG8gYW4gdW5rbm93biB0eXBlLgorCisuLgorCisuLiBicG86IDIxOTQwCisuLiBkYXRlOiA5MzQ4CisuLiBub25jZTogVmxJUno3CisuLiBzZWN0aW9uOiBJRExFCisKK0FkZCB1bml0dGVzdCBmb3IgV2lkZ2V0UmVkaXJlY3Rvci4gSW5pdGlhbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy4uCisKKy4uIGJwbzogMTg1OTIKKy4uIGRhdGU6IDkzNDcKKy4uIG5vbmNlOiBzTUctU1oKKy4uIHNlY3Rpb246IElETEUKKworQWRkIHVuaXR0ZXN0IGZvciBTZWFyY2hEaWFsb2dCYXNlLiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCisKKy4uCisKKy4uIGJwbzogMjE2OTQKKy4uIGRhdGU6IDkzNDYKKy4uIG5vbmNlOiAxb0xtUm8KKy4uIHNlY3Rpb246IElETEUKKworQWRkIHVuaXR0ZXN0IGZvciBQYXJlbk1hdGNoLiBQYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCisKKy4uCisKKy4uIGJwbzogMjE2ODYKKy4uIGRhdGU6IDkzNDUKKy4uIG5vbmNlOiBUQWtGQjAKKy4uIHNlY3Rpb246IElETEUKKworYWRkIHVuaXR0ZXN0IGZvciBIeXBlclBhcnNlci4gT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyLgorCisuLgorCisuLiBicG86IDEyMzg3CisuLiBkYXRlOiA5MzQ0CisuLiBub25jZTogWE83T3prCisuLiBzZWN0aW9uOiBJRExFCisKK0FkZCBtaXNzaW5nIHVwcGVyKGxvd2VyKWNhc2UgdmVyc2lvbnMgb2YgZGVmYXVsdCBXaW5kb3dzIGtleSBiaW5kaW5ncyBmb3IKK0lkbGUgc28gQ2FwcyBMb2NrIGRvZXMgbm90IGRpc2FibGUgdGhlbS4gUGF0Y2ggYnkgUm9nZXIgU2Vyd3kuCisKKy4uCisKKy4uIGJwbzogMjE2OTUKKy4uIGRhdGU6IDkzNDMKKy4uIG5vbmNlOiBnLXQwVG0KKy4uIHNlY3Rpb246IElETEUKKworQ2xvc2luZyBhIEZpbmQtaW4tZmlsZXMgb3V0cHV0IHdpbmRvdyB3aGlsZSB0aGUgc2VhcmNoIGlzIHN0aWxsIGluIHByb2dyZXNzCitubyBsb25nZXIgY2xvc2VzIElkbGUuCisKKy4uCisKKy4uIGJwbzogMTg5MTAKKy4uIGRhdGU6IDkzNDIKKy4uIG5vbmNlOiBrZThsTUsKKy4uIHNlY3Rpb246IElETEUKKworQWRkIHVuaXR0ZXN0IGZvciB0ZXh0Vmlldy4gUGF0Y2ggYnkgUGhpbCBXZWJzdGVyLgorCisuLgorCisuLiBicG86IDE4MjkyCisuLiBkYXRlOiA5MzQxCisuLiBub25jZToga3NfM3dtCisuLiBzZWN0aW9uOiBJRExFCisKK0FkZCB1bml0dGVzdCBmb3IgQXV0b0V4cGFuZC4gUGF0Y2ggYnkgU2FpaGFkaGF2IEhlYmxpa2FyLgorCisuLgorCisuLiBicG86IDE4NDA5CisuLiBkYXRlOiA5MzQwCisuLiBub25jZTogN2ZlLWFLCisuLiBzZWN0aW9uOiBJRExFCisKK0FkZCB1bml0dGVzdCBmb3IgQXV0b0NvbXBsZXRlLiBQYXRjaCBieSBQaGlsIFdlYnN0ZXIuCisKKy4uCisKKy4uIGJwbzogMjAxNTUKKy4uIGRhdGU6IDkzMzkKKy4uIG5vbmNlOiBucGh6UzMKKy4uIHNlY3Rpb246IFRlc3RzCisKK0NoYW5nZWQgSFRUUCBtZXRob2QgbmFtZXMgaW4gZmFpbGluZyB0ZXN0cyBpbiB0ZXN0X2h0dHBzZXJ2ZXJzIHNvIHRoYXQKK3BhY2tldCBmaWx0ZXJpbmcgc29mdHdhcmUgKHNwZWNpZmljYWxseSBXaW5kb3dzIEJhc2UgRmlsdGVyaW5nIEVuZ2luZSkgZG9lcworbm90IGludGVyZmVyZSB3aXRoIHRoZSB0cmFuc2FjdGlvbiBzZW1hbnRpY3MgZXhwZWN0ZWQgYnkgdGhlIHRlc3RzLgorCisuLgorCisuLiBicG86IDE5NDkzCisuLiBkYXRlOiA5MzM4CisuLiBub25jZTogU3diekxRCisuLiBzZWN0aW9uOiBUZXN0cworCitSZWZhY3RvcmVkIHRoZSBjdHlwZXMgdGVzdCBwYWNrYWdlIHRvIHNraXAgdGVzdHMgZXhwbGljaXRseSByYXRoZXIgdGhhbgorc2lsZW50bHkuCisKKy4uCisKKy4uIGJwbzogMTg0OTIKKy4uIGRhdGU6IDkzMzcKKy4uIG5vbmNlOiB5bFBSVTcKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FsbCByZXNvdXJjZXMgYXJlIG5vdyBhbGxvd2VkIHdoZW4gdGVzdHMgYXJlIG5vdCBydW4gYnkgcmVncnRlc3QucHkuCisKKy4uCisKKy4uIGJwbzogMjE2MDUKKy4uIGRhdGU6IDkzMzYKKy4uIG5vbmNlOiBxc0xWOGQKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZGVkIHRlc3RzIGZvciBUa2ludGVyIGltYWdlcy4KKworLi4KKworLi4gYnBvOiAyMTQ5MworLi4gZGF0ZTogOTMzNQorLi4gbm9uY2U6IE5xaFJzeQorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkZWQgdGVzdCBmb3IgbnRwYXRoLmV4cGFuZHVzZXIoKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLi4KKworLi4gYnBvOiAxOTkyNQorLi4gZGF0ZTogOTMzNAorLi4gbm9uY2U6IGRoTXgwOAorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkZWQgdGVzdHMgZm9yIHRoZSBzcHdkIG1vZHVsZS4gT3JpZ2luYWwgcGF0Y2ggYnkgVmFqcmFza3kgS29rLgorCisuLgorCisuLiBicG86IDEzMzU1CisuLiBkYXRlOiA5MzMzCisuLiBub25jZTogZ0NCeVhLCisuLiBzZWN0aW9uOiBUZXN0cworCityYW5kb20udHJpYW5ndWxhcigpIG5vIGxvbmdlciBmYWlscyB3aXRoIGEgWmVyb0RpdmlzaW9uRXJyb3Igd2hlbiBsb3cgZXF1YWxzCitoaWdoLgorCisuLgorCisuLiBicG86IDIxNTIyCisuLiBkYXRlOiA5MzMyCisuLiBub25jZTogYi1Wd0ZXCisuLiBzZWN0aW9uOiBUZXN0cworCitBZGRlZCBUa2ludGVyIHRlc3RzIGZvciBMaXN0Ym94Lml0ZW1jb25maWd1cmUoKSwKK1BhbmVkV2luZG93LnBhbmVjb25maWd1cmUoKSwgYW5kIE1lbnUuZW50cnljb25maWd1cmUoKS4KKworLi4KKworLi4gYnBvOiAyMDYzNQorLi4gZGF0ZTogOTMzMQorLi4gbm9uY2U6IG16V21vUworLi4gc2VjdGlvbjogVGVzdHMKKworQWRkZWQgdGVzdHMgZm9yIFRrIGdlb21ldHJ5IG1hbmFnZXJzLgorCisuLgorCisuLiBicG86IDIxODExCisuLiBkYXRlOiA5MzMwCisuLiBub25jZTogM19YeXItCisuLiBzZWN0aW9uOiBCdWlsZAorCitBbnRpY2lwYXRlZCBmaXhlcyB0byBzdXBwb3J0IE9TIFggdmVyc2lvbnMgPiAxMC45LgorCisuLgorCisuLiBicG86IDIxNjcxCisuLiBkYXRlOiA5MzI5CisuLiBub25jZTogc20taGhPCisuLiBzZWN0aW9uOiBXaW5kb3dzCisKK1RoZSBidW5kbGVkIHZlcnNpb24gb2YgT3BlblNTTCBoYXMgYmVlbiB1cGRhdGVkIHRvIDEuMC4xaC4gKFNlZSBhbHNvOgorQ1ZFLTIwMTQtMDIyNCkKZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy45LnJzdCBiL01pc2MvTkVXUy5kLzIuNy45LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWNiZmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43LjkucnN0CkBAIC0wLDAgKzEsNjUgQEAKKy4uIGJwbzogMjI5NTkKKy4uIGRhdGU6IDk0OTQKKy4uIG5vbmNlOiBGaW9WR3UKKy4uIHJlbGVhc2UgZGF0ZTogMjAxNC0xMi0xMAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmUgdGhlICpjaGVja19ob3N0bmFtZSogcGFyYW1ldGVyIG9mIGh0dHBsaWIuSFRUUFNDb25uZWN0aW9uLiBUaGUKKypjb250ZXh0KiBwYXJhbWV0ZXIgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4KKworLi4KKworLi4gYnBvOiAxNjA0MworLi4gZGF0ZTogOTQ5MworLi4gbm9uY2U6IFRHSUM3dAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYSBkZWZhdWx0IGxpbWl0IGZvciB0aGUgYW1vdW50IG9mIGRhdGEgeG1scnBjbGliLmd6aXBfZGVjb2RlIHdpbGwKK3JldHVybi4gVGhpcyByZXNvbHZlcyBDVkUtMjAxMy0xNzUzLgorCisuLgorCisuLiBicG86IDE2MDQyCisuLiBkYXRlOiA5NDkyCisuLiBub25jZTogN0kzRlB5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NWRS0yMDEzLTE3NTI6IHNtdHBsaWI6IExpbWl0IGFtb3VudCBvZiBkYXRhIHJlYWQgYnkgbGltaXRpbmcgdGhlIGNhbGwgdG8KK3JlYWRsaW5lKCkuICBPcmlnaW5hbCBwYXRjaCBieSBDaHJpc3RpYW4gSGVpbWVzLgorCisuLgorCisuLiBicG86IDE2MDQxCisuLiBkYXRlOiA5NDkxCisuLiBub25jZTogVHloZlZpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHBvcGxpYiwgbGltaXQgbWF4aW11bSBsaW5lIGxlbmd0aCByZWFkIGZyb20gdGhlIHNlcnZlciB0byBwcmV2ZW50CitDVkUtMjAxMy0xNzUyLgorCisuLgorCisuLiBicG86IDIyOTYwCisuLiBkYXRlOiA5NDkwCisuLiBub25jZTogSi1LaVozCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBhIGNvbnRleHQgYXJndW1lbnQgdG8geG1scnBjbGliLlNlcnZlclByb3h5LgorCisuLgorCisuLiBicG86IDIyOTM1CisuLiBkYXRlOiA5NDg5CisuLiBub25jZTogLXZZM2xjCisuLiBzZWN0aW9uOiBCdWlsZAorCitBbGxvdyB0aGUgc3NsIG1vZHVsZSB0byBiZSBjb21waWxlZCBpZiBvcGVuc3NsIGRvZXNuJ3Qgc3VwcG9ydCBTU0wgMy4KKworLi4KKworLi4gYnBvOiAxNzEyOAorLi4gZGF0ZTogOTQ4OAorLi4gbm9uY2U6IEpNZE9CUAorLi4gc2VjdGlvbjogQnVpbGQKKworVXNlIHByaXZhdGUgdmVyc2lvbiBvZiBPcGVuU1NMIGZvciAyLjcuOSBPUyBYIDEwLjUrIGluc3RhbGxlci4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy45cmMxLnJzdCBiL01pc2MvTkVXUy5kLzIuNy45cmMxLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjU4MTY1Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43LjlyYzEucnN0CkBAIC0wLDAgKzEsMTEyNCBAQAorLi4gYnBvOiAyMTk2MworLi4gZGF0ZTogOTQ4NworLi4gbm9uY2U6IGVVd0t4MQorLi4gcmVsZWFzZSBkYXRlOiAyMDE0LTExLTI1CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitiYWNrb3V0IGlzc3VlICMxODU2IHBhdGNoIChhdm9pZCBjcmFzaGVzIGFuZCBsb2NrdXBzIHdoZW4gZGFlbW9uIHRocmVhZHMgcnVuCit3aGlsZSB0aGUgaW50ZXJwcmV0ZXIgaXMgc2h1dHRpbmcgZG93bjsgaW5zdGVhZCwgdGhlc2UgdGhyZWFkcyBhcmUgbm93CitraWxsZWQgd2hlbiB0aGV5IHRyeSB0byB0YWtlIHRoZSBHSUwpLCBhcyBpdCBzZWVtcyB0byBicmVhayBzb21lIGV4aXN0aW5nCitjb2RlLgorCisuLgorCisuLiBicG86IDIyNjA0CisuLiBkYXRlOiA5NDg2CisuLiBub25jZTogeWlpLUl0CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYXNzZXJ0aW9uIGVycm9yIGluIGRlYnVnIG1vZGUgd2hlbiBkaXZpZGluZyBhIGNvbXBsZXggbnVtYmVyIGJ5CisobmFuKzBqKS4KKworLi4KKworLi4gYnBvOiAyMjQ3MAorLi4gZGF0ZTogOTQ4NQorLi4gbm9uY2U6IExjN1pQSworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4ZWQgaW50ZWdlciBvdmVyZmxvdyBpc3N1ZXMgaW4gImJhY2tzbGFzaHJlcGxhY2UiIGFuZCAieG1sY2hhcnJlZnJlcGxhY2UiCitlcnJvciBoYW5kbGVycy4KKworLi4KKworLi4gYnBvOiAyMjUyNgorLi4gZGF0ZTogOTQ4NAorLi4gbm9uY2U6IE9jOWxhcgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGl0ZXJhdGluZyB0aHJvdWdoIGZpbGVzIHdpdGggbGluZXMgbG9uZ2VyIHRoYW4gMl4zMSBieXRlcy4KKworLi4KKworLi4gYnBvOiAyMjUxOQorLi4gZGF0ZTogOTQ4MworLi4gbm9uY2U6IHpUbFFMeQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IG92ZXJmbG93IGNoZWNraW5nIGluIFB5U3RyaW5nX1JlcHIuCisKKy4uCisKKy4uIGJwbzogMjI1MTgKKy4uIGRhdGU6IDk0ODIKKy4uIG5vbmNlOiBDOVQ2ZWQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBpbnRlZ2VyIG92ZXJmbG93IGlzc3VlcyBpbiBsYXRpbi0xIGVuY29kaW5nLgorCisuLgorCisuLiBicG86IDIyMzc5CisuLiBkYXRlOiA5NDgxCisuLiBub25jZTogNF8zR2UtCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggZW1wdHkgZXhjZXB0aW9uIG1lc3NhZ2UgaW4gYSBUeXBlRXJyb3IgcmFpc2VkIGluIGBgc3RyLmpvaW5gYC4KKworLi4KKworLi4gYnBvOiAyMjIyMQorLi4gZGF0ZTogOTQ4MAorLi4gbm9uY2U6IHQwQkU4aAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworTm93IHRoZSBzb3VyY2UgZW5jb2RpbmcgZGVjbGFyYXRpb24gb24gdGhlIHNlY29uZCBsaW5lIGlzbid0IGVmZmVjdGl2ZSBpZgordGhlIGZpcnN0IGxpbmUgY29udGFpbnMgYW55dGhpbmcgZXhjZXB0IGEgY29tbWVudC4KKworLi4KKworLi4gYnBvOiAyMjAyMworLi4gZGF0ZTogOTQ3OQorLi4gbm9uY2U6IGlkNVhlaQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGBgJVNgYCwgYGAlUmBgIGFuZCBgYCVWYGAgZm9ybWF0cyBvZiA6YzpmdW5jOmBQeVVuaWNvZGVfRnJvbUZvcm1hdGAuCisKKy4uCisKKy4uIGJwbzogMjE1OTEKKy4uIGRhdGU6IDk0NzgKKy4uIG5vbmNlOiBoSlZZbGYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0NvcnJlY3RseSBoYW5kbGUgcXVhbGlmaWVkIGV4ZWMgc3RhdGVtZW50cyBpbiB0dXBsZSBmb3JtIGJ5IG1vdmluZworY29tcGF0aWJpbGl0eSBsYXllciBmcm9tIHJ1bi10aW1lIHRvIEFTVCB0cmFuc2Zvcm1hdGlvbi4KKworLi4KKworLi4gYnBvOiAyMjQxNworLi4gZGF0ZTogOTQ3NworLi4gbm9uY2U6IFRvNGI3VQorLi4gc2VjdGlvbjogTGlicmFyeQorCitWZXJpZnkgY2VydGlmaWNhdGVzIGJ5IGRlZmF1bHQgaW4gaHR0cGxpYiAoUEVQIDQ3NikuCisKKy4uCisKKy4uIGJwbzogMjI5MjcKKy4uIGRhdGU6IDk0NzYKKy4uIG5vbmNlOiBUS2FLT1AKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWxsb3cgdXJsbGliLnVybG9wZW4gdG8gdGFrZSBhICpjb250ZXh0KiBwYXJhbWV0ZXIgdG8gY29udHJvbCBTU0wgc2V0dGluZ3MKK2ZvciBIVFRQUyBjb25uZWN0aW9ucy4KKworLi4KKworLi4gYnBvOiAyMjkyMQorLi4gZGF0ZTogOTQ3NQorLi4gbm9uY2U6IGE0d3gxQworLi4gc2VjdGlvbjogTGlicmFyeQorCitBbGxvdyBTU0xDb250ZXh0IHRvIHRha2UgdGhlICpob3N0bmFtZSogcGFyYW1ldGVyIGV2ZW4gaWYgT3BlblNTTCBkb2Vzbid0CitzdXBwb3J0IFNOSS4KKworLi4KKworLi4gYnBvOiA5MDAzCisuLiBkYXRlOiA5NDc0CisuLiBub25jZTogVkNuY3N5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2h0dHBsaWIuSFRUUFNDb25uZWN0aW9uLCB1cmxsaWIyLkhUVFBTSGFuZGxlciBhbmQgdXJsbGliMi51cmxvcGVuIG5vdyB0YWtlCitvcHRpb25hbCBhcmd1bWVudHMgdG8gYWxsb3cgZm9yIHNlcnZlciBjZXJ0aWZpY2F0ZSBjaGVja2luZywgYXMgcmVjb21tZW5kZWQKK2luIHB1YmxpYyB1c2VzIG9mIEhUVFBTLiBUaGlzIGJhY2twb3J0IGlzIHBhcnQgb2YgUEVQIDQ2Ny4gKFNlZSBhbHNvOgorYnBvLTIyMzY2KQorCisuLgorCisuLiBicG86IDEyNzI4CisuLiBkYXRlOiA5NDczCisuLiBub25jZTogckhabVhPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0RpZmZlcmVudCBVbmljb2RlIGNoYXJhY3RlcnMgaGF2aW5nIHRoZSBzYW1lIHVwcGVyY2FzZSBidXQgZGlmZmVyZW50Citsb3dlcmNhc2UgYXJlIG5vdyBtYXRjaGVkIGluIGNhc2UtaW5zZW5zaXRpdmUgcmVndWxhciBleHByZXNzaW9ucy4KKworLi4KKworLi4gYnBvOiAyMjgyMQorLi4gZGF0ZTogOTQ3MgorLi4gbm9uY2U6IDMwY1EtVQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBmY250bCgpIHdpdGggaW50ZWdlciBhcmd1bWVudCBvbiA2NC1iaXQgYmlnLWVuZGlhbiBwbGF0Zm9ybXMuCisKKy4uCisKKy4uIGJwbzogMTcyOTMKKy4uIGRhdGU6IDk0NzEKKy4uIG5vbmNlOiBIazA2Yk8KKy4uIHNlY3Rpb246IExpYnJhcnkKKwordXVpZC5nZXRub2RlKCkgbm93IGRldGVybWluZXMgTUFDIGFkZHJlc3Mgb24gQUlYIHVzaW5nIG5ldHN0YXQuIEJhc2VkIG9uCitwYXRjaCBieSBBaXZhcnMgS2FsdsSBbnMuCisKKy4uCisKKy4uIGJwbzogMjI3NjkKKy4uIGRhdGU6IDk0NzAKKy4uIG5vbmNlOiBQdW5udlEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgdHRrLlRyZWV2aWV3LnRhZ19oYXMoKSB3aGVuIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiAyMjc4NworLi4gZGF0ZTogOTQ2OQorLi4gbm9uY2U6IFFJemJuaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBbGxvdyB0aGUga2V5ZmlsZSBhcmd1bWVudCBvZiBTU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbiB0byBiZSBOb25lLgorCisuLgorCisuLiBicG86IDIyNzc1CisuLiBkYXRlOiA5NDY4CisuLiBub25jZTogOVgtS0tBCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHVucGlja2xpbmcgb2YgQ29va2llLlNpbXBsZUNvb2tpZSB3aXRoIHByb3RvY29sIDIuIFBhdGNoIGJ5IFRpbQorR3JhaGFtLgorCisuLgorCisuLiBicG86IDIyNzc2CisuLiBkYXRlOiA5NDY3CisuLiBub25jZTogeE5jUnNlCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Jyb3VnaHQgZXhjbHVkZWQgY29kZSBpbnRvIHRoZSBzY29wZSBvZiBhIHRyeSBibG9jayBpbiBTeXNMb2dIYW5kbGVyLmVtaXQoKS4KKworLi4KKworLi4gYnBvOiAxNzM4MQorLi4gZGF0ZTogOTQ2NgorLi4gbm9uY2U6IElyY0M5SQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCByYW5nZXMgaGFuZGxpbmcgaW4gY2FzZS1pbnNlbnNpdGl2ZSByZWd1bGFyIGV4cHJlc3Npb25zLgorCisuLgorCisuLiBicG86IDE5MzI5CisuLiBkYXRlOiA5NDY1CisuLiBub25jZTogZjNvM3RyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK09wdGltaXplZCBjb21waWxpbmcgY2hhcnNldHMgaW4gcmVndWxhciBleHByZXNzaW9ucy4KKworLi4KKworLi4gYnBvOiAyMjQxMAorLi4gZGF0ZTogOTQ2NAorLi4gbm9uY2U6IDk5WUZkZAorLi4gc2VjdGlvbjogTGlicmFyeQorCitNb2R1bGUgbGV2ZWwgZnVuY3Rpb25zIGluIHRoZSByZSBtb2R1bGUgbm93IGNhY2hlIGNvbXBpbGVkIGxvY2FsZS1kZXBlbmRlbnQKK3JlZ3VsYXIgZXhwcmVzc2lvbnMgdGFraW5nIGludG8gYWNjb3VudCB0aGUgbG9jYWxlLgorCisuLgorCisuLiBicG86IDg4NzYKKy4uIGRhdGU6IDk0NjMKKy4uIG5vbmNlOiBBODNBdjQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlzdHV0aWxzIG5vdyBmYWxscyBiYWNrIHRvIGNvcHlpbmcgZmlsZXMgd2hlbiBoYXJkIGxpbmtpbmcgZG9lc24ndCB3b3JrLgorVGhpcyBhbGxvd3MgdXNlIHdpdGggc3BlY2lhbCBmaWxlc3lzdGVtcyBzdWNoIGFzIFZpcnR1YWxCb3ggc2hhcmVkIGZvbGRlcnMuCisKKy4uCisKKy4uIGJwbzogOTM1MQorLi4gZGF0ZTogOTQ2MgorLi4gbm9uY2U6IHU1VUktNgorLi4gc2VjdGlvbjogTGlicmFyeQorCitEZWZhdWx0cyBzZXQgd2l0aCBzZXRfZGVmYXVsdHMgb24gYW4gYXJncGFyc2Ugc3VicGFyc2VyIGFyZSBubyBsb25nZXIKK2lnbm9yZWQgd2hlbiBhbHNvIHNldCBvbiB0aGUgcGFyZW50IHBhcnNlci4KKworLi4KKworLi4gYnBvOiAyMDQyMQorLi4gZGF0ZTogOTQ2MQorLi4gbm9uY2U6IGlSMFMxcworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYSAudmVyc2lvbigpIG1ldGhvZCB0byBTU0wgc29ja2V0cyBleHBvc2luZyB0aGUgYWN0dWFsIHByb3RvY29sIHZlcnNpb24KK2luIHVzZS4KKworLi4KKworLi4gYnBvOiAyMjQzNQorLi4gZGF0ZTogOTQ2MAorLi4gbm9uY2U6IE1ybWVpbworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBmaWxlIGRlc2NyaXB0b3IgbGVhayB3aGVuIFNvY2tldFNlcnZlciBiaW5kIGZhaWxzLgorCisuLgorCisuLiBicG86IDEzNjY0CisuLiBkYXRlOiA5NDU5CisuLiBub25jZTogdGpWczlvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0d6aXBGaWxlIG5vdyBzdXBwb3J0cyBub24tYXNjaWkgVW5pY29kZSBmaWxlbmFtZXMuCisKKy4uCisKKy4uIGJwbzogMTMwOTYKKy4uIGRhdGU6IDk0NTgKKy4uIG5vbmNlOiByc2FpbEIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgc2VnZmF1bHQgaW4gQ1R5cGVzIFBPSU5URVIgaGFuZGxpbmcgb2YgbGFyZ2UgdmFsdWVzLgorCisuLgorCisuLiBicG86IDExNjk0CisuLiBkYXRlOiA5NDU3CisuLiBub25jZTogSnVEcmNoCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JhaXNlIENvbnZlcnNpb25FcnJvciBpbiB4ZHJsaWIgYXMgZG9jdW1lbnRlZC4gIFBhdGNoIGJ5IEZpbGlwIEdydXN6Y3p5xYRza2kKK2FuZCBDbGF1ZGl1IFBvcGEuCisKKy4uCisKKy4uIGJwbzogMTY4NgorLi4gZGF0ZTogOTQ1NgorLi4gbm9uY2U6IC13OXpFVQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc3RyaW5nLlRlbXBsYXRlIHdoZW4gb3ZlcnJpZGluZyB0aGUgcGF0dGVybiBhdHRyaWJ1dGUuCisKKy4uCisKKy4uIGJwbzogMTE4NjYKKy4uIGRhdGU6IDk0NTUKKy4uIG5vbmNlOiB4cnZiSUMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRWxpbWluYXRlZCByYWNlIGNvbmRpdGlvbiBpbiB0aGUgY29tcHV0YXRpb24gb2YgbmFtZXMgZm9yIG5ldyB0aHJlYWRzLgorCisuLgorCisuLiBicG86IDIyMjE5CisuLiBkYXRlOiA5NDU0CisuLiBub25jZTogbDlFbmg5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSB6aXBmaWxlIG1vZHVsZSBDTEkgbm93IGFkZHMgZW50cmllcyBmb3IgZGlyZWN0b3JpZXMgKGluY2x1ZGluZyBlbXB0eQorZGlyZWN0b3JpZXMpIGluIFpJUCBmaWxlLgorCisuLgorCisuLiBicG86IDIyNDQ5CisuLiBkYXRlOiA5NDUzCisuLiBub25jZTogbkZXX0ZsCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHRoZSBzc2wuU1NMQ29udGV4dC5sb2FkX2RlZmF1bHRfY2VydHMsIGNvbnN1bHQgdGhlIGVudmlyb25tZW50YWwKK3ZhcmlhYmxlcyBTU0xfQ0VSVF9ESVIgYW5kIFNTTF9DRVJUX0ZJTEUgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiA4NDczCisuLiBkYXRlOiA5NDUyCisuLiBub25jZTogUWNmRGJhCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2RvY3Rlc3QudGVzdGZpbGUgbm93IHVzZXMgdW5pdmVyc2FsIG5ld2xpbmUgbW9kZSB0byByZWFkIHRoZSB0ZXN0IGZpbGUuCisKKy4uCisKKy4uIGJwbzogMjAwNzYKKy4uIGRhdGU6IDk0NTEKKy4uIG5vbmNlOiAtN09JVkIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgbm9uIGRlcml2ZWQgVVRGLTggYWxpYXNlcyB0byBsb2NhbGUgYWxpYXNlcyB0YWJsZS4KKworLi4KKworLi4gYnBvOiAyMDA3OQorLi4gZGF0ZTogOTQ1MAorLi4gbm9uY2U6IHFNOTQ5TworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBsb2NhbGVzIHN1cHBvcnRlZCBpbiBnbGliYyAyLjE4IHRvIGxvY2FsZSBhbGlhcyB0YWJsZS4KKworLi4KKworLi4gYnBvOiAyMjUzMAorLi4gZGF0ZTogOTQ0OQorLi4gbm9uY2U6IDRFY0s0eAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBbGxvdyB0aGUgYGBncm91cCgpYGAgbWV0aG9kIG9mIHJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaCBvYmplY3RzIHRvIHRha2UgYQorYGBsb25nYGAgYXMgYW4gaW5kZXguCisKKy4uCisKKy4uIGJwbzogMjI1MTcKKy4uIGRhdGU6IDk0NDgKKy4uIG5vbmNlOiBxVDYtYUIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV2hlbiBhbiBpby5CdWZmZXJlZFJXUGFpciBvYmplY3QgaXMgZGVhbGxvY2F0ZWQsIGNsZWFyIGl0cyB3ZWFrcmVmcy4KKworLi4KKworLi4gYnBvOiAxMDUxMAorLi4gZGF0ZTogOTQ0NworLi4gbm9uY2U6IE4tbnRjRAorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMgcmVnaXN0ZXIgYW5kIHVwbG9hZCBtZXRob2RzIG5vdyB1c2UgSFRNTCBzdGFuZGFyZHMgY29tcGxpYW50IENSTEYKK2xpbmUgZW5kaW5ncy4KKworLi4KKworLi4gYnBvOiA5ODUwCisuLiBkYXRlOiA5NDQ2CisuLiBub25jZTogRC1VblZpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIG1hY3BhdGguam9pbigpIGZvciBlbXB0eSBmaXJzdCBjb21wb25lbnQuICBQYXRjaCBieSBPbGVnIE9zaG15YW4uCisKKy4uCisKKy4uIGJwbzogMjA5MTIKKy4uIGRhdGU6IDk0NDUKKy4uIG5vbmNlOiBjQXEzbVoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTm93IGRpcmVjdG9yaWVzIGFkZGVkIHRvIFpJUCBmaWxlIGhhdmUgY29ycmVjdCBVbml4IGFuZCBNUy1ET1MgZGlyZWN0b3J5CithdHRyaWJ1dGVzLgorCisuLgorCisuLiBicG86IDIxODY2CisuLiBkYXRlOiA5NDQ0CisuLiBub25jZTogaFNjNHdNCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ppcEZpbGUuY2xvc2UoKSBubyBsb25nZXIgd3JpdGVzIFpJUDY0IGNlbnRyYWwgZGlyZWN0b3J5IHJlY29yZHMgaWYKK2FsbG93WmlwNjQgaXMgZmFsc2UuCisKKy4uCisKKy4uIGJwbzogMjI0MTUKKy4uIGRhdGU6IDk0NDMKKy4uIG5vbmNlOiBWS0ZnaFYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgZGVidWdnaW5nIG91dHB1dCBvZiB0aGUgR1JPVVBSRUZfRVhJU1RTIG9wY29kZSBpbiB0aGUgcmUgbW9kdWxlLgorCisuLgorCisuLiBicG86IDIyNDIzCisuLiBkYXRlOiA5NDQyCisuLiBub25jZTogUnRiNG9UCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VuaGFuZGxlZCBleGNlcHRpb24gaW4gdGhyZWFkIG5vIGxvbmdlciBjYXVzZXMgdW5oYW5kbGVkIEF0dHJpYnV0ZUVycm9yIHdoZW4KK3N5cy5zdGRlcnIgaXMgTm9uZS4KKworLi4KKworLi4gYnBvOiAyMjQxOQorLi4gZGF0ZTogOTQ0MQorLi4gbm9uY2U6IEZxSDRhQworLi4gc2VjdGlvbjogTGlicmFyeQorCitMaW1pdCB0aGUgbGVuZ3RoIG9mIGluY29taW5nIEhUVFAgcmVxdWVzdCBpbiB3c2dpcmVmIHNlcnZlciB0byA2NTUzNiBieXRlcworYW5kIHNlbmQgYSA0MTQgZXJyb3IgY29kZSBmb3IgaGlnaGVyIGxlbmd0aHMuIFBhdGNoIGNvbnRyaWJ1dGVkIGJ5IERldmluCitDb29rLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDk0NDAKKy4uIG5vbmNlOiB5N3IzTzIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTGF4IGNvb2tpZSBwYXJzaW5nIGluIGh0dHAuY29va2llcyBjb3VsZCBiZSBhIHNlY3VyaXR5IGlzc3VlIHdoZW4gY29tYmluZWQKK3dpdGggbm9uLXN0YW5kYXJkIGNvb2tpZSBoYW5kbGluZyBpbiBzb21lIFdlYiBicm93c2Vycy4gIFJlcG9ydGVkIGJ5IFNlcmdleQorQm9icm92LgorCisuLgorCisuLiBicG86IDIxMTQ3CisuLiBkYXRlOiA5NDM5CisuLiBub25jZTogdzlERTE3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3NxbGl0ZTMgbm93IHJhaXNlcyBhbiBleGNlcHRpb24gaWYgdGhlIHJlcXVlc3QgY29udGFpbnMgYSBudWxsIGNoYXJhY3RlcgoraW5zdGVhZCBvZiB0cnVuY2F0aW5nIGl0LiAgQmFzZWQgb24gcGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCisKKy4uCisKKy4uIGJwbzogMjE5NTEKKy4uIGRhdGU6IDk0MzgKKy4uIG5vbmNlOiAzdlM0TEsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYSBjcmFzaCBpbiBUa2ludGVyIG9uIEFJWCB3aGVuIGNhbGxlZCBUY2wgY29tbWFuZCB3aXRoIGVtcHR5IHN0cmluZyBvcgordHVwbGUgYXJndW1lbnQuCisKKy4uCisKKy4uIGJwbzogMjE5NTEKKy4uIGRhdGU6IDk0MzcKKy4uIG5vbmNlOiBfQ0NDNHYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGtpbnRlciBub3cgbW9zdCBsaWtlbHkgcmFpc2VzIE1lbW9yeUVycm9yIGluc3RlYWQgb2YgY3Jhc2ggaWYgdGhlIG1lbW9yeQorYWxsb2NhdGlvbiBmYWlscy4KKworLi4KKworLi4gYnBvOiAyMjIyNgorLi4gZGF0ZTogOTQzNgorLi4gbm9uY2U6IFQxWk1QWQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXJzdCBsZXR0ZXIgbm8gbG9uZ2VyIGlzIHN0cmlwcGVkIGZyb20gdGhlICJzdGF0dXMiIGtleSBpbiB0aGUgcmVzdWx0IG9mCitUcmVldmlldy5oZWFkaW5nKCkuCisKKy4uCisKKy4uIGJwbzogMjIwNTEKKy4uIGRhdGU6IDk0MzUKKy4uIG5vbmNlOiBjVWpGcUwKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordHVydGxlZGVtbyBubyBsb25nZXIgcmVsb2FkcyBleGFtcGxlcyB0byByZS1ydW4gdGhlbS4gSW5pdGlhbGl6YXRpb24gb2YKK3ZhcmlhYmxlcyBhbmQgZ3VpIHNldHVwIHNob3VsZCBiZSBkb25lIGluIG1haW4oKSwgd2hpY2ggaXMgY2FsbGVkIGVhY2ggdGltZQorYSBkZW1vIGlzIHJ1biwgYnV0IG5vdCBvbiBpbXBvcnQuCisKKy4uCisKKy4uIGJwbzogMjE1OTcKKy4uIGRhdGU6IDk0MzQKKy4uIG5vbmNlOiBhUFRDV0oKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHNlcGFyYXRvciBiZXR3ZWVuIHRoZSB0dXJ0bGVkZW1vIHRleHQgcGFuZSBhbmQgdGhlIGRyYXdpbmcgY2FudmFzIGNhbgorbm93IGJlIGdyYWJiZWQgYW5kIGRyYWdnZWQgd2l0aCBhIG1vdXNlLiAgVGhlIGNvZGUgdGV4dCBwYW5lIGNhbiBiZSB3aWRlbmVkCit0byBlYXNpbHkgdmlldyBvciBjb3B5IHRoZSBmdWxsIHdpZHRoIG9mIHRoZSB0ZXh0LiAgVGhlIGNhbnZhcyBjYW4gYmUKK3dpZGVuZWQgb24gc21hbGwgc2NyZWVucy4gIE9yaWdpbmFsIHBhdGNoZXMgYnkgSmFuIEthbmlzIGFuZCBMaXRhIENoby4KKworLi4KKworLi4gYnBvOiAxODEzMgorLi4gZGF0ZTogOTQzMworLi4gbm9uY2U6IDJSMm53TQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUdXJ0bGVkZW1vIGJ1dHRvbnMgbm8gbG9uZ2VyIGRpc2FwcGVhciB3aGVuIHRoZSB3aW5kb3cgaXMgc2hydW5rLiAgT3JpZ2luYWwKK3BhdGNoZXMgYnkgSmFuIEthbmlzIGFuZCBMaXRhIENoby4KKworLi4KKworLi4gYnBvOiAyMjMxMgorLi4gZGF0ZTogOTQzMgorLi4gbm9uY2U6IFdQMTNvOAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggbnRwYXRoLnNwbGl0ZHJpdmUgSW5kZXhFcnJvci4KKworLi4KKworLi4gYnBvOiAyMjIxNgorLi4gZGF0ZTogOTQzMQorLi4gbm9uY2U6IENtYWx1NgorLi4gc2VjdGlvbjogTGlicmFyeQorCitzbXRwbGliIG5vdyByZXNldHMgaXRzIHN0YXRlIG1vcmUgY29tcGxldGVseSBhZnRlciBhIHF1aXQuICBUaGUgbW9zdCBvYnZpb3VzCitjb25zZXF1ZW5jZSBvZiB0aGUgcHJldmlvdXMgYmVoYXZpb3Igd2FzIGEgU1RBUlRUTFMgZmFpbHVyZSBkdXJpbmcgYQorY29ubmVjdC9zdGFydHRscy9xdWl0L2Nvbm5lY3Qvc3RhcnR0bHMgc2VxdWVuY2UuCisKKy4uCisKKy4uIGJwbzogMjEzMDUKKy4uIGRhdGU6IDk0MzAKKy4uIG5vbmNlOiBGbDhJNUIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworb3MudXJhbmRvbSBub3cgY2FjaGVzIGEgZmQgdG8gL2Rldi91cmFuZG9tLiBUaGlzIGlzIGEgUEVQIDQ2NiBiYWNrcG9ydCBmcm9tCitQeXRob24gMy4KKworLi4KKworLi4gYnBvOiAyMTMwNworLi4gZGF0ZTogOTQyOQorLi4gbm9uY2U6IFU3aWlxWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBcyBwYXJ0IG9mIFBFUCA0NjYsIGJhY2twb3J0IGhhc2hsaWIuYWxnb3JpdGhtc19ndWFyYW50ZWVkIGFuZAoraGFzaGxpYi5hbGdvcml0aG1zX2F2YWlsYWJsZS4KKworLi4KKworLi4gYnBvOiAyMjI1OQorLi4gZGF0ZTogOTQyOAorLi4gbm9uY2U6IDZ2OXdMbQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc2VnZmF1bHQgd2hlbiBhdHRlbXB0aW5nIHRvIGZvcGVuIGEgZmlsZSBkZXNjcmlwdG9yIGNvcnJlc3BvbmRpbmcgdG8gYQorZGlyZWN0b3J5LgorCisuLgorCisuLiBicG86IDIyMjM2CisuLiBkYXRlOiA5NDI3CisuLiBub25jZTogMXV0WGtnCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIFRraW50ZXIgaW1hZ2VzIGNvcHlpbmcgb3BlcmF0aW9ucyBpbiBOb0RlZmF1bHRSb290IG1vZGUuCisKKy4uCisKKy4uIGJwbzogMjIxOTEKKy4uIGRhdGU6IDk0MjYKKy4uIG5vbmNlOiAxSy1DbUQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgd2FybmluZ3MuX19hbGxfXy4KKworLi4KKworLi4gYnBvOiAyMTMwOAorLi4gZGF0ZTogOTQyNQorLi4gbm9uY2U6IF96OWI4aQorLi4gc2VjdGlvbjogTGlicmFyeQorCitCYWNrcG9ydCBudW1lcm91cyBmZWF0dXJlcyBmcm9tIFB5dGhvbidzIHNzbCBtb2R1bGUuIFRoaXMgaXMgcGFydCBvZiBQRVAKKzQ2Ni4KKworLi4KKworLi4gYnBvOiAxNTY5NgorLi4gZGF0ZTogOTQyNAorLi4gbm9uY2U6IFBUd1hZSgorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYSBfX3NpemVvZl9fIGltcGxlbWVudGF0aW9uIGZvciBtbWFwIG9iamVjdHMgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiA4Nzk3CisuLiBkYXRlOiA5NDIzCisuLiBub25jZTogYUpjSVB1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JhaXNlIEhUVFBFcnJvciBvbiBmYWlsZWQgQmFzaWMgQXV0aGVudGljYXRpb24gaW1tZWRpYXRlbHkuIEluaXRpYWwgcGF0Y2ggYnkKK1NhbSBCdWxsLgorCisuLgorCisuLiBicG86IDIyMDY4CisuLiBkYXRlOiA5NDIyCisuLiBub25jZTogd0NkYVcwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0F2b2lkZWQgcmVmZXJlbmNlIGxvb3BzIHdpdGggVmFyaWFibGVzIGFuZCBGb250cyBpbiBUa2ludGVyLgorCisuLgorCisuLiBicG86IDIxNDQ4CisuLiBkYXRlOiA5NDIxCisuLiBub25jZTogVEhKU1lCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NoYW5nZWQgRmVlZFBhcnNlciBmZWVkKCkgdG8gYXZvaWQgTyhOKioyKSBiZWhhdmlvciB3aGVuIHBhcnNpbmcgbG9uZyBsaW5lLgorT3JpZ2luYWwgcGF0Y2ggYnkgUmF5bW9uZCBIZXR0aW5nZXIuCisKKy4uCisKKy4uIGJwbzogMTc5MjMKKy4uIGRhdGU6IDk0MjAKKy4uIG5vbmNlOiBZSV9RakcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZ2xvYigpIHBhdHRlcm5zIGVuZGluZyB3aXRoIGEgc2xhc2ggbm8gbG9uZ2VyIG1hdGNoIG5vbi1kaXJzIG9uIEFJWC4gIEJhc2VkCitvbiBwYXRjaCBieSBEZWxoYWxsdC4KKworLi4KKworLi4gYnBvOiAyMTk3NQorLi4gZGF0ZTogOTQxOQorLi4gbm9uY2U6IE1JOG50TworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBjcmFzaCB3aGVuIHVzaW5nIHVuaW5pdGlhbGl6ZWQgc3FsaXRlMy5Sb3cgKGluIHBhcnRpY3VsYXIgd2hlbgordW5waWNrbGluZyBwaWNrbGVkIHNxbGl0ZTMuUm93KS4gIHNxbGl0ZTMuUm93IGlzIG5vdyBpbml0aWFsaXplZCBpbiB0aGUKK19fbmV3X18oKSBtZXRob2QuCisKKy4uCisKKy4uIGJwbzogMTYwMzcKKy4uIGRhdGU6IDk0MTgKKy4uIG5vbmNlOiBxNkE5LVcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSFRUUE1lc3NhZ2UucmVhZGhlYWRlcnMoKSByYWlzZXMgYW4gSFRUUEV4Y2VwdGlvbiB3aGVuIG1vcmUgdGhhbiAxMDAgaGVhZGVycworYXJlIHJlYWQuIFBhdGNoIGJ5IEp5cmtpIFB1bGxpYWluZW4gYW5kIERhbmllbCBFcmlrc3Nvbi4KKworLi4KKworLi4gYnBvOiAyMTU4MAorLi4gZGF0ZTogOTQxNworLi4gbm9uY2U6IEJVSWY3bworLi4gc2VjdGlvbjogTGlicmFyeQorCitOb3cgVGtpbnRlciBjb3JyZWN0bHkgaGFuZGxlcyBiaW5hcnkgImRhdGEiIGFuZCAibWFza2RhdGEiIGNvbmZpZ3VyZSBvcHRpb25zCitvZiB0a2ludGVyLlBob3RvSW1hZ2UuCisKKy4uCisKKy4uIGJwbzogMTk2MTIKKy4uIGRhdGU6IDk0MTYKKy4uIG5vbmNlOiB4dlU2QUgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc3VicHJvY2Vzcy5jb21tdW5pY2F0ZSgpIG5vdyBhbHNvIGlnbm9yZXMgRUlOVkFMIHdoZW4gdXNpbmcgYXQgbGVhc3QgdHdvCitwaXBlcy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA5NDE1CisuLiBub25jZTogYURsVDNqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCByZXByKF9zb2NrZXQuc29ja2V0KSBvbiBXaW5kb3dzIDY0LWJpdDogZG9uJ3QgZmFpbCB3aXRoIE92ZXJmbG93RXJyb3Igb24KK2Nsb3NlZCBzb2NrZXQuCisKKy4uCisKKy4uIGJwbzogMTYxMzMKKy4uIGRhdGU6IDk0MTQKKy4uIG5vbmNlOiA2Y0tXZDIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGFzeW5jaGF0LmFzeW5jX2NoYXQuaGFuZGxlX3JlYWQoKSBtZXRob2Qgbm93IGlnbm9yZXMgc29ja2V0LmVycm9yKCkKK2V4Y2VwdGlvbnMgd2l0aCBibG9ja2luZyBJL08gZXJyb3JzOiBFQUdBSU4sIEVBTFJFQURZLCBFSU5QUk9HUkVTUywgb3IKK0VXT1VMREJMT0NLLgorCisuLgorCisuLiBicG86IDIxOTkwCisuLiBkYXRlOiA5NDEzCisuLiBub25jZTogX2x1anBmCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NsZWFuLXVwIHVubmVjZXNzYXJ5IGFuZCBzbG93IGlubmVyIGNsYXNzIGRlZmluaXRpb24gaW4gc2F4dXRpbHMKKyhDb250cmlidXRlZCBieSBBbGV4IEdheW5vcikuCisKKy4uCisKKy4uIGJwbzogMTczMDEzNgorLi4gZGF0ZTogOTQxMgorLi4gbm9uY2U6IHNxV3AyTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIGNvbXBhcmlzb24gYmV0d2VlbiBhIHRrRm9udC5Gb250IGFuZCBhbiBvYmplY3Qgb2YgYW5vdGhlciBraW5kLgorCisuLgorCisuLiBicG86IDE5ODg0CisuLiBkYXRlOiA5NDExCisuLiBub25jZTogNmNibzBWCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3JlYWRsaW5lOiBEaXNhYmxlIHRoZSBtZXRhIG1vZGlmaWVyIGtleSBpZiBzdGRvdXQgaXMgbm90IGEgdGVybWluYWwgdG8gbm90Cit3cml0ZSB0aGUgQU5TSSBzZXF1ZW5jZSAiXDAzM1sxMDM0aCIgaW50byBzdGRvdXQuIFRoaXMgc2VxdWVuY2UgaXMgdXNlZCBvbgorc29tZSB0ZXJtaW5hbCAoZXg6IFRFUk09eHRlcm0tMjU2Y29sb3IiKSB0byBlbmFibGUgc3VwcG9ydCBvZiA4IGJpdAorY2hhcmFjdGVycy4KKworLi4KKworLi4gYnBvOiAyMjAxNworLi4gZGF0ZTogOTQxMAorLi4gbm9uY2U6IEJvakdncgorLi4gc2VjdGlvbjogTGlicmFyeQorCitDb3JyZWN0IHJlZmVyZW5jZSBjb3VudGluZyBlcnJvciBpbiB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIF93YXJuaW5ncworbW9kdWxlLgorCisuLgorCisuLiBicG86IDIxODY4CisuLiBkYXRlOiA5NDA5CisuLiBub25jZTogcV9aSXZGCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ByZXZlbnQgdHVydGxlIGNyYXNoIHdoZW4gdW5kbyBidWZmZXIgc2V0IHRvIGEgdmFsdWUgbGVzcyB0aGFuIG9uZS4KKworLi4KKworLi4gYnBvOiAyMTE1MQorLi4gZGF0ZTogOTQwOAorLi4gbm9uY2U6IFQ3dGI5UQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIHNlZ2ZhdWx0IGluIHRoZSBfd2lucmVnIG1vZHVsZSB3aGVuIGBgTm9uZWBgIGlzIHBhc3NlZCBhcyBhCitgYFJFR19CSU5BUllgYCB2YWx1ZSB0byBTZXRWYWx1ZUV4LiAgUGF0Y2ggYnkgSm9obiBFaHJlc21hbi4KKworLi4KKworLi4gYnBvOiAyMTA5MAorLi4gZGF0ZTogOTQwNworLi4gbm9uY2U6IDIwT29pZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitpby5GaWxlSU8ucmVhZGFsbCgpIGRvZXMgbm90IGlnbm9yZSBJL08gZXJyb3JzIGFueW1vcmUuIEJlZm9yZSwgaXQgaWdub3JlZAorSS9PIGVycm9ycyBpZiBhdCBsZWFzdCB0aGUgZmlyc3QgQyBjYWxsIHJlYWQoKSBzdWNjZWVkLgorCisuLgorCisuLiBicG86IDE5ODcwCisuLiBkYXRlOiA5NDA2CisuLiBub25jZTogM1FCdm1qCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Jhc2VDb29raWUgbm93IHBhcnNlcyAnc2VjdXJlJyBhbmQgJ2h0dHBvbmx5JyBmbGFncy4gQmFja3BvcnQgb2YgaXNzdWUKKyMxNjYxMS4KKworLi4KKworLi4gYnBvOiAyMTkyMworLi4gZGF0ZTogOTQwNQorLi4gbm9uY2U6IGhYbm9aYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitQcmV2ZW50IEF0dHJpYnV0ZUVycm9yIGluIGRpc3R1dGlscy5zeXNjb25maWcuY3VzdG9taXplX2NvbXBpbGVyIGR1ZSB0bworcG9zc2libGUgdW5pbml0aWFsaXplZCBfY29uZmlnX3ZhcnMuCisKKy4uCisKKy4uIGJwbzogMjEzMjMKKy4uIGRhdGU6IDk0MDQKKy4uIG5vbmNlOiB5UmYxdjYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IENHSUhUVFBTZXJ2ZXIgdG8gYWdhaW4gaGFuZGxlIHNjcmlwdHMgaW4gQ0dJIHN1YmRpcmVjdG9yaWVzLCBicm9rZW4gYnkKK3RoZSBmaXggZm9yIHNlY3VyaXR5IGlzc3VlICMxOTQzNS4gIFBhdGNoIGJ5IFphY2ggQnlybmUuCisKKy4uCisKKy4uIGJwbzogMjIxOTkKKy4uIGRhdGU6IDk0MDMKKy4uIG5vbmNlOiBTSXdLZHMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBnZXRfbWFrZWZpbGVfZmlsZW5hbWUoKSBhdmFpbGFibGUgaW4gTGliL3N5c2NvbmZpZy5weSBmb3IgMi43IHRvIG1hdGNoCitvdGhlciB2ZXJzaW9ucyBvZiBzeXNjb25maWcuCisKKy4uCisKKy4uIGJwbzogMzA2OAorLi4gZGF0ZTogOTQwMgorLi4gbm9uY2U6IFRZalhUQQorLi4gc2VjdGlvbjogSURMRQorCitBZGQgSWRsZSBleHRlbnNpb24gY29uZmlndXJhdGlvbiBkaWFsb2cgdG8gT3B0aW9ucyBtZW51LiBDaGFuZ2VzIGFyZSB3cml0dGVuCit0byBIT01FLy5pZGxlcmMvY29uZmlnLWV4dGVuc2lvbnMuY2ZnLiBPcmlnaW5hbCBwYXRjaCBieSBUYWwgRWluYXQuCisKKy4uCisKKy4uIGJwbzogMTYyMzMKKy4uIGRhdGU6IDk0MDEKKy4uIG5vbmNlOiBzT2FkTm8KKy4uIHNlY3Rpb246IElETEUKKworQSBtb2R1bGUgYnJvd3NlciAoRmlsZSA6IENsYXNzIEJyb3dzZXIsIEFsdCtDKSByZXF1aXJlcyBhbiBlZGl0b3Igd2luZG93Cit3aXRoIGEgZmlsZW5hbWUuICBXaGVuIENsYXNzIEJyb3dzZXIgaXMgcmVxdWVzdGVkIG90aGVyd2lzZSwgZnJvbSBhIHNoZWxsLAorb3V0cHV0IHdpbmRvdywgb3IgJ1VudGl0bGVkJyBlZGl0b3IsIElkbGUgbm8gbG9uZ2VyIGRpc3BsYXlzIGFuIGVycm9yIGJveC4KK0l0IG5vdyBwb3BzIHVwIGFuIE9wZW4gTW9kdWxlIGJveCAoQWx0K00pLiBJZiBhIHZhbGlkIG5hbWUgaXMgZW50ZXJlZCBhbmQgYQorbW9kdWxlIGlzIG9wZW5lZCwgYSBjb3JyZXNwb25kaW5nIGJyb3dzZXIgaXMgYWxzbyBvcGVuZWQuCisKKy4uCisKKy4uIGJwbzogNDgzMgorLi4gZGF0ZTogOTQwMAorLi4gbm9uY2U6IEdSS2k5TQorLi4gc2VjdGlvbjogSURMRQorCitTYXZlIEFzIHRvIHR5cGUgUHl0aG9uIGZpbGVzIGF1dG9tYXRpY2FsbHkgYWRkcyAucHkgdG8gdGhlIG5hbWUgeW91IGVudGVyCisoZXZlbiBpZiB5b3VyIHN5c3RlbSBkb2VzIG5vdCBkaXNwbGF5IGl0KS4gIFNvbWUgc3lzdGVtcyBhdXRvbWF0aWNhbGx5IGFkZAorLnR4dCB3aGVuIHR5cGUgaXMgVGV4dCBmaWxlcy4KKworLi4KKworLi4gYnBvOiAyMTk4NgorLi4gZGF0ZTogOTM5OQorLi4gbm9uY2U6IDA0R1V2MgorLi4gc2VjdGlvbjogSURMRQorCitDb2RlIG9iamVjdHMgYXJlIG5vdCBub3JtYWxseSBwaWNrbGVkIGJ5IHRoZSBwaWNrbGUgbW9kdWxlLiBUbyBtYXRjaCB0aGlzLAordGhleSBhcmUgbm8gbG9uZ2VyIHBpY2tsZWQgd2hlbiBydW5uaW5nIHVuZGVyIElkbGUuCisKKy4uCisKKy4uIGJwbzogMjIyMjEKKy4uIGRhdGU6IDkzOTgKKy4uIG5vbmNlOiBkODdTdUEKKy4uIHNlY3Rpb246IElETEUKKworSURMRSBub3cgaWdub3JlcyB0aGUgc291cmNlIGVuY29kaW5nIGRlY2xhcmF0aW9uIG9uIHRoZSBzZWNvbmQgbGluZSBpZiB0aGUKK2ZpcnN0IGxpbmUgY29udGFpbnMgYW55dGhpbmcgZXhjZXB0IGEgY29tbWVudC4KKworLi4KKworLi4gYnBvOiAxNzM5MAorLi4gZGF0ZTogOTM5NworLi4gbm9uY2U6IEk0dkhGaAorLi4gc2VjdGlvbjogSURMRQorCitBZGp1c3QgRWRpdG9yIHdpbmRvdyB0aXRsZTsgcmVtb3ZlICdQeXRob24nLCBtb3ZlIHZlcnNpb24gdG8gZW5kLgorCisuLgorCisuLiBicG86IDE0MTA1CisuLiBkYXRlOiA5Mzk2CisuLiBub25jZTogLUZad1lICisuLiBzZWN0aW9uOiBJRExFCisKK0lkbGUgZGVidWdnZXIgYnJlYWtwb2ludHMgbm8gbG9uZ2VyIGRpc2FwcGVhciB3aGVuIGluc2VydGluZyBvciBkZWxldGluZworbGluZXMuCisKKy4uCisKKy4uIGJwbzogMjIzODEKKy4uIGRhdGU6IDkzOTUKKy4uIG5vbmNlOiA2bmdkWlcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXBkYXRlIHpsaWIgdG8gMS4yLjguCisKKy4uCisKKy4uIGJwbzogMjIxNzYKKy4uIGRhdGU6IDkzOTQKKy4uIG5vbmNlOiByZ2JSeWcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXBkYXRlIHRoZSBjdHlwZXMgbW9kdWxlJ3MgbGliZmZpIHRvIHYzLjEuICBUaGlzIHJlbGVhc2UgYWRkcyBzdXBwb3J0IGZvcgordGhlIExpbnV4IEFBcmNoNjQgYW5kIFBPV0VSUEMgRUxGIEFCSXYyIGxpdHRsZSBlbmRpYW4gYXJjaGl0ZWN0dXJlcy4KKworLi4KKworLi4gYnBvOiAxMDcxMgorLi4gZGF0ZTogOTM5MworLi4gbm9uY2U6IHJuZDBvYworLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworMnRvMyBoYXMgYSBuZXcgImFzc2VydHMiIGZpeGVyIHRoYXQgcmVwbGFjZXMgZGVwcmVjYXRlZCBuYW1lcyBvZiB1bml0dGVzdAorbWV0aG9kcyAoZS5nLiBmYWlsVW5sZXNzRXF1YWwgLT4gYXNzZXJ0RXF1YWwpLgorCisuLgorCisuLiBicG86IDIyMjIxCisuLiBkYXRlOiA5MzkyCisuLiBub25jZTogdk9OTHFBCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCisydG8zIGFuZCB0aGUgZmluZG5vY29kaW5nLnB5IHNjcmlwdCBub3cgaWdub3JlIHRoZSBzb3VyY2UgZW5jb2RpbmcKK2RlY2xhcmF0aW9uIG9uIHRoZSBzZWNvbmQgbGluZSBpZiB0aGUgZmlyc3QgbGluZSBjb250YWlucyBhbnl0aGluZyBleGNlcHQgYQorY29tbWVudC4KKworLi4KKworLi4gYnBvOiAyMjIwMQorLi4gZGF0ZTogOTM5MQorLi4gbm9uY2U6IGsxQXdiaAorLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworQ29tbWFuZC1saW5lIGludGVyZmFjZSBvZiB0aGUgemlwZmlsZSBtb2R1bGUgbm93IGNvcnJlY3RseSBleHRyYWN0cyBaSVAKK2ZpbGVzIHdpdGggZGlyZWN0b3J5IGVudHJpZXMuICBQYXRjaCBieSBSeWFuIFdpbHNvbi4KKworLi4KKworLi4gYnBvOiAyMjIzNgorLi4gZGF0ZTogOTM5MAorLi4gbm9uY2U6IGdpbkpTSQorLi4gc2VjdGlvbjogVGVzdHMKKworVGtpbnRlciB0ZXN0cyBub3cgZG9uJ3QgcmV1c2UgZGVmYXVsdCByb290IHdpbmRvdy4gIE5ldyByb290IHdpbmRvdyBpcworY3JlYXRlZCBmb3IgZXZlcnkgdGVzdCBjbGFzcy4KKworLi4KKworLi4gYnBvOiAxODAwNAorLi4gZGF0ZTogOTM4OQorLi4gbm9uY2U6IGpQWHRlbgorLi4gc2VjdGlvbjogVGVzdHMKKwordGVzdF9vdmVyZmxvdyBpbiB0ZXN0X2xpc3QgYnkgbWlzdGFrZSBjb25zdW1lZCA0MCBHaUIgb2YgbWVtb3J5IG9uIDY0LWJpdAorc3lzdGVtcy4KKworLi4KKworLi4gYnBvOiAyMTk3NgorLi4gZGF0ZTogOTM4OAorLi4gbm9uY2U6IFNscTZzZQorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3Rfc3NsIHRvIGFjY2VwdCBMaWJyZVNTTCB2ZXJzaW9uIHN0cmluZ3MuICBUaGFua3MgdG8gV2lsbGlhbSBPcnIuCisKKy4uCisKKy4uIGJwbzogMjI3NzAKKy4uIGRhdGU6IDkzODcKKy4uIG5vbmNlOiBGeEFoOTEKKy4uIHNlY3Rpb246IFRlc3RzCisKK1ByZXZlbnQgc29tZSBUayBzZWdmYXVsdHMgb24gT1MgWCB3aGVuIHJ1bm5pbmcgZ3VpIHRlc3RzLgorCisuLgorCisuLiBicG86IDIwMjIxCisuLiBkYXRlOiA5Mzg2CisuLiBub25jZTogX3lBZXRLCisuLiBzZWN0aW9uOiBCdWlsZAorCitSZW1vdmVkIGNvbmZsaWN0aW5nIChvciBjaXJjdWxhcikgaHlwb3QgZGVmaW5pdGlvbiB3aGVuIGNvbXBpbGVkIHdpdGggVlMKKzIwMTAgb3IgYWJvdmUuICBJbml0aWFsIHBhdGNoIGJ5IFRhYnJleiBNb2hhbW1lZC4KKworLi4KKworLi4gYnBvOiAxNjUzNworLi4gZGF0ZTogOTM4NQorLi4gbm9uY2U6IGxsRm83MQorLi4gc2VjdGlvbjogQnVpbGQKKworQ2hlY2sgd2hldGhlciBzZWxmLmV4dGVuc2lvbnMgaXMgZW1wdHkgaW4gc2V0dXAucHkuIFBhdGNoIGJ5IEpvbmF0aGFuCitIb3NtZXIuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogOTM4NAorLi4gbm9uY2U6IFlaVWxsdworLi4gc2VjdGlvbjogQnVpbGQKKworVGhlIGRvY3VtZW50YXRpb24gTWFrZWZpbGUgbm8gbG9uZ2VyIGF1dG9tYXRpY2FsbHkgZG93bmxvYWRzIFNwaGlueC4gVXNlcnMKK2FyZSBub3cgcmVxdWlyZWQgdG8gaGF2ZSBTcGhpbnggYWxyZWFkeSBpbnN0YWxsZWQgdG8gYnVpbGQgdGhlCitkb2N1bWVudGF0aW9uLgorCisuLgorCisuLiBicG86IDIxOTU4CisuLiBkYXRlOiA5MzgzCisuLiBub25jZTogM3JxNHFSCisuLiBzZWN0aW9uOiBCdWlsZAorCitEZWZpbmUgSEFWRV9ST1VORCB3aGVuIGJ1aWxkaW5nIHdpdGggVmlzdWFsIFN0dWRpbyAyMDEzIGFuZCBhYm92ZS4gIFBhdGNoIGJ5CitaYWNoYXJ5IFR1cm5lci4KKworLi4KKworLi4gYnBvOiAxNTc1OQorLi4gZGF0ZTogOTM4MgorLi4gbm9uY2U6IGlHTFI2TworLi4gc2VjdGlvbjogQnVpbGQKKworIm1ha2Ugc3VzcGljaW91cyIsICJtYWtlIGxpbmtjaGVjayIgYW5kICJtYWtlIGRvY3Rlc3QiIGluIERvYy8gbm93IGRpc3BsYXkKK3NwZWNpYWwgbWVzc2FnZSB3aGVuIGFuZCBvbmx5IHdoZW4gdGhlcmUgYXJlIGZhaWx1cmVzLgorCisuLgorCisuLiBicG86IDIxMTY2CisuLiBkYXRlOiA5MzgxCisuLiBub25jZTogS0FsN2FPCisuLiBzZWN0aW9uOiBCdWlsZAorCitQcmV2ZW50IHBvc3NpYmxlIHNlZ2ZhdWx0cyBhbmQgb3RoZXIgcmFuZG9tIGZhaWx1cmVzIG9mIHB5dGhvbgorYGAtLWdlbmVyYXRlLXBvc2l4LXZhcnNgYCBpbiBweWJ1aWxkZGlyLnR4dCBidWlsZCB0YXJnZXQuCisKKy4uCisKKy4uIGJwbzogMTgwOTYKKy4uIGRhdGU6IDkzODAKKy4uIG5vbmNlOiBFTHlBVUoKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0ZpeCBsaWJyYXJ5IG9yZGVyIHJldHVybmVkIGJ5IHB5dGhvbi1jb25maWcuCisKKy4uCisKKy4uIGJwbzogMTcyMTkKKy4uIGRhdGU6IDkzNzkKKy4uIG5vbmNlOiBxOHVlUTAKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0FkZCBsaWJyYXJ5IGJ1aWxkIGRpciBmb3IgUHl0aG9uIGV4dGVuc2lvbiBjcm9zcy1idWlsZHMuCisKKy4uCisKKy4uIGJwbzogMjI4NzcKKy4uIGRhdGU6IDkzNzgKKy4uIG5vbmNlOiBucV9zblIKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1BFUCA0NzcgLSBPUyBYIGluc3RhbGxlciBub3cgaW5zdGFsbHMgcGlwLgorCisuLgorCisuLiBicG86IDIyODc4CisuLiBkYXRlOiA5Mzc3CisuLiBub25jZTogeTRVbk95CisuLiBzZWN0aW9uOiBCdWlsZAorCitQRVAgNDc3IC0gIm1ha2UgaW5zdGFsbCIgYW5kICJtYWtlIGFsdGluc3RhbGwiIGNhbiBub3cgaW5zdGFsbCBvciB1cGdyYWRlCitwaXAsIHVzaW5nIHRoZSBidW5kbGVkIHBpcCBwcm92aWRlZCBieSB0aGUgYmFja3BvcnRlZCBlbnN1cmVwaXAgbW9kdWxlLiAgQQorY29uZmlndXJlIG9wdGlvbiwgLS13aXRoLWVuc3VyZXBpcFs9dXBncmFkZXxpbnN0YWxsfG5vXSwgaXMgYXZhaWxhYmxlIHRvIHNldAordGhlIG9wdGlvbiBmb3Igc3Vic2VxdWVudCBpbnN0YWxsczsgdGhlIGRlZmF1bHQgZm9yIFB5dGhvbiAyIGluICJubyIgKGRvIG5vdAoraW5zdGFsbCBvciB1cGdyYWRlIHBpcCkuICBUaGUgb3B0aW9uIGNhbiBhbHNvIGJlIHNldCB3aXRoICJtYWtlIFthbHRdaW5zdGFsbAorRU5TVVJFUElQPVt1cGdyYWRlfGluc3RhbGx8bm9dIi4KKworLi4KKworLi4gYnBvOiAxNzg5NgorLi4gZGF0ZTogOTM3NgorLi4gbm9uY2U6IG83OXJITQorLi4gc2VjdGlvbjogV2luZG93cworCitUaGUgV2luZG93cyBidWlsZCBzY3JpcHRzIG5vdyBleHBlY3QgZXh0ZXJuYWwgbGlicmFyeSBzb3VyY2VzIHRvIGJlIGluCitgYFBDYnVpbGRcLi5cZXh0ZXJuYWxzYGAgcmF0aGVyIHRoYW4gYGBQQ2J1aWxkXC4uXC4uYGAuCisKKy4uCisKKy4uIGJwbzogMTc3MTcKKy4uIGRhdGU6IDkzNzUKKy4uIG5vbmNlOiB5MXpveWUKKy4uIHNlY3Rpb246IFdpbmRvd3MKKworVGhlIFdpbmRvd3MgYnVpbGQgc2NyaXB0cyBub3cgdXNlIGEgY29weSBvZiBOQVNNIHB1bGxlZCBmcm9tIHN2bi5weXRob24ub3JnCit0byBidWlsZCBPcGVuU1NMLgorCisuLgorCisuLiBicG86IDIyNjQ0CisuLiBkYXRlOiA5Mzc0CisuLiBub25jZTogZ29zQmtpCisuLiBzZWN0aW9uOiBXaW5kb3dzCisKK1RoZSBidW5kbGVkIHZlcnNpb24gb2YgT3BlblNTTCBoYXMgYmVlbiB1cGRhdGVkIHRvIDEuMC4xai4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuNy5yc3QgYi9NaXNjL05FV1MuZC8yLjcucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhZDA1MzcKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC8yLjcucnN0CkBAIC0wLDAgKzEsNDYgQEAKKy4uIGJwbzogMAorLi4gZGF0ZTogODA5NgorLi4gbm9uY2U6IEhnU1hNaAorLi4gcmVsZWFzZSBkYXRlOiAyMDEwLTA3LTAzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQcmV2ZW50IGFzc2lnbm1lbnQgdG8gc2V0IGxpdGVyYWxzLgorCisuLgorCisuLiBicG86IDE4NjgKKy4uIGRhdGU6IDgwOTUKKy4uIG5vbmNlOiA4clRrdkMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRWxpbWluYXRlIHN1YnRsZSB0aW1pbmcgaXNzdWVzIGluIHRocmVhZC1sb2NhbCBvYmplY3RzIGJ5IGdldHRpbmcgcmlkIG9mIHRoZQorY2FjaGVkIGNvcHkgb2YgdGhyZWFkLWxvY2FsIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LgorCisuLgorCisuLiBicG86IDkxMjUKKy4uIGRhdGU6IDgwOTQKKy4uIG5vbmNlOiBibTk3V3MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHJlY29nbml0aW9uIG9mICdleGNlcHQgLi4uIGFzIC4uLicgc3ludGF4IHRvIHBhcnNlciBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogNzY3MworLi4gZGF0ZTogODA5MworLi4gbm9uY2U6IGNEeHNEMgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSAoQ1ZFLTIwMTAtMjA4OSkgaW4gdGhlIGF1ZGlvb3AgbW9kdWxlLCBlbnN1cmUKK3RoYXQgdGhlIGlucHV0IHN0cmluZyBsZW5ndGggaXMgYSBtdWx0aXBsZSBvZiB0aGUgZnJhbWUgc2l6ZS4KKworLi4KKworLi4gYnBvOiA5MDc1CisuLiBkYXRlOiA4MDkyCisuLiBub25jZToga3Z4YWMyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHRoZSBzc2wgbW9kdWxlLCByZW1vdmUgdGhlIHNldHRpbmcgb2YgYSBgYGRlYnVnYGAgZmxhZyBvbiBhbiBPcGVuU1NMCitzdHJ1Y3R1cmUuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjdhMS5yc3QgYi9NaXNjL05FV1MuZC8yLjdhMS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJhMjhlMAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuN2ExLnJzdApAQCAtMCwwICsxLDU3NTEgQEAKKy4uIGJwbzogNzQxOQorLi4gZGF0ZTogNzc1OQorLi4gbm9uY2U6IGsxY0ZHcQorLi4gcmVsZWFzZSBkYXRlOiAyMDA5LTEyLTA1CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitgYGxvY2FsZS5zZXRsb2NhbGUoKWBgIGNvdWxkIGNyYXNoIHRoZSBpbnRlcnByZXRlciBvbiBXaW5kb3dzIHdoZW4gY2FsbGVkCit3aXRoIGludmFsaWQgdmFsdWVzLgorCisuLgorCisuLiBicG86IDMzODIKKy4uIGRhdGU6IDc3NTgKKy4uIG5vbmNlOiBndG1UNFQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKKydGJyBmb3JtYXR0aW5nIGZvciBmbG9hdCBhbmQgY29tcGxleCBub3cgY29udmVydCB0aGUgcmVzdWx0IHRvIHVwcGVyIGNhc2UuCitUaGlzIG9ubHkgYWZmZWN0cyAnaW5mJyBhbmQgJ25hbicsIHNpbmNlICdmJyBubyBsb25nZXIgY29udmVydHMgdG8gJ2cnIGZvcgorbGFyZ2UgdmFsdWVzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc3NTcKKy4uIG5vbmNlOiBmdzdLSE8KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JlbW92ZSBzd2l0Y2ggZnJvbSAiJWYiIGZvcm1hdHRpbmcgdG8gIiVnIiBmb3JtYXR0aW5nIGZvciBmbG9hdHMgbGFyZ2VyIHRoYW4KKzFlNTAgaW4gYWJzb2x1dGUgdmFsdWUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzc1NgorLi4gbm9uY2U6IG5wSkgwRAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmVtb3ZlIHJlc3RyaWN0aW9ucyBvbiBwcmVjaXNpb24gd2hlbiBmb3JtYXR0aW5nIGZsb2F0cy4gIEUuZy4sICIlLjEyMGciICUKKzFlLTEwMCB1c2VkIHRvIHJhaXNlIE92ZXJmbG93RXJyb3IsIGJ1dCBub3cgZ2l2ZXMgdGhlIHJlcXVlc3RlZCAxMjAKK3NpZ25pZmljYW50IGRpZ2l0cyBpbnN0ZWFkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc3NTUKKy4uIG5vbmNlOiBaMy1kalMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZCBQeTNrIHdhcm5pbmdzIGZvciBwYXJhbWV0ZXIgbmFtZXMgaW4gcGFyZW50aGVzZXMuCisKKy4uCisKKy4uIGJwbzogNzM2MgorLi4gZGF0ZTogNzc1NAorLi4gbm9uY2U6IHd5NUpnVgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworR2l2ZSBhIHByb3BlciBlcnJvciBtZXNzYWdlIGZvciBgYGRlZiBmKCh4KT0zKTogcGFzc2BgLgorCisuLgorCisuLiBicG86IDcwODUKKy4uIGRhdGU6IDc3NTMKKy4uIG5vbmNlOiAxbW83aHMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBjcmFzaCB3aGVuIGltcG9ydGluZyBzb21lIGV4dGVuc2lvbnMgaW4gYSB0aHJlYWQgb24gTWFjT1NYIDEwLjYuCisKKy4uCisKKy4uIGJwbzogNzExNworLi4gZGF0ZTogNzc1MgorLi4gbm9uY2U6IDNfMUxLQworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworYGByZXByKHgpYGAgZm9yIGEgZmxvYXQgeCByZXR1cm5zIGEgcmVzdWx0IGJhc2VkIG9uIHRoZSBzaG9ydGVzdCBkZWNpbWFsCitzdHJpbmcgdGhhdCdzIGd1YXJhbnRlZWQgdG8gcm91bmQgYmFjayB0byB4IHVuZGVyIGNvcnJlY3Qgcm91bmRpbmcgKHdpdGgKK3JvdW5kLWhhbGYtdG8tZXZlbiByb3VuZGluZyBtb2RlKS4gIFByZXZpb3VzbHkgaXQgZ2F2ZSBhIHN0cmluZyBiYXNlZCBvbgorcm91bmRpbmcgeCB0byAxNyBkZWNpbWFsIGRpZ2l0cy4gIHJlcHIoeCkgZm9yIGEgY29tcGxleCBudW1iZXIgYmVoYXZlcworc2ltaWxhcmx5LiAgT24gcGxhdGZvcm1zIHdoZXJlIHRoZSBjb3JyZWN0bHktcm91bmRlZCBzdHJ0b2QgYW5kIGR0b2EgY29kZSBpcworbm90IHN1cHBvcnRlZCAoc2VlIGJlbG93KSwgcmVwciBpcyB1bmNoYW5nZWQuCisKKy4uCisKKy4uIGJwbzogNzExNworLi4gZGF0ZTogNzc1MQorLi4gbm9uY2U6IDZhbTNSdworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworT24gYWxtb3N0IGFsbCBwbGF0Zm9ybXM6IGZsb2F0LXRvLXN0cmluZyBhbmQgc3RyaW5nLXRvLWZsb2F0IGNvbnZlcnNpb25zCit3aXRoaW4gUHl0aG9uIGFyZSBub3cgY29ycmVjdGx5IHJvdW5kZWQuICBQbGFjZXMgdGhlc2UgY29udmVyc2lvbnMgb2NjdXIKK2luY2x1ZGU6IHN0ciBmb3IgZmxvYXRzIGFuZCBjb21wbGV4IG51bWJlcnM7IHRoZSBmbG9hdCBhbmQgY29tcGxleAorY29uc3RydWN0b3JzOyBvbGQtc3R5bGUgYW5kIG5ldy1zdHlsZSBudW1lcmljIGZvcm1hdHRpbmc7IHNlcmlhbGl6YXRpb24gYW5kCitkZXNlcmlhbGl6YXRpb24gb2YgZmxvYXRzIGFuZCBjb21wbGV4IG51bWJlcnMgdXNpbmcgbWFyc2hhbCwgcGlja2xlIGFuZAoranNvbjsgcGFyc2luZyBvZiBmbG9hdCBhbmQgaW1hZ2luYXJ5IGxpdGVyYWxzIGluIFB5dGhvbiBjb2RlOworRGVjaW1hbC10by1mbG9hdCBjb252ZXJzaW9uLgorCitUaGUgY29udmVyc2lvbnMgdXNlIGEgUHl0aG9uLWFkYXB0ZWQgdmVyc2lvbiBvZiBEYXZpZCBHYXkncyB3ZWxsLWtub3duCitkdG9hLmMsIHByb3ZpZGluZyBjb3JyZWN0bHktcm91bmRlZCBzdHJ0b2QgYW5kIGR0b2EgQyBmdW5jdGlvbnMuICBUaGlzIGNvZGUKK2lzIHN1cHBvcnRlZCBvbiBXaW5kb3dzLCBhbmQgb24gVW5peC1saWtlIHBsYXRmb3JtcyB1c2luZyBnY2MsIGljYyBvciBzdW5jYworYXMgdGhlIEMgY29tcGlsZXIuICBUaGVyZSBtYXkgYmUgYSBzbWFsbCBudW1iZXIgb2YgcGxhdGZvcm1zIG9uIHdoaWNoCitjb3JyZWN0IG9wZXJhdGlvbiBvZiB0aGlzIGNvZGUgY2Fubm90IGJlIGd1YXJhbnRlZWQsIHNvIHRoZSBjb2RlIGlzIG5vdAordXNlZDogbm90YWJseSwgdGhpcyBhcHBsaWVzIHRvIHBsYXRmb3JtcyB3aGVyZSB0aGUgQyBkb3VibGUgZm9ybWF0IGlzIG5vdAorSUVFRSA3NTQgYmluYXJ5NjQsIGFuZCB0byBwbGF0Zm9ybXMgb24geDg2IGhhcmR3YXJlIHdoZXJlIHRoZSB4ODcgRlBVIGlzIHNldAordG8gNjQtYml0IHByZWNpc2lvbiBhbmQgUHl0aG9uJ3MgY29uZmlndXJlIHNjcmlwdCBpcyB1bmFibGUgdG8gZGV0ZXJtaW5lIGhvdwordG8gY2hhbmdlIHRoZSBGUFUgcHJlY2lzaW9uLiAgT24gdGhlc2UgcGxhdGZvcm1zIGNvbnZlcnNpb25zIHVzZSB0aGUKK3BsYXRmb3JtIHN0cnRvZCBhbmQgZHRvYSwgYXMgYmVmb3JlLgorCisuLgorCisuLiBicG86IDcxMTcKKy4uIGRhdGU6IDc3NTAKKy4uIG5vbmNlOiAyS29FZEEKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0JhY2twb3J0IHJvdW5kIGltcGxlbWVudGF0aW9uIGZyb20gUHl0aG9uIDMueC4gIGBgcm91bmQoKWBgIG5vdyB1c2VzIHRoZQorY29ycmVjdGx5LXJvdW5kZWQgc3RyaW5nIDwtPiBmbG9hdCBjb252ZXJzaW9ucyBkZXNjcmliZWQgYWJvdmUgKHdoZW4KK2F2YWlsYWJsZSksIGFuZCBzbyBwcm9kdWNlcyBjb3JyZWN0bHkgcm91bmRlZCByZXN1bHRzIHRoYXQgd2lsbCBkaXNwbGF5CituaWNlbHkgdW5kZXIgdGhlIGZsb2F0IHJlcHIuICBUaGVyZSBhcmUgdHdvIHJlbGF0ZWQgc21hbGwgY2hhbmdlczogKDEpIHJvdW5kCitub3cgYWNjZXB0cyBhbnkgY2xhc3Mgd2l0aCBhbiBgYF9faW5kZXhfXygpYGAgbWV0aG9kIGZvciBpdHMgc2Vjb25kIGFyZ3VtZW50CisoYnV0IG5vIGxvbmdlciBhY2NlcHRzIGZsb2F0cyBmb3IgdGhlIHNlY29uZCBhcmd1bWVudCksIGFuZCAoMikgYW4KK2V4Y2Vzc2l2ZWx5IGxhcmdlIHNlY29uZCBpbnRlZ2VyIGFyZ3VtZW50IChlLmcuLCBgYHJvdW5kKDEuMjM0LCAxMCoqMTAwKWBgKQorbm8gbG9uZ2VyIHJhaXNlcyBhbiBleGNlcHRpb24uCisKKy4uCisKKy4uIGJwbzogMTc1NzEyNgorLi4gZGF0ZTogNzc0OQorLi4gbm9uY2U6IFc0UWhVdworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHRoZSBjeXJpbGxpYy1hc2lhbiBhbGlhcyBmb3IgdGhlIHB0Y3AxNTQgZW5jb2RpbmcuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzc0OAorLi4gbm9uY2U6IG1acHNsYQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHNldmVyYWwgaXNzdWVzIHdpdGggYGBjb21waWxlKClgYC4gIFRoZSBpbnB1dCBjYW4gbm93IGNvbnRhaW4gV2luZG93cworYW5kIE1hYyBuZXdsaW5lcyBhbmQgaXMgbm8gbG9uZ2VyIHJlcXVpcmVkIHRvIGVuZCBpbiBhIG5ld2xpbmUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzc0NworLi4gbm9uY2U6IHNVYndIMworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmVtb3ZlIGxlbmd0aCBsaW1pdGF0aW9uIHdoZW4gY29uc3RydWN0aW5nIGEgY29tcGxleCBudW1iZXIgZnJvbSBhIHVuaWNvZGUKK3N0cmluZy4KKworLi4KKworLi4gYnBvOiA3MjQ0CisuLiBkYXRlOiA3NzQ2CisuLiBub25jZTogcUFWYXZPCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitgYGl0ZXJ0b29scy5pemlwX2xvbmdlc3QoKWBgIG5vIGxvbmdlciBpZ25vcmVzIGV4Y2VwdGlvbnMgcmFpc2VkIGR1cmluZyB0aGUKK2Zvcm1hdGlvbiBvZiBhbiBvdXRwdXQgdHVwbGUuCisKKy4uCisKKy4uIGJwbzogMTA4NzQxOAorLi4gZGF0ZTogNzc0NQorLi4gbm9uY2U6IGR5RlpwZworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQm9vc3QgcGVyZm9ybWFuY2Ugb2YgYml0d2lzZSBvcGVyYXRpb25zIGZvciBsb25ncy4KKworLi4KKworLi4gYnBvOiAxNzIyMzQ0CisuLiBkYXRlOiA3NzQ0CisuLiBub25jZTogUXFhYnVSCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitgYHRocmVhZGluZy5fc2h1dGRvd24oKWBgIGlzIG5vdyBjYWxsZWQgaW4gYGBQeV9GaW5hbGl6ZSgpYGAsIHdoaWNoIGZpeGVzCit0aGUgcHJvYmxlbSBvZiBzb21lIGV4Y2VwdGlvbnMgYmVpbmcgdGhyb3duIGF0IHNodXRkb3duIHdoZW4gdGhlIGludGVycHJldGVyCitpcyBraWxsZWQuICBQYXRjaCBieSBBZGFtIE9sc2VuLgorCisuLgorCisuLiBicG86IDcxNjgKKy4uIGRhdGU6IDc3NDMKKy4uIG5vbmNlOiBwWWpLaWEKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0RvY3VtZW50IGBgUHlGbG9hdF9Bc1N0cmluZygpYGAgYW5kIGBgUHlGbG9hdF9Bc1JlcHJTdHJpbmcoKWBgLCBhbmQgbm90ZQordGhhdCB0aGV5IGFyZSB1bnNhZmUgYW5kIGRlcHJlY2F0ZWQuCisKKy4uCisKKy4uIGJwbzogNzEyMAorLi4gZGF0ZTogNzc0MgorLi4gbm9uY2U6IEZ0MlJ4VworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworbG9nZ2luZzogUmVtb3ZlIGltcG9ydCBvZiBtdWx0aXByb2Nlc3Npbmcgd2hpY2ggaXMgY2F1c2luZyBjcmFzaCBpbiBHQUUuCisKKy4uCisKKy4uIGJwbzogNzE0MAorLi4gZGF0ZTogNzc0MQorLi4gbm9uY2U6IEtOVFpMSQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlIGBgX19kaWN0X19gYCBvZiBhIG1vZHVsZSBzaG91bGQgbm90IGJlIGNsZWFyZWQgdW5sZXNzIHRoZSBtb2R1bGUgaXMgdGhlCitvbmx5IG9iamVjdCBob2xkaW5nIGEgcmVmZXJlbmNlIHRvIGl0LgorCisuLgorCisuLiBicG86IDE3NTQwOTQKKy4uIGRhdGU6IDc3NDAKKy4uIG5vbmNlOiBJMGdRbWQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ltcHJvdmUgdGhlIHN0YWNrIGRlcHRoIGNhbGN1bGF0aW9uIGluIHRoZSBjb21waWxlci4gIFRoZXJlIHNob3VsZCBiZSBubworb3RoZXIgZWZmZWN0IHRoYW4gYSBzbWFsbCBkZWNyZWFzZSBpbiBtZW1vcnkgdXNlLiAgUGF0Y2ggYnkgQ2hyaXN0b3BoZXIgVHVyCitMZXNuaWV3c2tpLUxhYXMuCisKKy4uCisKKy4uIGJwbzogNzA4NAorLi4gZGF0ZTogNzczOQorLi4gbm9uY2U6IGtVazUtQgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgKHZlcnkgdW5saWtlbHkpIGNyYXNoIHdoZW4gcHJpbnRpbmcgYSBsaXN0IGZyb20gb25lIHRocmVhZCwgYW5kCittdXRhdGluZyBpdCBmcm9tIGFub3RoZXIgb25lLiAgUGF0Y2ggYnkgU2NvdHQgRGlhbC4KKworLi4KKworLi4gYnBvOiAxNTcxMTg0CisuLiBkYXRlOiA3NzM4CisuLiBub25jZTogRXFUSDk4CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitUaGUgVW5pY29kZSBkYXRhYmFzZSBjb250YWlucyBwcm9wZXJ0aWVzIGZvciBtb3JlIGNoYXJhY3RlcnMuIFRoZSB0YWJsZXMgZm9yCitjb2RlIHBvaW50cyByZXByZXNlbnRpbmcgbnVtZXJpYyB2YWx1ZXMsIHdoaXRlIHNwYWNlcyBvciBsaW5lIGJyZWFrcyBhcmUgbm93CitnZW5lcmF0ZWQgZnJvbSB0aGUgb2ZmaWNpYWwgVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UgZmlsZXMsIGFuZCBpbmNsdWRlCitpbmZvcm1hdGlvbiBmcm9tIHRoZSBVbmloYW4udHh0IGZpbGUuCisKKy4uCisKKy4uIGJwbzogNzA1MAorLi4gZGF0ZTogNzczNworLi4gbm9uY2U6IERNNWpZTAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgU3lzdGVtRXJyb3Igd2hlbiB0cnlpbmcgdG8gdXNlIHVucGFja2luZyBhbmQgYXVnbWVudGVkIGFzc2lnbm1lbnQuCisKKy4uCisKKy4uIGJwbzogNTMyOQorLi4gZGF0ZTogNzczNgorLi4gbm9uY2U6IGJrcXFhLQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGBgb3MucG9wZW4qYGAgcmVncmVzc2lvbiBmcm9tIDIuNSB3aXRoIGNvbW1hbmRzIGFzIGEgc2VxdWVuY2UgcnVubmluZwordGhyb3VnaCB0aGUgc2hlbGwuICBQYXRjaCBieSBKZWFuLVBhdWwgQ2FsZGVyb25lIGFuZCBKYW5pIEhha2FsYS4KKworLi4KKworLi4gYnBvOiA3MDE5CisuLiBkYXRlOiA3NzM1CisuLiBub25jZTogc0NrOXdXCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSYWlzZSBWYWx1ZUVycm9yIHdoZW4gdW5tYXJzaGFsbGluZyBiYWQgbG9uZyBkYXRhLCBpbnN0ZWFkIG9mIHByb2R1Y2luZworaW50ZXJuYWxseSBpbmNvbnNpc3RlbnQgUHl0aG9uIGxvbmdzLgorCisuLgorCisuLiBicG86IDY5OTAKKy4uIGRhdGU6IDc3MzQKKy4uIG5vbmNlOiAxOUxjVWYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBgYHRocmVhZGluZy5sb2NhbGBgIHN1YmNsYXNzZXMgbGVhdmluZyBvbGQgc3RhdGUgYXJvdW5kIGFmdGVyIGEKK3JlZmVyZW5jZSBjeWNsZSBHQyB3aGljaCBjb3VsZCBiZSByZWN5Y2xlZCBieSBuZXcgbG9jYWxzLgorCisuLgorCisuLiBicG86IDYzMDAKKy4uIGRhdGU6IDc3MzMKKy4uIG5vbmNlOiA2Z1BJRHkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK3VuaWNvZGUuZW5jb2RlLCB1bmljb2RlLmRlY29kZSwgc3RyLmRlY29kZSwgYW5kIHN0ci5lbmNvZGUgbm93IHRha2Uga2V5d29yZAorYXJndW1lbnRzLgorCisuLgorCisuLiBicG86IDY5MjIKKy4uIGRhdGU6IDc3MzIKKy4uIG5vbmNlOiBfTXVMQjkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBhbiBpbmZpbml0ZSBsb29wIHdoZW4gdHJ5aW5nIHRvIGRlY29kZSBhbiBpbnZhbGlkIFVURi0zMiBzdHJlYW0gd2l0aCBhCitub24tcmFpc2luZyBlcnJvciBoYW5kbGVyIGxpa2UgInJlcGxhY2UiIG9yICJpZ25vcmUiLgorCisuLgorCisuLiBicG86IDY3MTMKKy4uIGRhdGU6IDc3MzEKKy4uIG5vbmNlOiA4OUVucU4KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ltcHJvdmUgcGVyZm9ybWFuY2Ugb2YgYmFzZSAxMCBpbnQgLT4gc3RyaW5nIGFuZCBsb25nIC0+IHN0cmluZyBjb252ZXJzaW9ucy4KKworLi4KKworLi4gYnBvOiAxNTkwODY0CisuLiBkYXRlOiA3NzMwCisuLiBub25jZTogOGFleDFMCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggcG90ZW50aWFsIGRlYWRsb2NrIHdoZW4gbWl4aW5nIHRocmVhZHMgYW5kIGZvcmsoKS4KKworLi4KKworLi4gYnBvOiA2ODQ0CisuLiBkYXRlOiA3NzI5CisuLiBub25jZTogb1d4UmJOCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitEbyBub3QgZW1pdCBEZXByZWNhdGlvbldhcm5pbmdzIHdoZW4gYWNjZXNzaW5nIGEgIm1lc3NhZ2UiIGF0dHJpYnV0ZSBvbgorZXhjZXB0aW9ucyB0aGF0IHdhcyBzZXQgZXhwbGljaXRseS4KKworLi4KKworLi4gYnBvOiA2ODQ2CisuLiBkYXRlOiA3NzI4CisuLiBub25jZTogcTdiLU95CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYnVnIHdoZXJlIGJ5dGVhcnJheS5wb3AoKSByZXR1cm5zIG5lZ2F0aXZlIGludGVnZXJzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc3MjcKKy4uIG5vbmNlOiBHUVVkd2YKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2BgY2xhc3NtZXRob2QoKWBgIG5vIGxvbmdlciBjaGVja3MgaWYgaXRzIGFyZ3VtZW50IGlzIGNhbGxhYmxlLgorCisuLgorCisuLiBicG86IDY3NTAKKy4uIGRhdGU6IDc3MjYKKy4uIG5vbmNlOiBfUGxuMzEKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0EgdGV4dCBmaWxlIG9wZW5lZCB3aXRoIGBgaW8ub3BlbigpYGAgY291bGQgZHVwbGljYXRlIGl0cyBvdXRwdXQgd2hlbgord3JpdGluZyBmcm9tIG11bHRpcGxlIHRocmVhZHMgYXQgdGhlIHNhbWUgdGltZS4KKworLi4KKworLi4gYnBvOiA2NzA0CisuLiBkYXRlOiA3NzI1CisuLiBub25jZTogT3BTeUtvCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbXByb3ZlIHRoZSBjb2xfb2Zmc2V0IGluIEFTVCBmb3IgImZvciIgc3RhdGVtZW50cyB3aXRoIGEgdGFyZ2V0IG9mIHR1cGxlCit1bnBhY2tpbmcuCisKKy4uCisKKy4uIGJwbzogNjcwNworLi4gZGF0ZTogNzcyNAorLi4gbm9uY2U6IERYVHdwYgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworYGBkaXIoKWBgIG9uIGFuIHVuaW5pdGlhbGl6ZWQgbW9kdWxlIGNhdXNlZCBhIGNyYXNoLgorCisuLgorCisuLiBicG86IDY1NDAKKy4uIGRhdGU6IDc3MjMKKy4uIG5vbmNlOiBOc29QUjgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIGNyYXNoIGZvciBgYGJ5dGVhcnJheS50cmFuc2xhdGUoKWBgIHdpdGggaW52YWxpZCBwYXJhbWV0ZXJzLgorCisuLgorCisuLiBicG86IDY1NzMKKy4uIGRhdGU6IDc3MjIKKy4uIG5vbmNlOiBWQndqdGYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2Bgc2V0LnVuaW9uKClgYCBzdG9wcGVkIHByb2Nlc3NpbmcgaW5wdXRzIGlmIGFuIGluc3RhbmNlIG9mIHNlbGYgb2NjdXJyZWQgaW4KK3RoZSBhcmd1bWVudCBjaGFpbi4KKworLi4KKworLi4gYnBvOiAxNjE2OTc5CisuLiBkYXRlOiA3NzIxCisuLiBub25jZTogWUh5QldGCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGRlZCB0aGUgY3A3MjAgKEFyYWJpYyBET1MpIGVuY29kaW5nLgorCisuLgorCisuLiBicG86IDYwNzAKKy4uIGRhdGU6IDc3MjAKKy4uIG5vbmNlOiAtd0M3dmIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK09uIHBvc2l4IHBsYXRmb3JtcyBpbXBvcnQgbm8gbG9uZ2VyIGNvcGllcyB0aGUgZXhlY3V0ZSBiaXQgZnJvbSB0aGUgLnB5IGZpbGUKK3RvIHRoZSAucHljIGZpbGUgaWYgaXQgaXMgc2V0LiAgUGF0Y2ggYnkgTWFyY28gTi4KKworLi4KKworLi4gYnBvOiA0NjE4CisuLiBkYXRlOiA3NzE5CisuLiBub25jZTogQi1iU1JrCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitXaGVuIHVuaWNvZGUgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gYGBwcmludCgpYGAsIHRoZSBkZWZhdWx0IHNlcGFyYXRvciBhbmQKK2VuZCBzaG91bGQgYmUgdW5pY29kZSBhbHNvLgorCisuLgorCisuLiBicG86IDYxMTkKKy4uIGRhdGU6IDc3MTgKKy4uIG5vbmNlOiA5NEZyTFoKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIGFuIGluY29ycmVjdCBQeTNrIHdhcm5pbmcgYWJvdXQgb3JkZXIgY29tcGFyaXNvbnMgb2YgYnVpbHQtaW4KK2Z1bmN0aW9ucyBhbmQgbWV0aG9kcy4KKworLi4KKworLi4gYnBvOiA2MzQ3CisuLiBkYXRlOiA3NzE3CisuLiBub25jZTogVkJLSzdoCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbmNsdWRlIGludHR5cGVzLmggYXMgd2VsbCBhcyBzdGRpbnQuaCBpbiBweXBvcnQuaC4gIFRoaXMgZml4ZXMgYSBidWlsZAorZmFpbHVyZSBvbiBIUC1VWDogaW50MzJfdCBhbmQgdWludDMyX3QgYXJlIGRlZmluZWQgaW4gaW50dHlwZXMuaCBpbnN0ZWFkIG9mCitzdGRpbnQuaCBvbiB0aGF0IHBsYXRmb3JtLgorCisuLgorCisuLiBicG86IDQ4NTYKKy4uIGRhdGU6IDc3MTYKKy4uIG5vbmNlOiBSaHhRMFkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JlbW92ZSBjaGVja3MgZm9yIHdpbiBOVC4KKworLi4KKworLi4gYnBvOiAyMDE2CisuLiBkYXRlOiA3NzE1CisuLiBub25jZTogWlRmNm9TCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBhIGNyYXNoIGluIGEgY29ybmVyIGNhc2Ugd2hlcmUgdGhlIGRpY3Rpb25hcnkgb2Yga2V5d29yZCBhcmd1bWVudHMKK2NvdWxkIGJlIG1vZGlmaWVkIGR1cmluZyB0aGUgZnVuY3Rpb24gY2FsbCBzZXR1cC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NzE0CisuLiBub25jZTogdWhBMnprCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSZW1vdmVkIHRoZSBpcGFkZHIgbW9kdWxlLgorCisuLgorCisuLiBicG86IDYzMjkKKy4uIGRhdGU6IDc3MTMKKy4uIG5vbmNlOiBqN2Z3Q0oKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIGl0ZXJhdGlvbiBmb3IgbWVtb3J5dmlldyBvYmplY3RzIChpdCB3YXMgYmVpbmcgYmxvY2tlZCBiZWNhdXNlIGl0Cit3YXNuJ3QgcmVjb2duaXplZCBhcyBhIHNlcXVlbmNlKS4KKworLi4KKworLi4gYnBvOiA2Mjg5CisuLiBkYXRlOiA3NzEyCisuLiBub25jZTogelFxbThMCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitFbmNvZGluZyBlcnJvcnMgZnJvbSBgYGNvbXBpbGUoKWBgIHdlcmUgYmVpbmcgbWFza2VkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc3MTEKKy4uIG5vbmNlOiBzNmpucW0KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1doZW4gbm8gbW9kdWxlIGlzIGdpdmVuIGluIGEgcmVsYXRpdmUgaW1wb3J0LCB0aGUgbW9kdWxlIGZpZWxkIG9mIHRoZQorSW1wb3J0RnJvbSBBU1Qgbm9kZSBpcyBub3cgTm9uZSBpbnN0ZWFkIG9mIGFuIGVtcHR5IHN0cmluZy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NzEwCisuLiBub25jZTogZEZ6VnhZCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBc3NpZ25tZW50IHRvIE5vbmUgdXNpbmcgaW1wb3J0IHN0YXRlbWVudHMgbm93IHJhaXNlcyBhIFN5bnRheEVycm9yLgorCisuLgorCisuLiBicG86IDQ1NDcKKy4uIGRhdGU6IDc3MDkKKy4uIG5vbmNlOiA0ZkkzdFgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1doZW4gZGVidWdnaW5nIGEgdmVyeSBsYXJnZSBmdW5jdGlvbiwgaXQgd2FzIG5vdCBhbHdheXMgcG9zc2libGUgdG8gdXBkYXRlCit0aGUgbGluZW5vIGF0dHJpYnV0ZSBvZiB0aGUgY3VycmVudCBmcmFtZS4KKworLi4KKworLi4gYnBvOiA1MzMwCisuLiBkYXRlOiA3NzA4CisuLiBub25jZTogSFB2bjZHCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitDIGZ1bmN0aW9ucyBjYWxsZWQgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cyB3ZXJlIG5vdCByZXBvcnRlZCBieSB0aGUgdmFyaW91cworcHJvZmlsaW5nIG1vZHVsZXMgKHByb2ZpbGUsIGNQcm9maWxlKS4gIFBhdGNoIGJ5IEhhZ2VuIEbDvHJzdGVuYXUuCisKKy4uCisKKy4uIGJwbzogNTk4MgorLi4gZGF0ZTogNzcwNworLi4gbm9uY2U6IGNfbXQ2XworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworc3RhdGljbWV0aG9kIGFuZCBjbGFzc21ldGhvZCBub3cgZXhwb3NlIHRoZSB3cmFwcGVkIGZ1bmN0aW9uIHdpdGgKK2BgX19mdW5jX19gYC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NzA2CisuLiBub25jZTogdzc3cVY0CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGRlZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IG1hbmFnZXJzIGluIHRoZSBzYW1lIHdpdGgtc3RhdGVtZW50LgorRGVwcmVjYXRlZCBgYGNvbnRleHRsaWIubmVzdGVkKClgYCB3aGljaCBpcyBubyBsb25nZXIgbmVlZGVkLgorCisuLgorCisuLiBicG86IDYxMDEKKy4uIGRhdGU6IDc3MDUKKy4uIG5vbmNlOiA0dFFUWlgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0EgbmV3IG9wY29kZSwgU0VUVVBfV0lUSCwgaGFzIGJlZW4gYWRkZWQgdG8gc3BlZWQgdXAgdGhlIHdpdGggc3RhdGVtZW50IGFuZAorY29ycmVjdGx5IGxvb2t1cCB0aGUgX19lbnRlcl9fIGFuZCBfX2V4aXRfXyBzcGVjaWFsIG1ldGhvZHMuCisKKy4uCisKKy4uIGJwbzogNTgyOQorLi4gZGF0ZTogNzcwNAorLi4gbm9uY2U6IFp0N2E1bworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworY29tcGxleCgiMWU1MDAiKSBubyBsb25nZXIgcmFpc2VzIE92ZXJmbG93RXJyb3IuICBUaGlzIG1ha2VzIGl0IGNvbnNpc3RlbnQKK3dpdGggZmxvYXQoIjFlNTAwIikgYW5kIGludGVycHJldGF0aW9uIG9mIHJlYWwgYW5kIGltYWdpbmFyeSBsaXRlcmFscy4KKworLi4KKworLi4gYnBvOiAzNTI3CisuLiBkYXRlOiA3NzAzCisuLiBub25jZTogRXlxcXVxCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSZW1vdmVkIFB5X1dJTl9XSURFX0ZJTEVOQU1FUyB3aGljaCBpcyBub3QgdXNlZCBhbnkgbW9yZS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NzAyCisuLiBub25jZTogMnlySF9vCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitgYF9faW5zdGFuY2VjaGVja19fKClgYCBhbmQgYGBfX3N1YmNsYXNzY2hlY2tfXygpYGAgYXJlIG5vdyBjb21wbGV0ZWx5CitpZ25vcmVkIG9uIGNsYXNzaWMgY2xhc3NlcyBhbmQgaW5zdGFuY2VzLgorCisuLgorCisuLiBicG86IDU5OTQKKy4uIGRhdGU6IDc3MDEKKy4uIG5vbmNlOiB3b052aHgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSBtYXJzaGFsIG1vZHVsZSBub3cgaGFzIGRvY3N0cmluZ3MuCisKKy4uCisKKy4uIGJwbzogNTk4MQorLi4gZGF0ZTogNzcwMAorLi4gbm9uY2U6IExrYXBIOQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHRocmVlIG1pbm9yIGluZi9uYW4gaXNzdWVzIGluIGZsb2F0LmZyb21oZXg6CisKKygxKSBpbmYgYW5kIG5hbiBzdHJpbmdzIHdpdGggdHJhaWxpbmcgd2hpdGVzcGFjZSB3ZXJlIGluY29ycmVjdGx5IHJlamVjdGVkOworKDIpIHBhcnNpbmcgb2Ygc3RyaW5ncyByZXByZXNlbnRpbmcgaW5maW5pdGllcyBhbmQgbmFucyB3YXMgbG9jYWxlIGF3YXJlOworYW5kICgzKSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZnJvbWhleCgnLW5hbicpIGRpZG4ndCBtYXRjaCB0aGF0IG9mCitmbG9hdCgnLW5hbicpLgorCisuLgorCisuLiBicG86IDU5MjAKKy4uIGRhdGU6IDc2OTkKKy4uIG5vbmNlOiBab0kxeEIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZvciBgYGZsb2F0Ll9fZm9ybWF0X18oKWBgLCBjaGFuZ2UgdGhlIGJlaGF2aW9yIHdpdGggdGhlIGVtcHR5IHByZXNlbnRhdGlvbgordHlwZSAodGhhdCBpcywgbm90IG9uZSBvZiAnZScsICdmJywgJ2cnLCBvciAnbicpIHRvIGJlIGxpa2UgJ2cnIGJ1dCB3aXRoIGF0CitsZWFzdCBvbmUgZGVjaW1hbCBwb2ludCBhbmQgd2l0aCBhIGRlZmF1bHQgcHJlY2lzaW9uIG9mIDEyLiBQcmV2aW91c2x5LCB0aGUKK2JlaGF2aW9yIHRoZSBzYW1lIGJ1dCB3aXRoIGEgZGVmYXVsdCBwcmVjaXNpb24gb2YgNi4gVGhpcyBtb3JlIGNsb3NlbHkKK21hdGNoZXMgYGBzdHIoKWBgLCBhbmQgcmVkdWNlcyBzdXJwcmlzZXMgd2hlbiBhZGRpbmcgYWxpZ25tZW50IGZsYWdzIHRvIHRoZQorZW1wdHkgcHJlc2VudGF0aW9uIHR5cGUuIFRoaXMgYWxzbyBhZmZlY3RzIHRoZSBuZXcgY29tcGxleC5fX2Zvcm1hdF9fIGluIHRoZQorc2FtZSB3YXkuCisKKy4uCisKKy4uIGJwbzogNTg5MAorLi4gZGF0ZTogNzY5OAorLi4gbm9uY2U6IHNiQ0F0VworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworSW4gc3ViY2xhc3NlcyBvZiAncHJvcGVydHknIHRoZSBfX2RvY19fIGF0dHJpYnV0ZSB3YXMgc2hhZG93ZWQgYnkKK2NsYXNzdHlwZSdzLCBldmVuIGlmIGl0IHdhcyBOb25lLiAgcHJvcGVydHkgbm93IGluc2VydHMgdGhlIF9fZG9jX18gaW50byB0aGUKK3N1YmNsYXNzIGluc3RhbmNlIF9fZGljdF9fLgorCisuLgorCisuLiBicG86IDQ0MjYKKy4uIGRhdGU6IDc2OTcKKy4uIG5vbmNlOiBOeTVfUmcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSBVVEYtNyBkZWNvZGVyIHdhcyB0b28gc3RyaWN0IGFuZCBkaWRuJ3QgYWNjZXB0IHNvbWUgbGVnYWwgc2VxdWVuY2VzLgorUGF0Y2ggYnkgTmljayBCYXJuZXMgYW5kIFZpY3RvciBTdGlubmVyLgorCisuLgorCisuLiBicG86IDE1ODgKKy4uIGRhdGU6IDc2OTYKKy4uIG5vbmNlOiA4LVhDZVEKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZCBjb21wbGV4Ll9fZm9ybWF0X18uIEZvciBleGFtcGxlLCBgYGZvcm1hdChjb21wbGV4KDEsIDIuLzMpLCAnLjUnKWBgIG5vdworcHJvZHVjZXMgYSBzZW5zaWJsZSByZXN1bHQuCisKKy4uCisKKy4uIGJwbzogNTg2NAorLi4gZGF0ZTogNzY5NQorLi4gbm9uY2U6IFVFbGMwYworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGVtcHR5IGZvcm1hdCBjb2RlIGZvcm1hdHRpbmcgZm9yIGZsb2F0cyBzbyB0aGF0IGl0IG5ldmVyIGdpdmVzIG1vcmUgdGhhbgordGhlIHJlcXVlc3RlZCBudW1iZXIgb2Ygc2lnbmlmaWNhbnQgZGlnaXRzLgorCisuLgorCisuLiBicG86IDU3OTMKKy4uIGRhdGU6IDc2OTQKKy4uIG5vbmNlOiAwRGpkUWoKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JhdGlvbmFsaXplIGlzZGlnaXQgLyBpc2FscGhhIC8gdG9sb3dlciwgZXRjLiBJbmNsdWRlcyBuZXcgUHlfSVNESUdJVCAvCitQeV9JU0FMUEhBIC8gUHlfVE9MT1dFUiwgZXRjLiBpbiBwY3R5cGVzLmguCisKKy4uCisKKy4uIGJwbzogNDk3MQorLi4gZGF0ZTogNzY5MworLi4gbm9uY2U6IEc1QXlGUworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHRpdGxlY2FzZSBmb3IgY2hhcmFjdGVycyB0aGF0IGFyZSB0aGVpciBvd24gdGl0bGVjYXNlLCBidXQgbm90IHRoZWlyIG93bgordXBwZXJjYXNlLgorCisuLgorCisuLiBicG86IDU4MzUKKy4uIGRhdGU6IDc2OTIKKy4uIG5vbmNlOiBTQmtINTgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0RlcHJlY2F0ZSBQeU9TX2FzY2lpX2Zvcm1hdGQgYW5kIHJlcGxhY2UgaXQgd2l0aCBfUHlPU19kb3VibGVfdG9fc3RyaW5nIG9yCitQeU9TX2RvdWJsZV90b19zdHJpbmcuCisKKy4uCisKKy4uIGJwbzogNTI4MworLi4gZGF0ZTogNzY5MQorLi4gbm9uY2U6IHBfdnNRUAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU2V0dGluZyBfX2NsYXNzX18gaW4gX19kZWxfXyBjYXVzZWQgYSBzZWdmYXVsdC4KKworLi4KKworLi4gYnBvOiA1ODE2CisuLiBkYXRlOiA3NjkwCisuLiBub25jZTogNVdEZFgwCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitgYGNvbXBsZXgocmVwcih6KSlgYCBub3cgcmVjb3ZlcnMgeiBleGFjdGx5LCBldmVuIHdoZW4geiBpbnZvbHZlcyBuYW5zLCBpbmZzCitvciBuZWdhdGl2ZSB6ZXJvcy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3Njg5CisuLiBub25jZTogbGQwSmRUCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbXBsZW1lbnQgUEVQIDM3OCwgRm9ybWF0IFNwZWNpZmllciBmb3IgVGhvdXNhbmRzIFNlcGFyYXRvciwgZm9yIGZsb2F0cywKK2ludHMsIGFuZCBsb25ncy4KKworLi4KKworLi4gYnBvOiA1NTE1CisuLiBkYXRlOiA3Njg4CisuLiBub25jZTogSDFhTGNJCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCisnbicgZm9ybWF0dGluZyBmb3IgaW50cywgbG9uZ3MsIGFuZCBmbG9hdHMgaGFuZGxlcyBsZWFkaW5nIHplcm8gZm9ybWF0dGluZworcG9vcmx5LgorCisuLgorCisuLiBicG86IDU3NzIKKy4uIGRhdGU6IDc2ODcKKy4uIG5vbmNlOiB0WHFWZnQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZvciBmbG9hdC5fX2Zvcm1hdF9fLCBkb24ndCBhZGQgYSB0cmFpbGluZyAiLjAiIGlmIHdlJ3JlIHVzaW5nIG5vIHR5cGUgY29kZQorYW5kIHdlIGhhdmUgYW4gZXhwb25lbnQuCisKKy4uCisKKy4uIGJwbzogMzE2NgorLi4gZGF0ZTogNzY4NgorLi4gbm9uY2U6IG9MX3kweAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworTWFrZSBsb25nIC0+IGZsb2F0IChhbmQgaW50IC0+IGZsb2F0KSBjb252ZXJzaW9ucyBjb3JyZWN0bHkgcm91bmRlZC4KKworLi4KKworLi4gYnBvOiA1Nzg3CisuLiBkYXRlOiA3Njg1CisuLiBub25jZTogaVYxV1JFCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitgYG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNvbWVfdHlwZSwgIl9fYmFzZXNfXyIpYGAgc2VnZmF1bHRlZCBvbiBzb21lCitidWlsdC1pbiB0eXBlcy4KKworLi4KKworLi4gYnBvOiAxODY5CisuLiBkYXRlOiA3Njg0CisuLiBub25jZTogY1E0SFRPCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYSBjb3VwbGUgb2YgbWlub3Igcm91bmQoKSBpc3N1ZXMuICBgYHJvdW5kKDVlMTUrMSlgYCB3YXMgZ2l2aW5nIDVlMTUrMjsKK2Bgcm91bmQoLTAuMClgYCB3YXMgbG9zaW5nIHRoZSBzaWduIG9mIHRoZSB6ZXJvLgorCisuLgorCisuLiBicG86IDU3NTkKKy4uIGRhdGU6IDc2ODMKKy4uIG5vbmNlOiBqM2RMOVcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2Zsb2F0KCkgZGlkbid0IGNhbGwgX19mbG9hdF9fIG9uIHN0ciBzdWJjbGFzc2VzLgorCisuLgorCisuLiBicG86IDU3MDQKKy4uIGRhdGU6IDc2ODIKKy4uIG5vbmNlOiBURGs4Q2sKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSAiLTMiIGNvbW1hbmQtbGluZSBvcHRpb24gbm93IGltcGxpZXMgIi10Ii4KKworLi4KKworLi4gYnBvOiAyMTcwCisuLiBkYXRlOiA3NjgxCisuLiBub25jZTogMzVpck42CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSZWZhY3RvcmVkIGBgeG1sLmRvbS5taW5pZG9tLm5vcm1hbGl6ZWBgLCBpbmNyZWFzaW5nIGJvdGggaXRzIGNsYXJpdHkgYW5kCitpdHMgc3BlZWQuCisKKy4uCisKKy4uIGJwbzogMjM5NgorLi4gZGF0ZTogNzY4MAorLi4gbm9uY2U6IHYtb0owUQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlIG1lbW9yeXZpZXcgb2JqZWN0IHdhcyBiYWNrcG9ydGVkIGZyb20gUHl0aG9uIDMuMS4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3Njc5CisuLiBub25jZTogd3hiQ0dqCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYSBwcm9ibGVtIGluIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbiB0aGF0IGxlYWRzIHRvICJ1bmRldGVjdGVkIGVycm9ycyIKK3doZW4gaGl0dGluZyB0aGUgcmVjdXJzaW9uIGxpbWl0IHVuZGVyIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcy4KKworLi4KKworLi4gYnBvOiAxNjY1MjA2CisuLiBkYXRlOiA3Njc4CisuLiBub25jZTogRDl4eVZKCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSZW1vdmUgdGhlIGxhc3QgZWFnZXIgaW1wb3J0IGluIF93YXJuaW5ncy5jIGFuZCBtYWtlIGl0IGxhenkuCisKKy4uCisKKy4uIGJwbzogNDg2NQorLi4gZGF0ZTogNzY3NworLi4gbm9uY2U6IDlUN0lWSworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworT24gTWFjT1NYIC9MaWJyYXJ5L1B5dGhvbi8yLjcvc2l0ZS1wYWNrYWdlcyBpcyBhZGRlZCB0byB0aGUgZW5kIHN5cy5wYXRoLAorZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgc3lzdGVtIGluc3RhbGwgb2YgUHl0aG9uLgorCisuLgorCisuLiBicG86IDQ2ODgKKy4uIGRhdGU6IDc2NzYKKy4uIG5vbmNlOiBrN2pTUzkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZCBhIGhldXJpc3RpYyBzbyB0aGF0IHR1cGxlcyBhbmQgZGljdHMgY29udGFpbmluZyBvbmx5IHVudHJhY2thYmxlIG9iamVjdHMKK2FyZSBub3QgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IuIFRoaXMgY2FuIHJlZHVjZSB0aGUgc2l6ZSBvZgorY29sbGVjdGlvbnMgYW5kIHRoZXJlZm9yZSB0aGUgZ2FyYmFnZSBjb2xsZWN0aW9uIG92ZXJoZWFkIG9uIGxvbmctcnVubmluZworcHJvZ3JhbXMsIGRlcGVuZGluZyBvbiB0aGVpciBwYXJ0aWN1bGFyIHVzZSBvZiBkYXRhdHlwZXMuCisKKy4uCisKKy4uIGJwbzogNTUxMgorLi4gZGF0ZTogNzY3NQorLi4gbm9uY2U6IDBha1dIeQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmV3cml0ZSBQeUxvbmcgbG9uZyBkaXZpc2lvbiBhbGdvcml0aG0gKHhfZGl2cmVtKSB0byBpbXByb3ZlIGl0cworcGVyZm9ybWFuY2UuICBMb25nIGRpdmlzaW9ucyBhbmQgcmVtYWluZGVyIG9wZXJhdGlvbnMgYXJlIG5vdyBiZXR3ZWVuIDUwJQorYW5kIDE1MCUgZmFzdGVyLgorCisuLgorCisuLiBicG86IDQyNTgKKy4uIGRhdGU6IDc2NzQKKy4uIG5vbmNlOiBWelFhb2gKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK01ha2UgaXQgcG9zc2libGUgdG8gdXNlIGJhc2UgMioqMzAgaW5zdGVhZCBvZiBiYXNlIDIqKjE1IGZvciB0aGUgaW50ZXJuYWwKK3JlcHJlc2VudGF0aW9uIG9mIGludGVnZXJzLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gIEJhc2UgMioqMzAgaXMgZW5hYmxlZAorYnkgZGVmYXVsdCBvbiA2NC1iaXQgbWFjaGluZXMuICBBZGQgLS1lbmFibGUtYmlnLWRpZ2l0cyBvcHRpb24gdG8gY29uZmlndXJlLAord2hpY2ggb3ZlcnJpZGVzIHRoZSBkZWZhdWx0LiAgQWRkIHN5cy5sb25nX2luZm8gc3RydWN0c2VxIHRvIHByb3ZpZGUKK2luZm9ybWF0aW9uIGFib3V0IHRoZSBpbnRlcm5hbCBmb3JtYXQuCisKKy4uCisKKy4uIGJwbzogNDAzNAorLi4gZGF0ZTogNzY3MworLi4gbm9uY2U6IFdkWlZ2RQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHdlaXJkIGF0dHJpYnV0ZSBlcnJvciBtZXNzYWdlcyBvZiB0aGUgdHJhY2ViYWNrIG9iamVjdC4gKEFzIGEgcmVzdWx0Cit0cmFjZWJhY2suX19tZW1iZXJzX18gbm8gbG9uZ2VyIGV4aXN0cy4pCisKKy4uCisKKy4uIGJwbzogNDQ3NAorLi4gZGF0ZTogNzY3MgorLi4gbm9uY2U6IGQtZ09GcworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHlVbmljb2RlX0Zyb21XaWRlQ2hhciBub3cgY29udmVydHMgY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCTVAgdG8gc3Vycm9nYXRlCitwYWlycywgb24gc3lzdGVtcyB3aXRoIHNpemVvZih3Y2hhcl90KSA9PSA0IGFuZCBzaXplb2YoUHlfVU5JQ09ERSkgPT0gMi4KKworLi4KKworLi4gYnBvOiA1MjM3CisuLiBkYXRlOiA3NjcxCisuLiBub25jZTogVEM1dkhqCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBbGxvdyBhdXRvLW51bWJlcmVkIGZpZWxkcyBpbiBzdHIuZm9ybWF0KCkuIEZvciBleGFtcGxlOiBgYCd7fSB7fScuZm9ybWF0KDEsCisyKSA9PSAnMSAyJ2BgLgorCisuLgorCisuLiBicG86IDM2NTIKKy4uIGRhdGU6IDc2NzAKKy4uIG5vbmNlOiBMUzdsYlQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK01ha2UgdGhlICdsaW5lJyBhcmd1bWVudCBmb3IgYGB3YXJuaW5ncy5zaG93d2FybmluZygpYGAgYSByZXF1aXJlbWVudC4KK01lYW5zIHRoZSBEZXByZWNhdGlvbldhcm5pbmcgZnJvbSBQeXRob24gMi42IGNhbiBnbyBhd2F5LgorCisuLgorCisuLiBicG86IDUyNDcKKy4uIGRhdGU6IDc2NjkKKy4uIG5vbmNlOiBGaGVySHoKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHVua25vd24gZm9ybWF0IGNvZGVzIGFyZSB1c2VkIHdoZW4gdXNpbmcKK2Bgc3RyLmZvcm1hdCgpYGAgd2l0aCBzdHIsIHVuaWNvZGUsIGxvbmcsIGludCwgYW5kIGZsb2F0IGFyZ3VtZW50cy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NjY4CisuLiBub25jZTogVU1Fci1sCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSdW5uaW5nIFB5dGhvbiB3aXRoIHRoZSAtMyBvcHRpb24gbm93IGFsc28gd2FybnMgYWJvdXQgY2xhc3NpYyBkaXZpc2lvbiBmb3IKK2ludHMgYW5kIGxvbmdzLgorCisuLgorCisuLiBicG86IDUyNjAKKy4uIGRhdGU6IDc2NjcKKy4uIG5vbmNlOiBFbTg4LVMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0xvbmcgaW50ZWdlcnMgbm93IGNvbnN1bWUgbGVzcyBtZW1vcnk6IGF2ZXJhZ2Ugc2F2aW5nIGlzIDIgYnl0ZXMgcGVyIGxvbmcgb24KK2EgMzItYml0IHN5c3RlbSBhbmQgNiBieXRlcyBwZXIgbG9uZyBvbiBhIDY0LWJpdCBzeXN0ZW0uCisKKy4uCisKKy4uIGJwbzogNTE4NgorLi4gZGF0ZTogNzY2NgorLi4gbm9uY2U6IGoxaXM3OAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmVkdWNlIGhhc2ggY29sbGlzaW9ucyBmb3Igb2JqZWN0cyB3aXRoIG5vIF9faGFzaF9fIG1ldGhvZCBieSByb3RhdGluZyB0aGUKK29iamVjdCBwb2ludGVyIGJ5IDQgYml0cyB0byB0aGUgcmlnaHQuCisKKy4uCisKKy4uIGJwbzogNDU3NQorLi4gZGF0ZTogNzY2NQorLi4gbm9uY2U6IGtieXRLNQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IFB5X0lTX0lORklOSVRZIG1hY3JvIHRvIHdvcmsgY29ycmVjdGx5IG9uIHg4NyBGUFVzOiBpdCBub3cgZm9yY2VzIGl0cworYXJndW1lbnQgdG8gZG91YmxlIGJlZm9yZSB0ZXN0aW5nIGZvciBpbmZpbml0eS4KKworLi4KKworLi4gYnBvOiA0OTc4CisuLiBkYXRlOiA3NjY0CisuLiBub25jZTogMUNIQXBhCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQYXNzaW5nIGtleXdvcmQgYXJndW1lbnRzIGFzIHVuaWNvZGUgc3RyaW5ncyBpcyBub3cgYWxsb3dlZC4KKworLi4KKworLi4gYnBvOiAxMjQyNjU3CisuLiBkYXRlOiA3NjYzCisuLiBub25jZTogWERDblphCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCit0aGUgX19sZW5fXygpIGFuZCBfX2xlbmd0aF9oaW50X18oKSBjYWxscyBpbiBzZXZlcmFsIHRvb2xzIHdlcmUgc3VwcHJlc3NpbmcKK2FsbCBleGNlcHRpb25zLiAgVGhlc2UgaW5jbHVkZSBsaXN0KCksIGZpbHRlcigpLCBtYXAoKSwgemlwKCksIGFuZAorYnl0ZWFycmF5KCkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzY2MgorLi4gbm9uY2U6IGNGYXJ0OQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworb3MuZnRydW5jYXRlIHJhaXNlcyBPU0Vycm9ycyBpbnN0ZWFkIG9mIElPRXJyb3JzIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyCitvcyBmdW5jdGlvbnMuCisKKy4uCisKKy4uIGJwbzogNDk5MQorLi4gZGF0ZTogNzY2MQorLi4gbm9uY2U6IEFMVXhsMAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUGFzc2luZyBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMgdG8gaW8uRmlsZUlPIG5vdyByYWlzZXMgYW4gT1NFcnJvci4KKworLi4KKworLi4gYnBvOiA0ODA3CisuLiBkYXRlOiA3NjYwCisuLiBub25jZTogekJLRi1ZCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQb3J0IHRoZSBfd2lucmVnIG1vZHVsZSB0byBXaW5kb3dzIENFLgorCisuLgorCisuLiBicG86IDQ5MzUKKy4uIGRhdGU6IDc2NTkKKy4uIG5vbmNlOiBGQ1JzaTcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSBvdmVyZmxvdyBjaGVja2luZyBjb2RlIGluIHRoZSBleHBhbmR0YWJzKCkgbWV0aG9kIGNvbW1vbiB0byBzdHIsIGJ5dGVzCithbmQgYnl0ZWFycmF5IGNvdWxkIGJlIG9wdGltaXplZCBhd2F5IGJ5IHRoZSBjb21waWxlciwgbGV0dGluZyB0aGUKK2ludGVycHJldGVyIHNlZ2ZhdWx0IGluc3RlYWQgb2YgcmFpc2luZyBhbiBlcnJvci4KKworLi4KKworLi4gYnBvOiAzNzIwCisuLiBkYXRlOiA3NjU4CisuLiBub25jZTogQWhxcmFGCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYSBjcmFzaCB3aGVuIGFuIGl0ZXJhdG9yIG1vZGlmaWVzIGl0cyBjbGFzcyBhbmQgcmVtb3ZlcyBpdHMgX19uZXh0X18KK21ldGhvZC4KKworLi4KKworLi4gYnBvOiA0ODkzCisuLiBkYXRlOiA3NjU3CisuLiBub25jZTogNmNxQlRyCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitVc2UgTlQgdGhyZWFkaW5nIG9uIENFLgorCisuLgorCisuLiBicG86IDQ5MTUKKy4uIGRhdGU6IDc2NTYKKy4uIG5vbmNlOiA2ODdRWUYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1BvcnQgc3lzbW9kdWxlIHRvIFdpbmRvd3MgQ0UuCisKKy4uCisKKy4uIGJwbzogNDA3NAorLi4gZGF0ZTogNzY1NQorLi4gbm9uY2U6IFA2VzZBVQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQ2hhbmdlIHRoZSBjcml0ZXJpYSBmb3IgZG9pbmcgYSBmdWxsIGdhcmJhZ2UgY29sbGVjdGlvbiAoaS5lLiBjb2xsZWN0aW5nIHRoZQorb2xkZXN0IGdlbmVyYXRpb24pIHNvIHRoYXQgYWxsb2NhdGluZyBsb3RzIG9mIG9iamVjdHMgd2l0aG91dCBkZXN0cm95aW5nCit0aGVtIGRvZXMgbm90IHNob3cgcXVhZHJhdGljIHBlcmZvcm1hbmNlLiBCYXNlZCBvbiBhIHByb3Bvc2FsIGJ5IE1hcnRpbiB2b24KK0zDtndpcyBhdCBodHRwOi8vbWFpbC5weXRob24ub3JnL3BpcGVybWFpbC9weXRob24tZGV2LzIwMDgtSnVuZS8wODA1NzkuaHRtbC4KKworLi4KKworLi4gYnBvOiA0ODUwCisuLiBkYXRlOiA3NjU0CisuLiBub25jZTogSTJyUXh6CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitDaGFuZ2UgQ09VTlRfQUxMT0NTIHZhcmlhYmxlcyB0byBQeV9zc2l6ZV90LgorCisuLgorCisuLiBicG86IDExODAxOTMKKy4uIGRhdGU6IDc2NTMKKy4uIG5vbmNlOiBwQ2tPQ3oKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1doZW4gaW1wb3J0aW5nIGEgbW9kdWxlIGZyb20gYSAucHljIChvciAucHlvKSBmaWxlIHdpdGggYW4gZXhpc3RpbmcgLnB5Citjb3VudGVycGFydCwgb3ZlcnJpZGUgdGhlIGNvX2ZpbGVuYW1lIGF0dHJpYnV0ZXMgb2YgYWxsIGNvZGUgb2JqZWN0cyBpZiB0aGUKK29yaWdpbmFsIGZpbGVuYW1lIGlzIG9ic29sZXRlICh3aGljaCBjYW4gaGFwcGVuIGlmIHRoZSBmaWxlIGhhcyBiZWVuCityZW5hbWVkLCBtb3ZlZCwgb3IgaWYgaXQgaXMgYWNjZXNzZWQgdGhyb3VnaCBkaWZmZXJlbnQgcGF0aHMpLiAgUGF0Y2ggYnkKK1ppZ2EgU2VpbG5hY2h0IGFuZCBKZWFuLVBhdWwgQ2FsZGVyb25lLgorCisuLgorCisuLiBicG86IDQwNzUKKy4uIGRhdGU6IDc2NTIKKy4uIG5vbmNlOiBDY240bnIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1VzZSBgYE91dHB1dERlYnVnU3RyaW5nVygpYGAgaW4gUHlfRmF0YWxFcnJvci4KKworLi4KKworLi4gYnBvOiA0Nzk3CisuLiBkYXRlOiA3NjUxCisuLiBub25jZTogWDhCR01LCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJT0Vycm9yLmZpbGVuYW1lIHdhcyBub3Qgc2V0IHdoZW4gX2ZpbGVpby5GaWxlSU8gZmFpbGVkIHRvIG9wZW4gZmlsZSB3aXRoCitgc3RyJyBmaWxlbmFtZSBvbiBXaW5kb3dzLgorCisuLgorCisuLiBicG86IDM2ODAKKy4uIGRhdGU6IDc2NTAKKy4uIG5vbmNlOiBzRFlWZ0YKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JlZmVyZW5jZSBjeWNsZXMgY3JlYXRlZCB0aHJvdWdoIGEgZGljdCwgc2V0IG9yIGRlcXVlIGl0ZXJhdG9yIGRpZCBub3QgZ2V0Citjb2xsZWN0ZWQuCisKKy4uCisKKy4uIGJwbzogNDcwMQorLi4gZGF0ZTogNzY0OQorLi4gbm9uY2U6IEtDV2RWdAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHlPYmplY3RfSGFzaCBub3cgaW1wbGljaXRseSBjYWxscyBQeVR5cGVfUmVhZHkgb24gdHlwZXMgd2hlcmUgdGhlIHRwX2hhc2gKK2FuZCB0cF9kaWN0IHNsb3RzIGFyZSBib3RoIE5VTEwuCisKKy4uCisKKy4uIGJwbzogNDc2NAorLi4gZGF0ZTogNzY0OAorLi4gbm9uY2U6IDl1SmNDWAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworV2l0aCBpby5vcGVuLCBJT0Vycm9yLmZpbGVuYW1lIGlzIHNldCB3aGVuIHRyeWluZyB0byBvcGVuIGEgZGlyZWN0b3J5IG9uCitQT1NJWCBzeXN0ZW1zLgorCisuLgorCisuLiBicG86IDQ3NjQKKy4uIGRhdGU6IDc2NDcKKy4uIG5vbmNlOiBtODdjUXAKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0lPRXJyb3IuZmlsZW5hbWUgaXMgc2V0IHdoZW4gdHJ5aW5nIHRvIG9wZW4gYSBkaXJlY3Rvcnkgb24gUE9TSVggc3lzdGVtcy4KKworLi4KKworLi4gYnBvOiA0NzU5CisuLiBkYXRlOiA3NjQ2CisuLiBub25jZTogalNfSVVjCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitOb25lIGlzIG5vdyBhbGxvd2VkIGFzIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBgYGJ5dGVhcnJheS50cmFuc2xhdGUoKWBgLiAgSXQKK3dhcyBhbHdheXMgYWxsb3dlZCBmb3IgYGBieXRlcy50cmFuc2xhdGUoKWBgLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc2NDUKKy4uIG5vbmNlOiBOSkhQdzUKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZGVkIHRlc3QgY2FzZSB0byBlbnN1cmUgYXR0ZW1wdHMgdG8gcmVhZCBmcm9tIGEgZmlsZSBvcGVuZWQgZm9yIHdyaXRpbmcKK2ZhaWwuCisKKy4uCisKKy4uIGJwbzogMjQ2NworLi4gZGF0ZTogNzY0NAorLi4gbm9uY2U6IGhUZENETworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworZ2MuREVCVUdfU1RBVFMgcmVwb3J0ZWQgaW52YWxpZCBlbGFwc2VkIHRpbWVzLiBBbHNvLCBhbHdheXMgcHJpbnQgZWxhcHNlZAordGltZXMsIG5vdCBvbmx5IHdoZW4gc29tZSBvYmplY3RzIGFyZSB1bmNvbGxlY3RhYmxlL3VucmVhY2hhYmxlLiBPcmlnaW5hbAorcGF0Y2ggYnkgTmVpbCBTY2hlbWVuYXVlci4KKworLi4KKworLi4gYnBvOiAzNDM5CisuLiBkYXRlOiA3NjQzCisuLiBub25jZTogRkRxRm9iCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGQgYSBiaXRfbGVuZ3RoIG1ldGhvZCB0byBpbnQgYW5kIGxvbmcuCisKKy4uCisKKy4uIGJwbzogMjE4MworLi4gZGF0ZTogNzY0MgorLi4gbm9uY2U6IE40VFNwUworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU2ltcGxpZnkgYW5kIG9wdGltaXplIGJ5dGVjb2RlIGZvciBsaXN0IGNvbXByZWhlbnNpb25zLiAgT3JpZ2luYWwgcGF0Y2ggYnkKK05lYWwgTm9yd2l0ei4KKworLi4KKworLi4gYnBvOiA0NTk3CisuLiBkYXRlOiA3NjQxCisuLiBub25jZTogdEFYUVduCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBleGNlcHRpb24gaGFuZGxpbmcgd2hlbiB0aGUgX19leGl0X18gZnVuY3Rpb24gb2YgYSBjb250ZXh0IG1hbmFnZXIKK3JldHVybnMgYSB2YWx1ZSB0aGF0IGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gYSBib29sLgorCisuLgorCisuLiBicG86IDQ1OTcKKy4uIGRhdGU6IDc2NDAKKy4uIG5vbmNlOiBuUU9QR1YKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIHNldmVyYWwgb3Bjb2RlcyB0aGF0IHdlcmVuJ3QgYWx3YXlzIHByb3BhZ2F0aW5nIGV4Y2VwdGlvbnMuCisKKy4uCisKKy4uIGJwbzogNDQ0NQorLi4gZGF0ZTogNzYzOQorLi4gbm9uY2U6IGlydnNxWgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmVwbGFjZSBgYHNpemVvZihQeVN0cmluZ09iamVjdClgYCB3aXRoIGBgb2Zmc2V0b2YoUHlTdHJpbmdPYmplY3QsIG9iX3N2YWwpCisrIDFgYCB3aGVuIGFsbG9jYXRpbmcgbWVtb3J5IGZvciBzdHIgaW5zdGFuY2VzLiAgT24gYSB0eXBpY2FsIG1hY2hpbmUgdGhpcworc2F2ZXMgMyBieXRlcyBvZiBtZW1vcnkgKG9uIGF2ZXJhZ2UpIHBlciBzdHJpbmcgYWxsb2NhdGlvbi4KKworLi4KKworLi4gYnBvOiAzOTk2CisuLiBkYXRlOiA3NjM4CisuLiBub25jZTogTWFyVTRUCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitPbiBXaW5kb3dzLCB0aGUgUHlPU19DaGVja1N0YWNrIGZ1bmN0aW9uIHdvdWxkIGNhdXNlIHRoZSBpbnRlcnByZXRlciB0bworYWJvcnQgKCJGYXRhbCBQeXRob24gZXJyb3I6IENvdWxkIG5vdCByZXNldCB0aGUgc3RhY2shIikgaW5zdGVhZCBvZiB0aHJvd2luZworYSBNZW1vcnlFcnJvci4KKworLi4KKworLi4gYnBvOiAzNjg5CisuLiBkYXRlOiA3NjM3CisuLiBub25jZTogQ05ZeGx6CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitUaGUgbGlzdCByZXZlcnNlZCBpdGVyYXRvciBub3cgc3VwcG9ydHMgX19sZW5ndGhfaGludF9fIGluc3RlYWQgb2YgX19sZW5fXy4KK0JlaGF2aW9yIG5vdyBtYXRjaGVzIG90aGVyIHJldmVyc2VkIGl0ZXJhdG9ycy4KKworLi4KKworLi4gYnBvOiA0MzY3CisuLiBkYXRlOiA3NjM2CisuLiBub25jZTogZm1LRnFuCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQeXRob24gd291bGQgc2VnZmF1bHQgZHVyaW5nIGNvbXBpbGluZyB3aGVuIHRoZSB1bmljb2RlZGF0YSBtb2R1bGUgY291bGRuJ3QKK2JlIGltcG9ydGVkIGFuZCBcTiBlc2NhcGVzIHdlcmUgcHJlc2VudC4KKworLi4KKworLi4gYnBvOiA0MjMzCisuLiBkYXRlOiA3NjM1CisuLiBub25jZTogaVFqOTc2CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitDaGFuZ2VkIHNlbWFudGljIG9mIGBgX2ZpbGVpby5GaWxlSU9gYCdzIGBgY2xvc2UoKWBgIG1ldGhvZCBvbiBmaWxlIG9iamVjdHMKK3dpdGggY2xvc2VmZD1GYWxzZS4gVGhlIGZpbGUgZGVzY3JpcHRvciBpcyBzdGlsbCBrZXB0IG9wZW4gYnV0IHRoZSBmaWxlCitvYmplY3QgYmVoYXZlcyBsaWtlIGEgY2xvc2VkIGZpbGUuIFRoZSBgYEZpbGVJT2BgIG9iamVjdCBhbHNvIGdvdCBhIG5ldworcmVhZG9ubHkgYXR0cmlidXRlIGBgY2xvc2VmZGBgLgorCisuLgorCisuLiBicG86IDQzNDgKKy4uIGRhdGU6IDc2MzQKKy4uIG5vbmNlOiA4bWhfYncKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1NvbWUgYnl0ZWFycmF5IG1ldGhvZHMgcmV0dXJuZWQgdGhhdCBkaWRuJ3QgY2F1c2UgYW55IGNoYW5nZSB0byB0aGUKK2J5dGVhcnJheSwgcmV0dXJuZWQgdGhlIHNhbWUgYnl0ZWFycmF5IGluc3RlYWQgb2YgYSBjb3B5LgorCisuLgorCisuLiBicG86IDQzMTcKKy4uIGRhdGU6IDc2MzMKKy4uIG5vbmNlOiBHR1VITWMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeGVkIGEgY3Jhc2ggaW4gdGhlIGBgaW1hZ2VvcC5yZ2IycmdiOCgpYGAgZnVuY3Rpb24uCisKKy4uCisKKy4uIGJwbzogNDIzMAorLi4gZGF0ZTogNzYzMgorLi4gbm9uY2U6IE5kbXJmeAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworSWYgYGBfX2dldGF0dHJfX2BgIGlzIGEgZGVzY3JpcHRvciwgaXQgbm93IGZ1bmN0aW9ucyBjb3JyZWN0bHkuCisKKy4uCisKKy4uIGJwbzogNDA0OAorLi4gZGF0ZTogNzYzMQorLi4gbm9uY2U6IEttRDRGeQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlIHBhcnNlciBtb2R1bGUgbm93IGNvcnJlY3RseSB2YWxpZGF0ZXMgcmVsYXRpdmUgaW1wb3J0cy4KKworLi4KKworLi4gYnBvOiA0MjI1CisuLiBkYXRlOiA3NjMwCisuLiBub25jZTogN3pVLUhICisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitgYGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFsc2BgIGRpZG4ndCB3b3JrIGluIGFuIGV4ZWMKK3N0YXRlbWVudC4KKworLi4KKworLi4gYnBvOiA0MTc2CisuLiBkYXRlOiA3NjI5CisuLiBub25jZTogcWhjeElzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXhlZCBhIGNyYXNoIHdoZW4gcGlja2xpbmcgYW4gb2JqZWN0IHdoaWNoIGBgX19yZWR1Y2VfX2BgIG1ldGhvZCBkb2VzIG5vdAorcmV0dXJuIGl0ZXJhdG9ycyBmb3IgdGhlIDR0aCBhbmQgNXRoIGl0ZW1zLgorCisuLgorCisuLiBicG86IDQyMDkKKy4uIGRhdGU6IDc2MjgKKy4uIG5vbmNlOiBpRTZSMVoKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0VuYWJsaW5nIHVuaWNvZGVfbGl0ZXJhbHMgYW5kIHRoZSBwcmludF9mdW5jdGlvbiBpbiB0aGUgc2FtZSBfX2Z1dHVyZV9fCitpbXBvcnQgZGlkbid0IHdvcmsuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzYyNworLi4gbm9uY2U6IEVaempoRQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVXNpbmcgYGBub25sb2NhbGBgIGFzIGEgdmFyaWFibGUgbmFtZSB3aWxsIG5vdyByYWlzZSBhIFB5M2sgU3ludGF4V2FybmluZworYmVjYXVzZSBpdCBpcyBhIHJlc2VydmVkIHdvcmQgaW4gMy54LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc2MjYKKy4uIG5vbmNlOiA2dWdHLUwKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK09uIHdpbmRvd3MsIGBgb3MuY2hkaXIoKWBgIGdpdmVuIHVuaWNvZGUgd2FzIG5vdCB3b3JraW5nIGlmCitHZXRDdXJyZW50RGlyZWN0b3J5VyByZXR1cm5lZCBhIHBhdGggbG9uZ2VyIHRoYW4gTUFYX1BBVEguIChCdXQgSXQncworZG91YnRmdWwgdGhpcyBjb2RlIHBhdGggaXMgcmVhbGx5IGV4ZWN1dGVkIGJlY2F1c2UgSSBjYW5ub3QgbW92ZSB0byBzdWNoCitkaXJlY3Rvcnkgb24gd2luMmspCisKKy4uCisKKy4uIGJwbzogNDA2OQorLi4gZGF0ZTogNzYyNQorLi4gbm9uY2U6IEtaVmhjVAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworV2hlbiBgYHNldC5yZW1vdmUoZWxlbWVudClgYCBpcyB1c2VkIHdpdGggYSBzZXQgZWxlbWVudCwgdGhlIGVsZW1lbnQgaXMKK3RlbXBvcmFyaWx5IHJlcGxhY2VkIHdpdGggYW4gZXF1aXZhbGVudCBmcm96ZW5zZXQuICBCdXQgdGhlIGV2ZW50dWFsCitLZXlFcnJvciB3b3VsZCBhbHdheXMgcmVwb3J0IHRoZSBlbXB0eSBgYGZyb3plbnNldCgpYGAgYXMgdGhlIG1pc3Npbmcga2V5LgorTm93IGl0IGNvcnJlY3RseSByZWZlcnMgdG8gdGhlIGluaXRpYWwgZWxlbWVudC4KKworLi4KKworLi4gYnBvOiA0NTA5CisuLiBkYXRlOiA3NjI0CisuLiBub25jZTogc19NN3NVCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitWYXJpb3VzIGlzc3VlcyBzdXJyb3VuZGluZyByZXNpemUgb2YgYnl0ZWFycmF5IG9iamVjdHMgdG8gd2hpY2ggdGhlcmUgYXJlCitidWZmZXIgZXhwb3J0cy4KKworLi4KKworLi4gYnBvOiA0NzQ4CisuLiBkYXRlOiA3NjIzCisuLiBub25jZTogVmRBTXhLCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitMYW1iZGEgZ2VuZXJhdG9ycyBubyBsb25nZXIgcmV0dXJuIGEgdmFsdWUuCisKKy4uCisKKy4uIGJwbzogMzU4MgorLi4gZGF0ZTogNzYyMgorLi4gbm9uY2U6IGxQWk1oVgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVXNlIG5hdGl2ZSBUTFMgZnVuY3Rpb25zIG9uIFdpbmRvd3MKKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NjIxCisuLiBub25jZTogLTdFczJHCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitUaGUgcmUuc3ViKCksIHJlLnN1Ym4oKSBhbmQgcmUuc3BsaXQoKSBmdW5jdGlvbnMgbm93IGFjY2VwdCBhIGZsYWdzCitwYXJhbWV0ZXIuCisKKy4uCisKKy4uIGJwbzogMzg0NQorLi4gZGF0ZTogNzYyMAorLi4gbm9uY2U6IDF6czN0WAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworSW4gUHlSdW5fU2ltcGxlRmlsZUV4RmxhZ3MgYXZvaWQgaW52YWxpZCBtZW1vcnkgYWNjZXNzIHdpdGggc2hvcnQgZmlsZQorbmFtZXMuCisKKy4uCisKKy4uIGJwbzogMTExMzI0NAorLi4gZGF0ZTogNzYxOQorLi4gbm9uY2U6IDB5b3VvLQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHlfWElOQ1JFRiwgUHlfREVDUkVGLCBQeV9YREVDUkVGOiBBZGQgYGRvIHsgLi4uIH0gd2hpbGUgKDApJyB0byBhdm9pZAorY29tcGlsZXIgd2FybmluZ3MuCisKKy4uCisKKy4uIGJwbzogNTcwNQorLi4gZGF0ZTogNzYxOAorLi4gbm9uY2U6IHNWOWF4SAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworb3Muc2V0dWlkKCkgd291bGQgbm90IGFjY2VwdCB2YWx1ZXMgPiAyKiozMS0xIGJ1dCBwd2QuZ2V0cHduYW0oKSByZXR1cm5lZAordGhlbSBvbiA2NGJpdCBwbGF0Zm9ybXMuCisKKy4uCisKKy4uIGJwbzogNTEwOAorLi4gZGF0ZTogNzYxNworLi4gbm9uY2U6IGRBRkZ1aAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworSGFuZGxlICVzIGxpa2UgJVMgYW5kICVSIGluIFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpOiBDYWxsCitQeVVuaWNvZGVfRGVjb2RlVVRGOCgpIG9uY2UsIHJlbWVtYmVyIHRoZSByZXN1bHQgYW5kIG91dHB1dCBpdCBpbiBhIHNlY29uZAorc3RlcC4gVGhpcyBhdm9pZHMgcHJvYmxlbXMgd2l0aCBjb3VudGluZyBVVEYtOCBieXRlcyB0aGF0IGlnbm9yZXMgdGhlIGVmZmVjdAorb2YgdXNpbmcgdGhlIHJlcGxhY2UgZXJyb3IgaGFuZGxlciBpbiBQeVVuaWNvZGVfRGVjb2RlVVRGOCgpLgorCisuLgorCisuLiBicG86IDM3MzkKKy4uIGRhdGU6IDc2MTYKKy4uIG5vbmNlOiBNMmtBUXEKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1RoZSB1bmljb2RlLWludGVybmFsIGVuY29kZXIgbm93IHJlcG9ydHMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIGNvbnN1bWVkCitsaWtlIGFueSBvdGhlciBlbmNvZGVyIChpbnN0ZWFkIG9mIHRoZSBudW1iZXIgb2YgYnl0ZXMpLgorCisuLgorCisuLiBicG86IDI0MjIKKy4uIGRhdGU6IDc2MTUKKy4uIG5vbmNlOiB3emlnekIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1doZW4gY29tcGlsZWQgd2l0aCB0aGUgYGAtLXdpdGgtdmFsZ3JpbmRgYCBvcHRpb24sIHRoZSBweW1hbGxvYyBhbGxvY2F0b3IKK3dpbGwgYmUgYXV0b21hdGljYWxseSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgVmFsZ3JpbmQuICBUaGlzIGdpdmVzCitpbXByb3ZlZCBtZW1vcnkgbGVhayBkZXRlY3Rpb24gd2hlbiBydW5uaW5nIHVuZGVyIFZhbGdyaW5kLCB3aGlsZSB0YWtpbmcKK2FkdmFudGFnZSBvZiBweW1hbGxvYyBhdCBvdGhlciB0aW1lcy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NjE0CisuLiBub25jZTogaEVqNTAxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBjb3VudCgpIGFuZCByZXZlcnNlKCkgbWV0aG9kcyB0byBjb2xsZWN0aW9ucy5kZXF1ZSgpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc2MTMKKy4uIG5vbmNlOiB1UnNLc08KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHZhcmlhdGlvbnMgb2YgZXh0ZW5kaW5nIGRlcXVlczogIGQuZXh0ZW5kKGQpICBkLmV4dGVuZGxlZnQoZCkgIGQrPWQKKworLi4KKworLi4gYnBvOiA2OTg2CisuLiBkYXRlOiA3NjEyCisuLiBub25jZTogU2RHUHI5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBjcmFzaCBpbiB0aGUgSlNPTiBDIGFjY2VsZXJhdG9yIHdoZW4gY2FsbGVkIHdpdGggdGhlIHdyb25nIHBhcmFtZXRlcgordHlwZXMuICBQYXRjaCBieSBWaWN0b3IgU3Rpbm5lci4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NjExCisuLiBub25jZTogTkZzcTJFCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmc6IEFkZGVkIG9wdGlvbmFsICJzZWN1cmUiIHBhcmFtZXRlciB0byBTTVRQSGFuZGxlciwgdG8gZW5hYmxlIHVzZSBvZgorVExTIHdpdGggYXV0aGVudGljYXRpb24gY3JlZGVudGlhbHMuCisKKy4uCisKKy4uIGJwbzogMTkyMworLi4gZGF0ZTogNzYxMAorLi4gbm9uY2U6IGtucm40aQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aGUgcmVtb3ZhbCBvZiBtZWFuaW5nZnVsIHNwYWNlcyB3aGVuIFBLRy1JTkZPIGlzIGdlbmVyYXRlZCBpbgorRGlzdHV0aWxzLiBQYXRjaCBieSBTdGVwaGVuIEVtc2xpZS4KKworLi4KKworLi4gYnBvOiA0MTIwCisuLiBkYXRlOiA3NjA5CisuLiBub25jZTogM2NINFNyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Ryb3AgcmVmZXJlbmNlIHRvIENSVCBmcm9tIG1hbmlmZXN0IHdoZW4gYnVpbGRpbmcgZXh0ZW5zaW9ucyB3aXRoCittc3ZjOWNvbXBpbGVyLgorCisuLgorCisuLiBicG86IDczMzMKKy4uIGRhdGU6IDc2MDgKKy4uIG5vbmNlOiAyZktyNEMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGBgcG9zaXhgYCBtb2R1bGUgZ2FpbnMgYW4gYGBpbml0Z3JvdXBzKClgYCBmdW5jdGlvbiBwcm92aWRpbmcgYWNjZXNzIHRvCit0aGUgaW5pdGdyb3VwcygzKSBDIGxpYnJhcnkgY2FsbCBvbiBVbml4IHN5c3RlbXMgd2hpY2ggaW1wbGVtZW50IGl0LiBQYXRjaAorYnkgSmVhbi1QYXVsIENhbGRlcm9uZS4KKworLi4KKworLi4gYnBvOiA3NDA4CisuLiBkYXRlOiA3NjA3CisuLiBub25jZTogcmdQSFh1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGRpc3R1dGlscy50ZXN0cy5zZGlzdCBzbyBpdCBkb2Vzbid0IGNoZWNrIGZvciBncm91cCBvd25lcnNoaXAgd2hlbiB0aGUKK2dyb3VwIGlzIG5vdCBmb3JjZWQsIGJlY2F1c2UgdGhlIGdyb3VwIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgdXNlcidzCitncm91cCBhbmQgaW5oZXJpdCBmcm9tIGl0cyBjb250YWluZXIgd2hlbiB0aGUgdGVzdCBpcyBydW4uCisKKy4uCisKKy4uIGJwbzogMTUxNQorLi4gZGF0ZTogNzYwNgorLi4gbm9uY2U6IHhrcG91eAorLi4gc2VjdGlvbjogTGlicmFyeQorCitFbmFibGUgdXNlIG9mIGRlZXBjb3B5KCkgd2l0aCBpbnN0YW5jZSBtZXRob2RzLiAgUGF0Y2ggYnkgUm9iZXJ0IENvbGxpbnMuCisKKy4uCisKKy4uIGJwbzogNzQwMworLi4gZGF0ZTogNzYwNQorLi4gbm9uY2U6IEZ3Tk1kZAorLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nOiBGaXhlZCBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbiBpbiBsb2NrIGNyZWF0aW9uLgorCisuLgorCisuLiBicG86IDY4NDUKKy4uIGRhdGU6IDc2MDQKKy4uIG5vbmNlOiBUcmRMT0IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHJlc3RhcnQgc3VwcG9ydCBmb3IgYmluYXJ5IHVwbG9hZCBpbiBmdHBsaWIuICBUaGUgYGBzdG9yYmluYXJ5KClgYAorbWV0aG9kIG9mIEZUUCBhbmQgRlRQX1RMUyBvYmplY3RzIGdhaW5zIGFuIG9wdGlvbmFsICJyZXN0IiBhcmd1bWVudC4gIFBhdGNoCitieSBQYWJsbyBNb3V6by4KKworLi4KKworLi4gYnBvOiA1Nzg4CisuLiBkYXRlOiA3NjAzCisuLiBub25jZTogZVhaWXJDCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2BgZGF0ZXRpbWUudGltZWRlbHRhYGAgb2JqZWN0cyBnZXQgYSBuZXcgYGB0b3RhbF9zZWNvbmRzKClgYCBtZXRob2QKK3JldHVybmluZyB0aGUgdG90YWwgbnVtYmVyIG9mIHNlY29uZHMgaW4gdGhlIGR1cmF0aW9uLiAgUGF0Y2ggYnkgQnJpYW4KK1F1aW5sYW4uCisKKy4uCisKKy4uIGJwbzogNjYxNQorLi4gZGF0ZTogNzYwMgorLi4gbm9uY2U6IEwxYndYNworLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nOiBVc2VkIHdlYWtyZWZzIGluIGludGVybmFsIGhhbmRsZXIgbGlzdC4KKworLi4KKworLi4gYnBvOiAxNDg4OTQzCisuLiBkYXRlOiA3NjAxCisuLiBub25jZTogYkdzWnlCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2BgZGlmZmxpYi5EaWZmZXJgYCBkb2Vzbid0IGFsd2F5cyBhZGQgaGludHMgZm9yIHRhYiBjaGFyYWN0ZXJzLgorCisuLgorCisuLiBicG86IDYxMjMKKy4uIGRhdGU6IDc2MDAKKy4uIG5vbmNlOiA3alBBTVIKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGFyZmlsZSBub3cgb3BlbnMgZW1wdHkgYXJjaGl2ZXMgY29ycmVjdGx5IGFuZCBjb25zaXN0ZW50bHkgcmFpc2VzIFJlYWRFcnJvcgorb24gZW1wdHkgZmlsZXMuCisKKy4uCisKKy4uIGJwbzogNzM1NAorLi4gZGF0ZTogNzU5OQorLi4gbm9uY2U6IEppQzNmZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMudGVzdHMudGVzdF9tc3ZjOWNvbXBpbGVyIC0gZHJhZ2Z1bGx3aW5kb3dzIGNhbiBiZSAyLgorCisuLgorCisuLiBicG86IDUwMzcKKy4uIGRhdGU6IDc1OTgKKy4uIG5vbmNlOiBPdVJ0STcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJveHkgdGhlIF9fdW5pY29kZV9fIHNwZWNpYWwgbWV0aG9kIHRvIF9fdW5pY29kZV9fIGluc3RlYWQgb2YgX19zdHJfXy4KKworLi4KKworLi4gYnBvOiA3MzQxCisuLiBkYXRlOiA3NTk3CisuLiBub25jZTogZVBQZ3NfCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Nsb3NlIHRoZSBpbnRlcm5hbCBmaWxlIG9iamVjdCBpbiB0aGUgVGFyRmlsZSBjb25zdHJ1Y3RvciBpbiBjYXNlIG9mIGFuCitlcnJvci4KKworLi4KKworLi4gYnBvOiA3MjkzCisuLiBkYXRlOiA3NTk2CisuLiBub25jZTogTzVEY3UyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2BgZGlzdHV0aWxzLnRlc3RfbXN2Yzljb21waWxlcmBgIGlzIGZpeGVkIHRvIHdvcmsgb24gYW55IGZyZXNoIFdpbmRvd3MgYm94LgorSGVscCBwcm92aWRlZCBieSBEYXZpZCBCb2xlbi4KKworLi4KKworLi4gYnBvOiA3MzI4CisuLiBkYXRlOiA3NTk1CisuLiBub25jZTogSTdXMXBjCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3B5ZG9jIG5vIGxvbmdlciBjb3JydXB0cyBzeXMucGF0aCB3aGVuIHJ1biB3aXRoIHRoZSAnLW0nIHN3aXRjaC4KKworLi4KKworLi4gYnBvOiAyMDU0CisuLiBkYXRlOiA3NTk0CisuLiBub25jZTogQ3FzT0hSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Z0cGxpYiBub3cgcHJvdmlkZXMgYW4gRlRQX1RMUyBjbGFzcyB0byBkbyBzZWN1cmUgRlRQIHVzaW5nIFRMUyBvciBTU0wuCitQYXRjaCBieSBHaWFtcGFvbG8gUm9kb2xhJy4KKworLi4KKworLi4gYnBvOiA0OTY5CisuLiBkYXRlOiA3NTkzCisuLiBub25jZTogZXRFSkRnCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBtaW1ldHlwZXMgbW9kdWxlIG5vdyByZWFkcyB0aGUgTUlNRSBkYXRhYmFzZSBmcm9tIHRoZSByZWdpc3RyeSB1bmRlcgorV2luZG93cy4gIFBhdGNoIGJ5IEdhYnJpZWwgR2VuZWxsaW5hLgorCisuLgorCisuLiBicG86IDY4MTYKKy4uIGRhdGU6IDc1OTIKKy4uIG5vbmNlOiBGa1FIZ1UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcnVucHkgbm93IHByb3ZpZGVzIGEgcnVuX3BhdGggZnVuY3Rpb24gdGhhdCBhbGxvd3MgUHl0aG9uIGNvZGUgdG8gZXhlY3V0ZQorZmlsZSBwYXRocyB0aGF0IHJlZmVyIHRvIHNvdXJjZSBvciBjb21waWxlZCBQeXRob24gZmlsZXMgYXMgd2VsbCBhcworemlwZmlsZXMsIGRpcmVjdG9yaWVzIGFuZCBvdGhlciB2YWxpZCBzeXMucGF0aCBlbnRyaWVzIHRoYXQgY29udGFpbiBhCitfX21haW5fXy5weSBmaWxlLiBUaGlzIGFsbG93cyBhcHBsaWNhdGlvbnMgdGhhdCBydW4gb3RoZXIgUHl0aG9uIHNjcmlwdHMgdG8KK3N1cHBvcnQgdGhlIHNhbWUgZmxleGliaWxpdHkgYXMgdGhlIENQeXRob24gY29tbWFuZCBsaW5lIGl0c2VsZi4KKworLi4KKworLi4gYnBvOiA3MzE4CisuLiBkYXRlOiA3NTkxCisuLiBub25jZTogNVExaGtRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK211bHRpcHJvY2Vzc2luZyBub3cgdXNlcyBhIHRpbWVvdXQgd2hlbiBpdCBmYWlscyB0byBlc3RhYmxpc2ggYSBjb25uZWN0aW9uCit3aXRoIGFub3RoZXIgcHJvY2VzcywgcmF0aGVyIHRoYW4gbG9vcGluZyBlbmRsZXNzbHkuIFRoZSBkZWZhdWx0IHRpbWVvdXQgaXMKKzIwIHNlY29uZHMsIHdoaWNoIHNob3VsZCBiZSBhbXBseSBzdWZmaWNpZW50IGZvciBsb2NhbCBjb25uZWN0aW9ucy4KKworLi4KKworLi4gYnBvOiA3MTk3CisuLiBkYXRlOiA3NTkwCisuLiBub25jZTogMGNtMVFtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FsbG93IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyIG9iamVjdHMgdG8gYmUgcGlja2xlZCBhbmQgdW5waWNrbGVkLiAgVGhpcworZml4ZXMgY3Jhc2hlcyB1bmRlciBXaW5kb3dzIHdoZW4gdHJ5aW5nIHRvIHJ1biB0ZXN0X211bHRpcHJvY2Vzc2luZyBpbgordmVyYm9zZSBtb2RlLgorCisuLgorCisuLiBicG86IDcyODIKKy4uIGRhdGU6IDc1ODkKKy4uIG5vbmNlOiBQR1NYWDUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgbWVtb3J5IGxlYWsgd2hlbiBhbiBSTG9jayB3YXMgdXNlZCBpbiBhIHRocmVhZCBvdGhlciB0aGFuIHRob3NlCitzdGFydGVkIHRocm91Z2ggYGB0aHJlYWRpbmcuVGhyZWFkYGAgKGZvciBleGFtcGxlLCB1c2luZworYGB0aHJlYWQuc3RhcnRfbmV3X3RocmVhZCgpYGAuCisKKy4uCisKKy4uIGJwbzogNzI2NAorLi4gZGF0ZTogNzU4OAorLi4gbm9uY2U6IGdYTkJXdAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBwb3NzaWJsZSBkZWFkbG9jayB3aGVuIGRlYWxsb2NhdGluZyB0aHJlYWQtbG9jYWwgb2JqZWN0cyB3aGljaCBhcmUKK3BhcnQgb2YgYSByZWZlcmVuY2UgY3ljbGUuCisKKy4uCisKKy4uIGJwbzogNzIxMQorLi4gZGF0ZTogNzU4NworLi4gbm9uY2U6IHd1dk1iaQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBbGxvdyA2NC1iaXQgdmFsdWVzIGZvciB0aGUgYGBpZGVudGBgIGFuZCBgYGRhdGFgYCBmaWVsZHMgb2Yga2V2ZW50IG9iamVjdHMKK29uIDY0LWJpdCBzeXN0ZW1zLiAgUGF0Y2ggYnkgTWljaGFlbCBCcm9naHRvbi4KKworLi4KKworLi4gYnBvOiA2ODk2CisuLiBkYXRlOiA3NTg2CisuLiBub25jZTogclhxT1V4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2BgbWFpbGJveC5NYWlsZGlyYGAgbm93IGludmFsaWRhdGVzIGl0cyBpbnRlcm5hbCBjYWNoZSBlYWNoIHRpbWUgYQorbW9kaWZpY2F0aW9uIGlzIGRvbmUgdGhyb3VnaCBpdC4gIFRoaXMgZml4ZXMgaW5jb25zaXN0ZW5jaWVzIGFuZCB0ZXN0CitmYWlsdXJlcyBvbiBzeXN0ZW1zIHdpdGggc2xpZ2h0bHkgYm9ndXMgbXRpbWUgYmVoYXZpb3VyLgorCisuLgorCisuLiBicG86IDcyNDYKKy4uIGRhdGU6IDc1ODUKKy4uIG5vbmNlOiB2VldvYzEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZ2V0cGFzcyBub3cgcHJvcGVybHkgZmx1c2hlcyBpbnB1dCBiZWZvcmUgcmVhZGluZyBmcm9tIHN0ZGluIHNvIHRoYXQKK2V4aXN0aW5nIGlucHV0IGRvZXMgbm90IGNvbmZ1c2UgaXQgYW5kIGxlYWQgdG8gaW5jb3JyZWN0IGVudHJ5IG9yIGFuCitJT0Vycm9yLiAgSXQgYWxzbyBwcm9wZXJseSBmbHVzaGVzIGl0IGFmdGVyd2FyZHMgdG8gYXZvaWQgdGhlIHRlcm1pbmFsCitlY2hvaW5nIHRoZSBpbnB1dCBhZnRlcndhcmRzIG9uIE9TZXMgc3VjaCBhcyBTb2xhcmlzLiAoU2VlIGFsc286IGJwby03MjA4KQorCisuLgorCisuLiBicG86IDcyMzMKKy4uIGRhdGU6IDc1ODQKKy4uIG5vbmNlOiBCZng1SjQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgbnVtYmVyIG9mIHR3by1hcmd1bWVudCBEZWNpbWFsIG1ldGhvZHMgdG8gbWFrZSBzdXJlIHRoYXQgdGhleSBhY2NlcHQKK2FuIGludCBvciBsb25nIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuICBBbHNvIGZpeCBidWdneSBoYW5kbGluZyBvZiBsYXJnZQorYXJndW1lbnRzICh0aG9zZSB3aXRoIGNvZWZmaWNpZW50IGxvbmdlciB0aGFuIHRoZSBjdXJyZW50IHByZWNpc2lvbikgaW4KK3NoaWZ0IGFuZCByb3RhdGUuCisKKy4uCisKKy4uIGJwbzogNDc1MAorLi4gZGF0ZTogNzU4MworLi4gbm9uY2U6IHFzVVhkUQorLi4gc2VjdGlvbjogTGlicmFyeQorCitTdG9yZSB0aGUgYmFzZW5hbWUgb2YgdGhlIG9yaWdpbmFsIGZpbGVuYW1lIGluIHRoZSBnemlwIEZOQU1FIGhlYWRlciBhcworcmVxdWlyZWQgYnkgUkZDIDE5NTIuCisKKy4uCisKKy4uIGJwbzogMTE4MAorLi4gZGF0ZTogNzU4MgorLi4gbm9uY2U6IGFqckk5MworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBhIG5ldyBnbG9iYWwgb3B0aW9uIHRvIGlnbm9yZSB+Ly5weWRpc3R1dGlscy5jZmcgaW4gRGlzdHV0aWxzLgorCisuLgorCisuLiBicG86IDcyMTgKKy4uIGRhdGU6IDc1ODEKKy4uIG5vbmNlOiBfZm05UjUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRlc3Rfc2l0ZSBmb3Igd2luMzIsIHRoZSBkaXJlY3RvcnkgY29tcGFyaXNvbiB3YXMgZG9uZSB3aXRoIGFuCit1cHBlcmNhc2UuCisKKy4uCisKKy4uIGJwbzogNzIwNQorLi4gZGF0ZTogNzU4MAorLi4gbm9uY2U6IFFpUDFYLQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBwb3NzaWJsZSBkZWFkbG9jayB3aGVuIHVzaW5nIGEgQloyRmlsZSBvYmplY3QgZnJvbSBzZXZlcmFsIHRocmVhZHMgYXQKK29uY2UuCisKKy4uCisKKy4uIGJwbzogNzA3MQorLi4gZGF0ZTogNzU3OQorLi4gbm9uY2U6IFFGc1YtRworLi4gc2VjdGlvbjogTGlicmFyeQorCitieXRlLWNvbXBpbGF0aW9uIGluIERpc3R1dGlscyBpcyBub3cgZG9uZSB3aXRoIHJlc3BlY3QgdG8KK3N5cy5kb250X3dyaXRlX2J5dGVjb2RlLgorCisuLgorCisuLiBicG86IDcwNjYKKy4uIGRhdGU6IDc1NzgKKy4uIG5vbmNlOiBGUVRuNWUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYXJjaGl2ZV91dGlsLm1ha2VfYXJjaGl2ZSBub3cgcmVzdG9yZXMgdGhlIGN3ZCBpZiBhbiBlcnJvciBpcyByYWlzZWQuCitJbml0aWFsIHBhdGNoIGJ5IEV6aW8gTWVsb3R0aS4KKworLi4KKworLi4gYnBvOiA2MjE4CisuLiBkYXRlOiA3NTc3CisuLiBub25jZTogR0ZVMzZJCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2lvLlN0cmluZ0lPIGFuZCBpby5CeXRlc0lPIGluc3RhbmNlcyBhcmUgbm93IHBpY2tsYWJsZSB3aXRoIHByb3RvY29sIDIuCisKKy4uCisKKy4uIGJwbzogNzA3NworLi4gZGF0ZTogNzU3NgorLi4gbm9uY2U6IE5mVGZSbworLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nOiBTeXNMb2dIYW5kbGVyIG5vdyB0cmVhdHMgVW5pY29kZSBhcyBwZXIgUkZDIDU0MjQuCisKKy4uCisKKy4uIGJwbzogNzA5OQorLi4gZGF0ZTogNzU3NQorLi4gbm9uY2U6IGZ4aC16dworLi4gc2VjdGlvbjogTGlicmFyeQorCitEZWNpbWFsLmlzX25vcm1hbCBub3cgcmV0dXJucyBUcnVlIGZvciBudW1iZXJzIHdpdGggZXhwb25lbnQgbGFyZ2VyIHRoYW4KK2VtYXguCisKKy4uCisKKy4uIGJwbzogNTgzMworLi4gZGF0ZTogNzU3NAorLi4gbm9uY2U6IGJDbVUzYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggZXh0cmEgc3BhY2UgY2hhcmFjdGVyIGluIHJlYWRsaW5lIGNvbXBsZXRpb24gd2l0aCB0aGUgR05VIHJlYWRsaW5lCitsaWJyYXJ5IHZlcnNpb24gNi4wLgorCisuLgorCisuLiBicG86IDcxMzMKKy4uIGRhdGU6IDc1NzMKKy4uIG5vbmNlOiBtNnJ4b1QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU1NMIG9iamVjdHMgbm93IHN1cHBvcnQgdGhlIG5ldyBidWZmZXIgQVBJLgorCisuLgorCisuLiBicG86IDcxNDkKKy4uIGRhdGU6IDc1NzIKKy4uIG5vbmNlOiBKX2VxN0IKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordXJsbGliIGZhaWxzIG9uIE9TWCBpbiB0aGUgcHJveHkgZGV0ZWN0aW9uIGNvZGUuCisKKy4uCisKKy4uIGJwbzogNzA2OQorLi4gZGF0ZTogNzU3MQorLi4gbm9uY2U6IHY5UDdhMAorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIGluc3BlY3QuaXNhYnN0cmFjdCgpIHJldHVybiBhIGJvb2xlYW4uCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzU3MAorLi4gbm9uY2U6IG14WnBkSQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgc3VwcG9ydCB0byB0aGUgYGBpaG9va3NgYCBtb2R1bGUgZm9yIHJlbGF0aXZlIGltcG9ydHMuCisKKy4uCisKKy4uIGJwbzogNjg5NAorLi4gZGF0ZTogNzU2OQorLi4gbm9uY2U6IDFwZU90cworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aGUgaXNzdWUgdXJsbGliMiBkb2Vzbid0IHJlc3BlY3QgIm5vX3Byb3h5IiBlbnZpcm9ubWVudC4KKworLi4KKworLi4gYnBvOiA3MDg2CisuLiBkYXRlOiA3NTY4CisuLiBub25jZTogbVppZHZOCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIFRDUCBzdXBwb3J0IHRvIFN5c0xvZ0hhbmRsZXIsIGFuZCB0aWRpZWQgdXAgc29tZSBhbmFjaHJvbmlzbXMgaW4gdGhlCitjb2RlIHdoaWNoIHdlcmUgYSByZWxpYyBvZiAxLjUuMiBjb21wYXRpYmlsaXR5LgorCisuLgorCisuLiBicG86IDcwODIKKy4uIGRhdGU6IDc1NjcKKy4uIG5vbmNlOiAwQ1NKWHkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV2hlbiBmYWxsaW5nIGJhY2sgdG8gdGhlIE1JTUUgJ25hbWUnIHBhcmFtZXRlciwgdGhlIGNvcnJlY3QgcGxhY2UgdG8gbG9vaworZm9yIGl0IGlzIHRoZSBDb250ZW50LVR5cGUgaGVhZGVyLgorCisuLgorCisuLiBicG86IDcwNDgKKy4uIGRhdGU6IDc1NjYKKy4uIG5vbmNlOiBUWFI1WHIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRm9yY2UgRGVjaW1hbC5sb2diIHRvIHJvdW5kIGl0cyByZXN1bHQgd2hlbiB0aGF0IHJlc3VsdCBpcyB0b28gbGFyZ2UgdG8gZml0CitpbiB0aGUgY3VycmVudCBwcmVjaXNpb24uCisKKy4uCisKKy4uIGJwbzogNjUxNgorLi4gZGF0ZTogNzU2NQorLi4gbm9uY2U6IG9tZ3NOeAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBvd25lci9ncm91cCBzdXBwb3J0IHdoZW4gY3JlYXRpbmcgdGFyIGFyY2hpdmVzIGluIERpc3R1dGlscy4KKworLi4KKworLi4gYnBvOiA3MDMxCisuLiBkYXRlOiA3NTY0CisuLiBub25jZTogbjA5ZFhECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBgYFRlc3RDYXNlLmFzc2VydChOb3QpSXNJbnN0YW5jZSgpYGAgbWV0aG9kcy4KKworLi4KKworLi4gYnBvOiA2NzkwCisuLiBkYXRlOiA3NTYzCisuLiBub25jZTogWjhVOXJrCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgaXQgcG9zc2libGUgYWdhaW4gdG8gcGFzcyBhbiBgYGFycmF5LmFycmF5YGAgdG8KK2BgaHR0cGxpYi5IVFRQQ29ubmVjdGlvbi5zZW5kYGAuICBQYXRjaCBieSBLaXJrIE1jRG9uYWxkLgorCisuLgorCisuLiBicG86IDYyMzYKKy4uIGRhdGU6IDc1NjIKKy4uIG5vbmNlOiBjZlVXZWsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHZhcmlvdXMgZmFpbHVyZXMgaW4gdGhlIGBpb2AgbW9kdWxlIHVuZGVyIEFJWCBhbmQgb3RoZXIgcGxhdGZvcm1zLCB3aGVuCit1c2luZyBhIG5vbi1nY2MgY29tcGlsZXIuICBQYXRjaCBieSBlZ3JlZW4uIChTZWUgYWxzbzogYnBvLTYzNDgpCisKKy4uCisKKy4uIGJwbzogNjk1NAorLi4gZGF0ZTogNzU2MQorLi4gbm9uY2U6IFhyLUpWZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBjcmFzaCB3aGVuIHVzaW5nIERJU1RVVElMU19ERUJVRyBmbGFnIGluIERpc3R1dGlscy4KKworLi4KKworLi4gYnBvOiA2ODUxCisuLiBkYXRlOiA3NTYwCisuLiBub25jZTogSHZ6ZmkyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB1cmxsaWIudXJsb3BlbiBjcmFzaCBvbiBzZWNvbmRhaXJ5IHRocmVhZHMgb24gT1NYIDEwLjYKKworLi4KKworLi4gYnBvOiA0NjA2CisuLiBkYXRlOiA3NTU5CisuLiBub25jZTogbVB4RE5XCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Bhc3NpbmcgJ05vbmUnIGlmIGN0eXBlcyBhcmd0eXBlIGlzIHNldCB0byBQT0lOVEVSKC4uLikgZG9lcyBub3cgYWx3YXlzCityZXN1bHQgaW4gTlVMTC4KKworLi4KKworLi4gYnBvOiA1MDQyCisuLiBkYXRlOiA3NTU4CisuLiBub25jZTogZUhURHFaCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2N0eXBlcyBTdHJ1Y3R1cmUgc3ViLXN1YmNsYXNzIGRvZXMgbm93IGluaXRpYWxpemUgY29ycmVjdGx5IHdpdGggYmFzZSBjbGFzcworcG9zaXRpb25hbCBhcmd1bWVudHMuCisKKy4uCisKKy4uIGJwbzogNjkzOAorLi4gZGF0ZTogNzU1NworLi4gbm9uY2U6IHFxNHgwSAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBUeXBlRXJyb3IgaW4gc3RyaW5nIGZvcm1hdHRpbmcgb2YgYSBtdWx0aXByb2Nlc3NpbmcgZGVidWcgbWVzc2FnZS4KKworLi4KKworLi4gYnBvOiA2NjM1CisuLiBkYXRlOiA3NTU2CisuLiBub25jZTogaE16bzVnCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwcm9maWxlciBwcmludGluZyB1c2FnZSBtZXNzYWdlLgorCisuLgorCisuLiBicG86IDY4NTYKKy4uIGRhdGU6IDc1NTUKKy4uIG5vbmNlOiBweFJWQ2QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGEgZmlsdGVyIGtleXdvcmQgYXJndW1lbnQgdG8gVGFyRmlsZS5hZGQoKS4KKworLi4KKworLi4gYnBvOiA2MTYzCisuLiBkYXRlOiA3NTU0CisuLiBub25jZTogUklCUHppCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIEhQLVVYIHJ1bnRpbWUgbGlicmFyeSBkaXIgb3B0aW9ucyBpbiBkaXN0dXRpbHMudW5peGNvbXBpbGVyLiAgSW5pdGlhbAorcGF0Y2ggYnkgU3JpZGhhciBSYXRuYWt1bWFyIGFuZCBNaWNoYWVsIEhhdWJlbndhbGxuZXIuCisKKy4uCisKKy4uIGJwbzogNjg1NworLi4gZGF0ZTogNzU1MworLi4gbm9uY2U6IEhkZlVxWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitEZWZhdWx0IGZvcm1hdCgpIGFsaWdubWVudCBzaG91bGQgYmUgJz4nIGZvciBEZWNpbWFsIGluc3RhbmNlcy4KKworLi4KKworLi4gYnBvOiA2Nzk1CisuLiBkYXRlOiA3NTUyCisuLiBub25jZTogcTc0S1hUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ludChEZWNpbWFsKCduYW4nKSkgbm93IHJhaXNlcyBWYWx1ZUVycm9yIGluc3RlYWQgb2YgcmV0dXJuaW5nIE5hTiBvcgorcmFpc2luZyBJbnZhbGlkQ29udGV4dC4gIEFsc28sIGZpeCBpbmZpbml0ZSByZWN1cnNpb24gaW4KK2xvbmcoRGVjaW1hbCgnbmFuJykpLgorCisuLgorCisuLiBicG86IDY4NTAKKy4uIGRhdGU6IDc1NTEKKy4uIG5vbmNlOiBxc183VUYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGJ1ZyBpbiBEZWNpbWFsLl9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyIGZvciBmb3JtYXRzIHdpdGggbm8gdHlwZQorc3BlY2lmaWVyLgorCisuLgorCisuLiBicG86IDQ5MzcKKy4uIGRhdGU6IDc1NTAKKy4uIG5vbmNlOiBxM3NtYkkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcGxhdC1tYWMvYnVuZGxlYnVpbGRlciByZWZlcnMgdG8gbm9uLWV4aXN0aW5nIHZlcnNpb24ucGxpc3QuCisKKy4uCisKKy4uIGJwbzogNjgzOAorLi4gZGF0ZTogNzU0OQorLi4gbm9uY2U6IE9PckFDMAorLi4gc2VjdGlvbjogTGlicmFyeQorCitVc2UgYSBsaXN0IHRvIGFjY3VtdWxhdGUgdGhlIHZhbHVlIGluc3RlYWQgb2YgcmVwZWF0ZWRseSBjb25jYXRlbmF0aW5nCitzdHJpbmdzIGluIGh0dHBsaWIncyBIVFRQUmVzcG9uc2UuX3JlYWRfY2h1bmtlZCBwcm92aWRpbmcgYSBzaWduaWZpY2FudAorc3BlZWQgaW5jcmVhc2Ugd2hlbiBkb3dubG9hZGluZyBsYXJnZSBmaWxlcyBzZXJ2ZW5kIHdpdGggYSBUcmFuc2Zlci1FbmNvZGluZworb2YgJ2NodW5rZWQnLgorCisuLgorCisuLiBicG86IDUyNzUKKy4uIGRhdGU6IDc1NDgKKy4uIG5vbmNlOiAtaVc1ZUsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gQ29va2llJ3MgQ29va2llLmxvYWQoKSwgcHJvcGVybHkgaGFuZGxlIG5vbi1zdHJpbmcgYXJndW1lbnRzIGFzCitkb2N1bWVudGVkLgorCisuLgorCisuLiBicG86IDI2NjYKKy4uIGRhdGU6IDc1NDcKKy4uIG5vbmNlOiBYTzFyU3gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSGFuZGxlIEJST1dTRVIgZW52aXJvbm1lbnQgdmFyaWFibGUgcHJvcGVybHkgZm9yIHVua25vd24gYnJvd3NlciBuYW1lcyBpbgordGhlIHdlYmJyb3dzZXIgbW9kdWxlLgorCisuLgorCisuLiBicG86IDYwNTQKKy4uIGRhdGU6IDc1NDYKKy4uIG5vbmNlOiA1OTMtTXgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRG8gbm90IG5vcm1hbGl6ZSBzdG9yZWQgcGF0aG5hbWVzIGluIHRhcmZpbGUuCisKKy4uCisKKy4uIGJwbzogNjc5NAorLi4gZGF0ZTogNzU0NQorLi4gbm9uY2U6IGs1LXJtaworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggRGVjaW1hbC5jb21wYXJlX3RvdGFsIGFuZCBEZWNpbWFsLmNvbXBhcmVfdG90YWxfbWFnOiBOYU4gcGF5bG9hZHMgYXJlCitub3cgb3JkZXJlZCBieSBpbnRlZ2VyIHZhbHVlIHJhdGhlciB0aGFuIGxleGljb2dyYXBoaWNhbGx5LgorCisuLgorCisuLiBicG86IDY2OTMKKy4uIGRhdGU6IDc1NDQKKy4uIG5vbmNlOiBfZFdIX2YKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTmV3IGZ1bmN0aW9ucyBpbiBzaXRlLnB5IHRvIGdldCB1c2VyL2dsb2JhbCBzaXRlIHBhY2thZ2VzIHBhdGhzLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc1NDMKKy4uIG5vbmNlOiB0WkY3QWkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHRocmVhZC5sb2NrIHR5cGUgbm93IHN1cHBvcnRzIHdlYWsgcmVmZXJlbmNlcy4KKworLi4KKworLi4gYnBvOiAxMzU2OTY5CisuLiBkYXRlOiA3NTQyCisuLiBub25jZTogZlR3bnZSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBtaXNzaW5nIGluZm8gbWV0aG9kcyBpbiBUaXguSExpc3QuCisKKy4uCisKKy4uIGJwbzogMTUyMjU4NworLi4gZGF0ZTogNzU0MQorLi4gbm9uY2U6IHoybjg0RgorLi4gc2VjdGlvbjogTGlicmFyeQorCitOZXcgY29uc3RhbnRzIGFuZCBtZXRob2RzIGZvciB0aGUgVGl4LkdyaWQgd2lkZ2V0LgorCisuLgorCisuLiBicG86IDEyNTA0NjkKKy4uIGRhdGU6IDc1NDAKKy4uIG5vbmNlOiBNYmFrMHgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSByZXR1cm4gdmFsdWUgb2YgVGl4LlBhbmVkV2luZG93LnBhbmVzLgorCisuLgorCisuLiBicG86IDExMTk2NzMKKy4uIGRhdGU6IDc1MzkKKy4uIG5vbmNlOiByU0NTb3EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRG8gbm90IG92ZXJyaWRlIFRraW50ZXIuVGV4dCBtZXRob2RzIHdoZW4gY3JlYXRpbmcgYSBTY3JvbGxlZFRleHQuCisKKy4uCisKKy4uIGJwbzogNjY2NQorLi4gZGF0ZTogNzUzOAorLi4gbm9uY2U6IDRlcDB0RAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggZm5tYXRjaCB0byBwcm9wZXJseSBtYXRjaCBmaWxlbmFtZXMgd2l0aCBuZXdsaW5lcyBpbiB0aGVtLgorCisuLgorCisuLiBicG86IDExMzUKKy4uIGRhdGU6IDc1MzcKKy4uIG5vbmNlOiAzQTVaLVIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHRoZSBYVmlldyBhbmQgWVZpZXcgbWl4LWlucyB0byBhdm9pZCBkdXBsaWNhdGluZyB0aGUgeHZpZXcqIGFuZCB5dmlldyoKK21ldGhvZHMuCisKKy4uCisKKy4uIGJwbzogNjYyOQorLi4gZGF0ZTogNzUzNgorLi4gbm9uY2U6IDA5NWRqVAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBkYXRhIGNvcnJ1cHRpb24gaXNzdWUgaW4gdGhlIG5ldyBgaW9gIHBhY2thZ2UsIHdoaWNoIGNvdWxkIG9jY3VyIHdoZW4KK3dyaXRpbmcgdG8gYSBCdWZmZXJlZFJhbmRvbSBvYmplY3QgKGUuZy4gYSBmaWxlIG9wZW5lZCBpbiAicmIrIiBvciAid2IrIgorbW9kZSkgYWZ0ZXIgaGF2aW5nIGJ1ZmZlcmVkIGEgY2VydGFpbiBhbW91bnQgb2YgZGF0YSBmb3IgcmVhZGluZy4gVGhpcyBidWcKK3dhcyBub3QgcHJlc2VudCBpbiB0aGUgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogNDY2MAorLi4gZGF0ZTogNzUzNQorLi4gbm9uY2U6IHh5VEM1SgorLi4gc2VjdGlvbjogTGlicmFyeQorCitJZiBhIG11bHRpcHJvY2Vzc2luZy5Kb2luYWJsZVF1ZXVlLnB1dCgpIHdhcyBwcmVlbXB0ZWQsIGl0IHdhcyBwb3NzaWJsZSB0bworZ2V0IGEgc3B1cmlvdXMgJ3Rhc2tfZG9uZSgpIGNhbGxlZCB0b28gbWFueSB0aW1lcycgZXJyb3IuCisKKy4uCisKKy4uIGJwbzogMTYyODIwNQorLi4gZGF0ZTogNzUzNAorLi4gbm9uY2U6IEJrbTlsQgorLi4gc2VjdGlvbjogTGlicmFyeQorCitTb2NrZXQgZmlsZSBvYmplY3RzIHJldHVybmVkIGJ5IHNvY2tldC5zb2NrZXQubWFrZWZpbGUoKSBub3cgcHJvcGVybHkKK2hhbmRsZXMgRUlOVFIgd2l0aGluIHRoZSByZWFkLCByZWFkbGluZSwgd3JpdGUgJiBmbHVzaCBtZXRob2RzLiAgVGhlCitzb2NrZXQuc2VuZGFsbCgpIG1ldGhvZCBub3cgcHJvcGVybHkgaGFuZGxlcyBpbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbHMuCisKKy4uCisKKy4uIGJwbzogNjU5NQorLi4gZGF0ZTogNzUzMworLi4gbm9uY2U6IDVrQmJYYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgRGVjaW1hbCBjb25zdHJ1Y3RvciBub3cgYWxsb3dzIGFyYml0cmFyeSBVbmljb2RlIGRlY2ltYWwgZGlnaXRzIGluCitpbnB1dCwgYXMgcmVjb21tZW5kZWQgYnkgdGhlIHN0YW5kYXJkLiAgUHJldmlvdXNseSBpdCB3YXMgcmVzdHJpY3RlZCB0bworYWNjZXB0aW5nIFswLTldLgorCisuLgorCisuLiBicG86IDY1MTEKKy4uIGRhdGU6IDc1MzIKKy4uIG5vbmNlOiBRemZrb3YKKy4uIHNlY3Rpb246IExpYnJhcnkKKworWmlwRmlsZSBub3cgcmFpc2VzIEJhZFppcGZpbGUgKGluc3RlYWQgb2YgYW4gSU9FcnJvcikgd2hlbiBvcGVuaW5nIGFuIGVtcHR5CitvciB2ZXJ5IHNtYWxsIGZpbGUuCisKKy4uCisKKy4uIGJwbzogNjU1MworLi4gZGF0ZTogNzUzMQorLi4gbm9uY2U6IFRyNEhERAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIGNyYXNoIGluIGNQaWNrbGUubG9hZCgpLCB3aGVuIGdpdmVuIGEgZmlsZS1saWtlIG9iamVjdCBjb250YWluaW5nCitpbmNvbXBsZXRlIGRhdGEuCisKKy4uCisKKy4uIGJwbzogNjU0NQorLi4gZGF0ZTogNzUzMAorLi4gbm9uY2U6IHE5MV9LTAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmVkIGFzc2VydCBzdGF0ZW1lbnRzIGluIGRpc3R1dGlscy5FeHRlbnNpb24sIHNvIHRoZSBiZWhhdmlvciBpcyBzaW1pbGFyCit3aGVuIHVzZWQgd2l0aCAtTy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NTI5CisuLiBub25jZTogUWl3WGZyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VuaXR0ZXN0IGhhcyBiZWVuIHNwbGl0IHVwIGludG8gYSBwYWNrYWdlLiAgQWxsIG9sZCBuYW1lcyBzaG91bGQgc3RpbGwgd29yay4KKworLi4KKworLi4gYnBvOiA2NDMxCisuLiBkYXRlOiA3NTI4CisuLiBub25jZTogdEtCa1BiCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgRnJhY3Rpb24gdHlwZSByZXR1cm4gTm90SW1wbGVtZW50ZWQgd2hlbiBpdCBkb2Vzbid0IGtub3cgaG93IHRvIGhhbmRsZQorYSBjb21wYXJpc29uIHdpdGhvdXQgbG9zcyBvZiBwcmVjaXNpb24uICBBbHNvIGFkZCBjb3JyZWN0IGhhbmRsaW5nIG9mCitpbmZpbml0aWVzIGFuZCBuYW5zIGZvciBjb21wYXJpc29ucyB3aXRoIGZsb2F0LgorCisuLgorCisuLiBicG86IDY0MTUKKy4uIGRhdGU6IDc1MjcKKy4uIG5vbmNlOiBRT01nMXEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgd2FybmluZ3Mud2FybiBzZWdmYXVsdCBvbiBiYWQgZm9ybWF0dGVkIHN0cmluZy4KKworLi4KKworLi4gYnBvOiA2NDY2CisuLiBkYXRlOiA3NTI2CisuLiBub25jZTogajVJS0ttCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK05vdyBkaXN0dXRpbHMuY3lnd2luY2NvbXBpbGVyIGFuZCBkaXN0dXRpbHMuZW14Y2NvbXBpbGVyIHVzZXMgdGhlIHNhbWUKK3JlZmFjdG9yZWQgZnVuY3Rpb24gdG8gZ2V0IGdjYy9sZC9kbGx3cmFwIHZlcnNpb25zIG51bWJlcnMuICBJdCdzCitgYGRpc3R1dGlscy51dGlsLmdldF9jb21waWxlcl92ZXJzaW9ucygpYGAuICBBZGRlZCBkZXByZWNhdGlvbiB3YXJuaW5ncyBmb3IKK3RoZSBvYnNvbGV0ZSBnZXRfdmVyc2lvbnMoKSBmdW5jdGlvbnMuCisKKy4uCisKKy4uIGJwbzogNjQzMworLi4gZGF0ZTogNzUyNQorLi4gbm9uY2U6IEZKVWVCcAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBpc3N1ZXMgd2l0aCBtdWx0aXByb2Nlc3NpbmcucG9vbC5tYXAgaGFuZ2luZyBvbiBlbXB0eSBsaXN0LgorCisuLgorCisuLiBicG86IDYzMTQKKy4uIGRhdGU6IDc1MjQKKy4uIG5vbmNlOiBvcTJVenkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbG9nZ2luZzogRXh0cmEgY2hlY2tzIG9uIHRoZSAibGV2ZWwiIGFyZ3VtZW50IGluIG1vcmUgcGxhY2VzLgorCisuLgorCisuLiBicG86IDI2MjIKKy4uIGRhdGU6IDc1MjMKKy4uIG5vbmNlOiBraGxnTmYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYW4gSW1wb3J0RXJyb3Igd2hlbiBpbXBvcnRpbmcgZW1haWwubWVzc3NhZ2UgZnJvbSBhIHN0YW5kYWxvbmUKK2FwcGxpY2F0aW9uIGJ1aWx0IHdpdGggcHkyZXhlIG9yIHB5MmFwcC4KKworLi4KKworLi4gYnBvOiA2NDU1CisuLiBkYXRlOiA3NTIyCisuLiBub25jZTogeEh6NG1GCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHRlc3RfYnVpbGRfZXh0IHVuZGVyIHdpbjMyLgorCisuLgorCisuLiBicG86IDYzNzcKKy4uIGRhdGU6IDc1MjEKKy4uIG5vbmNlOiBPci1KYW0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRW5hYmxlZCB0aGUgY29tcGlsZXIgb3B0aW9uLCBhbmQgZGVwcmVjYXRlIGl0cyB1c2FnZSBhcyBhbiBhdHRyaWJ1dGUuCisKKy4uCisKKy4uIGJwbzogNjQxMworLi4gZGF0ZTogNzUyMAorLi4gbm9uY2U6IGRWdUh5UQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aGUgbG9nIGxldmVsIGluIGRpc3R1dGlscy5kaXN0IGZvciBhbm5vdW5jZS4KKworLi4KKworLi4gYnBvOiAzMzkyCisuLiBkYXRlOiA3NTE5CisuLiBub25jZTogTV9EZEZiCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBzdWJwcm9jZXNzIGNvbW11bmljYXRlKCkgbWV0aG9kIG5vIGxvbmdlciBmYWlscyBpbiBzZWxlY3QoKSB3aGVuIGZpbGUKK2Rlc2NyaXB0b3JzIGFyZSBsYXJnZTsgY29tbXVuaWNhdGUoKSBub3cgdXNlcyBwb2xsKCkgd2hlbiBwb3NzaWJsZS4KKworLi4KKworLi4gYnBvOiA2NDAzCisuLiBkYXRlOiA3NTE4CisuLiBub25jZToga0R3U3p5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHBhY2thZ2UgcGF0aCB1c2FnZSBpbiBidWlsZF9leHQuCisKKy4uCisKKy4uIGJwbzogNTE1NQorLi4gZGF0ZTogNzUxNworLi4gbm9uY2U6IEdfSEZyaQorLi4gc2VjdGlvbjogTGlicmFyeQorCittdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcy5fYm9vdHN0cmFwIHdhcyB1bmNvbmRpdGlvbmFsbHkgY2FsbGluZworIm9zLmNsb3NlKHN5cy5zdGRpbi5maWxlbm8oKSkiIHJlc3VsdGluZyBpbiBmaWxlIGRlc2NyaXB0b3IgZXJyb3JzLiAoU2VlCithbHNvOiBicG8tNTMxMywgYnBvLTUzMzEpCisKKy4uCisKKy4uIGJwbzogNjM2NQorLi4gZGF0ZTogNzUxNgorLi4gbm9uY2U6IGVXSl9DbAorLi4gc2VjdGlvbjogTGlicmFyeQorCitEaXN0dXRpbHMgYnVpbGRfZXh0IGlucGxhY2UgbW9kZSB3YXMgY29weWluZyB0aGUgY29tcGlsZWQgZXh0ZW5zaW9uIGluIGEKK3N1YmRpcmVjdG9yeSBpZiB0aGUgZXh0ZW5zaW9uIG5hbWUgaGFkIGRvdHMuCisKKy4uCisKKy4uIGJwbzogNjM0NAorLi4gZGF0ZTogNzUxNQorLi4gbm9uY2U6IGwzNXhYSAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIGNyYXNoIG9mIG1tYXAucmVhZCgpIHdoZW4gcGFzc2VkIGEgbmVnYXRpdmUgYXJndW1lbnQuCisKKy4uCisKKy4uIGJwbzogNTIzMAorLi4gZGF0ZTogNzUxNAorLi4gbm9uY2U6IEVoVWJwVworLi4gc2VjdGlvbjogTGlicmFyeQorCitweWRvYyB3b3VsZCByZXBvcnQgbm8gZG9jdW1lbnRhdGlvbiBmb3VuZCBpZiBhIG1vZHVsZSBnZW5lcmF0ZWQgYSAnbm90Citmb3VuZCcgaW1wb3J0IGVycm9yIHdoZW4gbG9hZGVkOyBpdCBub3cgcmVwb3J0cyB0aGUgaW1wb3J0IGVycm9ycy4gVGhhbmtzIHRvCitMdWNhcyBQcmFkbyBNZWxvIGZvciBpbml0aWFsIGZpeCBhbmQgY29sbGFib3JhdGlvbiBvbiB0aGUgdGVzdHMuCisKKy4uCisKKy4uIGJwbzogNjMxNAorLi4gZGF0ZTogNzUxMworLi4gbm9uY2U6IGc1NXV5eQorLi4gc2VjdGlvbjogTGlicmFyeQorCitgYGxvZ2dpbmcuYmFzaWNDb25maWcoKWBgIHBlcmZvcm1zIGV4dHJhIGNoZWNrcyBvbiB0aGUgImxldmVsIiBhcmd1bWVudC4KKworLi4KKworLi4gYnBvOiA2MTY0CisuLiBkYXRlOiA3NTEyCisuLiBub25jZTogNlFCeUVpCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIGFuIEFJWCBzcGVjaWZpYyBsaW5rZXIgYXJndW1lbnQgaW4gRGlzdHV0aWxzIHVuaXhjb21waWxlci4gT3JpZ2luYWwKK3BhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLi4KKworLi4gYnBvOiA2Mjc0CisuLiBkYXRlOiA3NTExCisuLiBub25jZTogZVFvTVByCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHBvc3NpYmxlIGZpbGUgZGVzY3JpcHRvcnMgbGVhayBpbiBzdWJwcm9jZXNzLnB5LgorCisuLgorCisuLiBicG86IDYxODkKKy4uIGRhdGU6IDc1MTAKKy4uIG5vbmNlOiBhWS0wLXYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVzdG9yZWQgY29tcGF0aWJpbGl0eSBvZiBzdWJwcm9jZXNzLnB5IHdpdGggUHl0aG9uIDIuMi4KKworLi4KKworLi4gYnBvOiA2Mjg3CisuLiBkYXRlOiA3NTA5CisuLiBub25jZTogaTVsb1FHCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIHRoZSBsaWNlbnNlIGZpZWxkIGluIERpc3R1dGlscyBkb2N1bWVudGF0aW9uLgorCisuLgorCisuLiBicG86IDYyODYKKy4uIGRhdGU6IDc1MDgKKy4uIG5vbmNlOiBqMnU0V24KKy4uIHNlY3Rpb246IExpYnJhcnkKKworTm93IERpc3R1dGlscyB1cGxvYWQgY29tbWFuZCBpcyBiYXNlZCBvbiB1cmxsaWIyIGluc3RlYWQgb2YgaHR0cGxpYiwKK2FsbG93aW5nIHRoZSB1c2FnZSBvZiBodHRwX3Byb3h5LgorCisuLgorCisuLiBicG86IDYyNzEKKy4uIGRhdGU6IDc1MDcKKy4uIG5vbmNlOiBuTVp4Y0UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbW1hcCB0cmllZCB0byBjbG9zZSBpbnZhbGlkIGZpbGUgaGFuZGxlICgtMSkgZm9yIGFub255bW91cyBtYXBzIG9uIFVuaXguCisKKy4uCisKKy4uIGJwbzogNjIxNQorLi4gZGF0ZTogNzUwNgorLi4gbm9uY2U6IGUtRC10NworLi4gc2VjdGlvbjogTGlicmFyeQorCitBbGwgYnVnIGZpeGVzIGFuZCBlbmhhbmNlbWVudHMgZnJvbSB0aGUgUHl0aG9uIDMuMSBpbyBsaWJyYXJ5IChpbmNsdWRpbmcgdGhlCitmYXN0IEMgaW1wbGVtZW50YXRpb24pIGhhdmUgYmVlbiBiYWNrcG9ydGVkIHRvIHRoZSBzdGFuZGFyZCBgYGlvYGAgbW9kdWxlLgorCisuLgorCisuLiBicG86IDYyNTgKKy4uIGRhdGU6IDc1MDUKKy4uIG5vbmNlOiBkd0JTd3MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU3VwcG9ydCBBTUQ2NCBpbiBiZGlzdF9tc2kuCisKKy4uCisKKy4uIGJwbzogNjI1MgorLi4gZGF0ZTogNzUwNAorLi4gbm9uY2U6IHNZVFB5VQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBidWcgaW4gbmV4dCByb2xsb3ZlciB0aW1lIGNvbXB1dGF0aW9uIGluIFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlci4KKworLi4KKworLi4gYnBvOiA2MjYzCisuLiBkYXRlOiA3NTAzCisuLiBub25jZTogNVJoWnpQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHN5bnRheCBlcnJvciBpbiBkaXN0dXRpbHMuY3lnd2luY29tcGlsZXIuCisKKy4uCisKKy4uIGJwbzogNTIwMQorLi4gZGF0ZTogNzUwMgorLi4gbm9uY2U6IFd0M09yagorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMuc3lzY29uZmlnLnBhcnNlX21ha2VmaWxlKCkgbm93IHVuZGVyc3RhbmRzIGBgJCRgYCBpbiBNYWtlZmlsZXMuCitUaGlzIHByZXZlbnRzIGNvbXBpbGUgZXJyb3JzIHdoZW4gdXNpbmcgc3ludGF4IGxpa2U6CitgYExERkxBR1M9Jy1ycGF0aD1cJCRMSUI6L3NvbWUvb3RoZXIvcGF0aCdgYC4gIFBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgorCisuLgorCisuLiBicG86IDU3NjcKKy4uIGRhdGU6IDc1MDEKKy4uIG5vbmNlOiBOX3ZRVmgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlZCBzZ21sb3Agc3VwcG9ydCBmcm9tIHhtbHJwY2xpYi4KKworLi4KKworLi4gYnBvOiA2MTMxCisuLiBkYXRlOiA3NTAwCisuLiBub25jZTogeVZfczlqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3Rlc3RfbW9kdWxlZmluZGVyIGxlYWtlZCB3aGVuIHJ1biBhZnRlciB0ZXN0X2Rpc3R1dGlscy4gIFBhdGNoIGJ5IEhpcm9rYXp1CitZYW1hbW90by4KKworLi4KKworLi4gYnBvOiA2MDQ4CisuLiBkYXRlOiA3NDk5CisuLiBub25jZTogOGM0dHRyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK05vdyBEaXN0dXRpbHMgdXNlcyB0aGUgdGFyZmlsZSBtb2R1bGUgaW4gYXJjaGl2ZV91dGlsLgorCisuLgorCisuLiBicG86IDYxMjEKKy4uIGRhdGU6IDc0OTgKKy4uIG5vbmNlOiB1LUlEdUcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcHlkb2Mgbm93IGlnbm9yZXMgbGVhZGluZyBhbmQgdHJhaWxpbmcgc3BhY2VzIGluIHRoZSBhcmd1bWVudCB0byB0aGUgJ2hlbHAnCitmdW5jdGlvbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NDk3CisuLiBub25jZTogemxFRFJTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHVuaXR0ZXN0LCB1c2luZyBhIHNraXBwaW5nIGRlY29yYXRvciBvbiBhIGNsYXNzIGlzIG5vdyBlcXVpdmFsZW50IHRvCitza2lwcGluZyBldmVyeSB0ZXN0IG9uIHRoZSBjbGFzcy4gIFRoZSBDbGFzc1Rlc3RTdWl0ZSBjbGFzcyBoYXMgYmVlbgorcmVtb3ZlZC4KKworLi4KKworLi4gYnBvOiA2MDUwCisuLiBkYXRlOiA3NDk2CisuLiBub25jZTogdGxfOHhjCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Rvbid0IGZhaWwgZXh0cmFjdGluZyBhIGRpcmVjdG9yeSBmcm9tIGEgemlwZmlsZSBpZiB0aGUgZGlyZWN0b3J5IGFscmVhZHkKK2V4aXN0cy4KKworLi4KKworLi4gYnBvOiA1MzExCisuLiBkYXRlOiA3NDk1CisuLiBub25jZTogMG9PSzZICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2JkaXN0X21zaSBjYW4gbm93IGJ1aWxkIHBhY2thZ2VzIHRoYXQgZG8gbm90IGRlcGVuZCBvbiBhIHNwZWNpZmljIFB5dGhvbgordmVyc2lvbi4KKworLi4KKworLi4gYnBvOiAxMzA5MzUyCisuLiBkYXRlOiA3NDk0CisuLiBub25jZTogV00zZWdJCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZjbnRsIG5vdyBjb252ZXJ0cyBpdHMgdGhpcmQgYXJndW1lbnRzIHRvIGEgQyBgbG9uZ2AgcmF0aGVyIHRoYW4gYW4gaW50LAord2hpY2ggbWFrZXMgc29tZSBvcGVyYXRpb25zIHBvc3NpYmxlIHVuZGVyIDY0LWJpdCBMaW51eCAoZS5nLiBETl9NVUxUSVNIT1QKK3dpdGggRl9OT1RJRlkpLgorCisuLgorCisuLiBicG86IDE0MjQxNTIKKy4uIGRhdGU6IDc0OTMKKy4uIG5vbmNlOiBhanVqZ2UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGZvciBodHRwbGliLCB1cmxsaWIyIHRvIHN1cHBvcnQgU1NMIHdoaWxlIHdvcmtpbmcgdGhyb3VnaCBwcm94eS4KK09yaWdpbmFsIHBhdGNoIGJ5IENocmlzdG9waGVyIExpLCBjaGFuZ2VzIG1hZGUgYnkgU2VudGhpbCBLdW1hcmFuLgorCisuLgorCisuLiBicG86IDE5ODMKKy4uIGRhdGU6IDc0OTIKKy4uIG5vbmNlOiA0TlF0U0MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGZ1bmN0aW9ucyB0YWtpbmcgb3IgcmV0dXJuaW5nIGEgcHJvY2VzcyBpZGVudGlmaWVyIHRvIHVzZSB0aGUgZGVkaWNhdGVkCitDIHR5cGUgYGBwaWRfdGBgIGluc3RlYWQgb2YgYSBDIGBgaW50YGAuICBTb21lIHBsYXRmb3JtcyBoYXZlIGEgcHJvY2VzcworaWRlbnRpZmllciB0eXBlIHdpZGVyIHRoYW4gdGhlIHN0YW5kYXJkIEMgaW50ZWdlciB0eXBlLgorCisuLgorCisuLiBicG86IDQwNjYKKy4uIGRhdGU6IDc0OTEKKy4uIG5vbmNlOiAyaU9qWjkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc210cGxpYi5TTVRQX1NTTC5fZ2V0X3NvY2tldCBub3cgY29ycmVjdGx5IHJldHVybnMgdGhlIHNvY2tldC4gUGF0Y2ggYnkKK0ZhcmhhbiBBaG1hZCwgdGVzdCBieSBNYXJjaW4gQmFjaHJ5LgorCisuLgorCisuLiBicG86IDYwNjIKKy4uIGRhdGU6IDc0OTAKKy4uIG5vbmNlOiA5V0xaNXoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gZGlzdHV0aWxzLCBmaXhlZCB0aGUgcGFja2FnZSBvcHRpb24gb2YgYnVpbGRfZXh0LiAgRmVlZGJhY2sgYW5kIHRlc3RzIG9uCitweXdpbjMyIGJ5IFRpbSBHb2xkZW4uCisKKy4uCisKKy4uIGJwbzogNjA1MworLi4gZGF0ZTogNzQ4OQorLi4gbm9uY2U6IFd2VEwwdworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBkaXN0dXRpbHMgdGVzdHMgb24gd2luMzIuICBQYXRjaCBieSBIaXJva2F6dSBZYW1hbW90by4KKworLi4KKworLi4gYnBvOiA2MDQ2CisuLiBkYXRlOiA3NDg4CisuLiBub25jZTogY01aMlRjCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHRoZSBsaWJyYXJ5IGV4dGVuc2lvbiB3aGVuIGRpc3R1dGlscyBidWlsZF9leHQgaXMgdXNlZCBpbiBwbGFjZS4KK0luaXRpYWwgcGF0Y2ggYnkgUm91bWVuIFBldHJvdi4KKworLi4KKworLi4gYnBvOiA2MDQxCisuLiBkYXRlOiA3NDg3CisuLiBub25jZTogc3c1N2JECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK05vdyBkaXN0dXRpbHMgYHNkaXN0YCBhbmQgYHJlZ2lzdGVyYCBjb21tYW5kcyB1c2UgYGNoZWNrYCBhcyBhIHN1YmNvbW1hbmQuCisKKy4uCisKKy4uIGJwbzogMjExNgorLi4gZGF0ZTogNzQ4NgorLi4gbm9uY2U6IDhwOHhONgorLi4gc2VjdGlvbjogTGlicmFyeQorCitXZWFrIHJlZmVyZW5jZXMgYW5kIHdlYWsgZGljdGlvbmFyaWVzIG5vdyBzdXBwb3J0IGNvcHkoKWluZyBhbmQKK2RlZXBjb3B5KClpbmcuCisKKy4uCisKKy4uIGJwbzogMTY1NQorLi4gZGF0ZTogNzQ4NQorLi4gbm9uY2U6IE0tNXNHVAorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIGltYXBsaWIgSVB2Ni1jYXBhYmxlLiAgUGF0Y2ggYnkgRGVyZWsgTW9yci4KKworLi4KKworLi4gYnBvOiA1OTE4CisuLiBkYXRlOiA3NDg0CisuLiBub25jZTogeC04T3hsCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIGNyYXNoIGluIHRoZSBwYXJzZXIgbW9kdWxlLgorCisuLgorCisuLiBicG86IDE2NjQKKy4uIGRhdGU6IDc0ODMKKy4uIG5vbmNlOiBzUmw0NnkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBubnRwbGliIElQdjYtY2FwYWJsZS4gIFBhdGNoIGJ5IERlcmVrIE1vcnIuCisKKy4uCisKKy4uIGJwbzogNjAyMgorLi4gZGF0ZTogNzQ4MgorLi4gbm9uY2U6IFkzZFVoZQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBIHRlc3QgZmlsZSB3YXMgY3JlYXRlZCBpbiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBieSB0ZXN0X2dldF9vdXRwdXRzCitpbiBEaXN0dXRpbHMuCisKKy4uCisKKy4uIGJwbzogNDA1MAorLi4gZGF0ZTogNzQ4MQorLi4gbm9uY2U6IG1qSGxmRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitpbnNwZWN0LmZpbmRzb3VyY2UvZ2V0c291cmNlIG5vdyByYWlzZSBhbiBJT0Vycm9yIGlmIHRoZSAnc291cmNlJyBmaWxlIGlzIGEKK2JpbmFyeS4gIFBhdGNoIGJ5IEJyb2RpZSBSYW8sIHRlc3RzIGJ5IERhbmllbCBEaW5pei4KKworLi4KKworLi4gYnBvOiA1OTc3CisuLiBkYXRlOiA3NDgwCisuLiBub25jZTogeGNQMlN1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Rpc3R1dGlscyBidWlsZF9leHQuZ2V0X291dHB1dHMgd2FzIG5vdCB0YWtpbmcgaW50byBhY2NvdW50IHRoZSBpbnBsYWNlCitvcHRpb24uICBJbml0aWFsIHBhdGNoIGJ5IGt4cm9iZXJ0by4KKworLi4KKworLi4gYnBvOiA1OTg0CisuLiBkYXRlOiA3NDc5CisuLiBub25jZTogZXZxeGJmCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Rpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dC5jaGVja19leHRlbnNpb25zX2xpc3QgY2hlY2tzIHdlcmUgYnJva2VuIGZvcgorb2xkLXN0eWxlIGV4dGVuc2lvbnMuCisKKy4uCisKKy4uIGJwbzogNTk3MQorLi4gZGF0ZTogNzQ3OAorLi4gbm9uY2U6IElRVzJOTworLi4gc2VjdGlvbjogTGlicmFyeQorCitTdHJlYW1IYW5kbGVyLmhhbmRsZUVycm9yIG5vdyBzd2FsbG93cyBJT0Vycm9ycyB3aGljaCBvY2N1ciB3aGVuIHRyeWluZyB0bworcHJpbnQgYSB0cmFjZWJhY2suCisKKy4uCisKKy4uIGJwbzogNTk3NgorLi4gZGF0ZTogNzQ3NworLi4gbm9uY2U6IDAxX2RTUgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBEaXN0dXRpbHMgdGVzdF9jaGVja19lbnZpcm9uLgorCisuLgorCisuLiBicG86IDU5MDAKKy4uIGRhdGU6IDc0NzYKKy4uIG5vbmNlOiB1TXFqc08KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRW5zdXJlIFJVTlBBVEggaXMgYWRkZWQgdG8gZXh0ZW5zaW9uIG1vZHVsZXMgd2l0aCBSUEFUSCBpZiBHTlUgbGQgaXMgdXNlZC4KK09yaWdpbmFsIHBhdGNoIGJ5IEZsb3JpcyBCcnV5bm9vZ2hlLgorCisuLgorCisuLiBicG86IDU5NDEKKy4uIGRhdGU6IDc0NzUKKy4uIG5vbmNlOiBYZGtfNlkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRGlzdHV0aWxzIGJ1aWxkX2NsaWIgY29tbWFuZCB3YXMgbm90IHdvcmtpbmcgYW55bW9yZSBiZWNhdXNlIG9mIGFuCitpbmNvbXBsZXRlIGN1c3RvbWl6YXRpb24gb2YgdGhlIGFyY2hpdmVyIGNvbW1hbmQuICBBZGRlZCBBUkZMQUdTIGluIHRoZQorTWFrZWZpbGUgYmVzaWRlcyBBUiBhbmQgbWFrZSBEaXN0dXRpbHMgdXNlIGl0LiAgT3JpZ2luYWwgcGF0Y2ggYnkgRGF2aWQKK0NvdXJuYXBlYXUuCisKKy4uCisKKy4uIGJwbzogNTk1NQorLi4gZGF0ZTogNzQ3NAorLi4gbm9uY2U6IHJaTTNYWQorLi4gc2VjdGlvbjogTGlicmFyeQorCithaWZjJ3MgY2xvc2UgbWV0aG9kIGRpZCBub3QgY2xvc2UgdGhlIGZpbGUgaXQgd3JhcHBlZCwgbm93IGl0IGRvZXMuICBUaGlzCithbHNvIG1lYW5zIGdldGZwIG1ldGhvZCBub3cgcmV0dXJucyB0aGUgcmVhbCBmcC4KKworLi4KKworLi4gYnBvOiA0ODc1CisuLiBkYXRlOiA3NDczCisuLiBub25jZTogbG96SEZiCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK09uIHdpbjMyLCBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkgZG9lcyBubyBsb25nZXIgcmV0dXJuIGRpcmVjdG9yaWVzLgorCisuLgorCisuLiBicG86IDUxNDIKKy4uIGRhdGU6IDc0NzIKKy4uIG5vbmNlOiBYR1hJSTEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHRoZSBhYmlsaXR5IHRvIHNraXAgbW9kdWxlcyB3aGlsZSBzdGVwcGluZyB0byBwZGIuCisKKy4uCisKKy4uIGJwbzogMTMwOTU2NworLi4gZGF0ZTogNzQ3MQorLi4gbm9uY2U6IHdjcW9vTgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggbGluZWNhY2hlIGJlaGF2aW9yIG9mIHN0cmlwcGluZyBzdWJkaXJlY3RvcmllcyB3aGVuIGxvb2tpbmcgZm9yIGZpbGVzCitnaXZlbiBieSBhIHJlbGF0aXZlIGZpbGVuYW1lLgorCisuLgorCisuLiBicG86IDU2OTIKKy4uIGRhdGU6IDc0NzAKKy4uIG5vbmNlOiBYYmJHb2QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW4gYGB6aXBmaWxlLlppcGZpbGVgYCwgZml4IHdyb25nIHBhdGggY2FsY3VsYXRpb24gd2hlbiBleHRyYWN0aW5nIGEgZmlsZSB0bwordGhlIHJvb3QgZGlyZWN0b3J5LgorCisuLgorCisuLiBicG86IDU5MTMKKy4uIGRhdGU6IDc0NjkKKy4uIG5vbmNlOiBHZzdvQUEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGBvcy5saXN0ZGlyKClgYCBzaG91bGQgZmFpbCBmb3IgZW1wdHkgcGF0aCBvbiB3aW5kb3dzLgorCisuLgorCisuLiBicG86IDUwODQKKy4uIGRhdGU6IDc0NjgKKy4uIG5vbmNlOiAyOExJRWcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVW5waWNrbGluZyBub3cgaW50ZXJucyB0aGUgYXR0cmlidXRlIG5hbWVzIG9mIHBpY2tsZWQgb2JqZWN0cywgc2F2aW5nIG1lbW9yeQorYW5kIGF2b2lkaW5nIGdyb3d0aCBpbiBzaXplIG9mIHN1YnNlcXVlbnQgcGlja2xlcy4gIFByb3Bvc2FsIGFuZCBvcmlnaW5hbAorcGF0Y2ggYnkgSmFrZSBNY0d1aXJlLgorCisuLgorCisuLiBicG86IDMwMDIKKy4uIGRhdGU6IDc0NjcKKy4uIG5vbmNlOiBRMkJ3bHcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGBzaHV0aWwuY29weWZpbGUoKWBgIGFuZCBgYHNodXRpbC5jb3B5dHJlZSgpYGAgbm93IHJhaXNlIGFuIGVycm9yIHdoZW4gYQorbmFtZWQgcGlwZSBpcyBlbmNvdW50ZXJlZCwgcmF0aGVyIHRoYW4gYmxvY2tpbmcgaW5maW5pdGVseS4KKworLi4KKworLi4gYnBvOiAzOTU5CisuLiBkYXRlOiA3NDY2CisuLiBub25jZTogSk9jTnB2CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBpcGFkZHIgbW9kdWxlIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBzdGFuZGFyZCBsaWJyYXJ5LiBDb250cmlidXRlZCBieQorR29vZ2xlLgorCisuLgorCisuLiBicG86IDIyNDUKKy4uIGRhdGU6IDc0NjUKKy4uIG5vbmNlOiB3TTZ5SUcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYWlmYyBub3cgc2tpcHMgY2h1bmsgdHlwZXMgaXQgZG9lc24ndCByZWNvZ25pemUsIHBlciBzcGVjLgorCisuLgorCisuLiBicG86IDU4NzQKKy4uIGRhdGU6IDc0NjQKKy4uIG5vbmNlOiBXcmg0cHAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlzdHV0aWxzLnRlc3RzLnRlc3RfY29uZmlnX2NtZCBpcyBub3QgbG9jYWxlLXNlbnNpdGl2ZSBhbnltb3JlLgorCisuLgorCisuLiBicG86IDQzMDUKKy4uIGRhdGU6IDc0NjMKKy4uIG5vbmNlOiB5SHA2VzIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY3R5cGVzIHNob3VsZCBub3cgYnVpbGQgYWdhaW4gb24gbWlwc2VsLWxpbnV4LWdudQorCisuLgorCisuLiBicG86IDE3MzQyMzQKKy4uIGRhdGU6IDc0NjIKKy4uIG5vbmNlOiBJM1NfYTYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFzc2l2ZWx5IHNwZWVkdXAgYGB1bmljb2RlZGF0YS5ub3JtYWxpemUoKWBgIHdoZW4gdGhlIHN0cmluZyBpcyBhbHJlYWR5IGluCitub3JtYWxpemVkIGZvcm0sIGJ5IHBlcmZvcm1pbmcgYSBxdWljayBjaGVjayBiZWZvcmVoYW5kLiBPcmlnaW5hbCBwYXRjaCBieQorUmF1bGkgUnVvaG9uZW4uCisKKy4uCisKKy4uIGJwbzogNTg1MworLi4gZGF0ZTogNzQ2MQorLi4gbm9uY2U6IG9Lb2tJUAorLi4gc2VjdGlvbjogTGlicmFyeQorCitDYWxsaW5nIGEgZnVuY3Rpb24gb2YgdGhlIG1pbWV0eXBlcyBtb2R1bGUgZnJvbSBzZXZlcmFsIHRocmVhZHMgYXQgb25jZQorY291bGQgaGl0IHRoZSByZWN1cnNpb24gbGltaXQgaWYgdGhlIG1pbWV0eXBlcyBkYXRhYmFzZSBoYWRuJ3QgYmVlbgoraW5pdGlhbGl6ZWQgYmVmb3JlLgorCisuLgorCisuLiBicG86IDU4NTQKKy4uIGRhdGU6IDc0NjAKKy4uIG5vbmNlOiA4bzBsbE0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVXBkYXRlZCBfX2FsbF9fIHRvIGluY2x1ZGUgc29tZSBtaXNzaW5nIG5hbWVzIGFuZCByZW1vdmUgc29tZSBuYW1lcyB3aGljaAorc2hvdWxkIG5vdCBiZSBleHBvcnRlZC4KKworLi4KKworLi4gYnBvOiA1ODEwCisuLiBkYXRlOiA3NDU5CisuLiBub25jZTogTEZyMk9LCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIERpc3R1dGlscyB0ZXN0X2J1aWxkX3NjcmlwdHMgc28gaXQgdXNlcworYGBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKClgYC4KKworLi4KKworLi4gYnBvOiA0OTUxCisuLiBkYXRlOiA3NDU4CisuLiBub25jZTogOWVLYzdqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGZhaWx1cmUgaW4gdGVzdF9odHRwc2VydmVycy4KKworLi4KKworLi4gYnBvOiAzMTAyCisuLiBkYXRlOiA3NDU3CisuLiBub25jZTogTERnazZaCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FsbCBnbG9iYWwgc3ltYm9scyB0aGF0IHRoZSBfY3R5cGVzIGV4dGVuc2lvbiBkZWZpbmVzIGFyZSBub3cgcHJlZml4ZWQgd2l0aAorJ1B5JyBvciAnX2N0eXBlcycuCisKKy4uCisKKy4uIGJwbzogNTA0MQorLi4gZGF0ZTogNzQ1NgorLi4gbm9uY2U6IDhTTTJRNgorLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXMgZG9lcyBub3cgYWxsb3cgcGlja2xpbmcgd2lkZSBjaGFyYWN0ZXIuCisKKy4uCisKKy4uIGJwbzogNTgxMgorLi4gZGF0ZTogNzQ1NQorLi4gbm9uY2U6IERHNHUzNQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGb3IgdGhlIHR3by1hcmd1bWVudCBmb3JtIG9mIHRoZSBGcmFjdGlvbiBjb25zdHJ1Y3RvciwgYGBGcmFjdGlvbihtLCBuKWBgLCBtCithbmQgbiBhcmUgcGVybWl0dGVkIHRvIGJlIGFyYml0cmFyeSBSYXRpb25hbCBpbnN0YW5jZXMuCisKKy4uCisKKy4uIGJwbzogNTgxMgorLi4gZGF0ZTogNzQ1NAorLi4gbm9uY2U6IGJkZUl5NgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGcmFjdGlvbignMWU2JykgaXMgdmFsaWQ6IG1vcmUgZ2VuZXJhbGx5LCBhbnkgc3RyaW5nIHRoYXQncyB2YWxpZCBmb3IKK2Zsb2F0KCkgaXMgbm93IHZhbGlkIGZvciBGcmFjdGlvbigpLCB3aXRoIHRoZSBleGNlcHRpb24gb2Ygc3RyaW5ncworcmVwcmVzZW50aW5nIE5hTnMgYW5kIGluZmluaXRpZXMuCisKKy4uCisKKy4uIGJwbzogNTc5NQorLi4gZGF0ZTogNzQ1MworLi4gbm9uY2U6IF81U1hjdQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0ZXN0X2Rpc3R1dGlscyBmYWlsdXJlIG9uIERlYmlhbiBwcGMuCisKKy4uCisKKy4uIGJwbzogNTc2OAorLi4gZGF0ZTogNzQ1MgorLi4gbm9uY2U6IEx4M0ZCeQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBidWcgaW4gVW5pY29kZSBvdXRwdXQgbG9naWMgYW5kIHRlc3QgY2FzZSBmb3Igc2FtZS4KKworLi4KKworLi4gYnBvOiAxMTYxMDMxCisuLiBkYXRlOiA3NDUxCisuLiBub25jZTogdklIQ2VnCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCByZWFkd3JpdGUgc2VsZWN0IGZsYWcgaGFuZGxpbmc6IFBPTExQUkkgbm93IHJlc3VsdHMgaW4gYQoraGFuZGxlX2V4cHRfZXZlbnQgY2FsbCwgbm90IGhhbmRsZV9yZWFkX2V2ZW50LCBhbmQgUE9MTEVSUiBhbmQgUE9MTE5WQUwgbm93CitjYWxsIGhhbmRsZV9jbG9zZSwgbm90IGhhbmRsZV9leHB0X2V2ZW50LiAgQWxzbywgZGlzcGF0Y2hlciBub3cgaGFzIGFuCisnaWdub3JlX2xvZ190eXBlcycgYXR0cmlidXRlIGZvciBzdXBwcmVzc2luZyBsb2cgbWVzc2FnZXMsIHdoaWNoIGlzIHNldCB0bworJ3dhcm5pbmcnIGJ5IGRlZmF1bHQuCisKKy4uCisKKy4uIGJwbzogNTYwNworLi4gZGF0ZTogNzQ1MAorLi4gbm9uY2U6IEdsWXBLNgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBEaXN0dXRpbHMgdGVzdF9nZXRfcGxhdGZvcm0gZm9yIE1hYyBPUyBYIGZhdCBiaW5hcmllcy4KKworLi4KKworLi4gYnBvOiA1NzQxCisuLiBkYXRlOiA3NDQ5CisuLiBub25jZTogc0tEUXVOCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Rvbid0IGRpc2FsbG93ICIlJSIgKHdoaWNoIGlzIGFuIGVzY2FwZSBmb3IgIiUiKSB3aGVuIHNldHRpbmcgYSB2YWx1ZSBpbgorU2FmZUNvbmZpZ1BhcnNlci4KKworLi4KKworLi4gYnBvOiA1NzMyCisuLiBkYXRlOiA3NDQ4CisuLiBub25jZTogQnhFYU9fCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIGEgbmV3IGNvbW1hbmQgaW4gRGlzdHV0aWxzOiBjaGVjay4KKworLi4KKworLi4gYnBvOiA1NzMxCisuLiBkYXRlOiA3NDQ3CisuLiBub25jZTogdENBNFFxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Rpc3R1dGlscyBiZGlzdF93aW5pbnN0IG5vIGxvbmdlciB3b3JrZWQgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLiAgSW5pdGlhbAorcGF0Y2ggYnkgUGF1bCBNb29yZS4KKworLi4KKworLi4gYnBvOiAyMjU0CisuLiBkYXRlOiA3NDQ2CisuLiBub25jZTogWHdzekxrCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBDR0lIVFRQU2VydmVyIGluZm9ybWF0aW9uIGRpc2Nsb3N1cmUuICBSZWxhdGl2ZSBwYXRocyBhcmUgbm93IGNvbGxhcHNlZAord2l0aGluIHRoZSB1cmwgcHJvcGVybHkgYmVmb3JlIGxvb2tpbmcgaW4gY2dpX2RpcmVjdG9yaWVzLgorCisuLgorCisuLiBicG86IDUwOTUKKy4uIGRhdGU6IDc0NDUKKy4uIG5vbmNlOiB4aVNSRHoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgYmRpc3RfbXNpIHRvIHRoZSBsaXN0IG9mIGJkaXN0IHN1cHBvcnRlZCBmb3JtYXRzLiAgSW5pdGlhbCBmaXggYnkKK1N0ZXZlbiBCZXRoYXJkLgorCisuLgorCisuLiBicG86IDE0OTE0MzEKKy4uIGRhdGU6IDc0NDQKKy4uIG5vbmNlOiBhTnAyM0YKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgZGlzdHV0aWxzLmZpbGVsaXN0Lmdsb2JfdG9fcmUgZm9yIGVkZ2UgY2FzZXMuICBJbml0aWFsIGZpeCBieSBXYXluZQorRGF2aXNvbi4KKworLi4KKworLi4gYnBvOiA1NjkzCisuLiBkYXRlOiA3NDQzCisuLiBub25jZTogTTBQRUhKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Rlc3RTdWl0ZS5fX2l0ZXJfXyBjYW4gbm93IGJlIGNvbnNpc3RlbnRseSBvdmVycmlkZGVuIGluIHN1YmNsYXNzZXMuCisKKy4uCisKKy4uIGJwbzogNTY5NAorLi4gZGF0ZTogNzQ0MgorLi4gbm9uY2U6IFp2S3hGUgorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmVkIHNwdXJpb3VzIHRlc3Qgb3V0cHV0IGluIERpc3R1dGlscyAodGVzdF9jbGVhbikuCisKKy4uCisKKy4uIGJwbzogNTQ3MQorLi4gZGF0ZTogNzQ0MQorLi4gbm9uY2U6IEJLZjdRNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggb3MucGF0aC5leHBhbmR1c2VyKCkgZm9yICRIT01FIHNldCB0byAnLycuCisKKy4uCisKKy4uIGJwbzogMTMyNjA3NworLi4gZGF0ZTogNzQ0MAorLi4gbm9uY2U6IGlmME9XMgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIGZvcm1hdHRpbmcgb2YgU3ludGF4RXJyb3JzIGJ5IHRoZSB0cmFjZWJhY2sgbW9kdWxlLgorCisuLgorCisuLiBicG86IDE3MjYxNzIKKy4uIGRhdGU6IDc0MzkKKy4uIG5vbmNlOiBlMnZ5OXUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IEluZGV4RXJyb3IgaW4gdGhlIGNhc2Ugb2YgYW5kIGVtcHR5IHJlc3BvbnNlIGluIGZ0cGxpYi4KKworLi4KKworLi4gYnBvOiAyNjI1CisuLiBkYXRlOiA3NDM4CisuLiBub25jZTogX1hSUmtrCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIG1pc3NpbmcgaXRlcml0ZW1zKCkgY2FsbCB0byB0aGUgZm9yIGxvb3AgaW4gbWFpbGJveC5NSC5nZXRfbWVzc2FnZSgpLgorCisuLgorCisuLiBicG86IDU1ODUKKy4uIGRhdGU6IDc0MzcKKy4uIG5vbmNlOiBZQVpYeXkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHRoZSBhYmlsaXR5IHRvIGNhbGwgYW4gaW5pdGlhbGl6ZXIgdG8gbXVsdGlwcm9jZXNzaW5nLm1hbmFnZXIgc28gdGhhdAordXNlcnMgY2FuIGluc3RhbGwgY3VzdG9tIGhhbmRsZXJzL2V0Yy4KKworLi4KKworLi4gYnBvOiAzNTUxCisuLiBkYXRlOiA3NDM2CisuLiBub25jZTogQ3U2Q3VsCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1BhdGNoIG11bHRpcHJvY2Vzc2luZyB0byByYWlzZSBhIHByb3BlciBleGNlcHRpb24gaWYgdGhlIHNpemUgb2YgdGhlIG9iamVjdAord2hlbiB3cml0ZWZpbGUgaXMgY2FsbGVkIGNhdXNlcyBhbiBFUlJPUl9OT19TWVNURU1fUkVTT1VSQ0VTLiAgQWRkZWQgZG9jcyB0bworbm90ZSB0aGUgbGltaXRhdGlvbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NDM1CisuLiBub25jZTogeEFYVEsyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VuaXR0ZXN0LmFzc2VydE5vdEVxdWFsKCkgbm93IHVzZXMgdGhlIGluZXF1YWxpdHkgb3BlcmF0b3IgKCE9KSBpbnN0ZWFkIG9mCit0aGUgZXF1YWxpdHkgb3BlcmF0b3IuCisKKy4uCisKKy4uIGJwbzogNjAwMQorLi4gZGF0ZTogNzQzNAorLi4gbm9uY2U6IG9XaU1GRworLi4gc2VjdGlvbjogTGlicmFyeQorCitUZXN0IGRpc2NvdmVyeSBmb3IgdW5pdHRlc3QuIEltcGxlbWVudGVkIGluIHVuaXR0ZXN0LlRlc3RMb2FkZXIuZGlzY292ZXIgYW5kCitmcm9tIHRoZSBjb21tYW5kIGxpbmUuCisKKy4uCisKKy4uIGJwbzogNTY3OQorLi4gZGF0ZTogNzQzMworLi4gbm9uY2U6IEdEYkozRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbWV0aG9kcyB1bml0dGVzdC5UZXN0Q2FzZS5hZGRDbGVhbnVwIGFuZCBkb0NsZWFudXBzIHdlcmUgYWRkZWQuCithZGRDbGVhbnVwIGFsbG93cyB5b3UgdG8gYWRkIGNsZWFudXAgZnVuY3Rpb25zIHRoYXQgd2lsbCBiZSBjYWxsZWQKK3VuY29uZGl0aW9uYWxseSAoYWZ0ZXIgc2V0VXAgaWYgc2V0VXAgZmFpbHMsIG90aGVyd2lzZSBhZnRlciB0ZWFyRG93bikuIFRoaXMKK2FsbG93cyBmb3IgbXVjaCBzaW1wbGVyIHJlc291cmNlIGFsbG9jYXRpb24gYW5kIGRlYWxsb2NhdGlvbiBkdXJpbmcgdGVzdHMuCisKKy4uCisKKy4uIGJwbzogMzM3OQorLi4gZGF0ZTogNzQzMgorLi4gbm9uY2U6IHlmVWtiQworLi4gc2VjdGlvbjogTGlicmFyeQorCit1bml0dGVzdC5tYWluIG5vdyB0YWtlcyBhbiBvcHRpb25hbCBleGl0IGFyZ3VtZW50LiBJZiBGYWxzZSBtYWluIGRvZXNuJ3QKK2NhbGwgc3lzLmV4aXQgYWxsb3dpbmcgaXQgdG8gYmUgdXNlZCBmcm9tIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlci4KKworLi4KKworLi4gYnBvOiA1OTk1CisuLiBkYXRlOiA3NDMxCisuLiBub25jZTogUzBhZ0xoCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VuaXR0ZXN0Lm1haW4gbm93IHRha2VzIGFuIG9wdGlvbmFsIHZlcmJvc2l0eSBhcmd1bWVudCBhbGxvd2luZyB0ZXN0IG1vZHVsZXMKK3RvIGJlIHJ1biB3aXRoIGEgaGlnaGVyIHRoYW4gZGVmYXVsdCB2ZXJib3NpdHkuCisKKy4uCisKKy4uIGJwbzogNTk5NQorLi4gZGF0ZTogNzQzMAorLi4gbm9uY2U6IHpqazBHSQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBIGZpeCB0byBhbGxvdyB5b3UgdG8gcnVuICJweXRob24gLW0gdW5pdHRlc3QgdGVzdF9tb2R1bGUiIG9yICJweXRob24gLW0KK3VuaXR0ZXN0IHRlc3RfbW9kdWxlLlRlc3RDbGFzcyIgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgorCisuLgorCisuLiBicG86IDU3MjgKKy4uIGRhdGU6IDc0MjkKKy4uIG5vbmNlOiB3UHg4OFQKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordW5pdHRlc3QuVGVzdFJlc3VsdCBoYXMgbmV3IHN0YXJ0VGVzdFJ1biBhbmQgc3RvcFRlc3RSdW4gbWV0aG9kczsgY2FsbGVkCitpbW1lZGlhdGVseSBiZWZvcmUgYW5kIGFmdGVyIGEgdGVzdCBydW4uCisKKy4uCisKKy4uIGJwbzogNTY2MworLi4gZGF0ZTogNzQyOAorLi4gbm9uY2U6IEZkaUR1UworLi4gc2VjdGlvbjogTGlicmFyeQorCitCZXR0ZXIgZmFpbHVyZSBtZXNzYWdlcyBmb3IgdW5pdHRlc3QgYXNzZXJ0cy4gRGVmYXVsdCBhc3NlcnRUcnVlIGFuZAorYXNzZXJ0RmFsc2UgbWVzc2FnZXMgYXJlIG5vdyB1c2VmdWwuIFRlc3RDYXNlIGhhcyBhIGxvbmdNZXNzYWdlIGF0dHJpYnV0ZS4KK1RoaXMgZGVmYXVsdHMgdG8gRmFsc2UsIGJ1dCBpZiBzZXQgdG8gVHJ1ZSB1c2VmdWwgZXJyb3IgbWVzc2FnZXMgYXJlIHNob3duCitpbiBhZGRpdGlvbiB0byBleHBsaWNpdCBtZXNzYWdlcyBwYXNzZWQgdG8gYXNzZXJ0IG1ldGhvZHMuCisKKy4uCisKKy4uIGJwbzogMzExMAorLi4gZGF0ZTogNzQyNworLi4gbm9uY2U6IHlibUxEcworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYWRkaXRpb25hbCBwcm90ZWN0IGFyb3VuZCBTRU1fVkFMVUVfTUFYIGZvciBtdWx0aXByb2Nlc3NpbmcuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzQyNgorLi4gbm9uY2U6IFBUbGM0eQorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiBQZGIsIHByZXZlbnQgdGhlIHJlYXNzaWdubWVudCBvZiBfX2J1aWx0aW5fXy5fIGJ5IHN5cy5kaXNwbGF5aG9vayBvbgorcHJpbnRpbmcgb3V0IHZhbHVlcy4KKworLi4KKworLi4gYnBvOiA0NTcyCisuLiBkYXRlOiA3NDI1CisuLiBub25jZTogeWg1emlQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIFNFRUtfKiBzeW1ib2xpYyBjb25zdGFudHMgdG8gaW8gbW9kdWxlLgorCisuLgorCisuLiBicG86IDE2NjUyMDYKKy4uIGRhdGU6IDc0MjQKKy4uIG5vbmNlOiA4QWhHejEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTW92ZSBpbXBvcnRzIGluIGNnaXRiIHRvIHRoZSB0b3Agb2YgdGhlIG1vZHVsZSBpbnN0ZWFkIG9mIHBlcmZvcm1pbmcgdGhlbSBpbgorZnVuY3Rpb25zLiBIZWxwcyBwcmV2ZW50IGltcG9ydCBkZWFkbG9ja2luZyBpbiB0aHJlYWRzLgorCisuLgorCisuLiBicG86IDU2NDcKKy4uIGRhdGU6IDc0MjMKKy4uIG5vbmNlOiBLUG1TbVcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTXV0YWJsZVNldC5fX2lhbmRfXygpIG5vIGxvbmdlciBtdXRhdGVzIHNlbGYgZHVyaW5nIGl0ZXJhdGlvbi4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NDIyCisuLiBub25jZTogdDBTbTdECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FjdHVhbGx5IG1ha2UgdGhlIFNpbXBsZVhNTFJQQ1NlcnZlciBDR0kgaGFuZGxlciB3b3JrLgorCisuLgorCisuLiBicG86IDI1MjIKKy4uIGRhdGU6IDc0MjEKKy4uIG5vbmNlOiBUVGEwZmkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbG9jYWxlLmZvcm1hdCgpIG5vdyBjaGVja3MgaXRzIGZpcnN0IGFyZ3VtZW50IHRvIGVuc3VyZSBpdCBoYXMgYmVlbiBwYXNzZWQKK29ubHkgb25lIHBhdHRlcm4sIGF2b2lkaW5nIG15c3RlcmlvdXMgZXJyb3JzIHdoZXJlIGl0IGFwcGVhcmVkIHRoYXQgaXQgd2FzCitmYWlsaW5nIHRvIGRvIGxvY2FsaXphdGlvbi4KKworLi4KKworLi4gYnBvOiA1NTgzCisuLiBkYXRlOiA3NDIwCisuLiBub25jZTogR05qUjN5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIG9wdGlvbmFsIGV4dGVuc2lvbnMgaW4gRGlzdHV0aWxzLiAgSW5pdGlhbCBwYXRjaCBieSBHZW9yZyBCcmFuZGwuCisKKy4uCisKKy4uIGJwbzogNTYxOQorLi4gZGF0ZTogNzQxOQorLi4gbm9uY2U6IElrRjFvZworLi4gc2VjdGlvbjogTGlicmFyeQorCitNdWx0aXByb2Nlc3NpbmcgY2hpbGRyZW4gZGlzb2JleSB0aGUgZGVidWcgZmxhZyBhbmQgY2F1c2VzIHBvcHVwcyBvbiB3aW5kb3dzCitidWlsZGJvdHMuICBQYXRjaCBhcHBsaWVkIHRvIHdvcmsgYXJvdW5kIHRoaXMgaXNzdWUuCisKKy4uCisKKy4uIGJwbzogNTYzMgorLi4gZGF0ZTogNzQxOAorLi4gbm9uY2U6IE9jb2NpUAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaHJlYWQuaWRlbnQgd2FzIE5vbmUgZm9yIHRoZSBtYWluIHRocmVhZCBhbmQgdGhyZWFkcyBub3QgY3JlYXRlZCB3aXRoIHRoZQordGhyZWFkaW5nIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiA1NDAwCisuLiBkYXRlOiA3NDE3CisuLiBub25jZTogem1ibTB0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIHBhdGNoIGZvciBtdWx0aXByb2Nlc3Npbmcgb24gbmV0YnNkIGNvbXBpbGF0aW9uL3N1cHBvcnQuCisKKy4uCisKKy4uIGJwbzogNTM4NworLi4gZGF0ZTogNzQxNgorLi4gbm9uY2U6IHV2WjExRQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBtbWFwLm1vdmUgY3Jhc2ggYnkgaW50ZWdlciBvdmVyZmxvdy4KKworLi4KKworLi4gYnBvOiA1MjYxCisuLiBkYXRlOiA3NDE1CisuLiBub25jZTogcHk2amM5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1BhdGNoIG11bHRpcHJvY2Vzc2luZydzIHNlbWFwaG9yZS5jIHRvIHN1cHBvcnQgY29udGV4dCBtYW5hZ2VyIHVzZTogIndpdGgKK211bHRpcHJvY2Vzc2luZy5Mb2NrKCkiIHdvcmtzIG5vdy4KKworLi4KKworLi4gYnBvOiA1MTc3CisuLiBkYXRlOiA3NDE0CisuLiBub25jZTogZVJVTWlNCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK011bHRpcHJvY2Vzc2luZydzIFNvY2tldExpc3RlbmVyIGNsYXNzIG5vdyB1c2VzIHNvY2tldC5TT19SRVVTRUFERFIgb24gYWxsCitjb25uZWN0aW9ucyBzbyB0aGF0IHRoZSB1c2VyIG5vIGxvbmdlciBuZWVkcyB0byB3YWl0IDEyMCBzZWNvbmRzIGZvciB0aGUKK3NvY2tldCB0byBleHBpcmUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzQxMworLi4gbm9uY2U6IHBGZkNxTworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGp1c3RlZCBfdGtpbnRlciB0byBjb21waWxlIHdpdGhvdXQgd2FybmluZ3Mgd2hlbiBXSVRIX1RIUkVBRCBpcyBub3QKK2RlZmluZWQgKHBhcnQgb2YgaXNzdWUgIzUwMzUpLgorCisuLgorCisuLiBicG86IDU1NjEKKy4uIGRhdGU6IDc0MTIKKy4uIG5vbmNlOiAxMWp4VjQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlZCB0aGUgc3lzLnZlcnNpb25faW5mbyBzaG9ydGN1dHMgZnJvbSBwbGF0Zm9ybSdzIHB5dGhvbl92ZXJzaW9uKCkgYW5kCitweXRob25fdmVyc2lvbl90dXBsZSgpIHNpbmNlIHRoZXkgcHJvZHVjZWQgZGlmZmVyZW50IG91dHB1dCBjb21wYXJlZCB0bworcHJldmlvdXMgUHl0aG9uIHZlcnNpb25zLgorCisuLgorCisuLiBicG86IDEwMzQwNTMKKy4uIGRhdGU6IDc0MTEKKy4uIG5vbmNlOiBrQW44NEQKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordW5pdHRlc3Qgbm93IHN1cHBvcnRzIHNraXBwaW5nIHRlc3RzIGFuZCBleHBlY3RlZCBmYWlsdXJlcy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3NDEwCisuLiBub25jZTogR0haeXIxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRSYWlzZXMoKSBtZXRob2Qgbm93IHJldHVybnMgYSBjb250ZXh0IG1hbmFnZXIKK3doZW4gbm90IGdpdmVuIGEgY2FsbGFibGUgc28gdGhhdCBjb2RlIHRvIGJlIHRlc3RlZCBjYW4gYmUgd3JpdHRlbiBpbmxpbmUKK3VzaW5nIGEgd2l0aCBzdGF0ZW1lbnQuCisKKy4uCisKKy4uIGJwbzogMjU3OAorLi4gZGF0ZTogNzQwOQorLi4gbm9uY2U6IEp2TDMxRQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0RXF1YWwoKSBub3cgZGlzcGxheXMgdGhlIGRpZmZlcmVuY2VzIGluIGxpc3RzLAordHVwbGVzLCBkaWN0cyBhbmQgc2V0cyBvbiBmYWlsdXJlLiAgTWFueSBuZXcgaGFuZHkgdHlwZSBhbmQgY29tcGFyaXNvbgorc3BlY2lmaWMgYXNzZXJ0KiBtZXRob2RzIGhhdmUgYmVlbiBhZGRlZCB0aGF0IGZhaWwgd2l0aCBlcnJvciBtZXNzYWdlcworYWN0dWFsbHkgdXNlZnVsIGZvciBkZWJ1Z2dpbmcuICBDb250cmlidXRlZCBpbiBwYXJ0IGJ5IEdvb2dsZS4KKworLi4KKworLi4gYnBvOiA1MDY4CisuLiBkYXRlOiA3NDA4CisuLiBub25jZTogTVhnQ2dtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHRoZSB0YXJmaWxlLl9CWjJQcm94eS5yZWFkKCkgbWV0aG9kIHRoYXQgd291bGQgbG9vcCBmb3JldmVyIG9uCitpbmNvbXBsZXRlIGlucHV0LiAgVGhhdCBjYXVzZWQgdGFyZmlsZS5vcGVuKCkgdG8gaGFuZyB3aGVuIHVzZWQgd2l0aCBtb2RlCisncicgb3IgJ3I6YnoyJyBhbmQgYSBmaWxlb2JqIGFyZ3VtZW50IHRoYXQgY29udGFpbmVkIG5vIGRhdGEgb3IgcGFydGlhbAorYnppcDIgY29tcHJlc3NlZCBkYXRhLgorCisuLgorCisuLiBicG86IDU1MzYKKy4uIGRhdGU6IDc0MDcKKy4uIG5vbmNlOiA5Zi0tanYKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordXJsbGliLnVybHJldHJpZXZlIG1ha2VzIHN1cmUgdG8gY2xvc2UgdGhlIGZpbGUgaXQncyB3cml0aW5nIHRvIGV2ZW4gaWYgYW4KK2V4Y2VwdGlvbiBvY2N1cnMuCisKKy4uCisKKy4uIGJwbzogNTM4MQorLi4gZGF0ZTogNzQwNgorLi4gbm9uY2U6IHF6TVNWUAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCBvYmplY3RfcGFpcnNfaG9vayB0byB0aGUganNvbiBtb2R1bGUuICBUaGlzIGFsbG93cyBPcmRlcmVkRGljdHMgdG8gYmUKK2J1aWx0IGJ5IHRoZSBkZWNvZGVyLgorCisuLgorCisuLiBicG86IDIxMTAKKy4uIGRhdGU6IDc0MDUKKy4uIG5vbmNlOiBWVlFUdjAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHN1cHBvcnQgZm9yIHRob3VzYW5kcyBzZXBhcmF0b3IgYW5kICduJyB0eXBlIHNwZWNpZmllciB0bworYGBEZWNpbWFsLl9fZm9ybWF0X18oKWBgLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc0MDQKKy4uIG5vbmNlOiBFNGtrMjUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IERlY2ltYWwuX19mb3JtYXRfXyBidWcgdGhhdCBzd2FwcGVkIHRoZSBtZWFuaW5ncyBvZiB0aGUgJzwnIGFuZCAnPicKK2FsaWdubWVudCBjaGFyYWN0ZXJzLgorCisuLgorCisuLiBicG86IDEyMjIKKy4uIGRhdGU6IDc0MDMKKy4uIG5vbmNlOiBvNkVUOFQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGBsb2NhbGUuZm9ybWF0KClgYCBidWcgd2hlbiB0aGUgdGhvdXNhbmRzIHNlcGFyYXRvciBpcyBhIHNwYWNlIGNoYXJhY3Rlci4KKworLi4KKworLi4gYnBvOiA1NDcyCisuLiBkYXRlOiA3NDAyCisuLiBub25jZTogeTUyRllzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGRpc3R1dGlscy50ZXN0X3V0aWwgdGVhciBkb3duLiBPcmlnaW5hbCBwYXRjaCBieSBUaW0gR29sZGVuLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc0MDEKKy4uIG5vbmNlOiAzNTNYamQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY29sbGVjdGlvbnMuZGVxdWUgb2JqZWN0cyBub3cgaGF2ZSBhIHJlYWQtb25seSBhdHRyaWJ1dGUgY2FsbGVkIG1heGxlbi4KKworLi4KKworLi4gYnBvOiAyNjM4CisuLiBkYXRlOiA3NDAwCisuLiBub25jZTogTlg5SEhiCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Nob3cgYSB3aW5kb3cgY29uc3RydWN0ZWQgd2l0aCB0a1NpbXBsZURpYWxvZy5EaWFsb2cgb25seSBhZnRlciBpdCBpcyBoYXMKK2JlZW4gcG9wdWxhdGVkIGFuZCBwcm9wZXJseSBjb25maWd1cmVkIGluIG9yZGVyIHRvIHByZXZlbnQgd2luZG93IGZsYXNoaW5nLgorCisuLgorCisuLiBicG86IDQ3OTIKKy4uIGRhdGU6IDczOTkKKy4uIG5vbmNlOiBqSzRRNmwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJldmVudCBhIHNlZ2ZhdWx0IGluIF90a2ludGVyIGJ5IHVzaW5nIHRoZSBndWFyYW50ZWVkIHRvIGJlIHNhZmUgaW50ZXJwCithcmd1bWVudCBnaXZlbiB0byB0aGUgUHl0aG9uQ21kIGluIHBsYWNlIG9mIHRoZSBUY2wgaW50ZXJwcmV0ZXIgdGFrZW4gZnJvbSBhCitQeXRob25DbWRfQ2xpZW50RGF0YS4KKworLi4KKworLi4gYnBvOiA1MTkzCisuLiBkYXRlOiA3Mzk4CisuLiBub25jZTogY1QydGdHCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0d1YXJhbnRlZSB0aGF0IFRraW50ZXIuVGV4dC5zZWFyY2ggcmV0dXJucyBhIHN0cmluZy4KKworLi4KKworLi4gYnBvOiA1Mzk0CisuLiBkYXRlOiA3Mzk3CisuLiBub25jZTogaTJGZmstCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbW92ZWQgPiAyLjMgc3ludGF4IGZyb20gZGlzdHV0aWxzLm1zdmM5Y29tcGlsZXIuIE9yaWdpbmFsIHBhdGNoIGJ5IEFraXJhCitLaXRhZGEuCisKKy4uCisKKy4uIGJwbzogNTM4NQorLi4gZGF0ZTogNzM5NgorLi4gbm9uY2U6IEk2Uk1VMworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBtbWFwIGNyYXNoIGFmdGVyIHJlc2l6ZSBmYWlsdXJlIG9uIHdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogNTE3OQorLi4gZGF0ZTogNzM5NQorLi4gbm9uY2U6IEotRHRZNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBzdWJwcm9jZXNzIGhhbmRsZSBsZWFrIG9uIGZhaWx1cmUgb24gd2luZG93cy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3Mzk0CisuLiBub25jZTogN3pIVnlNCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1BFUCAzNzI6IEFkZGVkIGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzM5MworLi4gbm9uY2U6IDdEek0yWQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgX2FzZGljdCgpIGZvciBtZXRob2QgZm9yIG5hbWVkdHVwbGVzIG5vdyByZXR1cm5zIGFuIE9yZGVyZWREaWN0KCkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzM5MgorLi4gbm9uY2U6IDRpZDdqcQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgY29uZmlncGFyc2VyIG1vZHVsZSBub3cgZGVmYXVsdHMgdG8gdXNpbmcgYW4gb3JkZXJlZCBkaWN0aW9uYXJ5LgorCisuLgorCisuLiBicG86IDQzMDgKKy4uIGRhdGU6IDczOTEKKy4uIG5vbmNlOiA3TzZRU2UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaHR0cGxpYi5JbmNvbXBsZXRlUmVhZCdzIHJlcHIgZG9lc24ndCBpbmNsdWRlIGFsbCBvZiB0aGUgZGF0YSBhbGwgcmVhZHkKK3JlY2VpdmVkLgorCisuLgorCisuLiBicG86IDU0MDEKKy4uIGRhdGU6IDczOTAKKy4uIG5vbmNlOiBMNjd2RVkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYSBwZXJmb3JtYW5jZSBwcm9ibGVtIGluIG1pbWV0eXBlcyB3aGVuIGBgZnJvbSBtaW1ldHlwZXMgaW1wb3J0CitndWVzc19leHRlbnNpb25gYCB3YXMgdXNlZC4KKworLi4KKworLi4gYnBvOiAxNzMzOTg2CisuLiBkYXRlOiA3Mzg5CisuLiBub25jZTogdjZDbGFWCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIG1tYXAgY3Jhc2ggb24gV2luZG93cyBpbiBhY2Nlc3NpbmcgZWxlbWVudHMgb2Ygc2Vjb25kIG1hcCBvYmplY3Qgd2l0aAorc2FtZSB0YWduYW1lIGJ1dCBsYXJnZXIgc2l6ZSB0aGFuIGZpcnN0IG1hcC4KKworLi4KKworLi4gYnBvOiA1Mzg2CisuLiBkYXRlOiA3Mzg4CisuLiBub25jZTogTWZvYzRFCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK21tYXAud3JpdGVfYnl0ZSBkaWRuJ3QgY2hlY2sgbWFwIHNpemUsIHNvIGl0IGNvdWxkIGNhdXNlIGJ1ZmZlciBvdmVycnVuLgorCisuLgorCisuLiBicG86IDE1MzMxNjQKKy4uIGRhdGU6IDczODcKKy4uIG5vbmNlOiBvU0RlbzIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW5zdGFsbGVkIGJ1dCBub3QgbGlzdGVkICoucHlvIHdhcyBicmVha2luZyBEaXN0dXRpbHMgYmRpc3RfcnBtIGNvbW1hbmQuCisKKy4uCisKKy4uIGJwbzogNTM3OAorLi4gZGF0ZTogNzM4NgorLi4gbm9uY2U6IE51N3loSworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCAtLXF1aWV0IG9wdGlvbiB0byBEaXN0dXRpbHMgYmRpc3RfcnBtIGNvbW1hbmQuCisKKy4uCisKKy4uIGJwbzogNTA1MgorLi4gZGF0ZTogNzM4NQorLi4gbm9uY2U6IHR1Um1NNworLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIERpc3R1dGlscyBjb21wYXRpYmxlIHdpdGggMi4zIGFnYWluLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDczODQKKy4uIG5vbmNlOiBpNFFXRlUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRGVwcmVjYXRlZCBtZXRob2RzIG9mIHN5bXRhYmxlLlN5bWJvbCBoYXZlIGJlZW4gcmVtb3ZlZDogaXNfa2V5d29yZGFyZygpLAoraXNfdmFyYXJnKCksIGFuZCBpc19pbl90dXBsZSgpLgorCisuLgorCisuLiBicG86IDUzMTYKKy4uIGRhdGU6IDczODMKKy4uIG5vbmNlOiBnZFdqYkwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYnVpbGRib3QgZmFpbHVyZXMgaW50cm9kdWNlZCBieSBtdWx0aXBsZSBpbmhlcml0YW5jZSBpbiBEaXN0dXRpbHMKK3Rlc3RzLgorCisuLgorCisuLiBicG86IDUyODcKKy4uIGRhdGU6IDczODIKKy4uIG5vbmNlOiBtM3hRZXQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGV4Y2VwdGlvbiBoYW5kbGluZyBhcm91bmQgZmluZENhbGxlcigpIGNhbGwgdG8gaGVscCBvdXQgSXJvblB5dGhvbi4KKworLi4KKworLi4gYnBvOiA1MjgyCisuLiBkYXRlOiA3MzgxCisuLiBub25jZTogb2M2NHlkCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIG1tYXAgcmVzaXplIG9uIDMyYml0IFdpbmRvd3MgYW5kIFVuaXguICBXaGVuIGBgb2Zmc2V0ID4gMGBgLCB0aGUgZmlsZQord2FzIHJlc2l6ZWQgdG8gd3Jvbmcgc2l6ZS4KKworLi4KKworLi4gYnBvOiA1MjkyCisuLiBkYXRlOiA3MzgwCisuLiBub25jZTogSy1pS2taCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIG1tYXAgY3Jhc2ggb24gaXRzIGJvdW5kYXJ5IGFjY2VzcyBtW2xlbihtKV0uCisKKy4uCisKKy4uIGJwbzogMjI3OQorLi4gZGF0ZTogNzM3OQorLi4gbm9uY2U6IFQ3dDhkMAorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMuc2Rpc3QuYWRkX2RlZmF1bHRzIG5vdyBhZGQgZmlsZXMgZnJvbSB0aGUgcGFja2FnZV9kYXRhIGFuZCB0aGUKK2RhdGFfZmlsZXMgbWV0YWRhdGEuCisKKy4uCisKKy4uIGJwbzogNTI1NworLi4gZGF0ZTogNzM3OAorLi4gbm9uY2U6IGFzTnJHeAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZWZhY3RvcmVkIGFsbCB0ZXN0cyBpbiBkaXN0dXRpbHMsIHNvIHRoZXkgdXNlIHN1cHBvcnQuVGVtcGRpck1hbmFnZXIsIHRvCithdm9pZCB3cml0aW5nIGluIHRoZSB0ZXN0cyBkaXJlY3RvcnkuCisKKy4uCisKKy4uIGJwbzogNDUyNAorLi4gZGF0ZTogNzM3NworLi4gbm9uY2U6IFkzTF9maAorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMgYnVpbGRfc2NyaXB0IGNvbW1hbmQgZmFpbGVkIHdpdGggLS13aXRoLXN1ZmZpeD0zLiBJbml0aWFsIHBhdGNoIGJ5CitBbWF1cnkgRm9yZ2VvdCBkJ0FyYy4KKworLi4KKworLi4gYnBvOiAyNDYxCisuLiBkYXRlOiA3Mzc2CisuLiBub25jZTogUkQ2NTNQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIHRlc3RzIGZvciBkaXN0dXRpbHMudXRpbC4KKworLi4KKworLi4gYnBvOiAxMDA4MDg2CisuLiBkYXRlOiA3Mzc1CisuLiBub25jZTogQmJWaXEtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIHNvY2tldC5pbmV0X2F0b24oKSB0byBhbHdheXMgcmV0dXJuIDQgYnl0ZXMgZXZlbiBvbiBMUDY0IHBsYXRmb3JtcworKG1vc3QgNjQtYml0IExpbnV4LCBic2QsIHVuaXggc3lzdGVtcykuCisKKy4uCisKKy4uIGJwbzogNTIwMworLi4gZGF0ZTogNzM3NAorLi4gbm9uY2U6IF9kc0NZaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBjdHlwZXMgc2VnZmF1bHRzIHdoZW4gcGFzc2luZyBhIHVuaWNvZGUgc3RyaW5nIHRvIGEgZnVuY3Rpb24gd2l0aG91dAorYXJndHlwZXMgKG9ubHkgb2NjdXJzIGlmIEhBVkVfVVNBQkxFX1dDSEFSX1QgaXMgZmFsc2UpLgorCisuLgorCisuLiBicG86IDMzODYKKy4uIGRhdGU6IDczNzMKKy4uIG5vbmNlOiBLRy1SdTUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYiBwcmVmaXggYXJndW1lbnQgd2FzIGlnbm9yZWQgdW5kZXIgTlQgYW5kCitPUzIuIFBhdGNoIGJ5IFBoaWxpcCBKZW52ZXkuCisKKy4uCisKKy4uIGJwbzogNTEyOAorLi4gZGF0ZTogNzM3MgorLi4gbm9uY2U6IFJMUC1JagorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIGNvbXBpbGVhbGwgcHJvcGVybHkgaW5zcGVjdCBieXRlY29kZSB0byBkZXRlcm1pbmUgaWYgbmVlZHMgdG8gYmUKK3JlY3JlYXRlZC4gIFRoaXMgYXZvaWRzIGEgdGltaW5nIGhvbGUgdGhhbmtzIHRvIHRoZSBvbGQgcmVsaWFuY2Ugb24gdGhlCitjdGltZSBvZiB0aGUgZmlsZXMgaW52b2x2ZWQuCisKKy4uCisKKy4uIGJwbzogNTEyMgorLi4gZGF0ZTogNzM3MQorLi4gbm9uY2U6IDQ1QklkWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitTeW5jaHJvbml6ZSB0ayBsb2FkIGZhaWx1cmUgY2hlY2sgdG8gcHJldmVudCBhIHBvdGVudGlhbCBkZWFkbG9jay4KKworLi4KKworLi4gYnBvOiAxODE4CisuLiBkYXRlOiA3MzcwCisuLiBub25jZTogX2kybGc4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2NvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSBub3cgc3VwcG9ydHMgYSBrZXl3b3JkIGFyZ3VtZW50ICdyZW5hbWUnIHdoaWNoIGxldHMKK2ludmFsaWQgZmllbGRuYW1lcyBiZSBhdXRvbWF0aWNhbGx5IGNvbnZlcnRlZCB0byBwb3NpdGlvbmFsIG5hbWVzIGluIHRoZQorZm9ybSwgXzEsIF8yLCAuLi4KKworLi4KKworLi4gYnBvOiA0ODkwCisuLiBkYXRlOiA3MzY5CisuLiBub25jZTogZnJNNU91CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0hhbmRsZSBlbXB0eSB0ZXh0IHNlYXJjaCBwYXR0ZXJuIGluIFRraW50ZXIuVGV4dC5zZWFyY2guCisKKy4uCisKKy4uIGJwbzogNTE3MAorLi4gZGF0ZTogNzM2OAorLi4gbm9uY2U6IHFpcXJiTworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBVbmljb2RlIG91dHB1dCBidWcgaW4gbG9nZ2luZyBhbmQgYWRkZWQgdGVzdCBjYXNlLiAgVGhpcyBpcyBhCityZWdyZXNzaW9uIHdoaWNoIGRpZCBub3Qgb2NjdXIgaW4gMi41LgorCisuLgorCisuLiBicG86IDQ1MTIKKy4uIGRhdGU6IDczNjcKKy4uIG5vbmNlOiBXQ2NuN3cKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUHJvbW90ZSBgYFppcEltcG9ydGVyLl9nZXRfZmlsZW5hbWUoKWBgIHRvIGJlIGEgcHVibGljIGRvY3VtZW50ZWQgbWV0aG9kCitgYFppcEltcG9ydGVyLmdldF9maWxlbmFtZSgpYGAuCisKKy4uCisKKy4uIGJwbzogNDE5NQorLi4gZGF0ZTogNzM2NgorLi4gbm9uY2U6IDQ2MlJLRQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgYGBydW5weWBgIG1vZHVsZSAoYW5kIHRoZSBgYC1tYGAgc3dpdGNoKSBub3cgc3VwcG9ydCB0aGUgZXhlY3V0aW9uIG9mCitwYWNrYWdlcyBieSBsb29raW5nIGZvciBhbmQgZXhlY3V0aW5nIGEgYGBfX21haW5fX2BgIHN1Ym1vZHVsZSB3aGVuIGEKK3BhY2thZ2UgbmFtZSBpcyBzdXBwbGllZC4gSW5pdGlhbCBwYXRjaCBieSBBbmRpIFZhamRhLgorCisuLgorCisuLiBicG86IDE3MzE3MDYKKy4uIGRhdGU6IDczNjUKKy4uIG5vbmNlOiBXWjVXWDUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ2FsbCBUY2xfQ29uZGl0aW9uRmluYWxpemUgZm9yIFRjbF9Db25kaXRpb25zIHRoYXQgd2lsbCBub3QgYmUgdXNlZCBhZ2FpbgorKHRoaXMgcmVxdWlyZXMgVGNsL1RrIDguMy4xKSwgYWxzbyBmaXggYSBtZW1vcnkgbGVhayBpbiBUa2FwcF9DYWxsIHdoZW4KK2NhbGxpbmcgZnJvbSBhIHRocmVhZCBkaWZmZXJlbnQgdGhhbiB0aGUgb25lIHRoYXQgY3JlYXRlZCB0aGUgVGNsCitpbnRlcnByZXRlci4gIFBhdGNoIGJ5IFJvYmVydCBIYW5jb2NrLgorCisuLgorCisuLiBicG86IDE1MjA4NzcKKy4uIGRhdGU6IDczNjQKKy4uIG5vbmNlOiA4TDVwTXAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTm93IGRpc3R1dGlscy5zeXNjb25maWcgcmVhZHMgJEFSIGZyb20gdGhlIGVudmlyb25tZW50L01ha2VmaWxlLiBQYXRjaCBieQorRG91Z2xhcyBHcmVpbWFuLgorCisuLgorCisuLiBicG86IDQyODUKKy4uIGRhdGU6IDczNjMKKy4uIG5vbmNlOiAzdmx2UzYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ2hhbmdlIHN5cy52ZXJzaW9uX2luZm8gdG8gYmUgYSBuYW1lZCB0dXBsZS4gIFBhdGNoIGJ5IFJvc3MgTGlnaHQuCisKKy4uCisKKy4uIGJwbzogMTI3Njc2OAorLi4gZGF0ZTogNzM2MgorLi4gbm9uY2U6IHhHUmxLXworLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgdmVyYm9zZSBvcHRpb24gd2FzIG5vdCB1c2VkIGluIHRoZSBjb2RlIG9mIGRpc3R1dGlscy5maWxlX3V0aWwgYW5kCitkaXN0dXRpbHMuZGlyX3V0aWwuCisKKy4uCisKKy4uIGJwbzogNTEzMgorLi4gZGF0ZTogNzM2MQorLi4gbm9uY2U6IGxZc2d4agorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0cm91YmxlIGJ1aWxkaW5nIGV4dGVuc2lvbnMgdW5kZXIgU29sYXJpcyB3aXRoIC0tZW5hYmxlZC1zaGFyZWQKK2FjdGl2YXRlZC4gSW5pdGlhbCBwYXRjaCBieSBEYXZlIFBldGVyc29uLgorCisuLgorCisuLiBicG86IDE1ODE0NzYKKy4uIGRhdGU6IDczNjAKKy4uIG5vbmNlOiA4UFB0eHIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWx3YXlzIHVzZSB0aGUgVGNsIGdsb2JhbCBuYW1lc3BhY2Ugd2hlbiBjYWxsaW5nIGludG8gVGNsLgorCisuLgorCisuLiBicG86IDIwNDcKKy4uIGRhdGU6IDczNTkKKy4uIG5vbmNlOiBXMjlxMnkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc2h1dGlsLm1vdmUoKSBjb3VsZCBiZWxpZXZlIHRoYXQgaXRzIGRlc3RpbmF0aW9uIHBhdGggd2FzIGluc2lkZSBpdHMgc291cmNlCitwYXRoIGlmIGl0IGJlZ2FuIHdpdGggdGhlIHNhbWUgbGV0dGVycyAoZS5nLiAic3JjIiB2cy4gICJzcmMubmV3IikuCisKKy4uCisKKy4uIGJwbzogNDkyMAorLi4gZGF0ZTogNzM1OAorLi4gbm9uY2U6IDRDNlRrYQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCAubmV4dCgpIHZzIC5fX25leHRfXygpIGlzc3VlcyBpbiB0aGUgQUJDcyBmb3IgSXRlcmF0b3IgYW5kIE11dGFibGVTZXQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzM1NworLi4gbm9uY2U6IFN0MUFLMQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCB0aGUgdHRrIG1vZHVsZS4gU2VlIGlzc3VlICMyOTgzOiBUdGsgc3VwcG9ydCBmb3IgVGtpbnRlci4KKworLi4KKworLi4gYnBvOiA1MDIxCisuLiBkYXRlOiA3MzU2CisuLiBub25jZTogdzY2R3Q0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2RvY3Rlc3QudGVzdGZpbGUoKSBkaWQgbm90IGNyZWF0ZSBfX25hbWVfXyBhbmQgY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpCityZWxpZWQgb24gX19uYW1lX18gYmVpbmcgZGVmaW5lZC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MzU1CisuLiBub25jZTogaXFoTC10CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0JhY2twb3J0IGltcG9ydGxpYiBmcm9tIFB5dGhvbiAzLjEuIE9ubHkgdGhlIGltcG9ydF9tb2R1bGUoKSBmdW5jdGlvbiBoYXMKK2JlZW4gYmFja3BvcnRlZCB0byBoZWxwIGZhY2lsaXRhdGUgdHJhbnNpdGlvbnMgZnJvbSAyLjcgdG8gMy4xLgorCisuLgorCisuLiBicG86IDE4ODUKKy4uIGRhdGU6IDczNTQKKy4uIG5vbmNlOiBQdGFWS2QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlzdHV0aWxzOiBXaGVuIHJ1bm5pbmcgc2Rpc3Qgd2l0aCAtLWZvcm1hdHM9dGFyLGd6dGFyIHRoZSB0YXIgZmlsZSB3YXMKK292ZXJyaWRkZW4gYnkgdGhlIGd6dGFyIG9uZS4KKworLi4KKworLi4gYnBvOiA0ODYzCisuLiBkYXRlOiA3MzUzCisuLiBub25jZTogV0FkMXlPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Rpc3R1dGlscy5td2Vya3Njb21waWxlciBoYXMgYmVlbiByZW1vdmVkLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDczNTIKKy4uIG5vbmNlOiBOODd6b1UKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgbmV3IGl0ZXJ0b29scyBmdW5jdGlvbnM6IGNvbWJpbmF0aW9uc193aXRoX3JlcGxhY2VtZW50KCkgYW5kCitjb21wcmVzcygpLgorCisuLgorCisuLiBicG86IDUwMzIKKy4uIGRhdGU6IDczNTEKKy4uIG5vbmNlOiBIY19IRjkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgYSBzdGVwIGFyZ3VtZW50IHRvIGl0ZXJ0b29scy5jb3VudCgpIGFuZCBhbGxvd2VkIG5vbi1pbnRlZ2VyCithcmd1bWVudHMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzM1MAorLi4gbm9uY2U6IGh0R1Q1cQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYW5kIHByb3Blcmx5IGRvY3VtZW50IHRoZSBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlJ3MgbG9nZ2luZyBzdXBwb3J0LAorZXhwb3NlIHRoZSBpbnRlcm5hbCBsZXZlbHMgYW5kIHByb3ZpZGUgcHJvcGVyIHVzYWdlIGV4YW1wbGVzLgorCisuLgorCisuLiBicG86IDE2NzIzMzIKKy4uIGRhdGU6IDczNDkKKy4uIG5vbmNlOiBQaWxYekYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHVucGlja2xpbmcgb2Ygc3Vibm9ybWFsIGZsb2F0cywgd2hpY2ggd2FzIHByb2R1Y2luZyBhIFZhbHVlRXJyb3Igb24gc29tZQorcGxhdGZvcm1zLgorCisuLgorCisuLiBicG86IDM4ODEKKy4uIGRhdGU6IDczNDgKKy4uIG5vbmNlOiBiSVdONjQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSGVscCBUY2wgdG8gbG9hZCBldmVuIHdoZW4gc3RhcnRlZCB0aHJvdWdoIHRoZSB1bnJlYWRhYmxlIGxvY2FsIHN5bWxpbmsgdG8KKyJQcm9ncmFtIEZpbGVzIiBvbiBWaXN0YS4KKworLi4KKworLi4gYnBvOiA0NzEwCisuLiBkYXRlOiA3MzQ3CisuLiBub25jZTogWmpiQUZwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0V4dHJhY3QgZGlyZWN0b3JpZXMgcHJvcGVybHkgaW4gdGhlIHppcGZpbGUgbW9kdWxlOyBhbGxvdyBhZGRpbmcgZGlyZWN0b3JpZXMKK3RvIGEgemlwZmlsZS4KKworLi4KKworLi4gYnBvOiAzODA3CisuLiBkYXRlOiA3MzQ2CisuLiBub25jZTogRTRJNDU4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK19tdWx0aXByb2Nlc3NpbmcgYnVpbGQgZmFpbHMgd2hlbiBjb25maWd1cmUgaXMgcGFzc2VkIC0td2l0aG91dC10aHJlYWRzCithcmd1bWVudC4gV2hlbiB0aGlzIG9jY3VycywgX211bHRpcHJvY2Vzc2luZyB3aWxsIGJlIGRpc2FibGVkLCBhbmQgbm90Citjb21waWxlZC4KKworLi4KKworLi4gYnBvOiA1MDA4CisuLiBkYXRlOiA3MzQ1CisuLiBub25jZTogbjF1UjRWCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1doZW4gYSBmaWxlIGlzIG9wZW5lZCBpbiBhcHBlbmQgbW9kZSB3aXRoIHRoZSBuZXcgSU8gbGlicmFyeSwgZG8gYW4gZXhwbGljaXQKK3NlZWsgdG8gdGhlIGVuZCBvZiBmaWxlIChzbyB0aGF0IGUuZy4gdGVsbCgpIHJldHVybnMgdGhlIGZpbGUgc2l6ZSByYXRoZXIKK3RoYW4gMCkuIFRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBiZWhhdmlvdXIgb2YgdGhlIHRyYWRpdGlvbmFsIDIueCBmaWxlCitvYmplY3QuCisKKy4uCisKKy4uIGJwbzogNTAxMworLi4gZGF0ZTogNzM0NAorLi4gbm9uY2U6IEFaOVdObworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIGJ1ZyBpbiBGaWxlSGFuZGxlciB3aGljaCBvY2N1cnJlZCB3aGVuIHRoZSBkZWxheSBwYXJhbWV0ZXIgd2FzIHNldC4KKworLi4KKworLi4gYnBvOiA0OTk4CisuLiBkYXRlOiA3MzQzCisuLiBub25jZTogQW9tZFN3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBtZW1vcnkgc2F2aW5nIGVmZmVjdCBvZiBfX3Nsb3RzX18gaGFkIGJlZW4gbG9zdCBvbiBGcmFjdGlvbnMgd2hpY2gKK2luaGVyaXRlZCBmcm9tIG51bWJlcnMucHkgd2hpY2ggZGlkIG5vdCBoYXZlIF9fc2xvdHNfXyBkZWZpbmVkLiAgVGhlIG51bWJlcnMKK2hpZXJhcmNoeSBub3cgaGFzIGl0cyBvd24gX19zbG90c19fIGRlY2xhcmF0aW9ucy4KKworLi4KKworLi4gYnBvOiAzMzIxCisuLiBkYXRlOiA3MzQyCisuLiBub25jZTogNGdmTU9rCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK19tdWx0aXByb2Nlc3NpbmcuQ29ubmVjdGlvbigpIGRvZXNuJ3QgY2hlY2sgaGFuZGxlOyBhZGRlZCBjaGVja3MgZm9yICpuaXgKK21hY2hpbmVzIGZvciBuZWdhdGl2ZSBoYW5kbGVzIGFuZCBsYXJnZSBpbnQgaGFuZGxlcy4gIFdpdGhvdXQgdGhpcyBjaGVjayBpdAoraXMgcG9zc2libGUgdG8gc2VnZmF1bHQgdGhlIGludGVycHJldGVyLgorCisuLgorCisuLiBicG86IDQ0NDkKKy4uIGRhdGU6IDczNDEKKy4uIG5vbmNlOiBPNEk4RDcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQXNzZXJ0aW9uRXJyb3IgaW4gbXBfYmVuY2htYXJrcy5weSwgY2F1c2VkIGJ5IGFuIHVuZGVybHlpbmcgaXNzdWUgaW4KK3NoYXJlZGN0eXBlcy5weS4KKworLi4KKworLi4gYnBvOiAxMjI1MTA3CisuLiBkYXRlOiA3MzQwCisuLiBub25jZTogcDZ3cm83CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2luc3BlY3QuaXNjbGFzcygpIHJldHVybmVkIFRydWUgZm9yIGluc3RhbmNlcyB3aXRoIGEgY3VzdG9tIF9fZ2V0YXR0cl9fLgorCisuLgorCisuLiBicG86IDM5OTcKKy4uIGRhdGU6IDczMzkKKy4uIG5vbmNlOiBrRHF0blEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworWmlwZmlsZXMgZ2VuZXJhdGVkIHdpdGggbW9yZSB0aGFuIDY1NTM2IGZpbGVzIGNvdWxkIG5vdCBiZSBvcGVuZWQgd2l0aCBvdGhlcgorYXBwbGljYXRpb25zLgorCisuLgorCisuLiBicG86IDExNjIxNTQKKy4uIGRhdGU6IDczMzgKKy4uIG5vbmNlOiBRSGVTbmgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGBpbnNwZWN0LmdldG1lbWJlcnMoKWBgIG5vdyBza2lwcyBhdHRyaWJ1dGVzIHRoYXQgcmFpc2UgQXR0cmlidXRlRXJyb3IsCitlLmcuIGEgX19zbG90c19fIGF0dHJpYnV0ZSB3aGljaCBoYXMgbm90IGJlZW4gc2V0LgorCisuLgorCisuLiBicG86IDE2OTYxOTkKKy4uIGRhdGU6IDczMzcKKy4uIG5vbmNlOiBjUjExM20KKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGNvbGxlY3Rpb25zLkNvdW50ZXIoKSBmb3IgcmFwaWQgYW5kIGNvbnZlbmllbnQgY291bnRpbmcuCisKKy4uCisKKy4uIGJwbzogMzg2MAorLi4gZGF0ZTogNzMzNgorLi4gbm9uY2U6IGY4QVpzaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitHemlwRmlsZSBhbmQgQloyRmlsZSBub3cgc3VwcG9ydCB0aGUgY29udGV4dCBtYW5hZ2VtZW50IHByb3RvY29sLgorCisuLgorCisuLiBicG86IDQyNzIKKy4uIGRhdGU6IDczMzUKKy4uIG5vbmNlOiBhdWZfTTAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRvIHRoZSBHemlwRmlsZSBjb25zdHJ1Y3RvciB0byBvdmVycmlkZSB0aGUKK3RpbWVzdGFtcCBpbiB0aGUgZ3ppcCBzdHJlYW0uICBUaGUgZGVmYXVsdCB2YWx1ZSByZW1haW5zIHRoZSBjdXJyZW50IHRpbWUuCitUaGUgaW5mb3JtYXRpb24gY2FuIGJlIHVzZWQgYnkgZS5nLiBndW56aXAgd2hlbiBkZWNvbXByZXNzaW5nLiAgUGF0Y2ggYnkKK0phY3F1ZXMgRnJlY2hldC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MzM0CisuLiBub25jZTogN3NEczlXCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Jlc3RvcmUgUHl0aG9uIDIuMyBjb21wYXRpYmlsaXR5IGZvciBkZWNpbWFsLnB5LgorCisuLgorCisuLiBicG86IDE3MDI1NTEKKy4uIGRhdGU6IDczMzMKKy4uIG5vbmNlOiBJZjBocHcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZGlzdHV0aWxzIHNkaXN0IHdhcyBub3QgZXhjbHVkaW5nIFZDUyBkaXJlY3RvcmllcyB1bmRlciBXaW5kb3dzLiBJbml0aWFsCitzb2x1dGlvbiBieSBHdXkgRGFsYmVydG8uCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzMzMgorLi4gbm9uY2U6IGV4S3ZQTgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgX3RraW50ZXIgbW9kdWxlIGZ1bmN0aW9ucyAiY3JlYXRlZmlsZWhhbmRsZXIiLCAiZGVsZXRlZmlsZWhhbmRsZXIiLAorImNyZWF0ZXRpbWVyaGFuZGxlciIsICJtYWlubG9vcCIsICJkb29uZWV2ZW50IiBhbmQgInF1aXQiIGhhdmUgYmVlbgorZGVwcmVjYXRlZCBmb3IgcmVtb3ZhbCBpbiAzLngKKworLi4KKworLi4gYnBvOiA0Nzk2CisuLiBkYXRlOiA3MzMxCisuLiBub25jZTogVUJLRXl6CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIERlY2ltYWwuZnJvbV9mbG9hdCgpIGFuZCBDb250ZXh0LmNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoKSB0byB0aGUKK2RlY2ltYWwgbW9kdWxlLgorCisuLgorCisuLiBicG86IDQ4MTIKKy4uIGRhdGU6IDczMzAKKy4uIG5vbmNlOiAyaFBjencKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIG1pc3NpbmcgdW5kZXJzY29yZSBwcmVmaXggdG8gc29tZSBpbnRlcm5hbC11c2Utb25seSBjb25zdGFudHMgaW4gdGhlCitkZWNpbWFsIG1vZHVsZS4gIChEZWNfMCBiZWNvbWVzIF9EZWNfMCwgZXRjLikKKworLi4KKworLi4gYnBvOiA0Nzk1CisuLiBkYXRlOiA3MzI5CisuLiBub25jZTogX3ZBLVpmCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2luc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbigpIHJldHVybnMgRmFsc2UgaW5zdGVhZCBvZiBOb25lIHdoZW4gdGhlCitmdW5jdGlvbiBpcyBub3QgYSBnZW5lcmF0b3IuCisKKy4uCisKKy4uIGJwbzogNDcwMgorLi4gZGF0ZTogNzMyOAorLi4gbm9uY2U6IHlibVFCUAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaHJvd2luZyBhIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IgaW5zdGVhZCBvZiBJT0Vycm9yIGluIGNhc2Ugbm8gTVNWQworY29tcGlsZXIgaXMgZm91bmQgdW5kZXIgV2luZG93cy4gIE9yaWdpbmFsIHBhdGNoIGJ5IFBoaWxpcCBKZW52ZXkuCisKKy4uCisKKy4uIGJwbzogNDY0NgorLi4gZGF0ZTogNzMyNworLi4gbm9uY2U6IDd3UVNFdgorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaXN0dXRpbHMgd2FzIGNob2tpbmcgb24gZW1wdHkgb3B0aW9ucyBhcmcgaW4gdGhlIHNldHVwIGZ1bmN0aW9uLiBPcmlnaW5hbAorcGF0Y2ggYnkgVGhvbWFzIEhlbGxlci4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MzI2CisuLiBub25jZTogY0FqT3AxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZyYWN0aW9ucy5mcm9tX2Zsb2F0KCkgbm8gbG9uZ2VyIGxvc2VzIHByZWNpc2lvbiBmb3IgaW50ZWdlcnMgdG9vIGJpZyB0bworY2FzdCBhcyBmbG9hdHMuCisKKy4uCisKKy4uIGJwbzogNDc5MAorLi4gZGF0ZTogNzMyNQorLi4gbm9uY2U6IGFLTmpobgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgbnNtYWxsZXN0KCkgYW5kIG5sYXJnZXN0KCkgZnVuY3Rpb25zIGluIHRoZSBoZWFwcSBtb2R1bGUgZGlkIHVubmVjZXNzYXJ5Cit3b3JrIGluIHRoZSBjb21tb24gY2FzZSB3aGVyZSBubyBrZXkgZnVuY3Rpb24gd2FzIHNwZWNpZmllZC4KKworLi4KKworLi4gYnBvOiAzNzY3CisuLiBkYXRlOiA3MzI0CisuLiBub25jZTogc1kyV3loCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NvbnZlcnQgVGsgb2JqZWN0IHRvIHN0cmluZyBpbiB0a0NvbG9yQ2hvb3Nlci4KKworLi4KKworLi4gYnBvOiAzMjQ4CisuLiBkYXRlOiA3MzIzCisuLiBub25jZTogNlVJZF9yCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FsbG93IHBsYWNpbmcgU2Nyb2xsZWRUZXh0IGluIGEgUGFuZWRXaW5kb3cuCisKKy4uCisKKy4uIGJwbzogNDQ0NAorLi4gZGF0ZTogNzMyMgorLi4gbm9uY2U6IG9CeHgyaworLi4gc2VjdGlvbjogTGlicmFyeQorCitBbGxvdyBhc3NlcnRSYWlzZXMoKSB0byBiZSB1c2VkIGFzIGEgY29udGV4dCBoYW5kbGVyLCBzbyB0aGF0IHRoZSBjb2RlIHVuZGVyCit0ZXN0IGNhbiBiZSB3cml0dGVuIGlubGluZSBpZiBtb3JlIHByYWN0aWNhbC4KKworLi4KKworLi4gYnBvOiA0NzM5CisuLiBkYXRlOiA3MzIxCisuLiBub25jZTogVm9ZUnJ3CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBweWRvYyBoZWxwIHRvcGljcyBmb3Igc3ltYm9scywgc28gdGhhdCBlLmcuIGhlbHAoJ0AnKSB3b3JrcyBhcyBleHBlY3RlZAoraW4gdGhlIGludGVyYWN0aXZlIGVudmlyb25tZW50LgorCisuLgorCisuLiBicG86IDQ3NTYKKy4uIGRhdGU6IDczMjAKKy4uIG5vbmNlOiBwc2NmSXQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworemlwZmlsZS5pc196aXBmaWxlKCkgbm93IHN1cHBvcnRzIGZpbGUtbGlrZSBvYmplY3RzLiBQYXRjaCBieSBHYWJyaWVsCitHZW5lbGxpbmEuCisKKy4uCisKKy4uIGJwbzogNDQwMAorLi4gZGF0ZTogNzMxOQorLi4gbm9uY2U6IENTRnZjTgorLi4gc2VjdGlvbjogTGlicmFyeQorCisucHlwaXJjIGRlZmF1bHQgZ2VuZXJhdGVkIGZpbGUgd2FzIGJyb2tlbiBpbiBkaXN0dXRpbHMuCisKKy4uCisKKy4uIGJwbzogNDczNgorLi4gZGF0ZTogNzMxOAorLi4gbm9uY2U6IHFmdE5BUgorLi4gc2VjdGlvbjogTGlicmFyeQorCitpby5CdWZmZXJlZFJXUGFpcidzIGNsb3NlZCBwcm9wZXJ0eSBub3cgZnVuY3Rpb25zIHByb3Blcmx5LgorCisuLgorCisuLiBicG86IDM5NTQKKy4uIGRhdGU6IDczMTcKKy4uIG5vbmNlOiB2UHNmZ1QKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGEgcG90ZW50aWFsIFN5c3RlbUVycm9yIGluIF9ob3RzaG90LmxvZ3JlYWRlciBlcnJvciBoYW5kbGluZy4KKworLi4KKworLi4gYnBvOiA0NTc0CisuLiBkYXRlOiA3MzE2CisuLiBub25jZTogQ1hZbnpGCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIGNyYXNoIGluIGlvLkluY3JlbWVudGFsTmV3bGluZURlY29kZXIgd2hlbiBhIGNhcnJpYWdlIHJldHVybiBlbmNvZGVzCit0byBtb3JlIHRoYW4gb25lIGJ5dGUgaW4gdGhlIHNvdXJjZSBlbmNvZGluZyAoZS5nLiBVVEYtMTYpIGFuZCBnZXRzIHNwbGl0IG9uCithIGNodW5rIGJvdW5kYXJ5LgorCisuLgorCisuLiBicG86IDQyMjMKKy4uIGRhdGU6IDczMTUKKy4uIG5vbmNlOiBVQ0FUVzUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworaW5zcGVjdC5nZXRzb3VyY2UoKSB3aWxsIG5vdyBjb3JyZWN0bHkgZGlzcGxheSBzb3VyY2UgY29kZSBmb3IgcGFja2FnZXMKK2xvYWRlZCB2aWEgemlwaW1wb3J0IChvciBhbnkgb3RoZXIgY29uZm9ybWFudCBQRVAgMzAyIGxvYWRlcikuIE9yaWdpbmFsCitwYXRjaCBieSBBbGV4YW5kZXIgQmVsb3BvbHNreS4KKworLi4KKworLi4gYnBvOiA0MjAxCisuLiBkYXRlOiA3MzE0CisuLiBub25jZTogaGRRYklRCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3BkYiBjYW4gbm93IGFjY2VzcyBhbmQgZGlzcGxheSBzb3VyY2UgY29kZSBsb2FkZWQgdmlhIHppcGltcG9ydCAob3IgYW55CitvdGhlciBjb25mb3JtYW50IFBFUCAzMDIgbG9hZGVyKS4gIE9yaWdpbmFsIHBhdGNoIGJ5IEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCisuLgorCisuLiBicG86IDQxOTcKKy4uIGRhdGU6IDczMTMKKy4uIG5vbmNlOiBJQTZ0UGgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRG9jdGVzdHMgaW4gbW9kdWxlcyBsb2FkZWQgdmlhIHppcGltcG9ydCAob3IgYW55IG90aGVyIFBFUCAzMDIgY29uZm9ybWFudAorbG9hZGVyKSB3aWxsIG5vdyB3b3JrIGNvcnJlY3RseSBpbiBtb3N0IGNhc2VzICh0aGV5IGFyZSBzdGlsbCBzdWJqZWN0IHRvIHRoZQorY29uc3RyYWludHMgdGhhdCBleGlzdCBmb3IgYWxsIGNvZGUgcnVubmluZyBmcm9tIGluc2lkZSBhIG1vZHVsZSBsb2FkZWQgdmlhCithIFBFUCAzMDIgbG9hZGVyIGFuZCBhdHRlbXB0aW5nIHRvIHBlcmZvcm0gSU8gb3BlcmF0aW9ucyBiYXNlZCBvbiBfX2ZpbGVfXykuCitPcmlnaW5hbCBwYXRjaCBieSBBbGV4YW5kZXIgQmVsb3BvbHNreS4KKworLi4KKworLi4gYnBvOiA0MDgyCisuLiBkYXRlOiA3MzEyCisuLiBub25jZToganBuWHppCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBydW5weSBzdXBwb3J0IHRvIHppcGltcG9ydCBpbiBhIG1hbm5lciB0aGF0IGFsbG93cyBiYWNrcG9ydGluZyB0bworbWFpbnRlbmFuY2UgYnJhbmNoZXMuICBPcmlnaW5hbCBwYXRjaCBieSBBbGV4YW5kZXIgQmVsb3BvbHNreS4gKFNlZSBhbHNvOgorYnBvLTQ1MTIpCisKKy4uCisKKy4uIGJwbzogNDE2MworLi4gZGF0ZTogNzMxMQorLi4gbm9uY2U6IHI0YWZXcworLi4gc2VjdGlvbjogTGlicmFyeQorCitVc2UgdW5pY29kZS1mcmllbmRseSB3b3JkIHNwbGl0dGluZyBpbiB0aGUgdGV4dHdyYXAgZnVuY3Rpb25zIHdoZW4gZ2l2ZW4gYQorVW5pY29kZSBzdHJpbmcuCisKKy4uCisKKy4uIGJwbzogNDYxNgorLi4gZGF0ZTogNzMxMAorLi4gbm9uY2U6IEVmZWhVNAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUYXJGaWxlLnV0aW1lKCk6IFJlc3RvcmUgZGlyZWN0b3J5IHRpbWVzIG9uIFdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogNDA4NAorLi4gZGF0ZTogNzMwOQorLi4gbm9uY2U6IENnc1UxdgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggbWF4LCBtaW4sIG1heF9tYWcgYW5kIG1pbl9tYWcgRGVjaW1hbCBtZXRob2RzIHRvIGdpdmUgY29ycmVjdCByZXN1bHRzIGluCit0aGUgY2FzZSB3aGVyZSBvbmUgYXJndW1lbnQgaXMgYSBxdWlldCBOYU4gYW5kIHRoZSBvdGhlciBpcyBhIGZpbml0ZSBudW1iZXIKK3RoYXQgcmVxdWlyZXMgcm91bmRpbmcuCisKKy4uCisKKy4uIGJwbzogMTAzMDI1MAorLi4gZGF0ZTogNzMwOAorLi4gbm9uY2U6IHMtS2JGWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitEaXN0dXRpbHMgY3JlYXRlZCBkaXJlY3RvcmllcyBldmVuIHdoZW4gcnVuIHdpdGggdGhlIC0tZHJ5LXJ1biBvcHRpb24uCisKKy4uCisKKy4uIGJwbzogNDQ4MworLi4gZGF0ZTogNzMwNworLi4gbm9uY2U6IEgycEZXZgorLi4gc2VjdGlvbjogTGlicmFyeQorCitfZGJtIG1vZHVsZSBub3cgYnVpbGRzIG9uIHN5c3RlbXMgd2l0aCBnZGJtICYgZ2RibV9jb21wYXQgbGlicy4KKworLi4KKworLi4gYnBvOiA0NTI5CisuLiBkYXRlOiA3MzA2CisuLiBub25jZTogSi1NMW90CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB0aGUgcGFyc2VyIG1vZHVsZSdzIHZhbGlkYXRpb24gb2YgdHJ5LWV4Y2VwdC1maW5hbGx5IHN0YXRlbWVudHMuCisKKy4uCisKKy4uIGJwbzogNDQ1OAorLi4gZGF0ZTogNzMwNQorLi4gbm9uY2U6IGQ2OE9jLQorLi4gc2VjdGlvbjogTGlicmFyeQorCitnZXRvcHQuZ251X2dldG9wdCgpIG5vdyByZWNvZ25pemVzIGEgc2luZ2xlICItIiBhcyBhbiBhcmd1bWVudCwgbm90IGEKK21hbGZvcm1lZCBvcHRpb24uCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzMwNAorLi4gbm9uY2U6IEpjU0RhaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCB0aGUgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoKSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBnZXQgb3V0cHV0IGZyb20KK2Egc3VicHJvY2VzcyBvbiBzdWNjZXNzIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4KKworLi4KKworLi4gYnBvOiAxMDU1MjM0CisuLiBkYXRlOiA3MzAzCisuLiBub25jZTogUEpEV01aCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2NnaS5wYXJzZV9oZWFkZXIoKTogRml4ZWQgcGFyc2luZyBvZiBoZWFkZXIgcGFyYW1ldGVycyB0byBzdXBwb3J0IHVudXN1YWwKK2ZpbGVuYW1lcyAoc3VjaCBhcyB0aG9zZSBjb250YWluaW5nIHNlbWktY29sb25zKSBpbiBDb250ZW50LURpc3Bvc2l0aW9uCitoZWFkZXJzLgorCisuLgorCisuLiBicG86IDQzODQKKy4uIGRhdGU6IDczMDIKKy4uIG5vbmNlOiA1VzZ5ckQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgbG9nZ2luZyBpbnRlZ3JhdGlvbiB3aXRoIHdhcm5pbmdzIG1vZHVsZSB1c2luZyBjYXB0dXJlV2FybmluZ3MoKS4KK1RoaXMgY2hhbmdlIGluY2x1ZGVzIGEgTnVsbEhhbmRsZXIgd2hpY2ggZG9lcyBub3RoaW5nOyBpdCB3aWxsIGJlIG9mIHVzZSB0bworbGlicmFyeSBkZXZlbG9wZXJzIHdobyB3YW50IHRvIGF2b2lkIHRoZSAiTm8gaGFuZGxlcnMgY291bGQgYmUgZm91bmQgZm9yCitsb2dnZXIgWFhYIiBtZXNzYWdlIHdoaWNoIGNhbiBhcHBlYXIgaWYgdGhlIGxpYnJhcnkgdXNlciBkb2Vzbid0IGNvbmZpZ3VyZQorbG9nZ2luZy4KKworLi4KKworLi4gYnBvOiAzNzQxCisuLiBkYXRlOiA3MzAxCisuLiBub25jZTogdWdXN1pTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0RJU1RVVElMU19VU0VfU0RLIHNldCBjYXVzZXMgbXN2Yzljb21waWxlci5weSB0byByYWlzZSBhbiBleGNlcHRpb24uCisKKy4uCisKKy4uIGJwbzogNDM2MworLi4gZGF0ZTogNzMwMAorLi4gbm9uY2U6IHpiUDJzOQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgdXVpZC51dWlkMSgpIGFuZCB1dWlkLnV1aWQ0KCkgZnVuY3Rpb25zIG5vdyB3b3JrIGV2ZW4gaWYgdGhlIGN0eXBlcworbW9kdWxlIGlzIG5vdCBwcmVzZW50LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcyOTkKKy4uIG5vbmNlOiA5b2h1MmYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRmlsZUlPJ3MgbW9kZSBhdHRyaWJ1dGUgbm93IGFsd2F5cyBpbmNsdWRlcyBgYCJiImBgLgorCisuLgorCisuLiBicG86IDQxMTYKKy4uIGRhdGU6IDcyOTgKKy4uIG5vbmNlOiBDRF9NUDcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVzb2x2ZSBtZW1iZXIgbmFtZSBjb25mbGljdCBpbiBTY3JvbGxlZENhbnZhcy5fX2luaXRfXy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3Mjk3CisuLiBub25jZTogUW1PTmRXCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2h0dHBsaWIuSFRUUENvbm5lY3Rpb24ucHV0aGVhZGVyKCkgbm93IGFjY2VwdHMgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiB2YWx1ZXMKK2ZvciBhbnkgaGVhZGVyLCBtYXRjaGluZyB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIGhhcyBjbGFpbWVkIGZvciBhIHdoaWxlLgorCisuLgorCisuLiBicG86IDM3NzQKKy4uIGRhdGU6IDcyOTYKKy4uIG5vbmNlOiBxaEJOTlEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4ZWQgYW4gZXJyb3Igd2hlbiBjcmVhdGUgYSBUa2ludGVyIG1lbnUgaXRlbSB3aXRob3V0IGNvbW1hbmQgYW5kIHRoZW4KK3JlbW92ZSBpdC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3Mjk1CisuLiBub25jZTogTmJFVElSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIGEgbW9kdWxlZmluZGVyIGNyYXNoIG9uIGNlcnRhaW4gcmVsYXRpdmUgaW1wb3J0cy4KKworLi4KKworLi4gYnBvOiA0MTUwCisuLiBkYXRlOiA3Mjk0CisuLiBub25jZTogUThqbmtQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1BkYidzICJ1cCIgY29tbWFuZCBub3cgd29ya3MgZm9yIGdlbmVyYXRvciBmcmFtZXMgaW4gcG9zdC1tb3J0ZW0gZGVidWdnaW5nLgorCisuLgorCisuLiBicG86IDQwOTIKKy4uIGRhdGU6IDcyOTMKKy4uIG5vbmNlOiBjZ3U4VTcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmV0dXJuIEFyZ0luZm8gYXMgcHJvbWlzZWQgaW4gdGhlIGRvY3VtZW50YXRpb24gZnJvbSBpbnNwZWN0LmdldGFyZ3ZhbHVlcy4KKworLi4KKworLi4gYnBvOiAzOTM1CisuLiBkYXRlOiA3MjkyCisuLiBub25jZTogeG82TFhICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1Byb3Blcmx5IHN1cHBvcnQgbGlzdCBzdWJjbGFzc2VzIGluIGJpc2VjdCdzIEMgaW1wbGVtZW50YXRpb24uCisKKy4uCisKKy4uIGJwbzogNDAxNAorLi4gZGF0ZTogNzI5MQorLi4gbm9uY2U6IFZQZXBaaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitEb24ndCBjbGFpbSB0aGF0IFB5dGhvbiBoYXMgYW4gQWxwaGEgcmVsZWFzZSBzdGF0dXMsIGluIGFkZGl0aW9uIHRvIGNsYWltaW5nCitpdCBpcyBNYXR1cmUuCisKKy4uCisKKy4uIGJwbzogNDczMAorLi4gZGF0ZTogNzI5MAorLi4gbm9uY2U6IEdiLXQyQQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0aGUgY1BpY2tsZSBtb2R1bGUgdG8gaGFuZGxlIGNvcnJlY3RseSBhc3RyYWwgY2hhcmFjdGVycyB3aGVuIHByb3RvY29sCiswIGlzIHVzZWQuCisKKy4uCisKKy4uIGJwbzogMTU5NAorLi4gZGF0ZTogNzI4OQorLi4gbm9uY2U6IEhFc0hzRgorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWNPUy5HZXRDcmVhdG9yQW5kVHlwZSBub3cgYWx3YXlzIHJldHVybnMgYSBiaWctZW5kaWFuIHJlc3VsdCwgdG8gYmUKK2NvbnNpc3RlbnQgd2l0aCBBcHBsZSB0b29scy4KKworLi4KKworLi4gYnBvOiA5MDA5NDkKKy4uIGRhdGU6IDcyODgKKy4uIG5vbmNlOiBXTHhIb0gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcGxhdC1tYWMvdmlkZW9yZWFkZXIucHkgbm8gbG9uZ2VyIHJlbGllcyBvbiBhIG5vbi1leGlzdGluZyBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMTYyNzg5NTIKKy4uIGRhdGU6IDcyODcKKy4uIG5vbmNlOiBselBRVzcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworcGxhdC1tYWMvdmlkZW9yZWFkZXIucHkgbm93IGNvcnJlY3RseSBpbXBvcnRzIE1lZGlhRGVzY3IKKworLi4KKworLi4gYnBvOiAxNzM3ODMyCisuLiBkYXRlOiA3Mjg2CisuLiBub25jZTogY1FkTGp1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3BsYXQtbWFjL0Vhc3lEaWFsb2cucHkgbm8gbG9uZ2VyIHVzZXMgdGhlIGJyb2tlbiBhZXBhY2sgbW9kdWxlLgorCisuLgorCisuLiBicG86IDExNDk4MDQKKy4uIGRhdGU6IDcyODUKKy4uIG5vbmNlOiAtNWVMd2EKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbWFjb3N0b29scy5ta2RpcnMgbm93IGV2ZW4gd29ya3Mgd2hlbiBhbm90aGVyIHByb2Nlc3MgY3JlYXRlcyBvbmUgb2YgdGhlCituZWVkZWQgc3ViZGlyZWN0b3JpZXMuCisKKy4uCisKKy4uIGJwbzogOTAwNTA2CisuLiBkYXRlOiA3Mjg0CisuLiBub25jZToga1ZaQVpMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FkZGVkIC0tbm8temlwaW1wb3J0IGZsYWcgdG8gdGhlIGJ1bmRsZWJ1aWxkZXIgc2NyaXB0LgorCisuLgorCisuLiBicG86IDg0MTgwMAorLi4gZGF0ZTogNzI4MworLi4gbm9uY2U6IFhDblNkcgorLi4gc2VjdGlvbjogTGlicmFyeQorCitidW5kbGVidWlsZGVyIG5vdyB3b3JrcyB3aXRoICdweXRob24gLU8nLgorCisuLgorCisuLiBicG86IDQ4NjEKKy4uIGRhdGU6IDcyODIKKy4uIG5vbmNlOiBzSXRfOWgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5KCk6IFJvYnVzdGlmeS4gRml4IGxpYnJhcnkgZGV0ZWN0aW9uIG9uIGJpYXJjaAorc3lzdGVtcy4gIFRyeSB0byByZWx5IG9uIGxkY29uZmlnIG9ubHksIHdpdGhvdXQgdXNpbmcgb2JqZHVtcCBhbmQgZ2NjLgorCisuLgorCisuLiBicG86IDUxMDQKKy4uIGRhdGU6IDcyODEKKy4uIG5vbmNlOiBZenpLdFoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHNvY2tldCBtb2R1bGUgbm93IHJhaXNlcyBPdmVyZmxvd0Vycm9yIHdoZW4gMTYtYml0IHBvcnQgYW5kIHByb3RvY29sCitudW1iZXJzIGFyZSBzdXBwbGllZCBvdXRzaWRlIHRoZSBhbGxvd2VkIDAtNjU1MzYgcmFuZ2Ugb24gYmluZCgpIGFuZAorZ2V0c2VydmJ5cG9ydCgpLgorCisuLgorCisuLiBicG86IDk5OTA0MgorLi4gZGF0ZTogNzI4MAorLi4gbm9uY2U6IGNWb2hKRAorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgUHl0aG9uIGNvbXBpbGVyIG5vdyBoYW5kbGVzIGV4cGxpY3QgZ2xvYmFsIHN0YXRlbWVudHMgY29ycmVjdGx5IChzaG91bGQKK2JlIGFzc2lnbmVkIHVzaW5nIFNUT1JFX0dMT0JBTCBvcGNvZGUpLgorCisuLgorCisuLiBicG86IDI3MDMKKy4uIGRhdGU6IDcyNzkKKy4uIG5vbmNlOiBuSHptM20KKy4uIHNlY3Rpb246IExpYnJhcnkKKworU2ltcGxlWE1MUlBDRGlzcGF0Y2hlci5fX2luaXRfXzogUHJvdmlkZSBkZWZhdWx0IHZhbHVlcyBmb3IgbmV3IGFyZ3VtZW50cworaW50cm9kdWNlZCBpbiAyLjUuCisKKy4uCisKKy4uIGJwbzogNTgyOAorLi4gZGF0ZTogNzI3OAorLi4gbm9uY2U6IHZLc1E4MgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBib2d1cyBsb2dpYyBpbiBtYWtldW5pY29kZWRhdGEucHkgYW5kIHJlZ2VuZXJhdGVkIHRoZSBVbmljb2RlIGRhdGFiYXNlCisoVGhpcyBmaXhlcyB1J1x1MWQ3OScubG93ZXIoKSA9PSAnXHgwMCcpLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcyNzcKKy4uIG5vbmNlOiBhT3hJYjIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV2luZG93cyBsb2NhbGUgbWFwcGluZyB1cGRhdGVkIHRvIFZpc3RhLgorCisuLgorCisuLiBicG86IDUxNTAKKy4uIGRhdGU6IDcyNzYKKy4uIG5vbmNlOiBST3ZPRUMKKy4uIHNlY3Rpb246IElETEUKKworSURMRSdzIGZvcm1hdCBtZW51IG5vdyBoYXMgYW4gb3B0aW9uIHRvIHN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2UuCisKKy4uCisKKy4uIGJwbzogNTg0NworLi4gZGF0ZTogNzI3NQorLi4gbm9uY2U6IFh3RXBNQQorLi4gc2VjdGlvbjogSURMRQorCitSZW1vdmUgLW4gc3dpdGNoIG9uICJFZGl0IHdpdGggSURMRSIgbWVudSBpdGVtLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcyNzQKKy4uIG5vbmNlOiAwZlFNR0wKKy4uIHNlY3Rpb246IElETEUKKworaWRsZS5weSBtb2RpZmllZCBhbmQgc2ltcGxpZmllZCB0byBiZXR0ZXIgc3VwcG9ydCBkZXZlbG9waW5nIGV4cGVyaW1lbnRhbAordmVyc2lvbnMgb2YgSURMRSB3aGljaCBhcmUgbm90IGluc3RhbGxlZCBpbiB0aGUgc3RhbmRhcmQgbG9jYXRpb24uCisKKy4uCisKKy4uIGJwbzogNTU1OQorLi4gZGF0ZTogNzI3MworLi4gbm9uY2U6IEdLaGd0MQorLi4gc2VjdGlvbjogSURMRQorCitPdXRwdXRXaW5kb3cvUHlTaGVsbCByaWdodCBjbGljayBtZW51ICJHbyB0byBmaWxlL2xpbmUiIHdhc24ndCB3b3JraW5nIHdpdGgKK2ZpbGUgcGF0aHMgY29udGFpbmluZyBzcGFjZXMuCisKKy4uCisKKy4uIGJwbzogNTc4MworLi4gZGF0ZTogNzI3MgorLi4gbm9uY2U6IG9aRnBRRQorLi4gc2VjdGlvbjogSURMRQorCitXaW5kb3dzOiBWZXJzaW9uIHN0cmluZyBmb3IgdGhlIC5jaG0gaGVscCBmaWxlIGNoYW5nZWQsIGZpbGUgbm90IGJlaW5nCithY2Nlc3NlZC4gIFBhdGNoIGJ5IEd1aWxoZXJtZSBQb2xvLworCisuLgorCisuLiBicG86IDE1MjkxNDIKKy4uIGRhdGU6IDcyNzEKKy4uIG5vbmNlOiBfN2t2UDUKKy4uIHNlY3Rpb246IElETEUKKworQWxsb3cgbXVsdGlwbGUgSURMRSBHVUkvc3VicHJvY2VzcyBwYWlycyB0byBleGlzdCBzaW11bHRhbmVvdXNseS4gVGhhbmtzIHRvCitEYXZpZCBTY2hlcmVyIGZvciBzdWdnZXN0aW5nIHRoZSB1c2Ugb2YgYW4gZXBoZW1lcmFsIHBvcnQgZm9yIHRoZSBHVUkuCitQYXRjaCBieSBXZWVibGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzI3MAorLi4gbm9uY2U6IEQ0RFJlSgorLi4gc2VjdGlvbjogSURMRQorCitSZW1vdmUgcG9ydCBzcGVjIGZyb20gcnVuLnB5IGFuZCBmaXggYnVnIHdoZXJlIHN1YnByb2Nlc3MgZmFpbHMgdG8gZXh0cmFjdAorcG9ydCBmcm9tIGNvbW1hbmQgbGluZSB3aGVuIHdhcm5pbmdzIGFyZSBwcmVzZW50LgorCisuLgorCisuLiBicG86IDUxMjkKKy4uIGRhdGU6IDcyNjkKKy4uIG5vbmNlOiBlVkFKcW4KKy4uIHNlY3Rpb246IElETEUKKworVGsgOC41IFRleHQgd2lkZ2V0IHJlcXVpcmVzICd3b3JkcHJvY2Vzc29yJyB0YWJzdHlsZSBhdHRyIHRvIGhhbmRsZSBtaXhlZAorc3BhY2UvdGFiIHByb3Blcmx5LiBQYXRjaCBieSBHdWlsaGVybWUgUG9sby4KKworLi4KKworLi4gYnBvOiAzNTQ5CisuLiBkYXRlOiA3MjY4CisuLiBub25jZTogblo3SGU2CisuLiBzZWN0aW9uOiBJRExFCisKK09uIE1hY09TIHRoZSBwcmVmZXJlbmNlcyBtZW51IHdhcyBub3QgcHJlc2VudAorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcyNjcKKy4uIG5vbmNlOiBmeUFOal8KKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK1R0ayBkZW1vcyBhZGRlZCBpbiBEZW1vL3RraW50ZXIvdHRrLy4KKworLi4KKworLi4gYnBvOiA0Njc3CisuLiBkYXRlOiA3MjY2CisuLiBub25jZTogNEJDZWVjCisuLiBzZWN0aW9uOiBUb29scy9EZW1vcworCitBZGQgdHdvIGxpc3QgY29tcHJlaGVuc2lvbiB0ZXN0cyB0byBweWJlbmNoLgorCisuLgorCisuLiBicG86IDY2MDMKKy4uIGRhdGU6IDcyNjUKKy4uIG5vbmNlOiBJLUV2YjcKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0NoYW5nZSBSRUFEX1RJTUVTVEFNUCBtYWNybyBpbiBjZXZhbC5jIHNvIHRoYXQgaXQgY29tcGlsZXMgY29ycmVjdGx5IHVuZGVyCitnY2Mgb24geDg2LTY0LiAgVGhpcyBmaXhlcyBhIHJlcG9ydGVkIHByb2JsZW0gd2l0aCB0aGUgLS13aXRoLXRzYyBidWlsZCBvbgoreDg2LTY0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcyNjQKKy4uIG5vbmNlOiBmT3VOT0YKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0FkZCAyIG5ldyBvcHRpb25zIHRvIGBgLS13aXRoLXVuaXZlcnNhbC1hcmNoc2BgIG9uIE1hY09TWDogYGBpbnRlbGBgIGJ1aWxkcworYSBkaXN0cmlidXRpb24gd2l0aCBgYGkzODZgYCBhbmQgYGB4ODZfNjRgYCBhcmNoaXRlY3R1cmVzLCB3aGlsZSBgYDMtd2F5YGAKK2J1aWxkcyBhIGRpc3RyaWJ1dGlvbiB3aXRoIHRoZSBgYHBwY2BgLCBgYGkzODZgYCBhbmQgYGB4ODZfNjRgYAorYXJjaGl0ZWN0dXJlcy4KKworLi4KKworLi4gYnBvOiA2ODAyCisuLiBkYXRlOiA3MjYzCisuLiBub25jZTogSTBQR2pXCisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggYnVpbGQgaXNzdWVzIG9uIE1hY09TWCAxMC42LgorCisuLgorCisuLiBicG86IDYyNDQKKy4uIGRhdGU6IDcyNjIKKy4uIG5vbmNlOiBoUUdMbHIKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0FsbG93IGRldGVjdF90a2ludGVyIHRvIGxvb2sgZm9yIFRjbC9UayA4LjYuCisKKy4uCisKKy4uIGJwbzogNTM5MAorLi4gZGF0ZTogNzI2MQorLi4gbm9uY2U6IFpua0prQgorLi4gc2VjdGlvbjogQnVpbGQKKworQWRkIHVuaW5zdGFsbCBpY29uIGluZGVwZW5kZW50IG9mIHdoZXRoZXIgZmlsZSBleHRlbnNpb25zIGFyZSBpbnN0YWxsZWQuCisKKy4uCisKKy4uIGJwbzogNTgwOQorLi4gZGF0ZTogNzI2MAorLi4gbm9uY2U6IFdNSzkwaAorLi4gc2VjdGlvbjogQnVpbGQKKworU3BlY2lmeWluZyBib3RoIC0tZW5hYmxlLWZyYW1ld29yayBhbmQgLS1lbmFibGUtc2hhcmVkIGlzIGFuIGVycm9yLgorQ29uZmlndXJlIG5vdyBleHBsaWNpdGx5IHRlbGxzIHlvdSBhYm91dCB0aGlzLgorCisuLgorCisuLiBicG86IDM1ODUKKy4uIGRhdGU6IDcyNTkKKy4uIG5vbmNlOiBlQjRSRlUKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0FkZCBwa2ctY29uZmlnIHN1cHBvcnQuICBJdCBjcmVhdGVzIGEgcHl0aG9uLTIuNy5wYyBmaWxlIGFuZCBhIHB5dGhvbi5wYworc3ltbGluayBpbiB0aGUgJChMSUJESVIpL3BrZ2NvbmZpZyBkaXJlY3RvcnkuICBQYXRjaCBieSBDbGludG9uIFJveS4KKworLi4KKworLi4gYnBvOiA2MDk0CisuLiBkYXRlOiA3MjU4CisuLiBub25jZTogc2hKVUFVCisuLiBzZWN0aW9uOiBCdWlsZAorCitCdWlsZCBjb3JyZWN0bHkgd2l0aCBTdWJ2ZXJzaW9uIDEuNy4KKworLi4KKworLi4gYnBvOiA1NzI2CisuLiBkYXRlOiA3MjU3CisuLiBub25jZTogbkhybHNkCisuLiBzZWN0aW9uOiBCdWlsZAorCitNYWtlIE1vZHVsZXMvbGRfc29fYWl4IHJldHVybiB0aGUgYWN0dWFsIGV4aXQgY29kZSBvZiB0aGUgbGlua2VyLCByYXRoZXIKK3RoYW4gYWx3YXlzIGV4aXQgc3VjY2Vzc2Z1bGx5LiAgUGF0Y2ggYnkgRmxvcmlzIEJydXlub29naGUuCisKKy4uCisKKy4uIGJwbzogNDU4NworLi4gZGF0ZTogNzI1NgorLi4gbm9uY2U6IG5uTndlQgorLi4gc2VjdGlvbjogQnVpbGQKKworQWRkIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWRibWxpYm9yZGVyPWRiMTpkYjI6Li4uIHRvIHNwZWNpZnkgdGhlIG9yZGVyCit0aGF0IGJhY2tlbmRzIGZvciB0aGUgZGJtIGV4dGVuc2lvbiBhcmUgY2hlY2tlZC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MjU1CisuLiBub25jZTogOUtfTlBzCisuLiBzZWN0aW9uOiBCdWlsZAorCitMaW5rIHRoZSBzaGFyZWQgcHl0aG9uIGxpYnJhcnkgd2l0aCAkKE1PRExJQlMpLgorCisuLgorCisuLiBicG86IDUxMzQKKy4uIGRhdGU6IDcyNTQKKy4uIG5vbmNlOiBKbU5MV08KKy4uIHNlY3Rpb246IEJ1aWxkCisKK1NpbGVuY2UgY29tcGlsZXIgd2FybmluZ3Mgd2hlbiBjb21waWxpbmcgc3FsaXRlIHdpdGggVkMrKy4KKworLi4KKworLi4gYnBvOiA0NDk0CisuLiBkYXRlOiA3MjUzCisuLiBub25jZTogSUdham8tCisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggYnVpbGQgd2l0aCBQeV9OT19FTkFCTEVfU0hBUkVEIG9uIFdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogNDg5NQorLi4gZGF0ZTogNzI1MgorLi4gbm9uY2U6IFMtM3l0bQorLi4gc2VjdGlvbjogQnVpbGQKKworVXNlIF9zdHJkdXAgb24gV2luZG93cyBDRS4KKworLi4KKworLi4gYnBvOiA0NDcyCisuLiBkYXRlOiA3MjUxCisuLiBub25jZTogVWJ2YlpECisuLiBzZWN0aW9uOiBCdWlsZAorCitgYGNvbmZpZ3VyZSAtLWVuYWJsZS1zaGFyZWRgYCBub3cgd29ya3Mgb24gT1NYLgorCisuLgorCisuLiBicG86IDQ3MjgKKy4uIGRhdGU6IDcyNTAKKy4uIG5vbmNlOiBGUGU3V2kKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1dPUkRTX0JJR0VESUFOIGlzIG5vdyBjb3JyZWN0IGluIFVuaXZlcnNhbCBidWlsZHMuIChTZWUgYWxzbzogYnBvLTQwNjApCisKKy4uCisKKy4uIGJwbzogNDM4OQorLi4gZGF0ZTogNzI0OQorLi4gbm9uY2U6IFVyUjNySAorLi4gc2VjdGlvbjogQnVpbGQKKworQWRkIGljb24gdG8gdGhlIHVuaW5zdGFsbCBlbnRyeSBpbiAiYWRkLWFuZC1yZW1vdmUtcHJvZ3JhbXMiLgorCisuLgorCisuLiBicG86IDQyODkKKy4uIGRhdGU6IDcyNDgKKy4uIG5vbmNlOiB4RG8zTFcKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1JlbW92ZSBDYW5jZWwgYnV0dG9uIGZyb20gQWR2YW5jZWREbGcuCisKKy4uCisKKy4uIGJwbzogMTY1NjY3NQorLi4gZGF0ZTogNzI0NworLi4gbm9uY2U6IHloclk1TQorLi4gc2VjdGlvbjogQnVpbGQKKworUmVnaXN0ZXIgYSBkcm9wIGhhbmRsZXIgZm9yIC5weSogZmlsZXMgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiA0MTIwCisuLiBkYXRlOiA3MjQ2CisuLiBub25jZTogQUpKX1lnCisuLiBzZWN0aW9uOiBCdWlsZAorCitFeGNsdWRlIG1hbmlmZXN0IGZyb20gZXh0ZW5zaW9uIG1vZHVsZXMgaW4gVlMyMDA4LgorCisuLgorCisuLiBicG86IDQwOTEKKy4uIGRhdGU6IDcyNDUKKy4uIG5vbmNlOiBqM0U0aHEKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0luc3RhbGwgcHl0aG9ueHkuZGxsIGluIHN5c3RlbTMyIGFnYWluLgorCisuLgorCisuLiBicG86IDQwMTgKKy4uIGRhdGU6IDcyNDQKKy4uIG5vbmNlOiBVVnRCTVEKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0Rpc2FibGUgImZvciBtZSIgaW5zdGFsbGF0aW9ucyBvbiBWaXN0YS4KKworLi4KKworLi4gYnBvOiAzNzU4CisuLiBkYXRlOiA3MjQzCisuLiBub25jZTogY0Jjb0k4CisuLiBzZWN0aW9uOiBCdWlsZAorCitBZGQgYGBwYXRjaGNoZWNrYGAgYnVpbGQgdGFyZ2V0IHRvIGBgLlBIT05ZYGAuCisKKy4uCisKKy4uIGJwbzogNDIwNAorLi4gZGF0ZTogNzI0MgorLi4gbm9uY2U6IE5Rc3dEYworLi4gc2VjdGlvbjogQnVpbGQKKworRml4ZWQgbW9kdWxlIGJ1aWxkIGVycm9ycyBvbiBGcmVlQlNEIDQuCisKKy4uCisKKy4uIGJwbzogNjU1NgorLi4gZGF0ZTogNzI0MQorLi4gbm9uY2U6IFFuNmZGVgorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitGaXhlZCB0aGUgRGlzdHV0aWxzIGNvbmZpZ3VyYXRpb24gZmlsZXMgbG9jYXRpb24gZXhwbGFuYXRpb24gZm9yIFdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogNjgwMQorLi4gZGF0ZTogNzI0MAorLi4gbm9uY2U6IHlNSXJvdworLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitzeW1tZXRyaWNfZGlmZmVyZW5jZV91cGRhdGUgYWxzbyBhY2NlcHRzIGBgfGBgLiAgVGhhbmtzIHRvIENhcmwgQ2hlbmV0LgorCisuLgorCisuLiBicG86IDc1MjgKKy4uIGRhdGU6IDcyMzkKKy4uIG5vbmNlOiBDeGdFY0IKKy4uIHNlY3Rpb246IEMgQVBJCisKK0FkZCBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cgKGJhY2twb3J0ZWQgZnJvbSBweTNrKS4KKworLi4KKworLi4gYnBvOiA3MjI4CisuLiBkYXRlOiA3MjM4CisuLiBub25jZTogS2ozSVhYCisuLiBzZWN0aW9uOiBDIEFQSQorCitBZGQgJyVsbGQnIGFuZCAnJWxsdScgc3VwcG9ydCB0byBQeVN0cmluZ19Gcm9tRm9ybWF0KFYpIGFuZCBQeUVycl9Gb3JtYXQsIG9uCittYWNoaW5lcyB3aXRoIEhBVkVfTE9OR19MT05HIGRlZmluZWQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzIzNworLi4gbm9uY2U6IFhxektZQworLi4gc2VjdGlvbjogQyBBUEkKKworQWRkIG5ldyBDLUFQSSBmdW5jdGlvbiBQeU9TX3N0cmluZ190b19kb3VibGUsIGFuZCBkZXByZWNhdGVkIFB5T1NfYXNjaWlfYXRvZgorYW5kIFB5T1NfYXNjaWlfc3RydG9kLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcyMzYKKy4uIG5vbmNlOiBFelRBY2wKKy4uIHNlY3Rpb246IEMgQVBJCisKK1JlbW92ZWQgX1B5T1NfZG91YmxlX3RvX3N0cmluZy4gVXNlIFB5T1NfZG91YmxlX3RvX3N0cmluZyBpbnN0ZWFkLiAgVGhpcyBpcworaW4gcHJlcGFyYXRpb24gZm9yIChidXQgbm90IHN0cmljdGx5IHJlbGF0ZWQgdG8pIGlzc3VlICM3MTE3LCBzaG9ydCBmbG9hdAorcmVwci4KKworLi4KKworLi4gYnBvOiA2NjI0CisuLiBkYXRlOiA3MjM1CisuLiBub25jZTogcVBYTzZGCisuLiBzZWN0aW9uOiBDIEFQSQorCitQeUFyZ19QYXJzZVR1cGxlIHdpdGggInMiIGZvcm1hdCB3aGVuIHBhcnNpbmcgYXJndW1lbnQgd2l0aCBOVUxMOiBCb2d1cworVHlwZUVycm9yIGRldGFpbCBzdHJpbmcuCisKKy4uCisKKy4uIGJwbzogNTk1NAorLi4gZGF0ZTogNzIzNAorLi4gbm9uY2U6IGJsMi1QMgorLi4gc2VjdGlvbjogQyBBUEkKKworQWRkIGEgUHlGcmFtZV9HZXRMaW5lTnVtYmVyKCkgZnVuY3Rpb24gdG8gcmVwbGFjZSBtb3N0IHVzZXMgb2YKK1B5Q29kZV9BZGRyMkxpbmUoKS4KKworLi4KKworLi4gYnBvOiA1OTU5CisuLiBkYXRlOiA3MjMzCisuLiBub25jZTogd21XQjV0CisuLiBzZWN0aW9uOiBDIEFQSQorCitBZGQgYSBQeUNvZGVfTmV3RW1wdHkoKSBmdW5jdGlvbiB0byBjcmVhdGUgYSBuZXcgZW1wdHkgY29kZSBvYmplY3QgYXQgYQorc3BlY2lmaWVkIGZpbGUsIGZ1bmN0aW9uLCBhbmQgbGluZSBudW1iZXIuCisKKy4uCisKKy4uIGJwbzogMTQxOTY1MgorLi4gZGF0ZTogNzIzMgorLi4gbm9uY2U6IFE2QkVSWAorLi4gc2VjdGlvbjogQyBBUEkKKworQ2hhbmdlIHRoZSBmaXJzdCBhcmd1bWVudCB0byBQeUltcG9ydF9BcHBlbmRJbml0dGFiKCkgdG8gYGBjb25zdCBjaGFyICpgYCBhcwordGhlIHN0cmluZyBpcyBzdG9yZWQgYmV5b25kIHRoZSBjYWxsLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDcyMzEKKy4uIG5vbmNlOiBodmE5MFEKKy4uIHNlY3Rpb246IEMgQVBJCisKK1NvbWUgUHlCeXRlc18qIGFsaWFzZXMgaGF2ZSBiZWVuIHJlbW92ZWQgYmVjYXVzZSB0aGV5IGRvbid0IGV4aXN0IGluIDMueC4KKworLi4KKworLi4gYnBvOiA1MTc1CisuLiBkYXRlOiA3MjMwCisuLiBub25jZTogcjFhOE1zCisuLiBzZWN0aW9uOiBDIEFQSQorCitQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nIG5vdyByYWlzZXMgT3ZlcmZsb3dFcnJvciBmb3IgbmVnYXRpdmUgYXJndW1lbnRzLgorUHJldmlvdXNseSwgaXQgcmFpc2VkIFR5cGVFcnJvci4KKworLi4KKworLi4gYnBvOiA0NzIwCisuLiBkYXRlOiA3MjI5CisuLiBub25jZTogTWI2VzAxCisuLiBzZWN0aW9uOiBDIEFQSQorCitUaGUgZm9ybWF0IGZvciBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMgY2FuIGJlZ2luIHdpdGggJ3wnLgorCisuLgorCisuLiBicG86IDM2MzIKKy4uIGRhdGU6IDcyMjgKKy4uIG5vbmNlOiB1cFBDODYKKy4uIHNlY3Rpb246IEMgQVBJCisKK0Zyb20gdGhlIGdkYiBkZWJ1Z2dlciwgdGhlICdweW8nIG1hY3JvIGNhbiBub3cgYmUgY2FsbGVkIHdoZW4gdGhlIEdJTCBpcworcmVsZWFzZWQsIG9yIG93bmVkIGJ5IGFub3RoZXIgdGhyZWFkLgorCisuLgorCisuLiBicG86IDQxMjIKKy4uIGRhdGU6IDcyMjcKKy4uIG5vbmNlOiBmaE1xN0EKKy4uIHNlY3Rpb246IEMgQVBJCisKK09uIFdpbmRvd3MsIGZpeCBhIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNpbmcgdGhlIFB5X1VOSUNPREVfSVNTUEFDRSBtYWNybworaW4gYW4gZXh0ZW5zaW9uIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiA0MjkzCisuLiBkYXRlOiA3MjI2CisuLiBub25jZTogUWRhckh4CisuLiBzZWN0aW9uOiBDIEFQSQorCitQeV9BZGRQZW5kaW5nQ2FsbCgpIGlzIG5vdyB0aHJlYWQgc2FmZSBhbmQgY2FuIGJlIHVzZWQgZm9yIGFzeW5jaHJvbm91cworbm90aWZpY2F0aW9ucyB0byBweXRob24gZnJvbSBhbnkgdGhyZWFkLiAgRG9jdW1lbnRhdGlvbiBhZGRlZC4KKworLi4KKworLi4gYnBvOiA2NTA4CisuLiBkYXRlOiA3MjI1CisuLiBub25jZTogUjNFdlhZCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBwb3NpeC57Z2V0cmVzdWlkLGdldHJlc2dpZCxzZXRyZXN1aWQsc2V0cmVzZ2lkfS4KKworLi4KKworLi4gYnBvOiA3MDc4CisuLiBkYXRlOiA3MjI0CisuLiBub25jZTogOTBaNjA0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NldCBzdHJ1Y3QuX19kb2NfXyBmcm9tIF9zdHJ1Y3QuX19kb2NfXy4KKworLi4KKworLi4gYnBvOiAzMzY2CisuLiBkYXRlOiA3MjIzCisuLiBub25jZTogVTFEZkFKCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBlcmYsIGVyZmMsIGV4cG0xLCBnYW1tYSwgbGdhbW1hIGZ1bmN0aW9ucyB0byBtYXRoIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiA2ODIzCisuLiBkYXRlOiA3MjIyCisuLiBub25jZTogbTRjd3FqCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FsbG93IHRpbWUuc3RyZnRpbWUoKSB0byBhY2NlcHQgYSB0dXBsZSB3aXRoIGEgaXNkc3QgZmllbGQgb3V0c2lkZSBvZiB0aGUKK3JhbmdlIG9mIFstMSwgMV0gYnkgbm9ybWFsaXppbmcgdGhlIHZhbHVlIHRvIHdpdGhpbiB0aGF0IHJhbmdlLgorCisuLgorCisuLiBicG86IDY4NzcKKy4uIGRhdGU6IDcyMjEKKy4uIG5vbmNlOiBDTVh0N3AKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSBpdCBwb3NzaWJsZSB0byBsaW5rIHRoZSByZWFkbGluZSBleHRlbnNpb24gdG8gbGliZWRpdCBvbiBPU1guCisKKy4uCisKKy4uIGJwbzogNjk0NAorLi4gZGF0ZTogNzIyMAorLi4gbm9uY2U6IEE5YU1sNworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBTeXN0ZW1FcnJvciB3aGVuIHNvY2tldC5nZXRuYW1laW5mbygpIHdhcyBjYWxsZWQgd2l0aCBzb21ldGhpbmcgb3RoZXIKK3RoYW4gYSB0dXBsZSBhcyBmaXJzdCBhcmd1bWVudC4KKworLi4KKworLi4gYnBvOiA2ODY1CisuLiBkYXRlOiA3MjE5CisuLiBub25jZTogOEVLR3Q1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCByZWZlcmVuY2UgY291bnRpbmcgaXNzdWUgaW4gdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwd2QgbW9kdWxlLgorCisuLgorCisuLiBicG86IDY4NDgKKy4uIGRhdGU6IDcyMTgKKy4uIG5vbmNlOiB5b1dLMUEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGN1cnNlcyBtb2R1bGUgYnVpbGQgZmFpbHVyZSBvbiBPUyBYIDEwLjYuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzIxNworLi4gbm9uY2U6IGsyaVhFTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSBzZWdmYXVsdCBpbiBleHBhdCB3aGVuIGdpdmVuIGEgc3BlY2lhbGx5IGNyYWZ0ZWQgaW5wdXQgbGVhZCB0byB0aGUKK3Rva2VuaXplciBub3Qgc3RvcHBpbmcuIENWRS0yMDA5LTM3MjAuCisKKy4uCisKKy4uIGJwbzogNjU2MQorLi4gZGF0ZTogNzIxNgorLi4gbm9uY2U6IHRKd0dyLQorLi4gc2VjdGlvbjogTGlicmFyeQorCisnXGQnIGluIGEgcmVnZXggbm93IG1hdGNoZXMgb25seSBjaGFyYWN0ZXJzIHdpdGggVW5pY29kZSBjYXRlZ29yeSAnTmQnCisoTnVtYmVyLCBEZWNpbWFsIERpZ2l0KS4gIFByZXZpb3VzbHkgaXQgYWxzbyBtYXRjaGVkIGNoYXJhY3RlcnMgd2l0aAorY2F0ZWdvcnkgJ05vJy4KKworLi4KKworLi4gYnBvOiAxNTIzCisuLiBkYXRlOiA3MjE1CisuLiBub25jZTogR1lSejQ5CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbW92ZSBkZXByZWNhdGVkIG92ZXJmbG93IHdyYXBwaW5nIGZvciBzdHJ1Y3QucGFjayB3aXRoIGFuIGludGVnZXIgZm9ybWF0Citjb2RlICgnYkJoSGlJbExxUScpLiAgUGFja2luZyBhbiBvdXQtb2YtcmFuZ2UgaW50ZWdlciBub3cgY29uc2lzdGVudGx5CityYWlzZXMgc3RydWN0LmVycm9yLgorCisuLgorCisuLiBicG86IDE1MzA1NTkKKy4uIGRhdGU6IDcyMTQKKy4uIG5vbmNlOiAwVGpydEwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHZhcmlvdXMgc3RydWN0LnBhY2sgaW5jb25zaXN0ZW5jaWVzIGZvciB0aGUgaW50ZWdlciBmb3JtYXRzCisoJ2JCaEhpSWxMcVEnKS4gIEluIHRoZSBmb2xsb3dpbmcsICcqJyByZXByZXNlbnRzIGFueSBvZiAnPScsICc8JywgJz4nLgorCistIFBhY2tpbmcgYSBmbG9hdCBub3cgYWx3YXlzIGdpdmVzIGEgRGVwcmVjYXRpb24gV2FybmluZy4gIFByZXZpb3VzbHkgaXQKK29ubHkgd2FybmVkIGZvciAnSScsICdMJywgJypCJywgJypIJywgJypJJywgJypMJy4KKworLSBJZiB4IGlzIG5vdCBhbiBpbnQsIGxvbmcgb3IgZmxvYXQsIHRoZW4gcGFja2luZyB4IHdpbGwgYWx3YXlzIHJlc3VsdCBpbgorc3RydWN0LmVycm9yLiAgUHJldmlvdXNseSBhbiB4IHdpdGggYW4gX19pbnRfXyBtZXRob2QgY291bGQgYmUgcGFja2VkIGJ5CisnYicsICdCJywgJ2gnLCAnSCcsICdpJywgJ2wnLCAnKmInLCAnKmgnICwnKmknLCAnKmwnLCBhbmQgYW4geCB3aXRoIGEKK19fbG9uZ19fIG1ldGhvZCBjb3VsZCBiZSBwYWNrZWQgYnkgJ3EnLCAnUScsICcqcScsICcqUSc7IGZvciB4IHdpdGgKK25laXRoZXIgX19pbnRfXyBub3IgX19sb25nX18sIFR5cGVFcnJvciB1c2VkIHRvIGJlIHJhaXNlZCAod2l0aCBhCitjb25mdXNpbmcgZXJyb3IgbWVzc2FnZSkgZm9yICdJJywgJ0wnLCAnKkInLCAnKkgnLCAnKkknLCAnKkwnLCBhbmQKK3N0cnVjdC5lcnJvciBpbiBvdGhlciBjYXNlcy4KKworTm90ZTogYXMgb2YgUHl0aG9uIDIuNyBiZXRhIDEsIHRoZSBhYm92ZSBpcyBvdXQgb2YgZGF0ZS4gIEluIDIuNyBiZXRhIDEsIGFueQorYXJndW1lbnQgd2l0aCBhbiBfX2ludF9fIG1ldGhvZCBjYW4gYmUgcGFja2VkLCBidXQgdXNlIG9mIHRoaXMgZmVhdHVyZQordHJpZ2dlcnMgYSBEZXByZWNhdGlvbldhcm5pbmcuIChTZWUgYWxzbzogYnBvLTE3NDExMzApCisKKy4uCisKKy4uIGJwbzogNDg3MworLi4gZGF0ZTogNzIxMworLi4gbm9uY2U6IFg2eHA1WgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcmVzb3VyY2UgbGVha3MgaW4gZXJyb3IgY2FzZXMgb2YgcHdkIGFuZCBncnAuCisKKy4uCisKKy4uIGJwbzogNDc1MQorLi4gZGF0ZTogNzIxMgorLi4gbm9uY2U6IDZzUHFjdQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGb3IgaGFzaGxpYiBhbGdvcml0aG1zIHByb3ZpZGVkIGJ5IE9wZW5TU0wsIHRoZSBQeXRob24gR0lMIGlzIG5vdyByZWxlYXNlZAorZHVyaW5nIGNvbXB1dGF0aW9uIG9uIGRhdGEgbGVuZ3RocyA+PSAyMDQ4IGJ5dGVzLgorCisuLgorCisuLiBicG86IDM3NDUKKy4uIGRhdGU6IDcyMTEKKy4uIG5vbmNlOiBVV3ZTRFkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGhhc2hsaWIgdG8gYWx3YXlzIHJlamVjdCB1bmljb2RlIGFuZCBub24gYnVmZmVyLWFwaSBzdXBwb3J0aW5nIG9iamVjdHMKK2FzIGlucHV0IG5vIG1hdHRlciBob3cgaXQgd2FzIGNvbXBpbGVkIChidWlsdCBpbiBpbXBsZW1lbnRhdGlvbnMgb3IgZXh0ZXJuYWwKK29wZW5zc2wgbGlicmFyeSkuICBOT1RFOiBVbmRvbmUgaW4gMi43YTIuCisKKy4uCisKKy4uIGJwbzogNDM5NworLi4gZGF0ZTogNzIxMAorLi4gbm9uY2U6IHYzU0RTSQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggb2NjYXNpb25hbCB0ZXN0X3NvY2tldCBmYWlsdXJlIG9uIE9TIFguCisKKy4uCisKKy4uIGJwbzogNDI3OQorLi4gZGF0ZTogNzIwOQorLi4gbm9uY2U6IDRSWTZGWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYnVpbGQgb2YgcGFyc2VybW9kdWxlIHVuZGVyIEN5Z3dpbi4KKworLi4KKworLi4gYnBvOiA0MDUxCisuLiBkYXRlOiA3MjA4CisuLiBub25jZTogQ1d5NVNvCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ByZXZlbnQgY29uZmxpY3Qgb2YgVU5JQ09ERSBtYWNyb3MgaW4gY1BpY2tsZS4KKworLi4KKworLi4gYnBvOiA0MjI4CisuLiBkYXRlOiA3MjA3CisuLiBub25jZTogNkFQM25RCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1BhY2sgbmVnYXRpdmUgdmFsdWVzIHRoZSBzYW1lIHdheSBhcyAyLjQgaW4gc3RydWN0J3MgTCBmb3JtYXQuCisKKy4uCisKKy4uIGJwbzogMTA0MDAyNgorLi4gZGF0ZTogNzIwNgorLi4gbm9uY2U6IGZfbE5sRAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggb3MudGltZXMgcmVzdWx0IG9uIHN5c3RlbXMgd2hlcmUgSFogaXMgaW5jb3JyZWN0LgorCisuLgorCisuLiBicG86IDMxNjcKKy4uIGRhdGU6IDcyMDUKKy4uIG5vbmNlOiBXcTNuTGwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRlc3RfbWF0aCBmYWlsdXJlcyBmb3IgbG9nLCBsb2cxMCBvbiBTb2xhcmlzLCBPcGVuQlNELiAoU2VlIGFsc286CiticG8tMzY4MikKKworLi4KKworLi4gYnBvOiA0MzY1CisuLiBkYXRlOiA3MjA0CisuLiBub25jZTogMXZfMzJOCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBjcnRhc3NlbS5oIGNvbnN0YW50cyB0byB0aGUgbXN2Y3J0IG1vZHVsZS4KKworLi4KKworLi4gYnBvOiA0Mzk2CisuLiBkYXRlOiA3MjAzCisuLiBub25jZTogM3ZtWFQ0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBwYXJzZXIgbW9kdWxlIG5vdyBjb3JyZWN0bHkgdmFsaWRhdGVzIHRoZSB3aXRoIHN0YXRlbWVudC4KKworLi4KKworLi4gYnBvOiA1MjI4CisuLiBkYXRlOiA3MjAyCisuLiBub25jZTogbERwenJQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2UgZnVuY3Rvb2xzLnBhcnRpYWwgb2JqZWN0cyBjYW4gbm93IGJlIHBpY2tsZWQuCisKKy4uCisKKy4uIGJwbzogNzQzMQorLi4gZGF0ZTogNzIwMQorLi4gbm9uY2U6IGdRdldGegorLi4gc2VjdGlvbjogVGVzdHMKKworVXNlIFRFU1RGTiBpbiB0ZXN0X2xpbmVjYWNoZSBpbnN0ZWFkIG9mIHRyeWluZyB0byBjcmVhdGUgYSBmaWxlIGluIHRoZQorTGliL3Rlc3QgZGlyZWN0b3J5LCB3aGljaCBtaWdodCBiZSByZWFkLW9ubHkgZm9yIHRoZSB1c2VyIHJ1bm5pbmcgdGhlIHRlc3RzLgorCisuLgorCisuLiBicG86IDczMjQKKy4uIGRhdGU6IDcyMDAKKy4uIG5vbmNlOiBxeDd3WVEKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZCBhIHNhbml0eSBjaGVjayB0byByZWdydGVzdCBhcmd1bWVudCBwYXJzaW5nIHRvIGNhdGNoIHRoZSBjYXNlIG9mIGFuCitvcHRpb24gd2l0aCBubyBoYW5kbGVyLgorCisuLgorCisuLiBicG86IDczMTIKKy4uIGRhdGU6IDcxOTkKKy4uIG5vbmNlOiBvd0prM1IKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FkZCBhIC1GIGZsYWcgdG8gcnVuIHRoZSBzZWxlY3RlZCB0ZXN0cyBpbiBhIGxvb3AgdW50aWwgYSB0ZXN0IGZhaWxzLiAgQ2FuCitiZSBjb21iaW5lZCB3aXRoIC1qLgorCisuLgorCisuLiBicG86IDcyOTUKKy4uIGRhdGU6IDcxOTgKKy4uIG5vbmNlOiB1a1poSGkKKy4uIHNlY3Rpb246IFRlc3RzCisKK0RvIG5vdCB1c2UgYSBoYXJkY29kZWQgZmlsZSBuYW1lIGluIHRlc3RfdGFyZmlsZS4KKworLi4KKworLi4gYnBvOiA3MjcwCisuLiBkYXRlOiA3MTk3CisuLiBub25jZTogYW1fYjFTCisuLiBzZWN0aW9uOiBUZXN0cworCitBZGQgc29tZSBkZWRpY2F0ZWQgdW5pdCB0ZXN0cyBmb3IgbXVsdGktdGhyZWFkIHN5bmNocm9uaXphdGlvbiBwcmltaXRpdmVzCitzdWNoIGFzIExvY2ssIFJMb2NrLCBDb25kaXRpb24sIEV2ZW50IGFuZCBTZW1hcGhvcmUuCisKKy4uCisKKy4uIGJwbzogNzIyMgorLi4gZGF0ZTogNzE5NgorLi4gbm9uY2U6IGlLSnNwTgorLi4gc2VjdGlvbjogVGVzdHMKKworTWFrZSB0aHJlYWQgInJlYXBpbmciIG1vcmUgcmVsaWFibGUgc28gdGhhdCByZWZlcmVuY2UgbGVhay1jaGFzaW5nIHRlc3QgcnVucworZ2l2ZSBzZW5zaWJsZSByZXN1bHRzLiAgVGhlIHByZXZpb3VzIG1ldGhvZCBvZiByZWFwaW5nIHRocmVhZHMgY291bGQgcmV0dXJuCitzdWNjZXNzZnVsbHkgd2hpbGUgc29tZSBUaHJlYWQgb2JqZWN0cyB3ZXJlIHN0aWxsIHJlZmVyZW5jZWQuICBUaGlzIGFsc28KK2ludHJvZHVjZXMgYSBuZXcgcHJpdmF0ZSBmdW5jdGlvbjogYGB0aHJlYWQuX2NvdW50KClgYC4KKworLi4KKworLi4gYnBvOiA3MTUxCisuLiBkYXRlOiA3MTk1CisuLiBub25jZTogVTA3aHBSCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXhlZCByZWdydGVzdCAtaiBzbyB0aGF0IG91dHB1dCB0byBzdGRlcnIgZnJvbSBhIHRlc3Qgbm8gbG9uZ2VyIHJ1bnMgdGhlCityaXNrIG9mIGNhdXNpbmcgdGhlIHdvcmtlciB0aHJlYWQgdG8gZmFpbC4KKworLi4KKworLi4gYnBvOiA3MDU1CisuLiBkYXRlOiA3MTk0CisuLiBub25jZTogM29rSjVsCisuLiBzZWN0aW9uOiBUZXN0cworCit0ZXN0X19fYWxsX18gbm93IGdyZWVkaWx5IGRldGVjdHMgYWxsIG1vZHVsZXMgd2hpY2ggaGF2ZSBhbiBfX2FsbF9fCithdHRyaWJ1dGUsIHJhdGhlciB0aGFuIHVzaW5nIGEgaGFyZGNvZGVkIGFuZCBpbmNvbXBsZXRlIGxpc3QuCisKKy4uCisKKy4uIGJwbzogNzA1OAorLi4gZGF0ZTogNzE5MworLi4gbm9uY2U6IDNEa1VYaQorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkZWQgc2F2ZS9yZXN0b3JlIGZvciB0aGluZ3MgbGlrZSBzeXMuYXJndiBhbmQgY3dkIHRvIHJ1bnRlc3RfaW5uZXIgaW4KK3JlZ3J0ZXN0LCB3aXRoIHdhcm5pbmdzIGlmIHRoZSBjYWxsZWQgdGVzdCBtb2RpZmllcyB0aGVtLCBhbmQgYSBuZXcgc2VjdGlvbgoraW4gdGhlIHN1bW1hcnkgcmVwb3J0IGF0IHRoZSBlbmQuCisKKy4uCisKKy4uIGJwbzogNzA0MgorLi4gZGF0ZTogNzE5MgorLi4gbm9uY2U6IGI4djNGSgorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3Rfc2lnbmFsICh0ZXN0X2l0aW1lcl92aXJ0dWFsKSBmYWlsdXJlIG9uIE9TIFggMTAuNi4KKworLi4KKworLi4gYnBvOiA2ODA2CisuLiBkYXRlOiA3MTkxCisuLiBub25jZTogaFNfWXM0CisuLiBzZWN0aW9uOiBUZXN0cworCit0ZXN0X3BsYXRmb3JtIGZhaWxlZCB1bmRlciBPUyBYIDEwLjYuMCBiZWNhdXNlIGBgc3dfdmVyYGAgbGVhdmVzIG9mZiB0aGUKK3RyYWlsaW5nIDAgaW4gdGhlIHZlcnNpb24gbnVtYmVyLgorCisuLgorCisuLiBicG86IDU0NTAKKy4uIGRhdGU6IDcxOTAKKy4uIG5vbmNlOiBjMnZkcW4KKy4uIHNlY3Rpb246IFRlc3RzCisKK01vdmVkIHRlc3RzIGludm9sdmluZyBsb2FkaW5nIHRrIGZyb20gTGliL3Rlc3QvdGVzdF90Y2wgdG8KK0xpYi9saWItdGsvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9sb2FkdGsuIFdpdGggdGhpcywgdGhlc2UgdGVzdHMgZGVtb25zdHJhdGUgdGhlCitzYW1lIGJlaGF2aW91ciBhcyB0ZXN0X3R0a2d1aW9ubHkgKGFuZCBub3cgYWxzbyB0ZXN0X3RrKSB3aGljaCBpcyB0byBza2lwCit0aGUgdGVzdHMgaWYgRElTUExBWSBpcyBkZWZpbmVkIGJ1dCBjYW4ndCBiZSB1c2VkLgorCisuLgorCisuLiBicG86IDYxNTIKKy4uIGRhdGU6IDcxODkKKy4uIG5vbmNlOiBFa2VLcEwKKy4uIHNlY3Rpb246IFRlc3RzCisKK05ldyBvcHRpb24gJy1qJy8nLS1tdWx0aXByb2Nlc3MnIGZvciByZWdydGVzdCBhbGxvd3MgcnVubmluZyByZWdyZXNzaW9uCit0ZXN0cyBpbiBwYXJhbGxlbCwgc2hvcnRlbmluZyB0aGUgdG90YWwgcnVudGltZS4KKworLi4KKworLi4gYnBvOiA1MzU0CisuLiBkYXRlOiA3MTg4CisuLiBub25jZTogdkliYkxUCisuLiBzZWN0aW9uOiBUZXN0cworCitOZXcgdGVzdCBzdXBwb3J0IGZ1bmN0aW9uIGltcG9ydF9mcmVzaF9tb2R1bGUoKSBtYWtlcyBpdCBlYXN5IHRvIGltcG9ydCBib3RoCitub3JtYWwgYW5kIG9wdGltaXNlZCB2ZXJzaW9ucyBvZiBtb2R1bGVzLiAgdGVzdF9oZWFwcSBhbmQgdGVzdF93YXJuaW5ncyBoYXZlCitiZWVuIGFkanVzdGVkIHRvIHVzZSBpdCwgdGVzdHMgZm9yIG90aGVyIG1vZHVsZXMgd2l0aCBib3RoIEMgYW5kIFB5dGhvbgoraW1wbGVtZW50YXRpb25zIGluIHRoZSBzdGRsaWIgY2FuIGJlIGFkanVzdGVkIHRvIHVzZSBpdCBvdmVyIHRpbWUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzE4NworLi4gbm9uY2U6IGJUdVF2VgorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3Rfd2FybmluZ3MgdG8gbm8gbG9uZ2VyIHJlc2V0IHRoZSB3YXJuaW5ncyBmaWx0ZXIuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzE4NgorLi4gbm9uY2U6IE1tbG9sdQorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3RfbG9nZ2luZyB0byBubyBsb25nZXIgcmVzZXQgdGhlIHdhcm5pbmdzIGZpbHRlci4KKworLi4KKworLi4gYnBvOiA1NjM1CisuLiBkYXRlOiA3MTg1CisuLiBub25jZTogOFlxMWRuCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggcnVubmluZyB0ZXN0X3N5cyB3aXRoIHRyYWNpbmcgZW5hYmxlZC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3MTg0CisuLiBub25jZTogdDhHbng0CisuLiBzZWN0aW9uOiBUZXN0cworCityZWdydGVzdCBubyBsb25nZXIgdHJlYXRzIEltcG9ydEVycm9yIGFzIGVxdWl2YWxlbnQgdG8gU2tpcFRlc3QuICBJbXBvcnRzCit0aGF0IHNob3VsZCBjYXVzZSBhIHRlc3QgdG8gYmUgc2tpcHBlZCBhcmUgbm93IGRvbmUgdXNpbmcgaW1wb3J0X21vZHVsZSBmcm9tCit0ZXN0IHN1cHBvcnQsIHdoaWNoIGRvZXMgdGhlIGNvbnZlcnNpb24uCisKKy4uCisKKy4uIGJwbzogNTA4MworLi4gZGF0ZTogNzE4MworLi4gbm9uY2U6IGltSG5yUAorLi4gc2VjdGlvbjogVGVzdHMKKworTmV3ICdndWknIHJlc291cmNlIGZvciByZWdydGVzdC4KKworLi4KKworLi4gYnBvOiA1ODM3CisuLiBkYXRlOiA3MTgyCisuLiBub25jZTogczFpZFpCCisuLiBzZWN0aW9uOiBUZXN0cworCitDZXJ0YWluIHNlcXVlbmNlcyBvZiBjYWxscyB0byBzZXQoKSBhbmQgdW5zZXQoKSBmb3IKK3N1cHBvcnQuRW52aXJvbm1lbnRWYXJHdWFyZCBvYmplY3RzIHJlc3RvcmVkIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKK2luY29ycmVjdGx5IG9uIF9fZXhpdF9fLgorCisuLgorCisuLiBicG86IDIzODkKKy4uIGRhdGU6IDcxODEKKy4uIG5vbmNlOiB3MEw5WWIKKy4uIHNlY3Rpb246IFRlc3RzCisKK0FycmF5IG9iamVjdHMgYXJlIG5vdyBwaWNrbGVkIGluIGEgcG9ydGFibGUgbWFubmVyLgorCisuLgorCisuLiBicG86IDU2MTEKKy4uIGRhdGU6IDcxODAKKy4uIG5vbmNlOiBVT1ByLVEKKy4uIHNlY3Rpb246IFdpbmRvd3MKKworQXV0by1kZXRlY3Qgd2hldGhlciBhIEMgZmlsZSB1c2VzIHRhYnMgb3Igc3BhY2VzIGluIFZpbS4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuN2EyLnJzdCBiL01pc2MvTkVXUy5kLzIuN2EyLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDUzZTk2Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43YTIucnN0CkBAIC0wLDAgKzEsNDU3IEBACisuLiBicG86IDAKKy4uIGRhdGU6IDc4MDQKKy4uIG5vbmNlOiBqaGVyeFQKKy4uIHJlbGVhc2UgZGF0ZTogMjAxMC0wMS0wOQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlIGBgX19jb21wbGV4X18oKWBgIG1ldGhvZCBpcyBub3cgbG9va2VkIHVwIG9uIHRoZSBjbGFzcyBvZiBpbnN0YW5jZXMgdG8KK21ha2UgaXQgY29uc2lzdGVudCB3aXRoIG90aGVyIHNwZWNpYWwgbWV0aG9kcy4KKworLi4KKworLi4gYnBvOiA3NDYyCisuLiBkYXRlOiA3ODAzCisuLiBub25jZTogRTFyMWJpCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbXBsZW1lbnQgdGhlIHN0cmluZ2xpYiBmYXN0IHNlYXJjaCBhbGdvcml0aG0gZm9yIHRoZSBgcmZpbmRgLCBgcmluZGV4YCwKK2Byc3BsaXRgIGFuZCBgcnBhcnRpdGlvbmAgbWV0aG9kcy4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KKworLi4KKworLi4gYnBvOiA1MDgwCisuLiBkYXRlOiA3ODAyCisuLiBub25jZTogV2I0cTlqCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBIG51bWJlciBvZiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMgcHJldmlvdXNseSBwcm9kdWNlZCBhIERlcHJlY2F0aW9uV2FybmluZword2hlbiBwYXNzZWQgYSBmbG9hdCBhcmd1bWVudCB3aGVyZSBhbiBpbnRlZ2VyIHdhcyBleHBlY3RlZC4gVGhlc2UgZnVuY3Rpb25zCithbmQgbWV0aG9kcyBub3cgcmFpc2UgVHlwZUVycm9yIGluc3RlYWQuICBUaGUgbWFqb3JpdHkgb2YgdGhlIGVmZmVjdHMgb2YKK3RoaXMgY2hhbmdlIGFyZSBpbiB0aGUgZXh0ZW5zaW9uIG1vZHVsZXMsIGJ1dCBzb21lIGNvcmUgZnVuY3Rpb25zIGFuZAorbWV0aG9kcyBhcmUgYWZmZWN0ZWQ6IG5vdGFibHkgdGhlICdjaHInLCAncmFuZ2UnIGFuZCAneHJhbmdlJyBidWlsdGlucywgYW5kCittYW55IHVuaWNvZGUvc3RyIG1ldGhvZHMuCisKKy4uCisKKy4uIGJwbzogNzYwNAorLi4gZGF0ZTogNzgwMQorLi4gbm9uY2U6IHRUemRiRAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRGVsZXRpbmcgYW4gdW5zZXQgc2xvdHRlZCBhdHRyaWJ1dGUgZGlkIG5vdCByYWlzZSBhbiBBdHRyaWJ1dGVFcnJvci4KKworLi4KKworLi4gYnBvOiA3NTM0CisuLiBkYXRlOiA3ODAwCisuLiBub25jZTogVUppRVppCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggaGFuZGxpbmcgb2YgSUVFRSBzcGVjaWFscyAoaW5maW5pdGllcywgbmFucywgbmVnYXRpdmUgemVybykgaW4gKioKK29wZXJhdG9yLiAgVGhlIGJlaGF2aW91ciBub3cgY29uZm9ybXMgdG8gdGhhdCBkZXNjcmliZWQgaW4gQzk5IEFubmV4IEYuCisKKy4uCisKKy4uIGJwbzogNzU3OQorLi4gZGF0ZTogNzc5OQorLi4gbm9uY2U6IGNtT3JZYgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlIG1zdmNydCBtb2R1bGUgbm93IGhhcyBkb2NzdHJpbmdzIGZvciBhbGwgaXRzIGZ1bmN0aW9ucy4KKworLi4KKworLi4gYnBvOiA3NDEzCisuLiBkYXRlOiA3Nzk4CisuLiBub25jZTogZzZFdWFwCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitQYXNzaW5nICdcMCcgYXMgdGhlIHNlcGFyYXRvciB0byBkYXRldGltZS5kYXRldGltZS5pc29mb3JtYXQoKSB1c2VkIHRvIGRyb3AKK3RoZSB0aW1lIHBhcnQgb2YgdGhlIHJlc3VsdC4KKworLi4KKworLi4gYnBvOiAxODExCisuLiBkYXRlOiA3Nzk3CisuLiBub25jZTogZTFuZDdnCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbXByb3ZlIGFjY3VyYWN5IGFuZCBjcm9zcy1wbGF0Zm9ybSBjb25zaXN0ZW5jeSBmb3IgdHJ1ZSBkaXZpc2lvbiBvZgoraW50ZWdlcnM6IHRoZSByZXN1bHQgb2YgYS9iIGlzIG5vdyBjb3JyZWN0bHkgcm91bmRlZCBmb3IgaW50cyBhIGFuZCBiIChhdAorbGVhc3Qgb24gSUVFRSA3NTQgcGxhdGZvcm1zKSwgYW5kIGluIHBhcnRpY3VsYXIgZG9lcyBub3QgZGVwZW5kIG9uIHRoZQoraW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgYSBsb25nLgorCisuLgorCisuLiBicG86IDYxMDgKKy4uIGRhdGU6IDc3OTYKKy4uIG5vbmNlOiBqM0E2cHAKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK2BgdW5pY29kZShleGNlcHRpb24pYGAgYW5kIGBgc3RyKGV4Y2VwdGlvbilgYCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIG1lc3NhZ2UKK3doZW4gb25seSBgYF9fc3RyX18oKWBgIChhbmQgbm90IGBgX191bmljb2RlX18oKWBgKSBpcyBvdmVycmlkZGVuIGluIHRoZQorc3ViY2xhc3MuCisKKy4uCisKKy4uIGJwbzogNjgzNAorLi4gZGF0ZTogNzc5NQorLi4gbm9uY2U6IGlQQ0FQSQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmVwbGFjZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIHRoZSAncHl0aG9uJyBhbmQgJ3B5dGhvbncnIGV4ZWN1dGFibGVzIG9uCitPU1guCisKK1RoZXNlIGV4ZWN1dGFibGVzIG5vdyB3b3JrIHByb3Blcmx5IHdpdGggdGhlIGFyY2goMSkgY29tbWFuZDogYGBhcmNoIC1wcGMKK3B5dGhvbmBgIHdpbGwgc3RhcnQgYSB1bml2ZXJzYWwgYmluYXJ5IHZlcnNpb24gb2YgcHl0aG9uIGluIFBQQyBtb2RlICh1bmxpa2UKK3ByZXZpb3VzIHJlbGVhc2VzKS4KKworLi4KKworLi4gYnBvOiAxNjgwMTU5CisuLiBkYXRlOiA3Nzk0CisuLiBub25jZTogekNvdWJvCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitVbmljb2RlIGNvZXJjaW9uIGR1cmluZyBhbiAnaW4nIG9wZXJhdGlvbiBubyBsb25nZXIgbWFza3MgdGhlIHVuZGVybHlpbmcKK2Vycm9yIHdoZW4gdGhlIGNvZXJjaW9uIGZhaWxzIGZvciB0aGUgbGVmdCBoYW5kIG9wZXJhbmQuCisKKy4uCisKKy4uIGJwbzogNzQ5MQorLi4gZGF0ZTogNzc5MworLi4gbm9uY2U6IGJHYWxsSQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworTWV0YWNsYXNzJ3MgX19jbXBfXyBtZXRob2Qgd2FzIGlnbm9yZWQuCisKKy4uCisKKy4uIGJwbzogNzQ2NgorLi4gZGF0ZTogNzc5MgorLi4gbm9uY2U6IHpyaFlTNAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworU2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gdGhlIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGNhbGxlZCBpbiB0aGUgbWlkZGxlIG9mCitwb3B1bGF0aW5nIGEgdHVwbGUuICBQYXRjaCBieSBGbG9yZW50IFhpY2x1bmEuCisKKy4uCisKKy4uIGJwbzogNjk2MworLi4gZGF0ZTogNzc5MQorLi4gbm9uY2U6IFRKdkZUMAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRlZCAibWF4dGFza3NwZXJjaGlsZCIgYXJndW1lbnQgdG8gYGBtdWx0aXByb2Nlc3NpbmcuUG9vbGBgLCBhbGxvd2luZyBmb3IKK2EgbWF4aW11bSBudW1iZXIgb2YgdGFza3Mgd2l0aGluIHRoZSBwb29sIHRvIGJlIGNvbXBsZXRlZCBieSB0aGUgd29ya2VyCitiZWZvcmUgdGhhdCB3b3JrZXIgaXMgdGVybWluYXRlZCwgYW5kIGEgbmV3IG9uZSBjcmVhdGVkIHRvIHJlcGxhY2UgaXQuCisKKy4uCisKKy4uIGJwbzogNzYxNworLi4gZGF0ZTogNzc5MAorLi4gbm9uY2U6IGR1U2RwUAorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIHN1cmUgZGlzdHV0aWxzLnVuaXhjY29tcGlsZXIuVW5peENDb21waWxlciByZWNvZ25pemVzIGdjYyB3aGVuIGl0IGhhcyBhCitmdWxseSBxdWFsaWZpZWQgY29uZmlndXJhdGlvbiBwcmVmaXguICBJbml0aWFsIHBhdGNoIGJ5IEFyZnJldmVyLgorCisuLgorCisuLiBicG86IDcwOTIKKy4uIGRhdGU6IDc3ODkKKy4uIG5vbmNlOiA4QnhqcHoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlIHB5M2sgd2FybmluZyB3aGVuIGltcG9ydGluZyBjUGlja2xlLiAgMnRvMyBoYW5kbGVzIHJlbmFtaW5nIG9mCitgY1BpY2tsZWAgdG8gYHBpY2tsZWAuICBUaGUgd2FybmluZyB3YXMgYW5ub3lpbmcgc2luY2UgdGhlcmUncyBubworYWx0ZXJuYXRpdmUgdG8gY1BpY2tsZSBpZiB5b3UgY2FyZSBhYm91dCBwZXJmb3JtYW5jZS4gIFBhdGNoIGJ5IEZsb3JlbnQKK1hpY2x1bmEuCisKKy4uCisKKy4uIGJwbzogNzQ1NQorLi4gZGF0ZTogNzc4OAorLi4gbm9uY2U6IDRRWjJSQworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcG9zc2libGUgY3Jhc2ggaW4gY1BpY2tsZSBvbiBpbnZhbGlkIGlucHV0LiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCisKKy4uCisKKy4uIGJwbzogNzA5MgorLi4gZGF0ZTogNzc4NworLi4gbm9uY2U6IHo4MGZ2MQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGhlIERlcHJlY2F0aW9uV2FybmluZ3MgZW1pdHRlZCBieSB0aGUgc3RhbmRhcmQgbGlicmFyeSB3aGVuIHVzaW5nIHRoZQorLTMgZmxhZy4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KKworLi4KKworLi4gYnBvOiA3NDcxCisuLiBkYXRlOiA3Nzg2CisuLiBub25jZTogRmxoN09TCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIEd6aXBGaWxlJ3MgYnVmZmVyaW5nIG1lY2hhbmlzbSwgYW5kIG1ha2UgaXQKK2ltcGxlbWVudCB0aGUgYGBpby5CdWZmZXJlZElPQmFzZWBgIEFCQyB0byBhbGxvdyBmb3IgZnVydGhlciBzcGVlZHVwcyBieQord3JhcHBpbmcgaXQgaW4gYW4gYGBpby5CdWZmZXJlZFJlYWRlcmBgLiAgUGF0Y2ggYnkgTmlyIEFpZGVzLgorCisuLgorCisuLiBicG86IDM5NzIKKy4uIGRhdGU6IDc3ODUKKy4uIG5vbmNlOiBUMEFzRjkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGBodHRwbGliLkhUVFBDb25uZWN0aW9uYGAgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwgc291cmNlX2FkZHJlc3MgcGFyYW1ldGVyCit0byBhbGxvdyBzcGVjaWZ5aW5nIHdoZXJlIHlvdXIgY29ubmVjdGlvbnMgY29tZSBmcm9tLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc3ODQKKy4uIG5vbmNlOiBWdVQ3eHQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGBzb2NrZXQuY3JlYXRlX2Nvbm5lY3Rpb24oKWBgIG5vdyBhY2NlcHRzIGFuIG9wdGlvbmFsIHNvdXJjZV9hZGRyZXNzCitwYXJhbWV0ZXIuCisKKy4uCisKKy4uIGJwbzogNTUxMQorLi4gZGF0ZTogNzc4MworLi4gbm9uY2U6IHFYWGI2NgorLi4gc2VjdGlvbjogTGlicmFyeQorCitgYHppcGZpbGUuWmlwRmlsZWBgIGNhbiBub3cgYmUgdXNlZCBhcyBhIGNvbnRleHQgbWFuYWdlci4gSW5pdGlhbCBwYXRjaCBieQorQnJpYW4gQ3VydGluLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc3ODIKKy4uIG5vbmNlOiBqVkJmR0IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRGlzdHV0aWxzIG5vdyBjb3JyZWN0bHkgaWRlbnRpZmllcyB0aGUgYnVpbGQgYXJjaGl0ZWN0dXJlIGFzICJ4ODZfNjQiIHdoZW4KK2J1aWxkaW5nIG9uIE9TWCAxMC42IHdpdGhvdXQgIi1hcmNoIiBmbGFncy4KKworLi4KKworLi4gYnBvOiA3NTU2CisuLiBkYXRlOiA3NzgxCisuLiBub25jZTogOVRBcmQ0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Rpc3R1dGlscycgbXN2Yzljb21waWxlciBub3cgb3BlbnMgdGhlIE1TVkMgTWFuaWZlc3QgZmlsZSBpbiB0ZXh0IG1vZGUuCisKKy4uCisKKy4uIGJwbzogNzU1MgorLi4gZGF0ZTogNzc4MAorLi4gbm9uY2U6IGN1YWdMVgorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmVkIGxpbmUgZmVlZCBpbiB0aGUgYmFzZTY0IEF1dGhvcml6YXRpb24gaGVhZGVyIGluIHRoZSBEaXN0dXRpbHMgdXBsb2FkCitjb21tYW5kIHRvIGF2b2lkIGFuIGVycm9yIHdoZW4gUHlQSSByZWFkcyBpdC4gIFRoaXMgb2NjdXJzIG9uIGxvbmcKK3Bhc3N3b3Jkcy4gIEluaXRpYWwgcGF0Y2ggYnkgSlAgU3QuIFBpZXJyZS4KKworLi4KKworLi4gYnBvOiA3MjMxCisuLiBkYXRlOiA3Nzc5CisuLiBub25jZTogUHRXLXBaCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3VybGxpYjIgY2Fubm90IGhhbmRsZSBodHRwcyB3aXRoIHByb3h5IHJlcXVpcmluZyBhdXRoLiAgUGF0Y2ggYnkgVGF0c3VoaXJvCitUc3VqaWthd2EuCisKKy4uCisKKy4uIGJwbzogNzM0OQorLi4gZGF0ZTogNzc3OAorLi4gbm9uY2U6IHF3YkhmSQorLi4gc2VjdGlvbjogTGlicmFyeQorCitNYWtlIG1ldGhvZHMgb2YgZmlsZSBvYmplY3RzIGluIHRoZSBpbyBtb2R1bGUgYWNjZXB0IE5vbmUgYXMgYW4gYXJndW1lbnQKK3doZXJlIGZpbGUtbGlrZSBvYmplY3RzIChpZSBTdHJpbmdJTyBhbmQgQnl0ZXNJTykgYWNjZXB0IHRoZW0gdG8gbWVhbiB0aGUKK3NhbWUgYXMgcGFzc2luZyBubyBhcmd1bWVudC4KKworLi4KKworLi4gYnBvOiA3MzQ4CisuLiBkYXRlOiA3Nzc3CisuLiBub25jZTogNDdLc3dICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2BgU3RyaW5nSU8uU3RyaW5nSU8ucmVhZGxpbmUoLTEpYGAgbm93IGFjdHMgYXMgaWYgaXQgZ290IG5vIGFyZ3VtZW50IGxpa2UKK290aGVyIGZpbGUgb2JqZWN0cy4KKworLi4KKworLi4gYnBvOiA3MzU3CisuLiBkYXRlOiA3Nzc2CisuLiBub25jZTogRXRlQnBICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3RhcmZpbGUgbm8gbG9uZ2VyIHN1cHByZXNzZXMgZmF0YWwgZXh0cmFjdGlvbiBlcnJvcnMgYnkgZGVmYXVsdC4KKworLi4KKworLi4gYnBvOiA3NDcwCisuLiBkYXRlOiA3Nzc1CisuLiBub25jZTogSVdfN3dJCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmc6IEZpeCBidWcgaW4gVW5pY29kZSBlbmNvZGluZyBmYWxsYmFjay4KKworLi4KKworLi4gYnBvOiA1OTQ5CisuLiBkYXRlOiA3Nzc0CisuLiBub25jZTogb0FXdHYyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeGVkIElNQVA0X1NTTCBoYW5nIHdoZW4gdGhlIElNQVAgc2VydmVyIHJlc3BvbnNlIGlzIG1pc3NpbmcgcHJvcGVyCitlbmQtb2YtbGluZSB0ZXJtaW5hdGlvbi4KKworLi4KKworLi4gYnBvOiA3NDU3CisuLiBkYXRlOiA3NzczCisuLiBub25jZTogbjhCa3FiCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGVkIGEgcmVhZF9wa2dfZmlsZSBtZXRob2QgdG8gYGBkaXN0dXRpbHMuZGlzdC5EaXN0cmlidXRpb25NZXRhZGF0YWBgLgorCisuLgorCisuLiBicG86IDM3NDUKKy4uIGRhdGU6IDc3NzIKKy4uIG5vbmNlOiAxb243QVQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVW5kbyB0aGUgMi43YTEgY2hhbmdlIHRvIGhhdmUgaGFzaGxpYiB0byByZWplY3QgdW5pY29kZSBhbmQgbm9uIGJ1ZmZlciBBUEkKK3N1cHBvcnRpbmcgb2JqZWN0cyBhcyBpbnB1dC4gIFRoYXQgYmVoYXZpb3IgaXMgZm9yIDMueCBvbmx5LgorCisuLgorCisuLiBicG86IDc3NjcKKy4uIGRhdGU6IDc3NzEKKy4uIG5vbmNlOiBYbU5JWkoKKy4uIHNlY3Rpb246IEMgQVBJCisKK05ldyBmdW5jdGlvbiBgYFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3coKWBgIGFkZGVkLCBhbmFsb2dvdXMgdG8KK2BgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93KClgYC4KKworLi4KKworLi4gYnBvOiA1MDgwCisuLiBkYXRlOiA3NzcwCisuLiBub25jZTogYk1sRUd5CisuLiBzZWN0aW9uOiBDIEFQSQorCitUaGUgYXJndW1lbnQgcGFyc2luZyBmdW5jdGlvbnMgYGBQeUFyZ19QYXJzZVR1cGxlKClgYCwKK2BgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKClgYCwgYGBQeUFyZ19WYVBhcnNlKClgYCwKK2BgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoKWBgIGFuZCBgYFB5QXJnX1BhcnNlKClgYCBubyBsb25nZXIgYWNjZXB0CitmbG9hdCBhcmd1bWVudHMgZm9yIGludGVnZXIgZm9ybWF0IGNvZGVzIChvdGhlciB0aGFuICdMJyk6IHByZXZpb3VzbHkgYW4KK2F0dGVtcHQgdG8gcGFzcyBhIGZsb2F0IHJlc3VsdGVkIGluIGEgRGVwcmVjYXRpb25XYXJuaW5nOyBub3cgaXQgZ2l2ZXMgYQorVHlwZUVycm9yLiAgRm9yIHRoZSAnTCcgZm9ybWF0IGNvZGUgKHdoaWNoIHByZXZpb3VzbHkgaGFkIG5vIHdhcm5pbmcpIHRoZXJlCitpcyBub3cgYSBEZXByZWNhdGlvbldhcm5pbmcuCisKKy4uCisKKy4uIGJwbzogNzAzMworLi4gZGF0ZTogNzc2OQorLi4gbm9uY2U6IGtvTFNIbworLi4gc2VjdGlvbjogQyBBUEkKKworRnVuY3Rpb24gYGBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKClgYCBhZGRlZC4KKworLi4KKworLi4gYnBvOiA2NDkxCisuLiBkYXRlOiA3NzY4CisuLiBub25jZTogbURKX21SCisuLiBzZWN0aW9uOiBCdWlsZAorCitBbGxvdyAtLXdpdGgtZGJtbGlib3JkZXIgdG8gc3BlY2lmeSB0aGF0IG5vIGRibXMgd2lsbCBiZSBidWlsdC4KKworLi4KKworLi4gYnBvOiA2OTQzCisuLiBkYXRlOiA3NzY3CisuLiBub25jZTogSGhIUHN5CisuLiBzZWN0aW9uOiBCdWlsZAorCitVc2UgcGtnLWNvbmZpZyB0byBmaW5kIHRoZSBsaWJmZmkgaGVhZGVycyB3aGVuIHRoZSBgYC0td2l0aC1zeXN0ZW0tZmZpYGAKK2ZsYWcgaXMgdXNlZC4KKworLi4KKworLi4gYnBvOiA3NjA5CisuLiBkYXRlOiA3NzY2CisuLiBub25jZTogdzF3aXRTCisuLiBzZWN0aW9uOiBCdWlsZAorCitBZGQgYSBgYC0td2l0aC1zeXN0ZW0tZXhwYXRgYCBvcHRpb24gdGhhdCBjYXVzZXMgdGhlIHN5c3RlbSdzIGV4cGF0IGxpYnJhcnkKK3RvIGJlIHVzZWQgZm9yIHRoZSBweWV4cGF0IG1vZHVsZSBpbnN0ZWFkIG9mIHRoZSBvbmUgaW5jbHVkZWQgd2l0aCBQeXRob24uCisKKy4uCisKKy4uIGJwbzogNzU4OQorLi4gZGF0ZTogNzc2NQorLi4gbm9uY2U6IHVoOVl5WQorLi4gc2VjdGlvbjogQnVpbGQKKworT25seSBidWlsZCB0aGUgbmlzIG1vZHVsZSB3aGVuIHRoZSBjb3JyZWN0IGhlYWRlciBmaWxlcyBhcmUgZm91bmQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzc2NAorLi4gbm9uY2U6IDZXdkVkaQorLi4gc2VjdGlvbjogQnVpbGQKKworU3dpdGNoIHRvIE9wZW5TU0wgMC45LjhsIGFuZCBzcWxpdGUgMy42LjIxIG9uIFdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogNzU0MQorLi4gZGF0ZTogNzc2MworLi4gbm9uY2U6IFY4ZzBXNgorLi4gc2VjdGlvbjogQnVpbGQKKword2hlbiB1c2luZyBgYHB5dGhvbi1jb25maWdgYCB3aXRoIGEgZnJhbWV3b3JrIGluc3RhbGwgdGhlIGNvbXBpbGVyIG1pZ2h0IHVzZQordGhlIHdyb25nIGxpYnJhcnkuCisKKy4uCisKKy4uIGJwbzogNzM3NgorLi4gZGF0ZTogNzc2MgorLi4gbm9uY2U6IFkwQ2FuaQorLi4gc2VjdGlvbjogVGVzdHMKKworSW5zdGVhZCBvZiBydW5uaW5nIGEgc2VsZi10ZXN0ICh3aGljaCB3YXMgZmFpbGluZykgd2hlbiBjYWxsZWQgd2l0aCBubworYXJndW1lbnRzLCBkb2N0ZXN0LnB5IG5vdyBnaXZlcyBhIHVzYWdlIG1lc3NhZ2UuCisKKy4uCisKKy4uIGJwbzogNzM5NgorLi4gZGF0ZTogNzc2MQorLi4gbm9uY2U6IFdSUkhNWgorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHJlZ3J0ZXN0IC1zLCB3aGljaCB3YXMgYnJva2VuIGJ5IHRoZSAtaiBlbmhhbmNlbWVudC4KKworLi4KKworLi4gYnBvOiA3NDk4CisuLiBkYXRlOiA3NzYwCisuLiBub25jZTogQ3Bhei10CisuLiBzZWN0aW9uOiBUZXN0cworCit0ZXN0X211bHRpcHJvY2Vzc2luZyBub3cgdXNlcyB0ZXN0X3N1cHBvcnQuZmluZF91bnVzZWRfcG9ydCBpbnN0ZWFkIG9mIGEKK2hhcmRjb2RlZCBwb3J0IG51bWJlciBpbiB0ZXN0X3JhcGlkX3Jlc3RhcnQuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjdhMy5yc3QgYi9NaXNjL05FV1MuZC8yLjdhMy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJjMDc3OAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuN2EzLnJzdApAQCAtMCwwICsxLDQ0MiBAQAorLi4gYnBvOiA1Njc3CisuLiBkYXRlOiA3ODQ3CisuLiBub25jZTogYjBRZWp6CisuLiByZWxlYXNlIGRhdGU6IDIwMTAtMDItMDYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0V4cGxpY2l0bHkgZm9yYmlkIHdyaXRlIG9wZXJhdGlvbnMgb24gcmVhZC1vbmx5IGZpbGUgb2JqZWN0cywgYW5kIHJlYWQKK29wZXJhdGlvbnMgb24gd3JpdGUtb25seSBmaWxlIG9iamVjdHMuICBPbiBXaW5kb3dzLCB0aGUgc3lzdGVtIEMgbGlicmFyeQord291bGQgcmV0dXJuIGEgYm9ndXMgcmVzdWx0OyBvbiBTb2xhcmlzLCBpdCB3YXMgcG9zc2libGUgdG8gY3Jhc2ggdGhlCitpbnRlcnByZXRlci4gIFBhdGNoIGJ5IFN0ZWZhbiBLcmFoLgorCisuLgorCisuLiBicG86IDc4NTMKKy4uIGRhdGU6IDc4NDYKKy4uIG5vbmNlOiA3Qm5KS0MKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK05vcm1hbGl6ZSBleGNlcHRpb25zIGJlZm9yZSB0aGV5IGFyZSBwYXNzZWQgdG8gYSBjb250ZXh0IG1hbmFnZXIncworYGBfX2V4aXRfXygpYGAgbWV0aG9kLgorCisuLgorCisuLiBicG86IDczODUKKy4uIGRhdGU6IDc4NDUKKy4uIG5vbmNlOiBPVkNiV2QKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBhIGNyYXNoIGluIGBgUHlNZW1vcnlWaWV3X0Zyb21PYmplY3QoKWBgIHdoZW4gYGBQeU9iamVjdF9HZXRCdWZmZXIoKWBgCitmYWlscy4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KKworLi4KKworLi4gYnBvOiA3ODE5CisuLiBkYXRlOiA3ODQ0CisuLiBub25jZTogdEdzT3JKCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitDaGVjayBgYHN5cy5jYWxsX3RyYWNpbmcoKWBgIGFyZ3VtZW50cyB0eXBlcy4KKworLi4KKworLi4gYnBvOiA3Nzg4CisuLiBkYXRlOiA3ODQzCisuLiBub25jZTogNFQ0TTEzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggYW4gaW50ZXJwcmV0ZXIgY3Jhc2ggcHJvZHVjZWQgYnkgZGVsZXRpbmcgYSBsaXN0IHNsaWNlIHdpdGggdmVyeSBsYXJnZQorc3RlcCB2YWx1ZS4KKworLi4KKworLi4gYnBvOiA3NzY2CisuLiBkYXRlOiA3ODQyCisuLiBub25jZTogYWVqcjlNCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitDaGFuZ2UgYGBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKWBgIHJldHVybiB2YWx1ZSB0byBhIG5hbWVkIHR1cGxlIGFuZCBhZGQgdGhlCithZGRpdGlvbmFsIG1lbWJlcnMgcmV0dXJuZWQgaW4gYW4gT1NWRVJTSU9OSU5GT0VYIHN0cnVjdHVyZS4gIFRoZSBuZXcKK21lbWJlcnMgYXJlIHNlcnZpY2VfcGFja19tYWpvciwgc2VydmljZV9wYWNrX21pbm9yLCBzdWl0ZV9tYXNrLCBhbmQKK3Byb2R1Y3RfdHlwZS4KKworLi4KKworLi4gYnBvOiA3NTYxCisuLiBkYXRlOiA3ODQxCisuLiBub25jZTogZFltYW5kCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitPcGVyYXRpb25zIG9uIGVtcHR5IGJ5dGVhcnJheXMgKHN1Y2ggYXMgYGBpbnQoYnl0ZWFycmF5KCkpYGApIGNvdWxkIGNyYXNoIGluCittYW55IHBsYWNlcyBiZWNhdXNlIG9mIHRoZSBgYFB5Qnl0ZUFycmF5X0FTX1NUUklORygpYGAgbWFjcm8gcmV0dXJuaW5nIE5VTEwuCitUaGUgbWFjcm8gbm93IHJldHVybnMgYSBzdGF0aWNhbGx5IGFsbG9jYXRlZCBlbXB0eSBzdHJpbmcgaW5zdGVhZC4KKworLi4KKworLi4gYnBvOiA3NjIyCisuLiBkYXRlOiA3ODQwCisuLiBub25jZTogeUw1Y1hiCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbXByb3ZlIHRoZSBzcGxpdCgpLCByc3BsaXQoKSwgc3BsaXRsaW5lcygpIGFuZCByZXBsYWNlKCkgbWV0aG9kcyBvZiBieXRlcywKK2J5dGVhcnJheSBhbmQgdW5pY29kZSBvYmplY3RzIGJ5IHVzaW5nIGEgY29tbW9uIGltcGxlbWVudGF0aW9uIGJhc2VkIG9uCitzdHJpbmdsaWIncyBmYXN0IHNlYXJjaC4gIFBhdGNoIGJ5IEZsb3JlbnQgWGljbHVuYS4KKworLi4KKworLi4gYnBvOiA3NjMyCisuLiBkYXRlOiA3ODM5CisuLiBub25jZTogZGpBa0lHCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggdmFyaW91cyBzdHIgLT4gZmxvYXQgY29udmVyc2lvbiBidWdzIHByZXNlbnQgaW4gMi43IGFscGhhIDIsIGluY2x1ZGluZzoKKworKDEpIGEgc2VyaW91cyAnd3Jvbmcgb3V0cHV0JyBidWcgdGhhdCBjb3VsZCBvY2N1ciBmb3IgbG9uZyAoPiA0MCBkaWdpdCkKK2lucHV0ICAgICBzdHJpbmdzLCAoMikgYSBjcmFzaCBpbiBkdG9hLmMgdGhhdCBvY2N1cnJlZCBpbiBkZWJ1ZyBidWlsZHMgd2hlbgorcGFyc2luZyBjZXJ0YWluIGxvbmcgICAgIG51bWVyaWMgc3RyaW5ncyBjb3JyZXNwb25kaW5nIHRvIHN1Ym5vcm1hbCB2YWx1ZXMsCisoMykgYSBtZW1vcnkgbGVhayBmb3Igc29tZSB2YWx1ZXMgbGFyZ2UgZW5vdWdoIHRvIGNhdXNlIG92ZXJmbG93LCBhbmQgKDQpIGEKK251bWJlciBvZiBmbGF3cyB0aGF0IGNvdWxkIGxlYWQgdG8gaW5jb3JyZWN0bHkgcm91bmRlZCByZXN1bHRzLgorCisuLgorCisuLiBicG86IDczMTkKKy4uIGRhdGU6IDc4MzgKKy4uIG5vbmNlOiBDSVA2NGQKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1NpbGVuY2UgYGBEZXByZWNhdGlvbldhcm5pbmdgYCBieSBkZWZhdWx0IHdoZW4gdGhlIC0zIG9wdGlvbiBpcyBub3QgdXNlZC4KKyhTZWUgYWxzbzogYnBvLTc3NzApCisKKy4uCisKKy4uIGJwbzogMjMzNQorLi4gZGF0ZTogNzgzNworLi4gbm9uY2U6IE5CLVhwZgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQmFja3BvcnQgc2V0IGxpdGVyYWxzIHN5bnRheCBmcm9tIFB5dGhvbiAzLnguCisKKy4uCisKKy4uIGJwbzogMjMzMworLi4gZGF0ZTogNzgzNgorLi4gbm9uY2U6IHlXTEJ5MworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQmFja3BvcnQgc2V0IGFuZCBkaWN0IGNvbXByZWhlbnNpb25zIHN5bnRheCBmcm9tIFB5dGhvbiAzLnguCisKKy4uCisKKy4uIGJwbzogMTk2NworLi4gZGF0ZTogNzgzNQorLi4gbm9uY2U6IFJyeUd4MworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQmFja3BvcnQgZGljdGlvbmFyeSB2aWV3cyBmcm9tIFB5dGhvbiAzLnguCisKKy4uCisKKy4uIGJwbzogOTEzNworLi4gZGF0ZTogNzgzNAorLi4gbm9uY2U6IERnV09EbworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggaXNzdWUgaW4gTXV0YWJsZU1hcHBpbmcudXBkYXRlLCB3aGljaCBpbmNvcnJlY3RseSB0cmVhdGVkIGtleXdvcmQKK2FyZ3VtZW50cyBjYWxsZWQgJ3NlbGYnIG9yICdvdGhlcicgc3BlY2lhbGx5LgorCisuLgorCisuLiBicG86IDc4MzUKKy4uIGRhdGU6IDc4MzMKKy4uIG5vbmNlOiBqbGJySzgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc2hlbHZlIHNob3VsZCBubyBsb25nZXIgcHJvZHVjZSBteXN0ZXJpb3VzIHdhcm5pbmdzIGR1cmluZyBpbnRlcnByZXRlcgorc2h1dGRvd24uCisKKy4uCisKKy4uIGJwbzogMjc0NgorLi4gZGF0ZTogNzgzMgorLi4gbm9uY2U6IEY2VXFDWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitEb24ndCBlc2NhcGUgYW1wZXJzYW5kcyBhbmQgYW5nbGUgYnJhY2tldHMgKCImIiwgIjwiLCAiPiIpIGluIFhNTCBwcm9jZXNzaW5nCitpbnN0cnVjdGlvbnMgYW5kIGNvbW1lbnRzLiAgVGhlc2UgcmF3IGNoYXJhY3RlcnMgYXJlIGFsbG93ZWQgYnkgdGhlIFhNTAorc3BlY2lmaWNhdGlvbiwgYW5kIGFyZSBuZWNlc3Nhcnkgd2hlbiBvdXRwdXR0aW5nIGUuZy4gIFBIUCBjb2RlIGluIGEKK3Byb2Nlc3NpbmcgaW5zdHJ1Y3Rpb24uICBQYXRjaCBieSBOZWlsIE11bGxlci4KKworLi4KKworLi4gYnBvOiA3ODY5CisuLiBkYXRlOiA3ODMxCisuLiBub25jZTogMVFTODUxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmc6IEltcHJvdmVkIGRpYWdub3N0aWMgZm9yIGZvcm1hdC10aW1lIGVycm9ycy4KKworLi4KKworLi4gYnBvOiA3ODY4CisuLiBkYXRlOiA3ODMwCisuLiBub25jZTogUFhUcjl0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmc6IEFkZGVkIGxvZ2dlckNsYXNzIGF0dHJpYnV0ZSB0byBNYW5hZ2VyLgorCisuLgorCisuLiBicG86IDc4NTEKKy4uIGRhdGU6IDc4MjkKKy4uIG5vbmNlOiA3T3RVbngKKy4uIHNlY3Rpb246IExpYnJhcnkKKworbG9nZ2luZzogQ2xhcmlmaWNhdGlvbiBvbiBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisKKy4uCisKKy4uIGJwbzogNDc3MgorLi4gZGF0ZTogNzgyOAorLi4gbm9uY2U6IDlfWTNhdgorLi4gc2VjdGlvbjogTGlicmFyeQorCitSYWlzZSBhIFZhbHVlRXJyb3Igd2hlbiBhbiB1bmtub3duIEJsdWV0b290aCBwcm90b2NvbCBpcyBzcGVjaWZpZWQsIHJhdGhlcgordGhhbiBmYWxsIHRocm91Z2ggdG8gQUZfUEFDS0VUIChpbiB0aGUgYGBzb2NrZXRgYCBtb2R1bGUpLiBBbHNvLCByYWlzZQorVmFsdWVFcnJvciByYXRoZXIgdGhhbiBUeXBlRXJyb3Igd2hlbiBhbiB1bmtub3duIFRJUEMgYWRkcmVzcyB0eXBlIGlzCitzcGVjaWZpZWQuICBQYXRjaCBieSBCcmlhbiBDdXJ0aW4uCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzgyNworLi4gbm9uY2U6IERHNFNyZAorLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nOiBJbXBsZW1lbnRlZCBQRVAgMzkxLgorCisuLgorCisuLiBicG86IDY5MzkKKy4uIGRhdGU6IDc4MjYKKy4uIG5vbmNlOiA4ZkJoaEsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGZpbGUgSS9PIG9iamVjdHMgaW4gdGhlIGBpb2AgbW9kdWxlIHRvIGtlZXAgdGhlIG9yaWdpbmFsIGZpbGUgcG9zaXRpb24KK3doZW4gY2FsbGluZyBgdHJ1bmNhdGUoKWAuICBJdCB3b3VsZCBwcmV2aW91c2x5IGNoYW5nZSB0aGUgZmlsZSBwb3NpdGlvbiB0bwordGhlIGdpdmVuIGFyZ3VtZW50LCB3aGljaCBnb2VzIGFnYWluc3QgdGhlIHRyYWRpdGlvbiBvZiBmdHJ1bmNhdGUoKSBhbmQKK290aGVyIHRydW5jYXRpb24gQVBJcy4gIFBhdGNoIGJ5IFBhc2NhbCBDaGFtYm9uLgorCisuLgorCisuLiBicG86IDc2MTAKKy4uIGRhdGU6IDc4MjUKKy4uIG5vbmNlOiAyRFhtWVoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmV3b3JrZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVybmFsIGBgemlwZmlsZS5aaXBFeHRGaWxlYGAgY2xhc3MgdXNlZCB0bworcmVwcmVzZW50IGZpbGVzIHN0b3JlZCBpbnNpZGUgYW4gYXJjaGl2ZS4gIFRoZSBuZXcgaW1wbGVtZW50YXRpb24gaXMKK3NpZ25pZmljYW50bHkgZmFzdGVyIGFuZCBjYW4gYmUgd3JhcHBlZCBpbiBhbiBgYGlvLkJ1ZmZlcmVkUmVhZGVyYGAgb2JqZWN0Citmb3IgbW9yZSBzcGVlZHVwcy4gIEl0IGFsc28gc29sdmVzIGFuIGlzc3VlIHdoZXJlIGludGVybGVhdmVkIGNhbGxzIHRvCitgYHJlYWQoKWBgIGFuZCBgYHJlYWRsaW5lKClgYCBnaXZlIHdyb25nIHJlc3VsdHMuIFBhdGNoIGJ5IE5pciBBaWRlcy4KKworLi4KKworLi4gYnBvOiA3NzkyCisuLiBkYXRlOiA3ODI0CisuLiBub25jZTogbmNIOEJTCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlZ2lzdGVyaW5nIG5vbi1jbGFzc2VzIHRvIEFCQ3MgcmFpc2VkIGFuIG9ic2N1cmUgZXJyb3IuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzgyMworLi4gbm9uY2U6IFJwTkFDaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitSZW1vdmVkIHRoZSBkZXByZWNhdGVkIGZ1bmN0aW9ucyBgYHZlcmlmeSgpYGAgYW5kIGBgdmVyZXEoKWBgIGZyb20KK0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weS4KKworLi4KKworLi4gYnBvOiA3NzczCisuLiBkYXRlOiA3ODIyCisuLiBub25jZTogeDJ0V2xkCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhbiBVbmJvdW5kTG9jYWxFcnJvciBpbiBgYHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpYGAgd2hlbiB0aGUKK3JlbGVhc2UgZmlsZSBpcyBlbXB0eS4KKworLi4KKworLi4gYnBvOiA3NzQ4CisuLiBkYXRlOiA3ODIxCisuLiBub25jZTogWWxBZ1YtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NpbmNlIHVuaWNvZGUgdmFsdWVzIGFyZSBzdXBwb3J0ZWQgZm9yIHNvbWUgbWV0YWRhdGEgb3B0aW9ucyBpbiBEaXN0dXRpbHMsCit0aGUgRGlzdHJpYnV0aW9uTWV0YWRhdGEgZ2V0XyogbWV0aG9kcyB3aWxsIG5vdyByZXR1cm4gYSB1dGYtOCBlbmNvZGVkCitzdHJpbmcgZm9yIHRoZW0uICBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgdXBsb2FkIGFuZCByZWdpc3RlciBjb21tYW5kcyBzZW5kCit0aGUgY29ycmVjdCB2YWx1ZXMgdG8gUHlQSSB3aXRob3V0IGFueSBlcnJvci4KKworLi4KKworLi4gYnBvOiAxNjcwNzY1CisuLiBkYXRlOiA3ODIwCisuLiBub25jZTogOWVDcUpsCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1ByZXZlbnQgYGBlbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYGAgZnJvbSByZS13cmFwcGluZyBoZWFkZXJzIGluCittdWx0aXBhcnQvc2lnbmVkIE1JTUUgcGFydHMsIHdoaWNoIGZpeGVzIG9uZSBvZiB0aGUgc291cmNlcyBvZiBpbnZhbGlkCittb2RpZmljYXRpb25zIHRvIHN1Y2ggcGFydHMgYnkgR2VuZXJhdG9yLgorCisuLgorCisuLiBicG86IDc3MDEKKy4uIGRhdGU6IDc4MTkKKy4uIG5vbmNlOiBlOWE1Vk8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGNyYXNoIGluIGBgYmluYXNjaWkuYjJhX3V1KClgYCBpbiBkZWJ1ZyBtb2RlIHdoZW4gZ2l2ZW4gYSAxLWJ5dGUKK2FyZ3VtZW50LiAgUGF0Y2ggYnkgVmljdG9yIFN0aW5uZXIuCisKKy4uCisKKy4uIGJwbzogMzI5OQorLi4gZGF0ZTogNzgxOAorLi4gbm9uY2U6IEF6eks4NQorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcG9zc2libGUgY3Jhc2ggaW4gdGhlIF9zcmUgbW9kdWxlIHdoZW4gZ2l2ZW4gYmFkIGFyZ3VtZW50IHZhbHVlcyBpbgorZGVidWcgbW9kZS4gIFBhdGNoIGJ5IFZpY3RvciBTdGlubmVyLgorCisuLgorCisuLiBicG86IDc3MDMKKy4uIGRhdGU6IDc4MTcKKy4uIG5vbmNlOiBGTm9xVU8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgYnVmZmVyIEFQSSB0byBmdW5jdGlvbnMgb2YgdGhlIGJpbmFzY2lpIG1vZHVsZS4KK0JhY2twb3J0ZWQgZnJvbSBweTNrIGJ5IEZsb3JlbnQgWGljbHVuYSwgd2l0aCBzb21lIGFkZGl0aW9uYWwgdGVzdHMuCisKKy4uCisKKy4uIGJwbzogMjg0NgorLi4gZGF0ZTogNzgxNgorLi4gbm9uY2U6IDF5WG8xVQorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgc3VwcG9ydCBmb3IgZ3ppcC5HemlwRmlsZSByZWFkaW5nIHplcm8tcGFkZGVkIGZpbGVzLiAgUGF0Y2ggYnkgQnJpYW4KK0N1cnRpbi4KKworLi4KKworLi4gYnBvOiA1ODI3CisuLiBkYXRlOiA3ODE1CisuLiBub25jZTogSHFkWHVYCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK01ha2Ugc3VyZSB0aGF0IG5vcm1wYXRoIHByZXNlcnZlcyB1bmljb2RlLiAgSW5pdGlhbCBwYXRjaCBieSBNYXR0IEdpdWNhLgorCisuLgorCisuLiBicG86IDUzNzIKKy4uIGRhdGU6IDc4MTQKKy4uIG5vbmNlOiB0M3BZajgKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRHJvcCB0aGUgcmV1c2Ugb2YgLm8gZmlsZXMgaW4gRGlzdHV0aWxzJyBjY29tcGlsZXIgKHNpbmNlIEV4dGVuc2lvbiBleHRyYQorb3B0aW9ucyBtYXkgY2hhbmdlIHRoZSBvdXRwdXQgd2l0aG91dCBjaGFuZ2luZyB0aGUgLmMgZmlsZSkuIEluaXRpYWwgcGF0Y2gKK2J5IENvbGxpbiBXaW50ZXIuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzgxMworLi4gbm9uY2U6IG5MNDlJbgorLi4gc2VjdGlvbjogTGlicmFyeQorCitFeHBhdDogRml4IERvUyB2aWEgWE1MIGRvY3VtZW50IHdpdGggbWFsZm9ybWVkIFVURi04IHNlcXVlbmNlcworKENWRV8yMDA5XzM1NjApLgorCisuLgorCisuLiBicG86IDc2MzIKKy4uIGRhdGU6IDc4MTIKKy4uIG5vbmNlOiBBV0R4SlUKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1doZW4gUHlfVVNJTkdfTUVNT1JZX0RFQlVHR0VSIGlzIGRlZmluZWQsIGRpc2FibGUgdGhlIHByaXZhdGUgbWVtb3J5CithbGxvY2F0aW9uIHNjaGVtZSBpbiBkdG9hLmMgYW5kIHVzZSBQeU1lbV9NYWxsb2MgYW5kIFB5TWVtX0ZyZWUgaW5zdGVhZC4KK0Fsc28gZGlzYWJsZSBjYWNoaW5nIG9mIHBvd2VycyBvZiA1LgorCisuLgorCisuLiBicG86IDc2NTgKKy4uIGRhdGU6IDc4MTEKKy4uIG5vbmNlOiBvVUJiU1oKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0Vuc3VyZSB0aGF0IHRoZSBuZXcgcHl0aG9udyBleGVjdXRhYmxlIHdvcmtzIG9uIE9TWCAxMC40CisKKy4uCisKKy4uIGJwbzogNzcxNAorLi4gZGF0ZTogNzgxMAorLi4gbm9uY2U6IDI3d1EyTQorLi4gc2VjdGlvbjogQnVpbGQKKworVXNlIGBgZ2NjIC1kdW1wdmVyc2lvbmBgIHRvIGRldGVjdCB0aGUgdmVyc2lvbiBvZiBHQ0Mgb24gTWFjT1NYLgorCisuLgorCisuLiBicG86IDc2NjEKKy4uIGRhdGU6IDc4MDkKKy4uIG5vbmNlOiBnZ01ESHIKKy4uIHNlY3Rpb246IEJ1aWxkCisKK0FsbG93IGN0eXBlcyB0byBiZSBidWlsdCBmcm9tIGEgbm9uLUFTQ0lJIGRpcmVjdG9yeSBwYXRoLiBQYXRjaCBieSBGbG9yZW50CitYaWNsdW5hLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc4MDgKKy4uIG5vbmNlOiBLZ1VyTG4KKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK2lvYmVuY2ggKGEgZmlsZSBJL08gYmVuY2htYXJrKSBhbmQgY2NiZW5jaCAoYSBjb25jdXJyZW5jeSBiZW5jaG1hcmspIHdlcmUKK2FkZGVkIHRvIHRoZSBgYFRvb2xzYGAgZGlyZWN0b3J5LiAgVGhleSB3ZXJlIHByZXZpb3VzbHkgbGl2aW5nIGluIHRoZQorc2FuZGJveC4KKworLi4KKworLi4gYnBvOiA3NzI4CisuLiBkYXRlOiA3ODA3CisuLiBub25jZTogZjl3bzRjCisuLiBzZWN0aW9uOiBUZXN0cworCit0ZXN0X3RpbWVvdXQgd2FzIGNoYW5nZWQgdG8gdXNlIGBgdGVzdF9zdXBwb3J0LmJpbmRfcG9ydCgpYGAgaW5zdGVhZCBvZiBhCitoYXJkIGNvZGVkIHBvcnQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzgwNgorLi4gbm9uY2U6IER4OWczNgorLi4gc2VjdGlvbjogRG9jdW1lbnRhdGlvbgorCitVcGRhdGVkICJVc2luZyBQeXRob24iIGRvY3VtZW50YXRpb24gdG8gaW5jbHVkZSBkZXNjcmlwdGlvbiBvZiBDUHl0aG9uJ3MgLUosCistVSBhbmQgLVggb3B0aW9ucy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3ODA1CisuLiBub25jZTogdmxsWWRSCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK1VwZGF0ZWQgUHl0aG9uIG1hbnVhbCBwYWdlIChvcHRpb25zIC1CLCAtTzAsIC1zLCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKK1BZVEhPTkRPTlRXUklURUJZVEVDT0RFLCBQWVRIT05OT1VTRVJTSVRFKS4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kLzIuN2E0LnJzdCBiL01pc2MvTkVXUy5kLzIuN2E0LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGEwNTE4Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43YTQucnN0CkBAIC0wLDAgKzEsNDQwIEBACisuLiBicG86IDc1NDQKKy4uIGRhdGU6IDc4OTIKKy4uIG5vbmNlOiBUVERkOHMKKy4uIHJlbGVhc2UgZGF0ZTogMjAxMC0wMy0wNgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUHJlYWxsb2NhdGUgdGhyZWFkIG1lbW9yeSBiZWZvcmUgY3JlYXRpbmcgdGhlIHRocmVhZCB0byBhdm9pZCBhIGZhdGFsIGVycm9yCitpbiBsb3cgbWVtb3J5IGNvbmRpdGlvbi4KKworLi4KKworLi4gYnBvOiA3ODIwCisuLiBkYXRlOiA3ODkxCisuLiBub25jZTogaEVhUTlmCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitUaGUgcGFyc2VyIHRva2VuaXplciByZXN0b3JlcyBhbGwgYnl0ZXMgaW4gdGhlIHJpZ2h0IGlmIHRoZSBCT00gY2hlY2sgZmFpbHMuCisKKy4uCisKKy4uIGJwbzogNzMwOQorLi4gZGF0ZTogNzg5MAorLi4gbm9uY2U6IHBBRl9LQgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHVuY2hlY2tlZCBhdHRyaWJ1dGUgYWNjZXNzIHdoZW4gY29udmVydGluZyBVbmljb2RlRW5jb2RlRXJyb3IsCitVbmljb2RlRGVjb2RlRXJyb3IsIGFuZCBVbmljb2RlVHJhbnNsYXRlRXJyb3IgdG8gc3RyaW5ncy4KKworLi4KKworLi4gYnBvOiA3NjQ5CisuLiBkYXRlOiA3ODg5CisuLiBub25jZTogS1MwaG95CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCisidSclYycgJSBjaGFyIiBub3cgYmVoYXZlcyBsaWtlICJ1JyVzJyAlIGNoYXIiIGFuZCByYWlzZXMgYQorVW5pY29kZURlY29kZUVycm9yIGlmICdjaGFyJyBpcyBhIGJ5dGUgc3RyaW5nIHRoYXQgY2FuJ3QgYmUgZGVjb2RlZCB1c2luZwordGhlIGRlZmF1bHQgZW5jb2RpbmcuCisKKy4uCisKKy4uIGJwbzogNjkwMgorLi4gZGF0ZTogNzg4OAorLi4gbm9uY2U6IFJEUlgxUgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IHByb2JsZW0gd2l0aCBidWlsdC1pbiB0eXBlcyBmb3JtYXQgaW5jb3JyZWN0bHkgd2l0aCAwIHBhZGRpbmcuCisKKy4uCisKKy4uIGJwbzogMjU2MAorLi4gZGF0ZTogNzg4NworLi4gbm9uY2U6IGtkSy03NQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworUmVtb3ZlIGFuIHVubmVjZXNzYXJ5ICdmb3InIGxvb3AgZnJvbSBgYG15X2ZnZXRzKClgYCBpbiBQYXJzZXIvbXlyZWFkbGluZS5jLgorCisuLgorCisuLiBicG86IDc5ODgKKy4uIGRhdGU6IDc4ODYKKy4uIG5vbmNlOiA5aDc1OEIKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBkZWZhdWx0IGFsaWdubWVudCB0byBiZSByaWdodCBhbGlnbmVkIGZvciBgYGNvbXBsZXguX19mb3JtYXRfX2BgLiAgTm93CitpdCBtYXRjaGVzIG90aGVyIG51bWVyaWMgdHlwZXMuCisKKy4uCisKKy4uIGJwbzogNTIxMQorLi4gZGF0ZTogNzg4NQorLi4gbm9uY2U6IGJrdExhRgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworVGhlIGNvbXBsZXggdHlwZSBubyBsb25nZXIgdXNlcyBpbXBsaWNpdCBjb2VyY2lvbiBpbiBtaXhlZC10eXBlIGJpbmFyeQorYXJpdGhtZXRpYyBvcGVyYXRpb25zLgorCisuLgorCisuLiBicG86IDc5MDQKKy4uIGRhdGU6IDc4ODQKKy4uIG5vbmNlOiBmaVFSZmoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ2hhbmdlcyB0byB1cmxsaWIucGFyc2UudXJsc3BsaXQgdG8gaGFuZGxlIHNjaGVtZXMgYXMgZGVmaW5lZCBieSBSRkMzOTg2LgorQW55dGhpbmcgYmVmb3JlIDovLyBpcyBjb25zaWRlcmVkIGEgc2NoZW1lIGFuZCBpcyBmb2xsb3dlZCBieSBhbiBhdXRob3JpdHkKKyhvciBuZXRsb2MpIGFuZCBieSAnLycgbGVkIHBhdGgsIHdoaWNoIGlzIG9wdGlvbmFsLgorCisuLgorCisuLiBicG86IDE1NTU1NzAKKy4uIGRhdGU6IDc4ODMKKy4uIG5vbmNlOiBydVI5Q1MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZW1haWwgbm8gbG9uZ2VyIGluc2VydHMgZXh0cmEgYmxhbmsgbGluZXMgd2hlbiBhIFxyXG4gY29tYm8gY3Jvc3NlcyBhbiA4MTkyCitieXRlIGJvdW5kYXJ5LgorCisuLgorCisuLiBicG86IDY5MDYKKy4uIGRhdGU6IDc4ODIKKy4uIG5vbmNlOiBCSlRkSGwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGsgc2hvdWxkIG5vdCBzZXQgVW5pY29kZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb24gV2luZG93cy4KKworLi4KKworLi4gYnBvOiAxMDU0OTQzCisuLiBkYXRlOiA3ODgxCisuLiBub25jZTogdUhXdmUyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBgYHVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgnTkZDJywgdGV4dClgYCBmb3IgdGhlIFB1YmxpYyBSZXZpZXcgSXNzdWUgIzI5CisoaHR0cDovL3VuaWNvZGUub3JnL3Jldmlldy9wci0yOS5odG1sKS4KKworLi4KKworLi4gYnBvOiA3NDk0CisuLiBkYXRlOiA3ODgwCisuLiBub25jZTogWm5VSW8yCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBhIGNyYXNoIGluIGBgX2xzcHJvZmBgIChjUHJvZmlsZSkgYWZ0ZXIgY2xlYXJpbmcgdGhlIHByb2ZpbGVyLCByZXNldAorYWxzbyB0aGUgcG9pbnRlciB0byB0aGUgY3VycmVudCBwb2ludGVyIGNvbnRleHQuCisKKy4uCisKKy4uIGJwbzogNzIzMgorLi4gZGF0ZTogNzg3OQorLi4gbm9uY2U6IGREOTgzSworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgc3VwcG9ydCBmb3IgdGhlIGNvbnRleHQgbWFuYWdlbWVudCBwcm90b2NvbCB0byB0aGUgYGB0YXJmaWxlLlRhckZpbGVgYAorY2xhc3MuCisKKy4uCisKKy4uIGJwbzogNzI1MAorLi4gZGF0ZTogNzg3OAorLi4gbm9uY2U6IFNxWG0yaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggaW5mbyBsZWFrIG9mIG9zLmVudmlyb24gYWNyb3NzIG11bHRpLXJ1biB1c2VzIG9mCitgYHdzZ2lyZWYuaGFuZGxlcnMuQ0dJSGFuZGxlcmBgLgorCisuLgorCisuLiBicG86IDE3MjkzMDUKKy4uIGRhdGU6IDc4NzcKKy4uIG5vbmNlOiBwUmlLRVcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGRvY3Rlc3QgdG8gaGFuZGxlIGVuY29kZSBlcnJvciB3aXRoICJiYWNrc2xhc2hyZXBsYWNlIi4KKworLi4KKworLi4gYnBvOiA2OTEyOTEKKy4uIGRhdGU6IDc4NzYKKy4uIG5vbmNlOiBTa1ZmYmwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGBjb2RlY3Mub3BlbigpYGAgc2hvdWxkIG5vdCBjb252ZXJ0IGVuZCBvZiBsaW5lcyBvbiByZWFkaW5nIGFuZCB3cml0aW5nLgorCisuLgorCisuLiBicG86IDc5NzUKKy4uIGRhdGU6IDc4NzUKKy4uIG5vbmNlOiBsbThIbHAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29ycmVjdCByZWdyZXNzaW9uIGluIGRpY3QgbWV0aG9kcyBzdXBwb3J0ZWQgYnkgYnNkZGIuZGJzaGVsdmUuCisKKy4uCisKKy4uIGJwbzogNzk1OQorLi4gZGF0ZTogNzg3NAorLi4gbm9uY2U6IDBTaTB4ZworLi4gc2VjdGlvbjogTGlicmFyeQorCitjdHlwZXMgY2FsbGJhY2sgZnVuY3Rpb25zIGFyZSBub3cgcmVnaXN0ZXJlZCBjb3JyZWN0bHkgd2l0aCB0aGUgY3ljbGUKK2dhcmJhZ2UgY29sbGVjdG9yLgorCisuLgorCisuLiBicG86IDc5NzAKKy4uIGRhdGU6IDc4NzMKKy4uIG5vbmNlOiB6c2R2aFoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGBlbWFpbC5HZW5lcmF0b3IuZmxhdHRlbmBgIG5vdyBjb3JyZWN0bHkgZmxhdHRlbnMgbWVzc2FnZS9yZmM4MjIgbWVzc2FnZXMKK3BhcnNlZCBieSBgYGVtYWlsLlBhcnNlci5IZWFkZXJQYXJzZXJgYC4KKworLi4KKworLi4gYnBvOiAzNDI2CisuLiBkYXRlOiA3ODcyCisuLiBub25jZTogYnVuWDlmCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Bgb3MucGF0aC5hYnNwYXRoYGAgbm93IHJldHVybnMgdW5pY29kZSB3aGVuIGl0cyBhcmcgaXMgdW5pY29kZS4KKworLi4KKworLi4gYnBvOiA3NjMzCisuLiBkYXRlOiA3ODcxCisuLiBub25jZToga3BQWllMCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luIHRoZSBkZWNpbWFsIG1vZHVsZSwgYGBDb250ZXh0YGAgY2xhc3MgbWV0aG9kcyAod2l0aCB0aGUgZXhjZXB0aW9uIG9mCitjYW5vbmljYWwgYW5kIGlzX2Nhbm9uaWNhbCkgbm93IGFjY2VwdCBpbnN0YW5jZXMgb2YgaW50IGFuZCBsb25nIHdoZXJldmVyIGEKK0RlY2ltYWwgaW5zdGFuY2UgaXMgYWNjZXB0ZWQsIGFuZCBpbXBsaWNpdGx5IGNvbnZlcnQgdGhhdCBhcmd1bWVudCB0bworRGVjaW1hbC4gIFByZXZpb3VzbHkgb25seSBzb21lIGFyZ3VtZW50cyB3ZXJlIGNvbnZlcnRlZC4KKworLi4KKworLi4gYnBvOiA2MDAzCisuLiBkYXRlOiA3ODcwCisuLiBub25jZTogVEFvWi1lCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBhbiBhcmd1bWVudCB0byBgYHppcGZpbGUuWmlwZmlsZS53cml0ZXN0cmBgIHRvIHNwZWNpZnkgdGhlIGNvbXByZXNzaW9uCit0eXBlLgorCisuLgorCisuLiBicG86IDc4OTMKKy4uIGRhdGU6IDc4NjkKKy4uIG5vbmNlOiBJRkIzQlYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGB1bml0dGVzdC5UZXh0VGVzdFJlc3VsdGBgIGlzIG1hZGUgcHVibGljIGFuZCBhIGBgcmVzdWx0Y2xhc3NgYCBhcmd1bWVudAorYWRkZWQgdG8gdGhlIFRleHRUZXN0UnVubmVyIGNvbnN0cnVjdG9yIGFsbG93aW5nIGEgZGlmZmVyZW50IHJlc3VsdCBjbGFzcyB0bworYmUgdXNlZCB3aXRob3V0IGhhdmluZyB0byBzdWJjbGFzcy4KKworLi4KKworLi4gYnBvOiA3NTg4CisuLiBkYXRlOiA3ODY4CisuLiBub25jZTogck9DUGVUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2BgdW5pdHRlc3QuVGV4dFRlc3RSZXN1bHQuZ2V0RGVzY3JpcHRpb25gYCBub3cgaW5jbHVkZXMgdGhlIHRlc3QgbmFtZSBpbgorZmFpbHVyZSByZXBvcnRzIGV2ZW4gaWYgdGhlIHRlc3QgaGFzIGEgZG9jc3RyaW5nLgorCisuLgorCisuLiBicG86IDU4MDEKKy4uIGRhdGU6IDc4NjcKKy4uIG5vbmNlOiBlT3JvcG8KKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmVtb3ZlIHNwdXJpb3VzIGVtcHR5IGxpbmVzIGluIHdzZ2lyZWYuCisKKy4uCisKKy4uIGJwbzogMTUzNzcyMQorLi4gZGF0ZTogNzg2NgorLi4gbm9uY2U6IGNNN3UzcAorLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYSBgYHdyaXRlaGVhZGVyKClgYCBtZXRob2QgdG8gYGBjc3YuRGljdFdyaXRlcmBgLgorCisuLgorCisuLiBicG86IDc0MjcKKy4uIGRhdGU6IDc4NjUKKy4uIG5vbmNlOiBjMXoxNzAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSW1wcm92ZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgaHR0cGxpYi5CYWRTdGF0dXNMaW5lIGV4Y2VwdGlvbnMuCisKKy4uCisKKy4uIGJwbzogNzQ4MQorLi4gZGF0ZTogNzg2NAorLi4gbm9uY2U6IEZPTS1aSworLi4gc2VjdGlvbjogTGlicmFyeQorCitXaGVuIGEgYGB0aHJlYWRpbmcuVGhyZWFkYGAgZmFpbGVkIHRvIHN0YXJ0IGl0IHdvdWxkIGxlYXZlIHRoZSBpbnN0YW5jZQorc3R1Y2sgaW4gaW5pdGlhbCBzdGF0ZSBhbmQgcHJlc2VudCBpbiBgYHRocmVhZGluZy5lbnVtZXJhdGUoKWBgLgorCisuLgorCisuLiBicG86IDEwNjgyNjgKKy4uIGRhdGU6IDc4NjMKKy4uIG5vbmNlOiBHVHk4RUUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHN1YnByb2Nlc3MgbW9kdWxlIG5vdyBoYW5kbGVzIEVJTlRSIGluIGludGVybmFsIGBgb3Mud2FpdHBpZCgpYGAgYW5kCitgYG9zLnJlYWQoKWBgIHN5c3RlbSBjYWxscyB3aGVyZSBhcHByb3ByaWF0ZS4KKworLi4KKworLi4gYnBvOiA2NzI5CisuLiBkYXRlOiA3ODYyCisuLiBub25jZTogV1N6QkVECisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBgYGN0eXBlcy5jX3NzaXplX3RgYCB0byByZXByZXNlbnQgc3NpemVfdC4KKworLi4KKworLi4gYnBvOiA2MjQ3CisuLiBkYXRlOiA3ODYxCisuLiBub25jZTogcXFlMHJSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBhcmdwYXJzZSBtb2R1bGUgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzg2MAorLi4gbm9uY2U6IHNZMVd5aQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgc3FsaXRlMyBtb2R1bGUgd2FzIHVwZGF0ZWQgdG8gcHlzcWxpdGUgMi42LjAuICBUaGlzIGZpeGVzIHNldmVyYWwKK29ic2N1cmUgYnVncyBhbmQgYWxsb3dzIGxvYWRpbmcgU1FMaXRlIGV4dGVuc2lvbnMgZnJvbSBzaGFyZWQgbGlicmFyaWVzLgorCisuLgorCisuLiBicG86IDc4MDgKKy4uIGRhdGU6IDc4NTkKKy4uIG5vbmNlOiBPbmlhNnkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHJlZmVyZW5jZSBsZWFrcyBpbiBfYnNkZGIgYW5kIHJlbGF0ZWQgdGVzdHMuCisKKy4uCisKKy4uIGJwbzogNjU0NAorLi4gZGF0ZTogNzg1OAorLi4gbm9uY2U6IE5MdndxUworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSByZWZlcmVuY2UgbGVhayBpbiB0aGUga3F1ZXVlIGltcGxlbWVudGF0aW9uJ3MgZXJyb3IgaGFuZGxpbmcuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzg1NworLi4gbm9uY2U6IHlWWDB0RgorLi4gc2VjdGlvbjogTGlicmFyeQorCitTdG9wIHByb3ZpZGluZyBjcnRhc3NlbS5oIHN5bWJvbHMgd2hlbiBjb21waWxpbmcgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTAsIGFzCittc3ZjcjEwMC5kbGwgaXMgbm90IGEgcGxhdGZvcm0gYXNzZW1ibHkgYW55bW9yZS4KKworLi4KKworLi4gYnBvOiA3MjQyCisuLiBkYXRlOiA3ODU2CisuLiBub25jZTogVnpkYktJCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK09uIFNvbGFyaXMgOSBhbmQgZWFybGllciBjYWxsaW5nIGBgb3MuZm9yaygpYGAgZnJvbSB3aXRoaW4gYSB0aHJlYWQgY291bGQKK3JhaXNlIGFuIGluY29ycmVjdCBSdW50aW1lRXJyb3IgYWJvdXQgbm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrLiAgVGhlCitpbXBvcnQgbG9jayBpcyBub3cgcmVpbml0aWFsaXplZCBhZnRlciBmb3JrLgorCisuLgorCisuLiBicG86IDc5OTkKKy4uIGRhdGU6IDc4NTUKKy4uIG5vbmNlOiAtNmtON0IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGBvcy5zZXRyZXVpZCgpYGAgYW5kIGBgb3Muc2V0cmVnaWQoKWBgIHdvdWxkIHJlZnVzZSB0byBhY2NlcHQgYSAtMQorcGFyYW1ldGVyIG9uIHNvbWUgcGxhdGZvcm1zIHN1Y2ggYXMgT1MgWC4KKworLi4KKworLi4gYnBvOiA3ODQ5CisuLiBkYXRlOiA3ODU0CisuLiBub25jZTogWFFMdmE2CisuLiBzZWN0aW9uOiBUZXN0cworCitUaGUgdXRpbGl0eSBgYHRlc3QudGVzdF9zdXBwb3J0LmNoZWNrX3dhcm5pbmdzKClgYCB2ZXJpZmllcyBpZiB3YXJuaW5ncyBhcmUKK2VmZmVjdGl2ZWx5IHJhaXNlZC4gIEEgbmV3IHV0aWxpdHkgYGBjaGVja19weTNrX3dhcm5pbmdzKClgYCBpcyBhdmFpbGFibGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzg1MworLi4gbm9uY2U6IGlGR2k1VworLi4gc2VjdGlvbjogVGVzdHMKKworVGhlIGZvdXIgcGF0aCBtb2R1bGVzIChnZW5lcmljcGF0aCwgbWFjcGF0aCwgbnRwYXRoLCBwb3NpeHBhdGgpIHNoYXJlIGEKK2NvbW1vbiBUZXN0Q2FzZSBmb3Igc29tZSB0ZXN0czogdGVzdF9nZW5lcmljcGF0aC5Db21tb25UZXN0LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc4NTIKKy4uIG5vbmNlOiB4ZDZ4OFEKKy4uIHNlY3Rpb246IFRlc3RzCisKK1ByaW50IHBsYXRmb3JtIGluZm9ybWF0aW9uIHdoZW4gcnVubmluZyB0aGUgd2hvbGUgdGVzdCBzdWl0ZSwgb3IgdXNpbmcgdGhlCitgYC0tdmVyYm9zZWBgIGZsYWcuCisKKy4uCisKKy4uIGJwbzogNzY3Njc1CisuLiBkYXRlOiA3ODUxCisuLiBub25jZTogY1ItbVJZCisuLiBzZWN0aW9uOiBUZXN0cworCitFbmFibGUgdGVzdF9wZXAyNzcgb24gUE9TSVggcGxhdGZvcm1zIHdpdGggVW5pY29kZS1mcmllbmRseSBmaWxlc3lzdGVtCitlbmNvZGluZy4KKworLi4KKworLi4gYnBvOiA2MjkyCisuLiBkYXRlOiA3ODUwCisuLiBub25jZTogUkpPWUFpCisuLiBzZWN0aW9uOiBUZXN0cworCitGb3IgdGhlIG1vbWVudCBhdCBsZWFzdCwgdGhlIHRlc3Qgc3VpdGUgcnVucyBjbGVhbmx5IGlmIHB5dGhvbiBpcyBydW4gd2l0aAordGhlIC1PTyBmbGFnLiAgVGVzdHMgcmVxdWlyaW5nIGRvY3N0cmluZ3MgYXJlIHNraXBwZWQuCisKKy4uCisKKy4uIGJwbzogNzcxMgorLi4gZGF0ZTogNzg0OQorLi4gbm9uY2U6IENvNVhtNworLi4gc2VjdGlvbjogVGVzdHMKKwordGVzdF9zdXBwb3J0IGdhaW5lZCBhIG5ldyBgYHRlbXBfY3dkYGAgY29udGV4dCBtYW5hZ2VyIHdoaWNoIGlzIG5vdyBhbHNvCit1c2VkIGJ5IHJlZ3J0ZXN0IHRvIHJ1biBhbGwgdGhlIHRlc3RzIGluIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeS4gIFRoZQorb3JpZ2luYWwgQ1dEIGlzIHNhdmVkIGluIGBgdGVzdC50ZXN0X3N1cHBvcnQuU0FWRURDV0RgYC4gIFRoYW5rcyB0byBGbG9yZW50CitYaWNsdW5hIHdobyBoZWxwZWQgd2l0aCB0aGUgcGF0Y2guCisKKy4uCisKKy4uIGJwbzogMzkyMAorLi4gZGF0ZTogNzg0OAorLi4gbm9uY2U6IDVjV1BHWQorLi4gc2VjdGlvbjogQnVpbGQKKworRGVmaW5lIF9CU0RfU09VUkNFIG9uIE9wZW5CU0QgNC40IHRocm91Z2ggNC45LiAoU2VlIGFsc286IGJwby03OTAzKQpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvMi43YjEucnN0IGIvTWlzYy9ORVdTLmQvMi43YjEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMDk2ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC8yLjdiMS5yc3QKQEAgLTAsMCArMSw4MDIgQEAKKy4uIGJwbzogNzMwMQorLi4gZGF0ZTogNzk3MgorLi4gbm9uY2U6IGRsZWNSZworLi4gcmVsZWFzZSBkYXRlOiAyMDEwLTA0LTEwCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitBZGQgZW52aXJvbm1lbnQgdmFyaWFibGUgJFBZVEhPTldBUk5JTkdTLgorCisuLgorCisuLiBicG86IDgzMjkKKy4uIGRhdGU6IDc5NzEKKy4uIG5vbmNlOiBaVVRPYm0KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0Rvbid0IHJldHVybiB0aGUgc2FtZSBsaXN0cyBmcm9tIHNlbGVjdC5zZWxlY3Qgd2hlbiBubyBmZHMgYXJlIGNoYW5nZWQuCisKKy4uCisKKy4uIGJwbzogODI1OQorLi4gZGF0ZTogNzk3MAorLi4gbm9uY2U6IE5Ob0Q2NgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworYGAxTCA8PCAoMioqMzEpYGAgbm8gbG9uZ2VyIHByb2R1Y2VzIGFuICdvdXRyYWdlb3VzIHNoaWZ0IGVycm9yJyBvbiA2NC1iaXQKK21hY2hpbmVzLiAgVGhlIHNoaWZ0IGNvdW50IGZvciBlaXRoZXIgbGVmdCBvciByaWdodCBzaGlmdCBpcyBwZXJtaXR0ZWQgdG8gYmUKK3VwIHRvIHN5cy5tYXhzaXplLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc5NjkKKy4uIG5vbmNlOiBpd0J2cnUKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0Vuc3VyZSB0aGF0IHRva2VuaXphdGlvbiBvZiBpZGVudGlmaWVycyBpcyBub3QgYWZmZWN0ZWQgYnkgbG9jYWxlLgorCisuLgorCisuLiBicG86IDEyMjI1ODUKKy4uIGRhdGU6IDc5NjgKKy4uIG5vbmNlOiBlbXFGVDMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0FkZGVkIExEQ1hYU0hBUkVEIGZvciBDKysgc3VwcG9ydC4gIFBhdGNoIGJ5IEFyZnJldmVyLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc5NjcKKy4uIG5vbmNlOiBqQ2taMjAKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JhaXNlIGEgVHlwZUVycm9yIHdoZW4gdHJ5aW5nIHRvIGRlbGV0ZSBhIFRfU1RSSU5HX0lOUExBQ0Ugc3RydWN0IG1lbWJlci4KKworLi4KKworLi4gYnBvOiA3OTk0CisuLiBkYXRlOiA3OTY2CisuLiBub25jZTogWkVCU0FKCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJc3N1ZSBhIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgaWYgb2JqZWN0Ll9fZm9ybWF0X18gaXMgY2FsbGVkIHdpdGggYQorbm9uLWVtcHR5IGZvcm1hdCBzdHJpbmcuIFRoaXMgaXMgYW4gZWZmb3J0IHRvIGZ1dHVyZS1wcm9vZiB1c2VyIGNvZGUuIElmIGEKK2Rlcml2ZWQgY2xhc3MgZG9lcyBub3QgY3VycmVudGx5IGltcGxlbWVudCBfX2Zvcm1hdF9fIGJ1dCBsYXRlciBhZGRzIGl0cyBvd24KK19fZm9ybWF0X18sIGl0IHdvdWxkIG1vc3QgbGlrZWx5IGJyZWFrIHVzZXIgY29kZSB0aGF0IGhhZCBzdXBwbGllZCBhIGZvcm1hdAorc3RyaW5nLiBUaGlzIHdpbGwgYmUgY2hhbmdlZCB0byBhIERlcHJlY2F0aW9uV2FybmluZyBpbiBQeXRob24gMy4zIGFuZCBpdAord2lsbCBiZSBhbiBlcnJvciBpbiBQeXRob24gMy40LgorCisuLgorCisuLiBicG86IDgyNjgKKy4uIGRhdGU6IDc5NjUKKy4uIG5vbmNlOiB1c1M1MVUKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK09sZC1zdHlsZSBjbGFzc2VzIChub3QganVzdCBpbnN0YW5jZXMpIG5vdyBzdXBwb3J0IHdlYWsgcmVmZXJlbmNlcy4KKworLi4KKworLi4gYnBvOiA4MjExCisuLiBkYXRlOiA3OTY0CisuLiBub25jZTogSW5oWHBxCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitTYXZlL3Jlc3RvcmUgQ0ZMQUdTIGFyb3VuZCBBQ19QUk9HX0NDIGluIGNvbmZpZ3VyZS5pbiwgaW4gY2FzZSBpdCBpcyBzZXQuCisKKy4uCisKKy4uIGJwbzogMTU4Mzg2MworLi4gZGF0ZTogNzk2MworLi4gbm9uY2U6IHRTa2p4aworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworQSB1bmljb2RlIHN1YmNsYXNzIGNhbiBub3cgb3ZlcnJpZGUgdGhlIF9fdW5pY29kZV9fIG1ldGhvZAorCisuLgorCisuLiBicG86IDY0NzQKKy4uIGRhdGU6IDc5NjIKKy4uIG5vbmNlOiB5RnhWdU0KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK01ha2UgZXJyb3IgbWVzc2FnZSBmcm9tIHBhc3NpbmcgYW4gaW5hZGVxdWF0ZSBudW1iZXIgb2Yga2V5d29yZCBhcmd1bWVudHMgdG8KK2EgZnVuY3Rpb24gY29ycmVjdC4KKworLi4KKworLi4gYnBvOiA4MTY0CisuLiBkYXRlOiA3OTYxCisuLiBub25jZTogdVJZRVk1CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitEb24ndCBhbGxvdyBsYW1iZGEgZnVuY3Rpb25zIHRvIGhhdmUgYSBkb2NzdHJpbmcuCisKKy4uCisKKy4uIGJwbzogMzEzNworLi4gZGF0ZTogNzk2MAorLi4gbm9uY2U6IEVtNzBkaAorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRG9uJ3QgaWdub3JlIGVycm9ycyBhdCBzdGFydHVwLCBlc3BlY2lhbGx5IGEga2V5Ym9hcmQgaW50ZXJydXB0IChTSUdJTlQpLgorSWYgYW4gZXJyb3Igb2NjdXJzIHdoaWxlIGltcG9ydGluZyB0aGUgc2l0ZSBtb2R1bGUsIHRoZSBlcnJvciBpcyBwcmludGVkIGFuZAorUHl0aG9uIGV4aXRzLiAgSW5pdGlhbGl6ZSB0aGUgR0lMIGJlZm9yZSBpbXBvcnRpbmcgdGhlIHNpdGUgbW9kdWxlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc5NTkKKy4uIG5vbmNlOiBrSVFtbk4KKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0NvZGUgb2JqZWN0cyBub3cgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMuCisKKy4uCisKKy4uIGJwbzogNTI3NworLi4gZGF0ZTogNzk1OAorLi4gbm9uY2U6IENROENYTgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcXVvdGUgY291bnRpbmcgd2hlbiBwYXJzaW5nIFJGQyAyMjMxIGVuY29kZWQgcGFyYW1ldGVycy4KKworLi4KKworLi4gYnBvOiA4MzIxCisuLiBkYXRlOiA3OTU3CisuLiBub25jZTogVHVsX2FBCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0dpdmUgYWNjZXNzIHRvIE9wZW5TU0wgdmVyc2lvbiBudW1iZXJzIGZyb20gdGhlIGBzc2xgIG1vZHVsZSwgdXNpbmcgdGhlIG5ldworYXR0cmlidXRlcyBgc3NsLk9QRU5TU0xfVkVSU0lPTmAsIGBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk9gIGFuZAorYHNzbC5PUEVOU1NMX1ZFUlNJT05fTlVNQkVSYC4KKworLi4KKworLi4gYnBvOiA4MzEwCisuLiBkYXRlOiA3OTU2CisuLiBub25jZTogNmZ1OHVjCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FsbG93IGRpcyB0byBleGFtaW5lIG5ldyBzdHlsZSBjbGFzc2VzLgorCisuLgorCisuLiBicG86IDgyNTcKKy4uIGRhdGU6IDc5NTUKKy4uIG5vbmNlOiBQemFiU1oKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIERlY2ltYWwgY29uc3RydWN0IG5vdyBhY2NlcHRzIGEgZmxvYXQgaW5zdGFuY2UgZGlyZWN0bHksIGNvbnZlcnRpbmcgdGhhdAorZmxvYXQgdG8gYSBEZWNpbWFsIG9mIGVxdWFsIHZhbHVlOgorCis+Pj4gRGVjaW1hbCgxLjEpCitEZWNpbWFsKCcxLjEwMDAwMDAwMDAwMDAwMDA4ODgxNzg0MTk3MDAxMjUyMzIzMzg5MDUzMzQ0NzI2NTYyNScpCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzk1NAorLi4gbm9uY2U6IDAyQzFnbgorLi4gc2VjdGlvbjogTGlicmFyeQorCitjb2xsZWN0aW9ucy5Db3VudGVyKCkgbm93IHN1cHBvcnRzIGEgc3VidHJhY3QoKSBtZXRob2QuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzk1MworLi4gbm9uY2U6IG9yOHRoRworLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZnVuY3Rvb2xzIG1vZHVsZSBub3cgaGFzIGEgdG90YWxfb3JkZXJpbmcoKSBjbGFzcyBkZWNvcmF0b3IgdG8gc2ltcGxpZnkKK3RoZSBzcGVjaWZpY2F0aW9uIG9mIHJpY2ggY29tcGFyaXNvbnMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzk1MgorLi4gbm9uY2U6IG5zaHRBMgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZnVuY3Rvb2xzIG1vZHVsZSBhbHNvIGFkZHMgY21wX3RvX2tleSgpIGFzIGEgdG9vbCB0byB0cmFuc2l0aW9uCitvbGQtc3R5bGUgY29tcGFyaXNvbiBmdW5jdGlvbnMgdG8gbmV3LXN0eWxlIGtleS1mdW5jdGlvbnMuCisKKy4uCisKKy4uIGJwbzogODI5NAorLi4gZGF0ZTogNzk1MQorLi4gbm9uY2U6IDQySElJQworLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgRnJhY3Rpb24gY29uc3RydWN0b3Igbm93IGFjY2VwdHMgRGVjaW1hbCBhbmQgZmxvYXQgaW5zdGFuY2VzIGRpcmVjdGx5LgorCisuLgorCisuLiBicG86IDcyNzkKKy4uIGRhdGU6IDc5NTAKKy4uIG5vbmNlOiB2MXV5b2gKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29tcGFyaXNvbnMgaW52b2x2aW5nIGEgRGVjaW1hbCBzaWduYWxpbmcgTmFOIG5vdyBzaWduYWwgSW52YWxpZE9wZXJhdGlvbgoraW5zdGVhZCBvZiByZXR1cm5pbmcgRmFsc2UuICAoQ29tcGFyaXNvbnMgaW52b2x2aW5nIGEgcXVpZXQgTmFOIGFyZQordW5jaGFuZ2VkLikgIEFsc28sIERlY2ltYWwgcXVpZXQgTmFOcyBhcmUgbm93IGhhc2hhYmxlOyBEZWNpbWFsIHNpZ25hbGluZworTmFOcyByZW1haW4gdW5oYXNoYWJsZS4KKworLi4KKworLi4gYnBvOiAyNTMxCisuLiBkYXRlOiA3OTQ5CisuLiBub25jZTogRUxDRU5mCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NvbXBhcmlzb24gb3BlcmF0aW9ucyBiZXR3ZWVuIGZsb2F0cyBhbmQgRGVjaW1hbCBpbnN0YW5jZXMgbm93IHJldHVybiBhCityZXN1bHQgYmFzZWQgb24gdGhlIG51bWVyaWMgdmFsdWVzIG9mIHRoZSBvcGVyYW5kczsgcHJldmlvdXNseSB0aGV5IHJldHVybmVkCithbiBhcmJpdHJhcnkgcmVzdWx0IGJhc2VkIG9uIHRoZSByZWxhdGl2ZSBvcmRlcmluZyBvZiBpZChmbG9hdCkgYW5kCitpZChEZWNpbWFsKS4KKworLi4KKworLi4gYnBvOiA4MjMzCisuLiBkYXRlOiA3OTQ4CisuLiBub25jZTogeEprVkw0CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1doZW4gcnVuIGFzIGEgc2NyaXB0LCBweV9jb21waWxlLnB5IG9wdGlvbmFsbHkgdGFrZXMgYSBzaW5nbGUgYXJndW1lbnQgYC1gCit3aGljaCB0ZWxscyBpdCB0byByZWFkIGZpbGVzIHRvIGNvbXBpbGUgZnJvbSBzdGRpbi4gIEVhY2ggbGluZSBpcyByZWFkIG9uCitkZW1hbmQgYW5kIHRoZSBuYW1lZCBmaWxlIGlzIGNvbXBpbGVkIGltbWVkaWF0ZWx5LiAgKE9yaWdpbmFsIHBhdGNoIGJ5IFBpb3RyCitPxbxhcm93c2tpKS4KKworLi4KKworLi4gYnBvOiAzMTM1CisuLiBkYXRlOiA3OTQ3CisuLiBub25jZTogNXVfdzNoCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBgYGluc3BlY3QuZ2V0Y2FsbGFyZ3MoKWBgLCB3aGljaCBiaW5kcyBhcmd1bWVudHMgdG8gYSBmdW5jdGlvbiBsaWtlIGEKK25vcm1hbCBjYWxsLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc5NDYKKy4uIG5vbmNlOiBDVGJWaFQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQmFja3dhcmRzIGluY29tcGF0aWJsZSBjaGFuZ2U6IFVuaWNvZGUgY29kZXBvaW50cyBsaW5lIHRhYnVsYXRpb24gKDB4MEIpIGFuZAorZm9ybSBmZWVkICgweDBDKSBhcmUgbm93IGNvbnNpZGVyZWQgbGluZWJyZWFrcywgYXMgc3BlY2lmaWVkIGluIFVuaWNvZGUKK1N0YW5kYXJkIEFubmV4ICMxNC4gIFNlZSBpc3N1ZSAjNzY0My4gIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvcmVwb3J0cy90cjE0LworCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc5NDUKKy4uIG5vbmNlOiBZMFBfOG4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworQ29tcGFyaXNvbnMgdXNpbmcgb25lIG9mIDwsIDw9LCA+LCA+PSBiZXR3ZWVuIGEgY29tcGxleCBpbnN0YW5jZSBhbmQgYQorRnJhY3Rpb25zIGluc3RhbmNlIG5vdyByYWlzZSBUeXBlRXJyb3IgaW5zdGVhZCBvZiByZXR1cm5pbmcgVHJ1ZS9GYWxzZS4KK1RoaXMgbWFrZXMgRnJhY3Rpb24gPD0+IGNvbXBsZXggY29tcGFyaXNvbnMgY29uc2lzdGVudCB3aXRoIGludCA8PT4gY29tcGxleCwKK2Zsb2F0IDw9PiBjb21wbGV4LCBhbmQgY29tcGxleCA8PT4gY29tcGxleCBjb21wYXJpc29ucy4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3OTQ0CisuLiBub25jZTogUE9yVVR4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZGl0aW9uIG9mIGBgV2Vha1NldGBgIHRvIHRoZSBgYHdlYWtyZWZgYCBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzk0MworLi4gbm9uY2U6IDZ4eVVYagorLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nOiBBZGRlZCBMT0dfRlRQIHRvIFN5c0xvZ0hhbmRsZXIgYW5kIHVwZGF0ZWQgZG9jdW1lbnRhdGlvbi4KKworLi4KKworLi4gYnBvOiA4MjA1CisuLiBkYXRlOiA3OTQyCisuLiBub25jZTogR0s2c3l6CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbW92ZSB0aGUgIk1vZHVsZXMiIGRpcmVjdG9yeSBmcm9tIHN5cy5wYXRoIHdoZW4gUHl0aG9uIGlzIHJ1bm5pbmcgZnJvbSB0aGUKK2J1aWxkIGRpcmVjdG9yeSAoUE9TSVggb25seSkuCisKKy4uCisKKy4uIGJwbzogNzY2NworLi4gZGF0ZTogNzk0MQorLi4gbm9uY2U6IDU4MVVJTAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggZG9jdGVzdCBmYWlsdXJlcyB3aXRoIG5vbi1BU0NJSSBwYXRocy4KKworLi4KKworLi4gYnBvOiA3NTEyCisuLiBkYXRlOiA3OTQwCisuLiBub25jZTogM3RRV3J1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3NodXRpbC5jb3B5c3RhdCgpIGNvdWxkIHJhaXNlIGFuIE9TRXJyb3Igd2hlbiB0aGUgZmlsZXN5c3RlbSBkaWRuJ3Qgc3VwcG9ydAorY2hmbGFncygpIChmb3IgZXhhbXBsZSBaRlMgdW5kZXIgRnJlZUJTRCkuICBUaGUgZXJyb3IgaXMgbm93IHNpbGVuY2VkLgorCisuLgorCisuLiBicG86IDc3MDMKKy4uIGRhdGU6IDc5MzkKKy4uIG5vbmNlOiBfUW5XYloKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY3R5cGVzIHN1cHBvcnRzIGJvdGggYnVmZmVyKCkgYW5kIG1lbW9yeXZpZXcoKS4gIFRoZSBmb3JtZXIgaXMgZGVwcmVjYXRlZC4KKworLi4KKworLi4gYnBvOiA3ODYwCisuLiBkYXRlOiA3OTM4CisuLiBub25jZTogRFYyWTRFCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK3BsYXRmb3JtLnVuYW1lIG5vdyByZXBvcnRzIHRoZSBjb3JyZWN0ICdtYWNoaW5lJyB0eXBlIHdoZW4gUHl0aG9uIGlzIHJ1bm5pbmcKK2luIFdPVzY0IG1vZGUgb24gNjQgYml0IFdpbmRvd3MuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzkzNworLi4gbm9uY2U6IFpNaDRDUworLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nOiBBZGRlZCBnZXRDaGlsZCB1dGlsaXR5IG1ldGhvZCB0byBMb2dnZXIgYW5kIGFkZGVkIGlzRW5hYmxlZEZvcgorbWV0aG9kIHRvIExvZ2dlckFkYXB0ZXIuCisKKy4uCisKKy4uIGJwbzogODIwMQorLi4gZGF0ZTogNzkzNgorLi4gbm9uY2U6IFpzZnE5bworLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nOiBIYW5kbGUgc2l0dWF0aW9uIG9mIG5vbi1BU0NJSSBhbmQgVW5pY29kZSBsb2dnZXIgbmFtZXMgZXhpc3RpbmcgYXQKK3RoZSBzYW1lIHRpbWUsIGNhdXNpbmcgYSBVbmljb2RlIGVycm9yIHdoZW4gY29uZmlndXJhdGlvbiBjb2RlIGF0dGVtcHRlZCB0bworc29ydCB0aGUgZXhpc3RpbmcgbG9nZ2Vycy4KKworLi4KKworLi4gYnBvOiA4MjAwCisuLiBkYXRlOiA3OTM1CisuLiBub25jZTogUWhBbWthCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmc6IEhhbmRsZSBlcnJvcnMgd2hlbiBtdWx0aXByb2Nlc3NpbmcgaXMgbm90IGZ1bGx5IGxvYWRlZCB3aGVuIGxvZ2dpbmcKK29jY3Vycy4KKworLi4KKworLi4gYnBvOiAzODkwCisuLiBkYXRlOiA3OTM0CisuLiBub25jZTogTHhpQzBwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCByZWN2KCkgYW5kIHJlY3ZfaW50bygpIG9uIG5vbi1ibG9ja2luZyBTU0wgc29ja2V0cy4gQWxzbywgZW5hYmxlIHRoZQorU1NMX01PREVfQVVUT19SRVRSWSBmbGFnIG9uIFNTTCBzb2NrZXRzLCBzbyB0aGF0IGJsb2NraW5nIHJlYWRzIGFuZCB3cml0ZXMKK2FyZSBhbHdheXMgcmV0cmllZCBieSBPcGVuU1NMIGl0c2VsZi4gKFNlZSBhbHNvOiBicG8tODIyMikKKworLi4KKworLi4gYnBvOiA4MTc5CisuLiBkYXRlOiA3OTMzCisuLiBub25jZTogOEg1aWNoCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBtYWNwYXRoLnJlYWxwYXRoKCkgb24gYSBub24tZXhpc3RpbmcgcGF0aC4KKworLi4KKworLi4gYnBvOiA4MDI0CisuLiBkYXRlOiA3OTMyCisuLiBub25jZTogT1d5bE1RCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VwZGF0ZSB0aGUgVW5pY29kZSBkYXRhYmFzZSB0byA1LjIuCisKKy4uCisKKy4uIGJwbzogODEwNAorLi4gZGF0ZTogNzkzMQorLi4gbm9uY2U6IHNFNFduRworLi4gc2VjdGlvbjogTGlicmFyeQorCitzb2NrZXQucmVjdl9pbnRvKCkgYW5kIHNvY2tldC5yZWN2ZnJvbV9pbnRvKCkgbm93IHN1cHBvcnQgd3JpdGluZyBpbnRvCitvYmplY3RzIHN1cHBvcnRpbmcgdGhlIG5ldyBidWZmZXIgQVBJLCBmb3IgZXhhbXBsZSBieXRlYXJyYXlzIG9yCittZW1vcnl2aWV3cy4KKworLi4KKworLi4gYnBvOiA0OTYxCisuLiBkYXRlOiA3OTMwCisuLiBub25jZTogV0RjLTJ4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0luY29uc2lzdGVudC93cm9uZyByZXN1bHQgb2YgYXNreWVzbm8gZnVuY3Rpb24gaW4gdGtNZXNzYWdlQm94IHdpdGgKK1RjbC9Uay04LjUuCisKKy4uCisKKy4uIGJwbzogODE0MAorLi4gZGF0ZTogNzkyOQorLi4gbm9uY2U6IEdma0I3XworLi4gc2VjdGlvbjogTGlicmFyeQorCitFeHRlbmQgY29tcGlsZWFsbCB0byBjb21waWxlIHNpbmdsZSBmaWxlcy4gIEFkZCAtaSBvcHRpb24uCisKKy4uCisKKy4uIGJwbzogNzc3NAorLi4gZGF0ZTogNzkyOAorLi4gbm9uY2U6IEJkZE82YgorLi4gc2VjdGlvbjogTGlicmFyeQorCitTZXQgc3lzLmV4ZWN1dGFibGUgdG8gYW4gZW1wdHkgc3RyaW5nIGlmIGBgYXJndlswXWBgIGhhcyBiZWVuIHNldCB0byBhIG5vbgorZXhpc3RlbnQgcHJvZ3JhbSBuYW1lIGFuZCBQeXRob24gaXMgdW5hYmxlIHRvIHJldHJpZXZlIHRoZSByZWFsIHByb2dyYW0KK25hbWUuCisKKy4uCisKKy4uIGJwbzogODExNworLi4gZGF0ZTogNzkyNworLi4gbm9uY2U6IENGZ3lSRAorLi4gc2VjdGlvbjogTGlicmFyeQorCitsb2dnaW5nOiBJbXByb3ZlZCBhbGdvcml0aG0gZm9yIGNvbXB1dGluZyBpbml0aWFsIHJvbGxvdmVyIHRpbWUgZm9yCitgYFRpbWVkUm90YXRpbmdGaWxlSGFuZGxlcmBgIGJ5IHVzaW5nIHRoZSBtb2RpZmljYXRpb24gdGltZSBvZiBhbiBleGlzdGluZworbG9nIGZpbGUgdG8gY29tcHV0ZSB0aGUgbmV4dCByb2xsb3ZlciB0aW1lLiAgSWYgdGhlIGxvZyBmaWxlIGRvZXMgbm90IGV4aXN0LAordGhlIGN1cnJlbnQgdGltZSBpcyB1c2VkIGFzIHRoZSBiYXNpcyBmb3IgdGhlIGNvbXB1dGF0aW9uLgorCisuLgorCisuLiBicG86IDY0NzIKKy4uIGRhdGU6IDc5MjYKKy4uIG5vbmNlOiBjMFZSME0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGBgeG1sLmV0cmVlYGAgcGFja2FnZSBpcyB1cGRhdGVkIHRvIEVsZW1lbnRUcmVlIDEuMy4gIFRoZSBjRWxlbWVudFRyZWUKK21vZHVsZSBpcyB1cGRhdGVkIHRvby4KKworLi4KKworLi4gYnBvOiA3ODgwCisuLiBkYXRlOiA3OTI1CisuLiBub25jZTogb1NwUzUwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBzeXNjb25maWcgd2hlbiB0aGUgcHl0aG9uIGV4ZWN1dGFibGUgaXMgYSBzeW1ib2xpYyBsaW5rLgorCisuLgorCisuLiBicG86IDc2MjQKKy4uIGRhdGU6IDc5MjQKKy4uIG5vbmNlOiBQOVFUa2kKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGBgaXNpbnN0YW5jZShmb28oKSwgY29sbGVjdGlvbnMuQ2FsbGFibGUpYGAgZm9yIG9sZC1zdHlsZSBjbGFzc2VzLgorCisuLgorCisuLiBicG86IDcxNDMKKy4uIGRhdGU6IDc5MjMKKy4uIG5vbmNlOiBBMzBRc3MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZW1haWw6IGBgZ2V0X3BheWxvYWQoKWBgIHVzZWQgdG8gc3RyaXAgYW55IHRyYWlsaW5nIG5ld2xpbmUgZnJvbSBhIGJhc2U2NAordHJhbnNmZXItZW5jb2RlZCBwYXlsb2FkICphZnRlciogZGVjb2RpbmcgaXQ7IGl0IG5vIGxvbmdlciBkb2VzLiBUaGlzIGlzIGEKK2JlaGF2aW9yIGNoYW5nZSwgc28gZW1haWwncyBtaW5vciB2ZXJzaW9uIG51bWJlciBpcyBub3cgYnVtcGVkLCB0byB2ZXJzaW9uCis0LjAuMiwgZm9yIHRoZSAyLjcgcmVsZWFzZS4KKworLi4KKworLi4gYnBvOiA4MjM1CisuLiBkYXRlOiA3OTIyCisuLiBub25jZTogN3R4azMtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK19zb2NrZXQ6IEFkZCB0aGUgY29uc3RhbnQgYGBTT19TRVRGSUJgYC4gIFNPX1NFVEZJQiBpcyBhIHNvY2tldCBvcHRpb24KK2F2YWlsYWJsZSBvbiBGcmVlQlNEIDcuMSBhbmQgbmV3ZXIuCisKKy4uCisKKy4uIGJwbzogODAzOAorLi4gZGF0ZTogNzkyMQorLi4gbm9uY2U6IEdyWkRDMworLi4gc2VjdGlvbjogTGlicmFyeQorCit1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnROb3RSZWdleHBNYXRjaGVzCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzkyMAorLi4gbm9uY2U6IFYya0h1TworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGRpdGlvbiBvZiAtYiBjb21tYW5kIGxpbmUgb3B0aW9uIHRvIHVuaXR0ZXN0IGZvciBidWZmZXJpbmcgc3Rkb3V0IC8gc3RkZXJyCitkdXJpbmcgdGVzdCBydW5zLgorCisuLgorCisuLiBicG86IDEyMjAyMTIKKy4uIGRhdGU6IDc5MTkKKy4uIG5vbmNlOiBHcVowTDQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkZWQgb3Mua2lsbCBzdXBwb3J0IGZvciBXaW5kb3dzLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3Igc2VuZGluZyBDVFJMK0MgYW5kCitDVFJMK0JSRUFLIGV2ZW50cyB0byBjb25zb2xlIHN1YnByb2Nlc3Nlcy4KKworLi4KKworLi4gYnBvOiA4MzE0CisuLiBkYXRlOiA3OTE4CisuLiBub25jZTogczQ1dlZDCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCB1bnNpZ25lZCBsb25nIGxvbmcgYnVnIGluIGxpYmZmaSBvbiBTcGFyYyB2OC4KKworLi4KKworLi4gYnBvOiAxMDM5CisuLiBkYXRlOiA3OTE3CisuLiBub25jZTogQlFVVEpICisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBvcy5leGVjbHAoKSBjcmFzaCB3aXRoIG1pc3NpbmcgMm5kIGFyZ3VtZW50LiAoU2VlIGFsc286IGJwby04MTU0KQorCisuLgorCisuLiBicG86IDgxNTYKKy4uIGRhdGU6IDc5MTYKKy4uIG5vbmNlOiA1TEc4dVAKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYnNkZGIgbW9kdWxlIHVwZGF0ZWQgdG8gdmVyc2lvbiA0LjguNC4KK2h0dHA6Ly93d3cuamNlYS5lcy9wcm9ncmFtYWNpb24vcHlic2RkYi5odG0jYnNkZGIzLTQuOC40LiAgVGhpcyB1cGRhdGUgZHJvcHMKK3N1cHBvcnQgZm9yIEJlcmtlbGV5IERCIDQuMCwgYW5kIGFkZHMgc3VwcG9ydCBmb3IgNC44LgorCisuLgorCisuLiBicG86IDM5MjgKKy4uIGRhdGU6IDc5MTUKKy4uIG5vbmNlOiBrWThFTm0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworb3MubWtub2QoKSBub3cgYXZhaWxhYmxlIGluIFNvbGFyaXMsIGFsc28uCisKKy4uCisKKy4uIGJwbzogODE0MgorLi4gZGF0ZTogNzkxNAorLi4gbm9uY2U6IEFyVGtIdworLi4gc2VjdGlvbjogTGlicmFyeQorCitVcGRhdGUgbGliZmZpIHRvIHRoZSAzLjAuOSByZWxlYXNlLgorCisuLgorCisuLiBicG86IDgzMDAKKy4uIGRhdGU6IDc5MTMKKy4uIG5vbmNlOiBmQWt2VmsKKy4uIHNlY3Rpb246IExpYnJhcnkKKworV2hlbiBwYXNzaW5nIGEgbm9uLWludGVnZXIgYXJndW1lbnQgdG8gc3RydWN0LnBhY2sgd2l0aCBhbnkgaW50ZWdlciBmb3JtYXQKK2NvZGUsIHN0cnVjdC5wYWNrIGZpcnN0IGF0dGVtcHRzIHRvIGNvbnZlcnQgdGhlIG5vbi1pbnRlZ2VyIHVzaW5nIGl0cworX19pbmRleF9fIG1ldGhvZC4gIElmIHRoYXQgbWV0aG9kIGlzIG5vbi1leGlzdGVudCBvciByYWlzZXMgVHlwZUVycm9yIGl0Citnb2VzIG9uIHRvIHRyeSB0aGUgX19pbnRfXyBtZXRob2QsIGFzIGRlc2NyaWJlZCBiZWxvdy4KKworLi4KKworLi4gYnBvOiAxNTMwNTU5CisuLiBkYXRlOiA3OTEyCisuLiBub25jZTogS1hGNW0yCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1doZW4gcGFzc2luZyBhIG5vbi1pbnRlZ2VyIGFyZ3VtZW50IHRvIHN0cnVjdC5wYWNrIHdpdGggKmFueSogaW50ZWdlciBmb3JtYXQKK2NvZGUgKG9uZSBvZiAnYkJoSGlJbExxUScpLCBzdHJ1Y3QucGFjayBhdHRlbXB0cyB0byB1c2UgdGhlIGFyZ3VtZW50J3MKK19faW50X18gbWV0aG9kIHRvIGNvbnZlcnQgdG8gYW4gaW50ZWdlciBiZWZvcmUgcGFja2luZy4gIEl0IGFsc28gcHJvZHVjZXMgYQorRGVwcmVjYXRpb25XYXJuaW5nIGluIHRoaXMgY2FzZS4gIChJbiBQeXRob24gMi42LCB0aGUgYmVoYXZpb3VyIHdhcworaW5jb25zaXN0ZW50OiBfX2ludF9fIHdhcyB1c2VkIGZvciBzb21lIGludGVnZXIgY29kZXMgYnV0IG5vdCBmb3Igb3RoZXJzLAorYW5kIHRoZSBzZXQgb2YgaW50ZWdlciBjb2RlcyBmb3Igd2hpY2ggaXQgd2FzIHVzZWQgZGlmZmVyZWQgYmV0d2VlbiBuYXRpdmUKK3BhY2tpbmcgYW5kIHN0YW5kYXJkIHBhY2tpbmcuKQorCisuLgorCisuLiBicG86IDczNDcKKy4uIGRhdGU6IDc5MTEKKy4uIG5vbmNlOiBSZHFSaXoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworX3dpbnJlZzogQWRkIENyZWF0ZUtleUV4IGFuZCBEZWxldGVLZXlFeCwgYXMgd2VsbCBhcyBmaXggYSBidWcgaW4gdGhlIHJldHVybgordmFsdWUgb2YgUXVlcnlSZWZsZWN0aW9uS2V5LgorCisuLgorCisuLiBicG86IDc5OTMKKy4uIGRhdGU6IDc5MTAKKy4uIG5vbmNlOiBNN29OUkoKKy4uIHNlY3Rpb246IFRvb2xzL0RlbW9zCisKK0FkZCBhIHRlc3Qgb2YgSU8gcGFja2V0IHByb2Nlc3NpbmcgYmFuZHdpZHRoIHRvIGNjYmVuY2guICBJdCBtZWFzdXJlcyB0aGUKK251bWJlciBvZiBVRFAgcGFja2V0cyBwcm9jZXNzZWQgcGVyIHNlY29uZCBkZXBlbmRpbmcgb24gdGhlIG51bWJlciBvZgorYmFja2dyb3VuZCBDUFUtYm91bmQgUHl0aG9uIHRocmVhZHMuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzkwOQorLi4gbm9uY2U6IEtlTmJmdworLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworcHl0aG9uLWNvbmZpZyBub3cgc3VwcG9ydHMgbXVsdGlwbGUgb3B0aW9ucyBvbiB0aGUgc2FtZSBjb21tYW5kIGxpbmUuCisKKy4uCisKKy4uIGJwbzogODAzMgorLi4gZGF0ZTogNzkwOAorLi4gbm9uY2U6IGd2LUR1OQorLi4gc2VjdGlvbjogQnVpbGQKKworRm9yIGdkYjcsIGEgcHl0aG9uLWdkYi5weSBmaWxlIGlzIGFkZGVkIHRvIHRoZSBidWlsZCwgYWxsb3dpbmcgdG8gdXNlCithZHZhbmNlZCBnZGIgZmVhdHVyZXMgd2hlbiBkZWJ1Z2dpbmcgUHl0aG9uLgorCisuLgorCisuLiBicG86IDE2Mjg0ODQKKy4uIGRhdGU6IDc5MDcKKy4uIG5vbmNlOiB3Y3JTcjEKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1RoZSBNYWtlZmlsZSBkb2Vzbid0IGlnbm9yZSB0aGUgQ0ZMQUdTIGVudmlyb25tZW50IHZhcmlhYmxlIGFueW1vcmUuICBJdAorYWxzbyBmb3J3YXJkcyB0aGUgTERGTEFHUyBzZXR0aW5ncyB0byB0aGUgbGlua2VyIHdoZW4gYnVpbGRpbmcgYSBzaGFyZWQKK2xpYnJhcnkuCisKKy4uCisKKy4uIGJwbzogNjcxNgorLi4gZGF0ZTogNzkwNgorLi4gbm9uY2U6IHRRTEJkUgorLi4gc2VjdGlvbjogQnVpbGQKKworUXVvdGUgLXggYXJndW1lbnRzIG9mIGNvbXBpbGVhbGwgaW4gTVNJIGluc3RhbGxlci4KKworLi4KKworLi4gYnBvOiA3NzA1CisuLiBkYXRlOiA3OTA1CisuLiBub25jZTogc3c2aWZnCisuLiBzZWN0aW9uOiBCdWlsZAorCitGaXggbGlua2luZyBvbiBGcmVlQlNELgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc5MDQKKy4uIG5vbmNlOiBEbV9uY0UKKy4uIHNlY3Rpb246IEJ1aWxkCisKK01ha2Ugc3VyZSB0aGF0IHRoZSBGcmVlQlNEIGJ1aWxkIG9mIHRoZSBpbmNsdWRlZCBsaWJmZmkgdXNlcyB0aGUgcHJvcGVyCithc3NlbWJseSBmaWxlLgorCisuLgorCisuLiBicG86IDgyNzYKKy4uIGRhdGU6IDc5MDMKKy4uIG5vbmNlOiA0MHBnTEYKKy4uIHNlY3Rpb246IEMgQVBJCisKK1B5RXZhbF9DYWxsT2JqZWN0KCkgaXMgbm93IG9ubHkgYXZhaWxhYmxlIGluIG1hY3JvIGZvcm0uICBUaGUgZnVuY3Rpb24KK2RlY2xhcmF0aW9uLCB3aGljaCB3YXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucywgaXMgbm93CityZW1vdmVkICh0aGUgbWFjcm8gd2FzIGludHJvZHVjZWQgaW4gMTk5NyEpLgorCisuLgorCisuLiBicG86IDc5OTIKKy4uIGRhdGU6IDc5MDIKKy4uIG5vbmNlOiAyZUxseWEKKy4uIHNlY3Rpb246IEMgQVBJCisKK0EgcmVwbGFjZW1lbnQgUHlDT2JqZWN0IEFQSSwgUHlDYXBzdWxlLCBoYXMgYmVlbiBiYWNrcG9ydGVkIGZyb20gUHl0aG9uIDMuMS4KK0FsbCBleGlzdGluZyBQeXRob24gQ09iamVjdHMgaW4gdGhlIG1haW4gZGlzdHJpYnV0aW9uIGhhdmUgYmVlbiBjb252ZXJ0ZWQgdG8KK2NhcHN1bGVzLiAgVG8gYWRkcmVzcyBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBjb25jZXJucywKK1B5Q09iamVjdF9Bc1ZvaWRQdHIoKSB3YXMgY2hhbmdlZCB0byB1bmRlcnN0YW5kIGNhcHN1bGVzLgorCisuLgorCisuLiBicG86IDM4NjQKKy4uIGRhdGU6IDc5MDEKKy4uIG5vbmNlOiBia2JOaU8KKy4uIHNlY3Rpb246IFRlc3RzCisKK1NraXAgdGhyZWUgdGVzdF9zaWduYWwgdGVzdHMgb24gZnJlZWJzZDYgYmVjYXVzZSB0aGV5IGZhaWwgaWYgYW55IHRocmVhZCB3YXMKK3ByZXZpb3VzbHkgc3RhcnRlZCwgbW9zdCBsaWtlbHkgZHVlIHRvIGEgcGxhdGZvcm0gYnVnLgorCisuLgorCisuLiBicG86IDgzNDgKKy4uIGRhdGU6IDc5MDAKKy4uIG5vbmNlOiBOeWdmMnQKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCB0ZXN0IGZ0cCB1cmwgaW4gdGVzdF91cmxsaWIybmV0LgorCisuLgorCisuLiBicG86IDgyMDQKKy4uIGRhdGU6IDc4OTkKKy4uIG5vbmNlOiBpWU1KN18KKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCB0ZXN0X3R0ayBub3RlYm9vayB0ZXN0IGJ5IGZvcmNpbmcgZm9jdXMuCisKKy4uCisKKy4uIGJwbzogODM0NAorLi4gZGF0ZTogNzg5OAorLi4gbm9uY2U6IGt0MlNxXworLi4gc2VjdGlvbjogVGVzdHMKKworRml4IHRlc3RfdHRrIGJ1ZyBvbiBGcmVlQlNELgorCisuLgorCisuLiBicG86IDgxOTMKKy4uIGRhdGU6IDc4OTcKKy4uIG5vbmNlOiBUOE1iSWMKKy4uIHNlY3Rpb246IFRlc3RzCisKK0ZpeCB0ZXN0X3psaWIgZmFpbHVyZSB3aXRoIHpsaWIgMS4yLjQuCisKKy4uCisKKy4uIGJwbzogODI0OAorLi4gZGF0ZTogNzg5NgorLi4gbm9uY2U6IHBCeDViVAorLi4gc2VjdGlvbjogVGVzdHMKKworQWRkIHNvbWUgdGVzdHMgZm9yIHRoZSBib29sIHR5cGUuICBQYXRjaCBieSBHcmVnb3J5IE5vZmkuCisKKy4uCisKKy4uIGJwbzogODI2MworLi4gZGF0ZTogNzg5NQorLi4gbm9uY2U6IHpOVWYtNQorLi4gc2VjdGlvbjogVGVzdHMKKworTm93IHJlZ3J0ZXN0LnB5IHdpbGwgcmVwb3J0IGEgZmFpbHVyZSBpZiBpdCByZWNlaXZlcyBhIEtleWJvYXJkSW50ZXJydXB0CisoU0lHSU5UKS4KKworLi4KKworLi4gYnBvOiA4MTgwCisuLiBkYXRlOiA3ODk0CisuLiBub25jZTogeXlMdlpZCisuLiBzZWN0aW9uOiBUZXN0cworCitGaXggdGVzdF9wZXAyNzcgb24gT1MgWCBhbmQgYWRkIG1vcmUgdGVzdHMgZm9yIHNwZWNpYWwgVW5pY29kZSBub3JtYWxpemF0aW9uCitjYXNlcy4gKFNlZSBhbHNvOiBicG8tODIwNykKKworLi4KKworLi4gYnBvOiA3NzgzCisuLiBkYXRlOiA3ODkzCisuLiBub25jZTogSzIwdHRPCisuLiBzZWN0aW9uOiBUZXN0cworCit0ZXN0LnRlc3Rfc3VwcG9ydC5vcGVuX3VybHJlc291cmNlIGludmFsaWRhdGVzIHRoZSBvdXRkYXRlZCBmaWxlcyBmcm9tIHRoZQorbG9jYWwgY2FjaGUuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjdiMi5yc3QgYi9NaXNjL05FV1MuZC8yLjdiMi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNjMzk1YgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuN2IyLnJzdApAQCAtMCwwICsxLDY2NiBAQAorLi4gYnBvOiAwCisuLiBkYXRlOiA4MDM5CisuLiBub25jZTogOGFxTktQCisuLiByZWxlYXNlIGRhdGU6IDIwMTAtMDUtMDgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1J1biBDbGFuZyAyLjcncyBzdGF0aWMgYW5hbHl6ZXIgZm9yIGBgT2JqZWN0cy9gYCBhbmQgYGBQeXRob24vYGAuCisKKy4uCisKKy4uIGJwbzogMTUzMworLi4gZGF0ZTogODAzOAorLi4gbm9uY2U6IDZGTGpDOQorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGluY29uc2lzdGVuY3kgaW4gcmFuZ2UgZnVuY3Rpb24gYXJndW1lbnQgcHJvY2Vzc2luZzogYW55IG5vbi1mbG9hdAorbm9uLWludGVnZXIgYXJndW1lbnQgaXMgbm93IGNvbnZlcnRlZCB0byBhbiBpbnRlZ2VyIChpZiBwb3NzaWJsZSkgdXNpbmcgaXRzCitfX2ludF9fIG1ldGhvZC4gIFByZXZpb3VzbHksIG9ubHkgc21hbGwgYXJndW1lbnRzIHdlcmUgdHJlYXRlZCB0aGlzIHdheTsKK2xhcmdlciBhcmd1bWVudHMgKHRob3NlIHdob3NlIF9faW50X18gd2FzIG91dHNpZGUgdGhlIHJhbmdlIG9mIGEgQyBsb25nKQord291bGQgcHJvZHVjZSBhIFR5cGVFcnJvci4KKworLi4KKworLi4gYnBvOiA4MjAyCisuLiBkYXRlOiA4MDM3CisuLiBub25jZTogVXZxbVEyCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitgYHN5cy5hcmd2WzBdYGAgaXMgbm93IHNldCB0byAnLW0nIGluc3RlYWQgb2YgJy1jJyB3aGVuIHNlYXJjaGluZyBmb3IgdGhlCittb2R1bGUgZmlsZSB0byBiZSBleGVjdXRlZCB3aXRoIHRoZSAtbSBjb21tYW5kIGxpbmUgb3B0aW9uLgorCisuLgorCisuLiBicG86IDczMTkKKy4uIGRhdGU6IDgwMzYKKy4uIG5vbmNlOiBSeTBRdVgKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1doZW4gLVEgaXMgdXNlZCwgZG8gbm90IHNpbGVuY2UgRGVwcmVjYXRpb25XYXJuaW5nLgorCisuLgorCisuLiBicG86IDczMzIKKy4uIGRhdGU6IDgwMzUKKy4uIG5vbmNlOiBtQ1V6d3oKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JlbW92ZSB0aGUgMTZLQiBzdGFjay1iYXNlZCBidWZmZXIgaW4gYGBQeU1hcnNoYWxfUmVhZExhc3RPYmplY3RGcm9tRmlsZWBgLAord2hpY2ggZG9lc24ndCBicmluZyBhbnkgbm90aWNlYWJsZSBiZW5lZml0IGNvbXBhcmVkIHRvIHRoZSBkeW5hbWljIG1lbW9yeQorYWxsb2NhdGlvbiBmYWxsYmFjay4gIFBhdGNoIGJ5IENoYXJsZXMtRnJhbsOnb2lzIE5hdGFsaS4KKworLi4KKworLi4gYnBvOiA4NDE3CisuLiBkYXRlOiA4MDM0CisuLiBub25jZTogcWNSZmg4CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSYWlzZSBhbiBPdmVyZmxvd0Vycm9yIHdoZW4gYW4gaW50ZWdlciBsYXJnZXIgdGhhbiBzeXMubWF4c2l6ZSBpcyBwYXNzZWQgdG8KK2J5dGVhcnJheS4KKworLi4KKworLi4gYnBvOiA3MDcyCisuLiBkYXRlOiA4MDMzCisuLiBub25jZTogWUdIUUc3CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitgYGlzc3BhY2UoMHhhMClgYCBpcyB0cnVlIG9uIE1hYyBPUyBYLgorCisuLgorCisuLiBicG86IDg0MDQKKy4uIGRhdGU6IDgwMzIKKy4uIG5vbmNlOiAwa3JHUEYKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCBzZXQgb3BlcmF0aW9ucyBvbiBkaWN0aW9uYXJ5IHZpZXdzLgorCisuLgorCisuLiBicG86IDgwODQKKy4uIGRhdGU6IDgwMzEKKy4uIG5vbmNlOiB1aUFGb1MKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1BFUCAzNzAgbm93IGNvbmZvcm1zIHRvIHN5c3RlbSBjb252ZW50aW9ucyBmb3IgZnJhbWV3b3JrIGJ1aWxkcyBvbiBNYWNPUyBYLgorVGhhdCBpcywgYGBweXRob24gc2V0dXAucHkgaW5zdGFsbCAtLXVzZXJgYCB3aWxsIGluc3RhbGwgaW50bworYGB+L0xpYnJhcnkvUHl0aG9uLzIuN2BgIGluc3RlYWQgb2YgYGB+Ly5sb2NhbGBgLgorCisuLgorCisuLiBicG86IDg2ODEKKy4uIGRhdGU6IDgwMzAKKy4uIG5vbmNlOiBibkQyTWkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworTWFrZSB0aGUgemxpYiBtb2R1bGUncyBlcnJvciBtZXNzYWdlcyBtb3JlIGluZm9ybWF0aXZlIHdoZW4gdGhlIHpsaWIgaXRzZWxmCitkb2Vzbid0IGdpdmUgYW55IGRldGFpbGVkIGV4cGxhbmF0aW9uLgorCisuLgorCisuLiBicG86IDg1NzEKKy4uIGRhdGU6IDgwMjkKKy4uIG5vbmNlOiBCR3hjdWQKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGFuIGludGVybmFsIGVycm9yIHdoZW4gY29tcHJlc3Npbmcgb3IgZGVjb21wcmVzc2luZyBhIGNodW5rIGxhcmdlciB0aGFuCisxR0Igd2l0aCB0aGUgemxpYiBtb2R1bGUncyBjb21wcmVzc29yIGFuZCBkZWNvbXByZXNzb3Igb2JqZWN0cy4KKworLi4KKworLi4gYnBvOiA4NTczCisuLiBkYXRlOiA4MDI4CisuLiBub25jZTogUFpUWUttCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2FzeW5jb3JlIGBgX3N0cmVycm9yKClgYCBmdW5jdGlvbiBtaWdodCB0aHJvdyBWYWx1ZUVycm9yLgorCisuLgorCisuLiBicG86IDg0ODMKKy4uIGRhdGU6IDgwMjcKKy4uIG5vbmNlOiBnV1J3Q3IKKy4uIHNlY3Rpb246IExpYnJhcnkKKworYXN5bmNvcmUuZGlzcGF0Y2hlcidzIF9fZ2V0YXR0cl9fIG1ldGhvZCBwcm9kdWNlZCBjb25mdXNpbmcgZXJyb3IgbWVzc2FnZXMKK3doZW4gYWNjZXNzaW5nIHVuZGVmaW5lZCBjbGFzcyBhdHRyaWJ1dGVzIGJlY2F1c2Ugb2YgdGhlIGNoZWFwIGluaGVyaXRhbmNlCit3aXRoIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBvYmplY3QuICBUaGUgY2hlYXAgaW5oZXJpdGFuY2UgaGFzIGJlZW4KK2RlcHJlY2F0ZWQuCisKKy4uCisKKy4uIGJwbzogNDI2NQorLi4gZGF0ZTogODAyNgorLi4gbm9uY2U6IGd0Y1ItaAorLi4gc2VjdGlvbjogTGlicmFyeQorCitgYHNodXRpbC5jb3B5ZmlsZSgpYGAgd2FzIGxlYWtpbmcgZmlsZSBkZXNjcmlwdG9ycyB3aGVuIGRpc2sgZmlsbHMuICBQYXRjaAorYnkgVHJlcyBTZWF2ZXIuCisKKy4uCisKKy4uIGJwbzogNzc1NQorLi4gZGF0ZTogODAyNQorLi4gbm9uY2U6IGs1RmFBWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitVc2UgYW4gdW5lbmN1bWJlcmVkIGF1ZGlvIGZpbGUgZm9yIHRlc3RzLgorCisuLgorCisuLiBicG86IDg2MjEKKy4uIGRhdGU6IDgwMjQKKy4uIG5vbmNlOiA2NHNKSm4KKy4uIHNlY3Rpb246IExpYnJhcnkKKworYGB1dWlkLnV1aWQ0KClgYCByZXR1cm5lZCB0aGUgc2FtZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgaW4gdGhlIHBhcmVudCBhbmQgYW55CitjaGlsZHJlbiBjcmVhdGVkIHVzaW5nIGBgb3MuZm9ya2BgIG9uIE1hYyBPUyBYIDEwLjYuCisKKy4uCisKKy4uIGJwbzogODMxMworLi4gZGF0ZTogODAyMworLi4gbm9uY2U6IGxFODY4SworLi4gc2VjdGlvbjogTGlicmFyeQorCitgYHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkoKWBgIGVuY29kZXMgdW5pY29kZSBtZXNzYWdlIHRvIEFTQ0lJIHdpdGgKK2JhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlciBpZiBgYHN0cih2YWx1ZSlgYCBmYWlsZWQuCisKKy4uCisKKy4uIGJwbzogODU2NworLi4gZGF0ZTogODAyMgorLi4gbm9uY2U6IGFnR2ZzZAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggcHJlY2VkZW5jZSBvZiBzaWduYWxzIGluIERlY2ltYWwgbW9kdWxlOiB3aGVuIGEgRGVjaW1hbCBvcGVyYXRpb24gcmFpc2VzCittdWx0aXBsZSBzaWduYWxzIGFuZCBtb3JlIHRoYW4gb25lIG9mIHRob3NlIHNpZ25hbHMgaXMgdHJhcHBlZCwgdGhlCitzcGVjaWZpY2F0aW9uIGRldGVybWluZXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBzaWduYWxzIHNob3VsZCBiZSBoYW5kbGVkLgorSW4gbWFueSBjYXNlcyB0aGlzIG9yZGVyIHdhc24ndCBiZWluZyBmb2xsb3dlZCwgbGVhZGluZyB0byB0aGUgd3JvbmcgUHl0aG9uCitleGNlcHRpb24gYmVpbmcgcmFpc2VkLgorCisuLgorCisuLiBicG86IDc4NjUKKy4uIGRhdGU6IDgwMjEKKy4uIG5vbmNlOiBZRi1SU3cKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIGNsb3NlKCkgbWV0aG9kIG9mIDptb2Q6YGlvYCBvYmplY3RzIHNob3VsZCBub3Qgc3dhbGxvdyBleGNlcHRpb25zIHJhaXNlZAorYnkgdGhlIGltcGxpY2l0IGZsdXNoKCkuICBBbHNvIGVuc3VyZSB0aGF0IGNhbGxpbmcgY2xvc2UoKSBzZXZlcmFsIHRpbWVzIGlzCitzdXBwb3J0ZWQuICBQYXRjaCBieSBQYXNjYWwgQ2hhbWJvbi4KKworLi4KKworLi4gYnBvOiA4NTc2CisuLiBkYXRlOiA4MDIwCisuLiBub25jZTogUC12bjdzCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmcgdXBkYXRlZCB0byByZW1vdmUgdXNhZ2Ugb2YgZmluZF91bnVzZWRfcG9ydCgpLgorCisuLgorCisuLiBicG86IDQ2ODcKKy4uIGRhdGU6IDgwMTkKKy4uIG5vbmNlOiBXdVdQQUkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGFjY3VyYWN5IG9mIGdhcmJhZ2UgY29sbGVjdGlvbiBydW50aW1lcyBkaXNwbGF5ZWQgd2l0aCBnYy5ERUJVR19TVEFUUy4KKworLi4KKworLi4gYnBvOiA4MzU0CisuLiBkYXRlOiA4MDE4CisuLiBub25jZTogaWhQcEQ4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1RoZSBzaWdpbnRlcnJ1cHQgc2V0dGluZyBpcyBub3cgcHJlc2VydmVkIGZvciBhbGwgc2lnbmFscywgbm90IGp1c3QgU0lHQ0hMRC4KKworLi4KKworLi4gYnBvOiA3MTkyCisuLiBkYXRlOiA4MDE3CisuLiBub25jZTogY3JmbVZxCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2Bgd2ViYnJvd3Nlci5nZXQoImZpcmVmb3giKWBgIG5vdyB3b3JrcyBvbiBNYWMgT1MgWCwgYXMgZG9lcworYGB3ZWJicm93c2VyLmdldCgic2FmYXJpIilgYC4KKworLi4KKworLi4gYnBvOiA4NTc3CisuLiBkYXRlOiA4MDE2CisuLiBub25jZTogYU5tVWY4CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2BgZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2luYygpYGAgbm93IG1ha2VzIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZQorYnVpbGQgZGlyIGFuZCB0aGUgc291cmNlIGRpciB3aGVuIGxvb2tpbmcgZm9yICJweXRob24uaCIgb3IgIkluY2x1ZGUiLgorCisuLgorCisuLiBicG86IDg0NjQKKy4uIGRhdGU6IDgwMTUKKy4uIG5vbmNlOiBkY2tJUHoKKy4uIHNlY3Rpb246IExpYnJhcnkKKwordGFyZmlsZSBubyBsb25nZXIgY3JlYXRlcyBmaWxlcyB3aXRoIGV4ZWN1dGUgcGVybWlzc2lvbnMgc2V0IHdoZW4gbW9kZT0id3wiCitpcyB1c2VkLgorCisuLgorCisuLiBicG86IDc4MzQKKy4uIGRhdGU6IDgwMTQKKy4uIG5vbmNlOiA2RldrekEKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGNvbm5lY3QoKSBvZiBCbHVldG9vdGggTDJDQVAgc29ja2V0cyB3aXRoIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgTGludXgKK2tlcm5lbC4gIFBhdGNoIGJ5IFlhbml2IEFrbmluLgorCisuLgorCisuLiBicG86IDYzMTIKKy4uIGRhdGU6IDgwMTMKKy4uIG5vbmNlOiBaZ0hDd2MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IGh0dHAgSEVBRCByZXF1ZXN0IHdoZW4gdGhlIHRyYW5zZmVyIGVuY29kaW5nIGlzIGNodW5rZWQuICBJdCBzaG91bGQKK2NvcnJlY3RseSByZXR1cm4gYW4gZW1wdHkgcmVzcG9uc2Ugbm93LgorCisuLgorCisuLiBicG86IDc0OTAKKy4uIGRhdGU6IDgwMTIKKy4uIG5vbmNlOiBoVDh1ekcKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVG8gZmFjaWxpdGF0ZSBzaGFyaW5nIG9mIGRvY3Rlc3RzIGJldHdlZW4gMi54IGFuZCAzLnggdGVzdCBzdWl0ZXMsIHRoZQorYGBJR05PUkVfRVhDRVBUSU9OX0RFVEFJTGBgIGRpcmVjdGl2ZSBub3cgYWxzbyBpZ25vcmVzIHRoZSBtb2R1bGUgbG9jYXRpb24KK29mIHRoZSByYWlzZWQgZXhjZXB0aW9uLiAgQmFzZWQgb24gaW5pdGlhbCBwYXRjaCBieSBMZW5uYXJ0IFJlZ2Vicm8uCisKKy4uCisKKy4uIGJwbzogODA4NgorLi4gZGF0ZTogODAxMQorLi4gbm9uY2U6IE5uMDFERgorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbiA6ZnVuYzpgc3NsLkRFUl9jZXJ0X3RvX1BFTV9jZXJ0KClgLCBmaXggbWlzc2luZyBuZXdsaW5lIGJlZm9yZSB0aGUKK2NlcnRpZmljYXRlIGZvb3Rlci4gIFBhdGNoIGJ5IEt5bGUgVmFuZGVyQmVlay4KKworLi4KKworLi4gYnBvOiA4NTQ2CisuLiBkYXRlOiA4MDEwCisuLiBub25jZTogWkpWX1oyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlamVjdCBOb25lIGdpdmVuIGFzIHRoZSBidWZmZXJpbmcgYXJndW1lbnQgdG8gYGBfcHlpby5vcGVuKClgYC4KKworLi4KKworLi4gYnBvOiA4NTQ5CisuLiBkYXRlOiA4MDA5CisuLiBub25jZTogOW03dmJtCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBjb21waWxpbmcgdGhlIF9zc2wgZXh0ZW5zaW9uIHVuZGVyIEFJWC4gIFBhdGNoIGJ5IFNyaWRoYXIgUmF0bmFrdW1hci4KKworLi4KKworLi4gYnBvOiA2NjU2CisuLiBkYXRlOiA4MDA4CisuLiBub25jZTogb1U2X05VCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBsb2NhbGUuZm9ybWF0X3N0cmluZyB0byBoYW5kbGUgZXNjYXBlZCBwZXJjZW50cyBhbmQgbWFwcGluZ3MuCisKKy4uCisKKy4uIGJwbzogMjMwMgorLi4gZGF0ZTogODAwNworLi4gbm9uY2U6IEtxSlVBOAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggYSByYWNlIGNvbmRpdGlvbiBpbiBTb2NrZXRTZXJ2ZXIuQmFzZVNlcnZlci5zaHV0ZG93biwgd2hlcmUgdGhlIG1ldGhvZAorY291bGQgYmxvY2sgaW5kZWZpbml0ZWx5IGlmIGNhbGxlZCBqdXN0IGJlZm9yZSB0aGUgZXZlbnQgbG9vcCBzdGFydGVkCitydW5uaW5nLiAgVGhpcyBhbHNvIGZpeGVzIHRoZSBvY2Nhc2lvbmFsIGZyZWV6ZXMgd2l0bmVzc2VkIGluCit0ZXN0X2h0dHBzZXJ2ZXJzLgorCisuLgorCisuLiBicG86IDUxMDMKKy4uIGRhdGU6IDgwMDYKKy4uIG5vbmNlOiBtQmUwLWwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworU1NMIGhhbmRzaGFrZSB3b3VsZCBpZ25vcmUgdGhlIHNvY2tldCB0aW1lb3V0IGFuZCBibG9jayBpbmRlZmluaXRlbHkgaWYgdGhlCitvdGhlciBlbmQgZGlkbid0IHJlc3BvbmQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODAwNQorLi4gbm9uY2U6IFhsUUFiTgorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgZG9faGFuZHNoYWtlKCkgbWV0aG9kIG9mIFNTTCBvYmplY3RzIG5vdyBhZGp1c3RzIHRoZSBibG9ja2luZyBtb2RlIG9mCit0aGUgU1NMIHN0cnVjdHVyZSBpZiBuZWNlc3NhcnkgKGFzIG90aGVyIG1ldGhvZHMgYWxyZWFkeSBkbykuCisKKy4uCisKKy4uIGJwbzogNzUwNworLi4gZGF0ZTogODAwNAorLi4gbm9uY2U6IFBQWldpQQorLi4gc2VjdGlvbjogTGlicmFyeQorCitRdW90ZSAiISIgaW4gcGlwZXMucXVvdGUoKTsgaXQgaXMgc3BlY2lhbCB0byBzb21lIHNoZWxscy4KKworLi4KKworLi4gYnBvOiA1MjM4CisuLiBkYXRlOiA4MDAzCisuLiBub25jZTogSGpJVnFyCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0NhbGxpbmcgbWFrZWZpbGUoKSBvbiBhbiBTU0wgb2JqZWN0IHdvdWxkIHByZXZlbnQgdGhlIHVuZGVybHlpbmcgc29ja2V0IGZyb20KK2JlaW5nIGNsb3NlZCB1bnRpbCBhbGwgb2JqZWN0cyBnZXQgdHJ1ZWx5IGRlc3Ryb3llZC4KKworLi4KKworLi4gYnBvOiA3OTQzCisuLiBkYXRlOiA4MDAyCisuLiBub25jZTogMHdjZXBUCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBjaXJjdWxhciByZWZlcmVuY2UgY3JlYXRlZCB3aGVuIGluc3RhbnRpYXRpbmcgYW4gU1NMIHNvY2tldC4gSW5pdGlhbAorcGF0Y2ggYnkgUMOpdGVyIFN6YWLDsy4KKworLi4KKworLi4gYnBvOiA4NDUxCisuLiBkYXRlOiA4MDAxCisuLiBub25jZTogdldaS2Z1CisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1N5c2xvZyBtb2R1bGUgbm93IHVzZXMgYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pIGluc3RlYWQgb2YgdGhlIHN0cmluZyAicHl0aG9uIgorYXMgdGhlICppZGVudCouICBvcGVubG9nKCkgYXJndW1lbnRzIGFyZSBhbGwgb3B0aW9uYWwgYW5kIGtleXdvcmRzLgorCisuLgorCisuLiBicG86IDgxMDgKKy4uIGRhdGU6IDgwMDAKKy4uIG5vbmNlOiBndzNnaEMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRoZSB1bndyYXAoKSBtZXRob2Qgb2YgU1NMIG9iamVjdHMgd2hlbiB0aGUgc29ja2V0IGhhcyBhIG5vbi1pbmZpbml0ZQordGltZW91dC4gIEFsc28gbWFrZSB0aGF0IG1ldGhvZCBmcmllbmRsaWVyIHdpdGggYXBwbGljYXRpb25zIHdhbnRpbmcgdG8KK2NvbnRpbnVlIHVzaW5nIHRoZSBzb2NrZXQgaW4gY2xlYXItdGV4dCBtb2RlLCBieSBkaXNhYmxpbmcgT3BlblNTTCdzCitpbnRlcm5hbCByZWFkYWhlYWQuICBUaGFua3MgdG8gRGFycnlsIE1pbGVzIGZvciBndWlkYW5jZS4KKworLi4KKworLi4gYnBvOiA4NDg0CisuLiBkYXRlOiA3OTk5CisuLiBub25jZTogYjl6RnNoCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0xvYWQgYWxsIGNpcGhlcnMgYW5kIGRpZ2VzdCBhbGdvcml0aG1zIHdoZW4gaW5pdGlhbGl6aW5nIHRoZSBfc3NsIGV4dGVuc2lvbiwKK3N1Y2ggdGhhdCB2ZXJpZmljYXRpb24gb2Ygc29tZSBTU0wgY2VydGlmaWNhdGVzIGRvZXNuJ3QgZmFpbCBiZWNhdXNlIG9mIGFuCisidW5rbm93biBhbGdvcml0aG0iLgorCisuLgorCisuLiBicG86IDg0MzcKKy4uIGRhdGU6IDc5OTgKKy4uIG5vbmNlOiBpR0d5WDMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHRlc3RfZ2RiIGZhaWx1cmVzLCBwYXRjaCB3cml0dGVuIGJ5IERhdmUgTWFsY29sbQorCisuLgorCisuLiBicG86IDQ4MTQKKy4uIGRhdGU6IDc5OTcKKy4uIG5vbmNlOiBrYzVtNTkKKy4uIHNlY3Rpb246IExpYnJhcnkKKworVGhlIHRpbWVvdXQgcGFyYW1ldGVyIGlzIG5vdyBhcHBsaWVkIGFsc28gZm9yIGNvbm5lY3Rpb25zIHJlc3VsdGluZyBmcm9tCitQT1JUL0VQUlQgY29tbWFuZHMuCisKKy4uCisKKy4uIGJwbzogODQ2MworLi4gZGF0ZTogNzk5NgorLi4gbm9uY2U6IHNseHhyVworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgbWlzc2luZyByZWZlcmVuY2UgdG8gYnp0YXIgaW4gc2h1dGlsJ3MgZG9jdW1lbnRhdGlvbi4KKworLi4KKworLi4gYnBvOiA4NDM4CisuLiBkYXRlOiA3OTk1CisuLiBub25jZTogVFVqYUFVCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1JlbW92ZSByZWZlcmVuY2UgdG8gdGhlIG1pc3NpbmcgInN1cnJvZ2F0ZWVzY2FwZSIgZW5jb2RpbmcgZXJyb3IgaGFuZGxlcgorZnJvbSB0aGUgbmV3IElPIGxpYnJhcnkuCisKKy4uCisKKy4uIGJwbzogMzgxNworLi4gZGF0ZTogNzk5NAorLi4gbm9uY2U6IDZ6amI4NQorLi4gc2VjdGlvbjogTGlicmFyeQorCitmdHBsaWIuRlRQLmFib3J0KCkgbWV0aG9kIG5vdyBjb25zaWRlcnMgMjI1IGEgdmFsaWQgcmVzcG9uc2UgY29kZSBhcyBzdGF0ZWQKK2luIFJGQy05NTkgYXQgY2hhcHRlciA1LjQuCisKKy4uCisKKy4uIGJwbzogODI3OQorLi4gZGF0ZTogNzk5MworLi4gbm9uY2U6IE11YmlPZworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdGVzdF9nZGIgZmFpbHVyZXMuCisKKy4uCisKKy4uIGJwbzogODMyMgorLi4gZGF0ZTogNzk5MgorLi4gbm9uY2U6IFhWb2NnYworLi4gc2VjdGlvbjogTGlicmFyeQorCitBZGQgYSAqY2lwaGVycyogYXJndW1lbnQgdG8gU1NMIHNvY2tldHMsIHNvIGFzIHRvIGNoYW5nZSB0aGUgYXZhaWxhYmxlCitjaXBoZXIgbGlzdC4gIEhlbHBzIGZpeCB0ZXN0X3NzbCB3aXRoIE9wZW5TU0wgMS4wLjAuCisKKy4uCisKKy4uIGJwbzogMjk4NworLi4gZGF0ZTogNzk5MQorLi4gbm9uY2U6IEZieFQtTQorLi4gc2VjdGlvbjogTGlicmFyeQorCitSRkMgMjczMiBzdXBwb3J0IGZvciB1cmxwYXJzZSAoSVB2NiBhZGRyZXNzZXMpLiAgUGF0Y2ggYnkgVG9ueSBMb2NrZSBhbmQKK0hhbnMgVWxyaWNoIE5pZWRlcm1hbm4uCisKKy4uCisKKy4uIGJwbzogNzU4NQorLi4gZGF0ZTogNzk5MAorLi4gbm9uY2U6IHN0R2FkegorLi4gc2VjdGlvbjogTGlicmFyeQorCitkaWZmbGliIGNvbnRleHQgYW5kIHVuaWZpZWQgZGlmZnMgbm93IHBsYWNlIGEgdGFiIGJldHdlZW4gZmlsZW5hbWUgYW5kIGRhdGUsCitjb25mb3JtaW5nIHRvIHRoZSAnc3RhbmRhcmRzJyB0aGV5IHdlcmUgb3JpZ2luYWxseSBkZXNpZ25lZCB0byBmb2xsb3cuICBUaGlzCitpbXByb3ZlcyBjb21wYXRpYmlsaXR5IHdpdGggcGF0Y2ggdG9vbHMuCisKKy4uCisKKy4uIGJwbzogNzQ3MgorLi4gZGF0ZTogNzk4OQorLi4gbm9uY2U6IElnaEJQcAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCB0eXBvIGluIGVtYWlsLmVuY29kZXJzIG1vZHVsZTsgbWVzc2FnZXMgdXNpbmcgSVNPLTIwMjIgY2hhcmFjdGVyIHNldHMKK3dpbGwgbm93IGNvbnNpc3RlbnRseSB1c2UgYSBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nIG9mIDdiaXQgcmF0aGVyIHRoYW4KK3NvbWV0aW1lcyBiZWluZyBtYXJrZWQgYXMgOGJpdC4KKworLi4KKworLi4gYnBvOiA4MzMwCisuLiBkYXRlOiA3OTg4CisuLiBub25jZTogTFBEcUJHCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBleHBlY3RlZCBvdXRwdXQgaW4gdGVzdF9nZGIuCisKKy4uCisKKy4uIGJwbzogODM3NAorLi4gZGF0ZTogNzk4NworLi4gbm9uY2U6IGJXb0dkRAorLi4gc2VjdGlvbjogTGlicmFyeQorCitVcGRhdGUgdGhlIGludGVybmFsIGFsaWFzIHRhYmxlIGluIHRoZSA6bW9kOmBsb2NhbGVgIG1vZHVsZSB0byBjb3ZlciByZWNlbnQKK2xvY2FsZSBjaGFuZ2VzIGFuZCBhZGRpdGlvbnMuCisKKy4uCisKKy4uIGJwbzogODY0NAorLi4gZGF0ZTogNzk4NgorLi4gbm9uY2U6IEpXT182MQorLi4gc2VjdGlvbjogTGlicmFyeQorCitJbXByb3ZlZCBhY2N1cmFjeSBvZiBgYHRpbWVkZWx0YS50b3RhbF9zZWNvbmRzKClgYC4KKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA3OTg1CisuLiBub25jZTogTFlIWFZiCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1VzZSBDbGFuZyAyLjcncyBzdGF0aWMgYW5hbHl6ZXIgdG8gZmluZCBwbGFjZXMgdG8gY2xlYW4gdXAgc29tZSBjb2RlLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc5ODQKKy4uIG5vbmNlOiBqYmlESU0KKy4uIHNlY3Rpb246IExpYnJhcnkKKworQnVpbGQgdGhlIG9zc2F1ZGlvIGV4dGVuc2lvbiBvbiBHTlUva0ZyZWVCU0QuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogNzk4MworLi4gbm9uY2U6IE5DS01XbworLi4gc2VjdGlvbjogTGlicmFyeQorCitPbiBXaW5kb3dzLCBjdHlwZXMgbm8gbG9uZ2VyIGNoZWNrcyB0aGUgc3RhY2sgYmVmb3JlIGFuZCBhZnRlciBjYWxsaW5nIGEKK2ZvcmVpZ24gZnVuY3Rpb24uICBUaGlzIGFsbG93cyB1c2luZyB0aGUgdW5tb2RpZmllZCBsaWJmZmkgbGlicmFyeS4KKworLi4KKworLi4gYnBvOiA4NjcyCisuLiBkYXRlOiA3OTgyCisuLiBub25jZTogaHM5WW5jCisuLiBzZWN0aW9uOiBUZXN0cworCitBZGQgYSB6bGliIHRlc3QgZW5zdXJpbmcgdGhhdCBhbiBpbmNvbXBsZXRlIHN0cmVhbSBjYW4gYmUgaGFuZGxlZCBieSBhCitkZWNvbXByZXNzb3Igb2JqZWN0IHdpdGhvdXQgZXJyb3JzIChpdCByZXR1cm5zIGluY29tcGxldGUgdW5jb21wcmVzc2VkCitkYXRhKS4KKworLi4KKworLi4gYnBvOiA4NDkwCisuLiBkYXRlOiA3OTgxCisuLiBub25jZTogeUcxWHIwCisuLiBzZWN0aW9uOiBUZXN0cworCithc3luY29yZSBub3cgaGFzIGEgbW9yZSBzb2xpZCB0ZXN0IHN1aXRlIHdoaWNoIGFjdHVhbGx5IHRlc3RzIGl0cyBBUEkuCisKKy4uCisKKy4uIGJwbzogODU3NgorLi4gZGF0ZTogNzk4MAorLi4gbm9uY2U6IFVwNk1UQgorLi4gc2VjdGlvbjogVGVzdHMKKworUmVtb3ZlIHVzZSBvZiBmaW5kX3VudXNlZF9wb3J0KCkgaW4gdGVzdF9zbXRwbGliIGFuZCB0ZXN0X211bHRpcHJvY2Vzc2luZy4KK1BhdGNoIGJ5IFBhdWwgTW9vcmUuCisKKy4uCisKKy4uIGJwbzogNzQ0OQorLi4gZGF0ZTogNzk3OQorLi4gbm9uY2U6IGFzNzdKNQorLi4gc2VjdGlvbjogVGVzdHMKKworRml4IG1hbnkgdGVzdHMgdG8gc3VwcG9ydCBQeXRob24gY29tcGlsZWQgd2l0aG91dCB0aHJlYWQgc3VwcG9ydC4gUGF0Y2hlcword3JpdHRlbiBieSBKZXJyeSBTZXV0dGVyLgorCisuLgorCisuLiBicG86IDgxMDgKKy4uIGRhdGU6IDc5NzgKKy4uIG5vbmNlOiAtUGxNQVMKKy4uIHNlY3Rpb246IFRlc3RzCisKK3Rlc3RfZnRwbGliJ3Mgbm9uLWJsb2NraW5nIFNTTCBzZXJ2ZXIgbm93IGhhcyBwcm9wZXIgaGFuZGxpbmcgb2YgU1NMCitzaHV0ZG93bnMuCisKKy4uCisKKy4uIGJwbzogODYyNQorLi4gZGF0ZTogNzk3NworLi4gbm9uY2U6IEU0ZFNVVworLi4gc2VjdGlvbjogQnVpbGQKKworVHVybiBvZmYgb3B0aW1pemF0aW9uIGluIGBgLS13aXRoLXB5ZGVidWdgYCBidWlsZHMgd2l0aCBnY2MuIChPcHRpbWl6YXRpb24KK3dhcyB1bmludGVudGlvbmFsbHkgdHVybmVkIG9uIGluIGdjYyAtLXdpdGgtcHlkZWJ1ZyBidWlsZHMgaW4gMi43IGJldGExIGFzIGEKK3Jlc3VsdCBvZiB0aGUgaXNzdWUgIzE2Mjg0ODQgZml4LCBjb21iaW5lZCB3aXRoIGF1dG9jb25mJ3Mgc3RyYW5nZSBjaG9pY2Ugb2YKK2RlZmF1bHQgQ0ZMQUdTIHByb2R1Y2VkIGJ5IEFDX1BST0dfQ0MgZm9yIGdjYy4pCisKKy4uCisKKy4uIGJwbzogODUwOQorLi4gZGF0ZTogNzk3NgorLi4gbm9uY2U6IE44dkhIWgorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IHF1b3RpbmcgaW4gaGVscCBzdHJpbmdzIGFuZCBjb2RlIHNuaXBwZXRzIGluIGNvbmZpZ3VyZS5pbi4KKworLi4KKworLi4gYnBvOiAzNjQ2CisuLiBkYXRlOiA3OTc1CisuLiBub25jZTogVXlORGJtCisuLiBzZWN0aW9uOiBCdWlsZAorCitJdCBpcyBub3cgZWFzaWx5IHBvc3NpYmxlIHRvIGluc3RhbGwgYSBQeXRob24gZnJhbWV3b3JrIGludG8geW91ciBob21lCitkaXJlY3Rvcnkgb24gTWFjIE9TIFgsIHNlZSBNYWMvUkVBRE1FIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisuLgorCisuLiBicG86IDg1MTAKKy4uIGRhdGU6IDc5NzQKKy4uIG5vbmNlOiA4TWlVZlIKKy4uIHNlY3Rpb246IEJ1aWxkCisKK1VwZGF0ZSB0byBhdXRvY29uZiAyLjY1LgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDc5NzMKKy4uIG5vbmNlOiAxOEhsb0cKKy4uIHNlY3Rpb246IFdpbmRvd3MKKworVXBkYXRlIHRoZSBWaW0gc3ludGF4IGhpZ2hsaWdodCBmaWxlLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvMi43cmMxLnJzdCBiL01pc2MvTkVXUy5kLzIuN3JjMS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1NzhiNQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kLzIuN3JjMS5yc3QKQEAgLTAsMCArMSwzOTUgQEAKKy4uIGJwbzogODI3MQorLi4gZGF0ZTogODA3OAorLi4gbm9uY2U6IEhLd2MtaQorLi4gcmVsZWFzZSBkYXRlOiAyMDEwLTA2LTA1CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitkdXJpbmcgdGhlIGRlY29kaW5nIG9mIGFuIGludmFsaWQgVVRGLTggYnl0ZSBzZXF1ZW5jZSwgb25seSB0aGUgc3RhcnQgYnl0ZQorYW5kIHRoZSBjb250aW51YXRpb24gYnl0ZShzKSBhcmUgbm93IGNvbnNpZGVyZWQgaW52YWxpZCwgaW5zdGVhZCBvZiB0aGUKK251bWJlciBvZiBieXRlcyBzcGVjaWZpZWQgYnkgdGhlIHN0YXJ0IGJ5dGUuIEUuZy46CisnXHhmMVx4ODBBQicuZGVjb2RlKCd1dGYtOCcsICdyZXBsYWNlJykgbm93IHJldHVybnMgdSdcdWZmZmRBQicgYW5kIHJlcGxhY2VzCit3aXRoIFUrRkZGRCBvbmx5IHRoZSBzdGFydCBieXRlICgnXHhmMScpIGFuZCB0aGUgY29udGludWF0aW9uIGJ5dGUgKCdceDgwJykKK2V2ZW4gaWYgJ1x4ZjEnIGlzIHRoZSBzdGFydCBieXRlIG9mIGEgNC1ieXRlcyBzZXF1ZW5jZS4gUHJldmlvdXMgdmVyc2lvbnMKK3JldHVybmVkIGEgc2luZ2xlIHUnXHVmZmZkJy4KKworLi4KKworLi4gYnBvOiA4NjI3CisuLiBkYXRlOiA4MDc3CisuLiBub25jZTogbDJsNlpzCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitSZW1vdmUgYm9ndXMgIk92ZXJyaWRpbmcgX19jbXBfXyBibG9ja3MgaW5oZXJpdGFuY2Ugb2YgX19oYXNoX18gaW4gMy54Igord2FybmluZy4gIEFsc28gZml4ICJYWFggdW5kZXRlY3RlZCBlcnJvciIgdGhhdCBhcmlzZXMgZnJvbSB0aGUgIk92ZXJyaWRpbmcKK19fZXFfXyBibG9ja3MgaW5oZXJpdGFuY2UgLi4uIiB3YXJuaW5nIHdoZW4gdHVybmVkIGludG8gYW4gZXhjZXB0aW9uOiBpbgordGhpcyBjYXNlIHRoZSBleGNlcHRpb24gc2ltcGx5IGdldHMgaWdub3JlZC4KKworLi4KKworLi4gYnBvOiA4NzQ4CisuLiBkYXRlOiA4MDc2CisuLiBub25jZTogYkt5bU9CCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitGaXggdHdvIGlzc3VlcyB3aXRoIGNvbXBhcmlzb25zIGJldHdlZW4gY29tcGxleCBhbmQgaW50ZWdlciBvYmplY3RzLiAgKDEpCitUaGUgY29tcGFyaXNvbiBjb3VsZCBpbmNvcnJlY3RseSByZXR1cm4gVHJ1ZSBpbiBzb21lIGNhc2VzICgyKio1MysxID09Citjb21wbGV4KDIqKjUzKSA9PSAyKio1MyksIGJyZWFraW5nIHRyYW5zaXZpdHkgb2YgZXF1YWxpdHkuICgyKSBUaGUKK2NvbXBhcmlzb24gcmFpc2VkIGFuIE92ZXJmbG93RXJyb3IgZm9yIGxhcmdlIGludGVnZXJzLCBsZWFkaW5nIHRvCit1bnByZWRpY3RhYmxlIGV4Y2VwdGlvbnMgd2hlbiBjb21iaW5pbmcgaW50ZWdlcnMgYW5kIGNvbXBsZXggb2JqZWN0cyBpbiBzZXRzCitvciBkaWN0cy4KKworLi4KKworLi4gYnBvOiA1MjExCisuLiBkYXRlOiA4MDc1CisuLiBub25jZTogQk53bTU0CisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitJbXBsaWNpdCBjb2VyY2lvbiBmb3IgdGhlIGNvbXBsZXggdHlwZSBpcyBub3cgY29tcGxldGVseSByZW1vdmVkLiAgKENvZXJjaW9uCitmb3IgYXJpdGhtZXRpYyBvcGVyYXRpb25zIHdhcyBhbHJlYWR5IHJlbW92ZWQgaW4gMi43IGFscGhhIDQsIGJ1dCBjb2VyY2lvbgorZm9yIHJpY2ggY29tcGFyaXNvbnMgd2FzIGFjY2lkZW50YWxseSBsZWZ0IGluLikKKworLi4KKworLi4gYnBvOiAzNzk4CisuLiBkYXRlOiA4MDc0CisuLiBub25jZTogTDluMjdrCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitXcml0ZSBzeXMuZXhpdCgpIG1lc3NhZ2UgdG8gc3lzLnN0ZGVyciB0byB1c2Ugc3RkZXJyIGVuY29kaW5nIGFuZCBlcnJvcgoraGFuZGxlciwgaW5zdGVhZCBvZiB3cml0aW5nIHRvIHRoZSBDIHN0ZGVyciBmaWxlIGluIHV0Zi04CisKKy4uCisKKy4uIGJwbzogNzkwMgorLi4gZGF0ZTogODA3MworLi4gbm9uY2U6IEs3NUV6dworLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworV2hlbiB1c2luZyBleHBsaWNpdCByZWxhdGl2ZSBpbXBvcnQgc3ludGF4LCBkb24ndCB0cnkgaW1wbGljaXQgcmVsYXRpdmUKK2ltcG9ydCBzZW1hbnRpY3MuCisKKy4uCisKKy4uIGJwbzogNzA3OQorLi4gZGF0ZTogODA3MgorLi4gbm9uY2U6IHdFR0JkQgorLi4gc2VjdGlvbjogQ29yZSBhbmQgQnVpbHRpbnMKKworRml4IGEgcG9zc2libGUgY3Jhc2ggd2hlbiBjbG9zaW5nIGEgZmlsZSBvYmplY3Qgd2hpbGUgdXNpbmcgaXQgZnJvbSBhbm90aGVyCit0aHJlYWQuICBQYXRjaCBieSBEYW5pZWwgU3R1dHpiYWNoLgorCisuLgorCisuLiBicG86IDg4NjgKKy4uIGRhdGU6IDgwNzEKKy4uIG5vbmNlOiByZzNKLVcKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0ZpeCB0aGF0IGVuc3VyZXMgdGhhdCBweXRob24gc2NyaXB0cyBoYXZlIGFjY2VzcyB0byB0aGUgV2luZG93IFNlcnZlciBhZ2FpbgoraW4gYSBmcmFtZXdvcmsgYnVpbGQgb24gTWFjT1NYIDEwLjUgb3IgZWFybGllci4KKworLi4KKworLi4gYnBvOiA1NzUzCisuLiBkYXRlOiA4MDcwCisuLiBub25jZTogMjA1Mzc0CisuLiBzZWN0aW9uOiBDIEFQSQorCitBIG5ldyBDIEFQSSBmdW5jdGlvbiwgOmNmdW5jOmBQeVN5c19TZXRBcmd2RXhgLCBhbGxvd3MgZW1iZWRkZXJzIG9mIHRoZQoraW50ZXJwcmV0ZXIgdG8gc2V0IHN5cy5hcmd2IHdpdGhvdXQgYWxzbyBtb2RpZnlpbmcgc3lzLnBhdGguICBUaGlzIGhlbHBzIGZpeAorYENWRS0yMDA4LTU5ODMKKzxodHRwOi8vY3ZlLm1pdHJlLm9yZy9jZ2ktYmluL2N2ZW5hbWUuY2dpP25hbWU9Q1ZFLTIwMDgtNTk4Mz5gXy4KKworLi4KKworLi4gYnBvOiA4MzAyCisuLiBkYXRlOiA4MDY5CisuLiBub25jZTogVTV0Wl9sCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NraXBUZXN0IGluIHVuaXR0ZXN0LlRlc3RDYXNlLnNldFVwQ2xhc3Mgb3Igc2V0VXBNb2R1bGUgaXMgbm93IHJlcG9ydGVkIGFzIGEKK3NraXAgcmF0aGVyIHRoYW4gYW4gZXJyb3IuCisKKy4uCisKKy4uIGJwbzogODM1MQorLi4gZGF0ZTogODA2OAorLi4gbm9uY2U6IDhJNW9PLQorLi4gc2VjdGlvbjogTGlicmFyeQorCitFeGNlc3NpdmVseSBsYXJnZSBkaWZmcyBkdWUgdG8gdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0U2VxdWVuY2VFcXVhbCBhcmUgbm8KK2xvbmdlciBpbmNsdWRlZCBpbiBmYWlsdXJlIHJlcG9ydHMuCisKKy4uCisKKy4uIGJwbzogODg5OQorLi4gZGF0ZTogODA2NworLi4gbm9uY2U6IFE2b0lweQorLi4gc2VjdGlvbjogTGlicmFyeQorCit0aW1lLnN0cnVjdF90aW1lIG5vdyBoYXMgY2xhc3MgYW5kIGF0dHJpYnV0ZSBkb2NzdHJpbmdzLgorCisuLgorCisuLiBicG86IDQ0ODcKKy4uIGRhdGU6IDgwNjYKKy4uIG5vbmNlOiBXZFY4NmUKKy4uIHNlY3Rpb246IExpYnJhcnkKKworZW1haWwgbm93IGFjY2VwdHMgYXMgY2hhcnNldCBhbGlhc2VzIGFsbCBjb2RlYyBhbGlhc2VzIGFjY2VwdGVkIGJ5IHRoZQorY29kZWNzIG1vZHVsZS4KKworLi4KKworLi4gYnBvOiA2NDcwCisuLiBkYXRlOiA4MDY1CisuLiBub25jZTogZVZUbGdVCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Ryb3AgVU5DIHByZWZpeCBpbiBGaXhUay4KKworLi4KKworLi4gYnBvOiA1NjEwCisuLiBkYXRlOiA4MDY0CisuLiBub25jZTogM3gwTzJjCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZlZWRwYXJzZXIgbm8gbG9uZ2VyIGVhdHMgZXh0cmEgY2hhcmFjdGVycyBhdCB0aGUgZW5kIG9mIGEgYm9keSBwYXJ0IGlmIHRoZQorYm9keSBwYXJ0IGVuZHMgd2l0aCBhIFxyXG4uCisKKy4uCisKKy4uIGJwbzogODgzMworLi4gZGF0ZTogODA2MworLi4gbm9uY2U6IFI5SkJaQQorLi4gc2VjdGlvbjogTGlicmFyeQorCit0YXJmaWxlIGNyZWF0ZWQgaGFyZCBsaW5rIGVudHJpZXMgd2l0aCBhIHNpemUgZmllbGQgIT0gMCBieSBtaXN0YWtlLgorCisuLgorCisuLiBicG86IDEzNjgyNDcKKy4uIGRhdGU6IDgwNjIKKy4uIG5vbmNlOiBPVkQ1emIKKy4uIHNlY3Rpb246IExpYnJhcnkKKworc2V0X2NoYXJzZXQgKGFuZCB0aGVyZWZvcmUgTUlNRVRleHQpIG5vdyBhdXRvbWF0aWNhbGx5IGVuY29kZXMgYSB1bmljb2RlCitfcGF5bG9hZCB0byB0aGUgb3V0cHV0X2NoYXJzZXQuCisKKy4uCisKKy4uIGJwbzogNzE1MAorLi4gZGF0ZTogODA2MQorLi4gbm9uY2U6IGtCVHpuSgorLi4gc2VjdGlvbjogTGlicmFyeQorCitSYWlzZSBPdmVyZmxvd0Vycm9yIGlmIHRoZSByZXN1bHQgb2YgYWRkaW5nIG9yIHN1YnRyYWN0aW5nIHRpbWVkZWx0YSBmcm9tCitkYXRlIG9yIGRhdGV0aW1lIGZhbGxzIG91dHNpZGUgb2YgdGhlIE1JTllFQVI6TUFYWUVBUiByYW5nZS4KKworLi4KKworLi4gYnBvOiA2NjYyCisuLiBkYXRlOiA4MDYwCisuLiBub25jZToganBPMVFYCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBwYXJzaW5nIG9mIG1hbGZvcm1hdHRlZCBjaGFycmVmICgmI2JhZDspLCBwYXRjaCB3cml0dGVuIGJ5IEZyZWRyaWsgSMOlw6VyZAorCisuLgorCisuLiBicG86IDgwMTYKKy4uIGRhdGU6IDgwNTkKKy4uIG5vbmNlOiB2QW1kcnoKKy4uIHNlY3Rpb246IExpYnJhcnkKKworQWRkIHRoZSBDUDg1OCBjb2RlYy4KKworLi4KKworLi4gYnBvOiAzOTI0CisuLiBkYXRlOiA4MDU4CisuLiBub25jZTogLVcxZjFCCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0lnbm9yZSBjb29raWVzIHdpdGggaW52YWxpZCAidmVyc2lvbiIgZmllbGQgaW4gY29va2llbGliLgorCisuLgorCisuLiBicG86IDYyNjgKKy4uIGRhdGU6IDgwNTcKKy4uIG5vbmNlOiBmUWdKeEwKKy4uIHNlY3Rpb246IExpYnJhcnkKKworRml4IHNlZWsoKSBtZXRob2Qgb2YgY29kZWNzLm9wZW4oKSwgZG9uJ3QgcmVhZCBvciB3cml0ZSB0aGUgQk9NIHR3aWNlIGFmdGVyCitzZWVrKDApLiBGaXggYWxzbyByZXNldCgpIG1ldGhvZCBvZiBjb2RlY3MsIFVURi0xNiwgVVRGLTMyIGFuZCBTdHJlYW1Xcml0ZXIKK2NsYXNzZXMuCisKKy4uCisKKy4uIGJwbzogNTY0MAorLi4gZGF0ZTogODA1NgorLi4gbm9uY2U6IGRwYzZUWgorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggU2hpZnQtSklTIGluY3JlbWVudGFsIGVuY29kZXIgZm9yIGVycm9yIGhhbmRsZXJzIGRpZmZlcmVudCB0aGFuCisnc3RyaWN0Jy4KKworLi4KKworLi4gYnBvOiA4NzgyCisuLiBkYXRlOiA4MDU1CisuLiBub25jZTogYXNMdU9WCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0FkZCBhIHRyYWlsaW5nIG5ld2xpbmUgaW4gbGluZWNhY2hlLnVwZGF0ZWNhY2hlIHRvIHRoZSBsYXN0IGxpbmUgb2YgZmlsZXMKK3dpdGhvdXQgb25lLgorCisuLgorCisuLiBicG86IDg3MjkKKy4uIGRhdGU6IDgwNTQKKy4uIG5vbmNlOiBOcV9VaGYKKy4uIHNlY3Rpb246IExpYnJhcnkKKworUmV0dXJuIE5vdEltcGxlbWVudGVkIGZyb20gYGBjb2xsZWN0aW9ucy5NYXBwaW5nLl9fZXFfXygpYGAgd2hlbiBjb21wYXJpbmcKK3RvIGEgbm9uLW1hcHBpbmcuCisKKy4uCisKKy4uIGJwbzogODc1OQorLi4gZGF0ZTogODA1MworLi4gbm9uY2U6IDB5RGx1NworLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXggdXNlciBwYXRocyBpbiBzeXNjb25maWcgZm9yIHBvc2l4IGFuZCBvczIgc2NoZW1lcy4KKworLi4KKworLi4gYnBvOiAxMjg1MDg2CisuLiBkYXRlOiA4MDUyCisuLiBub25jZTogVThCdFhSCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK1NwZWVkIHVwIGBgdXJsbGliLnF1b3RlKClgYCBhbmQgdXJsbGliLnVucXVvdGUgZm9yIHNpbXBsZSBjYXNlcy4KKworLi4KKworLi4gYnBvOiA4Njg4CisuLiBkYXRlOiA4MDUxCisuLiBub25jZTogZ1VKcW1JCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0Rpc3R1dGlscyBub3cgcmVjYWxjdWxhdGVzIE1BTklGRVNUIGV2ZXJ5IHRpbWUuCisKKy4uCisKKy4uIGJwbzogNTA5OQorLi4gZGF0ZTogODA1MAorLi4gbm9uY2U6IGttakZhVQorLi4gc2VjdGlvbjogTGlicmFyeQorCitUaGUgYGBfX2RlbF9fKClgYCBtZXRob2Qgb2YgYGBzdWJwcm9jZXNzLlBvcGVuYGAgKGFuZCB0aGUgbWV0aG9kcyBpdCBjYWxscykKK3JlZmVyZW5jZWQgZ2xvYmFsIG9iamVjdHMsIGNhdXNpbmcgZXJyb3JzIHRvIHBvcCB1cCBkdXJpbmcgaW50ZXJwcmV0ZXIKK3NodXRkb3duLgorCisuLgorCisuLiBicG86IDczODQKKy4uIGRhdGU6IDgwNDkKKy4uIG5vbmNlOiBFMTZ6cmMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworSWYgdGhlIHN5c3RlbSByZWFkbGluZSBsaWJyYXJ5IGlzIGxpbmtlZCBhZ2FpbnN0IG5jdXJzZXMsIHRoZSBjdXJzZXMgbW9kdWxlCittdXN0IGJlIGxpbmtlZCBhZ2FpbnN0IG5jdXJzZXMgYXMgd2VsbC4gT3RoZXJ3aXNlIGl0IGlzIG5vdCBzYWZlIHRvIGxvYWQKK2JvdGggdGhlIHJlYWRsaW5lIGFuZCBjdXJzZXMgbW9kdWxlcyBpbiBhbiBhcHBsaWNhdGlvbi4KKworLi4KKworLi4gYnBvOiAyODEwCisuLiBkYXRlOiA4MDQ4CisuLiBub25jZTogRlN0MFkwCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK0ZpeCBjYXNlcyB3aGVyZSB0aGUgV2luZG93cyByZWdpc3RyeSBBUEkgcmV0dXJucyBFUlJPUl9NT1JFX0RBVEEsIHJlcXVpcmluZworYSByZS10cnkgaW4gb3JkZXIgdG8gZ2V0IHRoZSBjb21wbGV0ZSByZXN1bHQuCisKKy4uCisKKy4uIGJwbzogODY3NAorLi4gZGF0ZTogODA0NworLi4gbm9uY2U6IFEya2ZXWAorLi4gc2VjdGlvbjogTGlicmFyeQorCitGaXhlZCBhIG51bWJlciBvZiBpbmNvcnJlY3Qgb3IgdW5kZWZpbmVkLWJlaGF2aW91ci1pbmR1Y2luZyBvdmVyZmxvdyBjaGVja3MKK2luIHRoZSBgYGF1ZGlvb3BgYCBtb2R1bGUuCisKKy4uCisKKy4uIGJwbzogODg4OQorLi4gZGF0ZTogODA0NgorLi4gbm9uY2U6IDlJb1Z6QQorLi4gc2VjdGlvbjogVGVzdHMKKwordGVzdF9zdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCByZXdyaXR0ZW4gc28gdGhhdCB0aGUgbmV3IGNoZWNrcyBhbHNvIHdvcmsKK29uIEZyZWVCU0QsIHdoaWNoIGxhY2tzIEVBSV9OT0RBVEEuCisKKy4uCisKKy4uIGJwbzogODgzNQorLi4gZGF0ZTogODA0NQorLi4gbm9uY2U6IEZKekp2SgorLi4gc2VjdGlvbjogVGVzdHMKKwordGVzdF9zdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgpIGNhdGNoZXMgZ2FpZXJyb3IoRUFJX05PTkFNRSkgYW5kCitnYWllcnJvcihFQUlfTk9EQVRBKQorCisuLgorCisuLiBicG86IDc0NDkKKy4uIGRhdGU6IDgwNDQKKy4uIG5vbmNlOiBMZUt5ZF8KKy4uIHNlY3Rpb246IFRlc3RzCisKK1NraXAgdGVzdF9zb2NrZXRzZXJ2ZXIgaWYgdGhyZWFkaW5nIHN1cHBvcnQgaXMgZGlzYWJsZWQKKworLi4KKworLi4gYnBvOiAwCisuLiBkYXRlOiA4MDQzCisuLiBub25jZTogYl9uYTFhCisuLiBzZWN0aW9uOiBUZXN0cworCitPbiBkYXJ3aW4sIGBgdGVzdF9zaXRlYGAgYXNzdW1lZCB0aGF0IGEgZnJhbWV3b3JrIGJ1aWxkIHdhcyBiZWluZyB1c2VkLAorbGVhZGluZyB0byBhIGZhaWx1cmUgd2hlcmUgZm91ciBkaXJlY3RvcmllcyB3ZXJlIGV4cGVjdGVkIGZvciBzaXRlLXBhY2thZ2VzCitpbnN0ZWFkIG9mIHR3byBpbiBhIG5vbi1mcmFtZXdvcmsgYnVpbGQuCisKKy4uCisKKy4uIGJwbzogMAorLi4gZGF0ZTogODA0MgorLi4gbm9uY2U6IGctdjdmcworLi4gc2VjdGlvbjogQnVpbGQKKworRGlzcGxheSBpbnN0YWxsZXIgd2FybmluZyB0aGF0IFdpbmRvd3MgMjAwMCB3b24ndCBiZSBzdXBwb3J0ZWQgaW4gZnV0dXJlCityZWxlYXNlcy4KKworLi4KKworLi4gYnBvOiAxNzU5MTY5CisuLiBkYXRlOiA4MDQxCisuLiBub25jZTogTlcwMzVtCisuLiBzZWN0aW9uOiBCdWlsZAorCitEcm9wIF9YT1BFTl9TT1VSQ0Ugb24gU29sYXJpcywgZGVmaW5lIGl0IGZvciBtdWx0aXByb2Nlc3Npbmcgb25seS4gKFNlZQorYWxzbzogYnBvLTg4NjQpCisKKy4uCisKKy4uIGJwbzogNTQ2NAorLi4gZGF0ZTogODA0MAorLi4gbm9uY2U6IFIxcGo5WQorLi4gc2VjdGlvbjogVG9vbHMvRGVtb3MKKworSW1wbGVtZW50IHBsdXJhbCBmb3JtcyBpbiBtc2dmbXQucHkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC8yLjdyYzIucnN0IGIvTWlzYy9ORVdTLmQvMi43cmMyLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWQ4MDc1Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvMi43cmMyLnJzdApAQCAtMCwwICsxLDEyNSBAQAorLi4gYnBvOiA5MDU4CisuLiBkYXRlOiA4MDkxCisuLiBub25jZTogbDM0SG1nCisuLiByZWxlYXNlIGRhdGU6IDIwMTAtMDYtMjAKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1JlbW92ZSBhc3NlcnRpb25zIGFib3V0IElOVF9NQVggaW4gVW5pY29kZURlY29kZUVycm9yLgorCisuLgorCisuLiBicG86IDgyMDIKKy4uIGRhdGU6IDgwOTAKKy4uIG5vbmNlOiBELWE0LWkKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK1ByZXZpb3VzIGNoYW5nZSB0byBgYHN5cy5hcmd2WzBdYGAgaGFuZGxpbmcgZm9yIC1tIGNvbW1hbmQgbGluZSBvcHRpb24KK3JldmVydGVkIGR1ZSB0byB1bmludGVuZGVkIHNpZGUgZWZmZWN0cyBvbiBoYW5kbGluZyBvZiBgYHN5cy5wYXRoYGAuIFNlZQordHJhY2tlciBpc3N1ZSBmb3IgZGV0YWlscy4KKworLi4KKworLi4gYnBvOiA4OTQxCisuLiBkYXRlOiA4MDg5CisuLiBub25jZTogcDZNVW9PCisuLiBzZWN0aW9uOiBDb3JlIGFuZCBCdWlsdGlucworCitkZWNvZGluZyBiaWcgZW5kaWFuIFVURi0zMiBkYXRhIGluIFVDUy0yIGJ1aWxkcyBjb3VsZCBjcmFzaCB0aGUgaW50ZXJwcmV0ZXIKK3dpdGggY2hhcmFjdGVycyBvdXRzaWRlIHRoZSBCYXNpYyBNdWx0aWxpbmd1YWwgUGxhbmUgKGhpZ2hlciB0aGFuIDB4MTAwMDApLgorCisuLgorCisuLiBicG86IDAKKy4uIGRhdGU6IDgwODgKKy4uIG5vbmNlOiBkaUtyTGMKKy4uIHNlY3Rpb246IENvcmUgYW5kIEJ1aWx0aW5zCisKK0luIHRoZSB1bmljb2RlL3N0ci5mb3JtYXQoKSwgcmFpc2UgYSBWYWx1ZUVycm9yIHdoZW4gaW5kZXhlcyB0byBhcmd1bWVudHMKK2FyZSB0b28gbGFyZ2UuCisKKy4uCisKKy4uIGJwbzogODg1NAorLi4gZGF0ZTogODA4NworLi4gbm9uY2U6IGdPanN0WAorLi4gc2VjdGlvbjogQnVpbGQKKworRml4IGZpbmRpbmcgVmlzdWFsIFN0dWRpbyAyMDA4IG9uIFdpbmRvd3MgeDY0LgorCisuLgorCisuLiBicG86IDY1ODkKKy4uIGRhdGU6IDgwODYKKy4uIG5vbmNlOiBuRWpnR2MKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY2xlYW51cCBhc3luY29yZS5zb2NrZXRfbWFwIGluIGNhc2Ugc210cGQuU01UUFNlcnZlciBjb25zdHJ1Y3RvciByYWlzZXMgYW4KK2V4Y2VwdGlvbi4KKworLi4KKworLi4gYnBvOiA4OTU5CisuLiBkYXRlOiA4MDg1CisuLiBub25jZTogbE83dTJPCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2ZpeCByZWdyZXNzaW9uIGNhdXNlZCBieSB1c2luZyB1bm1vZGlmaWVkIGxpYmZmaSBsaWJyYXJ5IG9uIFdpbmRvd3MuICBjdHlwZXMKK2RvZXMgbm93IGFnYWluIGNoZWNrIHRoZSBzdGFjayBiZWZvcmUgYW5kIGFmdGVyIGNhbGxpbmcgZm9yZWlnbiBmdW5jdGlvbnMuCisKKy4uCisKKy4uIGJwbzogODcyMAorLi4gZGF0ZTogODA4NAorLi4gbm9uY2U6IHJnTGh2VQorLi4gc2VjdGlvbjogTGlicmFyeQorCitmaXggcmVncmVzc2lvbiBjYXVzZWQgYnkgZml4IGZvciAjNDA1MCBieSBtYWtpbmcgZ2V0c291cmNlZmlsZSBzbWFydCBlbm91Z2gKK3RvIGZpbmQgc291cmNlIGZpbGVzIGluIHRoZSBsaW5lY2FjaGUuCisKKy4uCisKKy4uIGJwbzogODk4NgorLi4gZGF0ZTogODA4MworLi4gbm9uY2U6IGYzMUxNNQorLi4gc2VjdGlvbjogTGlicmFyeQorCittYXRoLmVyZmMgd2FzIGluY29ycmVjdGx5IHJhaXNpbmcgT3ZlcmZsb3dFcnJvciBmb3IgdmFsdWVzIGJldHdlZW4gLTI3LjMgYW5kCistMzAuMCBvbiBzb21lIHBsYXRmb3Jtcy4KKworLi4KKworLi4gYnBvOiA4OTI0CisuLiBkYXRlOiA4MDgyCisuLiBub25jZTogRU5JNVlQCisuLiBzZWN0aW9uOiBMaWJyYXJ5CisKK2xvZ2dpbmc6IEltcHJvdmVkIGVycm9yIGhhbmRsaW5nIGZvciBVbmljb2RlIGluIGV4Y2VwdGlvbiB0ZXh0LgorCisuLgorCisuLiBicG86IDg5NDgKKy4uIGRhdGU6IDgwODEKKy4uIG5vbmNlOiBCSUlpUWMKKy4uIHNlY3Rpb246IExpYnJhcnkKKworY2xlYW51cCBmdW5jdGlvbnMgYW5kIGNsYXNzIC8gbW9kdWxlIHNldHVwcyBhbmQgdGVhcmRvd25zIGFyZSBub3cgaG9ub3JlZCBpbgordW5pdHRlc3QgZGVidWcgbWV0aG9kcy4KKworLi4KKworLi4gYnBvOiA4OTA5CisuLiBkYXRlOiA4MDgwCisuLiBub25jZTogT2ZVNmxJCisuLiBzZWN0aW9uOiBEb2N1bWVudGF0aW9uCisKK0FkZGVkIHRoZSBzaXplIG9mIHRoZSBiaXRtYXAgdXNlZCBpbiB0aGUgaW5zdGFsbGVyIGNyZWF0ZWQgYnkgZGlzdHV0aWxzJworYmRpc3Rfd2luaW5zdC4gUGF0Y2ggYnkgQW5hdG9seSBUZWNodG9uaWsuCisKKy4uCisKKy4uIGJwbzogODM2MgorLi4gZGF0ZTogODA3OQorLi4gbm9uY2U6IEtzRy0zRQorLi4gc2VjdGlvbjogV2luZG93cworCitBZGQgbWFpbnRhaW5lcnMucnN0OiBsaXN0IG9mIG1vZHVsZSBtYWludGFpbmVycwpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9CdWlsZC8yMDE4LTA2LTE1LTE4LTE4LTE2LmJwby0zMDM0NS5qLXhSRTEucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9CdWlsZC8yMDE4LTA2LTE1LTE4LTE4LTE2LmJwby0zMDM0NS5qLXhSRTEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZGIwOWIKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0J1aWxkLzIwMTgtMDYtMTUtMTgtMTgtMTYuYnBvLTMwMzQ1LmoteFJFMS5yc3QKQEAgLTAsMCArMSBAQAorQWRkIC1nIHRvIExERkxBR1Mgd2hlbiBjb21waWxpbmcgd2l0aCBMVE8gdG8gZ2V0IGRlYnVnIHN5bWJvbHMuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0J1aWxkL1JFQURNRS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0J1aWxkL1JFQURNRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQyZDJjMQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvQnVpbGQvUkVBRE1FLnJzdApAQCAtMCwwICsxIEBACitQdXQgbmV3cyBlbnRyeSBgYGJsdXJiYGAgZmlsZXMgZm9yIHRoZSAqQnVpbGQqIHNlY3Rpb24gaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0MgQVBJLzIwMTgtMDctMDktMTEtMzktNTQuYnBvLTIzOTI3LnBERmt4Yi5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0MgQVBJLzIwMTgtMDctMDktMTEtMzktNTQuYnBvLTIzOTI3LnBERmt4Yi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UyYWM2YwotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvQyBBUEkvMjAxOC0wNy0wOS0xMS0zOS01NC5icG8tMjM5MjcucERGa3hiLnJzdApAQCAtMCwwICsxLDIgQEAKK0ZpeGVkIDpleGM6YFN5c3RlbUVycm9yYCBpbiA6YzpmdW5jOmBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNgIHdoZW4gdGhlCitgYHcqYGAgZm9ybWF0IHVuaXQgaXMgdXNlZCBmb3Igb3B0aW9uYWwgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9DIEFQSS8yMDE4LTA3LTI2LTEyLTI0LTI5LmJwby0zNDIyOS5TdXBDWksucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9DIEFQSS8yMDE4LTA3LTI2LTEyLTI0LTI5LmJwby0zNDIyOS5TdXBDWksucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNWIzNGIKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0MgQVBJLzIwMTgtMDctMjYtMTItMjQtMjkuYnBvLTM0MjI5LlN1cENaSy5yc3QKQEAgLTAsMCArMSwyIEBACitDaGVjayBzdGFydCBhbmQgc3RvcCBvZiBzbGljZSBvYmplY3QgdG8gYmUgbG9uZyB3aGVuIHRoZXkgYXJlIG5vdCBpbnQgaW4KKzpjOmZ1bmM6YFB5U2xpY2VfR2V0SW5kaWNlc2AuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0MgQVBJL1JFQURNRS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0MgQVBJL1JFQURNRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWEwNGY3NgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvQyBBUEkvUkVBRE1FLnJzdApAQCAtMCwwICsxIEBACitQdXQgbmV3cyBlbnRyeSBgYGJsdXJiYGAgZmlsZXMgZm9yIHRoZSAqQyBBUEkqIHNlY3Rpb24gaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTctMTAtMDctMTAtMTMtMTUuYnBvLTI1ODYyLkZQWUJBNS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTctMTAtMDctMTAtMTMtMTUuYnBvLTI1ODYyLkZQWUJBNS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg3MTYzNgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxNy0xMC0wNy0xMC0xMy0xNS5icG8tMjU4NjIuRlBZQkE1LnJzdApAQCAtMCwwICsxLDIgQEAKK0ZpeCBhc3NlcnRpb24gZmFpbHVyZXMgaW4gdGhlIGBgdGVsbCgpYGAgbWV0aG9kIG9mIGBgaW8uVGV4dElPV3JhcHBlcmBgLgorUGF0Y2ggYnkgWmFja2VyeSBTcHl0ei4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wMy0xNC0yMS00Mi0xNy5icG8tMjU3NTAubHhna1F6LnJzdCBiL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wMy0xNC0yMS00Mi0xNy5icG8tMjU3NTAubHhna1F6LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWZmYjM2Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTAzLTE0LTIxLTQyLTE3LmJwby0yNTc1MC5seGdrUXoucnN0CkBAIC0wLDAgKzEsMiBAQAorRml4IHJhcmUgUHl0aG9uIGNyYXNoIGR1ZSB0byBiYWQgcmVmY291bnRpbmcgaW4gYGB0eXBlX2dldGF0dHJvKClgYCBpZiBhCitkZXNjcmlwdG9yIGRlbGV0ZXMgaXRzZWxmIGZyb20gdGhlIGNsYXNzLiBQYXRjaCBieSBKZXJvZW4gRGVtZXllci4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wNS0wMi0wOC0zNi0wMy5icG8tMzMzOTEuejRhN3JiLnJzdCBiL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wNS0wMi0wOC0zNi0wMy5icG8tMzMzOTEuejRhN3JiLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjE3YWE0Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA1LTAyLTA4LTM2LTAzLmJwby0zMzM5MS56NGE3cmIucnN0CkBAIC0wLDAgKzEgQEAKK0ZpeCBhIGxlYWsgaW4gc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlKCkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDUtMjMtMjAtNDYtMTQuYnBvLTMzNjIyLnhQdWNPOS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDUtMjMtMjAtNDYtMTQuYnBvLTMzNjIyLnhQdWNPOS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU4OWI0NQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wNS0yMy0yMC00Ni0xNC5icG8tMzM2MjIueFB1Y085LnJzdApAQCAtMCwwICsxLDQgQEAKK0ZpeGVkIGEgbGVhayB3aGVuIHRoZSBnYXJiYWdlIGNvbGxlY3RvciBmYWlscyB0byBhZGQgYW4gb2JqZWN0IHdpdGggdGhlCitgYF9fZGVsX19gYCBtZXRob2Qgb3IgcmVmZXJlbmNlZCBieSBpdCBpbnRvIHRoZSA6ZGF0YTpgZ2MuZ2FyYmFnZWAgbGlzdC4KKzpjOmZ1bmM6YFB5R0NfQ29sbGVjdGAgY2FuIG5vdyBiZSBjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gaXMgc2V0IGFuZAorcHJlc2VydmVzIGl0LgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA1LTI1LTE4LTIwLTA0LmJwby0zMzY0NS5HWUdJUEgucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA1LTI1LTE4LTIwLTA0LmJwby0zMzY0NS5HWUdJUEgucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYzQ3ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDUtMjUtMTgtMjAtMDQuYnBvLTMzNjQ1LkdZR0lQSC5yc3QKQEAgLTAsMCArMSwyIEBACitGaXhlZCBhbiAidW5rbm93biBwYXJzaW5nIGVycm9yIiBvbiBwYXJzaW5nIHRoZSAiPD4iIG9wZXJhdG9yIHdoZW4gcnVuCitQeXRob24gd2l0aCBib3RoIG9wdGlvbnMgYGAtM2BgIGFuZCBgYC1XZWBgLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA1LTI4LTEyLTI4LTUzLmJwby0zMDY1NC45ZkRKeWUucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA1LTI4LTEyLTI4LTUzLmJwby0zMDY1NC45ZkRKeWUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxYzI3ZGFhCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA1LTI4LTEyLTI4LTUzLmJwby0zMDY1NC45ZkRKeWUucnN0CkBAIC0wLDAgKzEsMiBAQAorRml4ZWQgcmVzZXQgb2YgdGhlIFNJR0lOVCBoYW5kbGVyIHRvIFNJR19ERkwgb24gaW50ZXJwcmV0ZXIgc2h1dGRvd24gZXZlbgord2hlbiB0aGVyZSB3YXMgYSBjdXN0b20gaGFuZGxlciBzZXQgcHJldmlvdXNseS4gUGF0Y2ggYnkgUGhpbGlwcCBLZXJsaW5nLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA2LTI1LTIwLTQyLTQ0LmJwby0zMzk1Ni4xcW9Ud0QucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA2LTI1LTIwLTQyLTQ0LmJwby0zMzk1Ni4xcW9Ud0QucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MTQwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDYtMjUtMjAtNDItNDQuYnBvLTMzOTU2LjFxb1R3RC5yc3QKQEAgLTAsMCArMSBAQAorVXBkYXRlIHZlbmRvcmVkIEV4cGF0IGxpYnJhcnkgY29weSB0byB2ZXJzaW9uIDIuMi41LgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA3LTEwLTExLTI0LTE2LmJwby0zNDA4MC44dDdQdE8ucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA3LTEwLTExLTI0LTE2LmJwby0zNDA4MC44dDdQdE8ucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYzUzY2MKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDctMTAtMTEtMjQtMTYuYnBvLTM0MDgwLjh0N1B0Ty5yc3QKQEAgLTAsMCArMSwyIEBACitGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBjb21waWxlciB3aGVuIGl0IHJhaXNlZCBzb21lIHVuY29tbW9uIGVycm9ycworZHVyaW5nIHRva2VuaXppbmcuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDctMTQtMDgtNTgtNDYuYnBvLTM0MDY4Ljl4Zk01NS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDctMTQtMDgtNTgtNDYuYnBvLTM0MDY4Ljl4Zk01NS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVkOGZmOQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wNy0xNC0wOC01OC00Ni5icG8tMzQwNjguOXhmTTU1LnJzdApAQCAtMCwwICsxLDMgQEAKK0luIDptZXRoOmBpby5JT0Jhc2UuY2xvc2VgLCBlbnN1cmUgdGhhdCB0aGUgOmF0dHI6YH5pby5JT0Jhc2UuY2xvc2VkYAorYXR0cmlidXRlIGlzIG5vdCBzZXQgd2l0aCBhIGxpdmUgZXhjZXB0aW9uLiAgUGF0Y2ggYnkgWmFja2VyeSBTcHl0eiBhbmQgU2VyaGl5CitTdG9yY2hha2EuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDctMTgtMjMtNDAtMzIuYnBvLTI1OTQzLlpnZjk5eS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDctMTgtMjMtNDAtMzIuYnBvLTI1OTQzLlpnZjk5eS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY0ZTY1YwotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wNy0xOC0yMy00MC0zMi5icG8tMjU5NDMuWmdmOTl5LnJzdApAQCAtMCwwICsxLDIgQEAKK0ZpeCBwb3RlbnRpYWwgaGVhcCBjb3JydXB0aW9uIGluIHRoZSA6bW9kOmBic2RkYmAgbW9kdWxlLiAgUGF0Y2ggYnkgWmFja2VyeQorU3B5dHouCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDctMjUtMjItNDctMTkuYnBvLTI1MDgzLkhUX2hYaC5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDctMjUtMjItNDctMTkuYnBvLTI1MDgzLkhUX2hYaC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGRjNDRjNAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wNy0yNS0yMi00Ny0xOS5icG8tMjUwODMuSFRfaFhoLnJzdApAQCAtMCwwICsxLDIgQEAKK0FkZGluZyBJL08gZXJyb3IgY2hlY2tpbmcgd2hlbiByZWFkaW5nIC5weSBmaWxlcyBhbmQgYWJvcnRpbmcgaW1wb3J0aW5nIG9uCitlcnJvci4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wOC0xNC0wMy01Mi00My5icG8tMzQ0MDAuQUpEMGJ6LnJzdCBiL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wOC0xNC0wMy01Mi00My5icG8tMzQ0MDAuQUpEMGJ6LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjhmNWEyCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy8yMDE4LTA4LTE0LTAzLTUyLTQzLmJwby0zNDQwMC5BSkQwYnoucnN0CkBAIC0wLDAgKzEgQEAKK0ZpeCB1bmRlZmluZWQgYmVoYXZpb3IgaW4gcGFyc2V0b2suYy4gIFBhdGNoIGJ5IFphY2tlcnkgU3B5dHouCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDgtMjMtMjEtMzItMjcuYnBvLTE4NTYwLjVxX2MxQy5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0NvcmUgYW5kIEJ1aWx0aW5zLzIwMTgtMDgtMjMtMjEtMzItMjcuYnBvLTE4NTYwLjVxX2MxQy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGMxZjA2MAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvMjAxOC0wOC0yMy0yMS0zMi0yNy5icG8tMTg1NjAuNXFfYzFDLnJzdApAQCAtMCwwICsxIEBACitGaXggcG90ZW50aWFsIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBpbiBzdW0oKS4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvUkVBRE1FLnJzdCBiL01pc2MvTkVXUy5kL25leHQvQ29yZSBhbmQgQnVpbHRpbnMvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmI4YzNlCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9Db3JlIGFuZCBCdWlsdGlucy9SRUFETUUucnN0CkBAIC0wLDAgKzEgQEAKK1B1dCBuZXdzIGVudHJ5IGBgYmx1cmJgYCBmaWxlcyBmb3IgdGhlICpDb3JlIGFuZCBCdWlsdGlucyogc2VjdGlvbiBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvRG9jdW1lbnRhdGlvbi8yMDE4LTA1LTE0LTIwLTA4LTU4LmJwby0zMzUwMy5XdnQwcWcucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9Eb2N1bWVudGF0aW9uLzIwMTgtMDUtMTQtMjAtMDgtNTguYnBvLTMzNTAzLld2dDBxZy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcwMjVjMwotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvRG9jdW1lbnRhdGlvbi8yMDE4LTA1LTE0LTIwLTA4LTU4LmJwby0zMzUwMy5XdnQwcWcucnN0CkBAIC0wLDAgKzEgQEAKK0ZpeCBicm9rZW4gcHlwaSBsaW5rCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0RvY3VtZW50YXRpb24vUkVBRE1FLnJzdCBiL01pc2MvTkVXUy5kL25leHQvRG9jdW1lbnRhdGlvbi9SRUFETUUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNWYwYWMKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0RvY3VtZW50YXRpb24vUkVBRE1FLnJzdApAQCAtMCwwICsxIEBACitQdXQgbmV3cyBlbnRyeSBgYGJsdXJiYGAgZmlsZXMgZm9yIHRoZSAqRG9jdW1lbnRhdGlvbiogc2VjdGlvbiBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvSURMRS8yMDE4LTA2LTE2LTIxLTU0LTQ1LmJwby0zMzg1Ni5USDhXSFUucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9JRExFLzIwMTgtMDYtMTYtMjEtNTQtNDUuYnBvLTMzODU2LlRIOFdIVS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU4Zjk2ZQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvSURMRS8yMDE4LTA2LTE2LTIxLTU0LTQ1LmJwby0zMzg1Ni5USDhXSFUucnN0CkBAIC0wLDAgKzEgQEAKK0FkZCAiaGVscCIgaW4gdGhlIHdlbGNvbWUgbWVzc2FnZSBvZiBJRExFCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0lETEUvMjAxOC0wOC0wMS0yMy0yNS0zOC5icG8tMzQxMjAuSGdzSXotLnJzdCBiL01pc2MvTkVXUy5kL25leHQvSURMRS8yMDE4LTA4LTAxLTIzLTI1LTM4LmJwby0zNDEyMC5IZ3NJei0ucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5OTU0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0lETEUvMjAxOC0wOC0wMS0yMy0yNS0zOC5icG8tMzQxMjAuSGdzSXotLnJzdApAQCAtMCwwICsxIEBACitGaXggdW5yZXNwb25zaXZlbmVzcyBhZnRlciBjbG9zaW5nIGNlcnRhaW4gd2luZG93cyBhbmQgZGlhbG9ncy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0lETEUvMjAxOC0wOC0wMi0yMi0xNi00Mi5icG8tMzQyNzUuSXUwZDd0LnJzdCBiL01pc2MvTkVXUy5kL25leHQvSURMRS8yMDE4LTA4LTAyLTIyLTE2LTQyLmJwby0zNDI3NS5JdTBkN3QucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZWJhN2EKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0lETEUvMjAxOC0wOC0wMi0yMi0xNi00Mi5icG8tMzQyNzUuSXUwZDd0LnJzdApAQCAtMCwwICsxLDIgQEAKK01ha2UgSURMRSBjYWxsdGlwcyBhbHdheXMgdmlzaWJsZSBvbiBNYWMuIFNvbWUgTWFjT1MtdGsgY29tYmluYXRpb25zIG5lZWQKKy51cGRhdGVfaWRsZXRhc2tzKCkuIFBhdGNoIGJ5IEtldmluIFdhbHplci4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvSURMRS9SRUFETUUucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9JRExFL1JFQURNRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ3NWY3YgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvSURMRS9SRUFETUUucnN0CkBAIC0wLDAgKzEgQEAKK1B1dCBuZXdzIGVudHJ5IGBgYmx1cmJgYCBmaWxlcyBmb3IgdGhlICpJRExFKiBzZWN0aW9uIGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTctMDgtMjQtMTctNTUtMzkuYnBvLTI5NDU2LlhhQjNNUC5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxNy0wOC0yNC0xNy01NS0zOS5icG8tMjk0NTYuWGFCM01QLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjMwYmY2Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTctMDgtMjQtMTctNTUtMzkuYnBvLTI5NDU2LlhhQjNNUC5yc3QKQEAgLTAsMCArMSBAQAorRml4IGJ1Z3MgaW4gaGFuZ3VsIG5vcm1hbGl6YXRpb246IHUxMTc2LCB1MTFhNyBhbmQgdTExYzMKZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE3LTEwLTI5LTEwLTM3LTU1LmJwby0zMTYwOC53a3A4TncucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTctMTAtMjktMTAtMzctNTUuYnBvLTMxNjA4LndrcDhOdy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY1N2E4NgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE3LTEwLTI5LTEwLTM3LTU1LmJwby0zMTYwOC53a3A4TncucnN0CkBAIC0wLDAgKzEsMiBAQAorUmFpc2UgYSBgYFR5cGVFcnJvcmBgIGluc3RlYWQgb2YgY3Jhc2hpbmcgaWYgYSBgYGNvbGxlY3Rpb25zLmRlcXVlYGAgc3ViY2xhc3MKK3JldHVybnMgYSBub24tZGVxdWUgZnJvbSBgYF9fbmV3X19gYC4gUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wMS0yMC0xNy0xNS0zNC5icG8tMzI1MDIuT1hKZm43LnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTAxLTIwLTE3LTE1LTM0LmJwby0zMjUwMi5PWEpmbjcucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzMzg2MzIKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wMS0yMC0xNy0xNS0zNC5icG8tMzI1MDIuT1hKZm43LnJzdApAQCAtMCwwICsxLDIgQEAKK3V1aWQudXVpZDEgbm8gbG9uZ2VyIHJhaXNlcyBhbiBleGNlcHRpb24gaWYgYSA2NC1iaXQgaGFyZHdhcmUgYWRkcmVzcyBpcworZW5jb3VudGVyZWQuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wMi0xNi0xNC0zNy0xNC5icG8tMzI4NTcuLVhsakF4LnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTAyLTE2LTE0LTM3LTE0LmJwby0zMjg1Ny4tWGxqQXgucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlYmJkZTQKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wMi0xNi0xNC0zNy0xNC5icG8tMzI4NTcuLVhsakF4LnJzdApAQCAtMCwwICsxIEBACitJbiA6bW9kOmB0a2ludGVyYCwgYGBhZnRlcl9jYW5jZWwoTm9uZSlgYCBub3cgcmFpc2VzIGEgOmV4YzpgVmFsdWVFcnJvcmAgaW5zdGVhZCBvZiBjYW5jZWxpbmcgdGhlIGZpcnN0IHNjaGVkdWxlZCBmdW5jdGlvbi4gIFBhdGNoIGJ5IENoZXJ5bCBTYWJlbGxhLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDMtMTAtMjAtMTQtMzYuYnBvLTMzMDM4LnlBNkNQNS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wMy0xMC0yMC0xNC0zNi5icG8tMzMwMzgueUE2Q1A1LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmQzOTRiCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDMtMTAtMjAtMTQtMzYuYnBvLTMzMDM4LnlBNkNQNS5yc3QKQEAgLTAsMCArMSwyIEBACitnemlwLkd6aXBGaWxlIG5vIGxvbmdlciBwcm9kdWNlcyBhbiBBdHRyaWJ1dGVFcnJvciBleGNlcHRpb24gd2hlbiB1c2VkIHdpdGgKK2EgZmlsZSBvYmplY3Qgd2l0aCBhIG5vbi1zdHJpbmcgbmFtZSBhdHRyaWJ1dGUuIFBhdGNoIGJ5IEJvIEJheWxlcy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA0LTAyLTIwLTQ0LTU0LmJwby0zMjg2MS5IZUJqek4ucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDQtMDItMjAtNDQtNTQuYnBvLTMyODYxLkhlQmp6Ti5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNkZWZiYgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA0LTAyLTIwLTQ0LTU0LmJwby0zMjg2MS5IZUJqek4ucnN0CkBAIC0wLDAgKzEsMyBAQAorVGhlIHVybGxpYi5yb2JvdHBhcnNlcidzIGBgX19zdHJfX2BgIHJlcHJlc2VudGF0aW9uIG5vdyBpbmNsdWRlcyB3aWxkY2FyZAorZW50cmllcyBhbmQgdGhlICJDcmF3bC1kZWxheSIgYW5kICJSZXF1ZXN0LXJhdGUiIGZpZWxkcy4gUGF0Y2ggYnkKK01pY2hhZWwgTGF6YXIuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNC0xMC0yMC01Ny0xNC5icG8tMzMyNTYubmRIa3F1LnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA0LTEwLTIwLTU3LTE0LmJwby0zMzI1Ni5uZEhrcXUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwNjA1YzAKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNC0xMC0yMC01Ny0xNC5icG8tMzMyNTYubmRIa3F1LnJzdApAQCAtMCwwICsxIEBACitGaXggZGlzcGxheSBvZiBgYDxtb2R1bGU+YGAgY2FsbCBpbiB0aGUgaHRtbCBwcm9kdWNlZCBieSBgYGNnaXRiLmh0bWwoKWBgLiBQYXRjaCBieSBTdMOpcGhhbmUgQmxvbmRvbi4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA0LTE4LTE5LTEyLTI1LmJwby0zMzMwOC5mVzc1eGkucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDQtMTgtMTktMTItMjUuYnBvLTMzMzA4LmZXNzV4aS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg2MDA0YQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA0LTE4LTE5LTEyLTI1LmJwby0zMzMwOC5mVzc1eGkucnN0CkBAIC0wLDAgKzEsMiBAQAorRml4ZWQgYSBjcmFzaCBpbiB0aGUgOm1vZDpgcGFyc2VyYCBtb2R1bGUgd2hlbiBjb252ZXJ0aW5nIGFuIFNUIG9iamVjdCB0byBhCit0cmVlIG9mIHR1cGxlcyBvciBsaXN0cyB3aXRoIGBgbGluZV9pbmZvPUZhbHNlYGAgYW5kIGBgY29sX2luZm89VHJ1ZWBgLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDQtMjAtMTAtNDMtMTcuYnBvLTMzMTMxLkwyRTk3Ny5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNC0yMC0xMC00My0xNy5icG8tMzMxMzEuTDJFOTc3LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzVjNmFjCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDQtMjAtMTAtNDMtMTcuYnBvLTMzMTMxLkwyRTk3Ny5yc3QKQEAgLTAsMCArMSBAQAorVXBncmFkZSBidW5kbGVkIHZlcnNpb24gb2YgcGlwIHRvIDEwLjAuMS4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA0LTI1LTIyLTQxLTA0LmJwby0zMzM1OS5OcjRDeksucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDQtMjUtMjItNDEtMDQuYnBvLTMzMzU5Lk5yNEN6Sy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE5MGYyZgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA0LTI1LTIyLTQxLTA0LmJwby0zMzM1OS5OcjRDeksucnN0CkBAIC0wLDAgKzEgQEAKK0ZpeCBydW5uaW5nIGBgcHl0aG9uIC1tIGN1cnNlcy5oYXNfa2V5YGAuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNC0yNy0yMi0xOC0zOC5icG8tMzMzMzYuVDhyeG4wLnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA0LTI3LTIyLTE4LTM4LmJwby0zMzMzNi5UOHJ4bjAucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyMDVjNjgKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNC0yNy0yMi0xOC0zOC5icG8tMzMzMzYuVDhyeG4wLnJzdApAQCAtMCwwICsxLDMgQEAKK2BgaW1hcGxpYmBgIG5vdyBhbGxvd3MgYGBNT1ZFYGAgY29tbWFuZCBpbiBgYElNQVA0LnVpZCgpYGAgKFJGQyAKKzY4NTE6IElNQVAgTU9WRSBFeHRlbnNpb24pIGFuZCBwb3RlbnRpYWxseSBhcyBhIG5hbWUgb2Ygc3VwcG9ydGVkIAorbWV0aG9kIG9mIGBgSU1BUDRgYCBvYmplY3QuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNS0wNS0wOS01My0wNS5icG8tMzM0MjIuNEZ0UTBxLnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA1LTA1LTA5LTUzLTA1LmJwby0zMzQyMi40RnRRMHEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMjg0ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNS0wNS0wOS01My0wNS5icG8tMzM0MjIuNEZ0UTBxLnJzdApAQCAtMCwwICsxLDIgQEAKK0ZpeCB0cmFpbGluZyBxdW90YXRpb24gbWFya3MgZ2V0dGluZyBkZWxldGVkIHdoZW4gbG9va2luZyB1cCBieXRlL3N0cmluZworbGl0ZXJhbHMgb24gcHlkb2MuIFBhdGNoIGJ5IEFuZHLDqXMgRGVsZmluby4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA1LTA1LTE4LTAyLTI0LmJwby0yMDA4Ny5sSnJ2WEwucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDUtMDUtMTgtMDItMjQuYnBvLTIwMDg3LmxKcnZYTC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM0MmNiNwotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA1LTA1LTE4LTAyLTI0LmJwby0yMDA4Ny5sSnJ2WEwucnN0CkBAIC0wLDAgKzEgQEAKK1VwZGF0ZWQgYWxpYXMgbWFwcGluZyB3aXRoIGdsaWJjIDIuMjcgc3VwcG9ydGVkIGxvY2FsZXMuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNS0wOC0wOC0wMy0zNC5icG8tMzMwOTYuMGhzRmhMLnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA1LTA4LTA4LTAzLTM0LmJwby0zMzA5Ni4waHNGaEwucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZDIzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNS0wOC0wOC0wMy0zNC5icG8tMzMwOTYuMGhzRmhMLnJzdApAQCAtMCwwICsxIEBACitSZW1vdmVkIHVuaW50ZW50aW9uYWxseSBiYWNrcG9ydGVkIGZyb20gUHl0aG9uIDMgVGtpbnRlciBmaWxlcy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA1LTE2LTA5LTMwLTI3LmJwby0zMzU0Mi5pZE5BY3MucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDUtMTYtMDktMzAtMjcuYnBvLTMzNTQyLmlkTkFjcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZiYTc5OQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA1LTE2LTA5LTMwLTI3LmJwby0zMzU0Mi5pZE5BY3MucnN0CkBAIC0wLDAgKzEsMiBAQAorUHJldmVudCBgYHV1aWQuZ2V0X25vZGVgYCBmcm9tIHVzaW5nIGEgRFVJRCBpbnN0ZWFkIG9mIGEgTUFDIG9uIFdpbmRvd3MuCitQYXRjaCBieSBadmkgRWZmcm9uCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNS0yMy0wMC0yNi0yNy5icG8tMTE4NzQuZ2xLNWlQLnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA1LTIzLTAwLTI2LTI3LmJwby0xMTg3NC5nbEs1aVAucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzVmMTQKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNS0yMy0wMC0yNi0yNy5icG8tMTE4NzQuZ2xLNWlQLnJzdApAQCAtMCwwICsxLDIgQEAKK1VzZSBhIGJldHRlciByZWdleCB3aGVuIGJyZWFraW5nIHVzYWdlIGludG8gd3JhcHBhYmxlIHBhcnRzLiBBdm9pZHMgYm9ndXMKK2Fzc2VydGlvbiBlcnJvcnMgZnJvbSBjdXN0b20gbWV0YXZhciBzdHJpbmdzLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDYtMDMtMjItNDEtNTkuYnBvLTMzNzY3LjJlODJnMy5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNi0wMy0yMi00MS01OS5icG8tMzM3NjcuMmU4MmczLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDgzMzAxCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDYtMDMtMjItNDEtNTkuYnBvLTMzNzY3LjJlODJnMy5yc3QKQEAgLTAsMCArMSwzIEBACitUaGUgY29uY2F0ZW5hdGlvbiAoYGArYGApIGFuZCByZXBldGl0aW9uIChgYCpgYCkgc2VxdWVuY2Ugb3BlcmF0aW9ucyBub3cKK3JhaXNlIDpleGM6YFR5cGVFcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBTeXN0ZW1FcnJvcmAgd2hlbiBwZXJmb3JtZWQgb24KKzpjbGFzczpgbW1hcC5tbWFwYCBvYmplY3RzLiAgUGF0Y2ggYnkgWmFja2VyeSBTcHl0ei4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA2LTEzLTIwLTMzLTI5LmJwby0yNjU0NC5oUTFvTXQucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDYtMTMtMjAtMzMtMjkuYnBvLTI2NTQ0LmhRMW9NdC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJjZDBiYQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA2LTEzLTIwLTMzLTI5LmJwby0yNjU0NC5oUTFvTXQucnN0CkBAIC0wLDAgKzEsMiBAQAorRml4ZWQgaW1wbGVtZW50YXRpb24gb2YgOmZ1bmM6YHBsYXRmb3JtLmxpYmNfdmVyYC4gSXQgYWxtb3N0IGFsd2F5cyByZXR1cm5lZAordmVyc2lvbiAnMi45JyBmb3IgZ2xpYmMuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNi0yNC0wMS01Ny0xNC5icG8tMzM4OTkuSWFPY0FyLnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA2LTI0LTAxLTU3LTE0LmJwby0zMzg5OS5JYU9jQXIucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYzkwOTUKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNi0yNC0wMS01Ny0xNC5icG8tMzM4OTkuSWFPY0FyLnJzdApAQCAtMCwwICsxLDMgQEAKK1Rva2VuaXplIG1vZHVsZSBub3cgaW1wbGljaXRseSBlbWl0cyBhIE5FV0xJTkUgd2hlbiBwcm92aWRlZCB3aXRoIGlucHV0IHRoYXQKK2RvZXMgbm90IGhhdmUgYSB0cmFpbGluZyBuZXcgbGluZS4gIFRoaXMgYmVoYXZpb3Igbm93IG1hdGNoZXMgd2hhdCB0aGUgQwordG9rZW5pemVyIGRvZXMgaW50ZXJuYWxseS4gIENvbnRyaWJ1dGVkIGJ5IEFtbWFyIEFza2FyLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDYtMjgtMTQtNTYtNDQuYnBvLTMzOTc0LlNBOG5OUC5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNi0yOC0xNC01Ni00NC5icG8tMzM5NzQuU0E4bk5QLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzAzYmFiCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDYtMjgtMTQtNTYtNDQuYnBvLTMzOTc0LlNBOG5OUC5yc3QKQEAgLTAsMCArMSwzIEBACitGaXhlZCBwYXNzaW5nIGxpc3RzIGFuZCB0dXBsZXMgb2Ygc3RyaW5ncyBjb250YWluaW5nIHNwZWNpYWwgY2hhcmFjdGVycworYGAiYGAsIGBgXGBgLCBgYHtgYCwgYGB9YGAgYW5kIGBgXG5gYCBhcyBvcHRpb25zIHRvIDptb2Q6YH50a2ludGVyLnR0a2AKK3dpZGdldHMuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNy0wMi0wNS01OS0xMS5icG8tMzQwMTkuWlhKSWlmZS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wNy0wMi0wNS01OS0xMS5icG8tMzQwMTkuWlhKSWlmZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE5ZmU3OQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA3LTAyLTA1LTU5LTExLmJwby0zNDAxOS5aWEpJaWZlLnJzdApAQCAtMCwwICsxLDIgQEAKK3dlYmJyb3dzZXI6IENvcnJlY3QgdGhlIGFyZ3VtZW50cyBwYXNzZWQgdG8gT3BlcmEgQnJvd3NlciB3aGVuIG9wZW5pbmcgYSBuZXcgVVJMCit1c2luZyB0aGUgYGB3ZWJicm93c2VyYGAgbW9kdWxlLiBQYXRjaCBieSBCdW1zaWsgS2ltLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDgtMjItMTctNDMtNTIuYnBvLTY3MDAuaHA3QzRCLnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA4LTIyLTE3LTQzLTUyLmJwby02NzAwLmhwN0M0Qi5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk1YzczNwotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA4LTIyLTE3LTQzLTUyLmJwby02NzAwLmhwN0M0Qi5yc3QKQEAgLTAsMCArMSwyIEBACitGaXggaW5zcGVjdC5nZXRzb3VyY2VsaW5lcyBmb3IgbW9kdWxlIGxldmVsIGZyYW1lcy90cmFjZWJhY2tzLgorUGF0Y2ggYnkgVmxhZGltaXIgTWF0dmVldi4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA5LTAzLTIzLTIzLTMyLmJwby0zNDUzMC5oX1hzdTcucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDktMDMtMjMtMjMtMzIuYnBvLTM0NTMwLmhfWHN1Ny5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY0ZGU3MwotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDE4LTA5LTAzLTIzLTIzLTMyLmJwby0zNDUzMC5oX1hzdTcucnN0CkBAIC0wLDAgKzEsMiBAQAorYGBkaXN0dXRpbHMuc3Bhd24uZmluZF9leGVjdXRhYmxlKClgYCBub3cgZmFsbHMgYmFjayBvbiA6ZGF0YTpgb3MuZGVmcGF0aGAKK2lmIHRoZSBgYFBBVEhgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0LgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDktMTAtMTctNDYtNTEuYnBvLTM0NjI1LkQyWWZEei5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wOS0xMC0xNy00Ni01MS5icG8tMzQ2MjUuRDJZZkR6LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzQ3ZWM1Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDktMTAtMTctNDYtNTEuYnBvLTM0NjI1LkQyWWZEei5yc3QKQEAgLTAsMCArMSBAQAorVXBkYXRlIHZlbmRvcml6ZWQgZXhwYXQgbGlicmFyeSB2ZXJzaW9uIHRvIDIuMi42LgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDktMTItMTQtNDYtNTEuYnBvLTM0NjUyLlJ0MW0xYi5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAxOC0wOS0xMi0xNC00Ni01MS5icG8tMzQ2NTIuUnQxbTFiLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmRkN2UwCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMTgtMDktMTItMTQtNDYtNTEuYnBvLTM0NjUyLlJ0MW0xYi5yc3QKQEAgLTAsMCArMSBAQAorRW5zdXJlIDpmdW5jOmBvcy5sY2htb2RgIGlzIG5ldmVyIGRlZmluZWQgb24gTGludXguCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvUkVBRE1FLnJzdCBiL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS9SRUFETUUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkMmQzMGUKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvUkVBRE1FLnJzdApAQCAtMCwwICsxIEBACitQdXQgbmV3cyBlbnRyeSBgYGJsdXJiYGAgZmlsZXMgZm9yIHRoZSAqTGlicmFyeSogc2VjdGlvbiBpbiB0aGlzIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAxOC0wOC0xNS0xMi0xNC0wMy5icG8tMzQ0MDUuUjRJWkd3LnJzdCBiL01pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAxOC0wOC0xNS0xMi0xNC0wMy5icG8tMzQ0MDUuUjRJWkd3LnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzllZGRiCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9TZWN1cml0eS8yMDE4LTA4LTE1LTEyLTE0LTAzLmJwby0zNDQwNS5SNElaR3cucnN0CkBAIC0wLDAgKzEgQEAKK1VwZGF0ZWQgdG8gT3BlblNTTCAxLjAuMnAgZm9yIFdpbmRvd3MgYnVpbGRzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAxOC0wOC0yOC0yMi0xMS01NC5icG8tMzQ1NDAuZ2ZRMFRNLnJzdCBiL01pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAxOC0wOC0yOC0yMi0xMS01NC5icG8tMzQ1NDAuZ2ZRMFRNLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjY4Njk2Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9TZWN1cml0eS8yMDE4LTA4LTI4LTIyLTExLTU0LmJwby0zNDU0MC5nZlEwVE0ucnN0CkBAIC0wLDAgKzEsMyBAQAorV2hlbiBgYHNodXRpbC5tYWtlX2FyY2hpdmVgYCBmYWxscyBiYWNrIHRvIHRoZSBleHRlcm5hbCBgYHppcGBgIHByb2JsZW0sIGl0Cit1c2VzIDptb2Q6YHN1YnByb2Nlc3NgIHRvIGludm9rZSBpdCByYXRoZXIgdGhhbiA6bW9kOmBkaXN0dXRpbHMuc3Bhd25gLiBUaGlzCitjbG9zZXMgYSBwb3NzaWJsZSBzaGVsbCBpbmplY3Rpb24gdmVjdG9yLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9TZWN1cml0eS9SRUFETUUucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9TZWN1cml0eS9SRUFETUUucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YzFhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L1NlY3VyaXR5L1JFQURNRS5yc3QKQEAgLTAsMCArMSBAQAorUHV0IG5ld3MgZW50cnkgYGBibHVyYmBgIGZpbGVzIGZvciB0aGUgKlNlY3VyaXR5KiBzZWN0aW9uIGluIHRoaXMgZGlyZWN0b3J5LgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA0LTI2LTIyLTM5LTE3LmJwby0zMzM1NC5nMzUtNDQucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA0LTI2LTIyLTM5LTE3LmJwby0zMzM1NC5nMzUtNDQucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NmNlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDQtMjYtMjItMzktMTcuYnBvLTMzMzU0LmczNS00NC5yc3QKQEAgLTAsMCArMSwyIEBACitTa2lwIGBgdGVzdF9zc2wudGVzdF9sb2FkX2RoX3BhcmFtc2BgIHdoZW4gUHl0aG9uIGZpbGVzeXN0ZW0gZW5jb2RpbmcgY2Fubm90IGVuY29kZSB0aGUKK3Byb3ZpZGVkIHBhdGguCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDUtMzAtMDAtMzktNTcuYnBvLTI5NTEyLkVIckR6cy5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDUtMzAtMDAtMzktNTcuYnBvLTI5NTEyLkVIckR6cy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE1ZGM2NAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvVGVzdHMvMjAxOC0wNS0zMC0wMC0zOS01Ny5icG8tMjk1MTIuRUhyRHpzLnJzdApAQCAtMCwwICsxLDMgQEAKK1JlbmFtZSBMaWIvdGVzdC9iaXNlY3QucHkgdG8gTGliL3Rlc3QvYmlzZWN0X2NtZC5weS4gVGhlIG9sZCBuYW1lIHdhcyBpbgorY29uZmxpY3Qgd2l0aCBMaWIvYmlzZWN0LnB5LCBjYXVzaW5nIHRlc3QgZmFpbHVyZXMsIGRlcGVuZGluZyBob3cgdGVzdHMKK3dlcmUgcnVuLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA2LTE2LTAxLTM3LTMxLmJwby0zMzg3My5kODZ2YWIucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA2LTE2LTAxLTM3LTMxLmJwby0zMzg3My5kODZ2YWIucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0ZjQyNTUKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDYtMTYtMDEtMzctMzEuYnBvLTMzODczLmQ4NnZhYi5yc3QKQEAgLTAsMCArMSw0IEBACitGaXggYSBidWcgaW4gYGByZWdydGVzdGBgIHRoYXQgY2F1c2VkIGFuIGV4dHJhIHRlc3QgdG8gcnVuIGlmCistLWh1bnRybGVha3MvLVIgd2FzIHVzZWQuIEV4aXQgd2l0aCBlcnJvciBpbiBjYXNlIHRoYXQgaW52YWxpZAorcGFyYW1ldGVycyBhcmUgc3BlY2lmaWVkIHRvIC0taHVudHJsZWFrcy8tUiAoYXQgbGVhc3Qgb25lIHdhcm11cAorcnVuIGFuZCBvbmUgcmVwZXRpdGlvbiBtdXN0IGJlIHVzZWQpLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA2LTE5LTE0LTA0LTIxLmJwby0zMzkwMS5PRlcxU3IucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA2LTE5LTE0LTA0LTIxLmJwby0zMzkwMS5PRlcxU3IucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MjQ0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDYtMTktMTQtMDQtMjEuYnBvLTMzOTAxLk9GVzFTci5yc3QKQEAgLTAsMCArMSwyIEBACitGaXggdGVzdF9nZGJtIG9uIG1hY09TIHdpdGggZ2RibSAxLjE1OiBhZGQgYSBsYXJnZXIgdmFsdWUgdG8gbWFrZSBzdXJlIHRoYXQKK3RoZSBmaWxlIHNpemUgY2hhbmdlcy4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvVGVzdHMvMjAxOC0wOC0xNC0xMC00Ny00NC5icG8tMzQzOTkuRF9qZDFHLnJzdCBiL01pc2MvTkVXUy5kL25leHQvVGVzdHMvMjAxOC0wOC0xNC0xMC00Ny00NC5icG8tMzQzOTkuRF9qZDFHLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzU0NThmCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA4LTE0LTEwLTQ3LTQ0LmJwby0zNDM5OS5EX2pkMUcucnN0CkBAIC0wLDAgKzEgQEAKK1VwZGF0ZSBhbGwgUlNBIGtleXMgYW5kIERIIHBhcmFtcyB0byB1c2UgYXQgbGVhc3QgMjA0OCBiaXRzLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA4LTE2LTE4LTQ4LTQ3LmJwby0zNDM5MS5vdU5meEMucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA4LTE2LTE4LTQ4LTQ3LmJwby0zNDM5MS5vdU5meEMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NzAyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzLzIwMTgtMDgtMTYtMTgtNDgtNDcuYnBvLTM0MzkxLm91TmZ4Qy5yc3QKQEAgLTAsMCArMSBAQAorRml4IGZ0cGxpYiB0ZXN0IGZvciBUTFMgMS4zIGJ5IHJlYWRpbmcgZnJvbSBkYXRhIHNvY2tldC4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvVGVzdHMvMjAxOC0wOS0xMy0wOS01My0xNS5icG8tMzQ2NjEuYmRUYW1QLnJzdCBiL01pc2MvTkVXUy5kL25leHQvVGVzdHMvMjAxOC0wOS0xMy0wOS01My0xNS5icG8tMzQ2NjEuYmRUYW1QLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzJiOGU5Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9UZXN0cy8yMDE4LTA5LTEzLTA5LTUzLTE1LmJwby0zNDY2MS5iZFRhbVAucnN0CkBAIC0wLDAgKzEgQEAKK0ZpeCB0ZXN0X3NodXRpbCBpZiB1bnppcCBkb2Vzbid0IHN1cHBvcnQgLXQuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzL1JFQURNRS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L1Rlc3RzL1JFQURNRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJlNTBlNAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvVGVzdHMvUkVBRE1FLnJzdApAQCAtMCwwICsxIEBACitQdXQgbmV3cyBlbnRyeSBgYGJsdXJiYGAgZmlsZXMgZm9yIHRoZSAqVGVzdHMqIHNlY3Rpb24gaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L1Rvb2xzLURlbW9zLzIwMTgtMDYtMTQtMTYtMTYtNTMuYnBvLTMyOTYyLjJZZmR3SS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L1Rvb2xzLURlbW9zLzIwMTgtMDYtMTQtMTYtMTYtNTMuYnBvLTMyOTYyLjJZZmR3SS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU0MDA3MAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvVG9vbHMtRGVtb3MvMjAxOC0wNi0xNC0xNi0xNi01My5icG8tMzI5NjIuMllmZHdJLnJzdApAQCAtMCwwICsxLDIgQEAKK3B5dGhvbi1nZGIgbm93IGNhdGNocyBWYWx1ZUVycm9yIG9uIHJlYWRfdmFyKCk6IHdoZW4gUHl0aG9uIGhhcyBubyBkZWJ1Zworc3ltYm9scyBmb3IgZXhhbXBsZS4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvVG9vbHMtRGVtb3MvMjAxOC0wNi0xNC0xNi0yMy0wNy5icG8tMzI5NjIuUTNEd25zLnJzdCBiL01pc2MvTkVXUy5kL25leHQvVG9vbHMtRGVtb3MvMjAxOC0wNi0xNC0xNi0yMy0wNy5icG8tMzI5NjIuUTNEd25zLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzE0MjYxCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9Ub29scy1EZW1vcy8yMDE4LTA2LTE0LTE2LTIzLTA3LmJwby0zMjk2Mi5RM0R3bnMucnN0CkBAIC0wLDAgKzEsMiBAQAorcHl0aG9uLWdkYiBub3cgY2F0Y2hzIGBgVW5pY29kZURlY29kZUVycm9yYGAgZXhjZXB0aW9ucyB3aGVuIGNhbGxpbmcKK2Bgc3RyaW5nKClgYC4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvVG9vbHMtRGVtb3MvMjAxOC0wNi0xNS0yMy0wNy01MC5icG8tMjkzNjcuNTJ3OVVxLnJzdCBiL01pc2MvTkVXUy5kL25leHQvVG9vbHMtRGVtb3MvMjAxOC0wNi0xNS0yMy0wNy01MC5icG8tMjkzNjcuNTJ3OVVxLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGU0MTI0Ci0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9Ub29scy1EZW1vcy8yMDE4LTA2LTE1LTIzLTA3LTUwLmJwby0yOTM2Ny41Mnc5VXEucnN0CkBAIC0wLDAgKzEgQEAKK3B5dGhvbi1nZGIucHkgbm93IHN1cHBvcnRzIGFsc28gbWV0aG9kLXdyYXBwZXIgKHdyYXBwZXJvYmplY3QpIG9iamVjdHMuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L1Rvb2xzLURlbW9zLzIwMTgtMDgtMjUtMTctMTMtMjQuYnBvLTM0NTAwLkVkejQxeC5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L1Rvb2xzLURlbW9zLzIwMTgtMDgtMjUtMTctMTMtMjQuYnBvLTM0NTAwLkVkejQxeC5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdjYTA2ZgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvVG9vbHMtRGVtb3MvMjAxOC0wOC0yNS0xNy0xMy0yNC5icG8tMzQ1MDAuRWR6NDF4LnJzdApAQCAtMCwwICsxIEBACitGaXggMiBSZXNvdXJjZVdhcm5pbmcgaW4gZGlmZmxpYi5weS4gUGF0Y2ggYnkgTWlja2HDq2wgU2Nob2VudGdlbi4KZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvVG9vbHMtRGVtb3MvUkVBRE1FLnJzdCBiL01pc2MvTkVXUy5kL25leHQvVG9vbHMtRGVtb3MvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTdmODI4NgotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvVG9vbHMtRGVtb3MvUkVBRE1FLnJzdApAQCAtMCwwICsxIEBACitQdXQgbmV3cyBlbnRyeSBgYGJsdXJiYGAgZmlsZXMgZm9yIHRoZSAqVG9vbHMvRGVtb3MqIHNlY3Rpb24gaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L1dpbmRvd3MvMjAxOC0wNi0yNC0xMi0wOS0yMy5icG8tMzM3MTEuTHBPMHMxLnJzdCBiL01pc2MvTkVXUy5kL25leHQvV2luZG93cy8yMDE4LTA2LTI0LTEyLTA5LTIzLmJwby0zMzcxMS5McE8wczEucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5N2I4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9NaXNjL05FV1MuZC9uZXh0L1dpbmRvd3MvMjAxOC0wNi0yNC0xMi0wOS0yMy5icG8tMzM3MTEuTHBPMHMxLnJzdApAQCAtMCwwICsxIEBACitGaXhlZCBsaWNlbmNlIGdlbmVyYXRpb24gZXJyb3Igd2hlbiBidWlsZGluZyB0aGUgaW5zdGFsbGVyLgpkaWZmIC0tZ2l0IGEvTWlzYy9ORVdTLmQvbmV4dC9XaW5kb3dzL1JFQURNRS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L1dpbmRvd3MvUkVBRE1FLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTY1ZGUzCi0tLSAvZGV2L251bGwKKysrIGIvTWlzYy9ORVdTLmQvbmV4dC9XaW5kb3dzL1JFQURNRS5yc3QKQEAgLTAsMCArMSBAQAorUHV0IG5ld3MgZW50cnkgYGBibHVyYmBgIGZpbGVzIGZvciB0aGUgKldpbmRvd3MqIHNlY3Rpb24gaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L21hY09TLzIwMTgtMDktMTEtMDgtNDctNTAuYnBvLTM0NDA1LmYxLWZUNS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L21hY09TLzIwMTgtMDktMTEtMDgtNDctNTAuYnBvLTM0NDA1LmYxLWZUNS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkyMzcwMAotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvbWFjT1MvMjAxOC0wOS0xMS0wOC00Ny01MC5icG8tMzQ0MDUuZjEtZlQ1LnJzdApAQCAtMCwwICsxIEBACitVcGRhdGUgdG8gT3BlblNTTCAxLjAuMnAgZm9yIG1hY09TIGluc3RhbGxlciBidWlsZHMuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MuZC9uZXh0L21hY09TL1JFQURNRS5yc3QgYi9NaXNjL05FV1MuZC9uZXh0L21hY09TL1JFQURNRS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNhZGI1OQotLS0gL2Rldi9udWxsCisrKyBiL01pc2MvTkVXUy5kL25leHQvbWFjT1MvUkVBRE1FLnJzdApAQCAtMCwwICsxIEBACitQdXQgbmV3cyBlbnRyeSBgYGJsdXJiYGAgZmlsZXMgZm9yIHRoZSAqbWFjT1MqIHNlY3Rpb24gaW4gdGhpcyBkaXJlY3RvcnkuCmRpZmYgLS1naXQgYS9Nb2R1bGVzL1NldHVwLmRpc3QgYi9Nb2R1bGVzL1NldHVwLmRpc3QKaW5kZXggNTIzZTA1YS4uYmQ4YjUyZSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9TZXR1cC5kaXN0CisrKyBiL01vZHVsZXMvU2V0dXAuZGlzdApAQCAtNDY3LDE0ICs0NjcsNiBAQAogI3psaWIgemxpYm1vZHVsZS5jIC1JJChwcmVmaXgpL2luY2x1ZGUgLUwkKGV4ZWNfcHJlZml4KS9saWIgLWx6CiAKICMgSW50ZXJmYWNlIHRvIHRoZSBFeHBhdCBYTUwgcGFyc2VyCi0jCi0jIEV4cGF0IHdhcyB3cml0dGVuIGJ5IEphbWVzIENsYXJrIGFuZCBpcyBub3cgbWFpbnRhaW5lZCBieSBhIGdyb3VwIG9mCi0jIGRldmVsb3BlcnMgb24gU291cmNlRm9yZ2U7IHNlZSB3d3cubGliZXhwYXQub3JnIGZvciBtb3JlCi0jIGluZm9ybWF0aW9uLiAgVGhlIHB5ZXhwYXQgbW9kdWxlIHdhcyB3cml0dGVuIGJ5IFBhdWwgUHJlc2NvZCBhZnRlciBhCi0jIHByb3RvdHlwZSBieSBKYWNrIEphbnNlbi4gIFNvdXJjZSBvZiBFeHBhdCAxLjk1LjIgaXMgaW5jbHVkZWQgaW4KLSMgTW9kdWxlcy9leHBhdC8uICBVc2FnZSBvZiBhIHN5c3RlbSBzaGFyZWQgbGliZXhwYXQuc28vZXhwYXQuZGxsIGlzCi0jIG5vdCBhZHZpc2VkLgotIwogIyBNb3JlIGluZm9ybWF0aW9uIG9uIEV4cGF0IGNhbiBiZSBmb3VuZCBhdCB3d3cubGliZXhwYXQub3JnLgogIwogI3B5ZXhwYXQgZXhwYXQveG1scGFyc2UuYyBleHBhdC94bWxyb2xlLmMgZXhwYXQveG1sdG9rLmMgcHlleHBhdC5jIC1JJChzcmNkaXIpL01vZHVsZXMvZXhwYXQgLURIQVZFX0VYUEFUX0NPTkZJR19IIC1EVVNFX1BZRVhQQVRfQ0FQSQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYnNkZGIuYyBiL01vZHVsZXMvX2JzZGRiLmMKaW5kZXggZWQxN2QzOS4uY2VlNDQ3YiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fYnNkZGIuYworKysgYi9Nb2R1bGVzL19ic2RkYi5jCkBAIC05MzEsMTEgKzkzMSwxMyBAQAogICAgIHNlbGYtPnNpYmxpbmdfcHJldl9wX3R4bj1OVUxMOwogICAgIHNlbGYtPnNpYmxpbmdfbmV4dF90eG49TlVMTDsKIAotICAgIGlmIChzZWxmLT5teWVudm9iaikKKyAgICBpZiAoc2VsZi0+bXllbnZvYmopIHsKICAgICAgICAgc2VsZi0+bW9kdWxlRmxhZ3MgPSBzZWxmLT5teWVudm9iai0+bW9kdWxlRmxhZ3M7Ci0gICAgZWxzZQorICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgc2VsZi0+bW9kdWxlRmxhZ3MuZ2V0UmV0dXJuc05vbmUgPSBERUZBVUxUX0dFVF9SRVRVUk5TX05PTkU7CiAgICAgICAgIHNlbGYtPm1vZHVsZUZsYWdzLmN1cnNvclNldFJldHVybnNOb25lID0gREVGQVVMVF9DVVJTT1JfU0VUX1JFVFVSTlNfTk9ORTsKKyAgICB9CiAKICAgICBNWURCX0JFR0lOX0FMTE9XX1RIUkVBRFM7CiAgICAgZXJyID0gZGJfY3JlYXRlKCZzZWxmLT5kYiwgZGJfZW52LCBmbGFncyk7CkBAIC0xNTAxLDU2ICsxNTAzLDcxIEBACiAgICAgICAgIGVsc2UgaWYgKFB5TGlzdF9DaGVjayhyZXN1bHQpKQogICAgICAgICB7CiAgICAgICAgICAgICBjaGFyKiBkYXRhOwotICAgICAgICAgICAgUHlfc3NpemVfdCBzaXplOwotICAgICAgICAgICAgaW50IGksIGxpc3RsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IHNpemUsIGxpc3RsZW4sIGk7CiAgICAgICAgICAgICBEQlQqIGRidHM7CiAKICAgICAgICAgICAgIGxpc3RsZW4gPSBQeUxpc3RfU2l6ZShyZXN1bHQpOwogCi0gICAgICAgICAgICBkYnRzID0gKERCVCAqKW1hbGxvYyhzaXplb2YoREJUKSAqIGxpc3RsZW4pOwotCi0gICAgICAgICAgICBmb3IgKGk9MDsgaTxsaXN0bGVuOyBpKyspCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKFB5TGlzdF9HZXRJdGVtKHJlc3VsdCwgaSkpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAotICAgICAgICAgICAgICAgICAgICAgICBQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICBpZiAobGlzdGxlbiA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKERCVCkpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgIFB5RXJyX1ByaW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBkYnRzID0gKERCVCAqKW1hbGxvYyhzaXplb2YoREJUKSAqIGxpc3RsZW4pOworICAgICAgICAgICAgICAgIGlmIChkYnRzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsaXN0bGVuOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhQeUxpc3RfR2V0SXRlbShyZXN1bHQsIGkpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAjaWYgKFBZX1ZFUlNJT05fSEVYIDwgMHgwMzAwMDAwMCkKICJUaGUgbGlzdCByZXR1cm5lZCBieSBEQi0+YXNzb2NpYXRlIGNhbGxiYWNrIHNob3VsZCBiZSBhIGxpc3Qgb2Ygc3RyaW5ncy4iKTsKICNlbHNlCiAiVGhlIGxpc3QgcmV0dXJuZWQgYnkgREItPmFzc29jaWF0ZSBjYWxsYmFjayBzaG91bGQgYmUgYSBsaXN0IG9mIGJ5dGVzLiIpOwogI2VuZGlmCi0gICAgICAgICAgICAgICAgICAgIFB5RXJyX1ByaW50KCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoCi0gICAgICAgICAgICAgICAgICAgIFB5TGlzdF9HZXRJdGVtKHJlc3VsdCwgaSksCi0gICAgICAgICAgICAgICAgICAgICZkYXRhLCAmc2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoUHlMaXN0X0dldEl0ZW0ocmVzdWx0LCBpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YSwgJnNpemUpIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgQ0xFQVJfREJUKGRidHNbaV0pOwotICAgICAgICAgICAgICAgIGRidHNbaV0uZGF0YSA9IG1hbGxvYyhzaXplKTsgICAgICAgICAgLyogVE9ETywgY2hlY2sgdGhpcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgQ0xFQVJfREJUKGRidHNbaV0pOworICAgICAgICAgICAgICAgICAgICAgICAgZGJ0c1tpXS5kYXRhID0gbWFsbG9jKHNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRidHNbaV0uZGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShkYnRzW2ldLmRhdGEsIGRhdGEsIHNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRidHNbaV0uc2l6ZSA9IHNpemU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGJ0c1tpXS51bGVuID0gZGJ0c1tpXS5zaXplOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERCIHdpbGwgZnJlZS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYnRzW2ldLmZsYWdzID0gREJfREJUX0FQUE1BTExPQzsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19NZW1vcnlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hbGxvYyBmYWlsZWQgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX2RiX2Fzc29jaWF0ZUNhbGxiYWNrIChsaXN0KSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGktLSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoZGJ0c1tpXS5kYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUoZGJ0cyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBDTEVBUl9EQlQoKnNlY0tleSk7CiAKLSAgICAgICAgICAgICAgICBpZiAoZGJ0c1tpXS5kYXRhKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KGRidHNbaV0uZGF0YSwgZGF0YSwgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGRidHNbaV0uc2l6ZSA9IHNpemU7Ci0gICAgICAgICAgICAgICAgICAgIGRidHNbaV0udWxlbiA9IGRidHNbaV0uc2l6ZTsKLSAgICAgICAgICAgICAgICAgICAgZGJ0c1tpXS5mbGFncyA9IERCX0RCVF9BUFBNQUxMT0M7ICAvKiBEQiB3aWxsIGZyZWUgKi8KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1hbGxvYyBmYWlsZWQgaW4gX2RiX2Fzc29jaWF0ZUNhbGxiYWNrIChsaXN0KSIpOwotICAgICAgICAgICAgICAgICAgICBQeUVycl9QcmludCgpOworICAgICAgICAgICAgICAgICAgICAgICAgc2VjS2V5LT5kYXRhID0gZGJ0czsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY0tleS0+c2l6ZSA9IGxpc3RsZW47CisgICAgICAgICAgICAgICAgICAgICAgICBzZWNLZXktPmZsYWdzID0gREJfREJUX0FQUE1BTExPQyB8IERCX0RCVF9NVUxUSVBMRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbCA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIENMRUFSX0RCVCgqc2VjS2V5KTsKLQotICAgICAgICAgICAgc2VjS2V5LT5kYXRhID0gZGJ0czsKLSAgICAgICAgICAgIHNlY0tleS0+c2l6ZSA9IGxpc3RsZW47Ci0gICAgICAgICAgICBzZWNLZXktPmZsYWdzID0gREJfREJUX0FQUE1BTExPQyB8IERCX0RCVF9NVUxUSVBMRTsKLSAgICAgICAgICAgIHJldHZhbCA9IDA7CiAgICAgICAgIH0KICNlbmRpZgogICAgICAgICBlbHNlIHsKQEAgLTIyNDAsNyArMjI1Nyw3IEBACiBEQl9qb2luKERCT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogYXJncykKIHsKICAgICBpbnQgZXJyLCBmbGFncz0wOwotICAgIGludCBsZW5ndGgsIHg7CisgICAgUHlfc3NpemVfdCBsZW5ndGgsIHg7CiAgICAgUHlPYmplY3QqIGN1cnNvcnNPYmo7CiAgICAgREJDKiogY3Vyc29yczsKICAgICBEQkMqICBkYmM7CkBAIC0yMjU3LDYgKzIyNzQsMTIgQEAKICAgICB9CiAKICAgICBsZW5ndGggPSBQeU9iamVjdF9MZW5ndGgoY3Vyc29yc09iaik7CisgICAgaWYgKGxlbmd0aCA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKGxlbmd0aCA+PSBQWV9TU0laRV9UX01BWCAvIHNpemVvZihEQkMqKSkgeworICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CiAgICAgY3Vyc29ycyA9IG1hbGxvYygobGVuZ3RoKzEpICogc2l6ZW9mKERCQyopKTsKICAgICBpZiAoIWN1cnNvcnMpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTIyNzQsNiArMjI5Nyw3IEBACiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTZXF1ZW5jZSBvZiBEQkN1cnNvciBvYmplY3RzIGV4cGVjdGVkIik7CiAgICAgICAgICAgICBmcmVlKGN1cnNvcnMpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgY3Vyc29yc1t4XSA9ICgoREJDdXJzb3JPYmplY3QqKWl0ZW0pLT5kYmM7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jIGIvTW9kdWxlcy9fY29sbGVjdGlvbnNtb2R1bGUuYwppbmRleCAxZGQ0Yjk5Li4zY2EzOTMwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jb2xsZWN0aW9uc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2NvbGxlY3Rpb25zbW9kdWxlLmMKQEAgLTYzOSw3ICs2MzksNyBAQAogUHlEb2NfU1RSVkFSKHJlbW92ZV9kb2MsCiAiRC5yZW1vdmUodmFsdWUpIC0tIHJlbW92ZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHZhbHVlLiIpOwogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogZGVxdWVfY2xlYXIoZGVxdWVvYmplY3QgKmRlcXVlKQogewogICAgIGJsb2NrICpiOwpAQCAtNjUwLDcgKzY1MCw3IEBACiAgICAgUHlPYmplY3QgKml0ZW07CiAKICAgICBpZiAoZGVxdWUtPmxlbiA9PSAwKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiAwOwogCiAgICAgLyogRHVyaW5nIHRoZSBwcm9jZXNzIG9mIGNsZWFyaW5nIGEgZGVxdWUsIGRlY3JlZnMgY2FuIGNhdXNlIHRoZQogICAgICAgIGRlcXVlIHRvIG11dGF0ZS4gIFRvIGF2b2lkIGZhdGFsIGNvbmZ1c2lvbiwgd2UgaGF2ZSB0byBtYWtlIHRoZQpAQCAtNzAxLDcgKzcwMSw3IEBACiAgICAgfQogICAgIGFzc2VydChsZWZ0YmxvY2stPnJpZ2h0bGluayA9PSBOVUxMKTsKICAgICBmcmVlYmxvY2sobGVmdGJsb2NrKTsKLSAgICByZXR1cm47CisgICAgcmV0dXJuIDA7CiAKICAgYWx0ZXJuYXRlX21ldGhvZDoKICAgICB3aGlsZSAoZGVxdWUtPmxlbikgewpAQCAtNzA5LDYgKzcwOSw3IEBACiAgICAgICAgIGFzc2VydCAoaXRlbSAhPSBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwogICAgIH0KKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg1OCwxMSArODU5LDIwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogZGVxdWVfY29weShQeU9iamVjdCAqZGVxdWUpCiB7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBpZiAoKChkZXF1ZW9iamVjdCAqKWRlcXVlKS0+bWF4bGVuID09IC0xKQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKShQeV9UWVBFKGRlcXVlKSksICJPIiwgZGVxdWUsIE5VTEwpOworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0ICopKFB5X1RZUEUoZGVxdWUpKSwgIk8iLCBkZXF1ZSwgTlVMTCk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKChQeU9iamVjdCAqKShQeV9UWVBFKGRlcXVlKSksICJPaSIsCisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QgKikoUHlfVFlQRShkZXF1ZSkpLCAiT2kiLAogICAgICAgICAgICAgZGVxdWUsICgoZGVxdWVvYmplY3QgKilkZXF1ZSktPm1heGxlbiwgTlVMTCk7CisgICAgaWYgKHJlc3VsdCAhPSBOVUxMICYmICFQeU9iamVjdF9UeXBlQ2hlY2socmVzdWx0LCAmZGVxdWVfdHlwZSkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSBtdXN0IHJldHVybiBhIGRlcXVlLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZGVxdWUpLT50cF9uYW1lLCBQeV9UWVBFKHJlc3VsdCktPnRwX25hbWUpOworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5RG9jX1NUUlZBUihjb3B5X2RvYywgIlJldHVybiBhIHNoYWxsb3cgY29weSBvZiBhIGRlcXVlLiIpOwpAQCAtMTI3MSw2ICsxMjgxLDggQEAKIHN0YXRpYyB2b2lkCiBkZXF1ZWl0ZXJfZGVhbGxvYyhkZXF1ZWl0ZXJvYmplY3QgKmRpbykKIHsKKyAgICAvKiBicG8tMzEwOTU6IFVuVHJhY2sgaXMgbmVlZGVkIGJlZm9yZSBjYWxsaW5nIGFueSBjYWxsYmFja3MgKi8KKyAgICBQeU9iamVjdF9HQ19VblRyYWNrKGRpbyk7CiAgICAgUHlfWERFQ1JFRihkaW8tPmRlcXVlKTsKICAgICBQeU9iamVjdF9HQ19EZWwoZGlvKTsKIH0KQEAgLTE1NTYsNiArMTU2OCw4IEBACiBzdGF0aWMgdm9pZAogZGVmZGljdF9kZWFsbG9jKGRlZmRpY3RvYmplY3QgKmRkKQogeworICAgIC8qIGJwby0zMTA5NTogVW5UcmFjayBpcyBuZWVkZWQgYmVmb3JlIGNhbGxpbmcgYW55IGNhbGxiYWNrcyAqLworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soZGQpOwogICAgIFB5X0NMRUFSKGRkLT5kZWZhdWx0X2ZhY3RvcnkpOwogICAgIFB5RGljdF9UeXBlLnRwX2RlYWxsb2MoKFB5T2JqZWN0ICopZGQpOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3N2LmMgYi9Nb2R1bGVzL19jc3YuYwppbmRleCA0NTg5ZjA2Li44OGUzZTkwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jc3YuYworKysgYi9Nb2R1bGVzL19jc3YuYwpAQCAtMjIwLDE1ICsyMjAsMTkgQEAKIHN0YXRpYyBpbnQKIF9zZXRfaW50KGNvbnN0IGNoYXIgKm5hbWUsIGludCAqdGFyZ2V0LCBQeU9iamVjdCAqc3JjLCBpbnQgZGZsdCkKIHsKKyAgICBpbnQgdmFsdWU7CiAgICAgaWYgKHNyYyA9PSBOVUxMKQogICAgICAgICAqdGFyZ2V0ID0gZGZsdDsKICAgICBlbHNlIHsKLSAgICAgICAgaWYgKCFQeUludF9DaGVjayhzcmMpKSB7CisgICAgICAgIGlmICghX1B5QW55SW50X0NoZWNrKHNyYykpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlwiJXNcIiBtdXN0IGJlIGFuIGludGVnZXIiLCBuYW1lKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICAqdGFyZ2V0ID0gUHlJbnRfQXNMb25nKHNyYyk7CisgICAgICAgIHZhbHVlID0gUHlJbnRfQXNMb25nKHNyYyk7CisgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAqdGFyZ2V0ID0gdmFsdWU7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtNTYxLDI0ICs1NjUsMjMgQEAKIHN0YXRpYyBpbnQKIHBhcnNlX2dyb3dfYnVmZihSZWFkZXJPYmogKnNlbGYpCiB7Ci0gICAgaWYgKHNlbGYtPmZpZWxkX3NpemUgPT0gMCkgewotICAgICAgICBzZWxmLT5maWVsZF9zaXplID0gNDA5NjsKLSAgICAgICAgaWYgKHNlbGYtPmZpZWxkICE9IE5VTEwpCi0gICAgICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmZpZWxkKTsKLSAgICAgICAgc2VsZi0+ZmllbGQgPSBQeU1lbV9NYWxsb2Moc2VsZi0+ZmllbGRfc2l6ZSk7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoc2VsZi0+ZmllbGRfc2l6ZSA+IElOVF9NQVggLyAyKSB7Ci0gICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgc2VsZi0+ZmllbGRfc2l6ZSAqPSAyOwotICAgICAgICBzZWxmLT5maWVsZCA9IFB5TWVtX1JlYWxsb2Moc2VsZi0+ZmllbGQsIHNlbGYtPmZpZWxkX3NpemUpOwotICAgIH0KLSAgICBpZiAoc2VsZi0+ZmllbGQgPT0gTlVMTCkgeworICAgIHVuc2lnbmVkIGZpZWxkX3NpemVfbmV3OworICAgIGNoYXIgKmZpZWxkX25ldzsKKworICAgIGFzc2VydCgodW5zaWduZWQpc2VsZi0+ZmllbGRfc2l6ZSA8PSBJTlRfTUFYKTsKKworICAgIGZpZWxkX3NpemVfbmV3ID0gc2VsZi0+ZmllbGRfc2l6ZSA/IDIgKiAodW5zaWduZWQpc2VsZi0+ZmllbGRfc2l6ZSA6IDQwOTY7CisgICAgaWYgKGZpZWxkX3NpemVfbmV3ID4gSU5UX01BWCkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgZmllbGRfbmV3ID0gKGNoYXIgKilQeU1lbV9SZWFsbG9jKHNlbGYtPmZpZWxkLCBmaWVsZF9zaXplX25ldyk7CisgICAgaWYgKGZpZWxkX25ldyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBzZWxmLT5maWVsZCA9IGZpZWxkX25ldzsKKyAgICBzZWxmLT5maWVsZF9zaXplID0gKGludClmaWVsZF9zaXplX25ldzsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMTA4NCwzMSArMTA4NywyNCBAQAogc3RhdGljIGludAogam9pbl9jaGVja19yZWNfc2l6ZShXcml0ZXJPYmogKnNlbGYsIGludCByZWNfbGVuKQogeworICAgIHVuc2lnbmVkIHJlY19zaXplX25ldzsKKyAgICBjaGFyICpyZWNfbmV3OwogCi0gICAgaWYgKHJlY19sZW4gPCAwIHx8IHJlY19sZW4gPiBJTlRfTUFYIC0gTUVNX0lOQ1IpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGFzc2VydChyZWNfbGVuID49IDApOwogCiAgICAgaWYgKHJlY19sZW4gPiBzZWxmLT5yZWNfc2l6ZSkgewotICAgICAgICBpZiAoc2VsZi0+cmVjX3NpemUgPT0gMCkgewotICAgICAgICAgICAgc2VsZi0+cmVjX3NpemUgPSAocmVjX2xlbiAvIE1FTV9JTkNSICsgMSkgKiBNRU1fSU5DUjsKLSAgICAgICAgICAgIGlmIChzZWxmLT5yZWMgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPnJlYyk7Ci0gICAgICAgICAgICBzZWxmLT5yZWMgPSBQeU1lbV9NYWxsb2Moc2VsZi0+cmVjX3NpemUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgY2hhciAqb2xkX3JlYyA9IHNlbGYtPnJlYzsKLQotICAgICAgICAgICAgc2VsZi0+cmVjX3NpemUgPSAocmVjX2xlbiAvIE1FTV9JTkNSICsgMSkgKiBNRU1fSU5DUjsKLSAgICAgICAgICAgIHNlbGYtPnJlYyA9IFB5TWVtX1JlYWxsb2Moc2VsZi0+cmVjLCBzZWxmLT5yZWNfc2l6ZSk7Ci0gICAgICAgICAgICBpZiAoc2VsZi0+cmVjID09IE5VTEwpCi0gICAgICAgICAgICAgICAgUHlNZW1fRnJlZShvbGRfcmVjKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc2VsZi0+cmVjID09IE5VTEwpIHsKKyAgICAgICAgcmVjX3NpemVfbmV3ID0gKHVuc2lnbmVkKShyZWNfbGVuIC8gTUVNX0lOQ1IgKyAxKSAqIE1FTV9JTkNSOworICAgICAgICBpZiAocmVjX3NpemVfbmV3ID4gSU5UX01BWCkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CisgICAgICAgIHJlY19uZXcgPSAoY2hhciAqKVB5TWVtX1JlYWxsb2Moc2VsZi0+cmVjLCByZWNfc2l6ZV9uZXcpOworICAgICAgICBpZiAocmVjX25ldyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc2VsZi0+cmVjID0gcmVjX25ldzsKKyAgICAgICAgc2VsZi0+cmVjX3NpemUgPSAoaW50KXJlY19zaXplX25ldzsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xNDQzLDE3ICsxNDM5LDIwIEBACiBjc3ZfZmllbGRfc2l6ZV9saW1pdChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqbmV3X2xpbWl0ID0gTlVMTDsKLSAgICBsb25nIG9sZF9saW1pdCA9IGZpZWxkX2xpbWl0OworICAgIGxvbmcgb2xkX2xpbWl0ID0gZmllbGRfbGltaXQsIGxpbWl0OwogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZmllbGRfc2l6ZV9saW1pdCIsIDAsIDEsICZuZXdfbGltaXQpKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobmV3X2xpbWl0ICE9IE5VTEwpIHsKLSAgICAgICAgaWYgKCFQeUludF9DaGVjayhuZXdfbGltaXQpKSB7CisgICAgICAgIGlmICghX1B5QW55SW50X0NoZWNrKG5ld19saW1pdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbWl0IG11c3QgYmUgYW4gaW50ZWdlciIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgZmllbGRfbGltaXQgPSBQeUludF9Bc0xvbmcobmV3X2xpbWl0KTsKKyAgICAgICAgbGltaXQgPSBQeUludF9Bc0xvbmcobmV3X2xpbWl0KTsKKyAgICAgICAgaWYgKGxpbWl0ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZmllbGRfbGltaXQgPSBsaW1pdDsKICAgICB9CiAgICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKG9sZF9saW1pdCk7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXMuYwppbmRleCBmMzAxYjEzLi5mYWJiZGYxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlcy5jCisrKyBiL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzLmMKQEAgLTEyOCw2ICsxMjgsMTIgQEAKICNlbmRpZgogI2luY2x1ZGUgImN0eXBlcy5oIgogCisvKiBEZWZpbml0aW9uIG1hdGNoaW5nIGNmaWVsZC5jOjcyNCAqLworI2lmbmRlZiBIQVZFX0M5OV9CT09MCisjdW5kZWYgU0laRU9GX19CT09MCisjZGVmaW5lIFNJWkVPRl9fQk9PTCAxCisjZW5kaWYKKwogUHlPYmplY3QgKlB5RXhjX0FyZ0Vycm9yOwogCiAvKiBUaGlzIGRpY3QgbWFwcyBjdHlwZXMgdHlwZXMgdG8gUE9JTlRFUiB0eXBlcyAqLwpAQCAtMjkyLDYgKzI5OCw3MSBAQAogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICBBbGxvY2F0ZSBhIG1lbW9yeSBibG9jayBmb3IgYSBwZXAzMTE4IGZvcm1hdCBzdHJpbmcsIGZpbGxlZCB3aXRoCisgIGEgc3VpdGFibGUgUEVQIDMxMTggdHlwZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGdpdmVuIGN0eXBlcworICB0eXBlLiBSZXR1cm5zIE5VTEwgb24gZmFpbHVyZSwgd2l0aCB0aGUgZXJyb3IgaW5kaWNhdG9yIHNldC4KKworICBUaGlzIHByb2R1Y2VzIHR5cGUgY29kZXMgaW4gdGhlIHN0YW5kYXJkIHNpemUgbW9kZSAoY2YuIHN0cnVjdCBtb2R1bGUpLAorICBzaW5jZSB0aGUgZW5kaWFubmVzcyBtYXkgbmVlZCB0byBiZSBzd2FwcGVkIHRvIGEgbm9uLW5hdGl2ZSBvbmUKKyAgbGF0ZXIgb24uCisgKi8KK3N0YXRpYyBjaGFyICoKK19jdHlwZXNfYWxsb2NfZm9ybWF0X3N0cmluZ19mb3JfdHlwZShjaGFyIGNvZGUsIGludCBiaWdfZW5kaWFuKQoreworICAgIGNoYXIgKnJlc3VsdDsKKyAgICBjaGFyIHBlcF9jb2RlID0gJ1wwJzsKKworICAgIHN3aXRjaCAoY29kZSkgeworI2lmIFNJWkVPRl9JTlQgPT0gMgorICAgIGNhc2UgJ2knOiBwZXBfY29kZSA9ICdoJzsgYnJlYWs7CisgICAgY2FzZSAnSSc6IHBlcF9jb2RlID0gJ0gnOyBicmVhazsKKyNlbGlmIFNJWkVPRl9JTlQgPT0gNAorICAgIGNhc2UgJ2knOiBwZXBfY29kZSA9ICdpJzsgYnJlYWs7CisgICAgY2FzZSAnSSc6IHBlcF9jb2RlID0gJ0knOyBicmVhazsKKyNlbGlmIFNJWkVPRl9JTlQgPT0gOAorICAgIGNhc2UgJ2knOiBwZXBfY29kZSA9ICdxJzsgYnJlYWs7CisgICAgY2FzZSAnSSc6IHBlcF9jb2RlID0gJ1EnOyBicmVhazsKKyNlbHNlCisjIGVycm9yIFNJWkVPRl9JTlQgaGFzIGFuIHVuZXhwZWN0ZWQgdmFsdWUKKyNlbmRpZiAvKiBTSVpFT0ZfSU5UICovCisjaWYgU0laRU9GX0xPTkcgPT0gNAorICAgIGNhc2UgJ2wnOiBwZXBfY29kZSA9ICdsJzsgYnJlYWs7CisgICAgY2FzZSAnTCc6IHBlcF9jb2RlID0gJ0wnOyBicmVhazsKKyNlbGlmIFNJWkVPRl9MT05HID09IDgKKyAgICBjYXNlICdsJzogcGVwX2NvZGUgPSAncSc7IGJyZWFrOworICAgIGNhc2UgJ0wnOiBwZXBfY29kZSA9ICdRJzsgYnJlYWs7CisjZWxzZQorIyBlcnJvciBTSVpFT0ZfTE9ORyBoYXMgYW4gdW5leHBlY3RlZCB2YWx1ZQorI2VuZGlmIC8qIFNJWkVPRl9MT05HICovCisjaWYgU0laRU9GX19CT09MID09IDEKKyAgICBjYXNlICc/JzogcGVwX2NvZGUgPSAnPyc7IGJyZWFrOworI2VsaWYgU0laRU9GX19CT09MID09IDIKKyAgICBjYXNlICc/JzogcGVwX2NvZGUgPSAnSCc7IGJyZWFrOworI2VsaWYgU0laRU9GX19CT09MID09IDQKKyAgICBjYXNlICc/JzogcGVwX2NvZGUgPSAnTCc7IGJyZWFrOworI2VsaWYgU0laRU9GX19CT09MID09IDgKKyAgICBjYXNlICc/JzogcGVwX2NvZGUgPSAnUSc7IGJyZWFrOworI2Vsc2UKKyMgZXJyb3IgU0laRU9GX19CT09MIGhhcyBhbiB1bmV4cGVjdGVkIHZhbHVlCisjZW5kaWYgLyogU0laRU9GX19CT09MICovCisgICAgZGVmYXVsdDoKKyAgICAgICAgLyogVGhlIHN0YW5kYXJkLXNpemUgY29kZSBpcyB0aGUgc2FtZSBhcyB0aGUgY3R5cGVzIG9uZSAqLworICAgICAgICBwZXBfY29kZSA9IGNvZGU7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJlc3VsdCA9IFB5TWVtX01hbGxvYygzKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmVzdWx0WzBdID0gYmlnX2VuZGlhbiA/ICc+JyA6ICc8JzsKKyAgICByZXN1bHRbMV0gPSBwZXBfY29kZTsKKyAgICByZXN1bHRbMl0gPSAnXDAnOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIC8qCiAgIEFsbG9jYXRlIGEgbWVtb3J5IGJsb2NrIGZvciBhIHBlcDMxMTggZm9ybWF0IHN0cmluZywgY29weSBwcmVmaXggKGlmCiAgIG5vbi1udWxsKSBhbmQgc3VmZml4IGludG8gaXQuICBSZXR1cm5zIE5VTEwgb24gZmFpbHVyZSwgd2l0aCB0aGUgZXJyb3IKQEAgLTQ3Niw3ICs1NDcsNyBAQAogQ0RhdGFUeXBlX2Zyb21fYWRkcmVzcyhQeU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnZhbHVlKQogewogICAgIHZvaWQgKmJ1ZjsKLSAgICBpZiAoIVB5SW50X0NoZWNrKHZhbHVlKSAmJiAhUHlMb25nX0NoZWNrKHZhbHVlKSkgeworICAgIGlmICghX1B5QW55SW50X0NoZWNrKHZhbHVlKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImludGVnZXIgZXhwZWN0ZWQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC02MjAsNyArNjkxLDcgQEAKICAgICBvYmogPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKGRsbCwgIl9oYW5kbGUiKTsKICAgICBpZiAoIW9iaikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKCFQeUludF9DaGVjayhvYmopICYmICFQeUxvbmdfQ2hlY2sob2JqKSkgeworICAgIGlmICghX1B5QW55SW50X0NoZWNrKG9iaikpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgX2hhbmRsZSBhdHRyaWJ1dGUgb2YgdGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGFuIGludGVnZXIiKTsKICAgICAgICAgUHlfREVDUkVGKG9iaik7CkBAIC05NjUsNiArMTAzNiw3IEBACiAgICAgaWYgKHByb3RvKSB7CiAgICAgICAgIFN0Z0RpY3RPYmplY3QgKml0ZW1kaWN0ID0gUHlUeXBlX3N0Z2RpY3QocHJvdG8pOwogICAgICAgICBjb25zdCBjaGFyICpjdXJyZW50X2Zvcm1hdDsKKyAgICAgICAgLyogUHlDUG9pbnRlclR5cGVfU2V0UHJvdG8gaGFzIHZlcmlmaWVkIHByb3RvIGhhcyBhIHN0Z2RpY3QuICovCiAgICAgICAgIGFzc2VydChpdGVtZGljdCk7CiAgICAgICAgIC8qIElmIGl0ZW1kaWN0LT5mb3JtYXQgaXMgTlVMTCwgdGhlbiB0aGlzIGlzIGEgcG9pbnRlciB0byBhbgogICAgICAgICAgICBpbmNvbXBsZXRlIHR5cGUuICBXZSBjcmVhdGUgYSBnZW5lcmljIGZvcm1hdCBzdHJpbmcKQEAgLTEwMTEsNyArMTA4MywxMSBAQAogICAgIFN0Z0RpY3RPYmplY3QgKmRpY3Q7CiAKICAgICBkaWN0ID0gUHlUeXBlX3N0Z2RpY3QoKFB5T2JqZWN0ICopc2VsZik7Ci0gICAgYXNzZXJ0KGRpY3QpOworICAgIGlmICghZGljdCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImFic3RyYWN0IGNsYXNzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIGlmICgtMSA9PSBQeUNQb2ludGVyVHlwZV9TZXRQcm90byhkaWN0LCB0eXBlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMDM3LDcgKzExMTMsMTEgQEAKICAgICB9CiAKICAgICB0eXBlZGljdCA9IFB5VHlwZV9zdGdkaWN0KHR5cGUpOwotICAgIGFzc2VydCh0eXBlZGljdCk7IC8qIENhbm5vdCBiZSBOVUxMIGZvciBwb2ludGVyIHR5cGVzICovCisgICAgaWYgKCF0eXBlZGljdCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImFic3RyYWN0IGNsYXNzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIC8qIElmIHdlIGV4cGVjdCBQT0lOVEVSKDx0eXBlPiksIGJ1dCByZWNlaXZlIGEgPHR5cGU+IGluc3RhbmNlLCBhY2NlcHQKICAgICAgICBpdCBieSBjYWxsaW5nIGJ5cmVmKDx0eXBlPikuCkBAIC0xNjk5LDcgKzE3NzksNyBAQAogICAgIH0KICAgICAvKiBTaG91bGQgcHJvYmFibHkgYWxsb3cgYnVmZmVyIGludGVyZmFjZSBhcyB3ZWxsICovCiAvKiBpbnQsIGxvbmcgKi8KLSAgICBpZiAoUHlJbnRfQ2hlY2sodmFsdWUpIHx8IFB5TG9uZ19DaGVjayh2YWx1ZSkpIHsKKyAgICBpZiAoX1B5QW55SW50X0NoZWNrKHZhbHVlKSkgewogICAgICAgICBQeUNBcmdPYmplY3QgKnBhcmc7CiAgICAgICAgIHN0cnVjdCBmaWVsZGRlc2MgKmZkID0gX2N0eXBlc19nZXRfZmllbGRkZXNjKCJQIik7CiAKQEAgLTE5OTksOSArMjA3OSw5IEBACiAgICAgc3RnZGljdC0+c2V0ZnVuYyA9IGZtdC0+c2V0ZnVuYzsKICAgICBzdGdkaWN0LT5nZXRmdW5jID0gZm10LT5nZXRmdW5jOwogI2lmZGVmIFdPUkRTX0JJR0VORElBTgotICAgIHN0Z2RpY3QtPmZvcm1hdCA9IF9jdHlwZXNfYWxsb2NfZm9ybWF0X3N0cmluZygiPiIsIHByb3RvX3N0cik7CisgICAgc3RnZGljdC0+Zm9ybWF0ID0gX2N0eXBlc19hbGxvY19mb3JtYXRfc3RyaW5nX2Zvcl90eXBlKHByb3RvX3N0clswXSwgMSk7CiAjZWxzZQotICAgIHN0Z2RpY3QtPmZvcm1hdCA9IF9jdHlwZXNfYWxsb2NfZm9ybWF0X3N0cmluZygiPCIsIHByb3RvX3N0cik7CisgICAgc3RnZGljdC0+Zm9ybWF0ID0gX2N0eXBlc19hbGxvY19mb3JtYXRfc3RyaW5nX2Zvcl90eXBlKHByb3RvX3N0clswXSwgMCk7CiAjZW5kaWYKICAgICBpZiAoc3RnZGljdC0+Zm9ybWF0ID09IE5VTEwpIHsKICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CkBAIC0yMTU1LDcgKzIyMzUsMTEgQEAKICAgICB9CiAKICAgICBkaWN0ID0gUHlUeXBlX3N0Z2RpY3QodHlwZSk7Ci0gICAgYXNzZXJ0KGRpY3QpOworICAgIGlmICghZGljdCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImFic3RyYWN0IGNsYXNzIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAogICAgIC8qIEkgdGhpbmsgd2UgY2FuIHJlbHkgb24gdGhpcyBiZWluZyBhIG9uZS1jaGFyYWN0ZXIgc3RyaW5nICovCiAgICAgZm10ID0gUHlTdHJpbmdfQXNTdHJpbmcoZGljdC0+cHJvdG8pOwpAQCAtMjcxNSw2ICsyNzk5LDE2IEBACiAgICAgICAgIGxlbiA9IHNlbGYtPmJfc2l6ZTsKICAgICBtZW1tb3ZlKHNlbGYtPmJfcHRyLCBkYXRhLCBsZW4pOwogICAgIG15ZGljdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcoX3NlbGYsICJfX2RpY3RfXyIpOworICAgIGlmIChteWRpY3QgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFQeURpY3RfQ2hlY2sobXlkaWN0KSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcy5fX2RpY3RfXyBtdXN0IGJlIGEgZGljdGlvbmFyeSwgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKF9zZWxmKS0+dHBfbmFtZSwgUHlfVFlQRShteWRpY3QpLT50cF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKG15ZGljdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXMgPSBQeURpY3RfVXBkYXRlKG15ZGljdCwgZGljdCk7CiAgICAgUHlfREVDUkVGKG15ZGljdCk7CiAgICAgaWYgKHJlcyA9PSAtMSkKQEAgLTMyNjYsNyArMzM2MCwxMSBAQAogICAgIFB5T2JqZWN0ICphcmd0eXBlczsKIAogICAgIGRpY3QgPSBQeVR5cGVfc3RnZGljdCgoUHlPYmplY3QgKil0eXBlKTsKLSAgICBhc3NlcnQoZGljdCk7IC8qIENhbm5vdCBiZSBOVUxMLiAndHlwZScgaXMgYSBQeUNGdW5jUHRyIHR5cGUuICovCisgICAgaWYgKCFkaWN0KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiYWJzdHJhY3QgY2xhc3MiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGFyZ3R5cGVzID0gZGljdC0+YXJndHlwZXM7CiAKICAgICBpZiAocGFyYW1mbGFncyA9PSBOVUxMIHx8IGRpY3QtPmFyZ3R5cGVzID09IE5VTEwpCkBAIC0zMzIxLDcgKzM0MTksNyBAQAogX2dldF9uYW1lKFB5T2JqZWN0ICpvYmosIGNoYXIgKipwbmFtZSkKIHsKICNpZmRlZiBNU19XSU4zMgotICAgIGlmIChQeUludF9DaGVjayhvYmopIHx8IFB5TG9uZ19DaGVjayhvYmopKSB7CisgICAgaWYgKF9QeUFueUludF9DaGVjayhvYmopKSB7CiAgICAgICAgIC8qIFdlIGhhdmUgdG8gdXNlIE1BS0VJTlRSRVNPVVJDRUEgZm9yIFdpbmRvd3MgQ0UuCiAgICAgICAgICAgIFdvcmtzIG9uIFdpbmRvd3MgYXMgd2VsbCwgb2YgY291cnNlLgogICAgICAgICAqLwpAQCAtMzM3MSw3ICszNDY5LDcgQEAKICAgICAgICAgUHlfREVDUkVGKGZ0dXBsZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoIVB5SW50X0NoZWNrKG9iaikgJiYgIVB5TG9uZ19DaGVjayhvYmopKSB7CisgICAgaWYgKCFfUHlBbnlJbnRfQ2hlY2sob2JqKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBfaGFuZGxlIGF0dHJpYnV0ZSBvZiB0aGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYW4gaW50ZWdlciIpOwogICAgICAgICBQeV9ERUNSRUYoZnR1cGxlKTsKQEAgLTM1MDIsOCArMzYwMCw3IEBACiAjZW5kaWYKIAogICAgIGlmICgxID09IFB5VHVwbGVfR0VUX1NJWkUoYXJncykKLSAgICAgICAgJiYgKFB5SW50X0NoZWNrKFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCkpCi0gICAgICAgIHx8IFB5TG9uZ19DaGVjayhQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApKSkpIHsKKyAgICAgICAgJiYgX1B5QW55SW50X0NoZWNrKFB5VHVwbGVfR0VUX0lURU0oYXJncywgMCkpKSB7CiAgICAgICAgIENEYXRhT2JqZWN0ICpvYjsKICAgICAgICAgdm9pZCAqcHRyID0gUHlMb25nX0FzVm9pZFB0cihQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDApKTsKICAgICAgICAgaWYgKHB0ciA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpCkBAIC00NDM0LDkgKzQ1MzEsNyBAQAogICAgICAgICBQeU9iamVjdCAqbnA7CiAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuLCBjdXIsIGk7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0ICopaXRlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmJfbGVuZ3RoLCAmc3RhcnQsICZzdG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ZXAsICZzbGljZWxlbikgPCAwKSB7CisgICAgICAgIGlmIChfUHlTbGljZV9VbnBhY2soaXRlbSwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KIApAQCAtNDQ0Nyw2ICs0NTQyLDcgQEAKICAgICAgICAgYXNzZXJ0KGl0ZW1kaWN0KTsgLyogcHJvdG8gaXMgdGhlIGl0ZW0gdHlwZSBvZiB0aGUgYXJyYXksIGEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVzIHR5cGUsIHNvIHRoaXMgY2Fubm90IGJlIE5VTEwgKi8KIAorICAgICAgICBzbGljZWxlbiA9IF9QeVNsaWNlX0FkanVzdEluZGljZXMoc2VsZi0+Yl9sZW5ndGgsICZzdGFydCwgJnN0b3AsIHN0ZXApOwogICAgICAgICBpZiAoaXRlbWRpY3QtPmdldGZ1bmMgPT0gX2N0eXBlc19nZXRfZmllbGRkZXNjKCJjIiktPmdldGZ1bmMpIHsKICAgICAgICAgICAgIGNoYXIgKnB0ciA9IChjaGFyICopc2VsZi0+Yl9wdHI7CiAgICAgICAgICAgICBjaGFyICpkZXN0OwpAQCAtNDYxMywxMSArNDcwOSwxMCBAQAogICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW4sIG90aGVybGVuLCBpLCBjdXI7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0ICopaXRlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPmJfbGVuZ3RoLCAmc3RhcnQsICZzdG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ZXAsICZzbGljZWxlbikgPCAwKSB7CisgICAgICAgIGlmIChfUHlTbGljZV9VbnBhY2soaXRlbSwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CisgICAgICAgIHNsaWNlbGVuID0gX1B5U2xpY2VfQWRqdXN0SW5kaWNlcyhzZWxmLT5iX2xlbmd0aCwgJnN0YXJ0LCAmc3RvcCwgc3RlcCk7CiAgICAgICAgIGlmICgoc3RlcCA8IDAgJiYgc3RhcnQgPCBzdG9wKSB8fAogICAgICAgICAgICAgKHN0ZXAgPiAwICYmIHN0YXJ0ID4gc3RvcCkpCiAgICAgICAgICAgICBzdG9wID0gc3RhcnQ7CkBAIC01MDExLDcgKzUxMDYsNyBAQAogICAgIH0KIAogICAgIHN0Z2RpY3QgPSBQeU9iamVjdF9zdGdkaWN0KChQeU9iamVjdCAqKXNlbGYpOwotICAgIGFzc2VydChzdGdkaWN0KTsgLyogQ2Fubm90IGJlIE5VTEwgZnIgcG9pbnRlciBpbnN0YW5jZXMgKi8KKyAgICBhc3NlcnQoc3RnZGljdCk7IC8qIENhbm5vdCBiZSBOVUxMIGZvciBwb2ludGVyIGluc3RhbmNlcyAqLwogCiAgICAgcHJvdG8gPSBzdGdkaWN0LT5wcm90bzsKICAgICBhc3NlcnQocHJvdG8pOwpAQCAtNTAzOSw3ICs1MTM0LDcgQEAKICAgICB9CiAKICAgICBzdGdkaWN0ID0gUHlPYmplY3Rfc3RnZGljdCgoUHlPYmplY3QgKilzZWxmKTsKLSAgICBhc3NlcnQoc3RnZGljdCk7IC8qIENhbm5vdCBiZSBOVUxMIGZyIHBvaW50ZXIgaW5zdGFuY2VzICovCisgICAgYXNzZXJ0KHN0Z2RpY3QpOyAvKiBDYW5ub3QgYmUgTlVMTCBmb3IgcG9pbnRlciBpbnN0YW5jZXMgKi8KICAgICByZXR1cm4gUHlDRGF0YV9Gcm9tQmFzZU9iaihzdGdkaWN0LT5wcm90bywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopc2VsZiwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKih2b2lkICoqKXNlbGYtPmJfcHRyKTsKQEAgLTUwNTgsNyArNTE1Myw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgc3RnZGljdCA9IFB5T2JqZWN0X3N0Z2RpY3QoKFB5T2JqZWN0ICopc2VsZik7Ci0gICAgYXNzZXJ0KHN0Z2RpY3QpOyAvKiBDYW5ub3QgYmUgTlVMTCBmciBwb2ludGVyIGluc3RhbmNlcyAqLworICAgIGFzc2VydChzdGdkaWN0KTsgLyogQ2Fubm90IGJlIE5VTEwgZm9yIHBvaW50ZXIgaW5zdGFuY2VzICovCiAgICAgYXNzZXJ0KHN0Z2RpY3QtPnByb3RvKTsKICAgICBpZiAoIUNEYXRhT2JqZWN0X0NoZWNrKHZhbHVlKSkgewogICAgICAgICBpbnQgcmVzID0gUHlPYmplY3RfSXNJbnN0YW5jZSh2YWx1ZSwgc3RnZGljdC0+cHJvdG8pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jIGIvTW9kdWxlcy9fY3R5cGVzL19jdHlwZXNfdGVzdC5jCmluZGV4IGYyOTVjNmYuLjk0Njc4ZjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N0eXBlcy9fY3R5cGVzX3Rlc3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvX2N0eXBlc190ZXN0LmMKQEAgLTUyLDYgKzUyLDE5IEBACiAgICAgZnVuYyhpbik7CiB9CiAKKy8qCisgKiBTZWUgaXNzdWUgMjk1NjUuIFVwZGF0ZSBhIHN0cnVjdHVyZSBwYXNzZWQgYnkgdmFsdWU7CisgKiB0aGUgY2FsbGVyIHNob3VsZCBub3Qgc2VlIGFueSBjaGFuZ2UuCisgKi8KKworRVhQT1JUKHZvaWQpCitfdGVzdGZ1bmNfbGFyZ2Vfc3RydWN0X3VwZGF0ZV92YWx1ZShUZXN0IGluKQoreworICAgIGluLmZpcnN0ID0gMHgwYmFkZjAwZDsKKyAgICBpbi5zZWNvbmQgPSAweDBiYWRmMDBkOworICAgIGluLnRoaXJkID0gMHgwYmFkZjAwZDsKK30KKwogRVhQT1JUKHZvaWQpdGVzdGZ1bmNfYXJyYXkoaW50IHZhbHVlc1s0XSkKIHsKICAgICBwcmludGYoInRlc3RmdW5jX2FycmF5ICVkICVkICVkICVkXG4iLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL2NhbGxwcm9jLmMgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwppbmRleCAzYTEyZWI2Li45MTIzM2Q1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvY2FsbHByb2MuYwpAQCAtMTI4MSw3ICsxMjgxLDcgQEAKICAgICBQeU9iamVjdCAqbmFtZW9iajsKICAgICBQeU9iamVjdCAqaWdub3JlZDsKICAgICBITU9EVUxFIGhNb2Q7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJTfE86TG9hZExpYnJhcnkiLCAmbmFtZW9iaiwgJmlnbm9yZWQpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPOkxvYWRMaWJyYXJ5IiwgJm5hbWVvYmosICZpZ25vcmVkKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAjaWZkZWYgX1VOSUNPREUKICAgICBuYW1lID0gYWxsb2NhKChQeVN0cmluZ19TaXplKG5hbWVvYmopICsgMSkgKiBzaXplb2YoV0NIQVIpKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYyBiL01vZHVsZXMvX2N0eXBlcy9jZmllbGQuYwppbmRleCBlMDMzY2Q1Li40NmYwNDFiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvY2ZpZWxkLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2NmaWVsZC5jCkBAIC0yMDUsNyArMjA1LDExIEBACiB7CiAgICAgQ0RhdGFPYmplY3QgKmRzdDsKICAgICBjaGFyICpwdHI7Ci0gICAgYXNzZXJ0KENEYXRhT2JqZWN0X0NoZWNrKGluc3QpKTsKKyAgICBpZiAoIUNEYXRhT2JqZWN0X0NoZWNrKGluc3QpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IGEgY3R5cGUgaW5zdGFuY2UiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBkc3QgPSAoQ0RhdGFPYmplY3QgKilpbnN0OwogICAgIHB0ciA9IGRzdC0+Yl9wdHIgKyBzZWxmLT5vZmZzZXQ7CiAgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKQEAgLTIyNSw3ICsyMjksMTEgQEAKICAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwogICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKICAgICB9Ci0gICAgYXNzZXJ0KENEYXRhT2JqZWN0X0NoZWNrKGluc3QpKTsKKyAgICBpZiAoIUNEYXRhT2JqZWN0X0NoZWNrKGluc3QpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IGEgY3R5cGUgaW5zdGFuY2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHNyYyA9IChDRGF0YU9iamVjdCAqKWluc3Q7CiAgICAgcmV0dXJuIFB5Q0RhdGFfZ2V0KHNlbGYtPnByb3RvLCBzZWxmLT5nZXRmdW5jLCBpbnN0LAogICAgICAgICAgICAgICAgICAgICAgc2VsZi0+aW5kZXgsIHNlbGYtPnNpemUsIHNyYy0+Yl9wdHIgKyBzZWxmLT5vZmZzZXQpOwpAQCAtMTM1Myw3ICsxMzYxLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAqKGNoYXIgKiopcHRyID0gUHlTdHJpbmdfQVNfU1RSSU5HKHN0cik7CiAgICAgICAgIHJldHVybiBzdHI7Ci0gICAgfSBlbHNlIGlmIChQeUludF9DaGVjayh2YWx1ZSkgfHwgUHlMb25nX0NoZWNrKHZhbHVlKSkgeworICAgIH0gZWxzZSBpZiAoX1B5QW55SW50X0NoZWNrKHZhbHVlKSkgewogI2lmIFNJWkVPRl9WT0lEX1AgPT0gU0laRU9GX0xPTkdfTE9ORwogICAgICAgICAqKGNoYXIgKiopcHRyID0gKGNoYXIgKilQeUludF9Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKHZhbHVlKTsKICNlbHNlCkBAIC0xNDAyLDcgKzE0MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY3R5cGVzX2NvbnZlcnNpb25fZXJyb3JzKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0gZWxzZSBpZiAoUHlJbnRfQ2hlY2sodmFsdWUpIHx8IFB5TG9uZ19DaGVjayh2YWx1ZSkpIHsKKyAgICB9IGVsc2UgaWYgKF9QeUFueUludF9DaGVjayh2YWx1ZSkpIHsKICNpZiBTSVpFT0ZfVk9JRF9QID09IFNJWkVPRl9MT05HX0xPTkcKICAgICAgICAgKih3Y2hhcl90ICoqKXB0ciA9ICh3Y2hhcl90ICopUHlJbnRfQXNVbnNpZ25lZExvbmdMb25nTWFzayh2YWx1ZSk7CiAjZWxzZQpAQCAtMTU1Nyw3ICsxNTY1LDcgQEAKICAgICAgICAgX1JFVCh2YWx1ZSk7CiAgICAgfQogCi0gICAgaWYgKCFQeUludF9DaGVjayh2YWx1ZSkgJiYgIVB5TG9uZ19DaGVjayh2YWx1ZSkpIHsKKyAgICBpZiAoIV9QeUFueUludF9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgYmUgY29udmVydGVkIHRvIHBvaW50ZXIiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmggYi9Nb2R1bGVzL19jdHlwZXMvY3R5cGVzLmgKaW5kZXggYjIxZmU5Mi4uMTJiNTZjNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL2N0eXBlcy5oCisrKyBiL01vZHVsZXMvX2N0eXBlcy9jdHlwZXMuaApAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgZmZpX3R5cGUgKmF0eXBlc1sxXTsKIH0gQ1RodW5rT2JqZWN0OwogZXh0ZXJuIFB5VHlwZU9iamVjdCBQeUNUaHVua19UeXBlOwotI2RlZmluZSBDVGh1bmtfQ2hlY2tFeGFjdCh2KSAgICAgICAgKCh2KS0+b2JfdHlwZSA9PSAmUHlDVGh1bmtfVHlwZSkKKyNkZWZpbmUgQ1RodW5rX0NoZWNrRXhhY3QodikgICAgICAgIChQeV9UWVBFKHYpID09ICZQeUNUaHVua19UeXBlKQogCiB0eXBlZGVmIHN0cnVjdCB7CiAgICAgLyogRmlyc3QgcGFydCBpZGVudGljYWwgdG8gdGFnQ0RhdGFPYmplY3QgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfbXN2Yy9mZmkuYyBiL01vZHVsZXMvX2N0eXBlcy9saWJmZmlfbXN2Yy9mZmkuYwppbmRleCA1MTVkODAyLi41ODdjOTRiIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpX21zdmMvZmZpLmMKKysrIGIvTW9kdWxlcy9fY3R5cGVzL2xpYmZmaV9tc3ZjL2ZmaS5jCkBAIC0xMTksNyArMTE5LDcgQEAKICAgICAgIGFyZ3AgKz0gejsKICAgICB9CiAKLSAgaWYgKGFyZ3AgLSBzdGFjayA+IGVjaWYtPmNpZi0+Ynl0ZXMpIAorICBpZiAoYXJncCA+PSBzdGFjayAmJiAodW5zaWduZWQpKGFyZ3AgLSBzdGFjaykgPiBlY2lmLT5jaWYtPmJ5dGVzKQogICAgIHsKICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZGSSBCVUc6IG5vdCBlbm91Z2ggc3RhY2sgc3BhY2UgZm9yIGFyZ3VtZW50cyIpOwogICAgIH0KQEAgLTIyMCw2ICsyMjAsMjAgQEAKICAgICAgIGJyZWFrOwogI2Vsc2UKICAgICBjYXNlIEZGSV9TWVNWOgorICAgICAgLyogdXNlIGEgbG9jYWwgc2NvcGUgZm9yIHRoZSAnaScgdmFyaWFibGUgKi8KKyAgICAgIHsKKyAgICAgICAgICB1bnNpZ25lZCBpOworICAgICAgICAgIC8qIElmIGEgc2luZ2xlIGFyZ3VtZW50IHRha2VzIG1vcmUgdGhhbiA4IGJ5dGVzLAorICAgICAgICAgICAgIHRoZW4gYSBjb3B5IGlzIHBhc3NlZCBieSByZWZlcmVuY2UuICovCisgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNpZi0+bmFyZ3M7IGkrKykgeworICAgICAgICAgICAgICBzaXplX3QgeiA9IGNpZi0+YXJnX3R5cGVzW2ldLT5zaXplOworICAgICAgICAgICAgICBpZiAoeiA+IDgpIHsKKyAgICAgICAgICAgICAgICAgIHZvaWQgKnRlbXAgPSBhbGxvY2Eoeik7CisgICAgICAgICAgICAgICAgICBtZW1jcHkodGVtcCwgYXZhbHVlW2ldLCB6KTsKKyAgICAgICAgICAgICAgICAgIGF2YWx1ZVtpXSA9IHRlbXA7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICB9CiAgICAgICAvKkAtdXNlZGVmQCovCiAgICAgICByZXR1cm4gZmZpX2NhbGxfQU1ENjQoZmZpX3ByZXBfYXJncywgJmVjaWYsIGNpZi0+Ynl0ZXMsCiAJCQkgICBjaWYtPmZsYWdzLCBlY2lmLnJ2YWx1ZSwgZm4pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYyBiL01vZHVsZXMvX2N0eXBlcy9zdGdkaWN0LmMKaW5kZXggOTBjZTNlNS4uZDFiZTNjYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fY3R5cGVzL3N0Z2RpY3QuYworKysgYi9Nb2R1bGVzL19jdHlwZXMvc3RnZGljdC5jCkBAIC0yODYsNyArMjg2LDE1IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoYW5vbl9uYW1lcyk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgYXNzZXJ0KFB5X1RZUEUoZGVzY3IpID09ICZQeUNGaWVsZF9UeXBlKTsKKyAgICAgICAgaWYgKFB5X1RZUEUoZGVzY3IpICE9ICZQeUNGaWVsZF9UeXBlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImFuIGl0ZW0gaW4gX2Fub255bW91c18gKGluZGV4ICV6ZCkgaXMgbm90ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmaWVkIGluIF9maWVsZHNfIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihhbm9uX25hbWVzKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihkZXNjcik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgZGVzY3ItPmFub255bW91cyA9IDE7CiAKICAgICAgICAgLyogZGVzY3IgaXMgaW4gdGhlIGZpZWxkIGRlc2NyaXB0b3IuICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19jdXJzZXNtb2R1bGUuYyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCmluZGV4IGU0NzhhNTcuLjBlYzRlZTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2N1cnNlc21vZHVsZS5jCkBAIC0xMTMsMTMgKzExMywxMyBAQAogI2RlZmluZSBDVVJTRVNfTU9EVUxFCiAjaW5jbHVkZSAicHlfY3Vyc2VzLmgiCiAKLS8qICBUaGVzZSBwcm90b3R5cGVzIGFyZSBpbiA8dGVybS5oPiwgYnV0IGluY2x1ZGluZyB0aGlzIGhlYWRlcgotICAgICNkZWZpbmVzIG1hbnkgY29tbW9uIHN5bWJvbHMgKHN1Y2ggYXMgImxpbmVzIikgd2hpY2ggYnJlYWtzIHRoZQotICAgIGN1cnNlcyBtb2R1bGUgaW4gb3RoZXIgd2F5cy4gIFNvIHRoZSBjb2RlIHdpbGwganVzdCBzcGVjaWZ5Ci0gICAgZXhwbGljaXQgcHJvdG90eXBlcyBoZXJlLiAqLwotZXh0ZXJuIGludCBzZXR1cHRlcm0oY2hhciAqLGludCxpbnQgKik7Ci0jaWZkZWYgX19zZ2kKKyNpZiBkZWZpbmVkKEhBVkVfVEVSTV9IKSB8fCBkZWZpbmVkKF9fc2dpKQorLyogRm9yIHRlcm1uYW1lLCBsb25nbmFtZSwgcHV0cCwgdGlnZXRmbGFnLCB0aWdldG51bSwgdGlnZXRzdHIsIHRwYXJtCisgICB3aGljaCBhcmUgbm90IGRlY2xhcmVkIGluIFN5c1YgY3Vyc2VzIGFuZCBmb3Igc2V0dXB0ZXJtLiAqLwogI2luY2x1ZGUgPHRlcm0uaD4KKy8qIEluY2x1ZGluZyA8dGVybS5oPiAjZGVmaW5lcyBtYW55IGNvbW1vbiBzeW1ib2xzLiAqLworI3VuZGVmIGxpbmVzCisjdW5kZWYgY29sdW1ucwogI2VuZGlmCiAKICNpZiAhZGVmaW5lZChIQVZFX05DVVJTRVNfSCkgJiYgKGRlZmluZWQoc2dpKSB8fCBkZWZpbmVkKF9fc3VuKSB8fCBkZWZpbmVkKFNDTzUpKQpAQCAtMTk0LDggKzE5NCwxMCBAQAogc3RhdGljIGludAogUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKFB5T2JqZWN0ICpvYmosIGNodHlwZSAqY2gpCiB7Ci0gICAgaWYgKFB5SW50X0NoZWNrKG9iaikpIHsKKyAgICBpZiAoX1B5QW55SW50X0NoZWNrKG9iaikpIHsKICAgICAgICAgKmNoID0gKGNodHlwZSkgUHlJbnRfQXNMb25nKG9iaik7CisgICAgICAgIGlmICgqY2ggPT0gKGNodHlwZSkgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0gZWxzZSBpZihQeVN0cmluZ19DaGVjayhvYmopCiAgICAgICAgICAgICAgICYmIChQeVN0cmluZ19TaXplKG9iaikgPT0gMSkpIHsKICAgICAgICAgKmNoID0gKGNodHlwZSkgKlB5U3RyaW5nX0FzU3RyaW5nKG9iaik7CkBAIC0zMTIsNyArMzE0LDkgQEAKIFdpbmRvd19Ob0FyZ05vUmV0dXJuVm9pZEZ1bmN0aW9uKHdjbGVhcikKIAogV2luZG93X09uZUFyZ05vUmV0dXJuVm9pZEZ1bmN0aW9uKGlkY29rLCBpbnQsICJpO1RydWUoMSkgb3IgRmFsc2UoMCkiKQorI2lmZGVmIEhBVkVfQ1VSU0VTX0lNTUVET0sKIFdpbmRvd19PbmVBcmdOb1JldHVyblZvaWRGdW5jdGlvbihpbW1lZG9rLCBpbnQsICJpO1RydWUoMSkgb3IgRmFsc2UoMCkiKQorI2VuZGlmCiBXaW5kb3dfT25lQXJnTm9SZXR1cm5Wb2lkRnVuY3Rpb24od3RpbWVvdXQsIGludCwgImk7ZGVsYXkiKQogCiBXaW5kb3dfTm9BcmcyVHVwbGVSZXR1cm5GdW5jdGlvbihnZXR5eCwgaW50LCAiaWkiKQpAQCAtMzIyLDIxICszMjYsMTUgQEAKIAogV2luZG93X09uZUFyZ05vUmV0dXJuRnVuY3Rpb24oY2xlYXJvaywgaW50LCAiaTtUcnVlKDEpIG9yIEZhbHNlKDApIikKIFdpbmRvd19PbmVBcmdOb1JldHVybkZ1bmN0aW9uKGlkbG9rLCBpbnQsICJpO1RydWUoMSkgb3IgRmFsc2UoMCkiKQotI2lmIGRlZmluZWQoX19OZXRCU0RfXykKLVdpbmRvd19PbmVBcmdOb1JldHVyblZvaWRGdW5jdGlvbihrZXlwYWQsIGludCwgImk7VHJ1ZSgxKSBvciBGYWxzZSgwKSIpCi0jZWxzZQogV2luZG93X09uZUFyZ05vUmV0dXJuRnVuY3Rpb24oa2V5cGFkLCBpbnQsICJpO1RydWUoMSkgb3IgRmFsc2UoMCkiKQotI2VuZGlmCiBXaW5kb3dfT25lQXJnTm9SZXR1cm5GdW5jdGlvbihsZWF2ZW9rLCBpbnQsICJpO1RydWUoMSkgb3IgRmFsc2UoMCkiKQotI2lmIGRlZmluZWQoX19OZXRCU0RfXykKLVdpbmRvd19PbmVBcmdOb1JldHVyblZvaWRGdW5jdGlvbihub2RlbGF5LCBpbnQsICJpO1RydWUoMSkgb3IgRmFsc2UoMCkiKQotI2Vsc2UKIFdpbmRvd19PbmVBcmdOb1JldHVybkZ1bmN0aW9uKG5vZGVsYXksIGludCwgImk7VHJ1ZSgxKSBvciBGYWxzZSgwKSIpCi0jZW5kaWYKIFdpbmRvd19PbmVBcmdOb1JldHVybkZ1bmN0aW9uKG5vdGltZW91dCwgaW50LCAiaTtUcnVlKDEpIG9yIEZhbHNlKDApIikKIFdpbmRvd19PbmVBcmdOb1JldHVybkZ1bmN0aW9uKHNjcm9sbG9rLCBpbnQsICJpO1RydWUoMSkgb3IgRmFsc2UoMCkiKQogV2luZG93X09uZUFyZ05vUmV0dXJuRnVuY3Rpb24od2luc2RlbGxuLCBpbnQsICJpO25saW5lcyIpCisjaWZkZWYgSEFWRV9DVVJTRVNfU1lOQ09LCiBXaW5kb3dfT25lQXJnTm9SZXR1cm5GdW5jdGlvbihzeW5jb2ssIGludCwgImk7VHJ1ZSgxKSBvciBGYWxzZSgwKSIpCisjZW5kaWYKIAogV2luZG93X1R3b0FyZ05vUmV0dXJuRnVuY3Rpb24obXZ3aW4sIGludCwgImlpO3kseCIpCiBXaW5kb3dfVHdvQXJnTm9SZXR1cm5GdW5jdGlvbihtdmRlcndpbiwgaW50LCAiaWk7eSx4IikKQEAgLTY0MSwxMiArNjM5LDE5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNXaW5kb3dfQm94KFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKKyAgICBQeU9iamVjdCAqdGVtcDEsICp0ZW1wMjsKICAgICBjaHR5cGUgY2gxPTAsY2gyPTA7CiAgICAgc3dpdGNoKFB5VHVwbGVfU2l6ZShhcmdzKSl7CiAgICAgY2FzZSAwOiBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywibGw7dmVydGludCxob3JpbnQiLCAmY2gxLCAmY2gyKSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsIk9PO3ZlcmNoLGhvcmNoIiwgJnRlbXAxLCAmdGVtcDIpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmICghUHlDdXJzZXNfQ29udmVydFRvQ2h0eXBlKHRlbXAxLCAmY2gxKSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFQeUN1cnNlc19Db252ZXJ0VG9DaHR5cGUodGVtcDIsICZjaDIpKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KICAgICBib3goc2VsZi0+d2luLGNoMSxjaDIpOwogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKQEAgLTY2NSw4ICs2NzAsMTQgQEAKIH0KICNlbmRpZgogCi0vKiBjaGdhdCwgYWRkZWQgYnkgRmFiaWFuIEtyZXV0eiA8ZmFiaWFuLmtyZXV0eiBhdCBnbXgubmV0PiAqLworI2lmIGRlZmluZWQoSEFWRV9DVVJTRVNfSVNfUEFEKQorI2RlZmluZSBweV9pc19wYWQod2luKSAgICAgIGlzX3BhZCh3aW4pCisjZWxpZiBkZWZpbmVkKFdJTkRPV19IQVNfRkxBR1MpCisjZGVmaW5lIHB5X2lzX3BhZCh3aW4pICAgICAgKCh3aW4pID8gKCh3aW4pLT5fZmxhZ3MgJiBfSVNQQUQpICE9IDAgOiBGQUxTRSkKKyNlbmRpZgogCisvKiBjaGdhdCwgYWRkZWQgYnkgRmFiaWFuIEtyZXV0eiA8ZmFiaWFuLmtyZXV0eiBhdCBnbXgubmV0PiAqLworI2lmZGVmIEhBVkVfQ1VSU0VTX1dDSEdBVAogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzV2luZG93X0NoZ0F0KFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTcxOSw3ICs3MzAsNyBAQAogICAgIH0KICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihydG4sICJjaGdhdCIpOwogfQotCisjZW5kaWYKIAogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzV2luZG93X0RlbENoKFB5Q3Vyc2VzV2luZG93T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTgwNiwxMCArODE3LDExIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotI2lmZGVmIFdJTkRPV19IQVNfRkxBR1MKLSAgICBpZiAoc2VsZi0+d2luLT5fZmxhZ3MgJiBfSVNQQUQpCisjaWZkZWYgcHlfaXNfcGFkCisgICAgaWYgKHB5X2lzX3BhZChzZWxmLT53aW4pKSB7CiAgICAgICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHBlY2hvY2hhcihzZWxmLT53aW4sIGNoIHwgYXR0ciksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlY2hvY2hhciIpOworICAgIH0KICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgcmV0dXJuIFB5Q3Vyc2VzQ2hlY2tFUlIod2VjaG9jaGFyKHNlbGYtPndpbiwgY2ggfCBhdHRyKSwKQEAgLTg5MiwxMiArOTA0LDcgQEAKICAgICB9IGVsc2UgaWYgKHJ0bjw9MjU1KSB7CiAgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJjIiwgcnRuKTsKICAgICB9IGVsc2UgewotICAgICAgICBjb25zdCBjaGFyICprbnA7Ci0jaWYgZGVmaW5lZChfX05ldEJTRF9fKQotICAgICAgICBrbnAgPSB1bmN0cmwocnRuKTsKLSNlbHNlCi0gICAgICAgIGtucCA9IGtleW5hbWUocnRuKTsKLSNlbmRpZgorICAgICAgICBjb25zdCBjaGFyICprbnAgPSBrZXluYW1lKHJ0bik7CiAgICAgICAgIHJldHVybiBQeVN0cmluZ19Gcm9tU3RyaW5nKChrbnAgPT0gTlVMTCkgPyAiIiA6IGtucCk7CiAgICAgfQogfQpAQCAtMTA0Miw3ICsxMDQ5LDcgQEAKICAgICAgICAgdXNlX3h5ID0gVFJVRTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImluc2NoIHJlcXVpcmVzIDEgb3IgNCBhcmd1bWVudHMiKTsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImluc2NoIHJlcXVpcmVzIDEgdG8gNCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0xMDc1LDcgKzEwODIsNyBAQAogICAgICAgICBydG4gPSBtdndpbmNoKHNlbGYtPndpbix5LHgpOwogICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW5jaCByZXF1aXJlcyAwIG9yIDIgYXJndW1lbnRzIik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJpbmNoIHJlcXVpcmVzIDAgdG8gMiBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHJldHVybiBQeUludF9Gcm9tTG9uZygobG9uZykgcnRuKTsKQEAgLTEyNTAsMTAgKzEyNTcsMTAgQEAKICAgICBpbnQgcG1pbnJvdyxwbWluY29sLHNtaW5yb3csc21pbmNvbCxzbWF4cm93LHNtYXhjb2w7CiAgICAgaW50IHJ0bjsKIAotI2lmbmRlZiBXSU5ET1dfSEFTX0ZMQUdTCisjaWZuZGVmIHB5X2lzX3BhZAogICAgIGlmICgwKQogI2Vsc2UKLSAgICAgICAgaWYgKHNlbGYtPndpbi0+X2ZsYWdzICYgX0lTUEFEKQorICAgICAgICBpZiAocHlfaXNfcGFkKHNlbGYtPndpbikpCiAjZW5kaWYKICAgICAgICAgewogICAgICAgICAgICAgc3dpdGNoKFB5VHVwbGVfU2l6ZShhcmdzKSkgewpAQCAtMTM5MywxMCArMTQwMCwxMCBAQAogICAgIGludCBwbWlucm93LHBtaW5jb2wsc21pbnJvdyxzbWluY29sLHNtYXhyb3csc21heGNvbDsKICAgICBpbnQgcnRuOwogCi0jaWZuZGVmIFdJTkRPV19IQVNfRkxBR1MKKyNpZm5kZWYgcHlfaXNfcGFkCiAgICAgaWYgKDApCiAjZWxzZQotICAgICAgICBpZiAoc2VsZi0+d2luLT5fZmxhZ3MgJiBfSVNQQUQpCisgICAgICAgIGlmIChweV9pc19wYWQoc2VsZi0+d2luKSkKICNlbmRpZgogICAgICAgICB7CiAgICAgICAgICAgICBzd2l0Y2goUHlUdXBsZV9TaXplKGFyZ3MpKSB7CkBAIC0xNDYyLDkgKzE0NjksMTAgQEAKICAgICB9CiAKICAgICAvKiBwcmludGYoIlN1YndpbjogJWkgJWkgJWkgJWkgICBcbiIsIG5saW5lcywgbmNvbHMsIGJlZ2luX3ksIGJlZ2luX3gpOyAqLwotI2lmZGVmIFdJTkRPV19IQVNfRkxBR1MKLSAgICBpZiAoc2VsZi0+d2luLT5fZmxhZ3MgJiBfSVNQQUQpCisjaWZkZWYgcHlfaXNfcGFkCisgICAgaWYgKHB5X2lzX3BhZChzZWxmLT53aW4pKSB7CiAgICAgICAgIHdpbiA9IHN1YnBhZChzZWxmLT53aW4sIG5saW5lcywgbmNvbHMsIGJlZ2luX3ksIGJlZ2luX3gpOworICAgIH0KICAgICBlbHNlCiAjZW5kaWYKICAgICAgICAgd2luID0gc3Vid2luKHNlbGYtPndpbiwgbmxpbmVzLCBuY29scywgYmVnaW5feSwgYmVnaW5feCk7CkBAIC0xNTY4LDcgKzE1NzYsOSBAQAogICAgIHsiYXR0cm9uIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0F0dHJPbiwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImF0dHJzZXQiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19BdHRyU2V0LCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiYmtnZCIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0JrZ2QsIE1FVEhfVkFSQVJHU30sCisjaWZkZWYgSEFWRV9DVVJTRVNfV0NIR0FUCiAgICAgeyJjaGdhdCIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfQ2hnQXQsIE1FVEhfVkFSQVJHU30sCisjZW5kaWYKICAgICB7ImJrZ2RzZXQiLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19Ca2dkU2V0LCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiYm9yZGVyIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0JvcmRlciwgTUVUSF9WQVJBUkdTfSwKICAgICB7ImJveCIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19Cb3gsIE1FVEhfVkFSQVJHU30sCkBAIC0xNTk2LDcgKzE2MDYsOSBAQAogICAgIHsiaGxpbmUiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X0hsaW5lLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiaWRjb2siLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X2lkY29rLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsiaWRsb2siLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X2lkbG9rLCBNRVRIX1ZBUkFSR1N9LAorI2lmZGVmIEhBVkVfQ1VSU0VTX0lNTUVET0sKICAgICB7ImltbWVkb2siLCAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19pbW1lZG9rLCBNRVRIX1ZBUkFSR1N9LAorI2VuZGlmCiAgICAgeyJpbmNoIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfSW5DaCwgTUVUSF9WQVJBUkdTfSwKICAgICB7Imluc2NoIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19JbnNDaCwgTUVUSF9WQVJBUkdTfSwKICAgICB7Imluc2RlbGxuIiwgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd193aW5zZGVsbG4sIE1FVEhfVkFSQVJHU30sCkBAIC0xNjM0LDcgKzE2NDYsOSBAQAogICAgIHsic3VicGFkIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X1N1YldpbiwgTUVUSF9WQVJBUkdTfSwKICAgICB7InN1YndpbiIsICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc1dpbmRvd19TdWJXaW4sIE1FVEhfVkFSQVJHU30sCiAgICAgeyJzeW5jZG93biIsICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfd3N5bmNkb3duLCBNRVRIX05PQVJHU30sCisjaWZkZWYgSEFWRV9DVVJTRVNfU1lOQ09LCiAgICAgeyJzeW5jb2siLCAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfc3luY29rLCBNRVRIX1ZBUkFSR1N9LAorI2VuZGlmCiAgICAgeyJzeW5jdXAiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNXaW5kb3dfd3N5bmN1cCwgTUVUSF9OT0FSR1N9LAogICAgIHsidGltZW91dCIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X3d0aW1lb3V0LCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidG91Y2hsaW5lIiwgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzV2luZG93X1RvdWNoTGluZSwgTUVUSF9WQVJBUkdTfSwKQEAgLTE3MDgsNiArMTcyMiw3IEBACiBOb0FyZ05vUmV0dXJuVm9pZEZ1bmN0aW9uKGZsdXNoaW5wKQogTm9BcmdOb1JldHVyblZvaWRGdW5jdGlvbihub3FpZmx1c2gpCiAKKyNpZmRlZiBIQVZFX0NVUlNFU19GSUxURVIKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc19maWx0ZXIoUHlPYmplY3QgKnNlbGYpCiB7CkBAIC0xNzE3LDYgKzE3MzIsNyBAQAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNfQ29sb3JfQ29udGVudChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCkBAIC0xNzg4LDYgKzE4MDQsNyBAQAogICAgIHJldHVybiBQeVN0cmluZ19Gcm9tU3RyaW5nQW5kU2l6ZSgmY2gsIDEpOwogfQogCisjaWZkZWYgZ2V0c3l4CiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNfZ2V0c3l4KFB5T2JqZWN0ICpzZWxmKQogewpAQCAtMTgwMCw2ICsxODE3LDcgQEAKIAogICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoaWkpIiwgeSwgeCk7CiB9CisjZW5kaWYKIAogI2lmZGVmIE5DVVJTRVNfTU9VU0VfVkVSU0lPTgogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE4MTUsMjQgKzE4MzMsMzAgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5Q3Vyc2VzRXJyb3IsICJnZXRtb3VzZSgpIHJldHVybmVkIEVSUiIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIihoaWlpbCkiLAorICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoaGlpaWspIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAoc2hvcnQpZXZlbnQuaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQueCwgZXZlbnQueSwgZXZlbnQueiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAobG9uZykgZXZlbnQuYnN0YXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWV2ZW50LngsIChpbnQpZXZlbnQueSwgKGludClldmVudC56LAorICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSBldmVudC5ic3RhdGUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNfVW5nZXRNb3VzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgTUVWRU5UIGV2ZW50OworICAgIHNob3J0IGlkOworICAgIGludCB4LCB5LCB6OworICAgIHVuc2lnbmVkIGxvbmcgYnN0YXRlOwogCiAgICAgUHlDdXJzZXNJbml0aWFsaXNlZDsKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImhpaWlsIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJmV2ZW50LmlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZXZlbnQueCwgJmV2ZW50LnksICZldmVudC56LAotICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50ICopICZldmVudC5ic3RhdGUpKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaGlpaWsiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmaWQsICZ4LCAmeSwgJnosICZic3RhdGUpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGV2ZW50LmlkID0gaWQ7CisgICAgZXZlbnQueCA9IHg7CisgICAgZXZlbnQueSA9IHk7CisgICAgZXZlbnQueiA9IHo7CisgICAgZXZlbnQuYnN0YXRlID0gYnN0YXRlOwogICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHVuZ2V0bW91c2UoJmV2ZW50KSwgInVuZ2V0bW91c2UiKTsKIH0KICNlbmRpZgpAQCAtMTg3MSw5ICsxODk1LDkgQEAKICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUihoYWxmZGVsYXkodGVudGhzKSwgImhhbGZkZWxheSIpOwogfQogCi0jaWZuZGVmIFNUUklDVF9TWVNWX0NVUlNFUwotLyogTm8gaGFzX2tleSEgKi8KLXN0YXRpYyBQeU9iamVjdCAqIFB5Q3Vyc2VzX2hhc19rZXkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorI2lmZGVmIEhBVkVfQ1VSU0VTX0hBU19LRVkKK3N0YXRpYyBQeU9iamVjdCAqCitQeUN1cnNlc19oYXNfa2V5KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgY2g7CiAKQEAgLTE4ODgsNyArMTkxMiw3IEBACiAgICAgUHlfSU5DUkVGKFB5X1RydWUpOwogICAgIHJldHVybiBQeV9UcnVlOwogfQotI2VuZGlmIC8qIFNUUklDVF9TWVNWX0NVUlNFUyAqLworI2VuZGlmCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc19Jbml0X0NvbG9yKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTIxMjYsNyArMjE1MCw2IEBACiB9CiAjZW5kaWYgLyogSEFWRV9DVVJTRVNfSVNfVEVSTV9SRVNJWkVEICovCiAKLSNpZiAhZGVmaW5lZChfX05ldEJTRF9fKQogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzX0tleU5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjE0NSw3ICsyMTY4LDYgQEAKIAogICAgIHJldHVybiBQeVN0cmluZ19Gcm9tU3RyaW5nKChrbnAgPT0gTlVMTCkgPyAiIiA6IChjaGFyICopa25wKTsKIH0KLSNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNfS2lsbENoYXIoUHlPYmplY3QgKnNlbGYpCkBAIC0yMTkxLDE0ICsyMjEzLDE1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNfTW91c2VNYXNrKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBpbnQgbmV3bWFzazsKKyAgICB1bnNpZ25lZCBsb25nIG5ld21hc2s7CiAgICAgbW1hc2tfdCBvbGRtYXNrLCBhdmFpbG1hc2s7CiAKICAgICBQeUN1cnNlc0luaXRpYWxpc2VkOwotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJpO21vdXNlbWFzayIsJm5ld21hc2spKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCJrO21vdXNlbWFzayIsJm5ld21hc2spKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhdmFpbG1hc2sgPSBtb3VzZW1hc2sobmV3bWFzaywgJm9sZG1hc2spOwotICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIobGwpIiwgKGxvbmcpYXZhaWxtYXNrLCAobG9uZylvbGRtYXNrKTsKKyAgICBhdmFpbG1hc2sgPSBtb3VzZW1hc2soKG1tYXNrX3QpbmV3bWFzaywgJm9sZG1hc2spOworICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCIoa2spIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylhdmFpbG1hc2ssICh1bnNpZ25lZCBsb25nKW9sZG1hc2spOwogfQogI2VuZGlmCiAKQEAgLTI0NDEsNiArMjQ2NCw3IEBACiB9CiAjZW5kaWYgLyogSEFWRV9DVVJTRVNfUkVTSVpFX1RFUk0gKi8KIAorI2lmZGVmIGdldHN5eAogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzX3NldHN5eChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0yNDYwLDYgKzI0ODQsNyBAQAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKIH0KKyNlbmRpZgogCiBzdGF0aWMgUHlPYmplY3QgKgogUHlDdXJzZXNfU3RhcnRfQ29sb3IoUHlPYmplY3QgKnNlbGYpCkBAIC0yNTU0LDYgKzI1NzksNyBAQAogICAgIHJldHVybiBQeVN0cmluZ19Gcm9tU3RyaW5nKHJlc3VsdCk7CiB9CiAKKyNpZmRlZiBIQVZFX0NVUlNFU19UWVBFQUhFQUQKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc19UeXBlQWhlYWQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjU2NSw2ICsyNTkxLDcgQEAKIAogICAgIHJldHVybiBQeUN1cnNlc0NoZWNrRVJSKHR5cGVhaGVhZCggZmQgKSwgInR5cGVhaGVhZCIpOwogfQorI2VuZGlmCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBQeUN1cnNlc19VbkN0cmwoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMjU3Niw4ICsyNjAzLDExIEBACiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztjaCBvciBpbnQiLCZ0ZW1wKSkgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlJbnRfQ2hlY2sodGVtcCkpCisgICAgaWYgKF9QeUFueUludF9DaGVjayh0ZW1wKSkgewogICAgICAgICBjaCA9IChjaHR5cGUpIFB5SW50X0FzTG9uZyh0ZW1wKTsKKyAgICAgICAgaWYgKGNoID09IChjaHR5cGUpIC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZWxzZSBpZiAoUHlTdHJpbmdfQ2hlY2sodGVtcCkpCiAgICAgICAgIGNoID0gKGNodHlwZSkgKlB5U3RyaW5nX0FzU3RyaW5nKHRlbXApOwogICAgIGVsc2UgewpAQCAtMjU5OCw4ICsyNjI4LDExIEBACiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywiTztjaCBvciBpbnQiLCZ0ZW1wKSkgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlJbnRfQ2hlY2sodGVtcCkpCisgICAgaWYgKF9QeUFueUludF9DaGVjayh0ZW1wKSkgewogICAgICAgICBjaCA9IChpbnQpIFB5SW50X0FzTG9uZyh0ZW1wKTsKKyAgICAgICAgaWYgKGNoID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZWxzZSBpZiAoUHlTdHJpbmdfQ2hlY2sodGVtcCkpCiAgICAgICAgIGNoID0gKGludCkgKlB5U3RyaW5nX0FzU3RyaW5nKHRlbXApOwogICAgIGVsc2UgewpAQCAtMjYxMCw2ICsyNjQzLDcgQEAKICAgICByZXR1cm4gUHlDdXJzZXNDaGVja0VSUih1bmdldGNoKGNoKSwgInVuZ2V0Y2giKTsKIH0KIAorI2lmZGVmIEhBVkVfQ1VSU0VTX1RZUEVBSEVBRAogc3RhdGljIFB5T2JqZWN0ICoKIFB5Q3Vyc2VzX1VzZV9FbnYoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjYyOCw2ICsyNjYyLDcgQEAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7CiAgICAgcmV0dXJuIFB5X05vbmU7CiB9CisjZW5kaWYKIAogI2lmbmRlZiBTVFJJQ1RfU1lTVl9DVVJTRVMKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC0yNjY2LDE5ICsyNzAxLDIzIEBACiAgICAgeyJlY2hvIiwgICAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX2VjaG8sIE1FVEhfVkFSQVJHU30sCiAgICAgeyJlbmR3aW4iLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX2VuZHdpbiwgTUVUSF9OT0FSR1N9LAogICAgIHsiZXJhc2VjaGFyIiwgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19FcmFzZUNoYXIsIE1FVEhfTk9BUkdTfSwKKyNpZmRlZiBIQVZFX0NVUlNFU19GSUxURVIKICAgICB7ImZpbHRlciIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfZmlsdGVyLCBNRVRIX05PQVJHU30sCisjZW5kaWYKICAgICB7ImZsYXNoIiwgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfZmxhc2gsIE1FVEhfTk9BUkdTfSwKICAgICB7ImZsdXNoaW5wIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfZmx1c2hpbnAsIE1FVEhfTk9BUkdTfSwKICNpZmRlZiBOQ1VSU0VTX01PVVNFX1ZFUlNJT04KICAgICB7ImdldG1vdXNlIiwgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfR2V0TW91c2UsIE1FVEhfTk9BUkdTfSwKICAgICB7InVuZ2V0bW91c2UiLCAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfVW5nZXRNb3VzZSwgTUVUSF9WQVJBUkdTfSwKICNlbmRpZgorI2lmZGVmIGdldHN5eAogICAgIHsiZ2V0c3l4IiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19nZXRzeXgsIE1FVEhfTk9BUkdTfSwKKyNlbmRpZgogICAgIHsiZ2V0d2luIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19HZXRXaW4sIE1FVEhfT30sCiAgICAgeyJoYXNfY29sb3JzIiwgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX2hhc19jb2xvcnMsIE1FVEhfTk9BUkdTfSwKICAgICB7Imhhc19pYyIsICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfaGFzX2ljLCBNRVRIX05PQVJHU30sCiAgICAgeyJoYXNfaWwiLCAgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX2hhc19pbCwgTUVUSF9OT0FSR1N9LAotI2lmbmRlZiBTVFJJQ1RfU1lTVl9DVVJTRVMKKyNpZmRlZiBIQVZFX0NVUlNFU19IQVNfS0VZCiAgICAgeyJoYXNfa2V5IiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX2hhc19rZXksIE1FVEhfVkFSQVJHU30sCiAjZW5kaWYKICAgICB7ImhhbGZkZWxheSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfSGFsZkRlbGF5LCBNRVRIX1ZBUkFSR1N9LApAQCAtMjY5MCw5ICsyNzI5LDcgQEAKICNpZmRlZiBIQVZFX0NVUlNFU19JU19URVJNX1JFU0laRUQKICAgICB7ImlzX3Rlcm1fcmVzaXplZCIsICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfSXNfVGVybV9SZXNpemVkLCBNRVRIX1ZBUkFSR1N9LAogI2VuZGlmCi0jaWYgIWRlZmluZWQoX19OZXRCU0RfXykKICAgICB7ImtleW5hbWUiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfS2V5TmFtZSwgTUVUSF9WQVJBUkdTfSwKLSNlbmRpZgogICAgIHsia2lsbGNoYXIiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19LaWxsQ2hhciwgTUVUSF9OT0FSR1N9LAogICAgIHsibG9uZ25hbWUiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19sb25nbmFtZSwgTUVUSF9OT0FSR1N9LAogICAgIHsibWV0YSIsICAgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19NZXRhLCBNRVRIX1ZBUkFSR1N9LApAQCAtMjcyNCw3ICsyNzYxLDkgQEAKICAgICB7InJlc2l6ZV90ZXJtIiwgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfUmVzaXplX1Rlcm0sIE1FVEhfVkFSQVJHU30sCiAjZW5kaWYKICAgICB7InNhdmV0dHkiLCAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfc2F2ZXR0eSwgTUVUSF9OT0FSR1N9LAorI2lmZGVmIGdldHN5eAogICAgIHsic2V0c3l4IiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19zZXRzeXgsIE1FVEhfVkFSQVJHU30sCisjZW5kaWYKICAgICB7InNldHVwdGVybSIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfc2V0dXB0ZXJtLAogICAgICBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEU30sCiAgICAgeyJzdGFydF9jb2xvciIsICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1N0YXJ0X0NvbG9yLCBNRVRIX05PQVJHU30sCkBAIC0yNzM0LDEwICsyNzczLDE0IEBACiAgICAgeyJ0aWdldG51bSIsICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX3RpZ2V0bnVtLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsidGlnZXRzdHIiLCAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc190aWdldHN0ciwgTUVUSF9WQVJBUkdTfSwKICAgICB7InRwYXJtIiwgICAgICAgICAgICAgICAoUHlDRnVuY3Rpb24pUHlDdXJzZXNfdHBhcm0sIE1FVEhfVkFSQVJHU30sCisjaWZkZWYgSEFWRV9DVVJTRVNfVFlQRUFIRUFECiAgICAgeyJ0eXBlYWhlYWQiLCAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1R5cGVBaGVhZCwgTUVUSF9WQVJBUkdTfSwKKyNlbmRpZgogICAgIHsidW5jdHJsIiwgICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19VbkN0cmwsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJ1bmdldGNoIiwgICAgICAgICAgICAgKFB5Q0Z1bmN0aW9uKVB5Q3Vyc2VzX1VuZ2V0Q2gsIE1FVEhfVkFSQVJHU30sCisjaWZkZWYgSEFWRV9DVVJTRVNfVVNFX0VOVgogICAgIHsidXNlX2VudiIsICAgICAgICAgICAgIChQeUNGdW5jdGlvbilQeUN1cnNlc19Vc2VfRW52LCBNRVRIX1ZBUkFSR1N9LAorI2VuZGlmCiAjaWZuZGVmIFNUUklDVF9TWVNWX0NVUlNFUwogICAgIHsidXNlX2RlZmF1bHRfY29sb3JzIiwgIChQeUNGdW5jdGlvbilQeUN1cnNlc19Vc2VfRGVmYXVsdF9Db2xvcnMsIE1FVEhfTk9BUkdTfSwKICNlbmRpZgpAQCAtMjgwMSw5ICsyODQ0LDcgQEAKICAgICBTZXREaWN0SW50KCJBX0RJTSIsICAgICAgICAgICAgICAgICBBX0RJTSk7CiAgICAgU2V0RGljdEludCgiQV9CT0xEIiwgICAgICAgICAgICAgICAgQV9CT0xEKTsKICAgICBTZXREaWN0SW50KCJBX0FMVENIQVJTRVQiLCAgICAgICAgICBBX0FMVENIQVJTRVQpOwotI2lmICFkZWZpbmVkKF9fTmV0QlNEX18pCiAgICAgU2V0RGljdEludCgiQV9JTlZJUyIsICAgICAgICAgICBBX0lOVklTKTsKLSNlbmRpZgogICAgIFNldERpY3RJbnQoIkFfUFJPVEVDVCIsICAgICAgICAgQV9QUk9URUNUKTsKICAgICBTZXREaWN0SW50KCJBX0NIQVJURVhUIiwgICAgICAgIEFfQ0hBUlRFWFQpOwogICAgIFNldERpY3RJbnQoIkFfQ09MT1IiLCAgICAgICAgICAgQV9DT0xPUik7CkBAIC0yODc1LDcgKzI5MTYsNiBAQAogICAgICAgICBpbnQga2V5OwogICAgICAgICBjaGFyICprZXlfbjsKICAgICAgICAgY2hhciAqa2V5X24yOwotI2lmICFkZWZpbmVkKF9fTmV0QlNEX18pCiAgICAgICAgIGZvciAoa2V5PUtFWV9NSU47a2V5IDwgS0VZX01BWDsga2V5KyspIHsKICAgICAgICAgICAgIGtleV9uID0gKGNoYXIgKilrZXluYW1lKGtleSk7CiAgICAgICAgICAgICBpZiAoa2V5X24gPT0gTlVMTCB8fCBzdHJjbXAoa2V5X24sIlVOS05PV04gS0VZIik9PTApCkBAIC0yOTAzLDcgKzI5NDMsNiBAQAogICAgICAgICAgICAgaWYgKGtleV9uMiAhPSBrZXlfbikKICAgICAgICAgICAgICAgICBmcmVlKGtleV9uMik7CiAgICAgICAgIH0KLSNlbmRpZgogICAgICAgICBTZXREaWN0SW50KCJLRVlfTUlOIiwgS0VZX01JTik7CiAgICAgICAgIFNldERpY3RJbnQoIktFWV9NQVgiLCBLRVlfTUFYKTsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jIGIvTW9kdWxlcy9fZWxlbWVudHRyZWUuYwppbmRleCBiMDExNjdiLi5mN2Y5OTJkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19lbGVtZW50dHJlZS5jCisrKyBiL01vZHVsZXMvX2VsZW1lbnR0cmVlLmMKQEAgLTEzMSw2ICsxMzEsMTUgQEAKIAogLyogaGVscGVycyAqLwogCisvKiBQeV9TRVRSRUYgZm9yIGEgUHlPYmplY3QqIHRoYXQgdXNlcyBhIGpvaW4gZmxhZy4gKi8KK1B5X0xPQ0FMX0lOTElORSh2b2lkKQorX3NldF9qb2luZWRfcHRyKFB5T2JqZWN0ICoqcCwgUHlPYmplY3QgKm5ld19qb2luZWRfcHRyKQoreworICAgIFB5T2JqZWN0ICp0bXAgPSBKT0lOX09CSigqcCk7CisgICAgKnAgPSBuZXdfam9pbmVkX3B0cjsKKyAgICBQeV9ERUNSRUYodG1wKTsKK30KKwogTE9DQUwoUHlPYmplY3QqKQogZGVlcGNvcHkoUHlPYmplY3QqIG9iamVjdCwgUHlPYmplY3QqIG1lbW8pCiB7CkBAIC0xNjQsOCArMTczLDcgQEAKIExPQ0FMKFB5T2JqZWN0KikKIGxpc3Rfam9pbihQeU9iamVjdCogbGlzdCkKIHsKLSAgICAvKiBqb2luIGxpc3QgZWxlbWVudHMgKGRlc3Ryb3lpbmcgdGhlIGxpc3QgaW4gdGhlIHByb2Nlc3MpICovCi0KKyAgICAvKiBqb2luIGxpc3QgZWxlbWVudHMgKi8KICAgICBQeU9iamVjdCogam9pbmVyOwogICAgIFB5T2JqZWN0KiBmdW5jdGlvbjsKICAgICBQeU9iamVjdCogYXJnczsKQEAgLTE3MywxMiArMTgxLDEwIEBACiAKICAgICBzd2l0Y2ggKFB5TGlzdF9HRVRfU0laRShsaXN0KSkgewogICAgIGNhc2UgMDoKLSAgICAgICAgUHlfREVDUkVGKGxpc3QpOwogICAgICAgICByZXR1cm4gUHlTdHJpbmdfRnJvbVN0cmluZygiIik7CiAgICAgY2FzZSAxOgogICAgICAgICByZXN1bHQgPSBQeUxpc3RfR0VUX0lURU0obGlzdCwgMCk7CiAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwotICAgICAgICBQeV9ERUNSRUYobGlzdCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCkBAIC0xOTYsOSArMjAyLDEzIEBACiAgICAgfQogCiAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDEpOwotICAgIGlmICghYXJncykKKyAgICBpZiAoIWFyZ3MpIHsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmN0aW9uKTsKKyAgICAgICAgUHlfREVDUkVGKGpvaW5lcik7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAorICAgIFB5X0lOQ1JFRihsaXN0KTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIGxpc3QpOwogCiAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChmdW5jdGlvbiwgYXJncyk7CkBAIC00MzUsMTUgKzQ0NSwxNyBAQAogewogICAgIC8qIHJldHVybiBib3Jyb3dlZCByZWZlcmVuY2UgdG8gdGV4dCBhdHRyaWJ1dGUgKi8KIAotICAgIFB5T2JqZWN0KiByZXMgPSBzZWxmLT50ZXh0OworICAgIFB5T2JqZWN0ICpyZXMgPSBzZWxmLT50ZXh0OwogCiAgICAgaWYgKEpPSU5fR0VUKHJlcykpIHsKICAgICAgICAgcmVzID0gSk9JTl9PQkoocmVzKTsKICAgICAgICAgaWYgKFB5TGlzdF9DaGVja0V4YWN0KHJlcykpIHsKLSAgICAgICAgICAgIHJlcyA9IGxpc3Rfam9pbihyZXMpOwotICAgICAgICAgICAgaWYgKCFyZXMpCisgICAgICAgICAgICBQeU9iamVjdCAqdG1wID0gbGlzdF9qb2luKHJlcyk7CisgICAgICAgICAgICBpZiAoIXRtcCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIHNlbGYtPnRleHQgPSByZXM7CisgICAgICAgICAgICBzZWxmLT50ZXh0ID0gdG1wOworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXMgPSB0bXA7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTQ1NSwxNSArNDY3LDE3IEBACiB7CiAgICAgLyogcmV0dXJuIGJvcnJvd2VkIHJlZmVyZW5jZSB0byB0ZXh0IGF0dHJpYnV0ZSAqLwogCi0gICAgUHlPYmplY3QqIHJlcyA9IHNlbGYtPnRhaWw7CisgICAgUHlPYmplY3QgKnJlcyA9IHNlbGYtPnRhaWw7CiAKICAgICBpZiAoSk9JTl9HRVQocmVzKSkgewogICAgICAgICByZXMgPSBKT0lOX09CSihyZXMpOwogICAgICAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QocmVzKSkgewotICAgICAgICAgICAgcmVzID0gbGlzdF9qb2luKHJlcyk7Ci0gICAgICAgICAgICBpZiAoIXJlcykKKyAgICAgICAgICAgIFB5T2JqZWN0ICp0bXAgPSBsaXN0X2pvaW4ocmVzKTsKKyAgICAgICAgICAgIGlmICghdG1wKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgc2VsZi0+dGFpbCA9IHJlczsKKyAgICAgICAgICAgIHNlbGYtPnRhaWwgPSB0bXA7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJlcyA9IHRtcDsKICAgICAgICAgfQogICAgIH0KIApAQCAtNTI0LDggKzUzOCw5IEBACiAgICAgfQogCiAgICAgZWxlbSA9IGVsZW1lbnRfbmV3KHRhZywgYXR0cmliKTsKLQogICAgIFB5X0RFQ1JFRihhdHRyaWIpOworICAgIGlmIChlbGVtID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKGVsZW1lbnRfYWRkX3N1YmVsZW1lbnQocGFyZW50LCBlbGVtKSA8IDApIHsKICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwpAQCAtNTc5LDEyICs1OTQsMTAgQEAKICAgICB9CiAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRleHQpKTsKLSAgICBzZWxmLT50ZXh0ID0gUHlfTm9uZTsKKyAgICBfc2V0X2pvaW5lZF9wdHIoJnNlbGYtPnRleHQsIFB5X05vbmUpOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50YWlsKSk7Ci0gICAgc2VsZi0+dGFpbCA9IFB5X05vbmU7CisgICAgX3NldF9qb2luZWRfcHRyKCZzZWxmLT50YWlsLCBQeV9Ob25lKTsKIAogICAgIFB5X1JFVFVSTl9OT05FOwogfQpAQCAtNjA0LDEzICs2MTcsMTEgQEAKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgUHlfREVDUkVGKEpPSU5fT0JKKGVsZW1lbnQtPnRleHQpKTsKLSAgICBlbGVtZW50LT50ZXh0ID0gc2VsZi0+dGV4dDsKLSAgICBQeV9JTkNSRUYoSk9JTl9PQkooZWxlbWVudC0+dGV4dCkpOworICAgIFB5X0lOQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7CisgICAgX3NldF9qb2luZWRfcHRyKCZlbGVtZW50LT50ZXh0LCBzZWxmLT50ZXh0KTsKIAotICAgIFB5X0RFQ1JFRihKT0lOX09CSihlbGVtZW50LT50YWlsKSk7Ci0gICAgZWxlbWVudC0+dGFpbCA9IHNlbGYtPnRhaWw7Ci0gICAgUHlfSU5DUkVGKEpPSU5fT0JKKGVsZW1lbnQtPnRhaWwpKTsKKyAgICBQeV9JTkNSRUYoSk9JTl9PQkooc2VsZi0+dGFpbCkpOworICAgIF9zZXRfam9pbmVkX3B0cigmZWxlbWVudC0+dGFpbCwgc2VsZi0+dGFpbCk7CiAKICAgICBpZiAoc2VsZi0+ZXh0cmEpIHsKICAgICAgICAgCkBAIC02NzIsMTQgKzY4MywxMiBAQAogICAgIHRleHQgPSBkZWVwY29weShKT0lOX09CSihzZWxmLT50ZXh0KSwgbWVtbyk7CiAgICAgaWYgKCF0ZXh0KQogICAgICAgICBnb3RvIGVycm9yOwotICAgIFB5X0RFQ1JFRihlbGVtZW50LT50ZXh0KTsKLSAgICBlbGVtZW50LT50ZXh0ID0gSk9JTl9TRVQodGV4dCwgSk9JTl9HRVQoc2VsZi0+dGV4dCkpOworICAgIF9zZXRfam9pbmVkX3B0cigmZWxlbWVudC0+dGV4dCwgSk9JTl9TRVQodGV4dCwgSk9JTl9HRVQoc2VsZi0+dGV4dCkpKTsKIAogICAgIHRhaWwgPSBkZWVwY29weShKT0lOX09CSihzZWxmLT50YWlsKSwgbWVtbyk7CiAgICAgaWYgKCF0YWlsKQogICAgICAgICBnb3RvIGVycm9yOwotICAgIFB5X0RFQ1JFRihlbGVtZW50LT50YWlsKTsKLSAgICBlbGVtZW50LT50YWlsID0gSk9JTl9TRVQodGFpbCwgSk9JTl9HRVQoc2VsZi0+dGFpbCkpOworICAgIF9zZXRfam9pbmVkX3B0cigmZWxlbWVudC0+dGFpbCwgSk9JTl9TRVQodGFpbCwgSk9JTl9HRVQoc2VsZi0+dGFpbCkpKTsKIAogICAgIGlmIChzZWxmLT5leHRyYSkgewogICAgICAgICAKQEAgLTk1Niw3ICs5NjUsMTEgQEAKICAgICBpbnQgaTsKICAgICBQeU9iamVjdCogbGlzdDsKIAotICAgIC8qIEZJWE1FOiByZXBvcnQgYXMgZGVwcmVjYXRlZD8gKi8KKyAgICBpZiAoUHlFcnJfV2FyblB5M2soIlRoaXMgbWV0aG9kIHdpbGwgYmUgcmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMuICAiCisgICAgICAgICAgICAgICAgICAgICAgICJVc2UgJ2xpc3QoZWxlbSknIG9yIGl0ZXJhdGlvbiBvdmVyIGVsZW0gaW5zdGVhZC4iLAorICAgICAgICAgICAgICAgICAgICAgICAxKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICI6Z2V0Y2hpbGRyZW4iKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC05NzgsMTMgKzk5MSwxMCBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QqCi1lbGVtZW50X2l0ZXIoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCitlbGVtZW50X2l0ZXJfaW1wbChFbGVtZW50T2JqZWN0KiBzZWxmLCBQeU9iamVjdCogdGFnKQogeworICAgIFB5T2JqZWN0KiBhcmdzOwogICAgIFB5T2JqZWN0KiByZXN1bHQ7Ci0gICAgCi0gICAgUHlPYmplY3QqIHRhZyA9IFB5X05vbmU7Ci0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzppdGVyIiwgJnRhZykpCi0gICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFlbGVtZW50dHJlZV9pdGVyX29iaikgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoCkBAIC0xMDA4LDYgKzEwMTgsMzQgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitzdGF0aWMgUHlPYmplY3QqCitlbGVtZW50X2l0ZXIoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgUHlPYmplY3QqIHRhZyA9IFB5X05vbmU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzppdGVyIiwgJnRhZykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIGVsZW1lbnRfaXRlcl9pbXBsKHNlbGYsIHRhZyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK2VsZW1lbnRfZ2V0aXRlcmF0b3IoRWxlbWVudE9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCit7CisgICAgUHlPYmplY3QqIHRhZyA9IFB5X05vbmU7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8TzpnZXRpdGVyYXRvciIsICZ0YWcpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIENoYW5nZSBmb3IgYSBEZXByZWNhdGlvbldhcm5pbmcgaW4gMS40ICovCisgICAgaWYgKFB5X1B5M2tXYXJuaW5nRmxhZyAmJgorICAgICAgICBQeUVycl9XYXJuRXgoUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICJUaGlzIG1ldGhvZCB3aWxsIGJlIHJlbW92ZWQgaW4gZnV0dXJlIHZlcnNpb25zLiAgIgorICAgICAgICAgICAgICAgICAgICAgIlVzZSAndHJlZS5pdGVyKCknIG9yICdsaXN0KHRyZWUuaXRlcigpKScgaW5zdGVhZC4iLAorICAgICAgICAgICAgICAgICAgICAgMSkgPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gZWxlbWVudF9pdGVyX2ltcGwoc2VsZiwgdGFnKTsKK30KKwogCiBzdGF0aWMgUHlPYmplY3QqCiBlbGVtZW50X2l0ZXJ0ZXh0KEVsZW1lbnRPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQpAQCAtMTIzMSw4ICsxMjY5LDEwIEBACiAgICAgaWYgKHN0YXR1cyA9PSAwKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXByLCAqdGFnOwogICAgICAgICB0YWcgPSBQeU9iamVjdF9SZXByKHNlbGYtPnRhZyk7Ci0gICAgICAgIGlmICghdGFnKQorICAgICAgICBpZiAoIXRhZykgeworICAgICAgICAgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKXNlbGYpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KIAogICAgICAgICByZXByID0gUHlTdHJpbmdfRnJvbUZvcm1hdCgiPEVsZW1lbnQgJXMgYXQgJXA+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfQVNfU1RSSU5HKHRhZyksIHNlbGYpOwpAQCAtMTMwNyw3ICsxMzQ3LDcgQEAKICAgICBFbGVtZW50T2JqZWN0KiBzZWxmID0gKEVsZW1lbnRPYmplY3QqKSBzZWxmXzsKIAogI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNTAwMDApCi0gICAgaWYgKFB5SW50X0NoZWNrKGl0ZW0pIHx8IFB5TG9uZ19DaGVjayhpdGVtKSkgeworICAgIGlmIChfUHlBbnlJbnRfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgbG9uZyBpID0gUHlJbnRfQXNMb25nKGl0ZW0pOwogI2Vsc2UKICAgICBpZiAoUHlJbmRleF9DaGVjayhpdGVtKSkgewpAQCAtMTMyOCwxMSArMTM2OCwxMSBAQAogICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKQogICAgICAgICAgICAgcmV0dXJuIFB5TGlzdF9OZXcoMCk7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0ICopaXRlbSwKLSAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+bGVuZ3RoLAotICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW4pIDwgMCkgeworICAgICAgICBpZiAoX1B5U2xpY2VfVW5wYWNrKGl0ZW0sICZzdGFydCwgJnN0b3AsICZzdGVwKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIHNsaWNlbGVuID0gX1B5U2xpY2VfQWRqdXN0SW5kaWNlcyhzZWxmLT5leHRyYS0+bGVuZ3RoLCAmc3RhcnQsICZzdG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwKTsKIAogICAgICAgICBpZiAoc2xpY2VsZW4gPD0gMCkKICAgICAgICAgICAgIHJldHVybiBQeUxpc3RfTmV3KDApOwpAQCAtMTM2NCw3ICsxNDA0LDcgQEAKICAgICBFbGVtZW50T2JqZWN0KiBzZWxmID0gKEVsZW1lbnRPYmplY3QqKSBzZWxmXzsKIAogI2lmIChQWV9WRVJTSU9OX0hFWCA8IDB4MDIwNTAwMDApCi0gICAgaWYgKFB5SW50X0NoZWNrKGl0ZW0pIHx8IFB5TG9uZ19DaGVjayhpdGVtKSkgeworICAgIGlmIChfUHlBbnlJbnRfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgbG9uZyBpID0gUHlJbnRfQXNMb25nKGl0ZW0pOwogI2Vsc2UKICAgICBpZiAoUHlJbmRleF9DaGVjayhpdGVtKSkgewpAQCAtMTM4NywxMSArMTQyNywxMSBAQAogICAgICAgICBpZiAoIXNlbGYtPmV4dHJhKQogICAgICAgICAgICAgZWxlbWVudF9uZXdfZXh0cmEoc2VsZiwgTlVMTCk7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0ICopaXRlbSwKLSAgICAgICAgICAgICAgICBzZWxmLT5leHRyYS0+bGVuZ3RoLAotICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW4pIDwgMCkgeworICAgICAgICBpZiAoX1B5U2xpY2VfVW5wYWNrKGl0ZW0sICZzdGFydCwgJnN0b3AsICZzdGVwKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQorICAgICAgICBzbGljZWxlbiA9IF9QeVNsaWNlX0FkanVzdEluZGljZXMoc2VsZi0+ZXh0cmEtPmxlbmd0aCwgJnN0YXJ0LCAmc3RvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcCk7CiAgICAgICAgIGFzc2VydChzbGljZWxlbiA8PSBzZWxmLT5leHRyYS0+bGVuZ3RoKTsKIAogICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkKQEAgLTE1MDQsNyArMTU0NCw3IEBACiAgICAgeyJpdGVydGV4dCIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVydGV4dCwgTUVUSF9WQVJBUkdTfSwKICAgICB7Iml0ZXJmaW5kIiwgKFB5Q0Z1bmN0aW9uKSBlbGVtZW50X2l0ZXJmaW5kLCBNRVRIX1ZBUkFSR1N9LAogCi0gICAgeyJnZXRpdGVyYXRvciIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9pdGVyLCBNRVRIX1ZBUkFSR1N9LAorICAgIHsiZ2V0aXRlcmF0b3IiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfZ2V0aXRlcmF0b3IsIE1FVEhfVkFSQVJHU30sCiAgICAgeyJnZXRjaGlsZHJlbiIsIChQeUNGdW5jdGlvbikgZWxlbWVudF9nZXRjaGlsZHJlbiwgTUVUSF9WQVJBUkdTfSwKIAogICAgIHsiaXRlbXMiLCAoUHlDRnVuY3Rpb24pIGVsZW1lbnRfaXRlbXMsIE1FVEhfVkFSQVJHU30sCkBAIC0xNTQyLDcgKzE1ODIsNyBAQAogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJ0ZXh0IikgPT0gMCkgewogICAgICAgICByZXMgPSBlbGVtZW50X2dldF90ZXh0KHNlbGYpOwotICAgICAgICBQeV9JTkNSRUYocmVzKTsKKyAgICAgICAgUHlfWElOQ1JFRihyZXMpOwogICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KIApAQCAtMTU4NywxMyArMTYyNywxMSBAQAogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICBQeV9TRVRSRUYoc2VsZi0+dGFnLCB2YWx1ZSk7CiAgICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInRleHQiKSA9PSAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT50ZXh0KSk7Ci0gICAgICAgIHNlbGYtPnRleHQgPSB2YWx1ZTsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYtPnRleHQpOworICAgICAgICBQeV9JTkNSRUYodmFsdWUpOworICAgICAgICBfc2V0X2pvaW5lZF9wdHIoJnNlbGYtPnRleHQsIHZhbHVlKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAidGFpbCIpID09IDApIHsKLSAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPnRhaWwpKTsKLSAgICAgICAgc2VsZi0+dGFpbCA9IHZhbHVlOwotICAgICAgICBQeV9JTkNSRUYoc2VsZi0+dGFpbCk7CisgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7CisgICAgICAgIF9zZXRfam9pbmVkX3B0cigmc2VsZi0+dGFpbCwgdmFsdWUpOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJhdHRyaWIiKSA9PSAwKSB7CiAgICAgICAgIGlmICghc2VsZi0+ZXh0cmEpCiAgICAgICAgICAgICBlbGVtZW50X25ld19leHRyYShzZWxmLCBOVUxMKTsKQEAgLTE2MjQsOCArMTY2Miw4IEBACiB9OwogCiBzdGF0aWNoZXJlIFB5VHlwZU9iamVjdCBFbGVtZW50X1R5cGUgPSB7Ci0gICAgUHlPYmplY3RfSEVBRF9JTklUKE5VTEwpCi0gICAgMCwgIkVsZW1lbnQiLCBzaXplb2YoRWxlbWVudE9iamVjdCksIDAsCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIkVsZW1lbnQiLCBzaXplb2YoRWxlbWVudE9iamVjdCksIDAsCiAgICAgLyogbWV0aG9kcyAqLwogICAgIChkZXN0cnVjdG9yKWVsZW1lbnRfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsIC8qIHRwX3ByaW50ICovCkBAIC0xNzI5LDYgKzE3NjcsMzcgQEAKICAgICBQeU9iamVjdF9EZWwoc2VsZik7CiB9CiAKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisvKiBoZWxwZXJzIGZvciBoYW5kbGluZyBvZiBhcmJpdHJhcnkgZWxlbWVudC1saWtlIG9iamVjdHMgKi8KKworc3RhdGljIHZvaWQKK3RyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHRfb3JfdGFpbChQeU9iamVjdCAqKmRhdGEsIFB5T2JqZWN0ICoqZGVzdCkKK3sKKyAgICBQeU9iamVjdCAqdG1wID0gSk9JTl9PQkooKmRlc3QpOworICAgICpkZXN0ID0gSk9JTl9TRVQoKmRhdGEsIFB5TGlzdF9DaGVja0V4YWN0KCpkYXRhKSk7CisgICAgKmRhdGEgPSBOVUxMOworICAgIFB5X0RFQ1JFRih0bXApOworfQorCitMT0NBTCh2b2lkKQordHJlZWJ1aWxkZXJfZmx1c2hfZGF0YShUcmVlQnVpbGRlck9iamVjdCogc2VsZikKK3sKKyAgICBFbGVtZW50T2JqZWN0ICplbGVtZW50ID0gc2VsZi0+bGFzdDsKKworICAgIGlmIChzZWxmLT5kYXRhKSB7CisgICAgICAgIGlmIChzZWxmLT50aGlzID09IGVsZW1lbnQpIHsKKyAgICAgICAgICAgIHRyZWVidWlsZGVyX3NldF9lbGVtZW50X3RleHRfb3JfdGFpbCgKKyAgICAgICAgICAgICAgICAmc2VsZi0+ZGF0YSwKKyAgICAgICAgICAgICAgICAmZWxlbWVudC0+dGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB0cmVlYnVpbGRlcl9zZXRfZWxlbWVudF90ZXh0X29yX3RhaWwoCisgICAgICAgICAgICAgICAgJnNlbGYtPmRhdGEsCisgICAgICAgICAgICAgICAgJmVsZW1lbnQtPnRhaWwpOworICAgICAgICB9CisgICAgfQorfQorCiBMT0NBTChpbnQpCiB0cmVlYnVpbGRlcl9hcHBlbmRfZXZlbnQoVHJlZUJ1aWxkZXJPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphY3Rpb24sCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5vZGUpCkBAIC0xNzYzLDIwICsxODMyLDcgQEAKICAgICBQeU9iamVjdCogbm9kZTsKICAgICBQeU9iamVjdCogdGhpczsKIAotICAgIGlmIChzZWxmLT5kYXRhKSB7Ci0gICAgICAgIGlmIChzZWxmLT50aGlzID09IHNlbGYtPmxhc3QpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT5sYXN0LT50ZXh0KSk7Ci0gICAgICAgICAgICBzZWxmLT5sYXN0LT50ZXh0ID0gSk9JTl9TRVQoCi0gICAgICAgICAgICAgICAgc2VsZi0+ZGF0YSwgUHlMaXN0X0NoZWNrRXhhY3Qoc2VsZi0+ZGF0YSkKLSAgICAgICAgICAgICAgICApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgUHlfREVDUkVGKEpPSU5fT0JKKHNlbGYtPmxhc3QtPnRhaWwpKTsKLSAgICAgICAgICAgIHNlbGYtPmxhc3QtPnRhaWwgPSBKT0lOX1NFVCgKLSAgICAgICAgICAgICAgICBzZWxmLT5kYXRhLCBQeUxpc3RfQ2hlY2tFeGFjdChzZWxmLT5kYXRhKQotICAgICAgICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICAgICAgc2VsZi0+ZGF0YSA9IE5VTEw7Ci0gICAgfQorICAgIHRyZWVidWlsZGVyX2ZsdXNoX2RhdGEoc2VsZik7CiAKICAgICBub2RlID0gZWxlbWVudF9uZXcodGFnLCBhdHRyaWIpOwogICAgIGlmICghbm9kZSkKQEAgLTE4NjYsMjAgKzE5MjIsNyBAQAogewogICAgIEVsZW1lbnRPYmplY3QgKml0ZW07CiAKLSAgICBpZiAoc2VsZi0+ZGF0YSkgewotICAgICAgICBpZiAoc2VsZi0+dGhpcyA9PSBzZWxmLT5sYXN0KSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoSk9JTl9PQkooc2VsZi0+bGFzdC0+dGV4dCkpOwotICAgICAgICAgICAgc2VsZi0+bGFzdC0+dGV4dCA9IEpPSU5fU0VUKAotICAgICAgICAgICAgICAgIHNlbGYtPmRhdGEsIFB5TGlzdF9DaGVja0V4YWN0KHNlbGYtPmRhdGEpCi0gICAgICAgICAgICAgICAgKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihKT0lOX09CSihzZWxmLT5sYXN0LT50YWlsKSk7Ci0gICAgICAgICAgICBzZWxmLT5sYXN0LT50YWlsID0gSk9JTl9TRVQoCi0gICAgICAgICAgICAgICAgc2VsZi0+ZGF0YSwgUHlMaXN0X0NoZWNrRXhhY3Qoc2VsZi0+ZGF0YSkKLSAgICAgICAgICAgICAgICApOwotICAgICAgICB9Ci0gICAgICAgIHNlbGYtPmRhdGEgPSBOVUxMOwotICAgIH0KKyAgICB0cmVlYnVpbGRlcl9mbHVzaF9kYXRhKHNlbGYpOwogCiAgICAgaWYgKHNlbGYtPmluZGV4ID09IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKApAQCAtMTk4OSw4ICsyMDMyLDggQEAKIH0KIAogc3RhdGljaGVyZSBQeVR5cGVPYmplY3QgVHJlZUJ1aWxkZXJfVHlwZSA9IHsKLSAgICBQeU9iamVjdF9IRUFEX0lOSVQoTlVMTCkKLSAgICAwLCAiVHJlZUJ1aWxkZXIiLCBzaXplb2YoVHJlZUJ1aWxkZXJPYmplY3QpLCAwLAorICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJUcmVlQnVpbGRlciIsIHNpemVvZihUcmVlQnVpbGRlck9iamVjdCksIDAsCiAgICAgLyogbWV0aG9kcyAqLwogICAgIChkZXN0cnVjdG9yKXRyZWVidWlsZGVyX2RlYWxsb2MsIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAvKiB0cF9wcmludCAqLwpAQCAtMjQ2Nyw2ICsyNTEwLDE4IEBACiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogLyogY29uc3RydWN0b3IgYW5kIGRlc3RydWN0b3IgKi8KIAorc3RhdGljIGludAoraWdub3JlX2F0dHJpYnV0ZV9lcnJvcihQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgUHlPYmplY3QqCiB4bWxwYXJzZXIoUHlPYmplY3QqIHNlbGZfLCBQeU9iamVjdCogYXJncywgUHlPYmplY3QqIGt3KQogewpAQCAtMjUyMCwxNCArMjU3NSwyNCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKKyAgICBBTExPQyhzaXplb2YoWE1MUGFyc2VyT2JqZWN0KSwgImNyZWF0ZSBleHBhdHBhcnNlciIpOworCisgICAgLyogSW5pdCB0byBOVUxMIHRvIGtlZXAgdGhlIGVycm9yIGhhbmRsaW5nIGJlbG93IG1hbmFnZWFibGUuICovCisgICAgc2VsZi0+dGFyZ2V0ID0KKyAgICAgICAgc2VsZi0+aGFuZGxlX3htbCA9CisgICAgICAgIHNlbGYtPmhhbmRsZV9zdGFydCA9CisgICAgICAgIHNlbGYtPmhhbmRsZV9kYXRhID0KKyAgICAgICAgc2VsZi0+aGFuZGxlX2VuZCA9CisgICAgICAgIHNlbGYtPmhhbmRsZV9jb21tZW50ID0KKyAgICAgICAgc2VsZi0+aGFuZGxlX3BpID0KKyAgICAgICAgc2VsZi0+aGFuZGxlX2Nsb3NlID0KKyAgICAgICAgTlVMTDsKKwogICAgIC8qIHNldHVwIHRhcmdldCBoYW5kbGVycyAqLwogICAgIGlmICghdGFyZ2V0KSB7CiAgICAgICAgIHRhcmdldCA9IHRyZWVidWlsZGVyX25ldygpOwogICAgICAgICBpZiAoIXRhcmdldCkgewotICAgICAgICAgICAgRVhQQVQoUGFyc2VyRnJlZSkoc2VsZi0+cGFyc2VyKTsKLSAgICAgICAgICAgIFB5T2JqZWN0X0RlbChzZWxmLT5uYW1lcyk7Ci0gICAgICAgICAgICBQeU9iamVjdF9EZWwoc2VsZi0+ZW50aXR5KTsKLSAgICAgICAgICAgIFB5T2JqZWN0X0RlbChzZWxmKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgfSBlbHNlCkBAIC0yNTM1LDE0ICsyNjAwLDQwIEBACiAgICAgc2VsZi0+dGFyZ2V0ID0gdGFyZ2V0OwogCiAgICAgc2VsZi0+aGFuZGxlX3htbCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAieG1sIik7CisgICAgaWYgKGlnbm9yZV9hdHRyaWJ1dGVfZXJyb3Ioc2VsZi0+aGFuZGxlX3htbCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgc2VsZi0+aGFuZGxlX3N0YXJ0ID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJzdGFydCIpOworICAgIGlmIChpZ25vcmVfYXR0cmlidXRlX2Vycm9yKHNlbGYtPmhhbmRsZV9zdGFydCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgc2VsZi0+aGFuZGxlX2RhdGEgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImRhdGEiKTsKKyAgICBpZiAoaWdub3JlX2F0dHJpYnV0ZV9lcnJvcihzZWxmLT5oYW5kbGVfZGF0YSkpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgc2VsZi0+aGFuZGxlX2VuZCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcodGFyZ2V0LCAiZW5kIik7CisgICAgaWYgKGlnbm9yZV9hdHRyaWJ1dGVfZXJyb3Ioc2VsZi0+aGFuZGxlX2VuZCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgc2VsZi0+aGFuZGxlX2NvbW1lbnQgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHRhcmdldCwgImNvbW1lbnQiKTsKKyAgICBpZiAoaWdub3JlX2F0dHJpYnV0ZV9lcnJvcihzZWxmLT5oYW5kbGVfY29tbWVudCkpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgc2VsZi0+aGFuZGxlX3BpID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJwaSIpOworICAgIGlmIChpZ25vcmVfYXR0cmlidXRlX2Vycm9yKHNlbGYtPmhhbmRsZV9waSkpIHsKKyAgICAgICAgUHlfREVDUkVGKHNlbGYpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgc2VsZi0+aGFuZGxlX2Nsb3NlID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh0YXJnZXQsICJjbG9zZSIpOwotCi0gICAgUHlFcnJfQ2xlYXIoKTsKKyAgICBpZiAoaWdub3JlX2F0dHJpYnV0ZV9lcnJvcihzZWxmLT5oYW5kbGVfY2xvc2UpKSB7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgLyogY29uZmlndXJlIHBhcnNlciAqLwogICAgIEVYUEFUKFNldFVzZXJEYXRhKShzZWxmLT5wYXJzZXIsIHNlbGYpOwpAQCAtMjU3Niw4ICsyNjY3LDYgQEAKICAgICAgICAgKTsKICNlbmRpZgogCi0gICAgQUxMT0Moc2l6ZW9mKFhNTFBhcnNlck9iamVjdCksICJjcmVhdGUgZXhwYXRwYXJzZXIiKTsKLQogICAgIHJldHVybiAoUHlPYmplY3QqKSBzZWxmOwogfQogCkBAIC0yODU1LDggKzI5NDQsOCBAQAogfQogCiBzdGF0aWNoZXJlIFB5VHlwZU9iamVjdCBYTUxQYXJzZXJfVHlwZSA9IHsKLSAgICBQeU9iamVjdF9IRUFEX0lOSVQoTlVMTCkKLSAgICAwLCAiWE1MUGFyc2VyIiwgc2l6ZW9mKFhNTFBhcnNlck9iamVjdCksIDAsCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCisgICAgIlhNTFBhcnNlciIsIHNpemVvZihYTUxQYXJzZXJPYmplY3QpLCAwLAogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3Rvcil4bWxwYXJzZXJfZGVhbGxvYywgLyogdHBfZGVhbGxvYyAqLwogICAgIDAsIC8qIHRwX3ByaW50ICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19mdW5jdG9vbHNtb2R1bGUuYyBiL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCmluZGV4IGUwNzgxYTkuLmU5ZTg5MzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCisrKyBiL01vZHVsZXMvX2Z1bmN0b29sc21vZHVsZS5jCkBAIC0xNDMsNiArMTQzLDcgQEAKIHN0YXRpYyB2b2lkCiBwYXJ0aWFsX2RlYWxsb2MocGFydGlhbG9iamVjdCAqcHRvKQogeworICAgIC8qIGJwby0zMTA5NTogVW5UcmFjayBpcyBuZWVkZWQgYmVmb3JlIGNhbGxpbmcgYW55IGNhbGxiYWNrcyAqLwogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2socHRvKTsKICAgICBpZiAocHRvLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQogICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCAqKSBwdG8pOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYyBiL01vZHVsZXMvX2hhc2hvcGVuc3NsLmMKaW5kZXggNzViM2EzZC4uZGU2OWY2ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faGFzaG9wZW5zc2wuYworKysgYi9Nb2R1bGVzL19oYXNob3BlbnNzbC5jCkBAIC04OTksOCArODk5LDExIEBACiB7CiAgICAgUHlPYmplY3QgKm0sICpvcGVuc3NsX21kX21ldGhfbmFtZXM7CiAKLSAgICBPcGVuU1NMX2FkZF9hbGxfZGlnZXN0cygpOworI2lmbmRlZiBPUEVOU1NMX1ZFUlNJT05fMV8xCisgICAgLyogTG9hZCBhbGwgZGlnZXN0IGFsZ29yaXRobXMgYW5kIGluaXRpYWxpemUgY3B1aWQgKi8KKyAgICBPUEVOU1NMX2FkZF9hbGxfYWxnb3JpdGhtc19ub2NvbmYoKTsKICAgICBFUlJfbG9hZF9jcnlwdG9fc3RyaW5ncygpOworI2VuZGlmCiAKICAgICAvKiBUT0RPIGJ1aWxkIEVWUF9mdW5jdGlvbnMgb3BlbnNzbF8qIGVudHJpZXMgZHluYW1pY2FsbHkgYmFzZWQKICAgICAgKiBvbiB3aGF0IGhhc2hlcyBhcmUgc3VwcG9ydGVkIHJhdGhlciB0aGFuIGxpc3RpbmcgbWFueQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vYnl0ZXNpby5jIGIvTW9kdWxlcy9faW8vYnl0ZXNpby5jCmluZGV4IDEzMzVhZTguLjBlZTRiODAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2J5dGVzaW8uYworKysgYi9Nb2R1bGVzL19pby9ieXRlc2lvLmMKQEAgLTc0NSw2ICs3NDUsNyBAQAogc3RhdGljIHZvaWQKIGJ5dGVzaW9fZGVhbGxvYyhieXRlc2lvICpzZWxmKQogeworICAgIC8qIGJwby0zMTA5NTogVW5UcmFjayBpcyBuZWVkZWQgYmVmb3JlIGNhbGxpbmcgYW55IGNhbGxiYWNrcyAqLwogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNlbGYpOwogICAgIGlmIChzZWxmLT5idWYgIT0gTlVMTCkgewogICAgICAgICBQeU1lbV9GcmVlKHNlbGYtPmJ1Zik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19pby9maWxlaW8uYyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCmluZGV4IDA2NzhlZjguLjJiNDBhZGEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX2lvL2ZpbGVpby5jCisrKyBiL01vZHVsZXMvX2lvL2ZpbGVpby5jCkBAIC04LDYgKzgsOSBAQAogI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0lPX0gKKyNpbmNsdWRlIDxpby5oPgorI2VuZGlmCiAjaWZkZWYgSEFWRV9GQ05UTF9ICiAjaW5jbHVkZSA8ZmNudGwuaD4KICNlbmRpZgpAQCAtMTQzLDkgKzE0NiwxNSBAQAogewogI2lmIGRlZmluZWQoSEFWRV9GU1RBVCkgJiYgZGVmaW5lZChTX0lGRElSKSAmJiBkZWZpbmVkKEVJU0RJUikKICAgICBzdHJ1Y3Qgc3RhdCBidWY7CisgICAgaW50IHJlczsKICAgICBpZiAoc2VsZi0+ZmQgPCAwKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoZnN0YXQoc2VsZi0+ZmQsICZidWYpID09IDAgJiYgU19JU0RJUihidWYuc3RfbW9kZSkpIHsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBmc3RhdChzZWxmLT5mZCwgJmJ1Zik7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXMgPT0gMCAmJiBTX0lTRElSKGJ1Zi5zdF9tb2RlKSkgewogICAgICAgICBlcnJubyA9IEVJU0RJUjsKICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0KFB5RXhjX0lPRXJyb3IsIG5hbWVvYmopOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0xNTksMTcgKzE2OCwzNCBAQAogewogI2lmIGRlZmluZWQoSEFWRV9GU1RBVCkKICAgICBzdHJ1Y3Qgc3RhdCBidWY7Ci0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpIHx8IChmc3RhdChmZCwgJmJ1ZikgPCAwICYmIGVycm5vID09IEVCQURGKSkgewotICAgICAgICBQeU9iamVjdCAqZXhjOwotICAgICAgICBjaGFyICptc2cgPSBzdHJlcnJvcihFQkFERik7Ci0gICAgICAgIGV4YyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeUV4Y19PU0Vycm9yLCAiKGlzKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQkFERiwgbXNnKTsKLSAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX09TRXJyb3IsIGV4Yyk7Ci0gICAgICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGludCByZXM7CisgICAgUHlPYmplY3QgKmV4YzsKKyAgICBjaGFyICptc2c7CisKKyAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgZ290byBiYWRmZDsKICAgICB9Ci0jZW5kaWYKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBmc3RhdChmZCwgJmJ1Zik7CisgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKKworICAgIGlmIChyZXMgPCAwICYmIGVycm5vID09IEVCQURGKSB7CisgICAgICAgIGdvdG8gYmFkZmQ7CisgICAgfQorCiAgICAgcmV0dXJuIDA7CisKK2JhZGZkOgorICAgIG1zZyA9IHN0cmVycm9yKEVCQURGKTsKKyAgICBleGMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlFeGNfT1NFcnJvciwgIihpcykiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFQkFERiwgbXNnKTsKKyAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfT1NFcnJvciwgZXhjKTsKKyAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgcmV0dXJuIC0xOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgogfQogCiAKQEAgLTUxNiw5ICs1NDIsMTkgQEAKICNpZmRlZiBIQVZFX0ZTVEFUCiAgICAgb2ZmX3QgcG9zLCBlbmQ7CiAgICAgc3RydWN0IHN0YXQgc3Q7Ci0gICAgaWYgKGZzdGF0KHNlbGYtPmZkLCAmc3QpID09IDApIHsKKyAgICBpbnQgcmVzOworCisgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgIHJlcyA9IGZzdGF0KHNlbGYtPmZkLCAmc3QpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzID09IDApIHsKICAgICAgICAgZW5kID0gc3Quc3Rfc2l6ZTsKKworICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgICAgIHBvcyA9IGxzZWVrKHNlbGYtPmZkLCAwTCwgU0VFS19DVVIpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworCiAgICAgICAgIC8qIEZpbGVzIGNsYWltaW5nIGEgc2l6ZSBzbWFsbGVyIHRoYW4gU01BTExDSFVOSyBtYXkKICAgICAgICAgICAgYWN0dWFsbHkgYmUgc3RyZWFtaW5nIHBzZXVkby1maWxlcy4gSW4gdGhpcyBjYXNlLCB3ZQogICAgICAgICAgICBhcHBseSB0aGUgbW9yZSBhZ2dyZXNzaXZlIGFsZ29yaXRobSBiZWxvdy4KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2lvL2lvYmFzZS5jIGIvTW9kdWxlcy9faW8vaW9iYXNlLmMKaW5kZXggMmZlYzdlOC4uMTdiOTA1YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9faW8vaW9iYXNlLmMKKysrIGIvTW9kdWxlcy9faW8vaW9iYXNlLmMKQEAgLTEsOSArMSw5IEBACiAvKgogICAgIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBJL08gYWJzdHJhY3QgYmFzZSBjbGFzc2VzIGhpZXJhcmNoeQogICAgIGFzIGRlZmluZWQgYnkgUEVQIDMxMTYgLSAiTmV3IEkvTyIKLSAgICAKKwogICAgIENsYXNzZXMgZGVmaW5lZCBoZXJlOiBJT0Jhc2UsIFJhd0lPQmFzZS4KLSAgICAKKwogICAgIFdyaXR0ZW4gYnkgQW1hdXJ5IEZvcmdlb3QgZCdBcmMgYW5kIEFudG9pbmUgUGl0cm91CiAqLwogCkBAIC0xOSw3ICsxOSw3IEBACiAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECi0gICAgCisKICAgICBQeU9iamVjdCAqZGljdDsKICAgICBQeU9iamVjdCAqd2Vha3JlZmxpc3Q7CiB9IGlvYmFzZTsKQEAgLTE3NywxNyArMTc3LDI1IEBACiBzdGF0aWMgUHlPYmplY3QgKgogaW9iYXNlX2Nsb3NlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqcmVzOworICAgIFB5T2JqZWN0ICpyZXMsICpleGMsICp2YWwsICp0YjsKKyAgICBpbnQgcmM7CiAKICAgICBpZiAoSVNfQ0xPU0VEKHNlbGYpKQogICAgICAgICBQeV9SRVRVUk5fTk9ORTsKIAogICAgIHJlcyA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKHNlbGYsIF9QeUlPX3N0cl9mbHVzaCwgTlVMTCk7Ci0gICAgUHlPYmplY3RfU2V0QXR0clN0cmluZyhzZWxmLCAiX19JT0Jhc2VfY2xvc2VkIiwgUHlfVHJ1ZSk7CisKKyAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworICAgIHJjID0gUHlPYmplY3RfU2V0QXR0clN0cmluZyhzZWxmLCAiX19JT0Jhc2VfY2xvc2VkIiwgUHlfVHJ1ZSk7CisgICAgX1B5RXJyX1JlcGxhY2VFeGNlcHRpb24oZXhjLCB2YWwsIHRiKTsKKyAgICBpZiAocmMgPCAwKSB7CisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgfQorCiAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9YREVDUkVGKHJlcyk7CisgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKQEAgLTU3MSw3ICs1NzksOCBAQAogICAgIGlmIChsaW5lID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5T2JqZWN0X1NpemUobGluZSkgPT0gMCkgeworICAgIGlmIChQeU9iamVjdF9TaXplKGxpbmUpIDw9IDApIHsKKyAgICAgICAgLyogRXJyb3Igb3IgZW1wdHkgKi8KICAgICAgICAgUHlfREVDUkVGKGxpbmUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC01OTAsNyArNTk5LDcgQEAKIGlvYmFzZV9yZWFkbGluZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIFB5X3NzaXplX3QgaGludCA9IC0xLCBsZW5ndGggPSAwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnJlc3VsdCwgKml0ID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAifE8mOnJlYWRsaW5lcyIsICZfUHlJT19Db252ZXJ0U3NpemVfdCwgJmhpbnQpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjA2LDE5ICs2MTUsMjMgQEAKICAgICAgICAgICAgcHJvYmFibHkgYmUgcmVtb3ZlZCBoZXJlLiAqLwogICAgICAgICBQeU9iamVjdCAqcmV0ID0gUHlPYmplY3RfQ2FsbE1ldGhvZChyZXN1bHQsICJleHRlbmQiLCAiTyIsIHNlbGYpOwogICAgICAgICBpZiAocmV0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9CiAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcihzZWxmKTsKKyAgICBpZiAoaXQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKwogICAgIHdoaWxlICgxKSB7Ci0gICAgICAgIFB5T2JqZWN0ICpsaW5lID0gUHlJdGVyX05leHQoc2VsZik7CisgICAgICAgIFB5X3NzaXplX3QgbGluZV9sZW5ndGg7CisgICAgICAgIFB5T2JqZWN0ICpsaW5lID0gUHlJdGVyX05leHQoaXQpOwogICAgICAgICBpZiAobGluZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIFN0b3BJdGVyYXRpb24gcmFpc2VkICovCkBAIC02MjYsMTYgKzYzOSwyNSBAQAogCiAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKHJlc3VsdCwgbGluZSkgPCAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGluZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBsZW5ndGggKz0gUHlPYmplY3RfU2l6ZShsaW5lKTsKKyAgICAgICAgbGluZV9sZW5ndGggPSBQeU9iamVjdF9TaXplKGxpbmUpOwogICAgICAgICBQeV9ERUNSRUYobGluZSk7Ci0KLSAgICAgICAgaWYgKGxlbmd0aCA+IGhpbnQpCisgICAgICAgIGlmIChsaW5lX2xlbmd0aCA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxpbmVfbGVuZ3RoID4gaGludCAtIGxlbmd0aCkKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBsZW5ndGggKz0gbGluZV9sZW5ndGg7CiAgICAgfQorCisgICAgUHlfREVDUkVGKGl0KTsKICAgICByZXR1cm4gcmVzdWx0OworCisgZXJyb3I6CisgICAgUHlfWERFQ1JFRihpdCk7CisgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCkBAIC04MjMsNyArODQ1LDcgQEAKICAgICBpbnQgcjsKICAgICBQeU9iamVjdCAqY2h1bmtzID0gUHlMaXN0X05ldygwKTsKICAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIAorCiAgICAgaWYgKGNodW5rcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9faW8vdGV4dGlvLmMgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwppbmRleCBiNDAwN2MyLi4xOTc5NTM5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19pby90ZXh0aW8uYworKysgYi9Nb2R1bGVzL19pby90ZXh0aW8uYwpAQCAtNzA3LDYgKzcwNyw4IEBACiAgICAgUHlPYmplY3QgKmRpY3Q7CiB9IHRleHRpbzsKIAorc3RhdGljIHZvaWQKK3RleHRpb3dyYXBwZXJfc2V0X2RlY29kZWRfY2hhcnModGV4dGlvICpzZWxmLCBQeU9iamVjdCAqY2hhcnMpOwogCiAvKiBBIGNvdXBsZSBvZiBzcGVjaWFsaXplZCBjYXNlcyBpbiBvcmRlciB0byBieXBhc3MgdGhlIHNsb3cgaW5jcmVtZW50YWwKICAgIGVuY29kaW5nIG1ldGhvZHMgZm9yIHRoZSBtb3N0IHBvcHVsYXIgZW5jb2RpbmdzLiAqLwpAQCAtOTA3LDYgKzkwOSw3IEBACiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JT0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBkZXRlcm1pbmUgZGVmYXVsdCBlbmNvZGluZyIpOworICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIAogICAgIC8qIENoZWNrIHdlIGhhdmUgYmVlbiBhc2tlZCBmb3IgYSByZWFsIHRleHQgZW5jb2RpbmcgKi8KQEAgLTk4Myw3ICs5ODYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOwogICAgICAgICBpZiAoc2VsZi0+ZW5jb2RlciA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgLyogR2V0IHRoZSBub3JtYWxpemVkIG5hbWVkIG9mIHRoZSBjb2RlYyAqLworICAgICAgICAvKiBHZXQgdGhlIG5vcm1hbGl6ZWQgbmFtZSBvZiB0aGUgY29kZWMgKi8KICAgICAgICAgcmVzID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjb2RlY19pbmZvLCAibmFtZSIpOwogICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkKQEAgLTEzMjgsNiArMTMzMSw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwogICAgIH0KIAorICAgIHRleHRpb3dyYXBwZXJfc2V0X2RlY29kZWRfY2hhcnMoc2VsZiwgTlVMTCk7CiAgICAgUHlfQ0xFQVIoc2VsZi0+c25hcHNob3QpOwogCiAgICAgaWYgKHNlbGYtPmRlY29kZXIpIHsKQEAgLTE0MTYsNyArMTQyMCw3IEBACiAgICAgICAgIC8qIEdpdmVuIHRoaXMsIHdlIGtub3cgdGhlcmUgd2FzIGEgdmFsaWQgc25hcHNob3QgcG9pbnQKICAgICAgICAgICogbGVuKGRlY19idWZmZXIpIGJ5dGVzIGFnbyB3aXRoIGRlY29kZXIgc3RhdGUgKGInJywgZGVjX2ZsYWdzKS4KICAgICAgICAgICovCi0gICAgICAgIGlmIChQeUFyZ19QYXJzZShzdGF0ZSwgIihPTykiLCAmZGVjX2J1ZmZlciwgJmRlY19mbGFncykgPCAwKSB7CisgICAgICAgIGlmICghUHlBcmdfUGFyc2Uoc3RhdGUsICIoT08pIiwgJmRlY19idWZmZXIsICZkZWNfZmxhZ3MpKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoc3RhdGUpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CkBAIC0xNTMzLDYgKzE1MzcsNyBAQAogICAgICAgICBpZiAoZmluYWwgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gZmFpbDsKIAorICAgICAgICB0ZXh0aW93cmFwcGVyX3NldF9kZWNvZGVkX2NoYXJzKHNlbGYsIE5VTEwpOwogICAgICAgICBQeV9DTEVBUihzZWxmLT5zbmFwc2hvdCk7CiAgICAgICAgIHJldHVybiBmaW5hbDsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19qc29uLmMgYi9Nb2R1bGVzL19qc29uLmMKaW5kZXggMTg5Y2IyYy4uM2E4ODg4MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fanNvbi5jCisrKyBiL01vZHVsZXMvX2pzb24uYwpAQCAtOTUsMTYgKzk1LDEyIEBACiBfYnVpbGRfcnZhbF9pbmRleF90dXBsZShQeU9iamVjdCAqcnZhbCwgUHlfc3NpemVfdCBpZHgpOwogc3RhdGljIFB5T2JqZWN0ICoKIHNjYW5uZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKLXN0YXRpYyBpbnQKLXNjYW5uZXJfaW5pdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKTsKIHN0YXRpYyB2b2lkCiBzY2FubmVyX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpOwogc3RhdGljIGludAogc2Nhbm5lcl9jbGVhcihQeU9iamVjdCAqc2VsZik7CiBzdGF0aWMgUHlPYmplY3QgKgogZW5jb2Rlcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOwotc3RhdGljIGludAotZW5jb2Rlcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpOwogc3RhdGljIHZvaWQKIGVuY29kZXJfZGVhbGxvYyhQeU9iamVjdCAqc2VsZik7CiBzdGF0aWMgaW50CkBAIC04NDQsNyArODQwLDggQEAKIHN0YXRpYyB2b2lkCiBzY2FubmVyX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgLyogRGVhbGxvY2F0ZSBzY2FubmVyIG9iamVjdCAqLworICAgIC8qIGJwby0zMTA5NTogVW5UcmFjayBpcyBuZWVkZWQgYmVmb3JlIGNhbGxpbmcgYW55IGNhbGxiYWNrcyAqLworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CiAgICAgc2Nhbm5lcl9jbGVhcihzZWxmKTsKICAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOwogfQpAQCAtMTcwNywzMiArMTcwNCwxNSBAQAogc2Nhbm5lcl9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlTY2FubmVyT2JqZWN0ICpzOwotICAgIHMgPSAoUHlTY2FubmVyT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7Ci0gICAgaWYgKHMgIT0gTlVMTCkgewotICAgICAgICBzLT5lbmNvZGluZyA9IE5VTEw7Ci0gICAgICAgIHMtPnN0cmljdCA9IE5VTEw7Ci0gICAgICAgIHMtPm9iamVjdF9ob29rID0gTlVMTDsKLSAgICAgICAgcy0+cGFpcnNfaG9vayA9IE5VTEw7Ci0gICAgICAgIHMtPnBhcnNlX2Zsb2F0ID0gTlVMTDsKLSAgICAgICAgcy0+cGFyc2VfaW50ID0gTlVMTDsKLSAgICAgICAgcy0+cGFyc2VfY29uc3RhbnQgPSBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gKFB5T2JqZWN0ICopczsKLX0KLQotc3RhdGljIGludAotc2Nhbm5lcl9pbml0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCi17Ci0gICAgLyogSW5pdGlhbGl6ZSBTY2FubmVyIG9iamVjdCAqLwogICAgIFB5T2JqZWN0ICpjdHg7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJjb250ZXh0IiwgTlVMTH07Ci0gICAgUHlTY2FubmVyT2JqZWN0ICpzOwotCi0gICAgYXNzZXJ0KFB5U2Nhbm5lcl9DaGVjayhzZWxmKSk7Ci0gICAgcyA9IChQeVNjYW5uZXJPYmplY3QgKilzZWxmOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk86bWFrZV9zY2FubmVyIiwga3dsaXN0LCAmY3R4KSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHMgPSAoUHlTY2FubmVyT2JqZWN0ICopdHlwZS0+dHBfYWxsb2ModHlwZSwgMCk7CisgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICAvKiBQeVN0cmluZ19BU19TVFJJTkcgaXMgdXNlZCBvbiBlbmNvZGluZyAqLwogICAgIHMtPmVuY29kaW5nID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhjdHgsICJlbmNvZGluZyIpOwpAQCAtMTc3NiwyNSArMTc1NiwxOCBAQAogICAgIGlmIChzLT5wYXJzZV9jb25zdGFudCA9PSBOVUxMKQogICAgICAgICBnb3RvIGJhaWw7CiAKLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gKFB5T2JqZWN0ICopczsKIAogYmFpbDoKLSAgICBQeV9DTEVBUihzLT5lbmNvZGluZyk7Ci0gICAgUHlfQ0xFQVIocy0+c3RyaWN0KTsKLSAgICBQeV9DTEVBUihzLT5vYmplY3RfaG9vayk7Ci0gICAgUHlfQ0xFQVIocy0+cGFpcnNfaG9vayk7Ci0gICAgUHlfQ0xFQVIocy0+cGFyc2VfZmxvYXQpOwotICAgIFB5X0NMRUFSKHMtPnBhcnNlX2ludCk7Ci0gICAgUHlfQ0xFQVIocy0+cGFyc2VfY29uc3RhbnQpOwotICAgIHJldHVybiAtMTsKKyAgICBQeV9ERUNSRUYocyk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIFB5RG9jX1NUUlZBUihzY2FubmVyX2RvYywgIkpTT04gc2Nhbm5lciBvYmplY3QiKTsKIAogc3RhdGljCiBQeVR5cGVPYmplY3QgUHlTY2FubmVyVHlwZSA9IHsKLSAgICBQeU9iamVjdF9IRUFEX0lOSVQoTlVMTCkKLSAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogdHBfaW50ZXJuYWwgKi8KKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiX2pzb24uU2Nhbm5lciIsICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoUHlTY2FubmVyT2JqZWN0KSwgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCkBAIC0xODI5LDcgKzE4MDIsNyBAQAogICAgIDAsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9nZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3Jfc2V0ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KLSAgICBzY2FubmVyX2luaXQsICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLC8qIFB5VHlwZV9HZW5lcmljQWxsb2MsICovICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIHNjYW5uZXJfbmV3LCAgICAgICAgICAvKiB0cF9uZXcgKi8KICAgICAwLC8qIFB5T2JqZWN0X0dDX0RlbCwgKi8gICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KQEAgLTE4MzgsMjUgKzE4MTEsNiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGVuY29kZXJfbmV3KFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5RW5jb2Rlck9iamVjdCAqczsKLSAgICBzID0gKFB5RW5jb2Rlck9iamVjdCAqKXR5cGUtPnRwX2FsbG9jKHR5cGUsIDApOwotICAgIGlmIChzICE9IE5VTEwpIHsKLSAgICAgICAgcy0+bWFya2VycyA9IE5VTEw7Ci0gICAgICAgIHMtPmRlZmF1bHRmbiA9IE5VTEw7Ci0gICAgICAgIHMtPmVuY29kZXIgPSBOVUxMOwotICAgICAgICBzLT5pbmRlbnQgPSBOVUxMOwotICAgICAgICBzLT5rZXlfc2VwYXJhdG9yID0gTlVMTDsKLSAgICAgICAgcy0+aXRlbV9zZXBhcmF0b3IgPSBOVUxMOwotICAgICAgICBzLT5zb3J0X2tleXMgPSBOVUxMOwotICAgICAgICBzLT5za2lwa2V5cyA9IE5VTEw7Ci0gICAgfQotICAgIHJldHVybiAoUHlPYmplY3QgKilzOwotfQotCi1zdGF0aWMgaW50Ci1lbmNvZGVyX2luaXQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLXsKLSAgICAvKiBpbml0aWFsaXplIEVuY29kZXIgb2JqZWN0ICovCiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJtYXJrZXJzIiwgImRlZmF1bHQiLCAiZW5jb2RlciIsICJpbmRlbnQiLCAia2V5X3NlcGFyYXRvciIsICJpdGVtX3NlcGFyYXRvciIsICJzb3J0X2tleXMiLCAic2tpcGtleXMiLCAiYWxsb3dfbmFuIiwgTlVMTH07CiAKICAgICBQeUVuY29kZXJPYmplY3QgKnM7CkBAIC0xODY0LDI1ICsxODE4LDI2IEBACiAgICAgUHlPYmplY3QgKml0ZW1fc2VwYXJhdG9yLCAqc29ydF9rZXlzLCAqc2tpcGtleXMsICphbGxvd19uYW5fb2JqOwogICAgIGludCBhbGxvd19uYW47CiAKLSAgICBhc3NlcnQoUHlFbmNvZGVyX0NoZWNrKHNlbGYpKTsKLSAgICBzID0gKFB5RW5jb2Rlck9iamVjdCAqKXNlbGY7Ci0KICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT09PT09PT09POm1ha2VfZW5jb2RlciIsIGt3bGlzdCwKICAgICAgICAgJm1hcmtlcnMsICZkZWZhdWx0Zm4sICZlbmNvZGVyLCAmaW5kZW50LCAma2V5X3NlcGFyYXRvciwgJml0ZW1fc2VwYXJhdG9yLAogICAgICAgICAmc29ydF9rZXlzLCAmc2tpcGtleXMsICZhbGxvd19uYW5fb2JqKSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGFsbG93X25hbiA9IFB5T2JqZWN0X0lzVHJ1ZShhbGxvd19uYW5fb2JqKTsKICAgICBpZiAoYWxsb3dfbmFuIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGlmIChtYXJrZXJzICE9IFB5X05vbmUgJiYgIVB5RGljdF9DaGVjayhtYXJrZXJzKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgIm1ha2VfZW5jb2RlcigpIGFyZ3VtZW50IDEgbXVzdCBiZSBkaWN0IG9yIE5vbmUsICIKICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4yMDBzIiwgUHlfVFlQRShtYXJrZXJzKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgcyA9IChQeUVuY29kZXJPYmplY3QgKil0eXBlLT50cF9hbGxvYyh0eXBlLCAwKTsKKyAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKwogICAgIHMtPm1hcmtlcnMgPSBtYXJrZXJzOwogICAgIHMtPmRlZmF1bHRmbiA9IGRlZmF1bHRmbjsKICAgICBzLT5lbmNvZGVyID0gZW5jb2RlcjsKQEAgLTE5MDIsNyArMTg1Nyw3IEBACiAgICAgUHlfSU5DUkVGKHMtPml0ZW1fc2VwYXJhdG9yKTsKICAgICBQeV9JTkNSRUYocy0+c29ydF9rZXlzKTsKICAgICBQeV9JTkNSRUYocy0+c2tpcGtleXMpOwotICAgIHJldHVybiAwOworICAgIHJldHVybiAoUHlPYmplY3QgKilzOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTkzOCw3ICsxODkzLDcgQEAKICAgICAgICAgaWYgKHNfbnVsbCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBzX251bGwgPSBQeVN0cmluZ19JbnRlcm5Gcm9tU3RyaW5nKCJudWxsIik7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKHNfbnVsbCk7CisgICAgICAgIFB5X1hJTkNSRUYoc19udWxsKTsKICAgICAgICAgcmV0dXJuIHNfbnVsbDsKICAgICB9CiAgICAgZWxzZSBpZiAob2JqID09IFB5X1RydWUpIHsKQEAgLTE5NDYsNyArMTkwMSw3IEBACiAgICAgICAgIGlmIChzX3RydWUgPT0gTlVMTCkgewogICAgICAgICAgICAgc190cnVlID0gUHlTdHJpbmdfSW50ZXJuRnJvbVN0cmluZygidHJ1ZSIpOwogICAgICAgICB9Ci0gICAgICAgIFB5X0lOQ1JFRihzX3RydWUpOworICAgICAgICBQeV9YSU5DUkVGKHNfdHJ1ZSk7CiAgICAgICAgIHJldHVybiBzX3RydWU7CiAgICAgfQogICAgIGVsc2UgaWYgKG9iaiA9PSBQeV9GYWxzZSkgewpAQCAtMTk1NCw3ICsxOTA5LDcgQEAKICAgICAgICAgaWYgKHNfZmFsc2UgPT0gTlVMTCkgewogICAgICAgICAgICAgc19mYWxzZSA9IFB5U3RyaW5nX0ludGVybkZyb21TdHJpbmcoImZhbHNlIik7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKHNfZmFsc2UpOworICAgICAgICBQeV9YSU5DUkVGKHNfZmFsc2UpOwogICAgICAgICByZXR1cm4gc19mYWxzZTsKICAgICB9CiAgICAgZWxzZSB7CkBAIC0yMDI2LDcgKzE5ODEsNyBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICByZXR1cm4gX3N0ZWFsX2xpc3RfYXBwZW5kKHJ2YWwsIGVuY29kZWQpOwogICAgIH0KLSAgICBlbHNlIGlmIChQeUludF9DaGVjayhvYmopIHx8IFB5TG9uZ19DaGVjayhvYmopKSB7CisgICAgZWxzZSBpZiAoX1B5QW55SW50X0NoZWNrKG9iaikpIHsKICAgICAgICAgUHlPYmplY3QgKmVuY29kZWQgPSBQeU9iamVjdF9TdHIob2JqKTsKICAgICAgICAgaWYgKGVuY29kZWQgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTIwNzcsOCArMjAzMiwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGVuY29kaW5nIGEgSlNPTiBvYmplY3QiKSkKKyAgICAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGVuY29kaW5nIGEgSlNPTiBvYmplY3QiKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5ld29iaik7CisgICAgICAgICAgICBQeV9YREVDUkVGKGlkZW50KTsKICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgICAgICBydiA9IGVuY29kZXJfbGlzdGVuY29kZV9vYmoocywgcnZhbCwgbmV3b2JqLCBpbmRlbnRfbGV2ZWwpOwogICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKIApAQCAtMjE3Myw3ICsyMTMxLDcgQEAKICAgICAgICAgICAgIGlmIChrc3RyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKFB5SW50X0NoZWNrKGtleSkgfHwgUHlMb25nX0NoZWNrKGtleSkpIHsKKyAgICAgICAgZWxzZSBpZiAoX1B5QW55SW50X0NoZWNrKGtleSkpIHsKICAgICAgICAgICAgIGtzdHIgPSBQeU9iamVjdF9TdHIoa2V5KTsKICAgICAgICAgICAgIGlmIChrc3RyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBiYWlsOwpAQCAtMjM0MCw3ICsyMjk4LDggQEAKIHN0YXRpYyB2b2lkCiBlbmNvZGVyX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpCiB7Ci0gICAgLyogRGVhbGxvY2F0ZSBFbmNvZGVyICovCisgICAgLyogYnBvLTMxMDk1OiBVblRyYWNrIGlzIG5lZWRlZCBiZWZvcmUgY2FsbGluZyBhbnkgY2FsbGJhY2tzICovCisgICAgUHlPYmplY3RfR0NfVW5UcmFjayhzZWxmKTsKICAgICBlbmNvZGVyX2NsZWFyKHNlbGYpOwogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoc2VsZik7CiB9CkBAIC0yMzg0LDggKzIzNDMsNyBAQAogCiBzdGF0aWMKIFB5VHlwZU9iamVjdCBQeUVuY29kZXJUeXBlID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQotICAgIDAsICAgICAgICAgICAgICAgICAgICAvKiB0cF9pbnRlcm5hbCAqLworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJfanNvbi5FbmNvZGVyIiwgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihQeUVuY29kZXJPYmplY3QpLCAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KQEAgLTI0MjAsNyArMjM3OCw3IEBACiAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Rlc2NyX2dldCAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdG9mZnNldCAqLwotICAgIGVuY29kZXJfaW5pdCwgICAgICAgICAvKiB0cF9pbml0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgLyogdHBfYWxsb2MgKi8KICAgICBlbmNvZGVyX25ldywgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KQEAgLTI0NDUsMTAgKzI0MDMsOCBAQAogaW5pdF9qc29uKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKm07Ci0gICAgUHlTY2FubmVyVHlwZS50cF9uZXcgPSBQeVR5cGVfR2VuZXJpY05ldzsKICAgICBpZiAoUHlUeXBlX1JlYWR5KCZQeVNjYW5uZXJUeXBlKSA8IDApCiAgICAgICAgIHJldHVybjsKLSAgICBQeUVuY29kZXJUeXBlLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3OwogICAgIGlmIChQeVR5cGVfUmVhZHkoJlB5RW5jb2RlclR5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuOwogICAgIG0gPSBQeV9Jbml0TW9kdWxlMygiX2pzb24iLCBzcGVlZHVwc19tZXRob2RzLCBtb2R1bGVfZG9jKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX2xzcHJvZi5jIGIvTW9kdWxlcy9fbHNwcm9mLmMKaW5kZXggMDQ5Yzk0ZC4uOTQ1MzU0ZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fbHNwcm9mLmMKKysrIGIvTW9kdWxlcy9fbHNwcm9mLmMKQEAgLTgwNywxOCArODA3LDE3IEBACiB9OwogCiBQeURvY19TVFJWQVIocHJvZmlsZXJfZG9jLCAiXAotUHJvZmlsZXIoY3VzdG9tX3RpbWVyPU5vbmUsIHRpbWVfdW5pdD1Ob25lLCBzdWJjYWxscz1UcnVlLCBidWlsdGlucz1UcnVlKVxuXAorUHJvZmlsZXIodGltZXI9Tm9uZSwgdGltZXVuaXQ9Tm9uZSwgc3ViY2FsbHM9VHJ1ZSwgYnVpbHRpbnM9VHJ1ZSlcblwKIFxuXAogICAgIEJ1aWxkcyBhIHByb2ZpbGVyIG9iamVjdCB1c2luZyB0aGUgc3BlY2lmaWVkIHRpbWVyIGZ1bmN0aW9uLlxuXAogICAgIFRoZSBkZWZhdWx0IHRpbWVyIGlzIGEgZmFzdCBidWlsdC1pbiBvbmUgYmFzZWQgb24gcmVhbCB0aW1lLlxuXAotICAgIEZvciBjdXN0b20gdGltZXIgZnVuY3Rpb25zIHJldHVybmluZyBpbnRlZ2VycywgdGltZV91bml0IGNhblxuXAorICAgIEZvciBjdXN0b20gdGltZXIgZnVuY3Rpb25zIHJldHVybmluZyBpbnRlZ2VycywgdGltZXVuaXQgY2FuXG5cCiAgICAgYmUgYSBmbG9hdCBzcGVjaWZ5aW5nIGEgc2NhbGUgKGkuZS4gaG93IGxvbmcgZWFjaCBpbnRlZ2VyIHVuaXRcblwKICAgICBpcywgaW4gc2Vjb25kcykuXG5cCiAiKTsKIAogc3RhdGljaGVyZSBQeVR5cGVPYmplY3QgUHlQcm9maWxlcl9UeXBlID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvYl9zaXplICovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIl9sc3Byb2YuUHJvZmlsZXIiLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KICAgICBzaXplb2YoUHJvZmlsZXJPYmplY3QpLCAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL19yYW5kb21tb2R1bGUuYyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCmluZGV4IDQ4MGRmOTIuLjJjMGRhZWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCisrKyBiL01vZHVsZXMvX3JhbmRvbW1vZHVsZS5jCkBAIC0yLDcgKzIsNyBAQAogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIFRoZSBjb2RlIGluIHRoaXMgbW9kdWxlIHdhcyBiYXNlZCBvbiBhIGRvd25sb2FkIGZyb206Ci0gICAgICBodHRwOi8vd3d3Lm1hdGgua2Vpby5hYy5qcC9+bWF0dW1vdG8vTVQyMDAyL2VtdDE5OTM3YXIuaHRtbAorICAgICAgaHR0cDovL3d3dy5tYXRoLnNjaS5oaXJvc2hpbWEtdS5hYy5qcC9+bS1tYXQvTVQvTVQyMDAyL2VtdDE5OTM3YXIuaHRtbAogCiAgICBJdCB3YXMgbW9kaWZpZWQgaW4gMjAwMiBieSBSYXltb25kIEhldHRpbmdlciBhcyBmb2xsb3dzOgogCkBAIC02MCw4ICs2MCw4IEBACiAKIAogICAgQW55IGZlZWRiYWNrIGlzIHZlcnkgd2VsY29tZS4KLSAgIGh0dHA6Ly93d3cubWF0aC5rZWlvLmFjLmpwL21hdHVtb3RvL2VtdC5odG1sCi0gICBlbWFpbDogbWF0dW1vdG9AbWF0aC5rZWlvLmFjLmpwCisgICBodHRwOi8vd3d3Lm1hdGguc2NpLmhpcm9zaGltYS11LmFjLmpwL35tLW1hdC9NVC9lbXQuaHRtbAorICAgZW1haWw6IG0tbWF0IEAgbWF0aC5zY2kuaGlyb3NoaW1hLXUuYWMuanAgKHJlbW92ZSBzcGFjZSkKICovCiAKIC8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0yMzAsOSArMjMwLDE1IEBACiAgICAgfQogICAgIC8qIElmIHRoZSBhcmcgaXMgYW4gaW50IG9yIGxvbmcsIHVzZSBpdHMgYWJzb2x1dGUgdmFsdWU7IGVsc2UgdXNlCiAgICAgICogdGhlIGFic29sdXRlIHZhbHVlIG9mIGl0cyBoYXNoIGNvZGUuCisgICAgICogQ2FsbGluZyBpbnQuX19hYnNfXygpIG9yIGxvbmcuX19hYnNfXygpIHByZXZlbnRzIGNhbGxpbmcgYXJnLl9fYWJzX18oKSwKKyAgICAgKiB3aGljaCBtaWdodCByZXR1cm4gYW4gaW52YWxpZCB2YWx1ZS4gU2VlIGlzc3VlICMzMTQ3OC4KICAgICAgKi8KLSAgICBpZiAoUHlJbnRfQ2hlY2soYXJnKSB8fCBQeUxvbmdfQ2hlY2soYXJnKSkKLSAgICAgICAgbiA9IFB5TnVtYmVyX0Fic29sdXRlKGFyZyk7CisgICAgaWYgKFB5SW50X0NoZWNrKGFyZykpIHsKKyAgICAgICAgbiA9IFB5SW50X1R5cGUudHBfYXNfbnVtYmVyLT5uYl9hYnNvbHV0ZShhcmcpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgeworICAgICAgICBuID0gUHlMb25nX1R5cGUudHBfYXNfbnVtYmVyLT5uYl9hYnNvbHV0ZShhcmcpOworICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgbG9uZyBoYXNoID0gUHlPYmplY3RfSGFzaChhcmcpOwogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKQEAgLTM0MSw2ICszNDcsNyBAQAogICAgIGludCBpOwogICAgIHVuc2lnbmVkIGxvbmcgZWxlbWVudDsKICAgICBsb25nIGluZGV4OworICAgIHVuc2lnbmVkIGxvbmcgbmV3X3N0YXRlW05dOwogCiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXRlKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLApAQCAtMzU3LDcgKzM2NCw3IEBACiAgICAgICAgIGVsZW1lbnQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmcoUHlUdXBsZV9HRVRfSVRFTShzdGF0ZSwgaSkpOwogICAgICAgICBpZiAoZWxlbWVudCA9PSAodW5zaWduZWQgbG9uZyktMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHNlbGYtPnN0YXRlW2ldID0gZWxlbWVudCAmIDB4ZmZmZmZmZmZVTDsgLyogTWFrZSBzdXJlIHdlIGdldCBzYW5lIHN0YXRlICovCisgICAgICAgIG5ld19zdGF0ZVtpXSA9IGVsZW1lbnQgJiAweGZmZmZmZmZmVUw7IC8qIE1ha2Ugc3VyZSB3ZSBnZXQgc2FuZSBzdGF0ZSAqLwogICAgIH0KIAogICAgIGluZGV4ID0gUHlMb25nX0FzTG9uZyhQeVR1cGxlX0dFVF9JVEVNKHN0YXRlLCBpKSk7CkBAIC0zNjgsNiArMzc1LDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHNlbGYtPmluZGV4ID0gKGludClpbmRleDsKKyAgICBmb3IgKGkgPSAwOyBpIDwgTjsgaSsrKQorICAgICAgICBzZWxmLT5zdGF0ZVtpXSA9IG5ld19zdGF0ZVtpXTsKIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTQwNiw3ICs0MTUsNyBAQAogICAgIFB5T2JqZWN0ICpyZW1vYmo7CiAgICAgdW5zaWduZWQgbG9uZyAqbXQsIHRtcCwgbm9uemVybzsKIAotICAgIGlmICghUHlJbnRfQ2hlY2sobikgJiYgIVB5TG9uZ19DaGVjayhuKSkgeworICAgIGlmICghX1B5QW55SW50X0NoZWNrKG4pKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJqdW1wYWhlYWQgcmVxdWlyZXMgYW4gIgogICAgICAgICAgICAgICAgICAgICAgImludGVnZXIsIG5vdCAnJXMnIiwKICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobiktPnRwX25hbWUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYyBiL01vZHVsZXMvX3NxbGl0ZS9jb25uZWN0aW9uLmMKaW5kZXggMjM3ZDZlNC4uYzNmMzlmZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2Nvbm5lY3Rpb24uYworKysgYi9Nb2R1bGVzL19zcWxpdGUvY29ubmVjdGlvbi5jCkBAIC0yOTMsNyArMjkzLDcgQEAKICAgICBQeV9YREVDUkVGKHNlbGYtPnN0YXRlbWVudHMpOwogICAgIFB5X1hERUNSRUYoc2VsZi0+Y3Vyc29ycyk7CiAKLSAgICBzZWxmLT5vYl90eXBlLT50cF9mcmVlKChQeU9iamVjdCopc2VsZik7CisgICAgUHlfVFlQRShzZWxmKS0+dHBfZnJlZSgoUHlPYmplY3QqKXNlbGYpOwogfQogCiAvKgpAQCAtNjc1LDcgKzY3NSw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihweV9yZXR2YWwpOwogICAgIH0KICAgICBpZiAoIW9rKSB7Ci0gICAgICAgIGlmIChfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3MpIHsKKyAgICAgICAgaWYgKF9weXNxbGl0ZV9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgewogICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC03MTEsNyArNzExLDcgQEAKIAogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgKmFnZ3JlZ2F0ZV9pbnN0YW5jZSA9IDA7Ci0gICAgICAgICAgICBpZiAoX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CisgICAgICAgICAgICBpZiAoX3B5c3FsaXRlX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTczNSw3ICs3MzUsNyBAQAogICAgIFB5X0RFQ1JFRihhcmdzKTsKIAogICAgIGlmICghZnVuY3Rpb25fcmVzdWx0KSB7Ci0gICAgICAgIGlmIChfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3MpIHsKKyAgICAgICAgaWYgKF9weXNxbGl0ZV9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgewogICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC03ODEsNyArNzgxLDcgQEAKICAgICAgICAgUHlfREVDUkVGKGZ1bmN0aW9uX3Jlc3VsdCk7CiAgICAgfQogICAgIGlmICghb2spIHsKLSAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgeworICAgICAgICBpZiAoX3B5c3FsaXRlX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CiAgICAgICAgICAgICBQeUVycl9QcmludCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTkzNiw3ICs5MzYsNyBAQAogICAgIHJldCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QqKXVzZXJfYXJnLCAiaXNzc3MiLCBhY3Rpb24sIGFyZzEsIGFyZzIsIGRibmFtZSwgYWNjZXNzX2F0dGVtcHRfc291cmNlKTsKIAogICAgIGlmICghcmV0KSB7Ci0gICAgICAgIGlmIChfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3MpIHsKKyAgICAgICAgaWYgKF9weXNxbGl0ZV9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgewogICAgICAgICAgICAgUHlFcnJfUHJpbnQoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC05NzIsNyArOTcyLDcgQEAKICAgICByZXQgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0Kil1c2VyX2FyZywgIiIpOwogCiAgICAgaWYgKCFyZXQpIHsKLSAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgeworICAgICAgICBpZiAoX3B5c3FsaXRlX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CiAgICAgICAgICAgICBQeUVycl9QcmludCgpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTExMDYsOCArMTEwNiw4IEBACiAgICAgaWYgKHNlbGYtPmNoZWNrX3NhbWVfdGhyZWFkKSB7CiAgICAgICAgIGlmIChQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCkgIT0gc2VsZi0+dGhyZWFkX2lkZW50KSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocHlzcWxpdGVfUHJvZ3JhbW1pbmdFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJTUUxpdGUgb2JqZWN0cyBjcmVhdGVkIGluIGEgdGhyZWFkIGNhbiBvbmx5IGJlIHVzZWQgaW4gdGhhdCBzYW1lIHRocmVhZC4iCi0gICAgICAgICAgICAgICAgICAgICAgICAiVGhlIG9iamVjdCB3YXMgY3JlYXRlZCBpbiB0aHJlYWQgaWQgJWxkIGFuZCB0aGlzIGlzIHRocmVhZCBpZCAlbGQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIlNRTGl0ZSBvYmplY3RzIGNyZWF0ZWQgaW4gYSB0aHJlYWQgY2FuIG9ubHkgYmUgdXNlZCBpbiB0aGF0IHNhbWUgdGhyZWFkLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIG9iamVjdCB3YXMgY3JlYXRlZCBpbiB0aHJlYWQgaWQgJWxkIGFuZCB0aGlzIGlzIHRocmVhZCBpZCAlbGQuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnRocmVhZF9pZGVudCwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMgYi9Nb2R1bGVzL19zcWxpdGUvY3Vyc29yLmMKaW5kZXggZGIzNjAwNC4uZTVjZDcyMSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL2N1cnNvci5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9jdXJzb3IuYwpAQCAtNzgsMjEgKzc4LDIwIEBACiAgICAgfQogCiAgICAgUHlfSU5DUkVGKGNvbm5lY3Rpb24pOwotICAgIHNlbGYtPmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOwotICAgIHNlbGYtPnN0YXRlbWVudCA9IE5VTEw7Ci0gICAgc2VsZi0+bmV4dF9yb3cgPSBOVUxMOwotICAgIHNlbGYtPmluX3dlYWtyZWZsaXN0ID0gTlVMTDsKKyAgICBQeV9YU0VUUkVGKHNlbGYtPmNvbm5lY3Rpb24sIGNvbm5lY3Rpb24pOworICAgIFB5X0NMRUFSKHNlbGYtPnN0YXRlbWVudCk7CisgICAgUHlfQ0xFQVIoc2VsZi0+bmV4dF9yb3cpOwogCi0gICAgc2VsZi0+cm93X2Nhc3RfbWFwID0gUHlMaXN0X05ldygwKTsKKyAgICBQeV9YU0VUUkVGKHNlbGYtPnJvd19jYXN0X21hcCwgUHlMaXN0X05ldygwKSk7CiAgICAgaWYgKCFzZWxmLT5yb3dfY2FzdF9tYXApIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKLSAgICBzZWxmLT5kZXNjcmlwdGlvbiA9IFB5X05vbmU7CisgICAgUHlfWFNFVFJFRihzZWxmLT5kZXNjcmlwdGlvbiwgUHlfTm9uZSk7CiAKICAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgc2VsZi0+bGFzdHJvd2lkPSBQeV9Ob25lOworICAgIFB5X1hTRVRSRUYoc2VsZi0+bGFzdHJvd2lkLCBQeV9Ob25lKTsKIAogICAgIHNlbGYtPmFycmF5c2l6ZSA9IDE7CiAgICAgc2VsZi0+Y2xvc2VkID0gMDsKQEAgLTEwMSw3ICsxMDAsNyBAQAogICAgIHNlbGYtPnJvd2NvdW50ID0gLTFMOwogCiAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHNlbGYtPnJvd19mYWN0b3J5ID0gUHlfTm9uZTsKKyAgICBQeV9YU0VUUkVGKHNlbGYtPnJvd19mYWN0b3J5LCBQeV9Ob25lKTsKIAogICAgIGlmICghcHlzcWxpdGVfY2hlY2tfdGhyZWFkKHNlbGYtPmNvbm5lY3Rpb24pKSB7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTEzNSw3ICsxMzQsNyBAQAogICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKChQeU9iamVjdCopc2VsZik7CiAgICAgfQogCi0gICAgc2VsZi0+b2JfdHlwZS0+dHBfZnJlZSgoUHlPYmplY3QqKXNlbGYpOworICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0KilzZWxmKTsKIH0KIAogUHlPYmplY3QqIF9weXNxbGl0ZV9nZXRfY29udmVydGVyKFB5T2JqZWN0KiBrZXkpCkBAIC0xNDgsNyArMTQ3LDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgcmV0dmFsID0gUHlEaWN0X0dldEl0ZW0oY29udmVydGVycywgdXBjYXNlX2tleSk7CisgICAgcmV0dmFsID0gUHlEaWN0X0dldEl0ZW0oX3B5c3FsaXRlX2NvbnZlcnRlcnMsIHVwY2FzZV9rZXkpOwogICAgIFB5X0RFQ1JFRih1cGNhc2Vfa2V5KTsKIAogICAgIHJldHVybiByZXR2YWw7CkBAIC02NTYsNyArNjU1LDcgQEAKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgLyogdGhlcmUgd2FzIGFuIGVycm9yIHRoYXQgb2NjdXJyZWQgaW4gYSB1c2VyLWRlZmluZWQgY2FsbGJhY2sgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoX3B5c3FsaXRlX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9QcmludCgpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTEwMTUsNiArMTAxNCwxMSBAQAogCiBQeU9iamVjdCogcHlzcWxpdGVfY3Vyc29yX2Nsb3NlKHB5c3FsaXRlX0N1cnNvciogc2VsZiwgUHlPYmplY3QqIGFyZ3MpCiB7CisgICAgaWYgKCFzZWxmLT5jb25uZWN0aW9uKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhweXNxbGl0ZV9Qcm9ncmFtbWluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkJhc2UgQ3Vyc29yLl9faW5pdF9fIG5vdCBjYWxsZWQuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoIXB5c3FsaXRlX2NoZWNrX3RocmVhZChzZWxmLT5jb25uZWN0aW9uKSB8fCAhcHlzcWxpdGVfY2hlY2tfY29ubmVjdGlvbihzZWxmLT5jb25uZWN0aW9uKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMgYi9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmMKaW5kZXggMzM2MTFkOS4uZmE0NWVkZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuYwpAQCAtMzksOCArMzksOCBAQAogICAgICpweXNxbGl0ZV9JbnRlcm5hbEVycm9yLCAqcHlzcWxpdGVfT3BlcmF0aW9uYWxFcnJvciwgKnB5c3FsaXRlX1Byb2dyYW1taW5nRXJyb3IsCiAgICAgKnB5c3FsaXRlX0ludGVncml0eUVycm9yLCAqcHlzcWxpdGVfRGF0YUVycm9yLCAqcHlzcWxpdGVfTm90U3VwcG9ydGVkRXJyb3IsICpweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlOwogCi1QeU9iamVjdCogY29udmVydGVyczsKLWludCBfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3M7CitQeU9iamVjdCogX3B5c3FsaXRlX2NvbnZlcnRlcnM7CitpbnQgX3B5c3FsaXRlX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzOwogaW50IHB5c3FsaXRlX0Jhc2VUeXBlQWRhcHRlZDsKIAogc3RhdGljIFB5T2JqZWN0KiBtb2R1bGVfY29ubmVjdChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QqIGFyZ3MsIFB5T2JqZWN0KgpAQCAtMTkwLDcgKzE5MCw3IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgaWYgKFB5RGljdF9TZXRJdGVtKGNvbnZlcnRlcnMsIG5hbWUsIGNhbGxhYmxlKSAhPSAwKSB7CisgICAgaWYgKFB5RGljdF9TZXRJdGVtKF9weXNxbGl0ZV9jb252ZXJ0ZXJzLCBuYW1lLCBjYWxsYWJsZSkgIT0gMCkgewogICAgICAgICBnb3RvIGVycm9yOwogICAgIH0KIApAQCAtMjA4LDcgKzIwOCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCogZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3MoUHlPYmplY3QqIHNlbGYsIFB5T2JqZWN0KiBhcmdzKQogewotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaSIsICZfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3MpKSB7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpIiwgJl9weXNxbGl0ZV9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcykpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC0yMjMsMTIgKzIyMywxMiBAQAogCiBzdGF0aWMgdm9pZCBjb252ZXJ0ZXJzX2luaXQoUHlPYmplY3QqIGRpY3QpCiB7Ci0gICAgY29udmVydGVycyA9IFB5RGljdF9OZXcoKTsKLSAgICBpZiAoIWNvbnZlcnRlcnMpIHsKKyAgICBfcHlzcWxpdGVfY29udmVydGVycyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoIV9weXNxbGl0ZV9jb252ZXJ0ZXJzKSB7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAiY29udmVydGVycyIsIGNvbnZlcnRlcnMpOworICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJjb252ZXJ0ZXJzIiwgX3B5c3FsaXRlX2NvbnZlcnRlcnMpOwogfQogCiBzdGF0aWMgUHlNZXRob2REZWYgbW9kdWxlX21ldGhvZHNbXSA9IHsKQEAgLTQyOCw3ICs0MjgsNyBAQAogICAgIC8qIGluaXRpYWxpemUgdGhlIGRlZmF1bHQgY29udmVydGVycyAqLwogICAgIGNvbnZlcnRlcnNfaW5pdChkaWN0KTsKIAotICAgIF9lbmFibGVfY2FsbGJhY2tfdHJhY2ViYWNrcyA9IDA7CisgICAgX3B5c3FsaXRlX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzID0gMDsKIAogICAgIHB5c3FsaXRlX0Jhc2VUeXBlQWRhcHRlZCA9IDA7CiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuaCBiL01vZHVsZXMvX3NxbGl0ZS9tb2R1bGUuaAppbmRleCA4ZDE3ZDYxLi4zMjI0NTJmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvbW9kdWxlLmgKKysrIGIvTW9kdWxlcy9fc3FsaXRlL21vZHVsZS5oCkBAIC00MCwxNyArNDAsMTMgQEAKIAogZXh0ZXJuIFB5T2JqZWN0KiBweXNxbGl0ZV9PcHRpbWl6ZWRVbmljb2RlOwogCi0vKiB0aGUgZnVuY3Rpb25zIHRpbWUudGltZSgpIGFuZCB0aW1lLnNsZWVwKCkgKi8KLWV4dGVybiBQeU9iamVjdCogdGltZV90aW1lOwotZXh0ZXJuIFB5T2JqZWN0KiB0aW1lX3NsZWVwOwotCiAvKiBBIGRpY3Rpb25hcnksIG1hcHBpbmcgY29sdW0gdHlwZXMgKElOVEVHRVIsIFZBUkNIQVIsIGV0Yy4pIHRvIGNvbnZlcnRlcgogICogZnVuY3Rpb25zLCB0aGF0IGNvbnZlcnQgdGhlIFNRTCB2YWx1ZSB0byB0aGUgYXBwcm9wcmlhdGUgUHl0aG9uIHZhbHVlLgogICogVGhlIGtleSBpcyB1cHBlcmNhc2UuCiAgKi8KLWV4dGVybiBQeU9iamVjdCogY29udmVydGVyczsKK2V4dGVybiBQeU9iamVjdCogX3B5c3FsaXRlX2NvbnZlcnRlcnM7CiAKLWV4dGVybiBpbnQgX2VuYWJsZV9jYWxsYmFja190cmFjZWJhY2tzOworZXh0ZXJuIGludCBfcHlzcWxpdGVfZW5hYmxlX2NhbGxiYWNrX3RyYWNlYmFja3M7CiBleHRlcm4gaW50IHB5c3FsaXRlX0Jhc2VUeXBlQWRhcHRlZDsKIAogI2RlZmluZSBQQVJTRV9ERUNMVFlQRVMgMQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jIGIvTW9kdWxlcy9fc3FsaXRlL3N0YXRlbWVudC5jCmluZGV4IDVkNjI2M2MuLmVjNjAwOTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvX3NxbGl0ZS9zdGF0ZW1lbnQuYworKysgYi9Nb2R1bGVzL19zcWxpdGUvc3RhdGVtZW50LmMKQEAgLTIwNSw3ICsyMDUsNyBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBpZiAoUHlJbnRfQ2hlY2tFeGFjdChvYmopIHx8IFB5TG9uZ19DaGVja0V4YWN0KG9iaikKKyAgICBpZiAoX1B5QW55SW50X0NoZWNrRXhhY3Qob2JqKQogICAgICAgICAgICAgfHwgUHlGbG9hdF9DaGVja0V4YWN0KG9iaikgfHwgUHlTdHJpbmdfQ2hlY2tFeGFjdChvYmopCiAgICAgICAgICAgICB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopIHx8IFB5QnVmZmVyX0NoZWNrKG9iaikpIHsKICAgICAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jIGIvTW9kdWxlcy9fc3FsaXRlL3V0aWwuYwppbmRleCBhMjRkZDhjLi43Mzc3MjI1IDEwMDY0NAotLS0gYS9Nb2R1bGVzL19zcWxpdGUvdXRpbC5jCisrKyBiL01vZHVsZXMvX3NxbGl0ZS91dGlsLmMKQEAgLTEzMiw3ICsxMzIsNyBAQAogICAgIH0KICMgZW5kaWYKICNlbmRpZgotICAgIHJldHVybiBQeUludF9Gcm9tTG9uZyh2YWx1ZSk7CisgICAgcmV0dXJuIFB5SW50X0Zyb21Mb25nKFB5X1NBRkVfRE9XTkNBU1QodmFsdWUsIHNxbGl0ZV9pbnQ2NCwgbG9uZykpOwogfQogCiBzcWxpdGVfaW50NjQKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NyZS5jIGIvTW9kdWxlcy9fc3JlLmMKaW5kZXggOGUxNmMxZC4uMDgxYTFhYSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3JlLmMKKysrIGIvTW9kdWxlcy9fc3JlLmMKQEAgLTgzNSw3ICs4MzUsNyBAQAogICAgIGlmIChjdHgtPnBhdHRlcm5bMF0gPT0gU1JFX09QX0lORk8pIHsKICAgICAgICAgLyogb3B0aW1pemF0aW9uIGluZm8gYmxvY2sgKi8KICAgICAgICAgLyogPElORk8+IDwxPXNraXA+IDwyPWZsYWdzPiA8Mz1taW4+IC4uLiAqLwotICAgICAgICBpZiAoY3R4LT5wYXR0ZXJuWzNdICYmIChlbmQgLSBjdHgtPnB0cikgPCBjdHgtPnBhdHRlcm5bM10pIHsKKyAgICAgICAgaWYgKGN0eC0+cGF0dGVyblszXSAmJiAoUHlfdWludHB0cl90KShlbmQgLSBjdHgtPnB0cikgPCBjdHgtPnBhdHRlcm5bM10pIHsKICAgICAgICAgICAgIFRSQUNFKCgicmVqZWN0IChnb3QgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCBjaGFycywgIgogICAgICAgICAgICAgICAgICAgICJuZWVkICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQpXG4iLAogICAgICAgICAgICAgICAgICAgIChlbmQgLSBjdHgtPnB0ciksIChQeV9zc2l6ZV90KSBjdHgtPnBhdHRlcm5bM10pKTsKQEAgLTIyNjcsNiArMjI2NywyMCBAQAogICAgIGlmICghc3RyaW5nKQogICAgICAgICByZXR1cm4gTlVMTDsKIAorICAgIGlmIChQeV9QeTNrV2FybmluZ0ZsYWcgJiYKKyAgICAgICAgKHNlbGYtPmNvZGVbMF0gIT0gU1JFX09QX0lORk8gfHwgc2VsZi0+Y29kZVszXSA9PSAwKSkKKyAgICB7CisgICAgICAgIGlmIChzZWxmLT5jb2RlWzBdID09IFNSRV9PUF9JTkZPICYmIHNlbGYtPmNvZGVbNF0gPT0gMCkgeworICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5QeTNrKCJzcGxpdCgpIHJlcXVpcmVzIGEgbm9uLWVtcHR5IHBhdHRlcm4gbWF0Y2guIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0Z1dHVyZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3BsaXQoKSByZXF1aXJlcyBhIG5vbi1lbXB0eSBwYXR0ZXJuIG1hdGNoLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSA8IDApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICBzdHJpbmcgPSBzdGF0ZV9pbml0KCZzdGF0ZSwgc2VsZiwgc3RyaW5nLCAwLCBQWV9TU0laRV9UX01BWCk7CiAgICAgaWYgKCFzdHJpbmcpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjY5OCw4ICsyNzEyLDggQEAKIH07CiAKIHN0YXRpY2hlcmUgUHlUeXBlT2JqZWN0IFBhdHRlcm5fVHlwZSA9IHsKLSAgICBQeU9iamVjdF9IRUFEX0lOSVQoTlVMTCkKLSAgICAwLCAiXyIgU1JFX01PRFVMRSAiLlNSRV9QYXR0ZXJuIiwKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKKyAgICAiXyIgU1JFX01PRFVMRSAiLlNSRV9QYXR0ZXJuIiwKICAgICBzaXplb2YoUGF0dGVybk9iamVjdCksIHNpemVvZihTUkVfQ09ERSksCiAgICAgKGRlc3RydWN0b3IpcGF0dGVybl9kZWFsbG9jLCAvKnRwX2RlYWxsb2MqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCkBAIC0yODY4LDcgKzI4ODIsNyBAQAogICAgICAgICBza2lwID0gKmNvZGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIFZUUkFDRSgoIiVsdSAoc2tpcCB0byAlcClcbiIsICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXNraXAsIGNvZGUrc2tpcCkpOyAgICAgICAgXAotICAgICAgICBpZiAoc2tpcC1hZGogPiBlbmQtY29kZSkgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChza2lwLWFkaiA+IChQeV91aW50cHRyX3QpKGVuZCAtIGNvZGUpKSAgICAgIFwKICAgICAgICAgICAgIEZBSUw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBjb2RlKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSB3aGlsZSAoMCkKQEAgLTI5MDEsNyArMjkxNSw3IEBACiAKICAgICAgICAgY2FzZSBTUkVfT1BfQ0hBUlNFVDoKICAgICAgICAgICAgIG9mZnNldCA9IDMyL3NpemVvZihTUkVfQ09ERSk7IC8qIDMyLWJ5dGUgYml0bWFwICovCi0gICAgICAgICAgICBpZiAob2Zmc2V0ID4gZW5kLWNvZGUpCisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgIGNvZGUgKz0gb2Zmc2V0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTA5LDcgKzI5MjMsNyBAQAogICAgICAgICBjYXNlIFNSRV9PUF9CSUdDSEFSU0VUOgogICAgICAgICAgICAgR0VUX0FSRzsgLyogTnVtYmVyIG9mIGJsb2NrcyAqLwogICAgICAgICAgICAgb2Zmc2V0ID0gMjU2L3NpemVvZihTUkVfQ09ERSk7IC8qIDI1Ni1ieXRlIHRhYmxlICovCi0gICAgICAgICAgICBpZiAob2Zmc2V0ID4gZW5kLWNvZGUpCisgICAgICAgICAgICBpZiAob2Zmc2V0ID4gKFB5X3VpbnRwdHJfdCkoZW5kIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgIC8qIE1ha2Ugc3VyZSB0aGF0IGVhY2ggYnl0ZSBwb2ludHMgdG8gYSB2YWxpZCBibG9jayAqLwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7CkBAIC0yOTE4LDcgKzI5MzIsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgY29kZSArPSBvZmZzZXQ7CiAgICAgICAgICAgICBvZmZzZXQgPSBhcmcgKiAzMi9zaXplb2YoU1JFX0NPREUpOyAvKiAzMi1ieXRlIGJpdG1hcCB0aW1lcyBhcmcgKi8KLSAgICAgICAgICAgIGlmIChvZmZzZXQgPiBlbmQtY29kZSkKKyAgICAgICAgICAgIGlmIChvZmZzZXQgPiAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSkKICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgY29kZSArPSBvZmZzZXQ7CiAgICAgICAgICAgICBicmVhazsKQEAgLTI5ODEsNyArMjk5NSw3IEBACiAgICAgICAgICAgICAgICBzcmVfbWF0Y2goKSBjb2RlIGlzIHJvYnVzdCBldmVuIGlmIHRoZXkgZG9uJ3QsIGFuZCB0aGUgd29yc3QKICAgICAgICAgICAgICAgIHlvdSBjYW4gZ2V0IGlzIG5vbnNlbnNpY2FsIG1hdGNoIHJlc3VsdHMuICovCiAgICAgICAgICAgICBHRVRfQVJHOwotICAgICAgICAgICAgaWYgKGFyZyA+IDIqZ3JvdXBzKzEpIHsKKyAgICAgICAgICAgIGlmIChhcmcgPiAyICogKHNpemVfdClncm91cHMgKyAxKSB7CiAgICAgICAgICAgICAgICAgVlRSQUNFKCgiYXJnPSVkLCBncm91cHM9JWRcbiIsIChpbnQpYXJnLCAoaW50KWdyb3VwcykpOwogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICB9CkBAIC0zMDY5LDExICszMDgzLDExIEBACiAgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7IHByZWZpeF9sZW4gPSBhcmc7CiAgICAgICAgICAgICAgICAgICAgIEdFVF9BUkc7IC8qIHByZWZpeCBza2lwICovCiAgICAgICAgICAgICAgICAgICAgIC8qIEhlcmUgY29tZXMgdGhlIHByZWZpeCBzdHJpbmcgKi8KLSAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiBuZXdjb2RlLWNvZGUpCisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVmaXhfbGVuID4gKFB5X3VpbnRwdHJfdCkobmV3Y29kZSAtIGNvZGUpKQogICAgICAgICAgICAgICAgICAgICAgICAgRkFJTDsKICAgICAgICAgICAgICAgICAgICAgY29kZSArPSBwcmVmaXhfbGVuOwogICAgICAgICAgICAgICAgICAgICAvKiBBbmQgaGVyZSBjb21lcyB0aGUgb3ZlcmxhcCB0YWJsZSAqLwotICAgICAgICAgICAgICAgICAgICBpZiAocHJlZml4X2xlbiA+IG5ld2NvZGUtY29kZSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWZpeF9sZW4gPiAoUHlfdWludHB0cl90KShuZXdjb2RlIC0gY29kZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgICAgICAgICAvKiBFYWNoIG92ZXJsYXAgdmFsdWUgc2hvdWxkIGJlIDwgcHJlZml4X2xlbiAqLwogICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgcHJlZml4X2xlbjsgaSsrKSB7CkBAIC0zMTY0LDcgKzMxNzgsNyBAQAogICAgICAgICBjYXNlIFNSRV9PUF9HUk9VUFJFRjoKICAgICAgICAgY2FzZSBTUkVfT1BfR1JPVVBSRUZfSUdOT1JFOgogICAgICAgICAgICAgR0VUX0FSRzsKLSAgICAgICAgICAgIGlmIChhcmcgPj0gZ3JvdXBzKQorICAgICAgICAgICAgaWYgKGFyZyA+PSAoc2l6ZV90KWdyb3VwcykKICAgICAgICAgICAgICAgICBGQUlMOwogICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTMxNzMsNyArMzE4Nyw3IEBACiAgICAgICAgICAgICAgICAnZ3JvdXAnIGlzIGVpdGhlciBhbiBpbnRlZ2VyIGdyb3VwIG51bWJlciBvciBhIGdyb3VwIG5hbWUsCiAgICAgICAgICAgICAgICAndGhlbicgYW5kICdlbHNlJyBhcmUgc3ViLXJlZ2V4ZXMsIGFuZCAnZWxzZScgaXMgb3B0aW9uYWwuICovCiAgICAgICAgICAgICBHRVRfQVJHOwotICAgICAgICAgICAgaWYgKGFyZyA+PSBncm91cHMpCisgICAgICAgICAgICBpZiAoYXJnID49IChzaXplX3QpZ3JvdXBzKQogICAgICAgICAgICAgICAgIEZBSUw7CiAgICAgICAgICAgICBHRVRfU0tJUF9BREooMSk7CiAgICAgICAgICAgICBjb2RlLS07IC8qIFRoZSBza2lwIGlzIHJlbGF0aXZlIHRvIHRoZSBmaXJzdCBhcmchICovCkBAIC0zMjAyLDcgKzMyMTYsNyBAQAogICAgICAgICAgICAgICAgdG8gYWxsb3cgYXJiaXRyYXJ5IGp1bXBzIGFueXdoZXJlIGluIHRoZSBjb2RlOyBzbyB3ZSBqdXN0IGxvb2sKICAgICAgICAgICAgICAgIGZvciBhIEpVTVAgb3Bjb2RlIHByZWNlZGluZyBvdXIgc2tpcCB0YXJnZXQuCiAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKHNraXAgPj0gMyAmJiBza2lwLTMgPCBlbmQtY29kZSAmJgorICAgICAgICAgICAgaWYgKHNraXAgPj0gMyAmJiBza2lwLTMgPCAoUHlfdWludHB0cl90KShlbmQgLSBjb2RlKSAmJgogICAgICAgICAgICAgICAgIGNvZGVbc2tpcC0zXSA9PSBTUkVfT1BfSlVNUCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBWVFJBQ0UoKCJib3RoIHRoZW4gYW5kIGVsc2UgcGFydHMgcHJlc2VudFxuIikpOwpAQCAtMzMxMyw3ICszMzI3LDcgQEAKIHsKICAgICBQeV9zc2l6ZV90IGk7CiAKLSAgICBpZiAoUHlJbnRfQ2hlY2soaW5kZXgpIHx8IFB5TG9uZ19DaGVjayhpbmRleCkpCisgICAgaWYgKF9QeUFueUludF9DaGVjayhpbmRleCkpCiAgICAgICAgIHJldHVybiBQeUludF9Bc1NzaXplX3QoaW5kZXgpOwogCiAgICAgaSA9IC0xOwpAQCAtMzMyMSw3ICszMzM1LDcgQEAKICAgICBpZiAoc2VsZi0+cGF0dGVybi0+Z3JvdXBpbmRleCkgewogICAgICAgICBpbmRleCA9IFB5T2JqZWN0X0dldEl0ZW0oc2VsZi0+cGF0dGVybi0+Z3JvdXBpbmRleCwgaW5kZXgpOwogICAgICAgICBpZiAoaW5kZXgpIHsKLSAgICAgICAgICAgIGlmIChQeUludF9DaGVjayhpbmRleCkgfHwgUHlMb25nX0NoZWNrKGluZGV4KSkKKyAgICAgICAgICAgIGlmIChfUHlBbnlJbnRfQ2hlY2soaW5kZXgpKQogICAgICAgICAgICAgICAgIGkgPSBQeUludF9Bc1NzaXplX3QoaW5kZXgpOwogICAgICAgICAgICAgUHlfREVDUkVGKGluZGV4KTsKICAgICAgICAgfSBlbHNlCkBAIC0zOTM4LDggKzM5NTIsOCBAQAogfTsKIAogc3RhdGljaGVyZSBQeVR5cGVPYmplY3QgU2Nhbm5lcl9UeXBlID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQotICAgIDAsICJfIiBTUkVfTU9EVUxFICIuU1JFX1NjYW5uZXIiLAorICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQorICAgICJfIiBTUkVfTU9EVUxFICIuU1JFX1NjYW5uZXIiLAogICAgIHNpemVvZihTY2FubmVyT2JqZWN0KSwgMCwKICAgICAoZGVzdHJ1Y3RvcilzY2FubmVyX2RlYWxsb2MsIC8qdHBfZGVhbGxvYyovCiAgICAgMCwJCQkJLyogdHBfcHJpbnQgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvX3NzbC5jIGIvTW9kdWxlcy9fc3NsLmMKaW5kZXggYTkyNzEwMC4uMGUwZGFjZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3NsLmMKKysrIGIvTW9kdWxlcy9fc3NsLmMKQEAgLTUyLDYgKzUyLDExIEBACiAjaW5jbHVkZSA8c3lzL3BvbGwuaD4KICNlbmRpZgogCisjaWZuZGVmIE1TX1dJTkRPV1MKKy8qIGluZXRfcHRvbiAqLworI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisKIC8qIERvbid0IHdhcm4gYWJvdXQgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKi8KICNpZmRlZiBfX0dOVUNfXwogI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkICItV2RlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIgpAQCAtOTcsNiArMTAyLDEyIEBACiAKICNpZiAoT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMTAwMDAwTCkgJiYgIWRlZmluZWQoTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIpCiAjICBkZWZpbmUgT1BFTlNTTF9WRVJTSU9OXzFfMSAxCisjICBkZWZpbmUgUFlfT1BFTlNTTF8xXzFfQVBJIDEKKyNlbmRpZgorCisvKiBMaWJyZVNTTCAyLjcuMCBwcm92aWRlcyBuZWNlc3NhcnkgT3BlblNTTCAxLjEuMCBBUElzICovCisjaWYgZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikgJiYgTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgyMDcwMDAwZkwKKyMgIGRlZmluZSBQWV9PUEVOU1NMXzFfMV9BUEkgMQogI2VuZGlmCiAKIC8qIE9wZW5zc2wgY29tZXMgd2l0aCBUTFN2MS4xIGFuZCBUTFN2MS4yIGJldHdlZW4gMS4wLjBoIGFuZCAxLjAuMQpAQCAtMTE4LDI0ICsxMjksNDQgQEAKICNlbmRpZgogCiAvKiBBTFBOIGFkZGVkIGluIE9wZW5TU0wgMS4wLjIgKi8KLSNpZiAhZGVmaW5lZChMSUJSRVNTTF9WRVJTSU9OX05VTUJFUikgJiYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAyMDBmTCAmJiAhZGVmaW5lZChPUEVOU1NMX05PX1RMU0VYVCkKLSMgZGVmaW5lIEhBVkVfQUxQTgorI2lmZGVmIFRMU0VYVF9UWVBFX2FwcGxpY2F0aW9uX2xheWVyX3Byb3RvY29sX25lZ290aWF0aW9uCisjIGRlZmluZSBIQVZFX0FMUE4gMQorI2Vsc2UKKyMgZGVmaW5lIEhBVkVfQUxQTiAwCisjZW5kaWYKKworLyogV2UgY2Fubm90IHJlbHkgb24gT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcgYmVjYXVzZSBMaWJyZVNTTCAyLjYuMSBkcm9wcGVkCisgKiBOUE4gc3VwcG9ydCBidXQgZGlkIG5vdCBzZXQgT1BFTlNTTF9OT19ORVhUUFJPVE9ORUcgZm9yIGNvbXBhdGliaWxpdHkKKyAqIHJlYXNvbnMuIFRoZSBjaGVjayBmb3IgVExTRVhUX1RZUEVfbmV4dF9wcm90b19uZWcgd29ya3Mgd2l0aAorICogT3BlblNTTCAxLjAuMSsgYW5kIExpYnJlU1NMLgorICogT3BlblNTTCAxLjEuMS1wcmUxIGRyb3BwZWQgTlBOIGJ1dCBzdGlsbCBoYXMgVExTRVhUX1RZUEVfbmV4dF9wcm90b19uZWcuCisgKi8KKyNpZmRlZiBPUEVOU1NMX05PX05FWFRQUk9UT05FRworIyBkZWZpbmUgSEFWRV9OUE4gMAorI2VsaWYgKE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDEwMTAwMEwpICYmICFkZWZpbmVkKExJQlJFU1NMX1ZFUlNJT05fTlVNQkVSKQorIyBkZWZpbmUgSEFWRV9OUE4gMAorI2VsaWYgZGVmaW5lZChUTFNFWFRfVFlQRV9uZXh0X3Byb3RvX25lZykKKyMgZGVmaW5lIEhBVkVfTlBOIDEKKyNlbHNlCisjIGRlZmluZSBIQVZFX05QTiAwCiAjZW5kaWYKIAogI2lmbmRlZiBJTlZBTElEX1NPQ0tFVCAvKiBNUyBkZWZpbmVzIHRoaXMgKi8KICNkZWZpbmUgSU5WQUxJRF9TT0NLRVQgKC0xKQogI2VuZGlmCiAKLSNpZmRlZiBPUEVOU1NMX1ZFUlNJT05fMV8xCi0vKiBPcGVuU1NMIDEuMS4wKyAqLwotI2lmbmRlZiBPUEVOU1NMX05PX1NTTDIKLSNkZWZpbmUgT1BFTlNTTF9OT19TU0wyCi0jZW5kaWYKLSNlbHNlIC8qIE9wZW5TU0wgPCAxLjEuMCAqLwotI2lmIGRlZmluZWQoV0lUSF9USFJFQUQpCisvKiBPcGVuU1NMIDEuMC4yIGFuZCBMaWJyZVNTTCBuZWVkcyBleHRyYSBjb2RlIGZvciBsb2NraW5nICovCisjaWYgIWRlZmluZWQoT1BFTlNTTF9WRVJTSU9OXzFfMSkgJiYgZGVmaW5lZChXSVRIX1RIUkVBRCkKICNkZWZpbmUgSEFWRV9PUEVOU1NMX0NSWVBUT19MT0NLCiAjZW5kaWYKIAorI2lmIGRlZmluZWQoT1BFTlNTTF9WRVJTSU9OXzFfMSkgJiYgIWRlZmluZWQoT1BFTlNTTF9OT19TU0wyKQorI2RlZmluZSBPUEVOU1NMX05PX1NTTDIKKyNlbmRpZgorCisjaWZuZGVmIFBZX09QRU5TU0xfMV8xX0FQSQorLyogT3BlblNTTCAxLjEgQVBJIHNoaW1zIGZvciBPcGVuU1NMIDwgMS4xLjAgYW5kIExpYnJlU1NMIDwgMi43LjAgKi8KKwogI2RlZmluZSBUTFNfbWV0aG9kIFNTTHYyM19tZXRob2QKIAogc3RhdGljIGludCBYNTA5X05BTUVfRU5UUllfc2V0KGNvbnN0IFg1MDlfTkFNRV9FTlRSWSAqbmUpCkBAIC0xNzgsNyArMjA5LDcgQEAKIHsKICAgICByZXR1cm4gc3RvcmUtPnBhcmFtOwogfQotI2VuZGlmIC8qIE9wZW5TU0wgPCAxLjEuMCBvciBMaWJyZVNTTCAqLworI2VuZGlmIC8qIE9wZW5TU0wgPCAxLjEuMCBvciBMaWJyZVNTTCA8IDIuNy4wICovCiAKIAogZW51bSBweV9zc2xfZXJyb3IgewpAQCAtMjgwLDExICszMTEsMTEgQEAKIHR5cGVkZWYgc3RydWN0IHsKICAgICBQeU9iamVjdF9IRUFECiAgICAgU1NMX0NUWCAqY3R4OwotI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyNpZiBIQVZFX05QTgogICAgIHVuc2lnbmVkIGNoYXIgKm5wbl9wcm90b2NvbHM7CiAgICAgaW50IG5wbl9wcm90b2NvbHNfbGVuOwogI2VuZGlmCi0jaWZkZWYgSEFWRV9BTFBOCisjaWYgSEFWRV9BTFBOCiAgICAgdW5zaWduZWQgY2hhciAqYWxwbl9wcm90b2NvbHM7CiAgICAgaW50IGFscG5fcHJvdG9jb2xzX2xlbjsKICNlbmRpZgpAQCAtNTYwLDcgKzU5MSw5IEBACiAgICAgUHlfSU5DUkVGKHNzbGN0eCk7CiAKICAgICAvKiBNYWtlIHN1cmUgdGhlIFNTTCBlcnJvciBzdGF0ZSBpcyBpbml0aWFsaXplZCAqLworI2lmbmRlZiBPUEVOU1NMX0lTX0JPUklOR1NTTAogICAgICh2b2lkKSBFUlJfZ2V0X3N0YXRlKCk7CisjZW5kaWYKICAgICBFUlJfY2xlYXJfZXJyb3IoKTsKIAogICAgIFB5U1NMX0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTU3NSw4ICs2MDgsNDIgQEAKICAgICBTU0xfc2V0X21vZGUoc2VsZi0+c3NsLCBtb2RlKTsKIAogI2lmIEhBVkVfU05JCi0gICAgaWYgKHNlcnZlcl9ob3N0bmFtZSAhPSBOVUxMKQotICAgICAgICBTU0xfc2V0X3Rsc2V4dF9ob3N0X25hbWUoc2VsZi0+c3NsLCBzZXJ2ZXJfaG9zdG5hbWUpOworICAgIGlmIChzZXJ2ZXJfaG9zdG5hbWUgIT0gTlVMTCkgeworLyogRG9uJ3Qgc2VuZCBTTkkgZm9yIElQIGFkZHJlc3Nlcy4gV2UgY2Fubm90IHNpbXBseSB1c2UgaW5ldF9hdG9uKCkgYW5kCisgKiBpbmV0X3B0b24oKSBoZXJlLiBpbmV0X2F0b24oKSBtYXkgYmUgbGlua2VkIHdlYWtseSBhbmQgaW5ldF9wdG9uKCkgaXNuJ3QKKyAqIGF2YWlsYWJsZSBvbiBhbGwgcGxhdGZvcm1zLiBVc2UgT3BlblNTTCdzIElQIGFkZHJlc3MgcGFyc2VyLiBJdCdzCisgKiBhdmFpbGFibGUgc2luY2UgMS4wLjIgYW5kIExpYnJlU1NMIHNpbmNlIGF0IGxlYXN0IDIuMy4wLiAqLworICAgICAgICBpbnQgc2VuZF9zbmkgPSAxOworI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPj0gMHgxMDIwMDAwMEwKKyAgICAgICAgQVNOMV9PQ1RFVF9TVFJJTkcgKmlwID0gYTJpX0lQQUREUkVTUyhzZXJ2ZXJfaG9zdG5hbWUpOworICAgICAgICBpZiAoaXAgPT0gTlVMTCkgeworICAgICAgICAgICAgc2VuZF9zbmkgPSAxOworICAgICAgICAgICAgRVJSX2NsZWFyX2Vycm9yKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZW5kX3NuaSA9IDA7CisgICAgICAgICAgICBBU04xX09DVEVUX1NUUklOR19mcmVlKGlwKTsKKyAgICAgICAgfQorI2VsaWYgZGVmaW5lZChIQVZFX0lORVRfUFRPTikKKyNpZmRlZiBFTkFCTEVfSVBWNgorCSNkZWZpbmUgUHlTU0xfTUFYKHgsIHkpICgoKHgpID4gKHkpKSA/ICh4KSA6ICh5KSkKKyAgICAgICAgY2hhciBwYWNrZWRbUHlTU0xfTUFYKHNpemVvZihzdHJ1Y3QgaW5fYWRkciksIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKV07CisjZWxzZQorICAgICAgICBjaGFyIHBhY2tlZFtzaXplb2Yoc3RydWN0IGluX2FkZHIpXTsKKyNlbmRpZiAvKiBFTkFCTEVfSVBWNiAqLworICAgICAgICBpZiAoaW5ldF9wdG9uKEFGX0lORVQsIHNlcnZlcl9ob3N0bmFtZSwgcGFja2VkKSkgeworICAgICAgICAgICAgc2VuZF9zbmkgPSAwOworI2lmZGVmIEVOQUJMRV9JUFY2CisgICAgICAgIH0gZWxzZSBpZihpbmV0X3B0b24oQUZfSU5FVDYsIHNlcnZlcl9ob3N0bmFtZSwgcGFja2VkKSkgeworICAgICAgICAgICAgc2VuZF9zbmkgPSAwOworI2VuZGlmIC8qIEVOQUJMRV9JUFY2ICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZW5kX3NuaSA9IDE7CisgICAgICAgIH0KKyNlbmRpZiAvKiBIQVZFX0lORVRfUFRPTiAqLworICAgICAgICBpZiAoc2VuZF9zbmkpIHsKKyAgICAgICAgICAgIFNTTF9zZXRfdGxzZXh0X2hvc3RfbmFtZShzZWxmLT5zc2wsIHNlcnZlcl9ob3N0bmFtZSk7CisgICAgICAgIH0KKyAgICB9CiAjZW5kaWYKIAogICAgIC8qIElmIHRoZSBzb2NrZXQgaXMgaW4gbm9uLWJsb2NraW5nIG1vZGUgb3IgdGltZW91dCBtb2RlLCBzZXQgdGhlIEJJTwpAQCAtNjc2LDQ5ICs3NDMsNjcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLV9jcmVhdGVfdHVwbGVfZm9yX2F0dHJpYnV0ZSAoQVNOMV9PQkpFQ1QgKm5hbWUsIEFTTjFfU1RSSU5HICp2YWx1ZSkgewotCi0gICAgY2hhciBuYW1lYnVmW1g1MDlfTkFNRV9NQVhMRU5dOworX2FzbjFvYmoycHkoY29uc3QgQVNOMV9PQkpFQ1QgKm5hbWUsIGludCBub19uYW1lKQoreworICAgIGNoYXIgYnVmW1g1MDlfTkFNRV9NQVhMRU5dOworICAgIGNoYXIgKm5hbWVidWYgPSBidWY7CiAgICAgaW50IGJ1ZmxlbjsKLSAgICBQeU9iamVjdCAqbmFtZV9vYmo7Ci0gICAgUHlPYmplY3QgKnZhbHVlX29iajsKLSAgICBQeU9iamVjdCAqYXR0cjsKLSAgICB1bnNpZ25lZCBjaGFyICp2YWx1ZWJ1ZiA9IE5VTEw7CisgICAgUHlPYmplY3QgKm5hbWVfb2JqID0gTlVMTDsKIAotICAgIGJ1ZmxlbiA9IE9CSl9vYmoydHh0KG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSwgbmFtZSwgMCk7CisgICAgYnVmbGVuID0gT0JKX29iajJ0eHQobmFtZWJ1ZiwgWDUwOV9OQU1FX01BWExFTiwgbmFtZSwgbm9fbmFtZSk7CiAgICAgaWYgKGJ1ZmxlbiA8IDApIHsKICAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG5hbWVfb2JqID0gUHlTdHJpbmdfRnJvbVN0cmluZ0FuZFNpemUobmFtZWJ1ZiwgYnVmbGVuKTsKLSAgICBpZiAobmFtZV9vYmogPT0gTlVMTCkKLSAgICAgICAgZ290byBmYWlsOworICAgIC8qIGluaXRpYWwgYnVmZmVyIGlzIHRvbyBzbWFsbCBmb3Igb2lkICsgdGVybWluYXRpbmcgbnVsbCBieXRlICovCisgICAgaWYgKGJ1ZmxlbiA+IFg1MDlfTkFNRV9NQVhMRU4gLSAxKSB7CisgICAgICAgIC8qIG1ha2UgT0JKX29iajJ0eHQoKSBjYWxjdWxhdGUgdGhlIHJlcXVpcmVkIGJ1ZmxlbiAqLworICAgICAgICBidWZsZW4gPSBPQkpfb2JqMnR4dChOVUxMLCAwLCBuYW1lLCBub19uYW1lKTsKKyAgICAgICAgLyogYWxsb2NhdGUgbGVuICsgMSBmb3IgdGVybWluYXRpbmcgTlVMTCBieXRlICovCisgICAgICAgIG5hbWVidWYgPSBQeU1lbV9NYWxsb2MoYnVmbGVuICsgMSk7CisgICAgICAgIGlmIChuYW1lYnVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBidWZsZW4gPSBPQkpfb2JqMnR4dChuYW1lYnVmLCBidWZsZW4gKyAxLCBuYW1lLCBub19uYW1lKTsKKyAgICAgICAgaWYgKGJ1ZmxlbiA8IDApIHsKKyAgICAgICAgICAgIF9zZXRTU0xFcnJvcihOVUxMLCAwLCBfX0ZJTEVfXywgX19MSU5FX18pOworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CisgICAgfQorICAgIGlmICghYnVmbGVuICYmIG5vX25hbWUpIHsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgICAgICBuYW1lX29iaiA9IFB5X05vbmU7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBuYW1lX29iaiA9IFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKG5hbWVidWYsIGJ1Zmxlbik7CisgICAgfQorCisgIGRvbmU6CisgICAgaWYgKGJ1ZiAhPSBuYW1lYnVmKSB7CisgICAgICAgIFB5TWVtX0ZyZWUobmFtZWJ1Zik7CisgICAgfQorICAgIHJldHVybiBuYW1lX29iajsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK19jcmVhdGVfdHVwbGVfZm9yX2F0dHJpYnV0ZShBU04xX09CSkVDVCAqbmFtZSwgQVNOMV9TVFJJTkcgKnZhbHVlKQoreworICAgIFB5X3NzaXplX3QgYnVmbGVuOworICAgIHVuc2lnbmVkIGNoYXIgKnZhbHVlYnVmID0gTlVMTDsKKyAgICBQeU9iamVjdCAqYXR0ciwgKnZhbHVlX29iajsKIAogICAgIGJ1ZmxlbiA9IEFTTjFfU1RSSU5HX3RvX1VURjgoJnZhbHVlYnVmLCB2YWx1ZSk7CiAgICAgaWYgKGJ1ZmxlbiA8IDApIHsKICAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7Ci0gICAgICAgIFB5X0RFQ1JFRihuYW1lX29iaik7Ci0gICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIHZhbHVlX29iaiA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KChjaGFyICopIHZhbHVlYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmxlbiwgInN0cmljdCIpOwotICAgIE9QRU5TU0xfZnJlZSh2YWx1ZWJ1Zik7Ci0gICAgaWYgKHZhbHVlX29iaiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihuYW1lX29iaik7Ci0gICAgICAgIGdvdG8gZmFpbDsKLSAgICB9Ci0gICAgYXR0ciA9IFB5VHVwbGVfTmV3KDIpOwotICAgIGlmIChhdHRyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKG5hbWVfb2JqKTsKLSAgICAgICAgUHlfREVDUkVGKHZhbHVlX29iaik7Ci0gICAgICAgIGdvdG8gZmFpbDsKLSAgICB9Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhdHRyLCAwLCBuYW1lX29iaik7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShhdHRyLCAxLCB2YWx1ZV9vYmopOwotICAgIHJldHVybiBhdHRyOwogCi0gIGZhaWw6Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgYXR0ciA9IFB5X0J1aWxkVmFsdWUoIk5OIiwgX2FzbjFvYmoycHkobmFtZSwgMCksIHZhbHVlX29iaik7CisgICAgT1BFTlNTTF9mcmVlKHZhbHVlYnVmKTsKKyAgICByZXR1cm4gYXR0cjsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTExMjUsMTAgKzEyMTAsNiBAQAogICAgIGludCBpLCBqOwogICAgIFB5T2JqZWN0ICpsc3QsICpyZXMgPSBOVUxMOwogCi0jaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA+PSAweDEwMDAxMDAwTAotICAgIC8qIENhbGxzIHg1MDl2M19jYWNoZV9leHRlbnNpb25zIGFuZCBzZXRzIHVwIGNybGRwICovCi0gICAgWDUwOV9jaGVja19jYShjZXJ0aWZpY2F0ZSk7Ci0jZW5kaWYKICAgICBkcHMgPSBYNTA5X2dldF9leHRfZDJpKGNlcnRpZmljYXRlLCBOSURfY3JsX2Rpc3RyaWJ1dGlvbl9wb2ludHMsIE5VTEwsIE5VTEwpOwogCiAgICAgaWYgKGRwcyA9PSBOVUxMKQpAQCAtMTE3Myw5ICsxMjU0LDcgQEAKIAogICBkb25lOgogICAgIFB5X1hERUNSRUYobHN0KTsKLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDAwMTAwMEwKLSAgICBza19ESVNUX1BPSU5UX2ZyZWUoZHBzKTsKLSNlbmRpZgorICAgIENSTF9ESVNUX1BPSU5UU19mcmVlKGRwcyk7CiAgICAgcmV0dXJuIHJlczsKIH0KIApAQCAtMTUwOCw3ICsxNTg3LDcgQEAKICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcodmVyc2lvbik7CiB9CiAKLSNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisjaWYgZGVmaW5lZChPUEVOU1NMX05QTl9ORUdPVElBVEVEKSAmJiAhZGVmaW5lZChPUEVOU1NMX05PX05FWFRQUk9UT05FRykKIHN0YXRpYyBQeU9iamVjdCAqUHlTU0xfc2VsZWN0ZWRfbnBuX3Byb3RvY29sKFB5U1NMU29ja2V0ICpzZWxmKSB7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqb3V0OwogICAgIHVuc2lnbmVkIGludCBvdXRsZW47CkBAIC0xNTIyLDcgKzE2MDEsNyBAQAogfQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX0FMUE4KKyNpZiBIQVZFX0FMUE4KIHN0YXRpYyBQeU9iamVjdCAqUHlTU0xfc2VsZWN0ZWRfYWxwbl9wcm90b2NvbChQeVNTTFNvY2tldCAqc2VsZikgewogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKm91dDsKICAgICB1bnNpZ25lZCBpbnQgb3V0bGVuOwpAQCAtMjAzOSw3ICsyMTE4LDcgQEAKICNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECiAgICAgeyJzZWxlY3RlZF9ucG5fcHJvdG9jb2wiLCAoUHlDRnVuY3Rpb24pUHlTU0xfc2VsZWN0ZWRfbnBuX3Byb3RvY29sLCBNRVRIX05PQVJHU30sCiAjZW5kaWYKLSNpZmRlZiBIQVZFX0FMUE4KKyNpZiBIQVZFX0FMUE4KICAgICB7InNlbGVjdGVkX2FscG5fcHJvdG9jb2wiLCAoUHlDRnVuY3Rpb24pUHlTU0xfc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCwgTUVUSF9OT0FSR1N9LAogI2VuZGlmCiAgICAgeyJjb21wcmVzc2lvbiIsIChQeUNGdW5jdGlvbilQeVNTTF9jb21wcmVzc2lvbiwgTUVUSF9OT0FSR1N9LApAQCAtMjEzNCw4ICsyMjEzLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChjdHggPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlTU0xFcnJvck9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gYWxsb2NhdGUgU1NMIGNvbnRleHQiKTsKKyAgICAgICAgX3NldFNTTEVycm9yKE5VTEwsIDAsIF9fRklMRV9fLCBfX0xJTkVfXyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMjE0NiwxMCArMjIyNCwxMCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgc2VsZi0+Y3R4ID0gY3R4OwotI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyNpZiBIQVZFX05QTgogICAgIHNlbGYtPm5wbl9wcm90b2NvbHMgPSBOVUxMOwogI2VuZGlmCi0jaWZkZWYgSEFWRV9BTFBOCisjaWYgSEFWRV9BTFBOCiAgICAgc2VsZi0+YWxwbl9wcm90b2NvbHMgPSBOVUxMOwogI2VuZGlmCiAjaWZuZGVmIE9QRU5TU0xfTk9fVExTRVhUCkBAIC0yMTY2LDEyICsyMjQ0LDEyIEBACiAgICAgICAgIG9wdGlvbnMgfD0gU1NMX09QX05PX1NTTHYzOwogICAgIFNTTF9DVFhfc2V0X29wdGlvbnMoc2VsZi0+Y3R4LCBvcHRpb25zKTsKIAotI2lmbmRlZiBPUEVOU1NMX05PX0VDREgKKyNpZiAhZGVmaW5lZChPUEVOU1NMX05PX0VDREgpICYmICFkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl8xXzEpCiAgICAgLyogQWxsb3cgYXV0b21hdGljIEVDREggY3VydmUgc2VsZWN0aW9uIChvbiBPcGVuU1NMIDEuMC4yKyksIG9yIHVzZQogICAgICAgIHByaW1lMjU2djEgYnkgZGVmYXVsdC4gIFRoaXMgaXMgQXBhY2hlIG1vZF9zc2wncyBpbml0aWFsaXphdGlvbgogICAgICAgIHBvbGljeSwgc28gd2Ugc2hvdWxkIGJlIHNhZmUuIE9wZW5TU0wgMS4xIGhhcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQuCiAgICAgICovCi0jaWYgZGVmaW5lZChTU0xfQ1RYX3NldF9lY2RoX2F1dG8pICYmICFkZWZpbmVkKE9QRU5TU0xfVkVSU0lPTl8xXzEpCisjaWYgZGVmaW5lZChTU0xfQ1RYX3NldF9lY2RoX2F1dG8pCiAgICAgU1NMX0NUWF9zZXRfZWNkaF9hdXRvKHNlbGYtPmN0eCwgMSk7CiAjZWxzZQogICAgIHsKQEAgLTIyMjAsMTIgKzIyOTgsMTQgQEAKIHN0YXRpYyB2b2lkCiBjb250ZXh0X2RlYWxsb2MoUHlTU0xDb250ZXh0ICpzZWxmKQogeworICAgIC8qIGJwby0zMTA5NTogVW5UcmFjayBpcyBuZWVkZWQgYmVmb3JlIGNhbGxpbmcgYW55IGNhbGxiYWNrcyAqLworICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc2VsZik7CiAgICAgY29udGV4dF9jbGVhcihzZWxmKTsKICAgICBTU0xfQ1RYX2ZyZWUoc2VsZi0+Y3R4KTsKLSNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisjaWYgSEFWRV9OUE4KICAgICBQeU1lbV9GUkVFKHNlbGYtPm5wbl9wcm90b2NvbHMpOwogI2VuZGlmCi0jaWZkZWYgSEFWRV9BTFBOCisjaWYgSEFWRV9BTFBOCiAgICAgUHlNZW1fRlJFRShzZWxmLT5hbHBuX3Byb3RvY29scyk7CiAjZW5kaWYKICAgICBQeV9UWVBFKHNlbGYpLT50cF9mcmVlKHNlbGYpOwpAQCAtMjI1Miw3ICsyMzMyLDcgQEAKICAgICBQeV9SRVRVUk5fTk9ORTsKIH0KIAotI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyNpZiBIQVZFX05QTiB8fCBIQVZFX0FMUE4KIHN0YXRpYyBpbnQKIGRvX3Byb3RvY29sX3NlbGVjdGlvbihpbnQgYWxwbiwgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNlcnZlcl9wcm90b2NvbHMsIHVuc2lnbmVkIGludCBzZXJ2ZXJfcHJvdG9jb2xzX2xlbiwKQEAgLTIyNzYsNyArMjM1Niw5IEBACiAKICAgICByZXR1cm4gU1NMX1RMU0VYVF9FUlJfT0s7CiB9CisjZW5kaWYKIAorI2lmIEhBVkVfTlBOCiAvKiB0aGlzIGNhbGxiYWNrIGdldHMgcGFzc2VkIHRvIFNTTF9DVFhfc2V0X25leHRfcHJvdG9zX2FkdmVydGlzZV9jYiAqLwogc3RhdGljIGludAogX2FkdmVydGlzZU5QTl9jYihTU0wgKnMsCkBAIC0yMzExLDcgKzIzOTMsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIF9zZXRfbnBuX3Byb3RvY29scyhQeVNTTENvbnRleHQgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotI2lmZGVmIE9QRU5TU0xfTlBOX05FR09USUFURUQKKyNpZiBIQVZFX05QTgogICAgIFB5X2J1ZmZlciBwcm90b3M7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInMqOnNldF9ucG5fcHJvdG9jb2xzIiwgJnByb3RvcykpCkBAIC0yMzQ3LDcgKzI0MjksNyBAQAogI2VuZGlmCiB9CiAKLSNpZmRlZiBIQVZFX0FMUE4KKyNpZiBIQVZFX0FMUE4KIHN0YXRpYyBpbnQKIF9zZWxlY3RBTFBOX2NiKFNTTCAqcywKICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqKm91dCwgdW5zaWduZWQgY2hhciAqb3V0bGVuLApAQCAtMjM2NCw3ICsyNDQ2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBfc2V0X2FscG5fcHJvdG9jb2xzKFB5U1NMQ29udGV4dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0jaWZkZWYgSEFWRV9BTFBOCisjaWYgSEFWRV9BTFBOCiAgICAgUHlfYnVmZmVyIHByb3RvczsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAicyo6c2V0X25wbl9wcm90b2NvbHMiLCAmcHJvdG9zKSkKQEAgLTI5NjgsMTMgKzMwNTAsMjUgQEAKIHsKICAgICBCSU8gKmJpbzsKICAgICBESCAqZGg7Ci0gICAgY2hhciAqcGF0aCA9IFB5Qnl0ZXNfQXNTdHJpbmcoZmlsZXBhdGgpOwotICAgIGlmICghcGF0aCkgewotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBQeU9iamVjdCAqZmlsZXBhdGhfYnl0ZXMgPSBOVUxMOworCisgICAgaWYgKFB5U3RyaW5nX0NoZWNrKGZpbGVwYXRoKSkgeworICAgICAgICBQeV9JTkNSRUYoZmlsZXBhdGgpOworICAgICAgICBmaWxlcGF0aF9ieXRlcyA9IGZpbGVwYXRoOworICAgIH0gZWxzZSB7CisgICAgICAgIFB5T2JqZWN0ICp1ID0gUHlVbmljb2RlX0Zyb21PYmplY3QoZmlsZXBhdGgpOworICAgICAgICBpZiAoIXUpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZmlsZXBhdGhfYnl0ZXMgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKAorICAgICAgICAgICAgdSwgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRih1KTsKKyAgICAgICAgaWYgKCFmaWxlcGF0aF9ieXRlcykKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGJpbyA9IEJJT19uZXdfZmlsZShwYXRoLCAiciIpOworICAgIGJpbyA9IEJJT19uZXdfZmlsZShQeUJ5dGVzX0FTX1NUUklORyhmaWxlcGF0aF9ieXRlcyksICJyIik7CiAgICAgaWYgKGJpbyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0RFQ1JFRihmaWxlcGF0aF9ieXRlcyk7CiAgICAgICAgIEVSUl9jbGVhcl9lcnJvcigpOwogICAgICAgICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QoUHlFeGNfSU9FcnJvciwgZmlsZXBhdGgpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTI5ODMsNiArMzA3Nyw3IEBACiAgICAgUHlTU0xfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgIGRoID0gUEVNX3JlYWRfYmlvX0RIcGFyYW1zKGJpbywgTlVMTCwgTlVMTCwgTlVMTCk7CiAgICAgQklPX2ZyZWUoYmlvKTsKKyAgICBQeV9ERUNSRUYoZmlsZXBhdGhfYnl0ZXMpOwogICAgIFB5U1NMX0VORF9BTExPV19USFJFQURTCiAgICAgaWYgKGRoID09IE5VTEwpIHsKICAgICAgICAgaWYgKGVycm5vICE9IDApIHsKQEAgLTM1NzgsOCArMzY3Myw2IEBACiB7CiAgICAgaW50IG5pZDsKICAgICBjb25zdCBjaGFyICpsbiwgKnNuOwotICAgIGNoYXIgYnVmWzEwMF07Ci0gICAgUHlfc3NpemVfdCBidWZsZW47CiAKICAgICBuaWQgPSBPQkpfb2JqMm5pZChvYmopOwogICAgIGlmIChuaWQgPT0gTklEX3VuZGVmKSB7CkBAIC0zNTg4LDE2ICszNjgxLDcgQEAKICAgICB9CiAgICAgc24gPSBPQkpfbmlkMnNuKG5pZCk7CiAgICAgbG4gPSBPQkpfbmlkMmxuKG5pZCk7Ci0gICAgYnVmbGVuID0gT0JKX29iajJ0eHQoYnVmLCBzaXplb2YoYnVmKSwgb2JqLCAxKTsKLSAgICBpZiAoYnVmbGVuIDwgMCkgewotICAgICAgICBfc2V0U1NMRXJyb3IoTlVMTCwgMCwgX19GSUxFX18sIF9fTElORV9fKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChidWZsZW4pIHsKLSAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlzc3MjIiwgbmlkLCBzbiwgbG4sIGJ1ZiwgYnVmbGVuKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiaXNzTyIsIG5pZCwgc24sIGxuLCBQeV9Ob25lKTsKLSAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlzc04iLCBuaWQsIHNuLCBsbiwgX2FzbjFvYmoycHkob2JqLCAxKSk7CiB9CiAKIFB5RG9jX1NUUlZBUihQeVNTTF90eHQyb2JqX2RvYywKQEAgLTQwODYsOSArNDE3MCwxNCBAQAogICAgIGlmIChQeVNvY2tldE1vZHVsZV9JbXBvcnRNb2R1bGVBbmRBUEkoKSkKICAgICAgICAgcmV0dXJuOwogCisjaWZuZGVmIE9QRU5TU0xfVkVSU0lPTl8xXzEKKyAgICAvKiBMb2FkIGFsbCBhbGdvcml0aG1zIGFuZCBpbml0aWFsaXplIGNwdWlkICovCisgICAgT1BFTlNTTF9hZGRfYWxsX2FsZ29yaXRobXNfbm9jb25mKCk7CiAgICAgLyogSW5pdCBPcGVuU1NMICovCiAgICAgU1NMX2xvYWRfZXJyb3Jfc3RyaW5ncygpOwogICAgIFNTTF9saWJyYXJ5X2luaXQoKTsKKyNlbmRpZgorCiAjaWZkZWYgV0lUSF9USFJFQUQKICNpZmRlZiBIQVZFX09QRU5TU0xfQ1JZUFRPX0xPQ0sKICAgICAvKiBub3RlIHRoYXQgdGhpcyB3aWxsIHN0YXJ0IHRocmVhZGluZyBpZiBub3QgYWxyZWFkeSBzdGFydGVkICovCkBAIC00MTAwLDcgKzQxODksNiBAQAogICAgIF9zc2xfbG9ja3NfY291bnQrKzsKICNlbmRpZgogI2VuZGlmICAvKiBXSVRIX1RIUkVBRCAqLwotICAgIE9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zKCk7CiAKICAgICAvKiBBZGQgc3ltYm9scyB0byBtb2R1bGUgZGljdCAqLwogICAgIFB5U1NMRXJyb3JPYmplY3QgPSBQeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jKApAQCAtNDI3NCw2ICs0MzYyLDExIEBACiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RMU3YxXzEiLCBTU0xfT1BfTk9fVExTdjFfMSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX05PX1RMU3YxXzIiLCBTU0xfT1BfTk9fVExTdjFfMik7CiAjZW5kaWYKKyNpZmRlZiBTU0xfT1BfTk9fVExTdjFfMworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJPUF9OT19UTFN2MV8zIiwgU1NMX09QX05PX1RMU3YxXzMpOworI2Vsc2UKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiT1BfTk9fVExTdjFfMyIsIDApOworI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSk7CiAgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk9QX1NJTkdMRV9ESF9VU0UiLCBTU0xfT1BfU0lOR0xFX0RIX1VTRSk7CkBAIC00MzA5LDcgKzQ0MDIsNyBAQAogICAgIFB5X0lOQ1JFRihyKTsKICAgICBQeU1vZHVsZV9BZGRPYmplY3QobSwgIkhBU19FQ0RIIiwgcik7CiAKLSNpZmRlZiBPUEVOU1NMX05QTl9ORUdPVElBVEVECisjaWYgSEFWRV9OUE4KICAgICByID0gUHlfVHJ1ZTsKICNlbHNlCiAgICAgciA9IFB5X0ZhbHNlOwpAQCAtNDMxNyw3ICs0NDEwLDcgQEAKICAgICBQeV9JTkNSRUYocik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfTlBOIiwgcik7CiAKLSNpZmRlZiBIQVZFX0FMUE4KKyNpZiBIQVZFX0FMUE4KICAgICByID0gUHlfVHJ1ZTsKICNlbHNlCiAgICAgciA9IFB5X0ZhbHNlOwpAQCAtNDMyNSw2ICs0NDE4LDE0IEBACiAgICAgUHlfSU5DUkVGKHIpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiSEFTX0FMUE4iLCByKTsKIAorI2lmIGRlZmluZWQoVExTMV8zX1ZFUlNJT04pICYmICFkZWZpbmVkKE9QRU5TU0xfTk9fVExTMV8zKQorICAgIHIgPSBQeV9UcnVlOworI2Vsc2UKKyAgICByID0gUHlfRmFsc2U7CisjZW5kaWYKKyAgICBQeV9JTkNSRUYocik7CisgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJIQVNfVExTdjFfMyIsIHIpOworCiAgICAgLyogTWFwcGluZ3MgZm9yIGVycm9yIGNvZGVzICovCiAgICAgZXJyX2NvZGVzX3RvX25hbWVzID0gUHlEaWN0X05ldygpOwogICAgIGVycl9uYW1lc190b19jb2RlcyA9IFB5RGljdF9OZXcoKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3N0cnVjdC5jIGIvTW9kdWxlcy9fc3RydWN0LmMKaW5kZXggNTBmYjEzOC4uOGI5NzY3MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fc3RydWN0LmMKKysrIGIvTW9kdWxlcy9fc3RydWN0LmMKQEAgLTExMCw3ICsxMTAsNyBAQAogICAgIFB5T2JqZWN0ICpyLCAqdzsKICAgICBpbnQgY29udmVydGVkID0gMDsKICAgICBhc3NlcnQodiAhPSBOVUxMKTsKLSAgICBpZiAoIVB5SW50X0NoZWNrKHYpICYmICFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICBpZiAoIV9QeUFueUludF9DaGVjayh2KSkgewogICAgICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAgICAgICAgIC8qIE5vdCBhbiBpbnRlZ2VyOyBmaXJzdCB0cnkgdG8gdXNlIF9faW5kZXhfXyB0bwogICAgICAgICAgICBjb252ZXJ0IHRvIGFuIGludGVnZXIuICBJZiB0aGUgX19pbmRleF9fIG1ldGhvZApAQCAtMTUwLDcgKzE1MCw3IEBACiAgICAgICAgICAgICB2ID0gbS0+bmJfaW50KHYpOwogICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGlmICghUHlJbnRfQ2hlY2sodikgJiYgIVB5TG9uZ19DaGVjayh2KSkgeworICAgICAgICAgICAgaWYgKCFfUHlBbnlJbnRfQ2hlY2sodikpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19pbnRfXyBtZXRob2QgcmV0dXJuZWQgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWludGVnZXIiKTsKQEAgLTE2OSw3ICsxNjksNyBAQAogICAgICAgICAvKiBFbnN1cmUgd2Ugb3duIGEgcmVmZXJlbmNlIHRvIHYuICovCiAgICAgICAgIFB5X0lOQ1JFRih2KTsKIAotICAgIGFzc2VydChQeUludF9DaGVjayh2KSB8fCBQeUxvbmdfQ2hlY2sodikpOworICAgIGFzc2VydChfUHlBbnlJbnRfQ2hlY2sodikpOwogICAgIGlmIChQeUludF9DaGVjayh2KSkgewogICAgICAgICByID0gUHlMb25nX0Zyb21Mb25nKFB5SW50X0FTX0xPTkcodikpOwogICAgICAgICBQeV9ERUNSRUYodik7CkBAIC01MDYsNyArNTA2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJ1Ynl0ZSBmb3JtYXQgcmVxdWlyZXMgMCA8PSBudW1iZXIgPD0gMjU1Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgKnAgPSAoY2hhcil4OworICAgICoodW5zaWduZWQgY2hhciAqKXAgPSAodW5zaWduZWQgY2hhcil4OwogICAgIHJldHVybiAwOwogfQogCkBAIC04MTQsNiArODE0LDcgQEAKIHsKICAgICBsb25nIHg7CiAgICAgUHlfc3NpemVfdCBpOworICAgIHVuc2lnbmVkIGNoYXIgKnEgPSAodW5zaWduZWQgY2hhciAqKXA7CiAgICAgaWYgKGdldF9sb25nKHYsICZ4KSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpID0gZi0+c2l6ZTsKQEAgLTgyNiw3ICs4MjcsNyBAQAogI2VuZGlmCiAgICAgfQogICAgIGRvIHsKLSAgICAgICAgcFstLWldID0gKGNoYXIpeDsKKyAgICAgICAgcVstLWldID0gKHVuc2lnbmVkIGNoYXIpKHggJiAweGZmTCk7CiAgICAgICAgIHggPj49IDg7CiAgICAgfSB3aGlsZSAoaSA+IDApOwogICAgIHJldHVybiAwOwpAQCAtODM3LDYgKzgzOCw3IEBACiB7CiAgICAgdW5zaWduZWQgbG9uZyB4OwogICAgIFB5X3NzaXplX3QgaTsKKyAgICB1bnNpZ25lZCBjaGFyICpxID0gKHVuc2lnbmVkIGNoYXIgKilwOwogICAgIGlmIChnZXRfdWxvbmcodiwgJngpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGkgPSBmLT5zaXplOwpAQCAtODQ3LDcgKzg0OSw3IEBACiAgICAgICAgICAgICByZXR1cm4gX3JhbmdlX2Vycm9yKGYsIDEpOwogICAgIH0KICAgICBkbyB7Ci0gICAgICAgIHBbLS1pXSA9IChjaGFyKXg7CisgICAgICAgIHFbLS1pXSA9ICh1bnNpZ25lZCBjaGFyKSh4ICYgMHhmZlVMKTsKICAgICAgICAgeCA+Pj0gODsKICAgICB9IHdoaWxlIChpID4gMCk7CiAgICAgcmV0dXJuIDA7CkBAIC0xMDM0LDYgKzEwMzYsNyBAQAogewogICAgIGxvbmcgeDsKICAgICBQeV9zc2l6ZV90IGk7CisgICAgdW5zaWduZWQgY2hhciAqcSA9ICh1bnNpZ25lZCBjaGFyICopcDsKICAgICBpZiAoZ2V0X2xvbmcodiwgJngpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogICAgIGkgPSBmLT5zaXplOwpAQCAtMTA0Niw3ICsxMDQ5LDcgQEAKICNlbmRpZgogICAgIH0KICAgICBkbyB7Ci0gICAgICAgICpwKysgPSAoY2hhcil4OworICAgICAgICAqcSsrID0gKHVuc2lnbmVkIGNoYXIpKHggJiAweGZmTCk7CiAgICAgICAgIHggPj49IDg7CiAgICAgfSB3aGlsZSAoLS1pID4gMCk7CiAgICAgcmV0dXJuIDA7CkBAIC0xMDU3LDYgKzEwNjAsNyBAQAogewogICAgIHVuc2lnbmVkIGxvbmcgeDsKICAgICBQeV9zc2l6ZV90IGk7CisgICAgdW5zaWduZWQgY2hhciAqcSA9ICh1bnNpZ25lZCBjaGFyICopcDsKICAgICBpZiAoZ2V0X3Vsb25nKHYsICZ4KSA8IDApCiAgICAgICAgIHJldHVybiAtMTsKICAgICBpID0gZi0+c2l6ZTsKQEAgLTEwNjcsNyArMTA3MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gX3JhbmdlX2Vycm9yKGYsIDEpOwogICAgIH0KICAgICBkbyB7Ci0gICAgICAgICpwKysgPSAoY2hhcil4OworICAgICAgICAqcSsrID0gKHVuc2lnbmVkIGNoYXIpKHggJiAweGZmVUwpOwogICAgICAgICB4ID4+PSA4OwogICAgIH0gd2hpbGUgKC0taSA+IDApOwogICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYyBiL01vZHVsZXMvX3Rlc3RjYXBpbW9kdWxlLmMKaW5kZXggZjMwNmIxYy4uNjc0ODhlNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGVzdGNhcGltb2R1bGUuYworKysgYi9Nb2R1bGVzL190ZXN0Y2FwaW1vZHVsZS5jCkBAIC0xMCw2ICsxMCwxNCBAQAogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogI2luY2x1ZGUgImRhdGV0aW1lLmgiCiAjaW5jbHVkZSAibWFyc2hhbC5oIgorI2luY2x1ZGUgPHNpZ25hbC5oPgorI2lmZGVmIE1TX1dJTkRPV1MKKyMgIGluY2x1ZGUgPGNydGRiZy5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1NZU19XQUlUX0gKKyNpbmNsdWRlIDxzeXMvd2FpdC5oPiAgICAgICAgICAgLyogRm9yIFdfU1RPUENPREUgKi8KKyNlbmRpZgogCiAjaWZkZWYgV0lUSF9USFJFQUQKICNpbmNsdWRlICJweXRocmVhZC5oIgpAQCAtMTc5LDggKzE4Nyw3IEBACiAgKiAgIFB5VHlwZV9SZWFkeSBpZiBpdCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGNhbGxlZAogICovCiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9IYXNoSW5oZXJpdGFuY2VUZXN0ZXJfVHlwZSA9IHsKLSAgICBQeU9iamVjdF9IRUFEX0lOSVQoTlVMTCkKLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIGl0ZW1zIGZvciB2YXJvYmplY3QgKi8KKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiaGFzaGluaGVyaXRhbmNldGVzdGVyIiwgICAgICAgICAgICAvKiBOYW1lIG9mIHRoaXMgdHlwZSAqLwogICAgIHNpemVvZihQeU9iamVjdCksICAgICAgICAgICAvKiBCYXNpYyBvYmplY3Qgc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJdGVtIHNpemUgZm9yIHZhcm9iamVjdCAqLwpAQCAtMzA3LDggKzMxNCw3IEBACiB9OwogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9NZW1vcnlWaWV3VGVzdGVyX1R5cGUgPSB7Ci0gICAgUHlPYmplY3RfSEVBRF9JTklUKE5VTEwpCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE51bWJlciBvZiBpdGVtcyBmb3IgdmFyb2JqZWN0ICovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIm1lbW9yeXZpZXd0ZXN0ZXIiLCAgICAgICAgIC8qIE5hbWUgb2YgdGhpcyB0eXBlICovCiAgICAgc2l6ZW9mKFB5T2JqZWN0KSwgICAgICAgICAgIC8qIEJhc2ljIG9iamVjdCBzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEl0ZW0gc2l6ZSBmb3IgdmFyb2JqZWN0ICovCkBAIC05MDMsOCArOTA5LDkgQEAKICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cGxlLCAwLCBudW0pOwogCiAgICAgdmFsdWUgPSAtMTsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZSh0dXBsZSwgIkw6dGVzdF9MX2NvZGUiLCAmdmFsdWUpIDwgMCkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUodHVwbGUsICJMOnRlc3RfTF9jb2RlIiwgJnZhbHVlKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHZhbHVlICE9IDQyKQogICAgICAgICByZXR1cm4gcmFpc2VUZXN0RXJyb3IoInRlc3RfTF9jb2RlIiwKICAgICAgICAgICAgICJMIGNvZGUgcmV0dXJuZWQgd3JvbmcgdmFsdWUgZm9yIGxvbmcgNDIiKTsKQEAgLTkxNyw4ICs5MjQsOSBAQAogICAgIFB5VHVwbGVfU0VUX0lURU0odHVwbGUsIDAsIG51bSk7CiAKICAgICB2YWx1ZSA9IC0xOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKHR1cGxlLCAiTDp0ZXN0X0xfY29kZSIsICZ2YWx1ZSkgPCAwKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZSh0dXBsZSwgIkw6dGVzdF9MX2NvZGUiLCAmdmFsdWUpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAodmFsdWUgIT0gNDIpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9MX2NvZGUiLAogICAgICAgICAgICAgIkwgY29kZSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgaW50IDQyIik7CkBAIC0xMTk5LDggKzEyMDcsOSBAQAogICAgIFB5VHVwbGVfU0VUX0lURU0odHVwbGUsIDAsIG51bSk7CiAKICAgICB2YWx1ZSA9IDA7Ci0gICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUodHVwbGUsICJrOnRlc3Rfa19jb2RlIiwgJnZhbHVlKSA8IDApCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHR1cGxlLCAiazp0ZXN0X2tfY29kZSIsICZ2YWx1ZSkpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmICh2YWx1ZSAhPSBVTE9OR19NQVgpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9rX2NvZGUiLAogICAgICAgICAgICAgImsgY29kZSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAweEZGRi4uLkZGRiIpOwpAQCAtMTIxOCw4ICsxMjI3LDkgQEAKICAgICBQeVR1cGxlX1NFVF9JVEVNKHR1cGxlLCAwLCBudW0pOwogCiAgICAgdmFsdWUgPSAwOwotICAgIGlmIChQeUFyZ19QYXJzZVR1cGxlKHR1cGxlLCAiazp0ZXN0X2tfY29kZSIsICZ2YWx1ZSkgPCAwKQorICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZSh0dXBsZSwgIms6dGVzdF9rX2NvZGUiLCAmdmFsdWUpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAodmFsdWUgIT0gKHVuc2lnbmVkIGxvbmcpLTB4NDIpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF9rX2NvZGUiLAogICAgICAgICAgICAgImsgY29kZSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgbG9uZyAtMHhGRkYuLjAwMDA0MiIpOwpAQCAtMTU0OSw2ICsxNTU5LDg5IEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFB5T2JqZWN0ICoKK2dldF9pbmRpY2VzKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgcmVzdWx0OworICAgIFB5U2xpY2VPYmplY3QgKnNsaWNlOworICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBzdGFydCwgc3RvcCwgc3RlcDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT24iLCAmc2xpY2UsICZsZW5ndGgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJlc3VsdCA9IFB5U2xpY2VfR2V0SW5kaWNlcyhzbGljZSwgbGVuZ3RoLCAmc3RhcnQsICZzdG9wLCAmc3RlcCk7CisKKyAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICBhc3NlcnQocmVzdWx0ID09IC0xKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICBQeV9SRVRVUk5fTk9ORTsKKyAgICB9CisgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoImlubm4iLCByZXN1bHQsIHN0YXJ0LCBzdG9wLCBzdGVwKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3BhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnN1Yl9hcmdzOworICAgIFB5T2JqZWN0ICpzdWJfa3dhcmdzOworICAgIGNvbnN0IGNoYXIgKnN1Yl9mb3JtYXQ7CisgICAgUHlPYmplY3QgKnN1Yl9rZXl3b3JkczsKKworICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKyAgICBjaGFyICprZXl3b3Jkc1s4ICsgMV07IC8qIHNwYWNlIGZvciBOVUxMIGF0IGVuZCAqLworICAgIFB5T2JqZWN0ICpvOworCisgICAgaW50IHJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKworICAgIGRvdWJsZSBidWZmZXJzWzhdWzRdOyAvKiBkb3VibGUgZW5zdXJlcyBhbGlnbm1lbnQgd2hlcmUgbmVjZXNzYXJ5ICovCisKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9Pc086cGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzIiwKKyAgICAgICAgJnN1Yl9hcmdzLCAmc3ViX2t3YXJncywKKyAgICAgICAgJnN1Yl9mb3JtYXQsICZzdWJfa2V5d29yZHMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmICghKFB5TGlzdF9DaGVja0V4YWN0KHN1Yl9rZXl3b3JkcykgfHwgUHlUdXBsZV9DaGVja0V4YWN0KHN1Yl9rZXl3b3JkcykpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgInBhcnNlX3R1cGxlX2FuZF9rZXl3b3Jkczogc3ViX2tleXdvcmRzIG11c3QgYmUgZWl0aGVyIGxpc3Qgb3IgdHVwbGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtc2V0KGJ1ZmZlcnMsIDAsIHNpemVvZihidWZmZXJzKSk7CisgICAgbWVtc2V0KGtleXdvcmRzLCAwLCBzaXplb2Yoa2V5d29yZHMpKTsKKworICAgIHNpemUgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX1NJWkUoc3ViX2tleXdvcmRzKTsKKyAgICBpZiAoc2l6ZSA+IDgpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAicGFyc2VfdHVwbGVfYW5kX2tleXdvcmRzOiB0b28gbWFueSBrZXl3b3JkcyBpbiBzdWJfa2V5d29yZHMiKTsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgbyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShzdWJfa2V5d29yZHMsIGkpOworICAgICAgICBrZXl3b3Jkc1tpXSA9IFB5U3RyaW5nX0FzU3RyaW5nKG8pOworICAgICAgICBpZiAoa2V5d29yZHNbaV0gPT0gTlVMTCkgeworICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKHN1Yl9hcmdzLCBzdWJfa3dhcmdzLAorICAgICAgICBzdWJfZm9ybWF0LCBrZXl3b3JkcywKKyAgICAgICAgYnVmZmVycyArIDAsIGJ1ZmZlcnMgKyAxLCBidWZmZXJzICsgMiwgYnVmZmVycyArIDMsCisgICAgICAgIGJ1ZmZlcnMgKyA0LCBidWZmZXJzICsgNSwgYnVmZmVycyArIDYsIGJ1ZmZlcnMgKyA3KTsKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKKyAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOworICAgIH0KKworZXhpdDoKKyAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOworfQorCiAjaWZkZWYgUHlfVVNJTkdfVU5JQ09ERQogCiBzdGF0aWMgdm9sYXRpbGUgaW50IHg7CkBAIC0xNTc5LDE0ICsxNjcyLDE2IEBACiAgICAgUHlUdXBsZV9TRVRfSVRFTSh0dXBsZSwgMCwgb2JqKTsKIAogICAgIHZhbHVlID0gMDsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZSh0dXBsZSwgInU6dGVzdF91X2NvZGUiLCAmdmFsdWUpIDwgMCkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUodHVwbGUsICJ1OnRlc3RfdV9jb2RlIiwgJnZhbHVlKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHZhbHVlICE9IFB5VW5pY29kZV9BU19VTklDT0RFKG9iaikpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF91X2NvZGUiLAogICAgICAgICAgICAgInUgY29kZSByZXR1cm5lZCB3cm9uZyB2YWx1ZSBmb3IgdSd0ZXN0JyIpOwogICAgIHZhbHVlID0gMDsKLSAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZSh0dXBsZSwgInUjOnRlc3RfdV9jb2RlIiwgJnZhbHVlLCAmbGVuKSA8IDApCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHR1cGxlLCAidSM6dGVzdF91X2NvZGUiLCAmdmFsdWUsICZsZW4pKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAodmFsdWUgIT0gUHlVbmljb2RlX0FTX1VOSUNPREUob2JqKSB8fAogICAgICAgICBsZW4gIT0gUHlVbmljb2RlX0dFVF9TSVpFKG9iaikpCiAgICAgICAgIHJldHVybiByYWlzZVRlc3RFcnJvcigidGVzdF91X2NvZGUiLApAQCAtMTY4NCw4ICsxNzc5LDkgQEAKICAgICB0dXBsZSA9IFB5VHVwbGVfTmV3KDApOwogICAgIGlmICghdHVwbGUpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICgocmVzdWx0ID0gUHlBcmdfUGFyc2VUdXBsZSh0dXBsZSwgInw6dGVzdF9lbXB0eV9hcmdwYXJzZSIpKSA8IDApCisgICAgaWYgKCEocmVzdWx0ID0gUHlBcmdfUGFyc2VUdXBsZSh0dXBsZSwgInw6dGVzdF9lbXB0eV9hcmdwYXJzZSIpKSkgewogICAgICAgICBnb3RvIGRvbmU7CisgICAgfQogICAgIGRpY3QgPSBQeURpY3RfTmV3KCk7CiAgICAgaWYgKCFkaWN0KQogICAgICAgICBnb3RvIGRvbmU7CkBAIC0xNjkzLDggKzE3ODksOSBAQAogICBkb25lOgogICAgIFB5X0RFQ1JFRih0dXBsZSk7CiAgICAgUHlfWERFQ1JFRihkaWN0KTsKLSAgICBpZiAocmVzdWx0IDwgMCkKKyAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwogICAgIH0KQEAgLTE5NDksNyArMjA0Niw4IEBACiAvKiBUaGUgZm9sbG93aW5nIHJlcXVlc3RzIG4gY2FsbGJhY2tzIHRvIF9wZW5kaW5nX2NhbGxiYWNrLiAgSXQgY2FuIGJlCiAgKiBydW4gZnJvbSBhbnkgcHl0aG9uIHRocmVhZC4KICAqLwotUHlPYmplY3QgKnBlbmRpbmdfdGhyZWFkZnVuYyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3N0YXRpYyBQeU9iamVjdCAqCitwZW5kaW5nX3RocmVhZGZ1bmMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKmNhbGxhYmxlOwogICAgIGludCByOwpAQCAtMjQ4MSw2ICsyNTc5LDkyIEBACiAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk5sIiwgb2JqLCBwb3MpOwogfQogCitzdGF0aWMgUHlPYmplY3QqCit0ZXN0X3JhaXNlX3NpZ25hbChQeU9iamVjdCogc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgaW50IHNpZ251bSwgZXJyOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnJhaXNlX3NpZ25hbCIsICZzaWdudW0pKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGVyciA9IHJhaXNlKHNpZ251bSk7CisgICAgaWYgKGVycikKKyAgICAgICAgcmV0dXJuIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKworICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKKworI2lmZGVmIE1TX1dJTkRPV1MKK3N0YXRpYyBQeU9iamVjdCoKK21zdmNydF9DcnRTZXRSZXBvcnRNb2RlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgdHlwZSwgbW9kZTsKKyAgICBpbnQgcmVzOworCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRNb2RlIiwgJnR5cGUsICZtb2RlKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXMgPSBfQ3J0U2V0UmVwb3J0TW9kZSh0eXBlLCBtb2RlKTsKKyAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiBQeUludF9Gcm9tTG9uZyhyZXMpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCoKK21zdmNydF9DcnRTZXRSZXBvcnRGaWxlKFB5T2JqZWN0KiBzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBpbnQgdHlwZSwgZmlsZTsKKyAgICBsb25nIHJlczsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWk6Q3J0U2V0UmVwb3J0RmlsZSIsICZ0eXBlLCAmZmlsZSkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzID0gKGxvbmcpX0NydFNldFJlcG9ydEZpbGUodHlwZSwgKF9IRklMRSlmaWxlKTsKKworICAgIHJldHVybiBQeUludF9Gcm9tTG9uZyhyZXMpOworfQorI2VuZGlmCisKKworI2lmZGVmIFdfU1RPUENPREUKK3N0YXRpYyBQeU9iamVjdCoKK3B5X3dfc3RvcGNvZGUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIGludCBzaWcsIHN0YXR1czsKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmc2lnKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgc3RhdHVzID0gV19TVE9QQ09ERShzaWcpOworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoc3RhdHVzKTsKK30KKyNlbmRpZgorCisKKy8qIFJlYWQgbWVtb3J5IGZyb20gTlVMTCAoYWRkcmVzcyAwKSB0byByYWlzZSBhIFNJR1NFR1Ygb3IgU0lHQlVTIHNpZ25hbAorICAgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybS4gVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5CisgICB0ZXN0LnN1cHBvcnQuX2NyYXNoX3B5dGhvbigpIHRvICJjcmFzaCIgUHl0aG9uLiAqLworc3RhdGljIFB5T2JqZWN0ICoKK3JlYWRfbnVsbChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgdm9sYXRpbGUgaW50ICp4OworICAgIHZvbGF0aWxlIGludCB5OworCisgICAgeCA9IE5VTEw7CisgICAgeSA9ICp4OworICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoeSk7CisKK30KKwogCiBzdGF0aWMgUHlNZXRob2REZWYgVGVzdE1ldGhvZHNbXSA9IHsKICAgICB7InJhaXNlX2V4Y2VwdGlvbiIsICAgICAgICAgcmFpc2VfZXhjZXB0aW9uLCAgICAgICAgICAgICAgICAgTUVUSF9WQVJBUkdTfSwKQEAgLTI1MDMsNiArMjY4Nyw4IEBACiAjaWZkZWYgUHlfVVNJTkdfVU5JQ09ERQogICAgIHsidGVzdF9lbXB0eV9hcmdwYXJzZSIsIChQeUNGdW5jdGlvbil0ZXN0X2VtcHR5X2FyZ3BhcnNlLE1FVEhfTk9BUkdTfSwKICNlbmRpZgorICAgIHsiZ2V0X2luZGljZXMiLCBnZXRfaW5kaWNlcywgTUVUSF9WQVJBUkdTfSwKKyAgICB7InBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyIsIHBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcywgTUVUSF9WQVJBUkdTfSwKICAgICB7InRlc3RfbnVsbF9zdHJpbmdzIiwgICAgICAgKFB5Q0Z1bmN0aW9uKXRlc3RfbnVsbF9zdHJpbmdzLCAgTUVUSF9OT0FSR1N9LAogICAgIHsidGVzdF9zdHJpbmdfZnJvbV9mb3JtYXQiLCAoUHlDRnVuY3Rpb24pdGVzdF9zdHJpbmdfZnJvbV9mb3JtYXQsIE1FVEhfTk9BUkdTfSwKICAgICB7InRlc3Rfd2l0aF9kb2NzdHJpbmciLCAoUHlDRnVuY3Rpb24pdGVzdF93aXRoX2RvY3N0cmluZywgTUVUSF9OT0FSR1MsCkBAIC0yNTkzLDYgKzI3NzksMTUgQEAKICAgICAgICAgcHltYXJzaGFsX3JlYWRfbGFzdF9vYmplY3RfZnJvbV9maWxlLCBNRVRIX1ZBUkFSR1N9LAogICAgIHsicHltYXJzaGFsX3JlYWRfb2JqZWN0X2Zyb21fZmlsZSIsCiAgICAgICAgIHB5bWFyc2hhbF9yZWFkX29iamVjdF9mcm9tX2ZpbGUsIE1FVEhfVkFSQVJHU30sCisgICAgeyJyYWlzZV9zaWduYWwiLCAoUHlDRnVuY3Rpb24pdGVzdF9yYWlzZV9zaWduYWwsIE1FVEhfVkFSQVJHU30sCisjaWZkZWYgTVNfV0lORE9XUworICAgIHsiQ3J0U2V0UmVwb3J0TW9kZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZSwgTUVUSF9WQVJBUkdTfSwKKyAgICB7IkNydFNldFJlcG9ydEZpbGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X0NydFNldFJlcG9ydEZpbGUsIE1FVEhfVkFSQVJHU30sCisjZW5kaWYKKyNpZmRlZiBXX1NUT1BDT0RFCisgICAgeyJXX1NUT1BDT0RFIiwgcHlfd19zdG9wY29kZSwgTUVUSF9WQVJBUkdTfSwKKyNlbmRpZgorICAgIHsiX3JlYWRfbnVsbCIsIChQeUNGdW5jdGlvbilyZWFkX251bGwsIE1FVEhfTk9BUkdTfSwKICAgICB7TlVMTCwgTlVMTH0gLyogc2VudGluZWwgKi8KIH07CiAKQEAgLTI3ODksNiArMjk4NCwxNCBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiUFlfU1NJWkVfVF9NSU4iLCBQeUludF9Gcm9tU3NpemVfdChQWV9TU0laRV9UX01JTikpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiU0laRU9GX1BZR0NfSEVBRCIsIFB5SW50X0Zyb21Tc2l6ZV90KHNpemVvZihQeUdDX0hlYWQpKSk7CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNSVF9XQVJOIiwgX0NSVF9XQVJOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiQ1JUX0VSUk9SIiwgX0NSVF9FUlJPUik7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNSVF9BU1NFUlQiLCBfQ1JUX0FTU0VSVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNSVERCR19NT0RFX0ZJTEUiLCBfQ1JUREJHX01PREVfRklMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIkNSVERCR19GSUxFX1NUREVSUiIsIChpbnQpX0NSVERCR19GSUxFX1NUREVSUik7CisjZW5kaWYKKwogICAgIFRlc3RFcnJvciA9IFB5RXJyX05ld0V4Y2VwdGlvbigiX3Rlc3RjYXBpLmVycm9yIiwgTlVMTCwgTlVMTCk7CiAgICAgUHlfSU5DUkVGKFRlc3RFcnJvcik7CiAgICAgUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJlcnJvciIsIFRlc3RFcnJvcik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL190a2ludGVyLmMgYi9Nb2R1bGVzL190a2ludGVyLmMKaW5kZXggNDZjYzY0ZC4uYzcxZmZkMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fdGtpbnRlci5jCisrKyBiL01vZHVsZXMvX3RraW50ZXIuYwpAQCAtMjEwNyw3ICsyMTA3LDcgQEAKIAogICAgIGlmIChQeVR1cGxlX1NpemUoYXJncykgPT0gMSkgewogICAgICAgICBQeU9iamVjdCogbyA9IFB5VHVwbGVfR2V0SXRlbShhcmdzLCAwKTsKLSAgICAgICAgaWYgKFB5SW50X0NoZWNrKG8pIHx8IFB5TG9uZ19DaGVjayhvKSkgeworICAgICAgICBpZiAoX1B5QW55SW50X0NoZWNrKG8pKSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYobyk7CiAgICAgICAgICAgICByZXR1cm4gbzsKICAgICAgICAgfQpAQCAtMjEzMSw4ICsyMTMxLDEyIEBACiAgICAgcmVzdWx0ID0gZnJvbVdpZGVJbnRPYmooc2VsZiwgdmFsdWUpOwogI2VuZGlmCiAgICAgVGNsX0RlY3JSZWZDb3VudCh2YWx1ZSk7Ci0gICAgaWYgKHJlc3VsdCAhPSBOVUxMKQotICAgICAgICByZXR1cm4gUHlOdW1iZXJfSW50KHJlc3VsdCk7CisgICAgaWYgKHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICpyZXNpbnQgPSBQeU51bWJlcl9JbnQocmVzdWx0KTsKKyAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXNpbnQ7CisgICAgfQorCiAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogI2Vsc2UKQEAgLTIzMjgsNyArMjMzMiwxMSBAQAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZXQ6c3BsaXRsaXN0IiwgInV0Zi04IiwgJmxpc3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIENIRUNLX1NUUklOR19MRU5HVEgobGlzdCk7CisgICAgaWYgKHN0cmxlbihsaXN0KSA+PSBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAic3RyaW5nIGlzIHRvbyBsb25nIik7CisgICAgICAgIFB5TWVtX0ZyZWUobGlzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBpZiAoVGNsX1NwbGl0TGlzdChUa2FwcF9JbnRlcnAoc2VsZiksIGxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgJmFyZ2MsICZhcmd2KSA9PSBUQ0xfRVJST1IpICB7CiAgICAgICAgIFB5TWVtX0ZyZWUobGlzdCk7CkBAIC0yMzkwLDcgKzIzOTgsMTEgQEAKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiZXQ6c3BsaXQiLCAidXRmLTgiLCAmbGlzdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIENIRUNLX1NUUklOR19MRU5HVEgobGlzdCk7CisgICAgaWYgKHN0cmxlbihsaXN0KSA+PSBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAic3RyaW5nIGlzIHRvbyBsb25nIik7CisgICAgICAgIFB5TWVtX0ZyZWUobGlzdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICB2ID0gU3BsaXQobGlzdCk7CiAgICAgUHlNZW1fRnJlZShsaXN0KTsKICAgICByZXR1cm4gdjsKZGlmZiAtLWdpdCBhL01vZHVsZXMvX3dlYWtyZWYuYyBiL01vZHVsZXMvX3dlYWtyZWYuYwppbmRleCAzODgwMDY3Li40NmUwMDYzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL193ZWFrcmVmLmMKKysrIGIvTW9kdWxlcy9fd2Vha3JlZi5jCkBAIC01LDYgKzUsNDMgQEAKICAgICAgICAgKChQeVdlYWtSZWZlcmVuY2UgKiopIFB5T2JqZWN0X0dFVF9XRUFLUkVGU19MSVNUUFRSKG8pKQogCiAKK3N0YXRpYyBpbnQKK2lzX2RlYWRfd2Vha3JlZihQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKCFQeVdlYWtyZWZfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJub3QgYSB3ZWFrcmVmIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIFB5V2Vha3JlZl9HRVRfT0JKRUNUKHZhbHVlKSA9PSBQeV9Ob25lOworfQorCitQeURvY19TVFJWQVIocmVtb3ZlX2RlYWRfd2Vha3JlZl9fZG9jX18sCisiX3JlbW92ZV9kZWFkX3dlYWtyZWYoZGljdCwga2V5KSAtLSBhdG9taWNhbGx5IHJlbW92ZSBrZXkgZnJvbSBkaWN0XG4iCisiaWYgaXQgcG9pbnRzIHRvIGEgZGVhZCB3ZWFrcmVmLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorcmVtb3ZlX2RlYWRfd2Vha3JlZihQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmRjdCwgKmtleTsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyFPOl9yZW1vdmVfZGVhZF93ZWFrcmVmIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5RGljdF9UeXBlLCAmZGN0LCAma2V5KSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKF9QeURpY3RfRGVsSXRlbUlmKGRjdCwga2V5LCBpc19kZWFkX3dlYWtyZWYpIDwgMCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCisgICAgICAgICAgICAvKiBUaGlzIGZ1bmN0aW9uIGlzIG1lYW50IHRvIGFsbG93IHNhZmUgd2Vhay12YWx1ZSBkaWN0cworICAgICAgICAgICAgICAgd2l0aCBHQyBpbiBhbm90aGVyIHRocmVhZCAoc2VlIGlzc3VlICMyODQyNyksIHNvIGl0J3MKKyAgICAgICAgICAgICAgIG9rIGlmIHRoZSBrZXkgZG9lc24ndCBleGlzdCBhbnltb3JlLgorICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCiBQeURvY19TVFJWQVIod2Vha3JlZl9nZXR3ZWFrcmVmY291bnRfX2RvY19fLAogImdldHdlYWtyZWZjb3VudChvYmplY3QpIC0tIHJldHVybiB0aGUgbnVtYmVyIG9mIHdlYWsgcmVmZXJlbmNlc1xuIgogInRvICdvYmplY3QnLiIpOwpAQCAtODQsNiArMTIxLDggQEAKICAgICAgd2Vha3JlZl9nZXR3ZWFrcmVmc19fZG9jX199LAogICAgIHsicHJveHkiLCAgICAgICAgICAgd2Vha3JlZl9wcm94eSwgICAgICAgICAgICAgICAgICBNRVRIX1ZBUkFSR1MsCiAgICAgIHdlYWtyZWZfcHJveHlfX2RvY19ffSwKKyAgICB7Il9yZW1vdmVfZGVhZF93ZWFrcmVmIiwgcmVtb3ZlX2RlYWRfd2Vha3JlZiwgICAgICAgTUVUSF9WQVJBUkdTLAorICAgICByZW1vdmVfZGVhZF93ZWFrcmVmX19kb2NfX30sCiAgICAge05VTEwsIE5VTEwsIDAsIE5VTEx9CiB9OwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2FycmF5bW9kdWxlLmMgYi9Nb2R1bGVzL2FycmF5bW9kdWxlLmMKaW5kZXggOTgxOTE0MS4uNWJkM2E0MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9hcnJheW1vZHVsZS5jCisrKyBiL01vZHVsZXMvYXJyYXltb2R1bGUuYwpAQCAtMTI5Miw5ICsxMjkyLDkgQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFyZyBtdXN0IGJlIG9wZW4gZmlsZSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHNlbGYtPm9iX3NpemUgPiAwKSB7CisgICAgaWYgKFB5X1NJWkUoc2VsZikgPiAwKSB7CiAgICAgICAgIGlmIChmd3JpdGUoc2VsZi0+b2JfaXRlbSwgc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplLAotICAgICAgICAgICAgICAgICAgIHNlbGYtPm9iX3NpemUsIGZwKSAhPSAoc2l6ZV90KXNlbGYtPm9iX3NpemUpIHsKKyAgICAgICAgICAgICAgICAgICBQeV9TSVpFKHNlbGYpLCBmcCkgIT0gKHNpemVfdClQeV9TSVpFKHNlbGYpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7CiAgICAgICAgICAgICBjbGVhcmVycihmcCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzNDgsNyArMTM0OCw3IEBACiAgICAgICAgICAgICBpZiAoKCpzZWxmLT5vYl9kZXNjci0+c2V0aXRlbSkoc2VsZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9TSVpFKHNlbGYpIC0gbiArIGksIHYpICE9IDApIHsKICAgICAgICAgICAgICAgICBQeV9TSVpFKHNlbGYpIC09IG47Ci0gICAgICAgICAgICAgICAgaWYgKGl0ZW1zaXplICYmIChzZWxmLT5vYl9zaXplID4gUFlfU1NJWkVfVF9NQVggLyBpdGVtc2l6ZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXRlbXNpemUgJiYgKFB5X1NJWkUoc2VsZikgPiBQWV9TU0laRV9UX01BWCAvIGl0ZW1zaXplKSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlNZW1fUkVTSVpFKGl0ZW0sIGNoYXIsCkBAIC0xNDQ0LDcgKzE0NDQsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGFycmF5X3Rvc3RyaW5nKGFycmF5b2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdW51c2VkKQogewotICAgIGlmIChzZWxmLT5vYl9zaXplIDw9IFBZX1NTSVpFX1RfTUFYIC8gc2VsZi0+b2JfZGVzY3ItPml0ZW1zaXplKSB7CisgICAgaWYgKFB5X1NJWkUoc2VsZikgPD0gUFlfU1NJWkVfVF9NQVggLyBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemUpIHsKICAgICAgICAgcmV0dXJuIFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKHNlbGYtPm9iX2l0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfU0laRShzZWxmKSAqIHNlbGYtPm9iX2Rlc2NyLT5pdGVtc2l6ZSk7CiAgICAgfSBlbHNlIHsKQEAgLTE3MDEsMTAgKzE3MDEsMTEgQEAKICAgICAgICAgYXJyYXlvYmplY3QqIGFyOwogICAgICAgICBpbnQgaXRlbXNpemUgPSBzZWxmLT5vYl9kZXNjci0+aXRlbXNpemU7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0KilpdGVtLCBQeV9TSVpFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgeworICAgICAgICBpZiAoX1B5U2xpY2VfVW5wYWNrKGl0ZW0sICZzdGFydCwgJnN0b3AsICZzdGVwKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIHNsaWNlbGVuZ3RoID0gX1B5U2xpY2VfQWRqdXN0SW5kaWNlcyhQeV9TSVpFKHNlbGYpLCAmc3RhcnQsICZzdG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwKTsKIAogICAgICAgICBpZiAoc2xpY2VsZW5ndGggPD0gMCkgewogICAgICAgICAgICAgcmV0dXJuIG5ld2FycmF5b2JqZWN0KCZBcnJheXR5cGUsIDAsIHNlbGYtPm9iX2Rlc2NyKTsKQEAgLTE3NzIsMTEgKzE3NzMsMTEgQEAKICAgICAgICAgICAgIHJldHVybiAoKnNlbGYtPm9iX2Rlc2NyLT5zZXRpdGVtKShzZWxmLCBpLCB2YWx1ZSk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soaXRlbSkpIHsKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0ICopaXRlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NJWkUoc2VsZiksICZzdGFydCwgJnN0b3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKKyAgICAgICAgaWYgKF9QeVNsaWNlX1VucGFjayhpdGVtLCAmc3RhcnQsICZzdG9wLCAmc3RlcCkgPCAwKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KKyAgICAgICAgc2xpY2VsZW5ndGggPSBfUHlTbGljZV9BZGp1c3RJbmRpY2VzKFB5X1NJWkUoc2VsZiksICZzdGFydCwgJnN0b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXApOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKQEAgLTIyODgsOCArMjI4OSw4IEBACiB7CiAgICAgUHlPYmplY3QgKm07CiAKLSAgICBBcnJheXR5cGUub2JfdHlwZSA9ICZQeVR5cGVfVHlwZTsKLSAgICBQeUFycmF5SXRlcl9UeXBlLm9iX3R5cGUgPSAmUHlUeXBlX1R5cGU7CisgICAgUHlfVFlQRSgmQXJyYXl0eXBlKSA9ICZQeVR5cGVfVHlwZTsKKyAgICBQeV9UWVBFKCZQeUFycmF5SXRlcl9UeXBlKSA9ICZQeVR5cGVfVHlwZTsKICAgICBtID0gUHlfSW5pdE1vZHVsZTMoImFycmF5IiwgYV9tZXRob2RzLCBtb2R1bGVfZG9jKTsKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2F1ZGlvb3AuYyBiL01vZHVsZXMvYXVkaW9vcC5jCmluZGV4IGE0ZDEzNzUuLjkxZjU4NWMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvYXVkaW9vcC5jCisrKyBiL01vZHVsZXMvYXVkaW9vcC5jCkBAIC0yNSwxNyArMjUsMjUgQEAKICNlbmRpZgogCiBzdGF0aWMgY29uc3QgaW50IG1heHZhbHNbXSA9IHswLCAweDdGLCAweDdGRkYsIDB4N0ZGRkZGLCAweDdGRkZGRkZGfTsKLXN0YXRpYyBjb25zdCBpbnQgbWludmFsc1tdID0gezAsIC0weDgwLCAtMHg4MDAwLCAtMHg4MDAwMDAsIC0weDgwMDAwMDAwfTsKKy8qIC0xIHRyaWNrIGlzIG5lZWRlZCBvbiBXaW5kb3dzIHRvIHN1cHBvcnQgLTB4ODAwMDAwMDAgd2l0aG91dCBhIHdhcm5pbmcgKi8KK3N0YXRpYyBjb25zdCBpbnQgbWludmFsc1tdID0gezAsIC0weDgwLCAtMHg4MDAwLCAtMHg4MDAwMDAsIC0weDdGRkZGRkZGLTF9Owogc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtYXNrc1tdID0gezAsIDB4RkYsIDB4RkZGRiwgMHhGRkZGRkYsIDB4RkZGRkZGRkZ9OwogCiBzdGF0aWMgaW50CiBmYm91bmQoZG91YmxlIHZhbCwgZG91YmxlIG1pbnZhbCwgZG91YmxlIG1heHZhbCkKIHsKLSAgICBpZiAodmFsID4gbWF4dmFsKQorICAgIGlmICh2YWwgPiBtYXh2YWwpIHsKICAgICAgICAgdmFsID0gbWF4dmFsOwotICAgIGVsc2UgaWYgKHZhbCA8IG1pbnZhbCArIDEpCisgICAgfQorICAgIGVsc2UgaWYgKHZhbCA8IG1pbnZhbCArIDEuMCkgewogICAgICAgICB2YWwgPSBtaW52YWw7Ci0gICAgcmV0dXJuIHZhbDsKKyAgICB9CisKKyAgICAvKiBSb3VuZCB0b3dhcmRzIG1pbnVzIGluZmluaXR5ICgtaW5mKSAqLworICAgIHZhbCA9IGZsb29yKHZhbCk7CisKKyAgICAvKiBDYXN0IGRvdWJsZSB0byBpbnRlZ2VyOiByb3VuZCB0b3dhcmRzIHplcm8gKi8KKyAgICByZXR1cm4gKGludCl2YWw7CiB9CiAKIApAQCAtMzg2LDcgKzM5NCw5IEBACiAgICAgc2lnbmVkIGNoYXIgKmNwOwogICAgIGludCBsZW4sIHNpemUsIHZhbCA9IDA7CiAgICAgaW50IGk7Ci0gICAgaW50IG1pbiA9IDB4N2ZmZmZmZmYsIG1heCA9IC0weDgwMDAwMDAwOworICAgIC8qIC0xIHRyaWNrIGJlbG93IGlzIG5lZWRlZCBvbiBXaW5kb3dzIHRvIHN1cHBvcnQgLTB4ODAwMDAwMDAgd2l0aG91dAorICAgIGEgd2FybmluZyAqLworICAgIGludCBtaW4gPSAweDdmZmZmZmZmLCBtYXggPSAtMHg3RkZGRkZGRi0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJzI2k6bWlubWF4IiwgJmNwLCAmbGVuLCAmc2l6ZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNzkzLDggKzgwMyw4IEBACiAgICAgICAgIGlmICggc2l6ZSA9PSAxICkgICAgICB2YWwgPSAoaW50KSpDSEFSUChjcCwgaSk7CiAgICAgICAgIGVsc2UgaWYgKCBzaXplID09IDIgKSB2YWwgPSAoaW50KSpTSE9SVFAoY3AsIGkpOwogICAgICAgICBlbHNlIGlmICggc2l6ZSA9PSA0ICkgdmFsID0gKGludCkqTE9OR1AoY3AsIGkpOwotICAgICAgICBmdmFsID0gKGRvdWJsZSl2YWwqZmFjdG9yOwotICAgICAgICB2YWwgPSAoaW50KWZsb29yKGZib3VuZChmdmFsLCBtaW52YWwsIG1heHZhbCkpOworICAgICAgICBmdmFsID0gKGRvdWJsZSl2YWwgKiBmYWN0b3I7CisgICAgICAgIHZhbCA9IGZib3VuZChmdmFsLCBtaW52YWwsIG1heHZhbCk7CiAgICAgICAgIGlmICggc2l6ZSA9PSAxICkgICAgICAqQ0hBUlAobmNwLCBpKSA9IChzaWduZWQgY2hhcil2YWw7CiAgICAgICAgIGVsc2UgaWYgKCBzaXplID09IDIgKSAqU0hPUlRQKG5jcCwgaSkgPSAoc2hvcnQpdmFsOwogICAgICAgICBlbHNlIGlmICggc2l6ZSA9PSA0ICkgKkxPTkdQKG5jcCwgaSkgPSAoUHlfSW50MzIpdmFsOwpAQCAtODM3LDggKzg0Nyw4IEBACiAgICAgICAgIGlmICggc2l6ZSA9PSAxICkgICAgICB2YWwyID0gKGludCkqQ0hBUlAoY3AsIGkrMSk7CiAgICAgICAgIGVsc2UgaWYgKCBzaXplID09IDIgKSB2YWwyID0gKGludCkqU0hPUlRQKGNwLCBpKzIpOwogICAgICAgICBlbHNlIGlmICggc2l6ZSA9PSA0ICkgdmFsMiA9IChpbnQpKkxPTkdQKGNwLCBpKzQpOwotICAgICAgICBmdmFsID0gKGRvdWJsZSl2YWwxKmZhYzEgKyAoZG91YmxlKXZhbDIqZmFjMjsKLSAgICAgICAgdmFsMSA9IChpbnQpZmxvb3IoZmJvdW5kKGZ2YWwsIG1pbnZhbCwgbWF4dmFsKSk7CisgICAgICAgIGZ2YWwgPSAoZG91YmxlKXZhbDEgKiBmYWMxICsgKGRvdWJsZSl2YWwyICogZmFjMjsKKyAgICAgICAgdmFsMSA9IGZib3VuZChmdmFsLCBtaW52YWwsIG1heHZhbCk7CiAgICAgICAgIGlmICggc2l6ZSA9PSAxICkgICAgICAqQ0hBUlAobmNwLCBpLzIpID0gKHNpZ25lZCBjaGFyKXZhbDE7CiAgICAgICAgIGVsc2UgaWYgKCBzaXplID09IDIgKSAqU0hPUlRQKG5jcCwgaS8yKSA9IChzaG9ydCl2YWwxOwogICAgICAgICBlbHNlIGlmICggc2l6ZSA9PSA0ICkgKkxPTkdQKG5jcCwgaS8yKT0gKFB5X0ludDMyKXZhbDE7CkBAIC04ODEsMTEgKzg5MSwxMSBAQAogICAgICAgICBlbHNlIGlmICggc2l6ZSA9PSAyICkgdmFsID0gKGludCkqU0hPUlRQKGNwLCBpKTsKICAgICAgICAgZWxzZSBpZiAoIHNpemUgPT0gNCApIHZhbCA9IChpbnQpKkxPTkdQKGNwLCBpKTsKIAotICAgICAgICBmdmFsID0gKGRvdWJsZSl2YWwqZmFjMTsKLSAgICAgICAgdmFsMSA9IChpbnQpZmxvb3IoZmJvdW5kKGZ2YWwsIG1pbnZhbCwgbWF4dmFsKSk7CisgICAgICAgIGZ2YWwgPSAoZG91YmxlKXZhbCAqIGZhYzE7CisgICAgICAgIHZhbDEgPSBmYm91bmQoZnZhbCwgbWludmFsLCBtYXh2YWwpOwogCi0gICAgICAgIGZ2YWwgPSAoZG91YmxlKXZhbCpmYWMyOwotICAgICAgICB2YWwyID0gKGludClmbG9vcihmYm91bmQoZnZhbCwgbWludmFsLCBtYXh2YWwpKTsKKyAgICAgICAgZnZhbCA9IChkb3VibGUpdmFsICogZmFjMjsKKyAgICAgICAgdmFsMiA9IGZib3VuZChmdmFsLCBtaW52YWwsIG1heHZhbCk7CiAKICAgICAgICAgaWYgKCBzaXplID09IDEgKSAgICAgICpDSEFSUChuY3AsIGkqMikgPSAoc2lnbmVkIGNoYXIpdmFsMTsKICAgICAgICAgZWxzZSBpZiAoIHNpemUgPT0gMiApICpTSE9SVFAobmNwLCBpKjIpID0gKHNob3J0KXZhbDE7CkBAIC05NDQsNyArOTU0LDcgQEAKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBkb3VibGUgZnZhbCA9IChkb3VibGUpdmFsMSArIChkb3VibGUpdmFsMjsKICAgICAgICAgICAgIC8qIHRydW5jYXRlIGluIGNhc2Ugb2Ygb3ZlcmZsb3cgKi8KLSAgICAgICAgICAgIG5ld3ZhbCA9IChpbnQpZmxvb3IoZmJvdW5kKGZ2YWwsIG1pbnZhbCwgbWF4dmFsKSk7CisgICAgICAgICAgICBuZXd2YWwgPSBmYm91bmQoZnZhbCwgbWludmFsLCBtYXh2YWwpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCBzaXplID09IDEgKSAgICAgICpDSEFSUChuY3AsIGkpID0gKHNpZ25lZCBjaGFyKW5ld3ZhbDsKQEAgLTEwODYsNyArMTA5Niw3IEBACiAgICAgY2hhciAqY3AsICpuY3A7CiAgICAgaW50IGxlbiwgc2l6ZSwgbmNoYW5uZWxzLCBpbnJhdGUsIG91dHJhdGUsIHdlaWdodEEsIHdlaWdodEI7CiAgICAgaW50IGNoYW4sIGQsICpwcmV2X2ksICpjdXJfaSwgY3VyX287Ci0gICAgUHlPYmplY3QgKnN0YXRlLCAqc2FtcHMsICpzdHIsICpydiA9IE5VTEw7CisgICAgUHlPYmplY3QgKnN0YXRlLCAqc2FtcHMsICpzdHIsICpydiA9IE5VTEwsICpjaGFubmVsOwogICAgIGludCBieXRlc19wZXJfZnJhbWU7CiAKICAgICB3ZWlnaHRBID0gMTsKQEAgLTExNTIsNiArMTE2MiwxMCBAQAogICAgICAgICAgICAgcHJldl9pW2NoYW5dID0gY3VyX2lbY2hhbl0gPSAwOwogICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHN0YXRlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInN0YXRlIG11c3QgYmUgYSB0dXBsZSBvciBOb25lIik7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKHN0YXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgImlPITthdWRpb29wLnJhdGVjdjogaWxsZWdhbCBzdGF0ZSBhcmd1bWVudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAmZCwgJlB5VHVwbGVfVHlwZSwgJnNhbXBzKSkKQEAgLTExNjIsNyArMTE3NiwxMyBAQAogICAgICAgICAgICAgZ290byBleGl0OwogICAgICAgICB9CiAgICAgICAgIGZvciAoY2hhbiA9IDA7IGNoYW4gPCBuY2hhbm5lbHM7IGNoYW4rKykgewotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKFB5VHVwbGVfR2V0SXRlbShzYW1wcywgY2hhbiksCisgICAgICAgICAgICBjaGFubmVsID0gUHlUdXBsZV9HZXRJdGVtKHNhbXBzLCBjaGFuKTsKKyAgICAgICAgICAgIGlmICghUHlUdXBsZV9DaGVjayhjaGFubmVsKSkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyYXRlY3YoKTogaWxsZWdhbCBzdGF0ZSBhcmd1bWVudCIpOworICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShjaGFubmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpaTpyYXRlY3YiLCAmcHJldl9pW2NoYW5dLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY3VyX2lbY2hhbl0pKQogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvYmluYXNjaWkuYyBiL01vZHVsZXMvYmluYXNjaWkuYwppbmRleCAwNmFmNjBmLi4xZTc4NWZhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2JpbmFzY2lpLmMKKysrIGIvTW9kdWxlcy9iaW5hc2NpaS5jCkBAIC04NDIsNyArODQyLDcgQEAKIH0KIAogUHlEb2NfU1RSVkFSKGRvY19jcmNfaHF4LAotIihkYXRhLCBvbGRjcmMpIC0+IG5ld2NyYy4gQ29tcHV0ZSBocXggQ1JDIGluY3JlbWVudGFsbHkiKTsKKyIoZGF0YSwgb2xkY3JjKSAtPiBuZXdjcmMuIENvbXB1dGUgQ1JDLUNDSVRUIGluY3JlbWVudGFsbHkiKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJpbmFzY2lpX2NyY19ocXgoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9iejJtb2R1bGUuYyBiL01vZHVsZXMvYnoybW9kdWxlLmMKaW5kZXggZmU0MTdjNS4uODFmMTY4OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9iejJtb2R1bGUuYworKysgYi9Nb2R1bGVzL2J6Mm1vZHVsZS5jCkBAIC0xMzUzLDYgKzEzNTMsMzAgQEAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAvKiBTbG90IGRlZmluaXRpb25zIGZvciBCWjJGaWxlX1R5cGUuICovCitzdGF0aWMgaW50CitCWjJGaWxlX2NsZWFyKEJaMkZpbGVPYmplY3QgKnNlbGYpCit7CisgICAgaW50IGJ6ZXJyb3I7CisKKyAgICBBQ1FVSVJFX0xPQ0soc2VsZik7CisgICAgc3dpdGNoIChzZWxmLT5tb2RlKSB7CisgICAgICAgIGNhc2UgTU9ERV9SRUFEOgorICAgICAgICBjYXNlIE1PREVfUkVBRF9FT0Y6CisgICAgICAgICAgICBCWjJfYnpSZWFkQ2xvc2UoJmJ6ZXJyb3IsIHNlbGYtPmZwKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1PREVfV1JJVEU6CisgICAgICAgICAgICBCWjJfYnpXcml0ZUNsb3NlKCZiemVycm9yLCBzZWxmLT5mcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKHNlbGYtPmZwICE9IE5VTEwgJiYgc2VsZi0+ZmlsZSAhPSBOVUxMKQorICAgICAgICBQeUZpbGVfRGVjVXNlQ291bnQoKFB5RmlsZU9iamVjdCAqKXNlbGYtPmZpbGUpOworICAgIHNlbGYtPmZwID0gTlVMTDsKKyAgICBVdGlsX0Ryb3BSZWFkQWhlYWQoc2VsZik7CisgICAgUHlfQ0xFQVIoc2VsZi0+ZmlsZSk7CisgICAgUkVMRUFTRV9MT0NLKHNlbGYpOworICAgIHJldHVybiAwOworfQogCiBzdGF0aWMgaW50CiBCWjJGaWxlX2luaXQoQloyRmlsZU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCkBAIC0xNDIwLDYgKzE0NDQsMTkgQEAKIAogICAgIG1vZGUgPSAobW9kZV9jaGFyID09ICdyJykgPyAicmIiIDogIndiIjsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgaWYgKCFzZWxmLT5sb2NrKSB7CisgICAgICAgIHNlbGYtPmxvY2sgPSBQeVRocmVhZF9hbGxvY2F0ZV9sb2NrKCk7CisgICAgfQorICAgIAorICAgIGlmICghc2VsZi0+bG9jaykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsICJ1bmFibGUgdG8gYWxsb2NhdGUgbG9jayIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyNlbmRpZgorCisgICAgQloyRmlsZV9jbGVhcihzZWxmKTsKKwogICAgIHNlbGYtPmZpbGUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24oKFB5T2JqZWN0KikmUHlGaWxlX1R5cGUsICIoT3NpKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBtb2RlLCBidWZmZXJpbmcpOwogICAgIGlmIChzZWxmLT5maWxlID09IE5VTEwpCkBAIC0xNDI4LDE0ICsxNDY1LDYgQEAKICAgICAvKiBGcm9tIG5vdyBvbiwgd2UgaGF2ZSBzdHVmZiB0byBkZWFsbG9jLCBzbyBqdW1wIHRvIGVycm9yIGxhYmVsCiAgICAgICogaW5zdGVhZCBvZiByZXR1cm5pbmcgKi8KIAotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgc2VsZi0+bG9jayA9IFB5VGhyZWFkX2FsbG9jYXRlX2xvY2soKTsKLSAgICBpZiAoIXNlbGYtPmxvY2spIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLCAidW5hYmxlIHRvIGFsbG9jYXRlIGxvY2siKTsKLSAgICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0jZW5kaWYKLQogICAgIGlmIChtb2RlX2NoYXIgPT0gJ3InKQogICAgICAgICBzZWxmLT5mcCA9IEJaMl9ielJlYWRPcGVuKCZiemVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RmlsZV9Bc0ZpbGUoc2VsZi0+ZmlsZSksCkBAIC0xNDY5LDI2ICsxNDk4LDExIEBACiBzdGF0aWMgdm9pZAogQloyRmlsZV9kZWFsbG9jKEJaMkZpbGVPYmplY3QgKnNlbGYpCiB7Ci0gICAgaW50IGJ6ZXJyb3I7CisgICAgQloyRmlsZV9jbGVhcihzZWxmKTsKICNpZmRlZiBXSVRIX1RIUkVBRAogICAgIGlmIChzZWxmLT5sb2NrKQogICAgICAgICBQeVRocmVhZF9mcmVlX2xvY2soc2VsZi0+bG9jayk7CiAjZW5kaWYKLSAgICBzd2l0Y2ggKHNlbGYtPm1vZGUpIHsKLSAgICAgICAgY2FzZSBNT0RFX1JFQUQ6Ci0gICAgICAgIGNhc2UgTU9ERV9SRUFEX0VPRjoKLSAgICAgICAgICAgIEJaMl9ielJlYWRDbG9zZSgmYnplcnJvciwgc2VsZi0+ZnApOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTU9ERV9XUklURToKLSAgICAgICAgICAgIEJaMl9ieldyaXRlQ2xvc2UoJmJ6ZXJyb3IsIHNlbGYtPmZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBOVUxMLCBOVUxMKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoc2VsZi0+ZnAgIT0gTlVMTCAmJiBzZWxmLT5maWxlICE9IE5VTEwpCi0gICAgICAgIFB5RmlsZV9EZWNVc2VDb3VudCgoUHlGaWxlT2JqZWN0ICopc2VsZi0+ZmlsZSk7Ci0gICAgc2VsZi0+ZnAgPSBOVUxMOwotICAgIFV0aWxfRHJvcFJlYWRBaGVhZChzZWxmKTsKLSAgICBQeV9YREVDUkVGKHNlbGYtPmZpbGUpOwogICAgIFB5X1RZUEUoc2VsZiktPnRwX2ZyZWUoKFB5T2JqZWN0ICopc2VsZik7CiB9CiAKQEAgLTE1NzQsNyArMTU4OCw3IEBACiAgICAgUHlfVFBGTEFHU19ERUZBVUxUfFB5X1RQRkxBR1NfQkFTRVRZUEUsIC8qdHBfZmxhZ3MqLwogICAgIEJaMkZpbGVfX2RvY19fLCAgICAgICAgIC8qdHBfZG9jKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3RyYXZlcnNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX2NsZWFyKi8KKyAgICAoaW5xdWlyeSlCWjJGaWxlX2NsZWFyLCAvKnRwX2NsZWFyKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3JpY2hjb21wYXJlKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAvKnRwX3dlYWtsaXN0b2Zmc2V0Ki8KICAgICAoZ2V0aXRlcmZ1bmMpQloyRmlsZV9nZXRpdGVyLCAvKnRwX2l0ZXIqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jUGlja2xlLmMgYi9Nb2R1bGVzL2NQaWNrbGUuYwppbmRleCA4NDVhZDhmLi45MTRlYmIzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NQaWNrbGUuYworKysgYi9Nb2R1bGVzL2NQaWNrbGUuYwpAQCAtNzc4LDcgKzc3OCw3IEBACiAgICAgICAgICAgICBzWzFdID0gKGludCkoY192YWx1ZSAmIDB4ZmYpOwogICAgICAgICAgICAgbGVuID0gMjsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKKyAgICAgICAgZWxzZSBpZiAoY192YWx1ZSA8IDB4N2ZmZmZmZmZMKSB7CiAgICAgICAgICAgICBzWzBdID0gTE9OR19CSU5HRVQ7CiAgICAgICAgICAgICBzWzFdID0gKGludCkoY192YWx1ZSAmIDB4ZmYpOwogICAgICAgICAgICAgc1syXSA9IChpbnQpKChjX3ZhbHVlID4+IDgpICAmIDB4ZmYpOwpAQCAtNzg2LDYgKzc4NiwxMSBAQAogICAgICAgICAgICAgc1s0XSA9IChpbnQpKChjX3ZhbHVlID4+IDI0KSAmIDB4ZmYpOwogICAgICAgICAgICAgbGVuID0gNTsKICAgICAgICAgfQorICAgICAgICBlbHNlIHsgLyogdW5saWtlbHkgKi8KKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQaWNrbGluZ0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vIGlkIHRvbyBsYXJnZSBmb3IgTE9OR19CSU5HRVQiKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChzZWxmLT53cml0ZV9mdW5jKHNlbGYsIHMsIGxlbikgPCAwKQpAQCAtODU3LDcgKzg2MiwxMiBAQAogICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBpZiAocCA+PSAyNTYpIHsKKyAgICAgICAgaWYgKHAgPCAyNTYpIHsKKyAgICAgICAgICAgIGNfc3RyWzBdID0gQklOUFVUOworICAgICAgICAgICAgY19zdHJbMV0gPSBwOworICAgICAgICAgICAgbGVuID0gMjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChwIDwgMHg3ZmZmZmZmZkwpIHsKICAgICAgICAgICAgIGNfc3RyWzBdID0gTE9OR19CSU5QVVQ7CiAgICAgICAgICAgICBjX3N0clsxXSA9IChpbnQpKHAgJiAweGZmKTsKICAgICAgICAgICAgIGNfc3RyWzJdID0gKGludCkoKHAgPj4gOCkgICYgMHhmZik7CkBAIC04NjUsMTAgKzg3NSwxMCBAQAogICAgICAgICAgICAgY19zdHJbNF0gPSAoaW50KSgocCA+PiAyNCkgJiAweGZmKTsKICAgICAgICAgICAgIGxlbiA9IDU7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBjX3N0clswXSA9IEJJTlBVVDsKLSAgICAgICAgICAgIGNfc3RyWzFdID0gcDsKLSAgICAgICAgICAgIGxlbiA9IDI7CisgICAgICAgIGVsc2UgeyAvKiB1bmxpa2VseSAqLworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFBpY2tsaW5nRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW8gaWQgdG9vIGxhcmdlIGZvciBMT05HX0JJTlBVVCIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICB9CiAgICAgfQogCkBAIC0xMjY4LDE0ICsxMjc4LDE3IEBACiAgICAgICAgICAgICBjX3N0clsxXSA9IHNpemU7CiAgICAgICAgICAgICBsZW4gPSAyOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKHNpemUgPD0gSU5UX01BWCkgeworICAgICAgICBlbHNlIGlmIChzaXplIDw9IDB4N2ZmZmZmZmZMKSB7CiAgICAgICAgICAgICBjX3N0clswXSA9IEJJTlNUUklORzsKICAgICAgICAgICAgIGZvciAoaSA9IDE7IGkgPCA1OyBpKyspCiAgICAgICAgICAgICAgICAgY19zdHJbaV0gPSAoaW50KShzaXplID4+ICgoaSAtIDEpICogOCkpOwogICAgICAgICAgICAgbGVuID0gNTsKICAgICAgICAgfQotICAgICAgICBlbHNlCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBzZXJpYWxpemUgYSBzdHJpbmcgbGFyZ2VyIHRoYW4gMiBHaUIiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsgICAgLyogc3RyaW5nIHRvbyBsYXJnZSAqLworICAgICAgICB9CiAKICAgICAgICAgaWYgKHNlbGYtPndyaXRlX2Z1bmMoc2VsZiwgY19zdHIsIGxlbikgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTQzNiw4ICsxNDQ5LDExIEBACiAKICAgICAgICAgaWYgKChzaXplID0gUHlTdHJpbmdfU2l6ZShyZXByKSkgPCAwKQogICAgICAgICAgICAgZ290byBlcnI7Ci0gICAgICAgIGlmIChzaXplID4gSU5UX01BWCkKLSAgICAgICAgICAgIHJldHVybiAtMTsgICAvKiBzdHJpbmcgdG9vIGxhcmdlICovCisgICAgICAgIGlmIChzaXplID4gMHg3ZmZmZmZmZkwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3Qgc2VyaWFsaXplIGEgVW5pY29kZSBzdHJpbmcgbGFyZ2VyIHRoYW4gMiBHaUIiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyOyAgIC8qIHN0cmluZyB0b28gbGFyZ2UgKi8KKyAgICAgICAgfQogCiAgICAgICAgIGNfc3RyWzBdID0gQklOVU5JQ09ERTsKICAgICAgICAgZm9yIChpID0gMTsgaSA8IDU7IGkrKykKQEAgLTM4NzUsNTIgKzM4OTEsMjIgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBJbnN0YW5jZV9OZXcoUHlPYmplY3QgKmNscywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnIgPSAwOwotCiAgICAgaWYgKFB5Q2xhc3NfQ2hlY2soY2xzKSkgewogICAgICAgICBpbnQgbDsKIAotICAgICAgICBpZiAoKGw9UHlPYmplY3RfU2l6ZShhcmdzKSkgPCAwKSBnb3RvIGVycjsKKyAgICAgICAgaWYgKChsPVB5T2JqZWN0X1NpemUoYXJncykpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgICAgIGlmICghKCBsICkpICB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqX19nZXRpbml0YXJnc19fOwotCi0gICAgICAgICAgICBfX2dldGluaXRhcmdzX18gPSBQeU9iamVjdF9HZXRBdHRyKGNscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fZ2V0aW5pdGFyZ3NfX19zdHIpOwotICAgICAgICAgICAgaWYgKCFfX2dldGluaXRhcmdzX18pICB7CisgICAgICAgICAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHIoY2xzLCBfX2dldGluaXRhcmdzX19fc3RyKSkgIHsKICAgICAgICAgICAgICAgICAvKiBXZSBoYXZlIGEgY2xhc3Mgd2l0aCBubyBfX2dldGluaXRhcmdzX18sCiAgICAgICAgICAgICAgICAgICAgc28gYnlwYXNzIHVzdWFsIGNvbnN0cnVjdGlvbiAgKi8KLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW5zdDsKLQotICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKCEoIGluc3Q9UHlJbnN0YW5jZV9OZXdSYXcoY2xzLCBOVUxMKSkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyOwotICAgICAgICAgICAgICAgIHJldHVybiBpbnN0OworICAgICAgICAgICAgICAgIHJldHVybiBQeUluc3RhbmNlX05ld1JhdyhjbHMsIE5VTEwpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKF9fZ2V0aW5pdGFyZ3NfXyk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoKHI9UHlJbnN0YW5jZV9OZXcoY2xzLCBhcmdzLCBOVUxMKSkpIHJldHVybiByOwotICAgICAgICBlbHNlIGdvdG8gZXJyOworICAgICAgICByZXR1cm4gUHlJbnN0YW5jZV9OZXcoY2xzLCBhcmdzLCBOVUxMKTsKICAgICB9CiAKLSAgICBpZiAoKHI9UHlPYmplY3RfQ2FsbE9iamVjdChjbHMsIGFyZ3MpKSkgcmV0dXJuIHI7Ci0KLSAgZXJyOgotICAgIHsKLSAgICAgICAgUHlPYmplY3QgKnRwLCAqdiwgKnRiLCAqdG1wX3ZhbHVlOwotCi0gICAgICAgIFB5RXJyX0ZldGNoKCZ0cCwgJnYsICZ0Yik7Ci0gICAgICAgIHRtcF92YWx1ZSA9IHY7Ci0gICAgICAgIC8qIE5VTEwgb2NjdXJzIHdoZW4gdGhlcmUgd2FzIGEgS2V5Ym9hcmRJbnRlcnJ1cHQgKi8KLSAgICAgICAgaWYgKHRtcF92YWx1ZSA9PSBOVUxMKQotICAgICAgICAgICAgdG1wX3ZhbHVlID0gUHlfTm9uZTsKLSAgICAgICAgaWYgKChyID0gUHlUdXBsZV9QYWNrKDMsIHRtcF92YWx1ZSwgY2xzLCBhcmdzKSkpIHsKLSAgICAgICAgICAgIFB5X1hERUNSRUYodik7Ci0gICAgICAgICAgICB2PXI7Ci0gICAgICAgIH0KLSAgICAgICAgUHlFcnJfUmVzdG9yZSh0cCx2LHRiKTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIFB5T2JqZWN0X0NhbGxPYmplY3QoY2xzLCBhcmdzKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9fY29kZWNzX2NuLmMKaW5kZXggNmUwZDJjZS4uOTJjZjA2ZCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvX2NvZGVjc19jbi5jCisrKyBiL01vZHVsZXMvY2prY29kZWNzL19jb2RlY3NfY24uYwpAQCAtMjY2LDcgKzI2Niw5IEBACiAgICAgICAgICAgICBSRVFVSVJFX0lOQlVGKDQpCiAgICAgICAgICAgICBjMyA9IElOMzsKICAgICAgICAgICAgIGM0ID0gSU40OwotICAgICAgICAgICAgaWYgKGMgPCAweDgxIHx8IGMzIDwgMHg4MSB8fCBjNCA8IDB4MzAgfHwgYzQgPiAweDM5KQorICAgICAgICAgICAgaWYgKGMgIDwgMHg4MSB8fCBjICA+IDB4RkUgfHwKKyAgICAgICAgICAgICAgICBjMyA8IDB4ODEgfHwgYzMgPiAweEZFIHx8CisgICAgICAgICAgICAgICAgYzQgPCAweDMwIHx8IGM0ID4gMHgzOSkKICAgICAgICAgICAgICAgICByZXR1cm4gNDsKICAgICAgICAgICAgIGMgLT0gMHg4MTsgIGMyIC09IDB4MzA7CiAgICAgICAgICAgICBjMyAtPSAweDgxOyBjNCAtPSAweDMwOwpAQCAtMzMzLDE1ICszMzUsMTcgQEAKICAgICAgICAgREJDSEFSIGNvZGU7CiAKICAgICAgICAgaWYgKGMgPCAweDgwKSB7Ci0gICAgICAgICAgICBpZiAoc3RhdGUtPmkgPT0gMCkgewotICAgICAgICAgICAgICAgIFdSSVRFMSgodW5zaWduZWQgY2hhciljKQotICAgICAgICAgICAgICAgIE5FWFQoMSwgMSkKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIFdSSVRFMygnficsICd9JywgKHVuc2lnbmVkIGNoYXIpYykKLSAgICAgICAgICAgICAgICBORVhUKDEsIDMpCisgICAgICAgICAgICBpZiAoc3RhdGUtPmkpIHsKKyAgICAgICAgICAgICAgICBXUklURTIoJ34nLCAnfScpCisgICAgICAgICAgICAgICAgTkVYVF9PVVQoMikKICAgICAgICAgICAgICAgICBzdGF0ZS0+aSA9IDA7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBXUklURTEoKHVuc2lnbmVkIGNoYXIpYykKKyAgICAgICAgICAgIE5FWFQoMSwgMSkKKyAgICAgICAgICAgIGlmIChjID09ICd+JykgeworICAgICAgICAgICAgICAgIFdSSVRFMSgnficpCisgICAgICAgICAgICAgICAgTkVYVF9PVVQoMSkKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKQEAgLTM4OCwyMCArMzkyLDE5IEBACiAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIGMyID0gSU4yOwogCiAgICAgICAgICAgICBSRVFVSVJFX0lOQlVGKDIpCi0gICAgICAgICAgICBpZiAoYzIgPT0gJ34nKSB7CisgICAgICAgICAgICBpZiAoYzIgPT0gJ34nICYmIHN0YXRlLT5pID09IDApIHsKICAgICAgICAgICAgICAgICBXUklURTEoJ34nKQotICAgICAgICAgICAgICAgIE5FWFQoMiwgMSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBORVhUX09VVCgxKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYzIgPT0gJ3snICYmIHN0YXRlLT5pID09IDApCiAgICAgICAgICAgICAgICAgc3RhdGUtPmkgPSAxOyAvKiBzZXQgR0IgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGMyID09ICdcbicgJiYgc3RhdGUtPmkgPT0gMCkKKyAgICAgICAgICAgICAgICA7IC8qIGxpbmUtY29udGludWF0aW9uICovCiAgICAgICAgICAgICBlbHNlIGlmIChjMiA9PSAnfScgJiYgc3RhdGUtPmkgPT0gMSkKICAgICAgICAgICAgICAgICBzdGF0ZS0+aSA9IDA7IC8qIHNldCBBU0NJSSAqLwotICAgICAgICAgICAgZWxzZSBpZiAoYzIgPT0gJ1xuJykKLSAgICAgICAgICAgICAgICA7IC8qIGxpbmUtY29udGludWF0aW9uICovCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgICAgICBORVhUKDIsIDApOworICAgICAgICAgICAgTkVYVF9JTigyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYyBiL01vZHVsZXMvY2prY29kZWNzL211bHRpYnl0ZWNvZGVjLmMKaW5kZXggODcxMzYyOC4uNGI0ODJiZiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9jamtjb2RlY3MvbXVsdGlieXRlY29kZWMuYworKysgYi9Nb2R1bGVzL2Nqa2NvZGVjcy9tdWx0aWJ5dGVjb2RlYy5jCkBAIC0zMTAsOCArMzEwLDcgQEAKIAogICAgIGlmICghUHlUdXBsZV9DaGVjayhyZXRvYmopIHx8IFB5VHVwbGVfR0VUX1NJWkUocmV0b2JqKSAhPSAyIHx8CiAgICAgICAgICFQeVVuaWNvZGVfQ2hlY2soKHRvYmogPSBQeVR1cGxlX0dFVF9JVEVNKHJldG9iaiwgMCkpKSB8fAotICAgICAgICAhKFB5SW50X0NoZWNrKFB5VHVwbGVfR0VUX0lURU0ocmV0b2JqLCAxKSkgfHwKLSAgICAgICAgICBQeUxvbmdfQ2hlY2soUHlUdXBsZV9HRVRfSVRFTShyZXRvYmosIDEpKSkpIHsKKyAgICAgICAgIV9QeUFueUludF9DaGVjayhQeVR1cGxlX0dFVF9JVEVNKHJldG9iaiwgMSkpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiKHVuaWNvZGUsIGludCkgdHVwbGUiKTsKQEAgLTQzMCw4ICs0MjksNyBAQAogCiAgICAgaWYgKCFQeVR1cGxlX0NoZWNrKHJldG9iaikgfHwgUHlUdXBsZV9HRVRfU0laRShyZXRvYmopICE9IDIgfHwKICAgICAgICAgIVB5VW5pY29kZV9DaGVjaygocmV0dW5pID0gUHlUdXBsZV9HRVRfSVRFTShyZXRvYmosIDApKSkgfHwKLSAgICAgICAgIShQeUludF9DaGVjayhQeVR1cGxlX0dFVF9JVEVNKHJldG9iaiwgMSkpIHx8Ci0gICAgICAgICAgUHlMb25nX0NoZWNrKFB5VHVwbGVfR0VUX0lURU0ocmV0b2JqLCAxKSkpKSB7CisgICAgICAgICFfUHlBbnlJbnRfQ2hlY2soUHlUdXBsZV9HRVRfSVRFTShyZXRvYmosIDEpKSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImRlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gIgogICAgICAgICAgICAgICAgICAgICAgICAgIih1bmljb2RlLCBpbnQpIHR1cGxlIik7CkBAIC0xNjA0LDYgKzE2MDIsOSBAQAogICAgICAgICBpZiAociA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICAvKiBQeVNlcXVlbmNlX0xlbmd0aCgpIGNhbiBmYWlsICovCisgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgUHlfUkVUVVJOX05PTkU7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2NvbmZpZy5jIGIvTW9kdWxlcy9jb25maWcuYwppbmRleCA2N2EwYmM2Li4yMjU1MzQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2NvbmZpZy5jCisrKyBiL01vZHVsZXMvY29uZmlnLmMKQEAgLTU2LDYgKzU2LDcgQEAKIGV4dGVybiB2b2lkIGluaXRfY3N2KHZvaWQpOwogZXh0ZXJuIHZvaWQgaW5pdF9zb2NrZXQodm9pZCk7CiBleHRlcm4gdm9pZCBpbml0dGVybWlvcyh2b2lkKTsKK2V4dGVybiB2b2lkIGluaXRfc3NsKHZvaWQpOwogZXh0ZXJuIHZvaWQgaW5pdF9tZDUodm9pZCk7CiBleHRlcm4gdm9pZCBpbml0X3NoYSh2b2lkKTsKIGV4dGVybiB2b2lkIGluaXRfc2hhMjU2KHZvaWQpOwpAQCAtODAsNiArODEsOSBAQAogZXh0ZXJuIHZvaWQgaW5pdF9zcWxpdGUzKHZvaWQpOwogZXh0ZXJuIHZvaWQgaW5pdF9jdHlwZXModm9pZCk7CiBleHRlcm4gdm9pZCBpbml0X2N0eXBlc190ZXN0KHZvaWQpOworI2lmZGVmIF9fQVBQTEVfXworZXh0ZXJuIHZvaWQgaW5pdF9zY3Byb3h5KHZvaWQpOworI2VuZGlmCiAKIC8qIC0tIEFERE1PRFVMRSBNQVJLRVIgMSAtLSAqLwogCkBAIC0xMjQsNiArMTI4LDcgQEAKICAgICB7Il9jc3YiLCBpbml0X2Nzdn0sCiAgICAgeyJfc29ja2V0IiwgaW5pdF9zb2NrZXR9LAogICAgIHsidGVybWlvcyIsIGluaXR0ZXJtaW9zfSwKKyAgICB7Il9zc2wiLCBpbml0X3NzbH0sCiAgICAgeyJfbWQ1IiwgaW5pdF9tZDV9LAogICAgIHsiX3NoYSIsIGluaXRfc2hhfSwKICAgICB7Il9zaGEyNTYiLCBpbml0X3NoYTI1Nn0sCkBAIC0xNDgsNiArMTUzLDkgQEAKICAgICB7Il9zcWxpdGUzIiwgaW5pdF9zcWxpdGUzfSwKICAgICB7Il9jdHlwZXMiLCBpbml0X2N0eXBlc30sCiAgICAgeyJfY3R5cGVzX3Rlc3QiLCBpbml0X2N0eXBlc190ZXN0fSwKKyNpZmRlZiBfX0FQUExFX18KKyAgICB7Il9zY3Byb3h5IiwgaW5pdF9zY3Byb3h5fSwKKyNlbmRpZgogCiAvKiAtLSBBRERNT0RVTEUgTUFSS0VSIDIgLS0gKi8KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9kYXRldGltZW1vZHVsZS5jIGIvTW9kdWxlcy9kYXRldGltZW1vZHVsZS5jCmluZGV4IDQ1NzM2MzcuLmMwYjcxMDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZGF0ZXRpbWVtb2R1bGUuYworKysgYi9Nb2R1bGVzL2RhdGV0aW1lbW9kdWxlLmMKQEAgLTE1MzcsNiArMTUzNyw3IEBACiAgICAgaWYgKHgyID09IE5VTEwpCiAgICAgICAgIGdvdG8gRG9uZTsKICAgICByZXN1bHQgPSBQeU51bWJlcl9BZGQoeDEsIHgyKTsKKyAgICBhc3NlcnQocmVzdWx0ID09IE5VTEwgfHwgX1B5QW55SW50X0NoZWNrRXhhY3QocmVzdWx0KSk7CiAKIERvbmU6CiAgICAgUHlfWERFQ1JFRih4MSk7CkBAIC0xNTU5LDYgKzE1NjAsNyBAQAogICAgIFB5T2JqZWN0ICpudW0gPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogCisgICAgYXNzZXJ0KF9QeUFueUludF9DaGVja0V4YWN0KHB5dXMpKTsKICAgICB0dXBsZSA9IFB5TnVtYmVyX0Rpdm1vZChweXVzLCB1c19wZXJfc2Vjb25kKTsKICAgICBpZiAodHVwbGUgPT0gTlVMTCkKICAgICAgICAgZ290byBEb25lOwpAQCAtMTgwMSwxMSArMTgwMywxMSBAQAogCiAgICAgaWYgKFB5RGVsdGFfQ2hlY2sobGVmdCkpIHsKICAgICAgICAgLyogZGVsdGEgKiA/Pz8gKi8KLSAgICAgICAgaWYgKFB5SW50X0NoZWNrKHJpZ2h0KSB8fCBQeUxvbmdfQ2hlY2socmlnaHQpKQorICAgICAgICBpZiAoX1B5QW55SW50X0NoZWNrKHJpZ2h0KSkKICAgICAgICAgICAgIHJlc3VsdCA9IG11bHRpcGx5X2ludF90aW1lZGVsdGEocmlnaHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKikgbGVmdCk7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5SW50X0NoZWNrKGxlZnQpIHx8IFB5TG9uZ19DaGVjayhsZWZ0KSkKKyAgICBlbHNlIGlmIChfUHlBbnlJbnRfQ2hlY2sobGVmdCkpCiAgICAgICAgIHJlc3VsdCA9IG11bHRpcGx5X2ludF90aW1lZGVsdGEobGVmdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEYXRlVGltZV9EZWx0YSAqKSByaWdodCk7CiAKQEAgLTE4MjEsNyArMTgyMyw3IEBACiAKICAgICBpZiAoUHlEZWx0YV9DaGVjayhsZWZ0KSkgewogICAgICAgICAvKiBkZWx0YSAqID8/PyAqLwotICAgICAgICBpZiAoUHlJbnRfQ2hlY2socmlnaHQpIHx8IFB5TG9uZ19DaGVjayhyaWdodCkpCisgICAgICAgIGlmIChfUHlBbnlJbnRfQ2hlY2socmlnaHQpKQogICAgICAgICAgICAgcmVzdWx0ID0gZGl2aWRlX3RpbWVkZWx0YV9pbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5RGF0ZVRpbWVfRGVsdGEgKilsZWZ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0KTsKQEAgLTE4NTAsMTIgKzE4NTIsMTQgQEAKIAogICAgIGFzc2VydChudW0gIT0gTlVMTCk7CiAKLSAgICBpZiAoUHlJbnRfQ2hlY2sobnVtKSB8fCBQeUxvbmdfQ2hlY2sobnVtKSkgewotICAgICAgICBwcm9kID0gUHlOdW1iZXJfTXVsdGlwbHkobnVtLCBmYWN0b3IpOworICAgIGlmIChfUHlBbnlJbnRfQ2hlY2sobnVtKSkgeworICAgICAgICBwcm9kID0gUHlOdW1iZXJfTXVsdGlwbHkoZmFjdG9yLCBudW0pOwogICAgICAgICBpZiAocHJvZCA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGFzc2VydChfUHlBbnlJbnRfQ2hlY2tFeGFjdChwcm9kKSk7CiAgICAgICAgIHN1bSA9IFB5TnVtYmVyX0FkZChzb2ZhciwgcHJvZCk7CiAgICAgICAgIFB5X0RFQ1JFRihwcm9kKTsKKyAgICAgICAgYXNzZXJ0KHN1bSA9PSBOVUxMIHx8IF9QeUFueUludF9DaGVja0V4YWN0KHN1bSkpOwogICAgICAgICByZXR1cm4gc3VtOwogICAgIH0KIApAQCAtMTg5OCw3ICsxOTAyLDcgQEAKICAgICAgICAgICogZnJhY3Rpb25hbCBwYXJ0IHJlcXVpcmVzIGZsb2F0IGFyaXRobWV0aWMsIGFuZCBtYXkKICAgICAgICAgICogbG9zZSBhIGxpdHRsZSBpbmZvLgogICAgICAgICAgKi8KLSAgICAgICAgYXNzZXJ0KFB5SW50X0NoZWNrKGZhY3RvcikgfHwgUHlMb25nX0NoZWNrKGZhY3RvcikpOworICAgICAgICBhc3NlcnQoX1B5QW55SW50X0NoZWNrRXhhY3QoZmFjdG9yKSk7CiAgICAgICAgIGlmIChQeUludF9DaGVjayhmYWN0b3IpKQogICAgICAgICAgICAgZG51bSA9IChkb3VibGUpUHlJbnRfQXNMb25nKGZhY3Rvcik7CiAgICAgICAgIGVsc2UKQEAgLTE5MTYsNiArMTkyMCw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwogICAgICAgICBQeV9ERUNSRUYoeCk7CiAgICAgICAgICpsZWZ0b3ZlciArPSBmcmFjcGFydDsKKyAgICAgICAgYXNzZXJ0KHkgPT0gTlVMTCB8fCBfUHlBbnlJbnRfQ2hlY2tFeGFjdCh5KSk7CiAgICAgICAgIHJldHVybiB5OwogICAgIH0KIApAQCAtMzAzOSw4ICszMDQ0LDcgQEAKIFB5RG9jX1NUUigiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdGltZSB6b25lIGluZm8gb2JqZWN0cy4iKTsKIAogc3RhdGljaGVyZSBQeVR5cGVPYmplY3QgUHlEYXRlVGltZV9UWkluZm9UeXBlID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb2Jfc2l6ZSAqLworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgICJkYXRldGltZS50emluZm8iLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihQeURhdGVUaW1lX1RaSW5mbyksICAgICAgICAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwpAQCAtMzU2NCw4ICszNTY4LDcgQEAKIH07CiAKIHN0YXRpY2hlcmUgUHlUeXBlT2JqZWN0IFB5RGF0ZVRpbWVfVGltZVR5cGUgPSB7Ci0gICAgUHlPYmplY3RfSEVBRF9JTklUKE5VTEwpCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvYl9zaXplICovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgImRhdGV0aW1lLnRpbWUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKFB5RGF0ZVRpbWVfVGltZSksICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCkBAIC00NjkyLDggKzQ2OTUsNyBAQAogfTsKIAogc3RhdGljaGVyZSBQeVR5cGVPYmplY3QgUHlEYXRlVGltZV9EYXRlVGltZVR5cGUgPSB7Ci0gICAgUHlPYmplY3RfSEVBRF9JTklUKE5VTEwpCi0gICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvYl9zaXplICovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgImRhdGV0aW1lLmRhdGV0aW1lIiwgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uYW1lICovCiAgICAgc2l6ZW9mKFB5RGF0ZVRpbWVfRGF0ZVRpbWUpLCAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZW1zaXplICovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2RsbW9kdWxlLmMgYi9Nb2R1bGVzL2RsbW9kdWxlLmMKaW5kZXggZGZlY2Y5ZC4uM2YxNTA0OCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9kbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvZGxtb2R1bGUuYwpAQCAtMTA3LDggKzEwNywxMSBAQAogICAgIH0KICAgICBmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIFB5T2JqZWN0ICp2ID0gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIGkpOwotICAgICAgICBpZiAoUHlJbnRfQ2hlY2sodikpCisgICAgICAgIGlmIChfUHlBbnlJbnRfQ2hlY2sodikpIHsKICAgICAgICAgICAgIGFsaXN0W2ktMV0gPSBQeUludF9Bc0xvbmcodik7CisgICAgICAgICAgICBpZiAoYWxpc3RbaS0xXSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKFB5U3RyaW5nX0NoZWNrKHYpKQogICAgICAgICAgICAgYWxpc3RbaS0xXSA9IChsb25nKVB5U3RyaW5nX0FzU3RyaW5nKHYpOwogICAgICAgICBlbHNlIGlmICh2ID09IFB5X05vbmUpCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L0NPUFlJTkcgYi9Nb2R1bGVzL2V4cGF0L0NPUFlJTkcKaW5kZXggZGNiNDUwNi4uOGQyODhmMCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC9DT1BZSU5HCisrKyBiL01vZHVsZXMvZXhwYXQvQ09QWUlORwpAQCAtMSw2ICsxLDUgQEAKLUNvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgQ2xhcmsgQ29vcGVyCi1Db3B5cmlnaHQgKGMpIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgRXhwYXQgbWFpbnRhaW5lcnMuCitDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQgYW5kIENsYXJrIENvb3BlcgorQ29weXJpZ2h0IChjKSAyMDAxLTIwMTcgRXhwYXQgbWFpbnRhaW5lcnMKIAogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvYW1pZ2Fjb25maWcuaCBiL01vZHVsZXMvZXhwYXQvYW1pZ2Fjb25maWcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODZjNjExNS4uMDAwMDAwMAotLS0gYS9Nb2R1bGVzL2V4cGF0L2FtaWdhY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0jaWZuZGVmIEFNSUdBQ09ORklHX0gKLSNkZWZpbmUgQU1JR0FDT05GSUdfSAotCi0vKiAxMjM0ID0gTElMX0VORElBTiwgNDMyMSA9IEJJR0VORElBTiAqLwotI2RlZmluZSBCWVRFT1JERVIgNDMyMQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGJjb3B5JyBmdW5jdGlvbi4gKi8KLSNkZWZpbmUgSEFWRV9CQ09QWSAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Y2hlY2suaD4gaGVhZGVyIGZpbGUuICovCi0jdW5kZWYgSEFWRV9DSEVDS19ICi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtbW92ZScgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfTUVNTU9WRSAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKLQotLyogd2hldGhlciBieXRlb3JkZXIgaXMgYmlnZW5kaWFuICovCi0jZGVmaW5lIFdPUkRTX0JJR0VORElBTgotCi0vKiBEZWZpbmUgdG8gc3BlY2lmeSBob3cgbXVjaCBjb250ZXh0IHRvIHJldGFpbiBhcm91bmQgdGhlIGN1cnJlbnQgcGFyc2UKLSAgIHBvaW50LiAqLwotI2RlZmluZSBYTUxfQ09OVEVYVF9CWVRFUyAxMDI0Ci0KLS8qIERlZmluZSB0byBtYWtlIHBhcmFtZXRlciBlbnRpdHkgcGFyc2luZyBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZS4gKi8KLSNkZWZpbmUgWE1MX0RURAotCi0vKiBEZWZpbmUgdG8gbWFrZSBYTUwgTmFtZXNwYWNlcyBmdW5jdGlvbmFsaXR5IGF2YWlsYWJsZS4gKi8KLSNkZWZpbmUgWE1MX05TCi0KLSNlbmRpZiAgLyogQU1JR0FDT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9hc2NpaS5oIGIvTW9kdWxlcy9leHBhdC9hc2NpaS5oCmluZGV4IGQxMDUzMGIuLmMzNTg3ZTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvYXNjaWkuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2FzY2lpLmgKQEAgLTEsNSArMSwzMyBAQAotLyogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAotICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KKy8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18gIF9fICAgICAgICAgICAgXworICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1wgXC8gL18gX18gICBfXyBffCB8XworICAgICAgICAgICAgICAgICAgICAgICAgLyBfIFxcICAvfCAnXyBcIC8gX2AgfCBfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgX18vLyAgXHwgfF8pIHwgKF98IHwgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIFxfX18vXy9cX1wgLl9fLyBcX18sX3xcX198CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X3wgWE1MIHBhcnNlcgorCisgICBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMCBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKKyAgIENvcHlyaWdodCAoYykgMjAwMC0yMDE3IEV4cGF0IGRldmVsb3BtZW50IHRlYW0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKKworICAgUGVybWlzc2lvbiBpcyAgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSAgcGVyc29uIG9idGFpbmluZworICAgYSAgY29weSAgb2YgIHRoaXMgIHNvZnR3YXJlICAgYW5kICBhc3NvY2lhdGVkICBkb2N1bWVudGF0aW9uICBmaWxlcyAgKHRoZQorICAgIlNvZnR3YXJlIiksICB0byAgZGVhbCBpbiAgdGhlICBTb2Z0d2FyZSAgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZworICAgd2l0aG91dCAgbGltaXRhdGlvbiB0aGUgIHJpZ2h0cyAgdG8gdXNlLCAgY29weSwgIG1vZGlmeSwgbWVyZ2UsICBwdWJsaXNoLAorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorICAgcGVyc29ucyAgdG8gd2hvbSAgdGhlIFNvZnR3YXJlICBpcyAgZnVybmlzaGVkIHRvICBkbyBzbywgIHN1YmplY3QgdG8gIHRoZQorICAgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgIG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAgc2hhbGwgYmUgaW5jbHVkZWQKKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICBUSEUgIFNPRlRXQVJFICBJUyAgUFJPVklERUQgICJBUyAgSVMiLCAgV0lUSE9VVCAgV0FSUkFOVFkgIE9GICBBTlkgIEtJTkQsCisgICBFWFBSRVNTICBPUiBJTVBMSUVELCAgSU5DTFVESU5HICBCVVQgIE5PVCBMSU1JVEVEICBUTyAgVEhFIFdBUlJBTlRJRVMgIE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOCisgICBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiAgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgICBEQU1BR0VTIE9SICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgIElOIEFOICBBQ1RJT04gT0YgQ09OVFJBQ1QsICBUT1JUIE9SCisgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCisgICBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKi8KIAogI2RlZmluZSBBU0NJSV9BIDB4NDEKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvYXNjaWl0YWIuaCBiL01vZHVsZXMvZXhwYXQvYXNjaWl0YWIuaAppbmRleCA3OWExNWMyLi4yZjU5ZmQ5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L2FzY2lpdGFiLmgKKysrIGIvTW9kdWxlcy9leHBhdC9hc2NpaXRhYi5oCkBAIC0xLDUgKzEsMzMgQEAKLS8qIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKLSAgIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBjb3B5aW5nIHBlcm1pc3Npb24uCisvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fICBfXyAgICAgICAgICAgIF8KKyAgICAgICAgICAgICAgICAgICAgICAgICBfX19cIFwvIC9fIF9fICAgX18gX3wgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8gXyBcXCAgL3wgJ18gXCAvIF9gIHwgX198CisgICAgICAgICAgICAgICAgICAgICAgIHwgIF9fLy8gIFx8IHxfKSB8IChffCB8IHxfCisgICAgICAgICAgICAgICAgICAgICAgICBcX19fL18vXF9cIC5fXy8gXF9fLF98XF9ffAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF98IFhNTCBwYXJzZXIKKworICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDAgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCisgICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxNyBFeHBhdCBkZXZlbG9wbWVudCB0ZWFtCisgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CisKKyAgIFBlcm1pc3Npb24gaXMgIGhlcmVieSBncmFudGVkLCAgZnJlZSBvZiBjaGFyZ2UsICB0byBhbnkgIHBlcnNvbiBvYnRhaW5pbmcKKyAgIGEgIGNvcHkgIG9mICB0aGlzICBzb2Z0d2FyZSAgIGFuZCAgYXNzb2NpYXRlZCAgZG9jdW1lbnRhdGlvbiAgZmlsZXMgICh0aGUKKyAgICJTb2Z0d2FyZSIpLCAgdG8gIGRlYWwgaW4gIHRoZSAgU29mdHdhcmUgIHdpdGhvdXQgcmVzdHJpY3Rpb24sICBpbmNsdWRpbmcKKyAgIHdpdGhvdXQgIGxpbWl0YXRpb24gdGhlICByaWdodHMgIHRvIHVzZSwgIGNvcHksICBtb2RpZnksIG1lcmdlLCAgcHVibGlzaCwKKyAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKKyAgIHBlcnNvbnMgIHRvIHdob20gIHRoZSBTb2Z0d2FyZSAgaXMgIGZ1cm5pc2hlZCB0byAgZG8gc28sICBzdWJqZWN0IHRvICB0aGUKKyAgIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICBUaGUgYWJvdmUgY29weXJpZ2h0ICBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgIHNoYWxsIGJlIGluY2x1ZGVkCisgICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworICAgVEhFICBTT0ZUV0FSRSAgSVMgIFBST1ZJREVEICAiQVMgIElTIiwgIFdJVEhPVVQgIFdBUlJBTlRZICBPRiAgQU5ZICBLSU5ELAorICAgRVhQUkVTUyAgT1IgSU1QTElFRCwgIElOQ0xVRElORyAgQlVUICBOT1QgTElNSVRFRCAgVE8gIFRIRSBXQVJSQU5USUVTICBPRgorICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgorICAgTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICAgREFNQUdFUyBPUiAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSICBJTiBBTiAgQUNUSU9OIE9GIENPTlRSQUNULCAgVE9SVCBPUgorICAgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRQorICAgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICovCiAKIC8qIDB4MDAgKi8gQlRfTk9OWE1MLCBCVF9OT05YTUwsIEJUX05PTlhNTCwgQlRfTk9OWE1MLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9leHBhdC5oIGIvTW9kdWxlcy9leHBhdC9leHBhdC5oCmluZGV4IGU4ZWVmZGQuLjE3NGMzZmEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvZXhwYXQuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2V4cGF0LmgKQEAgLTEsNSArMSwzMyBAQAotLyogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAotICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KKy8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18gIF9fICAgICAgICAgICAgXworICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1wgXC8gL18gX18gICBfXyBffCB8XworICAgICAgICAgICAgICAgICAgICAgICAgLyBfIFxcICAvfCAnXyBcIC8gX2AgfCBfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgX18vLyAgXHwgfF8pIHwgKF98IHwgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIFxfX18vXy9cX1wgLl9fLyBcX18sX3xcX198CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X3wgWE1MIHBhcnNlcgorCisgICBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMCBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKKyAgIENvcHlyaWdodCAoYykgMjAwMC0yMDE3IEV4cGF0IGRldmVsb3BtZW50IHRlYW0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKKworICAgUGVybWlzc2lvbiBpcyAgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSAgcGVyc29uIG9idGFpbmluZworICAgYSAgY29weSAgb2YgIHRoaXMgIHNvZnR3YXJlICAgYW5kICBhc3NvY2lhdGVkICBkb2N1bWVudGF0aW9uICBmaWxlcyAgKHRoZQorICAgIlNvZnR3YXJlIiksICB0byAgZGVhbCBpbiAgdGhlICBTb2Z0d2FyZSAgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZworICAgd2l0aG91dCAgbGltaXRhdGlvbiB0aGUgIHJpZ2h0cyAgdG8gdXNlLCAgY29weSwgIG1vZGlmeSwgbWVyZ2UsICBwdWJsaXNoLAorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorICAgcGVyc29ucyAgdG8gd2hvbSAgdGhlIFNvZnR3YXJlICBpcyAgZnVybmlzaGVkIHRvICBkbyBzbywgIHN1YmplY3QgdG8gIHRoZQorICAgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgIG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAgc2hhbGwgYmUgaW5jbHVkZWQKKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICBUSEUgIFNPRlRXQVJFICBJUyAgUFJPVklERUQgICJBUyAgSVMiLCAgV0lUSE9VVCAgV0FSUkFOVFkgIE9GICBBTlkgIEtJTkQsCisgICBFWFBSRVNTICBPUiBJTVBMSUVELCAgSU5DTFVESU5HICBCVVQgIE5PVCBMSU1JVEVEICBUTyAgVEhFIFdBUlJBTlRJRVMgIE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOCisgICBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiAgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgICBEQU1BR0VTIE9SICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgIElOIEFOICBBQ1RJT04gT0YgQ09OVFJBQ1QsICBUT1JUIE9SCisgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCisgICBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKi8KIAogI2lmbmRlZiBFeHBhdF9JTkNMVURFRApAQCAtMjQsNyArNTIsNiBAQAogc3RydWN0IFhNTF9QYXJzZXJTdHJ1Y3Q7CiB0eXBlZGVmIHN0cnVjdCBYTUxfUGFyc2VyU3RydWN0ICpYTUxfUGFyc2VyOwogCi0vKiBTaG91bGQgdGhpcyBiZSBkZWZpbmVkIHVzaW5nIHN0ZGJvb2wuaCB3aGVuIEM5OSBpcyBhdmFpbGFibGU/ICovCiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgWE1MX0Jvb2w7CiAjZGVmaW5lIFhNTF9UUlVFICAgKChYTUxfQm9vbCkgMSkKICNkZWZpbmUgWE1MX0ZBTFNFICAoKFhNTF9Cb29sKSAwKQpAQCAtOTUsNyArMTIyLDkgQEAKICAgLyogQWRkZWQgaW4gMi4wLiAqLwogICBYTUxfRVJST1JfUkVTRVJWRURfUFJFRklYX1hNTCwKICAgWE1MX0VSUk9SX1JFU0VSVkVEX1BSRUZJWF9YTUxOUywKLSAgWE1MX0VSUk9SX1JFU0VSVkVEX05BTUVTUEFDRV9VUkkKKyAgWE1MX0VSUk9SX1JFU0VSVkVEX05BTUVTUEFDRV9VUkksCisgIC8qIEFkZGVkIGluIDIuMi4xLiAqLworICBYTUxfRVJST1JfSU5WQUxJRF9BUkdVTUVOVAogfTsKIAogZW51bSBYTUxfQ29udGVudF9UeXBlIHsKQEAgLTIzNSw3ICsyNjQsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqbmFtZXNwYWNlU2VwYXJhdG9yKTsKIAogLyogUHJlcGFyZSBhIHBhcnNlciBvYmplY3QgdG8gYmUgcmUtdXNlZC4gIFRoaXMgaXMgcGFydGljdWxhcmx5Ci0gICB2YWx1YWJsZSB3aGVuIG1lbW9yeSBhbGxvY2F0aW9uIG92ZXJoZWFkIGlzIGRpc3Byb3BvcnRpb25hdGx5IGhpZ2gsCisgICB2YWx1YWJsZSB3aGVuIG1lbW9yeSBhbGxvY2F0aW9uIG92ZXJoZWFkIGlzIGRpc3Byb3BvcnRpb25hdGVseSBoaWdoLAogICAgc3VjaCBhcyB3aGVuIGEgbGFyZ2UgbnVtYmVyIG9mIHNtYWxsIGRvY3VtbmVudHMgbmVlZCB0byBiZSBwYXJzZWQuCiAgICBBbGwgaGFuZGxlcnMgYXJlIGNsZWFyZWQgZnJvbSB0aGUgcGFyc2VyLCBleGNlcHQgZm9yIHRoZQogICAgdW5rbm93bkVuY29kaW5nSGFuZGxlci4gVGhlIHBhcnNlcidzIGV4dGVybmFsIHN0YXRlIGlzIHJlLWluaXRpYWxpemVkCkBAIC0zNDIsNyArMzcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfRW50aXR5RGVjbEhhbmRsZXIgaGFuZGxlcik7CiAKIC8qIE9CU09MRVRFIC0tIE9CU09MRVRFIC0tIE9CU09MRVRFCi0gICBUaGlzIGhhbmRsZXIgaGFzIGJlZW4gc3VwZXJjZWRlZCBieSB0aGUgRW50aXR5RGVjbEhhbmRsZXIgYWJvdmUuCisgICBUaGlzIGhhbmRsZXIgaGFzIGJlZW4gc3VwZXJzZWRlZCBieSB0aGUgRW50aXR5RGVjbEhhbmRsZXIgYWJvdmUuCiAgICBJdCBpcyBwcm92aWRlZCBoZXJlIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgogCiAgICBUaGlzIGlzIGNhbGxlZCBmb3IgYSBkZWNsYXJhdGlvbiBvZiBhbiB1bnBhcnNlZCAoTkRBVEEpIGVudGl0eS4KQEAgLTcwNiw2ICs3MzUsNyBAQAogICAgICBiZSBjYWxsZWQsIGRlc3BpdGUgYW4gZXh0ZXJuYWwgc3Vic2V0IGJlaW5nIHBhcnNlZC4KICAgIE5vdGU6IElmIFhNTF9EVEQgaXMgbm90IGRlZmluZWQgd2hlbiBFeHBhdCBpcyBjb21waWxlZCwgcmV0dXJucwogICAgICBYTUxfRVJST1JfRkVBVFVSRV9SRVFVSVJFU19YTUxfRFRELgorICAgTm90ZTogSWYgcGFyc2VyID09IE5VTEwsIHJldHVybnMgWE1MX0VSUk9SX0lOVkFMSURfQVJHVU1FTlQuCiAqLwogWE1MUEFSU0VBUEkoZW51bSBYTUxfRXJyb3IpCiBYTUxfVXNlRm9yZWlnbkRURChYTUxfUGFyc2VyIHBhcnNlciwgWE1MX0Jvb2wgdXNlRFREKTsKQEAgLTcyOSwxNSArNzU5LDE2IEBACiAgICB0byB0aGUgWE1MX1N0YXJ0RWxlbWVudEhhbmRsZXIgdGhhdCB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgc3RhcnQtdGFnCiAgICByYXRoZXIgdGhhbiBkZWZhdWx0ZWQuIEVhY2ggYXR0cmlidXRlL3ZhbHVlIHBhaXIgY291bnRzIGFzIDI7IHRodXMKICAgIHRoaXMgY29ycmVzcG9uZGRzIHRvIGFuIGluZGV4IGludG8gdGhlIGF0dHMgYXJyYXkgcGFzc2VkIHRvIHRoZQotICAgWE1MX1N0YXJ0RWxlbWVudEhhbmRsZXIuCisgICBYTUxfU3RhcnRFbGVtZW50SGFuZGxlci4gIFJldHVybnMgLTEgaWYgcGFyc2VyID09IE5VTEwuCiAqLwogWE1MUEFSU0VBUEkoaW50KQogWE1MX0dldFNwZWNpZmllZEF0dHJpYnV0ZUNvdW50KFhNTF9QYXJzZXIgcGFyc2VyKTsKIAogLyogUmV0dXJucyB0aGUgaW5kZXggb2YgdGhlIElEIGF0dHJpYnV0ZSBwYXNzZWQgaW4gdGhlIGxhc3QgY2FsbCB0bwotICAgWE1MX1N0YXJ0RWxlbWVudEhhbmRsZXIsIG9yIC0xIGlmIHRoZXJlIGlzIG5vIElEIGF0dHJpYnV0ZS4gIEVhY2gKLSAgIGF0dHJpYnV0ZS92YWx1ZSBwYWlyIGNvdW50cyBhcyAyOyB0aHVzIHRoaXMgY29ycmVzcG9uZGRzIHRvIGFuCi0gICBpbmRleCBpbnRvIHRoZSBhdHRzIGFycmF5IHBhc3NlZCB0byB0aGUgWE1MX1N0YXJ0RWxlbWVudEhhbmRsZXIuCisgICBYTUxfU3RhcnRFbGVtZW50SGFuZGxlciwgb3IgLTEgaWYgdGhlcmUgaXMgbm8gSUQgYXR0cmlidXRlIG9yCisgICBwYXJzZXIgPT0gTlVMTC4gIEVhY2ggYXR0cmlidXRlL3ZhbHVlIHBhaXIgY291bnRzIGFzIDI7IHRodXMgdGhpcworICAgY29ycmVzcG9uZGRzIHRvIGFuIGluZGV4IGludG8gdGhlIGF0dHMgYXJyYXkgcGFzc2VkIHRvIHRoZQorICAgWE1MX1N0YXJ0RWxlbWVudEhhbmRsZXIuCiAqLwogWE1MUEFSU0VBUEkoaW50KQogWE1MX0dldElkQXR0cmlidXRlSW5kZXgoWE1MX1BhcnNlciBwYXJzZXIpOwpAQCAtOTAxLDYgKzkzMiw3IEBACiAgICBlbnRpdGllcyBpcyByZXF1ZXN0ZWQ7IG90aGVyd2lzZSBpdCB3aWxsIHJldHVybiBub24temVyby4KICAgIE5vdGU6IElmIFhNTF9TZXRQYXJhbUVudGl0eVBhcnNpbmcgaXMgY2FsbGVkIGFmdGVyIFhNTF9QYXJzZSBvcgogICAgICAgWE1MX1BhcnNlQnVmZmVyLCB0aGVuIGl0IGhhcyBubyBlZmZlY3QgYW5kIHdpbGwgYWx3YXlzIHJldHVybiAwLgorICAgTm90ZTogSWYgcGFyc2VyID09IE5VTEwsIHRoZSBmdW5jdGlvbiB3aWxsIGRvIG5vdGhpbmcgYW5kIHJldHVybiAwLgogKi8KIFhNTFBBUlNFQVBJKGludCkKIFhNTF9TZXRQYXJhbUVudGl0eVBhcnNpbmcoWE1MX1BhcnNlciBwYXJzZXIsCkBAIC05MTAsMTMgKzk0MiwxMiBAQAogICAgSGVscHMgaW4gcHJldmVudGluZyBEb1MgYXR0YWNrcyBiYXNlZCBvbiBwcmVkaWN0aW5nIGhhc2gKICAgIGZ1bmN0aW9uIGJlaGF2aW9yLiBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBwYXJzaW5nIGlzIHN0YXJ0ZWQuCiAgICBSZXR1cm5zIDEgaWYgc3VjY2Vzc2Z1bCwgMCB3aGVuIGNhbGxlZCBhZnRlciBwYXJzaW5nIGhhcyBzdGFydGVkLgorICAgTm90ZTogSWYgcGFyc2VyID09IE5VTEwsIHRoZSBmdW5jdGlvbiB3aWxsIGRvIG5vdGhpbmcgYW5kIHJldHVybiAwLgogKi8KIFhNTFBBUlNFQVBJKGludCkKIFhNTF9TZXRIYXNoU2FsdChYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGhhc2hfc2FsdCk7CiAKLSNkZWZpbmUgWE1MX0hBU19TRVRfSEFTSF9TQUxUICAvKiBQeXRob24gT25seTogRGVmaW5lZCBmb3IgcHlleHBhdC5jLiAqLwotCiAvKiBJZiBYTUxfUGFyc2Ugb3IgWE1MX1BhcnNlQnVmZmVyIGhhdmUgcmV0dXJuZWQgWE1MX1NUQVRVU19FUlJPUiwgdGhlbgogICAgWE1MX0dldEVycm9yQ29kZSByZXR1cm5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBlcnJvci4KICovCkBAIC05MzgsNiArOTY5LDEwIEBACiAgICB0aGUgbG9jYXRpb24gaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjaGFyYWN0ZXIgYXQgd2hpY2ggdGhlIGVycm9yCiAgICB3YXMgZGV0ZWN0ZWQ7IG90aGVyd2lzZSB0aGUgbG9jYXRpb24gaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBsYXN0CiAgICBwYXJzZSBldmVudCwgYXMgZGVzY3JpYmVkIGFib3ZlLgorCisgICBOb3RlOiBYTUxfR2V0Q3VycmVudExpbmVOdW1iZXIgYW5kIFhNTF9HZXRDdXJyZW50Q29sdW1uTnVtYmVyCisgICByZXR1cm4gMCB0byBpbmRpY2F0ZSBhbiBlcnJvci4KKyAgIE5vdGU6IFhNTF9HZXRDdXJyZW50Qnl0ZUluZGV4IHJldHVybnMgLTEgdG8gaW5kaWNhdGUgYW4gZXJyb3IuCiAqLwogWE1MUEFSU0VBUEkoWE1MX1NpemUpIFhNTF9HZXRDdXJyZW50TGluZU51bWJlcihYTUxfUGFyc2VyIHBhcnNlcik7CiBYTUxQQVJTRUFQSShYTUxfU2l6ZSkgWE1MX0dldEN1cnJlbnRDb2x1bW5OdW1iZXIoWE1MX1BhcnNlciBwYXJzZXIpOwpAQCAtOTc1LDkgKzEwMTAsMTIgQEAKIAogLyogRXhwb3NpbmcgdGhlIG1lbW9yeSBoYW5kbGluZyBmdW5jdGlvbnMgdXNlZCBpbiBFeHBhdCAqLwogWE1MUEFSU0VBUEkodm9pZCAqKQorWE1MX0FUVFJfTUFMTE9DCitYTUxfQVRUUl9BTExPQ19TSVpFKDIpCiBYTUxfTWVtTWFsbG9jKFhNTF9QYXJzZXIgcGFyc2VyLCBzaXplX3Qgc2l6ZSk7CiAKIFhNTFBBUlNFQVBJKHZvaWQgKikKK1hNTF9BVFRSX0FMTE9DX1NJWkUoMykKIFhNTF9NZW1SZWFsbG9jKFhNTF9QYXJzZXIgcGFyc2VyLCB2b2lkICpwdHIsIHNpemVfdCBzaXplKTsKIAogWE1MUEFSU0VBUEkodm9pZCkKQEAgLTEwMzMsMTQgKzEwNzEsMTIgQEAKIFhNTF9HZXRGZWF0dXJlTGlzdCh2b2lkKTsKIAogCi0vKiBFeHBhdCBmb2xsb3dzIHRoZSBHTlUvTGludXggY29udmVudGlvbiBvZiBvZGQgbnVtYmVyIG1pbm9yIHZlcnNpb24gZm9yCi0gICBiZXRhL2RldmVsb3BtZW50IHJlbGVhc2VzIGFuZCBldmVuIG51bWJlciBtaW5vciB2ZXJzaW9uIGZvciBzdGFibGUKLSAgIHJlbGVhc2VzLiBNaWNybyBpcyBidW1wZWQgd2l0aCBlYWNoIHJlbGVhc2UsIGFuZCBzZXQgdG8gMCB3aXRoIGVhY2gKLSAgIGNoYW5nZSB0byBtYWpvciBvciBtaW5vciB2ZXJzaW9uLgorLyogRXhwYXQgZm9sbG93cyB0aGUgc2VtYW50aWMgdmVyc2lvbmluZyBjb252ZW50aW9uLgorICAgU2VlIGh0dHA6Ly9zZW12ZXIub3JnLgogKi8KICNkZWZpbmUgWE1MX01BSk9SX1ZFUlNJT04gMgotI2RlZmluZSBYTUxfTUlOT1JfVkVSU0lPTiAxCi0jZGVmaW5lIFhNTF9NSUNST19WRVJTSU9OIDEKKyNkZWZpbmUgWE1MX01JTk9SX1ZFUlNJT04gMgorI2RlZmluZSBYTUxfTUlDUk9fVkVSU0lPTiA2CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9leHBhdF9leHRlcm5hbC5oIGIvTW9kdWxlcy9leHBhdC9leHBhdF9leHRlcm5hbC5oCmluZGV4IGYzMzdlMWMuLjYyOTQ4M2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvZXhwYXRfZXh0ZXJuYWwuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2V4cGF0X2V4dGVybmFsLmgKQEAgLTEsNSArMSwzMyBAQAotLyogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAotICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KKy8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18gIF9fICAgICAgICAgICAgXworICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1wgXC8gL18gX18gICBfXyBffCB8XworICAgICAgICAgICAgICAgICAgICAgICAgLyBfIFxcICAvfCAnXyBcIC8gX2AgfCBfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgX18vLyAgXHwgfF8pIHwgKF98IHwgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIFxfX18vXy9cX1wgLl9fLyBcX18sX3xcX198CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X3wgWE1MIHBhcnNlcgorCisgICBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMCBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKKyAgIENvcHlyaWdodCAoYykgMjAwMC0yMDE3IEV4cGF0IGRldmVsb3BtZW50IHRlYW0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKKworICAgUGVybWlzc2lvbiBpcyAgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSAgcGVyc29uIG9idGFpbmluZworICAgYSAgY29weSAgb2YgIHRoaXMgIHNvZnR3YXJlICAgYW5kICBhc3NvY2lhdGVkICBkb2N1bWVudGF0aW9uICBmaWxlcyAgKHRoZQorICAgIlNvZnR3YXJlIiksICB0byAgZGVhbCBpbiAgdGhlICBTb2Z0d2FyZSAgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZworICAgd2l0aG91dCAgbGltaXRhdGlvbiB0aGUgIHJpZ2h0cyAgdG8gdXNlLCAgY29weSwgIG1vZGlmeSwgbWVyZ2UsICBwdWJsaXNoLAorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorICAgcGVyc29ucyAgdG8gd2hvbSAgdGhlIFNvZnR3YXJlICBpcyAgZnVybmlzaGVkIHRvICBkbyBzbywgIHN1YmplY3QgdG8gIHRoZQorICAgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgIG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAgc2hhbGwgYmUgaW5jbHVkZWQKKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICBUSEUgIFNPRlRXQVJFICBJUyAgUFJPVklERUQgICJBUyAgSVMiLCAgV0lUSE9VVCAgV0FSUkFOVFkgIE9GICBBTlkgIEtJTkQsCisgICBFWFBSRVNTICBPUiBJTVBMSUVELCAgSU5DTFVESU5HICBCVVQgIE5PVCBMSU1JVEVEICBUTyAgVEhFIFdBUlJBTlRJRVMgIE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOCisgICBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiAgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgICBEQU1BR0VTIE9SICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgIElOIEFOICBBQ1RJT04gT0YgQ09OVFJBQ1QsICBUT1JUIE9SCisgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCisgICBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKi8KIAogI2lmbmRlZiBFeHBhdF9FeHRlcm5hbF9JTkNMVURFRApAQCAtNywxMiArMzUsOCBAQAogCiAvKiBFeHRlcm5hbCBBUEkgZGVmaW5pdGlvbnMgKi8KIAotLyogTmFtZXNwYWNlIGV4dGVybmFsIHN5bWJvbHMgdG8gYWxsb3cgbXVsdGlwbGUgbGliZXhwYXQgdmVyc2lvbiB0bwotICAgY28tZXhpc3QuICovCi0jaW5jbHVkZSAicHlleHBhdG5zLmgiCi0KICNpZiBkZWZpbmVkKF9NU0NfRVhURU5TSU9OUykgJiYgIWRlZmluZWQoX19CRU9TX18pICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCi0jZGVmaW5lIFhNTF9VU0VfTVNDX0VYVEVOU0lPTlMgMQorIyBkZWZpbmUgWE1MX1VTRV9NU0NfRVhURU5TSU9OUyAxCiAjZW5kaWYKIAogLyogRXhwYXQgdHJpZXMgdmVyeSBoYXJkIHRvIG1ha2UgdGhlIEFQSSBib3VuZGFyeSB2ZXJ5IHNwZWNpZmljYWxseQpAQCAtMzgsMTEgKzYyLDExIEBACiAgICBzeXN0ZW0gaGVhZGVycyBtYXkgYXNzdW1lIHRoZSBjZGVjbCBjb252ZW50aW9uLgogKi8KICNpZm5kZWYgWE1MQ0FMTAotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jZGVmaW5lIFhNTENBTEwgX19jZGVjbAotI2VsaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgZGVmaW5lZChfX2kzODYpICYmICFkZWZpbmVkKF9fSU5URUxfQ09NUElMRVIpCi0jZGVmaW5lIFhNTENBTEwgX19hdHRyaWJ1dGVfXygoY2RlY2wpKQotI2Vsc2UKKyMgaWYgZGVmaW5lZChfTVNDX1ZFUikKKyMgIGRlZmluZSBYTUxDQUxMIF9fY2RlY2wKKyMgZWxpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiBkZWZpbmVkKF9faTM4NikgJiYgIWRlZmluZWQoX19JTlRFTF9DT01QSUxFUikKKyMgIGRlZmluZSBYTUxDQUxMIF9fYXR0cmlidXRlX18oKGNkZWNsKSkKKyMgZWxzZQogLyogRm9yIGFueSBwbGF0Zm9ybSB3aGljaCB1c2VzIHRoaXMgZGVmaW5pdGlvbiBhbmQgc3VwcG9ydHMgbW9yZSB0aGFuCiAgICBvbmUgY2FsbGluZyBjb252ZW50aW9uLCB3ZSBuZWVkIHRvIGV4dGVuZCB0aGlzIGRlZmluaXRpb24gdG8KICAgIGRlY2xhcmUgdGhlIGNvbnZlbnRpb24gdXNlZCBvbiB0aGF0IHBsYXRmb3JtLCBpZiBpdCdzIHBvc3NpYmxlIHRvCkBAIC01MywyOCArNzcsNDIgQEAKICAgIHByZS1wcm9jZXNzb3IgYW5kIGhvdyB0byBzcGVjaWZ5IHRoZSBzYW1lIGNhbGxpbmcgY29udmVudGlvbiBhcyB0aGUKICAgIHBsYXRmb3JtJ3MgbWFsbG9jKCkgaW1wbGVtZW50YXRpb24uCiAqLwotI2RlZmluZSBYTUxDQUxMCi0jZW5kaWYKKyMgIGRlZmluZSBYTUxDQUxMCisjIGVuZGlmCiAjZW5kaWYgIC8qIG5vdCBkZWZpbmVkIFhNTENBTEwgKi8KIAogCiAjaWYgIWRlZmluZWQoWE1MX1NUQVRJQykgJiYgIWRlZmluZWQoWE1MSU1QT1JUKQotI2lmbmRlZiBYTUxfQlVJTERJTkdfRVhQQVQKKyMgaWZuZGVmIFhNTF9CVUlMRElOR19FWFBBVAogLyogdXNpbmcgRXhwYXQgZnJvbSBhbiBhcHBsaWNhdGlvbiAqLwogCi0jaWZkZWYgWE1MX1VTRV9NU0NfRVhURU5TSU9OUwotI2RlZmluZSBYTUxJTVBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0jZW5kaWYKKyMgIGlmZGVmIFhNTF9VU0VfTVNDX0VYVEVOU0lPTlMKKyMgICBkZWZpbmUgWE1MSU1QT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQorIyAgZW5kaWYKIAotI2VuZGlmCisjIGVuZGlmCiAjZW5kaWYgIC8qIG5vdCBkZWZpbmVkIFhNTF9TVEFUSUMgKi8KIAorI2lmICFkZWZpbmVkKFhNTElNUE9SVCkgJiYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID49IDQpCisjIGRlZmluZSBYTUxJTVBPUlQgX19hdHRyaWJ1dGVfXyAoKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQorI2VuZGlmCiAKIC8qIElmIHdlIGRpZG4ndCBkZWZpbmUgaXQgYWJvdmUsIGRlZmluZSBpdCBhd2F5OiAqLwogI2lmbmRlZiBYTUxJTVBPUlQKLSNkZWZpbmUgWE1MSU1QT1JUCisjIGRlZmluZSBYTUxJTVBPUlQKICNlbmRpZgogCisjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NikpCisjIGRlZmluZSBYTUxfQVRUUl9NQUxMT0MgX19hdHRyaWJ1dGVfXygoX19tYWxsb2NfXykpCisjZWxzZQorIyBkZWZpbmUgWE1MX0FUVFJfTUFMTE9DCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoX19HTlVDX18gPiA0KSB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA+PSAzKSkKKyMgZGVmaW5lIFhNTF9BVFRSX0FMTE9DX1NJWkUoeCkgIF9fYXR0cmlidXRlX18oKF9fYWxsb2Nfc2l6ZV9fKHgpKSkKKyNlbHNlCisjIGRlZmluZSBYTUxfQVRUUl9BTExPQ19TSVpFKHgpCisjZW5kaWYKIAogI2RlZmluZSBYTUxQQVJTRUFQSSh0eXBlKSBYTUxJTVBPUlQgdHlwZSBYTUxDQUxMCiAKQEAgLTgzLDMwICsxMjEsMzUgQEAKICNlbmRpZgogCiAjaWZkZWYgWE1MX1VOSUNPREVfV0NIQVJfVAotI2RlZmluZSBYTUxfVU5JQ09ERQorIyBpZm5kZWYgWE1MX1VOSUNPREUKKyMgIGRlZmluZSBYTUxfVU5JQ09ERQorIyBlbmRpZgorIyBpZiBkZWZpbmVkKF9fU0laRU9GX1dDSEFSX1RfXykgJiYgKF9fU0laRU9GX1dDSEFSX1RfXyAhPSAyKQorIyAgZXJyb3IgInNpemVvZih3Y2hhcl90KSAhPSAyOyBOZWVkIC1mc2hvcnQtd2NoYXIgZm9yIGJvdGggRXhwYXQgYW5kIGxpYmMiCisjIGVuZGlmCiAjZW5kaWYKIAogI2lmZGVmIFhNTF9VTklDT0RFICAgICAvKiBJbmZvcm1hdGlvbiBpcyBVVEYtMTYgZW5jb2RlZC4gKi8KLSNpZmRlZiBYTUxfVU5JQ09ERV9XQ0hBUl9UCisjIGlmZGVmIFhNTF9VTklDT0RFX1dDSEFSX1QKIHR5cGVkZWYgd2NoYXJfdCBYTUxfQ2hhcjsKIHR5cGVkZWYgd2NoYXJfdCBYTUxfTENoYXI7Ci0jZWxzZQorIyBlbHNlCiB0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFhNTF9DaGFyOwogdHlwZWRlZiBjaGFyIFhNTF9MQ2hhcjsKLSNlbmRpZiAvKiBYTUxfVU5JQ09ERV9XQ0hBUl9UICovCisjIGVuZGlmIC8qIFhNTF9VTklDT0RFX1dDSEFSX1QgKi8KICNlbHNlICAgICAgICAgICAgICAgICAgLyogSW5mb3JtYXRpb24gaXMgVVRGLTggZW5jb2RlZC4gKi8KIHR5cGVkZWYgY2hhciBYTUxfQ2hhcjsKIHR5cGVkZWYgY2hhciBYTUxfTENoYXI7CiAjZW5kaWYgLyogWE1MX1VOSUNPREUgKi8KIAogI2lmZGVmIFhNTF9MQVJHRV9TSVpFICAvKiBVc2UgbGFyZ2UgaW50ZWdlcnMgZm9yIGZpbGUvc3RyZWFtIHBvc2l0aW9ucy4gKi8KLSNpZiBkZWZpbmVkKFhNTF9VU0VfTVNDX0VYVEVOU0lPTlMpICYmIF9NU0NfVkVSIDwgMTQwMAorIyBpZiBkZWZpbmVkKFhNTF9VU0VfTVNDX0VYVEVOU0lPTlMpICYmIF9NU0NfVkVSIDwgMTQwMAogdHlwZWRlZiBfX2ludDY0IFhNTF9JbmRleDsgCiB0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgWE1MX1NpemU7Ci0jZWxzZQorIyBlbHNlCiB0eXBlZGVmIGxvbmcgbG9uZyBYTUxfSW5kZXg7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBYTUxfU2l6ZTsKLSNlbmRpZgorIyBlbmRpZgogI2Vsc2UKIHR5cGVkZWYgbG9uZyBYTUxfSW5kZXg7CiB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgWE1MX1NpemU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L2lhc2NpaXRhYi5oIGIvTW9kdWxlcy9leHBhdC9pYXNjaWl0YWIuaAppbmRleCAyNGExZDVjLi5jZTRhNGJmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L2lhc2NpaXRhYi5oCisrKyBiL01vZHVsZXMvZXhwYXQvaWFzY2lpdGFiLmgKQEAgLTEsNSArMSwzMyBAQAotLyogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAotICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KKy8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18gIF9fICAgICAgICAgICAgXworICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1wgXC8gL18gX18gICBfXyBffCB8XworICAgICAgICAgICAgICAgICAgICAgICAgLyBfIFxcICAvfCAnXyBcIC8gX2AgfCBfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgX18vLyAgXHwgfF8pIHwgKF98IHwgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIFxfX18vXy9cX1wgLl9fLyBcX18sX3xcX198CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X3wgWE1MIHBhcnNlcgorCisgICBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMCBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKKyAgIENvcHlyaWdodCAoYykgMjAwMC0yMDE3IEV4cGF0IGRldmVsb3BtZW50IHRlYW0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKKworICAgUGVybWlzc2lvbiBpcyAgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSAgcGVyc29uIG9idGFpbmluZworICAgYSAgY29weSAgb2YgIHRoaXMgIHNvZnR3YXJlICAgYW5kICBhc3NvY2lhdGVkICBkb2N1bWVudGF0aW9uICBmaWxlcyAgKHRoZQorICAgIlNvZnR3YXJlIiksICB0byAgZGVhbCBpbiAgdGhlICBTb2Z0d2FyZSAgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZworICAgd2l0aG91dCAgbGltaXRhdGlvbiB0aGUgIHJpZ2h0cyAgdG8gdXNlLCAgY29weSwgIG1vZGlmeSwgbWVyZ2UsICBwdWJsaXNoLAorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorICAgcGVyc29ucyAgdG8gd2hvbSAgdGhlIFNvZnR3YXJlICBpcyAgZnVybmlzaGVkIHRvICBkbyBzbywgIHN1YmplY3QgdG8gIHRoZQorICAgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgIG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAgc2hhbGwgYmUgaW5jbHVkZWQKKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICBUSEUgIFNPRlRXQVJFICBJUyAgUFJPVklERUQgICJBUyAgSVMiLCAgV0lUSE9VVCAgV0FSUkFOVFkgIE9GICBBTlkgIEtJTkQsCisgICBFWFBSRVNTICBPUiBJTVBMSUVELCAgSU5DTFVESU5HICBCVVQgIE5PVCBMSU1JVEVEICBUTyAgVEhFIFdBUlJBTlRJRVMgIE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOCisgICBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiAgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgICBEQU1BR0VTIE9SICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgIElOIEFOICBBQ1RJT04gT0YgQ09OVFJBQ1QsICBUT1JUIE9SCisgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCisgICBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKi8KIAogLyogTGlrZSBhc2NpaXRhYi5oLCBleGNlcHQgdGhhdCAweEQgaGFzIGNvZGUgQlRfUyByYXRoZXIgdGhhbiBCVF9DUiAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9pbnRlcm5hbC5oIGIvTW9kdWxlcy9leHBhdC9pbnRlcm5hbC5oCmluZGV4IGRkNTQ1NDguLmUzM2ZkY2IgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQvaW50ZXJuYWwuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2ludGVybmFsLmgKQEAgLTE4LDYgKzE4LDM1IEBACiAKICAgIE5vdGU6IFVzZSBvZiB0aGVzZSBtYWNyb3MgaXMgYmFzZWQgb24ganVkZ2VtZW50LCBub3QgaGFyZCBydWxlcywKICAgICAgICAgIGFuZCB0aGVyZWZvcmUgc3ViamVjdCB0byBjaGFuZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18gIF9fICAgICAgICAgICAgXworICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1wgXC8gL18gX18gICBfXyBffCB8XworICAgICAgICAgICAgICAgICAgICAgICAgLyBfIFxcICAvfCAnXyBcIC8gX2AgfCBfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgX18vLyAgXHwgfF8pIHwgKF98IHwgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIFxfX18vXy9cX1wgLl9fLyBcX18sX3xcX198CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X3wgWE1MIHBhcnNlcgorCisgICBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMCBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKKyAgIENvcHlyaWdodCAoYykgMjAwMC0yMDE3IEV4cGF0IGRldmVsb3BtZW50IHRlYW0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKKworICAgUGVybWlzc2lvbiBpcyAgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSAgcGVyc29uIG9idGFpbmluZworICAgYSAgY29weSAgb2YgIHRoaXMgIHNvZnR3YXJlICAgYW5kICBhc3NvY2lhdGVkICBkb2N1bWVudGF0aW9uICBmaWxlcyAgKHRoZQorICAgIlNvZnR3YXJlIiksICB0byAgZGVhbCBpbiAgdGhlICBTb2Z0d2FyZSAgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZworICAgd2l0aG91dCAgbGltaXRhdGlvbiB0aGUgIHJpZ2h0cyAgdG8gdXNlLCAgY29weSwgIG1vZGlmeSwgbWVyZ2UsICBwdWJsaXNoLAorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorICAgcGVyc29ucyAgdG8gd2hvbSAgdGhlIFNvZnR3YXJlICBpcyAgZnVybmlzaGVkIHRvICBkbyBzbywgIHN1YmplY3QgdG8gIHRoZQorICAgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgIG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAgc2hhbGwgYmUgaW5jbHVkZWQKKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICBUSEUgIFNPRlRXQVJFICBJUyAgUFJPVklERUQgICJBUyAgSVMiLCAgV0lUSE9VVCAgV0FSUkFOVFkgIE9GICBBTlkgIEtJTkQsCisgICBFWFBSRVNTICBPUiBJTVBMSUVELCAgSU5DTFVESU5HICBCVVQgIE5PVCBMSU1JVEVEICBUTyAgVEhFIFdBUlJBTlRJRVMgIE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOCisgICBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiAgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgICBEQU1BR0VTIE9SICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgIElOIEFOICBBQ1RJT04gT0YgQ09OVFJBQ1QsICBUT1JUIE9SCisgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCisgICBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKi8KIAogI2lmIGRlZmluZWQoX19HTlVDX18pICYmIGRlZmluZWQoX19pMzg2X18pICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQpAQCAtNzEsMyArMTAwLDI1IEBACiAjZGVmaW5lIGlubGluZQogI2VuZGlmCiAjZW5kaWYKKworI2lmbmRlZiBVTlVTRURfUAorIyBpZmRlZiBfX0dOVUNfXworIyAgZGVmaW5lIFVOVVNFRF9QKHApIFVOVVNFRF8gIyMgcCBfX2F0dHJpYnV0ZV9fKChfX3VudXNlZF9fKSkKKyMgZWxzZQorIyAgZGVmaW5lIFVOVVNFRF9QKHApIFVOVVNFRF8gIyMgcAorIyBlbmRpZgorI2VuZGlmCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisKK3ZvaWQKK19JTlRFUk5BTF90cmltX3RvX2NvbXBsZXRlX3V0ZjhfY2hhcmFjdGVycyhjb25zdCBjaGFyICogZnJvbSwgY29uc3QgY2hhciAqKiBmcm9tTGltUmVmKTsKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9sYXRpbjF0YWIuaCBiL01vZHVsZXMvZXhwYXQvbGF0aW4xdGFiLmgKaW5kZXggNTNjMjVkNy4uOTVkZmE1MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC9sYXRpbjF0YWIuaAorKysgYi9Nb2R1bGVzL2V4cGF0L2xhdGluMXRhYi5oCkBAIC0xLDUgKzEsMzMgQEAKLS8qIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKLSAgIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBjb3B5aW5nIHBlcm1pc3Npb24uCisvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fICBfXyAgICAgICAgICAgIF8KKyAgICAgICAgICAgICAgICAgICAgICAgICBfX19cIFwvIC9fIF9fICAgX18gX3wgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8gXyBcXCAgL3wgJ18gXCAvIF9gIHwgX198CisgICAgICAgICAgICAgICAgICAgICAgIHwgIF9fLy8gIFx8IHxfKSB8IChffCB8IHxfCisgICAgICAgICAgICAgICAgICAgICAgICBcX19fL18vXF9cIC5fXy8gXF9fLF98XF9ffAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF98IFhNTCBwYXJzZXIKKworICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDAgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCisgICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxNyBFeHBhdCBkZXZlbG9wbWVudCB0ZWFtCisgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CisKKyAgIFBlcm1pc3Npb24gaXMgIGhlcmVieSBncmFudGVkLCAgZnJlZSBvZiBjaGFyZ2UsICB0byBhbnkgIHBlcnNvbiBvYnRhaW5pbmcKKyAgIGEgIGNvcHkgIG9mICB0aGlzICBzb2Z0d2FyZSAgIGFuZCAgYXNzb2NpYXRlZCAgZG9jdW1lbnRhdGlvbiAgZmlsZXMgICh0aGUKKyAgICJTb2Z0d2FyZSIpLCAgdG8gIGRlYWwgaW4gIHRoZSAgU29mdHdhcmUgIHdpdGhvdXQgcmVzdHJpY3Rpb24sICBpbmNsdWRpbmcKKyAgIHdpdGhvdXQgIGxpbWl0YXRpb24gdGhlICByaWdodHMgIHRvIHVzZSwgIGNvcHksICBtb2RpZnksIG1lcmdlLCAgcHVibGlzaCwKKyAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKKyAgIHBlcnNvbnMgIHRvIHdob20gIHRoZSBTb2Z0d2FyZSAgaXMgIGZ1cm5pc2hlZCB0byAgZG8gc28sICBzdWJqZWN0IHRvICB0aGUKKyAgIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICBUaGUgYWJvdmUgY29weXJpZ2h0ICBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgIHNoYWxsIGJlIGluY2x1ZGVkCisgICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworICAgVEhFICBTT0ZUV0FSRSAgSVMgIFBST1ZJREVEICAiQVMgIElTIiwgIFdJVEhPVVQgIFdBUlJBTlRZICBPRiAgQU5ZICBLSU5ELAorICAgRVhQUkVTUyAgT1IgSU1QTElFRCwgIElOQ0xVRElORyAgQlVUICBOT1QgTElNSVRFRCAgVE8gIFRIRSBXQVJSQU5USUVTICBPRgorICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgorICAgTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICAgREFNQUdFUyBPUiAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSICBJTiBBTiAgQUNUSU9OIE9GIENPTlRSQUNULCAgVE9SVCBPUgorICAgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRQorICAgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICovCiAKIC8qIDB4ODAgKi8gQlRfT1RIRVIsIEJUX09USEVSLCBCVF9PVEhFUiwgQlRfT1RIRVIsCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L2xvYWRsaWJyYXJ5LmMgYi9Nb2R1bGVzL2V4cGF0L2xvYWRsaWJyYXJ5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVmZGY5OAotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvZXhwYXQvbG9hZGxpYnJhcnkuYwpAQCAtMCwwICsxLDE0MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXyAgIF8gX19fXyAgXworICogIFByb2plY3QgICAgICAgICAgICAgICAgICAgICBfX198IHwgfCB8ICBfIFx8IHwKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIF9ffCB8IHwgfCB8XykgfCB8CisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChfX3wgfF98IHwgIF8gPHwgfF9fXworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxfX198XF9fXy98X3wgXF9cX19fX198CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE2IC0gMjAxNywgU3RldmUgSG9sbWUsIDxzdGV2ZV9ob2xtZUBob3RtYWlsLmNvbT4uCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcsIEV4cGF0IGRldmVsb3BtZW50IHRlYW0KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgorICoKKyAqIFBlcm1pc3Npb24gdG8gIHVzZSwgY29weSwgIG1vZGlmeSwgYW5kIGRpc3RyaWJ1dGUgIHRoaXMgc29mdHdhcmUgIGZvciBhbnkKKyAqIHB1cnBvc2Ugd2l0aCAgb3Igd2l0aG91dCBmZWUgaXMgIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0ICB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMuCisgKgorICogVEhFICBTT0ZUV0FSRSAgSVMgIFBST1ZJREVEICAiQVMgIElTIiwgIFdJVEhPVVQgIFdBUlJBTlRZICBPRiAgQU5ZICBLSU5ELAorICogRVhQUkVTUyAgT1IgSU1QTElFRCwgIElOQ0xVRElORyAgQlVUICBOT1QgTElNSVRFRCAgVE8gIFRIRSBXQVJSQU5USUVTICBPRgorICogTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBICBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVCBPRgorICogVEhJUkQgUEFSVFkgUklHSFRTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorICogTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRgorICogQ09OVFJBQ1QsIFRPUlQgT1IgIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgIElOIENPTk5FQ1RJT04gV0lUSAorICogVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorICoKKyAqIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsICB0aGUgbmFtZSBvZiBhIGNvcHlyaWdodCBob2xkZXIgc2hhbGwKKyAqIG5vdCBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRoZSBzYWxlLCB1c2Ugb3Igb3RoZXIKKyAqIGRlYWxpbmdzICBpbiB0aGlzICBTb2Z0d2FyZSB3aXRob3V0ICBwcmlvciB3cml0dGVuICBhdXRob3JpemF0aW9uIG9mICB0aGUKKyAqIGNvcHlyaWdodCBob2xkZXIuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmIGRlZmluZWQoX1dJTjMyKQorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHRjaGFyLmg+CisKKworSE1PRFVMRSBfRXhwYXRfTG9hZExpYnJhcnkoTFBDVFNUUiBmaWxlbmFtZSk7CisKKworI2lmICFkZWZpbmVkKExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKQorI2RlZmluZSBMT0FEX1dJVEhfQUxURVJFRF9TRUFSQ0hfUEFUSCAgMHgwMDAwMDAwOAorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChMT0FEX0xJQlJBUllfU0VBUkNIX1NZU1RFTTMyKQorI2RlZmluZSBMT0FEX0xJQlJBUllfU0VBUkNIX1NZU1RFTTMyICAgMHgwMDAwMDgwMAorI2VuZGlmCisKKy8qIFdlIHVzZSBvdXIgb3duIHR5cGVkZWYgaGVyZSBzaW5jZSBzb21lIGhlYWRlcnMgbWlnaHQgbGFjayB0aGVzZSAqLwordHlwZWRlZiBITU9EVUxFIChBUElFTlRSWSAqTE9BRExJQlJBUllFWF9GTikoTFBDVFNUUiwgSEFORExFLCBEV09SRCk7CisKKy8qIFNlZSBmdW5jdGlvbiBkZWZpbml0aW9ucyBpbiB3aW5iYXNlLmggKi8KKyNpZmRlZiBVTklDT0RFCisjICBpZmRlZiBfV0lOMzJfV0NFCisjICAgIGRlZmluZSBMT0FETElCQVJZRVggIEwiTG9hZExpYnJhcnlFeFciCisjICBlbHNlCisjICAgIGRlZmluZSBMT0FETElCQVJZRVggICJMb2FkTGlicmFyeUV4VyIKKyMgIGVuZGlmCisjZWxzZQorIyAgZGVmaW5lIExPQURMSUJBUllFWCAgICAiTG9hZExpYnJhcnlFeEEiCisjZW5kaWYKKworCisvKgorICogX0V4cGF0X0xvYWRMaWJyYXJ5KCkKKyAqCisgKiBUaGlzIGlzIHVzZWQgdG8gZHluYW1pY2FsbHkgbG9hZCBETExzIHVzaW5nIHRoZSBtb3N0IHNlY3VyZSBtZXRob2QgYXZhaWxhYmxlCisgKiBmb3IgdGhlIHZlcnNpb24gb2YgV2luZG93cyB0aGF0IHdlIGFyZSBydW5uaW5nIG9uLgorICoKKyAqIFBhcmFtZXRlcnM6CisgKgorICogZmlsZW5hbWUgIFtpbl0gLSBUaGUgZmlsZW5hbWUgb3IgZnVsbCBwYXRoIG9mIHRoZSBETEwgdG8gbG9hZC4gSWYgb25seSB0aGUKKyAqICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgaXMgcGFzc2VkIHRoZW4gdGhlIERMTCB3aWxsIGJlIGxvYWRlZCBmcm9tIHRoZQorICogICAgICAgICAgICAgICAgICBXaW5kb3dzIHN5c3RlbSBkaXJlY3RvcnkuCisgKgorICogUmV0dXJucyB0aGUgaGFuZGxlIG9mIHRoZSBtb2R1bGUgb24gc3VjY2Vzczsgb3RoZXJ3aXNlIE5VTEwuCisgKi8KK0hNT0RVTEUgX0V4cGF0X0xvYWRMaWJyYXJ5KExQQ1RTVFIgZmlsZW5hbWUpCit7CisgIEhNT0RVTEUgaE1vZHVsZSA9IE5VTEw7CisgIExPQURMSUJSQVJZRVhfRk4gcExvYWRMaWJyYXJ5RXggPSBOVUxMOworCisgIC8qIEdldCBhIGhhbmRsZSB0byBrZXJuZWwzMiBzbyB3ZSBjYW4gYWNjZXNzIGl0J3MgZnVuY3Rpb25zIGF0IHJ1bnRpbWUgKi8KKyAgSE1PRFVMRSBoS2VybmVsMzIgPSBHZXRNb2R1bGVIYW5kbGUoVEVYVCgia2VybmVsMzIiKSk7CisgIGlmKCFoS2VybmVsMzIpCisgICAgcmV0dXJuIE5VTEw7ICAvKiBMQ09WX0VYQ0xfTElORSAqLworCisgIC8qIEF0dGVtcHQgdG8gZmluZCBMb2FkTGlicmFyeUV4KCkgd2hpY2ggaXMgb25seSBhdmFpbGFibGUgb24gV2luZG93cyAyMDAwCisgICAgIGFuZCBhYm92ZSAqLworICBwTG9hZExpYnJhcnlFeCA9IChMT0FETElCUkFSWUVYX0ZOKSBHZXRQcm9jQWRkcmVzcyhoS2VybmVsMzIsIExPQURMSUJBUllFWCk7CisKKyAgLyogRGV0ZWN0IGlmIHRoZXJlJ3MgYWxyZWFkeSBhIHBhdGggaW4gdGhlIGZpbGVuYW1lIGFuZCBsb2FkIHRoZSBsaWJyYXJ5IGlmCisgICAgIHRoZXJlIGlzLiBOb3RlOiBCb3RoIGJhY2sgc2xhc2hlcyBhbmQgZm9yd2FyZCBzbGFzaGVzIGhhdmUgYmVlbiBzdXBwb3J0ZWQKKyAgICAgc2luY2UgdGhlIGVhcmxpZXIgZGF5cyBvZiBET1MgYXQgYW4gQVBJIGxldmVsIGFsdGhvdWdoIHRoZXkgYXJlIG5vdAorICAgICBzdXBwb3J0ZWQgYnkgY29tbWFuZCBwcm9tcHQgKi8KKyAgaWYoX3Rjc3BicmsoZmlsZW5hbWUsIFRFWFQoIlxcLyIpKSkgeworICAgIC8qKiAhY2hlY2tzcmMhIGRpc2FibGUgQkFOTkVERlVOQyAxICoqLworICAgIGhNb2R1bGUgPSBwTG9hZExpYnJhcnlFeCA/CisgICAgICBwTG9hZExpYnJhcnlFeChmaWxlbmFtZSwgTlVMTCwgTE9BRF9XSVRIX0FMVEVSRURfU0VBUkNIX1BBVEgpIDoKKyAgICAgIExvYWRMaWJyYXJ5KGZpbGVuYW1lKTsKKyAgfQorICAvKiBEZXRlY3QgaWYgS0IyNTMzNjIzIGlzIGluc3RhbGxlZCwgYXMgTE9BRF9MSUJBUllfU0VBUkNIX1NZU1RFTTMyIGlzIG9ubHkKKyAgICAgc3VwcG9ydGVkIG9uIFdpbmRvd3MgVmlzdGEsIFdpbmRvd3MgU2VydmVyIDIwMDgsIFdpbmRvd3MgNyBhbmQgV2luZG93cworICAgICBTZXJ2ZXIgMjAwOCBSMiB3aXRoIHRoaXMgcGF0Y2ggb3IgbmF0aXZlbHkgb24gV2luZG93cyA4IGFuZCBhYm92ZSAqLworICBlbHNlIGlmKHBMb2FkTGlicmFyeUV4ICYmIEdldFByb2NBZGRyZXNzKGhLZXJuZWwzMiwgIkFkZERsbERpcmVjdG9yeSIpKSB7CisgICAgLyogTG9hZCB0aGUgRExMIGZyb20gdGhlIFdpbmRvd3Mgc3lzdGVtIGRpcmVjdG9yeSAqLworICAgIGhNb2R1bGUgPSBwTG9hZExpYnJhcnlFeChmaWxlbmFtZSwgTlVMTCwgTE9BRF9MSUJSQVJZX1NFQVJDSF9TWVNURU0zMik7CisgIH0KKyAgZWxzZSB7CisgICAgLyogQXR0ZW1wdCB0byBnZXQgdGhlIFdpbmRvd3Mgc3lzdGVtIHBhdGggKi8KKyAgICBVSU5UIHN5c3RlbWRpcmxlbiA9IEdldFN5c3RlbURpcmVjdG9yeShOVUxMLCAwKTsKKyAgICBpZihzeXN0ZW1kaXJsZW4pIHsKKyAgICAgIC8qIEFsbG9jYXRlIHNwYWNlIGZvciB0aGUgZnVsbCBETEwgcGF0aCAoUm9vbSBmb3IgdGhlIG51bGwgdGVybWluYXRvcgorICAgICAgICAgaXMgaW5jbHVkZWQgaW4gc3lzdGVtZGlybGVuKSAqLworICAgICAgc2l6ZV90IGZpbGVuYW1lbGVuID0gX3Rjc2xlbihmaWxlbmFtZSk7CisgICAgICBUQ0hBUiAqcGF0aCA9IG1hbGxvYyhzaXplb2YoVENIQVIpICogKHN5c3RlbWRpcmxlbiArIDEgKyBmaWxlbmFtZWxlbikpOworICAgICAgaWYocGF0aCAmJiBHZXRTeXN0ZW1EaXJlY3RvcnkocGF0aCwgc3lzdGVtZGlybGVuKSkgeworICAgICAgICAvKiBDYWxjdWxhdGUgdGhlIGZ1bGwgRExMIHBhdGggKi8KKyAgICAgICAgX3Rjc2NweShwYXRoICsgX3Rjc2xlbihwYXRoKSwgVEVYVCgiXFwiKSk7CisgICAgICAgIF90Y3NjcHkocGF0aCArIF90Y3NsZW4ocGF0aCksIGZpbGVuYW1lKTsKKworICAgICAgICAvKiBMb2FkIHRoZSBETEwgZnJvbSB0aGUgV2luZG93cyBzeXN0ZW0gZGlyZWN0b3J5ICovCisgICAgICAgIC8qKiAhY2hlY2tzcmMhIGRpc2FibGUgQkFOTkVERlVOQyAxICoqLworICAgICAgICBoTW9kdWxlID0gcExvYWRMaWJyYXJ5RXggPworICAgICAgICAgIHBMb2FkTGlicmFyeUV4KHBhdGgsIE5VTEwsIExPQURfV0lUSF9BTFRFUkVEX1NFQVJDSF9QQVRIKSA6CisgICAgICAgICAgTG9hZExpYnJhcnkocGF0aCk7CisKKyAgICAgIH0KKyAgICAgIGZyZWUocGF0aCk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGhNb2R1bGU7Cit9CisKKyNlbHNlIC8qIGRlZmluZWQoX1dJTjMyKSAqLworCisvKiBJU08gQyByZXF1aXJlcyBhIHRyYW5zbGF0aW9uIHVuaXQgdG8gY29udGFpbiBhdCBsZWFzdCBvbmUgZGVjbGFyYXRpb24KKyAgIFstV2VtcHR5LXRyYW5zbGF0aW9uLXVuaXRdICovCit0eXBlZGVmIGludCBfVFJBTlNMQVRJT05fVU5JVF9MT0FEX0xJQlJBUllfQ19OT1RfRU1UUFk7CisKKyNlbmRpZiAvKiBkZWZpbmVkKF9XSU4zMikgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvbWFjY29uZmlnLmggYi9Nb2R1bGVzL2V4cGF0L21hY2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzI1Y2FhLi4wMDAwMDAwCi0tLSBhL01vZHVsZXMvZXhwYXQvbWFjY29uZmlnLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi0vKj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSoqIENvcHlyaWdodCAyMDAwLCBDbGFyayBDb29wZXIKLSoqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qKgotKiogVGhpcyBpcyBmcmVlIHNvZnR3YXJlLiBZb3UgYXJlIHBlcm1pdHRlZCB0byBjb3B5LCBkaXN0cmlidXRlLCBvciBtb2RpZnkKLSoqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgTUlUL1ggbGljZW5zZSAoY29udGFpbmVkIGluIHRoZSBDT1BZSU5HIGZpbGUKLSoqIHdpdGggdGhpcyBkaXN0cmlidXRpb24uKQotKioKLSovCi0KLSNpZm5kZWYgTUFDQ09ORklHX0gKLSNkZWZpbmUgTUFDQ09ORklHX0gKLQotCi0vKiAxMjM0ID0gTElMX0VORElBTiwgNDMyMSA9IEJJR0VORElBTiAqLwotI2RlZmluZSBCWVRFT1JERVIgIDQzMjEKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBiY29weScgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9CQ09QWQotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbW1vdmUnIGZ1bmN0aW9uLiAqLwotI2RlZmluZSBIQVZFX01FTU1PVkUKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYSB3b3JraW5nIGBtbWFwJyBzeXN0ZW0gY2FsbC4gKi8KLSN1bmRlZiBIQVZFX01NQVAKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuICovCi0jdW5kZWYgSEFWRV9VTklTVERfSAotCi0vKiB3aGV0aGVyIGJ5dGVvcmRlciBpcyBiaWdlbmRpYW4gKi8KLSNkZWZpbmUgV09SRFNfQklHRU5ESUFOCi0KLS8qIERlZmluZSB0byBzcGVjaWZ5IGhvdyBtdWNoIGNvbnRleHQgdG8gcmV0YWluIGFyb3VuZCB0aGUgY3VycmVudCBwYXJzZQotICAgcG9pbnQuICovCi0jdW5kZWYgWE1MX0NPTlRFWFRfQllURVMKLQotLyogRGVmaW5lIHRvIG1ha2UgcGFyYW1ldGVyIGVudGl0eSBwYXJzaW5nIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlLiAqLwotI2RlZmluZSBYTUxfRFRECi0KLS8qIERlZmluZSB0byBtYWtlIFhNTCBOYW1lc3BhY2VzIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlLiAqLwotI2RlZmluZSBYTUxfTlMKLQotLyogRGVmaW5lIHRvIGVtcHR5IGlmIGBjb25zdCcgZG9lcyBub3QgY29uZm9ybSB0byBBTlNJIEMuICovCi0jdW5kZWYgY29uc3QKLQotLyogRGVmaW5lIHRvIGBsb25nJyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KLSNkZWZpbmUgb2ZmX3QgIGxvbmcKLQotLyogRGVmaW5lIHRvIGB1bnNpZ25lZCcgaWYgPHN5cy90eXBlcy5oPiBkb2VzIG5vdCBkZWZpbmUuICovCi0jdW5kZWYgc2l6ZV90Ci0KLQotI2VuZGlmIC8qIGlmbmRlZiBNQUNDT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9uYW1ldGFiLmggYi9Nb2R1bGVzL2V4cGF0L25hbWV0YWIuaAppbmRleCBiMDVlNjJjLi5iZmEyYmQzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L25hbWV0YWIuaAorKysgYi9Nb2R1bGVzL2V4cGF0L25hbWV0YWIuaApAQCAtMSwzICsxLDM1IEBACisvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fICBfXyAgICAgICAgICAgIF8KKyAgICAgICAgICAgICAgICAgICAgICAgICBfX19cIFwvIC9fIF9fICAgX18gX3wgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8gXyBcXCAgL3wgJ18gXCAvIF9gIHwgX198CisgICAgICAgICAgICAgICAgICAgICAgIHwgIF9fLy8gIFx8IHxfKSB8IChffCB8IHxfCisgICAgICAgICAgICAgICAgICAgICAgICBcX19fL18vXF9cIC5fXy8gXF9fLF98XF9ffAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF98IFhNTCBwYXJzZXIKKworICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDAgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCisgICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxNyBFeHBhdCBkZXZlbG9wbWVudCB0ZWFtCisgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CisKKyAgIFBlcm1pc3Npb24gaXMgIGhlcmVieSBncmFudGVkLCAgZnJlZSBvZiBjaGFyZ2UsICB0byBhbnkgIHBlcnNvbiBvYnRhaW5pbmcKKyAgIGEgIGNvcHkgIG9mICB0aGlzICBzb2Z0d2FyZSAgIGFuZCAgYXNzb2NpYXRlZCAgZG9jdW1lbnRhdGlvbiAgZmlsZXMgICh0aGUKKyAgICJTb2Z0d2FyZSIpLCAgdG8gIGRlYWwgaW4gIHRoZSAgU29mdHdhcmUgIHdpdGhvdXQgcmVzdHJpY3Rpb24sICBpbmNsdWRpbmcKKyAgIHdpdGhvdXQgIGxpbWl0YXRpb24gdGhlICByaWdodHMgIHRvIHVzZSwgIGNvcHksICBtb2RpZnksIG1lcmdlLCAgcHVibGlzaCwKKyAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKKyAgIHBlcnNvbnMgIHRvIHdob20gIHRoZSBTb2Z0d2FyZSAgaXMgIGZ1cm5pc2hlZCB0byAgZG8gc28sICBzdWJqZWN0IHRvICB0aGUKKyAgIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICBUaGUgYWJvdmUgY29weXJpZ2h0ICBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgIHNoYWxsIGJlIGluY2x1ZGVkCisgICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworICAgVEhFICBTT0ZUV0FSRSAgSVMgIFBST1ZJREVEICAiQVMgIElTIiwgIFdJVEhPVVQgIFdBUlJBTlRZICBPRiAgQU5ZICBLSU5ELAorICAgRVhQUkVTUyAgT1IgSU1QTElFRCwgIElOQ0xVRElORyAgQlVUICBOT1QgTElNSVRFRCAgVE8gIFRIRSBXQVJSQU5USUVTICBPRgorICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgorICAgTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICAgREFNQUdFUyBPUiAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSICBJTiBBTiAgQUNUSU9OIE9GIENPTlRSQUNULCAgVE9SVCBPUgorICAgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRQorICAgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyovCisKIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBuYW1pbmdCaXRtYXBbXSA9IHsKIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MDAwMDAwMDAsCiAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLCAweDAwMDAwMDAwLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC9zaXBoYXNoLmggYi9Nb2R1bGVzL2V4cGF0L3NpcGhhc2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDY3ODZkCi0tLSAvZGV2L251bGwKKysrIGIvTW9kdWxlcy9leHBhdC9zaXBoYXNoLmgKQEAgLTAsMCArMSwzOTEgQEAKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgKiBzaXBoYXNoLmggLSBTaXBIYXNoLTItNCBpbiBhIHNpbmdsZSBoZWFkZXIgZmlsZQorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIERlcml2ZWQgYnkgV2lsbGlhbSBBaGVybiBmcm9tIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb25bMV0gcHVibGlzaGVkWzJdCisgKiBieSBKZWFuLVBoaWxpcHBlIEF1bWFzc29uIGFuZCBEYW5pZWwgSi4gQmVyc3RlaW4uCisgKiBNaW5pbWFsIGNoYW5nZXMgYnkgU2ViYXN0aWFuIFBpcHBpbmcgYW5kIFZpY3RvciBTdGlubmVyIG9uIHRvcCwgc2VlIGJlbG93LgorICogTGljZW5zZWQgdW5kZXIgdGhlIENDMCBQdWJsaWMgRG9tYWluIERlZGljYXRpb24gbGljZW5zZS4KKyAqCisgKiAxLiBodHRwczovL3d3dy4xMzEwMDIubmV0L3NpcGhhc2gvc2lwaGFzaDI0LmMKKyAqIDIuIGh0dHBzOi8vd3d3LjEzMTAwMi5uZXQvc2lwaGFzaC8KKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBISVNUT1JZOgorICoKKyAqIDIwMTgtMDctMDggIChBbnRvbiBNYWtsYWtvdikKKyAqICAgLSBBZGQgImZhbGwgdGhyb3VnaCIgbWFya2VycyBmb3IgR0NDJ3MgLVdpbXBsaWNpdC1mYWxsdGhyb3VnaAorICoKKyAqIDIwMTctMTEtMDMgIChTZWJhc3RpYW4gUGlwcGluZykKKyAqICAgLSBIaWRlIHNpcF90b2JpbiBhbmQgc2lwX2Jpbm9mIHVubGVzcyBTSVBIQVNIX1RPQklOIG1hY3JvIGlzIGRlZmluZWQKKyAqCisgKiAyMDE3LTA3LTI1ICAoVmFkaW0gWmVpdGxpbikKKyAqICAgLSBGaXggdXNlIG9mIFNJUEhBU0hfTUFJTiBtYWNybworICoKKyAqIDIwMTctMDctMDUgIChTZWJhc3RpYW4gUGlwcGluZykKKyAqICAgLSBVc2UgX1NJUF9VTEwgbWFjcm8gdG8gbm90IHJlcXVpcmUgYSBDKysxMSBjb21waWxlciBpZiBjb21waWxlZCBhcyBDKysKKyAqICAgLSBBZGQgY29uc3QgcXVhbGlmaWVycyBhdCB0d28gcGxhY2VzCisgKiAgIC0gRW5zdXJlIDw9ODAgY2hhcmFjdGVycyBsaW5lIGxlbmd0aCAoYXNzdW1pbmcgdGFiIHdpZHRoIDQpCisgKgorICogMjAxNy0wNi0yMyAgKFZpY3RvciBTdGlubmVyKQorICogICAtIEFkZHJlc3MgV2luNjQgY29tcGlsZSB3YXJuaW5ncworICoKKyAqIDIwMTctMDYtMTggIChTZWJhc3RpYW4gUGlwcGluZykKKyAqICAgLSBDbGFyaWZ5IGxpY2Vuc2Ugbm90ZSBpbiB0aGUgaGVhZGVyCisgKiAgIC0gQWRkcmVzcyBDODkgaXNzdWVzOgorICogICAgIC0gU3RvcCB1c2luZyBpbmxpbmUga2V5d29yZCAoYW5kIGxldCBjb21waWxlciBkZWNpZGUpCisgKiAgICAgLSBSZXBsYWNlIF9Cb29sIGJ5IGludAorICogICAgIC0gVHVybiBtYWNybyBzaXBoYXNoMjQgaW50byBhIGZ1bmN0aW9uCisgKiAgICAgLSBBZGRyZXNzIGludmFsaWQgY29udmVyc2lvbiAodm9pZCBwb2ludGVyKSBieSBleHBsaWNpdCBjYXN0CisgKiAgIC0gQWRkcmVzcyBsYWNrIG9mIHN0ZGludC5oIGZvciBWaXN1YWwgU3R1ZGlvIDIwMDMgdG8gMjAwOAorICogICAtIEFsd2F5cyBleHBvc2Ugc2lwMjRfdmFsaWQgKGZvciBzZWxmLXRlc3RzKQorICoKKyAqIDIwMTItMTEtMDQgLSBCb3JuLiAgKFdpbGxpYW0gQWhlcm4pCisgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVVNBR0U6CisgKgorICogU2lwSGFzaC0yLTQgdGFrZXMgYXMgaW5wdXQgdHdvIDY0LWJpdCB3b3JkcyBhcyB0aGUga2V5LCBzb21lIG51bWJlciBvZgorICogbWVzc2FnZSBieXRlcywgYW5kIG91dHB1dHMgYSA2NC1iaXQgd29yZCBhcyB0aGUgbWVzc2FnZSBkaWdlc3QuIFRoaXMKKyAqIGltcGxlbWVudGF0aW9uIGVtcGxveXMgdHdvIGRhdGEgc3RydWN0dXJlczogYSBzdHJ1Y3Qgc2lwa2V5IGZvcgorICogcmVwcmVzZW50aW5nIHRoZSBrZXksIGFuZCBhIHN0cnVjdCBzaXBoYXNoIGZvciByZXByZXNlbnRpbmcgdGhlIGhhc2gKKyAqIHN0YXRlLgorICoKKyAqIEZvciBjb252ZXJ0aW5nIGEgMTYtYnl0ZSB1bnNpZ25lZCBjaGFyIGFycmF5IHRvIGEga2V5LCB1c2UgZWl0aGVyIHRoZQorICogbWFjcm8gc2lwX2tleW9mIG9yIHRoZSByb3V0aW5lIHNpcF90b2tleS4gVGhlIGZvcm1lciBpbnN0YW50aWF0ZXMgYQorICogY29tcG91bmQgbGl0ZXJhbCBrZXksIHdoaWxlIHRoZSBsYXR0ZXIgcmVxdWlyZXMgYSBrZXkgb2JqZWN0IGFzIGEKKyAqIHBhcmFtZXRlci4KKyAqCisgKiAJdW5zaWduZWQgY2hhciBzZWNyZXRbMTZdOworICogCWFyYzRyYW5kb21fYnVmKHNlY3JldCwgc2l6ZW9mIHNlY3JldCk7CisgKiAJc3RydWN0IHNpcGtleSAqa2V5ID0gc2lwX2tleW9mKHNlY3JldCk7CisgKgorICogRm9yIGhhc2hpbmcgYSBtZXNzYWdlLCB1c2UgZWl0aGVyIHRoZSBjb252ZW5pZW5jZSBtYWNybyBzaXBoYXNoMjQgb3IgdGhlCisgKiByb3V0aW5lcyBzaXAyNF9pbml0LCBzaXAyNF91cGRhdGUsIGFuZCBzaXAyNF9maW5hbC4KKyAqCisgKiAJc3RydWN0IHNpcGhhc2ggc3RhdGU7CisgKiAJdm9pZCAqbXNnOworICogCXNpemVfdCBsZW47CisgKiAJdWludDY0X3QgaGFzaDsKKyAqCisgKiAJc2lwMjRfaW5pdCgmc3RhdGUsIGtleSk7CisgKiAJc2lwMjRfdXBkYXRlKCZzdGF0ZSwgbXNnLCBsZW4pOworICogCWhhc2ggPSBzaXAyNF9maW5hbCgmc3RhdGUpOworICoKKyAqIG9yCisgKgorICogCWhhc2ggPSBzaXBoYXNoMjQobXNnLCBsZW4sIGtleSk7CisgKgorICogVG8gY29udmVydCB0aGUgNjQtYml0IGhhc2ggdmFsdWUgdG8gYSBjYW5vbmljYWwgOC1ieXRlIGxpdHRsZS1lbmRpYW4KKyAqIGJpbmFyeSByZXByZXNlbnRhdGlvbiwgdXNlIGVpdGhlciB0aGUgbWFjcm8gc2lwX2Jpbm9mIG9yIHRoZSByb3V0aW5lCisgKiBzaXBfdG9iaW4uIFRoZSBmb3JtZXIgaW5zdGFudGlhdGVzIGFuZCByZXR1cm5zIGEgY29tcG91bmQgbGl0ZXJhbCBhcnJheSwKKyAqIHdoaWxlIHRoZSBsYXR0ZXIgcmVxdWlyZXMgYW4gYXJyYXkgb2JqZWN0IGFzIGEgcGFyYW1ldGVyLgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIE5PVEVTOgorICoKKyAqIG8gTmVpdGhlciBzaXBfa2V5b2YsIHNpcF9iaW5vZiwgbm9yIHNpcGhhc2gyNCB3aWxsIHdvcmsgd2l0aCBjb21waWxlcnMKKyAqICAgbGFja2luZyBjb21wb3VuZCBsaXRlcmFsIHN1cHBvcnQuIEluc3RlYWQsIHlvdSBtdXN0IHVzZSB0aGUgbG93ZXItbGV2ZWwKKyAqICAgaW50ZXJmYWNlcyB3aGljaCB0YWtlIGFzIHBhcmFtZXRlcnMgdGhlIHRlbXBvcmFyeSBzdGF0ZSBvYmplY3RzLgorICoKKyAqIG8gVXBwZXJjYXNlIG1hY3JvcyBtYXkgZXZhbHVhdGUgcGFyYW1ldGVycyBtb3JlIHRoYW4gb25jZS4gTG93ZXJjYXNlCisgKiAgIG1hY3JvcyBzaG91bGQgbm90IGV4aGliaXQgYW55IHN1Y2ggc2lkZSBlZmZlY3RzLgorICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqLworI2lmbmRlZiBTSVBIQVNIX0gKKyNkZWZpbmUgU0lQSEFTSF9ICisKKyNpbmNsdWRlIDxzdGRkZWYuaD4gLyogc2l6ZV90ICovCisKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5lZChfTVNDX1ZFUikgJiYgKF9NU0NfVkVSIDwgMTYwMCkKKyAgLyogRm9yIHZzMjAwMy83LjEgdXAgdG8gdnMyMDA4LzkuMDsgX01TQ19WRVIgMTYwMCBpcyB2czIwMTAvMTAuMCAqLworICB0eXBlZGVmIHVuc2lnbmVkIF9faW50OCAgIHVpbnQ4X3Q7CisgIHR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiB1aW50MzJfdDsKKyAgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NF90OworI2Vsc2UKKyAjaW5jbHVkZSA8c3RkaW50Lmg+IC8qIHVpbnQ2NF90IHVpbnQzMl90IHVpbnQ4X3QgKi8KKyNlbmRpZgorCisKKy8qCisgKiBXb3JrYXJvdW5kIHRvIG5vdCByZXF1aXJlIGEgQysrMTEgY29tcGlsZXIgZm9yIHVzaW5nIFVMTCBzdWZmaXgKKyAqIGlmIHRoaXMgY29kZSBpcyBpbmNsdWRlZCBhbmQgY29tcGlsZWQgYXMgQysrOyByZWxhdGVkIEdDQyB3YXJuaW5nIGlzOgorICogd2FybmluZzogdXNlIG9mIEMrKzExIGxvbmcgbG9uZyBpbnRlZ2VyIGNvbnN0YW50IFstV2xvbmctbG9uZ10KKyAqLworI2RlZmluZSBfU0lQX1VMTChoaWdoLCBsb3cpICAoKCh1aW50NjRfdCloaWdoIDw8IDMyKSB8IGxvdykKKworCisjZGVmaW5lIFNJUF9ST1RMKHgsIGIpICh1aW50NjRfdCkoKCh4KSA8PCAoYikpIHwgKCAoeCkgPj4gKDY0IC0gKGIpKSkpCisKKyNkZWZpbmUgU0lQX1UzMlRPOF9MRShwLCB2KSBcCisJKHApWzBdID0gKHVpbnQ4X3QpKCh2KSA+PiAgMCk7IChwKVsxXSA9ICh1aW50OF90KSgodikgPj4gIDgpOyBcCisJKHApWzJdID0gKHVpbnQ4X3QpKCh2KSA+PiAxNik7IChwKVszXSA9ICh1aW50OF90KSgodikgPj4gMjQpOworCisjZGVmaW5lIFNJUF9VNjRUTzhfTEUocCwgdikgXAorCVNJUF9VMzJUTzhfTEUoKHApICsgMCwgKHVpbnQzMl90KSgodikgPj4gIDApKTsgXAorCVNJUF9VMzJUTzhfTEUoKHApICsgNCwgKHVpbnQzMl90KSgodikgPj4gMzIpKTsKKworI2RlZmluZSBTSVBfVThUTzY0X0xFKHApIFwKKwkoKCh1aW50NjRfdCkoKHApWzBdKSA8PCAgMCkgfCBcCisJICgodWludDY0X3QpKChwKVsxXSkgPDwgIDgpIHwgXAorCSAoKHVpbnQ2NF90KSgocClbMl0pIDw8IDE2KSB8IFwKKwkgKCh1aW50NjRfdCkoKHApWzNdKSA8PCAyNCkgfCBcCisJICgodWludDY0X3QpKChwKVs0XSkgPDwgMzIpIHwgXAorCSAoKHVpbnQ2NF90KSgocClbNV0pIDw8IDQwKSB8IFwKKwkgKCh1aW50NjRfdCkoKHApWzZdKSA8PCA0OCkgfCBcCisJICgodWludDY0X3QpKChwKVs3XSkgPDwgNTYpKQorCisKKyNkZWZpbmUgU0lQSEFTSF9JTklUSUFMSVpFUiB7IDAsIDAsIDAsIDAsIHsgMCB9LCAwLCAwIH0KKworc3RydWN0IHNpcGhhc2ggeworCXVpbnQ2NF90IHYwLCB2MSwgdjIsIHYzOworCisJdW5zaWduZWQgY2hhciBidWZbOF0sICpwOworCXVpbnQ2NF90IGM7Cit9OyAvKiBzdHJ1Y3Qgc2lwaGFzaCAqLworCisKKyNkZWZpbmUgU0lQX0tFWUxFTiAxNgorCitzdHJ1Y3Qgc2lwa2V5IHsKKwl1aW50NjRfdCBrWzJdOworfTsgLyogc3RydWN0IHNpcGtleSAqLworCisjZGVmaW5lIHNpcF9rZXlvZihrKSBzaXBfdG9rZXkoJihzdHJ1Y3Qgc2lwa2V5KXsgeyAwIH0gfSwgKGspKQorCitzdGF0aWMgc3RydWN0IHNpcGtleSAqc2lwX3Rva2V5KHN0cnVjdCBzaXBrZXkgKmtleSwgY29uc3Qgdm9pZCAqc3JjKSB7CisJa2V5LT5rWzBdID0gU0lQX1U4VE82NF9MRSgoY29uc3QgdW5zaWduZWQgY2hhciAqKXNyYyk7CisJa2V5LT5rWzFdID0gU0lQX1U4VE82NF9MRSgoY29uc3QgdW5zaWduZWQgY2hhciAqKXNyYyArIDgpOworCXJldHVybiBrZXk7Cit9IC8qIHNpcF90b2tleSgpICovCisKKworI2lmZGVmIFNJUEhBU0hfVE9CSU4KKworI2RlZmluZSBzaXBfYmlub2Yodikgc2lwX3RvYmluKCh1bnNpZ25lZCBjaGFyWzhdKXsgMCB9LCAodikpCisKK3N0YXRpYyB2b2lkICpzaXBfdG9iaW4odm9pZCAqZHN0LCB1aW50NjRfdCB1NjQpIHsKKwlTSVBfVTY0VE84X0xFKCh1bnNpZ25lZCBjaGFyICopZHN0LCB1NjQpOworCXJldHVybiBkc3Q7Cit9IC8qIHNpcF90b2JpbigpICovCisKKyNlbmRpZiAgLyogU0lQSEFTSF9UT0JJTiAqLworCisKK3N0YXRpYyB2b2lkIHNpcF9yb3VuZChzdHJ1Y3Qgc2lwaGFzaCAqSCwgY29uc3QgaW50IHJvdW5kcykgeworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IHJvdW5kczsgaSsrKSB7CisJCUgtPnYwICs9IEgtPnYxOworCQlILT52MSA9IFNJUF9ST1RMKEgtPnYxLCAxMyk7CisJCUgtPnYxIF49IEgtPnYwOworCQlILT52MCA9IFNJUF9ST1RMKEgtPnYwLCAzMik7CisKKwkJSC0+djIgKz0gSC0+djM7CisJCUgtPnYzID0gU0lQX1JPVEwoSC0+djMsIDE2KTsKKwkJSC0+djMgXj0gSC0+djI7CisKKwkJSC0+djAgKz0gSC0+djM7CisJCUgtPnYzID0gU0lQX1JPVEwoSC0+djMsIDIxKTsKKwkJSC0+djMgXj0gSC0+djA7CisKKwkJSC0+djIgKz0gSC0+djE7CisJCUgtPnYxID0gU0lQX1JPVEwoSC0+djEsIDE3KTsKKwkJSC0+djEgXj0gSC0+djI7CisJCUgtPnYyID0gU0lQX1JPVEwoSC0+djIsIDMyKTsKKwl9Cit9IC8qIHNpcF9yb3VuZCgpICovCisKKworc3RhdGljIHN0cnVjdCBzaXBoYXNoICpzaXAyNF9pbml0KHN0cnVjdCBzaXBoYXNoICpILAorCQljb25zdCBzdHJ1Y3Qgc2lwa2V5ICprZXkpIHsKKwlILT52MCA9IF9TSVBfVUxMKDB4NzM2ZjZkNjVVLCAweDcwNzM2NTc1VSkgXiBrZXktPmtbMF07CisJSC0+djEgPSBfU0lQX1VMTCgweDY0NmY3MjYxVSwgMHg2ZTY0NmY2ZFUpIF4ga2V5LT5rWzFdOworCUgtPnYyID0gX1NJUF9VTEwoMHg2Yzc5Njc2NVUsIDB4NmU2NTcyNjFVKSBeIGtleS0+a1swXTsKKwlILT52MyA9IF9TSVBfVUxMKDB4NzQ2NTY0NjJVLCAweDc5NzQ2NTczVSkgXiBrZXktPmtbMV07CisKKwlILT5wID0gSC0+YnVmOworCUgtPmMgPSAwOworCisJcmV0dXJuIEg7Cit9IC8qIHNpcDI0X2luaXQoKSAqLworCisKKyNkZWZpbmUgc2lwX2VuZG9mKGEpICgmKGEpW3NpemVvZiAoYSkgLyBzaXplb2YgKihhKV0pCisKK3N0YXRpYyBzdHJ1Y3Qgc2lwaGFzaCAqc2lwMjRfdXBkYXRlKHN0cnVjdCBzaXBoYXNoICpILCBjb25zdCB2b2lkICpzcmMsCisJCXNpemVfdCBsZW4pIHsKKwljb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzcmMsICpwZSA9IHAgKyBsZW47CisJdWludDY0X3QgbTsKKworCWRvIHsKKwkJd2hpbGUgKHAgPCBwZSAmJiBILT5wIDwgc2lwX2VuZG9mKEgtPmJ1ZikpCisJCQkqSC0+cCsrID0gKnArKzsKKworCQlpZiAoSC0+cCA8IHNpcF9lbmRvZihILT5idWYpKQorCQkJYnJlYWs7CisKKwkJbSA9IFNJUF9VOFRPNjRfTEUoSC0+YnVmKTsKKwkJSC0+djMgXj0gbTsKKwkJc2lwX3JvdW5kKEgsIDIpOworCQlILT52MCBePSBtOworCisJCUgtPnAgPSBILT5idWY7CisJCUgtPmMgKz0gODsKKwl9IHdoaWxlIChwIDwgcGUpOworCisJcmV0dXJuIEg7Cit9IC8qIHNpcDI0X3VwZGF0ZSgpICovCisKKworc3RhdGljIHVpbnQ2NF90IHNpcDI0X2ZpbmFsKHN0cnVjdCBzaXBoYXNoICpIKSB7CisJY29uc3QgY2hhciBsZWZ0ID0gKGNoYXIpKEgtPnAgLSBILT5idWYpOworCXVpbnQ2NF90IGIgPSAoSC0+YyArIGxlZnQpIDw8IDU2OworCisJc3dpdGNoIChsZWZ0KSB7CisJY2FzZSA3OiBiIHw9ICh1aW50NjRfdClILT5idWZbNl0gPDwgNDg7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWNhc2UgNjogYiB8PSAodWludDY0X3QpSC0+YnVmWzVdIDw8IDQwOworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIDU6IGIgfD0gKHVpbnQ2NF90KUgtPmJ1Zls0XSA8PCAzMjsKKwkJLyogZmFsbCB0aHJvdWdoICovCisJY2FzZSA0OiBiIHw9ICh1aW50NjRfdClILT5idWZbM10gPDwgMjQ7CisJCS8qIGZhbGwgdGhyb3VnaCAqLworCWNhc2UgMzogYiB8PSAodWludDY0X3QpSC0+YnVmWzJdIDw8IDE2OworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIDI6IGIgfD0gKHVpbnQ2NF90KUgtPmJ1ZlsxXSA8PCA4OworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIDE6IGIgfD0gKHVpbnQ2NF90KUgtPmJ1ZlswXSA8PCAwOworCQkvKiBmYWxsIHRocm91Z2ggKi8KKwljYXNlIDA6IGJyZWFrOworCX0KKworCUgtPnYzIF49IGI7CisJc2lwX3JvdW5kKEgsIDIpOworCUgtPnYwIF49IGI7CisJSC0+djIgXj0gMHhmZjsKKwlzaXBfcm91bmQoSCwgNCk7CisKKwlyZXR1cm4gSC0+djAgXiBILT52MSBeIEgtPnYyICBeIEgtPnYzOworfSAvKiBzaXAyNF9maW5hbCgpICovCisKKworc3RhdGljIHVpbnQ2NF90IHNpcGhhc2gyNChjb25zdCB2b2lkICpzcmMsIHNpemVfdCBsZW4sCisJCWNvbnN0IHN0cnVjdCBzaXBrZXkgKmtleSkgeworCXN0cnVjdCBzaXBoYXNoIHN0YXRlID0gU0lQSEFTSF9JTklUSUFMSVpFUjsKKwlyZXR1cm4gc2lwMjRfZmluYWwoc2lwMjRfdXBkYXRlKHNpcDI0X2luaXQoJnN0YXRlLCBrZXkpLCBzcmMsIGxlbikpOworfSAvKiBzaXBoYXNoMjQoKSAqLworCisKKy8qCisgKiBTaXBIYXNoLTItNCBvdXRwdXQgd2l0aAorICogayA9IDAwIDAxIDAyIC4uLgorICogYW5kCisgKiBpbiA9IChlbXB0eSBzdHJpbmcpCisgKiBpbiA9IDAwICgxIGJ5dGUpCisgKiBpbiA9IDAwIDAxICgyIGJ5dGVzKQorICogaW4gPSAwMCAwMSAwMiAoMyBieXRlcykKKyAqIC4uLgorICogaW4gPSAwMCAwMSAwMiAuLi4gM2UgKDYzIGJ5dGVzKQorICovCitzdGF0aWMgaW50IHNpcDI0X3ZhbGlkKHZvaWQpIHsKKwlzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciB2ZWN0b3JzWzY0XVs4XSA9IHsKKwkJeyAweDMxLCAweDBlLCAweDBlLCAweGRkLCAweDQ3LCAweGRiLCAweDZmLCAweDcyLCB9LAorCQl7IDB4ZmQsIDB4NjcsIDB4ZGMsIDB4OTMsIDB4YzUsIDB4MzksIDB4ZjgsIDB4NzQsIH0sCisJCXsgMHg1YSwgMHg0ZiwgMHhhOSwgMHhkOSwgMHgwOSwgMHg4MCwgMHg2YywgMHgwZCwgfSwKKwkJeyAweDJkLCAweDdlLCAweGZiLCAweGQ3LCAweDk2LCAweDY2LCAweDY3LCAweDg1LCB9LAorCQl7IDB4YjcsIDB4ODcsIDB4NzEsIDB4MjcsIDB4ZTAsIDB4OTQsIDB4MjcsIDB4Y2YsIH0sCisJCXsgMHg4ZCwgMHhhNiwgMHg5OSwgMHhjZCwgMHg2NCwgMHg1NSwgMHg3NiwgMHgxOCwgfSwKKwkJeyAweGNlLCAweGUzLCAweGZlLCAweDU4LCAweDZlLCAweDQ2LCAweGM5LCAweGNiLCB9LAorCQl7IDB4MzcsIDB4ZDEsIDB4MDEsIDB4OGIsIDB4ZjUsIDB4MDAsIDB4MDIsIDB4YWIsIH0sCisJCXsgMHg2MiwgMHgyNCwgMHg5MywgMHg5YSwgMHg3OSwgMHhmNSwgMHhmNSwgMHg5MywgfSwKKwkJeyAweGIwLCAweGU0LCAweGE5LCAweDBiLCAweGRmLCAweDgyLCAweDAwLCAweDllLCB9LAorCQl7IDB4ZjMsIDB4YjksIDB4ZGQsIDB4OTQsIDB4YzUsIDB4YmIsIDB4NWQsIDB4N2EsIH0sCisJCXsgMHhhNywgMHhhZCwgMHg2YiwgMHgyMiwgMHg0NiwgMHgyZiwgMHhiMywgMHhmNCwgfSwKKwkJeyAweGZiLCAweGU1LCAweDBlLCAweDg2LCAweGJjLCAweDhmLCAweDFlLCAweDc1LCB9LAorCQl7IDB4OTAsIDB4M2QsIDB4ODQsIDB4YzAsIDB4MjcsIDB4NTYsIDB4ZWEsIDB4MTQsIH0sCisJCXsgMHhlZSwgMHhmMiwgMHg3YSwgMHg4ZSwgMHg5MCwgMHhjYSwgMHgyMywgMHhmNywgfSwKKwkJeyAweGU1LCAweDQ1LCAweGJlLCAweDQ5LCAweDYxLCAweGNhLCAweDI5LCAweGExLCB9LAorCQl7IDB4ZGIsIDB4OWIsIDB4YzIsIDB4NTcsIDB4N2YsIDB4Y2MsIDB4MmEsIDB4M2YsIH0sCisJCXsgMHg5NCwgMHg0NywgMHhiZSwgMHgyYywgMHhmNSwgMHhlOSwgMHg5YSwgMHg2OSwgfSwKKwkJeyAweDljLCAweGQzLCAweDhkLCAweDk2LCAweGYwLCAweGIzLCAweGMxLCAweDRiLCB9LAorCQl7IDB4YmQsIDB4NjEsIDB4NzksIDB4YTcsIDB4MWQsIDB4YzksIDB4NmQsIDB4YmIsIH0sCisJCXsgMHg5OCwgMHhlZSwgMHhhMiwgMHgxYSwgMHhmMiwgMHg1YywgMHhkNiwgMHhiZSwgfSwKKwkJeyAweGM3LCAweDY3LCAweDNiLCAweDJlLCAweGIwLCAweGNiLCAweGYyLCAweGQwLCB9LAorCQl7IDB4ODgsIDB4M2UsIDB4YTMsIDB4ZTMsIDB4OTUsIDB4NjcsIDB4NTMsIDB4OTMsIH0sCisJCXsgMHhjOCwgMHhjZSwgMHg1YywgMHhjZCwgMHg4YywgMHgwMywgMHgwYywgMHhhOCwgfSwKKwkJeyAweDk0LCAweGFmLCAweDQ5LCAweGY2LCAweGM2LCAweDUwLCAweGFkLCAweGI4LCB9LAorCQl7IDB4ZWEsIDB4YjgsIDB4ODUsIDB4OGEsIDB4ZGUsIDB4OTIsIDB4ZTEsIDB4YmMsIH0sCisJCXsgMHhmMywgMHgxNSwgMHhiYiwgMHg1YiwgMHhiOCwgMHgzNSwgMHhkOCwgMHgxNywgfSwKKwkJeyAweGFkLCAweGNmLCAweDZiLCAweDA3LCAweDYzLCAweDYxLCAweDJlLCAweDJmLCB9LAorCQl7IDB4YTUsIDB4YzksIDB4MWQsIDB4YTcsIDB4YWMsIDB4YWEsIDB4NGQsIDB4ZGUsIH0sCisJCXsgMHg3MSwgMHg2NSwgMHg5NSwgMHg4NywgMHg2NiwgMHg1MCwgMHhhMiwgMHhhNiwgfSwKKwkJeyAweDI4LCAweGVmLCAweDQ5LCAweDVjLCAweDUzLCAweGEzLCAweDg3LCAweGFkLCB9LAorCQl7IDB4NDIsIDB4YzMsIDB4NDEsIDB4ZDgsIDB4ZmEsIDB4OTIsIDB4ZDgsIDB4MzIsIH0sCisJCXsgMHhjZSwgMHg3YywgMHhmMiwgMHg3MiwgMHgyZiwgMHg1MSwgMHgyNywgMHg3MSwgfSwKKwkJeyAweGUzLCAweDc4LCAweDU5LCAweGY5LCAweDQ2LCAweDIzLCAweGYzLCAweGE3LCB9LAorCQl7IDB4MzgsIDB4MTIsIDB4MDUsIDB4YmIsIDB4MWEsIDB4YjAsIDB4ZTAsIDB4MTIsIH0sCisJCXsgMHhhZSwgMHg5NywgMHhhMSwgMHgwZiwgMHhkNCwgMHgzNCwgMHhlMCwgMHgxNSwgfSwKKwkJeyAweGI0LCAweGEzLCAweDE1LCAweDA4LCAweGJlLCAweGZmLCAweDRkLCAweDMxLCB9LAorCQl7IDB4ODEsIDB4MzksIDB4NjIsIDB4MjksIDB4ZjAsIDB4OTAsIDB4NzksIDB4MDIsIH0sCisJCXsgMHg0ZCwgMHgwYywgMHhmNCwgMHg5ZSwgMHhlNSwgMHhkNCwgMHhkYywgMHhjYSwgfSwKKwkJeyAweDVjLCAweDczLCAweDMzLCAweDZhLCAweDc2LCAweGQ4LCAweGJmLCAweDlhLCB9LAorCQl7IDB4ZDAsIDB4YTcsIDB4MDQsIDB4NTMsIDB4NmIsIDB4YTksIDB4M2UsIDB4MGUsIH0sCisJCXsgMHg5MiwgMHg1OSwgMHg1OCwgMHhmYywgMHhkNiwgMHg0MiwgMHgwYywgMHhhZCwgfSwKKwkJeyAweGE5LCAweDE1LCAweGMyLCAweDliLCAweGM4LCAweDA2LCAweDczLCAweDE4LCB9LAorCQl7IDB4OTUsIDB4MmIsIDB4NzksIDB4ZjMsIDB4YmMsIDB4MGEsIDB4YTYsIDB4ZDQsIH0sCisJCXsgMHhmMiwgMHgxZCwgMHhmMiwgMHhlNCwgMHgxZCwgMHg0NSwgMHgzNSwgMHhmOSwgfSwKKwkJeyAweDg3LCAweDU3LCAweDc1LCAweDE5LCAweDA0LCAweDhmLCAweDUzLCAweGE5LCB9LAorCQl7IDB4MTAsIDB4YTUsIDB4NmMsIDB4ZjUsIDB4ZGYsIDB4Y2QsIDB4OWEsIDB4ZGIsIH0sCisJCXsgMHhlYiwgMHg3NSwgMHgwOSwgMHg1YywgMHhjZCwgMHg5OCwgMHg2YywgMHhkMCwgfSwKKwkJeyAweDUxLCAweGE5LCAweGNiLCAweDllLCAweGNiLCAweGEzLCAweDEyLCAweGU2LCB9LAorCQl7IDB4OTYsIDB4YWYsIDB4YWQsIDB4ZmMsIDB4MmMsIDB4ZTYsIDB4NjYsIDB4YzcsIH0sCisJCXsgMHg3MiwgMHhmZSwgMHg1MiwgMHg5NywgMHg1YSwgMHg0MywgMHg2NCwgMHhlZSwgfSwKKwkJeyAweDVhLCAweDE2LCAweDQ1LCAweGIyLCAweDc2LCAweGQ1LCAweDkyLCAweGExLCB9LAorCQl7IDB4YjIsIDB4NzQsIDB4Y2IsIDB4OGUsIDB4YmYsIDB4ODcsIDB4ODcsIDB4MGEsIH0sCisJCXsgMHg2ZiwgMHg5YiwgMHhiNCwgMHgyMCwgMHgzZCwgMHhlNywgMHhiMywgMHg4MSwgfSwKKwkJeyAweGVhLCAweGVjLCAweGIyLCAweGEzLCAweDBiLCAweDIyLCAweGE4LCAweDdmLCB9LAorCQl7IDB4OTksIDB4MjQsIDB4YTQsIDB4M2MsIDB4YzEsIDB4MzEsIDB4NTcsIDB4MjQsIH0sCisJCXsgMHhiZCwgMHg4MywgMHg4ZCwgMHgzYSwgMHhhZiwgMHhiZiwgMHg4ZCwgMHhiNywgfSwKKwkJeyAweDBiLCAweDFhLCAweDJhLCAweDMyLCAweDY1LCAweGQ1LCAweDFhLCAweGVhLCB9LAorCQl7IDB4MTMsIDB4NTAsIDB4NzksIDB4YTMsIDB4MjMsIDB4MWMsIDB4ZTYsIDB4NjAsIH0sCisJCXsgMHg5MywgMHgyYiwgMHgyOCwgMHg0NiwgMHhlNCwgMHhkNywgMHgwNiwgMHg2NiwgfSwKKwkJeyAweGUxLCAweDkxLCAweDVmLCAweDVjLCAweGIxLCAweGVjLCAweGE0LCAweDZjLCB9LAorCQl7IDB4ZjMsIDB4MjUsIDB4OTYsIDB4NWMsIDB4YTEsIDB4NmQsIDB4NjIsIDB4OWYsIH0sCisJCXsgMHg1NywgMHg1ZiwgMHhmMiwgMHg4ZSwgMHg2MCwgMHgzOCwgMHgxYiwgMHhlNSwgfSwKKwkJeyAweDcyLCAweDQ1LCAweDA2LCAweGViLCAweDRjLCAweDMyLCAweDhhLCAweDk1LCB9CisJfTsKKwl1bnNpZ25lZCBjaGFyIGluWzY0XTsKKwlzdHJ1Y3Qgc2lwa2V5IGs7CisJc2l6ZV90IGk7CisKKwlzaXBfdG9rZXkoJmssICJcMDAwXDAwMVwwMDJcMDAzXDAwNFwwMDVcMDA2XDAwN1wwMTBcMDExIgorCQkJIlwwMTJcMDEzXDAxNFwwMTVcMDE2XDAxNyIpOworCisJZm9yIChpID0gMDsgaSA8IHNpemVvZiBpbjsgKytpKSB7CisJCWluW2ldID0gKHVuc2lnbmVkIGNoYXIpaTsKKworCQlpZiAoc2lwaGFzaDI0KGluLCBpLCAmaykgIT0gU0lQX1U4VE82NF9MRSh2ZWN0b3JzW2ldKSkKKwkJCXJldHVybiAwOworCX0KKworCXJldHVybiAxOworfSAvKiBzaXAyNF92YWxpZCgpICovCisKKworI2lmZGVmIFNJUEhBU0hfTUFJTgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKworaW50IG1haW4odm9pZCkgeworCWNvbnN0IGludCBvayA9IHNpcDI0X3ZhbGlkKCk7CisKKwlpZiAob2spCisJCXB1dHMoIk9LIik7CisJZWxzZQorCQlwdXRzKCJGQUlMIik7CisKKwlyZXR1cm4gIW9rOworfSAvKiBtYWluKCkgKi8KKworI2VuZGlmIC8qIFNJUEhBU0hfTUFJTiAqLworCisKKyNlbmRpZiAvKiBTSVBIQVNIX0ggKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQvdXRmOHRhYi5oIGIvTW9kdWxlcy9leHBhdC91dGY4dGFiLmgKaW5kZXggN2JiM2U3Ny4uZmEwYmVkNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9leHBhdC91dGY4dGFiLmgKKysrIGIvTW9kdWxlcy9leHBhdC91dGY4dGFiLmgKQEAgLTEsNyArMSwzNCBAQAotLyogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAotICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KLSovCisvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fICBfXyAgICAgICAgICAgIF8KKyAgICAgICAgICAgICAgICAgICAgICAgICBfX19cIFwvIC9fIF9fICAgX18gX3wgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8gXyBcXCAgL3wgJ18gXCAvIF9gIHwgX198CisgICAgICAgICAgICAgICAgICAgICAgIHwgIF9fLy8gIFx8IHxfKSB8IChffCB8IHxfCisgICAgICAgICAgICAgICAgICAgICAgICBcX19fL18vXF9cIC5fXy8gXF9fLF98XF9ffAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF98IFhNTCBwYXJzZXIKIAorICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDAgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCisgICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxNyBFeHBhdCBkZXZlbG9wbWVudCB0ZWFtCisgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CisKKyAgIFBlcm1pc3Npb24gaXMgIGhlcmVieSBncmFudGVkLCAgZnJlZSBvZiBjaGFyZ2UsICB0byBhbnkgIHBlcnNvbiBvYnRhaW5pbmcKKyAgIGEgIGNvcHkgIG9mICB0aGlzICBzb2Z0d2FyZSAgIGFuZCAgYXNzb2NpYXRlZCAgZG9jdW1lbnRhdGlvbiAgZmlsZXMgICh0aGUKKyAgICJTb2Z0d2FyZSIpLCAgdG8gIGRlYWwgaW4gIHRoZSAgU29mdHdhcmUgIHdpdGhvdXQgcmVzdHJpY3Rpb24sICBpbmNsdWRpbmcKKyAgIHdpdGhvdXQgIGxpbWl0YXRpb24gdGhlICByaWdodHMgIHRvIHVzZSwgIGNvcHksICBtb2RpZnksIG1lcmdlLCAgcHVibGlzaCwKKyAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKKyAgIHBlcnNvbnMgIHRvIHdob20gIHRoZSBTb2Z0d2FyZSAgaXMgIGZ1cm5pc2hlZCB0byAgZG8gc28sICBzdWJqZWN0IHRvICB0aGUKKyAgIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICBUaGUgYWJvdmUgY29weXJpZ2h0ICBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgIHNoYWxsIGJlIGluY2x1ZGVkCisgICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworICAgVEhFICBTT0ZUV0FSRSAgSVMgIFBST1ZJREVEICAiQVMgIElTIiwgIFdJVEhPVVQgIFdBUlJBTlRZICBPRiAgQU5ZICBLSU5ELAorICAgRVhQUkVTUyAgT1IgSU1QTElFRCwgIElOQ0xVRElORyAgQlVUICBOT1QgTElNSVRFRCAgVE8gIFRIRSBXQVJSQU5USUVTICBPRgorICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgorICAgTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICAgREFNQUdFUyBPUiAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSICBJTiBBTiAgQUNUSU9OIE9GIENPTlRSQUNULCAgVE9SVCBPUgorICAgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRQorICAgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyovCiAKIC8qIDB4ODAgKi8gQlRfVFJBSUwsIEJUX1RSQUlMLCBCVF9UUkFJTCwgQlRfVFJBSUwsCiAvKiAweDg0ICovIEJUX1RSQUlMLCBCVF9UUkFJTCwgQlRfVFJBSUwsIEJUX1RSQUlMLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC93YXRjb21jb25maWcuaCBiL01vZHVsZXMvZXhwYXQvd2F0Y29tY29uZmlnLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmMDVlM2YuLjAwMDAwMDAKLS0tIGEvTW9kdWxlcy9leHBhdC93YXRjb21jb25maWcuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLS8qIGV4cGF0X2NvbmZpZy5oIGZvciB1c2Ugd2l0aCBPcGVuIFdhdGNvbSAxLjUgYW5kIGFib3ZlLiAgKi8KLQotI2lmbmRlZiBXQVRDT01DT05GSUdfSAotI2RlZmluZSBXQVRDT01DT05GSUdfSAotCi0jaWZkZWYgX19OVF9fCi0jZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KLSNpbmNsdWRlIDx3aW5kb3dzLmg+Ci0jdW5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTgotI2VuZGlmCi0KLS8qIDEyMzQgPSBMSUxfRU5ESUFOLCA0MzIxID0gQklHRU5ESUFOICovCi0jZGVmaW5lIEJZVEVPUkRFUiAxMjM0Ci0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtbW92ZScgZnVuY3Rpb24uICovCi0jZGVmaW5lIEhBVkVfTUVNTU9WRSAxCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1VOSVNURF9IIDEKLQotLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCi0jZGVmaW5lIFBBQ0tBR0VfQlVHUkVQT1JUICJleHBhdC1idWdzQG1haWwubGliZXhwYXQub3JnIgotCi0vKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0jZGVmaW5lIFBBQ0tBR0VfTkFNRSAiZXhwYXQiCi0KLS8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNkZWZpbmUgUEFDS0FHRV9TVFJJTkcgImV4cGF0IDIuMC4wIgotCi0vKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0jdW5kZWYgUEFDS0FHRV9UQVJOQU1FCi0KLS8qIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0jZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAiMi4wLjAiCi0KLS8qIERlZmluZSB0byBzcGVjaWZ5IGhvdyBtdWNoIGNvbnRleHQgdG8gcmV0YWluIGFyb3VuZCB0aGUgY3VycmVudCBwYXJzZQotICAgcG9pbnQuICovCi0jZGVmaW5lIFhNTF9DT05URVhUX0JZVEVTIDEwMjQKLQotLyogRGVmaW5lIHRvIG1ha2UgcGFyYW1ldGVyIGVudGl0eSBwYXJzaW5nIGZ1bmN0aW9uYWxpdHkgYXZhaWxhYmxlLiAqLwotI2RlZmluZSBYTUxfRFREIDEKLQotLyogRGVmaW5lIHRvIG1ha2UgWE1MIE5hbWVzcGFjZXMgZnVuY3Rpb25hbGl0eSBhdmFpbGFibGUuICovCi0jZGVmaW5lIFhNTF9OUyAxCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3dpbmNvbmZpZy5oIGIvTW9kdWxlcy9leHBhdC93aW5jb25maWcuaAppbmRleCBjMWI3OTFkLi4xN2ZlYTQ2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3dpbmNvbmZpZy5oCisrKyBiL01vZHVsZXMvZXhwYXQvd2luY29uZmlnLmgKQEAgLTEsMTAgKzEsMzMgQEAKLS8qPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKiogQ29weXJpZ2h0IDIwMDAsIENsYXJrIENvb3BlcgotKiogQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSoqCi0qKiBUaGlzIGlzIGZyZWUgc29mdHdhcmUuIFlvdSBhcmUgcGVybWl0dGVkIHRvIGNvcHksIGRpc3RyaWJ1dGUsIG9yIG1vZGlmeQotKiogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBNSVQvWCBsaWNlbnNlIChjb250YWluZWQgaW4gdGhlIENPUFlJTkcgZmlsZQotKiogd2l0aCB0aGlzIGRpc3RyaWJ1dGlvbi4pCisvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fICBfXyAgICAgICAgICAgIF8KKyAgICAgICAgICAgICAgICAgICAgICAgICBfX19cIFwvIC9fIF9fICAgX18gX3wgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8gXyBcXCAgL3wgJ18gXCAvIF9gIHwgX198CisgICAgICAgICAgICAgICAgICAgICAgIHwgIF9fLy8gIFx8IHxfKSB8IChffCB8IHxfCisgICAgICAgICAgICAgICAgICAgICAgICBcX19fL18vXF9cIC5fXy8gXF9fLF98XF9ffAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF98IFhNTCBwYXJzZXIKKworICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDAgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCisgICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxNyBFeHBhdCBkZXZlbG9wbWVudCB0ZWFtCisgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CisKKyAgIFBlcm1pc3Npb24gaXMgIGhlcmVieSBncmFudGVkLCAgZnJlZSBvZiBjaGFyZ2UsICB0byBhbnkgIHBlcnNvbiBvYnRhaW5pbmcKKyAgIGEgIGNvcHkgIG9mICB0aGlzICBzb2Z0d2FyZSAgIGFuZCAgYXNzb2NpYXRlZCAgZG9jdW1lbnRhdGlvbiAgZmlsZXMgICh0aGUKKyAgICJTb2Z0d2FyZSIpLCAgdG8gIGRlYWwgaW4gIHRoZSAgU29mdHdhcmUgIHdpdGhvdXQgcmVzdHJpY3Rpb24sICBpbmNsdWRpbmcKKyAgIHdpdGhvdXQgIGxpbWl0YXRpb24gdGhlICByaWdodHMgIHRvIHVzZSwgIGNvcHksICBtb2RpZnksIG1lcmdlLCAgcHVibGlzaCwKKyAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKKyAgIHBlcnNvbnMgIHRvIHdob20gIHRoZSBTb2Z0d2FyZSAgaXMgIGZ1cm5pc2hlZCB0byAgZG8gc28sICBzdWJqZWN0IHRvICB0aGUKKyAgIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICBUaGUgYWJvdmUgY29weXJpZ2h0ICBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgIHNoYWxsIGJlIGluY2x1ZGVkCisgICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworICAgVEhFICBTT0ZUV0FSRSAgSVMgIFBST1ZJREVEICAiQVMgIElTIiwgIFdJVEhPVVQgIFdBUlJBTlRZICBPRiAgQU5ZICBLSU5ELAorICAgRVhQUkVTUyAgT1IgSU1QTElFRCwgIElOQ0xVRElORyAgQlVUICBOT1QgTElNSVRFRCAgVE8gIFRIRSBXQVJSQU5USUVTICBPRgorICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgorICAgTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICAgREFNQUdFUyBPUiAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSICBJTiBBTiAgQUNUSU9OIE9GIENPTlRSQUNULCAgVE9SVCBPUgorICAgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRQorICAgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICovCiAKICNpZm5kZWYgV0lOQ09ORklHX0gKQEAgLTE3LDYgKzQwLDEyIEBACiAjaW5jbHVkZSA8bWVtb3J5Lmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKKworI2lmIGRlZmluZWQoSEFWRV9FWFBBVF9DT05GSUdfSCkgIC8qIGUuZy4gTWluR1cgKi8KKyMgaW5jbHVkZSA8ZXhwYXRfY29uZmlnLmg+CisjZWxzZSAgLyogIWRlZmluZWQoSEFWRV9FWFBBVF9DT05GSUdfSCkgKi8KKworCiAjZGVmaW5lIFhNTF9OUyAxCiAjZGVmaW5lIFhNTF9EVEQgMQogI2RlZmluZSBYTUxfQ09OVEVYVF9CWVRFUyAxMDI0CkBAIC0yNyw0ICs1Niw4IEBACiAvKiBXaW5kb3dzIGhhcyBtZW1tb3ZlKCkgYXZhaWxhYmxlLiAqLwogI2RlZmluZSBIQVZFX01FTU1PVkUKIAorCisjZW5kaWYgLyogIWRlZmluZWQoSEFWRV9FWFBBVF9DT05GSUdfSCkgKi8KKworCiAjZW5kaWYgLyogbmRlZiBXSU5DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC94bWxwYXJzZS5jIGIvTW9kdWxlcy9leHBhdC94bWxwYXJzZS5jCmluZGV4IDNmMDkzOWUuLmM0ZjNmZmMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQveG1scGFyc2UuYworKysgYi9Nb2R1bGVzL2V4cGF0L3htbHBhcnNlLmMKQEAgLTEsMzcgKzEsMTE1IEBACi0vKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCi0gICBTZWUgdGhlIGZpbGUgQ09QWUlORyBmb3IgY29weWluZyBwZXJtaXNzaW9uLgorLyogMTlhYzQ3NzYwNTE1OTEyMTZmMTg3NGUzNGVlOTliNmE0M2EzNzg0YzhiZDdkNzBlZmViOTI1OGRkMjJiOTA2YSAoMi4yLjYrKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fICBfXyAgICAgICAgICAgIF8KKyAgICAgICAgICAgICAgICAgICAgICAgICBfX19cIFwvIC9fIF9fICAgX18gX3wgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIC8gXyBcXCAgL3wgJ18gXCAvIF9gIHwgX198CisgICAgICAgICAgICAgICAgICAgICAgIHwgIF9fLy8gIFx8IHxfKSB8IChffCB8IHxfCisgICAgICAgICAgICAgICAgICAgICAgICBcX19fL18vXF9cIC5fXy8gXF9fLF98XF9ffAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfF98IFhNTCBwYXJzZXIKKworICAgQ29weXJpZ2h0IChjKSAxOTk3LTIwMDAgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCisgICBDb3B5cmlnaHQgKGMpIDIwMDAtMjAxNyBFeHBhdCBkZXZlbG9wbWVudCB0ZWFtCisgICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2U6CisKKyAgIFBlcm1pc3Npb24gaXMgIGhlcmVieSBncmFudGVkLCAgZnJlZSBvZiBjaGFyZ2UsICB0byBhbnkgIHBlcnNvbiBvYnRhaW5pbmcKKyAgIGEgIGNvcHkgIG9mICB0aGlzICBzb2Z0d2FyZSAgIGFuZCAgYXNzb2NpYXRlZCAgZG9jdW1lbnRhdGlvbiAgZmlsZXMgICh0aGUKKyAgICJTb2Z0d2FyZSIpLCAgdG8gIGRlYWwgaW4gIHRoZSAgU29mdHdhcmUgIHdpdGhvdXQgcmVzdHJpY3Rpb24sICBpbmNsdWRpbmcKKyAgIHdpdGhvdXQgIGxpbWl0YXRpb24gdGhlICByaWdodHMgIHRvIHVzZSwgIGNvcHksICBtb2RpZnksIG1lcmdlLCAgcHVibGlzaCwKKyAgIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKKyAgIHBlcnNvbnMgIHRvIHdob20gIHRoZSBTb2Z0d2FyZSAgaXMgIGZ1cm5pc2hlZCB0byAgZG8gc28sICBzdWJqZWN0IHRvICB0aGUKKyAgIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICBUaGUgYWJvdmUgY29weXJpZ2h0ICBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgIHNoYWxsIGJlIGluY2x1ZGVkCisgICBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworICAgVEhFICBTT0ZUV0FSRSAgSVMgIFBST1ZJREVEICAiQVMgIElTIiwgIFdJVEhPVVQgIFdBUlJBTlRZICBPRiAgQU5ZICBLSU5ELAorICAgRVhQUkVTUyAgT1IgSU1QTElFRCwgIElOQ0xVRElORyAgQlVUICBOT1QgTElNSVRFRCAgVE8gIFRIRSBXQVJSQU5USUVTICBPRgorICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTgorICAgTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLAorICAgREFNQUdFUyBPUiAgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSICBJTiBBTiAgQUNUSU9OIE9GIENPTlRSQUNULCAgVE9SVCBPUgorICAgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRQorICAgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KICovCiAKKyNpZiAhZGVmaW5lZChfR05VX1NPVVJDRSkKKyMgZGVmaW5lIF9HTlVfU09VUkNFIDEgICAgICAgICAgICAgICAgICAvKiBzeXNjYWxsIHByb3RvdHlwZSAqLworI2VuZGlmCisKICNpbmNsdWRlIDxzdGRkZWYuaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4gICAgICAgICAgICAgICAgICAgICAvKiBtZW1zZXQoKSwgbWVtY3B5KCkgKi8KICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxsaW1pdHMuaD4gICAgICAgICAgICAgICAgICAgICAvKiBVSU5UX01BWCAqLworI2luY2x1ZGUgPHN0ZGlvLmg+ICAgICAgICAgICAgICAgICAgICAgIC8qIGZwcmludGYgKi8KKyNpbmNsdWRlIDxzdGRsaWIuaD4gICAgICAgICAgICAgICAgICAgICAvKiBnZXRlbnYgKi8KIAotI2lmZGVmIENPTVBJTEVEX0ZST01fRFNQCisjaWZkZWYgX1dJTjMyCiAjZGVmaW5lIGdldHBpZCBHZXRDdXJyZW50UHJvY2Vzc0lkCiAjZWxzZQogI2luY2x1ZGUgPHN5cy90aW1lLmg+ICAgICAgICAgICAgICAgICAgIC8qIGdldHRpbWVvZmRheSgpICovCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+ICAgICAgICAgICAgICAgICAgLyogZ2V0cGlkKCkgKi8KICNpbmNsdWRlIDx1bmlzdGQuaD4gICAgICAgICAgICAgICAgICAgICAvKiBnZXRwaWQoKSAqLworI2luY2x1ZGUgPGZjbnRsLmg+ICAgICAgICAgICAgICAgICAgICAgIC8qIE9fUkRPTkxZICovCisjaW5jbHVkZSA8ZXJybm8uaD4KICNlbmRpZgogCiAjZGVmaW5lIFhNTF9CVUlMRElOR19FWFBBVCAxCiAKLSNpZmRlZiBDT01QSUxFRF9GUk9NX0RTUAorI2lmZGVmIF9XSU4zMgogI2luY2x1ZGUgIndpbmNvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChNQUNPU19DTEFTU0lDKQotI2luY2x1ZGUgIm1hY2NvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChfX2FtaWdhb3NfXykKLSNpbmNsdWRlICJhbWlnYWNvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChfX1dBVENPTUNfXykKLSNpbmNsdWRlICJ3YXRjb21jb25maWcuaCIKICNlbGlmIGRlZmluZWQoSEFWRV9FWFBBVF9DT05GSUdfSCkKICNpbmNsdWRlIDxleHBhdF9jb25maWcuaD4KLSNlbmRpZiAvKiBuZGVmIENPTVBJTEVEX0ZST01fRFNQICovCisjZW5kaWYgLyogbmRlZiBfV0lOMzIgKi8KIAogI2luY2x1ZGUgImFzY2lpLmgiCiAjaW5jbHVkZSAiZXhwYXQuaCIKKyNpbmNsdWRlICJzaXBoYXNoLmgiCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NKSB8fCBkZWZpbmVkKEhBVkVfU1lTQ0FMTF9HRVRSQU5ET00pCisjIGlmIGRlZmluZWQoSEFWRV9HRVRSQU5ET00pCisjICBpbmNsdWRlIDxzeXMvcmFuZG9tLmg+ICAgIC8qIGdldHJhbmRvbSAqLworIyBlbHNlCisjICBpbmNsdWRlIDx1bmlzdGQuaD4gICAgICAgIC8qIHN5c2NhbGwgKi8KKyMgIGluY2x1ZGUgPHN5cy9zeXNjYWxsLmg+ICAgLyogU1lTX2dldHJhbmRvbSAqLworIyBlbmRpZgorIyBpZiAhIGRlZmluZWQoR1JORF9OT05CTE9DSykKKyMgIGRlZmluZSBHUk5EX05PTkJMT0NLICAweDAwMDEKKyMgZW5kaWYgIC8qIGRlZmluZWQoR1JORF9OT05CTE9DSykgKi8KKyNlbmRpZiAgLyogZGVmaW5lZChIQVZFX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChIQVZFX1NZU0NBTExfR0VUUkFORE9NKSAqLworCisjaWYgZGVmaW5lZChIQVZFX0xJQkJTRCkgXAorICAgICYmIChkZWZpbmVkKEhBVkVfQVJDNFJBTkRPTV9CVUYpIHx8IGRlZmluZWQoSEFWRV9BUkM0UkFORE9NKSkKKyMgaW5jbHVkZSA8YnNkL3N0ZGxpYi5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoTE9BRF9MSUJSQVJZX1NFQVJDSF9TWVNURU0zMikKKyMgZGVmaW5lIExPQURfTElCUkFSWV9TRUFSQ0hfU1lTVEVNMzIgIDB4MDAwMDA4MDAKKyNlbmRpZgorCisjaWYgIWRlZmluZWQoSEFWRV9HRVRSQU5ET00pICYmICFkZWZpbmVkKEhBVkVfU1lTQ0FMTF9HRVRSQU5ET00pIFwKKyAgICAmJiAhZGVmaW5lZChIQVZFX0FSQzRSQU5ET01fQlVGKSAmJiAhZGVmaW5lZChIQVZFX0FSQzRSQU5ET00pIFwKKyAgICAmJiAhZGVmaW5lZChYTUxfREVWX1VSQU5ET00pIFwKKyAgICAmJiAhZGVmaW5lZChfV0lOMzIpIFwKKyAgICAmJiAhZGVmaW5lZChYTUxfUE9PUl9FTlRST1BZKQorIyBlcnJvciAgXAorICAgIFlvdSBkbyBub3QgaGF2ZSBzdXBwb3J0IGZvciBhbnkgc291cmNlcyBvZiBoaWdoIHF1YWxpdHkgZW50cm9weSBcCisgICAgZW5hYmxlZC4gIEZvciBlbmQgdXNlciBzZWN1cml0eSwgdGhhdCBpcyBwcm9iYWJseSBub3Qgd2hhdCB5b3Ugd2FudC4gXAorICAgIFwKKyAgICBZb3VyIG9wdGlvbnMgaW5jbHVkZTogXAorICAgICAgKiBMaW51eCArIGdsaWJjID49Mi4yNSAoZ2V0cmFuZG9tKTogSEFWRV9HRVRSQU5ET00sIFwKKyAgICAgICogTGludXggKyBnbGliYyA8Mi4yNSAoc3lzY2FsbCBTWVNfZ2V0cmFuZG9tKTogSEFWRV9TWVNDQUxMX0dFVFJBTkRPTSwgXAorICAgICAgKiBCU0QgLyBtYWNPUyA+PTEwLjcgKGFyYzRyYW5kb21fYnVmKTogSEFWRV9BUkM0UkFORE9NX0JVRiwgXAorICAgICAgKiBCU0QgLyBtYWNPUyA8MTAuNyAoYXJjNHJhbmRvbSk6IEhBVkVfQVJDNFJBTkRPTSwgXAorICAgICAgKiBsaWJic2QgKGFyYzRyYW5kb21fYnVmKTogSEFWRV9BUkM0UkFORE9NX0JVRiArIEhBVkVfTElCQlNELCBcCisgICAgICAqIGxpYmJzZCAoYXJjNHJhbmRvbSk6IEhBVkVfQVJDNFJBTkRPTSArIEhBVkVfTElCQlNELCBcCisgICAgICAqIExpbnV4IC8gQlNEIC8gbWFjT1MgKC9kZXYvdXJhbmRvbSk6IFhNTF9ERVZfVVJBTkRPTSBcCisgICAgICAqIFdpbmRvd3MgKFJ0bEdlblJhbmRvbSk6IF9XSU4zMi4gXAorICAgIFwKKyAgICBJZiBpbnNpc3Qgb24gbm90IHVzaW5nIGFueSBvZiB0aGVzZSwgYnlwYXNzIHRoaXMgZXJyb3IgYnkgZGVmaW5pbmcgXAorICAgIFhNTF9QT09SX0VOVFJPUFk7IHlvdSBoYXZlIGJlZW4gd2FybmVkLiBcCisgICAgXAorICAgIElmIHlvdSBoYXZlIHJlYXNvbnMgdG8gcGF0Y2ggdGhpcyBkZXRlY3Rpb24gY29kZSBhd2F5IG9yIG5lZWQgY2hhbmdlcyBcCisgICAgdG8gdGhlIGJ1aWxkIHN5c3RlbSwgcGxlYXNlIG9wZW4gYSBidWcuICBUaGFuayB5b3UhCisjZW5kaWYKKwogCiAjaWZkZWYgWE1MX1VOSUNPREUKICNkZWZpbmUgWE1MX0VOQ09ERV9NQVggWE1MX1VURjE2X0VOQ09ERV9NQVgKQEAgLTgzLDYgKzE2MSw5IEBACiAvKiBSb3VuZCB1cCBuIHRvIGJlIGEgbXVsdGlwbGUgb2Ygc3osIHdoZXJlIHN6IGlzIGEgcG93ZXIgb2YgMi4gKi8KICNkZWZpbmUgUk9VTkRfVVAobiwgc3opICgoKG4pICsgKChzeikgLSAxKSkgJiB+KChzeikgLSAxKSkKIAorLyogRG8gc2FmZSAoTlVMTC1hd2FyZSkgcG9pbnRlciBhcml0aG1ldGljICovCisjZGVmaW5lIEVYUEFUX1NBRkVfUFRSX0RJRkYocCwgcSkgKCgocCkgJiYgKHEpKSA/ICgocCkgLSAocSkpIDogMCkKKwogLyogSGFuZGxlIHRoZSBjYXNlIHdoZXJlIG1lbW1vdmUoKSBkb2Vzbid0IGV4aXN0LiAqLwogI2lmbmRlZiBIQVZFX01FTU1PVkUKICNpZmRlZiBIQVZFX0JDT1BZCkBAIC0xMTAsMTcgKzE5MSwxMSBAQAogICBjb25zdCBYTUxfTWVtb3J5X0hhbmRsaW5nX1N1aXRlICptZW07CiB9IEhBU0hfVEFCTEU7CiAKLS8qIEJhc2ljIGNoYXJhY3RlciBoYXNoIGFsZ29yaXRobSwgdGFrZW4gZnJvbSBQeXRob24ncyBzdHJpbmcgaGFzaDoKLSAgIGggPSBoICogMTAwMDAwMyBeIGNoYXJhY3RlciwgdGhlIGNvbnN0YW50IGJlaW5nIGEgcHJpbWUgbnVtYmVyLgorc3RhdGljIHNpemVfdAora2V5bGVuKEtFWSBzKTsKIAotKi8KLSNpZmRlZiBYTUxfVU5JQ09ERQotI2RlZmluZSBDSEFSX0hBU0goaCwgYykgXAotICAoKChoKSAqIDB4RjQyNDMpIF4gKHVuc2lnbmVkIHNob3J0KShjKSkKLSNlbHNlCi0jZGVmaW5lIENIQVJfSEFTSChoLCBjKSBcCi0gICgoKGgpICogMHhGNDI0MykgXiAodW5zaWduZWQgY2hhcikoYykpCi0jZW5kaWYKK3N0YXRpYyB2b2lkCitjb3B5X3NhbHRfdG9fc2lwa2V5KFhNTF9QYXJzZXIgcGFyc2VyLCBzdHJ1Y3Qgc2lwa2V5ICoga2V5KTsKIAogLyogRm9yIHByb2JpbmcgKGFmdGVyIGEgY29sbGlzaW9uKSB3ZSBuZWVkIGEgc3RlcCBzaXplIHJlbGF0aXZlIHByaW1lCiAgICB0byB0aGUgaGFzaCB0YWJsZSBzaXplLCB3aGljaCBpcyBhIHBvd2VyIG9mIDIuIFdlIHVzZSBkb3VibGUtaGFzaGluZywKQEAgLTM1Niw2ICs0MzEsOCBAQAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwgY29uc3QgY2hhciAqKm5leHRQdHIsIFhNTF9Cb29sIGhhdmVNb3JlKTsKICNlbmRpZiAvKiBYTUxfRFREICovCiAKK3N0YXRpYyB2b2lkCitmcmVlQmluZGluZ3MoWE1MX1BhcnNlciBwYXJzZXIsIEJJTkRJTkcgKmJpbmRpbmdzKTsKIHN0YXRpYyBlbnVtIFhNTF9FcnJvcgogc3RvcmVBdHRzKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBFTkNPRElORyAqLCBjb25zdCBjaGFyICpzLAogICAgICAgICAgIFRBR19OQU1FICp0YWdOYW1lUHRyLCBCSU5ESU5HICoqYmluZGluZ3NQdHIpOwpAQCAtMzk2LDcgKzQ3Myw3IEBACiBzdGF0aWMgdm9pZCBGQVNUQ0FMTCBub3JtYWxpemVQdWJsaWNJZChYTUxfQ2hhciAqcyk7CiAKIHN0YXRpYyBEVEQgKiBkdGRDcmVhdGUoY29uc3QgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSAqbXMpOwotLyogZG8gbm90IGNhbGwgaWYgcGFyZW50UGFyc2VyICE9IE5VTEwgKi8KKy8qIGRvIG5vdCBjYWxsIGlmIG1fcGFyZW50UGFyc2VyICE9IE5VTEwgKi8KIHN0YXRpYyB2b2lkIGR0ZFJlc2V0KERURCAqcCwgY29uc3QgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSAqbXMpOwogc3RhdGljIHZvaWQKIGR0ZERlc3Ryb3koRFREICpwLCBYTUxfQm9vbCBpc0RvY0VudGl0eSwgY29uc3QgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSAqbXMpOwpAQCAtNDQwLDYgKzUxNyw5IEBACiBnZXRFbGVtZW50VHlwZShYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcgKmVuYywKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwgY29uc3QgY2hhciAqZW5kKTsKIAorc3RhdGljIFhNTF9DaGFyICpjb3B5U3RyaW5nKGNvbnN0IFhNTF9DaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFhNTF9NZW1vcnlfSGFuZGxpbmdfU3VpdGUgKm1lbXN1aXRlKTsKKwogc3RhdGljIHVuc2lnbmVkIGxvbmcgZ2VuZXJhdGVfaGFzaF9zZWNyZXRfc2FsdChYTUxfUGFyc2VyIHBhcnNlcik7CiBzdGF0aWMgWE1MX0Jvb2wgc3RhcnRQYXJzaW5nKFhNTF9QYXJzZXIgcGFyc2VyKTsKIApAQCAtNDY1LDcgKzU0NSw3IEBACiAgICA6ICgoKigocG9vbCktPnB0cikrKyA9IGMpLCAxKSkKIAogc3RydWN0IFhNTF9QYXJzZXJTdHJ1Y3QgewotICAvKiBUaGUgZmlyc3QgbWVtYmVyIG11c3QgYmUgdXNlckRhdGEgc28gdGhhdCB0aGUgWE1MX0dldFVzZXJEYXRhCisgIC8qIFRoZSBmaXJzdCBtZW1iZXIgbXVzdCBiZSBtX3VzZXJEYXRhIHNvIHRoYXQgdGhlIFhNTF9HZXRVc2VyRGF0YQogICAgICBtYWNybyB3b3Jrcy4gKi8KICAgdm9pZCAqbV91c2VyRGF0YTsKICAgdm9pZCAqbV9oYW5kbGVyQXJnOwpAQCAtNDc1LDcgKzU1NSw3IEBACiAgIGNvbnN0IGNoYXIgKm1fYnVmZmVyUHRyOwogICAvKiBwYXN0IGxhc3QgY2hhcmFjdGVyIHRvIGJlIHBhcnNlZCAqLwogICBjaGFyICptX2J1ZmZlckVuZDsKLSAgLyogYWxsb2NhdGVkIGVuZCBvZiBidWZmZXIgKi8KKyAgLyogYWxsb2NhdGVkIGVuZCBvZiBtX2J1ZmZlciAqLwogICBjb25zdCBjaGFyICptX2J1ZmZlckxpbTsKICAgWE1MX0luZGV4IG1fcGFyc2VFbmRCeXRlSW5kZXg7CiAgIGNvbnN0IGNoYXIgKm1fcGFyc2VFbmRQdHI7CkBAIC01NjcsMTEzICs2NDcsMTAgQEAKICAgdW5zaWduZWQgbG9uZyBtX2hhc2hfc2VjcmV0X3NhbHQ7CiB9OwogCi0jZGVmaW5lIE1BTExPQyhzKSAocGFyc2VyLT5tX21lbS5tYWxsb2NfZmNuKChzKSkpCi0jZGVmaW5lIFJFQUxMT0MocCxzKSAocGFyc2VyLT5tX21lbS5yZWFsbG9jX2ZjbigocCksKHMpKSkKLSNkZWZpbmUgRlJFRShwKSAocGFyc2VyLT5tX21lbS5mcmVlX2ZjbigocCkpKQorI2RlZmluZSBNQUxMT0MocGFyc2VyLCBzKSAgICAgIChwYXJzZXItPm1fbWVtLm1hbGxvY19mY24oKHMpKSkKKyNkZWZpbmUgUkVBTExPQyhwYXJzZXIsIHAsIHMpICAocGFyc2VyLT5tX21lbS5yZWFsbG9jX2ZjbigocCksKHMpKSkKKyNkZWZpbmUgRlJFRShwYXJzZXIsIHApICAgICAgICAocGFyc2VyLT5tX21lbS5mcmVlX2ZjbigocCkpKQogCi0jZGVmaW5lIHVzZXJEYXRhIChwYXJzZXItPm1fdXNlckRhdGEpCi0jZGVmaW5lIGhhbmRsZXJBcmcgKHBhcnNlci0+bV9oYW5kbGVyQXJnKQotI2RlZmluZSBzdGFydEVsZW1lbnRIYW5kbGVyIChwYXJzZXItPm1fc3RhcnRFbGVtZW50SGFuZGxlcikKLSNkZWZpbmUgZW5kRWxlbWVudEhhbmRsZXIgKHBhcnNlci0+bV9lbmRFbGVtZW50SGFuZGxlcikKLSNkZWZpbmUgY2hhcmFjdGVyRGF0YUhhbmRsZXIgKHBhcnNlci0+bV9jaGFyYWN0ZXJEYXRhSGFuZGxlcikKLSNkZWZpbmUgcHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciBcCi0gICAgICAgIChwYXJzZXItPm1fcHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcikKLSNkZWZpbmUgY29tbWVudEhhbmRsZXIgKHBhcnNlci0+bV9jb21tZW50SGFuZGxlcikKLSNkZWZpbmUgc3RhcnRDZGF0YVNlY3Rpb25IYW5kbGVyIFwKLSAgICAgICAgKHBhcnNlci0+bV9zdGFydENkYXRhU2VjdGlvbkhhbmRsZXIpCi0jZGVmaW5lIGVuZENkYXRhU2VjdGlvbkhhbmRsZXIgKHBhcnNlci0+bV9lbmRDZGF0YVNlY3Rpb25IYW5kbGVyKQotI2RlZmluZSBkZWZhdWx0SGFuZGxlciAocGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKQotI2RlZmluZSBzdGFydERvY3R5cGVEZWNsSGFuZGxlciAocGFyc2VyLT5tX3N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKQotI2RlZmluZSBlbmREb2N0eXBlRGVjbEhhbmRsZXIgKHBhcnNlci0+bV9lbmREb2N0eXBlRGVjbEhhbmRsZXIpCi0jZGVmaW5lIHVucGFyc2VkRW50aXR5RGVjbEhhbmRsZXIgXAotICAgICAgICAocGFyc2VyLT5tX3VucGFyc2VkRW50aXR5RGVjbEhhbmRsZXIpCi0jZGVmaW5lIG5vdGF0aW9uRGVjbEhhbmRsZXIgKHBhcnNlci0+bV9ub3RhdGlvbkRlY2xIYW5kbGVyKQotI2RlZmluZSBzdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyIFwKLSAgICAgICAgKHBhcnNlci0+bV9zdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyKQotI2RlZmluZSBlbmROYW1lc3BhY2VEZWNsSGFuZGxlciAocGFyc2VyLT5tX2VuZE5hbWVzcGFjZURlY2xIYW5kbGVyKQotI2RlZmluZSBub3RTdGFuZGFsb25lSGFuZGxlciAocGFyc2VyLT5tX25vdFN0YW5kYWxvbmVIYW5kbGVyKQotI2RlZmluZSBleHRlcm5hbEVudGl0eVJlZkhhbmRsZXIgXAotICAgICAgICAocGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlcikKLSNkZWZpbmUgZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnIFwKLSAgICAgICAgKHBhcnNlci0+bV9leHRlcm5hbEVudGl0eVJlZkhhbmRsZXJBcmcpCi0jZGVmaW5lIGludGVybmFsRW50aXR5UmVmSGFuZGxlciBcCi0gICAgICAgIChwYXJzZXItPm1faW50ZXJuYWxFbnRpdHlSZWZIYW5kbGVyKQotI2RlZmluZSBza2lwcGVkRW50aXR5SGFuZGxlciAocGFyc2VyLT5tX3NraXBwZWRFbnRpdHlIYW5kbGVyKQotI2RlZmluZSB1bmtub3duRW5jb2RpbmdIYW5kbGVyIChwYXJzZXItPm1fdW5rbm93bkVuY29kaW5nSGFuZGxlcikKLSNkZWZpbmUgZWxlbWVudERlY2xIYW5kbGVyIChwYXJzZXItPm1fZWxlbWVudERlY2xIYW5kbGVyKQotI2RlZmluZSBhdHRsaXN0RGVjbEhhbmRsZXIgKHBhcnNlci0+bV9hdHRsaXN0RGVjbEhhbmRsZXIpCi0jZGVmaW5lIGVudGl0eURlY2xIYW5kbGVyIChwYXJzZXItPm1fZW50aXR5RGVjbEhhbmRsZXIpCi0jZGVmaW5lIHhtbERlY2xIYW5kbGVyIChwYXJzZXItPm1feG1sRGVjbEhhbmRsZXIpCi0jZGVmaW5lIGVuY29kaW5nIChwYXJzZXItPm1fZW5jb2RpbmcpCi0jZGVmaW5lIGluaXRFbmNvZGluZyAocGFyc2VyLT5tX2luaXRFbmNvZGluZykKLSNkZWZpbmUgaW50ZXJuYWxFbmNvZGluZyAocGFyc2VyLT5tX2ludGVybmFsRW5jb2RpbmcpCi0jZGVmaW5lIHVua25vd25FbmNvZGluZ01lbSAocGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ01lbSkKLSNkZWZpbmUgdW5rbm93bkVuY29kaW5nRGF0YSAocGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ0RhdGEpCi0jZGVmaW5lIHVua25vd25FbmNvZGluZ0hhbmRsZXJEYXRhIFwKLSAgKHBhcnNlci0+bV91bmtub3duRW5jb2RpbmdIYW5kbGVyRGF0YSkKLSNkZWZpbmUgdW5rbm93bkVuY29kaW5nUmVsZWFzZSAocGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ1JlbGVhc2UpCi0jZGVmaW5lIHByb3RvY29sRW5jb2RpbmdOYW1lIChwYXJzZXItPm1fcHJvdG9jb2xFbmNvZGluZ05hbWUpCi0jZGVmaW5lIG5zIChwYXJzZXItPm1fbnMpCi0jZGVmaW5lIG5zX3RyaXBsZXRzIChwYXJzZXItPm1fbnNfdHJpcGxldHMpCi0jZGVmaW5lIHByb2xvZ1N0YXRlIChwYXJzZXItPm1fcHJvbG9nU3RhdGUpCi0jZGVmaW5lIHByb2Nlc3NvciAocGFyc2VyLT5tX3Byb2Nlc3NvcikKLSNkZWZpbmUgZXJyb3JDb2RlIChwYXJzZXItPm1fZXJyb3JDb2RlKQotI2RlZmluZSBldmVudFB0ciAocGFyc2VyLT5tX2V2ZW50UHRyKQotI2RlZmluZSBldmVudEVuZFB0ciAocGFyc2VyLT5tX2V2ZW50RW5kUHRyKQotI2RlZmluZSBwb3NpdGlvblB0ciAocGFyc2VyLT5tX3Bvc2l0aW9uUHRyKQotI2RlZmluZSBwb3NpdGlvbiAocGFyc2VyLT5tX3Bvc2l0aW9uKQotI2RlZmluZSBvcGVuSW50ZXJuYWxFbnRpdGllcyAocGFyc2VyLT5tX29wZW5JbnRlcm5hbEVudGl0aWVzKQotI2RlZmluZSBmcmVlSW50ZXJuYWxFbnRpdGllcyAocGFyc2VyLT5tX2ZyZWVJbnRlcm5hbEVudGl0aWVzKQotI2RlZmluZSBkZWZhdWx0RXhwYW5kSW50ZXJuYWxFbnRpdGllcyBcCi0gICAgICAgIChwYXJzZXItPm1fZGVmYXVsdEV4cGFuZEludGVybmFsRW50aXRpZXMpCi0jZGVmaW5lIHRhZ0xldmVsIChwYXJzZXItPm1fdGFnTGV2ZWwpCi0jZGVmaW5lIGJ1ZmZlciAocGFyc2VyLT5tX2J1ZmZlcikKLSNkZWZpbmUgYnVmZmVyUHRyIChwYXJzZXItPm1fYnVmZmVyUHRyKQotI2RlZmluZSBidWZmZXJFbmQgKHBhcnNlci0+bV9idWZmZXJFbmQpCi0jZGVmaW5lIHBhcnNlRW5kQnl0ZUluZGV4IChwYXJzZXItPm1fcGFyc2VFbmRCeXRlSW5kZXgpCi0jZGVmaW5lIHBhcnNlRW5kUHRyIChwYXJzZXItPm1fcGFyc2VFbmRQdHIpCi0jZGVmaW5lIGJ1ZmZlckxpbSAocGFyc2VyLT5tX2J1ZmZlckxpbSkKLSNkZWZpbmUgZGF0YUJ1ZiAocGFyc2VyLT5tX2RhdGFCdWYpCi0jZGVmaW5lIGRhdGFCdWZFbmQgKHBhcnNlci0+bV9kYXRhQnVmRW5kKQotI2RlZmluZSBfZHRkIChwYXJzZXItPm1fZHRkKQotI2RlZmluZSBjdXJCYXNlIChwYXJzZXItPm1fY3VyQmFzZSkKLSNkZWZpbmUgZGVjbEVudGl0eSAocGFyc2VyLT5tX2RlY2xFbnRpdHkpCi0jZGVmaW5lIGRvY3R5cGVOYW1lIChwYXJzZXItPm1fZG9jdHlwZU5hbWUpCi0jZGVmaW5lIGRvY3R5cGVTeXNpZCAocGFyc2VyLT5tX2RvY3R5cGVTeXNpZCkKLSNkZWZpbmUgZG9jdHlwZVB1YmlkIChwYXJzZXItPm1fZG9jdHlwZVB1YmlkKQotI2RlZmluZSBkZWNsQXR0cmlidXRlVHlwZSAocGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVUeXBlKQotI2RlZmluZSBkZWNsTm90YXRpb25OYW1lIChwYXJzZXItPm1fZGVjbE5vdGF0aW9uTmFtZSkKLSNkZWZpbmUgZGVjbE5vdGF0aW9uUHVibGljSWQgKHBhcnNlci0+bV9kZWNsTm90YXRpb25QdWJsaWNJZCkKLSNkZWZpbmUgZGVjbEVsZW1lbnRUeXBlIChwYXJzZXItPm1fZGVjbEVsZW1lbnRUeXBlKQotI2RlZmluZSBkZWNsQXR0cmlidXRlSWQgKHBhcnNlci0+bV9kZWNsQXR0cmlidXRlSWQpCi0jZGVmaW5lIGRlY2xBdHRyaWJ1dGVJc0NkYXRhIChwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZUlzQ2RhdGEpCi0jZGVmaW5lIGRlY2xBdHRyaWJ1dGVJc0lkIChwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZUlzSWQpCi0jZGVmaW5lIGZyZWVUYWdMaXN0IChwYXJzZXItPm1fZnJlZVRhZ0xpc3QpCi0jZGVmaW5lIGZyZWVCaW5kaW5nTGlzdCAocGFyc2VyLT5tX2ZyZWVCaW5kaW5nTGlzdCkKLSNkZWZpbmUgaW5oZXJpdGVkQmluZGluZ3MgKHBhcnNlci0+bV9pbmhlcml0ZWRCaW5kaW5ncykKLSNkZWZpbmUgdGFnU3RhY2sgKHBhcnNlci0+bV90YWdTdGFjaykKLSNkZWZpbmUgYXR0cyAocGFyc2VyLT5tX2F0dHMpCi0jZGVmaW5lIGF0dHNTaXplIChwYXJzZXItPm1fYXR0c1NpemUpCi0jZGVmaW5lIG5TcGVjaWZpZWRBdHRzIChwYXJzZXItPm1fblNwZWNpZmllZEF0dHMpCi0jZGVmaW5lIGlkQXR0SW5kZXggKHBhcnNlci0+bV9pZEF0dEluZGV4KQotI2RlZmluZSBuc0F0dHMgKHBhcnNlci0+bV9uc0F0dHMpCi0jZGVmaW5lIG5zQXR0c1ZlcnNpb24gKHBhcnNlci0+bV9uc0F0dHNWZXJzaW9uKQotI2RlZmluZSBuc0F0dHNQb3dlciAocGFyc2VyLT5tX25zQXR0c1Bvd2VyKQotI2RlZmluZSBhdHRJbmZvIChwYXJzZXItPm1fYXR0SW5mbykKLSNkZWZpbmUgdGVtcFBvb2wgKHBhcnNlci0+bV90ZW1wUG9vbCkKLSNkZWZpbmUgdGVtcDJQb29sIChwYXJzZXItPm1fdGVtcDJQb29sKQotI2RlZmluZSBncm91cENvbm5lY3RvciAocGFyc2VyLT5tX2dyb3VwQ29ubmVjdG9yKQotI2RlZmluZSBncm91cFNpemUgKHBhcnNlci0+bV9ncm91cFNpemUpCi0jZGVmaW5lIG5hbWVzcGFjZVNlcGFyYXRvciAocGFyc2VyLT5tX25hbWVzcGFjZVNlcGFyYXRvcikKLSNkZWZpbmUgcGFyZW50UGFyc2VyIChwYXJzZXItPm1fcGFyZW50UGFyc2VyKQotI2RlZmluZSBwc19wYXJzaW5nIChwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nKQotI2RlZmluZSBwc19maW5hbEJ1ZmZlciAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIpCi0jaWZkZWYgWE1MX0RURAotI2RlZmluZSBpc1BhcmFtRW50aXR5IChwYXJzZXItPm1faXNQYXJhbUVudGl0eSkKLSNkZWZpbmUgdXNlRm9yZWlnbkRURCAocGFyc2VyLT5tX3VzZUZvcmVpZ25EVEQpCi0jZGVmaW5lIHBhcmFtRW50aXR5UGFyc2luZyAocGFyc2VyLT5tX3BhcmFtRW50aXR5UGFyc2luZykKLSNlbmRpZiAvKiBYTUxfRFREICovCi0jZGVmaW5lIGhhc2hfc2VjcmV0X3NhbHQgKHBhcnNlci0+bV9oYXNoX3NlY3JldF9zYWx0KQogCiBYTUxfUGFyc2VyIFhNTENBTEwKIFhNTF9QYXJzZXJDcmVhdGUoY29uc3QgWE1MX0NoYXIgKmVuY29kaW5nTmFtZSkKQEAgLTY5OCwxMCArNjc1LDEzOCBAQAogICBBU0NJSV9zLCBBU0NJSV9wLCBBU0NJSV9hLCBBU0NJSV9jLCBBU0NJSV9lLCAnXDAnCiB9OwogCisKKy8qIFRvIGF2b2lkIHdhcm5pbmdzIGFib3V0IHVudXNlZCBmdW5jdGlvbnM6ICovCisjaWYgISBkZWZpbmVkKEhBVkVfQVJDNFJBTkRPTV9CVUYpICYmICEgZGVmaW5lZChIQVZFX0FSQzRSQU5ET00pCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NKSB8fCBkZWZpbmVkKEhBVkVfU1lTQ0FMTF9HRVRSQU5ET00pCisKKy8qIE9idGFpbiBlbnRyb3B5IG9uIExpbnV4IDMuMTcrICovCitzdGF0aWMgaW50Cit3cml0ZVJhbmRvbUJ5dGVzX2dldHJhbmRvbV9ub25ibG9jayh2b2lkICogdGFyZ2V0LCBzaXplX3QgY291bnQpIHsKKyAgaW50IHN1Y2Nlc3MgPSAwOyAgLyogZnVsbCBjb3VudCBieXRlcyB3cml0dGVuPyAqLworICBzaXplX3QgYnl0ZXNXcml0dGVuVG90YWwgPSAwOworICBjb25zdCB1bnNpZ25lZCBpbnQgZ2V0cmFuZG9tRmxhZ3MgPSBHUk5EX05PTkJMT0NLOworCisgIGRvIHsKKyAgICB2b2lkICogY29uc3QgY3VycmVudFRhcmdldCA9ICh2b2lkKikoKGNoYXIqKXRhcmdldCArIGJ5dGVzV3JpdHRlblRvdGFsKTsKKyAgICBjb25zdCBzaXplX3QgYnl0ZXNUb1dyaXRlID0gY291bnQgLSBieXRlc1dyaXR0ZW5Ub3RhbDsKKworICAgIGNvbnN0IGludCBieXRlc1dyaXR0ZW5Nb3JlID0KKyNpZiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NKQorICAgICAgICBnZXRyYW5kb20oY3VycmVudFRhcmdldCwgYnl0ZXNUb1dyaXRlLCBnZXRyYW5kb21GbGFncyk7CisjZWxzZQorICAgICAgICBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGN1cnJlbnRUYXJnZXQsIGJ5dGVzVG9Xcml0ZSwgZ2V0cmFuZG9tRmxhZ3MpOworI2VuZGlmCisKKyAgICBpZiAoYnl0ZXNXcml0dGVuTW9yZSA+IDApIHsKKyAgICAgIGJ5dGVzV3JpdHRlblRvdGFsICs9IGJ5dGVzV3JpdHRlbk1vcmU7CisgICAgICBpZiAoYnl0ZXNXcml0dGVuVG90YWwgPj0gY291bnQpCisgICAgICAgIHN1Y2Nlc3MgPSAxOworICAgIH0KKyAgfSB3aGlsZSAoISBzdWNjZXNzICYmIChlcnJubyA9PSBFSU5UUikpOworCisgIHJldHVybiBzdWNjZXNzOworfQorCisjZW5kaWYgIC8qIGRlZmluZWQoSEFWRV9HRVRSQU5ET00pIHx8IGRlZmluZWQoSEFWRV9TWVNDQUxMX0dFVFJBTkRPTSkgKi8KKworCisjaWYgISBkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5lZChYTUxfREVWX1VSQU5ET00pCisKKy8qIEV4dHJhY3QgZW50cm9weSBmcm9tIC9kZXYvdXJhbmRvbSAqLworc3RhdGljIGludAord3JpdGVSYW5kb21CeXRlc19kZXZfdXJhbmRvbSh2b2lkICogdGFyZ2V0LCBzaXplX3QgY291bnQpIHsKKyAgaW50IHN1Y2Nlc3MgPSAwOyAgLyogZnVsbCBjb3VudCBieXRlcyB3cml0dGVuPyAqLworICBzaXplX3QgYnl0ZXNXcml0dGVuVG90YWwgPSAwOworCisgIGNvbnN0IGludCBmZCA9IG9wZW4oIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKKyAgaWYgKGZkIDwgMCkgeworICAgIHJldHVybiAwOworICB9CisKKyAgZG8geworICAgIHZvaWQgKiBjb25zdCBjdXJyZW50VGFyZ2V0ID0gKHZvaWQqKSgoY2hhciopdGFyZ2V0ICsgYnl0ZXNXcml0dGVuVG90YWwpOworICAgIGNvbnN0IHNpemVfdCBieXRlc1RvV3JpdGUgPSBjb3VudCAtIGJ5dGVzV3JpdHRlblRvdGFsOworCisgICAgY29uc3Qgc3NpemVfdCBieXRlc1dyaXR0ZW5Nb3JlID0gcmVhZChmZCwgY3VycmVudFRhcmdldCwgYnl0ZXNUb1dyaXRlKTsKKworICAgIGlmIChieXRlc1dyaXR0ZW5Nb3JlID4gMCkgeworICAgICAgYnl0ZXNXcml0dGVuVG90YWwgKz0gYnl0ZXNXcml0dGVuTW9yZTsKKyAgICAgIGlmIChieXRlc1dyaXR0ZW5Ub3RhbCA+PSBjb3VudCkKKyAgICAgICAgc3VjY2VzcyA9IDE7CisgICAgfQorICB9IHdoaWxlICghIHN1Y2Nlc3MgJiYgKGVycm5vID09IEVJTlRSKSk7CisKKyAgY2xvc2UoZmQpOworICByZXR1cm4gc3VjY2VzczsKK30KKworI2VuZGlmICAvKiAhIGRlZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKFhNTF9ERVZfVVJBTkRPTSkgKi8KKworI2VuZGlmICAvKiAhIGRlZmluZWQoSEFWRV9BUkM0UkFORE9NX0JVRikgJiYgISBkZWZpbmVkKEhBVkVfQVJDNFJBTkRPTSkgKi8KKworCisjaWYgZGVmaW5lZChIQVZFX0FSQzRSQU5ET00pCisKK3N0YXRpYyB2b2lkCit3cml0ZVJhbmRvbUJ5dGVzX2FyYzRyYW5kb20odm9pZCAqIHRhcmdldCwgc2l6ZV90IGNvdW50KSB7CisgIHNpemVfdCBieXRlc1dyaXR0ZW5Ub3RhbCA9IDA7CisKKyAgd2hpbGUgKGJ5dGVzV3JpdHRlblRvdGFsIDwgY291bnQpIHsKKyAgICBjb25zdCB1aW50MzJfdCByYW5kb20zMiA9IGFyYzRyYW5kb20oKTsKKyAgICBzaXplX3QgaSA9IDA7CisKKyAgICBmb3IgKDsgKGkgPCBzaXplb2YocmFuZG9tMzIpKSAmJiAoYnl0ZXNXcml0dGVuVG90YWwgPCBjb3VudCk7CisgICAgICAgIGkrKywgYnl0ZXNXcml0dGVuVG90YWwrKykgeworICAgICAgY29uc3QgdWludDhfdCByYW5kb204ID0gKHVpbnQ4X3QpKHJhbmRvbTMyID4+IChpICogOCkpOworICAgICAgKCh1aW50OF90ICopdGFyZ2V0KVtieXRlc1dyaXR0ZW5Ub3RhbF0gPSByYW5kb204OworICAgIH0KKyAgfQorfQorCisjZW5kaWYgIC8qIGRlZmluZWQoSEFWRV9BUkM0UkFORE9NKSAqLworCisKKyNpZmRlZiBfV0lOMzIKKwordHlwZWRlZiBCT09MRUFOIChBUElFTlRSWSAqUlRMR0VOUkFORE9NX0ZVTkMpKFBWT0lELCBVTE9ORyk7CitITU9EVUxFIF9FeHBhdF9Mb2FkTGlicmFyeShMUENUU1RSIGZpbGVuYW1lKTsgIC8qIHNlZSBsb2FkbGlicmFyeS5jICovCisKKy8qIE9idGFpbiBlbnRyb3B5IG9uIFdpbmRvd3MgWFAgLyBXaW5kb3dzIFNlcnZlciAyMDAzIGFuZCBsYXRlci4KKyAqIEhpbnQgb24gUnRsR2VuUmFuZG9tIGFuZCB0aGUgZm9sbG93aW5nIGFydGljbGUgZnJvbSBsaWJzb2RpdW0uCisgKgorICogTWljaGFlbCBIb3dhcmQ6IENyeXB0b2dyYXBoaWNhbGx5IFNlY3VyZSBSYW5kb20gbnVtYmVyIG9uIFdpbmRvd3Mgd2l0aG91dCB1c2luZyBDcnlwdG9BUEkKKyAqIGh0dHBzOi8vYmxvZ3MubXNkbi5taWNyb3NvZnQuY29tL21pY2hhZWxfaG93YXJkLzIwMDUvMDEvMTQvY3J5cHRvZ3JhcGhpY2FsbHktc2VjdXJlLXJhbmRvbS1udW1iZXItb24td2luZG93cy13aXRob3V0LXVzaW5nLWNyeXB0b2FwaS8KKyAqLworc3RhdGljIGludAord3JpdGVSYW5kb21CeXRlc19SdGxHZW5SYW5kb20odm9pZCAqIHRhcmdldCwgc2l6ZV90IGNvdW50KSB7CisgIGludCBzdWNjZXNzID0gMDsgIC8qIGZ1bGwgY291bnQgYnl0ZXMgd3JpdHRlbj8gKi8KKyAgY29uc3QgSE1PRFVMRSBhZHZhcGkzMiA9IF9FeHBhdF9Mb2FkTGlicmFyeShURVhUKCJBRFZBUEkzMi5ETEwiKSk7CisKKyAgaWYgKGFkdmFwaTMyKSB7CisgICAgY29uc3QgUlRMR0VOUkFORE9NX0ZVTkMgUnRsR2VuUmFuZG9tCisgICAgICAgID0gKFJUTEdFTlJBTkRPTV9GVU5DKUdldFByb2NBZGRyZXNzKGFkdmFwaTMyLCAiU3lzdGVtRnVuY3Rpb24wMzYiKTsKKyAgICBpZiAoUnRsR2VuUmFuZG9tKSB7CisgICAgICBpZiAoUnRsR2VuUmFuZG9tKChQVk9JRCl0YXJnZXQsIChVTE9ORyljb3VudCkgPT0gVFJVRSkgeworICAgICAgICBzdWNjZXNzID0gMTsKKyAgICAgIH0KKyAgICB9CisgICAgRnJlZUxpYnJhcnkoYWR2YXBpMzIpOworICB9CisKKyAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKKyNlbmRpZiAvKiBfV0lOMzIgKi8KKworCisjaWYgISBkZWZpbmVkKEhBVkVfQVJDNFJBTkRPTV9CVUYpICYmICEgZGVmaW5lZChIQVZFX0FSQzRSQU5ET00pCisKIHN0YXRpYyB1bnNpZ25lZCBsb25nCiBnYXRoZXJfdGltZV9lbnRyb3B5KHZvaWQpCiB7Ci0jaWZkZWYgQ09NUElMRURfRlJPTV9EU1AKKyNpZmRlZiBfV0lOMzIKICAgRklMRVRJTUUgZnQ7CiAgIEdldFN5c3RlbVRpbWVBc0ZpbGVUaW1lKCZmdCk7IC8qIG5ldmVyIGZhaWxzICovCiAgIHJldHVybiBmdC5kd0hpZ2hEYXRlVGltZSBeIGZ0LmR3TG93RGF0ZVRpbWU7CkBAIC03MTAsMzYgKzgxNSw5MSBAQAogICBpbnQgZ2V0dGltZW9mZGF5X3JlczsKIAogICBnZXR0aW1lb2ZkYXlfcmVzID0gZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CisKKyNpZiBkZWZpbmVkKE5ERUJVRykKKyAgKHZvaWQpZ2V0dGltZW9mZGF5X3JlczsKKyNlbHNlCiAgIGFzc2VydCAoZ2V0dGltZW9mZGF5X3JlcyA9PSAwKTsKKyNlbmRpZiAgLyogZGVmaW5lZChOREVCVUcpICovCiAKICAgLyogTWljcm9zZWNvbmRzIHRpbWUgaXMgPDIwIGJpdHMgZW50cm9weSAqLwogICByZXR1cm4gdHYudHZfdXNlYzsKICNlbmRpZgogfQogCisjZW5kaWYgIC8qICEgZGVmaW5lZChIQVZFX0FSQzRSQU5ET01fQlVGKSAmJiAhIGRlZmluZWQoSEFWRV9BUkM0UkFORE9NKSAqLworCisKK3N0YXRpYyB1bnNpZ25lZCBsb25nCitFTlRST1BZX0RFQlVHKGNvbnN0IGNoYXIgKiBsYWJlbCwgdW5zaWduZWQgbG9uZyBlbnRyb3B5KSB7CisgIGNvbnN0IGNoYXIgKiBjb25zdCBFWFBBVF9FTlRST1BZX0RFQlVHID0gZ2V0ZW52KCJFWFBBVF9FTlRST1BZX0RFQlVHIik7CisgIGlmIChFWFBBVF9FTlRST1BZX0RFQlVHICYmICEgc3RyY21wKEVYUEFUX0VOVFJPUFlfREVCVUcsICIxIikpIHsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIkVudHJvcHk6ICVzIC0tPiAweCUwKmx4ICglbHUgYnl0ZXMpXG4iLAorICAgICAgICBsYWJlbCwKKyAgICAgICAgKGludClzaXplb2YoZW50cm9weSkgKiAyLCBlbnRyb3B5LAorICAgICAgICAodW5zaWduZWQgbG9uZylzaXplb2YoZW50cm9weSkpOworICB9CisgIHJldHVybiBlbnRyb3B5OworfQorCiBzdGF0aWMgdW5zaWduZWQgbG9uZwogZ2VuZXJhdGVfaGFzaF9zZWNyZXRfc2FsdChYTUxfUGFyc2VyIHBhcnNlcikKIHsKLSAgLyogUHJvY2VzcyBJRCBpcyAwIGJpdHMgZW50cm9weSBpZiBhdHRhY2tlciBoYXMgbG9jYWwgYWNjZXNzCi0gICAqIFhNTF9QYXJzZXIgYWRkcmVzcyBpcyBmZXcgYml0cyBvZiBlbnRyb3B5IGlmIGF0dGFja2VyIGhhcyBsb2NhbCBhY2Nlc3MgKi8KLSAgY29uc3QgdW5zaWduZWQgbG9uZyBlbnRyb3B5ID0KLSAgICAgIGdhdGhlcl90aW1lX2VudHJvcHkoKSBeIGdldHBpZCgpIF4gKHVpbnRwdHJfdClwYXJzZXI7CisgIHVuc2lnbmVkIGxvbmcgZW50cm9weTsKKyAgKHZvaWQpcGFyc2VyOworCisgIC8qICJGYWlscHJvb2YiIGhpZ2ggcXVhbGl0eSBwcm92aWRlcnM6ICovCisjaWYgZGVmaW5lZChIQVZFX0FSQzRSQU5ET01fQlVGKQorICBhcmM0cmFuZG9tX2J1ZigmZW50cm9weSwgc2l6ZW9mKGVudHJvcHkpKTsKKyAgcmV0dXJuIEVOVFJPUFlfREVCVUcoImFyYzRyYW5kb21fYnVmIiwgZW50cm9weSk7CisjZWxpZiBkZWZpbmVkKEhBVkVfQVJDNFJBTkRPTSkKKyAgd3JpdGVSYW5kb21CeXRlc19hcmM0cmFuZG9tKCh2b2lkICopJmVudHJvcHksIHNpemVvZihlbnRyb3B5KSk7CisgIHJldHVybiBFTlRST1BZX0RFQlVHKCJhcmM0cmFuZG9tIiwgZW50cm9weSk7CisjZWxzZQorICAvKiBUcnkgaGlnaCBxdWFsaXR5IHByb3ZpZGVycyBmaXJzdCAuLiAqLworI2lmZGVmIF9XSU4zMgorICBpZiAod3JpdGVSYW5kb21CeXRlc19SdGxHZW5SYW5kb20oKHZvaWQgKikmZW50cm9weSwgc2l6ZW9mKGVudHJvcHkpKSkgeworICAgIHJldHVybiBFTlRST1BZX0RFQlVHKCJSdGxHZW5SYW5kb20iLCBlbnRyb3B5KTsKKyAgfQorI2VsaWYgZGVmaW5lZChIQVZFX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChIQVZFX1NZU0NBTExfR0VUUkFORE9NKQorICBpZiAod3JpdGVSYW5kb21CeXRlc19nZXRyYW5kb21fbm9uYmxvY2soKHZvaWQgKikmZW50cm9weSwgc2l6ZW9mKGVudHJvcHkpKSkgeworICAgIHJldHVybiBFTlRST1BZX0RFQlVHKCJnZXRyYW5kb20iLCBlbnRyb3B5KTsKKyAgfQorI2VuZGlmCisjaWYgISBkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5lZChYTUxfREVWX1VSQU5ET00pCisgIGlmICh3cml0ZVJhbmRvbUJ5dGVzX2Rldl91cmFuZG9tKCh2b2lkICopJmVudHJvcHksIHNpemVvZihlbnRyb3B5KSkpIHsKKyAgICByZXR1cm4gRU5UUk9QWV9ERUJVRygiL2Rldi91cmFuZG9tIiwgZW50cm9weSk7CisgIH0KKyNlbmRpZiAgLyogISBkZWZpbmVkKF9XSU4zMikgJiYgZGVmaW5lZChYTUxfREVWX1VSQU5ET00pICovCisgIC8qIC4uIGFuZCBzZWxmLW1hZGUgbG93IHF1YWxpdHkgZm9yIGJhY2t1cDogKi8KKworICAvKiBQcm9jZXNzIElEIGlzIDAgYml0cyBlbnRyb3B5IGlmIGF0dGFja2VyIGhhcyBsb2NhbCBhY2Nlc3MgKi8KKyAgZW50cm9weSA9IGdhdGhlcl90aW1lX2VudHJvcHkoKSBeIGdldHBpZCgpOwogCiAgIC8qIEZhY3RvcnMgYXJlIDJeMzEtMSBhbmQgMl42MS0xIChNZXJzZW5uZSBwcmltZXMgTTMxIGFuZCBNNjEpICovCiAgIGlmIChzaXplb2YodW5zaWduZWQgbG9uZykgPT0gNCkgewotICAgIHJldHVybiBlbnRyb3B5ICogMjE0NzQ4MzY0NzsKKyAgICByZXR1cm4gRU5UUk9QWV9ERUJVRygiZmFsbGJhY2soNCkiLCBlbnRyb3B5ICogMjE0NzQ4MzY0Nyk7CiAgIH0gZWxzZSB7Ci0gICAgcmV0dXJuIGVudHJvcHkgKiAyMzA1ODQzMDA5MjEzNjkzOTUxOworICAgIHJldHVybiBFTlRST1BZX0RFQlVHKCJmYWxsYmFjayg4KSIsCisgICAgICAgIGVudHJvcHkgKiAodW5zaWduZWQgbG9uZykyMzA1ODQzMDA5MjEzNjkzOTUxVUxMKTsKICAgfQorI2VuZGlmCit9CisKK3N0YXRpYyB1bnNpZ25lZCBsb25nCitnZXRfaGFzaF9zZWNyZXRfc2FsdChYTUxfUGFyc2VyIHBhcnNlcikgeworICBpZiAocGFyc2VyLT5tX3BhcmVudFBhcnNlciAhPSBOVUxMKQorICAgIHJldHVybiBnZXRfaGFzaF9zZWNyZXRfc2FsdChwYXJzZXItPm1fcGFyZW50UGFyc2VyKTsKKyAgcmV0dXJuIHBhcnNlci0+bV9oYXNoX3NlY3JldF9zYWx0OwogfQogCiBzdGF0aWMgWE1MX0Jvb2wgIC8qIG9ubHkgdmFsaWQgZm9yIHJvb3QgcGFyc2VyICovCiBzdGFydFBhcnNpbmcoWE1MX1BhcnNlciBwYXJzZXIpCiB7CiAgICAgLyogaGFzaCBmdW5jdGlvbnMgbXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgc2V0Q29udGV4dCgpIGlzIGNhbGxlZCAqLwotICAgIGlmIChoYXNoX3NlY3JldF9zYWx0ID09IDApCi0gICAgICBoYXNoX3NlY3JldF9zYWx0ID0gZ2VuZXJhdGVfaGFzaF9zZWNyZXRfc2FsdChwYXJzZXIpOwotICAgIGlmIChucykgeworICAgIGlmIChwYXJzZXItPm1faGFzaF9zZWNyZXRfc2FsdCA9PSAwKQorICAgICAgcGFyc2VyLT5tX2hhc2hfc2VjcmV0X3NhbHQgPSBnZW5lcmF0ZV9oYXNoX3NlY3JldF9zYWx0KHBhcnNlcik7CisgICAgaWYgKHBhcnNlci0+bV9ucykgewogICAgICAgLyogaW1wbGljaXQgY29udGV4dCBvbmx5IHNldCBmb3Igcm9vdCBwYXJzZXIsIHNpbmNlIGNoaWxkCiAgICAgICAgICBwYXJzZXJzIChpLmUuIGV4dGVybmFsIGVudGl0eSBwYXJzZXJzKSB3aWxsIGluaGVyaXQgaXQKICAgICAgICovCkBAIC03ODksODMgKzk0OSw4NSBAQAogICBpZiAoIXBhcnNlcikKICAgICByZXR1cm4gcGFyc2VyOwogCi0gIGJ1ZmZlciA9IE5VTEw7Ci0gIGJ1ZmZlckxpbSA9IE5VTEw7CisgIHBhcnNlci0+bV9idWZmZXIgPSBOVUxMOworICBwYXJzZXItPm1fYnVmZmVyTGltID0gTlVMTDsKIAotICBhdHRzU2l6ZSA9IElOSVRfQVRUU19TSVpFOwotICBhdHRzID0gKEFUVFJJQlVURSAqKU1BTExPQyhhdHRzU2l6ZSAqIHNpemVvZihBVFRSSUJVVEUpKTsKLSAgaWYgKGF0dHMgPT0gTlVMTCkgewotICAgIEZSRUUocGFyc2VyKTsKKyAgcGFyc2VyLT5tX2F0dHNTaXplID0gSU5JVF9BVFRTX1NJWkU7CisgIHBhcnNlci0+bV9hdHRzID0gKEFUVFJJQlVURSAqKU1BTExPQyhwYXJzZXIsIHBhcnNlci0+bV9hdHRzU2l6ZSAqIHNpemVvZihBVFRSSUJVVEUpKTsKKyAgaWYgKHBhcnNlci0+bV9hdHRzID09IE5VTEwpIHsKKyAgICBGUkVFKHBhcnNlciwgcGFyc2VyKTsKICAgICByZXR1cm4gTlVMTDsKICAgfQogI2lmZGVmIFhNTF9BVFRSX0lORk8KLSAgYXR0SW5mbyA9IChYTUxfQXR0ckluZm8qKU1BTExPQyhhdHRzU2l6ZSAqIHNpemVvZihYTUxfQXR0ckluZm8pKTsKLSAgaWYgKGF0dEluZm8gPT0gTlVMTCkgewotICAgIEZSRUUoYXR0cyk7Ci0gICAgRlJFRShwYXJzZXIpOworICBwYXJzZXItPm1fYXR0SW5mbyA9IChYTUxfQXR0ckluZm8qKU1BTExPQyhwYXJzZXIsIHBhcnNlci0+bV9hdHRzU2l6ZSAqIHNpemVvZihYTUxfQXR0ckluZm8pKTsKKyAgaWYgKHBhcnNlci0+bV9hdHRJbmZvID09IE5VTEwpIHsKKyAgICBGUkVFKHBhcnNlciwgcGFyc2VyLT5tX2F0dHMpOworICAgIEZSRUUocGFyc2VyLCBwYXJzZXIpOwogICAgIHJldHVybiBOVUxMOwogICB9CiAjZW5kaWYKLSAgZGF0YUJ1ZiA9IChYTUxfQ2hhciAqKU1BTExPQyhJTklUX0RBVEFfQlVGX1NJWkUgKiBzaXplb2YoWE1MX0NoYXIpKTsKLSAgaWYgKGRhdGFCdWYgPT0gTlVMTCkgewotICAgIEZSRUUoYXR0cyk7CisgIHBhcnNlci0+bV9kYXRhQnVmID0gKFhNTF9DaGFyICopTUFMTE9DKHBhcnNlciwgSU5JVF9EQVRBX0JVRl9TSVpFICogc2l6ZW9mKFhNTF9DaGFyKSk7CisgIGlmIChwYXJzZXItPm1fZGF0YUJ1ZiA9PSBOVUxMKSB7CisgICAgRlJFRShwYXJzZXIsIHBhcnNlci0+bV9hdHRzKTsKICNpZmRlZiBYTUxfQVRUUl9JTkZPCi0gICAgRlJFRShhdHRJbmZvKTsKKyAgICBGUkVFKHBhcnNlciwgcGFyc2VyLT5tX2F0dEluZm8pOwogI2VuZGlmCi0gICAgRlJFRShwYXJzZXIpOworICAgIEZSRUUocGFyc2VyLCBwYXJzZXIpOwogICAgIHJldHVybiBOVUxMOwogICB9Ci0gIGRhdGFCdWZFbmQgPSBkYXRhQnVmICsgSU5JVF9EQVRBX0JVRl9TSVpFOworICBwYXJzZXItPm1fZGF0YUJ1ZkVuZCA9IHBhcnNlci0+bV9kYXRhQnVmICsgSU5JVF9EQVRBX0JVRl9TSVpFOwogCiAgIGlmIChkdGQpCi0gICAgX2R0ZCA9IGR0ZDsKKyAgICBwYXJzZXItPm1fZHRkID0gZHRkOwogICBlbHNlIHsKLSAgICBfZHRkID0gZHRkQ3JlYXRlKCZwYXJzZXItPm1fbWVtKTsKLSAgICBpZiAoX2R0ZCA9PSBOVUxMKSB7Ci0gICAgICBGUkVFKGRhdGFCdWYpOwotICAgICAgRlJFRShhdHRzKTsKKyAgICBwYXJzZXItPm1fZHRkID0gZHRkQ3JlYXRlKCZwYXJzZXItPm1fbWVtKTsKKyAgICBpZiAocGFyc2VyLT5tX2R0ZCA9PSBOVUxMKSB7CisgICAgICBGUkVFKHBhcnNlciwgcGFyc2VyLT5tX2RhdGFCdWYpOworICAgICAgRlJFRShwYXJzZXIsIHBhcnNlci0+bV9hdHRzKTsKICNpZmRlZiBYTUxfQVRUUl9JTkZPCi0gICAgICBGUkVFKGF0dEluZm8pOworICAgICAgRlJFRShwYXJzZXIsIHBhcnNlci0+bV9hdHRJbmZvKTsKICNlbmRpZgotICAgICAgRlJFRShwYXJzZXIpOworICAgICAgRlJFRShwYXJzZXIsIHBhcnNlcik7CiAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgIH0KIAotICBmcmVlQmluZGluZ0xpc3QgPSBOVUxMOwotICBmcmVlVGFnTGlzdCA9IE5VTEw7Ci0gIGZyZWVJbnRlcm5hbEVudGl0aWVzID0gTlVMTDsKKyAgcGFyc2VyLT5tX2ZyZWVCaW5kaW5nTGlzdCA9IE5VTEw7CisgIHBhcnNlci0+bV9mcmVlVGFnTGlzdCA9IE5VTEw7CisgIHBhcnNlci0+bV9mcmVlSW50ZXJuYWxFbnRpdGllcyA9IE5VTEw7CiAKLSAgZ3JvdXBTaXplID0gMDsKLSAgZ3JvdXBDb25uZWN0b3IgPSBOVUxMOworICBwYXJzZXItPm1fZ3JvdXBTaXplID0gMDsKKyAgcGFyc2VyLT5tX2dyb3VwQ29ubmVjdG9yID0gTlVMTDsKIAotICB1bmtub3duRW5jb2RpbmdIYW5kbGVyID0gTlVMTDsKLSAgdW5rbm93bkVuY29kaW5nSGFuZGxlckRhdGEgPSBOVUxMOworICBwYXJzZXItPm1fdW5rbm93bkVuY29kaW5nSGFuZGxlciA9IE5VTEw7CisgIHBhcnNlci0+bV91bmtub3duRW5jb2RpbmdIYW5kbGVyRGF0YSA9IE5VTEw7CiAKLSAgbmFtZXNwYWNlU2VwYXJhdG9yID0gQVNDSUlfRVhDTDsKLSAgbnMgPSBYTUxfRkFMU0U7Ci0gIG5zX3RyaXBsZXRzID0gWE1MX0ZBTFNFOworICBwYXJzZXItPm1fbmFtZXNwYWNlU2VwYXJhdG9yID0gQVNDSUlfRVhDTDsKKyAgcGFyc2VyLT5tX25zID0gWE1MX0ZBTFNFOworICBwYXJzZXItPm1fbnNfdHJpcGxldHMgPSBYTUxfRkFMU0U7CiAKLSAgbnNBdHRzID0gTlVMTDsKLSAgbnNBdHRzVmVyc2lvbiA9IDA7Ci0gIG5zQXR0c1Bvd2VyID0gMDsKKyAgcGFyc2VyLT5tX25zQXR0cyA9IE5VTEw7CisgIHBhcnNlci0+bV9uc0F0dHNWZXJzaW9uID0gMDsKKyAgcGFyc2VyLT5tX25zQXR0c1Bvd2VyID0gMDsKIAotICBwb29sSW5pdCgmdGVtcFBvb2wsICYocGFyc2VyLT5tX21lbSkpOwotICBwb29sSW5pdCgmdGVtcDJQb29sLCAmKHBhcnNlci0+bV9tZW0pKTsKKyAgcGFyc2VyLT5tX3Byb3RvY29sRW5jb2RpbmdOYW1lID0gTlVMTDsKKworICBwb29sSW5pdCgmcGFyc2VyLT5tX3RlbXBQb29sLCAmKHBhcnNlci0+bV9tZW0pKTsKKyAgcG9vbEluaXQoJnBhcnNlci0+bV90ZW1wMlBvb2wsICYocGFyc2VyLT5tX21lbSkpOwogICBwYXJzZXJJbml0KHBhcnNlciwgZW5jb2RpbmdOYW1lKTsKIAotICBpZiAoZW5jb2RpbmdOYW1lICYmICFwcm90b2NvbEVuY29kaW5nTmFtZSkgeworICBpZiAoZW5jb2RpbmdOYW1lICYmICFwYXJzZXItPm1fcHJvdG9jb2xFbmNvZGluZ05hbWUpIHsKICAgICBYTUxfUGFyc2VyRnJlZShwYXJzZXIpOwogICAgIHJldHVybiBOVUxMOwogICB9CiAKICAgaWYgKG5hbWVTZXApIHsKLSAgICBucyA9IFhNTF9UUlVFOwotICAgIGludGVybmFsRW5jb2RpbmcgPSBYbWxHZXRJbnRlcm5hbEVuY29kaW5nTlMoKTsKLSAgICBuYW1lc3BhY2VTZXBhcmF0b3IgPSAqbmFtZVNlcDsKKyAgICBwYXJzZXItPm1fbnMgPSBYTUxfVFJVRTsKKyAgICBwYXJzZXItPm1faW50ZXJuYWxFbmNvZGluZyA9IFhtbEdldEludGVybmFsRW5jb2RpbmdOUygpOworICAgIHBhcnNlci0+bV9uYW1lc3BhY2VTZXBhcmF0b3IgPSAqbmFtZVNlcDsKICAgfQogICBlbHNlIHsKLSAgICBpbnRlcm5hbEVuY29kaW5nID0gWG1sR2V0SW50ZXJuYWxFbmNvZGluZygpOworICAgIHBhcnNlci0+bV9pbnRlcm5hbEVuY29kaW5nID0gWG1sR2V0SW50ZXJuYWxFbmNvZGluZygpOwogICB9CiAKICAgcmV0dXJuIHBhcnNlcjsKQEAgLTg3NCw4NSArMTAzNiw4NSBAQAogc3RhdGljIHZvaWQKIHBhcnNlckluaXQoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IFhNTF9DaGFyICplbmNvZGluZ05hbWUpCiB7Ci0gIHByb2Nlc3NvciA9IHByb2xvZ0luaXRQcm9jZXNzb3I7Ci0gIFhtbFByb2xvZ1N0YXRlSW5pdCgmcHJvbG9nU3RhdGUpOwotICBwcm90b2NvbEVuY29kaW5nTmFtZSA9IChlbmNvZGluZ05hbWUgIT0gTlVMTAotICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBvb2xDb3B5U3RyaW5nKCZ0ZW1wUG9vbCwgZW5jb2RpbmdOYW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICA6IE5VTEwpOwotICBjdXJCYXNlID0gTlVMTDsKLSAgWG1sSW5pdEVuY29kaW5nKCZpbml0RW5jb2RpbmcsICZlbmNvZGluZywgMCk7Ci0gIHVzZXJEYXRhID0gTlVMTDsKLSAgaGFuZGxlckFyZyA9IE5VTEw7Ci0gIHN0YXJ0RWxlbWVudEhhbmRsZXIgPSBOVUxMOwotICBlbmRFbGVtZW50SGFuZGxlciA9IE5VTEw7Ci0gIGNoYXJhY3RlckRhdGFIYW5kbGVyID0gTlVMTDsKLSAgcHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IE5VTEw7Ci0gIGNvbW1lbnRIYW5kbGVyID0gTlVMTDsKLSAgc3RhcnRDZGF0YVNlY3Rpb25IYW5kbGVyID0gTlVMTDsKLSAgZW5kQ2RhdGFTZWN0aW9uSGFuZGxlciA9IE5VTEw7Ci0gIGRlZmF1bHRIYW5kbGVyID0gTlVMTDsKLSAgc3RhcnREb2N0eXBlRGVjbEhhbmRsZXIgPSBOVUxMOwotICBlbmREb2N0eXBlRGVjbEhhbmRsZXIgPSBOVUxMOwotICB1bnBhcnNlZEVudGl0eURlY2xIYW5kbGVyID0gTlVMTDsKLSAgbm90YXRpb25EZWNsSGFuZGxlciA9IE5VTEw7Ci0gIHN0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXIgPSBOVUxMOwotICBlbmROYW1lc3BhY2VEZWNsSGFuZGxlciA9IE5VTEw7Ci0gIG5vdFN0YW5kYWxvbmVIYW5kbGVyID0gTlVMTDsKLSAgZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyID0gTlVMTDsKLSAgZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnID0gcGFyc2VyOwotICBza2lwcGVkRW50aXR5SGFuZGxlciA9IE5VTEw7Ci0gIGVsZW1lbnREZWNsSGFuZGxlciA9IE5VTEw7Ci0gIGF0dGxpc3REZWNsSGFuZGxlciA9IE5VTEw7Ci0gIGVudGl0eURlY2xIYW5kbGVyID0gTlVMTDsKLSAgeG1sRGVjbEhhbmRsZXIgPSBOVUxMOwotICBidWZmZXJQdHIgPSBidWZmZXI7Ci0gIGJ1ZmZlckVuZCA9IGJ1ZmZlcjsKLSAgcGFyc2VFbmRCeXRlSW5kZXggPSAwOwotICBwYXJzZUVuZFB0ciA9IE5VTEw7Ci0gIGRlY2xFbGVtZW50VHlwZSA9IE5VTEw7Ci0gIGRlY2xBdHRyaWJ1dGVJZCA9IE5VTEw7Ci0gIGRlY2xFbnRpdHkgPSBOVUxMOwotICBkb2N0eXBlTmFtZSA9IE5VTEw7Ci0gIGRvY3R5cGVTeXNpZCA9IE5VTEw7Ci0gIGRvY3R5cGVQdWJpZCA9IE5VTEw7Ci0gIGRlY2xBdHRyaWJ1dGVUeXBlID0gTlVMTDsKLSAgZGVjbE5vdGF0aW9uTmFtZSA9IE5VTEw7Ci0gIGRlY2xOb3RhdGlvblB1YmxpY0lkID0gTlVMTDsKLSAgZGVjbEF0dHJpYnV0ZUlzQ2RhdGEgPSBYTUxfRkFMU0U7Ci0gIGRlY2xBdHRyaWJ1dGVJc0lkID0gWE1MX0ZBTFNFOwotICBtZW1zZXQoJnBvc2l0aW9uLCAwLCBzaXplb2YoUE9TSVRJT04pKTsKLSAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX05PTkU7Ci0gIGV2ZW50UHRyID0gTlVMTDsKLSAgZXZlbnRFbmRQdHIgPSBOVUxMOwotICBwb3NpdGlvblB0ciA9IE5VTEw7Ci0gIG9wZW5JbnRlcm5hbEVudGl0aWVzID0gTlVMTDsKLSAgZGVmYXVsdEV4cGFuZEludGVybmFsRW50aXRpZXMgPSBYTUxfVFJVRTsKLSAgdGFnTGV2ZWwgPSAwOwotICB0YWdTdGFjayA9IE5VTEw7Ci0gIGluaGVyaXRlZEJpbmRpbmdzID0gTlVMTDsKLSAgblNwZWNpZmllZEF0dHMgPSAwOwotICB1bmtub3duRW5jb2RpbmdNZW0gPSBOVUxMOwotICB1bmtub3duRW5jb2RpbmdSZWxlYXNlID0gTlVMTDsKLSAgdW5rbm93bkVuY29kaW5nRGF0YSA9IE5VTEw7Ci0gIHBhcmVudFBhcnNlciA9IE5VTEw7Ci0gIHBzX3BhcnNpbmcgPSBYTUxfSU5JVElBTElaRUQ7CisgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBwcm9sb2dJbml0UHJvY2Vzc29yOworICBYbWxQcm9sb2dTdGF0ZUluaXQoJnBhcnNlci0+bV9wcm9sb2dTdGF0ZSk7CisgIGlmIChlbmNvZGluZ05hbWUgIT0gTlVMTCkgeworICAgIHBhcnNlci0+bV9wcm90b2NvbEVuY29kaW5nTmFtZSA9IGNvcHlTdHJpbmcoZW5jb2RpbmdOYW1lLCAmKHBhcnNlci0+bV9tZW0pKTsKKyAgfQorICBwYXJzZXItPm1fY3VyQmFzZSA9IE5VTEw7CisgIFhtbEluaXRFbmNvZGluZygmcGFyc2VyLT5tX2luaXRFbmNvZGluZywgJnBhcnNlci0+bV9lbmNvZGluZywgMCk7CisgIHBhcnNlci0+bV91c2VyRGF0YSA9IE5VTEw7CisgIHBhcnNlci0+bV9oYW5kbGVyQXJnID0gTlVMTDsKKyAgcGFyc2VyLT5tX3N0YXJ0RWxlbWVudEhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1fZW5kRWxlbWVudEhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1fY2hhcmFjdGVyRGF0YUhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1fcHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IE5VTEw7CisgIHBhcnNlci0+bV9jb21tZW50SGFuZGxlciA9IE5VTEw7CisgIHBhcnNlci0+bV9zdGFydENkYXRhU2VjdGlvbkhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1fZW5kQ2RhdGFTZWN0aW9uSGFuZGxlciA9IE5VTEw7CisgIHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlciA9IE5VTEw7CisgIHBhcnNlci0+bV9zdGFydERvY3R5cGVEZWNsSGFuZGxlciA9IE5VTEw7CisgIHBhcnNlci0+bV9lbmREb2N0eXBlRGVjbEhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1fdW5wYXJzZWRFbnRpdHlEZWNsSGFuZGxlciA9IE5VTEw7CisgIHBhcnNlci0+bV9ub3RhdGlvbkRlY2xIYW5kbGVyID0gTlVMTDsKKyAgcGFyc2VyLT5tX3N0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1fZW5kTmFtZXNwYWNlRGVjbEhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1fbm90U3RhbmRhbG9uZUhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyID0gTlVMTDsKKyAgcGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZyA9IHBhcnNlcjsKKyAgcGFyc2VyLT5tX3NraXBwZWRFbnRpdHlIYW5kbGVyID0gTlVMTDsKKyAgcGFyc2VyLT5tX2VsZW1lbnREZWNsSGFuZGxlciA9IE5VTEw7CisgIHBhcnNlci0+bV9hdHRsaXN0RGVjbEhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1fZW50aXR5RGVjbEhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1feG1sRGVjbEhhbmRsZXIgPSBOVUxMOworICBwYXJzZXItPm1fYnVmZmVyUHRyID0gcGFyc2VyLT5tX2J1ZmZlcjsKKyAgcGFyc2VyLT5tX2J1ZmZlckVuZCA9IHBhcnNlci0+bV9idWZmZXI7CisgIHBhcnNlci0+bV9wYXJzZUVuZEJ5dGVJbmRleCA9IDA7CisgIHBhcnNlci0+bV9wYXJzZUVuZFB0ciA9IE5VTEw7CisgIHBhcnNlci0+bV9kZWNsRWxlbWVudFR5cGUgPSBOVUxMOworICBwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZUlkID0gTlVMTDsKKyAgcGFyc2VyLT5tX2RlY2xFbnRpdHkgPSBOVUxMOworICBwYXJzZXItPm1fZG9jdHlwZU5hbWUgPSBOVUxMOworICBwYXJzZXItPm1fZG9jdHlwZVN5c2lkID0gTlVMTDsKKyAgcGFyc2VyLT5tX2RvY3R5cGVQdWJpZCA9IE5VTEw7CisgIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZSA9IE5VTEw7CisgIHBhcnNlci0+bV9kZWNsTm90YXRpb25OYW1lID0gTlVMTDsKKyAgcGFyc2VyLT5tX2RlY2xOb3RhdGlvblB1YmxpY0lkID0gTlVMTDsKKyAgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVJc0NkYXRhID0gWE1MX0ZBTFNFOworICBwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZUlzSWQgPSBYTUxfRkFMU0U7CisgIG1lbXNldCgmcGFyc2VyLT5tX3Bvc2l0aW9uLCAwLCBzaXplb2YoUE9TSVRJT04pKTsKKyAgcGFyc2VyLT5tX2Vycm9yQ29kZSA9IFhNTF9FUlJPUl9OT05FOworICBwYXJzZXItPm1fZXZlbnRQdHIgPSBOVUxMOworICBwYXJzZXItPm1fZXZlbnRFbmRQdHIgPSBOVUxMOworICBwYXJzZXItPm1fcG9zaXRpb25QdHIgPSBOVUxMOworICBwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMgPSBOVUxMOworICBwYXJzZXItPm1fZGVmYXVsdEV4cGFuZEludGVybmFsRW50aXRpZXMgPSBYTUxfVFJVRTsKKyAgcGFyc2VyLT5tX3RhZ0xldmVsID0gMDsKKyAgcGFyc2VyLT5tX3RhZ1N0YWNrID0gTlVMTDsKKyAgcGFyc2VyLT5tX2luaGVyaXRlZEJpbmRpbmdzID0gTlVMTDsKKyAgcGFyc2VyLT5tX25TcGVjaWZpZWRBdHRzID0gMDsKKyAgcGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ01lbSA9IE5VTEw7CisgIHBhcnNlci0+bV91bmtub3duRW5jb2RpbmdSZWxlYXNlID0gTlVMTDsKKyAgcGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ0RhdGEgPSBOVUxMOworICBwYXJzZXItPm1fcGFyZW50UGFyc2VyID0gTlVMTDsKKyAgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9IFhNTF9JTklUSUFMSVpFRDsKICNpZmRlZiBYTUxfRFRECi0gIGlzUGFyYW1FbnRpdHkgPSBYTUxfRkFMU0U7Ci0gIHVzZUZvcmVpZ25EVEQgPSBYTUxfRkFMU0U7Ci0gIHBhcmFtRW50aXR5UGFyc2luZyA9IFhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19ORVZFUjsKKyAgcGFyc2VyLT5tX2lzUGFyYW1FbnRpdHkgPSBYTUxfRkFMU0U7CisgIHBhcnNlci0+bV91c2VGb3JlaWduRFREID0gWE1MX0ZBTFNFOworICBwYXJzZXItPm1fcGFyYW1FbnRpdHlQYXJzaW5nID0gWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX05FVkVSOwogI2VuZGlmCi0gIGhhc2hfc2VjcmV0X3NhbHQgPSAwOworICBwYXJzZXItPm1faGFzaF9zZWNyZXRfc2FsdCA9IDA7CiB9CiAKLS8qIG1vdmVzIGxpc3Qgb2YgYmluZGluZ3MgdG8gZnJlZUJpbmRpbmdMaXN0ICovCisvKiBtb3ZlcyBsaXN0IG9mIGJpbmRpbmdzIHRvIG1fZnJlZUJpbmRpbmdMaXN0ICovCiBzdGF0aWMgdm9pZCBGQVNUQ0FMTAogbW92ZVRvRnJlZUJpbmRpbmdMaXN0KFhNTF9QYXJzZXIgcGFyc2VyLCBCSU5ESU5HICpiaW5kaW5ncykKIHsKICAgd2hpbGUgKGJpbmRpbmdzKSB7CiAgICAgQklORElORyAqYiA9IGJpbmRpbmdzOwogICAgIGJpbmRpbmdzID0gYmluZGluZ3MtPm5leHRUYWdCaW5kaW5nOwotICAgIGItPm5leHRUYWdCaW5kaW5nID0gZnJlZUJpbmRpbmdMaXN0OwotICAgIGZyZWVCaW5kaW5nTGlzdCA9IGI7CisgICAgYi0+bmV4dFRhZ0JpbmRpbmcgPSBwYXJzZXItPm1fZnJlZUJpbmRpbmdMaXN0OworICAgIHBhcnNlci0+bV9mcmVlQmluZGluZ0xpc3QgPSBiOwogICB9CiB9CiAKQEAgLTk2MSw1MSArMTEyMyw2NSBAQAogewogICBUQUcgKnRTdGs7CiAgIE9QRU5fSU5URVJOQUxfRU5USVRZICpvcGVuRW50aXR5TGlzdDsKLSAgaWYgKHBhcmVudFBhcnNlcikKKworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgICByZXR1cm4gWE1MX0ZBTFNFOworCisgIGlmIChwYXJzZXItPm1fcGFyZW50UGFyc2VyKQogICAgIHJldHVybiBYTUxfRkFMU0U7Ci0gIC8qIG1vdmUgdGFnU3RhY2sgdG8gZnJlZVRhZ0xpc3QgKi8KLSAgdFN0ayA9IHRhZ1N0YWNrOworICAvKiBtb3ZlIG1fdGFnU3RhY2sgdG8gbV9mcmVlVGFnTGlzdCAqLworICB0U3RrID0gcGFyc2VyLT5tX3RhZ1N0YWNrOwogICB3aGlsZSAodFN0aykgewogICAgIFRBRyAqdGFnID0gdFN0azsKICAgICB0U3RrID0gdFN0ay0+cGFyZW50OwotICAgIHRhZy0+cGFyZW50ID0gZnJlZVRhZ0xpc3Q7CisgICAgdGFnLT5wYXJlbnQgPSBwYXJzZXItPm1fZnJlZVRhZ0xpc3Q7CiAgICAgbW92ZVRvRnJlZUJpbmRpbmdMaXN0KHBhcnNlciwgdGFnLT5iaW5kaW5ncyk7CiAgICAgdGFnLT5iaW5kaW5ncyA9IE5VTEw7Ci0gICAgZnJlZVRhZ0xpc3QgPSB0YWc7CisgICAgcGFyc2VyLT5tX2ZyZWVUYWdMaXN0ID0gdGFnOwogICB9Ci0gIC8qIG1vdmUgb3BlbkludGVybmFsRW50aXRpZXMgdG8gZnJlZUludGVybmFsRW50aXRpZXMgKi8KLSAgb3BlbkVudGl0eUxpc3QgPSBvcGVuSW50ZXJuYWxFbnRpdGllczsKKyAgLyogbW92ZSBtX29wZW5JbnRlcm5hbEVudGl0aWVzIHRvIG1fZnJlZUludGVybmFsRW50aXRpZXMgKi8KKyAgb3BlbkVudGl0eUxpc3QgPSBwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXM7CiAgIHdoaWxlIChvcGVuRW50aXR5TGlzdCkgewogICAgIE9QRU5fSU5URVJOQUxfRU5USVRZICpvcGVuRW50aXR5ID0gb3BlbkVudGl0eUxpc3Q7CiAgICAgb3BlbkVudGl0eUxpc3QgPSBvcGVuRW50aXR5LT5uZXh0OwotICAgIG9wZW5FbnRpdHktPm5leHQgPSBmcmVlSW50ZXJuYWxFbnRpdGllczsKLSAgICBmcmVlSW50ZXJuYWxFbnRpdGllcyA9IG9wZW5FbnRpdHk7CisgICAgb3BlbkVudGl0eS0+bmV4dCA9IHBhcnNlci0+bV9mcmVlSW50ZXJuYWxFbnRpdGllczsKKyAgICBwYXJzZXItPm1fZnJlZUludGVybmFsRW50aXRpZXMgPSBvcGVuRW50aXR5OwogICB9Ci0gIG1vdmVUb0ZyZWVCaW5kaW5nTGlzdChwYXJzZXIsIGluaGVyaXRlZEJpbmRpbmdzKTsKLSAgRlJFRSh1bmtub3duRW5jb2RpbmdNZW0pOwotICBpZiAodW5rbm93bkVuY29kaW5nUmVsZWFzZSkKLSAgICB1bmtub3duRW5jb2RpbmdSZWxlYXNlKHVua25vd25FbmNvZGluZ0RhdGEpOwotICBwb29sQ2xlYXIoJnRlbXBQb29sKTsKLSAgcG9vbENsZWFyKCZ0ZW1wMlBvb2wpOworICBtb3ZlVG9GcmVlQmluZGluZ0xpc3QocGFyc2VyLCBwYXJzZXItPm1faW5oZXJpdGVkQmluZGluZ3MpOworICBGUkVFKHBhcnNlciwgcGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ01lbSk7CisgIGlmIChwYXJzZXItPm1fdW5rbm93bkVuY29kaW5nUmVsZWFzZSkKKyAgICBwYXJzZXItPm1fdW5rbm93bkVuY29kaW5nUmVsZWFzZShwYXJzZXItPm1fdW5rbm93bkVuY29kaW5nRGF0YSk7CisgIHBvb2xDbGVhcigmcGFyc2VyLT5tX3RlbXBQb29sKTsKKyAgcG9vbENsZWFyKCZwYXJzZXItPm1fdGVtcDJQb29sKTsKKyAgRlJFRShwYXJzZXIsICh2b2lkICopcGFyc2VyLT5tX3Byb3RvY29sRW5jb2RpbmdOYW1lKTsKKyAgcGFyc2VyLT5tX3Byb3RvY29sRW5jb2RpbmdOYW1lID0gTlVMTDsKICAgcGFyc2VySW5pdChwYXJzZXIsIGVuY29kaW5nTmFtZSk7Ci0gIGR0ZFJlc2V0KF9kdGQsICZwYXJzZXItPm1fbWVtKTsKKyAgZHRkUmVzZXQocGFyc2VyLT5tX2R0ZCwgJnBhcnNlci0+bV9tZW0pOwogICByZXR1cm4gWE1MX1RSVUU7CiB9CiAKIGVudW0gWE1MX1N0YXR1cyBYTUxDQUxMCiBYTUxfU2V0RW5jb2RpbmcoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IFhNTF9DaGFyICplbmNvZGluZ05hbWUpCiB7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogICAvKiBCbG9jayBhZnRlciBYTUxfUGFyc2UoKS9YTUxfUGFyc2VCdWZmZXIoKSBoYXMgYmVlbiBjYWxsZWQuCiAgICAgIFhYWCBUaGVyZSdzIG5vIHdheSBmb3IgdGhlIGNhbGxlciB0byBkZXRlcm1pbmUgd2hpY2ggb2YgdGhlCiAgICAgIFhYWCBwb3NzaWJsZSBlcnJvciBjYXNlcyBjYXVzZWQgdGhlIFhNTF9TVEFUVVNfRVJST1IgcmV0dXJuLgogICAqLwotICBpZiAocHNfcGFyc2luZyA9PSBYTUxfUEFSU0lORyB8fCBwc19wYXJzaW5nID09IFhNTF9TVVNQRU5ERUQpCisgIGlmIChwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nID09IFhNTF9QQVJTSU5HIHx8IHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcgPT0gWE1MX1NVU1BFTkRFRCkKICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKKworICAvKiBHZXQgcmlkIG9mIGFueSBwcmV2aW91cyBlbmNvZGluZyBuYW1lICovCisgIEZSRUUocGFyc2VyLCAodm9pZCAqKXBhcnNlci0+bV9wcm90b2NvbEVuY29kaW5nTmFtZSk7CisKICAgaWYgKGVuY29kaW5nTmFtZSA9PSBOVUxMKQotICAgIHByb3RvY29sRW5jb2RpbmdOYW1lID0gTlVMTDsKKyAgICAvKiBObyBuZXcgZW5jb2RpbmcgbmFtZSAqLworICAgIHBhcnNlci0+bV9wcm90b2NvbEVuY29kaW5nTmFtZSA9IE5VTEw7CiAgIGVsc2UgewotICAgIHByb3RvY29sRW5jb2RpbmdOYW1lID0gcG9vbENvcHlTdHJpbmcoJnRlbXBQb29sLCBlbmNvZGluZ05hbWUpOwotICAgIGlmICghcHJvdG9jb2xFbmNvZGluZ05hbWUpCisgICAgLyogQ29weSB0aGUgbmV3IGVuY29kaW5nIG5hbWUgaW50byBhbGxvY2F0ZWQgbWVtb3J5ICovCisgICAgcGFyc2VyLT5tX3Byb3RvY29sRW5jb2RpbmdOYW1lID0gY29weVN0cmluZyhlbmNvZGluZ05hbWUsICYocGFyc2VyLT5tX21lbSkpOworICAgIGlmICghcGFyc2VyLT5tX3Byb3RvY29sRW5jb2RpbmdOYW1lKQogICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgIH0KICAgcmV0dXJuIFhNTF9TVEFUVVNfT0s7CkBAIC0xMDE4LDUyICsxMTk0LDg4IEBACiB7CiAgIFhNTF9QYXJzZXIgcGFyc2VyID0gb2xkUGFyc2VyOwogICBEVEQgKm5ld0R0ZCA9IE5VTEw7Ci0gIERURCAqb2xkRHRkID0gX2R0ZDsKLSAgWE1MX1N0YXJ0RWxlbWVudEhhbmRsZXIgb2xkU3RhcnRFbGVtZW50SGFuZGxlciA9IHN0YXJ0RWxlbWVudEhhbmRsZXI7Ci0gIFhNTF9FbmRFbGVtZW50SGFuZGxlciBvbGRFbmRFbGVtZW50SGFuZGxlciA9IGVuZEVsZW1lbnRIYW5kbGVyOwotICBYTUxfQ2hhcmFjdGVyRGF0YUhhbmRsZXIgb2xkQ2hhcmFjdGVyRGF0YUhhbmRsZXIgPSBjaGFyYWN0ZXJEYXRhSGFuZGxlcjsKLSAgWE1MX1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgb2xkUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcgotICAgICAgPSBwcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyOwotICBYTUxfQ29tbWVudEhhbmRsZXIgb2xkQ29tbWVudEhhbmRsZXIgPSBjb21tZW50SGFuZGxlcjsKLSAgWE1MX1N0YXJ0Q2RhdGFTZWN0aW9uSGFuZGxlciBvbGRTdGFydENkYXRhU2VjdGlvbkhhbmRsZXIKLSAgICAgID0gc3RhcnRDZGF0YVNlY3Rpb25IYW5kbGVyOwotICBYTUxfRW5kQ2RhdGFTZWN0aW9uSGFuZGxlciBvbGRFbmRDZGF0YVNlY3Rpb25IYW5kbGVyCi0gICAgICA9IGVuZENkYXRhU2VjdGlvbkhhbmRsZXI7Ci0gIFhNTF9EZWZhdWx0SGFuZGxlciBvbGREZWZhdWx0SGFuZGxlciA9IGRlZmF1bHRIYW5kbGVyOwotICBYTUxfVW5wYXJzZWRFbnRpdHlEZWNsSGFuZGxlciBvbGRVbnBhcnNlZEVudGl0eURlY2xIYW5kbGVyCi0gICAgICA9IHVucGFyc2VkRW50aXR5RGVjbEhhbmRsZXI7Ci0gIFhNTF9Ob3RhdGlvbkRlY2xIYW5kbGVyIG9sZE5vdGF0aW9uRGVjbEhhbmRsZXIgPSBub3RhdGlvbkRlY2xIYW5kbGVyOwotICBYTUxfU3RhcnROYW1lc3BhY2VEZWNsSGFuZGxlciBvbGRTdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyCi0gICAgICA9IHN0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXI7Ci0gIFhNTF9FbmROYW1lc3BhY2VEZWNsSGFuZGxlciBvbGRFbmROYW1lc3BhY2VEZWNsSGFuZGxlcgotICAgICAgPSBlbmROYW1lc3BhY2VEZWNsSGFuZGxlcjsKLSAgWE1MX05vdFN0YW5kYWxvbmVIYW5kbGVyIG9sZE5vdFN0YW5kYWxvbmVIYW5kbGVyID0gbm90U3RhbmRhbG9uZUhhbmRsZXI7Ci0gIFhNTF9FeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIgb2xkRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyCi0gICAgICA9IGV4dGVybmFsRW50aXR5UmVmSGFuZGxlcjsKLSAgWE1MX1NraXBwZWRFbnRpdHlIYW5kbGVyIG9sZFNraXBwZWRFbnRpdHlIYW5kbGVyID0gc2tpcHBlZEVudGl0eUhhbmRsZXI7Ci0gIFhNTF9Vbmtub3duRW5jb2RpbmdIYW5kbGVyIG9sZFVua25vd25FbmNvZGluZ0hhbmRsZXIKLSAgICAgID0gdW5rbm93bkVuY29kaW5nSGFuZGxlcjsKLSAgWE1MX0VsZW1lbnREZWNsSGFuZGxlciBvbGRFbGVtZW50RGVjbEhhbmRsZXIgPSBlbGVtZW50RGVjbEhhbmRsZXI7Ci0gIFhNTF9BdHRsaXN0RGVjbEhhbmRsZXIgb2xkQXR0bGlzdERlY2xIYW5kbGVyID0gYXR0bGlzdERlY2xIYW5kbGVyOwotICBYTUxfRW50aXR5RGVjbEhhbmRsZXIgb2xkRW50aXR5RGVjbEhhbmRsZXIgPSBlbnRpdHlEZWNsSGFuZGxlcjsKLSAgWE1MX1htbERlY2xIYW5kbGVyIG9sZFhtbERlY2xIYW5kbGVyID0geG1sRGVjbEhhbmRsZXI7Ci0gIEVMRU1FTlRfVFlQRSAqIG9sZERlY2xFbGVtZW50VHlwZSA9IGRlY2xFbGVtZW50VHlwZTsKKyAgRFREICpvbGREdGQ7CisgIFhNTF9TdGFydEVsZW1lbnRIYW5kbGVyIG9sZFN0YXJ0RWxlbWVudEhhbmRsZXI7CisgIFhNTF9FbmRFbGVtZW50SGFuZGxlciBvbGRFbmRFbGVtZW50SGFuZGxlcjsKKyAgWE1MX0NoYXJhY3RlckRhdGFIYW5kbGVyIG9sZENoYXJhY3RlckRhdGFIYW5kbGVyOworICBYTUxfUHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciBvbGRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyOworICBYTUxfQ29tbWVudEhhbmRsZXIgb2xkQ29tbWVudEhhbmRsZXI7CisgIFhNTF9TdGFydENkYXRhU2VjdGlvbkhhbmRsZXIgb2xkU3RhcnRDZGF0YVNlY3Rpb25IYW5kbGVyOworICBYTUxfRW5kQ2RhdGFTZWN0aW9uSGFuZGxlciBvbGRFbmRDZGF0YVNlY3Rpb25IYW5kbGVyOworICBYTUxfRGVmYXVsdEhhbmRsZXIgb2xkRGVmYXVsdEhhbmRsZXI7CisgIFhNTF9VbnBhcnNlZEVudGl0eURlY2xIYW5kbGVyIG9sZFVucGFyc2VkRW50aXR5RGVjbEhhbmRsZXI7CisgIFhNTF9Ob3RhdGlvbkRlY2xIYW5kbGVyIG9sZE5vdGF0aW9uRGVjbEhhbmRsZXI7CisgIFhNTF9TdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyIG9sZFN0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXI7CisgIFhNTF9FbmROYW1lc3BhY2VEZWNsSGFuZGxlciBvbGRFbmROYW1lc3BhY2VEZWNsSGFuZGxlcjsKKyAgWE1MX05vdFN0YW5kYWxvbmVIYW5kbGVyIG9sZE5vdFN0YW5kYWxvbmVIYW5kbGVyOworICBYTUxfRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyIG9sZEV4dGVybmFsRW50aXR5UmVmSGFuZGxlcjsKKyAgWE1MX1NraXBwZWRFbnRpdHlIYW5kbGVyIG9sZFNraXBwZWRFbnRpdHlIYW5kbGVyOworICBYTUxfVW5rbm93bkVuY29kaW5nSGFuZGxlciBvbGRVbmtub3duRW5jb2RpbmdIYW5kbGVyOworICBYTUxfRWxlbWVudERlY2xIYW5kbGVyIG9sZEVsZW1lbnREZWNsSGFuZGxlcjsKKyAgWE1MX0F0dGxpc3REZWNsSGFuZGxlciBvbGRBdHRsaXN0RGVjbEhhbmRsZXI7CisgIFhNTF9FbnRpdHlEZWNsSGFuZGxlciBvbGRFbnRpdHlEZWNsSGFuZGxlcjsKKyAgWE1MX1htbERlY2xIYW5kbGVyIG9sZFhtbERlY2xIYW5kbGVyOworICBFTEVNRU5UX1RZUEUgKiBvbGREZWNsRWxlbWVudFR5cGU7CiAKLSAgdm9pZCAqb2xkVXNlckRhdGEgPSB1c2VyRGF0YTsKLSAgdm9pZCAqb2xkSGFuZGxlckFyZyA9IGhhbmRsZXJBcmc7Ci0gIFhNTF9Cb29sIG9sZERlZmF1bHRFeHBhbmRJbnRlcm5hbEVudGl0aWVzID0gZGVmYXVsdEV4cGFuZEludGVybmFsRW50aXRpZXM7Ci0gIFhNTF9QYXJzZXIgb2xkRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnID0gZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnOworICB2b2lkICpvbGRVc2VyRGF0YTsKKyAgdm9pZCAqb2xkSGFuZGxlckFyZzsKKyAgWE1MX0Jvb2wgb2xkRGVmYXVsdEV4cGFuZEludGVybmFsRW50aXRpZXM7CisgIFhNTF9QYXJzZXIgb2xkRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnOwogI2lmZGVmIFhNTF9EVEQKLSAgZW51bSBYTUxfUGFyYW1FbnRpdHlQYXJzaW5nIG9sZFBhcmFtRW50aXR5UGFyc2luZyA9IHBhcmFtRW50aXR5UGFyc2luZzsKLSAgaW50IG9sZEluRW50aXR5VmFsdWUgPSBwcm9sb2dTdGF0ZS5pbkVudGl0eVZhbHVlOworICBlbnVtIFhNTF9QYXJhbUVudGl0eVBhcnNpbmcgb2xkUGFyYW1FbnRpdHlQYXJzaW5nOworICBpbnQgb2xkSW5FbnRpdHlWYWx1ZTsKICNlbmRpZgotICBYTUxfQm9vbCBvbGRuc190cmlwbGV0cyA9IG5zX3RyaXBsZXRzOworICBYTUxfQm9vbCBvbGRuc190cmlwbGV0czsKICAgLyogTm90ZSB0aGF0IHRoZSBuZXcgcGFyc2VyIHNoYXJlcyB0aGUgc2FtZSBoYXNoIHNlY3JldCBhcyB0aGUgb2xkCiAgICAgIHBhcnNlciwgc28gdGhhdCBkdGRDb3B5IGFuZCBjb3B5RW50aXR5VGFibGUgY2FuIGxvb2t1cCB2YWx1ZXMKICAgICAgZnJvbSBoYXNoIHRhYmxlcyBhc3NvY2lhdGVkIHdpdGggZWl0aGVyIHBhcnNlciB3aXRob3V0IHVzIGhhdmluZwogICAgICB0byB3b3JyeSB3aGljaCBoYXNoIHNlY3JldHMgZWFjaCB0YWJsZSBoYXMuCiAgICovCi0gIHVuc2lnbmVkIGxvbmcgb2xkaGFzaF9zZWNyZXRfc2FsdCA9IGhhc2hfc2VjcmV0X3NhbHQ7CisgIHVuc2lnbmVkIGxvbmcgb2xkaGFzaF9zZWNyZXRfc2FsdDsKKworICAvKiBWYWxpZGF0ZSB0aGUgb2xkUGFyc2VyIHBhcmFtZXRlciBiZWZvcmUgd2UgcHVsbCBldmVyeXRoaW5nIG91dCBvZiBpdCAqLworICBpZiAob2xkUGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgLyogU3Rhc2ggdGhlIG9yaWdpbmFsIHBhcnNlciBjb250ZW50cyBvbiB0aGUgc3RhY2sgKi8KKyAgb2xkRHRkID0gcGFyc2VyLT5tX2R0ZDsKKyAgb2xkU3RhcnRFbGVtZW50SGFuZGxlciA9IHBhcnNlci0+bV9zdGFydEVsZW1lbnRIYW5kbGVyOworICBvbGRFbmRFbGVtZW50SGFuZGxlciA9IHBhcnNlci0+bV9lbmRFbGVtZW50SGFuZGxlcjsKKyAgb2xkQ2hhcmFjdGVyRGF0YUhhbmRsZXIgPSBwYXJzZXItPm1fY2hhcmFjdGVyRGF0YUhhbmRsZXI7CisgIG9sZFByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBwYXJzZXItPm1fcHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcjsKKyAgb2xkQ29tbWVudEhhbmRsZXIgPSBwYXJzZXItPm1fY29tbWVudEhhbmRsZXI7CisgIG9sZFN0YXJ0Q2RhdGFTZWN0aW9uSGFuZGxlciA9IHBhcnNlci0+bV9zdGFydENkYXRhU2VjdGlvbkhhbmRsZXI7CisgIG9sZEVuZENkYXRhU2VjdGlvbkhhbmRsZXIgPSBwYXJzZXItPm1fZW5kQ2RhdGFTZWN0aW9uSGFuZGxlcjsKKyAgb2xkRGVmYXVsdEhhbmRsZXIgPSBwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXI7CisgIG9sZFVucGFyc2VkRW50aXR5RGVjbEhhbmRsZXIgPSBwYXJzZXItPm1fdW5wYXJzZWRFbnRpdHlEZWNsSGFuZGxlcjsKKyAgb2xkTm90YXRpb25EZWNsSGFuZGxlciA9IHBhcnNlci0+bV9ub3RhdGlvbkRlY2xIYW5kbGVyOworICBvbGRTdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyID0gcGFyc2VyLT5tX3N0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXI7CisgIG9sZEVuZE5hbWVzcGFjZURlY2xIYW5kbGVyID0gcGFyc2VyLT5tX2VuZE5hbWVzcGFjZURlY2xIYW5kbGVyOworICBvbGROb3RTdGFuZGFsb25lSGFuZGxlciA9IHBhcnNlci0+bV9ub3RTdGFuZGFsb25lSGFuZGxlcjsKKyAgb2xkRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyID0gcGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlcjsKKyAgb2xkU2tpcHBlZEVudGl0eUhhbmRsZXIgPSBwYXJzZXItPm1fc2tpcHBlZEVudGl0eUhhbmRsZXI7CisgIG9sZFVua25vd25FbmNvZGluZ0hhbmRsZXIgPSBwYXJzZXItPm1fdW5rbm93bkVuY29kaW5nSGFuZGxlcjsKKyAgb2xkRWxlbWVudERlY2xIYW5kbGVyID0gcGFyc2VyLT5tX2VsZW1lbnREZWNsSGFuZGxlcjsKKyAgb2xkQXR0bGlzdERlY2xIYW5kbGVyID0gcGFyc2VyLT5tX2F0dGxpc3REZWNsSGFuZGxlcjsKKyAgb2xkRW50aXR5RGVjbEhhbmRsZXIgPSBwYXJzZXItPm1fZW50aXR5RGVjbEhhbmRsZXI7CisgIG9sZFhtbERlY2xIYW5kbGVyID0gcGFyc2VyLT5tX3htbERlY2xIYW5kbGVyOworICBvbGREZWNsRWxlbWVudFR5cGUgPSBwYXJzZXItPm1fZGVjbEVsZW1lbnRUeXBlOworCisgIG9sZFVzZXJEYXRhID0gcGFyc2VyLT5tX3VzZXJEYXRhOworICBvbGRIYW5kbGVyQXJnID0gcGFyc2VyLT5tX2hhbmRsZXJBcmc7CisgIG9sZERlZmF1bHRFeHBhbmRJbnRlcm5hbEVudGl0aWVzID0gcGFyc2VyLT5tX2RlZmF1bHRFeHBhbmRJbnRlcm5hbEVudGl0aWVzOworICBvbGRFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXJBcmcgPSBwYXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnOworI2lmZGVmIFhNTF9EVEQKKyAgb2xkUGFyYW1FbnRpdHlQYXJzaW5nID0gcGFyc2VyLT5tX3BhcmFtRW50aXR5UGFyc2luZzsKKyAgb2xkSW5FbnRpdHlWYWx1ZSA9IHBhcnNlci0+bV9wcm9sb2dTdGF0ZS5pbkVudGl0eVZhbHVlOworI2VuZGlmCisgIG9sZG5zX3RyaXBsZXRzID0gcGFyc2VyLT5tX25zX3RyaXBsZXRzOworICAvKiBOb3RlIHRoYXQgdGhlIG5ldyBwYXJzZXIgc2hhcmVzIHRoZSBzYW1lIGhhc2ggc2VjcmV0IGFzIHRoZSBvbGQKKyAgICAgcGFyc2VyLCBzbyB0aGF0IGR0ZENvcHkgYW5kIGNvcHlFbnRpdHlUYWJsZSBjYW4gbG9va3VwIHZhbHVlcworICAgICBmcm9tIGhhc2ggdGFibGVzIGFzc29jaWF0ZWQgd2l0aCBlaXRoZXIgcGFyc2VyIHdpdGhvdXQgdXMgaGF2aW5nCisgICAgIHRvIHdvcnJ5IHdoaWNoIGhhc2ggc2VjcmV0cyBlYWNoIHRhYmxlIGhhcy4KKyAgKi8KKyAgb2xkaGFzaF9zZWNyZXRfc2FsdCA9IHBhcnNlci0+bV9oYXNoX3NlY3JldF9zYWx0OwogCiAjaWZkZWYgWE1MX0RURAogICBpZiAoIWNvbnRleHQpCkBAIC0xMDc1LDkgKzEyODcsOSBAQAogICAgICBoZXJlLiAgVGhpcyBtYWtlcyB0aGlzIGZ1bmN0aW9uIG1vcmUgcGFpbmZ1bCB0byBmb2xsb3cgdGhhbiBpdAogICAgICB3b3VsZCBiZSBvdGhlcndpc2UuCiAgICovCi0gIGlmIChucykgeworICBpZiAocGFyc2VyLT5tX25zKSB7CiAgICAgWE1MX0NoYXIgdG1wWzJdOwotICAgICp0bXAgPSBuYW1lc3BhY2VTZXBhcmF0b3I7CisgICAgKnRtcCA9IHBhcnNlci0+bV9uYW1lc3BhY2VTZXBhcmF0b3I7CiAgICAgcGFyc2VyID0gcGFyc2VyQ3JlYXRlKGVuY29kaW5nTmFtZSwgJnBhcnNlci0+bV9tZW0sIHRtcCwgbmV3RHRkKTsKICAgfQogICBlbHNlIHsKQEAgLTEwODcsNjIgKzEyOTksNjIgQEAKICAgaWYgKCFwYXJzZXIpCiAgICAgcmV0dXJuIE5VTEw7CiAKLSAgc3RhcnRFbGVtZW50SGFuZGxlciA9IG9sZFN0YXJ0RWxlbWVudEhhbmRsZXI7Ci0gIGVuZEVsZW1lbnRIYW5kbGVyID0gb2xkRW5kRWxlbWVudEhhbmRsZXI7Ci0gIGNoYXJhY3RlckRhdGFIYW5kbGVyID0gb2xkQ2hhcmFjdGVyRGF0YUhhbmRsZXI7Ci0gIHByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBvbGRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyOwotICBjb21tZW50SGFuZGxlciA9IG9sZENvbW1lbnRIYW5kbGVyOwotICBzdGFydENkYXRhU2VjdGlvbkhhbmRsZXIgPSBvbGRTdGFydENkYXRhU2VjdGlvbkhhbmRsZXI7Ci0gIGVuZENkYXRhU2VjdGlvbkhhbmRsZXIgPSBvbGRFbmRDZGF0YVNlY3Rpb25IYW5kbGVyOwotICBkZWZhdWx0SGFuZGxlciA9IG9sZERlZmF1bHRIYW5kbGVyOwotICB1bnBhcnNlZEVudGl0eURlY2xIYW5kbGVyID0gb2xkVW5wYXJzZWRFbnRpdHlEZWNsSGFuZGxlcjsKLSAgbm90YXRpb25EZWNsSGFuZGxlciA9IG9sZE5vdGF0aW9uRGVjbEhhbmRsZXI7Ci0gIHN0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXIgPSBvbGRTdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyOwotICBlbmROYW1lc3BhY2VEZWNsSGFuZGxlciA9IG9sZEVuZE5hbWVzcGFjZURlY2xIYW5kbGVyOwotICBub3RTdGFuZGFsb25lSGFuZGxlciA9IG9sZE5vdFN0YW5kYWxvbmVIYW5kbGVyOwotICBleHRlcm5hbEVudGl0eVJlZkhhbmRsZXIgPSBvbGRFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXI7Ci0gIHNraXBwZWRFbnRpdHlIYW5kbGVyID0gb2xkU2tpcHBlZEVudGl0eUhhbmRsZXI7Ci0gIHVua25vd25FbmNvZGluZ0hhbmRsZXIgPSBvbGRVbmtub3duRW5jb2RpbmdIYW5kbGVyOwotICBlbGVtZW50RGVjbEhhbmRsZXIgPSBvbGRFbGVtZW50RGVjbEhhbmRsZXI7Ci0gIGF0dGxpc3REZWNsSGFuZGxlciA9IG9sZEF0dGxpc3REZWNsSGFuZGxlcjsKLSAgZW50aXR5RGVjbEhhbmRsZXIgPSBvbGRFbnRpdHlEZWNsSGFuZGxlcjsKLSAgeG1sRGVjbEhhbmRsZXIgPSBvbGRYbWxEZWNsSGFuZGxlcjsKLSAgZGVjbEVsZW1lbnRUeXBlID0gb2xkRGVjbEVsZW1lbnRUeXBlOwotICB1c2VyRGF0YSA9IG9sZFVzZXJEYXRhOworICBwYXJzZXItPm1fc3RhcnRFbGVtZW50SGFuZGxlciA9IG9sZFN0YXJ0RWxlbWVudEhhbmRsZXI7CisgIHBhcnNlci0+bV9lbmRFbGVtZW50SGFuZGxlciA9IG9sZEVuZEVsZW1lbnRIYW5kbGVyOworICBwYXJzZXItPm1fY2hhcmFjdGVyRGF0YUhhbmRsZXIgPSBvbGRDaGFyYWN0ZXJEYXRhSGFuZGxlcjsKKyAgcGFyc2VyLT5tX3Byb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgPSBvbGRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyOworICBwYXJzZXItPm1fY29tbWVudEhhbmRsZXIgPSBvbGRDb21tZW50SGFuZGxlcjsKKyAgcGFyc2VyLT5tX3N0YXJ0Q2RhdGFTZWN0aW9uSGFuZGxlciA9IG9sZFN0YXJ0Q2RhdGFTZWN0aW9uSGFuZGxlcjsKKyAgcGFyc2VyLT5tX2VuZENkYXRhU2VjdGlvbkhhbmRsZXIgPSBvbGRFbmRDZGF0YVNlY3Rpb25IYW5kbGVyOworICBwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIgPSBvbGREZWZhdWx0SGFuZGxlcjsKKyAgcGFyc2VyLT5tX3VucGFyc2VkRW50aXR5RGVjbEhhbmRsZXIgPSBvbGRVbnBhcnNlZEVudGl0eURlY2xIYW5kbGVyOworICBwYXJzZXItPm1fbm90YXRpb25EZWNsSGFuZGxlciA9IG9sZE5vdGF0aW9uRGVjbEhhbmRsZXI7CisgIHBhcnNlci0+bV9zdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyID0gb2xkU3RhcnROYW1lc3BhY2VEZWNsSGFuZGxlcjsKKyAgcGFyc2VyLT5tX2VuZE5hbWVzcGFjZURlY2xIYW5kbGVyID0gb2xkRW5kTmFtZXNwYWNlRGVjbEhhbmRsZXI7CisgIHBhcnNlci0+bV9ub3RTdGFuZGFsb25lSGFuZGxlciA9IG9sZE5vdFN0YW5kYWxvbmVIYW5kbGVyOworICBwYXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyID0gb2xkRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyOworICBwYXJzZXItPm1fc2tpcHBlZEVudGl0eUhhbmRsZXIgPSBvbGRTa2lwcGVkRW50aXR5SGFuZGxlcjsKKyAgcGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ0hhbmRsZXIgPSBvbGRVbmtub3duRW5jb2RpbmdIYW5kbGVyOworICBwYXJzZXItPm1fZWxlbWVudERlY2xIYW5kbGVyID0gb2xkRWxlbWVudERlY2xIYW5kbGVyOworICBwYXJzZXItPm1fYXR0bGlzdERlY2xIYW5kbGVyID0gb2xkQXR0bGlzdERlY2xIYW5kbGVyOworICBwYXJzZXItPm1fZW50aXR5RGVjbEhhbmRsZXIgPSBvbGRFbnRpdHlEZWNsSGFuZGxlcjsKKyAgcGFyc2VyLT5tX3htbERlY2xIYW5kbGVyID0gb2xkWG1sRGVjbEhhbmRsZXI7CisgIHBhcnNlci0+bV9kZWNsRWxlbWVudFR5cGUgPSBvbGREZWNsRWxlbWVudFR5cGU7CisgIHBhcnNlci0+bV91c2VyRGF0YSA9IG9sZFVzZXJEYXRhOwogICBpZiAob2xkVXNlckRhdGEgPT0gb2xkSGFuZGxlckFyZykKLSAgICBoYW5kbGVyQXJnID0gdXNlckRhdGE7CisgICAgcGFyc2VyLT5tX2hhbmRsZXJBcmcgPSBwYXJzZXItPm1fdXNlckRhdGE7CiAgIGVsc2UKLSAgICBoYW5kbGVyQXJnID0gcGFyc2VyOworICAgIHBhcnNlci0+bV9oYW5kbGVyQXJnID0gcGFyc2VyOwogICBpZiAob2xkRXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnICE9IG9sZFBhcnNlcikKLSAgICBleHRlcm5hbEVudGl0eVJlZkhhbmRsZXJBcmcgPSBvbGRFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXJBcmc7Ci0gIGRlZmF1bHRFeHBhbmRJbnRlcm5hbEVudGl0aWVzID0gb2xkRGVmYXVsdEV4cGFuZEludGVybmFsRW50aXRpZXM7Ci0gIG5zX3RyaXBsZXRzID0gb2xkbnNfdHJpcGxldHM7Ci0gIGhhc2hfc2VjcmV0X3NhbHQgPSBvbGRoYXNoX3NlY3JldF9zYWx0OwotICBwYXJlbnRQYXJzZXIgPSBvbGRQYXJzZXI7CisgICAgcGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZyA9IG9sZEV4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZzsKKyAgcGFyc2VyLT5tX2RlZmF1bHRFeHBhbmRJbnRlcm5hbEVudGl0aWVzID0gb2xkRGVmYXVsdEV4cGFuZEludGVybmFsRW50aXRpZXM7CisgIHBhcnNlci0+bV9uc190cmlwbGV0cyA9IG9sZG5zX3RyaXBsZXRzOworICBwYXJzZXItPm1faGFzaF9zZWNyZXRfc2FsdCA9IG9sZGhhc2hfc2VjcmV0X3NhbHQ7CisgIHBhcnNlci0+bV9wYXJlbnRQYXJzZXIgPSBvbGRQYXJzZXI7CiAjaWZkZWYgWE1MX0RURAotICBwYXJhbUVudGl0eVBhcnNpbmcgPSBvbGRQYXJhbUVudGl0eVBhcnNpbmc7Ci0gIHByb2xvZ1N0YXRlLmluRW50aXR5VmFsdWUgPSBvbGRJbkVudGl0eVZhbHVlOworICBwYXJzZXItPm1fcGFyYW1FbnRpdHlQYXJzaW5nID0gb2xkUGFyYW1FbnRpdHlQYXJzaW5nOworICBwYXJzZXItPm1fcHJvbG9nU3RhdGUuaW5FbnRpdHlWYWx1ZSA9IG9sZEluRW50aXR5VmFsdWU7CiAgIGlmIChjb250ZXh0KSB7CiAjZW5kaWYgLyogWE1MX0RURCAqLwotICAgIGlmICghZHRkQ29weShvbGRQYXJzZXIsIF9kdGQsIG9sZER0ZCwgJnBhcnNlci0+bV9tZW0pCisgICAgaWYgKCFkdGRDb3B5KG9sZFBhcnNlciwgcGFyc2VyLT5tX2R0ZCwgb2xkRHRkLCAmcGFyc2VyLT5tX21lbSkKICAgICAgIHx8ICFzZXRDb250ZXh0KHBhcnNlciwgY29udGV4dCkpIHsKICAgICAgIFhNTF9QYXJzZXJGcmVlKHBhcnNlcik7CiAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcHJvY2Vzc29yID0gZXh0ZXJuYWxFbnRpdHlJbml0UHJvY2Vzc29yOworICAgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBleHRlcm5hbEVudGl0eUluaXRQcm9jZXNzb3I7CiAjaWZkZWYgWE1MX0RURAogICB9CiAgIGVsc2UgewotICAgIC8qIFRoZSBEVEQgaW5zdGFuY2UgcmVmZXJlbmNlZCBieSBfZHRkIGlzIHNoYXJlZCBiZXR3ZWVuIHRoZSBkb2N1bWVudCdzCisgICAgLyogVGhlIERURCBpbnN0YW5jZSByZWZlcmVuY2VkIGJ5IHBhcnNlci0+bV9kdGQgaXMgc2hhcmVkIGJldHdlZW4gdGhlIGRvY3VtZW50J3MKICAgICAgICByb290IHBhcnNlciBhbmQgZXh0ZXJuYWwgUEUgcGFyc2VycywgdGhlcmVmb3JlIG9uZSBkb2VzIG5vdCBuZWVkIHRvCiAgICAgICAgY2FsbCBzZXRDb250ZXh0LiBJbiBhZGRpdGlvbiwgb25lIGFsc28gKm11c3QqIG5vdCBjYWxsIHNldENvbnRleHQsCiAgICAgICAgYmVjYXVzZSB0aGlzIHdvdWxkIG92ZXJ3cml0ZSBleGlzdGluZyBwcmVmaXgtPmJpbmRpbmcgcG9pbnRlcnMgaW4KLSAgICAgICBfZHRkIHdpdGggb25lcyB0aGF0IGdldCBkZXN0cm95ZWQgd2l0aCB0aGUgZXh0ZXJuYWwgUEUgcGFyc2VyLgorICAgICAgIHBhcnNlci0+bV9kdGQgd2l0aCBvbmVzIHRoYXQgZ2V0IGRlc3Ryb3llZCB3aXRoIHRoZSBleHRlcm5hbCBQRSBwYXJzZXIuCiAgICAgICAgVGhpcyB3b3VsZCBsZWF2ZSB0aG9zZSBwcmVmaXhlcyB3aXRoIGRhbmdsaW5nIHBvaW50ZXJzLgogICAgICovCi0gICAgaXNQYXJhbUVudGl0eSA9IFhNTF9UUlVFOwotICAgIFhtbFByb2xvZ1N0YXRlSW5pdEV4dGVybmFsRW50aXR5KCZwcm9sb2dTdGF0ZSk7Ci0gICAgcHJvY2Vzc29yID0gZXh0ZXJuYWxQYXJFbnRJbml0UHJvY2Vzc29yOworICAgIHBhcnNlci0+bV9pc1BhcmFtRW50aXR5ID0gWE1MX1RSVUU7CisgICAgWG1sUHJvbG9nU3RhdGVJbml0RXh0ZXJuYWxFbnRpdHkoJnBhcnNlci0+bV9wcm9sb2dTdGF0ZSk7CisgICAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IGV4dGVybmFsUGFyRW50SW5pdFByb2Nlc3NvcjsKICAgfQogI2VuZGlmIC8qIFhNTF9EVEQgKi8KICAgcmV0dXJuIHBhcnNlcjsKQEAgLTExNTYsOCArMTM2OCw4IEBACiAgICAgaWYgKCFiKQogICAgICAgYnJlYWs7CiAgICAgYmluZGluZ3MgPSBiLT5uZXh0VGFnQmluZGluZzsKLSAgICBGUkVFKGItPnVyaSk7Ci0gICAgRlJFRShiKTsKKyAgICBGUkVFKHBhcnNlciwgYi0+dXJpKTsKKyAgICBGUkVFKHBhcnNlciwgYik7CiAgIH0KIH0KIApAQCAtMTE2OCw3OCArMTM4MCw4MiBAQAogICBPUEVOX0lOVEVSTkFMX0VOVElUWSAqZW50aXR5TGlzdDsKICAgaWYgKHBhcnNlciA9PSBOVUxMKQogICAgIHJldHVybjsKLSAgLyogZnJlZSB0YWdTdGFjayBhbmQgZnJlZVRhZ0xpc3QgKi8KLSAgdGFnTGlzdCA9IHRhZ1N0YWNrOworICAvKiBmcmVlIG1fdGFnU3RhY2sgYW5kIG1fZnJlZVRhZ0xpc3QgKi8KKyAgdGFnTGlzdCA9IHBhcnNlci0+bV90YWdTdGFjazsKICAgZm9yICg7OykgewogICAgIFRBRyAqcDsKICAgICBpZiAodGFnTGlzdCA9PSBOVUxMKSB7Ci0gICAgICBpZiAoZnJlZVRhZ0xpc3QgPT0gTlVMTCkKKyAgICAgIGlmIChwYXJzZXItPm1fZnJlZVRhZ0xpc3QgPT0gTlVMTCkKICAgICAgICAgYnJlYWs7Ci0gICAgICB0YWdMaXN0ID0gZnJlZVRhZ0xpc3Q7Ci0gICAgICBmcmVlVGFnTGlzdCA9IE5VTEw7CisgICAgICB0YWdMaXN0ID0gcGFyc2VyLT5tX2ZyZWVUYWdMaXN0OworICAgICAgcGFyc2VyLT5tX2ZyZWVUYWdMaXN0ID0gTlVMTDsKICAgICB9CiAgICAgcCA9IHRhZ0xpc3Q7CiAgICAgdGFnTGlzdCA9IHRhZ0xpc3QtPnBhcmVudDsKLSAgICBGUkVFKHAtPmJ1Zik7CisgICAgRlJFRShwYXJzZXIsIHAtPmJ1Zik7CiAgICAgZGVzdHJveUJpbmRpbmdzKHAtPmJpbmRpbmdzLCBwYXJzZXIpOwotICAgIEZSRUUocCk7CisgICAgRlJFRShwYXJzZXIsIHApOwogICB9Ci0gIC8qIGZyZWUgb3BlbkludGVybmFsRW50aXRpZXMgYW5kIGZyZWVJbnRlcm5hbEVudGl0aWVzICovCi0gIGVudGl0eUxpc3QgPSBvcGVuSW50ZXJuYWxFbnRpdGllczsKKyAgLyogZnJlZSBtX29wZW5JbnRlcm5hbEVudGl0aWVzIGFuZCBtX2ZyZWVJbnRlcm5hbEVudGl0aWVzICovCisgIGVudGl0eUxpc3QgPSBwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXM7CiAgIGZvciAoOzspIHsKICAgICBPUEVOX0lOVEVSTkFMX0VOVElUWSAqb3BlbkVudGl0eTsKICAgICBpZiAoZW50aXR5TGlzdCA9PSBOVUxMKSB7Ci0gICAgICBpZiAoZnJlZUludGVybmFsRW50aXRpZXMgPT0gTlVMTCkKKyAgICAgIGlmIChwYXJzZXItPm1fZnJlZUludGVybmFsRW50aXRpZXMgPT0gTlVMTCkKICAgICAgICAgYnJlYWs7Ci0gICAgICBlbnRpdHlMaXN0ID0gZnJlZUludGVybmFsRW50aXRpZXM7Ci0gICAgICBmcmVlSW50ZXJuYWxFbnRpdGllcyA9IE5VTEw7CisgICAgICBlbnRpdHlMaXN0ID0gcGFyc2VyLT5tX2ZyZWVJbnRlcm5hbEVudGl0aWVzOworICAgICAgcGFyc2VyLT5tX2ZyZWVJbnRlcm5hbEVudGl0aWVzID0gTlVMTDsKICAgICB9CiAgICAgb3BlbkVudGl0eSA9IGVudGl0eUxpc3Q7CiAgICAgZW50aXR5TGlzdCA9IGVudGl0eUxpc3QtPm5leHQ7Ci0gICAgRlJFRShvcGVuRW50aXR5KTsKKyAgICBGUkVFKHBhcnNlciwgb3BlbkVudGl0eSk7CiAgIH0KIAotICBkZXN0cm95QmluZGluZ3MoZnJlZUJpbmRpbmdMaXN0LCBwYXJzZXIpOwotICBkZXN0cm95QmluZGluZ3MoaW5oZXJpdGVkQmluZGluZ3MsIHBhcnNlcik7Ci0gIHBvb2xEZXN0cm95KCZ0ZW1wUG9vbCk7Ci0gIHBvb2xEZXN0cm95KCZ0ZW1wMlBvb2wpOworICBkZXN0cm95QmluZGluZ3MocGFyc2VyLT5tX2ZyZWVCaW5kaW5nTGlzdCwgcGFyc2VyKTsKKyAgZGVzdHJveUJpbmRpbmdzKHBhcnNlci0+bV9pbmhlcml0ZWRCaW5kaW5ncywgcGFyc2VyKTsKKyAgcG9vbERlc3Ryb3koJnBhcnNlci0+bV90ZW1wUG9vbCk7CisgIHBvb2xEZXN0cm95KCZwYXJzZXItPm1fdGVtcDJQb29sKTsKKyAgRlJFRShwYXJzZXIsICh2b2lkICopcGFyc2VyLT5tX3Byb3RvY29sRW5jb2RpbmdOYW1lKTsKICNpZmRlZiBYTUxfRFRECiAgIC8qIGV4dGVybmFsIHBhcmFtZXRlciBlbnRpdHkgcGFyc2VycyBzaGFyZSB0aGUgRFREIHN0cnVjdHVyZQogICAgICBwYXJzZXItPm1fZHRkIHdpdGggdGhlIHJvb3QgcGFyc2VyLCBzbyB3ZSBtdXN0IG5vdCBkZXN0cm95IGl0CiAgICovCi0gIGlmICghaXNQYXJhbUVudGl0eSAmJiBfZHRkKQorICBpZiAoIXBhcnNlci0+bV9pc1BhcmFtRW50aXR5ICYmIHBhcnNlci0+bV9kdGQpCiAjZWxzZQotICBpZiAoX2R0ZCkKKyAgaWYgKHBhcnNlci0+bV9kdGQpCiAjZW5kaWYgLyogWE1MX0RURCAqLwotICAgIGR0ZERlc3Ryb3koX2R0ZCwgKFhNTF9Cb29sKSFwYXJlbnRQYXJzZXIsICZwYXJzZXItPm1fbWVtKTsKLSAgRlJFRSgodm9pZCAqKWF0dHMpOworICAgIGR0ZERlc3Ryb3kocGFyc2VyLT5tX2R0ZCwgKFhNTF9Cb29sKSFwYXJzZXItPm1fcGFyZW50UGFyc2VyLCAmcGFyc2VyLT5tX21lbSk7CisgIEZSRUUocGFyc2VyLCAodm9pZCAqKXBhcnNlci0+bV9hdHRzKTsKICNpZmRlZiBYTUxfQVRUUl9JTkZPCi0gIEZSRUUoKHZvaWQgKilhdHRJbmZvKTsKKyAgRlJFRShwYXJzZXIsICh2b2lkICopcGFyc2VyLT5tX2F0dEluZm8pOwogI2VuZGlmCi0gIEZSRUUoZ3JvdXBDb25uZWN0b3IpOwotICBGUkVFKGJ1ZmZlcik7Ci0gIEZSRUUoZGF0YUJ1Zik7Ci0gIEZSRUUobnNBdHRzKTsKLSAgRlJFRSh1bmtub3duRW5jb2RpbmdNZW0pOwotICBpZiAodW5rbm93bkVuY29kaW5nUmVsZWFzZSkKLSAgICB1bmtub3duRW5jb2RpbmdSZWxlYXNlKHVua25vd25FbmNvZGluZ0RhdGEpOwotICBGUkVFKHBhcnNlcik7CisgIEZSRUUocGFyc2VyLCBwYXJzZXItPm1fZ3JvdXBDb25uZWN0b3IpOworICBGUkVFKHBhcnNlciwgcGFyc2VyLT5tX2J1ZmZlcik7CisgIEZSRUUocGFyc2VyLCBwYXJzZXItPm1fZGF0YUJ1Zik7CisgIEZSRUUocGFyc2VyLCBwYXJzZXItPm1fbnNBdHRzKTsKKyAgRlJFRShwYXJzZXIsIHBhcnNlci0+bV91bmtub3duRW5jb2RpbmdNZW0pOworICBpZiAocGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ1JlbGVhc2UpCisgICAgcGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ1JlbGVhc2UocGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ0RhdGEpOworICBGUkVFKHBhcnNlciwgcGFyc2VyKTsKIH0KIAogdm9pZCBYTUxDQUxMCiBYTUxfVXNlUGFyc2VyQXNIYW5kbGVyQXJnKFhNTF9QYXJzZXIgcGFyc2VyKQogewotICBoYW5kbGVyQXJnID0gcGFyc2VyOworICBpZiAocGFyc2VyICE9IE5VTEwpCisgICAgcGFyc2VyLT5tX2hhbmRsZXJBcmcgPSBwYXJzZXI7CiB9CiAKIGVudW0gWE1MX0Vycm9yIFhNTENBTEwKIFhNTF9Vc2VGb3JlaWduRFREKFhNTF9QYXJzZXIgcGFyc2VyLCBYTUxfQm9vbCB1c2VEVEQpCiB7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gWE1MX0VSUk9SX0lOVkFMSURfQVJHVU1FTlQ7CiAjaWZkZWYgWE1MX0RURAogICAvKiBibG9jayBhZnRlciBYTUxfUGFyc2UoKS9YTUxfUGFyc2VCdWZmZXIoKSBoYXMgYmVlbiBjYWxsZWQgKi8KLSAgaWYgKHBzX3BhcnNpbmcgPT0gWE1MX1BBUlNJTkcgfHwgcHNfcGFyc2luZyA9PSBYTUxfU1VTUEVOREVEKQorICBpZiAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9PSBYTUxfUEFSU0lORyB8fCBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nID09IFhNTF9TVVNQRU5ERUQpCiAgICAgcmV0dXJuIFhNTF9FUlJPUl9DQU5UX0NIQU5HRV9GRUFUVVJFX09OQ0VfUEFSU0lORzsKLSAgdXNlRm9yZWlnbkRURCA9IHVzZURURDsKKyAgcGFyc2VyLT5tX3VzZUZvcmVpZ25EVEQgPSB1c2VEVEQ7CiAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICNlbHNlCiAgIHJldHVybiBYTUxfRVJST1JfRkVBVFVSRV9SRVFVSVJFU19YTUxfRFREOwpAQCAtMTI0OSw1OCArMTQ2NSw3MiBAQAogdm9pZCBYTUxDQUxMCiBYTUxfU2V0UmV0dXJuTlNUcmlwbGV0KFhNTF9QYXJzZXIgcGFyc2VyLCBpbnQgZG9fbnN0KQogewotICAvKiBibG9jayBhZnRlciBYTUxfUGFyc2UoKS9YTUxfUGFyc2VCdWZmZXIoKSBoYXMgYmVlbiBjYWxsZWQgKi8KLSAgaWYgKHBzX3BhcnNpbmcgPT0gWE1MX1BBUlNJTkcgfHwgcHNfcGFyc2luZyA9PSBYTUxfU1VTUEVOREVEKQorICBpZiAocGFyc2VyID09IE5VTEwpCiAgICAgcmV0dXJuOwotICBuc190cmlwbGV0cyA9IGRvX25zdCA/IFhNTF9UUlVFIDogWE1MX0ZBTFNFOworICAvKiBibG9jayBhZnRlciBYTUxfUGFyc2UoKS9YTUxfUGFyc2VCdWZmZXIoKSBoYXMgYmVlbiBjYWxsZWQgKi8KKyAgaWYgKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcgPT0gWE1MX1BBUlNJTkcgfHwgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9PSBYTUxfU1VTUEVOREVEKQorICAgIHJldHVybjsKKyAgcGFyc2VyLT5tX25zX3RyaXBsZXRzID0gZG9fbnN0ID8gWE1MX1RSVUUgOiBYTUxfRkFMU0U7CiB9CiAKIHZvaWQgWE1MQ0FMTAogWE1MX1NldFVzZXJEYXRhKFhNTF9QYXJzZXIgcGFyc2VyLCB2b2lkICpwKQogewotICBpZiAoaGFuZGxlckFyZyA9PSB1c2VyRGF0YSkKLSAgICBoYW5kbGVyQXJnID0gdXNlckRhdGEgPSBwOworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuOworICBpZiAocGFyc2VyLT5tX2hhbmRsZXJBcmcgPT0gcGFyc2VyLT5tX3VzZXJEYXRhKQorICAgIHBhcnNlci0+bV9oYW5kbGVyQXJnID0gcGFyc2VyLT5tX3VzZXJEYXRhID0gcDsKICAgZWxzZQotICAgIHVzZXJEYXRhID0gcDsKKyAgICBwYXJzZXItPm1fdXNlckRhdGEgPSBwOwogfQogCiBlbnVtIFhNTF9TdGF0dXMgWE1MQ0FMTAogWE1MX1NldEJhc2UoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IFhNTF9DaGFyICpwKQogeworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgIGlmIChwKSB7Ci0gICAgcCA9IHBvb2xDb3B5U3RyaW5nKCZfZHRkLT5wb29sLCBwKTsKKyAgICBwID0gcG9vbENvcHlTdHJpbmcoJnBhcnNlci0+bV9kdGQtPnBvb2wsIHApOwogICAgIGlmICghcCkKICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwotICAgIGN1ckJhc2UgPSBwOworICAgIHBhcnNlci0+bV9jdXJCYXNlID0gcDsKICAgfQogICBlbHNlCi0gICAgY3VyQmFzZSA9IE5VTEw7CisgICAgcGFyc2VyLT5tX2N1ckJhc2UgPSBOVUxMOwogICByZXR1cm4gWE1MX1NUQVRVU19PSzsKIH0KIAogY29uc3QgWE1MX0NoYXIgKiBYTUxDQUxMCiBYTUxfR2V0QmFzZShYTUxfUGFyc2VyIHBhcnNlcikKIHsKLSAgcmV0dXJuIGN1ckJhc2U7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsKKyAgcmV0dXJuIHBhcnNlci0+bV9jdXJCYXNlOwogfQogCiBpbnQgWE1MQ0FMTAogWE1MX0dldFNwZWNpZmllZEF0dHJpYnV0ZUNvdW50KFhNTF9QYXJzZXIgcGFyc2VyKQogewotICByZXR1cm4gblNwZWNpZmllZEF0dHM7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gLTE7CisgIHJldHVybiBwYXJzZXItPm1fblNwZWNpZmllZEF0dHM7CiB9CiAKIGludCBYTUxDQUxMCiBYTUxfR2V0SWRBdHRyaWJ1dGVJbmRleChYTUxfUGFyc2VyIHBhcnNlcikKIHsKLSAgcmV0dXJuIGlkQXR0SW5kZXg7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gLTE7CisgIHJldHVybiBwYXJzZXItPm1faWRBdHRJbmRleDsKIH0KIAogI2lmZGVmIFhNTF9BVFRSX0lORk8KIGNvbnN0IFhNTF9BdHRySW5mbyAqIFhNTENBTEwKIFhNTF9HZXRBdHRyaWJ1dGVJbmZvKFhNTF9QYXJzZXIgcGFyc2VyKQogewotICByZXR1cm4gYXR0SW5mbzsKKyAgaWYgKHBhcnNlciA9PSBOVUxMKQorICAgIHJldHVybiBOVUxMOworICByZXR1cm4gcGFyc2VyLT5tX2F0dEluZm87CiB9CiAjZW5kaWYKIApAQCAtMTMwOSw0MSArMTUzOSw0OCBAQAogICAgICAgICAgICAgICAgICAgICAgIFhNTF9TdGFydEVsZW1lbnRIYW5kbGVyIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgIFhNTF9FbmRFbGVtZW50SGFuZGxlciBlbmQpCiB7Ci0gIHN0YXJ0RWxlbWVudEhhbmRsZXIgPSBzdGFydDsKLSAgZW5kRWxlbWVudEhhbmRsZXIgPSBlbmQ7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm47CisgIHBhcnNlci0+bV9zdGFydEVsZW1lbnRIYW5kbGVyID0gc3RhcnQ7CisgIHBhcnNlci0+bV9lbmRFbGVtZW50SGFuZGxlciA9IGVuZDsKIH0KIAogdm9pZCBYTUxDQUxMCiBYTUxfU2V0U3RhcnRFbGVtZW50SGFuZGxlcihYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9TdGFydEVsZW1lbnRIYW5kbGVyIHN0YXJ0KSB7Ci0gIHN0YXJ0RWxlbWVudEhhbmRsZXIgPSBzdGFydDsKKyAgaWYgKHBhcnNlciAhPSBOVUxMKQorICAgIHBhcnNlci0+bV9zdGFydEVsZW1lbnRIYW5kbGVyID0gc3RhcnQ7CiB9CiAKIHZvaWQgWE1MQ0FMTAogWE1MX1NldEVuZEVsZW1lbnRIYW5kbGVyKFhNTF9QYXJzZXIgcGFyc2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FbmRFbGVtZW50SGFuZGxlciBlbmQpIHsKLSAgZW5kRWxlbWVudEhhbmRsZXIgPSBlbmQ7CisgIGlmIChwYXJzZXIgIT0gTlVMTCkKKyAgICBwYXJzZXItPm1fZW5kRWxlbWVudEhhbmRsZXIgPSBlbmQ7CiB9CiAKIHZvaWQgWE1MQ0FMTAogWE1MX1NldENoYXJhY3RlckRhdGFIYW5kbGVyKFhNTF9QYXJzZXIgcGFyc2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9DaGFyYWN0ZXJEYXRhSGFuZGxlciBoYW5kbGVyKQogewotICBjaGFyYWN0ZXJEYXRhSGFuZGxlciA9IGhhbmRsZXI7CisgIGlmIChwYXJzZXIgIT0gTlVMTCkKKyAgICBwYXJzZXItPm1fY2hhcmFjdGVyRGF0YUhhbmRsZXIgPSBoYW5kbGVyOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKFhNTF9QYXJzZXIgcGFyc2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX1Byb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIgaGFuZGxlcikKIHsKLSAgcHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IGhhbmRsZXI7CisgIGlmIChwYXJzZXIgIT0gTlVMTCkKKyAgICBwYXJzZXItPm1fcHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlciA9IGhhbmRsZXI7CiB9CiAKIHZvaWQgWE1MQ0FMTAogWE1MX1NldENvbW1lbnRIYW5kbGVyKFhNTF9QYXJzZXIgcGFyc2VyLAogICAgICAgICAgICAgICAgICAgICAgIFhNTF9Db21tZW50SGFuZGxlciBoYW5kbGVyKQogewotICBjb21tZW50SGFuZGxlciA9IGhhbmRsZXI7CisgIGlmIChwYXJzZXIgIT0gTlVMTCkKKyAgICBwYXJzZXItPm1fY29tbWVudEhhbmRsZXIgPSBoYW5kbGVyOwogfQogCiB2b2lkIFhNTENBTEwKQEAgLTEzNTEsMzYgKzE1ODgsNDQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9TdGFydENkYXRhU2VjdGlvbkhhbmRsZXIgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfRW5kQ2RhdGFTZWN0aW9uSGFuZGxlciBlbmQpCiB7Ci0gIHN0YXJ0Q2RhdGFTZWN0aW9uSGFuZGxlciA9IHN0YXJ0OwotICBlbmRDZGF0YVNlY3Rpb25IYW5kbGVyID0gZW5kOworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuOworICBwYXJzZXItPm1fc3RhcnRDZGF0YVNlY3Rpb25IYW5kbGVyID0gc3RhcnQ7CisgIHBhcnNlci0+bV9lbmRDZGF0YVNlY3Rpb25IYW5kbGVyID0gZW5kOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXRTdGFydENkYXRhU2VjdGlvbkhhbmRsZXIoWE1MX1BhcnNlciBwYXJzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9TdGFydENkYXRhU2VjdGlvbkhhbmRsZXIgc3RhcnQpIHsKLSAgc3RhcnRDZGF0YVNlY3Rpb25IYW5kbGVyID0gc3RhcnQ7CisgIGlmIChwYXJzZXIgIT0gTlVMTCkKKyAgICBwYXJzZXItPm1fc3RhcnRDZGF0YVNlY3Rpb25IYW5kbGVyID0gc3RhcnQ7CiB9CiAKIHZvaWQgWE1MQ0FMTAogWE1MX1NldEVuZENkYXRhU2VjdGlvbkhhbmRsZXIoWE1MX1BhcnNlciBwYXJzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfRW5kQ2RhdGFTZWN0aW9uSGFuZGxlciBlbmQpIHsKLSAgZW5kQ2RhdGFTZWN0aW9uSGFuZGxlciA9IGVuZDsKKyAgaWYgKHBhcnNlciAhPSBOVUxMKQorICAgIHBhcnNlci0+bV9lbmRDZGF0YVNlY3Rpb25IYW5kbGVyID0gZW5kOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXREZWZhdWx0SGFuZGxlcihYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICAgICAgICBYTUxfRGVmYXVsdEhhbmRsZXIgaGFuZGxlcikKIHsKLSAgZGVmYXVsdEhhbmRsZXIgPSBoYW5kbGVyOwotICBkZWZhdWx0RXhwYW5kSW50ZXJuYWxFbnRpdGllcyA9IFhNTF9GQUxTRTsKKyAgaWYgKHBhcnNlciA9PSBOVUxMKQorICAgIHJldHVybjsKKyAgcGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyID0gaGFuZGxlcjsKKyAgcGFyc2VyLT5tX2RlZmF1bHRFeHBhbmRJbnRlcm5hbEVudGl0aWVzID0gWE1MX0ZBTFNFOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXREZWZhdWx0SGFuZGxlckV4cGFuZChYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfRGVmYXVsdEhhbmRsZXIgaGFuZGxlcikKIHsKLSAgZGVmYXVsdEhhbmRsZXIgPSBoYW5kbGVyOwotICBkZWZhdWx0RXhwYW5kSW50ZXJuYWxFbnRpdGllcyA9IFhNTF9UUlVFOworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuOworICBwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIgPSBoYW5kbGVyOworICBwYXJzZXItPm1fZGVmYXVsdEV4cGFuZEludGVybmFsRW50aXRpZXMgPSBYTUxfVFJVRTsKIH0KIAogdm9pZCBYTUxDQUxMCkBAIC0xMzg4LDM0ICsxNjMzLDQwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9TdGFydERvY3R5cGVEZWNsSGFuZGxlciBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0VuZERvY3R5cGVEZWNsSGFuZGxlciBlbmQpCiB7Ci0gIHN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyID0gc3RhcnQ7Ci0gIGVuZERvY3R5cGVEZWNsSGFuZGxlciA9IGVuZDsKKyAgaWYgKHBhcnNlciA9PSBOVUxMKQorICAgIHJldHVybjsKKyAgcGFyc2VyLT5tX3N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyID0gc3RhcnQ7CisgIHBhcnNlci0+bV9lbmREb2N0eXBlRGVjbEhhbmRsZXIgPSBlbmQ7CiB9CiAKIHZvaWQgWE1MQ0FMTAogWE1MX1NldFN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKFhNTF9QYXJzZXIgcGFyc2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9TdGFydERvY3R5cGVEZWNsSGFuZGxlciBzdGFydCkgewotICBzdGFydERvY3R5cGVEZWNsSGFuZGxlciA9IHN0YXJ0OworICBpZiAocGFyc2VyICE9IE5VTEwpCisgICAgcGFyc2VyLT5tX3N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyID0gc3RhcnQ7CiB9CiAKIHZvaWQgWE1MQ0FMTAogWE1MX1NldEVuZERvY3R5cGVEZWNsSGFuZGxlcihYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0VuZERvY3R5cGVEZWNsSGFuZGxlciBlbmQpIHsKLSAgZW5kRG9jdHlwZURlY2xIYW5kbGVyID0gZW5kOworICBpZiAocGFyc2VyICE9IE5VTEwpCisgICAgcGFyc2VyLT5tX2VuZERvY3R5cGVEZWNsSGFuZGxlciA9IGVuZDsKIH0KIAogdm9pZCBYTUxDQUxMCiBYTUxfU2V0VW5wYXJzZWRFbnRpdHlEZWNsSGFuZGxlcihYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9VbnBhcnNlZEVudGl0eURlY2xIYW5kbGVyIGhhbmRsZXIpCiB7Ci0gIHVucGFyc2VkRW50aXR5RGVjbEhhbmRsZXIgPSBoYW5kbGVyOworICBpZiAocGFyc2VyICE9IE5VTEwpCisgICAgcGFyc2VyLT5tX3VucGFyc2VkRW50aXR5RGVjbEhhbmRsZXIgPSBoYW5kbGVyOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXROb3RhdGlvbkRlY2xIYW5kbGVyKFhNTF9QYXJzZXIgcGFyc2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX05vdGF0aW9uRGVjbEhhbmRsZXIgaGFuZGxlcikKIHsKLSAgbm90YXRpb25EZWNsSGFuZGxlciA9IGhhbmRsZXI7CisgIGlmIChwYXJzZXIgIT0gTlVMTCkKKyAgICBwYXJzZXItPm1fbm90YXRpb25EZWNsSGFuZGxlciA9IGhhbmRsZXI7CiB9CiAKIHZvaWQgWE1MQ0FMTApAQCAtMTQyMyw1MCArMTY3NCw1OSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9TdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyIHN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FbmROYW1lc3BhY2VEZWNsSGFuZGxlciBlbmQpCiB7Ci0gIHN0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXIgPSBzdGFydDsKLSAgZW5kTmFtZXNwYWNlRGVjbEhhbmRsZXIgPSBlbmQ7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm47CisgIHBhcnNlci0+bV9zdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyID0gc3RhcnQ7CisgIHBhcnNlci0+bV9lbmROYW1lc3BhY2VEZWNsSGFuZGxlciA9IGVuZDsKIH0KIAogdm9pZCBYTUxDQUxMCiBYTUxfU2V0U3RhcnROYW1lc3BhY2VEZWNsSGFuZGxlcihYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9TdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyIHN0YXJ0KSB7Ci0gIHN0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXIgPSBzdGFydDsKKyAgaWYgKHBhcnNlciAhPSBOVUxMKQorICAgIHBhcnNlci0+bV9zdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyID0gc3RhcnQ7CiB9CiAKIHZvaWQgWE1MQ0FMTAogWE1MX1NldEVuZE5hbWVzcGFjZURlY2xIYW5kbGVyKFhNTF9QYXJzZXIgcGFyc2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FbmROYW1lc3BhY2VEZWNsSGFuZGxlciBlbmQpIHsKLSAgZW5kTmFtZXNwYWNlRGVjbEhhbmRsZXIgPSBlbmQ7CisgIGlmIChwYXJzZXIgIT0gTlVMTCkKKyAgICBwYXJzZXItPm1fZW5kTmFtZXNwYWNlRGVjbEhhbmRsZXIgPSBlbmQ7CiB9CiAKIHZvaWQgWE1MQ0FMTAogWE1MX1NldE5vdFN0YW5kYWxvbmVIYW5kbGVyKFhNTF9QYXJzZXIgcGFyc2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9Ob3RTdGFuZGFsb25lSGFuZGxlciBoYW5kbGVyKQogewotICBub3RTdGFuZGFsb25lSGFuZGxlciA9IGhhbmRsZXI7CisgIGlmIChwYXJzZXIgIT0gTlVMTCkKKyAgICBwYXJzZXItPm1fbm90U3RhbmRhbG9uZUhhbmRsZXIgPSBoYW5kbGVyOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXRFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIoWE1MX1BhcnNlciBwYXJzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FeHRlcm5hbEVudGl0eVJlZkhhbmRsZXIgaGFuZGxlcikKIHsKLSAgZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyID0gaGFuZGxlcjsKKyAgaWYgKHBhcnNlciAhPSBOVUxMKQorICAgIHBhcnNlci0+bV9leHRlcm5hbEVudGl0eVJlZkhhbmRsZXIgPSBoYW5kbGVyOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXRFeHRlcm5hbEVudGl0eVJlZkhhbmRsZXJBcmcoWE1MX1BhcnNlciBwYXJzZXIsIHZvaWQgKmFyZykKIHsKKyAgaWYgKHBhcnNlciA9PSBOVUxMKQorICAgIHJldHVybjsKICAgaWYgKGFyZykKLSAgICBleHRlcm5hbEVudGl0eVJlZkhhbmRsZXJBcmcgPSAoWE1MX1BhcnNlcilhcmc7CisgICAgcGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZyA9IChYTUxfUGFyc2VyKWFyZzsKICAgZWxzZQotICAgIGV4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZyA9IHBhcnNlcjsKKyAgICBwYXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnID0gcGFyc2VyOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXRTa2lwcGVkRW50aXR5SGFuZGxlcihYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfU2tpcHBlZEVudGl0eUhhbmRsZXIgaGFuZGxlcikKIHsKLSAgc2tpcHBlZEVudGl0eUhhbmRsZXIgPSBoYW5kbGVyOworICBpZiAocGFyc2VyICE9IE5VTEwpCisgICAgcGFyc2VyLT5tX3NraXBwZWRFbnRpdHlIYW5kbGVyID0gaGFuZGxlcjsKIH0KIAogdm9pZCBYTUxDQUxMCkBAIC0xNDc0LDQ2ICsxNzM0LDU0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfVW5rbm93bkVuY29kaW5nSGFuZGxlciBoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSkKIHsKLSAgdW5rbm93bkVuY29kaW5nSGFuZGxlciA9IGhhbmRsZXI7Ci0gIHVua25vd25FbmNvZGluZ0hhbmRsZXJEYXRhID0gZGF0YTsKKyAgaWYgKHBhcnNlciA9PSBOVUxMKQorICAgIHJldHVybjsKKyAgcGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ0hhbmRsZXIgPSBoYW5kbGVyOworICBwYXJzZXItPm1fdW5rbm93bkVuY29kaW5nSGFuZGxlckRhdGEgPSBkYXRhOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXRFbGVtZW50RGVjbEhhbmRsZXIoWE1MX1BhcnNlciBwYXJzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9FbGVtZW50RGVjbEhhbmRsZXIgZWxkZWNsKQogewotICBlbGVtZW50RGVjbEhhbmRsZXIgPSBlbGRlY2w7CisgIGlmIChwYXJzZXIgIT0gTlVMTCkKKyAgICBwYXJzZXItPm1fZWxlbWVudERlY2xIYW5kbGVyID0gZWxkZWNsOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXRBdHRsaXN0RGVjbEhhbmRsZXIoWE1MX1BhcnNlciBwYXJzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFhNTF9BdHRsaXN0RGVjbEhhbmRsZXIgYXR0ZGVjbCkKIHsKLSAgYXR0bGlzdERlY2xIYW5kbGVyID0gYXR0ZGVjbDsKKyAgaWYgKHBhcnNlciAhPSBOVUxMKQorICAgIHBhcnNlci0+bV9hdHRsaXN0RGVjbEhhbmRsZXIgPSBhdHRkZWNsOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9TZXRFbnRpdHlEZWNsSGFuZGxlcihYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfRW50aXR5RGVjbEhhbmRsZXIgaGFuZGxlcikKIHsKLSAgZW50aXR5RGVjbEhhbmRsZXIgPSBoYW5kbGVyOworICBpZiAocGFyc2VyICE9IE5VTEwpCisgICAgcGFyc2VyLT5tX2VudGl0eURlY2xIYW5kbGVyID0gaGFuZGxlcjsKIH0KIAogdm9pZCBYTUxDQUxMCiBYTUxfU2V0WG1sRGVjbEhhbmRsZXIoWE1MX1BhcnNlciBwYXJzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgWE1MX1htbERlY2xIYW5kbGVyIGhhbmRsZXIpIHsKLSAgeG1sRGVjbEhhbmRsZXIgPSBoYW5kbGVyOworICBpZiAocGFyc2VyICE9IE5VTEwpCisgICAgcGFyc2VyLT5tX3htbERlY2xIYW5kbGVyID0gaGFuZGxlcjsKIH0KIAogaW50IFhNTENBTEwKIFhNTF9TZXRQYXJhbUVudGl0eVBhcnNpbmcoWE1MX1BhcnNlciBwYXJzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gWE1MX1BhcmFtRW50aXR5UGFyc2luZyBwZVBhcnNpbmcpCiB7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKICAgLyogYmxvY2sgYWZ0ZXIgWE1MX1BhcnNlKCkvWE1MX1BhcnNlQnVmZmVyKCkgaGFzIGJlZW4gY2FsbGVkICovCi0gIGlmIChwc19wYXJzaW5nID09IFhNTF9QQVJTSU5HIHx8IHBzX3BhcnNpbmcgPT0gWE1MX1NVU1BFTkRFRCkKKyAgaWYgKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcgPT0gWE1MX1BBUlNJTkcgfHwgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9PSBYTUxfU1VTUEVOREVEKQogICAgIHJldHVybiAwOwogI2lmZGVmIFhNTF9EVEQKLSAgcGFyYW1FbnRpdHlQYXJzaW5nID0gcGVQYXJzaW5nOworICBwYXJzZXItPm1fcGFyYW1FbnRpdHlQYXJzaW5nID0gcGVQYXJzaW5nOwogICByZXR1cm4gMTsKICNlbHNlCiAgIHJldHVybiBwZVBhcnNpbmcgPT0gWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX05FVkVSOwpAQCAtMTUyNCw4OCArMTc5MiwxMTggQEAKIFhNTF9TZXRIYXNoU2FsdChYTUxfUGFyc2VyIHBhcnNlciwKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGhhc2hfc2FsdCkKIHsKLSAgLyogYmxvY2sgYWZ0ZXIgWE1MX1BhcnNlKCkvWE1MX1BhcnNlQnVmZmVyKCkgaGFzIGJlZW4gY2FsbGVkICovCi0gIGlmIChwc19wYXJzaW5nID09IFhNTF9QQVJTSU5HIHx8IHBzX3BhcnNpbmcgPT0gWE1MX1NVU1BFTkRFRCkKKyAgaWYgKHBhcnNlciA9PSBOVUxMKQogICAgIHJldHVybiAwOwotICBoYXNoX3NlY3JldF9zYWx0ID0gaGFzaF9zYWx0OworICBpZiAocGFyc2VyLT5tX3BhcmVudFBhcnNlcikKKyAgICByZXR1cm4gWE1MX1NldEhhc2hTYWx0KHBhcnNlci0+bV9wYXJlbnRQYXJzZXIsIGhhc2hfc2FsdCk7CisgIC8qIGJsb2NrIGFmdGVyIFhNTF9QYXJzZSgpL1hNTF9QYXJzZUJ1ZmZlcigpIGhhcyBiZWVuIGNhbGxlZCAqLworICBpZiAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9PSBYTUxfUEFSU0lORyB8fCBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nID09IFhNTF9TVVNQRU5ERUQpCisgICAgcmV0dXJuIDA7CisgIHBhcnNlci0+bV9oYXNoX3NlY3JldF9zYWx0ID0gaGFzaF9zYWx0OwogICByZXR1cm4gMTsKIH0KIAogZW51bSBYTUxfU3RhdHVzIFhNTENBTEwKIFhNTF9QYXJzZShYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgY2hhciAqcywgaW50IGxlbiwgaW50IGlzRmluYWwpCiB7Ci0gIHN3aXRjaCAocHNfcGFyc2luZykgeworICBpZiAoKHBhcnNlciA9PSBOVUxMKSB8fCAobGVuIDwgMCkgfHwgKChzID09IE5VTEwpICYmIChsZW4gIT0gMCkpKSB7CisgICAgaWYgKHBhcnNlciAhPSBOVUxMKQorICAgICAgcGFyc2VyLT5tX2Vycm9yQ29kZSA9IFhNTF9FUlJPUl9JTlZBTElEX0FSR1VNRU5UOworICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOworICB9CisgIHN3aXRjaCAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZykgewogICBjYXNlIFhNTF9TVVNQRU5ERUQ6Ci0gICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX1NVU1BFTkRFRDsKKyAgICBwYXJzZXItPm1fZXJyb3JDb2RlID0gWE1MX0VSUk9SX1NVU1BFTkRFRDsKICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKICAgY2FzZSBYTUxfRklOSVNIRUQ6Ci0gICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX0ZJTklTSEVEOworICAgIHBhcnNlci0+bV9lcnJvckNvZGUgPSBYTUxfRVJST1JfRklOSVNIRUQ7CiAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgIGNhc2UgWE1MX0lOSVRJQUxJWkVEOgotICAgIGlmIChwYXJlbnRQYXJzZXIgPT0gTlVMTCAmJiAhc3RhcnRQYXJzaW5nKHBhcnNlcikpIHsKLSAgICAgIGVycm9yQ29kZSA9IFhNTF9FUlJPUl9OT19NRU1PUlk7CisgICAgaWYgKHBhcnNlci0+bV9wYXJlbnRQYXJzZXIgPT0gTlVMTCAmJiAhc3RhcnRQYXJzaW5nKHBhcnNlcikpIHsKKyAgICAgIHBhcnNlci0+bV9lcnJvckNvZGUgPSBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgICAgfQorICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICBkZWZhdWx0OgotICAgIHBzX3BhcnNpbmcgPSBYTUxfUEFSU0lORzsKKyAgICBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nID0gWE1MX1BBUlNJTkc7CiAgIH0KIAogICBpZiAobGVuID09IDApIHsKLSAgICBwc19maW5hbEJ1ZmZlciA9IChYTUxfQm9vbClpc0ZpbmFsOworICAgIHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyID0gKFhNTF9Cb29sKWlzRmluYWw7CiAgICAgaWYgKCFpc0ZpbmFsKQogICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfT0s7Ci0gICAgcG9zaXRpb25QdHIgPSBidWZmZXJQdHI7Ci0gICAgcGFyc2VFbmRQdHIgPSBidWZmZXJFbmQ7CisgICAgcGFyc2VyLT5tX3Bvc2l0aW9uUHRyID0gcGFyc2VyLT5tX2J1ZmZlclB0cjsKKyAgICBwYXJzZXItPm1fcGFyc2VFbmRQdHIgPSBwYXJzZXItPm1fYnVmZmVyRW5kOwogCiAgICAgLyogSWYgZGF0YSBhcmUgbGVmdCBvdmVyIGZyb20gbGFzdCBidWZmZXIsIGFuZCB3ZSBub3cga25vdyB0aGF0IHRoZXNlCiAgICAgICAgZGF0YSBhcmUgdGhlIGZpbmFsIGNodW5rIG9mIGlucHV0LCB0aGVuIHdlIGhhdmUgdG8gY2hlY2sgdGhlbSBhZ2FpbgogICAgICAgIHRvIGRldGVjdCBlcnJvcnMgYmFzZWQgb24gdGhhdCBmYWN0LgogICAgICovCi0gICAgZXJyb3JDb2RlID0gcHJvY2Vzc29yKHBhcnNlciwgYnVmZmVyUHRyLCBwYXJzZUVuZFB0ciwgJmJ1ZmZlclB0cik7CisgICAgcGFyc2VyLT5tX2Vycm9yQ29kZSA9IHBhcnNlci0+bV9wcm9jZXNzb3IocGFyc2VyLCBwYXJzZXItPm1fYnVmZmVyUHRyLCBwYXJzZXItPm1fcGFyc2VFbmRQdHIsICZwYXJzZXItPm1fYnVmZmVyUHRyKTsKIAotICAgIGlmIChlcnJvckNvZGUgPT0gWE1MX0VSUk9SX05PTkUpIHsKLSAgICAgIHN3aXRjaCAocHNfcGFyc2luZykgeworICAgIGlmIChwYXJzZXItPm1fZXJyb3JDb2RlID09IFhNTF9FUlJPUl9OT05FKSB7CisgICAgICBzd2l0Y2ggKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcpIHsKICAgICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKLSAgICAgICAgWG1sVXBkYXRlUG9zaXRpb24oZW5jb2RpbmcsIHBvc2l0aW9uUHRyLCBidWZmZXJQdHIsICZwb3NpdGlvbik7Ci0gICAgICAgIHBvc2l0aW9uUHRyID0gYnVmZmVyUHRyOworICAgICAgICAvKiBJdCBpcyBoYXJkIHRvIGJlIGNlcnRhaW4sIGJ1dCBpdCBzZWVtcyB0aGF0IHRoaXMgY2FzZQorICAgICAgICAgKiBjYW5ub3Qgb2NjdXIuICBUaGlzIGNvZGUgaXMgY2xlYW5pbmcgdXAgYSBwcmV2aW91cyBwYXJzZQorICAgICAgICAgKiB3aXRoIG5vIG5ldyBkYXRhIChzaW5jZSBsZW4gPT0gMCkuICBDaGFuZ2luZyB0aGUgcGFyc2luZworICAgICAgICAgKiBzdGF0ZSByZXF1aXJlcyBnZXR0aW5nIHRvIGV4ZWN1dGUgYSBoYW5kbGVyIGZ1bmN0aW9uLCBhbmQKKyAgICAgICAgICogdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGFuIG9wcG9ydHVuaXR5IGZvciB0aGF0IHdoaWxlIGluCisgICAgICAgICAqIHRoaXMgY2lyY3Vtc3RhbmNlLgorICAgICAgICAgKgorICAgICAgICAgKiBHaXZlbiB0aGUgdW5jZXJ0YWludHksIHdlIHJldGFpbiB0aGUgY29kZSBidXQgZXhjbHVkZSBpdAorICAgICAgICAgKiBmcm9tIGNvdmVyYWdlIHRlc3RzLgorICAgICAgICAgKgorICAgICAgICAgKiBMQ09WX0VYQ0xfU1RBUlQKKyAgICAgICAgICovCisgICAgICAgIFhtbFVwZGF0ZVBvc2l0aW9uKHBhcnNlci0+bV9lbmNvZGluZywgcGFyc2VyLT5tX3Bvc2l0aW9uUHRyLCBwYXJzZXItPm1fYnVmZmVyUHRyLCAmcGFyc2VyLT5tX3Bvc2l0aW9uKTsKKyAgICAgICAgcGFyc2VyLT5tX3Bvc2l0aW9uUHRyID0gcGFyc2VyLT5tX2J1ZmZlclB0cjsKICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfU1VTUEVOREVEOworICAgICAgICAvKiBMQ09WX0VYQ0xfU1RPUCAqLwogICAgICAgY2FzZSBYTUxfSU5JVElBTElaRUQ6CiAgICAgICBjYXNlIFhNTF9QQVJTSU5HOgotICAgICAgICBwc19wYXJzaW5nID0gWE1MX0ZJTklTSEVEOworICAgICAgICBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nID0gWE1MX0ZJTklTSEVEOwogICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX09LOwogICAgICAgfQogICAgIH0KLSAgICBldmVudEVuZFB0ciA9IGV2ZW50UHRyOwotICAgIHByb2Nlc3NvciA9IGVycm9yUHJvY2Vzc29yOworICAgIHBhcnNlci0+bV9ldmVudEVuZFB0ciA9IHBhcnNlci0+bV9ldmVudFB0cjsKKyAgICBwYXJzZXItPm1fcHJvY2Vzc29yID0gZXJyb3JQcm9jZXNzb3I7CiAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgIH0KICNpZm5kZWYgWE1MX0NPTlRFWFRfQllURVMKLSAgZWxzZSBpZiAoYnVmZmVyUHRyID09IGJ1ZmZlckVuZCkgeworICBlbHNlIGlmIChwYXJzZXItPm1fYnVmZmVyUHRyID09IHBhcnNlci0+bV9idWZmZXJFbmQpIHsKICAgICBjb25zdCBjaGFyICplbmQ7CiAgICAgaW50IG5MZWZ0T3ZlcjsKICAgICBlbnVtIFhNTF9TdGF0dXMgcmVzdWx0OwotICAgIHBhcnNlRW5kQnl0ZUluZGV4ICs9IGxlbjsKLSAgICBwb3NpdGlvblB0ciA9IHM7Ci0gICAgcHNfZmluYWxCdWZmZXIgPSAoWE1MX0Jvb2wpaXNGaW5hbDsKKyAgICAvKiBEZXRlY3Qgb3ZlcmZsb3cgKGErYiA+IE1BWCA8PT0+IGIgPiBNQVgtYSkgKi8KKyAgICBpZiAobGVuID4gKChYTUxfU2l6ZSktMSkgLyAyIC0gcGFyc2VyLT5tX3BhcnNlRW5kQnl0ZUluZGV4KSB7CisgICAgICAgcGFyc2VyLT5tX2Vycm9yQ29kZSA9IFhNTF9FUlJPUl9OT19NRU1PUlk7CisgICAgICAgcGFyc2VyLT5tX2V2ZW50UHRyID0gcGFyc2VyLT5tX2V2ZW50RW5kUHRyID0gTlVMTDsKKyAgICAgICBwYXJzZXItPm1fcHJvY2Vzc29yID0gZXJyb3JQcm9jZXNzb3I7CisgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CisgICAgfQorICAgIHBhcnNlci0+bV9wYXJzZUVuZEJ5dGVJbmRleCArPSBsZW47CisgICAgcGFyc2VyLT5tX3Bvc2l0aW9uUHRyID0gczsKKyAgICBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlciA9IChYTUxfQm9vbClpc0ZpbmFsOwogCi0gICAgZXJyb3JDb2RlID0gcHJvY2Vzc29yKHBhcnNlciwgcywgcGFyc2VFbmRQdHIgPSBzICsgbGVuLCAmZW5kKTsKKyAgICBwYXJzZXItPm1fZXJyb3JDb2RlID0gcGFyc2VyLT5tX3Byb2Nlc3NvcihwYXJzZXIsIHMsIHBhcnNlci0+bV9wYXJzZUVuZFB0ciA9IHMgKyBsZW4sICZlbmQpOwogCi0gICAgaWYgKGVycm9yQ29kZSAhPSBYTUxfRVJST1JfTk9ORSkgewotICAgICAgZXZlbnRFbmRQdHIgPSBldmVudFB0cjsKLSAgICAgIHByb2Nlc3NvciA9IGVycm9yUHJvY2Vzc29yOworICAgIGlmIChwYXJzZXItPm1fZXJyb3JDb2RlICE9IFhNTF9FUlJPUl9OT05FKSB7CisgICAgICBwYXJzZXItPm1fZXZlbnRFbmRQdHIgPSBwYXJzZXItPm1fZXZlbnRQdHI7CisgICAgICBwYXJzZXItPm1fcHJvY2Vzc29yID0gZXJyb3JQcm9jZXNzb3I7CiAgICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKKyAgICAgIHN3aXRjaCAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZykgewogICAgICAgY2FzZSBYTUxfU1VTUEVOREVEOgogICAgICAgICByZXN1bHQgPSBYTUxfU1RBVFVTX1NVU1BFTkRFRDsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIFhNTF9JTklUSUFMSVpFRDoKICAgICAgIGNhc2UgWE1MX1BBUlNJTkc6CiAgICAgICAgIGlmIChpc0ZpbmFsKSB7Ci0gICAgICAgICAgcHNfcGFyc2luZyA9IFhNTF9GSU5JU0hFRDsKKyAgICAgICAgICBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nID0gWE1MX0ZJTklTSEVEOwogICAgICAgICAgIHJldHVybiBYTUxfU1RBVFVTX09LOwogICAgICAgICB9CiAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KQEAgLTE2MTQsMzIgKzE5MTIsMzMgQEAKICAgICAgIH0KICAgICB9CiAKLSAgICBYbWxVcGRhdGVQb3NpdGlvbihlbmNvZGluZywgcG9zaXRpb25QdHIsIGVuZCwgJnBvc2l0aW9uKTsKKyAgICBYbWxVcGRhdGVQb3NpdGlvbihwYXJzZXItPm1fZW5jb2RpbmcsIHBhcnNlci0+bV9wb3NpdGlvblB0ciwgZW5kLCAmcGFyc2VyLT5tX3Bvc2l0aW9uKTsKICAgICBuTGVmdE92ZXIgPSBzICsgbGVuIC0gZW5kOwogICAgIGlmIChuTGVmdE92ZXIpIHsKLSAgICAgIGlmIChidWZmZXIgPT0gTlVMTCB8fCBuTGVmdE92ZXIgPiBidWZmZXJMaW0gLSBidWZmZXIpIHsKLSAgICAgICAgLyogRklYTUUgYXZvaWQgaW50ZWdlciBvdmVyZmxvdyAqLwotICAgICAgICBjaGFyICp0ZW1wOwotICAgICAgICB0ZW1wID0gKGJ1ZmZlciA9PSBOVUxMCi0gICAgICAgICAgICAgICAgPyAoY2hhciAqKU1BTExPQyhsZW4gKiAyKQotICAgICAgICAgICAgICAgIDogKGNoYXIgKilSRUFMTE9DKGJ1ZmZlciwgbGVuICogMikpOworICAgICAgaWYgKHBhcnNlci0+bV9idWZmZXIgPT0gTlVMTCB8fCBuTGVmdE92ZXIgPiBwYXJzZXItPm1fYnVmZmVyTGltIC0gcGFyc2VyLT5tX2J1ZmZlcikgeworICAgICAgICAvKiBhdm9pZCBfc2lnbmVkXyBpbnRlZ2VyIG92ZXJmbG93ICovCisgICAgICAgIGNoYXIgKnRlbXAgPSBOVUxMOworICAgICAgICBjb25zdCBpbnQgYnl0ZXNUb0FsbG9jYXRlID0gKGludCkoKHVuc2lnbmVkKWxlbiAqIDJVKTsKKyAgICAgICAgaWYgKGJ5dGVzVG9BbGxvY2F0ZSA+IDApIHsKKyAgICAgICAgICB0ZW1wID0gKGNoYXIgKilSRUFMTE9DKHBhcnNlciwgcGFyc2VyLT5tX2J1ZmZlciwgYnl0ZXNUb0FsbG9jYXRlKTsKKyAgICAgICAgfQogICAgICAgICBpZiAodGVtcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX05PX01FTU9SWTsKLSAgICAgICAgICBldmVudFB0ciA9IGV2ZW50RW5kUHRyID0gTlVMTDsKLSAgICAgICAgICBwcm9jZXNzb3IgPSBlcnJvclByb2Nlc3NvcjsKKyAgICAgICAgICBwYXJzZXItPm1fZXJyb3JDb2RlID0gWE1MX0VSUk9SX05PX01FTU9SWTsKKyAgICAgICAgICBwYXJzZXItPm1fZXZlbnRQdHIgPSBwYXJzZXItPm1fZXZlbnRFbmRQdHIgPSBOVUxMOworICAgICAgICAgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBlcnJvclByb2Nlc3NvcjsKICAgICAgICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKICAgICAgICAgfQotICAgICAgICBidWZmZXIgPSB0ZW1wOwotICAgICAgICBidWZmZXJMaW0gPSBidWZmZXIgKyBsZW4gKiAyOworICAgICAgICBwYXJzZXItPm1fYnVmZmVyID0gdGVtcDsKKyAgICAgICAgcGFyc2VyLT5tX2J1ZmZlckxpbSA9IHBhcnNlci0+bV9idWZmZXIgKyBieXRlc1RvQWxsb2NhdGU7CiAgICAgICB9Ci0gICAgICBtZW1jcHkoYnVmZmVyLCBlbmQsIG5MZWZ0T3Zlcik7CisgICAgICBtZW1jcHkocGFyc2VyLT5tX2J1ZmZlciwgZW5kLCBuTGVmdE92ZXIpOwogICAgIH0KLSAgICBidWZmZXJQdHIgPSBidWZmZXI7Ci0gICAgYnVmZmVyRW5kID0gYnVmZmVyICsgbkxlZnRPdmVyOwotICAgIHBvc2l0aW9uUHRyID0gYnVmZmVyUHRyOwotICAgIHBhcnNlRW5kUHRyID0gYnVmZmVyRW5kOwotICAgIGV2ZW50UHRyID0gYnVmZmVyUHRyOwotICAgIGV2ZW50RW5kUHRyID0gYnVmZmVyUHRyOworICAgIHBhcnNlci0+bV9idWZmZXJQdHIgPSBwYXJzZXItPm1fYnVmZmVyOworICAgIHBhcnNlci0+bV9idWZmZXJFbmQgPSBwYXJzZXItPm1fYnVmZmVyICsgbkxlZnRPdmVyOworICAgIHBhcnNlci0+bV9wb3NpdGlvblB0ciA9IHBhcnNlci0+bV9idWZmZXJQdHI7CisgICAgcGFyc2VyLT5tX3BhcnNlRW5kUHRyID0gcGFyc2VyLT5tX2J1ZmZlckVuZDsKKyAgICBwYXJzZXItPm1fZXZlbnRQdHIgPSBwYXJzZXItPm1fYnVmZmVyUHRyOworICAgIHBhcnNlci0+bV9ldmVudEVuZFB0ciA9IHBhcnNlci0+bV9idWZmZXJQdHI7CiAgICAgcmV0dXJuIHJlc3VsdDsKICAgfQogI2VuZGlmICAvKiBub3QgZGVmaW5lZCBYTUxfQ09OVEVYVF9CWVRFUyAqLwpAQCAtMTY2MCwxNzcgKzE5NTksMjAxIEBACiAgIGNvbnN0IGNoYXIgKnN0YXJ0OwogICBlbnVtIFhNTF9TdGF0dXMgcmVzdWx0ID0gWE1MX1NUQVRVU19PSzsKIAotICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKKyAgaWYgKHBhcnNlciA9PSBOVUxMKQorICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOworICBzd2l0Y2ggKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcpIHsKICAgY2FzZSBYTUxfU1VTUEVOREVEOgotICAgIGVycm9yQ29kZSA9IFhNTF9FUlJPUl9TVVNQRU5ERUQ7CisgICAgcGFyc2VyLT5tX2Vycm9yQ29kZSA9IFhNTF9FUlJPUl9TVVNQRU5ERUQ7CiAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgIGNhc2UgWE1MX0ZJTklTSEVEOgotICAgIGVycm9yQ29kZSA9IFhNTF9FUlJPUl9GSU5JU0hFRDsKKyAgICBwYXJzZXItPm1fZXJyb3JDb2RlID0gWE1MX0VSUk9SX0ZJTklTSEVEOwogICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogICBjYXNlIFhNTF9JTklUSUFMSVpFRDoKLSAgICBpZiAocGFyZW50UGFyc2VyID09IE5VTEwgJiYgIXN0YXJ0UGFyc2luZyhwYXJzZXIpKSB7Ci0gICAgICBlcnJvckNvZGUgPSBYTUxfRVJST1JfTk9fTUVNT1JZOworICAgIGlmIChwYXJzZXItPm1fcGFyZW50UGFyc2VyID09IE5VTEwgJiYgIXN0YXJ0UGFyc2luZyhwYXJzZXIpKSB7CisgICAgICBwYXJzZXItPm1fZXJyb3JDb2RlID0gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogICAgIH0KKyAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgZGVmYXVsdDoKLSAgICBwc19wYXJzaW5nID0gWE1MX1BBUlNJTkc7CisgICAgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9IFhNTF9QQVJTSU5HOwogICB9CiAKLSAgc3RhcnQgPSBidWZmZXJQdHI7Ci0gIHBvc2l0aW9uUHRyID0gc3RhcnQ7Ci0gIGJ1ZmZlckVuZCArPSBsZW47Ci0gIHBhcnNlRW5kUHRyID0gYnVmZmVyRW5kOwotICBwYXJzZUVuZEJ5dGVJbmRleCArPSBsZW47Ci0gIHBzX2ZpbmFsQnVmZmVyID0gKFhNTF9Cb29sKWlzRmluYWw7CisgIHN0YXJ0ID0gcGFyc2VyLT5tX2J1ZmZlclB0cjsKKyAgcGFyc2VyLT5tX3Bvc2l0aW9uUHRyID0gc3RhcnQ7CisgIHBhcnNlci0+bV9idWZmZXJFbmQgKz0gbGVuOworICBwYXJzZXItPm1fcGFyc2VFbmRQdHIgPSBwYXJzZXItPm1fYnVmZmVyRW5kOworICBwYXJzZXItPm1fcGFyc2VFbmRCeXRlSW5kZXggKz0gbGVuOworICBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlciA9IChYTUxfQm9vbClpc0ZpbmFsOwogCi0gIGVycm9yQ29kZSA9IHByb2Nlc3NvcihwYXJzZXIsIHN0YXJ0LCBwYXJzZUVuZFB0ciwgJmJ1ZmZlclB0cik7CisgIHBhcnNlci0+bV9lcnJvckNvZGUgPSBwYXJzZXItPm1fcHJvY2Vzc29yKHBhcnNlciwgc3RhcnQsIHBhcnNlci0+bV9wYXJzZUVuZFB0ciwgJnBhcnNlci0+bV9idWZmZXJQdHIpOwogCi0gIGlmIChlcnJvckNvZGUgIT0gWE1MX0VSUk9SX05PTkUpIHsKLSAgICBldmVudEVuZFB0ciA9IGV2ZW50UHRyOwotICAgIHByb2Nlc3NvciA9IGVycm9yUHJvY2Vzc29yOworICBpZiAocGFyc2VyLT5tX2Vycm9yQ29kZSAhPSBYTUxfRVJST1JfTk9ORSkgeworICAgIHBhcnNlci0+bV9ldmVudEVuZFB0ciA9IHBhcnNlci0+bV9ldmVudFB0cjsKKyAgICBwYXJzZXItPm1fcHJvY2Vzc29yID0gZXJyb3JQcm9jZXNzb3I7CiAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgIH0KICAgZWxzZSB7Ci0gICAgc3dpdGNoIChwc19wYXJzaW5nKSB7CisgICAgc3dpdGNoIChwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nKSB7CiAgICAgY2FzZSBYTUxfU1VTUEVOREVEOgogICAgICAgcmVzdWx0ID0gWE1MX1NUQVRVU19TVVNQRU5ERUQ7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9JTklUSUFMSVpFRDoKICAgICBjYXNlIFhNTF9QQVJTSU5HOgogICAgICAgaWYgKGlzRmluYWwpIHsKLSAgICAgICAgcHNfcGFyc2luZyA9IFhNTF9GSU5JU0hFRDsKKyAgICAgICAgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9IFhNTF9GSU5JU0hFRDsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgIH0KICAgICBkZWZhdWx0OiA7ICAvKiBzaG91bGQgbm90IGhhcHBlbiAqLwogICAgIH0KICAgfQogCi0gIFhtbFVwZGF0ZVBvc2l0aW9uKGVuY29kaW5nLCBwb3NpdGlvblB0ciwgYnVmZmVyUHRyLCAmcG9zaXRpb24pOwotICBwb3NpdGlvblB0ciA9IGJ1ZmZlclB0cjsKKyAgWG1sVXBkYXRlUG9zaXRpb24ocGFyc2VyLT5tX2VuY29kaW5nLCBwYXJzZXItPm1fcG9zaXRpb25QdHIsIHBhcnNlci0+bV9idWZmZXJQdHIsICZwYXJzZXItPm1fcG9zaXRpb24pOworICBwYXJzZXItPm1fcG9zaXRpb25QdHIgPSBwYXJzZXItPm1fYnVmZmVyUHRyOwogICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkICogWE1MQ0FMTAogWE1MX0dldEJ1ZmZlcihYTUxfUGFyc2VyIHBhcnNlciwgaW50IGxlbikKIHsKKyAgaWYgKHBhcnNlciA9PSBOVUxMKQorICAgIHJldHVybiBOVUxMOwogICBpZiAobGVuIDwgMCkgewotICAgIGVycm9yQ29kZSA9IFhNTF9FUlJPUl9OT19NRU1PUlk7CisgICAgcGFyc2VyLT5tX2Vycm9yQ29kZSA9IFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KLSAgc3dpdGNoIChwc19wYXJzaW5nKSB7CisgIHN3aXRjaCAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZykgewogICBjYXNlIFhNTF9TVVNQRU5ERUQ6Ci0gICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX1NVU1BFTkRFRDsKKyAgICBwYXJzZXItPm1fZXJyb3JDb2RlID0gWE1MX0VSUk9SX1NVU1BFTkRFRDsKICAgICByZXR1cm4gTlVMTDsKICAgY2FzZSBYTUxfRklOSVNIRUQ6Ci0gICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX0ZJTklTSEVEOworICAgIHBhcnNlci0+bV9lcnJvckNvZGUgPSBYTUxfRVJST1JfRklOSVNIRUQ7CiAgICAgcmV0dXJuIE5VTEw7CiAgIGRlZmF1bHQ6IDsKICAgfQogCi0gIGlmIChsZW4gPiBidWZmZXJMaW0gLSBidWZmZXJFbmQpIHsKKyAgaWYgKGxlbiA+IEVYUEFUX1NBRkVfUFRSX0RJRkYocGFyc2VyLT5tX2J1ZmZlckxpbSwgcGFyc2VyLT5tX2J1ZmZlckVuZCkpIHsKICNpZmRlZiBYTUxfQ09OVEVYVF9CWVRFUwogICAgIGludCBrZWVwOwotI2VuZGlmCi0gICAgaW50IG5lZWRlZFNpemUgPSBsZW4gKyAoaW50KShidWZmZXJFbmQgLSBidWZmZXJQdHIpOworI2VuZGlmICAvKiBkZWZpbmVkIFhNTF9DT05URVhUX0JZVEVTICovCisgICAgLyogRG8gbm90IGludm9rZSBzaWduZWQgYXJpdGhtZXRpYyBvdmVyZmxvdzogKi8KKyAgICBpbnQgbmVlZGVkU2l6ZSA9IChpbnQpICgodW5zaWduZWQpbGVuICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQpRVhQQVRfU0FGRV9QVFJfRElGRihwYXJzZXItPm1fYnVmZmVyRW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9idWZmZXJQdHIpKTsKICAgICBpZiAobmVlZGVkU2l6ZSA8IDApIHsKLSAgICAgIGVycm9yQ29kZSA9IFhNTF9FUlJPUl9OT19NRU1PUlk7CisgICAgICBwYXJzZXItPm1fZXJyb3JDb2RlID0gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICNpZmRlZiBYTUxfQ09OVEVYVF9CWVRFUwotICAgIGtlZXAgPSAoaW50KShidWZmZXJQdHIgLSBidWZmZXIpOwotCisgICAga2VlcCA9IChpbnQpRVhQQVRfU0FGRV9QVFJfRElGRihwYXJzZXItPm1fYnVmZmVyUHRyLCBwYXJzZXItPm1fYnVmZmVyKTsKICAgICBpZiAoa2VlcCA+IFhNTF9DT05URVhUX0JZVEVTKQogICAgICAga2VlcCA9IFhNTF9DT05URVhUX0JZVEVTOwogICAgIG5lZWRlZFNpemUgKz0ga2VlcDsKICNlbmRpZiAgLyogZGVmaW5lZCBYTUxfQ09OVEVYVF9CWVRFUyAqLwotICAgIGlmIChuZWVkZWRTaXplICA8PSBidWZmZXJMaW0gLSBidWZmZXIpIHsKKyAgICBpZiAobmVlZGVkU2l6ZSA8PSBFWFBBVF9TQUZFX1BUUl9ESUZGKHBhcnNlci0+bV9idWZmZXJMaW0sIHBhcnNlci0+bV9idWZmZXIpKSB7CiAjaWZkZWYgWE1MX0NPTlRFWFRfQllURVMKLSAgICAgIGlmIChrZWVwIDwgYnVmZmVyUHRyIC0gYnVmZmVyKSB7Ci0gICAgICAgIGludCBvZmZzZXQgPSAoaW50KShidWZmZXJQdHIgLSBidWZmZXIpIC0ga2VlcDsKLSAgICAgICAgbWVtbW92ZShidWZmZXIsICZidWZmZXJbb2Zmc2V0XSwgYnVmZmVyRW5kIC0gYnVmZmVyUHRyICsga2VlcCk7Ci0gICAgICAgIGJ1ZmZlckVuZCAtPSBvZmZzZXQ7Ci0gICAgICAgIGJ1ZmZlclB0ciAtPSBvZmZzZXQ7CisgICAgICBpZiAoa2VlcCA8IEVYUEFUX1NBRkVfUFRSX0RJRkYocGFyc2VyLT5tX2J1ZmZlclB0ciwgcGFyc2VyLT5tX2J1ZmZlcikpIHsKKyAgICAgICAgICBpbnQgb2Zmc2V0ID0gKGludClFWFBBVF9TQUZFX1BUUl9ESUZGKHBhcnNlci0+bV9idWZmZXJQdHIsIHBhcnNlci0+bV9idWZmZXIpIC0ga2VlcDsKKyAgICAgICAgLyogVGhlIGJ1ZmZlciBwb2ludGVycyBjYW5ub3QgYmUgTlVMTCBoZXJlOyB3ZSBoYXZlIGF0IGxlYXN0IHNvbWUgYnl0ZXMgaW4gdGhlIGJ1ZmZlciAqLworICAgICAgICBtZW1tb3ZlKHBhcnNlci0+bV9idWZmZXIsICZwYXJzZXItPm1fYnVmZmVyW29mZnNldF0sIHBhcnNlci0+bV9idWZmZXJFbmQgLSBwYXJzZXItPm1fYnVmZmVyUHRyICsga2VlcCk7CisgICAgICAgIHBhcnNlci0+bV9idWZmZXJFbmQgLT0gb2Zmc2V0OworICAgICAgICBwYXJzZXItPm1fYnVmZmVyUHRyIC09IG9mZnNldDsKICAgICAgIH0KICNlbHNlCi0gICAgICBtZW1tb3ZlKGJ1ZmZlciwgYnVmZmVyUHRyLCBidWZmZXJFbmQgLSBidWZmZXJQdHIpOwotICAgICAgYnVmZmVyRW5kID0gYnVmZmVyICsgKGJ1ZmZlckVuZCAtIGJ1ZmZlclB0cik7Ci0gICAgICBidWZmZXJQdHIgPSBidWZmZXI7CisgICAgICBpZiAocGFyc2VyLT5tX2J1ZmZlciAmJiBwYXJzZXItPm1fYnVmZmVyUHRyKSB7CisgICAgICAgIG1lbW1vdmUocGFyc2VyLT5tX2J1ZmZlciwgcGFyc2VyLT5tX2J1ZmZlclB0ciwKKyAgICAgICAgICAgICAgICBFWFBBVF9TQUZFX1BUUl9ESUZGKHBhcnNlci0+bV9idWZmZXJFbmQsIHBhcnNlci0+bV9idWZmZXJQdHIpKTsKKyAgICAgICAgcGFyc2VyLT5tX2J1ZmZlckVuZCA9IHBhcnNlci0+bV9idWZmZXIgKworICAgICAgICAgICAgRVhQQVRfU0FGRV9QVFJfRElGRihwYXJzZXItPm1fYnVmZmVyRW5kLCBwYXJzZXItPm1fYnVmZmVyUHRyKTsKKyAgICAgICAgcGFyc2VyLT5tX2J1ZmZlclB0ciA9IHBhcnNlci0+bV9idWZmZXI7CisgICAgICB9CiAjZW5kaWYgIC8qIG5vdCBkZWZpbmVkIFhNTF9DT05URVhUX0JZVEVTICovCiAgICAgfQogICAgIGVsc2UgewogICAgICAgY2hhciAqbmV3QnVmOwotICAgICAgaW50IGJ1ZmZlclNpemUgPSAoaW50KShidWZmZXJMaW0gLSBidWZmZXJQdHIpOworICAgICAgaW50IGJ1ZmZlclNpemUgPSAoaW50KUVYUEFUX1NBRkVfUFRSX0RJRkYocGFyc2VyLT5tX2J1ZmZlckxpbSwgcGFyc2VyLT5tX2J1ZmZlclB0cik7CiAgICAgICBpZiAoYnVmZmVyU2l6ZSA9PSAwKQogICAgICAgICBidWZmZXJTaXplID0gSU5JVF9CVUZGRVJfU0laRTsKICAgICAgIGRvIHsKLSAgICAgICAgYnVmZmVyU2l6ZSAqPSAyOworICAgICAgICAvKiBEbyBub3QgaW52b2tlIHNpZ25lZCBhcml0aG1ldGljIG92ZXJmbG93OiAqLworICAgICAgICBidWZmZXJTaXplID0gKGludCkgKDJVICogKHVuc2lnbmVkKSBidWZmZXJTaXplKTsKICAgICAgIH0gd2hpbGUgKGJ1ZmZlclNpemUgPCBuZWVkZWRTaXplICYmIGJ1ZmZlclNpemUgPiAwKTsKICAgICAgIGlmIChidWZmZXJTaXplIDw9IDApIHsKLSAgICAgICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX05PX01FTU9SWTsKKyAgICAgICAgcGFyc2VyLT5tX2Vycm9yQ29kZSA9IFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgfQotICAgICAgbmV3QnVmID0gKGNoYXIgKilNQUxMT0MoYnVmZmVyU2l6ZSk7CisgICAgICBuZXdCdWYgPSAoY2hhciAqKU1BTExPQyhwYXJzZXIsIGJ1ZmZlclNpemUpOwogICAgICAgaWYgKG5ld0J1ZiA9PSAwKSB7Ci0gICAgICAgIGVycm9yQ29kZSA9IFhNTF9FUlJPUl9OT19NRU1PUlk7CisgICAgICAgIHBhcnNlci0+bV9lcnJvckNvZGUgPSBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgIH0KLSAgICAgIGJ1ZmZlckxpbSA9IG5ld0J1ZiArIGJ1ZmZlclNpemU7CisgICAgICBwYXJzZXItPm1fYnVmZmVyTGltID0gbmV3QnVmICsgYnVmZmVyU2l6ZTsKICNpZmRlZiBYTUxfQ09OVEVYVF9CWVRFUwotICAgICAgaWYgKGJ1ZmZlclB0cikgewotICAgICAgICBpbnQga2VlcCA9IChpbnQpKGJ1ZmZlclB0ciAtIGJ1ZmZlcik7CisgICAgICBpZiAocGFyc2VyLT5tX2J1ZmZlclB0cikgeworICAgICAgICBpbnQga2VlcCA9IChpbnQpRVhQQVRfU0FGRV9QVFJfRElGRihwYXJzZXItPm1fYnVmZmVyUHRyLCBwYXJzZXItPm1fYnVmZmVyKTsKICAgICAgICAgaWYgKGtlZXAgPiBYTUxfQ09OVEVYVF9CWVRFUykKICAgICAgICAgICBrZWVwID0gWE1MX0NPTlRFWFRfQllURVM7Ci0gICAgICAgIG1lbWNweShuZXdCdWYsICZidWZmZXJQdHJbLWtlZXBdLCBidWZmZXJFbmQgLSBidWZmZXJQdHIgKyBrZWVwKTsKLSAgICAgICAgRlJFRShidWZmZXIpOwotICAgICAgICBidWZmZXIgPSBuZXdCdWY7Ci0gICAgICAgIGJ1ZmZlckVuZCA9IGJ1ZmZlciArIChidWZmZXJFbmQgLSBidWZmZXJQdHIpICsga2VlcDsKLSAgICAgICAgYnVmZmVyUHRyID0gYnVmZmVyICsga2VlcDsKKyAgICAgICAgbWVtY3B5KG5ld0J1ZiwgJnBhcnNlci0+bV9idWZmZXJQdHJbLWtlZXBdLAorICAgICAgICAgICAgICAgRVhQQVRfU0FGRV9QVFJfRElGRihwYXJzZXItPm1fYnVmZmVyRW5kLCBwYXJzZXItPm1fYnVmZmVyUHRyKSArIGtlZXApOworICAgICAgICBGUkVFKHBhcnNlciwgcGFyc2VyLT5tX2J1ZmZlcik7CisgICAgICAgIHBhcnNlci0+bV9idWZmZXIgPSBuZXdCdWY7CisgICAgICAgIHBhcnNlci0+bV9idWZmZXJFbmQgPSBwYXJzZXItPm1fYnVmZmVyICsKKyAgICAgICAgICAgIEVYUEFUX1NBRkVfUFRSX0RJRkYocGFyc2VyLT5tX2J1ZmZlckVuZCwgcGFyc2VyLT5tX2J1ZmZlclB0cikgKyBrZWVwOworICAgICAgICBwYXJzZXItPm1fYnVmZmVyUHRyID0gcGFyc2VyLT5tX2J1ZmZlciArIGtlZXA7CiAgICAgICB9CiAgICAgICBlbHNlIHsKLSAgICAgICAgYnVmZmVyRW5kID0gbmV3QnVmICsgKGJ1ZmZlckVuZCAtIGJ1ZmZlclB0cik7Ci0gICAgICAgIGJ1ZmZlclB0ciA9IGJ1ZmZlciA9IG5ld0J1ZjsKKyAgICAgICAgLyogVGhpcyBtdXN0IGJlIGEgYnJhbmQgbmV3IGJ1ZmZlciB3aXRoIG5vIGRhdGEgaW4gaXQgeWV0ICovCisgICAgICAgIHBhcnNlci0+bV9idWZmZXJFbmQgPSBuZXdCdWY7CisgICAgICAgIHBhcnNlci0+bV9idWZmZXJQdHIgPSBwYXJzZXItPm1fYnVmZmVyID0gbmV3QnVmOwogICAgICAgfQogI2Vsc2UKLSAgICAgIGlmIChidWZmZXJQdHIpIHsKLSAgICAgICAgbWVtY3B5KG5ld0J1ZiwgYnVmZmVyUHRyLCBidWZmZXJFbmQgLSBidWZmZXJQdHIpOwotICAgICAgICBGUkVFKGJ1ZmZlcik7CisgICAgICBpZiAocGFyc2VyLT5tX2J1ZmZlclB0cikgeworICAgICAgICBtZW1jcHkobmV3QnVmLCBwYXJzZXItPm1fYnVmZmVyUHRyLAorICAgICAgICAgICAgICAgRVhQQVRfU0FGRV9QVFJfRElGRihwYXJzZXItPm1fYnVmZmVyRW5kLCBwYXJzZXItPm1fYnVmZmVyUHRyKSk7CisgICAgICAgIEZSRUUocGFyc2VyLCBwYXJzZXItPm1fYnVmZmVyKTsKKyAgICAgICAgcGFyc2VyLT5tX2J1ZmZlckVuZCA9IG5ld0J1ZiArCisgICAgICAgICAgICBFWFBBVF9TQUZFX1BUUl9ESUZGKHBhcnNlci0+bV9idWZmZXJFbmQsIHBhcnNlci0+bV9idWZmZXJQdHIpOwogICAgICAgfQotICAgICAgYnVmZmVyRW5kID0gbmV3QnVmICsgKGJ1ZmZlckVuZCAtIGJ1ZmZlclB0cik7Ci0gICAgICBidWZmZXJQdHIgPSBidWZmZXIgPSBuZXdCdWY7CisgICAgICBlbHNlIHsKKyAgICAgICAgLyogVGhpcyBtdXN0IGJlIGEgYnJhbmQgbmV3IGJ1ZmZlciB3aXRoIG5vIGRhdGEgaW4gaXQgeWV0ICovCisgICAgICAgIHBhcnNlci0+bV9idWZmZXJFbmQgPSBuZXdCdWY7CisgICAgICB9CisgICAgICBwYXJzZXItPm1fYnVmZmVyUHRyID0gcGFyc2VyLT5tX2J1ZmZlciA9IG5ld0J1ZjsKICNlbmRpZiAgLyogbm90IGRlZmluZWQgWE1MX0NPTlRFWFRfQllURVMgKi8KICAgICB9Ci0gICAgZXZlbnRQdHIgPSBldmVudEVuZFB0ciA9IE5VTEw7Ci0gICAgcG9zaXRpb25QdHIgPSBOVUxMOworICAgIHBhcnNlci0+bV9ldmVudFB0ciA9IHBhcnNlci0+bV9ldmVudEVuZFB0ciA9IE5VTEw7CisgICAgcGFyc2VyLT5tX3Bvc2l0aW9uUHRyID0gTlVMTDsKICAgfQotICByZXR1cm4gYnVmZmVyRW5kOworICByZXR1cm4gcGFyc2VyLT5tX2J1ZmZlckVuZDsKIH0KIAogZW51bSBYTUxfU3RhdHVzIFhNTENBTEwKIFhNTF9TdG9wUGFyc2VyKFhNTF9QYXJzZXIgcGFyc2VyLCBYTUxfQm9vbCByZXN1bWFibGUpCiB7Ci0gIHN3aXRjaCAocHNfcGFyc2luZykgeworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CisgIHN3aXRjaCAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZykgewogICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgaWYgKHJlc3VtYWJsZSkgewotICAgICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX1NVU1BFTkRFRDsKKyAgICAgIHBhcnNlci0+bV9lcnJvckNvZGUgPSBYTUxfRVJST1JfU1VTUEVOREVEOwogICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgICAgfQotICAgIHBzX3BhcnNpbmcgPSBYTUxfRklOSVNIRUQ7CisgICAgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9IFhNTF9GSU5JU0hFRDsKICAgICBicmVhazsKICAgY2FzZSBYTUxfRklOSVNIRUQ6Ci0gICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX0ZJTklTSEVEOworICAgIHBhcnNlci0+bV9lcnJvckNvZGUgPSBYTUxfRVJST1JfRklOSVNIRUQ7CiAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgIGRlZmF1bHQ6CiAgICAgaWYgKHJlc3VtYWJsZSkgewogI2lmZGVmIFhNTF9EVEQKLSAgICAgIGlmIChpc1BhcmFtRW50aXR5KSB7Ci0gICAgICAgIGVycm9yQ29kZSA9IFhNTF9FUlJPUl9TVVNQRU5EX1BFOworICAgICAgaWYgKHBhcnNlci0+bV9pc1BhcmFtRW50aXR5KSB7CisgICAgICAgIHBhcnNlci0+bV9lcnJvckNvZGUgPSBYTUxfRVJST1JfU1VTUEVORF9QRTsKICAgICAgICAgcmV0dXJuIFhNTF9TVEFUVVNfRVJST1I7CiAgICAgICB9CiAjZW5kaWYKLSAgICAgIHBzX3BhcnNpbmcgPSBYTUxfU1VTUEVOREVEOworICAgICAgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9IFhNTF9TVVNQRU5ERUQ7CiAgICAgfQogICAgIGVsc2UKLSAgICAgIHBzX3BhcnNpbmcgPSBYTUxfRklOSVNIRUQ7CisgICAgICBwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nID0gWE1MX0ZJTklTSEVEOwogICB9CiAgIHJldHVybiBYTUxfU1RBVFVTX09LOwogfQpAQCAtMTg0MCw0MiArMjE2Myw0NiBAQAogewogICBlbnVtIFhNTF9TdGF0dXMgcmVzdWx0ID0gWE1MX1NUQVRVU19PSzsKIAotICBpZiAocHNfcGFyc2luZyAhPSBYTUxfU1VTUEVOREVEKSB7Ci0gICAgZXJyb3JDb2RlID0gWE1MX0VSUk9SX05PVF9TVVNQRU5ERUQ7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKKyAgaWYgKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcgIT0gWE1MX1NVU1BFTkRFRCkgeworICAgIHBhcnNlci0+bV9lcnJvckNvZGUgPSBYTUxfRVJST1JfTk9UX1NVU1BFTkRFRDsKICAgICByZXR1cm4gWE1MX1NUQVRVU19FUlJPUjsKICAgfQotICBwc19wYXJzaW5nID0gWE1MX1BBUlNJTkc7CisgIHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcgPSBYTUxfUEFSU0lORzsKIAotICBlcnJvckNvZGUgPSBwcm9jZXNzb3IocGFyc2VyLCBidWZmZXJQdHIsIHBhcnNlRW5kUHRyLCAmYnVmZmVyUHRyKTsKKyAgcGFyc2VyLT5tX2Vycm9yQ29kZSA9IHBhcnNlci0+bV9wcm9jZXNzb3IocGFyc2VyLCBwYXJzZXItPm1fYnVmZmVyUHRyLCBwYXJzZXItPm1fcGFyc2VFbmRQdHIsICZwYXJzZXItPm1fYnVmZmVyUHRyKTsKIAotICBpZiAoZXJyb3JDb2RlICE9IFhNTF9FUlJPUl9OT05FKSB7Ci0gICAgZXZlbnRFbmRQdHIgPSBldmVudFB0cjsKLSAgICBwcm9jZXNzb3IgPSBlcnJvclByb2Nlc3NvcjsKKyAgaWYgKHBhcnNlci0+bV9lcnJvckNvZGUgIT0gWE1MX0VSUk9SX05PTkUpIHsKKyAgICBwYXJzZXItPm1fZXZlbnRFbmRQdHIgPSBwYXJzZXItPm1fZXZlbnRQdHI7CisgICAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IGVycm9yUHJvY2Vzc29yOwogICAgIHJldHVybiBYTUxfU1RBVFVTX0VSUk9SOwogICB9CiAgIGVsc2UgewotICAgIHN3aXRjaCAocHNfcGFyc2luZykgeworICAgIHN3aXRjaCAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZykgewogICAgIGNhc2UgWE1MX1NVU1BFTkRFRDoKICAgICAgIHJlc3VsdCA9IFhNTF9TVEFUVVNfU1VTUEVOREVEOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfSU5JVElBTElaRUQ6CiAgICAgY2FzZSBYTUxfUEFSU0lORzoKLSAgICAgIGlmIChwc19maW5hbEJ1ZmZlcikgewotICAgICAgICBwc19wYXJzaW5nID0gWE1MX0ZJTklTSEVEOworICAgICAgaWYgKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyKSB7CisgICAgICAgIHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcgPSBYTUxfRklOSVNIRUQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICB9CiAgICAgZGVmYXVsdDogOwogICAgIH0KICAgfQogCi0gIFhtbFVwZGF0ZVBvc2l0aW9uKGVuY29kaW5nLCBwb3NpdGlvblB0ciwgYnVmZmVyUHRyLCAmcG9zaXRpb24pOwotICBwb3NpdGlvblB0ciA9IGJ1ZmZlclB0cjsKKyAgWG1sVXBkYXRlUG9zaXRpb24ocGFyc2VyLT5tX2VuY29kaW5nLCBwYXJzZXItPm1fcG9zaXRpb25QdHIsIHBhcnNlci0+bV9idWZmZXJQdHIsICZwYXJzZXItPm1fcG9zaXRpb24pOworICBwYXJzZXItPm1fcG9zaXRpb25QdHIgPSBwYXJzZXItPm1fYnVmZmVyUHRyOwogICByZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9HZXRQYXJzaW5nU3RhdHVzKFhNTF9QYXJzZXIgcGFyc2VyLCBYTUxfUGFyc2luZ1N0YXR1cyAqc3RhdHVzKQogeworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuOwogICBhc3NlcnQoc3RhdHVzICE9IE5VTEwpOwogICAqc3RhdHVzID0gcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXM7CiB9CkBAIC0xODgzLDIyICsyMjEwLDI4IEBACiBlbnVtIFhNTF9FcnJvciBYTUxDQUxMCiBYTUxfR2V0RXJyb3JDb2RlKFhNTF9QYXJzZXIgcGFyc2VyKQogewotICByZXR1cm4gZXJyb3JDb2RlOworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuIFhNTF9FUlJPUl9JTlZBTElEX0FSR1VNRU5UOworICByZXR1cm4gcGFyc2VyLT5tX2Vycm9yQ29kZTsKIH0KIAogWE1MX0luZGV4IFhNTENBTEwKIFhNTF9HZXRDdXJyZW50Qnl0ZUluZGV4KFhNTF9QYXJzZXIgcGFyc2VyKQogewotICBpZiAoZXZlbnRQdHIpCi0gICAgcmV0dXJuIHBhcnNlRW5kQnl0ZUluZGV4IC0gKHBhcnNlRW5kUHRyIC0gZXZlbnRQdHIpOworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuIC0xOworICBpZiAocGFyc2VyLT5tX2V2ZW50UHRyKQorICAgIHJldHVybiAoWE1MX0luZGV4KShwYXJzZXItPm1fcGFyc2VFbmRCeXRlSW5kZXggLSAocGFyc2VyLT5tX3BhcnNlRW5kUHRyIC0gcGFyc2VyLT5tX2V2ZW50UHRyKSk7CiAgIHJldHVybiAtMTsKIH0KIAogaW50IFhNTENBTEwKIFhNTF9HZXRDdXJyZW50Qnl0ZUNvdW50KFhNTF9QYXJzZXIgcGFyc2VyKQogewotICBpZiAoZXZlbnRFbmRQdHIgJiYgZXZlbnRQdHIpCi0gICAgcmV0dXJuIChpbnQpKGV2ZW50RW5kUHRyIC0gZXZlbnRQdHIpOworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisgIGlmIChwYXJzZXItPm1fZXZlbnRFbmRQdHIgJiYgcGFyc2VyLT5tX2V2ZW50UHRyKQorICAgIHJldHVybiAoaW50KShwYXJzZXItPm1fZXZlbnRFbmRQdHIgLSBwYXJzZXItPm1fZXZlbnRQdHIpOwogICByZXR1cm4gMDsKIH0KIApAQCAtMTkwNiwxMSArMjIzOSwxOSBAQAogWE1MX0dldElucHV0Q29udGV4dChYTUxfUGFyc2VyIHBhcnNlciwgaW50ICpvZmZzZXQsIGludCAqc2l6ZSkKIHsKICNpZmRlZiBYTUxfQ09OVEVYVF9CWVRFUwotICBpZiAoZXZlbnRQdHIgJiYgYnVmZmVyKSB7Ci0gICAgKm9mZnNldCA9IChpbnQpKGV2ZW50UHRyIC0gYnVmZmVyKTsKLSAgICAqc2l6ZSAgID0gKGludCkoYnVmZmVyRW5kIC0gYnVmZmVyKTsKLSAgICByZXR1cm4gYnVmZmVyOworICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuIE5VTEw7CisgIGlmIChwYXJzZXItPm1fZXZlbnRQdHIgJiYgcGFyc2VyLT5tX2J1ZmZlcikgeworICAgIGlmIChvZmZzZXQgIT0gTlVMTCkKKyAgICAgICpvZmZzZXQgPSAoaW50KShwYXJzZXItPm1fZXZlbnRQdHIgLSBwYXJzZXItPm1fYnVmZmVyKTsKKyAgICBpZiAoc2l6ZSAhPSBOVUxMKQorICAgICAgKnNpemUgICA9IChpbnQpKHBhcnNlci0+bV9idWZmZXJFbmQgLSBwYXJzZXItPm1fYnVmZmVyKTsKKyAgICByZXR1cm4gcGFyc2VyLT5tX2J1ZmZlcjsKICAgfQorI2Vsc2UKKyAgKHZvaWQpcGFyc2VyOworICAodm9pZClvZmZzZXQ7CisgICh2b2lkKXNpemU7CiAjZW5kaWYgLyogZGVmaW5lZCBYTUxfQ09OVEVYVF9CWVRFUyAqLwogICByZXR1cm4gKGNoYXIgKikgMDsKIH0KQEAgLTE5MTgsMTA5ICsyMjU5LDE2NiBAQAogWE1MX1NpemUgWE1MQ0FMTAogWE1MX0dldEN1cnJlbnRMaW5lTnVtYmVyKFhNTF9QYXJzZXIgcGFyc2VyKQogewotICBpZiAoZXZlbnRQdHIgJiYgZXZlbnRQdHIgPj0gcG9zaXRpb25QdHIpIHsKLSAgICBYbWxVcGRhdGVQb3NpdGlvbihlbmNvZGluZywgcG9zaXRpb25QdHIsIGV2ZW50UHRyLCAmcG9zaXRpb24pOwotICAgIHBvc2l0aW9uUHRyID0gZXZlbnRQdHI7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gMDsKKyAgaWYgKHBhcnNlci0+bV9ldmVudFB0ciAmJiBwYXJzZXItPm1fZXZlbnRQdHIgPj0gcGFyc2VyLT5tX3Bvc2l0aW9uUHRyKSB7CisgICAgWG1sVXBkYXRlUG9zaXRpb24ocGFyc2VyLT5tX2VuY29kaW5nLCBwYXJzZXItPm1fcG9zaXRpb25QdHIsIHBhcnNlci0+bV9ldmVudFB0ciwgJnBhcnNlci0+bV9wb3NpdGlvbik7CisgICAgcGFyc2VyLT5tX3Bvc2l0aW9uUHRyID0gcGFyc2VyLT5tX2V2ZW50UHRyOwogICB9Ci0gIHJldHVybiBwb3NpdGlvbi5saW5lTnVtYmVyICsgMTsKKyAgcmV0dXJuIHBhcnNlci0+bV9wb3NpdGlvbi5saW5lTnVtYmVyICsgMTsKIH0KIAogWE1MX1NpemUgWE1MQ0FMTAogWE1MX0dldEN1cnJlbnRDb2x1bW5OdW1iZXIoWE1MX1BhcnNlciBwYXJzZXIpCiB7Ci0gIGlmIChldmVudFB0ciAmJiBldmVudFB0ciA+PSBwb3NpdGlvblB0cikgewotICAgIFhtbFVwZGF0ZVBvc2l0aW9uKGVuY29kaW5nLCBwb3NpdGlvblB0ciwgZXZlbnRQdHIsICZwb3NpdGlvbik7Ci0gICAgcG9zaXRpb25QdHIgPSBldmVudFB0cjsKKyAgaWYgKHBhcnNlciA9PSBOVUxMKQorICAgIHJldHVybiAwOworICBpZiAocGFyc2VyLT5tX2V2ZW50UHRyICYmIHBhcnNlci0+bV9ldmVudFB0ciA+PSBwYXJzZXItPm1fcG9zaXRpb25QdHIpIHsKKyAgICBYbWxVcGRhdGVQb3NpdGlvbihwYXJzZXItPm1fZW5jb2RpbmcsIHBhcnNlci0+bV9wb3NpdGlvblB0ciwgcGFyc2VyLT5tX2V2ZW50UHRyLCAmcGFyc2VyLT5tX3Bvc2l0aW9uKTsKKyAgICBwYXJzZXItPm1fcG9zaXRpb25QdHIgPSBwYXJzZXItPm1fZXZlbnRQdHI7CiAgIH0KLSAgcmV0dXJuIHBvc2l0aW9uLmNvbHVtbk51bWJlcjsKKyAgcmV0dXJuIHBhcnNlci0+bV9wb3NpdGlvbi5jb2x1bW5OdW1iZXI7CiB9CiAKIHZvaWQgWE1MQ0FMTAogWE1MX0ZyZWVDb250ZW50TW9kZWwoWE1MX1BhcnNlciBwYXJzZXIsIFhNTF9Db250ZW50ICptb2RlbCkKIHsKLSAgRlJFRShtb2RlbCk7CisgIGlmIChwYXJzZXIgIT0gTlVMTCkKKyAgICBGUkVFKHBhcnNlciwgbW9kZWwpOwogfQogCiB2b2lkICogWE1MQ0FMTAogWE1MX01lbU1hbGxvYyhYTUxfUGFyc2VyIHBhcnNlciwgc2l6ZV90IHNpemUpCiB7Ci0gIHJldHVybiBNQUxMT0Moc2l6ZSk7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsKKyAgcmV0dXJuIE1BTExPQyhwYXJzZXIsIHNpemUpOwogfQogCiB2b2lkICogWE1MQ0FMTAogWE1MX01lbVJlYWxsb2MoWE1MX1BhcnNlciBwYXJzZXIsIHZvaWQgKnB0ciwgc2l6ZV90IHNpemUpCiB7Ci0gIHJldHVybiBSRUFMTE9DKHB0ciwgc2l6ZSk7CisgIGlmIChwYXJzZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsKKyAgcmV0dXJuIFJFQUxMT0MocGFyc2VyLCBwdHIsIHNpemUpOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9NZW1GcmVlKFhNTF9QYXJzZXIgcGFyc2VyLCB2b2lkICpwdHIpCiB7Ci0gIEZSRUUocHRyKTsKKyAgaWYgKHBhcnNlciAhPSBOVUxMKQorICAgIEZSRUUocGFyc2VyLCBwdHIpOwogfQogCiB2b2lkIFhNTENBTEwKIFhNTF9EZWZhdWx0Q3VycmVudChYTUxfUGFyc2VyIHBhcnNlcikKIHsKLSAgaWYgKGRlZmF1bHRIYW5kbGVyKSB7Ci0gICAgaWYgKG9wZW5JbnRlcm5hbEVudGl0aWVzKQorICBpZiAocGFyc2VyID09IE5VTEwpCisgICAgcmV0dXJuOworICBpZiAocGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKSB7CisgICAgaWYgKHBhcnNlci0+bV9vcGVuSW50ZXJuYWxFbnRpdGllcykKICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLAotICAgICAgICAgICAgICAgICAgICBpbnRlcm5hbEVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICBvcGVuSW50ZXJuYWxFbnRpdGllcy0+aW50ZXJuYWxFdmVudFB0ciwKLSAgICAgICAgICAgICAgICAgICAgb3BlbkludGVybmFsRW50aXRpZXMtPmludGVybmFsRXZlbnRFbmRQdHIpOworICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1faW50ZXJuYWxFbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX29wZW5JbnRlcm5hbEVudGl0aWVzLT5pbnRlcm5hbEV2ZW50UHRyLAorICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMtPmludGVybmFsRXZlbnRFbmRQdHIpOwogICAgIGVsc2UKLSAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmNvZGluZywgZXZlbnRQdHIsIGV2ZW50RW5kUHRyKTsKKyAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBwYXJzZXItPm1fZW5jb2RpbmcsIHBhcnNlci0+bV9ldmVudFB0ciwgcGFyc2VyLT5tX2V2ZW50RW5kUHRyKTsKICAgfQogfQogCiBjb25zdCBYTUxfTENoYXIgKiBYTUxDQUxMCiBYTUxfRXJyb3JTdHJpbmcoZW51bSBYTUxfRXJyb3IgY29kZSkKIHsKLSAgc3RhdGljIGNvbnN0IFhNTF9MQ2hhciogY29uc3QgbWVzc2FnZVtdID0gewotICAgIDAsCi0gICAgWE1MX0woIm91dCBvZiBtZW1vcnkiKSwKLSAgICBYTUxfTCgic3ludGF4IGVycm9yIiksCi0gICAgWE1MX0woIm5vIGVsZW1lbnQgZm91bmQiKSwKLSAgICBYTUxfTCgibm90IHdlbGwtZm9ybWVkIChpbnZhbGlkIHRva2VuKSIpLAotICAgIFhNTF9MKCJ1bmNsb3NlZCB0b2tlbiIpLAotICAgIFhNTF9MKCJwYXJ0aWFsIGNoYXJhY3RlciIpLAotICAgIFhNTF9MKCJtaXNtYXRjaGVkIHRhZyIpLAotICAgIFhNTF9MKCJkdXBsaWNhdGUgYXR0cmlidXRlIiksCi0gICAgWE1MX0woImp1bmsgYWZ0ZXIgZG9jdW1lbnQgZWxlbWVudCIpLAotICAgIFhNTF9MKCJpbGxlZ2FsIHBhcmFtZXRlciBlbnRpdHkgcmVmZXJlbmNlIiksCi0gICAgWE1MX0woInVuZGVmaW5lZCBlbnRpdHkiKSwKLSAgICBYTUxfTCgicmVjdXJzaXZlIGVudGl0eSByZWZlcmVuY2UiKSwKLSAgICBYTUxfTCgiYXN5bmNocm9ub3VzIGVudGl0eSIpLAotICAgIFhNTF9MKCJyZWZlcmVuY2UgdG8gaW52YWxpZCBjaGFyYWN0ZXIgbnVtYmVyIiksCi0gICAgWE1MX0woInJlZmVyZW5jZSB0byBiaW5hcnkgZW50aXR5IiksCi0gICAgWE1MX0woInJlZmVyZW5jZSB0byBleHRlcm5hbCBlbnRpdHkgaW4gYXR0cmlidXRlIiksCi0gICAgWE1MX0woIlhNTCBvciB0ZXh0IGRlY2xhcmF0aW9uIG5vdCBhdCBzdGFydCBvZiBlbnRpdHkiKSwKLSAgICBYTUxfTCgidW5rbm93biBlbmNvZGluZyIpLAotICAgIFhNTF9MKCJlbmNvZGluZyBzcGVjaWZpZWQgaW4gWE1MIGRlY2xhcmF0aW9uIGlzIGluY29ycmVjdCIpLAotICAgIFhNTF9MKCJ1bmNsb3NlZCBDREFUQSBzZWN0aW9uIiksCi0gICAgWE1MX0woImVycm9yIGluIHByb2Nlc3NpbmcgZXh0ZXJuYWwgZW50aXR5IHJlZmVyZW5jZSIpLAotICAgIFhNTF9MKCJkb2N1bWVudCBpcyBub3Qgc3RhbmRhbG9uZSIpLAotICAgIFhNTF9MKCJ1bmV4cGVjdGVkIHBhcnNlciBzdGF0ZSAtIHBsZWFzZSBzZW5kIGEgYnVnIHJlcG9ydCIpLAotICAgIFhNTF9MKCJlbnRpdHkgZGVjbGFyZWQgaW4gcGFyYW1ldGVyIGVudGl0eSIpLAotICAgIFhNTF9MKCJyZXF1ZXN0ZWQgZmVhdHVyZSByZXF1aXJlcyBYTUxfRFREIHN1cHBvcnQgaW4gRXhwYXQiKSwKLSAgICBYTUxfTCgiY2Fubm90IGNoYW5nZSBzZXR0aW5nIG9uY2UgcGFyc2luZyBoYXMgYmVndW4iKSwKLSAgICBYTUxfTCgidW5ib3VuZCBwcmVmaXgiKSwKLSAgICBYTUxfTCgibXVzdCBub3QgdW5kZWNsYXJlIHByZWZpeCIpLAotICAgIFhNTF9MKCJpbmNvbXBsZXRlIG1hcmt1cCBpbiBwYXJhbWV0ZXIgZW50aXR5IiksCi0gICAgWE1MX0woIlhNTCBkZWNsYXJhdGlvbiBub3Qgd2VsbC1mb3JtZWQiKSwKLSAgICBYTUxfTCgidGV4dCBkZWNsYXJhdGlvbiBub3Qgd2VsbC1mb3JtZWQiKSwKLSAgICBYTUxfTCgiaWxsZWdhbCBjaGFyYWN0ZXIocykgaW4gcHVibGljIGlkIiksCi0gICAgWE1MX0woInBhcnNlciBzdXNwZW5kZWQiKSwKLSAgICBYTUxfTCgicGFyc2VyIG5vdCBzdXNwZW5kZWQiKSwKLSAgICBYTUxfTCgicGFyc2luZyBhYm9ydGVkIiksCi0gICAgWE1MX0woInBhcnNpbmcgZmluaXNoZWQiKSwKLSAgICBYTUxfTCgiY2Fubm90IHN1c3BlbmQgaW4gZXh0ZXJuYWwgcGFyYW1ldGVyIGVudGl0eSIpLAotICAgIFhNTF9MKCJyZXNlcnZlZCBwcmVmaXggKHhtbCkgbXVzdCBub3QgYmUgdW5kZWNsYXJlZCBvciBib3VuZCB0byBhbm90aGVyIG5hbWVzcGFjZSBuYW1lIiksCi0gICAgWE1MX0woInJlc2VydmVkIHByZWZpeCAoeG1sbnMpIG11c3Qgbm90IGJlIGRlY2xhcmVkIG9yIHVuZGVjbGFyZWQiKSwKLSAgICBYTUxfTCgicHJlZml4IG11c3Qgbm90IGJlIGJvdW5kIHRvIG9uZSBvZiB0aGUgcmVzZXJ2ZWQgbmFtZXNwYWNlIG5hbWVzIikKLSAgfTsKLSAgaWYgKGNvZGUgPiAwICYmIGNvZGUgPCBzaXplb2YobWVzc2FnZSkvc2l6ZW9mKG1lc3NhZ2VbMF0pKQotICAgIHJldHVybiBtZXNzYWdlW2NvZGVdOworICBzd2l0Y2ggKGNvZGUpIHsKKyAgY2FzZSBYTUxfRVJST1JfTk9ORToKKyAgICByZXR1cm4gTlVMTDsKKyAgY2FzZSBYTUxfRVJST1JfTk9fTUVNT1JZOgorICAgIHJldHVybiBYTUxfTCgib3V0IG9mIG1lbW9yeSIpOworICBjYXNlIFhNTF9FUlJPUl9TWU5UQVg6CisgICAgcmV0dXJuIFhNTF9MKCJzeW50YXggZXJyb3IiKTsKKyAgY2FzZSBYTUxfRVJST1JfTk9fRUxFTUVOVFM6CisgICAgcmV0dXJuIFhNTF9MKCJubyBlbGVtZW50IGZvdW5kIik7CisgIGNhc2UgWE1MX0VSUk9SX0lOVkFMSURfVE9LRU46CisgICAgcmV0dXJuIFhNTF9MKCJub3Qgd2VsbC1mb3JtZWQgKGludmFsaWQgdG9rZW4pIik7CisgIGNhc2UgWE1MX0VSUk9SX1VOQ0xPU0VEX1RPS0VOOgorICAgIHJldHVybiBYTUxfTCgidW5jbG9zZWQgdG9rZW4iKTsKKyAgY2FzZSBYTUxfRVJST1JfUEFSVElBTF9DSEFSOgorICAgIHJldHVybiBYTUxfTCgicGFydGlhbCBjaGFyYWN0ZXIiKTsKKyAgY2FzZSBYTUxfRVJST1JfVEFHX01JU01BVENIOgorICAgIHJldHVybiBYTUxfTCgibWlzbWF0Y2hlZCB0YWciKTsKKyAgY2FzZSBYTUxfRVJST1JfRFVQTElDQVRFX0FUVFJJQlVURToKKyAgICByZXR1cm4gWE1MX0woImR1cGxpY2F0ZSBhdHRyaWJ1dGUiKTsKKyAgY2FzZSBYTUxfRVJST1JfSlVOS19BRlRFUl9ET0NfRUxFTUVOVDoKKyAgICByZXR1cm4gWE1MX0woImp1bmsgYWZ0ZXIgZG9jdW1lbnQgZWxlbWVudCIpOworICBjYXNlIFhNTF9FUlJPUl9QQVJBTV9FTlRJVFlfUkVGOgorICAgIHJldHVybiBYTUxfTCgiaWxsZWdhbCBwYXJhbWV0ZXIgZW50aXR5IHJlZmVyZW5jZSIpOworICBjYXNlIFhNTF9FUlJPUl9VTkRFRklORURfRU5USVRZOgorICAgIHJldHVybiBYTUxfTCgidW5kZWZpbmVkIGVudGl0eSIpOworICBjYXNlIFhNTF9FUlJPUl9SRUNVUlNJVkVfRU5USVRZX1JFRjoKKyAgICByZXR1cm4gWE1MX0woInJlY3Vyc2l2ZSBlbnRpdHkgcmVmZXJlbmNlIik7CisgIGNhc2UgWE1MX0VSUk9SX0FTWU5DX0VOVElUWToKKyAgICByZXR1cm4gWE1MX0woImFzeW5jaHJvbm91cyBlbnRpdHkiKTsKKyAgY2FzZSBYTUxfRVJST1JfQkFEX0NIQVJfUkVGOgorICAgIHJldHVybiBYTUxfTCgicmVmZXJlbmNlIHRvIGludmFsaWQgY2hhcmFjdGVyIG51bWJlciIpOworICBjYXNlIFhNTF9FUlJPUl9CSU5BUllfRU5USVRZX1JFRjoKKyAgICByZXR1cm4gWE1MX0woInJlZmVyZW5jZSB0byBiaW5hcnkgZW50aXR5Iik7CisgIGNhc2UgWE1MX0VSUk9SX0FUVFJJQlVURV9FWFRFUk5BTF9FTlRJVFlfUkVGOgorICAgIHJldHVybiBYTUxfTCgicmVmZXJlbmNlIHRvIGV4dGVybmFsIGVudGl0eSBpbiBhdHRyaWJ1dGUiKTsKKyAgY2FzZSBYTUxfRVJST1JfTUlTUExBQ0VEX1hNTF9QSToKKyAgICByZXR1cm4gWE1MX0woIlhNTCBvciB0ZXh0IGRlY2xhcmF0aW9uIG5vdCBhdCBzdGFydCBvZiBlbnRpdHkiKTsKKyAgY2FzZSBYTUxfRVJST1JfVU5LTk9XTl9FTkNPRElORzoKKyAgICByZXR1cm4gWE1MX0woInVua25vd24gZW5jb2RpbmciKTsKKyAgY2FzZSBYTUxfRVJST1JfSU5DT1JSRUNUX0VOQ09ESU5HOgorICAgIHJldHVybiBYTUxfTCgiZW5jb2Rpbmcgc3BlY2lmaWVkIGluIFhNTCBkZWNsYXJhdGlvbiBpcyBpbmNvcnJlY3QiKTsKKyAgY2FzZSBYTUxfRVJST1JfVU5DTE9TRURfQ0RBVEFfU0VDVElPTjoKKyAgICByZXR1cm4gWE1MX0woInVuY2xvc2VkIENEQVRBIHNlY3Rpb24iKTsKKyAgY2FzZSBYTUxfRVJST1JfRVhURVJOQUxfRU5USVRZX0hBTkRMSU5HOgorICAgIHJldHVybiBYTUxfTCgiZXJyb3IgaW4gcHJvY2Vzc2luZyBleHRlcm5hbCBlbnRpdHkgcmVmZXJlbmNlIik7CisgIGNhc2UgWE1MX0VSUk9SX05PVF9TVEFOREFMT05FOgorICAgIHJldHVybiBYTUxfTCgiZG9jdW1lbnQgaXMgbm90IHN0YW5kYWxvbmUiKTsKKyAgY2FzZSBYTUxfRVJST1JfVU5FWFBFQ1RFRF9TVEFURToKKyAgICByZXR1cm4gWE1MX0woInVuZXhwZWN0ZWQgcGFyc2VyIHN0YXRlIC0gcGxlYXNlIHNlbmQgYSBidWcgcmVwb3J0Iik7CisgIGNhc2UgWE1MX0VSUk9SX0VOVElUWV9ERUNMQVJFRF9JTl9QRToKKyAgICByZXR1cm4gWE1MX0woImVudGl0eSBkZWNsYXJlZCBpbiBwYXJhbWV0ZXIgZW50aXR5Iik7CisgIGNhc2UgWE1MX0VSUk9SX0ZFQVRVUkVfUkVRVUlSRVNfWE1MX0RURDoKKyAgICByZXR1cm4gWE1MX0woInJlcXVlc3RlZCBmZWF0dXJlIHJlcXVpcmVzIFhNTF9EVEQgc3VwcG9ydCBpbiBFeHBhdCIpOworICBjYXNlIFhNTF9FUlJPUl9DQU5UX0NIQU5HRV9GRUFUVVJFX09OQ0VfUEFSU0lORzoKKyAgICByZXR1cm4gWE1MX0woImNhbm5vdCBjaGFuZ2Ugc2V0dGluZyBvbmNlIHBhcnNpbmcgaGFzIGJlZ3VuIik7CisgIC8qIEFkZGVkIGluIDEuOTUuNy4gKi8KKyAgY2FzZSBYTUxfRVJST1JfVU5CT1VORF9QUkVGSVg6CisgICAgcmV0dXJuIFhNTF9MKCJ1bmJvdW5kIHByZWZpeCIpOworICAvKiBBZGRlZCBpbiAxLjk1LjguICovCisgIGNhc2UgWE1MX0VSUk9SX1VOREVDTEFSSU5HX1BSRUZJWDoKKyAgICByZXR1cm4gWE1MX0woIm11c3Qgbm90IHVuZGVjbGFyZSBwcmVmaXgiKTsKKyAgY2FzZSBYTUxfRVJST1JfSU5DT01QTEVURV9QRToKKyAgICByZXR1cm4gWE1MX0woImluY29tcGxldGUgbWFya3VwIGluIHBhcmFtZXRlciBlbnRpdHkiKTsKKyAgY2FzZSBYTUxfRVJST1JfWE1MX0RFQ0w6CisgICAgcmV0dXJuIFhNTF9MKCJYTUwgZGVjbGFyYXRpb24gbm90IHdlbGwtZm9ybWVkIik7CisgIGNhc2UgWE1MX0VSUk9SX1RFWFRfREVDTDoKKyAgICByZXR1cm4gWE1MX0woInRleHQgZGVjbGFyYXRpb24gbm90IHdlbGwtZm9ybWVkIik7CisgIGNhc2UgWE1MX0VSUk9SX1BVQkxJQ0lEOgorICAgIHJldHVybiBYTUxfTCgiaWxsZWdhbCBjaGFyYWN0ZXIocykgaW4gcHVibGljIGlkIik7CisgIGNhc2UgWE1MX0VSUk9SX1NVU1BFTkRFRDoKKyAgICByZXR1cm4gWE1MX0woInBhcnNlciBzdXNwZW5kZWQiKTsKKyAgY2FzZSBYTUxfRVJST1JfTk9UX1NVU1BFTkRFRDoKKyAgICByZXR1cm4gWE1MX0woInBhcnNlciBub3Qgc3VzcGVuZGVkIik7CisgIGNhc2UgWE1MX0VSUk9SX0FCT1JURUQ6CisgICAgcmV0dXJuIFhNTF9MKCJwYXJzaW5nIGFib3J0ZWQiKTsKKyAgY2FzZSBYTUxfRVJST1JfRklOSVNIRUQ6CisgICAgcmV0dXJuIFhNTF9MKCJwYXJzaW5nIGZpbmlzaGVkIik7CisgIGNhc2UgWE1MX0VSUk9SX1NVU1BFTkRfUEU6CisgICAgcmV0dXJuIFhNTF9MKCJjYW5ub3Qgc3VzcGVuZCBpbiBleHRlcm5hbCBwYXJhbWV0ZXIgZW50aXR5Iik7CisgIC8qIEFkZGVkIGluIDIuMC4wLiAqLworICBjYXNlIFhNTF9FUlJPUl9SRVNFUlZFRF9QUkVGSVhfWE1MOgorICAgIHJldHVybiBYTUxfTCgicmVzZXJ2ZWQgcHJlZml4ICh4bWwpIG11c3Qgbm90IGJlIHVuZGVjbGFyZWQgb3IgYm91bmQgdG8gYW5vdGhlciBuYW1lc3BhY2UgbmFtZSIpOworICBjYXNlIFhNTF9FUlJPUl9SRVNFUlZFRF9QUkVGSVhfWE1MTlM6CisgICAgcmV0dXJuIFhNTF9MKCJyZXNlcnZlZCBwcmVmaXggKHhtbG5zKSBtdXN0IG5vdCBiZSBkZWNsYXJlZCBvciB1bmRlY2xhcmVkIik7CisgIGNhc2UgWE1MX0VSUk9SX1JFU0VSVkVEX05BTUVTUEFDRV9VUkk6CisgICAgcmV0dXJuIFhNTF9MKCJwcmVmaXggbXVzdCBub3QgYmUgYm91bmQgdG8gb25lIG9mIHRoZSByZXNlcnZlZCBuYW1lc3BhY2UgbmFtZXMiKTsKKyAgLyogQWRkZWQgaW4gMi4yLjUuICovCisgIGNhc2UgWE1MX0VSUk9SX0lOVkFMSURfQVJHVU1FTlQ6ICAvKiBDb25zdGFudCBhZGRlZCBpbiAyLjIuMSwgYWxyZWFkeSAqLworICAgIHJldHVybiBYTUxfTCgiaW52YWxpZCBhcmd1bWVudCIpOworICB9CiAgIHJldHVybiBOVUxMOwogfQogCkBAIC0yMTAzLDEyICsyNTAxLDEyIEBACiBzdGF0aWMgWE1MX0Jvb2wKIHN0b3JlUmF3TmFtZXMoWE1MX1BhcnNlciBwYXJzZXIpCiB7Ci0gIFRBRyAqdGFnID0gdGFnU3RhY2s7CisgIFRBRyAqdGFnID0gcGFyc2VyLT5tX3RhZ1N0YWNrOwogICB3aGlsZSAodGFnKSB7CiAgICAgaW50IGJ1ZlNpemU7CiAgICAgaW50IG5hbWVMZW4gPSBzaXplb2YoWE1MX0NoYXIpICogKHRhZy0+bmFtZS5zdHJMZW4gKyAxKTsKICAgICBjaGFyICpyYXdOYW1lQnVmID0gdGFnLT5idWYgKyBuYW1lTGVuOwotICAgIC8qIFN0b3AgaWYgYWxyZWFkeSBzdG9yZWQuICBTaW5jZSB0YWdTdGFjayBpcyBhIHN0YWNrLCB3ZSBjYW4gc3RvcAorICAgIC8qIFN0b3AgaWYgYWxyZWFkeSBzdG9yZWQuICBTaW5jZSBtX3RhZ1N0YWNrIGlzIGEgc3RhY2ssIHdlIGNhbiBzdG9wCiAgICAgICAgYXQgdGhlIGZpcnN0IGVudHJ5IHRoYXQgaGFzIGFscmVhZHkgYmVlbiBjb3BpZWQ7IGV2ZXJ5dGhpbmcKICAgICAgICBiZWxvdyBpdCBpbiB0aGUgc3RhY2sgaXMgYWxyZWFkeSBiZWVuIGFjY291bnRlZCBmb3IgaW4gYQogICAgICAgIHByZXZpb3VzIGNhbGwgdG8gdGhpcyBmdW5jdGlvbi4KQEAgLTIxMjAsNyArMjUxOCw3IEBACiAgICAgKi8KICAgICBidWZTaXplID0gbmFtZUxlbiArIFJPVU5EX1VQKHRhZy0+cmF3TmFtZUxlbmd0aCwgc2l6ZW9mKFhNTF9DaGFyKSk7CiAgICAgaWYgKGJ1ZlNpemUgPiB0YWctPmJ1ZkVuZCAtIHRhZy0+YnVmKSB7Ci0gICAgICBjaGFyICp0ZW1wID0gKGNoYXIgKilSRUFMTE9DKHRhZy0+YnVmLCBidWZTaXplKTsKKyAgICAgIGNoYXIgKnRlbXAgPSAoY2hhciAqKVJFQUxMT0MocGFyc2VyLCB0YWctPmJ1ZiwgYnVmU2l6ZSk7CiAgICAgICBpZiAodGVtcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gWE1MX0ZBTFNFOwogICAgICAgLyogaWYgdGFnLT5uYW1lLnN0ciBwb2ludHMgdG8gdGFnLT5idWYgKG9ubHkgd2hlbiBuYW1lc3BhY2UKQEAgLTIxNTEsOCArMjU0OSw4IEBACiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmVuZFB0cikKIHsKLSAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgMCwgZW5jb2RpbmcsIHN0YXJ0LCBlbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOworICBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCAwLCBwYXJzZXItPm1fZW5jb2RpbmcsIHN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQdHIsIChYTUxfQm9vbCkhcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIpOwogICBpZiAocmVzdWx0ID09IFhNTF9FUlJPUl9OT05FKSB7CiAgICAgaWYgKCFzdG9yZVJhd05hbWVzKHBhcnNlcikpCiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKQEAgLTIxNjksNyArMjU2Nyw3IEBACiAgIGVudW0gWE1MX0Vycm9yIHJlc3VsdCA9IGluaXRpYWxpemVFbmNvZGluZyhwYXJzZXIpOwogICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKQogICAgIHJldHVybiByZXN1bHQ7Ci0gIHByb2Nlc3NvciA9IGV4dGVybmFsRW50aXR5SW5pdFByb2Nlc3NvcjI7CisgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBleHRlcm5hbEVudGl0eUluaXRQcm9jZXNzb3IyOwogICByZXR1cm4gZXh0ZXJuYWxFbnRpdHlJbml0UHJvY2Vzc29yMihwYXJzZXIsIHN0YXJ0LCBlbmQsIGVuZFB0cik7CiB9CiAKQEAgLTIxODAsNyArMjU3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRQdHIpCiB7CiAgIGNvbnN0IGNoYXIgKm5leHQgPSBzdGFydDsgLyogWG1sQ29udGVudFRvayBkb2Vzbid0IGFsd2F5cyBzZXQgdGhlIGxhc3QgYXJnICovCi0gIGludCB0b2sgPSBYbWxDb250ZW50VG9rKGVuY29kaW5nLCBzdGFydCwgZW5kLCAmbmV4dCk7CisgIGludCB0b2sgPSBYbWxDb250ZW50VG9rKHBhcnNlci0+bV9lbmNvZGluZywgc3RhcnQsIGVuZCwgJm5leHQpOwogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfQk9NOgogICAgIC8qIElmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBidWZmZXIsIHRoaXMgd291bGQgY2F1c2UgdGhlIG5leHQgc3RhZ2UsCkBAIC0yMTg4LDI4ICsyNTg2LDI4IEBACiAgICAgICAgZG9Db250ZW50IChieSBkZXRlY3RpbmcgWE1MX1RPS19OT05FKSB3aXRob3V0IHByb2Nlc3NpbmcgYW55IHhtbCB0ZXh0CiAgICAgICAgZGVjbGFyYXRpb24gLSBjYXVzaW5nIHRoZSBlcnJvciBYTUxfRVJST1JfTUlTUExBQ0VEX1hNTF9QSSBpbiBkb0NvbnRlbnQuCiAgICAgKi8KLSAgICBpZiAobmV4dCA9PSBlbmQgJiYgIXBzX2ZpbmFsQnVmZmVyKSB7CisgICAgaWYgKG5leHQgPT0gZW5kICYmICFwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlcikgewogICAgICAgKmVuZFB0ciA9IG5leHQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgfQogICAgIHN0YXJ0ID0gbmV4dDsKICAgICBicmVhazsKICAgY2FzZSBYTUxfVE9LX1BBUlRJQUw6Ci0gICAgaWYgKCFwc19maW5hbEJ1ZmZlcikgeworICAgIGlmICghcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIpIHsKICAgICAgICplbmRQdHIgPSBzdGFydDsKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICB9Ci0gICAgZXZlbnRQdHIgPSBzdGFydDsKKyAgICBwYXJzZXItPm1fZXZlbnRQdHIgPSBzdGFydDsKICAgICByZXR1cm4gWE1MX0VSUk9SX1VOQ0xPU0VEX1RPS0VOOwogICBjYXNlIFhNTF9UT0tfUEFSVElBTF9DSEFSOgotICAgIGlmICghcHNfZmluYWxCdWZmZXIpIHsKKyAgICBpZiAoIXBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyKSB7CiAgICAgICAqZW5kUHRyID0gc3RhcnQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgfQotICAgIGV2ZW50UHRyID0gc3RhcnQ7CisgICAgcGFyc2VyLT5tX2V2ZW50UHRyID0gc3RhcnQ7CiAgICAgcmV0dXJuIFhNTF9FUlJPUl9QQVJUSUFMX0NIQVI7CiAgIH0KLSAgcHJvY2Vzc29yID0gZXh0ZXJuYWxFbnRpdHlJbml0UHJvY2Vzc29yMzsKKyAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IGV4dGVybmFsRW50aXR5SW5pdFByb2Nlc3NvcjM7CiAgIHJldHVybiBleHRlcm5hbEVudGl0eUluaXRQcm9jZXNzb3IzKHBhcnNlciwgc3RhcnQsIGVuZCwgZW5kUHRyKTsKIH0KIApAQCAtMjIyMSw5ICsyNjE5LDkgQEAKIHsKICAgaW50IHRvazsKICAgY29uc3QgY2hhciAqbmV4dCA9IHN0YXJ0OyAvKiBYbWxDb250ZW50VG9rIGRvZXNuJ3QgYWx3YXlzIHNldCB0aGUgbGFzdCBhcmcgKi8KLSAgZXZlbnRQdHIgPSBzdGFydDsKLSAgdG9rID0gWG1sQ29udGVudFRvayhlbmNvZGluZywgc3RhcnQsIGVuZCwgJm5leHQpOwotICBldmVudEVuZFB0ciA9IG5leHQ7CisgIHBhcnNlci0+bV9ldmVudFB0ciA9IHN0YXJ0OworICB0b2sgPSBYbWxDb250ZW50VG9rKHBhcnNlci0+bV9lbmNvZGluZywgc3RhcnQsIGVuZCwgJm5leHQpOworICBwYXJzZXItPm1fZXZlbnRFbmRQdHIgPSBuZXh0OwogCiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19YTUxfREVDTDoKQEAgLTIyMzIsNyArMjYzMCw3IEBACiAgICAgICByZXN1bHQgPSBwcm9jZXNzWG1sRGVjbChwYXJzZXIsIDEsIHN0YXJ0LCBuZXh0KTsKICAgICAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKKyAgICAgIHN3aXRjaCAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZykgewogICAgICAgY2FzZSBYTUxfU1VTUEVOREVEOgogICAgICAgICAqZW5kUHRyID0gbmV4dDsKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwpAQCAtMjI0NCwyMCArMjY0MiwyMCBAQAogICAgIH0KICAgICBicmVhazsKICAgY2FzZSBYTUxfVE9LX1BBUlRJQUw6Ci0gICAgaWYgKCFwc19maW5hbEJ1ZmZlcikgeworICAgIGlmICghcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIpIHsKICAgICAgICplbmRQdHIgPSBzdGFydDsKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICB9CiAgICAgcmV0dXJuIFhNTF9FUlJPUl9VTkNMT1NFRF9UT0tFTjsKICAgY2FzZSBYTUxfVE9LX1BBUlRJQUxfQ0hBUjoKLSAgICBpZiAoIXBzX2ZpbmFsQnVmZmVyKSB7CisgICAgaWYgKCFwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlcikgewogICAgICAgKmVuZFB0ciA9IHN0YXJ0OwogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgIH0KICAgICByZXR1cm4gWE1MX0VSUk9SX1BBUlRJQUxfQ0hBUjsKICAgfQotICBwcm9jZXNzb3IgPSBleHRlcm5hbEVudGl0eUNvbnRlbnRQcm9jZXNzb3I7Ci0gIHRhZ0xldmVsID0gMTsKKyAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IGV4dGVybmFsRW50aXR5Q29udGVudFByb2Nlc3NvcjsKKyAgcGFyc2VyLT5tX3RhZ0xldmVsID0gMTsKICAgcmV0dXJuIGV4dGVybmFsRW50aXR5Q29udGVudFByb2Nlc3NvcihwYXJzZXIsIHN0YXJ0LCBlbmQsIGVuZFB0cik7CiB9CiAKQEAgLTIyNjcsOCArMjY2NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRQdHIpCiB7Ci0gIGVudW0gWE1MX0Vycm9yIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIDEsIGVuY29kaW5nLCBzdGFydCwgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kUHRyLCAoWE1MX0Jvb2wpIXBzX2ZpbmFsQnVmZmVyKTsKKyAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgMSwgcGFyc2VyLT5tX2VuY29kaW5nLCBzdGFydCwgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5kUHRyLCAoWE1MX0Jvb2wpIXBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyKTsKICAgaWYgKHJlc3VsdCA9PSBYTUxfRVJST1JfTk9ORSkgewogICAgIGlmICghc3RvcmVSYXdOYW1lcyhwYXJzZXIpKQogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CkBAIC0yMjg2LDE3ICsyNjg0LDE3IEBACiAgICAgICAgICAgWE1MX0Jvb2wgaGF2ZU1vcmUpCiB7CiAgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCi0gIERURCAqIGNvbnN0IGR0ZCA9IF9kdGQ7CisgIERURCAqIGNvbnN0IGR0ZCA9IHBhcnNlci0+bV9kdGQ7CiAKICAgY29uc3QgY2hhciAqKmV2ZW50UFA7CiAgIGNvbnN0IGNoYXIgKipldmVudEVuZFBQOwotICBpZiAoZW5jID09IGVuY29kaW5nKSB7Ci0gICAgZXZlbnRQUCA9ICZldmVudFB0cjsKLSAgICBldmVudEVuZFBQID0gJmV2ZW50RW5kUHRyOworICBpZiAoZW5jID09IHBhcnNlci0+bV9lbmNvZGluZykgeworICAgIGV2ZW50UFAgPSAmcGFyc2VyLT5tX2V2ZW50UHRyOworICAgIGV2ZW50RW5kUFAgPSAmcGFyc2VyLT5tX2V2ZW50RW5kUHRyOwogICB9CiAgIGVsc2UgewotICAgIGV2ZW50UFAgPSAmKG9wZW5JbnRlcm5hbEVudGl0aWVzLT5pbnRlcm5hbEV2ZW50UHRyKTsKLSAgICBldmVudEVuZFBQID0gJihvcGVuSW50ZXJuYWxFbnRpdGllcy0+aW50ZXJuYWxFdmVudEVuZFB0cik7CisgICAgZXZlbnRQUCA9ICYocGFyc2VyLT5tX29wZW5JbnRlcm5hbEVudGl0aWVzLT5pbnRlcm5hbEV2ZW50UHRyKTsKKyAgICBldmVudEVuZFBQID0gJihwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMtPmludGVybmFsRXZlbnRFbmRQdHIpOwogICB9CiAgICpldmVudFBQID0gczsKIApAQCAtMjMxMSwxOCArMjcwOSwxOCBAQAogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgICB9CiAgICAgICAqZXZlbnRFbmRQUCA9IGVuZDsKLSAgICAgIGlmIChjaGFyYWN0ZXJEYXRhSGFuZGxlcikgeworICAgICAgaWYgKHBhcnNlci0+bV9jaGFyYWN0ZXJEYXRhSGFuZGxlcikgewogICAgICAgICBYTUxfQ2hhciBjID0gMHhBOwotICAgICAgICBjaGFyYWN0ZXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLCAmYywgMSk7CisgICAgICAgIHBhcnNlci0+bV9jaGFyYWN0ZXJEYXRhSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywgJmMsIDEpOwogICAgICAgfQotICAgICAgZWxzZSBpZiAoZGVmYXVsdEhhbmRsZXIpCisgICAgICBlbHNlIGlmIChwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIpCiAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIGVuZCk7CiAgICAgICAvKiBXZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgZmluYWwgYnVmZmVyLCBzaG91bGQgd2UgY2hlY2sgZm9yCiAgICAgICAgICBYTUxfU1VTUEVOREVELCBYTUxfRklOSVNIRUQ/CiAgICAgICAqLwogICAgICAgaWYgKHN0YXJ0VGFnTGV2ZWwgPT0gMCkKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19FTEVNRU5UUzsKLSAgICAgIGlmICh0YWdMZXZlbCAhPSBzdGFydFRhZ0xldmVsKQorICAgICAgaWYgKHBhcnNlci0+bV90YWdMZXZlbCAhPSBzdGFydFRhZ0xldmVsKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX0FTWU5DX0VOVElUWTsKICAgICAgICpuZXh0UHRyID0gZW5kOwogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwpAQCAtMjMzMiw3ICsyNzMwLDcgQEAKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgICAgfQogICAgICAgaWYgKHN0YXJ0VGFnTGV2ZWwgPiAwKSB7Ci0gICAgICAgIGlmICh0YWdMZXZlbCAhPSBzdGFydFRhZ0xldmVsKQorICAgICAgICBpZiAocGFyc2VyLT5tX3RhZ0xldmVsICE9IHN0YXJ0VGFnTGV2ZWwpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9BU1lOQ19FTlRJVFk7CiAgICAgICAgICpuZXh0UHRyID0gczsKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwpAQCAtMjM2MSw5ICsyNzU5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICsgZW5jLT5taW5CeXRlc1BlckNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCAtIGVuYy0+bWluQnl0ZXNQZXJDaGFyKTsKICAgICAgICAgaWYgKGNoKSB7Ci0gICAgICAgICAgaWYgKGNoYXJhY3RlckRhdGFIYW5kbGVyKQotICAgICAgICAgICAgY2hhcmFjdGVyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywgJmNoLCAxKTsKLSAgICAgICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgICAgICBpZiAocGFyc2VyLT5tX2NoYXJhY3RlckRhdGFIYW5kbGVyKQorICAgICAgICAgICAgcGFyc2VyLT5tX2NoYXJhY3RlckRhdGFIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCAmY2gsIDEpOworICAgICAgICAgIGVsc2UgaWYgKHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcikKICAgICAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMzg1LDkgKzI3ODMsOSBAQAogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9FTlRJVFlfREVDTEFSRURfSU5fUEU7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIWVudGl0eSkgewotICAgICAgICAgIGlmIChza2lwcGVkRW50aXR5SGFuZGxlcikKLSAgICAgICAgICAgIHNraXBwZWRFbnRpdHlIYW5kbGVyKGhhbmRsZXJBcmcsIG5hbWUsIDApOwotICAgICAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQorICAgICAgICAgIGlmIChwYXJzZXItPm1fc2tpcHBlZEVudGl0eUhhbmRsZXIpCisgICAgICAgICAgICBwYXJzZXItPm1fc2tpcHBlZEVudGl0eUhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIG5hbWUsIDApOworICAgICAgICAgIGVsc2UgaWYgKHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcikKICAgICAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0yMzk3LDEwICsyNzk1LDEwIEBACiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9CSU5BUllfRU5USVRZX1JFRjsKICAgICAgICAgaWYgKGVudGl0eS0+dGV4dFB0cikgewogICAgICAgICAgIGVudW0gWE1MX0Vycm9yIHJlc3VsdDsKLSAgICAgICAgICBpZiAoIWRlZmF1bHRFeHBhbmRJbnRlcm5hbEVudGl0aWVzKSB7Ci0gICAgICAgICAgICBpZiAoc2tpcHBlZEVudGl0eUhhbmRsZXIpCi0gICAgICAgICAgICAgIHNraXBwZWRFbnRpdHlIYW5kbGVyKGhhbmRsZXJBcmcsIGVudGl0eS0+bmFtZSwgMCk7Ci0gICAgICAgICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgICAgICBpZiAoIXBhcnNlci0+bV9kZWZhdWx0RXhwYW5kSW50ZXJuYWxFbnRpdGllcykgeworICAgICAgICAgICAgaWYgKHBhcnNlci0+bV9za2lwcGVkRW50aXR5SGFuZGxlcikKKyAgICAgICAgICAgICAgcGFyc2VyLT5tX3NraXBwZWRFbnRpdHlIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCBlbnRpdHktPm5hbWUsIDApOworICAgICAgICAgICAgZWxzZSBpZiAocGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKQogICAgICAgICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgIH0KQEAgLTI0MDgsMjIgKzI4MDYsMjIgQEAKICAgICAgICAgICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChleHRlcm5hbEVudGl0eVJlZkhhbmRsZXIpIHsKKyAgICAgICAgZWxzZSBpZiAocGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlcikgewogICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpjb250ZXh0OwogICAgICAgICAgIGVudGl0eS0+b3BlbiA9IFhNTF9UUlVFOwogICAgICAgICAgIGNvbnRleHQgPSBnZXRDb250ZXh0KHBhcnNlcik7CiAgICAgICAgICAgZW50aXR5LT5vcGVuID0gWE1MX0ZBTFNFOwogICAgICAgICAgIGlmICghY29udGV4dCkKICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICAgIGlmICghZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyKGV4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZywKKyAgICAgICAgICBpZiAoIXBhcnNlci0+bV9leHRlcm5hbEVudGl0eVJlZkhhbmRsZXIocGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eS0+YmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHktPnN5c3RlbUlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eS0+cHVibGljSWQpKQogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9FWFRFUk5BTF9FTlRJVFlfSEFORExJTkc7Ci0gICAgICAgICAgcG9vbERpc2NhcmQoJnRlbXBQb29sKTsKKyAgICAgICAgICBwb29sRGlzY2FyZCgmcGFyc2VyLT5tX3RlbXBQb29sKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgICAgZWxzZSBpZiAocGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKQogICAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgICBicmVhazsKICAgICAgIH0KQEAgLTI0MzQsMjkgKzI4MzIsMjkgQEAKICAgICAgICAgVEFHICp0YWc7CiAgICAgICAgIGVudW0gWE1MX0Vycm9yIHJlc3VsdDsKICAgICAgICAgWE1MX0NoYXIgKnRvUHRyOwotICAgICAgICBpZiAoZnJlZVRhZ0xpc3QpIHsKLSAgICAgICAgICB0YWcgPSBmcmVlVGFnTGlzdDsKLSAgICAgICAgICBmcmVlVGFnTGlzdCA9IGZyZWVUYWdMaXN0LT5wYXJlbnQ7CisgICAgICAgIGlmIChwYXJzZXItPm1fZnJlZVRhZ0xpc3QpIHsKKyAgICAgICAgICB0YWcgPSBwYXJzZXItPm1fZnJlZVRhZ0xpc3Q7CisgICAgICAgICAgcGFyc2VyLT5tX2ZyZWVUYWdMaXN0ID0gcGFyc2VyLT5tX2ZyZWVUYWdMaXN0LT5wYXJlbnQ7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgdGFnID0gKFRBRyAqKU1BTExPQyhzaXplb2YoVEFHKSk7CisgICAgICAgICAgdGFnID0gKFRBRyAqKU1BTExPQyhwYXJzZXIsIHNpemVvZihUQUcpKTsKICAgICAgICAgICBpZiAoIXRhZykKICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICAgIHRhZy0+YnVmID0gKGNoYXIgKilNQUxMT0MoSU5JVF9UQUdfQlVGX1NJWkUpOworICAgICAgICAgIHRhZy0+YnVmID0gKGNoYXIgKilNQUxMT0MocGFyc2VyLCBJTklUX1RBR19CVUZfU0laRSk7CiAgICAgICAgICAgaWYgKCF0YWctPmJ1ZikgewotICAgICAgICAgICAgRlJFRSh0YWcpOworICAgICAgICAgICAgRlJFRShwYXJzZXIsIHRhZyk7CiAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgICB9CiAgICAgICAgICAgdGFnLT5idWZFbmQgPSB0YWctPmJ1ZiArIElOSVRfVEFHX0JVRl9TSVpFOwogICAgICAgICB9CiAgICAgICAgIHRhZy0+YmluZGluZ3MgPSBOVUxMOwotICAgICAgICB0YWctPnBhcmVudCA9IHRhZ1N0YWNrOwotICAgICAgICB0YWdTdGFjayA9IHRhZzsKKyAgICAgICAgdGFnLT5wYXJlbnQgPSBwYXJzZXItPm1fdGFnU3RhY2s7CisgICAgICAgIHBhcnNlci0+bV90YWdTdGFjayA9IHRhZzsKICAgICAgICAgdGFnLT5uYW1lLmxvY2FsUGFydCA9IE5VTEw7CiAgICAgICAgIHRhZy0+bmFtZS5wcmVmaXggPSBOVUxMOwogICAgICAgICB0YWctPnJhd05hbWUgPSBzICsgZW5jLT5taW5CeXRlc1BlckNoYXI7CiAgICAgICAgIHRhZy0+cmF3TmFtZUxlbmd0aCA9IFhtbE5hbWVMZW5ndGgoZW5jLCB0YWctPnJhd05hbWUpOwotICAgICAgICArK3RhZ0xldmVsOworICAgICAgICArK3BhcnNlci0+bV90YWdMZXZlbDsKICAgICAgICAgewogICAgICAgICAgIGNvbnN0IGNoYXIgKnJhd05hbWVFbmQgPSB0YWctPnJhd05hbWUgKyB0YWctPnJhd05hbWVMZW5ndGg7CiAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbVB0ciA9IHRhZy0+cmF3TmFtZTsKQEAgLTI0NjQsMTcgKzI4NjIsMTcgQEAKICAgICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBpbnQgYnVmU2l6ZTsKICAgICAgICAgICAgIGludCBjb252TGVuOwotICAgICAgICAgICAgWG1sQ29udmVydChlbmMsCisgICAgICAgICAgICBjb25zdCBlbnVtIFhNTF9Db252ZXJ0X1Jlc3VsdCBjb252ZXJ0X3JlcyA9IFhtbENvbnZlcnQoZW5jLAogICAgICAgICAgICAgICAgICAgICAgICAmZnJvbVB0ciwgcmF3TmFtZUVuZCwKICAgICAgICAgICAgICAgICAgICAgICAgKElDSEFSICoqKSZ0b1B0ciwgKElDSEFSICopdGFnLT5idWZFbmQgLSAxKTsKICAgICAgICAgICAgIGNvbnZMZW4gPSAoaW50KSh0b1B0ciAtIChYTUxfQ2hhciAqKXRhZy0+YnVmKTsKLSAgICAgICAgICAgIGlmIChmcm9tUHRyID09IHJhd05hbWVFbmQpIHsKKyAgICAgICAgICAgIGlmICgoZnJvbVB0ciA+PSByYXdOYW1lRW5kKSB8fCAoY29udmVydF9yZXMgPT0gWE1MX0NPTlZFUlRfSU5QVVRfSU5DT01QTEVURSkpIHsKICAgICAgICAgICAgICAgdGFnLT5uYW1lLnN0ckxlbiA9IGNvbnZMZW47CiAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnVmU2l6ZSA9IChpbnQpKHRhZy0+YnVmRW5kIC0gdGFnLT5idWYpIDw8IDE7CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIGNoYXIgKnRlbXAgPSAoY2hhciAqKVJFQUxMT0ModGFnLT5idWYsIGJ1ZlNpemUpOworICAgICAgICAgICAgICBjaGFyICp0ZW1wID0gKGNoYXIgKilSRUFMTE9DKHBhcnNlciwgdGFnLT5idWYsIGJ1ZlNpemUpOwogICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICAgICAgICB0YWctPmJ1ZiA9IHRlbXA7CkBAIC0yNDg4LDEyICsyODg2LDEyIEBACiAgICAgICAgIHJlc3VsdCA9IHN0b3JlQXR0cyhwYXJzZXIsIGVuYywgcywgJih0YWctPm5hbWUpLCAmKHRhZy0+YmluZGluZ3MpKTsKICAgICAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICBpZiAoc3RhcnRFbGVtZW50SGFuZGxlcikKLSAgICAgICAgICBzdGFydEVsZW1lbnRIYW5kbGVyKGhhbmRsZXJBcmcsIHRhZy0+bmFtZS5zdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgWE1MX0NoYXIgKiopYXR0cyk7Ci0gICAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQorICAgICAgICBpZiAocGFyc2VyLT5tX3N0YXJ0RWxlbWVudEhhbmRsZXIpCisgICAgICAgICAgcGFyc2VyLT5tX3N0YXJ0RWxlbWVudEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIHRhZy0+bmFtZS5zdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgWE1MX0NoYXIgKiopcGFyc2VyLT5tX2F0dHMpOworICAgICAgICBlbHNlIGlmIChwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIpCiAgICAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7Ci0gICAgICAgIHBvb2xDbGVhcigmdGVtcFBvb2wpOworICAgICAgICBwb29sQ2xlYXIoJnBhcnNlci0+bV90ZW1wUG9vbCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgIGNhc2UgWE1MX1RPS19FTVBUWV9FTEVNRU5UX05PX0FUVFM6CkBAIC0yNTA1LDUxICsyOTAzLDQ5IEBACiAgICAgICAgIEJJTkRJTkcgKmJpbmRpbmdzID0gTlVMTDsKICAgICAgICAgWE1MX0Jvb2wgbm9FbG1IYW5kbGVycyA9IFhNTF9UUlVFOwogICAgICAgICBUQUdfTkFNRSBuYW1lOwotICAgICAgICBuYW1lLnN0ciA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsIGVuYywgcmF3TmFtZSwKKyAgICAgICAgbmFtZS5zdHIgPSBwb29sU3RvcmVTdHJpbmcoJnBhcnNlci0+bV90ZW1wUG9vbCwgZW5jLCByYXdOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYXdOYW1lICsgWG1sTmFtZUxlbmd0aChlbmMsIHJhd05hbWUpKTsKICAgICAgICAgaWYgKCFuYW1lLnN0cikKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKLSAgICAgICAgcG9vbEZpbmlzaCgmdGVtcFBvb2wpOworICAgICAgICBwb29sRmluaXNoKCZwYXJzZXItPm1fdGVtcFBvb2wpOwogICAgICAgICByZXN1bHQgPSBzdG9yZUF0dHMocGFyc2VyLCBlbmMsIHMsICZuYW1lLCAmYmluZGluZ3MpOwotICAgICAgICBpZiAocmVzdWx0KQorICAgICAgICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKSB7CisgICAgICAgICAgZnJlZUJpbmRpbmdzKHBhcnNlciwgYmluZGluZ3MpOwogICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIHBvb2xGaW5pc2goJnRlbXBQb29sKTsKLSAgICAgICAgaWYgKHN0YXJ0RWxlbWVudEhhbmRsZXIpIHsKLSAgICAgICAgICBzdGFydEVsZW1lbnRIYW5kbGVyKGhhbmRsZXJBcmcsIG5hbWUuc3RyLCAoY29uc3QgWE1MX0NoYXIgKiopYXR0cyk7CisgICAgICAgIH0KKyAgICAgICAgcG9vbEZpbmlzaCgmcGFyc2VyLT5tX3RlbXBQb29sKTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9zdGFydEVsZW1lbnRIYW5kbGVyKSB7CisgICAgICAgICAgcGFyc2VyLT5tX3N0YXJ0RWxlbWVudEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIG5hbWUuc3RyLCAoY29uc3QgWE1MX0NoYXIgKiopcGFyc2VyLT5tX2F0dHMpOwogICAgICAgICAgIG5vRWxtSGFuZGxlcnMgPSBYTUxfRkFMU0U7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVuZEVsZW1lbnRIYW5kbGVyKSB7Ci0gICAgICAgICAgaWYgKHN0YXJ0RWxlbWVudEhhbmRsZXIpCisgICAgICAgIGlmIChwYXJzZXItPm1fZW5kRWxlbWVudEhhbmRsZXIpIHsKKyAgICAgICAgICBpZiAocGFyc2VyLT5tX3N0YXJ0RWxlbWVudEhhbmRsZXIpCiAgICAgICAgICAgICAqZXZlbnRQUCA9ICpldmVudEVuZFBQOwotICAgICAgICAgIGVuZEVsZW1lbnRIYW5kbGVyKGhhbmRsZXJBcmcsIG5hbWUuc3RyKTsKKyAgICAgICAgICBwYXJzZXItPm1fZW5kRWxlbWVudEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIG5hbWUuc3RyKTsKICAgICAgICAgICBub0VsbUhhbmRsZXJzID0gWE1MX0ZBTFNFOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub0VsbUhhbmRsZXJzICYmIGRlZmF1bHRIYW5kbGVyKQorICAgICAgICBpZiAobm9FbG1IYW5kbGVycyAmJiBwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIpCiAgICAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7Ci0gICAgICAgIHBvb2xDbGVhcigmdGVtcFBvb2wpOwotICAgICAgICB3aGlsZSAoYmluZGluZ3MpIHsKLSAgICAgICAgICBCSU5ESU5HICpiID0gYmluZGluZ3M7Ci0gICAgICAgICAgaWYgKGVuZE5hbWVzcGFjZURlY2xIYW5kbGVyKQotICAgICAgICAgICAgZW5kTmFtZXNwYWNlRGVjbEhhbmRsZXIoaGFuZGxlckFyZywgYi0+cHJlZml4LT5uYW1lKTsKLSAgICAgICAgICBiaW5kaW5ncyA9IGJpbmRpbmdzLT5uZXh0VGFnQmluZGluZzsKLSAgICAgICAgICBiLT5uZXh0VGFnQmluZGluZyA9IGZyZWVCaW5kaW5nTGlzdDsKLSAgICAgICAgICBmcmVlQmluZGluZ0xpc3QgPSBiOwotICAgICAgICAgIGItPnByZWZpeC0+YmluZGluZyA9IGItPnByZXZQcmVmaXhCaW5kaW5nOwotICAgICAgICB9CisgICAgICAgIHBvb2xDbGVhcigmcGFyc2VyLT5tX3RlbXBQb29sKTsKKyAgICAgICAgZnJlZUJpbmRpbmdzKHBhcnNlciwgYmluZGluZ3MpOwogICAgICAgfQotICAgICAgaWYgKHRhZ0xldmVsID09IDApCi0gICAgICAgIHJldHVybiBlcGlsb2dQcm9jZXNzb3IocGFyc2VyLCBuZXh0LCBlbmQsIG5leHRQdHIpOworICAgICAgaWYgKChwYXJzZXItPm1fdGFnTGV2ZWwgPT0gMCkgJiYgKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcgIT0gWE1MX0ZJTklTSEVEKSkgeworICAgICAgICBpZiAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9PSBYTUxfU1VTUEVOREVEKQorICAgICAgICAgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBlcGlsb2dQcm9jZXNzb3I7CisgICAgICAgIGVsc2UKKyAgICAgICAgICByZXR1cm4gZXBpbG9nUHJvY2Vzc29yKHBhcnNlciwgbmV4dCwgZW5kLCBuZXh0UHRyKTsKKyAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1RPS19FTkRfVEFHOgotICAgICAgaWYgKHRhZ0xldmVsID09IHN0YXJ0VGFnTGV2ZWwpCisgICAgICBpZiAocGFyc2VyLT5tX3RhZ0xldmVsID09IHN0YXJ0VGFnTGV2ZWwpCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfQVNZTkNfRU5USVRZOwogICAgICAgZWxzZSB7CiAgICAgICAgIGludCBsZW47CiAgICAgICAgIGNvbnN0IGNoYXIgKnJhd05hbWU7Ci0gICAgICAgIFRBRyAqdGFnID0gdGFnU3RhY2s7Ci0gICAgICAgIHRhZ1N0YWNrID0gdGFnLT5wYXJlbnQ7Ci0gICAgICAgIHRhZy0+cGFyZW50ID0gZnJlZVRhZ0xpc3Q7Ci0gICAgICAgIGZyZWVUYWdMaXN0ID0gdGFnOworICAgICAgICBUQUcgKnRhZyA9IHBhcnNlci0+bV90YWdTdGFjazsKKyAgICAgICAgcGFyc2VyLT5tX3RhZ1N0YWNrID0gdGFnLT5wYXJlbnQ7CisgICAgICAgIHRhZy0+cGFyZW50ID0gcGFyc2VyLT5tX2ZyZWVUYWdMaXN0OworICAgICAgICBwYXJzZXItPm1fZnJlZVRhZ0xpc3QgPSB0YWc7CiAgICAgICAgIHJhd05hbWUgPSBzICsgZW5jLT5taW5CeXRlc1BlckNoYXIqMjsKICAgICAgICAgbGVuID0gWG1sTmFtZUxlbmd0aChlbmMsIHJhd05hbWUpOwogICAgICAgICBpZiAobGVuICE9IHRhZy0+cmF3TmFtZUxlbmd0aApAQCAtMjU1NywxMyArMjk1MywxMyBAQAogICAgICAgICAgICpldmVudFBQID0gcmF3TmFtZTsKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX1RBR19NSVNNQVRDSDsKICAgICAgICAgfQotICAgICAgICAtLXRhZ0xldmVsOwotICAgICAgICBpZiAoZW5kRWxlbWVudEhhbmRsZXIpIHsKKyAgICAgICAgLS1wYXJzZXItPm1fdGFnTGV2ZWw7CisgICAgICAgIGlmIChwYXJzZXItPm1fZW5kRWxlbWVudEhhbmRsZXIpIHsKICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqbG9jYWxQYXJ0OwogICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpwcmVmaXg7CiAgICAgICAgICAgWE1MX0NoYXIgKnVyaTsKICAgICAgICAgICBsb2NhbFBhcnQgPSB0YWctPm5hbWUubG9jYWxQYXJ0OwotICAgICAgICAgIGlmIChucyAmJiBsb2NhbFBhcnQpIHsKKyAgICAgICAgICBpZiAocGFyc2VyLT5tX25zICYmIGxvY2FsUGFydCkgewogICAgICAgICAgICAgLyogbG9jYWxQYXJ0IGFuZCBwcmVmaXggbWF5IGhhdmUgYmVlbiBvdmVyd3JpdHRlbiBpbgogICAgICAgICAgICAgICAgdGFnLT5uYW1lLnN0ciwgc2luY2UgdGhpcyBwb2ludHMgdG8gdGhlIGJpbmRpbmctPnVyaQogICAgICAgICAgICAgICAgYnVmZmVyIHdoaWNoIGdldHMgcmUtdXNlZDsgc28gd2UgaGF2ZSB0byBhZGQgdGhlbSBhZ2FpbgpAQCAtMjU3MiwyNiArMjk2OCwyNiBAQAogICAgICAgICAgICAgLyogZG9uJ3QgbmVlZCB0byBjaGVjayBmb3Igc3BhY2UgLSBhbHJlYWR5IGRvbmUgaW4gc3RvcmVBdHRzKCkgKi8KICAgICAgICAgICAgIHdoaWxlICgqbG9jYWxQYXJ0KSAqdXJpKysgPSAqbG9jYWxQYXJ0Kys7CiAgICAgICAgICAgICBwcmVmaXggPSAoWE1MX0NoYXIgKil0YWctPm5hbWUucHJlZml4OwotICAgICAgICAgICAgaWYgKG5zX3RyaXBsZXRzICYmIHByZWZpeCkgewotICAgICAgICAgICAgICAqdXJpKysgPSBuYW1lc3BhY2VTZXBhcmF0b3I7CisgICAgICAgICAgICBpZiAocGFyc2VyLT5tX25zX3RyaXBsZXRzICYmIHByZWZpeCkgeworICAgICAgICAgICAgICAqdXJpKysgPSBwYXJzZXItPm1fbmFtZXNwYWNlU2VwYXJhdG9yOwogICAgICAgICAgICAgICB3aGlsZSAoKnByZWZpeCkgKnVyaSsrID0gKnByZWZpeCsrOwogICAgICAgICAgICAgIH0KICAgICAgICAgICAgICp1cmkgPSBYTUxfVCgnXDAnKTsKICAgICAgICAgICB9Ci0gICAgICAgICAgZW5kRWxlbWVudEhhbmRsZXIoaGFuZGxlckFyZywgdGFnLT5uYW1lLnN0cik7CisgICAgICAgICAgcGFyc2VyLT5tX2VuZEVsZW1lbnRIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCB0YWctPm5hbWUuc3RyKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgICAgZWxzZSBpZiAocGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKQogICAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgICB3aGlsZSAodGFnLT5iaW5kaW5ncykgewogICAgICAgICAgIEJJTkRJTkcgKmIgPSB0YWctPmJpbmRpbmdzOwotICAgICAgICAgIGlmIChlbmROYW1lc3BhY2VEZWNsSGFuZGxlcikKLSAgICAgICAgICAgIGVuZE5hbWVzcGFjZURlY2xIYW5kbGVyKGhhbmRsZXJBcmcsIGItPnByZWZpeC0+bmFtZSk7CisgICAgICAgICAgaWYgKHBhcnNlci0+bV9lbmROYW1lc3BhY2VEZWNsSGFuZGxlcikKKyAgICAgICAgICAgIHBhcnNlci0+bV9lbmROYW1lc3BhY2VEZWNsSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywgYi0+cHJlZml4LT5uYW1lKTsKICAgICAgICAgICB0YWctPmJpbmRpbmdzID0gdGFnLT5iaW5kaW5ncy0+bmV4dFRhZ0JpbmRpbmc7Ci0gICAgICAgICAgYi0+bmV4dFRhZ0JpbmRpbmcgPSBmcmVlQmluZGluZ0xpc3Q7Ci0gICAgICAgICAgZnJlZUJpbmRpbmdMaXN0ID0gYjsKKyAgICAgICAgICBiLT5uZXh0VGFnQmluZGluZyA9IHBhcnNlci0+bV9mcmVlQmluZGluZ0xpc3Q7CisgICAgICAgICAgcGFyc2VyLT5tX2ZyZWVCaW5kaW5nTGlzdCA9IGI7CiAgICAgICAgICAgYi0+cHJlZml4LT5iaW5kaW5nID0gYi0+cHJldlByZWZpeEJpbmRpbmc7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHRhZ0xldmVsID09IDApCisgICAgICAgIGlmIChwYXJzZXItPm1fdGFnTGV2ZWwgPT0gMCkKICAgICAgICAgICByZXR1cm4gZXBpbG9nUHJvY2Vzc29yKHBhcnNlciwgbmV4dCwgZW5kLCBuZXh0UHRyKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMjYwMCwyOSArMjk5NiwyOSBAQAogICAgICAgICBpbnQgbiA9IFhtbENoYXJSZWZOdW1iZXIoZW5jLCBzKTsKICAgICAgICAgaWYgKG4gPCAwKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfQkFEX0NIQVJfUkVGOwotICAgICAgICBpZiAoY2hhcmFjdGVyRGF0YUhhbmRsZXIpIHsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9jaGFyYWN0ZXJEYXRhSGFuZGxlcikgewogICAgICAgICAgIFhNTF9DaGFyIGJ1ZltYTUxfRU5DT0RFX01BWF07Ci0gICAgICAgICAgY2hhcmFjdGVyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywgYnVmLCBYbWxFbmNvZGUobiwgKElDSEFSICopYnVmKSk7CisgICAgICAgICAgcGFyc2VyLT5tX2NoYXJhY3RlckRhdGFIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCBidWYsIFhtbEVuY29kZShuLCAoSUNIQVIgKilidWYpKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgICAgZWxzZSBpZiAocGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKQogICAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfVE9LX1hNTF9ERUNMOgogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9NSVNQTEFDRURfWE1MX1BJOwogICAgIGNhc2UgWE1MX1RPS19EQVRBX05FV0xJTkU6Ci0gICAgICBpZiAoY2hhcmFjdGVyRGF0YUhhbmRsZXIpIHsKKyAgICAgIGlmIChwYXJzZXItPm1fY2hhcmFjdGVyRGF0YUhhbmRsZXIpIHsKICAgICAgICAgWE1MX0NoYXIgYyA9IDB4QTsKLSAgICAgICAgY2hhcmFjdGVyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywgJmMsIDEpOworICAgICAgICBwYXJzZXItPm1fY2hhcmFjdGVyRGF0YUhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsICZjLCAxKTsKICAgICAgIH0KLSAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQorICAgICAgZWxzZSBpZiAocGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKQogICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1RPS19DREFUQV9TRUNUX09QRU46CiAgICAgICB7CiAgICAgICAgIGVudW0gWE1MX0Vycm9yIHJlc3VsdDsKLSAgICAgICAgaWYgKHN0YXJ0Q2RhdGFTZWN0aW9uSGFuZGxlcikKLSAgICAgICAgICBzdGFydENkYXRhU2VjdGlvbkhhbmRsZXIoaGFuZGxlckFyZyk7CisgICAgICAgIGlmIChwYXJzZXItPm1fc3RhcnRDZGF0YVNlY3Rpb25IYW5kbGVyKQorICAgICAgICAgIHBhcnNlci0+bV9zdGFydENkYXRhU2VjdGlvbkhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcpOwogI2lmIDAKICAgICAgICAgLyogU3VwcG9zZSB5b3UgZG9pbmcgYSB0cmFuc2Zvcm1hdGlvbiBvbiBhIGRvY3VtZW50IHRoYXQgaW52b2x2ZXMKICAgICAgICAgICAgY2hhbmdpbmcgb25seSB0aGUgY2hhcmFjdGVyIGRhdGEuICBZb3Ugc2V0IHVwIGEgZGVmYXVsdEhhbmRsZXIKQEAgLTI2MzYsMTYgKzMwMzIsMTYgQEAKICAgICAgICAgICAgSG93ZXZlciwgbm93IHdlIGhhdmUgYSBzdGFydC9lbmRDZGF0YVNlY3Rpb25IYW5kbGVyLCBzbyBpdCBzZWVtcwogICAgICAgICAgICBlYXNpZXIgdG8gbGV0IHRoZSB1c2VyIGRlYWwgd2l0aCB0aGlzLgogICAgICAgICAqLwotICAgICAgICBlbHNlIGlmIChjaGFyYWN0ZXJEYXRhSGFuZGxlcikKLSAgICAgICAgICBjaGFyYWN0ZXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLCBkYXRhQnVmLCAwKTsKKyAgICAgICAgZWxzZSBpZiAocGFyc2VyLT5tX2NoYXJhY3RlckRhdGFIYW5kbGVyKQorICAgICAgICAgIHBhcnNlci0+bV9jaGFyYWN0ZXJEYXRhSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywgcGFyc2VyLT5tX2RhdGFCdWYsIDApOwogI2VuZGlmCi0gICAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQorICAgICAgICBlbHNlIGlmIChwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIpCiAgICAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7CiAgICAgICAgIHJlc3VsdCA9IGRvQ2RhdGFTZWN0aW9uKHBhcnNlciwgZW5jLCAmbmV4dCwgZW5kLCBuZXh0UHRyLCBoYXZlTW9yZSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCiAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgZWxzZSBpZiAoIW5leHQpIHsKLSAgICAgICAgICBwcm9jZXNzb3IgPSBjZGF0YVNlY3Rpb25Qcm9jZXNzb3I7CisgICAgICAgICAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IGNkYXRhU2VjdGlvblByb2Nlc3NvcjsKICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICB9CiAgICAgICB9CkBAIC0yNjU1LDE5ICszMDUxLDE5IEBACiAgICAgICAgICpuZXh0UHRyID0gczsKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgICAgfQotICAgICAgaWYgKGNoYXJhY3RlckRhdGFIYW5kbGVyKSB7CisgICAgICBpZiAocGFyc2VyLT5tX2NoYXJhY3RlckRhdGFIYW5kbGVyKSB7CiAgICAgICAgIGlmIChNVVNUX0NPTlZFUlQoZW5jLCBzKSkgewotICAgICAgICAgIElDSEFSICpkYXRhUHRyID0gKElDSEFSICopZGF0YUJ1ZjsKLSAgICAgICAgICBYbWxDb252ZXJ0KGVuYywgJnMsIGVuZCwgJmRhdGFQdHIsIChJQ0hBUiAqKWRhdGFCdWZFbmQpOwotICAgICAgICAgIGNoYXJhY3RlckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsIGRhdGFCdWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoZGF0YVB0ciAtIChJQ0hBUiAqKWRhdGFCdWYpKTsKKyAgICAgICAgICBJQ0hBUiAqZGF0YVB0ciA9IChJQ0hBUiAqKXBhcnNlci0+bV9kYXRhQnVmOworICAgICAgICAgIFhtbENvbnZlcnQoZW5jLCAmcywgZW5kLCAmZGF0YVB0ciwgKElDSEFSICopcGFyc2VyLT5tX2RhdGFCdWZFbmQpOworICAgICAgICAgIHBhcnNlci0+bV9jaGFyYWN0ZXJEYXRhSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywgcGFyc2VyLT5tX2RhdGFCdWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoZGF0YVB0ciAtIChJQ0hBUiAqKXBhcnNlci0+bV9kYXRhQnVmKSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQotICAgICAgICAgIGNoYXJhY3RlckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsCisgICAgICAgICAgcGFyc2VyLT5tX2NoYXJhY3RlckRhdGFIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChYTUxfQ2hhciAqKXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKFhNTF9DaGFyICopZW5kIC0gKFhNTF9DaGFyICopcykpOwogICAgICAgfQotICAgICAgZWxzZSBpZiAoZGVmYXVsdEhhbmRsZXIpCisgICAgICBlbHNlIGlmIChwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIpCiAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIGVuZCk7CiAgICAgICAvKiBXZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgZmluYWwgYnVmZmVyLCBzaG91bGQgd2UgY2hlY2sgZm9yCiAgICAgICAgICBYTUxfU1VTUEVOREVELCBYTUxfRklOSVNIRUQ/CkBAIC0yNjc2LDcgKzMwNzIsNyBAQAogICAgICAgICAqZXZlbnRQUCA9IGVuZDsKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19FTEVNRU5UUzsKICAgICAgIH0KLSAgICAgIGlmICh0YWdMZXZlbCAhPSBzdGFydFRhZ0xldmVsKSB7CisgICAgICBpZiAocGFyc2VyLT5tX3RhZ0xldmVsICE9IHN0YXJ0VGFnTGV2ZWwpIHsKICAgICAgICAgKmV2ZW50UFAgPSBlbmQ7CiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfQVNZTkNfRU5USVRZOwogICAgICAgfQpAQCAtMjY4NCwyNiArMzA4MCwyNiBAQAogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgIGNhc2UgWE1MX1RPS19EQVRBX0NIQVJTOgogICAgICAgewotICAgICAgICBYTUxfQ2hhcmFjdGVyRGF0YUhhbmRsZXIgY2hhckRhdGFIYW5kbGVyID0gY2hhcmFjdGVyRGF0YUhhbmRsZXI7CisgICAgICAgIFhNTF9DaGFyYWN0ZXJEYXRhSGFuZGxlciBjaGFyRGF0YUhhbmRsZXIgPSBwYXJzZXItPm1fY2hhcmFjdGVyRGF0YUhhbmRsZXI7CiAgICAgICAgIGlmIChjaGFyRGF0YUhhbmRsZXIpIHsKICAgICAgICAgICBpZiAoTVVTVF9DT05WRVJUKGVuYywgcykpIHsKICAgICAgICAgICAgIGZvciAoOzspIHsKLSAgICAgICAgICAgICAgSUNIQVIgKmRhdGFQdHIgPSAoSUNIQVIgKilkYXRhQnVmOwotICAgICAgICAgICAgICBYbWxDb252ZXJ0KGVuYywgJnMsIG5leHQsICZkYXRhUHRyLCAoSUNIQVIgKilkYXRhQnVmRW5kKTsKKyAgICAgICAgICAgICAgSUNIQVIgKmRhdGFQdHIgPSAoSUNIQVIgKilwYXJzZXItPm1fZGF0YUJ1ZjsKKyAgICAgICAgICAgICAgY29uc3QgZW51bSBYTUxfQ29udmVydF9SZXN1bHQgY29udmVydF9yZXMgPSBYbWxDb252ZXJ0KGVuYywgJnMsIG5leHQsICZkYXRhUHRyLCAoSUNIQVIgKilwYXJzZXItPm1fZGF0YUJ1ZkVuZCk7CiAgICAgICAgICAgICAgICpldmVudEVuZFBQID0gczsKLSAgICAgICAgICAgICAgY2hhckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsIGRhdGFCdWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KShkYXRhUHRyIC0gKElDSEFSICopZGF0YUJ1ZikpOwotICAgICAgICAgICAgICBpZiAocyA9PSBuZXh0KQorICAgICAgICAgICAgICBjaGFyRGF0YUhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIHBhcnNlci0+bV9kYXRhQnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoZGF0YVB0ciAtIChJQ0hBUiAqKXBhcnNlci0+bV9kYXRhQnVmKSk7CisgICAgICAgICAgICAgIGlmICgoY29udmVydF9yZXMgPT0gWE1MX0NPTlZFUlRfQ09NUExFVEVEKSB8fCAoY29udmVydF9yZXMgPT0gWE1MX0NPTlZFUlRfSU5QVVRfSU5DT01QTEVURSkpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICpldmVudFBQID0gczsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9CiAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgY2hhckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsCisgICAgICAgICAgICBjaGFyRGF0YUhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFhNTF9DaGFyICopcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KSgoWE1MX0NoYXIgKiluZXh0IC0gKFhNTF9DaGFyICopcykpOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQorICAgICAgICBlbHNlIGlmIChwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIpCiAgICAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTI3MTYsMTIgKzMxMTIsMjAgQEAKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgaWYgKGRlZmF1bHRIYW5kbGVyKQorICAgICAgLyogQWxsIG9mIHRoZSB0b2tlbnMgcHJvZHVjZWQgYnkgWG1sQ29udGVudFRvaygpIGhhdmUgdGhlaXIgb3duCisgICAgICAgKiBleHBsaWNpdCBjYXNlcywgc28gdGhpcyBkZWZhdWx0IGlzIG5vdCBzdHJpY3RseSBuZWNlc3NhcnkuCisgICAgICAgKiBIb3dldmVyIGl0IGlzIGEgdXNlZnVsIHNhZmV0eSBuZXQsIHNvIHdlIHJldGFpbiB0aGUgY29kZSBhbmQKKyAgICAgICAqIHNpbXBseSBleGNsdWRlIGl0IGZyb20gdGhlIGNvdmVyYWdlIHRlc3RzLgorICAgICAgICoKKyAgICAgICAqIExDT1ZfRVhDTF9TVEFSVAorICAgICAgICovCisgICAgICBpZiAocGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKQogICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKICAgICAgIGJyZWFrOworICAgICAgLyogTENPVl9FWENMX1NUT1AgKi8KICAgICB9CiAgICAgKmV2ZW50UFAgPSBzID0gbmV4dDsKLSAgICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKKyAgICBzd2l0Y2ggKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcpIHsKICAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgICAqbmV4dFB0ciA9IG5leHQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CkBAIC0yNzMzLDYgKzMxMzcsMjkgQEAKICAgLyogbm90IHJlYWNoZWQgKi8KIH0KIAorLyogVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjYWxsIGZyZWUoKSBvbiB0aGUgYWxsb2NhdGVkIG1lbW9yeSwgbWVyZWx5CisgKiBtb3ZpbmcgaXQgdG8gdGhlIHBhcnNlcidzIG1fZnJlZUJpbmRpbmdMaXN0IHdoZXJlIGl0IGNhbiBiZSBmcmVlZCBvcgorICogcmV1c2VkIGFzIGFwcHJvcHJpYXRlLgorICovCitzdGF0aWMgdm9pZAorZnJlZUJpbmRpbmdzKFhNTF9QYXJzZXIgcGFyc2VyLCBCSU5ESU5HICpiaW5kaW5ncykKK3sKKyAgd2hpbGUgKGJpbmRpbmdzKSB7CisgICAgQklORElORyAqYiA9IGJpbmRpbmdzOworCisgICAgLyogbV9zdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyIHdpbGwgaGF2ZSBiZWVuIGNhbGxlZCBmb3IgdGhpcworICAgICAqIGJpbmRpbmcgaW4gYWRkQmluZGluZ3MoKSwgc28gY2FsbCB0aGUgZW5kIGhhbmRsZXIgbm93LgorICAgICAqLworICAgIGlmIChwYXJzZXItPm1fZW5kTmFtZXNwYWNlRGVjbEhhbmRsZXIpCisgICAgICAgIHBhcnNlci0+bV9lbmROYW1lc3BhY2VEZWNsSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywgYi0+cHJlZml4LT5uYW1lKTsKKworICAgIGJpbmRpbmdzID0gYmluZGluZ3MtPm5leHRUYWdCaW5kaW5nOworICAgIGItPm5leHRUYWdCaW5kaW5nID0gcGFyc2VyLT5tX2ZyZWVCaW5kaW5nTGlzdDsKKyAgICBwYXJzZXItPm1fZnJlZUJpbmRpbmdMaXN0ID0gYjsKKyAgICBiLT5wcmVmaXgtPmJpbmRpbmcgPSBiLT5wcmV2UHJlZml4QmluZGluZzsKKyAgfQorfQorCiAvKiBQcmVjb25kaXRpb246IGFsbCBhcmd1bWVudHMgbXVzdCBiZSBub24tTlVMTDsKICAgIFB1cnBvc2U6CiAgICAtIG5vcm1hbGl6ZSBhdHRyaWJ1dGVzCkBAIC0yNzQ4LDcgKzMxNzUsNyBAQAogICAgICAgICAgIGNvbnN0IGNoYXIgKmF0dFN0ciwgVEFHX05BTUUgKnRhZ05hbWVQdHIsCiAgICAgICAgICAgQklORElORyAqKmJpbmRpbmdzUHRyKQogewotICBEVEQgKiBjb25zdCBkdGQgPSBfZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KKyAgRFREICogY29uc3QgZHRkID0gcGFyc2VyLT5tX2R0ZDsgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCiAgIEVMRU1FTlRfVFlQRSAqZWxlbWVudFR5cGU7CiAgIGludCBuRGVmYXVsdEF0dHM7CiAgIGNvbnN0IFhNTF9DaGFyICoqYXBwQXR0czsgICAvKiB0aGUgYXR0cmlidXRlIGxpc3QgZm9yIHRoZSBhcHBsaWNhdGlvbiAqLwpAQCAtMjc3MSwzOSArMzE5OCw0MyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoRUxFTUVOVF9UWVBFKSk7CiAgICAgaWYgKCFlbGVtZW50VHlwZSkKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgIGlmIChucyAmJiAhc2V0RWxlbWVudFR5cGVQcmVmaXgocGFyc2VyLCBlbGVtZW50VHlwZSkpCisgICAgaWYgKHBhcnNlci0+bV9ucyAmJiAhc2V0RWxlbWVudFR5cGVQcmVmaXgocGFyc2VyLCBlbGVtZW50VHlwZSkpCiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgfQogICBuRGVmYXVsdEF0dHMgPSBlbGVtZW50VHlwZS0+bkRlZmF1bHRBdHRzOwogCiAgIC8qIGdldCB0aGUgYXR0cmlidXRlcyBmcm9tIHRoZSB0b2tlbml6ZXIgKi8KLSAgbiA9IFhtbEdldEF0dHJpYnV0ZXMoZW5jLCBhdHRTdHIsIGF0dHNTaXplLCBhdHRzKTsKLSAgaWYgKG4gKyBuRGVmYXVsdEF0dHMgPiBhdHRzU2l6ZSkgewotICAgIGludCBvbGRBdHRzU2l6ZSA9IGF0dHNTaXplOworICBuID0gWG1sR2V0QXR0cmlidXRlcyhlbmMsIGF0dFN0ciwgcGFyc2VyLT5tX2F0dHNTaXplLCBwYXJzZXItPm1fYXR0cyk7CisgIGlmIChuICsgbkRlZmF1bHRBdHRzID4gcGFyc2VyLT5tX2F0dHNTaXplKSB7CisgICAgaW50IG9sZEF0dHNTaXplID0gcGFyc2VyLT5tX2F0dHNTaXplOwogICAgIEFUVFJJQlVURSAqdGVtcDsKICNpZmRlZiBYTUxfQVRUUl9JTkZPCiAgICAgWE1MX0F0dHJJbmZvICp0ZW1wMjsKICNlbmRpZgotICAgIGF0dHNTaXplID0gbiArIG5EZWZhdWx0QXR0cyArIElOSVRfQVRUU19TSVpFOwotICAgIHRlbXAgPSAoQVRUUklCVVRFICopUkVBTExPQygodm9pZCAqKWF0dHMsIGF0dHNTaXplICogc2l6ZW9mKEFUVFJJQlVURSkpOwotICAgIGlmICh0ZW1wID09IE5VTEwpCisgICAgcGFyc2VyLT5tX2F0dHNTaXplID0gbiArIG5EZWZhdWx0QXR0cyArIElOSVRfQVRUU19TSVpFOworICAgIHRlbXAgPSAoQVRUUklCVVRFICopUkVBTExPQyhwYXJzZXIsICh2b2lkICopcGFyc2VyLT5tX2F0dHMsIHBhcnNlci0+bV9hdHRzU2l6ZSAqIHNpemVvZihBVFRSSUJVVEUpKTsKKyAgICBpZiAodGVtcCA9PSBOVUxMKSB7CisgICAgICBwYXJzZXItPm1fYXR0c1NpemUgPSBvbGRBdHRzU2l6ZTsKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgIGF0dHMgPSB0ZW1wOworICAgIH0KKyAgICBwYXJzZXItPm1fYXR0cyA9IHRlbXA7CiAjaWZkZWYgWE1MX0FUVFJfSU5GTwotICAgIHRlbXAyID0gKFhNTF9BdHRySW5mbyAqKVJFQUxMT0MoKHZvaWQgKilhdHRJbmZvLCBhdHRzU2l6ZSAqIHNpemVvZihYTUxfQXR0ckluZm8pKTsKLSAgICBpZiAodGVtcDIgPT0gTlVMTCkKKyAgICB0ZW1wMiA9IChYTUxfQXR0ckluZm8gKilSRUFMTE9DKHBhcnNlciwgKHZvaWQgKilwYXJzZXItPm1fYXR0SW5mbywgcGFyc2VyLT5tX2F0dHNTaXplICogc2l6ZW9mKFhNTF9BdHRySW5mbykpOworICAgIGlmICh0ZW1wMiA9PSBOVUxMKSB7CisgICAgICBwYXJzZXItPm1fYXR0c1NpemUgPSBvbGRBdHRzU2l6ZTsKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgIGF0dEluZm8gPSB0ZW1wMjsKKyAgICB9CisgICAgcGFyc2VyLT5tX2F0dEluZm8gPSB0ZW1wMjsKICNlbmRpZgogICAgIGlmIChuID4gb2xkQXR0c1NpemUpCi0gICAgICBYbWxHZXRBdHRyaWJ1dGVzKGVuYywgYXR0U3RyLCBuLCBhdHRzKTsKKyAgICAgIFhtbEdldEF0dHJpYnV0ZXMoZW5jLCBhdHRTdHIsIG4sIHBhcnNlci0+bV9hdHRzKTsKICAgfQogCi0gIGFwcEF0dHMgPSAoY29uc3QgWE1MX0NoYXIgKiopYXR0czsKKyAgYXBwQXR0cyA9IChjb25zdCBYTUxfQ2hhciAqKilwYXJzZXItPm1fYXR0czsKICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgIEFUVFJJQlVURSAqY3VyckF0dCA9ICZhdHRzW2ldOworICAgIEFUVFJJQlVURSAqY3VyckF0dCA9ICZwYXJzZXItPm1fYXR0c1tpXTsKICNpZmRlZiBYTUxfQVRUUl9JTkZPCi0gICAgWE1MX0F0dHJJbmZvICpjdXJyQXR0SW5mbyA9ICZhdHRJbmZvW2ldOworICAgIFhNTF9BdHRySW5mbyAqY3VyckF0dEluZm8gPSAmcGFyc2VyLT5tX2F0dEluZm9baV07CiAjZW5kaWYKICAgICAvKiBhZGQgdGhlIG5hbWUgYW5kIHZhbHVlIHRvIHRoZSBhdHRyaWJ1dGUgbGlzdCAqLwogICAgIEFUVFJJQlVURV9JRCAqYXR0SWQgPSBnZXRBdHRyaWJ1dGVJZChwYXJzZXIsIGVuYywgY3VyckF0dC0+bmFtZSwKQEAgLTI4MTIsMjUgKzMyNDMsMjUgQEAKICAgICBpZiAoIWF0dElkKQogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAjaWZkZWYgWE1MX0FUVFJfSU5GTwotICAgIGN1cnJBdHRJbmZvLT5uYW1lU3RhcnQgPSBwYXJzZUVuZEJ5dGVJbmRleCAtIChwYXJzZUVuZFB0ciAtIGN1cnJBdHQtPm5hbWUpOworICAgIGN1cnJBdHRJbmZvLT5uYW1lU3RhcnQgPSBwYXJzZXItPm1fcGFyc2VFbmRCeXRlSW5kZXggLSAocGFyc2VyLT5tX3BhcnNlRW5kUHRyIC0gY3VyckF0dC0+bmFtZSk7CiAgICAgY3VyckF0dEluZm8tPm5hbWVFbmQgPSBjdXJyQXR0SW5mby0+bmFtZVN0YXJ0ICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhtbE5hbWVMZW5ndGgoZW5jLCBjdXJyQXR0LT5uYW1lKTsKLSAgICBjdXJyQXR0SW5mby0+dmFsdWVTdGFydCA9IHBhcnNlRW5kQnl0ZUluZGV4IC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFyc2VFbmRQdHIgLSBjdXJyQXR0LT52YWx1ZVB0cik7Ci0gICAgY3VyckF0dEluZm8tPnZhbHVlRW5kID0gcGFyc2VFbmRCeXRlSW5kZXggLSAocGFyc2VFbmRQdHIgLSBjdXJyQXR0LT52YWx1ZUVuZCk7CisgICAgY3VyckF0dEluZm8tPnZhbHVlU3RhcnQgPSBwYXJzZXItPm1fcGFyc2VFbmRCeXRlSW5kZXggLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYXJzZXItPm1fcGFyc2VFbmRQdHIgLSBjdXJyQXR0LT52YWx1ZVB0cik7CisgICAgY3VyckF0dEluZm8tPnZhbHVlRW5kID0gcGFyc2VyLT5tX3BhcnNlRW5kQnl0ZUluZGV4IC0gKHBhcnNlci0+bV9wYXJzZUVuZFB0ciAtIGN1cnJBdHQtPnZhbHVlRW5kKTsKICNlbmRpZgogICAgIC8qIERldGVjdCBkdXBsaWNhdGUgYXR0cmlidXRlcyBieSB0aGVpciBRTmFtZXMuIFRoaXMgZG9lcyBub3Qgd29yayB3aGVuCiAgICAgICAgbmFtZXNwYWNlIHByb2Nlc3NpbmcgaXMgdHVybmVkIG9uIGFuZCBkaWZmZXJlbnQgcHJlZml4ZXMgZm9yIHRoZSBzYW1lCiAgICAgICAgbmFtZXNwYWNlIGFyZSB1c2VkLiBGb3IgdGhpcyBjYXNlIHdlIGhhdmUgYSBjaGVjayBmdXJ0aGVyIGRvd24uCiAgICAgKi8KICAgICBpZiAoKGF0dElkLT5uYW1lKVstMV0pIHsKLSAgICAgIGlmIChlbmMgPT0gZW5jb2RpbmcpCi0gICAgICAgIGV2ZW50UHRyID0gYXR0c1tpXS5uYW1lOworICAgICAgaWYgKGVuYyA9PSBwYXJzZXItPm1fZW5jb2RpbmcpCisgICAgICAgIHBhcnNlci0+bV9ldmVudFB0ciA9IHBhcnNlci0+bV9hdHRzW2ldLm5hbWU7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX0RVUExJQ0FURV9BVFRSSUJVVEU7CiAgICAgfQogICAgIChhdHRJZC0+bmFtZSlbLTFdID0gMTsKICAgICBhcHBBdHRzW2F0dEluZGV4KytdID0gYXR0SWQtPm5hbWU7Ci0gICAgaWYgKCFhdHRzW2ldLm5vcm1hbGl6ZWQpIHsKKyAgICBpZiAoIXBhcnNlci0+bV9hdHRzW2ldLm5vcm1hbGl6ZWQpIHsKICAgICAgIGVudW0gWE1MX0Vycm9yIHJlc3VsdDsKICAgICAgIFhNTF9Cb29sIGlzQ2RhdGEgPSBYTUxfVFJVRTsKIApAQCAtMjg0NywyMCArMzI3OCwyMCBAQAogCiAgICAgICAvKiBub3JtYWxpemUgdGhlIGF0dHJpYnV0ZSB2YWx1ZSAqLwogICAgICAgcmVzdWx0ID0gc3RvcmVBdHRyaWJ1dGVWYWx1ZShwYXJzZXIsIGVuYywgaXNDZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0c1tpXS52YWx1ZVB0ciwgYXR0c1tpXS52YWx1ZUVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRlbXBQb29sKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2F0dHNbaV0udmFsdWVQdHIsIHBhcnNlci0+bV9hdHRzW2ldLnZhbHVlRW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcGFyc2VyLT5tX3RlbXBQb29sKTsKICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICBhcHBBdHRzW2F0dEluZGV4XSA9IHBvb2xTdGFydCgmdGVtcFBvb2wpOwotICAgICAgcG9vbEZpbmlzaCgmdGVtcFBvb2wpOworICAgICAgYXBwQXR0c1thdHRJbmRleF0gPSBwb29sU3RhcnQoJnBhcnNlci0+bV90ZW1wUG9vbCk7CisgICAgICBwb29sRmluaXNoKCZwYXJzZXItPm1fdGVtcFBvb2wpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgIC8qIHRoZSB2YWx1ZSBkaWQgbm90IG5lZWQgbm9ybWFsaXppbmcgKi8KLSAgICAgIGFwcEF0dHNbYXR0SW5kZXhdID0gcG9vbFN0b3JlU3RyaW5nKCZ0ZW1wUG9vbCwgZW5jLCBhdHRzW2ldLnZhbHVlUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0c1tpXS52YWx1ZUVuZCk7CisgICAgICBhcHBBdHRzW2F0dEluZGV4XSA9IHBvb2xTdG9yZVN0cmluZygmcGFyc2VyLT5tX3RlbXBQb29sLCBlbmMsIHBhcnNlci0+bV9hdHRzW2ldLnZhbHVlUHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2F0dHNbaV0udmFsdWVFbmQpOwogICAgICAgaWYgKGFwcEF0dHNbYXR0SW5kZXhdID09IDApCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgcG9vbEZpbmlzaCgmdGVtcFBvb2wpOworICAgICAgcG9vbEZpbmlzaCgmcGFyc2VyLT5tX3RlbXBQb29sKTsKICAgICB9CiAgICAgLyogaGFuZGxlIHByZWZpeGVkIGF0dHJpYnV0ZSBuYW1lcyAqLwogICAgIGlmIChhdHRJZC0+cHJlZml4KSB7CkBAIC0yODg0LDE2ICszMzE1LDE2IEBACiAgIH0KIAogICAvKiBzZXQtdXAgZm9yIFhNTF9HZXRTcGVjaWZpZWRBdHRyaWJ1dGVDb3VudCBhbmQgWE1MX0dldElkQXR0cmlidXRlSW5kZXggKi8KLSAgblNwZWNpZmllZEF0dHMgPSBhdHRJbmRleDsKKyAgcGFyc2VyLT5tX25TcGVjaWZpZWRBdHRzID0gYXR0SW5kZXg7CiAgIGlmIChlbGVtZW50VHlwZS0+aWRBdHQgJiYgKGVsZW1lbnRUeXBlLT5pZEF0dC0+bmFtZSlbLTFdKSB7CiAgICAgZm9yIChpID0gMDsgaSA8IGF0dEluZGV4OyBpICs9IDIpCiAgICAgICBpZiAoYXBwQXR0c1tpXSA9PSBlbGVtZW50VHlwZS0+aWRBdHQtPm5hbWUpIHsKLSAgICAgICAgaWRBdHRJbmRleCA9IGk7CisgICAgICAgIHBhcnNlci0+bV9pZEF0dEluZGV4ID0gaTsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgIH0KICAgZWxzZQotICAgIGlkQXR0SW5kZXggPSAtMTsKKyAgICBwYXJzZXItPm1faWRBdHRJbmRleCA9IC0xOwogCiAgIC8qIGRvIGF0dHJpYnV0ZSBkZWZhdWx0aW5nICovCiAgIGZvciAoaSA9IDA7IGkgPCBuRGVmYXVsdEF0dHM7IGkrKykgewpAQCAtMjkyNywyOSArMzM1OCwzMyBAQAogICBpID0gMDsKICAgaWYgKG5QcmVmaXhlcykgewogICAgIGludCBqOyAgLyogaGFzaCB0YWJsZSBpbmRleCAqLwotICAgIHVuc2lnbmVkIGxvbmcgdmVyc2lvbiA9IG5zQXR0c1ZlcnNpb247Ci0gICAgaW50IG5zQXR0c1NpemUgPSAoaW50KTEgPDwgbnNBdHRzUG93ZXI7CisgICAgdW5zaWduZWQgbG9uZyB2ZXJzaW9uID0gcGFyc2VyLT5tX25zQXR0c1ZlcnNpb247CisgICAgaW50IG5zQXR0c1NpemUgPSAoaW50KTEgPDwgcGFyc2VyLT5tX25zQXR0c1Bvd2VyOworICAgIHVuc2lnbmVkIGNoYXIgb2xkTnNBdHRzUG93ZXIgPSBwYXJzZXItPm1fbnNBdHRzUG93ZXI7CiAgICAgLyogc2l6ZSBvZiBoYXNoIHRhYmxlIG11c3QgYmUgYXQgbGVhc3QgMiAqICgjIG9mIHByZWZpeGVkIGF0dHJpYnV0ZXMpICovCi0gICAgaWYgKChuUHJlZml4ZXMgPDwgMSkgPj4gbnNBdHRzUG93ZXIpIHsgIC8qIHRydWUgZm9yIG5zQXR0c1Bvd2VyID0gMCAqLworICAgIGlmICgoblByZWZpeGVzIDw8IDEpID4+IHBhcnNlci0+bV9uc0F0dHNQb3dlcikgeyAgLyogdHJ1ZSBmb3IgbV9uc0F0dHNQb3dlciA9IDAgKi8KICAgICAgIE5TX0FUVCAqdGVtcDsKICAgICAgIC8qIGhhc2ggdGFibGUgc2l6ZSBtdXN0IGFsc28gYmUgYSBwb3dlciBvZiAyIGFuZCA+PSA4ICovCi0gICAgICB3aGlsZSAoblByZWZpeGVzID4+IG5zQXR0c1Bvd2VyKyspOwotICAgICAgaWYgKG5zQXR0c1Bvd2VyIDwgMykKLSAgICAgICAgbnNBdHRzUG93ZXIgPSAzOwotICAgICAgbnNBdHRzU2l6ZSA9IChpbnQpMSA8PCBuc0F0dHNQb3dlcjsKLSAgICAgIHRlbXAgPSAoTlNfQVRUICopUkVBTExPQyhuc0F0dHMsIG5zQXR0c1NpemUgKiBzaXplb2YoTlNfQVRUKSk7Ci0gICAgICBpZiAoIXRlbXApCisgICAgICB3aGlsZSAoblByZWZpeGVzID4+IHBhcnNlci0+bV9uc0F0dHNQb3dlcisrKTsKKyAgICAgIGlmIChwYXJzZXItPm1fbnNBdHRzUG93ZXIgPCAzKQorICAgICAgICBwYXJzZXItPm1fbnNBdHRzUG93ZXIgPSAzOworICAgICAgbnNBdHRzU2l6ZSA9IChpbnQpMSA8PCBwYXJzZXItPm1fbnNBdHRzUG93ZXI7CisgICAgICB0ZW1wID0gKE5TX0FUVCAqKVJFQUxMT0MocGFyc2VyLCBwYXJzZXItPm1fbnNBdHRzLCBuc0F0dHNTaXplICogc2l6ZW9mKE5TX0FUVCkpOworICAgICAgaWYgKCF0ZW1wKSB7CisgICAgICAgIC8qIFJlc3RvcmUgYWN0dWFsIHNpemUgb2YgbWVtb3J5IGluIG1fbnNBdHRzICovCisgICAgICAgIHBhcnNlci0+bV9uc0F0dHNQb3dlciA9IG9sZE5zQXR0c1Bvd2VyOwogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKLSAgICAgIG5zQXR0cyA9IHRlbXA7Ci0gICAgICB2ZXJzaW9uID0gMDsgIC8qIGZvcmNlIHJlLWluaXRpYWxpemF0aW9uIG9mIG5zQXR0cyBoYXNoIHRhYmxlICovCisgICAgICB9CisgICAgICBwYXJzZXItPm1fbnNBdHRzID0gdGVtcDsKKyAgICAgIHZlcnNpb24gPSAwOyAgLyogZm9yY2UgcmUtaW5pdGlhbGl6YXRpb24gb2YgbV9uc0F0dHMgaGFzaCB0YWJsZSAqLwogICAgIH0KLSAgICAvKiB1c2luZyBhIHZlcnNpb24gZmxhZyBzYXZlcyB1cyBmcm9tIGluaXRpYWxpemluZyBuc0F0dHMgZXZlcnkgdGltZSAqLworICAgIC8qIHVzaW5nIGEgdmVyc2lvbiBmbGFnIHNhdmVzIHVzIGZyb20gaW5pdGlhbGl6aW5nIG1fbnNBdHRzIGV2ZXJ5IHRpbWUgKi8KICAgICBpZiAoIXZlcnNpb24pIHsgIC8qIGluaXRpYWxpemUgdmVyc2lvbiBmbGFncyB3aGVuIHZlcnNpb24gd3JhcHMgYXJvdW5kICovCiAgICAgICB2ZXJzaW9uID0gSU5JVF9BVFRTX1ZFUlNJT047CiAgICAgICBmb3IgKGogPSBuc0F0dHNTaXplOyBqICE9IDA7ICkKLSAgICAgICAgbnNBdHRzWy0tal0udmVyc2lvbiA9IHZlcnNpb247CisgICAgICAgIHBhcnNlci0+bV9uc0F0dHNbLS1qXS52ZXJzaW9uID0gdmVyc2lvbjsKICAgICB9Ci0gICAgbnNBdHRzVmVyc2lvbiA9IC0tdmVyc2lvbjsKKyAgICBwYXJzZXItPm1fbnNBdHRzVmVyc2lvbiA9IC0tdmVyc2lvbjsKIAogICAgIC8qIGV4cGFuZCBwcmVmaXhlZCBuYW1lcyBhbmQgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgKi8KICAgICBmb3IgKDsgaSA8IGF0dEluZGV4OyBpICs9IDIpIHsKQEAgLTI5NTcsNzEgKzMzOTIsOTYgQEAKICAgICAgIGlmIChzWy0xXSA9PSAyKSB7ICAvKiBwcmVmaXhlZCAqLwogICAgICAgICBBVFRSSUJVVEVfSUQgKmlkOwogICAgICAgICBjb25zdCBCSU5ESU5HICpiOwotICAgICAgICB1bnNpZ25lZCBsb25nIHVyaUhhc2ggPSBoYXNoX3NlY3JldF9zYWx0OworICAgICAgICB1bnNpZ25lZCBsb25nIHVyaUhhc2g7CisgICAgICAgIHN0cnVjdCBzaXBoYXNoIHNpcF9zdGF0ZTsKKyAgICAgICAgc3RydWN0IHNpcGtleSBzaXBfa2V5OworCisgICAgICAgIGNvcHlfc2FsdF90b19zaXBrZXkocGFyc2VyLCAmc2lwX2tleSk7CisgICAgICAgIHNpcDI0X2luaXQoJnNpcF9zdGF0ZSwgJnNpcF9rZXkpOworCiAgICAgICAgICgoWE1MX0NoYXIgKilzKVstMV0gPSAwOyAgLyogY2xlYXIgZmxhZyAqLwogICAgICAgICBpZCA9IChBVFRSSUJVVEVfSUQgKilsb29rdXAocGFyc2VyLCAmZHRkLT5hdHRyaWJ1dGVJZHMsIHMsIDApOwotICAgICAgICBpZiAoIWlkIHx8ICFpZC0+cHJlZml4KQotICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOworICAgICAgICBpZiAoIWlkIHx8ICFpZC0+cHJlZml4KSB7CisgICAgICAgICAgLyogVGhpcyBjb2RlIGlzIHdhbGtpbmcgdGhyb3VnaCB0aGUgYXBwQXR0cyBhcnJheSwgZGVhbGluZworICAgICAgICAgICAqIHdpdGggKGluIHRoaXMgY2FzZSkgYSBwcmVmaXhlZCBhdHRyaWJ1dGUgbmFtZS4gIFRvIGJlIGluCisgICAgICAgICAgICogdGhlIGFycmF5LCB0aGUgYXR0cmlidXRlIG11c3QgaGF2ZSBhbHJlYWR5IGJlZW4gYm91bmQsIHNvCisgICAgICAgICAgICogaGFzIHRvIGhhdmUgcGFzc2VkIHRocm91Z2ggdGhlIGhhc2ggdGFibGUgbG9va3VwIG9uY2UKKyAgICAgICAgICAgKiBhbHJlYWR5LiAgVGhhdCBpbXBsaWVzIHRoYXQgYW4gZW50cnkgZm9yIGl0IGFscmVhZHkKKyAgICAgICAgICAgKiBleGlzdHMsIHNvIHRoZSBsb29rdXAgYWJvdmUgd2lsbCByZXR1cm4gYSBwb2ludGVyIHRvCisgICAgICAgICAgICogYWxyZWFkeSBhbGxvY2F0ZWQgbWVtb3J5LiAgVGhlcmUgaXMgbm8gb3Bwb3J0dW5haXR5IGZvcgorICAgICAgICAgICAqIHRoZSBhbGxvY2F0b3IgdG8gZmFpbCwgc28gdGhlIGNvbmRpdGlvbiBhYm92ZSBjYW5ub3QgYmUKKyAgICAgICAgICAgKiBmdWxmaWxsZWQuCisgICAgICAgICAgICoKKyAgICAgICAgICAgKiBTaW5jZSBpdCBpcyBkaWZmaWN1bHQgdG8gYmUgY2VydGFpbiB0aGF0IHRoZSBhYm92ZQorICAgICAgICAgICAqIGFuYWx5c2lzIGlzIGNvbXBsZXRlLCB3ZSByZXRhaW4gdGhlIHRlc3QgYW5kIG1lcmVseQorICAgICAgICAgICAqIHJlbW92ZSB0aGUgY29kZSBmcm9tIGNvdmVyYWdlIHRlc3RzLgorICAgICAgICAgICAqLworICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOyAvKiBMQ09WX0VYQ0xfTElORSAqLworICAgICAgICB9CiAgICAgICAgIGIgPSBpZC0+cHJlZml4LT5iaW5kaW5nOwogICAgICAgICBpZiAoIWIpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9VTkJPVU5EX1BSRUZJWDsKIAotICAgICAgICAvKiBhcyB3ZSBleHBhbmQgdGhlIG5hbWUgd2UgYWxzbyBjYWxjdWxhdGUgaXRzIGhhc2ggdmFsdWUgKi8KICAgICAgICAgZm9yIChqID0gMDsgaiA8IGItPnVyaUxlbjsgaisrKSB7CiAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgYyA9IGItPnVyaVtqXTsKLSAgICAgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgYykpCisgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCBjKSkKICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICAgIHVyaUhhc2ggPSBDSEFSX0hBU0godXJpSGFzaCwgYyk7CiAgICAgICAgIH0KKworICAgICAgICBzaXAyNF91cGRhdGUoJnNpcF9zdGF0ZSwgYi0+dXJpLCBiLT51cmlMZW4gKiBzaXplb2YoWE1MX0NoYXIpKTsKKwogICAgICAgICB3aGlsZSAoKnMrKyAhPSBYTUxfVChBU0NJSV9DT0xPTikpCiAgICAgICAgICAgOworCisgICAgICAgIHNpcDI0X3VwZGF0ZSgmc2lwX3N0YXRlLCBzLCBrZXlsZW4ocykgKiBzaXplb2YoWE1MX0NoYXIpKTsKKwogICAgICAgICBkbyB7ICAvKiBjb3BpZXMgbnVsbCB0ZXJtaW5hdG9yICovCi0gICAgICAgICAgY29uc3QgWE1MX0NoYXIgYyA9ICpzOwotICAgICAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCAqcykpCisgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCAqcykpCiAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKLSAgICAgICAgICB1cmlIYXNoID0gQ0hBUl9IQVNIKHVyaUhhc2gsIGMpOwogICAgICAgICB9IHdoaWxlICgqcysrKTsKIAorICAgICAgICB1cmlIYXNoID0gKHVuc2lnbmVkIGxvbmcpc2lwMjRfZmluYWwoJnNpcF9zdGF0ZSk7CisKICAgICAgICAgeyAvKiBDaGVjayBoYXNoIHRhYmxlIGZvciBkdXBsaWNhdGUgb2YgZXhwYW5kZWQgbmFtZSAodXJpTmFtZSkuCiAgICAgICAgICAgICAgRGVyaXZlZCBmcm9tIGNvZGUgaW4gbG9va3VwKHBhcnNlciwgSEFTSF9UQUJMRSAqdGFibGUsIC4uLikuCiAgICAgICAgICAgKi8KICAgICAgICAgICB1bnNpZ25lZCBjaGFyIHN0ZXAgPSAwOwogICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbWFzayA9IG5zQXR0c1NpemUgLSAxOwogICAgICAgICAgIGogPSB1cmlIYXNoICYgbWFzazsgIC8qIGluZGV4IGludG8gaGFzaCB0YWJsZSAqLwotICAgICAgICAgIHdoaWxlIChuc0F0dHNbal0udmVyc2lvbiA9PSB2ZXJzaW9uKSB7CisgICAgICAgICAgd2hpbGUgKHBhcnNlci0+bV9uc0F0dHNbal0udmVyc2lvbiA9PSB2ZXJzaW9uKSB7CiAgICAgICAgICAgICAvKiBmb3Igc3BlZWQgd2UgY29tcGFyZSBzdG9yZWQgaGFzaCB2YWx1ZXMgZmlyc3QgKi8KLSAgICAgICAgICAgIGlmICh1cmlIYXNoID09IG5zQXR0c1tqXS5oYXNoKSB7Ci0gICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpzMSA9IHBvb2xTdGFydCgmdGVtcFBvb2wpOwotICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqczIgPSBuc0F0dHNbal0udXJpTmFtZTsKKyAgICAgICAgICAgIGlmICh1cmlIYXNoID09IHBhcnNlci0+bV9uc0F0dHNbal0uaGFzaCkgeworICAgICAgICAgICAgICBjb25zdCBYTUxfQ2hhciAqczEgPSBwb29sU3RhcnQoJnBhcnNlci0+bV90ZW1wUG9vbCk7CisgICAgICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpzMiA9IHBhcnNlci0+bV9uc0F0dHNbal0udXJpTmFtZTsKICAgICAgICAgICAgICAgLyogczEgaXMgbnVsbCB0ZXJtaW5hdGVkLCBidXQgbm90IHMyICovCiAgICAgICAgICAgICAgIGZvciAoOyAqczEgPT0gKnMyICYmICpzMSAhPSAwOyBzMSsrLCBzMisrKTsKICAgICAgICAgICAgICAgaWYgKCpzMSA9PSAwKQogICAgICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfRFVQTElDQVRFX0FUVFJJQlVURTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc3RlcCkKLSAgICAgICAgICAgICAgc3RlcCA9IFBST0JFX1NURVAodXJpSGFzaCwgbWFzaywgbnNBdHRzUG93ZXIpOworICAgICAgICAgICAgICBzdGVwID0gUFJPQkVfU1RFUCh1cmlIYXNoLCBtYXNrLCBwYXJzZXItPm1fbnNBdHRzUG93ZXIpOwogICAgICAgICAgICAgaiA8IHN0ZXAgPyAoaiArPSBuc0F0dHNTaXplIC0gc3RlcCkgOiAoaiAtPSBzdGVwKTsKICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobnNfdHJpcGxldHMpIHsgIC8qIGFwcGVuZCBuYW1lc3BhY2Ugc2VwYXJhdG9yIGFuZCBwcmVmaXggKi8KLSAgICAgICAgICB0ZW1wUG9vbC5wdHJbLTFdID0gbmFtZXNwYWNlU2VwYXJhdG9yOworICAgICAgICBpZiAocGFyc2VyLT5tX25zX3RyaXBsZXRzKSB7ICAvKiBhcHBlbmQgbmFtZXNwYWNlIHNlcGFyYXRvciBhbmQgcHJlZml4ICovCisgICAgICAgICAgcGFyc2VyLT5tX3RlbXBQb29sLnB0clstMV0gPSBwYXJzZXItPm1fbmFtZXNwYWNlU2VwYXJhdG9yOwogICAgICAgICAgIHMgPSBiLT5wcmVmaXgtPm5hbWU7CiAgICAgICAgICAgZG8gewotICAgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsICpzKSkKKyAgICAgICAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnBhcnNlci0+bV90ZW1wUG9vbCwgKnMpKQogICAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgICB9IHdoaWxlICgqcysrKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIHN0b3JlIGV4cGFuZGVkIG5hbWUgaW4gYXR0cmlidXRlIGxpc3QgKi8KLSAgICAgICAgcyA9IHBvb2xTdGFydCgmdGVtcFBvb2wpOwotICAgICAgICBwb29sRmluaXNoKCZ0ZW1wUG9vbCk7CisgICAgICAgIHMgPSBwb29sU3RhcnQoJnBhcnNlci0+bV90ZW1wUG9vbCk7CisgICAgICAgIHBvb2xGaW5pc2goJnBhcnNlci0+bV90ZW1wUG9vbCk7CiAgICAgICAgIGFwcEF0dHNbaV0gPSBzOwogCiAgICAgICAgIC8qIGZpbGwgZW1wdHkgc2xvdCB3aXRoIG5ldyB2ZXJzaW9uLCB1cmlOYW1lIGFuZCBoYXNoIHZhbHVlICovCi0gICAgICAgIG5zQXR0c1tqXS52ZXJzaW9uID0gdmVyc2lvbjsKLSAgICAgICAgbnNBdHRzW2pdLmhhc2ggPSB1cmlIYXNoOwotICAgICAgICBuc0F0dHNbal0udXJpTmFtZSA9IHM7CisgICAgICAgIHBhcnNlci0+bV9uc0F0dHNbal0udmVyc2lvbiA9IHZlcnNpb247CisgICAgICAgIHBhcnNlci0+bV9uc0F0dHNbal0uaGFzaCA9IHVyaUhhc2g7CisgICAgICAgIHBhcnNlci0+bV9uc0F0dHNbal0udXJpTmFtZSA9IHM7CiAKICAgICAgICAgaWYgKCEtLW5QcmVmaXhlcykgewogICAgICAgICAgIGkgKz0gMjsKQEAgLTMwMzgsNyArMzQ5OCw3IEBACiAgIGZvciAoYmluZGluZyA9ICpiaW5kaW5nc1B0cjsgYmluZGluZzsgYmluZGluZyA9IGJpbmRpbmctPm5leHRUYWdCaW5kaW5nKQogICAgIGJpbmRpbmctPmF0dElkLT5uYW1lWy0xXSA9IDA7CiAKLSAgaWYgKCFucykKKyAgaWYgKCFwYXJzZXItPm1fbnMpCiAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogCiAgIC8qIGV4cGFuZCB0aGUgZWxlbWVudCB0eXBlIG5hbWUgKi8KQEAgLTMwNTcsNyArMzUxNyw3IEBACiAgIGVsc2UKICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgIHByZWZpeExlbiA9IDA7Ci0gIGlmIChuc190cmlwbGV0cyAmJiBiaW5kaW5nLT5wcmVmaXgtPm5hbWUpIHsKKyAgaWYgKHBhcnNlci0+bV9uc190cmlwbGV0cyAmJiBiaW5kaW5nLT5wcmVmaXgtPm5hbWUpIHsKICAgICBmb3IgKDsgYmluZGluZy0+cHJlZml4LT5uYW1lW3ByZWZpeExlbisrXTspCiAgICAgICA7ICAvKiBwcmVmaXhMZW4gaW5jbHVkZXMgbnVsbCB0ZXJtaW5hdG9yICovCiAgIH0KQEAgLTMwNzAsMjQgKzM1MzAsMjQgQEAKICAgbiA9IGkgKyBiaW5kaW5nLT51cmlMZW4gKyBwcmVmaXhMZW47CiAgIGlmIChuID4gYmluZGluZy0+dXJpQWxsb2MpIHsKICAgICBUQUcgKnA7Ci0gICAgdXJpID0gKFhNTF9DaGFyICopTUFMTE9DKChuICsgRVhQQU5EX1NQQVJFKSAqIHNpemVvZihYTUxfQ2hhcikpOworICAgIHVyaSA9IChYTUxfQ2hhciAqKU1BTExPQyhwYXJzZXIsIChuICsgRVhQQU5EX1NQQVJFKSAqIHNpemVvZihYTUxfQ2hhcikpOwogICAgIGlmICghdXJpKQogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgYmluZGluZy0+dXJpQWxsb2MgPSBuICsgRVhQQU5EX1NQQVJFOwogICAgIG1lbWNweSh1cmksIGJpbmRpbmctPnVyaSwgYmluZGluZy0+dXJpTGVuICogc2l6ZW9mKFhNTF9DaGFyKSk7Ci0gICAgZm9yIChwID0gdGFnU3RhY2s7IHA7IHAgPSBwLT5wYXJlbnQpCisgICAgZm9yIChwID0gcGFyc2VyLT5tX3RhZ1N0YWNrOyBwOyBwID0gcC0+cGFyZW50KQogICAgICAgaWYgKHAtPm5hbWUuc3RyID09IGJpbmRpbmctPnVyaSkKICAgICAgICAgcC0+bmFtZS5zdHIgPSB1cmk7Ci0gICAgRlJFRShiaW5kaW5nLT51cmkpOworICAgIEZSRUUocGFyc2VyLCBiaW5kaW5nLT51cmkpOwogICAgIGJpbmRpbmctPnVyaSA9IHVyaTsKICAgfQotICAvKiBpZiBuYW1lc3BhY2VTZXBhcmF0b3IgIT0gJ1wwJyB0aGVuIHVyaSBpbmNsdWRlcyBpdCBhbHJlYWR5ICovCisgIC8qIGlmIG1fbmFtZXNwYWNlU2VwYXJhdG9yICE9ICdcMCcgdGhlbiB1cmkgaW5jbHVkZXMgaXQgYWxyZWFkeSAqLwogICB1cmkgPSBiaW5kaW5nLT51cmkgKyBiaW5kaW5nLT51cmlMZW47CiAgIG1lbWNweSh1cmksIGxvY2FsUGFydCwgaSAqIHNpemVvZihYTUxfQ2hhcikpOwogICAvKiB3ZSBhbHdheXMgaGF2ZSBhIG5hbWVzcGFjZSBzZXBhcmF0b3IgYmV0d2VlbiBsb2NhbFBhcnQgYW5kIHByZWZpeCAqLwogICBpZiAocHJlZml4TGVuKSB7CiAgICAgdXJpICs9IGkgLSAxOwotICAgICp1cmkgPSBuYW1lc3BhY2VTZXBhcmF0b3I7ICAvKiByZXBsYWNlIG51bGwgdGVybWluYXRvciAqLworICAgICp1cmkgPSBwYXJzZXItPm1fbmFtZXNwYWNlU2VwYXJhdG9yOyAgLyogcmVwbGFjZSBudWxsIHRlcm1pbmF0b3IgKi8KICAgICBtZW1jcHkodXJpICsgMSwgYmluZGluZy0+cHJlZml4LT5uYW1lLCBwcmVmaXhMZW4gKiBzaXplb2YoWE1MX0NoYXIpKTsKICAgfQogICB0YWdOYW1lUHRyLT5zdHIgPSBiaW5kaW5nLT51cmk7CkBAIC0zMTY1LDQ4ICszNjI1LDQ4IEBACiAgIGlmIChpc1hNTE5TKQogICAgIHJldHVybiBYTUxfRVJST1JfUkVTRVJWRURfTkFNRVNQQUNFX1VSSTsKIAotICBpZiAobmFtZXNwYWNlU2VwYXJhdG9yKQorICBpZiAocGFyc2VyLT5tX25hbWVzcGFjZVNlcGFyYXRvcikKICAgICBsZW4rKzsKLSAgaWYgKGZyZWVCaW5kaW5nTGlzdCkgewotICAgIGIgPSBmcmVlQmluZGluZ0xpc3Q7CisgIGlmIChwYXJzZXItPm1fZnJlZUJpbmRpbmdMaXN0KSB7CisgICAgYiA9IHBhcnNlci0+bV9mcmVlQmluZGluZ0xpc3Q7CiAgICAgaWYgKGxlbiA+IGItPnVyaUFsbG9jKSB7Ci0gICAgICBYTUxfQ2hhciAqdGVtcCA9IChYTUxfQ2hhciAqKVJFQUxMT0MoYi0+dXJpLAorICAgICAgWE1MX0NoYXIgKnRlbXAgPSAoWE1MX0NoYXIgKilSRUFMTE9DKHBhcnNlciwgYi0+dXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoWE1MX0NoYXIpICogKGxlbiArIEVYUEFORF9TUEFSRSkpOwogICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICBiLT51cmkgPSB0ZW1wOwogICAgICAgYi0+dXJpQWxsb2MgPSBsZW4gKyBFWFBBTkRfU1BBUkU7CiAgICAgfQotICAgIGZyZWVCaW5kaW5nTGlzdCA9IGItPm5leHRUYWdCaW5kaW5nOworICAgIHBhcnNlci0+bV9mcmVlQmluZGluZ0xpc3QgPSBiLT5uZXh0VGFnQmluZGluZzsKICAgfQogICBlbHNlIHsKLSAgICBiID0gKEJJTkRJTkcgKilNQUxMT0Moc2l6ZW9mKEJJTkRJTkcpKTsKKyAgICBiID0gKEJJTkRJTkcgKilNQUxMT0MocGFyc2VyLCBzaXplb2YoQklORElORykpOwogICAgIGlmICghYikKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgIGItPnVyaSA9IChYTUxfQ2hhciAqKU1BTExPQyhzaXplb2YoWE1MX0NoYXIpICogKGxlbiArIEVYUEFORF9TUEFSRSkpOworICAgIGItPnVyaSA9IChYTUxfQ2hhciAqKU1BTExPQyhwYXJzZXIsIHNpemVvZihYTUxfQ2hhcikgKiAobGVuICsgRVhQQU5EX1NQQVJFKSk7CiAgICAgaWYgKCFiLT51cmkpIHsKLSAgICAgIEZSRUUoYik7CisgICAgICBGUkVFKHBhcnNlciwgYik7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICB9CiAgICAgYi0+dXJpQWxsb2MgPSBsZW4gKyBFWFBBTkRfU1BBUkU7CiAgIH0KICAgYi0+dXJpTGVuID0gbGVuOwogICBtZW1jcHkoYi0+dXJpLCB1cmksIGxlbiAqIHNpemVvZihYTUxfQ2hhcikpOwotICBpZiAobmFtZXNwYWNlU2VwYXJhdG9yKQotICAgIGItPnVyaVtsZW4gLSAxXSA9IG5hbWVzcGFjZVNlcGFyYXRvcjsKKyAgaWYgKHBhcnNlci0+bV9uYW1lc3BhY2VTZXBhcmF0b3IpCisgICAgYi0+dXJpW2xlbiAtIDFdID0gcGFyc2VyLT5tX25hbWVzcGFjZVNlcGFyYXRvcjsKICAgYi0+cHJlZml4ID0gcHJlZml4OwogICBiLT5hdHRJZCA9IGF0dElkOwogICBiLT5wcmV2UHJlZml4QmluZGluZyA9IHByZWZpeC0+YmluZGluZzsKICAgLyogTlVMTCBiaW5kaW5nIHdoZW4gZGVmYXVsdCBuYW1lc3BhY2UgdW5kZWNsYXJlZCAqLwotICBpZiAoKnVyaSA9PSBYTUxfVCgnXDAnKSAmJiBwcmVmaXggPT0gJl9kdGQtPmRlZmF1bHRQcmVmaXgpCisgIGlmICgqdXJpID09IFhNTF9UKCdcMCcpICYmIHByZWZpeCA9PSAmcGFyc2VyLT5tX2R0ZC0+ZGVmYXVsdFByZWZpeCkKICAgICBwcmVmaXgtPmJpbmRpbmcgPSBOVUxMOwogICBlbHNlCiAgICAgcHJlZml4LT5iaW5kaW5nID0gYjsKICAgYi0+bmV4dFRhZ0JpbmRpbmcgPSAqYmluZGluZ3NQdHI7CiAgICpiaW5kaW5nc1B0ciA9IGI7CiAgIC8qIGlmIGF0dElkID09IE5VTEwgdGhlbiB3ZSBhcmUgbm90IHN0YXJ0aW5nIGEgbmFtZXNwYWNlIHNjb3BlICovCi0gIGlmIChhdHRJZCAmJiBzdGFydE5hbWVzcGFjZURlY2xIYW5kbGVyKQotICAgIHN0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXIoaGFuZGxlckFyZywgcHJlZml4LT5uYW1lLAorICBpZiAoYXR0SWQgJiYgcGFyc2VyLT5tX3N0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXIpCisgICAgcGFyc2VyLT5tX3N0YXJ0TmFtZXNwYWNlRGVjbEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIHByZWZpeC0+bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeC0+YmluZGluZyA/IHVyaSA6IDApOwogICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiB9CkBAIC0zMjIwLDE3ICszNjgwLDE3IEBACiAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRQdHIpCiB7Ci0gIGVudW0gWE1MX0Vycm9yIHJlc3VsdCA9IGRvQ2RhdGFTZWN0aW9uKHBhcnNlciwgZW5jb2RpbmcsICZzdGFydCwgZW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQdHIsIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOworICBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBkb0NkYXRhU2VjdGlvbihwYXJzZXIsIHBhcnNlci0+bV9lbmNvZGluZywgJnN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFB0ciwgKFhNTF9Cb29sKSFwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlcik7CiAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCiAgICAgcmV0dXJuIHJlc3VsdDsKICAgaWYgKHN0YXJ0KSB7Ci0gICAgaWYgKHBhcmVudFBhcnNlcikgeyAgLyogd2UgYXJlIHBhcnNpbmcgYW4gZXh0ZXJuYWwgZW50aXR5ICovCi0gICAgICBwcm9jZXNzb3IgPSBleHRlcm5hbEVudGl0eUNvbnRlbnRQcm9jZXNzb3I7CisgICAgaWYgKHBhcnNlci0+bV9wYXJlbnRQYXJzZXIpIHsgIC8qIHdlIGFyZSBwYXJzaW5nIGFuIGV4dGVybmFsIGVudGl0eSAqLworICAgICAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IGV4dGVybmFsRW50aXR5Q29udGVudFByb2Nlc3NvcjsKICAgICAgIHJldHVybiBleHRlcm5hbEVudGl0eUNvbnRlbnRQcm9jZXNzb3IocGFyc2VyLCBzdGFydCwgZW5kLCBlbmRQdHIpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgIHByb2Nlc3NvciA9IGNvbnRlbnRQcm9jZXNzb3I7CisgICAgICBwYXJzZXItPm1fcHJvY2Vzc29yID0gY29udGVudFByb2Nlc3NvcjsKICAgICAgIHJldHVybiBjb250ZW50UHJvY2Vzc29yKHBhcnNlciwgc3RhcnQsIGVuZCwgZW5kUHRyKTsKICAgICB9CiAgIH0KQEAgLTMyNTEsMTQgKzM3MTEsMTQgQEAKICAgY29uc3QgY2hhciAqcyA9ICpzdGFydFB0cjsKICAgY29uc3QgY2hhciAqKmV2ZW50UFA7CiAgIGNvbnN0IGNoYXIgKipldmVudEVuZFBQOwotICBpZiAoZW5jID09IGVuY29kaW5nKSB7Ci0gICAgZXZlbnRQUCA9ICZldmVudFB0cjsKKyAgaWYgKGVuYyA9PSBwYXJzZXItPm1fZW5jb2RpbmcpIHsKKyAgICBldmVudFBQID0gJnBhcnNlci0+bV9ldmVudFB0cjsKICAgICAqZXZlbnRQUCA9IHM7Ci0gICAgZXZlbnRFbmRQUCA9ICZldmVudEVuZFB0cjsKKyAgICBldmVudEVuZFBQID0gJnBhcnNlci0+bV9ldmVudEVuZFB0cjsKICAgfQogICBlbHNlIHsKLSAgICBldmVudFBQID0gJihvcGVuSW50ZXJuYWxFbnRpdGllcy0+aW50ZXJuYWxFdmVudFB0cik7Ci0gICAgZXZlbnRFbmRQUCA9ICYob3BlbkludGVybmFsRW50aXRpZXMtPmludGVybmFsRXZlbnRFbmRQdHIpOworICAgIGV2ZW50UFAgPSAmKHBhcnNlci0+bV9vcGVuSW50ZXJuYWxFbnRpdGllcy0+aW50ZXJuYWxFdmVudFB0cik7CisgICAgZXZlbnRFbmRQUCA9ICYocGFyc2VyLT5tX29wZW5JbnRlcm5hbEVudGl0aWVzLT5pbnRlcm5hbEV2ZW50RW5kUHRyKTsKICAgfQogICAqZXZlbnRQUCA9IHM7CiAgICpzdGFydFB0ciA9IE5VTEw7CkBAIC0zMjY5LDUxICszNzI5LDUxIEBACiAgICAgKmV2ZW50RW5kUFAgPSBuZXh0OwogICAgIHN3aXRjaCAodG9rKSB7CiAgICAgY2FzZSBYTUxfVE9LX0NEQVRBX1NFQ1RfQ0xPU0U6Ci0gICAgICBpZiAoZW5kQ2RhdGFTZWN0aW9uSGFuZGxlcikKLSAgICAgICAgZW5kQ2RhdGFTZWN0aW9uSGFuZGxlcihoYW5kbGVyQXJnKTsKKyAgICAgIGlmIChwYXJzZXItPm1fZW5kQ2RhdGFTZWN0aW9uSGFuZGxlcikKKyAgICAgICAgcGFyc2VyLT5tX2VuZENkYXRhU2VjdGlvbkhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcpOwogI2lmIDAKICAgICAgIC8qIHNlZSBjb21tZW50IHVuZGVyIFhNTF9UT0tfQ0RBVEFfU0VDVF9PUEVOICovCi0gICAgICBlbHNlIGlmIChjaGFyYWN0ZXJEYXRhSGFuZGxlcikKLSAgICAgICAgY2hhcmFjdGVyRGF0YUhhbmRsZXIoaGFuZGxlckFyZywgZGF0YUJ1ZiwgMCk7CisgICAgICBlbHNlIGlmIChwYXJzZXItPm1fY2hhcmFjdGVyRGF0YUhhbmRsZXIpCisgICAgICAgIHBhcnNlci0+bV9jaGFyYWN0ZXJEYXRhSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywgcGFyc2VyLT5tX2RhdGFCdWYsIDApOwogI2VuZGlmCi0gICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgIGVsc2UgaWYgKHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcikKICAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7CiAgICAgICAqc3RhcnRQdHIgPSBuZXh0OwogICAgICAgKm5leHRQdHIgPSBuZXh0OwotICAgICAgaWYgKHBzX3BhcnNpbmcgPT0gWE1MX0ZJTklTSEVEKQorICAgICAgaWYgKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcgPT0gWE1MX0ZJTklTSEVEKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX0FCT1JURUQ7CiAgICAgICBlbHNlCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICBjYXNlIFhNTF9UT0tfREFUQV9ORVdMSU5FOgotICAgICAgaWYgKGNoYXJhY3RlckRhdGFIYW5kbGVyKSB7CisgICAgICBpZiAocGFyc2VyLT5tX2NoYXJhY3RlckRhdGFIYW5kbGVyKSB7CiAgICAgICAgIFhNTF9DaGFyIGMgPSAweEE7Ci0gICAgICAgIGNoYXJhY3RlckRhdGFIYW5kbGVyKGhhbmRsZXJBcmcsICZjLCAxKTsKKyAgICAgICAgcGFyc2VyLT5tX2NoYXJhY3RlckRhdGFIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCAmYywgMSk7CiAgICAgICB9Ci0gICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgIGVsc2UgaWYgKHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcikKICAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuYywgcywgbmV4dCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9UT0tfREFUQV9DSEFSUzoKICAgICAgIHsKLSAgICAgICAgWE1MX0NoYXJhY3RlckRhdGFIYW5kbGVyIGNoYXJEYXRhSGFuZGxlciA9IGNoYXJhY3RlckRhdGFIYW5kbGVyOworICAgICAgICBYTUxfQ2hhcmFjdGVyRGF0YUhhbmRsZXIgY2hhckRhdGFIYW5kbGVyID0gcGFyc2VyLT5tX2NoYXJhY3RlckRhdGFIYW5kbGVyOwogICAgICAgICBpZiAoY2hhckRhdGFIYW5kbGVyKSB7CiAgICAgICAgICAgaWYgKE1VU1RfQ09OVkVSVChlbmMsIHMpKSB7CiAgICAgICAgICAgICBmb3IgKDs7KSB7Ci0gICAgICAgICAgICAgIElDSEFSICpkYXRhUHRyID0gKElDSEFSICopZGF0YUJ1ZjsKLSAgICAgICAgICAgICAgWG1sQ29udmVydChlbmMsICZzLCBuZXh0LCAmZGF0YVB0ciwgKElDSEFSICopZGF0YUJ1ZkVuZCk7CisgICAgICAgICAgICAgIElDSEFSICpkYXRhUHRyID0gKElDSEFSICopcGFyc2VyLT5tX2RhdGFCdWY7CisgICAgICAgICAgICAgIGNvbnN0IGVudW0gWE1MX0NvbnZlcnRfUmVzdWx0IGNvbnZlcnRfcmVzID0gWG1sQ29udmVydChlbmMsICZzLCBuZXh0LCAmZGF0YVB0ciwgKElDSEFSICopcGFyc2VyLT5tX2RhdGFCdWZFbmQpOwogICAgICAgICAgICAgICAqZXZlbnRFbmRQUCA9IG5leHQ7Ci0gICAgICAgICAgICAgIGNoYXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLCBkYXRhQnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoZGF0YVB0ciAtIChJQ0hBUiAqKWRhdGFCdWYpKTsKLSAgICAgICAgICAgICAgaWYgKHMgPT0gbmV4dCkKKyAgICAgICAgICAgICAgY2hhckRhdGFIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCBwYXJzZXItPm1fZGF0YUJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKGRhdGFQdHIgLSAoSUNIQVIgKilwYXJzZXItPm1fZGF0YUJ1ZikpOworICAgICAgICAgICAgICBpZiAoKGNvbnZlcnRfcmVzID09IFhNTF9DT05WRVJUX0NPTVBMRVRFRCkgfHwgKGNvbnZlcnRfcmVzID09IFhNTF9DT05WRVJUX0lOUFVUX0lOQ09NUExFVEUpKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAqZXZlbnRQUCA9IHM7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgfQogICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNoYXJEYXRhSGFuZGxlcihoYW5kbGVyQXJnLAorICAgICAgICAgICAgY2hhckRhdGFIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChYTUxfQ2hhciAqKXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludCkoKFhNTF9DaGFyICopbmV4dCAtIChYTUxfQ2hhciAqKXMpKTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgICAgZWxzZSBpZiAocGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKQogICAgICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICAgfQogICAgICAgYnJlYWs7CkBAIC0zMzM0LDEyICszNzk0LDIwIEBACiAgICAgICB9CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX1VOQ0xPU0VEX0NEQVRBX1NFQ1RJT047CiAgICAgZGVmYXVsdDoKKyAgICAgIC8qIEV2ZXJ5IHRva2VuIHJldHVybmVkIGJ5IFhtbENkYXRhU2VjdGlvblRvaygpIGhhcyBpdHMgb3duCisgICAgICAgKiBleHBsaWNpdCBjYXNlLCBzbyB0aGlzIGRlZmF1bHQgY2FzZSB3aWxsIG5ldmVyIGJlIGV4ZWN1dGVkLgorICAgICAgICogV2UgcmV0YWluIGl0IGFzIGEgc2FmZXR5IG5ldCBhbmQgZXhjbHVkZSBpdCBmcm9tIHRoZSBjb3ZlcmFnZQorICAgICAgICogc3RhdGlzdGljcy4KKyAgICAgICAqCisgICAgICAgKiBMQ09WX0VYQ0xfU1RBUlQKKyAgICAgICovCiAgICAgICAqZXZlbnRQUCA9IG5leHQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX1VORVhQRUNURURfU1RBVEU7CisgICAgICAvKiBMQ09WX0VYQ0xfU1RPUCAqLwogICAgIH0KIAogICAgICpldmVudFBQID0gcyA9IG5leHQ7Ci0gICAgc3dpdGNoIChwc19wYXJzaW5nKSB7CisgICAgc3dpdGNoIChwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nKSB7CiAgICAgY2FzZSBYTUxfU1VTUEVOREVEOgogICAgICAgKm5leHRQdHIgPSBuZXh0OwogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwpAQCAtMzM2MiwxMiArMzgzMCwxMiBAQAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiplbmRQdHIpCiB7Ci0gIGVudW0gWE1MX0Vycm9yIHJlc3VsdCA9IGRvSWdub3JlU2VjdGlvbihwYXJzZXIsIGVuY29kaW5nLCAmc3RhcnQsIGVuZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZFB0ciwgKFhNTF9Cb29sKSFwc19maW5hbEJ1ZmZlcik7CisgIGVudW0gWE1MX0Vycm9yIHJlc3VsdCA9IGRvSWdub3JlU2VjdGlvbihwYXJzZXIsIHBhcnNlci0+bV9lbmNvZGluZywgJnN0YXJ0LCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmRQdHIsIChYTUxfQm9vbCkhcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIpOwogICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKQogICAgIHJldHVybiByZXN1bHQ7CiAgIGlmIChzdGFydCkgewotICAgIHByb2Nlc3NvciA9IHByb2xvZ1Byb2Nlc3NvcjsKKyAgICBwYXJzZXItPm1fcHJvY2Vzc29yID0gcHJvbG9nUHJvY2Vzc29yOwogICAgIHJldHVybiBwcm9sb2dQcm9jZXNzb3IocGFyc2VyLCBzdGFydCwgZW5kLCBlbmRQdHIpOwogICB9CiAgIHJldHVybiByZXN1bHQ7CkBAIC0zMzg5LDE0ICszODU3LDI2IEBACiAgIGNvbnN0IGNoYXIgKnMgPSAqc3RhcnRQdHI7CiAgIGNvbnN0IGNoYXIgKipldmVudFBQOwogICBjb25zdCBjaGFyICoqZXZlbnRFbmRQUDsKLSAgaWYgKGVuYyA9PSBlbmNvZGluZykgewotICAgIGV2ZW50UFAgPSAmZXZlbnRQdHI7CisgIGlmIChlbmMgPT0gcGFyc2VyLT5tX2VuY29kaW5nKSB7CisgICAgZXZlbnRQUCA9ICZwYXJzZXItPm1fZXZlbnRQdHI7CiAgICAgKmV2ZW50UFAgPSBzOwotICAgIGV2ZW50RW5kUFAgPSAmZXZlbnRFbmRQdHI7CisgICAgZXZlbnRFbmRQUCA9ICZwYXJzZXItPm1fZXZlbnRFbmRQdHI7CiAgIH0KICAgZWxzZSB7Ci0gICAgZXZlbnRQUCA9ICYob3BlbkludGVybmFsRW50aXRpZXMtPmludGVybmFsRXZlbnRQdHIpOwotICAgIGV2ZW50RW5kUFAgPSAmKG9wZW5JbnRlcm5hbEVudGl0aWVzLT5pbnRlcm5hbEV2ZW50RW5kUHRyKTsKKyAgICAvKiBJdCdzIG5vdCBlbnRpcmVseSBjbGVhciwgYnV0IGl0IHNlZW1zIHRoZSBmb2xsb3dpbmcgdHdvIGxpbmVzCisgICAgICogb2YgY29kZSBjYW5ub3QgYmUgZXhlY3V0ZWQuICBUaGUgb25seSBvY2Nhc2lvbnMgb24gd2hpY2ggJ2VuYycKKyAgICAgKiBpcyBub3QgJ2VuY29kaW5nJyBhcmUgd2hlbiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZAorICAgICAqIGZyb20gdGhlIGludGVybmFsIGVudGl0eSBwcm9jZXNzaW5nLCBhbmQgSUdOT1JFIHNlY3Rpb25zIGFyZSBhbgorICAgICAqIGVycm9yIGluIGludGVybmFsIGVudGl0aWVzLgorICAgICAqCisgICAgICogU2luY2UgaXQgcmVhbGx5IGlzbid0IGNsZWFyIHRoYXQgdGhpcyBpcyB0cnVlLCB3ZSBrZWVwIHRoZSBjb2RlCisgICAgICogYW5kIGp1c3QgcmVtb3ZlIGl0IGZyb20gb3VyIGNvdmVyYWdlIHRlc3RzLgorICAgICAqCisgICAgICogTENPVl9FWENMX1NUQVJUCisgICAgICovCisgICAgZXZlbnRQUCA9ICYocGFyc2VyLT5tX29wZW5JbnRlcm5hbEVudGl0aWVzLT5pbnRlcm5hbEV2ZW50UHRyKTsKKyAgICBldmVudEVuZFBQID0gJihwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMtPmludGVybmFsRXZlbnRFbmRQdHIpOworICAgIC8qIExDT1ZfRVhDTF9TVE9QICovCiAgIH0KICAgKmV2ZW50UFAgPSBzOwogICAqc3RhcnRQdHIgPSBOVUxMOwpAQCAtMzQwNCwxMSArMzg4NCwxMSBAQAogICAqZXZlbnRFbmRQUCA9IG5leHQ7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19JR05PUkVfU0VDVDoKLSAgICBpZiAoZGVmYXVsdEhhbmRsZXIpCisgICAgaWYgKHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcikKICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogICAgICpzdGFydFB0ciA9IG5leHQ7CiAgICAgKm5leHRQdHIgPSBuZXh0OwotICAgIGlmIChwc19wYXJzaW5nID09IFhNTF9GSU5JU0hFRCkKKyAgICBpZiAocGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9PSBYTUxfRklOSVNIRUQpCiAgICAgICByZXR1cm4gWE1MX0VSUk9SX0FCT1JURUQ7CiAgICAgZWxzZQogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwpAQCAtMzQyOSw4ICszOTA5LDE2IEBACiAgICAgfQogICAgIHJldHVybiBYTUxfRVJST1JfU1lOVEFYOyAvKiBYTUxfRVJST1JfVU5DTE9TRURfSUdOT1JFX1NFQ1RJT04gKi8KICAgZGVmYXVsdDoKKyAgICAvKiBBbGwgb2YgdGhlIHRva2VucyB0aGF0IFhtbElnbm9yZVNlY3Rpb25Ub2soKSByZXR1cm5zIGhhdmUKKyAgICAgKiBleHBsaWNpdCBjYXNlcyB0byBoYW5kbGUgdGhlbSwgc28gdGhpcyBkZWZhdWx0IGNhc2UgaXMgbmV2ZXIKKyAgICAgKiBleGVjdXRlZC4gIFdlIGtlZXAgaXQgYXMgYSBzYWZldHkgbmV0IGFueXdheSwgYW5kIHJlbW92ZSBpdAorICAgICAqIGZyb20gb3VyIHRlc3QgY292ZXJhZ2Ugc3RhdGlzdGljcy4KKyAgICAgKgorICAgICAqIExDT1ZfRVhDTF9TVEFSVAorICAgICAqLwogICAgICpldmVudFBQID0gbmV4dDsKICAgICByZXR1cm4gWE1MX0VSUk9SX1VORVhQRUNURURfU1RBVEU7CisgICAgLyogTENPVl9FWENMX1NUT1AgKi8KICAgfQogICAvKiBub3QgcmVhY2hlZCAqLwogfQpAQCAtMzQ0MywyNyArMzkzMSwyOCBAQAogICBjb25zdCBjaGFyICpzOwogI2lmZGVmIFhNTF9VTklDT0RFCiAgIGNoYXIgZW5jb2RpbmdCdWZbMTI4XTsKLSAgaWYgKCFwcm90b2NvbEVuY29kaW5nTmFtZSkKKyAgLyogU2VlIGNvbW1lbnRzIGFib3VudCBgcHJvdG9jbEVuY29kaW5nTmFtZWAgaW4gcGFyc2VySW5pdCgpICovCisgIGlmICghcGFyc2VyLT5tX3Byb3RvY29sRW5jb2RpbmdOYW1lKQogICAgIHMgPSBOVUxMOwogICBlbHNlIHsKICAgICBpbnQgaTsKLSAgICBmb3IgKGkgPSAwOyBwcm90b2NvbEVuY29kaW5nTmFtZVtpXTsgaSsrKSB7CisgICAgZm9yIChpID0gMDsgcGFyc2VyLT5tX3Byb3RvY29sRW5jb2RpbmdOYW1lW2ldOyBpKyspIHsKICAgICAgIGlmIChpID09IHNpemVvZihlbmNvZGluZ0J1ZikgLSAxCi0gICAgICAgICAgfHwgKHByb3RvY29sRW5jb2RpbmdOYW1lW2ldICYgfjB4N2YpICE9IDApIHsKKyAgICAgICAgICB8fCAocGFyc2VyLT5tX3Byb3RvY29sRW5jb2RpbmdOYW1lW2ldICYgfjB4N2YpICE9IDApIHsKICAgICAgICAgZW5jb2RpbmdCdWZbMF0gPSAnXDAnOwogICAgICAgICBicmVhazsKICAgICAgIH0KLSAgICAgIGVuY29kaW5nQnVmW2ldID0gKGNoYXIpcHJvdG9jb2xFbmNvZGluZ05hbWVbaV07CisgICAgICBlbmNvZGluZ0J1ZltpXSA9IChjaGFyKXBhcnNlci0+bV9wcm90b2NvbEVuY29kaW5nTmFtZVtpXTsKICAgICB9CiAgICAgZW5jb2RpbmdCdWZbaV0gPSAnXDAnOwogICAgIHMgPSBlbmNvZGluZ0J1ZjsKICAgfQogI2Vsc2UKLSAgcyA9IHByb3RvY29sRW5jb2RpbmdOYW1lOworICBzID0gcGFyc2VyLT5tX3Byb3RvY29sRW5jb2RpbmdOYW1lOwogI2VuZGlmCi0gIGlmICgobnMgPyBYbWxJbml0RW5jb2RpbmdOUyA6IFhtbEluaXRFbmNvZGluZykoJmluaXRFbmNvZGluZywgJmVuY29kaW5nLCBzKSkKKyAgaWYgKChwYXJzZXItPm1fbnMgPyBYbWxJbml0RW5jb2RpbmdOUyA6IFhtbEluaXRFbmNvZGluZykoJnBhcnNlci0+bV9pbml0RW5jb2RpbmcsICZwYXJzZXItPm1fZW5jb2RpbmcsIHMpKQogICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKLSAgcmV0dXJuIGhhbmRsZVVua25vd25FbmNvZGluZyhwYXJzZXIsIHByb3RvY29sRW5jb2RpbmdOYW1lKTsKKyAgcmV0dXJuIGhhbmRsZVVua25vd25FbmNvZGluZyhwYXJzZXIsIHBhcnNlci0+bV9wcm90b2NvbEVuY29kaW5nTmFtZSk7CiB9CiAKIHN0YXRpYyBlbnVtIFhNTF9FcnJvcgpAQCAtMzQ3NywxMyArMzk2NiwxMyBAQAogICBjb25zdCBjaGFyICp2ZXJzaW9uZW5kOwogICBjb25zdCBYTUxfQ2hhciAqc3RvcmVkdmVyc2lvbiA9IE5VTEw7CiAgIGludCBzdGFuZGFsb25lID0gLTE7Ci0gIGlmICghKG5zCisgIGlmICghKHBhcnNlci0+bV9ucwogICAgICAgICA/IFhtbFBhcnNlWG1sRGVjbE5TCiAgICAgICAgIDogWG1sUGFyc2VYbWxEZWNsKShpc0dlbmVyYWxUZXh0RW50aXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICZldmVudFB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZwYXJzZXItPm1fZXZlbnRQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmVyc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2ZXJzaW9uZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVuY29kaW5nTmFtZSwKQEAgLTM0OTUsNjIgKzM5ODQsNjkgQEAKICAgICAgIHJldHVybiBYTUxfRVJST1JfWE1MX0RFQ0w7CiAgIH0KICAgaWYgKCFpc0dlbmVyYWxUZXh0RW50aXR5ICYmIHN0YW5kYWxvbmUgPT0gMSkgewotICAgIF9kdGQtPnN0YW5kYWxvbmUgPSBYTUxfVFJVRTsKKyAgICBwYXJzZXItPm1fZHRkLT5zdGFuZGFsb25lID0gWE1MX1RSVUU7CiAjaWZkZWYgWE1MX0RURAotICAgIGlmIChwYXJhbUVudGl0eVBhcnNpbmcgPT0gWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX1VOTEVTU19TVEFOREFMT05FKQotICAgICAgcGFyYW1FbnRpdHlQYXJzaW5nID0gWE1MX1BBUkFNX0VOVElUWV9QQVJTSU5HX05FVkVSOworICAgIGlmIChwYXJzZXItPm1fcGFyYW1FbnRpdHlQYXJzaW5nID09IFhNTF9QQVJBTV9FTlRJVFlfUEFSU0lOR19VTkxFU1NfU1RBTkRBTE9ORSkKKyAgICAgIHBhcnNlci0+bV9wYXJhbUVudGl0eVBhcnNpbmcgPSBYTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfTkVWRVI7CiAjZW5kaWYgLyogWE1MX0RURCAqLwogICB9Ci0gIGlmICh4bWxEZWNsSGFuZGxlcikgeworICBpZiAocGFyc2VyLT5tX3htbERlY2xIYW5kbGVyKSB7CiAgICAgaWYgKGVuY29kaW5nTmFtZSAhPSBOVUxMKSB7Ci0gICAgICBzdG9yZWRFbmNOYW1lID0gcG9vbFN0b3JlU3RyaW5nKCZ0ZW1wMlBvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLAorICAgICAgc3RvcmVkRW5jTmFtZSA9IHBvb2xTdG9yZVN0cmluZygmcGFyc2VyLT5tX3RlbXAyUG9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2VuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZ05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nTmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFhtbE5hbWVMZW5ndGgoZW5jb2RpbmcsIGVuY29kaW5nTmFtZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFhtbE5hbWVMZW5ndGgocGFyc2VyLT5tX2VuY29kaW5nLCBlbmNvZGluZ05hbWUpKTsKICAgICAgIGlmICghc3RvcmVkRW5jTmFtZSkKICAgICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICBwb29sRmluaXNoKCZ0ZW1wMlBvb2wpOworICAgICAgcG9vbEZpbmlzaCgmcGFyc2VyLT5tX3RlbXAyUG9vbCk7CiAgICAgfQogICAgIGlmICh2ZXJzaW9uKSB7Ci0gICAgICBzdG9yZWR2ZXJzaW9uID0gcG9vbFN0b3JlU3RyaW5nKCZ0ZW1wMlBvb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLAorICAgICAgc3RvcmVkdmVyc2lvbiA9IHBvb2xTdG9yZVN0cmluZygmcGFyc2VyLT5tX3RlbXAyUG9vbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2VuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uZW5kIC0gZW5jb2RpbmctPm1pbkJ5dGVzUGVyQ2hhcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb25lbmQgLSBwYXJzZXItPm1fZW5jb2RpbmctPm1pbkJ5dGVzUGVyQ2hhcik7CiAgICAgICBpZiAoIXN0b3JlZHZlcnNpb24pCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgIH0KLSAgICB4bWxEZWNsSGFuZGxlcihoYW5kbGVyQXJnLCBzdG9yZWR2ZXJzaW9uLCBzdG9yZWRFbmNOYW1lLCBzdGFuZGFsb25lKTsKKyAgICBwYXJzZXItPm1feG1sRGVjbEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIHN0b3JlZHZlcnNpb24sIHN0b3JlZEVuY05hbWUsIHN0YW5kYWxvbmUpOwogICB9Ci0gIGVsc2UgaWYgKGRlZmF1bHRIYW5kbGVyKQotICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmNvZGluZywgcywgbmV4dCk7Ci0gIGlmIChwcm90b2NvbEVuY29kaW5nTmFtZSA9PSBOVUxMKSB7CisgIGVsc2UgaWYgKHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcikKKyAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgcGFyc2VyLT5tX2VuY29kaW5nLCBzLCBuZXh0KTsKKyAgaWYgKHBhcnNlci0+bV9wcm90b2NvbEVuY29kaW5nTmFtZSA9PSBOVUxMKSB7CiAgICAgaWYgKG5ld0VuY29kaW5nKSB7Ci0gICAgICBpZiAobmV3RW5jb2RpbmctPm1pbkJ5dGVzUGVyQ2hhciAhPSBlbmNvZGluZy0+bWluQnl0ZXNQZXJDaGFyKSB7Ci0gICAgICAgIGV2ZW50UHRyID0gZW5jb2RpbmdOYW1lOworICAgICAgLyogQ2hlY2sgdGhhdCB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIGRvZXMgbm90IGNvbmZsaWN0IHdpdGggd2hhdAorICAgICAgICogdGhlIHBhcnNlciBoYXMgYWxyZWFkeSBkZWR1Y2VkLiAgRG8gd2UgaGF2ZSB0aGUgc2FtZSBudW1iZXIKKyAgICAgICAqIG9mIGJ5dGVzIGluIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhdGlvbiBvZiBhIGNoYXJhY3Rlcj8gIElmCisgICAgICAgKiB0aGlzIGlzIFVURi0xNiwgaXMgaXQgdGhlIHNhbWUgZW5kaWFubmVzcz8KKyAgICAgICAqLworICAgICAgaWYgKG5ld0VuY29kaW5nLT5taW5CeXRlc1BlckNoYXIgIT0gcGFyc2VyLT5tX2VuY29kaW5nLT5taW5CeXRlc1BlckNoYXIKKyAgICAgICAgICB8fCAobmV3RW5jb2RpbmctPm1pbkJ5dGVzUGVyQ2hhciA9PSAyICYmCisgICAgICAgICAgICAgIG5ld0VuY29kaW5nICE9IHBhcnNlci0+bV9lbmNvZGluZykpIHsKKyAgICAgICAgcGFyc2VyLT5tX2V2ZW50UHRyID0gZW5jb2RpbmdOYW1lOwogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX0lOQ09SUkVDVF9FTkNPRElORzsKICAgICAgIH0KLSAgICAgIGVuY29kaW5nID0gbmV3RW5jb2Rpbmc7CisgICAgICBwYXJzZXItPm1fZW5jb2RpbmcgPSBuZXdFbmNvZGluZzsKICAgICB9CiAgICAgZWxzZSBpZiAoZW5jb2RpbmdOYW1lKSB7CiAgICAgICBlbnVtIFhNTF9FcnJvciByZXN1bHQ7CiAgICAgICBpZiAoIXN0b3JlZEVuY05hbWUpIHsKICAgICAgICAgc3RvcmVkRW5jTmFtZSA9IHBvb2xTdG9yZVN0cmluZygKLSAgICAgICAgICAmdGVtcDJQb29sLCBlbmNvZGluZywgZW5jb2RpbmdOYW1lLAotICAgICAgICAgIGVuY29kaW5nTmFtZSArIFhtbE5hbWVMZW5ndGgoZW5jb2RpbmcsIGVuY29kaW5nTmFtZSkpOworICAgICAgICAgICZwYXJzZXItPm1fdGVtcDJQb29sLCBwYXJzZXItPm1fZW5jb2RpbmcsIGVuY29kaW5nTmFtZSwKKyAgICAgICAgICBlbmNvZGluZ05hbWUgKyBYbWxOYW1lTGVuZ3RoKHBhcnNlci0+bV9lbmNvZGluZywgZW5jb2RpbmdOYW1lKSk7CiAgICAgICAgIGlmICghc3RvcmVkRW5jTmFtZSkKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgIH0KICAgICAgIHJlc3VsdCA9IGhhbmRsZVVua25vd25FbmNvZGluZyhwYXJzZXIsIHN0b3JlZEVuY05hbWUpOwotICAgICAgcG9vbENsZWFyKCZ0ZW1wMlBvb2wpOworICAgICAgcG9vbENsZWFyKCZwYXJzZXItPm1fdGVtcDJQb29sKTsKICAgICAgIGlmIChyZXN1bHQgPT0gWE1MX0VSUk9SX1VOS05PV05fRU5DT0RJTkcpCi0gICAgICAgIGV2ZW50UHRyID0gZW5jb2RpbmdOYW1lOworICAgICAgICBwYXJzZXItPm1fZXZlbnRQdHIgPSBlbmNvZGluZ05hbWU7CiAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgfQogCiAgIGlmIChzdG9yZWRFbmNOYW1lIHx8IHN0b3JlZHZlcnNpb24pCi0gICAgcG9vbENsZWFyKCZ0ZW1wMlBvb2wpOworICAgIHBvb2xDbGVhcigmcGFyc2VyLT5tX3RlbXAyUG9vbCk7CiAKICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogfQpAQCAtMzU1OCw3ICs0MDU0LDcgQEAKIHN0YXRpYyBlbnVtIFhNTF9FcnJvcgogaGFuZGxlVW5rbm93bkVuY29kaW5nKFhNTF9QYXJzZXIgcGFyc2VyLCBjb25zdCBYTUxfQ2hhciAqZW5jb2RpbmdOYW1lKQogewotICBpZiAodW5rbm93bkVuY29kaW5nSGFuZGxlcikgeworICBpZiAocGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ0hhbmRsZXIpIHsKICAgICBYTUxfRW5jb2RpbmcgaW5mbzsKICAgICBpbnQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgMjU2OyBpKyspCkBAIC0zNTY2LDI1ICs0MDYyLDI1IEBACiAgICAgaW5mby5jb252ZXJ0ID0gTlVMTDsKICAgICBpbmZvLmRhdGEgPSBOVUxMOwogICAgIGluZm8ucmVsZWFzZSA9IE5VTEw7Ci0gICAgaWYgKHVua25vd25FbmNvZGluZ0hhbmRsZXIodW5rbm93bkVuY29kaW5nSGFuZGxlckRhdGEsIGVuY29kaW5nTmFtZSwKKyAgICBpZiAocGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ0hhbmRsZXIocGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ0hhbmRsZXJEYXRhLCBlbmNvZGluZ05hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmluZm8pKSB7CiAgICAgICBFTkNPRElORyAqZW5jOwotICAgICAgdW5rbm93bkVuY29kaW5nTWVtID0gTUFMTE9DKFhtbFNpemVPZlVua25vd25FbmNvZGluZygpKTsKLSAgICAgIGlmICghdW5rbm93bkVuY29kaW5nTWVtKSB7CisgICAgICBwYXJzZXItPm1fdW5rbm93bkVuY29kaW5nTWVtID0gTUFMTE9DKHBhcnNlciwgWG1sU2l6ZU9mVW5rbm93bkVuY29kaW5nKCkpOworICAgICAgaWYgKCFwYXJzZXItPm1fdW5rbm93bkVuY29kaW5nTWVtKSB7CiAgICAgICAgIGlmIChpbmZvLnJlbGVhc2UpCiAgICAgICAgICAgaW5mby5yZWxlYXNlKGluZm8uZGF0YSk7CiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgfQotICAgICAgZW5jID0gKG5zCisgICAgICBlbmMgPSAocGFyc2VyLT5tX25zCiAgICAgICAgICAgICAgPyBYbWxJbml0VW5rbm93bkVuY29kaW5nTlMKLSAgICAgICAgICAgICA6IFhtbEluaXRVbmtub3duRW5jb2RpbmcpKHVua25vd25FbmNvZGluZ01lbSwKKyAgICAgICAgICAgICA6IFhtbEluaXRVbmtub3duRW5jb2RpbmcpKHBhcnNlci0+bV91bmtub3duRW5jb2RpbmdNZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvLm1hcCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uY29udmVydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uZGF0YSk7CiAgICAgICBpZiAoZW5jKSB7Ci0gICAgICAgIHVua25vd25FbmNvZGluZ0RhdGEgPSBpbmZvLmRhdGE7Ci0gICAgICAgIHVua25vd25FbmNvZGluZ1JlbGVhc2UgPSBpbmZvLnJlbGVhc2U7Ci0gICAgICAgIGVuY29kaW5nID0gZW5jOworICAgICAgICBwYXJzZXItPm1fdW5rbm93bkVuY29kaW5nRGF0YSA9IGluZm8uZGF0YTsKKyAgICAgICAgcGFyc2VyLT5tX3Vua25vd25FbmNvZGluZ1JlbGVhc2UgPSBpbmZvLnJlbGVhc2U7CisgICAgICAgIHBhcnNlci0+bV9lbmNvZGluZyA9IGVuYzsKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgICAgfQogICAgIH0KQEAgLTM2MDMsNyArNDA5OSw3IEBACiAgIGVudW0gWE1MX0Vycm9yIHJlc3VsdCA9IGluaXRpYWxpemVFbmNvZGluZyhwYXJzZXIpOwogICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKQogICAgIHJldHVybiByZXN1bHQ7Ci0gIHByb2Nlc3NvciA9IHByb2xvZ1Byb2Nlc3NvcjsKKyAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IHByb2xvZ1Byb2Nlc3NvcjsKICAgcmV0dXJuIHByb2xvZ1Byb2Nlc3NvcihwYXJzZXIsIHMsIGVuZCwgbmV4dFB0cik7CiB9CiAKQEAgLTM2MjEsMTQgKzQxMTcsMTQgQEAKIAogICAvKiB3ZSBrbm93IG5vdyB0aGF0IFhNTF9QYXJzZShCdWZmZXIpIGhhcyBiZWVuIGNhbGxlZCwKICAgICAgc28gd2UgY29uc2lkZXIgdGhlIGV4dGVybmFsIHBhcmFtZXRlciBlbnRpdHkgcmVhZCAqLwotICBfZHRkLT5wYXJhbUVudGl0eVJlYWQgPSBYTUxfVFJVRTsKKyAgcGFyc2VyLT5tX2R0ZC0+cGFyYW1FbnRpdHlSZWFkID0gWE1MX1RSVUU7CiAKLSAgaWYgKHByb2xvZ1N0YXRlLmluRW50aXR5VmFsdWUpIHsKLSAgICBwcm9jZXNzb3IgPSBlbnRpdHlWYWx1ZUluaXRQcm9jZXNzb3I7CisgIGlmIChwYXJzZXItPm1fcHJvbG9nU3RhdGUuaW5FbnRpdHlWYWx1ZSkgeworICAgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBlbnRpdHlWYWx1ZUluaXRQcm9jZXNzb3I7CiAgICAgcmV0dXJuIGVudGl0eVZhbHVlSW5pdFByb2Nlc3NvcihwYXJzZXIsIHMsIGVuZCwgbmV4dFB0cik7CiAgIH0KICAgZWxzZSB7Ci0gICAgcHJvY2Vzc29yID0gZXh0ZXJuYWxQYXJFbnRQcm9jZXNzb3I7CisgICAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IGV4dGVybmFsUGFyRW50UHJvY2Vzc29yOwogICAgIHJldHVybiBleHRlcm5hbFBhckVudFByb2Nlc3NvcihwYXJzZXIsIHMsIGVuZCwgbmV4dFB0cik7CiAgIH0KIH0KQEAgLTM2NDIsMTMgKzQxMzgsMTMgQEAKICAgaW50IHRvazsKICAgY29uc3QgY2hhciAqc3RhcnQgPSBzOwogICBjb25zdCBjaGFyICpuZXh0ID0gc3RhcnQ7Ci0gIGV2ZW50UHRyID0gc3RhcnQ7CisgIHBhcnNlci0+bV9ldmVudFB0ciA9IHN0YXJ0OwogCiAgIGZvciAoOzspIHsKLSAgICB0b2sgPSBYbWxQcm9sb2dUb2soZW5jb2RpbmcsIHN0YXJ0LCBlbmQsICZuZXh0KTsKLSAgICBldmVudEVuZFB0ciA9IG5leHQ7CisgICAgdG9rID0gWG1sUHJvbG9nVG9rKHBhcnNlci0+bV9lbmNvZGluZywgc3RhcnQsIGVuZCwgJm5leHQpOworICAgIHBhcnNlci0+bV9ldmVudEVuZFB0ciA9IG5leHQ7CiAgICAgaWYgKHRvayA8PSAwKSB7Ci0gICAgICBpZiAoIXBzX2ZpbmFsQnVmZmVyICYmIHRvayAhPSBYTUxfVE9LX0lOVkFMSUQpIHsKKyAgICAgIGlmICghcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIgJiYgdG9rICE9IFhNTF9UT0tfSU5WQUxJRCkgewogICAgICAgICAqbmV4dFB0ciA9IHM7CiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICAgIH0KQEAgLTM2NjQsMjQgKzQxNjAsMjMgQEAKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICAvKiBmb3VuZCBlbmQgb2YgZW50aXR5IHZhbHVlIC0gY2FuIHN0b3JlIGl0IG5vdyAqLwotICAgICAgcmV0dXJuIHN0b3JlRW50aXR5VmFsdWUocGFyc2VyLCBlbmNvZGluZywgcywgZW5kKTsKKyAgICAgIHJldHVybiBzdG9yZUVudGl0eVZhbHVlKHBhcnNlciwgcGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQpOwogICAgIH0KICAgICBlbHNlIGlmICh0b2sgPT0gWE1MX1RPS19YTUxfREVDTCkgewogICAgICAgZW51bSBYTUxfRXJyb3IgcmVzdWx0OwogICAgICAgcmVzdWx0ID0gcHJvY2Vzc1htbERlY2wocGFyc2VyLCAwLCBzdGFydCwgbmV4dCk7CiAgICAgICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKQogICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgc3dpdGNoIChwc19wYXJzaW5nKSB7Ci0gICAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6Ci0gICAgICAgICpuZXh0UHRyID0gbmV4dDsKLSAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwotICAgICAgY2FzZSBYTUxfRklOSVNIRUQ6CisgICAgICAvKiBBdCB0aGlzIHBvaW50LCBtX3BhcnNpbmdTdGF0dXMucGFyc2luZyBjYW5ub3QgYmUgWE1MX1NVU1BFTkRFRC4gIEZvciB0aGF0CisgICAgICAgKiB0byBoYXBwZW4sIGEgcGFyYW1ldGVyIGVudGl0eSBwYXJzaW5nIGhhbmRsZXIgbXVzdCBoYXZlCisgICAgICAgKiBhdHRlbXB0ZWQgdG8gc3VzcGVuZCB0aGUgcGFyc2VyLCB3aGljaCBmYWlscyBhbmQgcmFpc2VzIGFuCisgICAgICAgKiBlcnJvci4gIFRoZSBwYXJzZXIgY2FuIGJlIGFib3J0ZWQsIGJ1dCBjYW4ndCBiZSBzdXNwZW5kZWQuCisgICAgICAgKi8KKyAgICAgIGlmIChwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nID09IFhNTF9GSU5JU0hFRCkKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9BQk9SVEVEOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgKm5leHRQdHIgPSBuZXh0OwotICAgICAgfQorICAgICAgKm5leHRQdHIgPSBuZXh0OwogICAgICAgLyogc3RvcCBzY2FubmluZyBmb3IgdGV4dCBkZWNsYXJhdGlvbiAtIHdlIGZvdW5kIG9uZSAqLwotICAgICAgcHJvY2Vzc29yID0gZW50aXR5VmFsdWVQcm9jZXNzb3I7CisgICAgICBwYXJzZXItPm1fcHJvY2Vzc29yID0gZW50aXR5VmFsdWVQcm9jZXNzb3I7CiAgICAgICByZXR1cm4gZW50aXR5VmFsdWVQcm9jZXNzb3IocGFyc2VyLCBuZXh0LCBlbmQsIG5leHRQdHIpOwogICAgIH0KICAgICAvKiBJZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLCB0aGlzIHdvdWxkIGNhdXNlIFhtbFByb2xvZ1RvayB0bwpAQCAtMzY5MSwxMiArNDE4NiwyMCBAQAogICAgICAgIHRoZW4sIHdoZW4gdGhpcyByb3V0aW5lIGlzIGVudGVyZWQgdGhlIG5leHQgdGltZSwgWG1sUHJvbG9nVG9rIHdpbGwKICAgICAgICByZXR1cm4gWE1MX1RPS19JTlZBTElELCBzaW5jZSB0aGUgQk9NIGlzIHN0aWxsIGluIHRoZSBidWZmZXIKICAgICAqLwotICAgIGVsc2UgaWYgKHRvayA9PSBYTUxfVE9LX0JPTSAmJiBuZXh0ID09IGVuZCAmJiAhcHNfZmluYWxCdWZmZXIpIHsKKyAgICBlbHNlIGlmICh0b2sgPT0gWE1MX1RPS19CT00gJiYgbmV4dCA9PSBlbmQgJiYgIXBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyKSB7CiAgICAgICAqbmV4dFB0ciA9IG5leHQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgfQorICAgIC8qIElmIHdlIGdldCB0aGlzIHRva2VuLCB3ZSBoYXZlIHRoZSBzdGFydCBvZiB3aGF0IG1pZ2h0IGJlIGEKKyAgICAgICBub3JtYWwgdGFnLCBidXQgbm90IGEgZGVjbGFyYXRpb24gKGkuZS4gaXQgZG9lc24ndCBiZWdpbiB3aXRoCisgICAgICAgIjwhIikuICBJbiBhIERURCBjb250ZXh0LCB0aGF0IGlzbid0IGxlZ2FsLgorICAgICovCisgICAgZWxzZSBpZiAodG9rID09IFhNTF9UT0tfSU5TVEFOQ0VfU1RBUlQpIHsKKyAgICAgICpuZXh0UHRyID0gbmV4dDsKKyAgICAgIHJldHVybiBYTUxfRVJST1JfU1lOVEFYOworICAgIH0KICAgICBzdGFydCA9IG5leHQ7Ci0gICAgZXZlbnRQdHIgPSBzdGFydDsKKyAgICBwYXJzZXItPm1fZXZlbnRQdHIgPSBzdGFydDsKICAgfQogfQogCkBAIC0zNzA5LDkgKzQyMTIsOSBAQAogICBjb25zdCBjaGFyICpuZXh0ID0gczsKICAgaW50IHRvazsKIAotICB0b2sgPSBYbWxQcm9sb2dUb2soZW5jb2RpbmcsIHMsIGVuZCwgJm5leHQpOworICB0b2sgPSBYbWxQcm9sb2dUb2socGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQsICZuZXh0KTsKICAgaWYgKHRvayA8PSAwKSB7Ci0gICAgaWYgKCFwc19maW5hbEJ1ZmZlciAmJiB0b2sgIT0gWE1MX1RPS19JTlZBTElEKSB7CisgICAgaWYgKCFwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlciAmJiB0b2sgIT0gWE1MX1RPS19JTlZBTElEKSB7CiAgICAgICAqbmV4dFB0ciA9IHM7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgfQpAQCAtMzczMywxMiArNDIzNiwxMiBAQAogICAqLwogICBlbHNlIGlmICh0b2sgPT0gWE1MX1RPS19CT00pIHsKICAgICBzID0gbmV4dDsKLSAgICB0b2sgPSBYbWxQcm9sb2dUb2soZW5jb2RpbmcsIHMsIGVuZCwgJm5leHQpOworICAgIHRvayA9IFhtbFByb2xvZ1RvayhwYXJzZXItPm1fZW5jb2RpbmcsIHMsIGVuZCwgJm5leHQpOwogICB9CiAKLSAgcHJvY2Vzc29yID0gcHJvbG9nUHJvY2Vzc29yOwotICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBlbmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsCi0gICAgICAgICAgICAgICAgICBuZXh0UHRyLCAoWE1MX0Jvb2wpIXBzX2ZpbmFsQnVmZmVyKTsKKyAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IHByb2xvZ1Byb2Nlc3NvcjsKKyAgcmV0dXJuIGRvUHJvbG9nKHBhcnNlciwgcGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwKKyAgICAgICAgICAgICAgICAgIG5leHRQdHIsIChYTUxfQm9vbCkhcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMuZmluYWxCdWZmZXIpOwogfQogCiBzdGF0aWMgZW51bSBYTUxfRXJyb3IgUFRSQ0FMTApAQCAtMzc0OSwxMyArNDI1MiwxMyBAQAogewogICBjb25zdCBjaGFyICpzdGFydCA9IHM7CiAgIGNvbnN0IGNoYXIgKm5leHQgPSBzOwotICBjb25zdCBFTkNPRElORyAqZW5jID0gZW5jb2Rpbmc7CisgIGNvbnN0IEVOQ09ESU5HICplbmMgPSBwYXJzZXItPm1fZW5jb2Rpbmc7CiAgIGludCB0b2s7CiAKICAgZm9yICg7OykgewogICAgIHRvayA9IFhtbFByb2xvZ1RvayhlbmMsIHN0YXJ0LCBlbmQsICZuZXh0KTsKICAgICBpZiAodG9rIDw9IDApIHsKLSAgICAgIGlmICghcHNfZmluYWxCdWZmZXIgJiYgdG9rICE9IFhNTF9UT0tfSU5WQUxJRCkgeworICAgICAgaWYgKCFwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlciAmJiB0b2sgIT0gWE1MX1RPS19JTlZBTElEKSB7CiAgICAgICAgICpuZXh0UHRyID0gczsKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgICAgfQpAQCAtMzc4Niw5ICs0Mjg5LDkgQEAKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqbmV4dFB0cikKIHsKICAgY29uc3QgY2hhciAqbmV4dCA9IHM7Ci0gIGludCB0b2sgPSBYbWxQcm9sb2dUb2soZW5jb2RpbmcsIHMsIGVuZCwgJm5leHQpOwotICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBlbmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsCi0gICAgICAgICAgICAgICAgICBuZXh0UHRyLCAoWE1MX0Jvb2wpIXBzX2ZpbmFsQnVmZmVyKTsKKyAgaW50IHRvayA9IFhtbFByb2xvZ1RvayhwYXJzZXItPm1fZW5jb2RpbmcsIHMsIGVuZCwgJm5leHQpOworICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBwYXJzZXItPm1fZW5jb2RpbmcsIHMsIGVuZCwgdG9rLCBuZXh0LAorICAgICAgICAgICAgICAgICAgbmV4dFB0ciwgKFhNTF9Cb29sKSFwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlcik7CiB9CiAKIHN0YXRpYyBlbnVtIFhNTF9FcnJvcgpAQCAtMzgyNSwxOSArNDMyOCwxOSBAQAogICBzdGF0aWMgY29uc3QgWE1MX0NoYXIgZW51bVZhbHVlU3RhcnRbXSA9IHsgQVNDSUlfTFBBUkVOLCAnXDAnIH07CiAKICAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KLSAgRFREICogY29uc3QgZHRkID0gX2R0ZDsKKyAgRFREICogY29uc3QgZHRkID0gcGFyc2VyLT5tX2R0ZDsKIAogICBjb25zdCBjaGFyICoqZXZlbnRQUDsKICAgY29uc3QgY2hhciAqKmV2ZW50RW5kUFA7CiAgIGVudW0gWE1MX0NvbnRlbnRfUXVhbnQgcXVhbnQ7CiAKLSAgaWYgKGVuYyA9PSBlbmNvZGluZykgewotICAgIGV2ZW50UFAgPSAmZXZlbnRQdHI7Ci0gICAgZXZlbnRFbmRQUCA9ICZldmVudEVuZFB0cjsKKyAgaWYgKGVuYyA9PSBwYXJzZXItPm1fZW5jb2RpbmcpIHsKKyAgICBldmVudFBQID0gJnBhcnNlci0+bV9ldmVudFB0cjsKKyAgICBldmVudEVuZFBQID0gJnBhcnNlci0+bV9ldmVudEVuZFB0cjsKICAgfQogICBlbHNlIHsKLSAgICBldmVudFBQID0gJihvcGVuSW50ZXJuYWxFbnRpdGllcy0+aW50ZXJuYWxFdmVudFB0cik7Ci0gICAgZXZlbnRFbmRQUCA9ICYob3BlbkludGVybmFsRW50aXRpZXMtPmludGVybmFsRXZlbnRFbmRQdHIpOworICAgIGV2ZW50UFAgPSAmKHBhcnNlci0+bV9vcGVuSW50ZXJuYWxFbnRpdGllcy0+aW50ZXJuYWxFdmVudFB0cik7CisgICAgZXZlbnRFbmRQUCA9ICYocGFyc2VyLT5tX29wZW5JbnRlcm5hbEVudGl0aWVzLT5pbnRlcm5hbEV2ZW50RW5kUHRyKTsKICAgfQogCiAgIGZvciAoOzspIHsKQEAgLTM4NjQsNyArNDM2Nyw3IEBACiAgICAgICBjYXNlIFhNTF9UT0tfTk9ORToKICNpZmRlZiBYTUxfRFRECiAgICAgICAgIC8qIGZvciBpbnRlcm5hbCBQRSBOT1QgcmVmZXJlbmNlZCBiZXR3ZWVuIGRlY2xhcmF0aW9ucyAqLwotICAgICAgICBpZiAoZW5jICE9IGVuY29kaW5nICYmICFvcGVuSW50ZXJuYWxFbnRpdGllcy0+YmV0d2VlbkRlY2wpIHsKKyAgICAgICAgaWYgKGVuYyAhPSBwYXJzZXItPm1fZW5jb2RpbmcgJiYgIXBhcnNlci0+bV9vcGVuSW50ZXJuYWxFbnRpdGllcy0+YmV0d2VlbkRlY2wpIHsKICAgICAgICAgICAqbmV4dFB0ciA9IHM7CiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgICAgICB9CkBAIC0zODcyLDggKzQzNzUsOCBAQAogICAgICAgICAgICBjb21wbGV0ZSBtYXJrdXAsIG5vdCBvbmx5IGZvciBleHRlcm5hbCBQRXMsIGJ1dCBhbHNvIGZvcgogICAgICAgICAgICBpbnRlcm5hbCBQRXMgaWYgdGhlIHJlZmVyZW5jZSBvY2N1cnMgYmV0d2VlbiBkZWNsYXJhdGlvbnMuCiAgICAgICAgICovCi0gICAgICAgIGlmIChpc1BhcmFtRW50aXR5IHx8IGVuYyAhPSBlbmNvZGluZykgewotICAgICAgICAgIGlmIChYbWxUb2tlblJvbGUoJnByb2xvZ1N0YXRlLCBYTUxfVE9LX05PTkUsIGVuZCwgZW5kLCBlbmMpCisgICAgICAgIGlmIChwYXJzZXItPm1faXNQYXJhbUVudGl0eSB8fCBlbmMgIT0gcGFyc2VyLT5tX2VuY29kaW5nKSB7CisgICAgICAgICAgaWYgKFhtbFRva2VuUm9sZSgmcGFyc2VyLT5tX3Byb2xvZ1N0YXRlLCBYTUxfVE9LX05PTkUsIGVuZCwgZW5kLCBlbmMpCiAgICAgICAgICAgICAgID09IFhNTF9ST0xFX0VSUk9SKQogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9JTkNPTVBMRVRFX1BFOwogICAgICAgICAgICpuZXh0UHRyID0gczsKQEAgLTM4ODcsMzQgKzQzOTAsMzQgQEAKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgfQotICAgIHJvbGUgPSBYbWxUb2tlblJvbGUoJnByb2xvZ1N0YXRlLCB0b2ssIHMsIG5leHQsIGVuYyk7CisgICAgcm9sZSA9IFhtbFRva2VuUm9sZSgmcGFyc2VyLT5tX3Byb2xvZ1N0YXRlLCB0b2ssIHMsIG5leHQsIGVuYyk7CiAgICAgc3dpdGNoIChyb2xlKSB7CiAgICAgY2FzZSBYTUxfUk9MRV9YTUxfREVDTDoKICAgICAgIHsKICAgICAgICAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gcHJvY2Vzc1htbERlY2wocGFyc2VyLCAwLCBzLCBuZXh0KTsKICAgICAgICAgaWYgKHJlc3VsdCAhPSBYTUxfRVJST1JfTk9ORSkKICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICBlbmMgPSBlbmNvZGluZzsKKyAgICAgICAgZW5jID0gcGFyc2VyLT5tX2VuY29kaW5nOwogICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9ET0NUWVBFX05BTUU6Ci0gICAgICBpZiAoc3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpIHsKLSAgICAgICAgZG9jdHlwZU5hbWUgPSBwb29sU3RvcmVTdHJpbmcoJnRlbXBQb29sLCBlbmMsIHMsIG5leHQpOwotICAgICAgICBpZiAoIWRvY3R5cGVOYW1lKQorICAgICAgaWYgKHBhcnNlci0+bV9zdGFydERvY3R5cGVEZWNsSGFuZGxlcikgeworICAgICAgICBwYXJzZXItPm1fZG9jdHlwZU5hbWUgPSBwb29sU3RvcmVTdHJpbmcoJnBhcnNlci0+bV90ZW1wUG9vbCwgZW5jLCBzLCBuZXh0KTsKKyAgICAgICAgaWYgKCFwYXJzZXItPm1fZG9jdHlwZU5hbWUpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgIHBvb2xGaW5pc2goJnRlbXBQb29sKTsKLSAgICAgICAgZG9jdHlwZVB1YmlkID0gTlVMTDsKKyAgICAgICAgcG9vbEZpbmlzaCgmcGFyc2VyLT5tX3RlbXBQb29sKTsKKyAgICAgICAgcGFyc2VyLT5tX2RvY3R5cGVQdWJpZCA9IE5VTEw7CiAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICB9Ci0gICAgICBkb2N0eXBlU3lzaWQgPSBOVUxMOyAvKiBhbHdheXMgaW5pdGlhbGl6ZSB0byBOVUxMICovCisgICAgICBwYXJzZXItPm1fZG9jdHlwZVN5c2lkID0gTlVMTDsgLyogYWx3YXlzIGluaXRpYWxpemUgdG8gTlVMTCAqLwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9ET0NUWVBFX0lOVEVSTkFMX1NVQlNFVDoKLSAgICAgIGlmIChzdGFydERvY3R5cGVEZWNsSGFuZGxlcikgewotICAgICAgICBzdGFydERvY3R5cGVEZWNsSGFuZGxlcihoYW5kbGVyQXJnLCBkb2N0eXBlTmFtZSwgZG9jdHlwZVN5c2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N0eXBlUHViaWQsIDEpOwotICAgICAgICBkb2N0eXBlTmFtZSA9IE5VTEw7Ci0gICAgICAgIHBvb2xDbGVhcigmdGVtcFBvb2wpOworICAgICAgaWYgKHBhcnNlci0+bV9zdGFydERvY3R5cGVEZWNsSGFuZGxlcikgeworICAgICAgICBwYXJzZXItPm1fc3RhcnREb2N0eXBlRGVjbEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIHBhcnNlci0+bV9kb2N0eXBlTmFtZSwgcGFyc2VyLT5tX2RvY3R5cGVTeXNpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2RvY3R5cGVQdWJpZCwgMSk7CisgICAgICAgIHBhcnNlci0+bV9kb2N0eXBlTmFtZSA9IE5VTEw7CisgICAgICAgIHBvb2xDbGVhcigmcGFyc2VyLT5tX3RlbXBQb29sKTsKICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMzkyNCwzNCArNDQyNywzNCBAQAogICAgICAgICBlbnVtIFhNTF9FcnJvciByZXN1bHQgPSBwcm9jZXNzWG1sRGVjbChwYXJzZXIsIDEsIHMsIG5leHQpOwogICAgICAgICBpZiAocmVzdWx0ICE9IFhNTF9FUlJPUl9OT05FKQogICAgICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgICAgIGVuYyA9IGVuY29kaW5nOworICAgICAgICBlbmMgPSBwYXJzZXItPm1fZW5jb2Rpbmc7CiAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICB9CiAgICAgICBicmVhazsKICNlbmRpZiAvKiBYTUxfRFREICovCiAgICAgY2FzZSBYTUxfUk9MRV9ET0NUWVBFX1BVQkxJQ19JRDoKICNpZmRlZiBYTUxfRFRECi0gICAgICB1c2VGb3JlaWduRFREID0gWE1MX0ZBTFNFOwotICAgICAgZGVjbEVudGl0eSA9IChFTlRJVFkgKilsb29rdXAocGFyc2VyLAorICAgICAgcGFyc2VyLT5tX3VzZUZvcmVpZ25EVEQgPSBYTUxfRkFMU0U7CisgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eSA9IChFTlRJVFkgKilsb29rdXAocGFyc2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmR0ZC0+cGFyYW1FbnRpdGllcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsU3Vic2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihFTlRJVFkpKTsKLSAgICAgIGlmICghZGVjbEVudGl0eSkKKyAgICAgIGlmICghcGFyc2VyLT5tX2RlY2xFbnRpdHkpCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogI2VuZGlmIC8qIFhNTF9EVEQgKi8KICAgICAgIGR0ZC0+aGFzUGFyYW1FbnRpdHlSZWZzID0gWE1MX1RSVUU7Ci0gICAgICBpZiAoc3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpIHsKKyAgICAgIGlmIChwYXJzZXItPm1fc3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpIHsKICAgICAgICAgWE1MX0NoYXIgKnB1YklkOwogICAgICAgICBpZiAoIVhtbElzUHVibGljSWQoZW5jLCBzLCBuZXh0LCBldmVudFBQKSkKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX1BVQkxJQ0lEOwotICAgICAgICBwdWJJZCA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsIGVuYywKKyAgICAgICAgcHViSWQgPSBwb29sU3RvcmVTdHJpbmcoJnBhcnNlci0+bV90ZW1wUG9vbCwgZW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICsgZW5jLT5taW5CeXRlc1BlckNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgLSBlbmMtPm1pbkJ5dGVzUGVyQ2hhcik7CiAgICAgICAgIGlmICghcHViSWQpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgIG5vcm1hbGl6ZVB1YmxpY0lkKHB1YklkKTsKLSAgICAgICAgcG9vbEZpbmlzaCgmdGVtcFBvb2wpOwotICAgICAgICBkb2N0eXBlUHViaWQgPSBwdWJJZDsKKyAgICAgICAgcG9vbEZpbmlzaCgmcGFyc2VyLT5tX3RlbXBQb29sKTsKKyAgICAgICAgcGFyc2VyLT5tX2RvY3R5cGVQdWJpZCA9IHB1YklkOwogICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgICBnb3RvIGFscmVhZHlDaGVja2VkOwogICAgICAgfQpAQCAtMzk2MCw3ICs0NDYzLDcgQEAKICAgICAgIGlmICghWG1sSXNQdWJsaWNJZChlbmMsIHMsIG5leHQsIGV2ZW50UFApKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX1BVQkxJQ0lEOwogICAgIGFscmVhZHlDaGVja2VkOgotICAgICAgaWYgKGR0ZC0+a2VlcFByb2Nlc3NpbmcgJiYgZGVjbEVudGl0eSkgeworICAgICAgaWYgKGR0ZC0+a2VlcFByb2Nlc3NpbmcgJiYgcGFyc2VyLT5tX2RlY2xFbnRpdHkpIHsKICAgICAgICAgWE1MX0NoYXIgKnRlbSA9IHBvb2xTdG9yZVN0cmluZygmZHRkLT5wb29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICsgZW5jLT5taW5CeXRlc1BlckNoYXIsCkBAIC0zOTY4LDM4ICs0NDcxLDQ3IEBACiAgICAgICAgIGlmICghdGVtKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICBub3JtYWxpemVQdWJsaWNJZCh0ZW0pOwotICAgICAgICBkZWNsRW50aXR5LT5wdWJsaWNJZCA9IHRlbTsKKyAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHktPnB1YmxpY0lkID0gdGVtOwogICAgICAgICBwb29sRmluaXNoKCZkdGQtPnBvb2wpOwotICAgICAgICBpZiAoZW50aXR5RGVjbEhhbmRsZXIpCisgICAgICAgIC8qIERvbid0IHN1cHByZXNzIHRoZSBkZWZhdWx0IGhhbmRsZXIgaWYgd2UgZmVsbCB0aHJvdWdoIGZyb20KKyAgICAgICAgICogdGhlIFhNTF9ST0xFX0RPQ1RZUEVfUFVCTElDX0lEIGNhc2UuCisgICAgICAgICAqLworICAgICAgICBpZiAocGFyc2VyLT5tX2VudGl0eURlY2xIYW5kbGVyICYmIHJvbGUgPT0gWE1MX1JPTEVfRU5USVRZX1BVQkxJQ19JRCkKICAgICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9ET0NUWVBFX0NMT1NFOgotICAgICAgaWYgKGRvY3R5cGVOYW1lKSB7Ci0gICAgICAgIHN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKGhhbmRsZXJBcmcsIGRvY3R5cGVOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N0eXBlU3lzaWQsIGRvY3R5cGVQdWJpZCwgMCk7Ci0gICAgICAgIHBvb2xDbGVhcigmdGVtcFBvb2wpOworICAgICAgaWYgKHBhcnNlci0+bV9kb2N0eXBlTmFtZSkgeworICAgICAgICBwYXJzZXItPm1fc3RhcnREb2N0eXBlRGVjbEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIHBhcnNlci0+bV9kb2N0eXBlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2RvY3R5cGVTeXNpZCwgcGFyc2VyLT5tX2RvY3R5cGVQdWJpZCwgMCk7CisgICAgICAgIHBvb2xDbGVhcigmcGFyc2VyLT5tX3RlbXBQb29sKTsKICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgIH0KLSAgICAgIC8qIGRvY3R5cGVTeXNpZCB3aWxsIGJlIG5vbi1OVUxMIGluIHRoZSBjYXNlIG9mIGEgcHJldmlvdXMKLSAgICAgICAgIFhNTF9ST0xFX0RPQ1RZUEVfU1lTVEVNX0lELCBldmVuIGlmIHN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyCisgICAgICAvKiBwYXJzZXItPm1fZG9jdHlwZVN5c2lkIHdpbGwgYmUgbm9uLU5VTEwgaW4gdGhlIGNhc2Ugb2YgYSBwcmV2aW91cworICAgICAgICAgWE1MX1JPTEVfRE9DVFlQRV9TWVNURU1fSUQsIGV2ZW4gaWYgcGFyc2VyLT5tX3N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyCiAgICAgICAgICB3YXMgbm90IHNldCwgaW5kaWNhdGluZyBhbiBleHRlcm5hbCBzdWJzZXQKICAgICAgICovCiAjaWZkZWYgWE1MX0RURAotICAgICAgaWYgKGRvY3R5cGVTeXNpZCB8fCB1c2VGb3JlaWduRFREKSB7CisgICAgICBpZiAocGFyc2VyLT5tX2RvY3R5cGVTeXNpZCB8fCBwYXJzZXItPm1fdXNlRm9yZWlnbkRURCkgewogICAgICAgICBYTUxfQm9vbCBoYWRQYXJhbUVudGl0eVJlZnMgPSBkdGQtPmhhc1BhcmFtRW50aXR5UmVmczsKICAgICAgICAgZHRkLT5oYXNQYXJhbUVudGl0eVJlZnMgPSBYTUxfVFJVRTsKLSAgICAgICAgaWYgKHBhcmFtRW50aXR5UGFyc2luZyAmJiBleHRlcm5hbEVudGl0eVJlZkhhbmRsZXIpIHsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9wYXJhbUVudGl0eVBhcnNpbmcgJiYgcGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlcikgewogICAgICAgICAgIEVOVElUWSAqZW50aXR5ID0gKEVOVElUWSAqKWxvb2t1cChwYXJzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdGQtPnBhcmFtRW50aXRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsU3Vic2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEVOVElUWSkpOwotICAgICAgICAgIGlmICghZW50aXR5KQotICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgICAgaWYgKHVzZUZvcmVpZ25EVEQpCi0gICAgICAgICAgICBlbnRpdHktPmJhc2UgPSBjdXJCYXNlOworICAgICAgICAgIGlmICghZW50aXR5KSB7CisgICAgICAgICAgICAvKiBUaGUgZXh0ZXJuYWwgc3Vic2V0IG5hbWUgIiMiIHdpbGwgaGF2ZSBhbHJlYWR5IGJlZW4KKyAgICAgICAgICAgICAqIGluc2VydGVkIGludG8gdGhlIGhhc2ggdGFibGUgYXQgdGhlIHN0YXJ0IG9mIHRoZQorICAgICAgICAgICAgICogZXh0ZXJuYWwgZW50aXR5IHBhcnNpbmcsIHNvIG5vIGFsbG9jYXRpb24gd2lsbCBoYXBwZW4KKyAgICAgICAgICAgICAqIGFuZCBsb29rdXAoKSBjYW5ub3QgZmFpbC4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7IC8qIExDT1ZfRVhDTF9MSU5FICovCisgICAgICAgICAgfQorICAgICAgICAgIGlmIChwYXJzZXItPm1fdXNlRm9yZWlnbkRURCkKKyAgICAgICAgICAgIGVudGl0eS0+YmFzZSA9IHBhcnNlci0+bV9jdXJCYXNlOwogICAgICAgICAgIGR0ZC0+cGFyYW1FbnRpdHlSZWFkID0gWE1MX0ZBTFNFOwotICAgICAgICAgIGlmICghZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyKGV4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZywKKyAgICAgICAgICBpZiAoIXBhcnNlci0+bV9leHRlcm5hbEVudGl0eVJlZkhhbmRsZXIocGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eS0+YmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHktPnN5c3RlbUlkLApAQCAtNDAwNywyMiArNDUxOSwyMiBAQAogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9FWFRFUk5BTF9FTlRJVFlfSEFORExJTkc7CiAgICAgICAgICAgaWYgKGR0ZC0+cGFyYW1FbnRpdHlSZWFkKSB7CiAgICAgICAgICAgICBpZiAoIWR0ZC0+c3RhbmRhbG9uZSAmJgotICAgICAgICAgICAgICAgIG5vdFN0YW5kYWxvbmVIYW5kbGVyICYmCi0gICAgICAgICAgICAgICAgIW5vdFN0YW5kYWxvbmVIYW5kbGVyKGhhbmRsZXJBcmcpKQorICAgICAgICAgICAgICAgIHBhcnNlci0+bV9ub3RTdGFuZGFsb25lSGFuZGxlciAmJgorICAgICAgICAgICAgICAgICFwYXJzZXItPm1fbm90U3RhbmRhbG9uZUhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcpKQogICAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PVF9TVEFOREFMT05FOwogICAgICAgICAgIH0KICAgICAgICAgICAvKiBpZiB3ZSBkaWRuJ3QgcmVhZCB0aGUgZm9yZWlnbiBEVEQgdGhlbiB0aGlzIG1lYW5zIHRoYXQgdGhlcmUKICAgICAgICAgICAgICBpcyBubyBleHRlcm5hbCBzdWJzZXQgYW5kIHdlIG11c3QgcmVzZXQgZHRkLT5oYXNQYXJhbUVudGl0eVJlZnMKICAgICAgICAgICAqLwotICAgICAgICAgIGVsc2UgaWYgKCFkb2N0eXBlU3lzaWQpCisgICAgICAgICAgZWxzZSBpZiAoIXBhcnNlci0+bV9kb2N0eXBlU3lzaWQpCiAgICAgICAgICAgICBkdGQtPmhhc1BhcmFtRW50aXR5UmVmcyA9IGhhZFBhcmFtRW50aXR5UmVmczsKICAgICAgICAgICAvKiBlbmQgb2YgRFREIC0gbm8gbmVlZCB0byB1cGRhdGUgZHRkLT5rZWVwUHJvY2Vzc2luZyAqLwogICAgICAgICB9Ci0gICAgICAgIHVzZUZvcmVpZ25EVEQgPSBYTUxfRkFMU0U7CisgICAgICAgIHBhcnNlci0+bV91c2VGb3JlaWduRFREID0gWE1MX0ZBTFNFOwogICAgICAgfQogI2VuZGlmIC8qIFhNTF9EVEQgKi8KLSAgICAgIGlmIChlbmREb2N0eXBlRGVjbEhhbmRsZXIpIHsKLSAgICAgICAgZW5kRG9jdHlwZURlY2xIYW5kbGVyKGhhbmRsZXJBcmcpOworICAgICAgaWYgKHBhcnNlci0+bV9lbmREb2N0eXBlRGVjbEhhbmRsZXIpIHsKKyAgICAgICAgcGFyc2VyLT5tX2VuZERvY3R5cGVEZWNsSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZyk7CiAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTQwMzEsMTggKzQ1NDMsMTggQEAKICAgICAgIC8qIGlmIHRoZXJlIGlzIG5vIERPQ1RZUEUgZGVjbGFyYXRpb24gdGhlbiBub3cgaXMgdGhlCiAgICAgICAgICBsYXN0IGNoYW5jZSB0byByZWFkIHRoZSBmb3JlaWduIERURAogICAgICAgKi8KLSAgICAgIGlmICh1c2VGb3JlaWduRFREKSB7CisgICAgICBpZiAocGFyc2VyLT5tX3VzZUZvcmVpZ25EVEQpIHsKICAgICAgICAgWE1MX0Jvb2wgaGFkUGFyYW1FbnRpdHlSZWZzID0gZHRkLT5oYXNQYXJhbUVudGl0eVJlZnM7CiAgICAgICAgIGR0ZC0+aGFzUGFyYW1FbnRpdHlSZWZzID0gWE1MX1RSVUU7Ci0gICAgICAgIGlmIChwYXJhbUVudGl0eVBhcnNpbmcgJiYgZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyKSB7CisgICAgICAgIGlmIChwYXJzZXItPm1fcGFyYW1FbnRpdHlQYXJzaW5nICYmIHBhcnNlci0+bV9leHRlcm5hbEVudGl0eVJlZkhhbmRsZXIpIHsKICAgICAgICAgICBFTlRJVFkgKmVudGl0eSA9IChFTlRJVFkgKilsb29rdXAocGFyc2VyLCAmZHRkLT5wYXJhbUVudGl0aWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbFN1YnNldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihFTlRJVFkpKTsKICAgICAgICAgICBpZiAoIWVudGl0eSkKICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICAgIGVudGl0eS0+YmFzZSA9IGN1ckJhc2U7CisgICAgICAgICAgZW50aXR5LT5iYXNlID0gcGFyc2VyLT5tX2N1ckJhc2U7CiAgICAgICAgICAgZHRkLT5wYXJhbUVudGl0eVJlYWQgPSBYTUxfRkFMU0U7Ci0gICAgICAgICAgaWYgKCFleHRlcm5hbEVudGl0eVJlZkhhbmRsZXIoZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnLAorICAgICAgICAgIGlmICghcGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlcihwYXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5LT5iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eS0+c3lzdGVtSWQsCkBAIC00MDUwLDggKzQ1NjIsOCBAQAogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9FWFRFUk5BTF9FTlRJVFlfSEFORExJTkc7CiAgICAgICAgICAgaWYgKGR0ZC0+cGFyYW1FbnRpdHlSZWFkKSB7CiAgICAgICAgICAgICBpZiAoIWR0ZC0+c3RhbmRhbG9uZSAmJgotICAgICAgICAgICAgICAgIG5vdFN0YW5kYWxvbmVIYW5kbGVyICYmCi0gICAgICAgICAgICAgICAgIW5vdFN0YW5kYWxvbmVIYW5kbGVyKGhhbmRsZXJBcmcpKQorICAgICAgICAgICAgICAgIHBhcnNlci0+bV9ub3RTdGFuZGFsb25lSGFuZGxlciAmJgorICAgICAgICAgICAgICAgICFwYXJzZXItPm1fbm90U3RhbmRhbG9uZUhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcpKQogICAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PVF9TVEFOREFMT05FOwogICAgICAgICAgIH0KICAgICAgICAgICAvKiBpZiB3ZSBkaWRuJ3QgcmVhZCB0aGUgZm9yZWlnbiBEVEQgdGhlbiB0aGlzIG1lYW5zIHRoYXQgdGhlcmUKQEAgLTQwNjMsNTUgKzQ1NzUsNTUgQEAKICAgICAgICAgfQogICAgICAgfQogI2VuZGlmIC8qIFhNTF9EVEQgKi8KLSAgICAgIHByb2Nlc3NvciA9IGNvbnRlbnRQcm9jZXNzb3I7CisgICAgICBwYXJzZXItPm1fcHJvY2Vzc29yID0gY29udGVudFByb2Nlc3NvcjsKICAgICAgIHJldHVybiBjb250ZW50UHJvY2Vzc29yKHBhcnNlciwgcywgZW5kLCBuZXh0UHRyKTsKICAgICBjYXNlIFhNTF9ST0xFX0FUVExJU1RfRUxFTUVOVF9OQU1FOgotICAgICAgZGVjbEVsZW1lbnRUeXBlID0gZ2V0RWxlbWVudFR5cGUocGFyc2VyLCBlbmMsIHMsIG5leHQpOwotICAgICAgaWYgKCFkZWNsRWxlbWVudFR5cGUpCisgICAgICBwYXJzZXItPm1fZGVjbEVsZW1lbnRUeXBlID0gZ2V0RWxlbWVudFR5cGUocGFyc2VyLCBlbmMsIHMsIG5leHQpOworICAgICAgaWYgKCFwYXJzZXItPm1fZGVjbEVsZW1lbnRUeXBlKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgIGdvdG8gY2hlY2tBdHRMaXN0RGVjbEhhbmRsZXI7CiAgICAgY2FzZSBYTUxfUk9MRV9BVFRSSUJVVEVfTkFNRToKLSAgICAgIGRlY2xBdHRyaWJ1dGVJZCA9IGdldEF0dHJpYnV0ZUlkKHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKLSAgICAgIGlmICghZGVjbEF0dHJpYnV0ZUlkKQorICAgICAgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVJZCA9IGdldEF0dHJpYnV0ZUlkKHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKKyAgICAgIGlmICghcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVJZCkKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICBkZWNsQXR0cmlidXRlSXNDZGF0YSA9IFhNTF9GQUxTRTsKLSAgICAgIGRlY2xBdHRyaWJ1dGVUeXBlID0gTlVMTDsKLSAgICAgIGRlY2xBdHRyaWJ1dGVJc0lkID0gWE1MX0ZBTFNFOworICAgICAgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVJc0NkYXRhID0gWE1MX0ZBTFNFOworICAgICAgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVUeXBlID0gTlVMTDsKKyAgICAgIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlSXNJZCA9IFhNTF9GQUxTRTsKICAgICAgIGdvdG8gY2hlY2tBdHRMaXN0RGVjbEhhbmRsZXI7CiAgICAgY2FzZSBYTUxfUk9MRV9BVFRSSUJVVEVfVFlQRV9DREFUQToKLSAgICAgIGRlY2xBdHRyaWJ1dGVJc0NkYXRhID0gWE1MX1RSVUU7Ci0gICAgICBkZWNsQXR0cmlidXRlVHlwZSA9IGF0eXBlQ0RBVEE7CisgICAgICBwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZUlzQ2RhdGEgPSBYTUxfVFJVRTsKKyAgICAgIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZSA9IGF0eXBlQ0RBVEE7CiAgICAgICBnb3RvIGNoZWNrQXR0TGlzdERlY2xIYW5kbGVyOwogICAgIGNhc2UgWE1MX1JPTEVfQVRUUklCVVRFX1RZUEVfSUQ6Ci0gICAgICBkZWNsQXR0cmlidXRlSXNJZCA9IFhNTF9UUlVFOwotICAgICAgZGVjbEF0dHJpYnV0ZVR5cGUgPSBhdHlwZUlEOworICAgICAgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVJc0lkID0gWE1MX1RSVUU7CisgICAgICBwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZVR5cGUgPSBhdHlwZUlEOwogICAgICAgZ290byBjaGVja0F0dExpc3REZWNsSGFuZGxlcjsKICAgICBjYXNlIFhNTF9ST0xFX0FUVFJJQlVURV9UWVBFX0lEUkVGOgotICAgICAgZGVjbEF0dHJpYnV0ZVR5cGUgPSBhdHlwZUlEUkVGOworICAgICAgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVUeXBlID0gYXR5cGVJRFJFRjsKICAgICAgIGdvdG8gY2hlY2tBdHRMaXN0RGVjbEhhbmRsZXI7CiAgICAgY2FzZSBYTUxfUk9MRV9BVFRSSUJVVEVfVFlQRV9JRFJFRlM6Ci0gICAgICBkZWNsQXR0cmlidXRlVHlwZSA9IGF0eXBlSURSRUZTOworICAgICAgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVUeXBlID0gYXR5cGVJRFJFRlM7CiAgICAgICBnb3RvIGNoZWNrQXR0TGlzdERlY2xIYW5kbGVyOwogICAgIGNhc2UgWE1MX1JPTEVfQVRUUklCVVRFX1RZUEVfRU5USVRZOgotICAgICAgZGVjbEF0dHJpYnV0ZVR5cGUgPSBhdHlwZUVOVElUWTsKKyAgICAgIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZSA9IGF0eXBlRU5USVRZOwogICAgICAgZ290byBjaGVja0F0dExpc3REZWNsSGFuZGxlcjsKICAgICBjYXNlIFhNTF9ST0xFX0FUVFJJQlVURV9UWVBFX0VOVElUSUVTOgotICAgICAgZGVjbEF0dHJpYnV0ZVR5cGUgPSBhdHlwZUVOVElUSUVTOworICAgICAgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVUeXBlID0gYXR5cGVFTlRJVElFUzsKICAgICAgIGdvdG8gY2hlY2tBdHRMaXN0RGVjbEhhbmRsZXI7CiAgICAgY2FzZSBYTUxfUk9MRV9BVFRSSUJVVEVfVFlQRV9OTVRPS0VOOgotICAgICAgZGVjbEF0dHJpYnV0ZVR5cGUgPSBhdHlwZU5NVE9LRU47CisgICAgICBwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZVR5cGUgPSBhdHlwZU5NVE9LRU47CiAgICAgICBnb3RvIGNoZWNrQXR0TGlzdERlY2xIYW5kbGVyOwogICAgIGNhc2UgWE1MX1JPTEVfQVRUUklCVVRFX1RZUEVfTk1UT0tFTlM6Ci0gICAgICBkZWNsQXR0cmlidXRlVHlwZSA9IGF0eXBlTk1UT0tFTlM7CisgICAgICBwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZVR5cGUgPSBhdHlwZU5NVE9LRU5TOwogICAgIGNoZWNrQXR0TGlzdERlY2xIYW5kbGVyOgotICAgICAgaWYgKGR0ZC0+a2VlcFByb2Nlc3NpbmcgJiYgYXR0bGlzdERlY2xIYW5kbGVyKQorICAgICAgaWYgKGR0ZC0+a2VlcFByb2Nlc3NpbmcgJiYgcGFyc2VyLT5tX2F0dGxpc3REZWNsSGFuZGxlcikKICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1JPTEVfQVRUUklCVVRFX0VOVU1fVkFMVUU6CiAgICAgY2FzZSBYTUxfUk9MRV9BVFRSSUJVVEVfTk9UQVRJT05fVkFMVUU6Ci0gICAgICBpZiAoZHRkLT5rZWVwUHJvY2Vzc2luZyAmJiBhdHRsaXN0RGVjbEhhbmRsZXIpIHsKKyAgICAgIGlmIChkdGQtPmtlZXBQcm9jZXNzaW5nICYmIHBhcnNlci0+bV9hdHRsaXN0RGVjbEhhbmRsZXIpIHsKICAgICAgICAgY29uc3QgWE1MX0NoYXIgKnByZWZpeDsKLSAgICAgICAgaWYgKGRlY2xBdHRyaWJ1dGVUeXBlKSB7CisgICAgICAgIGlmIChwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZVR5cGUpIHsKICAgICAgICAgICBwcmVmaXggPSBlbnVtVmFsdWVTZXA7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CkBAIC00MTE5LDM3ICs0NjMxLDM3IEBACiAgICAgICAgICAgICAgICAgICAgID8gbm90YXRpb25QcmVmaXgKICAgICAgICAgICAgICAgICAgICAgOiBlbnVtVmFsdWVTdGFydCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFwb29sQXBwZW5kU3RyaW5nKCZ0ZW1wUG9vbCwgcHJlZml4KSkKKyAgICAgICAgaWYgKCFwb29sQXBwZW5kU3RyaW5nKCZwYXJzZXItPm1fdGVtcFBvb2wsIHByZWZpeCkpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgIGlmICghcG9vbEFwcGVuZCgmdGVtcFBvb2wsIGVuYywgcywgbmV4dCkpCisgICAgICAgIGlmICghcG9vbEFwcGVuZCgmcGFyc2VyLT5tX3RlbXBQb29sLCBlbmMsIHMsIG5leHQpKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICBkZWNsQXR0cmlidXRlVHlwZSA9IHRlbXBQb29sLnN0YXJ0OworICAgICAgICBwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZVR5cGUgPSBwYXJzZXItPm1fdGVtcFBvb2wuc3RhcnQ7CiAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX0lNUExJRURfQVRUUklCVVRFX1ZBTFVFOgogICAgIGNhc2UgWE1MX1JPTEVfUkVRVUlSRURfQVRUUklCVVRFX1ZBTFVFOgogICAgICAgaWYgKGR0ZC0+a2VlcFByb2Nlc3NpbmcpIHsKLSAgICAgICAgaWYgKCFkZWZpbmVBdHRyaWJ1dGUoZGVjbEVsZW1lbnRUeXBlLCBkZWNsQXR0cmlidXRlSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xBdHRyaWJ1dGVJc0NkYXRhLCBkZWNsQXR0cmlidXRlSXNJZCwKKyAgICAgICAgaWYgKCFkZWZpbmVBdHRyaWJ1dGUocGFyc2VyLT5tX2RlY2xFbGVtZW50VHlwZSwgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVJc0NkYXRhLCBwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZUlzSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHBhcnNlcikpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgIGlmIChhdHRsaXN0RGVjbEhhbmRsZXIgJiYgZGVjbEF0dHJpYnV0ZVR5cGUpIHsKLSAgICAgICAgICBpZiAoKmRlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKEFTQ0lJX0xQQVJFTikKLSAgICAgICAgICAgICAgfHwgKCpkZWNsQXR0cmlidXRlVHlwZSA9PSBYTUxfVChBU0NJSV9OKQotICAgICAgICAgICAgICAgICAgJiYgZGVjbEF0dHJpYnV0ZVR5cGVbMV0gPT0gWE1MX1QoQVNDSUlfTykpKSB7CisgICAgICAgIGlmIChwYXJzZXItPm1fYXR0bGlzdERlY2xIYW5kbGVyICYmIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZSkgeworICAgICAgICAgIGlmICgqcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKEFTQ0lJX0xQQVJFTikKKyAgICAgICAgICAgICAgfHwgKCpwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoQVNDSUlfTikKKyAgICAgICAgICAgICAgICAgICYmIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZVsxXSA9PSBYTUxfVChBU0NJSV9PKSkpIHsKICAgICAgICAgICAgIC8qIEVudW1lcmF0ZWQgb3IgTm90YXRpb24gdHlwZSAqLwotICAgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKEFTQ0lJX1JQQVJFTikpCi0gICAgICAgICAgICAgICAgfHwgIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJ1wwJykpKQorICAgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCBYTUxfVChBU0NJSV9SUEFSRU4pKQorICAgICAgICAgICAgICAgIHx8ICFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCBYTUxfVCgnXDAnKSkpCiAgICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICAgICAgZGVjbEF0dHJpYnV0ZVR5cGUgPSB0ZW1wUG9vbC5zdGFydDsKLSAgICAgICAgICAgIHBvb2xGaW5pc2goJnRlbXBQb29sKTsKKyAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZSA9IHBhcnNlci0+bV90ZW1wUG9vbC5zdGFydDsKKyAgICAgICAgICAgIHBvb2xGaW5pc2goJnBhcnNlci0+bV90ZW1wUG9vbCk7CiAgICAgICAgICAgfQogICAgICAgICAgICpldmVudEVuZFBQID0gczsKLSAgICAgICAgICBhdHRsaXN0RGVjbEhhbmRsZXIoaGFuZGxlckFyZywgZGVjbEVsZW1lbnRUeXBlLT5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsQXR0cmlidXRlSWQtPm5hbWUsIGRlY2xBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgIHBhcnNlci0+bV9hdHRsaXN0RGVjbEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIHBhcnNlci0+bV9kZWNsRWxlbWVudFR5cGUtPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlSWQtPm5hbWUsIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgcm9sZSA9PSBYTUxfUk9MRV9SRVFVSVJFRF9BVFRSSUJVVEVfVkFMVUUpOwotICAgICAgICAgIHBvb2xDbGVhcigmdGVtcFBvb2wpOworICAgICAgICAgIHBvb2xDbGVhcigmcGFyc2VyLT5tX3RlbXBQb29sKTsKICAgICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgICB9CiAgICAgICB9CkBAIC00MTU5LDcgKzQ2NzEsNyBAQAogICAgICAgaWYgKGR0ZC0+a2VlcFByb2Nlc3NpbmcpIHsKICAgICAgICAgY29uc3QgWE1MX0NoYXIgKmF0dFZhbDsKICAgICAgICAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0KLSAgICAgICAgICBzdG9yZUF0dHJpYnV0ZVZhbHVlKHBhcnNlciwgZW5jLCBkZWNsQXR0cmlidXRlSXNDZGF0YSwKKyAgICAgICAgICBzdG9yZUF0dHJpYnV0ZVZhbHVlKHBhcnNlciwgZW5jLCBwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZUlzQ2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICsgZW5jLT5taW5CeXRlc1BlckNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IC0gZW5jLT5taW5CeXRlc1BlckNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZHRkLT5wb29sKTsKQEAgLTQxNjgsMjYgKzQ2ODAsMjYgQEAKICAgICAgICAgYXR0VmFsID0gcG9vbFN0YXJ0KCZkdGQtPnBvb2wpOwogICAgICAgICBwb29sRmluaXNoKCZkdGQtPnBvb2wpOwogICAgICAgICAvKiBJRCBhdHRyaWJ1dGVzIGFyZW4ndCBhbGxvd2VkIHRvIGhhdmUgYSBkZWZhdWx0ICovCi0gICAgICAgIGlmICghZGVmaW5lQXR0cmlidXRlKGRlY2xFbGVtZW50VHlwZSwgZGVjbEF0dHJpYnV0ZUlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsQXR0cmlidXRlSXNDZGF0YSwgWE1MX0ZBTFNFLCBhdHRWYWwsIHBhcnNlcikpCisgICAgICAgIGlmICghZGVmaW5lQXR0cmlidXRlKHBhcnNlci0+bV9kZWNsRWxlbWVudFR5cGUsIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlSXNDZGF0YSwgWE1MX0ZBTFNFLCBhdHRWYWwsIHBhcnNlcikpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgIGlmIChhdHRsaXN0RGVjbEhhbmRsZXIgJiYgZGVjbEF0dHJpYnV0ZVR5cGUpIHsKLSAgICAgICAgICBpZiAoKmRlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKEFTQ0lJX0xQQVJFTikKLSAgICAgICAgICAgICAgfHwgKCpkZWNsQXR0cmlidXRlVHlwZSA9PSBYTUxfVChBU0NJSV9OKQotICAgICAgICAgICAgICAgICAgJiYgZGVjbEF0dHJpYnV0ZVR5cGVbMV0gPT0gWE1MX1QoQVNDSUlfTykpKSB7CisgICAgICAgIGlmIChwYXJzZXItPm1fYXR0bGlzdERlY2xIYW5kbGVyICYmIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZSkgeworICAgICAgICAgIGlmICgqcGFyc2VyLT5tX2RlY2xBdHRyaWJ1dGVUeXBlID09IFhNTF9UKEFTQ0lJX0xQQVJFTikKKyAgICAgICAgICAgICAgfHwgKCpwYXJzZXItPm1fZGVjbEF0dHJpYnV0ZVR5cGUgPT0gWE1MX1QoQVNDSUlfTikKKyAgICAgICAgICAgICAgICAgICYmIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZVsxXSA9PSBYTUxfVChBU0NJSV9PKSkpIHsKICAgICAgICAgICAgIC8qIEVudW1lcmF0ZWQgb3IgTm90YXRpb24gdHlwZSAqLwotICAgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKEFTQ0lJX1JQQVJFTikpCi0gICAgICAgICAgICAgICAgfHwgIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJ1wwJykpKQorICAgICAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCBYTUxfVChBU0NJSV9SUEFSRU4pKQorICAgICAgICAgICAgICAgIHx8ICFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCBYTUxfVCgnXDAnKSkpCiAgICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICAgICAgZGVjbEF0dHJpYnV0ZVR5cGUgPSB0ZW1wUG9vbC5zdGFydDsKLSAgICAgICAgICAgIHBvb2xGaW5pc2goJnRlbXBQb29sKTsKKyAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZSA9IHBhcnNlci0+bV90ZW1wUG9vbC5zdGFydDsKKyAgICAgICAgICAgIHBvb2xGaW5pc2goJnBhcnNlci0+bV90ZW1wUG9vbCk7CiAgICAgICAgICAgfQogICAgICAgICAgICpldmVudEVuZFBQID0gczsKLSAgICAgICAgICBhdHRsaXN0RGVjbEhhbmRsZXIoaGFuZGxlckFyZywgZGVjbEVsZW1lbnRUeXBlLT5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsQXR0cmlidXRlSWQtPm5hbWUsIGRlY2xBdHRyaWJ1dGVUeXBlLAorICAgICAgICAgIHBhcnNlci0+bV9hdHRsaXN0RGVjbEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIHBhcnNlci0+bV9kZWNsRWxlbWVudFR5cGUtPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlSWQtPm5hbWUsIHBhcnNlci0+bV9kZWNsQXR0cmlidXRlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0VmFsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb2xlID09IFhNTF9ST0xFX0ZJWEVEX0FUVFJJQlVURV9WQUxVRSk7Ci0gICAgICAgICAgcG9vbENsZWFyKCZ0ZW1wUG9vbCk7CisgICAgICAgICAgcG9vbENsZWFyKCZwYXJzZXItPm1fdGVtcFBvb2wpOwogICAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTQxOTcsMTggKzQ3MDksMTggQEAKICAgICAgICAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gc3RvcmVFbnRpdHlWYWx1ZShwYXJzZXIsIGVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArIGVuYy0+bWluQnl0ZXNQZXJDaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IC0gZW5jLT5taW5CeXRlc1BlckNoYXIpOwotICAgICAgICBpZiAoZGVjbEVudGl0eSkgewotICAgICAgICAgIGRlY2xFbnRpdHktPnRleHRQdHIgPSBwb29sU3RhcnQoJmR0ZC0+ZW50aXR5VmFsdWVQb29sKTsKLSAgICAgICAgICBkZWNsRW50aXR5LT50ZXh0TGVuID0gKGludCkocG9vbExlbmd0aCgmZHRkLT5lbnRpdHlWYWx1ZVBvb2wpKTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9kZWNsRW50aXR5KSB7CisgICAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHktPnRleHRQdHIgPSBwb29sU3RhcnQoJmR0ZC0+ZW50aXR5VmFsdWVQb29sKTsKKyAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+dGV4dExlbiA9IChpbnQpKHBvb2xMZW5ndGgoJmR0ZC0+ZW50aXR5VmFsdWVQb29sKSk7CiAgICAgICAgICAgcG9vbEZpbmlzaCgmZHRkLT5lbnRpdHlWYWx1ZVBvb2wpOwotICAgICAgICAgIGlmIChlbnRpdHlEZWNsSGFuZGxlcikgeworICAgICAgICAgIGlmIChwYXJzZXItPm1fZW50aXR5RGVjbEhhbmRsZXIpIHsKICAgICAgICAgICAgICpldmVudEVuZFBQID0gczsKLSAgICAgICAgICAgIGVudGl0eURlY2xIYW5kbGVyKGhhbmRsZXJBcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsRW50aXR5LT5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbEVudGl0eS0+aXNfcGFyYW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsRW50aXR5LT50ZXh0UHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbEVudGl0eS0+dGV4dExlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1ckJhc2UsIDAsIDAsIDApOworICAgICAgICAgICAgcGFyc2VyLT5tX2VudGl0eURlY2xIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHktPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+aXNfcGFyYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+dGV4dFB0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5LT50ZXh0TGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2N1ckJhc2UsIDAsIDAsIDApOwogICAgICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQyMjAsOTcgKzQ3MzIsMTAwIEBACiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX0RPQ1RZUEVfU1lTVEVNX0lEOgogI2lmZGVmIFhNTF9EVEQKLSAgICAgIHVzZUZvcmVpZ25EVEQgPSBYTUxfRkFMU0U7CisgICAgICBwYXJzZXItPm1fdXNlRm9yZWlnbkRURCA9IFhNTF9GQUxTRTsKICNlbmRpZiAvKiBYTUxfRFREICovCiAgICAgICBkdGQtPmhhc1BhcmFtRW50aXR5UmVmcyA9IFhNTF9UUlVFOwotICAgICAgaWYgKHN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKSB7Ci0gICAgICAgIGRvY3R5cGVTeXNpZCA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsIGVuYywKKyAgICAgIGlmIChwYXJzZXItPm1fc3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpIHsKKyAgICAgICAgcGFyc2VyLT5tX2RvY3R5cGVTeXNpZCA9IHBvb2xTdG9yZVN0cmluZygmcGFyc2VyLT5tX3RlbXBQb29sLCBlbmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzICsgZW5jLT5taW5CeXRlc1BlckNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IC0gZW5jLT5taW5CeXRlc1BlckNoYXIpOwotICAgICAgICBpZiAoZG9jdHlwZVN5c2lkID09IE5VTEwpCisgICAgICAgIGlmIChwYXJzZXItPm1fZG9jdHlwZVN5c2lkID09IE5VTEwpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgIHBvb2xGaW5pc2goJnRlbXBQb29sKTsKKyAgICAgICAgcG9vbEZpbmlzaCgmcGFyc2VyLT5tX3RlbXBQb29sKTsKICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgIH0KICNpZmRlZiBYTUxfRFRECiAgICAgICBlbHNlCi0gICAgICAgIC8qIHVzZSBleHRlcm5hbFN1YnNldE5hbWUgdG8gbWFrZSBkb2N0eXBlU3lzaWQgbm9uLU5VTEwKLSAgICAgICAgICAgZm9yIHRoZSBjYXNlIHdoZXJlIG5vIHN0YXJ0RG9jdHlwZURlY2xIYW5kbGVyIGlzIHNldCAqLwotICAgICAgICBkb2N0eXBlU3lzaWQgPSBleHRlcm5hbFN1YnNldE5hbWU7CisgICAgICAgIC8qIHVzZSBleHRlcm5hbFN1YnNldE5hbWUgdG8gbWFrZSBwYXJzZXItPm1fZG9jdHlwZVN5c2lkIG5vbi1OVUxMCisgICAgICAgICAgIGZvciB0aGUgY2FzZSB3aGVyZSBubyBwYXJzZXItPm1fc3RhcnREb2N0eXBlRGVjbEhhbmRsZXIgaXMgc2V0ICovCisgICAgICAgIHBhcnNlci0+bV9kb2N0eXBlU3lzaWQgPSBleHRlcm5hbFN1YnNldE5hbWU7CiAjZW5kaWYgLyogWE1MX0RURCAqLwogICAgICAgaWYgKCFkdGQtPnN0YW5kYWxvbmUKICNpZmRlZiBYTUxfRFRECi0gICAgICAgICAgJiYgIXBhcmFtRW50aXR5UGFyc2luZworICAgICAgICAgICYmICFwYXJzZXItPm1fcGFyYW1FbnRpdHlQYXJzaW5nCiAjZW5kaWYgLyogWE1MX0RURCAqLwotICAgICAgICAgICYmIG5vdFN0YW5kYWxvbmVIYW5kbGVyCi0gICAgICAgICAgJiYgIW5vdFN0YW5kYWxvbmVIYW5kbGVyKGhhbmRsZXJBcmcpKQorICAgICAgICAgICYmIHBhcnNlci0+bV9ub3RTdGFuZGFsb25lSGFuZGxlcgorICAgICAgICAgICYmICFwYXJzZXItPm1fbm90U3RhbmRhbG9uZUhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcpKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PVF9TVEFOREFMT05FOwogI2lmbmRlZiBYTUxfRFRECiAgICAgICBicmVhazsKICNlbHNlIC8qIFhNTF9EVEQgKi8KLSAgICAgIGlmICghZGVjbEVudGl0eSkgewotICAgICAgICBkZWNsRW50aXR5ID0gKEVOVElUWSAqKWxvb2t1cChwYXJzZXIsCisgICAgICBpZiAoIXBhcnNlci0+bV9kZWNsRW50aXR5KSB7CisgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5ID0gKEVOVElUWSAqKWxvb2t1cChwYXJzZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdGQtPnBhcmFtRW50aXRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsU3Vic2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEVOVElUWSkpOwotICAgICAgICBpZiAoIWRlY2xFbnRpdHkpCisgICAgICAgIGlmICghcGFyc2VyLT5tX2RlY2xFbnRpdHkpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgIGRlY2xFbnRpdHktPnB1YmxpY0lkID0gTlVMTDsKKyAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHktPnB1YmxpY0lkID0gTlVMTDsKICAgICAgIH0KLSAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogI2VuZGlmIC8qIFhNTF9EVEQgKi8KKyAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGNhc2UgWE1MX1JPTEVfRU5USVRZX1NZU1RFTV9JRDoKLSAgICAgIGlmIChkdGQtPmtlZXBQcm9jZXNzaW5nICYmIGRlY2xFbnRpdHkpIHsKLSAgICAgICAgZGVjbEVudGl0eS0+c3lzdGVtSWQgPSBwb29sU3RvcmVTdHJpbmcoJmR0ZC0+cG9vbCwgZW5jLAorICAgICAgaWYgKGR0ZC0+a2VlcFByb2Nlc3NpbmcgJiYgcGFyc2VyLT5tX2RlY2xFbnRpdHkpIHsKKyAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHktPnN5c3RlbUlkID0gcG9vbFN0b3JlU3RyaW5nKCZkdGQtPnBvb2wsIGVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArIGVuYy0+bWluQnl0ZXNQZXJDaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IC0gZW5jLT5taW5CeXRlc1BlckNoYXIpOwotICAgICAgICBpZiAoIWRlY2xFbnRpdHktPnN5c3RlbUlkKQorICAgICAgICBpZiAoIXBhcnNlci0+bV9kZWNsRW50aXR5LT5zeXN0ZW1JZCkKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKLSAgICAgICAgZGVjbEVudGl0eS0+YmFzZSA9IGN1ckJhc2U7CisgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5LT5iYXNlID0gcGFyc2VyLT5tX2N1ckJhc2U7CiAgICAgICAgIHBvb2xGaW5pc2goJmR0ZC0+cG9vbCk7Ci0gICAgICAgIGlmIChlbnRpdHlEZWNsSGFuZGxlcikKKyAgICAgICAgLyogRG9uJ3Qgc3VwcHJlc3MgdGhlIGRlZmF1bHQgaGFuZGxlciBpZiB3ZSBmZWxsIHRocm91Z2ggZnJvbQorICAgICAgICAgKiB0aGUgWE1MX1JPTEVfRE9DVFlQRV9TWVNURU1fSUQgY2FzZS4KKyAgICAgICAgICovCisgICAgICAgIGlmIChwYXJzZXItPm1fZW50aXR5RGVjbEhhbmRsZXIgJiYgcm9sZSA9PSBYTUxfUk9MRV9FTlRJVFlfU1lTVEVNX0lEKQogICAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX0VOVElUWV9DT01QTEVURToKLSAgICAgIGlmIChkdGQtPmtlZXBQcm9jZXNzaW5nICYmIGRlY2xFbnRpdHkgJiYgZW50aXR5RGVjbEhhbmRsZXIpIHsKKyAgICAgIGlmIChkdGQtPmtlZXBQcm9jZXNzaW5nICYmIHBhcnNlci0+bV9kZWNsRW50aXR5ICYmIHBhcnNlci0+bV9lbnRpdHlEZWNsSGFuZGxlcikgewogICAgICAgICAqZXZlbnRFbmRQUCA9IHM7Ci0gICAgICAgIGVudGl0eURlY2xIYW5kbGVyKGhhbmRsZXJBcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xFbnRpdHktPm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xFbnRpdHktPmlzX3BhcmFtLAorICAgICAgICBwYXJzZXItPm1fZW50aXR5RGVjbEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5LT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+aXNfcGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbEVudGl0eS0+YmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbEVudGl0eS0+c3lzdGVtSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xFbnRpdHktPnB1YmxpY0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHktPnN5c3RlbUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+cHVibGljSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwogICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9FTlRJVFlfTk9UQVRJT05fTkFNRToKLSAgICAgIGlmIChkdGQtPmtlZXBQcm9jZXNzaW5nICYmIGRlY2xFbnRpdHkpIHsKLSAgICAgICAgZGVjbEVudGl0eS0+bm90YXRpb24gPSBwb29sU3RvcmVTdHJpbmcoJmR0ZC0+cG9vbCwgZW5jLCBzLCBuZXh0KTsKLSAgICAgICAgaWYgKCFkZWNsRW50aXR5LT5ub3RhdGlvbikKKyAgICAgIGlmIChkdGQtPmtlZXBQcm9jZXNzaW5nICYmIHBhcnNlci0+bV9kZWNsRW50aXR5KSB7CisgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5LT5ub3RhdGlvbiA9IHBvb2xTdG9yZVN0cmluZygmZHRkLT5wb29sLCBlbmMsIHMsIG5leHQpOworICAgICAgICBpZiAoIXBhcnNlci0+bV9kZWNsRW50aXR5LT5ub3RhdGlvbikKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgcG9vbEZpbmlzaCgmZHRkLT5wb29sKTsKLSAgICAgICAgaWYgKHVucGFyc2VkRW50aXR5RGVjbEhhbmRsZXIpIHsKKyAgICAgICAgaWYgKHBhcnNlci0+bV91bnBhcnNlZEVudGl0eURlY2xIYW5kbGVyKSB7CiAgICAgICAgICAgKmV2ZW50RW5kUFAgPSBzOwotICAgICAgICAgIHVucGFyc2VkRW50aXR5RGVjbEhhbmRsZXIoaGFuZGxlckFyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xFbnRpdHktPm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsRW50aXR5LT5iYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbEVudGl0eS0+c3lzdGVtSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsRW50aXR5LT5wdWJsaWNJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xFbnRpdHktPm5vdGF0aW9uKTsKKyAgICAgICAgICBwYXJzZXItPm1fdW5wYXJzZWRFbnRpdHlEZWNsSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5LT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHktPmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+c3lzdGVtSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+cHVibGljSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+bm90YXRpb24pOwogICAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZW50aXR5RGVjbEhhbmRsZXIpIHsKKyAgICAgICAgZWxzZSBpZiAocGFyc2VyLT5tX2VudGl0eURlY2xIYW5kbGVyKSB7CiAgICAgICAgICAgKmV2ZW50RW5kUFAgPSBzOwotICAgICAgICAgIGVudGl0eURlY2xIYW5kbGVyKGhhbmRsZXJBcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbEVudGl0eS0+bmFtZSwKKyAgICAgICAgICBwYXJzZXItPm1fZW50aXR5RGVjbEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHktPm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwwLDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbEVudGl0eS0+YmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsRW50aXR5LT5zeXN0ZW1JZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsRW50aXR5LT5wdWJsaWNJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNsRW50aXR5LT5ub3RhdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHktPmJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHktPnN5c3RlbUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5LT5wdWJsaWNJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+bm90YXRpb24pOwogICAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICAgIH0KICAgICAgIH0KQEAgLTQzMTgsMzYgKzQ4MzMsMzYgQEAKICAgICBjYXNlIFhNTF9ST0xFX0dFTkVSQUxfRU5USVRZX05BTUU6CiAgICAgICB7CiAgICAgICAgIGlmIChYbWxQcmVkZWZpbmVkRW50aXR5TmFtZShlbmMsIHMsIG5leHQpKSB7Ci0gICAgICAgICAgZGVjbEVudGl0eSA9IE5VTEw7CisgICAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHkgPSBOVUxMOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChkdGQtPmtlZXBQcm9jZXNzaW5nKSB7CiAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKm5hbWUgPSBwb29sU3RvcmVTdHJpbmcoJmR0ZC0+cG9vbCwgZW5jLCBzLCBuZXh0KTsKICAgICAgICAgICBpZiAoIW5hbWUpCiAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKLSAgICAgICAgICBkZWNsRW50aXR5ID0gKEVOVElUWSAqKWxvb2t1cChwYXJzZXIsICZkdGQtPmdlbmVyYWxFbnRpdGllcywgbmFtZSwKKyAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eSA9IChFTlRJVFkgKilsb29rdXAocGFyc2VyLCAmZHRkLT5nZW5lcmFsRW50aXRpZXMsIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEVOVElUWSkpOwotICAgICAgICAgIGlmICghZGVjbEVudGl0eSkKKyAgICAgICAgICBpZiAoIXBhcnNlci0+bV9kZWNsRW50aXR5KQogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgICAgaWYgKGRlY2xFbnRpdHktPm5hbWUgIT0gbmFtZSkgeworICAgICAgICAgIGlmIChwYXJzZXItPm1fZGVjbEVudGl0eS0+bmFtZSAhPSBuYW1lKSB7CiAgICAgICAgICAgICBwb29sRGlzY2FyZCgmZHRkLT5wb29sKTsKLSAgICAgICAgICAgIGRlY2xFbnRpdHkgPSBOVUxMOworICAgICAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHkgPSBOVUxMOwogICAgICAgICAgIH0KICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIHBvb2xGaW5pc2goJmR0ZC0+cG9vbCk7Ci0gICAgICAgICAgICBkZWNsRW50aXR5LT5wdWJsaWNJZCA9IE5VTEw7Ci0gICAgICAgICAgICBkZWNsRW50aXR5LT5pc19wYXJhbSA9IFhNTF9GQUxTRTsKKyAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5LT5wdWJsaWNJZCA9IE5VTEw7CisgICAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+aXNfcGFyYW0gPSBYTUxfRkFMU0U7CiAgICAgICAgICAgICAvKiBpZiB3ZSBoYXZlIGEgcGFyZW50IHBhcnNlciBvciBhcmUgcmVhZGluZyBhbiBpbnRlcm5hbCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGVudGl0eSwgdGhlbiB0aGUgZW50aXR5IGRlY2xhcmF0aW9uIGlzIG5vdCBjb25zaWRlcmVkICJpbnRlcm5hbCIKICAgICAgICAgICAgICovCi0gICAgICAgICAgICBkZWNsRW50aXR5LT5pc19pbnRlcm5hbCA9ICEocGFyZW50UGFyc2VyIHx8IG9wZW5JbnRlcm5hbEVudGl0aWVzKTsKLSAgICAgICAgICAgIGlmIChlbnRpdHlEZWNsSGFuZGxlcikKKyAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5LT5pc19pbnRlcm5hbCA9ICEocGFyc2VyLT5tX3BhcmVudFBhcnNlciB8fCBwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMpOworICAgICAgICAgICAgaWYgKHBhcnNlci0+bV9lbnRpdHlEZWNsSGFuZGxlcikKICAgICAgICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgcG9vbERpc2NhcmQoJmR0ZC0+cG9vbCk7Ci0gICAgICAgICAgZGVjbEVudGl0eSA9IE5VTEw7CisgICAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHkgPSBOVUxMOwogICAgICAgICB9CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTQzNTcsOTAgKzQ4NzIsOTAgQEAKICAgICAgICAgY29uc3QgWE1MX0NoYXIgKm5hbWUgPSBwb29sU3RvcmVTdHJpbmcoJmR0ZC0+cG9vbCwgZW5jLCBzLCBuZXh0KTsKICAgICAgICAgaWYgKCFuYW1lKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwotICAgICAgICBkZWNsRW50aXR5ID0gKEVOVElUWSAqKWxvb2t1cChwYXJzZXIsICZkdGQtPnBhcmFtRW50aXRpZXMsCisgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5ID0gKEVOVElUWSAqKWxvb2t1cChwYXJzZXIsICZkdGQtPnBhcmFtRW50aXRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2l6ZW9mKEVOVElUWSkpOwotICAgICAgICBpZiAoIWRlY2xFbnRpdHkpCisgICAgICAgIGlmICghcGFyc2VyLT5tX2RlY2xFbnRpdHkpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgIGlmIChkZWNsRW50aXR5LT5uYW1lICE9IG5hbWUpIHsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9kZWNsRW50aXR5LT5uYW1lICE9IG5hbWUpIHsKICAgICAgICAgICBwb29sRGlzY2FyZCgmZHRkLT5wb29sKTsKLSAgICAgICAgICBkZWNsRW50aXR5ID0gTlVMTDsKKyAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eSA9IE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgcG9vbEZpbmlzaCgmZHRkLT5wb29sKTsKLSAgICAgICAgICBkZWNsRW50aXR5LT5wdWJsaWNJZCA9IE5VTEw7Ci0gICAgICAgICAgZGVjbEVudGl0eS0+aXNfcGFyYW0gPSBYTUxfVFJVRTsKKyAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+cHVibGljSWQgPSBOVUxMOworICAgICAgICAgIHBhcnNlci0+bV9kZWNsRW50aXR5LT5pc19wYXJhbSA9IFhNTF9UUlVFOwogICAgICAgICAgIC8qIGlmIHdlIGhhdmUgYSBwYXJlbnQgcGFyc2VyIG9yIGFyZSByZWFkaW5nIGFuIGludGVybmFsIHBhcmFtZXRlcgogICAgICAgICAgICAgIGVudGl0eSwgdGhlbiB0aGUgZW50aXR5IGRlY2xhcmF0aW9uIGlzIG5vdCBjb25zaWRlcmVkICJpbnRlcm5hbCIKICAgICAgICAgICAqLwotICAgICAgICAgIGRlY2xFbnRpdHktPmlzX2ludGVybmFsID0gIShwYXJlbnRQYXJzZXIgfHwgb3BlbkludGVybmFsRW50aXRpZXMpOwotICAgICAgICAgIGlmIChlbnRpdHlEZWNsSGFuZGxlcikKKyAgICAgICAgICBwYXJzZXItPm1fZGVjbEVudGl0eS0+aXNfaW50ZXJuYWwgPSAhKHBhcnNlci0+bV9wYXJlbnRQYXJzZXIgfHwgcGFyc2VyLT5tX29wZW5JbnRlcm5hbEVudGl0aWVzKTsKKyAgICAgICAgICBpZiAocGFyc2VyLT5tX2VudGl0eURlY2xIYW5kbGVyKQogICAgICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgICAgfQogICAgICAgfQogICAgICAgZWxzZSB7CiAgICAgICAgIHBvb2xEaXNjYXJkKCZkdGQtPnBvb2wpOwotICAgICAgICBkZWNsRW50aXR5ID0gTlVMTDsKKyAgICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHkgPSBOVUxMOwogICAgICAgfQogI2Vsc2UgLyogbm90IFhNTF9EVEQgKi8KLSAgICAgIGRlY2xFbnRpdHkgPSBOVUxMOworICAgICAgcGFyc2VyLT5tX2RlY2xFbnRpdHkgPSBOVUxMOwogI2VuZGlmIC8qIFhNTF9EVEQgKi8KICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1JPTEVfTk9UQVRJT05fTkFNRToKLSAgICAgIGRlY2xOb3RhdGlvblB1YmxpY0lkID0gTlVMTDsKLSAgICAgIGRlY2xOb3RhdGlvbk5hbWUgPSBOVUxMOwotICAgICAgaWYgKG5vdGF0aW9uRGVjbEhhbmRsZXIpIHsKLSAgICAgICAgZGVjbE5vdGF0aW9uTmFtZSA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsIGVuYywgcywgbmV4dCk7Ci0gICAgICAgIGlmICghZGVjbE5vdGF0aW9uTmFtZSkKKyAgICAgIHBhcnNlci0+bV9kZWNsTm90YXRpb25QdWJsaWNJZCA9IE5VTEw7CisgICAgICBwYXJzZXItPm1fZGVjbE5vdGF0aW9uTmFtZSA9IE5VTEw7CisgICAgICBpZiAocGFyc2VyLT5tX25vdGF0aW9uRGVjbEhhbmRsZXIpIHsKKyAgICAgICAgcGFyc2VyLT5tX2RlY2xOb3RhdGlvbk5hbWUgPSBwb29sU3RvcmVTdHJpbmcoJnBhcnNlci0+bV90ZW1wUG9vbCwgZW5jLCBzLCBuZXh0KTsKKyAgICAgICAgaWYgKCFwYXJzZXItPm1fZGVjbE5vdGF0aW9uTmFtZSkKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKLSAgICAgICAgcG9vbEZpbmlzaCgmdGVtcFBvb2wpOworICAgICAgICBwb29sRmluaXNoKCZwYXJzZXItPm1fdGVtcFBvb2wpOwogICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9OT1RBVElPTl9QVUJMSUNfSUQ6CiAgICAgICBpZiAoIVhtbElzUHVibGljSWQoZW5jLCBzLCBuZXh0LCBldmVudFBQKSkKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9QVUJMSUNJRDsKLSAgICAgIGlmIChkZWNsTm90YXRpb25OYW1lKSB7ICAvKiBtZWFucyBub3RhdGlvbkRlY2xIYW5kbGVyICE9IE5VTEwgKi8KLSAgICAgICAgWE1MX0NoYXIgKnRlbSA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsCisgICAgICBpZiAocGFyc2VyLT5tX2RlY2xOb3RhdGlvbk5hbWUpIHsgIC8qIG1lYW5zIG1fbm90YXRpb25EZWNsSGFuZGxlciAhPSBOVUxMICovCisgICAgICAgIFhNTF9DaGFyICp0ZW0gPSBwb29sU3RvcmVTdHJpbmcoJnBhcnNlci0+bV90ZW1wUG9vbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArIGVuYy0+bWluQnl0ZXNQZXJDaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgLSBlbmMtPm1pbkJ5dGVzUGVyQ2hhcik7CiAgICAgICAgIGlmICghdGVtKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICBub3JtYWxpemVQdWJsaWNJZCh0ZW0pOwotICAgICAgICBkZWNsTm90YXRpb25QdWJsaWNJZCA9IHRlbTsKLSAgICAgICAgcG9vbEZpbmlzaCgmdGVtcFBvb2wpOworICAgICAgICBwYXJzZXItPm1fZGVjbE5vdGF0aW9uUHVibGljSWQgPSB0ZW07CisgICAgICAgIHBvb2xGaW5pc2goJnBhcnNlci0+bV90ZW1wUG9vbCk7CiAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX05PVEFUSU9OX1NZU1RFTV9JRDoKLSAgICAgIGlmIChkZWNsTm90YXRpb25OYW1lICYmIG5vdGF0aW9uRGVjbEhhbmRsZXIpIHsKKyAgICAgIGlmIChwYXJzZXItPm1fZGVjbE5vdGF0aW9uTmFtZSAmJiBwYXJzZXItPm1fbm90YXRpb25EZWNsSGFuZGxlcikgewogICAgICAgICBjb25zdCBYTUxfQ2hhciAqc3lzdGVtSWQKLSAgICAgICAgICA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsIGVuYywKKyAgICAgICAgICA9IHBvb2xTdG9yZVN0cmluZygmcGFyc2VyLT5tX3RlbXBQb29sLCBlbmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyArIGVuYy0+bWluQnl0ZXNQZXJDaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgLSBlbmMtPm1pbkJ5dGVzUGVyQ2hhcik7CiAgICAgICAgIGlmICghc3lzdGVtSWQpCiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgICpldmVudEVuZFBQID0gczsKLSAgICAgICAgbm90YXRpb25EZWNsSGFuZGxlcihoYW5kbGVyQXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xOb3RhdGlvbk5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyQmFzZSwKKyAgICAgICAgcGFyc2VyLT5tX25vdGF0aW9uRGVjbEhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2RlY2xOb3RhdGlvbk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VyLT5tX2N1ckJhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbE5vdGF0aW9uUHVibGljSWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9kZWNsTm90YXRpb25QdWJsaWNJZCk7CiAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICB9Ci0gICAgICBwb29sQ2xlYXIoJnRlbXBQb29sKTsKKyAgICAgIHBvb2xDbGVhcigmcGFyc2VyLT5tX3RlbXBQb29sKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1JPTEVfTk9UQVRJT05fTk9fU1lTVEVNX0lEOgotICAgICAgaWYgKGRlY2xOb3RhdGlvblB1YmxpY0lkICYmIG5vdGF0aW9uRGVjbEhhbmRsZXIpIHsKKyAgICAgIGlmIChwYXJzZXItPm1fZGVjbE5vdGF0aW9uUHVibGljSWQgJiYgcGFyc2VyLT5tX25vdGF0aW9uRGVjbEhhbmRsZXIpIHsKICAgICAgICAgKmV2ZW50RW5kUFAgPSBzOwotICAgICAgICBub3RhdGlvbkRlY2xIYW5kbGVyKGhhbmRsZXJBcmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjbE5vdGF0aW9uTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJCYXNlLAorICAgICAgICBwYXJzZXItPm1fbm90YXRpb25EZWNsSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbE5vdGF0aW9uTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fY3VyQmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xOb3RhdGlvblB1YmxpY0lkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZXItPm1fZGVjbE5vdGF0aW9uUHVibGljSWQpOwogICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgfQotICAgICAgcG9vbENsZWFyKCZ0ZW1wUG9vbCk7CisgICAgICBwb29sQ2xlYXIoJnBhcnNlci0+bV90ZW1wUG9vbCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX0VSUk9SOgogICAgICAgc3dpdGNoICh0b2spIHsKQEAgLTQ0NTcsNDEgKzQ5NzIsNDUgQEAKICAgICBjYXNlIFhNTF9ST0xFX0lHTk9SRV9TRUNUOgogICAgICAgewogICAgICAgICBlbnVtIFhNTF9FcnJvciByZXN1bHQ7Ci0gICAgICAgIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgICAgICAgaWYgKHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcikKICAgICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgICAgcmVzdWx0ID0gZG9JZ25vcmVTZWN0aW9uKHBhcnNlciwgZW5jLCAmbmV4dCwgZW5kLCBuZXh0UHRyLCBoYXZlTW9yZSk7CiAgICAgICAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCiAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgZWxzZSBpZiAoIW5leHQpIHsKLSAgICAgICAgICBwcm9jZXNzb3IgPSBpZ25vcmVTZWN0aW9uUHJvY2Vzc29yOworICAgICAgICAgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBpZ25vcmVTZWN0aW9uUHJvY2Vzc29yOwogICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgIH0KICAgICAgIGJyZWFrOwogI2VuZGlmIC8qIFhNTF9EVEQgKi8KICAgICBjYXNlIFhNTF9ST0xFX0dST1VQX09QRU46Ci0gICAgICBpZiAocHJvbG9nU3RhdGUubGV2ZWwgPj0gZ3JvdXBTaXplKSB7Ci0gICAgICAgIGlmIChncm91cFNpemUpIHsKLSAgICAgICAgICBjaGFyICp0ZW1wID0gKGNoYXIgKilSRUFMTE9DKGdyb3VwQ29ubmVjdG9yLCBncm91cFNpemUgKj0gMik7Ci0gICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgIGlmIChwYXJzZXItPm1fcHJvbG9nU3RhdGUubGV2ZWwgPj0gcGFyc2VyLT5tX2dyb3VwU2l6ZSkgeworICAgICAgICBpZiAocGFyc2VyLT5tX2dyb3VwU2l6ZSkgeworICAgICAgICAgIGNoYXIgKnRlbXAgPSAoY2hhciAqKVJFQUxMT0MocGFyc2VyLCBwYXJzZXItPm1fZ3JvdXBDb25uZWN0b3IsIHBhcnNlci0+bV9ncm91cFNpemUgKj0gMik7CisgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkgeworICAgICAgICAgICAgcGFyc2VyLT5tX2dyb3VwU2l6ZSAvPSAyOwogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7Ci0gICAgICAgICAgZ3JvdXBDb25uZWN0b3IgPSB0ZW1wOworICAgICAgICAgIH0KKyAgICAgICAgICBwYXJzZXItPm1fZ3JvdXBDb25uZWN0b3IgPSB0ZW1wOwogICAgICAgICAgIGlmIChkdGQtPnNjYWZmSW5kZXgpIHsKLSAgICAgICAgICAgIGludCAqdGVtcCA9IChpbnQgKilSRUFMTE9DKGR0ZC0+c2NhZmZJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBTaXplICogc2l6ZW9mKGludCkpOworICAgICAgICAgICAgaW50ICp0ZW1wID0gKGludCAqKVJFQUxMT0MocGFyc2VyLCBkdGQtPnNjYWZmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9ncm91cFNpemUgKiBzaXplb2YoaW50KSk7CiAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQogICAgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgICAgICAgIGR0ZC0+c2NhZmZJbmRleCA9IHRlbXA7CiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgIGdyb3VwQ29ubmVjdG9yID0gKGNoYXIgKilNQUxMT0MoZ3JvdXBTaXplID0gMzIpOwotICAgICAgICAgIGlmICghZ3JvdXBDb25uZWN0b3IpCisgICAgICAgICAgcGFyc2VyLT5tX2dyb3VwQ29ubmVjdG9yID0gKGNoYXIgKilNQUxMT0MocGFyc2VyLCBwYXJzZXItPm1fZ3JvdXBTaXplID0gMzIpOworICAgICAgICAgIGlmICghcGFyc2VyLT5tX2dyb3VwQ29ubmVjdG9yKSB7CisgICAgICAgICAgICBwYXJzZXItPm1fZ3JvdXBTaXplID0gMDsKICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOworICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQotICAgICAgZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdID0gMDsKKyAgICAgIHBhcnNlci0+bV9ncm91cENvbm5lY3RvcltwYXJzZXItPm1fcHJvbG9nU3RhdGUubGV2ZWxdID0gMDsKICAgICAgIGlmIChkdGQtPmluX2VsZGVjbCkgewogICAgICAgICBpbnQgbXlpbmRleCA9IG5leHRTY2FmZm9sZFBhcnQocGFyc2VyKTsKICAgICAgICAgaWYgKG15aW5kZXggPCAwKQpAQCAtNDQ5OSwzNyArNTAxOCwzNyBAQAogICAgICAgICBkdGQtPnNjYWZmSW5kZXhbZHRkLT5zY2FmZkxldmVsXSA9IG15aW5kZXg7CiAgICAgICAgIGR0ZC0+c2NhZmZMZXZlbCsrOwogICAgICAgICBkdGQtPnNjYWZmb2xkW215aW5kZXhdLnR5cGUgPSBYTUxfQ1RZUEVfU0VROwotICAgICAgICBpZiAoZWxlbWVudERlY2xIYW5kbGVyKQorICAgICAgICBpZiAocGFyc2VyLT5tX2VsZW1lbnREZWNsSGFuZGxlcikKICAgICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9HUk9VUF9TRVFVRU5DRToKLSAgICAgIGlmIChncm91cENvbm5lY3Rvcltwcm9sb2dTdGF0ZS5sZXZlbF0gPT0gQVNDSUlfUElQRSkKKyAgICAgIGlmIChwYXJzZXItPm1fZ3JvdXBDb25uZWN0b3JbcGFyc2VyLT5tX3Byb2xvZ1N0YXRlLmxldmVsXSA9PSBBU0NJSV9QSVBFKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX1NZTlRBWDsKLSAgICAgIGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9IEFTQ0lJX0NPTU1BOwotICAgICAgaWYgKGR0ZC0+aW5fZWxkZWNsICYmIGVsZW1lbnREZWNsSGFuZGxlcikKKyAgICAgIHBhcnNlci0+bV9ncm91cENvbm5lY3RvcltwYXJzZXItPm1fcHJvbG9nU3RhdGUubGV2ZWxdID0gQVNDSUlfQ09NTUE7CisgICAgICBpZiAoZHRkLT5pbl9lbGRlY2wgJiYgcGFyc2VyLT5tX2VsZW1lbnREZWNsSGFuZGxlcikKICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1JPTEVfR1JPVVBfQ0hPSUNFOgotICAgICAgaWYgKGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9PSBBU0NJSV9DT01NQSkKKyAgICAgIGlmIChwYXJzZXItPm1fZ3JvdXBDb25uZWN0b3JbcGFyc2VyLT5tX3Byb2xvZ1N0YXRlLmxldmVsXSA9PSBBU0NJSV9DT01NQSkKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9TWU5UQVg7CiAgICAgICBpZiAoZHRkLT5pbl9lbGRlY2wKLSAgICAgICAgICAmJiAhZ3JvdXBDb25uZWN0b3JbcHJvbG9nU3RhdGUubGV2ZWxdCisgICAgICAgICAgJiYgIXBhcnNlci0+bV9ncm91cENvbm5lY3RvcltwYXJzZXItPm1fcHJvbG9nU3RhdGUubGV2ZWxdCiAgICAgICAgICAgJiYgKGR0ZC0+c2NhZmZvbGRbZHRkLT5zY2FmZkluZGV4W2R0ZC0+c2NhZmZMZXZlbCAtIDFdXS50eXBlCiAgICAgICAgICAgICAgICE9IFhNTF9DVFlQRV9NSVhFRCkKICAgICAgICAgICApIHsKICAgICAgICAgZHRkLT5zY2FmZm9sZFtkdGQtPnNjYWZmSW5kZXhbZHRkLT5zY2FmZkxldmVsIC0gMV1dLnR5cGUKICAgICAgICAgICAgID0gWE1MX0NUWVBFX0NIT0lDRTsKLSAgICAgICAgaWYgKGVsZW1lbnREZWNsSGFuZGxlcikKKyAgICAgICAgaWYgKHBhcnNlci0+bV9lbGVtZW50RGVjbEhhbmRsZXIpCiAgICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgIH0KLSAgICAgIGdyb3VwQ29ubmVjdG9yW3Byb2xvZ1N0YXRlLmxldmVsXSA9IEFTQ0lJX1BJUEU7CisgICAgICBwYXJzZXItPm1fZ3JvdXBDb25uZWN0b3JbcGFyc2VyLT5tX3Byb2xvZ1N0YXRlLmxldmVsXSA9IEFTQ0lJX1BJUEU7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX1BBUkFNX0VOVElUWV9SRUY6CiAjaWZkZWYgWE1MX0RURAogICAgIGNhc2UgWE1MX1JPTEVfSU5ORVJfUEFSQU1fRU5USVRZX1JFRjoKICAgICAgIGR0ZC0+aGFzUGFyYW1FbnRpdHlSZWZzID0gWE1MX1RSVUU7Ci0gICAgICBpZiAoIXBhcmFtRW50aXR5UGFyc2luZykKKyAgICAgIGlmICghcGFyc2VyLT5tX3BhcmFtRW50aXR5UGFyc2luZykKICAgICAgICAgZHRkLT5rZWVwUHJvY2Vzc2luZyA9IGR0ZC0+c3RhbmRhbG9uZTsKICAgICAgIGVsc2UgewogICAgICAgICBjb25zdCBYTUxfQ2hhciAqbmFtZTsKQEAgLTQ1NDUsMjAgKzUwNjQsNDEgQEAKICAgICAgICAgICAgaWYgeWVzLCBjaGVjayB0aGF0IHRoZSBlbnRpdHkgZXhpc3RzLCBhbmQgdGhhdCBpdCBpcyBpbnRlcm5hbCwKICAgICAgICAgICAgb3RoZXJ3aXNlIGNhbGwgdGhlIHNraXBwZWQgZW50aXR5IGhhbmRsZXIKICAgICAgICAgKi8KLSAgICAgICAgaWYgKHByb2xvZ1N0YXRlLmRvY3VtZW50RW50aXR5ICYmCisgICAgICAgIGlmIChwYXJzZXItPm1fcHJvbG9nU3RhdGUuZG9jdW1lbnRFbnRpdHkgJiYKICAgICAgICAgICAgIChkdGQtPnN0YW5kYWxvbmUKLSAgICAgICAgICAgICA/ICFvcGVuSW50ZXJuYWxFbnRpdGllcworICAgICAgICAgICAgID8gIXBhcnNlci0+bV9vcGVuSW50ZXJuYWxFbnRpdGllcwogICAgICAgICAgICAgIDogIWR0ZC0+aGFzUGFyYW1FbnRpdHlSZWZzKSkgewogICAgICAgICAgIGlmICghZW50aXR5KQogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9VTkRFRklORURfRU5USVRZOwotICAgICAgICAgIGVsc2UgaWYgKCFlbnRpdHktPmlzX2ludGVybmFsKQotICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9FTlRJVFlfREVDTEFSRURfSU5fUEU7CisgICAgICAgICAgZWxzZSBpZiAoIWVudGl0eS0+aXNfaW50ZXJuYWwpIHsKKyAgICAgICAgICAgIC8qIEl0J3MgaGFyZCB0byBleGhhdXN0aXZlbHkgc2VhcmNoIHRoZSBjb2RlIHRvIGJlIHN1cmUsCisgICAgICAgICAgICAgKiBidXQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgd2F5IG9mIGV4ZWN1dGluZyB0aGUKKyAgICAgICAgICAgICAqIGZvbGxvd2luZyBsaW5lLiAgVGhlcmUgYXJlIHR3byBjYXNlczoKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBJZiAnc3RhbmRhbG9uZScgaXMgZmFsc2UsIHRoZSBEVEQgbXVzdCBoYXZlIG5vCisgICAgICAgICAgICAgKiBwYXJhbWV0ZXIgZW50aXRpZXMgb3Igd2Ugd291bGRuJ3QgaGF2ZSBwYXNzZWQgdGhlIG91dGVyCisgICAgICAgICAgICAgKiAnaWYnIHN0YXRlbWVudC4gIFRoYXQgbWVhc24gdGhlIG9ubHkgZW50aXR5IGluIHRoZSBoYXNoCisgICAgICAgICAgICAgKiB0YWJsZSBpcyB0aGUgZXh0ZXJuYWwgc3Vic2V0IG5hbWUgIiMiIHdoaWNoIGNhbm5vdCBiZQorICAgICAgICAgICAgICogZ2l2ZW4gYXMgYSBwYXJhbWV0ZXIgZW50aXR5IG5hbWUgaW4gWE1MIHN5bnRheCwgc28gdGhlCisgICAgICAgICAgICAgKiBsb29rdXAgbXVzdCBoYXZlIHJldHVybmVkIE5VTEwgYW5kIHdlIGRvbid0IGV2ZW4gcmVhY2gKKyAgICAgICAgICAgICAqIHRoZSB0ZXN0IGZvciBhbiBpbnRlcm5hbCBlbnRpdHkuCisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogSWYgJ3N0YW5kYWxvbmUnIGlzIHRydWUsIGl0IGRvZXMgbm90IHNlZW0gdG8gYmUKKyAgICAgICAgICAgICAqIHBvc3NpYmxlIHRvIGNyZWF0ZSBlbnRpdGllcyB0YWtpbmcgdGhpcyBjb2RlIHBhdGggdGhhdAorICAgICAgICAgICAgICogYXJlIG5vdCBpbnRlcm5hbCBlbnRpdGllcywgc28gZmFpbCB0aGUgdGVzdCBhYm92ZS4KKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBCZWNhdXNlIHRoaXMgYW5hbHlzaXMgaXMgdmVyeSB1bmNlcnRhaW4sIHRoZSBjb2RlIGlzCisgICAgICAgICAgICAgKiBiZWluZyBsZWZ0IGluIHBsYWNlIGFuZCBtZXJlbHkgcmVtb3ZlZCBmcm9tIHRoZQorICAgICAgICAgICAgICogY292ZXJhZ2UgdGVzdCBzdGF0aXN0aWNzLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX0VOVElUWV9ERUNMQVJFRF9JTl9QRTsgLyogTENPVl9FWENMX0xJTkUgKi8KKyAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAoIWVudGl0eSkgewogICAgICAgICAgIGR0ZC0+a2VlcFByb2Nlc3NpbmcgPSBkdGQtPnN0YW5kYWxvbmU7CiAgICAgICAgICAgLyogY2Fubm90IHJlcG9ydCBza2lwcGVkIGVudGl0aWVzIGluIGRlY2xhcmF0aW9ucyAqLwotICAgICAgICAgIGlmICgocm9sZSA9PSBYTUxfUk9MRV9QQVJBTV9FTlRJVFlfUkVGKSAmJiBza2lwcGVkRW50aXR5SGFuZGxlcikgewotICAgICAgICAgICAgc2tpcHBlZEVudGl0eUhhbmRsZXIoaGFuZGxlckFyZywgbmFtZSwgMSk7CisgICAgICAgICAgaWYgKChyb2xlID09IFhNTF9ST0xFX1BBUkFNX0VOVElUWV9SRUYpICYmIHBhcnNlci0+bV9za2lwcGVkRW50aXR5SGFuZGxlcikgeworICAgICAgICAgICAgcGFyc2VyLT5tX3NraXBwZWRFbnRpdHlIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCBuYW1lLCAxKTsKICAgICAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICAgICAgfQogICAgICAgICAgIGJyZWFrOwpAQCAtNDU3NSwxMCArNTExNSwxMCBAQAogICAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGV4dGVybmFsRW50aXR5UmVmSGFuZGxlcikgeworICAgICAgICBpZiAocGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlcikgewogICAgICAgICAgIGR0ZC0+cGFyYW1FbnRpdHlSZWFkID0gWE1MX0ZBTFNFOwogICAgICAgICAgIGVudGl0eS0+b3BlbiA9IFhNTF9UUlVFOwotICAgICAgICAgIGlmICghZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyKGV4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZywKKyAgICAgICAgICBpZiAoIXBhcnNlci0+bV9leHRlcm5hbEVudGl0eVJlZkhhbmRsZXIocGFyc2VyLT5tX2V4dGVybmFsRW50aXR5UmVmSGFuZGxlckFyZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eS0+YmFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHktPnN5c3RlbUlkLApAQCAtNDYwMCwxNyArNTE0MCwxNyBAQAogICAgICAgfQogI2VuZGlmIC8qIFhNTF9EVEQgKi8KICAgICAgIGlmICghZHRkLT5zdGFuZGFsb25lICYmCi0gICAgICAgICAgbm90U3RhbmRhbG9uZUhhbmRsZXIgJiYKLSAgICAgICAgICAhbm90U3RhbmRhbG9uZUhhbmRsZXIoaGFuZGxlckFyZykpCisgICAgICAgICAgcGFyc2VyLT5tX25vdFN0YW5kYWxvbmVIYW5kbGVyICYmCisgICAgICAgICAgIXBhcnNlci0+bV9ub3RTdGFuZGFsb25lSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZykpCiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9UX1NUQU5EQUxPTkU7CiAgICAgICBicmVhazsKIAogICAgIC8qIEVsZW1lbnQgZGVjbGFyYXRpb24gc3R1ZmYgKi8KIAogICAgIGNhc2UgWE1MX1JPTEVfRUxFTUVOVF9OQU1FOgotICAgICAgaWYgKGVsZW1lbnREZWNsSGFuZGxlcikgewotICAgICAgICBkZWNsRWxlbWVudFR5cGUgPSBnZXRFbGVtZW50VHlwZShwYXJzZXIsIGVuYywgcywgbmV4dCk7Ci0gICAgICAgIGlmICghZGVjbEVsZW1lbnRUeXBlKQorICAgICAgaWYgKHBhcnNlci0+bV9lbGVtZW50RGVjbEhhbmRsZXIpIHsKKyAgICAgICAgcGFyc2VyLT5tX2RlY2xFbGVtZW50VHlwZSA9IGdldEVsZW1lbnRUeXBlKHBhcnNlciwgZW5jLCBzLCBuZXh0KTsKKyAgICAgICAgaWYgKCFwYXJzZXItPm1fZGVjbEVsZW1lbnRUeXBlKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICBkdGQtPnNjYWZmTGV2ZWwgPSAwOwogICAgICAgICBkdGQtPnNjYWZmQ291bnQgPSAwOwpAQCAtNDYyMiw4ICs1MTYyLDggQEAKICAgICBjYXNlIFhNTF9ST0xFX0NPTlRFTlRfQU5ZOgogICAgIGNhc2UgWE1MX1JPTEVfQ09OVEVOVF9FTVBUWToKICAgICAgIGlmIChkdGQtPmluX2VsZGVjbCkgewotICAgICAgICBpZiAoZWxlbWVudERlY2xIYW5kbGVyKSB7Ci0gICAgICAgICAgWE1MX0NvbnRlbnQgKiBjb250ZW50ID0gKFhNTF9Db250ZW50ICopIE1BTExPQyhzaXplb2YoWE1MX0NvbnRlbnQpKTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9lbGVtZW50RGVjbEhhbmRsZXIpIHsKKyAgICAgICAgICBYTUxfQ29udGVudCAqIGNvbnRlbnQgPSAoWE1MX0NvbnRlbnQgKikgTUFMTE9DKHBhcnNlciwgc2l6ZW9mKFhNTF9Db250ZW50KSk7CiAgICAgICAgICAgaWYgKCFjb250ZW50KQogICAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICAgICAgY29udGVudC0+cXVhbnQgPSBYTUxfQ1FVQU5UX05PTkU7CkBAIC00NjM0LDcgKzUxNzQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgWE1MX0NUWVBFX0FOWSA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBYTUxfQ1RZUEVfRU1QVFkpOwogICAgICAgICAgICpldmVudEVuZFBQID0gczsKLSAgICAgICAgICBlbGVtZW50RGVjbEhhbmRsZXIoaGFuZGxlckFyZywgZGVjbEVsZW1lbnRUeXBlLT5uYW1lLCBjb250ZW50KTsKKyAgICAgICAgICBwYXJzZXItPm1fZWxlbWVudERlY2xIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCBwYXJzZXItPm1fZGVjbEVsZW1lbnRUeXBlLT5uYW1lLCBjb250ZW50KTsKICAgICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgICB9CiAgICAgICAgIGR0ZC0+aW5fZWxkZWNsID0gWE1MX0ZBTFNFOwpAQCAtNDY0NSw3ICs1MTg1LDcgQEAKICAgICAgIGlmIChkdGQtPmluX2VsZGVjbCkgewogICAgICAgICBkdGQtPnNjYWZmb2xkW2R0ZC0+c2NhZmZJbmRleFtkdGQtPnNjYWZmTGV2ZWwgLSAxXV0udHlwZQogICAgICAgICAgICAgPSBYTUxfQ1RZUEVfTUlYRUQ7Ci0gICAgICAgIGlmIChlbGVtZW50RGVjbEhhbmRsZXIpCisgICAgICAgIGlmIChwYXJzZXItPm1fZWxlbWVudERlY2xIYW5kbGVyKQogICAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTQ2ODIsNyArNTIyMiw3IEBACiAgICAgICAgIG5hbWVMZW4gPSAwOwogICAgICAgICBmb3IgKDsgbmFtZVtuYW1lTGVuKytdOyApOwogICAgICAgICBkdGQtPmNvbnRlbnRTdHJpbmdMZW4gKz0gIG5hbWVMZW47Ci0gICAgICAgIGlmIChlbGVtZW50RGVjbEhhbmRsZXIpCisgICAgICAgIGlmIChwYXJzZXItPm1fZWxlbWVudERlY2xIYW5kbGVyKQogICAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICB9CiAgICAgICBicmVhazsKQEAgLTQ3MDAsNyArNTI0MCw3IEBACiAgICAgICBxdWFudCA9IFhNTF9DUVVBTlRfUExVUzsKICAgICBjbG9zZUdyb3VwOgogICAgICAgaWYgKGR0ZC0+aW5fZWxkZWNsKSB7Ci0gICAgICAgIGlmIChlbGVtZW50RGVjbEhhbmRsZXIpCisgICAgICAgIGlmIChwYXJzZXItPm1fZWxlbWVudERlY2xIYW5kbGVyKQogICAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICAgIGR0ZC0+c2NhZmZMZXZlbC0tOwogICAgICAgICBkdGQtPnNjYWZmb2xkW2R0ZC0+c2NhZmZJbmRleFtkdGQtPnNjYWZmTGV2ZWxdXS5xdWFudCA9IHF1YW50OwpAQCAtNDcxMCw3ICs1MjUwLDcgQEAKICAgICAgICAgICAgIGlmICghbW9kZWwpCiAgICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICAgICAgKmV2ZW50RW5kUFAgPSBzOwotICAgICAgICAgICAgZWxlbWVudERlY2xIYW5kbGVyKGhhbmRsZXJBcmcsIGRlY2xFbGVtZW50VHlwZS0+bmFtZSwgbW9kZWwpOworICAgICAgICAgICAgcGFyc2VyLT5tX2VsZW1lbnREZWNsSGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywgcGFyc2VyLT5tX2RlY2xFbGVtZW50VHlwZS0+bmFtZSwgbW9kZWwpOwogICAgICAgICAgIH0KICAgICAgICAgICBkdGQtPmluX2VsZGVjbCA9IFhNTF9GQUxTRTsKICAgICAgICAgICBkdGQtPmNvbnRlbnRTdHJpbmdMZW4gPSAwOwpAQCAtNDczNywzMSArNTI3NywzMSBAQAogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9ET0NUWVBFX05PTkU6Ci0gICAgICBpZiAoc3RhcnREb2N0eXBlRGVjbEhhbmRsZXIpCisgICAgICBpZiAocGFyc2VyLT5tX3N0YXJ0RG9jdHlwZURlY2xIYW5kbGVyKQogICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9FTlRJVFlfTk9ORToKLSAgICAgIGlmIChkdGQtPmtlZXBQcm9jZXNzaW5nICYmIGVudGl0eURlY2xIYW5kbGVyKQorICAgICAgaWYgKGR0ZC0+a2VlcFByb2Nlc3NpbmcgJiYgcGFyc2VyLT5tX2VudGl0eURlY2xIYW5kbGVyKQogICAgICAgICBoYW5kbGVEZWZhdWx0ID0gWE1MX0ZBTFNFOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfUk9MRV9OT1RBVElPTl9OT05FOgotICAgICAgaWYgKG5vdGF0aW9uRGVjbEhhbmRsZXIpCisgICAgICBpZiAocGFyc2VyLT5tX25vdGF0aW9uRGVjbEhhbmRsZXIpCiAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX0FUVExJU1RfTk9ORToKLSAgICAgIGlmIChkdGQtPmtlZXBQcm9jZXNzaW5nICYmIGF0dGxpc3REZWNsSGFuZGxlcikKKyAgICAgIGlmIChkdGQtPmtlZXBQcm9jZXNzaW5nICYmIHBhcnNlci0+bV9hdHRsaXN0RGVjbEhhbmRsZXIpCiAgICAgICAgIGhhbmRsZURlZmF1bHQgPSBYTUxfRkFMU0U7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9ST0xFX0VMRU1FTlRfTk9ORToKLSAgICAgIGlmIChlbGVtZW50RGVjbEhhbmRsZXIpCisgICAgICBpZiAocGFyc2VyLT5tX2VsZW1lbnREZWNsSGFuZGxlcikKICAgICAgICAgaGFuZGxlRGVmYXVsdCA9IFhNTF9GQUxTRTsKICAgICAgIGJyZWFrOwogICAgIH0gLyogZW5kIG9mIGJpZyBzd2l0Y2ggKi8KIAotICAgIGlmIChoYW5kbGVEZWZhdWx0ICYmIGRlZmF1bHRIYW5kbGVyKQorICAgIGlmIChoYW5kbGVEZWZhdWx0ICYmIHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcikKICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmMsIHMsIG5leHQpOwogCi0gICAgc3dpdGNoIChwc19wYXJzaW5nKSB7CisgICAgc3dpdGNoIChwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5wYXJzaW5nKSB7CiAgICAgY2FzZSBYTUxfU1VTUEVOREVEOgogICAgICAgKm5leHRQdHIgPSBuZXh0OwogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwpAQCAtNDc4MSwxOCArNTMyMSwxOCBAQAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqbmV4dFB0cikKIHsKLSAgcHJvY2Vzc29yID0gZXBpbG9nUHJvY2Vzc29yOwotICBldmVudFB0ciA9IHM7CisgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBlcGlsb2dQcm9jZXNzb3I7CisgIHBhcnNlci0+bV9ldmVudFB0ciA9IHM7CiAgIGZvciAoOzspIHsKICAgICBjb25zdCBjaGFyICpuZXh0ID0gTlVMTDsKLSAgICBpbnQgdG9rID0gWG1sUHJvbG9nVG9rKGVuY29kaW5nLCBzLCBlbmQsICZuZXh0KTsKLSAgICBldmVudEVuZFB0ciA9IG5leHQ7CisgICAgaW50IHRvayA9IFhtbFByb2xvZ1RvayhwYXJzZXItPm1fZW5jb2RpbmcsIHMsIGVuZCwgJm5leHQpOworICAgIHBhcnNlci0+bV9ldmVudEVuZFB0ciA9IG5leHQ7CiAgICAgc3dpdGNoICh0b2spIHsKICAgICAvKiByZXBvcnQgcGFydGlhbCBsaW5lYnJlYWsgLSBpdCBtaWdodCBiZSB0aGUgbGFzdCB0b2tlbiAqLwogICAgIGNhc2UgLVhNTF9UT0tfUFJPTE9HX1M6Ci0gICAgICBpZiAoZGVmYXVsdEhhbmRsZXIpIHsKLSAgICAgICAgcmVwb3J0RGVmYXVsdChwYXJzZXIsIGVuY29kaW5nLCBzLCBuZXh0KTsKLSAgICAgICAgaWYgKHBzX3BhcnNpbmcgPT0gWE1MX0ZJTklTSEVEKQorICAgICAgaWYgKHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcikgeworICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgcGFyc2VyLT5tX2VuY29kaW5nLCBzLCBuZXh0KTsKKyAgICAgICAgaWYgKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcgPT0gWE1MX0ZJTklTSEVEKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfQUJPUlRFRDsKICAgICAgIH0KICAgICAgICpuZXh0UHRyID0gbmV4dDsKQEAgLTQ4MDEsMjggKzUzNDEsMjggQEAKICAgICAgICpuZXh0UHRyID0gczsKICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6Ci0gICAgICBpZiAoZGVmYXVsdEhhbmRsZXIpCi0gICAgICAgIHJlcG9ydERlZmF1bHQocGFyc2VyLCBlbmNvZGluZywgcywgbmV4dCk7CisgICAgICBpZiAocGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKQorICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgcGFyc2VyLT5tX2VuY29kaW5nLCBzLCBuZXh0KTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1RPS19QSToKLSAgICAgIGlmICghcmVwb3J0UHJvY2Vzc2luZ0luc3RydWN0aW9uKHBhcnNlciwgZW5jb2RpbmcsIHMsIG5leHQpKQorICAgICAgaWYgKCFyZXBvcnRQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24ocGFyc2VyLCBwYXJzZXItPm1fZW5jb2RpbmcsIHMsIG5leHQpKQogICAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgWE1MX1RPS19DT01NRU5UOgotICAgICAgaWYgKCFyZXBvcnRDb21tZW50KHBhcnNlciwgZW5jb2RpbmcsIHMsIG5leHQpKQorICAgICAgaWYgKCFyZXBvcnRDb21tZW50KHBhcnNlciwgcGFyc2VyLT5tX2VuY29kaW5nLCBzLCBuZXh0KSkKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT19NRU1PUlk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFhNTF9UT0tfSU5WQUxJRDoKLSAgICAgIGV2ZW50UHRyID0gbmV4dDsKKyAgICAgIHBhcnNlci0+bV9ldmVudFB0ciA9IG5leHQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX0lOVkFMSURfVE9LRU47CiAgICAgY2FzZSBYTUxfVE9LX1BBUlRJQUw6Ci0gICAgICBpZiAoIXBzX2ZpbmFsQnVmZmVyKSB7CisgICAgICBpZiAoIXBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyKSB7CiAgICAgICAgICpuZXh0UHRyID0gczsKICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9OT05FOwogICAgICAgfQogICAgICAgcmV0dXJuIFhNTF9FUlJPUl9VTkNMT1NFRF9UT0tFTjsKICAgICBjYXNlIFhNTF9UT0tfUEFSVElBTF9DSEFSOgotICAgICAgaWYgKCFwc19maW5hbEJ1ZmZlcikgeworICAgICAgaWYgKCFwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlcikgewogICAgICAgICAqbmV4dFB0ciA9IHM7CiAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9ORTsKICAgICAgIH0KQEAgLTQ4MzAsOCArNTM3MCw4IEBACiAgICAgZGVmYXVsdDoKICAgICAgIHJldHVybiBYTUxfRVJST1JfSlVOS19BRlRFUl9ET0NfRUxFTUVOVDsKICAgICB9Ci0gICAgZXZlbnRQdHIgPSBzID0gbmV4dDsKLSAgICBzd2l0Y2ggKHBzX3BhcnNpbmcpIHsKKyAgICBwYXJzZXItPm1fZXZlbnRQdHIgPSBzID0gbmV4dDsKKyAgICBzd2l0Y2ggKHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcpIHsKICAgICBjYXNlIFhNTF9TVVNQRU5ERUQ6CiAgICAgICAqbmV4dFB0ciA9IG5leHQ7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CkBAIC00ODUxLDQ5ICs1MzkxLDUxIEBACiAgIGVudW0gWE1MX0Vycm9yIHJlc3VsdDsKICAgT1BFTl9JTlRFUk5BTF9FTlRJVFkgKm9wZW5FbnRpdHk7CiAKLSAgaWYgKGZyZWVJbnRlcm5hbEVudGl0aWVzKSB7Ci0gICAgb3BlbkVudGl0eSA9IGZyZWVJbnRlcm5hbEVudGl0aWVzOwotICAgIGZyZWVJbnRlcm5hbEVudGl0aWVzID0gb3BlbkVudGl0eS0+bmV4dDsKKyAgaWYgKHBhcnNlci0+bV9mcmVlSW50ZXJuYWxFbnRpdGllcykgeworICAgIG9wZW5FbnRpdHkgPSBwYXJzZXItPm1fZnJlZUludGVybmFsRW50aXRpZXM7CisgICAgcGFyc2VyLT5tX2ZyZWVJbnRlcm5hbEVudGl0aWVzID0gb3BlbkVudGl0eS0+bmV4dDsKICAgfQogICBlbHNlIHsKLSAgICBvcGVuRW50aXR5ID0gKE9QRU5fSU5URVJOQUxfRU5USVRZICopTUFMTE9DKHNpemVvZihPUEVOX0lOVEVSTkFMX0VOVElUWSkpOworICAgIG9wZW5FbnRpdHkgPSAoT1BFTl9JTlRFUk5BTF9FTlRJVFkgKilNQUxMT0MocGFyc2VyLCBzaXplb2YoT1BFTl9JTlRFUk5BTF9FTlRJVFkpKTsKICAgICBpZiAoIW9wZW5FbnRpdHkpCiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PX01FTU9SWTsKICAgfQogICBlbnRpdHktPm9wZW4gPSBYTUxfVFJVRTsKICAgZW50aXR5LT5wcm9jZXNzZWQgPSAwOwotICBvcGVuRW50aXR5LT5uZXh0ID0gb3BlbkludGVybmFsRW50aXRpZXM7Ci0gIG9wZW5JbnRlcm5hbEVudGl0aWVzID0gb3BlbkVudGl0eTsKKyAgb3BlbkVudGl0eS0+bmV4dCA9IHBhcnNlci0+bV9vcGVuSW50ZXJuYWxFbnRpdGllczsKKyAgcGFyc2VyLT5tX29wZW5JbnRlcm5hbEVudGl0aWVzID0gb3BlbkVudGl0eTsKICAgb3BlbkVudGl0eS0+ZW50aXR5ID0gZW50aXR5OwotICBvcGVuRW50aXR5LT5zdGFydFRhZ0xldmVsID0gdGFnTGV2ZWw7CisgIG9wZW5FbnRpdHktPnN0YXJ0VGFnTGV2ZWwgPSBwYXJzZXItPm1fdGFnTGV2ZWw7CiAgIG9wZW5FbnRpdHktPmJldHdlZW5EZWNsID0gYmV0d2VlbkRlY2w7CiAgIG9wZW5FbnRpdHktPmludGVybmFsRXZlbnRQdHIgPSBOVUxMOwogICBvcGVuRW50aXR5LT5pbnRlcm5hbEV2ZW50RW5kUHRyID0gTlVMTDsKICAgdGV4dFN0YXJ0ID0gKGNoYXIgKillbnRpdHktPnRleHRQdHI7CiAgIHRleHRFbmQgPSAoY2hhciAqKShlbnRpdHktPnRleHRQdHIgKyBlbnRpdHktPnRleHRMZW4pOworICAvKiBTZXQgYSBzYWZlIGRlZmF1bHQgdmFsdWUgaW4gY2FzZSAnbmV4dCcgZG9lcyBub3QgZ2V0IHNldCAqLworICBuZXh0ID0gdGV4dFN0YXJ0OwogCiAjaWZkZWYgWE1MX0RURAogICBpZiAoZW50aXR5LT5pc19wYXJhbSkgewotICAgIGludCB0b2sgPSBYbWxQcm9sb2dUb2soaW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LCB0ZXh0RW5kLCAmbmV4dCk7Ci0gICAgcmVzdWx0ID0gZG9Qcm9sb2cocGFyc2VyLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsIHRvaywKKyAgICBpbnQgdG9rID0gWG1sUHJvbG9nVG9rKHBhcnNlci0+bV9pbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsICZuZXh0KTsKKyAgICByZXN1bHQgPSBkb1Byb2xvZyhwYXJzZXIsIHBhcnNlci0+bV9pbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsIHRleHRFbmQsIHRvaywKICAgICAgICAgICAgICAgICAgICAgICBuZXh0LCAmbmV4dCwgWE1MX0ZBTFNFKTsKICAgfQogICBlbHNlCiAjZW5kaWYgLyogWE1MX0RURCAqLwotICAgIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIHRhZ0xldmVsLCBpbnRlcm5hbEVuY29kaW5nLCB0ZXh0U3RhcnQsCisgICAgcmVzdWx0ID0gZG9Db250ZW50KHBhcnNlciwgcGFyc2VyLT5tX3RhZ0xldmVsLCBwYXJzZXItPm1faW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0RW5kLCAmbmV4dCwgWE1MX0ZBTFNFKTsKIAogICBpZiAocmVzdWx0ID09IFhNTF9FUlJPUl9OT05FKSB7Ci0gICAgaWYgKHRleHRFbmQgIT0gbmV4dCAmJiBwc19wYXJzaW5nID09IFhNTF9TVVNQRU5ERUQpIHsKKyAgICBpZiAodGV4dEVuZCAhPSBuZXh0ICYmIHBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLnBhcnNpbmcgPT0gWE1MX1NVU1BFTkRFRCkgewogICAgICAgZW50aXR5LT5wcm9jZXNzZWQgPSAoaW50KShuZXh0IC0gdGV4dFN0YXJ0KTsKLSAgICAgIHByb2Nlc3NvciA9IGludGVybmFsRW50aXR5UHJvY2Vzc29yOworICAgICAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IGludGVybmFsRW50aXR5UHJvY2Vzc29yOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgIGVudGl0eS0+b3BlbiA9IFhNTF9GQUxTRTsKLSAgICAgIG9wZW5JbnRlcm5hbEVudGl0aWVzID0gb3BlbkVudGl0eS0+bmV4dDsKKyAgICAgIHBhcnNlci0+bV9vcGVuSW50ZXJuYWxFbnRpdGllcyA9IG9wZW5FbnRpdHktPm5leHQ7CiAgICAgICAvKiBwdXQgb3BlbkVudGl0eSBiYWNrIGluIGxpc3Qgb2YgZnJlZSBpbnN0YW5jZXMgKi8KLSAgICAgIG9wZW5FbnRpdHktPm5leHQgPSBmcmVlSW50ZXJuYWxFbnRpdGllczsKLSAgICAgIGZyZWVJbnRlcm5hbEVudGl0aWVzID0gb3BlbkVudGl0eTsKKyAgICAgIG9wZW5FbnRpdHktPm5leHQgPSBwYXJzZXItPm1fZnJlZUludGVybmFsRW50aXRpZXM7CisgICAgICBwYXJzZXItPm1fZnJlZUludGVybmFsRW50aXRpZXMgPSBvcGVuRW50aXR5OwogICAgIH0KICAgfQogICByZXR1cm4gcmVzdWx0OwpAQCAtNDkwOSw2NCArNTQ1MSw2NiBAQAogICBjb25zdCBjaGFyICp0ZXh0U3RhcnQsICp0ZXh0RW5kOwogICBjb25zdCBjaGFyICpuZXh0OwogICBlbnVtIFhNTF9FcnJvciByZXN1bHQ7Ci0gIE9QRU5fSU5URVJOQUxfRU5USVRZICpvcGVuRW50aXR5ID0gb3BlbkludGVybmFsRW50aXRpZXM7CisgIE9QRU5fSU5URVJOQUxfRU5USVRZICpvcGVuRW50aXR5ID0gcGFyc2VyLT5tX29wZW5JbnRlcm5hbEVudGl0aWVzOwogICBpZiAoIW9wZW5FbnRpdHkpCiAgICAgcmV0dXJuIFhNTF9FUlJPUl9VTkVYUEVDVEVEX1NUQVRFOwogCiAgIGVudGl0eSA9IG9wZW5FbnRpdHktPmVudGl0eTsKICAgdGV4dFN0YXJ0ID0gKChjaGFyICopZW50aXR5LT50ZXh0UHRyKSArIGVudGl0eS0+cHJvY2Vzc2VkOwogICB0ZXh0RW5kID0gKGNoYXIgKikoZW50aXR5LT50ZXh0UHRyICsgZW50aXR5LT50ZXh0TGVuKTsKKyAgLyogU2V0IGEgc2FmZSBkZWZhdWx0IHZhbHVlIGluIGNhc2UgJ25leHQnIGRvZXMgbm90IGdldCBzZXQgKi8KKyAgbmV4dCA9IHRleHRTdGFydDsKIAogI2lmZGVmIFhNTF9EVEQKICAgaWYgKGVudGl0eS0+aXNfcGFyYW0pIHsKLSAgICBpbnQgdG9rID0gWG1sUHJvbG9nVG9rKGludGVybmFsRW5jb2RpbmcsIHRleHRTdGFydCwgdGV4dEVuZCwgJm5leHQpOwotICAgIHJlc3VsdCA9IGRvUHJvbG9nKHBhcnNlciwgaW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LCB0ZXh0RW5kLCB0b2ssCisgICAgaW50IHRvayA9IFhtbFByb2xvZ1RvayhwYXJzZXItPm1faW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LCB0ZXh0RW5kLCAmbmV4dCk7CisgICAgcmVzdWx0ID0gZG9Qcm9sb2cocGFyc2VyLCBwYXJzZXItPm1faW50ZXJuYWxFbmNvZGluZywgdGV4dFN0YXJ0LCB0ZXh0RW5kLCB0b2ssCiAgICAgICAgICAgICAgICAgICAgICAgbmV4dCwgJm5leHQsIFhNTF9GQUxTRSk7CiAgIH0KICAgZWxzZQogI2VuZGlmIC8qIFhNTF9EVEQgKi8KLSAgICByZXN1bHQgPSBkb0NvbnRlbnQocGFyc2VyLCBvcGVuRW50aXR5LT5zdGFydFRhZ0xldmVsLCBpbnRlcm5hbEVuY29kaW5nLAorICAgIHJlc3VsdCA9IGRvQ29udGVudChwYXJzZXIsIG9wZW5FbnRpdHktPnN0YXJ0VGFnTGV2ZWwsIHBhcnNlci0+bV9pbnRlcm5hbEVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICB0ZXh0U3RhcnQsIHRleHRFbmQsICZuZXh0LCBYTUxfRkFMU0UpOwogCiAgIGlmIChyZXN1bHQgIT0gWE1MX0VSUk9SX05PTkUpCiAgICAgcmV0dXJuIHJlc3VsdDsKLSAgZWxzZSBpZiAodGV4dEVuZCAhPSBuZXh0ICYmIHBzX3BhcnNpbmcgPT0gWE1MX1NVU1BFTkRFRCkgeworICBlbHNlIGlmICh0ZXh0RW5kICE9IG5leHQgJiYgcGFyc2VyLT5tX3BhcnNpbmdTdGF0dXMucGFyc2luZyA9PSBYTUxfU1VTUEVOREVEKSB7CiAgICAgZW50aXR5LT5wcm9jZXNzZWQgPSAoaW50KShuZXh0IC0gKGNoYXIgKillbnRpdHktPnRleHRQdHIpOwogICAgIHJldHVybiByZXN1bHQ7CiAgIH0KICAgZWxzZSB7CiAgICAgZW50aXR5LT5vcGVuID0gWE1MX0ZBTFNFOwotICAgIG9wZW5JbnRlcm5hbEVudGl0aWVzID0gb3BlbkVudGl0eS0+bmV4dDsKKyAgICBwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMgPSBvcGVuRW50aXR5LT5uZXh0OwogICAgIC8qIHB1dCBvcGVuRW50aXR5IGJhY2sgaW4gbGlzdCBvZiBmcmVlIGluc3RhbmNlcyAqLwotICAgIG9wZW5FbnRpdHktPm5leHQgPSBmcmVlSW50ZXJuYWxFbnRpdGllczsKLSAgICBmcmVlSW50ZXJuYWxFbnRpdGllcyA9IG9wZW5FbnRpdHk7CisgICAgb3BlbkVudGl0eS0+bmV4dCA9IHBhcnNlci0+bV9mcmVlSW50ZXJuYWxFbnRpdGllczsKKyAgICBwYXJzZXItPm1fZnJlZUludGVybmFsRW50aXRpZXMgPSBvcGVuRW50aXR5OwogICB9CiAKICNpZmRlZiBYTUxfRFRECiAgIGlmIChlbnRpdHktPmlzX3BhcmFtKSB7CiAgICAgaW50IHRvazsKLSAgICBwcm9jZXNzb3IgPSBwcm9sb2dQcm9jZXNzb3I7Ci0gICAgdG9rID0gWG1sUHJvbG9nVG9rKGVuY29kaW5nLCBzLCBlbmQsICZuZXh0KTsKLSAgICByZXR1cm4gZG9Qcm9sb2cocGFyc2VyLCBlbmNvZGluZywgcywgZW5kLCB0b2ssIG5leHQsIG5leHRQdHIsCi0gICAgICAgICAgICAgICAgICAgIChYTUxfQm9vbCkhcHNfZmluYWxCdWZmZXIpOworICAgIHBhcnNlci0+bV9wcm9jZXNzb3IgPSBwcm9sb2dQcm9jZXNzb3I7CisgICAgdG9rID0gWG1sUHJvbG9nVG9rKHBhcnNlci0+bV9lbmNvZGluZywgcywgZW5kLCAmbmV4dCk7CisgICAgcmV0dXJuIGRvUHJvbG9nKHBhcnNlciwgcGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQsIHRvaywgbmV4dCwgbmV4dFB0ciwKKyAgICAgICAgICAgICAgICAgICAgKFhNTF9Cb29sKSFwYXJzZXItPm1fcGFyc2luZ1N0YXR1cy5maW5hbEJ1ZmZlcik7CiAgIH0KICAgZWxzZQogI2VuZGlmIC8qIFhNTF9EVEQgKi8KICAgewotICAgIHByb2Nlc3NvciA9IGNvbnRlbnRQcm9jZXNzb3I7CisgICAgcGFyc2VyLT5tX3Byb2Nlc3NvciA9IGNvbnRlbnRQcm9jZXNzb3I7CiAgICAgLyogc2VlIGV4dGVybmFsRW50aXR5Q29udGVudFByb2Nlc3NvciB2cyBjb250ZW50UHJvY2Vzc29yICovCi0gICAgcmV0dXJuIGRvQ29udGVudChwYXJzZXIsIHBhcmVudFBhcnNlciA/IDEgOiAwLCBlbmNvZGluZywgcywgZW5kLAotICAgICAgICAgICAgICAgICAgICAgbmV4dFB0ciwgKFhNTF9Cb29sKSFwc19maW5hbEJ1ZmZlcik7CisgICAgcmV0dXJuIGRvQ29udGVudChwYXJzZXIsIHBhcnNlci0+bV9wYXJlbnRQYXJzZXIgPyAxIDogMCwgcGFyc2VyLT5tX2VuY29kaW5nLCBzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICBuZXh0UHRyLCAoWE1MX0Jvb2wpIXBhcnNlci0+bV9wYXJzaW5nU3RhdHVzLmZpbmFsQnVmZmVyKTsKICAgfQogfQogCiBzdGF0aWMgZW51bSBYTUxfRXJyb3IgUFRSQ0FMTAogZXJyb3JQcm9jZXNzb3IoWE1MX1BhcnNlciBwYXJzZXIsCi0gICAgICAgICAgICAgICBjb25zdCBjaGFyICpzLAotICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKm5leHRQdHIpCisgICAgICAgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChzKSwKKyAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqVU5VU0VEX1AobmV4dFB0cikpCiB7Ci0gIHJldHVybiBlcnJvckNvZGU7CisgIHJldHVybiBwYXJzZXItPm1fZXJyb3JDb2RlOwogfQogCiBzdGF0aWMgZW51bSBYTUxfRXJyb3IKQEAgLTQ5OTAsNyArNTUzNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwdHIsIGNvbnN0IGNoYXIgKmVuZCwKICAgICAgICAgICAgICAgICAgICAgIFNUUklOR19QT09MICpwb29sKQogewotICBEVEQgKiBjb25zdCBkdGQgPSBfZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KKyAgRFREICogY29uc3QgZHRkID0gcGFyc2VyLT5tX2R0ZDsgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCiAgIGZvciAoOzspIHsKICAgICBjb25zdCBjaGFyICpuZXh0OwogICAgIGludCB0b2sgPSBYbWxBdHRyaWJ1dGVWYWx1ZVRvayhlbmMsIHB0ciwgZW5kLCAmbmV4dCk7CkBAIC00OTk4LDEyICs1NTQyLDEyIEBACiAgICAgY2FzZSBYTUxfVE9LX05PTkU6CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX05PTkU7CiAgICAgY2FzZSBYTUxfVE9LX0lOVkFMSUQ6Ci0gICAgICBpZiAoZW5jID09IGVuY29kaW5nKQotICAgICAgICBldmVudFB0ciA9IG5leHQ7CisgICAgICBpZiAoZW5jID09IHBhcnNlci0+bV9lbmNvZGluZykKKyAgICAgICAgcGFyc2VyLT5tX2V2ZW50UHRyID0gbmV4dDsKICAgICAgIHJldHVybiBYTUxfRVJST1JfSU5WQUxJRF9UT0tFTjsKICAgICBjYXNlIFhNTF9UT0tfUEFSVElBTDoKLSAgICAgIGlmIChlbmMgPT0gZW5jb2RpbmcpCi0gICAgICAgIGV2ZW50UHRyID0gcHRyOworICAgICAgaWYgKGVuYyA9PSBwYXJzZXItPm1fZW5jb2RpbmcpCisgICAgICAgIHBhcnNlci0+bV9ldmVudFB0ciA9IHB0cjsKICAgICAgIHJldHVybiBYTUxfRVJST1JfSU5WQUxJRF9UT0tFTjsKICAgICBjYXNlIFhNTF9UT0tfQ0hBUl9SRUY6CiAgICAgICB7CkBAIC01MDExLDggKzU1NTUsOCBAQAogICAgICAgICBpbnQgaTsKICAgICAgICAgaW50IG4gPSBYbWxDaGFyUmVmTnVtYmVyKGVuYywgcHRyKTsKICAgICAgICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgICAgaWYgKGVuYyA9PSBlbmNvZGluZykKLSAgICAgICAgICAgIGV2ZW50UHRyID0gcHRyOworICAgICAgICAgIGlmIChlbmMgPT0gcGFyc2VyLT5tX2VuY29kaW5nKQorICAgICAgICAgICAgcGFyc2VyLT5tX2V2ZW50UHRyID0gcHRyOwogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfQkFEX0NIQVJfUkVGOwogICAgICAgICB9CiAgICAgICAgIGlmICghaXNDZGF0YQpAQCAtNTAyMCwxMSArNTU2NCwxNSBAQAogICAgICAgICAgICAgJiYgKHBvb2xMZW5ndGgocG9vbCkgPT0gMCB8fCBwb29sTGFzdENoYXIocG9vbCkgPT0gMHgyMCkpCiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIG4gPSBYbWxFbmNvZGUobiwgKElDSEFSICopYnVmKTsKLSAgICAgICAgaWYgKCFuKSB7Ci0gICAgICAgICAgaWYgKGVuYyA9PSBlbmNvZGluZykKLSAgICAgICAgICAgIGV2ZW50UHRyID0gcHRyOwotICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfQkFEX0NIQVJfUkVGOwotICAgICAgICB9CisgICAgICAgIC8qIFRoZSBYbWxFbmNvZGUoKSBmdW5jdGlvbnMgY2FuIG5ldmVyIHJldHVybiAwIGhlcmUuICBUaGF0CisgICAgICAgICAqIGVycm9yIHJldHVybiBoYXBwZW5zIGlmIHRoZSBjb2RlIHBvaW50IHBhc3NlZCBpbiBpcyBlaXRoZXIKKyAgICAgICAgICogbmVnYXRpdmUgb3IgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDB4MTEwMDAwLiAgVGhlCisgICAgICAgICAqIFhtbENoYXJSZWZOdW1iZXIoKSBmdW5jdGlvbnMgd2lsbCBhbGwgcmV0dXJuIGEgbnVtYmVyCisgICAgICAgICAqIHN0cmljdGx5IGxlc3MgdGhhbiAweDExMDAwMCBvciBhIG5lZ2F0aXZlIHZhbHVlIGlmIGFuIGVycm9yCisgICAgICAgICAqIG9jY3VycmVkLiAgVGhlIG5lZ2F0aXZlIHZhbHVlIGlzIGludGVyY2VwdGVkIGFib3ZlLCBzbworICAgICAgICAgKiBYbWxFbmNvZGUoKSBpcyBuZXZlciBwYXNzZWQgYSB2YWx1ZSBpdCBtaWdodCByZXR1cm4gYW4KKyAgICAgICAgICogZXJyb3IgZm9yLgorICAgICAgICAgKi8KICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgIGlmICghcG9vbEFwcGVuZENoYXIocG9vbCwgYnVmW2ldKSkKICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwpAQCAtNTA1OCwyNSArNTYwNiwyNSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIG5hbWUgPSBwb29sU3RvcmVTdHJpbmcoJnRlbXAyUG9vbCwgZW5jLAorICAgICAgICBuYW1lID0gcG9vbFN0b3JlU3RyaW5nKCZwYXJzZXItPm1fdGVtcDJQb29sLCBlbmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyICsgZW5jLT5taW5CeXRlc1BlckNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCAtIGVuYy0+bWluQnl0ZXNQZXJDaGFyKTsKICAgICAgICAgaWYgKCFuYW1lKQogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfTk9fTUVNT1JZOwogICAgICAgICBlbnRpdHkgPSAoRU5USVRZICopbG9va3VwKHBhcnNlciwgJmR0ZC0+Z2VuZXJhbEVudGl0aWVzLCBuYW1lLCAwKTsKLSAgICAgICAgcG9vbERpc2NhcmQoJnRlbXAyUG9vbCk7CisgICAgICAgIHBvb2xEaXNjYXJkKCZwYXJzZXItPm1fdGVtcDJQb29sKTsKICAgICAgICAgLyogRmlyc3QsIGRldGVybWluZSBpZiBhIGNoZWNrIGZvciBhbiBleGlzdGluZyBkZWNsYXJhdGlvbiBpcyBuZWVkZWQ7CiAgICAgICAgICAgIGlmIHllcywgY2hlY2sgdGhhdCB0aGUgZW50aXR5IGV4aXN0cywgYW5kIHRoYXQgaXQgaXMgaW50ZXJuYWwuCiAgICAgICAgICovCiAgICAgICAgIGlmIChwb29sID09ICZkdGQtPnBvb2wpICAvKiBhcmUgd2UgY2FsbGVkIGZyb20gcHJvbG9nPyAqLwogICAgICAgICAgIGNoZWNrRW50aXR5RGVjbCA9CiAjaWZkZWYgWE1MX0RURAotICAgICAgICAgICAgICBwcm9sb2dTdGF0ZS5kb2N1bWVudEVudGl0eSAmJgorICAgICAgICAgICAgICBwYXJzZXItPm1fcHJvbG9nU3RhdGUuZG9jdW1lbnRFbnRpdHkgJiYKICNlbmRpZiAvKiBYTUxfRFREICovCiAgICAgICAgICAgICAgIChkdGQtPnN0YW5kYWxvbmUKLSAgICAgICAgICAgICAgID8gIW9wZW5JbnRlcm5hbEVudGl0aWVzCisgICAgICAgICAgICAgICA/ICFwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMKICAgICAgICAgICAgICAgIDogIWR0ZC0+aGFzUGFyYW1FbnRpdHlSZWZzKTsKLSAgICAgICAgZWxzZSAvKiBpZiAocG9vbCA9PSAmdGVtcFBvb2wpOiB3ZSBhcmUgY2FsbGVkIGZyb20gY29udGVudCAqLworICAgICAgICBlbHNlIC8qIGlmIChwb29sID09ICZwYXJzZXItPm1fdGVtcFBvb2wpOiB3ZSBhcmUgY2FsbGVkIGZyb20gY29udGVudCAqLwogICAgICAgICAgIGNoZWNrRW50aXR5RGVjbCA9ICFkdGQtPmhhc1BhcmFtRW50aXR5UmVmcyB8fCBkdGQtPnN0YW5kYWxvbmU7CiAgICAgICAgIGlmIChjaGVja0VudGl0eURlY2wpIHsKICAgICAgICAgICBpZiAoIWVudGl0eSkKQEAgLTUwODYsMzcgKzU2MzQsNTUgQEAKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICghZW50aXR5KSB7CiAgICAgICAgICAgLyogQ2Fubm90IHJlcG9ydCBza2lwcGVkIGVudGl0eSBoZXJlIC0gc2VlIGNvbW1lbnRzIG9uCi0gICAgICAgICAgICAgc2tpcHBlZEVudGl0eUhhbmRsZXIuCi0gICAgICAgICAgaWYgKHNraXBwZWRFbnRpdHlIYW5kbGVyKQotICAgICAgICAgICAgc2tpcHBlZEVudGl0eUhhbmRsZXIoaGFuZGxlckFyZywgbmFtZSwgMCk7CisgICAgICAgICAgICAgcGFyc2VyLT5tX3NraXBwZWRFbnRpdHlIYW5kbGVyLgorICAgICAgICAgIGlmIChwYXJzZXItPm1fc2tpcHBlZEVudGl0eUhhbmRsZXIpCisgICAgICAgICAgICBwYXJzZXItPm1fc2tpcHBlZEVudGl0eUhhbmRsZXIocGFyc2VyLT5tX2hhbmRsZXJBcmcsIG5hbWUsIDApOwogICAgICAgICAgICovCiAgICAgICAgICAgLyogQ2Fubm90IGNhbGwgdGhlIGRlZmF1bHQgaGFuZGxlciBiZWNhdXNlIHRoaXMgd291bGQgYmUKICAgICAgICAgICAgICBvdXQgb2Ygc3luYyB3aXRoIHRoZSBjYWxsIHRvIHRoZSBzdGFydEVsZW1lbnRIYW5kbGVyLgotICAgICAgICAgIGlmICgocG9vbCA9PSAmdGVtcFBvb2wpICYmIGRlZmF1bHRIYW5kbGVyKQorICAgICAgICAgIGlmICgocG9vbCA9PSAmcGFyc2VyLT5tX3RlbXBQb29sKSAmJiBwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIpCiAgICAgICAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBwdHIsIG5leHQpOwogICAgICAgICAgICovCiAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGVudGl0eS0+b3BlbikgewotICAgICAgICAgIGlmIChlbmMgPT0gZW5jb2RpbmcpCi0gICAgICAgICAgICBldmVudFB0ciA9IHB0cjsKKyAgICAgICAgICBpZiAoZW5jID09IHBhcnNlci0+bV9lbmNvZGluZykgeworICAgICAgICAgICAgLyogSXQgZG9lcyBub3QgYXBwZWFyIHRoYXQgdGhpcyBsaW5lIGNhbiBiZSBleGVjdXRlZC4KKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBUaGUgImlmIChlbnRpdHktPm9wZW4pIiBjaGVjayBjYXRjaGVzIHJlY3Vyc2l2ZSBlbnRpdHkKKyAgICAgICAgICAgICAqIGRlZmluaXRpb25zLiAgSW4gb3JkZXIgdG8gYmUgY2FsbGVkIHdpdGggYW4gb3BlbgorICAgICAgICAgICAgICogZW50aXR5LCBpdCBtdXN0IGhhdmUgZ29uZSB0aHJvdWdoIHRoaXMgY29kZSBiZWZvcmUgYW5kCisgICAgICAgICAgICAgKiBiZWVuIHRocm91Z2ggdGhlIHJlY3Vyc2l2ZSBjYWxsIHRvCisgICAgICAgICAgICAgKiBhcHBlbmRBdHRyaWJ1dGVWYWx1ZSgpIHNvbWUgbGluZXMgYmVsb3cuICBUaGF0IGNhbGwKKyAgICAgICAgICAgICAqIHNldHMgdGhlIGxvY2FsIGVuY29kaW5nICgiZW5jIikgdG8gdGhlIHBhcnNlcidzCisgICAgICAgICAgICAgKiBpbnRlcm5hbCBlbmNvZGluZyAoaW50ZXJuYWxfdXRmOCBvciBpbnRlcm5hbF91dGYxNiksCisgICAgICAgICAgICAgKiB3aGljaCBjYW4gbmV2ZXIgYmUgdGhlIHNhbWUgYXMgdGhlIHByaW5jaXBsZSBlbmNvZGluZy4KKyAgICAgICAgICAgICAqIEl0IGRvZXNuJ3QgYXBwZWFyIHRoZXJlIGlzIGFub3RoZXIgY29kZSBwYXRoIHRoYXQgZ2V0cworICAgICAgICAgICAgICogaGVyZSB3aXRoIGVudGl0eS0+b3BlbiBiZWluZyBUUlVFLgorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIFNpbmNlIGl0IGlzIG5vdCBjZXJ0YWluIHRoYXQgdGhpcyBsb2dpYyBpcyB3YXRlcnRpZ2h0LAorICAgICAgICAgICAgICogd2Uga2VlcCB0aGUgbGluZSBhbmQgbWVyZWx5IGV4Y2x1ZGUgaXQgZnJvbSBjb3ZlcmFnZQorICAgICAgICAgICAgICogdGVzdHMuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHBhcnNlci0+bV9ldmVudFB0ciA9IHB0cjsgLyogTENPVl9FWENMX0xJTkUgKi8KKyAgICAgICAgICB9CiAgICAgICAgICAgcmV0dXJuIFhNTF9FUlJPUl9SRUNVUlNJVkVfRU5USVRZX1JFRjsKICAgICAgICAgfQogICAgICAgICBpZiAoZW50aXR5LT5ub3RhdGlvbikgewotICAgICAgICAgIGlmIChlbmMgPT0gZW5jb2RpbmcpCi0gICAgICAgICAgICBldmVudFB0ciA9IHB0cjsKKyAgICAgICAgICBpZiAoZW5jID09IHBhcnNlci0+bV9lbmNvZGluZykKKyAgICAgICAgICAgIHBhcnNlci0+bV9ldmVudFB0ciA9IHB0cjsKICAgICAgICAgICByZXR1cm4gWE1MX0VSUk9SX0JJTkFSWV9FTlRJVFlfUkVGOwogICAgICAgICB9CiAgICAgICAgIGlmICghZW50aXR5LT50ZXh0UHRyKSB7Ci0gICAgICAgICAgaWYgKGVuYyA9PSBlbmNvZGluZykKLSAgICAgICAgICAgIGV2ZW50UHRyID0gcHRyOworICAgICAgICAgIGlmIChlbmMgPT0gcGFyc2VyLT5tX2VuY29kaW5nKQorICAgICAgICAgICAgcGFyc2VyLT5tX2V2ZW50UHRyID0gcHRyOwogICAgICAgICAgIHJldHVybiBYTUxfRVJST1JfQVRUUklCVVRFX0VYVEVSTkFMX0VOVElUWV9SRUY7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgZW51bSBYTUxfRXJyb3IgcmVzdWx0OwogICAgICAgICAgIGNvbnN0IFhNTF9DaGFyICp0ZXh0RW5kID0gZW50aXR5LT50ZXh0UHRyICsgZW50aXR5LT50ZXh0TGVuOwogICAgICAgICAgIGVudGl0eS0+b3BlbiA9IFhNTF9UUlVFOwotICAgICAgICAgIHJlc3VsdCA9IGFwcGVuZEF0dHJpYnV0ZVZhbHVlKHBhcnNlciwgaW50ZXJuYWxFbmNvZGluZywgaXNDZGF0YSwKKyAgICAgICAgICByZXN1bHQgPSBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShwYXJzZXIsIHBhcnNlci0+bV9pbnRlcm5hbEVuY29kaW5nLCBpc0NkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopZW50aXR5LT50ZXh0UHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyICopdGV4dEVuZCwgcG9vbCk7CiAgICAgICAgICAgZW50aXR5LT5vcGVuID0gWE1MX0ZBTFNFOwpAQCAtNTEyNiw5ICs1NjkyLDIxIEBACiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgaWYgKGVuYyA9PSBlbmNvZGluZykKLSAgICAgICAgZXZlbnRQdHIgPSBwdHI7CisgICAgICAvKiBUaGUgb25seSB0b2tlbiByZXR1cm5lZCBieSBYbWxBdHRyaWJ1dGVWYWx1ZVRvaygpIHRoYXQgZG9lcworICAgICAgICogbm90IGhhdmUgYW4gZXhwbGljaXQgY2FzZSBoZXJlIGlzIFhNTF9UT0tfUEFSVElBTF9DSEFSLgorICAgICAgICogR2V0dGluZyB0aGF0IHdvdWxkIHJlcXVpcmUgYW4gZW50aXR5IG5hbWUgdG8gY29udGFpbiBhbgorICAgICAgICogaW5jb21wbGV0ZSBYTUwgY2hhcmFjdGVyIChlLmcuIFx4RTJceDgyKTsgaG93ZXZlciBwcmV2aW91cworICAgICAgICogdG9rZW5pc2VycyB3aWxsIGhhdmUgYWxyZWFkeSByZWNvZ25pc2VkIGFuZCByZWplY3RlZCBzdWNoCisgICAgICAgKiBuYW1lcyBiZWZvcmUgWG1sQXR0cmlidXRlVmFsdWVUb2soKSBnZXRzIGEgbG9vay1pbi4gIFRoaXMKKyAgICAgICAqIGRlZmF1bHQgY2FzZSBzaG91bGQgYmUgcmV0YWluZWQgYXMgYSBzYWZldHkgbmV0LCBidXQgdGhlIGNvZGUKKyAgICAgICAqIGV4Y2x1ZGVkIGZyb20gY292ZXJhZ2UgdGVzdHMuCisgICAgICAgKgorICAgICAgICogTENPVl9FWENMX1NUQVJUCisgICAgICAgKi8KKyAgICAgIGlmIChlbmMgPT0gcGFyc2VyLT5tX2VuY29kaW5nKQorICAgICAgICBwYXJzZXItPm1fZXZlbnRQdHIgPSBwdHI7CiAgICAgICByZXR1cm4gWE1MX0VSUk9SX1VORVhQRUNURURfU1RBVEU7CisgICAgICAvKiBMQ09WX0VYQ0xfU1RPUCAqLwogICAgIH0KICAgICBwdHIgPSBuZXh0OwogICB9CkBAIC01MTQxLDEyICs1NzE5LDEyIEBACiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVudGl0eVRleHRQdHIsCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVudGl0eVRleHRFbmQpCiB7Ci0gIERURCAqIGNvbnN0IGR0ZCA9IF9kdGQ7ICAvKiBzYXZlIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiAqLworICBEVEQgKiBjb25zdCBkdGQgPSBwYXJzZXItPm1fZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KICAgU1RSSU5HX1BPT0wgKnBvb2wgPSAmKGR0ZC0+ZW50aXR5VmFsdWVQb29sKTsKICAgZW51bSBYTUxfRXJyb3IgcmVzdWx0ID0gWE1MX0VSUk9SX05PTkU7CiAjaWZkZWYgWE1MX0RURAotICBpbnQgb2xkSW5FbnRpdHlWYWx1ZSA9IHByb2xvZ1N0YXRlLmluRW50aXR5VmFsdWU7Ci0gIHByb2xvZ1N0YXRlLmluRW50aXR5VmFsdWUgPSAxOworICBpbnQgb2xkSW5FbnRpdHlWYWx1ZSA9IHBhcnNlci0+bV9wcm9sb2dTdGF0ZS5pbkVudGl0eVZhbHVlOworICBwYXJzZXItPm1fcHJvbG9nU3RhdGUuaW5FbnRpdHlWYWx1ZSA9IDE7CiAjZW5kaWYgLyogWE1MX0RURCAqLwogICAvKiBuZXZlciByZXR1cm4gTnVsbCBmb3IgdGhlIHZhbHVlIGFyZ3VtZW50IGluIEVudGl0eURlY2xIYW5kbGVyLAogICAgICBzaW5jZSB0aGlzIHdvdWxkIGluZGljYXRlIGFuIGV4dGVybmFsIGVudGl0eTsgdGhlcmVmb3JlIHdlCkBAIC01MTYyLDEwICs1NzQwLDEwIEBACiAgICAgc3dpdGNoICh0b2spIHsKICAgICBjYXNlIFhNTF9UT0tfUEFSQU1fRU5USVRZX1JFRjoKICNpZmRlZiBYTUxfRFRECi0gICAgICBpZiAoaXNQYXJhbUVudGl0eSB8fCBlbmMgIT0gZW5jb2RpbmcpIHsKKyAgICAgIGlmIChwYXJzZXItPm1faXNQYXJhbUVudGl0eSB8fCBlbmMgIT0gcGFyc2VyLT5tX2VuY29kaW5nKSB7CiAgICAgICAgIGNvbnN0IFhNTF9DaGFyICpuYW1lOwogICAgICAgICBFTlRJVFkgKmVudGl0eTsKLSAgICAgICAgbmFtZSA9IHBvb2xTdG9yZVN0cmluZygmdGVtcFBvb2wsIGVuYywKKyAgICAgICAgbmFtZSA9IHBvb2xTdG9yZVN0cmluZygmcGFyc2VyLT5tX3RlbXBQb29sLCBlbmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5VGV4dFB0ciArIGVuYy0+bWluQnl0ZXNQZXJDaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgLSBlbmMtPm1pbkJ5dGVzUGVyQ2hhcik7CiAgICAgICAgIGlmICghbmFtZSkgewpAQCAtNTE3MywyOCArNTc1MSwyOCBAQAogICAgICAgICAgIGdvdG8gZW5kRW50aXR5VmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgZW50aXR5ID0gKEVOVElUWSAqKWxvb2t1cChwYXJzZXIsICZkdGQtPnBhcmFtRW50aXRpZXMsIG5hbWUsIDApOwotICAgICAgICBwb29sRGlzY2FyZCgmdGVtcFBvb2wpOworICAgICAgICBwb29sRGlzY2FyZCgmcGFyc2VyLT5tX3RlbXBQb29sKTsKICAgICAgICAgaWYgKCFlbnRpdHkpIHsKICAgICAgICAgICAvKiBub3QgYSB3ZWxsLWZvcm1lZG5lc3MgZXJyb3IgLSBzZWUgWE1MIDEuMDogV0ZDIEVudGl0eSBEZWNsYXJlZCAqLwogICAgICAgICAgIC8qIGNhbm5vdCByZXBvcnQgc2tpcHBlZCBlbnRpdHkgaGVyZSAtIHNlZSBjb21tZW50cyBvbgotICAgICAgICAgICAgIHNraXBwZWRFbnRpdHlIYW5kbGVyCi0gICAgICAgICAgaWYgKHNraXBwZWRFbnRpdHlIYW5kbGVyKQotICAgICAgICAgICAgc2tpcHBlZEVudGl0eUhhbmRsZXIoaGFuZGxlckFyZywgbmFtZSwgMCk7CisgICAgICAgICAgICAgcGFyc2VyLT5tX3NraXBwZWRFbnRpdHlIYW5kbGVyCisgICAgICAgICAgaWYgKHBhcnNlci0+bV9za2lwcGVkRW50aXR5SGFuZGxlcikKKyAgICAgICAgICAgIHBhcnNlci0+bV9za2lwcGVkRW50aXR5SGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywgbmFtZSwgMCk7CiAgICAgICAgICAgKi8KICAgICAgICAgICBkdGQtPmtlZXBQcm9jZXNzaW5nID0gZHRkLT5zdGFuZGFsb25lOwogICAgICAgICAgIGdvdG8gZW5kRW50aXR5VmFsdWU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGVudGl0eS0+b3BlbikgewotICAgICAgICAgIGlmIChlbmMgPT0gZW5jb2RpbmcpCi0gICAgICAgICAgICBldmVudFB0ciA9IGVudGl0eVRleHRQdHI7CisgICAgICAgICAgaWYgKGVuYyA9PSBwYXJzZXItPm1fZW5jb2RpbmcpCisgICAgICAgICAgICBwYXJzZXItPm1fZXZlbnRQdHIgPSBlbnRpdHlUZXh0UHRyOwogICAgICAgICAgIHJlc3VsdCA9IFhNTF9FUlJPUl9SRUNVUlNJVkVfRU5USVRZX1JFRjsKICAgICAgICAgICBnb3RvIGVuZEVudGl0eVZhbHVlOwogICAgICAgICB9CiAgICAgICAgIGlmIChlbnRpdHktPnN5c3RlbUlkKSB7Ci0gICAgICAgICAgaWYgKGV4dGVybmFsRW50aXR5UmVmSGFuZGxlcikgeworICAgICAgICAgIGlmIChwYXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyKSB7CiAgICAgICAgICAgICBkdGQtPnBhcmFtRW50aXR5UmVhZCA9IFhNTF9GQUxTRTsKICAgICAgICAgICAgIGVudGl0eS0+b3BlbiA9IFhNTF9UUlVFOwotICAgICAgICAgICAgaWYgKCFleHRlcm5hbEVudGl0eVJlZkhhbmRsZXIoZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyQXJnLAorICAgICAgICAgICAgaWYgKCFwYXJzZXItPm1fZXh0ZXJuYWxFbnRpdHlSZWZIYW5kbGVyKHBhcnNlci0+bV9leHRlcm5hbEVudGl0eVJlZkhhbmRsZXJBcmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5LT5iYXNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXR5LT5zeXN0ZW1JZCwKQEAgLTUyMTMsNyArNTc5MSw3IEBACiAgICAgICAgIGVsc2UgewogICAgICAgICAgIGVudGl0eS0+b3BlbiA9IFhNTF9UUlVFOwogICAgICAgICAgIHJlc3VsdCA9IHN0b3JlRW50aXR5VmFsdWUocGFyc2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJuYWxFbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci0+bV9pbnRlcm5hbEVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIgKillbnRpdHktPnRleHRQdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKShlbnRpdHktPnRleHRQdHIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZW50aXR5LT50ZXh0TGVuKSk7CkBAIC01MjI2LDcgKzU4MDQsNyBAQAogI2VuZGlmIC8qIFhNTF9EVEQgKi8KICAgICAgIC8qIEluIHRoZSBpbnRlcm5hbCBzdWJzZXQsIFBFIHJlZmVyZW5jZXMgYXJlIG5vdCBsZWdhbAogICAgICAgICAgd2l0aGluIG1hcmt1cCBkZWNsYXJhdGlvbnMsIGUuZyBlbnRpdHkgdmFsdWVzIGluIHRoaXMgY2FzZS4gKi8KLSAgICAgIGV2ZW50UHRyID0gZW50aXR5VGV4dFB0cjsKKyAgICAgIHBhcnNlci0+bV9ldmVudFB0ciA9IGVudGl0eVRleHRQdHI7CiAgICAgICByZXN1bHQgPSBYTUxfRVJST1JfUEFSQU1fRU5USVRZX1JFRjsKICAgICAgIGdvdG8gZW5kRW50aXR5VmFsdWU7CiAgICAgY2FzZSBYTUxfVE9LX05PTkU6CkBAIC01MjU1LDE4ICs1ODMzLDIxIEBACiAgICAgICAgIGludCBpOwogICAgICAgICBpbnQgbiA9IFhtbENoYXJSZWZOdW1iZXIoZW5jLCBlbnRpdHlUZXh0UHRyKTsKICAgICAgICAgaWYgKG4gPCAwKSB7Ci0gICAgICAgICAgaWYgKGVuYyA9PSBlbmNvZGluZykKLSAgICAgICAgICAgIGV2ZW50UHRyID0gZW50aXR5VGV4dFB0cjsKKyAgICAgICAgICBpZiAoZW5jID09IHBhcnNlci0+bV9lbmNvZGluZykKKyAgICAgICAgICAgIHBhcnNlci0+bV9ldmVudFB0ciA9IGVudGl0eVRleHRQdHI7CiAgICAgICAgICAgcmVzdWx0ID0gWE1MX0VSUk9SX0JBRF9DSEFSX1JFRjsKICAgICAgICAgICBnb3RvIGVuZEVudGl0eVZhbHVlOwogICAgICAgICB9CiAgICAgICAgIG4gPSBYbWxFbmNvZGUobiwgKElDSEFSICopYnVmKTsKLSAgICAgICAgaWYgKCFuKSB7Ci0gICAgICAgICAgaWYgKGVuYyA9PSBlbmNvZGluZykKLSAgICAgICAgICAgIGV2ZW50UHRyID0gZW50aXR5VGV4dFB0cjsKLSAgICAgICAgICByZXN1bHQgPSBYTUxfRVJST1JfQkFEX0NIQVJfUkVGOwotICAgICAgICAgIGdvdG8gZW5kRW50aXR5VmFsdWU7Ci0gICAgICAgIH0KKyAgICAgICAgLyogVGhlIFhtbEVuY29kZSgpIGZ1bmN0aW9ucyBjYW4gbmV2ZXIgcmV0dXJuIDAgaGVyZS4gIFRoYXQKKyAgICAgICAgICogZXJyb3IgcmV0dXJuIGhhcHBlbnMgaWYgdGhlIGNvZGUgcG9pbnQgcGFzc2VkIGluIGlzIGVpdGhlcgorICAgICAgICAgKiBuZWdhdGl2ZSBvciBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMHgxMTAwMDAuICBUaGUKKyAgICAgICAgICogWG1sQ2hhclJlZk51bWJlcigpIGZ1bmN0aW9ucyB3aWxsIGFsbCByZXR1cm4gYSBudW1iZXIKKyAgICAgICAgICogc3RyaWN0bHkgbGVzcyB0aGFuIDB4MTEwMDAwIG9yIGEgbmVnYXRpdmUgdmFsdWUgaWYgYW4gZXJyb3IKKyAgICAgICAgICogb2NjdXJyZWQuICBUaGUgbmVnYXRpdmUgdmFsdWUgaXMgaW50ZXJjZXB0ZWQgYWJvdmUsIHNvCisgICAgICAgICAqIFhtbEVuY29kZSgpIGlzIG5ldmVyIHBhc3NlZCBhIHZhbHVlIGl0IG1pZ2h0IHJldHVybiBhbgorICAgICAgICAgKiBlcnJvciBmb3IuCisgICAgICAgICAqLwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgaWYgKHBvb2wtPmVuZCA9PSBwb29sLT5wdHIgJiYgIXBvb2xHcm93KHBvb2wpKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBYTUxfRVJST1JfTk9fTUVNT1JZOwpAQCAtNTI3NywyNiArNTg1OCwzNCBAQAogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBYTUxfVE9LX1BBUlRJQUw6Ci0gICAgICBpZiAoZW5jID09IGVuY29kaW5nKQotICAgICAgICBldmVudFB0ciA9IGVudGl0eVRleHRQdHI7CisgICAgICBpZiAoZW5jID09IHBhcnNlci0+bV9lbmNvZGluZykKKyAgICAgICAgcGFyc2VyLT5tX2V2ZW50UHRyID0gZW50aXR5VGV4dFB0cjsKICAgICAgIHJlc3VsdCA9IFhNTF9FUlJPUl9JTlZBTElEX1RPS0VOOwogICAgICAgZ290byBlbmRFbnRpdHlWYWx1ZTsKICAgICBjYXNlIFhNTF9UT0tfSU5WQUxJRDoKLSAgICAgIGlmIChlbmMgPT0gZW5jb2RpbmcpCi0gICAgICAgIGV2ZW50UHRyID0gbmV4dDsKKyAgICAgIGlmIChlbmMgPT0gcGFyc2VyLT5tX2VuY29kaW5nKQorICAgICAgICBwYXJzZXItPm1fZXZlbnRQdHIgPSBuZXh0OwogICAgICAgcmVzdWx0ID0gWE1MX0VSUk9SX0lOVkFMSURfVE9LRU47CiAgICAgICBnb3RvIGVuZEVudGl0eVZhbHVlOwogICAgIGRlZmF1bHQ6Ci0gICAgICBpZiAoZW5jID09IGVuY29kaW5nKQotICAgICAgICBldmVudFB0ciA9IGVudGl0eVRleHRQdHI7CisgICAgICAvKiBUaGlzIGRlZmF1bHQgY2FzZSBzaG91bGQgYmUgdW5uZWNlc3NhcnkgLS0gYWxsIHRoZSB0b2tlbnMKKyAgICAgICAqIHRoYXQgWG1sRW50aXR5VmFsdWVUb2soKSBjYW4gcmV0dXJuIGhhdmUgdGhlaXIgb3duIGV4cGxpY2l0CisgICAgICAgKiBjYXNlcyAtLSBidXQgc2hvdWxkIGJlIHJldGFpbmVkIGZvciBzYWZldHkuICBXZSBkbyBob3dldmVyCisgICAgICAgKiBleGNsdWRlIGl0IGZyb20gdGhlIGNvdmVyYWdlIHN0YXRpc3RpY3MuCisgICAgICAgKgorICAgICAgICogTENPVl9FWENMX1NUQVJUCisgICAgICAgKi8KKyAgICAgIGlmIChlbmMgPT0gcGFyc2VyLT5tX2VuY29kaW5nKQorICAgICAgICBwYXJzZXItPm1fZXZlbnRQdHIgPSBlbnRpdHlUZXh0UHRyOwogICAgICAgcmVzdWx0ID0gWE1MX0VSUk9SX1VORVhQRUNURURfU1RBVEU7CiAgICAgICBnb3RvIGVuZEVudGl0eVZhbHVlOworICAgICAgLyogTENPVl9FWENMX1NUT1AgKi8KICAgICB9CiAgICAgZW50aXR5VGV4dFB0ciA9IG5leHQ7CiAgIH0KIGVuZEVudGl0eVZhbHVlOgogI2lmZGVmIFhNTF9EVEQKLSAgcHJvbG9nU3RhdGUuaW5FbnRpdHlWYWx1ZSA9IG9sZEluRW50aXR5VmFsdWU7CisgIHBhcnNlci0+bV9wcm9sb2dTdGF0ZS5pbkVudGl0eVZhbHVlID0gb2xkSW5FbnRpdHlWYWx1ZTsKICNlbmRpZiAvKiBYTUxfRFREICovCiAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC01MzMxLDI1ICs1OTIwLDI1IEBACiAgIGNvbnN0IFhNTF9DaGFyICp0YXJnZXQ7CiAgIFhNTF9DaGFyICpkYXRhOwogICBjb25zdCBjaGFyICp0ZW07Ci0gIGlmICghcHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcikgewotICAgIGlmIChkZWZhdWx0SGFuZGxlcikKKyAgaWYgKCFwYXJzZXItPm1fcHJvY2Vzc2luZ0luc3RydWN0aW9uSGFuZGxlcikgeworICAgIGlmIChwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIpCiAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzdGFydCwgZW5kKTsKICAgICByZXR1cm4gMTsKICAgfQogICBzdGFydCArPSBlbmMtPm1pbkJ5dGVzUGVyQ2hhciAqIDI7CiAgIHRlbSA9IHN0YXJ0ICsgWG1sTmFtZUxlbmd0aChlbmMsIHN0YXJ0KTsKLSAgdGFyZ2V0ID0gcG9vbFN0b3JlU3RyaW5nKCZ0ZW1wUG9vbCwgZW5jLCBzdGFydCwgdGVtKTsKKyAgdGFyZ2V0ID0gcG9vbFN0b3JlU3RyaW5nKCZwYXJzZXItPm1fdGVtcFBvb2wsIGVuYywgc3RhcnQsIHRlbSk7CiAgIGlmICghdGFyZ2V0KQogICAgIHJldHVybiAwOwotICBwb29sRmluaXNoKCZ0ZW1wUG9vbCk7Ci0gIGRhdGEgPSBwb29sU3RvcmVTdHJpbmcoJnRlbXBQb29sLCBlbmMsCisgIHBvb2xGaW5pc2goJnBhcnNlci0+bV90ZW1wUG9vbCk7CisgIGRhdGEgPSBwb29sU3RvcmVTdHJpbmcoJnBhcnNlci0+bV90ZW1wUG9vbCwgZW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgWG1sU2tpcFMoZW5jLCB0ZW0pLAogICAgICAgICAgICAgICAgICAgICAgICAgZW5kIC0gZW5jLT5taW5CeXRlc1BlckNoYXIqMik7CiAgIGlmICghZGF0YSkKICAgICByZXR1cm4gMDsKICAgbm9ybWFsaXplTGluZXMoZGF0YSk7Ci0gIHByb2Nlc3NpbmdJbnN0cnVjdGlvbkhhbmRsZXIoaGFuZGxlckFyZywgdGFyZ2V0LCBkYXRhKTsKLSAgcG9vbENsZWFyKCZ0ZW1wUG9vbCk7CisgIHBhcnNlci0+bV9wcm9jZXNzaW5nSW5zdHJ1Y3Rpb25IYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCB0YXJnZXQsIGRhdGEpOworICBwb29sQ2xlYXIoJnBhcnNlci0+bV90ZW1wUG9vbCk7CiAgIHJldHVybiAxOwogfQogCkBAIC01MzU4LDIwICs1OTQ3LDIwIEBACiAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQpCiB7CiAgIFhNTF9DaGFyICpkYXRhOwotICBpZiAoIWNvbW1lbnRIYW5kbGVyKSB7Ci0gICAgaWYgKGRlZmF1bHRIYW5kbGVyKQorICBpZiAoIXBhcnNlci0+bV9jb21tZW50SGFuZGxlcikgeworICAgIGlmIChwYXJzZXItPm1fZGVmYXVsdEhhbmRsZXIpCiAgICAgICByZXBvcnREZWZhdWx0KHBhcnNlciwgZW5jLCBzdGFydCwgZW5kKTsKICAgICByZXR1cm4gMTsKICAgfQotICBkYXRhID0gcG9vbFN0b3JlU3RyaW5nKCZ0ZW1wUG9vbCwKKyAgZGF0YSA9IHBvb2xTdG9yZVN0cmluZygmcGFyc2VyLT5tX3RlbXBQb29sLAogICAgICAgICAgICAgICAgICAgICAgICAgIGVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCArIGVuYy0+bWluQnl0ZXNQZXJDaGFyICogNCwKICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgLSBlbmMtPm1pbkJ5dGVzUGVyQ2hhciAqIDMpOwogICBpZiAoIWRhdGEpCiAgICAgcmV0dXJuIDA7CiAgIG5vcm1hbGl6ZUxpbmVzKGRhdGEpOwotICBjb21tZW50SGFuZGxlcihoYW5kbGVyQXJnLCBkYXRhKTsKLSAgcG9vbENsZWFyKCZ0ZW1wUG9vbCk7CisgIHBhcnNlci0+bV9jb21tZW50SGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywgZGF0YSk7CisgIHBvb2xDbGVhcigmcGFyc2VyLT5tX3RlbXBQb29sKTsKICAgcmV0dXJuIDE7CiB9CiAKQEAgLTUzODAsMjYgKzU5NjksNDQgQEAKICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqZW5kKQogewogICBpZiAoTVVTVF9DT05WRVJUKGVuYywgcykpIHsKKyAgICBlbnVtIFhNTF9Db252ZXJ0X1Jlc3VsdCBjb252ZXJ0X3JlczsKICAgICBjb25zdCBjaGFyICoqZXZlbnRQUDsKICAgICBjb25zdCBjaGFyICoqZXZlbnRFbmRQUDsKLSAgICBpZiAoZW5jID09IGVuY29kaW5nKSB7Ci0gICAgICBldmVudFBQID0gJmV2ZW50UHRyOwotICAgICAgZXZlbnRFbmRQUCA9ICZldmVudEVuZFB0cjsKKyAgICBpZiAoZW5jID09IHBhcnNlci0+bV9lbmNvZGluZykgeworICAgICAgZXZlbnRQUCA9ICZwYXJzZXItPm1fZXZlbnRQdHI7CisgICAgICBldmVudEVuZFBQID0gJnBhcnNlci0+bV9ldmVudEVuZFB0cjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICBldmVudFBQID0gJihvcGVuSW50ZXJuYWxFbnRpdGllcy0+aW50ZXJuYWxFdmVudFB0cik7Ci0gICAgICBldmVudEVuZFBQID0gJihvcGVuSW50ZXJuYWxFbnRpdGllcy0+aW50ZXJuYWxFdmVudEVuZFB0cik7CisgICAgICAvKiBUbyBnZXQgaGVyZSwgdHdvIHRoaW5ncyBtdXN0IGJlIHRydWU7IHRoZSBwYXJzZXIgbXVzdCBiZQorICAgICAgICogdXNpbmcgYSBjaGFyYWN0ZXIgZW5jb2RpbmcgdGhhdCBpcyBub3QgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgKiBlbmNvZGluZyBwYXNzZWQgaW4sIGFuZCB0aGUgZW5jb2RpbmcgcGFzc2VkIGluIG11c3QgbmVlZAorICAgICAgICogY29udmVyc2lvbiB0byB0aGUgaW50ZXJuYWwgZm9ybWF0IChVVEYtOCB1bmxlc3MgWE1MX1VOSUNPREUKKyAgICAgICAqIGlzIGRlZmluZWQpLiAgVGhlIG9ubHkgb2NjYXNpb25zIG9uIHdoaWNoIHRoZSBlbmNvZGluZyBwYXNzZWQKKyAgICAgICAqIGluIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgcGFyc2VyJ3MgZW5jb2RpbmcgYXJlIHdoZW4gaXQgaXMKKyAgICAgICAqIHRoZSBpbnRlcm5hbCBlbmNvZGluZyAoZS5nLiBhIHByZXZpb3VzbHkgZGVmaW5lZCBwYXJhbWV0ZXIKKyAgICAgICAqIGVudGl0eSwgYWxyZWFkeSBjb252ZXJ0ZWQgdG8gaW50ZXJuYWwgZm9ybWF0KS4gIFRoaXMgYnkKKyAgICAgICAqIGRlZmluaXRpb24gZG9lc24ndCBuZWVkIGNvbnZlcnNpb24sIHNvIHRoZSB3aG9sZSBicmFuY2ggbmV2ZXIKKyAgICAgICAqIGdldHMgZXhlY3V0ZWQuCisgICAgICAgKgorICAgICAgICogRm9yIHNhZmV0eSdzIHNha2Ugd2UgZG9uJ3QgZGVsZXRlIHRoZXNlIGxpbmVzIGFuZCBtZXJlbHkKKyAgICAgICAqIGV4Y2x1ZGUgdGhlbSBmcm9tIGNvdmVyYWdlIHN0YXRpc3RpY3MuCisgICAgICAgKgorICAgICAgICogTENPVl9FWENMX1NUQVJUCisgICAgICAgKi8KKyAgICAgIGV2ZW50UFAgPSAmKHBhcnNlci0+bV9vcGVuSW50ZXJuYWxFbnRpdGllcy0+aW50ZXJuYWxFdmVudFB0cik7CisgICAgICBldmVudEVuZFBQID0gJihwYXJzZXItPm1fb3BlbkludGVybmFsRW50aXRpZXMtPmludGVybmFsRXZlbnRFbmRQdHIpOworICAgICAgLyogTENPVl9FWENMX1NUT1AgKi8KICAgICB9CiAgICAgZG8gewotICAgICAgSUNIQVIgKmRhdGFQdHIgPSAoSUNIQVIgKilkYXRhQnVmOwotICAgICAgWG1sQ29udmVydChlbmMsICZzLCBlbmQsICZkYXRhUHRyLCAoSUNIQVIgKilkYXRhQnVmRW5kKTsKKyAgICAgIElDSEFSICpkYXRhUHRyID0gKElDSEFSICopcGFyc2VyLT5tX2RhdGFCdWY7CisgICAgICBjb252ZXJ0X3JlcyA9IFhtbENvbnZlcnQoZW5jLCAmcywgZW5kLCAmZGF0YVB0ciwgKElDSEFSICopcGFyc2VyLT5tX2RhdGFCdWZFbmQpOwogICAgICAgKmV2ZW50RW5kUFAgPSBzOwotICAgICAgZGVmYXVsdEhhbmRsZXIoaGFuZGxlckFyZywgZGF0YUJ1ZiwgKGludCkoZGF0YVB0ciAtIChJQ0hBUiAqKWRhdGFCdWYpKTsKKyAgICAgIHBhcnNlci0+bV9kZWZhdWx0SGFuZGxlcihwYXJzZXItPm1faGFuZGxlckFyZywgcGFyc2VyLT5tX2RhdGFCdWYsIChpbnQpKGRhdGFQdHIgLSAoSUNIQVIgKilwYXJzZXItPm1fZGF0YUJ1ZikpOwogICAgICAgKmV2ZW50UFAgPSBzOwotICAgIH0gd2hpbGUgKHMgIT0gZW5kKTsKKyAgICB9IHdoaWxlICgoY29udmVydF9yZXMgIT0gWE1MX0NPTlZFUlRfQ09NUExFVEVEKSAmJiAoY29udmVydF9yZXMgIT0gWE1MX0NPTlZFUlRfSU5QVVRfSU5DT01QTEVURSkpOwogICB9CiAgIGVsc2UKLSAgICBkZWZhdWx0SGFuZGxlcihoYW5kbGVyQXJnLCAoWE1MX0NoYXIgKilzLCAoaW50KSgoWE1MX0NoYXIgKillbmQgLSAoWE1MX0NoYXIgKilzKSk7CisgICAgcGFyc2VyLT5tX2RlZmF1bHRIYW5kbGVyKHBhcnNlci0+bV9oYW5kbGVyQXJnLCAoWE1MX0NoYXIgKilzLCAoaW50KSgoWE1MX0NoYXIgKillbmQgLSAoWE1MX0NoYXIgKilzKSk7CiB9CiAKIApAQCAtNTQyMSwxNiArNjAyOCwxOCBAQAogICBpZiAodHlwZS0+bkRlZmF1bHRBdHRzID09IHR5cGUtPmFsbG9jRGVmYXVsdEF0dHMpIHsKICAgICBpZiAodHlwZS0+YWxsb2NEZWZhdWx0QXR0cyA9PSAwKSB7CiAgICAgICB0eXBlLT5hbGxvY0RlZmF1bHRBdHRzID0gODsKLSAgICAgIHR5cGUtPmRlZmF1bHRBdHRzID0gKERFRkFVTFRfQVRUUklCVVRFICopTUFMTE9DKHR5cGUtPmFsbG9jRGVmYXVsdEF0dHMKKyAgICAgIHR5cGUtPmRlZmF1bHRBdHRzID0gKERFRkFVTFRfQVRUUklCVVRFICopTUFMTE9DKHBhcnNlciwgdHlwZS0+YWxsb2NEZWZhdWx0QXR0cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc2l6ZW9mKERFRkFVTFRfQVRUUklCVVRFKSk7Ci0gICAgICBpZiAoIXR5cGUtPmRlZmF1bHRBdHRzKQorICAgICAgaWYgKCF0eXBlLT5kZWZhdWx0QXR0cykgeworICAgICAgICB0eXBlLT5hbGxvY0RlZmF1bHRBdHRzID0gMDsKICAgICAgICAgcmV0dXJuIDA7CisgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgREVGQVVMVF9BVFRSSUJVVEUgKnRlbXA7CiAgICAgICBpbnQgY291bnQgPSB0eXBlLT5hbGxvY0RlZmF1bHRBdHRzICogMjsKICAgICAgIHRlbXAgPSAoREVGQVVMVF9BVFRSSUJVVEUgKikKLSAgICAgICAgUkVBTExPQyh0eXBlLT5kZWZhdWx0QXR0cywgKGNvdW50ICogc2l6ZW9mKERFRkFVTFRfQVRUUklCVVRFKSkpOworICAgICAgICBSRUFMTE9DKHBhcnNlciwgdHlwZS0+ZGVmYXVsdEF0dHMsIChjb3VudCAqIHNpemVvZihERUZBVUxUX0FUVFJJQlVURSkpKTsKICAgICAgIGlmICh0ZW1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogICAgICAgdHlwZS0+YWxsb2NEZWZhdWx0QXR0cyA9IGNvdW50OwpAQCAtNTQ1MCw3ICs2MDU5LDcgQEAKIHN0YXRpYyBpbnQKIHNldEVsZW1lbnRUeXBlUHJlZml4KFhNTF9QYXJzZXIgcGFyc2VyLCBFTEVNRU5UX1RZUEUgKmVsZW1lbnRUeXBlKQogewotICBEVEQgKiBjb25zdCBkdGQgPSBfZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KKyAgRFREICogY29uc3QgZHRkID0gcGFyc2VyLT5tX2R0ZDsgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCiAgIGNvbnN0IFhNTF9DaGFyICpuYW1lOwogICBmb3IgKG5hbWUgPSBlbGVtZW50VHlwZS0+bmFtZTsgKm5hbWU7IG5hbWUrKykgewogICAgIGlmICgqbmFtZSA9PSBYTUxfVChBU0NJSV9DT0xPTikpIHsKQEAgLTU0ODEsNyArNjA5MCw3IEBACiBnZXRBdHRyaWJ1dGVJZChYTUxfUGFyc2VyIHBhcnNlciwgY29uc3QgRU5DT0RJTkcgKmVuYywKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0YXJ0LCBjb25zdCBjaGFyICplbmQpCiB7Ci0gIERURCAqIGNvbnN0IGR0ZCA9IF9kdGQ7ICAvKiBzYXZlIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiAqLworICBEVEQgKiBjb25zdCBkdGQgPSBwYXJzZXItPm1fZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KICAgQVRUUklCVVRFX0lEICppZDsKICAgY29uc3QgWE1MX0NoYXIgKm5hbWU7CiAgIGlmICghcG9vbEFwcGVuZENoYXIoJmR0ZC0+cG9vbCwgWE1MX1QoJ1wwJykpKQpAQCAtNTQ5OCw3ICs2MTA3LDcgQEAKICAgICBwb29sRGlzY2FyZCgmZHRkLT5wb29sKTsKICAgZWxzZSB7CiAgICAgcG9vbEZpbmlzaCgmZHRkLT5wb29sKTsKLSAgICBpZiAoIW5zKQorICAgIGlmICghcGFyc2VyLT5tX25zKQogICAgICAgOwogICAgIGVsc2UgaWYgKG5hbWVbMF0gPT0gWE1MX1QoQVNDSUlfeCkKICAgICAgICAgJiYgbmFtZVsxXSA9PSBYTUxfVChBU0NJSV9tKQpAQCAtNTU0NSwyMSArNjE1NCw0MiBAQAogc3RhdGljIGNvbnN0IFhNTF9DaGFyICoKIGdldENvbnRleHQoWE1MX1BhcnNlciBwYXJzZXIpCiB7Ci0gIERURCAqIGNvbnN0IGR0ZCA9IF9kdGQ7ICAvKiBzYXZlIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiAqLworICBEVEQgKiBjb25zdCBkdGQgPSBwYXJzZXItPm1fZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KICAgSEFTSF9UQUJMRV9JVEVSIGl0ZXI7CiAgIFhNTF9Cb29sIG5lZWRTZXAgPSBYTUxfRkFMU0U7CiAKICAgaWYgKGR0ZC0+ZGVmYXVsdFByZWZpeC5iaW5kaW5nKSB7CiAgICAgaW50IGk7CiAgICAgaW50IGxlbjsKLSAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoQVNDSUlfRVFVQUxTKSkpCisgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCBYTUxfVChBU0NJSV9FUVVBTFMpKSkKICAgICAgIHJldHVybiBOVUxMOwogICAgIGxlbiA9IGR0ZC0+ZGVmYXVsdFByZWZpeC5iaW5kaW5nLT51cmlMZW47Ci0gICAgaWYgKG5hbWVzcGFjZVNlcGFyYXRvcikKKyAgICBpZiAocGFyc2VyLT5tX25hbWVzcGFjZVNlcGFyYXRvcikKICAgICAgIGxlbi0tOwotICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykKLSAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBkdGQtPmRlZmF1bHRQcmVmaXguYmluZGluZy0+dXJpW2ldKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZwYXJzZXItPm1fdGVtcFBvb2wsIGR0ZC0+ZGVmYXVsdFByZWZpeC5iaW5kaW5nLT51cmlbaV0pKSB7CisgICAgICAgIC8qIEJlY2F1c2Ugb2YgbWVtb3J5IGNhY2hpbmcsIEkgZG9uJ3QgYmVsaWV2ZSB0aGlzIGxpbmUgY2FuIGJlCisgICAgICAgICAqIGV4ZWN1dGVkLgorICAgICAgICAgKgorICAgICAgICAgKiBUaGlzIGlzIHBhcnQgb2YgYSBsb29wIGNvcHlpbmcgdGhlIGRlZmF1bHQgcHJlZml4IGJpbmRpbmcKKyAgICAgICAgICogVVJJIGludG8gdGhlIHBhcnNlcidzIHRlbXBvcmFyeSBzdHJpbmcgcG9vbC4gIFByZXZpb3VzbHksCisgICAgICAgICAqIHRoYXQgVVJJIHdhcyBjb3BpZWQgaW50byB0aGUgc2FtZSBzdHJpbmcgcG9vbCwgd2l0aCBhCisgICAgICAgICAqIHRlcm1pbmF0aW5nIE5VTCBjaGFyYWN0ZXIsIGFzIHBhcnQgb2Ygc2V0Q29udGV4dCgpLiAgV2hlbgorICAgICAgICAgKiB0aGUgcG9vbCB3YXMgY2xlYXJlZCwgdGhhdCBsZWF2ZXMgYSBibG9jayBkZWZpbml0ZWx5IGJpZworICAgICAgICAgKiBlbm91Z2ggdG8gaG9sZCB0aGUgVVJJIG9uIHRoZSBmcmVlIGJsb2NrIGxpc3Qgb2YgdGhlIHBvb2wuCisgICAgICAgICAqIFRoZSBVUkkgY29weSBpbiBnZXRDb250ZXh0KCkgdGhlcmVmb3JlIGNhbm5vdCBydW4gb3V0IG9mCisgICAgICAgICAqIG1lbW9yeS4KKyAgICAgICAgICoKKyAgICAgICAgICogSWYgdGhlIHBvb2wgaXMgdXNlZCBiZXR3ZWVuIHRoZSBzZXRDb250ZXh0KCkgYW5kCisgICAgICAgICAqIGdldENvbnRleHQoKSBjYWxscywgdGhlIHdvcnN0IGl0IGNhbiBkbyBpcyBsZWF2ZSBhIGJpZ2dlcgorICAgICAgICAgKiBibG9jayBvbiB0aGUgZnJvbnQgb2YgdGhlIGZyZWUgbGlzdC4gIEdpdmVuIHRoYXQgdGhpcyBpcworICAgICAgICAgKiBhbGwgc29tZXdoYXQgaW5vYnZpb3VzIGFuZCBwcm9ncmFtIGxvZ2ljIGNhbiBiZSBjaGFuZ2VkLCB3ZQorICAgICAgICAgKiBkb24ndCBkZWxldGUgdGhlIGxpbmUgYnV0IHdlIGRvIGV4Y2x1ZGUgaXQgZnJvbSB0aGUgdGVzdAorICAgICAgICAgKiBjb3ZlcmFnZSBzdGF0aXN0aWNzLgorICAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7IC8qIExDT1ZfRVhDTF9MSU5FICovCisgICAgICB9CisgICAgfQogICAgIG5lZWRTZXAgPSBYTUxfVFJVRTsKICAgfQogCkBAIC01NTcxLDIwICs2MjAxLDI3IEBACiAgICAgUFJFRklYICpwcmVmaXggPSAoUFJFRklYICopaGFzaFRhYmxlSXRlck5leHQoJml0ZXIpOwogICAgIGlmICghcHJlZml4KQogICAgICAgYnJlYWs7Ci0gICAgaWYgKCFwcmVmaXgtPmJpbmRpbmcpCi0gICAgICBjb250aW51ZTsKLSAgICBpZiAobmVlZFNlcCAmJiAhcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBDT05URVhUX1NFUCkpCisgICAgaWYgKCFwcmVmaXgtPmJpbmRpbmcpIHsKKyAgICAgIC8qIFRoaXMgdGVzdCBhcHBlYXJzIHRvIGJlIChqdXN0aWZpYWJsZSkgcGFyYW5vaWEuICBUaGVyZSBkb2VzCisgICAgICAgKiBub3Qgc2VlbSB0byBiZSBhIHdheSBvZiBpbmplY3RpbmcgYSBwcmVmaXggd2l0aG91dCBhIGJpbmRpbmcKKyAgICAgICAqIHRoYXQgZG9lc24ndCBnZXQgZXJyb3JlZCBsb25nIGJlZm9yZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZC4KKyAgICAgICAqIFRoZSB0ZXN0IHNob3VsZCByZW1haW4gZm9yIHNhZmV0eSdzIHNha2UsIHNvIHdlIGluc3RlYWQKKyAgICAgICAqIGV4Y2x1ZGUgdGhlIGZvbGxvd2luZyBsaW5lIGZyb20gdGhlIGNvdmVyYWdlIHN0YXRpc3RpY3MuCisgICAgICAgKi8KKyAgICAgIGNvbnRpbnVlOyAvKiBMQ09WX0VYQ0xfTElORSAqLworICAgIH0KKyAgICBpZiAobmVlZFNlcCAmJiAhcG9vbEFwcGVuZENoYXIoJnBhcnNlci0+bV90ZW1wUG9vbCwgQ09OVEVYVF9TRVApKQogICAgICAgcmV0dXJuIE5VTEw7CiAgICAgZm9yIChzID0gcHJlZml4LT5uYW1lOyAqczsgcysrKQotICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsICpzKSkKKyAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnBhcnNlci0+bV90ZW1wUG9vbCwgKnMpKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoQVNDSUlfRVFVQUxTKSkpCisgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCBYTUxfVChBU0NJSV9FUVVBTFMpKSkKICAgICAgIHJldHVybiBOVUxMOwogICAgIGxlbiA9IHByZWZpeC0+YmluZGluZy0+dXJpTGVuOwotICAgIGlmIChuYW1lc3BhY2VTZXBhcmF0b3IpCisgICAgaWYgKHBhcnNlci0+bV9uYW1lc3BhY2VTZXBhcmF0b3IpCiAgICAgICBsZW4tLTsKICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspCi0gICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgcHJlZml4LT5iaW5kaW5nLT51cmlbaV0pKQorICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCBwcmVmaXgtPmJpbmRpbmctPnVyaVtpXSkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIG5lZWRTZXAgPSBYTUxfVFJVRTsKICAgfQpAQCAtNTU5OCw3MyArNjIzNSw3MyBAQAogICAgICAgYnJlYWs7CiAgICAgaWYgKCFlLT5vcGVuKQogICAgICAgY29udGludWU7Ci0gICAgaWYgKG5lZWRTZXAgJiYgIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgQ09OVEVYVF9TRVApKQorICAgIGlmIChuZWVkU2VwICYmICFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCBDT05URVhUX1NFUCkpCiAgICAgICByZXR1cm4gTlVMTDsKICAgICBmb3IgKHMgPSBlLT5uYW1lOyAqczsgcysrKQotICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsICpzKSkKKyAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnBhcnNlci0+bV90ZW1wUG9vbCwgKnMpKQogICAgICAgICByZXR1cm4gMDsKICAgICBuZWVkU2VwID0gWE1MX1RSVUU7CiAgIH0KIAotICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZ0ZW1wUG9vbCwgWE1MX1QoJ1wwJykpKQorICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZwYXJzZXItPm1fdGVtcFBvb2wsIFhNTF9UKCdcMCcpKSkKICAgICByZXR1cm4gTlVMTDsKLSAgcmV0dXJuIHRlbXBQb29sLnN0YXJ0OworICByZXR1cm4gcGFyc2VyLT5tX3RlbXBQb29sLnN0YXJ0OwogfQogCiBzdGF0aWMgWE1MX0Jvb2wKIHNldENvbnRleHQoWE1MX1BhcnNlciBwYXJzZXIsIGNvbnN0IFhNTF9DaGFyICpjb250ZXh0KQogewotICBEVEQgKiBjb25zdCBkdGQgPSBfZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KKyAgRFREICogY29uc3QgZHRkID0gcGFyc2VyLT5tX2R0ZDsgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCiAgIGNvbnN0IFhNTF9DaGFyICpzID0gY29udGV4dDsKIAogICB3aGlsZSAoKmNvbnRleHQgIT0gWE1MX1QoJ1wwJykpIHsKICAgICBpZiAoKnMgPT0gQ09OVEVYVF9TRVAgfHwgKnMgPT0gWE1MX1QoJ1wwJykpIHsKICAgICAgIEVOVElUWSAqZTsKLSAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBYTUxfVCgnXDAnKSkpCisgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZwYXJzZXItPm1fdGVtcFBvb2wsIFhNTF9UKCdcMCcpKSkKICAgICAgICAgcmV0dXJuIFhNTF9GQUxTRTsKLSAgICAgIGUgPSAoRU5USVRZICopbG9va3VwKHBhcnNlciwgJmR0ZC0+Z2VuZXJhbEVudGl0aWVzLCBwb29sU3RhcnQoJnRlbXBQb29sKSwgMCk7CisgICAgICBlID0gKEVOVElUWSAqKWxvb2t1cChwYXJzZXIsICZkdGQtPmdlbmVyYWxFbnRpdGllcywgcG9vbFN0YXJ0KCZwYXJzZXItPm1fdGVtcFBvb2wpLCAwKTsKICAgICAgIGlmIChlKQogICAgICAgICBlLT5vcGVuID0gWE1MX1RSVUU7CiAgICAgICBpZiAoKnMgIT0gWE1MX1QoJ1wwJykpCiAgICAgICAgIHMrKzsKICAgICAgIGNvbnRleHQgPSBzOwotICAgICAgcG9vbERpc2NhcmQoJnRlbXBQb29sKTsKKyAgICAgIHBvb2xEaXNjYXJkKCZwYXJzZXItPm1fdGVtcFBvb2wpOwogICAgIH0KICAgICBlbHNlIGlmICgqcyA9PSBYTUxfVChBU0NJSV9FUVVBTFMpKSB7CiAgICAgICBQUkVGSVggKnByZWZpeDsKLSAgICAgIGlmIChwb29sTGVuZ3RoKCZ0ZW1wUG9vbCkgPT0gMCkKKyAgICAgIGlmIChwb29sTGVuZ3RoKCZwYXJzZXItPm1fdGVtcFBvb2wpID09IDApCiAgICAgICAgIHByZWZpeCA9ICZkdGQtPmRlZmF1bHRQcmVmaXg7CiAgICAgICBlbHNlIHsKLSAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsIFhNTF9UKCdcMCcpKSkKKyAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCBYTUxfVCgnXDAnKSkpCiAgICAgICAgICAgcmV0dXJuIFhNTF9GQUxTRTsKLSAgICAgICAgcHJlZml4ID0gKFBSRUZJWCAqKWxvb2t1cChwYXJzZXIsICZkdGQtPnByZWZpeGVzLCBwb29sU3RhcnQoJnRlbXBQb29sKSwKKyAgICAgICAgcHJlZml4ID0gKFBSRUZJWCAqKWxvb2t1cChwYXJzZXIsICZkdGQtPnByZWZpeGVzLCBwb29sU3RhcnQoJnBhcnNlci0+bV90ZW1wUG9vbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKFBSRUZJWCkpOwogICAgICAgICBpZiAoIXByZWZpeCkKICAgICAgICAgICByZXR1cm4gWE1MX0ZBTFNFOwotICAgICAgICBpZiAocHJlZml4LT5uYW1lID09IHBvb2xTdGFydCgmdGVtcFBvb2wpKSB7CisgICAgICAgIGlmIChwcmVmaXgtPm5hbWUgPT0gcG9vbFN0YXJ0KCZwYXJzZXItPm1fdGVtcFBvb2wpKSB7CiAgICAgICAgICAgcHJlZml4LT5uYW1lID0gcG9vbENvcHlTdHJpbmcoJmR0ZC0+cG9vbCwgcHJlZml4LT5uYW1lKTsKICAgICAgICAgICBpZiAoIXByZWZpeC0+bmFtZSkKICAgICAgICAgICAgIHJldHVybiBYTUxfRkFMU0U7CiAgICAgICAgIH0KLSAgICAgICAgcG9vbERpc2NhcmQoJnRlbXBQb29sKTsKKyAgICAgICAgcG9vbERpc2NhcmQoJnBhcnNlci0+bV90ZW1wUG9vbCk7CiAgICAgICB9CiAgICAgICBmb3IgKGNvbnRleHQgPSBzICsgMTsKICAgICAgICAgICAgKmNvbnRleHQgIT0gQ09OVEVYVF9TRVAgJiYgKmNvbnRleHQgIT0gWE1MX1QoJ1wwJyk7CiAgICAgICAgICAgIGNvbnRleHQrKykKLSAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmdGVtcFBvb2wsICpjb250ZXh0KSkKKyAgICAgICAgaWYgKCFwb29sQXBwZW5kQ2hhcigmcGFyc2VyLT5tX3RlbXBQb29sLCAqY29udGV4dCkpCiAgICAgICAgICAgcmV0dXJuIFhNTF9GQUxTRTsKLSAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCBYTUxfVCgnXDAnKSkpCisgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZwYXJzZXItPm1fdGVtcFBvb2wsIFhNTF9UKCdcMCcpKSkKICAgICAgICAgcmV0dXJuIFhNTF9GQUxTRTsKLSAgICAgIGlmIChhZGRCaW5kaW5nKHBhcnNlciwgcHJlZml4LCBOVUxMLCBwb29sU3RhcnQoJnRlbXBQb29sKSwKLSAgICAgICAgICAgICAgICAgICAgICZpbmhlcml0ZWRCaW5kaW5ncykgIT0gWE1MX0VSUk9SX05PTkUpCisgICAgICBpZiAoYWRkQmluZGluZyhwYXJzZXIsIHByZWZpeCwgTlVMTCwgcG9vbFN0YXJ0KCZwYXJzZXItPm1fdGVtcFBvb2wpLAorICAgICAgICAgICAgICAgICAgICAgJnBhcnNlci0+bV9pbmhlcml0ZWRCaW5kaW5ncykgIT0gWE1MX0VSUk9SX05PTkUpCiAgICAgICAgIHJldHVybiBYTUxfRkFMU0U7Ci0gICAgICBwb29sRGlzY2FyZCgmdGVtcFBvb2wpOworICAgICAgcG9vbERpc2NhcmQoJnBhcnNlci0+bV90ZW1wUG9vbCk7CiAgICAgICBpZiAoKmNvbnRleHQgIT0gWE1MX1QoJ1wwJykpCiAgICAgICAgICsrY29udGV4dDsKICAgICAgIHMgPSBjb250ZXh0OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgIGlmICghcG9vbEFwcGVuZENoYXIoJnRlbXBQb29sLCAqcykpCisgICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKCZwYXJzZXItPm1fdGVtcFBvb2wsICpzKSkKICAgICAgICAgcmV0dXJuIFhNTF9GQUxTRTsKICAgICAgIHMrKzsKICAgICB9CkBAIC01ODc1LDcgKzY1MTIsNiBAQAogICAgICAgbmV3RS0+ZGVmYXVsdEF0dHMgPSAoREVGQVVMVF9BVFRSSUJVVEUgKikKICAgICAgICAgICBtcy0+bWFsbG9jX2ZjbihvbGRFLT5uRGVmYXVsdEF0dHMgKiBzaXplb2YoREVGQVVMVF9BVFRSSUJVVEUpKTsKICAgICAgIGlmICghbmV3RS0+ZGVmYXVsdEF0dHMpIHsKLSAgICAgICAgbXMtPmZyZWVfZmNuKG5ld0UpOwogICAgICAgICByZXR1cm4gMDsKICAgICAgIH0KICAgICB9CkBAIC02MDEwLDEzICs2NjQ2LDMxIEBACiAgIHJldHVybiBYTUxfRkFMU0U7CiB9CiAKK3N0YXRpYyBzaXplX3QKK2tleWxlbihLRVkgcykKK3sKKyAgc2l6ZV90IGxlbiA9IDA7CisgIGZvciAoOyAqczsgcysrLCBsZW4rKyk7CisgIHJldHVybiBsZW47Cit9CisKK3N0YXRpYyB2b2lkCitjb3B5X3NhbHRfdG9fc2lwa2V5KFhNTF9QYXJzZXIgcGFyc2VyLCBzdHJ1Y3Qgc2lwa2V5ICoga2V5KQoreworICBrZXktPmtbMF0gPSAwOworICBrZXktPmtbMV0gPSBnZXRfaGFzaF9zZWNyZXRfc2FsdChwYXJzZXIpOworfQorCiBzdGF0aWMgdW5zaWduZWQgbG9uZyBGQVNUQ0FMTAogaGFzaChYTUxfUGFyc2VyIHBhcnNlciwgS0VZIHMpCiB7Ci0gIHVuc2lnbmVkIGxvbmcgaCA9IGhhc2hfc2VjcmV0X3NhbHQ7Ci0gIHdoaWxlICgqcykKLSAgICBoID0gQ0hBUl9IQVNIKGgsICpzKyspOwotICByZXR1cm4gaDsKKyAgc3RydWN0IHNpcGhhc2ggc3RhdGU7CisgIHN0cnVjdCBzaXBrZXkga2V5OworICAodm9pZClzaXAyNF92YWxpZDsKKyAgY29weV9zYWx0X3RvX3NpcGtleShwYXJzZXIsICZrZXkpOworICBzaXAyNF9pbml0KCZzdGF0ZSwgJmtleSk7CisgIHNpcDI0X3VwZGF0ZSgmc3RhdGUsIHMsIGtleWxlbihzKSAqIHNpemVvZihYTUxfQ2hhcikpOworICByZXR1cm4gKHVuc2lnbmVkIGxvbmcpc2lwMjRfZmluYWwoJnN0YXRlKTsKIH0KIAogc3RhdGljIE5BTUVEICoKQEAgLTYyMDEsOCArNjg1NSw4IEBACiAgIGlmICghcG9vbC0+cHRyICYmICFwb29sR3Jvdyhwb29sKSkKICAgICByZXR1cm4gTlVMTDsKICAgZm9yICg7OykgewotICAgIFhtbENvbnZlcnQoZW5jLCAmcHRyLCBlbmQsIChJQ0hBUiAqKikmKHBvb2wtPnB0ciksIChJQ0hBUiAqKXBvb2wtPmVuZCk7Ci0gICAgaWYgKHB0ciA9PSBlbmQpCisgICAgY29uc3QgZW51bSBYTUxfQ29udmVydF9SZXN1bHQgY29udmVydF9yZXMgPSBYbWxDb252ZXJ0KGVuYywgJnB0ciwgZW5kLCAoSUNIQVIgKiopJihwb29sLT5wdHIpLCAoSUNIQVIgKilwb29sLT5lbmQpOworICAgIGlmICgoY29udmVydF9yZXMgPT0gWE1MX0NPTlZFUlRfQ09NUExFVEVEKSB8fCAoY29udmVydF9yZXMgPT0gWE1MX0NPTlZFUlRfSU5QVVRfSU5DT01QTEVURSkpCiAgICAgICBicmVhazsKICAgICBpZiAoIXBvb2xHcm93KHBvb2wpKQogICAgICAgcmV0dXJuIE5VTEw7CkBAIC02MjI1LDggKzY4NzksMjAgQEAKIHN0YXRpYyBjb25zdCBYTUxfQ2hhciAqCiBwb29sQ29weVN0cmluZ04oU1RSSU5HX1BPT0wgKnBvb2wsIGNvbnN0IFhNTF9DaGFyICpzLCBpbnQgbikKIHsKLSAgaWYgKCFwb29sLT5wdHIgJiYgIXBvb2xHcm93KHBvb2wpKQotICAgIHJldHVybiBOVUxMOworICBpZiAoIXBvb2wtPnB0ciAmJiAhcG9vbEdyb3cocG9vbCkpIHsKKyAgICAvKiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgdW5yZWFjaGFibGUgZ2l2ZW4gdGhlIGN1cnJlbnQgdXNhZ2Ugb2YKKyAgICAgKiBwb29sQ29weVN0cmluZ04oKS4gIEN1cnJlbnRseSBpdCBpcyBjYWxsZWQgZnJvbSBleGFjdGx5IG9uZQorICAgICAqIHBsYWNlIHRvIGNvcHkgdGhlIHRleHQgb2YgYSBzaW1wbGUgZ2VuZXJhbCBlbnRpdHkuICBCeSB0aGF0CisgICAgICogcG9pbnQsIHRoZSBuYW1lIG9mIHRoZSBlbnRpdHkgaXMgYWxyZWFkeSBzdG9yZWQgaW4gdGhlIHBvb2wsIHNvCisgICAgICogcG9vbC0+cHRyIGNhbm5vdCBiZSBOVUxMLgorICAgICAqCisgICAgICogSWYgcG9vbENvcHlTdHJpbmdOKCkgaXMgdXNlZCBlbHNld2hlcmUgYXMgaXQgd2VsbCBtaWdodCBiZSwKKyAgICAgKiB0aGlzIGxpbmUgbWF5IHdlbGwgYmVjb21lIGV4ZWN1dGFibGUgYWdhaW4uICBSZWdhcmRsZXNzLCB0aGlzCisgICAgICogc29ydCBvZiBjaGVjayBzaG91bGRuJ3QgYmUgcmVtb3ZlZCBsaWdodGx5LCBzbyB3ZSBqdXN0IGV4Y2x1ZGUKKyAgICAgKiBpdCBmcm9tIHRoZSBjb3ZlcmFnZSBzdGF0aXN0aWNzLgorICAgICAqLworICAgIHJldHVybiBOVUxMOyAvKiBMQ09WX0VYQ0xfTElORSAqLworICB9CiAgIGZvciAoOyBuID4gMDsgLS1uLCBzKyspIHsKICAgICBpZiAoIXBvb2xBcHBlbmRDaGFyKHBvb2wsICpzKSkKICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjI1OSw2ICs2OTI1LDM1IEBACiAgIHJldHVybiBwb29sLT5zdGFydDsKIH0KIAorc3RhdGljIHNpemVfdAorcG9vbEJ5dGVzVG9BbGxvY2F0ZUZvcihpbnQgYmxvY2tTaXplKQoreworICAvKiBVbnByb3RlY3RlZCBtYXRoIHdvdWxkIGJlOgorICAqKiByZXR1cm4gb2Zmc2V0b2YoQkxPQ0ssIHMpICsgYmxvY2tTaXplICogc2l6ZW9mKFhNTF9DaGFyKTsKKyAgKioKKyAgKiogRGV0ZWN0IG92ZXJmbG93LCBhdm9pZGluZyBfc2lnbmVkXyBvdmVyZmxvdyB1bmRlZmluZWQgYmVoYXZpb3IKKyAgKiogRm9yIGEgKyBiICogYyB3ZSBjaGVjayBiICogYyBpbiBpc29sYXRpb24gZmlyc3QsIHNvIHRoYXQgYWRkaXRpb24gb2YgYQorICAqKiBvbiB0b3AgaGFzIG5vIGNoYW5jZSBvZiBtYWtpbmcgdXMgYWNjZXB0IGEgc21hbGwgbm9uLW5lZ2F0aXZlIG51bWJlcgorICAqLworICBjb25zdCBzaXplX3Qgc3RyZXRjaCA9IHNpemVvZihYTUxfQ2hhcik7ICAvKiBjYW4gYmUgNCBieXRlcyAqLworCisgIGlmIChibG9ja1NpemUgPD0gMCkKKyAgICByZXR1cm4gMDsKKworICBpZiAoYmxvY2tTaXplID4gKGludCkoSU5UX01BWCAvIHN0cmV0Y2gpKQorICAgIHJldHVybiAwOworCisgIHsKKyAgICBjb25zdCBpbnQgc3RyZXRjaGVkQmxvY2tTaXplID0gYmxvY2tTaXplICogKGludClzdHJldGNoOworICAgIGNvbnN0IGludCBieXRlc1RvQWxsb2NhdGUgPSAoaW50KSgKKyAgICAgICAgb2Zmc2V0b2YoQkxPQ0ssIHMpICsgKHVuc2lnbmVkKXN0cmV0Y2hlZEJsb2NrU2l6ZSk7CisgICAgaWYgKGJ5dGVzVG9BbGxvY2F0ZSA8IDApCisgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiAoc2l6ZV90KWJ5dGVzVG9BbGxvY2F0ZTsKKyAgfQorfQorCiBzdGF0aWMgWE1MX0Jvb2wgRkFTVENBTEwKIHBvb2xHcm93KFNUUklOR19QT09MICpwb29sKQogewpAQCAtNjI4NiwyOCArNjk4MSw3MSBAQAogICAgIH0KICAgfQogICBpZiAocG9vbC0+YmxvY2tzICYmIHBvb2wtPnN0YXJ0ID09IHBvb2wtPmJsb2Nrcy0+cykgewotICAgIGludCBibG9ja1NpemUgPSAoaW50KShwb29sLT5lbmQgLSBwb29sLT5zdGFydCkqMjsKLSAgICBCTE9DSyAqdGVtcCA9IChCTE9DSyAqKQotICAgICAgcG9vbC0+bWVtLT5yZWFsbG9jX2Zjbihwb29sLT5ibG9ja3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvZmZzZXRvZihCTE9DSywgcykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYmxvY2tTaXplICogc2l6ZW9mKFhNTF9DaGFyKSkpOworICAgIEJMT0NLICp0ZW1wOworICAgIGludCBibG9ja1NpemUgPSAoaW50KSgodW5zaWduZWQpKHBvb2wtPmVuZCAtIHBvb2wtPnN0YXJ0KSoyVSk7CisgICAgc2l6ZV90IGJ5dGVzVG9BbGxvY2F0ZTsKKworICAgIC8qIE5PVEU6IE5lZWRzIHRvIGJlIGNhbGN1bGF0ZWQgcHJpb3IgdG8gY2FsbGluZyBgcmVhbGxvY2AKKyAgICAgICAgICAgICB0byBhdm9pZCBkYW5nbGluZyBwb2ludGVyczogKi8KKyAgICBjb25zdCBwdHJkaWZmX3Qgb2Zmc2V0SW5zaWRlQmxvY2sgPSBwb29sLT5wdHIgLSBwb29sLT5zdGFydDsKKworICAgIGlmIChibG9ja1NpemUgPCAwKSB7CisgICAgICAvKiBUaGlzIGNvbmRpdGlvbiB0cmFwcyBhIHNpdHVhdGlvbiB3aGVyZSBlaXRoZXIgbW9yZSB0aGFuCisgICAgICAgKiBJTlRfTUFYLzIgYnl0ZXMgaGF2ZSBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkLiAgVGhpcyBpc24ndAorICAgICAgICogcmVhZGlseSB0ZXN0YWJsZSwgc2luY2UgaXQgaXMgdW5saWtlbHkgdGhhdCBhbiBhdmVyYWdlCisgICAgICAgKiBtYWNoaW5lIHdpbGwgaGF2ZSB0aGF0IG11Y2ggbWVtb3J5LCBzbyB3ZSBleGNsdWRlIGl0IGZyb20gdGhlCisgICAgICAgKiBjb3ZlcmFnZSBzdGF0aXN0aWNzLgorICAgICAgICovCisgICAgICByZXR1cm4gWE1MX0ZBTFNFOyAvKiBMQ09WX0VYQ0xfTElORSAqLworICAgIH0KKworICAgIGJ5dGVzVG9BbGxvY2F0ZSA9IHBvb2xCeXRlc1RvQWxsb2NhdGVGb3IoYmxvY2tTaXplKTsKKyAgICBpZiAoYnl0ZXNUb0FsbG9jYXRlID09IDApCisgICAgICByZXR1cm4gWE1MX0ZBTFNFOworCisgICAgdGVtcCA9IChCTE9DSyAqKQorICAgICAgcG9vbC0+bWVtLT5yZWFsbG9jX2Zjbihwb29sLT5ibG9ja3MsICh1bnNpZ25lZClieXRlc1RvQWxsb2NhdGUpOwogICAgIGlmICh0ZW1wID09IE5VTEwpCiAgICAgICByZXR1cm4gWE1MX0ZBTFNFOwogICAgIHBvb2wtPmJsb2NrcyA9IHRlbXA7CiAgICAgcG9vbC0+YmxvY2tzLT5zaXplID0gYmxvY2tTaXplOwotICAgIHBvb2wtPnB0ciA9IHBvb2wtPmJsb2Nrcy0+cyArIChwb29sLT5wdHIgLSBwb29sLT5zdGFydCk7CisgICAgcG9vbC0+cHRyID0gcG9vbC0+YmxvY2tzLT5zICsgb2Zmc2V0SW5zaWRlQmxvY2s7CiAgICAgcG9vbC0+c3RhcnQgPSBwb29sLT5ibG9ja3MtPnM7CiAgICAgcG9vbC0+ZW5kID0gcG9vbC0+c3RhcnQgKyBibG9ja1NpemU7CiAgIH0KICAgZWxzZSB7CiAgICAgQkxPQ0sgKnRlbTsKICAgICBpbnQgYmxvY2tTaXplID0gKGludCkocG9vbC0+ZW5kIC0gcG9vbC0+c3RhcnQpOworICAgIHNpemVfdCBieXRlc1RvQWxsb2NhdGU7CisKKyAgICBpZiAoYmxvY2tTaXplIDwgMCkgeworICAgICAgLyogVGhpcyBjb25kaXRpb24gdHJhcHMgYSBzaXR1YXRpb24gd2hlcmUgZWl0aGVyIG1vcmUgdGhhbgorICAgICAgICogSU5UX01BWCBieXRlcyBoYXZlIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgKHdoaWNoIGlzIHByZXZlbnRlZAorICAgICAgICogYnkgdmFyaW91cyBwaWVjZXMgb2YgcHJvZ3JhbSBsb2dpYywgbm90IGxlYXN0IHRoaXMgb25lLCBuZXZlcgorICAgICAgICogbWluZCB0aGUgdW5saWtlbGlob29kIG9mIGFjdHVhbGx5IGhhdmluZyB0aGF0IG11Y2ggbWVtb3J5KSBvcgorICAgICAgICogdGhlIHBvb2wgY29udHJvbCBmaWVsZHMgaGF2ZSBiZWVuIGNvcnJ1cHRlZCAod2hpY2ggY291bGQKKyAgICAgICAqIGNvbmNlaXZhYmx5IGhhcHBlbiBpbiBhbiBleHRyZW1lbHkgYnVnZ3kgdXNlciBoYW5kbGVyCisgICAgICAgKiBmdW5jdGlvbikuICBFaXRoZXIgd2F5IGl0IGlzbid0IHJlYWRpbHkgdGVzdGFibGUsIHNvIHdlCisgICAgICAgKiBleGNsdWRlIGl0IGZyb20gdGhlIGNvdmVyYWdlIHN0YXRpc3RpY3MuCisgICAgICAgKi8KKyAgICAgIHJldHVybiBYTUxfRkFMU0U7ICAvKiBMQ09WX0VYQ0xfTElORSAqLworICAgIH0KKwogICAgIGlmIChibG9ja1NpemUgPCBJTklUX0JMT0NLX1NJWkUpCiAgICAgICBibG9ja1NpemUgPSBJTklUX0JMT0NLX1NJWkU7Ci0gICAgZWxzZQorICAgIGVsc2UgeworICAgICAgLyogRGV0ZWN0IG92ZXJmbG93LCBhdm9pZGluZyBfc2lnbmVkXyBvdmVyZmxvdyB1bmRlZmluZWQgYmVoYXZpb3IgKi8KKyAgICAgIGlmICgoaW50KSgodW5zaWduZWQpYmxvY2tTaXplICogMlUpIDwgMCkgeworICAgICAgICByZXR1cm4gWE1MX0ZBTFNFOworICAgICAgfQogICAgICAgYmxvY2tTaXplICo9IDI7Ci0gICAgdGVtID0gKEJMT0NLICopcG9vbC0+bWVtLT5tYWxsb2NfZmNuKG9mZnNldG9mKEJMT0NLLCBzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgYmxvY2tTaXplICogc2l6ZW9mKFhNTF9DaGFyKSk7CisgICAgfQorCisgICAgYnl0ZXNUb0FsbG9jYXRlID0gcG9vbEJ5dGVzVG9BbGxvY2F0ZUZvcihibG9ja1NpemUpOworICAgIGlmIChieXRlc1RvQWxsb2NhdGUgPT0gMCkKKyAgICAgIHJldHVybiBYTUxfRkFMU0U7CisKKyAgICB0ZW0gPSAoQkxPQ0sgKilwb29sLT5tZW0tPm1hbGxvY19mY24oYnl0ZXNUb0FsbG9jYXRlKTsKICAgICBpZiAoIXRlbSkKICAgICAgIHJldHVybiBYTUxfRkFMU0U7CiAgICAgdGVtLT5zaXplID0gYmxvY2tTaXplOwpAQCAtNjMyNiwxMiArNzA2NCwxMiBAQAogc3RhdGljIGludCBGQVNUQ0FMTAogbmV4dFNjYWZmb2xkUGFydChYTUxfUGFyc2VyIHBhcnNlcikKIHsKLSAgRFREICogY29uc3QgZHRkID0gX2R0ZDsgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCisgIERURCAqIGNvbnN0IGR0ZCA9IHBhcnNlci0+bV9kdGQ7ICAvKiBzYXZlIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiAqLwogICBDT05URU5UX1NDQUZGT0xEICogbWU7CiAgIGludCBuZXh0OwogCiAgIGlmICghZHRkLT5zY2FmZkluZGV4KSB7Ci0gICAgZHRkLT5zY2FmZkluZGV4ID0gKGludCAqKU1BTExPQyhncm91cFNpemUgKiBzaXplb2YoaW50KSk7CisgICAgZHRkLT5zY2FmZkluZGV4ID0gKGludCAqKU1BTExPQyhwYXJzZXIsIHBhcnNlci0+bV9ncm91cFNpemUgKiBzaXplb2YoaW50KSk7CiAgICAgaWYgKCFkdGQtPnNjYWZmSW5kZXgpCiAgICAgICByZXR1cm4gLTE7CiAgICAgZHRkLT5zY2FmZkluZGV4WzBdID0gMDsKQEAgLTYzNDEsMTMgKzcwNzksMTMgQEAKICAgICBDT05URU5UX1NDQUZGT0xEICp0ZW1wOwogICAgIGlmIChkdGQtPnNjYWZmb2xkKSB7CiAgICAgICB0ZW1wID0gKENPTlRFTlRfU0NBRkZPTEQgKikKLSAgICAgICAgUkVBTExPQyhkdGQtPnNjYWZmb2xkLCBkdGQtPnNjYWZmU2l6ZSAqIDIgKiBzaXplb2YoQ09OVEVOVF9TQ0FGRk9MRCkpOworICAgICAgICBSRUFMTE9DKHBhcnNlciwgZHRkLT5zY2FmZm9sZCwgZHRkLT5zY2FmZlNpemUgKiAyICogc2l6ZW9mKENPTlRFTlRfU0NBRkZPTEQpKTsKICAgICAgIGlmICh0ZW1wID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKICAgICAgIGR0ZC0+c2NhZmZTaXplICo9IDI7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgdGVtcCA9IChDT05URU5UX1NDQUZGT0xEICopTUFMTE9DKElOSVRfU0NBRkZPTERfRUxFTUVOVFMKKyAgICAgIHRlbXAgPSAoQ09OVEVOVF9TQ0FGRk9MRCAqKU1BTExPQyhwYXJzZXIsIElOSVRfU0NBRkZPTERfRUxFTUVOVFMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemVvZihDT05URU5UX1NDQUZGT0xEKSk7CiAgICAgICBpZiAodGVtcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CkBAIC02Mzc4LDcgKzcxMTYsNyBAQAogICAgICAgICAgICBYTUxfQ29udGVudCAqKmNvbnRwb3MsCiAgICAgICAgICAgIFhNTF9DaGFyICoqc3RycG9zKQogewotICBEVEQgKiBjb25zdCBkdGQgPSBfZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KKyAgRFREICogY29uc3QgZHRkID0gcGFyc2VyLT5tX2R0ZDsgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCiAgIGRlc3QtPnR5cGUgPSBkdGQtPnNjYWZmb2xkW3NyY19ub2RlXS50eXBlOwogICBkZXN0LT5xdWFudCA9IGR0ZC0+c2NhZmZvbGRbc3JjX25vZGVdLnF1YW50OwogICBpZiAoZGVzdC0+dHlwZSA9PSBYTUxfQ1RZUEVfTkFNRSkgewpAQCAtNjQxMiwxNCArNzE1MCwxNCBAQAogc3RhdGljIFhNTF9Db250ZW50ICoKIGJ1aWxkX21vZGVsIChYTUxfUGFyc2VyIHBhcnNlcikKIHsKLSAgRFREICogY29uc3QgZHRkID0gX2R0ZDsgIC8qIHNhdmUgb25lIGxldmVsIG9mIGluZGlyZWN0aW9uICovCisgIERURCAqIGNvbnN0IGR0ZCA9IHBhcnNlci0+bV9kdGQ7ICAvKiBzYXZlIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiAqLwogICBYTUxfQ29udGVudCAqcmV0OwogICBYTUxfQ29udGVudCAqY3BvczsKICAgWE1MX0NoYXIgKiBzdHI7CiAgIGludCBhbGxvY3NpemUgPSAoZHRkLT5zY2FmZkNvdW50ICogc2l6ZW9mKFhNTF9Db250ZW50KQogICAgICAgICAgICAgICAgICAgICsgKGR0ZC0+Y29udGVudFN0cmluZ0xlbiAqIHNpemVvZihYTUxfQ2hhcikpKTsKIAotICByZXQgPSAoWE1MX0NvbnRlbnQgKilNQUxMT0MoYWxsb2NzaXplKTsKKyAgcmV0ID0gKFhNTF9Db250ZW50ICopTUFMTE9DKHBhcnNlciwgYWxsb2NzaXplKTsKICAgaWYgKCFyZXQpCiAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTY0MzYsNyArNzE3NCw3IEBACiAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwdHIsCiAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQpCiB7Ci0gIERURCAqIGNvbnN0IGR0ZCA9IF9kdGQ7ICAvKiBzYXZlIG9uZSBsZXZlbCBvZiBpbmRpcmVjdGlvbiAqLworICBEVEQgKiBjb25zdCBkdGQgPSBwYXJzZXItPm1fZHRkOyAgLyogc2F2ZSBvbmUgbGV2ZWwgb2YgaW5kaXJlY3Rpb24gKi8KICAgY29uc3QgWE1MX0NoYXIgKm5hbWUgPSBwb29sU3RvcmVTdHJpbmcoJmR0ZC0+cG9vbCwgZW5jLCBwdHIsIGVuZCk7CiAgIEVMRU1FTlRfVFlQRSAqcmV0OwogCkBAIC02NDU0LDMgKzcxOTIsMjYgQEAKICAgfQogICByZXR1cm4gcmV0OwogfQorCitzdGF0aWMgWE1MX0NoYXIgKgorY29weVN0cmluZyhjb25zdCBYTUxfQ2hhciAqcywKKyAgICAgICAgICAgY29uc3QgWE1MX01lbW9yeV9IYW5kbGluZ19TdWl0ZSAqbWVtc3VpdGUpCit7CisgICAgaW50IGNoYXJzUmVxdWlyZWQgPSAwOworICAgIFhNTF9DaGFyICpyZXN1bHQ7CisKKyAgICAvKiBGaXJzdCBkZXRlcm1pbmUgaG93IGxvbmcgdGhlIHN0cmluZyBpcyAqLworICAgIHdoaWxlIChzW2NoYXJzUmVxdWlyZWRdICE9IDApIHsKKyAgICAgIGNoYXJzUmVxdWlyZWQrKzsKKyAgICB9CisgICAgLyogSW5jbHVkZSB0aGUgdGVybWluYXRvciAqLworICAgIGNoYXJzUmVxdWlyZWQrKzsKKworICAgIC8qIE5vdyBhbGxvY2F0ZSBzcGFjZSBmb3IgdGhlIGNvcHkgKi8KKyAgICByZXN1bHQgPSBtZW1zdWl0ZS0+bWFsbG9jX2ZjbihjaGFyc1JlcXVpcmVkICogc2l6ZW9mKFhNTF9DaGFyKSk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAvKiBDb3B5IHRoZSBvcmlnaW5hbCBpbnRvIHBsYWNlICovCisgICAgbWVtY3B5KHJlc3VsdCwgcywgY2hhcnNSZXF1aXJlZCAqIHNpemVvZihYTUxfQ2hhcikpOworICAgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3htbHJvbGUuYyBiL01vZHVsZXMvZXhwYXQveG1scm9sZS5jCmluZGV4IDQ0NzcyZTIuLjcwODUwN2QgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQveG1scm9sZS5jCisrKyBiL01vZHVsZXMvZXhwYXQveG1scm9sZS5jCkBAIC0xLDIyICsxLDQ0IEBACi0vKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTkgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCi0gICBTZWUgdGhlIGZpbGUgQ09QWUlORyBmb3IgY29weWluZyBwZXJtaXNzaW9uLgorLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXyAgX18gICAgICAgICAgICBfCisgICAgICAgICAgICAgICAgICAgICAgICAgX19fXCBcLyAvXyBfXyAgIF9fIF98IHxfCisgICAgICAgICAgICAgICAgICAgICAgICAvIF8gXFwgIC98ICdfIFwgLyBfYCB8IF9ffAorICAgICAgICAgICAgICAgICAgICAgICB8ICBfXy8vICBcfCB8XykgfCAoX3wgfCB8XworICAgICAgICAgICAgICAgICAgICAgICAgXF9fXy9fL1xfXCAuX18vIFxfXyxffFxfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxffCBYTUwgcGFyc2VyCisKKyAgIENvcHlyaWdodCAoYykgMTk5Ny0yMDAwIFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAorICAgQ29weXJpZ2h0IChjKSAyMDAwLTIwMTcgRXhwYXQgZGV2ZWxvcG1lbnQgdGVhbQorICAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgorCisgICBQZXJtaXNzaW9uIGlzICBoZXJlYnkgZ3JhbnRlZCwgIGZyZWUgb2YgY2hhcmdlLCAgdG8gYW55ICBwZXJzb24gb2J0YWluaW5nCisgICBhICBjb3B5ICBvZiAgdGhpcyAgc29mdHdhcmUgICBhbmQgIGFzc29jaWF0ZWQgIGRvY3VtZW50YXRpb24gIGZpbGVzICAodGhlCisgICAiU29mdHdhcmUiKSwgIHRvICBkZWFsIGluICB0aGUgIFNvZnR3YXJlICB3aXRob3V0IHJlc3RyaWN0aW9uLCAgaW5jbHVkaW5nCisgICB3aXRob3V0ICBsaW1pdGF0aW9uIHRoZSAgcmlnaHRzICB0byB1c2UsICBjb3B5LCAgbW9kaWZ5LCBtZXJnZSwgIHB1Ymxpc2gsCisgICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0CisgICBwZXJzb25zICB0byB3aG9tICB0aGUgU29mdHdhcmUgIGlzICBmdXJuaXNoZWQgdG8gIGRvIHNvLCAgc3ViamVjdCB0byAgdGhlCisgICBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgVGhlIGFib3ZlIGNvcHlyaWdodCAgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlICBzaGFsbCBiZSBpbmNsdWRlZAorICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgIFRIRSAgU09GVFdBUkUgIElTICBQUk9WSURFRCAgIkFTICBJUyIsICBXSVRIT1VUICBXQVJSQU5UWSAgT0YgIEFOWSAgS0lORCwKKyAgIEVYUFJFU1MgIE9SIElNUExJRUQsICBJTkNMVURJTkcgIEJVVCAgTk9UIExJTUlURUQgIFRPICBUSEUgV0FSUkFOVElFUyAgT0YKKyAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KKyAgIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SICBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKKyAgIERBTUFHRVMgT1IgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiAgSU4gQU4gIEFDVElPTiBPRiBDT05UUkFDVCwgIFRPUlQgT1IKKyAgIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKKyAgIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqLwogCiAjaW5jbHVkZSA8c3RkZGVmLmg+CiAKLSNpZmRlZiBDT01QSUxFRF9GUk9NX0RTUAorI2lmZGVmIF9XSU4zMgogI2luY2x1ZGUgIndpbmNvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChNQUNPU19DTEFTU0lDKQotI2luY2x1ZGUgIm1hY2NvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChfX2FtaWdhb3NfXykKLSNpbmNsdWRlICJhbWlnYWNvbmZpZy5oIgotI2VsaWYgZGVmaW5lZChfX1dBVENPTUNfXykKLSNpbmNsdWRlICJ3YXRjb21jb25maWcuaCIKICNlbHNlCiAjaWZkZWYgSEFWRV9FWFBBVF9DT05GSUdfSAogI2luY2x1ZGUgPGV4cGF0X2NvbmZpZy5oPgogI2VuZGlmCi0jZW5kaWYgLyogbmRlZiBDT01QSUxFRF9GUk9NX0RTUCAqLworI2VuZGlmIC8qIG5kZWYgX1dJTjMyICovCiAKICNpbmNsdWRlICJleHBhdF9leHRlcm5hbC5oIgogI2luY2x1ZGUgImludGVybmFsLmgiCkBAIC0xNzYsNyArMTk4LDE0IEBACiAgIGNhc2UgWE1MX1RPS19DT01NRU5UOgogICAgIHJldHVybiBYTUxfUk9MRV9DT01NRU5UOwogICBjYXNlIFhNTF9UT0tfQk9NOgotICAgIHJldHVybiBYTUxfUk9MRV9OT05FOworICAgIC8qIFRoaXMgY2FzZSBjYW4gbmV2ZXIgYXJpc2UuICBUbyByZWFjaCB0aGlzIHJvbGUgZnVuY3Rpb24sIHRoZQorICAgICAqIHBhcnNlIG11c3QgaGF2ZSBwYXNzZWQgdGhyb3VnaCBwcm9sb2cwIGFuZCB0aGVyZWZvcmUgaGF2ZSBoYWQKKyAgICAgKiBzb21lIGZvcm0gb2YgaW5wdXQsIGV2ZW4gaWYgb25seSBhIHNwYWNlLiAgQXQgdGhhdCBwb2ludCwgYQorICAgICAqIGJ5dGUgb3JkZXIgbWFyayBpcyBubyBsb25nZXIgYSB2YWxpZCBjaGFyYWN0ZXIgKHRob3VnaAorICAgICAqIHRlY2huaWNhbGx5IGl0IHNob3VsZCBiZSBpbnRlcnByZXRlZCBhcyBhIG5vbi1icmVha2luZyBzcGFjZSksCisgICAgICogc28gd2lsbCBiZSByZWplY3RlZCBieSB0aGUgdG9rZW5pemluZyBzdGFnZXMuCisgICAgICovCisgICAgcmV0dXJuIFhNTF9ST0xFX05PTkU7IC8qIExDT1ZfRVhDTF9MSU5FICovCiAgIGNhc2UgWE1MX1RPS19ERUNMX09QRU46CiAgICAgaWYgKCFYbWxOYW1lTWF0Y2hlc0FzY2lpKGVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHRyICsgMiAqIE1JTl9CWVRFU19QRVJfQ0hBUihlbmMpLApAQCAtMTk1LDkgKzIyNCw5IEBACiBzdGF0aWMgaW50IFBUUkNBTEwKIHByb2xvZzIoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgaW50IHRvaywKLSAgICAgICAgY29uc3QgY2hhciAqcHRyLAotICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKHB0ciksCisgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC0yMTYsOSArMjQ1LDkgQEAKIHN0YXRpYyBpbnQgUFRSQ0FMTAogZG9jdHlwZTAoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgIGludCB0b2ssCi0gICAgICAgICBjb25zdCBjaGFyICpwdHIsCi0gICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgICBjb25zdCBFTkNPRElORyAqZW5jKQorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AocHRyKSwKKyAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICBjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSkKIHsKICAgc3dpdGNoICh0b2spIHsKICAgY2FzZSBYTUxfVE9LX1BST0xPR19TOgpAQCAtMjY0LDkgKzI5Myw5IEBACiBzdGF0aWMgaW50IFBUUkNBTEwKIGRvY3R5cGUyKFBST0xPR19TVEFURSAqc3RhdGUsCiAgICAgICAgICBpbnQgdG9rLAotICAgICAgICAgY29uc3QgY2hhciAqcHRyLAotICAgICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKHB0ciksCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChlbmQpLAorICAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTI4MSw5ICszMTAsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBkb2N0eXBlMyhQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgaW50IHRvaywKLSAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC0yOTgsOSArMzI3LDkgQEAKIHN0YXRpYyBpbnQgUFRSQ0FMTAogZG9jdHlwZTQoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgIGludCB0b2ssCi0gICAgICAgICBjb25zdCBjaGFyICpwdHIsCi0gICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgICBjb25zdCBFTkNPRElORyAqZW5jKQorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AocHRyKSwKKyAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICBjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSkKIHsKICAgc3dpdGNoICh0b2spIHsKICAgY2FzZSBYTUxfVE9LX1BST0xPR19TOgpAQCAtMzE4LDkgKzM0Nyw5IEBACiBzdGF0aWMgaW50IFBUUkNBTEwKIGRvY3R5cGU1KFBST0xPR19TVEFURSAqc3RhdGUsCiAgICAgICAgICBpbnQgdG9rLAotICAgICAgICAgY29uc3QgY2hhciAqcHRyLAotICAgICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKHB0ciksCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChlbmQpLAorICAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTQzNyw5ICs0NjYsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBlbnRpdHkwKFBST0xPR19TVEFURSAqc3RhdGUsCiAgICAgICAgIGludCB0b2ssCi0gICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgICBjb25zdCBFTkNPRElORyAqZW5jKQorICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChlbmQpLAorICAgICAgICBjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSkKIHsKICAgc3dpdGNoICh0b2spIHsKICAgY2FzZSBYTUxfVE9LX1BST0xPR19TOgpAQCAtNDU3LDkgKzQ4Niw5IEBACiBzdGF0aWMgaW50IFBUUkNBTEwKIGVudGl0eTEoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgaW50IHRvaywKLSAgICAgICAgY29uc3QgY2hhciAqcHRyLAotICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKHB0ciksCisgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC01MDIsOSArNTMxLDkgQEAKIHN0YXRpYyBpbnQgUFRSQ0FMTAogZW50aXR5MyhQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICBpbnQgdG9rLAotICAgICAgICBjb25zdCBjaGFyICpwdHIsCi0gICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AocHRyKSwKKyAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTUxOSw5ICs1NDgsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBlbnRpdHk0KFBST0xPR19TVEFURSAqc3RhdGUsCiAgICAgICAgIGludCB0b2ssCi0gICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgICBjb25zdCBFTkNPRElORyAqZW5jKQorICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChlbmQpLAorICAgICAgICBjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSkKIHsKICAgc3dpdGNoICh0b2spIHsKICAgY2FzZSBYTUxfVE9LX1BST0xPR19TOgpAQCAtNTU5LDkgKzU4OCw5IEBACiBzdGF0aWMgaW50IFBUUkNBTEwKIGVudGl0eTYoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgaW50IHRvaywKLSAgICAgICAgY29uc3QgY2hhciAqcHRyLAotICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKHB0ciksCisgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC02MDUsOSArNjM0LDkgQEAKIHN0YXRpYyBpbnQgUFRSQ0FMTAogZW50aXR5OChQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICBpbnQgdG9rLAotICAgICAgICBjb25zdCBjaGFyICpwdHIsCi0gICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AocHRyKSwKKyAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTYyMiw5ICs2NTEsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBlbnRpdHk5KFBST0xPR19TVEFURSAqc3RhdGUsCiAgICAgICAgIGludCB0b2ssCi0gICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgICBjb25zdCBFTkNPRElORyAqZW5jKQorICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChlbmQpLAorICAgICAgICBjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSkKIHsKICAgc3dpdGNoICh0b2spIHsKICAgY2FzZSBYTUxfVE9LX1BST0xPR19TOgpAQCAtNjM5LDkgKzY2OCw5IEBACiBzdGF0aWMgaW50IFBUUkNBTEwKIGVudGl0eTEwKFBST0xPR19TVEFURSAqc3RhdGUsCiAgICAgICAgICBpbnQgdG9rLAotICAgICAgICAgY29uc3QgY2hhciAqcHRyLAotICAgICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKHB0ciksCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChlbmQpLAorICAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTY1Niw5ICs2ODUsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBub3RhdGlvbjAoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgICBpbnQgdG9rLAotICAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTY5Nyw5ICs3MjYsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBub3RhdGlvbjIoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgICBpbnQgdG9rLAotICAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTcxNCw5ICs3NDMsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBub3RhdGlvbjMoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgICBpbnQgdG9rLAotICAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTczMiw5ICs3NjEsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBub3RhdGlvbjQoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgICBpbnQgdG9rLAotICAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTc1Myw5ICs3ODIsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBhdHRsaXN0MChQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgaW50IHRvaywKLSAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC03NzEsOSArODAwLDkgQEAKIHN0YXRpYyBpbnQgUFRSQ0FMTAogYXR0bGlzdDEoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgIGludCB0b2ssCi0gICAgICAgICBjb25zdCBjaGFyICpwdHIsCi0gICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgICBjb25zdCBFTkNPRElORyAqZW5jKQorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AocHRyKSwKKyAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICBjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSkKIHsKICAgc3dpdGNoICh0b2spIHsKICAgY2FzZSBYTUxfVE9LX1BST0xPR19TOgpAQCAtODMzLDkgKzg2Miw5IEBACiBzdGF0aWMgaW50IFBUUkNBTEwKIGF0dGxpc3QzKFBST0xPR19TVEFURSAqc3RhdGUsCiAgICAgICAgICBpbnQgdG9rLAotICAgICAgICAgY29uc3QgY2hhciAqcHRyLAotICAgICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKHB0ciksCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChlbmQpLAorICAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTg1Miw5ICs4ODEsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBhdHRsaXN0NChQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgaW50IHRvaywKLSAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC04NzIsOSArOTAxLDkgQEAKIHN0YXRpYyBpbnQgUFRSQ0FMTAogYXR0bGlzdDUoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgIGludCB0b2ssCi0gICAgICAgICBjb25zdCBjaGFyICpwdHIsCi0gICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgICBjb25zdCBFTkNPRElORyAqZW5jKQorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AocHRyKSwKKyAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICBjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSkKIHsKICAgc3dpdGNoICh0b2spIHsKICAgY2FzZSBYTUxfVE9LX1BST0xPR19TOgpAQCAtODg5LDkgKzkxOCw5IEBACiBzdGF0aWMgaW50IFBUUkNBTEwKIGF0dGxpc3Q2KFBST0xPR19TVEFURSAqc3RhdGUsCiAgICAgICAgICBpbnQgdG9rLAotICAgICAgICAgY29uc3QgY2hhciAqcHRyLAotICAgICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKHB0ciksCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChlbmQpLAorICAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTkwNiw5ICs5MzUsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBhdHRsaXN0NyhQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgaW50IHRvaywKLSAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC05NjcsOSArOTk2LDkgQEAKIHN0YXRpYyBpbnQgUFRSQ0FMTAogYXR0bGlzdDkoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgIGludCB0b2ssCi0gICAgICAgICBjb25zdCBjaGFyICpwdHIsCi0gICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgICBjb25zdCBFTkNPRElORyAqZW5jKQorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AocHRyKSwKKyAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICBjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSkKIHsKICAgc3dpdGNoICh0b2spIHsKICAgY2FzZSBYTUxfVE9LX1BST0xPR19TOgpAQCAtOTg0LDkgKzEwMTMsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBlbGVtZW50MChQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgaW50IHRvaywKLSAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC0xMDcyLDkgKzExMDEsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBlbGVtZW50MyhQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgaW50IHRvaywKLSAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC0xMDk3LDkgKzExMjYsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBlbGVtZW50NChQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgaW50IHRvaywKLSAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC0xMTE1LDkgKzExNDQsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBlbGVtZW50NShQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgaW50IHRvaywKLSAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC0xMTM2LDkgKzExNjUsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBlbGVtZW50NihQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgaW50IHRvaywKLSAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC0xMTY2LDkgKzExOTUsOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBlbGVtZW50NyhQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgaW50IHRvaywKLSAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC0xMjQwLDkgKzEyNjksOSBAQAogc3RhdGljIGludCBQVFJDQUxMCiBjb25kU2VjdDEoUFJPTE9HX1NUQVRFICpzdGF0ZSwKICAgICAgICAgICBpbnQgdG9rLAotICAgICAgICAgIGNvbnN0IGNoYXIgKnB0ciwKLSAgICAgICAgICBjb25zdCBjaGFyICplbmQsCi0gICAgICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKKyAgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKGVuZCksCisgICAgICAgICAgY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYykpCiB7CiAgIHN3aXRjaCAodG9rKSB7CiAgIGNhc2UgWE1MX1RPS19QUk9MT0dfUzoKQEAgLTEyNTgsOSArMTI4Nyw5IEBACiBzdGF0aWMgaW50IFBUUkNBTEwKIGNvbmRTZWN0MihQUk9MT0dfU1RBVEUgKnN0YXRlLAogICAgICAgICAgIGludCB0b2ssCi0gICAgICAgICAgY29uc3QgY2hhciAqcHRyLAotICAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwKLSAgICAgICAgICBjb25zdCBFTkNPRElORyAqZW5jKQorICAgICAgICAgIGNvbnN0IGNoYXIgKlVOVVNFRF9QKHB0ciksCisgICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgICAgICBjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSkKIHsKICAgc3dpdGNoICh0b2spIHsKICAgY2FzZSBYTUxfVE9LX1BST0xPR19TOgpAQCAtMTI3Nyw5ICsxMzA2LDkgQEAKIHN0YXRpYyBpbnQgUFRSQ0FMTAogZGVjbENsb3NlKFBST0xPR19TVEFURSAqc3RhdGUsCiAgICAgICAgICAgaW50IHRvaywKLSAgICAgICAgICBjb25zdCBjaGFyICpwdHIsCi0gICAgICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgICAgIGNvbnN0IEVOQ09ESU5HICplbmMpCisgICAgICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AocHRyKSwKKyAgICAgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChlbmQpLAorICAgICAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICBzd2l0Y2ggKHRvaykgewogICBjYXNlIFhNTF9UT0tfUFJPTE9HX1M6CkBAIC0xMjkxLDE1ICsxMzIwLDM2IEBACiAgIHJldHVybiBjb21tb24oc3RhdGUsIHRvayk7CiB9CiAKKy8qIFRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IGJlIGludm9rZWQgaWYgdGhlIGludGVybmFsIGxvZ2ljIG9mIHRoZQorICogcGFyc2VyIGhhcyBicm9rZW4gZG93bi4gIEl0IGlzIHVzZWQgaW4gdHdvIGNhc2VzOgorICoKKyAqIDE6IFdoZW4gdGhlIFhNTCBwcm9sb2cgaGFzIGJlZW4gZmluaXNoZWQuICBBdCB0aGlzIHBvaW50IHRoZQorICogcHJvY2Vzc29yICh0aGUgcGFyc2VyIGxldmVsIGFib3ZlIHRoZXNlIHJvbGUgaGFuZGxlcnMpIHNob3VsZAorICogc3dpdGNoIGZyb20gcHJvbG9nUHJvY2Vzc29yIHRvIGNvbnRlbnRQcm9jZXNzb3IgYW5kIHJlaW5pdGlhbGlzZQorICogdGhlIGhhbmRsZXIgZnVuY3Rpb24uCisgKgorICogMjogV2hlbiBhbiBlcnJvciBoYXMgYmVlbiBkZXRlY3RlZCAodmlhIGNvbW1vbigpIGJlbG93KS4gIEF0IHRoaXMKKyAqIHBvaW50IGFnYWluIHRoZSBwcm9jZXNzb3Igc2hvdWxkIGJlIHN3aXRjaGVkIHRvIGVycm9yUHJvY2Vzc29yLAorICogd2hpY2ggd2lsbCBuZXZlciBjYWxsIGEgaGFuZGxlci4KKyAqCisgKiBUaGUgcmVzdWx0IG9mIHRoaXMgaXMgdGhhdCBlcnJvcigpIGNhbiBvbmx5IGJlIGNhbGxlZCBpZiB0aGUKKyAqIHByb2Nlc3NvciBzd2l0Y2ggZmFpbGVkIHRvIGhhcHBlbiwgd2hpY2ggaXMgYW4gaW50ZXJuYWwgZXJyb3IgYW5kCisgKiB0aGVyZWZvcmUgd2Ugc2hvdWxkbid0IGJlIGFibGUgdG8gcHJvdm9rZSBpdCBzaW1wbHkgYnkgdXNpbmcgdGhlCisgKiBsaWJyYXJ5LiAgSXQgaXMgYSBuZWNlc3NhcnkgYmFja3N0b3AsIGhvd2V2ZXIsIHNvIHdlIG1lcmVseSBleGNsdWRlCisgKiBpdCBmcm9tIHRoZSBjb3ZlcmFnZSBzdGF0aXN0aWNzLgorICoKKyAqIExDT1ZfRVhDTF9TVEFSVAorICovCiBzdGF0aWMgaW50IFBUUkNBTEwKLWVycm9yKFBST0xPR19TVEFURSAqc3RhdGUsCi0gICAgICBpbnQgdG9rLAotICAgICAgY29uc3QgY2hhciAqcHRyLAotICAgICAgY29uc3QgY2hhciAqZW5kLAotICAgICAgY29uc3QgRU5DT0RJTkcgKmVuYykKK2Vycm9yKFBST0xPR19TVEFURSAqVU5VU0VEX1Aoc3RhdGUpLAorICAgICAgaW50IFVOVVNFRF9QKHRvayksCisgICAgICBjb25zdCBjaGFyICpVTlVTRURfUChwdHIpLAorICAgICAgY29uc3QgY2hhciAqVU5VU0VEX1AoZW5kKSwKKyAgICAgIGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpKQogewogICByZXR1cm4gWE1MX1JPTEVfTk9ORTsKIH0KKy8qIExDT1ZfRVhDTF9TVE9QICovCiAKIHN0YXRpYyBpbnQgRkFTVENBTEwKIGNvbW1vbihQUk9MT0dfU1RBVEUgKnN0YXRlLCBpbnQgdG9rKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC94bWxyb2xlLmggYi9Nb2R1bGVzL2V4cGF0L3htbHJvbGUuaAppbmRleCA0ZGQ5ZjA2Li5lNWYwNDhlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHJvbGUuaAorKysgYi9Nb2R1bGVzL2V4cGF0L3htbHJvbGUuaApAQCAtMSw1ICsxLDMzIEBACi0vKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTkgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCi0gICBTZWUgdGhlIGZpbGUgQ09QWUlORyBmb3IgY29weWluZyBwZXJtaXNzaW9uLgorLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXyAgX18gICAgICAgICAgICBfCisgICAgICAgICAgICAgICAgICAgICAgICAgX19fXCBcLyAvXyBfXyAgIF9fIF98IHxfCisgICAgICAgICAgICAgICAgICAgICAgICAvIF8gXFwgIC98ICdfIFwgLyBfYCB8IF9ffAorICAgICAgICAgICAgICAgICAgICAgICB8ICBfXy8vICBcfCB8XykgfCAoX3wgfCB8XworICAgICAgICAgICAgICAgICAgICAgICAgXF9fXy9fL1xfXCAuX18vIFxfXyxffFxfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxffCBYTUwgcGFyc2VyCisKKyAgIENvcHlyaWdodCAoYykgMTk5Ny0yMDAwIFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAorICAgQ29weXJpZ2h0IChjKSAyMDAwLTIwMTcgRXhwYXQgZGV2ZWxvcG1lbnQgdGVhbQorICAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgorCisgICBQZXJtaXNzaW9uIGlzICBoZXJlYnkgZ3JhbnRlZCwgIGZyZWUgb2YgY2hhcmdlLCAgdG8gYW55ICBwZXJzb24gb2J0YWluaW5nCisgICBhICBjb3B5ICBvZiAgdGhpcyAgc29mdHdhcmUgICBhbmQgIGFzc29jaWF0ZWQgIGRvY3VtZW50YXRpb24gIGZpbGVzICAodGhlCisgICAiU29mdHdhcmUiKSwgIHRvICBkZWFsIGluICB0aGUgIFNvZnR3YXJlICB3aXRob3V0IHJlc3RyaWN0aW9uLCAgaW5jbHVkaW5nCisgICB3aXRob3V0ICBsaW1pdGF0aW9uIHRoZSAgcmlnaHRzICB0byB1c2UsICBjb3B5LCAgbW9kaWZ5LCBtZXJnZSwgIHB1Ymxpc2gsCisgICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0CisgICBwZXJzb25zICB0byB3aG9tICB0aGUgU29mdHdhcmUgIGlzICBmdXJuaXNoZWQgdG8gIGRvIHNvLCAgc3ViamVjdCB0byAgdGhlCisgICBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgVGhlIGFib3ZlIGNvcHlyaWdodCAgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlICBzaGFsbCBiZSBpbmNsdWRlZAorICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgIFRIRSAgU09GVFdBUkUgIElTICBQUk9WSURFRCAgIkFTICBJUyIsICBXSVRIT1VUICBXQVJSQU5UWSAgT0YgIEFOWSAgS0lORCwKKyAgIEVYUFJFU1MgIE9SIElNUExJRUQsICBJTkNMVURJTkcgIEJVVCAgTk9UIExJTUlURUQgIFRPICBUSEUgV0FSUkFOVElFUyAgT0YKKyAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KKyAgIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SICBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKKyAgIERBTUFHRVMgT1IgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiAgSU4gQU4gIEFDVElPTiBPRiBDT05UUkFDVCwgIFRPUlQgT1IKKyAgIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKKyAgIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqLwogCiAjaWZuZGVmIFhtbFJvbGVfSU5DTFVERUQKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQveG1sdG9rLmMgYi9Nb2R1bGVzL2V4cGF0L3htbHRvay5jCmluZGV4IGJmMDlkZmMuLjZiNDE1ZDggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQveG1sdG9rLmMKKysrIGIvTW9kdWxlcy9leHBhdC94bWx0b2suYwpAQCAtMSwyMiArMSw1NSBAQAotLyogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAotICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KKy8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18gIF9fICAgICAgICAgICAgXworICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1wgXC8gL18gX18gICBfXyBffCB8XworICAgICAgICAgICAgICAgICAgICAgICAgLyBfIFxcICAvfCAnXyBcIC8gX2AgfCBfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgX18vLyAgXHwgfF8pIHwgKF98IHwgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIFxfX18vXy9cX1wgLl9fLyBcX18sX3xcX198CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X3wgWE1MIHBhcnNlcgorCisgICBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMCBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKKyAgIENvcHlyaWdodCAoYykgMjAwMC0yMDE3IEV4cGF0IGRldmVsb3BtZW50IHRlYW0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKKworICAgUGVybWlzc2lvbiBpcyAgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSAgcGVyc29uIG9idGFpbmluZworICAgYSAgY29weSAgb2YgIHRoaXMgIHNvZnR3YXJlICAgYW5kICBhc3NvY2lhdGVkICBkb2N1bWVudGF0aW9uICBmaWxlcyAgKHRoZQorICAgIlNvZnR3YXJlIiksICB0byAgZGVhbCBpbiAgdGhlICBTb2Z0d2FyZSAgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZworICAgd2l0aG91dCAgbGltaXRhdGlvbiB0aGUgIHJpZ2h0cyAgdG8gdXNlLCAgY29weSwgIG1vZGlmeSwgbWVyZ2UsICBwdWJsaXNoLAorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorICAgcGVyc29ucyAgdG8gd2hvbSAgdGhlIFNvZnR3YXJlICBpcyAgZnVybmlzaGVkIHRvICBkbyBzbywgIHN1YmplY3QgdG8gIHRoZQorICAgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgIG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAgc2hhbGwgYmUgaW5jbHVkZWQKKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICBUSEUgIFNPRlRXQVJFICBJUyAgUFJPVklERUQgICJBUyAgSVMiLCAgV0lUSE9VVCAgV0FSUkFOVFkgIE9GICBBTlkgIEtJTkQsCisgICBFWFBSRVNTICBPUiBJTVBMSUVELCAgSU5DTFVESU5HICBCVVQgIE5PVCBMSU1JVEVEICBUTyAgVEhFIFdBUlJBTlRJRVMgIE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOCisgICBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiAgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgICBEQU1BR0VTIE9SICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgIElOIEFOICBBQ1RJT04gT0YgQ09OVFJBQ1QsICBUT1JUIE9SCisgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCisgICBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKi8KIAogI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPiAgLyogbWVtY3B5ICovCiAKLSNpZmRlZiBDT01QSUxFRF9GUk9NX0RTUAorI2lmIGRlZmluZWQoX01TQ19WRVIpICYmIChfTVNDX1ZFUiA8PSAxNzAwKQorICAvKiBmb3IgdnMyMDEyLzExLjAvMTcwMCBhbmQgZWFybGllciBWaXN1YWwgU3R1ZGlvIGNvbXBpbGVycyAqLworIyBkZWZpbmUgYm9vbCAgIGludAorIyBkZWZpbmUgZmFsc2UgIDAKKyMgZGVmaW5lIHRydWUgICAxCisjZWxzZQorIyBpbmNsdWRlIDxzdGRib29sLmg+CisjZW5kaWYKKworCisjaWZkZWYgX1dJTjMyCiAjaW5jbHVkZSAid2luY29uZmlnLmgiCi0jZWxpZiBkZWZpbmVkKE1BQ09TX0NMQVNTSUMpCi0jaW5jbHVkZSAibWFjY29uZmlnLmgiCi0jZWxpZiBkZWZpbmVkKF9fYW1pZ2Fvc19fKQotI2luY2x1ZGUgImFtaWdhY29uZmlnLmgiCi0jZWxpZiBkZWZpbmVkKF9fV0FUQ09NQ19fKQotI2luY2x1ZGUgIndhdGNvbWNvbmZpZy5oIgogI2Vsc2UKICNpZmRlZiBIQVZFX0VYUEFUX0NPTkZJR19ICiAjaW5jbHVkZSA8ZXhwYXRfY29uZmlnLmg+CiAjZW5kaWYKLSNlbmRpZiAvKiBuZGVmIENPTVBJTEVEX0ZST01fRFNQICovCisjZW5kaWYgLyogbmRlZiBfV0lOMzIgKi8KIAogI2luY2x1ZGUgImV4cGF0X2V4dGVybmFsLmgiCiAjaW5jbHVkZSAiaW50ZXJuYWwuaCIKQEAgLTMzLDcgKzY2LDYgQEAKICAgeyBQUkVGSVgocHJvbG9nVG9rKSwgUFJFRklYKGNvbnRlbnRUb2spLCBcCiAgICAgUFJFRklYKGNkYXRhU2VjdGlvblRvaykgSUdOT1JFX1NFQ1RJT05fVE9LX1ZUQUJMRSB9LCBcCiAgIHsgUFJFRklYKGF0dHJpYnV0ZVZhbHVlVG9rKSwgUFJFRklYKGVudGl0eVZhbHVlVG9rKSB9LCBcCi0gIFBSRUZJWChzYW1lTmFtZSksIFwKICAgUFJFRklYKG5hbWVNYXRjaGVzQXNjaWkpLCBcCiAgIFBSRUZJWChuYW1lTGVuZ3RoKSwgXAogICBQUkVGSVgoc2tpcFMpLCBcCkBAIC00Niw3ICs3OCw3IEBACiAjZGVmaW5lIFZUQUJMRSBWVEFCTEUxLCBQUkVGSVgodG9VdGY4KSwgUFJFRklYKHRvVXRmMTYpCiAKICNkZWZpbmUgVUNTMl9HRVRfTkFNSU5HKHBhZ2VzLCBoaSwgbG8pIFwKLSAgIChuYW1pbmdCaXRtYXBbKHBhZ2VzW2hpXSA8PCAzKSArICgobG8pID4+IDUpXSAmICgxIDw8ICgobG8pICYgMHgxRikpKQorICAgKG5hbWluZ0JpdG1hcFsocGFnZXNbaGldIDw8IDMpICsgKChsbykgPj4gNSldICYgKDF1IDw8ICgobG8pICYgMHgxRikpKQogCiAvKiBBIDIgYnl0ZSBVVEYtOCByZXByZXNlbnRhdGlvbiBzcGxpdHMgdGhlIGNoYXJhY3RlcnMgMTEgYml0cyBiZXR3ZWVuCiAgICB0aGUgYm90dG9tIDUgYW5kIDYgYml0cyBvZiB0aGUgYnl0ZXMuICBXZSBuZWVkIDggYml0cyB0byBpbmRleCBpbnRvCkBAIC01Niw3ICs4OCw3IEBACiAgICAgKG5hbWluZ0JpdG1hcFsoKHBhZ2VzKVsoKChieXRlKVswXSkgPj4gMikgJiA3XSA8PCAzKSBcCiAgICAgICAgICAgICAgICAgICAgICAgKyAoKCgoYnl0ZSlbMF0pICYgMykgPDwgMSkgXAogICAgICAgICAgICAgICAgICAgICAgICsgKCgoKGJ5dGUpWzFdKSA+PiA1KSAmIDEpXSBcCi0gICAgICAgICAmICgxIDw8ICgoKGJ5dGUpWzFdKSAmIDB4MUYpKSkKKyAgICAgICAgICYgKDF1IDw8ICgoKGJ5dGUpWzFdKSAmIDB4MUYpKSkKIAogLyogQSAzIGJ5dGUgVVRGLTggcmVwcmVzZW50YXRpb24gc3BsaXRzIHRoZSBjaGFyYWN0ZXJzIDE2IGJpdHMgYmV0d2VlbgogICAgdGhlIGJvdHRvbSA0LCA2IGFuZCA2IGJpdHMgb2YgdGhlIGJ5dGVzLiAgV2UgbmVlZCA4IGJpdHMgdG8gaW5kZXgKQEAgLTY5LDcgKzEwMSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIDw8IDMpIFwKICAgICAgICAgICAgICAgICAgICAgICArICgoKChieXRlKVsxXSkgJiAzKSA8PCAxKSBcCiAgICAgICAgICAgICAgICAgICAgICAgKyAoKCgoYnl0ZSlbMl0pID4+IDUpICYgMSldIFwKLSAgICAgICAgICYgKDEgPDwgKCgoYnl0ZSlbMl0pICYgMHgxRikpKQorICAgICAgICAgJiAoMXUgPDwgKCgoYnl0ZSlbMl0pICYgMHgxRikpKQogCiAjZGVmaW5lIFVURjhfR0VUX05BTUlORyhwYWdlcywgcCwgbikgXAogICAoKG4pID09IDIgXApAQCAtMTIyLDE5ICsxNTQsMTkgQEAKICAgICAoKCpwKSA9PSAweEY0ID8gKHApWzFdID4gMHg4RiA6ICgocClbMV0gJiAweEMwKSA9PSAweEMwKSkpCiAKIHN0YXRpYyBpbnQgUFRSRkFTVENBTEwKLWlzTmV2ZXIoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcCkKK2lzTmV2ZXIoY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYyksIGNvbnN0IGNoYXIgKlVOVVNFRF9QKHApKQogewogICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGludCBQVFJGQVNUQ0FMTAotdXRmOF9pc05hbWUyKGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnApCit1dGY4X2lzTmFtZTIoY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYyksIGNvbnN0IGNoYXIgKnApCiB7CiAgIHJldHVybiBVVEY4X0dFVF9OQU1JTkcyKG5hbWVQYWdlcywgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwKTsKIH0KIAogc3RhdGljIGludCBQVFJGQVNUQ0FMTAotdXRmOF9pc05hbWUzKGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnApCit1dGY4X2lzTmFtZTMoY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYyksIGNvbnN0IGNoYXIgKnApCiB7CiAgIHJldHVybiBVVEY4X0dFVF9OQU1JTkczKG5hbWVQYWdlcywgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwKTsKIH0KQEAgLTE0MiwxMyArMTc0LDEzIEBACiAjZGVmaW5lIHV0ZjhfaXNOYW1lNCBpc05ldmVyCiAKIHN0YXRpYyBpbnQgUFRSRkFTVENBTEwKLXV0ZjhfaXNObXN0cnQyKGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnApCit1dGY4X2lzTm1zdHJ0Mihjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSwgY29uc3QgY2hhciAqcCkKIHsKICAgcmV0dXJuIFVURjhfR0VUX05BTUlORzIobm1zdHJ0UGFnZXMsIChjb25zdCB1bnNpZ25lZCBjaGFyICopcCk7CiB9CiAKIHN0YXRpYyBpbnQgUFRSRkFTVENBTEwKLXV0ZjhfaXNObXN0cnQzKGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnApCit1dGY4X2lzTm1zdHJ0Myhjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSwgY29uc3QgY2hhciAqcCkKIHsKICAgcmV0dXJuIFVURjhfR0VUX05BTUlORzMobm1zdHJ0UGFnZXMsIChjb25zdCB1bnNpZ25lZCBjaGFyICopcCk7CiB9CkBAIC0xNTYsMTkgKzE4OCwxOSBAQAogI2RlZmluZSB1dGY4X2lzTm1zdHJ0NCBpc05ldmVyCiAKIHN0YXRpYyBpbnQgUFRSRkFTVENBTEwKLXV0ZjhfaXNJbnZhbGlkMihjb25zdCBFTkNPRElORyAqZW5jLCBjb25zdCBjaGFyICpwKQordXRmOF9pc0ludmFsaWQyKGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpLCBjb25zdCBjaGFyICpwKQogewogICByZXR1cm4gVVRGOF9JTlZBTElEMigoY29uc3QgdW5zaWduZWQgY2hhciAqKXApOwogfQogCiBzdGF0aWMgaW50IFBUUkZBU1RDQUxMCi11dGY4X2lzSW52YWxpZDMoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcCkKK3V0ZjhfaXNJbnZhbGlkMyhjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSwgY29uc3QgY2hhciAqcCkKIHsKICAgcmV0dXJuIFVURjhfSU5WQUxJRDMoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilwKTsKIH0KIAogc3RhdGljIGludCBQVFJGQVNUQ0FMTAotdXRmOF9pc0ludmFsaWQ0KGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnApCit1dGY4X2lzSW52YWxpZDQoY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYyksIGNvbnN0IGNoYXIgKnApCiB7CiAgIHJldHVybiBVVEY4X0lOVkFMSUQ0KChjb25zdCB1bnNpZ25lZCBjaGFyICopcCk7CiB9CkBAIC0yMjIsNiArMjU0LDE3IEBACiAgRSAjIyBpc0ludmFsaWQzLCBcCiAgRSAjIyBpc0ludmFsaWQ0CiAKKyNkZWZpbmUgTlVMTF9WVEFCTEUgXAorIC8qIGlzTmFtZTIgKi8gTlVMTCwgXAorIC8qIGlzTmFtZTMgKi8gTlVMTCwgXAorIC8qIGlzTmFtZTQgKi8gTlVMTCwgXAorIC8qIGlzTm1zdHJ0MiAqLyBOVUxMLCBcCisgLyogaXNObXN0cnQzICovIE5VTEwsIFwKKyAvKiBpc05tc3RydDQgKi8gTlVMTCwgXAorIC8qIGlzSW52YWxpZDIgKi8gTlVMTCwgXAorIC8qIGlzSW52YWxpZDMgKi8gTlVMTCwgXAorIC8qIGlzSW52YWxpZDQgKi8gTlVMTAorCiBzdGF0aWMgaW50IEZBU1RDQUxMIGNoZWNrQ2hhclJlZk51bWJlcihpbnQpOwogCiAjaW5jbHVkZSAieG1sdG9rX2ltcGwuaCIKQEAgLTMxOCwzOSArMzYxLDEwNCBAQAogICBVVEY4X2N2YWw0ID0gMHhmMAogfTsKIAotc3RhdGljIHZvaWQgUFRSQ0FMTAotdXRmOF90b1V0ZjgoY29uc3QgRU5DT0RJTkcgKmVuYywKK3ZvaWQKK19JTlRFUk5BTF90cmltX3RvX2NvbXBsZXRlX3V0ZjhfY2hhcmFjdGVycyhjb25zdCBjaGFyICogZnJvbSwgY29uc3QgY2hhciAqKiBmcm9tTGltUmVmKQoreworICBjb25zdCBjaGFyICogZnJvbUxpbSA9ICpmcm9tTGltUmVmOworICBzaXplX3Qgd2Fsa2VkID0gMDsKKyAgZm9yICg7IGZyb21MaW0gPiBmcm9tOyBmcm9tTGltLS0sIHdhbGtlZCsrKSB7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciBwcmV2ID0gKHVuc2lnbmVkIGNoYXIpZnJvbUxpbVstMV07CisgICAgaWYgKChwcmV2ICYgMHhmOHUpID09IDB4ZjB1KSB7IC8qIDQtYnl0ZSBjaGFyYWN0ZXIsIGxlYWQgYnkgMGIxMTExMHh4eCBieXRlICovCisgICAgICBpZiAod2Fsa2VkICsgMSA+PSA0KSB7CisgICAgICAgIGZyb21MaW0gKz0gNCAtIDE7CisgICAgICAgIGJyZWFrOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgd2Fsa2VkID0gMDsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKChwcmV2ICYgMHhmMHUpID09IDB4ZTB1KSB7IC8qIDMtYnl0ZSBjaGFyYWN0ZXIsIGxlYWQgYnkgMGIxMTEweHh4eCBieXRlICovCisgICAgICBpZiAod2Fsa2VkICsgMSA+PSAzKSB7CisgICAgICAgIGZyb21MaW0gKz0gMyAtIDE7CisgICAgICAgIGJyZWFrOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgd2Fsa2VkID0gMDsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKChwcmV2ICYgMHhlMHUpID09IDB4YzB1KSB7IC8qIDItYnl0ZSBjaGFyYWN0ZXIsIGxlYWQgYnkgMGIxMTB4eHh4eCBieXRlICovCisgICAgICBpZiAod2Fsa2VkICsgMSA+PSAyKSB7CisgICAgICAgIGZyb21MaW0gKz0gMiAtIDE7CisgICAgICAgIGJyZWFrOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgd2Fsa2VkID0gMDsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKChwcmV2ICYgMHg4MHUpID09IDB4MDB1KSB7IC8qIDEtYnl0ZSBjaGFyYWN0ZXIsIG1hdGNoaW5nIDBiMHh4eHh4eHggKi8KKyAgICAgIGJyZWFrOworICAgIH0KKyAgfQorICAqZnJvbUxpbVJlZiA9IGZyb21MaW07Cit9CisKK3N0YXRpYyBlbnVtIFhNTF9Db252ZXJ0X1Jlc3VsdCBQVFJDQUxMCit1dGY4X3RvVXRmOChjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSwKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipmcm9tUCwgY29uc3QgY2hhciAqZnJvbUxpbSwKICAgICAgICAgICAgIGNoYXIgKip0b1AsIGNvbnN0IGNoYXIgKnRvTGltKQogewotICBjaGFyICp0bzsKLSAgY29uc3QgY2hhciAqZnJvbTsKLSAgaWYgKGZyb21MaW0gLSAqZnJvbVAgPiB0b0xpbSAtICp0b1ApIHsKLSAgICAvKiBBdm9pZCBjb3B5aW5nIHBhcnRpYWwgY2hhcmFjdGVycy4gKi8KLSAgICBmb3IgKGZyb21MaW0gPSAqZnJvbVAgKyAodG9MaW0gLSAqdG9QKTsgZnJvbUxpbSA+ICpmcm9tUDsgZnJvbUxpbS0tKQotICAgICAgaWYgKCgodW5zaWduZWQgY2hhcilmcm9tTGltWy0xXSAmIDB4YzApICE9IDB4ODApCi0gICAgICAgIGJyZWFrOworICBib29sIGlucHV0X2luY29tcGxldGUgPSBmYWxzZTsKKyAgYm9vbCBvdXRwdXRfZXhoYXVzdGVkID0gZmFsc2U7CisKKyAgLyogQXZvaWQgY29weWluZyBwYXJ0aWFsIGNoYXJhY3RlcnMgKGR1ZSB0byBsaW1pdGVkIHNwYWNlKS4gKi8KKyAgY29uc3QgcHRyZGlmZl90IGJ5dGVzQXZhaWxhYmxlID0gZnJvbUxpbSAtICpmcm9tUDsKKyAgY29uc3QgcHRyZGlmZl90IGJ5dGVzU3RvcmFibGUgPSB0b0xpbSAtICp0b1A7CisgIGlmIChieXRlc0F2YWlsYWJsZSA+IGJ5dGVzU3RvcmFibGUpIHsKKyAgICBmcm9tTGltID0gKmZyb21QICsgYnl0ZXNTdG9yYWJsZTsKKyAgICBvdXRwdXRfZXhoYXVzdGVkID0gdHJ1ZTsKICAgfQotICBmb3IgKHRvID0gKnRvUCwgZnJvbSA9ICpmcm9tUDsgZnJvbSAhPSBmcm9tTGltOyBmcm9tKyssIHRvKyspCi0gICAgKnRvID0gKmZyb207Ci0gICpmcm9tUCA9IGZyb207Ci0gICp0b1AgPSB0bzsKKworICAvKiBBdm9pZCBjb3B5aW5nIHBhcnRpYWwgY2hhcmFjdGVycyAoZnJvbSBpbmNvbXBsZXRlIGlucHV0KS4gKi8KKyAgeworICAgIGNvbnN0IGNoYXIgKiBjb25zdCBmcm9tTGltQmVmb3JlID0gZnJvbUxpbTsKKyAgICBfSU5URVJOQUxfdHJpbV90b19jb21wbGV0ZV91dGY4X2NoYXJhY3RlcnMoKmZyb21QLCAmZnJvbUxpbSk7CisgICAgaWYgKGZyb21MaW0gPCBmcm9tTGltQmVmb3JlKSB7CisgICAgICBpbnB1dF9pbmNvbXBsZXRlID0gdHJ1ZTsKKyAgICB9CisgIH0KKworICB7CisgICAgY29uc3QgcHRyZGlmZl90IGJ5dGVzVG9Db3B5ID0gZnJvbUxpbSAtICpmcm9tUDsKKyAgICBtZW1jcHkoKnRvUCwgKmZyb21QLCBieXRlc1RvQ29weSk7CisgICAgKmZyb21QICs9IGJ5dGVzVG9Db3B5OworICAgICp0b1AgKz0gYnl0ZXNUb0NvcHk7CisgIH0KKworICBpZiAob3V0cHV0X2V4aGF1c3RlZCkgIC8qIG5lZWRzIHRvIGdvIGZpcnN0ICovCisgICAgcmV0dXJuIFhNTF9DT05WRVJUX09VVFBVVF9FWEhBVVNURUQ7CisgIGVsc2UgaWYgKGlucHV0X2luY29tcGxldGUpCisgICAgcmV0dXJuIFhNTF9DT05WRVJUX0lOUFVUX0lOQ09NUExFVEU7CisgIGVsc2UKKyAgICByZXR1cm4gWE1MX0NPTlZFUlRfQ09NUExFVEVEOwogfQogCi1zdGF0aWMgdm9pZCBQVFJDQUxMCitzdGF0aWMgZW51bSBYTUxfQ29udmVydF9SZXN1bHQgUFRSQ0FMTAogdXRmOF90b1V0ZjE2KGNvbnN0IEVOQ09ESU5HICplbmMsCiAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmZyb21QLCBjb25zdCBjaGFyICpmcm9tTGltLAogICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICoqdG9QLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqdG9MaW0pCiB7CisgIGVudW0gWE1MX0NvbnZlcnRfUmVzdWx0IHJlcyA9IFhNTF9DT05WRVJUX0NPTVBMRVRFRDsKICAgdW5zaWduZWQgc2hvcnQgKnRvID0gKnRvUDsKICAgY29uc3QgY2hhciAqZnJvbSA9ICpmcm9tUDsKLSAgd2hpbGUgKGZyb20gIT0gZnJvbUxpbSAmJiB0byAhPSB0b0xpbSkgeworICB3aGlsZSAoZnJvbSA8IGZyb21MaW0gJiYgdG8gPCB0b0xpbSkgewogICAgIHN3aXRjaCAoKChzdHJ1Y3Qgbm9ybWFsX2VuY29kaW5nICopZW5jKS0+dHlwZVsodW5zaWduZWQgY2hhcikqZnJvbV0pIHsKICAgICBjYXNlIEJUX0xFQUQyOgorICAgICAgaWYgKGZyb21MaW0gLSBmcm9tIDwgMikgeworICAgICAgICByZXMgPSBYTUxfQ09OVkVSVF9JTlBVVF9JTkNPTVBMRVRFOworICAgICAgICBnb3RvIGFmdGVyOworICAgICAgfQogICAgICAgKnRvKysgPSAodW5zaWduZWQgc2hvcnQpKCgoZnJvbVswXSAmIDB4MWYpIDw8IDYpIHwgKGZyb21bMV0gJiAweDNmKSk7CiAgICAgICBmcm9tICs9IDI7CiAgICAgICBicmVhazsKICAgICBjYXNlIEJUX0xFQUQzOgorICAgICAgaWYgKGZyb21MaW0gLSBmcm9tIDwgMykgeworICAgICAgICByZXMgPSBYTUxfQ09OVkVSVF9JTlBVVF9JTkNPTVBMRVRFOworICAgICAgICBnb3RvIGFmdGVyOworICAgICAgfQogICAgICAgKnRvKysgPSAodW5zaWduZWQgc2hvcnQpKCgoZnJvbVswXSAmIDB4ZikgPDwgMTIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAoKGZyb21bMV0gJiAweDNmKSA8PCA2KSB8IChmcm9tWzJdICYgMHgzZikpOwogICAgICAgZnJvbSArPSAzOwpAQCAtMzU4LDggKzQ2NiwxNCBAQAogICAgIGNhc2UgQlRfTEVBRDQ6CiAgICAgICB7CiAgICAgICAgIHVuc2lnbmVkIGxvbmcgbjsKLSAgICAgICAgaWYgKHRvICsgMSA9PSB0b0xpbSkKKyAgICAgICAgaWYgKHRvTGltIC0gdG8gPCAyKSB7CisgICAgICAgICAgcmVzID0gWE1MX0NPTlZFUlRfT1VUUFVUX0VYSEFVU1RFRDsKICAgICAgICAgICBnb3RvIGFmdGVyOworICAgICAgICB9CisgICAgICAgIGlmIChmcm9tTGltIC0gZnJvbSA8IDQpIHsKKyAgICAgICAgICByZXMgPSBYTUxfQ09OVkVSVF9JTlBVVF9JTkNPTVBMRVRFOworICAgICAgICAgIGdvdG8gYWZ0ZXI7CisgICAgICAgIH0KICAgICAgICAgbiA9ICgoZnJvbVswXSAmIDB4NykgPDwgMTgpIHwgKChmcm9tWzFdICYgMHgzZikgPDwgMTIpCiAgICAgICAgICAgICB8ICgoZnJvbVsyXSAmIDB4M2YpIDw8IDYpIHwgKGZyb21bM10gJiAweDNmKTsKICAgICAgICAgbiAtPSAweDEwMDAwOwpAQCAtMzc0LDkgKzQ4OCwxMiBAQAogICAgICAgYnJlYWs7CiAgICAgfQogICB9CisgIGlmIChmcm9tIDwgZnJvbUxpbSkKKyAgICByZXMgPSBYTUxfQ09OVkVSVF9PVVRQVVRfRVhIQVVTVEVEOwogYWZ0ZXI6CiAgICpmcm9tUCA9IGZyb207CiAgICp0b1AgPSB0bzsKKyAgcmV0dXJuIHJlczsKIH0KIAogI2lmZGVmIFhNTF9OUwpAQCAtNDI1LDM4ICs1NDIsNDMgQEAKICAgU1RBTkRBUkRfVlRBQkxFKHNiXykgTk9STUFMX1ZUQUJMRSh1dGY4XykKIH07CiAKLXN0YXRpYyB2b2lkIFBUUkNBTEwKLWxhdGluMV90b1V0ZjgoY29uc3QgRU5DT0RJTkcgKmVuYywKK3N0YXRpYyBlbnVtIFhNTF9Db252ZXJ0X1Jlc3VsdCBQVFJDQUxMCitsYXRpbjFfdG9VdGY4KGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpLAogICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZnJvbVAsIGNvbnN0IGNoYXIgKmZyb21MaW0sCiAgICAgICAgICAgICAgIGNoYXIgKip0b1AsIGNvbnN0IGNoYXIgKnRvTGltKQogewogICBmb3IgKDs7KSB7CiAgICAgdW5zaWduZWQgY2hhciBjOwogICAgIGlmICgqZnJvbVAgPT0gZnJvbUxpbSkKLSAgICAgIGJyZWFrOworICAgICAgcmV0dXJuIFhNTF9DT05WRVJUX0NPTVBMRVRFRDsKICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKipmcm9tUDsKICAgICBpZiAoYyAmIDB4ODApIHsKICAgICAgIGlmICh0b0xpbSAtICp0b1AgPCAyKQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFhNTF9DT05WRVJUX09VVFBVVF9FWEhBVVNURUQ7CiAgICAgICAqKCp0b1ApKysgPSAoY2hhcikoKGMgPj4gNikgfCBVVEY4X2N2YWwyKTsKICAgICAgICooKnRvUCkrKyA9IChjaGFyKSgoYyAmIDB4M2YpIHwgMHg4MCk7CiAgICAgICAoKmZyb21QKSsrOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgIGlmICgqdG9QID09IHRvTGltKQotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0dXJuIFhNTF9DT05WRVJUX09VVFBVVF9FWEhBVVNURUQ7CiAgICAgICAqKCp0b1ApKysgPSAqKCpmcm9tUCkrKzsKICAgICB9CiAgIH0KIH0KIAotc3RhdGljIHZvaWQgUFRSQ0FMTAotbGF0aW4xX3RvVXRmMTYoY29uc3QgRU5DT0RJTkcgKmVuYywKK3N0YXRpYyBlbnVtIFhNTF9Db252ZXJ0X1Jlc3VsdCBQVFJDQUxMCitsYXRpbjFfdG9VdGYxNihjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSwKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipmcm9tUCwgY29uc3QgY2hhciAqZnJvbUxpbSwKICAgICAgICAgICAgICAgIHVuc2lnbmVkIHNob3J0ICoqdG9QLCBjb25zdCB1bnNpZ25lZCBzaG9ydCAqdG9MaW0pCiB7Ci0gIHdoaWxlICgqZnJvbVAgIT0gZnJvbUxpbSAmJiAqdG9QICE9IHRvTGltKQorICB3aGlsZSAoKmZyb21QIDwgZnJvbUxpbSAmJiAqdG9QIDwgdG9MaW0pCiAgICAgKigqdG9QKSsrID0gKHVuc2lnbmVkIGNoYXIpKigqZnJvbVApKys7CisKKyAgaWYgKCgqdG9QID09IHRvTGltKSAmJiAoKmZyb21QIDwgZnJvbUxpbSkpCisgICAgcmV0dXJuIFhNTF9DT05WRVJUX09VVFBVVF9FWEhBVVNURUQ7CisgIGVsc2UKKyAgICByZXR1cm4gWE1MX0NPTlZFUlRfQ09NUExFVEVEOwogfQogCiAjaWZkZWYgWE1MX05TCkBAIC00NjcsNyArNTg5LDcgQEAKICNpbmNsdWRlICJhc2NpaXRhYi5oIgogI2luY2x1ZGUgImxhdGluMXRhYi5oIgogICB9LAotICBTVEFOREFSRF9WVEFCTEUoc2JfKQorICBTVEFOREFSRF9WVEFCTEUoc2JfKSBOVUxMX1ZUQUJMRQogfTsKIAogI2VuZGlmCkBAIC00ODAsMTYgKzYwMiwyMSBAQAogI3VuZGVmIEJUX0NPTE9OCiAjaW5jbHVkZSAibGF0aW4xdGFiLmgiCiAgIH0sCi0gIFNUQU5EQVJEX1ZUQUJMRShzYl8pCisgIFNUQU5EQVJEX1ZUQUJMRShzYl8pIE5VTExfVlRBQkxFCiB9OwogCi1zdGF0aWMgdm9pZCBQVFJDQUxMCi1hc2NpaV90b1V0ZjgoY29uc3QgRU5DT0RJTkcgKmVuYywKK3N0YXRpYyBlbnVtIFhNTF9Db252ZXJ0X1Jlc3VsdCBQVFJDQUxMCithc2NpaV90b1V0ZjgoY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYyksCiAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmZyb21QLCBjb25zdCBjaGFyICpmcm9tTGltLAogICAgICAgICAgICAgIGNoYXIgKip0b1AsIGNvbnN0IGNoYXIgKnRvTGltKQogewotICB3aGlsZSAoKmZyb21QICE9IGZyb21MaW0gJiYgKnRvUCAhPSB0b0xpbSkKKyAgd2hpbGUgKCpmcm9tUCA8IGZyb21MaW0gJiYgKnRvUCA8IHRvTGltKQogICAgICooKnRvUCkrKyA9ICooKmZyb21QKSsrOworCisgIGlmICgoKnRvUCA9PSB0b0xpbSkgJiYgKCpmcm9tUCA8IGZyb21MaW0pKQorICAgIHJldHVybiBYTUxfQ09OVkVSVF9PVVRQVVRfRVhIQVVTVEVEOworICBlbHNlCisgICAgcmV0dXJuIFhNTF9DT05WRVJUX0NPTVBMRVRFRDsKIH0KIAogI2lmZGVmIFhNTF9OUwpAQCAtNTAwLDcgKzYyNyw3IEBACiAjaW5jbHVkZSAiYXNjaWl0YWIuaCIKIC8qIEJUX05PTlhNTCA9PSAwICovCiAgIH0sCi0gIFNUQU5EQVJEX1ZUQUJMRShzYl8pCisgIFNUQU5EQVJEX1ZUQUJMRShzYl8pIE5VTExfVlRBQkxFCiB9OwogCiAjZW5kaWYKQEAgLTUxMyw3ICs2NDAsNyBAQAogI3VuZGVmIEJUX0NPTE9OCiAvKiBCVF9OT05YTUwgPT0gMCAqLwogICB9LAotICBTVEFOREFSRF9WVEFCTEUoc2JfKQorICBTVEFOREFSRF9WVEFCTEUoc2JfKSBOVUxMX1ZUQUJMRQogfTsKIAogc3RhdGljIGludCBQVFJGQVNUQ0FMTApAQCAtNTM2LDEzICs2NjMsMTQgQEAKIH0KIAogI2RlZmluZSBERUZJTkVfVVRGMTZfVE9fVVRGOChFKSBcCi1zdGF0aWMgdm9pZCAgUFRSQ0FMTCBcCi1FICMjIHRvVXRmOChjb25zdCBFTkNPRElORyAqZW5jLCBcCitzdGF0aWMgZW51bSBYTUxfQ29udmVydF9SZXN1bHQgIFBUUkNBTEwgXAorRSAjIyB0b1V0ZjgoY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYyksIFwKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipmcm9tUCwgY29uc3QgY2hhciAqZnJvbUxpbSwgXAogICAgICAgICAgICAgY2hhciAqKnRvUCwgY29uc3QgY2hhciAqdG9MaW0pIFwKIHsgXAotICBjb25zdCBjaGFyICpmcm9tOyBcCi0gIGZvciAoZnJvbSA9ICpmcm9tUDsgZnJvbSAhPSBmcm9tTGltOyBmcm9tICs9IDIpIHsgXAorICBjb25zdCBjaGFyICpmcm9tID0gKmZyb21QOyBcCisgIGZyb21MaW0gPSBmcm9tICsgKCgoZnJvbUxpbSAtIGZyb20pID4+IDEpIDw8IDEpOyAgLyogc2hyaW5rIHRvIGV2ZW4gKi8gXAorICBmb3IgKDsgZnJvbSA8IGZyb21MaW07IGZyb20gKz0gMikgeyBcCiAgICAgaW50IHBsYW5lOyBcCiAgICAgdW5zaWduZWQgY2hhciBsbzI7IFwKICAgICB1bnNpZ25lZCBjaGFyIGxvID0gR0VUX0xPKGZyb20pOyBcCkBAIC01NTIsNyArNjgwLDcgQEAKICAgICAgIGlmIChsbyA8IDB4ODApIHsgXAogICAgICAgICBpZiAoKnRvUCA9PSB0b0xpbSkgeyBcCiAgICAgICAgICAgKmZyb21QID0gZnJvbTsgXAotICAgICAgICAgIHJldHVybjsgXAorICAgICAgICAgIHJldHVybiBYTUxfQ09OVkVSVF9PVVRQVVRfRVhIQVVTVEVEOyBcCiAgICAgICAgIH0gXAogICAgICAgICAqKCp0b1ApKysgPSBsbzsgXAogICAgICAgICBicmVhazsgXApAQCAtNTYyLDcgKzY5MCw3IEBACiAgICAgY2FzZSAweDQ6IGNhc2UgMHg1OiBjYXNlIDB4NjogY2FzZSAweDc6IFwKICAgICAgIGlmICh0b0xpbSAtICAqdG9QIDwgMikgeyBcCiAgICAgICAgICpmcm9tUCA9IGZyb207IFwKLSAgICAgICAgcmV0dXJuOyBcCisgICAgICAgIHJldHVybiBYTUxfQ09OVkVSVF9PVVRQVVRfRVhIQVVTVEVEOyBcCiAgICAgICB9IFwKICAgICAgICooKnRvUCkrKyA9ICgobG8gPj4gNikgfCAoaGkgPDwgMikgfCAgVVRGOF9jdmFsMik7IFwKICAgICAgICooKnRvUCkrKyA9ICgobG8gJiAweDNmKSB8IDB4ODApOyBcCkBAIC01NzAsNyArNjk4LDcgQEAKICAgICBkZWZhdWx0OiBcCiAgICAgICBpZiAodG9MaW0gLSAgKnRvUCA8IDMpICB7IFwKICAgICAgICAgKmZyb21QID0gZnJvbTsgXAotICAgICAgICByZXR1cm47IFwKKyAgICAgICAgcmV0dXJuIFhNTF9DT05WRVJUX09VVFBVVF9FWEhBVVNURUQ7IFwKICAgICAgIH0gXAogICAgICAgLyogMTYgYml0cyBkaXZpZGVkIDQsIDYsIDYgYW1vbmdzdCAzIGJ5dGVzICovIFwKICAgICAgICooKnRvUCkrKyA9ICgoaGkgPj4gNCkgfCBVVEY4X2N2YWwzKTsgXApAQCAtNTgwLDcgKzcwOCwxMSBAQAogICAgIGNhc2UgMHhEODogY2FzZSAweEQ5OiBjYXNlIDB4REE6IGNhc2UgMHhEQjogXAogICAgICAgaWYgKHRvTGltIC0gICp0b1AgPCA0KSB7IFwKICAgICAgICAgKmZyb21QID0gZnJvbTsgXAotICAgICAgICByZXR1cm47IFwKKyAgICAgICAgcmV0dXJuIFhNTF9DT05WRVJUX09VVFBVVF9FWEhBVVNURUQ7IFwKKyAgICAgIH0gXAorICAgICAgaWYgKGZyb21MaW0gLSBmcm9tIDwgNCkgeyBcCisgICAgICAgICpmcm9tUCA9IGZyb207IFwKKyAgICAgICAgcmV0dXJuIFhNTF9DT05WRVJUX0lOUFVUX0lOQ09NUExFVEU7IFwKICAgICAgIH0gXAogICAgICAgcGxhbmUgPSAoKChoaSAmIDB4MykgPDwgMikgfCAoKGxvID4+IDYpICYgMHgzKSkgKyAxOyBcCiAgICAgICAqKCp0b1ApKysgPSAoKHBsYW5lID4+IDIpIHwgVVRGOF9jdmFsNCk7IFwKQEAgLTU5NiwyMCArNzI4LDMyIEBACiAgICAgfSBcCiAgIH0gXAogICAqZnJvbVAgPSBmcm9tOyBcCisgIGlmIChmcm9tIDwgZnJvbUxpbSkgXAorICAgIHJldHVybiBYTUxfQ09OVkVSVF9JTlBVVF9JTkNPTVBMRVRFOyBcCisgIGVsc2UgXAorICAgIHJldHVybiBYTUxfQ09OVkVSVF9DT01QTEVURUQ7IFwKIH0KIAogI2RlZmluZSBERUZJTkVfVVRGMTZfVE9fVVRGMTYoRSkgXAotc3RhdGljIHZvaWQgIFBUUkNBTEwgXAotRSAjIyB0b1V0ZjE2KGNvbnN0IEVOQ09ESU5HICplbmMsIFwKK3N0YXRpYyBlbnVtIFhNTF9Db252ZXJ0X1Jlc3VsdCAgUFRSQ0FMTCBcCitFICMjIHRvVXRmMTYoY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYyksIFwKICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZnJvbVAsIGNvbnN0IGNoYXIgKmZyb21MaW0sIFwKICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqKnRvUCwgY29uc3QgdW5zaWduZWQgc2hvcnQgKnRvTGltKSBcCiB7IFwKKyAgZW51bSBYTUxfQ29udmVydF9SZXN1bHQgcmVzID0gWE1MX0NPTlZFUlRfQ09NUExFVEVEOyBcCisgIGZyb21MaW0gPSAqZnJvbVAgKyAoKChmcm9tTGltIC0gKmZyb21QKSA+PiAxKSA8PCAxKTsgIC8qIHNocmluayB0byBldmVuICovIFwKICAgLyogQXZvaWQgY29weWluZyBmaXJzdCBoYWxmIG9ubHkgb2Ygc3Vycm9nYXRlICovIFwKICAgaWYgKGZyb21MaW0gLSAqZnJvbVAgPiAoKHRvTGltIC0gKnRvUCkgPDwgMSkgXAotICAgICAgJiYgKEdFVF9ISShmcm9tTGltIC0gMikgJiAweEY4KSA9PSAweEQ4KSBcCisgICAgICAmJiAoR0VUX0hJKGZyb21MaW0gLSAyKSAmIDB4RjgpID09IDB4RDgpIHsgXAogICAgIGZyb21MaW0gLT0gMjsgXAotICBmb3IgKDsgKmZyb21QICE9IGZyb21MaW0gJiYgKnRvUCAhPSB0b0xpbTsgKmZyb21QICs9IDIpIFwKKyAgICByZXMgPSBYTUxfQ09OVkVSVF9JTlBVVF9JTkNPTVBMRVRFOyBcCisgIH0gXAorICBmb3IgKDsgKmZyb21QIDwgZnJvbUxpbSAmJiAqdG9QIDwgdG9MaW07ICpmcm9tUCArPSAyKSBcCiAgICAgKigqdG9QKSsrID0gKEdFVF9ISSgqZnJvbVApIDw8IDgpIHwgR0VUX0xPKCpmcm9tUCk7IFwKKyAgaWYgKCgqdG9QID09IHRvTGltKSAmJiAoKmZyb21QIDwgZnJvbUxpbSkpIFwKKyAgICByZXR1cm4gWE1MX0NPTlZFUlRfT1VUUFVUX0VYSEFVU1RFRDsgXAorICBlbHNlIFwKKyAgICByZXR1cm4gcmVzOyBcCiB9CiAKICNkZWZpbmUgU0VUMihwdHIsIGNoKSBcCkBAIC03MjYsNyArODcwLDcgQEAKICNpbmNsdWRlICJhc2NpaXRhYi5oIgogI2luY2x1ZGUgImxhdGluMXRhYi5oIgogICB9LAotICBTVEFOREFSRF9WVEFCTEUobGl0dGxlMl8pCisgIFNUQU5EQVJEX1ZUQUJMRShsaXR0bGUyXykgTlVMTF9WVEFCTEUKIH07CiAKICNlbmRpZgpAQCAtNzQ1LDcgKzg4OSw3IEBACiAjdW5kZWYgQlRfQ09MT04KICNpbmNsdWRlICJsYXRpbjF0YWIuaCIKICAgfSwKLSAgU1RBTkRBUkRfVlRBQkxFKGxpdHRsZTJfKQorICBTVEFOREFSRF9WVEFCTEUobGl0dGxlMl8pIE5VTExfVlRBQkxFCiB9OwogCiAjaWYgQllURU9SREVSICE9IDQzMjEKQEAgLTc1OCw3ICs5MDIsNyBAQAogI2luY2x1ZGUgImlhc2NpaXRhYi5oIgogI2luY2x1ZGUgImxhdGluMXRhYi5oIgogICB9LAotICBTVEFOREFSRF9WVEFCTEUobGl0dGxlMl8pCisgIFNUQU5EQVJEX1ZUQUJMRShsaXR0bGUyXykgTlVMTF9WVEFCTEUKIH07CiAKICNlbmRpZgpAQCAtNzcxLDcgKzkxNSw3IEBACiAjdW5kZWYgQlRfQ09MT04KICNpbmNsdWRlICJsYXRpbjF0YWIuaCIKICAgfSwKLSAgU1RBTkRBUkRfVlRBQkxFKGxpdHRsZTJfKQorICBTVEFOREFSRF9WVEFCTEUobGl0dGxlMl8pIE5VTExfVlRBQkxFCiB9OwogCiAjZW5kaWYKQEAgLTg2Nyw3ICsxMDExLDcgQEAKICNpbmNsdWRlICJhc2NpaXRhYi5oIgogI2luY2x1ZGUgImxhdGluMXRhYi5oIgogICB9LAotICBTVEFOREFSRF9WVEFCTEUoYmlnMl8pCisgIFNUQU5EQVJEX1ZUQUJMRShiaWcyXykgTlVMTF9WVEFCTEUKIH07CiAKICNlbmRpZgpAQCAtODg2LDcgKzEwMzAsNyBAQAogI3VuZGVmIEJUX0NPTE9OCiAjaW5jbHVkZSAibGF0aW4xdGFiLmgiCiAgIH0sCi0gIFNUQU5EQVJEX1ZUQUJMRShiaWcyXykKKyAgU1RBTkRBUkRfVlRBQkxFKGJpZzJfKSBOVUxMX1ZUQUJMRQogfTsKIAogI2lmIEJZVEVPUkRFUiAhPSAxMjM0CkBAIC04OTksNyArMTA0Myw3IEBACiAjaW5jbHVkZSAiaWFzY2lpdGFiLmgiCiAjaW5jbHVkZSAibGF0aW4xdGFiLmgiCiAgIH0sCi0gIFNUQU5EQVJEX1ZUQUJMRShiaWcyXykKKyAgU1RBTkRBUkRfVlRBQkxFKGJpZzJfKSBOVUxMX1ZUQUJMRQogfTsKIAogI2VuZGlmCkBAIC05MTIsNyArMTA1Niw3IEBACiAjdW5kZWYgQlRfQ09MT04KICNpbmNsdWRlICJsYXRpbjF0YWIuaCIKICAgfSwKLSAgU1RBTkRBUkRfVlRBQkxFKGJpZzJfKQorICBTVEFOREFSRF9WVEFCTEUoYmlnMl8pIE5VTExfVlRBQkxFCiB9OwogCiAjZW5kaWYKQEAgLTkyOCw3ICsxMDcyLDExIEBACiAgICAgaWYgKEFTQ0lJX2EgPD0gYzEgJiYgYzEgPD0gQVNDSUlfeikKICAgICAgIGMxICs9IEFTQ0lJX0EgLSBBU0NJSV9hOwogICAgIGlmIChBU0NJSV9hIDw9IGMyICYmIGMyIDw9IEFTQ0lJX3opCi0gICAgICBjMiArPSBBU0NJSV9BIC0gQVNDSUlfYTsKKyAgICAgIC8qIFRoZSBmb2xsb3dpbmcgbGluZSB3aWxsIG5ldmVyIGdldCBleGVjdXRlZC4gIHN0cmVxY2koKSBpcworICAgICAgICogb25seSBjYWxsZWQgZnJvbSB0d28gcGxhY2VzLCBib3RoIG9mIHdoaWNoIGd1YXJhbnRlZSB0byBwdXQKKyAgICAgICAqIHVwcGVyLWNhc2Ugc3RyaW5ncyBpbnRvIHMyLgorICAgICAgICovCisgICAgICBjMiArPSBBU0NJSV9BIC0gQVNDSUlfYTsgLyogTENPVl9FWENMX0xJTkUgKi8KICAgICBpZiAoYzEgIT0gYzIpCiAgICAgICByZXR1cm4gMDsKICAgICBpZiAoIWMxKQpAQCAtOTM4LDcgKzEwODYsNyBAQAogfQogCiBzdGF0aWMgdm9pZCBQVFJDQUxMCi1pbml0VXBkYXRlUG9zaXRpb24oY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcHRyLAoraW5pdFVwZGF0ZVBvc2l0aW9uKGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpLCBjb25zdCBjaGFyICpwdHIsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLCBQT1NJVElPTiAqcG9zKQogewogICBub3JtYWxfdXBkYXRlUG9zaXRpb24oJnV0ZjhfZW5jb2RpbmcuZW5jLCBwdHIsIGVuZCwgcG9zKTsKQEAgLTEyMDAsNyArMTM0OCw3IEBACiAgIH07CiAKICAgaWYgKGMgPCAwKQotICAgIHJldHVybiAwOworICAgIHJldHVybiAwOyAvKiBMQ09WX0VYQ0xfTElORTogdGhpcyBjYXNlIGlzIGFsd2F5cyBlbGltaW5hdGVkIGJlZm9yZWhhbmQgKi8KICAgaWYgKGMgPCBtaW4yKSB7CiAgICAgYnVmWzBdID0gKGNoYXIpKGMgfCBVVEY4X2N2YWwxKTsKICAgICByZXR1cm4gMTsKQEAgLTEyMjMsNyArMTM3MSw3IEBACiAgICAgYnVmWzNdID0gKGNoYXIpKChjICYgMHgzZikgfCAweDgwKTsKICAgICByZXR1cm4gNDsKICAgfQotICByZXR1cm4gMDsKKyAgcmV0dXJuIDA7IC8qIExDT1ZfRVhDTF9MSU5FOiB0aGlzIGNhc2UgdG9vIGlzIGVsaW1pbmF0ZWQgYmVmb3JlIGNhbGxpbmcgKi8KIH0KIAogaW50IEZBU1RDQUxMCkBAIC0xMjg4LDcgKzE0MzYsNyBAQAogICByZXR1cm4gKGMgJiB+MHhGRkZGKSB8fCBjaGVja0NoYXJSZWZOdW1iZXIoYykgPCAwOwogfQogCi1zdGF0aWMgdm9pZCBQVFJDQUxMCitzdGF0aWMgZW51bSBYTUxfQ29udmVydF9SZXN1bHQgUFRSQ0FMTAogdW5rbm93bl90b1V0ZjgoY29uc3QgRU5DT0RJTkcgKmVuYywKICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipmcm9tUCwgY29uc3QgY2hhciAqZnJvbUxpbSwKICAgICAgICAgICAgICAgIGNoYXIgKip0b1AsIGNvbnN0IGNoYXIgKnRvTGltKQpAQCAtMTI5OSwzNiArMTQ0NywzNSBAQAogICAgIGNvbnN0IGNoYXIgKnV0Zjg7CiAgICAgaW50IG47CiAgICAgaWYgKCpmcm9tUCA9PSBmcm9tTGltKQotICAgICAgYnJlYWs7CisgICAgICByZXR1cm4gWE1MX0NPTlZFUlRfQ09NUExFVEVEOwogICAgIHV0ZjggPSB1ZW5jLT51dGY4Wyh1bnNpZ25lZCBjaGFyKSoqZnJvbVBdOwogICAgIG4gPSAqdXRmOCsrOwogICAgIGlmIChuID09IDApIHsKICAgICAgIGludCBjID0gdWVuYy0+Y29udmVydCh1ZW5jLT51c2VyRGF0YSwgKmZyb21QKTsKICAgICAgIG4gPSBYbWxVdGY4RW5jb2RlKGMsIGJ1Zik7CiAgICAgICBpZiAobiA+IHRvTGltIC0gKnRvUCkKLSAgICAgICAgYnJlYWs7CisgICAgICAgIHJldHVybiBYTUxfQ09OVkVSVF9PVVRQVVRfRVhIQVVTVEVEOwogICAgICAgdXRmOCA9IGJ1ZjsKICAgICAgICpmcm9tUCArPSAoQVNfTk9STUFMX0VOQ09ESU5HKGVuYyktPnR5cGVbKHVuc2lnbmVkIGNoYXIpKipmcm9tUF0KICAgICAgICAgICAgICAgICAgLSAoQlRfTEVBRDIgLSAyKSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgaWYgKG4gPiB0b0xpbSAtICp0b1ApCi0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gWE1MX0NPTlZFUlRfT1VUUFVUX0VYSEFVU1RFRDsKICAgICAgICgqZnJvbVApKys7CiAgICAgfQotICAgIGRvIHsKLSAgICAgICooKnRvUCkrKyA9ICp1dGY4Kys7Ci0gICAgfSB3aGlsZSAoLS1uICE9IDApOworICAgIG1lbWNweSgqdG9QLCB1dGY4LCBuKTsKKyAgICAqdG9QICs9IG47CiAgIH0KIH0KIAotc3RhdGljIHZvaWQgUFRSQ0FMTAorc3RhdGljIGVudW0gWE1MX0NvbnZlcnRfUmVzdWx0IFBUUkNBTEwKIHVua25vd25fdG9VdGYxNihjb25zdCBFTkNPRElORyAqZW5jLAogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipmcm9tUCwgY29uc3QgY2hhciAqZnJvbUxpbSwKICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqKnRvUCwgY29uc3QgdW5zaWduZWQgc2hvcnQgKnRvTGltKQogewogICBjb25zdCBzdHJ1Y3QgdW5rbm93bl9lbmNvZGluZyAqdWVuYyA9IEFTX1VOS05PV05fRU5DT0RJTkcoZW5jKTsKLSAgd2hpbGUgKCpmcm9tUCAhPSBmcm9tTGltICYmICp0b1AgIT0gdG9MaW0pIHsKKyAgd2hpbGUgKCpmcm9tUCA8IGZyb21MaW0gJiYgKnRvUCA8IHRvTGltKSB7CiAgICAgdW5zaWduZWQgc2hvcnQgYyA9IHVlbmMtPnV0ZjE2Wyh1bnNpZ25lZCBjaGFyKSoqZnJvbVBdOwogICAgIGlmIChjID09IDApIHsKICAgICAgIGMgPSAodW5zaWduZWQgc2hvcnQpCkBAIC0xMzQwLDYgKzE0ODcsMTEgQEAKICAgICAgICgqZnJvbVApKys7CiAgICAgKigqdG9QKSsrID0gYzsKICAgfQorCisgIGlmICgoKnRvUCA9PSB0b0xpbSkgJiYgKCpmcm9tUCA8IGZyb21MaW0pKQorICAgIHJldHVybiBYTUxfQ09OVkVSVF9PVVRQVVRfRVhIQVVTVEVEOworICBlbHNlCisgICAgcmV0dXJuIFhNTF9DT05WRVJUX0NPTVBMRVRFRDsKIH0KIAogRU5DT0RJTkcgKgpAQCAtMTM2OSw2ICsxNTIxLDkgQEAKICAgICBlbHNlIGlmIChjIDwgMCkgewogICAgICAgaWYgKGMgPCAtNCkKICAgICAgICAgcmV0dXJuIDA7CisgICAgICAvKiBNdWx0aS1ieXRlIHNlcXVlbmNlcyBuZWVkIGEgY29udmVydGVyIGZ1bmN0aW9uICovCisgICAgICBpZiAoIWNvbnZlcnQpCisgICAgICAgIHJldHVybiAwOwogICAgICAgZS0+bm9ybWFsLnR5cGVbaV0gPSAodW5zaWduZWQgY2hhcikoQlRfTEVBRDIgLSAoYyArIDIpKTsKICAgICAgIGUtPnV0ZjhbaV1bMF0gPSAwOwogICAgICAgZS0+dXRmMTZbaV0gPSAwOwpAQCAtMTUwMyw3ICsxNjU4LDcgQEAKIHsKICAgY29uc3QgRU5DT0RJTkcgKiplbmNQdHI7CiAKLSAgaWYgKHB0ciA9PSBlbmQpCisgIGlmIChwdHIgPj0gZW5kKQogICAgIHJldHVybiBYTUxfVE9LX05PTkU7CiAgIGVuY1B0ciA9IGVuYy0+ZW5jUHRyOwogICBpZiAocHRyICsgMSA9PSBlbmQpIHsKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQveG1sdG9rLmggYi9Nb2R1bGVzL2V4cGF0L3htbHRvay5oCmluZGV4IGNhODY3YWEuLjUwOTI2ZjMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQveG1sdG9rLmgKKysrIGIvTW9kdWxlcy9leHBhdC94bWx0b2suaApAQCAtMSw1ICsxLDMzIEBACi0vKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTkgVGhhaSBPcGVuIFNvdXJjZSBTb2Z0d2FyZSBDZW50ZXIgTHRkCi0gICBTZWUgdGhlIGZpbGUgQ09QWUlORyBmb3IgY29weWluZyBwZXJtaXNzaW9uLgorLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXyAgX18gICAgICAgICAgICBfCisgICAgICAgICAgICAgICAgICAgICAgICAgX19fXCBcLyAvXyBfXyAgIF9fIF98IHxfCisgICAgICAgICAgICAgICAgICAgICAgICAvIF8gXFwgIC98ICdfIFwgLyBfYCB8IF9ffAorICAgICAgICAgICAgICAgICAgICAgICB8ICBfXy8vICBcfCB8XykgfCAoX3wgfCB8XworICAgICAgICAgICAgICAgICAgICAgICAgXF9fXy9fL1xfXCAuX18vIFxfXyxffFxfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxffCBYTUwgcGFyc2VyCisKKyAgIENvcHlyaWdodCAoYykgMTk5Ny0yMDAwIFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAorICAgQ29weXJpZ2h0IChjKSAyMDAwLTIwMTcgRXhwYXQgZGV2ZWxvcG1lbnQgdGVhbQorICAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgorCisgICBQZXJtaXNzaW9uIGlzICBoZXJlYnkgZ3JhbnRlZCwgIGZyZWUgb2YgY2hhcmdlLCAgdG8gYW55ICBwZXJzb24gb2J0YWluaW5nCisgICBhICBjb3B5ICBvZiAgdGhpcyAgc29mdHdhcmUgICBhbmQgIGFzc29jaWF0ZWQgIGRvY3VtZW50YXRpb24gIGZpbGVzICAodGhlCisgICAiU29mdHdhcmUiKSwgIHRvICBkZWFsIGluICB0aGUgIFNvZnR3YXJlICB3aXRob3V0IHJlc3RyaWN0aW9uLCAgaW5jbHVkaW5nCisgICB3aXRob3V0ICBsaW1pdGF0aW9uIHRoZSAgcmlnaHRzICB0byB1c2UsICBjb3B5LCAgbW9kaWZ5LCBtZXJnZSwgIHB1Ymxpc2gsCisgICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0CisgICBwZXJzb25zICB0byB3aG9tICB0aGUgU29mdHdhcmUgIGlzICBmdXJuaXNoZWQgdG8gIGRvIHNvLCAgc3ViamVjdCB0byAgdGhlCisgICBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgVGhlIGFib3ZlIGNvcHlyaWdodCAgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlICBzaGFsbCBiZSBpbmNsdWRlZAorICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgIFRIRSAgU09GVFdBUkUgIElTICBQUk9WSURFRCAgIkFTICBJUyIsICBXSVRIT1VUICBXQVJSQU5UWSAgT0YgIEFOWSAgS0lORCwKKyAgIEVYUFJFU1MgIE9SIElNUExJRUQsICBJTkNMVURJTkcgIEJVVCAgTk9UIExJTUlURUQgIFRPICBUSEUgV0FSUkFOVElFUyAgT0YKKyAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KKyAgIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SICBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKKyAgIERBTUFHRVMgT1IgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiAgSU4gQU4gIEFDVElPTiBPRiBDT05UUkFDVCwgIFRPUlQgT1IKKyAgIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKKyAgIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqLwogCiAjaWZuZGVmIFhtbFRva19JTkNMVURFRApAQCAtMTMwLDEyICsxNTgsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKik7CiAKK2VudW0gWE1MX0NvbnZlcnRfUmVzdWx0IHsKKyAgWE1MX0NPTlZFUlRfQ09NUExFVEVEID0gMCwKKyAgWE1MX0NPTlZFUlRfSU5QVVRfSU5DT01QTEVURSA9IDEsCisgIFhNTF9DT05WRVJUX09VVFBVVF9FWEhBVVNURUQgPSAyICAvKiBhbmQgdGhlcmVmb3JlIHBvdGVudGlhbGx5IGlucHV0IHJlbWFpbmluZyBhcyB3ZWxsICovCit9OworCiBzdHJ1Y3QgZW5jb2RpbmcgewogICBTQ0FOTkVSIHNjYW5uZXJzW1hNTF9OX1NUQVRFU107CiAgIFNDQU5ORVIgbGl0ZXJhbFNjYW5uZXJzW1hNTF9OX0xJVEVSQUxfVFlQRVNdOwotICBpbnQgKFBUUkNBTEwgKnNhbWVOYW1lKShjb25zdCBFTkNPRElORyAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKik7CiAgIGludCAoUFRSQ0FMTCAqbmFtZU1hdGNoZXNBc2NpaSkoY29uc3QgRU5DT0RJTkcgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLApAQCAtMTU4LDEyICsxODksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipiYWRQdHIpOwotICB2b2lkIChQVFJDQUxMICp1dGY4Q29udmVydCkoY29uc3QgRU5DT0RJTkcgKmVuYywKKyAgZW51bSBYTUxfQ29udmVydF9SZXN1bHQgKFBUUkNBTEwgKnV0ZjhDb252ZXJ0KShjb25zdCBFTkNPRElORyAqZW5jLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmZyb21QLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbUxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKip0b1AsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b0xpbSk7Ci0gIHZvaWQgKFBUUkNBTEwgKnV0ZjE2Q29udmVydCkoY29uc3QgRU5DT0RJTkcgKmVuYywKKyAgZW51bSBYTUxfQ29udmVydF9SZXN1bHQgKFBUUkNBTEwgKnV0ZjE2Q29udmVydCkoY29uc3QgRU5DT0RJTkcgKmVuYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqZnJvbVAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbUxpbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzaG9ydCAqKnRvUCwKQEAgLTIyNiw4ICsyNTcsNiBAQAogI2RlZmluZSBYbWxFbnRpdHlWYWx1ZVRvayhlbmMsIHB0ciwgZW5kLCBuZXh0VG9rUHRyKSBcCiAgICBYbWxMaXRlcmFsVG9rKGVuYywgWE1MX0VOVElUWV9WQUxVRV9MSVRFUkFMLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKIAotI2RlZmluZSBYbWxTYW1lTmFtZShlbmMsIHB0cjEsIHB0cjIpICgoKGVuYyktPnNhbWVOYW1lKShlbmMsIHB0cjEsIHB0cjIpKQotCiAjZGVmaW5lIFhtbE5hbWVNYXRjaGVzQXNjaWkoZW5jLCBwdHIxLCBlbmQxLCBwdHIyKSBcCiAgICgoKGVuYyktPm5hbWVNYXRjaGVzQXNjaWkpKGVuYywgcHRyMSwgZW5kMSwgcHRyMikpCiAKZGlmZiAtLWdpdCBhL01vZHVsZXMvZXhwYXQveG1sdG9rX2ltcGwuYyBiL01vZHVsZXMvZXhwYXQveG1sdG9rX2ltcGwuYwppbmRleCA5YzI4OTViLi40ZDlhZTdkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHRva19pbXBsLmMKKysrIGIvTW9kdWxlcy9leHBhdC94bWx0b2tfaW1wbC5jCkBAIC0xLDggKzEsMzUgQEAKLS8qIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKLSAgIFNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBjb3B5aW5nIHBlcm1pc3Npb24uCisvKiBUaGlzIGZpbGUgaXMgaW5jbHVkZWQhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18gIF9fICAgICAgICAgICAgXworICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1wgXC8gL18gX18gICBfXyBffCB8XworICAgICAgICAgICAgICAgICAgICAgICAgLyBfIFxcICAvfCAnXyBcIC8gX2AgfCBfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgX18vLyAgXHwgfF8pIHwgKF98IHwgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIFxfX18vXy9cX1wgLl9fLyBcX18sX3xcX198CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X3wgWE1MIHBhcnNlcgorCisgICBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMCBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKKyAgIENvcHlyaWdodCAoYykgMjAwMC0yMDE3IEV4cGF0IGRldmVsb3BtZW50IHRlYW0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKKworICAgUGVybWlzc2lvbiBpcyAgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSAgcGVyc29uIG9idGFpbmluZworICAgYSAgY29weSAgb2YgIHRoaXMgIHNvZnR3YXJlICAgYW5kICBhc3NvY2lhdGVkICBkb2N1bWVudGF0aW9uICBmaWxlcyAgKHRoZQorICAgIlNvZnR3YXJlIiksICB0byAgZGVhbCBpbiAgdGhlICBTb2Z0d2FyZSAgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZworICAgd2l0aG91dCAgbGltaXRhdGlvbiB0aGUgIHJpZ2h0cyAgdG8gdXNlLCAgY29weSwgIG1vZGlmeSwgbWVyZ2UsICBwdWJsaXNoLAorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorICAgcGVyc29ucyAgdG8gd2hvbSAgdGhlIFNvZnR3YXJlICBpcyAgZnVybmlzaGVkIHRvICBkbyBzbywgIHN1YmplY3QgdG8gIHRoZQorICAgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgIG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAgc2hhbGwgYmUgaW5jbHVkZWQKKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICBUSEUgIFNPRlRXQVJFICBJUyAgUFJPVklERUQgICJBUyAgSVMiLCAgV0lUSE9VVCAgV0FSUkFOVFkgIE9GICBBTlkgIEtJTkQsCisgICBFWFBSRVNTICBPUiBJTVBMSUVELCAgSU5DTFVESU5HICBCVVQgIE5PVCBMSU1JVEVEICBUTyAgVEhFIFdBUlJBTlRJRVMgIE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOCisgICBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiAgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgICBEQU1BR0VTIE9SICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgIElOIEFOICBBQ1RJT04gT0YgQ09OVFJBQ1QsICBUT1JUIE9SCisgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCisgICBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKi8KIAotLyogVGhpcyBmaWxlIGlzIGluY2x1ZGVkISAqLwogI2lmZGVmIFhNTF9UT0tfSU1QTF9DCiAKICNpZm5kZWYgSVNfSU5WQUxJRF9DSEFSCkBAIC00Nyw2ICs3NCw3IEBACiAgICAgICAqbmV4dFRva1B0ciA9IHB0cjsgXAogICAgICAgcmV0dXJuIFhNTF9UT0tfSU5WQUxJRDsgXAogICAgIH0gXAorICAgIC8qIGZhbGwgdGhyb3VnaCAqLyBcCiAgIGNhc2UgQlRfTk1TVFJUOiBcCiAgIGNhc2UgQlRfSEVYOiBcCiAgIGNhc2UgQlRfRElHSVQ6IFwKQEAgLTc1LDYgKzEwMyw3IEBACiAgICAgICAqbmV4dFRva1B0ciA9IHB0cjsgXAogICAgICAgcmV0dXJuIFhNTF9UT0tfSU5WQUxJRDsgXAogICAgIH0gXAorICAgIC8qIGZhbGwgdGhyb3VnaCAqLyBcCiAgIGNhc2UgQlRfTk1TVFJUOiBcCiAgIGNhc2UgQlRfSEVYOiBcCiAgICAgcHRyICs9IE1JTkJQQyhlbmMpOyBcCkBAIC04NywyNyArMTE2LDQ1IEBACiAjZGVmaW5lIFBSRUZJWChpZGVudCkgaWRlbnQKICNlbmRpZgogCisKKyNkZWZpbmUgSEFTX0NIQVJTKGVuYywgcHRyLCBlbmQsIGNvdW50KSBcCisgICAgKGVuZCAtIHB0ciA+PSBjb3VudCAqIE1JTkJQQyhlbmMpKQorCisjZGVmaW5lIEhBU19DSEFSKGVuYywgcHRyLCBlbmQpIFwKKyAgICBIQVNfQ0hBUlMoZW5jLCBwdHIsIGVuZCwgMSkKKworI2RlZmluZSBSRVFVSVJFX0NIQVJTKGVuYywgcHRyLCBlbmQsIGNvdW50KSBcCisgICAgeyBcCisgICAgICBpZiAoISBIQVNfQ0hBUlMoZW5jLCBwdHIsIGVuZCwgY291bnQpKSB7IFwKKyAgICAgICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsgXAorICAgICAgfSBcCisgICAgfQorCisjZGVmaW5lIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKSBcCisgICAgUkVRVUlSRV9DSEFSUyhlbmMsIHB0ciwgZW5kLCAxKQorCisKIC8qIHB0ciBwb2ludHMgdG8gY2hhcmFjdGVyIGZvbGxvd2luZyAiPCEtIiAqLwogCiBzdGF0aWMgaW50IFBUUkNBTEwKIFBSRUZJWChzY2FuQ29tbWVudCkoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcHRyLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsIGNvbnN0IGNoYXIgKipuZXh0VG9rUHRyKQogewotICBpZiAocHRyICE9IGVuZCkgeworICBpZiAoSEFTX0NIQVIoZW5jLCBwdHIsIGVuZCkpIHsKICAgICBpZiAoIUNIQVJfTUFUQ0hFUyhlbmMsIHB0ciwgQVNDSUlfTUlOVVMpKSB7CiAgICAgICAqbmV4dFRva1B0ciA9IHB0cjsKICAgICAgIHJldHVybiBYTUxfVE9LX0lOVkFMSUQ7CiAgICAgfQogICAgIHB0ciArPSBNSU5CUEMoZW5jKTsKLSAgICB3aGlsZSAocHRyICE9IGVuZCkgeworICAgIHdoaWxlIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkgewogICAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAgICAgICBJTlZBTElEX0NBU0VTKHB0ciwgbmV4dFRva1B0cikKICAgICAgIGNhc2UgQlRfTUlOVVM6Ci0gICAgICAgIGlmICgocHRyICs9IE1JTkJQQyhlbmMpKSA9PSBlbmQpCi0gICAgICAgICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsKKyAgICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOworICAgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICAgIGlmIChDSEFSX01BVENIRVMoZW5jLCBwdHIsIEFTQ0lJX01JTlVTKSkgewotICAgICAgICAgIGlmICgocHRyICs9IE1JTkJQQyhlbmMpKSA9PSBlbmQpCi0gICAgICAgICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgICAgICAgIHB0ciArPSBNSU5CUEMoZW5jKTsKKyAgICAgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICAgICAgaWYgKCFDSEFSX01BVENIRVMoZW5jLCBwdHIsIEFTQ0lJX0dUKSkgewogICAgICAgICAgICAgKm5leHRUb2tQdHIgPSBwdHI7CiAgICAgICAgICAgICByZXR1cm4gWE1MX1RPS19JTlZBTElEOwpAQCAtMTMxLDggKzE3OCw3IEBACiBQUkVGSVgoc2NhbkRlY2wpKGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnB0ciwKICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLCBjb25zdCBjaGFyICoqbmV4dFRva1B0cikKIHsKLSAgaWYgKHB0ciA9PSBlbmQpCi0gICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsKKyAgUkVRVUlSRV9DSEFSKGVuYywgcHRyLCBlbmQpOwogICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgY2FzZSBCVF9NSU5VUzoKICAgICByZXR1cm4gUFJFRklYKHNjYW5Db21tZW50KShlbmMsIHB0ciArIE1JTkJQQyhlbmMpLCBlbmQsIG5leHRUb2tQdHIpOwpAQCAtMTQ3LDExICsxOTMsMTAgQEAKICAgICAqbmV4dFRva1B0ciA9IHB0cjsKICAgICByZXR1cm4gWE1MX1RPS19JTlZBTElEOwogICB9Ci0gIHdoaWxlIChwdHIgIT0gZW5kKSB7CisgIHdoaWxlIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkgewogICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgIGNhc2UgQlRfUEVSQ05UOgotICAgICAgaWYgKHB0ciArIE1JTkJQQyhlbmMpID09IGVuZCkKLSAgICAgICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsKKyAgICAgIFJFUVVJUkVfQ0hBUlMoZW5jLCBwdHIsIGVuZCwgMik7CiAgICAgICAvKiBkb24ndCBhbGxvdyA8IUVOVElUWSUgZm9vICJ3aGF0ZXZlciI+ICovCiAgICAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0ciArIE1JTkJQQyhlbmMpKSkgewogICAgICAgY2FzZSBCVF9TOiBjYXNlIEJUX0NSOiBjYXNlIEJUX0xGOiBjYXNlIEJUX1BFUkNOVDoKQEAgLTE3NSw3ICsyMjAsNyBAQAogfQogCiBzdGF0aWMgaW50IFBUUkNBTEwKLVBSRUZJWChjaGVja1BpVGFyZ2V0KShjb25zdCBFTkNPRElORyAqZW5jLCBjb25zdCBjaGFyICpwdHIsCitQUkVGSVgoY2hlY2tQaVRhcmdldCkoY29uc3QgRU5DT0RJTkcgKlVOVVNFRF9QKGVuYyksIGNvbnN0IGNoYXIgKnB0ciwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsIGludCAqdG9rUHRyKQogewogICBpbnQgdXBwZXIgPSAwOwpAQCAtMjI1LDE1ICsyNzAsMTQgQEAKIHsKICAgaW50IHRvazsKICAgY29uc3QgY2hhciAqdGFyZ2V0ID0gcHRyOwotICBpZiAocHRyID09IGVuZCkKLSAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICBDSEVDS19OTVNUUlRfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgZGVmYXVsdDoKICAgICAqbmV4dFRva1B0ciA9IHB0cjsKICAgICByZXR1cm4gWE1MX1RPS19JTlZBTElEOwogICB9Ci0gIHdoaWxlIChwdHIgIT0gZW5kKSB7CisgIHdoaWxlIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkgewogICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgIENIRUNLX05BTUVfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgICBjYXNlIEJUX1M6IGNhc2UgQlRfQ1I6IGNhc2UgQlRfTEY6CkBAIC0yNDIsMTMgKzI4NiwxMiBAQAogICAgICAgICByZXR1cm4gWE1MX1RPS19JTlZBTElEOwogICAgICAgfQogICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgd2hpbGUgKHB0ciAhPSBlbmQpIHsKKyAgICAgIHdoaWxlIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkgewogICAgICAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgICAgICAgSU5WQUxJRF9DQVNFUyhwdHIsIG5leHRUb2tQdHIpCiAgICAgICAgIGNhc2UgQlRfUVVFU1Q6CiAgICAgICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgICAgIGlmIChwdHIgPT0gZW5kKQotICAgICAgICAgICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsKKyAgICAgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICAgICAgaWYgKENIQVJfTUFUQ0hFUyhlbmMsIHB0ciwgQVNDSUlfR1QpKSB7CiAgICAgICAgICAgICAqbmV4dFRva1B0ciA9IHB0ciArIE1JTkJQQyhlbmMpOwogICAgICAgICAgICAgcmV0dXJuIHRvazsKQEAgLTI2Niw4ICszMDksNyBAQAogICAgICAgICByZXR1cm4gWE1MX1RPS19JTlZBTElEOwogICAgICAgfQogICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CisgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICBpZiAoQ0hBUl9NQVRDSEVTKGVuYywgcHRyLCBBU0NJSV9HVCkpIHsKICAgICAgICAgKm5leHRUb2tQdHIgPSBwdHIgKyBNSU5CUEMoZW5jKTsKICAgICAgICAgcmV0dXJuIHRvazsKQEAgLTI4MiwxNSArMzI0LDE0IEBACiB9CiAKIHN0YXRpYyBpbnQgUFRSQ0FMTAotUFJFRklYKHNjYW5DZGF0YVNlY3Rpb24pKGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnB0ciwKK1BSRUZJWChzY2FuQ2RhdGFTZWN0aW9uKShjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSwgY29uc3QgY2hhciAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwgY29uc3QgY2hhciAqKm5leHRUb2tQdHIpCiB7CiAgIHN0YXRpYyBjb25zdCBjaGFyIENEQVRBX0xTUUJbXSA9IHsgQVNDSUlfQywgQVNDSUlfRCwgQVNDSUlfQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU0NJSV9ULCBBU0NJSV9BLCBBU0NJSV9MU1FCIH07CiAgIGludCBpOwogICAvKiBDREFUQVsgKi8KLSAgaWYgKGVuZCAtIHB0ciA8IDYgKiBNSU5CUEMoZW5jKSkKLSAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICBSRVFVSVJFX0NIQVJTKGVuYywgcHRyLCBlbmQsIDYpOwogICBmb3IgKGkgPSAwOyBpIDwgNjsgaSsrLCBwdHIgKz0gTUlOQlBDKGVuYykpIHsKICAgICBpZiAoIUNIQVJfTUFUQ0hFUyhlbmMsIHB0ciwgQ0RBVEFfTFNRQltpXSkpIHsKICAgICAgICpuZXh0VG9rUHRyID0gcHRyOwpAQCAtMzA1LDcgKzM0Niw3IEBACiBQUkVGSVgoY2RhdGFTZWN0aW9uVG9rKShjb25zdCBFTkNPRElORyAqZW5jLCBjb25zdCBjaGFyICpwdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsIGNvbnN0IGNoYXIgKipuZXh0VG9rUHRyKQogewotICBpZiAocHRyID09IGVuZCkKKyAgaWYgKHB0ciA+PSBlbmQpCiAgICAgcmV0dXJuIFhNTF9UT0tfTk9ORTsKICAgaWYgKE1JTkJQQyhlbmMpID4gMSkgewogICAgIHNpemVfdCBuID0gZW5kIC0gcHRyOwpAQCAtMzE5LDEzICszNjAsMTEgQEAKICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAgIGNhc2UgQlRfUlNRQjoKICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7Ci0gICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKTsKICAgICBpZiAoIUNIQVJfTUFUQ0hFUyhlbmMsIHB0ciwgQVNDSUlfUlNRQikpCiAgICAgICBicmVhazsKICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7Ci0gICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKTsKICAgICBpZiAoIUNIQVJfTUFUQ0hFUyhlbmMsIHB0ciwgQVNDSUlfR1QpKSB7CiAgICAgICBwdHIgLT0gTUlOQlBDKGVuYyk7CiAgICAgICBicmVhazsKQEAgLTMzNCw4ICszNzMsNyBAQAogICAgIHJldHVybiBYTUxfVE9LX0NEQVRBX1NFQ1RfQ0xPU0U7CiAgIGNhc2UgQlRfQ1I6CiAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgIGlmIChwdHIgPT0gZW5kKQotICAgICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsKKyAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgaWYgKEJZVEVfVFlQRShlbmMsIHB0cikgPT0gQlRfTEYpCiAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CiAgICAgKm5leHRUb2tQdHIgPSBwdHI7CkBAIC0zNDgsNyArMzg2LDcgQEAKICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CiAgICAgYnJlYWs7CiAgIH0KLSAgd2hpbGUgKHB0ciAhPSBlbmQpIHsKKyAgd2hpbGUgKEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKSB7CiAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAjZGVmaW5lIExFQURfQ0FTRShuKSBcCiAgICAgY2FzZSBCVF9MRUFEICMjIG46IFwKQEAgLTM4MywxOSArNDIxLDE4IEBACiBQUkVGSVgoc2NhbkVuZFRhZykoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcHRyLAogICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVuZCwgY29uc3QgY2hhciAqKm5leHRUb2tQdHIpCiB7Ci0gIGlmIChwdHIgPT0gZW5kKQotICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CisgIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKTsKICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAgIENIRUNLX05NU1RSVF9DQVNFUyhlbmMsIHB0ciwgZW5kLCBuZXh0VG9rUHRyKQogICBkZWZhdWx0OgogICAgICpuZXh0VG9rUHRyID0gcHRyOwogICAgIHJldHVybiBYTUxfVE9LX0lOVkFMSUQ7CiAgIH0KLSAgd2hpbGUgKHB0ciAhPSBlbmQpIHsKKyAgd2hpbGUgKEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKSB7CiAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAgICAgQ0hFQ0tfTkFNRV9DQVNFUyhlbmMsIHB0ciwgZW5kLCBuZXh0VG9rUHRyKQogICAgIGNhc2UgQlRfUzogY2FzZSBCVF9DUjogY2FzZSBCVF9MRjoKLSAgICAgIGZvciAocHRyICs9IE1JTkJQQyhlbmMpOyBwdHIgIT0gZW5kOyBwdHIgKz0gTUlOQlBDKGVuYykpIHsKKyAgICAgIGZvciAocHRyICs9IE1JTkJQQyhlbmMpOyBIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKTsgcHRyICs9IE1JTkJQQyhlbmMpKSB7CiAgICAgICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgICAgICBjYXNlIEJUX1M6IGNhc2UgQlRfQ1I6IGNhc2UgQlRfTEY6CiAgICAgICAgICAgYnJlYWs7CkBAIC00MzIsNyArNDY5LDcgQEAKIFBSRUZJWChzY2FuSGV4Q2hhclJlZikoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsIGNvbnN0IGNoYXIgKipuZXh0VG9rUHRyKQogewotICBpZiAocHRyICE9IGVuZCkgeworICBpZiAoSEFTX0NIQVIoZW5jLCBwdHIsIGVuZCkpIHsKICAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgICBjYXNlIEJUX0RJR0lUOgogICAgIGNhc2UgQlRfSEVYOgpAQCAtNDQxLDcgKzQ3OCw3IEBACiAgICAgICAqbmV4dFRva1B0ciA9IHB0cjsKICAgICAgIHJldHVybiBYTUxfVE9LX0lOVkFMSUQ7CiAgICAgfQotICAgIGZvciAocHRyICs9IE1JTkJQQyhlbmMpOyBwdHIgIT0gZW5kOyBwdHIgKz0gTUlOQlBDKGVuYykpIHsKKyAgICBmb3IgKHB0ciArPSBNSU5CUEMoZW5jKTsgSEFTX0NIQVIoZW5jLCBwdHIsIGVuZCk7IHB0ciArPSBNSU5CUEMoZW5jKSkgewogICAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAgICAgICBjYXNlIEJUX0RJR0lUOgogICAgICAgY2FzZSBCVF9IRVg6CkBAIC00NjQsNyArNTAxLDcgQEAKIFBSRUZJWChzY2FuQ2hhclJlZikoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcHRyLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsIGNvbnN0IGNoYXIgKipuZXh0VG9rUHRyKQogewotICBpZiAocHRyICE9IGVuZCkgeworICBpZiAoSEFTX0NIQVIoZW5jLCBwdHIsIGVuZCkpIHsKICAgICBpZiAoQ0hBUl9NQVRDSEVTKGVuYywgcHRyLCBBU0NJSV94KSkKICAgICAgIHJldHVybiBQUkVGSVgoc2NhbkhleENoYXJSZWYpKGVuYywgcHRyICsgTUlOQlBDKGVuYyksIGVuZCwgbmV4dFRva1B0cik7CiAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CkBAIC00NzQsNyArNTExLDcgQEAKICAgICAgICpuZXh0VG9rUHRyID0gcHRyOwogICAgICAgcmV0dXJuIFhNTF9UT0tfSU5WQUxJRDsKICAgICB9Ci0gICAgZm9yIChwdHIgKz0gTUlOQlBDKGVuYyk7IHB0ciAhPSBlbmQ7IHB0ciArPSBNSU5CUEMoZW5jKSkgeworICAgIGZvciAocHRyICs9IE1JTkJQQyhlbmMpOyBIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKTsgcHRyICs9IE1JTkJQQyhlbmMpKSB7CiAgICAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgICAgIGNhc2UgQlRfRElHSVQ6CiAgICAgICAgIGJyZWFrOwpAQCAtNDk2LDggKzUzMyw3IEBACiBQUkVGSVgoc2NhblJlZikoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcHRyLCBjb25zdCBjaGFyICplbmQsCiAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKm5leHRUb2tQdHIpCiB7Ci0gIGlmIChwdHIgPT0gZW5kKQotICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CisgIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKTsKICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAgIENIRUNLX05NU1RSVF9DQVNFUyhlbmMsIHB0ciwgZW5kLCBuZXh0VG9rUHRyKQogICBjYXNlIEJUX05VTToKQEAgLTUwNiw3ICs1NDIsNyBAQAogICAgICpuZXh0VG9rUHRyID0gcHRyOwogICAgIHJldHVybiBYTUxfVE9LX0lOVkFMSUQ7CiAgIH0KLSAgd2hpbGUgKHB0ciAhPSBlbmQpIHsKKyAgd2hpbGUgKEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKSB7CiAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAgICAgQ0hFQ0tfTkFNRV9DQVNFUyhlbmMsIHB0ciwgZW5kLCBuZXh0VG9rUHRyKQogICAgIGNhc2UgQlRfU0VNSToKQEAgLTUyOSw3ICs1NjUsNyBAQAogI2lmZGVmIFhNTF9OUwogICBpbnQgaGFkQ29sb24gPSAwOwogI2VuZGlmCi0gIHdoaWxlIChwdHIgIT0gZW5kKSB7CisgIHdoaWxlIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkgewogICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgIENIRUNLX05BTUVfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICNpZmRlZiBYTUxfTlMKQEAgLTU0MCw4ICs1NzYsNyBAQAogICAgICAgfQogICAgICAgaGFkQ29sb24gPSAxOwogICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CisgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgICAgIENIRUNLX05NU1RSVF9DQVNFUyhlbmMsIHB0ciwgZW5kLCBuZXh0VG9rUHRyKQogICAgICAgZGVmYXVsdDoKQEAgLTU1NSw4ICs1OTAsNyBAQAogICAgICAgICBpbnQgdDsKIAogICAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7Ci0gICAgICAgIGlmIChwdHIgPT0gZW5kKQotICAgICAgICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CisgICAgICAgIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKTsKICAgICAgICAgdCA9IEJZVEVfVFlQRShlbmMsIHB0cik7CiAgICAgICAgIGlmICh0ID09IEJUX0VRVUFMUykKICAgICAgICAgICBicmVhazsKQEAgLTU3MCw3ICs2MDQsNyBAQAogICAgICAgICAgIHJldHVybiBYTUxfVE9LX0lOVkFMSUQ7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwogICAgIGNhc2UgQlRfRVFVQUxTOgogICAgICAgewogICAgICAgICBpbnQgb3BlbjsKQEAgLTU3OSw4ICs2MTMsNyBAQAogI2VuZGlmCiAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7Ci0gICAgICAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgICAgICAgIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKTsKICAgICAgICAgICBvcGVuID0gQllURV9UWVBFKGVuYywgcHRyKTsKICAgICAgICAgICBpZiAob3BlbiA9PSBCVF9RVU9UIHx8IG9wZW4gPT0gQlRfQVBPUykKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTk4LDggKzYzMSw3IEBACiAgICAgICAgIC8qIGluIGF0dHJpYnV0ZSB2YWx1ZSAqLwogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgaW50IHQ7Ci0gICAgICAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgICAgICAgIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKTsKICAgICAgICAgICB0ID0gQllURV9UWVBFKGVuYywgcHRyKTsKICAgICAgICAgICBpZiAodCA9PSBvcGVuKQogICAgICAgICAgICAgYnJlYWs7CkBAIC02MjQsOCArNjU2LDcgQEAKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgICBpZiAocHRyID09IGVuZCkKLSAgICAgICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgICAgICBjYXNlIEJUX1M6CiAgICAgICAgIGNhc2UgQlRfQ1I6CkBAIC02NDIsOCArNjczLDcgQEAKICAgICAgICAgLyogcHRyIHBvaW50cyB0byBjbG9zaW5nIHF1b3RlICovCiAgICAgICAgIGZvciAoOzspIHsKICAgICAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7Ci0gICAgICAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgICAgICAgIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKTsKICAgICAgICAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgICAgICAgICBDSEVDS19OTVNUUlRfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgICAgICAgICBjYXNlIEJUX1M6IGNhc2UgQlRfQ1I6IGNhc2UgQlRfTEY6CkBAIC02NTUsOCArNjg1LDcgQEAKICAgICAgICAgICBjYXNlIEJUX1NPTDoKICAgICAgICAgICBzb2w6CiAgICAgICAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7Ci0gICAgICAgICAgICBpZiAocHRyID09IGVuZCkKLSAgICAgICAgICAgICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsKKyAgICAgICAgICAgIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKTsKICAgICAgICAgICAgIGlmICghQ0hBUl9NQVRDSEVTKGVuYywgcHRyLCBBU0NJSV9HVCkpIHsKICAgICAgICAgICAgICAgKm5leHRUb2tQdHIgPSBwdHI7CiAgICAgICAgICAgICAgIHJldHVybiBYTUxfVE9LX0lOVkFMSUQ7CkBAIC02ODgsMTMgKzcxNywxMiBAQAogI2lmZGVmIFhNTF9OUwogICBpbnQgaGFkQ29sb247CiAjZW5kaWYKLSAgaWYgKHB0ciA9PSBlbmQpCi0gICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsKKyAgUkVRVUlSRV9DSEFSKGVuYywgcHRyLCBlbmQpOwogICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgQ0hFQ0tfTk1TVFJUX0NBU0VTKGVuYywgcHRyLCBlbmQsIG5leHRUb2tQdHIpCiAgIGNhc2UgQlRfRVhDTDoKLSAgICBpZiAoKHB0ciArPSBNSU5CUEMoZW5jKSkgPT0gZW5kKQotICAgICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsKKyAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CisgICAgUkVRVUlSRV9DSEFSKGVuYywgcHRyLCBlbmQpOwogICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgIGNhc2UgQlRfTUlOVVM6CiAgICAgICByZXR1cm4gUFJFRklYKHNjYW5Db21tZW50KShlbmMsIHB0ciArIE1JTkJQQyhlbmMpLCBlbmQsIG5leHRUb2tQdHIpOwpAQCAtNzE2LDcgKzc0NCw3IEBACiAgIGhhZENvbG9uID0gMDsKICNlbmRpZgogICAvKiB3ZSBoYXZlIGEgc3RhcnQtdGFnICovCi0gIHdoaWxlIChwdHIgIT0gZW5kKSB7CisgIHdoaWxlIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkgewogICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgIENIRUNLX05BTUVfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICNpZmRlZiBYTUxfTlMKQEAgLTcyNyw4ICs3NTUsNyBAQAogICAgICAgfQogICAgICAgaGFkQ29sb24gPSAxOwogICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CisgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgICAgIENIRUNLX05NU1RSVF9DQVNFUyhlbmMsIHB0ciwgZW5kLCBuZXh0VG9rUHRyKQogICAgICAgZGVmYXVsdDoKQEAgLTc0MCw3ICs3NjcsNyBAQAogICAgIGNhc2UgQlRfUzogY2FzZSBCVF9DUjogY2FzZSBCVF9MRjoKICAgICAgIHsKICAgICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgICB3aGlsZSAocHRyICE9IGVuZCkgeworICAgICAgICB3aGlsZSAoSEFTX0NIQVIoZW5jLCBwdHIsIGVuZCkpIHsKICAgICAgICAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgICAgICAgICBDSEVDS19OTVNUUlRfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgICAgICAgICBjYXNlIEJUX0dUOgpAQCAtNzY1LDggKzc5Miw3IEBACiAgICAgY2FzZSBCVF9TT0w6CiAgICAgc29sOgogICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CisgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICBpZiAoIUNIQVJfTUFUQ0hFUyhlbmMsIHB0ciwgQVNDSUlfR1QpKSB7CiAgICAgICAgICpuZXh0VG9rUHRyID0gcHRyOwogICAgICAgICByZXR1cm4gWE1MX1RPS19JTlZBTElEOwpAQCAtNzg1LDcgKzgxMSw3IEBACiBQUkVGSVgoY29udGVudFRvaykoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcHRyLCBjb25zdCBjaGFyICplbmQsCiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKm5leHRUb2tQdHIpCiB7Ci0gIGlmIChwdHIgPT0gZW5kKQorICBpZiAocHRyID49IGVuZCkKICAgICByZXR1cm4gWE1MX1RPS19OT05FOwogICBpZiAoTUlOQlBDKGVuYykgPiAxKSB7CiAgICAgc2l6ZV90IG4gPSBlbmQgLSBwdHI7CkBAIC04MDMsNyArODI5LDcgQEAKICAgICByZXR1cm4gUFJFRklYKHNjYW5SZWYpKGVuYywgcHRyICsgTUlOQlBDKGVuYyksIGVuZCwgbmV4dFRva1B0cik7CiAgIGNhc2UgQlRfQ1I6CiAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgIGlmIChwdHIgPT0gZW5kKQorICAgIGlmICghIEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKQogICAgICAgcmV0dXJuIFhNTF9UT0tfVFJBSUxJTkdfQ1I7CiAgICAgaWYgKEJZVEVfVFlQRShlbmMsIHB0cikgPT0gQlRfTEYpCiAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CkBAIC04MTQsMTIgKzg0MCwxMiBAQAogICAgIHJldHVybiBYTUxfVE9LX0RBVEFfTkVXTElORTsKICAgY2FzZSBCVF9SU1FCOgogICAgIHB0ciArPSBNSU5CUEMoZW5jKTsKLSAgICBpZiAocHRyID09IGVuZCkKKyAgICBpZiAoISBIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkKICAgICAgIHJldHVybiBYTUxfVE9LX1RSQUlMSU5HX1JTUUI7CiAgICAgaWYgKCFDSEFSX01BVENIRVMoZW5jLCBwdHIsIEFTQ0lJX1JTUUIpKQogICAgICAgYnJlYWs7CiAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgIGlmIChwdHIgPT0gZW5kKQorICAgIGlmICghIEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKQogICAgICAgcmV0dXJuIFhNTF9UT0tfVFJBSUxJTkdfUlNRQjsKICAgICBpZiAoIUNIQVJfTUFUQ0hFUyhlbmMsIHB0ciwgQVNDSUlfR1QpKSB7CiAgICAgICBwdHIgLT0gTUlOQlBDKGVuYyk7CkBAIC04MzIsNyArODU4LDcgQEAKICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CiAgICAgYnJlYWs7CiAgIH0KLSAgd2hpbGUgKHB0ciAhPSBlbmQpIHsKKyAgd2hpbGUgKEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKSB7CiAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAjZGVmaW5lIExFQURfQ0FTRShuKSBcCiAgICAgY2FzZSBCVF9MRUFEICMjIG46IFwKQEAgLTg0NSwxMiArODcxLDEyIEBACiAgICAgTEVBRF9DQVNFKDIpIExFQURfQ0FTRSgzKSBMRUFEX0NBU0UoNCkKICN1bmRlZiBMRUFEX0NBU0UKICAgICBjYXNlIEJUX1JTUUI6Ci0gICAgICBpZiAocHRyICsgTUlOQlBDKGVuYykgIT0gZW5kKSB7CisgICAgICBpZiAoSEFTX0NIQVJTKGVuYywgcHRyLCBlbmQsIDIpKSB7CiAgICAgICAgICBpZiAoIUNIQVJfTUFUQ0hFUyhlbmMsIHB0ciArIE1JTkJQQyhlbmMpLCBBU0NJSV9SU1FCKSkgewogICAgICAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQotICAgICAgICAgaWYgKHB0ciArIDIqTUlOQlBDKGVuYykgIT0gZW5kKSB7CisgICAgICAgICBpZiAoSEFTX0NIQVJTKGVuYywgcHRyLCBlbmQsIDMpKSB7CiAgICAgICAgICAgIGlmICghQ0hBUl9NQVRDSEVTKGVuYywgcHRyICsgMipNSU5CUEMoZW5jKSwgQVNDSUlfR1QpKSB7CiAgICAgICAgICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwogICAgICAgICAgICAgIGJyZWFrOwpAQCAtODg0LDggKzkxMCw3IEBACiBQUkVGSVgoc2NhblBlcmNlbnQpKGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnB0ciwgY29uc3QgY2hhciAqZW5kLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqbmV4dFRva1B0cikKIHsKLSAgaWYgKHB0ciA9PSBlbmQpCi0gICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsKKyAgUkVRVUlSRV9DSEFSKGVuYywgcHRyLCBlbmQpOwogICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgQ0hFQ0tfTk1TVFJUX0NBU0VTKGVuYywgcHRyLCBlbmQsIG5leHRUb2tQdHIpCiAgIGNhc2UgQlRfUzogY2FzZSBCVF9MRjogY2FzZSBCVF9DUjogY2FzZSBCVF9QRVJDTlQ6CkBAIC04OTUsNyArOTIwLDcgQEAKICAgICAqbmV4dFRva1B0ciA9IHB0cjsKICAgICByZXR1cm4gWE1MX1RPS19JTlZBTElEOwogICB9Ci0gIHdoaWxlIChwdHIgIT0gZW5kKSB7CisgIHdoaWxlIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkgewogICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgIENIRUNLX05BTUVfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgICBjYXNlIEJUX1NFTUk6CkBAIC05MTMsMTUgKzkzOCwxNCBAQAogUFJFRklYKHNjYW5Qb3VuZE5hbWUpKGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnB0ciwgY29uc3QgY2hhciAqZW5kLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKipuZXh0VG9rUHRyKQogewotICBpZiAocHRyID09IGVuZCkKLSAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICBDSEVDS19OTVNUUlRfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgZGVmYXVsdDoKICAgICAqbmV4dFRva1B0ciA9IHB0cjsKICAgICByZXR1cm4gWE1MX1RPS19JTlZBTElEOwogICB9Ci0gIHdoaWxlIChwdHIgIT0gZW5kKSB7CisgIHdoaWxlIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkgewogICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgIENIRUNLX05BTUVfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgICBjYXNlIEJUX0NSOiBjYXNlIEJUX0xGOiBjYXNlIEJUX1M6CkBAIC05NDEsNyArOTY1LDcgQEAKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwdHIsIGNvbnN0IGNoYXIgKmVuZCwKICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqbmV4dFRva1B0cikKIHsKLSAgd2hpbGUgKHB0ciAhPSBlbmQpIHsKKyAgd2hpbGUgKEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKSB7CiAgICAgaW50IHQgPSBCWVRFX1RZUEUoZW5jLCBwdHIpOwogICAgIHN3aXRjaCAodCkgewogICAgIElOVkFMSURfQ0FTRVMocHRyLCBuZXh0VG9rUHRyKQpAQCAtOTUwLDcgKzk3NCw3IEBACiAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CiAgICAgICBpZiAodCAhPSBvcGVuKQogICAgICAgICBicmVhazsKLSAgICAgIGlmIChwdHIgPT0gZW5kKQorICAgICAgaWYgKCEgSEFTX0NIQVIoZW5jLCBwdHIsIGVuZCkpCiAgICAgICAgIHJldHVybiAtWE1MX1RPS19MSVRFUkFMOwogICAgICAgKm5leHRUb2tQdHIgPSBwdHI7CiAgICAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKQEAgLTk3Myw3ICs5OTcsNyBAQAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKm5leHRUb2tQdHIpCiB7CiAgIGludCB0b2s7Ci0gIGlmIChwdHIgPT0gZW5kKQorICBpZiAocHRyID49IGVuZCkKICAgICByZXR1cm4gWE1MX1RPS19OT05FOwogICBpZiAoTUlOQlBDKGVuYykgPiAxKSB7CiAgICAgc2l6ZV90IG4gPSBlbmQgLSBwdHI7CkBAIC05OTIsOCArMTAxNiw3IEBACiAgIGNhc2UgQlRfTFQ6CiAgICAgewogICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgaWYgKHB0ciA9PSBlbmQpCi0gICAgICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CisgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cikpIHsKICAgICAgIGNhc2UgQlRfRVhDTDoKICAgICAgICAgcmV0dXJuIFBSRUZJWChzY2FuRGVjbCkoZW5jLCBwdHIgKyBNSU5CUEMoZW5jKSwgZW5kLCBuZXh0VG9rUHRyKTsKQEAgLTEwMjEsNyArMTA0NCw3IEBACiAgIGNhc2UgQlRfUzogY2FzZSBCVF9MRjoKICAgICBmb3IgKDs7KSB7CiAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7Ci0gICAgICBpZiAocHRyID09IGVuZCkKKyAgICAgIGlmICghIEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKQogICAgICAgICBicmVhazsKICAgICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgICAgY2FzZSBCVF9TOiBjYXNlIEJUX0xGOgpAQCAtMTA0OCwxMSArMTA3MSwxMCBAQAogICAgIHJldHVybiBYTUxfVE9LX09QRU5fQlJBQ0tFVDsKICAgY2FzZSBCVF9SU1FCOgogICAgIHB0ciArPSBNSU5CUEMoZW5jKTsKLSAgICBpZiAocHRyID09IGVuZCkKKyAgICBpZiAoISBIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkKICAgICAgIHJldHVybiAtWE1MX1RPS19DTE9TRV9CUkFDS0VUOwogICAgIGlmIChDSEFSX01BVENIRVMoZW5jLCBwdHIsIEFTQ0lJX1JTUUIpKSB7Ci0gICAgICBpZiAocHRyICsgTUlOQlBDKGVuYykgPT0gZW5kKQotICAgICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgICAgUkVRVUlSRV9DSEFSUyhlbmMsIHB0ciwgZW5kLCAyKTsKICAgICAgIGlmIChDSEFSX01BVENIRVMoZW5jLCBwdHIgKyBNSU5CUEMoZW5jKSwgQVNDSUlfR1QpKSB7CiAgICAgICAgICpuZXh0VG9rUHRyID0gcHRyICsgMipNSU5CUEMoZW5jKTsKICAgICAgICAgcmV0dXJuIFhNTF9UT0tfQ09ORF9TRUNUX0NMT1NFOwpAQCAtMTA2NSw3ICsxMDg3LDcgQEAKICAgICByZXR1cm4gWE1MX1RPS19PUEVOX1BBUkVOOwogICBjYXNlIEJUX1JQQVI6CiAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgIGlmIChwdHIgPT0gZW5kKQorICAgIGlmICghIEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKQogICAgICAgcmV0dXJuIC1YTUxfVE9LX0NMT1NFX1BBUkVOOwogICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgIGNhc2UgQlRfQVNUOgpAQCAtMTE0MSw3ICsxMTYzLDcgQEAKICAgICAqbmV4dFRva1B0ciA9IHB0cjsKICAgICByZXR1cm4gWE1MX1RPS19JTlZBTElEOwogICB9Ci0gIHdoaWxlIChwdHIgIT0gZW5kKSB7CisgIHdoaWxlIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkgewogICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgIENIRUNLX05BTUVfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKICAgICBjYXNlIEJUX0dUOiBjYXNlIEJUX1JQQVI6IGNhc2UgQlRfQ09NTUE6CkBAIC0xMTU0LDggKzExNzYsNyBAQAogICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwogICAgICAgc3dpdGNoICh0b2spIHsKICAgICAgIGNhc2UgWE1MX1RPS19OQU1FOgotICAgICAgICBpZiAocHRyID09IGVuZCkKLSAgICAgICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICAgIHRvayA9IFhNTF9UT0tfUFJFRklYRURfTkFNRTsKICAgICAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAgICAgICAgIENIRUNLX05BTUVfQ0FTRVMoZW5jLCBwdHIsIGVuZCwgbmV4dFRva1B0cikKQEAgLTEyMDQsMTAgKzEyMjUsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLCBjb25zdCBjaGFyICoqbmV4dFRva1B0cikKIHsKICAgY29uc3QgY2hhciAqc3RhcnQ7Ci0gIGlmIChwdHIgPT0gZW5kKQorICBpZiAocHRyID49IGVuZCkKICAgICByZXR1cm4gWE1MX1RPS19OT05FOworICBlbHNlIGlmICghIEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKSB7CisgICAgLyogVGhpcyBsaW5lIGNhbm5vdCBiZSBleGVjdXRlZC4gIFRoZSBpbmNvbWluZyBkYXRhIGhhcyBhbHJlYWR5CisgICAgICogYmVlbiB0b2tlbml6ZWQgb25jZSwgc28gaW5jb21wbGV0ZSBjaGFyYWN0ZXJzIGxpa2UgdGhpcyBoYXZlCisgICAgICogYWxyZWFkeSBiZWVuIGVsaW1pbmF0ZWQgZnJvbSB0aGUgaW5wdXQuICBSZXRhaW5pbmcgdGhlIHBhcmFub2lhCisgICAgICogY2hlY2sgaXMgc3RpbGwgdmFsdWFibGUsIGhvd2V2ZXIuCisgICAgICovCisgICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsgLyogTENPVl9FWENMX0xJTkUgKi8KKyAgfQogICBzdGFydCA9IHB0cjsKLSAgd2hpbGUgKHB0ciAhPSBlbmQpIHsKKyAgd2hpbGUgKEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKSB7CiAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAjZGVmaW5lIExFQURfQ0FTRShuKSBcCiAgICAgY2FzZSBCVF9MRUFEICMjIG46IHB0ciArPSBuOyBicmVhazsKQEAgLTEyMzIsNyArMTI2MSw3IEBACiAgICAgY2FzZSBCVF9DUjoKICAgICAgIGlmIChwdHIgPT0gc3RhcnQpIHsKICAgICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgICBpZiAocHRyID09IGVuZCkKKyAgICAgICAgaWYgKCEgSEFTX0NIQVIoZW5jLCBwdHIsIGVuZCkpCiAgICAgICAgICAgcmV0dXJuIFhNTF9UT0tfVFJBSUxJTkdfQ1I7CiAgICAgICAgIGlmIChCWVRFX1RZUEUoZW5jLCBwdHIpID09IEJUX0xGKQogICAgICAgICAgIHB0ciArPSBNSU5CUEMoZW5jKTsKQEAgLTEyNjIsMTAgKzEyOTEsMTggQEAKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZW5kLCBjb25zdCBjaGFyICoqbmV4dFRva1B0cikKIHsKICAgY29uc3QgY2hhciAqc3RhcnQ7Ci0gIGlmIChwdHIgPT0gZW5kKQorICBpZiAocHRyID49IGVuZCkKICAgICByZXR1cm4gWE1MX1RPS19OT05FOworICBlbHNlIGlmICghIEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKSB7CisgICAgLyogVGhpcyBsaW5lIGNhbm5vdCBiZSBleGVjdXRlZC4gIFRoZSBpbmNvbWluZyBkYXRhIGhhcyBhbHJlYWR5CisgICAgICogYmVlbiB0b2tlbml6ZWQgb25jZSwgc28gaW5jb21wbGV0ZSBjaGFyYWN0ZXJzIGxpa2UgdGhpcyBoYXZlCisgICAgICogYWxyZWFkeSBiZWVuIGVsaW1pbmF0ZWQgZnJvbSB0aGUgaW5wdXQuICBSZXRhaW5pbmcgdGhlIHBhcmFub2lhCisgICAgICogY2hlY2sgaXMgc3RpbGwgdmFsdWFibGUsIGhvd2V2ZXIuCisgICAgICovCisgICAgcmV0dXJuIFhNTF9UT0tfUEFSVElBTDsgLyogTENPVl9FWENMX0xJTkUgKi8KKyAgfQogICBzdGFydCA9IHB0cjsKLSAgd2hpbGUgKHB0ciAhPSBlbmQpIHsKKyAgd2hpbGUgKEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKSB7CiAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAjZGVmaW5lIExFQURfQ0FTRShuKSBcCiAgICAgY2FzZSBCVF9MRUFEICMjIG46IHB0ciArPSBuOyBicmVhazsKQEAgLTEyOTQsNyArMTMzMSw3IEBACiAgICAgY2FzZSBCVF9DUjoKICAgICAgIGlmIChwdHIgPT0gc3RhcnQpIHsKICAgICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgICBpZiAocHRyID09IGVuZCkKKyAgICAgICAgaWYgKCEgSEFTX0NIQVIoZW5jLCBwdHIsIGVuZCkpCiAgICAgICAgICAgcmV0dXJuIFhNTF9UT0tfVFJBSUxJTkdfQ1I7CiAgICAgICAgIGlmIChCWVRFX1RZUEUoZW5jLCBwdHIpID09IEJUX0xGKQogICAgICAgICAgIHB0ciArPSBNSU5CUEMoZW5jKTsKQEAgLTEzMjYsMTUgKzEzNjMsMTUgQEAKICAgICAgIGVuZCA9IHB0ciArIG47CiAgICAgfQogICB9Ci0gIHdoaWxlIChwdHIgIT0gZW5kKSB7CisgIHdoaWxlIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSkgewogICAgIHN3aXRjaCAoQllURV9UWVBFKGVuYywgcHRyKSkgewogICAgIElOVkFMSURfQ0FTRVMocHRyLCBuZXh0VG9rUHRyKQogICAgIGNhc2UgQlRfTFQ6Ci0gICAgICBpZiAoKHB0ciArPSBNSU5CUEMoZW5jKSkgPT0gZW5kKQotICAgICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOworICAgICAgUkVRVUlSRV9DSEFSKGVuYywgcHRyLCBlbmQpOwogICAgICAgaWYgKENIQVJfTUFUQ0hFUyhlbmMsIHB0ciwgQVNDSUlfRVhDTCkpIHsKLSAgICAgICAgaWYgKChwdHIgKz0gTUlOQlBDKGVuYykpID09IGVuZCkKLSAgICAgICAgICByZXR1cm4gWE1MX1RPS19QQVJUSUFMOworICAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CisgICAgICAgIFJFUVVJUkVfQ0hBUihlbmMsIHB0ciwgZW5kKTsKICAgICAgICAgaWYgKENIQVJfTUFUQ0hFUyhlbmMsIHB0ciwgQVNDSUlfTFNRQikpIHsKICAgICAgICAgICArK2xldmVsOwogICAgICAgICAgIHB0ciArPSBNSU5CUEMoZW5jKTsKQEAgLTEzNDIsMTEgKzEzNzksMTEgQEAKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgQlRfUlNRQjoKLSAgICAgIGlmICgocHRyICs9IE1JTkJQQyhlbmMpKSA9PSBlbmQpCi0gICAgICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CisgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CisgICAgICBSRVFVSVJFX0NIQVIoZW5jLCBwdHIsIGVuZCk7CiAgICAgICBpZiAoQ0hBUl9NQVRDSEVTKGVuYywgcHRyLCBBU0NJSV9SU1FCKSkgewotICAgICAgICBpZiAoKHB0ciArPSBNSU5CUEMoZW5jKSkgPT0gZW5kKQotICAgICAgICAgIHJldHVybiBYTUxfVE9LX1BBUlRJQUw7CisgICAgICAgIHB0ciArPSBNSU5CUEMoZW5jKTsKKyAgICAgICAgUkVRVUlSRV9DSEFSKGVuYywgcHRyLCBlbmQpOwogICAgICAgICBpZiAoQ0hBUl9NQVRDSEVTKGVuYywgcHRyLCBBU0NJSV9HVCkpIHsKICAgICAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CiAgICAgICAgICAgaWYgKGxldmVsID09IDApIHsKQEAgLTEzNzMsNyArMTQxMCw3IEBACiB7CiAgIHB0ciArPSBNSU5CUEMoZW5jKTsKICAgZW5kIC09IE1JTkJQQyhlbmMpOwotICBmb3IgKDsgcHRyICE9IGVuZDsgcHRyICs9IE1JTkJQQyhlbmMpKSB7CisgIGZvciAoOyBIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKTsgcHRyICs9IE1JTkJQQyhlbmMpKSB7CiAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAgICAgY2FzZSBCVF9ESUdJVDoKICAgICBjYXNlIEJUX0hFWDoKQEAgLTE0MDcsNiArMTQ0NCw3IEBACiAgICAgY2FzZSBCVF9OTVNUUlQ6CiAgICAgICBpZiAoIShCWVRFX1RPX0FTQ0lJKGVuYywgcHRyKSAmIH4weDdmKSkKICAgICAgICAgYnJlYWs7CisgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KICAgICBkZWZhdWx0OgogICAgICAgc3dpdGNoIChCWVRFX1RPX0FTQ0lJKGVuYywgcHRyKSkgewogICAgICAgY2FzZSAweDI0OiAvKiAkICovCkBAIC0xNTIxLDcgKzE1NTksNyBAQAogfQogCiBzdGF0aWMgaW50IFBUUkZBU1RDQUxMCi1QUkVGSVgoY2hhclJlZk51bWJlcikoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcHRyKQorUFJFRklYKGNoYXJSZWZOdW1iZXIpKGNvbnN0IEVOQ09ESU5HICpVTlVTRURfUChlbmMpLCBjb25zdCBjaGFyICpwdHIpCiB7CiAgIGludCByZXN1bHQgPSAwOwogICAvKiBza2lwICYjICovCkBAIC0xNTY1LDcgKzE2MDMsNyBAQAogfQogCiBzdGF0aWMgaW50IFBUUkNBTEwKLVBSRUZJWChwcmVkZWZpbmVkRW50aXR5TmFtZSkoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcHRyLAorUFJFRklYKHByZWRlZmluZWRFbnRpdHlOYW1lKShjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSwgY29uc3QgY2hhciAqcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQpCiB7CiAgIHN3aXRjaCAoKGVuZCAtIHB0cikvTUlOQlBDKGVuYykpIHsKQEAgLTE2MTksNzYgKzE2NTcsMTggQEAKIH0KIAogc3RhdGljIGludCBQVFJDQUxMCi1QUkVGSVgoc2FtZU5hbWUpKGNvbnN0IEVOQ09ESU5HICplbmMsIGNvbnN0IGNoYXIgKnB0cjEsIGNvbnN0IGNoYXIgKnB0cjIpCi17Ci0gIGZvciAoOzspIHsKLSAgICBzd2l0Y2ggKEJZVEVfVFlQRShlbmMsIHB0cjEpKSB7Ci0jZGVmaW5lIExFQURfQ0FTRShuKSBcCi0gICAgY2FzZSBCVF9MRUFEICMjIG46IFwKLSAgICAgIGlmICgqcHRyMSsrICE9ICpwdHIyKyspIFwKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgTEVBRF9DQVNFKDQpIExFQURfQ0FTRSgzKSBMRUFEX0NBU0UoMikKLSN1bmRlZiBMRUFEX0NBU0UKLSAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgICAgaWYgKCpwdHIxKysgIT0gKnB0cjIrKykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEJUX05PTkFTQ0lJOgotICAgIGNhc2UgQlRfTk1TVFJUOgotI2lmZGVmIFhNTF9OUwotICAgIGNhc2UgQlRfQ09MT046Ci0jZW5kaWYKLSAgICBjYXNlIEJUX0hFWDoKLSAgICBjYXNlIEJUX0RJR0lUOgotICAgIGNhc2UgQlRfTkFNRToKLSAgICBjYXNlIEJUX01JTlVTOgotICAgICAgaWYgKCpwdHIyKysgIT0gKnB0cjErKykKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICBpZiAoTUlOQlBDKGVuYykgPiAxKSB7Ci0gICAgICAgIGlmICgqcHRyMisrICE9ICpwdHIxKyspCi0gICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChNSU5CUEMoZW5jKSA+IDIpIHsKLSAgICAgICAgICBpZiAoKnB0cjIrKyAhPSAqcHRyMSsrKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgaWYgKE1JTkJQQyhlbmMpID4gMykgewotICAgICAgICAgICAgaWYgKCpwdHIyKysgIT0gKnB0cjErKykKLSAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgaWYgKE1JTkJQQyhlbmMpID09IDEgJiYgKnB0cjEgPT0gKnB0cjIpCi0gICAgICAgIHJldHVybiAxOwotICAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIyKSkgewotICAgICAgY2FzZSBCVF9MRUFEMjoKLSAgICAgIGNhc2UgQlRfTEVBRDM6Ci0gICAgICBjYXNlIEJUX0xFQUQ0OgotICAgICAgY2FzZSBCVF9OT05BU0NJSToKLSAgICAgIGNhc2UgQlRfTk1TVFJUOgotI2lmZGVmIFhNTF9OUwotICAgICAgY2FzZSBCVF9DT0xPTjoKLSNlbmRpZgotICAgICAgY2FzZSBCVF9IRVg6Ci0gICAgICBjYXNlIEJUX0RJR0lUOgotICAgICAgY2FzZSBCVF9OQU1FOgotICAgICAgY2FzZSBCVF9NSU5VUzoKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLSAgLyogbm90IHJlYWNoZWQgKi8KLX0KLQotc3RhdGljIGludCBQVFJDQUxMCi1QUkVGSVgobmFtZU1hdGNoZXNBc2NpaSkoY29uc3QgRU5DT0RJTkcgKmVuYywgY29uc3QgY2hhciAqcHRyMSwKK1BSRUZJWChuYW1lTWF0Y2hlc0FzY2lpKShjb25zdCBFTkNPRElORyAqVU5VU0VEX1AoZW5jKSwgY29uc3QgY2hhciAqcHRyMSwKICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQxLCBjb25zdCBjaGFyICpwdHIyKQogewogICBmb3IgKDsgKnB0cjI7IHB0cjEgKz0gTUlOQlBDKGVuYyksIHB0cjIrKykgewotICAgIGlmIChwdHIxID09IGVuZDEpCi0gICAgICByZXR1cm4gMDsKKyAgICBpZiAoZW5kMSAtIHB0cjEgPCBNSU5CUEMoZW5jKSkgeworICAgICAgLyogVGhpcyBsaW5lIGNhbm5vdCBiZSBleGVjdXRlZC4gIFRoZSBpbmNvbWluZyBkYXRhIGhhcyBhbHJlYWR5CisgICAgICAgKiBiZWVuIHRva2VuaXplZCBvbmNlLCBzbyBpbmNvbXBsZXRlIGNoYXJhY3RlcnMgbGlrZSB0aGlzIGhhdmUKKyAgICAgICAqIGFscmVhZHkgYmVlbiBlbGltaW5hdGVkIGZyb20gdGhlIGlucHV0LiAgUmV0YWluaW5nIHRoZQorICAgICAgICogcGFyYW5vaWEgY2hlY2sgaXMgc3RpbGwgdmFsdWFibGUsIGhvd2V2ZXIuCisgICAgICAgKi8KKyAgICAgIHJldHVybiAwOyAvKiBMQ09WX0VYQ0xfTElORSAqLworICAgIH0KICAgICBpZiAoIUNIQVJfTUFUQ0hFUyhlbmMsIHB0cjEsICpwdHIyKSkKICAgICAgIHJldHVybiAwOwogICB9CkBAIC0xNzQ0LDcgKzE3MjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsCiAgICAgICAgICAgICAgICAgICAgICAgIFBPU0lUSU9OICpwb3MpCiB7Ci0gIHdoaWxlIChwdHIgPCBlbmQpIHsKKyAgd2hpbGUgKEhBU19DSEFSKGVuYywgcHRyLCBlbmQpKSB7CiAgICAgc3dpdGNoIChCWVRFX1RZUEUoZW5jLCBwdHIpKSB7CiAjZGVmaW5lIExFQURfQ0FTRShuKSBcCiAgICAgY2FzZSBCVF9MRUFEICMjIG46IFwKQEAgLTE3NjAsNyArMTc0MCw3IEBACiAgICAgY2FzZSBCVF9DUjoKICAgICAgIHBvcy0+bGluZU51bWJlcisrOwogICAgICAgcHRyICs9IE1JTkJQQyhlbmMpOwotICAgICAgaWYgKHB0ciAhPSBlbmQgJiYgQllURV9UWVBFKGVuYywgcHRyKSA9PSBCVF9MRikKKyAgICAgIGlmIChIQVNfQ0hBUihlbmMsIHB0ciwgZW5kKSAmJiBCWVRFX1RZUEUoZW5jLCBwdHIpID09IEJUX0xGKQogICAgICAgICBwdHIgKz0gTUlOQlBDKGVuYyk7CiAgICAgICBwb3MtPmNvbHVtbk51bWJlciA9IChYTUxfU2l6ZSktMTsKICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9leHBhdC94bWx0b2tfaW1wbC5oIGIvTW9kdWxlcy9leHBhdC94bWx0b2tfaW1wbC5oCmluZGV4IGRhMGVhNjAuLmE2NDIwZjQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvZXhwYXQveG1sdG9rX2ltcGwuaAorKysgYi9Nb2R1bGVzL2V4cGF0L3htbHRva19pbXBsLmgKQEAgLTEsNiArMSwzMyBAQAogLyoKLUNvcHlyaWdodCAoYykgMTk5OCwgMTk5OSBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKLVNlZSB0aGUgZmlsZSBDT1BZSU5HIGZvciBjb3B5aW5nIHBlcm1pc3Npb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX18gIF9fICAgICAgICAgICAgXworICAgICAgICAgICAgICAgICAgICAgICAgIF9fX1wgXC8gL18gX18gICBfXyBffCB8XworICAgICAgICAgICAgICAgICAgICAgICAgLyBfIFxcICAvfCAnXyBcIC8gX2AgfCBfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgfCAgX18vLyAgXHwgfF8pIHwgKF98IHwgfF8KKyAgICAgICAgICAgICAgICAgICAgICAgIFxfX18vXy9cX1wgLl9fLyBcX18sX3xcX198CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8X3wgWE1MIHBhcnNlcgorCisgICBDb3B5cmlnaHQgKGMpIDE5OTctMjAwMCBUaGFpIE9wZW4gU291cmNlIFNvZnR3YXJlIENlbnRlciBMdGQKKyAgIENvcHlyaWdodCAoYykgMjAwMC0yMDE3IEV4cGF0IGRldmVsb3BtZW50IHRlYW0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZToKKworICAgUGVybWlzc2lvbiBpcyAgaGVyZWJ5IGdyYW50ZWQsICBmcmVlIG9mIGNoYXJnZSwgIHRvIGFueSAgcGVyc29uIG9idGFpbmluZworICAgYSAgY29weSAgb2YgIHRoaXMgIHNvZnR3YXJlICAgYW5kICBhc3NvY2lhdGVkICBkb2N1bWVudGF0aW9uICBmaWxlcyAgKHRoZQorICAgIlNvZnR3YXJlIiksICB0byAgZGVhbCBpbiAgdGhlICBTb2Z0d2FyZSAgd2l0aG91dCByZXN0cmljdGlvbiwgIGluY2x1ZGluZworICAgd2l0aG91dCAgbGltaXRhdGlvbiB0aGUgIHJpZ2h0cyAgdG8gdXNlLCAgY29weSwgIG1vZGlmeSwgbWVyZ2UsICBwdWJsaXNoLAorICAgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdAorICAgcGVyc29ucyAgdG8gd2hvbSAgdGhlIFNvZnR3YXJlICBpcyAgZnVybmlzaGVkIHRvICBkbyBzbywgIHN1YmplY3QgdG8gIHRoZQorICAgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyAgIFRoZSBhYm92ZSBjb3B5cmlnaHQgIG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSAgc2hhbGwgYmUgaW5jbHVkZWQKKyAgIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgICBUSEUgIFNPRlRXQVJFICBJUyAgUFJPVklERUQgICJBUyAgSVMiLCAgV0lUSE9VVCAgV0FSUkFOVFkgIE9GICBBTlkgIEtJTkQsCisgICBFWFBSRVNTICBPUiBJTVBMSUVELCAgSU5DTFVESU5HICBCVVQgIE5PVCBMSU1JVEVEICBUTyAgVEhFIFdBUlJBTlRJRVMgIE9GCisgICBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOCisgICBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiAgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sCisgICBEQU1BR0VTIE9SICBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgIElOIEFOICBBQ1RJT04gT0YgQ09OVFJBQ1QsICBUT1JUIE9SCisgICBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFCisgICBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgogKi8KIAogZW51bSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2V4cGF0L3htbHRva19ucy5jIGIvTW9kdWxlcy9leHBhdC94bWx0b2tfbnMuYwppbmRleCBjM2I4OGZkLi4yM2QzMWU4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL2V4cGF0L3htbHRva19ucy5jCisrKyBiL01vZHVsZXMvZXhwYXQveG1sdG9rX25zLmMKQEAgLTEsOCArMSwzNSBAQAotLyogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5IFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAotICAgU2VlIHRoZSBmaWxlIENPUFlJTkcgZm9yIGNvcHlpbmcgcGVybWlzc2lvbi4KKy8qIFRoaXMgZmlsZSBpcyBpbmNsdWRlZCEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfXyAgX18gICAgICAgICAgICBfCisgICAgICAgICAgICAgICAgICAgICAgICAgX19fXCBcLyAvXyBfXyAgIF9fIF98IHxfCisgICAgICAgICAgICAgICAgICAgICAgICAvIF8gXFwgIC98ICdfIFwgLyBfYCB8IF9ffAorICAgICAgICAgICAgICAgICAgICAgICB8ICBfXy8vICBcfCB8XykgfCAoX3wgfCB8XworICAgICAgICAgICAgICAgICAgICAgICAgXF9fXy9fL1xfXCAuX18vIFxfXyxffFxfX3wKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxffCBYTUwgcGFyc2VyCisKKyAgIENvcHlyaWdodCAoYykgMTk5Ny0yMDAwIFRoYWkgT3BlbiBTb3VyY2UgU29mdHdhcmUgQ2VudGVyIEx0ZAorICAgQ29weXJpZ2h0IChjKSAyMDAwLTIwMTcgRXhwYXQgZGV2ZWxvcG1lbnQgdGVhbQorICAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlOgorCisgICBQZXJtaXNzaW9uIGlzICBoZXJlYnkgZ3JhbnRlZCwgIGZyZWUgb2YgY2hhcmdlLCAgdG8gYW55ICBwZXJzb24gb2J0YWluaW5nCisgICBhICBjb3B5ICBvZiAgdGhpcyAgc29mdHdhcmUgICBhbmQgIGFzc29jaWF0ZWQgIGRvY3VtZW50YXRpb24gIGZpbGVzICAodGhlCisgICAiU29mdHdhcmUiKSwgIHRvICBkZWFsIGluICB0aGUgIFNvZnR3YXJlICB3aXRob3V0IHJlc3RyaWN0aW9uLCAgaW5jbHVkaW5nCisgICB3aXRob3V0ICBsaW1pdGF0aW9uIHRoZSAgcmlnaHRzICB0byB1c2UsICBjb3B5LCAgbW9kaWZ5LCBtZXJnZSwgIHB1Ymxpc2gsCisgICBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0CisgICBwZXJzb25zICB0byB3aG9tICB0aGUgU29mdHdhcmUgIGlzICBmdXJuaXNoZWQgdG8gIGRvIHNvLCAgc3ViamVjdCB0byAgdGhlCisgICBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgVGhlIGFib3ZlIGNvcHlyaWdodCAgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlICBzaGFsbCBiZSBpbmNsdWRlZAorICAgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCisKKyAgIFRIRSAgU09GVFdBUkUgIElTICBQUk9WSURFRCAgIkFTICBJUyIsICBXSVRIT1VUICBXQVJSQU5UWSAgT0YgIEFOWSAgS0lORCwKKyAgIEVYUFJFU1MgIE9SIElNUExJRUQsICBJTkNMVURJTkcgIEJVVCAgTk9UIExJTUlURUQgIFRPICBUSEUgV0FSUkFOVElFUyAgT0YKKyAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4KKyAgIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SICBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwKKyAgIERBTUFHRVMgT1IgIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiAgSU4gQU4gIEFDVElPTiBPRiBDT05UUkFDVCwgIFRPUlQgT1IKKyAgIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUKKyAgIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCiAqLwogCi0vKiBUaGlzIGZpbGUgaXMgaW5jbHVkZWQhICovCiAjaWZkZWYgWE1MX1RPS19OU19DCiAKIGNvbnN0IEVOQ09ESU5HICoKZGlmZiAtLWdpdCBhL01vZHVsZXMvZ2Ntb2R1bGUuYyBiL01vZHVsZXMvZ2Ntb2R1bGUuYwppbmRleCA5MTZlNDgxLi43MDBjMWEzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2djbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9nY21vZHVsZS5jCkBAIC03NzEsMTAgKzc3MSw4IEBACiAgKiBnYXJiYWdlIGxpc3QgKGEgUHl0aG9uIGxpc3QpLCBlbHNlIG9ubHkgdGhlIG9iamVjdHMgaW4gZmluYWxpemVycyB3aXRoCiAgKiBfX2RlbF9fIG1ldGhvZHMgYXJlIGFwcGVuZGVkIHRvIGdhcmJhZ2UuICBBbGwgb2JqZWN0cyBpbiBmaW5hbGl6ZXJzIGFyZQogICogbWVyZ2VkIGludG8gdGhlIG9sZCBsaXN0IHJlZ2FyZGxlc3MuCi0gKiBSZXR1cm5zIDAgaWYgYWxsIE9LLCA8MCBvbiBlcnJvciAob3V0IG9mIG1lbW9yeSB0byBncm93IHRoZSBnYXJiYWdlIGxpc3QpLgotICogVGhlIGZpbmFsaXplcnMgbGlzdCBpcyBtYWRlIGVtcHR5IG9uIGEgc3VjY2Vzc2Z1bCByZXR1cm4uCiAgKi8KLXN0YXRpYyBpbnQKK3N0YXRpYyB2b2lkCiBoYW5kbGVfZmluYWxpemVycyhQeUdDX0hlYWQgKmZpbmFsaXplcnMsIFB5R0NfSGVhZCAqb2xkKQogewogICAgIFB5R0NfSGVhZCAqZ2MgPSBmaW5hbGl6ZXJzLT5nYy5nY19uZXh0OwpAQCAtNzg5LDEyICs3ODcsMTEgQEAKIAogICAgICAgICBpZiAoKGRlYnVnICYgREVCVUdfU0FWRUFMTCkgfHwgaGFzX2ZpbmFsaXplcihvcCkpIHsKICAgICAgICAgICAgIGlmIChQeUxpc3RfQXBwZW5kKGdhcmJhZ2UsIG9wKSA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCiAgICAgZ2NfbGlzdF9tZXJnZShmaW5hbGl6ZXJzLCBvbGQpOwotICAgIHJldHVybiAwOwogfQogCiAvKiBCcmVhayByZWZlcmVuY2UgY3ljbGVzIGJ5IGNsZWFyaW5nIHRoZSBjb250YWluZXJzIGludm9sdmVkLiAgVGhpcyBpcwpAQCAtMTAxMiw3ICsxMDA5LDcgQEAKICAgICAgKiByZWFjaGFibGUgbGlzdCBvZiBnYXJiYWdlLiAgVGhlIHByb2dyYW1tZXIgaGFzIHRvIGRlYWwgd2l0aAogICAgICAqIHRoaXMgaWYgdGhleSBpbnNpc3Qgb24gY3JlYXRpbmcgdGhpcyB0eXBlIG9mIHN0cnVjdHVyZS4KICAgICAgKi8KLSAgICAodm9pZCloYW5kbGVfZmluYWxpemVycygmZmluYWxpemVycywgb2xkKTsKKyAgICBoYW5kbGVfZmluYWxpemVycygmZmluYWxpemVycywgb2xkKTsKIAogICAgIC8qIENsZWFyIGZyZWUgbGlzdCBvbmx5IGR1cmluZyB0aGUgY29sbGVjdGlvbiBvZiB0aGUgaGlnaGVzdAogICAgICAqIGdlbmVyYXRpb24gKi8KQEAgLTE0MzYsOCArMTQzMywxMSBAQAogICAgIGlmIChjb2xsZWN0aW5nKQogICAgICAgICBuID0gMDsgLyogYWxyZWFkeSBjb2xsZWN0aW5nLCBkb24ndCBkbyBhbnl0aGluZyAqLwogICAgIGVsc2UgeworICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsdWUsICp0YjsKICAgICAgICAgY29sbGVjdGluZyA9IDE7CisgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWx1ZSwgJnRiKTsKICAgICAgICAgbiA9IGNvbGxlY3QoTlVNX0dFTkVSQVRJT05TIC0gMSk7CisgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWx1ZSwgdGIpOwogICAgICAgICBjb2xsZWN0aW5nID0gMDsKICAgICB9CiAKQEAgLTE1MzksNiArMTUzOSw3IEBACiB7CiAgICAgY29uc3Qgc2l6ZV90IGJhc2ljc2l6ZSA9IF9QeU9iamVjdF9WQVJfU0laRShQeV9UWVBFKG9wKSwgbml0ZW1zKTsKICAgICBQeUdDX0hlYWQgKmcgPSBBU19HQyhvcCk7CisgICAgYXNzZXJ0KCFJU19UUkFDS0VEKG9wKSk7CiAgICAgaWYgKGJhc2ljc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gc2l6ZW9mKFB5R0NfSGVhZCkpCiAgICAgICAgIHJldHVybiAoUHlWYXJPYmplY3QgKilQeUVycl9Ob01lbW9yeSgpOwogICAgIGcgPSAoUHlHQ19IZWFkICopUHlPYmplY3RfUkVBTExPQyhnLCAgc2l6ZW9mKFB5R0NfSGVhZCkgKyBiYXNpY3NpemUpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nZXRidWlsZGluZm8uYyBiL01vZHVsZXMvZ2V0YnVpbGRpbmZvLmMKaW5kZXggNzA2OWI2ZS4uNWY5NDFhMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9nZXRidWlsZGluZm8uYworKysgYi9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jCkBAIC0yMCw2NiArMjAsNDggQEAKICNlbmRpZgogI2VuZGlmCiAKLS8qIG9uIHVuaXgsIFNWTlZFUlNJT04gaXMgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuCi0gKiBvbiBXaW5kb3dzLCB0aGUgc3RyaW5nIGlzIGludGVycG9sYXRlZCB1c2luZwotICogc3Vid2NyZXYuZXhlCi0gKi8KLSNpZm5kZWYgU1ZOVkVSU0lPTgotI2RlZmluZSBTVk5WRVJTSU9OICIkV0NSQU5HRSQkV0NNT0RTP006JCIKLSNlbmRpZgotCiAvKiBYWFggT25seSB1bml4IGJ1aWxkIHByb2Nlc3MgaGFzIGJlZW4gdGVzdGVkICovCi0jaWZuZGVmIEhHVkVSU0lPTgotI2RlZmluZSBIR1ZFUlNJT04gIiIKKyNpZm5kZWYgR0lUVkVSU0lPTgorI2RlZmluZSBHSVRWRVJTSU9OICIiCiAjZW5kaWYKLSNpZm5kZWYgSEdUQUcKLSNkZWZpbmUgSEdUQUcgIiIKKyNpZm5kZWYgR0lUVEFHCisjZGVmaW5lIEdJVFRBRyAiIgogI2VuZGlmCi0jaWZuZGVmIEhHQlJBTkNICi0jZGVmaW5lIEhHQlJBTkNIICIiCisjaWZuZGVmIEdJVEJSQU5DSAorI2RlZmluZSBHSVRCUkFOQ0ggIiIKICNlbmRpZgogCiBjb25zdCBjaGFyICoKIFB5X0dldEJ1aWxkSW5mbyh2b2lkKQogewotICAgIHN0YXRpYyBjaGFyIGJ1aWxkaW5mb1s1MCArIHNpemVvZihIR1ZFUlNJT04pICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKChzaXplb2YoSEdUQUcpID4gc2l6ZW9mKEhHQlJBTkNIKSkgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKEhHVEFHKSA6IHNpemVvZihIR0JSQU5DSCkpXTsKLSAgICBjb25zdCBjaGFyICpyZXZpc2lvbiA9IF9QeV9oZ3ZlcnNpb24oKTsKKyAgICBzdGF0aWMgY2hhciBidWlsZGluZm9bNTAgKyBzaXplb2YoR0lUVkVSU0lPTikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAoKHNpemVvZihHSVRUQUcpID4gc2l6ZW9mKEdJVEJSQU5DSCkpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihHSVRUQUcpIDogc2l6ZW9mKEdJVEJSQU5DSCkpXTsKKyAgICBjb25zdCBjaGFyICpyZXZpc2lvbiA9IF9QeV9naXR2ZXJzaW9uKCk7CiAgICAgY29uc3QgY2hhciAqc2VwID0gKnJldmlzaW9uID8gIjoiIDogIiI7Ci0gICAgY29uc3QgY2hhciAqaGdpZCA9IF9QeV9oZ2lkZW50aWZpZXIoKTsKLSAgICBpZiAoISgqaGdpZCkpCi0gICAgICAgIGhnaWQgPSAiZGVmYXVsdCI7CisgICAgY29uc3QgY2hhciAqZ2l0aWQgPSBfUHlfZ2l0aWRlbnRpZmllcigpOworICAgIGlmICghKCpnaXRpZCkpCisgICAgICAgIGdpdGlkID0gImRlZmF1bHQiOwogICAgIFB5T1Nfc25wcmludGYoYnVpbGRpbmZvLCBzaXplb2YoYnVpbGRpbmZvKSwKLSAgICAgICAgICAgICAgICAgICIlcyVzJXMsICUuMjBzLCAlLjlzIiwgaGdpZCwgc2VwLCByZXZpc2lvbiwKKyAgICAgICAgICAgICAgICAgICIlcyVzJXMsICUuMjBzLCAlLjlzIiwgZ2l0aWQsIHNlcCwgcmV2aXNpb24sCiAgICAgICAgICAgICAgICAgICBEQVRFLCBUSU1FKTsKICAgICByZXR1cm4gYnVpbGRpbmZvOwogfQogCiBjb25zdCBjaGFyICoKLV9QeV9zdm52ZXJzaW9uKHZvaWQpCitfUHlfZ2l0dmVyc2lvbih2b2lkKQogewotICAgIC8qIHRoZSBmb2xsb3dpbmcgc3RyaW5nIGNhbiBiZSBtb2RpZmllZCBieSBzdWJ3Y3Jldi5leGUgKi8KLSAgICBzdGF0aWMgY29uc3QgY2hhciBzdm52ZXJzaW9uW10gPSBTVk5WRVJTSU9OOwotICAgIGlmIChzdm52ZXJzaW9uWzBdICE9ICckJykKLSAgICAgICAgcmV0dXJuIHN2bnZlcnNpb247IC8qIGl0IHdhcyBpbnRlcnBvbGF0ZWQsIG9yIHBhc3NlZCBvbiBjb21tYW5kIGxpbmUgKi8KLSAgICByZXR1cm4gIlVudmVyc2lvbmVkIGRpcmVjdG9yeSI7CisgICAgcmV0dXJuIEdJVFZFUlNJT047CiB9CiAKIGNvbnN0IGNoYXIgKgotX1B5X2hndmVyc2lvbih2b2lkKQorX1B5X2dpdGlkZW50aWZpZXIodm9pZCkKIHsKLSAgICByZXR1cm4gSEdWRVJTSU9OOwotfQotCi1jb25zdCBjaGFyICoKLV9QeV9oZ2lkZW50aWZpZXIodm9pZCkKLXsKLSAgICBjb25zdCBjaGFyICpoZ3RhZywgKmhnaWQ7Ci0gICAgaGd0YWcgPSBIR1RBRzsKLSAgICBpZiAoKCpoZ3RhZykgJiYgc3RyY21wKGhndGFnLCAidGlwIikgIT0gMCkKLSAgICAgICAgaGdpZCA9IGhndGFnOworICAgIGNvbnN0IGNoYXIgKmdpdHRhZywgKmdpdGlkOworICAgIGdpdHRhZyA9IEdJVFRBRzsKKyAgICBpZiAoKCpnaXR0YWcpICYmIHN0cmNtcChnaXR0YWcsICJ1bmRlZmluZWQiKSAhPSAwKQorICAgICAgICBnaXRpZCA9IGdpdHRhZzsKICAgICBlbHNlCi0gICAgICAgIGhnaWQgPSBIR0JSQU5DSDsKLSAgICByZXR1cm4gaGdpZDsKKyAgICAgICAgZ2l0aWQgPSBHSVRCUkFOQ0g7CisgICAgcmV0dXJuIGdpdGlkOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9nZXRwYXRoLmMgYi9Nb2R1bGVzL2dldHBhdGguYwppbmRleCBlOWQ5NjliLi4yN2YzMzgxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2dldHBhdGguYworKysgYi9Nb2R1bGVzL2dldHBhdGguYwpAQCAtMTA0LDE5ICsxMDQsMTUgQEAKICNkZWZpbmUgTEFORE1BUksgIm9zLnB5IgogI2VuZGlmCiAKLSNpZm5kZWYgSU5URVJOQUxESVIKLSNkZWZpbmUgSU5URVJOQUxESVIgImludGVybmFsIgotI2VuZGlmCi0KLSNpZm5kZWYgU1RETElCRElSCi0jZGVmaW5lIFNURExJQkRJUiAic3RkbGliIgotI2VuZGlmCi0KIHN0YXRpYyBjaGFyIHByZWZpeFtNQVhQQVRITEVOKzFdOwogc3RhdGljIGNoYXIgZXhlY19wcmVmaXhbTUFYUEFUSExFTisxXTsKIHN0YXRpYyBjaGFyIHByb2dwYXRoW01BWFBBVEhMRU4rMV07CiBzdGF0aWMgY2hhciAqbW9kdWxlX3NlYXJjaF9wYXRoID0gTlVMTDsKKyNpZmRlZiBBTkRST0lEX0xJQl9QWVRIT05fUEFUSAorc3RhdGljIGNoYXIgbGliX3B5dGhvbltdID0gQU5EUk9JRF9MSUJfUFlUSE9OX1BBVEg7CisjZWxzZQogc3RhdGljIGNoYXIgbGliX3B5dGhvbltdID0gImxpYi9weXRob24iIFZFUlNJT047CisjZW5kaWYKIAogc3RhdGljIHZvaWQKIHJlZHVjZShjaGFyICpkaXIpCkBAIC0yNjMsMTEgKzI1OSw4IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIC8vIEdPT0dMRShuYW56aGFuZyk6IEFsd2F5cyBzZXQgcHJlZml4IHdpdGggaGVybWV0aWMgZXhlY3V0YWJsZSBmdWxsIHBhdGguCi0gICAgc3RyY3B5KHByZWZpeCwgYXJndjBfcGF0aCk7Ci0gICAgcmV0dXJuIDE7Ci0KICAgICAvKiBDaGVjayB0byBzZWUgaWYgYXJndlswXSBpcyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5ICovCisgICAgc3RyY3B5KHByZWZpeCwgYXJndjBfcGF0aCk7CiAgICAgam9pbnBhdGgocHJlZml4LCAiTW9kdWxlcy9TZXR1cCIpOwogICAgIGlmIChpc2ZpbGUocHJlZml4KSkgewogICAgICAgICAvKiBDaGVjayBWUEFUSCB0byBzZWUgaWYgYXJndjBfcGF0aCBpcyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LiAqLwpAQCAtMzI1LDEzICszMTgsMTAgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgLy8gR09PR0xFKG5hbnpoYW5nKTogQWx3YXlzIHNldCBleGVjX3ByZWZpeCB3aXRoIGhlcm1ldGljIGV4ZWN1dGFibGUgZnVsbCBwYXRoLgotICAgIHN0cmNweShleGVjX3ByZWZpeCwgYXJndjBfcGF0aCk7Ci0gICAgcmV0dXJuIDE7Ci0KICAgICAvKiBDaGVjayB0byBzZWUgaWYgYXJndlswXSBpcyBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LiAicHlidWlsZGRpci50eHQiCiAgICAgICAgaXMgd3JpdHRlbiBieSBzZXR1cC5weSBhbmQgY29udGFpbnMgdGhlIHJlbGF0aXZlIHBhdGggdG8gdGhlIGxvY2F0aW9uCiAgICAgICAgb2Ygc2hhcmVkIGxpYnJhcnkgbW9kdWxlcy4gKi8KKyAgICBzdHJjcHkoZXhlY19wcmVmaXgsIGFyZ3YwX3BhdGgpOwogICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCAicHlidWlsZGRpci50eHQiKTsKICAgICBpZiAoaXNmaWxlKGV4ZWNfcHJlZml4KSkgewogICAgICAgRklMRSAqZiA9IGZvcGVuKGV4ZWNfcHJlZml4LCAiciIpOwpAQCAtMzc3LDYyICszNjcsMTkgQEAKIGNhbGN1bGF0ZV9wYXRoKHZvaWQpCiB7CiAgICAgZXh0ZXJuIGNoYXIgKlB5X0dldFByb2dyYW1OYW1lKHZvaWQpOworCiAgICAgc3RhdGljIGNoYXIgZGVsaW1pdGVyWzJdID0ge0RFTElNLCAnXDAnfTsKICAgICBzdGF0aWMgY2hhciBzZXBhcmF0b3JbMl0gPSB7U0VQLCAnXDAnfTsKICAgICBjaGFyICpweXRob25wYXRoID0gUFlUSE9OUEFUSDsKKyAgICBjaGFyICpydHB5cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOwogICAgIGNoYXIgKmhvbWUgPSBQeV9HZXRQeXRob25Ib21lKCk7Ci0gICAgLy8gV2UgaGF2ZSBvdmVycmlkZWQgYXJndlswXSB1c2luZyB0aGUgZnVsbCBwYXRoIHRvIHRoZSBoZXJtZXRpYyBQeXRob24KLSAgICAvLyBsYXVuY2hlciBpdHNlbGYuIEFuZCB0aGVuIFB5X1NldFByb2dyYW1OYW1lKGFyZ3ZbMF0pIHdhcyBpbnZva2VkIGF0Ci0gICAgLy8gbGF1bmNoZXJfbWFpbi5jcHAuIFRoZSBsYXVuY2hlcl9tYWluLmNwcCBoYXMgZ3VhcmFudGVlZCB0aGF0Ci0gICAgLy8gc3RybGVuKFB5X0dldFByb2dyYW1OYW1lKCkpIG11c3Qgbm90IGV4Y2VlZCBNQVhQQVRITEVOLgorICAgIGNoYXIgKnBhdGggPSBnZXRlbnYoIlBBVEgiKTsKICAgICBjaGFyICpwcm9nID0gUHlfR2V0UHJvZ3JhbU5hbWUoKTsKICAgICBjaGFyIGFyZ3YwX3BhdGhbTUFYUEFUSExFTisxXTsKLSAgICBjaGFyICpidWY7Ci0gICAgc2l6ZV90IGJ1ZnN6OwotCi0gICAgc3RybmNweShwcm9ncGF0aCwgcHJvZywgTUFYUEFUSExFTik7Ci0gICAgcHJvZ3BhdGhbTUFYUEFUSExFTl0gPSAnXDAnIC8qIEluIGNhc2Ugb2Ygbm8gTlVMLXRlcm1pbmF0aW9uLiAqLzsKLSAgICBzdHJuY3B5KGFyZ3YwX3BhdGgsIHByb2csIE1BWFBBVEhMRU4pOwotICAgIGFyZ3YwX3BhdGhbTUFYUEFUSExFTl0gPSAnXDAnIC8qIEluIGNhc2Ugb2Ygbm8gTlVMLXRlcm1pbmF0aW9uLiAqLzsKLQotICAgIC8vIFdlIGRvbid0IHJlZHVjZSB0aGUgcGF0aCBvZiBwcmVmaXgsIGFuZCBleGVjX3ByZWZpeC4KLSAgICBzZWFyY2hfZm9yX3ByZWZpeChhcmd2MF9wYXRoLCBob21lKTsKLSAgICBzZWFyY2hfZm9yX2V4ZWNfcHJlZml4KGFyZ3YwX3BhdGgsIGhvbWUpOwotCi0gICAgLy8gQ2FsY3VsYXRlIHNpemUgb2YgcmV0dXJuIGJ1ZmZlci4KLSAgICBidWZzeiA9IHN0cmxlbihwcm9nKSArIDEgKyBzaXplb2YoSU5URVJOQUxESVIpIC8qIDEgaXMgZm9yIFNFUCAqLzsKLSAgICBidWZzeiArPSBzdHJsZW4ocHJvZykgKyAxICsgc2l6ZW9mKElOVEVSTkFMRElSKSArIDEgKyBzaXplb2YoU1RETElCRElSKSAvKiAxIGlzIGZvciBTRVAgKi87Ci0KLSAgICAvKiBUaGlzIGlzIHRoZSBvbmx5IG1hbGxvYyBjYWxsIGluIHRoaXMgZmlsZSAqLwotICAgIGJ1ZiA9IChjaGFyICopUHlNZW1fTWFsbG9jKGJ1ZnN6KTsKLQotICAgIGlmIChidWYgPT0gTlVMTCkgewotICAgICAgICAvKiBXZSBjYW4ndCBleGl0LCBzbyBwcmludCBhIHdhcm5pbmcgYW5kIGxpbXAgYWxvbmcgKi8KLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJOb3QgZW5vdWdoIG1lbW9yeSBmb3IgZHluYW1pYyBQWVRIT05QQVRILlxuIik7Ci0gICAgICAgIGZwcmludGYoc3RkZXJyLCAiVXNpbmcgZGVmYXVsdCBzdGF0aWMgUFlUSE9OUEFUSC5cbiIpOwotICAgICAgICBleGl0KDEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGJ1ZlswXSA9ICdcMCc7Ci0gICAgICAgIHN0cmNhdChidWYsIHByZWZpeCk7Ci0gICAgICAgIHN0cmNhdChidWYsIHNlcGFyYXRvcik7Ci0gICAgICAgIHN0cmNhdChidWYsIElOVEVSTkFMRElSKTsKLSAgICAgICAgc3RyY2F0KGJ1ZiwgZGVsaW1pdGVyKTsKLQotICAgICAgICBzdHJjYXQoYnVmLCBwcmVmaXgpOwotICAgICAgICBzdHJjYXQoYnVmLCBzZXBhcmF0b3IpOwotICAgICAgICBzdHJjYXQoYnVmLCBJTlRFUk5BTERJUik7Ci0gICAgICAgIHN0cmNhdChidWYsIHNlcGFyYXRvcik7Ci0gICAgICAgIHN0cmNhdChidWYsIFNURExJQkRJUik7Ci0KLSAgICAgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gYnVmOwotICAgIH0KLSAgICAvLyBHT09HTEUobmFuemhhbmcpOiBEb24ndCBuZWVkIGFsbCB0aGUgY29kZSBiZWxvdyBmb3IgZW1iZWRkZWQgUHl0aG9uIGxhdW5jaGVyLgotICAgIHJldHVybjsKLQotICAgIGNoYXIgKnBhdGggPSBnZXRlbnYoIlBBVEgiKTsKLSAgICBjaGFyICpydHB5cGF0aCA9IFB5X0dFVEVOVigiUFlUSE9OUEFUSCIpOwogICAgIGNoYXIgemlwX3BhdGhbTUFYUEFUSExFTisxXTsKICAgICBpbnQgcGZvdW5kLCBlZm91bmQ7IC8qIDEgaWYgZm91bmQ7IC0xIGlmIGZvdW5kIGJ1aWxkIGRpcmVjdG9yeSAqLworICAgIGNoYXIgKmJ1ZjsKKyAgICBzaXplX3QgYnVmc3o7CiAgICAgc2l6ZV90IHByZWZpeHN6OwogICAgIGNoYXIgKmRlZnBhdGggPSBweXRob25wYXRoOwogI2lmZGVmIFdJVEhfTkVYVF9GUkFNRVdPUksKQEAgLTYyMCw4ICs1NjcsMTIgQEAKICAgICAgICAgZGVmcGF0aCA9IGRlbGltICsgMTsKICAgICB9CiAKKyNpZm5kZWYgQU5EUk9JRF9TS0lQX1pJUF9QQVRICiAgICAgYnVmc3ogKz0gc3RybGVuKHppcF9wYXRoKSArIDE7CisjZW5kaWYKKyNpZm5kZWYgQU5EUk9JRF9TS0lQX0VYRUNfUFJFRklYX1BBVEgKICAgICBidWZzeiArPSBzdHJsZW4oZXhlY19wcmVmaXgpICsgMTsKKyNlbmRpZgogCiAgICAgLyogVGhpcyBpcyB0aGUgb25seSBtYWxsb2MgY2FsbCBpbiB0aGlzIGZpbGUgKi8KICAgICBidWYgPSAoY2hhciAqKVB5TWVtX01hbGxvYyhidWZzeik7CkBAIC02NDIsOCArNTkzLDEwIEBACiAgICAgICAgICAgICBidWZbMF0gPSAnXDAnOwogCiAgICAgICAgIC8qIE5leHQgaXMgdGhlIGRlZmF1bHQgemlwIHBhdGggKi8KKyNpZm5kZWYgQU5EUk9JRF9TS0lQX1pJUF9QQVRICiAgICAgICAgIHN0cmNhdChidWYsIHppcF9wYXRoKTsKICAgICAgICAgc3RyY2F0KGJ1ZiwgZGVsaW1pdGVyKTsKKyNlbmRpZgogCiAgICAgICAgIC8qIE5leHQgZ29lcyBtZXJnZSBvZiBjb21waWxlLXRpbWUgJFBZVEhPTlBBVEggd2l0aAogICAgICAgICAgKiBkeW5hbWljYWxseSBsb2NhdGVkIHByZWZpeC4KQEAgLTY3MiwxMCArNjI1LDEyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZwYXRoID0gZGVsaW0gKyAxOwogICAgICAgICB9CisjaWZuZGVmIEFORFJPSURfU0tJUF9FWEVDX1BSRUZJWF9QQVRICiAgICAgICAgIHN0cmNhdChidWYsIGRlbGltaXRlcik7CiAKICAgICAgICAgLyogRmluYWxseSwgb24gZ29lcyB0aGUgZGlyZWN0b3J5IGZvciBkeW5hbWljLWxvYWQgbW9kdWxlcyAqLwogICAgICAgICBzdHJjYXQoYnVmLCBleGVjX3ByZWZpeCk7CisjZW5kaWYKIAogICAgICAgICAvKiBBbmQgcHVibGlzaCB0aGUgcmVzdWx0cyAqLwogICAgICAgICBtb2R1bGVfc2VhcmNoX3BhdGggPSBidWY7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jIGIvTW9kdWxlcy9pdGVydG9vbHNtb2R1bGUuYwppbmRleCBmOTE1MDFiLi40N2RiN2FmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL2l0ZXJ0b29sc21vZHVsZS5jCisrKyBiL01vZHVsZXMvaXRlcnRvb2xzbW9kdWxlLmMKQEAgLTcxLDEwICs3MSwzNyBAQAogICAgIHJldHVybiAwOwogfQogCitQeV9MT0NBTF9JTkxJTkUoaW50KQorZ3JvdXBieV9zdGVwKGdyb3VwYnlvYmplY3QgKmdibykKK3sKKyAgICBQeU9iamVjdCAqbmV3dmFsdWUsICpuZXdrZXksICpvbGR2YWx1ZTsKKworICAgIG5ld3ZhbHVlID0gUHlJdGVyX05leHQoZ2JvLT5pdCk7CisgICAgaWYgKG5ld3ZhbHVlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIGlmIChnYm8tPmtleWZ1bmMgPT0gUHlfTm9uZSkgeworICAgICAgICBuZXdrZXkgPSBuZXd2YWx1ZTsKKyAgICAgICAgUHlfSU5DUkVGKG5ld3ZhbHVlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBuZXdrZXkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdiby0+a2V5ZnVuYywgbmV3dmFsdWUsIE5VTEwpOworICAgICAgICBpZiAobmV3a2V5ID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuZXd2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBvbGR2YWx1ZSA9IGdiby0+Y3VycnZhbHVlOworICAgIGdiby0+Y3VycnZhbHVlID0gbmV3dmFsdWU7CisgICAgUHlfWFNFVFJFRihnYm8tPmN1cnJrZXksIG5ld2tleSk7CisgICAgUHlfWERFQ1JFRihvbGR2YWx1ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBQeU9iamVjdCAqCiBncm91cGJ5X25leHQoZ3JvdXBieW9iamVjdCAqZ2JvKQogewotICAgIFB5T2JqZWN0ICpuZXd2YWx1ZSwgKm5ld2tleSwgKnIsICpncm91cGVyLCAqdG1wOworICAgIFB5T2JqZWN0ICpyLCAqZ3JvdXBlcjsKIAogICAgIC8qIHNraXAgdG8gbmV4dCBpdGVyYXRpb24gZ3JvdXAgKi8KICAgICBmb3IgKDs7KSB7CkBAIC05MywzNSArMTIwLDExIEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBuZXd2YWx1ZSA9IFB5SXRlcl9OZXh0KGdiby0+aXQpOwotICAgICAgICBpZiAobmV3dmFsdWUgPT0gTlVMTCkKKyAgICAgICAgaWYgKGdyb3VwYnlfc3RlcChnYm8pIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgICAgIGlmIChnYm8tPmtleWZ1bmMgPT0gUHlfTm9uZSkgewotICAgICAgICAgICAgbmV3a2V5ID0gbmV3dmFsdWU7Ci0gICAgICAgICAgICBQeV9JTkNSRUYobmV3dmFsdWUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbmV3a2V5ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhnYm8tPmtleWZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ZhbHVlLCBOVUxMKTsKLSAgICAgICAgICAgIGlmIChuZXdrZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXd2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB0bXAgPSBnYm8tPmN1cnJrZXk7Ci0gICAgICAgIGdiby0+Y3VycmtleSA9IG5ld2tleTsKLSAgICAgICAgUHlfWERFQ1JFRih0bXApOwotCi0gICAgICAgIHRtcCA9IGdiby0+Y3VycnZhbHVlOwotICAgICAgICBnYm8tPmN1cnJ2YWx1ZSA9IG5ld3ZhbHVlOwotICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgfQotCiAgICAgUHlfSU5DUkVGKGdiby0+Y3VycmtleSk7Ci0gICAgdG1wID0gZ2JvLT50Z3RrZXk7Ci0gICAgZ2JvLT50Z3RrZXkgPSBnYm8tPmN1cnJrZXk7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYoZ2JvLT50Z3RrZXksIGdiby0+Y3VycmtleSk7CiAKICAgICBncm91cGVyID0gX2dyb3VwZXJfY3JlYXRlKGdibywgZ2JvLT50Z3RrZXkpOwogICAgIGlmIChncm91cGVyID09IE5VTEwpCkBAIC0yMjksMjkgKzIzMiwxMiBAQAogX2dyb3VwZXJfbmV4dChfZ3JvdXBlcm9iamVjdCAqaWdvKQogewogICAgIGdyb3VwYnlvYmplY3QgKmdibyA9IChncm91cGJ5b2JqZWN0ICopaWdvLT5wYXJlbnQ7Ci0gICAgUHlPYmplY3QgKm5ld3ZhbHVlLCAqbmV3a2V5LCAqcjsKKyAgICBQeU9iamVjdCAqcjsKICAgICBpbnQgcmNtcDsKIAogICAgIGlmIChnYm8tPmN1cnJ2YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIG5ld3ZhbHVlID0gUHlJdGVyX05leHQoZ2JvLT5pdCk7Ci0gICAgICAgIGlmIChuZXd2YWx1ZSA9PSBOVUxMKQorICAgICAgICBpZiAoZ3JvdXBieV9zdGVwKGdibykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICAgICAgaWYgKGdiby0+a2V5ZnVuYyA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICAgICBuZXdrZXkgPSBuZXd2YWx1ZTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihuZXd2YWx1ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuZXdrZXkgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGdiby0+a2V5ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3dmFsdWUsIE5VTEwpOwotICAgICAgICAgICAgaWYgKG5ld2tleSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ld3ZhbHVlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGFzc2VydChnYm8tPmN1cnJrZXkgPT0gTlVMTCk7Ci0gICAgICAgIGdiby0+Y3VycmtleSA9IG5ld2tleTsKLSAgICAgICAgZ2JvLT5jdXJydmFsdWUgPSBuZXd2YWx1ZTsKICAgICB9CiAKICAgICBhc3NlcnQoZ2JvLT5jdXJya2V5ICE9IE5VTEwpOwpAQCAtMTcwOCwzMyArMTY5NCwzNyBAQAogewogICAgIFB5T2JqZWN0ICppdGVtOwogCi0gICAgaWYgKGx6LT5zb3VyY2UgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxyZWFkeSBzdG9wcGVkICovCi0KLSAgICBpZiAobHotPmFjdGl2ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IFB5SXRlcl9OZXh0KGx6LT5zb3VyY2UpOwotICAgICAgICBpZiAoaXRlcmFibGUgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfQ0xFQVIobHotPnNvdXJjZSk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG5vIG1vcmUgaW5wdXQgc291cmNlcyAqLwotICAgICAgICB9Ci0gICAgICAgIGx6LT5hY3RpdmUgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKLSAgICAgICAgUHlfREVDUkVGKGl0ZXJhYmxlKTsKKyAgICAvKiBsei0+c291cmNlIGlzIHRoZSBpdGVyYXRvciBvZiBpdGVyYWJsZXMuIElmIGl0J3MgTlVMTCwgd2UndmUgYWxyZWFkeQorICAgICAqIGNvbnN1bWVkIHRoZW0gYWxsLiBsei0+YWN0aXZlIGlzIHRoZSBjdXJyZW50IGl0ZXJhdG9yLiBJZiBpdCdzIE5VTEwsCisgICAgICogd2Ugc2hvdWxkIGdyYWIgYSBuZXcgb25lIGZyb20gbHotPnNvdXJjZS4gKi8KKyAgICB3aGlsZSAobHotPnNvdXJjZSAhPSBOVUxMKSB7CiAgICAgICAgIGlmIChsei0+YWN0aXZlID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0NMRUFSKGx6LT5zb3VyY2UpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCBub3QgaXRlcmFibGUgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IFB5SXRlcl9OZXh0KGx6LT5zb3VyY2UpOworICAgICAgICAgICAgaWYgKGl0ZXJhYmxlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9DTEVBUihsei0+c291cmNlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAvKiBubyBtb3JlIGlucHV0IHNvdXJjZXMgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGx6LT5hY3RpdmUgPSBQeU9iamVjdF9HZXRJdGVyKGl0ZXJhYmxlKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyYWJsZSk7CisgICAgICAgICAgICBpZiAobHotPmFjdGl2ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfQ0xFQVIobHotPnNvdXJjZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgLyogaW5wdXQgbm90IGl0ZXJhYmxlICovCisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaXRlbSA9IFB5SXRlcl9OZXh0KGx6LT5hY3RpdmUpOworICAgICAgICBpZiAoaXRlbSAhPSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgIC8qIGlucHV0IHJhaXNlZCBhbiBleGNlcHRpb24gKi8KKyAgICAgICAgfQorICAgICAgICAvKiBsei0+YWN0aXZlIGlzIGNvbnN1bWVkLCB0cnkgd2l0aCB0aGUgbmV4dCBpdGVyYWJsZS4gKi8KKyAgICAgICAgUHlfQ0xFQVIobHotPmFjdGl2ZSk7CiAgICAgfQotICAgIGl0ZW0gPSBQeUl0ZXJfTmV4dChsei0+YWN0aXZlKTsKLSAgICBpZiAoaXRlbSAhPSBOVUxMKQotICAgICAgICByZXR1cm4gaXRlbTsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TdG9wSXRlcmF0aW9uKSkKLSAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgcmFpc2VkIGFuIGV4Y2VwdGlvbiAqLwotICAgIH0KLSAgICBQeV9DTEVBUihsei0+YWN0aXZlKTsKLSAgICByZXR1cm4gY2hhaW5fbmV4dChseik7ICAgICAgICAgICAgICAgICAgICAgIC8qIHJlY3Vyc2UgYW5kIHVzZSBuZXh0IGFjdGl2ZSAqLworICAgIC8qIEV2ZXJ5dGhpbmcgaGFkIGJlZW4gY29uc3VtZWQgYWxyZWFkeS4gKi8KKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKGNoYWluX2RvYywKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWFpbi5jIGIvTW9kdWxlcy9tYWluLmMKaW5kZXggNDQyMTdjNi4uYTZlZGY4MiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9tYWluLmMKKysrIGIvTW9kdWxlcy9tYWluLmMKQEAgLTEwLDYgKzEwLDkgQEAKICNlbmRpZgogCiAjaWYgZGVmaW5lZChNU19XSU5ET1dTKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pCisjaWZkZWYgSEFWRV9JT19ICisjaW5jbHVkZSA8aW8uaD4KKyNlbmRpZgogI2lmZGVmIEhBVkVfRkNOVExfSAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjZW5kaWYKQEAgLTU5LDYgKzYyLDggQEAKIC8qIExvbmcgdXNhZ2UgbWVzc2FnZSwgc3BsaXQgaW50byBwYXJ0cyA8IDUxMiBieXRlcyAqLwogc3RhdGljIGNoYXIgKnVzYWdlXzEgPSAiXAogT3B0aW9ucyBhbmQgYXJndW1lbnRzIChhbmQgY29ycmVzcG9uZGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMpOlxuXAorLWIgICAgIDogaXNzdWUgd2FybmluZ3MgYWJvdXQgY29tcGFyaW5nIGJ5dGVhcnJheSB3aXRoIHVuaWNvZGVcblwKKyAgICAgICAgICgtYmI6IGlzc3VlIGVycm9ycylcblwKIC1CICAgICA6IGRvbid0IHdyaXRlIC5weVtjb10gZmlsZXMgb24gaW1wb3J0OyBhbHNvIFBZVEhPTkRPTlRXUklURUJZVEVDT0RFPXhcblwKIC1jIGNtZCA6IHByb2dyYW0gcGFzc2VkIGluIGFzIHN0cmluZyAodGVybWluYXRlcyBvcHRpb24gbGlzdClcblwKIC1kICAgICA6IGRlYnVnIG91dHB1dCBmcm9tIHBhcnNlcjsgYWxzbyBQWVRIT05ERUJVRz14XG5cCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21ha2VzZXR1cCBiL01vZHVsZXMvbWFrZXNldHVwCmluZGV4IDFiZmZjYmYuLmRiNWM0N2UgMTAwNzU1Ci0tLSBhL01vZHVsZXMvbWFrZXNldHVwCisrKyBiL01vZHVsZXMvbWFrZXNldHVwCkBAIC0yNjEsNyArMjYxLDcgQEAKIAlmb3IgbW9kIGluICRNT0RTCiAJZG8KIAkJRVhUREVDTFM9IiR7RVhUREVDTFN9ZXh0ZXJuIHZvaWQgaW5pdCRtb2Qodm9pZCk7JE5MIgotCQlJTklUQklUUz0iJHtJTklUQklUU30Je1wiJG1vZFwiLCBpbml0JG1vZH0sJE5MIgorCQlJTklUQklUUz0iJHtJTklUQklUU30gICAge1wiJG1vZFwiLCBpbml0JG1vZH0sJE5MIgogCWRvbmUKIAogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL21hdGhtb2R1bGUuYyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCmluZGV4IDAxZWQzNmIuLjY3MzU0YTcgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWF0aG1vZHVsZS5jCisrKyBiL01vZHVsZXMvbWF0aG1vZHVsZS5jCkBAIC0xMTg4LDcgKzExODgsNyBAQAogICAgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImRPOmxkZXhwIiwgJngsICZvZXhwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlMb25nX0NoZWNrKG9leHApIHx8IFB5SW50X0NoZWNrKG9leHApKSB7CisgICAgaWYgKF9QeUFueUludF9DaGVjayhvZXhwKSkgewogICAgICAgICAvKiBvbiBvdmVyZmxvdywgcmVwbGFjZSBleHBvbmVudCB3aXRoIGVpdGhlciBMT05HX01BWAogICAgICAgICAgICBvciBMT05HX01JTiwgZGVwZW5kaW5nIG9uIHRoZSBzaWduLiAqLwogICAgICAgICBleHAgPSBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3cob2V4cCwgJm92ZXJmbG93KTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvbWQ1bW9kdWxlLmMgYi9Nb2R1bGVzL21kNW1vZHVsZS5jCmluZGV4IDEwM2RhMTQuLmRkOTBhMjIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvbWQ1bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9tZDVtb2R1bGUuYwpAQCAtMjM2LDcgKzIzNiw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0IE1ENXR5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIl9tZDUubWQ1IiwgICAgICAgICAgICAgICAgICAgLyp0cF9uYW1lKi8KLSAgICBzaXplb2YobWQ1b2JqZWN0KSwgICAgICAgICAgICAvKnRwX3NpemUqLworICAgIHNpemVvZihtZDVvYmplY3QpLCAgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KICAgICAvKiBtZXRob2RzICovCiAgICAgKGRlc3RydWN0b3IpbWQ1X2RlYWxsb2MsICAvKnRwX2RlYWxsb2MqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9tbWFwbW9kdWxlLmMgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwppbmRleCAwZGM0ODA1Li4wMmIzMWNhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL21tYXBtb2R1bGUuYworKysgYi9Nb2R1bGVzL21tYXBtb2R1bGUuYwpAQCAtNzg0LDEwICs3ODQsMTAgQEAKICAgICBlbHNlIGlmIChQeVNsaWNlX0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuOwogCi0gICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeCgoUHlTbGljZU9iamVjdCAqKWl0ZW0sIHNlbGYtPnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbikgPCAwKSB7CisgICAgICAgIGlmIChfUHlTbGljZV9VbnBhY2soaXRlbSwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgc2xpY2VsZW4gPSBfUHlTbGljZV9BZGp1c3RJbmRpY2VzKHNlbGYtPnNpemUsICZzdGFydCwgJnN0b3AsIHN0ZXApOwogCiAgICAgICAgIGlmIChzbGljZWxlbiA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKQEAgLTgxOCwyNCArODE4LDYgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1tbWFwX2NvbmNhdChtbWFwX29iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJiKQotewotICAgIENIRUNLX1ZBTElEKE5VTEwpOwotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIm1tYXBzIGRvbid0IHN1cHBvcnQgY29uY2F0ZW5hdGlvbiIpOwotICAgIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgUHlPYmplY3QgKgotbW1hcF9yZXBlYXQobW1hcF9vYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgbikKLXsKLSAgICBDSEVDS19WQUxJRChOVUxMKTsKLSAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICJtbWFwcyBkb24ndCBzdXBwb3J0IHJlcGVhdCBvcGVyYXRpb24iKTsKLSAgICByZXR1cm4gTlVMTDsKLX0KLQogc3RhdGljIGludAogbW1hcF9hc3Nfc2xpY2UobW1hcF9vYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaWxvdywgUHlfc3NpemVfdCBpaGlnaCwgUHlPYmplY3QgKnYpCiB7CkBAIC05MzksMTEgKzkyMSwxMCBAQAogICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW47CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0ICopaXRlbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnNpemUsICZzdGFydCwgJnN0b3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RlcCwgJnNsaWNlbGVuKSA8IDApIHsKKyAgICAgICAgaWYgKF9QeVNsaWNlX1VucGFjayhpdGVtLCAmc3RhcnQsICZzdG9wLCAmc3RlcCkgPCAwKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KKyAgICAgICAgc2xpY2VsZW4gPSBfUHlTbGljZV9BZGp1c3RJbmRpY2VzKHNlbGYtPnNpemUsICZzdGFydCwgJnN0b3AsIHN0ZXApOwogICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAibW1hcCBvYmplY3QgZG9lc24ndCBzdXBwb3J0IHNsaWNlIGRlbGV0aW9uIik7CkBAIC05OTQsOSArOTc1LDkgQEAKIAogc3RhdGljIFB5U2VxdWVuY2VNZXRob2RzIG1tYXBfYXNfc2VxdWVuY2UgPSB7CiAgICAgKGxlbmZ1bmMpbW1hcF9sZW5ndGgsICAgICAgICAgICAgICAgICAgICAgIC8qc3FfbGVuZ3RoKi8KLSAgICAoYmluYXJ5ZnVuYyltbWFwX2NvbmNhdCwgICAgICAgICAgICAgICAgICAgLypzcV9jb25jYXQqLwotICAgIChzc2l6ZWFyZ2Z1bmMpbW1hcF9yZXBlYXQsICAgICAgICAgICAgICAgICAvKnNxX3JlcGVhdCovCi0gICAgKHNzaXplYXJnZnVuYyltbWFwX2l0ZW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9pdGVtKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLypzcV9jb25jYXQqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnNxX3JlcGVhdCovCisgICAgKHNzaXplYXJnZnVuYyltbWFwX2l0ZW0sICAgICAgICAgICAgICAgICAgIC8qc3FfaXRlbSovCiAgICAgKHNzaXplc3NpemVhcmdmdW5jKW1tYXBfc2xpY2UsICAgICAgICAgICAgIC8qc3Ffc2xpY2UqLwogICAgIChzc2l6ZW9iamFyZ3Byb2MpbW1hcF9hc3NfaXRlbSwgICAgICAgICAgICAvKnNxX2Fzc19pdGVtKi8KICAgICAoc3NpemVzc2l6ZW9iamFyZ3Byb2MpbW1hcF9hc3Nfc2xpY2UsICAgICAgLypzcV9hc3Nfc2xpY2UqLwpAQCAtMTA0NSw3ICsxMDI2LDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgbW1hcF9vYmplY3RfdHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAibW1hcC5tbWFwIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YobW1hcF9vYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NpemUgKi8KKyAgICBzaXplb2YobW1hcF9vYmplY3QpLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAvKiBtZXRob2RzICovCiAgICAgKGRlc3RydWN0b3IpIG1tYXBfb2JqZWN0X2RlYWxsb2MsICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCkBAIC0xMTE1LDcgKzEwOTYsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAobWFwX3NpemUgPCAwKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBtYXBwZWQgbGVuZ3RoIG11c3QgYmUgcG9zdGlpdmUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgbWFwcGVkIGxlbmd0aCBtdXN0IGJlIHBvc2l0aXZlIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBpZiAob2Zmc2V0IDwgMCkgewpAQCAtMTMwMSw3ICsxMjgyLDcgQEAKIAogICAgIGlmIChtYXBfc2l6ZSA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IG1hcHBlZCBsZW5ndGggbXVzdCBiZSBwb3N0aWl2ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgIm1lbW9yeSBtYXBwZWQgbGVuZ3RoIG11c3QgYmUgcG9zaXRpdmUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChvZmZzZXQgPCAwKSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMgYi9Nb2R1bGVzL29zc2F1ZGlvZGV2LmMKaW5kZXggMjg0Y2M2MS4uZjgzM2JiMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9vc3NhdWRpb2Rldi5jCisrKyBiL01vZHVsZXMvb3NzYXVkaW9kZXYuYwpAQCAtODQyLDcgKzg0Miw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0IE9TU0F1ZGlvVHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJvc3NhdWRpb2Rldi5vc3NfYXVkaW9fZGV2aWNlIiwgLyp0cF9uYW1lKi8KLSAgICBzaXplb2Yob3NzX2F1ZGlvX3QpLCAgICAgICAgLyp0cF9zaXplKi8KKyAgICBzaXplb2Yob3NzX2F1ZGlvX3QpLCAgICAgICAgLyp0cF9iYXNpY3NpemUqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKnRwX2l0ZW1zaXplKi8KICAgICAvKiBtZXRob2RzICovCiAgICAgKGRlc3RydWN0b3Ipb3NzX2RlYWxsb2MsICAgIC8qdHBfZGVhbGxvYyovCkBAIC04NTYsNyArODU2LDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgT1NTTWl4ZXJUeXBlID0gewogICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgIm9zc2F1ZGlvZGV2Lm9zc19taXhlcl9kZXZpY2UiLCAvKnRwX25hbWUqLwotICAgIHNpemVvZihvc3NfbWl4ZXJfdCksICAgICAgICAgICAgLyp0cF9zaXplKi8KKyAgICBzaXplb2Yob3NzX21peGVyX3QpLCAgICAgICAgICAgIC8qdHBfYmFzaWNzaXplKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICAoZGVzdHJ1Y3Rvcilvc3NfbWl4ZXJfZGVhbGxvYywgIC8qdHBfZGVhbGxvYyovCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jIGIvTW9kdWxlcy9wYXJzZXJtb2R1bGUuYwppbmRleCAyNDM0YzY3Li5mY2M2MThkIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3BhcnNlcm1vZHVsZS5jCisrKyBiL01vZHVsZXMvcGFyc2VybW9kdWxlLmMKQEAgLTEyMSwxMCArMTIxLDEwIEBACiAgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewogICAgICAgICAgICAgKHZvaWQpIGFkZGVsZW0ocmVzdWx0LCAwLCBQeUludF9Gcm9tTG9uZyhUWVBFKG4pKSk7CiAgICAgICAgICAgICAodm9pZCkgYWRkZWxlbShyZXN1bHQsIDEsIFB5U3RyaW5nX0Zyb21TdHJpbmcoU1RSKG4pKSk7Ci0gICAgICAgICAgICBpZiAobGluZW5vID09IDEpCisgICAgICAgICAgICBpZiAobGluZW5vKQogICAgICAgICAgICAgICAgICh2b2lkKSBhZGRlbGVtKHJlc3VsdCwgMiwgUHlJbnRfRnJvbUxvbmcobi0+bl9saW5lbm8pKTsKLSAgICAgICAgICAgIGlmIChjb2xfb2Zmc2V0ID09IDEpCi0gICAgICAgICAgICAgICAgKHZvaWQpIGFkZGVsZW0ocmVzdWx0LCAzLCBQeUludF9Gcm9tTG9uZyhuLT5uX2NvbF9vZmZzZXQpKTsKKyAgICAgICAgICAgIGlmIChjb2xfb2Zmc2V0KQorICAgICAgICAgICAgICAgICh2b2lkKSBhZGRlbGVtKHJlc3VsdCwgMiArIGxpbmVubywgUHlJbnRfRnJvbUxvbmcobi0+bl9jb2xfb2Zmc2V0KSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIChyZXN1bHQpOwogICAgIH0KQEAgLTc0MCw2ICs3NDAsOSBAQAogICAgIFB5X3NzaXplX3QgaTsKICAgICBpbnQgIGVycjsKIAorICAgIGlmIChsZW4gPCAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBmb3IgKGkgPSAxOyBpIDwgbGVuOyArK2kpIHsKICAgICAgICAgLyogZWxlbSBtdXN0IGFsd2F5cyBiZSBhIHNlcXVlbmNlLCBob3dldmVyIHNpbXBsZSAqLwogICAgICAgICBQeU9iamVjdCogZWxlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbSh0dXBsZSwgaSk7CkBAIC03NjYsNyArNzY5LDcgQEAKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChwYXJzZXJfZXJyb3IsIGVycik7CiAgICAgICAgICAgICBQeV9YREVDUkVGKGVycik7CiAgICAgICAgICAgICBQeV9YREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGlmIChJU1RFUk1JTkFMKHR5cGUpKSB7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5T2JqZWN0X1NpemUoZWxlbSk7CkBAIC03NzQsNDAgKzc3Nyw1MyBAQAogCiAgICAgICAgICAgICBpZiAoKGxlbiAhPSAyKSAmJiAobGVuICE9IDMpKSB7CiAgICAgICAgICAgICAgICAgZXJyX3N0cmluZygidGVybWluYWwgbm9kZXMgbXVzdCBoYXZlIDIgb3IgMyBlbnRyaWVzIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgdGVtcCA9IFB5U2VxdWVuY2VfR2V0SXRlbShlbGVtLCAxKTsKLSAgICAgICAgICAgIGlmICh0ZW1wID09IE5VTEwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFQeVN0cmluZ19DaGVjayh0ZW1wKSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChwYXJzZXJfZXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWNvbmQgaXRlbSBpbiB0ZXJtaW5hbCBub2RlIG11c3QgYmUgYSBzdHJpbmcsIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGZvdW5kICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh0ZW1wKS0+dHBfbmFtZSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOwotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChsZW4gPT0gMykgewogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpvID0gUHlTZXF1ZW5jZV9HZXRJdGVtKGVsZW0sIDIpOwotICAgICAgICAgICAgICAgIGlmIChvICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKFB5SW50X0NoZWNrKG8pKQotICAgICAgICAgICAgICAgICAgICAgICAgKmxpbmVfbnVtID0gUHlJbnRfQVNfTE9ORyhvKTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGlyZCBpdGVtIGluIHRlcm1pbmFsIG5vZGUgbXVzdCBiZSBhbiIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGludGVnZXIsIGZvdW5kICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHRlbXApLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvKTsKKyAgICAgICAgICAgICAgICBpZiAobyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKFB5SW50X0NoZWNrKG8pKQorICAgICAgICAgICAgICAgICAgICAqbGluZV9udW0gPSBQeUludF9BU19MT05HKG8pOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQocGFyc2VyX2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoaXJkIGl0ZW0gaW4gdGVybWluYWwgbm9kZSBtdXN0IGJlIGFuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBpbnRlZ2VyLCBmb3VuZCAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHRlbXApLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG8pOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxlbiA9IFB5U3RyaW5nX0dFVF9TSVpFKHRlbXApICsgMTsKICAgICAgICAgICAgIHN0cm4gPSAoY2hhciAqKVB5T2JqZWN0X01BTExPQyhsZW4pOwotICAgICAgICAgICAgaWYgKHN0cm4gIT0gTlVMTCkKLSAgICAgICAgICAgICAgICAodm9pZCkgbWVtY3B5KHN0cm4sIFB5U3RyaW5nX0FTX1NUUklORyh0ZW1wKSwgbGVuKTsKKyAgICAgICAgICAgIGlmIChzdHJuID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodGVtcCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAodm9pZCkgbWVtY3B5KHN0cm4sIFB5U3RyaW5nX0FTX1NUUklORyh0ZW1wKSwgbGVuKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih0ZW1wKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmICghSVNOT05URVJNSU5BTCh0eXBlKSkgewpAQCAtODE1LDE4ICs4MzEsMjEgQEAKICAgICAgICAgICAgICAqICBJdCBoYXMgdG8gYmUgb25lIG9yIHRoZSBvdGhlcjsgdGhpcyBpcyBhbiBlcnJvci4KICAgICAgICAgICAgICAqICBSYWlzZSBhbiBleGNlcHRpb24uCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICplcnIgPSBQeV9CdWlsZFZhbHVlKCJvcyIsIGVsZW0sICJ1bmtub3duIG5vZGUgdHlwZS4iKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICplcnIgPSBQeV9CdWlsZFZhbHVlKCJPcyIsIGVsZW0sICJ1bmtub3duIG5vZGUgdHlwZS4iKTsKICAgICAgICAgICAgIFB5RXJyX1NldE9iamVjdChwYXJzZXJfZXJyb3IsIGVycik7CiAgICAgICAgICAgICBQeV9YREVDUkVGKGVycik7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGVyciA9IFB5Tm9kZV9BZGRDaGlsZChyb290LCB0eXBlLCBzdHJuLCAqbGluZV9udW0sIDApOwogICAgICAgICBpZiAoZXJyID09IEVfTk9NRU0pIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKICAgICAgICAgICAgIFB5T2JqZWN0X0ZSRUUoc3Rybik7Ci0gICAgICAgICAgICByZXR1cm4gKG5vZGUgKikgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBpZiAoZXJyID09IEVfT1ZFUkZMT1cpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKICAgICAgICAgICAgIFB5T2JqZWN0X0ZSRUUoc3Rybik7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgbnVtYmVyIG9mIGNoaWxkIG5vZGVzIik7CkBAIC04MzcsMTQgKzg1NiwxNCBAQAogICAgICAgICAgICAgbm9kZSogbmV3X2NoaWxkID0gQ0hJTEQocm9vdCwgaSAtIDEpOwogCiAgICAgICAgICAgICBpZiAobmV3X2NoaWxkICE9IGJ1aWxkX25vZGVfY2hpbGRyZW4oZWxlbSwgbmV3X2NoaWxkLCBsaW5lX251bSkpIHsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGVsZW0pOwotICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gTkVXTElORSkgeyAgICAgLyogSXQncyB0cnVlOiAgd2UgaW5jcmVtZW50IHRoZSAgICAgKi8KICAgICAgICAgICAgICsrKCpsaW5lX251bSk7ICAgICAgICAgICAgICAvKiBsaW5lIG51bWJlciAqYWZ0ZXIqIHRoZSBuZXdsaW5lISAqLwogICAgICAgICB9Ci0gICAgICAgIFB5X1hERUNSRUYoZWxlbSk7CisgICAgICAgIFB5X0RFQ1JFRihlbGVtKTsKICAgICB9CiAgICAgcmV0dXJuIHJvb3Q7CiB9CkBAIC04NzksOCArODk4LDIzIEBACiAKICAgICAgICAgaWYgKG51bSA9PSBlbmNvZGluZ19kZWNsKSB7CiAgICAgICAgICAgICBlbmNvZGluZyA9IFB5U2VxdWVuY2VfR2V0SXRlbSh0dXBsZSwgMik7CisgICAgICAgICAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhwYXJzZXJfZXJyb3IsICJtaXNzZWQgZW5jb2RpbmciKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghUHlTdHJpbmdfQ2hlY2soZW5jb2RpbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KHBhcnNlcl9lcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kaW5nIG11c3QgYmUgYSBzdHJpbmcsIGZvdW5kICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZW5jb2RpbmcpLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZW5jb2RpbmcpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogdHVwbGUgaXNuJ3QgYm9ycm93ZWQgYW55bW9yZSBoZXJlLCBuZWVkIHRvIERFQ1JFRiAqLwogICAgICAgICAgICAgdHVwbGUgPSBQeVNlcXVlbmNlX0dldFNsaWNlKHR1cGxlLCAwLCAyKTsKKyAgICAgICAgICAgIGlmICh0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGVuY29kaW5nKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXMgPSBQeU5vZGVfTmV3KG51bSk7CiAgICAgICAgIGlmIChyZXMgIT0gTlVMTCkgewpAQCAtODkyLDE5ICs5MjYsMjcgQEAKICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICAgICAgICAgICAgICBsZW4gPSBQeVN0cmluZ19HRVRfU0laRShlbmNvZGluZykgKyAxOwogICAgICAgICAgICAgICAgIHJlcy0+bl9zdHIgPSAoY2hhciAqKVB5T2JqZWN0X01BTExPQyhsZW4pOwotICAgICAgICAgICAgICAgIGlmIChyZXMtPm5fc3RyICE9IE5VTEwpCi0gICAgICAgICAgICAgICAgICAgICh2b2lkKSBtZW1jcHkocmVzLT5uX3N0ciwgUHlTdHJpbmdfQVNfU1RSSU5HKGVuY29kaW5nKSwgbGVuKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZW5jb2RpbmcpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih0dXBsZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlcy0+bl9zdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeU5vZGVfRnJlZShyZXMpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZW5jb2RpbmcpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgKHZvaWQpIG1lbWNweShyZXMtPm5fc3RyLCBQeVN0cmluZ19BU19TVFJJTkcoZW5jb2RpbmcpLCBsZW4pOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGlmIChlbmNvZGluZyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZW5jb2RpbmcpOworICAgICAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKKyAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgLyogIFRoZSB0dXBsZSBpcyBpbGxlZ2FsIC0tIGlmIHRoZSBudW1iZXIgaXMgbmVpdGhlciBURVJNSU5BTCBub3IKICAgICAgICAgICogIE5PTlRFUk1JTkFMLCB3ZSBjYW4ndCB1c2UgaXQuICBOb3Qgc3VyZSB0aGUgaW1wbGVtZW50YXRpb24KICAgICAgICAgICogIGFsbG93cyB0aGlzIGNvbmRpdGlvbiwgYnV0IHRoZSBBUEkgZG9lc24ndCBwcmVjbHVkZSBpdC4KICAgICAgICAgICovCi0gICAgICAgIFB5T2JqZWN0ICplcnIgPSBQeV9CdWlsZFZhbHVlKCJvcyIsIHR1cGxlLAorICAgICAgICBQeU9iamVjdCAqZXJyID0gUHlfQnVpbGRWYWx1ZSgiT3MiLCB0dXBsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIklsbGVnYWwgY29tcG9uZW50IHR1cGxlLiIpOwogICAgICAgICBQeUVycl9TZXRPYmplY3QocGFyc2VyX2Vycm9yLCBlcnIpOwogICAgICAgICBQeV9YREVDUkVGKGVycik7CkBAIC0zMzcxLDcgKzM0MTMsNiBAQAogICAgICAgICAgICAgcmVzdWx0ID0gUHlfQnVpbGRWYWx1ZSgiTyhPKSIsIHBpY2tsZV9jb25zdHJ1Y3RvciwgdHVwbGUpOwogICAgICAgICAgICAgUHlfREVDUkVGKHR1cGxlKTsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoZW1wdHlfZGljdCk7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKICAgICB9CiAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMgYi9Nb2R1bGVzL3Bvc2l4bW9kdWxlLmMKaW5kZXggZTczODA1Zi4uN2ExYTY5NCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9wb3NpeG1vZHVsZS5jCisrKyBiL01vZHVsZXMvcG9zaXhtb2R1bGUuYwpAQCAtNjUsNiArNjUsMTEgQEAKICNpbmNsdWRlICJvc2RlZnMuaCIKICNlbmRpZgogCisjaWZkZWYgSEFWRV9TWVNfU1lTTUFDUk9TX0gKKy8qIEdOVSBDIExpYnJhcnk6IG1ham9yKCksIG1pbm9yKCksIG1ha2VkZXYoKSAqLworI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KKyNlbmRpZgorCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2VuZGlmIC8qIEhBVkVfU1lTX1RZUEVTX0ggKi8KQEAgLTk3OSw2ICs5ODQsNyBAQAogICAgIHdjaGFyX3QgX25ld19wYXRoW01BWF9QQVRIKzFdLCAqbmV3X3BhdGggPSBfbmV3X3BhdGg7CiAgICAgaW50IHJlc3VsdDsKICAgICB3Y2hhcl90IGVudls0XSA9IEwiPXg6IjsKKyAgICBpbnQgaXNfdW5jX2xpa2VfcGF0aDsKIAogICAgIGlmKCFTZXRDdXJyZW50RGlyZWN0b3J5VyhwYXRoKSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtOTk3LDE1ICsxMDAzLDE1IEBACiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHdjc25jbXAobmV3X3BhdGgsIEwiXFxcXCIsIDIpID09IDAgfHwKLSAgICAgICAgd2NzbmNtcChuZXdfcGF0aCwgTCIvLyIsIDIpID09IDApCi0gICAgICAgIC8qIFVOQyBwYXRoLCBub3RoaW5nIHRvIGRvLiAqLwotICAgICAgICByZXR1cm4gVFJVRTsKLSAgICBlbnZbMV0gPSBuZXdfcGF0aFswXTsKLSAgICByZXN1bHQgPSBTZXRFbnZpcm9ubWVudFZhcmlhYmxlVyhlbnYsIG5ld19wYXRoKTsKKyAgICBpc191bmNfbGlrZV9wYXRoID0gKHdjc25jbXAobmV3X3BhdGgsIEwiXFxcXCIsIDIpID09IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdjc25jbXAobmV3X3BhdGgsIEwiLy8iLCAyKSA9PSAwKTsKKyAgICBpZiAoIWlzX3VuY19saWtlX3BhdGgpIHsKKyAgICAgICAgZW52WzFdID0gbmV3X3BhdGhbMF07CisgICAgICAgIHJlc3VsdCA9IFNldEVudmlyb25tZW50VmFyaWFibGVXKGVudiwgbmV3X3BhdGgpOworICAgIH0KICAgICBpZiAobmV3X3BhdGggIT0gX25ld19wYXRoKQogICAgICAgICBmcmVlKG5ld19wYXRoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXN1bHQgPyBUUlVFIDogRkFMU0U7CiB9CiAjZW5kaWYKIApAQCAtMjM4MCw3ICsyMzg2LDcgQEAKICAgICBpZiAobGVuID4gMCkgewogICAgICAgICBjaGFyIGNoID0gbmFtZWJ1ZltsZW4tMV07CiAgICAgICAgIGlmIChjaCAhPSBTRVAgJiYgY2ggIT0gQUxUU0VQICYmIGNoICE9ICc6JykKLSAgICAgICAgICAgIG5hbWVidWZbbGVuKytdID0gJy8nOworICAgICAgICAgICAgbmFtZWJ1ZltsZW4rK10gPSBTRVA7CiAgICAgICAgIHN0cmNweShuYW1lYnVmICsgbGVuLCAiKi4qIik7CiAgICAgfQogCkBAIC0zMzE1LDYgKzMzMjEsMTIgQEAKICAgICAgICAgewogICAgICAgICAgICAgZ290byBmYWlsXzI7CiAgICAgICAgIH0KKyAgICAgICAgLyogU2VhcmNoIGZyb20gaW5kZXggMSBiZWNhdXNlIG9uIFdpbmRvd3Mgc3RhcnRpbmcgJz0nIGlzIGFsbG93ZWQgZm9yCisgICAgICAgICAgIGRlZmluaW5nIGhpZGRlbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuICovCisgICAgICAgIGlmICgqayA9PSAnXDAnIHx8IHN0cmNocihrICsgMSwgJz0nKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImlsbGVnYWwgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSIpOworICAgICAgICAgICAgZ290byBmYWlsXzI7CisgICAgICAgIH0KIAogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAgICAgICAgIC8qIE9taXQgUHNldWRvLUVudiBWYXJzIHRoYXQgV291bGQgQ29uZnVzZSBQcm9ncmFtcyBpZiBQYXNzZWQgT24gKi8KQEAgLTM1NTAsNiArMzU2MiwxMiBAQAogICAgICAgICB7CiAgICAgICAgICAgICBnb3RvIGZhaWxfMjsKICAgICAgICAgfQorICAgICAgICAvKiBTZWFyY2ggZnJvbSBpbmRleCAxIGJlY2F1c2Ugb24gV2luZG93cyBzdGFydGluZyAnPScgaXMgYWxsb3dlZCBmb3IKKyAgICAgICAgICAgZGVmaW5pbmcgaGlkZGVuIGVudmlyb25tZW50IHZhcmlhYmxlcy4gKi8KKyAgICAgICAgaWYgKCprID09ICdcMCcgfHwgc3RyY2hyKGsgKyAxLCAnPScpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaWxsZWdhbCBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIik7CisgICAgICAgICAgICBnb3RvIGZhaWxfMjsKKyAgICAgICAgfQogICAgICAgICBsZW4gPSBQeVN0cmluZ19TaXplKGtleSkgKyBQeVN0cmluZ19TaXplKHZhbCkgKyAyOwogICAgICAgICBwID0gUHlNZW1fTkVXKGNoYXIsIGxlbik7CiAgICAgICAgIGlmIChwID09IE5VTEwpIHsKQEAgLTM3ODMsNiArMzgwMSwxMiBAQAogICAgICAgICB7CiAgICAgICAgICAgICBnb3RvIGZhaWxfMjsKICAgICAgICAgfQorICAgICAgICAvKiBTZWFyY2ggZnJvbSBpbmRleCAxIGJlY2F1c2Ugb24gV2luZG93cyBzdGFydGluZyAnPScgaXMgYWxsb3dlZCBmb3IKKyAgICAgICAgICAgZGVmaW5pbmcgaGlkZGVuIGVudmlyb25tZW50IHZhcmlhYmxlcy4gKi8KKyAgICAgICAgaWYgKCprID09ICdcMCcgfHwgc3RyY2hyKGsgKyAxLCAnPScpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaWxsZWdhbCBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIik7CisgICAgICAgICAgICBnb3RvIGZhaWxfMjsKKyAgICAgICAgfQogICAgICAgICBsZW4gPSBQeVN0cmluZ19TaXplKGtleSkgKyBQeVN0cmluZ19TaXplKHZhbCkgKyAyOwogICAgICAgICBwID0gUHlNZW1fTkVXKGNoYXIsIGxlbik7CiAgICAgICAgIGlmIChwID09IE5VTEwpIHsKQEAgLTM5MTMsNyArMzkzNyw3IEBACiAjaWZkZWYgSEFWRV9TVFJPUFRTX0gKICNpbmNsdWRlIDxzdHJvcHRzLmg+CiAjZW5kaWYKLSNlbmRpZiAvKiBkZWZpbmVkKEhBVkVfT1BFTlBUWSkgfHwgZGVmaW5lZChIQVZFX0ZPUktQVFkpIHx8IGRlZmluZWQoSEFWRV9ERVZfUFRNWCAqLworI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9PUEVOUFRZKSB8fCBkZWZpbmVkKEhBVkVfRk9SS1BUWSkgfHwgZGVmaW5lZChIQVZFX0RFVl9QVE1YKSAqLwogCiAjaWYgZGVmaW5lZChIQVZFX09QRU5QVFkpIHx8IGRlZmluZWQoSEFWRV9fR0VUUFRZKSB8fCBkZWZpbmVkKEhBVkVfREVWX1BUTVgpCiBQeURvY19TVFJWQVIocG9zaXhfb3BlbnB0eV9fZG9jX18sCkBAIC02MDc3LDcgKzYxMDEsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHBvc2l4X3NldGdyb3VwcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmdyb3VwcykKIHsKLSAgICBpbnQgaSwgbGVuOworICAgIFB5X3NzaXplX3QgaSwgbGVuOwogICAgIGdpZF90IGdyb3VwbGlzdFtNQVhfR1JPVVBTXTsKIAogICAgIGlmICghUHlTZXF1ZW5jZV9DaGVjayhncm91cHMpKSB7CkBAIC02MDg1LDYgKzYxMDksOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbGVuID0gUHlTZXF1ZW5jZV9TaXplKGdyb3Vwcyk7CisgICAgaWYgKGxlbiA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChsZW4gPiBNQVhfR1JPVVBTKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidG9vIG1hbnkgZ3JvdXBzIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjA5NCw3ICs2MTIxLDcgQEAKICAgICAgICAgZWxlbSA9IFB5U2VxdWVuY2VfR2V0SXRlbShncm91cHMsIGkpOwogICAgICAgICBpZiAoIWVsZW0pCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgaWYgKCFQeUludF9DaGVjayhlbGVtKSAmJiAhUHlMb25nX0NoZWNrKGVsZW0pKSB7CisgICAgICAgIGlmICghX1B5QW55SW50X0NoZWNrKGVsZW0pKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJncm91cHMgbXVzdCBiZSBpbnRlZ2VycyIpOwogICAgICAgICAgICAgUHlfREVDUkVGKGVsZW0pOwpAQCAtNzE3Niw2ICs3MjAzLDEzIEBACiAgICAgfSBlbHNlIHsKICNlbmRpZgogCisgICAgLyogU2VhcmNoIGZyb20gaW5kZXggMSBiZWNhdXNlIG9uIFdpbmRvd3Mgc3RhcnRpbmcgJz0nIGlzIGFsbG93ZWQgZm9yCisgICAgICAgZGVmaW5pbmcgaGlkZGVuIGVudmlyb25tZW50IHZhcmlhYmxlcy4gKi8KKyAgICBpZiAoKnMxID09ICdcMCcgfHwgc3RyY2hyKHMxICsgMSwgJz0nKSAhPSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaWxsZWdhbCBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIC8qIFhYWCBUaGlzIGNhbiBsZWFrIG1lbW9yeSAtLSBub3QgZWFzeSB0byBmaXggOi0oICovCiAgICAgbGVuID0gc3RybGVuKHMxKSArIHN0cmxlbihzMikgKyAyOwogI2lmZGVmIE1TX1dJTkRPV1MKZGlmZiAtLWdpdCBhL01vZHVsZXMvcHlleHBhdC5jIGIvTW9kdWxlcy9weWV4cGF0LmMKaW5kZXggYTk1YzM4OC4uMmI0ZDMxMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9weWV4cGF0LmMKKysrIGIvTW9kdWxlcy9weWV4cGF0LmMKQEAgLTEzMTIsMTAgKzEzMTIsMTQgQEAKICAgICBlbHNlIHsKICAgICAgICAgc2VsZi0+aXRzZWxmID0gWE1MX1BhcnNlckNyZWF0ZShlbmNvZGluZyk7CiAgICAgfQotI2lmICgoWE1MX01BSk9SX1ZFUlNJT04gPj0gMikgJiYgKFhNTF9NSU5PUl9WRVJTSU9OID49IDEpKSB8fCBkZWZpbmVkKFhNTF9IQVNfU0VUX0hBU0hfU0FMVCkKLSAgICAvKiBUaGlzIGZlYXR1cmUgd2FzIGFkZGVkIHVwc3RyZWFtIGluIGxpYmV4cGF0IDIuMS4wLiAgT3VyIGV4cGF0IGNvcHkKLSAgICAgKiBoYXMgYSBiYWNrcG9ydCBvZiB0aGlzIGZlYXR1cmUgd2hlcmUgd2UgYWxzbyBkZWZpbmUgWE1MX0hBU19TRVRfSEFTSF9TQUxUCi0gICAgICogdG8gaW5kaWNhdGUgdGhhdCB3ZSBjYW4gc3RpbGwgdXNlIGl0LiAqLworICAgIGlmIChzZWxmLT5pdHNlbGYgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlhNTF9QYXJzZXJDcmVhdGUgZmFpbGVkIik7CisgICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorI2lmIFhNTF9DT01CSU5FRF9WRVJTSU9OID49IDIwMTAwCisgICAgLyogVGhpcyBmZWF0dXJlIHdhcyBhZGRlZCB1cHN0cmVhbSBpbiBsaWJleHBhdCAyLjEuMC4gKi8KICAgICBYTUxfU2V0SGFzaFNhbHQoc2VsZi0+aXRzZWxmLAogICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylfUHlfSGFzaFNlY3JldC5wcmVmaXgpOwogI2VuZGlmCkBAIC0xMzI2LDEyICsxMzMwLDYgQEAKICNlbHNlCiAgICAgUHlPYmplY3RfR0NfSW5pdChzZWxmKTsKICNlbmRpZgotICAgIGlmIChzZWxmLT5pdHNlbGYgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgIlhNTF9QYXJzZXJDcmVhdGUgZmFpbGVkIik7Ci0gICAgICAgIFB5X0RFQ1JFRihzZWxmKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIFhNTF9TZXRVc2VyRGF0YShzZWxmLT5pdHNlbGYsICh2b2lkICopc2VsZik7CiAjaWZkZWYgUHlfVVNJTkdfVU5JQ09ERQogICAgIFhNTF9TZXRVbmtub3duRW5jb2RpbmdIYW5kbGVyKHNlbGYtPml0c2VsZiwKZGlmZiAtLWdpdCBhL01vZHVsZXMvcmVhZGxpbmUuYyBiL01vZHVsZXMvcmVhZGxpbmUuYwppbmRleCBhZDU5MDNjLi4xZTEwZGQ3IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3JlYWRsaW5lLmMKKysrIGIvTW9kdWxlcy9yZWFkbGluZS5jCkBAIC0xMTYxLDE1ICsxMTYxLDE3IEBACiAgICAgaWYgKG4gPiAwKSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKmxpbmU7CiAgICAgICAgIGludCBsZW5ndGggPSBfcHlfZ2V0X2hpc3RvcnlfbGVuZ3RoKCk7Ci0gICAgICAgIGlmIChsZW5ndGggPiAwKQorICAgICAgICBpZiAobGVuZ3RoID4gMCkgeworICAgICAgICAgICAgSElTVF9FTlRSWSAqaGlzdF9lbnQ7CiAjaWZkZWYgX19BUFBMRV9fCiAgICAgICAgICAgICBpZiAodXNpbmdfbGliZWRpdF9lbXVsYXRpb24pIHsKICAgICAgICAgICAgICAgICAvKiBoYW5kbGUgb2xkZXIgMC1iYXNlZCBvciBuZXdlciAxLWJhc2VkIGluZGV4aW5nICovCi0gICAgICAgICAgICAgICAgbGluZSA9IGhpc3RvcnlfZ2V0KGxlbmd0aCArIGxpYmVkaXRfaGlzdG9yeV9zdGFydCAtIDEpLT5saW5lOworICAgICAgICAgICAgICAgIGhpc3RfZW50ID0gaGlzdG9yeV9nZXQobGVuZ3RoICsgbGliZWRpdF9oaXN0b3J5X3N0YXJ0IC0gMSk7CiAgICAgICAgICAgICB9IGVsc2UKICNlbmRpZiAvKiBfX0FQUExFX18gKi8KLSAgICAgICAgICAgIGxpbmUgPSBoaXN0b3J5X2dldChsZW5ndGgpLT5saW5lOwotICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaGlzdF9lbnQgPSBoaXN0b3J5X2dldChsZW5ndGgpOworICAgICAgICAgICAgbGluZSA9IGhpc3RfZW50ID8gaGlzdF9lbnQtPmxpbmUgOiAiIjsKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBsaW5lID0gIiI7CiAgICAgICAgIGlmIChzdHJjbXAocCwgbGluZSkpCiAgICAgICAgICAgICBhZGRfaGlzdG9yeShwKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMgYi9Nb2R1bGVzL3NlbGVjdG1vZHVsZS5jCmluZGV4IDZlYTMwOGEuLjFkZWM2YTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2VsZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zZWxlY3Rtb2R1bGUuYwpAQCAtMjg5LDkgKzI4OSw5IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHJldCA9IFB5VHVwbGVfUGFjaygzLCBpZmRsaXN0LCBvZmRsaXN0LCBlZmRsaXN0KTsKIAotICAgICAgICBQeV9ERUNSRUYoaWZkbGlzdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihvZmRsaXN0KTsKLSAgICAgICAgUHlfREVDUkVGKGVmZGxpc3QpOworICAgICAgICBQeV9YREVDUkVGKGlmZGxpc3QpOworICAgICAgICBQeV9YREVDUkVGKG9mZGxpc3QpOworICAgICAgICBQeV9YREVDUkVGKGVmZGxpc3QpOwogICAgIH0KIAogICBmaW5hbGx5OgpAQCAtNTMwLDYgKzUzMCwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCisgICAgLyogT24gc29tZSBPU2VzLCB0eXBpY2FsbHkgQlNELWJhc2VkIG9uZXMsIHRoZSB0aW1lb3V0IHBhcmFtZXRlciBvZiB0aGUKKyAgICAgICBwb2xsKCkgc3lzY2FsbCwgd2hlbiBuZWdhdGl2ZSwgbXVzdCBiZSBleGFjdGx5IElORlRJTSwgd2hlcmUgZGVmaW5lZCwKKyAgICAgICBvciAtMS4gU2VlIGlzc3VlIDMxMzM0LiAqLworICAgIGlmICh0aW1lb3V0IDwgMCkgeworI2lmZGVmIElORlRJTQorICAgICAgICB0aW1lb3V0ID0gSU5GVElNOworI2Vsc2UKKyAgICAgICAgdGltZW91dCA9IC0xOworI2VuZGlmCisgICAgfQorCiAgICAgLyogQXZvaWQgY29uY3VycmVudCBwb2xsKCkgaW52b2NhdGlvbiwgaXNzdWUgODg2NSAqLwogICAgIGlmIChzZWxmLT5wb2xsX3J1bm5pbmcpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKQEAgLTEyMTAsNDMgKzEyMjEsNzYgQEAKIAogI2lmIChTSVpFT0ZfVUlOVFBUUl9UICE9IFNJWkVPRl9WT0lEX1ApCiAjICAgZXJyb3IgdWludHB0cl90IGRvZXMgbm90IG1hdGNoIHZvaWQgKiEKLSNlbGlmIChTSVpFT0ZfVUlOVFBUUl9UID09IFNJWkVPRl9MT05HX0xPTkcpCisjZWxpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiAoU0laRU9GX1VJTlRQVFJfVCA9PSBTSVpFT0ZfTE9OR19MT05HKQogIyAgIGRlZmluZSBUX1VJTlRQVFJUICAgICAgICAgVF9VTE9OR0xPTkcKICMgICBkZWZpbmUgVF9JTlRQVFJUICAgICAgICAgIFRfTE9OR0xPTkcKLSMgICBkZWZpbmUgUHlMb25nX0FzVWludHB0cl90IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKICMgICBkZWZpbmUgVUlOVFBUUlRfRk1UX1VOSVQgICJLIgogIyAgIGRlZmluZSBJTlRQVFJUX0ZNVF9VTklUICAgIkwiCiAjZWxpZiAoU0laRU9GX1VJTlRQVFJfVCA9PSBTSVpFT0ZfTE9ORykKICMgICBkZWZpbmUgVF9VSU5UUFRSVCAgICAgICAgIFRfVUxPTkcKICMgICBkZWZpbmUgVF9JTlRQVFJUICAgICAgICAgIFRfTE9ORwotIyAgIGRlZmluZSBQeUxvbmdfQXNVaW50cHRyX3QgUHlMb25nX0FzVW5zaWduZWRMb25nCiAjICAgZGVmaW5lIFVJTlRQVFJUX0ZNVF9VTklUICAiayIKICMgICBkZWZpbmUgSU5UUFRSVF9GTVRfVU5JVCAgICJsIgogI2VsaWYgKFNJWkVPRl9VSU5UUFRSX1QgPT0gU0laRU9GX0lOVCkKICMgICBkZWZpbmUgVF9VSU5UUFRSVCAgICAgICAgIFRfVUlOVAogIyAgIGRlZmluZSBUX0lOVFBUUlQgICAgICAgICAgVF9JTlQKLSMgICBkZWZpbmUgUHlMb25nX0FzVWludHB0cl90IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZwogIyAgIGRlZmluZSBVSU5UUFRSVF9GTVRfVU5JVCAgIkkiCiAjICAgZGVmaW5lIElOVFBUUlRfRk1UX1VOSVQgICAiaSIKICNlbHNlCiAjICAgZXJyb3IgdWludHB0cl90IGRvZXMgbm90IG1hdGNoIGludCwgbG9uZywgb3IgbG9uZyBsb25nIQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKEhBVkVfTE9OR19MT05HKSAmJiBTSVpFT0ZfTE9OR19MT05HID09IDgKKyMgICBkZWZpbmUgVF9JTlQ2NCAgICAgICAgICBUX0xPTkdMT05HCisjICAgZGVmaW5lIElOVDY0X0ZNVF9VTklUICAgIkwiCisjZWxpZiBTSVpFT0ZfTE9ORyA9PSA4CisjICAgZGVmaW5lIFRfSU5UNjQgICAgICAgICAgVF9MT05HCisjICAgZGVmaW5lIElOVDY0X0ZNVF9VTklUICAgImwiCisjZWxpZiBTSVpFT0ZfSU5UID09IDgKKyMgICBkZWZpbmUgVF9JTlQ2NCAgICAgICAgICBUX0lOVAorIyAgIGRlZmluZSBJTlQ2NF9GTVRfVU5JVCAgICJpIgorI2Vsc2UKKyMgICBkZWZpbmUgSU5UNjRfRk1UX1VOSVQgICAiXyIKKyNlbmRpZgorCisjaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgU0laRU9GX0xPTkdfTE9ORyA9PSA0CisjICAgZGVmaW5lIFRfVUlOVDMyICAgICAgICAgVF9VTE9OR0xPTkcKKyMgICBkZWZpbmUgVUlOVDMyX0ZNVF9VTklUICAiSyIKKyNlbGlmIFNJWkVPRl9MT05HID09IDQKKyMgICBkZWZpbmUgVF9VSU5UMzIgICAgICAgICBUX1VMT05HCisjICAgZGVmaW5lIFVJTlQzMl9GTVRfVU5JVCAgImsiCisjZWxpZiBTSVpFT0ZfSU5UID09IDQKKyMgICBkZWZpbmUgVF9VSU5UMzIgICAgICAgICBUX1VJTlQKKyMgICBkZWZpbmUgVUlOVDMyX0ZNVF9VTklUICAiSSIKKyNlbHNlCisjICAgZGVmaW5lIFVJTlQzMl9GTVRfVU5JVCAgIl8iCisjZW5kaWYKKwogLyoKICAqIGtldmVudCBpcyBub3Qgc3RhbmRhcmQgYW5kIGl0cyBtZW1iZXJzIHZhcnkgYWNyb3NzIEJTRHMuCiAgKi8KLSNpZiAhZGVmaW5lZChfX09wZW5CU0RfXykKLSMgICBkZWZpbmUgSURFTlRfVFlQRQlUX1VJTlRQVFJUCi0jICAgZGVmaW5lIElERU5UX0NBU1QJUHlfaW50cHRyX3QKLSMgICBkZWZpbmUgREFUQV9UWVBFCVRfSU5UUFRSVAotIyAgIGRlZmluZSBEQVRBX0ZNVF9VTklUIElOVFBUUlRfRk1UX1VOSVQKLSMgICBkZWZpbmUgSURFTlRfQXNUeXBlCVB5TG9uZ19Bc1VpbnRwdHJfdAorI2lmZGVmIF9fTmV0QlNEX18KKyMgICBkZWZpbmUgRklMVEVSX1RZUEUgICAgICBUX1VJTlQzMgorIyAgIGRlZmluZSBGSUxURVJfRk1UX1VOSVQgIFVJTlQzMl9GTVRfVU5JVAorIyAgIGRlZmluZSBGTEFHU19UWVBFICAgICAgIFRfVUlOVDMyCisjICAgZGVmaW5lIEZMQUdTX0ZNVF9VTklUICAgVUlOVDMyX0ZNVF9VTklUCisjICAgZGVmaW5lIEZGTEFHU19UWVBFICAgICAgVF9VSU5UMzIKKyMgICBkZWZpbmUgRkZMQUdTX0ZNVF9VTklUICBVSU5UMzJfRk1UX1VOSVQKICNlbHNlCi0jICAgZGVmaW5lIElERU5UX1RZUEUJVF9VSU5UCi0jICAgZGVmaW5lIElERU5UX0NBU1QJaW50Ci0jICAgZGVmaW5lIERBVEFfVFlQRQlUX0lOVAotIyAgIGRlZmluZSBEQVRBX0ZNVF9VTklUICJpIgotIyAgIGRlZmluZSBJREVOVF9Bc1R5cGUJUHlMb25nX0FzVW5zaWduZWRMb25nCisjICAgZGVmaW5lIEZJTFRFUl9UWVBFICAgICAgVF9TSE9SVAorIyAgIGRlZmluZSBGSUxURVJfRk1UX1VOSVQgICJoIgorIyAgIGRlZmluZSBGTEFHU19UWVBFICAgICAgIFRfVVNIT1JUCisjICAgZGVmaW5lIEZMQUdTX0ZNVF9VTklUICAgIkgiCisjICAgZGVmaW5lIEZGTEFHU19UWVBFICAgICAgVF9VSU5UCisjICAgZGVmaW5lIEZGTEFHU19GTVRfVU5JVCAgIkkiCisjZW5kaWYKKworI2lmIGRlZmluZWQoX19OZXRCU0RfXykgfHwgZGVmaW5lZChfX09wZW5CU0RfXykKKyMgICBkZWZpbmUgREFUQV9UWVBFICAgICAgICBUX0lOVDY0CisjICAgZGVmaW5lIERBVEFfRk1UX1VOSVQgICAgSU5UNjRfRk1UX1VOSVQKKyNlbHNlCisjICAgZGVmaW5lIERBVEFfVFlQRSAgICAgICAgVF9JTlRQVFJUCisjICAgZGVmaW5lIERBVEFfRk1UX1VOSVQgICAgSU5UUFRSVF9GTVRfVU5JVAogI2VuZGlmCiAKIC8qIFVuZm9ydHVuYXRlbHksIHdlIGNhbid0IHN0b3JlIHB5dGhvbiBvYmplY3RzIGluIHVkYXRhLCBiZWNhdXNlCkBAIC0xMjU2LDkgKzEzMDAsOSBAQAogCiAjZGVmaW5lIEtRX09GRih4KSBvZmZzZXRvZihrcXVldWVfZXZlbnRfT2JqZWN0LCB4KQogc3RhdGljIHN0cnVjdCBQeU1lbWJlckRlZiBrcXVldWVfZXZlbnRfbWVtYmVyc1tdID0gewotICAgIHsiaWRlbnQiLCAgICAgICAgICAgSURFTlRfVFlQRSwgICAgIEtRX09GRihlLmlkZW50KX0sCi0gICAgeyJmaWx0ZXIiLCAgICAgICAgICBUX1NIT1JULCAgICAgICAgS1FfT0ZGKGUuZmlsdGVyKX0sCi0gICAgeyJmbGFncyIsICAgICAgICAgICBUX1VTSE9SVCwgICAgICAgS1FfT0ZGKGUuZmxhZ3MpfSwKKyAgICB7ImlkZW50IiwgICAgICAgICAgIFRfVUlOVFBUUlQsICAgICBLUV9PRkYoZS5pZGVudCl9LAorICAgIHsiZmlsdGVyIiwgICAgICAgICAgRklMVEVSX1RZUEUsICAgIEtRX09GRihlLmZpbHRlcil9LAorICAgIHsiZmxhZ3MiLCAgICAgICAgICAgRkxBR1NfVFlQRSwgICAgIEtRX09GRihlLmZsYWdzKX0sCiAgICAgeyJmZmxhZ3MiLCAgICAgICAgICBUX1VJTlQsICAgICAgICAgS1FfT0ZGKGUuZmZsYWdzKX0sCiAgICAgeyJkYXRhIiwgICAgICAgICAgICBEQVRBX1RZUEUsICAgICAgS1FfT0ZGKGUuZGF0YSl9LAogICAgIHsidWRhdGEiLCAgICAgICAgICAgVF9VSU5UUFRSVCwgICAgIEtRX09GRihlLnVkYXRhKX0sCkBAIC0xMjczLDEwICsxMzE3LDE3IEBACiAgICAgY2hhciBidWZbMTAyNF07CiAgICAgUHlPU19zbnByaW50ZigKICAgICAgICAgYnVmLCBzaXplb2YoYnVmKSwKKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAiPHNlbGVjdC5rZXZlbnQgaWRlbnQ9JXp1IGZpbHRlcj0lZCBmbGFncz0weCV4IGZmbGFncz0weCV4ICIKLSAgICAgICAgImRhdGE9MHglemQgdWRhdGE9JXA+IiwKLSAgICAgICAgKHNpemVfdCkocy0+ZS5pZGVudCksIHMtPmUuZmlsdGVyLCBzLT5lLmZsYWdzLAotICAgICAgICBzLT5lLmZmbGFncywgKFB5X3NzaXplX3QpKHMtPmUuZGF0YSksIHMtPmUudWRhdGEpOworICAgICAgICAiZGF0YT0weCVsbHggdWRhdGE9JXA+IiwKKyAgICAgICAgKHNpemVfdCkocy0+ZS5pZGVudCksIChpbnQpcy0+ZS5maWx0ZXIsICh1bnNpZ25lZCBpbnQpcy0+ZS5mbGFncywKKyAgICAgICAgKHVuc2lnbmVkIGludClzLT5lLmZmbGFncywgKGxvbmcgbG9uZykocy0+ZS5kYXRhKSwgKHZvaWQgKilzLT5lLnVkYXRhKTsKKyNlbHNlCisgICAgICAgICI8c2VsZWN0LmtldmVudCBpZGVudD0lenUgZmlsdGVyPSVkIGZsYWdzPTB4JXggZmZsYWdzPTB4JXggIgorICAgICAgICAiZGF0YT0weCVsbHggdWRhdGE9JXA+IiwKKyAgICAgICAgKHNpemVfdCkocy0+ZS5pZGVudCksIChpbnQpcy0+ZS5maWx0ZXIsICh1bnNpZ25lZCBpbnQpcy0+ZS5mbGFncywKKyAgICAgICAgKHVuc2lnbmVkIGludClzLT5lLmZmbGFncywgKGxvbmcpKHMtPmUuZGF0YSksICh2b2lkICopcy0+ZS51ZGF0YSk7CisjZW5kaWYKICAgICByZXR1cm4gUHlTdHJpbmdfRnJvbVN0cmluZyhidWYpOwogfQogCkBAIC0xMjg2LDcgKzEzMzcsOSBAQAogICAgIFB5T2JqZWN0ICpwZmQ7CiAgICAgc3RhdGljIGNoYXIgKmt3bGlzdFtdID0geyJpZGVudCIsICJmaWx0ZXIiLCAiZmxhZ3MiLCAiZmZsYWdzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEiLCAidWRhdGEiLCBOVUxMfTsKLSAgICBzdGF0aWMgY2hhciAqZm10ID0gIk98aEhJIiBEQVRBX0ZNVF9VTklUIFVJTlRQVFJUX0ZNVF9VTklUICI6a2V2ZW50IjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBmbXRbXSA9ICJPfCIKKyAgICAgICAgICAgICAgICBGSUxURVJfRk1UX1VOSVQgRkxBR1NfRk1UX1VOSVQgRkZMQUdTX0ZNVF9VTklUIERBVEFfRk1UX1VOSVQKKyAgICAgICAgICAgICAgICBVSU5UUFRSVF9GTVRfVU5JVCAiOmtldmVudCI7CiAKICAgICBFVl9TRVQoJihzZWxmLT5lKSwgMCwgRVZGSUxUX1JFQUQsIEVWX0FERCwgMCwgMCwgMCk7IC8qIGRlZmF1bHRzICovCiAKQEAgLTEyOTYsMTIgKzEzNDksMTUgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChQeUxvbmdfQ2hlY2socGZkKQotI2lmIElERU5UX1RZUEUgPT0gVF9VSU5UCi0JJiYgUHlMb25nX0FzVW5zaWduZWRMb25nKHBmZCkgPD0gVUlOVF9NQVgKKyAgICBpZiAoUHlJbnRfQ2hlY2socGZkKSkgeworICAgICAgICBzZWxmLT5lLmlkZW50ID0gUHlJbnRfQXNVbnNpZ25lZExvbmdNYXNrKHBmZCk7CisgICAgfQorICAgIGVsc2UgaWYgKFB5TG9uZ19DaGVjayhwZmQpKSB7CisjaWYgZGVmaW5lZChIQVZFX0xPTkdfTE9ORykgJiYgKFNJWkVPRl9VSU5UUFRSX1QgPT0gU0laRU9GX0xPTkdfTE9ORykKKyAgICAgICAgc2VsZi0+ZS5pZGVudCA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmdNYXNrKHBmZCk7CisjZWxzZQorICAgICAgICBzZWxmLT5lLmlkZW50ID0gUHlMb25nX0FzVW5zaWduZWRMb25nTWFzayhwZmQpOwogI2VuZGlmCi0gICAgKSB7Ci0gICAgICAgIHNlbGYtPmUuaWRlbnQgPSBJREVOVF9Bc1R5cGUocGZkKTsKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIHNlbGYtPmUuaWRlbnQgPSBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yKHBmZCk7CkBAIC0xMzE2LDI4ICsxMzcyLDIyIEBACiBrcXVldWVfZXZlbnRfcmljaGNvbXBhcmUoa3F1ZXVlX2V2ZW50X09iamVjdCAqcywga3F1ZXVlX2V2ZW50X09iamVjdCAqbywKICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3ApCiB7Ci0gICAgUHlfaW50cHRyX3QgcmVzdWx0ID0gMDsKKyAgICBpbnQgcmVzdWx0OwogCiAgICAgaWYgKCFrcXVldWVfZXZlbnRfQ2hlY2sobykpIHsKLSAgICAgICAgaWYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcmVzID0gb3AgPT0gUHlfRVEgPyBQeV9GYWxzZSA6IFB5X1RydWU7Ci0gICAgICAgICAgICBQeV9JTkNSRUYocmVzKTsKLSAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgIH0KLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJjYW4ndCBjb21wYXJlICUuMjAwcyB0byAlLjIwMHMiLAotICAgICAgICAgICAgUHlfVFlQRShzKS0+dHBfbmFtZSwgUHlfVFlQRShvKS0+dHBfbmFtZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOworICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CiAgICAgfQotICAgIGlmICgoKHJlc3VsdCA9IChJREVOVF9DQVNUKShzLT5lLmlkZW50IC0gby0+ZS5pZGVudCkpID09IDApICYmCi0gICAgICAgICgocmVzdWx0ID0gcy0+ZS5maWx0ZXIgLSBvLT5lLmZpbHRlcikgPT0gMCkgJiYKLSAgICAgICAgKChyZXN1bHQgPSBzLT5lLmZsYWdzIC0gby0+ZS5mbGFncykgPT0gMCkgJiYKLSAgICAgICAgKChyZXN1bHQgPSAoaW50KShzLT5lLmZmbGFncyAtIG8tPmUuZmZsYWdzKSkgPT0gMCkgJiYKLSAgICAgICAgKChyZXN1bHQgPSBzLT5lLmRhdGEgLSBvLT5lLmRhdGEpID09IDApICYmCi0gICAgICAgICgocmVzdWx0ID0gcy0+ZS51ZGF0YSAtIG8tPmUudWRhdGEpID09IDApCi0gICAgICAgKSB7Ci0gICAgICAgIHJlc3VsdCA9IDA7Ci0gICAgfQorCisjZGVmaW5lIENNUChhLCBiKSAoKGEpICE9IChiKSkgPyAoKGEpIDwgKGIpID8gLTEgOiAxKQorICAgIHJlc3VsdCA9IENNUChzLT5lLmlkZW50LCBvLT5lLmlkZW50KQorICAgICAgICAgICA6IENNUChzLT5lLmZpbHRlciwgby0+ZS5maWx0ZXIpCisgICAgICAgICAgIDogQ01QKHMtPmUuZmxhZ3MsIG8tPmUuZmxhZ3MpCisgICAgICAgICAgIDogQ01QKHMtPmUuZmZsYWdzLCBvLT5lLmZmbGFncykKKyAgICAgICAgICAgOiBDTVAocy0+ZS5kYXRhLCBvLT5lLmRhdGEpCisgICAgICAgICAgIDogQ01QKChQeV9pbnRwdHJfdClzLT5lLnVkYXRhLCAoUHlfaW50cHRyX3Qpby0+ZS51ZGF0YSkKKyAgICAgICAgICAgOiAwOworI3VuZGVmIENNUAogCiAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFB5X0VROgpAQCAtMTUzNyw3ICsxNTg3LDcgQEAKICAgICBpbnQgaSA9IDA7CiAgICAgUHlPYmplY3QgKm90aW1lb3V0ID0gTlVMTDsKICAgICBQeU9iamVjdCAqY2ggPSBOVUxMOwotICAgIFB5T2JqZWN0ICppdCA9IE5VTEwsICplaSA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNlcSA9IE5VTEwsICplaSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgc3RydWN0IGtldmVudCAqZXZsID0gTlVMTDsKICAgICBzdHJ1Y3Qga2V2ZW50ICpjaGwgPSBOVUxMOwpAQCAtMTU5MywzNyArMTY0MywzNCBAQAogICAgIH0KIAogICAgIGlmIChjaCAhPSBOVUxMICYmIGNoICE9IFB5X05vbmUpIHsKLSAgICAgICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKGNoKTsKLSAgICAgICAgaWYgKGl0ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWxpc3QgaXMgbm90IGl0ZXJhYmxlIik7CisgICAgICAgIHNlcSA9IFB5U2VxdWVuY2VfRmFzdChjaCwgImNoYW5nZWxpc3QgaXMgbm90IGl0ZXJhYmxlIik7CisgICAgICAgIGlmIChzZXEgPT0gTlVMTCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgbmNoYW5nZXMgPSBQeU9iamVjdF9TaXplKGNoKTsKLSAgICAgICAgaWYgKG5jaGFuZ2VzIDwgMCkgeworICAgICAgICBpZiAoUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNlcSkgPiBJTlRfTUFYKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2hhbmdlbGlzdCBpcyB0b28gbG9uZyIpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQorICAgICAgICBuY2hhbmdlcyA9IChpbnQpUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKHNlcSk7CiAKICAgICAgICAgY2hsID0gUHlNZW1fTmV3KHN0cnVjdCBrZXZlbnQsIG5jaGFuZ2VzKTsKICAgICAgICAgaWYgKGNobCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgfQotICAgICAgICBpID0gMDsKLSAgICAgICAgd2hpbGUgKChlaSA9IFB5SXRlcl9OZXh0KGl0KSkgIT0gTlVMTCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmNoYW5nZXM7ICsraSkgeworICAgICAgICAgICAgZWkgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oc2VxLCBpKTsKICAgICAgICAgICAgIGlmICgha3F1ZXVlX2V2ZW50X0NoZWNrKGVpKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlaSk7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWxpc3QgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiAiCiAgICAgICAgICAgICAgICAgICAgICJzZWxlY3Qua2V2ZW50IG9iamVjdHMiKTsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjaGxbaSsrXSA9ICgoa3F1ZXVlX2V2ZW50X09iamVjdCAqKWVpKS0+ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0RFQ1JFRihlaSk7CisgICAgICAgICAgICBjaGxbaV0gPSAoKGtxdWV1ZV9ldmVudF9PYmplY3QgKillaSktPmU7CiAgICAgICAgIH0KKyAgICAgICAgUHlfQ0xFQVIoc2VxKTsKICAgICB9Ci0gICAgUHlfQ0xFQVIoaXQpOwogCiAgICAgLyogZXZlbnQgbGlzdCAqLwogICAgIGlmIChuZXZlbnRzKSB7CkBAIC0xNjY3LDcgKzE3MTQsNyBAQAogICAgIFB5TWVtX0ZyZWUoY2hsKTsKICAgICBQeU1lbV9GcmVlKGV2bCk7CiAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgIFB5X1hERUNSRUYoaXQpOworICAgIFB5X1hERUNSRUYoc2VxKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtMTY3NSw3ICsxNzIyLDcgQEAKICJjb250cm9sKGNoYW5nZWxpc3QsIG1heF9ldmVudHNbLCB0aW1lb3V0PU5vbmVdKSAtPiBldmVudGxpc3RcblwKIFxuXAogQ2FsbHMgdGhlIGtlcm5lbCBrZXZlbnQgZnVuY3Rpb24uXG5cCi0tIGNoYW5nZWxpc3QgbXVzdCBiZSBhIGxpc3Qgb2Yga2V2ZW50IG9iamVjdHMgZGVzY3JpYmluZyB0aGUgY2hhbmdlc1xuXAorLSBjaGFuZ2VsaXN0IG11c3QgYmUgYW4gaXRlcmFibGUgb2Yga2V2ZW50IG9iamVjdHMgZGVzY3JpYmluZyB0aGUgY2hhbmdlc1xuXAogICB0byBiZSBtYWRlIHRvIHRoZSBrZXJuZWwncyB3YXRjaCBsaXN0IG9yIE5vbmUuXG5cCiAtIG1heF9ldmVudHMgbGV0cyB5b3Ugc3BlY2lmeSB0aGUgbWF4aW11bSBudW1iZXIgb2YgZXZlbnRzIHRoYXQgdGhlXG5cCiAgIGtlcm5lbCB3aWxsIHJldHVybi5cblwKZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTI1Nm1vZHVsZS5jCmluZGV4IDhmMThmYWEuLjc2ZTUyMjAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhMjU2bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGEyNTZtb2R1bGUuYwpAQCAtNTM3LDcgKzUzNyw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTIyNHR5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIl9zaGEyNTYuc2hhMjI0IiwgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihTSEFvYmplY3QpLCAgLyp0cF9zaXplKi8KKyAgICBzaXplb2YoU0hBb2JqZWN0KSwgIC8qdHBfYmFzaWNzaXplKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICBTSEFfZGVhbGxvYywgICAgICAgIC8qdHBfZGVhbGxvYyovCkBAIC01NzEsNyArNTcxLDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgU0hBMjU2dHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiX3NoYTI1Ni5zaGEyNTYiLCAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKFNIQW9iamVjdCksICAvKnRwX3NpemUqLworICAgIHNpemVvZihTSEFvYmplY3QpLCAgLyp0cF9iYXNpY3NpemUqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCiAgICAgLyogbWV0aG9kcyAqLwogICAgIFNIQV9kZWFsbG9jLCAgICAgICAgLyp0cF9kZWFsbG9jKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMgYi9Nb2R1bGVzL3NoYTUxMm1vZHVsZS5jCmluZGV4IGFiYzkwMjEuLmUzNzMzZTAgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2hhNTEybW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaGE1MTJtb2R1bGUuYwpAQCAtNjAzLDcgKzYwMyw3IEBACiBzdGF0aWMgUHlUeXBlT2JqZWN0IFNIQTM4NHR5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgIl9zaGE1MTIuc2hhMzg0IiwgICAvKnRwX25hbWUqLwotICAgIHNpemVvZihTSEFvYmplY3QpLCAgLyp0cF9zaXplKi8KKyAgICBzaXplb2YoU0hBb2JqZWN0KSwgIC8qdHBfYmFzaWNzaXplKi8KICAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfaXRlbXNpemUqLwogICAgIC8qIG1ldGhvZHMgKi8KICAgICBTSEE1MTJfZGVhbGxvYywgICAgIC8qdHBfZGVhbGxvYyovCkBAIC02MzcsNyArNjM3LDcgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgU0hBNTEydHlwZSA9IHsKICAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICAiX3NoYTUxMi5zaGE1MTIiLCAgIC8qdHBfbmFtZSovCi0gICAgc2l6ZW9mKFNIQW9iamVjdCksICAvKnRwX3NpemUqLworICAgIHNpemVvZihTSEFvYmplY3QpLCAgLyp0cF9iYXNpY3NpemUqLwogICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCiAgICAgLyogbWV0aG9kcyAqLwogICAgIFNIQTUxMl9kZWFsbG9jLCAgICAgLyp0cF9kZWFsbG9jKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMgYi9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCmluZGV4IDFkN2JhNGIuLjg2MjhmN2EgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKKysrIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwpAQCAtOTUsMTMgKzk1LDYgQEAKIHN0YXRpYyBQeU9iamVjdCAqSWdub3JlSGFuZGxlcjsKIHN0YXRpYyBQeU9iamVjdCAqSW50SGFuZGxlcjsKIAotLyogT24gU29sYXJpcyA4LCBnY2Mgd2lsbCBwcm9kdWNlIGEgd2FybmluZyB0aGF0IHRoZSBmdW5jdGlvbgotICAgZGVjbGFyYXRpb24gaXMgbm90IGEgcHJvdG90eXBlLiBUaGlzIGlzIGNhdXNlZCBieSB0aGUgZGVmaW5pdGlvbiBvZgotICAgU0lHX0RGTCBhcyAodm9pZCAoKikoKSkwOyB0aGUgY29ycmVjdCBkZWNsYXJhdGlvbiB3b3VsZCBoYXZlIGJlZW4KLSAgICh2b2lkICgqKShpbnQpKTAuICovCi0KLXN0YXRpYyBQeU9TX3NpZ2hhbmRsZXJfdCBvbGRfc2lnaW50aGFuZGxlciA9IFNJR19ERkw7Ci0KICNpZmRlZiBIQVZFX0dFVElUSU1FUgogc3RhdGljIFB5T2JqZWN0ICpJdGltZXJFcnJvcjsKIApAQCAtMTExLDYgKzEwNCwxMCBAQAogewogICAgIHR2LT50dl9zZWMgPSBmbG9vcihkKTsKICAgICB0di0+dHZfdXNlYyA9IGZtb2QoZCwgMS4wKSAqIDEwMDAwMDAuMDsKKyAgICAvKiBEb24ndCBkaXNhYmxlIHRoZSB0aW1lciBpZiB0aGUgY29tcHV0YXRpb24gYWJvdmUgcm91bmRzIGRvd24gdG8gemVyby4gKi8KKyAgICBpZiAoZCA+IDAuMCAmJiB0di0+dHZfc2VjID09IDAgJiYgdHYtPnR2X3VzZWMgPT0gMCkgeworICAgICAgICB0di0+dHZfdXNlYyA9IDE7CisgICAgfQogfQogCiBQeV9MT0NBTF9JTkxJTkUoZG91YmxlKQpAQCAtMzEzLDEyICszMTAsMTUgQEAKICAgICB9CiAgICAgZWxzZQogICAgICAgICBmdW5jID0gc2lnbmFsX2hhbmRsZXI7CisgICAgLyogQ2hlY2sgZm9yIHBlbmRpbmcgc2lnbmFscyBiZWZvcmUgY2hhbmdpbmcgc2lnbmFsIGhhbmRsZXIgKi8KKyAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGlmIChQeU9TX3NldHNpZyhzaWdfbnVtLCBmdW5jKSA9PSBTSUdfRVJSKSB7CiAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19SdW50aW1lRXJyb3IpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgb2xkX2hhbmRsZXIgPSBIYW5kbGVyc1tzaWdfbnVtXS5mdW5jOwotICAgIEhhbmRsZXJzW3NpZ19udW1dLnRyaXBwZWQgPSAwOwogICAgIFB5X0lOQ1JFRihvYmopOwogICAgIEhhbmRsZXJzW3NpZ19udW1dLmZ1bmMgPSBvYmo7CiAgICAgaWYgKG9sZF9oYW5kbGVyICE9IE5VTEwpCkBAIC02MjIsNyArNjIyLDcgQEAKICAgICAgICAgLyogSW5zdGFsbCBkZWZhdWx0IGludCBoYW5kbGVyICovCiAgICAgICAgIFB5X0lOQ1JFRihJbnRIYW5kbGVyKTsKICAgICAgICAgUHlfU0VUUkVGKEhhbmRsZXJzW1NJR0lOVF0uZnVuYywgSW50SGFuZGxlcik7Ci0gICAgICAgIG9sZF9zaWdpbnRoYW5kbGVyID0gUHlPU19zZXRzaWcoU0lHSU5ULCBzaWduYWxfaGFuZGxlcik7CisgICAgICAgIFB5T1Nfc2V0c2lnKFNJR0lOVCwgc2lnbmFsX2hhbmRsZXIpOwogICAgIH0KIAogI2lmZGVmIFNJR0hVUApAQCAtODY1LDE0ICs4NjUsMTEgQEAKICAgICBpbnQgaTsKICAgICBQeU9iamVjdCAqZnVuYzsKIAotICAgIFB5T1Nfc2V0c2lnKFNJR0lOVCwgb2xkX3NpZ2ludGhhbmRsZXIpOwotICAgIG9sZF9zaWdpbnRoYW5kbGVyID0gU0lHX0RGTDsKLQogICAgIGZvciAoaSA9IDE7IGkgPCBOU0lHOyBpKyspIHsKICAgICAgICAgZnVuYyA9IEhhbmRsZXJzW2ldLmZ1bmM7CiAgICAgICAgIEhhbmRsZXJzW2ldLnRyaXBwZWQgPSAwOwogICAgICAgICBIYW5kbGVyc1tpXS5mdW5jID0gTlVMTDsKLSAgICAgICAgaWYgKGkgIT0gU0lHSU5UICYmIGZ1bmMgIT0gTlVMTCAmJiBmdW5jICE9IFB5X05vbmUgJiYKKyAgICAgICAgaWYgKGZ1bmMgIT0gTlVMTCAmJiBmdW5jICE9IFB5X05vbmUgJiYKICAgICAgICAgICAgIGZ1bmMgIT0gRGVmYXVsdEhhbmRsZXIgJiYgZnVuYyAhPSBJZ25vcmVIYW5kbGVyKQogICAgICAgICAgICAgUHlPU19zZXRzaWcoaSwgU0lHX0RGTCk7CiAgICAgICAgIFB5X1hERUNSRUYoZnVuYyk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwppbmRleCAzZTNjMDVmLi42MzRjMWI5IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKQEAgLTEwMDUsNyArMTAwNSw3IEBACiAgICBhbiBlcnJvciBvY2N1cnJlZC4gKi8KIAogc3RhdGljIGludAotc2V0YmRhZGRyKGNoYXIgKm5hbWUsIGJkYWRkcl90ICpiZGFkZHIpCitzZXRiZGFkZHIoY29uc3QgY2hhciAqbmFtZSwgYmRhZGRyX3QgKmJkYWRkcikKIHsKICAgICB1bnNpZ25lZCBpbnQgYjAsIGIxLCBiMiwgYjMsIGI0LCBiNTsKICAgICBjaGFyIGNoOwpAQCAtMTA2Miw3ICsxMDYyLDcgQEAKICNpZmRlZiBfX0JFT1NfXwogICAgIC8qIFhYWDogQmVPUyB2ZXJzaW9uIG9mIGFjY2VwdCgpIGRvZXNuJ3Qgc2V0IGZhbWlseSBjb3JyZWN0bHkgKi8KICAgICBhZGRyLT5zYV9mYW1pbHkgPSBBRl9JTkVUOwotI2VuZGlmCisjZW5kaWYgLyogX19CRU9TX18gKi8KIAogICAgIHN3aXRjaCAoYWRkci0+c2FfZmFtaWx5KSB7CiAKQEAgLTExMjMsNyArMTEyMyw3IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9Ci0jZW5kaWYKKyNlbmRpZiAvKiBFTkFCTEVfSVBWNiAqLwogCiAjaWZkZWYgVVNFX0JMVUVUT09USAogICAgIGNhc2UgQUZfQkxVRVRPT1RIOgpAQCAtMTE2MiwxMSArMTE2MiwxMSBAQAogICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2hjaSAqYSA9IChzdHJ1Y3Qgc29ja2FkZHJfaGNpICopIGFkZHI7CiAjaWYgZGVmaW5lZChfX05ldEJTRF9fKSB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pCiAgICAgICAgICAgICByZXR1cm4gbWFrZWJkYWRkcigmX0JUX0hDSV9NRU1CKGEsIGJkYWRkcikpOwotI2Vsc2UKKyNlbHNlIC8qIF9fTmV0QlNEX18gfHwgX19EcmFnb25GbHlfXyAqLwogICAgICAgICAgICAgUHlPYmplY3QgKnJldCA9IE5VTEw7CiAgICAgICAgICAgICByZXQgPSBQeV9CdWlsZFZhbHVlKCJpIiwgX0JUX0hDSV9NRU1CKGEsIGRldikpOwogICAgICAgICAgICAgcmV0dXJuIHJldDsKLSNlbmRpZgorI2VuZGlmIC8qICEoX19OZXRCU0RfXyB8fCBfX0RyYWdvbkZseV9fKSAqLwogICAgICAgICB9CiAKICNpZiAhZGVmaW5lZChfX0ZyZWVCU0RfXykKQEAgLTExNzUsMjAgKzExNzUsMjAgQEAKICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9zY28gKmEgPSAoc3RydWN0IHNvY2thZGRyX3NjbyAqKSBhZGRyOwogICAgICAgICAgICAgcmV0dXJuIG1ha2ViZGFkZHIoJl9CVF9TQ09fTUVNQihhLCBiZGFkZHIpKTsKICAgICAgICAgfQotI2VuZGlmCisjZW5kaWYgLyogIV9fRnJlZUJTRF9fICovCiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmtub3duIEJsdWV0b290aCBwcm90b2NvbCIpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9CTFVFVE9PVEggKi8KIAogI2lmIGRlZmluZWQoSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0gpICYmIGRlZmluZWQoU0lPQ0dJRk5BTUUpCiAgICAgY2FzZSBBRl9QQUNLRVQ6CiAgICAgewogICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfbGwgKmEgPSAoc3RydWN0IHNvY2thZGRyX2xsICopYWRkcjsKLSAgICAgICAgY2hhciAqaWZuYW1lID0gIiI7CisgICAgICAgIGNvbnN0IGNoYXIgKmlmbmFtZSA9ICIiOwogICAgICAgICBzdHJ1Y3QgaWZyZXEgaWZyOwogICAgICAgICAvKiBuZWVkIHRvIGxvb2sgdXAgaW50ZXJmYWNlIG5hbWUgZ2l2ZSBpbmRleCAqLwogICAgICAgICBpZiAoYS0+c2xsX2lmaW5kZXgpIHsKQEAgLTEyMDQsNyArMTIwNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEtPnNsbF9hZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhLT5zbGxfaGFsZW4pOwogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfTkVUUEFDS0VUX1BBQ0tFVF9IICYmIFNJT0NHSUZOQU1FICovCiAKICNpZmRlZiBIQVZFX0xJTlVYX1RJUENfSAogICAgIGNhc2UgQUZfVElQQzoKQEAgLTEyMzcsNyArMTIzNyw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIEhBVkVfTElOVVhfVElQQ19IICovCiAKICAgICAvKiBNb3JlIGNhc2VzIGhlcmUuLi4gKi8KIApAQCAtMTI5OCw5ICsxMjk4LDkgQEAKICAgICAgICAgbWVtY3B5KGFkZHItPnN1bl9wYXRoLCBwYXRoLCBsZW4pOwogI2lmIGRlZmluZWQoUFlPU19PUzIpCiAgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mKCphZGRyKTsKLSNlbHNlCisjZWxzZSAvKiBQWU9TX09TMiAqLwogICAgICAgICAqbGVuX3JldCA9IGxlbiArIG9mZnNldG9mKHN0cnVjdCBzb2NrYWRkcl91biwgc3VuX3BhdGgpOwotI2VuZGlmCisjZW5kaWYgLyogIVBZT1NfT1MyICovCiAgICAgICAgIHJldHVybiAxOwogICAgIH0KICNlbmRpZiAvKiBBRl9VTklYICovCkBAIC0xMzI3LDcgKzEzMjcsNyBAQAogICAgICAgICAqbGVuX3JldCA9IHNpemVvZigqYWRkcik7CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIEFGX05FVExJTksgKi8KIAogICAgIGNhc2UgQUZfSU5FVDoKICAgICB7CkBAIC0xNDA5LDcgKzE0MDksNyBAQAogICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAqYWRkcjsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLyogRU5BQkxFX0lQVjYgKi8KIAogI2lmZGVmIFVTRV9CTFVFVE9PVEgKICAgICBjYXNlIEFGX0JMVUVUT09USDoKQEAgLTE0MTgsNyArMTQxOCw3IEBACiAgICAgICAgIGNhc2UgQlRQUk9UT19MMkNBUDoKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX2wyICphZGRyOwotICAgICAgICAgICAgY2hhciAqc3RyYWRkcjsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0cmFkZHI7CiAKICAgICAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX2wyICopYWRkcl9yZXQ7CiAgICAgICAgICAgICBtZW1zZXQoYWRkciwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9sMikpOwpAQCAtMTQzOCw3ICsxNDM4LDcgQEAKICAgICAgICAgY2FzZSBCVFBST1RPX1JGQ09NTToKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX3JjICphZGRyOwotICAgICAgICAgICAgY2hhciAqc3RyYWRkcjsKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0cmFkZHI7CiAKICAgICAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX3JjICopYWRkcl9yZXQ7CiAgICAgICAgICAgICBfQlRfUkNfTUVNQihhZGRyLCBmYW1pbHkpID0gQUZfQkxVRVRPT1RIOwpAQCAtMTQ1OCwyNCArMTQ1OCwyNCBAQAogICAgICAgICB7CiAgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaGNpICphZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9oY2kgKilhZGRyX3JldDsKICNpZiBkZWZpbmVkKF9fTmV0QlNEX18pIHx8IGRlZmluZWQoX19EcmFnb25GbHlfXykKLQkJCWNoYXIgKnN0cmFkZHIgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmdzKTsKLQotCQkJX0JUX0hDSV9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7Ci0gICAgICAgICAgICBpZiAoc3RyYWRkciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCisgICAgICAgICAgICBjb25zdCBjaGFyICpzdHJhZGRyOworICAgICAgICAgICAgX0JUX0hDSV9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CisgICAgICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2soYXJncykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgImdldHNvY2thZGRyYXJnOiAiCiAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cmFkZHIgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmdzKTsKICAgICAgICAgICAgIGlmIChzZXRiZGFkZHIoc3RyYWRkciwgJl9CVF9IQ0lfTUVNQihhZGRyLCBiZGFkZHIpKSA8IDApCiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0jZWxzZQorI2Vsc2UgIC8qIF9fTmV0QlNEX18gfHwgX19EcmFnb25GbHlfXyAqLwogICAgICAgICAgICAgX0JUX0hDSV9NRU1CKGFkZHIsIGZhbWlseSkgPSBBRl9CTFVFVE9PVEg7CiAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImkiLCAmX0JUX0hDSV9NRU1CKGFkZHIsIGRldikpKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRyYXJnOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cm9uZyBmb3JtYXQiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSNlbmRpZgorI2VuZGlmIC8qICEoX19OZXRCU0RfXyB8fCBfX0RyYWdvbkZseV9fKSAqLwogICAgICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKmFkZHI7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQpAQCAtMTQ4Myw3ICsxNDgzLDcgQEAKICAgICAgICAgY2FzZSBCVFBST1RPX1NDTzoKICAgICAgICAgewogICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyX3NjbyAqYWRkcjsKLSAgICAgICAgICAgIGNoYXIgKnN0cmFkZHI7CisgICAgICAgICAgICBjb25zdCBjaGFyICpzdHJhZGRyOwogCiAgICAgICAgICAgICBhZGRyID0gKHN0cnVjdCBzb2NrYWRkcl9zY28gKilhZGRyX3JldDsKICAgICAgICAgICAgIF9CVF9TQ09fTUVNQihhZGRyLCBmYW1pbHkpID0gQUZfQkxVRVRPT1RIOwpAQCAtMTQ5OSwyMCArMTQ5OSwyMCBAQAogICAgICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKmFkZHI7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQotI2VuZGlmCisjZW5kaWYgLyogIV9fRnJlZUJTRF9fICovCiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoc29ja2V0X2Vycm9yLCAiZ2V0c29ja2FkZHJhcmc6IHVua25vd24gQmx1ZXRvb3RoIHByb3RvY29sIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9CTFVFVE9PVEggKi8KIAogI2lmIGRlZmluZWQoSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0gpICYmIGRlZmluZWQoU0lPQ0dJRklOREVYKQogICAgIGNhc2UgQUZfUEFDS0VUOgogICAgIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX2xsKiBhZGRyOwogICAgICAgICBzdHJ1Y3QgaWZyZXEgaWZyOwotICAgICAgICBjaGFyICppbnRlcmZhY2VOYW1lOworICAgICAgICBjb25zdCBjaGFyICppbnRlcmZhY2VOYW1lOwogICAgICAgICBpbnQgcHJvdG9OdW1iZXI7CiAgICAgICAgIGludCBoYXR5cGUgPSAwOwogICAgICAgICBpbnQgcGt0dHlwZSA9IDA7CkBAIC0xNTYxLDcgKzE1NjEsNyBAQAogICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAqYWRkcjsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0ggJiYgU0lPQ0dJRklOREVYICovCiAKICNpZmRlZiBIQVZFX0xJTlVYX1RJUENfSAogICAgIGNhc2UgQUZfVElQQzoKQEAgLTE2MTEsNyArMTYxMSw3IEBACiAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9MSU5VWF9USVBDX0ggKi8KIAogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCkBAIC0xNjQ2LDcgKzE2NDYsNyBAQAogICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX25sKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLyogQUZfTkVUTElOSyAqLwogCiAgICAgY2FzZSBBRl9JTkVUOgogICAgIHsKQEAgLTE2NjAsNyArMTY2MCw3IEBACiAgICAgICAgICpsZW5fcmV0ID0gc2l6ZW9mIChzdHJ1Y3Qgc29ja2FkZHJfaW42KTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLyogRU5BQkxFX0lQVjYgKi8KIAogI2lmZGVmIFVTRV9CTFVFVE9PVEgKICAgICBjYXNlIEFGX0JMVUVUT09USDoKQEAgLTE2ODEsNyArMTY4MSw3IEBACiAgICAgICAgIGNhc2UgQlRQUk9UT19TQ086CiAgICAgICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX3Njbyk7CiAgICAgICAgICAgICByZXR1cm4gMTsKLSNlbmRpZgorI2VuZGlmIC8qICFfX0ZyZWVCU0RfXyAqLwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKHNvY2tldF9lcnJvciwgImdldHNvY2thZGRybGVuOiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVua25vd24gQlQgcHJvdG9jb2wiKTsKQEAgLTE2ODksNyArMTY4OSw3IEBACiAKICAgICAgICAgfQogICAgIH0KLSNlbmRpZgorI2VuZGlmIC8qIFVTRV9CTFVFVE9PVEggKi8KIAogI2lmZGVmIEhBVkVfTkVUUEFDS0VUX1BBQ0tFVF9ICiAgICAgY2FzZSBBRl9QQUNLRVQ6CkBAIC0xNjk3LDcgKzE2OTcsNyBAQAogICAgICAgICAqbGVuX3JldCA9IHNpemVvZiAoc3RydWN0IHNvY2thZGRyX2xsKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9ORVRQQUNLRVRfUEFDS0VUX0ggKi8KIAogI2lmZGVmIEhBVkVfTElOVVhfVElQQ19ICiAgICAgY2FzZSBBRl9USVBDOgpAQCAtMTcwNSw3ICsxNzA1LDcgQEAKICAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl90aXBjKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotI2VuZGlmCisjZW5kaWYgLyogSEFWRV9MSU5VWF9USVBDX0ggKi8KIAogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCkBAIC0zNTU0LDcgKzM1NTQsNyBAQAogICAgIGludCByZXN1bHQ7CiAjZW5kaWYKICNlbmRpZiAvKiBIQVZFX0dFVEhPU1RCWU5BTUVfUiAqLwotICAgIGNoYXIgKmFwOworICAgIGNvbnN0IGNoYXIgKmFwOwogICAgIGludCBhbDsKICAgICBpbnQgYWY7CiAKQEAgLTM2MjMsNyArMzYyMyw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja2V0X2dldHNlcnZieW5hbWUoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIGNoYXIgKm5hbWUsICpwcm90bz1OVUxMOworICAgIGNvbnN0IGNoYXIgKm5hbWUsICpwcm90bz1OVUxMOwogICAgIHN0cnVjdCBzZXJ2ZW50ICpzcDsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInN8czpnZXRzZXJ2YnluYW1lIiwgJm5hbWUsICZwcm90bykpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzY1NCw3ICszNjU0LDcgQEAKIHNvY2tldF9nZXRzZXJ2Ynlwb3J0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBpbnQgcG9ydDsKLSAgICBjaGFyICpwcm90bz1OVUxMOworICAgIGNvbnN0IGNoYXIgKnByb3RvPU5VTEw7CiAgICAgc3RydWN0IHNlcnZlbnQgKnNwOwogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaXxzOmdldHNlcnZieXBvcnQiLCAmcG9ydCwgJnByb3RvKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zNjg5LDcgKzM2ODksNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHNvY2tldF9nZXRwcm90b2J5bmFtZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgY2hhciAqbmFtZTsKKyAgICBjb25zdCBjaGFyICpuYW1lOwogICAgIHN0cnVjdCBwcm90b2VudCAqc3A7CiAjaWZkZWYgX19CRU9TX18KIC8qIE5vdCBhdmFpbGFibGUgaW4gQmVPUyB5ZXQuIC0gW2NqaF0gKi8KQEAgLTM5NjQsNyArMzk2NCw3IEBACiAgICAgLyogSGF2ZSB0byB1c2UgaW5ldF9hZGRyKCkgaW5zdGVhZCAqLwogICAgIHVuc2lnbmVkIGludCBwYWNrZWRfYWRkcjsKICNlbmRpZgotICAgIGNoYXIgKmlwX2FkZHI7CisgICAgY29uc3QgY2hhciAqaXBfYWRkcjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiczppbmV0X2F0b24iLCAmaXBfYWRkcikpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNDA1NCw3ICs0MDU0LDcgQEAKIHNvY2tldF9pbmV0X3B0b24oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewogICAgIGludCBhZjsKLSAgICBjaGFyKiBpcDsKKyAgICBjb25zdCBjaGFyKiBpcDsKICAgICBpbnQgcmV0dmFsOwogI2lmZGVmIEVOQUJMRV9JUFY2CiAgICAgY2hhciBwYWNrZWRbTUFYKHNpemVvZihzdHJ1Y3QgaW5fYWRkciksIHNpemVvZihzdHJ1Y3QgaW42X2FkZHIpKV07CkBAIC00MTk0LDcgKzQxOTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImdldGFkZHJpbmZvKCkgYXJndW1lbnQgMSBtdXN0IGJlIHN0cmluZyBvciBOb25lIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlJbnRfQ2hlY2socG9iaikgfHwgUHlMb25nX0NoZWNrKHBvYmopKSB7CisgICAgaWYgKF9QeUFueUludF9DaGVjayhwb2JqKSkgewogICAgICAgICBsb25nIHZhbHVlID0gUHlMb25nX0FzTG9uZyhwb2JqKTsKICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQyODAsNyArNDI4MCw3IEBACiB7CiAgICAgUHlPYmplY3QgKnNhID0gKFB5T2JqZWN0ICopTlVMTDsKICAgICBpbnQgZmxhZ3M7Ci0gICAgY2hhciAqaG9zdHA7CisgICAgY29uc3QgY2hhciAqaG9zdHA7CiAgICAgaW50IHBvcnQ7CiAgICAgdW5zaWduZWQgaW50IGZsb3dpbmZvLCBzY29wZV9pZDsKICAgICBjaGFyIGhidWZbTklfTUFYSE9TVF0sIHBidWZbTklfTUFYU0VSVl07CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3N2bW9kdWxlLmMgYi9Nb2R1bGVzL3N2bW9kdWxlLmMKaW5kZXggMTUxOTA2NS4uMTRmMjM2YyAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zdm1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3Ztb2R1bGUuYwpAQCAtNjg2LDcgKzY4Niw3IEBACiAgICAgICAgICAgICBpZiAoIWNlbGwpCiAgICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwogCi0gICAgICAgICAgICBpZiAoIVB5SW50X0NoZWNrKGNlbGwpKSB7CisgICAgICAgICAgICBpZiAoIV9QeUFueUludF9DaGVjayhjZWxsKSkgewogICAgICAgICAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICAgICAgfQpAQCAtNzU3LDcgKzc1Nyw3IEBACiAgICAgICAgIGlmICghdikKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKIAotICAgICAgICBpZiAoIVB5SW50X0NoZWNrKHYpKSB7CisgICAgICAgIGlmICghX1B5QW55SW50X0NoZWNrKHYpKSB7CiAgICAgICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Rlcm1pb3MuYyBiL01vZHVsZXMvdGVybWlvcy5jCmluZGV4IDU3ZjMwZGMuLmUyNmU3MTQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGVybWlvcy5jCisrKyBiL01vZHVsZXMvdGVybWlvcy5jCkBAIC0xODUsOCArMTg1LDExIEBACiAKICAgICAgICAgaWYgKFB5U3RyaW5nX0NoZWNrKHYpICYmIFB5U3RyaW5nX1NpemUodikgPT0gMSkKICAgICAgICAgICAgIG1vZGUuY19jY1tpXSA9IChjY190KSAqIFB5U3RyaW5nX0FzU3RyaW5nKHYpOwotICAgICAgICBlbHNlIGlmIChQeUludF9DaGVjayh2KSkKKyAgICAgICAgZWxzZSBpZiAoX1B5QW55SW50X0NoZWNrKHYpKSB7CiAgICAgICAgICAgICBtb2RlLmNfY2NbaV0gPSAoY2NfdCkgUHlJbnRfQXNMb25nKHYpOworICAgICAgICAgICAgaWYgKG1vZGUuY19jY1tpXSA9PSAoY2NfdCkgLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICJ0Y3NldGF0dHI6IGVsZW1lbnRzIG9mIGF0dHJpYnV0ZXMgbXVzdCBiZSBjaGFyYWN0ZXJzIG9yIGludGVnZXJzIik7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCmluZGV4IDEyYzQzYjAuLjYxYjhkNjEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCkBAIC0zODgsNiArMzg4LDc2IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKy8qIENoZWNrIHZhbHVlcyBvZiB0aGUgc3RydWN0IHRtIGZpZWxkcyBiZWZvcmUgaXQgaXMgcGFzc2VkIHRvIHN0cmZ0aW1lKCkgYW5kCisgKiBhc2N0aW1lKCkuICBSZXR1cm4gMSBpZiBhbGwgdmFsdWVzIGFyZSB2YWxpZCwgb3RoZXJ3aXNlIHNldCBhbiBleGNlcHRpb24KKyAqIGFuZCByZXR1cm5zIDAuCisgKi8KK3N0YXRpYyBpbnQKK2NoZWNrdG0oc3RydWN0IHRtKiBidWYpCit7CisgICAgLyogQ2hlY2tzIGFkZGVkIHRvIG1ha2Ugc3VyZSBzdHJmdGltZSgpIGFuZCBhc2N0aW1lKCkgZG9lcyBub3QgY3Jhc2ggUHl0aG9uIGJ5CisgICAgICAgaW5kZXhpbmcgYmxpbmRseSBpbnRvIHNvbWUgYXJyYXkgZm9yIGEgdGV4dHVhbCByZXByZXNlbnRhdGlvbgorICAgICAgIGJ5IHNvbWUgYmFkIGluZGV4IChmaXhlcyBidWcgIzg5NzYyNSBhbmQgIzY2MDgpLgorCisgICAgICAgQWxzbyBzdXBwb3J0IHZhbHVlcyBvZiB6ZXJvIGZyb20gUHl0aG9uIGNvZGUgZm9yIGFyZ3VtZW50cyBpbiB3aGljaAorICAgICAgIHRoYXQgaXMgb3V0IG9mIHJhbmdlIGJ5IGZvcmNpbmcgdGhhdCB2YWx1ZSB0byB0aGUgbG93ZXN0IHZhbHVlIHRoYXQKKyAgICAgICBpcyB2YWxpZCAoZml4ZWQgYnVnICMxNTIwOTE0KS4KKworICAgICAgIFZhbGlkIHJhbmdlcyBiYXNlZCBvbiB3aGF0IGlzIGFsbG93ZWQgaW4gc3RydWN0IHRtOgorCisgICAgICAgLSB0bV95ZWFyOiBbMCwgbWF4KGludCldICgxKQorICAgICAgIC0gdG1fbW9uOiBbMCwgMTFdICgyKQorICAgICAgIC0gdG1fbWRheTogWzEsIDMxXQorICAgICAgIC0gdG1faG91cjogWzAsIDIzXQorICAgICAgIC0gdG1fbWluOiBbMCwgNTldCisgICAgICAgLSB0bV9zZWM6IFswLCA2MF0KKyAgICAgICAtIHRtX3dkYXk6IFswLCA2XSAoMSkKKyAgICAgICAtIHRtX3lkYXk6IFswLCAzNjVdICgyKQorICAgICAgIC0gdG1faXNkc3Q6IFstbWF4KGludCksIG1heChpbnQpXQorCisgICAgICAgKDEpIGdldHRtYXJnKCkgaGFuZGxlcyBib3VuZHMtY2hlY2tpbmcuCisgICAgICAgKDIpIFB5dGhvbidzIGFjY2VwdGFibGUgcmFuZ2UgaXMgb25lIGdyZWF0ZXIgdGhhbiB0aGUgcmFuZ2UgaW4gQywKKyAgICAgICB0aHVzIG5lZWQgdG8gY2hlY2sgYWdhaW5zdCBhdXRvbWF0aWMgZGVjcmVtZW50IGJ5IGdldHRtYXJnKCkuCisgICAgKi8KKyAgICBpZiAoYnVmLT50bV9tb24gPT0gLTEpCisgICAgICAgIGJ1Zi0+dG1fbW9uID0gMDsKKyAgICBlbHNlIGlmIChidWYtPnRtX21vbiA8IDAgfHwgYnVmLT50bV9tb24gPiAxMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm1vbnRoIG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGJ1Zi0+dG1fbWRheSA9PSAwKQorICAgICAgICBidWYtPnRtX21kYXkgPSAxOworICAgIGVsc2UgaWYgKGJ1Zi0+dG1fbWRheSA8IDAgfHwgYnVmLT50bV9tZGF5ID4gMzEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJkYXkgb2YgbW9udGggb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoYnVmLT50bV9ob3VyIDwgMCB8fCBidWYtPnRtX2hvdXIgPiAyMykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgImhvdXIgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoYnVmLT50bV9taW4gPCAwIHx8IGJ1Zi0+dG1fbWluID4gNTkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJtaW51dGUgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoYnVmLT50bV9zZWMgPCAwIHx8IGJ1Zi0+dG1fc2VjID4gNjEpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJzZWNvbmRzIG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgLyogdG1fd2RheSBkb2VzIG5vdCBuZWVkIGNoZWNraW5nIG9mIGl0cyB1cHBlci1ib3VuZCBzaW5jZSB0YWtpbmcKKyAgICBgYCUgN2BgIGluIGdldHRtYXJnKCkgYXV0b21hdGljYWxseSByZXN0cmljdHMgdGhlIHJhbmdlLiAqLworICAgIGlmIChidWYtPnRtX3dkYXkgPCAwKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZGF5IG9mIHdlZWsgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAoYnVmLT50bV95ZGF5ID09IC0xKQorICAgICAgICBidWYtPnRtX3lkYXkgPSAwOworICAgIGVsc2UgaWYgKGJ1Zi0+dG1feWRheSA8IDAgfHwgYnVmLT50bV95ZGF5ID4gMzY1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiZGF5IG9mIHllYXIgb3V0IG9mIHJhbmdlIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKwogI2lmZGVmIEhBVkVfU1RSRlRJTUUKIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX3N0cmZ0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKQEAgLTQwNyw4ICs0NzcsMTAgQEAKICAgICBpZiAodHVwID09IE5VTEwpIHsKICAgICAgICAgdGltZV90IHR0ID0gdGltZShOVUxMKTsKICAgICAgICAgYnVmID0gKmxvY2FsdGltZSgmdHQpOwotICAgIH0gZWxzZSBpZiAoIWdldHRtYXJnKHR1cCwgJmJ1ZikpCisgICAgfSBlbHNlIGlmICghZ2V0dG1hcmcodHVwLCAmYnVmKQorICAgICAgICAgICAgICAgfHwgIWNoZWNrdG0oJmJ1ZikpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgLyogQ2hlY2tzIGFkZGVkIHRvIG1ha2Ugc3VyZSBzdHJmdGltZSgpIGRvZXMgbm90IGNyYXNoIFB5dGhvbiBieQogICAgICAgIGluZGV4aW5nIGJsaW5kbHkgaW50byBzb21lIGFycmF5IGZvciBhIHRleHR1YWwgcmVwcmVzZW50YXRpb24KQEAgLTU1OSwyNiArNjMxLDUwIEBACiAKIAogc3RhdGljIFB5T2JqZWN0ICoKK19hc2N0aW1lKHN0cnVjdCB0bSAqdGltZXB0cikKK3sKKyAgICAvKiBJbnNwaXJlZCBieSBPcGVuIEdyb3VwIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBhdmFpbGFibGUgYXQKKyAgICAgKiBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvMDA5Njk1Mzk5L2Z1bmN0aW9ucy9hc2N0aW1lLmh0bWwgKi8KKyAgICBzdGF0aWMgY29uc3QgY2hhciB3ZGF5X25hbWVbN11bNF0gPSB7CisgICAgICAgICJTdW4iLCAiTW9uIiwgIlR1ZSIsICJXZWQiLCAiVGh1IiwgIkZyaSIsICJTYXQiCisgICAgfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBtb25fbmFtZVsxMl1bNF0gPSB7CisgICAgICAgICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsCisgICAgICAgICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIKKyAgICB9OworICAgIFB5T2JqZWN0ICp1bmljb2RlLCAqc3RyOworICAgIC8qIFB5U3RyaW5nX0Zyb21TdHJpbmcoKSBjYW5ub3QgYmUgdXNlZCBiZWNhdXNlIGl0IGRvZXNuJ3Qgc3VwcG9ydCAlM2QgKi8KKyAgICB1bmljb2RlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICIlcyAlcyUzZCAlLjJkOiUuMmQ6JS4yZCAlZCIsCisgICAgICAgIHdkYXlfbmFtZVt0aW1lcHRyLT50bV93ZGF5XSwKKyAgICAgICAgbW9uX25hbWVbdGltZXB0ci0+dG1fbW9uXSwKKyAgICAgICAgdGltZXB0ci0+dG1fbWRheSwgdGltZXB0ci0+dG1faG91ciwKKyAgICAgICAgdGltZXB0ci0+dG1fbWluLCB0aW1lcHRyLT50bV9zZWMsCisgICAgICAgIDE5MDAgKyB0aW1lcHRyLT50bV95ZWFyKTsKKyAgICBpZiAodW5pY29kZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0ciA9IFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUpOworICAgIFB5X0RFQ1JFRih1bmljb2RlKTsKKyAgICByZXR1cm4gc3RyOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogdGltZV9hc2N0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqdHVwID0gTlVMTDsKICAgICBzdHJ1Y3QgdG0gYnVmOwotICAgIGNoYXIgKnA7CiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiYXNjdGltZSIsIDAsIDEsICZ0dXApKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAodHVwID09IE5VTEwpIHsKICAgICAgICAgdGltZV90IHR0ID0gdGltZShOVUxMKTsKICAgICAgICAgYnVmID0gKmxvY2FsdGltZSgmdHQpOwotICAgIH0gZWxzZSBpZiAoIWdldHRtYXJnKHR1cCwgJmJ1ZikpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHAgPSBhc2N0aW1lKCZidWYpOwotICAgIGlmIChwID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIHRpbWUiKTsKKyAgICB9IGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpCisgICAgICAgICAgICAgICB8fCAhY2hlY2t0bSgmYnVmKSkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHBbMjRdID09ICdcbicpCi0gICAgICAgIHBbMjRdID0gJ1wwJzsKLSAgICByZXR1cm4gUHlTdHJpbmdfRnJvbVN0cmluZyhwKTsKKyAgICByZXR1cm4gX2FzY3RpbWUoJmJ1Zik7CiB9CiAKIFB5RG9jX1NUUlZBUihhc2N0aW1lX2RvYywKQEAgLTU5Myw3ICs2ODksNyBAQAogewogICAgIFB5T2JqZWN0ICpvdCA9IE5VTEw7CiAgICAgdGltZV90IHR0OwotICAgIGNoYXIgKnA7CisgICAgc3RydWN0IHRtICpidWY7CiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJjdGltZSIsIDAsIDEsICZvdCkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjA3LDE0ICs3MDMsMTYgQEAKICAgICAgICAgaWYgKHR0ID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBwID0gY3RpbWUoJnR0KTsKLSAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAidW5jb252ZXJ0aWJsZSB0aW1lIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIGJ1ZiA9IGxvY2FsdGltZSgmdHQpOworICAgIGlmIChidWYgPT0gTlVMTCkgeworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkgeworICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICByZXR1cm4gUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX1ZhbHVlRXJyb3IpOwogICAgIH0KLSAgICBpZiAocFsyNF0gPT0gJ1xuJykKLSAgICAgICAgcFsyNF0gPSAnXDAnOwotICAgIHJldHVybiBQeVN0cmluZ19Gcm9tU3RyaW5nKHApOworICAgIHJldHVybiBfYXNjdGltZShidWYpOwogfQogCiBQeURvY19TVFJWQVIoY3RpbWVfZG9jLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlZGF0YS5jIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCmluZGV4IDZiMDFmYzcuLmRmNmZmZTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZWRhdGEuYworKysgYi9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKQEAgLTY2NCwxNCArNjY0LDE4IEBACiAgICAgICAgICBwYWlycywgc2luY2Ugd2UgYWx3YXlzIGhhdmUgZGVjb21wb3NlZCBkYXRhLiAqLwogICAgICAgaWYgKExCYXNlIDw9ICppICYmICppIDwgKExCYXNlK0xDb3VudCkgJiYKICAgICAgICAgICBpICsgMSA8IGVuZCAmJgotICAgICAgICAgIFZCYXNlIDw9IGlbMV0gJiYgaVsxXSA8PSAoVkJhc2UrVkNvdW50KSkgeworICAgICAgICAgIFZCYXNlIDw9IGlbMV0gJiYgaVsxXSA8IChWQmFzZStWQ291bnQpKSB7CisgICAgICAgICAgLyogY2hlY2sgTCBjaGFyYWN0ZXIgaXMgYSBtb2Rlcm4gbGVhZGluZyBjb25zb25hbnQgKDB4MTEwMCB+IDB4MTExMikKKyAgICAgICAgICAgICBhbmQgViBjaGFyYWN0ZXIgaXMgYSBtb2Rlcm4gdm93ZWwgKDB4MTE2MSB+IDB4MTE3NSkuICovCiAgICAgICAgICAgaW50IExJbmRleCwgVkluZGV4OwogICAgICAgICAgIExJbmRleCA9IGlbMF0gLSBMQmFzZTsKICAgICAgICAgICBWSW5kZXggPSBpWzFdIC0gVkJhc2U7CiAgICAgICAgICAgY29kZSA9IFNCYXNlICsgKExJbmRleCpWQ291bnQrVkluZGV4KSpUQ291bnQ7CiAgICAgICAgICAgaSs9MjsKICAgICAgICAgICBpZiAoaSA8IGVuZCAmJgotICAgICAgICAgICAgICBUQmFzZSA8PSAqaSAmJiAqaSA8PSAoVEJhc2UrVENvdW50KSkgeworICAgICAgICAgICAgICBUQmFzZSA8ICppICYmICppIDwgKFRCYXNlK1RDb3VudCkpIHsKKyAgICAgICAgICAgICAgLyogY2hlY2sgVCBjaGFyYWN0ZXIgaXMgYSBtb2Rlcm4gdHJhaWxpbmcgY29uc29uYW50CisgICAgICAgICAgICAgICAgICgweDExQTggfiAweDExQzIpLiAqLwogICAgICAgICAgICAgICBjb2RlICs9ICppLVRCYXNlOwogICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96aXBpbXBvcnQuYyBiL01vZHVsZXMvemlwaW1wb3J0LmMKaW5kZXggMGE3Y2QwZi4uMTY5MTc3MyAxMDA2NDQKLS0tIGEvTW9kdWxlcy96aXBpbXBvcnQuYworKysgYi9Nb2R1bGVzL3ppcGltcG9ydC5jCkBAIC00MywxMSArNDMsOSBAQAogc3RhdGljIFB5T2JqZWN0ICpaaXBJbXBvcnRFcnJvcjsKIHN0YXRpYyBQeU9iamVjdCAqemlwX2RpcmVjdG9yeV9jYWNoZSA9IE5VTEw7CiAKLS8vIEdPT0dMRShuYW56aGFuZyk6IENoYW5nZWQgdHdvIGZ1bmN0aW9ucyBiZWxvdyB0byBiZSB2aXNpYmxlIHRvIGxhdW5jaGVyIHNvCi0vLyB0aGF0IGxhdW5jaGVyIGNhbiBhY2Nlc3MgdGhlIHppcCBtZXRhZGF0YSBzZWN0aW9uLgogLyogZm9yd2FyZCBkZWNscyAqLwotUHlPYmplY3QgKnJlYWRfZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmFyY2hpdmUpOwotUHlPYmplY3QgKmdldF9kYXRhKGNvbnN0IGNoYXIgKmFyY2hpdmUsIFB5T2JqZWN0ICp0b2NfZW50cnkpOworc3RhdGljIFB5T2JqZWN0ICpyZWFkX2RpcmVjdG9yeShjb25zdCBjaGFyICphcmNoaXZlKTsKK3N0YXRpYyBQeU9iamVjdCAqZ2V0X2RhdGEoY29uc3QgY2hhciAqYXJjaGl2ZSwgUHlPYmplY3QgKnRvY19lbnRyeSk7CiBzdGF0aWMgUHlPYmplY3QgKmdldF9tb2R1bGVfY29kZShaaXBJbXBvcnRlciAqc2VsZiwgY2hhciAqZnVsbG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnBfaXNwYWNrYWdlLCBjaGFyICoqcF9tb2RwYXRoKTsKIApAQCAtNzA0LDcgKzcwMiw3IEBACiAgICBEaXJlY3RvcmllcyBjYW4gYmUgcmVjb2duaXplZCBieSB0aGUgdHJhaWxpbmcgU0VQIGluIHRoZSBuYW1lLAogICAgZGF0YV9zaXplIGFuZCBmaWxlX29mZnNldCBhcmUgMC4KICovCi1QeU9iamVjdCAqCitzdGF0aWMgUHlPYmplY3QgKgogcmVhZF9kaXJlY3RvcnkoY29uc3QgY2hhciAqYXJjaGl2ZSkKIHsKICAgICBQeU9iamVjdCAqZmlsZXMgPSBOVUxMOwpAQCAtOTE0LDcgKzkxMiw3IEBACiAKIC8qIEdpdmVuIGEgcGF0aCB0byBhIFppcCBmaWxlIGFuZCBhIHRvY19lbnRyeSwgcmV0dXJuIHRoZSAodW5jb21wcmVzc2VkKQogICAgZGF0YSBhcyBhIG5ldyByZWZlcmVuY2UuICovCi1QeU9iamVjdCAqCitzdGF0aWMgUHlPYmplY3QgKgogZ2V0X2RhdGEoY29uc3QgY2hhciAqYXJjaGl2ZSwgUHlPYmplY3QgKnRvY19lbnRyeSkKIHsKICAgICBQeU9iamVjdCAqcmF3X2RhdGEgPSBOVUxMLCAqZGF0YSwgKmRlY29tcHJlc3M7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvQ2hhbmdlTG9nIGIvTW9kdWxlcy96bGliL0NoYW5nZUxvZwppbmRleCBmMjJhYWJhLi4zMDE5OWE2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvQ2hhbmdlTG9nCisrKyBiL01vZHVsZXMvemxpYi9DaGFuZ2VMb2cKQEAgLTEsMTAgKzEsNTMgQEAKIAogICAgICAgICAgICAgICAgIENoYW5nZUxvZyBmaWxlIGZvciB6bGliCiAKK0NoYW5nZXMgaW4gMS4yLjExICgxNSBKYW4gMjAxNykKKy0gRml4IGRlZmxhdGUgc3RvcmVkIGJ1ZyB3aGVuIHB1bGxpbmcgbGFzdCBibG9jayBmcm9tIHdpbmRvdworLSBQZXJtaXQgaW1tZWRpYXRlIGRlZmxhdGVQYXJhbXMgY2hhbmdlcyBiZWZvcmUgYW55IGRlZmxhdGUgaW5wdXQKKworQ2hhbmdlcyBpbiAxLjIuMTAgKDIgSmFuIDIwMTcpCistIEF2b2lkIHdhcm5pbmdzIG9uIHNucHJpbnRmKCkgcmV0dXJuIHZhbHVlCistIEZpeCBidWcgaW4gZGVmbGF0ZV9zdG9yZWQoKSBmb3IgemVyby1sZW5ndGggaW5wdXQKKy0gRml4IGJ1ZyBpbiBnendyaXRlLmMgdGhhdCBwcm9kdWNlZCBjb3JydXB0IGd6aXAgZmlsZXMKKy0gUmVtb3ZlIGZpbGVzIHRvIGJlIGluc3RhbGxlZCBiZWZvcmUgY29weWluZyB0aGVtIGluIE1ha2VmaWxlLmluCistIEFkZCB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyB3aXRoIGFzc2VtYmxlciBjb2RlCisKK0NoYW5nZXMgaW4gMS4yLjkgKDMxIERlYyAyMDE2KQorLSBGaXggY29udHJpYi9taW5pemlwIHRvIHBlcm1pdCB1bnppcHBpbmcgd2l0aCBkZXNrdG9wIEFQSSBbWm91em91XQorLSBJbXByb3ZlIGNvbnRyaWIvYmxhc3QgdG8gcmV0dXJuIHVudXNlZCBieXRlcworLSBBc3N1cmUgdGhhdCBnem9mZnNldCgpIGlzIGNvcnJlY3Qgd2hlbiBhcHBlbmRpbmcKKy0gSW1wcm92ZSBjb21wcmVzcygpIGFuZCB1bmNvbXByZXNzKCkgdG8gc3VwcG9ydCBsYXJnZSBsZW5ndGhzCistIEZpeCBidWcgaW4gdGVzdC9leGFtcGxlLmMgd2hlcmUgZXJyb3IgY29kZSBub3Qgc2F2ZWQKKy0gUmVtZWR5IENvdmVyaXR5IHdhcm5pbmcgW1JhbmRlcnMtUGVocnNvbl0KKy0gSW1wcm92ZSBzcGVlZCBvZiBnenByaW50ZigpIGluIHRyYW5zcGFyZW50IG1vZGUKKy0gRml4IGluZmxhdGVJbml0MigpIGJ1ZyB3aGVuIHdpbmRvd0JpdHMgaXMgMTYgb3IgMzIKKy0gQ2hhbmdlIERFQlVHIG1hY3JvIHRvIFpMSUJfREVCVUcKKy0gQXZvaWQgdW5pbml0aWFsaXplZCBhY2Nlc3MgYnkgZ3pjbG9zZV93KCkKKy0gQWxsb3cgYnVpbGRpbmcgemxpYiBvdXRzaWRlIG9mIHRoZSBzb3VyY2UgZGlyZWN0b3J5CistIEZpeCBidWcgdGhhdCBhY2NlcHRlZCBpbnZhbGlkIHpsaWIgaGVhZGVyIHdoZW4gd2luZG93Qml0cyBpcyB6ZXJvCistIEZpeCBnenNlZWsoKSBwcm9ibGVtIG9uIE1pbkdXIGR1ZSB0byBidWdneSBfbHNlZWtpNjQgdGhlcmUKKy0gTG9vcCBvbiB3cml0ZSgpIGNhbGxzIGluIGd6d3JpdGUuYyBpbiBjYXNlIG9mIG5vbi1ibG9ja2luZyBJL08KKy0gQWRkIC0td2FybiAoLXcpIG9wdGlvbiB0byAuL2NvbmZpZ3VyZSBmb3IgbW9yZSBjb21waWxlciB3YXJuaW5ncworLSBSZWplY3QgYSB3aW5kb3cgc2l6ZSBvZiAyNTYgYnl0ZXMgaWYgbm90IHVzaW5nIHRoZSB6bGliIHdyYXBwZXIKKy0gRml4IGJ1ZyB3aGVuIGxldmVsIDAgdXNlZCB3aXRoIFpfSFVGRk1BTiBvciBaX1JMRQorLSBBZGQgLS1kZWJ1ZyAoLWQpIG9wdGlvbiB0byAuL2NvbmZpZ3VyZSB0byBkZWZpbmUgWkxJQl9ERUJVRworLSBGaXggYnVncyBpbiBjcmVhdGluZyBhIHZlcnkgbGFyZ2UgZ3ppcCBoZWFkZXIKKy0gQWRkIHVuY29tcHJlc3MyKCkgZnVuY3Rpb24sIHdoaWNoIHJldHVybnMgdGhlIGlucHV0IHNpemUgdXNlZAorLSBBc3N1cmUgdGhhdCBkZWZsYXRlUGFyYW1zKCkgd2lsbCBub3Qgc3dpdGNoIGZ1bmN0aW9ucyBtaWQtYmxvY2sKKy0gRHJhbWF0aWNhbGx5IHNwZWVkIHVwIGRlZmxhdGlvbiBmb3IgbGV2ZWwgMCAoc3RvcmluZykKKy0gQWRkIGd6ZnJlYWQoKSwgZHVwbGljYXRpbmcgdGhlIGludGVyZmFjZSBvZiBmcmVhZCgpCistIEFkZCBnemZ3cml0ZSgpLCBkdXBsaWNhdGluZyB0aGUgaW50ZXJmYWNlIG9mIGZ3cml0ZSgpCistIEFkZCBkZWZsYXRlR2V0RGljdGlvbmFyeSgpIGZ1bmN0aW9uCistIFVzZSBzbnByaW50ZigpIGZvciBsYXRlciB2ZXJzaW9ucyBvZiBNaWNyb3NvZnQgQworLSBGaXggKkluaXQgbWFjcm9zIHRvIHVzZSB6XyBwcmVmaXggd2hlbiByZXF1ZXN0ZWQKKy0gUmVwbGFjZSBhczQwMCB3aXRoIG9zNDAwIGZvciBPUy80MDAgc3VwcG9ydCBbTW9ubmVyYXRdCistIEFkZCBjcmMzMl96KCkgYW5kIGFkbGVyMzJfeigpIGZ1bmN0aW9ucyB3aXRoIHNpemVfdCBsZW5ndGhzCistIFVwZGF0ZSBWaXN1YWwgU3R1ZGlvIHByb2plY3QgZmlsZXMgW0FyYUhhYW5dCisKIENoYW5nZXMgaW4gMS4yLjggKDI4IEFwciAyMDEzKQogLSBVcGRhdGUgY29udHJpYi9taW5pemlwL2lvd2luMzIuYyBmb3IgV2luZG93cyBSVCBbVm9sbGFudF0KIC0gRG8gbm90IGZvcmNlIFpfQ09OU1QgZm9yIEMrKwotLSBDbGVhbiB1cCBjb250cmliL3ZzdHVkaW8gW1Jvp10KKy0gQ2xlYW4gdXAgY29udHJpYi92c3R1ZGlvIFtSb8OfXQogLSBDb3JyZWN0IHNwZWxsaW5nIGVycm9yIGluIHpsaWIuaAogLSBGaXggbWl4ZWQgbGluZSBlbmRpbmdzIGluIGNvbnRyaWIvdnN0dWRpbwogCkBAIC0zNCw3ICs3Nyw3IEBACiAtIENsZWFuIHVwIHRoZSB1c2FnZSBvZiB6X2NvbnN0IGFuZCByZXNwZWN0IGNvbnN0IHVzYWdlIHdpdGhpbiB6bGliCiAtIENsZWFuIHVwIGV4YW1wbGVzL2d6bG9nLltjaF0gY29tcGFyaXNvbnMgb2YgZGlmZmVyZW50IHR5cGVzCiAtIEF2b2lkIHNoaWZ0IGVxdWFsIHRvIGJpdHMgaW4gdHlwZSAoY2F1c2VkIGVuZGxlc3MgbG9vcCkKLS0gRml4IHVuaW50aWFsaXplZCB2YWx1ZSBidWcgaW4gZ3pwdXRjKCkgaW50cm9kdWNlZCBieSBjb25zdCBwYXRjaGVzCistIEZpeCB1bmluaXRpYWxpemVkIHZhbHVlIGJ1ZyBpbiBnenB1dGMoKSBpbnRyb2R1Y2VkIGJ5IGNvbnN0IHBhdGNoZXMKIC0gRml4IG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yIGluIGV4YW1wbGVzL3pyYW4uYyBbTm9yXQogLSBGaXggYnVnIHdoZXJlIGd6b3BlbigpLCBnemNsb3NlKCkgd291bGQgd3JpdGUgYW4gZW1wdHkgZmlsZQogLSBGaXggYnVnIGluIGd6Y2xvc2UoKSB3aGVuIGd6d3JpdGUoKSBydW5zIG91dCBvZiBtZW1vcnkKQEAgLTE5NCw3ICsyMzcsNyBAQAogLSBBZGQgYSB0cmFuc3BhcmVudCB3cml0ZSBtb2RlIHRvIGd6b3BlbigpIHdoZW4gJ1QnIGlzIGluIHRoZSBtb2RlCiAtIFVwZGF0ZSBweXRob24gbGluayBpbiB6bGliIG1hbiBwYWdlCiAtIEdldCBpbmZmaXhlZC5oIGFuZCBNQUtFRklYRUQgcmVzdWx0IHRvIG1hdGNoCi0tIEFkZCBhIC4vY29uZmlnIC0tc29sbyBvcHRpb24gdG8gbWFrZSB6bGliIHN1YnNldCB3aXRoIG5vIGxpYmFyeSB1c2UKKy0gQWRkIGEgLi9jb25maWcgLS1zb2xvIG9wdGlvbiB0byBtYWtlIHpsaWIgc3Vic2V0IHdpdGggbm8gbGlicmFyeSB1c2UKIC0gQWRkIHVuZG9jdW1lbnRlZCBpbmZsYXRlUmVzZXRLZWVwKCkgZnVuY3Rpb24gZm9yIENBQiBmaWxlIGRlY29kaW5nCiAtIEFkZCAtLWNvdmVyIG9wdGlvbiB0byAuL2NvbmZpZ3VyZSBmb3IgZ2NjIGNvdmVyYWdlIHRlc3RpbmcKIC0gQWRkICNkZWZpbmUgWkxJQl9DT05TVCBvcHRpb24gdG8gdXNlIGNvbnN0IGluIHRoZSB6X3N0cmVhbSBpbnRlcmZhY2UKQEAgLTU2NCw3ICs2MDcsNyBAQAogLSBVcGRhdGUgbWFrZV92bXMuY29tIFtaaW5zZXJdCiAtIFVzZSAtZlBJQyBmb3Igc2hhcmVkIGJ1aWxkIGluIGNvbmZpZ3VyZSBbVGVyZWRlc2FpLCBOaWNob2xzb25dCiAtIFVzZSBvbmx5IG1ham9yIHZlcnNpb24gbnVtYmVyIGZvciBsaWJ6LnNvIG9uIElSSVggYW5kIE9TRjEgW1JlaW5ob2xkdHNlbl0KLS0gVXNlIGZkb3BlbigpIChub3QgX2Zkb3BlbigpKSBmb3IgSW50ZXJpeCBpbiB6dXRpbC5oIFtCimNrXQorLSBVc2UgZmRvcGVuKCkgKG5vdCBfZmRvcGVuKCkpIGZvciBJbnRlcml4IGluIHp1dGlsLmggW0LDpGNrXQogLSBBZGQgc29tZSBGQVEgZW50cmllcyBhYm91dCB0aGUgY29udHJpYiBkaXJlY3RvcnkKIC0gVXBkYXRlIHRoZSBNVlMgcXVlc3Rpb24gaW4gdGhlIEZBUQogLSBBdm9pZCBleHRyYW5lb3VzIHJlYWRzIGFmdGVyIEVPRiBpbiBnemlvLmMgW0Jyb3duXQpAQCAtMTE3OCw3ICsxMjIxLDcgQEAKICAgICAgICAgMzg2IGFzbSBjb2RlIHJlcGxhY2luZyBsb25nZXN0X21hdGNoKCkuCiAgICBjb250cmliL2lvc3RyZWFtLyBieSBLZXZpbiBSdWxhbmQgPGtldmluQHJvZGluLnd1c3RsLmVkdT4KICAgICAgICAgQSBDKysgSS9PIHN0cmVhbXMgaW50ZXJmYWNlIHRvIHRoZSB6bGliIGd6KiBmdW5jdGlvbnMKLSAgIGNvbnRyaWIvaW9zdHJlYW0yLyAgYnkgVHlnZSBM+HZzZXQgPFR5Z2UuTG92c2V0QGNtci5ubz4KKyAgIGNvbnRyaWIvaW9zdHJlYW0yLyAgYnkgVHlnZSBMw7h2c2V0IDxUeWdlLkxvdnNldEBjbXIubm8+CiAgICAgICAgIEFub3RoZXIgQysrIEkvTyBzdHJlYW1zIGludGVyZmFjZQogICAgY29udHJpYi91bnRnei8gIGJ5ICJQZWRybyBBLiBBcmFuZGEgR3V0aVxpcnJleiIgPHBhYWdAdGlkLmVzPgogICAgICAgICBBIHZlcnkgc2ltcGxlIHRhci5neiBmaWxlIGV4dHJhY3RvciB1c2luZyB6bGliCkBAIC0xMjY3LDcgKzEzMTAsNyBAQAogLSBmaXggYXJyYXkgb3ZlcmxheSBpbiBkZWZsYXRlLmMgd2hpY2ggc29tZXRpbWVzIGNhdXNlZCBiYWQgY29tcHJlc3NlZCBkYXRhCiAtIGZpeCBpbmZsYXRlIGJ1ZyB3aXRoIGVtcHR5IHN0b3JlZCBibG9jawogLSBmaXggTVNET1MgbWVkaXVtIG1vZGVsIHdoaWNoIHdhcyBicm9rZW4gaW4gMC45OQotLSBmaXggZGVmbGF0ZVBhcmFtcygpIHdoaWNoIGNvdWxkIGdlbmVyYXRlZCBiYWQgY29tcHJlc3NlZCBkYXRhLgorLSBmaXggZGVmbGF0ZVBhcmFtcygpIHdoaWNoIGNvdWxkIGdlbmVyYXRlIGJhZCBjb21wcmVzc2VkIGRhdGEuCiAtIEJ5dGVmIGlzIGRlZmluZSdkIGluc3RlYWQgb2YgdHlwZWRlZidlZCAod29yayBhcm91bmQgQm9ybGFuZCBidWcpCiAtIGFkZGVkIGFuIElOREVYIGZpbGUKIC0gbmV3IG1ha2VmaWxlcyBmb3IgREpHUFAgKE1ha2VmaWxlLmRqMiksIDMyLWJpdCBCb3JsYW5kIChNYWtlZmlsZS5iMzIpLApkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL01ha2VmaWxlLmluIGIvTW9kdWxlcy96bGliL01ha2VmaWxlLmluCmluZGV4IGM2MWFhMzAuLjE4NTIxOTIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYi9NYWtlZmlsZS5pbgorKysgYi9Nb2R1bGVzL3psaWIvTWFrZWZpbGUuaW4KQEAgLTEsNSArMSw1IEBACiAjIE1ha2VmaWxlIGZvciB6bGliCi0jIENvcHlyaWdodCAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHksIE1hcmsgQWRsZXIKKyMgQ29weXJpZ2h0IChDKSAxOTk1LTIwMTYgSmVhbi1sb3VwIEdhaWxseSwgTWFyayBBZGxlcgogIyBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAKICMgVG8gY29tcGlsZSBhbmQgdGVzdCwgdHlwZToKQEAgLTIwLDcgKzIwLDcgQEAKIAogQ0ZMQUdTPS1PCiAjQ0ZMQUdTPS1PIC1ETUFYX1dCSVRTPTE0IC1ETUFYX01FTV9MRVZFTD03Ci0jQ0ZMQUdTPS1nIC1EREVCVUcKKyNDRkxBR1M9LWcgLURaTElCX0RFQlVHCiAjQ0ZMQUdTPS1PMyAtV2FsbCAtV3dyaXRlLXN0cmluZ3MgLVdwb2ludGVyLWFyaXRoIC1XY29udmVyc2lvbiBcCiAjICAgICAgICAgICAtV3N0cmljdC1wcm90b3R5cGVzIC1XbWlzc2luZy1wcm90b3R5cGVzCiAKQEAgLTMyLDcgKzMyLDcgQEAKIAogU1RBVElDTElCPWxpYnouYQogU0hBUkVETElCPWxpYnouc28KLVNIQVJFRExJQlY9bGliei5zby4xLjIuOAorU0hBUkVETElCVj1saWJ6LnNvLjEuMi4xMAogU0hBUkVETElCTT1saWJ6LnNvLjEKIExJQlM9JChTVEFUSUNMSUIpICQoU0hBUkVETElCVikKIApAQCAtNTMsNiArNTMsOSBAQAogbWFuZGlyID0gJHtwcmVmaXh9L3NoYXJlL21hbgogbWFuM2RpciA9ICR7bWFuZGlyfS9tYW4zCiBwa2djb25maWdkaXIgPSAke2xpYmRpcn0vcGtnY29uZmlnCitTUkNESVI9CitaSU5DPQorWklOQ09VVD0tSS4KIAogT0JKWiA9IGFkbGVyMzIubyBjcmMzMi5vIGRlZmxhdGUubyBpbmZiYWNrLm8gaW5mZmFzdC5vIGluZmxhdGUubyBpbmZ0cmVlcy5vIHRyZWVzLm8genV0aWwubwogT0JKRyA9IGNvbXByZXNzLm8gdW5jb21wci5vIGd6Y2xvc2UubyBnemxpYi5vIGd6cmVhZC5vIGd6d3JpdGUubwpAQCAtMTEzLDggKzExNiw4IEBACiAJZmk7IFwKIAlybSAtZiAkJFRNUDY0CiAKLWluZmNvdmVyLm86IHRlc3QvaW5mY292ZXIuYyB6bGliLmggemNvbmYuaAotCSQoQ0MpICQoQ0ZMQUdTKSAtSS4gLWMgLW8gJEAgdGVzdC9pbmZjb3Zlci5jCitpbmZjb3Zlci5vOiAkKFNSQ0RJUil0ZXN0L2luZmNvdmVyLmMgJChTUkNESVIpemxpYi5oIHpjb25mLmgKKwkkKENDKSAkKENGTEFHUykgJChaSU5DT1VUKSAtYyAtbyAkQCAkKFNSQ0RJUil0ZXN0L2luZmNvdmVyLmMKIAogaW5mY292ZXI6IGluZmNvdmVyLm8gbGliei5hCiAJJChDQykgJChDRkxBR1MpIC1vICRAIGluZmNvdmVyLm8gbGliei5hCkBAIC0xNDAsMjQgKzE0MywxNDAgQEAKIAltdiBfbWF0Y2gubyBtYXRjaC5sbwogCXJtIC1mIF9tYXRjaC5zCiAKLWV4YW1wbGUubzogdGVzdC9leGFtcGxlLmMgemxpYi5oIHpjb25mLmgKLQkkKENDKSAkKENGTEFHUykgLUkuIC1jIC1vICRAIHRlc3QvZXhhbXBsZS5jCitleGFtcGxlLm86ICQoU1JDRElSKXRlc3QvZXhhbXBsZS5jICQoU1JDRElSKXpsaWIuaCB6Y29uZi5oCisJJChDQykgJChDRkxBR1MpICQoWklOQ09VVCkgLWMgLW8gJEAgJChTUkNESVIpdGVzdC9leGFtcGxlLmMKIAotbWluaWd6aXAubzogdGVzdC9taW5pZ3ppcC5jIHpsaWIuaCB6Y29uZi5oCi0JJChDQykgJChDRkxBR1MpIC1JLiAtYyAtbyAkQCB0ZXN0L21pbmlnemlwLmMKK21pbmlnemlwLm86ICQoU1JDRElSKXRlc3QvbWluaWd6aXAuYyAkKFNSQ0RJUil6bGliLmggemNvbmYuaAorCSQoQ0MpICQoQ0ZMQUdTKSAkKFpJTkNPVVQpIC1jIC1vICRAICQoU1JDRElSKXRlc3QvbWluaWd6aXAuYwogCi1leGFtcGxlNjQubzogdGVzdC9leGFtcGxlLmMgemxpYi5oIHpjb25mLmgKLQkkKENDKSAkKENGTEFHUykgLUkuIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLWMgLW8gJEAgdGVzdC9leGFtcGxlLmMKK2V4YW1wbGU2NC5vOiAkKFNSQ0RJUil0ZXN0L2V4YW1wbGUuYyAkKFNSQ0RJUil6bGliLmggemNvbmYuaAorCSQoQ0MpICQoQ0ZMQUdTKSAkKFpJTkNPVVQpIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLWMgLW8gJEAgJChTUkNESVIpdGVzdC9leGFtcGxlLmMKIAotbWluaWd6aXA2NC5vOiB0ZXN0L21pbmlnemlwLmMgemxpYi5oIHpjb25mLmgKLQkkKENDKSAkKENGTEFHUykgLUkuIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLWMgLW8gJEAgdGVzdC9taW5pZ3ppcC5jCittaW5pZ3ppcDY0Lm86ICQoU1JDRElSKXRlc3QvbWluaWd6aXAuYyAkKFNSQ0RJUil6bGliLmggemNvbmYuaAorCSQoQ0MpICQoQ0ZMQUdTKSAkKFpJTkNPVVQpIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLWMgLW8gJEAgJChTUkNESVIpdGVzdC9taW5pZ3ppcC5jCiAKLS5TVUZGSVhFUzogLmxvCiAKLS5jLmxvOgorYWRsZXIzMi5vOiAkKFNSQ0RJUilhZGxlcjMyLmMKKwkkKENDKSAkKENGTEFHUykgJChaSU5DKSAtYyAtbyAkQCAkKFNSQ0RJUilhZGxlcjMyLmMKKworY3JjMzIubzogJChTUkNESVIpY3JjMzIuYworCSQoQ0MpICQoQ0ZMQUdTKSAkKFpJTkMpIC1jIC1vICRAICQoU1JDRElSKWNyYzMyLmMKKworZGVmbGF0ZS5vOiAkKFNSQ0RJUilkZWZsYXRlLmMKKwkkKENDKSAkKENGTEFHUykgJChaSU5DKSAtYyAtbyAkQCAkKFNSQ0RJUilkZWZsYXRlLmMKKworaW5mYmFjay5vOiAkKFNSQ0RJUilpbmZiYWNrLmMKKwkkKENDKSAkKENGTEFHUykgJChaSU5DKSAtYyAtbyAkQCAkKFNSQ0RJUilpbmZiYWNrLmMKKworaW5mZmFzdC5vOiAkKFNSQ0RJUilpbmZmYXN0LmMKKwkkKENDKSAkKENGTEFHUykgJChaSU5DKSAtYyAtbyAkQCAkKFNSQ0RJUilpbmZmYXN0LmMKKworaW5mbGF0ZS5vOiAkKFNSQ0RJUilpbmZsYXRlLmMKKwkkKENDKSAkKENGTEFHUykgJChaSU5DKSAtYyAtbyAkQCAkKFNSQ0RJUilpbmZsYXRlLmMKKworaW5mdHJlZXMubzogJChTUkNESVIpaW5mdHJlZXMuYworCSQoQ0MpICQoQ0ZMQUdTKSAkKFpJTkMpIC1jIC1vICRAICQoU1JDRElSKWluZnRyZWVzLmMKKwordHJlZXMubzogJChTUkNESVIpdHJlZXMuYworCSQoQ0MpICQoQ0ZMQUdTKSAkKFpJTkMpIC1jIC1vICRAICQoU1JDRElSKXRyZWVzLmMKKworenV0aWwubzogJChTUkNESVIpenV0aWwuYworCSQoQ0MpICQoQ0ZMQUdTKSAkKFpJTkMpIC1jIC1vICRAICQoU1JDRElSKXp1dGlsLmMKKworY29tcHJlc3MubzogJChTUkNESVIpY29tcHJlc3MuYworCSQoQ0MpICQoQ0ZMQUdTKSAkKFpJTkMpIC1jIC1vICRAICQoU1JDRElSKWNvbXByZXNzLmMKKwordW5jb21wci5vOiAkKFNSQ0RJUil1bmNvbXByLmMKKwkkKENDKSAkKENGTEFHUykgJChaSU5DKSAtYyAtbyAkQCAkKFNSQ0RJUil1bmNvbXByLmMKKworZ3pjbG9zZS5vOiAkKFNSQ0RJUilnemNsb3NlLmMKKwkkKENDKSAkKENGTEFHUykgJChaSU5DKSAtYyAtbyAkQCAkKFNSQ0RJUilnemNsb3NlLmMKKworZ3psaWIubzogJChTUkNESVIpZ3psaWIuYworCSQoQ0MpICQoQ0ZMQUdTKSAkKFpJTkMpIC1jIC1vICRAICQoU1JDRElSKWd6bGliLmMKKworZ3pyZWFkLm86ICQoU1JDRElSKWd6cmVhZC5jCisJJChDQykgJChDRkxBR1MpICQoWklOQykgLWMgLW8gJEAgJChTUkNESVIpZ3pyZWFkLmMKKworZ3p3cml0ZS5vOiAkKFNSQ0RJUilnendyaXRlLmMKKwkkKENDKSAkKENGTEFHUykgJChaSU5DKSAtYyAtbyAkQCAkKFNSQ0RJUilnendyaXRlLmMKKworCithZGxlcjMyLmxvOiAkKFNSQ0RJUilhZGxlcjMyLmMKIAktQG1rZGlyIG9ianMgMj4vZGV2L251bGwgfHwgdGVzdCAtZCBvYmpzCi0JJChDQykgJChTRkxBR1MpIC1EUElDIC1jIC1vIG9ianMvJCoubyAkPAotCS1AbXYgb2Jqcy8kKi5vICRACisJJChDQykgJChTRkxBR1MpICQoWklOQykgLURQSUMgLWMgLW8gb2Jqcy9hZGxlcjMyLm8gJChTUkNESVIpYWRsZXIzMi5jCisJLUBtdiBvYmpzL2FkbGVyMzIubyAkQAorCitjcmMzMi5sbzogJChTUkNESVIpY3JjMzIuYworCS1AbWtkaXIgb2JqcyAyPi9kZXYvbnVsbCB8fCB0ZXN0IC1kIG9ianMKKwkkKENDKSAkKFNGTEFHUykgJChaSU5DKSAtRFBJQyAtYyAtbyBvYmpzL2NyYzMyLm8gJChTUkNESVIpY3JjMzIuYworCS1AbXYgb2Jqcy9jcmMzMi5vICRACisKK2RlZmxhdGUubG86ICQoU1JDRElSKWRlZmxhdGUuYworCS1AbWtkaXIgb2JqcyAyPi9kZXYvbnVsbCB8fCB0ZXN0IC1kIG9ianMKKwkkKENDKSAkKFNGTEFHUykgJChaSU5DKSAtRFBJQyAtYyAtbyBvYmpzL2RlZmxhdGUubyAkKFNSQ0RJUilkZWZsYXRlLmMKKwktQG12IG9ianMvZGVmbGF0ZS5vICRACisKK2luZmJhY2subG86ICQoU1JDRElSKWluZmJhY2suYworCS1AbWtkaXIgb2JqcyAyPi9kZXYvbnVsbCB8fCB0ZXN0IC1kIG9ianMKKwkkKENDKSAkKFNGTEFHUykgJChaSU5DKSAtRFBJQyAtYyAtbyBvYmpzL2luZmJhY2subyAkKFNSQ0RJUilpbmZiYWNrLmMKKwktQG12IG9ianMvaW5mYmFjay5vICRACisKK2luZmZhc3QubG86ICQoU1JDRElSKWluZmZhc3QuYworCS1AbWtkaXIgb2JqcyAyPi9kZXYvbnVsbCB8fCB0ZXN0IC1kIG9ianMKKwkkKENDKSAkKFNGTEFHUykgJChaSU5DKSAtRFBJQyAtYyAtbyBvYmpzL2luZmZhc3QubyAkKFNSQ0RJUilpbmZmYXN0LmMKKwktQG12IG9ianMvaW5mZmFzdC5vICRACisKK2luZmxhdGUubG86ICQoU1JDRElSKWluZmxhdGUuYworCS1AbWtkaXIgb2JqcyAyPi9kZXYvbnVsbCB8fCB0ZXN0IC1kIG9ianMKKwkkKENDKSAkKFNGTEFHUykgJChaSU5DKSAtRFBJQyAtYyAtbyBvYmpzL2luZmxhdGUubyAkKFNSQ0RJUilpbmZsYXRlLmMKKwktQG12IG9ianMvaW5mbGF0ZS5vICRACisKK2luZnRyZWVzLmxvOiAkKFNSQ0RJUilpbmZ0cmVlcy5jCisJLUBta2RpciBvYmpzIDI+L2Rldi9udWxsIHx8IHRlc3QgLWQgb2JqcworCSQoQ0MpICQoU0ZMQUdTKSAkKFpJTkMpIC1EUElDIC1jIC1vIG9ianMvaW5mdHJlZXMubyAkKFNSQ0RJUilpbmZ0cmVlcy5jCisJLUBtdiBvYmpzL2luZnRyZWVzLm8gJEAKKwordHJlZXMubG86ICQoU1JDRElSKXRyZWVzLmMKKwktQG1rZGlyIG9ianMgMj4vZGV2L251bGwgfHwgdGVzdCAtZCBvYmpzCisJJChDQykgJChTRkxBR1MpICQoWklOQykgLURQSUMgLWMgLW8gb2Jqcy90cmVlcy5vICQoU1JDRElSKXRyZWVzLmMKKwktQG12IG9ianMvdHJlZXMubyAkQAorCit6dXRpbC5sbzogJChTUkNESVIpenV0aWwuYworCS1AbWtkaXIgb2JqcyAyPi9kZXYvbnVsbCB8fCB0ZXN0IC1kIG9ianMKKwkkKENDKSAkKFNGTEFHUykgJChaSU5DKSAtRFBJQyAtYyAtbyBvYmpzL3p1dGlsLm8gJChTUkNESVIpenV0aWwuYworCS1AbXYgb2Jqcy96dXRpbC5vICRACisKK2NvbXByZXNzLmxvOiAkKFNSQ0RJUiljb21wcmVzcy5jCisJLUBta2RpciBvYmpzIDI+L2Rldi9udWxsIHx8IHRlc3QgLWQgb2JqcworCSQoQ0MpICQoU0ZMQUdTKSAkKFpJTkMpIC1EUElDIC1jIC1vIG9ianMvY29tcHJlc3MubyAkKFNSQ0RJUiljb21wcmVzcy5jCisJLUBtdiBvYmpzL2NvbXByZXNzLm8gJEAKKwordW5jb21wci5sbzogJChTUkNESVIpdW5jb21wci5jCisJLUBta2RpciBvYmpzIDI+L2Rldi9udWxsIHx8IHRlc3QgLWQgb2JqcworCSQoQ0MpICQoU0ZMQUdTKSAkKFpJTkMpIC1EUElDIC1jIC1vIG9ianMvdW5jb21wci5vICQoU1JDRElSKXVuY29tcHIuYworCS1AbXYgb2Jqcy91bmNvbXByLm8gJEAKKworZ3pjbG9zZS5sbzogJChTUkNESVIpZ3pjbG9zZS5jCisJLUBta2RpciBvYmpzIDI+L2Rldi9udWxsIHx8IHRlc3QgLWQgb2JqcworCSQoQ0MpICQoU0ZMQUdTKSAkKFpJTkMpIC1EUElDIC1jIC1vIG9ianMvZ3pjbG9zZS5vICQoU1JDRElSKWd6Y2xvc2UuYworCS1AbXYgb2Jqcy9nemNsb3NlLm8gJEAKKworZ3psaWIubG86ICQoU1JDRElSKWd6bGliLmMKKwktQG1rZGlyIG9ianMgMj4vZGV2L251bGwgfHwgdGVzdCAtZCBvYmpzCisJJChDQykgJChTRkxBR1MpICQoWklOQykgLURQSUMgLWMgLW8gb2Jqcy9nemxpYi5vICQoU1JDRElSKWd6bGliLmMKKwktQG12IG9ianMvZ3psaWIubyAkQAorCitnenJlYWQubG86ICQoU1JDRElSKWd6cmVhZC5jCisJLUBta2RpciBvYmpzIDI+L2Rldi9udWxsIHx8IHRlc3QgLWQgb2JqcworCSQoQ0MpICQoU0ZMQUdTKSAkKFpJTkMpIC1EUElDIC1jIC1vIG9ianMvZ3pyZWFkLm8gJChTUkNESVIpZ3pyZWFkLmMKKwktQG12IG9ianMvZ3pyZWFkLm8gJEAKKworZ3p3cml0ZS5sbzogJChTUkNESVIpZ3p3cml0ZS5jCisJLUBta2RpciBvYmpzIDI+L2Rldi9udWxsIHx8IHRlc3QgLWQgb2JqcworCSQoQ0MpICQoU0ZMQUdTKSAkKFpJTkMpIC1EUElDIC1jIC1vIG9ianMvZ3p3cml0ZS5vICQoU1JDRElSKWd6d3JpdGUuYworCS1AbXYgb2Jqcy9nendyaXRlLm8gJEAKKwogCiBwbGFjZWJvICQoU0hBUkVETElCVik6ICQoUElDX09CSlMpIGxpYnouYQogCSQoTERTSEFSRUQpICQoU0ZMQUdTKSAtbyAkQCAkKFBJQ19PQkpTKSAkKExEU0hBUkVETElCQykgJChMREZMQUdTKQpAQCAtMTkwLDEwICszMDksMTIgQEAKIAktQGlmIFsgISAtZCAkKERFU1RESVIpJChzaGFyZWRsaWJkaXIpIF07IHRoZW4gbWtkaXIgLXAgJChERVNURElSKSQoc2hhcmVkbGliZGlyKTsgZmkKIAktQGlmIFsgISAtZCAkKERFU1RESVIpJChtYW4zZGlyKSAgICAgIF07IHRoZW4gbWtkaXIgLXAgJChERVNURElSKSQobWFuM2Rpcik7IGZpCiAJLUBpZiBbICEgLWQgJChERVNURElSKSQocGtnY29uZmlnZGlyKSBdOyB0aGVuIG1rZGlyIC1wICQoREVTVERJUikkKHBrZ2NvbmZpZ2Rpcik7IGZpCisJcm0gLWYgJChERVNURElSKSQobGliZGlyKS8kKFNUQVRJQ0xJQikKIAljcCAkKFNUQVRJQ0xJQikgJChERVNURElSKSQobGliZGlyKQogCWNobW9kIDY0NCAkKERFU1RESVIpJChsaWJkaXIpLyQoU1RBVElDTElCKQogCS1AKCQoUkFOTElCKSAkKERFU1RESVIpJChsaWJkaXIpL2xpYnouYSB8fCB0cnVlKSA+L2Rldi9udWxsIDI+JjEKIAktQGlmIHRlc3QgLW4gIiQoU0hBUkVETElCVikiOyB0aGVuIFwKKwkgIHJtIC1mICQoREVTVERJUikkKHNoYXJlZGxpYmRpcikvJChTSEFSRURMSUJWKTsgXAogCSAgY3AgJChTSEFSRURMSUJWKSAkKERFU1RESVIpJChzaGFyZWRsaWJkaXIpOyBcCiAJICBlY2hvICJjcCAkKFNIQVJFRExJQlYpICQoREVTVERJUikkKHNoYXJlZGxpYmRpcikiOyBcCiAJICBjaG1vZCA3NTUgJChERVNURElSKSQoc2hhcmVkbGliZGlyKS8kKFNIQVJFRExJQlYpOyBcCkBAIC0yMDMsOCArMzI0LDEwIEBACiAJICBsbiAtcyAkKFNIQVJFRExJQlYpICQoREVTVERJUikkKHNoYXJlZGxpYmRpcikvJChTSEFSRURMSUJNKTsgXAogCSAgKCQoTERDT05GSUcpIHx8IHRydWUpICA+L2Rldi9udWxsIDI+JjE7IFwKIAlmaQotCWNwIHpsaWIuMyAkKERFU1RESVIpJChtYW4zZGlyKQorCXJtIC1mICQoREVTVERJUikkKG1hbjNkaXIpL3psaWIuMworCWNwICQoU1JDRElSKXpsaWIuMyAkKERFU1RESVIpJChtYW4zZGlyKQogCWNobW9kIDY0NCAkKERFU1RESVIpJChtYW4zZGlyKS96bGliLjMKKwlybSAtZiAkKERFU1RESVIpJChwa2djb25maWdkaXIpL3psaWIucGMKIAljcCB6bGliLnBjICQoREVTVERJUikkKHBrZ2NvbmZpZ2RpcikKIAljaG1vZCA2NDQgJChERVNURElSKSQocGtnY29uZmlnZGlyKS96bGliLnBjCiAjIFRoZSByYW5saWIgaW4gaW5zdGFsbCBpcyBuZWVkZWQgb24gTmVYVFNURVAgd2hpY2ggY2hlY2tzIGZpbGUgdGltZXMKQEAgLTIxMiw3ICszMzUsOCBAQAogCiBpbnN0YWxsOiBpbnN0YWxsLWxpYnMKIAktQGlmIFsgISAtZCAkKERFU1RESVIpJChpbmNsdWRlZGlyKSAgIF07IHRoZW4gbWtkaXIgLXAgJChERVNURElSKSQoaW5jbHVkZWRpcik7IGZpCi0JY3AgemxpYi5oIHpjb25mLmggJChERVNURElSKSQoaW5jbHVkZWRpcikKKwlybSAtZiAkKERFU1RESVIpJChpbmNsdWRlZGlyKS96bGliLmggJChERVNURElSKSQoaW5jbHVkZWRpcikvemNvbmYuaAorCWNwICQoU1JDRElSKXpsaWIuaCB6Y29uZi5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpCiAJY2htb2QgNjQ0ICQoREVTVERJUikkKGluY2x1ZGVkaXIpL3psaWIuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS96Y29uZi5oCiAKIHVuaW5zdGFsbDoKQEAgLTIyNiwxOCArMzUwLDE4IEBACiAKIGRvY3M6IHpsaWIuMy5wZGYKIAotemxpYi4zLnBkZjogemxpYi4zCi0JZ3JvZmYgLW1hbmRvYyAtZiBIIC1UIHBzIHpsaWIuMyB8IHBzMnBkZiAtIHpsaWIuMy5wZGYKK3psaWIuMy5wZGY6ICQoU1JDRElSKXpsaWIuMworCWdyb2ZmIC1tYW5kb2MgLWYgSCAtVCBwcyAkKFNSQ0RJUil6bGliLjMgfCBwczJwZGYgLSAkQAogCi16Y29uZi5oLmNtYWtlaW46IHpjb25mLmguaW4KK3pjb25mLmguY21ha2VpbjogJChTUkNESVIpemNvbmYuaC5pbgogCS1AIFRFTVBGSUxFPXpjb25maF8kJDsgXAogCWVjaG8gIi8jZGVmaW5lIFpDT05GX0gvIGFcXFxcXG4jY21ha2VkZWZpbmUgWl9QUkVGSVhcXFxcXG4jY21ha2VkZWZpbmUgWl9IQVZFX1VOSVNURF9IXG4iID4+ICQkVEVNUEZJTEUgJiZcCi0Jc2VkIC1mICQkVEVNUEZJTEUgemNvbmYuaC5pbiA+IHpjb25mLmguY21ha2VpbiAmJlwKLQl0b3VjaCAtciB6Y29uZi5oLmluIHpjb25mLmguY21ha2VpbiAmJlwKKwlzZWQgLWYgJCRURU1QRklMRSAkKFNSQ0RJUil6Y29uZi5oLmluID4gJEAgJiZcCisJdG91Y2ggLXIgJChTUkNESVIpemNvbmYuaC5pbiAkQCAmJlwKIAlybSAkJFRFTVBGSUxFCiAKLXpjb25mOiB6Y29uZi5oLmluCi0JY3AgLXAgemNvbmYuaC5pbiB6Y29uZi5oCit6Y29uZjogJChTUkNESVIpemNvbmYuaC5pbgorCWNwIC1wICQoU1JDRElSKXpjb25mLmguaW4gemNvbmYuaAogCiBtb3N0bHljbGVhbjogY2xlYW4KIGNsZWFuOgpAQCAtMjU1LDM0ICszNzksMzIgQEAKIGRpc3RjbGVhbjogY2xlYW4gemNvbmYgemNvbmYuaC5jbWFrZWluIGRvY3MKIAlybSAtZiBNYWtlZmlsZSB6bGliLnBjIGNvbmZpZ3VyZS5sb2cKIAktQHJtIC1mIC5EU19TdG9yZQotCS1AcHJpbnRmICdhbGw6XG5cdC1AZWNobyAiUGxlYXNlIHVzZSAuL2NvbmZpZ3VyZSBmaXJzdC4gIFRoYW5rIHlvdS4iXG4nID4gTWFrZWZpbGUKLQktQHByaW50ZiAnXG5kaXN0Y2xlYW46XG5cdG1ha2UgLWYgTWFrZWZpbGUuaW4gZGlzdGNsZWFuXG4nID4+IE1ha2VmaWxlCi0JLUB0b3VjaCAtciBNYWtlZmlsZS5pbiBNYWtlZmlsZQorCUBpZiBbIC1mIE1ha2VmaWxlLmluIF07IHRoZW4gXAorCXByaW50ZiAnYWxsOlxuXHQtQGVjaG8gIlBsZWFzZSB1c2UgLi9jb25maWd1cmUgZmlyc3QuICBUaGFuayB5b3UuIlxuJyA+IE1ha2VmaWxlIDsgXAorCXByaW50ZiAnXG5kaXN0Y2xlYW46XG5cdG1ha2UgLWYgTWFrZWZpbGUuaW4gZGlzdGNsZWFuXG4nID4+IE1ha2VmaWxlIDsgXAorCXRvdWNoIC1yICQoU1JDRElSKU1ha2VmaWxlLmluIE1ha2VmaWxlIDsgZmkKKwlAaWYgWyAhIC1mIHpjb25mLmguaW4gXTsgdGhlbiBybSAtZiB6Y29uZi5oIHpjb25mLmguY21ha2VpbiA7IGZpCisJQGlmIFsgISAtZiB6bGliLjMgXTsgdGhlbiBybSAtZiB6bGliLjMucGRmIDsgZmkKIAogdGFnczoKLQlldGFncyAqLltjaF0KKwlldGFncyAkKFNSQ0RJUikqLltjaF0KIAotZGVwZW5kOgotCW1ha2VkZXBlbmQgLS0gJChDRkxBR1MpIC0tICouW2NoXQorYWRsZXIzMi5vIHp1dGlsLm86ICQoU1JDRElSKXp1dGlsLmggJChTUkNESVIpemxpYi5oIHpjb25mLmgKK2d6Y2xvc2UubyBnemxpYi5vIGd6cmVhZC5vIGd6d3JpdGUubzogJChTUkNESVIpemxpYi5oIHpjb25mLmggJChTUkNESVIpZ3pndXRzLmgKK2NvbXByZXNzLm8gZXhhbXBsZS5vIG1pbmlnemlwLm8gdW5jb21wci5vOiAkKFNSQ0RJUil6bGliLmggemNvbmYuaAorY3JjMzIubzogJChTUkNESVIpenV0aWwuaCAkKFNSQ0RJUil6bGliLmggemNvbmYuaCAkKFNSQ0RJUiljcmMzMi5oCitkZWZsYXRlLm86ICQoU1JDRElSKWRlZmxhdGUuaCAkKFNSQ0RJUil6dXRpbC5oICQoU1JDRElSKXpsaWIuaCB6Y29uZi5oCitpbmZiYWNrLm8gaW5mbGF0ZS5vOiAkKFNSQ0RJUil6dXRpbC5oICQoU1JDRElSKXpsaWIuaCB6Y29uZi5oICQoU1JDRElSKWluZnRyZWVzLmggJChTUkNESVIpaW5mbGF0ZS5oICQoU1JDRElSKWluZmZhc3QuaCAkKFNSQ0RJUilpbmZmaXhlZC5oCitpbmZmYXN0Lm86ICQoU1JDRElSKXp1dGlsLmggJChTUkNESVIpemxpYi5oIHpjb25mLmggJChTUkNESVIpaW5mdHJlZXMuaCAkKFNSQ0RJUilpbmZsYXRlLmggJChTUkNESVIpaW5mZmFzdC5oCitpbmZ0cmVlcy5vOiAkKFNSQ0RJUil6dXRpbC5oICQoU1JDRElSKXpsaWIuaCB6Y29uZi5oICQoU1JDRElSKWluZnRyZWVzLmgKK3RyZWVzLm86ICQoU1JDRElSKWRlZmxhdGUuaCAkKFNSQ0RJUil6dXRpbC5oICQoU1JDRElSKXpsaWIuaCB6Y29uZi5oICQoU1JDRElSKXRyZWVzLmgKIAotIyBETyBOT1QgREVMRVRFIFRISVMgTElORSAtLSBtYWtlIGRlcGVuZCBkZXBlbmRzIG9uIGl0LgotCi1hZGxlcjMyLm8genV0aWwubzogenV0aWwuaCB6bGliLmggemNvbmYuaAotZ3pjbG9zZS5vIGd6bGliLm8gZ3pyZWFkLm8gZ3p3cml0ZS5vOiB6bGliLmggemNvbmYuaCBnemd1dHMuaAotY29tcHJlc3MubyBleGFtcGxlLm8gbWluaWd6aXAubyB1bmNvbXByLm86IHpsaWIuaCB6Y29uZi5oCi1jcmMzMi5vOiB6dXRpbC5oIHpsaWIuaCB6Y29uZi5oIGNyYzMyLmgKLWRlZmxhdGUubzogZGVmbGF0ZS5oIHp1dGlsLmggemxpYi5oIHpjb25mLmgKLWluZmJhY2subyBpbmZsYXRlLm86IHp1dGlsLmggemxpYi5oIHpjb25mLmggaW5mdHJlZXMuaCBpbmZsYXRlLmggaW5mZmFzdC5oIGluZmZpeGVkLmgKLWluZmZhc3QubzogenV0aWwuaCB6bGliLmggemNvbmYuaCBpbmZ0cmVlcy5oIGluZmxhdGUuaCBpbmZmYXN0LmgKLWluZnRyZWVzLm86IHp1dGlsLmggemxpYi5oIHpjb25mLmggaW5mdHJlZXMuaAotdHJlZXMubzogZGVmbGF0ZS5oIHp1dGlsLmggemxpYi5oIHpjb25mLmggdHJlZXMuaAotCi1hZGxlcjMyLmxvIHp1dGlsLmxvOiB6dXRpbC5oIHpsaWIuaCB6Y29uZi5oCi1nemNsb3NlLmxvIGd6bGliLmxvIGd6cmVhZC5sbyBnendyaXRlLmxvOiB6bGliLmggemNvbmYuaCBnemd1dHMuaAotY29tcHJlc3MubG8gZXhhbXBsZS5sbyBtaW5pZ3ppcC5sbyB1bmNvbXByLmxvOiB6bGliLmggemNvbmYuaAotY3JjMzIubG86IHp1dGlsLmggemxpYi5oIHpjb25mLmggY3JjMzIuaAotZGVmbGF0ZS5sbzogZGVmbGF0ZS5oIHp1dGlsLmggemxpYi5oIHpjb25mLmgKLWluZmJhY2subG8gaW5mbGF0ZS5sbzogenV0aWwuaCB6bGliLmggemNvbmYuaCBpbmZ0cmVlcy5oIGluZmxhdGUuaCBpbmZmYXN0LmggaW5mZml4ZWQuaAotaW5mZmFzdC5sbzogenV0aWwuaCB6bGliLmggemNvbmYuaCBpbmZ0cmVlcy5oIGluZmxhdGUuaCBpbmZmYXN0LmgKLWluZnRyZWVzLmxvOiB6dXRpbC5oIHpsaWIuaCB6Y29uZi5oIGluZnRyZWVzLmgKLXRyZWVzLmxvOiBkZWZsYXRlLmggenV0aWwuaCB6bGliLmggemNvbmYuaCB0cmVlcy5oCithZGxlcjMyLmxvIHp1dGlsLmxvOiAkKFNSQ0RJUil6dXRpbC5oICQoU1JDRElSKXpsaWIuaCB6Y29uZi5oCitnemNsb3NlLmxvIGd6bGliLmxvIGd6cmVhZC5sbyBnendyaXRlLmxvOiAkKFNSQ0RJUil6bGliLmggemNvbmYuaCAkKFNSQ0RJUilnemd1dHMuaAorY29tcHJlc3MubG8gZXhhbXBsZS5sbyBtaW5pZ3ppcC5sbyB1bmNvbXByLmxvOiAkKFNSQ0RJUil6bGliLmggemNvbmYuaAorY3JjMzIubG86ICQoU1JDRElSKXp1dGlsLmggJChTUkNESVIpemxpYi5oIHpjb25mLmggJChTUkNESVIpY3JjMzIuaAorZGVmbGF0ZS5sbzogJChTUkNESVIpZGVmbGF0ZS5oICQoU1JDRElSKXp1dGlsLmggJChTUkNESVIpemxpYi5oIHpjb25mLmgKK2luZmJhY2subG8gaW5mbGF0ZS5sbzogJChTUkNESVIpenV0aWwuaCAkKFNSQ0RJUil6bGliLmggemNvbmYuaCAkKFNSQ0RJUilpbmZ0cmVlcy5oICQoU1JDRElSKWluZmxhdGUuaCAkKFNSQ0RJUilpbmZmYXN0LmggJChTUkNESVIpaW5mZml4ZWQuaAoraW5mZmFzdC5sbzogJChTUkNESVIpenV0aWwuaCAkKFNSQ0RJUil6bGliLmggemNvbmYuaCAkKFNSQ0RJUilpbmZ0cmVlcy5oICQoU1JDRElSKWluZmxhdGUuaCAkKFNSQ0RJUilpbmZmYXN0LmgKK2luZnRyZWVzLmxvOiAkKFNSQ0RJUil6dXRpbC5oICQoU1JDRElSKXpsaWIuaCB6Y29uZi5oICQoU1JDRElSKWluZnRyZWVzLmgKK3RyZWVzLmxvOiAkKFNSQ0RJUilkZWZsYXRlLmggJChTUkNESVIpenV0aWwuaCAkKFNSQ0RJUil6bGliLmggemNvbmYuaCAkKFNSQ0RJUil0cmVlcy5oCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvUkVBRE1FIGIvTW9kdWxlcy96bGliL1JFQURNRQppbmRleCA1Y2E5ZDEyLi41MTEwNmRlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvUkVBRE1FCisrKyBiL01vZHVsZXMvemxpYi9SRUFETUUKQEAgLTEsNiArMSw2IEBACiBaTElCIERBVEEgQ09NUFJFU1NJT04gTElCUkFSWQogCi16bGliIDEuMi44IGlzIGEgZ2VuZXJhbCBwdXJwb3NlIGRhdGEgY29tcHJlc3Npb24gbGlicmFyeS4gIEFsbCB0aGUgY29kZSBpcworemxpYiAxLjIuMTEgaXMgYSBnZW5lcmFsIHB1cnBvc2UgZGF0YSBjb21wcmVzc2lvbiBsaWJyYXJ5LiAgQWxsIHRoZSBjb2RlIGlzCiB0aHJlYWQgc2FmZS4gIFRoZSBkYXRhIGZvcm1hdCB1c2VkIGJ5IHRoZSB6bGliIGxpYnJhcnkgaXMgZGVzY3JpYmVkIGJ5IFJGQ3MKIChSZXF1ZXN0IGZvciBDb21tZW50cykgMTk1MCB0byAxOTUyIGluIHRoZSBmaWxlcwogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTk1MCAoemxpYiBmb3JtYXQpLCByZmMxOTUxIChkZWZsYXRlIGZvcm1hdCkgYW5kCkBAIC0zMSw3ICszMSw3IEBACiBpc3N1ZSBvZiBEci4gIERvYmIncyBKb3VybmFsOyBhIGNvcHkgb2YgdGhlIGFydGljbGUgaXMgYXZhaWxhYmxlIGF0CiBodHRwOi8vbWFya25lbHNvbi51cy8xOTk3LzAxLzAxL3psaWItZW5naW5lLyAuCiAKLVRoZSBjaGFuZ2VzIG1hZGUgaW4gdmVyc2lvbiAxLjIuOCBhcmUgZG9jdW1lbnRlZCBpbiB0aGUgZmlsZSBDaGFuZ2VMb2cuCitUaGUgY2hhbmdlcyBtYWRlIGluIHZlcnNpb24gMS4yLjExIGFyZSBkb2N1bWVudGVkIGluIHRoZSBmaWxlIENoYW5nZUxvZy4KIAogVW5zdXBwb3J0ZWQgdGhpcmQgcGFydHkgY29udHJpYnV0aW9ucyBhcmUgcHJvdmlkZWQgaW4gZGlyZWN0b3J5IGNvbnRyaWIvIC4KIApAQCAtODQsNyArODQsNyBAQAogCiBDb3B5cmlnaHQgbm90aWNlOgogCi0gKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCisgKEMpIDE5OTUtMjAxNyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCiAKICAgVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAnYXMtaXMnLCB3aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQKICAgd2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL2FkbGVyMzIuYyBiL01vZHVsZXMvemxpYi9hZGxlcjMyLmMKaW5kZXggYTg2OGYwNy4uZDBiZTQzOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGliL2FkbGVyMzIuYworKysgYi9Nb2R1bGVzL3psaWIvYWRsZXIzMi5jCkBAIC0xLDUgKzEsNSBAQAogLyogYWRsZXIzMi5jIC0tIGNvbXB1dGUgdGhlIEFkbGVyLTMyIGNoZWNrc3VtIG9mIGEgZGF0YSBzdHJlYW0KLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDExIE1hcmsgQWRsZXIKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDExLCAyMDE2IE1hcmsgQWRsZXIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqLwogCkBAIC03LDExICs3LDkgQEAKIAogI2luY2x1ZGUgInp1dGlsLmgiCiAKLSNkZWZpbmUgbG9jYWwgc3RhdGljCi0KIGxvY2FsIHVMb25nIGFkbGVyMzJfY29tYmluZV8gT0YoKHVMb25nIGFkbGVyMSwgdUxvbmcgYWRsZXIyLCB6X29mZjY0X3QgbGVuMikpOwogCi0jZGVmaW5lIEJBU0UgNjU1MjEgICAgICAvKiBsYXJnZXN0IHByaW1lIHNtYWxsZXIgdGhhbiA2NTUzNiAqLworI2RlZmluZSBCQVNFIDY1NTIxVSAgICAgLyogbGFyZ2VzdCBwcmltZSBzbWFsbGVyIHRoYW4gNjU1MzYgKi8KICNkZWZpbmUgTk1BWCA1NTUyCiAvKiBOTUFYIGlzIHRoZSBsYXJnZXN0IG4gc3VjaCB0aGF0IDI1NW4obisxKS8yICsgKG4rMSkoQkFTRS0xKSA8PSAyXjMyLTEgKi8KIApAQCAtNjIsMTAgKzYwLDEwIEBACiAjZW5kaWYKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotdUxvbmcgWkVYUE9SVCBhZGxlcjMyKGFkbGVyLCBidWYsIGxlbikKK3VMb25nIFpFWFBPUlQgYWRsZXIzMl96KGFkbGVyLCBidWYsIGxlbikKICAgICB1TG9uZyBhZGxlcjsKICAgICBjb25zdCBCeXRlZiAqYnVmOwotICAgIHVJbnQgbGVuOworICAgIHpfc2l6ZV90IGxlbjsKIHsKICAgICB1bnNpZ25lZCBsb25nIHN1bTI7CiAgICAgdW5zaWduZWQgbjsKQEAgLTEzMyw2ICsxMzEsMTUgQEAKIH0KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwordUxvbmcgWkVYUE9SVCBhZGxlcjMyKGFkbGVyLCBidWYsIGxlbikKKyAgICB1TG9uZyBhZGxlcjsKKyAgICBjb25zdCBCeXRlZiAqYnVmOworICAgIHVJbnQgbGVuOworeworICAgIHJldHVybiBhZGxlcjMyX3ooYWRsZXIsIGJ1ZiwgbGVuKTsKK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogbG9jYWwgdUxvbmcgYWRsZXIzMl9jb21iaW5lXyhhZGxlcjEsIGFkbGVyMiwgbGVuMikKICAgICB1TG9uZyBhZGxlcjE7CiAgICAgdUxvbmcgYWRsZXIyOwpAQCAtMTU2LDcgKzE2Myw3IEBACiAgICAgc3VtMiArPSAoKGFkbGVyMSA+PiAxNikgJiAweGZmZmYpICsgKChhZGxlcjIgPj4gMTYpICYgMHhmZmZmKSArIEJBU0UgLSByZW07CiAgICAgaWYgKHN1bTEgPj0gQkFTRSkgc3VtMSAtPSBCQVNFOwogICAgIGlmIChzdW0xID49IEJBU0UpIHN1bTEgLT0gQkFTRTsKLSAgICBpZiAoc3VtMiA+PSAoQkFTRSA8PCAxKSkgc3VtMiAtPSAoQkFTRSA8PCAxKTsKKyAgICBpZiAoc3VtMiA+PSAoKHVuc2lnbmVkIGxvbmcpQkFTRSA8PCAxKSkgc3VtMiAtPSAoKHVuc2lnbmVkIGxvbmcpQkFTRSA8PCAxKTsKICAgICBpZiAoc3VtMiA+PSBCQVNFKSBzdW0yIC09IEJBU0U7CiAgICAgcmV0dXJuIHN1bTEgfCAoc3VtMiA8PCAxNik7CiB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvY29tcHJlc3MuYyBiL01vZHVsZXMvemxpYi9jb21wcmVzcy5jCmluZGV4IDZlOTc2MjYuLmUyZGI0MDQgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYi9jb21wcmVzcy5jCisrKyBiL01vZHVsZXMvemxpYi9jb21wcmVzcy5jCkBAIC0xLDUgKzEsNSBAQAogLyogY29tcHJlc3MuYyAtLSBjb21wcmVzcyBhIG1lbW9yeSBidWZmZXIKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA1IEplYW4tbG91cCBHYWlsbHkuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwNSwgMjAxNCwgMjAxNiBKZWFuLWxvdXAgR2FpbGx5LCBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtMjgsMTYgKzI4LDExIEBACiB7CiAgICAgel9zdHJlYW0gc3RyZWFtOwogICAgIGludCBlcnI7CisgICAgY29uc3QgdUludCBtYXggPSAodUludCktMTsKKyAgICB1TG9uZyBsZWZ0OwogCi0gICAgc3RyZWFtLm5leHRfaW4gPSAoel9jb25zdCBCeXRlZiAqKXNvdXJjZTsKLSAgICBzdHJlYW0uYXZhaWxfaW4gPSAodUludClzb3VyY2VMZW47Ci0jaWZkZWYgTUFYU0VHXzY0SwotICAgIC8qIENoZWNrIGZvciBzb3VyY2UgPiA2NEsgb24gMTYtYml0IG1hY2hpbmU6ICovCi0gICAgaWYgKCh1TG9uZylzdHJlYW0uYXZhaWxfaW4gIT0gc291cmNlTGVuKSByZXR1cm4gWl9CVUZfRVJST1I7Ci0jZW5kaWYKLSAgICBzdHJlYW0ubmV4dF9vdXQgPSBkZXN0OwotICAgIHN0cmVhbS5hdmFpbF9vdXQgPSAodUludCkqZGVzdExlbjsKLSAgICBpZiAoKHVMb25nKXN0cmVhbS5hdmFpbF9vdXQgIT0gKmRlc3RMZW4pIHJldHVybiBaX0JVRl9FUlJPUjsKKyAgICBsZWZ0ID0gKmRlc3RMZW47CisgICAgKmRlc3RMZW4gPSAwOwogCiAgICAgc3RyZWFtLnphbGxvYyA9IChhbGxvY19mdW5jKTA7CiAgICAgc3RyZWFtLnpmcmVlID0gKGZyZWVfZnVuYykwOwpAQCAtNDYsMTUgKzQxLDI2IEBACiAgICAgZXJyID0gZGVmbGF0ZUluaXQoJnN0cmVhbSwgbGV2ZWwpOwogICAgIGlmIChlcnIgIT0gWl9PSykgcmV0dXJuIGVycjsKIAotICAgIGVyciA9IGRlZmxhdGUoJnN0cmVhbSwgWl9GSU5JU0gpOwotICAgIGlmIChlcnIgIT0gWl9TVFJFQU1fRU5EKSB7Ci0gICAgICAgIGRlZmxhdGVFbmQoJnN0cmVhbSk7Ci0gICAgICAgIHJldHVybiBlcnIgPT0gWl9PSyA/IFpfQlVGX0VSUk9SIDogZXJyOwotICAgIH0KLSAgICAqZGVzdExlbiA9IHN0cmVhbS50b3RhbF9vdXQ7CisgICAgc3RyZWFtLm5leHRfb3V0ID0gZGVzdDsKKyAgICBzdHJlYW0uYXZhaWxfb3V0ID0gMDsKKyAgICBzdHJlYW0ubmV4dF9pbiA9ICh6X2NvbnN0IEJ5dGVmICopc291cmNlOworICAgIHN0cmVhbS5hdmFpbF9pbiA9IDA7CiAKLSAgICBlcnIgPSBkZWZsYXRlRW5kKCZzdHJlYW0pOwotICAgIHJldHVybiBlcnI7CisgICAgZG8geworICAgICAgICBpZiAoc3RyZWFtLmF2YWlsX291dCA9PSAwKSB7CisgICAgICAgICAgICBzdHJlYW0uYXZhaWxfb3V0ID0gbGVmdCA+ICh1TG9uZyltYXggPyBtYXggOiAodUludClsZWZ0OworICAgICAgICAgICAgbGVmdCAtPSBzdHJlYW0uYXZhaWxfb3V0OworICAgICAgICB9CisgICAgICAgIGlmIChzdHJlYW0uYXZhaWxfaW4gPT0gMCkgeworICAgICAgICAgICAgc3RyZWFtLmF2YWlsX2luID0gc291cmNlTGVuID4gKHVMb25nKW1heCA/IG1heCA6ICh1SW50KXNvdXJjZUxlbjsKKyAgICAgICAgICAgIHNvdXJjZUxlbiAtPSBzdHJlYW0uYXZhaWxfaW47CisgICAgICAgIH0KKyAgICAgICAgZXJyID0gZGVmbGF0ZSgmc3RyZWFtLCBzb3VyY2VMZW4gPyBaX05PX0ZMVVNIIDogWl9GSU5JU0gpOworICAgIH0gd2hpbGUgKGVyciA9PSBaX09LKTsKKworICAgICpkZXN0TGVuID0gc3RyZWFtLnRvdGFsX291dDsKKyAgICBkZWZsYXRlRW5kKCZzdHJlYW0pOworICAgIHJldHVybiBlcnIgPT0gWl9TVFJFQU1fRU5EID8gWl9PSyA6IGVycjsKIH0KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvY29uZmlndXJlIGIvTW9kdWxlcy96bGliL2NvbmZpZ3VyZQppbmRleCBiNzdhOGE4Li5lOTc0ZDFmIDEwMDc1NQotLS0gYS9Nb2R1bGVzL3psaWIvY29uZmlndXJlCisrKyBiL01vZHVsZXMvemxpYi9jb25maWd1cmUKQEAgLTE4LDYgKzE4LDE4IEBACiBlY2hvICQwICQqID4+IGNvbmZpZ3VyZS5sb2cKIGRhdGUgPj4gY29uZmlndXJlLmxvZwogCisjIGdldCBzb3VyY2UgZGlyZWN0b3J5CitTUkNESVI9YGRpcm5hbWUgJDBgCitpZiB0ZXN0ICRTUkNESVIgPSAiLiI7IHRoZW4KKyAgICBaSU5DPSIiCisgICAgWklOQ09VVD0iLUkuIgorICAgIFNSQ0RJUj0iIgorZWxzZQorICAgIFpJTkM9Jy1pbmNsdWRlIHpjb25mLmgnCisgICAgWklOQ09VVD0nLUkuIC1JJChTUkNESVIpJworICAgIFNSQ0RJUj0iJFNSQ0RJUi8iCitmaQorCiAjIHNldCBjb21tYW5kIHByZWZpeCBmb3IgY3Jvc3MtY29tcGlsYXRpb24KIGlmIFsgLW4gIiR7Q0hPU1R9IiBdOyB0aGVuCiAgICAgdW5hbWU9ImBlY2hvICIke0NIT1NUfSIgfCBzZWQgLWUgJ3MvXlteLV0qLVwoW14tXSpcKSQvXDEvJyAtZSAncy9eW14tXSotW14tXSotXChbXi1dKlwpJC9cMS8nIC1lICdzL15bXi1dKi1bXi1dKi1cKFteLV0qXCktLiokL1wxLydgIgpAQCAtMjgsMTAgKzQwLDEwIEBACiBTVEFUSUNMSUI9bGliei5hCiAKICMgZXh0cmFjdCB6bGliIHZlcnNpb24gbnVtYmVycyBmcm9tIHpsaWIuaAotVkVSPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKC4qXCkiLiovXDEvcCcgPCB6bGliLmhgCi1WRVIzPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKFswLTldKlxcLlswLTldKlxcLlswLTldKlwpLiovXDEvcCcgPCB6bGliLmhgCi1WRVIyPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKFswLTldKlxcLlswLTldKlwpXFwuLiovXDEvcCcgPCB6bGliLmhgCi1WRVIxPWBzZWQgLW4gLWUgJy9WRVJTSU9OICIvcy8uKiJcKFswLTldKlwpXFwuLiovXDEvcCcgPCB6bGliLmhgCitWRVI9YHNlZCAtbiAtZSAnL1ZFUlNJT04gIi9zLy4qIlwoLipcKSIuKi9cMS9wJyA8ICR7U1JDRElSfXpsaWIuaGAKK1ZFUjM9YHNlZCAtbiAtZSAnL1ZFUlNJT04gIi9zLy4qIlwoWzAtOV0qXFwuWzAtOV0qXFwuWzAtOV0qXCkuKi9cMS9wJyA8ICR7U1JDRElSfXpsaWIuaGAKK1ZFUjI9YHNlZCAtbiAtZSAnL1ZFUlNJT04gIi9zLy4qIlwoWzAtOV0qXFwuWzAtOV0qXClcXC4uKi9cMS9wJyA8ICR7U1JDRElSfXpsaWIuaGAKK1ZFUjE9YHNlZCAtbiAtZSAnL1ZFUlNJT04gIi9zLy4qIlwoWzAtOV0qXClcXC4uKi9cMS9wJyA8ICR7U1JDRElSfXpsaWIuaGAKIAogIyBlc3RhYmxpc2ggY29tbWFuZHMgZm9yIGxpYnJhcnkgYnVpbGRpbmcKIGlmICIke0NST1NTX1BSRUZJWH1hciIgLS12ZXJzaW9uID4vZGV2L251bGwgMj4vZGV2L251bGwgfHwgdGVzdCAkPyAtbHQgMTI2OyB0aGVuCkBAIC03Myw2ICs4NSw4IEBACiB6Y29uc3Q9MAogYnVpbGQ2ND0wCiBnY2M9MAord2Fybj0wCitkZWJ1Zz0wCiBvbGRfY2M9IiRDQyIKIG9sZF9jZmxhZ3M9IiRDRkxBR1MiCiBPQkpDPSckKE9CSlopICQoT0JKRyknCkBAIC0xMjEsNiArMTM1LDggQEAKICAgICAtLXN5c2NvbmZkaXI9KikgZWNobyAiaWdub3JlZCBvcHRpb246IC0tc3lzY29uZmRpciIgfCB0ZWUgLWEgY29uZmlndXJlLmxvZzsgc2hpZnQgOzsKICAgICAtLWxvY2Fsc3RhdGVkaXI9KikgZWNobyAiaWdub3JlZCBvcHRpb246IC0tbG9jYWxzdGF0ZWRpciIgfCB0ZWUgLWEgY29uZmlndXJlLmxvZzsgc2hpZnQgOzsKICAgICAtYyogfCAtLWNvbnN0KSB6Y29uc3Q9MTsgc2hpZnQgOzsKKyAgICAtdyogfCAtLXdhcm4pIHdhcm49MTsgc2hpZnQgOzsKKyAgICAtZCogfCAtLWRlYnVnKSBkZWJ1Zz0xOyBzaGlmdCA7OwogICAgICopCiAgICAgICBlY2hvICJ1bmtub3duIG9wdGlvbjogJDEiIHwgdGVlIC1hIGNvbmZpZ3VyZS5sb2cKICAgICAgIGVjaG8gIiQwIC0taGVscCBmb3IgaGVscCIgfCB0ZWUgLWEgY29uZmlndXJlLmxvZwpAQCAtMTU5LDM0ICsxNzUsNDIgQEAKIGVzYWMKIGNhc2UgYCRjYyAtdiAyPiYxYCBpbgogICAqZ2NjKikgZ2NjPTEgOzsKKyAgKmNsYW5nKikgZ2NjPTEgOzsKIGVzYWMKIAogc2hvdyAkY2MgLWMgJHRlc3QuYwogaWYgdGVzdCAiJGdjYyIgLWVxIDEgJiYgKCRjYyAtYyAkdGVzdC5jKSA+PiBjb25maWd1cmUubG9nIDI+JjE7IHRoZW4KICAgZWNobyAuLi4gdXNpbmcgZ2NjID4+IGNvbmZpZ3VyZS5sb2cKICAgQ0M9IiRjYyIKLSAgQ0ZMQUdTPSIke0NGTEFHUy0tTzN9ICR7QVJDSFN9IgorICBDRkxBR1M9IiR7Q0ZMQUdTLS1PM30iCiAgIFNGTEFHUz0iJHtDRkxBR1MtLU8zfSAtZlBJQyIKLSAgTERGTEFHUz0iJHtMREZMQUdTfSAke0FSQ0hTfSIKKyAgaWYgdGVzdCAiJEFSQ0hTIjsgdGhlbgorICAgIENGTEFHUz0iJHtDRkxBR1N9ICR7QVJDSFN9IgorICAgIExERkxBR1M9IiR7TERGTEFHU30gJHtBUkNIU30iCisgIGZpCiAgIGlmIHRlc3QgJGJ1aWxkNjQgLWVxIDE7IHRoZW4KICAgICBDRkxBR1M9IiR7Q0ZMQUdTfSAtbTY0IgogICAgIFNGTEFHUz0iJHtTRkxBR1N9IC1tNjQiCiAgIGZpCi0gIGlmIHRlc3QgIiR7WkxJQkdDQ1dBUk59IiA9ICJZRVMiOyB0aGVuCisgIGlmIHRlc3QgIiR3YXJuIiAtZXEgMTsgdGhlbgogICAgIGlmIHRlc3QgIiR6Y29uc3QiIC1lcSAxOyB0aGVuCiAgICAgICBDRkxBR1M9IiR7Q0ZMQUdTfSAtV2FsbCAtV2V4dHJhIC1XY2FzdC1xdWFsIC1wZWRhbnRpYyAtRFpMSUJfQ09OU1QiCiAgICAgZWxzZQogICAgICAgQ0ZMQUdTPSIke0NGTEFHU30gLVdhbGwgLVdleHRyYSAtcGVkYW50aWMiCiAgICAgZmkKICAgZmkKKyAgaWYgdGVzdCAkZGVidWcgLWVxIDE7IHRoZW4KKyAgICBDRkxBR1M9IiR7Q0ZMQUdTfSAtRFpMSUJfREVCVUciCisgICAgU0ZMQUdTPSIke1NGTEFHU30gLURaTElCX0RFQlVHIgorICBmaQogICBpZiB0ZXN0IC16ICIkdW5hbWUiOyB0aGVuCiAgICAgdW5hbWU9YCh1bmFtZSAtcyB8fCBlY2hvIHVua25vd24pIDI+L2Rldi9udWxsYAogICBmaQogICBjYXNlICIkdW5hbWUiIGluCiAgIExpbnV4KiB8IGxpbnV4KiB8IEdOVSB8IEdOVS8qIHwgc29sYXJpcyopCi0gICAgICAgIExEU0hBUkVEPSR7TERTSEFSRUQtIiRjYyAtc2hhcmVkIC1XbCwtc29uYW1lLGxpYnouc28uMSwtLXZlcnNpb24tc2NyaXB0LHpsaWIubWFwIn0gOzsKKyAgICAgICAgTERTSEFSRUQ9JHtMRFNIQVJFRC0iJGNjIC1zaGFyZWQgLVdsLC1zb25hbWUsbGliei5zby4xLC0tdmVyc2lvbi1zY3JpcHQsJHtTUkNESVJ9emxpYi5tYXAifSA7OwogICAqQlNEIHwgKmJzZCogfCBEcmFnb25GbHkpCi0gICAgICAgIExEU0hBUkVEPSR7TERTSEFSRUQtIiRjYyAtc2hhcmVkIC1XbCwtc29uYW1lLGxpYnouc28uMSwtLXZlcnNpb24tc2NyaXB0LHpsaWIubWFwIn0KKyAgICAgICAgTERTSEFSRUQ9JHtMRFNIQVJFRC0iJGNjIC1zaGFyZWQgLVdsLC1zb25hbWUsbGliei5zby4xLC0tdmVyc2lvbi1zY3JpcHQsJHtTUkNESVJ9emxpYi5tYXAifQogICAgICAgICBMRENPTkZJRz0ibGRjb25maWcgLW0iIDs7CiAgIENZR1dJTiogfCBDeWd3aW4qIHwgY3lnd2luKiB8IE9TLzIqKQogICAgICAgICBFWEU9Jy5leGUnIDs7CkBAIC0yODcsNiArMzExLDkgQEAKICAgICAgICAgICAgICAgICAgZXNhYwogICAgICAgICAgICAgIGZpCiAgICAgICAgICBmaQorICAgICAgICAgaWYgdGVzdCAtbiAiJFpJTkMiOyB0aGVuCisgICAgICAgICAgICAgWklOQz0nLUktIC1JLiAtSSQoU1JDRElSKScKKyAgICAgICAgIGZpCiAgICAgICAgICA7OwogICBTdW5PU1wgNCopIFNGTEFHUz0ke0NGTEFHUy0iLU8yIC1QSUMifQogICAgICAgICAgICAgIENGTEFHUz0ke0NGTEFHUy0iLU8yIn0KQEAgLTMzNywxNiArMzY0LDE2IEBACiAgIH0KICAgZWNobyAtIHVzaW5nIGFueSBvdXRwdXQgZnJvbSBjb21waWxlciB0byBpbmRpY2F0ZSBhbiBlcnJvciA+PiBjb25maWd1cmUubG9nCiBlbHNlCi10cnkoKQotewotICBzaG93ICQqCi0gICggJCogKSA+PiBjb25maWd1cmUubG9nIDI+JjEKLSAgcmV0PSQ/Ci0gIGlmIHRlc3QgJHJldCAtbmUgMDsgdGhlbgotICAgIGVjaG8gIihleGl0IGNvZGUgIiRyZXQiKSIgPj4gY29uZmlndXJlLmxvZwotICBmaQotICByZXR1cm4gJHJldAotfQorICB0cnkoKQorICB7CisgICAgc2hvdyAkKgorICAgICggJCogKSA+PiBjb25maWd1cmUubG9nIDI+JjEKKyAgICByZXQ9JD8KKyAgICBpZiB0ZXN0ICRyZXQgLW5lIDA7IHRoZW4KKyAgICAgIGVjaG8gIihleGl0IGNvZGUgIiRyZXQiKSIgPj4gY29uZmlndXJlLmxvZworICAgIGZpCisgICAgcmV0dXJuICRyZXQKKyAgfQogZmkKIAogdHJ5Ym90aCgpCkBAIC00MjIsNiArNDQ5LDY1IEBACiAKIGVjaG8gPj4gY29uZmlndXJlLmxvZwogCisjIGNoZWNrIGZvciBzaXplX3QKK2NhdCA+ICR0ZXN0LmMgPDxFT0YKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorc2l6ZV90IGR1bW15ID0gMDsKK0VPRgoraWYgdHJ5ICRDQyAtYyAkQ0ZMQUdTICR0ZXN0LmM7IHRoZW4KKyAgZWNobyAiQ2hlY2tpbmcgZm9yIHNpemVfdC4uLiBZZXMuIiB8IHRlZSAtYSBjb25maWd1cmUubG9nCisgIG5lZWRfc2l6ZXQ9MAorZWxzZQorICBlY2hvICJDaGVja2luZyBmb3Igc2l6ZV90Li4uIE5vLiIgfCB0ZWUgLWEgY29uZmlndXJlLmxvZworICBuZWVkX3NpemV0PTEKK2ZpCisKK2VjaG8gPj4gY29uZmlndXJlLmxvZworCisjIGZpbmQgdGhlIHNpemVfdCBpbnRlZ2VyIHR5cGUsIGlmIG5lZWRlZAoraWYgdGVzdCAkbmVlZF9zaXpldCAtZXEgMTsgdGhlbgorICBjYXQgPiAkdGVzdC5jIDw8RU9GCitsb25nIGxvbmcgZHVtbXkgPSAwOworRU9GCisgIGlmIHRyeSAkQ0MgLWMgJENGTEFHUyAkdGVzdC5jOyB0aGVuCisgICAgZWNobyAiQ2hlY2tpbmcgZm9yIGxvbmcgbG9uZy4uLiBZZXMuIiB8IHRlZSAtYSBjb25maWd1cmUubG9nCisgICAgY2F0ID4gJHRlc3QuYyA8PEVPRgorI2luY2x1ZGUgPHN0ZGlvLmg+CitpbnQgbWFpbih2b2lkKSB7CisgICAgaWYgKHNpemVvZih2b2lkICopIDw9IHNpemVvZihpbnQpKSBwdXRzKCJpbnQiKTsKKyAgICBlbHNlIGlmIChzaXplb2Yodm9pZCAqKSA8PSBzaXplb2YobG9uZykpIHB1dHMoImxvbmciKTsKKyAgICBlbHNlIHB1dHMoInpfbG9uZ2xvbmciKTsKKyAgICByZXR1cm4gMDsKK30KK0VPRgorICBlbHNlCisgICAgZWNobyAiQ2hlY2tpbmcgZm9yIGxvbmcgbG9uZy4uLiBOby4iIHwgdGVlIC1hIGNvbmZpZ3VyZS5sb2cKKyAgICBjYXQgPiAkdGVzdC5jIDw8RU9GCisjaW5jbHVkZSA8c3RkaW8uaD4KK2ludCBtYWluKHZvaWQpIHsKKyAgICBpZiAoc2l6ZW9mKHZvaWQgKikgPD0gc2l6ZW9mKGludCkpIHB1dHMoImludCIpOworICAgIGVsc2UgcHV0cygibG9uZyIpOworICAgIHJldHVybiAwOworfQorRU9GCisgIGZpCisgIGlmIHRyeSAkQ0MgJENGTEFHUyAtbyAkdGVzdCAkdGVzdC5jOyB0aGVuCisgICAgc2l6ZXQ9YC4vJHRlc3RgCisgICAgZWNobyAiQ2hlY2tpbmcgZm9yIGEgcG9pbnRlci1zaXplIGludGVnZXIgdHlwZS4uLiIgJHNpemV0Ii4iIHwgdGVlIC1hIGNvbmZpZ3VyZS5sb2cKKyAgZWxzZQorICAgIGVjaG8gIkZhaWxlZCB0byBmaW5kIGEgcG9pbnRlci1zaXplIGludGVnZXIgdHlwZS4iIHwgdGVlIC1hIGNvbmZpZ3VyZS5sb2cKKyAgICBsZWF2ZSAxCisgIGZpCitmaQorCitpZiB0ZXN0ICRuZWVkX3NpemV0IC1lcSAxOyB0aGVuCisgIENGTEFHUz0iJHtDRkxBR1N9IC1ETk9fU0laRV9UPSR7c2l6ZXR9IgorICBTRkxBR1M9IiR7U0ZMQUdTfSAtRE5PX1NJWkVfVD0ke3NpemV0fSIKK2ZpCisKK2VjaG8gPj4gY29uZmlndXJlLmxvZworCiAjIGNoZWNrIGZvciBsYXJnZSBmaWxlIHN1cHBvcnQsIGFuZCBpZiBub25lLCBjaGVjayBmb3IgZnNlZWtvKCkKIGNhdCA+ICR0ZXN0LmMgPDxFT0YKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTQ3MCw3ICs1NTYsNyBAQAogZmkKIAogIyBjb3B5IGNsZWFuIHpjb25mLmggZm9yIHN1YnNlcXVlbnQgZWRpdHMKLWNwIC1wIHpjb25mLmguaW4gemNvbmYuaAorY3AgLXAgJHtTUkNESVJ9emNvbmYuaC5pbiB6Y29uZi5oCiAKIGVjaG8gPj4gY29uZmlndXJlLmxvZwogCkBAIC03NjQsNiArODUwLDcgQEAKIGVjaG8gVEVTVCA9ICRURVNUID4+IGNvbmZpZ3VyZS5sb2cKIGVjaG8gVkVSID0gJFZFUiA+PiBjb25maWd1cmUubG9nCiBlY2hvIFpfVTQgPSAkWl9VNCA+PiBjb25maWd1cmUubG9nCitlY2hvIFNSQ0RJUiA9ICRTUkNESVIgPj4gY29uZmlndXJlLmxvZwogZWNobyBleGVjX3ByZWZpeCA9ICRleGVjX3ByZWZpeCA+PiBjb25maWd1cmUubG9nCiBlY2hvIGluY2x1ZGVkaXIgPSAkaW5jbHVkZWRpciA+PiBjb25maWd1cmUubG9nCiBlY2hvIGxpYmRpciA9ICRsaWJkaXIgPj4gY29uZmlndXJlLmxvZwpAQCAtNzczLDcgKzg2MCw3IEBACiBlY2hvIHVuYW1lID0gJHVuYW1lID4+IGNvbmZpZ3VyZS5sb2cKIAogIyB1ZHBhdGUgTWFrZWZpbGUgd2l0aCB0aGUgY29uZmlndXJlIHJlc3VsdHMKLXNlZCA8IE1ha2VmaWxlLmluICIKK3NlZCA8ICR7U1JDRElSfU1ha2VmaWxlLmluICIKIC9eQ0MgKj0vcyM9LiojPSRDQyMKIC9eQ0ZMQUdTICo9L3MjPS4qIz0kQ0ZMQUdTIwogL15TRkxBR1MgKj0vcyM9LiojPSRTRkxBR1MjCkBAIC03OTAsNiArODc3LDkgQEAKIC9eTERDT05GSUcgKj0vcyM9LiojPSRMRENPTkZJRyMKIC9eTERTSEFSRURMSUJDICo9L3MjPS4qIz0kTERTSEFSRURMSUJDIwogL15FWEUgKj0vcyM9LiojPSRFWEUjCisvXlNSQ0RJUiAqPS9zIz0uKiM9JFNSQ0RJUiMKKy9eWklOQyAqPS9zIz0uKiM9JFpJTkMjCisvXlpJTkNPVVQgKj0vcyM9LiojPSRaSU5DT1VUIwogL15wcmVmaXggKj0vcyM9LiojPSRwcmVmaXgjCiAvXmV4ZWNfcHJlZml4ICo9L3MjPS4qIz0kZXhlY19wcmVmaXgjCiAvXmxpYmRpciAqPS9zIz0uKiM9JGxpYmRpciMKQEAgLTgwMyw3ICs4OTMsNyBAQAogIiA+IE1ha2VmaWxlCiAKICMgY3JlYXRlIHpsaWIucGMgd2l0aCB0aGUgY29uZmlndXJlIHJlc3VsdHMKLXNlZCA8IHpsaWIucGMuaW4gIgorc2VkIDwgJHtTUkNESVJ9emxpYi5wYy5pbiAiCiAvXkNDICo9L3MjPS4qIz0kQ0MjCiAvXkNGTEFHUyAqPS9zIz0uKiM9JENGTEFHUyMKIC9eQ1BQICo9L3MjPS4qIz0kQ1BQIwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL2NyYzMyLmMgYi9Nb2R1bGVzL3psaWIvY3JjMzIuYwppbmRleCA5NzlhNzE5Li45NTgwNDQwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvY3JjMzIuYworKysgYi9Nb2R1bGVzL3psaWIvY3JjMzIuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIGNyYzMyLmMgLS0gY29tcHV0ZSB0aGUgQ1JDLTMyIG9mIGEgZGF0YSBzdHJlYW0KLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA2LCAyMDEwLCAyMDExLCAyMDEyIE1hcmsgQWRsZXIKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA2LCAyMDEwLCAyMDExLCAyMDEyLCAyMDE2IE1hcmsgQWRsZXIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqCiAgKiBUaGFua3MgdG8gUm9kbmV5IEJyb3duIDxyYnJvd242NEBjc2MuY29tLmF1PiBmb3IgaGlzIGNvbnRyaWJ1dGlvbiBvZiBmYXN0ZXIKQEAgLTMwLDE3ICszMCwxNSBAQAogCiAjaW5jbHVkZSAienV0aWwuaCIgICAgICAvKiBmb3IgU1REQyBhbmQgRkFSIGRlZmluaXRpb25zICovCiAKLSNkZWZpbmUgbG9jYWwgc3RhdGljCi0KIC8qIERlZmluaXRpb25zIGZvciBkb2luZyB0aGUgY3JjIGZvdXIgZGF0YSBieXRlcyBhdCBhIHRpbWUuICovCiAjaWYgIWRlZmluZWQoTk9CWUZPVVIpICYmIGRlZmluZWQoWl9VNCkKICMgIGRlZmluZSBCWUZPVVIKICNlbmRpZgogI2lmZGVmIEJZRk9VUgogICAgbG9jYWwgdW5zaWduZWQgbG9uZyBjcmMzMl9saXR0bGUgT0YoKHVuc2lnbmVkIGxvbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqLCB1bnNpZ25lZCkpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKiwgel9zaXplX3QpKTsKICAgIGxvY2FsIHVuc2lnbmVkIGxvbmcgY3JjMzJfYmlnIE9GKCh1bnNpZ25lZCBsb25nLAotICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKiwgdW5zaWduZWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICosIHpfc2l6ZV90KSk7CiAjICBkZWZpbmUgVEJMUyA4CiAjZWxzZQogIyAgZGVmaW5lIFRCTFMgMQpAQCAtMjAxLDEwICsxOTksMTAgQEAKICNkZWZpbmUgRE84IERPMTsgRE8xOyBETzE7IERPMTsgRE8xOyBETzE7IERPMTsgRE8xCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KLXVuc2lnbmVkIGxvbmcgWkVYUE9SVCBjcmMzMihjcmMsIGJ1ZiwgbGVuKQordW5zaWduZWQgbG9uZyBaRVhQT1JUIGNyYzMyX3ooY3JjLCBidWYsIGxlbikKICAgICB1bnNpZ25lZCBsb25nIGNyYzsKICAgICBjb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqYnVmOwotICAgIHVJbnQgbGVuOworICAgIHpfc2l6ZV90IGxlbjsKIHsKICAgICBpZiAoYnVmID09IFpfTlVMTCkgcmV0dXJuIDBVTDsKIApAQCAtMjM1LDggKzIzMywyOSBAQAogICAgIHJldHVybiBjcmMgXiAweGZmZmZmZmZmVUw7CiB9CiAKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK3Vuc2lnbmVkIGxvbmcgWkVYUE9SVCBjcmMzMihjcmMsIGJ1ZiwgbGVuKQorICAgIHVuc2lnbmVkIGxvbmcgY3JjOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICpidWY7CisgICAgdUludCBsZW47Cit7CisgICAgcmV0dXJuIGNyYzMyX3ooY3JjLCBidWYsIGxlbik7Cit9CisKICNpZmRlZiBCWUZPVVIKIAorLyoKKyAgIFRoaXMgQllGT1VSIGNvZGUgYWNjZXNzZXMgdGhlIHBhc3NlZCB1bnNpZ25lZCBjaGFyICogYnVmZmVyIHdpdGggYSAzMi1iaXQKKyAgIGludGVnZXIgcG9pbnRlciB0eXBlLiBUaGlzIHZpb2xhdGVzIHRoZSBzdHJpY3QgYWxpYXNpbmcgcnVsZSwgd2hlcmUgYQorICAgY29tcGlsZXIgY2FuIGFzc3VtZSwgZm9yIG9wdGltaXphdGlvbiBwdXJwb3NlcywgdGhhdCB0d28gcG9pbnRlcnMgdG8KKyAgIGZ1bmRhbWVudGFsbHkgZGlmZmVyZW50IHR5cGVzIHdvbid0IGV2ZXIgcG9pbnQgdG8gdGhlIHNhbWUgbWVtb3J5LiBUaGlzIGNhbgorICAgbWFuaWZlc3QgYXMgYSBwcm9ibGVtIG9ubHkgaWYgb25lIG9mIHRoZSBwb2ludGVycyBpcyB3cml0dGVuIHRvLiBUaGlzIGNvZGUKKyAgIG9ubHkgcmVhZHMgZnJvbSB0aG9zZSBwb2ludGVycy4gU28gbG9uZyBhcyB0aGlzIGNvZGUgcmVtYWlucyBpc29sYXRlZCBpbgorICAgdGhpcyBjb21waWxhdGlvbiB1bml0LCB0aGVyZSB3b24ndCBiZSBhIHByb2JsZW0uIEZvciB0aGlzIHJlYXNvbiwgdGhpcyBjb2RlCisgICBzaG91bGQgbm90IGJlIGNvcGllZCBhbmQgcGFzdGVkIGludG8gYSBjb21waWxhdGlvbiB1bml0IGluIHdoaWNoIG90aGVyIGNvZGUKKyAgIHdyaXRlcyB0byB0aGUgYnVmZmVyIHRoYXQgaXMgcGFzc2VkIHRvIHRoZXNlIHJvdXRpbmVzLgorICovCisKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KICNkZWZpbmUgRE9MSVQ0IGMgXj0gKmJ1ZjQrKzsgXAogICAgICAgICBjID0gY3JjX3RhYmxlWzNdW2MgJiAweGZmXSBeIGNyY190YWJsZVsyXVsoYyA+PiA4KSAmIDB4ZmZdIF4gXApAQCAtMjQ3LDcgKzI2Niw3IEBACiBsb2NhbCB1bnNpZ25lZCBsb25nIGNyYzMyX2xpdHRsZShjcmMsIGJ1ZiwgbGVuKQogICAgIHVuc2lnbmVkIGxvbmcgY3JjOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgRkFSICpidWY7Ci0gICAgdW5zaWduZWQgbGVuOworICAgIHpfc2l6ZV90IGxlbjsKIHsKICAgICByZWdpc3RlciB6X2NyY190IGM7CiAgICAgcmVnaXN0ZXIgY29uc3Qgel9jcmNfdCBGQVIgKmJ1ZjQ7CkBAIC0yNzgsNyArMjk3LDcgQEAKIH0KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwotI2RlZmluZSBET0JJRzQgYyBePSAqKytidWY0OyBcCisjZGVmaW5lIERPQklHNCBjIF49ICpidWY0Kys7IFwKICAgICAgICAgYyA9IGNyY190YWJsZVs0XVtjICYgMHhmZl0gXiBjcmNfdGFibGVbNV1bKGMgPj4gOCkgJiAweGZmXSBeIFwKICAgICAgICAgICAgIGNyY190YWJsZVs2XVsoYyA+PiAxNikgJiAweGZmXSBeIGNyY190YWJsZVs3XVtjID4+IDI0XQogI2RlZmluZSBET0JJRzMyIERPQklHNDsgRE9CSUc0OyBET0JJRzQ7IERPQklHNDsgRE9CSUc0OyBET0JJRzQ7IERPQklHNDsgRE9CSUc0CkBAIC0yODcsNyArMzA2LDcgQEAKIGxvY2FsIHVuc2lnbmVkIGxvbmcgY3JjMzJfYmlnKGNyYywgYnVmLCBsZW4pCiAgICAgdW5zaWduZWQgbG9uZyBjcmM7CiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKmJ1ZjsKLSAgICB1bnNpZ25lZCBsZW47CisgICAgel9zaXplX3QgbGVuOwogewogICAgIHJlZ2lzdGVyIHpfY3JjX3QgYzsKICAgICByZWdpc3RlciBjb25zdCB6X2NyY190IEZBUiAqYnVmNDsKQEAgLTMwMCw3ICszMTksNiBAQAogICAgIH0KIAogICAgIGJ1ZjQgPSAoY29uc3Qgel9jcmNfdCBGQVIgKikoY29uc3Qgdm9pZCBGQVIgKilidWY7Ci0gICAgYnVmNC0tOwogICAgIHdoaWxlIChsZW4gPj0gMzIpIHsKICAgICAgICAgRE9CSUczMjsKICAgICAgICAgbGVuIC09IDMyOwpAQCAtMzA5LDcgKzMyNyw2IEBACiAgICAgICAgIERPQklHNDsKICAgICAgICAgbGVuIC09IDQ7CiAgICAgfQotICAgIGJ1ZjQrKzsKICAgICBidWYgPSAoY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKilidWY0OwogCiAgICAgaWYgKGxlbikgZG8gewpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL2RlZmxhdGUuYyBiL01vZHVsZXMvemxpYi9kZWZsYXRlLmMKaW5kZXggNjk2OTU3Ny4uMWVjNzYxNCAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGliL2RlZmxhdGUuYworKysgYi9Nb2R1bGVzL3psaWIvZGVmbGF0ZS5jCkBAIC0xLDUgKzEsNSBAQAogLyogZGVmbGF0ZS5jIC0tIGNvbXByZXNzIGRhdGEgdXNpbmcgdGhlIGRlZmxhdGlvbiBhbGdvcml0aG0KLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDEzIEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDE3IEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqLwogCkBAIC01Miw3ICs1Miw3IEBACiAjaW5jbHVkZSAiZGVmbGF0ZS5oIgogCiBjb25zdCBjaGFyIGRlZmxhdGVfY29weXJpZ2h0W10gPQotICAgIiBkZWZsYXRlIDEuMi44IENvcHlyaWdodCAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlciAiOworICAgIiBkZWZsYXRlIDEuMi4xMSBDb3B5cmlnaHQgMTk5NS0yMDE3IEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIgIjsKIC8qCiAgIElmIHlvdSB1c2UgdGhlIHpsaWIgbGlicmFyeSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGlzIHdlbGNvbWUKICAgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgeW91ciBwcm9kdWN0LiBJZiBmb3Igc29tZSByZWFzb24geW91IGNhbm5vdApAQCAtNzMsNiArNzMsOCBAQAogdHlwZWRlZiBibG9ja19zdGF0ZSAoKmNvbXByZXNzX2Z1bmMpIE9GKChkZWZsYXRlX3N0YXRlICpzLCBpbnQgZmx1c2gpKTsKIC8qIENvbXByZXNzaW9uIGZ1bmN0aW9uLiBSZXR1cm5zIHRoZSBibG9jayBzdGF0ZSBhZnRlciB0aGUgY2FsbC4gKi8KIAorbG9jYWwgaW50IGRlZmxhdGVTdGF0ZUNoZWNrICAgICAgT0YoKHpfc3RyZWFtcCBzdHJtKSk7Citsb2NhbCB2b2lkIHNsaWRlX2hhc2ggICAgIE9GKChkZWZsYXRlX3N0YXRlICpzKSk7CiBsb2NhbCB2b2lkIGZpbGxfd2luZG93ICAgIE9GKChkZWZsYXRlX3N0YXRlICpzKSk7CiBsb2NhbCBibG9ja19zdGF0ZSBkZWZsYXRlX3N0b3JlZCBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgaW50IGZsdXNoKSk7CiBsb2NhbCBibG9ja19zdGF0ZSBkZWZsYXRlX2Zhc3QgICBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgaW50IGZsdXNoKSk7CkBAIC04NCwxNSArODYsMTYgQEAKIGxvY2FsIHZvaWQgbG1faW5pdCAgICAgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKIGxvY2FsIHZvaWQgcHV0U2hvcnRNU0IgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIHVJbnQgYikpOwogbG9jYWwgdm9pZCBmbHVzaF9wZW5kaW5nICBPRigoel9zdHJlYW1wIHN0cm0pKTsKLWxvY2FsIGludCByZWFkX2J1ZiAgICAgICAgT0YoKHpfc3RyZWFtcCBzdHJtLCBCeXRlZiAqYnVmLCB1bnNpZ25lZCBzaXplKSk7Citsb2NhbCB1bnNpZ25lZCByZWFkX2J1ZiAgIE9GKCh6X3N0cmVhbXAgc3RybSwgQnl0ZWYgKmJ1ZiwgdW5zaWduZWQgc2l6ZSkpOwogI2lmZGVmIEFTTVYKKyMgIHByYWdtYSBtZXNzYWdlKCJBc3NlbWJsZXIgY29kZSBtYXkgaGF2ZSBidWdzIC0tIHVzZSBhdCB5b3VyIG93biByaXNrIikKICAgICAgIHZvaWQgbWF0Y2hfaW5pdCBPRigodm9pZCkpOyAvKiBhc20gY29kZSBpbml0aWFsaXphdGlvbiAqLwogICAgICAgdUludCBsb25nZXN0X21hdGNoICBPRigoZGVmbGF0ZV9zdGF0ZSAqcywgSVBvcyBjdXJfbWF0Y2gpKTsKICNlbHNlCiBsb2NhbCB1SW50IGxvbmdlc3RfbWF0Y2ggIE9GKChkZWZsYXRlX3N0YXRlICpzLCBJUG9zIGN1cl9tYXRjaCkpOwogI2VuZGlmCiAKLSNpZmRlZiBERUJVRworI2lmZGVmIFpMSUJfREVCVUcKIGxvY2FsICB2b2lkIGNoZWNrX21hdGNoIE9GKChkZWZsYXRlX3N0YXRlICpzLCBJUG9zIHN0YXJ0LCBJUG9zIG1hdGNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsZW5ndGgpKTsKICNlbmRpZgpAQCAtMTQ4LDIxICsxNTEsMTQgQEAKICAqIG1lYW5pbmcuCiAgKi8KIAotI2RlZmluZSBFUVVBTCAwCi0vKiByZXN1bHQgb2YgbWVtY21wIGZvciBlcXVhbCBzdHJpbmdzICovCi0KLSNpZm5kZWYgTk9fRFVNTVlfREVDTAotc3RydWN0IHN0YXRpY190cmVlX2Rlc2NfcyB7aW50IGR1bW15O307IC8qIGZvciBidWdneSBjb21waWxlcnMgKi8KLSNlbmRpZgotCiAvKiByYW5rIFpfQkxPQ0sgYmV0d2VlbiBaX05PX0ZMVVNIIGFuZCBaX1BBUlRJQUxfRkxVU0ggKi8KLSNkZWZpbmUgUkFOSyhmKSAoKChmKSA8PCAxKSAtICgoZikgPiA0ID8gOSA6IDApKQorI2RlZmluZSBSQU5LKGYpICgoKGYpICogMikgLSAoKGYpID4gNCA/IDkgOiAwKSkKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKiBVcGRhdGUgYSBoYXNoIHZhbHVlIHdpdGggdGhlIGdpdmVuIGlucHV0IGJ5dGUKLSAqIElOICBhc3NlcnRpb246IGFsbCBjYWxscyB0byB0byBVUERBVEVfSEFTSCBhcmUgbWFkZSB3aXRoIGNvbnNlY3V0aXZlCi0gKiAgICBpbnB1dCBjaGFyYWN0ZXJzLCBzbyB0aGF0IGEgcnVubmluZyBoYXNoIGtleSBjYW4gYmUgY29tcHV0ZWQgZnJvbSB0aGUKLSAqICAgIHByZXZpb3VzIGtleSBpbnN0ZWFkIG9mIGNvbXBsZXRlIHJlY2FsY3VsYXRpb24gZWFjaCB0aW1lLgorICogSU4gIGFzc2VydGlvbjogYWxsIGNhbGxzIHRvIFVQREFURV9IQVNIIGFyZSBtYWRlIHdpdGggY29uc2VjdXRpdmUgaW5wdXQKKyAqICAgIGNoYXJhY3RlcnMsIHNvIHRoYXQgYSBydW5uaW5nIGhhc2gga2V5IGNhbiBiZSBjb21wdXRlZCBmcm9tIHRoZSBwcmV2aW91cworICogICAga2V5IGluc3RlYWQgb2YgY29tcGxldGUgcmVjYWxjdWxhdGlvbiBlYWNoIHRpbWUuCiAgKi8KICNkZWZpbmUgVVBEQVRFX0hBU0gocyxoLGMpIChoID0gKCgoaCk8PHMtPmhhc2hfc2hpZnQpIF4gKGMpKSAmIHMtPmhhc2hfbWFzaykKIApAQCAtMTczLDkgKzE2OSw5IEBACiAgKiB0aGUgcHJldmlvdXMgbGVuZ3RoIG9mIHRoZSBoYXNoIGNoYWluLgogICogSWYgdGhpcyBmaWxlIGlzIGNvbXBpbGVkIHdpdGggLURGQVNURVNULCB0aGUgY29tcHJlc3Npb24gbGV2ZWwgaXMgZm9yY2VkCiAgKiB0byAxLCBhbmQgbm8gaGFzaCBjaGFpbnMgYXJlIG1haW50YWluZWQuCi0gKiBJTiAgYXNzZXJ0aW9uOiBhbGwgY2FsbHMgdG8gdG8gSU5TRVJUX1NUUklORyBhcmUgbWFkZSB3aXRoIGNvbnNlY3V0aXZlCi0gKiAgICBpbnB1dCBjaGFyYWN0ZXJzIGFuZCB0aGUgZmlyc3QgTUlOX01BVENIIGJ5dGVzIG9mIHN0ciBhcmUgdmFsaWQKLSAqICAgIChleGNlcHQgZm9yIHRoZSBsYXN0IE1JTl9NQVRDSC0xIGJ5dGVzIG9mIHRoZSBpbnB1dCBmaWxlKS4KKyAqIElOICBhc3NlcnRpb246IGFsbCBjYWxscyB0byBJTlNFUlRfU1RSSU5HIGFyZSBtYWRlIHdpdGggY29uc2VjdXRpdmUgaW5wdXQKKyAqICAgIGNoYXJhY3RlcnMgYW5kIHRoZSBmaXJzdCBNSU5fTUFUQ0ggYnl0ZXMgb2Ygc3RyIGFyZSB2YWxpZCAoZXhjZXB0IGZvcgorICogICAgdGhlIGxhc3QgTUlOX01BVENILTEgYnl0ZXMgb2YgdGhlIGlucHV0IGZpbGUpLgogICovCiAjaWZkZWYgRkFTVEVTVAogI2RlZmluZSBJTlNFUlRfU1RSSU5HKHMsIHN0ciwgbWF0Y2hfaGVhZCkgXApAQCAtMTk3LDYgKzE5MywzNyBAQAogICAgIHMtPmhlYWRbcy0+aGFzaF9zaXplLTFdID0gTklMOyBcCiAgICAgem1lbXplcm8oKEJ5dGVmICopcy0+aGVhZCwgKHVuc2lnbmVkKShzLT5oYXNoX3NpemUtMSkqc2l6ZW9mKCpzLT5oZWFkKSk7CiAKKy8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogU2xpZGUgdGhlIGhhc2ggdGFibGUgd2hlbiBzbGlkaW5nIHRoZSB3aW5kb3cgZG93biAoY291bGQgYmUgYXZvaWRlZCB3aXRoIDMyCisgKiBiaXQgdmFsdWVzIGF0IHRoZSBleHBlbnNlIG9mIG1lbW9yeSB1c2FnZSkuIFdlIHNsaWRlIGV2ZW4gd2hlbiBsZXZlbCA9PSAwIHRvCisgKiBrZWVwIHRoZSBoYXNoIHRhYmxlIGNvbnNpc3RlbnQgaWYgd2Ugc3dpdGNoIGJhY2sgdG8gbGV2ZWwgPiAwIGxhdGVyLgorICovCitsb2NhbCB2b2lkIHNsaWRlX2hhc2gocykKKyAgICBkZWZsYXRlX3N0YXRlICpzOworeworICAgIHVuc2lnbmVkIG4sIG07CisgICAgUG9zZiAqcDsKKyAgICB1SW50IHdzaXplID0gcy0+d19zaXplOworCisgICAgbiA9IHMtPmhhc2hfc2l6ZTsKKyAgICBwID0gJnMtPmhlYWRbbl07CisgICAgZG8geworICAgICAgICBtID0gKi0tcDsKKyAgICAgICAgKnAgPSAoUG9zKShtID49IHdzaXplID8gbSAtIHdzaXplIDogTklMKTsKKyAgICB9IHdoaWxlICgtLW4pOworICAgIG4gPSB3c2l6ZTsKKyNpZm5kZWYgRkFTVEVTVAorICAgIHAgPSAmcy0+cHJldltuXTsKKyAgICBkbyB7CisgICAgICAgIG0gPSAqLS1wOworICAgICAgICAqcCA9IChQb3MpKG0gPj0gd3NpemUgPyBtIC0gd3NpemUgOiBOSUwpOworICAgICAgICAvKiBJZiBuIGlzIG5vdCBvbiBhbnkgaGFzaCBjaGFpbiwgcHJldltuXSBpcyBnYXJiYWdlIGJ1dAorICAgICAgICAgKiBpdHMgdmFsdWUgd2lsbCBuZXZlciBiZSB1c2VkLgorICAgICAgICAgKi8KKyAgICB9IHdoaWxlICgtLW4pOworI2VuZGlmCit9CisKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIGludCBaRVhQT1JUIGRlZmxhdGVJbml0XyhzdHJtLCBsZXZlbCwgdmVyc2lvbiwgc3RyZWFtX3NpemUpCiAgICAgel9zdHJlYW1wIHN0cm07CkBAIC0yNzAsNyArMjk3LDcgQEAKICNlbmRpZgogICAgIGlmIChtZW1MZXZlbCA8IDEgfHwgbWVtTGV2ZWwgPiBNQVhfTUVNX0xFVkVMIHx8IG1ldGhvZCAhPSBaX0RFRkxBVEVEIHx8CiAgICAgICAgIHdpbmRvd0JpdHMgPCA4IHx8IHdpbmRvd0JpdHMgPiAxNSB8fCBsZXZlbCA8IDAgfHwgbGV2ZWwgPiA5IHx8Ci0gICAgICAgIHN0cmF0ZWd5IDwgMCB8fCBzdHJhdGVneSA+IFpfRklYRUQpIHsKKyAgICAgICAgc3RyYXRlZ3kgPCAwIHx8IHN0cmF0ZWd5ID4gWl9GSVhFRCB8fCAod2luZG93Qml0cyA9PSA4ICYmIHdyYXAgIT0gMSkpIHsKICAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIH0KICAgICBpZiAod2luZG93Qml0cyA9PSA4KSB3aW5kb3dCaXRzID0gOTsgIC8qIHVudGlsIDI1Ni1ieXRlIHdpbmRvdyBidWcgZml4ZWQgKi8KQEAgLTI3OCwxNCArMzA1LDE1IEBACiAgICAgaWYgKHMgPT0gWl9OVUxMKSByZXR1cm4gWl9NRU1fRVJST1I7CiAgICAgc3RybS0+c3RhdGUgPSAoc3RydWN0IGludGVybmFsX3N0YXRlIEZBUiAqKXM7CiAgICAgcy0+c3RybSA9IHN0cm07CisgICAgcy0+c3RhdHVzID0gSU5JVF9TVEFURTsgICAgIC8qIHRvIHBhc3Mgc3RhdGUgdGVzdCBpbiBkZWZsYXRlUmVzZXQoKSAqLwogCiAgICAgcy0+d3JhcCA9IHdyYXA7CiAgICAgcy0+Z3poZWFkID0gWl9OVUxMOwotICAgIHMtPndfYml0cyA9IHdpbmRvd0JpdHM7CisgICAgcy0+d19iaXRzID0gKHVJbnQpd2luZG93Qml0czsKICAgICBzLT53X3NpemUgPSAxIDw8IHMtPndfYml0czsKICAgICBzLT53X21hc2sgPSBzLT53X3NpemUgLSAxOwogCi0gICAgcy0+aGFzaF9iaXRzID0gbWVtTGV2ZWwgKyA3OworICAgIHMtPmhhc2hfYml0cyA9ICh1SW50KW1lbUxldmVsICsgNzsKICAgICBzLT5oYXNoX3NpemUgPSAxIDw8IHMtPmhhc2hfYml0czsKICAgICBzLT5oYXNoX21hc2sgPSBzLT5oYXNoX3NpemUgLSAxOwogICAgIHMtPmhhc2hfc2hpZnQgPSAgKChzLT5oYXNoX2JpdHMrTUlOX01BVENILTEpL01JTl9NQVRDSCk7CkBAIC0zMTksNiArMzQ3LDMxIEBACiAgICAgcmV0dXJuIGRlZmxhdGVSZXNldChzdHJtKTsKIH0KIAorLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICogQ2hlY2sgZm9yIGEgdmFsaWQgZGVmbGF0ZSBzdHJlYW0gc3RhdGUuIFJldHVybiAwIGlmIG9rLCAxIGlmIG5vdC4KKyAqLworbG9jYWwgaW50IGRlZmxhdGVTdGF0ZUNoZWNrIChzdHJtKQorICAgIHpfc3RyZWFtcCBzdHJtOworeworICAgIGRlZmxhdGVfc3RhdGUgKnM7CisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8CisgICAgICAgIHN0cm0tPnphbGxvYyA9PSAoYWxsb2NfZnVuYykwIHx8IHN0cm0tPnpmcmVlID09IChmcmVlX2Z1bmMpMCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgcyA9IHN0cm0tPnN0YXRlOworICAgIGlmIChzID09IFpfTlVMTCB8fCBzLT5zdHJtICE9IHN0cm0gfHwgKHMtPnN0YXR1cyAhPSBJTklUX1NUQVRFICYmCisjaWZkZWYgR1pJUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnN0YXR1cyAhPSBHWklQX1NUQVRFICYmCisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5zdGF0dXMgIT0gRVhUUkFfU1RBVEUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5zdGF0dXMgIT0gTkFNRV9TVEFURSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnN0YXR1cyAhPSBDT01NRU5UX1NUQVRFICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+c3RhdHVzICE9IEhDUkNfU1RBVEUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5zdGF0dXMgIT0gQlVTWV9TVEFURSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnN0YXR1cyAhPSBGSU5JU0hfU1RBVEUpKQorICAgICAgICByZXR1cm4gMTsKKyAgICByZXR1cm4gMDsKK30KKwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogaW50IFpFWFBPUlQgZGVmbGF0ZVNldERpY3Rpb25hcnkgKHN0cm0sIGRpY3Rpb25hcnksIGRpY3RMZW5ndGgpCiAgICAgel9zdHJlYW1wIHN0cm07CkBAIC0zMzEsNyArMzg0LDcgQEAKICAgICB1bnNpZ25lZCBhdmFpbDsKICAgICB6X2NvbnN0IHVuc2lnbmVkIGNoYXIgKm5leHQ7CiAKLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMIHx8IGRpY3Rpb25hcnkgPT0gWl9OVUxMKQorICAgIGlmIChkZWZsYXRlU3RhdGVDaGVjayhzdHJtKSB8fCBkaWN0aW9uYXJ5ID09IFpfTlVMTCkKICAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIHMgPSBzdHJtLT5zdGF0ZTsKICAgICB3cmFwID0gcy0+d3JhcDsKQEAgLTM4OSwxMyArNDQyLDM0IEBACiB9CiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KK2ludCBaRVhQT1JUIGRlZmxhdGVHZXREaWN0aW9uYXJ5IChzdHJtLCBkaWN0aW9uYXJ5LCBkaWN0TGVuZ3RoKQorICAgIHpfc3RyZWFtcCBzdHJtOworICAgIEJ5dGVmICpkaWN0aW9uYXJ5OworICAgIHVJbnQgICpkaWN0TGVuZ3RoOworeworICAgIGRlZmxhdGVfc3RhdGUgKnM7CisgICAgdUludCBsZW47CisKKyAgICBpZiAoZGVmbGF0ZVN0YXRlQ2hlY2soc3RybSkpCisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBzID0gc3RybS0+c3RhdGU7CisgICAgbGVuID0gcy0+c3Ryc3RhcnQgKyBzLT5sb29rYWhlYWQ7CisgICAgaWYgKGxlbiA+IHMtPndfc2l6ZSkKKyAgICAgICAgbGVuID0gcy0+d19zaXplOworICAgIGlmIChkaWN0aW9uYXJ5ICE9IFpfTlVMTCAmJiBsZW4pCisgICAgICAgIHptZW1jcHkoZGljdGlvbmFyeSwgcy0+d2luZG93ICsgcy0+c3Ryc3RhcnQgKyBzLT5sb29rYWhlYWQgLSBsZW4sIGxlbik7CisgICAgaWYgKGRpY3RMZW5ndGggIT0gWl9OVUxMKQorICAgICAgICAqZGljdExlbmd0aCA9IGxlbjsKKyAgICByZXR1cm4gWl9PSzsKK30KKworLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAqLwogaW50IFpFWFBPUlQgZGVmbGF0ZVJlc2V0S2VlcCAoc3RybSkKICAgICB6X3N0cmVhbXAgc3RybTsKIHsKICAgICBkZWZsYXRlX3N0YXRlICpzOwogCi0gICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCB8fAotICAgICAgICBzdHJtLT56YWxsb2MgPT0gKGFsbG9jX2Z1bmMpMCB8fCBzdHJtLT56ZnJlZSA9PSAoZnJlZV9mdW5jKTApIHsKKyAgICBpZiAoZGVmbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHsKICAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIH0KIApAQCAtNDEwLDcgKzQ4NCwxMSBAQAogICAgIGlmIChzLT53cmFwIDwgMCkgewogICAgICAgICBzLT53cmFwID0gLXMtPndyYXA7IC8qIHdhcyBtYWRlIG5lZ2F0aXZlIGJ5IGRlZmxhdGUoLi4uLCBaX0ZJTklTSCk7ICovCiAgICAgfQotICAgIHMtPnN0YXR1cyA9IHMtPndyYXAgPyBJTklUX1NUQVRFIDogQlVTWV9TVEFURTsKKyAgICBzLT5zdGF0dXMgPQorI2lmZGVmIEdaSVAKKyAgICAgICAgcy0+d3JhcCA9PSAyID8gR1pJUF9TVEFURSA6CisjZW5kaWYKKyAgICAgICAgcy0+d3JhcCA/IElOSVRfU1RBVEUgOiBCVVNZX1NUQVRFOwogICAgIHN0cm0tPmFkbGVyID0KICNpZmRlZiBHWklQCiAgICAgICAgIHMtPndyYXAgPT0gMiA/IGNyYzMyKDBMLCBaX05VTEwsIDApIDoKQEAgLTQ0MCw4ICs1MTgsOCBAQAogICAgIHpfc3RyZWFtcCBzdHJtOwogICAgIGd6X2hlYWRlcnAgaGVhZDsKIHsKLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7Ci0gICAgaWYgKHN0cm0tPnN0YXRlLT53cmFwICE9IDIpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBpZiAoZGVmbGF0ZVN0YXRlQ2hlY2soc3RybSkgfHwgc3RybS0+c3RhdGUtPndyYXAgIT0gMikKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIHN0cm0tPnN0YXRlLT5nemhlYWQgPSBoZWFkOwogICAgIHJldHVybiBaX09LOwogfQpAQCAtNDUyLDcgKzUzMCw3IEBACiAgICAgaW50ICpiaXRzOwogICAgIHpfc3RyZWFtcCBzdHJtOwogewotICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBpZiAoZGVmbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICAgICBpZiAocGVuZGluZyAhPSBaX05VTEwpCiAgICAgICAgICpwZW5kaW5nID0gc3RybS0+c3RhdGUtPnBlbmRpbmc7CiAgICAgaWYgKGJpdHMgIT0gWl9OVUxMKQpAQCAtNDY5LDcgKzU0Nyw3IEBACiAgICAgZGVmbGF0ZV9zdGF0ZSAqczsKICAgICBpbnQgcHV0OwogCi0gICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIGlmIChkZWZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIHMgPSBzdHJtLT5zdGF0ZTsKICAgICBpZiAoKEJ5dGVmICopKHMtPmRfYnVmKSA8IHMtPnBlbmRpbmdfb3V0ICsgKChCdWZfc2l6ZSArIDcpID4+IDMpKQogICAgICAgICByZXR1cm4gWl9CVUZfRVJST1I7CkBAIC00OTQsOSArNTcyLDggQEAKIHsKICAgICBkZWZsYXRlX3N0YXRlICpzOwogICAgIGNvbXByZXNzX2Z1bmMgZnVuYzsKLSAgICBpbnQgZXJyID0gWl9PSzsKIAotICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBpZiAoZGVmbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICAgICBzID0gc3RybS0+c3RhdGU7CiAKICNpZmRlZiBGQVNURVNUCkBAIC01MTAsMTMgKzU4NywyMiBAQAogICAgIGZ1bmMgPSBjb25maWd1cmF0aW9uX3RhYmxlW3MtPmxldmVsXS5mdW5jOwogCiAgICAgaWYgKChzdHJhdGVneSAhPSBzLT5zdHJhdGVneSB8fCBmdW5jICE9IGNvbmZpZ3VyYXRpb25fdGFibGVbbGV2ZWxdLmZ1bmMpICYmCi0gICAgICAgIHN0cm0tPnRvdGFsX2luICE9IDApIHsKKyAgICAgICAgcy0+aGlnaF93YXRlcikgewogICAgICAgICAvKiBGbHVzaCB0aGUgbGFzdCBidWZmZXI6ICovCi0gICAgICAgIGVyciA9IGRlZmxhdGUoc3RybSwgWl9CTE9DSyk7Ci0gICAgICAgIGlmIChlcnIgPT0gWl9CVUZfRVJST1IgJiYgcy0+cGVuZGluZyA9PSAwKQotICAgICAgICAgICAgZXJyID0gWl9PSzsKKyAgICAgICAgaW50IGVyciA9IGRlZmxhdGUoc3RybSwgWl9CTE9DSyk7CisgICAgICAgIGlmIChlcnIgPT0gWl9TVFJFQU1fRVJST1IpCisgICAgICAgICAgICByZXR1cm4gZXJyOworICAgICAgICBpZiAoc3RybS0+YXZhaWxfb3V0ID09IDApCisgICAgICAgICAgICByZXR1cm4gWl9CVUZfRVJST1I7CiAgICAgfQogICAgIGlmIChzLT5sZXZlbCAhPSBsZXZlbCkgeworICAgICAgICBpZiAocy0+bGV2ZWwgPT0gMCAmJiBzLT5tYXRjaGVzICE9IDApIHsKKyAgICAgICAgICAgIGlmIChzLT5tYXRjaGVzID09IDEpCisgICAgICAgICAgICAgICAgc2xpZGVfaGFzaChzKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBDTEVBUl9IQVNIKHMpOworICAgICAgICAgICAgcy0+bWF0Y2hlcyA9IDA7CisgICAgICAgIH0KICAgICAgICAgcy0+bGV2ZWwgPSBsZXZlbDsKICAgICAgICAgcy0+bWF4X2xhenlfbWF0Y2ggICA9IGNvbmZpZ3VyYXRpb25fdGFibGVbbGV2ZWxdLm1heF9sYXp5OwogICAgICAgICBzLT5nb29kX21hdGNoICAgICAgID0gY29uZmlndXJhdGlvbl90YWJsZVtsZXZlbF0uZ29vZF9sZW5ndGg7CkBAIC01MjQsNyArNjEwLDcgQEAKICAgICAgICAgcy0+bWF4X2NoYWluX2xlbmd0aCA9IGNvbmZpZ3VyYXRpb25fdGFibGVbbGV2ZWxdLm1heF9jaGFpbjsKICAgICB9CiAgICAgcy0+c3RyYXRlZ3kgPSBzdHJhdGVneTsKLSAgICByZXR1cm4gZXJyOworICAgIHJldHVybiBaX09LOwogfQogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCkBAIC01MzcsMTIgKzYyMywxMiBAQAogewogICAgIGRlZmxhdGVfc3RhdGUgKnM7CiAKLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgaWYgKGRlZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAgICAgcyA9IHN0cm0tPnN0YXRlOwotICAgIHMtPmdvb2RfbWF0Y2ggPSBnb29kX2xlbmd0aDsKLSAgICBzLT5tYXhfbGF6eV9tYXRjaCA9IG1heF9sYXp5OworICAgIHMtPmdvb2RfbWF0Y2ggPSAodUludClnb29kX2xlbmd0aDsKKyAgICBzLT5tYXhfbGF6eV9tYXRjaCA9ICh1SW50KW1heF9sYXp5OwogICAgIHMtPm5pY2VfbWF0Y2ggPSBuaWNlX2xlbmd0aDsKLSAgICBzLT5tYXhfY2hhaW5fbGVuZ3RoID0gbWF4X2NoYWluOworICAgIHMtPm1heF9jaGFpbl9sZW5ndGggPSAodUludCltYXhfY2hhaW47CiAgICAgcmV0dXJuIFpfT0s7CiB9CiAKQEAgLTU2OSwxNCArNjU1LDEzIEBACiB7CiAgICAgZGVmbGF0ZV9zdGF0ZSAqczsKICAgICB1TG9uZyBjb21wbGVuLCB3cmFwbGVuOwotICAgIEJ5dGVmICpzdHI7CiAKICAgICAvKiBjb25zZXJ2YXRpdmUgdXBwZXIgYm91bmQgZm9yIGNvbXByZXNzZWQgZGF0YSAqLwogICAgIGNvbXBsZW4gPSBzb3VyY2VMZW4gKwogICAgICAgICAgICAgICAoKHNvdXJjZUxlbiArIDcpID4+IDMpICsgKChzb3VyY2VMZW4gKyA2MykgPj4gNikgKyA1OwogCiAgICAgLyogaWYgY2FuJ3QgZ2V0IHBhcmFtZXRlcnMsIHJldHVybiBjb25zZXJ2YXRpdmUgYm91bmQgcGx1cyB6bGliIHdyYXBwZXIgKi8KLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKQorICAgIGlmIChkZWZsYXRlU3RhdGVDaGVjayhzdHJtKSkKICAgICAgICAgcmV0dXJuIGNvbXBsZW4gKyA2OwogCiAgICAgLyogY29tcHV0ZSB3cmFwcGVyIGxlbmd0aCAqLwpAQCAtNTg4LDkgKzY3MywxMSBAQAogICAgIGNhc2UgMTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB6bGliIHdyYXBwZXIgKi8KICAgICAgICAgd3JhcGxlbiA9IDYgKyAocy0+c3Ryc3RhcnQgPyA0IDogMCk7CiAgICAgICAgIGJyZWFrOworI2lmZGVmIEdaSVAKICAgICBjYXNlIDI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZ3ppcCB3cmFwcGVyICovCiAgICAgICAgIHdyYXBsZW4gPSAxODsKICAgICAgICAgaWYgKHMtPmd6aGVhZCAhPSBaX05VTEwpIHsgICAgICAgICAgLyogdXNlci1zdXBwbGllZCBnemlwIGhlYWRlciAqLworICAgICAgICAgICAgQnl0ZWYgKnN0cjsKICAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmV4dHJhICE9IFpfTlVMTCkKICAgICAgICAgICAgICAgICB3cmFwbGVuICs9IDIgKyBzLT5nemhlYWQtPmV4dHJhX2xlbjsKICAgICAgICAgICAgIHN0ciA9IHMtPmd6aGVhZC0+bmFtZTsKQEAgLTYwNyw2ICs2OTQsNyBAQAogICAgICAgICAgICAgICAgIHdyYXBsZW4gKz0gMjsKICAgICAgICAgfQogICAgICAgICBicmVhazsKKyNlbmRpZgogICAgIGRlZmF1bHQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgY29tcGlsZXIgaGFwcGluZXNzICovCiAgICAgICAgIHdyYXBsZW4gPSA2OwogICAgIH0KQEAgLTYzNCwxMCArNzIyLDEwIEBACiB9CiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAqIEZsdXNoIGFzIG11Y2ggcGVuZGluZyBvdXRwdXQgYXMgcG9zc2libGUuIEFsbCBkZWZsYXRlKCkgb3V0cHV0IGdvZXMKLSAqIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBzbyBzb21lIGFwcGxpY2F0aW9ucyBtYXkgd2lzaCB0byBtb2RpZnkgaXQKLSAqIHRvIGF2b2lkIGFsbG9jYXRpbmcgYSBsYXJnZSBzdHJtLT5uZXh0X291dCBidWZmZXIgYW5kIGNvcHlpbmcgaW50byBpdC4KLSAqIChTZWUgYWxzbyByZWFkX2J1ZigpKS4KKyAqIEZsdXNoIGFzIG11Y2ggcGVuZGluZyBvdXRwdXQgYXMgcG9zc2libGUuIEFsbCBkZWZsYXRlKCkgb3V0cHV0LCBleGNlcHQgZm9yCisgKiBzb21lIGRlZmxhdGVfc3RvcmVkKCkgb3V0cHV0LCBnb2VzIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBzbyBzb21lCisgKiBhcHBsaWNhdGlvbnMgbWF5IHdpc2ggdG8gbW9kaWZ5IGl0IHRvIGF2b2lkIGFsbG9jYXRpbmcgYSBsYXJnZQorICogc3RybS0+bmV4dF9vdXQgYnVmZmVyIGFuZCBjb3B5aW5nIGludG8gaXQuIChTZWUgYWxzbyByZWFkX2J1ZigpKS4KICAqLwogbG9jYWwgdm9pZCBmbHVzaF9wZW5kaW5nKHN0cm0pCiAgICAgel9zdHJlYW1wIHN0cm07CkBAIC02NTQsMTMgKzc0MiwyMyBAQAogICAgIHN0cm0tPm5leHRfb3V0ICArPSBsZW47CiAgICAgcy0+cGVuZGluZ19vdXQgICs9IGxlbjsKICAgICBzdHJtLT50b3RhbF9vdXQgKz0gbGVuOwotICAgIHN0cm0tPmF2YWlsX291dCAgLT0gbGVuOwotICAgIHMtPnBlbmRpbmcgLT0gbGVuOworICAgIHN0cm0tPmF2YWlsX291dCAtPSBsZW47CisgICAgcy0+cGVuZGluZyAgICAgIC09IGxlbjsKICAgICBpZiAocy0+cGVuZGluZyA9PSAwKSB7CiAgICAgICAgIHMtPnBlbmRpbmdfb3V0ID0gcy0+cGVuZGluZ19idWY7CiAgICAgfQogfQogCisvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAqIFVwZGF0ZSB0aGUgaGVhZGVyIENSQyB3aXRoIHRoZSBieXRlcyBzLT5wZW5kaW5nX2J1ZltiZWcuLnMtPnBlbmRpbmcgLSAxXS4KKyAqLworI2RlZmluZSBIQ1JDX1VQREFURShiZWcpIFwKKyAgICBkbyB7IFwKKyAgICAgICAgaWYgKHMtPmd6aGVhZC0+aGNyYyAmJiBzLT5wZW5kaW5nID4gKGJlZykpIFwKKyAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoc3RybS0+YWRsZXIsIHMtPnBlbmRpbmdfYnVmICsgKGJlZyksIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+cGVuZGluZyAtIChiZWcpKTsgXAorICAgIH0gd2hpbGUgKDApCisKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gKi8KIGludCBaRVhQT1JUIGRlZmxhdGUgKHN0cm0sIGZsdXNoKQogICAgIHpfc3RyZWFtcCBzdHJtOwpAQCAtNjY5LDIwMyArNzY3LDIxIEBACiAgICAgaW50IG9sZF9mbHVzaDsgLyogdmFsdWUgb2YgZmx1c2ggcGFyYW0gZm9yIHByZXZpb3VzIGRlZmxhdGUgY2FsbCAqLwogICAgIGRlZmxhdGVfc3RhdGUgKnM7CiAKLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMIHx8Ci0gICAgICAgIGZsdXNoID4gWl9CTE9DSyB8fCBmbHVzaCA8IDApIHsKKyAgICBpZiAoZGVmbGF0ZVN0YXRlQ2hlY2soc3RybSkgfHwgZmx1c2ggPiBaX0JMT0NLIHx8IGZsdXNoIDwgMCkgewogICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAgICAgfQogICAgIHMgPSBzdHJtLT5zdGF0ZTsKIAogICAgIGlmIChzdHJtLT5uZXh0X291dCA9PSBaX05VTEwgfHwKLSAgICAgICAgKHN0cm0tPm5leHRfaW4gPT0gWl9OVUxMICYmIHN0cm0tPmF2YWlsX2luICE9IDApIHx8CisgICAgICAgIChzdHJtLT5hdmFpbF9pbiAhPSAwICYmIHN0cm0tPm5leHRfaW4gPT0gWl9OVUxMKSB8fAogICAgICAgICAocy0+c3RhdHVzID09IEZJTklTSF9TVEFURSAmJiBmbHVzaCAhPSBaX0ZJTklTSCkpIHsKICAgICAgICAgRVJSX1JFVFVSTihzdHJtLCBaX1NUUkVBTV9FUlJPUik7CiAgICAgfQogICAgIGlmIChzdHJtLT5hdmFpbF9vdXQgPT0gMCkgRVJSX1JFVFVSTihzdHJtLCBaX0JVRl9FUlJPUik7CiAKLSAgICBzLT5zdHJtID0gc3RybTsgLyoganVzdCBpbiBjYXNlICovCiAgICAgb2xkX2ZsdXNoID0gcy0+bGFzdF9mbHVzaDsKICAgICBzLT5sYXN0X2ZsdXNoID0gZmx1c2g7CiAKLSAgICAvKiBXcml0ZSB0aGUgaGVhZGVyICovCi0gICAgaWYgKHMtPnN0YXR1cyA9PSBJTklUX1NUQVRFKSB7Ci0jaWZkZWYgR1pJUAotICAgICAgICBpZiAocy0+d3JhcCA9PSAyKSB7Ci0gICAgICAgICAgICBzdHJtLT5hZGxlciA9IGNyYzMyKDBMLCBaX05VTEwsIDApOwotICAgICAgICAgICAgcHV0X2J5dGUocywgMzEpOwotICAgICAgICAgICAgcHV0X2J5dGUocywgMTM5KTsKLSAgICAgICAgICAgIHB1dF9ieXRlKHMsIDgpOwotICAgICAgICAgICAgaWYgKHMtPmd6aGVhZCA9PSBaX05VTEwpIHsKLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAwKTsKLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAwKTsKLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAwKTsKLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAwKTsKLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAwKTsKLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCBzLT5sZXZlbCA9PSA5ID8gMiA6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPnN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8IHMtPmxldmVsIDwgMiA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQgOiAwKSk7Ci0gICAgICAgICAgICAgICAgcHV0X2J5dGUocywgT1NfQ09ERSk7Ci0gICAgICAgICAgICAgICAgcy0+c3RhdHVzID0gQlVTWV9TVEFURTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIChzLT5nemhlYWQtPnRleHQgPyAxIDogMCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLT5nemhlYWQtPmhjcmMgPyAyIDogMCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLT5nemhlYWQtPmV4dHJhID09IFpfTlVMTCA/IDAgOiA0KSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHMtPmd6aGVhZC0+bmFtZSA9PSBaX05VTEwgPyAwIDogOCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLT5nemhlYWQtPmNvbW1lbnQgPT0gWl9OVUxMID8gMCA6IDE2KQotICAgICAgICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAoQnl0ZSkocy0+Z3poZWFkLT50aW1lICYgMHhmZikpOwotICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKSgocy0+Z3poZWFkLT50aW1lID4+IDgpICYgMHhmZikpOwotICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKSgocy0+Z3poZWFkLT50aW1lID4+IDE2KSAmIDB4ZmYpKTsKLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAoQnl0ZSkoKHMtPmd6aGVhZC0+dGltZSA+PiAyNCkgJiAweGZmKSk7Ci0gICAgICAgICAgICAgICAgcHV0X2J5dGUocywgcy0+bGV2ZWwgPT0gOSA/IDIgOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzLT5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLT5sZXZlbCA8IDIgPwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA0IDogMCkpOwotICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIHMtPmd6aGVhZC0+b3MgJiAweGZmKTsKLSAgICAgICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5leHRyYSAhPSBaX05VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgcHV0X2J5dGUocywgcy0+Z3poZWFkLT5leHRyYV9sZW4gJiAweGZmKTsKLSAgICAgICAgICAgICAgICAgICAgcHV0X2J5dGUocywgKHMtPmd6aGVhZC0+ZXh0cmFfbGVuID4+IDgpICYgMHhmZik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmhjcmMpCi0gICAgICAgICAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoc3RybS0+YWRsZXIsIHMtPnBlbmRpbmdfYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBlbmRpbmcpOwotICAgICAgICAgICAgICAgIHMtPmd6aW5kZXggPSAwOwotICAgICAgICAgICAgICAgIHMtPnN0YXR1cyA9IEVYVFJBX1NUQVRFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSNlbmRpZgotICAgICAgICB7Ci0gICAgICAgICAgICB1SW50IGhlYWRlciA9IChaX0RFRkxBVEVEICsgKChzLT53X2JpdHMtOCk8PDQpKSA8PCA4OwotICAgICAgICAgICAgdUludCBsZXZlbF9mbGFnczsKLQotICAgICAgICAgICAgaWYgKHMtPnN0cmF0ZWd5ID49IFpfSFVGRk1BTl9PTkxZIHx8IHMtPmxldmVsIDwgMikKLSAgICAgICAgICAgICAgICBsZXZlbF9mbGFncyA9IDA7Ci0gICAgICAgICAgICBlbHNlIGlmIChzLT5sZXZlbCA8IDYpCi0gICAgICAgICAgICAgICAgbGV2ZWxfZmxhZ3MgPSAxOwotICAgICAgICAgICAgZWxzZSBpZiAocy0+bGV2ZWwgPT0gNikKLSAgICAgICAgICAgICAgICBsZXZlbF9mbGFncyA9IDI7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbGV2ZWxfZmxhZ3MgPSAzOwotICAgICAgICAgICAgaGVhZGVyIHw9IChsZXZlbF9mbGFncyA8PCA2KTsKLSAgICAgICAgICAgIGlmIChzLT5zdHJzdGFydCAhPSAwKSBoZWFkZXIgfD0gUFJFU0VUX0RJQ1Q7Ci0gICAgICAgICAgICBoZWFkZXIgKz0gMzEgLSAoaGVhZGVyICUgMzEpOwotCi0gICAgICAgICAgICBzLT5zdGF0dXMgPSBCVVNZX1NUQVRFOwotICAgICAgICAgICAgcHV0U2hvcnRNU0IocywgaGVhZGVyKTsKLQotICAgICAgICAgICAgLyogU2F2ZSB0aGUgYWRsZXIzMiBvZiB0aGUgcHJlc2V0IGRpY3Rpb25hcnk6ICovCi0gICAgICAgICAgICBpZiAocy0+c3Ryc3RhcnQgIT0gMCkgewotICAgICAgICAgICAgICAgIHB1dFNob3J0TVNCKHMsICh1SW50KShzdHJtLT5hZGxlciA+PiAxNikpOwotICAgICAgICAgICAgICAgIHB1dFNob3J0TVNCKHMsICh1SW50KShzdHJtLT5hZGxlciAmIDB4ZmZmZikpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBhZGxlcjMyKDBMLCBaX05VTEwsIDApOwotICAgICAgICB9Ci0gICAgfQotI2lmZGVmIEdaSVAKLSAgICBpZiAocy0+c3RhdHVzID09IEVYVFJBX1NUQVRFKSB7Ci0gICAgICAgIGlmIChzLT5nemhlYWQtPmV4dHJhICE9IFpfTlVMTCkgewotICAgICAgICAgICAgdUludCBiZWcgPSBzLT5wZW5kaW5nOyAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLwotCi0gICAgICAgICAgICB3aGlsZSAocy0+Z3ppbmRleCA8IChzLT5nemhlYWQtPmV4dHJhX2xlbiAmIDB4ZmZmZikpIHsKLSAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyA9PSBzLT5wZW5kaW5nX2J1Zl9zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmhjcmMgJiYgcy0+cGVuZGluZyA+IGJlZykKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoc3RybS0+YWRsZXIsIHMtPnBlbmRpbmdfYnVmICsgYmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5wZW5kaW5nIC0gYmVnKTsKLSAgICAgICAgICAgICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKLSAgICAgICAgICAgICAgICAgICAgYmVnID0gcy0+cGVuZGluZzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHMtPnBlbmRpbmcgPT0gcy0+cGVuZGluZ19idWZfc2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCBzLT5nemhlYWQtPmV4dHJhW3MtPmd6aW5kZXhdKTsKLSAgICAgICAgICAgICAgICBzLT5nemluZGV4Kys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5oY3JjICYmIHMtPnBlbmRpbmcgPiBiZWcpCi0gICAgICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBjcmMzMihzdHJtLT5hZGxlciwgcy0+cGVuZGluZ19idWYgKyBiZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5wZW5kaW5nIC0gYmVnKTsKLSAgICAgICAgICAgIGlmIChzLT5nemluZGV4ID09IHMtPmd6aGVhZC0+ZXh0cmFfbGVuKSB7Ci0gICAgICAgICAgICAgICAgcy0+Z3ppbmRleCA9IDA7Ci0gICAgICAgICAgICAgICAgcy0+c3RhdHVzID0gTkFNRV9TVEFURTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzLT5zdGF0dXMgPSBOQU1FX1NUQVRFOwotICAgIH0KLSAgICBpZiAocy0+c3RhdHVzID09IE5BTUVfU1RBVEUpIHsKLSAgICAgICAgaWYgKHMtPmd6aGVhZC0+bmFtZSAhPSBaX05VTEwpIHsKLSAgICAgICAgICAgIHVJbnQgYmVnID0gcy0+cGVuZGluZzsgIC8qIHN0YXJ0IG9mIGJ5dGVzIHRvIHVwZGF0ZSBjcmMgKi8KLSAgICAgICAgICAgIGludCB2YWw7Ci0KLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyA9PSBzLT5wZW5kaW5nX2J1Zl9zaXplKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzLT5nemhlYWQtPmhjcmMgJiYgcy0+cGVuZGluZyA+IGJlZykKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoc3RybS0+YWRsZXIsIHMtPnBlbmRpbmdfYnVmICsgYmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5wZW5kaW5nIC0gYmVnKTsKLSAgICAgICAgICAgICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKLSAgICAgICAgICAgICAgICAgICAgYmVnID0gcy0+cGVuZGluZzsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHMtPnBlbmRpbmcgPT0gcy0+cGVuZGluZ19idWZfc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZhbCA9IHMtPmd6aGVhZC0+bmFtZVtzLT5nemluZGV4KytdOwotICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIHZhbCk7Ci0gICAgICAgICAgICB9IHdoaWxlICh2YWwgIT0gMCk7Ci0gICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5oY3JjICYmIHMtPnBlbmRpbmcgPiBiZWcpCi0gICAgICAgICAgICAgICAgc3RybS0+YWRsZXIgPSBjcmMzMihzdHJtLT5hZGxlciwgcy0+cGVuZGluZ19idWYgKyBiZWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5wZW5kaW5nIC0gYmVnKTsKLSAgICAgICAgICAgIGlmICh2YWwgPT0gMCkgewotICAgICAgICAgICAgICAgIHMtPmd6aW5kZXggPSAwOwotICAgICAgICAgICAgICAgIHMtPnN0YXR1cyA9IENPTU1FTlRfU1RBVEU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcy0+c3RhdHVzID0gQ09NTUVOVF9TVEFURTsKLSAgICB9Ci0gICAgaWYgKHMtPnN0YXR1cyA9PSBDT01NRU5UX1NUQVRFKSB7Ci0gICAgICAgIGlmIChzLT5nemhlYWQtPmNvbW1lbnQgIT0gWl9OVUxMKSB7Ci0gICAgICAgICAgICB1SW50IGJlZyA9IHMtPnBlbmRpbmc7ICAvKiBzdGFydCBvZiBieXRlcyB0byB1cGRhdGUgY3JjICovCi0gICAgICAgICAgICBpbnQgdmFsOwotCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgaWYgKHMtPnBlbmRpbmcgPT0gcy0+cGVuZGluZ19idWZfc2l6ZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5oY3JjICYmIHMtPnBlbmRpbmcgPiBiZWcpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJtLT5hZGxlciA9IGNyYzMyKHN0cm0tPmFkbGVyLCBzLT5wZW5kaW5nX2J1ZiArIGJlZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+cGVuZGluZyAtIGJlZyk7Ci0gICAgICAgICAgICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7Ci0gICAgICAgICAgICAgICAgICAgIGJlZyA9IHMtPnBlbmRpbmc7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzLT5wZW5kaW5nID09IHMtPnBlbmRpbmdfYnVmX3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IDE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB2YWwgPSBzLT5nemhlYWQtPmNvbW1lbnRbcy0+Z3ppbmRleCsrXTsKLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCB2YWwpOwotICAgICAgICAgICAgfSB3aGlsZSAodmFsICE9IDApOwotICAgICAgICAgICAgaWYgKHMtPmd6aGVhZC0+aGNyYyAmJiBzLT5wZW5kaW5nID4gYmVnKQotICAgICAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoc3RybS0+YWRsZXIsIHMtPnBlbmRpbmdfYnVmICsgYmVnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+cGVuZGluZyAtIGJlZyk7Ci0gICAgICAgICAgICBpZiAodmFsID09IDApCi0gICAgICAgICAgICAgICAgcy0+c3RhdHVzID0gSENSQ19TVEFURTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzLT5zdGF0dXMgPSBIQ1JDX1NUQVRFOwotICAgIH0KLSAgICBpZiAocy0+c3RhdHVzID09IEhDUkNfU1RBVEUpIHsKLSAgICAgICAgaWYgKHMtPmd6aGVhZC0+aGNyYykgewotICAgICAgICAgICAgaWYgKHMtPnBlbmRpbmcgKyAyID4gcy0+cGVuZGluZ19idWZfc2l6ZSkKLSAgICAgICAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pOwotICAgICAgICAgICAgaWYgKHMtPnBlbmRpbmcgKyAyIDw9IHMtPnBlbmRpbmdfYnVmX3NpemUpIHsKLSAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCAoQnl0ZSkoc3RybS0+YWRsZXIgJiAweGZmKSk7Ci0gICAgICAgICAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKChzdHJtLT5hZGxlciA+PiA4KSAmIDB4ZmYpKTsKLSAgICAgICAgICAgICAgICBzdHJtLT5hZGxlciA9IGNyYzMyKDBMLCBaX05VTEwsIDApOwotICAgICAgICAgICAgICAgIHMtPnN0YXR1cyA9IEJVU1lfU1RBVEU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcy0+c3RhdHVzID0gQlVTWV9TVEFURTsKLSAgICB9Ci0jZW5kaWYKLQogICAgIC8qIEZsdXNoIGFzIG11Y2ggcGVuZGluZyBvdXRwdXQgYXMgcG9zc2libGUgKi8KICAgICBpZiAocy0+cGVuZGluZyAhPSAwKSB7CiAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CkBAIC04OTQsMTUgKzgxMCwxOTcgQEAKICAgICAgICAgRVJSX1JFVFVSTihzdHJtLCBaX0JVRl9FUlJPUik7CiAgICAgfQogCisgICAgLyogV3JpdGUgdGhlIGhlYWRlciAqLworICAgIGlmIChzLT5zdGF0dXMgPT0gSU5JVF9TVEFURSkgeworICAgICAgICAvKiB6bGliIGhlYWRlciAqLworICAgICAgICB1SW50IGhlYWRlciA9IChaX0RFRkxBVEVEICsgKChzLT53X2JpdHMtOCk8PDQpKSA8PCA4OworICAgICAgICB1SW50IGxldmVsX2ZsYWdzOworCisgICAgICAgIGlmIChzLT5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLT5sZXZlbCA8IDIpCisgICAgICAgICAgICBsZXZlbF9mbGFncyA9IDA7CisgICAgICAgIGVsc2UgaWYgKHMtPmxldmVsIDwgNikKKyAgICAgICAgICAgIGxldmVsX2ZsYWdzID0gMTsKKyAgICAgICAgZWxzZSBpZiAocy0+bGV2ZWwgPT0gNikKKyAgICAgICAgICAgIGxldmVsX2ZsYWdzID0gMjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbGV2ZWxfZmxhZ3MgPSAzOworICAgICAgICBoZWFkZXIgfD0gKGxldmVsX2ZsYWdzIDw8IDYpOworICAgICAgICBpZiAocy0+c3Ryc3RhcnQgIT0gMCkgaGVhZGVyIHw9IFBSRVNFVF9ESUNUOworICAgICAgICBoZWFkZXIgKz0gMzEgLSAoaGVhZGVyICUgMzEpOworCisgICAgICAgIHB1dFNob3J0TVNCKHMsIGhlYWRlcik7CisKKyAgICAgICAgLyogU2F2ZSB0aGUgYWRsZXIzMiBvZiB0aGUgcHJlc2V0IGRpY3Rpb25hcnk6ICovCisgICAgICAgIGlmIChzLT5zdHJzdGFydCAhPSAwKSB7CisgICAgICAgICAgICBwdXRTaG9ydE1TQihzLCAodUludCkoc3RybS0+YWRsZXIgPj4gMTYpKTsKKyAgICAgICAgICAgIHB1dFNob3J0TVNCKHMsICh1SW50KShzdHJtLT5hZGxlciAmIDB4ZmZmZikpOworICAgICAgICB9CisgICAgICAgIHN0cm0tPmFkbGVyID0gYWRsZXIzMigwTCwgWl9OVUxMLCAwKTsKKyAgICAgICAgcy0+c3RhdHVzID0gQlVTWV9TVEFURTsKKworICAgICAgICAvKiBDb21wcmVzc2lvbiBtdXN0IHN0YXJ0IHdpdGggYW4gZW1wdHkgcGVuZGluZyBidWZmZXIgKi8KKyAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKKyAgICAgICAgaWYgKHMtPnBlbmRpbmcgIT0gMCkgeworICAgICAgICAgICAgcy0+bGFzdF9mbHVzaCA9IC0xOworICAgICAgICAgICAgcmV0dXJuIFpfT0s7CisgICAgICAgIH0KKyAgICB9CisjaWZkZWYgR1pJUAorICAgIGlmIChzLT5zdGF0dXMgPT0gR1pJUF9TVEFURSkgeworICAgICAgICAvKiBnemlwIGhlYWRlciAqLworICAgICAgICBzdHJtLT5hZGxlciA9IGNyYzMyKDBMLCBaX05VTEwsIDApOworICAgICAgICBwdXRfYnl0ZShzLCAzMSk7CisgICAgICAgIHB1dF9ieXRlKHMsIDEzOSk7CisgICAgICAgIHB1dF9ieXRlKHMsIDgpOworICAgICAgICBpZiAocy0+Z3poZWFkID09IFpfTlVMTCkgeworICAgICAgICAgICAgcHV0X2J5dGUocywgMCk7CisgICAgICAgICAgICBwdXRfYnl0ZShzLCAwKTsKKyAgICAgICAgICAgIHB1dF9ieXRlKHMsIDApOworICAgICAgICAgICAgcHV0X2J5dGUocywgMCk7CisgICAgICAgICAgICBwdXRfYnl0ZShzLCAwKTsKKyAgICAgICAgICAgIHB1dF9ieXRlKHMsIHMtPmxldmVsID09IDkgPyAyIDoKKyAgICAgICAgICAgICAgICAgICAgIChzLT5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLT5sZXZlbCA8IDIgPworICAgICAgICAgICAgICAgICAgICAgIDQgOiAwKSk7CisgICAgICAgICAgICBwdXRfYnl0ZShzLCBPU19DT0RFKTsKKyAgICAgICAgICAgIHMtPnN0YXR1cyA9IEJVU1lfU1RBVEU7CisKKyAgICAgICAgICAgIC8qIENvbXByZXNzaW9uIG11c3Qgc3RhcnQgd2l0aCBhbiBlbXB0eSBwZW5kaW5nIGJ1ZmZlciAqLworICAgICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKKyAgICAgICAgICAgIGlmIChzLT5wZW5kaW5nICE9IDApIHsKKyAgICAgICAgICAgICAgICBzLT5sYXN0X2ZsdXNoID0gLTE7CisgICAgICAgICAgICAgICAgcmV0dXJuIFpfT0s7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBwdXRfYnl0ZShzLCAocy0+Z3poZWFkLT50ZXh0ID8gMSA6IDApICsKKyAgICAgICAgICAgICAgICAgICAgIChzLT5nemhlYWQtPmhjcmMgPyAyIDogMCkgKworICAgICAgICAgICAgICAgICAgICAgKHMtPmd6aGVhZC0+ZXh0cmEgPT0gWl9OVUxMID8gMCA6IDQpICsKKyAgICAgICAgICAgICAgICAgICAgIChzLT5nemhlYWQtPm5hbWUgPT0gWl9OVUxMID8gMCA6IDgpICsKKyAgICAgICAgICAgICAgICAgICAgIChzLT5nemhlYWQtPmNvbW1lbnQgPT0gWl9OVUxMID8gMCA6IDE2KQorICAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKShzLT5nemhlYWQtPnRpbWUgJiAweGZmKSk7CisgICAgICAgICAgICBwdXRfYnl0ZShzLCAoQnl0ZSkoKHMtPmd6aGVhZC0+dGltZSA+PiA4KSAmIDB4ZmYpKTsKKyAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKSgocy0+Z3poZWFkLT50aW1lID4+IDE2KSAmIDB4ZmYpKTsKKyAgICAgICAgICAgIHB1dF9ieXRlKHMsIChCeXRlKSgocy0+Z3poZWFkLT50aW1lID4+IDI0KSAmIDB4ZmYpKTsKKyAgICAgICAgICAgIHB1dF9ieXRlKHMsIHMtPmxldmVsID09IDkgPyAyIDoKKyAgICAgICAgICAgICAgICAgICAgIChzLT5zdHJhdGVneSA+PSBaX0hVRkZNQU5fT05MWSB8fCBzLT5sZXZlbCA8IDIgPworICAgICAgICAgICAgICAgICAgICAgIDQgOiAwKSk7CisgICAgICAgICAgICBwdXRfYnl0ZShzLCBzLT5nemhlYWQtPm9zICYgMHhmZik7CisgICAgICAgICAgICBpZiAocy0+Z3poZWFkLT5leHRyYSAhPSBaX05VTEwpIHsKKyAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCBzLT5nemhlYWQtPmV4dHJhX2xlbiAmIDB4ZmYpOworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIChzLT5nemhlYWQtPmV4dHJhX2xlbiA+PiA4KSAmIDB4ZmYpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHMtPmd6aGVhZC0+aGNyYykKKyAgICAgICAgICAgICAgICBzdHJtLT5hZGxlciA9IGNyYzMyKHN0cm0tPmFkbGVyLCBzLT5wZW5kaW5nX2J1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPnBlbmRpbmcpOworICAgICAgICAgICAgcy0+Z3ppbmRleCA9IDA7CisgICAgICAgICAgICBzLT5zdGF0dXMgPSBFWFRSQV9TVEFURTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocy0+c3RhdHVzID09IEVYVFJBX1NUQVRFKSB7CisgICAgICAgIGlmIChzLT5nemhlYWQtPmV4dHJhICE9IFpfTlVMTCkgeworICAgICAgICAgICAgdWxnIGJlZyA9IHMtPnBlbmRpbmc7ICAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLworICAgICAgICAgICAgdUludCBsZWZ0ID0gKHMtPmd6aGVhZC0+ZXh0cmFfbGVuICYgMHhmZmZmKSAtIHMtPmd6aW5kZXg7CisgICAgICAgICAgICB3aGlsZSAocy0+cGVuZGluZyArIGxlZnQgPiBzLT5wZW5kaW5nX2J1Zl9zaXplKSB7CisgICAgICAgICAgICAgICAgdUludCBjb3B5ID0gcy0+cGVuZGluZ19idWZfc2l6ZSAtIHMtPnBlbmRpbmc7CisgICAgICAgICAgICAgICAgem1lbWNweShzLT5wZW5kaW5nX2J1ZiArIHMtPnBlbmRpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBzLT5nemhlYWQtPmV4dHJhICsgcy0+Z3ppbmRleCwgY29weSk7CisgICAgICAgICAgICAgICAgcy0+cGVuZGluZyA9IHMtPnBlbmRpbmdfYnVmX3NpemU7CisgICAgICAgICAgICAgICAgSENSQ19VUERBVEUoYmVnKTsKKyAgICAgICAgICAgICAgICBzLT5nemluZGV4ICs9IGNvcHk7CisgICAgICAgICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKKyAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfZmx1c2ggPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFpfT0s7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJlZyA9IDA7CisgICAgICAgICAgICAgICAgbGVmdCAtPSBjb3B5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgem1lbWNweShzLT5wZW5kaW5nX2J1ZiArIHMtPnBlbmRpbmcsCisgICAgICAgICAgICAgICAgICAgIHMtPmd6aGVhZC0+ZXh0cmEgKyBzLT5nemluZGV4LCBsZWZ0KTsKKyAgICAgICAgICAgIHMtPnBlbmRpbmcgKz0gbGVmdDsKKyAgICAgICAgICAgIEhDUkNfVVBEQVRFKGJlZyk7CisgICAgICAgICAgICBzLT5nemluZGV4ID0gMDsKKyAgICAgICAgfQorICAgICAgICBzLT5zdGF0dXMgPSBOQU1FX1NUQVRFOworICAgIH0KKyAgICBpZiAocy0+c3RhdHVzID09IE5BTUVfU1RBVEUpIHsKKyAgICAgICAgaWYgKHMtPmd6aGVhZC0+bmFtZSAhPSBaX05VTEwpIHsKKyAgICAgICAgICAgIHVsZyBiZWcgPSBzLT5wZW5kaW5nOyAgIC8qIHN0YXJ0IG9mIGJ5dGVzIHRvIHVwZGF0ZSBjcmMgKi8KKyAgICAgICAgICAgIGludCB2YWw7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaWYgKHMtPnBlbmRpbmcgPT0gcy0+cGVuZGluZ19idWZfc2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBIQ1JDX1VQREFURShiZWcpOworICAgICAgICAgICAgICAgICAgICBmbHVzaF9wZW5kaW5nKHN0cm0pOworICAgICAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzLT5sYXN0X2ZsdXNoID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gWl9PSzsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBiZWcgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YWwgPSBzLT5nemhlYWQtPm5hbWVbcy0+Z3ppbmRleCsrXTsKKyAgICAgICAgICAgICAgICBwdXRfYnl0ZShzLCB2YWwpOworICAgICAgICAgICAgfSB3aGlsZSAodmFsICE9IDApOworICAgICAgICAgICAgSENSQ19VUERBVEUoYmVnKTsKKyAgICAgICAgICAgIHMtPmd6aW5kZXggPSAwOworICAgICAgICB9CisgICAgICAgIHMtPnN0YXR1cyA9IENPTU1FTlRfU1RBVEU7CisgICAgfQorICAgIGlmIChzLT5zdGF0dXMgPT0gQ09NTUVOVF9TVEFURSkgeworICAgICAgICBpZiAocy0+Z3poZWFkLT5jb21tZW50ICE9IFpfTlVMTCkgeworICAgICAgICAgICAgdWxnIGJlZyA9IHMtPnBlbmRpbmc7ICAgLyogc3RhcnQgb2YgYnl0ZXMgdG8gdXBkYXRlIGNyYyAqLworICAgICAgICAgICAgaW50IHZhbDsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyA9PSBzLT5wZW5kaW5nX2J1Zl9zaXplKSB7CisgICAgICAgICAgICAgICAgICAgIEhDUkNfVVBEQVRFKGJlZyk7CisgICAgICAgICAgICAgICAgICAgIGZsdXNoX3BlbmRpbmcoc3RybSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzLT5wZW5kaW5nICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfZmx1c2ggPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBaX09LOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJlZyA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhbCA9IHMtPmd6aGVhZC0+Y29tbWVudFtzLT5nemluZGV4KytdOworICAgICAgICAgICAgICAgIHB1dF9ieXRlKHMsIHZhbCk7CisgICAgICAgICAgICB9IHdoaWxlICh2YWwgIT0gMCk7CisgICAgICAgICAgICBIQ1JDX1VQREFURShiZWcpOworICAgICAgICB9CisgICAgICAgIHMtPnN0YXR1cyA9IEhDUkNfU1RBVEU7CisgICAgfQorICAgIGlmIChzLT5zdGF0dXMgPT0gSENSQ19TVEFURSkgeworICAgICAgICBpZiAocy0+Z3poZWFkLT5oY3JjKSB7CisgICAgICAgICAgICBpZiAocy0+cGVuZGluZyArIDIgPiBzLT5wZW5kaW5nX2J1Zl9zaXplKSB7CisgICAgICAgICAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKKyAgICAgICAgICAgICAgICBpZiAocy0+cGVuZGluZyAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHMtPmxhc3RfZmx1c2ggPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFpfT0s7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKHN0cm0tPmFkbGVyICYgMHhmZikpOworICAgICAgICAgICAgcHV0X2J5dGUocywgKEJ5dGUpKChzdHJtLT5hZGxlciA+PiA4KSAmIDB4ZmYpKTsKKyAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gY3JjMzIoMEwsIFpfTlVMTCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgcy0+c3RhdHVzID0gQlVTWV9TVEFURTsKKworICAgICAgICAvKiBDb21wcmVzc2lvbiBtdXN0IHN0YXJ0IHdpdGggYW4gZW1wdHkgcGVuZGluZyBidWZmZXIgKi8KKyAgICAgICAgZmx1c2hfcGVuZGluZyhzdHJtKTsKKyAgICAgICAgaWYgKHMtPnBlbmRpbmcgIT0gMCkgeworICAgICAgICAgICAgcy0+bGFzdF9mbHVzaCA9IC0xOworICAgICAgICAgICAgcmV0dXJuIFpfT0s7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIC8qIFN0YXJ0IGEgbmV3IGJsb2NrIG9yIGNvbnRpbnVlIHRoZSBjdXJyZW50IG9uZS4KICAgICAgKi8KICAgICBpZiAoc3RybS0+YXZhaWxfaW4gIT0gMCB8fCBzLT5sb29rYWhlYWQgIT0gMCB8fAogICAgICAgICAoZmx1c2ggIT0gWl9OT19GTFVTSCAmJiBzLT5zdGF0dXMgIT0gRklOSVNIX1NUQVRFKSkgewogICAgICAgICBibG9ja19zdGF0ZSBic3RhdGU7CiAKLSAgICAgICAgYnN0YXRlID0gcy0+c3RyYXRlZ3kgPT0gWl9IVUZGTUFOX09OTFkgPyBkZWZsYXRlX2h1ZmYocywgZmx1c2gpIDoKLSAgICAgICAgICAgICAgICAgICAgKHMtPnN0cmF0ZWd5ID09IFpfUkxFID8gZGVmbGF0ZV9ybGUocywgZmx1c2gpIDoKLSAgICAgICAgICAgICAgICAgICAgICAgICgqKGNvbmZpZ3VyYXRpb25fdGFibGVbcy0+bGV2ZWxdLmZ1bmMpKShzLCBmbHVzaCkpOworICAgICAgICBic3RhdGUgPSBzLT5sZXZlbCA9PSAwID8gZGVmbGF0ZV9zdG9yZWQocywgZmx1c2gpIDoKKyAgICAgICAgICAgICAgICAgcy0+c3RyYXRlZ3kgPT0gWl9IVUZGTUFOX09OTFkgPyBkZWZsYXRlX2h1ZmYocywgZmx1c2gpIDoKKyAgICAgICAgICAgICAgICAgcy0+c3RyYXRlZ3kgPT0gWl9STEUgPyBkZWZsYXRlX3JsZShzLCBmbHVzaCkgOgorICAgICAgICAgICAgICAgICAoKihjb25maWd1cmF0aW9uX3RhYmxlW3MtPmxldmVsXS5mdW5jKSkocywgZmx1c2gpOwogCiAgICAgICAgIGlmIChic3RhdGUgPT0gZmluaXNoX3N0YXJ0ZWQgfHwgYnN0YXRlID09IGZpbmlzaF9kb25lKSB7CiAgICAgICAgICAgICBzLT5zdGF0dXMgPSBGSU5JU0hfU1RBVEU7CkBAIC05NDQsNyArMTA0Miw2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgQXNzZXJ0KHN0cm0tPmF2YWlsX291dCA+IDAsICJidWcyIik7CiAKICAgICBpZiAoZmx1c2ggIT0gWl9GSU5JU0gpIHJldHVybiBaX09LOwogICAgIGlmIChzLT53cmFwIDw9IDApIHJldHVybiBaX1NUUkVBTV9FTkQ7CkBAIC05ODEsMTggKzEwNzgsOSBAQAogewogICAgIGludCBzdGF0dXM7CiAKLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgaWYgKGRlZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAKICAgICBzdGF0dXMgPSBzdHJtLT5zdGF0ZS0+c3RhdHVzOwotICAgIGlmIChzdGF0dXMgIT0gSU5JVF9TVEFURSAmJgotICAgICAgICBzdGF0dXMgIT0gRVhUUkFfU1RBVEUgJiYKLSAgICAgICAgc3RhdHVzICE9IE5BTUVfU1RBVEUgJiYKLSAgICAgICAgc3RhdHVzICE9IENPTU1FTlRfU1RBVEUgJiYKLSAgICAgICAgc3RhdHVzICE9IEhDUkNfU1RBVEUgJiYKLSAgICAgICAgc3RhdHVzICE9IEJVU1lfU1RBVEUgJiYKLSAgICAgICAgc3RhdHVzICE9IEZJTklTSF9TVEFURSkgewotICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwotICAgIH0KIAogICAgIC8qIERlYWxsb2NhdGUgaW4gcmV2ZXJzZSBvcmRlciBvZiBhbGxvY2F0aW9uczogKi8KICAgICBUUllfRlJFRShzdHJtLCBzdHJtLT5zdGF0ZS0+cGVuZGluZ19idWYpOwpAQCAtMTAyMyw3ICsxMTExLDcgQEAKICAgICB1c2hmICpvdmVybGF5OwogCiAKLSAgICBpZiAoc291cmNlID09IFpfTlVMTCB8fCBkZXN0ID09IFpfTlVMTCB8fCBzb3VyY2UtPnN0YXRlID09IFpfTlVMTCkgeworICAgIGlmIChkZWZsYXRlU3RhdGVDaGVjayhzb3VyY2UpIHx8IGRlc3QgPT0gWl9OVUxMKSB7CiAgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICAgICB9CiAKQEAgLTEwNzMsNyArMTE2MSw3IEBACiAgKiBhbGxvY2F0aW5nIGEgbGFyZ2Ugc3RybS0+bmV4dF9pbiBidWZmZXIgYW5kIGNvcHlpbmcgZnJvbSBpdC4KICAqIChTZWUgYWxzbyBmbHVzaF9wZW5kaW5nKCkpLgogICovCi1sb2NhbCBpbnQgcmVhZF9idWYoc3RybSwgYnVmLCBzaXplKQorbG9jYWwgdW5zaWduZWQgcmVhZF9idWYoc3RybSwgYnVmLCBzaXplKQogICAgIHpfc3RyZWFtcCBzdHJtOwogICAgIEJ5dGVmICpidWY7CiAgICAgdW5zaWduZWQgc2l6ZTsKQEAgLTEwOTcsNyArMTE4NSw3IEBACiAgICAgc3RybS0+bmV4dF9pbiAgKz0gbGVuOwogICAgIHN0cm0tPnRvdGFsX2luICs9IGxlbjsKIAotICAgIHJldHVybiAoaW50KWxlbjsKKyAgICByZXR1cm4gbGVuOwogfQogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTExNTEsOSArMTIzOSw5IEBACiB7CiAgICAgdW5zaWduZWQgY2hhaW5fbGVuZ3RoID0gcy0+bWF4X2NoYWluX2xlbmd0aDsvKiBtYXggaGFzaCBjaGFpbiBsZW5ndGggKi8KICAgICByZWdpc3RlciBCeXRlZiAqc2NhbiA9IHMtPndpbmRvdyArIHMtPnN0cnN0YXJ0OyAvKiBjdXJyZW50IHN0cmluZyAqLwotICAgIHJlZ2lzdGVyIEJ5dGVmICptYXRjaDsgICAgICAgICAgICAgICAgICAgICAgIC8qIG1hdGNoZWQgc3RyaW5nICovCisgICAgcmVnaXN0ZXIgQnl0ZWYgKm1hdGNoOyAgICAgICAgICAgICAgICAgICAgICAvKiBtYXRjaGVkIHN0cmluZyAqLwogICAgIHJlZ2lzdGVyIGludCBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ3RoIG9mIGN1cnJlbnQgbWF0Y2ggKi8KLSAgICBpbnQgYmVzdF9sZW4gPSBzLT5wcmV2X2xlbmd0aDsgICAgICAgICAgICAgIC8qIGJlc3QgbWF0Y2ggbGVuZ3RoIHNvIGZhciAqLworICAgIGludCBiZXN0X2xlbiA9IChpbnQpcy0+cHJldl9sZW5ndGg7ICAgICAgICAgLyogYmVzdCBtYXRjaCBsZW5ndGggc28gZmFyICovCiAgICAgaW50IG5pY2VfbWF0Y2ggPSBzLT5uaWNlX21hdGNoOyAgICAgICAgICAgICAvKiBzdG9wIGlmIG1hdGNoIGxvbmcgZW5vdWdoICovCiAgICAgSVBvcyBsaW1pdCA9IHMtPnN0cnN0YXJ0ID4gKElQb3MpTUFYX0RJU1QocykgPwogICAgICAgICBzLT5zdHJzdGFydCAtIChJUG9zKU1BWF9ESVNUKHMpIDogTklMOwpAQCAtMTE4OCw3ICsxMjc2LDcgQEAKICAgICAvKiBEbyBub3QgbG9vayBmb3IgbWF0Y2hlcyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgaW5wdXQuIFRoaXMgaXMgbmVjZXNzYXJ5CiAgICAgICogdG8gbWFrZSBkZWZsYXRlIGRldGVybWluaXN0aWMuCiAgICAgICovCi0gICAgaWYgKCh1SW50KW5pY2VfbWF0Y2ggPiBzLT5sb29rYWhlYWQpIG5pY2VfbWF0Y2ggPSBzLT5sb29rYWhlYWQ7CisgICAgaWYgKCh1SW50KW5pY2VfbWF0Y2ggPiBzLT5sb29rYWhlYWQpIG5pY2VfbWF0Y2ggPSAoaW50KXMtPmxvb2thaGVhZDsKIAogICAgIEFzc2VydCgodWxnKXMtPnN0cnN0YXJ0IDw9IHMtPndpbmRvd19zaXplLU1JTl9MT09LQUhFQUQsICJuZWVkIGxvb2thaGVhZCIpOwogCkBAIC0xMzQ5LDcgKzE0MzcsMTEgQEAKIAogI2VuZGlmIC8qIEZBU1RFU1QgKi8KIAotI2lmZGVmIERFQlVHCisjaWZkZWYgWkxJQl9ERUJVRworCisjZGVmaW5lIEVRVUFMIDAKKy8qIHJlc3VsdCBvZiBtZW1jbXAgZm9yIGVxdWFsIHN0cmluZ3MgKi8KKwogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAgKiBDaGVjayB0aGF0IHRoZSBtYXRjaCBhdCBtYXRjaF9zdGFydCBpcyBpbmRlZWQgYSBtYXRjaC4KICAqLwpAQCAtMTM3NSw3ICsxNDY3LDcgQEAKIH0KICNlbHNlCiAjICBkZWZpbmUgY2hlY2tfbWF0Y2gocywgc3RhcnQsIG1hdGNoLCBsZW5ndGgpCi0jZW5kaWYgLyogREVCVUcgKi8KKyNlbmRpZiAvKiBaTElCX0RFQlVHICovCiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogICogRmlsbCB0aGUgd2luZG93IHdoZW4gdGhlIGxvb2thaGVhZCBiZWNvbWVzIGluc3VmZmljaWVudC4KQEAgLTEzOTAsOCArMTQ4Miw3IEBACiBsb2NhbCB2b2lkIGZpbGxfd2luZG93KHMpCiAgICAgZGVmbGF0ZV9zdGF0ZSAqczsKIHsKLSAgICByZWdpc3RlciB1bnNpZ25lZCBuLCBtOwotICAgIHJlZ2lzdGVyIFBvc2YgKnA7CisgICAgdW5zaWduZWQgbjsKICAgICB1bnNpZ25lZCBtb3JlOyAgICAvKiBBbW91bnQgb2YgZnJlZSBzcGFjZSBhdCB0aGUgZW5kIG9mIHRoZSB3aW5kb3cuICovCiAgICAgdUludCB3c2l6ZSA9IHMtPndfc2l6ZTsKIApAQCAtMTQxOCwzNSArMTUwOSwxMSBAQAogICAgICAgICAgKi8KICAgICAgICAgaWYgKHMtPnN0cnN0YXJ0ID49IHdzaXplK01BWF9ESVNUKHMpKSB7CiAKLSAgICAgICAgICAgIHptZW1jcHkocy0+d2luZG93LCBzLT53aW5kb3crd3NpemUsICh1bnNpZ25lZCl3c2l6ZSk7CisgICAgICAgICAgICB6bWVtY3B5KHMtPndpbmRvdywgcy0+d2luZG93K3dzaXplLCAodW5zaWduZWQpd3NpemUgLSBtb3JlKTsKICAgICAgICAgICAgIHMtPm1hdGNoX3N0YXJ0IC09IHdzaXplOwogICAgICAgICAgICAgcy0+c3Ryc3RhcnQgICAgLT0gd3NpemU7IC8qIHdlIG5vdyBoYXZlIHN0cnN0YXJ0ID49IE1BWF9ESVNUICovCiAgICAgICAgICAgICBzLT5ibG9ja19zdGFydCAtPSAobG9uZykgd3NpemU7Ci0KLSAgICAgICAgICAgIC8qIFNsaWRlIHRoZSBoYXNoIHRhYmxlIChjb3VsZCBiZSBhdm9pZGVkIHdpdGggMzIgYml0IHZhbHVlcwotICAgICAgICAgICAgICAgYXQgdGhlIGV4cGVuc2Ugb2YgbWVtb3J5IHVzYWdlKS4gV2Ugc2xpZGUgZXZlbiB3aGVuIGxldmVsID09IDAKLSAgICAgICAgICAgICAgIHRvIGtlZXAgdGhlIGhhc2ggdGFibGUgY29uc2lzdGVudCBpZiB3ZSBzd2l0Y2ggYmFjayB0byBsZXZlbCA+IDAKLSAgICAgICAgICAgICAgIGxhdGVyLiAoVXNpbmcgbGV2ZWwgMCBwZXJtYW5lbnRseSBpcyBub3QgYW4gb3B0aW1hbCB1c2FnZSBvZgotICAgICAgICAgICAgICAgemxpYiwgc28gd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGlzIHBhdGhvbG9naWNhbCBjYXNlLikKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgbiA9IHMtPmhhc2hfc2l6ZTsKLSAgICAgICAgICAgIHAgPSAmcy0+aGVhZFtuXTsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICBtID0gKi0tcDsKLSAgICAgICAgICAgICAgICAqcCA9IChQb3MpKG0gPj0gd3NpemUgPyBtLXdzaXplIDogTklMKTsKLSAgICAgICAgICAgIH0gd2hpbGUgKC0tbik7Ci0KLSAgICAgICAgICAgIG4gPSB3c2l6ZTsKLSNpZm5kZWYgRkFTVEVTVAotICAgICAgICAgICAgcCA9ICZzLT5wcmV2W25dOwotICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgIG0gPSAqLS1wOwotICAgICAgICAgICAgICAgICpwID0gKFBvcykobSA+PSB3c2l6ZSA/IG0td3NpemUgOiBOSUwpOwotICAgICAgICAgICAgICAgIC8qIElmIG4gaXMgbm90IG9uIGFueSBoYXNoIGNoYWluLCBwcmV2W25dIGlzIGdhcmJhZ2UgYnV0Ci0gICAgICAgICAgICAgICAgICogaXRzIHZhbHVlIHdpbGwgbmV2ZXIgYmUgdXNlZC4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIH0gd2hpbGUgKC0tbik7Ci0jZW5kaWYKKyAgICAgICAgICAgIHNsaWRlX2hhc2gocyk7CiAgICAgICAgICAgICBtb3JlICs9IHdzaXplOwogICAgICAgICB9CiAgICAgICAgIGlmIChzLT5zdHJtLT5hdmFpbF9pbiA9PSAwKSBicmVhazsKQEAgLTE1NTIsNzAgKzE2MTksMTk5IEBACiAgICBpZiAocy0+c3RybS0+YXZhaWxfb3V0ID09IDApIHJldHVybiAobGFzdCkgPyBmaW5pc2hfc3RhcnRlZCA6IG5lZWRfbW9yZTsgXAogfQogCisvKiBNYXhpbXVtIHN0b3JlZCBibG9jayBsZW5ndGggaW4gZGVmbGF0ZSBmb3JtYXQgKG5vdCBpbmNsdWRpbmcgaGVhZGVyKS4gKi8KKyNkZWZpbmUgTUFYX1NUT1JFRCA2NTUzNQorCisvKiBNaW5pbXVtIG9mIGEgYW5kIGIuICovCisjZGVmaW5lIE1JTihhLCBiKSAoKGEpID4gKGIpID8gKGIpIDogKGEpKQorCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqIENvcHkgd2l0aG91dCBjb21wcmVzc2lvbiBhcyBtdWNoIGFzIHBvc3NpYmxlIGZyb20gdGhlIGlucHV0IHN0cmVhbSwgcmV0dXJuCiAgKiB0aGUgY3VycmVudCBibG9jayBzdGF0ZS4KLSAqIFRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaW5zZXJ0IG5ldyBzdHJpbmdzIGluIHRoZSBkaWN0aW9uYXJ5IHNpbmNlCi0gKiB1bmNvbXByZXNzaWJsZSBkYXRhIGlzIHByb2JhYmx5IG5vdCB1c2VmdWwuIFRoaXMgZnVuY3Rpb24gaXMgdXNlZAotICogb25seSBmb3IgdGhlIGxldmVsPTAgY29tcHJlc3Npb24gb3B0aW9uLgotICogTk9URTogdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgb3B0aW1pemVkIHRvIGF2b2lkIGV4dHJhIGNvcHlpbmcgZnJvbQotICogd2luZG93IHRvIHBlbmRpbmdfYnVmLgorICoKKyAqIEluIGNhc2UgZGVmbGF0ZVBhcmFtcygpIGlzIHVzZWQgdG8gbGF0ZXIgc3dpdGNoIHRvIGEgbm9uLXplcm8gY29tcHJlc3Npb24KKyAqIGxldmVsLCBzLT5tYXRjaGVzIChvdGhlcndpc2UgdW51c2VkIHdoZW4gc3RvcmluZykga2VlcHMgdHJhY2sgb2YgdGhlIG51bWJlcgorICogb2YgaGFzaCB0YWJsZSBzbGlkZXMgdG8gcGVyZm9ybS4gSWYgcy0+bWF0Y2hlcyBpcyAxLCB0aGVuIG9uZSBoYXNoIHRhYmxlCisgKiBzbGlkZSB3aWxsIGJlIGRvbmUgd2hlbiBzd2l0Y2hpbmcuIElmIHMtPm1hdGNoZXMgaXMgMiwgdGhlIG1heGltdW0gdmFsdWUKKyAqIGFsbG93ZWQgaGVyZSwgdGhlbiB0aGUgaGFzaCB0YWJsZSB3aWxsIGJlIGNsZWFyZWQsIHNpbmNlIHR3byBvciBtb3JlIHNsaWRlcworICogaXMgdGhlIHNhbWUgYXMgYSBjbGVhci4KKyAqCisgKiBkZWZsYXRlX3N0b3JlZCgpIGlzIHdyaXR0ZW4gdG8gbWluaW1pemUgdGhlIG51bWJlciBvZiB0aW1lcyBhbiBpbnB1dCBieXRlIGlzCisgKiBjb3BpZWQuIEl0IGlzIG1vc3QgZWZmaWNpZW50IHdpdGggbGFyZ2UgaW5wdXQgYW5kIG91dHB1dCBidWZmZXJzLCB3aGljaAorICogbWF4aW1pemVzIHRoZSBvcHBvcnR1bml0ZXMgdG8gaGF2ZSBhIHNpbmdsZSBjb3B5IGZyb20gbmV4dF9pbiB0byBuZXh0X291dC4KICAqLwogbG9jYWwgYmxvY2tfc3RhdGUgZGVmbGF0ZV9zdG9yZWQocywgZmx1c2gpCiAgICAgZGVmbGF0ZV9zdGF0ZSAqczsKICAgICBpbnQgZmx1c2g7CiB7Ci0gICAgLyogU3RvcmVkIGJsb2NrcyBhcmUgbGltaXRlZCB0byAweGZmZmYgYnl0ZXMsIHBlbmRpbmdfYnVmIGlzIGxpbWl0ZWQKLSAgICAgKiB0byBwZW5kaW5nX2J1Zl9zaXplLCBhbmQgZWFjaCBzdG9yZWQgYmxvY2sgaGFzIGEgNSBieXRlIGhlYWRlcjoKKyAgICAvKiBTbWFsbGVzdCB3b3J0aHkgYmxvY2sgc2l6ZSB3aGVuIG5vdCBmbHVzaGluZyBvciBmaW5pc2hpbmcuIEJ5IGRlZmF1bHQKKyAgICAgKiB0aGlzIGlzIDMySy4gVGhpcyBjYW4gYmUgYXMgc21hbGwgYXMgNTA3IGJ5dGVzIGZvciBtZW1MZXZlbCA9PSAxLiBGb3IKKyAgICAgKiBsYXJnZSBpbnB1dCBhbmQgb3V0cHV0IGJ1ZmZlcnMsIHRoZSBzdG9yZWQgYmxvY2sgc2l6ZSB3aWxsIGJlIGxhcmdlci4KICAgICAgKi8KLSAgICB1bGcgbWF4X2Jsb2NrX3NpemUgPSAweGZmZmY7Ci0gICAgdWxnIG1heF9zdGFydDsKKyAgICB1bnNpZ25lZCBtaW5fYmxvY2sgPSBNSU4ocy0+cGVuZGluZ19idWZfc2l6ZSAtIDUsIHMtPndfc2l6ZSk7CiAKLSAgICBpZiAobWF4X2Jsb2NrX3NpemUgPiBzLT5wZW5kaW5nX2J1Zl9zaXplIC0gNSkgewotICAgICAgICBtYXhfYmxvY2tfc2l6ZSA9IHMtPnBlbmRpbmdfYnVmX3NpemUgLSA1OwotICAgIH0KLQotICAgIC8qIENvcHkgYXMgbXVjaCBhcyBwb3NzaWJsZSBmcm9tIGlucHV0IHRvIG91dHB1dDogKi8KLSAgICBmb3IgKDs7KSB7Ci0gICAgICAgIC8qIEZpbGwgdGhlIHdpbmRvdyBhcyBtdWNoIGFzIHBvc3NpYmxlOiAqLwotICAgICAgICBpZiAocy0+bG9va2FoZWFkIDw9IDEpIHsKLQotICAgICAgICAgICAgQXNzZXJ0KHMtPnN0cnN0YXJ0IDwgcy0+d19zaXplK01BWF9ESVNUKHMpIHx8Ci0gICAgICAgICAgICAgICAgICAgcy0+YmxvY2tfc3RhcnQgPj0gKGxvbmcpcy0+d19zaXplLCAic2xpZGUgdG9vIGxhdGUiKTsKLQotICAgICAgICAgICAgZmlsbF93aW5kb3cocyk7Ci0gICAgICAgICAgICBpZiAocy0+bG9va2FoZWFkID09IDAgJiYgZmx1c2ggPT0gWl9OT19GTFVTSCkgcmV0dXJuIG5lZWRfbW9yZTsKLQotICAgICAgICAgICAgaWYgKHMtPmxvb2thaGVhZCA9PSAwKSBicmVhazsgLyogZmx1c2ggdGhlIGN1cnJlbnQgYmxvY2sgKi8KLSAgICAgICAgfQotICAgICAgICBBc3NlcnQocy0+YmxvY2tfc3RhcnQgPj0gMEwsICJibG9jayBnb25lIik7Ci0KLSAgICAgICAgcy0+c3Ryc3RhcnQgKz0gcy0+bG9va2FoZWFkOwotICAgICAgICBzLT5sb29rYWhlYWQgPSAwOwotCi0gICAgICAgIC8qIEVtaXQgYSBzdG9yZWQgYmxvY2sgaWYgcGVuZGluZ19idWYgd2lsbCBiZSBmdWxsOiAqLwotICAgICAgICBtYXhfc3RhcnQgPSBzLT5ibG9ja19zdGFydCArIG1heF9ibG9ja19zaXplOwotICAgICAgICBpZiAocy0+c3Ryc3RhcnQgPT0gMCB8fCAodWxnKXMtPnN0cnN0YXJ0ID49IG1heF9zdGFydCkgewotICAgICAgICAgICAgLyogc3Ryc3RhcnQgPT0gMCBpcyBwb3NzaWJsZSB3aGVuIHdyYXBhcm91bmQgb24gMTYtYml0IG1hY2hpbmUgKi8KLSAgICAgICAgICAgIHMtPmxvb2thaGVhZCA9ICh1SW50KShzLT5zdHJzdGFydCAtIG1heF9zdGFydCk7Ci0gICAgICAgICAgICBzLT5zdHJzdGFydCA9ICh1SW50KW1heF9zdGFydDsKLSAgICAgICAgICAgIEZMVVNIX0JMT0NLKHMsIDApOwotICAgICAgICB9Ci0gICAgICAgIC8qIEZsdXNoIGlmIHdlIG1heSBoYXZlIHRvIHNsaWRlLCBvdGhlcndpc2UgYmxvY2tfc3RhcnQgbWF5IGJlY29tZQotICAgICAgICAgKiBuZWdhdGl2ZSBhbmQgdGhlIGRhdGEgd2lsbCBiZSBnb25lOgorICAgIC8qIENvcHkgYXMgbWFueSBtaW5fYmxvY2sgb3IgbGFyZ2VyIHN0b3JlZCBibG9ja3MgZGlyZWN0bHkgdG8gbmV4dF9vdXQgYXMKKyAgICAgKiBwb3NzaWJsZS4gSWYgZmx1c2hpbmcsIGNvcHkgdGhlIHJlbWFpbmluZyBhdmFpbGFibGUgaW5wdXQgdG8gbmV4dF9vdXQgYXMKKyAgICAgKiBzdG9yZWQgYmxvY2tzLCBpZiB0aGVyZSBpcyBlbm91Z2ggc3BhY2UuCisgICAgICovCisgICAgdW5zaWduZWQgbGVuLCBsZWZ0LCBoYXZlLCBsYXN0ID0gMDsKKyAgICB1bnNpZ25lZCB1c2VkID0gcy0+c3RybS0+YXZhaWxfaW47CisgICAgZG8geworICAgICAgICAvKiBTZXQgbGVuIHRvIHRoZSBtYXhpbXVtIHNpemUgYmxvY2sgdGhhdCB3ZSBjYW4gY29weSBkaXJlY3RseSB3aXRoIHRoZQorICAgICAgICAgKiBhdmFpbGFibGUgaW5wdXQgZGF0YSBhbmQgb3V0cHV0IHNwYWNlLiBTZXQgbGVmdCB0byBob3cgbXVjaCBvZiB0aGF0CisgICAgICAgICAqIHdvdWxkIGJlIGNvcGllZCBmcm9tIHdoYXQncyBsZWZ0IGluIHRoZSB3aW5kb3cuCiAgICAgICAgICAqLwotICAgICAgICBpZiAocy0+c3Ryc3RhcnQgLSAodUludClzLT5ibG9ja19zdGFydCA+PSBNQVhfRElTVChzKSkgewotICAgICAgICAgICAgRkxVU0hfQkxPQ0socywgMCk7CisgICAgICAgIGxlbiA9IE1BWF9TVE9SRUQ7ICAgICAgIC8qIG1heGltdW0gZGVmbGF0ZSBzdG9yZWQgYmxvY2sgbGVuZ3RoICovCisgICAgICAgIGhhdmUgPSAocy0+YmlfdmFsaWQgKyA0MikgPj4gMzsgICAgICAgICAvKiBudW1iZXIgb2YgaGVhZGVyIGJ5dGVzICovCisgICAgICAgIGlmIChzLT5zdHJtLT5hdmFpbF9vdXQgPCBoYXZlKSAgICAgICAgICAvKiBuZWVkIHJvb20gZm9yIGhlYWRlciAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAvKiBtYXhpbXVtIHN0b3JlZCBibG9jayBsZW5ndGggdGhhdCB3aWxsIGZpdCBpbiBhdmFpbF9vdXQ6ICovCisgICAgICAgIGhhdmUgPSBzLT5zdHJtLT5hdmFpbF9vdXQgLSBoYXZlOworICAgICAgICBsZWZ0ID0gcy0+c3Ryc3RhcnQgLSBzLT5ibG9ja19zdGFydDsgICAgLyogYnl0ZXMgbGVmdCBpbiB3aW5kb3cgKi8KKyAgICAgICAgaWYgKGxlbiA+ICh1bGcpbGVmdCArIHMtPnN0cm0tPmF2YWlsX2luKQorICAgICAgICAgICAgbGVuID0gbGVmdCArIHMtPnN0cm0tPmF2YWlsX2luOyAgICAgLyogbGltaXQgbGVuIHRvIHRoZSBpbnB1dCAqLworICAgICAgICBpZiAobGVuID4gaGF2ZSkKKyAgICAgICAgICAgIGxlbiA9IGhhdmU7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGxpbWl0IGxlbiB0byB0aGUgb3V0cHV0ICovCisKKyAgICAgICAgLyogSWYgdGhlIHN0b3JlZCBibG9jayB3b3VsZCBiZSBsZXNzIHRoYW4gbWluX2Jsb2NrIGluIGxlbmd0aCwgb3IgaWYKKyAgICAgICAgICogdW5hYmxlIHRvIGNvcHkgYWxsIG9mIHRoZSBhdmFpbGFibGUgaW5wdXQgd2hlbiBmbHVzaGluZywgdGhlbiB0cnkKKyAgICAgICAgICogY29weWluZyB0byB0aGUgd2luZG93IGFuZCB0aGUgcGVuZGluZyBidWZmZXIgaW5zdGVhZC4gQWxzbyBkb24ndAorICAgICAgICAgKiB3cml0ZSBhbiBlbXB0eSBibG9jayB3aGVuIGZsdXNoaW5nIC0tIGRlZmxhdGUoKSBkb2VzIHRoYXQuCisgICAgICAgICAqLworICAgICAgICBpZiAobGVuIDwgbWluX2Jsb2NrICYmICgobGVuID09IDAgJiYgZmx1c2ggIT0gWl9GSU5JU0gpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdXNoID09IFpfTk9fRkxVU0ggfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuICE9IGxlZnQgKyBzLT5zdHJtLT5hdmFpbF9pbikpCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKiBNYWtlIGEgZHVtbXkgc3RvcmVkIGJsb2NrIGluIHBlbmRpbmcgdG8gZ2V0IHRoZSBoZWFkZXIgYnl0ZXMsCisgICAgICAgICAqIGluY2x1ZGluZyBhbnkgcGVuZGluZyBiaXRzLiBUaGlzIGFsc28gdXBkYXRlcyB0aGUgZGVidWdnaW5nIGNvdW50cy4KKyAgICAgICAgICovCisgICAgICAgIGxhc3QgPSBmbHVzaCA9PSBaX0ZJTklTSCAmJiBsZW4gPT0gbGVmdCArIHMtPnN0cm0tPmF2YWlsX2luID8gMSA6IDA7CisgICAgICAgIF90cl9zdG9yZWRfYmxvY2socywgKGNoYXIgKikwLCAwTCwgbGFzdCk7CisKKyAgICAgICAgLyogUmVwbGFjZSB0aGUgbGVuZ3RocyBpbiB0aGUgZHVtbXkgc3RvcmVkIGJsb2NrIHdpdGggbGVuLiAqLworICAgICAgICBzLT5wZW5kaW5nX2J1ZltzLT5wZW5kaW5nIC0gNF0gPSBsZW47CisgICAgICAgIHMtPnBlbmRpbmdfYnVmW3MtPnBlbmRpbmcgLSAzXSA9IGxlbiA+PiA4OworICAgICAgICBzLT5wZW5kaW5nX2J1ZltzLT5wZW5kaW5nIC0gMl0gPSB+bGVuOworICAgICAgICBzLT5wZW5kaW5nX2J1ZltzLT5wZW5kaW5nIC0gMV0gPSB+bGVuID4+IDg7CisKKyAgICAgICAgLyogV3JpdGUgdGhlIHN0b3JlZCBibG9jayBoZWFkZXIgYnl0ZXMuICovCisgICAgICAgIGZsdXNoX3BlbmRpbmcocy0+c3RybSk7CisKKyNpZmRlZiBaTElCX0RFQlVHCisgICAgICAgIC8qIFVwZGF0ZSBkZWJ1Z2dpbmcgY291bnRzIGZvciB0aGUgZGF0YSBhYm91dCB0byBiZSBjb3BpZWQuICovCisgICAgICAgIHMtPmNvbXByZXNzZWRfbGVuICs9IGxlbiA8PCAzOworICAgICAgICBzLT5iaXRzX3NlbnQgKz0gbGVuIDw8IDM7CisjZW5kaWYKKworICAgICAgICAvKiBDb3B5IHVuY29tcHJlc3NlZCBieXRlcyBmcm9tIHRoZSB3aW5kb3cgdG8gbmV4dF9vdXQuICovCisgICAgICAgIGlmIChsZWZ0KSB7CisgICAgICAgICAgICBpZiAobGVmdCA+IGxlbikKKyAgICAgICAgICAgICAgICBsZWZ0ID0gbGVuOworICAgICAgICAgICAgem1lbWNweShzLT5zdHJtLT5uZXh0X291dCwgcy0+d2luZG93ICsgcy0+YmxvY2tfc3RhcnQsIGxlZnQpOworICAgICAgICAgICAgcy0+c3RybS0+bmV4dF9vdXQgKz0gbGVmdDsKKyAgICAgICAgICAgIHMtPnN0cm0tPmF2YWlsX291dCAtPSBsZWZ0OworICAgICAgICAgICAgcy0+c3RybS0+dG90YWxfb3V0ICs9IGxlZnQ7CisgICAgICAgICAgICBzLT5ibG9ja19zdGFydCArPSBsZWZ0OworICAgICAgICAgICAgbGVuIC09IGxlZnQ7CiAgICAgICAgIH0KKworICAgICAgICAvKiBDb3B5IHVuY29tcHJlc3NlZCBieXRlcyBkaXJlY3RseSBmcm9tIG5leHRfaW4gdG8gbmV4dF9vdXQsIHVwZGF0aW5nCisgICAgICAgICAqIHRoZSBjaGVjayB2YWx1ZS4KKyAgICAgICAgICovCisgICAgICAgIGlmIChsZW4pIHsKKyAgICAgICAgICAgIHJlYWRfYnVmKHMtPnN0cm0sIHMtPnN0cm0tPm5leHRfb3V0LCBsZW4pOworICAgICAgICAgICAgcy0+c3RybS0+bmV4dF9vdXQgKz0gbGVuOworICAgICAgICAgICAgcy0+c3RybS0+YXZhaWxfb3V0IC09IGxlbjsKKyAgICAgICAgICAgIHMtPnN0cm0tPnRvdGFsX291dCArPSBsZW47CisgICAgICAgIH0KKyAgICB9IHdoaWxlIChsYXN0ID09IDApOworCisgICAgLyogVXBkYXRlIHRoZSBzbGlkaW5nIHdpbmRvdyB3aXRoIHRoZSBsYXN0IHMtPndfc2l6ZSBieXRlcyBvZiB0aGUgY29waWVkCisgICAgICogZGF0YSwgb3IgYXBwZW5kIGFsbCBvZiB0aGUgY29waWVkIGRhdGEgdG8gdGhlIGV4aXN0aW5nIHdpbmRvdyBpZiBsZXNzCisgICAgICogdGhhbiBzLT53X3NpemUgYnl0ZXMgd2VyZSBjb3BpZWQuIEFsc28gdXBkYXRlIHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8KKyAgICAgKiBpbnNlcnQgaW4gdGhlIGhhc2ggdGFibGVzLCBpbiB0aGUgZXZlbnQgdGhhdCBkZWZsYXRlUGFyYW1zKCkgc3dpdGNoZXMgdG8KKyAgICAgKiBhIG5vbi16ZXJvIGNvbXByZXNzaW9uIGxldmVsLgorICAgICAqLworICAgIHVzZWQgLT0gcy0+c3RybS0+YXZhaWxfaW47ICAgICAgLyogbnVtYmVyIG9mIGlucHV0IGJ5dGVzIGRpcmVjdGx5IGNvcGllZCAqLworICAgIGlmICh1c2VkKSB7CisgICAgICAgIC8qIElmIGFueSBpbnB1dCB3YXMgdXNlZCwgdGhlbiBubyB1bnVzZWQgaW5wdXQgcmVtYWlucyBpbiB0aGUgd2luZG93LAorICAgICAgICAgKiB0aGVyZWZvcmUgcy0+YmxvY2tfc3RhcnQgPT0gcy0+c3Ryc3RhcnQuCisgICAgICAgICAqLworICAgICAgICBpZiAodXNlZCA+PSBzLT53X3NpemUpIHsgICAgLyogc3VwcGxhbnQgdGhlIHByZXZpb3VzIGhpc3RvcnkgKi8KKyAgICAgICAgICAgIHMtPm1hdGNoZXMgPSAyOyAgICAgICAgIC8qIGNsZWFyIGhhc2ggKi8KKyAgICAgICAgICAgIHptZW1jcHkocy0+d2luZG93LCBzLT5zdHJtLT5uZXh0X2luIC0gcy0+d19zaXplLCBzLT53X3NpemUpOworICAgICAgICAgICAgcy0+c3Ryc3RhcnQgPSBzLT53X3NpemU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAocy0+d2luZG93X3NpemUgLSBzLT5zdHJzdGFydCA8PSB1c2VkKSB7CisgICAgICAgICAgICAgICAgLyogU2xpZGUgdGhlIHdpbmRvdyBkb3duLiAqLworICAgICAgICAgICAgICAgIHMtPnN0cnN0YXJ0IC09IHMtPndfc2l6ZTsKKyAgICAgICAgICAgICAgICB6bWVtY3B5KHMtPndpbmRvdywgcy0+d2luZG93ICsgcy0+d19zaXplLCBzLT5zdHJzdGFydCk7CisgICAgICAgICAgICAgICAgaWYgKHMtPm1hdGNoZXMgPCAyKQorICAgICAgICAgICAgICAgICAgICBzLT5tYXRjaGVzKys7ICAgLyogYWRkIGEgcGVuZGluZyBzbGlkZV9oYXNoKCkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHptZW1jcHkocy0+d2luZG93ICsgcy0+c3Ryc3RhcnQsIHMtPnN0cm0tPm5leHRfaW4gLSB1c2VkLCB1c2VkKTsKKyAgICAgICAgICAgIHMtPnN0cnN0YXJ0ICs9IHVzZWQ7CisgICAgICAgIH0KKyAgICAgICAgcy0+YmxvY2tfc3RhcnQgPSBzLT5zdHJzdGFydDsKKyAgICAgICAgcy0+aW5zZXJ0ICs9IE1JTih1c2VkLCBzLT53X3NpemUgLSBzLT5pbnNlcnQpOwogICAgIH0KLSAgICBzLT5pbnNlcnQgPSAwOwotICAgIGlmIChmbHVzaCA9PSBaX0ZJTklTSCkgewotICAgICAgICBGTFVTSF9CTE9DSyhzLCAxKTsKKyAgICBpZiAocy0+aGlnaF93YXRlciA8IHMtPnN0cnN0YXJ0KQorICAgICAgICBzLT5oaWdoX3dhdGVyID0gcy0+c3Ryc3RhcnQ7CisKKyAgICAvKiBJZiB0aGUgbGFzdCBibG9jayB3YXMgd3JpdHRlbiB0byBuZXh0X291dCwgdGhlbiBkb25lLiAqLworICAgIGlmIChsYXN0KQogICAgICAgICByZXR1cm4gZmluaXNoX2RvbmU7CisKKyAgICAvKiBJZiBmbHVzaGluZyBhbmQgYWxsIGlucHV0IGhhcyBiZWVuIGNvbnN1bWVkLCB0aGVuIGRvbmUuICovCisgICAgaWYgKGZsdXNoICE9IFpfTk9fRkxVU0ggJiYgZmx1c2ggIT0gWl9GSU5JU0ggJiYKKyAgICAgICAgcy0+c3RybS0+YXZhaWxfaW4gPT0gMCAmJiAobG9uZylzLT5zdHJzdGFydCA9PSBzLT5ibG9ja19zdGFydCkKKyAgICAgICAgcmV0dXJuIGJsb2NrX2RvbmU7CisKKyAgICAvKiBGaWxsIHRoZSB3aW5kb3cgd2l0aCBhbnkgcmVtYWluaW5nIGlucHV0LiAqLworICAgIGhhdmUgPSBzLT53aW5kb3dfc2l6ZSAtIHMtPnN0cnN0YXJ0IC0gMTsKKyAgICBpZiAocy0+c3RybS0+YXZhaWxfaW4gPiBoYXZlICYmIHMtPmJsb2NrX3N0YXJ0ID49IChsb25nKXMtPndfc2l6ZSkgeworICAgICAgICAvKiBTbGlkZSB0aGUgd2luZG93IGRvd24uICovCisgICAgICAgIHMtPmJsb2NrX3N0YXJ0IC09IHMtPndfc2l6ZTsKKyAgICAgICAgcy0+c3Ryc3RhcnQgLT0gcy0+d19zaXplOworICAgICAgICB6bWVtY3B5KHMtPndpbmRvdywgcy0+d2luZG93ICsgcy0+d19zaXplLCBzLT5zdHJzdGFydCk7CisgICAgICAgIGlmIChzLT5tYXRjaGVzIDwgMikKKyAgICAgICAgICAgIHMtPm1hdGNoZXMrKzsgICAgICAgICAgIC8qIGFkZCBhIHBlbmRpbmcgc2xpZGVfaGFzaCgpICovCisgICAgICAgIGhhdmUgKz0gcy0+d19zaXplOyAgICAgICAgICAvKiBtb3JlIHNwYWNlIG5vdyAqLwogICAgIH0KLSAgICBpZiAoKGxvbmcpcy0+c3Ryc3RhcnQgPiBzLT5ibG9ja19zdGFydCkKLSAgICAgICAgRkxVU0hfQkxPQ0socywgMCk7Ci0gICAgcmV0dXJuIGJsb2NrX2RvbmU7CisgICAgaWYgKGhhdmUgPiBzLT5zdHJtLT5hdmFpbF9pbikKKyAgICAgICAgaGF2ZSA9IHMtPnN0cm0tPmF2YWlsX2luOworICAgIGlmIChoYXZlKSB7CisgICAgICAgIHJlYWRfYnVmKHMtPnN0cm0sIHMtPndpbmRvdyArIHMtPnN0cnN0YXJ0LCBoYXZlKTsKKyAgICAgICAgcy0+c3Ryc3RhcnQgKz0gaGF2ZTsKKyAgICB9CisgICAgaWYgKHMtPmhpZ2hfd2F0ZXIgPCBzLT5zdHJzdGFydCkKKyAgICAgICAgcy0+aGlnaF93YXRlciA9IHMtPnN0cnN0YXJ0OworCisgICAgLyogVGhlcmUgd2FzIG5vdCBlbm91Z2ggYXZhaWxfb3V0IHRvIHdyaXRlIGEgY29tcGxldGUgd29ydGh5IG9yIGZsdXNoZWQKKyAgICAgKiBzdG9yZWQgYmxvY2sgdG8gbmV4dF9vdXQuIFdyaXRlIGEgc3RvcmVkIGJsb2NrIHRvIHBlbmRpbmcgaW5zdGVhZCwgaWYgd2UKKyAgICAgKiBoYXZlIGVub3VnaCBpbnB1dCBmb3IgYSB3b3J0aHkgYmxvY2ssIG9yIGlmIGZsdXNoaW5nIGFuZCB0aGVyZSBpcyBlbm91Z2gKKyAgICAgKiByb29tIGZvciB0aGUgcmVtYWluaW5nIGlucHV0IGFzIGEgc3RvcmVkIGJsb2NrIGluIHRoZSBwZW5kaW5nIGJ1ZmZlci4KKyAgICAgKi8KKyAgICBoYXZlID0gKHMtPmJpX3ZhbGlkICsgNDIpID4+IDM7ICAgICAgICAgLyogbnVtYmVyIG9mIGhlYWRlciBieXRlcyAqLworICAgICAgICAvKiBtYXhpbXVtIHN0b3JlZCBibG9jayBsZW5ndGggdGhhdCB3aWxsIGZpdCBpbiBwZW5kaW5nOiAqLworICAgIGhhdmUgPSBNSU4ocy0+cGVuZGluZ19idWZfc2l6ZSAtIGhhdmUsIE1BWF9TVE9SRUQpOworICAgIG1pbl9ibG9jayA9IE1JTihoYXZlLCBzLT53X3NpemUpOworICAgIGxlZnQgPSBzLT5zdHJzdGFydCAtIHMtPmJsb2NrX3N0YXJ0OworICAgIGlmIChsZWZ0ID49IG1pbl9ibG9jayB8fAorICAgICAgICAoKGxlZnQgfHwgZmx1c2ggPT0gWl9GSU5JU0gpICYmIGZsdXNoICE9IFpfTk9fRkxVU0ggJiYKKyAgICAgICAgIHMtPnN0cm0tPmF2YWlsX2luID09IDAgJiYgbGVmdCA8PSBoYXZlKSkgeworICAgICAgICBsZW4gPSBNSU4obGVmdCwgaGF2ZSk7CisgICAgICAgIGxhc3QgPSBmbHVzaCA9PSBaX0ZJTklTSCAmJiBzLT5zdHJtLT5hdmFpbF9pbiA9PSAwICYmCisgICAgICAgICAgICAgICBsZW4gPT0gbGVmdCA/IDEgOiAwOworICAgICAgICBfdHJfc3RvcmVkX2Jsb2NrKHMsIChjaGFyZiAqKXMtPndpbmRvdyArIHMtPmJsb2NrX3N0YXJ0LCBsZW4sIGxhc3QpOworICAgICAgICBzLT5ibG9ja19zdGFydCArPSBsZW47CisgICAgICAgIGZsdXNoX3BlbmRpbmcocy0+c3RybSk7CisgICAgfQorCisgICAgLyogV2UndmUgZG9uZSBhbGwgd2UgY2FuIHdpdGggdGhlIGF2YWlsYWJsZSBpbnB1dCBhbmQgb3V0cHV0LiAqLworICAgIHJldHVybiBsYXN0ID8gZmluaXNoX3N0YXJ0ZWQgOiBuZWVkX21vcmU7CiB9CiAKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTg5Miw3ICsyMDg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2ID09ICorK3NjYW4gJiYgcHJldiA9PSAqKytzY2FuICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldiA9PSAqKytzY2FuICYmIHByZXYgPT0gKisrc2NhbiAmJgogICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW4gPCBzdHJlbmQpOwotICAgICAgICAgICAgICAgIHMtPm1hdGNoX2xlbmd0aCA9IE1BWF9NQVRDSCAtIChpbnQpKHN0cmVuZCAtIHNjYW4pOworICAgICAgICAgICAgICAgIHMtPm1hdGNoX2xlbmd0aCA9IE1BWF9NQVRDSCAtICh1SW50KShzdHJlbmQgLSBzY2FuKTsKICAgICAgICAgICAgICAgICBpZiAocy0+bWF0Y2hfbGVuZ3RoID4gcy0+bG9va2FoZWFkKQogICAgICAgICAgICAgICAgICAgICBzLT5tYXRjaF9sZW5ndGggPSBzLT5sb29rYWhlYWQ7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvZGVmbGF0ZS5oIGIvTW9kdWxlcy96bGliL2RlZmxhdGUuaAppbmRleCBjZTAyOTllLi4yM2VjZGQzIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvZGVmbGF0ZS5oCisrKyBiL01vZHVsZXMvemxpYi9kZWZsYXRlLmgKQEAgLTEsNSArMSw1IEBACiAvKiBkZWZsYXRlLmggLS0gaW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDEyIEplYW4tbG91cCBHYWlsbHkKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDE2IEplYW4tbG91cCBHYWlsbHkKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqLwogCkBAIC01MSwxMyArNTEsMTYgQEAKICNkZWZpbmUgQnVmX3NpemUgMTYKIC8qIHNpemUgb2YgYml0IGJ1ZmZlciBpbiBiaV9idWYgKi8KIAotI2RlZmluZSBJTklUX1NUQVRFICAgIDQyCi0jZGVmaW5lIEVYVFJBX1NUQVRFICAgNjkKLSNkZWZpbmUgTkFNRV9TVEFURSAgICA3MwotI2RlZmluZSBDT01NRU5UX1NUQVRFIDkxCi0jZGVmaW5lIEhDUkNfU1RBVEUgICAxMDMKLSNkZWZpbmUgQlVTWV9TVEFURSAgIDExMwotI2RlZmluZSBGSU5JU0hfU1RBVEUgNjY2CisjZGVmaW5lIElOSVRfU1RBVEUgICAgNDIgICAgLyogemxpYiBoZWFkZXIgLT4gQlVTWV9TVEFURSAqLworI2lmZGVmIEdaSVAKKyMgIGRlZmluZSBHWklQX1NUQVRFICA1NyAgICAvKiBnemlwIGhlYWRlciAtPiBCVVNZX1NUQVRFIHwgRVhUUkFfU1RBVEUgKi8KKyNlbmRpZgorI2RlZmluZSBFWFRSQV9TVEFURSAgIDY5ICAgIC8qIGd6aXAgZXh0cmEgYmxvY2sgLT4gTkFNRV9TVEFURSAqLworI2RlZmluZSBOQU1FX1NUQVRFICAgIDczICAgIC8qIGd6aXAgZmlsZSBuYW1lIC0+IENPTU1FTlRfU1RBVEUgKi8KKyNkZWZpbmUgQ09NTUVOVF9TVEFURSA5MSAgICAvKiBnemlwIGNvbW1lbnQgLT4gSENSQ19TVEFURSAqLworI2RlZmluZSBIQ1JDX1NUQVRFICAgMTAzICAgIC8qIGd6aXAgaGVhZGVyIENSQyAtPiBCVVNZX1NUQVRFICovCisjZGVmaW5lIEJVU1lfU1RBVEUgICAxMTMgICAgLyogZGVmbGF0ZSAtPiBGSU5JU0hfU1RBVEUgKi8KKyNkZWZpbmUgRklOSVNIX1NUQVRFIDY2NiAgICAvKiBzdHJlYW0gY29tcGxldGUgKi8KIC8qIFN0cmVhbSBzdGF0dXMgKi8KIAogCkBAIC04Myw3ICs4Niw3IEBACiB0eXBlZGVmIHN0cnVjdCB0cmVlX2Rlc2NfcyB7CiAgICAgY3RfZGF0YSAqZHluX3RyZWU7ICAgICAgICAgICAvKiB0aGUgZHluYW1pYyB0cmVlICovCiAgICAgaW50ICAgICBtYXhfY29kZTsgICAgICAgICAgICAvKiBsYXJnZXN0IGNvZGUgd2l0aCBub24gemVybyBmcmVxdWVuY3kgKi8KLSAgICBzdGF0aWNfdHJlZV9kZXNjICpzdGF0X2Rlc2M7IC8qIHRoZSBjb3JyZXNwb25kaW5nIHN0YXRpYyB0cmVlICovCisgICAgY29uc3Qgc3RhdGljX3RyZWVfZGVzYyAqc3RhdF9kZXNjOyAgLyogdGhlIGNvcnJlc3BvbmRpbmcgc3RhdGljIHRyZWUgKi8KIH0gRkFSIHRyZWVfZGVzYzsKIAogdHlwZWRlZiB1c2ggUG9zOwpAQCAtMTAwLDEwICsxMDMsMTAgQEAKICAgICBCeXRlZiAqcGVuZGluZ19idWY7ICAvKiBvdXRwdXQgc3RpbGwgcGVuZGluZyAqLwogICAgIHVsZyAgIHBlbmRpbmdfYnVmX3NpemU7IC8qIHNpemUgb2YgcGVuZGluZ19idWYgKi8KICAgICBCeXRlZiAqcGVuZGluZ19vdXQ7ICAvKiBuZXh0IHBlbmRpbmcgYnl0ZSB0byBvdXRwdXQgdG8gdGhlIHN0cmVhbSAqLwotICAgIHVJbnQgICBwZW5kaW5nOyAgICAgIC8qIG5iIG9mIGJ5dGVzIGluIHRoZSBwZW5kaW5nIGJ1ZmZlciAqLworICAgIHVsZyAgIHBlbmRpbmc7ICAgICAgIC8qIG5iIG9mIGJ5dGVzIGluIHRoZSBwZW5kaW5nIGJ1ZmZlciAqLwogICAgIGludCAgIHdyYXA7ICAgICAgICAgIC8qIGJpdCAwIHRydWUgZm9yIHpsaWIsIGJpdCAxIHRydWUgZm9yIGd6aXAgKi8KICAgICBnel9oZWFkZXJwICBnemhlYWQ7ICAvKiBnemlwIGhlYWRlciBpbmZvcm1hdGlvbiB0byB3cml0ZSAqLwotICAgIHVJbnQgICBnemluZGV4OyAgICAgIC8qIHdoZXJlIGluIGV4dHJhLCBuYW1lLCBvciBjb21tZW50ICovCisgICAgdWxnICAgZ3ppbmRleDsgICAgICAgLyogd2hlcmUgaW4gZXh0cmEsIG5hbWUsIG9yIGNvbW1lbnQgKi8KICAgICBCeXRlICBtZXRob2Q7ICAgICAgICAvKiBjYW4gb25seSBiZSBERUZMQVRFRCAqLwogICAgIGludCAgIGxhc3RfZmx1c2g7ICAgIC8qIHZhbHVlIG9mIGZsdXNoIHBhcmFtIGZvciBwcmV2aW91cyBkZWZsYXRlIGNhbGwgKi8KIApAQCAtMjQ5LDcgKzI1Miw3IEBACiAgICAgdUludCBtYXRjaGVzOyAgICAgICAvKiBudW1iZXIgb2Ygc3RyaW5nIG1hdGNoZXMgaW4gY3VycmVudCBibG9jayAqLwogICAgIHVJbnQgaW5zZXJ0OyAgICAgICAgLyogYnl0ZXMgYXQgZW5kIG9mIHdpbmRvdyBsZWZ0IHRvIGluc2VydCAqLwogCi0jaWZkZWYgREVCVUcKKyNpZmRlZiBaTElCX0RFQlVHCiAgICAgdWxnIGNvbXByZXNzZWRfbGVuOyAvKiB0b3RhbCBiaXQgbGVuZ3RoIG9mIGNvbXByZXNzZWQgZmlsZSBtb2QgMl4zMiAqLwogICAgIHVsZyBiaXRzX3NlbnQ7ICAgICAgLyogYml0IGxlbmd0aCBvZiBjb21wcmVzc2VkIGRhdGEgc2VudCBtb2QgMl4zMiAqLwogI2VuZGlmCkBAIC0yNzUsNyArMjc4LDcgQEAKIC8qIE91dHB1dCBhIGJ5dGUgb24gdGhlIHN0cmVhbS4KICAqIElOIGFzc2VydGlvbjogdGhlcmUgaXMgZW5vdWdoIHJvb20gaW4gcGVuZGluZ19idWYuCiAgKi8KLSNkZWZpbmUgcHV0X2J5dGUocywgYykge3MtPnBlbmRpbmdfYnVmW3MtPnBlbmRpbmcrK10gPSAoYyk7fQorI2RlZmluZSBwdXRfYnl0ZShzLCBjKSB7cy0+cGVuZGluZ19idWZbcy0+cGVuZGluZysrXSA9IChCeXRlZikoYyk7fQogCiAKICNkZWZpbmUgTUlOX0xPT0tBSEVBRCAoTUFYX01BVENIK01JTl9NQVRDSCsxKQpAQCAtMzA5LDcgKzMxMiw3IEBACiAgKiB1c2VkLgogICovCiAKLSNpZm5kZWYgREVCVUcKKyNpZm5kZWYgWkxJQl9ERUJVRwogLyogSW5saW5lIHZlcnNpb25zIG9mIF90cl90YWxseSBmb3Igc3BlZWQ6ICovCiAKICNpZiBkZWZpbmVkKEdFTl9UUkVFU19IKSB8fCAhZGVmaW5lZChTVERDKQpAQCAtMzI4LDggKzMzMSw4IEBACiAgICAgZmx1c2ggPSAocy0+bGFzdF9saXQgPT0gcy0+bGl0X2J1ZnNpemUtMSk7IFwKICAgIH0KICMgZGVmaW5lIF90cl90YWxseV9kaXN0KHMsIGRpc3RhbmNlLCBsZW5ndGgsIGZsdXNoKSBcCi0gIHsgdWNoIGxlbiA9IChsZW5ndGgpOyBcCi0gICAgdXNoIGRpc3QgPSAoZGlzdGFuY2UpOyBcCisgIHsgdWNoIGxlbiA9ICh1Y2gpKGxlbmd0aCk7IFwKKyAgICB1c2ggZGlzdCA9ICh1c2gpKGRpc3RhbmNlKTsgXAogICAgIHMtPmRfYnVmW3MtPmxhc3RfbGl0XSA9IGRpc3Q7IFwKICAgICBzLT5sX2J1ZltzLT5sYXN0X2xpdCsrXSA9IGxlbjsgXAogICAgIGRpc3QtLTsgXApkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL2d6Z3V0cy5oIGIvTW9kdWxlcy96bGliL2d6Z3V0cy5oCmluZGV4IGQ4NzY1OWQuLjk5MGE0ZDIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYi9nemd1dHMuaAorKysgYi9Nb2R1bGVzL3psaWIvZ3pndXRzLmgKQEAgLTEsNSArMSw1IEBACiAvKiBnemd1dHMuaCAtLSB6bGliIGludGVybmFsIGhlYWRlciBkZWZpbml0aW9ucyBmb3IgZ3oqIG9wZXJhdGlvbnMKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBNYXJrIEFkbGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMsIDIwMTYgTWFyayBBZGxlcgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKQEAgLTI1LDYgKzI1LDEwIEBACiAjICBpbmNsdWRlIDxzdGRsaWIuaD4KICMgIGluY2x1ZGUgPGxpbWl0cy5oPgogI2VuZGlmCisKKyNpZm5kZWYgX1BPU0lYX1NPVVJDRQorIyAgZGVmaW5lIF9QT1NJWF9TT1VSQ0UKKyNlbmRpZgogI2luY2x1ZGUgPGZjbnRsLmg+CiAKICNpZmRlZiBfV0lOMzIKQEAgLTM1LDYgKzM5LDEwIEBACiAjICBpbmNsdWRlIDxpby5oPgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKQorIyAgZGVmaW5lIFdJREVDSEFSCisjZW5kaWYKKwogI2lmZGVmIFdJTkFQSV9GQU1JTFkKICMgIGRlZmluZSBvcGVuIF9vcGVuCiAjICBkZWZpbmUgcmVhZCBfcmVhZApAQCAtOTUsMTggKzEwMywxOSBAQAogIyAgZW5kaWYKICNlbmRpZgogCi0vKiB1bmxpa2Ugc25wcmludGYgKHdoaWNoIGlzIHJlcXVpcmVkIGluIEM5OSwgeWV0IHN0aWxsIG5vdCBzdXBwb3J0ZWQgYnkKLSAgIE1pY3Jvc29mdCBtb3JlIHRoYW4gYSBkZWNhZGUgbGF0ZXIhKSwgX3NucHJpbnRmIGRvZXMgbm90IGd1YXJhbnRlZSBudWxsCi0gICB0ZXJtaW5hdGlvbiBvZiB0aGUgcmVzdWx0IC0tIGhvd2V2ZXIgdGhpcyBpcyBvbmx5IHVzZWQgaW4gZ3psaWIuYyB3aGVyZQorLyogdW5saWtlIHNucHJpbnRmICh3aGljaCBpcyByZXF1aXJlZCBpbiBDOTkpLCBfc25wcmludGYgZG9lcyBub3QgZ3VhcmFudGVlCisgICBudWxsIHRlcm1pbmF0aW9uIG9mIHRoZSByZXN1bHQgLS0gaG93ZXZlciB0aGlzIGlzIG9ubHkgdXNlZCBpbiBnemxpYi5jIHdoZXJlCiAgICB0aGUgcmVzdWx0IGlzIGFzc3VyZWQgdG8gZml0IGluIHRoZSBzcGFjZSBwcm92aWRlZCAqLwotI2lmZGVmIF9NU0NfVkVSCisjaWYgZGVmaW5lZChfTVNDX1ZFUikgJiYgX01TQ19WRVIgPCAxOTAwCiAjICBkZWZpbmUgc25wcmludGYgX3NucHJpbnRmCiAjZW5kaWYKIAogI2lmbmRlZiBsb2NhbAogIyAgZGVmaW5lIGxvY2FsIHN0YXRpYwogI2VuZGlmCi0vKiBjb21waWxlIHdpdGggLURsb2NhbCBpZiB5b3VyIGRlYnVnZ2VyIGNhbid0IGZpbmQgc3RhdGljIHN5bWJvbHMgKi8KKy8qIHNpbmNlICJzdGF0aWMiIGlzIHVzZWQgdG8gbWVhbiB0d28gY29tcGxldGVseSBkaWZmZXJlbnQgdGhpbmdzIGluIEMsIHdlCisgICBkZWZpbmUgImxvY2FsIiBmb3IgdGhlIG5vbi1zdGF0aWMgbWVhbmluZyBvZiAic3RhdGljIiwgZm9yIHJlYWRhYmlsaXR5CisgICAoY29tcGlsZSB3aXRoIC1EbG9jYWwgaWYgeW91ciBkZWJ1Z2dlciBjYW4ndCBmaW5kIHN0YXRpYyBzeW1ib2xzKSAqLwogCiAvKiBneiogZnVuY3Rpb25zIGFsd2F5cyB1c2UgbGlicmFyeSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyAqLwogI2lmbmRlZiBTVERDCkBAIC0xNzAsNyArMTc5LDcgQEAKICAgICBjaGFyICpwYXRoOyAgICAgICAgICAgICAvKiBwYXRoIG9yIGZkIGZvciBlcnJvciBtZXNzYWdlcyAqLwogICAgIHVuc2lnbmVkIHNpemU7ICAgICAgICAgIC8qIGJ1ZmZlciBzaXplLCB6ZXJvIGlmIG5vdCBhbGxvY2F0ZWQgeWV0ICovCiAgICAgdW5zaWduZWQgd2FudDsgICAgICAgICAgLyogcmVxdWVzdGVkIGJ1ZmZlciBzaXplLCBkZWZhdWx0IGlzIEdaQlVGU0laRSAqLwotICAgIHVuc2lnbmVkIGNoYXIgKmluOyAgICAgIC8qIGlucHV0IGJ1ZmZlciAqLworICAgIHVuc2lnbmVkIGNoYXIgKmluOyAgICAgIC8qIGlucHV0IGJ1ZmZlciAoZG91YmxlLXNpemVkIHdoZW4gd3JpdGluZykgKi8KICAgICB1bnNpZ25lZCBjaGFyICpvdXQ7ICAgICAvKiBvdXRwdXQgYnVmZmVyIChkb3VibGUtc2l6ZWQgd2hlbiByZWFkaW5nKSAqLwogICAgIGludCBkaXJlY3Q7ICAgICAgICAgICAgIC8qIDAgaWYgcHJvY2Vzc2luZyBnemlwLCAxIGlmIHRyYW5zcGFyZW50ICovCiAgICAgICAgIC8qIGp1c3QgZm9yIHJlYWRpbmcgKi8KZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYi9nemxpYi5jIGIvTW9kdWxlcy96bGliL2d6bGliLmMKaW5kZXggZmFlMjAyZS4uNDEwNWU2YSAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGliL2d6bGliLmMKKysrIGIvTW9kdWxlcy96bGliL2d6bGliLmMKQEAgLTEsMTEgKzEsMTEgQEAKIC8qIGd6bGliLmMgLS0gemxpYiBmdW5jdGlvbnMgY29tbW9uIHRvIHJlYWRpbmcgYW5kIHdyaXRpbmcgZ3ppcCBmaWxlcwotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIE1hcmsgQWRsZXIKKyAqIENvcHlyaWdodCAoQykgMjAwNC0yMDE3IE1hcmsgQWRsZXIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqLwogCiAjaW5jbHVkZSAiZ3pndXRzLmgiCiAKLSNpZiBkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19CT1JMQU5EQ19fKQorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiAhZGVmaW5lZChfX0JPUkxBTkRDX18pICYmICFkZWZpbmVkKF9fTUlOR1czMl9fKQogIyAgZGVmaW5lIExTRUVLIF9sc2Vla2k2NAogI2Vsc2UKICNpZiBkZWZpbmVkKF9MQVJHRUZJTEU2NF9TT1VSQ0UpICYmIF9MRlM2NF9MQVJHRUZJTEUtMApAQCAtOTQsNyArOTQsNyBAQAogICAgIGNvbnN0IGNoYXIgKm1vZGU7CiB7CiAgICAgZ3pfc3RhdGVwIHN0YXRlOwotICAgIHNpemVfdCBsZW47CisgICAgel9zaXplX3QgbGVuOwogICAgIGludCBvZmxhZzsKICNpZmRlZiBPX0NMT0VYRUMKICAgICBpbnQgY2xvZXhlYyA9IDA7CkBAIC0xODgsMTAgKzE4OCwxMCBAQAogICAgIH0KIAogICAgIC8qIHNhdmUgdGhlIHBhdGggbmFtZSBmb3IgZXJyb3IgbWVzc2FnZXMgKi8KLSNpZmRlZiBfV0lOMzIKKyNpZmRlZiBXSURFQ0hBUgogICAgIGlmIChmZCA9PSAtMikgewogICAgICAgICBsZW4gPSB3Y3N0b21icyhOVUxMLCBwYXRoLCAwKTsKLSAgICAgICAgaWYgKGxlbiA9PSAoc2l6ZV90KS0xKQorICAgICAgICBpZiAobGVuID09ICh6X3NpemVfdCktMSkKICAgICAgICAgICAgIGxlbiA9IDA7CiAgICAgfQogICAgIGVsc2UKQEAgLTIwMiw3ICsyMDIsNyBAQAogICAgICAgICBmcmVlKHN0YXRlKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI2lmZGVmIF9XSU4zMgorI2lmZGVmIFdJREVDSEFSCiAgICAgaWYgKGZkID09IC0yKQogICAgICAgICBpZiAobGVuKQogICAgICAgICAgICAgd2NzdG9tYnMoc3RhdGUtPnBhdGgsIHBhdGgsIGxlbiArIDEpOwpAQCAtMjExLDcgKzIxMSw3IEBACiAgICAgZWxzZQogI2VuZGlmCiAjaWYgIWRlZmluZWQoTk9fc25wcmludGYpICYmICFkZWZpbmVkKE5PX3ZzbnByaW50ZikKLSAgICAgICAgc25wcmludGYoc3RhdGUtPnBhdGgsIGxlbiArIDEsICIlcyIsIChjb25zdCBjaGFyICopcGF0aCk7CisgICAgICAgICh2b2lkKXNucHJpbnRmKHN0YXRlLT5wYXRoLCBsZW4gKyAxLCAiJXMiLCAoY29uc3QgY2hhciAqKXBhdGgpOwogI2Vsc2UKICAgICAgICAgc3RyY3B5KHN0YXRlLT5wYXRoLCBwYXRoKTsKICNlbmRpZgpAQCAtMjM5LDcgKzIzOSw3IEBACiAKICAgICAvKiBvcGVuIHRoZSBmaWxlIHdpdGggdGhlIGFwcHJvcHJpYXRlIGZsYWdzIChvciBqdXN0IHVzZSBmZCkgKi8KICAgICBzdGF0ZS0+ZmQgPSBmZCA+IC0xID8gZmQgOiAoCi0jaWZkZWYgX1dJTjMyCisjaWZkZWYgV0lERUNIQVIKICAgICAgICAgZmQgPT0gLTIgPyBfd29wZW4ocGF0aCwgb2ZsYWcsIDA2NjYpIDoKICNlbmRpZgogICAgICAgICBvcGVuKChjb25zdCBjaGFyICopcGF0aCwgb2ZsYWcsIDA2NjYpKTsKQEAgLTI0OCw4ICsyNDgsMTAgQEAKICAgICAgICAgZnJlZShzdGF0ZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoc3RhdGUtPm1vZGUgPT0gR1pfQVBQRU5EKQorICAgIGlmIChzdGF0ZS0+bW9kZSA9PSBHWl9BUFBFTkQpIHsKKyAgICAgICAgTFNFRUsoc3RhdGUtPmZkLCAwLCBTRUVLX0VORCk7ICAvKiBzbyBnem9mZnNldCgpIGlzIGNvcnJlY3QgKi8KICAgICAgICAgc3RhdGUtPm1vZGUgPSBHWl9XUklURTsgICAgICAgICAvKiBzaW1wbGlmeSBsYXRlciBjaGVja3MgKi8KKyAgICB9CiAKICAgICAvKiBzYXZlIHRoZSBjdXJyZW50IHBvc2l0aW9uIGZvciByZXdpbmRpbmcgKG9ubHkgaWYgcmVhZGluZykgKi8KICAgICBpZiAoc3RhdGUtPm1vZGUgPT0gR1pfUkVBRCkgewpAQCAtMjkxLDcgKzI5Myw3IEBACiAgICAgaWYgKGZkID09IC0xIHx8IChwYXRoID0gKGNoYXIgKiltYWxsb2MoNyArIDMgKiBzaXplb2YoaW50KSkpID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogI2lmICFkZWZpbmVkKE5PX3NucHJpbnRmKSAmJiAhZGVmaW5lZChOT192c25wcmludGYpCi0gICAgc25wcmludGYocGF0aCwgNyArIDMgKiBzaXplb2YoaW50KSwgIjxmZDolZD4iLCBmZCk7IC8qIGZvciBkZWJ1Z2dpbmcgKi8KKyAgICAodm9pZClzbnByaW50ZihwYXRoLCA3ICsgMyAqIHNpemVvZihpbnQpLCAiPGZkOiVkPiIsIGZkKTsKICNlbHNlCiAgICAgc3ByaW50ZihwYXRoLCAiPGZkOiVkPiIsIGZkKTsgICAvKiBmb3IgZGVidWdnaW5nICovCiAjZW5kaWYKQEAgLTMwMSw3ICszMDMsNyBAQAogfQogCiAvKiAtLSBzZWUgemxpYi5oIC0tICovCi0jaWZkZWYgX1dJTjMyCisjaWZkZWYgV0lERUNIQVIKIGd6RmlsZSBaRVhQT1JUIGd6b3Blbl93KHBhdGgsIG1vZGUpCiAgICAgY29uc3Qgd2NoYXJfdCAqcGF0aDsKICAgICBjb25zdCBjaGFyICptb2RlOwpAQCAtMzI5LDYgKzMzMSw4IEBACiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8qIGNoZWNrIGFuZCBzZXQgcmVxdWVzdGVkIHNpemUgKi8KKyAgICBpZiAoKHNpemUgPDwgMSkgPCBzaXplKQorICAgICAgICByZXR1cm4gLTE7ICAgICAgICAgICAgICAvKiBuZWVkIHRvIGJlIGFibGUgdG8gZG91YmxlIGl0ICovCiAgICAgaWYgKHNpemUgPCAyKQogICAgICAgICBzaXplID0gMjsgICAgICAgICAgICAgICAvKiBuZWVkIHR3byBieXRlcyB0byBjaGVjayBtYWdpYyBoZWFkZXIgKi8KICAgICBzdGF0ZS0+d2FudCA9IHNpemU7CkBAIC02MDQsMTQgKzYwOCwxMyBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogI2lmICFkZWZpbmVkKE5PX3NucHJpbnRmKSAmJiAhZGVmaW5lZChOT192c25wcmludGYpCi0gICAgc25wcmludGYoc3RhdGUtPm1zZywgc3RybGVuKHN0YXRlLT5wYXRoKSArIHN0cmxlbihtc2cpICsgMywKLSAgICAgICAgICAgICAiJXMlcyVzIiwgc3RhdGUtPnBhdGgsICI6ICIsIG1zZyk7CisgICAgKHZvaWQpc25wcmludGYoc3RhdGUtPm1zZywgc3RybGVuKHN0YXRlLT5wYXRoKSArIHN0cmxlbihtc2cpICsgMywKKyAgICAgICAgICAgICAgICAgICAiJXMlcyVzIiwgc3RhdGUtPnBhdGgsICI6ICIsIG1zZyk7CiAjZWxzZQogICAgIHN0cmNweShzdGF0ZS0+bXNnLCBzdGF0ZS0+cGF0aCk7CiAgICAgc3RyY2F0KHN0YXRlLT5tc2csICI6ICIpOwogICAgIHN0cmNhdChzdGF0ZS0+bXNnLCBtc2cpOwogI2VuZGlmCi0gICAgcmV0dXJuOwogfQogCiAjaWZuZGVmIElOVF9NQVgKZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYi9nenJlYWQuYyBiL01vZHVsZXMvemxpYi9nenJlYWQuYwppbmRleCBiZjQ1MzhlLi45NTZiOTFlIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvZ3pyZWFkLmMKKysrIGIvTW9kdWxlcy96bGliL2d6cmVhZC5jCkBAIC0xLDUgKzEsNSBAQAogLyogZ3pyZWFkLmMgLS0gemxpYiBmdW5jdGlvbnMgZm9yIHJlYWRpbmcgZ3ppcCBmaWxlcwotICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDEwLCAyMDExLCAyMDEyLCAyMDEzIE1hcmsgQWRsZXIKKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMywgMjAxNiBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtMTIsNiArMTIsNyBAQAogbG9jYWwgaW50IGd6X2RlY29tcCBPRigoZ3pfc3RhdGVwKSk7CiBsb2NhbCBpbnQgZ3pfZmV0Y2ggT0YoKGd6X3N0YXRlcCkpOwogbG9jYWwgaW50IGd6X3NraXAgT0YoKGd6X3N0YXRlcCwgel9vZmY2NF90KSk7Citsb2NhbCB6X3NpemVfdCBnel9yZWFkIE9GKChnel9zdGF0ZXAsIHZvaWRwLCB6X3NpemVfdCkpOwogCiAvKiBVc2UgcmVhZCgpIHRvIGxvYWQgYSBidWZmZXIgLS0gcmV0dXJuIC0xIG9uIGVycm9yLCBvdGhlcndpc2UgMC4gIFJlYWQgZnJvbQogICAgc3RhdGUtPmZkLCBhbmQgdXBkYXRlIHN0YXRlLT5lb2YsIHN0YXRlLT5lcnIsIGFuZCBzdGF0ZS0+bXNnIGFzIGFwcHJvcHJpYXRlLgpAQCAtMjQsMTMgKzI1LDE3IEBACiAgICAgdW5zaWduZWQgKmhhdmU7CiB7CiAgICAgaW50IHJldDsKKyAgICB1bnNpZ25lZCBnZXQsIG1heCA9ICgodW5zaWduZWQpLTEgPj4gMikgKyAxOwogCiAgICAgKmhhdmUgPSAwOwogICAgIGRvIHsKLSAgICAgICAgcmV0ID0gcmVhZChzdGF0ZS0+ZmQsIGJ1ZiArICpoYXZlLCBsZW4gLSAqaGF2ZSk7CisgICAgICAgIGdldCA9IGxlbiAtICpoYXZlOworICAgICAgICBpZiAoZ2V0ID4gbWF4KQorICAgICAgICAgICAgZ2V0ID0gbWF4OworICAgICAgICByZXQgPSByZWFkKHN0YXRlLT5mZCwgYnVmICsgKmhhdmUsIGdldCk7CiAgICAgICAgIGlmIChyZXQgPD0gMCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAqaGF2ZSArPSByZXQ7CisgICAgICAgICpoYXZlICs9ICh1bnNpZ25lZClyZXQ7CiAgICAgfSB3aGlsZSAoKmhhdmUgPCBsZW4pOwogICAgIGlmIChyZXQgPCAwKSB7CiAgICAgICAgIGd6X2Vycm9yKHN0YXRlLCBaX0VSUk5PLCB6c3RyZXJyb3IoKSk7CkBAIC05NCwxMCArOTksOCBAQAogICAgICAgICBzdGF0ZS0+aW4gPSAodW5zaWduZWQgY2hhciAqKW1hbGxvYyhzdGF0ZS0+d2FudCk7CiAgICAgICAgIHN0YXRlLT5vdXQgPSAodW5zaWduZWQgY2hhciAqKW1hbGxvYyhzdGF0ZS0+d2FudCA8PCAxKTsKICAgICAgICAgaWYgKHN0YXRlLT5pbiA9PSBOVUxMIHx8IHN0YXRlLT5vdXQgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKHN0YXRlLT5vdXQgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBmcmVlKHN0YXRlLT5vdXQpOwotICAgICAgICAgICAgaWYgKHN0YXRlLT5pbiAhPSBOVUxMKQotICAgICAgICAgICAgICAgIGZyZWUoc3RhdGUtPmluKTsKKyAgICAgICAgICAgIGZyZWUoc3RhdGUtPm91dCk7CisgICAgICAgICAgICBmcmVlKHN0YXRlLT5pbik7CiAgICAgICAgICAgICBnel9lcnJvcihzdGF0ZSwgWl9NRU1fRVJST1IsICJvdXQgb2YgbWVtb3J5Iik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTI4NCwzMyArMjg3LDE3IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIC0tIHNlZSB6bGliLmggLS0gKi8KLWludCBaRVhQT1JUIGd6cmVhZChmaWxlLCBidWYsIGxlbikKLSAgICBnekZpbGUgZmlsZTsKLSAgICB2b2lkcCBidWY7Ci0gICAgdW5zaWduZWQgbGVuOwotewotICAgIHVuc2lnbmVkIGdvdCwgbjsKKy8qIFJlYWQgbGVuIGJ5dGVzIGludG8gYnVmIGZyb20gZmlsZSwgb3IgbGVzcyB0aGFuIGxlbiB1cCB0byB0aGUgZW5kIG9mIHRoZQorICAgaW5wdXQuICBSZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyByZWFkLiAgSWYgemVybyBpcyByZXR1cm5lZCwgZWl0aGVyIHRoZQorICAgZW5kIG9mIGZpbGUgd2FzIHJlYWNoZWQsIG9yIHRoZXJlIHdhcyBhbiBlcnJvci4gIHN0YXRlLT5lcnIgbXVzdCBiZQorICAgY29uc3VsdGVkIGluIHRoYXQgY2FzZSB0byBkZXRlcm1pbmUgd2hpY2guICovCitsb2NhbCB6X3NpemVfdCBnel9yZWFkKHN0YXRlLCBidWYsIGxlbikKICAgICBnel9zdGF0ZXAgc3RhdGU7Ci0gICAgel9zdHJlYW1wIHN0cm07Ci0KLSAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlICovCi0gICAgaWYgKGZpbGUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOwotICAgIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKLQotICAgIC8qIGNoZWNrIHRoYXQgd2UncmUgcmVhZGluZyBhbmQgdGhhdCB0aGVyZSdzIG5vIChzZXJpb3VzKSBlcnJvciAqLwotICAgIGlmIChzdGF0ZS0+bW9kZSAhPSBHWl9SRUFEIHx8Ci0gICAgICAgICAgICAoc3RhdGUtPmVyciAhPSBaX09LICYmIHN0YXRlLT5lcnIgIT0gWl9CVUZfRVJST1IpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICAvKiBzaW5jZSBhbiBpbnQgaXMgcmV0dXJuZWQsIG1ha2Ugc3VyZSBsZW4gZml0cyBpbiBvbmUsIG90aGVyd2lzZSByZXR1cm4KLSAgICAgICB3aXRoIGFuIGVycm9yICh0aGlzIGF2b2lkcyB0aGUgZmxhdyBpbiB0aGUgaW50ZXJmYWNlKSAqLwotICAgIGlmICgoaW50KWxlbiA8IDApIHsKLSAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfREFUQV9FUlJPUiwgInJlcXVlc3RlZCBsZW5ndGggZG9lcyBub3QgZml0IGluIGludCIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIHZvaWRwIGJ1ZjsKKyAgICB6X3NpemVfdCBsZW47Cit7CisgICAgel9zaXplX3QgZ290OworICAgIHVuc2lnbmVkIG47CiAKICAgICAvKiBpZiBsZW4gaXMgemVybywgYXZvaWQgdW5uZWNlc3Nhcnkgb3BlcmF0aW9ucyAqLwogICAgIGlmIChsZW4gPT0gMCkKQEAgLTMyMCwzMiArMzA3LDM4IEBACiAgICAgaWYgKHN0YXRlLT5zZWVrKSB7CiAgICAgICAgIHN0YXRlLT5zZWVrID0gMDsKICAgICAgICAgaWYgKGd6X3NraXAoc3RhdGUsIHN0YXRlLT5za2lwKSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIC8qIGdldCBsZW4gYnl0ZXMgdG8gYnVmLCBvciBsZXNzIHRoYW4gbGVuIGlmIGF0IHRoZSBlbmQgKi8KICAgICBnb3QgPSAwOwogICAgIGRvIHsKKyAgICAgICAgLyogc2V0IG4gdG8gdGhlIG1heGltdW0gYW1vdW50IG9mIGxlbiB0aGF0IGZpdHMgaW4gYW4gdW5zaWduZWQgaW50ICovCisgICAgICAgIG4gPSAtMTsKKyAgICAgICAgaWYgKG4gPiBsZW4pCisgICAgICAgICAgICBuID0gbGVuOworCiAgICAgICAgIC8qIGZpcnN0IGp1c3QgdHJ5IGNvcHlpbmcgZGF0YSBmcm9tIHRoZSBvdXRwdXQgYnVmZmVyICovCiAgICAgICAgIGlmIChzdGF0ZS0+eC5oYXZlKSB7Ci0gICAgICAgICAgICBuID0gc3RhdGUtPnguaGF2ZSA+IGxlbiA/IGxlbiA6IHN0YXRlLT54LmhhdmU7CisgICAgICAgICAgICBpZiAoc3RhdGUtPnguaGF2ZSA8IG4pCisgICAgICAgICAgICAgICAgbiA9IHN0YXRlLT54LmhhdmU7CiAgICAgICAgICAgICBtZW1jcHkoYnVmLCBzdGF0ZS0+eC5uZXh0LCBuKTsKICAgICAgICAgICAgIHN0YXRlLT54Lm5leHQgKz0gbjsKICAgICAgICAgICAgIHN0YXRlLT54LmhhdmUgLT0gbjsKICAgICAgICAgfQogCiAgICAgICAgIC8qIG91dHB1dCBidWZmZXIgZW1wdHkgLS0gcmV0dXJuIGlmIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIGlucHV0ICovCi0gICAgICAgIGVsc2UgaWYgKHN0YXRlLT5lb2YgJiYgc3RybS0+YXZhaWxfaW4gPT0gMCkgeworICAgICAgICBlbHNlIGlmIChzdGF0ZS0+ZW9mICYmIHN0YXRlLT5zdHJtLmF2YWlsX2luID09IDApIHsKICAgICAgICAgICAgIHN0YXRlLT5wYXN0ID0gMTsgICAgICAgIC8qIHRyaWVkIHRvIHJlYWQgcGFzdCBlbmQgKi8KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgLyogbmVlZCBvdXRwdXQgZGF0YSAtLSBmb3Igc21hbGwgbGVuIG9yIG5ldyBzdHJlYW0gbG9hZCB1cCBvdXIgb3V0cHV0CiAgICAgICAgICAgIGJ1ZmZlciAqLwotICAgICAgICBlbHNlIGlmIChzdGF0ZS0+aG93ID09IExPT0sgfHwgbGVuIDwgKHN0YXRlLT5zaXplIDw8IDEpKSB7CisgICAgICAgIGVsc2UgaWYgKHN0YXRlLT5ob3cgPT0gTE9PSyB8fCBuIDwgKHN0YXRlLT5zaXplIDw8IDEpKSB7CiAgICAgICAgICAgICAvKiBnZXQgbW9yZSBvdXRwdXQsIGxvb2tpbmcgZm9yIGhlYWRlciBpZiByZXF1aXJlZCAqLwogICAgICAgICAgICAgaWYgKGd6X2ZldGNoKHN0YXRlKSA9PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgLyogbm8gcHJvZ3Jlc3MgeWV0IC0tIGdvIGJhY2sgdG8gY29weSBhYm92ZSAqLwogICAgICAgICAgICAgLyogdGhlIGNvcHkgYWJvdmUgYXNzdXJlcyB0aGF0IHdlIHdpbGwgbGVhdmUgd2l0aCBzcGFjZSBpbiB0aGUKICAgICAgICAgICAgICAgIG91dHB1dCBidWZmZXIsIGFsbG93aW5nIGF0IGxlYXN0IG9uZSBnenVuZ2V0YygpIHRvIHN1Y2NlZWQgKi8KQEAgLTM1MywxNiArMzQ2LDE2IEBACiAKICAgICAgICAgLyogbGFyZ2UgbGVuIC0tIHJlYWQgZGlyZWN0bHkgaW50byB1c2VyIGJ1ZmZlciAqLwogICAgICAgICBlbHNlIGlmIChzdGF0ZS0+aG93ID09IENPUFkpIHsgICAgICAvKiByZWFkIGRpcmVjdGx5ICovCi0gICAgICAgICAgICBpZiAoZ3pfbG9hZChzdGF0ZSwgKHVuc2lnbmVkIGNoYXIgKilidWYsIGxlbiwgJm4pID09IC0xKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChnel9sb2FkKHN0YXRlLCAodW5zaWduZWQgY2hhciAqKWJ1ZiwgbiwgJm4pID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKICAgICAgICAgLyogbGFyZ2UgbGVuIC0tIGRlY29tcHJlc3MgZGlyZWN0bHkgaW50byB1c2VyIGJ1ZmZlciAqLwogICAgICAgICBlbHNlIHsgIC8qIHN0YXRlLT5ob3cgPT0gR1pJUCAqLwotICAgICAgICAgICAgc3RybS0+YXZhaWxfb3V0ID0gbGVuOwotICAgICAgICAgICAgc3RybS0+bmV4dF9vdXQgPSAodW5zaWduZWQgY2hhciAqKWJ1ZjsKKyAgICAgICAgICAgIHN0YXRlLT5zdHJtLmF2YWlsX291dCA9IG47CisgICAgICAgICAgICBzdGF0ZS0+c3RybS5uZXh0X291dCA9ICh1bnNpZ25lZCBjaGFyICopYnVmOwogICAgICAgICAgICAgaWYgKGd6X2RlY29tcChzdGF0ZSkgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgbiA9IHN0YXRlLT54LmhhdmU7CiAgICAgICAgICAgICBzdGF0ZS0+eC5oYXZlID0gMDsKICAgICAgICAgfQpAQCAtMzc0LDggKzM2Nyw3NSBAQAogICAgICAgICBzdGF0ZS0+eC5wb3MgKz0gbjsKICAgICB9IHdoaWxlIChsZW4pOwogCi0gICAgLyogcmV0dXJuIG51bWJlciBvZiBieXRlcyByZWFkIGludG8gdXNlciBidWZmZXIgKHdpbGwgZml0IGluIGludCkgKi8KLSAgICByZXR1cm4gKGludClnb3Q7CisgICAgLyogcmV0dXJuIG51bWJlciBvZiBieXRlcyByZWFkIGludG8gdXNlciBidWZmZXIgKi8KKyAgICByZXR1cm4gZ290OworfQorCisvKiAtLSBzZWUgemxpYi5oIC0tICovCitpbnQgWkVYUE9SVCBnenJlYWQoZmlsZSwgYnVmLCBsZW4pCisgICAgZ3pGaWxlIGZpbGU7CisgICAgdm9pZHAgYnVmOworICAgIHVuc2lnbmVkIGxlbjsKK3sKKyAgICBnel9zdGF0ZXAgc3RhdGU7CisKKyAgICAvKiBnZXQgaW50ZXJuYWwgc3RydWN0dXJlICovCisgICAgaWYgKGZpbGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSByZWFkaW5nIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gKHNlcmlvdXMpIGVycm9yICovCisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1JFQUQgfHwKKyAgICAgICAgICAgIChzdGF0ZS0+ZXJyICE9IFpfT0sgJiYgc3RhdGUtPmVyciAhPSBaX0JVRl9FUlJPUikpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHNpbmNlIGFuIGludCBpcyByZXR1cm5lZCwgbWFrZSBzdXJlIGxlbiBmaXRzIGluIG9uZSwgb3RoZXJ3aXNlIHJldHVybgorICAgICAgIHdpdGggYW4gZXJyb3IgKHRoaXMgYXZvaWRzIGEgZmxhdyBpbiB0aGUgaW50ZXJmYWNlKSAqLworICAgIGlmICgoaW50KWxlbiA8IDApIHsKKyAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfU1RSRUFNX0VSUk9SLCAicmVxdWVzdCBkb2VzIG5vdCBmaXQgaW4gYW4gaW50Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiByZWFkIGxlbiBvciBmZXdlciBieXRlcyB0byBidWYgKi8KKyAgICBsZW4gPSBnel9yZWFkKHN0YXRlLCBidWYsIGxlbik7CisKKyAgICAvKiBjaGVjayBmb3IgYW4gZXJyb3IgKi8KKyAgICBpZiAobGVuID09IDAgJiYgc3RhdGUtPmVyciAhPSBaX09LICYmIHN0YXRlLT5lcnIgIT0gWl9CVUZfRVJST1IpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qIHJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlYWQgKHRoaXMgaXMgYXNzdXJlZCB0byBmaXQgaW4gYW4gaW50KSAqLworICAgIHJldHVybiAoaW50KWxlbjsKK30KKworLyogLS0gc2VlIHpsaWIuaCAtLSAqLworel9zaXplX3QgWkVYUE9SVCBnemZyZWFkKGJ1Ziwgc2l6ZSwgbml0ZW1zLCBmaWxlKQorICAgIHZvaWRwIGJ1ZjsKKyAgICB6X3NpemVfdCBzaXplOworICAgIHpfc2l6ZV90IG5pdGVtczsKKyAgICBnekZpbGUgZmlsZTsKK3sKKyAgICB6X3NpemVfdCBsZW47CisgICAgZ3pfc3RhdGVwIHN0YXRlOworCisgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSAqLworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSByZWFkaW5nIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gKHNlcmlvdXMpIGVycm9yICovCisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1JFQUQgfHwKKyAgICAgICAgICAgIChzdGF0ZS0+ZXJyICE9IFpfT0sgJiYgc3RhdGUtPmVyciAhPSBaX0JVRl9FUlJPUikpCisgICAgICAgIHJldHVybiAwOworCisgICAgLyogY29tcHV0ZSBieXRlcyB0byByZWFkIC0tIGVycm9yIG9uIG92ZXJmbG93ICovCisgICAgbGVuID0gbml0ZW1zICogc2l6ZTsKKyAgICBpZiAoc2l6ZSAmJiBsZW4gLyBzaXplICE9IG5pdGVtcykgeworICAgICAgICBnel9lcnJvcihzdGF0ZSwgWl9TVFJFQU1fRVJST1IsICJyZXF1ZXN0IGRvZXMgbm90IGZpdCBpbiBhIHNpemVfdCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiByZWFkIGxlbiBvciBmZXdlciBieXRlcyB0byBidWYsIHJldHVybiB0aGUgbnVtYmVyIG9mIGZ1bGwgaXRlbXMgcmVhZCAqLworICAgIHJldHVybiBsZW4gPyBnel9yZWFkKHN0YXRlLCBidWYsIGxlbikgLyBzaXplIDogMDsKIH0KIAogLyogLS0gc2VlIHpsaWIuaCAtLSAqLwpAQCAtNDA4LDggKzQ2OCw4IEBACiAgICAgICAgIHJldHVybiAqKHN0YXRlLT54Lm5leHQpKys7CiAgICAgfQogCi0gICAgLyogbm90aGluZyB0aGVyZSAtLSB0cnkgZ3pyZWFkKCkgKi8KLSAgICByZXQgPSBnenJlYWQoZmlsZSwgYnVmLCAxKTsKKyAgICAvKiBub3RoaW5nIHRoZXJlIC0tIHRyeSBnel9yZWFkKCkgKi8KKyAgICByZXQgPSBnel9yZWFkKHN0YXRlLCBidWYsIDEpOwogICAgIHJldHVybiByZXQgPCAxID8gLTEgOiBidWZbMF07CiB9CiAKQEAgLTQ1MSw3ICs1MTEsNyBAQAogICAgIGlmIChzdGF0ZS0+eC5oYXZlID09IDApIHsKICAgICAgICAgc3RhdGUtPnguaGF2ZSA9IDE7CiAgICAgICAgIHN0YXRlLT54Lm5leHQgPSBzdGF0ZS0+b3V0ICsgKHN0YXRlLT5zaXplIDw8IDEpIC0gMTsKLSAgICAgICAgc3RhdGUtPngubmV4dFswXSA9IGM7CisgICAgICAgIHN0YXRlLT54Lm5leHRbMF0gPSAodW5zaWduZWQgY2hhciljOwogICAgICAgICBzdGF0ZS0+eC5wb3MtLTsKICAgICAgICAgc3RhdGUtPnBhc3QgPSAwOwogICAgICAgICByZXR1cm4gYzsKQEAgLTQ3Myw3ICs1MzMsNyBAQAogICAgIH0KICAgICBzdGF0ZS0+eC5oYXZlKys7CiAgICAgc3RhdGUtPngubmV4dC0tOwotICAgIHN0YXRlLT54Lm5leHRbMF0gPSBjOworICAgIHN0YXRlLT54Lm5leHRbMF0gPSAodW5zaWduZWQgY2hhciljOwogICAgIHN0YXRlLT54LnBvcy0tOwogICAgIHN0YXRlLT5wYXN0ID0gMDsKICAgICByZXR1cm4gYzsKZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYi9nendyaXRlLmMgYi9Nb2R1bGVzL3psaWIvZ3p3cml0ZS5jCmluZGV4IGFhNzY3ZmIuLmM3YjU2NTEgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYi9nendyaXRlLmMKKysrIGIvTW9kdWxlcy96bGliL2d6d3JpdGUuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIGd6d3JpdGUuYyAtLSB6bGliIGZ1bmN0aW9ucyBmb3Igd3JpdGluZyBnemlwIGZpbGVzCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMTAsIDIwMTEsIDIwMTIsIDIwMTMgTWFyayBBZGxlcgorICogQ29weXJpZ2h0IChDKSAyMDA0LTIwMTcgTWFyayBBZGxlcgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKQEAgLTksMTcgKzksMTkgQEAKIGxvY2FsIGludCBnel9pbml0IE9GKChnel9zdGF0ZXApKTsKIGxvY2FsIGludCBnel9jb21wIE9GKChnel9zdGF0ZXAsIGludCkpOwogbG9jYWwgaW50IGd6X3plcm8gT0YoKGd6X3N0YXRlcCwgel9vZmY2NF90KSk7Citsb2NhbCB6X3NpemVfdCBnel93cml0ZSBPRigoZ3pfc3RhdGVwLCB2b2lkcGMsIHpfc2l6ZV90KSk7CiAKIC8qIEluaXRpYWxpemUgc3RhdGUgZm9yIHdyaXRpbmcgYSBnemlwIGZpbGUuICBNYXJrIGluaXRpYWxpemF0aW9uIGJ5IHNldHRpbmcKLSAgIHN0YXRlLT5zaXplIHRvIG5vbi16ZXJvLiAgUmV0dXJuIC0xIG9uIGZhaWx1cmUgb3IgMCBvbiBzdWNjZXNzLiAqLworICAgc3RhdGUtPnNpemUgdG8gbm9uLXplcm8uICBSZXR1cm4gLTEgb24gYSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLCBvciAwIG9uCisgICBzdWNjZXNzLiAqLwogbG9jYWwgaW50IGd6X2luaXQoc3RhdGUpCiAgICAgZ3pfc3RhdGVwIHN0YXRlOwogewogICAgIGludCByZXQ7CiAgICAgel9zdHJlYW1wIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKIAotICAgIC8qIGFsbG9jYXRlIGlucHV0IGJ1ZmZlciAqLwotICAgIHN0YXRlLT5pbiA9ICh1bnNpZ25lZCBjaGFyICopbWFsbG9jKHN0YXRlLT53YW50KTsKKyAgICAvKiBhbGxvY2F0ZSBpbnB1dCBidWZmZXIgKGRvdWJsZSBzaXplIGZvciBnenByaW50ZikgKi8KKyAgICBzdGF0ZS0+aW4gPSAodW5zaWduZWQgY2hhciAqKW1hbGxvYyhzdGF0ZS0+d2FudCA8PCAxKTsKICAgICBpZiAoc3RhdGUtPmluID09IE5VTEwpIHsKICAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfTUVNX0VSUk9SLCAib3V0IG9mIG1lbW9yeSIpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC00Nyw2ICs0OSw3IEBACiAgICAgICAgICAgICBnel9lcnJvcihzdGF0ZSwgWl9NRU1fRVJST1IsICJvdXQgb2YgbWVtb3J5Iik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KKyAgICAgICAgc3RybS0+bmV4dF9pbiA9IE5VTEw7CiAgICAgfQogCiAgICAgLyogbWFyayBzdGF0ZSBhcyBpbml0aWFsaXplZCAqLwpAQCAtNjIsMTcgKzY1LDE3IEBACiB9CiAKIC8qIENvbXByZXNzIHdoYXRldmVyIGlzIGF0IGF2YWlsX2luIGFuZCBuZXh0X2luIGFuZCB3cml0ZSB0byB0aGUgb3V0cHV0IGZpbGUuCi0gICBSZXR1cm4gLTEgaWYgdGhlcmUgaXMgYW4gZXJyb3Igd3JpdGluZyB0byB0aGUgb3V0cHV0IGZpbGUsIG90aGVyd2lzZSAwLgotICAgZmx1c2ggaXMgYXNzdW1lZCB0byBiZSBhIHZhbGlkIGRlZmxhdGUoKSBmbHVzaCB2YWx1ZS4gIElmIGZsdXNoIGlzIFpfRklOSVNILAotICAgdGhlbiB0aGUgZGVmbGF0ZSgpIHN0YXRlIGlzIHJlc2V0IHRvIHN0YXJ0IGEgbmV3IGd6aXAgc3RyZWFtLiAgSWYgZ3otPmRpcmVjdAotICAgaXMgdHJ1ZSwgdGhlbiBzaW1wbHkgd3JpdGUgdG8gdGhlIG91dHB1dCBmaWxlIHdpdGhvdXQgY29tcHJlc3NpbmcsIGFuZAotICAgaWdub3JlIGZsdXNoLiAqLworICAgUmV0dXJuIC0xIGlmIHRoZXJlIGlzIGFuIGVycm9yIHdyaXRpbmcgdG8gdGhlIG91dHB1dCBmaWxlIG9yIGlmIGd6X2luaXQoKQorICAgZmFpbHMgdG8gYWxsb2NhdGUgbWVtb3J5LCBvdGhlcndpc2UgMC4gIGZsdXNoIGlzIGFzc3VtZWQgdG8gYmUgYSB2YWxpZAorICAgZGVmbGF0ZSgpIGZsdXNoIHZhbHVlLiAgSWYgZmx1c2ggaXMgWl9GSU5JU0gsIHRoZW4gdGhlIGRlZmxhdGUoKSBzdGF0ZSBpcworICAgcmVzZXQgdG8gc3RhcnQgYSBuZXcgZ3ppcCBzdHJlYW0uICBJZiBnei0+ZGlyZWN0IGlzIHRydWUsIHRoZW4gc2ltcGx5IHdyaXRlCisgICB0byB0aGUgb3V0cHV0IGZpbGUgd2l0aG91dCBjb21wcmVzc2luZywgYW5kIGlnbm9yZSBmbHVzaC4gKi8KIGxvY2FsIGludCBnel9jb21wKHN0YXRlLCBmbHVzaCkKICAgICBnel9zdGF0ZXAgc3RhdGU7CiAgICAgaW50IGZsdXNoOwogewotICAgIGludCByZXQsIGdvdDsKLSAgICB1bnNpZ25lZCBoYXZlOworICAgIGludCByZXQsIHdyaXQ7CisgICAgdW5zaWduZWQgaGF2ZSwgcHV0LCBtYXggPSAoKHVuc2lnbmVkKS0xID4+IDIpICsgMTsKICAgICB6X3N0cmVhbXAgc3RybSA9ICYoc3RhdGUtPnN0cm0pOwogCiAgICAgLyogYWxsb2NhdGUgbWVtb3J5IGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgdGhyb3VnaCAqLwpAQCAtODEsMTIgKzg0LDE2IEBACiAKICAgICAvKiB3cml0ZSBkaXJlY3RseSBpZiByZXF1ZXN0ZWQgKi8KICAgICBpZiAoc3RhdGUtPmRpcmVjdCkgewotICAgICAgICBnb3QgPSB3cml0ZShzdGF0ZS0+ZmQsIHN0cm0tPm5leHRfaW4sIHN0cm0tPmF2YWlsX2luKTsKLSAgICAgICAgaWYgKGdvdCA8IDAgfHwgKHVuc2lnbmVkKWdvdCAhPSBzdHJtLT5hdmFpbF9pbikgewotICAgICAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfRVJSTk8sIHpzdHJlcnJvcigpKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgd2hpbGUgKHN0cm0tPmF2YWlsX2luKSB7CisgICAgICAgICAgICBwdXQgPSBzdHJtLT5hdmFpbF9pbiA+IG1heCA/IG1heCA6IHN0cm0tPmF2YWlsX2luOworICAgICAgICAgICAgd3JpdCA9IHdyaXRlKHN0YXRlLT5mZCwgc3RybS0+bmV4dF9pbiwgcHV0KTsKKyAgICAgICAgICAgIGlmICh3cml0IDwgMCkgeworICAgICAgICAgICAgICAgIGd6X2Vycm9yKHN0YXRlLCBaX0VSUk5PLCB6c3RyZXJyb3IoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RybS0+YXZhaWxfaW4gLT0gKHVuc2lnbmVkKXdyaXQ7CisgICAgICAgICAgICBzdHJtLT5uZXh0X2luICs9IHdyaXQ7CiAgICAgICAgIH0KLSAgICAgICAgc3RybS0+YXZhaWxfaW4gPSAwOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTk3LDE3ICsxMDQsMjEgQEAKICAgICAgICAgICAgZG9pbmcgWl9GSU5JU0ggdGhlbiBkb24ndCB3cml0ZSB1bnRpbCB3ZSBnZXQgdG8gWl9TVFJFQU1fRU5EICovCiAgICAgICAgIGlmIChzdHJtLT5hdmFpbF9vdXQgPT0gMCB8fCAoZmx1c2ggIT0gWl9OT19GTFVTSCAmJgogICAgICAgICAgICAgKGZsdXNoICE9IFpfRklOSVNIIHx8IHJldCA9PSBaX1NUUkVBTV9FTkQpKSkgewotICAgICAgICAgICAgaGF2ZSA9ICh1bnNpZ25lZCkoc3RybS0+bmV4dF9vdXQgLSBzdGF0ZS0+eC5uZXh0KTsKLSAgICAgICAgICAgIGlmIChoYXZlICYmICgoZ290ID0gd3JpdGUoc3RhdGUtPmZkLCBzdGF0ZS0+eC5uZXh0LCBoYXZlKSkgPCAwIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkKWdvdCAhPSBoYXZlKSkgewotICAgICAgICAgICAgICAgIGd6X2Vycm9yKHN0YXRlLCBaX0VSUk5PLCB6c3RyZXJyb3IoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgd2hpbGUgKHN0cm0tPm5leHRfb3V0ID4gc3RhdGUtPngubmV4dCkgeworICAgICAgICAgICAgICAgIHB1dCA9IHN0cm0tPm5leHRfb3V0IC0gc3RhdGUtPngubmV4dCA+IChpbnQpbWF4ID8gbWF4IDoKKyAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQpKHN0cm0tPm5leHRfb3V0IC0gc3RhdGUtPngubmV4dCk7CisgICAgICAgICAgICAgICAgd3JpdCA9IHdyaXRlKHN0YXRlLT5mZCwgc3RhdGUtPngubmV4dCwgcHV0KTsKKyAgICAgICAgICAgICAgICBpZiAod3JpdCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfRVJSTk8sIHpzdHJlcnJvcigpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGF0ZS0+eC5uZXh0ICs9IHdyaXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoc3RybS0+YXZhaWxfb3V0ID09IDApIHsKICAgICAgICAgICAgICAgICBzdHJtLT5hdmFpbF9vdXQgPSBzdGF0ZS0+c2l6ZTsKICAgICAgICAgICAgICAgICBzdHJtLT5uZXh0X291dCA9IHN0YXRlLT5vdXQ7CisgICAgICAgICAgICAgICAgc3RhdGUtPngubmV4dCA9IHN0YXRlLT5vdXQ7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdGF0ZS0+eC5uZXh0ID0gc3RybS0+bmV4dF9vdXQ7CiAgICAgICAgIH0KIAogICAgICAgICAvKiBjb21wcmVzcyAqLwpAQCAtMTI5LDcgKzE0MCw4IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKLS8qIENvbXByZXNzIGxlbiB6ZXJvcyB0byBvdXRwdXQuICBSZXR1cm4gLTEgb24gZXJyb3IsIDAgb24gc3VjY2Vzcy4gKi8KKy8qIENvbXByZXNzIGxlbiB6ZXJvcyB0byBvdXRwdXQuICBSZXR1cm4gLTEgb24gYSB3cml0ZSBlcnJvciBvciBtZW1vcnkKKyAgIGFsbG9jYXRpb24gZmFpbHVyZSBieSBnel9jb21wKCksIG9yIDAgb24gc3VjY2Vzcy4gKi8KIGxvY2FsIGludCBnel96ZXJvKHN0YXRlLCBsZW4pCiAgICAgZ3pfc3RhdGVwIHN0YXRlOwogICAgIHpfb2ZmNjRfdCBsZW47CkBAIC0xNjEsMzIgKzE3MywxNCBAQAogICAgIHJldHVybiAwOwogfQogCi0vKiAtLSBzZWUgemxpYi5oIC0tICovCi1pbnQgWkVYUE9SVCBnendyaXRlKGZpbGUsIGJ1ZiwgbGVuKQotICAgIGd6RmlsZSBmaWxlOwotICAgIHZvaWRwYyBidWY7Ci0gICAgdW5zaWduZWQgbGVuOwotewotICAgIHVuc2lnbmVkIHB1dCA9IGxlbjsKKy8qIFdyaXRlIGxlbiBieXRlcyBmcm9tIGJ1ZiB0byBmaWxlLiAgUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbi4gIElmCisgICB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgbGVzcyB0aGFuIGxlbiwgdGhlbiB0aGVyZSB3YXMgYW4gZXJyb3IuICovCitsb2NhbCB6X3NpemVfdCBnel93cml0ZShzdGF0ZSwgYnVmLCBsZW4pCiAgICAgZ3pfc3RhdGVwIHN0YXRlOwotICAgIHpfc3RyZWFtcCBzdHJtOwotCi0gICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSAqLwotICAgIGlmIChmaWxlID09IE5VTEwpCi0gICAgICAgIHJldHVybiAwOwotICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOwotICAgIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKLQotICAgIC8qIGNoZWNrIHRoYXQgd2UncmUgd3JpdGluZyBhbmQgdGhhdCB0aGVyZSdzIG5vIGVycm9yICovCi0gICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1dSSVRFIHx8IHN0YXRlLT5lcnIgIT0gWl9PSykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvKiBzaW5jZSBhbiBpbnQgaXMgcmV0dXJuZWQsIG1ha2Ugc3VyZSBsZW4gZml0cyBpbiBvbmUsIG90aGVyd2lzZSByZXR1cm4KLSAgICAgICB3aXRoIGFuIGVycm9yICh0aGlzIGF2b2lkcyB0aGUgZmxhdyBpbiB0aGUgaW50ZXJmYWNlKSAqLwotICAgIGlmICgoaW50KWxlbiA8IDApIHsKLSAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfREFUQV9FUlJPUiwgInJlcXVlc3RlZCBsZW5ndGggZG9lcyBub3QgZml0IGluIGludCIpOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9CisgICAgdm9pZHBjIGJ1ZjsKKyAgICB6X3NpemVfdCBsZW47Cit7CisgICAgel9zaXplX3QgcHV0ID0gbGVuOwogCiAgICAgLyogaWYgbGVuIGlzIHplcm8sIGF2b2lkIHVubmVjZXNzYXJ5IG9wZXJhdGlvbnMgKi8KICAgICBpZiAobGVuID09IDApCkBAIC0yMDksMTQgKzIwMywxNSBAQAogICAgICAgICBkbyB7CiAgICAgICAgICAgICB1bnNpZ25lZCBoYXZlLCBjb3B5OwogCi0gICAgICAgICAgICBpZiAoc3RybS0+YXZhaWxfaW4gPT0gMCkKLSAgICAgICAgICAgICAgICBzdHJtLT5uZXh0X2luID0gc3RhdGUtPmluOwotICAgICAgICAgICAgaGF2ZSA9ICh1bnNpZ25lZCkoKHN0cm0tPm5leHRfaW4gKyBzdHJtLT5hdmFpbF9pbikgLSBzdGF0ZS0+aW4pOworICAgICAgICAgICAgaWYgKHN0YXRlLT5zdHJtLmF2YWlsX2luID09IDApCisgICAgICAgICAgICAgICAgc3RhdGUtPnN0cm0ubmV4dF9pbiA9IHN0YXRlLT5pbjsKKyAgICAgICAgICAgIGhhdmUgPSAodW5zaWduZWQpKChzdGF0ZS0+c3RybS5uZXh0X2luICsgc3RhdGUtPnN0cm0uYXZhaWxfaW4pIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5pbik7CiAgICAgICAgICAgICBjb3B5ID0gc3RhdGUtPnNpemUgLSBoYXZlOwogICAgICAgICAgICAgaWYgKGNvcHkgPiBsZW4pCiAgICAgICAgICAgICAgICAgY29weSA9IGxlbjsKICAgICAgICAgICAgIG1lbWNweShzdGF0ZS0+aW4gKyBoYXZlLCBidWYsIGNvcHkpOwotICAgICAgICAgICAgc3RybS0+YXZhaWxfaW4gKz0gY29weTsKKyAgICAgICAgICAgIHN0YXRlLT5zdHJtLmF2YWlsX2luICs9IGNvcHk7CiAgICAgICAgICAgICBzdGF0ZS0+eC5wb3MgKz0gY29weTsKICAgICAgICAgICAgIGJ1ZiA9IChjb25zdCBjaGFyICopYnVmICsgY29weTsKICAgICAgICAgICAgIGxlbiAtPSBjb3B5OwpAQCAtMjI2LDE5ICsyMjEsODMgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIC8qIGNvbnN1bWUgd2hhdGV2ZXIncyBsZWZ0IGluIHRoZSBpbnB1dCBidWZmZXIgKi8KLSAgICAgICAgaWYgKHN0cm0tPmF2YWlsX2luICYmIGd6X2NvbXAoc3RhdGUsIFpfTk9fRkxVU0gpID09IC0xKQorICAgICAgICBpZiAoc3RhdGUtPnN0cm0uYXZhaWxfaW4gJiYgZ3pfY29tcChzdGF0ZSwgWl9OT19GTFVTSCkgPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAogICAgICAgICAvKiBkaXJlY3RseSBjb21wcmVzcyB1c2VyIGJ1ZmZlciB0byBmaWxlICovCi0gICAgICAgIHN0cm0tPmF2YWlsX2luID0gbGVuOwotICAgICAgICBzdHJtLT5uZXh0X2luID0gKHpfY29uc3QgQnl0ZWYgKilidWY7Ci0gICAgICAgIHN0YXRlLT54LnBvcyArPSBsZW47Ci0gICAgICAgIGlmIChnel9jb21wKHN0YXRlLCBaX05PX0ZMVVNIKSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBzdGF0ZS0+c3RybS5uZXh0X2luID0gKHpfY29uc3QgQnl0ZWYgKilidWY7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIG4gPSAodW5zaWduZWQpLTE7CisgICAgICAgICAgICBpZiAobiA+IGxlbikKKyAgICAgICAgICAgICAgICBuID0gbGVuOworICAgICAgICAgICAgc3RhdGUtPnN0cm0uYXZhaWxfaW4gPSBuOworICAgICAgICAgICAgc3RhdGUtPngucG9zICs9IG47CisgICAgICAgICAgICBpZiAoZ3pfY29tcChzdGF0ZSwgWl9OT19GTFVTSCkgPT0gLTEpCisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBsZW4gLT0gbjsKKyAgICAgICAgfSB3aGlsZSAobGVuKTsKICAgICB9CiAKLSAgICAvKiBpbnB1dCB3YXMgYWxsIGJ1ZmZlcmVkIG9yIGNvbXByZXNzZWQgKHB1dCB3aWxsIGZpdCBpbiBpbnQpICovCi0gICAgcmV0dXJuIChpbnQpcHV0OworICAgIC8qIGlucHV0IHdhcyBhbGwgYnVmZmVyZWQgb3IgY29tcHJlc3NlZCAqLworICAgIHJldHVybiBwdXQ7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK2ludCBaRVhQT1JUIGd6d3JpdGUoZmlsZSwgYnVmLCBsZW4pCisgICAgZ3pGaWxlIGZpbGU7CisgICAgdm9pZHBjIGJ1ZjsKKyAgICB1bnNpZ25lZCBsZW47Cit7CisgICAgZ3pfc3RhdGVwIHN0YXRlOworCisgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSAqLworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSB3cml0aW5nIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gZXJyb3IgKi8KKyAgICBpZiAoc3RhdGUtPm1vZGUgIT0gR1pfV1JJVEUgfHwgc3RhdGUtPmVyciAhPSBaX09LKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIHNpbmNlIGFuIGludCBpcyByZXR1cm5lZCwgbWFrZSBzdXJlIGxlbiBmaXRzIGluIG9uZSwgb3RoZXJ3aXNlIHJldHVybgorICAgICAgIHdpdGggYW4gZXJyb3IgKHRoaXMgYXZvaWRzIGEgZmxhdyBpbiB0aGUgaW50ZXJmYWNlKSAqLworICAgIGlmICgoaW50KWxlbiA8IDApIHsKKyAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfREFUQV9FUlJPUiwgInJlcXVlc3RlZCBsZW5ndGggZG9lcyBub3QgZml0IGluIGludCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiB3cml0ZSBsZW4gYnl0ZXMgZnJvbSBidWYgKHRoZSByZXR1cm4gdmFsdWUgd2lsbCBmaXQgaW4gYW4gaW50KSAqLworICAgIHJldHVybiAoaW50KWd6X3dyaXRlKHN0YXRlLCBidWYsIGxlbik7Cit9CisKKy8qIC0tIHNlZSB6bGliLmggLS0gKi8KK3pfc2l6ZV90IFpFWFBPUlQgZ3pmd3JpdGUoYnVmLCBzaXplLCBuaXRlbXMsIGZpbGUpCisgICAgdm9pZHBjIGJ1ZjsKKyAgICB6X3NpemVfdCBzaXplOworICAgIHpfc2l6ZV90IG5pdGVtczsKKyAgICBnekZpbGUgZmlsZTsKK3sKKyAgICB6X3NpemVfdCBsZW47CisgICAgZ3pfc3RhdGVwIHN0YXRlOworCisgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSAqLworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOworCisgICAgLyogY2hlY2sgdGhhdCB3ZSdyZSB3cml0aW5nIGFuZCB0aGF0IHRoZXJlJ3Mgbm8gZXJyb3IgKi8KKyAgICBpZiAoc3RhdGUtPm1vZGUgIT0gR1pfV1JJVEUgfHwgc3RhdGUtPmVyciAhPSBaX09LKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIGNvbXB1dGUgYnl0ZXMgdG8gcmVhZCAtLSBlcnJvciBvbiBvdmVyZmxvdyAqLworICAgIGxlbiA9IG5pdGVtcyAqIHNpemU7CisgICAgaWYgKHNpemUgJiYgbGVuIC8gc2l6ZSAhPSBuaXRlbXMpIHsKKyAgICAgICAgZ3pfZXJyb3Ioc3RhdGUsIFpfU1RSRUFNX0VSUk9SLCAicmVxdWVzdCBkb2VzIG5vdCBmaXQgaW4gYSBzaXplX3QiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyogd3JpdGUgbGVuIGJ5dGVzIHRvIGJ1ZiwgcmV0dXJuIHRoZSBudW1iZXIgb2YgZnVsbCBpdGVtcyB3cml0dGVuICovCisgICAgcmV0dXJuIGxlbiA/IGd6X3dyaXRlKHN0YXRlLCBidWYsIGxlbikgLyBzaXplIDogMDsKIH0KIAogLyogLS0gc2VlIHpsaWIuaCAtLSAqLwpAQCAtMjc1LDcgKzMzNCw3IEBACiAgICAgICAgICAgICBzdHJtLT5uZXh0X2luID0gc3RhdGUtPmluOwogICAgICAgICBoYXZlID0gKHVuc2lnbmVkKSgoc3RybS0+bmV4dF9pbiArIHN0cm0tPmF2YWlsX2luKSAtIHN0YXRlLT5pbik7CiAgICAgICAgIGlmIChoYXZlIDwgc3RhdGUtPnNpemUpIHsKLSAgICAgICAgICAgIHN0YXRlLT5pbltoYXZlXSA9IGM7CisgICAgICAgICAgICBzdGF0ZS0+aW5baGF2ZV0gPSAodW5zaWduZWQgY2hhciljOwogICAgICAgICAgICAgc3RybS0+YXZhaWxfaW4rKzsKICAgICAgICAgICAgIHN0YXRlLT54LnBvcysrOwogICAgICAgICAgICAgcmV0dXJuIGMgJiAweGZmOwpAQCAtMjgzLDggKzM0Miw4IEBACiAgICAgfQogCiAgICAgLyogbm8gcm9vbSBpbiBidWZmZXIgb3Igbm90IGluaXRpYWxpemVkLCB1c2UgZ3pfd3JpdGUoKSAqLwotICAgIGJ1ZlswXSA9IGM7Ci0gICAgaWYgKGd6d3JpdGUoZmlsZSwgYnVmLCAxKSAhPSAxKQorICAgIGJ1ZlswXSA9ICh1bnNpZ25lZCBjaGFyKWM7CisgICAgaWYgKGd6X3dyaXRlKHN0YXRlLCBidWYsIDEpICE9IDEpCiAgICAgICAgIHJldHVybiAtMTsKICAgICByZXR1cm4gYyAmIDB4ZmY7CiB9CkBAIC0yOTUsMTEgKzM1NCwyMSBAQAogICAgIGNvbnN0IGNoYXIgKnN0cjsKIHsKICAgICBpbnQgcmV0OwotICAgIHVuc2lnbmVkIGxlbjsKKyAgICB6X3NpemVfdCBsZW47CisgICAgZ3pfc3RhdGVwIHN0YXRlOworCisgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSAqLworICAgIGlmIChmaWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBzdGF0ZSA9IChnel9zdGF0ZXApZmlsZTsKKworICAgIC8qIGNoZWNrIHRoYXQgd2UncmUgd3JpdGluZyBhbmQgdGhhdCB0aGVyZSdzIG5vIGVycm9yICovCisgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1dSSVRFIHx8IHN0YXRlLT5lcnIgIT0gWl9PSykKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgLyogd3JpdGUgc3RyaW5nICovCi0gICAgbGVuID0gKHVuc2lnbmVkKXN0cmxlbihzdHIpOwotICAgIHJldCA9IGd6d3JpdGUoZmlsZSwgc3RyLCBsZW4pOworICAgIGxlbiA9IHN0cmxlbihzdHIpOworICAgIHJldCA9IGd6X3dyaXRlKHN0YXRlLCBzdHIsIGxlbik7CiAgICAgcmV0dXJuIHJldCA9PSAwICYmIGxlbiAhPSAwID8gLTEgOiByZXQ7CiB9CiAKQEAgLTMwOSw2MyArMzc4LDczIEBACiAvKiAtLSBzZWUgemxpYi5oIC0tICovCiBpbnQgWkVYUE9SVFZBIGd6dnByaW50ZihnekZpbGUgZmlsZSwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhKQogewotICAgIGludCBzaXplLCBsZW47CisgICAgaW50IGxlbjsKKyAgICB1bnNpZ25lZCBsZWZ0OworICAgIGNoYXIgKm5leHQ7CiAgICAgZ3pfc3RhdGVwIHN0YXRlOwogICAgIHpfc3RyZWFtcCBzdHJtOwogCiAgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSAqLwogICAgIGlmIChmaWxlID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOwogICAgIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKIAogICAgIC8qIGNoZWNrIHRoYXQgd2UncmUgd3JpdGluZyBhbmQgdGhhdCB0aGVyZSdzIG5vIGVycm9yICovCiAgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1dSSVRFIHx8IHN0YXRlLT5lcnIgIT0gWl9PSykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKIAogICAgIC8qIG1ha2Ugc3VyZSB3ZSBoYXZlIHNvbWUgYnVmZmVyIHNwYWNlICovCiAgICAgaWYgKHN0YXRlLT5zaXplID09IDAgJiYgZ3pfaW5pdChzdGF0ZSkgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGUtPmVycjsKIAogICAgIC8qIGNoZWNrIGZvciBzZWVrIHJlcXVlc3QgKi8KICAgICBpZiAoc3RhdGUtPnNlZWspIHsKICAgICAgICAgc3RhdGUtPnNlZWsgPSAwOwogICAgICAgICBpZiAoZ3pfemVybyhzdGF0ZSwgc3RhdGUtPnNraXApID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gc3RhdGUtPmVycjsKICAgICB9CiAKLSAgICAvKiBjb25zdW1lIHdoYXRldmVyJ3MgbGVmdCBpbiB0aGUgaW5wdXQgYnVmZmVyICovCi0gICAgaWYgKHN0cm0tPmF2YWlsX2luICYmIGd6X2NvbXAoc3RhdGUsIFpfTk9fRkxVU0gpID09IC0xKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8qIGRvIHRoZSBwcmludGYoKSBpbnRvIHRoZSBpbnB1dCBidWZmZXIsIHB1dCBsZW5ndGggaW4gbGVuICovCi0gICAgc2l6ZSA9IChpbnQpKHN0YXRlLT5zaXplKTsKLSAgICBzdGF0ZS0+aW5bc2l6ZSAtIDFdID0gMDsKKyAgICAvKiBkbyB0aGUgcHJpbnRmKCkgaW50byB0aGUgaW5wdXQgYnVmZmVyLCBwdXQgbGVuZ3RoIGluIGxlbiAtLSB0aGUgaW5wdXQKKyAgICAgICBidWZmZXIgaXMgZG91YmxlLXNpemVkIGp1c3QgZm9yIHRoaXMgZnVuY3Rpb24sIHNvIHRoZXJlIGlzIGd1YXJhbnRlZWQgdG8KKyAgICAgICBiZSBzdGF0ZS0+c2l6ZSBieXRlcyBhdmFpbGFibGUgYWZ0ZXIgdGhlIGN1cnJlbnQgY29udGVudHMgKi8KKyAgICBpZiAoc3RybS0+YXZhaWxfaW4gPT0gMCkKKyAgICAgICAgc3RybS0+bmV4dF9pbiA9IHN0YXRlLT5pbjsKKyAgICBuZXh0ID0gKGNoYXIgKikoc3RhdGUtPmluICsgKHN0cm0tPm5leHRfaW4gLSBzdGF0ZS0+aW4pICsgc3RybS0+YXZhaWxfaW4pOworICAgIG5leHRbc3RhdGUtPnNpemUgLSAxXSA9IDA7CiAjaWZkZWYgTk9fdnNucHJpbnRmCiAjICBpZmRlZiBIQVNfdnNwcmludGZfdm9pZAotICAgICh2b2lkKXZzcHJpbnRmKChjaGFyICopKHN0YXRlLT5pbiksIGZvcm1hdCwgdmEpOwotICAgIGZvciAobGVuID0gMDsgbGVuIDwgc2l6ZTsgbGVuKyspCi0gICAgICAgIGlmIChzdGF0ZS0+aW5bbGVuXSA9PSAwKSBicmVhazsKKyAgICAodm9pZCl2c3ByaW50ZihuZXh0LCBmb3JtYXQsIHZhKTsKKyAgICBmb3IgKGxlbiA9IDA7IGxlbiA8IHN0YXRlLT5zaXplOyBsZW4rKykKKyAgICAgICAgaWYgKG5leHRbbGVuXSA9PSAwKSBicmVhazsKICMgIGVsc2UKLSAgICBsZW4gPSB2c3ByaW50ZigoY2hhciAqKShzdGF0ZS0+aW4pLCBmb3JtYXQsIHZhKTsKKyAgICBsZW4gPSB2c3ByaW50ZihuZXh0LCBmb3JtYXQsIHZhKTsKICMgIGVuZGlmCiAjZWxzZQogIyAgaWZkZWYgSEFTX3ZzbnByaW50Zl92b2lkCi0gICAgKHZvaWQpdnNucHJpbnRmKChjaGFyICopKHN0YXRlLT5pbiksIHNpemUsIGZvcm1hdCwgdmEpOwotICAgIGxlbiA9IHN0cmxlbigoY2hhciAqKShzdGF0ZS0+aW4pKTsKKyAgICAodm9pZCl2c25wcmludGYobmV4dCwgc3RhdGUtPnNpemUsIGZvcm1hdCwgdmEpOworICAgIGxlbiA9IHN0cmxlbihuZXh0KTsKICMgIGVsc2UKLSAgICBsZW4gPSB2c25wcmludGYoKGNoYXIgKikoc3RhdGUtPmluKSwgc2l6ZSwgZm9ybWF0LCB2YSk7CisgICAgbGVuID0gdnNucHJpbnRmKG5leHQsIHN0YXRlLT5zaXplLCBmb3JtYXQsIHZhKTsKICMgIGVuZGlmCiAjZW5kaWYKIAogICAgIC8qIGNoZWNrIHRoYXQgcHJpbnRmKCkgcmVzdWx0cyBmaXQgaW4gYnVmZmVyICovCi0gICAgaWYgKGxlbiA8PSAwIHx8IGxlbiA+PSAoaW50KXNpemUgfHwgc3RhdGUtPmluW3NpemUgLSAxXSAhPSAwKQorICAgIGlmIChsZW4gPT0gMCB8fCAodW5zaWduZWQpbGVuID49IHN0YXRlLT5zaXplIHx8IG5leHRbc3RhdGUtPnNpemUgLSAxXSAhPSAwKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIC8qIHVwZGF0ZSBidWZmZXIgYW5kIHBvc2l0aW9uLCBkZWZlciBjb21wcmVzc2lvbiB1bnRpbCBuZWVkZWQgKi8KLSAgICBzdHJtLT5hdmFpbF9pbiA9ICh1bnNpZ25lZClsZW47Ci0gICAgc3RybS0+bmV4dF9pbiA9IHN0YXRlLT5pbjsKKyAgICAvKiB1cGRhdGUgYnVmZmVyIGFuZCBwb3NpdGlvbiwgY29tcHJlc3MgZmlyc3QgaGFsZiBpZiBwYXN0IHRoYXQgKi8KKyAgICBzdHJtLT5hdmFpbF9pbiArPSAodW5zaWduZWQpbGVuOwogICAgIHN0YXRlLT54LnBvcyArPSBsZW47CisgICAgaWYgKHN0cm0tPmF2YWlsX2luID49IHN0YXRlLT5zaXplKSB7CisgICAgICAgIGxlZnQgPSBzdHJtLT5hdmFpbF9pbiAtIHN0YXRlLT5zaXplOworICAgICAgICBzdHJtLT5hdmFpbF9pbiA9IHN0YXRlLT5zaXplOworICAgICAgICBpZiAoZ3pfY29tcChzdGF0ZSwgWl9OT19GTFVTSCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gc3RhdGUtPmVycjsKKyAgICAgICAgbWVtY3B5KHN0YXRlLT5pbiwgc3RhdGUtPmluICsgc3RhdGUtPnNpemUsIGxlZnQpOworICAgICAgICBzdHJtLT5uZXh0X2luID0gc3RhdGUtPmluOworICAgICAgICBzdHJtLT5hdmFpbF9pbiA9IGxlZnQ7CisgICAgfQogICAgIHJldHVybiBsZW47CiB9CiAKQEAgLTM5MCw3MyArNDY5LDgyIEBACiAgICAgaW50IGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCwKICAgICAgICAgYTExLCBhMTIsIGExMywgYTE0LCBhMTUsIGExNiwgYTE3LCBhMTgsIGExOSwgYTIwOwogewotICAgIGludCBzaXplLCBsZW47CisgICAgdW5zaWduZWQgbGVuLCBsZWZ0OworICAgIGNoYXIgKm5leHQ7CiAgICAgZ3pfc3RhdGVwIHN0YXRlOwogICAgIHpfc3RyZWFtcCBzdHJtOwogCiAgICAgLyogZ2V0IGludGVybmFsIHN0cnVjdHVyZSAqLwogICAgIGlmIChmaWxlID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIHN0YXRlID0gKGd6X3N0YXRlcClmaWxlOwogICAgIHN0cm0gPSAmKHN0YXRlLT5zdHJtKTsKIAogICAgIC8qIGNoZWNrIHRoYXQgY2FuIHJlYWxseSBwYXNzIHBvaW50ZXIgaW4gaW50cyAqLwogICAgIGlmIChzaXplb2YoaW50KSAhPSBzaXplb2Yodm9pZCAqKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKIAogICAgIC8qIGNoZWNrIHRoYXQgd2UncmUgd3JpdGluZyBhbmQgdGhhdCB0aGVyZSdzIG5vIGVycm9yICovCiAgICAgaWYgKHN0YXRlLT5tb2RlICE9IEdaX1dSSVRFIHx8IHN0YXRlLT5lcnIgIT0gWl9PSykKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKIAogICAgIC8qIG1ha2Ugc3VyZSB3ZSBoYXZlIHNvbWUgYnVmZmVyIHNwYWNlICovCiAgICAgaWYgKHN0YXRlLT5zaXplID09IDAgJiYgZ3pfaW5pdChzdGF0ZSkgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGUtPmVycm9yOwogCiAgICAgLyogY2hlY2sgZm9yIHNlZWsgcmVxdWVzdCAqLwogICAgIGlmIChzdGF0ZS0+c2VlaykgewogICAgICAgICBzdGF0ZS0+c2VlayA9IDA7CiAgICAgICAgIGlmIChnel96ZXJvKHN0YXRlLCBzdGF0ZS0+c2tpcCkgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZS0+ZXJyb3I7CiAgICAgfQogCi0gICAgLyogY29uc3VtZSB3aGF0ZXZlcidzIGxlZnQgaW4gdGhlIGlucHV0IGJ1ZmZlciAqLwotICAgIGlmIChzdHJtLT5hdmFpbF9pbiAmJiBnel9jb21wKHN0YXRlLCBaX05PX0ZMVVNIKSA9PSAtMSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvKiBkbyB0aGUgcHJpbnRmKCkgaW50byB0aGUgaW5wdXQgYnVmZmVyLCBwdXQgbGVuZ3RoIGluIGxlbiAqLwotICAgIHNpemUgPSAoaW50KShzdGF0ZS0+c2l6ZSk7Ci0gICAgc3RhdGUtPmluW3NpemUgLSAxXSA9IDA7CisgICAgLyogZG8gdGhlIHByaW50ZigpIGludG8gdGhlIGlucHV0IGJ1ZmZlciwgcHV0IGxlbmd0aCBpbiBsZW4gLS0gdGhlIGlucHV0CisgICAgICAgYnVmZmVyIGlzIGRvdWJsZS1zaXplZCBqdXN0IGZvciB0aGlzIGZ1bmN0aW9uLCBzbyB0aGVyZSBpcyBndWFyYW50ZWVkIHRvCisgICAgICAgYmUgc3RhdGUtPnNpemUgYnl0ZXMgYXZhaWxhYmxlIGFmdGVyIHRoZSBjdXJyZW50IGNvbnRlbnRzICovCisgICAgaWYgKHN0cm0tPmF2YWlsX2luID09IDApCisgICAgICAgIHN0cm0tPm5leHRfaW4gPSBzdGF0ZS0+aW47CisgICAgbmV4dCA9IChjaGFyICopKHN0cm0tPm5leHRfaW4gKyBzdHJtLT5hdmFpbF9pbik7CisgICAgbmV4dFtzdGF0ZS0+c2l6ZSAtIDFdID0gMDsKICNpZmRlZiBOT19zbnByaW50ZgogIyAgaWZkZWYgSEFTX3NwcmludGZfdm9pZAotICAgIHNwcmludGYoKGNoYXIgKikoc3RhdGUtPmluKSwgZm9ybWF0LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsCi0gICAgICAgICAgICBhOSwgYTEwLCBhMTEsIGExMiwgYTEzLCBhMTQsIGExNSwgYTE2LCBhMTcsIGExOCwgYTE5LCBhMjApOworICAgIHNwcmludGYobmV4dCwgZm9ybWF0LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyLAorICAgICAgICAgICAgYTEzLCBhMTQsIGExNSwgYTE2LCBhMTcsIGExOCwgYTE5LCBhMjApOwogICAgIGZvciAobGVuID0gMDsgbGVuIDwgc2l6ZTsgbGVuKyspCi0gICAgICAgIGlmIChzdGF0ZS0+aW5bbGVuXSA9PSAwKSBicmVhazsKKyAgICAgICAgaWYgKG5leHRbbGVuXSA9PSAwKQorICAgICAgICAgICAgYnJlYWs7CiAjICBlbHNlCi0gICAgbGVuID0gc3ByaW50ZigoY2hhciAqKShzdGF0ZS0+aW4pLCBmb3JtYXQsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwKLSAgICAgICAgICAgICAgICAgIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTksIGEyMCk7CisgICAgbGVuID0gc3ByaW50ZihuZXh0LCBmb3JtYXQsIGExLCBhMiwgYTMsIGE0LCBhNSwgYTYsIGE3LCBhOCwgYTksIGExMCwgYTExLAorICAgICAgICAgICAgICAgICAgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTksIGEyMCk7CiAjICBlbmRpZgogI2Vsc2UKICMgIGlmZGVmIEhBU19zbnByaW50Zl92b2lkCi0gICAgc25wcmludGYoKGNoYXIgKikoc3RhdGUtPmluKSwgc2l6ZSwgZm9ybWF0LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsCi0gICAgICAgICAgICAgYTksIGExMCwgYTExLCBhMTIsIGExMywgYTE0LCBhMTUsIGExNiwgYTE3LCBhMTgsIGExOSwgYTIwKTsKLSAgICBsZW4gPSBzdHJsZW4oKGNoYXIgKikoc3RhdGUtPmluKSk7CisgICAgc25wcmludGYobmV4dCwgc3RhdGUtPnNpemUsIGZvcm1hdCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwgYTcsIGE4LCBhOSwKKyAgICAgICAgICAgICBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LCBhMTksIGEyMCk7CisgICAgbGVuID0gc3RybGVuKG5leHQpOwogIyAgZWxzZQotICAgIGxlbiA9IHNucHJpbnRmKChjaGFyICopKHN0YXRlLT5pbiksIHNpemUsIGZvcm1hdCwgYTEsIGEyLCBhMywgYTQsIGE1LCBhNiwKLSAgICAgICAgICAgICAgICAgICBhNywgYTgsIGE5LCBhMTAsIGExMSwgYTEyLCBhMTMsIGExNCwgYTE1LCBhMTYsIGExNywgYTE4LAotICAgICAgICAgICAgICAgICAgIGExOSwgYTIwKTsKKyAgICBsZW4gPSBzbnByaW50ZihuZXh0LCBzdGF0ZS0+c2l6ZSwgZm9ybWF0LCBhMSwgYTIsIGEzLCBhNCwgYTUsIGE2LCBhNywgYTgsCisgICAgICAgICAgICAgICAgICAgYTksIGExMCwgYTExLCBhMTIsIGExMywgYTE0LCBhMTUsIGExNiwgYTE3LCBhMTgsIGExOSwgYTIwKTsKICMgIGVuZGlmCiAjZW5kaWYKIAogICAgIC8qIGNoZWNrIHRoYXQgcHJpbnRmKCkgcmVzdWx0cyBmaXQgaW4gYnVmZmVyICovCi0gICAgaWYgKGxlbiA8PSAwIHx8IGxlbiA+PSAoaW50KXNpemUgfHwgc3RhdGUtPmluW3NpemUgLSAxXSAhPSAwKQorICAgIGlmIChsZW4gPT0gMCB8fCBsZW4gPj0gc3RhdGUtPnNpemUgfHwgbmV4dFtzdGF0ZS0+c2l6ZSAtIDFdICE9IDApCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgLyogdXBkYXRlIGJ1ZmZlciBhbmQgcG9zaXRpb24sIGRlZmVyIGNvbXByZXNzaW9uIHVudGlsIG5lZWRlZCAqLwotICAgIHN0cm0tPmF2YWlsX2luID0gKHVuc2lnbmVkKWxlbjsKLSAgICBzdHJtLT5uZXh0X2luID0gc3RhdGUtPmluOworICAgIC8qIHVwZGF0ZSBidWZmZXIgYW5kIHBvc2l0aW9uLCBjb21wcmVzcyBmaXJzdCBoYWxmIGlmIHBhc3QgdGhhdCAqLworICAgIHN0cm0tPmF2YWlsX2luICs9IGxlbjsKICAgICBzdGF0ZS0+eC5wb3MgKz0gbGVuOwotICAgIHJldHVybiBsZW47CisgICAgaWYgKHN0cm0tPmF2YWlsX2luID49IHN0YXRlLT5zaXplKSB7CisgICAgICAgIGxlZnQgPSBzdHJtLT5hdmFpbF9pbiAtIHN0YXRlLT5zaXplOworICAgICAgICBzdHJtLT5hdmFpbF9pbiA9IHN0YXRlLT5zaXplOworICAgICAgICBpZiAoZ3pfY29tcChzdGF0ZSwgWl9OT19GTFVTSCkgPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gc3RhdGUtPmVycjsKKyAgICAgICAgbWVtY3B5KHN0YXRlLT5pbiwgc3RhdGUtPmluICsgc3RhdGUtPnNpemUsIGxlZnQpOworICAgICAgICBzdHJtLT5uZXh0X2luID0gc3RhdGUtPmluOworICAgICAgICBzdHJtLT5hdmFpbF9pbiA9IGxlZnQ7CisgICAgfQorICAgIHJldHVybiAoaW50KWxlbjsKIH0KIAogI2VuZGlmCkBAIC00NzAsNyArNTU4LDcgQEAKIAogICAgIC8qIGdldCBpbnRlcm5hbCBzdHJ1Y3R1cmUgKi8KICAgICBpZiAoZmlsZSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICAgICBzdGF0ZSA9IChnel9zdGF0ZXApZmlsZTsKIAogICAgIC8qIGNoZWNrIHRoYXQgd2UncmUgd3JpdGluZyBhbmQgdGhhdCB0aGVyZSdzIG5vIGVycm9yICovCkBAIC00ODUsMTEgKzU3MywxMSBAQAogICAgIGlmIChzdGF0ZS0+c2VlaykgewogICAgICAgICBzdGF0ZS0+c2VlayA9IDA7CiAgICAgICAgIGlmIChnel96ZXJvKHN0YXRlLCBzdGF0ZS0+c2tpcCkgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICByZXR1cm4gc3RhdGUtPmVycjsKICAgICB9CiAKICAgICAvKiBjb21wcmVzcyByZW1haW5pbmcgZGF0YSB3aXRoIHJlcXVlc3RlZCBmbHVzaCAqLwotICAgIGd6X2NvbXAoc3RhdGUsIGZsdXNoKTsKKyAgICAodm9pZClnel9jb21wKHN0YXRlLCBmbHVzaCk7CiAgICAgcmV0dXJuIHN0YXRlLT5lcnI7CiB9CiAKQEAgLTUyMCwxMyArNjA4LDEzIEBACiAgICAgaWYgKHN0YXRlLT5zZWVrKSB7CiAgICAgICAgIHN0YXRlLT5zZWVrID0gMDsKICAgICAgICAgaWYgKGd6X3plcm8oc3RhdGUsIHN0YXRlLT5za2lwKSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0ZS0+ZXJyOwogICAgIH0KIAogICAgIC8qIGNoYW5nZSBjb21wcmVzc2lvbiBwYXJhbWV0ZXJzIGZvciBzdWJzZXF1ZW50IGlucHV0ICovCiAgICAgaWYgKHN0YXRlLT5zaXplKSB7CiAgICAgICAgIC8qIGZsdXNoIHByZXZpb3VzIGlucHV0IHdpdGggcHJldmlvdXMgcGFyYW1ldGVycyBiZWZvcmUgY2hhbmdpbmcgKi8KLSAgICAgICAgaWYgKHN0cm0tPmF2YWlsX2luICYmIGd6X2NvbXAoc3RhdGUsIFpfUEFSVElBTF9GTFVTSCkgPT0gLTEpCisgICAgICAgIGlmIChzdHJtLT5hdmFpbF9pbiAmJiBnel9jb21wKHN0YXRlLCBaX0JMT0NLKSA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBzdGF0ZS0+ZXJyOwogICAgICAgICBkZWZsYXRlUGFyYW1zKHN0cm0sIGxldmVsLCBzdHJhdGVneSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL2luZmJhY2suYyBiL01vZHVsZXMvemxpYi9pbmZiYWNrLmMKaW5kZXggZjM4MzNjMi4uNTk2NzllYyAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGliL2luZmJhY2suYworKysgYi9Nb2R1bGVzL3psaWIvaW5mYmFjay5jCkBAIC0xLDUgKzEsNSBAQAogLyogaW5mYmFjay5jIC0tIGluZmxhdGUgdXNpbmcgYSBjYWxsLWJhY2sgaW50ZXJmYWNlCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMSBNYXJrIEFkbGVyCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNiBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtNjEsNyArNjEsNyBAQAogICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogYWxsb2NhdGVkXG4iKSk7CiAgICAgc3RybS0+c3RhdGUgPSAoc3RydWN0IGludGVybmFsX3N0YXRlIEZBUiAqKXN0YXRlOwogICAgIHN0YXRlLT5kbWF4ID0gMzI3NjhVOwotICAgIHN0YXRlLT53Yml0cyA9IHdpbmRvd0JpdHM7CisgICAgc3RhdGUtPndiaXRzID0gKHVJbnQpd2luZG93Qml0czsKICAgICBzdGF0ZS0+d3NpemUgPSAxVSA8PCB3aW5kb3dCaXRzOwogICAgIHN0YXRlLT53aW5kb3cgPSB3aW5kb3c7CiAgICAgc3RhdGUtPnduZXh0ID0gMDsKZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYi9pbmZmYXN0LmMgYi9Nb2R1bGVzL3psaWIvaW5mZmFzdC5jCmluZGV4IGJkYTU5Y2UuLjBkYmQxZGIgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYi9pbmZmYXN0LmMKKysrIGIvTW9kdWxlcy96bGliL2luZmZhc3QuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIGluZmZhc3QuYyAtLSBmYXN0IGRlY29kaW5nCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwOCwgMjAxMCwgMjAxMyBNYXJrIEFkbGVyCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNyBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtOCwyNiArOCw5IEBACiAjaW5jbHVkZSAiaW5mbGF0ZS5oIgogI2luY2x1ZGUgImluZmZhc3QuaCIKIAotI2lmbmRlZiBBU01JTkYKLQotLyogQWxsb3cgbWFjaGluZSBkZXBlbmRlbnQgb3B0aW1pemF0aW9uIGZvciBwb3N0LWluY3JlbWVudCBvciBwcmUtaW5jcmVtZW50LgotICAgQmFzZWQgb24gdGVzdGluZyB0byBkYXRlLAotICAgUHJlLWluY3JlbWVudCBwcmVmZXJyZWQgZm9yOgotICAgLSBQb3dlclBDIEczIChBZGxlcikKLSAgIC0gTUlQUyBSNTAwMCAoUmFuZGVycy1QZWhyc29uKQotICAgUG9zdC1pbmNyZW1lbnQgcHJlZmVycmVkIGZvcjoKLSAgIC0gbm9uZQotICAgTm8gbWVhc3VyYWJsZSBkaWZmZXJlbmNlOgotICAgLSBQZW50aXVtIElJSSAoQW5kZXJzb24pCi0gICAtIE02ODA2MCAoTmlrbCkKLSAqLwotI2lmZGVmIFBPU1RJTkMKLSMgIGRlZmluZSBPRkYgMAotIyAgZGVmaW5lIFBVUChhKSAqKGEpKysKKyNpZmRlZiBBU01JTkYKKyMgIHByYWdtYSBtZXNzYWdlKCJBc3NlbWJsZXIgY29kZSBtYXkgaGF2ZSBidWdzIC0tIHVzZSBhdCB5b3VyIG93biByaXNrIikKICNlbHNlCi0jICBkZWZpbmUgT0ZGIDEKLSMgIGRlZmluZSBQVVAoYSkgKisrKGEpCi0jZW5kaWYKIAogLyoKICAgIERlY29kZSBsaXRlcmFsLCBsZW5ndGgsIGFuZCBkaXN0YW5jZSBjb2RlcyBhbmQgd3JpdGUgb3V0IHRoZSByZXN1bHRpbmcKQEAgLTk2LDkgKzc5LDkgQEAKIAogICAgIC8qIGNvcHkgc3RhdGUgdG8gbG9jYWwgdmFyaWFibGVzICovCiAgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7Ci0gICAgaW4gPSBzdHJtLT5uZXh0X2luIC0gT0ZGOworICAgIGluID0gc3RybS0+bmV4dF9pbjsKICAgICBsYXN0ID0gaW4gKyAoc3RybS0+YXZhaWxfaW4gLSA1KTsKLSAgICBvdXQgPSBzdHJtLT5uZXh0X291dCAtIE9GRjsKKyAgICBvdXQgPSBzdHJtLT5uZXh0X291dDsKICAgICBiZWcgPSBvdXQgLSAoc3RhcnQgLSBzdHJtLT5hdmFpbF9vdXQpOwogICAgIGVuZCA9IG91dCArIChzdHJtLT5hdmFpbF9vdXQgLSAyNTcpOwogI2lmZGVmIElORkxBVEVfU1RSSUNUCkBAIC0xMTksOSArMTAyLDkgQEAKICAgICAgICBpbnB1dCBkYXRhIG9yIG91dHB1dCBzcGFjZSAqLwogICAgIGRvIHsKICAgICAgICAgaWYgKGJpdHMgPCAxNSkgewotICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoUFVQKGluKSkgPDwgYml0czsKKyAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOwogICAgICAgICAgICAgYml0cyArPSA4OwotICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoUFVQKGluKSkgPDwgYml0czsKKyAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOwogICAgICAgICAgICAgYml0cyArPSA4OwogICAgICAgICB9CiAgICAgICAgIGhlcmUgPSBsY29kZVtob2xkICYgbG1hc2tdOwpAQCAtMTM0LDE0ICsxMTcsMTQgQEAKICAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgaGVyZS52YWwgPj0gMHgyMCAmJiBoZXJlLnZhbCA8IDB4N2YgPwogICAgICAgICAgICAgICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsICclYydcbiIgOgogICAgICAgICAgICAgICAgICAgICAiaW5mbGF0ZTogICAgICAgICBsaXRlcmFsIDB4JTAyeFxuIiwgaGVyZS52YWwpKTsKLSAgICAgICAgICAgIFBVUChvdXQpID0gKHVuc2lnbmVkIGNoYXIpKGhlcmUudmFsKTsKKyAgICAgICAgICAgICpvdXQrKyA9ICh1bnNpZ25lZCBjaGFyKShoZXJlLnZhbCk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSBpZiAob3AgJiAxNikgeyAgICAgICAgICAgICAgICAgICAgIC8qIGxlbmd0aCBiYXNlICovCiAgICAgICAgICAgICBsZW4gPSAodW5zaWduZWQpKGhlcmUudmFsKTsKICAgICAgICAgICAgIG9wICY9IDE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSBiaXRzICovCiAgICAgICAgICAgICBpZiAob3ApIHsKICAgICAgICAgICAgICAgICBpZiAoYml0cyA8IG9wKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKFBVUChpbikpIDw8IGJpdHM7CisgICAgICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOwogICAgICAgICAgICAgICAgICAgICBiaXRzICs9IDg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGxlbiArPSAodW5zaWduZWQpaG9sZCAmICgoMVUgPDwgb3ApIC0gMSk7CkBAIC0xNTAsOSArMTMzLDkgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFRyYWNldnYoKHN0ZGVyciwgImluZmxhdGU6ICAgICAgICAgbGVuZ3RoICV1XG4iLCBsZW4pKTsKICAgICAgICAgICAgIGlmIChiaXRzIDwgMTUpIHsKLSAgICAgICAgICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKShQVVAoaW4pKSA8PCBiaXRzOworICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOwogICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKLSAgICAgICAgICAgICAgICBob2xkICs9ICh1bnNpZ25lZCBsb25nKShQVVAoaW4pKSA8PCBiaXRzOworICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOwogICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGhlcmUgPSBkY29kZVtob2xkICYgZG1hc2tdOwpAQCAtMTY1LDEwICsxNDgsMTAgQEAKICAgICAgICAgICAgICAgICBkaXN0ID0gKHVuc2lnbmVkKShoZXJlLnZhbCk7CiAgICAgICAgICAgICAgICAgb3AgJj0gMTU7ICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgZXh0cmEgYml0cyAqLwogICAgICAgICAgICAgICAgIGlmIChiaXRzIDwgb3ApIHsKLSAgICAgICAgICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoUFVQKGluKSkgPDwgYml0czsKKyAgICAgICAgICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoKmluKyspIDw8IGJpdHM7CiAgICAgICAgICAgICAgICAgICAgIGJpdHMgKz0gODsKICAgICAgICAgICAgICAgICAgICAgaWYgKGJpdHMgPCBvcCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaG9sZCArPSAodW5zaWduZWQgbG9uZykoUFVQKGluKSkgPDwgYml0czsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbGQgKz0gKHVuc2lnbmVkIGxvbmcpKCppbisrKSA8PCBiaXRzOwogICAgICAgICAgICAgICAgICAgICAgICAgYml0cyArPSA4OwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTk2LDMwICsxNzksMzAgQEAKICNpZmRlZiBJTkZMQVRFX0FMTE9XX0lOVkFMSURfRElTVEFOQ0VfVE9PRkFSX0FSUlIKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPD0gb3AgLSB3aGF2ZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tbGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcCAtIHdoYXZlOwogICAgICAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCA+IHdoYXZlKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IG91dCAtIGRpc3Q7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgtLWxlbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBmcm9tID0gd2luZG93IC0gT0ZGOworICAgICAgICAgICAgICAgICAgICBmcm9tID0gd2luZG93OwogICAgICAgICAgICAgICAgICAgICBpZiAod25leHQgPT0gMCkgeyAgICAgICAgICAgLyogdmVyeSBjb21tb24gY2FzZSAqLwogICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSArPSB3c2l6ZSAtIG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIHdpbmRvdyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBvdXQgLSBkaXN0OyAgLyogcmVzdCBmcm9tIG91dHB1dCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjMwLDE0ICsyMTMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcCA8IGxlbikgeyAgICAgICAgIC8qIHNvbWUgZnJvbSBlbmQgb2Ygd2luZG93ICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuIC09IG9wOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSA9IHdpbmRvdyAtIE9GRjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tID0gd2luZG93OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3bmV4dCA8IGxlbikgeyAgLyogc29tZSBmcm9tIHN0YXJ0IG9mIHdpbmRvdyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcCA9IHduZXh0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gb3A7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoLS1vcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBvdXQgLSBkaXN0OyAgICAgIC8qIHJlc3QgZnJvbSBvdXRwdXQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0yNDgsMzUgKzIzMSwzNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9wIDwgbGVuKSB7ICAgICAgICAgLyogc29tZSBmcm9tIHdpbmRvdyAqLwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbiAtPSBvcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0tb3ApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gPSBvdXQgLSBkaXN0OyAgLyogcmVzdCBmcm9tIG91dHB1dCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChsZW4gPiAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOwotICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOworICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gMzsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBpZiAobGVuKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuID4gMSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICBmcm9tID0gb3V0IC0gZGlzdDsgICAgICAgICAgLyogY29weSBkaXJlY3QgZnJvbSBvdXRwdXQgKi8KICAgICAgICAgICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbmltdW0gbGVuZ3RoIGlzIHRocmVlICovCi0gICAgICAgICAgICAgICAgICAgICAgICBQVVAob3V0KSA9IFBVUChmcm9tKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOwotICAgICAgICAgICAgICAgICAgICAgICAgUFVQKG91dCkgPSBQVVAoZnJvbSk7CisgICAgICAgICAgICAgICAgICAgICAgICAqb3V0KysgPSAqZnJvbSsrOworICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gLT0gMzsKICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAobGVuID4gMik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgKm91dCsrID0gKmZyb20rKzsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiAxKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBVUChvdXQpID0gUFVQKGZyb20pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICpvdXQrKyA9ICpmcm9tKys7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zMTMsOCArMjk2LDggQEAKICAgICBob2xkICY9ICgxVSA8PCBiaXRzKSAtIDE7CiAKICAgICAvKiB1cGRhdGUgc3RhdGUgYW5kIHJldHVybiAqLwotICAgIHN0cm0tPm5leHRfaW4gPSBpbiArIE9GRjsKLSAgICBzdHJtLT5uZXh0X291dCA9IG91dCArIE9GRjsKKyAgICBzdHJtLT5uZXh0X2luID0gaW47CisgICAgc3RybS0+bmV4dF9vdXQgPSBvdXQ7CiAgICAgc3RybS0+YXZhaWxfaW4gPSAodW5zaWduZWQpKGluIDwgbGFzdCA/IDUgKyAobGFzdCAtIGluKSA6IDUgLSAoaW4gLSBsYXN0KSk7CiAgICAgc3RybS0+YXZhaWxfb3V0ID0gKHVuc2lnbmVkKShvdXQgPCBlbmQgPwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU3ICsgKGVuZCAtIG91dCkgOiAyNTcgLSAob3V0IC0gZW5kKSk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvaW5mbGF0ZS5jIGIvTW9kdWxlcy96bGliL2luZmxhdGUuYwppbmRleCA4NzBmODliLi5hYzMzM2U4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvaW5mbGF0ZS5jCisrKyBiL01vZHVsZXMvemxpYi9pbmZsYXRlLmMKQEAgLTEsNSArMSw1IEBACiAvKiBpbmZsYXRlLmMgLS0gemxpYiBkZWNvbXByZXNzaW9uCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMiBNYXJrIEFkbGVyCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNiBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtOTIsNiArOTIsNyBAQAogI2VuZGlmCiAKIC8qIGZ1bmN0aW9uIHByb3RvdHlwZXMgKi8KK2xvY2FsIGludCBpbmZsYXRlU3RhdGVDaGVjayBPRigoel9zdHJlYW1wIHN0cm0pKTsKIGxvY2FsIHZvaWQgZml4ZWR0YWJsZXMgT0YoKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGUpKTsKIGxvY2FsIGludCB1cGRhdGV3aW5kb3cgT0YoKHpfc3RyZWFtcCBzdHJtLCBjb25zdCB1bnNpZ25lZCBjaGFyIEZBUiAqZW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY29weSkpOwpAQCAtMTAxLDEyICsxMDIsMjYgQEAKIGxvY2FsIHVuc2lnbmVkIHN5bmNzZWFyY2ggT0YoKHVuc2lnbmVkIEZBUiAqaGF2ZSwgY29uc3QgdW5zaWduZWQgY2hhciBGQVIgKmJ1ZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxlbikpOwogCitsb2NhbCBpbnQgaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkKK3pfc3RyZWFtcCBzdHJtOworeworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8CisgICAgICAgIHN0cm0tPnphbGxvYyA9PSAoYWxsb2NfZnVuYykwIHx8IHN0cm0tPnpmcmVlID09IChmcmVlX2Z1bmMpMCkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgaWYgKHN0YXRlID09IFpfTlVMTCB8fCBzdGF0ZS0+c3RybSAhPSBzdHJtIHx8CisgICAgICAgIHN0YXRlLT5tb2RlIDwgSEVBRCB8fCBzdGF0ZS0+bW9kZSA+IFNZTkMpCisgICAgICAgIHJldHVybiAxOworICAgIHJldHVybiAwOworfQorCiBpbnQgWkVYUE9SVCBpbmZsYXRlUmVzZXRLZWVwKHN0cm0pCiB6X3N0cmVhbXAgc3RybTsKIHsKICAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOwogCi0gICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOwogICAgIHN0cm0tPnRvdGFsX2luID0gc3RybS0+dG90YWxfb3V0ID0gc3RhdGUtPnRvdGFsID0gMDsKICAgICBzdHJtLT5tc2cgPSBaX05VTEw7CkBAIC0xMzEsNyArMTQ2LDcgQEAKIHsKICAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOwogCi0gICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOwogICAgIHN0YXRlLT53c2l6ZSA9IDA7CiAgICAgc3RhdGUtPndoYXZlID0gMDsKQEAgLTE0Nyw3ICsxNjIsNyBAQAogICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CiAKICAgICAvKiBnZXQgdGhlIHN0YXRlICovCi0gICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOwogCiAgICAgLyogZXh0cmFjdCB3cmFwIHJlcXVlc3QgZnJvbSB3aW5kb3dCaXRzIHBhcmFtZXRlciAqLwpAQCAtMTU2LDcgKzE3MSw3IEBACiAgICAgICAgIHdpbmRvd0JpdHMgPSAtd2luZG93Qml0czsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHdyYXAgPSAod2luZG93Qml0cyA+PiA0KSArIDE7CisgICAgICAgIHdyYXAgPSAod2luZG93Qml0cyA+PiA0KSArIDU7CiAjaWZkZWYgR1VOWklQCiAgICAgICAgIGlmICh3aW5kb3dCaXRzIDwgNDgpCiAgICAgICAgICAgICB3aW5kb3dCaXRzICY9IDE1OwpAQCAtMjEwLDcgKzIyNSw5IEBACiAgICAgaWYgKHN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfTUVNX0VSUk9SOwogICAgIFRyYWNldigoc3RkZXJyLCAiaW5mbGF0ZTogYWxsb2NhdGVkXG4iKSk7CiAgICAgc3RybS0+c3RhdGUgPSAoc3RydWN0IGludGVybmFsX3N0YXRlIEZBUiAqKXN0YXRlOworICAgIHN0YXRlLT5zdHJtID0gc3RybTsKICAgICBzdGF0ZS0+d2luZG93ID0gWl9OVUxMOworICAgIHN0YXRlLT5tb2RlID0gSEVBRDsgICAgIC8qIHRvIHBhc3Mgc3RhdGUgdGVzdCBpbiBpbmZsYXRlUmVzZXQyKCkgKi8KICAgICByZXQgPSBpbmZsYXRlUmVzZXQyKHN0cm0sIHdpbmRvd0JpdHMpOwogICAgIGlmIChyZXQgIT0gWl9PSykgewogICAgICAgICBaRlJFRShzdHJtLCBzdGF0ZSk7CkBAIC0yMzQsMTcgKzI1MSwxNyBAQAogewogICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CiAKLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CiAgICAgaWYgKGJpdHMgPCAwKSB7CiAgICAgICAgIHN0YXRlLT5ob2xkID0gMDsKICAgICAgICAgc3RhdGUtPmJpdHMgPSAwOwogICAgICAgICByZXR1cm4gWl9PSzsKICAgICB9Ci0gICAgaWYgKGJpdHMgPiAxNiB8fCBzdGF0ZS0+Yml0cyArIGJpdHMgPiAzMikgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIGlmIChiaXRzID4gMTYgfHwgc3RhdGUtPmJpdHMgKyAodUludCliaXRzID4gMzIpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICAgICB2YWx1ZSAmPSAoMUwgPDwgYml0cykgLSAxOwotICAgIHN0YXRlLT5ob2xkICs9IHZhbHVlIDw8IHN0YXRlLT5iaXRzOwotICAgIHN0YXRlLT5iaXRzICs9IGJpdHM7CisgICAgc3RhdGUtPmhvbGQgKz0gKHVuc2lnbmVkKXZhbHVlIDw8IHN0YXRlLT5iaXRzOworICAgIHN0YXRlLT5iaXRzICs9ICh1SW50KWJpdHM7CiAgICAgcmV0dXJuIFpfT0s7CiB9CiAKQEAgLTYyNSw3ICs2NDIsNyBAQAogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBvcmRlclsxOV0gPSAvKiBwZXJtdXRhdGlvbiBvZiBjb2RlIGxlbmd0aHMgKi8KICAgICAgICAgezE2LCAxNywgMTgsIDAsIDgsIDcsIDksIDYsIDEwLCA1LCAxMSwgNCwgMTIsIDMsIDEzLCAyLCAxNCwgMSwgMTV9OwogCi0gICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCB8fCBzdHJtLT5uZXh0X291dCA9PSBaX05VTEwgfHwKKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkgfHwgc3RybS0+bmV4dF9vdXQgPT0gWl9OVUxMIHx8CiAgICAgICAgIChzdHJtLT5uZXh0X2luID09IFpfTlVMTCAmJiBzdHJtLT5hdmFpbF9pbiAhPSAwKSkKICAgICAgICAgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogCkBAIC02NDUsNiArNjYyLDggQEAKICAgICAgICAgICAgIE5FRURCSVRTKDE2KTsKICNpZmRlZiBHVU5aSVAKICAgICAgICAgICAgIGlmICgoc3RhdGUtPndyYXAgJiAyKSAmJiBob2xkID09IDB4OGIxZikgeyAgLyogZ3ppcCBoZWFkZXIgKi8KKyAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPndiaXRzID09IDApCisgICAgICAgICAgICAgICAgICAgIHN0YXRlLT53Yml0cyA9IDE1OwogICAgICAgICAgICAgICAgIHN0YXRlLT5jaGVjayA9IGNyYzMyKDBMLCBaX05VTEwsIDApOwogICAgICAgICAgICAgICAgIENSQzIoc3RhdGUtPmNoZWNrLCBob2xkKTsKICAgICAgICAgICAgICAgICBJTklUQklUUygpOwpAQCAtNjcyLDcgKzY5MSw3IEBACiAgICAgICAgICAgICBsZW4gPSBCSVRTKDQpICsgODsKICAgICAgICAgICAgIGlmIChzdGF0ZS0+d2JpdHMgPT0gMCkKICAgICAgICAgICAgICAgICBzdGF0ZS0+d2JpdHMgPSBsZW47Ci0gICAgICAgICAgICBlbHNlIGlmIChsZW4gPiBzdGF0ZS0+d2JpdHMpIHsKKyAgICAgICAgICAgIGlmIChsZW4gPiAxNSB8fCBsZW4gPiBzdGF0ZS0+d2JpdHMpIHsKICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJpbnZhbGlkIHdpbmRvdyBzaXplIjsKICAgICAgICAgICAgICAgICBzdGF0ZS0+bW9kZSA9IEJBRDsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTY5OSwxNCArNzE4LDE2IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMKQogICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT50ZXh0ID0gKGludCkoKGhvbGQgPj4gOCkgJiAxKTsKLSAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApIENSQzIoc3RhdGUtPmNoZWNrLCBob2xkKTsKKyAgICAgICAgICAgIGlmICgoc3RhdGUtPmZsYWdzICYgMHgwMjAwKSAmJiAoc3RhdGUtPndyYXAgJiA0KSkKKyAgICAgICAgICAgICAgICBDUkMyKHN0YXRlLT5jaGVjaywgaG9sZCk7CiAgICAgICAgICAgICBJTklUQklUUygpOwogICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBUSU1FOwogICAgICAgICBjYXNlIFRJTUU6CiAgICAgICAgICAgICBORUVEQklUUygzMik7CiAgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMKQogICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT50aW1lID0gaG9sZDsKLSAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApIENSQzQoc3RhdGUtPmNoZWNrLCBob2xkKTsKKyAgICAgICAgICAgIGlmICgoc3RhdGUtPmZsYWdzICYgMHgwMjAwKSAmJiAoc3RhdGUtPndyYXAgJiA0KSkKKyAgICAgICAgICAgICAgICBDUkM0KHN0YXRlLT5jaGVjaywgaG9sZCk7CiAgICAgICAgICAgICBJTklUQklUUygpOwogICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBPUzsKICAgICAgICAgY2FzZSBPUzoKQEAgLTcxNSw3ICs3MzYsOCBAQAogICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT54ZmxhZ3MgPSAoaW50KShob2xkICYgMHhmZik7CiAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPm9zID0gKGludCkoaG9sZCA+PiA4KTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApIENSQzIoc3RhdGUtPmNoZWNrLCBob2xkKTsKKyAgICAgICAgICAgIGlmICgoc3RhdGUtPmZsYWdzICYgMHgwMjAwKSAmJiAoc3RhdGUtPndyYXAgJiA0KSkKKyAgICAgICAgICAgICAgICBDUkMyKHN0YXRlLT5jaGVjaywgaG9sZCk7CiAgICAgICAgICAgICBJTklUQklUUygpOwogICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBFWExFTjsKICAgICAgICAgY2FzZSBFWExFTjoKQEAgLTcyNCw3ICs3NDYsOCBAQAogICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggPSAodW5zaWduZWQpKGhvbGQpOwogICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+aGVhZCAhPSBaX05VTEwpCiAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5leHRyYV9sZW4gPSAodW5zaWduZWQpaG9sZDsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgMHgwMjAwKSBDUkMyKHN0YXRlLT5jaGVjaywgaG9sZCk7CisgICAgICAgICAgICAgICAgaWYgKChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApICYmIChzdGF0ZS0+d3JhcCAmIDQpKQorICAgICAgICAgICAgICAgICAgICBDUkMyKHN0YXRlLT5jaGVjaywgaG9sZCk7CiAgICAgICAgICAgICAgICAgSU5JVEJJVFMoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCkKQEAgLTc0Miw3ICs3NjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4gKyBjb3B5ID4gc3RhdGUtPmhlYWQtPmV4dHJhX21heCA/CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5leHRyYV9tYXggLSBsZW4gOiBjb3B5KTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgMHgwMjAwKQorICAgICAgICAgICAgICAgICAgICBpZiAoKHN0YXRlLT5mbGFncyAmIDB4MDIwMCkgJiYgKHN0YXRlLT53cmFwICYgNCkpCiAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+Y2hlY2sgPSBjcmMzMihzdGF0ZS0+Y2hlY2ssIG5leHQsIGNvcHkpOwogICAgICAgICAgICAgICAgICAgICBoYXZlIC09IGNvcHk7CiAgICAgICAgICAgICAgICAgICAgIG5leHQgKz0gY29weTsKQEAgLTc2MSw5ICs3ODQsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmhlYWQgIT0gWl9OVUxMICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPm5hbWUgIT0gWl9OVUxMICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmxlbmd0aCA8IHN0YXRlLT5oZWFkLT5uYW1lX21heCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5uYW1lW3N0YXRlLT5sZW5ndGgrK10gPSBsZW47CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+bmFtZVtzdGF0ZS0+bGVuZ3RoKytdID0gKEJ5dGVmKWxlbjsKICAgICAgICAgICAgICAgICB9IHdoaWxlIChsZW4gJiYgY29weSA8IGhhdmUpOwotICAgICAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApCisgICAgICAgICAgICAgICAgaWYgKChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApICYmIChzdGF0ZS0+d3JhcCAmIDQpKQogICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+Y2hlY2sgPSBjcmMzMihzdGF0ZS0+Y2hlY2ssIG5leHQsIGNvcHkpOwogICAgICAgICAgICAgICAgIGhhdmUgLT0gY29weTsKICAgICAgICAgICAgICAgICBuZXh0ICs9IGNvcHk7CkBAIC03ODIsOSArODA1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXRlLT5oZWFkICE9IFpfTlVMTCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5oZWFkLT5jb21tZW50ICE9IFpfTlVMTCAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5sZW5ndGggPCBzdGF0ZS0+aGVhZC0+Y29tbV9tYXgpCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZS0+aGVhZC0+Y29tbWVudFtzdGF0ZS0+bGVuZ3RoKytdID0gbGVuOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmhlYWQtPmNvbW1lbnRbc3RhdGUtPmxlbmd0aCsrXSA9IChCeXRlZilsZW47CiAgICAgICAgICAgICAgICAgfSB3aGlsZSAobGVuICYmIGNvcHkgPCBoYXZlKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RhdGUtPmZsYWdzICYgMHgwMjAwKQorICAgICAgICAgICAgICAgIGlmICgoc3RhdGUtPmZsYWdzICYgMHgwMjAwKSAmJiAoc3RhdGUtPndyYXAgJiA0KSkKICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPmNoZWNrID0gY3JjMzIoc3RhdGUtPmNoZWNrLCBuZXh0LCBjb3B5KTsKICAgICAgICAgICAgICAgICBoYXZlIC09IGNvcHk7CiAgICAgICAgICAgICAgICAgbmV4dCArPSBjb3B5OwpAQCAtNzk2LDcgKzgxOSw3IEBACiAgICAgICAgIGNhc2UgSENSQzoKICAgICAgICAgICAgIGlmIChzdGF0ZS0+ZmxhZ3MgJiAweDAyMDApIHsKICAgICAgICAgICAgICAgICBORUVEQklUUygxNik7Ci0gICAgICAgICAgICAgICAgaWYgKGhvbGQgIT0gKHN0YXRlLT5jaGVjayAmIDB4ZmZmZikpIHsKKyAgICAgICAgICAgICAgICBpZiAoKHN0YXRlLT53cmFwICYgNCkgJiYgaG9sZCAhPSAoc3RhdGUtPmNoZWNrICYgMHhmZmZmKSkgewogICAgICAgICAgICAgICAgICAgICBzdHJtLT5tc2cgPSAoY2hhciAqKSJoZWFkZXIgY3JjIG1pc21hdGNoIjsKICAgICAgICAgICAgICAgICAgICAgc3RhdGUtPm1vZGUgPSBCQUQ7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTE3NywxMSArMTIwMCwxMSBAQAogICAgICAgICAgICAgICAgIG91dCAtPSBsZWZ0OwogICAgICAgICAgICAgICAgIHN0cm0tPnRvdGFsX291dCArPSBvdXQ7CiAgICAgICAgICAgICAgICAgc3RhdGUtPnRvdGFsICs9IG91dDsKLSAgICAgICAgICAgICAgICBpZiAob3V0KQorICAgICAgICAgICAgICAgIGlmICgoc3RhdGUtPndyYXAgJiA0KSAmJiBvdXQpCiAgICAgICAgICAgICAgICAgICAgIHN0cm0tPmFkbGVyID0gc3RhdGUtPmNoZWNrID0KICAgICAgICAgICAgICAgICAgICAgICAgIFVQREFURShzdGF0ZS0+Y2hlY2ssIHB1dCAtIG91dCwgb3V0KTsKICAgICAgICAgICAgICAgICBvdXQgPSBsZWZ0OwotICAgICAgICAgICAgICAgIGlmICgoCisgICAgICAgICAgICAgICAgaWYgKChzdGF0ZS0+d3JhcCAmIDQpICYmICgKICNpZmRlZiBHVU5aSVAKICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLT5mbGFncyA/IGhvbGQgOgogI2VuZGlmCkBAIC0xMjQwLDEwICsxMjYzLDEwIEBACiAgICAgc3RybS0+dG90YWxfaW4gKz0gaW47CiAgICAgc3RybS0+dG90YWxfb3V0ICs9IG91dDsKICAgICBzdGF0ZS0+dG90YWwgKz0gb3V0OwotICAgIGlmIChzdGF0ZS0+d3JhcCAmJiBvdXQpCisgICAgaWYgKChzdGF0ZS0+d3JhcCAmIDQpICYmIG91dCkKICAgICAgICAgc3RybS0+YWRsZXIgPSBzdGF0ZS0+Y2hlY2sgPQogICAgICAgICAgICAgVVBEQVRFKHN0YXRlLT5jaGVjaywgc3RybS0+bmV4dF9vdXQgLSBvdXQsIG91dCk7Ci0gICAgc3RybS0+ZGF0YV90eXBlID0gc3RhdGUtPmJpdHMgKyAoc3RhdGUtPmxhc3QgPyA2NCA6IDApICsKKyAgICBzdHJtLT5kYXRhX3R5cGUgPSAoaW50KXN0YXRlLT5iaXRzICsgKHN0YXRlLT5sYXN0ID8gNjQgOiAwKSArCiAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlLT5tb2RlID09IFRZUEUgPyAxMjggOiAwKSArCiAgICAgICAgICAgICAgICAgICAgICAgKHN0YXRlLT5tb2RlID09IExFTl8gfHwgc3RhdGUtPm1vZGUgPT0gQ09QWV8gPyAyNTYgOiAwKTsKICAgICBpZiAoKChpbiA9PSAwICYmIG91dCA9PSAwKSB8fCBmbHVzaCA9PSBaX0ZJTklTSCkgJiYgcmV0ID09IFpfT0spCkBAIC0xMjU1LDcgKzEyNzgsNyBAQAogel9zdHJlYW1wIHN0cm07CiB7CiAgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMIHx8IHN0cm0tPnpmcmVlID09IChmcmVlX2Z1bmMpMCkKKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkpCiAgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKICAgICBpZiAoc3RhdGUtPndpbmRvdyAhPSBaX05VTEwpIFpGUkVFKHN0cm0sIHN0YXRlLT53aW5kb3cpOwpAQCAtMTI3Myw3ICsxMjk2LDcgQEAKICAgICBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKnN0YXRlOwogCiAgICAgLyogY2hlY2sgc3RhdGUgKi8KLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CiAKICAgICAvKiBjb3B5IGRpY3Rpb25hcnkgKi8KQEAgLTEyOTgsNyArMTMyMSw3IEBACiAgICAgaW50IHJldDsKIAogICAgIC8qIGNoZWNrIHN0YXRlICovCi0gICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOwogICAgIGlmIChzdGF0ZS0+d3JhcCAhPSAwICYmIHN0YXRlLT5tb2RlICE9IERJQ1QpCiAgICAgICAgIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKQEAgLTEzMzAsNyArMTM1Myw3IEBACiAgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKIAogICAgIC8qIGNoZWNrIHN0YXRlICovCi0gICAgaWYgKHN0cm0gPT0gWl9OVUxMIHx8IHN0cm0tPnN0YXRlID09IFpfTlVMTCkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOwogICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOwogICAgIGlmICgoc3RhdGUtPndyYXAgJiAyKSA9PSAwKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAKQEAgLTEzODMsNyArMTQwNiw3IEBACiAgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKIAogICAgIC8qIGNoZWNrIHBhcmFtZXRlcnMgKi8KLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CiAgICAgaWYgKHN0cm0tPmF2YWlsX2luID09IDAgJiYgc3RhdGUtPmJpdHMgPCA4KSByZXR1cm4gWl9CVUZfRVJST1I7CiAKQEAgLTE0MzAsNyArMTQ1Myw3IEBACiB7CiAgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKIAotICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKICAgICByZXR1cm4gc3RhdGUtPm1vZGUgPT0gU1RPUkVEICYmIHN0YXRlLT5iaXRzID09IDA7CiB9CkBAIC0xNDQ1LDggKzE0NjgsNyBAQAogICAgIHVuc2lnbmVkIHdzaXplOwogCiAgICAgLyogY2hlY2sgaW5wdXQgKi8KLSAgICBpZiAoZGVzdCA9PSBaX05VTEwgfHwgc291cmNlID09IFpfTlVMTCB8fCBzb3VyY2UtPnN0YXRlID09IFpfTlVMTCB8fAotICAgICAgICBzb3VyY2UtPnphbGxvYyA9PSAoYWxsb2NfZnVuYykwIHx8IHNvdXJjZS0+emZyZWUgPT0gKGZyZWVfZnVuYykwKQorICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzb3VyY2UpIHx8IGRlc3QgPT0gWl9OVUxMKQogICAgICAgICByZXR1cm4gWl9TVFJFQU1fRVJST1I7CiAgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc291cmNlLT5zdGF0ZTsKIApAQCAtMTQ2Nyw2ICsxNDg5LDcgQEAKICAgICAvKiBjb3B5IHN0YXRlICovCiAgICAgem1lbWNweSgodm9pZHBmKWRlc3QsICh2b2lkcGYpc291cmNlLCBzaXplb2Yoel9zdHJlYW0pKTsKICAgICB6bWVtY3B5KCh2b2lkcGYpY29weSwgKHZvaWRwZilzdGF0ZSwgc2l6ZW9mKHN0cnVjdCBpbmZsYXRlX3N0YXRlKSk7CisgICAgY29weS0+c3RybSA9IGRlc3Q7CiAgICAgaWYgKHN0YXRlLT5sZW5jb2RlID49IHN0YXRlLT5jb2RlcyAmJgogICAgICAgICBzdGF0ZS0+bGVuY29kZSA8PSBzdGF0ZS0+Y29kZXMgKyBFTk9VR0ggLSAxKSB7CiAgICAgICAgIGNvcHktPmxlbmNvZGUgPSBjb3B5LT5jb2RlcyArIChzdGF0ZS0+bGVuY29kZSAtIHN0YXRlLT5jb2Rlcyk7CkBAIC0xNDg4LDI1ICsxNTExLDUxIEBACiB7CiAgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKIAotICAgIGlmIChzdHJtID09IFpfTlVMTCB8fCBzdHJtLT5zdGF0ZSA9PSBaX05VTEwpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKKyAgICBpZiAoaW5mbGF0ZVN0YXRlQ2hlY2soc3RybSkpIHJldHVybiBaX1NUUkVBTV9FUlJPUjsKICAgICBzdGF0ZSA9IChzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSBGQVIgKilzdHJtLT5zdGF0ZTsKLSAgICBzdGF0ZS0+c2FuZSA9ICFzdWJ2ZXJ0OwogI2lmZGVmIElORkxBVEVfQUxMT1dfSU5WQUxJRF9ESVNUQU5DRV9UT09GQVJfQVJSUgorICAgIHN0YXRlLT5zYW5lID0gIXN1YnZlcnQ7CiAgICAgcmV0dXJuIFpfT0s7CiAjZWxzZQorICAgICh2b2lkKXN1YnZlcnQ7CiAgICAgc3RhdGUtPnNhbmUgPSAxOwogICAgIHJldHVybiBaX0RBVEFfRVJST1I7CiAjZW5kaWYKIH0KIAoraW50IFpFWFBPUlQgaW5mbGF0ZVZhbGlkYXRlKHN0cm0sIGNoZWNrKQorel9zdHJlYW1wIHN0cm07CitpbnQgY2hlY2s7Cit7CisgICAgc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICpzdGF0ZTsKKworICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkgcmV0dXJuIFpfU1RSRUFNX0VSUk9SOworICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOworICAgIGlmIChjaGVjaykKKyAgICAgICAgc3RhdGUtPndyYXAgfD0gNDsKKyAgICBlbHNlCisgICAgICAgIHN0YXRlLT53cmFwICY9IH40OworICAgIHJldHVybiBaX09LOworfQorCiBsb25nIFpFWFBPUlQgaW5mbGF0ZU1hcmsoc3RybSkKIHpfc3RyZWFtcCBzdHJtOwogewogICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CiAKLSAgICBpZiAoc3RybSA9PSBaX05VTEwgfHwgc3RybS0+c3RhdGUgPT0gWl9OVUxMKSByZXR1cm4gLTFMIDw8IDE2OworICAgIGlmIChpbmZsYXRlU3RhdGVDaGVjayhzdHJtKSkKKyAgICAgICAgcmV0dXJuIC0oMUwgPDwgMTYpOwogICAgIHN0YXRlID0gKHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqKXN0cm0tPnN0YXRlOwotICAgIHJldHVybiAoKGxvbmcpKHN0YXRlLT5iYWNrKSA8PCAxNikgKworICAgIHJldHVybiAobG9uZykoKCh1bnNpZ25lZCBsb25nKSgobG9uZylzdGF0ZS0+YmFjaykpIDw8IDE2KSArCiAgICAgICAgIChzdGF0ZS0+bW9kZSA9PSBDT1BZID8gc3RhdGUtPmxlbmd0aCA6CiAgICAgICAgICAgICAoc3RhdGUtPm1vZGUgPT0gTUFUQ0ggPyBzdGF0ZS0+d2FzIC0gc3RhdGUtPmxlbmd0aCA6IDApKTsKIH0KKwordW5zaWduZWQgbG9uZyBaRVhQT1JUIGluZmxhdGVDb2Rlc1VzZWQoc3RybSkKK3pfc3RyZWFtcCBzdHJtOworeworICAgIHN0cnVjdCBpbmZsYXRlX3N0YXRlIEZBUiAqc3RhdGU7CisgICAgaWYgKGluZmxhdGVTdGF0ZUNoZWNrKHN0cm0pKSByZXR1cm4gKHVuc2lnbmVkIGxvbmcpLTE7CisgICAgc3RhdGUgPSAoc3RydWN0IGluZmxhdGVfc3RhdGUgRkFSICopc3RybS0+c3RhdGU7CisgICAgcmV0dXJuICh1bnNpZ25lZCBsb25nKShzdGF0ZS0+bmV4dCAtIHN0YXRlLT5jb2Rlcyk7Cit9CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvaW5mbGF0ZS5oIGIvTW9kdWxlcy96bGliL2luZmxhdGUuaAppbmRleCA5NWY0OTg2Li5hNDZjY2U2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvaW5mbGF0ZS5oCisrKyBiL01vZHVsZXMvemxpYi9pbmZsYXRlLmgKQEAgLTEsNSArMSw1IEBACiAvKiBpbmZsYXRlLmggLS0gaW50ZXJuYWwgaW5mbGF0ZSBzdGF0ZSBkZWZpbml0aW9uCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwOSBNYXJrIEFkbGVyCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNiBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtMTgsNyArMTgsNyBAQAogCiAvKiBQb3NzaWJsZSBpbmZsYXRlIG1vZGVzIGJldHdlZW4gaW5mbGF0ZSgpIGNhbGxzICovCiB0eXBlZGVmIGVudW0gewotICAgIEhFQUQsICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1hZ2ljIGhlYWRlciAqLworICAgIEhFQUQgPSAxNjE4MCwgICAvKiBpOiB3YWl0aW5nIGZvciBtYWdpYyBoZWFkZXIgKi8KICAgICBGTEFHUywgICAgICAvKiBpOiB3YWl0aW5nIGZvciBtZXRob2QgYW5kIGZsYWdzIChnemlwKSAqLwogICAgIFRJTUUsICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIG1vZGlmaWNhdGlvbiB0aW1lIChnemlwKSAqLwogICAgIE9TLCAgICAgICAgIC8qIGk6IHdhaXRpbmcgZm9yIGV4dHJhIGZsYWdzIGFuZCBvcGVyYXRpbmcgc3lzdGVtIChnemlwKSAqLwpAQCAtNzcsMTEgKzc3LDE0IEBACiAgICAgICAgIENIRUNLIC0+IExFTkdUSCAtPiBET05FCiAgKi8KIAotLyogc3RhdGUgbWFpbnRhaW5lZCBiZXR3ZWVuIGluZmxhdGUoKSBjYWxscy4gIEFwcHJveGltYXRlbHkgMTBLIGJ5dGVzLiAqLworLyogU3RhdGUgbWFpbnRhaW5lZCBiZXR3ZWVuIGluZmxhdGUoKSBjYWxscyAtLSBhcHByb3hpbWF0ZWx5IDdLIGJ5dGVzLCBub3QKKyAgIGluY2x1ZGluZyB0aGUgYWxsb2NhdGVkIHNsaWRpbmcgd2luZG93LCB3aGljaCBpcyB1cCB0byAzMksgYnl0ZXMuICovCiBzdHJ1Y3QgaW5mbGF0ZV9zdGF0ZSB7CisgICAgel9zdHJlYW1wIHN0cm07ICAgICAgICAgICAgIC8qIHBvaW50ZXIgYmFjayB0byB0aGlzIHpsaWIgc3RyZWFtICovCiAgICAgaW5mbGF0ZV9tb2RlIG1vZGU7ICAgICAgICAgIC8qIGN1cnJlbnQgaW5mbGF0ZSBtb2RlICovCiAgICAgaW50IGxhc3Q7ICAgICAgICAgICAgICAgICAgIC8qIHRydWUgaWYgcHJvY2Vzc2luZyBsYXN0IGJsb2NrICovCi0gICAgaW50IHdyYXA7ICAgICAgICAgICAgICAgICAgIC8qIGJpdCAwIHRydWUgZm9yIHpsaWIsIGJpdCAxIHRydWUgZm9yIGd6aXAgKi8KKyAgICBpbnQgd3JhcDsgICAgICAgICAgICAgICAgICAgLyogYml0IDAgdHJ1ZSBmb3IgemxpYiwgYml0IDEgdHJ1ZSBmb3IgZ3ppcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0IDIgdHJ1ZSB0byB2YWxpZGF0ZSBjaGVjayB2YWx1ZSAqLwogICAgIGludCBoYXZlZGljdDsgICAgICAgICAgICAgICAvKiB0cnVlIGlmIGRpY3Rpb25hcnkgcHJvdmlkZWQgKi8KICAgICBpbnQgZmxhZ3M7ICAgICAgICAgICAgICAgICAgLyogZ3ppcCBoZWFkZXIgbWV0aG9kIGFuZCBmbGFncyAoMCBpZiB6bGliKSAqLwogICAgIHVuc2lnbmVkIGRtYXg7ICAgICAgICAgICAgICAvKiB6bGliIGhlYWRlciBtYXggZGlzdGFuY2UgKElORkxBVEVfU1RSSUNUKSAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL2luZnRyZWVzLmMgYi9Nb2R1bGVzL3psaWIvaW5mdHJlZXMuYwppbmRleCA0NGQ4OWNmLi4yZWEwOGZjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvaW5mdHJlZXMuYworKysgYi9Nb2R1bGVzL3psaWIvaW5mdHJlZXMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIGluZnRyZWVzLmMgLS0gZ2VuZXJhdGUgSHVmZm1hbiB0cmVlcyBmb3IgZWZmaWNpZW50IGRlY29kaW5nCi0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMyBNYXJrIEFkbGVyCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNyBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtOSw3ICs5LDcgQEAKICNkZWZpbmUgTUFYQklUUyAxNQogCiBjb25zdCBjaGFyIGluZmxhdGVfY29weXJpZ2h0W10gPQotICAgIiBpbmZsYXRlIDEuMi44IENvcHlyaWdodCAxOTk1LTIwMTMgTWFyayBBZGxlciAiOworICAgIiBpbmZsYXRlIDEuMi4xMSBDb3B5cmlnaHQgMTk5NS0yMDE3IE1hcmsgQWRsZXIgIjsKIC8qCiAgIElmIHlvdSB1c2UgdGhlIHpsaWIgbGlicmFyeSBpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGlzIHdlbGNvbWUKICAgaW4gdGhlIGRvY3VtZW50YXRpb24gb2YgeW91ciBwcm9kdWN0LiBJZiBmb3Igc29tZSByZWFzb24geW91IGNhbm5vdApAQCAtNTQsNyArNTQsNyBAQAogICAgIGNvZGUgRkFSICpuZXh0OyAgICAgICAgICAgICAvKiBuZXh0IGF2YWlsYWJsZSBzcGFjZSBpbiB0YWJsZSAqLwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IEZBUiAqYmFzZTsgICAgIC8qIGJhc2UgdmFsdWUgdGFibGUgdG8gdXNlICovCiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRkFSICpleHRyYTsgICAgLyogZXh0cmEgYml0cyB0YWJsZSB0byB1c2UgKi8KLSAgICBpbnQgZW5kOyAgICAgICAgICAgICAgICAgICAgLyogdXNlIGJhc2UgYW5kIGV4dHJhIGZvciBzeW1ib2wgPiBlbmQgKi8KKyAgICB1bnNpZ25lZCBtYXRjaDsgICAgICAgICAgICAgLyogdXNlIGJhc2UgYW5kIGV4dHJhIGZvciBzeW1ib2wgPj0gbWF0Y2ggKi8KICAgICB1bnNpZ25lZCBzaG9ydCBjb3VudFtNQVhCSVRTKzFdOyAgICAvKiBudW1iZXIgb2YgY29kZXMgb2YgZWFjaCBsZW5ndGggKi8KICAgICB1bnNpZ25lZCBzaG9ydCBvZmZzW01BWEJJVFMrMV07ICAgICAvKiBvZmZzZXRzIGluIHRhYmxlIGZvciBlYWNoIGxlbmd0aCAqLwogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsYmFzZVszMV0gPSB7IC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBiYXNlICovCkBAIC02Miw3ICs2Miw3IEBACiAgICAgICAgIDM1LCA0MywgNTEsIDU5LCA2NywgODMsIDk5LCAxMTUsIDEzMSwgMTYzLCAxOTUsIDIyNywgMjU4LCAwLCAwfTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbGV4dFszMV0gPSB7IC8qIExlbmd0aCBjb2RlcyAyNTcuLjI4NSBleHRyYSAqLwogICAgICAgICAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE3LCAxNywgMTcsIDE3LCAxOCwgMTgsIDE4LCAxOCwKLSAgICAgICAgMTksIDE5LCAxOSwgMTksIDIwLCAyMCwgMjAsIDIwLCAyMSwgMjEsIDIxLCAyMSwgMTYsIDcyLCA3OH07CisgICAgICAgIDE5LCAxOSwgMTksIDE5LCAyMCwgMjAsIDIwLCAyMCwgMjEsIDIxLCAyMSwgMjEsIDE2LCA3NywgMjAyfTsKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgZGJhc2VbMzJdID0geyAvKiBEaXN0YW5jZSBjb2RlcyAwLi4yOSBiYXNlICovCiAgICAgICAgIDEsIDIsIDMsIDQsIDUsIDcsIDksIDEzLCAxNywgMjUsIDMzLCA0OSwgNjUsIDk3LCAxMjksIDE5MywKICAgICAgICAgMjU3LCAzODUsIDUxMywgNzY5LCAxMDI1LCAxNTM3LCAyMDQ5LCAzMDczLCA0MDk3LCA2MTQ1LApAQCAtMTgxLDE5ICsxODEsMTcgQEAKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIENPREVTOgogICAgICAgICBiYXNlID0gZXh0cmEgPSB3b3JrOyAgICAvKiBkdW1teSB2YWx1ZS0tbm90IHVzZWQgKi8KLSAgICAgICAgZW5kID0gMTk7CisgICAgICAgIG1hdGNoID0gMjA7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTEVOUzoKICAgICAgICAgYmFzZSA9IGxiYXNlOwotICAgICAgICBiYXNlIC09IDI1NzsKICAgICAgICAgZXh0cmEgPSBsZXh0OwotICAgICAgICBleHRyYSAtPSAyNTc7Ci0gICAgICAgIGVuZCA9IDI1NjsKKyAgICAgICAgbWF0Y2ggPSAyNTc7CiAgICAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6ICAgICAgICAgICAgLyogRElTVFMgKi8KKyAgICBkZWZhdWx0OiAgICAvKiBESVNUUyAqLwogICAgICAgICBiYXNlID0gZGJhc2U7CiAgICAgICAgIGV4dHJhID0gZGV4dDsKLSAgICAgICAgZW5kID0gLTE7CisgICAgICAgIG1hdGNoID0gMDsKICAgICB9CiAKICAgICAvKiBpbml0aWFsaXplIHN0YXRlIGZvciBsb29wICovCkBAIC0yMTYsMTMgKzIxNCwxMyBAQAogICAgIGZvciAoOzspIHsKICAgICAgICAgLyogY3JlYXRlIHRhYmxlIGVudHJ5ICovCiAgICAgICAgIGhlcmUuYml0cyA9ICh1bnNpZ25lZCBjaGFyKShsZW4gLSBkcm9wKTsKLSAgICAgICAgaWYgKChpbnQpKHdvcmtbc3ltXSkgPCBlbmQpIHsKKyAgICAgICAgaWYgKHdvcmtbc3ltXSArIDFVIDwgbWF0Y2gpIHsKICAgICAgICAgICAgIGhlcmUub3AgPSAodW5zaWduZWQgY2hhcikwOwogICAgICAgICAgICAgaGVyZS52YWwgPSB3b3JrW3N5bV07CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoKGludCkod29ya1tzeW1dKSA+IGVuZCkgewotICAgICAgICAgICAgaGVyZS5vcCA9ICh1bnNpZ25lZCBjaGFyKShleHRyYVt3b3JrW3N5bV1dKTsKLSAgICAgICAgICAgIGhlcmUudmFsID0gYmFzZVt3b3JrW3N5bV1dOworICAgICAgICBlbHNlIGlmICh3b3JrW3N5bV0gPj0gbWF0Y2gpIHsKKyAgICAgICAgICAgIGhlcmUub3AgPSAodW5zaWduZWQgY2hhcikoZXh0cmFbd29ya1tzeW1dIC0gbWF0Y2hdKTsKKyAgICAgICAgICAgIGhlcmUudmFsID0gYmFzZVt3b3JrW3N5bV0gLSBtYXRjaF07CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBoZXJlLm9wID0gKHVuc2lnbmVkIGNoYXIpKDMyICsgNjQpOyAgICAgICAgIC8qIGVuZCBvZiBibG9jayAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL3RyZWVzLmMgYi9Nb2R1bGVzL3psaWIvdHJlZXMuYwppbmRleCAxZmQ3NzU5Li41MGNmNGI0IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvdHJlZXMuYworKysgYi9Nb2R1bGVzL3psaWIvdHJlZXMuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHRyZWVzLmMgLS0gb3V0cHV0IGRlZmxhdGVkIGRhdGEgdXNpbmcgSHVmZm1hbiBjb2RpbmcKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDEyIEplYW4tbG91cCBHYWlsbHkKKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDE3IEplYW4tbG91cCBHYWlsbHkKICAqIGRldGVjdF9kYXRhX3R5cGUoKSBmdW5jdGlvbiBwcm92aWRlZCBmcmVlbHkgYnkgQ29zbWluIFRydXRhLCAyMDA2CiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KQEAgLTM2LDcgKzM2LDcgQEAKIAogI2luY2x1ZGUgImRlZmxhdGUuaCIKIAotI2lmZGVmIERFQlVHCisjaWZkZWYgWkxJQl9ERUJVRwogIyAgaW5jbHVkZSA8Y3R5cGUuaD4KICNlbmRpZgogCkBAIC0xMjIsMTMgKzEyMiwxMyBAQAogICAgIGludCAgICAgbWF4X2xlbmd0aDsgICAgICAgICAgLyogbWF4IGJpdCBsZW5ndGggZm9yIHRoZSBjb2RlcyAqLwogfTsKIAotbG9jYWwgc3RhdGljX3RyZWVfZGVzYyAgc3RhdGljX2xfZGVzYyA9Citsb2NhbCBjb25zdCBzdGF0aWNfdHJlZV9kZXNjICBzdGF0aWNfbF9kZXNjID0KIHtzdGF0aWNfbHRyZWUsIGV4dHJhX2xiaXRzLCBMSVRFUkFMUysxLCBMX0NPREVTLCBNQVhfQklUU307CiAKLWxvY2FsIHN0YXRpY190cmVlX2Rlc2MgIHN0YXRpY19kX2Rlc2MgPQorbG9jYWwgY29uc3Qgc3RhdGljX3RyZWVfZGVzYyAgc3RhdGljX2RfZGVzYyA9CiB7c3RhdGljX2R0cmVlLCBleHRyYV9kYml0cywgMCwgICAgICAgICAgRF9DT0RFUywgTUFYX0JJVFN9OwogCi1sb2NhbCBzdGF0aWNfdHJlZV9kZXNjICBzdGF0aWNfYmxfZGVzYyA9Citsb2NhbCBjb25zdCBzdGF0aWNfdHJlZV9kZXNjICBzdGF0aWNfYmxfZGVzYyA9CiB7KGNvbnN0IGN0X2RhdGEgKikwLCBleHRyYV9ibGJpdHMsIDAsICAgQkxfQ09ERVMsIE1BWF9CTF9CSVRTfTsKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0xNTIsMTggKzE1MiwxNiBAQAogbG9jYWwgdW5zaWduZWQgYmlfcmV2ZXJzZSBPRigodW5zaWduZWQgdmFsdWUsIGludCBsZW5ndGgpKTsKIGxvY2FsIHZvaWQgYmlfd2luZHVwICAgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKIGxvY2FsIHZvaWQgYmlfZmx1c2ggICAgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMpKTsKLWxvY2FsIHZvaWQgY29weV9ibG9jayAgICAgT0YoKGRlZmxhdGVfc3RhdGUgKnMsIGNoYXJmICpidWYsIHVuc2lnbmVkIGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBoZWFkZXIpKTsKIAogI2lmZGVmIEdFTl9UUkVFU19ICiBsb2NhbCB2b2lkIGdlbl90cmVlc19oZWFkZXIgT0YoKHZvaWQpKTsKICNlbmRpZgogCi0jaWZuZGVmIERFQlVHCisjaWZuZGVmIFpMSUJfREVCVUcKICMgIGRlZmluZSBzZW5kX2NvZGUocywgYywgdHJlZSkgc2VuZF9iaXRzKHMsIHRyZWVbY10uQ29kZSwgdHJlZVtjXS5MZW4pCiAgICAvKiBTZW5kIGEgY29kZSBvZiB0aGUgZ2l2ZW4gdHJlZS4gYyBhbmQgdHJlZSBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cyAqLwogCi0jZWxzZSAvKiBERUJVRyAqLworI2Vsc2UgLyogIVpMSUJfREVCVUcgKi8KICMgIGRlZmluZSBzZW5kX2NvZGUocywgYywgdHJlZSkgXAogICAgICB7IGlmICh6X3ZlcmJvc2U+MikgZnByaW50ZihzdGRlcnIsIlxuY2QgJTNkICIsKGMpKTsgXAogICAgICAgIHNlbmRfYml0cyhzLCB0cmVlW2NdLkNvZGUsIHRyZWVbY10uTGVuKTsgfQpAQCAtMTgyLDcgKzE4MCw3IEBACiAgKiBTZW5kIGEgdmFsdWUgb24gYSBnaXZlbiBudW1iZXIgb2YgYml0cy4KICAqIElOIGFzc2VydGlvbjogbGVuZ3RoIDw9IDE2IGFuZCB2YWx1ZSBmaXRzIGluIGxlbmd0aCBiaXRzLgogICovCi0jaWZkZWYgREVCVUcKKyNpZmRlZiBaTElCX0RFQlVHCiBsb2NhbCB2b2lkIHNlbmRfYml0cyAgICAgIE9GKChkZWZsYXRlX3N0YXRlICpzLCBpbnQgdmFsdWUsIGludCBsZW5ndGgpKTsKIAogbG9jYWwgdm9pZCBzZW5kX2JpdHMocywgdmFsdWUsIGxlbmd0aCkKQEAgLTIwOCwxMiArMjA2LDEyIEBACiAgICAgICAgIHMtPmJpX3ZhbGlkICs9IGxlbmd0aDsKICAgICB9CiB9Ci0jZWxzZSAvKiAhREVCVUcgKi8KKyNlbHNlIC8qICFaTElCX0RFQlVHICovCiAKICNkZWZpbmUgc2VuZF9iaXRzKHMsIHZhbHVlLCBsZW5ndGgpIFwKIHsgaW50IGxlbiA9IGxlbmd0aDtcCiAgIGlmIChzLT5iaV92YWxpZCA+IChpbnQpQnVmX3NpemUgLSBsZW4pIHtcCi0gICAgaW50IHZhbCA9IHZhbHVlO1wKKyAgICBpbnQgdmFsID0gKGludCl2YWx1ZTtcCiAgICAgcy0+YmlfYnVmIHw9ICh1c2gpdmFsIDw8IHMtPmJpX3ZhbGlkO1wKICAgICBwdXRfc2hvcnQocywgcy0+YmlfYnVmKTtcCiAgICAgcy0+YmlfYnVmID0gKHVzaCl2YWwgPj4gKEJ1Zl9zaXplIC0gcy0+YmlfdmFsaWQpO1wKQEAgLTIyMyw3ICsyMjEsNyBAQAogICAgIHMtPmJpX3ZhbGlkICs9IGxlbjtcCiAgIH1cCiB9Ci0jZW5kaWYgLyogREVCVUcgKi8KKyNlbmRpZiAvKiBaTElCX0RFQlVHICovCiAKIAogLyogdGhlIGFyZ3VtZW50cyBtdXN0IG5vdCBoYXZlIHNpZGUgZWZmZWN0cyAqLwpAQCAtMzE3LDcgKzMxNSw3IEBACiAgKiBHZW5lcmVyYXRlIHRoZSBmaWxlIHRyZWVzLmggZGVzY3JpYmluZyB0aGUgc3RhdGljIHRyZWVzLgogICovCiAjaWZkZWYgR0VOX1RSRUVTX0gKLSMgIGlmbmRlZiBERUJVRworIyAgaWZuZGVmIFpMSUJfREVCVUcKICMgICAgaW5jbHVkZSA8c3RkaW8uaD4KICMgIGVuZGlmCiAKQEAgLTM5NCw3ICszOTIsNyBAQAogCiAgICAgcy0+YmlfYnVmID0gMDsKICAgICBzLT5iaV92YWxpZCA9IDA7Ci0jaWZkZWYgREVCVUcKKyNpZmRlZiBaTElCX0RFQlVHCiAgICAgcy0+Y29tcHJlc3NlZF9sZW4gPSAwTDsKICAgICBzLT5iaXRzX3NlbnQgPSAwTDsKICNlbmRpZgpAQCAtNTIyLDEyICs1MjAsMTIgQEAKICAgICAgICAgeGJpdHMgPSAwOwogICAgICAgICBpZiAobiA+PSBiYXNlKSB4Yml0cyA9IGV4dHJhW24tYmFzZV07CiAgICAgICAgIGYgPSB0cmVlW25dLkZyZXE7Ci0gICAgICAgIHMtPm9wdF9sZW4gKz0gKHVsZylmICogKGJpdHMgKyB4Yml0cyk7Ci0gICAgICAgIGlmIChzdHJlZSkgcy0+c3RhdGljX2xlbiArPSAodWxnKWYgKiAoc3RyZWVbbl0uTGVuICsgeGJpdHMpOworICAgICAgICBzLT5vcHRfbGVuICs9ICh1bGcpZiAqICh1bnNpZ25lZCkoYml0cyArIHhiaXRzKTsKKyAgICAgICAgaWYgKHN0cmVlKSBzLT5zdGF0aWNfbGVuICs9ICh1bGcpZiAqICh1bnNpZ25lZCkoc3RyZWVbbl0uTGVuICsgeGJpdHMpOwogICAgIH0KICAgICBpZiAob3ZlcmZsb3cgPT0gMCkgcmV0dXJuOwogCi0gICAgVHJhY2UoKHN0ZGVyciwiXG5iaXQgbGVuZ3RoIG92ZXJmbG93XG4iKSk7CisgICAgVHJhY2V2KChzdGRlcnIsIlxuYml0IGxlbmd0aCBvdmVyZmxvd1xuIikpOwogICAgIC8qIFRoaXMgaGFwcGVucyBmb3IgZXhhbXBsZSBvbiBvYmoyIGFuZCBwaWMgb2YgdGhlIENhbGdhcnkgY29ycHVzICovCiAKICAgICAvKiBGaW5kIHRoZSBmaXJzdCBiaXQgbGVuZ3RoIHdoaWNoIGNvdWxkIGluY3JlYXNlOiAqLwpAQCAtNTU0LDkgKzU1Miw4IEBACiAgICAgICAgICAgICBtID0gcy0+aGVhcFstLWhdOwogICAgICAgICAgICAgaWYgKG0gPiBtYXhfY29kZSkgY29udGludWU7CiAgICAgICAgICAgICBpZiAoKHVuc2lnbmVkKSB0cmVlW21dLkxlbiAhPSAodW5zaWduZWQpIGJpdHMpIHsKLSAgICAgICAgICAgICAgICBUcmFjZSgoc3RkZXJyLCJjb2RlICVkIGJpdHMgJWQtPiVkXG4iLCBtLCB0cmVlW21dLkxlbiwgYml0cykpOwotICAgICAgICAgICAgICAgIHMtPm9wdF9sZW4gKz0gKChsb25nKWJpdHMgLSAobG9uZyl0cmVlW21dLkxlbikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoobG9uZyl0cmVlW21dLkZyZXE7CisgICAgICAgICAgICAgICAgVHJhY2V2KChzdGRlcnIsImNvZGUgJWQgYml0cyAlZC0+JWRcbiIsIG0sIHRyZWVbbV0uTGVuLCBiaXRzKSk7CisgICAgICAgICAgICAgICAgcy0+b3B0X2xlbiArPSAoKHVsZyliaXRzIC0gdHJlZVttXS5MZW4pICogdHJlZVttXS5GcmVxOwogICAgICAgICAgICAgICAgIHRyZWVbbV0uTGVuID0gKHVzaCliaXRzOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgbi0tOwpAQCAtNTc4LDcgKzU3NSw3IEBACiAgICAgdXNoZiAqYmxfY291bnQ7ICAgICAgICAgICAgLyogbnVtYmVyIG9mIGNvZGVzIGF0IGVhY2ggYml0IGxlbmd0aCAqLwogewogICAgIHVzaCBuZXh0X2NvZGVbTUFYX0JJVFMrMV07IC8qIG5leHQgY29kZSB2YWx1ZSBmb3IgZWFjaCBiaXQgbGVuZ3RoICovCi0gICAgdXNoIGNvZGUgPSAwOyAgICAgICAgICAgICAgLyogcnVubmluZyBjb2RlIHZhbHVlICovCisgICAgdW5zaWduZWQgY29kZSA9IDA7ICAgICAgICAgLyogcnVubmluZyBjb2RlIHZhbHVlICovCiAgICAgaW50IGJpdHM7ICAgICAgICAgICAgICAgICAgLyogYml0IGluZGV4ICovCiAgICAgaW50IG47ICAgICAgICAgICAgICAgICAgICAgLyogY29kZSBpbmRleCAqLwogCkBAIC01ODYsNyArNTgzLDggQEAKICAgICAgKiB3aXRob3V0IGJpdCByZXZlcnNhbC4KICAgICAgKi8KICAgICBmb3IgKGJpdHMgPSAxOyBiaXRzIDw9IE1BWF9CSVRTOyBiaXRzKyspIHsKLSAgICAgICAgbmV4dF9jb2RlW2JpdHNdID0gY29kZSA9IChjb2RlICsgYmxfY291bnRbYml0cy0xXSkgPDwgMTsKKyAgICAgICAgY29kZSA9IChjb2RlICsgYmxfY291bnRbYml0cy0xXSkgPDwgMTsKKyAgICAgICAgbmV4dF9jb2RlW2JpdHNdID0gKHVzaCljb2RlOwogICAgIH0KICAgICAvKiBDaGVjayB0aGF0IHRoZSBiaXQgY291bnRzIGluIGJsX2NvdW50IGFyZSBjb25zaXN0ZW50LiBUaGUgbGFzdCBjb2RlCiAgICAgICogbXVzdCBiZSBhbGwgb25lcy4KQEAgLTU5OSw3ICs1OTcsNyBAQAogICAgICAgICBpbnQgbGVuID0gdHJlZVtuXS5MZW47CiAgICAgICAgIGlmIChsZW4gPT0gMCkgY29udGludWU7CiAgICAgICAgIC8qIE5vdyByZXZlcnNlIHRoZSBiaXRzICovCi0gICAgICAgIHRyZWVbbl0uQ29kZSA9IGJpX3JldmVyc2UobmV4dF9jb2RlW2xlbl0rKywgbGVuKTsKKyAgICAgICAgdHJlZVtuXS5Db2RlID0gKHVzaCliaV9yZXZlcnNlKG5leHRfY29kZVtsZW5dKyssIGxlbik7CiAKICAgICAgICAgVHJhY2Vjdih0cmVlICE9IHN0YXRpY19sdHJlZSwgKHN0ZGVyciwiXG5uICUzZCAlYyBsICUyZCBjICU0eCAoJXgpICIsCiAgICAgICAgICAgICAgbiwgKGlzZ3JhcGgobikgPyBuIDogJyAnKSwgbGVuLCB0cmVlW25dLkNvZGUsIG5leHRfY29kZVtsZW5dLTEpKTsKQEAgLTgyMSw3ICs4MTksNyBAQAogICAgICAgICBpZiAocy0+YmxfdHJlZVtibF9vcmRlclttYXhfYmxpbmRleF1dLkxlbiAhPSAwKSBicmVhazsKICAgICB9CiAgICAgLyogVXBkYXRlIG9wdF9sZW4gdG8gaW5jbHVkZSB0aGUgYml0IGxlbmd0aCB0cmVlIGFuZCBjb3VudHMgKi8KLSAgICBzLT5vcHRfbGVuICs9IDMqKG1heF9ibGluZGV4KzEpICsgNSs1KzQ7CisgICAgcy0+b3B0X2xlbiArPSAzKigodWxnKW1heF9ibGluZGV4KzEpICsgNSs1KzQ7CiAgICAgVHJhY2V2KChzdGRlcnIsICJcbmR5biB0cmVlczogZHluICVsZCwgc3RhdCAlbGQiLAogICAgICAgICAgICAgcy0+b3B0X2xlbiwgcy0+c3RhdGljX2xlbikpOwogCkBAIC04NjksMTEgKzg2NywxNyBAQAogICAgIGludCBsYXN0OyAgICAgICAgIC8qIG9uZSBpZiB0aGlzIGlzIHRoZSBsYXN0IGJsb2NrIGZvciBhIGZpbGUgKi8KIHsKICAgICBzZW5kX2JpdHMocywgKFNUT1JFRF9CTE9DSzw8MSkrbGFzdCwgMyk7ICAgIC8qIHNlbmQgYmxvY2sgdHlwZSAqLwotI2lmZGVmIERFQlVHCisgICAgYmlfd2luZHVwKHMpOyAgICAgICAgLyogYWxpZ24gb24gYnl0ZSBib3VuZGFyeSAqLworICAgIHB1dF9zaG9ydChzLCAodXNoKXN0b3JlZF9sZW4pOworICAgIHB1dF9zaG9ydChzLCAodXNoKX5zdG9yZWRfbGVuKTsKKyAgICB6bWVtY3B5KHMtPnBlbmRpbmdfYnVmICsgcy0+cGVuZGluZywgKEJ5dGVmICopYnVmLCBzdG9yZWRfbGVuKTsKKyAgICBzLT5wZW5kaW5nICs9IHN0b3JlZF9sZW47CisjaWZkZWYgWkxJQl9ERUJVRwogICAgIHMtPmNvbXByZXNzZWRfbGVuID0gKHMtPmNvbXByZXNzZWRfbGVuICsgMyArIDcpICYgKHVsZyl+N0w7CiAgICAgcy0+Y29tcHJlc3NlZF9sZW4gKz0gKHN0b3JlZF9sZW4gKyA0KSA8PCAzOworICAgIHMtPmJpdHNfc2VudCArPSAyKjE2OworICAgIHMtPmJpdHNfc2VudCArPSBzdG9yZWRfbGVuPDwzOwogI2VuZGlmCi0gICAgY29weV9ibG9jayhzLCBidWYsICh1bnNpZ25lZClzdG9yZWRfbGVuLCAxKTsgLyogd2l0aCBoZWFkZXIgKi8KIH0KIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC04OTQsNyArODk4LDcgQEAKIHsKICAgICBzZW5kX2JpdHMocywgU1RBVElDX1RSRUVTPDwxLCAzKTsKICAgICBzZW5kX2NvZGUocywgRU5EX0JMT0NLLCBzdGF0aWNfbHRyZWUpOwotI2lmZGVmIERFQlVHCisjaWZkZWYgWkxJQl9ERUJVRwogICAgIHMtPmNvbXByZXNzZWRfbGVuICs9IDEwTDsgLyogMyBmb3IgYmxvY2sgdHlwZSwgNyBmb3IgRU9CICovCiAjZW5kaWYKICAgICBiaV9mbHVzaChzKTsKQEAgLTkwMiw3ICs5MDYsNyBAQAogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqIERldGVybWluZSB0aGUgYmVzdCBlbmNvZGluZyBmb3IgdGhlIGN1cnJlbnQgYmxvY2s6IGR5bmFtaWMgdHJlZXMsIHN0YXRpYwotICogdHJlZXMgb3Igc3RvcmUsIGFuZCBvdXRwdXQgdGhlIGVuY29kZWQgYmxvY2sgdG8gdGhlIHppcCBmaWxlLgorICogdHJlZXMgb3Igc3RvcmUsIGFuZCB3cml0ZSBvdXQgdGhlIGVuY29kZWQgYmxvY2suCiAgKi8KIHZvaWQgWkxJQl9JTlRFUk5BTCBfdHJfZmx1c2hfYmxvY2socywgYnVmLCBzdG9yZWRfbGVuLCBsYXN0KQogICAgIGRlZmxhdGVfc3RhdGUgKnM7CkBAIC05NzQsNyArOTc4LDcgQEAKICAgICAgICAgc2VuZF9iaXRzKHMsIChTVEFUSUNfVFJFRVM8PDEpK2xhc3QsIDMpOwogICAgICAgICBjb21wcmVzc19ibG9jayhzLCAoY29uc3QgY3RfZGF0YSAqKXN0YXRpY19sdHJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGN0X2RhdGEgKilzdGF0aWNfZHRyZWUpOwotI2lmZGVmIERFQlVHCisjaWZkZWYgWkxJQl9ERUJVRwogICAgICAgICBzLT5jb21wcmVzc2VkX2xlbiArPSAzICsgcy0+c3RhdGljX2xlbjsKICNlbmRpZgogICAgIH0gZWxzZSB7CkBAIC05ODMsNyArOTg3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgbWF4X2JsaW5kZXgrMSk7CiAgICAgICAgIGNvbXByZXNzX2Jsb2NrKHMsIChjb25zdCBjdF9kYXRhICopcy0+ZHluX2x0cmVlLAogICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY3RfZGF0YSAqKXMtPmR5bl9kdHJlZSk7Ci0jaWZkZWYgREVCVUcKKyNpZmRlZiBaTElCX0RFQlVHCiAgICAgICAgIHMtPmNvbXByZXNzZWRfbGVuICs9IDMgKyBzLT5vcHRfbGVuOwogI2VuZGlmCiAgICAgfQpAQCAtOTk1LDcgKzk5OSw3IEBACiAKICAgICBpZiAobGFzdCkgewogICAgICAgICBiaV93aW5kdXAocyk7Ci0jaWZkZWYgREVCVUcKKyNpZmRlZiBaTElCX0RFQlVHCiAgICAgICAgIHMtPmNvbXByZXNzZWRfbGVuICs9IDc7ICAvKiBhbGlnbiBvbiBieXRlIGJvdW5kYXJ5ICovCiAjZW5kaWYKICAgICB9CkBAIC0xMDkwLDcgKzEwOTQsNyBAQAogICAgICAgICAgICAgc2VuZF9jb2RlKHMsIGNvZGUsIGR0cmVlKTsgICAgICAgLyogc2VuZCB0aGUgZGlzdGFuY2UgY29kZSAqLwogICAgICAgICAgICAgZXh0cmEgPSBleHRyYV9kYml0c1tjb2RlXTsKICAgICAgICAgICAgIGlmIChleHRyYSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgZGlzdCAtPSBiYXNlX2Rpc3RbY29kZV07CisgICAgICAgICAgICAgICAgZGlzdCAtPSAodW5zaWduZWQpYmFzZV9kaXN0W2NvZGVdOwogICAgICAgICAgICAgICAgIHNlbmRfYml0cyhzLCBkaXN0LCBleHRyYSk7ICAgLyogc2VuZCB0aGUgZXh0cmEgZGlzdGFuY2UgYml0cyAqLwogICAgICAgICAgICAgfQogICAgICAgICB9IC8qIGxpdGVyYWwgb3IgbWF0Y2ggcGFpciA/ICovCkBAIC0xMTkzLDM0ICsxMTk3LDcgQEAKICAgICB9CiAgICAgcy0+YmlfYnVmID0gMDsKICAgICBzLT5iaV92YWxpZCA9IDA7Ci0jaWZkZWYgREVCVUcKKyNpZmRlZiBaTElCX0RFQlVHCiAgICAgcy0+Yml0c19zZW50ID0gKHMtPmJpdHNfc2VudCs3KSAmIH43OwogI2VuZGlmCiB9Ci0KLS8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICogQ29weSBhIHN0b3JlZCBibG9jaywgc3RvcmluZyBmaXJzdCB0aGUgbGVuZ3RoIGFuZCBpdHMKLSAqIG9uZSdzIGNvbXBsZW1lbnQgaWYgcmVxdWVzdGVkLgotICovCi1sb2NhbCB2b2lkIGNvcHlfYmxvY2socywgYnVmLCBsZW4sIGhlYWRlcikKLSAgICBkZWZsYXRlX3N0YXRlICpzOwotICAgIGNoYXJmICAgICpidWY7ICAgIC8qIHRoZSBpbnB1dCBkYXRhICovCi0gICAgdW5zaWduZWQgbGVuOyAgICAgLyogaXRzIGxlbmd0aCAqLwotICAgIGludCAgICAgIGhlYWRlcjsgIC8qIHRydWUgaWYgYmxvY2sgaGVhZGVyIG11c3QgYmUgd3JpdHRlbiAqLwotewotICAgIGJpX3dpbmR1cChzKTsgICAgICAgIC8qIGFsaWduIG9uIGJ5dGUgYm91bmRhcnkgKi8KLQotICAgIGlmIChoZWFkZXIpIHsKLSAgICAgICAgcHV0X3Nob3J0KHMsICh1c2gpbGVuKTsKLSAgICAgICAgcHV0X3Nob3J0KHMsICh1c2gpfmxlbik7Ci0jaWZkZWYgREVCVUcKLSAgICAgICAgcy0+Yml0c19zZW50ICs9IDIqMTY7Ci0jZW5kaWYKLSAgICB9Ci0jaWZkZWYgREVCVUcKLSAgICBzLT5iaXRzX3NlbnQgKz0gKHVsZylsZW48PDM7Ci0jZW5kaWYKLSAgICB3aGlsZSAobGVuLS0pIHsKLSAgICAgICAgcHV0X2J5dGUocywgKmJ1ZisrKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvdW5jb21wci5jIGIvTW9kdWxlcy96bGliL3VuY29tcHIuYwppbmRleCAyNDJlOTQ5Li5mMDNhMWE4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvdW5jb21wci5jCisrKyBiL01vZHVsZXMvemxpYi91bmNvbXByLmMKQEAgLTEsNSArMSw1IEBACiAvKiB1bmNvbXByLmMgLS0gZGVjb21wcmVzcyBhIG1lbW9yeSBidWZmZXIKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDAzLCAyMDEwIEplYW4tbG91cCBHYWlsbHkuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMywgMjAxMCwgMjAxNCwgMjAxNiBKZWFuLWxvdXAgR2FpbGx5LCBNYXJrIEFkbGVyCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtOSw1MSArOSw4NSBAQAogI2luY2x1ZGUgInpsaWIuaCIKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgIERlY29tcHJlc3NlcyB0aGUgc291cmNlIGJ1ZmZlciBpbnRvIHRoZSBkZXN0aW5hdGlvbiBidWZmZXIuICBzb3VyY2VMZW4gaXMKLSAgIHRoZSBieXRlIGxlbmd0aCBvZiB0aGUgc291cmNlIGJ1ZmZlci4gVXBvbiBlbnRyeSwgZGVzdExlbiBpcyB0aGUgdG90YWwKLSAgIHNpemUgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgd2hpY2ggbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUKLSAgIGVudGlyZSB1bmNvbXByZXNzZWQgZGF0YS4gKFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBtdXN0IGhhdmUKLSAgIGJlZW4gc2F2ZWQgcHJldmlvdXNseSBieSB0aGUgY29tcHJlc3NvciBhbmQgdHJhbnNtaXR0ZWQgdG8gdGhlIGRlY29tcHJlc3NvcgotICAgYnkgc29tZSBtZWNoYW5pc20gb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBjb21wcmVzc2lvbiBsaWJyYXJ5LikKLSAgIFVwb24gZXhpdCwgZGVzdExlbiBpcyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIGNvbXByZXNzZWQgYnVmZmVyLgorICAgICBEZWNvbXByZXNzZXMgdGhlIHNvdXJjZSBidWZmZXIgaW50byB0aGUgZGVzdGluYXRpb24gYnVmZmVyLiAgKnNvdXJjZUxlbiBpcworICAgdGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBzb3VyY2UgYnVmZmVyLiBVcG9uIGVudHJ5LCAqZGVzdExlbiBpcyB0aGUgdG90YWwgc2l6ZQorICAgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgd2hpY2ggbXVzdCBiZSBsYXJnZSBlbm91Z2ggdG8gaG9sZCB0aGUgZW50aXJlCisgICB1bmNvbXByZXNzZWQgZGF0YS4gKFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBtdXN0IGhhdmUgYmVlbiBzYXZlZAorICAgcHJldmlvdXNseSBieSB0aGUgY29tcHJlc3NvciBhbmQgdHJhbnNtaXR0ZWQgdG8gdGhlIGRlY29tcHJlc3NvciBieSBzb21lCisgICBtZWNoYW5pc20gb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBjb21wcmVzc2lvbiBsaWJyYXJ5LikgVXBvbiBleGl0LAorICAgKmRlc3RMZW4gaXMgdGhlIHNpemUgb2YgdGhlIGRlY29tcHJlc3NlZCBkYXRhIGFuZCAqc291cmNlTGVuIGlzIHRoZSBudW1iZXIKKyAgIG9mIHNvdXJjZSBieXRlcyBjb25zdW1lZC4gVXBvbiByZXR1cm4sIHNvdXJjZSArICpzb3VyY2VMZW4gcG9pbnRzIHRvIHRoZQorICAgZmlyc3QgdW51c2VkIGlucHV0IGJ5dGUuCiAKLSAgICAgdW5jb21wcmVzcyByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdAotICAgZW5vdWdoIG1lbW9yeSwgWl9CVUZfRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0Ci0gICBidWZmZXIsIG9yIFpfREFUQV9FUlJPUiBpZiB0aGUgaW5wdXQgZGF0YSB3YXMgY29ycnVwdGVkLgorICAgICB1bmNvbXByZXNzIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAorICAgbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQgYnVmZmVyLCBvcgorICAgWl9EQVRBX0VSUk9SIGlmIHRoZSBpbnB1dCBkYXRhIHdhcyBjb3JydXB0ZWQsIGluY2x1ZGluZyBpZiB0aGUgaW5wdXQgZGF0YSBpcworICAgYW4gaW5jb21wbGV0ZSB6bGliIHN0cmVhbS4KICovCitpbnQgWkVYUE9SVCB1bmNvbXByZXNzMiAoZGVzdCwgZGVzdExlbiwgc291cmNlLCBzb3VyY2VMZW4pCisgICAgQnl0ZWYgKmRlc3Q7CisgICAgdUxvbmdmICpkZXN0TGVuOworICAgIGNvbnN0IEJ5dGVmICpzb3VyY2U7CisgICAgdUxvbmcgKnNvdXJjZUxlbjsKK3sKKyAgICB6X3N0cmVhbSBzdHJlYW07CisgICAgaW50IGVycjsKKyAgICBjb25zdCB1SW50IG1heCA9ICh1SW50KS0xOworICAgIHVMb25nIGxlbiwgbGVmdDsKKyAgICBCeXRlIGJ1ZlsxXTsgICAgLyogZm9yIGRldGVjdGlvbiBvZiBpbmNvbXBsZXRlIHN0cmVhbSB3aGVuICpkZXN0TGVuID09IDAgKi8KKworICAgIGxlbiA9ICpzb3VyY2VMZW47CisgICAgaWYgKCpkZXN0TGVuKSB7CisgICAgICAgIGxlZnQgPSAqZGVzdExlbjsKKyAgICAgICAgKmRlc3RMZW4gPSAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbGVmdCA9IDE7CisgICAgICAgIGRlc3QgPSBidWY7CisgICAgfQorCisgICAgc3RyZWFtLm5leHRfaW4gPSAoel9jb25zdCBCeXRlZiAqKXNvdXJjZTsKKyAgICBzdHJlYW0uYXZhaWxfaW4gPSAwOworICAgIHN0cmVhbS56YWxsb2MgPSAoYWxsb2NfZnVuYykwOworICAgIHN0cmVhbS56ZnJlZSA9IChmcmVlX2Z1bmMpMDsKKyAgICBzdHJlYW0ub3BhcXVlID0gKHZvaWRwZikwOworCisgICAgZXJyID0gaW5mbGF0ZUluaXQoJnN0cmVhbSk7CisgICAgaWYgKGVyciAhPSBaX09LKSByZXR1cm4gZXJyOworCisgICAgc3RyZWFtLm5leHRfb3V0ID0gZGVzdDsKKyAgICBzdHJlYW0uYXZhaWxfb3V0ID0gMDsKKworICAgIGRvIHsKKyAgICAgICAgaWYgKHN0cmVhbS5hdmFpbF9vdXQgPT0gMCkgeworICAgICAgICAgICAgc3RyZWFtLmF2YWlsX291dCA9IGxlZnQgPiAodUxvbmcpbWF4ID8gbWF4IDogKHVJbnQpbGVmdDsKKyAgICAgICAgICAgIGxlZnQgLT0gc3RyZWFtLmF2YWlsX291dDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3RyZWFtLmF2YWlsX2luID09IDApIHsKKyAgICAgICAgICAgIHN0cmVhbS5hdmFpbF9pbiA9IGxlbiA+ICh1TG9uZyltYXggPyBtYXggOiAodUludClsZW47CisgICAgICAgICAgICBsZW4gLT0gc3RyZWFtLmF2YWlsX2luOworICAgICAgICB9CisgICAgICAgIGVyciA9IGluZmxhdGUoJnN0cmVhbSwgWl9OT19GTFVTSCk7CisgICAgfSB3aGlsZSAoZXJyID09IFpfT0spOworCisgICAgKnNvdXJjZUxlbiAtPSBsZW4gKyBzdHJlYW0uYXZhaWxfaW47CisgICAgaWYgKGRlc3QgIT0gYnVmKQorICAgICAgICAqZGVzdExlbiA9IHN0cmVhbS50b3RhbF9vdXQ7CisgICAgZWxzZSBpZiAoc3RyZWFtLnRvdGFsX291dCAmJiBlcnIgPT0gWl9CVUZfRVJST1IpCisgICAgICAgIGxlZnQgPSAxOworCisgICAgaW5mbGF0ZUVuZCgmc3RyZWFtKTsKKyAgICByZXR1cm4gZXJyID09IFpfU1RSRUFNX0VORCA/IFpfT0sgOgorICAgICAgICAgICBlcnIgPT0gWl9ORUVEX0RJQ1QgPyBaX0RBVEFfRVJST1IgIDoKKyAgICAgICAgICAgZXJyID09IFpfQlVGX0VSUk9SICYmIGxlZnQgKyBzdHJlYW0uYXZhaWxfb3V0ID8gWl9EQVRBX0VSUk9SIDoKKyAgICAgICAgICAgZXJyOworfQorCiBpbnQgWkVYUE9SVCB1bmNvbXByZXNzIChkZXN0LCBkZXN0TGVuLCBzb3VyY2UsIHNvdXJjZUxlbikKICAgICBCeXRlZiAqZGVzdDsKICAgICB1TG9uZ2YgKmRlc3RMZW47CiAgICAgY29uc3QgQnl0ZWYgKnNvdXJjZTsKICAgICB1TG9uZyBzb3VyY2VMZW47CiB7Ci0gICAgel9zdHJlYW0gc3RyZWFtOwotICAgIGludCBlcnI7Ci0KLSAgICBzdHJlYW0ubmV4dF9pbiA9ICh6X2NvbnN0IEJ5dGVmICopc291cmNlOwotICAgIHN0cmVhbS5hdmFpbF9pbiA9ICh1SW50KXNvdXJjZUxlbjsKLSAgICAvKiBDaGVjayBmb3Igc291cmNlID4gNjRLIG9uIDE2LWJpdCBtYWNoaW5lOiAqLwotICAgIGlmICgodUxvbmcpc3RyZWFtLmF2YWlsX2luICE9IHNvdXJjZUxlbikgcmV0dXJuIFpfQlVGX0VSUk9SOwotCi0gICAgc3RyZWFtLm5leHRfb3V0ID0gZGVzdDsKLSAgICBzdHJlYW0uYXZhaWxfb3V0ID0gKHVJbnQpKmRlc3RMZW47Ci0gICAgaWYgKCh1TG9uZylzdHJlYW0uYXZhaWxfb3V0ICE9ICpkZXN0TGVuKSByZXR1cm4gWl9CVUZfRVJST1I7Ci0KLSAgICBzdHJlYW0uemFsbG9jID0gKGFsbG9jX2Z1bmMpMDsKLSAgICBzdHJlYW0uemZyZWUgPSAoZnJlZV9mdW5jKTA7Ci0KLSAgICBlcnIgPSBpbmZsYXRlSW5pdCgmc3RyZWFtKTsKLSAgICBpZiAoZXJyICE9IFpfT0spIHJldHVybiBlcnI7Ci0KLSAgICBlcnIgPSBpbmZsYXRlKCZzdHJlYW0sIFpfRklOSVNIKTsKLSAgICBpZiAoZXJyICE9IFpfU1RSRUFNX0VORCkgewotICAgICAgICBpbmZsYXRlRW5kKCZzdHJlYW0pOwotICAgICAgICBpZiAoZXJyID09IFpfTkVFRF9ESUNUIHx8IChlcnIgPT0gWl9CVUZfRVJST1IgJiYgc3RyZWFtLmF2YWlsX2luID09IDApKQotICAgICAgICAgICAgcmV0dXJuIFpfREFUQV9FUlJPUjsKLSAgICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0gICAgKmRlc3RMZW4gPSBzdHJlYW0udG90YWxfb3V0OwotCi0gICAgZXJyID0gaW5mbGF0ZUVuZCgmc3RyZWFtKTsKLSAgICByZXR1cm4gZXJyOworICAgIHJldHVybiB1bmNvbXByZXNzMihkZXN0LCBkZXN0TGVuLCBzb3VyY2UsICZzb3VyY2VMZW4pOwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL3pjb25mLmggYi9Nb2R1bGVzL3psaWIvemNvbmYuaAppbmRleCA5OTg3YTc3Li41ZTFkNjhhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvemNvbmYuaAorKysgYi9Nb2R1bGVzL3psaWIvemNvbmYuaApAQCAtMSw1ICsxLDUgQEAKIC8qIHpjb25mLmggLS0gY29uZmlndXJhdGlvbiBvZiB0aGUgemxpYiBjb21wcmVzc2lvbiBsaWJyYXJ5Ci0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5LgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTYgSmVhbi1sb3VwIEdhaWxseSwgTWFyayBBZGxlcgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKQEAgLTE3LDcgKzE3LDcgQEAKICNpZmRlZiBaX1BSRUZJWCAgICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLwogIyAgZGVmaW5lIFpfUFJFRklYX1NFVAogCi0vKiBhbGwgbGlua2VkIHN5bWJvbHMgKi8KKy8qIGFsbCBsaW5rZWQgc3ltYm9scyBhbmQgaW5pdCBtYWNyb3MgKi8KICMgIGRlZmluZSBfZGlzdF9jb2RlICAgICAgICAgICAgel9fZGlzdF9jb2RlCiAjICBkZWZpbmUgX2xlbmd0aF9jb2RlICAgICAgICAgIHpfX2xlbmd0aF9jb2RlCiAjICBkZWZpbmUgX3RyX2FsaWduICAgICAgICAgICAgIHpfX3RyX2FsaWduCkBAIC0yOSw2ICsyOSw3IEBACiAjICBkZWZpbmUgYWRsZXIzMiAgICAgICAgICAgICAgIHpfYWRsZXIzMgogIyAgZGVmaW5lIGFkbGVyMzJfY29tYmluZSAgICAgICB6X2FkbGVyMzJfY29tYmluZQogIyAgZGVmaW5lIGFkbGVyMzJfY29tYmluZTY0ICAgICB6X2FkbGVyMzJfY29tYmluZTY0CisjICBkZWZpbmUgYWRsZXIzMl96ICAgICAgICAgICAgIHpfYWRsZXIzMl96CiAjICBpZm5kZWYgWl9TT0xPCiAjICAgIGRlZmluZSBjb21wcmVzcyAgICAgICAgICAgICAgel9jb21wcmVzcwogIyAgICBkZWZpbmUgY29tcHJlc3MyICAgICAgICAgICAgIHpfY29tcHJlc3MyCkBAIC0zNywxMCArMzgsMTQgQEAKICMgIGRlZmluZSBjcmMzMiAgICAgICAgICAgICAgICAgel9jcmMzMgogIyAgZGVmaW5lIGNyYzMyX2NvbWJpbmUgICAgICAgICB6X2NyYzMyX2NvbWJpbmUKICMgIGRlZmluZSBjcmMzMl9jb21iaW5lNjQgICAgICAgel9jcmMzMl9jb21iaW5lNjQKKyMgIGRlZmluZSBjcmMzMl96ICAgICAgICAgICAgICAgel9jcmMzMl96CiAjICBkZWZpbmUgZGVmbGF0ZSAgICAgICAgICAgICAgIHpfZGVmbGF0ZQogIyAgZGVmaW5lIGRlZmxhdGVCb3VuZCAgICAgICAgICB6X2RlZmxhdGVCb3VuZAogIyAgZGVmaW5lIGRlZmxhdGVDb3B5ICAgICAgICAgICB6X2RlZmxhdGVDb3B5CiAjICBkZWZpbmUgZGVmbGF0ZUVuZCAgICAgICAgICAgIHpfZGVmbGF0ZUVuZAorIyAgZGVmaW5lIGRlZmxhdGVHZXREaWN0aW9uYXJ5ICB6X2RlZmxhdGVHZXREaWN0aW9uYXJ5CisjICBkZWZpbmUgZGVmbGF0ZUluaXQgICAgICAgICAgIHpfZGVmbGF0ZUluaXQKKyMgIGRlZmluZSBkZWZsYXRlSW5pdDIgICAgICAgICAgel9kZWZsYXRlSW5pdDIKICMgIGRlZmluZSBkZWZsYXRlSW5pdDJfICAgICAgICAgel9kZWZsYXRlSW5pdDJfCiAjICBkZWZpbmUgZGVmbGF0ZUluaXRfICAgICAgICAgIHpfZGVmbGF0ZUluaXRfCiAjICBkZWZpbmUgZGVmbGF0ZVBhcmFtcyAgICAgICAgIHpfZGVmbGF0ZVBhcmFtcwpAQCAtNjcsNiArNzIsOCBAQAogIyAgICBkZWZpbmUgZ3plb2YgICAgICAgICAgICAgICAgIHpfZ3plb2YKICMgICAgZGVmaW5lIGd6ZXJyb3IgICAgICAgICAgICAgICB6X2d6ZXJyb3IKICMgICAgZGVmaW5lIGd6Zmx1c2ggICAgICAgICAgICAgICB6X2d6Zmx1c2gKKyMgICAgZGVmaW5lIGd6ZnJlYWQgICAgICAgICAgICAgICB6X2d6ZnJlYWQKKyMgICAgZGVmaW5lIGd6ZndyaXRlICAgICAgICAgICAgICB6X2d6ZndyaXRlCiAjICAgIGRlZmluZSBnemdldGMgICAgICAgICAgICAgICAgel9nemdldGMKICMgICAgZGVmaW5lIGd6Z2V0Y18gICAgICAgICAgICAgICB6X2d6Z2V0Y18KICMgICAgZGVmaW5lIGd6Z2V0cyAgICAgICAgICAgICAgICB6X2d6Z2V0cwpAQCAtNzgsNyArODUsNiBAQAogIyAgICAgIGRlZmluZSBnem9wZW5fdyAgICAgICAgICAgICAgel9nem9wZW5fdwogIyAgICBlbmRpZgogIyAgICBkZWZpbmUgZ3pwcmludGYgICAgICAgICAgICAgIHpfZ3pwcmludGYKLSMgICAgZGVmaW5lIGd6dnByaW50ZiAgICAgICAgICAgICB6X2d6dnByaW50ZgogIyAgICBkZWZpbmUgZ3pwdXRjICAgICAgICAgICAgICAgIHpfZ3pwdXRjCiAjICAgIGRlZmluZSBnenB1dHMgICAgICAgICAgICAgICAgel9nenB1dHMKICMgICAgZGVmaW5lIGd6cmVhZCAgICAgICAgICAgICAgICB6X2d6cmVhZApAQCAtODksMzIgKzk1LDM5IEBACiAjICAgIGRlZmluZSBnenRlbGwgICAgICAgICAgICAgICAgel9nenRlbGwKICMgICAgZGVmaW5lIGd6dGVsbDY0ICAgICAgICAgICAgICB6X2d6dGVsbDY0CiAjICAgIGRlZmluZSBnenVuZ2V0YyAgICAgICAgICAgICAgel9nenVuZ2V0YworIyAgICBkZWZpbmUgZ3p2cHJpbnRmICAgICAgICAgICAgIHpfZ3p2cHJpbnRmCiAjICAgIGRlZmluZSBnendyaXRlICAgICAgICAgICAgICAgel9nendyaXRlCiAjICBlbmRpZgogIyAgZGVmaW5lIGluZmxhdGUgICAgICAgICAgICAgICB6X2luZmxhdGUKICMgIGRlZmluZSBpbmZsYXRlQmFjayAgICAgICAgICAgel9pbmZsYXRlQmFjawogIyAgZGVmaW5lIGluZmxhdGVCYWNrRW5kICAgICAgICB6X2luZmxhdGVCYWNrRW5kCisjICBkZWZpbmUgaW5mbGF0ZUJhY2tJbml0ICAgICAgIHpfaW5mbGF0ZUJhY2tJbml0CiAjICBkZWZpbmUgaW5mbGF0ZUJhY2tJbml0XyAgICAgIHpfaW5mbGF0ZUJhY2tJbml0XworIyAgZGVmaW5lIGluZmxhdGVDb2Rlc1VzZWQgICAgICB6X2luZmxhdGVDb2Rlc1VzZWQKICMgIGRlZmluZSBpbmZsYXRlQ29weSAgICAgICAgICAgel9pbmZsYXRlQ29weQogIyAgZGVmaW5lIGluZmxhdGVFbmQgICAgICAgICAgICB6X2luZmxhdGVFbmQKKyMgIGRlZmluZSBpbmZsYXRlR2V0RGljdGlvbmFyeSAgel9pbmZsYXRlR2V0RGljdGlvbmFyeQogIyAgZGVmaW5lIGluZmxhdGVHZXRIZWFkZXIgICAgICB6X2luZmxhdGVHZXRIZWFkZXIKKyMgIGRlZmluZSBpbmZsYXRlSW5pdCAgICAgICAgICAgel9pbmZsYXRlSW5pdAorIyAgZGVmaW5lIGluZmxhdGVJbml0MiAgICAgICAgICB6X2luZmxhdGVJbml0MgogIyAgZGVmaW5lIGluZmxhdGVJbml0Ml8gICAgICAgICB6X2luZmxhdGVJbml0Ml8KICMgIGRlZmluZSBpbmZsYXRlSW5pdF8gICAgICAgICAgel9pbmZsYXRlSW5pdF8KICMgIGRlZmluZSBpbmZsYXRlTWFyayAgICAgICAgICAgel9pbmZsYXRlTWFyawogIyAgZGVmaW5lIGluZmxhdGVQcmltZSAgICAgICAgICB6X2luZmxhdGVQcmltZQogIyAgZGVmaW5lIGluZmxhdGVSZXNldCAgICAgICAgICB6X2luZmxhdGVSZXNldAogIyAgZGVmaW5lIGluZmxhdGVSZXNldDIgICAgICAgICB6X2luZmxhdGVSZXNldDIKKyMgIGRlZmluZSBpbmZsYXRlUmVzZXRLZWVwICAgICAgel9pbmZsYXRlUmVzZXRLZWVwCiAjICBkZWZpbmUgaW5mbGF0ZVNldERpY3Rpb25hcnkgIHpfaW5mbGF0ZVNldERpY3Rpb25hcnkKLSMgIGRlZmluZSBpbmZsYXRlR2V0RGljdGlvbmFyeSAgel9pbmZsYXRlR2V0RGljdGlvbmFyeQogIyAgZGVmaW5lIGluZmxhdGVTeW5jICAgICAgICAgICB6X2luZmxhdGVTeW5jCiAjICBkZWZpbmUgaW5mbGF0ZVN5bmNQb2ludCAgICAgIHpfaW5mbGF0ZVN5bmNQb2ludAogIyAgZGVmaW5lIGluZmxhdGVVbmRlcm1pbmUgICAgICB6X2luZmxhdGVVbmRlcm1pbmUKLSMgIGRlZmluZSBpbmZsYXRlUmVzZXRLZWVwICAgICAgel9pbmZsYXRlUmVzZXRLZWVwCisjICBkZWZpbmUgaW5mbGF0ZVZhbGlkYXRlICAgICAgIHpfaW5mbGF0ZVZhbGlkYXRlCiAjICBkZWZpbmUgaW5mbGF0ZV9jb3B5cmlnaHQgICAgIHpfaW5mbGF0ZV9jb3B5cmlnaHQKICMgIGRlZmluZSBpbmZsYXRlX2Zhc3QgICAgICAgICAgel9pbmZsYXRlX2Zhc3QKICMgIGRlZmluZSBpbmZsYXRlX3RhYmxlICAgICAgICAgel9pbmZsYXRlX3RhYmxlCiAjICBpZm5kZWYgWl9TT0xPCiAjICAgIGRlZmluZSB1bmNvbXByZXNzICAgICAgICAgICAgel91bmNvbXByZXNzCisjICAgIGRlZmluZSB1bmNvbXByZXNzMiAgICAgICAgICAgel91bmNvbXByZXNzMgogIyAgZW5kaWYKICMgIGRlZmluZSB6RXJyb3IgICAgICAgICAgICAgICAgel96RXJyb3IKICMgIGlmbmRlZiBaX1NPTE8KQEAgLTIyNCw5ICsyMzcsMTkgQEAKICMgIGRlZmluZSB6X2NvbnN0CiAjZW5kaWYKIAotLyogU29tZSBNYWMgY29tcGlsZXJzIG1lcmdlIGFsbCAuaCBmaWxlcyBpbmNvcnJlY3RseTogKi8KLSNpZiBkZWZpbmVkKF9fTVdFUktTX18pfHxkZWZpbmVkKGFwcGxlYyl8fGRlZmluZWQoVEhJTktfQyl8fGRlZmluZWQoX19TQ19fKQotIyAgZGVmaW5lIE5PX0RVTU1ZX0RFQ0wKKyNpZmRlZiBaX1NPTE8KKyAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB6X3NpemVfdDsKKyNlbHNlCisjICBkZWZpbmUgel9sb25nbG9uZyBsb25nIGxvbmcKKyMgIGlmIGRlZmluZWQoTk9fU0laRV9UKQorICAgICB0eXBlZGVmIHVuc2lnbmVkIE5PX1NJWkVfVCB6X3NpemVfdDsKKyMgIGVsaWYgZGVmaW5lZChTVERDKQorIyAgICBpbmNsdWRlIDxzdGRkZWYuaD4KKyAgICAgdHlwZWRlZiBzaXplX3Qgel9zaXplX3Q7CisjICBlbHNlCisgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB6X3NpemVfdDsKKyMgIGVuZGlmCisjICB1bmRlZiB6X2xvbmdsb25nCiAjZW5kaWYKIAogLyogTWF4aW11bSB2YWx1ZSBmb3IgbWVtTGV2ZWwgaW4gZGVmbGF0ZUluaXQyICovCkBAIC0yNTYsNyArMjc5LDcgQEAKICBPZiBjb3Vyc2UgdGhpcyB3aWxsIGdlbmVyYWxseSBkZWdyYWRlIGNvbXByZXNzaW9uICh0aGVyZSdzIG5vIGZyZWUgbHVuY2gpLgogCiAgICBUaGUgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgaW5mbGF0ZSBhcmUgKGluIGJ5dGVzKSAxIDw8IHdpbmRvd0JpdHMKLSB0aGF0IGlzLCAzMksgZm9yIHdpbmRvd0JpdHM9MTUgKGRlZmF1bHQgdmFsdWUpIHBsdXMgYSBmZXcga2lsb2J5dGVzCisgdGhhdCBpcywgMzJLIGZvciB3aW5kb3dCaXRzPTE1IChkZWZhdWx0IHZhbHVlKSBwbHVzIGFib3V0IDcga2lsb2J5dGVzCiAgZm9yIHNtYWxsIG9iamVjdHMuCiAqLwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvemNvbmYuaC5jbWFrZWluIGIvTW9kdWxlcy96bGliL3pjb25mLmguY21ha2VpbgppbmRleCAwNDMwMTljLi5hN2YyNGNjIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvemNvbmYuaC5jbWFrZWluCisrKyBiL01vZHVsZXMvemxpYi96Y29uZi5oLmNtYWtlaW4KQEAgLTEsNSArMSw1IEBACiAvKiB6Y29uZi5oIC0tIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHpsaWIgY29tcHJlc3Npb24gbGlicmFyeQotICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTMgSmVhbi1sb3VwIEdhaWxseS4KKyAqIENvcHlyaWdodCAoQykgMTk5NS0yMDE2IEplYW4tbG91cCBHYWlsbHksIE1hcmsgQWRsZXIKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiB6bGliLmgKICAqLwogCkBAIC0xOSw3ICsxOSw3IEBACiAjaWZkZWYgWl9QUkVGSVggICAgIC8qIG1heSBiZSBzZXQgdG8gI2lmIDEgYnkgLi9jb25maWd1cmUgKi8KICMgIGRlZmluZSBaX1BSRUZJWF9TRVQKIAotLyogYWxsIGxpbmtlZCBzeW1ib2xzICovCisvKiBhbGwgbGlua2VkIHN5bWJvbHMgYW5kIGluaXQgbWFjcm9zICovCiAjICBkZWZpbmUgX2Rpc3RfY29kZSAgICAgICAgICAgIHpfX2Rpc3RfY29kZQogIyAgZGVmaW5lIF9sZW5ndGhfY29kZSAgICAgICAgICB6X19sZW5ndGhfY29kZQogIyAgZGVmaW5lIF90cl9hbGlnbiAgICAgICAgICAgICB6X190cl9hbGlnbgpAQCAtMzEsNiArMzEsNyBAQAogIyAgZGVmaW5lIGFkbGVyMzIgICAgICAgICAgICAgICB6X2FkbGVyMzIKICMgIGRlZmluZSBhZGxlcjMyX2NvbWJpbmUgICAgICAgel9hZGxlcjMyX2NvbWJpbmUKICMgIGRlZmluZSBhZGxlcjMyX2NvbWJpbmU2NCAgICAgel9hZGxlcjMyX2NvbWJpbmU2NAorIyAgZGVmaW5lIGFkbGVyMzJfeiAgICAgICAgICAgICB6X2FkbGVyMzJfegogIyAgaWZuZGVmIFpfU09MTwogIyAgICBkZWZpbmUgY29tcHJlc3MgICAgICAgICAgICAgIHpfY29tcHJlc3MKICMgICAgZGVmaW5lIGNvbXByZXNzMiAgICAgICAgICAgICB6X2NvbXByZXNzMgpAQCAtMzksMTAgKzQwLDE0IEBACiAjICBkZWZpbmUgY3JjMzIgICAgICAgICAgICAgICAgIHpfY3JjMzIKICMgIGRlZmluZSBjcmMzMl9jb21iaW5lICAgICAgICAgel9jcmMzMl9jb21iaW5lCiAjICBkZWZpbmUgY3JjMzJfY29tYmluZTY0ICAgICAgIHpfY3JjMzJfY29tYmluZTY0CisjICBkZWZpbmUgY3JjMzJfeiAgICAgICAgICAgICAgIHpfY3JjMzJfegogIyAgZGVmaW5lIGRlZmxhdGUgICAgICAgICAgICAgICB6X2RlZmxhdGUKICMgIGRlZmluZSBkZWZsYXRlQm91bmQgICAgICAgICAgel9kZWZsYXRlQm91bmQKICMgIGRlZmluZSBkZWZsYXRlQ29weSAgICAgICAgICAgel9kZWZsYXRlQ29weQogIyAgZGVmaW5lIGRlZmxhdGVFbmQgICAgICAgICAgICB6X2RlZmxhdGVFbmQKKyMgIGRlZmluZSBkZWZsYXRlR2V0RGljdGlvbmFyeSAgel9kZWZsYXRlR2V0RGljdGlvbmFyeQorIyAgZGVmaW5lIGRlZmxhdGVJbml0ICAgICAgICAgICB6X2RlZmxhdGVJbml0CisjICBkZWZpbmUgZGVmbGF0ZUluaXQyICAgICAgICAgIHpfZGVmbGF0ZUluaXQyCiAjICBkZWZpbmUgZGVmbGF0ZUluaXQyXyAgICAgICAgIHpfZGVmbGF0ZUluaXQyXwogIyAgZGVmaW5lIGRlZmxhdGVJbml0XyAgICAgICAgICB6X2RlZmxhdGVJbml0XwogIyAgZGVmaW5lIGRlZmxhdGVQYXJhbXMgICAgICAgICB6X2RlZmxhdGVQYXJhbXMKQEAgLTY5LDYgKzc0LDggQEAKICMgICAgZGVmaW5lIGd6ZW9mICAgICAgICAgICAgICAgICB6X2d6ZW9mCiAjICAgIGRlZmluZSBnemVycm9yICAgICAgICAgICAgICAgel9nemVycm9yCiAjICAgIGRlZmluZSBnemZsdXNoICAgICAgICAgICAgICAgel9nemZsdXNoCisjICAgIGRlZmluZSBnemZyZWFkICAgICAgICAgICAgICAgel9nemZyZWFkCisjICAgIGRlZmluZSBnemZ3cml0ZSAgICAgICAgICAgICAgel9nemZ3cml0ZQogIyAgICBkZWZpbmUgZ3pnZXRjICAgICAgICAgICAgICAgIHpfZ3pnZXRjCiAjICAgIGRlZmluZSBnemdldGNfICAgICAgICAgICAgICAgel9nemdldGNfCiAjICAgIGRlZmluZSBnemdldHMgICAgICAgICAgICAgICAgel9nemdldHMKQEAgLTgwLDcgKzg3LDYgQEAKICMgICAgICBkZWZpbmUgZ3pvcGVuX3cgICAgICAgICAgICAgIHpfZ3pvcGVuX3cKICMgICAgZW5kaWYKICMgICAgZGVmaW5lIGd6cHJpbnRmICAgICAgICAgICAgICB6X2d6cHJpbnRmCi0jICAgIGRlZmluZSBnenZwcmludGYgICAgICAgICAgICAgel9nenZwcmludGYKICMgICAgZGVmaW5lIGd6cHV0YyAgICAgICAgICAgICAgICB6X2d6cHV0YwogIyAgICBkZWZpbmUgZ3pwdXRzICAgICAgICAgICAgICAgIHpfZ3pwdXRzCiAjICAgIGRlZmluZSBnenJlYWQgICAgICAgICAgICAgICAgel9nenJlYWQKQEAgLTkxLDMyICs5NywzOSBAQAogIyAgICBkZWZpbmUgZ3p0ZWxsICAgICAgICAgICAgICAgIHpfZ3p0ZWxsCiAjICAgIGRlZmluZSBnenRlbGw2NCAgICAgICAgICAgICAgel9nenRlbGw2NAogIyAgICBkZWZpbmUgZ3p1bmdldGMgICAgICAgICAgICAgIHpfZ3p1bmdldGMKKyMgICAgZGVmaW5lIGd6dnByaW50ZiAgICAgICAgICAgICB6X2d6dnByaW50ZgogIyAgICBkZWZpbmUgZ3p3cml0ZSAgICAgICAgICAgICAgIHpfZ3p3cml0ZQogIyAgZW5kaWYKICMgIGRlZmluZSBpbmZsYXRlICAgICAgICAgICAgICAgel9pbmZsYXRlCiAjICBkZWZpbmUgaW5mbGF0ZUJhY2sgICAgICAgICAgIHpfaW5mbGF0ZUJhY2sKICMgIGRlZmluZSBpbmZsYXRlQmFja0VuZCAgICAgICAgel9pbmZsYXRlQmFja0VuZAorIyAgZGVmaW5lIGluZmxhdGVCYWNrSW5pdCAgICAgICB6X2luZmxhdGVCYWNrSW5pdAogIyAgZGVmaW5lIGluZmxhdGVCYWNrSW5pdF8gICAgICB6X2luZmxhdGVCYWNrSW5pdF8KKyMgIGRlZmluZSBpbmZsYXRlQ29kZXNVc2VkICAgICAgel9pbmZsYXRlQ29kZXNVc2VkCiAjICBkZWZpbmUgaW5mbGF0ZUNvcHkgICAgICAgICAgIHpfaW5mbGF0ZUNvcHkKICMgIGRlZmluZSBpbmZsYXRlRW5kICAgICAgICAgICAgel9pbmZsYXRlRW5kCisjICBkZWZpbmUgaW5mbGF0ZUdldERpY3Rpb25hcnkgIHpfaW5mbGF0ZUdldERpY3Rpb25hcnkKICMgIGRlZmluZSBpbmZsYXRlR2V0SGVhZGVyICAgICAgel9pbmZsYXRlR2V0SGVhZGVyCisjICBkZWZpbmUgaW5mbGF0ZUluaXQgICAgICAgICAgIHpfaW5mbGF0ZUluaXQKKyMgIGRlZmluZSBpbmZsYXRlSW5pdDIgICAgICAgICAgel9pbmZsYXRlSW5pdDIKICMgIGRlZmluZSBpbmZsYXRlSW5pdDJfICAgICAgICAgel9pbmZsYXRlSW5pdDJfCiAjICBkZWZpbmUgaW5mbGF0ZUluaXRfICAgICAgICAgIHpfaW5mbGF0ZUluaXRfCiAjICBkZWZpbmUgaW5mbGF0ZU1hcmsgICAgICAgICAgIHpfaW5mbGF0ZU1hcmsKICMgIGRlZmluZSBpbmZsYXRlUHJpbWUgICAgICAgICAgel9pbmZsYXRlUHJpbWUKICMgIGRlZmluZSBpbmZsYXRlUmVzZXQgICAgICAgICAgel9pbmZsYXRlUmVzZXQKICMgIGRlZmluZSBpbmZsYXRlUmVzZXQyICAgICAgICAgel9pbmZsYXRlUmVzZXQyCisjICBkZWZpbmUgaW5mbGF0ZVJlc2V0S2VlcCAgICAgIHpfaW5mbGF0ZVJlc2V0S2VlcAogIyAgZGVmaW5lIGluZmxhdGVTZXREaWN0aW9uYXJ5ICB6X2luZmxhdGVTZXREaWN0aW9uYXJ5Ci0jICBkZWZpbmUgaW5mbGF0ZUdldERpY3Rpb25hcnkgIHpfaW5mbGF0ZUdldERpY3Rpb25hcnkKICMgIGRlZmluZSBpbmZsYXRlU3luYyAgICAgICAgICAgel9pbmZsYXRlU3luYwogIyAgZGVmaW5lIGluZmxhdGVTeW5jUG9pbnQgICAgICB6X2luZmxhdGVTeW5jUG9pbnQKICMgIGRlZmluZSBpbmZsYXRlVW5kZXJtaW5lICAgICAgel9pbmZsYXRlVW5kZXJtaW5lCi0jICBkZWZpbmUgaW5mbGF0ZVJlc2V0S2VlcCAgICAgIHpfaW5mbGF0ZVJlc2V0S2VlcAorIyAgZGVmaW5lIGluZmxhdGVWYWxpZGF0ZSAgICAgICB6X2luZmxhdGVWYWxpZGF0ZQogIyAgZGVmaW5lIGluZmxhdGVfY29weXJpZ2h0ICAgICB6X2luZmxhdGVfY29weXJpZ2h0CiAjICBkZWZpbmUgaW5mbGF0ZV9mYXN0ICAgICAgICAgIHpfaW5mbGF0ZV9mYXN0CiAjICBkZWZpbmUgaW5mbGF0ZV90YWJsZSAgICAgICAgIHpfaW5mbGF0ZV90YWJsZQogIyAgaWZuZGVmIFpfU09MTwogIyAgICBkZWZpbmUgdW5jb21wcmVzcyAgICAgICAgICAgIHpfdW5jb21wcmVzcworIyAgICBkZWZpbmUgdW5jb21wcmVzczIgICAgICAgICAgIHpfdW5jb21wcmVzczIKICMgIGVuZGlmCiAjICBkZWZpbmUgekVycm9yICAgICAgICAgICAgICAgIHpfekVycm9yCiAjICBpZm5kZWYgWl9TT0xPCkBAIC0yMjYsOSArMjM5LDE5IEBACiAjICBkZWZpbmUgel9jb25zdAogI2VuZGlmCiAKLS8qIFNvbWUgTWFjIGNvbXBpbGVycyBtZXJnZSBhbGwgLmggZmlsZXMgaW5jb3JyZWN0bHk6ICovCi0jaWYgZGVmaW5lZChfX01XRVJLU19fKXx8ZGVmaW5lZChhcHBsZWMpfHxkZWZpbmVkKFRISU5LX0MpfHxkZWZpbmVkKF9fU0NfXykKLSMgIGRlZmluZSBOT19EVU1NWV9ERUNMCisjaWZkZWYgWl9TT0xPCisgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgel9zaXplX3Q7CisjZWxzZQorIyAgZGVmaW5lIHpfbG9uZ2xvbmcgbG9uZyBsb25nCisjICBpZiBkZWZpbmVkKE5PX1NJWkVfVCkKKyAgICAgdHlwZWRlZiB1bnNpZ25lZCBOT19TSVpFX1Qgel9zaXplX3Q7CisjICBlbGlmIGRlZmluZWQoU1REQykKKyMgICAgaW5jbHVkZSA8c3RkZGVmLmg+CisgICAgIHR5cGVkZWYgc2l6ZV90IHpfc2l6ZV90OworIyAgZWxzZQorICAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgel9zaXplX3Q7CisjICBlbmRpZgorIyAgdW5kZWYgel9sb25nbG9uZwogI2VuZGlmCiAKIC8qIE1heGltdW0gdmFsdWUgZm9yIG1lbUxldmVsIGluIGRlZmxhdGVJbml0MiAqLwpAQCAtMjU4LDcgKzI4MSw3IEBACiAgT2YgY291cnNlIHRoaXMgd2lsbCBnZW5lcmFsbHkgZGVncmFkZSBjb21wcmVzc2lvbiAodGhlcmUncyBubyBmcmVlIGx1bmNoKS4KIAogICAgVGhlIG1lbW9yeSByZXF1aXJlbWVudHMgZm9yIGluZmxhdGUgYXJlIChpbiBieXRlcykgMSA8PCB3aW5kb3dCaXRzCi0gdGhhdCBpcywgMzJLIGZvciB3aW5kb3dCaXRzPTE1IChkZWZhdWx0IHZhbHVlKSBwbHVzIGEgZmV3IGtpbG9ieXRlcworIHRoYXQgaXMsIDMySyBmb3Igd2luZG93Qml0cz0xNSAoZGVmYXVsdCB2YWx1ZSkgcGx1cyBhYm91dCA3IGtpbG9ieXRlcwogIGZvciBzbWFsbCBvYmplY3RzLgogKi8KIApkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL3pjb25mLmguaW4gYi9Nb2R1bGVzL3psaWIvemNvbmYuaC5pbgppbmRleCA5OTg3YTc3Li41ZTFkNjhhIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvemNvbmYuaC5pbgorKysgYi9Nb2R1bGVzL3psaWIvemNvbmYuaC5pbgpAQCAtMSw1ICsxLDUgQEAKIC8qIHpjb25mLmggLS0gY29uZmlndXJhdGlvbiBvZiB0aGUgemxpYiBjb21wcmVzc2lvbiBsaWJyYXJ5Ci0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5LgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTYgSmVhbi1sb3VwIEdhaWxseSwgTWFyayBBZGxlcgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKQEAgLTE3LDcgKzE3LDcgQEAKICNpZmRlZiBaX1BSRUZJWCAgICAgLyogbWF5IGJlIHNldCB0byAjaWYgMSBieSAuL2NvbmZpZ3VyZSAqLwogIyAgZGVmaW5lIFpfUFJFRklYX1NFVAogCi0vKiBhbGwgbGlua2VkIHN5bWJvbHMgKi8KKy8qIGFsbCBsaW5rZWQgc3ltYm9scyBhbmQgaW5pdCBtYWNyb3MgKi8KICMgIGRlZmluZSBfZGlzdF9jb2RlICAgICAgICAgICAgel9fZGlzdF9jb2RlCiAjICBkZWZpbmUgX2xlbmd0aF9jb2RlICAgICAgICAgIHpfX2xlbmd0aF9jb2RlCiAjICBkZWZpbmUgX3RyX2FsaWduICAgICAgICAgICAgIHpfX3RyX2FsaWduCkBAIC0yOSw2ICsyOSw3IEBACiAjICBkZWZpbmUgYWRsZXIzMiAgICAgICAgICAgICAgIHpfYWRsZXIzMgogIyAgZGVmaW5lIGFkbGVyMzJfY29tYmluZSAgICAgICB6X2FkbGVyMzJfY29tYmluZQogIyAgZGVmaW5lIGFkbGVyMzJfY29tYmluZTY0ICAgICB6X2FkbGVyMzJfY29tYmluZTY0CisjICBkZWZpbmUgYWRsZXIzMl96ICAgICAgICAgICAgIHpfYWRsZXIzMl96CiAjICBpZm5kZWYgWl9TT0xPCiAjICAgIGRlZmluZSBjb21wcmVzcyAgICAgICAgICAgICAgel9jb21wcmVzcwogIyAgICBkZWZpbmUgY29tcHJlc3MyICAgICAgICAgICAgIHpfY29tcHJlc3MyCkBAIC0zNywxMCArMzgsMTQgQEAKICMgIGRlZmluZSBjcmMzMiAgICAgICAgICAgICAgICAgel9jcmMzMgogIyAgZGVmaW5lIGNyYzMyX2NvbWJpbmUgICAgICAgICB6X2NyYzMyX2NvbWJpbmUKICMgIGRlZmluZSBjcmMzMl9jb21iaW5lNjQgICAgICAgel9jcmMzMl9jb21iaW5lNjQKKyMgIGRlZmluZSBjcmMzMl96ICAgICAgICAgICAgICAgel9jcmMzMl96CiAjICBkZWZpbmUgZGVmbGF0ZSAgICAgICAgICAgICAgIHpfZGVmbGF0ZQogIyAgZGVmaW5lIGRlZmxhdGVCb3VuZCAgICAgICAgICB6X2RlZmxhdGVCb3VuZAogIyAgZGVmaW5lIGRlZmxhdGVDb3B5ICAgICAgICAgICB6X2RlZmxhdGVDb3B5CiAjICBkZWZpbmUgZGVmbGF0ZUVuZCAgICAgICAgICAgIHpfZGVmbGF0ZUVuZAorIyAgZGVmaW5lIGRlZmxhdGVHZXREaWN0aW9uYXJ5ICB6X2RlZmxhdGVHZXREaWN0aW9uYXJ5CisjICBkZWZpbmUgZGVmbGF0ZUluaXQgICAgICAgICAgIHpfZGVmbGF0ZUluaXQKKyMgIGRlZmluZSBkZWZsYXRlSW5pdDIgICAgICAgICAgel9kZWZsYXRlSW5pdDIKICMgIGRlZmluZSBkZWZsYXRlSW5pdDJfICAgICAgICAgel9kZWZsYXRlSW5pdDJfCiAjICBkZWZpbmUgZGVmbGF0ZUluaXRfICAgICAgICAgIHpfZGVmbGF0ZUluaXRfCiAjICBkZWZpbmUgZGVmbGF0ZVBhcmFtcyAgICAgICAgIHpfZGVmbGF0ZVBhcmFtcwpAQCAtNjcsNiArNzIsOCBAQAogIyAgICBkZWZpbmUgZ3plb2YgICAgICAgICAgICAgICAgIHpfZ3plb2YKICMgICAgZGVmaW5lIGd6ZXJyb3IgICAgICAgICAgICAgICB6X2d6ZXJyb3IKICMgICAgZGVmaW5lIGd6Zmx1c2ggICAgICAgICAgICAgICB6X2d6Zmx1c2gKKyMgICAgZGVmaW5lIGd6ZnJlYWQgICAgICAgICAgICAgICB6X2d6ZnJlYWQKKyMgICAgZGVmaW5lIGd6ZndyaXRlICAgICAgICAgICAgICB6X2d6ZndyaXRlCiAjICAgIGRlZmluZSBnemdldGMgICAgICAgICAgICAgICAgel9nemdldGMKICMgICAgZGVmaW5lIGd6Z2V0Y18gICAgICAgICAgICAgICB6X2d6Z2V0Y18KICMgICAgZGVmaW5lIGd6Z2V0cyAgICAgICAgICAgICAgICB6X2d6Z2V0cwpAQCAtNzgsNyArODUsNiBAQAogIyAgICAgIGRlZmluZSBnem9wZW5fdyAgICAgICAgICAgICAgel9nem9wZW5fdwogIyAgICBlbmRpZgogIyAgICBkZWZpbmUgZ3pwcmludGYgICAgICAgICAgICAgIHpfZ3pwcmludGYKLSMgICAgZGVmaW5lIGd6dnByaW50ZiAgICAgICAgICAgICB6X2d6dnByaW50ZgogIyAgICBkZWZpbmUgZ3pwdXRjICAgICAgICAgICAgICAgIHpfZ3pwdXRjCiAjICAgIGRlZmluZSBnenB1dHMgICAgICAgICAgICAgICAgel9nenB1dHMKICMgICAgZGVmaW5lIGd6cmVhZCAgICAgICAgICAgICAgICB6X2d6cmVhZApAQCAtODksMzIgKzk1LDM5IEBACiAjICAgIGRlZmluZSBnenRlbGwgICAgICAgICAgICAgICAgel9nenRlbGwKICMgICAgZGVmaW5lIGd6dGVsbDY0ICAgICAgICAgICAgICB6X2d6dGVsbDY0CiAjICAgIGRlZmluZSBnenVuZ2V0YyAgICAgICAgICAgICAgel9nenVuZ2V0YworIyAgICBkZWZpbmUgZ3p2cHJpbnRmICAgICAgICAgICAgIHpfZ3p2cHJpbnRmCiAjICAgIGRlZmluZSBnendyaXRlICAgICAgICAgICAgICAgel9nendyaXRlCiAjICBlbmRpZgogIyAgZGVmaW5lIGluZmxhdGUgICAgICAgICAgICAgICB6X2luZmxhdGUKICMgIGRlZmluZSBpbmZsYXRlQmFjayAgICAgICAgICAgel9pbmZsYXRlQmFjawogIyAgZGVmaW5lIGluZmxhdGVCYWNrRW5kICAgICAgICB6X2luZmxhdGVCYWNrRW5kCisjICBkZWZpbmUgaW5mbGF0ZUJhY2tJbml0ICAgICAgIHpfaW5mbGF0ZUJhY2tJbml0CiAjICBkZWZpbmUgaW5mbGF0ZUJhY2tJbml0XyAgICAgIHpfaW5mbGF0ZUJhY2tJbml0XworIyAgZGVmaW5lIGluZmxhdGVDb2Rlc1VzZWQgICAgICB6X2luZmxhdGVDb2Rlc1VzZWQKICMgIGRlZmluZSBpbmZsYXRlQ29weSAgICAgICAgICAgel9pbmZsYXRlQ29weQogIyAgZGVmaW5lIGluZmxhdGVFbmQgICAgICAgICAgICB6X2luZmxhdGVFbmQKKyMgIGRlZmluZSBpbmZsYXRlR2V0RGljdGlvbmFyeSAgel9pbmZsYXRlR2V0RGljdGlvbmFyeQogIyAgZGVmaW5lIGluZmxhdGVHZXRIZWFkZXIgICAgICB6X2luZmxhdGVHZXRIZWFkZXIKKyMgIGRlZmluZSBpbmZsYXRlSW5pdCAgICAgICAgICAgel9pbmZsYXRlSW5pdAorIyAgZGVmaW5lIGluZmxhdGVJbml0MiAgICAgICAgICB6X2luZmxhdGVJbml0MgogIyAgZGVmaW5lIGluZmxhdGVJbml0Ml8gICAgICAgICB6X2luZmxhdGVJbml0Ml8KICMgIGRlZmluZSBpbmZsYXRlSW5pdF8gICAgICAgICAgel9pbmZsYXRlSW5pdF8KICMgIGRlZmluZSBpbmZsYXRlTWFyayAgICAgICAgICAgel9pbmZsYXRlTWFyawogIyAgZGVmaW5lIGluZmxhdGVQcmltZSAgICAgICAgICB6X2luZmxhdGVQcmltZQogIyAgZGVmaW5lIGluZmxhdGVSZXNldCAgICAgICAgICB6X2luZmxhdGVSZXNldAogIyAgZGVmaW5lIGluZmxhdGVSZXNldDIgICAgICAgICB6X2luZmxhdGVSZXNldDIKKyMgIGRlZmluZSBpbmZsYXRlUmVzZXRLZWVwICAgICAgel9pbmZsYXRlUmVzZXRLZWVwCiAjICBkZWZpbmUgaW5mbGF0ZVNldERpY3Rpb25hcnkgIHpfaW5mbGF0ZVNldERpY3Rpb25hcnkKLSMgIGRlZmluZSBpbmZsYXRlR2V0RGljdGlvbmFyeSAgel9pbmZsYXRlR2V0RGljdGlvbmFyeQogIyAgZGVmaW5lIGluZmxhdGVTeW5jICAgICAgICAgICB6X2luZmxhdGVTeW5jCiAjICBkZWZpbmUgaW5mbGF0ZVN5bmNQb2ludCAgICAgIHpfaW5mbGF0ZVN5bmNQb2ludAogIyAgZGVmaW5lIGluZmxhdGVVbmRlcm1pbmUgICAgICB6X2luZmxhdGVVbmRlcm1pbmUKLSMgIGRlZmluZSBpbmZsYXRlUmVzZXRLZWVwICAgICAgel9pbmZsYXRlUmVzZXRLZWVwCisjICBkZWZpbmUgaW5mbGF0ZVZhbGlkYXRlICAgICAgIHpfaW5mbGF0ZVZhbGlkYXRlCiAjICBkZWZpbmUgaW5mbGF0ZV9jb3B5cmlnaHQgICAgIHpfaW5mbGF0ZV9jb3B5cmlnaHQKICMgIGRlZmluZSBpbmZsYXRlX2Zhc3QgICAgICAgICAgel9pbmZsYXRlX2Zhc3QKICMgIGRlZmluZSBpbmZsYXRlX3RhYmxlICAgICAgICAgel9pbmZsYXRlX3RhYmxlCiAjICBpZm5kZWYgWl9TT0xPCiAjICAgIGRlZmluZSB1bmNvbXByZXNzICAgICAgICAgICAgel91bmNvbXByZXNzCisjICAgIGRlZmluZSB1bmNvbXByZXNzMiAgICAgICAgICAgel91bmNvbXByZXNzMgogIyAgZW5kaWYKICMgIGRlZmluZSB6RXJyb3IgICAgICAgICAgICAgICAgel96RXJyb3IKICMgIGlmbmRlZiBaX1NPTE8KQEAgLTIyNCw5ICsyMzcsMTkgQEAKICMgIGRlZmluZSB6X2NvbnN0CiAjZW5kaWYKIAotLyogU29tZSBNYWMgY29tcGlsZXJzIG1lcmdlIGFsbCAuaCBmaWxlcyBpbmNvcnJlY3RseTogKi8KLSNpZiBkZWZpbmVkKF9fTVdFUktTX18pfHxkZWZpbmVkKGFwcGxlYyl8fGRlZmluZWQoVEhJTktfQyl8fGRlZmluZWQoX19TQ19fKQotIyAgZGVmaW5lIE5PX0RVTU1ZX0RFQ0wKKyNpZmRlZiBaX1NPTE8KKyAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB6X3NpemVfdDsKKyNlbHNlCisjICBkZWZpbmUgel9sb25nbG9uZyBsb25nIGxvbmcKKyMgIGlmIGRlZmluZWQoTk9fU0laRV9UKQorICAgICB0eXBlZGVmIHVuc2lnbmVkIE5PX1NJWkVfVCB6X3NpemVfdDsKKyMgIGVsaWYgZGVmaW5lZChTVERDKQorIyAgICBpbmNsdWRlIDxzdGRkZWYuaD4KKyAgICAgdHlwZWRlZiBzaXplX3Qgel9zaXplX3Q7CisjICBlbHNlCisgICAgIHR5cGVkZWYgdW5zaWduZWQgbG9uZyB6X3NpemVfdDsKKyMgIGVuZGlmCisjICB1bmRlZiB6X2xvbmdsb25nCiAjZW5kaWYKIAogLyogTWF4aW11bSB2YWx1ZSBmb3IgbWVtTGV2ZWwgaW4gZGVmbGF0ZUluaXQyICovCkBAIC0yNTYsNyArMjc5LDcgQEAKICBPZiBjb3Vyc2UgdGhpcyB3aWxsIGdlbmVyYWxseSBkZWdyYWRlIGNvbXByZXNzaW9uICh0aGVyZSdzIG5vIGZyZWUgbHVuY2gpLgogCiAgICBUaGUgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgaW5mbGF0ZSBhcmUgKGluIGJ5dGVzKSAxIDw8IHdpbmRvd0JpdHMKLSB0aGF0IGlzLCAzMksgZm9yIHdpbmRvd0JpdHM9MTUgKGRlZmF1bHQgdmFsdWUpIHBsdXMgYSBmZXcga2lsb2J5dGVzCisgdGhhdCBpcywgMzJLIGZvciB3aW5kb3dCaXRzPTE1IChkZWZhdWx0IHZhbHVlKSBwbHVzIGFib3V0IDcga2lsb2J5dGVzCiAgZm9yIHNtYWxsIG9iamVjdHMuCiAqLwogCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvemxpYi4zIGIvTW9kdWxlcy96bGliL3psaWIuMwppbmRleCAwMTYwZTYyLi5iZGE0ZWIwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvemxpYi4zCisrKyBiL01vZHVsZXMvemxpYi96bGliLjMKQEAgLTEsNCArMSw0IEBACi0uVEggWkxJQiAzICIyOCBBcHIgMjAxMyIKKy5USCBaTElCIDMgIjE1IEphbiAyMDE3IgogLlNIIE5BTUUKIHpsaWIgXC0gY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5CiAuU0ggU1lOT1BTSVMKQEAgLTQ4LDMyICs0OCwxMCBAQAogdGhhdCBhY2NvbXBhbmllcyB0aGUgc291cmNlLgogLkxQCiAuSSB6bGliCi1pcyBhdmFpbGFibGUgaW4gSmF2YSB1c2luZyB0aGUgamF2YS51dGlsLnppcCBwYWNrYWdlOgotLklQCi1odHRwOi8vamF2YS5zdW4uY29tL2RldmVsb3Blci90ZWNobmljYWxBcnRpY2xlcy9Qcm9ncmFtbWluZy9jb21wcmVzc2lvbi8KK2lzIGJ1aWx0IGluIHRvIG1hbnkgbGFuZ3VhZ2VzIGFuZCBvcGVyYXRpbmcgc3lzdGVtcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bworSmF2YSwgUHl0aG9uLCAuTkVULCBQSFAsIFBlcmwsIFJ1YnksIFN3aWZ0LCBhbmQgR28uCiAuTFAKLUEgUGVybCBpbnRlcmZhY2UgdG8KLS5JUiB6bGliICwKLXdyaXR0ZW4gYnkgUGF1bCBNYXJxdWVzcyAocG1xc0BjcGFuLm9yZyksCi1pcyBhdmFpbGFibGUgYXQgQ1BBTiAoQ29tcHJlaGVuc2l2ZSBQZXJsIEFyY2hpdmUgTmV0d29yaykgc2l0ZXMsCi1pbmNsdWRpbmc6Ci0uSVAKLWh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvfnBtcXMvSU8tQ29tcHJlc3MtWmxpYi8KLS5MUAotQSBQeXRob24gaW50ZXJmYWNlIHRvCi0uSVIgemxpYiAsCi13cml0dGVuIGJ5IEEuTS4gS3VjaGxpbmcgKGFta0BtYWduZXQuY29tKSwKLWlzIGF2YWlsYWJsZSBpbiBQeXRob24gMS41IGFuZCBsYXRlciB2ZXJzaW9uczoKLS5JUAotaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3psaWIuaHRtbAotLkxQCi0uSSB6bGliCi1pcyBidWlsdCBpbnRvCi0uSVIgdGNsOgotLklQCi1odHRwOi8vd2lraS50Y2wudGsvNDYxMAotLkxQCi1BbiBleHBlcmltZW50YWwgcGFja2FnZSB0byByZWFkIGFuZCB3cml0ZSBmaWxlcyBpbiAuemlwIGZvcm1hdCwKK0FuIGV4cGVyaW1lbnRhbCBwYWNrYWdlIHRvIHJlYWQgYW5kIHdyaXRlIGZpbGVzIGluIHRoZSAuemlwIGZvcm1hdCwKIHdyaXR0ZW4gb24gdG9wIG9mCiAuSSB6bGliCiBieSBHaWxsZXMgVm9sbGFudCAoaW5mb0B3aW5pbWFnZS5jb20pLApAQCAtOTIsNyArNzAsOSBAQAogLklQCiBodHRwOi8vemxpYi5uZXQvCiAuTFAKLVRoZSBkYXRhIGZvcm1hdCB1c2VkIGJ5IHRoZSB6bGliIGxpYnJhcnkgaXMgZGVzY3JpYmVkIGJ5IFJGQworVGhlIGRhdGEgZm9ybWF0IHVzZWQgYnkgdGhlCisuSSB6bGliCitsaWJyYXJ5IGlzIGRlc2NyaWJlZCBieSBSRkMKIChSZXF1ZXN0IGZvciBDb21tZW50cykgMTk1MCB0byAxOTUyIGluIHRoZSBmaWxlczoKIC5JUAogaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMTk1MCAoZm9yIHRoZSB6bGliIGhlYWRlciBhbmQgdHJhaWxlciBmb3JtYXQpCkBAIC0xMjQsMTcgKzEwNCwzNSBAQAogYmVmb3JlIGFza2luZyBmb3IgaGVscC4KIFNlbmQgcXVlc3Rpb25zIGFuZC9vciBjb21tZW50cyB0byB6bGliQGd6aXAub3JnLAogb3IgKGZvciB0aGUgV2luZG93cyBETEwgdmVyc2lvbikgdG8gR2lsbGVzIFZvbGxhbnQgKGluZm9Ad2luaW1hZ2UuY29tKS4KLS5TSCBBVVRIT1JTCi1WZXJzaW9uIDEuMi44Ci1Db3B5cmlnaHQgKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IChqbG91cEBnemlwLm9yZykKLWFuZCBNYXJrIEFkbGVyIChtYWRsZXJAYWx1bW5pLmNhbHRlY2guZWR1KS4KKy5TSCBBVVRIT1JTIEFORCBMSUNFTlNFCitWZXJzaW9uIDEuMi4xMQogLkxQCi1UaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcy1pcywiCi13aXRob3V0IGFueSBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCi1JbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcworQ29weXJpZ2h0IChDKSAxOTk1LTIwMTcgSmVhbi1sb3VwIEdhaWxseSBhbmQgTWFyayBBZGxlcgorLkxQCitUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAord2FycmFudHkuICBJbiBubyBldmVudCB3aWxsIHRoZSBhdXRob3JzIGJlIGhlbGQgbGlhYmxlIGZvciBhbnkgZGFtYWdlcwogYXJpc2luZyBmcm9tIHRoZSB1c2Ugb2YgdGhpcyBzb2Z0d2FyZS4KLVNlZSB0aGUgZGlzdHJpYnV0aW9uIGRpcmVjdG9yeSB3aXRoIHJlc3BlY3QgdG8gcmVxdWlyZW1lbnRzCi1nb3Zlcm5pbmcgcmVkaXN0cmlidXRpb24uCisuTFAKK1Blcm1pc3Npb24gaXMgZ3JhbnRlZCB0byBhbnlvbmUgdG8gdXNlIHRoaXMgc29mdHdhcmUgZm9yIGFueSBwdXJwb3NlLAoraW5jbHVkaW5nIGNvbW1lcmNpYWwgYXBwbGljYXRpb25zLCBhbmQgdG8gYWx0ZXIgaXQgYW5kIHJlZGlzdHJpYnV0ZSBpdAorZnJlZWx5LCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgcmVzdHJpY3Rpb25zOgorLkxQCisubnIgc3RlcCAxIDEKKy5JUCBcbltzdGVwXS4gMworVGhlIG9yaWdpbiBvZiB0aGlzIHNvZnR3YXJlIG11c3Qgbm90IGJlIG1pc3JlcHJlc2VudGVkOyB5b3UgbXVzdCBub3QKK2NsYWltIHRoYXQgeW91IHdyb3RlIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4gSWYgeW91IHVzZSB0aGlzIHNvZnR3YXJlCitpbiBhIHByb2R1Y3QsIGFuIGFja25vd2xlZGdtZW50IGluIHRoZSBwcm9kdWN0IGRvY3VtZW50YXRpb24gd291bGQgYmUKK2FwcHJlY2lhdGVkIGJ1dCBpcyBub3QgcmVxdWlyZWQuCisuSVAgXG4rW3N0ZXBdLgorQWx0ZXJlZCBzb3VyY2UgdmVyc2lvbnMgbXVzdCBiZSBwbGFpbmx5IG1hcmtlZCBhcyBzdWNoLCBhbmQgbXVzdCBub3QgYmUKK21pc3JlcHJlc2VudGVkIGFzIGJlaW5nIHRoZSBvcmlnaW5hbCBzb2Z0d2FyZS4KKy5JUCBcbitbc3RlcF0uCitUaGlzIG5vdGljZSBtYXkgbm90IGJlIHJlbW92ZWQgb3IgYWx0ZXJlZCBmcm9tIGFueSBzb3VyY2UgZGlzdHJpYnV0aW9uLgorLkxQCitKZWFuLWxvdXAgR2FpbGx5ICAgICAgICBNYXJrIEFkbGVyCisuYnIKK2psb3VwQGd6aXAub3JnICAgICAgICAgIG1hZGxlckBhbHVtbmkuY2FsdGVjaC5lZHUKKy5MUAogVGhlIGRlZmxhdGUgZm9ybWF0IHVzZWQgYnkKIC5JIHpsaWIKIHdhcyBkZWZpbmVkIGJ5IFBoaWwgS2F0ei4KZGlmZiAtLWdpdCBhL01vZHVsZXMvemxpYi96bGliLmggYi9Nb2R1bGVzL3psaWIvemxpYi5oCmluZGV4IDNlMGM3NjcuLmYwOWNkYWYgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvemxpYi96bGliLmgKKysrIGIvTW9kdWxlcy96bGliL3psaWIuaApAQCAtMSw3ICsxLDcgQEAKIC8qIHpsaWIuaCAtLSBpbnRlcmZhY2Ugb2YgdGhlICd6bGliJyBnZW5lcmFsIHB1cnBvc2UgY29tcHJlc3Npb24gbGlicmFyeQotICB2ZXJzaW9uIDEuMi44LCBBcHJpbCAyOHRoLCAyMDEzCisgIHZlcnNpb24gMS4yLjExLCBKYW51YXJ5IDE1dGgsIDIwMTcKIAotICBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5IGFuZCBNYXJrIEFkbGVyCisgIENvcHlyaWdodCAoQykgMTk5NS0yMDE3IEplYW4tbG91cCBHYWlsbHkgYW5kIE1hcmsgQWRsZXIKIAogICBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICdhcy1pcycsIHdpdGhvdXQgYW55IGV4cHJlc3Mgb3IgaW1wbGllZAogICB3YXJyYW50eS4gIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCkBAIC0zNywxMSArMzcsMTEgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNkZWZpbmUgWkxJQl9WRVJTSU9OICIxLjIuOCIKLSNkZWZpbmUgWkxJQl9WRVJOVU0gMHgxMjgwCisjZGVmaW5lIFpMSUJfVkVSU0lPTiAiMS4yLjExIgorI2RlZmluZSBaTElCX1ZFUk5VTSAweDEyYjAKICNkZWZpbmUgWkxJQl9WRVJfTUFKT1IgMQogI2RlZmluZSBaTElCX1ZFUl9NSU5PUiAyCi0jZGVmaW5lIFpMSUJfVkVSX1JFVklTSU9OIDgKKyNkZWZpbmUgWkxJQl9WRVJfUkVWSVNJT04gMTEKICNkZWZpbmUgWkxJQl9WRVJfU1VCUkVWSVNJT04gMAogCiAvKgpAQCAtNjUsNyArNjUsOCBAQAogICB3aXRoICJneiIuICBUaGUgZ3ppcCBmb3JtYXQgaXMgZGlmZmVyZW50IGZyb20gdGhlIHpsaWIgZm9ybWF0LiAgZ3ppcCBpcyBhCiAgIGd6aXAgd3JhcHBlciwgZG9jdW1lbnRlZCBpbiBSRkMgMTk1Miwgd3JhcHBlZCBhcm91bmQgYSBkZWZsYXRlIHN0cmVhbS4KIAotICAgIFRoaXMgbGlicmFyeSBjYW4gb3B0aW9uYWxseSByZWFkIGFuZCB3cml0ZSBnemlwIHN0cmVhbXMgaW4gbWVtb3J5IGFzIHdlbGwuCisgICAgVGhpcyBsaWJyYXJ5IGNhbiBvcHRpb25hbGx5IHJlYWQgYW5kIHdyaXRlIGd6aXAgYW5kIHJhdyBkZWZsYXRlIHN0cmVhbXMgaW4KKyAgbWVtb3J5IGFzIHdlbGwuCiAKICAgICBUaGUgemxpYiBmb3JtYXQgd2FzIGRlc2lnbmVkIHRvIGJlIGNvbXBhY3QgYW5kIGZhc3QgZm9yIHVzZSBpbiBtZW1vcnkKICAgYW5kIG9uIGNvbW11bmljYXRpb25zIGNoYW5uZWxzLiAgVGhlIGd6aXAgZm9ybWF0IHdhcyBkZXNpZ25lZCBmb3Igc2luZ2xlLQpAQCAtNzQsNyArNzUsNyBAQAogCiAgICAgVGhlIGxpYnJhcnkgZG9lcyBub3QgaW5zdGFsbCBhbnkgc2lnbmFsIGhhbmRsZXIuICBUaGUgZGVjb2RlciBjaGVja3MKICAgdGhlIGNvbnNpc3RlbmN5IG9mIHRoZSBjb21wcmVzc2VkIGRhdGEsIHNvIHRoZSBsaWJyYXJ5IHNob3VsZCBuZXZlciBjcmFzaAotICBldmVuIGluIGNhc2Ugb2YgY29ycnVwdGVkIGlucHV0LgorICBldmVuIGluIHRoZSBjYXNlIG9mIGNvcnJ1cHRlZCBpbnB1dC4KICovCiAKIHR5cGVkZWYgdm9pZHBmICgqYWxsb2NfZnVuYykgT0YoKHZvaWRwZiBvcGFxdWUsIHVJbnQgaXRlbXMsIHVJbnQgc2l6ZSkpOwpAQCAtODcsNyArODgsNyBAQAogICAgIHVJbnQgICAgIGF2YWlsX2luOyAgLyogbnVtYmVyIG9mIGJ5dGVzIGF2YWlsYWJsZSBhdCBuZXh0X2luICovCiAgICAgdUxvbmcgICAgdG90YWxfaW47ICAvKiB0b3RhbCBudW1iZXIgb2YgaW5wdXQgYnl0ZXMgcmVhZCBzbyBmYXIgKi8KIAotICAgIEJ5dGVmICAgICpuZXh0X291dDsgLyogbmV4dCBvdXRwdXQgYnl0ZSBzaG91bGQgYmUgcHV0IHRoZXJlICovCisgICAgQnl0ZWYgICAgKm5leHRfb3V0OyAvKiBuZXh0IG91dHB1dCBieXRlIHdpbGwgZ28gaGVyZSAqLwogICAgIHVJbnQgICAgIGF2YWlsX291dDsgLyogcmVtYWluaW5nIGZyZWUgc3BhY2UgYXQgbmV4dF9vdXQgKi8KICAgICB1TG9uZyAgICB0b3RhbF9vdXQ7IC8qIHRvdGFsIG51bWJlciBvZiBieXRlcyBvdXRwdXQgc28gZmFyICovCiAKQEAgLTk4LDggKzk5LDkgQEAKICAgICBmcmVlX2Z1bmMgIHpmcmVlOyAgIC8qIHVzZWQgdG8gZnJlZSB0aGUgaW50ZXJuYWwgc3RhdGUgKi8KICAgICB2b2lkcGYgICAgIG9wYXF1ZTsgIC8qIHByaXZhdGUgZGF0YSBvYmplY3QgcGFzc2VkIHRvIHphbGxvYyBhbmQgemZyZWUgKi8KIAotICAgIGludCAgICAgZGF0YV90eXBlOyAgLyogYmVzdCBndWVzcyBhYm91dCB0aGUgZGF0YSB0eXBlOiBiaW5hcnkgb3IgdGV4dCAqLwotICAgIHVMb25nICAgYWRsZXI7ICAgICAgLyogYWRsZXIzMiB2YWx1ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgKi8KKyAgICBpbnQgICAgIGRhdGFfdHlwZTsgIC8qIGJlc3QgZ3Vlc3MgYWJvdXQgdGhlIGRhdGEgdHlwZTogYmluYXJ5IG9yIHRleHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBkZWZsYXRlLCBvciB0aGUgZGVjb2Rpbmcgc3RhdGUgZm9yIGluZmxhdGUgKi8KKyAgICB1TG9uZyAgIGFkbGVyOyAgICAgIC8qIEFkbGVyLTMyIG9yIENSQy0zMiB2YWx1ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgKi8KICAgICB1TG9uZyAgIHJlc2VydmVkOyAgIC8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCiB9IHpfc3RyZWFtOwogCkBAIC0xNDIsNyArMTQ0LDkgQEAKIAogICAgICB6YWxsb2MgbXVzdCByZXR1cm4gWl9OVUxMIGlmIHRoZXJlIGlzIG5vdCBlbm91Z2ggbWVtb3J5IGZvciB0aGUgb2JqZWN0LgogICAgSWYgemxpYiBpcyB1c2VkIGluIGEgbXVsdGktdGhyZWFkZWQgYXBwbGljYXRpb24sIHphbGxvYyBhbmQgemZyZWUgbXVzdCBiZQotICAgdGhyZWFkIHNhZmUuCisgICB0aHJlYWQgc2FmZS4gIEluIHRoYXQgY2FzZSwgemxpYiBpcyB0aHJlYWQtc2FmZS4gIFdoZW4gemFsbG9jIGFuZCB6ZnJlZSBhcmUKKyAgIFpfTlVMTCBvbiBlbnRyeSB0byB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24sIHRoZXkgYXJlIHNldCB0byBpbnRlcm5hbAorICAgcm91dGluZXMgdGhhdCB1c2UgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZnVuY3Rpb25zIG1hbGxvYygpIGFuZCBmcmVlKCkuCiAKICAgICAgT24gMTYtYml0IHN5c3RlbXMsIHRoZSBmdW5jdGlvbnMgemFsbG9jIGFuZCB6ZnJlZSBtdXN0IGJlIGFibGUgdG8gYWxsb2NhdGUKICAgIGV4YWN0bHkgNjU1MzYgYnl0ZXMsIGJ1dCB3aWxsIG5vdCBiZSByZXF1aXJlZCB0byBhbGxvY2F0ZSBtb3JlIHRoYW4gdGhpcyBpZgpAQCAtMTU1LDcgKzE1OSw3IEBACiAKICAgICAgVGhlIGZpZWxkcyB0b3RhbF9pbiBhbmQgdG90YWxfb3V0IGNhbiBiZSB1c2VkIGZvciBzdGF0aXN0aWNzIG9yIHByb2dyZXNzCiAgICByZXBvcnRzLiAgQWZ0ZXIgY29tcHJlc3Npb24sIHRvdGFsX2luIGhvbGRzIHRoZSB0b3RhbCBzaXplIG9mIHRoZQotICAgdW5jb21wcmVzc2VkIGRhdGEgYW5kIG1heSBiZSBzYXZlZCBmb3IgdXNlIGluIHRoZSBkZWNvbXByZXNzb3IgKHBhcnRpY3VsYXJseQorICAgdW5jb21wcmVzc2VkIGRhdGEgYW5kIG1heSBiZSBzYXZlZCBmb3IgdXNlIGJ5IHRoZSBkZWNvbXByZXNzb3IgKHBhcnRpY3VsYXJseQogICAgaWYgdGhlIGRlY29tcHJlc3NvciB3YW50cyB0byBkZWNvbXByZXNzIGV2ZXJ5dGhpbmcgaW4gYSBzaW5nbGUgc3RlcCkuCiAqLwogCkBAIC0yMDAsNyArMjA0LDcgQEAKICNkZWZpbmUgWl9URVhUICAgICAxCiAjZGVmaW5lIFpfQVNDSUkgICAgWl9URVhUICAgLyogZm9yIGNvbXBhdGliaWxpdHkgd2l0aCAxLjIuMiBhbmQgZWFybGllciAqLwogI2RlZmluZSBaX1VOS05PV04gIDIKLS8qIFBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgZGF0YV90eXBlIGZpZWxkICh0aG91Z2ggc2VlIGluZmxhdGUoKSkgKi8KKy8qIFBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgZGF0YV90eXBlIGZpZWxkIGZvciBkZWZsYXRlKCkgKi8KIAogI2RlZmluZSBaX0RFRkxBVEVEICAgOAogLyogVGhlIGRlZmxhdGUgY29tcHJlc3Npb24gbWV0aG9kICh0aGUgb25seSBvbmUgc3VwcG9ydGVkIGluIHRoaXMgdmVyc2lvbikgKi8KQEAgLTI1OCwxMSArMjYyLDExIEBACiAgICAgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dCBidWZmZXIpLCBuZXh0X2luIGFuZCBhdmFpbF9pbiBhcmUgdXBkYXRlZCBhbmQKICAgICBwcm9jZXNzaW5nIHdpbGwgcmVzdW1lIGF0IHRoaXMgcG9pbnQgZm9yIHRoZSBuZXh0IGNhbGwgb2YgZGVmbGF0ZSgpLgogCi0gIC0gUHJvdmlkZSBtb3JlIG91dHB1dCBzdGFydGluZyBhdCBuZXh0X291dCBhbmQgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQKKyAgLSBHZW5lcmF0ZSBtb3JlIG91dHB1dCBzdGFydGluZyBhdCBuZXh0X291dCBhbmQgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQKICAgICBhY2NvcmRpbmdseS4gIFRoaXMgYWN0aW9uIGlzIGZvcmNlZCBpZiB0aGUgcGFyYW1ldGVyIGZsdXNoIGlzIG5vbiB6ZXJvLgogICAgIEZvcmNpbmcgZmx1c2ggZnJlcXVlbnRseSBkZWdyYWRlcyB0aGUgY29tcHJlc3Npb24gcmF0aW8sIHNvIHRoaXMgcGFyYW1ldGVyCi0gICAgc2hvdWxkIGJlIHNldCBvbmx5IHdoZW4gbmVjZXNzYXJ5IChpbiBpbnRlcmFjdGl2ZSBhcHBsaWNhdGlvbnMpLiAgU29tZQotICAgIG91dHB1dCBtYXkgYmUgcHJvdmlkZWQgZXZlbiBpZiBmbHVzaCBpcyBub3Qgc2V0LgorICAgIHNob3VsZCBiZSBzZXQgb25seSB3aGVuIG5lY2Vzc2FyeS4gIFNvbWUgb3V0cHV0IG1heSBiZSBwcm92aWRlZCBldmVuIGlmCisgICAgZmx1c2ggaXMgemVyby4KIAogICAgIEJlZm9yZSB0aGUgY2FsbCBvZiBkZWZsYXRlKCksIHRoZSBhcHBsaWNhdGlvbiBzaG91bGQgZW5zdXJlIHRoYXQgYXQgbGVhc3QKICAgb25lIG9mIHRoZSBhY3Rpb25zIGlzIHBvc3NpYmxlLCBieSBwcm92aWRpbmcgbW9yZSBpbnB1dCBhbmQvb3IgY29uc3VtaW5nIG1vcmUKQEAgLTI3MSw3ICsyNzUsOSBAQAogICBvdXRwdXQgd2hlbiBpdCB3YW50cywgZm9yIGV4YW1wbGUgd2hlbiB0aGUgb3V0cHV0IGJ1ZmZlciBpcyBmdWxsIChhdmFpbF9vdXQKICAgPT0gMCksIG9yIGFmdGVyIGVhY2ggY2FsbCBvZiBkZWZsYXRlKCkuICBJZiBkZWZsYXRlIHJldHVybnMgWl9PSyBhbmQgd2l0aAogICB6ZXJvIGF2YWlsX291dCwgaXQgbXVzdCBiZSBjYWxsZWQgYWdhaW4gYWZ0ZXIgbWFraW5nIHJvb20gaW4gdGhlIG91dHB1dAotICBidWZmZXIgYmVjYXVzZSB0aGVyZSBtaWdodCBiZSBtb3JlIG91dHB1dCBwZW5kaW5nLgorICBidWZmZXIgYmVjYXVzZSB0aGVyZSBtaWdodCBiZSBtb3JlIG91dHB1dCBwZW5kaW5nLiBTZWUgZGVmbGF0ZVBlbmRpbmcoKSwKKyAgd2hpY2ggY2FuIGJlIHVzZWQgaWYgZGVzaXJlZCB0byBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhlcmUgaXMgbW9yZSBvdXB1dAorICBpbiB0aGF0IGNhc2UuCiAKICAgICBOb3JtYWxseSB0aGUgcGFyYW1ldGVyIGZsdXNoIGlzIHNldCB0byBaX05PX0ZMVVNILCB3aGljaCBhbGxvd3MgZGVmbGF0ZSB0bwogICBkZWNpZGUgaG93IG11Y2ggZGF0YSB0byBhY2N1bXVsYXRlIGJlZm9yZSBwcm9kdWNpbmcgb3V0cHV0LCBpbiBvcmRlciB0bwpAQCAtMjkyLDggKzI5OCw4IEBACiAgIGlucHV0IGRhdGEgc28gZmFyIHdpbGwgYmUgYXZhaWxhYmxlIHRvIHRoZSBkZWNvbXByZXNzb3IsIGFzIGZvciBaX1NZTkNfRkxVU0guCiAgIFRoaXMgY29tcGxldGVzIHRoZSBjdXJyZW50IGRlZmxhdGUgYmxvY2sgYW5kIGZvbGxvd3MgaXQgd2l0aCBhbiBlbXB0eSBmaXhlZAogICBjb2RlcyBibG9jayB0aGF0IGlzIDEwIGJpdHMgbG9uZy4gIFRoaXMgYXNzdXJlcyB0aGF0IGVub3VnaCBieXRlcyBhcmUgb3V0cHV0Ci0gIGluIG9yZGVyIGZvciB0aGUgZGVjb21wcmVzc29yIHRvIGZpbmlzaCB0aGUgYmxvY2sgYmVmb3JlIHRoZSBlbXB0eSBmaXhlZCBjb2RlCi0gIGJsb2NrLgorICBpbiBvcmRlciBmb3IgdGhlIGRlY29tcHJlc3NvciB0byBmaW5pc2ggdGhlIGJsb2NrIGJlZm9yZSB0aGUgZW1wdHkgZml4ZWQKKyAgY29kZXMgYmxvY2suCiAKICAgICBJZiBmbHVzaCBpcyBzZXQgdG8gWl9CTE9DSywgYSBkZWZsYXRlIGJsb2NrIGlzIGNvbXBsZXRlZCBhbmQgZW1pdHRlZCwgYXMKICAgZm9yIFpfU1lOQ19GTFVTSCwgYnV0IHRoZSBvdXRwdXQgaXMgbm90IGFsaWduZWQgb24gYSBieXRlIGJvdW5kYXJ5LCBhbmQgdXAgdG8KQEAgLTMxOSwzNCArMzI1LDM4IEBACiAKICAgICBJZiB0aGUgcGFyYW1ldGVyIGZsdXNoIGlzIHNldCB0byBaX0ZJTklTSCwgcGVuZGluZyBpbnB1dCBpcyBwcm9jZXNzZWQsCiAgIHBlbmRpbmcgb3V0cHV0IGlzIGZsdXNoZWQgYW5kIGRlZmxhdGUgcmV0dXJucyB3aXRoIFpfU1RSRUFNX0VORCBpZiB0aGVyZSB3YXMKLSAgZW5vdWdoIG91dHB1dCBzcGFjZTsgaWYgZGVmbGF0ZSByZXR1cm5zIHdpdGggWl9PSywgdGhpcyBmdW5jdGlvbiBtdXN0IGJlCi0gIGNhbGxlZCBhZ2FpbiB3aXRoIFpfRklOSVNIIGFuZCBtb3JlIG91dHB1dCBzcGFjZSAodXBkYXRlZCBhdmFpbF9vdXQpIGJ1dCBubwotICBtb3JlIGlucHV0IGRhdGEsIHVudGlsIGl0IHJldHVybnMgd2l0aCBaX1NUUkVBTV9FTkQgb3IgYW4gZXJyb3IuICBBZnRlcgotICBkZWZsYXRlIGhhcyByZXR1cm5lZCBaX1NUUkVBTV9FTkQsIHRoZSBvbmx5IHBvc3NpYmxlIG9wZXJhdGlvbnMgb24gdGhlIHN0cmVhbQotICBhcmUgZGVmbGF0ZVJlc2V0IG9yIGRlZmxhdGVFbmQuCisgIGVub3VnaCBvdXRwdXQgc3BhY2UuICBJZiBkZWZsYXRlIHJldHVybnMgd2l0aCBaX09LIG9yIFpfQlVGX0VSUk9SLCB0aGlzCisgIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGFnYWluIHdpdGggWl9GSU5JU0ggYW5kIG1vcmUgb3V0cHV0IHNwYWNlICh1cGRhdGVkCisgIGF2YWlsX291dCkgYnV0IG5vIG1vcmUgaW5wdXQgZGF0YSwgdW50aWwgaXQgcmV0dXJucyB3aXRoIFpfU1RSRUFNX0VORCBvciBhbgorICBlcnJvci4gIEFmdGVyIGRlZmxhdGUgaGFzIHJldHVybmVkIFpfU1RSRUFNX0VORCwgdGhlIG9ubHkgcG9zc2libGUgb3BlcmF0aW9ucworICBvbiB0aGUgc3RyZWFtIGFyZSBkZWZsYXRlUmVzZXQgb3IgZGVmbGF0ZUVuZC4KIAotICAgIFpfRklOSVNIIGNhbiBiZSB1c2VkIGltbWVkaWF0ZWx5IGFmdGVyIGRlZmxhdGVJbml0IGlmIGFsbCB0aGUgY29tcHJlc3Npb24KLSAgaXMgdG8gYmUgZG9uZSBpbiBhIHNpbmdsZSBzdGVwLiAgSW4gdGhpcyBjYXNlLCBhdmFpbF9vdXQgbXVzdCBiZSBhdCBsZWFzdCB0aGUKLSAgdmFsdWUgcmV0dXJuZWQgYnkgZGVmbGF0ZUJvdW5kIChzZWUgYmVsb3cpLiAgVGhlbiBkZWZsYXRlIGlzIGd1YXJhbnRlZWQgdG8KLSAgcmV0dXJuIFpfU1RSRUFNX0VORC4gIElmIG5vdCBlbm91Z2ggb3V0cHV0IHNwYWNlIGlzIHByb3ZpZGVkLCBkZWZsYXRlIHdpbGwKLSAgbm90IHJldHVybiBaX1NUUkVBTV9FTkQsIGFuZCBpdCBtdXN0IGJlIGNhbGxlZCBhZ2FpbiBhcyBkZXNjcmliZWQgYWJvdmUuCisgICAgWl9GSU5JU0ggY2FuIGJlIHVzZWQgaW4gdGhlIGZpcnN0IGRlZmxhdGUgY2FsbCBhZnRlciBkZWZsYXRlSW5pdCBpZiBhbGwgdGhlCisgIGNvbXByZXNzaW9uIGlzIHRvIGJlIGRvbmUgaW4gYSBzaW5nbGUgc3RlcC4gIEluIG9yZGVyIHRvIGNvbXBsZXRlIGluIG9uZQorICBjYWxsLCBhdmFpbF9vdXQgbXVzdCBiZSBhdCBsZWFzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgZGVmbGF0ZUJvdW5kIChzZWUKKyAgYmVsb3cpLiAgVGhlbiBkZWZsYXRlIGlzIGd1YXJhbnRlZWQgdG8gcmV0dXJuIFpfU1RSRUFNX0VORC4gIElmIG5vdCBlbm91Z2gKKyAgb3V0cHV0IHNwYWNlIGlzIHByb3ZpZGVkLCBkZWZsYXRlIHdpbGwgbm90IHJldHVybiBaX1NUUkVBTV9FTkQsIGFuZCBpdCBtdXN0CisgIGJlIGNhbGxlZCBhZ2FpbiBhcyBkZXNjcmliZWQgYWJvdmUuCiAKLSAgICBkZWZsYXRlKCkgc2V0cyBzdHJtLT5hZGxlciB0byB0aGUgYWRsZXIzMiBjaGVja3N1bSBvZiBhbGwgaW5wdXQgcmVhZAotICBzbyBmYXIgKHRoYXQgaXMsIHRvdGFsX2luIGJ5dGVzKS4KKyAgICBkZWZsYXRlKCkgc2V0cyBzdHJtLT5hZGxlciB0byB0aGUgQWRsZXItMzIgY2hlY2tzdW0gb2YgYWxsIGlucHV0IHJlYWQKKyAgc28gZmFyICh0aGF0IGlzLCB0b3RhbF9pbiBieXRlcykuICBJZiBhIGd6aXAgc3RyZWFtIGlzIGJlaW5nIGdlbmVyYXRlZCwgdGhlbgorICBzdHJtLT5hZGxlciB3aWxsIGJlIHRoZSBDUkMtMzIgY2hlY2tzdW0gb2YgdGhlIGlucHV0IHJlYWQgc28gZmFyLiAgKFNlZQorICBkZWZsYXRlSW5pdDIgYmVsb3cuKQogCiAgICAgZGVmbGF0ZSgpIG1heSB1cGRhdGUgc3RybS0+ZGF0YV90eXBlIGlmIGl0IGNhbiBtYWtlIGEgZ29vZCBndWVzcyBhYm91dAotICB0aGUgaW5wdXQgZGF0YSB0eXBlIChaX0JJTkFSWSBvciBaX1RFWFQpLiAgSW4gZG91YnQsIHRoZSBkYXRhIGlzIGNvbnNpZGVyZWQKLSAgYmluYXJ5LiAgVGhpcyBmaWVsZCBpcyBvbmx5IGZvciBpbmZvcm1hdGlvbiBwdXJwb3NlcyBhbmQgZG9lcyBub3QgYWZmZWN0IHRoZQotICBjb21wcmVzc2lvbiBhbGdvcml0aG0gaW4gYW55IG1hbm5lci4KKyAgdGhlIGlucHV0IGRhdGEgdHlwZSAoWl9CSU5BUlkgb3IgWl9URVhUKS4gIElmIGluIGRvdWJ0LCB0aGUgZGF0YSBpcworICBjb25zaWRlcmVkIGJpbmFyeS4gIFRoaXMgZmllbGQgaXMgb25seSBmb3IgaW5mb3JtYXRpb24gcHVycG9zZXMgYW5kIGRvZXMgbm90CisgIGFmZmVjdCB0aGUgY29tcHJlc3Npb24gYWxnb3JpdGhtIGluIGFueSBtYW5uZXIuCiAKICAgICBkZWZsYXRlKCkgcmV0dXJucyBaX09LIGlmIHNvbWUgcHJvZ3Jlc3MgaGFzIGJlZW4gbWFkZSAobW9yZSBpbnB1dAogICBwcm9jZXNzZWQgb3IgbW9yZSBvdXRwdXQgcHJvZHVjZWQpLCBaX1NUUkVBTV9FTkQgaWYgYWxsIGlucHV0IGhhcyBiZWVuCiAgIGNvbnN1bWVkIGFuZCBhbGwgb3V0cHV0IGhhcyBiZWVuIHByb2R1Y2VkIChvbmx5IHdoZW4gZmx1c2ggaXMgc2V0IHRvCiAgIFpfRklOSVNIKSwgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50IChmb3IgZXhhbXBsZQotICBpZiBuZXh0X2luIG9yIG5leHRfb3V0IHdhcyBaX05VTEwpLCBaX0JVRl9FUlJPUiBpZiBubyBwcm9ncmVzcyBpcyBwb3NzaWJsZQotICAoZm9yIGV4YW1wbGUgYXZhaWxfaW4gb3IgYXZhaWxfb3V0IHdhcyB6ZXJvKS4gIE5vdGUgdGhhdCBaX0JVRl9FUlJPUiBpcyBub3QKLSAgZmF0YWwsIGFuZCBkZWZsYXRlKCkgY2FuIGJlIGNhbGxlZCBhZ2FpbiB3aXRoIG1vcmUgaW5wdXQgYW5kIG1vcmUgb3V0cHV0Ci0gIHNwYWNlIHRvIGNvbnRpbnVlIGNvbXByZXNzaW5nLgorICBpZiBuZXh0X2luIG9yIG5leHRfb3V0IHdhcyBaX05VTEwgb3IgdGhlIHN0YXRlIHdhcyBpbmFkdmVydGVudGx5IHdyaXR0ZW4gb3ZlcgorICBieSB0aGUgYXBwbGljYXRpb24pLCBvciBaX0JVRl9FUlJPUiBpZiBubyBwcm9ncmVzcyBpcyBwb3NzaWJsZSAoZm9yIGV4YW1wbGUKKyAgYXZhaWxfaW4gb3IgYXZhaWxfb3V0IHdhcyB6ZXJvKS4gIE5vdGUgdGhhdCBaX0JVRl9FUlJPUiBpcyBub3QgZmF0YWwsIGFuZAorICBkZWZsYXRlKCkgY2FuIGJlIGNhbGxlZCBhZ2FpbiB3aXRoIG1vcmUgaW5wdXQgYW5kIG1vcmUgb3V0cHV0IHNwYWNlIHRvCisgIGNvbnRpbnVlIGNvbXByZXNzaW5nLgogKi8KIAogCkBAIC0zNjksMjMgKzM3OSwyMSBAQAogCiAgICAgIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBzdHJlYW0gc3RhdGUgZm9yIGRlY29tcHJlc3Npb24uICBUaGUgZmllbGRzCiAgICBuZXh0X2luLCBhdmFpbF9pbiwgemFsbG9jLCB6ZnJlZSBhbmQgb3BhcXVlIG11c3QgYmUgaW5pdGlhbGl6ZWQgYmVmb3JlIGJ5Ci0gICB0aGUgY2FsbGVyLiAgSWYgbmV4dF9pbiBpcyBub3QgWl9OVUxMIGFuZCBhdmFpbF9pbiBpcyBsYXJnZSBlbm91Z2ggKHRoZQotICAgZXhhY3QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgY29tcHJlc3Npb24gbWV0aG9kKSwgaW5mbGF0ZUluaXQgZGV0ZXJtaW5lcyB0aGUKLSAgIGNvbXByZXNzaW9uIG1ldGhvZCBmcm9tIHRoZSB6bGliIGhlYWRlciBhbmQgYWxsb2NhdGVzIGFsbCBkYXRhIHN0cnVjdHVyZXMKLSAgIGFjY29yZGluZ2x5OyBvdGhlcndpc2UgdGhlIGFsbG9jYXRpb24gd2lsbCBiZSBkZWZlcnJlZCB0byB0aGUgZmlyc3QgY2FsbCBvZgotICAgaW5mbGF0ZS4gIElmIHphbGxvYyBhbmQgemZyZWUgYXJlIHNldCB0byBaX05VTEwsIGluZmxhdGVJbml0IHVwZGF0ZXMgdGhlbSB0bwotICAgdXNlIGRlZmF1bHQgYWxsb2NhdGlvbiBmdW5jdGlvbnMuCisgICB0aGUgY2FsbGVyLiAgSW4gdGhlIGN1cnJlbnQgdmVyc2lvbiBvZiBpbmZsYXRlLCB0aGUgcHJvdmlkZWQgaW5wdXQgaXMgbm90CisgICByZWFkIG9yIGNvbnN1bWVkLiAgVGhlIGFsbG9jYXRpb24gb2YgYSBzbGlkaW5nIHdpbmRvdyB3aWxsIGJlIGRlZmVycmVkIHRvCisgICB0aGUgZmlyc3QgY2FsbCBvZiBpbmZsYXRlIChpZiB0aGUgZGVjb21wcmVzc2lvbiBkb2VzIG5vdCBjb21wbGV0ZSBvbiB0aGUKKyAgIGZpcnN0IGNhbGwpLiAgSWYgemFsbG9jIGFuZCB6ZnJlZSBhcmUgc2V0IHRvIFpfTlVMTCwgaW5mbGF0ZUluaXQgdXBkYXRlcworICAgdGhlbSB0byB1c2UgZGVmYXVsdCBhbGxvY2F0aW9uIGZ1bmN0aW9ucy4KIAogICAgICBpbmZsYXRlSW5pdCByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2gKICAgIG1lbW9yeSwgWl9WRVJTSU9OX0VSUk9SIGlmIHRoZSB6bGliIGxpYnJhcnkgdmVyc2lvbiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUKICAgIHZlcnNpb24gYXNzdW1lZCBieSB0aGUgY2FsbGVyLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgcGFyYW1ldGVycyBhcmUKICAgIGludmFsaWQsIHN1Y2ggYXMgYSBudWxsIHBvaW50ZXIgdG8gdGhlIHN0cnVjdHVyZS4gIG1zZyBpcyBzZXQgdG8gbnVsbCBpZgotICAgdGhlcmUgaXMgbm8gZXJyb3IgbWVzc2FnZS4gIGluZmxhdGVJbml0IGRvZXMgbm90IHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb24KLSAgIGFwYXJ0IGZyb20gcG9zc2libHkgcmVhZGluZyB0aGUgemxpYiBoZWFkZXIgaWYgcHJlc2VudDogYWN0dWFsIGRlY29tcHJlc3Npb24KLSAgIHdpbGwgYmUgZG9uZSBieSBpbmZsYXRlKCkuICAoU28gbmV4dF9pbiBhbmQgYXZhaWxfaW4gbWF5IGJlIG1vZGlmaWVkLCBidXQKLSAgIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQgYXJlIHVudXNlZCBhbmQgdW5jaGFuZ2VkLikgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KLSAgIG9mIGluZmxhdGVJbml0KCkgZG9lcyBub3QgcHJvY2VzcyBhbnkgaGVhZGVyIGluZm9ybWF0aW9uIC0tIHRoYXQgaXMgZGVmZXJyZWQKLSAgIHVudGlsIGluZmxhdGUoKSBpcyBjYWxsZWQuCisgICB0aGVyZSBpcyBubyBlcnJvciBtZXNzYWdlLiAgaW5mbGF0ZUluaXQgZG9lcyBub3QgcGVyZm9ybSBhbnkgZGVjb21wcmVzc2lvbi4KKyAgIEFjdHVhbCBkZWNvbXByZXNzaW9uIHdpbGwgYmUgZG9uZSBieSBpbmZsYXRlKCkuICBTbyBuZXh0X2luLCBhbmQgYXZhaWxfaW4sCisgICBuZXh0X291dCwgYW5kIGF2YWlsX291dCBhcmUgdW51c2VkIGFuZCB1bmNoYW5nZWQuICBUaGUgY3VycmVudAorICAgaW1wbGVtZW50YXRpb24gb2YgaW5mbGF0ZUluaXQoKSBkb2VzIG5vdCBwcm9jZXNzIGFueSBoZWFkZXIgaW5mb3JtYXRpb24gLS0KKyAgIHRoYXQgaXMgZGVmZXJyZWQgdW50aWwgaW5mbGF0ZSgpIGlzIGNhbGxlZC4KICovCiAKIApAQCAtNDAxLDE3ICs0MDksMjAgQEAKIAogICAtIERlY29tcHJlc3MgbW9yZSBpbnB1dCBzdGFydGluZyBhdCBuZXh0X2luIGFuZCB1cGRhdGUgbmV4dF9pbiBhbmQgYXZhaWxfaW4KICAgICBhY2NvcmRpbmdseS4gIElmIG5vdCBhbGwgaW5wdXQgY2FuIGJlIHByb2Nlc3NlZCAoYmVjYXVzZSB0aGVyZSBpcyBub3QKLSAgICBlbm91Z2ggcm9vbSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciksIG5leHRfaW4gaXMgdXBkYXRlZCBhbmQgcHJvY2Vzc2luZyB3aWxsCi0gICAgcmVzdW1lIGF0IHRoaXMgcG9pbnQgZm9yIHRoZSBuZXh0IGNhbGwgb2YgaW5mbGF0ZSgpLgorICAgIGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQgYnVmZmVyKSwgdGhlbiBuZXh0X2luIGFuZCBhdmFpbF9pbiBhcmUgdXBkYXRlZAorICAgIGFjY29yZGluZ2x5LCBhbmQgcHJvY2Vzc2luZyB3aWxsIHJlc3VtZSBhdCB0aGlzIHBvaW50IGZvciB0aGUgbmV4dCBjYWxsIG9mCisgICAgaW5mbGF0ZSgpLgogCi0gIC0gUHJvdmlkZSBtb3JlIG91dHB1dCBzdGFydGluZyBhdCBuZXh0X291dCBhbmQgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQKKyAgLSBHZW5lcmF0ZSBtb3JlIG91dHB1dCBzdGFydGluZyBhdCBuZXh0X291dCBhbmQgdXBkYXRlIG5leHRfb3V0IGFuZCBhdmFpbF9vdXQKICAgICBhY2NvcmRpbmdseS4gIGluZmxhdGUoKSBwcm92aWRlcyBhcyBtdWNoIG91dHB1dCBhcyBwb3NzaWJsZSwgdW50aWwgdGhlcmUgaXMKICAgICBubyBtb3JlIGlucHV0IGRhdGEgb3Igbm8gbW9yZSBzcGFjZSBpbiB0aGUgb3V0cHV0IGJ1ZmZlciAoc2VlIGJlbG93IGFib3V0CiAgICAgdGhlIGZsdXNoIHBhcmFtZXRlcikuCiAKICAgICBCZWZvcmUgdGhlIGNhbGwgb2YgaW5mbGF0ZSgpLCB0aGUgYXBwbGljYXRpb24gc2hvdWxkIGVuc3VyZSB0aGF0IGF0IGxlYXN0CiAgIG9uZSBvZiB0aGUgYWN0aW9ucyBpcyBwb3NzaWJsZSwgYnkgcHJvdmlkaW5nIG1vcmUgaW5wdXQgYW5kL29yIGNvbnN1bWluZyBtb3JlCi0gIG91dHB1dCwgYW5kIHVwZGF0aW5nIHRoZSBuZXh0XyogYW5kIGF2YWlsXyogdmFsdWVzIGFjY29yZGluZ2x5LiAgVGhlCisgIG91dHB1dCwgYW5kIHVwZGF0aW5nIHRoZSBuZXh0XyogYW5kIGF2YWlsXyogdmFsdWVzIGFjY29yZGluZ2x5LiAgSWYgdGhlCisgIGNhbGxlciBvZiBpbmZsYXRlKCkgZG9lcyBub3QgcHJvdmlkZSBib3RoIGF2YWlsYWJsZSBpbnB1dCBhbmQgYXZhaWxhYmxlCisgIG91dHB1dCBzcGFjZSwgaXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3aWxsIGJlIG5vIHByb2dyZXNzIG1hZGUuICBUaGUKICAgYXBwbGljYXRpb24gY2FuIGNvbnN1bWUgdGhlIHVuY29tcHJlc3NlZCBvdXRwdXQgd2hlbiBpdCB3YW50cywgZm9yIGV4YW1wbGUKICAgd2hlbiB0aGUgb3V0cHV0IGJ1ZmZlciBpcyBmdWxsIChhdmFpbF9vdXQgPT0gMCksIG9yIGFmdGVyIGVhY2ggY2FsbCBvZgogICBpbmZsYXRlKCkuICBJZiBpbmZsYXRlIHJldHVybnMgWl9PSyBhbmQgd2l0aCB6ZXJvIGF2YWlsX291dCwgaXQgbXVzdCBiZQpAQCAtNDI4LDcgKzQzOSw3IEBACiAgIGdldHMgdG8gdGhlIGVuZCBvZiB0aGF0IGJsb2NrLCBvciB3aGVuIGl0IHJ1bnMgb3V0IG9mIGRhdGEuCiAKICAgICBUaGUgWl9CTE9DSyBvcHRpb24gYXNzaXN0cyBpbiBhcHBlbmRpbmcgdG8gb3IgY29tYmluaW5nIGRlZmxhdGUgc3RyZWFtcy4KLSAgQWxzbyB0byBhc3Npc3QgaW4gdGhpcywgb24gcmV0dXJuIGluZmxhdGUoKSB3aWxsIHNldCBzdHJtLT5kYXRhX3R5cGUgdG8gdGhlCisgIFRvIGFzc2lzdCBpbiB0aGlzLCBvbiByZXR1cm4gaW5mbGF0ZSgpIGFsd2F5cyBzZXRzIHN0cm0tPmRhdGFfdHlwZSB0byB0aGUKICAgbnVtYmVyIG9mIHVudXNlZCBiaXRzIGluIHRoZSBsYXN0IGJ5dGUgdGFrZW4gZnJvbSBzdHJtLT5uZXh0X2luLCBwbHVzIDY0IGlmCiAgIGluZmxhdGUoKSBpcyBjdXJyZW50bHkgZGVjb2RpbmcgdGhlIGxhc3QgYmxvY2sgaW4gdGhlIGRlZmxhdGUgc3RyZWFtLCBwbHVzCiAgIDEyOCBpZiBpbmZsYXRlKCkgcmV0dXJuZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgZGVjb2RpbmcgYW4gZW5kLW9mLWJsb2NrIGNvZGUgb3IKQEAgLTQ1NCw3ICs0NjUsNyBAQAogICB0aGlzIGNhc2UgYWxsIHBlbmRpbmcgaW5wdXQgaXMgcHJvY2Vzc2VkIGFuZCBhbGwgcGVuZGluZyBvdXRwdXQgaXMgZmx1c2hlZDsKICAgYXZhaWxfb3V0IG11c3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGhvbGQgYWxsIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBmb3IgdGhlCiAgIG9wZXJhdGlvbiB0byBjb21wbGV0ZS4gIChUaGUgc2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGRhdGEgbWF5IGhhdmUgYmVlbgotICBzYXZlZCBieSB0aGUgY29tcHJlc3NvciBmb3IgdGhpcyBwdXJwb3NlLikgVGhlIHVzZSBvZiBaX0ZJTklTSCBpcyBub3QKKyAgc2F2ZWQgYnkgdGhlIGNvbXByZXNzb3IgZm9yIHRoaXMgcHVycG9zZS4pICBUaGUgdXNlIG9mIFpfRklOSVNIIGlzIG5vdAogICByZXF1aXJlZCB0byBwZXJmb3JtIGFuIGluZmxhdGlvbiBpbiBvbmUgc3RlcC4gIEhvd2V2ZXIgaXQgbWF5IGJlIHVzZWQgdG8KICAgaW5mb3JtIGluZmxhdGUgdGhhdCBhIGZhc3RlciBhcHByb2FjaCBjYW4gYmUgdXNlZCBmb3IgdGhlIHNpbmdsZSBpbmZsYXRlKCkKICAgY2FsbC4gIFpfRklOSVNIIGFsc28gaW5mb3JtcyBpbmZsYXRlIHRvIG5vdCBtYWludGFpbiBhIHNsaWRpbmcgd2luZG93IGlmIHRoZQpAQCAtNDc2LDMyICs0ODcsMzMgQEAKICAgY2hvc2VuIGJ5IHRoZSBjb21wcmVzc29yIGFuZCByZXR1cm5zIFpfTkVFRF9ESUNUOyBvdGhlcndpc2UgaXQgc2V0cwogICBzdHJtLT5hZGxlciB0byB0aGUgQWRsZXItMzIgY2hlY2tzdW0gb2YgYWxsIG91dHB1dCBwcm9kdWNlZCBzbyBmYXIgKHRoYXQgaXMsCiAgIHRvdGFsX291dCBieXRlcykgYW5kIHJldHVybnMgWl9PSywgWl9TVFJFQU1fRU5EIG9yIGFuIGVycm9yIGNvZGUgYXMgZGVzY3JpYmVkCi0gIGJlbG93LiAgQXQgdGhlIGVuZCBvZiB0aGUgc3RyZWFtLCBpbmZsYXRlKCkgY2hlY2tzIHRoYXQgaXRzIGNvbXB1dGVkIGFkbGVyMzIKKyAgYmVsb3cuICBBdCB0aGUgZW5kIG9mIHRoZSBzdHJlYW0sIGluZmxhdGUoKSBjaGVja3MgdGhhdCBpdHMgY29tcHV0ZWQgQWRsZXItMzIKICAgY2hlY2tzdW0gaXMgZXF1YWwgdG8gdGhhdCBzYXZlZCBieSB0aGUgY29tcHJlc3NvciBhbmQgcmV0dXJucyBaX1NUUkVBTV9FTkQKICAgb25seSBpZiB0aGUgY2hlY2tzdW0gaXMgY29ycmVjdC4KIAogICAgIGluZmxhdGUoKSBjYW4gZGVjb21wcmVzcyBhbmQgY2hlY2sgZWl0aGVyIHpsaWItd3JhcHBlZCBvciBnemlwLXdyYXBwZWQKICAgZGVmbGF0ZSBkYXRhLiAgVGhlIGhlYWRlciB0eXBlIGlzIGRldGVjdGVkIGF1dG9tYXRpY2FsbHksIGlmIHJlcXVlc3RlZCB3aGVuCiAgIGluaXRpYWxpemluZyB3aXRoIGluZmxhdGVJbml0MigpLiAgQW55IGluZm9ybWF0aW9uIGNvbnRhaW5lZCBpbiB0aGUgZ3ppcAotICBoZWFkZXIgaXMgbm90IHJldGFpbmVkLCBzbyBhcHBsaWNhdGlvbnMgdGhhdCBuZWVkIHRoYXQgaW5mb3JtYXRpb24gc2hvdWxkCi0gIGluc3RlYWQgdXNlIHJhdyBpbmZsYXRlLCBzZWUgaW5mbGF0ZUluaXQyKCkgYmVsb3csIG9yIGluZmxhdGVCYWNrKCkgYW5kCi0gIHBlcmZvcm0gdGhlaXIgb3duIHByb2Nlc3Npbmcgb2YgdGhlIGd6aXAgaGVhZGVyIGFuZCB0cmFpbGVyLiAgV2hlbiBwcm9jZXNzaW5nCisgIGhlYWRlciBpcyBub3QgcmV0YWluZWQgdW5sZXNzIGluZmxhdGVHZXRIZWFkZXIoKSBpcyB1c2VkLiAgV2hlbiBwcm9jZXNzaW5nCiAgIGd6aXAtd3JhcHBlZCBkZWZsYXRlIGRhdGEsIHN0cm0tPmFkbGVyMzIgaXMgc2V0IHRvIHRoZSBDUkMtMzIgb2YgdGhlIG91dHB1dAotICBwcm9kdWN0ZWQgc28gZmFyLiAgVGhlIENSQy0zMiBpcyBjaGVja2VkIGFnYWluc3QgdGhlIGd6aXAgdHJhaWxlci4KKyAgcHJvZHVjZWQgc28gZmFyLiAgVGhlIENSQy0zMiBpcyBjaGVja2VkIGFnYWluc3QgdGhlIGd6aXAgdHJhaWxlciwgYXMgaXMgdGhlCisgIHVuY29tcHJlc3NlZCBsZW5ndGgsIG1vZHVsbyAyXjMyLgogCiAgICAgaW5mbGF0ZSgpIHJldHVybnMgWl9PSyBpZiBzb21lIHByb2dyZXNzIGhhcyBiZWVuIG1hZGUgKG1vcmUgaW5wdXQgcHJvY2Vzc2VkCiAgIG9yIG1vcmUgb3V0cHV0IHByb2R1Y2VkKSwgWl9TVFJFQU1fRU5EIGlmIHRoZSBlbmQgb2YgdGhlIGNvbXByZXNzZWQgZGF0YSBoYXMKICAgYmVlbiByZWFjaGVkIGFuZCBhbGwgdW5jb21wcmVzc2VkIG91dHB1dCBoYXMgYmVlbiBwcm9kdWNlZCwgWl9ORUVEX0RJQ1QgaWYgYQogICBwcmVzZXQgZGljdGlvbmFyeSBpcyBuZWVkZWQgYXQgdGhpcyBwb2ludCwgWl9EQVRBX0VSUk9SIGlmIHRoZSBpbnB1dCBkYXRhIHdhcwogICBjb3JydXB0ZWQgKGlucHV0IHN0cmVhbSBub3QgY29uZm9ybWluZyB0byB0aGUgemxpYiBmb3JtYXQgb3IgaW5jb3JyZWN0IGNoZWNrCi0gIHZhbHVlKSwgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHN0cmVhbSBzdHJ1Y3R1cmUgd2FzIGluY29uc2lzdGVudCAoZm9yIGV4YW1wbGUKLSAgbmV4dF9pbiBvciBuZXh0X291dCB3YXMgWl9OVUxMKSwgWl9NRU1fRVJST1IgaWYgdGhlcmUgd2FzIG5vdCBlbm91Z2ggbWVtb3J5LAotICBaX0JVRl9FUlJPUiBpZiBubyBwcm9ncmVzcyBpcyBwb3NzaWJsZSBvciBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZQotICBvdXRwdXQgYnVmZmVyIHdoZW4gWl9GSU5JU0ggaXMgdXNlZC4gIE5vdGUgdGhhdCBaX0JVRl9FUlJPUiBpcyBub3QgZmF0YWwsIGFuZAorICB2YWx1ZSwgaW4gd2hpY2ggY2FzZSBzdHJtLT5tc2cgcG9pbnRzIHRvIGEgc3RyaW5nIHdpdGggYSBtb3JlIHNwZWNpZmljCisgIGVycm9yKSwgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHN0cmVhbSBzdHJ1Y3R1cmUgd2FzIGluY29uc2lzdGVudCAoZm9yIGV4YW1wbGUKKyAgbmV4dF9pbiBvciBuZXh0X291dCB3YXMgWl9OVUxMLCBvciB0aGUgc3RhdGUgd2FzIGluYWR2ZXJ0ZW50bHkgd3JpdHRlbiBvdmVyCisgIGJ5IHRoZSBhcHBsaWNhdGlvbiksIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoIG1lbW9yeSwgWl9CVUZfRVJST1IKKyAgaWYgbm8gcHJvZ3Jlc3Mgd2FzIHBvc3NpYmxlIG9yIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dAorICBidWZmZXIgd2hlbiBaX0ZJTklTSCBpcyB1c2VkLiAgTm90ZSB0aGF0IFpfQlVGX0VSUk9SIGlzIG5vdCBmYXRhbCwgYW5kCiAgIGluZmxhdGUoKSBjYW4gYmUgY2FsbGVkIGFnYWluIHdpdGggbW9yZSBpbnB1dCBhbmQgbW9yZSBvdXRwdXQgc3BhY2UgdG8KICAgY29udGludWUgZGVjb21wcmVzc2luZy4gIElmIFpfREFUQV9FUlJPUiBpcyByZXR1cm5lZCwgdGhlIGFwcGxpY2F0aW9uIG1heQogICB0aGVuIGNhbGwgaW5mbGF0ZVN5bmMoKSB0byBsb29rIGZvciBhIGdvb2QgY29tcHJlc3Npb24gYmxvY2sgaWYgYSBwYXJ0aWFsCi0gIHJlY292ZXJ5IG9mIHRoZSBkYXRhIGlzIGRlc2lyZWQuCisgIHJlY292ZXJ5IG9mIHRoZSBkYXRhIGlzIHRvIGJlIGF0dGVtcHRlZC4KICovCiAKIApAQCAtNTExLDkgKzUyMyw4IEBACiAgICBUaGlzIGZ1bmN0aW9uIGRpc2NhcmRzIGFueSB1bnByb2Nlc3NlZCBpbnB1dCBhbmQgZG9lcyBub3QgZmx1c2ggYW55IHBlbmRpbmcKICAgIG91dHB1dC4KIAotICAgICBpbmZsYXRlRW5kIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc3RyZWFtIHN0YXRlCi0gICB3YXMgaW5jb25zaXN0ZW50LiAgSW4gdGhlIGVycm9yIGNhc2UsIG1zZyBtYXkgYmUgc2V0IGJ1dCB0aGVuIHBvaW50cyB0byBhCi0gICBzdGF0aWMgc3RyaW5nICh3aGljaCBtdXN0IG5vdCBiZSBkZWFsbG9jYXRlZCkuCisgICAgIGluZmxhdGVFbmQgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzdHJlYW0gc3RhdGUKKyAgIHdhcyBpbmNvbnNpc3RlbnQuCiAqLwogCiAKQEAgLTU0NCwxNiArNTU1LDI5IEBACiAgICBjb21wcmVzc2lvbiBhdCB0aGUgZXhwZW5zZSBvZiBtZW1vcnkgdXNhZ2UuICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxNSBpZgogICAgZGVmbGF0ZUluaXQgaXMgdXNlZCBpbnN0ZWFkLgogCisgICAgIEZvciB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBkZWZsYXRlKCksIGEgd2luZG93Qml0cyB2YWx1ZSBvZiA4IChhCisgICB3aW5kb3cgc2l6ZSBvZiAyNTYgYnl0ZXMpIGlzIG5vdCBzdXBwb3J0ZWQuICBBcyBhIHJlc3VsdCwgYSByZXF1ZXN0IGZvciA4CisgICB3aWxsIHJlc3VsdCBpbiA5IChhIDUxMi1ieXRlIHdpbmRvdykuICBJbiB0aGF0IGNhc2UsIHByb3ZpZGluZyA4IHRvCisgICBpbmZsYXRlSW5pdDIoKSB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvciB3aGVuIHRoZSB6bGliIGhlYWRlciB3aXRoIDkgaXMKKyAgIGNoZWNrZWQgYWdhaW5zdCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgaW5mbGF0ZSgpLiAgVGhlIHJlbWVkeSBpcyB0byBub3QgdXNlIDgKKyAgIHdpdGggZGVmbGF0ZUluaXQyKCkgd2l0aCB0aGlzIGluaXRpYWxpemF0aW9uLCBvciBhdCBsZWFzdCBpbiB0aGF0IGNhc2UgdXNlIDkKKyAgIHdpdGggaW5mbGF0ZUluaXQyKCkuCisKICAgICAgd2luZG93Qml0cyBjYW4gYWxzbyBiZSAtOC4uLTE1IGZvciByYXcgZGVmbGF0ZS4gIEluIHRoaXMgY2FzZSwgLXdpbmRvd0JpdHMKICAgIGRldGVybWluZXMgdGhlIHdpbmRvdyBzaXplLiAgZGVmbGF0ZSgpIHdpbGwgdGhlbiBnZW5lcmF0ZSByYXcgZGVmbGF0ZSBkYXRhCi0gICB3aXRoIG5vIHpsaWIgaGVhZGVyIG9yIHRyYWlsZXIsIGFuZCB3aWxsIG5vdCBjb21wdXRlIGFuIGFkbGVyMzIgY2hlY2sgdmFsdWUuCisgICB3aXRoIG5vIHpsaWIgaGVhZGVyIG9yIHRyYWlsZXIsIGFuZCB3aWxsIG5vdCBjb21wdXRlIGEgY2hlY2sgdmFsdWUuCiAKICAgICAgd2luZG93Qml0cyBjYW4gYWxzbyBiZSBncmVhdGVyIHRoYW4gMTUgZm9yIG9wdGlvbmFsIGd6aXAgZW5jb2RpbmcuICBBZGQKICAgIDE2IHRvIHdpbmRvd0JpdHMgdG8gd3JpdGUgYSBzaW1wbGUgZ3ppcCBoZWFkZXIgYW5kIHRyYWlsZXIgYXJvdW5kIHRoZQogICAgY29tcHJlc3NlZCBkYXRhIGluc3RlYWQgb2YgYSB6bGliIHdyYXBwZXIuICBUaGUgZ3ppcCBoZWFkZXIgd2lsbCBoYXZlIG5vCiAgICBmaWxlIG5hbWUsIG5vIGV4dHJhIGRhdGEsIG5vIGNvbW1lbnQsIG5vIG1vZGlmaWNhdGlvbiB0aW1lIChzZXQgdG8gemVybyksIG5vCi0gICBoZWFkZXIgY3JjLCBhbmQgdGhlIG9wZXJhdGluZyBzeXN0ZW0gd2lsbCBiZSBzZXQgdG8gMjU1ICh1bmtub3duKS4gIElmIGEKLSAgIGd6aXAgc3RyZWFtIGlzIGJlaW5nIHdyaXR0ZW4sIHN0cm0tPmFkbGVyIGlzIGEgY3JjMzIgaW5zdGVhZCBvZiBhbiBhZGxlcjMyLgorICAgaGVhZGVyIGNyYywgYW5kIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdpbGwgYmUgc2V0IHRvIHRoZSBhcHByb3ByaWF0ZSB2YWx1ZSwKKyAgIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHdhcyBkZXRlcm1pbmVkIGF0IGNvbXBpbGUgdGltZS4gIElmIGEgZ3ppcCBzdHJlYW0gaXMKKyAgIGJlaW5nIHdyaXR0ZW4sIHN0cm0tPmFkbGVyIGlzIGEgQ1JDLTMyIGluc3RlYWQgb2YgYW4gQWRsZXItMzIuCisKKyAgICAgRm9yIHJhdyBkZWZsYXRlIG9yIGd6aXAgZW5jb2RpbmcsIGEgcmVxdWVzdCBmb3IgYSAyNTYtYnl0ZSB3aW5kb3cgaXMKKyAgIHJlamVjdGVkIGFzIGludmFsaWQsIHNpbmNlIG9ubHkgdGhlIHpsaWIgaGVhZGVyIHByb3ZpZGVzIGEgbWVhbnMgb2YKKyAgIHRyYW5zbWl0dGluZyB0aGUgd2luZG93IHNpemUgdG8gdGhlIGRlY29tcHJlc3Nvci4KIAogICAgICBUaGUgbWVtTGV2ZWwgcGFyYW1ldGVyIHNwZWNpZmllcyBob3cgbXVjaCBtZW1vcnkgc2hvdWxkIGJlIGFsbG9jYXRlZAogICAgZm9yIHRoZSBpbnRlcm5hbCBjb21wcmVzc2lvbiBzdGF0ZS4gIG1lbUxldmVsPTEgdXNlcyBtaW5pbXVtIG1lbW9yeSBidXQgaXMKQEAgLTYxNCwxMiArNjM4LDEyIEBACiAgICBhZGRpdGlvbiwgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgZGVmbGF0ZSB3aWxsIHVzZSBhdCBtb3N0IHRoZSB3aW5kb3cKICAgIHNpemUgbWludXMgMjYyIGJ5dGVzIG9mIHRoZSBwcm92aWRlZCBkaWN0aW9uYXJ5LgogCi0gICAgIFVwb24gcmV0dXJuIG9mIHRoaXMgZnVuY3Rpb24sIHN0cm0tPmFkbGVyIGlzIHNldCB0byB0aGUgYWRsZXIzMiB2YWx1ZQorICAgICBVcG9uIHJldHVybiBvZiB0aGlzIGZ1bmN0aW9uLCBzdHJtLT5hZGxlciBpcyBzZXQgdG8gdGhlIEFkbGVyLTMyIHZhbHVlCiAgICBvZiB0aGUgZGljdGlvbmFyeTsgdGhlIGRlY29tcHJlc3NvciBtYXkgbGF0ZXIgdXNlIHRoaXMgdmFsdWUgdG8gZGV0ZXJtaW5lCi0gICB3aGljaCBkaWN0aW9uYXJ5IGhhcyBiZWVuIHVzZWQgYnkgdGhlIGNvbXByZXNzb3IuICAoVGhlIGFkbGVyMzIgdmFsdWUKKyAgIHdoaWNoIGRpY3Rpb25hcnkgaGFzIGJlZW4gdXNlZCBieSB0aGUgY29tcHJlc3Nvci4gIChUaGUgQWRsZXItMzIgdmFsdWUKICAgIGFwcGxpZXMgdG8gdGhlIHdob2xlIGRpY3Rpb25hcnkgZXZlbiBpZiBvbmx5IGEgc3Vic2V0IG9mIHRoZSBkaWN0aW9uYXJ5IGlzCiAgICBhY3R1YWxseSB1c2VkIGJ5IHRoZSBjb21wcmVzc29yLikgSWYgYSByYXcgZGVmbGF0ZSB3YXMgcmVxdWVzdGVkLCB0aGVuIHRoZQotICAgYWRsZXIzMiB2YWx1ZSBpcyBub3QgY29tcHV0ZWQgYW5kIHN0cm0tPmFkbGVyIGlzIG5vdCBzZXQuCisgICBBZGxlci0zMiB2YWx1ZSBpcyBub3QgY29tcHV0ZWQgYW5kIHN0cm0tPmFkbGVyIGlzIG5vdCBzZXQuCiAKICAgICAgZGVmbGF0ZVNldERpY3Rpb25hcnkgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIGEKICAgIHBhcmFtZXRlciBpcyBpbnZhbGlkIChlLmcuICBkaWN0aW9uYXJ5IGJlaW5nIFpfTlVMTCkgb3IgdGhlIHN0cmVhbSBzdGF0ZSBpcwpAQCAtNjI4LDYgKzY1MiwyOCBAQAogICAgbm90IHBlcmZvcm0gYW55IGNvbXByZXNzaW9uOiB0aGlzIHdpbGwgYmUgZG9uZSBieSBkZWZsYXRlKCkuCiAqLwogCitaRVhURVJOIGludCBaRVhQT1JUIGRlZmxhdGVHZXREaWN0aW9uYXJ5IE9GKCh6X3N0cmVhbXAgc3RybSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ5dGVmICpkaWN0aW9uYXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdUludCAgKmRpY3RMZW5ndGgpKTsKKy8qCisgICAgIFJldHVybnMgdGhlIHNsaWRpbmcgZGljdGlvbmFyeSBiZWluZyBtYWludGFpbmVkIGJ5IGRlZmxhdGUuICBkaWN0TGVuZ3RoIGlzCisgICBzZXQgdG8gdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgZGljdGlvbmFyeSwgYW5kIHRoYXQgbWFueSBieXRlcyBhcmUgY29waWVkCisgICB0byBkaWN0aW9uYXJ5LiAgZGljdGlvbmFyeSBtdXN0IGhhdmUgZW5vdWdoIHNwYWNlLCB3aGVyZSAzMjc2OCBieXRlcyBpcworICAgYWx3YXlzIGVub3VnaC4gIElmIGRlZmxhdGVHZXREaWN0aW9uYXJ5KCkgaXMgY2FsbGVkIHdpdGggZGljdGlvbmFyeSBlcXVhbCB0bworICAgWl9OVUxMLCB0aGVuIG9ubHkgdGhlIGRpY3Rpb25hcnkgbGVuZ3RoIGlzIHJldHVybmVkLCBhbmQgbm90aGluZyBpcyBjb3BpZWQuCisgICBTaW1pbGFyeSwgaWYgZGljdExlbmd0aCBpcyBaX05VTEwsIHRoZW4gaXQgaXMgbm90IHNldC4KKworICAgICBkZWZsYXRlR2V0RGljdGlvbmFyeSgpIG1heSByZXR1cm4gYSBsZW5ndGggbGVzcyB0aGFuIHRoZSB3aW5kb3cgc2l6ZSwgZXZlbgorICAgd2hlbiBtb3JlIHRoYW4gdGhlIHdpbmRvdyBzaXplIGluIGlucHV0IGhhcyBiZWVuIHByb3ZpZGVkLiBJdCBtYXkgcmV0dXJuIHVwCisgICB0byAyNTggYnl0ZXMgbGVzcyBpbiB0aGF0IGNhc2UsIGR1ZSB0byBob3cgemxpYidzIGltcGxlbWVudGF0aW9uIG9mIGRlZmxhdGUKKyAgIG1hbmFnZXMgdGhlIHNsaWRpbmcgd2luZG93IGFuZCBsb29rYWhlYWQgZm9yIG1hdGNoZXMsIHdoZXJlIG1hdGNoZXMgY2FuIGJlCisgICB1cCB0byAyNTggYnl0ZXMgbG9uZy4gSWYgdGhlIGFwcGxpY2F0aW9uIG5lZWRzIHRoZSBsYXN0IHdpbmRvdy1zaXplIGJ5dGVzIG9mCisgICBpbnB1dCwgdGhlbiB0aGF0IHdvdWxkIG5lZWQgdG8gYmUgc2F2ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIG91dHNpZGUgb2YgemxpYi4KKworICAgICBkZWZsYXRlR2V0RGljdGlvbmFyeSByZXR1cm5zIFpfT0sgb24gc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlCisgICBzdHJlYW0gc3RhdGUgaXMgaW5jb25zaXN0ZW50LgorKi8KKwogWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlQ29weSBPRigoel9zdHJlYW1wIGRlc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6X3N0cmVhbXAgc291cmNlKSk7CiAvKgpAQCAtNjQ4LDEwICs2OTQsMTAgQEAKIAogWkVYVEVSTiBpbnQgWkVYUE9SVCBkZWZsYXRlUmVzZXQgT0YoKHpfc3RyZWFtcCBzdHJtKSk7CiAvKgotICAgICBUaGlzIGZ1bmN0aW9uIGlzIGVxdWl2YWxlbnQgdG8gZGVmbGF0ZUVuZCBmb2xsb3dlZCBieSBkZWZsYXRlSW5pdCwKLSAgIGJ1dCBkb2VzIG5vdCBmcmVlIGFuZCByZWFsbG9jYXRlIGFsbCB0aGUgaW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuICBUaGUKLSAgIHN0cmVhbSB3aWxsIGtlZXAgdGhlIHNhbWUgY29tcHJlc3Npb24gbGV2ZWwgYW5kIGFueSBvdGhlciBhdHRyaWJ1dGVzIHRoYXQKLSAgIG1heSBoYXZlIGJlZW4gc2V0IGJ5IGRlZmxhdGVJbml0Mi4KKyAgICAgVGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGRlZmxhdGVFbmQgZm9sbG93ZWQgYnkgZGVmbGF0ZUluaXQsIGJ1dAorICAgZG9lcyBub3QgZnJlZSBhbmQgcmVhbGxvY2F0ZSB0aGUgaW50ZXJuYWwgY29tcHJlc3Npb24gc3RhdGUuICBUaGUgc3RyZWFtCisgICB3aWxsIGxlYXZlIHRoZSBjb21wcmVzc2lvbiBsZXZlbCBhbmQgYW55IG90aGVyIGF0dHJpYnV0ZXMgdGhhdCBtYXkgaGF2ZSBiZWVuCisgICBzZXQgdW5jaGFuZ2VkLgogCiAgICAgIGRlZmxhdGVSZXNldCByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIHNvdXJjZQogICAgc3RyZWFtIHN0YXRlIHdhcyBpbmNvbnNpc3RlbnQgKHN1Y2ggYXMgemFsbG9jIG9yIHN0YXRlIGJlaW5nIFpfTlVMTCkuCkBAIC02NjIsMjAgKzcwOCwzNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyYXRlZ3kpKTsKIC8qCiAgICAgIER5bmFtaWNhbGx5IHVwZGF0ZSB0aGUgY29tcHJlc3Npb24gbGV2ZWwgYW5kIGNvbXByZXNzaW9uIHN0cmF0ZWd5LiAgVGhlCi0gICBpbnRlcnByZXRhdGlvbiBvZiBsZXZlbCBhbmQgc3RyYXRlZ3kgaXMgYXMgaW4gZGVmbGF0ZUluaXQyLiAgVGhpcyBjYW4gYmUKKyAgIGludGVycHJldGF0aW9uIG9mIGxldmVsIGFuZCBzdHJhdGVneSBpcyBhcyBpbiBkZWZsYXRlSW5pdDIoKS4gIFRoaXMgY2FuIGJlCiAgICB1c2VkIHRvIHN3aXRjaCBiZXR3ZWVuIGNvbXByZXNzaW9uIGFuZCBzdHJhaWdodCBjb3B5IG9mIHRoZSBpbnB1dCBkYXRhLCBvcgogICAgdG8gc3dpdGNoIHRvIGEgZGlmZmVyZW50IGtpbmQgb2YgaW5wdXQgZGF0YSByZXF1aXJpbmcgYSBkaWZmZXJlbnQgc3RyYXRlZ3kuCi0gICBJZiB0aGUgY29tcHJlc3Npb24gbGV2ZWwgaXMgY2hhbmdlZCwgdGhlIGlucHV0IGF2YWlsYWJsZSBzbyBmYXIgaXMKLSAgIGNvbXByZXNzZWQgd2l0aCB0aGUgb2xkIGxldmVsIChhbmQgbWF5IGJlIGZsdXNoZWQpOyB0aGUgbmV3IGxldmVsIHdpbGwgdGFrZQotICAgZWZmZWN0IG9ubHkgYXQgdGhlIG5leHQgY2FsbCBvZiBkZWZsYXRlKCkuCisgICBJZiB0aGUgY29tcHJlc3Npb24gYXBwcm9hY2ggKHdoaWNoIGlzIGEgZnVuY3Rpb24gb2YgdGhlIGxldmVsKSBvciB0aGUKKyAgIHN0cmF0ZWd5IGlzIGNoYW5nZWQsIGFuZCBpZiBhbnkgaW5wdXQgaGFzIGJlZW4gY29uc3VtZWQgaW4gYSBwcmV2aW91cworICAgZGVmbGF0ZSgpIGNhbGwsIHRoZW4gdGhlIGlucHV0IGF2YWlsYWJsZSBzbyBmYXIgaXMgY29tcHJlc3NlZCB3aXRoIHRoZSBvbGQKKyAgIGxldmVsIGFuZCBzdHJhdGVneSB1c2luZyBkZWZsYXRlKHN0cm0sIFpfQkxPQ0spLiAgVGhlcmUgYXJlIHRocmVlIGFwcHJvYWNoZXMKKyAgIGZvciB0aGUgY29tcHJlc3Npb24gbGV2ZWxzIDAsIDEuLjMsIGFuZCA0Li45IHJlc3BlY3RpdmVseS4gIFRoZSBuZXcgbGV2ZWwKKyAgIGFuZCBzdHJhdGVneSB3aWxsIHRha2UgZWZmZWN0IGF0IHRoZSBuZXh0IGNhbGwgb2YgZGVmbGF0ZSgpLgogCi0gICAgIEJlZm9yZSB0aGUgY2FsbCBvZiBkZWZsYXRlUGFyYW1zLCB0aGUgc3RyZWFtIHN0YXRlIG11c3QgYmUgc2V0IGFzIGZvcgotICAgYSBjYWxsIG9mIGRlZmxhdGUoKSwgc2luY2UgdGhlIGN1cnJlbnRseSBhdmFpbGFibGUgaW5wdXQgbWF5IGhhdmUgdG8gYmUKLSAgIGNvbXByZXNzZWQgYW5kIGZsdXNoZWQuICBJbiBwYXJ0aWN1bGFyLCBzdHJtLT5hdmFpbF9vdXQgbXVzdCBiZSBub24temVyby4KKyAgICAgSWYgYSBkZWZsYXRlKHN0cm0sIFpfQkxPQ0spIGlzIHBlcmZvcm1lZCBieSBkZWZsYXRlUGFyYW1zKCksIGFuZCBpdCBkb2VzCisgICBub3QgaGF2ZSBlbm91Z2ggb3V0cHV0IHNwYWNlIHRvIGNvbXBsZXRlLCB0aGVuIHRoZSBwYXJhbWV0ZXIgY2hhbmdlIHdpbGwgbm90CisgICB0YWtlIGVmZmVjdC4gIEluIHRoaXMgY2FzZSwgZGVmbGF0ZVBhcmFtcygpIGNhbiBiZSBjYWxsZWQgYWdhaW4gd2l0aCB0aGUKKyAgIHNhbWUgcGFyYW1ldGVycyBhbmQgbW9yZSBvdXRwdXQgc3BhY2UgdG8gdHJ5IGFnYWluLgogCi0gICAgIGRlZmxhdGVQYXJhbXMgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2UKLSAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50IG9yIGlmIGEgcGFyYW1ldGVyIHdhcyBpbnZhbGlkLCBaX0JVRl9FUlJPUiBpZgotICAgc3RybS0+YXZhaWxfb3V0IHdhcyB6ZXJvLgorICAgICBJbiBvcmRlciB0byBhc3N1cmUgYSBjaGFuZ2UgaW4gdGhlIHBhcmFtZXRlcnMgb24gdGhlIGZpcnN0IHRyeSwgdGhlCisgICBkZWZsYXRlIHN0cmVhbSBzaG91bGQgYmUgZmx1c2hlZCB1c2luZyBkZWZsYXRlKCkgd2l0aCBaX0JMT0NLIG9yIG90aGVyIGZsdXNoCisgICByZXF1ZXN0IHVudGlsIHN0cm0uYXZhaWxfb3V0IGlzIG5vdCB6ZXJvLCBiZWZvcmUgY2FsbGluZyBkZWZsYXRlUGFyYW1zKCkuCisgICBUaGVuIG5vIG1vcmUgaW5wdXQgZGF0YSBzaG91bGQgYmUgcHJvdmlkZWQgYmVmb3JlIHRoZSBkZWZsYXRlUGFyYW1zKCkgY2FsbC4KKyAgIElmIHRoaXMgaXMgZG9uZSwgdGhlIG9sZCBsZXZlbCBhbmQgc3RyYXRlZ3kgd2lsbCBiZSBhcHBsaWVkIHRvIHRoZSBkYXRhCisgICBjb21wcmVzc2VkIGJlZm9yZSBkZWZsYXRlUGFyYW1zKCksIGFuZCB0aGUgbmV3IGxldmVsIGFuZCBzdHJhdGVneSB3aWxsIGJlCisgICBhcHBsaWVkIHRvIHRoZSB0aGUgZGF0YSBjb21wcmVzc2VkIGFmdGVyIGRlZmxhdGVQYXJhbXMoKS4KKworICAgICBkZWZsYXRlUGFyYW1zIHJldHVybnMgWl9PSyBvbiBzdWNjZXNzLCBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlIHN0cmVhbQorICAgc3RhdGUgd2FzIGluY29uc2lzdGVudCBvciBpZiBhIHBhcmFtZXRlciB3YXMgaW52YWxpZCwgb3IgWl9CVUZfRVJST1IgaWYKKyAgIHRoZXJlIHdhcyBub3QgZW5vdWdoIG91dHB1dCBzcGFjZSB0byBjb21wbGV0ZSB0aGUgY29tcHJlc3Npb24gb2YgdGhlCisgICBhdmFpbGFibGUgaW5wdXQgZGF0YSBiZWZvcmUgYSBjaGFuZ2UgaW4gdGhlIHN0cmF0ZWd5IG9yIGFwcHJvYWNoLiAgTm90ZSB0aGF0CisgICBpbiB0aGUgY2FzZSBvZiBhIFpfQlVGX0VSUk9SLCB0aGUgcGFyYW1ldGVycyBhcmUgbm90IGNoYW5nZWQuICBBIHJldHVybgorICAgdmFsdWUgb2YgWl9CVUZfRVJST1IgaXMgbm90IGZhdGFsLCBpbiB3aGljaCBjYXNlIGRlZmxhdGVQYXJhbXMoKSBjYW4gYmUKKyAgIHJldHJpZWQgd2l0aCBtb3JlIG91dHB1dCBzcGFjZS4KICovCiAKIFpFWFRFUk4gaW50IFpFWFBPUlQgZGVmbGF0ZVR1bmUgT0YoKHpfc3RyZWFtcCBzdHJtLApAQCAtNzkzLDcgKzg1NSw3IEBACiAgICBpcyBmb3IgdXNlIHdpdGggb3RoZXIgZm9ybWF0cyB0aGF0IHVzZSB0aGUgZGVmbGF0ZSBjb21wcmVzc2VkIGRhdGEgZm9ybWF0CiAgICBzdWNoIGFzIHppcC4gIFRob3NlIGZvcm1hdHMgcHJvdmlkZSB0aGVpciBvd24gY2hlY2sgdmFsdWVzLiAgSWYgYSBjdXN0b20KICAgIGZvcm1hdCBpcyBkZXZlbG9wZWQgdXNpbmcgdGhlIHJhdyBkZWZsYXRlIGZvcm1hdCBmb3IgY29tcHJlc3NlZCBkYXRhLCBpdCBpcwotICAgcmVjb21tZW5kZWQgdGhhdCBhIGNoZWNrIHZhbHVlIHN1Y2ggYXMgYW4gYWRsZXIzMiBvciBhIGNyYzMyIGJlIGFwcGxpZWQgdG8KKyAgIHJlY29tbWVuZGVkIHRoYXQgYSBjaGVjayB2YWx1ZSBzdWNoIGFzIGFuIEFkbGVyLTMyIG9yIGEgQ1JDLTMyIGJlIGFwcGxpZWQgdG8KICAgIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBhcyBpcyBkb25lIGluIHRoZSB6bGliLCBnemlwLCBhbmQgemlwIGZvcm1hdHMuICBGb3IKICAgIG1vc3QgYXBwbGljYXRpb25zLCB0aGUgemxpYiBmb3JtYXQgc2hvdWxkIGJlIHVzZWQgYXMgaXMuICBOb3RlIHRoYXQgY29tbWVudHMKICAgIGFib3ZlIG9uIHRoZSB1c2UgaW4gZGVmbGF0ZUluaXQyKCkgYXBwbGllcyB0byB0aGUgbWFnbml0dWRlIG9mIHdpbmRvd0JpdHMuCkBAIC04MDIsNyArODY0LDEwIEBACiAgICAzMiB0byB3aW5kb3dCaXRzIHRvIGVuYWJsZSB6bGliIGFuZCBnemlwIGRlY29kaW5nIHdpdGggYXV0b21hdGljIGhlYWRlcgogICAgZGV0ZWN0aW9uLCBvciBhZGQgMTYgdG8gZGVjb2RlIG9ubHkgdGhlIGd6aXAgZm9ybWF0ICh0aGUgemxpYiBmb3JtYXQgd2lsbAogICAgcmV0dXJuIGEgWl9EQVRBX0VSUk9SKS4gIElmIGEgZ3ppcCBzdHJlYW0gaXMgYmVpbmcgZGVjb2RlZCwgc3RybS0+YWRsZXIgaXMgYQotICAgY3JjMzIgaW5zdGVhZCBvZiBhbiBhZGxlcjMyLgorICAgQ1JDLTMyIGluc3RlYWQgb2YgYW4gQWRsZXItMzIuICBVbmxpa2UgdGhlIGd1bnppcCB1dGlsaXR5IGFuZCBnenJlYWQoKSAoc2VlCisgICBiZWxvdyksIGluZmxhdGUoKSB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGRlY29kZSBjb25jYXRlbmF0ZWQgZ3ppcCBzdHJlYW1zLgorICAgaW5mbGF0ZSgpIHdpbGwgcmV0dXJuIFpfU1RSRUFNX0VORCBhdCB0aGUgZW5kIG9mIHRoZSBnemlwIHN0cmVhbS4gIFRoZSBzdGF0ZQorICAgd291bGQgbmVlZCB0byBiZSByZXNldCB0byBjb250aW51ZSBkZWNvZGluZyBhIHN1YnNlcXVlbnQgZ3ppcCBzdHJlYW0uCiAKICAgICAgaW5mbGF0ZUluaXQyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAogICAgbWVtb3J5LCBaX1ZFUlNJT05fRVJST1IgaWYgdGhlIHpsaWIgbGlicmFyeSB2ZXJzaW9uIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZQpAQCAtODIzLDcgKzg4OCw3IEBACiAgICAgIEluaXRpYWxpemVzIHRoZSBkZWNvbXByZXNzaW9uIGRpY3Rpb25hcnkgZnJvbSB0aGUgZ2l2ZW4gdW5jb21wcmVzc2VkIGJ5dGUKICAgIHNlcXVlbmNlLiAgVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbW1lZGlhdGVseSBhZnRlciBhIGNhbGwgb2YgaW5mbGF0ZSwKICAgIGlmIHRoYXQgY2FsbCByZXR1cm5lZCBaX05FRURfRElDVC4gIFRoZSBkaWN0aW9uYXJ5IGNob3NlbiBieSB0aGUgY29tcHJlc3NvcgotICAgY2FuIGJlIGRldGVybWluZWQgZnJvbSB0aGUgYWRsZXIzMiB2YWx1ZSByZXR1cm5lZCBieSB0aGF0IGNhbGwgb2YgaW5mbGF0ZS4KKyAgIGNhbiBiZSBkZXRlcm1pbmVkIGZyb20gdGhlIEFkbGVyLTMyIHZhbHVlIHJldHVybmVkIGJ5IHRoYXQgY2FsbCBvZiBpbmZsYXRlLgogICAgVGhlIGNvbXByZXNzb3IgYW5kIGRlY29tcHJlc3NvciBtdXN0IHVzZSBleGFjdGx5IHRoZSBzYW1lIGRpY3Rpb25hcnkgKHNlZQogICAgZGVmbGF0ZVNldERpY3Rpb25hcnkpLiAgRm9yIHJhdyBpbmZsYXRlLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSBjYWxsZWQgYXQgYW55CiAgICB0aW1lIHRvIHNldCB0aGUgZGljdGlvbmFyeS4gIElmIHRoZSBwcm92aWRlZCBkaWN0aW9uYXJ5IGlzIHNtYWxsZXIgdGhhbiB0aGUKQEAgLTgzNCw3ICs4OTksNyBAQAogICAgICBpbmZsYXRlU2V0RGljdGlvbmFyeSByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9TVFJFQU1fRVJST1IgaWYgYQogICAgcGFyYW1ldGVyIGlzIGludmFsaWQgKGUuZy4gIGRpY3Rpb25hcnkgYmVpbmcgWl9OVUxMKSBvciB0aGUgc3RyZWFtIHN0YXRlIGlzCiAgICBpbmNvbnNpc3RlbnQsIFpfREFUQV9FUlJPUiBpZiB0aGUgZ2l2ZW4gZGljdGlvbmFyeSBkb2Vzbid0IG1hdGNoIHRoZQotICAgZXhwZWN0ZWQgb25lIChpbmNvcnJlY3QgYWRsZXIzMiB2YWx1ZSkuICBpbmZsYXRlU2V0RGljdGlvbmFyeSBkb2VzIG5vdAorICAgZXhwZWN0ZWQgb25lIChpbmNvcnJlY3QgQWRsZXItMzIgdmFsdWUpLiAgaW5mbGF0ZVNldERpY3Rpb25hcnkgZG9lcyBub3QKICAgIHBlcmZvcm0gYW55IGRlY29tcHJlc3Npb246IHRoaXMgd2lsbCBiZSBkb25lIGJ5IHN1YnNlcXVlbnQgY2FsbHMgb2YKICAgIGluZmxhdGUoKS4KICovCkBAIC04OTIsNyArOTU3LDcgQEAKIFpFWFRFUk4gaW50IFpFWFBPUlQgaW5mbGF0ZVJlc2V0IE9GKCh6X3N0cmVhbXAgc3RybSkpOwogLyoKICAgICAgVGhpcyBmdW5jdGlvbiBpcyBlcXVpdmFsZW50IHRvIGluZmxhdGVFbmQgZm9sbG93ZWQgYnkgaW5mbGF0ZUluaXQsCi0gICBidXQgZG9lcyBub3QgZnJlZSBhbmQgcmVhbGxvY2F0ZSBhbGwgdGhlIGludGVybmFsIGRlY29tcHJlc3Npb24gc3RhdGUuICBUaGUKKyAgIGJ1dCBkb2VzIG5vdCBmcmVlIGFuZCByZWFsbG9jYXRlIHRoZSBpbnRlcm5hbCBkZWNvbXByZXNzaW9uIHN0YXRlLiAgVGhlCiAgICBzdHJlYW0gd2lsbCBrZWVwIGF0dHJpYnV0ZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIHNldCBieSBpbmZsYXRlSW5pdDIuCiAKICAgICAgaW5mbGF0ZVJlc2V0IHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBvciBaX1NUUkVBTV9FUlJPUiBpZiB0aGUgc291cmNlCkBAIC05MDQsNyArOTY5LDkgQEAKIC8qCiAgICAgIFRoaXMgZnVuY3Rpb24gaXMgdGhlIHNhbWUgYXMgaW5mbGF0ZVJlc2V0LCBidXQgaXQgYWxzbyBwZXJtaXRzIGNoYW5naW5nCiAgICB0aGUgd3JhcCBhbmQgd2luZG93IHNpemUgcmVxdWVzdHMuICBUaGUgd2luZG93Qml0cyBwYXJhbWV0ZXIgaXMgaW50ZXJwcmV0ZWQKLSAgIHRoZSBzYW1lIGFzIGl0IGlzIGZvciBpbmZsYXRlSW5pdDIuCisgICB0aGUgc2FtZSBhcyBpdCBpcyBmb3IgaW5mbGF0ZUluaXQyLiAgSWYgdGhlIHdpbmRvdyBzaXplIGlzIGNoYW5nZWQsIHRoZW4gdGhlCisgICBtZW1vcnkgYWxsb2NhdGVkIGZvciB0aGUgd2luZG93IGlzIGZyZWVkLCBhbmQgdGhlIHdpbmRvdyB3aWxsIGJlIHJlYWxsb2NhdGVkCisgICBieSBpbmZsYXRlKCkgaWYgbmVlZGVkLgogCiAgICAgIGluZmxhdGVSZXNldDIgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIG9yIFpfU1RSRUFNX0VSUk9SIGlmIHRoZSBzb3VyY2UKICAgIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50IChzdWNoIGFzIHphbGxvYyBvciBzdGF0ZSBiZWluZyBaX05VTEwpLCBvciBpZgpAQCAtOTU2LDcgKzEwMjMsNyBAQAogICAgbG9jYXRpb24gaW4gdGhlIGlucHV0IHN0cmVhbSBjYW4gYmUgZGV0ZXJtaW5lZCBmcm9tIGF2YWlsX2luIGFuZCBkYXRhX3R5cGUKICAgIGFzIG5vdGVkIGluIHRoZSBkZXNjcmlwdGlvbiBmb3IgdGhlIFpfQkxPQ0sgZmx1c2ggcGFyYW1ldGVyIGZvciBpbmZsYXRlLgogCi0gICAgIGluZmxhdGVNYXJrIHJldHVybnMgdGhlIHZhbHVlIG5vdGVkIGFib3ZlIG9yIC0xIDw8IDE2IGlmIHRoZSBwcm92aWRlZAorICAgICBpbmZsYXRlTWFyayByZXR1cm5zIHRoZSB2YWx1ZSBub3RlZCBhYm92ZSwgb3IgLTY1NTM2IGlmIHRoZSBwcm92aWRlZAogICAgc291cmNlIHN0cmVhbSBzdGF0ZSB3YXMgaW5jb25zaXN0ZW50LgogKi8KIApAQCAtMTA0OCw5ICsxMTE1LDkgQEAKICAgIFRoaXMgcm91dGluZSB3b3VsZCBub3JtYWxseSBiZSB1c2VkIGluIGEgdXRpbGl0eSB0aGF0IHJlYWRzIHppcCBvciBnemlwCiAgICBmaWxlcyBhbmQgd3JpdGVzIG91dCB1bmNvbXByZXNzZWQgZmlsZXMuICBUaGUgdXRpbGl0eSB3b3VsZCBkZWNvZGUgdGhlCiAgICBoZWFkZXIgYW5kIHByb2Nlc3MgdGhlIHRyYWlsZXIgb24gaXRzIG93biwgaGVuY2UgdGhpcyByb3V0aW5lIGV4cGVjdHMgb25seQotICAgdGhlIHJhdyBkZWZsYXRlIHN0cmVhbSB0byBkZWNvbXByZXNzLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgbm9ybWFsCi0gICBiZWhhdmlvciBvZiBpbmZsYXRlKCksIHdoaWNoIGV4cGVjdHMgZWl0aGVyIGEgemxpYiBvciBnemlwIGhlYWRlciBhbmQKLSAgIHRyYWlsZXIgYXJvdW5kIHRoZSBkZWZsYXRlIHN0cmVhbS4KKyAgIHRoZSByYXcgZGVmbGF0ZSBzdHJlYW0gdG8gZGVjb21wcmVzcy4gIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhlIGRlZmF1bHQKKyAgIGJlaGF2aW9yIG9mIGluZmxhdGUoKSwgd2hpY2ggZXhwZWN0cyBhIHpsaWIgaGVhZGVyIGFuZCB0cmFpbGVyIGFyb3VuZCB0aGUKKyAgIGRlZmxhdGUgc3RyZWFtLgogCiAgICAgIGluZmxhdGVCYWNrKCkgdXNlcyB0d28gc3Vicm91dGluZXMgc3VwcGxpZWQgYnkgdGhlIGNhbGxlciB0aGF0IGFyZSB0aGVuCiAgICBjYWxsZWQgYnkgaW5mbGF0ZUJhY2soKSBmb3IgaW5wdXQgYW5kIG91dHB1dC4gIGluZmxhdGVCYWNrKCkgY2FsbHMgdGhvc2UKQEAgLTEwNTksMTIgKzExMjYsMTIgQEAKICAgIHBhcmFtZXRlcnMgYW5kIHJldHVybiB0eXBlcyBhcmUgZGVmaW5lZCBhYm92ZSBpbiB0aGUgaW5fZnVuYyBhbmQgb3V0X2Z1bmMKICAgIHR5cGVkZWZzLiAgaW5mbGF0ZUJhY2soKSB3aWxsIGNhbGwgaW4oaW5fZGVzYywgJmJ1Zikgd2hpY2ggc2hvdWxkIHJldHVybiB0aGUKICAgIG51bWJlciBvZiBieXRlcyBvZiBwcm92aWRlZCBpbnB1dCwgYW5kIGEgcG9pbnRlciB0byB0aGF0IGlucHV0IGluIGJ1Zi4gIElmCi0gICB0aGVyZSBpcyBubyBpbnB1dCBhdmFpbGFibGUsIGluKCkgbXVzdCByZXR1cm4gemVyby0tYnVmIGlzIGlnbm9yZWQgaW4gdGhhdAotICAgY2FzZS0tYW5kIGluZmxhdGVCYWNrKCkgd2lsbCByZXR1cm4gYSBidWZmZXIgZXJyb3IuICBpbmZsYXRlQmFjaygpIHdpbGwgY2FsbAotICAgb3V0KG91dF9kZXNjLCBidWYsIGxlbikgdG8gd3JpdGUgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGJ1ZlswLi5sZW4tMV0uICBvdXQoKQotICAgc2hvdWxkIHJldHVybiB6ZXJvIG9uIHN1Y2Nlc3MsIG9yIG5vbi16ZXJvIG9uIGZhaWx1cmUuICBJZiBvdXQoKSByZXR1cm5zCi0gICBub24temVybywgaW5mbGF0ZUJhY2soKSB3aWxsIHJldHVybiB3aXRoIGFuIGVycm9yLiAgTmVpdGhlciBpbigpIG5vciBvdXQoKQotICAgYXJlIHBlcm1pdHRlZCB0byBjaGFuZ2UgdGhlIGNvbnRlbnRzIG9mIHRoZSB3aW5kb3cgcHJvdmlkZWQgdG8KKyAgIHRoZXJlIGlzIG5vIGlucHV0IGF2YWlsYWJsZSwgaW4oKSBtdXN0IHJldHVybiB6ZXJvIC0tIGJ1ZiBpcyBpZ25vcmVkIGluIHRoYXQKKyAgIGNhc2UgLS0gYW5kIGluZmxhdGVCYWNrKCkgd2lsbCByZXR1cm4gYSBidWZmZXIgZXJyb3IuICBpbmZsYXRlQmFjaygpIHdpbGwKKyAgIGNhbGwgb3V0KG91dF9kZXNjLCBidWYsIGxlbikgdG8gd3JpdGUgdGhlIHVuY29tcHJlc3NlZCBkYXRhIGJ1ZlswLi5sZW4tMV0uCisgICBvdXQoKSBzaG91bGQgcmV0dXJuIHplcm8gb24gc3VjY2Vzcywgb3Igbm9uLXplcm8gb24gZmFpbHVyZS4gIElmIG91dCgpCisgICByZXR1cm5zIG5vbi16ZXJvLCBpbmZsYXRlQmFjaygpIHdpbGwgcmV0dXJuIHdpdGggYW4gZXJyb3IuICBOZWl0aGVyIGluKCkgbm9yCisgICBvdXQoKSBhcmUgcGVybWl0dGVkIHRvIGNoYW5nZSB0aGUgY29udGVudHMgb2YgdGhlIHdpbmRvdyBwcm92aWRlZCB0bwogICAgaW5mbGF0ZUJhY2tJbml0KCksIHdoaWNoIGlzIGFsc28gdGhlIGJ1ZmZlciB0aGF0IG91dCgpIHVzZXMgdG8gd3JpdGUgZnJvbS4KICAgIFRoZSBsZW5ndGggd3JpdHRlbiBieSBvdXQoKSB3aWxsIGJlIGF0IG1vc3QgdGhlIHdpbmRvdyBzaXplLiAgQW55IG5vbi16ZXJvCiAgICBhbW91bnQgb2YgaW5wdXQgbWF5IGJlIHByb3ZpZGVkIGJ5IGluKCkuCkBAIC0xMDkyLDcgKzExNTksNyBAQAogICAgdXNpbmcgc3RybS0+bmV4dF9pbiB3aGljaCB3aWxsIGJlIFpfTlVMTCBvbmx5IGlmIGluKCkgcmV0dXJuZWQgYW4gZXJyb3IuICBJZgogICAgc3RybS0+bmV4dF9pbiBpcyBub3QgWl9OVUxMLCB0aGVuIHRoZSBaX0JVRl9FUlJPUiB3YXMgZHVlIHRvIG91dCgpIHJldHVybmluZwogICAgbm9uLXplcm8uICAoaW4oKSB3aWxsIGFsd2F5cyBiZSBjYWxsZWQgYmVmb3JlIG91dCgpLCBzbyBzdHJtLT5uZXh0X2luIGlzCi0gICBhc3N1cmVkIHRvIGJlIGRlZmluZWQgaWYgb3V0KCkgcmV0dXJucyBub24temVyby4pIE5vdGUgdGhhdCBpbmZsYXRlQmFjaygpCisgICBhc3N1cmVkIHRvIGJlIGRlZmluZWQgaWYgb3V0KCkgcmV0dXJucyBub24temVyby4pICBOb3RlIHRoYXQgaW5mbGF0ZUJhY2soKQogICAgY2Fubm90IHJldHVybiBaX09LLgogKi8KIApAQCAtMTExNCw3ICsxMTgxLDcgQEAKICAgICAgNy42OiBzaXplIG9mIHpfb2ZmX3QKIAogICAgIENvbXBpbGVyLCBhc3NlbWJsZXIsIGFuZCBkZWJ1ZyBvcHRpb25zOgotICAgICA4OiBERUJVRworICAgICA4OiBaTElCX0RFQlVHCiAgICAgIDk6IEFTTVYgb3IgQVNNSU5GIC0tIHVzZSBBU00gY29kZQogICAgICAxMDogWkxJQl9XSU5BUEkgLS0gZXhwb3J0ZWQgZnVuY3Rpb25zIHVzZSB0aGUgV0lOQVBJIGNhbGxpbmcgY29udmVudGlvbgogICAgICAxMTogMCAocmVzZXJ2ZWQpCkBAIC0xMTY0LDcgKzEyMzEsOCBAQAogICAgdGhlIGJ5dGUgbGVuZ3RoIG9mIHRoZSBzb3VyY2UgYnVmZmVyLiAgVXBvbiBlbnRyeSwgZGVzdExlbiBpcyB0aGUgdG90YWwgc2l6ZQogICAgb2YgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciwgd2hpY2ggbXVzdCBiZSBhdCBsZWFzdCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkKICAgIGNvbXByZXNzQm91bmQoc291cmNlTGVuKS4gIFVwb24gZXhpdCwgZGVzdExlbiBpcyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlCi0gICBjb21wcmVzc2VkIGJ1ZmZlci4KKyAgIGNvbXByZXNzZWQgZGF0YS4gIGNvbXByZXNzKCkgaXMgZXF1aXZhbGVudCB0byBjb21wcmVzczIoKSB3aXRoIGEgbGV2ZWwKKyAgIHBhcmFtZXRlciBvZiBaX0RFRkFVTFRfQ09NUFJFU1NJT04uCiAKICAgICAgY29tcHJlc3MgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QKICAgIGVub3VnaCBtZW1vcnksIFpfQlVGX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dApAQCAtMTE4MCw3ICsxMjQ4LDcgQEAKICAgIGxlbmd0aCBvZiB0aGUgc291cmNlIGJ1ZmZlci4gIFVwb24gZW50cnksIGRlc3RMZW4gaXMgdGhlIHRvdGFsIHNpemUgb2YgdGhlCiAgICBkZXN0aW5hdGlvbiBidWZmZXIsIHdoaWNoIG11c3QgYmUgYXQgbGVhc3QgdGhlIHZhbHVlIHJldHVybmVkIGJ5CiAgICBjb21wcmVzc0JvdW5kKHNvdXJjZUxlbikuICBVcG9uIGV4aXQsIGRlc3RMZW4gaXMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZQotICAgY29tcHJlc3NlZCBidWZmZXIuCisgICBjb21wcmVzc2VkIGRhdGEuCiAKICAgICAgY29tcHJlc3MyIHJldHVybnMgWl9PSyBpZiBzdWNjZXNzLCBaX01FTV9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaAogICAgbWVtb3J5LCBaX0JVRl9FUlJPUiBpZiB0aGVyZSB3YXMgbm90IGVub3VnaCByb29tIGluIHRoZSBvdXRwdXQgYnVmZmVyLApAQCAtMTIwMyw3ICsxMjcxLDcgQEAKICAgIHVuY29tcHJlc3NlZCBkYXRhLiAgKFRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgZGF0YSBtdXN0IGhhdmUgYmVlbiBzYXZlZAogICAgcHJldmlvdXNseSBieSB0aGUgY29tcHJlc3NvciBhbmQgdHJhbnNtaXR0ZWQgdG8gdGhlIGRlY29tcHJlc3NvciBieSBzb21lCiAgICBtZWNoYW5pc20gb3V0c2lkZSB0aGUgc2NvcGUgb2YgdGhpcyBjb21wcmVzc2lvbiBsaWJyYXJ5LikgVXBvbiBleGl0LCBkZXN0TGVuCi0gICBpcyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIHVuY29tcHJlc3NlZCBidWZmZXIuCisgICBpcyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIHVuY29tcHJlc3NlZCBkYXRhLgogCiAgICAgIHVuY29tcHJlc3MgcmV0dXJucyBaX09LIGlmIHN1Y2Nlc3MsIFpfTUVNX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QKICAgIGVub3VnaCBtZW1vcnksIFpfQlVGX0VSUk9SIGlmIHRoZXJlIHdhcyBub3QgZW5vdWdoIHJvb20gaW4gdGhlIG91dHB1dApAQCAtMTIxMiw2ICsxMjgwLDE0IEBACiAgICBidWZmZXIgd2l0aCB0aGUgdW5jb21wcmVzc2VkIGRhdGEgdXAgdG8gdGhhdCBwb2ludC4KICovCiAKK1pFWFRFUk4gaW50IFpFWFBPUlQgdW5jb21wcmVzczIgT0YoKEJ5dGVmICpkZXN0LCAgIHVMb25nZiAqZGVzdExlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJ5dGVmICpzb3VyY2UsIHVMb25nICpzb3VyY2VMZW4pKTsKKy8qCisgICAgIFNhbWUgYXMgdW5jb21wcmVzcywgZXhjZXB0IHRoYXQgc291cmNlTGVuIGlzIGEgcG9pbnRlciwgd2hlcmUgdGhlCisgICBsZW5ndGggb2YgdGhlIHNvdXJjZSBpcyAqc291cmNlTGVuLiAgT24gcmV0dXJuLCAqc291cmNlTGVuIGlzIHRoZSBudW1iZXIgb2YKKyAgIHNvdXJjZSBieXRlcyBjb25zdW1lZC4KKyovCisKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGd6aXAgZmlsZSBhY2Nlc3MgZnVuY3Rpb25zICovCiAKIC8qCkBAIC0xMjkwLDEwICsxMzY2LDkgQEAKICAgIGRlZmF1bHQgYnVmZmVyIHNpemUgaXMgODE5MiBieXRlcy4gIFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYWZ0ZXIKICAgIGd6b3BlbigpIG9yIGd6ZG9wZW4oKSwgYW5kIGJlZm9yZSBhbnkgb3RoZXIgY2FsbHMgdGhhdCByZWFkIG9yIHdyaXRlIHRoZQogICAgZmlsZS4gIFRoZSBidWZmZXIgbWVtb3J5IGFsbG9jYXRpb24gaXMgYWx3YXlzIGRlZmVycmVkIHRvIHRoZSBmaXJzdCByZWFkIG9yCi0gICB3cml0ZS4gIFR3byBidWZmZXJzIGFyZSBhbGxvY2F0ZWQsIGVpdGhlciBib3RoIG9mIHRoZSBzcGVjaWZpZWQgc2l6ZSB3aGVuCi0gICB3cml0aW5nLCBvciBvbmUgb2YgdGhlIHNwZWNpZmllZCBzaXplIGFuZCB0aGUgb3RoZXIgdHdpY2UgdGhhdCBzaXplIHdoZW4KLSAgIHJlYWRpbmcuICBBIGxhcmdlciBidWZmZXIgc2l6ZSBvZiwgZm9yIGV4YW1wbGUsIDY0SyBvciAxMjhLIGJ5dGVzIHdpbGwKLSAgIG5vdGljZWFibHkgaW5jcmVhc2UgdGhlIHNwZWVkIG9mIGRlY29tcHJlc3Npb24gKHJlYWRpbmcpLgorICAgd3JpdGUuICBUaHJlZSB0aW1lcyB0aGF0IHNpemUgaW4gYnVmZmVyIHNwYWNlIGlzIGFsbG9jYXRlZC4gIEEgbGFyZ2VyIGJ1ZmZlcgorICAgc2l6ZSBvZiwgZm9yIGV4YW1wbGUsIDY0SyBvciAxMjhLIGJ5dGVzIHdpbGwgbm90aWNlYWJseSBpbmNyZWFzZSB0aGUgc3BlZWQKKyAgIG9mIGRlY29tcHJlc3Npb24gKHJlYWRpbmcpLgogCiAgICAgIFRoZSBuZXcgYnVmZmVyIHNpemUgYWxzbyBhZmZlY3RzIHRoZSBtYXhpbXVtIGxlbmd0aCBmb3IgZ3pwcmludGYoKS4KIApAQCAtMTMwNCwxMCArMTM3OSwxMiBAQAogWkVYVEVSTiBpbnQgWkVYUE9SVCBnenNldHBhcmFtcyBPRigoZ3pGaWxlIGZpbGUsIGludCBsZXZlbCwgaW50IHN0cmF0ZWd5KSk7CiAvKgogICAgICBEeW5hbWljYWxseSB1cGRhdGUgdGhlIGNvbXByZXNzaW9uIGxldmVsIG9yIHN0cmF0ZWd5LiAgU2VlIHRoZSBkZXNjcmlwdGlvbgotICAgb2YgZGVmbGF0ZUluaXQyIGZvciB0aGUgbWVhbmluZyBvZiB0aGVzZSBwYXJhbWV0ZXJzLgorICAgb2YgZGVmbGF0ZUluaXQyIGZvciB0aGUgbWVhbmluZyBvZiB0aGVzZSBwYXJhbWV0ZXJzLiAgUHJldmlvdXNseSBwcm92aWRlZAorICAgZGF0YSBpcyBmbHVzaGVkIGJlZm9yZSB0aGUgcGFyYW1ldGVyIGNoYW5nZS4KIAotICAgICBnenNldHBhcmFtcyByZXR1cm5zIFpfT0sgaWYgc3VjY2Vzcywgb3IgWl9TVFJFQU1fRVJST1IgaWYgdGhlIGZpbGUgd2FzIG5vdAotICAgb3BlbmVkIGZvciB3cml0aW5nLgorICAgICBnenNldHBhcmFtcyByZXR1cm5zIFpfT0sgaWYgc3VjY2VzcywgWl9TVFJFQU1fRVJST1IgaWYgdGhlIGZpbGUgd2FzIG5vdAorICAgb3BlbmVkIGZvciB3cml0aW5nLCBaX0VSUk5PIGlmIHRoZXJlIGlzIGFuIGVycm9yIHdyaXRpbmcgdGhlIGZsdXNoZWQgZGF0YSwKKyAgIG9yIFpfTUVNX0VSUk9SIGlmIHRoZXJlIGlzIGEgbWVtb3J5IGFsbG9jYXRpb24gZXJyb3IuCiAqLwogCiBaRVhURVJOIGludCBaRVhQT1JUIGd6cmVhZCBPRigoZ3pGaWxlIGZpbGUsIHZvaWRwIGJ1ZiwgdW5zaWduZWQgbGVuKSk7CkBAIC0xMzM1LDcgKzE0MTIsMzUgQEAKICAgIGNhc2UuCiAKICAgICAgZ3pyZWFkIHJldHVybnMgdGhlIG51bWJlciBvZiB1bmNvbXByZXNzZWQgYnl0ZXMgYWN0dWFsbHkgcmVhZCwgbGVzcyB0aGFuCi0gICBsZW4gZm9yIGVuZCBvZiBmaWxlLCBvciAtMSBmb3IgZXJyb3IuCisgICBsZW4gZm9yIGVuZCBvZiBmaWxlLCBvciAtMSBmb3IgZXJyb3IuICBJZiBsZW4gaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiBhbiBpbnQsCisgICB0aGVuIG5vdGhpbmcgaXMgcmVhZCwgLTEgaXMgcmV0dXJuZWQsIGFuZCB0aGUgZXJyb3Igc3RhdGUgaXMgc2V0IHRvCisgICBaX1NUUkVBTV9FUlJPUi4KKyovCisKK1pFWFRFUk4gel9zaXplX3QgWkVYUE9SVCBnemZyZWFkIE9GKCh2b2lkcCBidWYsIHpfc2l6ZV90IHNpemUsIHpfc2l6ZV90IG5pdGVtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnekZpbGUgZmlsZSkpOworLyoKKyAgICAgUmVhZCB1cCB0byBuaXRlbXMgaXRlbXMgb2Ygc2l6ZSBzaXplIGZyb20gZmlsZSB0byBidWYsIG90aGVyd2lzZSBvcGVyYXRpbmcKKyAgIGFzIGd6cmVhZCgpIGRvZXMuICBUaGlzIGR1cGxpY2F0ZXMgdGhlIGludGVyZmFjZSBvZiBzdGRpbydzIGZyZWFkKCksIHdpdGgKKyAgIHNpemVfdCByZXF1ZXN0IGFuZCByZXR1cm4gdHlwZXMuICBJZiB0aGUgbGlicmFyeSBkZWZpbmVzIHNpemVfdCwgdGhlbgorICAgel9zaXplX3QgaXMgaWRlbnRpY2FsIHRvIHNpemVfdC4gIElmIG5vdCwgdGhlbiB6X3NpemVfdCBpcyBhbiB1bnNpZ25lZAorICAgaW50ZWdlciB0eXBlIHRoYXQgY2FuIGNvbnRhaW4gYSBwb2ludGVyLgorCisgICAgIGd6ZnJlYWQoKSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZnVsbCBpdGVtcyByZWFkIG9mIHNpemUgc2l6ZSwgb3IgemVybyBpZgorICAgdGhlIGVuZCBvZiB0aGUgZmlsZSB3YXMgcmVhY2hlZCBhbmQgYSBmdWxsIGl0ZW0gY291bGQgbm90IGJlIHJlYWQsIG9yIGlmCisgICB0aGVyZSB3YXMgYW4gZXJyb3IuICBnemVycm9yKCkgbXVzdCBiZSBjb25zdWx0ZWQgaWYgemVybyBpcyByZXR1cm5lZCBpbgorICAgb3JkZXIgdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIHdhcyBhbiBlcnJvci4gIElmIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiBzaXplIGFuZAorICAgbml0ZW1zIG92ZXJmbG93cywgaS5lLiB0aGUgcHJvZHVjdCBkb2VzIG5vdCBmaXQgaW4gYSB6X3NpemVfdCwgdGhlbiBub3RoaW5nCisgICBpcyByZWFkLCB6ZXJvIGlzIHJldHVybmVkLCBhbmQgdGhlIGVycm9yIHN0YXRlIGlzIHNldCB0byBaX1NUUkVBTV9FUlJPUi4KKworICAgICBJbiB0aGUgZXZlbnQgdGhhdCB0aGUgZW5kIG9mIGZpbGUgaXMgcmVhY2hlZCBhbmQgb25seSBhIHBhcnRpYWwgaXRlbSBpcworICAgYXZhaWxhYmxlIGF0IHRoZSBlbmQsIGkuZS4gdGhlIHJlbWFpbmluZyB1bmNvbXByZXNzZWQgZGF0YSBsZW5ndGggaXMgbm90IGEKKyAgIG11bHRpcGxlIG9mIHNpemUsIHRoZW4gdGhlIGZpbmFsIHBhcnRpYWwgaXRlbSBpcyBuZXZldGhlbGVzcyByZWFkIGludG8gYnVmCisgICBhbmQgdGhlIGVuZC1vZi1maWxlIGZsYWcgaXMgc2V0LiAgVGhlIGxlbmd0aCBvZiB0aGUgcGFydGlhbCBpdGVtIHJlYWQgaXMgbm90CisgICBwcm92aWRlZCwgYnV0IGNvdWxkIGJlIGluZmVycmVkIGZyb20gdGhlIHJlc3VsdCBvZiBnenRlbGwoKS4gIFRoaXMgYmVoYXZpb3IKKyAgIGlzIHRoZSBzYW1lIGFzIHRoZSBiZWhhdmlvciBvZiBmcmVhZCgpIGltcGxlbWVudGF0aW9ucyBpbiBjb21tb24gbGlicmFyaWVzLAorICAgYnV0IGl0IHByZXZlbnRzIHRoZSBkaXJlY3QgdXNlIG9mIGd6ZnJlYWQoKSB0byByZWFkIGEgY29uY3VycmVudGx5IHdyaXR0ZW4KKyAgIGZpbGUsIHJlc2V0aW5nIGFuZCByZXRyeWluZyBvbiBlbmQtb2YtZmlsZSwgd2hlbiBzaXplIGlzIG5vdCAxLgogKi8KIAogWkVYVEVSTiBpbnQgWkVYUE9SVCBnendyaXRlIE9GKChnekZpbGUgZmlsZSwKQEAgLTEzNDYsMTkgKzE0NTEsMzMgQEAKICAgIGVycm9yLgogKi8KIAorWkVYVEVSTiB6X3NpemVfdCBaRVhQT1JUIGd6ZndyaXRlIE9GKCh2b2lkcGMgYnVmLCB6X3NpemVfdCBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6X3NpemVfdCBuaXRlbXMsIGd6RmlsZSBmaWxlKSk7CisvKgorICAgICBnemZ3cml0ZSgpIHdyaXRlcyBuaXRlbXMgaXRlbXMgb2Ygc2l6ZSBzaXplIGZyb20gYnVmIHRvIGZpbGUsIGR1cGxpY2F0aW5nCisgICB0aGUgaW50ZXJmYWNlIG9mIHN0ZGlvJ3MgZndyaXRlKCksIHdpdGggc2l6ZV90IHJlcXVlc3QgYW5kIHJldHVybiB0eXBlcy4gIElmCisgICB0aGUgbGlicmFyeSBkZWZpbmVzIHNpemVfdCwgdGhlbiB6X3NpemVfdCBpcyBpZGVudGljYWwgdG8gc2l6ZV90LiAgSWYgbm90LAorICAgdGhlbiB6X3NpemVfdCBpcyBhbiB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgdGhhdCBjYW4gY29udGFpbiBhIHBvaW50ZXIuCisKKyAgICAgZ3pmd3JpdGUoKSByZXR1cm5zIHRoZSBudW1iZXIgb2YgZnVsbCBpdGVtcyB3cml0dGVuIG9mIHNpemUgc2l6ZSwgb3IgemVybworICAgaWYgdGhlcmUgd2FzIGFuIGVycm9yLiAgSWYgdGhlIG11bHRpcGxpY2F0aW9uIG9mIHNpemUgYW5kIG5pdGVtcyBvdmVyZmxvd3MsCisgICBpLmUuIHRoZSBwcm9kdWN0IGRvZXMgbm90IGZpdCBpbiBhIHpfc2l6ZV90LCB0aGVuIG5vdGhpbmcgaXMgd3JpdHRlbiwgemVybworICAgaXMgcmV0dXJuZWQsIGFuZCB0aGUgZXJyb3Igc3RhdGUgaXMgc2V0IHRvIFpfU1RSRUFNX0VSUk9SLgorKi8KKwogWkVYVEVSTiBpbnQgWkVYUE9SVFZBIGd6cHJpbnRmIFpfQVJHKChnekZpbGUgZmlsZSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pKTsKIC8qCiAgICAgIENvbnZlcnRzLCBmb3JtYXRzLCBhbmQgd3JpdGVzIHRoZSBhcmd1bWVudHMgdG8gdGhlIGNvbXByZXNzZWQgZmlsZSB1bmRlcgogICAgY29udHJvbCBvZiB0aGUgZm9ybWF0IHN0cmluZywgYXMgaW4gZnByaW50Zi4gIGd6cHJpbnRmIHJldHVybnMgdGhlIG51bWJlciBvZgotICAgdW5jb21wcmVzc2VkIGJ5dGVzIGFjdHVhbGx5IHdyaXR0ZW4sIG9yIDAgaW4gY2FzZSBvZiBlcnJvci4gIFRoZSBudW1iZXIgb2YKLSAgIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVuIGlzIGxpbWl0ZWQgdG8gODE5MSwgb3Igb25lIGxlc3MgdGhhbiB0aGUgYnVmZmVyCi0gICBzaXplIGdpdmVuIHRvIGd6YnVmZmVyKCkuICBUaGUgY2FsbGVyIHNob3VsZCBhc3N1cmUgdGhhdCB0aGlzIGxpbWl0IGlzIG5vdAotICAgZXhjZWVkZWQuICBJZiBpdCBpcyBleGNlZWRlZCwgdGhlbiBnenByaW50ZigpIHdpbGwgcmV0dXJuIGFuIGVycm9yICgwKSB3aXRoCi0gICBub3RoaW5nIHdyaXR0ZW4uICBJbiB0aGlzIGNhc2UsIHRoZXJlIG1heSBhbHNvIGJlIGEgYnVmZmVyIG92ZXJmbG93IHdpdGgKLSAgIHVucHJlZGljdGFibGUgY29uc2VxdWVuY2VzLCB3aGljaCBpcyBwb3NzaWJsZSBvbmx5IGlmIHpsaWIgd2FzIGNvbXBpbGVkIHdpdGgKLSAgIHRoZSBpbnNlY3VyZSBmdW5jdGlvbnMgc3ByaW50ZigpIG9yIHZzcHJpbnRmKCkgYmVjYXVzZSB0aGUgc2VjdXJlIHNucHJpbnRmKCkKLSAgIG9yIHZzbnByaW50ZigpIGZ1bmN0aW9ucyB3ZXJlIG5vdCBhdmFpbGFibGUuICBUaGlzIGNhbiBiZSBkZXRlcm1pbmVkIHVzaW5nCi0gICB6bGliQ29tcGlsZUZsYWdzKCkuCisgICB1bmNvbXByZXNzZWQgYnl0ZXMgYWN0dWFsbHkgd3JpdHRlbiwgb3IgYSBuZWdhdGl2ZSB6bGliIGVycm9yIGNvZGUgaW4gY2FzZQorICAgb2YgZXJyb3IuICBUaGUgbnVtYmVyIG9mIHVuY29tcHJlc3NlZCBieXRlcyB3cml0dGVuIGlzIGxpbWl0ZWQgdG8gODE5MSwgb3IKKyAgIG9uZSBsZXNzIHRoYW4gdGhlIGJ1ZmZlciBzaXplIGdpdmVuIHRvIGd6YnVmZmVyKCkuICBUaGUgY2FsbGVyIHNob3VsZCBhc3N1cmUKKyAgIHRoYXQgdGhpcyBsaW1pdCBpcyBub3QgZXhjZWVkZWQuICBJZiBpdCBpcyBleGNlZWRlZCwgdGhlbiBnenByaW50ZigpIHdpbGwKKyAgIHJldHVybiBhbiBlcnJvciAoMCkgd2l0aCBub3RoaW5nIHdyaXR0ZW4uICBJbiB0aGlzIGNhc2UsIHRoZXJlIG1heSBhbHNvIGJlIGEKKyAgIGJ1ZmZlciBvdmVyZmxvdyB3aXRoIHVucHJlZGljdGFibGUgY29uc2VxdWVuY2VzLCB3aGljaCBpcyBwb3NzaWJsZSBvbmx5IGlmCisgICB6bGliIHdhcyBjb21waWxlZCB3aXRoIHRoZSBpbnNlY3VyZSBmdW5jdGlvbnMgc3ByaW50ZigpIG9yIHZzcHJpbnRmKCkKKyAgIGJlY2F1c2UgdGhlIHNlY3VyZSBzbnByaW50ZigpIG9yIHZzbnByaW50ZigpIGZ1bmN0aW9ucyB3ZXJlIG5vdCBhdmFpbGFibGUuCisgICBUaGlzIGNhbiBiZSBkZXRlcm1pbmVkIHVzaW5nIHpsaWJDb21waWxlRmxhZ3MoKS4KICovCiAKIFpFWFRFUk4gaW50IFpFWFBPUlQgZ3pwdXRzIE9GKChnekZpbGUgZmlsZSwgY29uc3QgY2hhciAqcykpOwpAQCAtMTQxOCw3ICsxNTM3LDcgQEAKICAgICAgSWYgdGhlIGZsdXNoIHBhcmFtZXRlciBpcyBaX0ZJTklTSCwgdGhlIHJlbWFpbmluZyBkYXRhIGlzIHdyaXR0ZW4gYW5kIHRoZQogICAgZ3ppcCBzdHJlYW0gaXMgY29tcGxldGVkIGluIHRoZSBvdXRwdXQuICBJZiBnendyaXRlKCkgaXMgY2FsbGVkIGFnYWluLCBhIG5ldwogICAgZ3ppcCBzdHJlYW0gd2lsbCBiZSBzdGFydGVkIGluIHRoZSBvdXRwdXQuICBnenJlYWQoKSBpcyBhYmxlIHRvIHJlYWQgc3VjaAotICAgY29uY2F0ZW50ZWQgZ3ppcCBzdHJlYW1zLgorICAgY29uY2F0ZW5hdGVkIGd6aXAgc3RyZWFtcy4KIAogICAgICBnemZsdXNoIHNob3VsZCBiZSBjYWxsZWQgb25seSB3aGVuIHN0cmljdGx5IG5lY2Vzc2FyeSBiZWNhdXNlIGl0IHdpbGwKICAgIGRlZ3JhZGUgY29tcHJlc3Npb24gaWYgY2FsbGVkIHRvbyBvZnRlbi4KQEAgLTE1NzIsNyArMTY5MSw3IEBACiAgICByZXR1cm4gdGhlIHVwZGF0ZWQgY2hlY2tzdW0uICBJZiBidWYgaXMgWl9OVUxMLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlCiAgICByZXF1aXJlZCBpbml0aWFsIHZhbHVlIGZvciB0aGUgY2hlY2tzdW0uCiAKLSAgICAgQW4gQWRsZXItMzIgY2hlY2tzdW0gaXMgYWxtb3N0IGFzIHJlbGlhYmxlIGFzIGEgQ1JDMzIgYnV0IGNhbiBiZSBjb21wdXRlZAorICAgICBBbiBBZGxlci0zMiBjaGVja3N1bSBpcyBhbG1vc3QgYXMgcmVsaWFibGUgYXMgYSBDUkMtMzIgYnV0IGNhbiBiZSBjb21wdXRlZAogICAgbXVjaCBmYXN0ZXIuCiAKICAgIFVzYWdlIGV4YW1wbGU6CkBAIC0xNTg1LDYgKzE3MDQsMTIgQEAKICAgICAgaWYgKGFkbGVyICE9IG9yaWdpbmFsX2FkbGVyKSBlcnJvcigpOwogKi8KIAorWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGFkbGVyMzJfeiBPRigodUxvbmcgYWRsZXIsIGNvbnN0IEJ5dGVmICpidWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6X3NpemVfdCBsZW4pKTsKKy8qCisgICAgIFNhbWUgYXMgYWRsZXIzMigpLCBidXQgd2l0aCBhIHNpemVfdCBsZW5ndGguCisqLworCiAvKgogWkVYVEVSTiB1TG9uZyBaRVhQT1JUIGFkbGVyMzJfY29tYmluZSBPRigodUxvbmcgYWRsZXIxLCB1TG9uZyBhZGxlcjIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6X29mZl90IGxlbjIpKTsKQEAgLTE2MTQsNiArMTczOSwxMiBAQAogICAgICBpZiAoY3JjICE9IG9yaWdpbmFsX2NyYykgZXJyb3IoKTsKICovCiAKK1pFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl96IE9GKCh1TG9uZyBhZGxlciwgY29uc3QgQnl0ZWYgKmJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6X3NpemVfdCBsZW4pKTsKKy8qCisgICAgIFNhbWUgYXMgY3JjMzIoKSwgYnV0IHdpdGggYSBzaXplX3QgbGVuZ3RoLgorKi8KKwogLyoKIFpFWFRFUk4gdUxvbmcgWkVYUE9SVCBjcmMzMl9jb21iaW5lIE9GKCh1TG9uZyBjcmMxLCB1TG9uZyBjcmMyLCB6X29mZl90IGxlbjIpKTsKIApAQCAtMTY0NCwxOSArMTc3NSwzNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyIEZBUiAqd2luZG93LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp2ZXJzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyZWFtX3NpemUpKTsKLSNkZWZpbmUgZGVmbGF0ZUluaXQoc3RybSwgbGV2ZWwpIFwKLSAgICAgICAgZGVmbGF0ZUluaXRfKChzdHJtKSwgKGxldmVsKSwgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCi0jZGVmaW5lIGluZmxhdGVJbml0KHN0cm0pIFwKLSAgICAgICAgaW5mbGF0ZUluaXRfKChzdHJtKSwgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCi0jZGVmaW5lIGRlZmxhdGVJbml0MihzdHJtLCBsZXZlbCwgbWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3kpIFwKLSAgICAgICAgZGVmbGF0ZUluaXQyXygoc3RybSksKGxldmVsKSwobWV0aG9kKSwod2luZG93Qml0cyksKG1lbUxldmVsKSxcCi0gICAgICAgICAgICAgICAgICAgICAgKHN0cmF0ZWd5KSwgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCi0jZGVmaW5lIGluZmxhdGVJbml0MihzdHJtLCB3aW5kb3dCaXRzKSBcCi0gICAgICAgIGluZmxhdGVJbml0Ml8oKHN0cm0pLCAod2luZG93Qml0cyksIFpMSUJfVkVSU0lPTiwgXAotICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKLSNkZWZpbmUgaW5mbGF0ZUJhY2tJbml0KHN0cm0sIHdpbmRvd0JpdHMsIHdpbmRvdykgXAotICAgICAgICBpbmZsYXRlQmFja0luaXRfKChzdHJtKSwgKHdpbmRvd0JpdHMpLCAod2luZG93KSwgXAotICAgICAgICAgICAgICAgICAgICAgIFpMSUJfVkVSU0lPTiwgKGludClzaXplb2Yoel9zdHJlYW0pKQorI2lmZGVmIFpfUFJFRklYX1NFVAorIyAgZGVmaW5lIHpfZGVmbGF0ZUluaXQoc3RybSwgbGV2ZWwpIFwKKyAgICAgICAgICBkZWZsYXRlSW5pdF8oKHN0cm0pLCAobGV2ZWwpLCBaTElCX1ZFUlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKyMgIGRlZmluZSB6X2luZmxhdGVJbml0KHN0cm0pIFwKKyAgICAgICAgICBpbmZsYXRlSW5pdF8oKHN0cm0pLCBaTElCX1ZFUlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKyMgIGRlZmluZSB6X2RlZmxhdGVJbml0MihzdHJtLCBsZXZlbCwgbWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3kpIFwKKyAgICAgICAgICBkZWZsYXRlSW5pdDJfKChzdHJtKSwobGV2ZWwpLChtZXRob2QpLCh3aW5kb3dCaXRzKSwobWVtTGV2ZWwpLFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChzdHJhdGVneSksIFpMSUJfVkVSU0lPTiwgKGludClzaXplb2Yoel9zdHJlYW0pKQorIyAgZGVmaW5lIHpfaW5mbGF0ZUluaXQyKHN0cm0sIHdpbmRvd0JpdHMpIFwKKyAgICAgICAgICBpbmZsYXRlSW5pdDJfKChzdHJtKSwgKHdpbmRvd0JpdHMpLCBaTElCX1ZFUlNJT04sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKyMgIGRlZmluZSB6X2luZmxhdGVCYWNrSW5pdChzdHJtLCB3aW5kb3dCaXRzLCB3aW5kb3cpIFwKKyAgICAgICAgICBpbmZsYXRlQmFja0luaXRfKChzdHJtKSwgKHdpbmRvd0JpdHMpLCAod2luZG93KSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCisjZWxzZQorIyAgZGVmaW5lIGRlZmxhdGVJbml0KHN0cm0sIGxldmVsKSBcCisgICAgICAgICAgZGVmbGF0ZUluaXRfKChzdHJtKSwgKGxldmVsKSwgWkxJQl9WRVJTSU9OLCAoaW50KXNpemVvZih6X3N0cmVhbSkpCisjICBkZWZpbmUgaW5mbGF0ZUluaXQoc3RybSkgXAorICAgICAgICAgIGluZmxhdGVJbml0Xygoc3RybSksIFpMSUJfVkVSU0lPTiwgKGludClzaXplb2Yoel9zdHJlYW0pKQorIyAgZGVmaW5lIGRlZmxhdGVJbml0MihzdHJtLCBsZXZlbCwgbWV0aG9kLCB3aW5kb3dCaXRzLCBtZW1MZXZlbCwgc3RyYXRlZ3kpIFwKKyAgICAgICAgICBkZWZsYXRlSW5pdDJfKChzdHJtKSwobGV2ZWwpLChtZXRob2QpLCh3aW5kb3dCaXRzKSwobWVtTGV2ZWwpLFwKKyAgICAgICAgICAgICAgICAgICAgICAgIChzdHJhdGVneSksIFpMSUJfVkVSU0lPTiwgKGludClzaXplb2Yoel9zdHJlYW0pKQorIyAgZGVmaW5lIGluZmxhdGVJbml0MihzdHJtLCB3aW5kb3dCaXRzKSBcCisgICAgICAgICAgaW5mbGF0ZUluaXQyXygoc3RybSksICh3aW5kb3dCaXRzKSwgWkxJQl9WRVJTSU9OLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZih6X3N0cmVhbSkpCisjICBkZWZpbmUgaW5mbGF0ZUJhY2tJbml0KHN0cm0sIHdpbmRvd0JpdHMsIHdpbmRvdykgXAorICAgICAgICAgIGluZmxhdGVCYWNrSW5pdF8oKHN0cm0pLCAod2luZG93Qml0cyksICh3aW5kb3cpLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBaTElCX1ZFUlNJT04sIChpbnQpc2l6ZW9mKHpfc3RyZWFtKSkKKyNlbmRpZgogCiAjaWZuZGVmIFpfU09MTwogCkBAIC0xNjc2LDEwICsxODIzLDEwIEBACiAjaWZkZWYgWl9QUkVGSVhfU0VUCiAjICB1bmRlZiB6X2d6Z2V0YwogIyAgZGVmaW5lIHpfZ3pnZXRjKGcpIFwKLSAgICAgICAgICAoKGcpLT5oYXZlID8gKChnKS0+aGF2ZS0tLCAoZyktPnBvcysrLCAqKChnKS0+bmV4dCkrKykgOiBnemdldGMoZykpCisgICAgICAgICAgKChnKS0+aGF2ZSA/ICgoZyktPmhhdmUtLSwgKGcpLT5wb3MrKywgKigoZyktPm5leHQpKyspIDogKGd6Z2V0YykoZykpCiAjZWxzZQogIyAgZGVmaW5lIGd6Z2V0YyhnKSBcCi0gICAgICAgICAgKChnKS0+aGF2ZSA/ICgoZyktPmhhdmUtLSwgKGcpLT5wb3MrKywgKigoZyktPm5leHQpKyspIDogZ3pnZXRjKGcpKQorICAgICAgICAgICgoZyktPmhhdmUgPyAoKGcpLT5oYXZlLS0sIChnKS0+cG9zKyssICooKGcpLT5uZXh0KSsrKSA6IChnemdldGMpKGcpKQogI2VuZGlmCiAKIC8qIHByb3ZpZGUgNjQtYml0IG9mZnNldCBmdW5jdGlvbnMgaWYgX0xBUkdFRklMRTY0X1NPVVJDRSBkZWZpbmVkLCBhbmQvb3IKQEAgLTE3MzcsMTkgKzE4ODQsMTYgQEAKIAogI2VuZGlmIC8qICFaX1NPTE8gKi8KIAotLyogaGFjayBmb3IgYnVnZ3kgY29tcGlsZXJzICovCi0jaWYgIWRlZmluZWQoWlVUSUxfSCkgJiYgIWRlZmluZWQoTk9fRFVNTVlfREVDTCkKLSAgICBzdHJ1Y3QgaW50ZXJuYWxfc3RhdGUge2ludCBkdW1teTt9OwotI2VuZGlmCi0KIC8qIHVuZG9jdW1lbnRlZCBmdW5jdGlvbnMgKi8KIFpFWFRFUk4gY29uc3QgY2hhciAgICogWkVYUE9SVCB6RXJyb3IgICAgICAgICAgIE9GKChpbnQpKTsKIFpFWFRFUk4gaW50ICAgICAgICAgICAgWkVYUE9SVCBpbmZsYXRlU3luY1BvaW50IE9GKCh6X3N0cmVhbXApKTsKIFpFWFRFUk4gY29uc3Qgel9jcmNfdCBGQVIgKiBaRVhQT1JUIGdldF9jcmNfdGFibGUgICAgT0YoKHZvaWQpKTsKIFpFWFRFUk4gaW50ICAgICAgICAgICAgWkVYUE9SVCBpbmZsYXRlVW5kZXJtaW5lIE9GKCh6X3N0cmVhbXAsIGludCkpOworWkVYVEVSTiBpbnQgICAgICAgICAgICBaRVhQT1JUIGluZmxhdGVWYWxpZGF0ZSBPRigoel9zdHJlYW1wLCBpbnQpKTsKK1pFWFRFUk4gdW5zaWduZWQgbG9uZyAgWkVYUE9SVCBpbmZsYXRlQ29kZXNVc2VkIE9GICgoel9zdHJlYW1wKSk7CiBaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgaW5mbGF0ZVJlc2V0S2VlcCBPRigoel9zdHJlYW1wKSk7CiBaRVhURVJOIGludCAgICAgICAgICAgIFpFWFBPUlQgZGVmbGF0ZVJlc2V0S2VlcCBPRigoel9zdHJlYW1wKSk7Ci0jaWYgZGVmaW5lZChfV0lOMzIpICYmICFkZWZpbmVkKFpfU09MTykKKyNpZiAoZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykpICYmICFkZWZpbmVkKFpfU09MTykKIFpFWFRFUk4gZ3pGaWxlICAgICAgICAgWkVYUE9SVCBnem9wZW5fdyBPRigoY29uc3Qgd2NoYXJfdCAqcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbW9kZSkpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3psaWIvemxpYi5tYXAgYi9Nb2R1bGVzL3psaWIvemxpYi5tYXAKaW5kZXggNTVjNjY0Ny4uNDBmYTlkYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy96bGliL3psaWIubWFwCisrKyBiL01vZHVsZXMvemxpYi96bGliLm1hcApAQCAtMSw4MyArMSw5NCBAQAotWkxJQl8xLjIuMCB7Ci0gIGdsb2JhbDoKLSAgICBjb21wcmVzc0JvdW5kOwotICAgIGRlZmxhdGVCb3VuZDsKLSAgICBpbmZsYXRlQmFjazsKLSAgICBpbmZsYXRlQmFja0VuZDsKLSAgICBpbmZsYXRlQmFja0luaXRfOwotICAgIGluZmxhdGVDb3B5OwotICBsb2NhbDoKLSAgICBkZWZsYXRlX2NvcHlyaWdodDsKLSAgICBpbmZsYXRlX2NvcHlyaWdodDsKLSAgICBpbmZsYXRlX2Zhc3Q7Ci0gICAgaW5mbGF0ZV90YWJsZTsKLSAgICB6Y2FsbG9jOwotICAgIHpjZnJlZTsKLSAgICB6X2Vycm1zZzsKLSAgICBnel9lcnJvcjsKLSAgICBnel9pbnRtYXg7Ci0gICAgXyo7Ci19OwotCi1aTElCXzEuMi4wLjIgewotICAgIGd6Y2xlYXJlcnI7Ci0gICAgZ3p1bmdldGM7Ci0gICAgemxpYkNvbXBpbGVGbGFnczsKLX0gWkxJQl8xLjIuMDsKLQotWkxJQl8xLjIuMC44IHsKLSAgICBkZWZsYXRlUHJpbWU7Ci19IFpMSUJfMS4yLjAuMjsKLQotWkxJQl8xLjIuMiB7Ci0gICAgYWRsZXIzMl9jb21iaW5lOwotICAgIGNyYzMyX2NvbWJpbmU7Ci0gICAgZGVmbGF0ZVNldEhlYWRlcjsKLSAgICBpbmZsYXRlR2V0SGVhZGVyOwotfSBaTElCXzEuMi4wLjg7Ci0KLVpMSUJfMS4yLjIuMyB7Ci0gICAgZGVmbGF0ZVR1bmU7Ci0gICAgZ3pkaXJlY3Q7Ci19IFpMSUJfMS4yLjI7Ci0KLVpMSUJfMS4yLjIuNCB7Ci0gICAgaW5mbGF0ZVByaW1lOwotfSBaTElCXzEuMi4yLjM7Ci0KLVpMSUJfMS4yLjMuMyB7Ci0gICAgYWRsZXIzMl9jb21iaW5lNjQ7Ci0gICAgY3JjMzJfY29tYmluZTY0OwotICAgIGd6b3BlbjY0OwotICAgIGd6c2VlazY0OwotICAgIGd6dGVsbDY0OwotICAgIGluZmxhdGVVbmRlcm1pbmU7Ci19IFpMSUJfMS4yLjIuNDsKLQotWkxJQl8xLjIuMy40IHsKLSAgICBpbmZsYXRlUmVzZXQyOwotICAgIGluZmxhdGVNYXJrOwotfSBaTElCXzEuMi4zLjM7Ci0KLVpMSUJfMS4yLjMuNSB7Ci0gICAgZ3pidWZmZXI7Ci0gICAgZ3pvZmZzZXQ7Ci0gICAgZ3pvZmZzZXQ2NDsKLSAgICBnemNsb3NlX3I7Ci0gICAgZ3pjbG9zZV93OwotfSBaTElCXzEuMi4zLjQ7Ci0KLVpMSUJfMS4yLjUuMSB7Ci0gICAgZGVmbGF0ZVBlbmRpbmc7Ci19IFpMSUJfMS4yLjMuNTsKLQotWkxJQl8xLjIuNS4yIHsKLSAgICBkZWZsYXRlUmVzZXRLZWVwOwotICAgIGd6Z2V0Y187Ci0gICAgaW5mbGF0ZVJlc2V0S2VlcDsKLX0gWkxJQl8xLjIuNS4xOwotCi1aTElCXzEuMi43LjEgewotICAgIGluZmxhdGVHZXREaWN0aW9uYXJ5OwotICAgIGd6dnByaW50ZjsKLX0gWkxJQl8xLjIuNS4yOworWkxJQl8xLjIuMCB7DQorICBnbG9iYWw6DQorICAgIGNvbXByZXNzQm91bmQ7DQorICAgIGRlZmxhdGVCb3VuZDsNCisgICAgaW5mbGF0ZUJhY2s7DQorICAgIGluZmxhdGVCYWNrRW5kOw0KKyAgICBpbmZsYXRlQmFja0luaXRfOw0KKyAgICBpbmZsYXRlQ29weTsNCisgIGxvY2FsOg0KKyAgICBkZWZsYXRlX2NvcHlyaWdodDsNCisgICAgaW5mbGF0ZV9jb3B5cmlnaHQ7DQorICAgIGluZmxhdGVfZmFzdDsNCisgICAgaW5mbGF0ZV90YWJsZTsNCisgICAgemNhbGxvYzsNCisgICAgemNmcmVlOw0KKyAgICB6X2Vycm1zZzsNCisgICAgZ3pfZXJyb3I7DQorICAgIGd6X2ludG1heDsNCisgICAgXyo7DQorfTsNCisNCitaTElCXzEuMi4wLjIgew0KKyAgICBnemNsZWFyZXJyOw0KKyAgICBnenVuZ2V0YzsNCisgICAgemxpYkNvbXBpbGVGbGFnczsNCit9IFpMSUJfMS4yLjA7DQorDQorWkxJQl8xLjIuMC44IHsNCisgICAgZGVmbGF0ZVByaW1lOw0KK30gWkxJQl8xLjIuMC4yOw0KKw0KK1pMSUJfMS4yLjIgew0KKyAgICBhZGxlcjMyX2NvbWJpbmU7DQorICAgIGNyYzMyX2NvbWJpbmU7DQorICAgIGRlZmxhdGVTZXRIZWFkZXI7DQorICAgIGluZmxhdGVHZXRIZWFkZXI7DQorfSBaTElCXzEuMi4wLjg7DQorDQorWkxJQl8xLjIuMi4zIHsNCisgICAgZGVmbGF0ZVR1bmU7DQorICAgIGd6ZGlyZWN0Ow0KK30gWkxJQl8xLjIuMjsNCisNCitaTElCXzEuMi4yLjQgew0KKyAgICBpbmZsYXRlUHJpbWU7DQorfSBaTElCXzEuMi4yLjM7DQorDQorWkxJQl8xLjIuMy4zIHsNCisgICAgYWRsZXIzMl9jb21iaW5lNjQ7DQorICAgIGNyYzMyX2NvbWJpbmU2NDsNCisgICAgZ3pvcGVuNjQ7DQorICAgIGd6c2VlazY0Ow0KKyAgICBnenRlbGw2NDsNCisgICAgaW5mbGF0ZVVuZGVybWluZTsNCit9IFpMSUJfMS4yLjIuNDsNCisNCitaTElCXzEuMi4zLjQgew0KKyAgICBpbmZsYXRlUmVzZXQyOw0KKyAgICBpbmZsYXRlTWFyazsNCit9IFpMSUJfMS4yLjMuMzsNCisNCitaTElCXzEuMi4zLjUgew0KKyAgICBnemJ1ZmZlcjsNCisgICAgZ3pvZmZzZXQ7DQorICAgIGd6b2Zmc2V0NjQ7DQorICAgIGd6Y2xvc2VfcjsNCisgICAgZ3pjbG9zZV93Ow0KK30gWkxJQl8xLjIuMy40Ow0KKw0KK1pMSUJfMS4yLjUuMSB7DQorICAgIGRlZmxhdGVQZW5kaW5nOw0KK30gWkxJQl8xLjIuMy41Ow0KKw0KK1pMSUJfMS4yLjUuMiB7DQorICAgIGRlZmxhdGVSZXNldEtlZXA7DQorICAgIGd6Z2V0Y187DQorICAgIGluZmxhdGVSZXNldEtlZXA7DQorfSBaTElCXzEuMi41LjE7DQorDQorWkxJQl8xLjIuNy4xIHsNCisgICAgaW5mbGF0ZUdldERpY3Rpb25hcnk7DQorICAgIGd6dnByaW50ZjsNCit9IFpMSUJfMS4yLjUuMjsNCisNCitaTElCXzEuMi45IHsNCisgICAgaW5mbGF0ZUNvZGVzVXNlZDsNCisgICAgaW5mbGF0ZVZhbGlkYXRlOw0KKyAgICB1bmNvbXByZXNzMjsNCisgICAgZ3pmcmVhZDsNCisgICAgZ3pmd3JpdGU7DQorICAgIGRlZmxhdGVHZXREaWN0aW9uYXJ5Ow0KKyAgICBhZGxlcjMyX3o7DQorICAgIGNyYzMyX3o7DQorfSBaTElCXzEuMi43LjE7DQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL3p1dGlsLmMgYi9Nb2R1bGVzL3psaWIvenV0aWwuYwppbmRleCAyM2QyZWJlLi5hNzZjNmIwIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvenV0aWwuYworKysgYi9Nb2R1bGVzL3psaWIvenV0aWwuYwpAQCAtMSw1ICsxLDUgQEAKIC8qIHp1dGlsLmMgLS0gdGFyZ2V0IGRlcGVuZGVudCB1dGlsaXR5IGZ1bmN0aW9ucyBmb3IgdGhlIGNvbXByZXNzaW9uIGxpYnJhcnkKLSAqIENvcHlyaWdodCAoQykgMTk5NS0yMDA1LCAyMDEwLCAyMDExLCAyMDEyIEplYW4tbG91cCBHYWlsbHkuCisgKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNyBKZWFuLWxvdXAgR2FpbGx5CiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gemxpYi5oCiAgKi8KIApAQCAtMTAsMjEgKzEwLDE4IEBACiAjICBpbmNsdWRlICJnemd1dHMuaCIKICNlbmRpZgogCi0jaWZuZGVmIE5PX0RVTU1ZX0RFQ0wKLXN0cnVjdCBpbnRlcm5hbF9zdGF0ZSAgICAgIHtpbnQgZHVtbXk7fTsgLyogZm9yIGJ1Z2d5IGNvbXBpbGVycyAqLwotI2VuZGlmCi0KIHpfY29uc3QgY2hhciAqIGNvbnN0IHpfZXJybXNnWzEwXSA9IHsKLSJuZWVkIGRpY3Rpb25hcnkiLCAgICAgLyogWl9ORUVEX0RJQ1QgICAgICAgMiAgKi8KLSJzdHJlYW0gZW5kIiwgICAgICAgICAgLyogWl9TVFJFQU1fRU5EICAgICAgMSAgKi8KLSIiLCAgICAgICAgICAgICAgICAgICAgLyogWl9PSyAgICAgICAgICAgICAgMCAgKi8KLSJmaWxlIGVycm9yIiwgICAgICAgICAgLyogWl9FUlJOTyAgICAgICAgICgtMSkgKi8KLSJzdHJlYW0gZXJyb3IiLCAgICAgICAgLyogWl9TVFJFQU1fRVJST1IgICgtMikgKi8KLSJkYXRhIGVycm9yIiwgICAgICAgICAgLyogWl9EQVRBX0VSUk9SICAgICgtMykgKi8KLSJpbnN1ZmZpY2llbnQgbWVtb3J5IiwgLyogWl9NRU1fRVJST1IgICAgICgtNCkgKi8KLSJidWZmZXIgZXJyb3IiLCAgICAgICAgLyogWl9CVUZfRVJST1IgICAgICgtNSkgKi8KLSJpbmNvbXBhdGlibGUgdmVyc2lvbiIsLyogWl9WRVJTSU9OX0VSUk9SICgtNikgKi8KLSIifTsKKyAgICAoel9jb25zdCBjaGFyICopIm5lZWQgZGljdGlvbmFyeSIsICAgICAvKiBaX05FRURfRElDVCAgICAgICAyICAqLworICAgICh6X2NvbnN0IGNoYXIgKikic3RyZWFtIGVuZCIsICAgICAgICAgIC8qIFpfU1RSRUFNX0VORCAgICAgIDEgICovCisgICAgKHpfY29uc3QgY2hhciAqKSIiLCAgICAgICAgICAgICAgICAgICAgLyogWl9PSyAgICAgICAgICAgICAgMCAgKi8KKyAgICAoel9jb25zdCBjaGFyICopImZpbGUgZXJyb3IiLCAgICAgICAgICAvKiBaX0VSUk5PICAgICAgICAgKC0xKSAqLworICAgICh6X2NvbnN0IGNoYXIgKikic3RyZWFtIGVycm9yIiwgICAgICAgIC8qIFpfU1RSRUFNX0VSUk9SICAoLTIpICovCisgICAgKHpfY29uc3QgY2hhciAqKSJkYXRhIGVycm9yIiwgICAgICAgICAgLyogWl9EQVRBX0VSUk9SICAgICgtMykgKi8KKyAgICAoel9jb25zdCBjaGFyICopImluc3VmZmljaWVudCBtZW1vcnkiLCAvKiBaX01FTV9FUlJPUiAgICAgKC00KSAqLworICAgICh6X2NvbnN0IGNoYXIgKikiYnVmZmVyIGVycm9yIiwgICAgICAgIC8qIFpfQlVGX0VSUk9SICAgICAoLTUpICovCisgICAgKHpfY29uc3QgY2hhciAqKSJpbmNvbXBhdGlibGUgdmVyc2lvbiIsLyogWl9WRVJTSU9OX0VSUk9SICgtNikgKi8KKyAgICAoel9jb25zdCBjaGFyICopIiIKK307CiAKIAogY29uc3QgY2hhciAqIFpFWFBPUlQgemxpYlZlcnNpb24oKQpAQCAtNjEsNyArNTgsNyBAQAogICAgIGNhc2UgODogICAgIGZsYWdzICs9IDIgPDwgNjsgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6ICAgIGZsYWdzICs9IDMgPDwgNjsKICAgICB9Ci0jaWZkZWYgREVCVUcKKyNpZmRlZiBaTElCX0RFQlVHCiAgICAgZmxhZ3MgKz0gMSA8PCA4OwogI2VuZGlmCiAjaWYgZGVmaW5lZChBU01WKSB8fCBkZWZpbmVkKEFTTUlORikKQEAgLTExNSw4ICsxMTIsOCBAQAogICAgIHJldHVybiBmbGFnczsKIH0KIAotI2lmZGVmIERFQlVHCi0KKyNpZmRlZiBaTElCX0RFQlVHCisjaW5jbHVkZSA8c3RkbGliLmg+CiAjICBpZm5kZWYgdmVyYm9zZQogIyAgICBkZWZpbmUgdmVyYm9zZSAwCiAjICBlbmRpZgpAQCAtMjE5LDkgKzIxNiwxMSBAQAogCiB2b2lkcGYgWkxJQl9JTlRFUk5BTCB6Y2FsbG9jICh2b2lkcGYgb3BhcXVlLCB1bnNpZ25lZCBpdGVtcywgdW5zaWduZWQgc2l6ZSkKIHsKLSAgICB2b2lkcGYgYnVmID0gb3BhcXVlOyAvKiBqdXN0IHRvIG1ha2Ugc29tZSBjb21waWxlcnMgaGFwcHkgKi8KKyAgICB2b2lkcGYgYnVmOwogICAgIHVsZyBic2l6ZSA9ICh1bGcpaXRlbXMqc2l6ZTsKIAorICAgICh2b2lkKW9wYXF1ZTsKKwogICAgIC8qIElmIHdlIGFsbG9jYXRlIGxlc3MgdGhhbiA2NTUyMCBieXRlcywgd2UgYXNzdW1lIHRoYXQgZmFybWFsbG9jCiAgICAgICogd2lsbCByZXR1cm4gYSB1c2FibGUgcG9pbnRlciB3aGljaCBkb2Vzbid0IGhhdmUgdG8gYmUgbm9ybWFsaXplZC4KICAgICAgKi8KQEAgLTI0NCw2ICsyNDMsOSBAQAogdm9pZCBaTElCX0lOVEVSTkFMIHpjZnJlZSAodm9pZHBmIG9wYXF1ZSwgdm9pZHBmIHB0cikKIHsKICAgICBpbnQgbjsKKworICAgICh2b2lkKW9wYXF1ZTsKKwogICAgIGlmICgqKHVzaCopJnB0ciAhPSAwKSB7IC8qIG9iamVjdCA8IDY0SyAqLwogICAgICAgICBmYXJmcmVlKHB0cik7CiAgICAgICAgIHJldHVybjsKQEAgLTI1OSw3ICsyNjEsNiBAQAogICAgICAgICBuZXh0X3B0ci0tOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHB0ciA9IG9wYXF1ZTsgLyoganVzdCB0byBtYWtlIHNvbWUgY29tcGlsZXJzIGhhcHB5ICovCiAgICAgQXNzZXJ0KDAsICJ6Y2ZyZWU6IHB0ciBub3QgZm91bmQiKTsKIH0KIApAQCAtMjc4LDEzICsyNzksMTMgQEAKIAogdm9pZHBmIFpMSUJfSU5URVJOQUwgemNhbGxvYyAodm9pZHBmIG9wYXF1ZSwgdUludCBpdGVtcywgdUludCBzaXplKQogewotICAgIGlmIChvcGFxdWUpIG9wYXF1ZSA9IDA7IC8qIHRvIG1ha2UgY29tcGlsZXIgaGFwcHkgKi8KKyAgICAodm9pZClvcGFxdWU7CiAgICAgcmV0dXJuIF9oYWxsb2MoKGxvbmcpaXRlbXMsIHNpemUpOwogfQogCiB2b2lkIFpMSUJfSU5URVJOQUwgemNmcmVlICh2b2lkcGYgb3BhcXVlLCB2b2lkcGYgcHRyKQogewotICAgIGlmIChvcGFxdWUpIG9wYXF1ZSA9IDA7IC8qIHRvIG1ha2UgY29tcGlsZXIgaGFwcHkgKi8KKyAgICAodm9pZClvcGFxdWU7CiAgICAgX2hmcmVlKHB0cik7CiB9CiAKQEAgLTMwNiw3ICszMDcsNyBAQAogICAgIHVuc2lnbmVkIGl0ZW1zOwogICAgIHVuc2lnbmVkIHNpemU7CiB7Ci0gICAgaWYgKG9wYXF1ZSkgaXRlbXMgKz0gc2l6ZSAtIHNpemU7IC8qIG1ha2UgY29tcGlsZXIgaGFwcHkgKi8KKyAgICAodm9pZClvcGFxdWU7CiAgICAgcmV0dXJuIHNpemVvZih1SW50KSA+IDIgPyAodm9pZHBmKW1hbGxvYyhpdGVtcyAqIHNpemUpIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkcGYpY2FsbG9jKGl0ZW1zLCBzaXplKTsKIH0KQEAgLTMxNSw4ICszMTYsOCBAQAogICAgIHZvaWRwZiBvcGFxdWU7CiAgICAgdm9pZHBmIHB0cjsKIHsKKyAgICAodm9pZClvcGFxdWU7CiAgICAgZnJlZShwdHIpOwotICAgIGlmIChvcGFxdWUpIHJldHVybjsgLyogbWFrZSBjb21waWxlciBoYXBweSAqLwogfQogCiAjZW5kaWYgLyogTVlfWkNBTExPQyAqLwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGliL3p1dGlsLmggYi9Nb2R1bGVzL3psaWIvenV0aWwuaAppbmRleCAyNGFiMDZiLi5iMDc5ZWE2IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWIvenV0aWwuaAorKysgYi9Nb2R1bGVzL3psaWIvenV0aWwuaApAQCAtMSw1ICsxLDUgQEAKIC8qIHp1dGlsLmggLS0gaW50ZXJuYWwgaW50ZXJmYWNlIGFuZCBjb25maWd1cmF0aW9uIG9mIHRoZSBjb21wcmVzc2lvbiBsaWJyYXJ5Ci0gKiBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxMyBKZWFuLWxvdXAgR2FpbGx5LgorICogQ29weXJpZ2h0IChDKSAxOTk1LTIwMTYgSmVhbi1sb3VwIEdhaWxseSwgTWFyayBBZGxlcgogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHpsaWIuaAogICovCiAKQEAgLTM2LDcgKzM2LDkgQEAKICNpZm5kZWYgbG9jYWwKICMgIGRlZmluZSBsb2NhbCBzdGF0aWMKICNlbmRpZgotLyogY29tcGlsZSB3aXRoIC1EbG9jYWwgaWYgeW91ciBkZWJ1Z2dlciBjYW4ndCBmaW5kIHN0YXRpYyBzeW1ib2xzICovCisvKiBzaW5jZSAic3RhdGljIiBpcyB1c2VkIHRvIG1lYW4gdHdvIGNvbXBsZXRlbHkgZGlmZmVyZW50IHRoaW5ncyBpbiBDLCB3ZQorICAgZGVmaW5lICJsb2NhbCIgZm9yIHRoZSBub24tc3RhdGljIG1lYW5pbmcgb2YgInN0YXRpYyIsIGZvciByZWFkYWJpbGl0eQorICAgKGNvbXBpbGUgd2l0aCAtRGxvY2FsIGlmIHlvdXIgZGVidWdnZXIgY2FuJ3QgZmluZCBzdGF0aWMgc3ltYm9scykgKi8KIAogdHlwZWRlZiB1bnNpZ25lZCBjaGFyICB1Y2g7CiB0eXBlZGVmIHVjaCBGQVIgdWNoZjsKQEAgLTk4LDI4ICsxMDAsMzggQEAKICNlbmRpZgogCiAjaWZkZWYgQU1JR0EKLSMgIGRlZmluZSBPU19DT0RFICAweDAxCisjICBkZWZpbmUgT1NfQ09ERSAgMQogI2VuZGlmCiAKICNpZiBkZWZpbmVkKFZBWEMpIHx8IGRlZmluZWQoVk1TKQotIyAgZGVmaW5lIE9TX0NPREUgIDB4MDIKKyMgIGRlZmluZSBPU19DT0RFICAyCiAjICBkZWZpbmUgRl9PUEVOKG5hbWUsIG1vZGUpIFwKICAgICAgZm9wZW4oKG5hbWUpLCAobW9kZSksICJtYmM9NjAiLCAiY3R4PXN0bSIsICJyZm09Zml4IiwgIm1ycz01MTIiKQogI2VuZGlmCiAKKyNpZmRlZiBfXzM3MF9fCisjICBpZiBfX1RBUkdFVF9MSUJfXyA8IDB4MjAwMDAwMDAKKyMgICAgZGVmaW5lIE9TX0NPREUgNAorIyAgZWxpZiBfX1RBUkdFVF9MSUJfXyA8IDB4NDAwMDAwMDAKKyMgICAgZGVmaW5lIE9TX0NPREUgMTEKKyMgIGVsc2UKKyMgICAgZGVmaW5lIE9TX0NPREUgOAorIyAgZW5kaWYKKyNlbmRpZgorCiAjaWYgZGVmaW5lZChBVEFSSSkgfHwgZGVmaW5lZChhdGFyaXN0KQotIyAgZGVmaW5lIE9TX0NPREUgIDB4MDUKKyMgIGRlZmluZSBPU19DT0RFICA1CiAjZW5kaWYKIAogI2lmZGVmIE9TMgotIyAgZGVmaW5lIE9TX0NPREUgIDB4MDYKKyMgIGRlZmluZSBPU19DT0RFICA2CiAjICBpZiBkZWZpbmVkKE1fSTg2KSAmJiAhZGVmaW5lZChaX1NPTE8pCiAjICAgIGluY2x1ZGUgPG1hbGxvYy5oPgogIyAgZW5kaWYKICNlbmRpZgogCiAjaWYgZGVmaW5lZChNQUNPUykgfHwgZGVmaW5lZChUQVJHRVRfT1NfTUFDKQotIyAgZGVmaW5lIE9TX0NPREUgIDB4MDcKKyMgIGRlZmluZSBPU19DT0RFICA3CiAjICBpZm5kZWYgWl9TT0xPCiAjICAgIGlmIGRlZmluZWQoX19NV0VSS1NfXykgJiYgX19kZXN0X29zICE9IF9fYmVfb3MgJiYgX19kZXN0X29zICE9IF9fd2luMzJfb3MKICMgICAgICBpbmNsdWRlIDx1bml4Lmg+IC8qIGZvciBmZG9wZW4gKi8KQEAgLTEzMSwxOCArMTQzLDI0IEBACiAjICBlbmRpZgogI2VuZGlmCiAKLSNpZmRlZiBUT1BTMjAKLSMgIGRlZmluZSBPU19DT0RFICAweDBhCisjaWZkZWYgX19hY29ybgorIyAgZGVmaW5lIE9TX0NPREUgMTMKICNlbmRpZgogCi0jaWZkZWYgV0lOMzIKLSMgIGlmbmRlZiBfX0NZR1dJTl9fICAvKiBDeWd3aW4gaXMgVW5peCwgbm90IFdpbjMyICovCi0jICAgIGRlZmluZSBPU19DT0RFICAweDBiCi0jICBlbmRpZgorI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKF9fQ1lHV0lOX18pCisjICBkZWZpbmUgT1NfQ09ERSAgMTAKICNlbmRpZgogCi0jaWZkZWYgX181MFNFUklFUyAvKiBQcmltZS9QUklNT1MgKi8KLSMgIGRlZmluZSBPU19DT0RFICAweDBmCisjaWZkZWYgX0JFT1NfCisjICBkZWZpbmUgT1NfQ09ERSAgMTYKKyNlbmRpZgorCisjaWZkZWYgX19UT1NfT1M0MDBfXworIyAgZGVmaW5lIE9TX0NPREUgMTgKKyNlbmRpZgorCisjaWZkZWYgX19BUFBMRV9fCisjICBkZWZpbmUgT1NfQ09ERSAxOQogI2VuZGlmCiAKICNpZiBkZWZpbmVkKF9CRU9TXykgfHwgZGVmaW5lZChSSVNDT1MpCkBAIC0xNzcsNyArMTk1LDcgQEAKICAgICAgICAgLyogY29tbW9uIGRlZmF1bHRzICovCiAKICNpZm5kZWYgT1NfQ09ERQotIyAgZGVmaW5lIE9TX0NPREUgIDB4MDMgIC8qIGFzc3VtZSBVbml4ICovCisjICBkZWZpbmUgT1NfQ09ERSAgMyAgICAgLyogYXNzdW1lIFVuaXggKi8KICNlbmRpZgogCiAjaWZuZGVmIEZfT1BFTgpAQCAtMjE2LDcgKzIzNCw3IEBACiAjZW5kaWYKIAogLyogRGlhZ25vc3RpYyBmdW5jdGlvbnMgKi8KLSNpZmRlZiBERUJVRworI2lmZGVmIFpMSUJfREVCVUcKICMgIGluY2x1ZGUgPHN0ZGlvLmg+CiAgICBleHRlcm4gaW50IFpMSUJfSU5URVJOQUwgel92ZXJib3NlOwogICAgZXh0ZXJuIHZvaWQgWkxJQl9JTlRFUk5BTCB6X2Vycm9yIE9GKChjaGFyICptKSk7CmRpZmYgLS1naXQgYS9PV05FUlMgYi9PV05FUlMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg5ZDE2NQotLS0gL2Rldi9udWxsCisrKyBiL09XTkVSUwpAQCAtMCwwICsxLDYgQEAKKyMgRGVmYXVsdCBvd25lcnMgYXJlIHRvcCAzIG9yIG1vcmUgYWN0aXZlIGRldmVsb3BlcnMgb2YgdGhlIHBhc3QgMSBvciAyIHllYXJzCisjIG9yIHBlb3BsZSB3aXRoIG1vcmUgdGhhbiAxMCBjb21taXRzIGxhc3QgeWVhci4KKyMgUGxlYXNlIHVwZGF0ZSB0aGlzIGxpc3QgaWYgeW91IGZpbmQgYmV0dGVyIG93bmVyIGNhbmRpZGF0ZXMuCituYW56aGFuZ0Bnb29nbGUuY29tCitkd2lsbGVtc2VuQGdvb2dsZS5jb20KK2NoaEBnb29nbGUuY29tCmRpZmYgLS1naXQgYS9PYmplY3RzL2Fic3RyYWN0LmMgYi9PYmplY3RzL2Fic3RyYWN0LmMKaW5kZXggYWE5MmVhOS4uNzVjMWExMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9hYnN0cmFjdC5jCisrKyBiL09iamVjdHMvYWJzdHJhY3QuYwpAQCAtMTQ5MiwxNCArMTQ5MiwxMyBAQAogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwogICAgIGlmIChpdGVtID09IE5VTEwpCiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7Ci0gICAgaWYgKFB5SW50X0NoZWNrKGl0ZW0pIHx8IFB5TG9uZ19DaGVjayhpdGVtKSkgeworICAgIGlmIChfUHlBbnlJbnRfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwogICAgICAgICByZXR1cm4gaXRlbTsKICAgICB9CiAgICAgaWYgKFB5SW5kZXhfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgcmVzdWx0ID0gaXRlbS0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyLT5uYl9pbmRleChpdGVtKTsKLSAgICAgICAgaWYgKHJlc3VsdCAmJgotICAgICAgICAgICAgIVB5SW50X0NoZWNrKHJlc3VsdCkgJiYgIVB5TG9uZ19DaGVjayhyZXN1bHQpKSB7CisgICAgICAgIGlmIChyZXN1bHQgJiYgIV9QeUFueUludF9DaGVjayhyZXN1bHQpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICJfX2luZGV4X18gcmV0dXJuZWQgbm9uLShpbnQsbG9uZykgIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgIih0eXBlICUuMjAwcykiLApAQCAtMTU3NCw4ICsxNTczLDcgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChpbnRlZ3JhbCAmJiAoIVB5SW50X0NoZWNrKGludGVncmFsKSAmJgotICAgICAgICAgICAgICAgICAgICAgIVB5TG9uZ19DaGVjayhpbnRlZ3JhbCkpKSB7CisgICAgaWYgKGludGVncmFsICYmICFfUHlBbnlJbnRfQ2hlY2soaW50ZWdyYWwpKSB7CiAgICAgICAgIC8qIERvbid0IGdvIHRocm91Z2ggdHBfYXNfbnVtYmVyLT5uYl9pbnQgdG8gYXZvaWQKICAgICAgICAgICAgaGl0dGluZyB0aGUgY2xhc3NpYyBjbGFzcyBmYWxsYmFjayB0byBfX3RydW5jX18uICovCiAgICAgICAgIFB5T2JqZWN0ICppbnRfZnVuYyA9IFB5T2JqZWN0X0dldEF0dHIoaW50ZWdyYWwsIGludF9uYW1lKTsKQEAgLTE1ODYsOCArMTU4NCw3IEBACiAgICAgICAgIFB5X0RFQ1JFRihpbnRlZ3JhbCk7CiAgICAgICAgIGludGVncmFsID0gUHlFdmFsX0NhbGxPYmplY3QoaW50X2Z1bmMsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoaW50X2Z1bmMpOwotICAgICAgICBpZiAoaW50ZWdyYWwgJiYgKCFQeUludF9DaGVjayhpbnRlZ3JhbCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIVB5TG9uZ19DaGVjayhpbnRlZ3JhbCkpKSB7CisgICAgICAgIGlmIChpbnRlZ3JhbCAmJiAhX1B5QW55SW50X0NoZWNrKGludGVncmFsKSkgewogICAgICAgICAgICAgZ290byBub25faW50ZWdyYWxfZXJyb3I7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNjMyLDcgKzE2MjksNyBAQAogICAgIGlmIChtICYmIG0tPm5iX2ludCkgeyAvKiBUaGlzIHNob3VsZCBpbmNsdWRlIHN1YmNsYXNzZXMgb2YgaW50ICovCiAgICAgICAgIC8qIENsYXNzaWMgY2xhc3NlcyBhbHdheXMgdGFrZSB0aGlzIGJyYW5jaC4gKi8KICAgICAgICAgUHlPYmplY3QgKnJlcyA9IG0tPm5iX2ludChvKTsKLSAgICAgICAgaWYgKHJlcyAmJiAoIVB5SW50X0NoZWNrKHJlcykgJiYgIVB5TG9uZ19DaGVjayhyZXMpKSkgeworICAgICAgICBpZiAocmVzICYmICFfUHlBbnlJbnRfQ2hlY2socmVzKSkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAiX19pbnRfXyByZXR1cm5lZCBub24taW50ICh0eXBlICUuMjAwcykiLAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CmRpZmYgLS1naXQgYS9PYmplY3RzL2J1ZmZlcm9iamVjdC5jIGIvT2JqZWN0cy9idWZmZXJvYmplY3QuYwppbmRleCBiY2ZhYjcxLi5kMjI5N2YzIDEwMDY0NAotLS0gYS9PYmplY3RzL2J1ZmZlcm9iamVjdC5jCisrKyBiL09iamVjdHMvYnVmZmVyb2JqZWN0LmMKQEAgLTM0LDcgKzM0LDcgQEAKICAgICBlbHNlIHsKICAgICAgICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwogICAgICAgICByZWFkYnVmZmVycHJvYyBwcm9jID0gMDsKLSAgICAgICAgUHlCdWZmZXJQcm9jcyAqYnAgPSBzZWxmLT5iX2Jhc2UtPm9iX3R5cGUtPnRwX2FzX2J1ZmZlcjsKKyAgICAgICAgUHlCdWZmZXJQcm9jcyAqYnAgPSBQeV9UWVBFKHNlbGYtPmJfYmFzZSktPnRwX2FzX2J1ZmZlcjsKICAgICAgICAgaWYgKCgqYnAtPmJmX2dldHNlZ2NvdW50KShzZWxmLT5iX2Jhc2UsIE5VTEwpICE9IDEpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgInNpbmdsZS1zZWdtZW50IGJ1ZmZlciBvYmplY3QgZXhwZWN0ZWQiKTsKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICAgICAgICAgIChidWZmZXJfdHlwZSA9PSBBTllfQlVGRkVSKSkKICAgICAgICAgICAgIHByb2MgPSAocmVhZGJ1ZmZlcnByb2MpYnAtPmJmX2dldHdyaXRlYnVmZmVyOwogICAgICAgICBlbHNlIGlmIChidWZmZXJfdHlwZSA9PSBDSEFSX0JVRkZFUikgewotICAgICAgICAgICAgaWYgKCFQeVR5cGVfSGFzRmVhdHVyZShzZWxmLT5vYl90eXBlLAorICAgICAgICAgICAgaWYgKCFQeVR5cGVfSGFzRmVhdHVyZShQeV9UWVBFKHNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFBGTEFHU19IQVZFX0dFVENIQVJCVUZGRVIpKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJQeV9UUEZMQUdTX0hBVkVfR0VUQ0hBUkJVRkZFUiBuZWVkZWQiKTsKQEAgLTQ2MiwxNyArNDYyLDIzIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitidWZmZXJfaXRlbV9pbXBsKHZvaWQgKnB0ciwgUHlfc3NpemVfdCBzaXplLCBQeV9zc2l6ZV90IGlkeCkKK3sKKyAgICBpZiAoIGlkeCA8IDAgfHwgaWR4ID49IHNpemUgKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbmRleEVycm9yLCAiYnVmZmVyIGluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopcHRyICsgaWR4LCAxKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGJ1ZmZlcl9pdGVtKFB5QnVmZmVyT2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGlkeCkKIHsKICAgICB2b2lkICpwdHI7CiAgICAgUHlfc3NpemVfdCBzaXplOwogICAgIGlmICghZ2V0X2J1ZihzZWxmLCAmcHRyLCAmc2l6ZSwgQU5ZX0JVRkZFUikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmICggaWR4IDwgMCB8fCBpZHggPj0gc2l6ZSApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsICJidWZmZXIgaW5kZXggb3V0IG9mIHJhbmdlIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gUHlTdHJpbmdfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilwdHIgKyBpZHgsIDEpOworICAgIHJldHVybiBidWZmZXJfaXRlbV9pbXBsKHB0ciwgc2l6ZSwgaWR4KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTUwMCwyNCArNTA2LDI3IEBACiAgICAgdm9pZCAqcDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAKLSAgICBpZiAoIWdldF9idWYoc2VsZiwgJnAsICZzaXplLCBBTllfQlVGRkVSKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5SW5kZXhfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBpID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIFB5RXhjX0luZGV4RXJyb3IpOwogICAgICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIGlmIChpIDwgMCkKKyAgICAgICAgaWYgKCFnZXRfYnVmKHNlbGYsICZwLCAmc2l6ZSwgQU5ZX0JVRkZFUikpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAoaSA8IDApIHsKICAgICAgICAgICAgIGkgKz0gc2l6ZTsKLSAgICAgICAgcmV0dXJuIGJ1ZmZlcl9pdGVtKHNlbGYsIGkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBidWZmZXJfaXRlbV9pbXBsKHAsIHNpemUsIGkpOwogICAgIH0KICAgICBlbHNlIGlmIChQeVNsaWNlX0NoZWNrKGl0ZW0pKSB7CiAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoLCBjdXIsIGk7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0KilpdGVtLCBzaXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgeworICAgICAgICBpZiAoX1B5U2xpY2VfVW5wYWNrKGl0ZW0sICZzdGFydCwgJnN0b3AsICZzdGVwKSA8IDApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQorICAgICAgICBpZiAoIWdldF9idWYoc2VsZiwgJnAsICZzaXplLCBBTllfQlVGRkVSKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogCisgICAgICAgIHNsaWNlbGVuZ3RoID0gX1B5U2xpY2VfQWRqdXN0SW5kaWNlcyhzaXplLCAmc3RhcnQsICZzdG9wLCBzdGVwKTsKICAgICAgICAgaWYgKHNsaWNlbGVuZ3RoIDw9IDApCiAgICAgICAgICAgICByZXR1cm4gUHlTdHJpbmdfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOwogICAgICAgICBlbHNlIGlmIChzdGVwID09IDEpCkBAIC01NTAsMjIgKzU1OSwxMiBAQAogfQogCiBzdGF0aWMgaW50Ci1idWZmZXJfYXNzX2l0ZW0oUHlCdWZmZXJPYmplY3QgKnNlbGYsIFB5X3NzaXplX3QgaWR4LCBQeU9iamVjdCAqb3RoZXIpCitidWZmZXJfYXNzX2l0ZW1faW1wbCh2b2lkICpwdHIxLCBQeV9zc2l6ZV90IHNpemUsIFB5X3NzaXplX3QgaWR4LCBQeU9iamVjdCAqb3RoZXIpCiB7CiAgICAgUHlCdWZmZXJQcm9jcyAqcGI7Ci0gICAgdm9pZCAqcHRyMSwgKnB0cjI7Ci0gICAgUHlfc3NpemVfdCBzaXplOworICAgIHZvaWQgKnB0cjI7CiAgICAgUHlfc3NpemVfdCBjb3VudDsKIAotICAgIGlmICggc2VsZi0+Yl9yZWFkb25seSApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJidWZmZXIgaXMgcmVhZC1vbmx5Iik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBpZiAoIWdldF9idWYoc2VsZiwgJnB0cjEsICZzaXplLCBBTllfQlVGRkVSKSkKLSAgICAgICAgcmV0dXJuIC0xOwotCiAgICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IHNpemUpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYnVmZmVyIGFzc2lnbm1lbnQgaW5kZXggb3V0IG9mIHJhbmdlIik7CkBAIC02MDEsNiArNjAwLDIzIEBACiB9CiAKIHN0YXRpYyBpbnQKK2J1ZmZlcl9hc3NfaXRlbShQeUJ1ZmZlck9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBpZHgsIFB5T2JqZWN0ICpvdGhlcikKK3sKKyAgICB2b2lkICpwdHIxOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKworICAgIGlmICggc2VsZi0+Yl9yZWFkb25seSApIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJidWZmZXIgaXMgcmVhZC1vbmx5Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoIWdldF9idWYoc2VsZiwgJnB0cjEsICZzaXplLCBBTllfQlVGRkVSKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiBidWZmZXJfYXNzX2l0ZW1faW1wbChwdHIxLCBzaXplLCBpZHgsIG90aGVyKTsKK30KKworc3RhdGljIGludAogYnVmZmVyX2Fzc19zbGljZShQeUJ1ZmZlck9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBsZWZ0LCBQeV9zc2l6ZV90IHJpZ2h0LCBQeU9iamVjdCAqb3RoZXIpCiB7CiAgICAgUHlCdWZmZXJQcm9jcyAqcGI7CkBAIC02ODcsMjMgKzcwMywyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgInNpbmdsZS1zZWdtZW50IGJ1ZmZlciBvYmplY3QgZXhwZWN0ZWQiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBpZiAoIWdldF9idWYoc2VsZiwgJnB0cjEsICZzZWxmc2l6ZSwgQU5ZX0JVRkZFUikpCi0gICAgICAgIHJldHVybiAtMTsKICAgICBpZiAoUHlJbmRleF9DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9zc2l6ZV90IGkgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgUHlFeGNfSW5kZXhFcnJvcik7CiAgICAgICAgIGlmIChpID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmICghZ2V0X2J1ZihzZWxmLCAmcHRyMSwgJnNlbGZzaXplLCBBTllfQlVGRkVSKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKwogICAgICAgICBpZiAoaSA8IDApCiAgICAgICAgICAgICBpICs9IHNlbGZzaXplOwotICAgICAgICByZXR1cm4gYnVmZmVyX2Fzc19pdGVtKHNlbGYsIGksIHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcl9hc3NfaXRlbV9pbXBsKHB0cjEsIHNlbGZzaXplLCBpLCB2YWx1ZSk7CiAgICAgfQogICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW5ndGg7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0ICopaXRlbSwgc2VsZnNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApCisgICAgICAgIGlmIChfUHlTbGljZV9VbnBhY2soaXRlbSwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKCFnZXRfYnVmKHNlbGYsICZwdHIxLCAmc2VsZnNpemUsIEFOWV9CVUZGRVIpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogCisgICAgICAgIHNsaWNlbGVuZ3RoID0gX1B5U2xpY2VfQWRqdXN0SW5kaWNlcyhzZWxmc2l6ZSwgJnN0YXJ0LCAmc3RvcCwgc3RlcCk7CiAgICAgICAgIGlmICgob3RoZXJzaXplID0gKCpwYi0+YmZfZ2V0cmVhZGJ1ZmZlcikodmFsdWUsIDAsICZwdHIyKSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwppbmRleCA5ZTNjZWFkLi5jMTc4ZDllIDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCisrKyBiL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKQEAgLTM1LDcgKzM1LDcgQEAKICAgICAgICAgKnZhbHVlID0gUHlfQ0hBUk1BU0soKChQeUJ5dGVzT2JqZWN0KilhcmcpLT5vYl9zdmFsWzBdKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIGVsc2UgaWYgKFB5SW50X0NoZWNrKGFyZykgfHwgUHlMb25nX0NoZWNrKGFyZykpIHsKKyAgICBlbHNlIGlmIChfUHlBbnlJbnRfQ2hlY2soYXJnKSkgewogICAgICAgICBmYWNlX3ZhbHVlID0gUHlMb25nX0FzTG9uZyhhcmcpOwogICAgIH0KICAgICBlbHNlIHsKQEAgLTE2NCw2ICsxNjQsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dCwgTlVMTCk7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlCeXRlQXJyYXlfRnJvbUJ1ZmZlck9iamVjdChQeU9iamVjdCAqb2JqKQoreworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlfYnVmZmVyIHZpZXc7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgdmlldy5sZW4pOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJgorICAgICAgICBQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmlldywgdmlldy5sZW4sICdDJykgPCAwKQorICAgIHsKKyAgICAgICAgUHlfQ0xFQVIocmVzdWx0KTsKKyAgICB9CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogUHlPYmplY3QgKgogUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoY29uc3QgY2hhciAqYnl0ZXMsIFB5X3NzaXplX3Qgc2l6ZSkKIHsKQEAgLTQzNSwxMSArNDU1LDExIEBACiAgICAgfQogICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soaW5kZXgpKSB7CiAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoLCBjdXIsIGk7Ci0gICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeCgoUHlTbGljZU9iamVjdCAqKWluZGV4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKKyAgICAgICAgaWYgKF9QeVNsaWNlX1VucGFjayhpbmRleCwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgc2xpY2VsZW5ndGggPSBfUHlTbGljZV9BZGp1c3RJbmRpY2VzKFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCBzdGVwKTsKIAogICAgICAgICBpZiAoc2xpY2VsZW5ndGggPD0gMCkKICAgICAgICAgICAgIHJldHVybiBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZSgiIiwgMCk7CkBAIC00ODMsNyArNTAzLDggQEAKICAgICBpZiAodmFsdWVzID09IChQeU9iamVjdCAqKXNlbGYpIHsKICAgICAgICAgLyogTWFrZSBhIGNvcHkgYW5kIGNhbGwgdGhpcyBmdW5jdGlvbiByZWN1cnNpdmVseSAqLwogICAgICAgICBpbnQgZXJyOwotICAgICAgICB2YWx1ZXMgPSBQeUJ5dGVBcnJheV9Gcm9tT2JqZWN0KHZhbHVlcyk7CisgICAgICAgIHZhbHVlcyA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKFB5Qnl0ZUFycmF5X0FTX1NUUklORyh2YWx1ZXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRSh2YWx1ZXMpKTsKICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBlcnIgPSBieXRlYXJyYXlfc2V0c2xpY2Uoc2VsZiwgbG8sIGhpLCB2YWx1ZXMpOwpAQCAtNjE5LDExICs2NDAsMTEgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIGlmIChQeVNsaWNlX0NoZWNrKGluZGV4KSkgewotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoKFB5U2xpY2VPYmplY3QgKilpbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbikgPCAwKSB7CisgICAgICAgIGlmIChfUHlTbGljZV9VbnBhY2soaW5kZXgsICZzdGFydCwgJnN0b3AsICZzdGVwKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQorICAgICAgICBzbGljZWxlbiA9IF9QeVNsaWNlX0FkanVzdEluZGljZXMoUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksICZzdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0b3AsIHN0ZXApOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVhcnJheSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlciIpOwpAQCAtMTU3MSwzMSArMTU5MiwzMCBAQAogewogICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwogICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgaSwgcHJvZHVjdDsKKyAgICBQeV9zc2l6ZV90IGNvdW50LCBpOwogICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwogCi0gICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXIgKi8KLSAgICBjb3VudCA9IHNlbGZfbGVuKzE7Ci0gICAgaWYgKG1heGNvdW50IDwgY291bnQpCisgICAgLyogMSBhdCB0aGUgZW5kIHBsdXMgMSBhZnRlciBldmVyeSBjaGFyYWN0ZXI7CisgICAgICAgY291bnQgPSBtaW4obWF4Y291bnQsIHNlbGZfbGVuICsgMSkgKi8KKyAgICBpZiAobWF4Y291bnQgPD0gc2VsZl9sZW4pIHsKICAgICAgICAgY291bnQgPSBtYXhjb3VudDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIENhbid0IG92ZXJmbG93OiBzZWxmX2xlbiArIDEgPD0gbWF4Y291bnQgPD0gUFlfU1NJWkVfVF9NQVguICovCisgICAgICAgIGNvdW50ID0gc2VsZl9sZW4gKyAxOworICAgIH0KIAogICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwogICAgIC8qICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47ICovCi0gICAgcHJvZHVjdCA9IGNvdW50ICogdG9fbGVuOwotICAgIGlmIChwcm9kdWN0IC8gdG9fbGVuICE9IGNvdW50KSB7CisgICAgYXNzZXJ0KGNvdW50ID4gMCk7CisgICAgaWYgKHRvX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7CisgICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHByb2R1Y3QgKyBzZWxmX2xlbjsKLSAgICBpZiAocmVzdWx0X2xlbiA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCisgICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47CiAgICAgaWYgKCEgKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQogICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpICkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xODI0LDcgKzE4NDQsNyBAQAogICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwogICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKICAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIHByb2R1Y3Q7CisgICAgUHlfc3NpemVfdCBjb3VudDsKICAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwogCiAgICAgc2VsZl9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpOwpAQCAtMTgzOCwxNiArMTg1OCwxMiBAQAogCiAgICAgLyogdXNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY3VycmVudCBhbmQgbmV3LCBoZW5jZSB0aGUgIi0xIiAqLwogICAgIC8qICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLTEpICAqLwotICAgIHByb2R1Y3QgPSBjb3VudCAqICh0b19sZW4tMSk7Ci0gICAgaWYgKHByb2R1Y3QgLyAodG9fbGVuLTEpICE9IGNvdW50KSB7CisgICAgYXNzZXJ0KGNvdW50ID4gMCk7CisgICAgaWYgKHRvX2xlbiAtIDEgPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIHByb2R1Y3Q7Ci0gICAgaWYgKHJlc3VsdF9sZW4gPCAwKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2UgYnl0ZXMgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSAxKTsKIAogICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQogICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQpAQCAtMTg5MSw3ICsxOTA3LDcgQEAKICAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKICAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7CiAgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQsIHByb2R1Y3Q7CisgICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwogICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7CiAKICAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7CkBAIC0xOTA4LDE2ICsxOTI0LDEyIEBACiAKICAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KICAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCi0gICAgcHJvZHVjdCA9IGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbik7Ci0gICAgaWYgKHByb2R1Y3QgLyAodG9fbGVuLWZyb21fbGVuKSAhPSBjb3VudCkgeworICAgIGFzc2VydChjb3VudCA+IDApOworICAgIGlmICh0b19sZW4gLSBmcm9tX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBieXRlcyBpcyB0b28gbG9uZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgcHJvZHVjdDsKLSAgICBpZiAocmVzdWx0X2xlbiA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJyZXBsYWNlIGJ5dGVzIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSBmcm9tX2xlbik7CiAKICAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKICAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKQEAgLTIxMDcsNyArMjExOSw3IEBACiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzZXAsICpyZXN1bHQ7CiAKLSAgICBieXRlc2VwID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChzZXBfb2JqKTsKKyAgICBieXRlc2VwID0gX1B5Qnl0ZUFycmF5X0Zyb21CdWZmZXJPYmplY3Qoc2VwX29iaik7CiAgICAgaWYgKCEgYnl0ZXNlcCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTIxMzUsNyArMjE0Nyw3IEBACiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzZXAsICpyZXN1bHQ7CiAKLSAgICBieXRlc2VwID0gUHlCeXRlQXJyYXlfRnJvbU9iamVjdChzZXBfb2JqKTsKKyAgICBieXRlc2VwID0gX1B5Qnl0ZUFycmF5X0Zyb21CdWZmZXJPYmplY3Qoc2VwX29iaik7CiAgICAgaWYgKCEgYnl0ZXNlcCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNvYmplY3QuYyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmE5MGFhCi0tLSAvZGV2L251bGwKKysrIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCkBAIC0wLDAgKzEsMzQzMiBAQAorLyogYnl0ZXMgb2JqZWN0IGltcGxlbWVudGF0aW9uICovCisKKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorCisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwvbWVtLmgiCisjaW5jbHVkZSAiaW50ZXJuYWwvcHlzdGF0ZS5oIgorCisjaW5jbHVkZSAiYnl0ZXNfbWV0aG9kcy5oIgorI2luY2x1ZGUgInB5c3RyaGV4LmgiCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKy8qW2NsaW5pYyBpbnB1dF0KK2NsYXNzIGJ5dGVzICJQeUJ5dGVzT2JqZWN0ICoiICImUHlCeXRlc19UeXBlIgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9N2EyMzhmOTY1ZDY0ODkyYl0qLworCisjaW5jbHVkZSAiY2xpbmljL2J5dGVzb2JqZWN0LmMuaCIKKworI2lmZGVmIENPVU5UX0FMTE9DUworUHlfc3NpemVfdCBudWxsX3N0cmluZ3MsIG9uZV9zdHJpbmdzOworI2VuZGlmCisKK3N0YXRpYyBQeUJ5dGVzT2JqZWN0ICpjaGFyYWN0ZXJzW1VDSEFSX01BWCArIDFdOworc3RhdGljIFB5Qnl0ZXNPYmplY3QgKm51bGxzdHJpbmc7CisKKy8qIFB5Qnl0ZXNPYmplY3RfU0laRSBnaXZlcyB0aGUgYmFzaWMgc2l6ZSBvZiBhIHN0cmluZzsgYW55IG1lbW9yeSBhbGxvY2F0aW9uCisgICBmb3IgYSBzdHJpbmcgb2YgbGVuZ3RoIG4gc2hvdWxkIHJlcXVlc3QgUHlCeXRlc09iamVjdF9TSVpFICsgbiBieXRlcy4KKworICAgVXNpbmcgUHlCeXRlc09iamVjdF9TSVpFIGluc3RlYWQgb2Ygc2l6ZW9mKFB5Qnl0ZXNPYmplY3QpIHNhdmVzCisgICAzIGJ5dGVzIHBlciBzdHJpbmcgYWxsb2NhdGlvbiBvbiBhIHR5cGljYWwgc3lzdGVtLgorKi8KKyNkZWZpbmUgUHlCeXRlc09iamVjdF9TSVpFIChvZmZzZXRvZihQeUJ5dGVzT2JqZWN0LCBvYl9zdmFsKSArIDEpCisKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KSBfUHlCeXRlc1dyaXRlcl9HZXRTaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpzdHIpOworCisvKgorICAgRm9yIFB5Qnl0ZXNfRnJvbVN0cmluZygpLCB0aGUgcGFyYW1ldGVyIGBzdHInIHBvaW50cyB0byBhIG51bGwtdGVybWluYXRlZAorICAgc3RyaW5nIGNvbnRhaW5pbmcgZXhhY3RseSBgc2l6ZScgYnl0ZXMuCisKKyAgIEZvciBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCksIHRoZSBwYXJhbWV0ZXIgYHN0cicgaXMKKyAgIGVpdGhlciBOVUxMIG9yIGVsc2UgcG9pbnRzIHRvIGEgc3RyaW5nIGNvbnRhaW5pbmcgYXQgbGVhc3QgYHNpemUnIGJ5dGVzLgorICAgRm9yIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKSwgdGhlIHN0cmluZyBpbiB0aGUgYHN0cicgcGFyYW1ldGVyIGRvZXMKKyAgIG5vdCBoYXZlIHRvIGJlIG51bGwtdGVybWluYXRlZC4gIChUaGVyZWZvcmUgaXQgaXMgc2FmZSB0byBjb25zdHJ1Y3QgYQorICAgc3Vic3RyaW5nIGJ5IGNhbGxpbmcgYFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUob3JpZ3N0cmluZywgc3Vic3RybGVuKScuKQorICAgSWYgYHN0cicgaXMgTlVMTCB0aGVuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKSB3aWxsIGFsbG9jYXRlIGBzaXplKzEnCisgICBieXRlcyAoc2V0dGluZyB0aGUgbGFzdCBieXRlIHRvIHRoZSBudWxsIHRlcm1pbmF0aW5nIGNoYXJhY3RlcikgYW5kIHlvdSBjYW4KKyAgIGZpbGwgaW4gdGhlIGRhdGEgeW91cnNlbGYuICBJZiBgc3RyJyBpcyBub24tTlVMTCB0aGVuIHRoZSByZXN1bHRpbmcKKyAgIFB5Qnl0ZXMgb2JqZWN0IG11c3QgYmUgdHJlYXRlZCBhcyBpbW11dGFibGUgYW5kIHlvdSBtdXN0IG5vdCBmaWxsIGluIG5vcgorICAgYWx0ZXIgdGhlIGRhdGEgeW91cnNlbGYsIHNpbmNlIHRoZSBzdHJpbmdzIG1heSBiZSBzaGFyZWQuCisKKyAgIFRoZSBQeU9iamVjdCBtZW1iZXIgYG9wLT5vYl9zaXplJywgd2hpY2ggZGVub3RlcyB0aGUgbnVtYmVyIG9mICJleHRyYQorICAgaXRlbXMiIGluIGEgdmFyaWFibGUtc2l6ZSBvYmplY3QsIHdpbGwgY29udGFpbiB0aGUgbnVtYmVyIG9mIGJ5dGVzCisgICBhbGxvY2F0ZWQgZm9yIHN0cmluZyBkYXRhLCBub3QgY291bnRpbmcgdGhlIG51bGwgdGVybWluYXRpbmcgY2hhcmFjdGVyLgorICAgSXQgaXMgdGhlcmVmb3JlIGVxdWFsIHRvIHRoZSBgc2l6ZScgcGFyYW1ldGVyIChmb3IKKyAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKSkgb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nIGluIHRoZSBgc3RyJworICAgcGFyYW1ldGVyIChmb3IgUHlCeXRlc19Gcm9tU3RyaW5nKCkpLgorKi8KK3N0YXRpYyBQeU9iamVjdCAqCitfUHlCeXRlc19Gcm9tU2l6ZShQeV9zc2l6ZV90IHNpemUsIGludCB1c2VfY2FsbG9jKQoreworICAgIFB5Qnl0ZXNPYmplY3QgKm9wOworICAgIGFzc2VydChzaXplID49IDApOworCisgICAgaWYgKHNpemUgPT0gMCAmJiAob3AgPSBudWxsc3RyaW5nKSAhPSBOVUxMKSB7CisjaWZkZWYgQ09VTlRfQUxMT0NTCisgICAgICAgIG51bGxfc3RyaW5ncysrOworI2VuZGlmCisgICAgICAgIFB5X0lOQ1JFRihvcCk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilvcDsKKyAgICB9CisKKyAgICBpZiAoKHNpemVfdClzaXplID4gKHNpemVfdClQWV9TU0laRV9UX01BWCAtIFB5Qnl0ZXNPYmplY3RfU0laRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJieXRlIHN0cmluZyBpcyB0b28gbGFyZ2UiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogSW5saW5lIFB5T2JqZWN0X05ld1ZhciAqLworICAgIGlmICh1c2VfY2FsbG9jKQorICAgICAgICBvcCA9IChQeUJ5dGVzT2JqZWN0ICopUHlPYmplY3RfQ2FsbG9jKDEsIFB5Qnl0ZXNPYmplY3RfU0laRSArIHNpemUpOworICAgIGVsc2UKKyAgICAgICAgb3AgPSAoUHlCeXRlc09iamVjdCAqKVB5T2JqZWN0X01hbGxvYyhQeUJ5dGVzT2JqZWN0X1NJWkUgKyBzaXplKTsKKyAgICBpZiAob3AgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CisgICAgKHZvaWQpUHlPYmplY3RfSU5JVF9WQVIob3AsICZQeUJ5dGVzX1R5cGUsIHNpemUpOworICAgIG9wLT5vYl9zaGFzaCA9IC0xOworICAgIGlmICghdXNlX2NhbGxvYykKKyAgICAgICAgb3AtPm9iX3N2YWxbc2l6ZV0gPSAnXDAnOworICAgIC8qIGVtcHR5IGJ5dGUgc3RyaW5nIHNpbmdsZXRvbiAqLworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgbnVsbHN0cmluZyA9IG9wOworICAgICAgICBQeV9JTkNSRUYob3ApOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOworfQorCitQeU9iamVjdCAqCitQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5Qnl0ZXNPYmplY3QgKm9wOworICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAiTmVnYXRpdmUgc2l6ZSBwYXNzZWQgdG8gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNpemUgPT0gMSAmJiBzdHIgIT0gTlVMTCAmJgorICAgICAgICAob3AgPSBjaGFyYWN0ZXJzWypzdHIgJiBVQ0hBUl9NQVhdKSAhPSBOVUxMKQorICAgIHsKKyNpZmRlZiBDT1VOVF9BTExPQ1MKKyAgICAgICAgb25lX3N0cmluZ3MrKzsKKyNlbmRpZgorICAgICAgICBQeV9JTkNSRUYob3ApOworICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopb3A7CisgICAgfQorCisgICAgb3AgPSAoUHlCeXRlc09iamVjdCAqKV9QeUJ5dGVzX0Zyb21TaXplKHNpemUsIDApOworICAgIGlmIChvcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgb3A7CisKKyAgICBtZW1jcHkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSk7CisgICAgLyogc2hhcmUgc2hvcnQgc3RyaW5ncyAqLworICAgIGlmIChzaXplID09IDEpIHsKKyAgICAgICAgY2hhcmFjdGVyc1sqc3RyICYgVUNIQVJfTUFYXSA9IG9wOworICAgICAgICBQeV9JTkNSRUYob3ApOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOworfQorCitQeU9iamVjdCAqCitQeUJ5dGVzX0Zyb21TdHJpbmcoY29uc3QgY2hhciAqc3RyKQoreworICAgIHNpemVfdCBzaXplOworICAgIFB5Qnl0ZXNPYmplY3QgKm9wOworCisgICAgYXNzZXJ0KHN0ciAhPSBOVUxMKTsKKyAgICBzaXplID0gc3RybGVuKHN0cik7CisgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAtIFB5Qnl0ZXNPYmplY3RfU0laRSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICJieXRlIHN0cmluZyBpcyB0b28gbG9uZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKHNpemUgPT0gMCAmJiAob3AgPSBudWxsc3RyaW5nKSAhPSBOVUxMKSB7CisjaWZkZWYgQ09VTlRfQUxMT0NTCisgICAgICAgIG51bGxfc3RyaW5ncysrOworI2VuZGlmCisgICAgICAgIFB5X0lOQ1JFRihvcCk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilvcDsKKyAgICB9CisgICAgaWYgKHNpemUgPT0gMSAmJiAob3AgPSBjaGFyYWN0ZXJzWypzdHIgJiBVQ0hBUl9NQVhdKSAhPSBOVUxMKSB7CisjaWZkZWYgQ09VTlRfQUxMT0NTCisgICAgICAgIG9uZV9zdHJpbmdzKys7CisjZW5kaWYKKyAgICAgICAgUHlfSU5DUkVGKG9wKTsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKW9wOworICAgIH0KKworICAgIC8qIElubGluZSBQeU9iamVjdF9OZXdWYXIgKi8KKyAgICBvcCA9IChQeUJ5dGVzT2JqZWN0ICopUHlPYmplY3RfTUFMTE9DKFB5Qnl0ZXNPYmplY3RfU0laRSArIHNpemUpOworICAgIGlmIChvcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAodm9pZClQeU9iamVjdF9JTklUX1ZBUihvcCwgJlB5Qnl0ZXNfVHlwZSwgc2l6ZSk7CisgICAgb3AtPm9iX3NoYXNoID0gLTE7CisgICAgbWVtY3B5KG9wLT5vYl9zdmFsLCBzdHIsIHNpemUrMSk7CisgICAgLyogc2hhcmUgc2hvcnQgc3RyaW5ncyAqLworICAgIGlmIChzaXplID09IDApIHsKKyAgICAgICAgbnVsbHN0cmluZyA9IG9wOworICAgICAgICBQeV9JTkNSRUYob3ApOworICAgIH0gZWxzZSBpZiAoc2l6ZSA9PSAxKSB7CisgICAgICAgIGNoYXJhY3RlcnNbKnN0ciAmIFVDSEFSX01BWF0gPSBvcDsKKyAgICAgICAgUHlfSU5DUkVGKG9wKTsKKyAgICB9CisgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKK30KKworUHlPYmplY3QgKgorUHlCeXRlc19Gcm9tRm9ybWF0Vihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmFyZ3MpCit7CisgICAgY2hhciAqczsKKyAgICBjb25zdCBjaGFyICpmOworICAgIGNvbnN0IGNoYXIgKnA7CisgICAgUHlfc3NpemVfdCBwcmVjOworICAgIGludCBsb25nZmxhZzsKKyAgICBpbnQgc2l6ZV90ZmxhZzsKKyAgICAvKiBMb25nZXN0IDY0LWJpdCBmb3JtYXR0ZWQgbnVtYmVyczoKKyAgICAgICAtICIxODQ0Njc0NDA3MzcwOTU1MTYxNVwwIiAoMjEgYnl0ZXMpCisgICAgICAgLSAiLTkyMjMzNzIwMzY4NTQ3NzU4MDhcMCIgKDIxIGJ5dGVzKQorICAgICAgIERlY2ltYWwgdGFrZXMgdGhlIG1vc3Qgc3BhY2UgKGl0IGlzbid0IGVub3VnaCBmb3Igb2N0YWwuKQorCisgICAgICAgTG9uZ2VzdCA2NC1iaXQgcG9pbnRlciByZXByZXNlbnRhdGlvbjoKKyAgICAgICAiMHhmZmZmZmZmZmZmZmZmZmZmXDAiICgxOSBieXRlcykuICovCisgICAgY2hhciBidWZmZXJbMjFdOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisKKyAgICBzID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc3RybGVuKGZvcm1hdCkpOworICAgIGlmIChzID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOworCisjZGVmaW5lIFdSSVRFX0JZVEVTKHN0cikgXAorICAgIGRvIHsgXAorICAgICAgICBzID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzLCAoc3RyKSwgc3RybGVuKHN0cikpOyBcCisgICAgICAgIGlmIChzID09IE5VTEwpIFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7IFwKKyAgICB9IHdoaWxlICgwKQorCisgICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7CisgICAgICAgIGlmICgqZiAhPSAnJScpIHsKKyAgICAgICAgICAgICpzKysgPSAqZjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcCA9IGYrKzsKKworICAgICAgICAvKiBpZ25vcmUgdGhlIHdpZHRoIChleDogMTAgaW4gIiUxMHMiKSAqLworICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgqZikpCisgICAgICAgICAgICBmKys7CisKKyAgICAgICAgLyogcGFyc2UgdGhlIHByZWNpc2lvbiAoZXg6IDEwIGluICIlLjEwcyIpICovCisgICAgICAgIHByZWMgPSAwOworICAgICAgICBpZiAoKmYgPT0gJy4nKSB7CisgICAgICAgICAgICBmKys7CisgICAgICAgICAgICBmb3IgKDsgUHlfSVNESUdJVCgqZik7IGYrKykgeworICAgICAgICAgICAgICAgIHByZWMgPSAocHJlYyAqIDEwKSArICgqZiAtICcwJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoKmYgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCpmKSkKKyAgICAgICAgICAgIGYrKzsKKworICAgICAgICAvKiBoYW5kbGUgdGhlIGxvbmcgZmxhZyAoJ2wnKSwgYnV0IG9ubHkgZm9yICVsZCBhbmQgJWx1LgorICAgICAgICAgICBvdGhlcnMgY2FuIGJlIGFkZGVkIHdoZW4gbmVjZXNzYXJ5LiAqLworICAgICAgICBsb25nZmxhZyA9IDA7CisgICAgICAgIGlmICgqZiA9PSAnbCcgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgeworICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOworICAgICAgICAgICAgKytmOworICAgICAgICB9CisKKyAgICAgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZyAoJ3onKS4gKi8KKyAgICAgICAgc2l6ZV90ZmxhZyA9IDA7CisgICAgICAgIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgeworICAgICAgICAgICAgc2l6ZV90ZmxhZyA9IDE7CisgICAgICAgICAgICArK2Y7CisgICAgICAgIH0KKworICAgICAgICAvKiBzdWJ0cmFjdCBieXRlcyBwcmVhbGxvY2F0ZWQgZm9yIHRoZSBmb3JtYXQgc3RyaW5nCisgICAgICAgICAgIChleDogMiBmb3IgIiVzIikgKi8KKyAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IChmIC0gcCArIDEpOworCisgICAgICAgIHN3aXRjaCAoKmYpIHsKKyAgICAgICAgY2FzZSAnYyc6CisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBjID0gdmFfYXJnKHZhcmdzLCBpbnQpOworICAgICAgICAgICAgaWYgKGMgPCAwIHx8IGMgPiAyNTUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5Qnl0ZXNfRnJvbUZvcm1hdFYoKTogJWMgZm9ybWF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdHMgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMjU1XSIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3cml0ZXIubWluX3NpemUrKzsKKyAgICAgICAgICAgICpzKysgPSAodW5zaWduZWQgY2hhciljOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsZCIsIHZhX2FyZyh2YXJncywgbG9uZykpOworICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIFB5X3NzaXplX3QpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVkIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsdSIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgdW5zaWduZWQgbG9uZykpOworICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgInUiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHNpemVfdCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJXUiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlaSIsIHZhX2FyZyh2YXJncywgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiV4IiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgeworICAgICAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgICAgICBwID0gdmFfYXJnKHZhcmdzLCBjb25zdCBjaGFyKik7CisgICAgICAgICAgICBpID0gc3RybGVuKHApOworICAgICAgICAgICAgaWYgKHByZWMgPiAwICYmIGkgPiBwcmVjKQorICAgICAgICAgICAgICAgIGkgPSBwcmVjOworICAgICAgICAgICAgcyA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoJndyaXRlciwgcywgcCwgaSk7CisgICAgICAgICAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgJ3AnOgorICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlcCIsIHZhX2FyZyh2YXJncywgdm9pZCopKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIC8qICVwIGlzIGlsbC1kZWZpbmVkOiAgZW5zdXJlIGxlYWRpbmcgMHguICovCisgICAgICAgICAgICBpZiAoYnVmZmVyWzFdID09ICdYJykKKyAgICAgICAgICAgICAgICBidWZmZXJbMV0gPSAneCc7CisgICAgICAgICAgICBlbHNlIGlmIChidWZmZXJbMV0gIT0gJ3gnKSB7CisgICAgICAgICAgICAgICAgbWVtbW92ZShidWZmZXIrMiwgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSsxKTsKKyAgICAgICAgICAgICAgICBidWZmZXJbMF0gPSAnMCc7CisgICAgICAgICAgICAgICAgYnVmZmVyWzFdID0gJ3gnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplKys7CisgICAgICAgICAgICAqcysrID0gJyUnOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICgqZiA9PSAwKSB7CisgICAgICAgICAgICAgICAgLyogZml4IG1pbl9zaXplIGlmIHdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgZm9ybWF0IHN0cmluZyAqLworICAgICAgICAgICAgICAgIHdyaXRlci5taW5fc2l6ZSsrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBpbnZhbGlkIGZvcm1hdCBzdHJpbmc6IGNvcHkgdW5mb3JtYXR0ZWQgc3RyaW5nIGFuZCBleGl0ICovCisgICAgICAgICAgICBXUklURV9CWVRFUyhwKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcyk7CisgICAgICAgIH0KKyAgICB9CisKKyN1bmRlZiBXUklURV9CWVRFUworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzKTsKKworIGVycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0ICoKK1B5Qnl0ZXNfRnJvbUZvcm1hdChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgICBQeU9iamVjdCogcmV0OworICAgIHZhX2xpc3QgdmFyZ3M7CisKKyNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCisgICAgdmFfc3RhcnQodmFyZ3MsIGZvcm1hdCk7CisjZWxzZQorICAgIHZhX3N0YXJ0KHZhcmdzKTsKKyNlbmRpZgorICAgIHJldCA9IFB5Qnl0ZXNfRnJvbUZvcm1hdFYoZm9ybWF0LCB2YXJncyk7CisgICAgdmFfZW5kKHZhcmdzKTsKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBIZWxwZXJzIGZvciBmb3JtYXRzdHJpbmcgKi8KKworUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitnZXRuZXh0YXJnKFB5T2JqZWN0ICphcmdzLCBQeV9zc2l6ZV90IGFyZ2xlbiwgUHlfc3NpemVfdCAqcF9hcmdpZHgpCit7CisgICAgUHlfc3NpemVfdCBhcmdpZHggPSAqcF9hcmdpZHg7CisgICAgaWYgKGFyZ2lkeCA8IGFyZ2xlbikgeworICAgICAgICAoKnBfYXJnaWR4KSsrOworICAgICAgICBpZiAoYXJnbGVuIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBhcmdzOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gUHlUdXBsZV9HZXRJdGVtKGFyZ3MsIGFyZ2lkeCk7CisgICAgfQorICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICJub3QgZW5vdWdoIGFyZ3VtZW50cyBmb3IgZm9ybWF0IHN0cmluZyIpOworICAgIHJldHVybiBOVUxMOworfQorCisvKiBGb3JtYXQgY29kZXMKKyAqIEZfTEpVU1QgICAgICAnLScKKyAqIEZfU0lHTiAgICAgICAnKycKKyAqIEZfQkxBTksgICAgICAnICcKKyAqIEZfQUxUICAgICAgICAnIycKKyAqIEZfWkVSTyAgICAgICAnMCcKKyAqLworI2RlZmluZSBGX0xKVVNUICgxPDwwKQorI2RlZmluZSBGX1NJR04gICgxPDwxKQorI2RlZmluZSBGX0JMQU5LICgxPDwyKQorI2RlZmluZSBGX0FMVCAgICgxPDwzKQorI2RlZmluZSBGX1pFUk8gICgxPDw0KQorCisvKiBSZXR1cm5zIGEgbmV3IHJlZmVyZW5jZSB0byBhIFB5Qnl0ZXMgb2JqZWN0LCBvciBOVUxMIG9uIGZhaWx1cmUuICovCisKK3N0YXRpYyBjaGFyKgorZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlLAorICAgICAgICAgICAgUHlPYmplY3QgKipwX3Jlc3VsdCwgX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyKQoreworICAgIGNoYXIgKnA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBkb3VibGUgeDsKKyAgICBzaXplX3QgbGVuOworCisgICAgeCA9IFB5RmxvYXRfQXNEb3VibGUodik7CisgICAgaWYgKHggPT0gLTEuMCAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJmbG9hdCBhcmd1bWVudCByZXF1aXJlZCwgIgorICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjIwMHMiLCBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKHByZWMgPCAwKQorICAgICAgICBwcmVjID0gNjsKKworICAgIHAgPSBQeU9TX2RvdWJsZV90b19zdHJpbmcoeCwgdHlwZSwgcHJlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmbGFncyAmIEZfQUxUKSA/IFB5X0RUU0ZfQUxUIDogMCwgTlVMTCk7CisKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGxlbiA9IHN0cmxlbihwKTsKKyAgICBpZiAod3JpdGVyICE9IE5VTEwpIHsKKyAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN0ciwgbGVuKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG1lbWNweShzdHIsIHAsIGxlbik7CisgICAgICAgIFB5TWVtX0ZyZWUocCk7CisgICAgICAgIHN0ciArPSBsZW47CisgICAgICAgIHJldHVybiBzdHI7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwLCBsZW4pOworICAgIFB5TWVtX0ZyZWUocCk7CisgICAgKnBfcmVzdWx0ID0gcmVzdWx0OworICAgIHJldHVybiBzdHI7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitmb3JtYXRsb25nKFB5T2JqZWN0ICp2LCBpbnQgZmxhZ3MsIGludCBwcmVjLCBpbnQgdHlwZSkKK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0LCAqaW9iajsKKyAgICBpZiAodHlwZSA9PSAnaScpCisgICAgICAgIHR5cGUgPSAnZCc7CisgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkKKyAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfRm9ybWF0TG9uZyh2LCBmbGFncyAmIEZfQUxULCBwcmVjLCB0eXBlKTsKKyAgICBpZiAoUHlOdW1iZXJfQ2hlY2sodikpIHsKKyAgICAgICAgLyogbWFrZSBzdXJlIG51bWJlciBpcyBhIHR5cGUgb2YgaW50ZWdlciBmb3IgbywgeCwgYW5kIFggKi8KKyAgICAgICAgaWYgKHR5cGUgPT0gJ28nIHx8IHR5cGUgPT0gJ3gnIHx8IHR5cGUgPT0gJ1gnKQorICAgICAgICAgICAgaW9iaiA9IFB5TnVtYmVyX0luZGV4KHYpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfTG9uZyh2KTsKKyAgICAgICAgaWYgKGlvYmogPT0gTlVMTCkgeworICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1R5cGVFcnJvcikpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoIVB5TG9uZ19DaGVjayhpb2JqKSkKKyAgICAgICAgICAgIFB5X0NMRUFSKGlvYmopOworICAgICAgICBpZiAoaW9iaiAhPSBOVUxMKSB7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlVbmljb2RlX0Zvcm1hdExvbmcoaW9iaiwgZmxhZ3MgJiBGX0FMVCwgcHJlYywgdHlwZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoaW9iaik7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgfQorICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICIlJSVjIGZvcm1hdDogJXMgaXMgcmVxdWlyZWQsIG5vdCAlLjIwMHMiLCB0eXBlLAorICAgICAgICAodHlwZSA9PSAnbycgfHwgdHlwZSA9PSAneCcgfHwgdHlwZSA9PSAnWCcpID8gImFuIGludGVnZXIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiYSBudW1iZXIiLAorICAgICAgICBQeV9UWVBFKHYpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGludAorYnl0ZV9jb252ZXJ0ZXIoUHlPYmplY3QgKmFyZywgY2hhciAqcCkKK3sKKyAgICBpZiAoUHlCeXRlc19DaGVjayhhcmcpICYmIFB5Qnl0ZXNfR0VUX1NJWkUoYXJnKSA9PSAxKSB7CisgICAgICAgICpwID0gUHlCeXRlc19BU19TVFJJTkcoYXJnKVswXTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKGFyZykgJiYgUHlCeXRlQXJyYXlfR0VUX1NJWkUoYXJnKSA9PSAxKSB7CisgICAgICAgICpwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGFyZylbMF07CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKmlvYmo7CisgICAgICAgIGxvbmcgaXZhbDsKKyAgICAgICAgaW50IG92ZXJmbG93OworICAgICAgICAvKiBtYWtlIHN1cmUgbnVtYmVyIGlzIGEgdHlwZSBvZiBpbnRlZ2VyICovCisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2soYXJnKSkgeworICAgICAgICAgICAgaXZhbCA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhhcmcsICZvdmVyZmxvdyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpb2JqID0gUHlOdW1iZXJfSW5kZXgoYXJnKTsKKyAgICAgICAgICAgIGlmIChpb2JqID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVHlwZUVycm9yKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaXZhbCA9IFB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdyhpb2JqLCAmb3ZlcmZsb3cpOworICAgICAgICAgICAgUHlfREVDUkVGKGlvYmopOworICAgICAgICB9CisgICAgICAgIGlmICghb3ZlcmZsb3cgJiYgaXZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAob3ZlcmZsb3cgfHwgISgwIDw9IGl2YWwgJiYgaXZhbCA8PSAyNTUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJWMgYXJnIG5vdCBpbiByYW5nZSgyNTYpIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICAqcCA9IChjaGFyKWl2YWw7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgb25FcnJvcjoKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAiJWMgcmVxdWlyZXMgYW4gaW50ZWdlciBpbiByYW5nZSgyNTYpIG9yIGEgc2luZ2xlIGJ5dGUiKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICpfUHlCeXRlc19Gcm9tQnVmZmVyKFB5T2JqZWN0ICp4KTsKKworc3RhdGljIFB5T2JqZWN0ICoKK2Zvcm1hdF9vYmooUHlPYmplY3QgKnYsIGNvbnN0IGNoYXIgKipwYnVmLCBQeV9zc2l6ZV90ICpwbGVuKQoreworICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzdWx0OworICAgIF9QeV9JREVOVElGSUVSKF9fYnl0ZXNfXyk7CisgICAgLyogaXMgaXQgYSBieXRlcyBvYmplY3Q/ICovCisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodikpIHsKKyAgICAgICAgKnBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyh2KTsKKyAgICAgICAgKnBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHYpOworICAgICAgICBQeV9JTkNSRUYodik7CisgICAgICAgIHJldHVybiB2OworICAgIH0KKyAgICBpZiAoUHlCeXRlQXJyYXlfQ2hlY2sodikpIHsKKyAgICAgICAgKnBidWYgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcodik7CisgICAgICAgICpwbGVuID0gUHlCeXRlQXJyYXlfR0VUX1NJWkUodik7CisgICAgICAgIFB5X0lOQ1JFRih2KTsKKyAgICAgICAgcmV0dXJuIHY7CisgICAgfQorICAgIC8qIGRvZXMgaXQgc3VwcG9ydCBfX2J5dGVzX18/ICovCisgICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHYsICZQeUlkX19fYnl0ZXNfXyk7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2socmVzdWx0KSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiX19ieXRlc19fIHJldHVybmVkIG5vbi1ieXRlcyAodHlwZSAlLjIwMHMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHJlc3VsdCktPnRwX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICAqcGJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7CisgICAgICAgICpwbGVuID0gUHlCeXRlc19HRVRfU0laRShyZXN1bHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICAvKiBkb2VzIGl0IHN1cHBvcnQgYnVmZmVyIHByb3RvY29sPyAqLworICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih2KSkgeworICAgICAgICAvKiBtYXliZSB3ZSBjYW4gYXZvaWQgbWFraW5nIGEgY29weSBvZiB0aGUgYnVmZmVyIG9iamVjdCBoZXJlPyAqLworICAgICAgICByZXN1bHQgPSBfUHlCeXRlc19Gcm9tQnVmZmVyKHYpOworICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgKnBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICAqcGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUocmVzdWx0KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIiUlYiByZXF1aXJlcyBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAiCisgICAgICAgICAgICAgICAgICJvciBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIF9fYnl0ZXNfXywgbm90ICclLjEwMHMnIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIGZtdCUodjEsdjIsLi4uKSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gc3ByaW50ZihmbXQsIHYxLCB2MiwgLi4uKSAqLworCitQeU9iamVjdCAqCitfUHlCeXRlc19Gb3JtYXRFeChjb25zdCBjaGFyICpmb3JtYXQsIFB5X3NzaXplX3QgZm9ybWF0X2xlbiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCBpbnQgdXNlX2J5dGVhcnJheSkKK3sKKyAgICBjb25zdCBjaGFyICpmbXQ7CisgICAgY2hhciAqcmVzOworICAgIFB5X3NzaXplX3QgYXJnbGVuLCBhcmdpZHg7CisgICAgUHlfc3NpemVfdCBmbXRjbnQ7CisgICAgaW50IGFyZ3Nfb3duZWQgPSAwOworICAgIFB5T2JqZWN0ICpkaWN0ID0gTlVMTDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZm10ID0gZm9ybWF0OworICAgIGZtdGNudCA9IGZvcm1hdF9sZW47CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHdyaXRlci51c2VfYnl0ZWFycmF5ID0gdXNlX2J5dGVhcnJheTsKKworICAgIHJlcyA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGZtdGNudCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoIXVzZV9ieXRlYXJyYXkpCisgICAgICAgIHdyaXRlci5vdmVyYWxsb2NhdGUgPSAxOworCisgICAgaWYgKFB5VHVwbGVfQ2hlY2soYXJncykpIHsKKyAgICAgICAgYXJnbGVuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKKyAgICAgICAgYXJnaWR4ID0gMDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFyZ2xlbiA9IC0xOworICAgICAgICBhcmdpZHggPSAtMjsKKyAgICB9CisgICAgaWYgKFB5X1RZUEUoYXJncyktPnRwX2FzX21hcHBpbmcgJiYgUHlfVFlQRShhcmdzKS0+dHBfYXNfbWFwcGluZy0+bXBfc3Vic2NyaXB0ICYmCisgICAgICAgICFQeVR1cGxlX0NoZWNrKGFyZ3MpICYmICFQeUJ5dGVzX0NoZWNrKGFyZ3MpICYmICFQeVVuaWNvZGVfQ2hlY2soYXJncykgJiYKKyAgICAgICAgIVB5Qnl0ZUFycmF5X0NoZWNrKGFyZ3MpKSB7CisgICAgICAgICAgICBkaWN0ID0gYXJnczsKKyAgICB9CisKKyAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgeworICAgICAgICBpZiAoKmZtdCAhPSAnJScpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuOworICAgICAgICAgICAgY2hhciAqcG9zOworCisgICAgICAgICAgICBwb3MgPSAoY2hhciAqKW1lbWNocihmbXQgKyAxLCAnJScsIGZtdGNudCk7CisgICAgICAgICAgICBpZiAocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgbGVuID0gcG9zIC0gZm10OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxlbiA9IGZtdGNudCArIDE7CisgICAgICAgICAgICBhc3NlcnQobGVuICE9IDApOworCisgICAgICAgICAgICBtZW1jcHkocmVzLCBmbXQsIGxlbik7CisgICAgICAgICAgICByZXMgKz0gbGVuOworICAgICAgICAgICAgZm10ICs9IGxlbjsKKyAgICAgICAgICAgIGZtdGNudCAtPSAobGVuIC0gMSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBHb3QgYSBmb3JtYXQgc3BlY2lmaWVyICovCisgICAgICAgICAgICBpbnQgZmxhZ3MgPSAwOworICAgICAgICAgICAgUHlfc3NpemVfdCB3aWR0aCA9IC0xOworICAgICAgICAgICAgaW50IHByZWMgPSAtMTsKKyAgICAgICAgICAgIGludCBjID0gJ1wwJzsKKyAgICAgICAgICAgIGludCBmaWxsOworICAgICAgICAgICAgUHlPYmplY3QgKnYgPSBOVUxMOworICAgICAgICAgICAgUHlPYmplY3QgKnRlbXAgPSBOVUxMOworICAgICAgICAgICAgY29uc3QgY2hhciAqcGJ1ZiA9IE5VTEw7CisgICAgICAgICAgICBpbnQgc2lnbjsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuID0gMDsKKyAgICAgICAgICAgIGNoYXIgb25lY2hhcjsgLyogRm9yIGJ5dGVfY29udmVydGVyKCkgKi8KKyAgICAgICAgICAgIFB5X3NzaXplX3QgYWxsb2M7CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIGNoYXIgKmJlZm9yZTsKKyNlbmRpZgorCisgICAgICAgICAgICBmbXQrKzsKKyAgICAgICAgICAgIGlmICgqZm10ID09ICclJykgeworICAgICAgICAgICAgICAgICpyZXMrKyA9ICclJzsKKyAgICAgICAgICAgICAgICBmbXQrKzsKKyAgICAgICAgICAgICAgICBmbXRjbnQtLTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgqZm10ID09ICcoJykgeworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmtleXN0YXJ0OworICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qga2V5bGVuOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CisgICAgICAgICAgICAgICAgaW50IHBjb3VudCA9IDE7CisKKyAgICAgICAgICAgICAgICBpZiAoZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgcmVxdWlyZXMgYSBtYXBwaW5nIik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICsrZm10OworICAgICAgICAgICAgICAgIC0tZm10Y250OworICAgICAgICAgICAgICAgIGtleXN0YXJ0ID0gZm10OworICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciBiYWxhbmNlZCBwYXJlbnRoZXNlcyAqLworICAgICAgICAgICAgICAgIHdoaWxlIChwY291bnQgPiAwICYmIC0tZm10Y250ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpmbXQgPT0gJyknKQorICAgICAgICAgICAgICAgICAgICAgICAgLS1wY291bnQ7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKCpmbXQgPT0gJygnKQorICAgICAgICAgICAgICAgICAgICAgICAgKytwY291bnQ7CisgICAgICAgICAgICAgICAgICAgIGZtdCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBrZXlsZW4gPSBmbXQgLSBrZXlzdGFydCAtIDE7CisgICAgICAgICAgICAgICAgaWYgKGZtdGNudCA8IDAgfHwgcGNvdW50ID4gMCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5jb21wbGV0ZSBmb3JtYXQga2V5Iik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGtleSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoa2V5c3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5bGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoa2V5ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgICAgICAgICBhcmdzX293bmVkID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYXJncyA9IFB5T2JqZWN0X0dldEl0ZW0oZGljdCwga2V5KTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFyZ3Nfb3duZWQgPSAxOworICAgICAgICAgICAgICAgIGFyZ2xlbiA9IC0xOworICAgICAgICAgICAgICAgIGFyZ2lkeCA9IC0yOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYXJzZSBmbGFncy4gRXhhbXBsZTogIiUraSIgPT4gZmxhZ3M9Rl9TSUdOLiAqLworICAgICAgICAgICAgd2hpbGUgKC0tZm10Y250ID49IDApIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGMgPSAqZm10KyspIHsKKyAgICAgICAgICAgICAgICBjYXNlICctJzogZmxhZ3MgfD0gRl9MSlVTVDsgY29udGludWU7CisgICAgICAgICAgICAgICAgY2FzZSAnKyc6IGZsYWdzIHw9IEZfU0lHTjsgY29udGludWU7CisgICAgICAgICAgICAgICAgY2FzZSAnICc6IGZsYWdzIHw9IEZfQkxBTks7IGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGNhc2UgJyMnOiBmbGFncyB8PSBGX0FMVDsgY29udGludWU7CisgICAgICAgICAgICAgICAgY2FzZSAnMCc6IGZsYWdzIHw9IEZfWkVSTzsgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYXJzZSB3aWR0aC4gRXhhbXBsZTogIiUxMHMiID0+IHdpZHRoPTEwICovCisgICAgICAgICAgICBpZiAoYyA9PSAnKicpIHsKKyAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOworICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodikpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqIHdhbnRzIGludCIpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aWR0aCA9IFB5TG9uZ19Bc1NzaXplX3Qodik7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBmbGFncyB8PSBGX0xKVVNUOworICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IC13aWR0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCisgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49IDAgJiYgaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgIHdpZHRoID0gYyAtICcwJzsKKyAgICAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBjID0gUHlfQ0hBUk1BU0soKmZtdCsrKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IChQWV9TU0laRV9UX01BWCAtICgoaW50KWMgLSAnMCcpKSAvIDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2lkdGggdG9vIGJpZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IHdpZHRoKjEwICsgKGMgLSAnMCcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFyc2UgcHJlY2lzaW9uLiBFeGFtcGxlOiAiJS4zZiIgPT4gcHJlYz0zICovCisgICAgICAgICAgICBpZiAoYyA9PSAnLicpIHsKKyAgICAgICAgICAgICAgICBwcmVjID0gMDsKKyAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgYyA9ICpmbXQrKzsKKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnKicpIHsKKyAgICAgICAgICAgICAgICAgICAgdiA9IGdldG5leHRhcmcoYXJncywgYXJnbGVuLCAmYXJnaWR4KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlMb25nX0NoZWNrKHYpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIqIHdhbnRzIGludCIpOworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcmVjID0gX1B5TG9uZ19Bc0ludCh2KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByZWMgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcmVjIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWMgPSAwOworICAgICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gMCAmJiBpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICAgICAgICAgIHByZWMgPSBjIC0gJzAnOworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCpmbXQrKyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWlzZGlnaXQoYykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJlYyA+IChJTlRfTUFYIC0gKChpbnQpYyAtICcwJykpIC8gMTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcmVjIHRvbyBiaWciKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlYyA9IHByZWMqMTAgKyAoYyAtICcwJyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IC8qIHByZWMgKi8KKyAgICAgICAgICAgIGlmIChmbXRjbnQgPj0gMCkgeworICAgICAgICAgICAgICAgIGlmIChjID09ICdoJyB8fCBjID09ICdsJyB8fCBjID09ICdMJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoLS1mbXRjbnQgPj0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSAqZm10Kys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGZtdGNudCA8IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluY29tcGxldGUgZm9ybWF0Iik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHYgPSBnZXRuZXh0YXJnKGFyZ3MsIGFyZ2xlbiwgJmFyZ2lkeCk7CisgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKSB7CisgICAgICAgICAgICAgICAgLyogbGFzdCB3cml0ZXI6IGRpc2FibGUgd3JpdGVyIG92ZXJhbGxvY2F0aW9uICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpZ24gPSAwOworICAgICAgICAgICAgZmlsbCA9ICcgJzsKKyAgICAgICAgICAgIHN3aXRjaCAoYykgeworICAgICAgICAgICAgY2FzZSAncic6CisgICAgICAgICAgICAgICAgLy8gJXIgaXMgb25seSBmb3IgMi8zIGNvZGU7IDMgb25seSBjb2RlIHNob3VsZCB1c2UgJWEKKyAgICAgICAgICAgIGNhc2UgJ2EnOgorICAgICAgICAgICAgICAgIHRlbXAgPSBQeU9iamVjdF9BU0NJSSh2KTsKKyAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfSVNfQVNDSUkodGVtcCkpOworICAgICAgICAgICAgICAgIHBidWYgPSAoY29uc3QgY2hhciAqKVB5VW5pY29kZV8xQllURV9EQVRBKHRlbXApOworICAgICAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHRlbXApOworICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKKyAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAgICAgLy8gJXMgaXMgb25seSBmb3IgMi8zIGNvZGU7IDMgb25seSBjb2RlIHNob3VsZCB1c2UgJWIKKyAgICAgICAgICAgIGNhc2UgJ2InOgorICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRfb2JqKHYsICZwYnVmLCAmbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKKyAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAnaSc6CisgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgY2FzZSAnbyc6CisgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2KQorICAgICAgICAgICAgICAgICAgICAmJiB3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgICAgICYmICEoZmxhZ3MgJiAoRl9TSUdOIHwgRl9CTEFOSykpCisgICAgICAgICAgICAgICAgICAgICYmIGMgIT0gJ1gnKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIGludCBhbHRlcm5hdGUgPSBmbGFncyAmIEZfQUxUOworICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTsKKworICAgICAgICAgICAgICAgICAgICBzd2l0Y2goYykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9VTlJFQUNIQUJMRSgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IDI7IC8qIHNpemUgcHJlYWxsb2NhdGVkIGZvciAiJWQiICovCisgICAgICAgICAgICAgICAgICAgIHJlcyA9IF9QeUxvbmdfRm9ybWF0Qnl0ZXNXcml0ZXIoJndyaXRlciwgcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsIGJhc2UsIGFsdGVybmF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRsb25nKHYsIGZsYWdzLCBwcmVjLCBjKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRlbXApCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9JU19BU0NJSSh0ZW1wKSk7CisgICAgICAgICAgICAgICAgcGJ1ZiA9IChjb25zdCBjaGFyICopUHlVbmljb2RlXzFCWVRFX0RBVEEodGVtcCk7CisgICAgICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodGVtcCk7CisgICAgICAgICAgICAgICAgc2lnbiA9IDE7CisgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRl9aRVJPKQorICAgICAgICAgICAgICAgICAgICBmaWxsID0gJzAnOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlICdlJzoKKyAgICAgICAgICAgIGNhc2UgJ0UnOgorICAgICAgICAgICAgY2FzZSAnZic6CisgICAgICAgICAgICBjYXNlICdGJzoKKyAgICAgICAgICAgIGNhc2UgJ2cnOgorICAgICAgICAgICAgY2FzZSAnRyc6CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xICYmIHByZWMgPT0gLTEKKyAgICAgICAgICAgICAgICAgICAgJiYgIShmbGFncyAmIChGX1NJR04gfCBGX0JMQU5LKSkpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IDI7IC8qIHNpemUgcHJlYWxsb2NhdGVkIGZvciAiJWYiICovCisgICAgICAgICAgICAgICAgICAgIHJlcyA9IGZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCBOVUxMLCAmd3JpdGVyLCByZXMpOworICAgICAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWZvcm1hdGZsb2F0KHYsIGZsYWdzLCBwcmVjLCBjLCAmdGVtcCwgTlVMTCwgcmVzKSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICBwYnVmID0gUHlCeXRlc19BU19TVFJJTkcodGVtcCk7CisgICAgICAgICAgICAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRSh0ZW1wKTsKKyAgICAgICAgICAgICAgICBzaWduID0gMTsKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGX1pFUk8pCisgICAgICAgICAgICAgICAgICAgIGZpbGwgPSAnMCc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgIHBidWYgPSAmb25lY2hhcjsKKyAgICAgICAgICAgICAgICBsZW4gPSBieXRlX2NvbnZlcnRlcih2LCAmb25lY2hhcik7CisgICAgICAgICAgICAgICAgaWYgKCFsZW4pCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBvbmVjaGFyOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgZm9ybWF0IGNoYXJhY3RlciAnJWMnICgweCV4KSAiCisgICAgICAgICAgICAgICAgICAiYXQgaW5kZXggJXpkIiwKKyAgICAgICAgICAgICAgICAgIGMsIGMsCisgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZm10IC0gMSAtIGZvcm1hdCkpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChzaWduKSB7CisgICAgICAgICAgICAgICAgaWYgKCpwYnVmID09ICctJyB8fCAqcGJ1ZiA9PSAnKycpIHsKKyAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgICAgIGxlbi0tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfU0lHTikKKyAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICcrJzsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChmbGFncyAmIEZfQkxBTkspCisgICAgICAgICAgICAgICAgICAgIHNpZ24gPSAnICc7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBzaWduID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3aWR0aCA8IGxlbikKKyAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKKworICAgICAgICAgICAgYWxsb2MgPSB3aWR0aDsKKyAgICAgICAgICAgIGlmIChzaWduICE9IDAgJiYgbGVuID09IHdpZHRoKQorICAgICAgICAgICAgICAgIGFsbG9jKys7CisgICAgICAgICAgICAvKiAyOiBzaXplIHByZWFsbG9jYXRlZCBmb3IgJXMgKi8KKyAgICAgICAgICAgIGlmIChhbGxvYyA+IDIpIHsKKyAgICAgICAgICAgICAgICByZXMgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHJlcywgYWxsb2MgLSAyKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIGJlZm9yZSA9IHJlczsKKyNlbmRpZgorCisgICAgICAgICAgICAvKiBXcml0ZSB0aGUgc2lnbiBpZiBuZWVkZWQgKi8KKyAgICAgICAgICAgIGlmIChzaWduKSB7CisgICAgICAgICAgICAgICAgaWYgKGZpbGwgIT0gJyAnKQorICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBzaWduOworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikKKyAgICAgICAgICAgICAgICAgICAgd2lkdGgtLTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogV3JpdGUgdGhlIG51bWVyaWMgcHJlZml4IGZvciAieCIsICJYIiBhbmQgIm8iIGZvcm1hdHMKKyAgICAgICAgICAgICAgIGlmIHRoZSBhbHRlcm5hdGUgZm9ybSBpcyB1c2VkLgorICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHdyaXRlICIweCIgZm9yIHRoZSAiJSN4IiBmb3JtYXQuICovCisgICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICdvJyB8fCBjID09ICd4JyB8fCBjID09ICdYJykpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlswXSA9PSAnMCcpOworICAgICAgICAgICAgICAgIGFzc2VydChwYnVmWzFdID09IGMpOworICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykgeworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSAqcGJ1ZisrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aWR0aCAtPSAyOworICAgICAgICAgICAgICAgIGlmICh3aWR0aCA8IDApCisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKKyAgICAgICAgICAgICAgICBsZW4gLT0gMjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFkIGxlZnQgd2l0aCB0aGUgZmlsbCBjaGFyYWN0ZXIgaWYgbmVlZGVkICovCisgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4gJiYgIShmbGFncyAmIEZfTEpVU1QpKSB7CisgICAgICAgICAgICAgICAgbWVtc2V0KHJlcywgZmlsbCwgd2lkdGggLSBsZW4pOworICAgICAgICAgICAgICAgIHJlcyArPSAod2lkdGggLSBsZW4pOworICAgICAgICAgICAgICAgIHdpZHRoID0gbGVuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiBwYWRkaW5nIHdpdGggc3BhY2VzOiB3cml0ZSBzaWduIGlmIG5lZWRlZCBhbmQvb3IgbnVtZXJpYworICAgICAgICAgICAgICAgcHJlZml4IGlmIHRoZSBhbHRlcm5hdGUgZm9ybSBpcyB1c2VkICovCisgICAgICAgICAgICBpZiAoZmlsbCA9PSAnICcpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2lnbikKKyAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKKyAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgRl9BTFQpICYmIChjID09ICdvJyB8fCBjID09ICd4JyB8fCBjID09ICdYJykpIHsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMF0gPT0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMV0gPT0gYyk7CisgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBDb3B5IGJ5dGVzICovCisgICAgICAgICAgICBtZW1jcHkocmVzLCBwYnVmLCBsZW4pOworICAgICAgICAgICAgcmVzICs9IGxlbjsKKworICAgICAgICAgICAgLyogUGFkIHJpZ2h0IHdpdGggdGhlIGZpbGwgY2hhcmFjdGVyIGlmIG5lZWRlZCAqLworICAgICAgICAgICAgaWYgKHdpZHRoID4gbGVuKSB7CisgICAgICAgICAgICAgICAgbWVtc2V0KHJlcywgJyAnLCB3aWR0aCAtIGxlbik7CisgICAgICAgICAgICAgICAgcmVzICs9ICh3aWR0aCAtIGxlbik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkaWN0ICYmIChhcmdpZHggPCBhcmdsZW4pKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9YREVDUkVGKHRlbXApOworCisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIC8qIGNoZWNrIHRoYXQgd2UgY29tcHV0ZWQgdGhlIGV4YWN0IHNpemUgZm9yIHRoaXMgd3JpdGUgKi8KKyAgICAgICAgICAgIGFzc2VydCgocmVzIC0gYmVmb3JlKSA9PSBhbGxvYyk7CisjZW5kaWYKKyAgICAgICAgfSAvKiAnJScgKi8KKworICAgICAgICAvKiBJZiBvdmVyYWxsb2NhdGlvbiB3YXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0IGl0IHdhcyB0aGUgbGFzdAorICAgICAgICAgICB3cml0ZS4gT3RoZXJ3aXNlLCB3ZSBtaXNzZWQgYW4gb3B0aW1pemF0aW9uICovCisgICAgICAgIGFzc2VydCh3cml0ZXIub3ZlcmFsbG9jYXRlIHx8IGZtdGNudCA8IDAgfHwgdXNlX2J5dGVhcnJheSk7CisgICAgfSAvKiB1bnRpbCBlbmQgKi8KKworICAgIGlmIChhcmdpZHggPCBhcmdsZW4gJiYgIWRpY3QpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIGJ5dGVzIGZvcm1hdHRpbmciKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoYXJnc19vd25lZCkgeworICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgfQorICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcmVzKTsKKworIGVycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgaWYgKGFyZ3Nfb3duZWQpIHsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworLyogPS09ICovCisKK3N0YXRpYyB2b2lkCitieXRlc19kZWFsbG9jKFB5T2JqZWN0ICpvcCkKK3sKKyAgICBQeV9UWVBFKG9wKS0+dHBfZnJlZShvcCk7Cit9CisKKy8qIFVuZXNjYXBlIGEgYmFja3NsYXNoLWVzY2FwZWQgc3RyaW5nLiBJZiB1bmljb2RlIGlzIG5vbi16ZXJvLAorICAgdGhlIHN0cmluZyBpcyBhIHUtbGl0ZXJhbC4gSWYgcmVjb2RlX2VuY29kaW5nIGlzIG5vbi16ZXJvLAorICAgdGhlIHN0cmluZyBpcyBVVEYtOCBlbmNvZGVkIGFuZCBzaG91bGQgYmUgcmUtZW5jb2RlZCBpbiB0aGUKKyAgIHNwZWNpZmllZCBlbmNvZGluZy4gICovCisKK3N0YXRpYyBjaGFyICoKK19QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZShjb25zdCBjaGFyICoqcywgY29uc3QgY2hhciAqZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywgY29uc3QgY2hhciAqcmVjb2RlX2VuY29kaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnApCit7CisgICAgUHlPYmplY3QgKnUsICp3OworICAgIGNvbnN0IGNoYXIqIHQ7CisKKyAgICB0ID0gKnM7CisgICAgLyogRGVjb2RlIG5vbi1BU0NJSSBieXRlcyBhcyBVVEYtOC4gKi8KKyAgICB3aGlsZSAodCA8IGVuZCAmJiAoKnQgJiAweDgwKSkKKyAgICAgICAgdCsrOworICAgIHUgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOCgqcywgdCAtICpzLCBlcnJvcnMpOworICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogUmVjb2RlIHRoZW0gaW4gdGFyZ2V0IGVuY29kaW5nLiAqLworICAgIHcgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKHUsIHJlY29kZV9lbmNvZGluZywgZXJyb3JzKTsKKyAgICBQeV9ERUNSRUYodSk7CisgICAgaWYgICh3ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHcpKTsKKworICAgIC8qIEFwcGVuZCBieXRlcyB0byBvdXRwdXQgYnVmZmVyLiAqLworICAgIHdyaXRlci0+bWluX3NpemUtLTsgICAvKiBzdWJ0cmFjdCAxIHByZWFsbG9jYXRlZCBieXRlICovCisgICAgcCA9IF9QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMod3JpdGVyLCBwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUodykpOworICAgIFB5X0RFQ1JFRih3KTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICpzID0gdDsKKyAgICByZXR1cm4gcDsKK30KKworUHlPYmplY3QgKl9QeUJ5dGVzX0RlY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlY29kZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKmZpcnN0X2ludmFsaWRfZXNjYXBlKQoreworICAgIGludCBjOworICAgIGNoYXIgKnA7CisgICAgY29uc3QgY2hhciAqZW5kOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisKKyAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgbGVuKTsKKyAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKKworICAgICpmaXJzdF9pbnZhbGlkX2VzY2FwZSA9IE5VTEw7CisKKyAgICBlbmQgPSBzICsgbGVuOworICAgIHdoaWxlIChzIDwgZW5kKSB7CisgICAgICAgIGlmICgqcyAhPSAnXFwnKSB7CisgICAgICAgICAgbm9uX2VzYzoKKyAgICAgICAgICAgIGlmICghKHJlY29kZV9lbmNvZGluZyAmJiAoKnMgJiAweDgwKSkpIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gKnMrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIC8qIG5vbi1BU0NJSSBjaGFyYWN0ZXIgYW5kIG5lZWQgdG8gcmVjb2RlICovCisgICAgICAgICAgICAgICAgcCA9IF9QeUJ5dGVzX0RlY29kZUVzY2FwZVJlY29kZSgmcywgZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCByZWNvZGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVyLCBwKTsKKyAgICAgICAgICAgICAgICBpZiAocCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcysrOworICAgICAgICBpZiAocyA9PSBlbmQpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUcmFpbGluZyBcXCBpbiBzdHJpbmciKTsKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoICgqcysrKSB7CisgICAgICAgIC8qIFhYWCBUaGlzIGFzc3VtZXMgQVNDSUkhICovCisgICAgICAgIGNhc2UgJ1xuJzogYnJlYWs7CisgICAgICAgIGNhc2UgJ1xcJzogKnArKyA9ICdcXCc7IGJyZWFrOworICAgICAgICBjYXNlICdcJyc6ICpwKysgPSAnXCcnOyBicmVhazsKKyAgICAgICAgY2FzZSAnXCInOiAqcCsrID0gJ1wiJzsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2InOiAqcCsrID0gJ1xiJzsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2YnOiAqcCsrID0gJ1wwMTQnOyBicmVhazsgLyogRkYgKi8KKyAgICAgICAgY2FzZSAndCc6ICpwKysgPSAnXHQnOyBicmVhazsKKyAgICAgICAgY2FzZSAnbic6ICpwKysgPSAnXG4nOyBicmVhazsKKyAgICAgICAgY2FzZSAncic6ICpwKysgPSAnXHInOyBicmVhazsKKyAgICAgICAgY2FzZSAndic6ICpwKysgPSAnXDAxMyc7IGJyZWFrOyAvKiBWVCAqLworICAgICAgICBjYXNlICdhJzogKnArKyA9ICdcMDA3JzsgYnJlYWs7IC8qIEJFTCwgbm90IGNsYXNzaWMgQyAqLworICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKKyAgICAgICAgY2FzZSAnNCc6IGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6CisgICAgICAgICAgICBjID0gc1stMV0gLSAnMCc7CisgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiAnMCcgPD0gKnMgJiYgKnMgPD0gJzcnKSB7CisgICAgICAgICAgICAgICAgYyA9IChjPDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykKKyAgICAgICAgICAgICAgICAgICAgYyA9IChjPDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqcCsrID0gYzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgIGlmIChzKzEgPCBlbmQpIHsKKyAgICAgICAgICAgICAgICBpbnQgZGlnaXQxLCBkaWdpdDI7CisgICAgICAgICAgICAgICAgZGlnaXQxID0gX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKHNbMF0pXTsKKyAgICAgICAgICAgICAgICBkaWdpdDIgPSBfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soc1sxXSldOworICAgICAgICAgICAgICAgIGlmIChkaWdpdDEgPCAxNiAmJiBkaWdpdDIgPCAxNikgeworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpKChkaWdpdDEgPDwgNCkgKyBkaWdpdDIpOworICAgICAgICAgICAgICAgICAgICBzICs9IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGludmFsaWQgaGV4YWRlY2ltYWwgZGlnaXRzICovCisKKyAgICAgICAgICAgIGlmICghZXJyb3JzIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIFxceCBlc2NhcGUgYXQgcG9zaXRpb24gJWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzIC0gMiAtIChlbmQgLSBsZW4pKTsKKyAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdHJjbXAoZXJyb3JzLCAicmVwbGFjZSIpID09IDApIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJz8nOworICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikgPT0gMCkKKyAgICAgICAgICAgICAgICAvKiBkbyBub3RoaW5nICovOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNvZGluZyBlcnJvcjsgdW5rbm93biAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlcnJvciBoYW5kbGluZyBjb2RlOiAlLjQwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogc2tpcCBceCAqLworICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgUHlfSVNYRElHSVQoc1swXSkpCisgICAgICAgICAgICAgICAgcysrOyAvKiBhbmQgYSBoZXhkaWdpdCAqLworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmICgqZmlyc3RfaW52YWxpZF9lc2NhcGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpmaXJzdF9pbnZhbGlkX2VzY2FwZSA9IHMtMTsgLyogQmFjayB1cCBvbmUgY2hhciwgc2luY2Ugd2UndmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgaW5jcmVtZW50ZWQgcy4gKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgcy0tOworICAgICAgICAgICAgZ290byBub25fZXNjOyAvKiBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIHVuZXNjYXBlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVVEYtOCBieXRlcyBtYXkgZm9sbG93LiAqLworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBwKTsKKworICBmYWlsZWQ6CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlPYmplY3QgKlB5Qnl0ZXNfRGVjb2RlRXNjYXBlKGNvbnN0IGNoYXIgKnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcmVjb2RlX2VuY29kaW5nKQoreworICAgIGNvbnN0IGNoYXIqIGZpcnN0X2ludmFsaWRfZXNjYXBlOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlCeXRlc19EZWNvZGVFc2NhcGUocywgbGVuLCBlcnJvcnMsIHVuaWNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvZGVfZW5jb2RpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZmlyc3RfaW52YWxpZF9lc2NhcGUpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKGZpcnN0X2ludmFsaWRfZXNjYXBlICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBlc2NhcGUgc2VxdWVuY2UgJ1xcJWMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpKmZpcnN0X2ludmFsaWRfZXNjYXBlKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKworfQorLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIG9iamVjdCBhcGkgKi8KKworUHlfc3NpemVfdAorUHlCeXRlc19TaXplKFB5T2JqZWN0ICpvcCkKK3sKKyAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sob3ApKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgImV4cGVjdGVkIGJ5dGVzLCAlLjIwMHMgZm91bmQiLCBQeV9UWVBFKG9wKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIFB5X1NJWkUob3ApOworfQorCitjaGFyICoKK1B5Qnl0ZXNfQXNTdHJpbmcoUHlPYmplY3QgKm9wKQoreworICAgIGlmICghUHlCeXRlc19DaGVjayhvcCkpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAiZXhwZWN0ZWQgYnl0ZXMsICUuMjAwcyBmb3VuZCIsIFB5X1RZUEUob3ApLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJldHVybiAoKFB5Qnl0ZXNPYmplY3QgKilvcCktPm9iX3N2YWw7Cit9CisKK2ludAorUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUoUHlPYmplY3QgKm9iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqcywKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpsZW4pCit7CisgICAgaWYgKHMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICghUHlCeXRlc19DaGVjayhvYmopKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgImV4cGVjdGVkIGJ5dGVzLCAlLjIwMHMgZm91bmQiLCBQeV9UWVBFKG9iaiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgKnMgPSBQeUJ5dGVzX0FTX1NUUklORyhvYmopOworICAgIGlmIChsZW4gIT0gTlVMTCkKKyAgICAgICAgKmxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqKTsKKyAgICBlbHNlIGlmIChzdHJsZW4oKnMpICE9IChzaXplX3QpUHlCeXRlc19HRVRfU0laRShvYmopKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImVtYmVkZGVkIG51bGwgYnl0ZSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogTWV0aG9kcyAqLworCisjaW5jbHVkZSAic3RyaW5nbGliL3N0cmluZ2RlZnMuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi9mYXN0c2VhcmNoLmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2NvdW50LmgiCisjaW5jbHVkZSAic3RyaW5nbGliL2ZpbmQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvam9pbi5oIgorI2luY2x1ZGUgInN0cmluZ2xpYi9wYXJ0aXRpb24uaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvc3BsaXQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY3R5cGUuaCIKKworI2luY2x1ZGUgInN0cmluZ2xpYi90cmFuc21vZ3JpZnkuaCIKKworUHlPYmplY3QgKgorUHlCeXRlc19SZXByKFB5T2JqZWN0ICpvYmosIGludCBzbWFydHF1b3RlcykKK3sKKyAgICBQeUJ5dGVzT2JqZWN0KiBvcCA9IChQeUJ5dGVzT2JqZWN0Kikgb2JqOworICAgIFB5X3NzaXplX3QgaSwgbGVuZ3RoID0gUHlfU0laRShvcCk7CisgICAgUHlfc3NpemVfdCBuZXdzaXplLCBzcXVvdGVzLCBkcXVvdGVzOworICAgIFB5T2JqZWN0ICp2OworICAgIHVuc2lnbmVkIGNoYXIgcXVvdGUsICpzLCAqcDsKKworICAgIC8qIENvbXB1dGUgc2l6ZSBvZiBvdXRwdXQgc3RyaW5nICovCisgICAgc3F1b3RlcyA9IGRxdW90ZXMgPSAwOworICAgIG5ld3NpemUgPSAzOyAvKiBiJycgKi8KKyAgICBzID0gKHVuc2lnbmVkIGNoYXIqKW9wLT5vYl9zdmFsOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICBQeV9zc2l6ZV90IGluY3IgPSAxOworICAgICAgICBzd2l0Y2goc1tpXSkgeworICAgICAgICBjYXNlICdcJyc6IHNxdW90ZXMrKzsgYnJlYWs7CisgICAgICAgIGNhc2UgJyInOiAgZHF1b3RlcysrOyBicmVhazsKKyAgICAgICAgY2FzZSAnXFwnOiBjYXNlICdcdCc6IGNhc2UgJ1xuJzogY2FzZSAnXHInOgorICAgICAgICAgICAgaW5jciA9IDI7IGJyZWFrOyAvKiBcQyAqLworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKHNbaV0gPCAnICcgfHwgc1tpXSA+PSAweDdmKQorICAgICAgICAgICAgICAgIGluY3IgPSA0OyAvKiBceEhIICovCisgICAgICAgIH0KKyAgICAgICAgaWYgKG5ld3NpemUgPiBQWV9TU0laRV9UX01BWCAtIGluY3IpCisgICAgICAgICAgICBnb3RvIG92ZXJmbG93OworICAgICAgICBuZXdzaXplICs9IGluY3I7CisgICAgfQorICAgIHF1b3RlID0gJ1wnJzsKKyAgICBpZiAoc21hcnRxdW90ZXMgJiYgc3F1b3RlcyAmJiAhZHF1b3RlcykKKyAgICAgICAgcXVvdGUgPSAnIic7CisgICAgaWYgKHNxdW90ZXMgJiYgcXVvdGUgPT0gJ1wnJykgeworICAgICAgICBpZiAobmV3c2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gc3F1b3RlcykKKyAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7CisgICAgICAgIG5ld3NpemUgKz0gc3F1b3RlczsKKyAgICB9CisKKyAgICB2ID0gUHlVbmljb2RlX05ldyhuZXdzaXplLCAxMjcpOworICAgIGlmICh2ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHAgPSBQeVVuaWNvZGVfMUJZVEVfREFUQSh2KTsKKworICAgICpwKysgPSAnYicsICpwKysgPSBxdW90ZTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBjID0gb3AtPm9iX3N2YWxbaV07CisgICAgICAgIGlmIChjID09IHF1b3RlIHx8IGMgPT0gJ1xcJykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gYzsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnXHQnKQorICAgICAgICAgICAgKnArKyA9ICdcXCcsICpwKysgPSAndCc7CisgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1xuJykKKyAgICAgICAgICAgICpwKysgPSAnXFwnLCAqcCsrID0gJ24nOworICAgICAgICBlbHNlIGlmIChjID09ICdccicpCisgICAgICAgICAgICAqcCsrID0gJ1xcJywgKnArKyA9ICdyJzsKKyAgICAgICAgZWxzZSBpZiAoYyA8ICcgJyB8fCBjID49IDB4N2YpIHsKKyAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgKnArKyA9ICd4JzsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGMgJiAweGYwKSA+PiA0XTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbYyAmIDB4Zl07CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnArKyA9IGM7CisgICAgfQorICAgICpwKysgPSBxdW90ZTsKKyAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHYsIDEpKTsKKyAgICByZXR1cm4gdjsKKworICBvdmVyZmxvdzoKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG9iamVjdCBpcyB0b28gbGFyZ2UgdG8gbWFrZSByZXByIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19yZXByKFB5T2JqZWN0ICpvcCkKK3sKKyAgICByZXR1cm4gUHlCeXRlc19SZXByKG9wLCAxKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3N0cihQeU9iamVjdCAqb3ApCit7CisgICAgaWYgKFB5X0J5dGVzV2FybmluZ0ZsYWcpIHsKKyAgICAgICAgaWYgKFB5RXJyX1dhcm5FeChQeUV4Y19CeXRlc1dhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgInN0cigpIG9uIGEgYnl0ZXMgaW5zdGFuY2UiLCAxKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gYnl0ZXNfcmVwcihvcCk7Cit9CisKK3N0YXRpYyBQeV9zc2l6ZV90CitieXRlc19sZW5ndGgoUHlCeXRlc09iamVjdCAqYSkKK3sKKyAgICByZXR1cm4gUHlfU0laRShhKTsKK30KKworLyogVGhpcyBpcyBhbHNvIHVzZWQgYnkgUHlCeXRlc19Db25jYXQoKSAqLworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX2NvbmNhdChQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIpCit7CisgICAgUHlfYnVmZmVyIHZhLCB2YjsKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKKworICAgIHZhLmxlbiA9IC0xOworICAgIHZiLmxlbiA9IC0xOworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoYSwgJnZhLCBQeUJVRl9TSU1QTEUpICE9IDAgfHwKKyAgICAgICAgUHlPYmplY3RfR2V0QnVmZmVyKGIsICZ2YiwgUHlCVUZfU0lNUExFKSAhPSAwKSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJjYW4ndCBjb25jYXQgJS4xMDBzIHRvICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGIpLT50cF9uYW1lLCBQeV9UWVBFKGEpLT50cF9uYW1lKTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIC8qIE9wdGltaXplIGVuZCBjYXNlcyAqLworICAgIGlmICh2YS5sZW4gPT0gMCAmJiBQeUJ5dGVzX0NoZWNrRXhhY3QoYikpIHsKKyAgICAgICAgcmVzdWx0ID0gYjsKKyAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgICAgaWYgKHZiLmxlbiA9PSAwICYmIFB5Qnl0ZXNfQ2hlY2tFeGFjdChhKSkgeworICAgICAgICByZXN1bHQgPSBhOworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICAgICAgZ290byBkb25lOworICAgIH0KKworICAgIGlmICh2YS5sZW4gPiBQWV9TU0laRV9UX01BWCAtIHZiLmxlbikgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB2YS5sZW4gKyB2Yi5sZW4pOworICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgeworICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSwgdmEuYnVmLCB2YS5sZW4pOworICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KSArIHZhLmxlbiwgdmIuYnVmLCB2Yi5sZW4pOworICAgIH0KKworICBkb25lOgorICAgIGlmICh2YS5sZW4gIT0gLTEpCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZhKTsKKyAgICBpZiAodmIubGVuICE9IC0xKQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2Yik7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JlcGVhdChQeUJ5dGVzT2JqZWN0ICphLCBQeV9zc2l6ZV90IG4pCit7CisgICAgUHlfc3NpemVfdCBpOworICAgIFB5X3NzaXplX3QgajsKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlCeXRlc09iamVjdCAqb3A7CisgICAgc2l6ZV90IG5ieXRlczsKKyAgICBpZiAobiA8IDApCisgICAgICAgIG4gPSAwOworICAgIC8qIHdhdGNoIG91dCBmb3Igb3ZlcmZsb3dzOiAgdGhlIHNpemUgY2FuIG92ZXJmbG93IGludCwKKyAgICAgKiBhbmQgdGhlICMgb2YgYnl0ZXMgbmVlZGVkIGNhbiBvdmVyZmxvdyBzaXplX3QKKyAgICAgKi8KKyAgICBpZiAobiA+IDAgJiYgUHlfU0laRShhKSA+IFBZX1NTSVpFX1RfTUFYIC8gbikgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICJyZXBlYXRlZCBieXRlcyBhcmUgdG9vIGxvbmciKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHNpemUgPSBQeV9TSVpFKGEpICogbjsKKyAgICBpZiAoc2l6ZSA9PSBQeV9TSVpFKGEpICYmIFB5Qnl0ZXNfQ2hlY2tFeGFjdChhKSkgeworICAgICAgICBQeV9JTkNSRUYoYSk7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QgKilhOworICAgIH0KKyAgICBuYnl0ZXMgPSAoc2l6ZV90KXNpemU7CisgICAgaWYgKG5ieXRlcyArIFB5Qnl0ZXNPYmplY3RfU0laRSA8PSBuYnl0ZXMpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAicmVwZWF0ZWQgYnl0ZXMgYXJlIHRvbyBsb25nIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBvcCA9IChQeUJ5dGVzT2JqZWN0ICopUHlPYmplY3RfTUFMTE9DKFB5Qnl0ZXNPYmplY3RfU0laRSArIG5ieXRlcyk7CisgICAgaWYgKG9wID09IE5VTEwpCisgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICh2b2lkKVB5T2JqZWN0X0lOSVRfVkFSKG9wLCAmUHlCeXRlc19UeXBlLCBzaXplKTsKKyAgICBvcC0+b2Jfc2hhc2ggPSAtMTsKKyAgICBvcC0+b2Jfc3ZhbFtzaXplXSA9ICdcMCc7CisgICAgaWYgKFB5X1NJWkUoYSkgPT0gMSAmJiBuID4gMCkgeworICAgICAgICBtZW1zZXQob3AtPm9iX3N2YWwsIGEtPm9iX3N2YWxbMF0gLCBuKTsKKyAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSBvcDsKKyAgICB9CisgICAgaSA9IDA7CisgICAgaWYgKGkgPCBzaXplKSB7CisgICAgICAgIG1lbWNweShvcC0+b2Jfc3ZhbCwgYS0+b2Jfc3ZhbCwgUHlfU0laRShhKSk7CisgICAgICAgIGkgPSBQeV9TSVpFKGEpOworICAgIH0KKyAgICB3aGlsZSAoaSA8IHNpemUpIHsKKyAgICAgICAgaiA9IChpIDw9IHNpemUtaSkgID8gIGkgIDogIHNpemUtaTsKKyAgICAgICAgbWVtY3B5KG9wLT5vYl9zdmFsK2ksIG9wLT5vYl9zdmFsLCBqKTsKKyAgICAgICAgaSArPSBqOworICAgIH0KKyAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOworfQorCitzdGF0aWMgaW50CitieXRlc19jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvbnRhaW5zKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmcpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfaXRlbShQeUJ5dGVzT2JqZWN0ICphLCBQeV9zc2l6ZV90IGkpCit7CisgICAgaWYgKGkgPCAwIHx8IGkgPj0gUHlfU0laRShhKSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW5kZXhFcnJvciwgImluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygodW5zaWduZWQgY2hhcilhLT5vYl9zdmFsW2ldKTsKK30KKworc3RhdGljIGludAorYnl0ZXNfY29tcGFyZV9lcShQeUJ5dGVzT2JqZWN0ICphLCBQeUJ5dGVzT2JqZWN0ICpiKQoreworICAgIGludCBjbXA7CisgICAgUHlfc3NpemVfdCBsZW47CisKKyAgICBsZW4gPSBQeV9TSVpFKGEpOworICAgIGlmIChQeV9TSVpFKGIpICE9IGxlbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoYS0+b2Jfc3ZhbFswXSAhPSBiLT5vYl9zdmFsWzBdKQorICAgICAgICByZXR1cm4gMDsKKworICAgIGNtcCA9IG1lbWNtcChhLT5vYl9zdmFsLCBiLT5vYl9zdmFsLCBsZW4pOworICAgIHJldHVybiAoY21wID09IDApOworfQorCitzdGF0aWMgUHlPYmplY3QqCitieXRlc19yaWNoY29tcGFyZShQeUJ5dGVzT2JqZWN0ICphLCBQeUJ5dGVzT2JqZWN0ICpiLCBpbnQgb3ApCit7CisgICAgaW50IGM7CisgICAgUHlfc3NpemVfdCBsZW5fYSwgbGVuX2I7CisgICAgUHlfc3NpemVfdCBtaW5fbGVuOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgaW50IHJjOworCisgICAgLyogTWFrZSBzdXJlIGJvdGggYXJndW1lbnRzIGFyZSBzdHJpbmdzLiAqLworICAgIGlmICghKFB5Qnl0ZXNfQ2hlY2soYSkgJiYgUHlCeXRlc19DaGVjayhiKSkpIHsKKyAgICAgICAgaWYgKFB5X0J5dGVzV2FybmluZ0ZsYWcgJiYgKG9wID09IFB5X0VRIHx8IG9wID09IFB5X05FKSkgeworICAgICAgICAgICAgcmMgPSBQeU9iamVjdF9Jc0luc3RhbmNlKChQeU9iamVjdCopYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QqKSZQeVVuaWNvZGVfVHlwZSk7CisgICAgICAgICAgICBpZiAoIXJjKQorICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNJbnN0YW5jZSgoUHlPYmplY3QqKWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCopJlB5VW5pY29kZV9UeXBlKTsKKyAgICAgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0J5dGVzV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb21wYXJpc29uIGJldHdlZW4gYnl0ZXMgYW5kIHN0cmluZyIsIDEpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHJjID0gUHlPYmplY3RfSXNJbnN0YW5jZSgoUHlPYmplY3QqKWEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCopJlB5TG9uZ19UeXBlKTsKKyAgICAgICAgICAgICAgICBpZiAoIXJjKQorICAgICAgICAgICAgICAgICAgICByYyA9IFB5T2JqZWN0X0lzSW5zdGFuY2UoKFB5T2JqZWN0KiliLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0KikmUHlMb25nX1R5cGUpOworICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIGlmIChyYykgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkV4KFB5RXhjX0J5dGVzV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29tcGFyaXNvbiBiZXR3ZWVuIGJ5dGVzIGFuZCBpbnQiLCAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXN1bHQgPSBQeV9Ob3RJbXBsZW1lbnRlZDsKKyAgICB9CisgICAgZWxzZSBpZiAoYSA9PSBiKSB7CisgICAgICAgIHN3aXRjaCAob3ApIHsKKyAgICAgICAgY2FzZSBQeV9FUToKKyAgICAgICAgY2FzZSBQeV9MRToKKyAgICAgICAgY2FzZSBQeV9HRToKKyAgICAgICAgICAgIC8qIGEgc3RyaW5nIGlzIGVxdWFsIHRvIGl0c2VsZiAqLworICAgICAgICAgICAgcmVzdWx0ID0gUHlfVHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFB5X05FOgorICAgICAgICBjYXNlIFB5X0xUOgorICAgICAgICBjYXNlIFB5X0dUOgorICAgICAgICAgICAgcmVzdWx0ID0gUHlfRmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChvcCA9PSBQeV9FUSB8fCBvcCA9PSBQeV9ORSkgeworICAgICAgICBpbnQgZXEgPSBieXRlc19jb21wYXJlX2VxKGEsIGIpOworICAgICAgICBlcSBePSAob3AgPT0gUHlfTkUpOworICAgICAgICByZXN1bHQgPSBlcSA/IFB5X1RydWUgOiBQeV9GYWxzZTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGxlbl9hID0gUHlfU0laRShhKTsKKyAgICAgICAgbGVuX2IgPSBQeV9TSVpFKGIpOworICAgICAgICBtaW5fbGVuID0gUHlfTUlOKGxlbl9hLCBsZW5fYik7CisgICAgICAgIGlmIChtaW5fbGVuID4gMCkgeworICAgICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCphLT5vYl9zdmFsKSAtIFB5X0NIQVJNQVNLKCpiLT5vYl9zdmFsKTsKKyAgICAgICAgICAgIGlmIChjID09IDApCisgICAgICAgICAgICAgICAgYyA9IG1lbWNtcChhLT5vYl9zdmFsLCBiLT5vYl9zdmFsLCBtaW5fbGVuKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlCisgICAgICAgICAgICBjID0gMDsKKyAgICAgICAgaWYgKGMgPT0gMCkKKyAgICAgICAgICAgIGMgPSAobGVuX2EgPCBsZW5fYikgPyAtMSA6IChsZW5fYSA+IGxlbl9iKSA/IDEgOiAwOworICAgICAgICBzd2l0Y2ggKG9wKSB7CisgICAgICAgIGNhc2UgUHlfTFQ6IGMgPSBjIDwgIDA7IGJyZWFrOworICAgICAgICBjYXNlIFB5X0xFOiBjID0gYyA8PSAwOyBicmVhazsKKyAgICAgICAgY2FzZSBQeV9HVDogYyA9IGMgPiAgMDsgYnJlYWs7CisgICAgICAgIGNhc2UgUHlfR0U6IGMgPSBjID49IDA7IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IGMgPyBQeV9UcnVlIDogUHlfRmFsc2U7CisgICAgfQorCisgICAgUHlfSU5DUkVGKHJlc3VsdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIFB5X2hhc2hfdAorYnl0ZXNfaGFzaChQeUJ5dGVzT2JqZWN0ICphKQoreworICAgIGlmIChhLT5vYl9zaGFzaCA9PSAtMSkgeworICAgICAgICAvKiBDYW4ndCBmYWlsICovCisgICAgICAgIGEtPm9iX3NoYXNoID0gX1B5X0hhc2hCeXRlcyhhLT5vYl9zdmFsLCBQeV9TSVpFKGEpKTsKKyAgICB9CisgICAgcmV0dXJuIGEtPm9iX3NoYXNoOworfQorCitzdGF0aWMgUHlPYmplY3QqCitieXRlc19zdWJzY3JpcHQoUHlCeXRlc09iamVjdCogc2VsZiwgUHlPYmplY3QqIGl0ZW0pCit7CisgICAgaWYgKFB5SW5kZXhfQ2hlY2soaXRlbSkpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIFB5RXhjX0luZGV4RXJyb3IpOworICAgICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChpIDwgMCkKKyAgICAgICAgICAgIGkgKz0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKKyAgICAgICAgaWYgKGkgPCAwIHx8IGkgPj0gUHlCeXRlc19HRVRfU0laRShzZWxmKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0luZGV4RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluZGV4IG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygodW5zaWduZWQgY2hhcilzZWxmLT5vYl9zdmFsW2ldKTsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhpdGVtKSkgeworICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aCwgY3VyLCBpOworICAgICAgICBjaGFyKiBzb3VyY2VfYnVmOworICAgICAgICBjaGFyKiByZXN1bHRfYnVmOworICAgICAgICBQeU9iamVjdCogcmVzdWx0OworCisgICAgICAgIGlmIChQeVNsaWNlX1VucGFjayhpdGVtLCAmc3RhcnQsICZzdG9wLCAmc3RlcCkgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzbGljZWxlbmd0aCA9IFB5U2xpY2VfQWRqdXN0SW5kaWNlcyhQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCAmc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdG9wLCBzdGVwKTsKKworICAgICAgICBpZiAoc2xpY2VsZW5ndGggPD0gMCkgeworICAgICAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoIiIsIDApOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKHN0YXJ0ID09IDAgJiYgc3RlcCA9PSAxICYmCisgICAgICAgICAgICAgICAgIHNsaWNlbGVuZ3RoID09IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikgJiYKKyAgICAgICAgICAgICAgICAgUHlCeXRlc19DaGVja0V4YWN0KHNlbGYpKSB7CisgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopc2VsZjsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChzdGVwID09IDEpIHsKKyAgICAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKAorICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpICsgc3RhcnQsCisgICAgICAgICAgICAgICAgc2xpY2VsZW5ndGgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc291cmNlX2J1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOworICAgICAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzbGljZWxlbmd0aCk7CisgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgICAgIHJlc3VsdF9idWYgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgICAgICAgICAgZm9yIChjdXIgPSBzdGFydCwgaSA9IDA7IGkgPCBzbGljZWxlbmd0aDsKKyAgICAgICAgICAgICAgICAgY3VyICs9IHN0ZXAsIGkrKykgeworICAgICAgICAgICAgICAgIHJlc3VsdF9idWZbaV0gPSBzb3VyY2VfYnVmW2N1cl07CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiYnl0ZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3Igc2xpY2VzLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoaXRlbSktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK2J5dGVzX2J1ZmZlcl9nZXRidWZmZXIoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICp2aWV3LCBpbnQgZmxhZ3MpCit7CisgICAgcmV0dXJuIFB5QnVmZmVyX0ZpbGxJbmZvKHZpZXcsIChQeU9iamVjdCopc2VsZiwgKHZvaWQgKilzZWxmLT5vYl9zdmFsLCBQeV9TSVpFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCBmbGFncyk7Cit9CisKK3N0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBieXRlc19hc19zZXF1ZW5jZSA9IHsKKyAgICAobGVuZnVuYylieXRlc19sZW5ndGgsIC8qc3FfbGVuZ3RoKi8KKyAgICAoYmluYXJ5ZnVuYylieXRlc19jb25jYXQsIC8qc3FfY29uY2F0Ki8KKyAgICAoc3NpemVhcmdmdW5jKWJ5dGVzX3JlcGVhdCwgLypzcV9yZXBlYXQqLworICAgIChzc2l6ZWFyZ2Z1bmMpYnl0ZXNfaXRlbSwgLypzcV9pdGVtKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgIC8qc3Ffc2xpY2UqLworICAgIDAsICAgICAgICAgICAgICAgICAgLypzcV9hc3NfaXRlbSovCisgICAgMCwgICAgICAgICAgICAgICAgICAvKnNxX2Fzc19zbGljZSovCisgICAgKG9iam9ianByb2MpYnl0ZXNfY29udGFpbnMgLypzcV9jb250YWlucyovCit9OworCitzdGF0aWMgUHlNYXBwaW5nTWV0aG9kcyBieXRlc19hc19tYXBwaW5nID0geworICAgIChsZW5mdW5jKWJ5dGVzX2xlbmd0aCwKKyAgICAoYmluYXJ5ZnVuYylieXRlc19zdWJzY3JpcHQsCisgICAgMCwKK307CisKK3N0YXRpYyBQeUJ1ZmZlclByb2NzIGJ5dGVzX2FzX2J1ZmZlciA9IHsKKyAgICAoZ2V0YnVmZmVycHJvYylieXRlc19idWZmZXJfZ2V0YnVmZmVyLAorICAgIE5VTEwsCit9OworCisKKyNkZWZpbmUgTEVGVFNUUklQIDAKKyNkZWZpbmUgUklHSFRTVFJJUCAxCisjZGVmaW5lIEJPVEhTVFJJUCAyCisKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnNwbGl0CisKKyAgICBzZXA6IG9iamVjdCA9IE5vbmUKKyAgICAgICAgVGhlIGRlbGltaXRlciBhY2NvcmRpbmcgd2hpY2ggdG8gc3BsaXQgdGhlIGJ5dGVzLgorICAgICAgICBOb25lICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgc3BsaXQgb24gQVNDSUkgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzCisgICAgICAgIChzcGFjZSwgdGFiLCByZXR1cm4sIG5ld2xpbmUsIGZvcm1mZWVkLCB2ZXJ0aWNhbCB0YWIpLgorICAgIG1heHNwbGl0OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygc3BsaXRzIHRvIGRvLgorICAgICAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LgorCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZXMsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyMTI2YjU4NDRjMWQ4ZWYgaW5wdXQ9OGI4MDliMzkwNzRhYmJmYV0qLworeworICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKSwgbjsKKyAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CisgICAgUHlfYnVmZmVyIHZzdWI7CisgICAgUHlPYmplY3QgKmxpc3Q7CisKKyAgICBpZiAobWF4c3BsaXQgPCAwKQorICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOworICAgIGlmIChzZXAgPT0gUHlfTm9uZSkKKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdF93aGl0ZXNwYWNlKChQeU9iamVjdCopIHNlbGYsIHMsIGxlbiwgbWF4c3BsaXQpOworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc2VwLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBzdWIgPSB2c3ViLmJ1ZjsKKyAgICBuID0gdnN1Yi5sZW47CisKKyAgICBsaXN0ID0gc3RyaW5nbGliX3NwbGl0KChQeU9iamVjdCopIHNlbGYsIHMsIGxlbiwgc3ViLCBuLCBtYXhzcGxpdCk7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1Yik7CisgICAgcmV0dXJuIGxpc3Q7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnBhcnRpdGlvbgorCisgICAgc2VwOiBQeV9idWZmZXIKKyAgICAvCisKK1BhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgorCitUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZXMuIElmIHRoZSBzZXBhcmF0b3IgaXMgZm91bmQsCityZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yCitpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC4KKworSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIG9yaWdpbmFsIGJ5dGVzCitvYmplY3QgYW5kIHR3byBlbXB0eSBieXRlcyBvYmplY3RzLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcGFydGl0aW9uX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpzZXApCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjUzMmIzOTJhMTdmZjY5NSBpbnB1dD02MWNjYTk1NTE5NDA2MDk5XSovCit7CisgICAgcmV0dXJuIHN0cmluZ2xpYl9wYXJ0aXRpb24oCisgICAgICAgIChQeU9iamVjdCopIHNlbGYsCisgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAorICAgICAgICBzZXAtPm9iaiwgKGNvbnN0IGNoYXIgKilzZXAtPmJ1Ziwgc2VwLT5sZW4KKyAgICAgICAgKTsKK30KKworLypbY2xpbmljIGlucHV0XQorYnl0ZXMucnBhcnRpdGlvbgorCisgICAgc2VwOiBQeV9idWZmZXIKKyAgICAvCisKK1BhcnRpdGlvbiB0aGUgYnl0ZXMgaW50byB0aHJlZSBwYXJ0cyB1c2luZyB0aGUgZ2l2ZW4gc2VwYXJhdG9yLgorCitUaGlzIHdpbGwgc2VhcmNoIGZvciB0aGUgc2VwYXJhdG9yIHNlcCBpbiB0aGUgYnl0ZXMsIHN0YXJ0aW5nIGF0IHRoZSBlbmQuIElmCit0aGUgc2VwYXJhdG9yIGlzIGZvdW5kLCByZXR1cm5zIGEgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUKK3NlcGFyYXRvciwgdGhlIHNlcGFyYXRvciBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciBpdC4KKworSWYgdGhlIHNlcGFyYXRvciBpcyBub3QgZm91bmQsIHJldHVybnMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IGJ5dGVzCitvYmplY3RzIGFuZCB0aGUgb3JpZ2luYWwgYnl0ZXMgb2JqZWN0LgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcnBhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5MWIxMTRjYmIwMjhlNTAgaW5wdXQ9ZDc4ZGIwMTBjOGNmZGJlMV0qLworeworICAgIHJldHVybiBzdHJpbmdsaWJfcnBhcnRpdGlvbigKKyAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwKKyAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksCisgICAgICAgIHNlcC0+b2JqLCAoY29uc3QgY2hhciAqKXNlcC0+YnVmLCBzZXAtPmxlbgorICAgICAgICApOworfQorCisvKltjbGluaWMgaW5wdXRdCitieXRlcy5yc3BsaXQgPSBieXRlcy5zcGxpdAorCitSZXR1cm4gYSBsaXN0IG9mIHRoZSBzZWN0aW9ucyBpbiB0aGUgYnl0ZXMsIHVzaW5nIHNlcCBhcyB0aGUgZGVsaW1pdGVyLgorCitTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlcyBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJhNjk4ZDllYTAxZTFjOGYgaW5wdXQ9MGY4NmM5ZjI4ZjdkN2I3Yl0qLworeworICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKSwgbjsKKyAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CisgICAgUHlfYnVmZmVyIHZzdWI7CisgICAgUHlPYmplY3QgKmxpc3Q7CisKKyAgICBpZiAobWF4c3BsaXQgPCAwKQorICAgICAgICBtYXhzcGxpdCA9IFBZX1NTSVpFX1RfTUFYOworICAgIGlmIChzZXAgPT0gUHlfTm9uZSkKKyAgICAgICAgcmV0dXJuIHN0cmluZ2xpYl9yc3BsaXRfd2hpdGVzcGFjZSgoUHlPYmplY3QqKSBzZWxmLCBzLCBsZW4sIG1heHNwbGl0KTsKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcCwgJnZzdWIsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc3ViID0gdnN1Yi5idWY7CisgICAgbiA9IHZzdWIubGVuOworCisgICAgbGlzdCA9IHN0cmluZ2xpYl9yc3BsaXQoKFB5T2JqZWN0Kikgc2VsZiwgcywgbGVuLCBzdWIsIG4sIG1heHNwbGl0KTsKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKKyAgICByZXR1cm4gbGlzdDsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitieXRlcy5qb2luCisKKyAgICBpdGVyYWJsZV9vZl9ieXRlczogb2JqZWN0CisgICAgLworCitDb25jYXRlbmF0ZSBhbnkgbnVtYmVyIG9mIGJ5dGVzIG9iamVjdHMuCisKK1RoZSBieXRlcyB3aG9zZSBtZXRob2QgaXMgY2FsbGVkIGlzIGluc2VydGVkIGluIGJldHdlZW4gZWFjaCBwYWlyLgorCitUaGUgcmVzdWx0IGlzIHJldHVybmVkIGFzIGEgbmV3IGJ5dGVzIG9iamVjdC4KKworRXhhbXBsZTogYicuJy5qb2luKFtiJ2FiJywgYidwcScsIGIncnMnXSkgLT4gYidhYi5wcS5ycycuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19qb2luKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hMDQ2ZjM3OWY2MjZmNmY4IGlucHV0PTdmZTM3N2I5NWJkNTQ5ZDJdKi8KK3sKKyAgICByZXR1cm4gc3RyaW5nbGliX2J5dGVzX2pvaW4oKFB5T2JqZWN0KilzZWxmLCBpdGVyYWJsZV9vZl9ieXRlcyk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUJ5dGVzX0pvaW4oUHlPYmplY3QgKnNlcCwgUHlPYmplY3QgKngpCit7CisgICAgYXNzZXJ0KHNlcCAhPSBOVUxMICYmIFB5Qnl0ZXNfQ2hlY2soc2VwKSk7CisgICAgYXNzZXJ0KHggIT0gTlVMTCk7CisgICAgcmV0dXJuIGJ5dGVzX2pvaW4oKFB5Qnl0ZXNPYmplY3QqKXNlcCwgeCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19maW5kKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBfUHlfYnl0ZXNfZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19pbmRleChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX1B5X2J5dGVzX2luZGV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfcmZpbmQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIF9QeV9ieXRlc19yZmluZChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7Cit9CisKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JpbmRleChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JpbmRleChQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgUHlCeXRlc19HRVRfU0laRShzZWxmKSwgYXJncyk7Cit9CisKKworUHlfTE9DQUxfSU5MSU5FKFB5T2JqZWN0ICopCitkb194c3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKnNlcG9iaikKK3sKKyAgICBQeV9idWZmZXIgdnNlcDsKKyAgICBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOworICAgIGNoYXIgKnNlcDsKKyAgICBQeV9zc2l6ZV90IHNlcGxlbjsKKyAgICBQeV9zc2l6ZV90IGksIGo7CisKKyAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHNlcG9iaiwgJnZzZXAsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2VwID0gdnNlcC5idWY7CisgICAgc2VwbGVuID0gdnNlcC5sZW47CisKKyAgICBpID0gMDsKKyAgICBpZiAoc3RyaXB0eXBlICE9IFJJR0hUU1RSSVApIHsKKyAgICAgICAgd2hpbGUgKGkgPCBsZW4gJiYgbWVtY2hyKHNlcCwgUHlfQ0hBUk1BU0soc1tpXSksIHNlcGxlbikpIHsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGogPSBsZW47CisgICAgaWYgKHN0cmlwdHlwZSAhPSBMRUZUU1RSSVApIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgai0tOworICAgICAgICB9IHdoaWxlIChqID49IGkgJiYgbWVtY2hyKHNlcCwgUHlfQ0hBUk1BU0soc1tqXSksIHNlcGxlbikpOworICAgICAgICBqKys7CisgICAgfQorCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdnNlcCk7CisKKyAgICBpZiAoaSA9PSAwICYmIGogPT0gbGVuICYmIFB5Qnl0ZXNfQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocytpLCBqLWkpOworfQorCisKK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQorZG9fc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSkKK3sKKyAgICBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7CisgICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBpLCBqOworCisgICAgaSA9IDA7CisgICAgaWYgKHN0cmlwdHlwZSAhPSBSSUdIVFNUUklQKSB7CisgICAgICAgIHdoaWxlIChpIDwgbGVuICYmIFB5X0lTU1BBQ0Uoc1tpXSkpIHsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGogPSBsZW47CisgICAgaWYgKHN0cmlwdHlwZSAhPSBMRUZUU1RSSVApIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgai0tOworICAgICAgICB9IHdoaWxlIChqID49IGkgJiYgUHlfSVNTUEFDRShzW2pdKSk7CisgICAgICAgIGorKzsKKyAgICB9CisKKyAgICBpZiAoaSA9PSAwICYmIGogPT0gbGVuICYmIFB5Qnl0ZXNfQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICBQeV9JTkNSRUYoc2VsZik7CisgICAgICAgIHJldHVybiAoUHlPYmplY3QqKXNlbGY7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocytpLCBqLWkpOworfQorCisKK1B5X0xPQ0FMX0lOTElORShQeU9iamVjdCAqKQorZG9fYXJnc3RyaXAoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IHN0cmlwdHlwZSwgUHlPYmplY3QgKmJ5dGVzKQoreworICAgIGlmIChieXRlcyAhPSBOVUxMICYmIGJ5dGVzICE9IFB5X05vbmUpIHsKKyAgICAgICAgcmV0dXJuIGRvX3hzdHJpcChzZWxmLCBzdHJpcHR5cGUsIGJ5dGVzKTsKKyAgICB9CisgICAgcmV0dXJuIGRvX3N0cmlwKHNlbGYsIHN0cmlwdHlwZSk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLnN0cmlwCisKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgbGVhZGluZyBhbmQgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3N0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM3YzIyOGQzYmQxMDRhMWIgaW5wdXQ9OGEzNTQ2NDBlNGUwYjNlZl0qLworeworICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBCT1RIU1RSSVAsIGJ5dGVzKTsKK30KKworLypbY2xpbmljIGlucHV0XQorYnl0ZXMubHN0cmlwCisKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgbGVhZGluZyBieXRlcyBjb250YWluZWQgaW4gdGhlIGFyZ3VtZW50LgorCitJZiB0aGUgYXJndW1lbnQgaXMgb21pdHRlZCBvciBOb25lLCBzdHJpcCBsZWFkaW5nICBBU0NJSSB3aGl0ZXNwYWNlLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfbHN0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTI4NjAyZTU4NmY1MjRlODIgaW5wdXQ9OWJhZmY0Mzk4YzNmNjg1N10qLworeworICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBMRUZUU1RSSVAsIGJ5dGVzKTsKK30KKworLypbY2xpbmljIGlucHV0XQorYnl0ZXMucnN0cmlwCisKKyAgICBieXRlczogb2JqZWN0ID0gTm9uZQorICAgIC8KKworU3RyaXAgdHJhaWxpbmcgYnl0ZXMgY29udGFpbmVkIGluIHRoZSBhcmd1bWVudC4KKworSWYgdGhlIGFyZ3VtZW50IGlzIG9taXR0ZWQgb3IgTm9uZSwgc3RyaXAgdHJhaWxpbmcgQVNDSUkgd2hpdGVzcGFjZS4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NDdlMzgxNWM5NTQ0N2RhIGlucHV0PWI3OGFmNDQ1YzcyN2UzMmJdKi8KK3sKKyAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgUklHSFRTVFJJUCwgYnl0ZXMpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19jb3VudChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvdW50KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitieXRlcy50cmFuc2xhdGUKKworICAgIHRhYmxlOiBvYmplY3QKKyAgICAgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni4KKyAgICAvCisgICAgZGVsZXRlIGFzIGRlbGV0ZWNoYXJzOiBvYmplY3QoY19kZWZhdWx0PSJOVUxMIikgPSBiJycKKworUmV0dXJuIGEgY29weSB3aXRoIGVhY2ggY2hhcmFjdGVyIG1hcHBlZCBieSB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCisKK0FsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLgorVGhlIHJlbWFpbmluZyBjaGFyYWN0ZXJzIGFyZSBtYXBwZWQgdGhyb3VnaCB0aGUgZ2l2ZW4gdHJhbnNsYXRpb24gdGFibGUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDNiZTM0MzdmMTk1NjIxMSBpbnB1dD0wZWNkZjE1OWY2NTQyMzNjXSovCit7CisgICAgY2hhciAqaW5wdXQsICpvdXRwdXQ7CisgICAgUHlfYnVmZmVyIHRhYmxlX3ZpZXcgPSB7TlVMTCwgTlVMTH07CisgICAgUHlfYnVmZmVyIGRlbF90YWJsZV92aWV3ID0ge05VTEwsIE5VTEx9OworICAgIGNvbnN0IGNoYXIgKnRhYmxlX2NoYXJzOworICAgIFB5X3NzaXplX3QgaSwgYywgY2hhbmdlZCA9IDA7CisgICAgUHlPYmplY3QgKmlucHV0X29iaiA9IChQeU9iamVjdCopc2VsZjsKKyAgICBjb25zdCBjaGFyICpvdXRwdXRfc3RhcnQsICpkZWxfdGFibGVfY2hhcnM9TlVMTDsKKyAgICBQeV9zc2l6ZV90IGlubGVuLCB0YWJsZW4sIGRlbGxlbiA9IDA7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBpbnQgdHJhbnNfdGFibGVbMjU2XTsKKworICAgIGlmIChQeUJ5dGVzX0NoZWNrKHRhYmxlKSkgeworICAgICAgICB0YWJsZV9jaGFycyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHRhYmxlKTsKKyAgICAgICAgdGFibGVuID0gUHlCeXRlc19HRVRfU0laRSh0YWJsZSk7CisgICAgfQorICAgIGVsc2UgaWYgKHRhYmxlID09IFB5X05vbmUpIHsKKyAgICAgICAgdGFibGVfY2hhcnMgPSBOVUxMOworICAgICAgICB0YWJsZW4gPSAyNTY7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHRhYmxlLCAmdGFibGVfdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHRhYmxlX2NoYXJzID0gdGFibGVfdmlldy5idWY7CisgICAgICAgIHRhYmxlbiA9IHRhYmxlX3ZpZXcubGVuOworICAgIH0KKworICAgIGlmICh0YWJsZW4gIT0gMjU2KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICJ0cmFuc2xhdGlvbiB0YWJsZSBtdXN0IGJlIDI1NiBjaGFyYWN0ZXJzIGxvbmciKTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdGFibGVfdmlldyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChkZWxldGVjaGFycyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKGRlbGV0ZWNoYXJzKSkgeworICAgICAgICAgICAgZGVsX3RhYmxlX2NoYXJzID0gUHlCeXRlc19BU19TVFJJTkcoZGVsZXRlY2hhcnMpOworICAgICAgICAgICAgZGVsbGVuID0gUHlCeXRlc19HRVRfU0laRShkZWxldGVjaGFycyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKGRlbGV0ZWNoYXJzLCAmZGVsX3RhYmxlX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkgeworICAgICAgICAgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnRhYmxlX3ZpZXcpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZGVsX3RhYmxlX2NoYXJzID0gZGVsX3RhYmxlX3ZpZXcuYnVmOworICAgICAgICAgICAgZGVsbGVuID0gZGVsX3RhYmxlX3ZpZXcubGVuOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkZWxfdGFibGVfY2hhcnMgPSBOVUxMOworICAgICAgICBkZWxsZW4gPSAwOworICAgIH0KKworICAgIGlubGVuID0gUHlCeXRlc19HRVRfU0laRShpbnB1dF9vYmopOworICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBpbmxlbik7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRlbF90YWJsZV92aWV3KTsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdGFibGVfdmlldyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOworICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcoaW5wdXRfb2JqKTsKKworICAgIGlmIChkZWxsZW4gPT0gMCAmJiB0YWJsZV9jaGFycyAhPSBOVUxMKSB7CisgICAgICAgIC8qIElmIG5vIGRlbGV0aW9ucyBhcmUgcmVxdWlyZWQsIHVzZSBmYXN0ZXIgY29kZSAqLworICAgICAgICBmb3IgKGkgPSBpbmxlbjsgLS1pID49IDA7ICkgeworICAgICAgICAgICAgYyA9IFB5X0NIQVJNQVNLKCppbnB1dCsrKTsKKyAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygoKm91dHB1dCsrID0gdGFibGVfY2hhcnNbY10pKSAhPSBjKQorICAgICAgICAgICAgICAgIGNoYW5nZWQgPSAxOworICAgICAgICB9CisgICAgICAgIGlmICghY2hhbmdlZCAmJiBQeUJ5dGVzX0NoZWNrRXhhY3QoaW5wdXRfb2JqKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGlucHV0X29iaik7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGlucHV0X29iajsKKyAgICAgICAgfQorICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkZWxfdGFibGVfdmlldyk7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnRhYmxlX3ZpZXcpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlmICh0YWJsZV9jaGFycyA9PSBOVUxMKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCAyNTY7IGkrKykKKyAgICAgICAgICAgIHRyYW5zX3RhYmxlW2ldID0gUHlfQ0hBUk1BU0soaSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKQorICAgICAgICAgICAgdHJhbnNfdGFibGVbaV0gPSBQeV9DSEFSTUFTSyh0YWJsZV9jaGFyc1tpXSk7CisgICAgfQorICAgIFB5QnVmZmVyX1JlbGVhc2UoJnRhYmxlX3ZpZXcpOworCisgICAgZm9yIChpID0gMDsgaSA8IGRlbGxlbjsgaSsrKQorICAgICAgICB0cmFuc190YWJsZVsoaW50KSBQeV9DSEFSTUFTSyhkZWxfdGFibGVfY2hhcnNbaV0pXSA9IC0xOworICAgIFB5QnVmZmVyX1JlbGVhc2UoJmRlbF90YWJsZV92aWV3KTsKKworICAgIGZvciAoaSA9IGlubGVuOyAtLWkgPj0gMDsgKSB7CisgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqaW5wdXQrKyk7CisgICAgICAgIGlmICh0cmFuc190YWJsZVtjXSAhPSAtMSkKKyAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygqb3V0cHV0KysgPSAoY2hhcil0cmFuc190YWJsZVtjXSkgPT0gYykKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgY2hhbmdlZCA9IDE7CisgICAgfQorICAgIGlmICghY2hhbmdlZCAmJiBQeUJ5dGVzX0NoZWNrRXhhY3QoaW5wdXRfb2JqKSkgeworICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgUHlfSU5DUkVGKGlucHV0X29iaik7CisgICAgICAgIHJldHVybiBpbnB1dF9vYmo7CisgICAgfQorICAgIC8qIEZpeCB0aGUgc2l6ZSBvZiB0aGUgcmVzdWx0aW5nIHN0cmluZyAqLworICAgIGlmIChpbmxlbiA+IDApCisgICAgICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBvdXRwdXQgLSBvdXRwdXRfc3RhcnQpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorCitAc3RhdGljbWV0aG9kCitieXRlcy5tYWtldHJhbnMKKworICAgIGZybTogUHlfYnVmZmVyCisgICAgdG86IFB5X2J1ZmZlcgorICAgIC8KKworUmV0dXJuIGEgdHJhbnNsYXRpb24gdGFibGUgdXNlYWJsZSBmb3IgdGhlIGJ5dGVzIG9yIGJ5dGVhcnJheSB0cmFuc2xhdGUgbWV0aG9kLgorCitUaGUgcmV0dXJuZWQgdGFibGUgd2lsbCBiZSBvbmUgd2hlcmUgZWFjaCBieXRlIGluIGZybSBpcyBtYXBwZWQgdG8gdGhlIGJ5dGUgYXQKK3RoZSBzYW1lIHBvc2l0aW9uIGluIHRvLgorCitUaGUgYnl0ZXMgb2JqZWN0cyBmcm0gYW5kIHRvIG11c3QgYmUgb2YgdGhlIHNhbWUgbGVuZ3RoLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfbWFrZXRyYW5zX2ltcGwoUHlfYnVmZmVyICpmcm0sIFB5X2J1ZmZlciAqdG8pCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTM2ZjYzOTlkNGI3N2Y2ZiBpbnB1dD1kZTdhOGZjNTYzMmJiOGYxXSovCit7CisgICAgcmV0dXJuIF9QeV9ieXRlc19tYWtldHJhbnMoZnJtLCB0byk7Cit9CisKKworLypbY2xpbmljIGlucHV0XQorYnl0ZXMucmVwbGFjZQorCisgICAgb2xkOiBQeV9idWZmZXIKKyAgICBuZXc6IFB5X2J1ZmZlcgorICAgIGNvdW50OiBQeV9zc2l6ZV90ID0gLTEKKyAgICAgICAgTWF4aW11bSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgdG8gcmVwbGFjZS4KKyAgICAgICAgLTEgKHRoZSBkZWZhdWx0IHZhbHVlKSBtZWFucyByZXBsYWNlIGFsbCBvY2N1cnJlbmNlcy4KKyAgICAvCisKK1JldHVybiBhIGNvcHkgd2l0aCBhbGwgb2NjdXJyZW5jZXMgb2Ygc3Vic3RyaW5nIG9sZCByZXBsYWNlZCBieSBuZXcuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBjb3VudCBpcyBnaXZlbiwgb25seSB0aGUgZmlyc3QgY291bnQgb2NjdXJyZW5jZXMgYXJlCityZXBsYWNlZC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCisgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjb3VudCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTRmYTU4OGI2YjljMTA0IGlucHV0PWIyZmJiZjBiZjA0ZGU4ZTVdKi8KK3sKKyAgICByZXR1cm4gc3RyaW5nbGliX3JlcGxhY2UoKFB5T2JqZWN0ICopc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilvbGQtPmJ1Ziwgb2xkLT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7Cit9CisKKy8qKiBFbmQgREFMS0UgKiovCisKKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX3N0YXJ0c3dpdGgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIF9QeV9ieXRlc19zdGFydHN3aXRoKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX2VuZHN3aXRoKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIHJldHVybiBfUHlfYnl0ZXNfZW5kc3dpdGgoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOworfQorCisKKy8qW2NsaW5pYyBpbnB1dF0KK2J5dGVzLmRlY29kZQorCisgICAgZW5jb2Rpbmc6IHN0cihjX2RlZmF1bHQ9Ik5VTEwiKSA9ICd1dGYtOCcKKyAgICAgICAgVGhlIGVuY29kaW5nIHdpdGggd2hpY2ggdG8gZGVjb2RlIHRoZSBieXRlcy4KKyAgICBlcnJvcnM6IHN0cihjX2RlZmF1bHQ9Ik5VTEwiKSA9ICdzdHJpY3QnCisgICAgICAgIFRoZSBlcnJvciBoYW5kbGluZyBzY2hlbWUgdG8gdXNlIGZvciB0aGUgaGFuZGxpbmcgb2YgZGVjb2RpbmcgZXJyb3JzLgorICAgICAgICBUaGUgZGVmYXVsdCBpcyAnc3RyaWN0JyBtZWFuaW5nIHRoYXQgZGVjb2RpbmcgZXJyb3JzIHJhaXNlIGEKKyAgICAgICAgVW5pY29kZURlY29kZUVycm9yLiBPdGhlciBwb3NzaWJsZSB2YWx1ZXMgYXJlICdpZ25vcmUnIGFuZCAncmVwbGFjZScKKyAgICAgICAgYXMgd2VsbCBhcyBhbnkgb3RoZXIgbmFtZSByZWdpc3RlcmVkIHdpdGggY29kZWNzLnJlZ2lzdGVyX2Vycm9yIHRoYXQKKyAgICAgICAgY2FuIGhhbmRsZSBVbmljb2RlRGVjb2RlRXJyb3JzLgorCitEZWNvZGUgdGhlIGJ5dGVzIHVzaW5nIHRoZSBjb2RlYyByZWdpc3RlcmVkIGZvciBlbmNvZGluZy4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTU2NDlhNTNkZGUyN2IzMTQgaW5wdXQ9OTU4MTc0NzY5ZDJhNDBjYV0qLworeworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3QoKFB5T2JqZWN0KilzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKK30KKworCisvKltjbGluaWMgaW5wdXRdCitieXRlcy5zcGxpdGxpbmVzCisKKyAgICBrZWVwZW5kczogYm9vbChhY2NlcHQ9e2ludH0pID0gRmFsc2UKKworUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIGJ5dGVzLCBicmVha2luZyBhdCBsaW5lIGJvdW5kYXJpZXMuCisKK0xpbmUgYnJlYWtzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIHJlc3VsdGluZyBsaXN0IHVubGVzcyBrZWVwZW5kcyBpcyBnaXZlbiBhbmQKK3RydWUuCitbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IGtlZXBlbmRzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTM0ODQxNDlhNWQ4ODBmZmIgaW5wdXQ9YThiMzJlYjAxZmY1YTVlZF0qLworeworICAgIHJldHVybiBzdHJpbmdsaWJfc3BsaXRsaW5lcygKKyAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksCisgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGtlZXBlbmRzCisgICAgICAgICk7Cit9CisKKy8qW2NsaW5pYyBpbnB1dF0KK0BjbGFzc21ldGhvZAorYnl0ZXMuZnJvbWhleAorCisgICAgc3RyaW5nOiB1bmljb2RlCisgICAgLworCitDcmVhdGUgYSBieXRlcyBvYmplY3QgZnJvbSBhIHN0cmluZyBvZiBoZXhhZGVjaW1hbCBudW1iZXJzLgorCitTcGFjZXMgYmV0d2VlbiB0d28gbnVtYmVycyBhcmUgYWNjZXB0ZWQuCitFeGFtcGxlOiBieXRlcy5mcm9taGV4KCdCOSAwMUVGJykgLT4gYidcXHhiOVxceDAxXFx4ZWYnLgorW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfZnJvbWhleF9pbXBsKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKnN0cmluZykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0wOTczYWNjNjM2NjFiYjJlIGlucHV0PWJmNGQxYzM2MTY3MGFjZDNdKi8KK3sKKyAgICBQeU9iamVjdCAqcmVzdWx0ID0gX1B5Qnl0ZXNfRnJvbUhleChzdHJpbmcsIDApOworICAgIGlmICh0eXBlICE9ICZQeUJ5dGVzX1R5cGUgJiYgcmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygoUHlPYmplY3QgKil0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwgTlVMTCkpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21IZXgoUHlPYmplY3QgKnN0cmluZywgaW50IHVzZV9ieXRlYXJyYXkpCit7CisgICAgY2hhciAqYnVmOworICAgIFB5X3NzaXplX3QgaGV4bGVuLCBpbnZhbGlkX2NoYXI7CisgICAgdW5zaWduZWQgaW50IHRvcCwgYm90OworICAgIFB5X1VDUzEgKnN0ciwgKmVuZDsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICBfUHlCeXRlc1dyaXRlcl9Jbml0KCZ3cml0ZXIpOworICAgIHdyaXRlci51c2VfYnl0ZWFycmF5ID0gdXNlX2J5dGVhcnJheTsKKworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2soc3RyaW5nKSk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBoZXhsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHJpbmcpOworCisgICAgaWYgKCFQeVVuaWNvZGVfSVNfQVNDSUkoc3RyaW5nKSkgeworICAgICAgICB2b2lkICpkYXRhID0gUHlVbmljb2RlX0RBVEEoc3RyaW5nKTsKKyAgICAgICAgdW5zaWduZWQgaW50IGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOworICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgLyogc2VhcmNoIGZvciB0aGUgZmlyc3Qgbm9uLUFTQ0lJIGNoYXJhY3RlciAqLworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaGV4bGVuOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSA+PSAxMjgpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaW52YWxpZF9jaGFyID0gaTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0tJTkQoc3RyaW5nKSA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCk7CisgICAgc3RyID0gUHlVbmljb2RlXzFCWVRFX0RBVEEoc3RyaW5nKTsKKworICAgIC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCisgICAgYnVmID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgaGV4bGVuIC8gMik7CisgICAgaWYgKGJ1ZiA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGVuZCA9IHN0ciArIGhleGxlbjsKKyAgICB3aGlsZSAoc3RyIDwgZW5kKSB7CisgICAgICAgIC8qIHNraXAgb3ZlciBzcGFjZXMgaW4gdGhlIGlucHV0ICovCisgICAgICAgIGlmIChQeV9JU1NQQUNFKCpzdHIpKSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgc3RyKys7CisgICAgICAgICAgICB9IHdoaWxlIChQeV9JU1NQQUNFKCpzdHIpKTsKKyAgICAgICAgICAgIGlmIChzdHIgPj0gZW5kKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgdG9wID0gX1B5TG9uZ19EaWdpdFZhbHVlWypzdHJdOworICAgICAgICBpZiAodG9wID49IDE2KSB7CisgICAgICAgICAgICBpbnZhbGlkX2NoYXIgPSBzdHIgLSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzdHIrKzsKKworICAgICAgICBib3QgPSBfUHlMb25nX0RpZ2l0VmFsdWVbKnN0cl07CisgICAgICAgIGlmIChib3QgPj0gMTYpIHsKKyAgICAgICAgICAgIGludmFsaWRfY2hhciA9IHN0ciAtIFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHN0cisrOworCisgICAgICAgICpidWYrKyA9ICh1bnNpZ25lZCBjaGFyKSgodG9wIDw8IDQpICsgYm90KTsKKyAgICB9CisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIGJ1Zik7CisKKyAgZXJyb3I6CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICJub24taGV4YWRlY2ltYWwgbnVtYmVyIGZvdW5kIGluICIKKyAgICAgICAgICAgICAgICAgImZyb21oZXgoKSBhcmcgYXQgcG9zaXRpb24gJXpkIiwgaW52YWxpZF9jaGFyKTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOworICAgIHJldHVybiBOVUxMOworfQorCitQeURvY19TVFJWQVIoaGV4X19kb2NfXywKKyJCLmhleCgpIC0+IHN0cmluZ1xuXAorXG5cCitDcmVhdGUgYSBzdHJpbmcgb2YgaGV4YWRlY2ltYWwgbnVtYmVycyBmcm9tIGEgYnl0ZXMgb2JqZWN0LlxuXAorRXhhbXBsZTogYidcXHhiOVxceDAxXFx4ZWYnLmhleCgpIC0+ICdiOTAxZWYnLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfaGV4KFB5Qnl0ZXNPYmplY3QgKnNlbGYpCit7CisgICAgY2hhciogYXJnYnVmID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7CisgICAgUHlfc3NpemVfdCBhcmdsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOworICAgIHJldHVybiBfUHlfc3RyaGV4KGFyZ2J1ZiwgYXJnbGVuKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2J5dGVzX2dldG5ld2FyZ3MoUHlCeXRlc09iamVjdCAqdikKK3sKKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKHkjKSIsIHYtPm9iX3N2YWwsIFB5X1NJWkUodikpOworfQorCisKK3N0YXRpYyBQeU1ldGhvZERlZgorYnl0ZXNfbWV0aG9kc1tdID0geworICAgIHsiX19nZXRuZXdhcmdzX18iLCAgICAgICAgICAoUHlDRnVuY3Rpb24pYnl0ZXNfZ2V0bmV3YXJncywgIE1FVEhfTk9BUkdTfSwKKyAgICB7ImNhcGl0YWxpemUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NhcGl0YWxpemUsIE1FVEhfTk9BUkdTLAorICAgICBfUHlfY2FwaXRhbGl6ZV9fZG9jX199LAorICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NlbnRlcl9fZG9jX199LAorICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfY291bnQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2NvdW50X19kb2NfX30sCisgICAgQllURVNfREVDT0RFX01FVEhPRERFRgorICAgIHsiZW5kc3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2VuZHN3aXRoX19kb2NfX30sCisgICAgeyJleHBhbmR0YWJzIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9leHBhbmR0YWJzLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICBfUHlfZXhwYW5kdGFic19fZG9jX199LAorICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19maW5kLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9maW5kX19kb2NfX30sCisgICAgQllURVNfRlJPTUhFWF9NRVRIT0RERUYKKyAgICB7ImhleCIsIChQeUNGdW5jdGlvbilieXRlc19oZXgsIE1FVEhfTk9BUkdTLCBoZXhfX2RvY19ffSwKKyAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2luZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9pbmRleF9fZG9jX199LAorICAgIHsiaXNhbG51bSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbG51bSwgTUVUSF9OT0FSR1MsCisgICAgIF9QeV9pc2FsbnVtX19kb2NfX30sCisgICAgeyJpc2FscGhhIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FscGhhLCBNRVRIX05PQVJHUywKKyAgICAgX1B5X2lzYWxwaGFfX2RvY19ffSwKKyAgICB7ImlzZGlnaXQiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzZGlnaXQsIE1FVEhfTk9BUkdTLAorICAgICBfUHlfaXNkaWdpdF9fZG9jX199LAorICAgIHsiaXNsb3dlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNsb3dlciwgTUVUSF9OT0FSR1MsCisgICAgIF9QeV9pc2xvd2VyX19kb2NfX30sCisgICAgeyJpc3NwYWNlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc3NwYWNlLCBNRVRIX05PQVJHUywKKyAgICAgX1B5X2lzc3BhY2VfX2RvY19ffSwKKyAgICB7ImlzdGl0bGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzdGl0bGUsIE1FVEhfTk9BUkdTLAorICAgICBfUHlfaXN0aXRsZV9fZG9jX199LAorICAgIHsiaXN1cHBlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXN1cHBlciwgTUVUSF9OT0FSR1MsCisgICAgIF9QeV9pc3VwcGVyX19kb2NfX30sCisgICAgQllURVNfSk9JTl9NRVRIT0RERUYKKyAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfbGp1c3RfX2RvY19ffSwKKyAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAorICAgIEJZVEVTX0xTVFJJUF9NRVRIT0RERUYKKyAgICBCWVRFU19NQUtFVFJBTlNfTUVUSE9EREVGCisgICAgQllURVNfUEFSVElUSU9OX01FVEhPRERFRgorICAgIEJZVEVTX1JFUExBQ0VfTUVUSE9EREVGCisgICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19yZmluZCwgTUVUSF9WQVJBUkdTLCBfUHlfcmZpbmRfX2RvY19ffSwKKyAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlc19yaW5kZXgsIE1FVEhfVkFSQVJHUywgX1B5X3JpbmRleF9fZG9jX199LAorICAgIHsicmp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3JqdXN0LCBNRVRIX1ZBUkFSR1MsIF9QeV9yanVzdF9fZG9jX199LAorICAgIEJZVEVTX1JQQVJUSVRJT05fTUVUSE9EREVGCisgICAgQllURVNfUlNQTElUX01FVEhPRERFRgorICAgIEJZVEVTX1JTVFJJUF9NRVRIT0RERUYKKyAgICBCWVRFU19TUExJVF9NRVRIT0RERUYKKyAgICBCWVRFU19TUExJVExJTkVTX01FVEhPRERFRgorICAgIHsic3RhcnRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlc19zdGFydHN3aXRoLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9zdGFydHN3aXRoX19kb2NfX30sCisgICAgQllURVNfU1RSSVBfTUVUSE9EREVGCisgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLAorICAgICBfUHlfc3dhcGNhc2VfX2RvY19ffSwKKyAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl90aXRsZSwgTUVUSF9OT0FSR1MsIF9QeV90aXRsZV9fZG9jX199LAorICAgIEJZVEVTX1RSQU5TTEFURV9NRVRIT0RERUYKKyAgICB7InVwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl91cHBlciwgTUVUSF9OT0FSR1MsIF9QeV91cHBlcl9fZG9jX199LAorICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIF9QeV96ZmlsbF9fZG9jX199LAorICAgIHtOVUxMLCAgICAgTlVMTH0gICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19tb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCit7CisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHNlbGYpKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKKyAgICB9CisgICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdEV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIDApOworfQorCitzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVzX2FzX251bWJlciA9IHsKKyAgICAwLCAgICAgICAgICAgICAgLypuYl9hZGQqLworICAgIDAsICAgICAgICAgICAgICAvKm5iX3N1YnRyYWN0Ki8KKyAgICAwLCAgICAgICAgICAgICAgLypuYl9tdWx0aXBseSovCisgICAgYnl0ZXNfbW9kLCAgICAgIC8qbmJfcmVtYWluZGVyKi8KK307CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zdWJ0eXBlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCit7CisgICAgUHlPYmplY3QgKnggPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICplcnJvcnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpuZXcgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jOworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBzdGF0aWMgY2hhciAqa3dsaXN0W10gPSB7InNvdXJjZSIsICJlbmNvZGluZyIsICJlcnJvcnMiLCAwfTsKKyAgICBfUHlfSURFTlRJRklFUihfX2J5dGVzX18pOworCisgICAgaWYgKHR5cGUgIT0gJlB5Qnl0ZXNfVHlwZSkKKyAgICAgICAgcmV0dXJuIGJ5dGVzX3N1YnR5cGVfbmV3KHR5cGUsIGFyZ3MsIGt3ZHMpOworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8T3NzOmJ5dGVzIiwga3dsaXN0LCAmeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZW5jb2RpbmcsICZlcnJvcnMpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChlbmNvZGluZyAhPSBOVUxMIHx8IGVycm9ycyAhPSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGluZyBvciBlcnJvcnMgd2l0aG91dCBzZXF1ZW5jZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50Iik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICB9CisKKyAgICBpZiAoZW5jb2RpbmcgIT0gTlVMTCkgeworICAgICAgICAvKiBFbmNvZGUgdmlhIHRoZSBjb2RlYyByZWdpc3RyeSAqLworICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh4KSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZW5jb2Rpbmcgd2l0aG91dCBhIHN0cmluZyBhcmd1bWVudCIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbmV3ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh4LCBlbmNvZGluZywgZXJyb3JzKTsKKyAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKG5ldykpOworICAgICAgICByZXR1cm4gbmV3OworICAgIH0KKworICAgIGlmIChlcnJvcnMgIT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0NoZWNrKHgpID8KKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgYXJndW1lbnQgd2l0aG91dCBhbiBlbmNvZGluZyIgOgorICAgICAgICAgICAgICAgICAgICAgICAgImVycm9ycyB3aXRob3V0IGEgc3RyaW5nIGFyZ3VtZW50Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qIFdlJ2QgbGlrZSB0byBjYWxsIFB5T2JqZWN0X0J5dGVzIGhlcmUsIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGZvciBhbgorICAgICAgIGludGVnZXIgYXJndW1lbnQgYmVmb3JlIGRlZmVycmluZyB0byBQeUJ5dGVzX0Zyb21PYmplY3QsIHNvbWV0aGluZworICAgICAgIFB5T2JqZWN0X0J5dGVzIGRvZXNuJ3QgZG8uICovCisgICAgZnVuYyA9IF9QeU9iamVjdF9Mb29rdXBTcGVjaWFsKHgsICZQeUlkX19fYnl0ZXNfXyk7CisgICAgaWYgKGZ1bmMgIT0gTlVMTCkgeworICAgICAgICBuZXcgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIGlmIChuZXcgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sobmV3KSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiX19ieXRlc19fIHJldHVybmVkIG5vbi1ieXRlcyAodHlwZSAlLjIwMHMpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5ldyktPnRwX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbmV3OworICAgIH0KKyAgICBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGlmIChQeVVuaWNvZGVfQ2hlY2soeCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdHJpbmcgYXJndW1lbnQgd2l0aG91dCBhbiBlbmNvZGluZyIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgLyogSXMgaXQgYW4gaW50ZWdlcj8gKi8KKyAgICBpZiAoUHlJbmRleF9DaGVjayh4KSkgeworICAgICAgICBzaXplID0gUHlOdW1iZXJfQXNTc2l6ZV90KHgsIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgICAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19PdmVyZmxvd0Vycm9yKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7ICAvKiBmYWxsIHRocm91Z2ggKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzaXplIDwgMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5ldyA9IF9QeUJ5dGVzX0Zyb21TaXplKHNpemUsIDEpOworICAgICAgICAgICAgaWYgKG5ldyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgcmV0dXJuIG5ldzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBQeUJ5dGVzX0Zyb21PYmplY3QoeCk7Cit9CisKK3N0YXRpYyBQeU9iamVjdCoKK19QeUJ5dGVzX0Zyb21CdWZmZXIoUHlPYmplY3QgKngpCit7CisgICAgUHlPYmplY3QgKm5ldzsKKyAgICBQeV9idWZmZXIgdmlldzsKKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoeCwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHZpZXcubGVuKTsKKyAgICBpZiAoIW5ldykKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbCwKKyAgICAgICAgICAgICAgICAmdmlldywgdmlldy5sZW4sICdDJykgPCAwKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIG5ldzsKKworZmFpbDoKKyAgICBQeV9YREVDUkVGKG5ldyk7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNkZWZpbmUgX1B5Qnl0ZXNfRlJPTV9MSVNUX0JPRFkoeCwgR0VUX0lURU0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeU9iamVjdCAqYnl0ZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X3NzaXplX3QgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjaGFyICpzdHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlPYmplY3QgKml0ZW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgUHlfU0laRSh4KSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdHIgPSAoKFB5Qnl0ZXNPYmplY3QgKilieXRlcyktPm9iX3N2YWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaXRlbSA9IEdFVF9JVEVNKCh4KSwgaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIE5VTEwpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDI1NikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOyAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gYnl0ZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworc3RhdGljIFB5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbUxpc3QoUHlPYmplY3QgKngpCit7CisgICAgX1B5Qnl0ZXNfRlJPTV9MSVNUX0JPRFkoeCwgUHlMaXN0X0dFVF9JVEVNKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbVR1cGxlKFB5T2JqZWN0ICp4KQoreworICAgIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIFB5VHVwbGVfR0VUX0lURU0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorX1B5Qnl0ZXNfRnJvbUl0ZXJhdG9yKFB5T2JqZWN0ICppdCwgUHlPYmplY3QgKngpCit7CisgICAgY2hhciAqc3RyOworICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKyAgICBfUHlCeXRlc1dyaXRlciB3cml0ZXI7CisKKyAgICAvKiBGb3IgaXRlcmF0b3IgdmVyc2lvbiwgY3JlYXRlIGEgc3RyaW5nIG9iamVjdCBhbmQgcmVzaXplIGFzIG5lZWRlZCAqLworICAgIHNpemUgPSBQeU9iamVjdF9MZW5ndGhIaW50KHgsIDY0KTsKKyAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKKyAgICBzaXplID0gd3JpdGVyLmFsbG9jYXRlZDsKKworICAgIC8qIFJ1biB0aGUgaXRlcmF0b3IgdG8gZXhoYXVzdGlvbiAqLworICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtOworICAgICAgICBQeV9zc2l6ZV90IHZhbHVlOworCisgICAgICAgIC8qIEdldCB0aGUgbmV4dCBpdGVtICovCisgICAgICAgIGl0ZW0gPSBQeUl0ZXJfTmV4dChpdCk7CisgICAgICAgIGlmIChpdGVtID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8qIEludGVycHJldCBpdCBhcyBhbiBpbnQgKF9faW5kZXhfXykgKi8KKyAgICAgICAgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKKyAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIC8qIFJhbmdlIGNoZWNrICovCisgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPj0gMjU2KSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisKKyAgICAgICAgLyogQXBwZW5kIHRoZSBieXRlICovCisgICAgICAgIGlmIChpID49IHNpemUpIHsKKyAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1Jlc2l6ZSgmd3JpdGVyLCBzdHIsIHNpemUrMSk7CisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBzaXplID0gd3JpdGVyLmFsbG9jYXRlZDsKKyAgICAgICAgfQorICAgICAgICAqc3RyKysgPSAoY2hhcikgdmFsdWU7CisgICAgfQorCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBzdHIpOworCisgIGVycm9yOgorICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0ICoKK1B5Qnl0ZXNfRnJvbU9iamVjdChQeU9iamVjdCAqeCkKK3sKKyAgICBQeU9iamVjdCAqaXQsICpyZXN1bHQ7CisKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHgpKSB7CisgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgLyogVXNlIHRoZSBtb2Rlcm4gYnVmZmVyIGludGVyZmFjZSAqLworICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih4KSkKKyAgICAgICAgcmV0dXJuIF9QeUJ5dGVzX0Zyb21CdWZmZXIoeCk7CisKKyAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tTGlzdCh4KTsKKworICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tVHVwbGUoeCk7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh4KSkgeworICAgICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoeCk7CisgICAgICAgIGlmIChpdCAhPSBOVUxMKSB7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlCeXRlc19Gcm9tSXRlcmF0b3IoaXQsIHgpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgJyUuMjAwcycgb2JqZWN0IHRvIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgeC0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitieXRlc19zdWJ0eXBlX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqdG1wLCAqcG5ldzsKKyAgICBQeV9zc2l6ZV90IG47CisKKyAgICBhc3NlcnQoUHlUeXBlX0lzU3VidHlwZSh0eXBlLCAmUHlCeXRlc19UeXBlKSk7CisgICAgdG1wID0gYnl0ZXNfbmV3KCZQeUJ5dGVzX1R5cGUsIGFyZ3MsIGt3ZHMpOworICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sodG1wKSk7CisgICAgbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodG1wKTsKKyAgICBwbmV3ID0gdHlwZS0+dHBfYWxsb2ModHlwZSwgbik7CisgICAgaWYgKHBuZXcgIT0gTlVMTCkgeworICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcocG5ldyksCisgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh0bXApLCBuKzEpOworICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKilwbmV3KS0+b2Jfc2hhc2ggPQorICAgICAgICAgICAgKChQeUJ5dGVzT2JqZWN0ICopdG1wKS0+b2Jfc2hhc2g7CisgICAgfQorICAgIFB5X0RFQ1JFRih0bXApOworICAgIHJldHVybiBwbmV3OworfQorCitQeURvY19TVFJWQVIoYnl0ZXNfZG9jLAorImJ5dGVzKGl0ZXJhYmxlX29mX2ludHMpIC0+IGJ5dGVzXG5cCitieXRlcyhzdHJpbmcsIGVuY29kaW5nWywgZXJyb3JzXSkgLT4gYnl0ZXNcblwKK2J5dGVzKGJ5dGVzX29yX2J1ZmZlcikgLT4gaW1tdXRhYmxlIGNvcHkgb2YgYnl0ZXNfb3JfYnVmZmVyXG5cCitieXRlcyhpbnQpIC0+IGJ5dGVzIG9iamVjdCBvZiBzaXplIGdpdmVuIGJ5IHRoZSBwYXJhbWV0ZXIgaW5pdGlhbGl6ZWQgd2l0aCBudWxsIGJ5dGVzXG5cCitieXRlcygpIC0+IGVtcHR5IGJ5dGVzIG9iamVjdFxuXAorXG5cCitDb25zdHJ1Y3QgYW4gaW1tdXRhYmxlIGFycmF5IG9mIGJ5dGVzIGZyb206XG5cCisgIC0gYW4gaXRlcmFibGUgeWllbGRpbmcgaW50ZWdlcnMgaW4gcmFuZ2UoMjU2KVxuXAorICAtIGEgdGV4dCBzdHJpbmcgZW5jb2RlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGVuY29kaW5nXG5cCisgIC0gYW55IG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlIGJ1ZmZlciBBUEkuXG5cCisgIC0gYW4gaW50ZWdlciIpOworCitzdGF0aWMgUHlPYmplY3QgKmJ5dGVzX2l0ZXIoUHlPYmplY3QgKnNlcSk7CisKK1B5VHlwZU9iamVjdCBQeUJ5dGVzX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiYnl0ZXMiLAorICAgIFB5Qnl0ZXNPYmplY3RfU0laRSwKKyAgICBzaXplb2YoY2hhciksCisgICAgYnl0ZXNfZGVhbGxvYywgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVhbGxvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcHJpbnQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3Jlc2VydmVkICovCisgICAgKHJlcHJmdW5jKWJ5dGVzX3JlcHIsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yZXByICovCisgICAgJmJ5dGVzX2FzX251bWJlciwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19udW1iZXIgKi8KKyAgICAmYnl0ZXNfYXNfc2VxdWVuY2UsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX3NlcXVlbmNlICovCisgICAgJmJ5dGVzX2FzX21hcHBpbmcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19tYXBwaW5nICovCisgICAgKGhhc2hmdW5jKWJ5dGVzX2hhc2gsICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9oYXNoICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jYWxsICovCisgICAgYnl0ZXNfc3RyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zdHIgKi8KKyAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLworICAgICZieXRlc19hc19idWZmZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19CQVNFVFlQRSB8CisgICAgICAgIFB5X1RQRkxBR1NfQllURVNfU1VCQ0xBU1MsICAgICAgICAgICAgICAvKiB0cF9mbGFncyAqLworICAgIGJ5dGVzX2RvYywgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KKyAgICAocmljaGNtcGZ1bmMpYnl0ZXNfcmljaGNvbXBhcmUsICAgICAgICAgICAgIC8qIHRwX3JpY2hjb21wYXJlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF93ZWFrbGlzdG9mZnNldCAqLworICAgIGJ5dGVzX2l0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlcm5leHQgKi8KKyAgICBieXRlc19tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ldGhvZHMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21lbWJlcnMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldHNldCAqLworICAgICZQeUJhc2VPYmplY3RfVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGljdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZGVzY3JfZ2V0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZXNjcl9zZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RpY3RvZmZzZXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2luaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FsbG9jICovCisgICAgYnl0ZXNfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9uZXcgKi8KKyAgICBQeU9iamVjdF9EZWwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2ZyZWUgKi8KK307CisKK3ZvaWQKK1B5Qnl0ZXNfQ29uY2F0KFB5T2JqZWN0ICoqcHYsIFB5T2JqZWN0ICp3KQoreworICAgIGFzc2VydChwdiAhPSBOVUxMKTsKKyAgICBpZiAoKnB2ID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAodyA9PSBOVUxMKSB7CisgICAgICAgIFB5X0NMRUFSKCpwdik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoUHlfUkVGQ05UKCpwdikgPT0gMSAmJiBQeUJ5dGVzX0NoZWNrRXhhY3QoKnB2KSkgeworICAgICAgICAvKiBPbmx5IG9uZSByZWZlcmVuY2UsIHNvIHdlIGNhbiByZXNpemUgaW4gcGxhY2UgKi8KKyAgICAgICAgUHlfc3NpemVfdCBvbGRzaXplOworICAgICAgICBQeV9idWZmZXIgd2I7CisKKyAgICAgICAgd2IubGVuID0gLTE7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIodywgJndiLCBQeUJVRl9TSU1QTEUpICE9IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJjYW4ndCBjb25jYXQgJS4xMDBzIHRvICUuMTAwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh3KS0+dHBfbmFtZSwgUHlfVFlQRSgqcHYpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIFB5X0NMRUFSKCpwdik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBvbGRzaXplID0gUHlCeXRlc19HRVRfU0laRSgqcHYpOworICAgICAgICBpZiAob2xkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gd2IubGVuKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKHB2LCBvbGRzaXplICsgd2IubGVuKSA8IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORygqcHYpICsgb2xkc2l6ZSwgd2IuYnVmLCB3Yi5sZW4pOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ3Yik7CisgICAgICAgIHJldHVybjsKKworICAgICAgZXJyb3I6CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJndiKTsKKyAgICAgICAgUHlfQ0xFQVIoKnB2KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVsc2UgeworICAgICAgICAvKiBNdWx0aXBsZSByZWZlcmVuY2VzLCBuZWVkIHRvIGNyZWF0ZSBuZXcgb2JqZWN0ICovCisgICAgICAgIFB5T2JqZWN0ICp2OworICAgICAgICB2ID0gYnl0ZXNfY29uY2F0KCpwdiwgdyk7CisgICAgICAgIFB5X1NFVFJFRigqcHYsIHYpOworICAgIH0KK30KKwordm9pZAorUHlCeXRlc19Db25jYXRBbmREZWwoUHlPYmplY3QgKipwdiwgUHlPYmplY3QgKncpCit7CisgICAgUHlCeXRlc19Db25jYXQocHYsIHcpOworICAgIFB5X1hERUNSRUYodyk7Cit9CisKKworLyogVGhlIGZvbGxvd2luZyBmdW5jdGlvbiBicmVha3MgdGhlIG5vdGlvbiB0aGF0IGJ5dGVzIGFyZSBpbW11dGFibGU6CisgICBpdCBjaGFuZ2VzIHRoZSBzaXplIG9mIGEgYnl0ZXMgb2JqZWN0LiAgV2UgZ2V0IGF3YXkgd2l0aCB0aGlzIG9ubHkgaWYgdGhlcmUKKyAgIGlzIG9ubHkgb25lIG1vZHVsZSByZWZlcmVuY2luZyB0aGUgb2JqZWN0LiAgWW91IGNhbiBhbHNvIHRoaW5rIG9mIGl0CisgICBhcyBjcmVhdGluZyBhIG5ldyBieXRlcyBvYmplY3QgYW5kIGRlc3Ryb3lpbmcgdGhlIG9sZCBvbmUsIG9ubHkKKyAgIG1vcmUgZWZmaWNpZW50bHkuICBJbiBhbnkgY2FzZSwgZG9uJ3QgdXNlIHRoaXMgaWYgdGhlIGJ5dGVzIG9iamVjdCBtYXkKKyAgIGFscmVhZHkgYmUga25vd24gdG8gc29tZSBvdGhlciBwYXJ0IG9mIHRoZSBjb2RlLi4uCisgICBOb3RlIHRoYXQgaWYgdGhlcmUncyBub3QgZW5vdWdoIG1lbW9yeSB0byByZXNpemUgdGhlIGJ5dGVzIG9iamVjdCwgdGhlCisgICBvcmlnaW5hbCBieXRlcyBvYmplY3QgYXQgKnB2IGlzIGRlYWxsb2NhdGVkLCAqcHYgaXMgc2V0IHRvIE5VTEwsIGFuICJvdXQgb2YKKyAgIG1lbW9yeSIgZXhjZXB0aW9uIGlzIHNldCwgYW5kIC0xIGlzIHJldHVybmVkLiAgRWxzZSAob24gc3VjY2VzcykgMCBpcworICAgcmV0dXJuZWQsIGFuZCB0aGUgdmFsdWUgaW4gKnB2IG1heSBvciBtYXkgbm90IGJlIHRoZSBzYW1lIGFzIG9uIGlucHV0LgorICAgQXMgYWx3YXlzLCBhbiBleHRyYSBieXRlIGlzIGFsbG9jYXRlZCBmb3IgYSB0cmFpbGluZyBcMCBieXRlIChuZXdzaXplCisgICBkb2VzICpub3QqIGluY2x1ZGUgdGhhdCksIGFuZCBhIHRyYWlsaW5nIFwwIGJ5dGUgaXMgc3RvcmVkLgorKi8KKworaW50CitfUHlCeXRlc19SZXNpemUoUHlPYmplY3QgKipwdiwgUHlfc3NpemVfdCBuZXdzaXplKQoreworICAgIFB5T2JqZWN0ICp2OworICAgIFB5Qnl0ZXNPYmplY3QgKnN2OworICAgIHYgPSAqcHY7CisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHYpIHx8IG5ld3NpemUgPCAwKSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIGlmIChQeV9TSVpFKHYpID09IG5ld3NpemUpIHsKKyAgICAgICAgLyogcmV0dXJuIGVhcmx5IGlmIG5ld3NpemUgZXF1YWxzIHRvIHYtPm9iX3NpemUgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlmIChQeV9SRUZDTlQodikgIT0gMSkgeworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICAvKiBYWFggVU5SRUYvTkVXUkVGIGludGVyZmFjZSBzaG91bGQgYmUgbW9yZSBzeW1tZXRyaWNhbCAqLworICAgIF9QeV9ERUNfUkVGVE9UQUw7CisgICAgX1B5X0ZvcmdldFJlZmVyZW5jZSh2KTsKKyAgICAqcHYgPSAoUHlPYmplY3QgKikKKyAgICAgICAgUHlPYmplY3RfUkVBTExPQyh2LCBQeUJ5dGVzT2JqZWN0X1NJWkUgKyBuZXdzaXplKTsKKyAgICBpZiAoKnB2ID09IE5VTEwpIHsKKyAgICAgICAgUHlPYmplY3RfRGVsKHYpOworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIF9QeV9OZXdSZWZlcmVuY2UoKnB2KTsKKyAgICBzdiA9IChQeUJ5dGVzT2JqZWN0ICopICpwdjsKKyAgICBQeV9TSVpFKHN2KSA9IG5ld3NpemU7CisgICAgc3YtPm9iX3N2YWxbbmV3c2l6ZV0gPSAnXDAnOworICAgIHN2LT5vYl9zaGFzaCA9IC0xOyAgICAgICAgICAvKiBpbnZhbGlkYXRlIGNhY2hlZCBoYXNoIHZhbHVlICovCisgICAgcmV0dXJuIDA7CitlcnJvcjoKKyAgICAqcHYgPSAwOworICAgIFB5X0RFQ1JFRih2KTsKKyAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICByZXR1cm4gLTE7Cit9CisKK3ZvaWQKK1B5Qnl0ZXNfRmluaSh2b2lkKQoreworICAgIGludCBpOworICAgIGZvciAoaSA9IDA7IGkgPCBVQ0hBUl9NQVggKyAxOyBpKyspCisgICAgICAgIFB5X0NMRUFSKGNoYXJhY3RlcnNbaV0pOworICAgIFB5X0NMRUFSKG51bGxzdHJpbmcpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKiogQnl0ZXMgSXRlcmF0b3IgKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeV9zc2l6ZV90IGl0X2luZGV4OworICAgIFB5Qnl0ZXNPYmplY3QgKml0X3NlcTsgLyogU2V0IHRvIE5VTEwgd2hlbiBpdGVyYXRvciBpcyBleGhhdXN0ZWQgKi8KK30gc3RyaXRlcm9iamVjdDsKKworc3RhdGljIHZvaWQKK3N0cml0ZXJfZGVhbGxvYyhzdHJpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhpdCk7CisgICAgUHlfWERFQ1JFRihpdC0+aXRfc2VxKTsKKyAgICBQeU9iamVjdF9HQ19EZWwoaXQpOworfQorCitzdGF0aWMgaW50CitzdHJpdGVyX3RyYXZlcnNlKHN0cml0ZXJvYmplY3QgKml0LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChpdC0+aXRfc2VxKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK3N0cml0ZXJfbmV4dChzdHJpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBQeUJ5dGVzT2JqZWN0ICpzZXE7CisgICAgUHlPYmplY3QgKml0ZW07CisKKyAgICBhc3NlcnQoaXQgIT0gTlVMTCk7CisgICAgc2VxID0gaXQtPml0X3NlcTsKKyAgICBpZiAoc2VxID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHNlcSkpOworCisgICAgaWYgKGl0LT5pdF9pbmRleCA8IFB5Qnl0ZXNfR0VUX1NJWkUoc2VxKSkgeworICAgICAgICBpdGVtID0gUHlMb25nX0Zyb21Mb25nKAorICAgICAgICAgICAgKHVuc2lnbmVkIGNoYXIpc2VxLT5vYl9zdmFsW2l0LT5pdF9pbmRleF0pOworICAgICAgICBpZiAoaXRlbSAhPSBOVUxMKQorICAgICAgICAgICAgKytpdC0+aXRfaW5kZXg7CisgICAgICAgIHJldHVybiBpdGVtOworICAgIH0KKworICAgIGl0LT5pdF9zZXEgPSBOVUxMOworICAgIFB5X0RFQ1JFRihzZXEpOworICAgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorc3RyaXRlcl9sZW4oc3RyaXRlcm9iamVjdCAqaXQpCit7CisgICAgUHlfc3NpemVfdCBsZW4gPSAwOworICAgIGlmIChpdC0+aXRfc2VxKQorICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKGl0LT5pdF9zZXEpIC0gaXQtPml0X2luZGV4OworICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QobGVuKTsKK30KKworUHlEb2NfU1RSVkFSKGxlbmd0aF9oaW50X2RvYywKKyAgICAgICAgICAgICAiUHJpdmF0ZSBtZXRob2QgcmV0dXJuaW5nIGFuIGVzdGltYXRlIG9mIGxlbihsaXN0KGl0KSkuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpdGVyX3JlZHVjZShzdHJpdGVyb2JqZWN0ICppdCkKK3sKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCJOKE8pbiIsIF9QeU9iamVjdF9HZXRCdWlsdGluKCJpdGVyIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5pdF9zZXEsIGl0LT5pdF9pbmRleCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoIk4oKCkpIiwgX1B5T2JqZWN0X0dldEJ1aWx0aW4oIml0ZXIiKSk7CisgICAgfQorfQorCitQeURvY19TVFJWQVIocmVkdWNlX2RvYywgIlJldHVybiBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgcGlja2xpbmcuIik7CisKK3N0YXRpYyBQeU9iamVjdCAqCitzdHJpdGVyX3NldHN0YXRlKHN0cml0ZXJvYmplY3QgKml0LCBQeU9iamVjdCAqc3RhdGUpCit7CisgICAgUHlfc3NpemVfdCBpbmRleCA9IFB5TG9uZ19Bc1NzaXplX3Qoc3RhdGUpOworICAgIGlmIChpbmRleCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaXQtPml0X3NlcSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChpbmRleCA8IDApCisgICAgICAgICAgICBpbmRleCA9IDA7CisgICAgICAgIGVsc2UgaWYgKGluZGV4ID4gUHlCeXRlc19HRVRfU0laRShpdC0+aXRfc2VxKSkKKyAgICAgICAgICAgIGluZGV4ID0gUHlCeXRlc19HRVRfU0laRShpdC0+aXRfc2VxKTsgLyogaXRlcmF0b3IgZXhoYXVzdGVkICovCisgICAgICAgIGl0LT5pdF9pbmRleCA9IGluZGV4OworICAgIH0KKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHNldHN0YXRlX2RvYywgIlNldCBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgdW5waWNrbGluZy4iKTsKKworc3RhdGljIFB5TWV0aG9kRGVmIHN0cml0ZXJfbWV0aG9kc1tdID0geworICAgIHsiX19sZW5ndGhfaGludF9fIiwgKFB5Q0Z1bmN0aW9uKXN0cml0ZXJfbGVuLCBNRVRIX05PQVJHUywKKyAgICAgbGVuZ3RoX2hpbnRfZG9jfSwKKyAgICB7Il9fcmVkdWNlX18iLCAgICAgIChQeUNGdW5jdGlvbilzdHJpdGVyX3JlZHVjZSwgTUVUSF9OT0FSR1MsCisgICAgIHJlZHVjZV9kb2N9LAorICAgIHsiX19zZXRzdGF0ZV9fIiwgICAgKFB5Q0Z1bmN0aW9uKXN0cml0ZXJfc2V0c3RhdGUsIE1FVEhfTywKKyAgICAgc2V0c3RhdGVfZG9jfSwKKyAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLworfTsKKworUHlUeXBlT2JqZWN0IFB5Qnl0ZXNJdGVyX1R5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKKyAgICAiYnl0ZXNfaXRlcmF0b3IiLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KKyAgICBzaXplb2Yoc3RyaXRlcm9iamVjdCksICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAvKiBtZXRob2RzICovCisgICAgKGRlc3RydWN0b3Ipc3RyaXRlcl9kZWFsbG9jLCAgICAgICAgICAgICAgICAvKiB0cF9kZWFsbG9jICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9wcmludCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0ciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVzZXJ2ZWQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3JlcHIgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX251bWJlciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfc2VxdWVuY2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX21hcHBpbmcgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2hhc2ggKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NhbGwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N0ciAqLworICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KKyAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0hBVkVfR0MsLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2Mpc3RyaXRlcl90cmF2ZXJzZSwgICAgIC8qIHRwX3RyYXZlcnNlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmljaGNvbXBhcmUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0b2Zmc2V0ICovCisgICAgUHlPYmplY3RfU2VsZkl0ZXIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVyICovCisgICAgKGl0ZXJuZXh0ZnVuYylzdHJpdGVyX25leHQsICAgICAgICAgICAgICAgICAvKiB0cF9pdGVybmV4dCAqLworICAgIHN0cml0ZXJfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbWV0aG9kcyAqLworICAgIDAsCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorYnl0ZXNfaXRlcihQeU9iamVjdCAqc2VxKQoreworICAgIHN0cml0ZXJvYmplY3QgKml0OworCisgICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHNlcSkpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpdCA9IFB5T2JqZWN0X0dDX05ldyhzdHJpdGVyb2JqZWN0LCAmUHlCeXRlc0l0ZXJfVHlwZSk7CisgICAgaWYgKGl0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIGl0LT5pdF9pbmRleCA9IDA7CisgICAgUHlfSU5DUkVGKHNlcSk7CisgICAgaXQtPml0X3NlcSA9IChQeUJ5dGVzT2JqZWN0ICopc2VxOworICAgIF9QeU9iamVjdF9HQ19UUkFDSyhpdCk7CisgICAgcmV0dXJuIChQeU9iamVjdCAqKWl0OworfQorCisKKy8qIF9QeUJ5dGVzV3JpdGVyIEFQSSAqLworCisjaWZkZWYgTVNfV0lORE9XUworICAgLyogT24gV2luZG93cywgb3ZlcmFsbG9jYXRlIGJ5IDUwJSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KKyMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDIKKyNlbHNlCisgICAvKiBPbiBMaW51eCwgb3ZlcmFsbG9jYXRlIGJ5IDI1JSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KKyMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDQKKyNlbmRpZgorCit2b2lkCitfUHlCeXRlc1dyaXRlcl9Jbml0KF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpCit7CisgICAgLyogU2V0IGFsbCBhdHRyaWJ1dGVzIGJlZm9yZSBzbWFsbF9idWZmZXIgdG8gMCAqLworICAgIG1lbXNldCh3cml0ZXIsIDAsIG9mZnNldG9mKF9QeUJ5dGVzV3JpdGVyLCBzbWFsbF9idWZmZXIpKTsKKyNpZmRlZiBQeV9ERUJVRworICAgIG1lbXNldCh3cml0ZXItPnNtYWxsX2J1ZmZlciwgMHhDQiwgc2l6ZW9mKHdyaXRlci0+c21hbGxfYnVmZmVyKSk7CisjZW5kaWYKK30KKwordm9pZAorX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyKQoreworICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKK30KKworUHlfTE9DQUxfSU5MSU5FKGNoYXIqKQorX1B5Qnl0ZXNXcml0ZXJfQXNTdHJpbmcoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcikKK3sKKyAgICBpZiAod3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyKSB7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKyAgICAgICAgcmV0dXJuIHdyaXRlci0+c21hbGxfYnVmZmVyOworICAgIH0KKyAgICBlbHNlIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyICE9IE5VTEwpOworICAgICAgICByZXR1cm4gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHdyaXRlci0+YnVmZmVyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciAhPSBOVUxMKTsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZXNfQVNfU1RSSU5HKHdyaXRlci0+YnVmZmVyKTsKKyAgICB9Cit9CisKK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQorX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIpCit7CisgICAgY2hhciAqc3RhcnQgPSBfUHlCeXRlc1dyaXRlcl9Bc1N0cmluZyh3cml0ZXIpOworICAgIGFzc2VydChzdHIgIT0gTlVMTCk7CisgICAgYXNzZXJ0KHN0ciA+PSBzdGFydCk7CisgICAgYXNzZXJ0KHN0ciAtIHN0YXJ0IDw9IHdyaXRlci0+YWxsb2NhdGVkKTsKKyAgICByZXR1cm4gc3RyIC0gc3RhcnQ7Cit9CisKK1B5X0xPQ0FMX0lOTElORSh2b2lkKQorX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIpCit7CisjaWZkZWYgUHlfREVCVUcKKyAgICBjaGFyICpzdGFydCwgKmVuZDsKKworICAgIGlmICh3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIpIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyID09IE5VTEwpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyICE9IE5VTEwpOworICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZUFycmF5X0NoZWNrRXhhY3Qod3JpdGVyLT5idWZmZXIpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2tFeGFjdCh3cml0ZXItPmJ1ZmZlcikpOworICAgICAgICBhc3NlcnQoUHlfUkVGQ05UKHdyaXRlci0+YnVmZmVyKSA9PSAxKTsKKyAgICB9CisKKyAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgIC8qIGJ5dGVhcnJheSBoYXMgaXRzIG93biBvdmVyYWxsb2NhdGlvbiBhbGdvcml0aG0sCisgICAgICAgICAgIHdyaXRlciBvdmVyYWxsb2NhdGlvbiBtdXN0IGJlIGRpc2FibGVkICovCisgICAgICAgIGFzc2VydCghd3JpdGVyLT5vdmVyYWxsb2NhdGUpOworICAgIH0KKworICAgIGFzc2VydCgwIDw9IHdyaXRlci0+YWxsb2NhdGVkKTsKKyAgICBhc3NlcnQoMCA8PSB3cml0ZXItPm1pbl9zaXplICYmIHdyaXRlci0+bWluX3NpemUgPD0gd3JpdGVyLT5hbGxvY2F0ZWQpOworICAgIC8qIHRoZSBsYXN0IGJ5dGUgbXVzdCBhbHdheXMgYmUgbnVsbCAqLworICAgIHN0YXJ0ID0gX1B5Qnl0ZXNXcml0ZXJfQXNTdHJpbmcod3JpdGVyKTsKKyAgICBhc3NlcnQoc3RhcnRbd3JpdGVyLT5hbGxvY2F0ZWRdID09IDApOworCisgICAgZW5kID0gc3RhcnQgKyB3cml0ZXItPmFsbG9jYXRlZDsKKyAgICBhc3NlcnQoc3RyICE9IE5VTEwpOworICAgIGFzc2VydChzdGFydCA8PSBzdHIgJiYgc3RyIDw9IGVuZCk7CisjZW5kaWYKK30KKwordm9pZCoKK19QeUJ5dGVzV3JpdGVyX1Jlc2l6ZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCB2b2lkICpzdHIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZCwgcG9zOworCisgICAgX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXIsIHN0cik7CisgICAgYXNzZXJ0KHdyaXRlci0+YWxsb2NhdGVkIDwgc2l6ZSk7CisKKyAgICBhbGxvY2F0ZWQgPSBzaXplOworICAgIGlmICh3cml0ZXItPm92ZXJhbGxvY2F0ZQorICAgICAgICAmJiBhbGxvY2F0ZWQgPD0gKFBZX1NTSVpFX1RfTUFYIC0gYWxsb2NhdGVkIC8gT1ZFUkFMTE9DQVRFX0ZBQ1RPUikpIHsKKyAgICAgICAgLyogb3ZlcmFsbG9jYXRlIHRvIGxpbWl0IHRoZSBudW1iZXIgb2YgcmVhbGxvYygpICovCisgICAgICAgIGFsbG9jYXRlZCArPSBhbGxvY2F0ZWQgLyBPVkVSQUxMT0NBVEVfRkFDVE9SOworICAgIH0KKworICAgIHBvcyA9IF9QeUJ5dGVzV3JpdGVyX0dldFNpemUod3JpdGVyLCBzdHIpOworICAgIGlmICghd3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyKSB7CisgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUod3JpdGVyLT5idWZmZXIsIGFsbG9jYXRlZCkpCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIC8qIHdyaXRlci0+YWxsb2NhdGVkIGNhbiBiZSBzbWFsbGVyIHRoYW4gd3JpdGVyLT5idWZmZXItPm9iX2FsbG9jLAorICAgICAgICAgICAgICAgYnV0IHdlIGNhbm5vdCB1c2Ugb2JfYWxsb2MgYmVjYXVzZSBieXRlcyBtYXkgbmVlZCB0byBiZSBtb3ZlZAorICAgICAgICAgICAgICAgdG8gdXNlIHRoZSB3aG9sZSBidWZmZXIuIGJ5dGVhcnJheSB1c2VzIGFuIGludGVybmFsIG9wdGltaXphdGlvbgorICAgICAgICAgICAgICAgdG8gYXZvaWQgbW92aW5nIG9yIGNvcHlpbmcgYnl0ZXMgd2hlbiBieXRlcyBhcmUgcmVtb3ZlZCBhdCB0aGUKKyAgICAgICAgICAgICAgIGJlZ2lubmluZyAoZXg6IGRlbCBieXRlYXJyYXlbOjFdKS4gKi8KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJndyaXRlci0+YnVmZmVyLCBhbGxvY2F0ZWQpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIC8qIGNvbnZlcnQgZnJvbSBzdGFjayBidWZmZXIgdG8gYnl0ZXMgb2JqZWN0IGJ1ZmZlciAqLworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgPT0gTlVMTCk7CisKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkKKyAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyID0gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYWxsb2NhdGVkKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGFsbG9jYXRlZCk7CisgICAgICAgIGlmICh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBpZiAocG9zICE9IDApIHsKKyAgICAgICAgICAgIGNoYXIgKmRlc3Q7CisgICAgICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KQorICAgICAgICAgICAgICAgIGRlc3QgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRlc3QgPSBQeUJ5dGVzX0FTX1NUUklORyh3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgICAgICBtZW1jcHkoZGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICB3cml0ZXItPnNtYWxsX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICBwb3MpOworICAgICAgICB9CisKKyAgICAgICAgd3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyID0gMDsKKyNpZmRlZiBQeV9ERUJVRworICAgICAgICBtZW1zZXQod3JpdGVyLT5zbWFsbF9idWZmZXIsIDB4REIsIHNpemVvZih3cml0ZXItPnNtYWxsX2J1ZmZlcikpOworI2VuZGlmCisgICAgfQorICAgIHdyaXRlci0+YWxsb2NhdGVkID0gYWxsb2NhdGVkOworCisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfQXNTdHJpbmcod3JpdGVyKSArIHBvczsKKyAgICBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KHdyaXRlciwgc3RyKTsKKyAgICByZXR1cm4gc3RyOworCitlcnJvcjoKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKHdyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnN0ciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIFB5X3NzaXplX3QgbmV3X21pbl9zaXplOworCisgICAgX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXIsIHN0cik7CisgICAgYXNzZXJ0KHNpemUgPj0gMCk7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIC8qIG5vdGhpbmcgdG8gZG8gKi8KKyAgICAgICAgcmV0dXJuIHN0cjsKKyAgICB9CisKKyAgICBpZiAod3JpdGVyLT5taW5fc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gc2l6ZSkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKHdyaXRlcik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuZXdfbWluX3NpemUgPSB3cml0ZXItPm1pbl9zaXplICsgc2l6ZTsKKworICAgIGlmIChuZXdfbWluX3NpemUgPiB3cml0ZXItPmFsbG9jYXRlZCkKKyAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUmVzaXplKHdyaXRlciwgc3RyLCBuZXdfbWluX3NpemUpOworCisgICAgd3JpdGVyLT5taW5fc2l6ZSA9IG5ld19taW5fc2l6ZTsKKyAgICByZXR1cm4gc3RyOworfQorCisvKiBBbGxvY2F0ZSB0aGUgYnVmZmVyIHRvIHdyaXRlIHNpemUgYnl0ZXMuCisgICBSZXR1cm4gdGhlIHBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiBidWZmZXIgZGF0YS4KKyAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIE5VTEwgb24gZXJyb3IuICovCit2b2lkKgorX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgUHlfc3NpemVfdCBzaXplKQoreworICAgIC8qIGVuc3VyZSB0aGF0IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCkgaXMgb25seSBjYWxsZWQgb25jZSAqLworICAgIGFzc2VydCh3cml0ZXItPm1pbl9zaXplID09IDAgJiYgd3JpdGVyLT5idWZmZXIgPT0gTlVMTCk7CisgICAgYXNzZXJ0KHNpemUgPj0gMCk7CisKKyAgICB3cml0ZXItPnVzZV9zbWFsbF9idWZmZXIgPSAxOworI2lmZGVmIFB5X0RFQlVHCisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpIC0gMTsKKyAgICAvKiBJbiBkZWJ1ZyBtb2RlLCBkb24ndCB1c2UgdGhlIGZ1bGwgc21hbGwgYnVmZmVyIGJlY2F1c2UgaXQgaXMgbGVzcworICAgICAgIGVmZmljaWVudCB0aGFuIGJ5dGVzIGFuZCBieXRlYXJyYXkgb2JqZWN0cyB0byBkZXRlY3QgYnVmZmVyIHVuZGVyZmxvdworICAgICAgIGFuZCBidWZmZXIgb3ZlcmZsb3cuIFVzZSAxMCBieXRlcyBvZiB0aGUgc21hbGwgYnVmZmVyIHRvIHRlc3QgYWxzbworICAgICAgIGNvZGUgdXNpbmcgdGhlIHNtYWxsZXIgYnVmZmVyIGluIGRlYnVnIG1vZGUuCisKKyAgICAgICBEb24ndCBtb2RpZnkgdGhlIF9QeUJ5dGVzV3JpdGVyIHN0cnVjdHVyZSAodXNlIGEgc2hvcnRlciBzbWFsbCBidWZmZXIpCisgICAgICAgaW4gZGVidWcgbW9kZSB0byBhbHNvIGJlIGFibGUgdG8gZGV0ZWN0IHN0YWNrIG92ZXJmbG93IHdoZW4gcnVubmluZworICAgICAgIHRlc3RzIGluIGRlYnVnIG1vZGUuIFRoZSBfUHlCeXRlc1dyaXRlciBpcyBsYXJnZSAobW9yZSB0aGFuIDUxMiBieXRlcyksCisgICAgICAgaWYgUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCkgaXMgbm90IHVzZWQgaW4gZGVlcCBDIGNhbGxiYWNrLCB3ZSBtYXkgaGl0IGEKKyAgICAgICBzdGFjayBvdmVyZmxvdy4gKi8KKyAgICB3cml0ZXItPmFsbG9jYXRlZCA9IFB5X01JTih3cml0ZXItPmFsbG9jYXRlZCwgMTApOworICAgIC8qIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3koKSByZXF1aXJlcyB0aGUgbGFzdCBieXRlIHRvIGJlIDAsCisgICAgICAgdG8gZGV0ZWN0IGJ1ZmZlciBvdmVyZmxvdyAqLworICAgIHdyaXRlci0+c21hbGxfYnVmZmVyW3dyaXRlci0+YWxsb2NhdGVkXSA9IDA7CisjZWxzZQorICAgIHdyaXRlci0+YWxsb2NhdGVkID0gc2l6ZW9mKHdyaXRlci0+c21hbGxfYnVmZmVyKTsKKyNlbmRpZgorICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgd3JpdGVyLT5zbWFsbF9idWZmZXIsIHNpemUpOworfQorCitQeU9iamVjdCAqCitfUHlCeXRlc1dyaXRlcl9GaW5pc2goX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgdm9pZCAqc3RyKQoreworICAgIFB5X3NzaXplX3Qgc2l6ZTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXIsIHN0cik7CisKKyAgICBzaXplID0gX1B5Qnl0ZXNXcml0ZXJfR2V0U2l6ZSh3cml0ZXIsIHN0cik7CisgICAgaWYgKHNpemUgPT0gMCAmJiAhd3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgIFB5X0NMRUFSKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgLyogR2V0IHRoZSBlbXB0eSBieXRlIHN0cmluZyBzaW5nbGV0b24gKi8KKyAgICAgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICB9CisgICAgZWxzZSBpZiAod3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyKSB7CisgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKHdyaXRlci0+c21hbGxfYnVmZmVyLCBzaXplKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUod3JpdGVyLT5zbWFsbF9idWZmZXIsIHNpemUpOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXN1bHQgPSB3cml0ZXItPmJ1ZmZlcjsKKyAgICAgICAgd3JpdGVyLT5idWZmZXIgPSBOVUxMOworCisgICAgICAgIGlmIChzaXplICE9IHdyaXRlci0+YWxsb2NhdGVkKSB7CisgICAgICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZShyZXN1bHQsIHNpemUpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHNpemUpKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChyZXN1bHQgPT0gTlVMTCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkKgorX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcyhfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCB2b2lkICpwdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmJ5dGVzLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgY2hhciAqc3RyID0gKGNoYXIgKilwdHI7CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbWVtY3B5KHN0ciwgYnl0ZXMsIHNpemUpOworICAgIHN0ciArPSBzaXplOworCisgICAgcmV0dXJuIHN0cjsKK30KZGlmZiAtLWdpdCBhL09iamVjdHMvY2xhc3NvYmplY3QuYyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwppbmRleCA3MzhlNjEzLi4wMmQ3Y2ZkIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9jbGFzc29iamVjdC5jCkBAIC04OCw5ICs4OCw5IEBACiAgICAgICAgICAgICBiYXNlID0gUHlUdXBsZV9HRVRfSVRFTShiYXNlcywgaSk7CiAgICAgICAgICAgICBpZiAoIVB5Q2xhc3NfQ2hlY2soYmFzZSkpIHsKICAgICAgICAgICAgICAgICBpZiAoUHlDYWxsYWJsZV9DaGVjaygKLSAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopIGJhc2UtPm9iX3R5cGUpKQorICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopIFB5X1RZUEUoYmFzZSkpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygKLSAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKSBiYXNlLT5vYl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopIFB5X1RZUEUoYmFzZSksCiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBiYXNlcywgZGljdCwgTlVMTCk7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgIlB5Q2xhc3NfTmV3OiBiYXNlIG11c3QgYmUgYSBjbGFzcyIpOwpAQCAtMjY1LDcgKzI2NSw3IEBACiAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19BU19TVFJJTkcob3AtPmNsX25hbWUpLCBzbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBmID0gVFBfREVTQ1JfR0VUKHYtPm9iX3R5cGUpOworICAgIGYgPSBUUF9ERVNDUl9HRVQoUHlfVFlQRSh2KSk7CiAgICAgaWYgKGYgPT0gTlVMTCkKICAgICAgICAgUHlfSU5DUkVGKHYpOwogICAgIGVsc2UKQEAgLTQ0Miw4ICs0NDIsNyBAQAogfQogCiBQeVR5cGVPYmplY3QgUHlDbGFzc19UeXBlID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUpCi0gICAgMCwKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJjbGFzc29iaiIsCiAgICAgc2l6ZW9mKFB5Q2xhc3NPYmplY3QpLAogICAgIDAsCkBAIC02MzksOSArNjM4LDkgQEAKICAgICAgICAgUHlPYmplY3RfQ2xlYXJXZWFrUmVmcygoUHlPYmplY3QgKikgaW5zdCk7CiAKICAgICAvKiBUZW1wb3JhcmlseSByZXN1cnJlY3QgdGhlIG9iamVjdC4gKi8KLSAgICBhc3NlcnQoaW5zdC0+b2JfdHlwZSA9PSAmUHlJbnN0YW5jZV9UeXBlKTsKLSAgICBhc3NlcnQoaW5zdC0+b2JfcmVmY250ID09IDApOwotICAgIGluc3QtPm9iX3JlZmNudCA9IDE7CisgICAgYXNzZXJ0KFB5X1RZUEUoaW5zdCkgPT0gJlB5SW5zdGFuY2VfVHlwZSk7CisgICAgYXNzZXJ0KFB5X1JFRkNOVChpbnN0KSA9PSAwKTsKKyAgICBQeV9SRUZDTlQoaW5zdCkgPSAxOwogCiAgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKQEAgLTY2NSw4ICs2NjQsOCBAQAogICAgIC8qIFVuZG8gdGhlIHRlbXBvcmFyeSByZXN1cnJlY3Rpb247IGNhbid0IHVzZSBERUNSRUYgaGVyZSwgaXQgd291bGQKICAgICAgKiBjYXVzZSBhIHJlY3Vyc2l2ZSBjYWxsLgogICAgICAqLwotICAgIGFzc2VydChpbnN0LT5vYl9yZWZjbnQgPiAwKTsKLSAgICBpZiAoLS1pbnN0LT5vYl9yZWZjbnQgPT0gMCkgeworICAgIGFzc2VydChQeV9SRUZDTlQoaW5zdCkgPiAwKTsKKyAgICBpZiAoLS1QeV9SRUZDTlQoaW5zdCkgPT0gMCkgewogCiAgICAgICAgIC8qIE5ldyB3ZWFrcmVmcyBjb3VsZCBiZSBjcmVhdGVkIGR1cmluZyB0aGUgZmluYWxpemVyIGNhbGwuCiAgICAgICAgICAgICBJZiB0aGlzIG9jY3VycywgY2xlYXIgdGhlbSBvdXQgd2l0aG91dCBjYWxsaW5nIHRoZWlyCkBAIC02ODIsMTIgKzY4MSwxMiBAQAogICAgICAgICBQeU9iamVjdF9HQ19EZWwoaW5zdCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeV9zc2l6ZV90IHJlZmNudCA9IGluc3QtPm9iX3JlZmNudDsKKyAgICAgICAgUHlfc3NpemVfdCByZWZjbnQgPSBQeV9SRUZDTlQoaW5zdCk7CiAgICAgICAgIC8qIF9fZGVsX18gcmVzdXJyZWN0ZWQgaXQhICBNYWtlIGl0IGxvb2sgbGlrZSB0aGUgb3JpZ2luYWwKICAgICAgICAgICogUHlfREVDUkVGIG5ldmVyIGhhcHBlbmVkLgogICAgICAgICAgKi8KICAgICAgICAgX1B5X05ld1JlZmVyZW5jZSgoUHlPYmplY3QgKilpbnN0KTsKLSAgICAgICAgaW5zdC0+b2JfcmVmY250ID0gcmVmY250OworICAgICAgICBQeV9SRUZDTlQoaW5zdCkgPSByZWZjbnQ7CiAgICAgICAgIF9QeU9iamVjdF9HQ19UUkFDSyhpbnN0KTsKICAgICAgICAgLyogSWYgUHlfUkVGX0RFQlVHLCBfUHlfTmV3UmVmZXJlbmNlIGJ1bXBlZCBfUHlfUmVmVG90YWwsIHNvCiAgICAgICAgICAqIHdlIG5lZWQgdG8gdW5kbyB0aGF0LiAqLwpAQCAtNjk5LDggKzY5OCw4IEBACiAgICAgICAgICAqIHVuZG9uZS4KICAgICAgICAgICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgICAgIC0taW5zdC0+b2JfdHlwZS0+dHBfZnJlZXM7Ci0gICAgICAgIC0taW5zdC0+b2JfdHlwZS0+dHBfYWxsb2NzOworICAgICAgICAtLVB5X1RZUEUoaW5zdCktPnRwX2ZyZWVzOworICAgICAgICAtLVB5X1RZUEUoaW5zdCktPnRwX2FsbG9jczsKICNlbmRpZgogICAgIH0KIH0KQEAgLTc1Niw3ICs3NTUsNyBAQAogICAgIHYgPSBjbGFzc19sb29rdXAoaW5zdC0+aW5fY2xhc3MsIG5hbWUsICZrbGFzcyk7CiAgICAgaWYgKHYgIT0gTlVMTCkgewogICAgICAgICBQeV9JTkNSRUYodik7Ci0gICAgICAgIGYgPSBUUF9ERVNDUl9HRVQodi0+b2JfdHlwZSk7CisgICAgICAgIGYgPSBUUF9ERVNDUl9HRVQoUHlfVFlQRSh2KSk7CiAgICAgICAgIGlmIChmICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp3ID0gZih2LCAoUHlPYmplY3QgKilpbnN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKShpbnN0LT5pbl9jbGFzcykpOwpAQCAtMTAxMCw5ICsxMDA5LDkgQEAKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKFB5SW50X0NoZWNrKHJlcykgfHwgUHlMb25nX0NoZWNrKHJlcykpCisgICAgaWYgKF9QeUFueUludF9DaGVjayhyZXMpKQogICAgICAgICAvKiBUaGlzIGFscmVhZHkgY29udmVydHMgYSAtMSByZXN1bHQgdG8gLTIuICovCi0gICAgICAgIG91dGNvbWUgPSByZXMtPm9iX3R5cGUtPnRwX2hhc2gocmVzKTsKKyAgICAgICAgb3V0Y29tZSA9IFB5X1RZUEUocmVzKS0+dHBfaGFzaChyZXMpOwogICAgIGVsc2UgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIl9faGFzaF9fKCkgc2hvdWxkIHJldHVybiBhbiBpbnQiKTsKQEAgLTE1MDAsNyArMTQ5OSw3IEBACiAgICAgfQogICAgIHYxID0gUHlUdXBsZV9HZXRJdGVtKGNvZXJjZWQsIDApOwogICAgIHcgPSBQeVR1cGxlX0dldEl0ZW0oY29lcmNlZCwgMSk7Ci0gICAgaWYgKHYxLT5vYl90eXBlID09IHYtPm9iX3R5cGUgJiYgUHlJbnN0YW5jZV9DaGVjayh2KSkgeworICAgIGlmIChQeV9UWVBFKHYxKSA9PSBQeV9UWVBFKHYpICYmIFB5SW5zdGFuY2VfQ2hlY2sodikpIHsKICAgICAgICAgLyogcHJldmVudCByZWN1cnNpb24gaWYgX19jb2VyY2VfXyByZXR1cm5zIHNlbGYgYXMgdGhlIGZpcnN0CiAgICAgICAgICAqIGFyZ3VtZW50ICovCiAgICAgICAgIHJlc3VsdCA9IGdlbmVyaWNfYmluYXJ5X29wKHYxLCB3LCBvcG5hbWUpOwpAQCAtMjA3Nyw3ICsyMDc2LDcgQEAKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIl9faXRlcl9fIHJldHVybmVkIG5vbi1pdGVyYXRvciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIm9mIHR5cGUgJyUuMTAwcyciLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShyZXMpLT50cF9uYW1lKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgICAgICAgICAgcmVzID0gTlVMTDsKICAgICAgICAgfQpAQCAtMjIwMSw4ICsyMjAwLDcgQEAKIH07CiAKIFB5VHlwZU9iamVjdCBQeUluc3RhbmNlX1R5cGUgPSB7Ci0gICAgUHlPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSkKLSAgICAwLAorICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgImluc3RhbmNlIiwKICAgICBzaXplb2YoUHlJbnN0YW5jZU9iamVjdCksCiAgICAgMCwKQEAgLTIzMjEsNyArMjMxOSw3IEBACiBpbnN0YW5jZW1ldGhvZF9nZXRhdHRybyhQeU9iamVjdCAqb2JqLCBQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU1ldGhvZE9iamVjdCAqaW0gPSAoUHlNZXRob2RPYmplY3QgKilvYmo7Ci0gICAgUHlUeXBlT2JqZWN0ICp0cCA9IG9iai0+b2JfdHlwZTsKKyAgICBQeVR5cGVPYmplY3QgKnRwID0gUHlfVFlQRShvYmopOwogICAgIFB5T2JqZWN0ICpkZXNjciA9IE5VTEw7CiAKICAgICBpZiAoUHlUeXBlX0hhc0ZlYXR1cmUodHAsIFB5X1RQRkxBR1NfSEFWRV9DTEFTUykpIHsKQEAgLTIzMzMsOSArMjMzMSw5IEBACiAgICAgfQogCiAgICAgaWYgKGRlc2NyICE9IE5VTEwpIHsKLSAgICAgICAgZGVzY3JnZXRmdW5jIGYgPSBUUF9ERVNDUl9HRVQoZGVzY3ItPm9iX3R5cGUpOworICAgICAgICBkZXNjcmdldGZ1bmMgZiA9IFRQX0RFU0NSX0dFVChQeV9UWVBFKGRlc2NyKSk7CiAgICAgICAgIGlmIChmICE9IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gZihkZXNjciwgb2JqLCAoUHlPYmplY3QgKilvYmotPm9iX3R5cGUpOworICAgICAgICAgICAgcmV0dXJuIGYoZGVzY3IsIG9iaiwgKFB5T2JqZWN0ICopUHlfVFlQRShvYmopKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBQeV9JTkNSRUYoZGVzY3IpOwogICAgICAgICAgICAgcmV0dXJuIGRlc2NyOwpAQCAtMjUzOCw3ICsyNTM2LDcgQEAKICAgICBpZiAoa2xhc3MgPT0gTlVMTCkgewogICAgICAgICAvKiBUaGlzIGZ1bmN0aW9uIGNhbm5vdCByZXR1cm4gYW4gZXhjZXB0aW9uICovCiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIGtsYXNzID0gKFB5T2JqZWN0ICopKGluc3QtPm9iX3R5cGUpOworICAgICAgICBrbGFzcyA9IChQeU9iamVjdCAqKVB5X1RZUEUoaW5zdCk7CiAgICAgICAgIFB5X0lOQ1JFRihrbGFzcyk7CiAgICAgfQogICAgIGdldGNsYXNzbmFtZShrbGFzcywgYnVmLCBidWZzaXplKTsKQEAgLTI2MzEsOCArMjYyOSw3IEBACiB9CiAKIFB5VHlwZU9iamVjdCBQeU1ldGhvZF9UeXBlID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUpCi0gICAgMCwKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJpbnN0YW5jZW1ldGhvZCIsCiAgICAgc2l6ZW9mKFB5TWV0aG9kT2JqZWN0KSwKICAgICAwLApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMgYi9PYmplY3RzL2NvZGVvYmplY3QuYwppbmRleCBhNjZhYTY5Li5kNTBlNGM2IDEwMDY0NAotLS0gYS9PYmplY3RzL2NvZGVvYmplY3QuYworKysgYi9PYmplY3RzL2NvZGVvYmplY3QuYwpAQCAtNDIzLDEwICs0MjMsOSBAQAogCiAgICAgLyogUHlfTm9uZSBpcyBhIHNpbmdsZXRvbiAqLwogICAgIGlmIChvcCA9PSBQeV9Ob25lCi0gICAgICAgfHwgUHlJbnRfQ2hlY2tFeGFjdChvcCkKLSAgICAgICB8fCBQeUxvbmdfQ2hlY2tFeGFjdChvcCkKLSAgICAgICB8fCBQeUJvb2xfQ2hlY2sob3ApCi0gICAgICAgfHwgUHlCeXRlc19DaGVja0V4YWN0KG9wKQorICAgICAgICB8fCBfUHlBbnlJbnRfQ2hlY2tFeGFjdChvcCkKKyAgICAgICAgfHwgUHlCb29sX0NoZWNrKG9wKQorICAgICAgICB8fCBQeUJ5dGVzX0NoZWNrRXhhY3Qob3ApCiAjaWZkZWYgUHlfVVNJTkdfVU5JQ09ERQogICAgICAgIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KG9wKQogI2VuZGlmCmRpZmYgLS1naXQgYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCmluZGV4IGVmMThlM2YuLjg3MWVlYTMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY29tcGxleG9iamVjdC5jCisrKyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCkBAIC03OTYsNyArNzk2LDcgQEAKICAgICAgICAgICogTm90SW1wbGVtZW50ZWQuICBPbmx5IGNvbXBhcmlzb25zIHdpdGggY29yZSBudW1lcmljIHR5cGVzIHJhaXNlCiAgICAgICAgICAqIFR5cGVFcnJvci4KICAgICAgICAgICovCi0gICAgICAgIGlmIChQeUludF9DaGVjayh3KSB8fCBQeUxvbmdfQ2hlY2sodykgfHwKKyAgICAgICAgaWYgKF9QeUFueUludF9DaGVjayh3KSB8fAogICAgICAgICAgICAgUHlGbG9hdF9DaGVjayh3KSB8fCBQeUNvbXBsZXhfQ2hlY2sodykpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIG9yZGVyaW5nIHJlbGF0aW9uIGlzIGRlZmluZWQgIgpAQCAtODA5LDcgKzgwOSw3IEBACiAgICAgYXNzZXJ0KFB5Q29tcGxleF9DaGVjayh2KSk7CiAgICAgVE9fQ09NUExFWCh2LCBpKTsKIAotICAgIGlmIChQeUludF9DaGVjayh3KSB8fCBQeUxvbmdfQ2hlY2sodykpIHsKKyAgICBpZiAoX1B5QW55SW50X0NoZWNrKHcpKSB7CiAgICAgICAgIC8qIENoZWNrIGZvciAwLjAgaW1hZ2luYXJ5IHBhcnQgZmlyc3QgdG8gYXZvaWQgdGhlIHJpY2gKICAgICAgICAgICogY29tcGFyaXNvbiB3aGVuIHBvc3NpYmxlLgogICAgICAgICAgKi8KQEAgLTEyMzIsMTEgKzEyMzIsMTEgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIGNyLnJlYWwgPSBQeUZsb2F0X0FzRG91YmxlKHRtcCk7Ci0gICAgICAgIGNyLmltYWcgPSAwLjA7IC8qIFNodXQgdXAgY29tcGlsZXIgd2FybmluZyAqLworICAgICAgICBjci5pbWFnID0gMC4wOwogICAgICAgICBQeV9ERUNSRUYodG1wKTsKICAgICB9CiAgICAgaWYgKGkgPT0gTlVMTCkgewotICAgICAgICBjaS5yZWFsID0gMC4wOworICAgICAgICBjaS5yZWFsID0gY3IuaW1hZzsKICAgICB9CiAgICAgZWxzZSBpZiAoUHlDb21wbGV4X0NoZWNrKGkpKSB7CiAgICAgICAgIGNpID0gKChQeUNvbXBsZXhPYmplY3QqKWkpLT5jdmFsOwpAQCAtMTI1OCw3ICsxMjU4LDcgQEAKICAgICBpZiAoY2lfaXNfY29tcGxleCkgewogICAgICAgICBjci5yZWFsIC09IGNpLmltYWc7CiAgICAgfQotICAgIGlmIChjcl9pc19jb21wbGV4KSB7CisgICAgaWYgKGNyX2lzX2NvbXBsZXggJiYgaSAhPSBOVUxMKSB7CiAgICAgICAgIGNpLnJlYWwgKz0gY3IuaW1hZzsKICAgICB9CiAgICAgcmV0dXJuIGNvbXBsZXhfc3VidHlwZV9mcm9tX2RvdWJsZXModHlwZSwgY3IucmVhbCwgY2kucmVhbCk7CmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3RvYmplY3QuYyBiL09iamVjdHMvZGljdG9iamVjdC5jCmluZGV4IGUzZTQ3NjUuLmM1NDRlY2QgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGljdG9iamVjdC5jCisrKyBiL09iamVjdHMvZGljdG9iamVjdC5jCkBAIC04NDgsMTMgKzg0OCwyOCBAQAogICAgIHJldHVybiBkaWN0X3NldF9pdGVtX2J5X2hhc2hfb3JfZW50cnkob3AsIGtleSwgaGFzaCwgTlVMTCwgdmFsdWUpOwogfQogCitzdGF0aWMgaW50CitkZWxpdGVtX2NvbW1vbihQeURpY3RPYmplY3QgKm1wLCBQeURpY3RFbnRyeSAqZXApCit7CisgICAgUHlPYmplY3QgKm9sZF92YWx1ZSwgKm9sZF9rZXk7CisKKyAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICBQeV9JTkNSRUYoZHVtbXkpOworICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKKyAgICBvbGRfdmFsdWUgPSBlcC0+bWVfdmFsdWU7CisgICAgZXAtPm1lX3ZhbHVlID0gTlVMTDsKKyAgICBtcC0+bWFfdXNlZC0tOworICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOworICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKKyAgICByZXR1cm4gMDsKK30KKwogaW50CiBQeURpY3RfRGVsSXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7CiAgICAgcmVnaXN0ZXIgUHlEaWN0T2JqZWN0ICptcDsKICAgICByZWdpc3RlciBsb25nIGhhc2g7CiAgICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOwotICAgIFB5T2JqZWN0ICpvbGRfdmFsdWUsICpvbGRfa2V5OwogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwpAQCAtODc1LDE1ICs4OTAsNDUgQEAKICAgICAgICAgc2V0X2tleV9lcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OwotICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgIG9sZF92YWx1ZSA9IGVwLT5tZV92YWx1ZTsKLSAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOwotICAgIG1wLT5tYV91c2VkLS07Ci0gICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7Ci0gICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGRlbGl0ZW1fY29tbW9uKG1wLCBlcCk7Cit9CisKK2ludAorX1B5RGljdF9EZWxJdGVtSWYoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgaW50ICgqcHJlZGljYXRlKShQeU9iamVjdCAqdmFsdWUpKQoreworICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXA7CisgICAgcmVnaXN0ZXIgbG9uZyBoYXNoOworICAgIHJlZ2lzdGVyIFB5RGljdEVudHJ5ICplcDsKKyAgICBpbnQgcmVzOworCisgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGFzc2VydChrZXkpOworICAgIGlmICghUHlTdHJpbmdfQ2hlY2tFeGFjdChrZXkpIHx8CisgICAgICAgIChoYXNoID0gKChQeVN0cmluZ09iamVjdCAqKSBrZXkpLT5vYl9zaGFzaCkgPT0gLTEpIHsKKyAgICAgICAgaGFzaCA9IFB5T2JqZWN0X0hhc2goa2V5KTsKKyAgICAgICAgaWYgKGhhc2ggPT0gLTEpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOworICAgIGVwID0gKG1wLT5tYV9sb29rdXApKG1wLCBrZXksIGhhc2gpOworICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIHNldF9rZXlfZXJyb3Ioa2V5KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXMgPSBwcmVkaWNhdGUoZXAtPm1lX3ZhbHVlKTsKKyAgICBpZiAocmVzID09IC0xKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHJlcyA+IDApCisgICAgICAgIHJldHVybiBkZWxpdGVtX2NvbW1vbihtcCwgZXApOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQKQEAgLTEwMzEsNiArMTA3Niw3IEBACiB7CiAgICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOwogICAgIFB5X3NzaXplX3QgZmlsbCA9IG1wLT5tYV9maWxsOworICAgIC8qIGJwby0zMTA5NTogVW5UcmFjayBpcyBuZWVkZWQgYmVmb3JlIGNhbGxpbmcgYW55IGNhbGxiYWNrcyAqLwogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2sobXApOwogICAgIFB5X1RSQVNIQ0FOX1NBRkVfQkVHSU4obXApCiAgICAgZm9yIChlcCA9IG1wLT5tYV90YWJsZTsgZmlsbCA+IDA7IGVwKyspIHsKQEAgLTEzOTEsNyArMTQzNyw3IEBACiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwogICAgICAgICAgICAgbG9uZyBoYXNoOwogCi0gICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgUHlfU0laRShzZXEpIC8gMiAqIDMpKSB7CisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgKChQeURpY3RPYmplY3QgKilzZXEpLT5tYV91c2VkIC8gMiAqIDMpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTU1MCwxMSArMTU5NiwxOCBAQAogICAgICAgICAvKiBVcGRhdGUvbWVyZ2Ugd2l0aCB0aGlzIChrZXksIHZhbHVlKSBwYWlyLiAqLwogICAgICAgICBrZXkgPSBQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oZmFzdCwgMCk7CiAgICAgICAgIHZhbHVlID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9JVEVNKGZhc3QsIDEpOworICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICAgICAgaWYgKG92ZXJyaWRlIHx8IFB5RGljdF9HZXRJdGVtKGQsIGtleSkgPT0gTlVMTCkgewogICAgICAgICAgICAgaW50IHN0YXR1cyA9IFB5RGljdF9TZXRJdGVtKGQsIGtleSwgdmFsdWUpOwotICAgICAgICAgICAgaWYgKHN0YXR1cyA8IDApCisgICAgICAgICAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgICAgICAgICAgZ290byBGYWlsOworICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRihrZXkpOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgICAgICBQeV9ERUNSRUYoZmFzdCk7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICB9CkBAIC0xODkzLDEyICsxOTQ2LDEzIEBACiAgICAgICAgICAgICAvKiBkaXR0byBmb3Iga2V5ICovCiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgIGJ2YWwgPSBQeURpY3RfR2V0SXRlbSgoUHlPYmplY3QgKiliLCBrZXkpOwotICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICBpZiAoYnZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGF2YWwpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGF2YWwsIGJ2YWwsIFB5X0VRKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgUHlfREVDUkVGKGF2YWwpOwogICAgICAgICAgICAgaWYgKGNtcCA8PSAwKSAgLyogZXJyb3Igb3Igbm90IGVxdWFsICovCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNtcDsKQEAgLTI1MjMsNiArMjU3Nyw4IEBACiBzdGF0aWMgdm9pZAogZGljdGl0ZXJfZGVhbGxvYyhkaWN0aXRlcm9iamVjdCAqZGkpCiB7CisgICAgLyogYnBvLTMxMDk1OiBVblRyYWNrIGlzIG5lZWRlZCBiZWZvcmUgY2FsbGluZyBhbnkgY2FsbGJhY2tzICovCisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soZGkpOwogICAgIFB5X1hERUNSRUYoZGktPmRpX2RpY3QpOwogICAgIFB5X1hERUNSRUYoZGktPmRpX3Jlc3VsdCk7CiAgICAgUHlPYmplY3RfR0NfRGVsKGRpKTsKQEAgLTI2OTgsNyArMjc1NCw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHRpdGVtKGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKLSAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWUsICpyZXN1bHQgPSBkaS0+ZGlfcmVzdWx0OworICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKnJlc3VsdDsKICAgICByZWdpc3RlciBQeV9zc2l6ZV90IGksIG1hc2s7CiAgICAgcmVnaXN0ZXIgUHlEaWN0RW50cnkgKmVwOwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OwpAQCAtMjcyNSwyMiArMjc4MSwyNyBAQAogICAgIGlmIChpID4gbWFzaykKICAgICAgICAgZ290byBmYWlsOwogCi0gICAgaWYgKHJlc3VsdC0+b2JfcmVmY250ID09IDEpIHsKLSAgICAgICAgUHlfSU5DUkVGKHJlc3VsdCk7Ci0gICAgICAgIFB5X0RFQ1JFRihQeVR1cGxlX0dFVF9JVEVNKHJlc3VsdCwgMCkpOwotICAgICAgICBQeV9ERUNSRUYoUHlUdXBsZV9HRVRfSVRFTShyZXN1bHQsIDEpKTsKLSAgICB9IGVsc2UgewotICAgICAgICByZXN1bHQgPSBQeVR1cGxlX05ldygyKTsKLSAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogICAgIGRpLT5sZW4tLTsKICAgICBrZXkgPSBlcFtpXS5tZV9rZXk7CiAgICAgdmFsdWUgPSBlcFtpXS5tZV92YWx1ZTsKICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOwotICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAxLCB2YWx1ZSk7CisgICAgcmVzdWx0ID0gZGktPmRpX3Jlc3VsdDsKKyAgICBpZiAoUHlfUkVGQ05UKHJlc3VsdCkgPT0gMSkgeworICAgICAgICBQeU9iamVjdCAqb2xka2V5ID0gUHlUdXBsZV9HRVRfSVRFTShyZXN1bHQsIDApOworICAgICAgICBQeU9iamVjdCAqb2xkdmFsdWUgPSBQeVR1cGxlX0dFVF9JVEVNKHJlc3VsdCwgMSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMSwgdmFsdWUpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLworICAgICAgICBQeV9JTkNSRUYocmVzdWx0KTsKKyAgICAgICAgUHlfREVDUkVGKG9sZGtleSk7CisgICAgICAgIFB5X0RFQ1JFRihvbGR2YWx1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gUHlUdXBsZV9OZXcoMik7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlc3VsdCwgMCwga2V5KTsgIC8qIHN0ZWFscyByZWZlcmVuY2UgKi8KKyAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIDEsIHZhbHVlKTsgIC8qIHN0ZWFscyByZWZlcmVuY2UgKi8KKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIAogZmFpbDoKQEAgLTI3OTcsNiArMjg1OCw4IEBACiBzdGF0aWMgdm9pZAogZGljdHZpZXdfZGVhbGxvYyhkaWN0dmlld29iamVjdCAqZHYpCiB7CisgICAgLyogYnBvLTMxMDk1OiBVblRyYWNrIGlzIG5lZWRlZCBiZWZvcmUgY2FsbGluZyBhbnkgY2FsbGJhY2tzICovCisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soZHYpOwogICAgIFB5X1hERUNSRUYoZHYtPmR2X2RpY3QpOwogICAgIFB5T2JqZWN0X0dDX0RlbChkdik7CiB9CkBAIC0yOTQyLDIxICszMDA1LDI5IEBACiB7CiAgICAgUHlPYmplY3QgKnNlcTsKICAgICBQeU9iamVjdCAqc2VxX3N0cjsKLSAgICBQeU9iamVjdCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworICAgIFB5X3NzaXplX3QgcmM7CiAKKyAgICByYyA9IFB5X1JlcHJFbnRlcigoUHlPYmplY3QgKilkdik7CisgICAgaWYgKHJjICE9IDApIHsKKyAgICAgICAgcmV0dXJuIHJjID4gMCA/IFB5U3RyaW5nX0Zyb21TdHJpbmcoIi4uLiIpIDogTlVMTDsKKyAgICB9CiAgICAgc2VxID0gUHlTZXF1ZW5jZV9MaXN0KChQeU9iamVjdCAqKWR2KTsKLSAgICBpZiAoc2VxID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotCisgICAgaWYgKHNlcSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gRG9uZTsKKyAgICB9CiAgICAgc2VxX3N0ciA9IFB5T2JqZWN0X1JlcHIoc2VxKTsKKyAgICBQeV9ERUNSRUYoc2VxKTsKKwogICAgIGlmIChzZXFfc3RyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlcSk7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBnb3RvIERvbmU7CiAgICAgfQogICAgIHJlc3VsdCA9IFB5U3RyaW5nX0Zyb21Gb3JtYXQoIiVzKCVzKSIsIFB5X1RZUEUoZHYpLT50cF9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfQVNfU1RSSU5HKHNlcV9zdHIpKTsKICAgICBQeV9ERUNSRUYoc2VxX3N0cik7Ci0gICAgUHlfREVDUkVGKHNlcSk7CisKK0RvbmU6CisgICAgUHlfUmVwckxlYXZlKChQeU9iamVjdCAqKWR2KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMTQxLDYgKzMyMTIsNyBAQAogc3RhdGljIGludAogZGljdGl0ZW1zX2NvbnRhaW5zKGRpY3R2aWV3b2JqZWN0ICpkdiwgUHlPYmplY3QgKm9iaikKIHsKKyAgICBpbnQgcmVzdWx0OwogICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZSwgKmZvdW5kOwogICAgIGlmIChkdi0+ZHZfZGljdCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gMDsKQEAgLTMxNTQsNyArMzIyNiwxMCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgcmV0dXJuIFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCh2YWx1ZSwgZm91bmQsIFB5X0VRKTsKKyAgICBQeV9JTkNSRUYoZm91bmQpOworICAgIHJlc3VsdCA9IFB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbCh2YWx1ZSwgZm91bmQsIFB5X0VRKTsKKyAgICBQeV9ERUNSRUYoZm91bmQpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBQeVNlcXVlbmNlTWV0aG9kcyBkaWN0aXRlbXNfYXNfc2VxdWVuY2UgPSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2VudW1vYmplY3QuYyBiL09iamVjdHMvZW51bW9iamVjdC5jCmluZGV4IDFlZjM4MWYuLjczYjY1NmIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZW51bW9iamVjdC5jCisrKyBiL09iamVjdHMvZW51bW9iamVjdC5jCkBAIC0zMSw3ICszMSw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoZW4pOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgYXNzZXJ0KFB5SW50X0NoZWNrKHN0YXJ0KSB8fCBQeUxvbmdfQ2hlY2soc3RhcnQpKTsKKyAgICAgICAgYXNzZXJ0KF9QeUFueUludF9DaGVjayhzdGFydCkpOwogICAgICAgICBlbi0+ZW5faW5kZXggPSBQeUludF9Bc1NzaXplX3Qoc3RhcnQpOwogICAgICAgICBpZiAoZW4tPmVuX2luZGV4ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CkBAIC04NywxOSArODcsMjUgQEAKIAogICAgIGlmIChlbi0+ZW5fbG9uZ2luZGV4ID09IE5VTEwpIHsKICAgICAgICAgZW4tPmVuX2xvbmdpbmRleCA9IFB5SW50X0Zyb21Tc2l6ZV90KFBZX1NTSVpFX1RfTUFYKTsKLSAgICAgICAgaWYgKGVuLT5lbl9sb25naW5kZXggPT0gTlVMTCkKKyAgICAgICAgaWYgKGVuLT5lbl9sb25naW5kZXggPT0gTlVMTCkgeworICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlbSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQogICAgIH0KICAgICBpZiAob25lID09IE5VTEwpIHsKICAgICAgICAgb25lID0gUHlJbnRfRnJvbUxvbmcoMSk7Ci0gICAgICAgIGlmIChvbmUgPT0gTlVMTCkKKyAgICAgICAgaWYgKG9uZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVtKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQogICAgIG5leHRfaW5kZXggPSBlbi0+ZW5fbG9uZ2luZGV4OwogICAgIGFzc2VydChuZXh0X2luZGV4ICE9IE5VTEwpOwogICAgIHN0ZXBwZWRfdXAgPSBQeU51bWJlcl9BZGQobmV4dF9pbmRleCwgb25lKTsKLSAgICBpZiAoc3RlcHBlZF91cCA9PSBOVUxMKQorICAgIGlmIChzdGVwcGVkX3VwID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlbSk7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBlbi0+ZW5fbG9uZ2luZGV4ID0gc3RlcHBlZF91cDsKIAogICAgIGlmIChyZXN1bHQtPm9iX3JlZmNudCA9PSAxKSB7CmRpZmYgLS1naXQgYS9PYmplY3RzL2V4Y2VwdGlvbnMuYyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCmluZGV4IDE5Mjk3NzcuLjIyNGQxYmEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZXhjZXB0aW9ucy5jCisrKyBiL09iamVjdHMvZXhjZXB0aW9ucy5jCkBAIC0zNjgsOCArMzY4LDcgQEAKIAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9QeUV4Y19CYXNlRXhjZXB0aW9uID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKm9iX3NpemUqLworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgIEVYQ19NT0RVTEVfTkFNRSAiQmFzZUV4Y2VwdGlvbiIsIC8qdHBfbmFtZSovCiAgICAgc2l6ZW9mKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCksIC8qdHBfYmFzaWNzaXplKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyp0cF9pdGVtc2l6ZSovCkBAIC00MTksOCArNDE4LDcgQEAKICAqLwogI2RlZmluZSBTaW1wbGVFeHRlbmRzRXhjZXB0aW9uKEVYQ0JBU0UsIEVYQ05BTUUsIEVYQ0RPQykgXAogc3RhdGljIFB5VHlwZU9iamVjdCBfUHlFeGNfICMjIEVYQ05BTUUgPSB7IFwKLSAgICBQeU9iamVjdF9IRUFEX0lOSVQoTlVMTCkgXAotICAgIDAsIFwKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkgXAogICAgIEVYQ19NT0RVTEVfTkFNRSAjIEVYQ05BTUUsIFwKICAgICBzaXplb2YoUHlCYXNlRXhjZXB0aW9uT2JqZWN0KSwgXAogICAgIDAsIChkZXN0cnVjdG9yKUJhc2VFeGNlcHRpb25fZGVhbGxvYywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgXApAQCAtNDM1LDggKzQzMyw3IEBACiAKICNkZWZpbmUgTWlkZGxpbmdFeHRlbmRzRXhjZXB0aW9uKEVYQ0JBU0UsIEVYQ05BTUUsIEVYQ1NUT1JFLCBFWENET0MpIFwKIHN0YXRpYyBQeVR5cGVPYmplY3QgX1B5RXhjXyAjIyBFWENOQU1FID0geyBcCi0gICAgUHlPYmplY3RfSEVBRF9JTklUKE5VTEwpIFwKLSAgICAwLCBcCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApIFwKICAgICBFWENfTU9EVUxFX05BTUUgIyBFWENOQU1FLCBcCiAgICAgc2l6ZW9mKFB5ICMjIEVYQ1NUT1JFICMjIE9iamVjdCksIFwKICAgICAwLCAoZGVzdHJ1Y3RvcilFWENTVE9SRSAjIyBfZGVhbGxvYywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgXApAQCAtNDUxLDggKzQ0OCw3IEBACiAKICNkZWZpbmUgQ29tcGxleEV4dGVuZHNFeGNlcHRpb24oRVhDQkFTRSwgRVhDTkFNRSwgRVhDU1RPUkUsIEVYQ0RFQUxMT0MsIEVYQ01FVEhPRFMsIEVYQ01FTUJFUlMsIEVYQ1NUUiwgRVhDRE9DKSBcCiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9QeUV4Y18gIyMgRVhDTkFNRSA9IHsgXAotICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKSBcCi0gICAgMCwgXAorICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKSBcCiAgICAgRVhDX01PRFVMRV9OQU1FICMgRVhDTkFNRSwgXAogICAgIHNpemVvZihQeSAjIyBFWENTVE9SRSAjIyBPYmplY3QpLCAwLCBcCiAgICAgKGRlc3RydWN0b3IpRVhDU1RPUkUgIyMgX2RlYWxsb2MsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIFwKQEAgLTE2NzksOCArMTY3NSw3IEBACiB9CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgX1B5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciA9IHsKLSAgICBQeU9iamVjdF9IRUFEX0lOSVQoTlVMTCkKLSAgICAwLAorICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVChOVUxMLCAwKQogICAgIEVYQ19NT0RVTEVfTkFNRSAiVW5pY29kZUVuY29kZUVycm9yIiwKICAgICBzaXplb2YoUHlVbmljb2RlRXJyb3JPYmplY3QpLCAwLAogICAgIChkZXN0cnVjdG9yKVVuaWNvZGVFcnJvcl9kZWFsbG9jLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLApAQCAtMTc2NCw4ICsxNzU5LDcgQEAKIH0KIAogc3RhdGljIFB5VHlwZU9iamVjdCBfUHlFeGNfVW5pY29kZURlY29kZUVycm9yID0gewotICAgIFB5T2JqZWN0X0hFQURfSU5JVChOVUxMKQotICAgIDAsCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKE5VTEwsIDApCiAgICAgRVhDX01PRFVMRV9OQU1FICJVbmljb2RlRGVjb2RlRXJyb3IiLAogICAgIHNpemVvZihQeVVuaWNvZGVFcnJvck9iamVjdCksIDAsCiAgICAgKGRlc3RydWN0b3IpVW5pY29kZUVycm9yX2RlYWxsb2MsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCkBAIC0xODYyLDggKzE4NTYsNyBAQAogfQogCiBzdGF0aWMgUHlUeXBlT2JqZWN0IF9QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgPSB7Ci0gICAgUHlPYmplY3RfSEVBRF9JTklUKE5VTEwpCi0gICAgMCwKKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoTlVMTCwgMCkKICAgICBFWENfTU9EVUxFX05BTUUgIlVuaWNvZGVUcmFuc2xhdGVFcnJvciIsCiAgICAgc2l6ZW9mKFB5VW5pY29kZUVycm9yT2JqZWN0KSwgMCwKICAgICAoZGVzdHJ1Y3RvcilVbmljb2RlRXJyb3JfZGVhbGxvYywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKZGlmZiAtLWdpdCBhL09iamVjdHMvZmlsZW9iamVjdC5jIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKaW5kZXggYTdkNjRiYS4uYjUyNGYwOSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9maWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKQEAgLTEyMSwxMCArMTIxLDE1IEBACiB7CiAjaWYgZGVmaW5lZChIQVZFX0ZTVEFUKSAmJiBkZWZpbmVkKFNfSUZESVIpICYmIGRlZmluZWQoRUlTRElSKQogICAgIHN0cnVjdCBzdGF0IGJ1ZjsKKyAgICBpbnQgcmVzOwogICAgIGlmIChmLT5mX2ZwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBmOwotICAgIGlmIChmc3RhdChmaWxlbm8oZi0+Zl9mcCksICZidWYpID09IDAgJiYKLSAgICAgICAgU19JU0RJUihidWYuc3RfbW9kZSkpIHsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICByZXMgPSBmc3RhdChmaWxlbm8oZi0+Zl9mcCksICZidWYpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAocmVzID09IDAgJiYgU19JU0RJUihidWYuc3RfbW9kZSkpIHsKICAgICAgICAgY2hhciAqbXNnID0gc3RyZXJyb3IoRUlTRElSKTsKICAgICAgICAgUHlPYmplY3QgKmV4YyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbihQeUV4Y19JT0Vycm9yLCAiKGlzTykiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVJU0RJUiwgbXNnLCBmLT5mX25hbWUpOwpAQCAtNDI3LDEwICs0MzIsMTAgQEAKICAgICBpZiAobG9jYWxfZnAgIT0gTlVMTCkgewogICAgICAgICBsb2NhbF9jbG9zZSA9IGYtPmZfY2xvc2U7CiAgICAgICAgIGlmIChsb2NhbF9jbG9zZSAhPSBOVUxMICYmIGYtPnVubG9ja2VkX2NvdW50ID4gMCkgewotICAgICAgICAgICAgaWYgKGYtPm9iX3JlZmNudCA+IDApIHsKKyAgICAgICAgICAgIGlmIChQeV9SRUZDTlQoZikgPiAwKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0lPRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJjbG9zZSgpIGNhbGxlZCBkdXJpbmcgY29uY3VycmVudCAiCi0gICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gb24gdGhlIHNhbWUgZmlsZSBvYmplY3QuIik7CisgICAgICAgICAgICAgICAgICAgICJvcGVyYXRpb24gb24gdGhlIHNhbWUgZmlsZSBvYmplY3QiKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgLyogVGhpcyBzaG91bGQgbm90IGhhcHBlbiB1bmxlc3Mgc29tZW9uZSBpcwogICAgICAgICAgICAgICAgICAqIGNhcmVsZXNzbHkgcGxheWluZyB3aXRoIHRoZSBQeUZpbGVPYmplY3QKQEAgLTQzOCw3ICs0NDMsNyBAQAogICAgICAgICAgICAgICAgICAqIHBvaW50ZXIuICovCiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiUHlGaWxlT2JqZWN0IGxvY2tpbmcgZXJyb3IgaW4gIgotICAgICAgICAgICAgICAgICAgICAiZGVzdHJ1Y3RvciAocmVmY250IDw9IDAgYXQgY2xvc2UpLiIpOworICAgICAgICAgICAgICAgICAgICAiZGVzdHJ1Y3RvciAocmVmY250IDw9IDAgYXQgY2xvc2UpIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQpAQCAtNjA0LDcgKzYwOSwxMiBAQAogICAgIHJldHVybiBOVUxMOwogfQogCi1zdGF0aWMgdm9pZCBkcm9wX3JlYWRhaGVhZChQeUZpbGVPYmplY3QgKik7CitzdGF0aWMgdm9pZAorZHJvcF9maWxlX3JlYWRhaGVhZChQeUZpbGVPYmplY3QgKmYpCit7CisgICAgUHlNZW1fRlJFRShmLT5mX2J1Zik7CisgICAgZi0+Zl9idWYgPSBOVUxMOworfQogCiAvKiBNZXRob2RzICovCiAKQEAgLTYyNyw3ICs2MzcsNyBAQAogICAgIFB5X1hERUNSRUYoZi0+Zl9tb2RlKTsKICAgICBQeV9YREVDUkVGKGYtPmZfZW5jb2RpbmcpOwogICAgIFB5X1hERUNSRUYoZi0+Zl9lcnJvcnMpOwotICAgIGRyb3BfcmVhZGFoZWFkKGYpOworICAgIGRyb3BfZmlsZV9yZWFkYWhlYWQoZik7CiAgICAgUHlfVFlQRShmKS0+dHBfZnJlZSgoUHlPYmplY3QgKilmKTsKIH0KIApAQCAtNzYyLDcgKzc3Miw3IEBACiAKICAgICBpZiAoZi0+Zl9mcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gZXJyX2Nsb3NlZCgpOwotICAgIGRyb3BfcmVhZGFoZWFkKGYpOworICAgIGRyb3BfZmlsZV9yZWFkYWhlYWQoZik7CiAgICAgd2hlbmNlID0gMDsKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98aTpzZWVrIiwgJm9mZm9iaiwgJndoZW5jZSkpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTAwNCw3ICsxMDE0LDEzIEBACiAjaWZkZWYgSEFWRV9GU1RBVAogICAgIG9mZl90IHBvcywgZW5kOwogICAgIHN0cnVjdCBzdGF0IHN0OwotICAgIGlmIChmc3RhdChmaWxlbm8oZi0+Zl9mcCksICZzdCkgPT0gMCkgeworICAgIGludCByZXM7CisgICAgc2l6ZV90IGJ1ZnNpemUgPSAwOworCisgICAgRklMRV9CRUdJTl9BTExPV19USFJFQURTKGYpCisgICAgcmVzID0gZnN0YXQoZmlsZW5vKGYtPmZfZnApLCAmc3QpOworCisgICAgaWYgKHJlcyA9PSAwKSB7CiAgICAgICAgIGVuZCA9IHN0LnN0X3NpemU7CiAgICAgICAgIC8qIFRoZSBmb2xsb3dpbmcgaXMgbm90IGEgYnVnOiB3ZSByZWFsbHkgbmVlZCB0byBjYWxsIGxzZWVrKCkKICAgICAgICAgICAgKmFuZCogZnRlbGwoKS4gIFRoZSByZWFzb24gaXMgdGhhdCBzb21lIHN0ZGlvIGxpYnJhcmllcwpAQCAtMTAxNSwxNiArMTAzMSwyMSBAQAogICAgICAgICAgICB3b3Jrcy4gIFdlIGNhbid0IHVzZSB0aGUgbHNlZWsoKSB2YWx1ZSBlaXRoZXIsIGJlY2F1c2Ugd2UKICAgICAgICAgICAgbmVlZCB0byB0YWtlIHRoZSBhbW91bnQgb2YgYnVmZmVyZWQgZGF0YSBpbnRvIGFjY291bnQuCiAgICAgICAgICAgIChZZXQgYW5vdGhlciByZWFzb24gd2h5IHN0ZGlvIHN0aW5rcy4gOi0pICovCisKICAgICAgICAgcG9zID0gbHNlZWsoZmlsZW5vKGYtPmZfZnApLCAwTCwgU0VFS19DVVIpOworCiAgICAgICAgIGlmIChwb3MgPj0gMCkgewogICAgICAgICAgICAgcG9zID0gZnRlbGwoZi0+Zl9mcCk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHBvcyA8IDApCiAgICAgICAgICAgICBjbGVhcmVycihmLT5mX2ZwKTsKICAgICAgICAgaWYgKGVuZCA+IHBvcyAmJiBwb3MgPj0gMCkKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50c2l6ZSArIGVuZCAtIHBvcyArIDE7CisgICAgICAgICAgICBidWZzaXplID0gY3VycmVudHNpemUgKyBlbmQgLSBwb3MgKyAxOwogICAgICAgICAvKiBBZGQgMSBzbyBpZiB0aGUgZmlsZSB3ZXJlIHRvIGdyb3cgd2UnZCBub3RpY2UuICovCiAgICAgfQorICAgIEZJTEVfRU5EX0FMTE9XX1RIUkVBRFMoZikKKyAgICBpZiAoYnVmc2l6ZSAhPSAwKQorICAgICAgICByZXR1cm4gYnVmc2l6ZTsKICNlbmRpZgogICAgIC8qIEV4cGFuZCB0aGUgYnVmZmVyIGJ5IGFuIGFtb3VudCBwcm9wb3J0aW9uYWwgdG8gdGhlIGN1cnJlbnQgc2l6ZSwKICAgICAgICBnaXZpbmcgdXMgYW1vcnRpemVkIGxpbmVhci10aW1lIGJlaGF2aW9yLiBVc2UgYSBsZXNzLXRoYW4tZG91YmxlCkBAIC0yMjIxLDEyICsyMjQyLDE2IEBACiAgICAgezB9LAogfTsKIAordHlwZWRlZiBzdHJ1Y3QgeworICAgIGNoYXIgKmJ1ZiwgKmJ1ZnB0ciwgKmJ1ZmVuZDsKK30gcmVhZGFoZWFkYnVmZmVyOworCiBzdGF0aWMgdm9pZAotZHJvcF9yZWFkYWhlYWQoUHlGaWxlT2JqZWN0ICpmKQorZHJvcF9yZWFkYWhlYWRidWZmZXIocmVhZGFoZWFkYnVmZmVyICpyYWIpCiB7Ci0gICAgaWYgKGYtPmZfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgUHlNZW1fRnJlZShmLT5mX2J1Zik7Ci0gICAgICAgIGYtPmZfYnVmID0gTlVMTDsKKyAgICBpZiAocmFiLT5idWYgIT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GUkVFKHJhYi0+YnVmKTsKKyAgICAgICAgcmFiLT5idWYgPSBOVUxMOwogICAgIH0KIH0KIApAQCAtMjIzNCwzNSArMjI1OSwzNCBAQAogICAgKHVubGVzcyBhdCBFT0YpIGFuZCBubyBtb3JlIHRoYW4gYnVmc2l6ZS4gIFJldHVybnMgbmVnYXRpdmUgdmFsdWUgb24KICAgIGVycm9yLCB3aWxsIHNldCBNZW1vcnlFcnJvciBpZiBidWZzaXplIGJ5dGVzIGNhbm5vdCBiZSBhbGxvY2F0ZWQuICovCiBzdGF0aWMgaW50Ci1yZWFkYWhlYWQoUHlGaWxlT2JqZWN0ICpmLCBQeV9zc2l6ZV90IGJ1ZnNpemUpCityZWFkYWhlYWQoUHlGaWxlT2JqZWN0ICpmLCByZWFkYWhlYWRidWZmZXIgKnJhYiwgUHlfc3NpemVfdCBidWZzaXplKQogewogICAgIFB5X3NzaXplX3QgY2h1bmtzaXplOwogCi0gICAgaWYgKGYtPmZfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgaWYoIChmLT5mX2J1ZmVuZCAtIGYtPmZfYnVmcHRyKSA+PSAxKQorICAgIGlmIChyYWItPmJ1ZiAhPSBOVUxMKSB7CisgICAgICAgIGlmICgocmFiLT5idWZlbmQgLSByYWItPmJ1ZnB0cikgPj0gMSkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBkcm9wX3JlYWRhaGVhZChmKTsKKyAgICAgICAgICAgIGRyb3BfcmVhZGFoZWFkYnVmZmVyKHJhYik7CiAgICAgfQotICAgIGlmICgoZi0+Zl9idWYgPSAoY2hhciAqKVB5TWVtX01hbGxvYyhidWZzaXplKSkgPT0gTlVMTCkgeworICAgIGlmICgocmFiLT5idWYgPSBQeU1lbV9NQUxMT0MoYnVmc2l6ZSkpID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBGSUxFX0JFR0lOX0FMTE9XX1RIUkVBRFMoZikKICAgICBlcnJubyA9IDA7Ci0gICAgY2h1bmtzaXplID0gUHlfVW5pdmVyc2FsTmV3bGluZUZyZWFkKAotICAgICAgICBmLT5mX2J1ZiwgYnVmc2l6ZSwgZi0+Zl9mcCwgKFB5T2JqZWN0ICopZik7CisgICAgY2h1bmtzaXplID0gUHlfVW5pdmVyc2FsTmV3bGluZUZyZWFkKHJhYi0+YnVmLCBidWZzaXplLCBmLT5mX2ZwLCAoUHlPYmplY3QgKilmKTsKICAgICBGSUxFX0VORF9BTExPV19USFJFQURTKGYpCiAgICAgaWYgKGNodW5rc2l6ZSA9PSAwKSB7CiAgICAgICAgIGlmIChmZXJyb3IoZi0+Zl9mcCkpIHsKICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKICAgICAgICAgICAgIGNsZWFyZXJyKGYtPmZfZnApOwotICAgICAgICAgICAgZHJvcF9yZWFkYWhlYWQoZik7CisgICAgICAgICAgICBkcm9wX3JlYWRhaGVhZGJ1ZmZlcihyYWIpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQotICAgIGYtPmZfYnVmcHRyID0gZi0+Zl9idWY7Ci0gICAgZi0+Zl9idWZlbmQgPSBmLT5mX2J1ZiArIGNodW5rc2l6ZTsKKyAgICByYWItPmJ1ZnB0ciA9IHJhYi0+YnVmOworICAgIHJhYi0+YnVmZW5kID0gcmFiLT5idWYgKyBjaHVua3NpemU7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTIyNzIsNDUgKzIyOTYsNDMgQEAKICAgIGxvZ2FyaXRobWljIGJ1ZmZlciBncm93dGggdG8gYWJvdXQgNTAgZXZlbiB3aGVuIHJlYWRpbmcgYSAxZ2IgbGluZS4gKi8KIAogc3RhdGljIFB5U3RyaW5nT2JqZWN0ICoKLXJlYWRhaGVhZF9nZXRfbGluZV9za2lwKFB5RmlsZU9iamVjdCAqZiwgUHlfc3NpemVfdCBza2lwLCBQeV9zc2l6ZV90IGJ1ZnNpemUpCityZWFkYWhlYWRfZ2V0X2xpbmVfc2tpcChQeUZpbGVPYmplY3QgKmYsIHJlYWRhaGVhZGJ1ZmZlciAqcmFiLCBQeV9zc2l6ZV90IHNraXAsIFB5X3NzaXplX3QgYnVmc2l6ZSkKIHsKICAgICBQeVN0cmluZ09iamVjdCogczsKICAgICBjaGFyICpidWZwdHI7CiAgICAgY2hhciAqYnVmOwogICAgIFB5X3NzaXplX3QgbGVuOwogCi0gICAgaWYgKGYtPmZfYnVmID09IE5VTEwpCi0gICAgICAgIGlmIChyZWFkYWhlYWQoZiwgYnVmc2l6ZSkgPCAwKQorICAgIGlmIChyYWItPmJ1ZiA9PSBOVUxMKQorICAgICAgICBpZiAocmVhZGFoZWFkKGYsIHJhYiwgYnVmc2l6ZSkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBsZW4gPSBmLT5mX2J1ZmVuZCAtIGYtPmZfYnVmcHRyOworICAgIGxlbiA9IHJhYi0+YnVmZW5kIC0gcmFiLT5idWZwdHI7CiAgICAgaWYgKGxlbiA9PSAwKQotICAgICAgICByZXR1cm4gKFB5U3RyaW5nT2JqZWN0ICopCi0gICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBza2lwKTsKLSAgICBidWZwdHIgPSAoY2hhciAqKW1lbWNocihmLT5mX2J1ZnB0ciwgJ1xuJywgbGVuKTsKKyAgICAgICAgcmV0dXJuIChQeVN0cmluZ09iamVjdCAqKVB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNraXApOworICAgIGJ1ZnB0ciA9IChjaGFyICopbWVtY2hyKHJhYi0+YnVmcHRyLCAnXG4nLCBsZW4pOwogICAgIGlmIChidWZwdHIgIT0gTlVMTCkgewogICAgICAgICBidWZwdHIrKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQ291bnQgdGhlICdcbicgKi8KLSAgICAgICAgbGVuID0gYnVmcHRyIC0gZi0+Zl9idWZwdHI7Ci0gICAgICAgIHMgPSAoUHlTdHJpbmdPYmplY3QgKikKLSAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNraXAgKyBsZW4pOworICAgICAgICBsZW4gPSBidWZwdHIgLSByYWItPmJ1ZnB0cjsKKyAgICAgICAgcyA9IChQeVN0cmluZ09iamVjdCAqKVB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNraXAgKyBsZW4pOwogICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIG1lbWNweShQeVN0cmluZ19BU19TVFJJTkcocykgKyBza2lwLCBmLT5mX2J1ZnB0ciwgbGVuKTsKLSAgICAgICAgZi0+Zl9idWZwdHIgPSBidWZwdHI7Ci0gICAgICAgIGlmIChidWZwdHIgPT0gZi0+Zl9idWZlbmQpCi0gICAgICAgICAgICBkcm9wX3JlYWRhaGVhZChmKTsKKyAgICAgICAgbWVtY3B5KFB5U3RyaW5nX0FTX1NUUklORyhzKSArIHNraXAsIHJhYi0+YnVmcHRyLCBsZW4pOworICAgICAgICByYWItPmJ1ZnB0ciA9IGJ1ZnB0cjsKKyAgICAgICAgaWYgKGJ1ZnB0ciA9PSByYWItPmJ1ZmVuZCkKKyAgICAgICAgICAgIGRyb3BfcmVhZGFoZWFkYnVmZmVyKHJhYik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgYnVmcHRyID0gZi0+Zl9idWZwdHI7Ci0gICAgICAgIGJ1ZiA9IGYtPmZfYnVmOwotICAgICAgICBmLT5mX2J1ZiA9IE5VTEw7ICAgICAgICAgICAgICAgIC8qIEZvcmNlIG5ldyByZWFkYWhlYWQgYnVmZmVyICovCisgICAgICAgIGJ1ZnB0ciA9IHJhYi0+YnVmcHRyOworICAgICAgICBidWYgPSByYWItPmJ1ZjsKKyAgICAgICAgcmFiLT5idWYgPSBOVUxMOyAgICAgICAgICAgICAgICAvKiBGb3JjZSBuZXcgcmVhZGFoZWFkIGJ1ZmZlciAqLwogICAgICAgICBhc3NlcnQobGVuIDw9IFBZX1NTSVpFX1RfTUFYIC0gc2tpcCk7Ci0gICAgICAgIHMgPSByZWFkYWhlYWRfZ2V0X2xpbmVfc2tpcChmLCBza2lwICsgbGVuLCBidWZzaXplICsgKGJ1ZnNpemU+PjIpKTsKKyAgICAgICAgcyA9IHJlYWRhaGVhZF9nZXRfbGluZV9za2lwKGYsIHJhYiwgc2tpcCArIGxlbiwgYnVmc2l6ZSArIChidWZzaXplPj4yKSk7CiAgICAgICAgIGlmIChzID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgICAgIFB5TWVtX0ZSRUUoYnVmKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CiAgICAgICAgIG1lbWNweShQeVN0cmluZ19BU19TVFJJTkcocykgKyBza2lwLCBidWZwdHIsIGxlbik7Ci0gICAgICAgIFB5TWVtX0ZyZWUoYnVmKTsKKyAgICAgICAgUHlNZW1fRlJFRShidWYpOwogICAgIH0KICAgICByZXR1cm4gczsKIH0KQEAgLTIzMjgsNyArMjM1MCwzMCBAQAogICAgIGlmICghZi0+cmVhZGFibGUpCiAgICAgICAgIHJldHVybiBlcnJfbW9kZSgicmVhZGluZyIpOwogCi0gICAgbCA9IHJlYWRhaGVhZF9nZXRfbGluZV9za2lwKGYsIDAsIFJFQURBSEVBRF9CVUZTSVpFKTsKKyAgICB7CisgICAgICAgIC8qCisgICAgICAgICAgTXVsdGlwbGUgdGhyZWFkcyBjYW4gZW50ZXIgdGhpcyBtZXRob2Qgd2hpbGUgdGhlIEdJTCBpcyByZWxlYXNlZAorICAgICAgICAgIGR1cmluZyBmaWxlIHJlYWQgYW5kIHdyZWFrIGhhdm9jIG9uIHRoZSBmaWxlIG9iamVjdCdzIHJlYWRhaGVhZAorICAgICAgICAgIGJ1ZmZlci4gVG8gYXZvaWQgZGVhbGluZyB3aXRoIGNyb3NzLXRocmVhZCBjb29yZGluYXRpb24gaXNzdWVzLCB3ZQorICAgICAgICAgIGNhY2hlIHRoZSBmaWxlIGJ1ZmZlciBzdGF0ZSBsb2NhbGx5IGFuZCBvbmx5IHNldCBpdCBiYWNrIG9uIHRoZSBmaWxlCisgICAgICAgICAgb2JqZWN0IHdoZW4gd2UncmUgZG9uZS4KKyAgICAgICAgKi8KKyAgICAgICAgcmVhZGFoZWFkYnVmZmVyIHJhYiA9IHtmLT5mX2J1ZiwgZi0+Zl9idWZwdHIsIGYtPmZfYnVmZW5kfTsKKyAgICAgICAgZi0+Zl9idWYgPSBOVUxMOworICAgICAgICBsID0gcmVhZGFoZWFkX2dldF9saW5lX3NraXAoZiwgJnJhYiwgMCwgUkVBREFIRUFEX0JVRlNJWkUpOworICAgICAgICAvKgorICAgICAgICAgIE1ha2Ugc3VyZSB0aGUgZmlsZSdzIGludGVybmFsIHJlYWQgYnVmZmVyIGlzIGNsZWFyZWQgb3V0LiBUaGlzIHdpbGwKKyAgICAgICAgICBvbmx5IGRvIGFueXRoaW5nIGlmIHNvbWUgb3RoZXIgdGhyZWFkIGludGVybGVhdmVkIHdpdGggdXMgZHVyaW5nCisgICAgICAgICAgcmVhZGFoZWFkLiBXZSB3YW50IHRvIGRyb3AgYW55IGNoYW5nZWxpbmcgYnVmZmVyLCBzbyB3ZSBkb24ndCBsZWFrCisgICAgICAgICAgbWVtb3J5LiBXZSBtYXkgbG9zZSBkYXRhLCBidXQgdGhhdCdzIHdoYXQgeW91IGdldCBmb3IgcmVhZGluZyB0aGUgc2FtZQorICAgICAgICAgIGZpbGUgb2JqZWN0IGluIG11bHRpcGxlIHRocmVhZHMuCisgICAgICAgICovCisgICAgICAgIGRyb3BfZmlsZV9yZWFkYWhlYWQoZik7CisgICAgICAgIGYtPmZfYnVmID0gcmFiLmJ1ZjsKKyAgICAgICAgZi0+Zl9idWZwdHIgPSByYWIuYnVmcHRyOworICAgICAgICBmLT5mX2J1ZmVuZCA9IHJhYi5idWZlbmQ7CisgICAgfQorCiAgICAgaWYgKGwgPT0gTlVMTCB8fCBQeVN0cmluZ19HRVRfU0laRShsKSA9PSAwKSB7CiAgICAgICAgIFB5X1hERUNSRUYobCk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjY5Miw3ICsyNzM3LDcgQEAKICAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhbiBpbnQsIG9yIGhhdmUgYSBmaWxlbm8oKSBtZXRob2QuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbXVzdCBiZSBhbiBpbnQsIG9yIGhhdmUgYSBmaWxlbm8oKSBtZXRob2QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mbG9hdG9iamVjdC5jIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCmluZGV4IDgwMWYyODYuLjU5NTRkMzkgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZmxvYXRvYmplY3QuYworKysgYi9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKQEAgLTEsNCArMSwzIEBACi0KIC8qIEZsb2F0IG9iamVjdCBpbXBsZW1lbnRhdGlvbiAqLwogCiAvKiBYWFggVGhlcmUgc2hvdWxkIGJlIG92ZXJmbG93IGNoZWNrcyBoZXJlLCBidXQgaXQncyBoYXJkIHRvIGNoZWNrCkBAIC02NSw3ICs2NCw3IEBACiAgICAgcmV0dXJuIERCTF9NSU47CiB9CiAKLXN0YXRpYyBQeVR5cGVPYmplY3QgRmxvYXRJbmZvVHlwZSA9IHswLCAwLCAwLCAwLCAwLCAwfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgRmxvYXRJbmZvVHlwZTsKIAogUHlEb2NfU1RSVkFSKGZsb2F0aW5mb19fZG9jX18sCiAic3lzLmZsb2F0X2luZm9cblwKQEAgLTgwLDcgKzc5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgImlzIHJlcHJlc2VudGFibGUifSwKICAgICB7Im1heF8xMF9leHAiLCAgICAgICJEQkxfTUFYXzEwX0VYUCAtLSBtYXhpbXVtIGludCBlIHN1Y2ggdGhhdCAxMCoqZSAiCiAgICAgICAgICAgICAgICAgICAgICJpcyByZXByZXNlbnRhYmxlIn0sCi0gICAgeyJtaW4iLCAgICAgICAgICAgICAiREJMX01JTiAtLSBNaW5pbXVtIHBvc2l0aXZlIG5vcm1hbGl6ZXIgZmxvYXQifSwKKyAgICB7Im1pbiIsICAgICAgICAgICAgICJEQkxfTUlOIC0tIE1pbmltdW0gcG9zaXRpdmUgbm9ybWFsaXplZCBmbG9hdCJ9LAogICAgIHsibWluX2V4cCIsICAgICAgICAgIkRCTF9NSU5fRVhQIC0tIG1pbmltdW0gaW50IGUgc3VjaCB0aGF0IHJhZGl4KiooZS0xKSAiCiAgICAgICAgICAgICAgICAgICAgICJpcyBhIG5vcm1hbGl6ZWQgZmxvYXQifSwKICAgICB7Im1pbl8xMF9leHAiLCAgICAgICJEQkxfTUlOXzEwX0VYUCAtLSBtaW5pbXVtIGludCBlIHN1Y2ggdGhhdCAxMCoqZSBpcyAiCkBAIC05MCw3ICs4OSw3IEBACiAgICAgeyJlcHNpbG9uIiwgICAgICAgICAiREJMX0VQU0lMT04gLS0gRGlmZmVyZW5jZSBiZXR3ZWVuIDEgYW5kIHRoZSBuZXh0ICIKICAgICAgICAgICAgICAgICAgICAgInJlcHJlc2VudGFibGUgZmxvYXQifSwKICAgICB7InJhZGl4IiwgICAgICAgICAgICJGTFRfUkFESVggLS0gcmFkaXggb2YgZXhwb25lbnQifSwKLSAgICB7InJvdW5kcyIsICAgICAgICAgICJGTFRfUk9VTkRTIC0tIGFkZGl0aW9uIHJvdW5kcyJ9LAorICAgIHsicm91bmRzIiwgICAgICAgICAgIkZMVF9ST1VORFMgLS0gcm91bmRpbmcgbW9kZSJ9LAogICAgIHswfQogfTsKIApAQCAtNDI5LDcgKzQyOCw3IEBACiAgICAgICAgIGogPSBQeUZsb2F0X0FTX0RPVUJMRSh3KTsKIAogICAgIGVsc2UgaWYgKCFQeV9JU19GSU5JVEUoaSkpIHsKLSAgICAgICAgaWYgKFB5SW50X0NoZWNrKHcpIHx8IFB5TG9uZ19DaGVjayh3KSkKKyAgICAgICAgaWYgKF9QeUFueUludF9DaGVjayh3KSkKICAgICAgICAgICAgIC8qIElmIGkgaXMgYW4gaW5maW5pdHksIGl0cyBtYWduaXR1ZGUgZXhjZWVkcyBhbnkKICAgICAgICAgICAgICAqIGZpbml0ZSBpbnRlZ2VyLCBzbyBpdCBkb2Vzbid0IG1hdHRlciB3aGljaCBpbnQgd2UKICAgICAgICAgICAgICAqIGNvbXBhcmUgaSB3aXRoLiAgSWYgaSBpcyBhIE5hTiwgc2ltaWxhcmx5LgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9mcmFtZW9iamVjdC5jIGIvT2JqZWN0cy9mcmFtZW9iamVjdC5jCmluZGV4IDJjOGZiMDEuLjE3NTg3NDUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnJhbWVvYmplY3QuYworKysgYi9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKQEAgLTg5LDYgKzg5LDkgQEAKICAqICBvICd0cnknLydmb3InLyd3aGlsZScgYmxvY2tzIGNhbid0IGJlIGp1bXBlZCBpbnRvIGJlY2F1c2UgdGhlIGJsb2Nrc3RhY2sKICAqICAgIG5lZWRzIHRvIGJlIHNldCB1cCBiZWZvcmUgdGhlaXIgY29kZSBydW5zLCBhbmQgZm9yICdmb3InIGxvb3BzIHRoZQogICogICAgaXRlcmF0b3IgbmVlZHMgdG8gYmUgb24gdGhlIHN0YWNrLgorICogIG8gSnVtcHMgY2Fubm90IGJlIG1hZGUgZnJvbSB3aXRoaW4gYSB0cmFjZSBmdW5jdGlvbiBpbnZva2VkIHdpdGggYQorICogICAgJ3JldHVybicgb3IgJ2V4Y2VwdGlvbicgZXZlbnQgc2luY2UgdGhlIGV2YWwgbG9vcCBoYXMgYmVlbiBleGl0ZWQgYXQKKyAqICAgIHRoYXQgdGltZS4KICAqLwogc3RhdGljIGludAogZnJhbWVfc2V0bGluZW5vKFB5RnJhbWVPYmplY3QgKmYsIFB5T2JqZWN0KiBwX25ld19saW5lbm8pCkBAIC0xMjIsMTMgKzEyNSwzMiBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCisgICAgLyogVXBvbiB0aGUgJ2NhbGwnIHRyYWNlIGV2ZW50IG9mIGEgbmV3IGZyYW1lLCBmLT5mX2xhc3RpIGlzIC0xIGFuZAorICAgICAqIGYtPmZfdHJhY2UgaXMgTlVMTCwgY2hlY2sgZmlyc3Qgb24gdGhlIGZpcnN0IGNvbmRpdGlvbi4KKyAgICAgKiBGb3JiaWRkaW5nIGp1bXBzIGZyb20gdGhlICdjYWxsJyBldmVudCBvZiBhIG5ldyBmcmFtZSBpcyBhIHNpZGUgZWZmZWN0CisgICAgICogb2YgYWxsb3dpbmcgdG8gc2V0IGZfbGluZW5vIG9ubHkgZnJvbSB0cmFjZSBmdW5jdGlvbnMuICovCisgICAgaWYgKGYtPmZfbGFzdGkgPT0gLTEpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QganVtcCBmcm9tIHRoZSAnY2FsbCcgdHJhY2UgZXZlbnQgb2YgYSBuZXcgZnJhbWUiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKwogICAgIC8qIFlvdSBjYW4gb25seSBkbyB0aGlzIGZyb20gd2l0aGluIGEgdHJhY2UgZnVuY3Rpb24sIG5vdCB2aWEKICAgICAgKiBfZ2V0ZnJhbWUgb3Igc2ltaWxhciBoYWNrZXJ5LiAqLwotICAgIGlmICghZi0+Zl90cmFjZSkKLSAgICB7CisgICAgaWYgKCFmLT5mX3RyYWNlKSB7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgImZfbGluZW5vIGNhbiBvbmx5IGJlIHNldCBieSBhIgotICAgICAgICAgICAgICAgICAgICAgIiBsaW5lIHRyYWNlIGZ1bmN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAiZl9saW5lbm8gY2FuIG9ubHkgYmUgc2V0IGJ5IGEgdHJhY2UgZnVuY3Rpb24iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIEZvcmJpZCBqdW1wcyB1cG9uIGEgJ3JldHVybicgdHJhY2UgZXZlbnQgKGV4Y2VwdCBhZnRlciBleGVjdXRpbmcgYQorICAgICAqIFlJRUxEX1ZBTFVFIG9wY29kZSwgZl9zdGFja3RvcCBpcyBub3QgTlVMTCBpbiB0aGF0IGNhc2UpIGFuZCB1cG9uIGFuCisgICAgICogJ2V4Y2VwdGlvbicgdHJhY2UgZXZlbnQuCisgICAgICogSnVtcHMgZnJvbSAnY2FsbCcgdHJhY2UgZXZlbnRzIGhhdmUgYWxyZWFkeSBiZWVuIGZvcmJpZGRlbiBhYm92ZSBmb3IgbmV3CisgICAgICogZnJhbWVzLCBzbyB0aGlzIGNoZWNrIGRvZXMgbm90IGNoYW5nZSBhbnl0aGluZyBmb3IgJ2NhbGwnIGV2ZW50cy4gKi8KKyAgICBpZiAoZi0+Zl9zdGFja3RvcCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICJjYW4gb25seSBqdW1wIGZyb20gYSAnbGluZScgdHJhY2UgZXZlbnQiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtMTc4LDYgKzIwMCwxNSBAQAogICAgIG1pbl9hZGRyID0gTUlOKG5ld19sYXN0aSwgZi0+Zl9sYXN0aSk7CiAgICAgbWF4X2FkZHIgPSBNQVgobmV3X2xhc3RpLCBmLT5mX2xhc3RpKTsKIAorICAgIC8qIFRoZSB0cmFjZSBmdW5jdGlvbiBpcyBjYWxsZWQgd2l0aCBhICdyZXR1cm4nIHRyYWNlIGV2ZW50IGFmdGVyIHRoZQorICAgICAqIGV4ZWN1dGlvbiBvZiBhIHlpZWxkIHN0YXRlbWVudC4gKi8KKyAgICBhc3NlcnQoZi0+Zl9sYXN0aSAhPSAtMSk7CisgICAgaWYgKGNvZGVbZi0+Zl9sYXN0aV0gPT0gWUlFTERfVkFMVUUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNhbid0IGp1bXAgZnJvbSBhIHlpZWxkIHN0YXRlbWVudCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCiAgICAgLyogWW91IGNhbid0IGp1bXAgb250byBhIGxpbmUgd2l0aCBhbiAnZXhjZXB0JyBzdGF0ZW1lbnQgb24gaXQgLQogICAgICAqIHRoZXkgZXhwZWN0IHRvIGhhdmUgYW4gZXhjZXB0aW9uIG9uIHRoZSB0b3Agb2YgdGhlIHN0YWNrLCB3aGljaAogICAgICAqIHdvbid0IGJlIHRydWUgaWYgeW91IGp1bXAgdG8gdGhlbS4gIFRoZXkgYWx3YXlzIHN0YXJ0IHdpdGggY29kZQpAQCAtMzQwLDYgKzM3MSwxMSBAQAogICAgICAgICAgICAgUHlPYmplY3QgKnYgPSAoKi0tZi0+Zl9zdGFja3RvcCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKGItPmJfdHlwZSA9PSBTRVRVUF9XSVRIKSB7CisgICAgICAgICAgICAvKiBQb3AgdGhlIGV4aXQgZnVuY3Rpb24uICovCisgICAgICAgICAgICBQeU9iamVjdCAqdiA9ICgqLS1mLT5mX3N0YWNrdG9wKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIEZpbmFsbHkgc2V0IHRoZSBuZXcgZl9saW5lbm8gYW5kIGZfbGFzdGkgYW5kIHJldHVybiBPSy4gKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvaW50b2JqZWN0LmMgYi9PYmplY3RzL2ludG9iamVjdC5jCmluZGV4IDBjNWVhNjUuLjliMjdjMzUgMTAwNjQ0Ci0tLSBhL09iamVjdHMvaW50b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9pbnRvYmplY3QuYwpAQCAtMTU1LDYgKzE1NSwxMSBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCisgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KG9wKSkgeworICAgICAgICAvKiBhdm9pZCBjcmVhdGluZyB0ZW1wb3JhcnkgaW50IG9iamVjdCAqLworICAgICAgICByZXR1cm4gUHlMb25nX0FzTG9uZyhvcCk7CisgICAgfQorCiAgICAgaW8gPSAoUHlJbnRPYmplY3QqKSAoKm5iLT5uYl9pbnQpIChvcCk7CiAgICAgaWYgKGlvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAtMTsKQEAgLTE2Myw4ICsxNjgsNiBAQAogICAgICAgICAgICAgLyogZ290IGEgbG9uZz8gPT4gcmV0cnkgaW50IGNvbnZlcnNpb24gKi8KICAgICAgICAgICAgIHZhbCA9IFB5TG9uZ19Bc0xvbmcoKFB5T2JqZWN0ICopaW8pOwogICAgICAgICAgICAgUHlfREVDUkVGKGlvKTsKLSAgICAgICAgICAgIGlmICgodmFsID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIHJldHVybiB2YWw7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQpAQCAtMzU1LDcgKzM1OCw3IEBACiAKICAgICBpZiAoKGJhc2UgIT0gMCAmJiBiYXNlIDwgMikgfHwgYmFzZSA+IDM2KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImludCgpIGJhc2UgbXVzdCBiZSA+PSAyIGFuZCA8PSAzNiIpOworICAgICAgICAgICAgICAgICAgICAgICAgImludCgpIGJhc2UgbXVzdCBiZSA+PSAyIGFuZCA8PSAzNiwgb3IgMCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTE0ODMsNyArMTQ4Niw3IEBACiAgICAgICAgIGZvciAoaSA9IDAsIHAgPSAmbGlzdC0+b2JqZWN0c1swXTsKICAgICAgICAgICAgICBpIDwgTl9JTlRPQkpFQ1RTOwogICAgICAgICAgICAgIGkrKywgcCsrKSB7Ci0gICAgICAgICAgICBpZiAoUHlJbnRfQ2hlY2tFeGFjdChwKSAmJiBwLT5vYl9yZWZjbnQgIT0gMCkKKyAgICAgICAgICAgIGlmIChQeUludF9DaGVja0V4YWN0KHApICYmIFB5X1JFRkNOVChwKSAhPSAwKQogICAgICAgICAgICAgICAgIHUrKzsKICAgICAgICAgfQogICAgICAgICBuZXh0ID0gbGlzdC0+bmV4dDsKQEAgLTE0OTQsNyArMTQ5Nyw3IEBACiAgICAgICAgICAgICAgICAgIGkgPCBOX0lOVE9CSkVDVFM7CiAgICAgICAgICAgICAgICAgIGkrKywgcCsrKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFQeUludF9DaGVja0V4YWN0KHApIHx8Ci0gICAgICAgICAgICAgICAgICAgIHAtPm9iX3JlZmNudCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X1JFRkNOVChwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUocCkgPSAoc3RydWN0IF90eXBlb2JqZWN0ICopCiAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlX2xpc3Q7CiAgICAgICAgICAgICAgICAgICAgIGZyZWVfbGlzdCA9IHA7CkBAIC0xNTU3LDE0ICsxNTYwLDE0IEBACiAgICAgICAgICAgICBmb3IgKGkgPSAwLCBwID0gJmxpc3QtPm9iamVjdHNbMF07CiAgICAgICAgICAgICAgICAgIGkgPCBOX0lOVE9CSkVDVFM7CiAgICAgICAgICAgICAgICAgIGkrKywgcCsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFB5SW50X0NoZWNrRXhhY3QocCkgJiYgcC0+b2JfcmVmY250ICE9IDApCisgICAgICAgICAgICAgICAgaWYgKFB5SW50X0NoZWNrRXhhY3QocCkgJiYgUHlfUkVGQ05UKHApICE9IDApCiAgICAgICAgICAgICAgICAgICAgIC8qIFhYWCh0d291dGVycykgY2FzdCByZWZjb3VudCB0bwogICAgICAgICAgICAgICAgICAgICAgICBsb25nIHVudGlsICV6ZCBpcyB1bml2ZXJzYWxseQogICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAogICAgICAgICAgICAgICAgICIjICAgPGludCBhdCAlcCwgcmVmY250PSVsZCwgdmFsPSVsZD5cbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAsIChsb25nKXAtPm9iX3JlZmNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCwgKGxvbmcpUHlfUkVGQ05UKHApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLT5vYl9pdmFsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9saXN0b2JqZWN0LmMgYi9PYmplY3RzL2xpc3RvYmplY3QuYwppbmRleCA4ZWU4NmM2Li4yNGVmZjc2IDEwMDY0NAotLS0gYS9PYmplY3RzL2xpc3RvYmplY3QuYworKysgYi9PYmplY3RzL2xpc3RvYmplY3QuYwpAQCAtMzgzLDEwICszODMsNyBAQAogICAgICAgIHNvIG11c3QgcmVmZXRjaCB0aGUgbGlzdCBzaXplIG9uIGVhY2ggaXRlcmF0aW9uLiAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHYpOyArK2kpIHsKICAgICAgICAgaW50IHN0YXR1czsKLSAgICAgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGdldHRpbmcgdGhlIHJlcHIgb2YgYSBsaXN0IikpCi0gICAgICAgICAgICBnb3RvIERvbmU7CiAgICAgICAgIHMgPSBQeU9iamVjdF9SZXByKHYtPm9iX2l0ZW1baV0pOwotICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICAgICAgaWYgKHMgPT0gTlVMTCkKICAgICAgICAgICAgIGdvdG8gRG9uZTsKICAgICAgICAgc3RhdHVzID0gUHlMaXN0X0FwcGVuZChwaWVjZXMsIHMpOwpAQCAtMjI4NCw4ICsyMjgxLDggQEAKICAgICBzdGF0aWMgUHlPYmplY3QgKmVycl9mb3JtYXQgPSBOVUxMOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE8mTyY6aW5kZXgiLCAmdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RXZhbF9TbGljZUluZGV4LCAmc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUV2YWxfU2xpY2VJbmRleCwgJnN0b3ApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlFdmFsX1NsaWNlSW5kZXhOb3ROb25lLCAmc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUV2YWxfU2xpY2VJbmRleE5vdE5vbmUsICZzdG9wKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKHN0YXJ0IDwgMCkgewogICAgICAgICBzdGFydCArPSBQeV9TSVpFKHNlbGYpOwpAQCAtMjU2MiwxMCArMjU1OSwxMSBAQAogICAgICAgICBQeU9iamVjdCogaXQ7CiAgICAgICAgIFB5T2JqZWN0ICoqc3JjLCAqKmRlc3Q7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0KilpdGVtLCBQeV9TSVpFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgeworICAgICAgICBpZiAoX1B5U2xpY2VfVW5wYWNrKGl0ZW0sICZzdGFydCwgJnN0b3AsICZzdGVwKSA8IDApIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CisgICAgICAgIHNsaWNlbGVuZ3RoID0gX1B5U2xpY2VfQWRqdXN0SW5kaWNlcyhQeV9TSVpFKHNlbGYpLCAmc3RhcnQsICZzdG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwKTsKIAogICAgICAgICBpZiAoc2xpY2VsZW5ndGggPD0gMCkgewogICAgICAgICAgICAgcmV0dXJuIFB5TGlzdF9OZXcoMCk7CkBAIC0yNjExLDEwICsyNjA5LDExIEBACiAgICAgZWxzZSBpZiAoUHlTbGljZV9DaGVjayhpdGVtKSkgewogICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKIAotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoKFB5U2xpY2VPYmplY3QqKWl0ZW0sIFB5X1NJWkUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbmd0aCkgPCAwKSB7CisgICAgICAgIGlmIChfUHlTbGljZV9VbnBhY2soaXRlbSwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CisgICAgICAgIHNsaWNlbGVuZ3RoID0gX1B5U2xpY2VfQWRqdXN0SW5kaWNlcyhQeV9TSVpFKHNlbGYpLCAmc3RhcnQsICZzdG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGVwKTsKIAogICAgICAgICBpZiAoc3RlcCA9PSAxKQogICAgICAgICAgICAgcmV0dXJuIGxpc3RfYXNzX3NsaWNlKHNlbGYsIHN0YXJ0LCBzdG9wLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9PYmplY3RzL2xvbmdvYmplY3QuYyBiL09iamVjdHMvbG9uZ29iamVjdC5jCmluZGV4IDc2OGE5MmEuLmY0MGFkN2EgMTAwNjQ0Ci0tLSBhL09iamVjdHMvbG9uZ29iamVjdC5jCisrKyBiL09iamVjdHMvbG9uZ29iamVjdC5jCkBAIC04MywxMiArODMsMTIgQEAKICAgICBQeV9zc2l6ZV90IGk7CiAKICAgICBhc3NlcnQoc3JjICE9IE5VTEwpOwotICAgIGkgPSBzcmMtPm9iX3NpemU7CisgICAgaSA9IFB5X1NJWkUoc3JjKTsKICAgICBpZiAoaSA8IDApCiAgICAgICAgIGkgPSAtKGkpOwogICAgIHJlc3VsdCA9IF9QeUxvbmdfTmV3KGkpOwogICAgIGlmIChyZXN1bHQgIT0gTlVMTCkgewotICAgICAgICByZXN1bHQtPm9iX3NpemUgPSBzcmMtPm9iX3NpemU7CisgICAgICAgIFB5X1NJWkUocmVzdWx0KSA9IFB5X1NJWkUoc3JjKTsKICAgICAgICAgd2hpbGUgKC0taSA+PSAwKQogICAgICAgICAgICAgcmVzdWx0LT5vYl9kaWdpdFtpXSA9IHNyYy0+b2JfZGlnaXRbaV07CiAgICAgfQpAQCAtMTI5LDcgKzEyOSw3IEBACiAgICAgdiA9IF9QeUxvbmdfTmV3KG5kaWdpdHMpOwogICAgIGlmICh2ICE9IE5VTEwpIHsKICAgICAgICAgZGlnaXQgKnAgPSB2LT5vYl9kaWdpdDsKLSAgICAgICAgdi0+b2Jfc2l6ZSA9IG5lZ2F0aXZlID8gLW5kaWdpdHMgOiBuZGlnaXRzOworICAgICAgICBQeV9TSVpFKHYpID0gbmVnYXRpdmUgPyAtbmRpZ2l0cyA6IG5kaWdpdHM7CiAgICAgICAgIHQgPSBhYnNfaXZhbDsKICAgICAgICAgd2hpbGUgKHQpIHsKICAgICAgICAgICAgICpwKysgPSAoZGlnaXQpKHQgJiBQeUxvbmdfTUFTSyk7CkBAIC0zNzIsNyArMzcyLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICB2ID0gKFB5TG9uZ09iamVjdCAqKXZ2OwotICAgIGkgPSB2LT5vYl9zaXplOworICAgIGkgPSBQeV9TSVpFKHYpOwogICAgIHNpZ24gPSAxOwogICAgIHggPSAwOwogICAgIGlmIChpIDwgMCkgewpAQCAtNDY0LDcgKzQ2NCw3IEBACiAgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZykgLTE7CiAgICAgfQogICAgIHYgPSAoUHlMb25nT2JqZWN0ICopdnY7Ci0gICAgaSA9IHYtPm9iX3NpemU7CisgICAgaSA9IFB5X1NJWkUodik7CiAgICAgc2lnbiA9IDE7CiAgICAgeCA9IDA7CiAgICAgaWYgKGkgPCAwKSB7CkBAIC05NTEsNyArOTUxLDcgQEAKICAgICAgICAgUHlPYmplY3QgKmlvOwogICAgICAgICBpZiAoUHlJbnRfQ2hlY2sodnYpKQogICAgICAgICAgICAgcmV0dXJuIChQWV9MT05HX0xPTkcpUHlJbnRfQXNMb25nKHZ2KTsKLSAgICAgICAgaWYgKChuYiA9IHZ2LT5vYl90eXBlLT50cF9hc19udW1iZXIpID09IE5VTEwgfHwKKyAgICAgICAgaWYgKChuYiA9IFB5X1RZUEUodnYpLT50cF9hc19udW1iZXIpID09IE5VTEwgfHwKICAgICAgICAgICAgIG5iLT5uYl9pbnQgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKTsKICAgICAgICAgICAgIHJldHVybiAtMTsKQEAgLTEwMjUsNyArMTAyNSw3IEBACiAgICAgICAgIHJldHVybiAodW5zaWduZWQgbG9uZykgLTE7CiAgICAgfQogICAgIHYgPSAoUHlMb25nT2JqZWN0ICopdnY7Ci0gICAgaSA9IHYtPm9iX3NpemU7CisgICAgaSA9IFB5X1NJWkUodik7CiAgICAgc2lnbiA9IDE7CiAgICAgeCA9IDA7CiAgICAgaWYgKGkgPCAwKSB7CkBAIC0xMDY4LDcgKzEwNjgsNyBAQAogCiAgICAgaWYgKCFQeUxvbmdfQ2hlY2sodnYpKSB7CiAgICAgICAgIFB5TnVtYmVyTWV0aG9kcyAqbmI7Ci0gICAgICAgIG5iID0gdnYtPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKKyAgICAgICAgbmIgPSBQeV9UWVBFKHZ2KS0+dHBfYXNfbnVtYmVyOwogICAgICAgICBpZiAobmIgPT0gTlVMTCB8fCBuYi0+bmJfaW50ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFuIGludGVnZXIgaXMgcmVxdWlyZWQiKTsKQEAgLTE0OTUsMTAgKzE0OTUsMTAgQEAKICAgICAqcCA9ICdcMCc7CiAgICAgaWYgKGFkZEwpCiAgICAgICAgICotLXAgPSAnTCc7Ci0gICAgaWYgKGEtPm9iX3NpemUgPCAwKQorICAgIGlmIChQeV9TSVpFKGEpIDwgMCkKICAgICAgICAgc2lnbiA9ICctJzsKIAotICAgIGlmIChhLT5vYl9zaXplID09IDApIHsKKyAgICBpZiAoUHlfU0laRShhKSA9PSAwKSB7CiAgICAgICAgICotLXAgPSAnMCc7CiAgICAgfQogICAgIGVsc2UgaWYgKChiYXNlICYgKGJhc2UgLSAxKSkgPT0gMCkgewpAQCAtMTcyMiw3ICsxNzIyLDcgQEAKIAogICAgIGlmICgoYmFzZSAhPSAwICYmIGJhc2UgPCAyKSB8fCBiYXNlID4gMzYpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibG9uZygpIGFyZyAyIG11c3QgYmUgPj0gMiBhbmQgPD0gMzYiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJsb25nKCkgYmFzZSBtdXN0IGJlID49IDIgYW5kIDw9IDM2LCBvciAwIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICB3aGlsZSAoKnN0ciAhPSAnXDAnICYmIGlzc3BhY2UoUHlfQ0hBUk1BU0soKnN0cikpKQpAQCAtMjA2MywxMCArMjA2MywxMCBAQAogICAgICAgIFRoZSBxdW90aWVudCB6IGhhcyB0aGUgc2lnbiBvZiBhKmI7CiAgICAgICAgdGhlIHJlbWFpbmRlciByIGhhcyB0aGUgc2lnbiBvZiBhLAogICAgICAgIHNvIGEgPSBiKnogKyByLiAqLwotICAgIGlmICgoYS0+b2Jfc2l6ZSA8IDApICE9IChiLT5vYl9zaXplIDwgMCkpCi0gICAgICAgIHotPm9iX3NpemUgPSAtKHotPm9iX3NpemUpOwotICAgIGlmIChhLT5vYl9zaXplIDwgMCAmJiAoKnByZW0pLT5vYl9zaXplICE9IDApCi0gICAgICAgICgqcHJlbSktPm9iX3NpemUgPSAtKCgqcHJlbSktPm9iX3NpemUpOworICAgIGlmICgoUHlfU0laRShhKSA8IDApICE9IChQeV9TSVpFKGIpIDwgMCkpCisgICAgICAgIFB5X1NJWkUoeikgPSAtKFB5X1NJWkUoeikpOworICAgIGlmIChQeV9TSVpFKGEpIDwgMCAmJiBQeV9TSVpFKCpwcmVtKSAhPSAwKQorICAgICAgICBQeV9TSVpFKCpwcmVtKSA9IC1QeV9TSVpFKCpwcmVtKTsKICAgICAqcGRpdiA9IHo7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMzk4LDcgKzIzOTgsNyBAQAogICAgIC8qIFRoaXMgaXMgZGVzaWduZWQgc28gdGhhdCBQeXRob24gaW50cyBhbmQgbG9uZ3Mgd2l0aCB0aGUKICAgICAgICBzYW1lIHZhbHVlIGhhc2ggdG8gdGhlIHNhbWUgdmFsdWUsIG90aGVyd2lzZSBjb21wYXJpc29ucwogICAgICAgIG9mIG1hcHBpbmcga2V5cyB3aWxsIHR1cm4gb3V0IHdlaXJkICovCi0gICAgaSA9IHYtPm9iX3NpemU7CisgICAgaSA9IFB5X1NJWkUodik7CiAgICAgc2lnbiA9IDE7CiAgICAgeCA9IDA7CiAgICAgaWYgKGkgPCAwKSB7CkBAIC0yNTEwLDcgKzI1MTAsNyBAQAogICAgIH0KICAgICBhc3NlcnQoYm9ycm93ID09IDApOwogICAgIGlmIChzaWduIDwgMCkKLSAgICAgICAgei0+b2Jfc2l6ZSA9IC0oei0+b2Jfc2l6ZSk7CisgICAgICAgIFB5X1NJWkUoeikgPSAtKFB5X1NJWkUoeikpOwogICAgIHJldHVybiBsb25nX25vcm1hbGl6ZSh6KTsKIH0KIApAQCAtMjUyMSwxNyArMjUyMSwxNyBAQAogCiAgICAgQ09OVkVSVF9CSU5PUCgoUHlPYmplY3QgKil2LCAoUHlPYmplY3QgKil3LCAmYSwgJmIpOwogCi0gICAgaWYgKGEtPm9iX3NpemUgPCAwKSB7Ci0gICAgICAgIGlmIChiLT5vYl9zaXplIDwgMCkgeworICAgIGlmIChQeV9TSVpFKGEpIDwgMCkgeworICAgICAgICBpZiAoUHlfU0laRShiKSA8IDApIHsKICAgICAgICAgICAgIHogPSB4X2FkZChhLCBiKTsKLSAgICAgICAgICAgIGlmICh6ICE9IE5VTEwgJiYgei0+b2Jfc2l6ZSAhPSAwKQotICAgICAgICAgICAgICAgIHotPm9iX3NpemUgPSAtKHotPm9iX3NpemUpOworICAgICAgICAgICAgaWYgKHogIT0gTlVMTCAmJiBQeV9TSVpFKHopICE9IDApCisgICAgICAgICAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh6KSk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZQogICAgICAgICAgICAgeiA9IHhfc3ViKGIsIGEpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGItPm9iX3NpemUgPCAwKQorICAgICAgICBpZiAoUHlfU0laRShiKSA8IDApCiAgICAgICAgICAgICB6ID0geF9zdWIoYSwgYik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHogPSB4X2FkZChhLCBiKTsKQEAgLTI1NDgsMTYgKzI1NDgsMTYgQEAKIAogICAgIENPTlZFUlRfQklOT1AoKFB5T2JqZWN0ICopdiwgKFB5T2JqZWN0ICopdywgJmEsICZiKTsKIAotICAgIGlmIChhLT5vYl9zaXplIDwgMCkgewotICAgICAgICBpZiAoYi0+b2Jfc2l6ZSA8IDApCisgICAgaWYgKFB5X1NJWkUoYSkgPCAwKSB7CisgICAgICAgIGlmIChQeV9TSVpFKGIpIDwgMCkKICAgICAgICAgICAgIHogPSB4X3N1YihhLCBiKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgeiA9IHhfYWRkKGEsIGIpOwotICAgICAgICBpZiAoeiAhPSBOVUxMICYmIHotPm9iX3NpemUgIT0gMCkKLSAgICAgICAgICAgIHotPm9iX3NpemUgPSAtKHotPm9iX3NpemUpOworICAgICAgICBpZiAoeiAhPSBOVUxMICYmIFB5X1NJWkUoeikgIT0gMCkKKyAgICAgICAgICAgIFB5X1NJWkUoeikgPSAtKFB5X1NJWkUoeikpOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKGItPm9iX3NpemUgPCAwKQorICAgICAgICBpZiAoUHlfU0laRShiKSA8IDApCiAgICAgICAgICAgICB6ID0geF9hZGQoYSwgYik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHogPSB4X3N1YihhLCBiKTsKQEAgLTI3NDIsNyArMjc0Miw3IEBACiAgICAgLyogSWYgYSBpcyBzbWFsbCBjb21wYXJlZCB0byBiLCBzcGxpdHRpbmcgb24gYiBnaXZlcyBhIGRlZ2VuZXJhdGUKICAgICAgKiBjYXNlIHdpdGggYWg9PTAsIGFuZCBLYXJhdHN1YmEgbWF5IGJlIChldmVuIG11Y2gpIGxlc3MgZWZmaWNpZW50CiAgICAgICogdGhhbiAiZ3JhZGUgc2Nob29sIiB0aGVuLiAgSG93ZXZlciwgd2UgY2FuIHN0aWxsIHdpbiwgYnkgdmlld2luZwotICAgICAqIGIgYXMgYSBzdHJpbmcgb2YgImJpZyBkaWdpdHMiLCBlYWNoIG9mIHdpZHRoIGEtPm9iX3NpemUuICBUaGF0CisgICAgICogYiBhcyBhIHN0cmluZyBvZiAiYmlnIGRpZ2l0cyIsIGVhY2ggb2Ygd2lkdGggUHlfU0laRShhKS4gIFRoYXQKICAgICAgKiBsZWFkcyB0byBhIHNlcXVlbmNlIG9mIGJhbGFuY2VkIGNhbGxzIHRvIGtfbXVsLgogICAgICAqLwogICAgIGlmICgyICogYXNpemUgPD0gYnNpemUpCkBAIC0yOTEwLDcgKzI5MTAsNyBAQAogCiAvKiBiIGhhcyBhdCBsZWFzdCB0d2ljZSB0aGUgZGlnaXRzIG9mIGEsIGFuZCBhIGlzIGJpZyBlbm91Z2ggdGhhdCBLYXJhdHN1YmEKICAqIHdvdWxkIHBheSBvZmYgKmlmKiB0aGUgaW5wdXRzIGhhZCBiYWxhbmNlZCBzaXplcy4gIFZpZXcgYiBhcyBhIHNlcXVlbmNlCi0gKiBvZiBzbGljZXMsIGVhY2ggd2l0aCBhLT5vYl9zaXplIGRpZ2l0cywgYW5kIG11bHRpcGx5IHRoZSBzbGljZXMgYnkgYSwKKyAqIG9mIHNsaWNlcywgZWFjaCB3aXRoIFB5X1NJWkUoYSkgZGlnaXRzLCBhbmQgbXVsdGlwbHkgdGhlIHNsaWNlcyBieSBhLAogICogb25lIGF0IGEgdGltZS4gIFRoaXMgZ2l2ZXMga19tdWwgYmFsYW5jZWQgaW5wdXRzIHRvIHdvcmsgd2l0aCwgYW5kIGlzCiAgKiBhbHNvIGNhY2hlLWZyaWVuZGx5ICh3ZSBjb21wdXRlIG9uZSBkb3VibGUtd2lkdGggc2xpY2Ugb2YgdGhlIHJlc3VsdAogICogYXQgYSB0aW1lLCB0aGVuIG1vdmUgb24sIG5ldmVyIGJhY2t0cmFja2luZyBleGNlcHQgZm9yIHRoZSBoZWxwZnVsCkBAIC0yOTgyLDggKzI5ODIsOCBAQAogCiAgICAgeiA9IGtfbXVsKGEsIGIpOwogICAgIC8qIE5lZ2F0ZSBpZiBleGFjdGx5IG9uZSBvZiB0aGUgaW5wdXRzIGlzIG5lZ2F0aXZlLiAqLwotICAgIGlmICgoKGEtPm9iX3NpemUgXiBiLT5vYl9zaXplKSA8IDApICYmIHopCi0gICAgICAgIHotPm9iX3NpemUgPSAtKHotPm9iX3NpemUpOworICAgIGlmICgoKFB5X1NJWkUoYSkgXiBQeV9TSVpFKGIpKSA8IDApICYmIHopCisgICAgICAgIFB5X1NJWkUoeikgPSAtKFB5X1NJWkUoeikpOwogICAgIFB5X0RFQ1JFRihhKTsKICAgICBQeV9ERUNSRUYoYik7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXo7CkBAIC0zNDY0LDcgKzM0NjQsNyBAQAogICAgICAgICAgICAgUHlfREVDUkVGKGMpOwogICAgICAgICAgICAgYyA9IHRlbXA7CiAgICAgICAgICAgICB0ZW1wID0gTlVMTDsKLSAgICAgICAgICAgIGMtPm9iX3NpemUgPSAtIGMtPm9iX3NpemU7CisgICAgICAgICAgICBQeV9TSVpFKGMpID0gLSBQeV9TSVpFKGMpOwogICAgICAgICB9CiAKICAgICAgICAgLyogaWYgbW9kdWx1cyA9PSAxOgpAQCAtMzYwOCwyMSArMzYwOCwyMSBAQAogbG9uZ19uZWcoUHlMb25nT2JqZWN0ICp2KQogewogICAgIFB5TG9uZ09iamVjdCAqejsKLSAgICBpZiAodi0+b2Jfc2l6ZSA9PSAwICYmIFB5TG9uZ19DaGVja0V4YWN0KHYpKSB7CisgICAgaWYgKFB5X1NJWkUodikgPT0gMCAmJiBQeUxvbmdfQ2hlY2tFeGFjdCh2KSkgewogICAgICAgICAvKiAtMCA9PSAwICovCiAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgcmV0dXJuIChQeU9iamVjdCAqKSB2OwogICAgIH0KICAgICB6ID0gKFB5TG9uZ09iamVjdCAqKV9QeUxvbmdfQ29weSh2KTsKICAgICBpZiAoeiAhPSBOVUxMKQotICAgICAgICB6LT5vYl9zaXplID0gLSh2LT5vYl9zaXplKTsKKyAgICAgICAgUHlfU0laRSh6KSA9IC0oUHlfU0laRSh2KSk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKXo7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBsb25nX2FicyhQeUxvbmdPYmplY3QgKnYpCiB7Ci0gICAgaWYgKHYtPm9iX3NpemUgPCAwKQorICAgIGlmIChQeV9TSVpFKHYpIDwgMCkKICAgICAgICAgcmV0dXJuIGxvbmdfbmVnKHYpOwogICAgIGVsc2UKICAgICAgICAgcmV0dXJuIGxvbmdfbG9uZygoUHlPYmplY3QgKil2KTsKQEAgLTM3MjUsMTUgKzM3MjUsMTUgQEAKICAgICB3b3Jkc2hpZnQgPSBzaGlmdGJ5IC8gUHlMb25nX1NISUZUOwogICAgIHJlbXNoaWZ0ICA9IHNoaWZ0YnkgLSB3b3Jkc2hpZnQgKiBQeUxvbmdfU0hJRlQ7CiAKLSAgICBvbGRzaXplID0gQUJTKGEtPm9iX3NpemUpOworICAgIG9sZHNpemUgPSBBQlMoUHlfU0laRShhKSk7CiAgICAgbmV3c2l6ZSA9IG9sZHNpemUgKyB3b3Jkc2hpZnQ7CiAgICAgaWYgKHJlbXNoaWZ0KQogICAgICAgICArK25ld3NpemU7CiAgICAgeiA9IF9QeUxvbmdfTmV3KG5ld3NpemUpOwogICAgIGlmICh6ID09IE5VTEwpCiAgICAgICAgIGdvdG8gb3V0OwotICAgIGlmIChhLT5vYl9zaXplIDwgMCkKLSAgICAgICAgei0+b2Jfc2l6ZSA9IC0oei0+b2Jfc2l6ZSk7CisgICAgaWYgKFB5X1NJWkUoYSkgPCAwKQorICAgICAgICBQeV9TSVpFKHopID0gLShQeV9TSVpFKHopKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgd29yZHNoaWZ0OyBpKyspCiAgICAgICAgIHotPm9iX2RpZ2l0W2ldID0gMDsKICAgICBhY2N1bSA9IDA7CkBAIC00MTQyLDcgKzQxNDIsNyBAQAogewogICAgIFB5X3NzaXplX3QgcmVzOwogCi0gICAgcmVzID0gdi0+b2JfdHlwZS0+dHBfYmFzaWNzaXplICsgQUJTKFB5X1NJWkUodikpKnNpemVvZihkaWdpdCk7CisgICAgcmVzID0gUHlfVFlQRSh2KS0+dHBfYmFzaWNzaXplICsgQUJTKFB5X1NJWkUodikpKnNpemVvZihkaWdpdCk7CiAgICAgcmV0dXJuIFB5SW50X0Zyb21Tc2l6ZV90KHJlcyk7CiB9CiAKQEAgLTQzMTQsOCArNDMxNCw3IEBACiB9OwogCiBQeVR5cGVPYmplY3QgUHlMb25nX1R5cGUgPSB7Ci0gICAgUHlPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSkKLSAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9iX3NpemUgKi8KKyAgICBQeVZhck9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlLCAwKQogICAgICJsb25nIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIG9mZnNldG9mKFB5TG9uZ09iamVjdCwgb2JfZGlnaXQpLCAgICAgICAgICAgLyogdHBfYmFzaWNzaXplICovCiAgICAgc2l6ZW9mKGRpZ2l0KSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pdGVtc2l6ZSAqLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYyBiL09iamVjdHMvbWVtb3J5b2JqZWN0LmMKaW5kZXggMmJhYzI2Ni4uNmZjZDk5NSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9tZW1vcnlvYmplY3QuYworKysgYi9PYmplY3RzL21lbW9yeW9iamVjdC5jCkBAIC01ODQsMTAgKzU4NCwxMSBAQAogICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSkgewogICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBzdG9wLCBzdGVwLCBzbGljZWxlbmd0aDsKIAotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoKFB5U2xpY2VPYmplY3QqKWtleSwgZ2V0X3NoYXBlMCh2aWV3KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJnN0b3AsICZzdGVwLCAmc2xpY2VsZW5ndGgpIDwgMCkgeworICAgICAgICBpZiAoX1B5U2xpY2VfVW5wYWNrKGtleSwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgc2xpY2VsZW5ndGggPSBfUHlTbGljZV9BZGp1c3RJbmRpY2VzKGdldF9zaGFwZTAodmlldyksICZzdGFydCwgJnN0b3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZXApOwogICAgIAogICAgICAgICBpZiAoc3RlcCA9PSAxICYmIHZpZXctPm5kaW0gPT0gMSkgewogICAgICAgICAgICAgUHlfYnVmZmVyIG5ld3ZpZXc7CkBAIC02NjIsMTAgKzY2MywxMCBAQAogICAgIGVsc2UgaWYgKFB5U2xpY2VfQ2hlY2soa2V5KSkgewogICAgICAgICBQeV9zc2l6ZV90IHN0b3AsIHN0ZXA7CiAKLSAgICAgICAgaWYgKFB5U2xpY2VfR2V0SW5kaWNlc0V4KChQeVNsaWNlT2JqZWN0KilrZXksIGdldF9zaGFwZTAodmlldyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZsZW4pIDwgMCkgeworICAgICAgICBpZiAoX1B5U2xpY2VfVW5wYWNrKGtleSwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CisgICAgICAgIGxlbiA9IF9QeVNsaWNlX0FkanVzdEluZGljZXMoZ2V0X3NoYXBlMCh2aWV3KSwgJnN0YXJ0LCAmc3RvcCwgc3RlcCk7CiAgICAgICAgIGlmIChzdGVwICE9IDEpIHsKICAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CmRpZmYgLS1naXQgYS9PYmplY3RzL21vZHVsZW9iamVjdC5jIGIvT2JqZWN0cy9tb2R1bGVvYmplY3QuYwppbmRleCBmMmZlZDMwLi5mZDQ4ZmYxIDEwMDY0NAotLS0gYS9PYmplY3RzL21vZHVsZW9iamVjdC5jCisrKyBiL09iamVjdHMvbW9kdWxlb2JqZWN0LmMKQEAgLTIyMSw3ICsyMjEsNyBAQAogUHlUeXBlT2JqZWN0IFB5TW9kdWxlX1R5cGUgPSB7CiAgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAibW9kdWxlIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX25hbWUgKi8KLSAgICBzaXplb2YoUHlNb2R1bGVPYmplY3QpLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NpemUgKi8KKyAgICBzaXplb2YoUHlNb2R1bGVPYmplY3QpLCAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KICAgICAoZGVzdHJ1Y3Rvciltb2R1bGVfZGVhbGxvYywgICAgICAgICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCmRpZmYgLS1naXQgYS9PYmplY3RzL29iamVjdC5jIGIvT2JqZWN0cy9vYmplY3QuYwppbmRleCA3YTI4MjE4Li42NTM2NmIwIDEwMDY0NAotLS0gYS9PYmplY3RzL29iamVjdC5jCisrKyBiL09iamVjdHMvb2JqZWN0LmMKQEAgLTM3OCw3ICszNzgsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRSh2KS0+dHBfbmFtZSwgdik7CiAgICAgZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXM7CisgICAgICAgIC8qIEl0IGlzIHBvc3NpYmxlIGZvciBhIHR5cGUgdG8gaGF2ZSBhIHRwX3JlcHIgcmVwcmVzZW50YXRpb24gdGhhdAorICAgICAgICAgICBsb29wcyBpbmZpbml0ZWx5LiAqLworICAgICAgICBpZiAoUHlfRW50ZXJSZWN1cnNpdmVDYWxsKCIgd2hpbGUgZ2V0dGluZyB0aGUgcmVwciBvZiBhbiBvYmplY3QiKSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICByZXMgPSAoKlB5X1RZUEUodiktPnRwX3JlcHIpKHYpOworICAgICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAjaWZkZWYgUHlfVVNJTkdfVU5JQ09ERQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9vYm1hbGxvYy5jIGIvT2JqZWN0cy9vYm1hbGxvYy5jCmluZGV4IDFiYjE4NjYuLjlhZGNmZjcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvb2JtYWxsb2MuYworKysgYi9PYmplY3RzL29ibWFsbG9jLmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogICoKICAqIEZvciBzbWFsbCByZXF1ZXN0cywgdGhlIGFsbG9jYXRvciBzdWItYWxsb2NhdGVzIDxCaWc+IGJsb2NrcyBvZiBtZW1vcnkuCiAgKiBSZXF1ZXN0cyBncmVhdGVyIHRoYW4gU01BTExfUkVRVUVTVF9USFJFU0hPTEQgYnl0ZXMgYXJlIHJvdXRlZCB0byB0aGUKLSAqIHN5c3RlbSdzIGFsbG9jYXRvci4gCisgKiBzeXN0ZW0ncyBhbGxvY2F0b3IuCiAgKgogICogU21hbGwgcmVxdWVzdHMgYXJlIGdyb3VwZWQgaW4gc2l6ZSBjbGFzc2VzIHNwYWNlZCA4IGJ5dGVzIGFwYXJ0LCBkdWUKICAqIHRvIHRoZSByZXF1aXJlZCB2YWxpZCBhbGlnbm1lbnQgb2YgdGhlIHJldHVybmVkIGFkZHJlc3MuIFJlcXVlc3RzIG9mCkBAIC0xMzQsNyArMTM0LDcgQEAKICAqICAgICAgIDY1LTcyICAgICAgICAgICAgICAgICAgIDcyICAgICAgICAgICAgICAgICAgICAgICA4CiAgKiAgICAgICAgLi4uICAgICAgICAgICAgICAgICAgIC4uLiAgICAgICAgICAgICAgICAgICAgIC4uLgogICogICAgICA0OTctNTA0ICAgICAgICAgICAgICAgICA1MDQgICAgICAgICAgICAgICAgICAgICAgNjIKLSAqICAgICAgNTA1LTUxMiAgICAgICAgICAgICAgICAgNTEyICAgICAgICAgICAgICAgICAgICAgIDYzIAorICogICAgICA1MDUtNTEyICAgICAgICAgICAgICAgICA1MTIgICAgICAgICAgICAgICAgICAgICAgNjMKICAqCiAgKiAgICAgIDAsIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEICsgMSBhbmQgdXA6IHJvdXRlZCB0byB0aGUgdW5kZXJseWluZwogICogICAgICBhbGxvY2F0b3IuCkBAIC0xNzYsNyArMTc2LDcgQEAKICAqIEFsdGhvdWdoIG5vdCByZXF1aXJlZCwgZm9yIGJldHRlciBwZXJmb3JtYW5jZSBhbmQgc3BhY2UgZWZmaWNpZW5jeSwKICAqIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgU01BTExfUkVRVUVTVF9USFJFU0hPTEQgaXMgc2V0IHRvIGEgcG93ZXIgb2YgMi4KICAqLwotI2RlZmluZSBTTUFMTF9SRVFVRVNUX1RIUkVTSE9MRCA1MTIgCisjZGVmaW5lIFNNQUxMX1JFUVVFU1RfVEhSRVNIT0xEIDUxMgogI2RlZmluZSBOQl9TTUFMTF9TSVpFX0NMQVNTRVMgICAoU01BTExfUkVRVUVTVF9USFJFU0hPTEQgLyBBTElHTk1FTlQpCiAKIC8qCkBAIC0yMDksMTIgKzIwOSwxMiBAQAogICogdXN1YWxseSBhbiBhZGRyZXNzIHJhbmdlIHJlc2VydmF0aW9uIGZvciA8QmlnPiBieXRlcywgdW5sZXNzIGFsbCBwYWdlcyB3aXRoaW4KICAqIHRoaXMgc3BhY2UgYXJlIHJlZmVyZW5jZWQgc3Vic2VxdWVudGx5LiBTbyBtYWxsb2MnaW5nIGJpZyBibG9ja3MgYW5kIG5vdAogICogdXNpbmcgdGhlbSBkb2VzIG5vdCBtZWFuICJ3YXN0aW5nIG1lbW9yeSIuIEl0J3MgYW4gYWRkcmVzc2FibGUgcmFuZ2UKLSAqIHdhc3RhZ2UuLi4gCisgKiB3YXN0YWdlLi4uCiAgKgogICogQXJlbmFzIGFyZSBhbGxvY2F0ZWQgd2l0aCBtbWFwKCkgb24gc3lzdGVtcyBzdXBwb3J0aW5nIGFub255bW91cyBtZW1vcnkKICAqIG1hcHBpbmdzIHRvIHJlZHVjZSBoZWFwIGZyYWdtZW50YXRpb24uCiAgKi8KLSNkZWZpbmUgQVJFTkFfU0laRSAgICAgICAgICAgICAgKDI1NiA8PCAxMCkgICAgIC8qIDI1NktCICovCisjZGVmaW5lIEFSRU5BX1NJWkUgICAgICAgICAgICAgICgyNTYgPDwgMTApICAgICAvKiAyNTZLaUIgKi8KIAogI2lmZGVmIFdJVEhfTUVNT1JZX0xJTUlUUwogI2RlZmluZSBNQVhfQVJFTkFTICAgICAgICAgICAgICAoU01BTExfTUVNT1JZX0xJTUlUIC8gQVJFTkFfU0laRSkKQEAgLTYxOSw3ICs2MTksNyBAQAogI2Vsc2UKICAgICBhZGRyZXNzID0gbWFsbG9jKEFSRU5BX1NJWkUpOwogICAgIGVyciA9IChhZGRyZXNzID09IDApOwotI2VuZGlmICAgIAorI2VuZGlmCiAgICAgaWYgKGVycikgewogICAgICAgICAvKiBUaGUgYWxsb2NhdGlvbiBmYWlsZWQ6IHJldHVybiBOVUxMIGFmdGVyIHB1dHRpbmcgdGhlCiAgICAgICAgICAqIGFyZW5hb2JqIGJhY2suCkBAIC0xNTUyLDcgKzE1NTIsNyBAQAogICAgICAgICAvKiBvdmVyZmxvdzogIGNhbid0IHJlcHJlc2VudCB0b3RhbCBhcyBhIHNpemVfdCAqLwogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChuYnl0ZXMgPCBvcmlnaW5hbF9uYnl0ZXMpIHsKKyAgICBpZiAobmJ5dGVzIDw9IG9yaWdpbmFsX25ieXRlcykgewogICAgICAgICAvKiBzaHJpbmtpbmc6ICBtYXJrIG9sZCBleHRyYSBtZW1vcnkgZGVhZCAqLwogICAgICAgICBtZW1zZXQocSArIG5ieXRlcywgREVBREJZVEUsIG9yaWdpbmFsX25ieXRlcyAtIG5ieXRlcyArIDIqU1NUKTsKICAgICB9CkBAIC0xNTYyLDggKzE1NjIsMTQgQEAKICAgICAgKiBidXQgd2UgbGl2ZSB3aXRoIHRoYXQuCiAgICAgICovCiAgICAgcSA9ICh1Y2hhciAqKVB5T2JqZWN0X1JlYWxsb2MocSAtIDIqU1NULCB0b3RhbCk7Ci0gICAgaWYgKHEgPT0gTlVMTCkKKyAgICBpZiAocSA9PSBOVUxMKSB7CisgICAgICAgIGlmIChuYnl0ZXMgPD0gb3JpZ2luYWxfbmJ5dGVzKSB7CisgICAgICAgICAgICAvKiBicG8tMzE2MjY6IHRoZSBtZW1zZXQoKSBhYm92ZSBleHBlY3RzIHRoYXQgcmVhbGxvYyBuZXZlciBmYWlscworICAgICAgICAgICAgICAgb24gc2hyaW5raW5nIGEgbWVtb3J5IGJsb2NrLiAqLworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiU2hyaW5raW5nIHJlYWxsb2NhdGlvbiBmYWlsZWQiKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAKICAgICB3cml0ZV9zaXplX3QocSwgbmJ5dGVzKTsKICAgICBhc3NlcnQocVtTU1RdID09ICh1Y2hhcilhcGkpOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9yYW5nZW9iamVjdC5jIGIvT2JqZWN0cy9yYW5nZW9iamVjdC5jCmluZGV4IGJhYThkZWUuLjg4ODA2OWEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvcmFuZ2VvYmplY3QuYworKysgYi9PYmplY3RzL3Jhbmdlb2JqZWN0LmMKQEAgLTE4Myw4ICsxODMsNyBAQAogfTsKIAogUHlUeXBlT2JqZWN0IFB5UmFuZ2VfVHlwZSA9IHsKLSAgICBQeU9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlKQotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgaXRlbXMgZm9yIHZhcm9iamVjdCAqLworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCiAgICAgInhyYW5nZSIsICAgICAgICAgICAgICAgICAgIC8qIE5hbWUgb2YgdGhpcyB0eXBlICovCiAgICAgc2l6ZW9mKHJhbmdlb2JqZWN0KSwgICAgICAgIC8qIEJhc2ljIG9iamVjdCBzaXplICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEl0ZW0gc2l6ZSBmb3IgdmFyb2JqZWN0ICovCkBAIC0yNTYsOCArMjU1LDcgQEAKIH07CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgUHlyYW5nZWl0ZXJfVHlwZSA9IHsKLSAgICBQeU9iamVjdF9IRUFEX0lOSVQoJlB5VHlwZV9UeXBlKQotICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvYl9zaXplICovCisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKCZQeVR5cGVfVHlwZSwgMCkKICAgICAicmFuZ2VpdGVyYXRvciIsICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmFtZSAqLwogICAgIHNpemVvZihyYW5nZWl0ZXJvYmplY3QpLCAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KZGlmZiAtLWdpdCBhL09iamVjdHMvc2V0b2JqZWN0LmMgYi9PYmplY3RzL3NldG9iamVjdC5jCmluZGV4IGIzY2E2NDMuLjMxZGEzZGIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc2V0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9zZXRvYmplY3QuYwpAQCAtNTQ5LDYgKzU0OSw3IEBACiB7CiAgICAgcmVnaXN0ZXIgc2V0ZW50cnkgKmVudHJ5OwogICAgIFB5X3NzaXplX3QgZmlsbCA9IHNvLT5maWxsOworICAgIC8qIGJwby0zMTA5NTogVW5UcmFjayBpcyBuZWVkZWQgYmVmb3JlIGNhbGxpbmcgYW55IGNhbGxiYWNrcyAqLwogICAgIFB5T2JqZWN0X0dDX1VuVHJhY2soc28pOwogICAgIFB5X1RSQVNIQ0FOX1NBRkVfQkVHSU4oc28pCiAgICAgaWYgKHNvLT53ZWFrcmVmbGlzdCAhPSBOVUxMKQpAQCAtNTgyLDEzICs1ODMsMTMgQEAKICAgICAgICAgaWYgKHN0YXR1cyA8IDApCiAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgIGZwcmludGYoZnAsICIlcyguLi4pIiwgc28tPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICBmcHJpbnRmKGZwLCAiJXMoLi4uKSIsIFB5X1RZUEUoc28pLT50cF9uYW1lKTsKICAgICAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwotICAgIGZwcmludGYoZnAsICIlcyhbIiwgc28tPm9iX3R5cGUtPnRwX25hbWUpOworICAgIGZwcmludGYoZnAsICIlcyhbIiwgUHlfVFlQRShzbyktPnRwX25hbWUpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgd2hpbGUgKHNldF9uZXh0KHNvLCAmcG9zLCAmZW50cnkpKSB7CiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKQEAgLTYxNiw3ICs2MTcsNyBAQAogICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICBpZiAoc3RhdHVzIDwgMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICByZXR1cm4gUHlTdHJpbmdfRnJvbUZvcm1hdCgiJXMoLi4uKSIsIHNvLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIFB5U3RyaW5nX0Zyb21Gb3JtYXQoIiVzKC4uLikiLCBQeV9UWVBFKHNvKS0+dHBfbmFtZSk7CiAgICAgfQogCiAgICAga2V5cyA9IFB5U2VxdWVuY2VfTGlzdCgoUHlPYmplY3QgKilzbyk7CkBAIC02MjcsNyArNjI4LDcgQEAKICAgICBpZiAobGlzdHJlcHIgPT0gTlVMTCkKICAgICAgICAgZ290byBkb25lOwogCi0gICAgcmVzdWx0ID0gUHlTdHJpbmdfRnJvbUZvcm1hdCgiJXMoJXMpIiwgc28tPm9iX3R5cGUtPnRwX25hbWUsCisgICAgcmVzdWx0ID0gUHlTdHJpbmdfRnJvbUZvcm1hdCgiJXMoJXMpIiwgUHlfVFlQRShzbyktPnRwX25hbWUsCiAgICAgICAgIFB5U3RyaW5nX0FTX1NUUklORyhsaXN0cmVwcikpOwogICAgIFB5X0RFQ1JFRihsaXN0cmVwcik7CiBkb25lOgpAQCAtODExLDYgKzgxMiw4IEBACiBzdGF0aWMgdm9pZAogc2V0aXRlcl9kZWFsbG9jKHNldGl0ZXJvYmplY3QgKnNpKQogeworICAgIC8qIGJwby0zMTA5NTogVW5UcmFjayBpcyBuZWVkZWQgYmVmb3JlIGNhbGxpbmcgYW55IGNhbGxiYWNrcyAqLworICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKHNpKTsKICAgICBQeV9YREVDUkVGKHNpLT5zaV9zZXQpOwogICAgIFB5T2JqZWN0X0dDX0RlbChzaSk7CiB9CkBAIC0xNzA3LDggKzE3MTAsMTAgQEAKICAgICBpZiAob3RoZXJzZXQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcnYgPSBzZXRfc3ltbWV0cmljX2RpZmZlcmVuY2VfdXBkYXRlKG90aGVyc2V0LCAoUHlPYmplY3QgKilzbyk7Ci0gICAgaWYgKHJ2ID09IE5VTEwpCisgICAgaWYgKHJ2ID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKG90aGVyc2V0KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFB5X0RFQ1JFRihydik7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKW90aGVyc2V0OwogfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9zbGljZW9iamVjdC5jIGIvT2JqZWN0cy9zbGljZW9iamVjdC5jCmluZGV4IDNjOTk2ZjkuLmRjMTgyMTEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc2xpY2VvYmplY3QuYworKysgYi9PYmplY3RzL3NsaWNlb2JqZWN0LmMKQEAgLTEwNywyMCArMTA3LDIwIEBACiAgICAgaWYgKHItPnN0ZXAgPT0gUHlfTm9uZSkgewogICAgICAgICAqc3RlcCA9IDE7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFQeUludF9DaGVjayhyLT5zdGVwKSAmJiAhUHlMb25nX0NoZWNrKHItPnN0ZXApKSByZXR1cm4gLTE7CisgICAgICAgIGlmICghX1B5QW55SW50X0NoZWNrKHItPnN0ZXApKSByZXR1cm4gLTE7CiAgICAgICAgICpzdGVwID0gUHlJbnRfQXNTc2l6ZV90KHItPnN0ZXApOwogICAgIH0KICAgICBpZiAoci0+c3RhcnQgPT0gUHlfTm9uZSkgewogICAgICAgICAqc3RhcnQgPSAqc3RlcCA8IDAgPyBsZW5ndGgtMSA6IDA7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFQeUludF9DaGVjayhyLT5zdGFydCkgJiYgIVB5TG9uZ19DaGVjayhyLT5zdGVwKSkgcmV0dXJuIC0xOworICAgICAgICBpZiAoIV9QeUFueUludF9DaGVjayhyLT5zdGFydCkpIHJldHVybiAtMTsKICAgICAgICAgKnN0YXJ0ID0gUHlJbnRfQXNTc2l6ZV90KHItPnN0YXJ0KTsKICAgICAgICAgaWYgKCpzdGFydCA8IDApICpzdGFydCArPSBsZW5ndGg7CiAgICAgfQogICAgIGlmIChyLT5zdG9wID09IFB5X05vbmUpIHsKICAgICAgICAgKnN0b3AgPSAqc3RlcCA8IDAgPyAtMSA6IGxlbmd0aDsKICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIVB5SW50X0NoZWNrKHItPnN0b3ApICYmICFQeUxvbmdfQ2hlY2soci0+c3RlcCkpIHJldHVybiAtMTsKKyAgICAgICAgaWYgKCFfUHlBbnlJbnRfQ2hlY2soci0+c3RvcCkpIHJldHVybiAtMTsKICAgICAgICAgKnN0b3AgPSBQeUludF9Bc1NzaXplX3Qoci0+c3RvcCk7CiAgICAgICAgIGlmICgqc3RvcCA8IDApICpzdG9wICs9IGxlbmd0aDsKICAgICB9CkBAIC0xMzEsMTIgKzEzMSwxMyBAQAogfQogCiBpbnQKLVB5U2xpY2VfR2V0SW5kaWNlc0V4KFB5U2xpY2VPYmplY3QgKnIsIFB5X3NzaXplX3QgbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKnN0b3AsIFB5X3NzaXplX3QgKnN0ZXAsIFB5X3NzaXplX3QgKnNsaWNlbGVuZ3RoKQorX1B5U2xpY2VfVW5wYWNrKFB5T2JqZWN0ICpfciwKKyAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqc3RvcCwgUHlfc3NpemVfdCAqc3RlcCkKIHsKKyAgICBQeVNsaWNlT2JqZWN0ICpyID0gKFB5U2xpY2VPYmplY3QgKilfcjsKICAgICAvKiB0aGlzIGlzIGhhcmRlciB0byBnZXQgcmlnaHQgdGhhbiB5b3UgbWlnaHQgdGhpbmsgKi8KIAotICAgIFB5X3NzaXplX3QgZGVmc3RhcnQsIGRlZnN0b3A7CisgICAgYXNzZXJ0KFBZX1NTSVpFX1RfTUlOICsgMSA8PSAtUFlfU1NJWkVfVF9NQVgpOwogCiAgICAgaWYgKHItPnN0ZXAgPT0gUHlfTm9uZSkgewogICAgICAgICAqc3RlcCA9IDE7CkBAIC0xNDgsNDQgKzE0OSw4NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbGljZSBzdGVwIGNhbm5vdCBiZSB6ZXJvIik7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KKyAgICAgICAgLyogSGVyZSAqc3RlcCBtaWdodCBiZSAtUFlfU1NJWkVfVF9NQVgtMTsgaW4gdGhpcyBjYXNlIHdlIHJlcGxhY2UgaXQKKyAgICAgICAgICogd2l0aCAtUFlfU1NJWkVfVF9NQVguICBUaGlzIGRvZXNuJ3QgYWZmZWN0IHRoZSBzZW1hbnRpY3MsIGFuZCBpdAorICAgICAgICAgKiBndWFyZHMgYWdhaW5zdCBsYXRlciB1bmRlZmluZWQgYmVoYXZpb3VyIHJlc3VsdGluZyBmcm9tIGNvZGUgdGhhdAorICAgICAgICAgKiBkb2VzICJzdGVwID0gLXN0ZXAiIGFzIHBhcnQgb2YgYSBzbGljZSByZXZlcnNhbC4KKyAgICAgICAgICovCisgICAgICAgIGlmICgqc3RlcCA8IC1QWV9TU0laRV9UX01BWCkKKyAgICAgICAgICAgICpzdGVwID0gLVBZX1NTSVpFX1RfTUFYOwogICAgIH0KIAotICAgIGRlZnN0YXJ0ID0gKnN0ZXAgPCAwID8gbGVuZ3RoLTEgOiAwOwotICAgIGRlZnN0b3AgPSAqc3RlcCA8IDAgPyAtMSA6IGxlbmd0aDsKLQogICAgIGlmIChyLT5zdGFydCA9PSBQeV9Ob25lKSB7Ci0gICAgICAgICpzdGFydCA9IGRlZnN0YXJ0OworICAgICAgICAqc3RhcnQgPSAqc3RlcCA8IDAgPyBQWV9TU0laRV9UX01BWCA6IDA7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoIV9QeUV2YWxfU2xpY2VJbmRleChyLT5zdGFydCwgc3RhcnQpKSByZXR1cm4gLTE7Ci0gICAgICAgIGlmICgqc3RhcnQgPCAwKSAqc3RhcnQgKz0gbGVuZ3RoOwotICAgICAgICBpZiAoKnN0YXJ0IDwgMCkgKnN0YXJ0ID0gKCpzdGVwIDwgMCkgPyAtMSA6IDA7Ci0gICAgICAgIGlmICgqc3RhcnQgPj0gbGVuZ3RoKQotICAgICAgICAgICAgKnN0YXJ0ID0gKCpzdGVwIDwgMCkgPyBsZW5ndGggLSAxIDogbGVuZ3RoOwogICAgIH0KIAogICAgIGlmIChyLT5zdG9wID09IFB5X05vbmUpIHsKLSAgICAgICAgKnN0b3AgPSBkZWZzdG9wOworICAgICAgICAqc3RvcCA9ICpzdGVwIDwgMCA/IFBZX1NTSVpFX1RfTUlOIDogUFlfU1NJWkVfVF9NQVg7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoIV9QeUV2YWxfU2xpY2VJbmRleChyLT5zdG9wLCBzdG9wKSkgcmV0dXJuIC0xOwotICAgICAgICBpZiAoKnN0b3AgPCAwKSAqc3RvcCArPSBsZW5ndGg7Ci0gICAgICAgIGlmICgqc3RvcCA8IDApICpzdG9wID0gKCpzdGVwIDwgMCkgPyAtMSA6IDA7Ci0gICAgICAgIGlmICgqc3RvcCA+PSBsZW5ndGgpCi0gICAgICAgICAgICAqc3RvcCA9ICgqc3RlcCA8IDApID8gbGVuZ3RoIC0gMSA6IGxlbmd0aDsKICAgICB9CiAKLSAgICBpZiAoKCpzdGVwIDwgMCAmJiAqc3RvcCA+PSAqc3RhcnQpCi0gICAgICAgIHx8ICgqc3RlcCA+IDAgJiYgKnN0YXJ0ID49ICpzdG9wKSkgewotICAgICAgICAqc2xpY2VsZW5ndGggPSAwOworICAgIHJldHVybiAwOworfQorCitQeV9zc2l6ZV90CitfUHlTbGljZV9BZGp1c3RJbmRpY2VzKFB5X3NzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqc3RvcCwgUHlfc3NpemVfdCBzdGVwKQoreworICAgIC8qIHRoaXMgaXMgaGFyZGVyIHRvIGdldCByaWdodCB0aGFuIHlvdSBtaWdodCB0aGluayAqLworCisgICAgYXNzZXJ0KHN0ZXAgIT0gMCk7CisgICAgYXNzZXJ0KHN0ZXAgPj0gLVBZX1NTSVpFX1RfTUFYKTsKKworICAgIGlmICgqc3RhcnQgPCAwKSB7CisgICAgICAgICpzdGFydCArPSBsZW5ndGg7CisgICAgICAgIGlmICgqc3RhcnQgPCAwKSB7CisgICAgICAgICAgICAqc3RhcnQgPSAoc3RlcCA8IDApID8gLTEgOiAwOworICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKCpzdGVwIDwgMCkgewotICAgICAgICAqc2xpY2VsZW5ndGggPSAoKnN0b3AtKnN0YXJ0KzEpLygqc3RlcCkrMTsKKyAgICBlbHNlIGlmICgqc3RhcnQgPj0gbGVuZ3RoKSB7CisgICAgICAgICpzdGFydCA9IChzdGVwIDwgMCkgPyBsZW5ndGggLSAxIDogbGVuZ3RoOworICAgIH0KKworICAgIGlmICgqc3RvcCA8IDApIHsKKyAgICAgICAgKnN0b3AgKz0gbGVuZ3RoOworICAgICAgICBpZiAoKnN0b3AgPCAwKSB7CisgICAgICAgICAgICAqc3RvcCA9IChzdGVwIDwgMCkgPyAtMSA6IDA7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSBpZiAoKnN0b3AgPj0gbGVuZ3RoKSB7CisgICAgICAgICpzdG9wID0gKHN0ZXAgPCAwKSA/IGxlbmd0aCAtIDEgOiBsZW5ndGg7CisgICAgfQorCisgICAgaWYgKHN0ZXAgPCAwKSB7CisgICAgICAgIGlmICgqc3RvcCA8ICpzdGFydCkgeworICAgICAgICAgICAgcmV0dXJuICgqc3RhcnQgLSAqc3RvcCAtIDEpIC8gKC1zdGVwKSArIDE7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgICpzbGljZWxlbmd0aCA9ICgqc3RvcC0qc3RhcnQtMSkvKCpzdGVwKSsxOworICAgICAgICBpZiAoKnN0YXJ0IDwgKnN0b3ApIHsKKyAgICAgICAgICAgIHJldHVybiAoKnN0b3AgLSAqc3RhcnQgLSAxKSAvIHN0ZXAgKyAxOworICAgICAgICB9CiAgICAgfQorICAgIHJldHVybiAwOworfQogCisjdW5kZWYgUHlTbGljZV9HZXRJbmRpY2VzRXgKKworaW50CitQeVNsaWNlX0dldEluZGljZXNFeChQeVNsaWNlT2JqZWN0ICpyLCBQeV9zc2l6ZV90IGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKnN0YXJ0LCBQeV9zc2l6ZV90ICpzdG9wLCBQeV9zc2l6ZV90ICpzdGVwLAorICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc2xpY2VsZW5ndGgpCit7CisgICAgaWYgKF9QeVNsaWNlX1VucGFjaygoUHlPYmplY3QgKilyLCBzdGFydCwgc3RvcCwgc3RlcCkgPCAwKQorICAgICAgICByZXR1cm4gLTE7CisgICAgKnNsaWNlbGVuZ3RoID0gX1B5U2xpY2VfQWRqdXN0SW5kaWNlcyhsZW5ndGgsIHN0YXJ0LCBzdG9wLCAqc3RlcCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI1NCw3ICsyOTUsNyBAQAogc3RhdGljIFB5T2JqZWN0Kgogc2xpY2VfaW5kaWNlcyhQeVNsaWNlT2JqZWN0KiBzZWxmLCBQeU9iamVjdCogbGVuKQogewotICAgIFB5X3NzaXplX3QgaWxlbiwgc3RhcnQsIHN0b3AsIHN0ZXAsIHNsaWNlbGVuZ3RoOworICAgIFB5X3NzaXplX3QgaWxlbiwgc3RhcnQsIHN0b3AsIHN0ZXA7CiAKICAgICBpbGVuID0gUHlOdW1iZXJfQXNTc2l6ZV90KGxlbiwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CiAKQEAgLTI2MiwxMCArMzAzLDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeChzZWxmLCBpbGVuLCAmc3RhcnQsICZzdG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKKyAgICBpZiAoX1B5U2xpY2VfVW5wYWNrKChQeU9iamVjdCAqKXNlbGYsICZzdGFydCwgJnN0b3AsICZzdGVwKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQorICAgIF9QeVNsaWNlX0FkanVzdEluZGljZXMoaWxlbiwgJnN0YXJ0LCAmc3RvcCwgc3RlcCk7CiAKICAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSgiKG5ubikiLCBzdGFydCwgc3RvcCwgc3RlcCk7CiB9CmRpZmYgLS1naXQgYS9PYmplY3RzL3N0cmluZ29iamVjdC5jIGIvT2JqZWN0cy9zdHJpbmdvYmplY3QuYwppbmRleCA0ZTM4NzM1Li5iMjFhZmI0IDEwMDY0NAotLS0gYS9PYmplY3RzL3N0cmluZ29iamVjdC5jCisrKyBiL09iamVjdHMvc3RyaW5nb2JqZWN0LmMKQEAgLTYxMiw3ICs2MTIsMTMgQEAKICAgICBjaGFyICpwLCAqYnVmOwogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBQeU9iamVjdCAqdjsKLSAgICBQeV9zc2l6ZV90IG5ld2xlbiA9IHJlY29kZV9lbmNvZGluZyA/IDQqbGVuOmxlbjsKKyAgICBQeV9zc2l6ZV90IG5ld2xlbjsKKyAgICAvKiBDaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLworICAgIGlmIChyZWNvZGVfZW5jb2RpbmcgJiYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gNCkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJzdHJpbmcgaXMgdG9vIGxhcmdlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBuZXdsZW4gPSByZWNvZGVfZW5jb2RpbmcgPyA0KmxlbjpsZW47CiAgICAgdiA9IFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbmV3bGVuKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEzMTAsMTEgKzEzMTYsMTEgQEAKICAgICAgICAgY2hhciogcmVzdWx0X2J1ZjsKICAgICAgICAgUHlPYmplY3QqIHJlc3VsdDsKIAotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoKFB5U2xpY2VPYmplY3QqKWl0ZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfR0VUX1NJWkUoc2VsZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbmd0aCkgPCAwKSB7CisgICAgICAgIGlmIChfUHlTbGljZV9VbnBhY2soaXRlbSwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgc2xpY2VsZW5ndGggPSBfUHlTbGljZV9BZGp1c3RJbmRpY2VzKFB5U3RyaW5nX0dFVF9TSVpFKHNlbGYpLCAmc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdG9wLCBzdGVwKTsKIAogICAgICAgICBpZiAoc2xpY2VsZW5ndGggPD0gMCkgewogICAgICAgICAgICAgcmV0dXJuIFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKCIiLCAwKTsKQEAgLTIzNTgsMzEgKzIzNjQsMzAgQEAKIHsKICAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKICAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIGksIHByb2R1Y3Q7CisgICAgUHlfc3NpemVfdCBjb3VudCwgaTsKICAgICBQeVN0cmluZ09iamVjdCAqcmVzdWx0OwogCiAgICAgc2VsZl9sZW4gPSBQeVN0cmluZ19HRVRfU0laRShzZWxmKTsKIAotICAgIC8qIDEgYXQgdGhlIGVuZCBwbHVzIDEgYWZ0ZXIgZXZlcnkgY2hhcmFjdGVyICovCi0gICAgY291bnQgPSBzZWxmX2xlbisxOwotICAgIGlmIChtYXhjb3VudCA8IGNvdW50KQorICAgIC8qIDEgYXQgdGhlIGVuZCBwbHVzIDEgYWZ0ZXIgZXZlcnkgY2hhcmFjdGVyOworICAgICAgIGNvdW50ID0gbWluKG1heGNvdW50LCBzZWxmX2xlbiArIDEpICovCisgICAgaWYgKG1heGNvdW50IDw9IHNlbGZfbGVuKSB7CiAgICAgICAgIGNvdW50ID0gbWF4Y291bnQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBDYW4ndCBvdmVyZmxvdzogc2VsZl9sZW4gKyAxIDw9IG1heGNvdW50IDw9IFBZX1NTSVpFX1RfTUFYLiAqLworICAgICAgICBjb3VudCA9IHNlbGZfbGVuICsgMTsKKyAgICB9CiAKICAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KICAgICAvKiAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOyAqLwotICAgIHByb2R1Y3QgPSBjb3VudCAqIHRvX2xlbjsKLSAgICBpZiAocHJvZHVjdCAvIHRvX2xlbiAhPSBjb3VudCkgeworICAgIGFzc2VydChjb3VudCA+IDApOworICAgIGlmICh0b19sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IHByb2R1Y3QgKyBzZWxmX2xlbjsKLSAgICBpZiAocmVzdWx0X2xlbiA8IDApIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCisgICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47CiAgICAgaWYgKCEgKHJlc3VsdCA9IChQeVN0cmluZ09iamVjdCAqKQogICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpICkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNjEwLDcgKzI2MTUsNyBAQAogICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwogICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKICAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIHByb2R1Y3Q7CisgICAgUHlfc3NpemVfdCBjb3VudDsKICAgICBQeVN0cmluZ09iamVjdCAqcmVzdWx0OwogCiAgICAgc2VsZl9zID0gUHlTdHJpbmdfQVNfU1RSSU5HKHNlbGYpOwpAQCAtMjYyNCwxNiArMjYyOSwxMiBAQAogCiAgICAgLyogdXNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY3VycmVudCBhbmQgbmV3LCBoZW5jZSB0aGUgIi0xIiAqLwogICAgIC8qICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLTEpICAqLwotICAgIHByb2R1Y3QgPSBjb3VudCAqICh0b19sZW4tMSk7Ci0gICAgaWYgKHByb2R1Y3QgLyAodG9fbGVuLTEpICE9IGNvdW50KSB7CisgICAgYXNzZXJ0KGNvdW50ID4gMCk7CisgICAgaWYgKHRvX2xlbiAtIDEgPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBwcm9kdWN0OwotICAgIGlmIChyZXN1bHRfbGVuIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSAxKTsKIAogICAgIGlmICggKHJlc3VsdCA9IChQeVN0cmluZ09iamVjdCAqKQogICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQpAQCAtMjY3Niw3ICsyNjc3LDcgQEAKICAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKICAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7CiAgICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQsIHByb2R1Y3Q7CisgICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwogICAgIFB5U3RyaW5nT2JqZWN0ICpyZXN1bHQ7CiAKICAgICBzZWxmX3MgPSBQeVN0cmluZ19BU19TVFJJTkcoc2VsZik7CkBAIC0yNjkzLDE2ICsyNjk0LDEyIEBACiAKICAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KICAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCi0gICAgcHJvZHVjdCA9IGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbik7Ci0gICAgaWYgKHByb2R1Y3QgLyAodG9fbGVuLWZyb21fbGVuKSAhPSBjb3VudCkgeworICAgIGFzc2VydChjb3VudCA+IDApOworICAgIGlmICh0b19sZW4gLSBmcm9tX2xlbiA+IChQWV9TU0laRV9UX01BWCAtIHNlbGZfbGVuKSAvIGNvdW50KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIHByb2R1Y3Q7Ci0gICAgaWYgKHJlc3VsdF9sZW4gPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLCAicmVwbGFjZSBzdHJpbmcgaXMgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQorICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIGZyb21fbGVuKTsKIAogICAgIGlmICggKHJlc3VsdCA9IChQeVN0cmluZ09iamVjdCAqKQogICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQpAQCAtNDUwNyw3ICs0NTA0LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoUHlOdW1iZXJfQ2hlY2sodikpIHsKICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmlvYmo9TlVMTDsKIAotICAgICAgICAgICAgICAgICAgICBpZiAoUHlJbnRfQ2hlY2sodikgfHwgKFB5TG9uZ19DaGVjayh2KSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKF9QeUFueUludF9DaGVjayh2KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaW9iaiA9IHY7CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoaW9iaik7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL09iamVjdHMvc3RydWN0c2VxLmMgYi9PYmplY3RzL3N0cnVjdHNlcS5jCmluZGV4IDc1YzFmZmIuLjNlNDU4NDAgMTAwNjQ0Ci0tLSBhL09iamVjdHMvc3RydWN0c2VxLmMKKysrIGIvT2JqZWN0cy9zdHJ1Y3RzZXEuYwpAQCAtMTE0LDExICsxMTQsMTEgQEAKICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwgc3RvcCwgc3RlcCwgc2xpY2VsZW4sIGN1ciwgaTsKICAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKIAotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoKFB5U2xpY2VPYmplY3QgKilpdGVtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVklTSUJMRV9TSVpFKHNlbGYpLCAmc3RhcnQsICZzdG9wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0ZXAsICZzbGljZWxlbikgPCAwKSB7CisgICAgICAgIGlmIChfUHlTbGljZV9VbnBhY2soaXRlbSwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgc2xpY2VsZW4gPSBfUHlTbGljZV9BZGp1c3RJbmRpY2VzKFZJU0lCTEVfU0laRShzZWxmKSwgJnN0YXJ0LCAmc3RvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RlcCk7CiAgICAgICAgIGlmIChzbGljZWxlbiA8PSAwKQogICAgICAgICAgICAgcmV0dXJuIFB5VHVwbGVfTmV3KDApOwogICAgICAgICByZXN1bHQgPSBQeVR1cGxlX05ldyhzbGljZWxlbik7CmRpZmYgLS1naXQgYS9PYmplY3RzL3R1cGxlb2JqZWN0LmMgYi9PYmplY3RzL3R1cGxlb2JqZWN0LmMKaW5kZXggNTUwNzE5Zi4uNmY0YjE4YyAxMDA2NDQKLS0tIGEvT2JqZWN0cy90dXBsZW9iamVjdC5jCisrKyBiL09iamVjdHMvdHVwbGVvYmplY3QuYwpAQCAtMjg4LDEwICsyODgsNyBAQAogCiAgICAgLyogRG8gcmVwcigpIG9uIGVhY2ggZWxlbWVudC4gKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBnZXR0aW5nIHRoZSByZXByIG9mIGEgdHVwbGUiKSkKLSAgICAgICAgICAgIGdvdG8gRG9uZTsKICAgICAgICAgcyA9IFB5T2JqZWN0X1JlcHIodi0+b2JfaXRlbVtpXSk7Ci0gICAgICAgIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpOwogICAgICAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBEb25lOwogICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKHBpZWNlcywgaSwgcyk7CkBAIC01MTUsOCArNTEyLDggQEAKICAgICBQeU9iamVjdCAqdjsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xPJk8mOmluZGV4IiwgJnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeUV2YWxfU2xpY2VJbmRleCwgJnN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlFdmFsX1NsaWNlSW5kZXgsICZzdG9wKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5RXZhbF9TbGljZUluZGV4Tm90Tm9uZSwgJnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlFdmFsX1NsaWNlSW5kZXhOb3ROb25lLCAmc3RvcCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChzdGFydCA8IDApIHsKICAgICAgICAgc3RhcnQgKz0gUHlfU0laRShzZWxmKTsKQEAgLTcxNSwxMSArNzEyLDExIEBACiAgICAgICAgIFB5T2JqZWN0KiBpdDsKICAgICAgICAgUHlPYmplY3QgKipzcmMsICoqZGVzdDsKIAotICAgICAgICBpZiAoUHlTbGljZV9HZXRJbmRpY2VzRXgoKFB5U2xpY2VPYmplY3QqKWl0ZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfU0laRShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZzdG9wLCAmc3RlcCwgJnNsaWNlbGVuZ3RoKSA8IDApIHsKKyAgICAgICAgaWYgKF9QeVNsaWNlX1VucGFjayhpdGVtLCAmc3RhcnQsICZzdG9wLCAmc3RlcCkgPCAwKSB7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQorICAgICAgICBzbGljZWxlbmd0aCA9IF9QeVNsaWNlX0FkanVzdEluZGljZXMoUHlUdXBsZV9HRVRfU0laRShzZWxmKSwgJnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RvcCwgc3RlcCk7CiAKICAgICAgICAgaWYgKHNsaWNlbGVuZ3RoIDw9IDApIHsKICAgICAgICAgICAgIHJldHVybiBQeVR1cGxlX05ldygwKTsKZGlmZiAtLWdpdCBhL09iamVjdHMvdHlwZW9iamVjdC5jIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKaW5kZXggMzQ5NGZhOS4uODQ0ZmIwMCAxMDA2NDQKLS0tIGEvT2JqZWN0cy90eXBlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy90eXBlb2JqZWN0LmMKQEAgLTIwODIsNiArMjA4Miw5IEBACiAgICAgLyogQ2FsbCBvYmplY3QuX19pbml0X18oc2VsZikgbm93LiAqLwogICAgIC8qIFhYWCBDb3VsZCBjYWxsIHN1cGVyKHR5cGUsIGNscykuX19pbml0X18oKSBidXQgd2hhdCdzIHRoZSBwb2ludD8gKi8KICAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAwLCAwKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgcmVzID0gb2JqZWN0X2luaXQoY2xzLCBhcmdzLCBOVUxMKTsKICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgcmV0dXJuIHJlczsKQEAgLTI2MDgsNiArMjYxMSw3IEBACiAgICAgUHlUeXBlT2JqZWN0ICptZXRhdHlwZSA9IFB5X1RZUEUodHlwZSk7CiAgICAgUHlPYmplY3QgKm1ldGFfYXR0cmlidXRlLCAqYXR0cmlidXRlOwogICAgIGRlc2NyZ2V0ZnVuYyBtZXRhX2dldDsKKyAgICBQeU9iamVjdCogcmVzOwogCiAgICAgaWYgKCFQeVN0cmluZ19DaGVjayhuYW1lKSkgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLApAQCAtMjYyOSw2ICsyNjMzLDcgQEAKICAgICBtZXRhX2F0dHJpYnV0ZSA9IF9QeVR5cGVfTG9va3VwKG1ldGF0eXBlLCBuYW1lKTsKIAogICAgIGlmIChtZXRhX2F0dHJpYnV0ZSAhPSBOVUxMKSB7CisgICAgICAgIFB5X0lOQ1JFRihtZXRhX2F0dHJpYnV0ZSk7CiAgICAgICAgIG1ldGFfZ2V0ID0gUHlfVFlQRShtZXRhX2F0dHJpYnV0ZSktPnRwX2Rlc2NyX2dldDsKIAogICAgICAgICBpZiAobWV0YV9nZXQgIT0gTlVMTCAmJiBQeURlc2NyX0lzRGF0YShtZXRhX2F0dHJpYnV0ZSkpIHsKQEAgLTI2MzYsMTAgKzI2NDEsMTEgQEAKICAgICAgICAgICAgICAqIHdyaXRlcy4gQXNzdW1lIHRoZSBhdHRyaWJ1dGUgaXMgbm90IG92ZXJyaWRkZW4gaW4KICAgICAgICAgICAgICAqIHR5cGUncyB0cF9kaWN0IChhbmQgYmFzZXMpOiBjYWxsIHRoZSBkZXNjcmlwdG9yIG5vdy4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgcmV0dXJuIG1ldGFfZ2V0KG1ldGFfYXR0cmlidXRlLCAoUHlPYmplY3QgKil0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQeU9iamVjdCAqKW1ldGF0eXBlKTsKKyAgICAgICAgICAgIHJlcyA9IG1ldGFfZ2V0KG1ldGFfYXR0cmlidXRlLCAoUHlPYmplY3QgKil0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopbWV0YXR5cGUpOworICAgICAgICAgICAgUHlfREVDUkVGKG1ldGFfYXR0cmlidXRlKTsKKyAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KLSAgICAgICAgUHlfSU5DUkVGKG1ldGFfYXR0cmlidXRlKTsKICAgICB9CiAKICAgICAvKiBObyBkYXRhIGRlc2NyaXB0b3IgZm91bmQgb24gbWV0YXR5cGUuIExvb2sgaW4gdHBfZGljdCBvZiB0aGlzCkBAIC0yNjQ3LDE4ICsyNjUzLDIxIEBACiAgICAgYXR0cmlidXRlID0gX1B5VHlwZV9Mb29rdXAodHlwZSwgbmFtZSk7CiAgICAgaWYgKGF0dHJpYnV0ZSAhPSBOVUxMKSB7CiAgICAgICAgIC8qIEltcGxlbWVudCBkZXNjcmlwdG9yIGZ1bmN0aW9uYWxpdHksIGlmIGFueSAqLwotICAgICAgICBkZXNjcmdldGZ1bmMgbG9jYWxfZ2V0ID0gUHlfVFlQRShhdHRyaWJ1dGUpLT50cF9kZXNjcl9nZXQ7CisgICAgICAgIGRlc2NyZ2V0ZnVuYyBsb2NhbF9nZXQ7CisgICAgICAgIFB5X0lOQ1JFRihhdHRyaWJ1dGUpOworICAgICAgICBsb2NhbF9nZXQgPSBQeV9UWVBFKGF0dHJpYnV0ZSktPnRwX2Rlc2NyX2dldDsKIAogICAgICAgICBQeV9YREVDUkVGKG1ldGFfYXR0cmlidXRlKTsKIAogICAgICAgICBpZiAobG9jYWxfZ2V0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIC8qIE5VTEwgMm5kIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgZGVzY3JpcHRvciB3YXMKICAgICAgICAgICAgICAqIGZvdW5kIG9uIHRoZSB0YXJnZXQgb2JqZWN0IGl0c2VsZiAob3IgYSBiYXNlKSAgKi8KLSAgICAgICAgICAgIHJldHVybiBsb2NhbF9nZXQoYXR0cmlidXRlLCAoUHlPYmplY3QgKilOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlPYmplY3QgKil0eXBlKTsKKyAgICAgICAgICAgIHJlcyA9IGxvY2FsX2dldChhdHRyaWJ1dGUsIChQeU9iamVjdCAqKU5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopdHlwZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYXR0cmlidXRlKTsKKyAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KIAotICAgICAgICBQeV9JTkNSRUYoYXR0cmlidXRlKTsKICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZTsKICAgICB9CiAKQEAgLTI2ODcsNiArMjY5Niw3IEBACiBzdGF0aWMgaW50CiB0eXBlX3NldGF0dHJvKFB5VHlwZU9iamVjdCAqdHlwZSwgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKKyAgICBpbnQgcmVzOwogICAgIGlmICghKHR5cGUtPnRwX2ZsYWdzICYgUHlfVFBGTEFHU19IRUFQVFlQRSkpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KAogICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLApAQCAtMjY5NCw5ICsyNzA0LDM5IEBACiAgICAgICAgICAgICB0eXBlLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBpZiAoUHlPYmplY3RfR2VuZXJpY1NldEF0dHIoKFB5T2JqZWN0ICopdHlwZSwgbmFtZSwgdmFsdWUpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIHJldHVybiB1cGRhdGVfc2xvdCh0eXBlLCBuYW1lKTsKKyNpZmRlZiBQeV9VU0lOR19VTklDT0RFCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhuYW1lKSkgeworICAgICAgICBuYW1lID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyhuYW1lLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKG5hbWUgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZWxzZQorI2VuZGlmCisgICAgICAgIFB5X0lOQ1JFRihuYW1lKTsKKworICAgIGlmIChQeVN0cmluZ19DaGVjayhuYW1lKSkgeworICAgICAgICBpZiAoIVB5U3RyaW5nX0NoZWNrRXhhY3QobmFtZSkpIHsKKyAgICAgICAgICAgIFB5X1NFVFJFRihuYW1lLAorICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmdBbmRTaXplKFB5U3RyaW5nX0FTX1NUUklORyhuYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19HRVRfU0laRShuYW1lKSkKKyAgICAgICAgICAgICk7CisgICAgICAgICAgICBpZiAobmFtZSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBQeVN0cmluZ19JbnRlcm5JblBsYWNlKCZuYW1lKTsKKyAgICAgICAgaWYgKCFQeVN0cmluZ19DSEVDS19JTlRFUk5FRChuYW1lKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX01lbW9yeUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPdXQgb2YgbWVtb3J5IGludGVybmluZyBhbiBhdHRyaWJ1dGUgbmFtZSIpOworICAgICAgICAgICAgUHlfREVDUkVGKG5hbWUpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorICAgIHJlcyA9IFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyKChQeU9iamVjdCAqKXR5cGUsIG5hbWUsIHZhbHVlKTsKKyAgICBpZiAocmVzID09IDApIHsKKyAgICAgICAgcmVzID0gdXBkYXRlX3Nsb3QodHlwZSwgbmFtZSk7CisgICAgfQorICAgIFB5X0RFQ1JFRihuYW1lKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzMzNSw2ICszMzc1LDI5IEBACiAgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgYXNzZXJ0KG5hbWVzID09IFB5X05vbmUgfHwgUHlMaXN0X0NoZWNrKG5hbWVzKSk7CiAKKyAgICAgICAgaWYgKHJlcXVpcmVkX3N0YXRlICYmIFB5X1B5M2tXYXJuaW5nRmxhZykgeworICAgICAgICAgICAgUHlfc3NpemVfdCBiYXNpY3NpemUgPSBQeUJhc2VPYmplY3RfVHlwZS50cF9iYXNpY3NpemU7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF9kaWN0b2Zmc2V0KQorICAgICAgICAgICAgICAgIGJhc2ljc2l6ZSArPSBzaXplb2YoUHlPYmplY3QgKik7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF93ZWFrbGlzdG9mZnNldCkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaWYgKG5hbWVzICE9IFB5X05vbmUpCisgICAgICAgICAgICAgICAgYmFzaWNzaXplICs9IHNpemVvZihQeU9iamVjdCAqKSAqIFB5TGlzdF9HRVRfU0laRShuYW1lcyk7CisgICAgICAgICAgICBpZiAob2JqLT5vYl90eXBlLT50cF9iYXNpY3NpemUgPiBiYXNpY3NpemUpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqbXNnID0gUHlTdHJpbmdfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcGlja2xlICUuMjAwcyBvYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAobXNnID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlbmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChQeUVycl9XYXJuUHkzayhQeVN0cmluZ19BU19TVFJJTkcobXNnKSwgMSkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihtc2cpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1zZyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBpZiAobmFtZXMgIT0gUHlfTm9uZSkgewogICAgICAgICAgICAgc2xvdHMgPSBQeURpY3RfTmV3KCk7CiAgICAgICAgICAgICBpZiAoc2xvdHMgPT0gTlVMTCkKQEAgLTYzNTUsNyArNjQxOCw3IEBACiAgICAgICAgIC8qIFNsb3RzIG11c3QgYmUgb3JkZXJlZCBieSB0aGVpciBvZmZzZXQgaW4gdGhlIFB5SGVhcFR5cGVPYmplY3QuICovCiAgICAgICAgIGFzc2VydCghcFsxXS5uYW1lIHx8IHAtPm9mZnNldCA8PSBwWzFdLm9mZnNldCk7CiAgICAgICAgIHAtPm5hbWVfc3Ryb2JqID0gUHlTdHJpbmdfSW50ZXJuRnJvbVN0cmluZyhwLT5uYW1lKTsKLSAgICAgICAgaWYgKCFwLT5uYW1lX3N0cm9iaikKKyAgICAgICAgaWYgKCFwLT5uYW1lX3N0cm9iaiB8fCAhUHlTdHJpbmdfQ0hFQ0tfSU5URVJORUQocC0+bmFtZV9zdHJvYmopKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiT3V0IG9mIG1lbW9yeSBpbnRlcm5pbmcgc2xvdGRlZiBuYW1lcyIpOwogICAgIH0KICAgICBpbml0aWFsaXplZCA9IDE7CkBAIC02MzcwLDYgKzY0MzMsOSBAQAogICAgIHNsb3RkZWYgKipwcDsKICAgICBpbnQgb2Zmc2V0OwogCisgICAgYXNzZXJ0KFB5U3RyaW5nX0NoZWNrRXhhY3QobmFtZSkpOworICAgIGFzc2VydChQeVN0cmluZ19DSEVDS19JTlRFUk5FRChuYW1lKSk7CisKICAgICAvKiBDbGVhciB0aGUgVkFMSURfVkVSU0lPTiBmbGFnIG9mICd0eXBlJyBhbmQgYWxsIGl0cwogICAgICAgIHN1YmNsYXNzZXMuICBUaGlzIGNvdWxkIHBvc3NpYmx5IGJlIHVuaWZpZWQgd2l0aCB0aGUKICAgICAgICB1cGRhdGVfc3ViY2xhc3NlcygpIHJlY3Vyc2lvbiBiZWxvdywgYnV0IGNhcmVmdWxseToKQEAgLTYzODAsNyArNjQ0Niw2IEBACiAgICAgaW5pdF9zbG90ZGVmcygpOwogICAgIHBwID0gcHRyczsKICAgICBmb3IgKHAgPSBzbG90ZGVmczsgcC0+bmFtZTsgcCsrKSB7Ci0gICAgICAgIC8qIFhYWCBhc3N1bWUgbmFtZSBpcyBpbnRlcm5lZCEgKi8KICAgICAgICAgaWYgKHAtPm5hbWVfc3Ryb2JqID09IG5hbWUpCiAgICAgICAgICAgICAqcHArKyA9IHA7CiAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy91bmljb2Rlb2JqZWN0LmMgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwppbmRleCBjYTYwOWE5Li5iNzZkYjYxIDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYworKysgYi9PYmplY3RzL3VuaWNvZGVvYmplY3QuYwpAQCAtNDIyMiw3ICs0MjIyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBQeVVuaWNvZGVfQVNfVU5JQ09ERSh2KSArIG9sZHBvczsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB2YWx1ZSAtPSAweDEwMDAwOwotICAgICAgICAgICAgICAgICAgICAqcCsrID0gMHhEODAwIHwgKHZhbHVlID4+IDEwKTsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9IDB4RDgwMCB8IChQeV9VTklDT0RFKSh2YWx1ZSA+PiAxMCk7CiAgICAgICAgICAgICAgICAgICAgICpwKysgPSAweERDMDAgfCAodmFsdWUgJiAweDNGRik7CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhY2hhcnMgLT0gMjsKICAgICAgICAgICAgICAgICB9CkBAIC01NzMyLDIwICs1NzMyLDIwIEBACiAKICAgICAgICAgLyogTWFrZSBzdXJlIHdlIGhhdmUgZW5vdWdoIHNwYWNlIGZvciB0aGUgc2VwYXJhdG9yIGFuZCB0aGUgaXRlbS4gKi8KICAgICAgICAgaXRlbWxlbiA9IFB5VW5pY29kZV9HRVRfU0laRShpdGVtKTsKLSAgICAgICAgbmV3X3Jlc191c2VkID0gcmVzX3VzZWQgKyBpdGVtbGVuOwotICAgICAgICBpZiAobmV3X3Jlc191c2VkIDwgMCkKKyAgICAgICAgaWYgKHJlc191c2VkID4gUFlfU1NJWkVfVF9NQVggLSBpdGVtbGVuKQogICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgbmV3X3Jlc191c2VkID0gcmVzX3VzZWQgKyBpdGVtbGVuOwogICAgICAgICBpZiAoaSA8IHNlcWxlbiAtIDEpIHsKLSAgICAgICAgICAgIG5ld19yZXNfdXNlZCArPSBzZXBsZW47Ci0gICAgICAgICAgICBpZiAobmV3X3Jlc191c2VkIDwgMCkKKyAgICAgICAgICAgIGlmIChuZXdfcmVzX3VzZWQgPiBQWV9TU0laRV9UX01BWCAtIHNlcGxlbikKICAgICAgICAgICAgICAgICBnb3RvIE92ZXJmbG93OworICAgICAgICAgICAgbmV3X3Jlc191c2VkICs9IHNlcGxlbjsKICAgICAgICAgfQogICAgICAgICBpZiAobmV3X3Jlc191c2VkID4gcmVzX2FsbG9jKSB7CiAgICAgICAgICAgICAvKiBkb3VibGUgYWxsb2NhdGVkIHNpemUgdW50aWwgaXQncyBiaWcgZW5vdWdoICovCiAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgcmVzX2FsbG9jICs9IHJlc19hbGxvYzsKLSAgICAgICAgICAgICAgICBpZiAocmVzX2FsbG9jIDw9IDApCisgICAgICAgICAgICAgICAgaWYgKHJlc19hbGxvYyA+IFBZX1NTSVpFX1RfTUFYIC8gMikKICAgICAgICAgICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgICAgICAgICByZXNfYWxsb2MgKz0gcmVzX2FsbG9jOwogICAgICAgICAgICAgfSB3aGlsZSAobmV3X3Jlc191c2VkID4gcmVzX2FsbG9jKTsKICAgICAgICAgICAgIGlmIChfUHlVbmljb2RlX1Jlc2l6ZSgmcmVzLCByZXNfYWxsb2MpIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKQEAgLTU5NDMsNyArNTk0Myw3IEBACiAgICAgfSBlbHNlIHsKIAogICAgICAgICBQeV9zc2l6ZV90IG4sIGksIGo7Ci0gICAgICAgIFB5X3NzaXplX3QgcHJvZHVjdCwgbmV3X3NpemUsIGRlbHRhOworICAgICAgICBQeV9zc2l6ZV90IG5ld19zaXplLCBkZWx0YTsKICAgICAgICAgUHlfVU5JQ09ERSAqcDsKIAogICAgICAgICAvKiByZXBsYWNlIHN0cmluZ3MgKi8KQEAgLTU5NTYsMTggKzU5NTYsMTMgQEAKICAgICAgICAgaWYgKGRlbHRhID09IDApIHsKICAgICAgICAgICAgIG5ld19zaXplID0gc2VsZi0+bGVuZ3RoOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJvZHVjdCA9IG4gKiAoc3RyMi0+bGVuZ3RoIC0gc3RyMS0+bGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICgocHJvZHVjdCAvIChzdHIyLT5sZW5ndGggLSBzdHIxLT5sZW5ndGgpKSAhPSBuKSB7CisgICAgICAgICAgICBhc3NlcnQobiA+IDApOworICAgICAgICAgICAgaWYgKGRlbHRhID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZi0+bGVuZ3RoKSAvIG4pIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcGxhY2Ugc3RyaW5nIGlzIHRvbyBsb25nIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBuZXdfc2l6ZSA9IHNlbGYtPmxlbmd0aCArIHByb2R1Y3Q7Ci0gICAgICAgICAgICBpZiAobmV3X3NpemUgPCAwKSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgbmV3X3NpemUgPSBzZWxmLT5sZW5ndGggKyBkZWx0YSAqIG47CiAgICAgICAgIH0KICAgICAgICAgdSA9IF9QeVVuaWNvZGVfTmV3KG5ld19zaXplKTsKICAgICAgICAgaWYgKCF1KQpAQCAtODAxMywxMCArODAwOCwxMSBAQAogICAgICAgICBQeV9VTklDT0RFKiByZXN1bHRfYnVmOwogICAgICAgICBQeU9iamVjdCogcmVzdWx0OwogCi0gICAgICAgIGlmIChQeVNsaWNlX0dldEluZGljZXNFeCgoUHlTbGljZU9iamVjdCopaXRlbSwgUHlVbmljb2RlX0dFVF9TSVpFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmc3RvcCwgJnN0ZXAsICZzbGljZWxlbmd0aCkgPCAwKSB7CisgICAgICAgIGlmIChfUHlTbGljZV9VbnBhY2soaXRlbSwgJnN0YXJ0LCAmc3RvcCwgJnN0ZXApIDwgMCkgewogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KKyAgICAgICAgc2xpY2VsZW5ndGggPSBfUHlTbGljZV9BZGp1c3RJbmRpY2VzKFB5VW5pY29kZV9HRVRfU0laRShzZWxmKSwgJnN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RvcCwgc3RlcCk7CiAKICAgICAgICAgaWYgKHNsaWNlbGVuZ3RoIDw9IDApIHsKICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVVuaWNvZGUoTlVMTCwgMCk7CkBAIC04NjMyLDcgKzg2MjgsNyBAQAogICAgICAgICAgICAgICAgIGlmIChQeU51bWJlcl9DaGVjayh2KSkgewogICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqaW9iaj1OVUxMOwogCi0gICAgICAgICAgICAgICAgICAgIGlmIChQeUludF9DaGVjayh2KSB8fCAoUHlMb25nX0NoZWNrKHYpKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoX1B5QW55SW50X0NoZWNrKHYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpb2JqID0gdjsKICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihpb2JqKTsKICAgICAgICAgICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwppbmRleCBjOGI5ODJmLi4zNDRlNmYyIDEwMDY0NAotLS0gYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYworKysgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwpAQCAtMjQsNiArMjQsOCBAQAogewogICAgIHNlbGYtPmhhc2ggPSAtMTsKICAgICBzZWxmLT53cl9vYmplY3QgPSBvYjsKKyAgICBzZWxmLT53cl9wcmV2ID0gTlVMTDsKKyAgICBzZWxmLT53cl9uZXh0ID0gTlVMTDsKICAgICBQeV9YSU5DUkVGKGNhbGxiYWNrKTsKICAgICBzZWxmLT53cl9jYWxsYmFjayA9IGNhbGxiYWNrOwogfQpAQCAtMTk0LDcgKzE5Niw3IEBACiBzdGF0aWMgUHlPYmplY3QgKgogd2Vha3JlZl9yaWNoY29tcGFyZShQeVdlYWtSZWZlcmVuY2UqIHNlbGYsIFB5V2Vha1JlZmVyZW5jZSogb3RoZXIsIGludCBvcCkKIHsKLSAgICBpZiAoKG9wICE9IFB5X0VRICYmIG9wICE9IFB5X05FKSB8fCBzZWxmLT5vYl90eXBlICE9IG90aGVyLT5vYl90eXBlKSB7CisgICAgaWYgKChvcCAhPSBQeV9FUSAmJiBvcCAhPSBQeV9ORSkgfHwgUHlfVFlQRShzZWxmKSAhPSBQeV9UWVBFKG90aGVyKSkgewogICAgICAgICBQeV9JTkNSRUYoUHlfTm90SW1wbGVtZW50ZWQpOwogICAgICAgICByZXR1cm4gUHlfTm90SW1wbGVtZW50ZWQ7CiAgICAgfQpAQCAtOTEyLDcgKzkxNCw3IEBACiAKICAgICBpZiAob2JqZWN0ID09IE5VTEwKICAgICAgICAgfHwgIVB5VHlwZV9TVVBQT1JUU19XRUFLUkVGUyhQeV9UWVBFKG9iamVjdCkpCi0gICAgICAgIHx8IG9iamVjdC0+b2JfcmVmY250ICE9IDApIHsKKyAgICAgICAgfHwgUHlfUkVGQ05UKG9iamVjdCkgIT0gMCkgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTkzNSw3ICs5MzcsNyBAQAogICAgICAgICAgICAgY3VycmVudC0+d3JfY2FsbGJhY2sgPSBOVUxMOwogICAgICAgICAgICAgY2xlYXJfd2Vha3JlZihjdXJyZW50KTsKICAgICAgICAgICAgIGlmIChjYWxsYmFjayAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQtPm9iX3JlZmNudCA+IDApCisgICAgICAgICAgICAgICAgaWYgKFB5X1JFRkNOVChjdXJyZW50KSA+IDApCiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9jYWxsYmFjayhjdXJyZW50LCBjYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNhbGxiYWNrKTsKICAgICAgICAgICAgIH0KQEAgLTk1Myw3ICs5NTUsNyBAQAogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgICAgICAgICBQeVdlYWtSZWZlcmVuY2UgKm5leHQgPSBjdXJyZW50LT53cl9uZXh0OwogCi0gICAgICAgICAgICAgICAgaWYgKGN1cnJlbnQtPm9iX3JlZmNudCA+IDApCisgICAgICAgICAgICAgICAgaWYgKFB5X1JFRkNOVChjdXJyZW50KSA+IDApCiAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICBQeV9JTkNSRUYoY3VycmVudCk7CiAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0odHVwbGUsIGkgKiAyLCAoUHlPYmplY3QgKikgY3VycmVudCk7CmRpZmYgLS1naXQgYS9QQy9WQzYvcnQuYmF0IGIvUEMvVkM2L3J0LmJhdAppbmRleCA2NTQ4OGIxLi5kZmRlYTY3IDEwMDc1NQotLS0gYS9QQy9WQzYvcnQuYmF0CisrKyBiL1BDL1ZDNi9ydC5iYXQKQEAgLTEsNDEgKzEsNDEgQEAKLUByZW0gUnVuIFRlc3RzLiAgUnVuIHRoZSByZWdyZXNzaW9uIHRlc3Qgc3VpdGUuDQotQHJlbSBVc2FnZTogIHJ0IFstZF0gWy1PXSBbLXFdIHJlZ3J0ZXN0X2FyZ3MNCi1AcmVtIC1kICAgUnVuIERlYnVnIGJ1aWxkIChweXRob25fZC5leGUpLiAgRWxzZSByZWxlYXNlIGJ1aWxkLg0KLUByZW0gLU8gICBSdW4gcHl0aG9uLmV4ZSBvciBweXRob25fZC5leGUgKHNlZSAtZCkgd2l0aCAtTy4NCi1AcmVtIC1xICAgInF1aWNrIiAtLSBub3JtYWxseSB0aGUgdGVzdHMgYXJlIHJ1biB0d2ljZSwgdGhlIGZpcnN0IHRpbWUNCi1AcmVtICAgICAgYWZ0ZXIgZGVsZXRpbmcgYWxsIHRoZSAucHlbY29dIGZpbGVzIHJlYWNoYWJsZSBmcm9tIExpYi8uDQotQHJlbSAgICAgIC1xIHJ1bnMgdGhlIHRlc3RzIGp1c3Qgb25jZSwgYW5kIHdpdGhvdXQgZGVsZXRpbmcgLnB5W2NvXSBmaWxlcy4NCi1AcmVtIEFsbCBsZWFkaW5nIGluc3RhbmNlcyBvZiB0aGVzZSBzd2l0Y2hlcyBhcmUgc2hpZnRlZCBvZmYsIGFuZA0KLUByZW0gd2hhdGV2ZXIgcmVtYWlucyBpcyBwYXNzZWQgdG8gcmVncnRlc3QucHkuICBGb3IgZXhhbXBsZSwNCi1AcmVtICAgICBydCAtTyAtZCAteCB0ZXN0X3RocmVhZA0KLUByZW0gcnVucw0KLUByZW0gICAgIHB5dGhvbl9kIC1PIC4uLy4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5IC14IHRlc3RfdGhyZWFkDQotQHJlbSB0d2ljZSwgYW5kDQotQHJlbSAgICAgcnQgLXEgLWcgdGVzdF9iaW5hc2NpaQ0KLUByZW0gcnVucw0KLUByZW0gICAgIHB5dGhvbl9kIC4uLy4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5IC1nIHRlc3RfYmluYXNjaWkNCi1AcmVtIHRvIGdlbmVyYXRlIHRoZSBleHBlY3RlZC1vdXRwdXQgZmlsZSBmb3IgYmluYXNjaWkgcXVpY2tseS4NCi1Ac2V0IF9leGU9cHl0aG9uDQotQHNldCBfcW1vZGU9bm8NCi1Ac2V0IF9kYXNoTz0NCi1AZ290byBDaGVja09wdHMNCi06QWdhaW4NCi1Ac2hpZnQNCi06Q2hlY2tPcHRzDQotQGlmICIlMSI9PSItTyIgc2V0IF9kYXNoTz0tTw0KLUBpZiAiJTEiPT0iLU8iIGdvdG8gQWdhaW4NCi1AaWYgIiUxIj09Ii1xIiBzZXQgX3Ftb2RlPXllcw0KLUBpZiAiJTEiPT0iLXEiIGdvdG8gQWdhaW4NCi1AaWYgIiUxIj09Ii1kIiBzZXQgX2V4ZT1weXRob25fZA0KLUBpZiAiJTEiPT0iLWQiIGdvdG8gQWdhaW4NCi1AaWYgIiVfcW1vZGUlIj09InllcyIgZ290byBRbW9kZQ0KLUBlY2hvIERlbGV0aW5nIC5weWMvLnB5byBmaWxlcyAuLi4NCi1AJV9leGUlIHJtcHljLnB5DQotJV9leGUlICVfZGFzaE8lIC1FIC10dCAuLi8uLi9saWIvdGVzdC9yZWdydGVzdC5weSAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQ0KLUBlY2hvIEFib3V0IHRvIHJ1biBhZ2FpbiB3aXRob3V0IGRlbGV0aW5nIC5weWMvLnB5byBmaXJzdDoNCi1AcGF1c2UNCi06UW1vZGUNCi0lX2V4ZSUgJV9kYXNoTyUgLUUgLXR0IC4uLy4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5ICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQotQHNldCBfZXhlPQ0KLUBzZXQgX3Ftb2RlPQ0KLUBzZXQgX2Rhc2hPPQ0KK0ByZW0gUnVuIFRlc3RzLiAgUnVuIHRoZSByZWdyZXNzaW9uIHRlc3Qgc3VpdGUuCitAcmVtIFVzYWdlOiAgcnQgWy1kXSBbLU9dIFstcV0gcmVncnRlc3RfYXJncworQHJlbSAtZCAgIFJ1biBEZWJ1ZyBidWlsZCAocHl0aG9uX2QuZXhlKS4gIEVsc2UgcmVsZWFzZSBidWlsZC4KK0ByZW0gLU8gICBSdW4gcHl0aG9uLmV4ZSBvciBweXRob25fZC5leGUgKHNlZSAtZCkgd2l0aCAtTy4KK0ByZW0gLXEgICAicXVpY2siIC0tIG5vcm1hbGx5IHRoZSB0ZXN0cyBhcmUgcnVuIHR3aWNlLCB0aGUgZmlyc3QgdGltZQorQHJlbSAgICAgIGFmdGVyIGRlbGV0aW5nIGFsbCB0aGUgLnB5W2NvXSBmaWxlcyByZWFjaGFibGUgZnJvbSBMaWIvLgorQHJlbSAgICAgIC1xIHJ1bnMgdGhlIHRlc3RzIGp1c3Qgb25jZSwgYW5kIHdpdGhvdXQgZGVsZXRpbmcgLnB5W2NvXSBmaWxlcy4KK0ByZW0gQWxsIGxlYWRpbmcgaW5zdGFuY2VzIG9mIHRoZXNlIHN3aXRjaGVzIGFyZSBzaGlmdGVkIG9mZiwgYW5kCitAcmVtIHdoYXRldmVyIHJlbWFpbnMgaXMgcGFzc2VkIHRvIHJlZ3J0ZXN0LnB5LiAgRm9yIGV4YW1wbGUsCitAcmVtICAgICBydCAtTyAtZCAteCB0ZXN0X3RocmVhZAorQHJlbSBydW5zCitAcmVtICAgICBweXRob25fZCAtTyAuLi8uLi9saWIvdGVzdC9yZWdydGVzdC5weSAteCB0ZXN0X3RocmVhZAorQHJlbSB0d2ljZSwgYW5kCitAcmVtICAgICBydCAtcSAtZyB0ZXN0X2JpbmFzY2lpCitAcmVtIHJ1bnMKK0ByZW0gICAgIHB5dGhvbl9kIC4uLy4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5IC1nIHRlc3RfYmluYXNjaWkKK0ByZW0gdG8gZ2VuZXJhdGUgdGhlIGV4cGVjdGVkLW91dHB1dCBmaWxlIGZvciBiaW5hc2NpaSBxdWlja2x5LgorQHNldCBfZXhlPXB5dGhvbgorQHNldCBfcW1vZGU9bm8KK0BzZXQgX2Rhc2hPPQorQGdvdG8gQ2hlY2tPcHRzCis6QWdhaW4KK0BzaGlmdAorOkNoZWNrT3B0cworQGlmICIlMSI9PSItTyIgc2V0IF9kYXNoTz0tTworQGlmICIlMSI9PSItTyIgZ290byBBZ2FpbgorQGlmICIlMSI9PSItcSIgc2V0IF9xbW9kZT15ZXMKK0BpZiAiJTEiPT0iLXEiIGdvdG8gQWdhaW4KK0BpZiAiJTEiPT0iLWQiIHNldCBfZXhlPXB5dGhvbl9kCitAaWYgIiUxIj09Ii1kIiBnb3RvIEFnYWluCitAaWYgIiVfcW1vZGUlIj09InllcyIgZ290byBRbW9kZQorQGVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLgorQCVfZXhlJSBybXB5Yy5weQorJV9leGUlICVfZGFzaE8lIC1FIC10dCAuLi8uLi9saWIvdGVzdC9yZWdydGVzdC5weSAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQorQGVjaG8gQWJvdXQgdG8gcnVuIGFnYWluIHdpdGhvdXQgZGVsZXRpbmcgLnB5Yy8ucHlvIGZpcnN0OgorQHBhdXNlCis6UW1vZGUKKyVfZXhlJSAlX2Rhc2hPJSAtRSAtdHQgLi4vLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkKK0BzZXQgX2V4ZT0KK0BzZXQgX3Ftb2RlPQorQHNldCBfZGFzaE89CmRpZmYgLS1naXQgYS9QQy9WUzcuMS9fYnNkZGIudmNwcm9qIGIvUEMvVlM3LjEvX2JzZGRiLnZjcHJvagppbmRleCA4N2U0YmM5Li5iNTM1ZTRjIDEwMDY0NAotLS0gYS9QQy9WUzcuMS9fYnNkZGIudmNwcm9qCisrKyBiL1BDL1ZTNy4xL19ic2RkYi52Y3Byb2oKQEAgLTEsMjU4ICsxLDI1OCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9Il9ic2RkYiINCi0JU2NjUHJvamVjdE5hbWU9Il9ic2RkYiINCi0JU2NjTG9jYWxQYXRoPSIuLiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdcX2JzZGRiIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOy4uXC4uXFBDOyZxdW90Oy4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMiZxdW90OyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlxEZWJ1Z1xsaWJkYjQ0c2QubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19ic2RkYl9kLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IiINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2JzZGRiX2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX2JzZGRiX2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxfYnNkZGIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOy4uXC4uXFBDOyZxdW90Oy4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMiZxdW90OyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcUmVsZWFzZVxsaWJkYjQ0cy5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2JzZGRiLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IiINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2JzZGRiLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19ic2RkYi5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VcX2JzZGRiIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOy4uXC4uXFBDOyZxdW90Oy4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMiZxdW90OyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlxSZWxlYXNlX0lBNjRcbGliZGI0NHMubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19ic2RkYi5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSIiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19ic2RkYi5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fYnNkZGIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfYnNkZGIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7Li5cLi5cUEM7JnF1b3Q7Li5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyJnF1b3Q7Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlxSZWxlYXNlX0FNRDY0XGxpYmRiNDRzLmxpYiBidWZmZXJvdmVyZmxvd1UubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19ic2RkYi5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSIiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19ic2RkYi5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fYnNkZGIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2JzZGRiLmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJfYnNkZGIiCisJU2NjUHJvamVjdE5hbWU9Il9ic2RkYiIKKwlTY2NMb2NhbFBhdGg9Ii4uIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfYnNkZGIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZTsuLlwuLlxQQzsmcXVvdDsuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzImcXVvdDsiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztXSU4zMjtfV0lORE9XUyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcRGVidWdcbGliZGI0NHNkLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIuL19ic2RkYl9kLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19ic2RkYl9kLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL19ic2RkYl9kLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF9ic2RkYiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOy4uXC4uXFBDOyZxdW90Oy4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMiZxdW90OyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXFJlbGVhc2VcbGliZGI0NHMubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vX2JzZGRiLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19ic2RkYi5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fYnNkZGIubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxfYnNkZGIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7Li5cLi5cUEM7JnF1b3Q7Li5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyJnF1b3Q7IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXFJlbGVhc2VfSUE2NFxsaWJkYjQ0cy5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9fYnNkZGIucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2JzZGRiLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL19ic2RkYi5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfYnNkZGIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7Li5cLi5cUEM7JnF1b3Q7Li5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyJnF1b3Q7IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlxSZWxlYXNlX0FNRDY0XGxpYmRiNDRzLmxpYiBidWZmZXJvdmVyZmxvd1UubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vX2JzZGRiLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19ic2RkYi5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fYnNkZGIubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfYnNkZGIuYyI+CisJCTwvRmlsZT4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL19jdHlwZXMudmNwcm9qIGIvUEMvVlM3LjEvX2N0eXBlcy52Y3Byb2oKaW5kZXggYzM1OWQ4OC4uN2RhZDNlMSAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvX2N0eXBlcy52Y3Byb2oKKysrIGIvUEMvVlM3LjEvX2N0eXBlcy52Y3Byb2oKQEAgLTEsMzExICsxLDMxMSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9Il9jdHlwZXMiDQotCVByb2plY3RHVUlEPSJ7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fSINCi0JUm9vdE5hbWVzcGFjZT0iX2N0eXBlcyINCi0JS2V5d29yZD0iV2luMzJQcm9qIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfY3R5cGVzIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDLC4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO19ERUJVRztfV0lORE9XUyINCi0JCQkJTWluaW1hbFJlYnVpbGQ9IkZBTFNFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19jdHlwZXNfZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fY3R5cGVzX2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX2N0eXBlc19kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcX2N0eXBlcyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDLC4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IkZBTFNFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIwIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19jdHlwZXMucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJGQUxTRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19jdHlwZXMucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMCINCi0JCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VcX2N0eXBlcyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIC9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19jdHlwZXMucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJGQUxTRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19jdHlwZXMucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMCINCi0JCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImlhNjQtdGVtcC1yZWxlYXNlXF9jdHlwZXMiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyAvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJT3V0cHV0RmlsZT0iLi9fY3R5cGVzLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iRkFMU0UiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fY3R5cGVzLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjAiDQotCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX2N0eXBlcy5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXHN0Z2RpY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiPg0KLQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJUUlVFIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiLz4NCi0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iPg0KLQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJRXhjbHVkZWRGcm9tQnVpbGQ9IlRSVUUiPg0KLQkJCQk8VG9vbA0KLQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQlFeGNsdWRlZEZyb21CdWlsZD0iVFJVRSI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCUNvbW1hbmRMaW5lPSJhbWQ2NF9tbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7DQotIg0KLQkJCQkJT3V0cHV0cz0iJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCQlFeGNsdWRlZEZyb21CdWlsZD0iVFJVRSI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjEwIgorCU5hbWU9Il9jdHlwZXMiCisJUHJvamVjdEdVSUQ9IntGMjJGNDBGNC1EMzE4LTQwREMtOTZCMy04OERDODFDRTA4OTR9IgorCVJvb3ROYW1lc3BhY2U9Il9jdHlwZXMiCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfY3R5cGVzIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDLC4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7X0RFQlVHO19XSU5ET1dTIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJGQUxTRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSIKKwkJCQlPdXRwdXRGaWxlPSIuL19jdHlwZXNfZC5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19jdHlwZXNfZC5wZGIiCisJCQkJU3ViU3lzdGVtPSIwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzX2QubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcX2N0eXBlcyIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDLC4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iRkFMU0UiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMCIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSIKKwkJCQlPdXRwdXRGaWxlPSIuL19jdHlwZXMucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJGQUxTRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2N0eXBlcy5wZGIiCisJCQkJU3ViU3lzdGVtPSIwIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMCIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXF9jdHlwZXMiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiAvR1MtIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsgL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiCisJCQkJT3V0cHV0RmlsZT0iLi9fY3R5cGVzLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iRkFMU0UiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19jdHlwZXMucGRiIgorCQkJCVN1YlN5c3RlbT0iMCIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjAiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX2N0eXBlcy5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iaWE2NC10ZW1wLXJlbGVhc2VcX2N0eXBlcyIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyAvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSIKKwkJCQlPdXRwdXRGaWxlPSIuL19jdHlwZXMucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJGQUxTRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2N0eXBlcy5wZGIiCisJCQkJU3ViU3lzdGVtPSIwIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMCIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjZmllbGQuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbWFsbG9jX2Nsb3N1cmUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHByZXBfY2lmLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW4zMi5jIj4KKwkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiIKKwkJCQlFeGNsdWRlZEZyb21CdWlsZD0iVFJVRSI+CisJCQkJPFRvb2wKKwkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIvPgorCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIj4KKwkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJUUlVFIj4KKwkJCQk8VG9vbAorCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9IlRSVUUiPgorCQkJCTxUb29sCisJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIj4KKwkJCQk8VG9vbAorCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJQ29tbWFuZExpbmU9ImFtZDY0X21sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsKKyIKKwkJCQkJT3V0cHV0cz0iJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyIvPgorCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIgorCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJUUlVFIj4KKwkJCQk8VG9vbAorCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJPC9GaWxlPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvX2N0eXBlc190ZXN0LnZjcHJvaiBiL1BDL1ZTNy4xL19jdHlwZXNfdGVzdC52Y3Byb2oKaW5kZXggZThlOGEyYy4uYjg1YjVkMiAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvX2N0eXBlc190ZXN0LnZjcHJvagorKysgYi9QQy9WUzcuMS9fY3R5cGVzX3Rlc3QudmNwcm9qCkBAIC0xLDI0MiArMSwyNDIgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJfY3R5cGVzX3Rlc3QiDQotCVByb2plY3RHVUlEPSJ7OENGMzM0RDktNEY4Mi00MkVCLTk3QUYtODM1OTJDNUFGRDJGfSINCi0JS2V5d29yZD0iV2luMzJQcm9qIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfY3R5cGVzX3Rlc3QiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtfREVCVUc7X1dJTkRPV1MiDQotCQkJCU1pbmltYWxSZWJ1aWxkPSJGQUxTRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iLi9fY3R5cGVzX3Rlc3RfZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fY3R5cGVzX3Rlc3RfZC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19jdHlwZXNfdGVzdF9kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcX2N0eXBlc190ZXN0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIwIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iLi9fY3R5cGVzX3Rlc3QucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJGQUxTRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19jdHlwZXNfdGVzdC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIwIg0KLQkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX2N0eXBlc190ZXN0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImlhNjQtdGVtcC1yZWxlYXNlXF9jdHlwZXNfdGVzdCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0iDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO19ERUJVRztfV0lORE9XUyINCi0JCQkJTWluaW1hbFJlYnVpbGQ9IkZBTFNFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJT3V0cHV0RmlsZT0iLi9fY3R5cGVzX3Rlc3RfZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fY3R5cGVzX3Rlc3RfZC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19jdHlwZXNfdGVzdF9kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VcX2N0eXBlc190ZXN0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2N0eXBlc190ZXN0LnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iRkFMU0UiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fY3R5cGVzX3Rlc3QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMCINCi0JCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19jdHlwZXNfdGVzdC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0iX2N0eXBlc190ZXN0IgorCVByb2plY3RHVUlEPSJ7OENGMzM0RDktNEY4Mi00MkVCLTk3QUYtODM1OTJDNUFGRDJGfSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXF9jdHlwZXNfdGVzdCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7X0RFQlVHO19XSU5ET1dTIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJGQUxTRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iLi9fY3R5cGVzX3Rlc3RfZC5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19jdHlwZXNfdGVzdF9kLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL19jdHlwZXNfdGVzdF9kLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF9jdHlwZXNfdGVzdCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjAiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIuL19jdHlwZXNfdGVzdC5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IkZBTFNFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fY3R5cGVzX3Rlc3QucGRiIgorCQkJCVN1YlN5c3RlbT0iMCIKKwkJCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjAiCisJCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX2N0eXBlc190ZXN0LmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJpYTY0LXRlbXAtcmVsZWFzZVxfY3R5cGVzX3Rlc3QiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7X0RFQlVHO19XSU5ET1dTIgorCQkJCU1pbmltYWxSZWJ1aWxkPSJGQUxTRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyIKKwkJCQlPdXRwdXRGaWxlPSIuL19jdHlwZXNfdGVzdF9kLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2N0eXBlc190ZXN0X2QucGRiIgorCQkJCVN1YlN5c3RlbT0iMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX2N0eXBlc190ZXN0X2QubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VcX2N0eXBlc190ZXN0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04iCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIgorCQkJCU91dHB1dEZpbGU9Ii4vX2N0eXBlc190ZXN0LnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iRkFMU0UiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19jdHlwZXNfdGVzdC5wZGIiCisJCQkJU3ViU3lzdGVtPSIwIgorCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMCIKKwkJCQlFbmFibGVDT01EQVRGb2xkaW5nPSIwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fY3R5cGVzX3Rlc3QubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIj4KKwkJPC9GaWxlPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvX2VsZW1lbnR0cmVlLnZjcHJvaiBiL1BDL1ZTNy4xL19lbGVtZW50dHJlZS52Y3Byb2oKaW5kZXggMjFkNWNmZC4uZmUyMjEwMiAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvX2VsZW1lbnR0cmVlLnZjcHJvagorKysgYi9QQy9WUzcuMS9fZWxlbWVudHRyZWUudmNwcm9qCkBAIC0xLDI2MCArMSwyNjAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJfZWxlbWVudHRyZWUiDQotCVByb2plY3RHVUlEPSJ7MTk2NkRERTItNEFCNy00RTRFLUFDQzktQzEyMUU0RDM3RjhFfSINCi0JU2NjUHJvamVjdE5hbWU9Il9lbGVtZW50dHJlZSINCi0JU2NjTG9jYWxQYXRoPSIuLiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdcX2VsZW1lbnR0cmVlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDLC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtfREVCVUc7SEFWRV9FWFBBVF9IO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2VsZW1lbnR0cmVlX2QucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2VsZW1lbnR0cmVlX2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX2VsZW1lbnR0cmVlX2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxfZWxlbWVudHRyZWUiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDLC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2VsZW1lbnR0cmVlLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19lbGVtZW50dHJlZS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fZWxlbWVudHRyZWUubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXF9lbGVtZW50dHJlZSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCU91dHB1dEZpbGU9Ii4vX2VsZW1lbnR0cmVlLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19lbGVtZW50dHJlZS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fZWxlbWVudHRyZWUubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfZWxlbWVudHRyZWUiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJT3V0cHV0RmlsZT0iLi9fZWxlbWVudHRyZWUucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2VsZW1lbnR0cmVlLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19lbGVtZW50dHJlZS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZWxlbWVudHRyZWUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyI+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjEwIgorCU5hbWU9Il9lbGVtZW50dHJlZSIKKwlQcm9qZWN0R1VJRD0iezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0iCisJU2NjUHJvamVjdE5hbWU9Il9lbGVtZW50dHJlZSIKKwlTY2NMb2NhbFBhdGg9Ii4uIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfZWxlbWVudHRyZWUiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtfREVCVUc7SEFWRV9FWFBBVF9IO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIuL19lbGVtZW50dHJlZV9kLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2VsZW1lbnR0cmVlX2QucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX2VsZW1lbnR0cmVlX2QubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcX2VsZW1lbnR0cmVlIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9Ii4vX2VsZW1lbnR0cmVlLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2VsZW1lbnR0cmVlLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL19lbGVtZW50dHJlZS5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi8uIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXF9lbGVtZW50dHJlZSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIgorCQkJCU91dHB1dEZpbGU9Ii4vX2VsZW1lbnR0cmVlLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX2VsZW1lbnR0cmVlLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL19lbGVtZW50dHJlZS5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfZWxlbWVudHRyZWUiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiCisJCQkJT3V0cHV0RmlsZT0iLi9fZWxlbWVudHRyZWUucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fZWxlbWVudHRyZWUucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX2VsZW1lbnR0cmVlLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiPgorCQk8L0ZpbGU+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzcuMS9fbXNpLnZjcHJvaiBiL1BDL1ZTNy4xL19tc2kudmNwcm9qCmluZGV4IGQ0ZmQ0NDcuLmVjYmNiODUgMTAwNjQ0Ci0tLSBhL1BDL1ZTNy4xL19tc2kudmNwcm9qCisrKyBiL1BDL1ZTNy4xL19tc2kudmNwcm9qCkBAIC0xLDI1MiArMSwyNTIgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJfbXNpIg0KLQlQcm9qZWN0R1VJRD0iezJDMEJFRkI5LTcwRTItNEY4MC1BQzVCLTRBQjhFRTAyMzU3NH0iDQotCVNjY1Byb2plY3ROYW1lPSJfbXNpIg0KLQlTY2NMb2NhbFBhdGg9Ii4uXC4uXHBjIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfbXNpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fbXNpX2QucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX21zaV9kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fbXNpX2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxfbXNpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTCINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fbXNpLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fbXNpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fbXNpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxfbXNpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIgYnVmZmVyb3ZlcmZsb3dVLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fbXNpLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fbXNpLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fbXNpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VcX21zaSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTCINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiBidWZmZXJvdmVyZmxvd1UubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19tc2kucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19tc2kucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19tc2kubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXF9tc2kuYyI+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjEwIgorCU5hbWU9Il9tc2kiCisJUHJvamVjdEdVSUQ9InsyQzBCRUZCOS03MEUyLTRGODAtQUM1Qi00QUI4RUUwMjM1NzR9IgorCVNjY1Byb2plY3ROYW1lPSJfbXNpIgorCVNjY0xvY2FsUGF0aD0iLi5cLi5ccGMiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXF9tc2kiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEwiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vX21zaV9kLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX21zaV9kLnBkYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX21zaV9kLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF9tc2kiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEwiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9fbXNpLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fbXNpLnBkYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX21zaS5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXF9tc2kiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIGJ1ZmZlcm92ZXJmbG93VS5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9fbXNpLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fbXNpLnBkYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX21zaS5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfbXNpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiAvR1MtIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTCIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIgYnVmZmVyb3ZlcmZsb3dVLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIuL19tc2kucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19tc2kucGRiIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fbXNpLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXF9tc2kuYyI+CisJCTwvRmlsZT4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL19zb2NrZXQudmNwcm9qIGIvUEMvVlM3LjEvX3NvY2tldC52Y3Byb2oKaW5kZXggZmZlZDhlNC4uMTU3ZDdkOSAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvX3NvY2tldC52Y3Byb2oKKysrIGIvUEMvVlM3LjEvX3NvY2tldC52Y3Byb2oKQEAgLTEsMjU0ICsxLDI1NCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9Il9zb2NrZXQiDQotCVNjY1Byb2plY3ROYW1lPSJfc29ja2V0Ig0KLQlTY2NMb2NhbFBhdGg9Ii4uIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfc29ja2V0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7X0RFQlVHO1dJTjMyO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fc29ja2V0X2QucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NvY2tldF9kLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19zb2NrZXRfZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF9zb2NrZXQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3NvY2tldC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fc29ja2V0LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL19zb2NrZXQubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXF9zb2NrZXQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19zb2NrZXQucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NvY2tldC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc29ja2V0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VcX3NvY2tldCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL19zb2NrZXQucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NvY2tldC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc29ja2V0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0iX3NvY2tldCIKKwlTY2NQcm9qZWN0TmFtZT0iX3NvY2tldCIKKwlTY2NMb2NhbFBhdGg9Ii4uIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfc29ja2V0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztXSU4zMjtfV0lORE9XUyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vX3NvY2tldF9kLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NvY2tldF9kLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL19zb2NrZXRfZC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxfc29ja2V0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9fc29ja2V0LnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NvY2tldC5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc29ja2V0LmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VcX3NvY2tldCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9fc29ja2V0LnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NvY2tldC5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc29ja2V0LmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXF9zb2NrZXQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIuL19zb2NrZXQucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fc29ja2V0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL19zb2NrZXQubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyI+CisJCTwvRmlsZT4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL19zcWxpdGUzLnZjcHJvaiBiL1BDL1ZTNy4xL19zcWxpdGUzLnZjcHJvagppbmRleCA5ZjdkOTkxLi5kZTg2YzZmIDEwMDY0NAotLS0gYS9QQy9WUzcuMS9fc3FsaXRlMy52Y3Byb2oKKysrIGIvUEMvVlM3LjEvX3NxbGl0ZTMudmNwcm9qCkBAIC0xLDI4MyArMSwyODMgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJfc3FsaXRlMyINCi0JUHJvamVjdEdVSUQ9InsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9Ig0KLQlTY2NQcm9qZWN0TmFtZT0iX3NxbGl0ZTMiDQotCVNjY0xvY2FsUGF0aD0iLi4iPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXF9zcWxpdGUzIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOy4uXC4uXFBDOy4uXC4uXC4uXHNxbGl0ZS1zb3VyY2UtMy4zLjQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtfREVCVUc7V0lOMzI7X1dJTkRPV1M7TU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cc3FsaXRlLXNvdXJjZS0zLjMuNFxzcWxpdGUzLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fc3FsaXRlM19kLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IiINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NxbGl0ZTNfZC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc3FsaXRlM19kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcX3NxbGl0ZTMiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOy4uXC4uXFBDOy4uXC4uXC4uXHNxbGl0ZS1zb3VyY2UtMy4zLjQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7TU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXHNxbGl0ZS1zb3VyY2UtMy4zLjRcc3FsaXRlMy5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3NxbGl0ZTMucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fc3FsaXRlMy5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc3FsaXRlMy5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VcX3NxbGl0ZTMiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7Li5cLi5cUEM7Li5cLi5cLi5cc3FsaXRlLXNvdXJjZS0zLjMuNCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40XGlhNjRcc3FsaXRlMy5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3NxbGl0ZTMucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fc3FsaXRlMy5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc3FsaXRlMy5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXF9zcWxpdGUzIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiAvR1MtIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOy4uXC4uXFBDOy4uXC4uXC4uXHNxbGl0ZS1zb3VyY2UtMy4zLjQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7TU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXHNxbGl0ZS1zb3VyY2UtMy4zLjRcYW1kNjRcc3FsaXRlMy5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3NxbGl0ZTMucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fc3FsaXRlMy5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc3FsaXRlMy5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJfc3FsaXRlMyIKKwlQcm9qZWN0R1VJRD0iezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0iCisJU2NjUHJvamVjdE5hbWU9Il9zcWxpdGUzIgorCVNjY0xvY2FsUGF0aD0iLi4iPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXF9zcWxpdGUzIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7Li5cLi5cUEM7Li5cLi5cLi5cc3FsaXRlLXNvdXJjZS0zLjMuNCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7X0RFQlVHO1dJTjMyO19XSU5ET1dTO01PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40XHNxbGl0ZTMubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vX3NxbGl0ZTNfZC5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fc3FsaXRlM19kLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL19zcWxpdGUzX2QubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcX3NxbGl0ZTMiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZTsuLlwuLlxQQzsuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7TU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7IgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cc3FsaXRlLXNvdXJjZS0zLjMuNFxzcWxpdGUzLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIuL19zcWxpdGUzLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL19zcWxpdGUzLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL19zcWxpdGUzLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VcX3NxbGl0ZTMiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7Li5cLi5cUEM7Li5cLi5cLi5cc3FsaXRlLXNvdXJjZS0zLjMuNCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO01PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40XGlhNjRcc3FsaXRlMy5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9fc3FsaXRlMy5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fc3FsaXRlMy5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fc3FsaXRlMy5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfc3FsaXRlMyIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZTsuLlwuLlxQQzsuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7TU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7IgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxzcWxpdGUtc291cmNlLTMuMy40XGFtZDY0XHNxbGl0ZTMubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vX3NxbGl0ZTMucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3NxbGl0ZTMucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3NxbGl0ZTMubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiPgorCQk8L0ZpbGU+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzcuMS9fc3NsLnZjcHJvaiBiL1BDL1ZTNy4xL19zc2wudmNwcm9qCmluZGV4IDU2ZDY1ZmUuLjc4ZWFkZDIgMTAwNjQ0Ci0tLSBhL1BDL1ZTNy4xL19zc2wudmNwcm9qCisrKyBiL1BDL1ZTNy4xL19zc2wudmNwcm9qCkBAIC0xLDg0ICsxLDg0IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0iX3NzbCINCi0JUm9vdE5hbWVzcGFjZT0iX3NzbCINCi0JU2NjUHJvamVjdE5hbWU9IiINCi0JU2NjTG9jYWxQYXRoPSIiDQotCUtleXdvcmQ9Ik1ha2VGaWxlUHJvaiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF9zc2wiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iYnVpbGRfc3NsLmJhdCAkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJidWlsZF9zc2wuYmF0ICQoQ29uZmlndXJhdGlvbk5hbWUpIC1hIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJlY2hvIE5vdGhpbmcgdG8gZG8iDQotCQkJCU91dHB1dD0iX3NzbC5weWQiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXF9zc2wiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iYnVpbGRfc3NsLmJhdCAkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJidWlsZF9zc2wuYmF0ICQoQ29uZmlndXJhdGlvbk5hbWUpIC1hIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJlY2hvIE5vdGhpbmcgdG8gZG8iDQotCQkJCU91dHB1dD0iX3NzbF9kLnB5ZCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VcX3NzbCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMCINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTk1ha2VUb29sIg0KLQkJCQlCdWlsZENvbW1hbmRMaW5lPSJidWlsZF9zc2wuYmF0ICQoQ29uZmlndXJhdGlvbk5hbWUpIg0KLQkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImJ1aWxkX3NzbC5iYXQgJChDb25maWd1cmF0aW9uTmFtZSkgLWEiDQotCQkJCUNsZWFuQ29tbWFuZExpbmU9ImVjaG8gTm90aGluZyB0byBkbyINCi0JCQkJT3V0cHV0PSJfc3NsLnB5ZCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXF9zc2wiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjAiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ05NYWtlVG9vbCINCi0JCQkJQnVpbGRDb21tYW5kTGluZT0iYnVpbGRfc3NsLmJhdCAkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQkJUmVCdWlsZENvbW1hbmRMaW5lPSJidWlsZF9zc2wuYmF0ICQoQ29uZmlndXJhdGlvbk5hbWUpIC1hIg0KLQkJCQlDbGVhbkNvbW1hbmRMaW5lPSJlY2hvIE5vdGhpbmcgdG8gZG8iDQotCQkJCU91dHB1dD0iX3NzbC5weWQiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NzbC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oYXNob3BlbnNzbC5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0iX3NzbCIKKwlSb290TmFtZXNwYWNlPSJfc3NsIgorCVNjY1Byb2plY3ROYW1lPSIiCisJU2NjTG9jYWxQYXRoPSIiCisJS2V5d29yZD0iTWFrZUZpbGVQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcX3NzbCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ05NYWtlVG9vbCIKKwkJCQlCdWlsZENvbW1hbmRMaW5lPSJidWlsZF9zc2wuYmF0ICQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iYnVpbGRfc3NsLmJhdCAkKENvbmZpZ3VyYXRpb25OYW1lKSAtYSIKKwkJCQlDbGVhbkNvbW1hbmRMaW5lPSJlY2hvIE5vdGhpbmcgdG8gZG8iCisJCQkJT3V0cHV0PSJfc3NsLnB5ZCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXF9zc2wiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMCIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNOTWFrZVRvb2wiCisJCQkJQnVpbGRDb21tYW5kTGluZT0iYnVpbGRfc3NsLmJhdCAkKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImJ1aWxkX3NzbC5iYXQgJChDb25maWd1cmF0aW9uTmFtZSkgLWEiCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iZWNobyBOb3RoaW5nIHRvIGRvIgorCQkJCU91dHB1dD0iX3NzbF9kLnB5ZCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi8uIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXF9zc2wiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMCIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNOTWFrZVRvb2wiCisJCQkJQnVpbGRDb21tYW5kTGluZT0iYnVpbGRfc3NsLmJhdCAkKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCQlSZUJ1aWxkQ29tbWFuZExpbmU9ImJ1aWxkX3NzbC5iYXQgJChDb25maWd1cmF0aW9uTmFtZSkgLWEiCisJCQkJQ2xlYW5Db21tYW5kTGluZT0iZWNobyBOb3RoaW5nIHRvIGRvIgorCQkJCU91dHB1dD0iX3NzbC5weWQiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VcX3NzbCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIwIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ05NYWtlVG9vbCIKKwkJCQlCdWlsZENvbW1hbmRMaW5lPSJidWlsZF9zc2wuYmF0ICQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJCVJlQnVpbGRDb21tYW5kTGluZT0iYnVpbGRfc3NsLmJhdCAkKENvbmZpZ3VyYXRpb25OYW1lKSAtYSIKKwkJCQlDbGVhbkNvbW1hbmRMaW5lPSJlY2hvIE5vdGhpbmcgdG8gZG8iCisJCQkJT3V0cHV0PSJfc3NsLnB5ZCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zc2wuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyI+CisJCTwvRmlsZT4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL190ZXN0Y2FwaS52Y3Byb2ogYi9QQy9WUzcuMS9fdGVzdGNhcGkudmNwcm9qCmluZGV4IDAxOTc4NDIuLjUyNjE1OTcgMTAwNjQ0Ci0tLSBhL1BDL1ZTNy4xL190ZXN0Y2FwaS52Y3Byb2oKKysrIGIvUEMvVlM3LjEvX3Rlc3RjYXBpLnZjcHJvagpAQCAtMSwyNDcgKzEsMjQ3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0iX3Rlc3RjYXBpIg0KLQlTY2NQcm9qZWN0TmFtZT0iX3Rlc3RjYXBpIg0KLQlTY2NMb2NhbFBhdGg9Ii4uIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcX3Rlc3RjYXBpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iLi9fdGVzdGNhcGkucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190ZXN0Y2FwaS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3Rlc3RjYXBpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfdGVzdGNhcGkiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TU1BUF9FWFBPUlRTIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIuL190ZXN0Y2FwaV9kLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190ZXN0Y2FwaV9kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fdGVzdGNhcGlfZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VcX3Rlc3RjYXBpIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO01NQVBfRVhQT1JUUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3Rlc3RjYXBpLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fdGVzdGNhcGkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL190ZXN0Y2FwaS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXF90ZXN0Y2FwaSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJT3V0cHV0RmlsZT0iLi9fdGVzdGNhcGkucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190ZXN0Y2FwaS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3Rlc3RjYXBpLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0iX3Rlc3RjYXBpIgorCVNjY1Byb2plY3ROYW1lPSJfdGVzdGNhcGkiCisJU2NjTG9jYWxQYXRoPSIuLiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF90ZXN0Y2FwaSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iLi9fdGVzdGNhcGkucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190ZXN0Y2FwaS5wZGIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL190ZXN0Y2FwaS5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXF90ZXN0Y2FwaSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9Ii4vX3Rlc3RjYXBpX2QucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fdGVzdGNhcGlfZC5wZGIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL190ZXN0Y2FwaV9kLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VcX3Rlc3RjYXBpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiCisJCQkJT3V0cHV0RmlsZT0iLi9fdGVzdGNhcGkucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190ZXN0Y2FwaS5wZGIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL190ZXN0Y2FwaS5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfdGVzdGNhcGkiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO01NQVBfRVhQT1JUUyIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiCisJCQkJT3V0cHV0RmlsZT0iLi9fdGVzdGNhcGkucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190ZXN0Y2FwaS5wZGIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL190ZXN0Y2FwaS5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIj4KKwkJPC9GaWxlPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvX3RraW50ZXIudmNwcm9qIGIvUEMvVlM3LjEvX3RraW50ZXIudmNwcm9qCmluZGV4IGZlMTZlODUuLjA3ZmM2YzMgMTAwNjQ0Ci0tLSBhL1BDL1ZTNy4xL190a2ludGVyLnZjcHJvagorKysgYi9QQy9WUzcuMS9fdGtpbnRlci52Y3Byb2oKQEAgLTEsMjYxICsxLDI2MSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9Il90a2ludGVyIg0KLQlTY2NQcm9qZWN0TmFtZT0iX3RraW50ZXIiDQotCVNjY0xvY2FsUGF0aD0iLi5cLi5cLi5cLi4iPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxfdGtpbnRlciINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHRjbHRrXGluY2x1ZGUsLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztXSVRIX0FQUElOSVQiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cdGNsdGtcbGliXHRrODQubGliIC4uXC4uXC4uXHRjbHRrXGxpYlx0Y2w4NC5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vX3RraW50ZXIucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fdGtpbnRlci5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxOTAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fdGtpbnRlci5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdcX3RraW50ZXIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHRjbHRrXGluY2x1ZGUsLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztXSU4zMjtfV0lORE9XUztXSVRIX0FQUElOSVQiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx0Y2x0a1xsaWJcdGs4NC5saWIgLi5cLi5cLi5cdGNsdGtcbGliXHRjbDg0LmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fdGtpbnRlcl9kLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9IiINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3RraW50ZXJfZC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxOTAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fdGtpbnRlcl9kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLi8uIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxfdGtpbnRlciINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cdGNsdGtcaW5jbHVkZSwuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1dJVEhfQVBQSU5JVCINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXHRjbHRrXGxpYlx0azg0LmxpYiAuLlwuLlwuLlx0Y2x0a1xsaWJcdGNsODQubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL190a2ludGVyLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9IiINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3RraW50ZXIucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTkwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3RraW50ZXIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfdGtpbnRlciINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cdGNsdGtcaW5jbHVkZSwuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1dJVEhfQVBQSU5JVCINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx0Y2x0a1xsaWJcdGs4NC5saWIgLi5cLi5cLi5cdGNsdGtcbGliXHRjbDg0LmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9fdGtpbnRlci5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190a2ludGVyLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE5MDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL190a2ludGVyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90a2ludGVyLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGthcHBpbml0LmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJfdGtpbnRlciIKKwlTY2NQcm9qZWN0TmFtZT0iX3RraW50ZXIiCisJU2NjTG9jYWxQYXRoPSIuLlwuLlwuLlwuLiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXF90a2ludGVyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHRjbHRrXGluY2x1ZGUsLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1dJVEhfQVBQSU5JVCIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXHRjbHRrXGxpYlx0azg0LmxpYiAuLlwuLlwuLlx0Y2x0a1xsaWJcdGNsODQubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vX3RraW50ZXIucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vX3RraW50ZXIucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE5MDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3RraW50ZXIubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xfdGtpbnRlciIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlx0Y2x0a1xpbmNsdWRlLC4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztXSU4zMjtfV0lORE9XUztXSVRIX0FQUElOSVQiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cdGNsdGtcbGliXHRrODQubGliIC4uXC4uXC4uXHRjbHRrXGxpYlx0Y2w4NC5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9fdGtpbnRlcl9kLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9IiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190a2ludGVyX2QucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE5MDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vX3RraW50ZXJfZC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi8uIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXF90a2ludGVyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlx0Y2x0a1xpbmNsdWRlLC4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztXSVRIX0FQUElOSVQiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cdGNsdGtcbGliXHRrODQubGliIC4uXC4uXC4uXHRjbHRrXGxpYlx0Y2w4NC5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9fdGtpbnRlci5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9fdGtpbnRlci5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTkwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9fdGtpbnRlci5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxfdGtpbnRlciIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cdGNsdGtcaW5jbHVkZSwuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7V0lUSF9BUFBJTklUIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx0Y2x0a1xsaWJcdGs4NC5saWIgLi5cLi5cLi5cdGNsdGtcbGliXHRjbDg0LmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIuL190a2ludGVyLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9IiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL190a2ludGVyLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxOTAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL190a2ludGVyLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RraW50ZXIuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0a2FwcGluaXQuYyI+CisJCTwvRmlsZT4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL2FtZDY0X21sNjQuYmF0IGIvUEMvVlM3LjEvYW1kNjRfbWw2NC5iYXQKaW5kZXggYWE3NzAxNy4uZmE5YWNmMSAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvYW1kNjRfbWw2NC5iYXQKKysrIGIvUEMvVlM3LjEvYW1kNjRfbWw2NC5iYXQKQEAgLTEsMTcgKzEsMTcgQEAKLUBlY2hvIG9mZg0KLXJlbSBUcnkgdG8gZmluZCB0aGUgQU1ENjQgYXNzZW1ibGVyIGFuZCBjYWxsIGl0IHdpdGggdGhlIHN1cHBsaWVkIGFyZ3VtZW50cy4NCi0NCi1zZXQgTUxFWEU9TWljcm9zb2Z0IFBsYXRmb3JtIFNES1xCaW5cV2luNjRceDg2XEFNRDY0XG1sNjQuRVhFDQotDQotcmVtIEZvciB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNlZSBhbHNvDQotcmVtIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vbGlicmFyeS9lbi11cy93aW42NC93aW42NC93b3c2NF9pbXBsZW1lbnRhdGlvbl9kZXRhaWxzLmFzcA0KLQ0KLWlmIGV4aXN0ICIlUHJvZ3JhbUZpbGVzJVwlTUxFWEUlIiAoDQotICBzZXQgTUw2ND0iJVByb2dyYW1GaWxlcyVcJU1MRVhFJSINCi0pIGVsc2UgaWYgZXhpc3QgIiVQcm9ncmFtVzY0MzIlXCVNTEVYRSUiICgNCi0gIHNldCBNTDY0PSIlUHJvZ3JhbVc2NDMyJVwlTUxFWEUlIg0KLSkgZWxzZSAoDQotICBzZXQgTUw2ND1tbDY0LmV4ZQ0KLSkNCi0NCi0lTUw2NCUgJSoNCitAZWNobyBvZmYKK3JlbSBUcnkgdG8gZmluZCB0aGUgQU1ENjQgYXNzZW1ibGVyIGFuZCBjYWxsIGl0IHdpdGggdGhlIHN1cHBsaWVkIGFyZ3VtZW50cy4KKworc2V0IE1MRVhFPU1pY3Jvc29mdCBQbGF0Zm9ybSBTREtcQmluXFdpbjY0XHg4NlxBTUQ2NFxtbDY0LkVYRQorCityZW0gRm9yIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2VlIGFsc28KK3JlbSBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2xpYnJhcnkvZW4tdXMvd2luNjQvd2luNjQvd293NjRfaW1wbGVtZW50YXRpb25fZGV0YWlscy5hc3AKKworaWYgZXhpc3QgIiVQcm9ncmFtRmlsZXMlXCVNTEVYRSUiICgKKyAgc2V0IE1MNjQ9IiVQcm9ncmFtRmlsZXMlXCVNTEVYRSUiCispIGVsc2UgaWYgZXhpc3QgIiVQcm9ncmFtVzY0MzIlXCVNTEVYRSUiICgKKyAgc2V0IE1MNjQ9IiVQcm9ncmFtVzY0MzIlXCVNTEVYRSUiCispIGVsc2UgKAorICBzZXQgTUw2ND1tbDY0LmV4ZQorKQorCislTUw2NCUgJSoKZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL2J1aWxkX3NzbC5iYXQgYi9QQy9WUzcuMS9idWlsZF9zc2wuYmF0CmluZGV4IDlhYWQ0NDEuLmY2YmUzYzAgMTAwNjQ0Ci0tLSBhL1BDL1ZTNy4xL2J1aWxkX3NzbC5iYXQKKysrIGIvUEMvVlM3LjEvYnVpbGRfc3NsLmJhdApAQCAtMSwxMiArMSwxMiBAQAotaWYgIiUxIiA9PSAiUmVsZWFzZUFNRDY0IiBjYWxsICIlTVNTZGslXFNldEVudiIgL1hQNjQgL1JFVEFJTA0KLQ0KLUBlY2hvIG9mZg0KLWlmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgNCi0gIGlmICUxIEVRVSBEZWJ1ZyAoDQotICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUNCi0gICkgRUxTRSAoDQotICAgIHNldCBIT1NUX1BZVEhPTj1weXRob24uZXhlDQotICApDQotKQ0KLSVIT1NUX1BZVEhPTiUgYnVpbGRfc3NsLnB5ICUxICUyDQotDQoraWYgIiUxIiA9PSAiUmVsZWFzZUFNRDY0IiBjYWxsICIlTVNTZGslXFNldEVudiIgL1hQNjQgL1JFVEFJTAorCitAZWNobyBvZmYKK2lmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgKKyAgaWYgJTEgRVFVIERlYnVnICgKKyAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uX2QuZXhlCisgICkgRUxTRSAoCisgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUKKyAgKQorKQorJUhPU1RfUFlUSE9OJSBidWlsZF9zc2wucHkgJTEgJTIKKwpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvYnoyLnZjcHJvaiBiL1BDL1ZTNy4xL2J6Mi52Y3Byb2oKaW5kZXggMGIwMDVhMS4uYmRkMDg1ZCAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvYnoyLnZjcHJvagorKysgYi9QQy9WUzcuMS9iejIudmNwcm9qCkBAIC0xLDI3MSArMSwyNzEgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJiejIiDQotCVJvb3ROYW1lc3BhY2U9ImJ6MiINCi0JU2NjUHJvamVjdE5hbWU9ImJ6MiINCi0JU2NjTG9jYWxQYXRoPSIuLiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdcYnoyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDLC4uXC4uXC4uXGJ6aXAyLTEuMC4zIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7X0RFQlVHO1dJTjMyO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cYnppcDItMS4wLjNcbGliYnoyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi9iejJfZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJtc3ZjcnQsbGliYyINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vYnoyX2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vYnoyX2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkIC4uXC4uXC4uXGJ6aXAyLTEuMC4zDQotbm1ha2UgL25vbG9nbyAvZiBtYWtlZmlsZS5tc2MNCi0iLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcYnoyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlwuLlxiemlwMi0xLjAuMyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxiemlwMi0xLjAuM1xsaWJiejIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL2J6Mi5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9iejIucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vYnoyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAuLlwuLlwuLlxiemlwMi0xLjAuMw0KLW5tYWtlIC9ub2xvZ28gL2YgbWFrZWZpbGUubXNjIGxpYg0KLSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXGJ6MiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlwuLlxiemlwMi0xLjAuMyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXGJ6aXAyLTEuMC4zXGxpYmJ6Mi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vYnoyLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL2J6Mi5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9iejIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkIC4uXC4uXC4uXGJ6aXAyLTEuMC4zDQotbm1ha2UgL25vbG9nbyAvZiBtYWtlZmlsZS5tc2MgbGliDQotIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXGJ6MiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlwuLlxiemlwMi0xLjAuMyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxiemlwMi0xLjAuM1xsaWJiejIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL2J6Mi5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9iejIucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vYnoyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAuLlwuLlwuLlxiemlwMi0xLjAuMw0KLW5tYWtlIC9ub2xvZ28gL2YgbWFrZWZpbGUubXNjIGxpYg0KLSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYnoybW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJiejIiCisJUm9vdE5hbWVzcGFjZT0iYnoyIgorCVNjY1Byb2plY3ROYW1lPSJiejIiCisJU2NjTG9jYWxQYXRoPSIuLiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdcYnoyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cLi5cYnppcDItMS4wLjMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztXSU4zMjtfV0lORE9XUyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlxiemlwMi0xLjAuM1xsaWJiejIubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vYnoyX2QucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibXN2Y3J0LGxpYmMiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9iejJfZC5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9iejJfZC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAuLlwuLlwuLlxiemlwMi0xLjAuMworbm1ha2UgL25vbG9nbyAvZiBtYWtlZmlsZS5tc2MKKyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcYnoyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cLi5cYnppcDItMS4wLjMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXGJ6aXAyLTEuMC4zXGxpYmJ6Mi5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9iejIucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL2J6Mi5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9iejIubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgLi5cLi5cLi5cYnppcDItMS4wLjMKK25tYWtlIC9ub2xvZ28gL2YgbWFrZWZpbGUubXNjIGxpYgorIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi8uIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXGJ6MiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlwuLlxiemlwMi0xLjAuMyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXGJ6aXAyLTEuMC4zXGxpYmJ6Mi5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9iejIucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL2J6Mi5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9iejIubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgLi5cLi5cLi5cYnppcDItMS4wLjMKK25tYWtlIC9ub2xvZ28gL2YgbWFrZWZpbGUubXNjIGxpYgorIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxiejIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cLi5cYnppcDItMS4wLjMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cYnppcDItMS4wLjNcbGliYnoyLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIuL2J6Mi5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vYnoyLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL2J6Mi5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAuLlwuLlwuLlxiemlwMi0xLjAuMworbm1ha2UgL25vbG9nbyAvZiBtYWtlZmlsZS5tc2MgbGliCisiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYnoybW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzcuMS9tYWtlX2J1aWxkaW5mby52Y3Byb2ogYi9QQy9WUzcuMS9tYWtlX2J1aWxkaW5mby52Y3Byb2oKaW5kZXggZDBjOGE1ZC4uYzQ5ZjBmZCAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvbWFrZV9idWlsZGluZm8udmNwcm9qCisrKyBiL1BDL1ZTNy4xL21ha2VfYnVpbGRpbmZvLnZjcHJvagpAQCAtMSwxMjIgKzEsMTIyIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dzLTEyNTAiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0ibWFrZV9idWlsZGluZm8iDQotCVByb2plY3RHVUlEPSJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCi0JS2V5d29yZD0iV2luMzJQcm9qIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxtYWtlX2J1aWxkaW5mbyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCi0JCQkJTWluaW1hbFJlYnVpbGQ9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIwIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iNCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvbWFrZV9idWlsZGluZm8uZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjIiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL21ha2VfYnVpbGRpbmZvLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcbWFrZV9idWlsZGluZm8iDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iNCINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9tYWtlX2J1aWxkaW5mby5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCU9wdGltaXplUmVmZXJlbmNlcz0iMiINCi0JCQkJRW5hYmxlQ09NREFURm9sZGluZz0iMiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSI+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuXG1ha2VfYnVpbGRpbmZvLmMiPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dzLTEyNTAiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJtYWtlX2J1aWxkaW5mbyIKKwlQcm9qZWN0R1VJRD0ie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iCisJS2V5d29yZD0iV2luMzJQcm9qIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxtYWtlX2J1aWxkaW5mbyIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlNaW5pbWFsUmVidWlsZD0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSI0Ii8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvbWFrZV9idWlsZGluZm8uZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMiIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpL21ha2VfYnVpbGRpbmZvLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VcbWFrZV9idWlsZGluZm8iCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iNCIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9tYWtlX2J1aWxkaW5mby5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQkJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii5cbWFrZV9idWlsZGluZm8uYyI+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2ogYi9QQy9WUzcuMS9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagppbmRleCBhM2FkMTIxLi41YzZjOWM1IDEwMDY0NAotLS0gYS9QQy9WUzcuMS9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagorKysgYi9QQy9WUzcuMS9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagpAQCAtMSwxNDAgKzEsMTQwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0ibWFrZV92ZXJzaW9uaW5mbyINCi0JUm9vdE5hbWVzcGFjZT0ibWFrZV92ZXJzaW9uaW5mbyINCi0JU2NjUHJvamVjdE5hbWU9Im1ha2VfdmVyc2lvbmluZm8iDQotCVNjY0xvY2FsUGF0aD0iLi4iPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxtYWtlX3ZlcnNpb25pbmZvIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJQ29tbWFuZExpbmU9Ii5cbWFrZV92ZXJzaW9uaW5mby5leGUgJmd0Oy4uXC4uXFBDXHB5dGhvbm50X3JjLmgNCi0iDQotCQkJCU91dHB1dHM9Ii4uXC4uXFBDXHB5dGhvbm50X3JjLmgiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii5cLi9tYWtlX3ZlcnNpb25pbmZvLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL21ha2VfdmVyc2lvbmluZm8ucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iJChUYXJnZXRGaWxlTmFtZSkgJmd0OyAuLlwuLlxQQ1xweXRob25fbnQuaCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xtYWtlX3ZlcnNpb25pbmZvIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iLlxtYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsuLlwuLlxQQ1xweXRob25udF9yY19kLmgNCi0iDQotCQkJCU91dHB1dHM9Ii4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iLi9tYWtlX3ZlcnNpb25pbmZvX2QuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vbWFrZV92ZXJzaW9uaW5mb19kLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiQoVGFyZ2V0RmlsZU5hbWUpICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJtYWtlX3ZlcnNpb25pbmZvIgorCVJvb3ROYW1lc3BhY2U9Im1ha2VfdmVyc2lvbmluZm8iCisJU2NjUHJvamVjdE5hbWU9Im1ha2VfdmVyc2lvbmluZm8iCisJU2NjTG9jYWxQYXRoPSIuLiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXG1ha2VfdmVyc2lvbmluZm8iCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQlDb21tYW5kTGluZT0iLlxtYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7Li5cLi5cUENccHl0aG9ubnRfcmMuaAorIgorCQkJCU91dHB1dHM9Ii4uXC4uXFBDXHB5dGhvbm50X3JjLmgiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9Ii5cLi9tYWtlX3ZlcnNpb25pbmZvLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vbWFrZV92ZXJzaW9uaW5mby5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iJChUYXJnZXRGaWxlTmFtZSkgJmd0OyAuLlwuLlxQQ1xweXRob25fbnQuaCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xtYWtlX3ZlcnNpb25pbmZvIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSIuXG1ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0Oy4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaAorIgorCQkJCU91dHB1dHM9Ii4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iLi9tYWtlX3ZlcnNpb25pbmZvX2QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9tYWtlX3ZlcnNpb25pbmZvX2QucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiQoVGFyZ2V0RmlsZU5hbWUpICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbWFrZV92ZXJzaW9uaW5mby5jIj4KKwkJPC9GaWxlPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcGNidWlsZC5zbG4gYi9QQy9WUzcuMS9wY2J1aWxkLnNsbgppbmRleCAzMzZkM2Y3Li5lNDRhMzllIDEwMDY0NAotLS0gYS9QQy9WUzcuMS9wY2J1aWxkLnNsbgorKysgYi9QQy9WUzcuMS9wY2J1aWxkLnNsbgpAQCAtMSwyODggKzEsMjg4IEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA4LjAwDQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfYnNkZGIiLCAiX2JzZGRiLnZjcHJvaiIsICJ7RTFEQkIyMjAtRDY0Qi00MjNELUE1NDUtNTM5QTU1QUE3RkUyfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zb2NrZXQiLCAiX3NvY2tldC52Y3Byb2oiLCAiezMyNEY2NkMyLTQ0RDAtNEQ1MC1COTc5LUY5REFFN0ZEMzZEQn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3NsIiwgIl9zc2wudmNwcm9qIiwgIns4RTg1QkE1NC04QTQ3LTRDOEItQjcyRS04RTE3NTc5Q0M2RDd9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSA9IHtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSA9IHtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RjYXBpIiwgIl90ZXN0Y2FwaS52Y3Byb2oiLCAiezU5Q0JGNDc0LTlFMDYtNEM1MC05MTQyLUM0NEExMThCQjQ0N30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3Byb2oiLCAiezVCNTFERkY3LTVEQzAtNDFGOC04NzkxLUE0QUI3MTE0QTE1MX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiejIiLCAiYnoyLnZjcHJvaiIsICJ7QUM1NTc3ODgtNjM1NC00M0Y3LUJFMDUtQzlDOEM1OUEzNDRBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfdmVyc2lvbmluZm8iLCAibWFrZV92ZXJzaW9uaW5mby52Y3Byb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWV4cGF0IiwgInB5ZXhwYXQudmNwcm9qIiwgIns3RTU1MTM5My0zQzQzLTQ3RjgtOUYzRi01QkMzNjhBNkM0ODd9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uIiwgInB5dGhvbi52Y3Byb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob25jb3JlIiwgInB5dGhvbmNvcmUudmNwcm9qIiwgIntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSA9IHtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9DQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSA9IHtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjcHJvaiIsICJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNlbGVjdCIsICJzZWxlY3QudmNwcm9qIiwgIns5NzIzOUE1Ni1EQkMwLTQxRDItQkMxNC1DODdEOUI5N0Q2M0J9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidW5pY29kZWRhdGEiLCAidW5pY29kZWRhdGEudmNwcm9qIiwgIntGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmNwcm9qIiwgIntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luc291bmQiLCAid2luc291bmQudmNwcm9qIiwgIns1MUYzNUZBRS1GQjkyLTRCMkMtOTE4Ny0xNTQyQzA2NUFENzd9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2VsZW1lbnR0cmVlIiwgIl9lbGVtZW50dHJlZS52Y3Byb2oiLCAiezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX2J1aWxkaW5mbyIsICJtYWtlX2J1aWxkaW5mby52Y3Byb2oiLCAie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXNpIiwgIl9tc2kudmNwcm9qIiwgInsyQzBCRUZCOS03MEUyLTRGODAtQUM1Qi00QUI4RUUwMjM1NzR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlcyIsICJfY3R5cGVzLnZjcHJvaiIsICJ7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXNfdGVzdCIsICJfY3R5cGVzX3Rlc3QudmNwcm9qIiwgIns4Q0YzMzREOS00RjgyLTQyRUItOTdBRi04MzU5MkM1QUZEMkZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fSA9IHtGMjJGNDBGNC1EMzE4LTQwREMtOTZCMy04OERDODFDRTA4OTR9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmNwcm9qIiwgInsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLUdsb2JhbA0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbg0KLQkJRGVidWcgPSBEZWJ1Zw0KLQkJUmVsZWFzZSA9IFJlbGVhc2UNCi0JCVJlbGVhc2VBTUQ2NCA9IFJlbGVhc2VBTUQ2NA0KLQkJUmVsZWFzZUl0YW5pdW0gPSBSZWxlYXNlSXRhbml1bQ0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uDQotCQl7RTFEQkIyMjAtRDY0Qi00MjNELUE1NDUtNTM5QTU1QUE3RkUyfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0UxREJCMjIwLUQ2NEItNDIzRC1BNTQ1LTUzOUE1NUFBN0ZFMn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RTFEQkIyMjAtRDY0Qi00MjNELUE1NDUtNTM5QTU1QUE3RkUyfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFMURCQjIyMC1ENjRCLTQyM0QtQTU0NS01MzlBNTVBQTdGRTJ9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtFMURCQjIyMC1ENjRCLTQyM0QtQTU0NS01MzlBNTVBQTdGRTJ9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXtFMURCQjIyMC1ENjRCLTQyM0QtQTU0NS01MzlBNTVBQTdGRTJ9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7RTFEQkIyMjAtRDY0Qi00MjNELUE1NDUtNTM5QTU1QUE3RkUyfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0UxREJCMjIwLUQ2NEItNDIzRC1BNTQ1LTUzOUE1NUFBN0ZFMn0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezMyNEY2NkMyLTQ0RDAtNEQ1MC1COTc5LUY5REFFN0ZEMzZEQn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXszMjRGNjZDMi00NEQwLTRENTAtQjk3OS1GOURBRTdGRDM2REJ9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXszMjRGNjZDMi00NEQwLTRENTAtQjk3OS1GOURBRTdGRDM2REJ9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXszMjRGNjZDMi00NEQwLTRENTAtQjk3OS1GOURBRTdGRDM2REJ9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezMyNEY2NkMyLTQ0RDAtNEQ1MC1COTc5LUY5REFFN0ZEMzZEQn0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7OEU4NUJBNTQtOEE0Ny00QzhCLUI3MkUtOEUxNzU3OUNDNkQ3fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezhFODVCQTU0LThBNDctNEM4Qi1CNzJFLThFMTc1NzlDQzZEN30uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7OEU4NUJBNTQtOEE0Ny00QzhCLUI3MkUtOEUxNzU3OUNDNkQ3fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs4RTg1QkE1NC04QTQ3LTRDOEItQjcyRS04RTE3NTc5Q0M2RDd9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs4RTg1QkE1NC04QTQ3LTRDOEItQjcyRS04RTE3NTc5Q0M2RDd9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXs4RTg1QkE1NC04QTQ3LTRDOEItQjcyRS04RTE3NTc5Q0M2RDd9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7OEU4NUJBNTQtOEE0Ny00QzhCLUI3MkUtOEUxNzU3OUNDNkQ3fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezhFODVCQTU0LThBNDctNEM4Qi1CNzJFLThFMTc1NzlDQzZEN30uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7NTlDQkY0NzQtOUUwNi00QzUwLTkxNDItQzQ0QTExOEJCNDQ3fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezU5Q0JGNDc0LTlFMDYtNEM1MC05MTQyLUM0NEExMThCQjQ0N30uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NTlDQkY0NzQtOUUwNi00QzUwLTkxNDItQzQ0QTExOEJCNDQ3fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXs1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7NTlDQkY0NzQtOUUwNi00QzUwLTkxNDItQzQ0QTExOEJCNDQ3fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezU5Q0JGNDc0LTlFMDYtNEM1MC05MTQyLUM0NEExMThCQjQ0N30uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezVCNTFERkY3LTVEQzAtNDFGOC04NzkxLUE0QUI3MTE0QTE1MX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs1QjUxREZGNy01REMwLTQxRjgtODc5MS1BNEFCNzExNEExNTF9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs1QjUxREZGNy01REMwLTQxRjgtODc5MS1BNEFCNzExNEExNTF9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXs1QjUxREZGNy01REMwLTQxRjgtODc5MS1BNEFCNzExNEExNTF9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezVCNTFERkY3LTVEQzAtNDFGOC04NzkxLUE0QUI3MTE0QTE1MX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7QUM1NTc3ODgtNjM1NC00M0Y3LUJFMDUtQzlDOEM1OUEzNDRBfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QUM1NTc3ODgtNjM1NC00M0Y3LUJFMDUtQzlDOEM1OUEzNDRBfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtBQzU1Nzc4OC02MzU0LTQzRjctQkUwNS1DOUM4QzU5QTM0NEF9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtBQzU1Nzc4OC02MzU0LTQzRjctQkUwNS1DOUM4QzU5QTM0NEF9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXtBQzU1Nzc4OC02MzU0LTQzRjctQkUwNS1DOUM4QzU5QTM0NEF9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7QUM1NTc3ODgtNjM1NC00M0Y3LUJFMDUtQzlDOEM1OUEzNDRBfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2VJdGFuaXVtLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezdFNTUxMzkzLTNDNDMtNDdGOC05RjNGLTVCQzM2OEE2QzQ4N30uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs3RTU1MTM5My0zQzQzLTQ3RjgtOUYzRi01QkMzNjhBNkM0ODd9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs3RTU1MTM5My0zQzQzLTQ3RjgtOUYzRi01QkMzNjhBNkM0ODd9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXs3RTU1MTM5My0zQzQzLTQ3RjgtOUYzRi01QkMzNjhBNkM0ODd9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezdFNTUxMzkzLTNDNDMtNDdGOC05RjNGLTVCQzM2OEE2QzQ4N30uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7OTcyMzlBNTYtREJDMC00MUQyLUJDMTQtQzg3RDlCOTdENjNCfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezk3MjM5QTU2LURCQzAtNDFEMi1CQzE0LUM4N0Q5Qjk3RDYzQn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7OTcyMzlBNTYtREJDMC00MUQyLUJDMTQtQzg3RDlCOTdENjNCfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs5NzIzOUE1Ni1EQkMwLTQxRDItQkMxNC1DODdEOUI5N0Q2M0J9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs5NzIzOUE1Ni1EQkMwLTQxRDItQkMxNC1DODdEOUI5N0Q2M0J9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXs5NzIzOUE1Ni1EQkMwLTQxRDItQkMxNC1DODdEOUI5N0Q2M0J9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7OTcyMzlBNTYtREJDMC00MUQyLUJDMTQtQzg3RDlCOTdENjNCfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezk3MjM5QTU2LURCQzAtNDFEMi1CQzE0LUM4N0Q5Qjk3RDYzQn0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7RkE1RkM3RUItQzcyRi00MTVGLUFFNDItOTFERDYwNUFCRERBfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0ZBNUZDN0VCLUM3MkYtNDE1Ri1BRTQyLTkxREQ2MDVBQkREQX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RkE1RkM3RUItQzcyRi00MTVGLUFFNDItOTFERDYwNUFCRERBfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXtGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7RkE1RkM3RUItQzcyRi00MTVGLUFFNDItOTFERDYwNUFCRERBfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJe0ZBNUZDN0VCLUM3MkYtNDE1Ri1BRTQyLTkxREQ2MDVBQkREQX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezUxRjM1RkFFLUZCOTItNEIyQy05MTg3LTE1NDJDMDY1QUQ3N30uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs1MUYzNUZBRS1GQjkyLTRCMkMtOTE4Ny0xNTQyQzA2NUFENzd9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs1MUYzNUZBRS1GQjkyLTRCMkMtOTE4Ny0xNTQyQzA2NUFENzd9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXs1MUYzNUZBRS1GQjkyLTRCMkMtOTE4Ny0xNTQyQzA2NUFENzd9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezUxRjM1RkFFLUZCOTItNEIyQy05MTg3LTE1NDJDMDY1QUQ3N30uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7MTk2NkRERTItNEFCNy00RTRFLUFDQzktQzEyMUU0RDM3RjhFfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MTk2NkRERTItNEFCNy00RTRFLUFDQzktQzEyMUU0RDM3RjhFfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxOTY2RERFMi00QUI3LTRFNEUtQUNDOS1DMTIxRTREMzdGOEV9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxOTY2RERFMi00QUI3LTRFNEUtQUNDOS1DMTIxRTREMzdGOEV9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXsxOTY2RERFMi00QUI3LTRFNEUtQUNDOS1DMTIxRTREMzdGOEV9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7MTk2NkRERTItNEFCNy00RTRFLUFDQzktQzEyMUU0RDM3RjhFfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2VJdGFuaXVtLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezJDMEJFRkI5LTcwRTItNEY4MC1BQzVCLTRBQjhFRTAyMzU3NH0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsyQzBCRUZCOS03MEUyLTRGODAtQUM1Qi00QUI4RUUwMjM1NzR9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsyQzBCRUZCOS03MEUyLTRGODAtQUM1Qi00QUI4RUUwMjM1NzR9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXsyQzBCRUZCOS03MEUyLTRGODAtQUM1Qi00QUI4RUUwMjM1NzR9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezJDMEJFRkI5LTcwRTItNEY4MC1BQzVCLTRBQjhFRTAyMzU3NH0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMjJGNDBGNC1EMzE4LTQwREMtOTZCMy04OERDODFDRTA4OTR9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMjJGNDBGNC1EMzE4LTQwREMtOTZCMy04OERDODFDRTA4OTR9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXtGMjJGNDBGNC1EMzE4LTQwREMtOTZCMy04OERDODFDRTA4OTR9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMg0KLQkJezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs4Q0YzMzREOS00RjgyLTQyRUItOTdBRi04MzU5MkM1QUZEMkZ9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7OENGMzM0RDktNEY4Mi00MkVCLTk3QUYtODM1OTJDNUFGRDJGfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OENGMzM0RDktNEY4Mi00MkVCLTk3QUYtODM1OTJDNUFGRDJGfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyDQotCQl7OENGMzM0RDktNEY4Mi00MkVCLTk3QUYtODM1OTJDNUFGRDJGfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JCXsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MkZGMEEzMTItMjJGOS00QzM0LUIwNzAtODQyOTE2REUyN0E5fS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0uUmVsZWFzZUFNRDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2VBTUQ2NHxXaW4zMg0KLQkJezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlQU1ENjR8V2luMzINCi0JCXsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9LlJlbGVhc2VJdGFuaXVtLkFjdGl2ZUNmZyA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyDQotCQl7MkZGMEEzMTItMjJGOS00QzM0LUIwNzAtODQyOTE2REUyN0E5fS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZUl0YW5pdW18V2luMzINCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uSXRlbXMpID0gcG9zdFNvbHV0aW9uDQotCQkuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jID0gLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYw0KLQkJcmVhZG1lLnR4dCA9IHJlYWRtZS50eHQNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlHbG9iYWxzKSA9IHBvc3RTb2x1dGlvbg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJpbGl0eUFkZElucykgPSBwb3N0U29sdXRpb24NCi0JRW5kR2xvYmFsU2VjdGlvbg0KLUVuZEdsb2JhbA0KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDguMDAKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2JzZGRiIiwgIl9ic2RkYi52Y3Byb2oiLCAie0UxREJCMjIwLUQ2NEItNDIzRC1BNTQ1LTUzOUE1NUFBN0ZFMn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NvY2tldCIsICJfc29ja2V0LnZjcHJvaiIsICJ7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3NsIiwgIl9zc2wudmNwcm9qIiwgIns4RTg1QkE1NC04QTQ3LTRDOEItQjcyRS04RTE3NTc5Q0M2RDd9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9ID0ge0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGNhcGkiLCAiX3Rlc3RjYXBpLnZjcHJvaiIsICJ7NTlDQkY0NzQtOUUwNi00QzUwLTkxNDItQzQ0QTExOEJCNDQ3fSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3Byb2oiLCAiezVCNTFERkY3LTVEQzAtNDFGOC04NzkxLUE0QUI3MTE0QTE1MX0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYnoyIiwgImJ6Mi52Y3Byb2oiLCAie0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV92ZXJzaW9uaW5mbyIsICJtYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiIsICJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHlleHBhdCIsICJweWV4cGF0LnZjcHJvaiIsICJ7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjcHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob25jb3JlIiwgInB5dGhvbmNvcmUudmNwcm9qIiwgIntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0gPSB7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSA9IHtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjcHJvaiIsICJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjcHJvaiIsICJ7OTcyMzlBNTYtREJDMC00MUQyLUJDMTQtQzg3RDlCOTdENjNCfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ1bmljb2RlZGF0YSIsICJ1bmljb2RlZGF0YS52Y3Byb2oiLCAie0ZBNUZDN0VCLUM3MkYtNDE1Ri1BRTQyLTkxREQ2MDVBQkREQX0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmNwcm9qIiwgIntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3Byb2oiLCAiezUxRjM1RkFFLUZCOTItNEIyQy05MTg3LTE1NDJDMDY1QUQ3N30iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2VsZW1lbnR0cmVlIiwgIl9lbGVtZW50dHJlZS52Y3Byb2oiLCAiezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmNwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXNpIiwgIl9tc2kudmNwcm9qIiwgInsyQzBCRUZCOS03MEUyLTRGODAtQUM1Qi00QUI4RUUwMjM1NzR9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXMiLCAiX2N0eXBlcy52Y3Byb2oiLCAie0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlc190ZXN0IiwgIl9jdHlwZXNfdGVzdC52Y3Byb2oiLCAiezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fSA9IHtGMjJGNDBGNC1EMzE4LTQwREMtOTZCMy04OERDODFDRTA4OTR9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmNwcm9qIiwgInsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgorCQlEZWJ1ZyA9IERlYnVnCisJCVJlbGVhc2UgPSBSZWxlYXNlCisJCVJlbGVhc2VBTUQ2NCA9IFJlbGVhc2VBTUQ2NAorCQlSZWxlYXNlSXRhbml1bSA9IFJlbGVhc2VJdGFuaXVtCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uCisJCXtFMURCQjIyMC1ENjRCLTQyM0QtQTU0NS01MzlBNTVBQTdGRTJ9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtFMURCQjIyMC1ENjRCLTQyM0QtQTU0NS01MzlBNTVBQTdGRTJ9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RTFEQkIyMjAtRDY0Qi00MjNELUE1NDUtNTM5QTU1QUE3RkUyfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0UxREJCMjIwLUQ2NEItNDIzRC1BNTQ1LTUzOUE1NUFBN0ZFMn0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RTFEQkIyMjAtRDY0Qi00MjNELUE1NDUtNTM5QTU1QUE3RkUyfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyCisJCXtFMURCQjIyMC1ENjRCLTQyM0QtQTU0NS01MzlBNTVBQTdGRTJ9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyCisJCXtFMURCQjIyMC1ENjRCLTQyM0QtQTU0NS01MzlBNTVBQTdGRTJ9LlJlbGVhc2VJdGFuaXVtLkFjdGl2ZUNmZyA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyCisJCXtFMURCQjIyMC1ENjRCLTQyM0QtQTU0NS01MzlBNTVBQTdGRTJ9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMgorCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezMyNEY2NkMyLTQ0RDAtNEQ1MC1COTc5LUY5REFFN0ZEMzZEQn0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXszMjRGNjZDMi00NEQwLTRENTAtQjk3OS1GOURBRTdGRDM2REJ9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezMyNEY2NkMyLTQ0RDAtNEQ1MC1COTc5LUY5REFFN0ZEMzZEQn0uUmVsZWFzZUFNRDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMgorCQl7MzI0RjY2QzItNDREMC00RDUwLUI5NzktRjlEQUU3RkQzNkRCfS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJezhFODVCQTU0LThBNDctNEM4Qi1CNzJFLThFMTc1NzlDQzZEN30uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezhFODVCQTU0LThBNDctNEM4Qi1CNzJFLThFMTc1NzlDQzZEN30uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs4RTg1QkE1NC04QTQ3LTRDOEItQjcyRS04RTE3NTc5Q0M2RDd9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7OEU4NUJBNTQtOEE0Ny00QzhCLUI3MkUtOEUxNzU3OUNDNkQ3fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs4RTg1QkE1NC04QTQ3LTRDOEItQjcyRS04RTE3NTc5Q0M2RDd9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJezhFODVCQTU0LThBNDctNEM4Qi1CNzJFLThFMTc1NzlDQzZEN30uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJezhFODVCQTU0LThBNDctNEM4Qi1CNzJFLThFMTc1NzlDQzZEN30uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJezhFODVCQTU0LThBNDctNEM4Qi1CNzJFLThFMTc1NzlDQzZEN30uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyCisJCXs1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7NTlDQkY0NzQtOUUwNi00QzUwLTkxNDItQzQ0QTExOEJCNDQ3fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezU5Q0JGNDc0LTlFMDYtNEM1MC05MTQyLUM0NEExMThCQjQ0N30uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NTlDQkY0NzQtOUUwNi00QzUwLTkxNDItQzQ0QTExOEJCNDQ3fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyCisJCXs1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyCisJCXs1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9LlJlbGVhc2VJdGFuaXVtLkFjdGl2ZUNmZyA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyCisJCXs1OUNCRjQ3NC05RTA2LTRDNTAtOTE0Mi1DNDRBMTE4QkI0NDd9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMgorCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezVCNTFERkY3LTVEQzAtNDFGOC04NzkxLUE0QUI3MTE0QTE1MX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs1QjUxREZGNy01REMwLTQxRjgtODc5MS1BNEFCNzExNEExNTF9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezVCNTFERkY3LTVEQzAtNDFGOC04NzkxLUE0QUI3MTE0QTE1MX0uUmVsZWFzZUFNRDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMgorCQl7NUI1MURGRjctNURDMC00MUY4LTg3OTEtQTRBQjcxMTRBMTUxfS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJe0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtBQzU1Nzc4OC02MzU0LTQzRjctQkUwNS1DOUM4QzU5QTM0NEF9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QUM1NTc3ODgtNjM1NC00M0Y3LUJFMDUtQzlDOEM1OUEzNDRBfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtBQzU1Nzc4OC02MzU0LTQzRjctQkUwNS1DOUM4QzU5QTM0NEF9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJe0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJe0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJe0FDNTU3Nzg4LTYzNTQtNDNGNy1CRTA1LUM5QzhDNTlBMzQ0QX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezdFNTUxMzkzLTNDNDMtNDdGOC05RjNGLTVCQzM2OEE2QzQ4N30uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs3RTU1MTM5My0zQzQzLTQ3RjgtOUYzRi01QkMzNjhBNkM0ODd9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezdFNTUxMzkzLTNDNDMtNDdGOC05RjNGLTVCQzM2OEE2QzQ4N30uUmVsZWFzZUFNRDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMgorCQl7N0U1NTEzOTMtM0M0My00N0Y4LTlGM0YtNUJDMzY4QTZDNDg3fS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2VJdGFuaXVtLkFjdGl2ZUNmZyA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZUFNRDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJezk3MjM5QTU2LURCQzAtNDFEMi1CQzE0LUM4N0Q5Qjk3RDYzQn0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezk3MjM5QTU2LURCQzAtNDFEMi1CQzE0LUM4N0Q5Qjk3RDYzQn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs5NzIzOUE1Ni1EQkMwLTQxRDItQkMxNC1DODdEOUI5N0Q2M0J9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7OTcyMzlBNTYtREJDMC00MUQyLUJDMTQtQzg3RDlCOTdENjNCfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs5NzIzOUE1Ni1EQkMwLTQxRDItQkMxNC1DODdEOUI5N0Q2M0J9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJezk3MjM5QTU2LURCQzAtNDFEMi1CQzE0LUM4N0Q5Qjk3RDYzQn0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJezk3MjM5QTU2LURCQzAtNDFEMi1CQzE0LUM4N0Q5Qjk3RDYzQn0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJezk3MjM5QTU2LURCQzAtNDFEMi1CQzE0LUM4N0Q5Qjk3RDYzQn0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyCisJCXtGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RkE1RkM3RUItQzcyRi00MTVGLUFFNDItOTFERDYwNUFCRERBfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0ZBNUZDN0VCLUM3MkYtNDE1Ri1BRTQyLTkxREQ2MDVBQkREQX0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RkE1RkM3RUItQzcyRi00MTVGLUFFNDItOTFERDYwNUFCRERBfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZUFNRDY0fFdpbjMyCisJCXtGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9LlJlbGVhc2VBTUQ2NC5CdWlsZC4wID0gUmVsZWFzZUFNRDY0fFdpbjMyCisJCXtGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9LlJlbGVhc2VJdGFuaXVtLkFjdGl2ZUNmZyA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyCisJCXtGQTVGQzdFQi1DNzJGLTQxNUYtQUU0Mi05MURENjA1QUJEREF9LlJlbGVhc2VJdGFuaXVtLkJ1aWxkLjAgPSBSZWxlYXNlSXRhbml1bXxXaW4zMgorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZUFNRDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezUxRjM1RkFFLUZCOTItNEIyQy05MTg3LTE1NDJDMDY1QUQ3N30uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs1MUYzNUZBRS1GQjkyLTRCMkMtOTE4Ny0xNTQyQzA2NUFENzd9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezUxRjM1RkFFLUZCOTItNEIyQy05MTg3LTE1NDJDMDY1QUQ3N30uUmVsZWFzZUFNRDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMgorCQl7NTFGMzVGQUUtRkI5Mi00QjJDLTkxODctMTU0MkMwNjVBRDc3fS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXsxOTY2RERFMi00QUI3LTRFNEUtQUNDOS1DMTIxRTREMzdGOEV9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MTk2NkRERTItNEFCNy00RTRFLUFDQzktQzEyMUU0RDM3RjhFfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsxOTY2RERFMi00QUI3LTRFNEUtQUNDOS1DMTIxRTREMzdGOEV9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJezE5NjZEREUyLTRBQjctNEU0RS1BQ0M5LUMxMjFFNEQzN0Y4RX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlQU1ENjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5EZWJ1Zy5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezJDMEJFRkI5LTcwRTItNEY4MC1BQzVCLTRBQjhFRTAyMzU3NH0uUmVsZWFzZS5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsyQzBCRUZCOS03MEUyLTRGODAtQUM1Qi00QUI4RUUwMjM1NzR9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezJDMEJFRkI5LTcwRTItNEY4MC1BQzVCLTRBQjhFRTAyMzU3NH0uUmVsZWFzZUFNRDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5SZWxlYXNlQU1ENjQuQnVpbGQuMCA9IFJlbGVhc2VBTUQ2NHxXaW4zMgorCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5SZWxlYXNlSXRhbml1bS5BY3RpdmVDZmcgPSBSZWxlYXNlSXRhbml1bXxXaW4zMgorCQl7MkMwQkVGQjktNzBFMi00RjgwLUFDNUItNEFCOEVFMDIzNTc0fS5SZWxlYXNlSXRhbml1bS5CdWlsZC4wID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJe0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtGMjJGNDBGNC1EMzE4LTQwREMtOTZCMy04OERDODFDRTA4OTR9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjIyRjQwRjQtRDMxOC00MERDLTk2QjMtODhEQzgxQ0UwODk0fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtGMjJGNDBGNC1EMzE4LTQwREMtOTZCMy04OERDODFDRTA4OTR9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJe0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJe0YyMkY0MEY0LUQzMTgtNDBEQy05NkIzLTg4REM4MUNFMDg5NH0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs4Q0YzMzREOS00RjgyLTQyRUItOTdBRi04MzU5MkM1QUZEMkZ9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7OENGMzM0RDktNEY4Mi00MkVCLTk3QUYtODM1OTJDNUFGRDJGfS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs4Q0YzMzREOS00RjgyLTQyRUItOTdBRi04MzU5MkM1QUZEMkZ9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJezhDRjMzNEQ5LTRGODItNDJFQi05N0FGLTgzNTkyQzVBRkQyRn0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0uRGVidWcuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9LlJlbGVhc2UuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MkZGMEEzMTItMjJGOS00QzM0LUIwNzAtODQyOTE2REUyN0E5fS5SZWxlYXNlLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsyRkYwQTMxMi0yMkY5LTRDMzQtQjA3MC04NDI5MTZERTI3QTl9LlJlbGVhc2VBTUQ2NC5BY3RpdmVDZmcgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0uUmVsZWFzZUFNRDY0LkJ1aWxkLjAgPSBSZWxlYXNlQU1ENjR8V2luMzIKKwkJezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0uUmVsZWFzZUl0YW5pdW0uQWN0aXZlQ2ZnID0gUmVsZWFzZUl0YW5pdW18V2luMzIKKwkJezJGRjBBMzEyLTIyRjktNEMzNC1CMDcwLTg0MjkxNkRFMjdBOX0uUmVsZWFzZUl0YW5pdW0uQnVpbGQuMCA9IFJlbGVhc2VJdGFuaXVtfFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25JdGVtcykgPSBwb3N0U29sdXRpb24KKwkJLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMKKwkJcmVhZG1lLnR4dCA9IHJlYWRtZS50eHQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5R2xvYmFscykgPSBwb3N0U29sdXRpb24KKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihFeHRlbnNpYmlsaXR5QWRkSW5zKSA9IHBvc3RTb2x1dGlvbgorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcHlleHBhdC52Y3Byb2ogYi9QQy9WUzcuMS9weWV4cGF0LnZjcHJvagppbmRleCA1OWE3MGJiLi43MWYwMDMyIDEwMDY0NAotLS0gYS9QQy9WUzcuMS9weWV4cGF0LnZjcHJvagorKysgYi9QQy9WUzcuMS9weWV4cGF0LnZjcHJvagpAQCAtMSwyNTkgKzEsMjU5IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0icHlleHBhdCINCi0JU2NjUHJvamVjdE5hbWU9InB5ZXhwYXQiDQotCVNjY0xvY2FsUGF0aD0iLi4iPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHB5ZXhwYXQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztIQVZFX0VYUEFUX0g7V0lOMzI7X1dJTkRPV1M7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii4vcHlleHBhdF9kLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5ZXhwYXRfZC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weWV4cGF0X2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxweWV4cGF0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iLi9weWV4cGF0LnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5ZXhwYXQucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHlleHBhdC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VccHlleHBhdCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5ZXhwYXQucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHlleHBhdC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weWV4cGF0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2VccHlleHBhdCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCU91dHB1dEZpbGU9Ii4vcHlleHBhdC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weWV4cGF0LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5ZXhwYXQubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccHlleHBhdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0icHlleHBhdCIKKwlTY2NQcm9qZWN0TmFtZT0icHlleHBhdCIKKwlTY2NMb2NhbFBhdGg9Ii4uIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xweWV4cGF0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7X0RFQlVHO0hBVkVfRVhQQVRfSDtXSU4zMjtfV0lORE9XUztYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9Ii4vcHlleHBhdF9kLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHlleHBhdF9kLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5ZXhwYXRfZC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxweWV4cGF0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMsLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIuL3B5ZXhwYXQucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weWV4cGF0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5ZXhwYXQubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxweWV4cGF0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDLC4uXC4uXE1vZHVsZXNcZXhwYXQiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIgorCQkJCU91dHB1dEZpbGU9Ii4vcHlleHBhdC5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5ZXhwYXQucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vcHlleHBhdC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVxweWV4cGF0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiAgL0dTLSIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQywuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiCisJCQkJT3V0cHV0RmlsZT0iLi9weWV4cGF0LnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHlleHBhdC5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weWV4cGF0LmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccHlleHBhdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIj4KKwkJPC9GaWxlPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcHl0aG9uLnZjcHJvaiBiL1BDL1ZTNy4xL3B5dGhvbi52Y3Byb2oKaW5kZXggZDgzMmVlZS4uYjNmMDQ2ZiAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvcHl0aG9uLnZjcHJvagorKysgYi9QQy9WUzcuMS9weXRob24udmNwcm9qCkBAIC0xLDI3MCArMSwyNzAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJweXRob24iDQotCVNjY1Byb2plY3ROYW1lPSJweXRob24iDQotCVNjY0xvY2FsUGF0aD0iLi4iPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxweXRob24iDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIuXC4vcHl0aG9uLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbi5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdccHl0aG9uIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbl9kLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbl9kLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxweXRob24iDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAgL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsgL1ZTRVhUQ09NUF9WRVJCT1NFIg0KLQkJCQlPdXRwdXRGaWxlPSIuXC4vcHl0aG9uLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbi5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXHB5dGhvbiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCU91dHB1dEZpbGU9Ii5cLi9weXRob24uZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbi5pY28iPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccHl0aG9uLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9leGUucmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJweXRob24iCisJU2NjUHJvamVjdE5hbWU9InB5dGhvbiIKKwlTY2NMb2NhbFBhdGg9Ii4uIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VccHl0aG9uIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9Ii5cLi9weXRob24uZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24ucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdccHl0aG9uIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfQ09OU09MRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbl9kLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9uX2QucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxweXRob24iCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNICAvR1MtIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsgL1ZTRVhUQ09NUF9WRVJCT1NFIgorCQkJCU91dHB1dEZpbGU9Ii5cLi9weXRob24uZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24ucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXHB5dGhvbiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiCisJCQkJT3V0cHV0RmlsZT0iLlwuL3B5dGhvbi5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbi5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHljb24uaWNvIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5dGhvbi5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIj4KKwkJPC9GaWxlPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcHl0aG9uY29yZS52Y3Byb2ogYi9QQy9WUzcuMS9weXRob25jb3JlLnZjcHJvagppbmRleCA4MTdiMGMwLi41Y2E4ODkxIDEwMDY0NAotLS0gYS9QQy9WUzcuMS9weXRob25jb3JlLnZjcHJvagorKysgYi9QQy9WUzcuMS9weXRob25jb3JlLnZjcHJvagpAQCAtMSw4NjggKzEsODY4IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0icHl0aG9uY29yZSINCi0JUHJvamVjdEdVSUQ9IntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9Ig0KLQlSb290TmFtZXNwYWNlPSJweXRob25jb3JlIg0KLQlTY2NQcm9qZWN0TmFtZT0icHl0aG9uY29yZSINCi0JU2NjTG9jYWxQYXRoPSIuLiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXHB5dGhvbmNvcmUiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztVU0VfRExfRVhQT1JUIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjI3LmRsbCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjI3LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjI3LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJnZW5lcmF0ZSBidWlsZGluZm8iDQotCQkJCUNvbW1hbmRMaW5lPSJtYWtlX2J1aWxkaW5mby5leGUgJChDb25maWd1cmF0aW9uTmFtZSkiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1xweXRob25jb3JlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztVU0VfRExfRVhQT1JUO1dJTjMyO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMjdfZC5kbGwiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24yN19kLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjI3X2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249ImdlbmVyYXRlIGJ1aWxkaW5mbyINCi0JCQkJQ29tbWFuZExpbmU9Im1ha2VfYnVpbGRpbmZvLmV4ZSAkKENvbmZpZ3VyYXRpb25OYW1lKSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXHB5dGhvbmNvcmUiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7VVNFX0RMX0VYUE9SVCINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjI3LmRsbCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IkZBTFNFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24yNy5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24yNy5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iZ2VuZXJhdGUgYnVpbGRpbmZvIg0KLQkJCQlDb21tYW5kTGluZT0ibWFrZV9idWlsZGluZm8uZXhlICQoQ29uZmlndXJhdGlvbk5hbWUpIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGFtZDY0LXRlbXAtcmVsZWFzZVxweXRob25jb3JlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAgL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztVU0VfRExfRVhQT1JUIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjI3LmRsbCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjI3LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjI3LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJnZW5lcmF0ZSBidWlsZGluZm8iDQotCQkJCUNvbW1hbmRMaW5lPSJtYWtlX2J1aWxkaW5mby5leGUgJChDb25maWd1cmF0aW9uTmFtZSkiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJ6bGliIg0KLQkJCUZpbHRlcj0iIj4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjb21wcmVzcy5jIj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGd6Y2xvc2UuYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGd6bGliLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnenJlYWQuYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGd6d3JpdGUuYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmJhY2suYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyI+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx0cmVlcy5jIj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdW5jb21wci5jIj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJtb2R1bGUuYyI+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1x6bGliIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcemxpYiIvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIj4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXHpsaWIiLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcemxpYiIvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19jbi5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2hrLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaXNvMjAyMi5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2pwLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3Nfa3IuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3N2LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9ob3RzaG90LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9qc29uLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sc3Byb2YuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbWF0aC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3JlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3N0cnVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQY1xfc3VicHJvY2Vzcy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93ZWFrcmVmLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBjXF93aW5yZWcuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xhYnN0cmFjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYWNjZWxlci5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxfd2FybmluZ3MuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzZGwuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF1ZGlvb3AuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xiaW5hc2NpaS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYml0c2V0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxibHRpbm1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJvb2xvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ1ZmZlcm9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVhcnJheW9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZXNfbWV0aG9kcy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNhcHN1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjZWxsb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjZXZhbC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNsYXNzb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb2RlY3MuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb2Rlb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb21waWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29tcGxleG9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xjb25maWcuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjUGlja2xlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY1N0cmluZ0lPLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZGF0ZXRpbWVtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGRpY3RvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8IS0tRmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkb3VibGVkaWdpdHMuYyI+DQotCQk8L0ZpbGUtLT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xkbF9udC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHRvYS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHlubG9hZF93aW4uYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xlbnVtb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGVycm9ycy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGV4Y2VwdGlvbnMuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cZmlsZWlvLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmlsZW9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZmlyc3RzZXRzLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmxvYXRvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZvcm1hdHRlcl9zdHJpbmcuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZvcm1hdHRlcl91bmljb2RlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZnJhbWVvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZyb3plbi5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZ1dHVyZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGZ1dHVyZV9idWlsdGlucy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGdjbW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRhcmdzLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb21waWxlci5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0Y29weXJpZ2h0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRvcHQuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZ2V0cGF0aHAuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXR2ZXJzaW9uLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxncmFtaW5pdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hci5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hcjEuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xpbWFnZW9wLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnQuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcaW1wb3J0X250LmMiPg0KLQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4NCi0JCQkJPFRvb2wNCi0JCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob24iLz4NCi0JCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uIi8+DQotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiPg0KLQkJCQk8VG9vbA0KLQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbiIvPg0KLQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiI+DQotCQkJCTxUb29sDQotCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uIi8+DQotCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xpbnRvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcaXRlcm9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGl0ZXJ0b29sc21vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbGlzdG5vZGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xsaXN0b2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbG9uZ29iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1haW4uYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1hcnNoYWwuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWQ1LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbWVtb3J5b2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxtZXRhZ3JhbW1hci5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1vZHN1cHBvcnQuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbXN2Y3J0bW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxteXJlYWRsaW5lLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXNucHJpbnRmLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXN0cnRvdWwuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG5vZGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYm1hbGxvYy5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG9wZXJhdG9yLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxwYXJzZXIuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwYXJzZXJtb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNldG9rLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxwZWVwaG9sZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWFyZW5hLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWN0eXBlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWZwZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHltYXRoLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0YXRlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cmNtcC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJ0b2QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX250LnJjIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHl0aG9ucnVuLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxyYW5kb20uYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNldG9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTUxMm1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYW1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNsaWNlb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHN0cmluZ2lvLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc3Ryb3Btb2R1bGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cnVjdHNlcS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3ltdGFibGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3lzbW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHRleHRpby5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGhyZWFkbW9kdWxlLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGltZW1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0cmFjZWJhY2suYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0dXBsZW9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHR5cGVvYmplY3QuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2RlY3R5cGUuYyI+DQotCQk8L0ZpbGU+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2Rlb2JqZWN0LmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHh4c3VidHlwZS5jIj4NCi0JCTwvRmlsZT4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHppcGltcG9ydC5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0icHl0aG9uY29yZSIKKwlQcm9qZWN0R1VJRD0ie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iCisJUm9vdE5hbWVzcGFjZT0icHl0aG9uY29yZSIKKwlTY2NQcm9qZWN0TmFtZT0icHl0aG9uY29yZSIKKwlTY2NMb2NhbFBhdGg9Ii4uIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2VccHl0aG9uY29yZSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1M7VVNFX0RMX0VYUE9SVCIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIgorCQkJCU91dHB1dEZpbGU9Ii4vcHl0aG9uMjcuZGxsIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjI3LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjI3LmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJRGVzY3JpcHRpb249ImdlbmVyYXRlIGJ1aWxkaW5mbyIKKwkJCQlDb21tYW5kTGluZT0ibWFrZV9idWlsZGluZm8uZXhlICQoQ29uZmlndXJhdGlvbk5hbWUpIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHB5dGhvbmNvcmUiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7X0RFQlVHO1VTRV9ETF9FWFBPUlQ7V0lOMzI7X1dJTkRPV1MiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iCisJCQkJT3V0cHV0RmlsZT0iLi9weXRob24yN19kLmRsbCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24yN19kLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjI3X2QubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlEZXNjcmlwdGlvbj0iZ2VuZXJhdGUgYnVpbGRpbmZvIgorCQkJCUNvbW1hbmRMaW5lPSJtYWtlX2J1aWxkaW5mby5leGUgJChDb25maWd1cmF0aW9uTmFtZSkiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLy4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2VccHl0aG9uY29yZSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTO1VTRV9ETF9FWFBPUlQiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iCisJCQkJT3V0cHV0RmlsZT0iLi9weXRob24yNy5kbGwiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iRkFMU0UiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbjI3LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3B5dGhvbjI3LmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJRGVzY3JpcHRpb249ImdlbmVyYXRlIGJ1aWxkaW5mbyIKKwkJCQlDb21tYW5kTGluZT0ibWFrZV9idWlsZGluZm8uZXhlICQoQ29uZmlndXJhdGlvbk5hbWUpIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4vLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxhbWQ2NC10ZW1wLXJlbGVhc2VccHl0aG9uY29yZSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUztVU0VfRExfRVhQT1JUIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyIKKwkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbjI3LmRsbCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob24yNy5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9weXRob24yNy5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCURlc2NyaXB0aW9uPSJnZW5lcmF0ZSBidWlsZGluZm8iCisJCQkJQ29tbWFuZExpbmU9Im1ha2VfYnVpbGRpbmZvLmV4ZSAkKENvbmZpZ3VyYXRpb25OYW1lKSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iemxpYiIKKwkJCUZpbHRlcj0iIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmMiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnemNsb3NlLmMiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnemxpYi5jIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZ3pyZWFkLmMiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnendyaXRlLmMiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZiYWNrLmMiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdHJlZXMuYyI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHVuY29tcHIuYyI+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGlibW9kdWxlLmMiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXHpsaWIiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1x6bGliIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZUl0YW5pdW18V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcemxpYiIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1x6bGliIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyI+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19jbi5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2hrLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaXNvMjAyMi5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2pwLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3Nfa3IuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3N2LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9oZWFwcW1vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9ob3RzaG90LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9qc29uLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sc3Byb2YuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbWF0aC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3JlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3N0cnVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQY1xfc3VicHJvY2Vzcy5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93ZWFrcmVmLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBjXF93aW5yZWcuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xhYnN0cmFjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYWNjZWxlci5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxfd2FybmluZ3MuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzZGwuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGFzdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF1ZGlvb3AuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xiaW5hc2NpaS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYml0c2V0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxibHRpbm1vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJvb2xvYmplY3QuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ1ZmZlcm9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVhcnJheW9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nb2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZXNfbWV0aG9kcy5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNhcHN1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjZWxsb2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjZXZhbC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNsYXNzb2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb2RlY3MuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb2Rlb2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb21waWxlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29tcGxleG9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xjb25maWcuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjUGlja2xlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY1N0cmluZ0lPLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZGF0ZXRpbWVtb2R1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGRpY3RvYmplY3QuYyI+CisJCTwvRmlsZT4KKwkJPCEtLUZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkb3VibGVkaWdpdHMuYyI+CisJCTwvRmlsZS0tPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xkbF9udC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHRvYS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHlubG9hZF93aW4uYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xlbnVtb2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGVycm9ycy5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGV4Y2VwdGlvbnMuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cZmlsZWlvLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmlsZW9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZmlyc3RzZXRzLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmxvYXRvYmplY3QuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZvcm1hdHRlcl9zdHJpbmcuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZvcm1hdHRlcl91bmljb2RlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZnJhbWVvYmplY3QuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZyb3plbi5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGZ1dHVyZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGZ1dHVyZV9idWlsdGlucy5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGdjbW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRhcmdzLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb21waWxlci5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0Y29weXJpZ2h0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRvcHQuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZ2V0cGF0aHAuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHBsYXRmb3JtLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXR2ZXJzaW9uLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxncmFtaW5pdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hci5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hcjEuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xpbWFnZW9wLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnQuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcaW1wb3J0X250LmMiPgorCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJPFRvb2wKKwkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uIi8+CisJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJTmFtZT0iRGVidWd8V2luMzIiPgorCQkJCTxUb29sCisJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbiIvPgorCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIj4KKwkJCQk8VG9vbAorCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob24iLz4KKwkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiPgorCQkJCTxUb29sCisJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbiIvPgorCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xpbnRvYmplY3QuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9caW9iYXNlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcaXRlcm9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGl0ZXJ0b29sc21vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbGlzdG5vZGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xsaXN0b2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbG9uZ29iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1haW4uYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1hcnNoYWwuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtYXRobW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWQ1LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWQ1bW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbWVtb3J5b2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxtZXRhZ3JhbW1hci5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1ldGhvZG9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1tYXBtb2R1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG1vZHN1cHBvcnQuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbXN2Y3J0bW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxteXJlYWRsaW5lLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXNucHJpbnRmLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXN0cnRvdWwuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG5vZGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYmplY3QuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYm1hbGxvYy5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG9wZXJhdG9yLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxwYXJzZXIuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwYXJzZXJtb2R1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNldG9rLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxwZWVwaG9sZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHBvc2l4bW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWFyZW5hLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWN0eXBlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWZwZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHltYXRoLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0YXRlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cmNtcC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJ0b2QuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX250LnJjIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHl0aG9ucnVuLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxyYW5kb20uYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNldG9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTUxMm1vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYW1vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNsaWNlb2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHN0cmluZ2lvLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc3Ryb3Btb2R1bGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN0cnVjdG1lbWJlci5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cnVjdHNlcS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3ltdGFibGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3lzbW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHRleHRpby5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdGhyZWFkLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGhyZWFkbW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGltZW1vZHVsZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0cmFjZWJhY2suYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0dXBsZW9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHR5cGVvYmplY3QuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2RlY3R5cGUuYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2Rlb2JqZWN0LmMiPgorCQk8L0ZpbGU+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHh4c3VidHlwZS5jIj4KKwkJPC9GaWxlPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHppcGltcG9ydC5jIj4KKwkJPC9GaWxlPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcHl0aG9udy52Y3Byb2ogYi9QQy9WUzcuMS9weXRob253LnZjcHJvagppbmRleCA0N2Q3ZjUwLi44MjNkMjdjIDEwMDY0NAotLS0gYS9QQy9WUzcuMS9weXRob253LnZjcHJvagorKysgYi9QQy9WUzcuMS9weXRob253LnZjcHJvagpAQCAtMSwyNjEgKzEsMjYxIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0icHl0aG9udyINCi0JU2NjUHJvamVjdE5hbWU9InB5dGhvbnciDQotCVNjY0xvY2FsUGF0aD0iLi5cLi5ccGMiPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHB5dGhvbnciDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X1dJTkRPV1MiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3B5dGhvbndfZC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob253X2QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxweXRob253Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIuXC4vcHl0aG9udy5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob253LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxweXRob253Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJT3V0cHV0RmlsZT0iLlwuL3B5dGhvbncuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9udy5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXHB5dGhvbnciDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpBTUQ2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCU91dHB1dEZpbGU9Ii5cLi9weXRob253LmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbncucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9leGUucmMiPg0KLQkJPC9GaWxlPg0KLQkJPEZpbGUNCi0JCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXFdpbk1haW4uYyI+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjEwIgorCU5hbWU9InB5dGhvbnciCisJU2NjUHJvamVjdE5hbWU9InB5dGhvbnciCisJU2NjTG9jYWxQYXRoPSIuLlwuLlxwYyI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdccHl0aG9udyIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfREVCVUc7X1dJTkRPV1MiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iLi9weXRob253X2QuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob253X2QucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXHB5dGhvbnciCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iLlwuL3B5dGhvbncuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9weXRob253LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXHB5dGhvbnciCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfV0lORE9XUyIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJGQUxTRSIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSIKKwkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvTUFDSElORTpJQTY0IC9VU0VMSU5LOk1TX1NESyIKKwkJCQlPdXRwdXRGaWxlPSIuXC4vcHl0aG9udy5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3B5dGhvbncucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXHB5dGhvbnciCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIgorCQkJCU91dHB1dEZpbGU9Ii5cLi9weXRob253LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vcHl0aG9udy5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX2V4ZS5yYyI+CisJCTwvRmlsZT4KKwkJPEZpbGUKKwkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcV2luTWFpbi5jIj4KKwkJPC9GaWxlPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvcnQuYmF0IGIvUEMvVlM3LjEvcnQuYmF0CmluZGV4IDJjMWE2YTcuLjI5ODAxZDIgMTAwNzU1Ci0tLSBhL1BDL1ZTNy4xL3J0LmJhdAorKysgYi9QQy9WUzcuMS9ydC5iYXQKQEAgLTEsNTIgKzEsNTIgQEAKLUBlY2hvIG9mZg0KLXJlbSBSdW4gVGVzdHMuICBSdW4gdGhlIHJlZ3Jlc3Npb24gdGVzdCBzdWl0ZS4NCi1yZW0gVXNhZ2U6ICBydCBbLWRdIFstT10gWy1xXSByZWdydGVzdF9hcmdzDQotcmVtIC1kICAgUnVuIERlYnVnIGJ1aWxkIChweXRob25fZC5leGUpLiAgRWxzZSByZWxlYXNlIGJ1aWxkLg0KLXJlbSAtTyAgIFJ1biBweXRob24uZXhlIG9yIHB5dGhvbl9kLmV4ZSAoc2VlIC1kKSB3aXRoIC1PLg0KLXJlbSAtcSAgICJxdWljayIgLS0gbm9ybWFsbHkgdGhlIHRlc3RzIGFyZSBydW4gdHdpY2UsIHRoZSBmaXJzdCB0aW1lDQotcmVtICAgICAgYWZ0ZXIgZGVsZXRpbmcgYWxsIHRoZSAucHlbY29dIGZpbGVzIHJlYWNoYWJsZSBmcm9tIExpYi8uDQotcmVtICAgICAgLXEgcnVucyB0aGUgdGVzdHMganVzdCBvbmNlLCBhbmQgd2l0aG91dCBkZWxldGluZyAucHlbY29dIGZpbGVzLg0KLXJlbSBBbGwgbGVhZGluZyBpbnN0YW5jZXMgb2YgdGhlc2Ugc3dpdGNoZXMgYXJlIHNoaWZ0ZWQgb2ZmLCBhbmQNCi1yZW0gd2hhdGV2ZXIgcmVtYWlucyBpcyBwYXNzZWQgdG8gcmVncnRlc3QucHkuICBGb3IgZXhhbXBsZSwNCi1yZW0gICAgIHJ0IC1PIC1kIC14IHRlc3RfdGhyZWFkDQotcmVtIHJ1bnMNCi1yZW0gICAgIHB5dGhvbl9kIC1PIC4uLy4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5IC14IHRlc3RfdGhyZWFkDQotcmVtIHR3aWNlLCBhbmQNCi1yZW0gICAgIHJ0IC1xIC1nIHRlc3RfYmluYXNjaWkNCi1yZW0gcnVucw0KLXJlbSAgICAgcHl0aG9uX2QgLi4vLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgLWcgdGVzdF9iaW5hc2NpaQ0KLXJlbSB0byBnZW5lcmF0ZSB0aGUgZXhwZWN0ZWQtb3V0cHV0IGZpbGUgZm9yIGJpbmFzY2lpIHF1aWNrbHkuDQotcmVtDQotcmVtIENvbmZ1c2luZzogIGlmIHlvdSB3YW50IHRvIHBhc3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgbGlrZQ0KLXJlbSAgICAgLXUgbmV0d29yayxsYXJnZWZpbGUNCi1yZW0gdGhlbiB5b3UgaGF2ZSB0byBxdW90ZSBpdCBvbiB0aGUgcnQgbGluZSwgbGlrZQ0KLXJlbSAgICAgcnQgLXUgIm5ldHdvcmssbGFyZ2VmaWxlIg0KLQ0KLXNldGxvY2FsDQotDQotc2V0IGV4ZT1weXRob24NCi1zZXQgcW1vZGU9DQotc2V0IGRhc2hPPQ0KLVBBVEggJVBBVEglOy4uXC4uXC4uXHRjbHRrXGJpbg0KLQ0KLTpDaGVja09wdHMNCi1pZiAiJTEiPT0iLU8iIChzZXQgZGFzaE89LU8pICAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLXEiIChzZXQgcW1vZGU9eWVzKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLWQiIChzZXQgZXhlPXB5dGhvbl9kKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi0NCi1zZXQgY21kPSVleGUlICVkYXNoTyUgLUUgLXR0IC4uLy4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5ICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQotaWYgZGVmaW5lZCBxbW9kZSBnb3RvIFFtb2RlDQotDQotZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uDQotJWV4ZSUgcm1weWMucHkNCi0NCi1lY2hvIG9uDQotJWNtZCUNCi1AZWNobyBvZmYNCi0NCi1lY2hvIEFib3V0IHRvIHJ1biBhZ2FpbiB3aXRob3V0IGRlbGV0aW5nIC5weWMvLnB5byBmaXJzdDoNCi1wYXVzZQ0KLQ0KLTpRbW9kZQ0KLWVjaG8gb24NCi0lY21kJQ0KK0BlY2hvIG9mZgorcmVtIFJ1biBUZXN0cy4gIFJ1biB0aGUgcmVncmVzc2lvbiB0ZXN0IHN1aXRlLgorcmVtIFVzYWdlOiAgcnQgWy1kXSBbLU9dIFstcV0gcmVncnRlc3RfYXJncworcmVtIC1kICAgUnVuIERlYnVnIGJ1aWxkIChweXRob25fZC5leGUpLiAgRWxzZSByZWxlYXNlIGJ1aWxkLgorcmVtIC1PICAgUnVuIHB5dGhvbi5leGUgb3IgcHl0aG9uX2QuZXhlIChzZWUgLWQpIHdpdGggLU8uCityZW0gLXEgICAicXVpY2siIC0tIG5vcm1hbGx5IHRoZSB0ZXN0cyBhcmUgcnVuIHR3aWNlLCB0aGUgZmlyc3QgdGltZQorcmVtICAgICAgYWZ0ZXIgZGVsZXRpbmcgYWxsIHRoZSAucHlbY29dIGZpbGVzIHJlYWNoYWJsZSBmcm9tIExpYi8uCityZW0gICAgICAtcSBydW5zIHRoZSB0ZXN0cyBqdXN0IG9uY2UsIGFuZCB3aXRob3V0IGRlbGV0aW5nIC5weVtjb10gZmlsZXMuCityZW0gQWxsIGxlYWRpbmcgaW5zdGFuY2VzIG9mIHRoZXNlIHN3aXRjaGVzIGFyZSBzaGlmdGVkIG9mZiwgYW5kCityZW0gd2hhdGV2ZXIgcmVtYWlucyBpcyBwYXNzZWQgdG8gcmVncnRlc3QucHkuICBGb3IgZXhhbXBsZSwKK3JlbSAgICAgcnQgLU8gLWQgLXggdGVzdF90aHJlYWQKK3JlbSBydW5zCityZW0gICAgIHB5dGhvbl9kIC1PIC4uLy4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5IC14IHRlc3RfdGhyZWFkCityZW0gdHdpY2UsIGFuZAorcmVtICAgICBydCAtcSAtZyB0ZXN0X2JpbmFzY2lpCityZW0gcnVucworcmVtICAgICBweXRob25fZCAuLi8uLi9saWIvdGVzdC9yZWdydGVzdC5weSAtZyB0ZXN0X2JpbmFzY2lpCityZW0gdG8gZ2VuZXJhdGUgdGhlIGV4cGVjdGVkLW91dHB1dCBmaWxlIGZvciBiaW5hc2NpaSBxdWlja2x5LgorcmVtCityZW0gQ29uZnVzaW5nOiAgaWYgeW91IHdhbnQgdG8gcGFzcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCBsaWtlCityZW0gICAgIC11IG5ldHdvcmssbGFyZ2VmaWxlCityZW0gdGhlbiB5b3UgaGF2ZSB0byBxdW90ZSBpdCBvbiB0aGUgcnQgbGluZSwgbGlrZQorcmVtICAgICBydCAtdSAibmV0d29yayxsYXJnZWZpbGUiCisKK3NldGxvY2FsCisKK3NldCBleGU9cHl0aG9uCitzZXQgcW1vZGU9CitzZXQgZGFzaE89CitQQVRIICVQQVRIJTsuLlwuLlwuLlx0Y2x0a1xiaW4KKworOkNoZWNrT3B0cworaWYgIiUxIj09Ii1PIiAoc2V0IGRhc2hPPS1PKSAgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJTEiPT0iLXEiIChzZXQgcW1vZGU9eWVzKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlMSI9PSItZCIgKHNldCBleGU9cHl0aG9uX2QpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworCitzZXQgY21kPSVleGUlICVkYXNoTyUgLUUgLXR0IC4uLy4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5ICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5CitpZiBkZWZpbmVkIHFtb2RlIGdvdG8gUW1vZGUKKworZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uCislZXhlJSBybXB5Yy5weQorCitlY2hvIG9uCislY21kJQorQGVjaG8gb2ZmCisKK2VjaG8gQWJvdXQgdG8gcnVuIGFnYWluIHdpdGhvdXQgZGVsZXRpbmcgLnB5Yy8ucHlvIGZpcnN0OgorcGF1c2UKKworOlFtb2RlCitlY2hvIG9uCislY21kJQpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvc2VsZWN0LnZjcHJvaiBiL1BDL1ZTNy4xL3NlbGVjdC52Y3Byb2oKaW5kZXggODI1MmQ0NS4uNzljMjZmMyAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvc2VsZWN0LnZjcHJvagorKysgYi9QQy9WUzcuMS9zZWxlY3QudmNwcm9qCkBAIC0xLDI1OCArMSwyNTggQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJzZWxlY3QiDQotCVNjY1Byb2plY3ROYW1lPSJzZWxlY3QiDQotCVNjY0xvY2FsUGF0aD0iLi4iPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVxzZWxlY3QiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJUUlVFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vc2VsZWN0LnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3NlbGVjdC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9zZWxlY3QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHNlbGVjdCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vc2VsZWN0X2QucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyxtc3ZjcnQiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3NlbGVjdF9kLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3NlbGVjdF9kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVxzZWxlY3QiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3NlbGVjdC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9zZWxlY3QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vc2VsZWN0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2Vcc2VsZWN0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO05ERUJVRztXSU4zMjtfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3NlbGVjdC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9zZWxlY3QucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vc2VsZWN0LmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIj4NCi0JCTwvRmlsZT4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0ic2VsZWN0IgorCVNjY1Byb2plY3ROYW1lPSJzZWxlY3QiCisJU2NjTG9jYWxQYXRoPSIuLiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXHNlbGVjdCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtOREVCVUc7V0lOMzI7X1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vc2VsZWN0LnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9zZWxlY3QucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vc2VsZWN0LmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdcc2VsZWN0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO19ERUJVRztXSU4zMjtfV0lORE9XUyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vc2VsZWN0X2QucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyxtc3ZjcnQiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9zZWxlY3RfZC5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9zZWxlY3RfZC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXHNlbGVjdCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX0lUQU5JVU0gL0dTLSIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi9zZWxlY3QucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3NlbGVjdC5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi9zZWxlY3QubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2Vcc2VsZWN0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7TkRFQlVHO1dJTjMyO19XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCU91dHB1dEZpbGU9Ii4vc2VsZWN0LnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi9zZWxlY3QucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vc2VsZWN0LmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2VsZWN0bW9kdWxlLmMiPgorCQk8L0ZpbGU+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzcuMS91bmljb2RlZGF0YS52Y3Byb2ogYi9QQy9WUzcuMS91bmljb2RlZGF0YS52Y3Byb2oKaW5kZXggN2Y0N2Y5Yi4uYjZmMjgwOCAxMDA2NDQKLS0tIGEvUEMvVlM3LjEvdW5pY29kZWRhdGEudmNwcm9qCisrKyBiL1BDL1ZTNy4xL3VuaWNvZGVkYXRhLnZjcHJvagpAQCAtMSwyNDcgKzEsMjQ3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iNy4xMCINCi0JTmFtZT0idW5pY29kZWRhdGEiDQotCVNjY1Byb2plY3ROYW1lPSJ1bmljb2RlZGF0YSINCi0JU2NjTG9jYWxQYXRoPSIuLiI+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiIvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXHVuaWNvZGVkYXRhIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlDb21waWxlQXM9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iLi91bmljb2RlZGF0YS5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vdW5pY29kZWRhdGEucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3VuaWNvZGVkYXRhLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1x1bmljb2RlZGF0YSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii4vdW5pY29kZWRhdGFfZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi91bmljb2RlZGF0YV9kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi91bmljb2RlZGF0YV9kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VJdGFuaXVtfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlxpYTY0LXRlbXAtcmVsZWFzZVx1bmljb2RlZGF0YSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19JVEFOSVVNIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlPdXRwdXRGaWxlPSIuL3VuaWNvZGVkYXRhLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi91bmljb2RlZGF0YS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vdW5pY29kZWRhdGEubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZUFNRDY0fFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVx1bmljb2RlZGF0YSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9VU0VDTDpNU19PUFRFUk9OIC9HUy0iDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiDQotCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMCINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0iVFJVRSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyINCi0JCQkJT3V0cHV0RmlsZT0iLi91bmljb2RlZGF0YS5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vdW5pY29kZWRhdGEucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3VuaWNvZGVkYXRhLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWxlDQotCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiPg0KLQkJPC9GaWxlPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iNy4xMCIKKwlOYW1lPSJ1bmljb2RlZGF0YSIKKwlTY2NQcm9qZWN0TmFtZT0idW5pY29kZWRhdGEiCisJU2NjTG9jYWxQYXRoPSIuLiI+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIvPgorCTwvUGxhdGZvcm1zPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1yZWxlYXNlXHVuaWNvZGVkYXRhIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cUEMiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUztfVVNSRExMO01NQVBfRVhQT1JUUyIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIuL3VuaWNvZGVkYXRhLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi91bmljb2RlZGF0YS5wZGIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3VuaWNvZGVkYXRhLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtZGVidWdcdW5pY29kZWRhdGEiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7X0RFQlVHO19XSU5ET1dTO19VU1JETEw7TU1BUF9FWFBPUlRTIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIuL3VuaWNvZGVkYXRhX2QucHlkIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi91bmljb2RlZGF0YV9kLnBkYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIuXC4vdW5pY29kZWRhdGFfZC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXHVuaWNvZGVkYXRhIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtNTUFQX0VYUE9SVFMiCisJCQkJU3RyaW5nUG9vbGluZz0iVFJVRSIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjAiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlEZXRlY3Q2NEJpdFBvcnRhYmlsaXR5UHJvYmxlbXM9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiCisJCQkJT3V0cHV0RmlsZT0iLi91bmljb2RlZGF0YS5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vdW5pY29kZWRhdGEucGRiIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi91bmljb2RlZGF0YS5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlQU1ENjR8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9ImFtZDY0LXRlbXAtcmVsZWFzZVx1bmljb2RlZGF0YSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL1VTRUNMOk1TX09QVEVST04gL0dTLSIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7TU1BUF9FWFBPUlRTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyIKKwkJCQlPdXRwdXRGaWxlPSIuL3VuaWNvZGVkYXRhLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi91bmljb2RlZGF0YS5wZGIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3VuaWNvZGVkYXRhLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWxlCisJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYyI+CisJCTwvRmlsZT4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTNy4xL3c5eHBvcGVuLnZjcHJvaiBiL1BDL1ZTNy4xL3c5eHBvcGVuLnZjcHJvagppbmRleCBiOWYzYjRlLi5lZDEzM2ZiIDEwMDY0NAotLS0gYS9QQy9WUzcuMS93OXhwb3Blbi52Y3Byb2oKKysrIGIvUEMvVlM3LjEvdzl4cG9wZW4udmNwcm9qCkBAIC0xLDEyMSArMSwxMjEgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJ3OXhwb3BlbiINCi0JU2NjUHJvamVjdE5hbWU9IiINCi0JU2NjTG9jYWxQYXRoPSIiPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHc5eHBvcGVuIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO19ERUJVRztfV0lORE9XUyINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9Ii4vdzl4cG9wZW5fZC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi93OXhwb3Blbl9kLnBkYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2Vcdzl4cG9wZW4iDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO05ERUJVRztfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iLlwuL3c5eHBvcGVuLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi93OXhwb3Blbi5wZGIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcdzl4cG9wZW4uYyI+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjEwIgorCU5hbWU9Inc5eHBvcGVuIgorCVNjY1Byb2plY3ROYW1lPSIiCisJU2NjTG9jYWxQYXRoPSIiPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiLz4KKwk8L1BsYXRmb3Jtcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHc5eHBvcGVuIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtfREVCVUc7X1dJTkRPV1MiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iLi93OXhwb3Blbl9kLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vdzl4cG9wZW5fZC5wZGIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVx3OXhwb3BlbiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iLlwuL3c5eHBvcGVuLmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi93OXhwb3Blbi5wZGIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3OXhwb3Blbi5jIj4KKwkJPC9GaWxlPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM3LjEvd2luc291bmQudmNwcm9qIGIvUEMvVlM3LjEvd2luc291bmQudmNwcm9qCmluZGV4IGJjNGNmMzkuLjY2ZDI5YTMgMTAwNjQ0Ci0tLSBhL1BDL1ZTNy4xL3dpbnNvdW5kLnZjcHJvagorKysgYi9QQy9WUzcuMS93aW5zb3VuZC52Y3Byb2oKQEAgLTEsMjUxICsxLDI1MSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjcuMTAiDQotCU5hbWU9IndpbnNvdW5kIg0KLQlTY2NQcm9qZWN0TmFtZT0id2luc291bmQiDQotCVNjY0xvY2FsUGF0aD0iLi5cLi5ccGMiPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLWRlYnVnXHdpbnNvdW5kIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFO1dJTjMyO19ERUJVRztfV0lORE9XUztfVVNSRExMO1dJTlNPVU5EX0VYUE9SVFMiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi93aW5zb3VuZF9kLnB5ZCINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3dpbnNvdW5kX2QucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3dpbnNvdW5kX2QubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5ceDg2LXRlbXAtcmVsZWFzZVx3aW5zb3VuZCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIj4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7V0lOU09VTkRfRVhQT1JUUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vd2luc291bmQucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3dpbnNvdW5kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi93aW5zb3VuZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5caWE2NC10ZW1wLXJlbGVhc2Vcd2luc291bmQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7V0lOU09VTkRfRVhQT1JUUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6SUE2NCAvVVNFTElOSzpNU19TREsiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi93aW5zb3VuZC5weWQiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vd2luc291bmQucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iLlwuL3dpbnNvdW5kLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4iDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSJhbWQ2NC10ZW1wLXJlbGVhc2Vcd2luc291bmQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIg0KLQkJCUNoYXJhY3RlclNldD0iMiI+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiAvR1MtIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7V0lOU09VTkRfRVhQT1JUUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iRkFMU0UiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURldGVjdDY0Qml0UG9ydGFiaWxpdHlQcm9ibGVtcz0iVFJVRSINCi0JCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIgL01BQ0hJTkU6QU1ENjQgL1VTRUxJTks6TVNfU0RLIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4vd2luc291bmQucHlkIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuL3dpbnNvdW5kLnBkYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9Ii5cLi93aW5zb3VuZC5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjAiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsZQ0KLQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcd2luc291bmQuYyI+DQotCQk8L0ZpbGU+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI3LjEwIgorCU5hbWU9IndpbnNvdW5kIgorCVNjY1Byb2plY3ROYW1lPSJ3aW5zb3VuZCIKKwlTY2NMb2NhbFBhdGg9Ii4uXC4uXHBjIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx4ODYtdGVtcC1kZWJ1Z1x3aW5zb3VuZCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iRkFMU0UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtfREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtXSU5TT1VORF9FWFBPUlRTIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi93aW5zb3VuZF9kLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vd2luc291bmRfZC5wZGIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3dpbnNvdW5kX2QubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXHg4Ni10ZW1wLXJlbGVhc2Vcd2luc291bmQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9IkZBTFNFIgorCQkJQ2hhcmFjdGVyU2V0PSIyIj4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxQQyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEU7V0lOMzI7TkRFQlVHO19XSU5ET1dTO19VU1JETEw7V0lOU09VTkRfRVhQT1JUUyIKKwkJCQlTdHJpbmdQb29saW5nPSJUUlVFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi93aW5zb3VuZC5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vd2luc291bmQucGRiIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi93aW5zb3VuZC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlSXRhbml1bXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuIgorCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIuXGlhNjQtdGVtcC1yZWxlYXNlXHdpbnNvdW5kIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfSVRBTklVTSAvR1MtIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtXSU5TT1VORF9FWFBPUlRTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOklBNjQgL1VTRUxJTks6TVNfU0RLIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIuL3dpbnNvdW5kLnB5ZCIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi93aW5zb3VuZC5wZGIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iLlwuL3dpbnNvdW5kLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2VBTUQ2NHxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iYW1kNjQtdGVtcC1yZWxlYXNlXHdpbnNvdW5kIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9IiAvVVNFQ0w6TVNfT1BURVJPTiAvR1MtIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlLC4uXC4uXFBDIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRTtXSU4zMjtOREVCVUc7X1dJTkRPV1M7X1VTUkRMTDtXSU5TT1VORF9FWFBPUlRTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIwIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9IkZBTFNFIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGV0ZWN0NjRCaXRQb3J0YWJpbGl0eVByb2JsZW1zPSJUUlVFIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCQkJQ29tcGlsZUFzPSIwIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iIC9NQUNISU5FOkFNRDY0IC9VU0VMSU5LOk1TX1NESyIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi93aW5zb3VuZC5weWQiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4vd2luc291bmQucGRiIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9Ii5cLi93aW5zb3VuZC5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0F1eGlsaWFyeU1hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsZQorCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3aW5zb3VuZC5jIj4KKwkJPC9GaWxlPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX2JzZGRiLnZjcHJvaiBiL1BDL1ZTOC4wL19ic2RkYi52Y3Byb2oKaW5kZXggNjcxYWRhOS4uNTBkYTFjZSAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvX2JzZGRiLnZjcHJvagorKysgYi9QQy9WUzguMC9fYnNkZGIudmNwcm9qCkBAIC0xLDE0NjMgKzEsMTQ2MyBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9ic2RkYiINCi0JUHJvamVjdEdVSUQ9IntCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9Ig0KLQlSb290TmFtZXNwYWNlPSJfYnNkZGIiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93cywuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3MsLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGJzZGRiRGVwTGlicykiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzLC4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi4iDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3MsLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGJzZGRiRGVwTGlicykiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93cywuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93cywuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3MsLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGJzZGRiRGVwTGlicykiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzLC4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi4iDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGJzZGRiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfYnNkZGIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkJlcmtlbGV5IERCIDQuNy4yNSBTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjcnlwdG9cYWVzX21ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9jb21wYWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X2NvbXBhcmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfY29udi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9jdXJhZGouYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfY3Vyc29yLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X2RlbGV0ZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9wdXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X3JlY2xhaW0uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfcmVjbm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfcnNlYXJjaC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9zZWFyY2guYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfc3BsaXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF91cGdyYWRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X3ZlcmlmeS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidHJlZV9hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGNyZGVsX2F1dG8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcY3JkZWxfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGNyeXB0b1xjcnlwdG8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfYW0uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfYXV0by5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cZGJfYnl0ZW9yZGVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX2NhbS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9jZHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfY29udi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9kaXNwYXRjaC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9kdXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY29tbW9uXGRiX2Vyci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cZGJfZ2V0bG9uZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cZGJfaWRzcGFjZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9pZmFjZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9qb2luLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGNvbW1vblxkYl9sb2cyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX21ldGEuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX29wZW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfb3ZlcmZsb3cuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfb3ZmbF92cmZ5LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX3ByLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX3JlYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9yZWNsYWltLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX3JlbW92ZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9yZW5hbWUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfcmV0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX3NldGlkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX3NldGxzbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cZGJfc2hhc2guYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfc3RhdGkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfdHJ1bmNhdGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfdXBnLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX3VwZ19vcGQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfdnJmeS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl92cmZ5dXRpbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYm1cZGJtLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRicmVnXGRicmVnLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRicmVnXGRicmVnX2F1dG8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJyZWdcZGJyZWdfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRicmVnXGRicmVnX3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJyZWdcZGJyZWdfdXRpbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cZGJ0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGVudlxlbnZfYWxsb2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZW52XGVudl9jb25maWcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZW52XGVudl9mYWlsY2hrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGVudlxlbnZfZmlsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxlbnZcZW52X2dsb2JhbHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZW52XGVudl9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZW52XGVudl9uYW1lLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGVudlxlbnZfb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxlbnZcZW52X3JlY292ZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZW52XGVudl9yZWdpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZW52XGVudl9yZWdpc3Rlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxlbnZcZW52X3NpZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxlbnZcZW52X3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZmlsZW9wc1xmaWxlb3BzX2F1dG8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZmlsZW9wc1xmb3BfYmFzaWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZmlsZW9wc1xmb3BfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGZpbGVvcHNcZm9wX3V0aWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caGFzaFxoYXNoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF9hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF9jb252LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF9kdXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caGFzaFxoYXNoX2Z1bmMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caGFzaFxoYXNoX21ldGEuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caGFzaFxoYXNoX21ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxoYXNoXGhhc2hfb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxoYXNoXGhhc2hfcGFnZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxoYXNoXGhhc2hfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF9yZWNsYWltLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF9zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF91cGdyYWRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF92ZXJpZnkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caG1hY1xobWFjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhzZWFyY2hcaHNlYXJjaC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2NrXGxvY2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbG9ja1xsb2NrX2RlYWRsb2NrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvY2tcbG9ja19mYWlsY2hrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvY2tcbG9ja19pZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2NrXGxvY2tfbGlzdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2NrXGxvY2tfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvY2tcbG9ja19yZWdpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbG9ja1xsb2NrX3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbG9ja1xsb2NrX3RpbWVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvY2tcbG9ja191dGlsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvZ1xsb2cuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbG9nXGxvZ19hcmNoaXZlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvZ1xsb2dfY29tcGFyZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2dcbG9nX2RlYnVnLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvZ1xsb2dfZ2V0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvZ1xsb2dfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvZ1xsb2dfcHV0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvZ1xsb2dfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cbWtwYXRoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX2FsbG9jLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX2JoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX2ZnZXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXBcbXBfZm1ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtcFxtcF9mb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtcFxtcF9mcHV0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX2ZzZXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXBcbXBfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX212Y2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXBcbXBfcmVnaW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX3JlZ2lzdGVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX3Jlc2l6ZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtcFxtcF9zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX3N5bmMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXBcbXBfdHJpY2tsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjcnlwdG9cbWVyc2VubmVcbXQxOTkzN2RiLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG11dGV4XG11dF9hbGxvYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtdXRleFxtdXRfZmFpbGNoay5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtdXRleFxtdXRfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG11dGV4XG11dF9yZWdpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXV0ZXhcbXV0X3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXV0ZXhcbXV0X3dpbjMyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGNvbW1vblxvcGVuZmxhZ3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Ncb3NfYWJvcnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19hYnMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Ncb3NfYWRkcmluZm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Ncb3NfYWxsb2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19jbG9jay5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc193aW5kb3dzXG9zX2NvbmZpZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc193aW5kb3dzXG9zX2NwdS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc1xvc19jdGltZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc193aW5kb3dzXG9zX2Rpci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc193aW5kb3dzXG9zX2Vycm5vLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfZmlkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfZmxvY2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19mc3luYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc193aW5kb3dzXG9zX2dldGVudi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc193aW5kb3dzXG9zX2hhbmRsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc193aW5kb3dzXG9zX21hcC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cb3NfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfbWtkaXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19vcGVuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zXG9zX3BpZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc193aW5kb3dzXG9zX3JlbmFtZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc1xvc19yb290LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zXG9zX3JwYXRoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfcncuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19zZWVrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zXG9zX3N0YWNrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3Nfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc1xvc190bXBkaXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc190cnVuY2F0ZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc1xvc191aWQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc191bmxpbmsuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc195aWVsZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxxYW1ccWFtLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHFhbVxxYW1fYXV0by5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxxYW1ccWFtX2NvbnYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccWFtXHFhbV9maWxlcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxxYW1ccWFtX21ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxxYW1ccWFtX29wZW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccWFtXHFhbV9yZWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccWFtXHFhbV9zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHFhbVxxYW1fdXBncmFkZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxxYW1ccWFtX3ZlcmlmeS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxyZXBccmVwX2F1dG8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwXHJlcF9iYWNrdXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwXHJlcF9lbGVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxyZXBccmVwX2xlYXNlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcFxyZXBfbG9nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcFxyZXBfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcFxyZXBfcmVjb3JkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcFxyZXBfcmVnaW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcFxyZXBfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxyZXBccmVwX3V0aWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwXHJlcF92ZXJpZnkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl9hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcG1nclxyZXBtZ3JfZWxlY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl9tc2cuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl9uZXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl9xdWV1ZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxyZXBtZ3JccmVwbWdyX3NlbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxyZXBtZ3JccmVwbWdyX3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl91dGlsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcG1nclxyZXBtZ3Jfd2luZG93cy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjcnlwdG9ccmlqbmRhZWxccmlqbmRhZWwtYWxnLWZzdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjcnlwdG9ccmlqbmRhZWxccmlqbmRhZWwtYXBpLWZzdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxzZXF1ZW5jZVxzZXFfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxzZXF1ZW5jZVxzZXF1ZW5jZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxobWFjXHNoYTEuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY2xpYlxzdHJzZXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cdHhuXHR4bi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlx0eG5cdHhuX2F1dG8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cdHhuXHR4bl9jaGtwdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlx0eG5cdHhuX2ZhaWxjaGsuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cdHhuXHR4bl9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cdHhuXHR4bl9yZWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cdHhuXHR4bl9yZWNvdmVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHR4blx0eG5fcmVnaW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHR4blx0eG5fc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlx0eG5cdHhuX3V0aWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY29tbW9uXHV0aWxfY2FjaGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY29tbW9uXHV0aWxfbG9nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGNvbW1vblx1dGlsX3NpZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlx4YVx4YS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlx4YVx4YV9kYi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlx4YVx4YV9tYXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY29tbW9uXHplcm9maWxsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0iX2JzZGRiIgorCVByb2plY3RHVUlEPSJ7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fSIKKwlSb290TmFtZXNwYWNlPSJfYnNkZGIiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3MsLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzLC4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi4iCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzLC4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi4iCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93cywuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3MsLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93cywuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGJzZGRiRGVwTGlicykiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93cywuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGJzZGRiRGVwTGlicykiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93cywuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGJzZGRiRGVwTGlicykiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xic2RkYi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9ic2RkYi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkJlcmtlbGV5IERCIDQuNy4yNSBTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjcnlwdG9cYWVzX21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X2NvbXBhY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9jb21wYXJlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfY29udi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X2N1cmFkai5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X2N1cnNvci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X2RlbGV0ZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X29wZW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9wdXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9yZWMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9yZWNsYWltLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfcmVjbm8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9yc2VhcmNoLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfc2VhcmNoLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfc3BsaXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxidHJlZVxidF9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cYnRyZWVcYnRfdXBncmFkZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0X3ZlcmlmeS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGJ0cmVlXGJ0cmVlX2F1dG8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxjcmRlbF9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcY3JkZWxfcmVjLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY3J5cHRvXGNyeXB0by5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfYW0uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY29tbW9uXGRiX2J5dGVvcmRlci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX2NhbS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX2Nkcy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX2NvbnYuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9kaXNwYXRjaC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX2R1cC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGNvbW1vblxkYl9lcnIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cZGJfZ2V0bG9uZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGNvbW1vblxkYl9pZHNwYWNlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfaWZhY2UuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9qb2luLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY29tbW9uXGRiX2xvZzIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9tZXRhLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfb3Blbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX292ZXJmbG93LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfb3ZmbF92cmZ5LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfcHIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9yZWMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9yZWNsYWltLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfcmVtb3ZlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfcmVuYW1lLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfcmV0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfc2V0aWQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9zZXRsc24uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cZGJfc2hhc2guYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl9zdGF0aS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX3RydW5jYXRlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfdXBnLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJcZGJfdXBnX29wZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRiXGRiX3ZyZnkuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYlxkYl92cmZ5dXRpbC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRibVxkYm0uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYnJlZ1xkYnJlZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGRicmVnXGRicmVnX2F1dG8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYnJlZ1xkYnJlZ19yZWMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxkYnJlZ1xkYnJlZ19zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZGJyZWdcZGJyZWdfdXRpbC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGNvbW1vblxkYnQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxlbnZcZW52X2FsbG9jLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZW52XGVudl9jb25maWcuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxlbnZcZW52X2ZhaWxjaGsuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxlbnZcZW52X2ZpbGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxlbnZcZW52X2dsb2JhbHMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxlbnZcZW52X21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGVudlxlbnZfbmFtZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGVudlxlbnZfb3Blbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGVudlxlbnZfcmVjb3Zlci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGVudlxlbnZfcmVnaW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZW52XGVudl9yZWdpc3Rlci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGVudlxlbnZfc2lnLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZW52XGVudl9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cZmlsZW9wc1xmaWxlb3BzX2F1dG8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxmaWxlb3BzXGZvcF9iYXNpYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGZpbGVvcHNcZm9wX3JlYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGZpbGVvcHNcZm9wX3V0aWwuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxoYXNoXGhhc2guYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxoYXNoXGhhc2hfYXV0by5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF9jb252LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caGFzaFxoYXNoX2R1cC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF9mdW5jLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caGFzaFxoYXNoX21ldGEuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxoYXNoXGhhc2hfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caGFzaFxoYXNoX29wZW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxoYXNoXGhhc2hfcGFnZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF9yZWMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxoYXNoXGhhc2hfcmVjbGFpbS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGhhc2hcaGFzaF9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caGFzaFxoYXNoX3VwZ3JhZGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxoYXNoXGhhc2hfdmVyaWZ5LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caG1hY1xobWFjLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5caHNlYXJjaFxoc2VhcmNoLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbG9ja1xsb2NrLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbG9ja1xsb2NrX2RlYWRsb2NrLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbG9ja1xsb2NrX2ZhaWxjaGsuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2NrXGxvY2tfaWQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2NrXGxvY2tfbGlzdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvY2tcbG9ja19tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2NrXGxvY2tfcmVnaW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbG9ja1xsb2NrX3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2NrXGxvY2tfdGltZXIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2NrXGxvY2tfdXRpbC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvZ1xsb2cuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2dcbG9nX2FyY2hpdmUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2dcbG9nX2NvbXBhcmUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2dcbG9nX2RlYnVnLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbG9nXGxvZ19nZXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxsb2dcbG9nX21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXGxvZ1xsb2dfcHV0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbG9nXGxvZ19zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY29tbW9uXG1rcGF0aC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX2FsbG9jLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXBcbXBfYmguYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtcFxtcF9mZ2V0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXBcbXBfZm1ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX2ZvcGVuLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXBcbXBfZnB1dC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX2ZzZXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtcFxtcF9tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtcFxtcF9tdmNjLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXBcbXBfcmVnaW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXBcbXBfcmVnaXN0ZXIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtcFxtcF9yZXNpemUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtcFxtcF9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXBcbXBfc3luYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG1wXG1wX3RyaWNrbGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjcnlwdG9cbWVyc2VubmVcbXQxOTkzN2RiLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXV0ZXhcbXV0X2FsbG9jLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXV0ZXhcbXV0X2ZhaWxjaGsuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxtdXRleFxtdXRfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXV0ZXhcbXV0X3JlZ2lvbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG11dGV4XG11dF9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cbXV0ZXhcbXV0X3dpbjMyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY29tbW9uXG9wZW5mbGFncy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zXG9zX2Fib3J0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19hYnMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc1xvc19hZGRyaW5mby5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zXG9zX2FsbG9jLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19jbG9jay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfY29uZmlnLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19jcHUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc1xvc19jdGltZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfZGlyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19lcnJuby5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfZmlkLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19mbG9jay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfZnN5bmMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxvc193aW5kb3dzXG9zX2dldGVudi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfaGFuZGxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19tYXAuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cb3NfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19ta2Rpci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3Nfb3Blbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zXG9zX3BpZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfcmVuYW1lLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Ncb3Nfcm9vdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zXG9zX3JwYXRoLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19ydy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3Nfc2Vlay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zXG9zX3N0YWNrLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc19zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Ncb3NfdG1wZGlyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc190cnVuY2F0ZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zXG9zX3VpZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXG9zX3dpbmRvd3Ncb3NfdW5saW5rLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cb3Nfd2luZG93c1xvc195aWVsZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHFhbVxxYW0uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxxYW1ccWFtX2F1dG8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxxYW1ccWFtX2NvbnYuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxxYW1ccWFtX2ZpbGVzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccWFtXHFhbV9tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxxYW1ccWFtX29wZW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxxYW1ccWFtX3JlYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHFhbVxxYW1fc3RhdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHFhbVxxYW1fdXBncmFkZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHFhbVxxYW1fdmVyaWZ5LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwXHJlcF9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwXHJlcF9iYWNrdXAuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxyZXBccmVwX2VsZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwXHJlcF9sZWFzZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcFxyZXBfbG9nLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwXHJlcF9tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxyZXBccmVwX3JlY29yZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcFxyZXBfcmVnaW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwXHJlcF9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwXHJlcF91dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwXHJlcF92ZXJpZnkuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxyZXBtZ3JccmVwbWdyX2F1dG8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxyZXBtZ3JccmVwbWdyX2VsZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl9tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxyZXBtZ3JccmVwbWdyX21zZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcG1nclxyZXBtZ3JfbmV0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl9xdWV1ZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHJlcG1nclxyZXBtZ3Jfc2VsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl91dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ccmVwbWdyXHJlcG1ncl93aW5kb3dzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY3J5cHRvXHJpam5kYWVsXHJpam5kYWVsLWFsZy1mc3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjcnlwdG9ccmlqbmRhZWxccmlqbmRhZWwtYXBpLWZzdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHNlcXVlbmNlXHNlcV9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cc2VxdWVuY2Vcc2VxdWVuY2UuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxobWFjXHNoYTEuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjbGliXHN0cnNlcC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHR4blx0eG4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlx0eG5cdHhuX2F1dG8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlx0eG5cdHhuX2Noa3B0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cdHhuXHR4bl9mYWlsY2hrLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cdHhuXHR4bl9tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlx0eG5cdHhuX3JlYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHR4blx0eG5fcmVjb3Zlci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHR4blx0eG5fcmVnaW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cdHhuXHR4bl9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cdHhuXHR4bl91dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY29tbW9uXHV0aWxfY2FjaGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cdXRpbF9sb2cuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlxjb21tb25cdXRpbF9zaWcuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC43LjI1LjBcYnVpbGRfd2luZG93c1wuLlx4YVx4YS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzXC4uXHhhXHhhX2RiLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5ceGFceGFfbWFwLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3NcLi5cY29tbW9uXHplcm9maWxsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL19ic2RkYjQ0LnZjcHJvaiBiL1BDL1ZTOC4wL19ic2RkYjQ0LnZjcHJvagppbmRleCBmZDhiOGNhLi5iN2JjNTE5IDEwMDY0NAotLS0gYS9QQy9WUzguMC9fYnNkZGI0NC52Y3Byb2oKKysrIGIvUEMvVlM4LjAvX2JzZGRiNDQudmNwcm9qCkBAIC0xLDEyNTIgKzEsMTI1MiBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9ic2RkYjQ0Ig0KLQlQcm9qZWN0R1VJRD0iezYyMTcyQzdELUIzOUUtNDA5QS1CMzUyLTM3MEZGNTA5OEMxOX0iDQotCVJvb3ROYW1lc3BhY2U9Il9ic2RkYjQ0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMjsuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi4iDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyOy4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IkRJQUdOT1NUSUMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyOy4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyOy4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyOy4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMjsuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi4iDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iNCINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzI7Li5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0Ig0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMjsuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi4iDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9jb21wYWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfY29tcGFyZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGJ0cmVlXGJ0X2NvbnYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9jdXJhZGouYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9jdXJzb3IuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9kZWxldGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9vcGVuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfcHV0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfcmVjbGFpbS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGJ0cmVlXGJ0X3JlY25vLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfcnNlYXJjaC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGJ0cmVlXGJ0X3NlYXJjaC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGJ0cmVlXGJ0X3NwbGl0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGJ0cmVlXGJ0X3VwZ3JhZGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF92ZXJpZnkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidHJlZV9hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcY3JkZWxfYXV0by5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGNyZGVsX3JlYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblxjcnlwdG9fc3R1Yi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfYW0uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cY29tbW9uXGRiX2J5dGVvcmRlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX2NhbS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblxkYl9jbG9jay5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX2NvbnYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9kaXNwYXRjaC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX2R1cC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblxkYl9lcnIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxjb21tb25cZGJfZ2V0bG9uZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblxkYl9pZHNwYWNlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfaWZhY2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9qb2luLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cY29tbW9uXGRiX2xvZzIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9tZXRhLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX292ZXJmbG93LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfb3ZmbF92cmZ5LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfcHIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9yZWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9yZWNsYWltLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfcmVtb3ZlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfcmVuYW1lLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfcmV0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZW52XGRiX3NhbGxvYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX3NldGlkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfc2V0bHNuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZW52XGRiX3NoYXNoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfc3RhdGkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl90cnVuY2F0ZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX3VwZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX3VwZ19vcGQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl92cmZ5LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfdnJmeXV0aWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYm1cZGJtLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJyZWdcZGJyZWcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYnJlZ1xkYnJlZ19hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJyZWdcZGJyZWdfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJyZWdcZGJyZWdfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRicmVnXGRicmVnX3V0aWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxlbnZcZW52X2ZhaWxjaGsuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxlbnZcZW52X2ZpbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxlbnZcZW52X21ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGVudlxlbnZfb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGVudlxlbnZfcmVjb3Zlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGVudlxlbnZfcmVnaW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZW52XGVudl9yZWdpc3Rlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGVudlxlbnZfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGZpbGVvcHNcZmlsZW9wc19hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZmlsZW9wc1xmb3BfYmFzaWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxmaWxlb3BzXGZvcF9yZWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxmaWxlb3BzXGZvcF91dGlsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caGFzaFxoYXNoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caGFzaFxoYXNoX2F1dG8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxoYXNoXGhhc2hfY29udi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhhc2hcaGFzaF9kdXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxoYXNoXGhhc2hfZnVuYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhhc2hcaGFzaF9tZXRhLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caGFzaFxoYXNoX21ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhhc2hcaGFzaF9vcGVuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caGFzaFxoYXNoX3BhZ2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxoYXNoXGhhc2hfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caGFzaFxoYXNoX3JlY2xhaW0uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxoYXNoXGhhc2hfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhhc2hcaGFzaF91cGdyYWRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caGFzaFxoYXNoX3ZlcmlmeS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhtYWNcaG1hYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhzZWFyY2hcaHNlYXJjaC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvY2tcbG9jay5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvY2tcbG9ja19kZWFkbG9jay5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvY2tcbG9ja19mYWlsY2hrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9ja1xsb2NrX2lkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9ja1xsb2NrX2xpc3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxsb2NrXGxvY2tfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9ja1xsb2NrX3JlZ2lvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvY2tcbG9ja19zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9ja1xsb2NrX3RpbWVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9ja1xsb2NrX3V0aWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxsb2dcbG9nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9nXGxvZ19hcmNoaXZlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9nXGxvZ19jb21wYXJlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9nXGxvZ19kZWJ1Zy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvZ1xsb2dfZ2V0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9nXGxvZ19tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxsb2dcbG9nX3B1dC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvZ1xsb2dfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX2FsbG9jLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbXBcbXBfYmguYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtcFxtcF9mZ2V0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbXBcbXBfZm1ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX2ZvcGVuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbXBcbXBfZnB1dC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX2ZzZXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtcFxtcF9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtcFxtcF9yZWdpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtcFxtcF9yZWdpc3Rlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtcFxtcF9zeW5jLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbXBcbXBfdHJpY2tsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG11dGV4XG11dF9hbGxvYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG11dGV4XG11dF9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtdXRleFxtdXRfcmVnaW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbXV0ZXhcbXV0X3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtdXRleFxtdXRfd2luMzIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19hYnMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc1xvc19hbGxvYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zX3dpbjMyXG9zX2Nsb2NrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfY29uZmlnLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfZGlyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfZXJybm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19maWQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19mbG9jay5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zX3dpbjMyXG9zX2ZzeW5jLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfaGFuZGxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Ncb3NfaWQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19tYXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc1xvc19tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc1xvc19ta2Rpci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zXG9zX29mbGFncy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zX3dpbjMyXG9zX29wZW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc1xvc19yZWdpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19yZW5hbWUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc1xvc19yb290LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Ncb3NfcnBhdGguYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19ydy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zX3dpbjMyXG9zX3NlZWsuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19zbGVlcC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zX3dpbjMyXG9zX3NwaW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Ncb3NfdG1wZGlyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfdHJ1bmNhdGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc191bmxpbmsuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxxYW1ccWFtLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccWFtXHFhbV9hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccWFtXHFhbV9jb252LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccWFtXHFhbV9maWxlcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHFhbVxxYW1fbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccWFtXHFhbV9vcGVuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccWFtXHFhbV9yZWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxxYW1ccWFtX3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxxYW1ccWFtX3VwZ3JhZGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxxYW1ccWFtX3ZlcmlmeS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHJlcFxyZXBfYXV0by5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHJlcFxyZXBfYmFja3VwLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccmVwXHJlcF9lbGVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHJlcFxyZXBfbG9nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccmVwXHJlcF9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxyZXBccmVwX3JlY29yZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHJlcFxyZXBfcmVnaW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccmVwXHJlcF9zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccmVwXHJlcF91dGlsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccmVwXHJlcF92ZXJpZnkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxzZXF1ZW5jZVxzZXFfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHNlcXVlbmNlXHNlcXVlbmNlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caG1hY1xzaGExLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cY2xpYlxzdHJjYXNlY21wLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cdHhuXHR4bi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHR4blx0eG5fYXV0by5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHR4blx0eG5fY2hrcHQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx0eG5cdHhuX2ZhaWxjaGsuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx0eG5cdHhuX21ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHR4blx0eG5fcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cdHhuXHR4bl9yZWNvdmVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cdHhuXHR4bl9yZWdpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx0eG5cdHhuX3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx0eG5cdHhuX3V0aWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxjb21tb25cdXRpbF9jYWNoZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblx1dGlsX2xvZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblx1dGlsX3NpZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHhhXHhhLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ceGFceGFfZGIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx4YVx4YV9tYXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJfYnNkZGI0NCIKKwlQcm9qZWN0R1VJRD0iezYyMTcyQzdELUIzOUUtNDA5QS1CMzUyLTM3MEZGNTA5OEMxOX0iCisJUm9vdE5hbWVzcGFjZT0iX2JzZGRiNDQiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMjsuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi4iCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyOy4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iRElBR05PU1RJQyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzI7Li5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMjsuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi4iCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSI0IgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMjsuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi4iCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMjsuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi4iCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpYnJhcmlhblRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjQiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzI7Li5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaWJyYXJpYW5Ub29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iNCIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyOy4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlicmFyaWFuVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9jb21wYWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9jb21wYXJlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9jb252LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9jdXJhZGouYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGJ0cmVlXGJ0X2N1cnNvci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfZGVsZXRlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGJ0cmVlXGJ0X29wZW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGJ0cmVlXGJ0X3B1dC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfcmVjLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9yZWNsYWltLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9yZWNuby5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfcnNlYXJjaC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfc2VhcmNoLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidF9zcGxpdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfc3RhdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfdXBncmFkZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cYnRyZWVcYnRfdmVyaWZ5LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxidHJlZVxidHJlZV9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxjcmRlbF9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxjcmRlbF9yZWMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblxjcnlwdG9fc3R1Yi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX2FtLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxjb21tb25cZGJfYnl0ZW9yZGVyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9jYW0uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblxkYl9jbG9jay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfY29udi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfZGlzcGF0Y2guYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX2R1cC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cY29tbW9uXGRiX2Vyci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cY29tbW9uXGRiX2dldGxvbmcuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblxkYl9pZHNwYWNlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9pZmFjZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfam9pbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cY29tbW9uXGRiX2xvZzIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX21ldGEuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfb3Blbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfb3ZlcmZsb3cuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX292ZmxfdnJmeS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfcHIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX3JlYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfcmVjbGFpbS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfcmVtb3ZlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9yZW5hbWUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX3JldC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZW52XGRiX3NhbGxvYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfc2V0aWQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX3NldGxzbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZW52XGRiX3NoYXNoLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYlxkYl9zdGF0aS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfdHJ1bmNhdGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRiXGRiX3VwZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfdXBnX29wZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfdnJmeS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZGJcZGJfdnJmeXV0aWwuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRibVxkYm0uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRicmVnXGRicmVnLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYnJlZ1xkYnJlZ19hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxkYnJlZ1xkYnJlZ19yZWMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRicmVnXGRicmVnX3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGRicmVnXGRicmVnX3V0aWwuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGVudlxlbnZfZmFpbGNoay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZW52XGVudl9maWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxlbnZcZW52X21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZW52XGVudl9vcGVuLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxlbnZcZW52X3JlY292ZXIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGVudlxlbnZfcmVnaW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxlbnZcZW52X3JlZ2lzdGVyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxlbnZcZW52X3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGZpbGVvcHNcZmlsZW9wc19hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxmaWxlb3BzXGZvcF9iYXNpYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cZmlsZW9wc1xmb3BfcmVjLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxmaWxlb3BzXGZvcF91dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxoYXNoXGhhc2guYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhhc2hcaGFzaF9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxoYXNoXGhhc2hfY29udi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caGFzaFxoYXNoX2R1cC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caGFzaFxoYXNoX2Z1bmMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhhc2hcaGFzaF9tZXRhLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxoYXNoXGhhc2hfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxoYXNoXGhhc2hfb3Blbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caGFzaFxoYXNoX3BhZ2UuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhhc2hcaGFzaF9yZWMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhhc2hcaGFzaF9yZWNsYWltLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxoYXNoXGhhc2hfc3RhdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caGFzaFxoYXNoX3VwZ3JhZGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhhc2hcaGFzaF92ZXJpZnkuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGhtYWNcaG1hYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5caHNlYXJjaFxoc2VhcmNoLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxsb2NrXGxvY2suYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvY2tcbG9ja19kZWFkbG9jay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9ja1xsb2NrX2ZhaWxjaGsuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvY2tcbG9ja19pZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9ja1xsb2NrX2xpc3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvY2tcbG9ja19tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvY2tcbG9ja19yZWdpb24uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvY2tcbG9ja19zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxsb2NrXGxvY2tfdGltZXIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvY2tcbG9ja191dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxsb2dcbG9nLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxsb2dcbG9nX2FyY2hpdmUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvZ1xsb2dfY29tcGFyZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9nXGxvZ19kZWJ1Zy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9nXGxvZ19nZXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGxvZ1xsb2dfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxsb2dcbG9nX3B1dC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbG9nXGxvZ19zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtcFxtcF9hbGxvYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbXBcbXBfYmguYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX2ZnZXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX2ZtZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX2ZvcGVuLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtcFxtcF9mcHV0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtcFxtcF9mc2V0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxtcFxtcF9tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX3JlZ2lvbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbXBcbXBfcmVnaXN0ZXIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX3N5bmMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG1wXG1wX3RyaWNrbGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG11dGV4XG11dF9hbGxvYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbXV0ZXhcbXV0X21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbXV0ZXhcbXV0X3JlZ2lvbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cbXV0ZXhcbXV0X3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG11dGV4XG11dF93aW4zMi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfYWJzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc1xvc19hbGxvYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfY2xvY2suYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zX3dpbjMyXG9zX2NvbmZpZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfZGlyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19lcnJuby5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfZmlkLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19mbG9jay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfZnN5bmMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zX3dpbjMyXG9zX2hhbmRsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Ncb3NfaWQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zX3dpbjMyXG9zX21hcC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Ncb3NfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc1xvc19ta2Rpci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Ncb3Nfb2ZsYWdzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19vcGVuLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc1xvc19yZWdpb24uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zX3dpbjMyXG9zX3JlbmFtZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Ncb3Nfcm9vdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Ncb3NfcnBhdGguYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXG9zX3dpbjMyXG9zX3J3LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19zZWVrLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc19zbGVlcC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3Nfc3Bpbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3Nfc3RhdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Ncb3NfdG1wZGlyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxvc193aW4zMlxvc190cnVuY2F0ZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cb3Nfd2luMzJcb3NfdW5saW5rLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxxYW1ccWFtLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxxYW1ccWFtX2F1dG8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHFhbVxxYW1fY29udi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccWFtXHFhbV9maWxlcy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccWFtXHFhbV9tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHFhbVxxYW1fb3Blbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccWFtXHFhbV9yZWMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHFhbVxxYW1fc3RhdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccWFtXHFhbV91cGdyYWRlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxxYW1ccWFtX3ZlcmlmeS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccmVwXHJlcF9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxyZXBccmVwX2JhY2t1cC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccmVwXHJlcF9lbGVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccmVwXHJlcF9sb2cuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHJlcFxyZXBfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxyZXBccmVwX3JlY29yZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccmVwXHJlcF9yZWdpb24uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHJlcFxyZXBfc3RhdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ccmVwXHJlcF91dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxyZXBccmVwX3ZlcmlmeS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cc2VxdWVuY2Vcc2VxX3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHNlcXVlbmNlXHNlcXVlbmNlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxobWFjXHNoYTEuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNsaWJcc3RyY2FzZWNtcC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cdHhuXHR4bi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cdHhuXHR4bl9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx0eG5cdHhuX2Noa3B0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx0eG5cdHhuX2ZhaWxjaGsuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHR4blx0eG5fbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx0eG5cdHhuX3JlYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cdHhuXHR4bl9yZWNvdmVyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx0eG5cdHhuX3JlZ2lvbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5cdHhuXHR4bl9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx0eG5cdHhuX3V0aWwuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblx1dGlsX2NhY2hlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlxjb21tb25cdXRpbF9sb2cuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXGNvbW1vblx1dGlsX3NpZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxkYi00LjQuMjBcYnVpbGRfd2luMzJcLi5ceGFceGEuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cZGItNC40LjIwXGJ1aWxkX3dpbjMyXC4uXHhhXHhhX2RiLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXGRiLTQuNC4yMFxidWlsZF93aW4zMlwuLlx4YVx4YV9tYXAuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX2N0eXBlcy52Y3Byb2ogYi9QQy9WUzguMC9fY3R5cGVzLnZjcHJvagppbmRleCA4OTczMjMzLi5lYjE5OTQzIDEwMDY0NAotLS0gYS9QQy9WUzguMC9fY3R5cGVzLnZjcHJvagorKysgYi9QQy9WUzguMC9fY3R5cGVzLnZjcHJvagpAQCAtMSw3MDUgKzEsNzA1IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iX2N0eXBlcyINCi0JUHJvamVjdEdVSUQ9InswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KLQlSb290TmFtZXNwYWNlPSJfY3R5cGVzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXNfZGxmY24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpdGFyZ2V0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjYWxsYmFja3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjYWxscHJvYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xzdGdkaWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyINCi0JCQkJPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIg0KLQkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyINCi0JCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJfY3R5cGVzIgorCVByb2plY3RHVUlEPSJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSIKKwlSb290TmFtZXNwYWNlPSJfY3R5cGVzIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSIKKwkJCQlTdWJTeXN0ZW09IjAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiCisJCQkJU3ViU3lzdGVtPSIwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSIKKwkJCQlTdWJTeXN0ZW09IjAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIgorCQkJCVN1YlN5c3RlbT0iMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIgorCQkJCVN1YlN5c3RlbT0iMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIgorCQkJCVN1YlN5c3RlbT0iMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY3R5cGVzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXNfZGxmY24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpX2NvbW1vbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpY29uZmlnLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZml0YXJnZXQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbHByb2MuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNmaWVsZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xtYWxsb2NfY2xvc3VyZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNccHJlcF9jaWYuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXHN0Z2RpY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjMyLmMiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0IgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXHdpbjY0LmFzbSIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL1ppIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyIKKwkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7IgorCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7IgorCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9GbyAmcXVvdDskKEludERpcilcd2luNjQub2JqJnF1b3Q7ICZxdW90OyQoSW5wdXRQYXRoKSZxdW90OyYjeDBEOyYjeDBBOyIKKwkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9fY3R5cGVzX3Rlc3QudmNwcm9qIGIvUEMvVlM4LjAvX2N0eXBlc190ZXN0LnZjcHJvagppbmRleCAwOTcyNDFlLi42ZTE4YTIzIDEwMDY0NAotLS0gYS9QQy9WUzguMC9fY3R5cGVzX3Rlc3QudmNwcm9qCisrKyBiL1BDL1ZTOC4wL19jdHlwZXNfdGVzdC52Y3Byb2oKQEAgLTEsNTIxICsxLDUyMSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9jdHlwZXNfdGVzdCINCi0JUHJvamVjdEdVSUQ9Ins5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9Ig0KLQlSb290TmFtZXNwYWNlPSJfY3R5cGVzX3Rlc3QiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJfY3R5cGVzX3Rlc3QiCisJUHJvamVjdEdVSUQ9Ins5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9IgorCVJvb3ROYW1lc3BhY2U9Il9jdHlwZXNfdGVzdCIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xfY3R5cGVzX3Rlc3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9fZWxlbWVudHRyZWUudmNwcm9qIGIvUEMvVlM4LjAvX2VsZW1lbnR0cmVlLnZjcHJvagppbmRleCA0NTdkYTcyLi40MjRjY2U0IDEwMDY0NAotLS0gYS9QQy9WUzguMC9fZWxlbWVudHRyZWUudmNwcm9qCisrKyBiL1BDL1ZTOC4wL19lbGVtZW50dHJlZS52Y3Byb2oKQEAgLTEsNjEzICsxLDYxMyBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9lbGVtZW50dHJlZSINCi0JUHJvamVjdEdVSUQ9InsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KLQlSb290TmFtZXNwYWNlPSJfZWxlbWVudHRyZWUiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGFzY2lpLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGFzY2lpdGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2NvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdF9leHRlcm5hbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxpYXNjaWl0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcaW50ZXJuYWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbGF0aW4xdGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XG1hY2NvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxuYW1ldGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHB5ZXhwYXRucy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx1dGY4dGFiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHdpbmNvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0iX2VsZW1lbnR0cmVlIgorCVByb2plY3RHVUlEPSJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSIKKwlSb290TmFtZXNwYWNlPSJfZWxlbWVudHRyZWUiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcYXNjaWkuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxhc2NpaXRhYi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfY29uZmlnLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfZXh0ZXJuYWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxpYXNjaWl0YWIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxpbnRlcm5hbC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGxhdGluMXRhYi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XG1hY2NvbmZpZy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XG5hbWV0YWIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxweWV4cGF0bnMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx1dGY4dGFiLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcd2luY29uZmlnLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9lbGVtZW50dHJlZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9faGFzaGxpYi52Y3Byb2ogYi9QQy9WUzguMC9faGFzaGxpYi52Y3Byb2oKaW5kZXggZmFhODM4OC4uZjhiYjk2MiAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvX2hhc2hsaWIudmNwcm9qCisrKyBiL1BDL1ZTOC4wL19oYXNobGliLnZjcHJvagpAQCAtMSw1NDUgKzEsNTQ1IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iX2hhc2hsaWIiDQotCVByb2plY3RHVUlEPSJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCi0JUm9vdE5hbWVzcGFjZT0iX2hhc2hsaWIiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJfaGFzaGxpYiIKKwlQcm9qZWN0R1VJRD0iezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iCisJUm9vdE5hbWVzcGFjZT0iX2hhc2hsaWIiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX21zaS52Y3Byb2ogYi9QQy9WUzguMC9fbXNpLnZjcHJvagppbmRleCA5OTk3MWM2Li42ZmVmYTEyIDEwMDY0NAotLS0gYS9QQy9WUzguMC9fbXNpLnZjcHJvagorKysgYi9QQy9WUzguMC9fbXNpLnZjcHJvagpAQCAtMSw1MjkgKzEsNTI5IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iX21zaSINCi0JUHJvamVjdEdVSUQ9InszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KLQlSb290TmFtZXNwYWNlPSJfbXNpIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xfbXNpLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0iX21zaSIKKwlQcm9qZWN0R1VJRD0iezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iCisJUm9vdE5hbWVzcGFjZT0iX21zaSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXF9tc2kuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2ogYi9QQy9WUzguMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagppbmRleCBjMmJiZWM0Li5lZTc2YWVjIDEwMDY0NAotLS0gYS9QQy9WUzguMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagorKysgYi9QQy9WUzguMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagpAQCAtMSw1NTcgKzEsNTU3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iX211bHRpcHJvY2Vzc2luZyINCi0JUHJvamVjdEdVSUQ9Ins5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KLQlSb290TmFtZXNwYWNlPSJfbXVsdGlwcm9jZXNzaW5nIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXGNvbm5lY3Rpb24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdccGlwZV9jb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc29ja2V0X2Nvbm5lY3Rpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1x3aW4zMl9mdW5jdGlvbnMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJfbXVsdGlwcm9jZXNzaW5nIgorCVByb2plY3RHVUlEPSJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSIKKwlSb290TmFtZXNwYWNlPSJfbXVsdGlwcm9jZXNzaW5nIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXGNvbm5lY3Rpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdccGlwZV9jb25uZWN0aW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNvY2tldF9jb25uZWN0aW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1x3aW4zMl9mdW5jdGlvbnMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX3NvY2tldC52Y3Byb2ogYi9QQy9WUzguMC9fc29ja2V0LnZjcHJvagppbmRleCA4YWJkOTgyLi5jY2RhMTRiIDEwMDY0NAotLS0gYS9QQy9WUzguMC9fc29ja2V0LnZjcHJvagorKysgYi9QQy9WUzguMC9fc29ja2V0LnZjcHJvagpAQCAtMSw1MzcgKzEsNTM3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0iX3NvY2tldCINCi0JUHJvamVjdEdVSUQ9Ins4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlSb290TmFtZXNwYWNlPSJfc29ja2V0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9Il9zb2NrZXQiCisJUHJvamVjdEdVSUQ9Ins4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9IgorCVJvb3ROYW1lc3BhY2U9Il9zb2NrZXQiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX3NxbGl0ZTMudmNwcm9qIGIvUEMvVlM4LjAvX3NxbGl0ZTMudmNwcm9qCmluZGV4IDY0ZjE5ZjEuLmQ5ZTg5YzcgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL19zcWxpdGUzLnZjcHJvagorKysgYi9QQy9WUzguMC9fc3FsaXRlMy52Y3Byb2oKQEAgLTEsNjEzICsxLDYxMyBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9zcWxpdGUzIg0KLQlQcm9qZWN0R1VJRD0iezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQotCVJvb3ROYW1lc3BhY2U9Il9zcWxpdGUzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHNxbGl0ZS0zLjYuMjEiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHNxbGl0ZS0zLjYuMjEiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHNxbGl0ZS0zLjYuMjEiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHNxbGl0ZWNvbXBhdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9Il9zcWxpdGUzIgorCVByb2plY3RHVUlEPSJ7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fSIKKwlSb290TmFtZXNwYWNlPSJfc3FsaXRlMyIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHNxbGl0ZS0zLjYuMjEiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXC4uXHNxbGl0ZS0zLjYuMjEiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3FsaXRlY29tcGF0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL19zc2wudmNwcm9qIGIvUEMvVlM4LjAvX3NzbC52Y3Byb2oKaW5kZXggNjlmNzcyNi4uMmQxMmU1NiAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvX3NzbC52Y3Byb2oKKysrIGIvUEMvVlM4LjAvX3NzbC52Y3Byb2oKQEAgLTEsNTQ1ICsxLDU0NSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il9zc2wiDQotCVByb2plY3RHVUlEPSJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUm9vdE5hbWVzcGFjZT0iX3NzbCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zc2wuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJfc3NsIgorCVByb2plY3RHVUlEPSJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSIKKwlSb290TmFtZXNwYWNlPSJfc3NsIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NzbC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9fdGVzdGNhcGkudmNwcm9qIGIvUEMvVlM4LjAvX3Rlc3RjYXBpLnZjcHJvagppbmRleCA3NmFkMmQ4Li4yNDgzNDMzIDEwMDY0NAotLS0gYS9QQy9WUzguMC9fdGVzdGNhcGkudmNwcm9qCisrKyBiL1BDL1ZTOC4wL190ZXN0Y2FwaS52Y3Byb2oKQEAgLTEsNTIxICsxLDUyMSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il90ZXN0Y2FwaSINCi0JUHJvamVjdEdVSUQ9Ins2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KLQlSb290TmFtZXNwYWNlPSJfdGVzdGNhcGkiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9Il90ZXN0Y2FwaSIKKwlQcm9qZWN0R1VJRD0iezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iCisJUm9vdE5hbWVzcGFjZT0iX3Rlc3RjYXBpIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfdGVzdGNhcGltb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvX3RraW50ZXIudmNwcm9qIGIvUEMvVlM4LjAvX3RraW50ZXIudmNwcm9qCmluZGV4IDk3MDBiZGUuLjYwZTUwY2UgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL190a2ludGVyLnZjcHJvagorKysgYi9QQy9WUzguMC9fdGtpbnRlci52Y3Byb2oKQEAgLTEsNTQxICsxLDU0MSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Il90a2ludGVyIg0KLQlQcm9qZWN0R1VJRD0iezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQotCVJvb3ROYW1lc3BhY2U9Il90a2ludGVyIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGtEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWJEZWJ1ZykiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGs2NERpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliRGVidWcpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGs2NERpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGtEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGs2NERpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliKSINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGs2NERpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliKSINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90a2ludGVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHRrYXBwaW5pdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9Il90a2ludGVyIgorCVByb2plY3RHVUlEPSJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSIKKwlSb290TmFtZXNwYWNlPSJfdGtpbnRlciIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWJEZWJ1ZykiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGs2NERpcilcaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYkRlYnVnKSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWIpIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWIpIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWIpIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliKSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYikiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliKSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90a2ludGVyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGthcHBpbml0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL2JkaXN0X3dpbmluc3QudmNwcm9qIGIvUEMvVlM4LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2oKaW5kZXggZDExZWRmMi4uMGJkMmVlNiAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2oKKysrIGIvUEMvVlM4LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2oKQEAgLTEsMjcwICsxLDI3MCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9ImJkaXN0X3dpbmluc3QiDQotCVByb2plY3RHVUlEPSJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi0JUm9vdE5hbWVzcGFjZT0id2luaW5zdCINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIg0KLQkJCQlIZWFkZXJGaWxlTmFtZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBpbWFnZWhscC5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTguMC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC04LjAucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCi0JCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSkiDQotCQkJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSkiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiINCi0JCQkJSGVhZGVyRmlsZU5hbWU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZTsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjb21jdGwzMi5saWIgaW1hZ2VobHAubGliIg0KLQkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC04LjAtYW1kNjQuZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOC4wLWFtZDY0LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQotCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGV4dHJhY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iemxpYiINCi0JCQkJPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGFyY2hpdmUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5yYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcUHl0aG9uUG93ZXJlZC5ibXAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0iYmRpc3Rfd2luaW5zdCIKKwlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iCisJUm9vdE5hbWVzcGFjZT0id2luaW5zdCIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiCisJCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiIKKwkJCQlIZWFkZXJGaWxlTmFtZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjEiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlOy4uXC4uXE1vZHVsZXNcemxpYiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMCIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY29tY3RsMzIubGliIGltYWdlaGxwLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC04LjAuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC04LjAucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJT3V0cHV0RGlyZWN0b3J5PSIkKFBsYXRmb3JtTmFtZSlcJChDb25maWd1cmF0aW9uTmFtZSkiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiCisJCQkJSGVhZGVyRmlsZU5hbWU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIxIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZTsuLlwuLlxNb2R1bGVzXHpsaWIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjAiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJV2FybmluZ0xldmVsPSIzIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCUN1bHR1cmU9IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBpbWFnZWhscC5saWIiCisJCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOC4wLWFtZDY0LmV4ZSIKKwkJCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOC4wLWFtZDY0LnBkYiIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIgorCQkJCURhdGFFeGVjdXRpb25QcmV2ZW50aW9uPSIwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcZXh0cmFjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGluc3RhbGwuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iemxpYiIKKwkJCQk+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZmFzdC5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHp1dGlsLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQk8L0ZpbHRlcj4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XGFyY2hpdmUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyIKKwkJCUZpbHRlcj0iaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5yYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxQeXRob25Qb3dlcmVkLmJtcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvYnVpbGQuYmF0IGIvUEMvVlM4LjAvYnVpbGQuYmF0CmluZGV4IGE2ZDk2MWUuLjliYzgxODYgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL2J1aWxkLmJhdAorKysgYi9QQy9WUzguMC9idWlsZC5iYXQKQEAgLTEsMTcgKzEsMTcgQEAKLUBlY2hvIG9mZg0KLXJlbSBBIGJhdGNoIHByb2dyYW0gdG8gYnVpbGQgb3IgcmVidWlsZCBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbi4NCi1yZW0ganVzdCBmb3IgY29udmVuaWVuY2UuDQotDQotc2V0bG9jYWwNCi1zZXQgcGxhdGY9V2luMzINCi1zZXQgY29uZj1SZWxlYXNlDQotc2V0IGJ1aWxkPS9idWlsZA0KLQ0KLTpDaGVja09wdHMNCi1pZiAiJTEiPT0iLWMiIChzZXQgY29uZj0lMikgICAgICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgIiUxIj09Ii1wIiAoc2V0IHBsYXRmPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICIlMSI9PSItciIgKHNldCBidWlsZD0vcmVidWlsZCkgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotDQotc2V0IGNtZD1kZXZlbnYgcGNidWlsZC5zbG4gJWJ1aWxkJSAiJWNvbmYlfCVwbGF0ZiUiDQotZWNobyAlY21kJQ0KLSVjbWQlDQorQGVjaG8gb2ZmCityZW0gQSBiYXRjaCBwcm9ncmFtIHRvIGJ1aWxkIG9yIHJlYnVpbGQgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24uCityZW0ganVzdCBmb3IgY29udmVuaWVuY2UuCisKK3NldGxvY2FsCitzZXQgcGxhdGY9V2luMzIKK3NldCBjb25mPVJlbGVhc2UKK3NldCBidWlsZD0vYnVpbGQKKworOkNoZWNrT3B0cworaWYgIiUxIj09Ii1jIiAoc2V0IGNvbmY9JTIpICAgICAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiUxIj09Ii1wIiAoc2V0IHBsYXRmPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiUxIj09Ii1yIiAoc2V0IGJ1aWxkPS9yZWJ1aWxkKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKKworc2V0IGNtZD1kZXZlbnYgcGNidWlsZC5zbG4gJWJ1aWxkJSAiJWNvbmYlfCVwbGF0ZiUiCitlY2hvICVjbWQlCislY21kJQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvYnVpbGRfZW52LmJhdCBiL1BDL1ZTOC4wL2J1aWxkX2Vudi5iYXQKaW5kZXggMDEwMjRjZi4uNGM2N2FlMyAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvYnVpbGRfZW52LmJhdAorKysgYi9QQy9WUzguMC9idWlsZF9lbnYuYmF0CkBAIC0xICsxIEBACi1AJWNvbXNwZWMlIC9rIGVudi5iYXQgJSoNCitAJWNvbXNwZWMlIC9rIGVudi5iYXQgJSoKZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL2J1aWxkX3Bnby5iYXQgYi9QQy9WUzguMC9idWlsZF9wZ28uYmF0CmluZGV4IGQyOGE3NjcuLmEzN2I1YmYgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL2J1aWxkX3Bnby5iYXQKKysrIGIvUEMvVlM4LjAvYnVpbGRfcGdvLmJhdApAQCAtMSw0MSArMSw0MSBAQAotQGVjaG8gb2ZmDQotcmVtIEEgYmF0Y2ggcHJvZ3JhbSB0byBidWlsZCBQR08gKFByb2ZpbGUgZ3VpZGVkIG9wdGltaXphdGlvbikgYnkgZmlyc3QNCi1yZW0gYnVpbGRpbmcgaW5zdHJ1bWVudGVkIGJpbmFyaWVzLCB0aGVuIHJ1bm5pbmcgdGhlIHRlc3RzdWl0ZSwgYW5kDQotcmVtIGZpbmFsbHkgYnVpbGRpbmcgdGhlIG9wdGltaXplZCBjb2RlLg0KLXJlbSBOb3RlLCBhZnRlciB0aGUgZmlyc3QgaW5zdHJ1bWVudGVkIHJ1biwgb25lIGNhbiBqdXN0IGtlZXAgb24NCi1yZW0gYnVpbGRpbmcgdGhlIFBHVXBkYXRlIGNvbmZpZ3VyYXRpb24gd2hpbGUgZGV2ZWxvcGluZy4NCi0NCi1zZXRsb2NhbA0KLXNldCBwbGF0Zj1XaW4zMg0KLQ0KLXJlbSB1c2UgdGhlIHBlcmZvcm1hbmNlIHRlc3RzdWl0ZS4gIFRoaXMgaXMgcXVpY2sgYW5kIHNpbXBsZQ0KLXNldCBqb2IxPS4uXC4uXHRvb2xzXHB5YmVuY2hccHliZW5jaC5weSAtbiAxIC1DIDEgLS13aXRoLWdjDQotc2V0IHBhdGgxPS4uXC4uXHRvb2xzXHB5YmVuY2gNCi0NCi1yZW0gb3IgdGhlIHdob2xlIHRlc3RzdWl0ZSBmb3IgbW9yZSB0aG9yb3VnaCB0ZXN0aW5nDQotc2V0IGpvYjI9Li5cLi5cbGliXHRlc3RccmVncnRlc3QucHkNCi1zZXQgcGF0aDI9Li5cLi5cbGliDQotDQotc2V0IGpvYj0lam9iMSUNCi1zZXQgY2xycGF0aD0lcGF0aDElDQotDQotOkNoZWNrT3B0cw0KLWlmICIlMSI9PSItcCIgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLTIiIChzZXQgam9iPSVqb2IyJSkgJiAoc2V0IGNscnBhdGg9JXBhdGgyJSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotDQotc2V0IFBHST0lcGxhdGYlLXBnaQ0KLXNldCBQR089JXBsYXRmJS1wZ28NCi0NCi1AZWNobyBvbg0KLXJlbSBidWlsZCB0aGUgaW5zdHJ1bWVudGVkIHZlcnNpb24NCi1jYWxsIGJ1aWxkIC1wICVwbGF0ZiUgLWMgUEdJbnN0cnVtZW50DQotDQotcmVtIHJlbW92ZSAucHljIGZpbGVzLCAucGdjIGZpbGVzIGFuZCBleGVjdXRlIHRoZSBqb2INCi0lUEdJJVxweXRob24uZXhlIHJtcHljLnB5ICVjbHJwYXRoJQ0KLWRlbCAlUEdJJVwqLnBnYw0KLSVQR0klXHB5dGhvbi5leGUgJWpvYiUNCi0NCi1yZW0gZmluYWxseSBidWlsZCB0aGUgb3B0aW1pemVkIHZlcnNpb24NCi1pZiBleGlzdCAlUEdPJSBkZWwgL3MgL3EgJVBHTyUNCi1jYWxsIGJ1aWxkIC1wICVwbGF0ZiUgLWMgUEdVcGRhdGUNCi0NCitAZWNobyBvZmYKK3JlbSBBIGJhdGNoIHByb2dyYW0gdG8gYnVpbGQgUEdPIChQcm9maWxlIGd1aWRlZCBvcHRpbWl6YXRpb24pIGJ5IGZpcnN0CityZW0gYnVpbGRpbmcgaW5zdHJ1bWVudGVkIGJpbmFyaWVzLCB0aGVuIHJ1bm5pbmcgdGhlIHRlc3RzdWl0ZSwgYW5kCityZW0gZmluYWxseSBidWlsZGluZyB0aGUgb3B0aW1pemVkIGNvZGUuCityZW0gTm90ZSwgYWZ0ZXIgdGhlIGZpcnN0IGluc3RydW1lbnRlZCBydW4sIG9uZSBjYW4ganVzdCBrZWVwIG9uCityZW0gYnVpbGRpbmcgdGhlIFBHVXBkYXRlIGNvbmZpZ3VyYXRpb24gd2hpbGUgZGV2ZWxvcGluZy4KKworc2V0bG9jYWwKK3NldCBwbGF0Zj1XaW4zMgorCityZW0gdXNlIHRoZSBwZXJmb3JtYW5jZSB0ZXN0c3VpdGUuICBUaGlzIGlzIHF1aWNrIGFuZCBzaW1wbGUKK3NldCBqb2IxPS4uXC4uXHRvb2xzXHB5YmVuY2hccHliZW5jaC5weSAtbiAxIC1DIDEgLS13aXRoLWdjCitzZXQgcGF0aDE9Li5cLi5cdG9vbHNccHliZW5jaAorCityZW0gb3IgdGhlIHdob2xlIHRlc3RzdWl0ZSBmb3IgbW9yZSB0aG9yb3VnaCB0ZXN0aW5nCitzZXQgam9iMj0uLlwuLlxsaWJcdGVzdFxyZWdydGVzdC5weQorc2V0IHBhdGgyPS4uXC4uXGxpYgorCitzZXQgam9iPSVqb2IxJQorc2V0IGNscnBhdGg9JXBhdGgxJQorCis6Q2hlY2tPcHRzCitpZiAiJTEiPT0iLXAiIChzZXQgcGxhdGY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJTEiPT0iLTIiIChzZXQgam9iPSVqb2IyJSkgJiAoc2V0IGNscnBhdGg9JXBhdGgyJSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCisKK3NldCBQR0k9JXBsYXRmJS1wZ2kKK3NldCBQR089JXBsYXRmJS1wZ28KKworQGVjaG8gb24KK3JlbSBidWlsZCB0aGUgaW5zdHJ1bWVudGVkIHZlcnNpb24KK2NhbGwgYnVpbGQgLXAgJXBsYXRmJSAtYyBQR0luc3RydW1lbnQKKworcmVtIHJlbW92ZSAucHljIGZpbGVzLCAucGdjIGZpbGVzIGFuZCBleGVjdXRlIHRoZSBqb2IKKyVQR0klXHB5dGhvbi5leGUgcm1weWMucHkgJWNscnBhdGglCitkZWwgJVBHSSVcKi5wZ2MKKyVQR0klXHB5dGhvbi5leGUgJWpvYiUKKworcmVtIGZpbmFsbHkgYnVpbGQgdGhlIG9wdGltaXplZCB2ZXJzaW9uCitpZiBleGlzdCAlUEdPJSBkZWwgL3MgL3EgJVBHTyUKK2NhbGwgYnVpbGQgLXAgJXBsYXRmJSAtYyBQR1VwZGF0ZQorCmRpZmYgLS1naXQgYS9QQy9WUzguMC9idWlsZF9zc2wuYmF0IGIvUEMvVlM4LjAvYnVpbGRfc3NsLmJhdAppbmRleCBmMDZjMmQxLi4yNTMxYTViIDEwMDY0NAotLS0gYS9QQy9WUzguMC9idWlsZF9zc2wuYmF0CisrKyBiL1BDL1ZTOC4wL2J1aWxkX3NzbC5iYXQKQEAgLTEsMTIgKzEsMTIgQEAKLUBlY2hvIG9mZg0KLWlmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgNCi0gIGlmICUxIEVRVSBEZWJ1ZyAoDQotICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUNCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjI3X2QuZGxsIGV4aXQgMQ0KLSAgKSBFTFNFICgNCi0gICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUNCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjI3LmRsbCBleGl0IDENCi0gICkNCi0pDQotJUhPU1RfUFlUSE9OJSBidWlsZF9zc2wucHkgJTEgJTIgJTMNCi0NCitAZWNobyBvZmYKK2lmIG5vdCBkZWZpbmVkIEhPU1RfUFlUSE9OICgKKyAgaWYgJTEgRVFVIERlYnVnICgKKyAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uX2QuZXhlCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjI3X2QuZGxsIGV4aXQgMQorICApIEVMU0UgKAorICAgIHNldCBIT1NUX1BZVEhPTj1weXRob24uZXhlCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjI3LmRsbCBleGl0IDEKKyAgKQorKQorJUhPU1RfUFlUSE9OJSBidWlsZF9zc2wucHkgJTEgJTIgJTMKKwpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvYnoyLnZjcHJvaiBiL1BDL1ZTOC4wL2J6Mi52Y3Byb2oKaW5kZXggZjg0YTY0NS4uNjdjZjBmOCAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvYnoyLnZjcHJvagorKysgYi9QQy9WUzguMC9iejIudmNwcm9qCkBAIC0xLDU4MSArMSw1ODEgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJiejIiDQotCVByb2plY3RHVUlEPSJ7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fSINCi0JUm9vdE5hbWVzcGFjZT0iYnoyIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGJ6Mm1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iYnppcDIgMS4wLjYgSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliX3ByaXZhdGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9ImJ6aXAyIDEuMC42IFNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYmxvY2tzb3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxjb21wcmVzcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGNyY3RhYmxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcZGVjb21wcmVzcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGh1ZmZtYW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxyYW5kdGFibGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJiejIiCisJUHJvamVjdEdVSUQ9Ins3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9IgorCVJvb3ROYW1lc3BhY2U9ImJ6MiIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGJ6Mm1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9ImJ6aXAyIDEuMC42IEhlYWRlciBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliX3ByaXZhdGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJiemlwMiAxLjAuNiBTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJsb2Nrc29ydC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGNvbXByZXNzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxjcmN0YWJsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcZGVjb21wcmVzcy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcaHVmZm1hbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilccmFuZHRhYmxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL2RlYnVnLnZzcHJvcHMgYi9QQy9WUzguMC9kZWJ1Zy52c3Byb3BzCmluZGV4IGJjNjQzY2IuLjJiZTdmNzQgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL2RlYnVnLnZzcHJvcHMKKysrIGIvUEMvVlM4LjAvZGVidWcudnNwcm9wcwpAQCAtMSwxNSArMSwxNSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9ImRlYnVnIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iS2lsbFB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKE91dERpcilca2lsbF9weXRob25fZC5leGUiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9ImRlYnVnIgorCT4KKwk8VG9vbAorCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJLaWxsUHl0aG9uRXhlIgorCQlWYWx1ZT0iJChPdXREaXIpXGtpbGxfcHl0aG9uX2QuZXhlIgorCS8+Cis8L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9lbnYuYmF0IGIvUEMvVlM4LjAvZW52LmJhdAppbmRleCA3NzE3ZDAxLi5hNDk5MGE4IDEwMDY0NAotLS0gYS9QQy9WUzguMC9lbnYuYmF0CisrKyBiL1BDL1ZTOC4wL2Vudi5iYXQKQEAgLTEsNSArMSw1IEBACi1AZWNobyBvZmYNCi1zZXQgVlM4PSVQcm9ncmFtRmlsZXMlXE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDgNCi1lY2hvIEJ1aWxkIGVudmlyb25tZW50czogeDg2LCBpYTY0LCBhbWQ2NCwgeDg2X2FtZDY0LCB4ODZfaWE2NA0KLWVjaG8uDQotY2FsbCAiJVZTOCVcVkNcdmN2YXJzYWxsLmJhdCIgJTENCitAZWNobyBvZmYKK3NldCBWUzg9JVByb2dyYW1GaWxlcyVcTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gOAorZWNobyBCdWlsZCBlbnZpcm9ubWVudHM6IHg4NiwgaWE2NCwgYW1kNjQsIHg4Nl9hbWQ2NCwgeDg2X2lhNjQKK2VjaG8uCitjYWxsICIlVlM4JVxWQ1x2Y3ZhcnNhbGwuYmF0IiAlMQpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvaWRsZS5iYXQgYi9QQy9WUzguMC9pZGxlLmJhdAppbmRleCAyNzRhZTFhLi4xMjNlNzA0IDEwMDY0NAotLS0gYS9QQy9WUzguMC9pZGxlLmJhdAorKysgYi9QQy9WUzguMC9pZGxlLmJhdApAQCAtMSwxNSArMSwxNSBAQAotQGVjaG8gb2ZmDQotcmVtIHN0YXJ0IGlkbGUNCi1yZW0gVXNhZ2U6ICBpZGxlIFstZF0NCi1yZW0gLWQgICBSdW4gRGVidWcgYnVpbGQgKHB5dGhvbl9kLmV4ZSkuICBFbHNlIHJlbGVhc2UgYnVpbGQuDQotDQotc2V0bG9jYWwNCi1zZXQgZXhlPXB5dGhvbg0KLVBBVEggJVBBVEglOy4uXC4uXC4uXHRjbHRrXGJpbg0KLQ0KLWlmICIlMSI9PSItZCIgKHNldCBleGU9cHl0aG9uX2QpICYgc2hpZnQNCi0NCi1zZXQgY21kPSVleGUlIC4uLy4uL0xpYi9pZGxlbGliL2lkbGUucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCi0NCi1lY2hvIG9uDQotJWNtZCUNCitAZWNobyBvZmYKK3JlbSBzdGFydCBpZGxlCityZW0gVXNhZ2U6ICBpZGxlIFstZF0KK3JlbSAtZCAgIFJ1biBEZWJ1ZyBidWlsZCAocHl0aG9uX2QuZXhlKS4gIEVsc2UgcmVsZWFzZSBidWlsZC4KKworc2V0bG9jYWwKK3NldCBleGU9cHl0aG9uCitQQVRIICVQQVRIJTsuLlwuLlwuLlx0Y2x0a1xiaW4KKworaWYgIiUxIj09Ii1kIiAoc2V0IGV4ZT1weXRob25fZCkgJiBzaGlmdAorCitzZXQgY21kPSVleGUlIC4uLy4uL0xpYi9pZGxlbGliL2lkbGUucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkKKworZWNobyBvbgorJWNtZCUKZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL2tpbGxfcHl0aG9uLnZjcHJvaiBiL1BDL1ZTOC4wL2tpbGxfcHl0aG9uLnZjcHJvagppbmRleCBlOWJlMzMwLi5mNmZlMDk2IDEwMDY0NAotLS0gYS9QQy9WUzguMC9raWxsX3B5dGhvbi52Y3Byb2oKKysrIGIvUEMvVlM4LjAva2lsbF9weXRob24udmNwcm9qCkBAIC0xLDI3OSArMSwyNzkgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJraWxsX3B5dGhvbiINCi0JUHJvamVjdEdVSUQ9Ins2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KLQlSb290TmFtZXNwYWNlPSJraWxsX3B5dGhvbiINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuXGtpbGxfcHl0aG9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0ia2lsbF9weXRob24iCisJUHJvamVjdEdVSUQ9Ins2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9IgorCVJvb3ROYW1lc3BhY2U9ImtpbGxfcHl0aG9uIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLmV4ZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZXhlIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLlxraWxsX3B5dGhvbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9tYWtlX2J1aWxkaW5mby52Y3Byb2ogYi9QQy9WUzguMC9tYWtlX2J1aWxkaW5mby52Y3Byb2oKaW5kZXggM2NjNzFlNi4uNjE5ZjA1NiAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCisrKyBiL1BDL1ZTOC4wL21ha2VfYnVpbGRpbmZvLnZjcHJvagpAQCAtMSwxNjIgKzEsMTYyIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ3aW5kb3dzLTEyNTAiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0ibWFrZV9idWlsZGluZm8iDQotCVByb2plY3RHVUlEPSJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSINCi0JUm9vdE5hbWVzcGFjZT0ibWFrZV9idWlsZGluZm8iDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpL21ha2VfYnVpbGRpbmZvLmV4ZSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iY3BwO2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiDQotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLlxtYWtlX2J1aWxkaW5mby5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IndpbmRvd3MtMTI1MCI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9Im1ha2VfYnVpbGRpbmZvIgorCVByb2plY3RHVUlEPSJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSIKKwlSb290TmFtZXNwYWNlPSJtYWtlX2J1aWxkaW5mbyIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvbWFrZV9idWlsZGluZm8uZXhlIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii5cbWFrZV9idWlsZGluZm8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvbWFrZV92ZXJzaW9uaW5mby52Y3Byb2ogYi9QQy9WUzguMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagppbmRleCA5ZGJmMTBkLi42ZTRjZmYyIDEwMDY0NAotLS0gYS9QQy9WUzguMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagorKysgYi9QQy9WUzguMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvagpAQCAtMSwzMjQgKzEsMzI0IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0ibWFrZV92ZXJzaW9uaW5mbyINCi0JUHJvamVjdEdVSUQ9IntGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9Ig0KLQlSb290TmFtZXNwYWNlPSJtYWtlX3ZlcnNpb25pbmZvIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmMuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmMuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGUiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udF9kLmgmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0ibWFrZV92ZXJzaW9uaW5mbyIKKwlQcm9qZWN0R1VJRD0ie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iCisJUm9vdE5hbWVzcGFjZT0ibWFrZV92ZXJzaW9uaW5mbyIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCURlc2NyaXB0aW9uPSJCdWlsZCBQQy9weXRob25udF9yYyhfZCkuaCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiCisJCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJCUNvbXBpbGVBcz0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm8uZXhlIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udC5oJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yYy5oJiN4MEQ7JiN4MEE7IgorCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmMuaCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm8uZXhlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCYjeDBEOyYjeDBBOyIKKwkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYiIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbl9udF9kLmgmI3gwRDsmI3gwQTsiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiCisJCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yY19kLmgiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xtYWtlX3ZlcnNpb25pbmZvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3BjYnVpbGQuc2xuIGIvUEMvVlM4LjAvcGNidWlsZC5zbG4KaW5kZXggMThlZWQ2OS4uNWY0MzUyNCAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvcGNidWlsZC5zbG4KKysrIGIvUEMvVlM4LjAvcGNidWlsZC5zbG4KQEAgLTEsNTU5ICsxLDU1OSBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOS4wMA0KLSMgVmlzdWFsIFN0dWRpbyAyMDA1DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjcHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0gPSB7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfdmVyc2lvbmluZm8iLCAibWFrZV92ZXJzaW9uaW5mby52Y3Byb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjcHJvaiIsICJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0gPSB7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfQ0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0gPSB7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbnciLCAicHl0aG9udy52Y3Byb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3OXhwb3BlbiIsICJ3OXhwb3Blbi52Y3Byb2oiLCAie0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX2J1aWxkaW5mbyIsICJtYWtlX2J1aWxkaW5mby52Y3Byb2oiLCAie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoInsyMTUwRTMzMy04RkRDLTQyQTMtOTQ3NC0xQTM5NTZENDZERTh9IikgPSAiU29sdXRpb24gSXRlbXMiLCAiU29sdXRpb24gSXRlbXMiLCAiezU1M0VDMzNFLTk4MTYtNDk5Ni1BNjYwLTVENjE4NkEwQjBCM30iDQotCVByb2plY3RTZWN0aW9uKFNvbHV0aW9uSXRlbXMpID0gcHJlUHJvamVjdA0KLQkJLi5cLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMNCi0JCXJlYWRtZS50eHQgPSByZWFkbWUudHh0DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luc291bmQiLCAid2luc291bmQudmNwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2JzZGRiIiwgIl9ic2RkYi52Y3Byb2oiLCAie0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlc190ZXN0IiwgIl9jdHlwZXNfdGVzdC52Y3Byb2oiLCAiezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZWxlbWVudHRyZWUiLCAiX2VsZW1lbnR0cmVlLnZjcHJvaiIsICJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3Byb2oiLCAiezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc29ja2V0IiwgIl9zb2NrZXQudmNwcm9qIiwgIns4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmNwcm9qIiwgInsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSA9IHtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjcHJvaiIsICJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0gPSB7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y2FwaSIsICJfdGVzdGNhcGkudmNwcm9qIiwgIns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3RraW50ZXIiLCAiX3RraW50ZXIudmNwcm9qIiwgIns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYnoyIiwgImJ6Mi52Y3Byb2oiLCAiezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjcHJvaiIsICJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInVuaWNvZGVkYXRhIiwgInVuaWNvZGVkYXRhLnZjcHJvaiIsICJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3Byb2oiLCAie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgImJkaXN0X3dpbmluc3QudmNwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjcHJvaiIsICJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNxbGl0ZTMiLCAic3FsaXRlMy52Y3Byb2oiLCAie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmNwcm9qIiwgIns5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmNwcm9qIiwgIns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KLUVuZFByb2plY3QNCi1HbG9iYWwNCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCi0JCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCi0JCURlYnVnfHg2NCA9IERlYnVnfHg2NA0KLQkJUEdJbnN0cnVtZW50fFdpbjMyID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQlQR0luc3RydW1lbnR8eDY0ID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJUEdVcGRhdGV8V2luMzIgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJUEdVcGRhdGV8eDY0ID0gUEdVcGRhdGV8eDY0DQotCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMg0KLQkJUmVsZWFzZXx4NjQgPSBSZWxlYXNlfHg2NA0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQotCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLUVuZEdsb2JhbA0KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDkuMDAKKyMgVmlzdWFsIFN0dWRpbyAyMDA1CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbiIsICJweXRob24udmNwcm9qIiwgIntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSA9IHtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV92ZXJzaW9uaW5mbyIsICJtYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiIsICJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjcHJvaiIsICJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9ID0ge0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0KKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSA9IHtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjcHJvaiIsICJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3OXhwb3BlbiIsICJ3OXhwb3Blbi52Y3Byb2oiLCAie0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibWFrZV9idWlsZGluZm8iLCAibWFrZV9idWlsZGluZm8udmNwcm9qIiwgIntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezIxNTBFMzMzLThGREMtNDJBMy05NDc0LTFBMzk1NkQ0NkRFOH0iKSA9ICJTb2x1dGlvbiBJdGVtcyIsICJTb2x1dGlvbiBJdGVtcyIsICJ7NTUzRUMzM0UtOTgxNi00OTk2LUE2NjAtNUQ2MTg2QTBCMEIzfSIKKwlQcm9qZWN0U2VjdGlvbihTb2x1dGlvbkl0ZW1zKSA9IHByZVByb2plY3QKKwkJLi5cLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMKKwkJcmVhZG1lLnR4dCA9IHJlYWRtZS50eHQKKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3Byb2oiLCAiezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2JzZGRiIiwgIl9ic2RkYi52Y3Byb2oiLCAie0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9jdHlwZXNfdGVzdCIsICJfY3R5cGVzX3Rlc3QudmNwcm9qIiwgIns5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9lbGVtZW50dHJlZSIsICJfZWxlbWVudHRyZWUudmNwcm9qIiwgInsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3Byb2oiLCAiezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NvY2tldCIsICJfc29ja2V0LnZjcHJvaiIsICJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3FsaXRlMyIsICJfc3FsaXRlMy52Y3Byb2oiLCAiezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9ID0ge0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc3NsIiwgIl9zc2wudmNwcm9qIiwgIntDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSA9IHs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGVzdGNhcGkiLCAiX3Rlc3RjYXBpLnZjcHJvaiIsICJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfdGtpbnRlciIsICJfdGtpbnRlci52Y3Byb2oiLCAiezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYnoyIiwgImJ6Mi52Y3Byb2oiLCAiezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic2VsZWN0IiwgInNlbGVjdC52Y3Byb2oiLCAiezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidW5pY29kZWRhdGEiLCAidW5pY29kZWRhdGEudmNwcm9qIiwgIntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3Byb2oiLCAie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYmRpc3Rfd2luaW5zdCIsICJiZGlzdF93aW5pbnN0LnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2hhc2hsaWIiLCAiX2hhc2hsaWIudmNwcm9qIiwgIns0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAic3FsaXRlMyIsICJzcWxpdGUzLnZjcHJvaiIsICJ7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmNwcm9qIiwgIns5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImtpbGxfcHl0aG9uIiwgImtpbGxfcHl0aG9uLnZjcHJvaiIsICJ7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzIKKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0CisJCVBHSW5zdHJ1bWVudHxXaW4zMiA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQlQR0luc3RydW1lbnR8eDY0ID0gUEdJbnN0cnVtZW50fHg2NAorCQlQR1VwZGF0ZXxXaW4zMiA9IFBHVXBkYXRlfFdpbjMyCisJCVBHVXBkYXRlfHg2NCA9IFBHVXBkYXRlfHg2NAorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMgorCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3BnaW5zdHJ1bWVudC52c3Byb3BzIGIvUEMvVlM4LjAvcGdpbnN0cnVtZW50LnZzcHJvcHMKaW5kZXggMzhjNWYxOC4uOTNiOTY4NyAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvcGdpbnN0cnVtZW50LnZzcHJvcHMKKysrIGIvUEMvVlM4LjAvcGdpbnN0cnVtZW50LnZzcHJvcHMKQEAgLTEsMzQgKzEsMzQgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJwZ2luc3RydW1lbnQiDQotCU91dHB1dERpcmVjdG9yeT0iJChPdXREaXJQR0kpIg0KLQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtcGdpXCQoUHJvamVjdE5hbWUpXCINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCU9wdGltaXphdGlvbj0iMiINCi0JCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCUZhdm9yU2l6ZU9yU3BlZWQ9IjIiDQotCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSINCi0JCUVuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM9ImZhbHNlIg0KLQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KLQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIg0KLQkJQnVmZmVyU2VjdXJpdHlDaGVjaz0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiDQotCQlFbmFibGVDT01EQVRGb2xkaW5nPSIyIg0KLQkJTGlua1RpbWVDb2RlR2VuZXJhdGlvbj0iMiINCi0JCVByb2ZpbGVHdWlkZWREYXRhYmFzZT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktcGdpXCQoVGFyZ2V0TmFtZSkucGdkIg0KLQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpXCQoVGFyZ2V0TmFtZSkubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJPdXREaXJQR0kiDQotCQlWYWx1ZT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktcGdpXCINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0icGdpbnN0cnVtZW50IgorCU91dHB1dERpcmVjdG9yeT0iJChPdXREaXJQR0kpIgorCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC1wZ2lcJChQcm9qZWN0TmFtZSlcIgorCT4KKwk8VG9vbAorCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQlPcHRpbWl6YXRpb249IjIiCisJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIgorCQlGYXZvclNpemVPclNwZWVkPSIyIgorCQlPbWl0RnJhbWVQb2ludGVycz0idHJ1ZSIKKwkJRW5hYmxlRmliZXJTYWZlT3B0aW1pemF0aW9ucz0iZmFsc2UiCisJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSIKKwkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiCisJCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9ImZhbHNlIgorCS8+CisJPFRvb2wKKwkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQlPcHRpbWl6ZVJlZmVyZW5jZXM9IjIiCisJCUVuYWJsZUNPTURBVEZvbGRpbmc9IjIiCisJCUxpbmtUaW1lQ29kZUdlbmVyYXRpb249IjIiCisJCVByb2ZpbGVHdWlkZWREYXRhYmFzZT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktcGdpXCQoVGFyZ2V0TmFtZSkucGdkIgorCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSlcJChUYXJnZXROYW1lKS5saWIiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9Ik91dERpclBHSSIKKwkJVmFsdWU9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnaVwiCisJLz4KKzwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3BndXBkYXRlLnZzcHJvcHMgYi9QQy9WUzguMC9wZ3VwZGF0ZS52c3Byb3BzCmluZGV4IDI2Y2ZjMmQuLjdjZTRhM2EgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL3BndXBkYXRlLnZzcHJvcHMKKysrIGIvUEMvVlM4LjAvcGd1cGRhdGUudnNwcm9wcwpAQCAtMSwxNCArMSwxNCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InBndXBkYXRlIg0KLQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnb1wiDQotCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFNvbHV0aW9uRGlyKVxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJQWRkaXRpb25hbE1hbmlmZXN0RGVwZW5kZW5jaWVzPSIiDQotCQlMaW5rVGltZUNvZGVHZW5lcmF0aW9uPSI0Ig0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJwZ3VwZGF0ZSIKKwlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnb1wiCisJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoU29sdXRpb25EaXIpXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCT4KKwk8VG9vbAorCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCUFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcz0iIgorCQlMaW5rVGltZUNvZGVHZW5lcmF0aW9uPSI0IgorCS8+Cis8L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9weWQudnNwcm9wcyBiL1BDL1ZTOC4wL3B5ZC52c3Byb3BzCmluZGV4IDM0YzIxZTEuLmNlMDM5ZWIgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL3B5ZC52c3Byb3BzCisrKyBiL1BDL1ZTOC4wL3B5ZC52c3Byb3BzCkBAIC0xLDI4ICsxLDI4IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0icHlkIg0KLQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRSINCi0JCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLnB5ZCINCi0JCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5wZGIiDQotCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcilcJChUYXJnZXROYW1lKS5saWIiDQotCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJRW1iZWRNYW5pZmVzdD0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCUNvbW1hbmRMaW5lPSIiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9InB5ZCIKKwlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwk+CisJPFRvb2wKKwkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFIgorCQlSdW50aW1lTGlicmFyeT0iMiIKKwkvPgorCTxUb29sCisJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLnB5ZCIKKwkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLnBkYiIKKwkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpXCQoVGFyZ2V0TmFtZSkubGliIgorCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSIKKwkvPgorCTxUb29sCisJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQlFbWJlZE1hbmlmZXN0PSJmYWxzZSIKKwkvPgorCTxUb29sCisJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQlDb21tYW5kTGluZT0iIgorCS8+Cis8L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9weWRfZC52c3Byb3BzIGIvUEMvVlM4LjAvcHlkX2QudnNwcm9wcwppbmRleCAzMTNhMzBiLi44NTA4MTU2IDEwMDY0NAotLS0gYS9QQy9WUzguMC9weWRfZC52c3Byb3BzCisrKyBiL1BDL1ZTOC4wL3B5ZF9kLnZzcHJvcHMKQEAgLTEsMzYgKzEsMzYgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweWRfZCINCi0JSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjAiDQotCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFIg0KLQkJUnVudGltZUxpYnJhcnk9IjMiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5weWQiDQotCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5wZGIiDQotCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcilcJChUYXJnZXROYW1lKS5saWIiDQotCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJRW1iZWRNYW5pZmVzdD0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCUNvbW1hbmRMaW5lPSIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKFNvbHV0aW9uRGlyKXB5dGhvbl9kLmV4ZSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0icHlkX2QiCisJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIgorCT4KKwk8VG9vbAorCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQlPcHRpbWl6YXRpb249IjAiCisJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIwIgorCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIgorCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEUiCisJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCS8+CisJPFRvb2wKKwkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5weWQiCisJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QucGRiIgorCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcilcJChUYXJnZXROYW1lKS5saWIiCisJCUdlbmVyYXRlTWFuaWZlc3Q9ImZhbHNlIgorCS8+CisJPFRvb2wKKwkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCUVtYmVkTWFuaWZlc3Q9ImZhbHNlIgorCS8+CisJPFRvb2wKKwkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCUNvbW1hbmRMaW5lPSIiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9IlB5dGhvbkV4ZSIKKwkJVmFsdWU9IiQoU29sdXRpb25EaXIpcHl0aG9uX2QuZXhlIgorCS8+Cis8L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9weWV4cGF0LnZjcHJvaiBiL1BDL1ZTOC4wL3B5ZXhwYXQudmNwcm9qCmluZGV4IGI1OWU0ZWMuLjBkNDJmMzAgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL3B5ZXhwYXQudmNwcm9qCisrKyBiL1BDL1ZTOC4wL3B5ZXhwYXQudmNwcm9qCkBAIC0xLDU1MyArMSw1NTMgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweWV4cGF0Ig0KLQlQcm9qZWN0R1VJRD0ie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQotCVJvb3ROYW1lc3BhY2U9InB5ZXhwYXQiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5ZXhwYXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJweWV4cGF0IgorCVByb2plY3RHVUlEPSJ7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfSIKKwlSb290TmFtZXNwYWNlPSJweWV4cGF0IgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccHlleHBhdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHRvay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9weXByb2plY3QudnNwcm9wcyBiL1BDL1ZTOC4wL3B5cHJvamVjdC52c3Byb3BzCmluZGV4IDVhNWZmZjYuLmMwYzdlMzIgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL3B5cHJvamVjdC52c3Byb3BzCisrKyBiL1BDL1ZTOC4wL3B5cHJvamVjdC52c3Byb3BzCkBAIC0xLDExMSArMSwxMTEgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweXByb2plY3QiDQotCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikiDQotCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb25OYW1lKVwkKFByb2plY3ROYW1lKVwiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlPcHRpbWl6YXRpb249IjIiDQotCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0idHJ1ZSINCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7IC4uXC4uXFBDIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU4zMiINCi0JCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQlFeGNlcHRpb25IYW5kbGluZz0iMCINCi0JCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQlXYXJuaW5nTGV2ZWw9IjMiDQotCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIg0KLQkJQ29tcGlsZUFzPSIwIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iJChPdXREaXIpIg0KLQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJ0cnVlIg0KLQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQlTdWJTeXN0ZW09IjIiDQotCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiDQotCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCi0JCVRhcmdldE1hY2hpbmU9IjEiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUEM7Li5cLi5cSW5jbHVkZSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iUHlEbGxOYW1lIg0KLQkJVmFsdWU9InB5dGhvbjI3Ig0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJQeXRob25FeGUiDQotCQlWYWx1ZT0iJChTb2x1dGlvbkRpcilccHl0aG9uLmV4ZSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iZXh0ZXJuYWxzRGlyIg0KLQkJVmFsdWU9Ii4uXC4uXC4uIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJic2RkYjQ3RGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJic2RkYjQ3RGVwTGlicyINCi0JCVZhbHVlPSJ3czJfMzIubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJic2RkYkRpciINCi0JCVZhbHVlPSIkKGJzZGRiNDdEaXIpIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJic2RkYkRlcExpYnMiDQotCQlWYWx1ZT0iJChic2RkYjQ3RGVwTGlicykiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9ImJzZGRiNDREaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXGRiLTQuNC4yMFxidWlsZF93aW4zMiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iYnNkZGI0NERlcExpYnMiDQotCQlWYWx1ZT0iIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJzcWxpdGUzRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy42LjIxIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJiejJEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXGJ6aXAyLTEuMC42Ig0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJvcGVuc3NsRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxvcGVuc3NsLTAuOS44eSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGtEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHRjbHRrIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0azY0RGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVx0Y2x0azY0Ig0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0a0xpYiINCi0JCVZhbHVlPSIkKHRjbHRrRGlyKVxsaWJcdGNsODUubGliICQodGNsdGtEaXIpXGxpYlx0azg1LmxpYiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGtMaWJEZWJ1ZyINCi0JCVZhbHVlPSIkKHRjbHRrRGlyKVxsaWJcdGNsODVnLmxpYiAkKHRjbHRrRGlyKVxsaWJcdGs4NWcubGliIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJ0Y2x0azY0TGliIg0KLQkJVmFsdWU9IiQodGNsdGs2NERpcilcbGliXHRjbDg1LmxpYiAkKHRjbHRrNjREaXIpXGxpYlx0azg1LmxpYiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGs2NExpYkRlYnVnIg0KLQkJVmFsdWU9IiQodGNsdGs2NERpcilcbGliXHRjbDg1Zy5saWIgJCh0Y2x0azY0RGlyKVxsaWJcdGs4NWcubGliIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJweXByb2plY3QiCisJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSIKKwlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uTmFtZSlcJChQcm9qZWN0TmFtZSlcIgorCT4KKwk8VG9vbAorCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQlPcHRpbWl6YXRpb249IjIiCisJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGU7IC4uXC4uXFBDIgorCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTjMyIgorCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQlFeGNlcHRpb25IYW5kbGluZz0iMCIKKwkJUnVudGltZUxpYnJhcnk9IjAiCisJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQlXYXJuaW5nTGV2ZWw9IjMiCisJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjMiCisJCUNvbXBpbGVBcz0iMCIKKwkvPgorCTxUb29sCisJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJTGlua0luY3JlbWVudGFsPSIxIgorCQlBZGRpdGlvbmFsTGlicmFyeURpcmVjdG9yaWVzPSIkKE91dERpcikiCisJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKKwkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChUYXJnZXROYW1lKS5wZGIiCisJCVN1YlN5c3RlbT0iMiIKKwkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIgorCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCIKKwkJVGFyZ2V0TWFjaGluZT0iMSIKKwkvPgorCTxUb29sCisJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXEluY2x1ZGUiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9IlB5RGxsTmFtZSIKKwkJVmFsdWU9InB5dGhvbjI3IgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJQeXRob25FeGUiCisJCVZhbHVlPSIkKFNvbHV0aW9uRGlyKVxweXRob24uZXhlIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJleHRlcm5hbHNEaXIiCisJCVZhbHVlPSIuLlwuLlwuLiIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0iYnNkZGI0N0RpciIKKwkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxkYi00LjcuMjUuMFxidWlsZF93aW5kb3dzIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJic2RkYjQ3RGVwTGlicyIKKwkJVmFsdWU9IndzMl8zMi5saWIiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9ImJzZGRiRGlyIgorCQlWYWx1ZT0iJChic2RkYjQ3RGlyKSIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0iYnNkZGJEZXBMaWJzIgorCQlWYWx1ZT0iJChic2RkYjQ3RGVwTGlicykiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9ImJzZGRiNDREaXIiCisJCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcZGItNC40LjIwXGJ1aWxkX3dpbjMyIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJic2RkYjQ0RGVwTGlicyIKKwkJVmFsdWU9IiIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0ic3FsaXRlM0RpciIKKwkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxzcWxpdGUtMy42LjIxIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJiejJEaXIiCisJCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcYnppcDItMS4wLjYiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9Im9wZW5zc2xEaXIiCisJCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0wLjkuOHkiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9InRjbHRrRGlyIgorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHRjbHRrIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJ0Y2x0azY0RGlyIgorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHRjbHRrNjQiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9InRjbHRrTGliIgorCQlWYWx1ZT0iJCh0Y2x0a0RpcilcbGliXHRjbDg1LmxpYiAkKHRjbHRrRGlyKVxsaWJcdGs4NS5saWIiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9InRjbHRrTGliRGVidWciCisJCVZhbHVlPSIkKHRjbHRrRGlyKVxsaWJcdGNsODVnLmxpYiAkKHRjbHRrRGlyKVxsaWJcdGs4NWcubGliIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJ0Y2x0azY0TGliIgorCQlWYWx1ZT0iJCh0Y2x0azY0RGlyKVxsaWJcdGNsODUubGliICQodGNsdGs2NERpcilcbGliXHRrODUubGliIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJ0Y2x0azY0TGliRGVidWciCisJCVZhbHVlPSIkKHRjbHRrNjREaXIpXGxpYlx0Y2w4NWcubGliICQodGNsdGs2NERpcilcbGliXHRrODVnLmxpYiIKKwkvPgorPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcHl0aG9uLnZjcHJvaiBiL1BDL1ZTOC4wL3B5dGhvbi52Y3Byb2oKaW5kZXggMmY0N2MwZS4uZjJlN2QxMSAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvcHl0aG9uLnZjcHJvagorKysgYi9QQy9WUzguMC9weXRob24udmNwcm9qCkBAIC0xLDYzNyArMSw2MzcgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweXRob24iDQotCVByb2plY3RHVUlEPSJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uX2QuZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbl9kLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMTAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHljb24uaWNvIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX2V4ZS5yYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHB5dGhvbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9InB5dGhvbiIKKwlQcm9qZWN0R1VJRD0ie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob25fZC5leGUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIgorCQkJCUNvbXBpbGVBcz0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uX2QuZXhlIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMTAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlDb21waWxlQXM9IjAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9IiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlDb21waWxlQXM9IjAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlDb21waWxlQXM9IjAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9IiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5Y29uLmljbyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX2V4ZS5yYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xweXRob24uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcHl0aG9uY29yZS52Y3Byb2ogYi9QQy9WUzguMC9weXRob25jb3JlLnZjcHJvagppbmRleCAwODFkNGY5Li5kODk5NWU2IDEwMDY0NAotLS0gYS9QQy9WUzguMC9weXRob25jb3JlLnZjcHJvagorKysgYi9QQy9WUzguMC9weXRob25jb3JlLnZjcHJvagpAQCAtMSwxODg5ICsxLDE4ODkgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweXRob25jb3JlIg0KLQlQcm9qZWN0R1VJRD0ie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQotCVJvb3ROYW1lc3BhY2U9InB5dGhvbmNvcmUiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSkubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpJChQeURsbE5hbWUpLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgRGVidWciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpX2QuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiINCi0JCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IERlYnVnIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKV9kLmRsbCINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIg0KLQkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpJChQeURsbE5hbWUpLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iDQotCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSW5jbHVkZSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFic3RyYWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFzZGwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYXN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJpdHNldC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxib29sb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ1ZmZlcm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJ5dGVhcnJheW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc29iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNldmFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNsYXNzb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb2RlY3MuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29tcGlsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb21wbGV4b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNTdHJpbmdJTy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkYXRldGltZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkZXNjcm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkaWN0b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGR0b2EuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZW51bW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxlcnJjb2RlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGV2YWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmlsZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmbG9hdG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmcmFtZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmdW5jb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdlbm9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxncmFtaW5pdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxncmFtbWFyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGltcG9ydC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpbnRvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcaW50cmNoZWNrLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGl0ZXJvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbGlzdG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsb25naW50cmVwci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxsb25nb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1hcnNoYWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbWVtb3J5b2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1ldGFncmFtbWFyLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1ldGhvZG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtb2RzdXBwb3J0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1vZHVsZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxub2RlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvYmppbXBsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9wY29kZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxvc2RlZnMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGFyc2V0b2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwZ2VuLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBnZW5oZWFkZXJzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5X2N1cnNlcy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWFyZW5hLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5Y2Fwc3VsZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWN0eXBlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZGVidWcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHllcnJvcnMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlleHBhdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWZwZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWdldG9wdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hY3Rvb2xib3guaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHltYXRoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5bWVtLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5cG9ydC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0YXRlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RyY21wLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RydG9kLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXFB5dGhvbi1hc3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcUHl0aG9uLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGhvbnJ1bi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXRocmVhZC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxyYW5nZW9iamVjdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzZXRvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc2xpY2VvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3RyaW5nb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN0cnVjdG1lbWJlci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzdHJ1Y3RzZXEuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3ltdGFibGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3lzbW9kdWxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHRpbWVmdW5jcy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0b2tlbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0cmFjZWJhY2suaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdHVwbGVvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdWNuaGFzaC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx1bmljb2Rlb2JqZWN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHdlYWtyZWZvYmplY3QuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9Ik1vZHVsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jb2RlY3Ntb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvbGxlY3Rpb25zbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jc3YuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2Z1bmN0b29sc21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGVhcHFtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2hvdHNob3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2pzb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2xvY2FsZW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbHNwcm9mLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tYXRoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tYXRoLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NyZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3RydWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93ZWFrcmVmLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGFycmF5bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGF1ZGlvb3AuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYmluYXNjaWkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY21hdGhtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY1BpY2tsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjU3RyaW5nSU8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZGF0ZXRpbWVtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXJybm9tb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZnV0dXJlX2J1aWx0aW5zLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGdjbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGltYWdlb3AuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcaXRlcnRvb2xzbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1haW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWF0aG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtZDUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWQ1LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1kNW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtbWFwbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG9wZXJhdG9yLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHBhcnNlcm1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwb3NpeG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xyb3RhdGluZ3RyZWUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccm90YXRpbmd0cmVlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzaGE1MTJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc2hhbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzdHJvcG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzeW10YWJsZW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0aHJlYWRtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGltZW1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x4eHN1YnR5cGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemlwaW1wb3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsdGVyDQotCQkJCU5hbWU9InpsaWIiDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxkZWZsYXRlLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGd6Y2xvc2UuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZ3psaWIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZ3pyZWFkLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGd6d3JpdGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZml4ZWQuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHRyZWVzLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHRyZWVzLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHVuY29tcHIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemNvbmYuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemxpYi5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQkJPEZpbHRlcg0KLQkJCQlOYW1lPSJjamtjb2RlY3MiDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19jbi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaGsuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2lzbzIwMjIuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xfY29kZWNzX2pwLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19rci5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfdHcuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xhbGdfamlzeDAyMDEuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xjamtjb2RlY3MuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xlbXVfamlzeDAyMTNfMjAwMC5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2NuLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfaGsuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19qaXN4MDIxM19wYWlyLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfanAuaCINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19rci5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX3R3LmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbXVsdGlieXRlY29kZWMuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5oIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQkJPEZpbHRlcg0KLQkJCQlOYW1lPSJfaW8iDQotCQkJCT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmgiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cYnVmZmVyZWRpby5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGJ5dGVzaW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xmaWxlaW8uYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xpb2Jhc2UuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xzdHJpbmdpby5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHRleHRpby5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJPYmplY3RzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWJzdHJhY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYm9vbG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xidWZmZXJvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZXNfbWV0aG9kcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xieXRlYXJyYXlvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2Fwc3VsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjZWxsb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNsYXNzb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29kZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb21wbGV4b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxjb3VudC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkaWN0b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGVudW1vYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcZmFzdHNlYXJjaC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmaWxlb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxmaW5kLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZsb2F0b2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZyYW1lb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZ2Vub2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGludG9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xpdGVyb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGxpc3RvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbG9uZ29iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtZW1vcnlvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbWV0aG9kb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXG1vZHVsZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcb2JtYWxsb2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHBhcnRpdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzZXRvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc2xpY2VvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ29iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJ1Y3RzZXEuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdHVwbGVvYmplY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdHlwZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2RlY3R5cGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZW9iamVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x1bmljb2RldHlwZV9kYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x3ZWFrcmVmb2JqZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJQYXJzZXIiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGFjY2VsZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxiaXRzZXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxmaXJzdHNldHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxncmFtbWFyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcZ3JhbW1hcjEuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxsaXN0bm9kZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG1ldGFncmFtbWFyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbXlyZWFkbGluZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG5vZGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxwYXJzZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxwYXJzZXIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxwYXJzZXRvay5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHRva2VuaXplci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHRva2VuaXplci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUEMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcX3N1YnByb2Nlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXF93aW5yZWcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGNvbmZpZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZGxfbnQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGVycm1hcC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZ2V0cGF0aHAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGltcG9ydF9udC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcbXN2Y3J0bW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbmZpZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUHl0aG9uIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxfd2FybmluZ3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxhc2RsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYXN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cYmx0aW5tb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjZXZhbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNvZGVjcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGNvbXBpbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkdG9hLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZHlubG9hZF93aW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxlcnJvcnMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmb3JtYXR0ZXJfc3RyaW5nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZm9ybWF0dGVyX3VuaWNvZGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmcm96ZW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmdXR1cmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRhcmdzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0Y29tcGlsZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb3B5cmlnaHQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRvcHQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRwbGF0Zm9ybS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHZlcnNpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxncmFtaW5pdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydGRsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25caW1wb3J0ZGwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxtYXJzaGFsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbW9kc3VwcG9ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXG15c25wcmludGYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxteXN0cnRvdWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxwZWVwaG9sZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5YXJlbmEuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweWN0eXBlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlmcGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweW1hdGguYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0YXRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJjbXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXN0cnRvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXFB5dGhvbi1hc3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXRob25ydW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxyYW5kb20uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzdHJ1Y3RtZW1iZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzeW10YWJsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHN5c21vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHRocmVhZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHRocmVhZF9udC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHRyYWNlYmFjay5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX250LnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9InB5dGhvbmNvcmUiCisJUHJvamVjdEdVSUQ9IntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9IgorCVJvb3ROYW1lc3BhY2U9InB5dGhvbmNvcmUiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1ptMjAwICIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQeXRob247Li5cLi5cTW9kdWxlc1x6bGliIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfVVNSRExMO1B5X0JVSUxEX0NPUkU7UHlfRU5BQkxFX1NIQVJFRDtXSU4zMiIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlEZXNjcmlwdGlvbj0iR2VuZXJhdGUgYnVpbGQgaW5mb3JtYXRpb24uLi4iCisJCQkJQ29tbWFuZExpbmU9IiZxdW90OyQoU29sdXRpb25EaXIpbWFrZV9idWlsZGluZm8uZXhlJnF1b3Q7IFJlbGVhc2UiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKS5kbGwiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcikkKFB5RGxsTmFtZSkucGRiIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIgorCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSkubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIwIgorCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIgorCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBEZWJ1ZyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpX2QuZGxsIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpX2QucGRiIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMDAwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKV9kLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCIKKwkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiIKKwkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgRGVidWciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZ2V0YnVpbGRpbmZvLm8iCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHlEbGxOYW1lKV9kLmRsbCIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKV9kLnBkYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpcikkKFB5RGxsTmFtZSlfZC5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvWm0yMDAgIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFB5dGhvbjsuLlwuLlxNb2R1bGVzXHpsaWIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9VU1JETEw7UHlfQlVJTERfQ09SRTtQeV9FTkFCTEVfU0hBUkVEO1dJTjMyIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCURlc2NyaXB0aW9uPSJHZW5lcmF0ZSBidWlsZCBpbmZvcm1hdGlvbi4uLiIKKwkJCQlDb21tYW5kTGluZT0iJnF1b3Q7JChTb2x1dGlvbkRpciltYWtlX2J1aWxkaW5mby5leGUmcXVvdDsgUmVsZWFzZSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJnZXRidWlsZGluZm8ubyIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQeURsbE5hbWUpLmRsbCIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoUHlEbGxOYW1lKS5wZGIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUwMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpJChQeURsbE5hbWUpLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIgorCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIgorCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9abTIwMCAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUHl0aG9uOy4uXC4uXE1vZHVsZXNcemxpYiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7V0lOMzIiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJRGVzY3JpcHRpb249IkdlbmVyYXRlIGJ1aWxkIGluZm9ybWF0aW9uLi4uIgorCQkJCUNvbW1hbmRMaW5lPSImcXVvdDskKFNvbHV0aW9uRGlyKW1ha2VfYnVpbGRpbmZvLmV4ZSZxdW90OyBSZWxlYXNlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImdldGJ1aWxkaW5mby5vIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFB5RGxsTmFtZSkuZGxsIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpJChQeURsbE5hbWUpLnBkYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIkKE91dERpclBHSSkkKFB5RGxsTmFtZSkubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSW5jbHVkZSIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFic3RyYWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYXNkbC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGFzdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJpdHNldC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGJvb2xvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxidWZmZXJvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxieXRlc19tZXRob2RzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYnl0ZWFycmF5b2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcYnl0ZXNvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjZWxsb2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY2V2YWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjbGFzc29iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjb2RlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29kZWNzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcY29tcGlsZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGNvbXBsZXhvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxjU3RyaW5nSU8uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxkYXRldGltZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGRlc2Nyb2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZGljdG9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGR0b2EuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxlbnVtb2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZXJyY29kZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGV2YWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmaWxlb2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcZmxvYXRvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxmcmFtZW9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGZ1bmNvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxnZW5vYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxncmFtaW5pdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGdyYW1tYXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpbXBvcnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpbnRvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpbnRyY2hlY2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxpdGVyb2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbGlzdG9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXGxvbmdpbnRyZXByLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcbG9uZ29iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1hcnNoYWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtZW1vcnlvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtZXRhZ3JhbW1hci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1ldGhvZG9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG1vZHN1cHBvcnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxtb2R1bGVvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxub2RlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcb2JqaW1wbC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9wY29kZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXG9zZGVmcy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBhcnNldG9rLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccGF0Y2hsZXZlbC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHBnZW4uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxwZ2VuaGVhZGVycy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5X2N1cnNlcy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5YXJlbmEuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWNhcHN1bGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweWN0eXBlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlkZWJ1Zy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZXJyb3JzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlleHBhdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5ZnBlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccHlnZXRvcHQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hY3Rvb2xib3guaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1hdGguaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweW1lbS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5cG9ydC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RhdGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxweXN0cmNtcC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5c3RydG9kLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcUHl0aG9uLWFzdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXFB5dGhvbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGhvbnJ1bi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHB5dGhyZWFkLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVccmFuZ2VvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzZXRvYmplY3QuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVxzbGljZW9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN0cmluZ29iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN0cnVjdG1lbWJlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN0cnVjdHNlcS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHN5bXRhYmxlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcc3lzbW9kdWxlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdGltZWZ1bmNzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcdG9rZW4uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0cmFjZWJhY2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx0dXBsZW9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxJbmNsdWRlXHVjbmhhc2guaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cSW5jbHVkZVx1bmljb2Rlb2JqZWN0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXEluY2x1ZGVcd2Vha3JlZm9iamVjdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9Ik1vZHVsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfYmlzZWN0bW9kdWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jb2xsZWN0aW9uc21vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jc3YuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZnVuY3Rvb2xzbW9kdWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2hlYXBxbW9kdWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2hvdHNob3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfanNvbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9sb2NhbGVtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbHNwcm9mLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX21hdGguYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbWF0aC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9yYW5kb21tb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3JlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3N0cnVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF93ZWFrcmVmLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYXJyYXltb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xhdWRpb29wLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcYmluYXNjaWkuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjbWF0aG1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNQaWNrbGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjU3RyaW5nSU8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xkYXRldGltZW1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGVycm5vbW9kdWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZnV0dXJlX2J1aWx0aW5zLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZ2Ntb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xpbWFnZW9wLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcaXRlcnRvb2xzbW9kdWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcbWFpbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXG1hdGhtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtZDUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtZDUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtZDVtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xtbWFwbW9kdWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcb3BlcmF0b3IuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwYXJzZXJtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xwb3NpeG1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHJvdGF0aW5ndHJlZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTI1Nm1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYTUxMm1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNoYW1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNpZ25hbG1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHN0cm9wbW9kdWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcc3ltdGFibGVtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0aHJlYWRtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0aW1lbW9kdWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNceHhzdWJ0eXBlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemlwaW1wb3J0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYm1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJ6bGliIgorCQkJCT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZGVmbGF0ZS5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGRlZmxhdGUuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnemNsb3NlLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcZ3psaWIuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnenJlYWQuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxnendyaXRlLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mYmFjay5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mZml4ZWQuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx0cmVlcy5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHRyZWVzLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcdW5jb21wci5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXHpjb25mLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcemNvbmYuaW4uaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6bGliLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJPC9GaWx0ZXI+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iY2prY29kZWNzIgorCQkJCT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfY24uYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaGsuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXF9jb2RlY3NfaXNvMjAyMi5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19qcC5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc19rci5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcX2NvZGVjc190dy5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcYWxnX2ppc3gwMjAxLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xjamtjb2RlY3MuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXGVtdV9qaXN4MDIxM18yMDAwLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19jbi5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfaGsuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2ppc3gwMjEzX3BhaXIuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG1hcHBpbmdzX2pwLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtYXBwaW5nc19rci5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xjamtjb2RlY3NcbWFwcGluZ3NfdHcuaCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcY2prY29kZWNzXG11bHRpYnl0ZWNvZGVjLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGNqa2NvZGVjc1xtdWx0aWJ5dGVjb2RlYy5oIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJPC9GaWx0ZXI+CisJCQk8RmlsdGVyCisJCQkJTmFtZT0iX2lvIgorCQkJCT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXF9pb21vZHVsZS5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmgiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xidWZmZXJlZGlvLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xieXRlc2lvLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9pb1xmaWxlaW8uYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXGlvYmFzZS5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaW9cc3RyaW5naW8uYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2lvXHRleHRpby5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJPC9GaWx0ZXI+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJPYmplY3RzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYWJzdHJhY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xib29sb2JqZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnVmZmVyb2JqZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcYnl0ZXNfbWV0aG9kcy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGJ5dGVhcnJheW9iamVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNhcHN1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjZWxsb2JqZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY2xhc3NvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xjb2JqZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcY29kZW9iamVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGNvbXBsZXhvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xzdHJpbmdsaWJcY291bnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xkZXNjcm9iamVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGRpY3RvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xlbnVtb2JqZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZXhjZXB0aW9ucy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxmYXN0c2VhcmNoLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmlsZW9iamVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxmaW5kLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcZmxvYXRvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xmcmFtZW9iamVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGZ1bmNvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xnZW5vYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xpbnRvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xpdGVyb2JqZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcbGlzdG9iamVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXGxvbmdvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtZW1vcnlvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtZXRob2RvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xtb2R1bGVvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xvYm1hbGxvYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHN0cmluZ2xpYlxwYXJ0aXRpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1xyYW5nZW9iamVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNldG9iamVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHNsaWNlb2JqZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nbGliXHNwbGl0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RyaW5nb2JqZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcc3RydWN0c2VxLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdHVwbGVvYmplY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cT2JqZWN0c1x0eXBlb2JqZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZWN0eXBlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcdW5pY29kZW9iamVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxPYmplY3RzXHVuaWNvZGV0eXBlX2RiLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE9iamVjdHNcd2Vha3JlZm9iamVjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlBhcnNlciIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYWNjZWxlci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcYml0c2V0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxmaXJzdHNldHMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGdyYW1tYXIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXGdyYW1tYXIxLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxsaXN0bm9kZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcbWV0YWdyYW1tYXIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG15cmVhZGxpbmUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXG5vZGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUGFyc2VyXHBhcnNlci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJccGFyc2VyLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclxwYXJzZXRvay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQYXJzZXJcdG9rZW5pemVyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBhcnNlclx0b2tlbml6ZXIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJQQyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xfc3VicHJvY2Vzcy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xfd2lucmVnLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGNvbmZpZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xkbF9udC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xlcnJtYXAuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcZ2V0cGF0aHAuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcaW1wb3J0X250LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1zdmNydG1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbmZpZy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlB5dGhvbiIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cX3dhcm5pbmdzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxhc2RsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxhc3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGJsdGlubW9kdWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjZXZhbC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cY29kZWNzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxjb21waWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkdG9hLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxkeW5sb2FkX3dpbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZXJyb3JzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmb3JtYXR0ZXJfc3RyaW5nLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmb3JtYXR0ZXJfdW5pY29kZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZnJvemVuLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxmdXR1cmUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGFyZ3MuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldGNvbXBpbGVyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxnZXRjb3B5cmlnaHQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldG9wdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cZ2V0cGxhdGZvcm0uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdldHZlcnNpb24uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGdyYW1pbml0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXGltcG9ydGRsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxpbXBvcnRkbC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbWFyc2hhbC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbW9kc3VwcG9ydC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbXlzbnByaW50Zi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cbXlzdHJ0b3VsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxwZWVwaG9sZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlhcmVuYS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHljdHlwZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlmcGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5bWF0aC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdGF0ZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25ccHlzdHJjbXAuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHB5c3RydG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxQeXRob24tYXN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxweXRob25ydW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHJhbmRvbS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3RydWN0bWVtYmVyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblxzeW10YWJsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cc3lzbW9kdWxlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFB5dGhvblx0aHJlYWQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUHl0aG9uXHRocmVhZF9udC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQeXRob25cdHJhY2ViYWNrLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX250LnJjIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9weXRob253LnZjcHJvaiBiL1BDL1ZTOC4wL3B5dGhvbncudmNwcm9qCmluZGV4IDUwMzdiNzguLmY4OTBkNjAgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL3B5dGhvbncudmNwcm9qCisrKyBiL1BDL1ZTOC4wL3B5dGhvbncudmNwcm9qCkBAIC0xLDYxOCArMSw2MTggQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJweXRob253Ig0KLQlQcm9qZWN0R1VJRD0ie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253X2QuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9ud19kLmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXFdpbk1haW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJweXRob253IgorCVByb2plY3RHVUlEPSJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlDb21waWxlQXM9IjAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253X2QuZXhlIgorCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9ud19kLmV4ZSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlDb21waWxlQXM9IjAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJCUNvbXBpbGVBcz0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIgorCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlDb21waWxlQXM9IjAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9IiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlDb21waWxlQXM9IjAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCUltcG9ydExpYnJhcnk9IiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9leGUucmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXFdpbk1haW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvcmVsZWFzZS52c3Byb3BzIGIvUEMvVlM4LjAvcmVsZWFzZS52c3Byb3BzCmluZGV4IDA4ZGVmOTAuLjZkNjg0MmQgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL3JlbGVhc2UudnNwcm9wcworKysgYi9QQy9WUzguMC9yZWxlYXNlLnZzcHJvcHMKQEAgLTEsMTUgKzEsMTUgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJyZWxlYXNlIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iS2lsbFB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKE91dERpcilca2lsbF9weXRob24uZXhlIg0KLQkvPgkNCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0icmVsZWFzZSIKKwk+CisJPFRvb2wKKwkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0iS2lsbFB5dGhvbkV4ZSIKKwkJVmFsdWU9IiQoT3V0RGlyKVxraWxsX3B5dGhvbi5leGUiCisJLz4JCis8L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9ydC5iYXQgYi9QQy9WUzguMC9ydC5iYXQKaW5kZXggOTBmZDc5NC4uNzY3YWY3NiAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvcnQuYmF0CisrKyBiL1BDL1ZTOC4wL3J0LmJhdApAQCAtMSw1MiArMSw1MiBAQAotQGVjaG8gb2ZmDQotcmVtIFJ1biBUZXN0cy4gIFJ1biB0aGUgcmVncmVzc2lvbiB0ZXN0IHN1aXRlLg0KLXJlbSBVc2FnZTogIHJ0IFstZF0gWy1PXSBbLXFdIHJlZ3J0ZXN0X2FyZ3MNCi1yZW0gLWQgICBSdW4gRGVidWcgYnVpbGQgKHB5dGhvbl9kLmV4ZSkuICBFbHNlIHJlbGVhc2UgYnVpbGQuDQotcmVtIC1PICAgUnVuIHB5dGhvbi5leGUgb3IgcHl0aG9uX2QuZXhlIChzZWUgLWQpIHdpdGggLU8uDQotcmVtIC1xICAgInF1aWNrIiAtLSBub3JtYWxseSB0aGUgdGVzdHMgYXJlIHJ1biB0d2ljZSwgdGhlIGZpcnN0IHRpbWUNCi1yZW0gICAgICBhZnRlciBkZWxldGluZyBhbGwgdGhlIC5weVtjb10gZmlsZXMgcmVhY2hhYmxlIGZyb20gTGliLy4NCi1yZW0gICAgICAtcSBydW5zIHRoZSB0ZXN0cyBqdXN0IG9uY2UsIGFuZCB3aXRob3V0IGRlbGV0aW5nIC5weVtjb10gZmlsZXMuDQotcmVtIEFsbCBsZWFkaW5nIGluc3RhbmNlcyBvZiB0aGVzZSBzd2l0Y2hlcyBhcmUgc2hpZnRlZCBvZmYsIGFuZA0KLXJlbSB3aGF0ZXZlciByZW1haW5zIGlzIHBhc3NlZCB0byByZWdydGVzdC5weS4gIEZvciBleGFtcGxlLA0KLXJlbSAgICAgcnQgLU8gLWQgLXggdGVzdF90aHJlYWQNCi1yZW0gcnVucw0KLXJlbSAgICAgcHl0aG9uX2QgLU8gLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgLXggdGVzdF90aHJlYWQNCi1yZW0gdHdpY2UsIGFuZA0KLXJlbSAgICAgcnQgLXEgLWcgdGVzdF9iaW5hc2NpaQ0KLXJlbSBydW5zDQotcmVtICAgICBweXRob25fZCAuLi9saWIvdGVzdC9yZWdydGVzdC5weSAtZyB0ZXN0X2JpbmFzY2lpDQotcmVtIHRvIGdlbmVyYXRlIHRoZSBleHBlY3RlZC1vdXRwdXQgZmlsZSBmb3IgYmluYXNjaWkgcXVpY2tseS4NCi1yZW0NCi1yZW0gQ29uZnVzaW5nOiAgaWYgeW91IHdhbnQgdG8gcGFzcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCBsaWtlDQotcmVtICAgICAtdSBuZXR3b3JrLGxhcmdlZmlsZQ0KLXJlbSB0aGVuIHlvdSBoYXZlIHRvIHF1b3RlIGl0IG9uIHRoZSBydCBsaW5lLCBsaWtlDQotcmVtICAgICBydCAtdSAibmV0d29yayxsYXJnZWZpbGUiDQotDQotc2V0bG9jYWwNCi0NCi1zZXQgZXhlPXB5dGhvbg0KLXNldCBxbW9kZT0NCi1zZXQgZGFzaE89DQotUEFUSCAlUEFUSCU7Li5cLi5cLi5cdGNsdGtcYmluDQotDQotOkNoZWNrT3B0cw0KLWlmICIlMSI9PSItTyIgKHNldCBkYXNoTz0tTykgICAgICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICIlMSI9PSItcSIgKHNldCBxbW9kZT15ZXMpICAgICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICIlMSI9PSItZCIgKHNldCBleGU9cHl0aG9uX2QpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLQ0KLXNldCBjbWQ9JWV4ZSUgJWRhc2hPJSAtRSAtdHQgLi4vLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCi1pZiBkZWZpbmVkIHFtb2RlIGdvdG8gUW1vZGUNCi0NCi1lY2hvIERlbGV0aW5nIC5weWMvLnB5byBmaWxlcyAuLi4NCi0lZXhlJSBybXB5Yy5weQ0KLQ0KLWVjaG8gb24NCi0lY21kJQ0KLUBlY2hvIG9mZg0KLQ0KLWVjaG8gQWJvdXQgdG8gcnVuIGFnYWluIHdpdGhvdXQgZGVsZXRpbmcgLnB5Yy8ucHlvIGZpcnN0Og0KLXBhdXNlDQotDQotOlFtb2RlDQotZWNobyBvbg0KLSVjbWQlDQorQGVjaG8gb2ZmCityZW0gUnVuIFRlc3RzLiAgUnVuIHRoZSByZWdyZXNzaW9uIHRlc3Qgc3VpdGUuCityZW0gVXNhZ2U6ICBydCBbLWRdIFstT10gWy1xXSByZWdydGVzdF9hcmdzCityZW0gLWQgICBSdW4gRGVidWcgYnVpbGQgKHB5dGhvbl9kLmV4ZSkuICBFbHNlIHJlbGVhc2UgYnVpbGQuCityZW0gLU8gICBSdW4gcHl0aG9uLmV4ZSBvciBweXRob25fZC5leGUgKHNlZSAtZCkgd2l0aCAtTy4KK3JlbSAtcSAgICJxdWljayIgLS0gbm9ybWFsbHkgdGhlIHRlc3RzIGFyZSBydW4gdHdpY2UsIHRoZSBmaXJzdCB0aW1lCityZW0gICAgICBhZnRlciBkZWxldGluZyBhbGwgdGhlIC5weVtjb10gZmlsZXMgcmVhY2hhYmxlIGZyb20gTGliLy4KK3JlbSAgICAgIC1xIHJ1bnMgdGhlIHRlc3RzIGp1c3Qgb25jZSwgYW5kIHdpdGhvdXQgZGVsZXRpbmcgLnB5W2NvXSBmaWxlcy4KK3JlbSBBbGwgbGVhZGluZyBpbnN0YW5jZXMgb2YgdGhlc2Ugc3dpdGNoZXMgYXJlIHNoaWZ0ZWQgb2ZmLCBhbmQKK3JlbSB3aGF0ZXZlciByZW1haW5zIGlzIHBhc3NlZCB0byByZWdydGVzdC5weS4gIEZvciBleGFtcGxlLAorcmVtICAgICBydCAtTyAtZCAteCB0ZXN0X3RocmVhZAorcmVtIHJ1bnMKK3JlbSAgICAgcHl0aG9uX2QgLU8gLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgLXggdGVzdF90aHJlYWQKK3JlbSB0d2ljZSwgYW5kCityZW0gICAgIHJ0IC1xIC1nIHRlc3RfYmluYXNjaWkKK3JlbSBydW5zCityZW0gICAgIHB5dGhvbl9kIC4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5IC1nIHRlc3RfYmluYXNjaWkKK3JlbSB0byBnZW5lcmF0ZSB0aGUgZXhwZWN0ZWQtb3V0cHV0IGZpbGUgZm9yIGJpbmFzY2lpIHF1aWNrbHkuCityZW0KK3JlbSBDb25mdXNpbmc6ICBpZiB5b3Ugd2FudCB0byBwYXNzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIGxpa2UKK3JlbSAgICAgLXUgbmV0d29yayxsYXJnZWZpbGUKK3JlbSB0aGVuIHlvdSBoYXZlIHRvIHF1b3RlIGl0IG9uIHRoZSBydCBsaW5lLCBsaWtlCityZW0gICAgIHJ0IC11ICJuZXR3b3JrLGxhcmdlZmlsZSIKKworc2V0bG9jYWwKKworc2V0IGV4ZT1weXRob24KK3NldCBxbW9kZT0KK3NldCBkYXNoTz0KK1BBVEggJVBBVEglOy4uXC4uXC4uXHRjbHRrXGJpbgorCis6Q2hlY2tPcHRzCitpZiAiJTEiPT0iLU8iIChzZXQgZGFzaE89LU8pICAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlMSI9PSItcSIgKHNldCBxbW9kZT15ZXMpICAgICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiUxIj09Ii1kIiAoc2V0IGV4ZT1weXRob25fZCkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCisKK3NldCBjbWQ9JWV4ZSUgJWRhc2hPJSAtRSAtdHQgLi4vLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkKK2lmIGRlZmluZWQgcW1vZGUgZ290byBRbW9kZQorCitlY2hvIERlbGV0aW5nIC5weWMvLnB5byBmaWxlcyAuLi4KKyVleGUlIHJtcHljLnB5CisKK2VjaG8gb24KKyVjbWQlCitAZWNobyBvZmYKKworZWNobyBBYm91dCB0byBydW4gYWdhaW4gd2l0aG91dCBkZWxldGluZyAucHljLy5weW8gZmlyc3Q6CitwYXVzZQorCis6UW1vZGUKK2VjaG8gb24KKyVjbWQlCmRpZmYgLS1naXQgYS9QQy9WUzguMC9zZWxlY3QudmNwcm9qIGIvUEMvVlM4LjAvc2VsZWN0LnZjcHJvagppbmRleCA2NzFmYzE2Li40OWVjMmYwIDEwMDY0NAotLS0gYS9QQy9WUzguMC9zZWxlY3QudmNwcm9qCisrKyBiL1BDL1ZTOC4wL3NlbGVjdC52Y3Byb2oKQEAgLTEsNTM3ICsxLDUzNyBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InNlbGVjdCINCi0JUHJvamVjdEdVSUQ9InsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9Ig0KLQlSb290TmFtZXNwYWNlPSJzZWxlY3QiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9InNlbGVjdCIKKwlQcm9qZWN0R1VJRD0iezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iCisJUm9vdE5hbWVzcGFjZT0ic2VsZWN0IgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNlbGVjdG1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9zcWxpdGUzLnZjcHJvaiBiL1BDL1ZTOC4wL3NxbGl0ZTMudmNwcm9qCmluZGV4IDlhZmJlNWQuLmU3ZTA3MjggMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL3NxbGl0ZTMudmNwcm9qCisrKyBiL1BDL1ZTOC4wL3NxbGl0ZTMudmNwcm9qCkBAIC0xLDUzNyArMSw1MzcgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJzcWxpdGUzIg0KLQlQcm9qZWN0R1VJRD0ie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQotCVJvb3ROYW1lc3BhY2U9InNxbGl0ZTMiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXGRlYnVnLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSImcXVvdDsuLlwuLlwuLlxzcWxpdGUtMy42LjIxJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXHNxbGl0ZS0zLjYuMjFcc3FsaXRlMy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMVxzcWxpdGUzZXh0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMVxzcWxpdGUzLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0ic3FsaXRlMyIKKwlQcm9qZWN0R1VJRD0ie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iCisJUm9vdE5hbWVzcGFjZT0ic3FsaXRlMyIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLmRsbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5cZGVidWcudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLmRsbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5kbGwiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7Li5cLi5cLi5cc3FsaXRlLTMuNi4yMSZxdW90OyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5kbGwiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlwuLlxzcWxpdGUtMy42LjIxXHNxbGl0ZTMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMVxzcWxpdGUzZXh0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXC4uXHNxbGl0ZS0zLjYuMjFcc3FsaXRlMy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzguMC9zcWxpdGUzLnZzcHJvcHMgYi9QQy9WUzguMC9zcWxpdGUzLnZzcHJvcHMKaW5kZXggODMwMDMyOC4uMGI3MTAyZCAxMDA2NDQKLS0tIGEvUEMvVlM4LjAvc3FsaXRlMy52c3Byb3BzCisrKyBiL1BDL1ZTOC4wL3NxbGl0ZTMudnNwcm9wcwpAQCAtMSwxNCArMSwxNCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InNxbGl0ZTMiDQotCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJTUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KSINCi0JCVdhcm5pbmdMZXZlbD0iMSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0ic3FsaXRlMyIKKwlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wcyIKKwk+CisJPFRvb2wKKwkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cLi5cc3FsaXRlLTMuNi4yMSIKKwkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpIgorCQlXYXJuaW5nTGV2ZWw9IjEiCisJLz4KKzwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3VuaWNvZGVkYXRhLnZjcHJvaiBiL1BDL1ZTOC4wL3VuaWNvZGVkYXRhLnZjcHJvagppbmRleCA0Y2Y3ZDIzLi44NGE5ZTA5IDEwMDY0NAotLS0gYS9QQy9WUzguMC91bmljb2RlZGF0YS52Y3Byb2oKKysrIGIvUEMvVlM4LjAvdW5pY29kZWRhdGEudmNwcm9qCkBAIC0xLDUzMyArMSw1MzMgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJ1bmljb2RlZGF0YSINCi0JUHJvamVjdEdVSUQ9IntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9Ig0KLQlSb290TmFtZXNwYWNlPSJ1bmljb2RlZGF0YSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZW5hbWVfZGIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0idW5pY29kZWRhdGEiCisJUHJvamVjdEdVSUQ9IntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9IgorCVJvb3ROYW1lc3BhY2U9InVuaWNvZGVkYXRhIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlZGF0YV9kYi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGEuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAvdzl4cG9wZW4udmNwcm9qIGIvUEMvVlM4LjAvdzl4cG9wZW4udmNwcm9qCmluZGV4IGUxNGQyMDYuLjM3NDVjNjUgMTAwNjQ0Ci0tLSBhL1BDL1ZTOC4wL3c5eHBvcGVuLnZjcHJvagorKysgYi9QQy9WUzguMC93OXhwb3Blbi52Y3Byb2oKQEAgLTEsNTc2ICsxLDU3NiBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9Inc5eHBvcGVuIg0KLQlQcm9qZWN0R1VJRD0ie0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0iDQotCVJvb3ROYW1lc3BhY2U9Inc5eHBvcGVuIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcdzl4cG9wZW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJ3OXhwb3BlbiIKKwlQcm9qZWN0R1VJRD0ie0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0iCisJUm9vdE5hbWVzcGFjZT0idzl4cG9wZW4iCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUJhc2ljUnVudGltZUNoZWNrcz0iMyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjAiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjAiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCUltcG9ydExpYnJhcnk9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjAiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJSW1wb3J0TGlicmFyeT0iIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjAiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJSW1wb3J0TGlicmFyeT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjAiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJSW1wb3J0TGlicmFyeT0iIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHc5eHBvcGVuLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOC4wL3dpbnNvdW5kLnZjcHJvaiBiL1BDL1ZTOC4wL3dpbnNvdW5kLnZjcHJvagppbmRleCBkMzc5MzU3Li4xNWQ1N2RjIDEwMDY0NAotLS0gYS9QQy9WUzguMC93aW5zb3VuZC52Y3Byb2oKKysrIGIvUEMvVlM4LjAvd2luc291bmQudmNwcm9qCkBAIC0xLDUyMyArMSw1MjMgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJ3aW5zb3VuZCINCi0JUHJvamVjdEdVSUQ9InsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KLQlSb290TmFtZXNwYWNlPSJ3aW5zb3VuZCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3aW5zb3VuZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9IndpbnNvdW5kIgorCVByb2plY3RHVUlEPSJ7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fSIKKwlSb290TmFtZXNwYWNlPSJ3aW5zb3VuZCIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcd2luc291bmQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM4LjAveDY0LnZzcHJvcHMgYi9QQy9WUzguMC94NjQudnNwcm9wcwppbmRleCA5Zjg4ZDQ0Li4wNzIwMDg0IDEwMDY0NAotLS0gYS9QQy9WUzguMC94NjQudnNwcm9wcworKysgYi9QQy9WUzguMC94NjQudnNwcm9wcwpAQCAtMSwyMiArMSwyMiBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9ImFtZDY0Ig0KLQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpXGFtZDY0XCINCi0JSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUHJvamVjdE5hbWUpXCINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCUFkZGl0aW9uYWxPcHRpb25zPSIvVVNFQ0w6TVNfT1BURVJPTiAvR1MtIg0KLQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU42NDtfTV9YNjQiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iUHl0aG9uRXhlIg0KLQkJVmFsdWU9IiQoSE9TVF9QWVRIT04pIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJhbWQ2NCIKKwlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpXGFtZDY0XCIKKwlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uTmFtZSlcJChQcm9qZWN0TmFtZSlcIgorCT4KKwk8VG9vbAorCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1VTRUNMOk1TX09QVEVST04gL0dTLSIKKwkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU42NDtfTV9YNjQiCisJLz4KKwk8VG9vbAorCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCVRhcmdldE1hY2hpbmU9IjE3IgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJQeXRob25FeGUiCisJCVZhbHVlPSIkKEhPU1RfUFlUSE9OKSIKKwkvPgorPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2JzZGRiLnZjcHJvaiBiL1BDL1ZTOS4wL19ic2RkYi52Y3Byb2oKaW5kZXggMmI5MjZhYS4uYzg1YWNhNiAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvX2JzZGRiLnZjcHJvagorKysgYi9QQy9WUzkuMC9fYnNkZGIudmNwcm9qCkBAIC0xLDE0NjMgKzEsMTQ2MyBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9ic2RkYiINCi0JUHJvamVjdEdVSUQ9IntCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9Ig0KLQlSb290TmFtZXNwYWNlPSJfYnNkZGIiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChic2RkYkRpciksJChic2RkYkRpcilcLi4iDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChic2RkYkRpciksJChic2RkYkRpcilcLi4iDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChic2RkYkRpciksJChic2RkYkRpcilcLi4iDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnNkZGJEaXIpLCQoYnNkZGJEaXIpXC4uIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJzZGRiRGlyKSwkKGJzZGRiRGlyKVwuLiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGJzZGRiRGVwTGlicykiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnNkZGJEaXIpLCQoYnNkZGJEaXIpXC4uIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnNkZGJEaXIpLCQoYnNkZGJEaXIpXC4uIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnNkZGJEaXIpLCQoYnNkZGJEaXIpXC4uIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xic2RkYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2JzZGRiLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJCZXJrZWxleSBEQiA0LjcuMjUgU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNyeXB0b1xhZXNfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9jb21wYWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9jb21wYXJlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9jb252LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9jdXJhZGouYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X2N1cnNvci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfZGVsZXRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X29wZW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X3B1dC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9yZWNsYWltLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9yZWNuby5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfcnNlYXJjaC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfc2VhcmNoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9zcGxpdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfdXBncmFkZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfdmVyaWZ5LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidHJlZV9hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxjcmRlbF9hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxjcmRlbF9yZWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNyeXB0b1xjcnlwdG8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9hbS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfYXV0by5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY29tbW9uXGRiX2J5dGVvcmRlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfY2FtLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9jZHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX2NvbnYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX2Rpc3BhdGNoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9kdXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNvbW1vblxkYl9lcnIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNvbW1vblxkYl9nZXRsb25nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxjb21tb25cZGJfaWRzcGFjZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfaWZhY2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX2pvaW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNvbW1vblxkYl9sb2cyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9tZXRhLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX29wZW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX292ZXJmbG93LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9vdmZsX3ZyZnkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3ByLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9yZWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3JlY2xhaW0uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3JlbW92ZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfcmVuYW1lLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9yZXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3NldGlkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9zZXRsc24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNvbW1vblxkYl9zaGFzaC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfc3RhdGkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3RydW5jYXRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl91cGcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3VwZ19vcGQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3ZyZnkuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3ZyZnl1dGlsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYm1cZGJtLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYnJlZ1xkYnJlZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJyZWdcZGJyZWdfYXV0by5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJyZWdcZGJyZWdfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYnJlZ1xkYnJlZ19zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYnJlZ1xkYnJlZ191dGlsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxjb21tb25cZGJ0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxlbnZcZW52X2FsbG9jLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxlbnZcZW52X2NvbmZpZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZW52XGVudl9mYWlsY2hrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxlbnZcZW52X2ZpbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGVudlxlbnZfZ2xvYmFscy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZW52XGVudl9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGVudlxlbnZfbmFtZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZW52XGVudl9vcGVuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxlbnZcZW52X3JlY292ZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGVudlxlbnZfcmVnaW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxlbnZcZW52X3JlZ2lzdGVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxlbnZcZW52X3NpZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZW52XGVudl9zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxmaWxlb3BzXGZpbGVvcHNfYXV0by5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZmlsZW9wc1xmb3BfYmFzaWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGZpbGVvcHNcZm9wX3JlYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZmlsZW9wc1xmb3BfdXRpbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5caGFzaFxoYXNoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfYXV0by5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5caGFzaFxoYXNoX2NvbnYuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhhc2hcaGFzaF9kdXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhhc2hcaGFzaF9mdW5jLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfbWV0YS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5caGFzaFxoYXNoX21ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5caGFzaFxoYXNoX29wZW4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhhc2hcaGFzaF9wYWdlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfcmVjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfcmVjbGFpbS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5caGFzaFxoYXNoX3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhhc2hcaGFzaF91cGdyYWRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfdmVyaWZ5LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxobWFjXGhtYWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhzZWFyY2hcaHNlYXJjaC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbG9ja1xsb2NrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2NrXGxvY2tfZGVhZGxvY2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGxvY2tcbG9ja19mYWlsY2hrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2NrXGxvY2tfaWQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGxvY2tcbG9ja19saXN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2NrXGxvY2tfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2NrXGxvY2tfcmVnaW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2NrXGxvY2tfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbG9ja1xsb2NrX3RpbWVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2NrXGxvY2tfdXRpbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbG9nXGxvZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbG9nXGxvZ19hcmNoaXZlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2dcbG9nX2NvbXBhcmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGxvZ1xsb2dfZGVidWcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGxvZ1xsb2dfZ2V0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2dcbG9nX21ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbG9nXGxvZ19wdXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGxvZ1xsb2dfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY29tbW9uXG1rcGF0aC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbXBcbXBfYWxsb2MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG1wXG1wX2JoLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9mZ2V0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9mbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9mb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbXBcbXBfZnB1dC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbXBcbXBfZnNldC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbXBcbXBfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9tdmNjLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9yZWdpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG1wXG1wX3JlZ2lzdGVyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9yZXNpemUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG1wXG1wX3N0YXQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG1wXG1wX3N5bmMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG1wXG1wX3RyaWNrbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNyeXB0b1xtZXJzZW5uZVxtdDE5OTM3ZGIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG11dGV4XG11dF9hbGxvYy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbXV0ZXhcbXV0X2ZhaWxjaGsuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG11dGV4XG11dF9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG11dGV4XG11dF9yZWdpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG11dGV4XG11dF9zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtdXRleFxtdXRfd2luMzIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNvbW1vblxvcGVuZmxhZ3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zXG9zX2Fib3J0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX2Ficy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Ncb3NfYWRkcmluZm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zXG9zX2FsbG9jLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX2Nsb2NrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX2NvbmZpZy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19jcHUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zXG9zX2N0aW1lLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX2Rpci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19lcnJuby5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19maWQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfZmxvY2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfZnN5bmMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfZ2V0ZW52LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX2hhbmRsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19tYXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNvbW1vblxvc19tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfbWtkaXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3Nfb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Ncb3NfcGlkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX3JlbmFtZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Ncb3Nfcm9vdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Ncb3NfcnBhdGguYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfcncuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3Nfc2Vlay5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Ncb3Nfc3RhY2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3Nfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Ncb3NfdG1wZGlyLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX3RydW5jYXRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc1xvc191aWQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfdW5saW5rLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX3lpZWxkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxxYW1ccWFtLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxxYW1ccWFtX2F1dG8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHFhbVxxYW1fY29udi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccWFtXHFhbV9maWxlcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccWFtXHFhbV9tZXRob2QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHFhbVxxYW1fb3Blbi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccWFtXHFhbV9yZWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHFhbVxxYW1fc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccWFtXHFhbV91cGdyYWRlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxxYW1ccWFtX3ZlcmlmeS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwXHJlcF9hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBccmVwX2JhY2t1cC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwXHJlcF9lbGVjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwXHJlcF9sZWFzZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwXHJlcF9sb2cuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcFxyZXBfbWV0aG9kLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBccmVwX3JlY29yZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwXHJlcF9yZWdpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcFxyZXBfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwXHJlcF91dGlsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBccmVwX3ZlcmlmeS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwbWdyXHJlcG1ncl9hdXRvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBtZ3JccmVwbWdyX2VsZWN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBtZ3JccmVwbWdyX21ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwbWdyXHJlcG1ncl9tc2cuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcG1nclxyZXBtZ3JfbmV0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBtZ3JccmVwbWdyX3F1ZXVlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBtZ3JccmVwbWdyX3NlbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwbWdyXHJlcG1ncl9zdGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBtZ3JccmVwbWdyX3V0aWwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcG1nclxyZXBtZ3Jfd2luZG93cy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY3J5cHRvXHJpam5kYWVsXHJpam5kYWVsLWFsZy1mc3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNyeXB0b1xyaWpuZGFlbFxyaWpuZGFlbC1hcGktZnN0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxzZXF1ZW5jZVxzZXFfc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cc2VxdWVuY2Vcc2VxdWVuY2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhtYWNcc2hhMS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY2xpYlxzdHJzZXAuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHR4blx0eG4uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHR4blx0eG5fYXV0by5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cdHhuXHR4bl9jaGtwdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cdHhuXHR4bl9mYWlsY2hrLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlx0eG5cdHhuX21ldGhvZC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cdHhuXHR4bl9yZWMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHR4blx0eG5fcmVjb3Zlci5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cdHhuXHR4bl9yZWdpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHR4blx0eG5fc3RhdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cdHhuXHR4bl91dGlsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxjb21tb25cdXRpbF9jYWNoZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY29tbW9uXHV0aWxfbG9nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxjb21tb25cdXRpbF9zaWcuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHhhXHhhLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlx4YVx4YV9kYi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ceGFceGFfbWFwLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxjb21tb25cemVyb2ZpbGwuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOS4wMCIKKwlOYW1lPSJfYnNkZGIiCisJUHJvamVjdEdVSUQ9IntCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9IgorCVJvb3ROYW1lc3BhY2U9Il9ic2RkYiIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChic2RkYkRpciksJChic2RkYkRpcilcLi4iCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChic2RkYkRpciksJChic2RkYkRpcilcLi4iCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJzZGRiRGlyKSwkKGJzZGRiRGlyKVwuLiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJzZGRiRGlyKSwkKGJzZGRiRGlyKVwuLiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGJzZGRiRGVwTGlicykiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJzZGRiRGlyKSwkKGJzZGRiRGlyKVwuLiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChic2RkYkRpciksJChic2RkYkRpcilcLi4iCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQoYnNkZGJEZXBMaWJzKSIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJzZGRiRGlyKSwkKGJzZGRiRGlyKVwuLiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJChic2RkYkRlcExpYnMpIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnNkZGJEaXIpLCQoYnNkZGJEaXIpXC4uIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKGJzZGRiRGVwTGlicykiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xic2RkYi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9ic2RkYi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkJlcmtlbGV5IERCIDQuNy4yNSBTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY3J5cHRvXGFlc19tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfY29tcGFjdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9jb21wYXJlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X2NvbnYuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfY3VyYWRqLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X2N1cnNvci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9kZWxldGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X29wZW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfcHV0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X3JlYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF9yZWNsYWltLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X3JlY25vLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X3JzZWFyY2guYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfc2VhcmNoLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X3NwbGl0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGJ0cmVlXGJ0X3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRfdXBncmFkZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxidHJlZVxidF92ZXJpZnkuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cYnRyZWVcYnRyZWVfYXV0by5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxjcmRlbF9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGNyZGVsX3JlYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxjcnlwdG9cY3J5cHRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX2FtLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX2F1dG8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY29tbW9uXGRiX2J5dGVvcmRlci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9jYW0uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfY2RzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX2NvbnYuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfZGlzcGF0Y2guYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfZHVwLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNvbW1vblxkYl9lcnIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY29tbW9uXGRiX2dldGxvbmcuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY29tbW9uXGRiX2lkc3BhY2UuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfaWZhY2UuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfam9pbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxjb21tb25cZGJfbG9nMi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9tZXRhLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9vcGVuLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX292ZXJmbG93LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX292ZmxfdnJmeS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9wci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9yZWMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfcmVjbGFpbS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9yZW1vdmUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfcmVuYW1lLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3JldC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9zZXRpZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl9zZXRsc24uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY29tbW9uXGRiX3NoYXNoLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3N0YXRpLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3RydW5jYXRlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3VwZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYlxkYl91cGdfb3BkLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRiXGRiX3ZyZnkuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJcZGJfdnJmeXV0aWwuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZGJtXGRibS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYnJlZ1xkYnJlZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYnJlZ1xkYnJlZ19hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRicmVnXGRicmVnX3JlYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxkYnJlZ1xkYnJlZ19zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGRicmVnXGRicmVnX3V0aWwuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY29tbW9uXGRidC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxlbnZcZW52X2FsbG9jLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGVudlxlbnZfY29uZmlnLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGVudlxlbnZfZmFpbGNoay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxlbnZcZW52X2ZpbGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZW52XGVudl9nbG9iYWxzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGVudlxlbnZfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGVudlxlbnZfbmFtZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxlbnZcZW52X29wZW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZW52XGVudl9yZWNvdmVyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGVudlxlbnZfcmVnaW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGVudlxlbnZfcmVnaXN0ZXIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZW52XGVudl9zaWcuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cZW52XGVudl9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGZpbGVvcHNcZmlsZW9wc19hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGZpbGVvcHNcZm9wX2Jhc2ljLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGZpbGVvcHNcZm9wX3JlYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxmaWxlb3BzXGZvcF91dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhhc2hcaGFzaC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfYXV0by5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfY29udi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfZHVwLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhhc2hcaGFzaF9mdW5jLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhhc2hcaGFzaF9tZXRhLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhhc2hcaGFzaF9tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5caGFzaFxoYXNoX29wZW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5caGFzaFxoYXNoX3BhZ2UuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5caGFzaFxoYXNoX3JlYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfcmVjbGFpbS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfc3RhdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfdXBncmFkZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoYXNoXGhhc2hfdmVyaWZ5LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGhtYWNcaG1hYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxoc2VhcmNoXGhzZWFyY2guYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbG9ja1xsb2NrLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGxvY2tcbG9ja19kZWFkbG9jay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2NrXGxvY2tfZmFpbGNoay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2NrXGxvY2tfaWQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbG9ja1xsb2NrX2xpc3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbG9ja1xsb2NrX21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2NrXGxvY2tfcmVnaW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGxvY2tcbG9ja19zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGxvY2tcbG9ja190aW1lci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2NrXGxvY2tfdXRpbC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2dcbG9nLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGxvZ1xsb2dfYXJjaGl2ZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2dcbG9nX2NvbXBhcmUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbG9nXGxvZ19kZWJ1Zy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2dcbG9nX2dldC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2dcbG9nX21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2dcbG9nX3B1dC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxsb2dcbG9nX3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY29tbW9uXG1rcGF0aC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9hbGxvYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9iaC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9mZ2V0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG1wXG1wX2ZtZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbXBcbXBfZm9wZW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbXBcbXBfZnB1dC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9mc2V0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG1wXG1wX21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9tdmNjLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG1wXG1wX3JlZ2lvbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9yZWdpc3Rlci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9yZXNpemUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbXBcbXBfc3RhdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtcFxtcF9zeW5jLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG1wXG1wX3RyaWNrbGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY3J5cHRvXG1lcnNlbm5lXG10MTk5MzdkYi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtdXRleFxtdXRfYWxsb2MuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbXV0ZXhcbXV0X2ZhaWxjaGsuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cbXV0ZXhcbXV0X21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxtdXRleFxtdXRfcmVnaW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG11dGV4XG11dF9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG11dGV4XG11dF93aW4zMi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxjb21tb25cb3BlbmZsYWdzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zXG9zX2Fib3J0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfYWJzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zXG9zX2FkZHJpbmZvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zXG9zX2FsbG9jLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfY2xvY2suYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19jb25maWcuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19jcHUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Ncb3NfY3RpbWUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19kaXIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19lcnJuby5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX2ZpZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX2Zsb2NrLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfZnN5bmMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19nZXRlbnYuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19oYW5kbGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19tYXAuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY29tbW9uXG9zX21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX21rZGlyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3Nfb3Blbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc1xvc19waWQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Nfd2luZG93c1xvc19yZW5hbWUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Ncb3Nfcm9vdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc1xvc19ycGF0aC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX3J3LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3Nfc2Vlay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc1xvc19zdGFjay5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxvc193aW5kb3dzXG9zX3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Ncb3NfdG1wZGlyLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfdHJ1bmNhdGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cb3Ncb3NfdWlkLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfdW5saW5rLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXG9zX3dpbmRvd3Ncb3NfeWllbGQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccWFtXHFhbS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxxYW1ccWFtX2F1dG8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccWFtXHFhbV9jb252LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHFhbVxxYW1fZmlsZXMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccWFtXHFhbV9tZXRob2QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccWFtXHFhbV9vcGVuLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHFhbVxxYW1fcmVjLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHFhbVxxYW1fc3RhdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxxYW1ccWFtX3VwZ3JhZGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccWFtXHFhbV92ZXJpZnkuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwXHJlcF9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcFxyZXBfYmFja3VwLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcFxyZXBfZWxlY3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwXHJlcF9sZWFzZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBccmVwX2xvZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBccmVwX21ldGhvZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBccmVwX3JlY29yZC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBccmVwX3JlZ2lvbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBccmVwX3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwXHJlcF91dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcFxyZXBfdmVyaWZ5LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcG1nclxyZXBtZ3JfYXV0by5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBtZ3JccmVwbWdyX2VsZWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcG1nclxyZXBtZ3JfbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcG1nclxyZXBtZ3JfbXNnLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcG1nclxyZXBtZ3JfbmV0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcG1nclxyZXBtZ3JfcXVldWUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwbWdyXHJlcG1ncl9zZWwuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ccmVwbWdyXHJlcG1ncl9zdGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHJlcG1nclxyZXBtZ3JfdXRpbC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxyZXBtZ3JccmVwbWdyX3dpbmRvd3MuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY3J5cHRvXHJpam5kYWVsXHJpam5kYWVsLWFsZy1mc3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cY3J5cHRvXHJpam5kYWVsXHJpam5kYWVsLWFwaS1mc3QuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cc2VxdWVuY2Vcc2VxX3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cc2VxdWVuY2Vcc2VxdWVuY2UuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5caG1hY1xzaGExLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNsaWJcc3Ryc2VwLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHR4blx0eG4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cdHhuXHR4bl9hdXRvLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHR4blx0eG5fY2hrcHQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cdHhuXHR4bl9mYWlsY2hrLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHR4blx0eG5fbWV0aG9kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHR4blx0eG5fcmVjLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXHR4blx0eG5fcmVjb3Zlci5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlx0eG5cdHhuX3JlZ2lvbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlx0eG5cdHhuX3N0YXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5cdHhuXHR4bl91dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNvbW1vblx1dGlsX2NhY2hlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNvbW1vblx1dGlsX2xvZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJzZGRiRGlyKVwuLlxjb21tb25cdXRpbF9zaWcuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ceGFceGEuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ceGFceGFfZGIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChic2RkYkRpcilcLi5ceGFceGFfbWFwLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnNkZGJEaXIpXC4uXGNvbW1vblx6ZXJvZmlsbC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fY3R5cGVzLnZjcHJvaiBiL1BDL1ZTOS4wL19jdHlwZXMudmNwcm9qCmluZGV4IDhlNWNiYTEuLjdhYzIwYzYgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL19jdHlwZXMudmNwcm9qCisrKyBiL1BDL1ZTOS4wL19jdHlwZXMudmNwcm9qCkBAIC0xLDcwNSArMSw3MDUgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LjAwIg0KLQlOYW1lPSJfY3R5cGVzIg0KLQlQcm9qZWN0R1VJRD0iezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0iDQotCVJvb3ROYW1lc3BhY2U9Il9jdHlwZXMiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIg0KLQkJCQlTdWJTeXN0ZW09IjAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSINCi0JCQkJU3ViU3lzdGVtPSIwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiDQotCQkJCVN1YlN5c3RlbT0iMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlcy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlc19kbGZjbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaV9jb21tb24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZml0YXJnZXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxiYWNrcy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGNhbGxwcm9jLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbWFsbG9jX2Nsb3N1cmUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXHN0Z2RpY3QuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW4zMi5jIg0KLQkJCQk+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1x3aW42NC5hc20iDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCQlDb21tYW5kTGluZT0ibWw2NCAvbm9sb2dvIC9jIC9aaSAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7Ig0KLQkJCQkJCU91dHB1dHM9IiQoSW50RGlyKVx3aW42NC5vYmoiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkvPg0KLQkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KLQkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCi0JCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQkJCT4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiDQotCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI5LjAwIgorCU5hbWU9Il9jdHlwZXMiCisJUHJvamVjdEdVSUQ9InswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9IgorCVJvb3ROYW1lc3BhY2U9Il9jdHlwZXMiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIgorCQkJCVN1YlN5c3RlbT0iMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxPcHRpb25zPSIvRVhQT1JUOkRsbEdldENsYXNzT2JqZWN0LFBSSVZBVEUgL0VYUE9SVDpEbGxDYW5VbmxvYWROb3csUFJJVkFURSIKKwkJCQlTdWJTeXN0ZW09IjAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxQTAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbE9wdGlvbnM9Ii9FWFBPUlQ6RGxsR2V0Q2xhc3NPYmplY3QsUFJJVkFURSAvRVhQT1JUOkRsbENhblVubG9hZE5vdyxQUklWQVRFIgorCQkJCVN1YlN5c3RlbT0iMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDFBMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiCisJCQkJU3ViU3lzdGVtPSIwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiCisJCQkJU3ViU3lzdGVtPSIwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2YyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsT3B0aW9ucz0iL0VYUE9SVDpEbGxHZXRDbGFzc09iamVjdCxQUklWQVRFIC9FWFBPUlQ6RGxsQ2FuVW5sb2FkTm93LFBSSVZBVEUiCisJCQkJU3ViU3lzdGVtPSIwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMUEwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjdHlwZXMuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGN0eXBlc19kbGZjbi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcZmZpLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmlfY29tbW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmljb25maWcuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXGxpYmZmaV9tc3ZjXGZmaXRhcmdldC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlcy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2FsbGJhY2tzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xjYWxscHJvYy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcY2ZpZWxkLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xmZmkuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXG1hbGxvY19jbG9zdXJlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2N0eXBlc1xsaWJmZmlfbXN2Y1xwcmVwX2NpZi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcc3RnZGljdC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luMzIuYyIKKwkJCQk+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcbGliZmZpX21zdmNcd2luNjQuYXNtIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvWmkgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7IgorCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiCisJCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCQkJQ29tbWFuZExpbmU9Im1sNjQgL25vbG9nbyAvYyAvRm8gJnF1b3Q7JChJbnREaXIpXHdpbjY0Lm9iaiZxdW90OyAmcXVvdDskKElucHV0UGF0aCkmcXVvdDsmI3gwRDsmI3gwQTsiCisJCQkJCQlPdXRwdXRzPSIkKEludERpcilcd2luNjQub2JqIgorCQkJCQkvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQkJCUNvbW1hbmRMaW5lPSJtbDY0IC9ub2xvZ28gL2MgL0ZvICZxdW90OyQoSW50RGlyKVx3aW42NC5vYmomcXVvdDsgJnF1b3Q7JChJbnB1dFBhdGgpJnF1b3Q7JiN4MEQ7JiN4MEE7IgorCQkJCQkJT3V0cHV0cz0iJChJbnREaXIpXHdpbjY0Lm9iaiIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19jdHlwZXNfdGVzdC52Y3Byb2ogYi9QQy9WUzkuMC9fY3R5cGVzX3Rlc3QudmNwcm9qCmluZGV4IGY2NjJlM2EuLjE0NmUxMTQgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL19jdHlwZXNfdGVzdC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2N0eXBlc190ZXN0LnZjcHJvagpAQCAtMSw1MjEgKzEsNTIxIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX2N0eXBlc190ZXN0Ig0KLQlQcm9qZWN0R1VJRD0iezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQotCVJvb3ROYW1lc3BhY2U9Il9jdHlwZXNfdGVzdCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI5LDAwIgorCU5hbWU9Il9jdHlwZXNfdGVzdCIKKwlQcm9qZWN0R1VJRD0iezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iCisJUm9vdE5hbWVzcGFjZT0iX2N0eXBlc190ZXN0IgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfY3R5cGVzXF9jdHlwZXNfdGVzdC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9jdHlwZXNcX2N0eXBlc190ZXN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2ogYi9QQy9WUzkuMC9fZWxlbWVudHRyZWUudmNwcm9qCmluZGV4IDc0MTQ5OTcuLjI5MTVlYjMgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL19lbGVtZW50dHJlZS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX2VsZW1lbnR0cmVlLnZjcHJvagpAQCAtMSw2MTMgKzEsNjE3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX2VsZW1lbnR0cmVlIg0KLQlQcm9qZWN0R1VJRD0iezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iDQotCVJvb3ROYW1lc3BhY2U9Il9lbGVtZW50dHJlZSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iWE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlhNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7VVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcYXNjaWkuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcYXNjaWl0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXQuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXRfY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGV4cGF0X2V4dGVybmFsLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGlhc2NpaXRhYi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxpbnRlcm5hbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxsYXRpbjF0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbWFjY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XG5hbWV0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRccHlleHBhdG5zLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHV0Zjh0YWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcd2luY29uZmlnLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfZWxlbWVudHRyZWUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOSwwMCIKKwlOYW1lPSJfZWxlbWVudHRyZWUiCisJUHJvamVjdEdVSUQ9InsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9IgorCVJvb3ROYW1lc3BhY2U9Il9lbGVtZW50dHJlZSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iVVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUztVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlVTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iVVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iVVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iVVNFX1BZRVhQQVRfQ0FQSTtYTUxfU1RBVElDIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTAwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXE1vZHVsZXNcZXhwYXQiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlVTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJVU0VfUFlFWFBBVF9DQVBJO1hNTF9TVEFUSUMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMDAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxhc2NpaS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGFzY2lpdGFiLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcZXhwYXQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdF9jb25maWcuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFxleHBhdF9leHRlcm5hbC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGlhc2NpaXRhYi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XGludGVybmFsLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbGF0aW4xdGFiLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbWFjY29uZmlnLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbmFtZXRhYi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHB5ZXhwYXRucy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHV0Zjh0YWIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx3aW5jb25maWcuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxyb2xlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2VsZW1lbnR0cmVlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbG9hZGxpYnJhcnkuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX2hhc2hsaWIudmNwcm9qIGIvUEMvVlM5LjAvX2hhc2hsaWIudmNwcm9qCmluZGV4IDliNjM1NjMuLjIyMDU3Y2EgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL19oYXNobGliLnZjcHJvagorKysgYi9QQy9WUzkuMC9faGFzaGxpYi52Y3Byb2oKQEAgLTEsNTQ1ICsxLDU0NSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9Il9oYXNobGliIg0KLQlQcm9qZWN0R1VJRD0iezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0iDQotCVJvb3ROYW1lc3BhY2U9Il9oYXNobGliIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jNjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX2hhc2hvcGVuc3NsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjksMDAiCisJTmFtZT0iX2hhc2hsaWIiCisJUHJvamVjdEdVSUQ9Ins0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9IgorCVJvb3ROYW1lc3BhY2U9Il9oYXNobGliIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jbHVkZTMyIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluY2x1ZGU2NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmNsdWRlMzIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jbHVkZTY0IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmNsdWRlMzIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluY2x1ZGU2NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluY2x1ZGUzMiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluY2x1ZGU2NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfaGFzaG9wZW5zc2wuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX21zaS52Y3Byb2ogYi9QQy9WUzkuMC9fbXNpLnZjcHJvagppbmRleCBkODQwNDlkLi5mZjAzYjc1IDEwMDY0NAotLS0gYS9QQy9WUzkuMC9fbXNpLnZjcHJvagorKysgYi9QQy9WUzkuMC9fbXNpLnZjcHJvagpAQCAtMSw1MjkgKzEsNTI5IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX21zaSINCi0JUHJvamVjdEdVSUQ9InszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KLQlSb290TmFtZXNwYWNlPSJfbXNpIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xfbXNpLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjksMDAiCisJTmFtZT0iX21zaSIKKwlQcm9qZWN0R1VJRD0iezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iCisJUm9vdE5hbWVzcGFjZT0iX21zaSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iZmNpLmxpYiBtc2kubGliIHJwY3J0NC5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJmY2kubGliIG1zaS5saWIgcnBjcnQ0LmxpYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE2MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImZjaS5saWIgbXNpLmxpYiBycGNydDQubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTYwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXF9tc2kuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX211bHRpcHJvY2Vzc2luZy52Y3Byb2ogYi9QQy9WUzkuMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagppbmRleCA0ZTZmZjA5Li43MGM3MTE5IDEwMDY0NAotLS0gYS9QQy9WUzkuMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagorKysgYi9QQy9WUzkuMC9fbXVsdGlwcm9jZXNzaW5nLnZjcHJvagpAQCAtMSw1NTcgKzEsNTU3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX211bHRpcHJvY2Vzc2luZyINCi0JUHJvamVjdEdVSUQ9Ins5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KLQlSb290TmFtZXNwYWNlPSJfbXVsdGlwcm9jZXNzaW5nIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXGNvbm5lY3Rpb24uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdcbXVsdGlwcm9jZXNzaW5nLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdccGlwZV9jb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc2VtYXBob3JlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3Npbmdcc29ja2V0X2Nvbm5lY3Rpb24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1x3aW4zMl9mdW5jdGlvbnMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOSwwMCIKKwlOYW1lPSJfbXVsdGlwcm9jZXNzaW5nIgorCVByb2plY3RHVUlEPSJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSIKKwlSb290TmFtZXNwYWNlPSJfbXVsdGlwcm9jZXNzaW5nIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xtdWx0aXByb2Nlc3NpbmcuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXGNvbm5lY3Rpb24uaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXG11bHRpcHJvY2Vzc2luZy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9tdWx0aXByb2Nlc3NpbmdccGlwZV9jb25uZWN0aW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1xzZW1hcGhvcmUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfbXVsdGlwcm9jZXNzaW5nXHNvY2tldF9jb25uZWN0aW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX211bHRpcHJvY2Vzc2luZ1x3aW4zMl9mdW5jdGlvbnMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3NvY2tldC52Y3Byb2ogYi9QQy9WUzkuMC9fc29ja2V0LnZjcHJvagppbmRleCA4MGYwNzgxLi44ODM2MmYwIDEwMDY0NAotLS0gYS9QQy9WUzkuMC9fc29ja2V0LnZjcHJvagorKysgYi9QQy9WUzkuMC9fc29ja2V0LnZjcHJvagpAQCAtMSw1MzcgKzEsNTM3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX3NvY2tldCINCi0JUHJvamVjdEdVSUQ9Ins4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlSb290TmFtZXNwYWNlPSJfc29ja2V0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHNvY2tldG1vZHVsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI5LDAwIgorCU5hbWU9Il9zb2NrZXQiCisJUHJvamVjdEdVSUQ9Ins4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9IgorCVJvb3ROYW1lc3BhY2U9Il9zb2NrZXQiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFEMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUQwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRDAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzb2NrZXRtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvX3NxbGl0ZTMudmNwcm9qIGIvUEMvVlM5LjAvX3NxbGl0ZTMudmNwcm9qCmluZGV4IGY3MTAwZjEuLjUxZjEzMDUgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL19zcWxpdGUzLnZjcHJvagorKysgYi9QQy9WUzkuMC9fc3FsaXRlMy52Y3Byb2oKQEAgLTEsNjEzICsxLDYxMyBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9Il9zcWxpdGUzIg0KLQlQcm9qZWN0R1VJRD0iezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQotCVJvb3ROYW1lc3BhY2U9Il9zcWxpdGUzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY29ubmVjdGlvbi5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGN1cnNvci5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbW9kdWxlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccHJlcGFyZV9wcm90b2NvbC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHNxbGl0ZWNvbXBhdC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHN0YXRlbWVudC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY2FjaGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcY3Vyc29yLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcbWljcm9wcm90b2NvbHMuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxwcmVwYXJlX3Byb3RvY29sLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVccm93LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcdXRpbC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI5LjAwIgorCU5hbWU9Il9zcWxpdGUzIgorCVByb2plY3RHVUlEPSJ7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fSIKKwlSb290TmFtZXNwYWNlPSJfc3FsaXRlMyIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChzcWxpdGUzRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTU9EVUxFX05BTUU9XCZxdW90O3NxbGl0ZTNcJnF1b3Q7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMTgwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik1PRFVMRV9OQU1FPVwmcXVvdDtzcWxpdGUzXCZxdW90OyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTE4MDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHNxbGl0ZTNEaXIpIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJNT0RVTEVfTkFNRT1cJnF1b3Q7c3FsaXRlM1wmcXVvdDsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxODAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3FsaXRlY29tcGF0LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxzdGF0ZW1lbnQuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHV0aWwuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXGNhY2hlLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjb25uZWN0aW9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxjdXJzb3IuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXG1pY3JvcHJvdG9jb2xzLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVxtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHByZXBhcmVfcHJvdG9jb2wuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3FsaXRlXHJvdy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zcWxpdGVcc3RhdGVtZW50LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3NxbGl0ZVx1dGlsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL19zc2wudmNwcm9qIGIvUEMvVlM5LjAvX3NzbC52Y3Byb2oKaW5kZXggMGY5MWNjNy4uYzNkZDI0OCAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvX3NzbC52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX3NzbC52Y3Byb2oKQEAgLTEsNTQ1ICsxLDU0NSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjksMDAiDQotCU5hbWU9Il9zc2wiDQotCVByb2plY3RHVUlEPSJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUm9vdE5hbWVzcGFjZT0iX3NzbCINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0NjRcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluYzMyIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jMzIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmMzMiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmM2NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF9zc2wuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOSwwMCIKKwlOYW1lPSJfc3NsIgorCVByb2plY3RHVUlEPSJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSIKKwlSb290TmFtZXNwYWNlPSJfc3NsIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jbHVkZTMyIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDMyXHNzbGVheTMyLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluY2x1ZGU2NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmNsdWRlMzIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICZxdW90OyQoU29sdXRpb25EaXIpJnF1b3Q7JiN4MEQ7JiN4MEE7JnF1b3Q7JChQeXRob25FeGUpJnF1b3Q7IGJ1aWxkX3NzbC5weSBSZWxlYXNlICQoUGxhdGZvcm1OYW1lKSAtYSYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQob3BlbnNzbERpcilcaW5jbHVkZTY0IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiBjcnlwdDMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XGxpYmVheTMyLmxpYiAkKG9wZW5zc2xEaXIpXG91dDY0XHNzbGVheTMyLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJnF1b3Q7JChTb2x1dGlvbkRpcikmcXVvdDsmI3gwRDsmI3gwQTsmcXVvdDskKFB5dGhvbkV4ZSkmcXVvdDsgYnVpbGRfc3NsLnB5IFJlbGVhc2UgJChQbGF0Zm9ybU5hbWUpIC1hJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChvcGVuc3NsRGlyKVxpbmNsdWRlMzIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIGNyeXB0MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcbGliZWF5MzIubGliICQob3BlbnNzbERpcilcb3V0MzJcc3NsZWF5MzIubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluY2x1ZGU2NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluY2x1ZGUzMiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQzMlxzc2xlYXkzMi5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAmcXVvdDskKFNvbHV0aW9uRGlyKSZxdW90OyYjeDBEOyYjeDBBOyZxdW90OyQoUHl0aG9uRXhlKSZxdW90OyBidWlsZF9zc2wucHkgUmVsZWFzZSAkKFBsYXRmb3JtTmFtZSkgLWEmI3gwRDsmI3gwQTsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKG9wZW5zc2xEaXIpXGluY2x1ZGU2NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIgY3J5cHQzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxsaWJlYXkzMi5saWIgJChvcGVuc3NsRGlyKVxvdXQ2NFxzc2xlYXkzMi5saWIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xfc3NsLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL190ZXN0Y2FwaS52Y3Byb2ogYi9QQy9WUzkuMC9fdGVzdGNhcGkudmNwcm9qCmluZGV4IGU4MTRmZDQuLmNkNzE2ZDMgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL190ZXN0Y2FwaS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvX3Rlc3RjYXBpLnZjcHJvagpAQCAtMSw1MjEgKzEsNTIxIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX3Rlc3RjYXBpIg0KLQlQcm9qZWN0R1VJRD0iezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iDQotCVJvb3ROYW1lc3BhY2U9Il90ZXN0Y2FwaSINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3Rlc3RjYXBpbW9kdWxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjksMDAiCisJTmFtZT0iX3Rlc3RjYXBpIgorCVByb2plY3RHVUlEPSJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSIKKwlSb290TmFtZXNwYWNlPSJfdGVzdGNhcGkiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFlMUYwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWUxRjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZTFGMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXF90ZXN0Y2FwaW1vZHVsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2ogYi9QQy9WUzkuMC9fdGtpbnRlci52Y3Byb2oKaW5kZXggYTA0OWI5Yi4uOWMyNjY1YiAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvX3RraW50ZXIudmNwcm9qCisrKyBiL1BDL1ZTOS4wL190a2ludGVyLnZjcHJvagpAQCAtMSw1NDEgKzEsNTQxIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iX3RraW50ZXIiDQotCVByb2plY3RHVUlEPSJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSINCi0JUm9vdE5hbWVzcGFjZT0iX3RraW50ZXIiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYkRlYnVnKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWJEZWJ1ZykiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGtEaXIpXGluY2x1ZGUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGtMaWIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWIpIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0a0RpcilcaW5jbHVkZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYikiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWIpIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliKSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWIpIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RraW50ZXIuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdGthcHBpbml0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjksMDAiCisJTmFtZT0iX3RraW50ZXIiCisJUHJvamVjdEdVSUQ9Ins0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9IgorCVJvb3ROYW1lc3BhY2U9Il90a2ludGVyIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYkRlYnVnKSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJCh0Y2x0azY0RGlyKVxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0azY0TGliRGVidWcpIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYikiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGs2NERpcilcaW5jbHVkZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lUSF9BUFBJTklUIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IiQodGNsdGs2NExpYikiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrRGlyKVxpbmNsdWRlIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSVRIX0FQUElOSVQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iJCh0Y2x0a0xpYikiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWIpIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQodGNsdGtEaXIpXGluY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrTGliKSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKHRjbHRrNjREaXIpXGluY2x1ZGUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJVEhfQVBQSU5JVCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIkKHRjbHRrNjRMaWIpIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcX3RraW50ZXIuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x0a2FwcGluaXQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvYmRpc3Rfd2luaW5zdC52Y3Byb2ogYi9QQy9WUzkuMC9iZGlzdF93aW5pbnN0LnZjcHJvagppbmRleCBiOGNjN2FkLi5mYjM2YTZkIDEwMDY0NAotLS0gYS9QQy9WUzkuMC9iZGlzdF93aW5pbnN0LnZjcHJvagorKysgYi9QQy9WUzkuMC9iZGlzdF93aW5pbnN0LnZjcHJvagpAQCAtMSwyNzAgKzEsMjcwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOS4wMCINCi0JTmFtZT0iYmRpc3Rfd2luaW5zdCINCi0JUHJvamVjdEdVSUQ9IntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLQlSb290TmFtZXNwYWNlPSJ3aW5pbnN0Ig0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGU7Li5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY29tY3RsMzIubGliIGltYWdlaGxwLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QtOS4wLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMiINCi0JCQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KLQkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlPdXRwdXREaXJlY3Rvcnk9IiQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKSINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIg0KLQkJCQlIZWFkZXJGaWxlTmFtZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlOy4uXC4uXE1vZHVsZXNcemxpYiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIwIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImNvbWN0bDMyLmxpYiBpbWFnZWhscC5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC1hbWQ2NC5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSINCi0JCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ig0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcZXh0cmFjdC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbHRlcg0KLQkJCQlOYW1lPSJ6bGliIg0KLQkJCQk+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGNyYzMyLmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZ0cmVlcy5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJPC9GaWx0ZXI+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJIZWFkZXIgRmlsZXMiDQotCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcYXJjaGl2ZS5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxQeXRob25Qb3dlcmVkLmJtcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOS4wMCIKKwlOYW1lPSJiZGlzdF93aW5pbnN0IgorCVByb2plY3RHVUlEPSJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSIKKwlSb290TmFtZXNwYWNlPSJ3aW5pbnN0IgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSIKKwkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kXHdpbmluc3QudGxiIgorCQkJCUhlYWRlckZpbGVOYW1lPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMSIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGU7Li5cLi5cTW9kdWxlc1x6bGliIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19ERVBSRUNBVEU7X0NSVF9OT05TVERDX05PX0RFUFJFQ0FURSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXFBDXGJkaXN0X3dpbmluc3Q7Li5cLi5cSW5jbHVkZSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJjb21jdGwzMi5saWIgaW1hZ2VobHAubGliIgorCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LTkuMC5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSIKKwkJCQlEYXRhRXhlY3V0aW9uUHJldmVudGlvbj0iMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlPdXRwdXREaXJlY3Rvcnk9IiQoUGxhdGZvcm1OYW1lKVwkKENvbmZpZ3VyYXRpb25OYW1lKSIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChQbGF0Zm9ybU5hbWUpXCQoQ29uZmlndXJhdGlvbk5hbWUpIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZFx3aW5pbnN0LnRsYiIKKwkJCQlIZWFkZXJGaWxlTmFtZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjEiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdDsuLlwuLlxJbmNsdWRlOy4uXC4uXE1vZHVsZXNcemxpYiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NSVF9TRUNVUkVfTk9fREVQUkVDQVRFO19DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMCIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxQQ1xiZGlzdF93aW5pbnN0Oy4uXC4uXEluY2x1ZGUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iY29tY3RsMzIubGliIGltYWdlaGxwLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQuZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmRcd2luaW5zdC05LjAtYW1kNjQucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlSYW5kb21pemVkQmFzZUFkZHJlc3M9IjEiCisJCQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxleHRyYWN0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcaW5zdGFsbC5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWx0ZXIKKwkJCQlOYW1lPSJ6bGliIgorCQkJCT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcY3JjMzIuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mbGF0ZS5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZnRyZWVzLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCTwvRmlsdGVyPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXGJkaXN0X3dpbmluc3RcYXJjaGl2ZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcYmRpc3Rfd2luaW5zdFxpbnN0YWxsLnJjIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xiZGlzdF93aW5pbnN0XFB5dGhvblBvd2VyZWQuYm1wIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9idWlsZC5iYXQgYi9QQy9WUzkuMC9idWlsZC5iYXQKaW5kZXggMGZlZDUxNy4uMDcyOWVjNyAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvYnVpbGQuYmF0CisrKyBiL1BDL1ZTOS4wL2J1aWxkLmJhdApAQCAtMSwxMDcgKzEsMTA4IEBACi1AZWNobyBvZmYNCi1yZW0gQSBiYXRjaCBwcm9ncmFtIHRvIGJ1aWxkIG9yIHJlYnVpbGQgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24sDQotcmVtIGp1c3QgZm9yIGNvbnZlbmllbmNlLg0KLQ0KLXJlbSBBcmd1bWVudHM6DQotcmVtICAtYyAgU2V0IHRoZSBjb25maWd1cmF0aW9uIChkZWZhdWx0OiBSZWxlYXNlKQ0KLXJlbSAgLXAgIFNldCB0aGUgcGxhdGZvcm0gKHg2NCBvciBXaW4zMiwgZGVmYXVsdDogV2luMzIpDQotcmVtICAtciAgVGFyZ2V0IFJlYnVpbGQgaW5zdGVhZCBvZiBCdWlsZA0KLXJlbSAgLXQgIFNldCB0aGUgdGFyZ2V0IG1hbnVhbGx5IChCdWlsZCwgUmVidWlsZCwgb3IgQ2xlYW4pDQotcmVtICAtZCAgU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERlYnVnDQotcmVtICAtZSAgUHVsbCBpbiBleHRlcm5hbCBsaWJyYXJpZXMgdXNpbmcgZ2V0X2V4dGVybmFscy5iYXQNCi1yZW0gIC1rICBBdHRlbXB0IHRvIGtpbGwgYW55IHJ1bm5pbmcgUHl0aG9ucyBiZWZvcmUgYnVpbGRpbmcNCi0NCi1zZXRsb2NhbA0KLXNldCBwbGF0Zj1XaW4zMg0KLXNldCB2c19wbGF0Zj14ODYNCi1zZXQgY29uZj1SZWxlYXNlDQotc2V0IHRhcmdldD0NCi1zZXQgZGlyPSV+ZHAwDQotc2V0IGtpbGw9DQotc2V0IGJ1aWxkX3RraW50ZXI9DQotDQotOkNoZWNrT3B0cw0KLWlmICclMSc9PSctYycgKHNldCBjb25mPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICclMSc9PSctcCcgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLXInIChzZXQgdGFyZ2V0PS9yZWJ1aWxkKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLXQnICgNCi0gICAgaWYgJyUyJz09J0NsZWFuJyAoc2V0IHRhcmdldD0vY2xlYW4pICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotICAgIGlmICclMic9PSdSZWJ1aWxkJyAoc2V0IHRhcmdldD0vcmVidWlsZCkgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi0gICAgaWYgJyUyJz09J0J1aWxkJyAoc2V0IHRhcmdldD0pICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotICAgIGVjaG8uVW5rbm93biB0YXJnZXQ6ICUyICYgZ290byA6ZW9mDQotKQ0KLWlmICclMSc9PSctZCcgKHNldCBjb25mPURlYnVnKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAnJTEnPT0nLWUnIGNhbGwgIiVkaXIlLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgJiAoc2V0IGJ1aWxkX3RraW50ZXI9dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgJyUxJz09Jy1rJyAoc2V0IGtpbGw9dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotDQotaWYgJyVjb25mJSc9PSdEZWJ1ZycgKHNldCBkYmdfZXh0PV9kKSBlbHNlIChzZXQgZGJnX2V4dD0pDQotaWYgJyVwbGF0ZiUnPT0neDY0JyAoDQotICAgIHNldCB2c19wbGF0Zj14ODZfYW1kNjQNCi0gICAgc2V0IGJ1aWxkZGlyPSVkaXIlYW1kNjRcDQotKSBlbHNlICgNCi0gICAgc2V0IGJ1aWxkZGlyPSVkaXIlDQotKQ0KLXJlbSBDYW4ndCB1c2UgYnVpbGRkaXIgdW50aWwgd2UncmUgaW4gYSBuZXcgY29tbWFuZC4uLg0KLWlmICclcGxhdGYlJz09J3g2NCcgKA0KLSAgICByZW0gTmVlZGVkIGZvciBidWxpZGluZyBPcGVuU1NMDQotICAgIHNldCBIT1NUX1BZVEhPTj0lYnVpbGRkaXIlcHl0aG9uJWRiZ19leHQlLmV4ZQ0KLSkNCi0NCi1yZW0gU2V0dXAgdGhlIGVudmlyb25tZW50DQotY2FsbCAiJWRpciVlbnYuYmF0IiAldnNfcGxhdGYlDQotDQotaWYgJyVraWxsJSc9PSd0cnVlJyAoDQotICAgIHZjYnVpbGQgIiVkaXIla2lsbF9weXRob24udmNwcm9qIiAiJWNvbmYlfCVwbGF0ZiUiICYmICIlYnVpbGRkaXIla2lsbF9weXRob24lZGJnX2V4dCUuZXhlIg0KLSkNCi0NCi1zZXQgZXh0ZXJuYWxzX2Rpcj0lZGlyJS4uXC4uXGV4dGVybmFscw0KLWlmICclYnVpbGRfdGtpbnRlciUnPT0ndHJ1ZScgKA0KLSAgICBpZiAnJXBsYXRmJSc9PSd4NjQnICgNCi0gICAgICAgIHNldCB0Y2x0a2Rpcj0lZXh0ZXJuYWxzX2RpciVcdGNsdGs2NA0KLSAgICAgICAgc2V0IG1hY2hpbmU9QU1ENjQNCi0gICAgKSBlbHNlICgNCi0gICAgICAgIHNldCB0Y2x0a2Rpcj0lZXh0ZXJuYWxzX2RpciVcdGNsdGsNCi0gICAgICAgIHNldCBtYWNoaW5lPUlYODYNCi0gICAgKQ0KLSAgICBpZiAnJWNvbmYlJz09J0RlYnVnJyAoDQotICAgICAgICBzZXQgdGNsX2RiZ19leHQ9Zw0KLSAgICAgICAgc2V0IGRlYnVnX2ZsYWc9MQ0KLSAgICApIGVsc2UgKA0KLSAgICAgICAgc2V0IHRjbF9kYmdfZXh0PQ0KLSAgICAgICAgc2V0IGRlYnVnX2ZsYWc9MA0KLSAgICApDQotICAgIHNldCB0Y2xkaXI9JWV4dGVybmFsc19kaXIlXHRjbC04LjUuMTUuMA0KLSAgICBzZXQgdGtkaXI9JWV4dGVybmFsc19kaXIlXHRrLTguNS4xNS4wDQotICAgIHNldCB0aXhkaXI9JWV4dGVybmFsc19kaXIlXHRpeC04LjQuMy41DQotKQ0KLWlmICclYnVpbGRfdGtpbnRlciUnPT0ndHJ1ZScgKA0KLSAgICBpZiBub3QgZXhpc3QgIiV0Y2x0a2RpciVcYmluXHRjbDg1JXRjbF9kYmdfZXh0JS5kbGwiICgNCi0gICAgICAgIEByZW0gYWxsIGFuZCBpbnN0YWxsIG5lZWQgdG8gYmUgc2VwYXJhdGUgaW52b2NhdGlvbnMsIG90aGVyd2lzZSBubWFrZWhscCBpcyBub3QgZm91bmQgb24gaW5zdGFsbA0KLSAgICAgICAgcHVzaGQgIiV0Y2xkaXIlXHdpbiINCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIERFQlVHPSVkZWJ1Z19mbGFnJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBjbGVhbiBhbGwNCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIERFQlVHPSVkZWJ1Z19mbGFnJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBpbnN0YWxsDQotICAgICAgICBwb3BkDQotICAgICkNCi0NCi0gICAgaWYgbm90IGV4aXN0ICIldGNsdGtkaXIlXGJpblx0azg1JXRjbF9kYmdfZXh0JS5kbGwiICgNCi0gICAgICAgIHB1c2hkICIldGtkaXIlXHdpbiINCi0gICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIERFQlVHPSVkZWJ1Z19mbGFnJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBUQ0xESVI9IiV0Y2xkaXIlIiBjbGVhbg0KLSAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgREVCVUc9JWRlYnVnX2ZsYWclIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIFRDTERJUj0iJXRjbGRpciUiIGFsbA0KLSAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgREVCVUc9JWRlYnVnX2ZsYWclIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIFRDTERJUj0iJXRjbGRpciUiIGluc3RhbGwNCi0gICAgICAgIHBvcGQNCi0gICAgKQ0KLQ0KLSAgICBpZiBub3QgZXhpc3QgIiV0Y2x0a2RpciVcbGliXHRpeDguNC4zXHRpeDg0JXRjbF9kYmdfZXh0JS5kbGwiICgNCi0gICAgICAgIHB1c2hkICIldGl4ZGlyJVx3aW4iDQotICAgICAgICBubWFrZSAtZiBweXRob24ubWFrIERFQlVHPSVkZWJ1Z19mbGFnJSBNQUNISU5FPSVtYWNoaW5lJSBUQ0xfRElSPSIldGNsZGlyJSIgVEtfRElSPSIldGtkaXIlIiBJTlNUQUxMX0RJUj0iJXRjbHRrZGlyJSIgY2xlYW4NCi0gICAgICAgIG5tYWtlIC1mIHB5dGhvbi5tYWsgREVCVUc9JWRlYnVnX2ZsYWclIE1BQ0hJTkU9JW1hY2hpbmUlIFRDTF9ESVI9IiV0Y2xkaXIlIiBUS19ESVI9IiV0a2RpciUiIElOU1RBTExfRElSPSIldGNsdGtkaXIlIiBhbGwNCi0gICAgICAgIG5tYWtlIC1mIHB5dGhvbi5tYWsgREVCVUc9JWRlYnVnX2ZsYWclIE1BQ0hJTkU9JW1hY2hpbmUlIFRDTF9ESVI9IiV0Y2xkaXIlIiBUS19ESVI9IiV0a2RpciUiIElOU1RBTExfRElSPSIldGNsdGtkaXIlIiBpbnN0YWxsDQotICAgICAgICBwb3BkDQotICAgICkNCi0pDQotDQotcmVtIENhbGwgb24gVkNCdWlsZCB0byBkbyB0aGUgd29yaywgZWNobyB0aGUgY29tbWFuZC4NCi1yZW0gUGFzc2luZyAlMS05IGlzIG5vdCB0aGUgcHJlZmVycmVkIG9wdGlvbiwgYnV0IGFyZ3VtZW50IHBhcnNpbmcgaW4NCi1yZW0gYmF0Y2ggaXMsIHNoYWxsIHdlIHNheSwgImxhY2tsdXN0ZXIiDQotZWNobyBvbg0KLXZjYnVpbGQgIiVkaXIlcGNidWlsZC5zbG4iICV0YXJnZXQlICIlY29uZiV8JXBsYXRmJSIgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCitAZWNobyBvZmYKK3JlbSBBIGJhdGNoIHByb2dyYW0gdG8gYnVpbGQgb3IgcmVidWlsZCBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiwKK3JlbSBqdXN0IGZvciBjb252ZW5pZW5jZS4KKworcmVtIEFyZ3VtZW50czoKK3JlbSAgLWMgIFNldCB0aGUgY29uZmlndXJhdGlvbiAoZGVmYXVsdDogUmVsZWFzZSkKK3JlbSAgLXAgIFNldCB0aGUgcGxhdGZvcm0gKHg2NCBvciBXaW4zMiwgZGVmYXVsdDogV2luMzIpCityZW0gIC1yICBUYXJnZXQgUmVidWlsZCBpbnN0ZWFkIG9mIEJ1aWxkCityZW0gIC10ICBTZXQgdGhlIHRhcmdldCBtYW51YWxseSAoQnVpbGQsIFJlYnVpbGQsIG9yIENsZWFuKQorcmVtICAtZCAgU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERlYnVnCityZW0gIC1lICBQdWxsIGluIGV4dGVybmFsIGxpYnJhcmllcyB1c2luZyBnZXRfZXh0ZXJuYWxzLmJhdAorcmVtICAtayAgQXR0ZW1wdCB0byBraWxsIGFueSBydW5uaW5nIFB5dGhvbnMgYmVmb3JlIGJ1aWxkaW5nCisKK3NldGxvY2FsCitzZXQgcGxhdGY9V2luMzIKK3NldCB2c19wbGF0Zj14ODYKK3NldCBjb25mPVJlbGVhc2UKK3NldCB0YXJnZXQ9CitzZXQgZGlyPSV+ZHAwCitzZXQga2lsbD0KK3NldCBidWlsZF90a2ludGVyPQorCis6Q2hlY2tPcHRzCitpZiAnJTEnPT0nLWMnIChzZXQgY29uZj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICclMSc9PSctcCcgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICclMSc9PSctcicgKHNldCB0YXJnZXQ9L3JlYnVpbGQpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgJyUxJz09Jy10JyAoCisgICAgaWYgJyUyJz09J0NsZWFuJyAoc2V0IHRhcmdldD0vY2xlYW4pICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCisgICAgaWYgJyUyJz09J1JlYnVpbGQnIChzZXQgdGFyZ2V0PS9yZWJ1aWxkKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworICAgIGlmICclMic9PSdCdWlsZCcgKHNldCB0YXJnZXQ9KSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworICAgIGVjaG8uVW5rbm93biB0YXJnZXQ6ICUyICYgZ290byA6ZW9mCispCitpZiAnJTEnPT0nLWQnIChzZXQgY29uZj1EZWJ1ZykgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAnJTEnPT0nLWUnIGNhbGwgIiVkaXIlLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgJiAoc2V0IGJ1aWxkX3RraW50ZXI9dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAnJTEnPT0nLWsnIChzZXQga2lsbD10cnVlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKKworaWYgJyVjb25mJSc9PSdEZWJ1ZycgKHNldCBkYmdfZXh0PV9kKSBlbHNlIChzZXQgZGJnX2V4dD0pCitpZiAnJXBsYXRmJSc9PSd4NjQnICgKKyAgICBzZXQgdnNfcGxhdGY9eDg2X2FtZDY0CisgICAgc2V0IGJ1aWxkZGlyPSVkaXIlYW1kNjRcCispIGVsc2UgKAorICAgIHNldCBidWlsZGRpcj0lZGlyJQorKQorcmVtIENhbid0IHVzZSBidWlsZGRpciB1bnRpbCB3ZSdyZSBpbiBhIG5ldyBjb21tYW5kLi4uCitpZiAnJXBsYXRmJSc9PSd4NjQnICgKKyAgICByZW0gTmVlZGVkIGZvciBidWxpZGluZyBPcGVuU1NMCisgICAgc2V0IEhPU1RfUFlUSE9OPSVidWlsZGRpciVweXRob24lZGJnX2V4dCUuZXhlCispCisKK3JlbSBTZXR1cCB0aGUgZW52aXJvbm1lbnQKK2NhbGwgIiVkaXIlZW52LmJhdCIgJXZzX3BsYXRmJQorCitpZiAnJWtpbGwlJz09J3RydWUnICgKKyAgICB2Y2J1aWxkICIlZGlyJWtpbGxfcHl0aG9uLnZjcHJvaiIgIiVjb25mJXwlcGxhdGYlIiAmJiAiJWJ1aWxkZGlyJWtpbGxfcHl0aG9uJWRiZ19leHQlLmV4ZSIKKykKKworc2V0IGV4dGVybmFsc19kaXI9JWRpciUuLlwuLlxleHRlcm5hbHMKK2lmICclYnVpbGRfdGtpbnRlciUnPT0ndHJ1ZScgKAorICAgIGlmICclcGxhdGYlJz09J3g2NCcgKAorICAgICAgICBzZXQgdGNsdGtkaXI9JWV4dGVybmFsc19kaXIlXHRjbHRrNjQKKyAgICAgICAgc2V0IG1hY2hpbmU9QU1ENjQKKyAgICApIGVsc2UgKAorICAgICAgICBzZXQgdGNsdGtkaXI9JWV4dGVybmFsc19kaXIlXHRjbHRrCisgICAgICAgIHNldCBtYWNoaW5lPUlYODYKKyAgICApCisgICAgaWYgJyVjb25mJSc9PSdEZWJ1ZycgKAorICAgICAgICBzZXQgdGNsX2RiZ19leHQ9ZworICAgICAgICBzZXQgZGVidWdfZmxhZz0xCisgICAgKSBlbHNlICgKKyAgICAgICAgc2V0IHRjbF9kYmdfZXh0PQorICAgICAgICBzZXQgZGVidWdfZmxhZz0wCisgICAgKQorICAgIHNldCB0Y2xkaXI9JWV4dGVybmFsc19kaXIlXHRjbC04LjUuMTkuMAorICAgIHNldCB0a2Rpcj0lZXh0ZXJuYWxzX2RpciVcdGstOC41LjE5LjAKKyAgICBzZXQgdGl4ZGlyPSVleHRlcm5hbHNfZGlyJVx0aXgtOC40LjMuNQorKQoraWYgJyVidWlsZF90a2ludGVyJSc9PSd0cnVlJyAoCisgICAgaWYgbm90IGV4aXN0ICIldGNsdGtkaXIlXGJpblx0Y2w4NSV0Y2xfZGJnX2V4dCUuZGxsIiAoCisgICAgICAgIEByZW0gY2xlYW4sIGFsbCBhbmQgaW5zdGFsbCBuZWVkIHRvIGJlIHNlcGFyYXRlIGludm9jYXRpb25zLCBvdGhlcndpc2Ugbm1ha2VobHAgaXMgbm90IGZvdW5kIG9uIGluc3RhbGwKKyAgICAgICAgcHVzaGQgIiV0Y2xkaXIlXHdpbiIKKyAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgREVCVUc9JWRlYnVnX2ZsYWclIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIGNsZWFuCisgICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIERFQlVHPSVkZWJ1Z19mbGFnJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBhbGwKKyAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgREVCVUc9JWRlYnVnX2ZsYWclIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIGluc3RhbGwKKyAgICAgICAgcG9wZAorICAgICkKKworICAgIGlmIG5vdCBleGlzdCAiJXRjbHRrZGlyJVxiaW5cdGs4NSV0Y2xfZGJnX2V4dCUuZGxsIiAoCisgICAgICAgIHB1c2hkICIldGtkaXIlXHdpbiIKKyAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgREVCVUc9JWRlYnVnX2ZsYWclIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIFRDTERJUj0iJXRjbGRpciUiIGNsZWFuCisgICAgICAgIG5tYWtlIC1mIG1ha2VmaWxlLnZjIE1BQ0hJTkU9JW1hY2hpbmUlIERFQlVHPSVkZWJ1Z19mbGFnJSBJTlNUQUxMRElSPSIldGNsdGtkaXIlIiBUQ0xESVI9IiV0Y2xkaXIlIiBhbGwKKyAgICAgICAgbm1ha2UgLWYgbWFrZWZpbGUudmMgTUFDSElORT0lbWFjaGluZSUgREVCVUc9JWRlYnVnX2ZsYWclIElOU1RBTExESVI9IiV0Y2x0a2RpciUiIFRDTERJUj0iJXRjbGRpciUiIGluc3RhbGwKKyAgICAgICAgcG9wZAorICAgICkKKworICAgIGlmIG5vdCBleGlzdCAiJXRjbHRrZGlyJVxsaWJcdGl4OC40LjNcdGl4ODQldGNsX2RiZ19leHQlLmRsbCIgKAorICAgICAgICBwdXNoZCAiJXRpeGRpciVcd2luIgorICAgICAgICBubWFrZSAtZiBweXRob24ubWFrIERFQlVHPSVkZWJ1Z19mbGFnJSBNQUNISU5FPSVtYWNoaW5lJSBUQ0xfRElSPSIldGNsZGlyJSIgVEtfRElSPSIldGtkaXIlIiBJTlNUQUxMX0RJUj0iJXRjbHRrZGlyJSIgY2xlYW4KKyAgICAgICAgbm1ha2UgLWYgcHl0aG9uLm1hayBERUJVRz0lZGVidWdfZmxhZyUgTUFDSElORT0lbWFjaGluZSUgVENMX0RJUj0iJXRjbGRpciUiIFRLX0RJUj0iJXRrZGlyJSIgSU5TVEFMTF9ESVI9IiV0Y2x0a2RpciUiIGFsbAorICAgICAgICBubWFrZSAtZiBweXRob24ubWFrIERFQlVHPSVkZWJ1Z19mbGFnJSBNQUNISU5FPSVtYWNoaW5lJSBUQ0xfRElSPSIldGNsZGlyJSIgVEtfRElSPSIldGtkaXIlIiBJTlNUQUxMX0RJUj0iJXRjbHRrZGlyJSIgaW5zdGFsbAorICAgICAgICBwb3BkCisgICAgKQorKQorCityZW0gQ2FsbCBvbiBWQ0J1aWxkIHRvIGRvIHRoZSB3b3JrLCBlY2hvIHRoZSBjb21tYW5kLgorcmVtIFBhc3NpbmcgJTEtOSBpcyBub3QgdGhlIHByZWZlcnJlZCBvcHRpb24sIGJ1dCBhcmd1bWVudCBwYXJzaW5nIGluCityZW0gYmF0Y2ggaXMsIHNoYWxsIHdlIHNheSwgImxhY2tsdXN0ZXIiCitlY2hvIG9uCit2Y2J1aWxkICIlZGlyJXBjYnVpbGQuc2xuIiAldGFyZ2V0JSAiJWNvbmYlfCVwbGF0ZiUiICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9idWlsZF9lbnYuYmF0IGIvUEMvVlM5LjAvYnVpbGRfZW52LmJhdAppbmRleCAwMTAyNGNmLi40YzY3YWUzIDEwMDY0NAotLS0gYS9QQy9WUzkuMC9idWlsZF9lbnYuYmF0CisrKyBiL1BDL1ZTOS4wL2J1aWxkX2Vudi5iYXQKQEAgLTEgKzEgQEAKLUAlY29tc3BlYyUgL2sgZW52LmJhdCAlKg0KK0AlY29tc3BlYyUgL2sgZW52LmJhdCAlKgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvYnVpbGRfcGdvLmJhdCBiL1BDL1ZTOS4wL2J1aWxkX3Bnby5iYXQKaW5kZXggZDI4YTc2Ny4uYTM3YjViZiAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvYnVpbGRfcGdvLmJhdAorKysgYi9QQy9WUzkuMC9idWlsZF9wZ28uYmF0CkBAIC0xLDQxICsxLDQxIEBACi1AZWNobyBvZmYNCi1yZW0gQSBiYXRjaCBwcm9ncmFtIHRvIGJ1aWxkIFBHTyAoUHJvZmlsZSBndWlkZWQgb3B0aW1pemF0aW9uKSBieSBmaXJzdA0KLXJlbSBidWlsZGluZyBpbnN0cnVtZW50ZWQgYmluYXJpZXMsIHRoZW4gcnVubmluZyB0aGUgdGVzdHN1aXRlLCBhbmQNCi1yZW0gZmluYWxseSBidWlsZGluZyB0aGUgb3B0aW1pemVkIGNvZGUuDQotcmVtIE5vdGUsIGFmdGVyIHRoZSBmaXJzdCBpbnN0cnVtZW50ZWQgcnVuLCBvbmUgY2FuIGp1c3Qga2VlcCBvbg0KLXJlbSBidWlsZGluZyB0aGUgUEdVcGRhdGUgY29uZmlndXJhdGlvbiB3aGlsZSBkZXZlbG9waW5nLg0KLQ0KLXNldGxvY2FsDQotc2V0IHBsYXRmPVdpbjMyDQotDQotcmVtIHVzZSB0aGUgcGVyZm9ybWFuY2UgdGVzdHN1aXRlLiAgVGhpcyBpcyBxdWljayBhbmQgc2ltcGxlDQotc2V0IGpvYjE9Li5cLi5cdG9vbHNccHliZW5jaFxweWJlbmNoLnB5IC1uIDEgLUMgMSAtLXdpdGgtZ2MNCi1zZXQgcGF0aDE9Li5cLi5cdG9vbHNccHliZW5jaA0KLQ0KLXJlbSBvciB0aGUgd2hvbGUgdGVzdHN1aXRlIGZvciBtb3JlIHRob3JvdWdoIHRlc3RpbmcNCi1zZXQgam9iMj0uLlwuLlxsaWJcdGVzdFxyZWdydGVzdC5weQ0KLXNldCBwYXRoMj0uLlwuLlxsaWINCi0NCi1zZXQgam9iPSVqb2IxJQ0KLXNldCBjbHJwYXRoPSVwYXRoMSUNCi0NCi06Q2hlY2tPcHRzDQotaWYgIiUxIj09Ii1wIiAoc2V0IHBsYXRmPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICIlMSI9PSItMiIgKHNldCBqb2I9JWpvYjIlKSAmIChzZXQgY2xycGF0aD0lcGF0aDIlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi0NCi1zZXQgUEdJPSVwbGF0ZiUtcGdpDQotc2V0IFBHTz0lcGxhdGYlLXBnbw0KLQ0KLUBlY2hvIG9uDQotcmVtIGJ1aWxkIHRoZSBpbnN0cnVtZW50ZWQgdmVyc2lvbg0KLWNhbGwgYnVpbGQgLXAgJXBsYXRmJSAtYyBQR0luc3RydW1lbnQNCi0NCi1yZW0gcmVtb3ZlIC5weWMgZmlsZXMsIC5wZ2MgZmlsZXMgYW5kIGV4ZWN1dGUgdGhlIGpvYg0KLSVQR0klXHB5dGhvbi5leGUgcm1weWMucHkgJWNscnBhdGglDQotZGVsICVQR0klXCoucGdjDQotJVBHSSVccHl0aG9uLmV4ZSAlam9iJQ0KLQ0KLXJlbSBmaW5hbGx5IGJ1aWxkIHRoZSBvcHRpbWl6ZWQgdmVyc2lvbg0KLWlmIGV4aXN0ICVQR08lIGRlbCAvcyAvcSAlUEdPJQ0KLWNhbGwgYnVpbGQgLXAgJXBsYXRmJSAtYyBQR1VwZGF0ZQ0KLQ0KK0BlY2hvIG9mZgorcmVtIEEgYmF0Y2ggcHJvZ3JhbSB0byBidWlsZCBQR08gKFByb2ZpbGUgZ3VpZGVkIG9wdGltaXphdGlvbikgYnkgZmlyc3QKK3JlbSBidWlsZGluZyBpbnN0cnVtZW50ZWQgYmluYXJpZXMsIHRoZW4gcnVubmluZyB0aGUgdGVzdHN1aXRlLCBhbmQKK3JlbSBmaW5hbGx5IGJ1aWxkaW5nIHRoZSBvcHRpbWl6ZWQgY29kZS4KK3JlbSBOb3RlLCBhZnRlciB0aGUgZmlyc3QgaW5zdHJ1bWVudGVkIHJ1biwgb25lIGNhbiBqdXN0IGtlZXAgb24KK3JlbSBidWlsZGluZyB0aGUgUEdVcGRhdGUgY29uZmlndXJhdGlvbiB3aGlsZSBkZXZlbG9waW5nLgorCitzZXRsb2NhbAorc2V0IHBsYXRmPVdpbjMyCisKK3JlbSB1c2UgdGhlIHBlcmZvcm1hbmNlIHRlc3RzdWl0ZS4gIFRoaXMgaXMgcXVpY2sgYW5kIHNpbXBsZQorc2V0IGpvYjE9Li5cLi5cdG9vbHNccHliZW5jaFxweWJlbmNoLnB5IC1uIDEgLUMgMSAtLXdpdGgtZ2MKK3NldCBwYXRoMT0uLlwuLlx0b29sc1xweWJlbmNoCisKK3JlbSBvciB0aGUgd2hvbGUgdGVzdHN1aXRlIGZvciBtb3JlIHRob3JvdWdoIHRlc3RpbmcKK3NldCBqb2IyPS4uXC4uXGxpYlx0ZXN0XHJlZ3J0ZXN0LnB5CitzZXQgcGF0aDI9Li5cLi5cbGliCisKK3NldCBqb2I9JWpvYjElCitzZXQgY2xycGF0aD0lcGF0aDElCisKKzpDaGVja09wdHMKK2lmICIlMSI9PSItcCIgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlMSI9PSItMiIgKHNldCBqb2I9JWpvYjIlKSAmIChzZXQgY2xycGF0aD0lcGF0aDIlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKKworc2V0IFBHST0lcGxhdGYlLXBnaQorc2V0IFBHTz0lcGxhdGYlLXBnbworCitAZWNobyBvbgorcmVtIGJ1aWxkIHRoZSBpbnN0cnVtZW50ZWQgdmVyc2lvbgorY2FsbCBidWlsZCAtcCAlcGxhdGYlIC1jIFBHSW5zdHJ1bWVudAorCityZW0gcmVtb3ZlIC5weWMgZmlsZXMsIC5wZ2MgZmlsZXMgYW5kIGV4ZWN1dGUgdGhlIGpvYgorJVBHSSVccHl0aG9uLmV4ZSBybXB5Yy5weSAlY2xycGF0aCUKK2RlbCAlUEdJJVwqLnBnYworJVBHSSVccHl0aG9uLmV4ZSAlam9iJQorCityZW0gZmluYWxseSBidWlsZCB0aGUgb3B0aW1pemVkIHZlcnNpb24KK2lmIGV4aXN0ICVQR08lIGRlbCAvcyAvcSAlUEdPJQorY2FsbCBidWlsZCAtcCAlcGxhdGYlIC1jIFBHVXBkYXRlCisKZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2J1aWxkX3NzbC5iYXQgYi9QQy9WUzkuMC9idWlsZF9zc2wuYmF0CmluZGV4IGYwNmMyZDEuLjI1MzFhNWIgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL2J1aWxkX3NzbC5iYXQKKysrIGIvUEMvVlM5LjAvYnVpbGRfc3NsLmJhdApAQCAtMSwxMiArMSwxMiBAQAotQGVjaG8gb2ZmDQotaWYgbm90IGRlZmluZWQgSE9TVF9QWVRIT04gKA0KLSAgaWYgJTEgRVFVIERlYnVnICgNCi0gICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbl9kLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMjdfZC5kbGwgZXhpdCAxDQotICApIEVMU0UgKA0KLSAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uLmV4ZQ0KLSAgICBpZiBub3QgZXhpc3QgcHl0aG9uMjcuZGxsIGV4aXQgMQ0KLSAgKQ0KLSkNCi0lSE9TVF9QWVRIT04lIGJ1aWxkX3NzbC5weSAlMSAlMiAlMw0KLQ0KK0BlY2hvIG9mZgoraWYgbm90IGRlZmluZWQgSE9TVF9QWVRIT04gKAorICBpZiAlMSBFUVUgRGVidWcgKAorICAgIHNldCBIT1NUX1BZVEhPTj1weXRob25fZC5leGUKKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMjdfZC5kbGwgZXhpdCAxCisgICkgRUxTRSAoCisgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUKKyAgICBpZiBub3QgZXhpc3QgcHl0aG9uMjcuZGxsIGV4aXQgMQorICApCispCislSE9TVF9QWVRIT04lIGJ1aWxkX3NzbC5weSAlMSAlMiAlMworCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9idWlsZF9zc2wucHkgYi9QQy9WUzkuMC9idWlsZF9zc2wucHkKaW5kZXggNTI0YjRiYy4uZWIwYjRjOSAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvYnVpbGRfc3NsLnB5CisrKyBiL1BDL1ZTOS4wL2J1aWxkX3NzbC5weQpAQCAtMSw0ICsxLDMgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQsIHByaW50X2Z1bmN0aW9uCiAjIFNjcmlwdCBmb3IgYnVpbGRpbmcgdGhlIF9zc2wgYW5kIF9oYXNobGliIG1vZHVsZXMgZm9yIFdpbmRvd3MuCiAjIFVzZXMgUGVybCB0byBzZXR1cCB0aGUgT3BlblNTTCBlbnZpcm9ubWVudCBjb3JyZWN0bHkKICMgYW5kIGJ1aWxkIE9wZW5TU0wsIHRoZW4gaW52b2tlcyBhIHNpbXBsZSBubWFrZSBzZXNzaW9uCkBAIC0yNCwyMjEgKzIzLDIxMiBAQAogIyBweXRob24uZXhlIGJ1aWxkX3NzbC5weSBSZWxlYXNlIHg2NAogIyBweXRob24uZXhlIGJ1aWxkX3NzbC5weSBSZWxlYXNlIFdpbjMyCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLWltcG9ydCBvcywgc3lzLCByZSwgc2h1dGlsCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50LCBwcmludF9mdW5jdGlvbgoraW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKK2ltcG9ydCB0aW1lCiBpbXBvcnQgc3VicHJvY2VzcworZnJvbSBzaHV0aWwgaW1wb3J0IGNvcHkKK2Zyb20gZGlzdHV0aWxzIGltcG9ydCBsb2cKK2Zyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBmaW5kX2V4ZWN1dGFibGUKK2Zyb20gZGlzdHV0aWxzLmZpbGVfdXRpbCBpbXBvcnQgY29weV9maWxlCitmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IHBhcnNlX21ha2VmaWxlLCBleHBhbmRfbWFrZWZpbGVfdmFycwogCi0jIEZpbmQgYWxsICJmb28uZXhlIiBmaWxlcyBvbiB0aGUgUEFUSC4KLWRlZiBmaW5kX2FsbF9vbl9wYXRoKGZpbGVuYW1lLCBleHRyYXMgPSBOb25lKToKLSAgICBlbnRyaWVzID0gb3MuZW52aXJvblsiUEFUSCJdLnNwbGl0KG9zLnBhdGhzZXApCi0gICAgcmV0ID0gW10KLSAgICBmb3IgcCBpbiBlbnRyaWVzOgotICAgICAgICBmbmFtZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocCwgZmlsZW5hbWUpKQotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShmbmFtZSkgYW5kIGZuYW1lIG5vdCBpbiByZXQ6Ci0gICAgICAgICAgICByZXQuYXBwZW5kKGZuYW1lKQotICAgIGlmIGV4dHJhczoKLSAgICAgICAgZm9yIHAgaW4gZXh0cmFzOgotICAgICAgICAgICAgZm5hbWUgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHAsIGZpbGVuYW1lKSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZuYW1lKSBhbmQgZm5hbWUgbm90IGluIHJldDoKLSAgICAgICAgICAgICAgICByZXQuYXBwZW5kKGZuYW1lKQotICAgIHJldHVybiByZXQKKyMgVGhlIG1rMW1mLnBsIG91dHB1dCBmaWxlbmFtZSB0ZW1wbGF0ZQorIyAhISEgVGhpcyBtdXN0IG1hdGNoIHdoYXQgaXMgdXNlZCBpbiBwcmVwYXJlX3NzbC5weQorTUsxTUZfRk1UID0gJ21zXFxudHt9Lm1haycKIAotIyBGaW5kIGEgc3VpdGFibGUgUGVybCBpbnN0YWxsYXRpb24gZm9yIE9wZW5TU0wuCi0jIGN5Z3dpbiBwZXJsIGRvZXMgKm5vdCogd29yay4gIEFjdGl2ZVBlcmwgZG9lcy4KLSMgQmVpbmcgYSBQZXJsIGR1bW15LCB0aGUgc2ltcGxlc3Qgd2F5IEkgY2FuIGNoZWNrIGlzIGlmIHRoZSAiV2luMzIiIHBhY2thZ2UKLSMgaXMgYXZhaWxhYmxlLgotZGVmIGZpbmRfd29ya2luZ19wZXJsKHBlcmxzKToKLSAgICBmb3IgcGVybCBpbiBwZXJsczoKKyMgVGhlIGhlYWRlciBmaWxlcyBvdXRwdXQgZGlyZWN0b3J5IG5hbWUgdGVtcGxhdGUKKyMgISEhIFRoaXMgbXVzdCBtYXRjaCB3aGF0IGlzIHVzZWQgaW4gcHJlcGFyZV9zc2wucHkKK0lOQ0xVREVfRk1UID0gJ2luY2x1ZGV7fScKKworIyBGZXRjaCBhbGwgdGhlIGRpcmVjdG9yeSBkZWZpbml0aW9ucyBmcm9tIFZDIHByb3BlcnRpZXMKK2RlZiBnZXRfcHJvamVjdF9wcm9wZXJ0aWVzKHByb3BmaWxlKToKKyAgICBtYWNyb19wYXR0ZXJuID0gcic8VXNlck1hY3JvXHMrTmFtZT0iKFteIl0rPykiXHMrVmFsdWU9IihbXiJdKj8pIlxzKi8+JworICAgIHdpdGggb3Blbihwcm9wZmlsZSkgYXMgZmluOgorICAgICAgICBpdGVtcyA9IHJlLmZpbmRhbGwobWFjcm9fcGF0dGVybiwgZmluLnJlYWQoKSwgcmUuTVVMVElMSU5FKQorICAgIHByb3BzID0gZGljdChpdGVtcykKKyAgICBmb3IgbmFtZSwgdmFsdWUgaW4gaXRlbXM6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtwZXJsLCAiLWUiLCAidXNlIHdpbjMyOyJdKQotICAgICAgICBleGNlcHQgU3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHBlcmwKLSAgICBwcmludCgiQ2FuIG5vdCBmaW5kIGEgc3VpdGFibGUgUEVSTDoiKQotICAgIGlmIHBlcmxzOgotICAgICAgICBwcmludCgiIHRoZSBmb2xsb3dpbmcgcGVybCBpbnRlcnByZXRlcnMgd2VyZSBmb3VuZDoiKQotICAgICAgICBmb3IgcCBpbiBwZXJsczoKLSAgICAgICAgICAgIHByaW50KCIgIiwgcCkKLSAgICAgICAgcHJpbnQoIiBOb25lIG9mIHRoZXNlIHZlcnNpb25zIGFwcGVhciBzdWl0YWJsZSBmb3IgYnVpbGRpbmcgT3BlblNTTCIpCi0gICAgZWxzZToKLSAgICAgICAgcHJpbnQoIiBOTyBwZXJsIGludGVycHJldGVycyB3ZXJlIGZvdW5kIG9uIHRoaXMgbWFjaGluZSBhdCBhbGwhIikKLSAgICBwcmludCgiIFBsZWFzZSBpbnN0YWxsIEFjdGl2ZVBlcmwgYW5kIGVuc3VyZSBpdCBhcHBlYXJzIG9uIHlvdXIgcGF0aCIpCi0gICAgcmV0dXJuIE5vbmUKLQotIyBGZXRjaCBTU0wgZGlyZWN0b3J5IGZyb20gVkMgcHJvcGVydGllcwotZGVmIGdldF9zc2xfZGlyKCk6Ci0gICAgcHJvcGZpbGUgPSAob3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICdweXByb2plY3QudnNwcm9wcycpKQotICAgIHdpdGggb3Blbihwcm9wZmlsZSkgYXMgZjoKLSAgICAgICAgbSA9IHJlLnNlYXJjaCgnb3BlbnNzbC0oW14iXSspIicsIGYucmVhZCgpKQotICAgICAgICByZXR1cm4gIi4uXC4uXGV4dGVybmFsc1xvcGVuc3NsLSIrbS5ncm91cCgxKQorICAgICAgICAgICAgcHJvcHNbbmFtZV0gPSBleHBhbmRfbWFrZWZpbGVfdmFycyh2YWx1ZSwgcHJvcHMpCisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAjIHZhbHVlIGNvbnRhaW5zIHVuZGVmaW5lZCB2YXJpYWJsZSByZWZlcmVuY2UsIGRyb3AgaXQKKyAgICAgICAgICAgIGRlbCBwcm9wc1tuYW1lXQorICAgIHJldHVybiBwcm9wcwogCiAKLWRlZiBjcmVhdGVfbWFrZWZpbGU2NChtYWtlZmlsZSwgbTMyKToKLSAgICAiIiJDcmVhdGUgYW5kIGZpeCBtYWtlZmlsZSBmb3IgNjRiaXQKLQotICAgIFJlcGxhY2UgMzIgd2l0aCA2NGJpdCBkaXJlY3RvcmllcwotICAgICIiIgotICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShtMzIpOgotICAgICAgICByZXR1cm4KLSAgICB3aXRoIG9wZW4obTMyKSBhcyBmaW46Ci0gICAgICAgIHdpdGggb3BlbihtYWtlZmlsZSwgJ3cnKSBhcyBmb3V0OgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gZmluOgotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIj10bXAzMiIsICI9dG1wNjQiKQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIj1vdXQzMiIsICI9b3V0NjQiKQotICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoIj1pbmMzMiIsICI9aW5jNjQiKQotICAgICAgICAgICAgICAgICMgZm9yY2UgNjQgYml0IG1hY2hpbmUKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCJNS0xJQj1saWIiLCAiTUtMSUI9bGliIC9NQUNISU5FOlg2NCIpCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiTEZMQUdTPSIsICJMRkxBR1M9L01BQ0hJTkU6WDY0ICIpCi0gICAgICAgICAgICAgICAgIyBkb24ndCBsaW5rIGFnYWluc3QgdGhlIGxpYiBvbiA2NGJpdCBzeXN0ZW1zCi0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgiYnVmZmVyb3ZlcmZsb3d1LmxpYiIsICIiKQotICAgICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKLSAgICBvcy51bmxpbmsobTMyKQotCi1kZWYgZml4X21ha2VmaWxlKG1ha2VmaWxlKToKK192YXJpYWJsZV9yeCA9IHJlLmNvbXBpbGUociIoW2EtekEtWl1bYS16QS1aMC05X10rKVxzKj1ccyooLiopIikKK2RlZiBmaXhfbWFrZWZpbGUobWFrZWZpbGUsIHBsYXRmb3JtX21ha2VmaWxlLCBzdWZmaXgpOgogICAgICIiIkZpeCBzb21lIHN0dWZmIGluIGFsbCBtYWtlZmlsZXMKICAgICAiIiIKLSAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFrZWZpbGUpOgotICAgICAgICByZXR1cm4KLSAgICBmaW4gPSBvcGVuKG1ha2VmaWxlKQotICAgIHdpdGggb3BlbihtYWtlZmlsZSkgYXMgZmluOgotICAgICAgICBsaW5lcyA9IGZpbi5yZWFkbGluZXMoKQotICAgIHdpdGggb3BlbihtYWtlZmlsZSwgJ3cnKSBhcyBmb3V0OgotICAgICAgICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiUEVSTD0iKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJDUD0iKToKLSAgICAgICAgICAgICAgICBsaW5lID0gIkNQPWNvcHlcbiIKLSAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgiTUtESVI9Iik6Ci0gICAgICAgICAgICAgICAgbGluZSA9ICJNS0RJUj1ta2RpclxuIgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJDRkxBRz0iKToKLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgICAgICAgICAgICAgZm9yIGFsZ28gaW4gKCJSQzUiLCAiTURDMiIsICJJREVBIik6Ci0gICAgICAgICAgICAgICAgICAgIG5vYWxnbyA9ICIgLURPUEVOU1NMX05PXyVzIiAlIGFsZ28KLSAgICAgICAgICAgICAgICAgICAgaWYgbm9hbGdvIG5vdCBpbiBsaW5lOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUgKyBub2FsZ28KLSAgICAgICAgICAgICAgICBsaW5lID0gbGluZSArICdcbicKKyAgICBzdWJzID0geworICAgICAgICAnUEVSTCc6ICdyZW0nLCAgIyBqdXN0IGluIGNhc2UKKyAgICAgICAgJ0NQJzogJ2NvcHknLAorICAgICAgICAnTUtESVInOiAnbWtkaXInLAorICAgICAgICAnT1VUX0QnOiAnb3V0JyArIHN1ZmZpeCwKKyAgICAgICAgJ1RNUF9EJzogJ3RtcCcgKyBzdWZmaXgsCisgICAgICAgICdJTkNfRCc6IElOQ0xVREVfRk1ULmZvcm1hdChzdWZmaXgpLAorICAgICAgICAnSU5DT19EJzogJyQoSU5DX0QpXFxvcGVuc3NsJywKKyAgICAgICAgfQorICAgIHdpdGggb3BlbihwbGF0Zm9ybV9tYWtlZmlsZSkgYXMgZmluLCBvcGVuKG1ha2VmaWxlLCAndycpIGFzIGZvdXQ6CisgICAgICAgIGZvciBsaW5lIGluIGZpbjoKKyAgICAgICAgICAgIG0gPSBfdmFyaWFibGVfcngubWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgbmFtZSA9IG0uZ3JvdXAoMSkKKyAgICAgICAgICAgICAgICBpZiBuYW1lIGluIHN1YnM6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgPSAnJXM9JXNcbicgJSAobmFtZSwgc3Vic1tuYW1lXSkKICAgICAgICAgICAgIGZvdXQud3JpdGUobGluZSkKIAotZGVmIHJ1bl9jb25maWd1cmUoY29uZmlndXJlLCBkb19zY3JpcHQpOgotICAgIHByaW50KCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSsiIG5vLWlkZWEgbm8tbWRjMiIpCi0gICAgb3Muc3lzdGVtKCJwZXJsIENvbmZpZ3VyZSAiK2NvbmZpZ3VyZSsiIG5vLWlkZWEgbm8tbWRjMiIpCi0gICAgcHJpbnQoZG9fc2NyaXB0KQotICAgIG9zLnN5c3RlbShkb19zY3JpcHQpCisKK19jb3B5X3J4ID0gcmUuY29tcGlsZShyJ1x0XCRcKFBFUkxcKSAnCisgICAgICAgICAgICAgICAgICAgICAgcidcJFwoU1JDX0RcKVxcdXRpbFxcY29weS1pZi1kaWZmZXJlbnQucGwgJworICAgICAgICAgICAgICAgICAgICAgIHInIihbXiJdKykiXHMrIihbXiJdKykiJykKK2RlZiBjb3B5X2ZpbGVzKG1ha2VmaWxlLCBtYWtldmFycyk6CisgICAgIyBDcmVhdGUgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzIChzZWUgJ2luaXQnIHJ1bGUgaW4gbnQuZGxsKQorICAgIGZvciB2YXJuYW1lIGluICgnVE1QX0QnLCAnTElCX0QnLCAnSU5DX0QnLCAnSU5DT19EJyk6CisgICAgICAgIGRpcm5hbWUgPSBtYWtldmFyc1t2YXJuYW1lXQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkaXJuYW1lKToKKyAgICAgICAgICAgIG9zLm1rZGlyKGRpcm5hbWUpCisgICAgIyBQcm9jZXNzIHRoZSBqdXN0IGxvY2FsIGxpYnJhcnkgaGVhZGVycyAoSEVBREVSKSBhcyBpbnN0YWxsZWQgaGVhZGVycworICAgICMgKEVYSEVBREVSKSBhcmUgaGFuZGxlZCBieSBwcmVwYXJlX3NzbC5weSAoc2VlICdoZWFkZXJzJyBydWxlIGluIG50LmRsbCkKKyAgICBoZWFkZXJzID0gc2V0KG1ha2V2YXJzWydIRUFERVInXS5zcGxpdCgpKQorICAgIHdpdGggb3BlbihtYWtlZmlsZSkgYXMgZmluOgorICAgICAgICBmb3IgbGluZSBpbiBmaW46CisgICAgICAgICAgICBtID0gX2NvcHlfcngubWF0Y2gobGluZSkKKyAgICAgICAgICAgIGlmIG06CisgICAgICAgICAgICAgICAgc3JjLCBkc3QgPSBtLmdyb3VwcygpCisgICAgICAgICAgICAgICAgc3JjID0gZXhwYW5kX21ha2VmaWxlX3ZhcnMoc3JjLCBtYWtldmFycykKKyAgICAgICAgICAgICAgICBkc3QgPSBleHBhbmRfbWFrZWZpbGVfdmFycyhkc3QsIG1ha2V2YXJzKQorICAgICAgICAgICAgICAgIGlmIGRzdCBpbiBoZWFkZXJzOgorICAgICAgICAgICAgICAgICAgICBjb3B5X2ZpbGUoc3JjLCBkc3QsIHByZXNlcnZlX3RpbWVzPUZhbHNlLCB1cGRhdGU9VHJ1ZSkKKworCisjIFVwZGF0ZSBidWlsZGluZi5oIGZvciB0aGUgYnVpbGQgcGxhdGZvcm0uCitkZWYgZml4X2J1aWxkaW5mKG1ha2V2YXJzKToKKyAgICBwbGF0Zm9ybV9jcHBfc3ltYm9sID0gJ01LMU1GX1BMQVRGT1JNXycKKyAgICBwbGF0Zm9ybV9jcHBfc3ltYm9sICs9IG1ha2V2YXJzWydQTEFURk9STSddLnJlcGxhY2UoJy0nLCAnXycpCisgICAgZm4gPSBleHBhbmRfbWFrZWZpbGVfdmFycygnJChJTkNMX0QpXFxidWlsZGluZi5oJywgbWFrZXZhcnMpCisgICAgd2l0aCBvcGVuKGZuLCAndycpIGFzIGY6CisgICAgICAgICMgc2FuaXR5IGNoZWNrCisgICAgICAgIGYud3JpdGUoKCcjaWZuZGVmIHt9XG4nCisgICAgICAgICAgICAgICAgICcgICNlcnJvciAiV2luZG93cyBidWlsZCAoUExBVEZPUk09e1BMQVRGT1JNfSkgb25seSJcbicKKyAgICAgICAgICAgICAgICAgJyNlbmRpZlxuJykuZm9ybWF0KHBsYXRmb3JtX2NwcF9zeW1ib2wsICoqbWFrZXZhcnMpKQorICAgICAgICBidWlsZGluZiA9ICgKKyAgICAgICAgICAgICcjZGVmaW5lIENGTEFHUyAiY29tcGlsZXI6IGNsIHtDRkxBR30iXG4nCisgICAgICAgICAgICAnI2RlZmluZSBQTEFURk9STSAie1BMQVRGT1JNfSJcbicKKyAgICAgICAgICAgICcjZGVmaW5lIERBVEUgInt9IlxuJworICAgICAgICAgICAgKS5mb3JtYXQodGltZS5hc2N0aW1lKHRpbWUuZ210aW1lKCkpLAorICAgICAgICAgICAgICAgICAgICAgKiptYWtldmFycykKKyAgICAgICAgZi53cml0ZShidWlsZGluZikKKyAgICBwcmludCgnVXBkYXRpbmcgYnVpbGRpbmY6JykKKyAgICBwcmludChidWlsZGluZikKKyAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKKwogCiBkZWYgbWFpbigpOgotICAgIGJ1aWxkX2FsbCA9ICItYSIgaW4gc3lzLmFyZ3YKLSAgICBpZiBzeXMuYXJndlsxXSA9PSAiUmVsZWFzZSI6Ci0gICAgICAgIGRlYnVnID0gRmFsc2UKLSAgICBlbGlmIHN5cy5hcmd2WzFdID09ICJEZWJ1ZyI6Ci0gICAgICAgIGRlYnVnID0gVHJ1ZQotICAgIGVsc2U6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3Ioc3RyKHN5cy5hcmd2KSkKKyAgICBpZiBzeXMuYXJndlsxXSA9PSAiRGVidWciOgorICAgICAgICBwcmludCgiT3BlblNTTCBkZWJ1ZyBidWlsZHMgYXJlbid0IHN1cHBvcnRlZC4iKQorICAgIGVsaWYgc3lzLmFyZ3ZbMV0gIT0gIlJlbGVhc2UiOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbnJlY29nbml6ZWQgY29uZmlndXJhdGlvbjogJXMnICUgc3lzLmFyZ3ZbMV0pCiAKICAgICBpZiBzeXMuYXJndlsyXSA9PSAiV2luMzIiOgotICAgICAgICBhcmNoID0gIng4NiIKLSAgICAgICAgY29uZmlndXJlID0gIlZDLVdJTjMyIgotICAgICAgICBkb19zY3JpcHQgPSAibXNcXGRvX25hc20iCi0gICAgICAgIG1ha2VmaWxlPSJtc1xcbnQubWFrIgotICAgICAgICBtMzIgPSBtYWtlZmlsZQorICAgICAgICBwbGF0Zm9ybSA9ICJWQy1XSU4zMiIKKyAgICAgICAgc3VmZml4ID0gJzMyJwogICAgIGVsaWYgc3lzLmFyZ3ZbMl0gPT0gIng2NCI6Ci0gICAgICAgIGFyY2g9ImFtZDY0IgotICAgICAgICBjb25maWd1cmUgPSAiVkMtV0lONjRBIgotICAgICAgICBkb19zY3JpcHQgPSAibXNcXGRvX3dpbjY0YSIKLSAgICAgICAgbWFrZWZpbGUgPSAibXNcXG50NjQubWFrIgotICAgICAgICBtMzIgPSBtYWtlZmlsZS5yZXBsYWNlKCc2NCcsICcnKQotICAgICAgICAjb3MuZW52aXJvblsiVlNFWFRDT01QX1VTRUNMIl0gPSAiTVNfT1BURVJPTiIKKyAgICAgICAgcGxhdGZvcm0gPSAiVkMtV0lONjRBIgorICAgICAgICBzdWZmaXggPSAnNjQnCiAgICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihzdHIoc3lzLmFyZ3YpKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbnJlY29nbml6ZWQgcGxhdGZvcm06ICVzJyAlIHN5cy5hcmd2WzJdKQogCi0gICAgbWFrZV9mbGFncyA9ICIiCi0gICAgaWYgYnVpbGRfYWxsOgotICAgICAgICBtYWtlX2ZsYWdzID0gIi1hIgotICAgICMgcGVybCBzaG91bGQgYmUgb24gdGhlIHBhdGgsIGJ1dCB3ZSBhbHNvIGxvb2sgaW4gIlxwZXJsIiBhbmQgImM6XFxwZXJsIgotICAgICMgYXMgIndlbGwga25vd24iIGxvY2F0aW9ucwotICAgIHBlcmxzID0gZmluZF9hbGxfb25fcGF0aCgicGVybC5leGUiLCBbciJccGVybFxiaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJDOlxwZXJsXGJpbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIlxwZXJsNjRcYmluIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiQzpccGVybDY0XGJpbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCi0gICAgcGVybCA9IGZpbmRfd29ya2luZ19wZXJsKHBlcmxzKQotICAgIGlmIHBlcmw6Ci0gICAgICAgIHByaW50KCJGb3VuZCBhIHdvcmtpbmcgcGVybCBhdCAnJXMnIiAlIChwZXJsLCkpCi0gICAgICAgICMgU2V0IFBFUkwgZm9yIHRoZSBtYWtlZmlsZSB0byBmaW5kIGl0Ci0gICAgICAgIG9zLmVudmlyb25bIlBFUkwiXSA9IHBlcmwKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiTm8gUGVybCBpbnN0YWxsYXRpb24gd2FzIGZvdW5kLiBFeGlzdGluZyBNYWtlZmlsZXMgYXJlIHVzZWQuIikKLSAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAjIExvb2sgZm9yIFNTTCAyIGxldmVscyB1cCBmcm9tIHBjYnVpbGQgLSBpZSwgc2FtZSBwbGFjZSB6bGliIGV0YyBhbGwgbGl2ZS4KLSAgICBzc2xfZGlyID0gZ2V0X3NzbF9kaXIoKQotICAgIGlmIHNzbF9kaXIgaXMgTm9uZToKKyAgICAjIEhhdmUgdGhlIGRpc3R1dGlscyBmdW5jdGlvbnMgZGlzcGxheSBpbmZvcm1hdGlvbiBvdXRwdXQKKyAgICBsb2cuc2V0X3ZlcmJvc2l0eSgxKQorCisgICAgIyBVc2UgdGhlIHNhbWUgcHJvcGVydGllcyB0aGF0IGFyZSB1c2VkIGluIHRoZSBWUyBwcm9qZWN0cworICAgIHNvbHV0aW9uX2RpciA9IG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykKKyAgICBwcm9wZmlsZSA9IG9zLnBhdGguam9pbihzb2x1dGlvbl9kaXIsICdweXByb2plY3QudnNwcm9wcycpCisgICAgcHJvcHMgPSBnZXRfcHJvamVjdF9wcm9wZXJ0aWVzKHByb3BmaWxlKQorCisgICAgIyBFbnN1cmUgd2UgaGF2ZSB0aGUgbmVjZXNzYXJ5IGV4dGVybmFsIGRlcGVuZWRlbmNpZXMKKyAgICBzc2xfZGlyID0gb3MucGF0aC5qb2luKHNvbHV0aW9uX2RpciwgcHJvcHNbJ29wZW5zc2xEaXInXSkKKyAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcihzc2xfZGlyKToKKyAgICAgICAgcHJpbnQoIkNvdWxkIG5vdCBmaW5kIHRoZSBPcGVuU1NMIHNvdXJjZXMsIHRyeSBydW5uaW5nICIKKyAgICAgICAgICAgICAgIididWlsZC5iYXQgLWUnIikKKyAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICMgRW5zdXJlIHRoZSBleGVjdXRhYmxlcyB1c2VkIGhlcmVpbiBhcmUgYXZhaWxhYmxlLgorICAgIGlmIG5vdCBmaW5kX2V4ZWN1dGFibGUoJ25tYWtlLmV4ZScpOgorICAgICAgICBwcmludCgnQ291bGQgbm90IGZpbmQgbm1ha2UuZXhlLCB0cnkgcnVubmluZyBlbnYuYmF0JykKICAgICAgICAgc3lzLmV4aXQoMSkKIAogICAgICMgYWRkIG91ciBjb3B5IG9mIE5BU00gdG8gUEFUSC4gIEl0IHdpbGwgYmUgb24gdGhlIHNhbWUgbGV2ZWwgYXMgb3BlbnNzbAotICAgIGZvciBkaXIgaW4gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oc3NsX2Rpciwgb3MucGFyZGlyKSk6CisgICAgZXh0ZXJuYWxzX2RpciA9IG9zLnBhdGguam9pbihzb2x1dGlvbl9kaXIsIHByb3BzWydleHRlcm5hbHNEaXInXSkKKyAgICBmb3IgZGlyIGluIG9zLmxpc3RkaXIoZXh0ZXJuYWxzX2Rpcik6CiAgICAgICAgIGlmIGRpci5zdGFydHN3aXRoKCduYXNtJyk6Ci0gICAgICAgICAgICBuYXNtX2RpciA9IG9zLnBhdGguam9pbihzc2xfZGlyLCBvcy5wYXJkaXIsIGRpcikKKyAgICAgICAgICAgIG5hc21fZGlyID0gb3MucGF0aC5qb2luKGV4dGVybmFsc19kaXIsIGRpcikKICAgICAgICAgICAgIG5hc21fZGlyID0gb3MucGF0aC5hYnNwYXRoKG5hc21fZGlyKQogICAgICAgICAgICAgb2xkX3BhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KICAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9zLnBhdGhzZXAuam9pbihbbmFzbV9kaXIsIG9sZF9wYXRoXSkKICAgICAgICAgICAgIGJyZWFrCiAgICAgZWxzZToKLSAgICAgICAgcHJpbnQoJ05BU00gd2FzIG5vdCBmb3VuZCwgbWFrZSBzdXJlIGl0IGlzIG9uIFBBVEgnKQorICAgICAgICBpZiBub3QgZmluZF9leGVjdXRhYmxlKCduYXNtLmV4ZScpOgorICAgICAgICAgICAgcHJpbnQoJ0NvdWxkIG5vdCBmaW5kIG5hc20uZXhlLCBwbGVhc2UgYWRkIHRvIFBBVEgnKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKIAorICAgICMgSWYgdGhlIHNzbCBtYWtlZmlsZXMgZG8gbm90IGV4aXN0LCB3ZSBpbnZva2UgUENidWlsZC9wcmVwYXJlX3NzbC5weQorICAgICMgdG8gZ2VuZXJhdGUgdGhlbS4KKyAgICBwbGF0Zm9ybV9tYWtlZmlsZSA9IE1LMU1GX0ZNVC5mb3JtYXQoc3VmZml4KQorICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oc3NsX2RpciwgcGxhdGZvcm1fbWFrZWZpbGUpKToKKyAgICAgICAgcGNidWlsZF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGV4dGVybmFsc19kaXIpLCAnUENidWlsZCcpCisgICAgICAgIHByZXBhcmVfc3NsID0gb3MucGF0aC5qb2luKHBjYnVpbGRfZGlyLCAncHJlcGFyZV9zc2wucHknKQorICAgICAgICByYyA9IHN1YnByb2Nlc3MuY2FsbChbc3lzLmV4ZWN1dGFibGUsIHByZXBhcmVfc3NsLCBzc2xfZGlyXSkKKyAgICAgICAgaWYgcmM6CisgICAgICAgICAgICBwcmludCgnRXhlY3V0aW5nJywgcHJlcGFyZV9zc2wsICdmYWlsZWQgKGVycm9yICVkKScgJSByYykKKyAgICAgICAgICAgIHN5cy5leGl0KHJjKQogCiAgICAgb2xkX2NkID0gb3MuZ2V0Y3dkKCkKICAgICB0cnk6CiAgICAgICAgIG9zLmNoZGlyKHNzbF9kaXIpCi0gICAgICAgICMgcmVidWlsZCBtYWtlZmlsZSB3aGVuIHdlIGRvIHRoZSByb2xlIG92ZXIgZnJvbSAzMiB0byA2NCBidWlsZAotICAgICAgICBpZiBhcmNoID09ICJhbWQ2NCIgYW5kIG9zLnBhdGguaXNmaWxlKG0zMikgYW5kIG5vdCBvcy5wYXRoLmlzZmlsZShtYWtlZmlsZSk6Ci0gICAgICAgICAgICBvcy51bmxpbmsobTMyKQogCi0gICAgICAgICMgSWYgdGhlIHNzbCBtYWtlZmlsZXMgZG8gbm90IGV4aXN0LCB3ZSBpbnZva2UgUGVybCB0byBnZW5lcmF0ZSB0aGVtLgotICAgICAgICAjIER1ZSB0byBhIGJ1ZyBpbiB0aGlzIHNjcmlwdCwgdGhlIG1ha2VmaWxlIHNvbWV0aW1lcyBlbmRlZCB1cCBlbXB0eQotICAgICAgICAjIEZvcmNlIGEgcmVnZW5lcmF0aW9uIGlmIGl0IGlzLgotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUobWFrZWZpbGUpIG9yIG9zLnBhdGguZ2V0c2l6ZShtYWtlZmlsZSk9PTA6Ci0gICAgICAgICAgICBpZiBwZXJsIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIlBlcmwgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIG1ha2VmaWxlcyEiKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCisgICAgICAgICMgR2V0IHRoZSB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCBtYWtlZmlsZSwgaWYgaXQgZXhpc3RzLgorICAgICAgICBtYWtlZmlsZSA9IE1LMU1GX0ZNVC5mb3JtYXQoJycpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1ha2V2YXJzID0gcGFyc2VfbWFrZWZpbGUobWFrZWZpbGUpCisgICAgICAgIGV4Y2VwdCBFbnZpcm9ubWVudEVycm9yOgorICAgICAgICAgICAgbWFrZXZhcnMgPSB7J1BMQVRGT1JNJzogTm9uZX0KIAotICAgICAgICAgICAgcHJpbnQoIkNyZWF0aW5nIHRoZSBtYWtlZmlsZXMuLi4iKQorICAgICAgICAjIFJlYnVpbGQgdGhlIG1ha2VmaWxlIHdoZW4gYnVpbGRpbmcgZm9yIGRpZmZlcmVudCBhIHBsYXRmb3JtIHRoYW4KKyAgICAgICAgIyB0aGUgbGFzdCBydW4uCisgICAgICAgIGlmIG1ha2V2YXJzWydQTEFURk9STSddICE9IHBsYXRmb3JtOgorICAgICAgICAgICAgcHJpbnQoIlVwZGF0aW5nIHRoZSBtYWtlZmlsZS4uLiIpCiAgICAgICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKLSAgICAgICAgICAgICMgUHV0IG91ciB3b3JraW5nIFBlcmwgYXQgdGhlIGZyb250IG9mIG91ciBwYXRoCi0gICAgICAgICAgICBvcy5lbnZpcm9uWyJQQVRIIl0gPSBvcy5wYXRoLmRpcm5hbWUocGVybCkgKyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoc2VwICsgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MuZW52aXJvblsiUEFUSCJdCi0gICAgICAgICAgICBydW5fY29uZmlndXJlKGNvbmZpZ3VyZSwgZG9fc2NyaXB0KQotICAgICAgICAgICAgaWYgZGVidWc6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIk9wZW5TU0wgZGVidWcgYnVpbGRzIGFyZW4ndCBzdXBwb3J0ZWQuIikKLSAgICAgICAgICAgICNpZiBhcmNoPT0ieDg2IiBhbmQgZGVidWc6Ci0gICAgICAgICAgICAjICAgICMgdGhlIGRvX21hc20gc2NyaXB0IGluIG9wZW5zc2wgZG9lc24ndCBnZW5lcmF0ZSBhIGRlYnVnCi0gICAgICAgICAgICAjICAgICMgYnVpbGQgbWFrZWZpbGUgc28gd2UgZ2VuZXJhdGUgaXQgaGVyZToKLSAgICAgICAgICAgICMgICAgb3Muc3lzdGVtKCJwZXJsIHV0aWxcbWsxbWYucGwgZGVidWcgIitjb25maWd1cmUrIiA+IittYWtlZmlsZSkKKyAgICAgICAgICAgICMgRmlyc3RseSwgYXBwbHkgdGhlIGNoYW5nZXMgZm9yIHRoZSBwbGF0Zm9ybSBtYWtlZmlsZSBpbnRvCisgICAgICAgICAgICAjIGEgdGVtcG9yYXJ5IGZpbGUgdG8gcHJldmVudCBhbnkgZXJyb3JzIGZyb20gdGhpcyBzY3JpcHQKKyAgICAgICAgICAgICMgY2F1c2luZyBmYWxzZSBwb3NpdGl2ZXMgb24gc3Vic2VxdWVudCBydW5zLgorICAgICAgICAgICAgbmV3X21ha2VmaWxlID0gbWFrZWZpbGUgKyAnLm5ldycKKyAgICAgICAgICAgIGZpeF9tYWtlZmlsZShuZXdfbWFrZWZpbGUsIHBsYXRmb3JtX21ha2VmaWxlLCBzdWZmaXgpCisgICAgICAgICAgICBtYWtldmFycyA9IHBhcnNlX21ha2VmaWxlKG5ld19tYWtlZmlsZSkKIAotICAgICAgICAgICAgaWYgYXJjaCA9PSAiYW1kNjQiOgotICAgICAgICAgICAgICAgIGNyZWF0ZV9tYWtlZmlsZTY0KG1ha2VmaWxlLCBtMzIpCi0gICAgICAgICAgICBmaXhfbWFrZWZpbGUobWFrZWZpbGUpCi0gICAgICAgICAgICBzaHV0aWwuY29weShyImNyeXB0b1xidWlsZGluZi5oIiwgciJjcnlwdG9cYnVpbGRpbmZfJXMuaCIgJSBhcmNoKQotICAgICAgICAgICAgc2h1dGlsLmNvcHkociJjcnlwdG9cb3BlbnNzbGNvbmYuaCIsIHIiY3J5cHRvXG9wZW5zc2xjb25mXyVzLmgiICUgYXJjaCkKKyAgICAgICAgICAgICMgU2Vjb25kbHksIHBlcmZvcm0gdGhlIG1ha2UgcmVjaXBlcyB0aGF0IHVzZSBQZXJsCisgICAgICAgICAgICBjb3B5X2ZpbGVzKG5ld19tYWtlZmlsZSwgbWFrZXZhcnMpCisKKyAgICAgICAgICAgICMgU2V0IG91ciBidWlsZCBpbmZvcm1hdGlvbiBpbiBidWlsZGluZi5oLgorICAgICAgICAgICAgIyBYWFg6IFRoaXMgaXNuJ3QgbmVlZGVkIGZvciBhIHByb3Blcmx5ICJwcmVwYXJlZCIgU1NMLCBidXQKKyAgICAgICAgICAgICMgaXQgZml4ZXMgdGhlIGN1cnJlbnQgY2hlY2tlZC1pbiBleHRlcm5hbCAoYXMgb2YgMjAxNy0wNSkuCisgICAgICAgICAgICBmaXhfYnVpbGRpbmYobWFrZXZhcnMpCisKKyAgICAgICAgICAgICMgRmluYWxseSwgbW92ZSB0aGUgdGVtcG9yYXJ5IGZpbGUgdG8gaXRzIHJlYWwgZGVzdGluYXRpb24uCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYWtlZmlsZSk6CisgICAgICAgICAgICAgICAgb3MucmVtb3ZlKG1ha2VmaWxlKQorICAgICAgICAgICAgb3MucmVuYW1lKG5ld19tYWtlZmlsZSwgbWFrZWZpbGUpCiAKICAgICAgICAgIyBOb3cgcnVuIG1ha2UuCi0gICAgICAgIGlmIGFyY2ggPT0gImFtZDY0IjoKLSAgICAgICAgICAgIHJjID0gb3Muc3lzdGVtKCJuYXNtIC1mIHdpbjY0IC1ETkVBUiAtT3ggLWcgbXNcXHVwdGFibGUuYXNtIikKLSAgICAgICAgICAgIGlmIHJjOgotICAgICAgICAgICAgICAgIHByaW50KCJuYXNtIGFzc2VtYmxlciBoYXMgZmFpbGVkLiIpCi0gICAgICAgICAgICAgICAgc3lzLmV4aXQocmMpCi0KLSAgICAgICAgc2h1dGlsLmNvcHkociJjcnlwdG9cYnVpbGRpbmZfJXMuaCIgJSBhcmNoLCByImNyeXB0b1xidWlsZGluZi5oIikKLSAgICAgICAgc2h1dGlsLmNvcHkociJjcnlwdG9cb3BlbnNzbGNvbmZfJXMuaCIgJSBhcmNoLCByImNyeXB0b1xvcGVuc3NsY29uZi5oIikKLQotICAgICAgICAjbWFrZUNvbW1hbmQgPSAibm1ha2UgL25vbG9nbyBQRVJMPVwiJXNcIiAtZiBcIiVzXCIiICUocGVybCwgbWFrZWZpbGUpCi0gICAgICAgIG1ha2VDb21tYW5kID0gIm5tYWtlIC9ub2xvZ28gLWYgXCIlc1wiIiAlIG1ha2VmaWxlCisgICAgICAgIG1ha2VDb21tYW5kID0gIm5tYWtlIC9ub2xvZ28gL2YgXCIlc1wiIGxpYiIgJSBtYWtlZmlsZQogICAgICAgICBwcmludCgiRXhlY3V0aW5nIHNzbCBtYWtlZmlsZXM6IiwgbWFrZUNvbW1hbmQpCiAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogICAgICAgICByYyA9IG9zLnN5c3RlbShtYWtlQ29tbWFuZCkKICAgICAgICAgaWYgcmM6Ci0gICAgICAgICAgICBwcmludCgiRXhlY3V0aW5nICIrbWFrZWZpbGUrIiBmYWlsZWQiKQotICAgICAgICAgICAgcHJpbnQocmMpCisgICAgICAgICAgICBwcmludCgiRXhlY3V0aW5nIiwgbWFrZWZpbGUsICJmYWlsZWQgKGVycm9yICVkKSIgJSByYykKICAgICAgICAgICAgIHN5cy5leGl0KHJjKQogICAgIGZpbmFsbHk6CiAgICAgICAgIG9zLmNoZGlyKG9sZF9jZCkKZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL2J6Mi52Y3Byb2ogYi9QQy9WUzkuMC9iejIudmNwcm9qCmluZGV4IDU1OTM2NDEuLmU0NTgxYTUgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL2J6Mi52Y3Byb2oKKysrIGIvUEMvVlM5LjAvYnoyLnZjcHJvagpAQCAtMSw1ODEgKzEsNTgxIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0iYnoyIg0KLQlQcm9qZWN0R1VJRD0iezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVJvb3ROYW1lc3BhY2U9ImJ6MiINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxOTY2MTMiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xiejJtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9ImJ6aXAyIDEuMC42IEhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcYnpsaWIuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYl9wcml2YXRlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJiemlwMiAxLjAuNiBTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJsb2Nrc29ydC5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcY29tcHJlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxjcmN0YWJsZS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGRlY29tcHJlc3MuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxodWZmbWFuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilccmFuZHRhYmxlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjksMDAiCisJTmFtZT0iYnoyIgorCVByb2plY3RHVUlEPSJ7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fSIKKwlSb290TmFtZXNwYWNlPSJiejIiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJChiejJEaXIpIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtfRklMRV9PRkZTRVRfQklUUz02NCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDE3MDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIkKGJ6MkRpcikiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTcwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoYnoyRGlyKSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxNzAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xiejJtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJiemlwMiAxLjAuNiBIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxiemxpYl9wcml2YXRlLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iYnppcDIgMS4wLjYgU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxibG9ja3NvcnQuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGJ6bGliLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoYnoyRGlyKVxjb21wcmVzcy5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKGJ6MkRpcilcY3JjdGFibGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGRlY29tcHJlc3MuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXGh1ZmZtYW4uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChiejJEaXIpXHJhbmR0YWJsZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9kZWJ1Zy52c3Byb3BzIGIvUEMvVlM5LjAvZGVidWcudnNwcm9wcwppbmRleCBiYzY0M2NiLi4yYmU3Zjc0IDEwMDY0NAotLS0gYS9QQy9WUzkuMC9kZWJ1Zy52c3Byb3BzCisrKyBiL1BDL1ZTOS4wL2RlYnVnLnZzcHJvcHMKQEAgLTEsMTUgKzEsMTUgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJkZWJ1ZyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IktpbGxQeXRob25FeGUiDQotCQlWYWx1ZT0iJChPdXREaXIpXGtpbGxfcHl0aG9uX2QuZXhlIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJkZWJ1ZyIKKwk+CisJPFRvb2wKKwkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0iS2lsbFB5dGhvbkV4ZSIKKwkJVmFsdWU9IiQoT3V0RGlyKVxraWxsX3B5dGhvbl9kLmV4ZSIKKwkvPgorPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvZW52LmJhdCBiL1BDL1ZTOS4wL2Vudi5iYXQKaW5kZXggNTdmYzExNi4uNDE3NWNhNCAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvZW52LmJhdAorKysgYi9QQy9WUzkuMC9lbnYuYmF0CkBAIC0xLDQgKzEsNCBAQAotQGVjaG8gb2ZmDQotZWNobyBCdWlsZCBlbnZpcm9ubWVudHM6IHg4NiwgaWE2NCwgYW1kNjQsIHg4Nl9hbWQ2NCwgeDg2X2lhNjQNCi1lY2hvLg0KLWNhbGwgIiVWUzkwQ09NTlRPT0xTJS4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiICUqDQorQGVjaG8gb2ZmCitlY2hvIEJ1aWxkIGVudmlyb25tZW50czogeDg2LCBpYTY0LCBhbWQ2NCwgeDg2X2FtZDY0LCB4ODZfaWE2NAorZWNoby4KK2NhbGwgIiVWUzkwQ09NTlRPT0xTJS4uXC4uXFZDXHZjdmFyc2FsbC5iYXQiICUqCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9pZGxlLmJhdCBiL1BDL1ZTOS4wL2lkbGUuYmF0CmluZGV4IDVhYjE1ZjUuLmRjYjA0ODUgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL2lkbGUuYmF0CisrKyBiL1BDL1ZTOS4wL2lkbGUuYmF0CkBAIC0xLDE1ICsxLDE1IEBACi1AZWNobyBvZmYNCi1yZW0gc3RhcnQgaWRsZQ0KLXJlbSBVc2FnZTogIGlkbGUgWy1kXQ0KLXJlbSAtZCAgIFJ1biBEZWJ1ZyBidWlsZCAocHl0aG9uX2QuZXhlKS4gIEVsc2UgcmVsZWFzZSBidWlsZC4NCi0NCi1zZXRsb2NhbA0KLXNldCBleGU9cHl0aG9uDQotUEFUSCAlUEFUSCU7Li5cLi5cdGNsdGtcYmluDQotDQotaWYgIiUxIj09Ii1kIiAoc2V0IGV4ZT1weXRob25fZCkgJiBzaGlmdA0KLQ0KLXNldCBjbWQ9JWV4ZSUgLi4vTGliL2lkbGVsaWIvaWRsZS5weSAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQ0KLQ0KLWVjaG8gb24NCi0lY21kJQ0KK0BlY2hvIG9mZgorcmVtIHN0YXJ0IGlkbGUKK3JlbSBVc2FnZTogIGlkbGUgWy1kXQorcmVtIC1kICAgUnVuIERlYnVnIGJ1aWxkIChweXRob25fZC5leGUpLiAgRWxzZSByZWxlYXNlIGJ1aWxkLgorCitzZXRsb2NhbAorc2V0IGV4ZT1weXRob24KK1BBVEggJVBBVEglOy4uXC4uXHRjbHRrXGJpbgorCitpZiAiJTEiPT0iLWQiIChzZXQgZXhlPXB5dGhvbl9kKSAmIHNoaWZ0CisKK3NldCBjbWQ9JWV4ZSUgLi4vTGliL2lkbGVsaWIvaWRsZS5weSAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQorCitlY2hvIG9uCislY21kJQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAva2lsbF9weXRob24udmNwcm9qIGIvUEMvVlM5LjAva2lsbF9weXRob24udmNwcm9qCmluZGV4IGEzNDEwN2EuLjkxODcwMmQgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL2tpbGxfcHl0aG9uLnZjcHJvagorKysgYi9QQy9WUzkuMC9raWxsX3B5dGhvbi52Y3Byb2oKQEAgLTEsMjc5ICsxLDI3OSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb2plY3QNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjkuMDAiDQotCU5hbWU9ImtpbGxfcHl0aG9uIg0KLQlQcm9qZWN0R1VJRD0iezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iDQotCVJvb3ROYW1lc3BhY2U9ImtpbGxfcHl0aG9uIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii5ca2lsbF9weXRob24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOS4wMCIKKwlOYW1lPSJraWxsX3B5dGhvbiIKKwlQcm9qZWN0R1VJRD0iezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iCisJUm9vdE5hbWVzcGFjZT0ia2lsbF9weXRob24iCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZXhlIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5leGUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuXGtpbGxfcHl0aG9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLnZjcHJvaiBiL1BDL1ZTOS4wL21ha2VfYnVpbGRpbmZvLnZjcHJvagppbmRleCBjODY0NmUyLi5jNDIyMjljIDEwMDY0NAotLS0gYS9QQy9WUzkuMC9tYWtlX2J1aWxkaW5mby52Y3Byb2oKKysrIGIvUEMvVlM5LjAvbWFrZV9idWlsZGluZm8udmNwcm9qCkBAIC0xLDE2MiArMSwxNjIgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IndpbmRvd3MtMTI1MCI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJtYWtlX2J1aWxkaW5mbyINCi0JUHJvamVjdEdVSUQ9IntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9Ig0KLQlSb290TmFtZXNwYWNlPSJtYWtlX2J1aWxkaW5mbyINCi0JS2V5d29yZD0iV2luMzJQcm9qIg0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcikvbWFrZV9idWlsZGluZm8uZXhlIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKFRhcmdldERpcikkKFRhcmdldE5hbWUpLnBkYiINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJRmlsdGVyPSJjcHA7YztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCINCi0JCQlVbmlxdWVJZGVudGlmaWVyPSJ7NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuXG1ha2VfYnVpbGRpbmZvLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0id2luZG93cy0xMjUwIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjksMDAiCisJTmFtZT0ibWFrZV9idWlsZGluZm8iCisJUHJvamVjdEdVSUQ9IntDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9IgorCVJvb3ROYW1lc3BhY2U9Im1ha2VfYnVpbGRpbmZvIgorCUtleXdvcmQ9IldpbjMyUHJvaiIKKwlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiCisJPgorCTxQbGF0Zm9ybXM+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0iV2luMzIiCisJCS8+CisJCTxQbGF0Zm9ybQorCQkJTmFtZT0ieDY0IgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKS9tYWtlX2J1aWxkaW5mby5leGUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214IgorCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLlxtYWtlX2J1aWxkaW5mby5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9tYWtlX3ZlcnNpb25pbmZvLnZjcHJvaiBiL1BDL1ZTOS4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCmluZGV4IDVjM2E2YjcuLjY5MGMwNjkgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCisrKyBiL1BDL1ZTOS4wL21ha2VfdmVyc2lvbmluZm8udmNwcm9qCkBAIC0xLDMyNCArMSwzMjQgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJtYWtlX3ZlcnNpb25pbmZvIg0KLQlQcm9qZWN0R1VJRD0ie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotCVJvb3ROYW1lc3BhY2U9Im1ha2VfdmVyc2lvbmluZm8iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyINCi0JCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvLmV4ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnQuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mb19kLmV4ZSINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7Ig0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiDQotCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25udF9yY19kLmgmI3gwRDsmI3gwQTsiDQotCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKFNvbHV0aW9uRGlyKW1ha2VfdmVyc2lvbmluZm9fZC5leGUiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOSwwMCIKKwlOYW1lPSJtYWtlX3ZlcnNpb25pbmZvIgorCVByb2plY3RHVUlEPSJ7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSIKKwlSb290TmFtZXNwYWNlPSJtYWtlX3ZlcnNpb25pbmZvIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkJRGVzY3JpcHRpb249IkJ1aWxkIFBDL3B5dGhvbm50X3JjKF9kKS5oIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmMuaCYjeDBEOyYjeDBBOyIKKwkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjLmgiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIyIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0idHJ1ZSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGUiCisJCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChUYXJnZXREaXIpJChUYXJnZXROYW1lKS5wZGIiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm8uZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250LmgmI3gwRDsmI3gwQTsiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCURlc2NyaXB0aW9uPSJCdWlsZCBQQy9weXRob25udF9yYyhfZCkuaCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjLmgmI3gwRDsmI3gwQTsiCisJCQkJT3V0cHV0cz0iJChTb2x1dGlvbkRpcikuLlwuLlxQQ1xweXRob25udF9yYy5oIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoU29sdXRpb25EaXIpbWFrZV92ZXJzaW9uaW5mby5leGUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mby5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnQuaCYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJCURlc2NyaXB0aW9uPSJCdWlsZCBQQy9weXRob25udF9yYyhfZCkuaCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oJiN4MEQ7JiN4MEE7IgorCQkJCU91dHB1dHM9IiQoU29sdXRpb25EaXIpLi5cLi5cUENccHl0aG9ubnRfcmNfZC5oIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlDb21waWxlQXM9IjAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoVGFyZ2V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCQlDb21tYW5kTGluZT0iY2QgJChTb2x1dGlvbkRpcikmI3gwRDsmI3gwQTttYWtlX3ZlcnNpb25pbmZvX2QuZXhlICZndDsgLi5cLi5cUENccHl0aG9uX250X2QuaCYjeDBEOyYjeDBBOyIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCQlEZXNjcmlwdGlvbj0iQnVpbGQgUEMvcHl0aG9ubnRfcmMoX2QpLmgiCisJCQkJQ29tbWFuZExpbmU9ImNkICQoU29sdXRpb25EaXIpJiN4MEQ7JiN4MEE7bWFrZV92ZXJzaW9uaW5mb19kLmV4ZSAmZ3Q7IC4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCYjeDBEOyYjeDBBOyIKKwkJCQlPdXRwdXRzPSIkKFNvbHV0aW9uRGlyKS4uXC4uXFBDXHB5dGhvbm50X3JjX2QuaCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChTb2x1dGlvbkRpciltYWtlX3ZlcnNpb25pbmZvX2QuZXhlIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJCUNvbW1hbmRMaW5lPSJjZCAkKFNvbHV0aW9uRGlyKSYjeDBEOyYjeDBBO21ha2VfdmVyc2lvbmluZm9fZC5leGUgJmd0OyAuLlwuLlxQQ1xweXRob25fbnRfZC5oJiN4MEQ7JiN4MEE7IgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXG1ha2VfdmVyc2lvbmluZm8uYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcGNidWlsZC5zbG4gYi9QQy9WUzkuMC9wY2J1aWxkLnNsbgppbmRleCA3MjVjNmVhLi5jNWUwNzJlIDEwMDY0NAotLS0gYS9QQy9WUzkuMC9wY2J1aWxkLnNsbgorKysgYi9QQy9WUzkuMC9wY2J1aWxkLnNsbgpAQCAtMSw1NTkgKzEsNTU5IEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiAxMC4wMA0KLSMgVmlzdWFsIFN0dWRpbyAyMDA4DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjcHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0gPSB7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfdmVyc2lvbmluZm8iLCAibWFrZV92ZXJzaW9uaW5mby52Y3Byb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjcHJvaiIsICJ7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0gPSB7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfQ0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQ0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0gPSB7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbnciLCAicHl0aG9udy52Y3Byb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3OXhwb3BlbiIsICJ3OXhwb3Blbi52Y3Byb2oiLCAie0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJtYWtlX2J1aWxkaW5mbyIsICJtYWtlX2J1aWxkaW5mby52Y3Byb2oiLCAie0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoInsyMTUwRTMzMy04RkRDLTQyQTMtOTQ3NC0xQTM5NTZENDZERTh9IikgPSAiU29sdXRpb24gSXRlbXMiLCAiU29sdXRpb24gSXRlbXMiLCAiezU1M0VDMzNFLTk4MTYtNDk5Ni1BNjYwLTVENjE4NkEwQjBCM30iDQotCVByb2plY3RTZWN0aW9uKFNvbHV0aW9uSXRlbXMpID0gcHJlUHJvamVjdA0KLQkJLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMNCi0JCXJlYWRtZS50eHQgPSByZWFkbWUudHh0DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luc291bmQiLCAid2luc291bmQudmNwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2JzZGRiIiwgIl9ic2RkYi52Y3Byb2oiLCAie0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmNwcm9qIiwgInswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlc190ZXN0IiwgIl9jdHlwZXNfdGVzdC52Y3Byb2oiLCAiezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZWxlbWVudHRyZWUiLCAiX2VsZW1lbnR0cmVlLnZjcHJvaiIsICJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3Byb2oiLCAiezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc29ja2V0IiwgIl9zb2NrZXQudmNwcm9qIiwgIns4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmNwcm9qIiwgInsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSA9IHtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjcHJvaiIsICJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0gPSB7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y2FwaSIsICJfdGVzdGNhcGkudmNwcm9qIiwgIns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3RraW50ZXIiLCAiX3RraW50ZXIudmNwcm9qIiwgIns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYnoyIiwgImJ6Mi52Y3Byb2oiLCAiezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjcHJvaiIsICJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInVuaWNvZGVkYXRhIiwgInVuaWNvZGVkYXRhLnZjcHJvaiIsICJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3Byb2oiLCAie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgImJkaXN0X3dpbmluc3QudmNwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjcHJvaiIsICJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCi0JUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0gPSB7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fQ0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQ0KLQlFbmRQcm9qZWN0U2VjdGlvbg0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNxbGl0ZTMiLCAic3FsaXRlMy52Y3Byb2oiLCAie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0NCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmNwcm9qIiwgIns5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9Ig0KLQlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9DQotCUVuZFByb2plY3RTZWN0aW9uDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAia2lsbF9weXRob24iLCAia2lsbF9weXRob24udmNwcm9qIiwgIns2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9Ig0KLUVuZFByb2plY3QNCi1HbG9iYWwNCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCi0JCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCi0JCURlYnVnfHg2NCA9IERlYnVnfHg2NA0KLQkJUEdJbnN0cnVtZW50fFdpbjMyID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQlQR0luc3RydW1lbnR8eDY0ID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJUEdVcGRhdGV8V2luMzIgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJUEdVcGRhdGV8eDY0ID0gUEdVcGRhdGV8eDY0DQotCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMg0KLQkJUmVsZWFzZXx4NjQgPSBSZWxlYXNlfHg2NA0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQotCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLUVuZEdsb2JhbA0KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDEwLjAwCisjIFZpc3VhbCBTdHVkaW8gMjAwOAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjcHJvaiIsICJ7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0gPSB7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfdmVyc2lvbmluZm8iLCAibWFrZV92ZXJzaW9uaW5mby52Y3Byb2oiLCAie0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmNvcmUiLCAicHl0aG9uY29yZS52Y3Byb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfSA9IHtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9CisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9ID0gezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0KKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0gPSB7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbnciLCAicHl0aG9udy52Y3Byb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmNwcm9qIiwgIntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIm1ha2VfYnVpbGRpbmZvIiwgIm1ha2VfYnVpbGRpbmZvLnZjcHJvaiIsICJ7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfSIKK0VuZFByb2plY3QKK1Byb2plY3QoInsyMTUwRTMzMy04RkRDLTQyQTMtOTQ3NC0xQTM5NTZENDZERTh9IikgPSAiU29sdXRpb24gSXRlbXMiLCAiU29sdXRpb24gSXRlbXMiLCAiezU1M0VDMzNFLTk4MTYtNDk5Ni1BNjYwLTVENjE4NkEwQjBCM30iCisJUHJvamVjdFNlY3Rpb24oU29sdXRpb25JdGVtcykgPSBwcmVQcm9qZWN0CisJCS4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMgPSAuLlxNb2R1bGVzXGdldGJ1aWxkaW5mby5jCisJCXJlYWRtZS50eHQgPSByZWFkbWUudHh0CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luc291bmQiLCAid2luc291bmQudmNwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9ic2RkYiIsICJfYnNkZGIudmNwcm9qIiwgIntCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0gPSB7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlcyIsICJfY3R5cGVzLnZjcHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzX3Rlc3QiLCAiX2N0eXBlc190ZXN0LnZjcHJvaiIsICJ7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZWxlbWVudHRyZWUiLCAiX2VsZW1lbnR0cmVlLnZjcHJvaiIsICJ7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXNpIiwgIl9tc2kudmNwcm9qIiwgInszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zb2NrZXQiLCAiX3NvY2tldC52Y3Byb2oiLCAiezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmNwcm9qIiwgInsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSA9IHtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjcHJvaiIsICJ7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0KKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0gPSB7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfQorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RjYXBpIiwgIl90ZXN0Y2FwaS52Y3Byb2oiLCAiezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fSA9IHtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3RraW50ZXIiLCAiX3RraW50ZXIudmNwcm9qIiwgIns0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJ6MiIsICJiejIudmNwcm9qIiwgIns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNlbGVjdCIsICJzZWxlY3QudmNwcm9qIiwgInsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInVuaWNvZGVkYXRhIiwgInVuaWNvZGVkYXRhLnZjcHJvaiIsICJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweWV4cGF0IiwgInB5ZXhwYXQudmNwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9IgorCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJkaXN0X3dpbmluc3QiLCAiYmRpc3Rfd2luaW5zdC52Y3Byb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9oYXNobGliIiwgIl9oYXNobGliLnZjcHJvaiIsICJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9ID0ge0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0KKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0gPSB7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fQorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNxbGl0ZTMiLCAic3FsaXRlMy52Y3Byb2oiLCAie0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfSA9IHs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9CisJRW5kUHJvamVjdFNlY3Rpb24KK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX211bHRpcHJvY2Vzc2luZyIsICJfbXVsdGlwcm9jZXNzaW5nLnZjcHJvaiIsICJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSIKKwlQcm9qZWN0U2VjdGlvbihQcm9qZWN0RGVwZW5kZW5jaWVzKSA9IHBvc3RQcm9qZWN0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9ID0ge0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0KKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJraWxsX3B5dGhvbiIsICJraWxsX3B5dGhvbi52Y3Byb2oiLCAiezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCisJCURlYnVnfHg2NCA9IERlYnVnfHg2NAorCQlQR0luc3RydW1lbnR8V2luMzIgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJUEdJbnN0cnVtZW50fHg2NCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJUEdVcGRhdGV8V2luMzIgPSBQR1VwZGF0ZXxXaW4zMgorCQlQR1VwZGF0ZXx4NjQgPSBQR1VwZGF0ZXx4NjQKKwkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzIKKwkJUmVsZWFzZXx4NjQgPSBSZWxlYXNlfHg2NAorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbgorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NAorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NAorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NAorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMgorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RjBFMDU0MUUtRjE3RC00MzBCLTk3QzQtOTNBREYwREQyODRFfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtGMEUwNTQxRS1GMTdELTQzMEItOTdDNC05M0FERjBERDI4NEV9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0YwRTA1NDFFLUYxN0QtNDMwQi05N0M0LTkzQURGMEREMjg0RX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NAorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMgorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzIKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NAorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NAorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzIKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXs2REUxMDc0NC1FMzk2LTQwQTUtQjRFMi0xQjY5QUE3QzhEMzF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezZERTEwNzQ0LUUzOTYtNDBBNS1CNEUyLTFCNjlBQTdDOEQzMX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NAorCQl7NkRFMTA3NDQtRTM5Ni00MEE1LUI0RTItMUI2OUFBN0M4RDMxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwlFbmRHbG9iYWxTZWN0aW9uCisJR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24KKwkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFCisJRW5kR2xvYmFsU2VjdGlvbgorRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wZ2luc3RydW1lbnQudnNwcm9wcyBiL1BDL1ZTOS4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCmluZGV4IDk5YzExN2IuLmFmODgxM2MgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCisrKyBiL1BDL1ZTOS4wL3BnaW5zdHJ1bWVudC52c3Byb3BzCkBAIC0xLDM0ICsxLDM0IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0icGdpbnN0cnVtZW50Ig0KLQlPdXRwdXREaXJlY3Rvcnk9IiQoT3V0RGlyUEdJKSINCi0JSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLXBnaVwkKFByb2plY3ROYW1lKVwiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlPcHRpbWl6YXRpb249IjIiDQotCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQlGYXZvclNpemVPclNwZWVkPSIyIg0KLQkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiDQotCQlFbmFibGVGaWJlclNhZmVPcHRpbWl6YXRpb25zPSJmYWxzZSINCi0JCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCi0JCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQlFeGNlcHRpb25IYW5kbGluZz0iMCINCi0JCUJ1ZmZlclNlY3VyaXR5Q2hlY2s9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIg0KLQkJRW5hYmxlQ09NREFURm9sZGluZz0iMSINCi0JCUxpbmtUaW1lQ29kZUdlbmVyYXRpb249IjIiDQotCQlQcm9maWxlR3VpZGVkRGF0YWJhc2U9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnaVwkKFRhcmdldE5hbWUpLnBnZCINCi0JCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyUEdJKVwkKFRhcmdldE5hbWUpLmxpYiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iT3V0RGlyUEdJIg0KLQkJVmFsdWU9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnaVwiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9InBnaW5zdHJ1bWVudCIKKwlPdXRwdXREaXJlY3Rvcnk9IiQoT3V0RGlyUEdJKSIKKwlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtcGdpXCQoUHJvamVjdE5hbWUpXCIKKwk+CisJPFRvb2wKKwkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJT3B0aW1pemF0aW9uPSIyIgorCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSIKKwkJRmF2b3JTaXplT3JTcGVlZD0iMiIKKwkJT21pdEZyYW1lUG9pbnRlcnM9InRydWUiCisJCUVuYWJsZUZpYmVyU2FmZU9wdGltaXphdGlvbnM9ImZhbHNlIgorCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRydWUiCisJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCUV4Y2VwdGlvbkhhbmRsaW5nPSIwIgorCQlCdWZmZXJTZWN1cml0eUNoZWNrPSJmYWxzZSIKKwkvPgorCTxUb29sCisJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJT3B0aW1pemVSZWZlcmVuY2VzPSIyIgorCQlFbmFibGVDT01EQVRGb2xkaW5nPSIxIgorCQlMaW5rVGltZUNvZGVHZW5lcmF0aW9uPSIyIgorCQlQcm9maWxlR3VpZGVkRGF0YWJhc2U9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXBnaVwkKFRhcmdldE5hbWUpLnBnZCIKKwkJSW1wb3J0TGlicmFyeT0iJChPdXREaXJQR0kpXCQoVGFyZ2V0TmFtZSkubGliIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJPdXREaXJQR0kiCisJCVZhbHVlPSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ2lcIgorCS8+Cis8L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+CmRpZmYgLS1naXQgYS9QQy9WUzkuMC9wZ3VwZGF0ZS52c3Byb3BzIGIvUEMvVlM5LjAvcGd1cGRhdGUudnNwcm9wcwppbmRleCAyNmNmYzJkLi43Y2U0YTNhIDEwMDY0NAotLS0gYS9QQy9WUzkuMC9wZ3VwZGF0ZS52c3Byb3BzCisrKyBiL1BDL1ZTOS4wL3BndXBkYXRlLnZzcHJvcHMKQEAgLTEsMTQgKzEsMTQgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJwZ3VwZGF0ZSINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ29cIg0KLQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChTb2x1dGlvbkRpcilccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCUFkZGl0aW9uYWxNYW5pZmVzdERlcGVuZGVuY2llcz0iIg0KLQkJTGlua1RpbWVDb2RlR2VuZXJhdGlvbj0iNCINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0icGd1cGRhdGUiCisJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS1wZ29cIgorCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFNvbHV0aW9uRGlyKVxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwk+CisJPFRvb2wKKwkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQlBZGRpdGlvbmFsTWFuaWZlc3REZXBlbmRlbmNpZXM9IiIKKwkJTGlua1RpbWVDb2RlR2VuZXJhdGlvbj0iNCIKKwkvPgorPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlkLnZzcHJvcHMgYi9QQy9WUzkuMC9weWQudnNwcm9wcwppbmRleCAzNGMyMWUxLi5jZTAzOWViIDEwMDY0NAotLS0gYS9QQy9WUzkuMC9weWQudnNwcm9wcworKysgYi9QQy9WUzkuMC9weWQudnNwcm9wcwpAQCAtMSwyOCArMSwyOCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InB5ZCINCi0JSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUHlfQlVJTERfQ09SRV9NT0RVTEUiDQotCQlSdW50aW1lTGlicmFyeT0iMiINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5weWQiDQotCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkucGRiIg0KLQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpXCQoVGFyZ2V0TmFtZSkubGliIg0KLQkJR2VuZXJhdGVNYW5pZmVzdD0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCUVtYmVkTWFuaWZlc3Q9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQlDb21tYW5kTGluZT0iIg0KLQkvPg0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJweWQiCisJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJPgorCTxUb29sCisJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRSIKKwkJUnVudGltZUxpYnJhcnk9IjIiCisJLz4KKwk8VG9vbAorCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5weWQiCisJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5wZGIiCisJCUltcG9ydExpYnJhcnk9IiQoT3V0RGlyKVwkKFRhcmdldE5hbWUpLmxpYiIKKwkJR2VuZXJhdGVNYW5pZmVzdD0iZmFsc2UiCisJLz4KKwk8VG9vbAorCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJRW1iZWRNYW5pZmVzdD0iZmFsc2UiCisJLz4KKwk8VG9vbAorCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJQ29tbWFuZExpbmU9IiIKKwkvPgorPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlkX2QudnNwcm9wcyBiL1BDL1ZTOS4wL3B5ZF9kLnZzcHJvcHMKaW5kZXggMzEzYTMwYi4uODUwODE1NiAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvcHlkX2QudnNwcm9wcworKysgYi9QQy9WUzkuMC9weWRfZC52c3Byb3BzCkBAIC0xLDM2ICsxLDM2IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0icHlkX2QiDQotCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCU9wdGltaXphdGlvbj0iMCINCi0JCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIwIg0KLQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQeV9CVUlMRF9DT1JFX01PRFVMRSINCi0JCVJ1bnRpbWVMaWJyYXJ5PSIzIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QucHlkIg0KLQkJTGlua0luY3JlbWVudGFsPSIxIg0KLQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QucGRiIg0KLQkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpXCQoVGFyZ2V0TmFtZSkubGliIg0KLQkJR2VuZXJhdGVNYW5pZmVzdD0iZmFsc2UiDQotCS8+DQotCTxUb29sDQotCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCUVtYmVkTWFuaWZlc3Q9ImZhbHNlIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQlDb21tYW5kTGluZT0iIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJQeXRob25FeGUiDQotCQlWYWx1ZT0iJChTb2x1dGlvbkRpcilweXRob25fZC5leGUiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9InB5ZF9kIgorCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyIKKwk+CisJPFRvb2wKKwkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJT3B0aW1pemF0aW9uPSIwIgorCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMCIKKwkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSIKKwkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlB5X0JVSUxEX0NPUkVfTU9EVUxFIgorCQlSdW50aW1lTGlicmFyeT0iMyIKKwkvPgorCTxUb29sCisJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QucHlkIgorCQlMaW5rSW5jcmVtZW50YWw9IjEiCisJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLnBkYiIKKwkJSW1wb3J0TGlicmFyeT0iJChPdXREaXIpXCQoVGFyZ2V0TmFtZSkubGliIgorCQlHZW5lcmF0ZU1hbmlmZXN0PSJmYWxzZSIKKwkvPgorCTxUb29sCisJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQlFbWJlZE1hbmlmZXN0PSJmYWxzZSIKKwkvPgorCTxUb29sCisJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQlDb21tYW5kTGluZT0iIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJQeXRob25FeGUiCisJCVZhbHVlPSIkKFNvbHV0aW9uRGlyKXB5dGhvbl9kLmV4ZSIKKwkvPgorPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlleHBhdC52Y3Byb2ogYi9QQy9WUzkuMC9weWV4cGF0LnZjcHJvagppbmRleCBjNjE2OTY3Li43YTI0NzRlIDEwMDY0NAotLS0gYS9QQy9WUzkuMC9weWV4cGF0LnZjcHJvagorKysgYi9QQy9WUzkuMC9weWV4cGF0LnZjcHJvagpAQCAtMSw1NTMgKzEsNTU3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0icHlleHBhdCINCi0JUHJvamVjdEdVSUQ9IntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KLQlSb290TmFtZXNwYWNlPSJweWV4cGF0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0Ig0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO0hBVkVfRVhQQVRfSDtYTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1hNTF9TVEFUSUM7SEFWRV9NRU1NT1ZFIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7SEFWRV9FWFBBVF9IO1hNTF9OUztYTUxfRFREO0JZVEVPUkRFUj0xMjM0O1hNTF9DT05URVhUX0JZVEVTPTEwMjQ7WE1MX1NUQVRJQztIQVZFX01FTU1PVkUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xweWV4cGF0LmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjksMDAiCisJTmFtZT0icHlleHBhdCIKKwlQcm9qZWN0R1VJRD0ie0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0iCisJUm9vdE5hbWVzcGFjZT0icHlleHBhdCIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUztQWUVYUEFUX0VYUE9SVFM7WE1MX1NUQVRJQyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7WE1MX1NUQVRJQyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7WE1MX1NUQVRJQyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7WE1MX1NUQVRJQyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO1hNTF9TVEFUSUMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuXC4uXC4uXE1vZHVsZXNcZXhwYXQiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IlBZRVhQQVRfRVhQT1JUUztYTUxfU1RBVElDIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii5cLi5cLi5cTW9kdWxlc1xleHBhdCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iUFlFWFBBVF9FWFBPUlRTO1hNTF9TVEFUSUMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLlwuLlwuLlxNb2R1bGVzXGV4cGF0IgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJQWUVYUEFUX0VYUE9SVFM7WE1MX1NUQVRJQyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IkhlYWRlciBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xweWV4cGF0LmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcZXhwYXRcbG9hZGxpYnJhcnkuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWxwYXJzZS5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHlwcm9qZWN0LnZzcHJvcHMgYi9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcwppbmRleCA4YjA2ZjBjLi5lZjI4YWY4IDEwMDY0NAotLS0gYS9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcworKysgYi9QQy9WUzkuMC9weXByb2plY3QudnNwcm9wcwpAQCAtMSwxMTEgKzEsMTExIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOC4wMCINCi0JTmFtZT0icHlwcm9qZWN0Ig0KLQlPdXRwdXREaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpIg0KLQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9IiQoU29sdXRpb25EaXIpJChQbGF0Zm9ybU5hbWUpLXRlbXAtJChDb25maWd1cmF0aW9uTmFtZSlcJChQcm9qZWN0TmFtZSlcIg0KLQk+DQotCTxUb29sDQotCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9InRydWUiDQotCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOyAuLlwuLlxQQyINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lOMzIiDQotCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiDQotCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJV2FybmluZ0xldmVsPSIzIg0KLQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMyINCi0JCUNvbXBpbGVBcz0iMCINCi0JLz4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCUFkZGl0aW9uYWxMaWJyYXJ5RGlyZWN0b3JpZXM9IiQoT3V0RGlyKSINCi0JCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCi0JCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIg0KLQkJU3ViU3lzdGVtPSIyIg0KLQkJUmFuZG9taXplZEJhc2VBZGRyZXNzPSIxIg0KLQkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiDQotCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXFBDOy4uXC4uXEluY2x1ZGUiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5RGxsTmFtZSINCi0JCVZhbHVlPSJweXRob24yNyINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iUHl0aG9uRXhlIg0KLQkJVmFsdWU9IiQoU29sdXRpb25EaXIpXHB5dGhvbi5leGUiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9ImV4dGVybmFsc0RpciINCi0JCVZhbHVlPSIuLlwuLlxleHRlcm5hbHMiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9ImJzZGRiNDdEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3MiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9ImJzZGRiNDdEZXBMaWJzIg0KLQkJVmFsdWU9IndzMl8zMi5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9ImJzZGRiRGlyIg0KLQkJVmFsdWU9IiQoYnNkZGI0N0RpcikiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9ImJzZGRiRGVwTGlicyINCi0JCVZhbHVlPSIkKGJzZGRiNDdEZXBMaWJzKSINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iYnNkZGI0NERpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcZGItNC40LjIwXGJ1aWxkX3dpbjMyIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJic2RkYjQ0RGVwTGlicyINCi0JCVZhbHVlPSIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InNxbGl0ZTNEaXIiDQotCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHNxbGl0ZS0zLjguMTEuMCINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0iYnoyRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxiemlwMi0xLjAuNiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0ib3BlbnNzbERpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0Rpcilcb3BlbnNzbC0xLjAuMmoiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrRGlyIg0KLQkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVx0Y2x0ayINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGs2NERpciINCi0JCVZhbHVlPSIkKGV4dGVybmFsc0RpcilcdGNsdGs2NCINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGtMaWIiDQotCQlWYWx1ZT0iJCh0Y2x0a0RpcilcbGliXHRjbDg1LmxpYiAkKHRjbHRrRGlyKVxsaWJcdGs4NS5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrTGliRGVidWciDQotCQlWYWx1ZT0iJCh0Y2x0a0RpcilcbGliXHRjbDg1Zy5saWIgJCh0Y2x0a0RpcilcbGliXHRrODVnLmxpYiINCi0JLz4NCi0JPFVzZXJNYWNybw0KLQkJTmFtZT0idGNsdGs2NExpYiINCi0JCVZhbHVlPSIkKHRjbHRrNjREaXIpXGxpYlx0Y2w4NS5saWIgJCh0Y2x0azY0RGlyKVxsaWJcdGs4NS5saWIiDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9InRjbHRrNjRMaWJEZWJ1ZyINCi0JCVZhbHVlPSIkKHRjbHRrNjREaXIpXGxpYlx0Y2w4NWcubGliICQodGNsdGs2NERpcilcbGliXHRrODVnLmxpYiINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0icHlwcm9qZWN0IgorCU91dHB1dERpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikiCisJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUHJvamVjdE5hbWUpXCIKKwk+CisJPFRvb2wKKwkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJT3B0aW1pemF0aW9uPSIyIgorCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJ0cnVlIgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxJbmNsdWRlOyAuLlwuLlxQQyIKKwkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU4zMjtXSU4zMiIKKwkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJRXhjZXB0aW9uSGFuZGxpbmc9IjAiCisJCVJ1bnRpbWVMaWJyYXJ5PSIwIgorCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJV2FybmluZ0xldmVsPSIzIgorCQlEZWJ1Z0luZm9ybWF0aW9uRm9ybWF0PSIzIgorCQlDb21waWxlQXM9IjAiCisJLz4KKwk8VG9vbAorCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJQWRkaXRpb25hbExpYnJhcnlEaXJlY3Rvcmllcz0iJChPdXREaXIpIgorCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249InRydWUiCisJCVByb2dyYW1EYXRhYmFzZUZpbGU9IiQoT3V0RGlyKSQoVGFyZ2V0TmFtZSkucGRiIgorCQlTdWJTeXN0ZW09IjIiCisJCVJhbmRvbWl6ZWRCYXNlQWRkcmVzcz0iMSIKKwkJRGF0YUV4ZWN1dGlvblByZXZlbnRpb249IjAiCisJCVRhcmdldE1hY2hpbmU9IjEiCisJLz4KKwk8VG9vbAorCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIuLlwuLlxQQzsuLlwuLlxJbmNsdWRlIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJQeURsbE5hbWUiCisJCVZhbHVlPSJweXRob24yNyIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0iUHl0aG9uRXhlIgorCQlWYWx1ZT0iJChTb2x1dGlvbkRpcilccHl0aG9uLmV4ZSIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0iZXh0ZXJuYWxzRGlyIgorCQlWYWx1ZT0iLi5cLi5cZXh0ZXJuYWxzIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJic2RkYjQ3RGlyIgorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXGJzZGRiLTQuNy4yNS4wXGJ1aWxkX3dpbmRvd3MiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9ImJzZGRiNDdEZXBMaWJzIgorCQlWYWx1ZT0id3MyXzMyLmxpYiIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0iYnNkZGJEaXIiCisJCVZhbHVlPSIkKGJzZGRiNDdEaXIpIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJic2RkYkRlcExpYnMiCisJCVZhbHVlPSIkKGJzZGRiNDdEZXBMaWJzKSIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0iYnNkZGI0NERpciIKKwkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVxkYi00LjQuMjBcYnVpbGRfd2luMzIiCisJLz4KKwk8VXNlck1hY3JvCisJCU5hbWU9ImJzZGRiNDREZXBMaWJzIgorCQlWYWx1ZT0iIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJzcWxpdGUzRGlyIgorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXHNxbGl0ZS0zLjE0LjIuMCIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0iYnoyRGlyIgorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXGJ6aXAyLTEuMC42IgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJvcGVuc3NsRGlyIgorCQlWYWx1ZT0iJChleHRlcm5hbHNEaXIpXG9wZW5zc2wtMS4wLjJvIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJ0Y2x0a0RpciIKKwkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVx0Y2x0ayIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0idGNsdGs2NERpciIKKwkJVmFsdWU9IiQoZXh0ZXJuYWxzRGlyKVx0Y2x0azY0IgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJ0Y2x0a0xpYiIKKwkJVmFsdWU9IiQodGNsdGtEaXIpXGxpYlx0Y2w4NS5saWIgJCh0Y2x0a0RpcilcbGliXHRrODUubGliIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJ0Y2x0a0xpYkRlYnVnIgorCQlWYWx1ZT0iJCh0Y2x0a0RpcilcbGliXHRjbDg1Zy5saWIgJCh0Y2x0a0RpcilcbGliXHRrODVnLmxpYiIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0idGNsdGs2NExpYiIKKwkJVmFsdWU9IiQodGNsdGs2NERpcilcbGliXHRjbDg1LmxpYiAkKHRjbHRrNjREaXIpXGxpYlx0azg1LmxpYiIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0idGNsdGs2NExpYkRlYnVnIgorCQlWYWx1ZT0iJCh0Y2x0azY0RGlyKVxsaWJcdGNsODVnLmxpYiAkKHRjbHRrNjREaXIpXGxpYlx0azg1Zy5saWIiCisJLz4KKzwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2ogYi9QQy9WUzkuMC9weXRob24udmNwcm9qCmluZGV4IDY1YjU4MzguLmQzYmFhMTEgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL3B5dGhvbi52Y3Byb2oKKysrIGIvUEMvVlM5LjAvcHl0aG9uLnZjcHJvagpAQCAtMSw2MzcgKzEsNjM3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0icHl0aG9uIg0KLQlQcm9qZWN0R1VJRD0ie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbl9kLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3x4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob25fZC5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjEwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0NPTlNPTEUiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob24uZXhlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCQlJbXBvcnRMaWJyYXJ5PSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5Y29uLmljbyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9leGUucmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xweXRob24uYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOSwwMCIKKwlOYW1lPSJweXRob24iCisJUHJvamVjdEdVSUQ9IntCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9IgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJCUNvbXBpbGVBcz0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJCUNvbXBpbGVBcz0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIgorCQkJCUNvbXBpbGVBcz0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uX2QuZXhlIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5cZGVidWcudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMyIKKwkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSIKKwkJCQlDb21waWxlQXM9IjAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbl9kLmV4ZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjEwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJQ2hhcmFjdGVyU2V0PSIyIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfQ09OU09MRSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJCUNvbXBpbGVBcz0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbi5leGUiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9DT05TT0xFIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9uLmV4ZSIKKwkJCQlTdWJTeXN0ZW09IjEiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweWNvbi5pY28iCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHB5dGhvbl9leGUucmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNccHl0aG9uLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3B5dGhvbmNvcmUudmNwcm9qIGIvUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKaW5kZXggZTZmMDJkYi4uNzlkY2Y5NiAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKKysrIGIvUEMvVlM5LjAvcHl0aG9uY29yZS52Y3Byb2oKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvcHl0aG9udy52Y3Byb2ogYi9QQy9WUzkuMC9weXRob253LnZjcHJvagppbmRleCBmN2NjODMyLi5kMzU5N2Y0IDEwMDY0NAotLS0gYS9QQy9WUzkuMC9weXRob253LnZjcHJvagorKysgYi9QQy9WUzkuMC9weXRob253LnZjcHJvagpAQCAtMSw2MTggKzEsNjE4IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0icHl0aG9udyINCi0JUHJvamVjdEdVSUQ9IntGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9Ig0KLQlUYXJnZXRGcmFtZXdvcmtWZXJzaW9uPSIxMzEwNzIiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9Ing2NCINCi0JCS8+DQotCTwvUGxhdGZvcm1zPg0KLQk8VG9vbEZpbGVzPg0KLQk8L1Rvb2xGaWxlcz4NCi0JPENvbmZpZ3VyYXRpb25zPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUVuYWJsZUludHJpbnNpY0Z1bmN0aW9ucz0iZmFsc2UiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMyINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9ud19kLmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJUnVudGltZUxpYnJhcnk9IjMiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbndfZC5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJQ29tcGlsZUFzPSIwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiDQotCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSINCi0JCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIg0KLQkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENccHl0aG9uX2V4ZS5yYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xXaW5NYWluLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjksMDAiCisJTmFtZT0icHl0aG9udyIKKwlQcm9qZWN0R1VJRD0ie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlFbmFibGVJbnRyaW5zaWNGdW5jdGlvbnM9ImZhbHNlIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiCisJCQkJUnVudGltZUxpYnJhcnk9IjMiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9ud19kLmV4ZSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJRW5hYmxlSW50cmluc2ljRnVuY3Rpb25zPSJmYWxzZSIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIzIgorCQkJCUNvbXBpbGVBcz0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX0RFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbndfZC5leGUiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iX1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlDb21waWxlQXM9IjAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVxweXRob253LmV4ZSIKKwkJCQlTdGFja1Jlc2VydmVTaXplPSIyMDAwMDAwIgorCQkJCUJhc2VBZGRyZXNzPSIweDFkMDAwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJCUNvbXBpbGVBcz0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIgorCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCVVzZU9mTUZDPSIwIgorCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lORE9XUyIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJCUNvbXBpbGVBcz0iMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCUN1bHR1cmU9IjEwMzMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXHB5dGhvbncuZXhlIgorCQkJCVN0YWNrUmVzZXJ2ZVNpemU9IjIwMDAwMDAiCisJCQkJQmFzZUFkZHJlc3M9IjB4MWQwMDAwMDAiCisJCQkJSW1wb3J0TGlicmFyeT0iIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilccHl0aG9udy5leGUiCisJCQkJU3RhY2tSZXNlcnZlU2l6ZT0iMjAwMDAwMCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxZDAwMDAwMCIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xweXRob25fZXhlLnJjIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1xXaW5NYWluLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3JlYWRtZS50eHQgYi9QQy9WUzkuMC9yZWFkbWUudHh0CmluZGV4IDEwYmZkOTkuLmE0MDI0ZDUgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL3JlYWRtZS50eHQKKysrIGIvUEMvVlM5LjAvcmVhZG1lLnR4dApAQCAtMTMyLDcgKzEzMiw3IEBACiANCiAgICAgR2V0IHRoZSBzb3VyY2UgY29kZSB0aHJvdWdoDQogDQotICAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL29wZW5zc2wtMS4wLjJqDQorICAgIHN2biBleHBvcnQgaHR0cDovL3N2bi5weXRob24ub3JnL3Byb2plY3RzL2V4dGVybmFsL29wZW5zc2wtMS4wLjJvDQogDQogICAgICoqIE5PVEU6IGlmIHlvdSB1c2UgdGhlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgYXBwcm9hY2ggZm9yDQogICAgIG9idGFpbmluZyBleHRlcm5hbCBzb3VyY2VzIHRoZW4geW91IGRvbid0IG5lZWQgdG8gbWFudWFsbHkgZ2V0IHRoZSBzb3VyY2UNCmRpZmYgLS1naXQgYS9QQy9WUzkuMC9yZWxlYXNlLnZzcHJvcHMgYi9QQy9WUzkuMC9yZWxlYXNlLnZzcHJvcHMKaW5kZXggMDhkZWY5MC4uNmQ2ODQyZCAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvcmVsZWFzZS52c3Byb3BzCisrKyBiL1BDL1ZTOS4wL3JlbGVhc2UudnNwcm9wcwpAQCAtMSwxNSArMSwxNSBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+DQotPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQNCi0JUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiDQotCVZlcnNpb249IjguMDAiDQotCU5hbWU9InJlbGVhc2UiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkvPg0KLQk8VXNlck1hY3JvDQotCQlOYW1lPSJLaWxsUHl0aG9uRXhlIg0KLQkJVmFsdWU9IiQoT3V0RGlyKVxraWxsX3B5dGhvbi5leGUiDQotCS8+CQ0KLTwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJyZWxlYXNlIgorCT4KKwk8VG9vbAorCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCS8+CisJPFVzZXJNYWNybworCQlOYW1lPSJLaWxsUHl0aG9uRXhlIgorCQlWYWx1ZT0iJChPdXREaXIpXGtpbGxfcHl0aG9uLmV4ZSIKKwkvPgkKKzwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3J0LmJhdCBiL1BDL1ZTOS4wL3J0LmJhdAppbmRleCBhNjNhNDdiLi44NWUzZDYzIDEwMDY0NAotLS0gYS9QQy9WUzkuMC9ydC5iYXQKKysrIGIvUEMvVlM5LjAvcnQuYmF0CkBAIC0xLDYwICsxLDYwIEBACi1AZWNobyBvZmYNCi1yZW0gUnVuIFRlc3RzLiAgUnVuIHRoZSByZWdyZXNzaW9uIHRlc3Qgc3VpdGUuDQotcmVtIFVzYWdlOiAgcnQgWy1kXSBbLU9dIFstcV0gWy14NjRdIHJlZ3J0ZXN0X2FyZ3MNCi1yZW0gLWQgICBSdW4gRGVidWcgYnVpbGQgKHB5dGhvbl9kLmV4ZSkuICBFbHNlIHJlbGVhc2UgYnVpbGQuDQotcmVtIC1PICAgUnVuIHB5dGhvbi5leGUgb3IgcHl0aG9uX2QuZXhlIChzZWUgLWQpIHdpdGggLU8uDQotcmVtIC1xICAgInF1aWNrIiAtLSBub3JtYWxseSB0aGUgdGVzdHMgYXJlIHJ1biB0d2ljZSwgdGhlIGZpcnN0IHRpbWUNCi1yZW0gICAgICBhZnRlciBkZWxldGluZyBhbGwgdGhlIC5weVtjb10gZmlsZXMgcmVhY2hhYmxlIGZyb20gTGliLy4NCi1yZW0gICAgICAtcSBydW5zIHRoZSB0ZXN0cyBqdXN0IG9uY2UsIGFuZCB3aXRob3V0IGRlbGV0aW5nIC5weVtjb10gZmlsZXMuDQotcmVtIC14NjQgUnVuIHRoZSA2NC1iaXQgYnVpbGQgb2YgcHl0aG9uIChvciBweXRob25fZCBpZiAtZCB3YXMgc3BlY2lmaWVkKQ0KLXJlbSAgICAgIGZyb20gdGhlICdhbWQ2NCcgZGlyIGluc3RlYWQgb2YgdGhlIDMyLWJpdCBidWlsZCBpbiB0aGlzIGRpci4NCi1yZW0gQWxsIGxlYWRpbmcgaW5zdGFuY2VzIG9mIHRoZXNlIHN3aXRjaGVzIGFyZSBzaGlmdGVkIG9mZiwgYW5kDQotcmVtIHdoYXRldmVyIHJlbWFpbnMgKHVwIHRvIDkgYXJndW1lbnRzKSBpcyBwYXNzZWQgdG8gcmVncnRlc3QucHkuDQotcmVtIEZvciBleGFtcGxlLA0KLXJlbSAgICAgcnQgLU8gLWQgLXggdGVzdF90aHJlYWQNCi1yZW0gcnVucw0KLXJlbSAgICAgcHl0aG9uX2QgLU8gLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgLXggdGVzdF90aHJlYWQNCi1yZW0gdHdpY2UsIGFuZA0KLXJlbSAgICAgcnQgLXEgLWcgdGVzdF9iaW5hc2NpaQ0KLXJlbSBydW5zDQotcmVtICAgICBweXRob25fZCAuLi9saWIvdGVzdC9yZWdydGVzdC5weSAtZyB0ZXN0X2JpbmFzY2lpDQotcmVtIHRvIGdlbmVyYXRlIHRoZSBleHBlY3RlZC1vdXRwdXQgZmlsZSBmb3IgYmluYXNjaWkgcXVpY2tseS4NCi1yZW0NCi1yZW0gQ29uZnVzaW5nOiAgaWYgeW91IHdhbnQgdG8gcGFzcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCBsaWtlDQotcmVtICAgICAtdSBuZXR3b3JrLGxhcmdlZmlsZQ0KLXJlbSB0aGVuIHlvdSBoYXZlIHRvIHF1b3RlIGl0IG9uIHRoZSBydCBsaW5lLCBsaWtlDQotcmVtICAgICBydCAtdSAibmV0d29yayxsYXJnZWZpbGUiDQotDQotc2V0bG9jYWwNCi0NCi1zZXQgcGNidWlsZD0lfmRwMA0KLXNldCBwcmVmaXg9JXBjYnVpbGQlDQotc2V0IHN1ZmZpeD0NCi1zZXQgcW1vZGU9DQotc2V0IGRhc2hPPQ0KLXNldCB0Y2x0az10Y2x0aw0KLQ0KLTpDaGVja09wdHMNCi1pZiAiJTEiPT0iLU8iIChzZXQgZGFzaE89LU8pICAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLXEiIChzZXQgcW1vZGU9eWVzKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLWQiIChzZXQgc3VmZml4PV9kKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLXg2NCIgKHNldCBwcmVmaXg9JXByZWZpeCVhbWQ2NCkgJiAoc2V0IHRjbHRrPXRjbHRrNjQpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLQ0KLVBBVEggJVBBVEglOyVwY2J1aWxkJS4uXC4uXGV4dGVybmFsc1wldGNsdGslXGJpbg0KLXNldCBleGU9IiVwcmVmaXglXHB5dGhvbiVzdWZmaXglIg0KLXNldCBjbWQ9JWV4ZSUgJWRhc2hPJSAtV2QgLTMgLUUgLXR0ICIlcGNidWlsZCVcLi5cLi5cTGliXHRlc3RccmVncnRlc3QucHkiICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5DQotaWYgZGVmaW5lZCBxbW9kZSBnb3RvIFFtb2RlDQotDQotZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uDQotJWV4ZSUgIiVwY2J1aWxkJVxybXB5Yy5weSINCi0NCi1lY2hvIG9uDQotJWNtZCUNCi1AZWNobyBvZmYNCi0NCi1lY2hvIEFib3V0IHRvIHJ1biBhZ2FpbiB3aXRob3V0IGRlbGV0aW5nIC5weWMvLnB5byBmaXJzdDoNCi1wYXVzZQ0KLQ0KLTpRbW9kZQ0KLWVjaG8gb24NCi0lY21kJQ0KK0BlY2hvIG9mZgorcmVtIFJ1biBUZXN0cy4gIFJ1biB0aGUgcmVncmVzc2lvbiB0ZXN0IHN1aXRlLgorcmVtIFVzYWdlOiAgcnQgWy1kXSBbLU9dIFstcV0gWy14NjRdIHJlZ3J0ZXN0X2FyZ3MKK3JlbSAtZCAgIFJ1biBEZWJ1ZyBidWlsZCAocHl0aG9uX2QuZXhlKS4gIEVsc2UgcmVsZWFzZSBidWlsZC4KK3JlbSAtTyAgIFJ1biBweXRob24uZXhlIG9yIHB5dGhvbl9kLmV4ZSAoc2VlIC1kKSB3aXRoIC1PLgorcmVtIC1xICAgInF1aWNrIiAtLSBub3JtYWxseSB0aGUgdGVzdHMgYXJlIHJ1biB0d2ljZSwgdGhlIGZpcnN0IHRpbWUKK3JlbSAgICAgIGFmdGVyIGRlbGV0aW5nIGFsbCB0aGUgLnB5W2NvXSBmaWxlcyByZWFjaGFibGUgZnJvbSBMaWIvLgorcmVtICAgICAgLXEgcnVucyB0aGUgdGVzdHMganVzdCBvbmNlLCBhbmQgd2l0aG91dCBkZWxldGluZyAucHlbY29dIGZpbGVzLgorcmVtIC14NjQgUnVuIHRoZSA2NC1iaXQgYnVpbGQgb2YgcHl0aG9uIChvciBweXRob25fZCBpZiAtZCB3YXMgc3BlY2lmaWVkKQorcmVtICAgICAgZnJvbSB0aGUgJ2FtZDY0JyBkaXIgaW5zdGVhZCBvZiB0aGUgMzItYml0IGJ1aWxkIGluIHRoaXMgZGlyLgorcmVtIEFsbCBsZWFkaW5nIGluc3RhbmNlcyBvZiB0aGVzZSBzd2l0Y2hlcyBhcmUgc2hpZnRlZCBvZmYsIGFuZAorcmVtIHdoYXRldmVyIHJlbWFpbnMgKHVwIHRvIDkgYXJndW1lbnRzKSBpcyBwYXNzZWQgdG8gcmVncnRlc3QucHkuCityZW0gRm9yIGV4YW1wbGUsCityZW0gICAgIHJ0IC1PIC1kIC14IHRlc3RfdGhyZWFkCityZW0gcnVucworcmVtICAgICBweXRob25fZCAtTyAuLi9saWIvdGVzdC9yZWdydGVzdC5weSAteCB0ZXN0X3RocmVhZAorcmVtIHR3aWNlLCBhbmQKK3JlbSAgICAgcnQgLXEgLWcgdGVzdF9iaW5hc2NpaQorcmVtIHJ1bnMKK3JlbSAgICAgcHl0aG9uX2QgLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgLWcgdGVzdF9iaW5hc2NpaQorcmVtIHRvIGdlbmVyYXRlIHRoZSBleHBlY3RlZC1vdXRwdXQgZmlsZSBmb3IgYmluYXNjaWkgcXVpY2tseS4KK3JlbQorcmVtIENvbmZ1c2luZzogIGlmIHlvdSB3YW50IHRvIHBhc3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgbGlrZQorcmVtICAgICAtdSBuZXR3b3JrLGxhcmdlZmlsZQorcmVtIHRoZW4geW91IGhhdmUgdG8gcXVvdGUgaXQgb24gdGhlIHJ0IGxpbmUsIGxpa2UKK3JlbSAgICAgcnQgLXUgIm5ldHdvcmssbGFyZ2VmaWxlIgorCitzZXRsb2NhbAorCitzZXQgcGNidWlsZD0lfmRwMAorc2V0IHByZWZpeD0lcGNidWlsZCUKK3NldCBzdWZmaXg9CitzZXQgcW1vZGU9CitzZXQgZGFzaE89CitzZXQgdGNsdGs9dGNsdGsKKworOkNoZWNrT3B0cworaWYgIiUxIj09Ii1PIiAoc2V0IGRhc2hPPS1PKSAgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJTEiPT0iLXEiIChzZXQgcW1vZGU9eWVzKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlMSI9PSItZCIgKHNldCBzdWZmaXg9X2QpICAgICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiUxIj09Ii14NjQiIChzZXQgcHJlZml4PSVwcmVmaXglYW1kNjQpICYgKHNldCB0Y2x0az10Y2x0azY0KSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKKworUEFUSCAlUEFUSCU7JXBjYnVpbGQlLi5cLi5cZXh0ZXJuYWxzXCV0Y2x0ayVcYmluCitzZXQgZXhlPSIlcHJlZml4JVxweXRob24lc3VmZml4JSIKK3NldCBjbWQ9JWV4ZSUgJWRhc2hPJSAtV2QgLTMgLUUgLXR0ICIlcGNidWlsZCVcLi5cLi5cTGliXHRlc3RccmVncnRlc3QucHkiICUxICUyICUzICU0ICU1ICU2ICU3ICU4ICU5CitpZiBkZWZpbmVkIHFtb2RlIGdvdG8gUW1vZGUKKworZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uCislZXhlJSAiJXBjYnVpbGQlXHJtcHljLnB5IgorCitlY2hvIG9uCislY21kJQorQGVjaG8gb2ZmCisKK2VjaG8gQWJvdXQgdG8gcnVuIGFnYWluIHdpdGhvdXQgZGVsZXRpbmcgLnB5Yy8ucHlvIGZpcnN0OgorcGF1c2UKKworOlFtb2RlCitlY2hvIG9uCislY21kJQpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvc2VsZWN0LnZjcHJvaiBiL1BDL1ZTOS4wL3NlbGVjdC52Y3Byb2oKaW5kZXggZjcwNzdjOS4uYTI4Yzc0NCAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvc2VsZWN0LnZjcHJvagorKysgYi9QQy9WUzkuMC9zZWxlY3QudmNwcm9qCkBAIC0xLDUzNyArMSw1MzcgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJzZWxlY3QiDQotCVByb2plY3RHVUlEPSJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCi0JUm9vdE5hbWVzcGFjZT0ic2VsZWN0Ig0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCTwvQ29uZmlndXJhdGlvbnM+DQotCTxSZWZlcmVuY2VzPg0KLQk8L1JlZmVyZW5jZXM+DQotCTxGaWxlcz4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOSwwMCIKKwlOYW1lPSJzZWxlY3QiCisJUHJvamVjdEdVSUQ9InsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9IgorCVJvb3ROYW1lc3BhY2U9InNlbGVjdCIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id3MyXzMyLmxpYiIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJsaWJjIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTEwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9IndzMl8zMi5saWIiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0ibGliYyIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDExMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3czJfMzIubGliIgorCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9ImxpYmMiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMTAwMDAiCisJCQkJVGFyZ2V0TWFjaGluZT0iMTciCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1xzZWxlY3Rtb2R1bGUuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvc3FsaXRlMy52Y3Byb2ogYi9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvagppbmRleCBlMTc3MWY0Li43MGJhZGY1IDEwMDY0NAotLS0gYS9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvagorKysgYi9QQy9WUzkuMC9zcWxpdGUzLnZjcHJvagpAQCAtMSw1MzcgKzEsNTM3IEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0ic3FsaXRlMyINCi0JUHJvamVjdEdVSUQ9IntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9Ig0KLQlSb290TmFtZXNwYWNlPSJzcWxpdGUzIg0KLQlLZXl3b3JkPSJXaW4zMlByb2oiDQotCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyINCi0JPg0KLQk8UGxhdGZvcm1zPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0iV2luMzIiDQotCQkvPg0KLQkJPFBsYXRmb3JtDQotCQkJTmFtZT0ieDY0Ig0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpX2QuZGxsIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKV9kLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iJnF1b3Q7JChzcWxpdGUzRGlyKSZxdW90OyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCU91dHB1dEZpbGU9IiQoT3V0RGlyKVwkKFByb2plY3ROYW1lKS5kbGwiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdVcGRhdGV8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoc3FsaXRlM0Rpcilcc3FsaXRlM2V4dC5oIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoc3FsaXRlM0Rpcilcc3FsaXRlMy5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI5LDAwIgorCU5hbWU9InNxbGl0ZTMiCisJUHJvamVjdEdVSUQ9IntBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9IgorCVJvb3ROYW1lc3BhY2U9InNxbGl0ZTMiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5cZGVidWcudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5kbGwiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXGRlYnVnLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSlfZC5kbGwiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiZxdW90OyQoc3FsaXRlM0RpcikmcXVvdDsiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJT3V0cHV0RmlsZT0iJChPdXREaXIpXCQoUHJvamVjdE5hbWUpLmRsbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHNxbGl0ZTMudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5cc3FsaXRlMy52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlPdXRwdXRGaWxlPSIkKE91dERpcilcJChQcm9qZWN0TmFtZSkuZGxsIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxzcWxpdGUzLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIzIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iJChzcWxpdGUzRGlyKVxzcWxpdGUzLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9IiQoc3FsaXRlM0Rpcilcc3FsaXRlM2V4dC5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIkKHNxbGl0ZTNEaXIpXHNxbGl0ZTMuYyIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCTwvRmlsdGVyPgorCTwvRmlsZXM+CisJPEdsb2JhbHM+CisJPC9HbG9iYWxzPgorPC9WaXN1YWxTdHVkaW9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUEMvVlM5LjAvc3FsaXRlMy52c3Byb3BzIGIvUEMvVlM5LjAvc3FsaXRlMy52c3Byb3BzCmluZGV4IGI1MDJkZjUuLjQyMGJhNmMgMTAwNjQ0Ci0tLSBhL1BDL1ZTOS4wL3NxbGl0ZTMudnNwcm9wcworKysgYi9QQy9WUzkuMC9zcWxpdGUzLnZzcHJvcHMKQEAgLTEsMTQgKzEsMTQgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJzcWxpdGUzIg0KLQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wcyINCi0JPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiDQotCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iU1FMSVRFX0FQST1fX2RlY2xzcGVjKGRsbGV4cG9ydCkiDQotCQlXYXJuaW5nTGV2ZWw9IjEiDQotCS8+DQotPC9WaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI4LjAwIgorCU5hbWU9InNxbGl0ZTMiCisJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHMiCisJPgorCTxUb29sCisJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiQoc3FsaXRlM0RpcikiCisJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJTUUxJVEVfQVBJPV9fZGVjbHNwZWMoZGxsZXhwb3J0KSIKKwkJV2FybmluZ0xldmVsPSIxIgorCS8+Cis8L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+CmRpZmYgLS1naXQgYS9QQy9WUzkuMC91bmljb2RlZGF0YS52Y3Byb2ogYi9QQy9WUzkuMC91bmljb2RlZGF0YS52Y3Byb2oKaW5kZXggNTE1YjFjNy4uZGIwM2RlMiAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvdW5pY29kZWRhdGEudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3VuaWNvZGVkYXRhLnZjcHJvagpAQCAtMSw1MzMgKzEsNTMzIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0idW5pY29kZWRhdGEiDQotCVByb2plY3RHVUlEPSJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSINCi0JUm9vdE5hbWVzcGFjZT0idW5pY29kZWRhdGEiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUEdJbnN0cnVtZW50fHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCINCi0JCQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IkhlYWRlciBGaWxlcyINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVkYXRhX2RiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVuYW1lX2RiLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJTb3VyY2UgRmlsZXMiDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlZGF0YS5jIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCTwvRmlsZXM+DQotCTxHbG9iYWxzPg0KLQk8L0dsb2JhbHM+DQotPC9WaXN1YWxTdHVkaW9Qcm9qZWN0Pg0KKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/PgorPFZpc3VhbFN0dWRpb1Byb2plY3QKKwlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyIKKwlWZXJzaW9uPSI5LDAwIgorCU5hbWU9InVuaWNvZGVkYXRhIgorCVByb2plY3RHVUlEPSJ7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfSIKKwlSb290TmFtZXNwYWNlPSJ1bmljb2RlZGF0YSIKKwlLZXl3b3JkPSJXaW4zMlByb2oiCisJVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9Ing2NCIKKwkJLz4KKwk8L1BsYXRmb3Jtcz4KKwk8VG9vbEZpbGVzPgorCTwvVG9vbEZpbGVzPgorCTxDb25maWd1cmF0aW9ucz4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3x4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZF9kLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlJlbGVhc2V8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQmFzZUFkZHJlc3M9IjB4MUQxMjAwMDAiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlCYXNlQWRkcmVzcz0iMHgxRDEyMDAwMCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8V2luMzIiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdVcGRhdGV8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUJhc2VBZGRyZXNzPSIweDFEMTIwMDAwIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcdW5pY29kZWRhdGFfZGIuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x1bmljb2RlbmFtZV9kYi5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHVuaWNvZGVkYXRhLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3c5eHBvcGVuLnZjcHJvaiBiL1BDL1ZTOS4wL3c5eHBvcGVuLnZjcHJvagppbmRleCA5YzBlNzU4Li5kMmQzYWQ5IDEwMDY0NAotLS0gYS9QQy9WUzkuMC93OXhwb3Blbi52Y3Byb2oKKysrIGIvUEMvVlM5LjAvdzl4cG9wZW4udmNwcm9qCkBAIC0xLDU3NiArMSw1NzYgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI5LDAwIg0KLQlOYW1lPSJ3OXhwb3BlbiINCi0JUHJvamVjdEdVSUQ9IntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9Ig0KLQlSb290TmFtZXNwYWNlPSJ3OXhwb3BlbiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTMxMDcyIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMiINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJR2VuZXJhdGVEZWJ1Z0luZm9ybWF0aW9uPSJmYWxzZSINCi0JCQkJU3ViU3lzdGVtPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIyIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjAiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIg0KLQkJCQlTdWJTeXN0ZW09IjEiDQotCQkJCUltcG9ydExpYnJhcnk9IiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjIiDQotCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIg0KLQkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMCINCi0JCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9InRydWUiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiDQotCQkJCVN1YlN5c3RlbT0iMSINCi0JCQkJSW1wb3J0TGlicmFyeT0iIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCT4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHc5eHBvcGVuLmMiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjksMDAiCisJTmFtZT0idzl4cG9wZW4iCisJUHJvamVjdEdVSUQ9IntFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9IgorCVJvb3ROYW1lc3BhY2U9Inc5eHBvcGVuIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjEzMTA3MiIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxkZWJ1Zy52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQmFzaWNSdW50aW1lQ2hlY2tzPSIzIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXGRlYnVnLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQlCYXNpY1J1bnRpbWVDaGVja3M9IjMiCisJCQkJUnVudGltZUxpYnJhcnk9IjEiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMSIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5cHJvamVjdC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxyZWxlYXNlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUEdJbnN0cnVtZW50fFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBnaW5zdHJ1bWVudC52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjIiCisJCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMCIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlHZW5lcmF0ZURlYnVnSW5mb3JtYXRpb249ImZhbHNlIgorCQkJCVN1YlN5c3RlbT0iMSIKKwkJCQlJbXBvcnRMaWJyYXJ5PSIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0IgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHg2NC52c3Byb3BzOy5ccmVsZWFzZS52c3Byb3BzOy5ccGdpbnN0cnVtZW50LnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCUltcG9ydExpYnJhcnk9IiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweXByb2plY3QudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCUltcG9ydExpYnJhcnk9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlwcm9qZWN0LnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHJlbGVhc2UudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCU9wdGltaXphdGlvbj0iMiIKKwkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSIKKwkJCQlTdHJpbmdQb29saW5nPSJ0cnVlIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIwIgorCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJ0cnVlIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iZmFsc2UiCisJCQkJU3ViU3lzdGVtPSIxIgorCQkJCUltcG9ydExpYnJhcnk9IiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwk8L0NvbmZpZ3VyYXRpb25zPgorCTxSZWZlcmVuY2VzPgorCTwvUmVmZXJlbmNlcz4KKwk8RmlsZXM+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlNvdXJjZSBGaWxlcyIKKwkJCT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxQQ1x3OXhwb3Blbi5jIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJPC9GaWxlcz4KKwk8R2xvYmFscz4KKwk8L0dsb2JhbHM+Cis8L1Zpc3VhbFN0dWRpb1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2ogYi9QQy9WUzkuMC93aW5zb3VuZC52Y3Byb2oKaW5kZXggNjU2NGIxZS4uYjZlNjFmNSAxMDA2NDQKLS0tIGEvUEMvVlM5LjAvd2luc291bmQudmNwcm9qCisrKyBiL1BDL1ZTOS4wL3dpbnNvdW5kLnZjcHJvagpAQCAtMSw1MjMgKzEsNTIzIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4NCi08VmlzdWFsU3R1ZGlvUHJvamVjdA0KLQlQcm9qZWN0VHlwZT0iVmlzdWFsIEMrKyINCi0JVmVyc2lvbj0iOSwwMCINCi0JTmFtZT0id2luc291bmQiDQotCVByb2plY3RHVUlEPSJ7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fSINCi0JUm9vdE5hbWVzcGFjZT0id2luc291bmQiDQotCUtleXdvcmQ9IldpbjMyUHJvaiINCi0JVGFyZ2V0RnJhbWV3b3JrVmVyc2lvbj0iMTk2NjEzIg0KLQk+DQotCTxQbGF0Zm9ybXM+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJXaW4zMiINCi0JCS8+DQotCQk8UGxhdGZvcm0NCi0JCQlOYW1lPSJ4NjQiDQotCQkvPg0KLQk8L1BsYXRmb3Jtcz4NCi0JPFRvb2xGaWxlcz4NCi0JPC9Ub29sRmlsZXM+DQotCTxDb25maWd1cmF0aW9ucz4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWRfZC52c3Byb3BzOy5ceDY0LnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FMaW5rVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYRENNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JCTxDb25maWd1cmF0aW9uDQotCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJSZWxlYXNlfHg2NCINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMiINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHg2NC52c3Byb3BzIg0KLQkJCUNoYXJhY3RlclNldD0iMCINCi0JCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiDQotCQkJPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8V2luMzIiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR0luc3RydW1lbnR8eDY0Ig0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjE3Ig0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ccGd1cGRhdGUudnNwcm9wcyINCi0JCQlDaGFyYWN0ZXJTZXQ9IjAiDQotCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJQR1VwZGF0ZXx4NjQiDQotCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiDQotCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiDQotCQkJQ2hhcmFjdGVyU2V0PSIwIg0KLQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIzIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxNyINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQUxpbmtUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDRnhDb3BUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iY3BwO2M7Y2M7Y3h4O2RlZjtvZGw7aWRsO2hwajtiYXQ7YXNtO2FzbXgiDQotCQkJVW5pcXVlSWRlbnRpZmllcj0iezRGQzczN0YxLUM3QTUtNDM3Ni1BMDY2LTJBMzJENzUyQTJGRn0iDQotCQkJPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cUENcd2luc291bmQuYyINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOSwwMCIKKwlOYW1lPSJ3aW5zb3VuZCIKKwlQcm9qZWN0R1VJRD0iezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0iCisJUm9vdE5hbWVzcGFjZT0id2luc291bmQiCisJS2V5d29yZD0iV2luMzJQcm9qIgorCVRhcmdldEZyYW1ld29ya1ZlcnNpb249IjE5NjYxMyIKKwk+CisJPFBsYXRmb3Jtcz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJXaW4zMiIKKwkJLz4KKwkJPFBsYXRmb3JtCisJCQlOYW1lPSJ4NjQiCisJCS8+CisJPC9QbGF0Zm9ybXM+CisJPFRvb2xGaWxlcz4KKwk8L1Rvb2xGaWxlcz4KKwk8Q29uZmlndXJhdGlvbnM+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkX2QudnNwcm9wczsuXHg2NC52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJSZWxlYXNlfHg2NCIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7Llx4NjQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHxXaW4zMiIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIyIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9Ii5ccHlkLnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHSW5zdHJ1bWVudHx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ2luc3RydW1lbnQudnNwcm9wcyIKKwkJCUNoYXJhY3RlclNldD0iMCIKKwkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0iMSIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjMiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Indpbm1tLmxpYiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IlBHVXBkYXRlfFdpbjMyIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjIiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iLlxweWQudnNwcm9wczsuXHBndXBkYXRlLnZzcHJvcHMiCisJCQlDaGFyYWN0ZXJTZXQ9IjAiCisJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249IjEiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJ3aW5tbS5saWIiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FMaW5rVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTWFuaWZlc3RUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYRENNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQnNjTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0Z4Q29wVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQXBwVmVyaWZpZXJUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJCTxDb25maWd1cmF0aW9uCisJCQlOYW1lPSJQR1VwZGF0ZXx4NjQiCisJCQlDb25maWd1cmF0aW9uVHlwZT0iMiIKKwkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIuXHB5ZC52c3Byb3BzOy5ceDY0LnZzcHJvcHM7LlxwZ3VwZGF0ZS52c3Byb3BzIgorCQkJQ2hhcmFjdGVyU2V0PSIwIgorCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSIxIgorCQkJPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMyIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0id2lubW0ubGliIgorCQkJCVRhcmdldE1hY2hpbmU9IjE3IgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIgorCQkJLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjYztjeHg7ZGVmO29kbDtpZGw7aHBqO2JhdDthc207YXNteCIKKwkJCVVuaXF1ZUlkZW50aWZpZXI9Ins0RkM3MzdGMS1DN0E1LTQzNzYtQTA2Ni0yQTMyRDc1MkEyRkZ9IgorCQkJPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXFBDXHdpbnNvdW5kLmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL1ZTOS4wL3g2NC52c3Byb3BzIGIvUEMvVlM5LjAveDY0LnZzcHJvcHMKaW5kZXggOWY4OGQ0NC4uMDcyMDA4NCAxMDA2NDQKLS0tIGEvUEMvVlM5LjAveDY0LnZzcHJvcHMKKysrIGIvUEMvVlM5LjAveDY0LnZzcHJvcHMKQEAgLTEsMjIgKzEsMjIgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9wZXJ0eVNoZWV0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJhbWQ2NCINCi0JT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKVxhbWQ2NFwiDQotCUludGVybWVkaWF0ZURpcmVjdG9yeT0iJChTb2x1dGlvbkRpcikkKFBsYXRmb3JtTmFtZSktdGVtcC0kKENvbmZpZ3VyYXRpb25OYW1lKVwkKFByb2plY3ROYW1lKVwiDQotCT4NCi0JPFRvb2wNCi0JCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQlBZGRpdGlvbmFsT3B0aW9ucz0iL1VTRUNMOk1TX09QVEVST04gL0dTLSINCi0JCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lONjQ7X01fWDY0Ig0KLQkvPg0KLQk8VG9vbA0KLQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJVGFyZ2V0TWFjaGluZT0iMTciDQotCS8+DQotCTxVc2VyTWFjcm8NCi0JCU5hbWU9IlB5dGhvbkV4ZSINCi0JCVZhbHVlPSIkKEhPU1RfUFlUSE9OKSINCi0JLz4NCi08L1Zpc3VhbFN0dWRpb1Byb3BlcnR5U2hlZXQ+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjguMDAiCisJTmFtZT0iYW1kNjQiCisJT3V0cHV0RGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKVxhbWQ2NFwiCisJSW50ZXJtZWRpYXRlRGlyZWN0b3J5PSIkKFNvbHV0aW9uRGlyKSQoUGxhdGZvcm1OYW1lKS10ZW1wLSQoQ29uZmlndXJhdGlvbk5hbWUpXCQoUHJvamVjdE5hbWUpXCIKKwk+CisJPFRvb2wKKwkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJQWRkaXRpb25hbE9wdGlvbnM9Ii9VU0VDTDpNU19PUFRFUk9OIC9HUy0iCisJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfV0lONjQ7X01fWDY0IgorCS8+CisJPFRvb2wKKwkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQlUYXJnZXRNYWNoaW5lPSIxNyIKKwkvPgorCTxVc2VyTWFjcm8KKwkJTmFtZT0iUHl0aG9uRXhlIgorCQlWYWx1ZT0iJChIT1NUX1BZVEhPTikiCisJLz4KKzwvVmlzdWFsU3R1ZGlvUHJvcGVydHlTaGVldD4KZGlmZiAtLWdpdCBhL1BDL19tc2kuYyBiL1BDL19tc2kuYwppbmRleCBkNTZiNWQxLi42OGM0ZTc5IDEwMDY0NAotLS0gYS9QQy9fbXNpLmMKKysrIGIvUEMvX21zaS5jCkBAIC0yNzEsNiArMjcxLDcgQEAKIHsKICAgICBNc2lDbG9zZUhhbmRsZShtc2lkYi0+aCk7CiAgICAgbXNpZGItPmggPSAwOworICAgIFB5T2JqZWN0X0RlbChtc2lkYik7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKQEAgLTMyMCw2ICszMjEsMTAgQEAKICAgICBjb2RlID0gTXNpUmVjb3JkR2V0SW50ZWdlcihlcnIsIDEpOyAvKiBYWFggY29kZSAqLwogICAgIGlmIChNc2lGb3JtYXRSZWNvcmQoMCwgZXJyLCByZXMsICZzaXplKSA9PSBFUlJPUl9NT1JFX0RBVEEpIHsKICAgICAgICAgcmVzID0gbWFsbG9jKHNpemUrMSk7CisgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgTXNpQ2xvc2VIYW5kbGUoZXJyKTsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICB9CiAgICAgICAgIE1zaUZvcm1hdFJlY29yZCgwLCBlcnIsIHJlcywgJnNpemUpOwogICAgICAgICByZXNbc2l6ZV09J1wwJzsKICAgICB9CkBAIC01NDMsNiArNTQ4LDkgQEAKICAgICAgICAgJmZ2YWwsIHN2YWwsICZzc2l6ZSk7CiAgICAgaWYgKHN0YXR1cyA9PSBFUlJPUl9NT1JFX0RBVEEpIHsKICAgICAgICAgc3ZhbCA9IG1hbGxvYyhzc2l6ZSk7CisgICAgICAgIGlmIChzdmFsID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICB9CiAgICAgICAgIHN0YXR1cyA9IE1zaVN1bW1hcnlJbmZvR2V0UHJvcGVydHkoc2ktPmgsIGZpZWxkLCAmdHlwZSwgJml2YWwsCiAgICAgICAgICAgICAmZnZhbCwgc3ZhbCwgJnNzaXplKTsKICAgICB9CmRpZmYgLS1naXQgYS9QQy9fc3VicHJvY2Vzcy5jIGIvUEMvX3N1YnByb2Nlc3MuYwppbmRleCBmZmU4ZjQxLi42Njk0MGZmIDEwMDY0NAotLS0gYS9QQy9fc3VicHJvY2Vzcy5jCisrKyBiL1BDL19zdWJwcm9jZXNzLmMKQEAgLTM0MSw5ICszNDEsMTMgQEAKICAgICBlbnZzaXplID0gUHlNYXBwaW5nX0xlbmd0aChlbnZpcm9ubWVudCk7CiAKICAgICBrZXlzID0gUHlNYXBwaW5nX0tleXMoZW52aXJvbm1lbnQpOworICAgIGlmICgha2V5cykgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgdmFsdWVzID0gUHlNYXBwaW5nX1ZhbHVlcyhlbnZpcm9ubWVudCk7Ci0gICAgaWYgKCFrZXlzIHx8ICF2YWx1ZXMpCisgICAgaWYgKCF2YWx1ZXMpIHsKICAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CiAKICAgICBvdXQgPSBQeVN0cmluZ19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAyMDQ4KTsKICAgICBpZiAoISBvdXQpCkBAIC0zNTIsNyArMzU2LDcgQEAKICAgICBwID0gUHlTdHJpbmdfQVNfU1RSSU5HKG91dCk7CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgZW52c2l6ZTsgaSsrKSB7Ci0gICAgICAgIGludCBrc2l6ZSwgdnNpemUsIHRvdGFsc2l6ZTsKKyAgICAgICAgc2l6ZV90IGtzaXplLCB2c2l6ZSwgdG90YWxzaXplOwogICAgICAgICBQeU9iamVjdCoga2V5ID0gUHlMaXN0X0dFVF9JVEVNKGtleXMsIGkpOwogICAgICAgICBQeU9iamVjdCogdmFsdWUgPSBQeUxpc3RfR0VUX0lURU0odmFsdWVzLCBpKTsKIApAQCAtMzYzLDEwICszNjcsMjIgQEAKICAgICAgICAgfQogICAgICAgICBrc2l6ZSA9IFB5U3RyaW5nX0dFVF9TSVpFKGtleSk7CiAgICAgICAgIHZzaXplID0gUHlTdHJpbmdfR0VUX1NJWkUodmFsdWUpOworICAgICAgICBpZiAoc3RybGVuKFB5U3RyaW5nX0FTX1NUUklORyhrZXkpKSAhPSBrc2l6ZSB8fAorICAgICAgICAgICAgc3RybGVuKFB5U3RyaW5nX0FTX1NUUklORyh2YWx1ZSkpICE9IHZzaXplKQorICAgICAgICB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW1iZWRkZWQgbnVsbCBjaGFyYWN0ZXIiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgLyogU2VhcmNoIGZyb20gaW5kZXggMSBiZWNhdXNlIG9uIFdpbmRvd3Mgc3RhcnRpbmcgJz0nIGlzIGFsbG93ZWQgZm9yCisgICAgICAgICAgIGRlZmluaW5nIGhpZGRlbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuICovCisgICAgICAgIGlmIChrc2l6ZSA9PSAwIHx8IHN0cmNocihQeVN0cmluZ19BU19TVFJJTkcoa2V5KSArIDEsICc9JykgIT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbGxlZ2FsIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWUiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KICAgICAgICAgdG90YWxzaXplID0gKHAgLSBQeVN0cmluZ19BU19TVFJJTkcob3V0KSkgKyBrc2l6ZSArIDEgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2c2l6ZSArIDEgKyAxOwotICAgICAgICBpZiAodG90YWxzaXplID4gUHlTdHJpbmdfR0VUX1NJWkUob3V0KSkgewotICAgICAgICAgICAgaW50IG9mZnNldCA9IHAgLSBQeVN0cmluZ19BU19TVFJJTkcob3V0KTsKKyAgICAgICAgaWYgKHRvdGFsc2l6ZSA+IChzaXplX3QpUHlTdHJpbmdfR0VUX1NJWkUob3V0KSkgeworICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IHAgLSBQeVN0cmluZ19BU19TVFJJTkcob3V0KTsKICAgICAgICAgICAgIGlmIChfUHlTdHJpbmdfUmVzaXplKCZvdXQsIHRvdGFsc2l6ZSArIDEwMjQpKQogICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKICAgICAgICAgICAgIHAgPSBQeVN0cmluZ19BU19TVFJJTkcob3V0KSArIG9mZnNldDsKZGlmZiAtLWdpdCBhL1BDL193aW5yZWcuYyBiL1BDL193aW5yZWcuYwppbmRleCBlMTM5Y2NlLi5mMGY4ZGYzIDEwMDY0NAotLS0gYS9QQy9fd2lucmVnLmMKKysrIGIvUEMvX3dpbnJlZy5jCkBAIC02NDEsNyArNjQxLDcgQEAKICAgICAgICAgUHlIS0VZT2JqZWN0ICpwSCA9IChQeUhLRVlPYmplY3QgKilvYjsKICAgICAgICAgKnBIQU5ETEUgPSBwSC0+aGtleTsKICAgICB9Ci0gICAgZWxzZSBpZiAoUHlJbnRfQ2hlY2sob2IpIHx8IFB5TG9uZ19DaGVjayhvYikpIHsKKyAgICBlbHNlIGlmIChfUHlBbnlJbnRfQ2hlY2sob2IpKSB7CiAgICAgICAgIC8qIFdlIGFsc28gc3VwcG9ydCBpbnRlZ2VycyAqLwogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICAqcEhBTkRMRSA9IChIS0VZKVB5TG9uZ19Bc1ZvaWRQdHIob2IpOwpAQCAtNzUzLDggKzc1Myw3IEBACiAgICAgUHlfc3NpemVfdCBpLGo7CiAgICAgc3dpdGNoICh0eXApIHsKICAgICAgICAgY2FzZSBSRUdfRFdPUkQ6Ci0gICAgICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSAmJgotICAgICAgICAgICAgICAgICEoUHlJbnRfQ2hlY2sodmFsdWUpIHx8IFB5TG9uZ19DaGVjayh2YWx1ZSkpKQorICAgICAgICAgICAgaWYgKHZhbHVlICE9IFB5X05vbmUgJiYgIV9QeUFueUludF9DaGVjayh2YWx1ZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICAgICAgKnJldERhdGFCdWYgPSAoQllURSAqKVB5TWVtX05FVyhEV09SRCwgMSk7CiAgICAgICAgICAgICBpZiAoKnJldERhdGFCdWY9PU5VTEwpewpkaWZmIC0tZ2l0IGEvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTcuMS5zbG4gYi9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnNsbgppbmRleCBlMjA1ZDI1Li5mZjUyNTBjIDEwMDY0NAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnNsbgorKysgYi9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnNsbgpAQCAtMSwyMSArMSwyMSBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gOC4wMA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luaW5zdCIsICJ3aW5pbnN0LTcuMS52Y3Byb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotCVByb2plY3RTZWN0aW9uKFByb2plY3REZXBlbmRlbmNpZXMpID0gcG9zdFByb2plY3QNCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotR2xvYmFsDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uKSA9IHByZVNvbHV0aW9uDQotCQlEZWJ1ZyA9IERlYnVnDQotCQlSZWxlYXNlID0gUmVsZWFzZQ0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Zy5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWcuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2UuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlHbG9iYWxzKSA9IHBvc3RTb2x1dGlvbg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oRXh0ZW5zaWJpbGl0eUFkZElucykgPSBwb3N0U29sdXRpb24NCi0JRW5kR2xvYmFsU2VjdGlvbg0KLUVuZEdsb2JhbA0KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDguMDAKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luaW5zdCIsICJ3aW5pbnN0LTcuMS52Y3Byb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iCisJUHJvamVjdFNlY3Rpb24oUHJvamVjdERlcGVuZGVuY2llcykgPSBwb3N0UHJvamVjdAorCUVuZFByb2plY3RTZWN0aW9uCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvbikgPSBwcmVTb2x1dGlvbgorCQlEZWJ1ZyA9IERlYnVnCisJCVJlbGVhc2UgPSBSZWxlYXNlCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb24pID0gcG9zdFNvbHV0aW9uCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZS5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlHbG9iYWxzKSA9IHBvc3RTb2x1dGlvbgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKEV4dGVuc2liaWxpdHlBZGRJbnMpID0gcG9zdFNvbHV0aW9uCisJRW5kR2xvYmFsU2VjdGlvbgorRW5kR2xvYmFsCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtNy4xLnZjcHJvaiBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC03LjEudmNwcm9qCmluZGV4IDMwZGFhZTkuLjFjZTJiZjEgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC03LjEudmNwcm9qCisrKyBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC03LjEudmNwcm9qCkBAIC0xLDIxNCArMSwyMTQgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI3LjEwIg0KLQlOYW1lPSJ3aW5pbnN0Ig0KLQlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotCVJvb3ROYW1lc3BhY2U9Indpbmluc3QiDQotCVNjY1Byb2plY3ROYW1lPSIiDQotCVNjY0xvY2FsUGF0aD0iIj4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIi8+DQotCTwvUGxhdGZvcm1zPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1yZWxlYXNlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJSW5saW5lRnVuY3Rpb25FeHBhbnNpb249IjEiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cLi5cemxpYi0xLjIuMyINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO05ERUJVRztfV0lORE9XUyINCi0JCQkJU3RyaW5nUG9vbGluZz0iVFJVRSINCi0JCQkJUnVudGltZUxpYnJhcnk9IjIiDQotCQkJCUVuYWJsZUZ1bmN0aW9uTGV2ZWxMaW5raW5nPSJUUlVFIg0KLQkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMiINCi0JCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIuXHRlbXAtcmVsZWFzZS93aW5pbnN0LnBjaCINCi0JCQkJQXNzZW1ibGVyTGlzdGluZ0xvY2F0aW9uPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1yZWxlYXNlLyINCi0JCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9Ii5cdGVtcC1yZWxlYXNlLyINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx6bGliLTEuMi4zXHpsaWIubGliIGltYWdlaGxwLmxpYiBjb21jdGwzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTcuMS5leGUiDQotCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIg0KLQkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIg0KLQkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTYucGRiIg0KLQkJCQlTdWJTeXN0ZW09IjIiDQotCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01JRExUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlNa1R5cExpYkNvbXBhdGlibGU9IlRSVUUiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSINCi0JCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiDQotCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIg0KLQkJCQlDdWx0dXJlPSIxMDMxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRXcmFwcGVyR2VuZXJhdG9yVG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQXV4aWxpYXJ5TWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQk8L0NvbmZpZ3VyYXRpb24+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KLQkJCU91dHB1dERpcmVjdG9yeT0iLlwuIg0KLQkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx0ZW1wLWRlYnVnIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCVVzZU9mTUZDPSIwIg0KLQkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSINCi0JCQlDaGFyYWN0ZXJTZXQ9IjIiPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCU9wdGltaXphdGlvbj0iMCINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlwuLlx6bGliLTEuMi4xIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLWRlYnVnL3dpbmluc3QucGNoIg0KLQkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtZGVidWcvIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjEiDQotCQkJCUNvbXBpbGVBcz0iMCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNMaW5rZXJUb29sIg0KLQkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSIuLlwuLlwuLlx6bGliLTEuMi4xXHpsaWIubGliIGltYWdlaGxwLmxpYiBjb21jdGwzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTcuMV9kLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJUUlVFIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi93aW5pbnN0LnRsYiINCi0JCQkJSGVhZGVyRmlsZU5hbWU9IiIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzEiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJEZXBsb3ltZW50VG9vbCIvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFdyYXBwZXJHZW5lcmF0b3JUb29sIi8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4NCi0JCTwvQ29uZmlndXJhdGlvbj4NCi0JPC9Db25maWd1cmF0aW9ucz4NCi0JPFJlZmVyZW5jZXM+DQotCTwvUmVmZXJlbmNlcz4NCi0JPEZpbGVzPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iZXh0cmFjdC5jIj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iaW5zdGFsbC5jIj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4NCi0JCQkJCTxUb29sDQotCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJCQlPcHRpbWl6YXRpb249IjEiDQotCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIg0KLQkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiI+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIi8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWxlDQotCQkJCVJlbGF0aXZlUGF0aD0iaW5zdGFsbC5yYyI+DQotCQkJPC9GaWxlPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCI+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJhcmNoaXZlLmgiPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQkJPEZpbHRlcg0KLQkJCU5hbWU9IlJlc291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIj4NCi0JCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IlB5dGhvblBvd2VyZWQuYm1wIj4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JPC9GaWxlcz4NCi0JPEdsb2JhbHM+DQotCTwvR2xvYmFscz4NCi08L1Zpc3VhbFN0dWRpb1Byb2plY3Q+DQorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iV2luZG93cy0xMjUyIj8+Cis8VmlzdWFsU3R1ZGlvUHJvamVjdAorCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIgorCVZlcnNpb249IjcuMTAiCisJTmFtZT0id2luaW5zdCIKKwlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iCisJUm9vdE5hbWVzcGFjZT0id2luaW5zdCIKKwlTY2NQcm9qZWN0TmFtZT0iIgorCVNjY0xvY2FsUGF0aD0iIj4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIi8+CisJPC9QbGF0Zm9ybXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1yZWxlYXNlIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIxIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cLi5cemxpYi0xLjIuMyIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7TkRFQlVHO19XSU5ET1dTIgorCQkJCVN0cmluZ1Bvb2xpbmc9IlRSVUUiCisJCQkJUnVudGltZUxpYnJhcnk9IjIiCisJCQkJRW5hYmxlRnVuY3Rpb25MZXZlbExpbmtpbmc9IlRSVUUiCisJCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjIiCisJCQkJUHJlY29tcGlsZWRIZWFkZXJGaWxlPSIuXHRlbXAtcmVsZWFzZS93aW5pbnN0LnBjaCIKKwkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249Ii5cdGVtcC1yZWxlYXNlLyIKKwkJCQlPYmplY3RGaWxlPSIuXHRlbXAtcmVsZWFzZS8iCisJCQkJUHJvZ3JhbURhdGFCYXNlRmlsZU5hbWU9Ii5cdGVtcC1yZWxlYXNlLyIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJUUlVFIgorCQkJCUNvbXBpbGVBcz0iMCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiCisJCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iLi5cLi5cLi5cemxpYi0xLjIuM1x6bGliLmxpYiBpbWFnZWhscC5saWIgY29tY3RsMzIubGliIgorCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTcuMS5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIxIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIgorCQkJCVByb2dyYW1EYXRhYmFzZUZpbGU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QtNi5wZGIiCisJCQkJU3ViU3lzdGVtPSIyIgorCQkJCVRhcmdldE1hY2hpbmU9IjEiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNSURMVG9vbCIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iTkRFQlVHIgorCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0iVFJVRSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJVGFyZ2V0RW52aXJvbm1lbnQ9IjEiCisJCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LnRsYiIKKwkJCQlIZWFkZXJGaWxlTmFtZT0iIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiIKKwkJCUludGVybWVkaWF0ZURpcmVjdG9yeT0iLlx0ZW1wLWRlYnVnIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJGQUxTRSIKKwkJCUNoYXJhY3RlclNldD0iMiI+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIwIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cLi5cemxpYi0xLjIuMSIKKwkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19XSU5ET1dTIgorCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIgorCQkJCVVzZVByZWNvbXBpbGVkSGVhZGVyPSIyIgorCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLWRlYnVnL3dpbmluc3QucGNoIgorCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iLlx0ZW1wLWRlYnVnLyIKKwkJCQlPYmplY3RGaWxlPSIuXHRlbXAtZGVidWcvIgorCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtZGVidWcvIgorCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9IlRSVUUiCisJCQkJRGVidWdJbmZvcm1hdGlvbkZvcm1hdD0iMSIKKwkJCQlDb21waWxlQXM9IjAiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNMaW5rZXJUb29sIgorCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9Ii4uXC4uXC4uXHpsaWItMS4yLjFcemxpYi5saWIgaW1hZ2VobHAubGliIGNvbWN0bDMyLmxpYiIKKwkJCQlPdXRwdXRGaWxlPSIuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC03LjFfZC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0iVFJVRSIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciCisJCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJUUlVFIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0iVFJVRSIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSIKKwkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi93aW5pbnN0LnRsYiIKKwkJCQlIZWFkZXJGaWxlTmFtZT0iIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUG9zdEJ1aWxkRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVMaW5rRXZlbnRUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyIKKwkJCQlDdWx0dXJlPSIxMDMxIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIi8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBdXhpbGlhcnlNYW5hZ2VkV3JhcHBlckdlbmVyYXRvclRvb2wiLz4KKwkJPC9Db25maWd1cmF0aW9uPgorCTwvQ29uZmlndXJhdGlvbnM+CisJPFJlZmVyZW5jZXM+CisJPC9SZWZlcmVuY2VzPgorCTxGaWxlcz4KKwkJPEZpbHRlcgorCQkJTmFtZT0iU291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ij4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSJleHRyYWN0LmMiPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlPcHRpbWl6YXRpb249IjEiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIi8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiCisJCQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iaW5zdGFsbC5jIj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiI+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJT3B0aW1pemF0aW9uPSIxIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiIvPgorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+CisJCQkJPEZpbGVDb25maWd1cmF0aW9uCisJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIj4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIgorCQkJCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Imluc3RhbGwucmMiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iSGVhZGVyIEZpbGVzIgorCQkJRmlsdGVyPSJoO2hwcDtoeHg7aG07aW5sIj4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSJhcmNoaXZlLmgiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwkJPEZpbHRlcgorCQkJTmFtZT0iUmVzb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSI+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iUHl0aG9uUG93ZXJlZC5ibXAiPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnNsbiBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnNsbgppbmRleCAyNWYxNmNmLi4xZGVjOGEyIDEwMDY0NAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtOC5zbG4KKysrIGIvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTguc2xuCkBAIC0xLDE5ICsxLDE5IEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA5LjAwDQotIyBWaXN1YWwgU3R1ZGlvIDIwMDUNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIndpbmluc3QiLCAid2luaW5zdC04LnZjcHJvaiIsICJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSINCi1FbmRQcm9qZWN0DQotR2xvYmFsDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQotCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQotCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMg0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbg0KLQkJSGlkZVNvbHV0aW9uTm9kZSA9IEZBTFNFDQotCUVuZEdsb2JhbFNlY3Rpb24NCi1FbmRHbG9iYWwNCitNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA5LjAwCisjIFZpc3VhbCBTdHVkaW8gMjAwNQorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5pbnN0IiwgIndpbmluc3QtOC52Y3Byb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iCitFbmRQcm9qZWN0CitHbG9iYWwKKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uQ29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwcmVTb2x1dGlvbgorCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyCisJCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyCisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCUVuZEdsb2JhbFNlY3Rpb24KKwlHbG9iYWxTZWN0aW9uKFNvbHV0aW9uUHJvcGVydGllcykgPSBwcmVTb2x1dGlvbgorCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UKKwlFbmRHbG9iYWxTZWN0aW9uCitFbmRHbG9iYWwKZGlmZiAtLWdpdCBhL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnZjcHJvaiBiL1BDL2JkaXN0X3dpbmluc3Qvd2luaW5zdC04LnZjcHJvagppbmRleCAwMTQ3ZDFiLi42OWI4NmEzIDEwMDY0NAotLS0gYS9QQy9iZGlzdF93aW5pbnN0L3dpbmluc3QtOC52Y3Byb2oKKysrIGIvUEMvYmRpc3Rfd2luaW5zdC93aW5pbnN0LTgudmNwcm9qCkBAIC0xLDMyMCArMSwzMjAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IldpbmRvd3MtMTI1MiI/Pg0KLTxWaXN1YWxTdHVkaW9Qcm9qZWN0DQotCVByb2plY3RUeXBlPSJWaXN1YWwgQysrIg0KLQlWZXJzaW9uPSI4LjAwIg0KLQlOYW1lPSJ3aW5pbnN0Ig0KLQlQcm9qZWN0R1VJRD0ie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotCVJvb3ROYW1lc3BhY2U9Indpbmluc3QiDQotCT4NCi0JPFBsYXRmb3Jtcz4NCi0JCTxQbGF0Zm9ybQ0KLQkJCU5hbWU9IldpbjMyIg0KLQkJLz4NCi0JPC9QbGF0Zm9ybXM+DQotCTxUb29sRmlsZXM+DQotCTwvVG9vbEZpbGVzPg0KLQk8Q29uZmlndXJhdGlvbnM+DQotCQk8Q29uZmlndXJhdGlvbg0KLQkJCU5hbWU9IlJlbGVhc2V8V2luMzIiDQotCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZCINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1yZWxlYXNlIg0KLQkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIg0KLQkJCUluaGVyaXRlZFByb3BlcnR5U2hlZXRzPSIkKFZDSW5zdGFsbERpcilWQ1Byb2plY3REZWZhdWx0c1xVcGdyYWRlRnJvbVZDNzEudnNwcm9wcyINCi0JCQlVc2VPZk1GQz0iMCINCi0JCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiDQotCQkJQ2hhcmFjdGVyU2V0PSIyIg0KLQkJCT4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUJ1aWxkRXZlbnRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDdXN0b21CdWlsZFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1hNTERhdGFHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNXZWJTZXJ2aWNlUHJveHlHZW5lcmF0b3JUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNNSURMVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyINCi0JCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCVRhcmdldEVudmlyb25tZW50PSIxIg0KLQkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QudGxiIg0KLQkJCQlIZWFkZXJGaWxlTmFtZT0iIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCi0JCQkJT3B0aW1pemF0aW9uPSIxIg0KLQkJCQlJbmxpbmVGdW5jdGlvbkV4cGFuc2lvbj0iMSINCi0JCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxNb2R1bGVzXHpsaWIiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1MiDQotCQkJCVN0cmluZ1Bvb2xpbmc9InRydWUiDQotCQkJCVJ1bnRpbWVMaWJyYXJ5PSIyIg0KLQkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLXJlbGVhc2Uvd2luaW5zdC5wY2giDQotCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iLlx0ZW1wLXJlbGVhc2UvIg0KLQkJCQlPYmplY3RGaWxlPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtcmVsZWFzZS8iDQotCQkJCVdhcm5pbmdMZXZlbD0iMyINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlDb21waWxlQXM9IjAiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmFnZWRSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUmVzb3VyY2VDb21waWxlclRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciDQotCQkJCUN1bHR1cmU9IjEwMzEiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1ByZUxpbmtFdmVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0xpbmtlclRvb2wiDQotCQkJCUFkZGl0aW9uYWxEZXBlbmRlbmNpZXM9ImltYWdlaGxwLmxpYiBjb21jdGwzMi5saWIiDQotCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTguZXhlIg0KLQkJCQlMaW5rSW5jcmVtZW50YWw9IjEiDQotCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSINCi0JCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyINCi0JCQkJUHJvZ3JhbURhdGFiYXNlRmlsZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC02LnBkYiINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQkJPENvbmZpZ3VyYXRpb24NCi0JCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCi0JCQlPdXRwdXREaXJlY3Rvcnk9Ii5cLiINCi0JCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1kZWJ1ZyINCi0JCQlDb25maWd1cmF0aW9uVHlwZT0iMSINCi0JCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcxLnZzcHJvcHMiDQotCQkJVXNlT2ZNRkM9IjAiDQotCQkJQVRMTWluaW1pemVzQ1J1blRpbWVMaWJyYXJ5VXNhZ2U9ImZhbHNlIg0KLQkJCUNoYXJhY3RlclNldD0iMiINCi0JCQk+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTUlETFRvb2wiDQotCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciDQotCQkJCU1rVHlwTGliQ29tcGF0aWJsZT0idHJ1ZSINCi0JCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIg0KLQkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSINCi0JCQkJVHlwZUxpYnJhcnlOYW1lPSIuXC4vd2luaW5zdC50bGIiDQotCQkJCUhlYWRlckZpbGVOYW1lPSIiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQlPcHRpbWl6YXRpb249IjAiDQotCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cTW9kdWxlc1x6bGliIg0KLQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iV0lOMzI7X0RFQlVHO19XSU5ET1dTIg0KLQkJCQlSdW50aW1lTGlicmFyeT0iMiINCi0JCQkJVXNlUHJlY29tcGlsZWRIZWFkZXI9IjAiDQotCQkJCVByZWNvbXBpbGVkSGVhZGVyRmlsZT0iLlx0ZW1wLWRlYnVnL3dpbmluc3QucGNoIg0KLQkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1kZWJ1Zy8iDQotCQkJCVByb2dyYW1EYXRhQmFzZUZpbGVOYW1lPSIuXHRlbXAtZGVidWcvIg0KLQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSINCi0JCQkJV2FybmluZ0xldmVsPSIzIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjEiDQotCQkJCUNvbXBpbGVBcz0iMCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTWFuYWdlZFJlc291cmNlQ29tcGlsZXJUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNSZXNvdXJjZUNvbXBpbGVyVG9vbCINCi0JCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Il9ERUJVRyINCi0JCQkJQ3VsdHVyZT0iMTAzMSINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDTGlua2VyVG9vbCINCi0JCQkJQWRkaXRpb25hbERlcGVuZGVuY2llcz0iaW1hZ2VobHAubGliIGNvbWN0bDMyLmxpYiINCi0JCQkJT3V0cHV0RmlsZT0iLi5cLi5cbGliXGRpc3R1dGlsc1xjb21tYW5kL3dpbmluc3QtOF9kLmV4ZSINCi0JCQkJTGlua0luY3JlbWVudGFsPSIyIg0KLQkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiDQotCQkJCUlnbm9yZURlZmF1bHRMaWJyYXJ5TmFtZXM9IkxJQkMiDQotCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSINCi0JCQkJU3ViU3lzdGVtPSIyIg0KLQkJCQlUYXJnZXRNYWNoaW5lPSIxIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNBTGlua1Rvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIg0KLQkJCS8+DQotCQkJPFRvb2wNCi0JCQkJTmFtZT0iVkNGeENvcFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCINCi0JCQkvPg0KLQkJCTxUb29sDQotCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiDQotCQkJLz4NCi0JCQk8VG9vbA0KLQkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCINCi0JCQkvPg0KLQkJPC9Db25maWd1cmF0aW9uPg0KLQk8L0NvbmZpZ3VyYXRpb25zPg0KLQk8UmVmZXJlbmNlcz4NCi0JPC9SZWZlcmVuY2VzPg0KLQk8RmlsZXM+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iU291cmNlIEZpbGVzIg0KLQkJCUZpbHRlcj0iY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJleHRyYWN0LmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJpbnN0YWxsLmMiDQotCQkJCT4NCi0JCQkJPEZpbGVDb25maWd1cmF0aW9uDQotCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KLQkJCQkJPg0KLQkJCQkJPFRvb2wNCi0JCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KLQkJCQkJCU9wdGltaXphdGlvbj0iMSINCi0JCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiDQotCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiINCi0JCQkJCS8+DQotCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQotCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KLQkJCQkJTmFtZT0iRGVidWd8V2luMzIiDQotCQkJCQk+DQotCQkJCQk8VG9vbA0KLQkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQotCQkJCQkJT3B0aW1pemF0aW9uPSIwIg0KLQkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiINCi0JCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIg0KLQkJCQkJCUJyb3dzZUluZm9ybWF0aW9uPSIxIg0KLQkJCQkJLz4NCi0JCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJpbnN0YWxsLnJjIg0KLQkJCQk+DQotCQkJPC9GaWxlPg0KLQkJCTxGaWx0ZXINCi0JCQkJTmFtZT0iemxpYiINCi0JCQkJPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcYWRsZXIzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIg0KLQkJCQkJPg0KLQkJCQk8L0ZpbGU+DQotCQkJCTxGaWxlDQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZmYXN0LmMiDQotCQkJCQk+DQotCQkJCTwvRmlsZT4NCi0JCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmxhdGUuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCQk8RmlsZQ0KLQkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcenV0aWwuYyINCi0JCQkJCT4NCi0JCQkJPC9GaWxlPg0KLQkJCTwvRmlsdGVyPg0KLQkJPC9GaWx0ZXI+DQotCQk8RmlsdGVyDQotCQkJTmFtZT0iSGVhZGVyIEZpbGVzIg0KLQkJCUZpbHRlcj0iaDtocHA7aHh4O2htO2lubCINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJhcmNoaXZlLmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQk8L0ZpbHRlcj4NCi0JCTxGaWx0ZXINCi0JCQlOYW1lPSJSZXNvdXJjZSBGaWxlcyINCi0JCQlGaWx0ZXI9ImljbztjdXI7Ym1wO2RsZztyYzI7cmN0O2JpbjtyZ3M7Z2lmO2pwZztqcGVnO2pwZSINCi0JCQk+DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSJQeXRob25Qb3dlcmVkLmJtcCINCi0JCQkJPg0KLQkJCTwvRmlsZT4NCi0JCTwvRmlsdGVyPg0KLQk8L0ZpbGVzPg0KLQk8R2xvYmFscz4NCi0JPC9HbG9iYWxzPg0KLTwvVmlzdWFsU3R1ZGlvUHJvamVjdD4NCis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJXaW5kb3dzLTEyNTIiPz4KKzxWaXN1YWxTdHVkaW9Qcm9qZWN0CisJUHJvamVjdFR5cGU9IlZpc3VhbCBDKysiCisJVmVyc2lvbj0iOC4wMCIKKwlOYW1lPSJ3aW5pbnN0IgorCVByb2plY3RHVUlEPSJ7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfSIKKwlSb290TmFtZXNwYWNlPSJ3aW5pbnN0IgorCT4KKwk8UGxhdGZvcm1zPgorCQk8UGxhdGZvcm0KKwkJCU5hbWU9IldpbjMyIgorCQkvPgorCTwvUGxhdGZvcm1zPgorCTxUb29sRmlsZXM+CisJPC9Ub29sRmlsZXM+CisJPENvbmZpZ3VyYXRpb25zPgorCQk8Q29uZmlndXJhdGlvbgorCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCU91dHB1dERpcmVjdG9yeT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQiCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1yZWxlYXNlIgorCQkJQ29uZmlndXJhdGlvblR5cGU9IjEiCisJCQlJbmhlcml0ZWRQcm9wZXJ0eVNoZWV0cz0iJChWQ0luc3RhbGxEaXIpVkNQcm9qZWN0RGVmYXVsdHNcVXBncmFkZUZyb21WQzcxLnZzcHJvcHMiCisJCQlVc2VPZk1GQz0iMCIKKwkJCUFUTE1pbmltaXplc0NSdW5UaW1lTGlicmFyeVVzYWdlPSJmYWxzZSIKKwkJCUNoYXJhY3RlclNldD0iMiIKKwkJCT4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQcmVCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ3VzdG9tQnVpbGRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNYTUxEYXRhR2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViU2VydmljZVByb3h5R2VuZXJhdG9yVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTUlETFRvb2wiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9Ik5ERUJVRyIKKwkJCQlNa1R5cExpYkNvbXBhdGlibGU9InRydWUiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIgorCQkJCVRhcmdldEVudmlyb25tZW50PSIxIgorCQkJCVR5cGVMaWJyYXJ5TmFtZT0iLlwuLlwuLlxsaWJcZGlzdHV0aWxzXGNvbW1hbmQvd2luaW5zdC50bGIiCisJCQkJSGVhZGVyRmlsZU5hbWU9IiIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJT3B0aW1pemF0aW9uPSIxIgorCQkJCUlubGluZUZ1bmN0aW9uRXhwYW5zaW9uPSIxIgorCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9Ii4uXC4uXEluY2x1ZGUsLi5cLi5cTW9kdWxlc1x6bGliIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJXSU4zMjtOREVCVUc7X1dJTkRPV1MiCisJCQkJU3RyaW5nUG9vbGluZz0idHJ1ZSIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlFbmFibGVGdW5jdGlvbkxldmVsTGlua2luZz0idHJ1ZSIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9Ii5cdGVtcC1yZWxlYXNlL3dpbmluc3QucGNoIgorCQkJCUFzc2VtYmxlckxpc3RpbmdMb2NhdGlvbj0iLlx0ZW1wLXJlbGVhc2UvIgorCQkJCU9iamVjdEZpbGU9Ii5cdGVtcC1yZWxlYXNlLyIKKwkJCQlQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT0iLlx0ZW1wLXJlbGVhc2UvIgorCQkJCVdhcm5pbmdMZXZlbD0iMyIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJOREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJpbWFnZWhscC5saWIgY29tY3RsMzIubGliIgorCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTguZXhlIgorCQkJCUxpbmtJbmNyZW1lbnRhbD0iMSIKKwkJCQlTdXBwcmVzc1N0YXJ0dXBCYW5uZXI9InRydWUiCisJCQkJSWdub3JlRGVmYXVsdExpYnJhcnlOYW1lcz0iTElCQyIKKwkJCQlQcm9ncmFtRGF0YWJhc2VGaWxlPSIuXC4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LTYucGRiIgorCQkJCVN1YlN5c3RlbT0iMiIKKwkJCQlUYXJnZXRNYWNoaW5lPSIxIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBTGlua1Rvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01hbmlmZXN0VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWERDTWFrZVRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0JzY01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNGeENvcFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0FwcFZlcmlmaWVyVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDV2ViRGVwbG95bWVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Bvc3RCdWlsZEV2ZW50VG9vbCIKKwkJCS8+CisJCTwvQ29uZmlndXJhdGlvbj4KKwkJPENvbmZpZ3VyYXRpb24KKwkJCU5hbWU9IkRlYnVnfFdpbjMyIgorCQkJT3V0cHV0RGlyZWN0b3J5PSIuXC4iCisJCQlJbnRlcm1lZGlhdGVEaXJlY3Rvcnk9Ii5cdGVtcC1kZWJ1ZyIKKwkJCUNvbmZpZ3VyYXRpb25UeXBlPSIxIgorCQkJSW5oZXJpdGVkUHJvcGVydHlTaGVldHM9IiQoVkNJbnN0YWxsRGlyKVZDUHJvamVjdERlZmF1bHRzXFVwZ3JhZGVGcm9tVkM3MS52c3Byb3BzIgorCQkJVXNlT2ZNRkM9IjAiCisJCQlBVExNaW5pbWl6ZXNDUnVuVGltZUxpYnJhcnlVc2FnZT0iZmFsc2UiCisJCQlDaGFyYWN0ZXJTZXQ9IjIiCisJCQk+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlQnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ0N1c3RvbUJ1aWxkVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDWE1MRGF0YUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYlNlcnZpY2VQcm94eUdlbmVyYXRvclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ01JRExUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciCisJCQkJTWtUeXBMaWJDb21wYXRpYmxlPSJ0cnVlIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSIKKwkJCQlUYXJnZXRFbnZpcm9ubWVudD0iMSIKKwkJCQlUeXBlTGlicmFyeU5hbWU9Ii5cLi93aW5pbnN0LnRsYiIKKwkJCQlIZWFkZXJGaWxlTmFtZT0iIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iLi5cLi5cSW5jbHVkZSwuLlwuLlxNb2R1bGVzXHpsaWIiCisJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IldJTjMyO19ERUJVRztfV0lORE9XUyIKKwkJCQlSdW50aW1lTGlicmFyeT0iMiIKKwkJCQlVc2VQcmVjb21waWxlZEhlYWRlcj0iMCIKKwkJCQlQcmVjb21waWxlZEhlYWRlckZpbGU9Ii5cdGVtcC1kZWJ1Zy93aW5pbnN0LnBjaCIKKwkJCQlBc3NlbWJsZXJMaXN0aW5nTG9jYXRpb249Ii5cdGVtcC1kZWJ1Zy8iCisJCQkJT2JqZWN0RmlsZT0iLlx0ZW1wLWRlYnVnLyIKKwkJCQlQcm9ncmFtRGF0YUJhc2VGaWxlTmFtZT0iLlx0ZW1wLWRlYnVnLyIKKwkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSIKKwkJCQlXYXJuaW5nTGV2ZWw9IjMiCisJCQkJU3VwcHJlc3NTdGFydHVwQmFubmVyPSJ0cnVlIgorCQkJCURlYnVnSW5mb3JtYXRpb25Gb3JtYXQ9IjEiCisJCQkJQ29tcGlsZUFzPSIwIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5hZ2VkUmVzb3VyY2VDb21waWxlclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1Jlc291cmNlQ29tcGlsZXJUb29sIgorCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSJfREVCVUciCisJCQkJQ3VsdHVyZT0iMTAzMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDUHJlTGlua0V2ZW50VG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDTGlua2VyVG9vbCIKKwkJCQlBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPSJpbWFnZWhscC5saWIgY29tY3RsMzIubGliIgorCQkJCU91dHB1dEZpbGU9Ii4uXC4uXGxpYlxkaXN0dXRpbHNcY29tbWFuZC93aW5pbnN0LThfZC5leGUiCisJCQkJTGlua0luY3JlbWVudGFsPSIyIgorCQkJCVN1cHByZXNzU3RhcnR1cEJhbm5lcj0idHJ1ZSIKKwkJCQlJZ25vcmVEZWZhdWx0TGlicmFyeU5hbWVzPSJMSUJDIgorCQkJCUdlbmVyYXRlRGVidWdJbmZvcm1hdGlvbj0idHJ1ZSIKKwkJCQlTdWJTeXN0ZW09IjIiCisJCQkJVGFyZ2V0TWFjaGluZT0iMSIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDQUxpbmtUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNNYW5pZmVzdFRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1hEQ01ha2VUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNCc2NNYWtlVG9vbCIKKwkJCS8+CisJCQk8VG9vbAorCQkJCU5hbWU9IlZDRnhDb3BUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNBcHBWZXJpZmllclRvb2wiCisJCQkvPgorCQkJPFRvb2wKKwkJCQlOYW1lPSJWQ1dlYkRlcGxveW1lbnRUb29sIgorCQkJLz4KKwkJCTxUb29sCisJCQkJTmFtZT0iVkNQb3N0QnVpbGRFdmVudFRvb2wiCisJCQkvPgorCQk8L0NvbmZpZ3VyYXRpb24+CisJPC9Db25maWd1cmF0aW9ucz4KKwk8UmVmZXJlbmNlcz4KKwk8L1JlZmVyZW5jZXM+CisJPEZpbGVzPgorCQk8RmlsdGVyCisJCQlOYW1lPSJTb3VyY2UgRmlsZXMiCisJCQlGaWx0ZXI9ImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iZXh0cmFjdC5jIgorCQkJCT4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iUmVsZWFzZXxXaW4zMiIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCU9wdGltaXphdGlvbj0iMSIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24KKwkJCQkJTmFtZT0iRGVidWd8V2luMzIiCisJCQkJCT4KKwkJCQkJPFRvb2wKKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiCisJCQkJCQlPcHRpbWl6YXRpb249IjAiCisJCQkJCQlBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPSIiCisJCQkJCQlQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz0iIgorCQkJCQkJQnJvd3NlSW5mb3JtYXRpb249IjEiCisJCQkJCS8+CisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4KKwkJCTwvRmlsZT4KKwkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSJpbnN0YWxsLmMiCisJCQkJPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIgorCQkJCQk+CisJCQkJCTxUb29sCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIgorCQkJCQkJT3B0aW1pemF0aW9uPSIxIgorCQkJCQkJQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz0iIgorCQkJCQkJUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM9IiIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJCTxGaWxlQ29uZmlndXJhdGlvbgorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiIKKwkJCQkJPgorCQkJCQk8VG9vbAorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIKKwkJCQkJCU9wdGltaXphdGlvbj0iMCIKKwkJCQkJCUFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM9IiIKKwkJCQkJCVByZXByb2Nlc3NvckRlZmluaXRpb25zPSIiCisJCQkJCQlCcm93c2VJbmZvcm1hdGlvbj0iMSIKKwkJCQkJLz4KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Imluc3RhbGwucmMiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbHRlcgorCQkJCU5hbWU9InpsaWIiCisJCQkJPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGFkbGVyMzIuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxjcmMzMi5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5cTW9kdWxlc1x6bGliXGluZmZhc3QuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlxpbmZsYXRlLmMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZpbGUKKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxNb2R1bGVzXHpsaWJcaW5mdHJlZXMuYyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXE1vZHVsZXNcemxpYlx6dXRpbC5jIgorCQkJCQk+CisJCQkJPC9GaWxlPgorCQkJPC9GaWx0ZXI+CisJCTwvRmlsdGVyPgorCQk8RmlsdGVyCisJCQlOYW1lPSJIZWFkZXIgRmlsZXMiCisJCQlGaWx0ZXI9Img7aHBwO2h4eDtobTtpbmwiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iYXJjaGl2ZS5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJPC9GaWx0ZXI+CisJCTxGaWx0ZXIKKwkJCU5hbWU9IlJlc291cmNlIEZpbGVzIgorCQkJRmlsdGVyPSJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiCisJCQk+CisJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iUHl0aG9uUG93ZXJlZC5ibXAiCisJCQkJPgorCQkJPC9GaWxlPgorCQk8L0ZpbHRlcj4KKwk8L0ZpbGVzPgorCTxHbG9iYWxzPgorCTwvR2xvYmFscz4KKzwvVmlzdWFsU3R1ZGlvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbl9udC5yYyBiL1BDL3B5dGhvbl9udC5yYwppbmRleCAxOWJjYmRkLi4yYjJiZTNjIDEwMDY0NAotLS0gYS9QQy9weXRob25fbnQucmMKKysrIGIvUEMvcHl0aG9uX250LnJjCkBAIC02MSw3ICs2MSw3IEBACiAgICAgICAgICAgICBWQUxVRSAiRmlsZURlc2NyaXB0aW9uIiwgIlB5dGhvbiBDb3JlXDAiCiAgICAgICAgICAgICBWQUxVRSAiRmlsZVZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgogICAgICAgICAgICAgVkFMVUUgIkludGVybmFsTmFtZSIsICJQeXRob24gRExMXDAiCi0gICAgICAgICAgICBWQUxVRSAiTGVnYWxDb3B5cmlnaHQiLCAiQ29weXJpZ2h0IKkgMjAwMS0yMDE2IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBDb3B5cmlnaHQgqSAyMDAwIEJlT3Blbi5jb20uIENvcHlyaWdodCCpIDE5OTUtMjAwMSBDTlJJLiBDb3B5cmlnaHQgqSAxOTkxLTE5OTUgU01DLlwwIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgIkNvcHlyaWdodCCpIDIwMDEtMjAxNyBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gQ29weXJpZ2h0IKkgMjAwMCBCZU9wZW4uY29tLiBDb3B5cmlnaHQgqSAxOTk1LTIwMDEgQ05SSS4gQ29weXJpZ2h0IKkgMTk5MS0xOTk1IFNNQy5cMCIKICAgICAgICAgICAgIFZBTFVFICJPcmlnaW5hbEZpbGVuYW1lIiwgUFlUSE9OX0RMTF9OQU1FICJcMCIKICAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0TmFtZSIsICJQeXRob25cMCIKICAgICAgICAgICAgIFZBTFVFICJQcm9kdWN0VmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qIGIvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvagppbmRleCAxY2UxYTA0Li4xYjAyNGI5IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qCisrKyBiL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2oKQEAgLTYyLDcgKzYyLDcgQEAKICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KICAgICAgIDxBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPi4uXE1vZHVsZXNcZXhwYXQ7JShBZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzKTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5YTUxfTlM7WE1MX0RURDtCWVRFT1JERVI9MTIzNDtYTUxfQ09OVEVYVF9CWVRFUz0xMDI0O1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQztIQVZFX01FTU1PVkU7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTO1VTRV9QWUVYUEFUX0NBUEk7WE1MX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+CiAgICAgICA8QmFzZUFkZHJlc3M+MHgxRDEwMDAwMDwvQmFzZUFkZHJlc3M+CkBAIC04Nyw2ICs4Nyw3IEBACiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfZWxlbWVudHRyZWUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcbG9hZGxpYnJhcnkuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scm9sZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xleHBhdFx4bWx0b2suYyIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2ouZmlsdGVycyBiL1BDYnVpbGQvX2VsZW1lbnR0cmVlLnZjeHByb2ouZmlsdGVycwppbmRleCA2YWNkZjM1Li40NTk3ZWU1IDEwMDY0NAotLS0gYS9QQ2J1aWxkL19lbGVtZW50dHJlZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9fZWxlbWVudHRyZWUudmN4cHJvai5maWx0ZXJzCkBAIC0zMyw2ICszMyw5IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGxhdGluMXRhYi5oIj4KICAgICAgIDxGaWx0ZXI+SGVhZGVyIEZpbGVzPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGxvYWRsaWJyYXJ5LmMiPgorICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRcbWFjY29uZmlnLmgiPgogICAgICAgPEZpbHRlcj5IZWFkZXIgRmlsZXM8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGQuYmF0IGIvUENidWlsZC9idWlsZC5iYXQKaW5kZXggNzY2Mzc4Zi4uYjI2M2VjNyAxMDA2NDQKLS0tIGEvUENidWlsZC9idWlsZC5iYXQKKysrIGIvUENidWlsZC9idWlsZC5iYXQKQEAgLTEsMTQ3ICsxLDE0NCBAQAotQGVjaG8gb2ZmDQotZ290byBSdW4NCi06VXNhZ2UNCi1lY2hvLiV+bngwIFtmbGFncyBhbmQgYXJndW1lbnRzXSBbcXVvdGVkIE1TQnVpbGQgb3B0aW9uc10NCi1lY2hvLg0KLWVjaG8uQnVpbGQgQ1B5dGhvbiBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBSZXF1aXJlcyB0aGUgYXBwcm9wcmlhdGUNCi1lY2hvLnZlcnNpb24ocykgb2YgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gdG8gYmUgaW5zdGFsbGVkIChzZWUgcmVhZG1lLnR4dCkuDQotZWNoby5BbHNvIHJlcXVpcmVzIFN1YnZlcnNpb24gKHN2bi5leGUpIHRvIGJlIG9uIFBBVEggaWYgdGhlICctZScgZmxhZyBpcw0KLWVjaG8uZ2l2ZW4uDQotZWNoby4NCi1lY2hvLkFmdGVyIHRoZSBmbGFncyByZWNvZ25pemVkIGJ5IHRoaXMgc2NyaXB0LCB1cCB0byA5IGFyZ3VtZW50cyB0byBiZSBwYXNzZWQNCi1lY2hvLmRpcmVjdGx5IHRvIE1TQnVpbGQgbWF5IGJlIHBhc3NlZC4gIElmIHRoZSBhcmd1bWVudCBjb250YWlucyBhbiAnPScsIHRoZQ0KLWVjaG8uZW50aXJlIGFyZ3VtZW50IG11c3QgYmUgcXVvdGVkIChlLmcuIGAlfm54MCAiL3A6UGxhdGZvcm1Ub29sc2V0PXYxMDAiYCkNCi1lY2hvLg0KLWVjaG8uQXZhaWxhYmxlIGZsYWdzOg0KLWVjaG8uICAtaCAgRGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZQ0KLWVjaG8uICAtciAgVGFyZ2V0IFJlYnVpbGQgaW5zdGVhZCBvZiBCdWlsZA0KLWVjaG8uICAtZCAgU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERlYnVnDQotZWNoby4gIC1lICBCdWlsZCBleHRlcm5hbCBsaWJyYXJpZXMgZmV0Y2hlZCBieSBnZXRfZXh0ZXJuYWxzLmJhdA0KLWVjaG8uICAgICAgRXh0ZW5zaW9uIG1vZHVsZXMgdGhhdCBkZXBlbmQgb24gZXh0ZXJuYWwgbGlicmFyaWVzIHdpbGwgbm90IGF0dGVtcHQNCi1lY2hvLiAgICAgIHRvIGJ1aWxkIGlmIHRoaXMgZmxhZyBpcyBub3QgcHJlc2VudA0KLWVjaG8uICAtbSAgRW5hYmxlIHBhcmFsbGVsIGJ1aWxkDQotZWNoby4gIC1NICBEaXNhYmxlIHBhcmFsbGVsIGJ1aWxkIChkaXNhYmxlZCBieSBkZWZhdWx0KQ0KLWVjaG8uICAtdiAgSW5jcmVhc2VkIG91dHB1dCBtZXNzYWdlcw0KLWVjaG8uICAtayAgQXR0ZW1wdCB0byBraWxsIGFueSBydW5uaW5nIFB5dGhvbnMgYmVmb3JlIGJ1aWxkaW5nICh1c3VhbGx5IGRvbmUNCi1lY2hvLiAgICAgIGF1dG9tYXRpY2FsbHkgYnkgdGhlIHB5dGhvbmNvcmUgcHJvamVjdCkNCi1lY2hvLiAgLS1wZ28gICAgICAgICAgQnVpbGQgd2l0aCBQcm9maWxlLUd1aWRlZCBPcHRpbWl6YXRpb24uICBUaGlzIGZsYWcNCi1lY2hvLiAgICAgICAgICAgICAgICAgb3ZlcnJpZGVzIC1jIGFuZCAtZA0KLWVjaG8uDQotZWNoby5BdmFpbGFibGUgZmxhZ3MgdG8gYXZvaWQgYnVpbGRpbmcgY2VydGFpbiBtb2R1bGVzLg0KLWVjaG8uVGhlc2UgZmxhZ3MgaGF2ZSBubyBlZmZlY3QgaWYgJy1lJyBpcyBub3QgZ2l2ZW46DQotZWNoby4gIC0tbm8tc3NsICAgICAgRG8gbm90IGF0dGVtcHQgdG8gYnVpbGQgX3NzbA0KLWVjaG8uICAtLW5vLXRraW50ZXIgIERvIG5vdCBhdHRlbXB0IHRvIGJ1aWxkIFRraW50ZXINCi1lY2hvLiAgLS1uby1ic2RkYiAgICBEbyBub3QgYXR0ZW1wdCB0byBidWlsZCBfYnNkZGINCi1lY2hvLg0KLWVjaG8uQXZhaWxhYmxlIGFyZ3VtZW50czoNCi1lY2hvLiAgLWMgUmVsZWFzZSBefCBEZWJ1ZyBefCBQR0luc3RydW1lbnQgXnwgUEdVcGRhdGUNCi1lY2hvLiAgICAgU2V0IHRoZSBjb25maWd1cmF0aW9uIChkZWZhdWx0OiBSZWxlYXNlKQ0KLWVjaG8uICAtcCB4NjQgXnwgV2luMzINCi1lY2hvLiAgICAgU2V0IHRoZSBwbGF0Zm9ybSAoZGVmYXVsdDogV2luMzIpDQotZWNoby4gIC10IEJ1aWxkIF58IFJlYnVpbGQgXnwgQ2xlYW4gXnwgQ2xlYW5BbGwNCi1lY2hvLiAgICAgU2V0IHRoZSB0YXJnZXQgbWFudWFsbHkNCi1lY2hvLiAgLS1wZ28tam9iICBUaGUgam9iIHRvIHVzZSBmb3IgUEdPIHRyYWluaW5nOyBpbXBsaWVzIC0tcGdvDQotZWNoby4gICAgICAgICAgICAgKGRlZmF1bHQ6ICItbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvIikNCi1leGl0IC9iIDEyNw0KLQ0KLTpSdW4NCi1zZXRsb2NhbA0KLXNldCBwbGF0Zj1XaW4zMg0KLXNldCB2c19wbGF0Zj14ODYNCi1zZXQgY29uZj1SZWxlYXNlDQotc2V0IHRhcmdldD1CdWlsZA0KLXNldCBkaXI9JX5kcDANCi1zZXQgcGFyYWxsZWw9DQotc2V0IHZlcmJvc2U9L25vbG9nbyAvdjptDQotc2V0IGtpbGw9DQotc2V0IGRvX3Bnbz0NCi1zZXQgcGdvX2pvYj0tbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvDQotc2V0IG9uXzY0X2JpdD10cnVlDQotDQotcmVtIFRoaXMgbWF5IG5vdCBiZSAxMDAlIGFjY3VyYXRlLCBidXQgY2xvc2UgZW5vdWdoLg0KLWlmICIlUHJvZ3JhbUZpbGVzKHg4NiklIj09IiIgKHNldCBvbl82NF9iaXQ9ZmFsc2UpDQotDQotOkNoZWNrT3B0cw0KLWlmICIlfjEiPT0iLWgiIGdvdG8gVXNhZ2UNCi1pZiAiJX4xIj09Ii1jIiAoc2V0IGNvbmY9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgIiV+MSI9PSItcCIgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJX4xIj09Ii1yIiAoc2V0IHRhcmdldD1SZWJ1aWxkKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJX4xIj09Ii10IiAoc2V0IHRhcmdldD0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJX4xIj09Ii1kIiAoc2V0IGNvbmY9RGVidWcpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICIlfjEiPT0iLW0iIChzZXQgcGFyYWxsZWw9L20pICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICIlfjEiPT0iLU0iIChzZXQgcGFyYWxsZWw9KSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJX4xIj09Ii12IiAoc2V0IHZlcmJvc2U9L3Y6bikgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgIiV+MSI9PSItayIgKHNldCBraWxsPXRydWUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICIlfjEiPT0iLS1wZ28iIChzZXQgZG9fcGdvPXRydWUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICIlfjEiPT0iLS1wZ28tam9iIiAoc2V0IGRvX3Bnbz10cnVlKSAmIChzZXQgcGdvX2pvYj0lfjIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotcmVtIFRoZXNlIHVzZSB0aGUgYWN0dWFsIHByb3BlcnR5IG5hbWVzIHVzZWQgYnkgTVNCdWlsZC4gIFdlIGNvdWxkIGp1c3QgbGV0DQotcmVtIHRoZW0gaW4gdGhyb3VnaCB0aGUgZW52aXJvbm1lbnQsIGJ1dCB3ZSBzcGVjaWZ5IHRoZW0gb24gdGhlIGNvbW1hbmQgbGluZQ0KLXJlbSBhbnl3YXkgZm9yIHZpc2liaWxpdHkgc28gc2V0IGRlZmF1bHRzIGFmdGVyIHRoaXMNCi1pZiAiJX4xIj09Ii1lIiAoc2V0IEluY2x1ZGVFeHRlcm5hbHM9dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgIiV+MSI9PSItLW5vLXNzbCIgKHNldCBJbmNsdWRlU1NMPWZhbHNlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJX4xIj09Ii0tbm8tdGtpbnRlciIgKHNldCBJbmNsdWRlVGtpbnRlcj1mYWxzZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgIiV+MSI9PSItLW5vLWJzZGRiIiAoc2V0IEluY2x1ZGVCc2RkYj1mYWxzZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotDQotaWYgIiVJbmNsdWRlRXh0ZXJuYWxzJSI9PSIiIHNldCBJbmNsdWRlRXh0ZXJuYWxzPWZhbHNlDQotaWYgIiVJbmNsdWRlU1NMJSI9PSIiIHNldCBJbmNsdWRlU1NMPXRydWUNCi1pZiAiJUluY2x1ZGVUa2ludGVyJSI9PSIiIHNldCBJbmNsdWRlVGtpbnRlcj10cnVlDQotaWYgIiVJbmNsdWRlQnNkZGIlIj09IiIgc2V0IEluY2x1ZGVCc2RkYj10cnVlDQotDQotaWYgIiVJbmNsdWRlRXh0ZXJuYWxzJSI9PSJ0cnVlIiBjYWxsICIlZGlyJWdldF9leHRlcm5hbHMuYmF0Ig0KLQ0KLWlmICIlcGxhdGYlIj09Ing2NCIgKA0KLSAgICBpZiAiJW9uXzY0X2JpdCUiPT0idHJ1ZSIgKA0KLSAgICAgICAgcmVtIFRoaXMgb3VnaHQgdG8gYWx3YXlzIGJlIGNvcnJlY3QgdGhlc2UgZGF5cy4uLg0KLSAgICAgICAgc2V0IHZzX3BsYXRmPWFtZDY0DQotICAgICkgZWxzZSAoDQotICAgICAgICBpZiAiJWRvX3BnbyUiPT0idHJ1ZSIgKA0KLSAgICAgICAgICAgIGVjaG8uRVJST1I6IENhbm5vdCBjcm9zcy1jb21waWxlIHdpdGggUEdPDQotICAgICAgICAgICAgZWNoby4gICAgMzJiaXQgb3BlcmF0aW5nIHN5c3RlbSBkZXRlY3RlZCwgaWYgdGhpcyBpcyBpbmNvcnJlY3QsDQotICAgICAgICAgICAgZWNoby4gICAgbWFrZSBzdXJlIHRoZSBQcm9ncmFtRmlsZXMoeDg2XikgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgc2V0DQotICAgICAgICAgICAgZXhpdCAvYiAxDQotICAgICAgICApDQotICAgICAgICBzZXQgdnNfcGxhdGY9eDg2X2FtZDY0DQotICAgICkNCi0pDQotDQotcmVtIFNldHVwIHRoZSBlbnZpcm9ubWVudA0KLWNhbGwgIiVkaXIlZW52LmJhdCIgJXZzX3BsYXRmJSA+bnVsDQotDQotaWYgIiVraWxsJSI9PSJ0cnVlIiBjYWxsIDpLaWxsDQotDQotaWYgIiVkb19wZ28lIj09InRydWUiICgNCi0gICAgc2V0IGNvbmY9UEdJbnN0cnVtZW50DQotICAgIGNhbGwgOkJ1aWxkDQotICAgIGRlbCAvcyAiJWRpciVcKi5wZ2MiDQotICAgIGRlbCAvcyAiJWRpciVcLi5cTGliXCoucHljIg0KLSAgICBlY2hvIG9uDQotICAgIGNhbGwgIiVkaXIlXC4uXHB5dGhvbi5iYXQiICVwZ29fam9iJQ0KLSAgICBAZWNobyBvZmYNCi0gICAgY2FsbCA6S2lsbA0KLSAgICBzZXQgY29uZj1QR1VwZGF0ZQ0KLSkNCi1nb3RvIEJ1aWxkDQotDQotOktpbGwNCi1lY2hvIG9uDQotbXNidWlsZCAiJWRpciVccHl0aG9uY29yZS52Y3hwcm9qIiAvdDpLaWxsUHl0aG9uICV2ZXJib3NlJV4NCi0gL3A6Q29uZmlndXJhdGlvbj0lY29uZiUgL3A6UGxhdGZvcm09JXBsYXRmJV4NCi0gL3A6S2lsbFB5dGhvbj10cnVlDQotDQotQGVjaG8gb2ZmDQotZ290byA6ZW9mDQotDQotOkJ1aWxkDQotcmVtIENhbGwgb24gTVNCdWlsZCB0byBkbyB0aGUgd29yaywgZWNobyB0aGUgY29tbWFuZC4NCi1yZW0gUGFzc2luZyAlMS05IGlzIG5vdCB0aGUgcHJlZmVycmVkIG9wdGlvbiwgYnV0IGFyZ3VtZW50IHBhcnNpbmcgaW4NCi1yZW0gYmF0Y2ggaXMsIHNoYWxsIHdlIHNheSwgImxhY2tsdXN0ZXIiDQotZWNobyBvbg0KLW1zYnVpbGQgIiVkaXIlcGNidWlsZC5wcm9qIiAvdDoldGFyZ2V0JSAlcGFyYWxsZWwlICV2ZXJib3NlJV4NCi0gL3A6Q29uZmlndXJhdGlvbj0lY29uZiUgL3A6UGxhdGZvcm09JXBsYXRmJV4NCi0gL3A6SW5jbHVkZUV4dGVybmFscz0lSW5jbHVkZUV4dGVybmFscyVeDQotIC9wOkluY2x1ZGVTU0w9JUluY2x1ZGVTU0wlIC9wOkluY2x1ZGVUa2ludGVyPSVJbmNsdWRlVGtpbnRlciVeDQotIC9wOkluY2x1ZGVCc2RkYj0lSW5jbHVkZUJzZGRiJV4NCi0gJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCi0NCi1AZWNobyBvZmYNCi1nb3RvIDplb2YNCitAZWNobyBvZmYKK2dvdG8gUnVuCis6VXNhZ2UKK2VjaG8uJX5ueDAgW2ZsYWdzIGFuZCBhcmd1bWVudHNdIFtxdW90ZWQgTVNCdWlsZCBvcHRpb25zXQorZWNoby4KK2VjaG8uQnVpbGQgQ1B5dGhvbiBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBSZXF1aXJlcyB0aGUgYXBwcm9wcmlhdGUKK2VjaG8udmVyc2lvbihzKSBvZiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyB0byBiZSBpbnN0YWxsZWQgKHNlZSByZWFkbWUudHh0KS4KK2VjaG8uCitlY2hvLkFmdGVyIHRoZSBmbGFncyByZWNvZ25pemVkIGJ5IHRoaXMgc2NyaXB0LCB1cCB0byA5IGFyZ3VtZW50cyB0byBiZSBwYXNzZWQKK2VjaG8uZGlyZWN0bHkgdG8gTVNCdWlsZCBtYXkgYmUgcGFzc2VkLiAgSWYgdGhlIGFyZ3VtZW50IGNvbnRhaW5zIGFuICc9JywgdGhlCitlY2hvLmVudGlyZSBhcmd1bWVudCBtdXN0IGJlIHF1b3RlZCAoZS5nLiBgJX5ueDAgIi9wOlBsYXRmb3JtVG9vbHNldD12MTAwImApLgorZWNoby5BbHRlcm5hdGl2ZWx5IHlvdSBjYW4gcHV0IGV4dHJhIGZsYWdzIGZvciBNU0J1aWxkIGluIGEgZmlsZSBuYW1lZCAKK2VjaG8uYG1zYnVpbGQucnNwYCBpbiB0aGUgYFBDYnVpbGRgIGRpcmVjdG9yeSwgb25lIGZsYWcgcGVyIGxpbmUuIFRoaXMgZmlsZQorZWNoby53aWxsIGJlIHBpY2tlZCBhdXRvbWF0aWNhbGx5IGJ5IE1TQnVpbGQuIEZsYWdzIHB1dCBpbiB0aGlzIGZpbGUgZG9lcyBub3QKK2VjaG8ubmVlZCB0byBiZSBxdW90ZWQuIFlvdSBjYW4gc3RpbGwgdXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbnNpZGUgdGhlIAorZWNoby5yZXNwb25zZSBmaWxlLgorZWNoby4KK2VjaG8uQXZhaWxhYmxlIGZsYWdzOgorZWNoby4gIC1oICBEaXNwbGF5IHRoaXMgaGVscCBtZXNzYWdlCitlY2hvLiAgLXIgIFRhcmdldCBSZWJ1aWxkIGluc3RlYWQgb2YgQnVpbGQKK2VjaG8uICAtZCAgU2V0IHRoZSBjb25maWd1cmF0aW9uIHRvIERlYnVnCitlY2hvLiAgLWUgIEJ1aWxkIGV4dGVybmFsIGxpYnJhcmllcyBmZXRjaGVkIGJ5IGdldF9leHRlcm5hbHMuYmF0CitlY2hvLiAgICAgIEV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgZGVwZW5kIG9uIGV4dGVybmFsIGxpYnJhcmllcyB3aWxsIG5vdCBhdHRlbXB0CitlY2hvLiAgICAgIHRvIGJ1aWxkIGlmIHRoaXMgZmxhZyBpcyBub3QgcHJlc2VudAorZWNoby4gIC1tICBFbmFibGUgcGFyYWxsZWwgYnVpbGQKK2VjaG8uICAtTSAgRGlzYWJsZSBwYXJhbGxlbCBidWlsZCAoZGlzYWJsZWQgYnkgZGVmYXVsdCkKK2VjaG8uICAtdiAgSW5jcmVhc2VkIG91dHB1dCBtZXNzYWdlcworZWNoby4gIC1rICBBdHRlbXB0IHRvIGtpbGwgYW55IHJ1bm5pbmcgUHl0aG9ucyBiZWZvcmUgYnVpbGRpbmcgKHVzdWFsbHkgZG9uZQorZWNoby4gICAgICBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBweXRob25jb3JlIHByb2plY3QpCitlY2hvLiAgLS1wZ28gICAgICAgICAgQnVpbGQgd2l0aCBQcm9maWxlLUd1aWRlZCBPcHRpbWl6YXRpb24uICBUaGlzIGZsYWcKK2VjaG8uICAgICAgICAgICAgICAgICBvdmVycmlkZXMgLWMgYW5kIC1kCitlY2hvLgorZWNoby5BdmFpbGFibGUgZmxhZ3MgdG8gYXZvaWQgYnVpbGRpbmcgY2VydGFpbiBtb2R1bGVzLgorZWNoby5UaGVzZSBmbGFncyBoYXZlIG5vIGVmZmVjdCBpZiAnLWUnIGlzIG5vdCBnaXZlbjoKK2VjaG8uICAtLW5vLXNzbCAgICAgIERvIG5vdCBhdHRlbXB0IHRvIGJ1aWxkIF9zc2wKK2VjaG8uICAtLW5vLXRraW50ZXIgIERvIG5vdCBhdHRlbXB0IHRvIGJ1aWxkIFRraW50ZXIKK2VjaG8uICAtLW5vLWJzZGRiICAgIERvIG5vdCBhdHRlbXB0IHRvIGJ1aWxkIF9ic2RkYgorZWNoby4KK2VjaG8uQXZhaWxhYmxlIGFyZ3VtZW50czoKK2VjaG8uICAtYyBSZWxlYXNlIF58IERlYnVnIF58IFBHSW5zdHJ1bWVudCBefCBQR1VwZGF0ZQorZWNoby4gICAgIFNldCB0aGUgY29uZmlndXJhdGlvbiAoZGVmYXVsdDogUmVsZWFzZSkKK2VjaG8uICAtcCB4NjQgXnwgV2luMzIKK2VjaG8uICAgICBTZXQgdGhlIHBsYXRmb3JtIChkZWZhdWx0OiBXaW4zMikKK2VjaG8uICAtdCBCdWlsZCBefCBSZWJ1aWxkIF58IENsZWFuIF58IENsZWFuQWxsCitlY2hvLiAgICAgU2V0IHRoZSB0YXJnZXQgbWFudWFsbHkKK2VjaG8uICAtLXBnby1qb2IgIFRoZSBqb2IgdG8gdXNlIGZvciBQR08gdHJhaW5pbmc7IGltcGxpZXMgLS1wZ28KK2VjaG8uICAgICAgICAgICAgIChkZWZhdWx0OiAiLW0gdGVzdC5yZWdydGVzdCAtLXBnbyIpCitleGl0IC9iIDEyNworCis6UnVuCitzZXRsb2NhbAorc2V0IHBsYXRmPVdpbjMyCitzZXQgY29uZj1SZWxlYXNlCitzZXQgdGFyZ2V0PUJ1aWxkCitzZXQgZGlyPSV+ZHAwCitzZXQgcGFyYWxsZWw9CitzZXQgdmVyYm9zZT0vbm9sb2dvIC92Om0KK3NldCBraWxsPQorc2V0IGRvX3Bnbz0KK3NldCBwZ29fam9iPS1tIHRlc3QucmVncnRlc3QgLS1wZ28KKworOkNoZWNrT3B0cworaWYgIiV+MSI9PSItaCIgZ290byBVc2FnZQoraWYgIiV+MSI9PSItYyIgKHNldCBjb25mPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiV+MSI9PSItcCIgKHNldCBwbGF0Zj0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlfjEiPT0iLXIiIChzZXQgdGFyZ2V0PVJlYnVpbGQpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiV+MSI9PSItdCIgKHNldCB0YXJnZXQ9JTIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJX4xIj09Ii1kIiAoc2V0IGNvbmY9RGVidWcpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiV+MSI9PSItbSIgKHNldCBwYXJhbGxlbD0vbSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJX4xIj09Ii1NIiAoc2V0IHBhcmFsbGVsPSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJX4xIj09Ii12IiAoc2V0IHZlcmJvc2U9L3Y6bikgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJX4xIj09Ii1rIiAoc2V0IGtpbGw9dHJ1ZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJX4xIj09Ii0tcGdvIiAoc2V0IGRvX3Bnbz10cnVlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlfjEiPT0iLS1wZ28tam9iIiAoc2V0IGRvX3Bnbz10cnVlKSAmIChzZXQgcGdvX2pvYj0lfjIpICYgc2hpZnQgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCityZW0gVGhlc2UgdXNlIHRoZSBhY3R1YWwgcHJvcGVydHkgbmFtZXMgdXNlZCBieSBNU0J1aWxkLiAgV2UgY291bGQganVzdCBsZXQKK3JlbSB0aGVtIGluIHRocm91Z2ggdGhlIGVudmlyb25tZW50LCBidXQgd2Ugc3BlY2lmeSB0aGVtIG9uIHRoZSBjb21tYW5kIGxpbmUKK3JlbSBhbnl3YXkgZm9yIHZpc2liaWxpdHkgc28gc2V0IGRlZmF1bHRzIGFmdGVyIHRoaXMKK2lmICIlfjEiPT0iLWUiIChzZXQgSW5jbHVkZUV4dGVybmFscz10cnVlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlfjEiPT0iLS1uby1zc2wiIChzZXQgSW5jbHVkZVNTTD1mYWxzZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJX4xIj09Ii0tbm8tdGtpbnRlciIgKHNldCBJbmNsdWRlVGtpbnRlcj1mYWxzZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJX4xIj09Ii0tbm8tYnNkZGIiIChzZXQgSW5jbHVkZUJzZGRiPWZhbHNlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKKworaWYgIiVJbmNsdWRlRXh0ZXJuYWxzJSI9PSIiIHNldCBJbmNsdWRlRXh0ZXJuYWxzPWZhbHNlCitpZiAiJUluY2x1ZGVTU0wlIj09IiIgc2V0IEluY2x1ZGVTU0w9dHJ1ZQoraWYgIiVJbmNsdWRlVGtpbnRlciUiPT0iIiBzZXQgSW5jbHVkZVRraW50ZXI9dHJ1ZQoraWYgIiVJbmNsdWRlQnNkZGIlIj09IiIgc2V0IEluY2x1ZGVCc2RkYj10cnVlCisKK2lmICIlSW5jbHVkZUV4dGVybmFscyUiPT0idHJ1ZSIgY2FsbCAiJWRpciVnZXRfZXh0ZXJuYWxzLmJhdCIKKworaWYgIiVkb19wZ28lIiBFUVUgInRydWUiIGlmICIlcGxhdGYlIiBFUVUgIng2NCIgKAorICAgIGlmICIlUFJPQ0VTU09SX0FSQ0hJVEVXNjQzMiUiIE5FUSAiQU1ENjQiIGlmICIlUFJPQ0VTU09SX0FSQ0hJVEVDVFVSRSUiIE5FUSAiQU1ENjQiICgKKyAgICAgICAgZWNoby5FUlJPUjogQ2Fubm90IGNyb3NzLWNvbXBpbGUgd2l0aCBQR08gCisgICAgICAgIGVjaG8uICAgICAgIDMyYml0IG9wZXJhdGluZyBzeXN0ZW0gZGV0ZWN0ZWQuIEVuc3VyZSB5b3VyIFBST0NFU1NPUl9BUkNISVRFQ1RVUkUKKyAgICAgICAgZWNoby4gICAgICAgYW5kIFBST0NFU1NPUl9BUkNISVRFVzY0MzIgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBjb3JyZWN0LgorICAgICAgICBleGl0IC9iIDEgCisgICAgKQorKQorCitpZiAiJUdJVCUiIEVRVSAiIiBzZXQgR0lUPWdpdAoraWYgZXhpc3QgIiVHSVQlIiBzZXQgR0lUUHJvcGVydHk9L3A6R0lUPSIlR0lUJSIKKworcmVtIFNldHVwIHRoZSBlbnZpcm9ubWVudAorY2FsbCAiJWRpciVmaW5kX21zYnVpbGQuYmF0IiAlTVNCVUlMRCUKK2lmIEVSUk9STEVWRUwgMSAoY2FsbCAiJWRpciVlbnYuYmF0IiAmJiBzZXQgTVNCVUlMRD1tc2J1aWxkKQorCitpZiAiJWtpbGwlIj09InRydWUiIGNhbGwgOktpbGwKKworaWYgIiVkb19wZ28lIj09InRydWUiICgKKyAgICBzZXQgY29uZj1QR0luc3RydW1lbnQKKyAgICBjYWxsIDpCdWlsZCAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQorICAgIGRlbCAvcyAiJWRpciVcKi5wZ2MiCisgICAgZGVsIC9zICIlZGlyJVwuLlxMaWJcKi5weWMiCisgICAgZWNobyBvbgorICAgIGNhbGwgIiVkaXIlXC4uXHB5dGhvbi5iYXQiICVwZ29fam9iJQorICAgIEBlY2hvIG9mZgorICAgIGNhbGwgOktpbGwKKyAgICBzZXQgY29uZj1QR1VwZGF0ZQorICAgIHNldCB0YXJnZXQ9QnVpbGQKKykKK2dvdG8gQnVpbGQKKworOktpbGwKK2VjaG8gb24KKyVNU0JVSUxEJSAiJWRpciVccHl0aG9uY29yZS52Y3hwcm9qIiAvdDpLaWxsUHl0aG9uICV2ZXJib3NlJV4KKyAvcDpDb25maWd1cmF0aW9uPSVjb25mJSAvcDpQbGF0Zm9ybT0lcGxhdGYlXgorIC9wOktpbGxQeXRob249dHJ1ZQorCitAZWNobyBvZmYKK2dvdG8gOmVvZgorCis6QnVpbGQKK3JlbSBDYWxsIG9uIE1TQnVpbGQgdG8gZG8gdGhlIHdvcmssIGVjaG8gdGhlIGNvbW1hbmQuCityZW0gUGFzc2luZyAlMS05IGlzIG5vdCB0aGUgcHJlZmVycmVkIG9wdGlvbiwgYnV0IGFyZ3VtZW50IHBhcnNpbmcgaW4KK3JlbSBiYXRjaCBpcywgc2hhbGwgd2Ugc2F5LCAibGFja2x1c3RlciIKK2VjaG8gb24KKyVNU0JVSUxEJSAiJWRpciVwY2J1aWxkLnByb2oiIC90OiV0YXJnZXQlICVwYXJhbGxlbCUgJXZlcmJvc2UlXgorIC9wOkNvbmZpZ3VyYXRpb249JWNvbmYlIC9wOlBsYXRmb3JtPSVwbGF0ZiVeCisgL3A6SW5jbHVkZUV4dGVybmFscz0lSW5jbHVkZUV4dGVybmFscyVeCisgL3A6SW5jbHVkZVNTTD0lSW5jbHVkZVNTTCUgL3A6SW5jbHVkZVRraW50ZXI9JUluY2x1ZGVUa2ludGVyJV4KKyAvcDpJbmNsdWRlQnNkZGI9JUluY2x1ZGVCc2RkYiUgJUdJVFByb3BlcnR5JV4KKyAlMSAlMiAlMyAlNCAlNSAlNiAlNyAlOCAlOQorCitAZWNobyBvZmYKK2dvdG8gOmVvZgpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9lbnYuYmF0IGIvUENidWlsZC9idWlsZF9lbnYuYmF0CmluZGV4IDAxMDI0Y2YuLjRjNjdhZTMgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGRfZW52LmJhdAorKysgYi9QQ2J1aWxkL2J1aWxkX2Vudi5iYXQKQEAgLTEgKzEgQEAKLUAlY29tc3BlYyUgL2sgZW52LmJhdCAlKg0KK0AlY29tc3BlYyUgL2sgZW52LmJhdCAlKgpkaWZmIC0tZ2l0IGEvUENidWlsZC9idWlsZF9wZ28uYmF0IGIvUENidWlsZC9idWlsZF9wZ28uYmF0CmluZGV4IDg3MmMzODIuLmYwMmE2ZTUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvYnVpbGRfcGdvLmJhdAorKysgYi9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKQEAgLTEsNiArMSw2IEBACi1AZWNobyBvZmYNCi1lY2hvLkRlcHJlY2F0aW9uV2FybmluZzoNCi1lY2hvLiAgICBUaGlzIHNjcmlwdCBpcyBkZXByZWNhdGVkLCB1c2UgYGJ1aWxkLmJhdCAtLXBnb2AgaW5zdGVhZC4NCi1lY2hvLg0KLQ0KLWNhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtLXBnbyAlKg0KK0BlY2hvIG9mZgorZWNoby5EZXByZWNhdGlvbldhcm5pbmc6CitlY2hvLiAgICBUaGlzIHNjcmlwdCBpcyBkZXByZWNhdGVkLCB1c2UgYGJ1aWxkLmJhdCAtLXBnb2AgaW5zdGVhZC4KK2VjaG8uCisKK2NhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtLXBnbyAlKgpkaWZmIC0tZ2l0IGEvUENidWlsZC9jbGVhbi5iYXQgYi9QQ2J1aWxkL2NsZWFuLmJhdAppbmRleCA3ODUxN2QyLi42MTQ0YzcxIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2NsZWFuLmJhdAorKysgYi9QQ2J1aWxkL2NsZWFuLmJhdApAQCAtMSw1ICsxLDUgQEAKLUBlY2hvIG9mZg0KLXJlbSBBIGJhdGNoIHByb2dyYW0gdG8gY2xlYW4gYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24sDQotcmVtIGp1c3QgZm9yIGNvbnZlbmllbmNlLg0KLQ0KLWNhbGwgJX5kcDBidWlsZC5iYXQgLXQgQ2xlYW4gJSoNCitAZWNobyBvZmYKK3JlbSBBIGJhdGNoIHByb2dyYW0gdG8gY2xlYW4gYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24sCityZW0ganVzdCBmb3IgY29udmVuaWVuY2UuCisKK2NhbGwgJX5kcDBidWlsZC5iYXQgLXQgQ2xlYW4gJSoKZGlmZiAtLWdpdCBhL1BDYnVpbGQvZW52LmJhdCBiL1BDYnVpbGQvZW52LmJhdAppbmRleCAxNzE5Y2MxLi4yZTY3ZjhjIDEwMDY0NAotLS0gYS9QQ2J1aWxkL2Vudi5iYXQKKysrIGIvUENidWlsZC9lbnYuYmF0CkBAIC0xLDIzICsxLDIzIEBACi1AZWNobyBvZmYNCi1yZW0gVGhpcyBzY3JpcHQgYWRkcyB0aGUgbGF0ZXN0IGF2YWlsYWJsZSB0b29scyB0byB0aGUgcGF0aCBmb3IgdGhlIGN1cnJlbnQNCi1yZW0gY29tbWFuZCB3aW5kb3cuIEhvd2V2ZXIsIGFsbCBidWlsZHMgb2YgUHl0aG9uIHNob3VsZCBpZ25vcmUgdGhlIHZlcnNpb24NCi1yZW0gb2YgdGhlIHRvb2xzIG9uIFBBVEggYW5kIHVzZSBQbGF0Zm9ybVRvb2xzZXQgaW5zdGVhZCwgd2hpY2ggc2hvdWxkDQotcmVtIGFsd2F5cyBiZSAndjkwJy4NCi1yZW0NCi1yZW0gVG8gYnVpbGQgUHl0aG9uIHdpdGggYSBuZXdlciB0b29sc2V0LCBwYXNzICIvcDpQbGF0Zm9ybVRvb2xzZXQ9djEwMCIgKG9yDQotcmVtICd2MTEwJywgJ3YxMjAnIG9yICd2MTQwJykgdG8gdGhlIGJ1aWxkIHNjcmlwdC4gIE5vdGUgdGhhdCBubyB0b29sc2V0DQotcmVtIG90aGVyIHRoYW4gJ3Y5MCcgaXMgc3VwcG9ydGVkIQ0KLQ0KLWVjaG8gQnVpbGQgZW52aXJvbm1lbnRzOiB4ODYsIGFtZDY0LCB4ODZfYW1kNjQNCi1lY2hvLg0KLQ0KLXJlbSBTZXQgdXAgdGhlIHY5MCB0b29scyBmaXJzdC4gIFRoaXMgaXMgbW9zdGx5IG5lZWRlZCB0byBhbGxvdyBQR0luc3RydW1lbnQNCi1yZW0gYnVpbGRzIHRvIGZpbmQgdGhlIFBHTyBETEwuICBEbyBpdCBmaXJzdCBzbyB0aGUgbmV3ZXIgTVNCdWlsZCBpcyBmb3VuZA0KLXJlbSBiZWZvcmUgdGhlIG9uZSBmcm9tIHY5MCAodmN2YXJzYWxsLmJhdCBwcmVwZW5kcyB0byBQQVRIKS4NCi1jYWxsICIlVlM5MENPTU5UT09MUyUuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiAlKg0KLQ0KLXNldCBWU1RPT0xTPSVWUzE0MENPTU5UT09MUyUNCi1pZiAiJVZTVE9PTFMlIj09IiIgc2V0IFZTVE9PTFM9JVZTMTIwQ09NTlRPT0xTJQ0KLWlmICIlVlNUT09MUyUiPT0iIiBzZXQgVlNUT09MUz0lVlMxMTBDT01OVE9PTFMlDQotaWYgIiVWU1RPT0xTJSI9PSIiIHNldCBWU1RPT0xTPSVWUzEwMENPTU5UT09MUyUNCi1jYWxsICIlVlNUT09MUyUuLlwuLlxWQ1x2Y3ZhcnNhbGwuYmF0IiAlKg0KK0BlY2hvIG9mZgorcmVtIFRoaXMgc2NyaXB0IGFkZHMgdGhlIGxhdGVzdCBhdmFpbGFibGUgdG9vbHMgdG8gdGhlIHBhdGggZm9yIHRoZSBjdXJyZW50CityZW0gY29tbWFuZCB3aW5kb3cuIEhvd2V2ZXIsIGFsbCBidWlsZHMgb2YgUHl0aG9uIHNob3VsZCBpZ25vcmUgdGhlIHZlcnNpb24KK3JlbSBvZiB0aGUgdG9vbHMgb24gUEFUSCBhbmQgdXNlIFBsYXRmb3JtVG9vbHNldCBpbnN0ZWFkLCB3aGljaCBzaG91bGQKK3JlbSBhbHdheXMgYmUgJ3Y5MCcuCityZW0KK3JlbSBUbyBidWlsZCBQeXRob24gd2l0aCBhIG5ld2VyIHRvb2xzZXQsIHBhc3MgIi9wOlBsYXRmb3JtVG9vbHNldD12MTAwIiAob3IKK3JlbSAndjExMCcsICd2MTIwJyBvciAndjE0MCcpIHRvIHRoZSBidWlsZCBzY3JpcHQuICBOb3RlIHRoYXQgbm8gdG9vbHNldAorcmVtIG90aGVyIHRoYW4gJ3Y5MCcgaXMgc3VwcG9ydGVkIQorCitlY2hvIEJ1aWxkIGVudmlyb25tZW50czogeDg2LCBhbWQ2NCwgeDg2X2FtZDY0CitlY2hvLgorCityZW0gU2V0IHVwIHRoZSB2OTAgdG9vbHMgZmlyc3QuICBUaGlzIGlzIG1vc3RseSBuZWVkZWQgdG8gYWxsb3cgUEdJbnN0cnVtZW50CityZW0gYnVpbGRzIHRvIGZpbmQgdGhlIFBHTyBETEwuICBEbyBpdCBmaXJzdCBzbyB0aGUgbmV3ZXIgTVNCdWlsZCBpcyBmb3VuZAorcmVtIGJlZm9yZSB0aGUgb25lIGZyb20gdjkwICh2Y3ZhcnNhbGwuYmF0IHByZXBlbmRzIHRvIFBBVEgpLgorY2FsbCAiJVZTOTBDT01OVE9PTFMlLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgJSoKKworc2V0IFZTVE9PTFM9JVZTMTQwQ09NTlRPT0xTJQoraWYgIiVWU1RPT0xTJSI9PSIiIHNldCBWU1RPT0xTPSVWUzEyMENPTU5UT09MUyUKK2lmICIlVlNUT09MUyUiPT0iIiBzZXQgVlNUT09MUz0lVlMxMTBDT01OVE9PTFMlCitpZiAiJVZTVE9PTFMlIj09IiIgc2V0IFZTVE9PTFM9JVZTMTAwQ09NTlRPT0xTJQorY2FsbCAiJVZTVE9PTFMlLi5cLi5cVkNcdmN2YXJzYWxsLmJhdCIgJSoKZGlmZiAtLWdpdCBhL1BDYnVpbGQvZmluZF9tc2J1aWxkLmJhdCBiL1BDYnVpbGQvZmluZF9tc2J1aWxkLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NmJjOTczCi0tLSAvZGV2L251bGwKKysrIGIvUENidWlsZC9maW5kX21zYnVpbGQuYmF0CkBAIC0wLDAgKzEsNTIgQEAKK0ByZW0KK0ByZW0gU2VhcmNoZXMgZm9yIE1TQnVpbGQuZXhlLiBUaGlzIGlzIHRoZSBvbmx5IHRvb2wgd2UgbmVlZCB0byBpbml0aWF0ZQorQHJlbSBhIGJ1aWxkLCBzbyB3ZSBubyBsb25nZXIgc2VhcmNoIGZvciB0aGUgZnVsbCBWQyB0b29sc2V0LgorQHJlbQorQHJlbSBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8gbW9kaWZ5IHRoZSBzdGF0ZSBvZiB0aGUgY2FsbGVyIChzcGVjaWZpY2FsbHkKK0ByZW0gdGhlIE1TQlVJTEQgdmFyaWFibGUpLCBzbyB3ZSBkbyBub3QgdXNlIHNldGxvY2FsIG9yIGVjaG8sIGFuZCBhdm9pZAorQHJlbSBjaGFuZ2luZyBhbnkgb3RoZXIgcGVyc2lzdGVudCBzdGF0ZS4KK0ByZW0KKworQHJlbSBObyBhcmd1bWVudHMgcHJvdmlkZWQgbWVhbnMgZG8gZnVsbCBzZWFyY2gKK0BpZiAnJTEnIEVRVSAnJyBnb3RvIDpiZWdpbl9zZWFyY2gKKworQHJlbSBPbmUgYXJndW1lbnQgbWF5IGJlIHRoZSBmdWxsIHBhdGguIFVzZSBhIGdvdG8gc28gd2UgZG9uJ3QgdHJ5IHRvCitAcmVtIHBhcnNlIHRoZSBuZXh0IGlmIHN0YXRlbWVudCAtIGluY29ycmVjdCBxdW90aW5nIGluIHRoZSBtdWx0aS1hcmcKK0ByZW0gY2FzZSBjYW4gY2F1c2UgdXMgdG8gYnJlYWsgaW1tZWRpYXRlbHkuCitAaWYgJyUyJyBFUVUgJycgZ290byA6b25lX2FyZworCitAcmVtIEVudGlyZSBjb21tYW5kIGxpbmUgbWF5IHJlcHJlc2VudCB0aGUgZnVsbCBwYXRoIGlmIHF1b3RpbmcgZmFpbGVkLgorQGlmIGV4aXN0ICIlKiIgKHNldCBNU0JVSUxEPSIlKiIpICYgKHNldCBfUHlfTVNCdWlsZF9Tb3VyY2U9ZW52aXJvbm1lbnQpICYgZ290byA6Zm91bmQKK0Bnb3RvIDpiZWdpbl9zZWFyY2gKKworOm9uZV9hcmcKK0BpZiBleGlzdCAiJX4xIiAoc2V0IE1TQlVJTEQ9IiV+MSIpICYgKHNldCBfUHlfTVNCdWlsZF9Tb3VyY2U9ZW52aXJvbm1lbnQpICYgZ290byA6Zm91bmQKKworOmJlZ2luX3NlYXJjaAorQHNldCBNU0JVSUxEPQorCitAcmVtIElmIG1zYnVpbGQuZXhlIGlzIG9uIHRoZSBQQVRILCBhc3N1bWUgdGhhdCB0aGUgdXNlciB3YW50cyB0aGF0IG9uZS4KK0Btc2J1aWxkIC92ZXJzaW9uID4gbnVsIDI+JjEKK0BpZiBOT1QgRVJST1JMRVZFTCA5MDA5IHNldCBNU0JVSUxEPW1zYnVpbGQgJiAoc2V0IF9QeV9NU0J1aWxkX1NvdXJjZT1QQVRIKSAmIGdvdG8gOmZvdW5kCisKK0ByZW0gVlMgMjAxNSBhbmQgZWFybGllciByZWdpc3RlciBNU0J1aWxkIHNlcGFyYXRlbHksIHNvIHdlIGNhbiBmaW5kIGl0LgorQHJlbSBQcmVmZXIgTVNCdWlsZCAxNC4wIG92ZXIgTVNCdWlsZCAxNS4wLCBzaW5jZSB0aGUgbGF0dGVyIG1heSBub3QgYmUgYWJsZSB0byBmaW5kIGEgVkMxNCBpbnN0YWxsLgorQHJlZyBxdWVyeSAiSEtFWV9MT0NBTF9NQUNISU5FXFNPRlRXQVJFXE1pY3Jvc29mdFxNU0J1aWxkXFRvb2xzVmVyc2lvbnNcMTQuMCIgL3YgTVNCdWlsZFRvb2xzUGF0aCAvcmVnOjMyID5udWwgMj5udWwKK0BpZiBOT1QgRVJST1JMRVZFTCAxIEBmb3IgL0YgInRva2Vucz0xLDIqIiAlJWkgaW4gKCdyZWcgcXVlcnkgIkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcTVNCdWlsZFxUb29sc1ZlcnNpb25zXDE0LjAiIC92IE1TQnVpbGRUb29sc1BhdGggL3JlZzozMicpIERPIEAoCisgICAgQGlmICIlJWkiPT0iTVNCdWlsZFRvb2xzUGF0aCIgQGlmIGV4aXN0ICIlJWtcbXNidWlsZC5leGUiIEAoc2V0IE1TQlVJTEQ9IiUla1xtc2J1aWxkLmV4ZSIpCispCitAaWYgZXhpc3QgJU1TQlVJTEQlIChzZXQgX1B5X01TQnVpbGRfU291cmNlPXJlZ2lzdHJ5KSAmIGdvdG8gOmZvdW5kCisKK0ByZW0gVlMgMjAxNyBzZXRzIGV4YWN0bHkgb25lIGluc3RhbGwgYXMgdGhlICJtYWluIiBpbnN0YWxsLCBzbyB3ZSBtYXkgZmluZCBNU0J1aWxkIGluIHRoZXJlLgorQHJlZyBxdWVyeSAiSEtFWV9MT0NBTF9NQUNISU5FXFNPRlRXQVJFXE1pY3Jvc29mdFxWaXN1YWxTdHVkaW9cU3hTXFZTNyIgL3YgMTUuMCAvcmVnOjMyID5udWwgMj5udWwKK0BpZiBOT1QgRVJST1JMRVZFTCAxIEBmb3IgL0YgInRva2Vucz0xLDIqIiAlJWkgaW4gKCdyZWcgcXVlcnkgIkhLRVlfTE9DQUxfTUFDSElORVxTT0ZUV0FSRVxNaWNyb3NvZnRcVmlzdWFsU3R1ZGlvXFN4U1xWUzciIC92IDE1LjAgL3JlZzozMicpIERPIEAoCisgICAgQGlmICIlJWkiPT0iMTUuMCIgQGlmIGV4aXN0ICIlJWtcTVNCdWlsZFwxNS4wXEJpblxtc2J1aWxkLmV4ZSIgQChzZXQgTVNCVUlMRD0iJSVrXE1TQnVpbGRcMTUuMFxCaW5cbXNidWlsZC5leGUiKQorKQorQGlmIGV4aXN0ICVNU0JVSUxEJSAoc2V0IF9QeV9NU0J1aWxkX1NvdXJjZT1WaXN1YWwgU3R1ZGlvIDIwMTcgcmVnaXN0cnkpICYgZ290byA6Zm91bmQKKworCitAZXhpdCAvYiAxCisKKzpmb3VuZAorQGVjaG8gVXNpbmcgJU1TQlVJTEQlIChmb3VuZCBpbiB0aGUgJV9QeV9NU0J1aWxkX1NvdXJjZSUpCitAc2V0IF9QeV9NU0J1aWxkX1NvdXJjZT0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvZmluZF9weXRob24uYmF0IGIvUENidWlsZC9maW5kX3B5dGhvbi5iYXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEzYTBmNQotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvZmluZF9weXRob24uYmF0CkBAIC0wLDAgKzEsNzUgQEAKK0ByZW0KK0ByZW0gU2VhcmNoZXMgZm9yIHB5dGhvbi5leGUgYW5kIG1heSBkb3dubG9hZCBhIHByaXZhdGUgY29weSBmcm9tIG51Z2V0LgorQHJlbQorQHJlbSBUaGlzIGZpbGUgaXMgc3VwcG9zZWQgdG8gbW9kaWZ5IHRoZSBzdGF0ZSBvZiB0aGUgY2FsbGVyIChzcGVjaWZpY2FsbHkKK0ByZW0gdGhlIE1TQlVJTEQgdmFyaWFibGUpLCBzbyB3ZSBkbyBub3QgdXNlIHNldGxvY2FsIG9yIGVjaG8sIGFuZCBhdm9pZAorQHJlbSBjaGFuZ2luZyBhbnkgb3RoZXIgcGVyc2lzdGVudCBzdGF0ZS4KK0ByZW0KKworQHJlbSBObyBhcmd1bWVudHMgcHJvdmlkZWQgbWVhbnMgZG8gZnVsbCBzZWFyY2gKK0BpZiAnJTEnIEVRVSAnJyBnb3RvIDpiZWdpbl9zZWFyY2gKKworQHJlbSBPbmUgYXJndW1lbnQgbWF5IGJlIHRoZSBmdWxsIHBhdGguIFVzZSBhIGdvdG8gc28gd2UgZG9uJ3QgdHJ5IHRvCitAcmVtIHBhcnNlIHRoZSBuZXh0IGlmIHN0YXRlbWVudCAtIGluY29ycmVjdCBxdW90aW5nIGluIHRoZSBtdWx0aS1hcmcKK0ByZW0gY2FzZSBjYW4gY2F1c2UgdXMgdG8gYnJlYWsgaW1tZWRpYXRlbHkuCitAaWYgJyUyJyBFUVUgJycgZ290byA6b25lX2FyZworCitAcmVtIEVudGlyZSBjb21tYW5kIGxpbmUgbWF5IHJlcHJlc2VudCB0aGUgZnVsbCBwYXRoIGlmIHF1b3RpbmcgZmFpbGVkLgorQGlmIGV4aXN0ICIlKiIgKHNldCBQWVRIT049IiUqIikgJiAoc2V0IF9QeV9QeXRob25fU291cmNlPWZyb20gZW52aXJvbm1lbnQpICYgZ290byA6Zm91bmQKK0Bnb3RvIDpiZWdpbl9zZWFyY2gKKworOm9uZV9hcmcKK0BpZiBleGlzdCAiJX4xIiAoc2V0IFBZVEhPTj0iJX4xIikgJiAoc2V0IF9QeV9QeXRob25fU291cmNlPWZyb20gZW52aXJvbm1lbnQpICYgZ290byA6Zm91bmQKKworOmJlZ2luX3NlYXJjaAorQHNldCBQWVRIT049CisKK0BzZXQgX1B5X0VYVEVSTkFMU19ESVI9JUVYVEVSTkFMX0RJUiUKK0BpZiAiJV9QeV9FWFRFUk5BTFNfRElSJSI9PSIiIChzZXQgX1B5X0VYVEVSTkFMU19ESVI9JX5kcDBcLi5cZXh0ZXJuYWxzKQorCitAcmVtIElmIHdlIGhhdmUgUHl0aG9uIGluIGV4dGVybmFscywgdXNlIHRoYXQgb25lCitAaWYgZXhpc3QgIiVfUHlfRVhURVJOQUxTX0RJUiVccHl0aG9ueDg2XHRvb2xzXHB5dGhvbi5leGUiIChzZXQgUFlUSE9OPSIlX1B5X0VYVEVSTkFMU19ESVIlXHB5dGhvbng4Nlx0b29sc1xweXRob24uZXhlIikgJiAoc2V0IF9QeV9QeXRob25fU291cmNlPWZvdW5kIGluIGV4dGVybmFscyBkaXJlY3RvcnkpICYgZ290byA6Zm91bmQKKworQHJlbSBJZiBIT1NUX1BZVEhPTiBpcyByZWNlbnQgZW5vdWdoLCB1c2UgdGhhdAorQGlmIE5PVCAiJUhPU1RfUFlUSE9OJSI9PSIiIEAlSE9TVF9QWVRIT04lIC1jICJpbXBvcnQgc3lzOyBhc3NlcnQgc3lzLnZlcnNpb25faW5mb1s6Ml0gPj0gKDMsIDYpIiA+bnVsIDI+bnVsICYmIChzZXQgUFlUSE9OPSIlSE9TVF9QWVRIT04lIikgJiYgKHNldCBfUHlfUHl0aG9uX1NvdXJjZT1mb3VuZCBhcyBIT1NUX1BZVEhPTikgJiYgZ290byA6Zm91bmQKKworQHJlbSBJZiBweS5leGUgZmluZHMgYSByZWNlbnQgZW5vdWdoIHZlcnNpb24sIHVzZSB0aGF0IG9uZQorQHB5IC0zLjYgLVYgPm51bCAyPiYxICYmIChzZXQgUFlUSE9OPXB5IC0zLjYpICYmIChzZXQgX1B5X1B5dGhvbl9Tb3VyY2U9Zm91bmQgd2l0aCBweS5leGUpICYmIGdvdG8gOmZvdW5kCisKK0BpZiBOT1QgZXhpc3QgIiVfUHlfRVhURVJOQUxTX0RJUiUiIG1rZGlyICIlX1B5X0VYVEVSTkFMU19ESVIlIgorQHNldCBfUHlfTlVHRVQ9JU5VR0VUJQorQHNldCBfUHlfTlVHRVRfVVJMPSVOVUdFVF9VUkwlCitAc2V0IF9QeV9IT1NUX1BZVEhPTj0lSE9TVF9QWVRIT04lCitAaWYgIiVfUHlfSE9TVF9QWVRIT04lIj09IiIgc2V0IF9QeV9IT1NUX1BZVEhPTj1weQorQGlmICIlX1B5X05VR0VUJSI9PSIiIChzZXQgX1B5X05VR0VUPSVfUHlfRVhURVJOQUxTX0RJUiVcbnVnZXQuZXhlKQorQGlmICIlX1B5X05VR0VUX1VSTCUiPT0iIiAoc2V0IF9QeV9OVUdFVF9VUkw9aHR0cHM6Ly9ha2EubXMvbnVnZXRjbGlkbCkKK0BpZiBOT1QgZXhpc3QgIiVfUHlfTlVHRVQlIiAoCisgICAgQGVjaG8gRG93bmxvYWRpbmcgbnVnZXQuLi4KKyAgICBAcmVtIE5COiBNdXN0IHVzZSBzaW5nbGUgcXVvdGVzIGFyb3VuZCBOVUdFVCBoZXJlLCBOT1QgZG91YmxlIQorICAgIEByZW0gT3RoZXJ3aXNlLCBhIHNwYWNlIGluIHRoZSBwYXRoIHdvdWxkIGJyZWFrIHRoaW5ncworICAgIEByZW0gSWYgaXQgZmFpbHMsIHJldHJ5IHdpdGggYW55IGF2YWlsYWJsZSBjb3B5IG9mIFB5dGhvbgorICAgIEBwb3dlcnNoZWxsLmV4ZSAtQ29tbWFuZCBJbnZva2UtV2ViUmVxdWVzdCAlX1B5X05VR0VUX1VSTCUgLU91dEZpbGUgJyVfUHlfTlVHRVQlJworICAgIEBpZiBlcnJvcmxldmVsIDEgKAorICAgICAgICBAJV9QeV9IT1NUX1BZVEhPTiUgIiV+ZHAwXHVybHJldHJpZXZlLnB5IiAiJV9QeV9OVUdFVF9VUkwlIiAiJV9QeV9OVUdFVCUiCisgICAgKQorKQorQGVjaG8gSW5zdGFsbGluZyBQeXRob24gdmlhIG51Z2V0Li4uCitAIiVfUHlfTlVHRVQlIiBpbnN0YWxsIHB5dGhvbng4NiAtRXhjbHVkZVZlcnNpb24gLU91dHB1dERpcmVjdG9yeSAiJV9QeV9FWFRFUk5BTFNfRElSJSIKK0ByZW0gUXVvdGUgaXQgaGVyZTsgaXQncyBub3QgcXVvdGVkIGxhdGVyIGJlY2F1c2UgInB5IC0zLjYiIHdvdWxkbid0IHdvcmsKK0BpZiBub3QgZXJyb3JsZXZlbCAxIChzZXQgUFlUSE9OPSIlX1B5X0VYVEVSTkFMU19ESVIlXHB5dGhvbng4Nlx0b29sc1xweXRob24uZXhlIikgJiAoc2V0IF9QeV9QeXRob25fU291cmNlPWZvdW5kIG9uIG51Z2V0Lm9yZykgJiBnb3RvIDpmb3VuZAorCisKK0BzZXQgX1B5X1B5dGhvbl9Tb3VyY2U9CitAc2V0IF9QeV9FWFRFUk5BTFNfRElSPQorQHNldCBfUHlfTlVHRVQ9CitAc2V0IF9QeV9OVUdFVF9VUkw9CitAc2V0IF9QeV9IT1NUX1BZVEhPTj0KK0BleGl0IC9iIDEKKworOmZvdW5kCitAZWNobyBVc2luZyAlUFlUSE9OJSAoJV9QeV9QeXRob25fU291cmNlJSkKK0BzZXQgX1B5X1B5dGhvbl9Tb3VyY2U9CitAc2V0IF9QeV9FWFRFUk5BTFNfRElSPQorQHNldCBfUHlfTlVHRVQ9CitAc2V0IF9QeV9OVUdFVF9VUkw9CitAc2V0IF9QeV9IT1NUX1BZVEhPTj0KZGlmZiAtLWdpdCBhL1BDYnVpbGQvZ2V0X2V4dGVybmFsLnB5IGIvUENidWlsZC9nZXRfZXh0ZXJuYWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY4MmQzOAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvZ2V0X2V4dGVybmFsLnB5CkBAIC0wLDAgKzEsNjAgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCitpbXBvcnQgemlwZmlsZQorZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJscmV0cmlldmUKKworCitkZWYgZmV0Y2hfemlwKGNvbW1pdF9oYXNoLCB6aXBfZGlyLCAqLCBvcmc9J3B5dGhvbicsIGJpbmFyeT1GYWxzZSwgdmVyYm9zZSk6CisgICAgcmVwbyA9IGYnY3B5dGhvbi17ImJpbiIgaWYgYmluYXJ5IGVsc2UgInNvdXJjZSJ9LWRlcHMnCisgICAgdXJsID0gZidodHRwczovL2dpdGh1Yi5jb20ve29yZ30ve3JlcG99L2FyY2hpdmUve2NvbW1pdF9oYXNofS56aXAnCisgICAgcmVwb3J0aG9vayA9IE5vbmUKKyAgICBpZiB2ZXJib3NlOgorICAgICAgICByZXBvcnRob29rID0gcHJpbnQKKyAgICB6aXBfZGlyLm1rZGlyKHBhcmVudHM9VHJ1ZSwgZXhpc3Rfb2s9VHJ1ZSkKKyAgICBmaWxlbmFtZSwgaGVhZGVycyA9IHVybHJldHJpZXZlKAorICAgICAgICB1cmwsCisgICAgICAgIHppcF9kaXIgLyBmJ3tjb21taXRfaGFzaH0uemlwJywKKyAgICAgICAgcmVwb3J0aG9vaz1yZXBvcnRob29rLAorICAgICkKKyAgICByZXR1cm4gZmlsZW5hbWUKKworCitkZWYgZXh0cmFjdF96aXAoZXh0ZXJuYWxzX2RpciwgemlwX3BhdGgpOgorICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKG9zLmZzcGF0aCh6aXBfcGF0aCkpIGFzIHpmOgorICAgICAgICB6Zi5leHRyYWN0YWxsKG9zLmZzcGF0aChleHRlcm5hbHNfZGlyKSkKKyAgICAgICAgcmV0dXJuIGV4dGVybmFsc19kaXIgLyB6Zi5uYW1lbGlzdCgpWzBdLnNwbGl0KCcvJylbMF0KKworCitkZWYgcGFyc2VfYXJncygpOgorICAgIHAgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcC5hZGRfYXJndW1lbnQoJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgcC5hZGRfYXJndW1lbnQoJy1iJywgJy0tYmluYXJ5JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICBoZWxwPSdJcyB0aGUgZGVwZW5kZW5jeSBpbiB0aGUgYmluYXJ5IHJlcG8/JykKKyAgICBwLmFkZF9hcmd1bWVudCgnLU8nLCAnLS1vcmdhbml6YXRpb24nLAorICAgICAgICAgICAgICAgICAgIGhlbHA9J09yZ2FuaXphdGlvbiBvd25pbmcgdGhlIGRlcHMgcmVwb3MnLCBkZWZhdWx0PSdweXRob24nKQorICAgIHAuYWRkX2FyZ3VtZW50KCctZScsICctLWV4dGVybmFscy1kaXInLCB0eXBlPXBhdGhsaWIuUGF0aCwKKyAgICAgICAgICAgICAgICAgICBoZWxwPSdEaXJlY3RvcnkgaW4gd2hpY2ggdG8gc3RvcmUgZGVwZW5kZW5jaWVzJywKKyAgICAgICAgICAgICAgICAgICBkZWZhdWx0PXBhdGhsaWIuUGF0aChfX2ZpbGVfXykucGFyZW50LnBhcmVudCAvICdleHRlcm5hbHMnKQorICAgIHAuYWRkX2FyZ3VtZW50KCd0YWcnLAorICAgICAgICAgICAgICAgICAgIGhlbHA9J3RhZyBvZiB0aGUgZGVwZW5kZW5jeScpCisgICAgcmV0dXJuIHAucGFyc2VfYXJncygpCisKKworZGVmIG1haW4oKToKKyAgICBhcmdzID0gcGFyc2VfYXJncygpCisgICAgemlwX3BhdGggPSBmZXRjaF96aXAoCisgICAgICAgIGFyZ3MudGFnLAorICAgICAgICBhcmdzLmV4dGVybmFsc19kaXIgLyAnemlwcycsCisgICAgICAgIG9yZz1hcmdzLm9yZ2FuaXphdGlvbiwKKyAgICAgICAgYmluYXJ5PWFyZ3MuYmluYXJ5LAorICAgICAgICB2ZXJib3NlPWFyZ3MudmVyYm9zZSwKKyAgICApCisgICAgZmluYWxfbmFtZSA9IGFyZ3MuZXh0ZXJuYWxzX2RpciAvIGFyZ3MudGFnCisgICAgZXh0cmFjdF96aXAoYXJncy5leHRlcm5hbHNfZGlyLCB6aXBfcGF0aCkucmVwbGFjZShmaW5hbF9uYW1lKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0IGIvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdAppbmRleCAzODdkOWFlLi44YmMxOWU2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CisrKyBiL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKQEAgLTEsMTA3ICsxLDEwNyBAQAotQGVjaG8gb2ZmDQotc2V0bG9jYWwNCi1yZW0gU2ltcGxlIHNjcmlwdCB0byBmZXRjaCBzb3VyY2UgZm9yIGV4dGVybmFsIGxpYnJhcmllcw0KLQ0KLWlmIG5vdCBleGlzdCAiJX5kcDAuLlxleHRlcm5hbHMiIG1rZGlyICIlfmRwMC4uXGV4dGVybmFscyINCi1wdXNoZCAiJX5kcDAuLlxleHRlcm5hbHMiDQotDQotaWYgIiVTVk5ST09UJSI9PSIiIHNldCBTVk5ST09UPWh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbC8NCi0NCi1yZW0gT3B0aW9uYWxseSBjbGVhbiB1cCBmaXJzdC4gIEJlIHdhcm5lZCB0aGF0IHRoaXMgY2FuIGJlIHZlcnkgZGVzdHJ1Y3RpdmUhDQotaWYgbm90ICIlMSI9PSIiICgNCi0gICAgZm9yICUlYyBpbiAoLWMgLS1jbGVhbiAtLWNsZWFuLW9ubHkpIGRvICgNCi0gICAgICAgIGlmICIlMSI9PSIlJWMiIGdvdG8gY2xlYW4NCi0gICAgKQ0KLSAgICBnb3RvIHVzYWdlDQotKQ0KLWdvdG8gZmV0Y2gNCi0NCi06Y2xlYW4NCi1lY2hvLkNsZWFuaW5nIHVwIGV4dGVybmFsIGxpYnJhcmllcy4NCi1mb3IgL0QgJSVkIGluICgNCi0gICAgICAgICAgICAgICBiemlwMi0qDQotICAgICAgICAgICAgICAgZGItKg0KLSAgICAgICAgICAgICAgIG5hc20tKg0KLSAgICAgICAgICAgICAgIG9wZW5zc2wtKg0KLSAgICAgICAgICAgICAgIHRjbC0qDQotICAgICAgICAgICAgICAgdGNsdGsqDQotICAgICAgICAgICAgICAgdGstKg0KLSAgICAgICAgICAgICAgIHRpeC0qDQotICAgICAgICAgICAgICAgc3FsaXRlLSoNCi0gICAgICAgICAgICAgICB4ei0qDQotICAgICAgICAgICAgICAgKSBkbyAoDQotICAgIGVjaG8uUmVtb3ZpbmcgJSVkDQotICAgIHJtZGlyIC9zIC9xICUlZA0KLSkNCi1pZiAiJTEiPT0iLS1jbGVhbi1vbmx5IiAoDQotICAgIGdvdG8gZW5kDQotKQ0KLQ0KLTpmZXRjaA0KLXJlbSBGZXRjaCBjdXJyZW50IHZlcnNpb25zDQotDQotc3ZuIC0tdmVyc2lvbiA+IG51bCAyPiYxDQotaWYgRVJST1JMRVZFTCA5MDA5ICgNCi0gICAgZWNoby5zdm4uZXhlIG11c3QgYmUgb24geW91ciBQQVRILg0KLSAgICBlY2hvLlRyeSBUb3J0b2lzZVNWTiAoaHR0cDovL3RvcnRvaXNlc3ZuLm5ldC9eKSBhbmQgYmUgc3VyZSB0byBjaGVjayB0aGUNCi0gICAgZWNoby5jb21tYW5kIGxpbmUgdG9vbHMgb3B0aW9uLg0KLSAgICBwb3BkDQotICAgIGV4aXQgL2IgMQ0KLSkNCi0NCi1lY2hvLkZldGNoaW5nIGV4dGVybmFsIGxpYnJhcmllcy4uLg0KLQ0KLXJlbSBXaGVuIHVwZGF0aW5nIHRoZXNlIHZlcnNpb25zLCByZW1lbWJlciB0byB1cGRhdGUgdGhlIHJlbGV2YW50IHByb3BlcnR5DQotcmVtIGZpbGVzIGluIGJvdGggdGhpcyBkaXIgYW5kIFBDXFZTOS4wDQotDQotc2V0IGxpYnJhcmllcz0NCi1zZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnppcDItMS4wLjYNCi1pZiBOT1QgIiVJbmNsdWRlQnNkZGIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgZGItNC43LjI1LjANCi1pZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgbmFzbS0yLjExLjA2DQotaWYgTk9UICIlSW5jbHVkZVNTTCUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgIG9wZW5zc2wtMS4wLjJqDQotc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxbGl0ZS0zLjguMTEuMA0KLWlmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0Y2wtOC41LjE1LjANCi1pZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGstOC41LjE1LjANCi1pZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGl4LTguNC4zLjUNCi0NCi1mb3IgJSVlIGluICglbGlicmFyaWVzJSkgZG8gKA0KLSAgICBpZiBleGlzdCAlJWUgKA0KLSAgICAgICAgZWNoby4lJWUgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nLg0KLSAgICApIGVsc2UgKA0KLSAgICAgICAgZWNoby5GZXRjaGluZyAlJWUuLi4NCi0gICAgICAgIHN2biBleHBvcnQgJVNWTlJPT1QlJSVlDQotICAgICkNCi0pDQotDQotZ290byBlbmQNCi0NCi06dXNhZ2UNCi1lY2hvLmludmFsaWQgYXJndW1lbnQ6ICUxDQotZWNoby51c2FnZTogJX5uMCBbWyAtYyBefCAtLWNsZWFuIF0gXnwgLS1jbGVhbi1vbmx5IF0NCi1lY2hvLg0KLWVjaG8uUHVsbCBhbGwgc291cmNlcyBuZWNlc3NhcnkgZm9yIGNvbXBpbGluZyBvcHRpb25hbCBleHRlbnNpb24gbW9kdWxlcw0KLWVjaG8udGhhdCByZWx5IG9uIGV4dGVybmFsIGxpYnJhcmllcy4gIFJlcXVpcmVzIHN2bi5leGUgdG8gYmUgb24geW91ciBQQVRIDQotZWNoby5hbmQgcHVsbHMgc291cmNlcyBmcm9tICVTVk5ST09UJS4NCi1lY2hvLg0KLWVjaG8uVXNlIHRoZSAtYyBvciAtLWNsZWFuIG9wdGlvbiB0byBjbGVhbiB1cCBhbGwgZXh0ZXJuYWwgbGlicmFyeSBzb3VyY2VzDQotZWNoby5iZWZvcmUgcHVsbGluZyBpbiB0aGUgY3VycmVudCB2ZXJzaW9ucy4NCi1lY2hvLg0KLWVjaG8uVXNlIHRoZSAtLWNsZWFuLW9ubHkgb3B0aW9uIHRvIGRvIHRoZSBzYW1lIGNsZWFuaW5nLCB3aXRob3V0IHB1bGxpbmcgaW4NCi1lY2hvLmFueXRoaW5nIG5ldy4NCi1lY2hvLg0KLWVjaG8uT25seSB0aGUgZmlyc3QgYXJndW1lbnQgaXMgY2hlY2tlZCwgYWxsIG90aGVycyBhcmUgaWdub3JlZC4NCi1lY2hvLg0KLWVjaG8uKipXQVJOSU5HKio6IHRoZSBjbGVhbmluZyBvcHRpb25zIHVuY29uZGl0aW9uYWxseSByZW1vdmUgYW55IGRpcmVjdG9yeQ0KLWVjaG8udGhhdCBpcyBhIGNoaWxkIG9mDQotZWNoby4gICAlQ0QlDQotZWNoby5hbmQgbWF0Y2hlcyB3aWxkY2FyZCBwYXR0ZXJucyBiZWdpbm5pbmcgd2l0aCBiemlwMi0sIGRiLSwgbmFzbS0sIG9wZW5zc2wtLA0KLWVjaG8udGNsLSwgdGNsdGssIHRrLSwgdGl4LSwgc3FsaXRlLSwgb3IgeHotLCBhbmQgYXMgc3VjaCBoYXMgdGhlIHBvdGVudGlhbA0KLWVjaG8udG8gYmUgdmVyeSBkZXN0cnVjdGl2ZSBpZiB5b3UgYXJlIG5vdCBhd2FyZSBvZiB3aGF0IGl0IGlzIGRvaW5nLiAgVXNlIHdpdGgNCi1lY2hvLmNhdXRpb24hDQotcG9wZA0KLWV4aXQgL2IgLTENCi0NCi0NCi06ZW5kDQotZWNobyBGaW5pc2hlZC4NCi1wb3BkDQorQGVjaG8gb2ZmCitzZXRsb2NhbAorcmVtIFNpbXBsZSBzY3JpcHQgdG8gZmV0Y2ggc291cmNlIGZvciBleHRlcm5hbCBsaWJyYXJpZXMKKworaWYgIiVQQ0JVSUxEJSI9PSIiIChzZXQgUENCVUlMRD0lfmRwMCkKK2lmICIlRVhURVJOQUxTX0RJUiUiPT0iIiAoc2V0IEVYVEVSTkFMU19ESVI9JVBDQlVJTEQlXC4uXGV4dGVybmFscykKKworc2V0IERPX0ZFVENIPXRydWUKK3NldCBET19DTEVBTj1mYWxzZQorCis6Q2hlY2tPcHRzCitpZiAiJX4xIj09Ii0tbm8tdGtpbnRlciIgKHNldCBJbmNsdWRlVGtpbnRlcj1mYWxzZSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJX4xIj09Ii0tbm8tb3BlbnNzbCIgKHNldCBJbmNsdWRlU1NMPWZhbHNlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlfjEiPT0iLS1weXRob24iIChzZXQgUFlUSE9OX0ZPUl9CVUlMRD0lMikgJiBzaGlmdCAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlfjEiPT0iLS1vcmdhbml6YXRpb24iIChzZXQgT1JHPSUyKSAmIHNoaWZ0ICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiV+MSI9PSItYyIgKHNldCBET19DTEVBTj10cnVlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlfjEiPT0iLS1jbGVhbiIgKHNldCBET19DTEVBTj10cnVlKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlfjEiPT0iLS1jbGVhbi1vbmx5IiAoc2V0IERPX0ZFVENIPWZhbHNlKSAmIGdvdG8gY2xlYW4KK2lmICJ4JX4xIiBORVEgIngiIGdvdG8gdXNhZ2UKKworaWYgIiVET19DTEVBTiUiPT0iZmFsc2UiIGdvdG8gZmV0Y2gKKzpjbGVhbgorZWNoby5DbGVhbmluZyB1cCBleHRlcm5hbCBsaWJyYXJpZXMuCitpZiBleGlzdCAiJUVYVEVSTkFMU19ESVIlIiAoCisgICAgcmVtIFNvbWV0aW1lcyB0aGlzIGZhaWxzIHRoZSBmaXJzdCB0aW1lOyB0cnkgaXQgdHdpY2UKKyAgICBybWRpciAvcyAvcSAiJUVYVEVSTkFMU19ESVIlIiB8fCBybWRpciAvcyAvcSAiJUVYVEVSTkFMU19ESVIlIgorKQorCitpZiAiJURPX0ZFVENIJSI9PSJmYWxzZSIgZ290byBlbmQKKzpmZXRjaAorCitpZiAiJU9SRyUiPT0iIiAoc2V0IE9SRz1weXRob24pCitjYWxsICIlUENCVUlMRCVcZmluZF9weXRob24uYmF0IiAiJVBZVEhPTiUiCisKK2dpdCAyPiYxID4gbnVsCitpZiBFUlJPUkxFVkVMIDkwMDkgKAorICAgIGlmICIlUFlUSE9OJSI9PSIiICgKKyAgICAgICAgZWNobyBQeXRob24gMy42IGNvdWxkIG5vdCBiZSBmb3VuZCBvciBpbnN0YWxsZWQsIGFuZCBnaXQuZXhlIGlzIG5vdCBvbiB5b3VyIFBBVEggJiYgZXhpdCAvQiAxCisgICAgKQorKQorCitlY2hvLkZldGNoaW5nIGV4dGVybmFsIGxpYnJhcmllcy4uLgorCityZW0gV2hlbiB1cGRhdGluZyB0aGVzZSB2ZXJzaW9ucywgcmVtZW1iZXIgdG8gdXBkYXRlIHRoZSByZWxldmFudCBwcm9wZXJ0eQorcmVtIGZpbGVzIGluIGJvdGggdGhpcyBkaXIgYW5kIFBDXFZTOS4wCisKK3NldCBsaWJyYXJpZXM9CitzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnppcDItMS4wLjYKK2lmIE5PVCAiJUluY2x1ZGVCc2RkYiUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICBic2RkYi00LjcuMjUuMAoraWYgTk9UICIlSW5jbHVkZVNTTCUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgIG9wZW5zc2wtMS4wLjJwCitzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlLTMuMTQuMi4wCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGNsLTguNS4xOS4wCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGstOC41LjE5LjAKK2lmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0aXgtOC40LjMuNQorCitmb3IgJSVlIGluICglbGlicmFyaWVzJSkgZG8gKAorICAgIGlmIGV4aXN0ICIlRVhURVJOQUxTX0RJUiVcJSVlIiAoCisgICAgICAgIGVjaG8uJSVlIGFscmVhZHkgZXhpc3RzLCBza2lwcGluZy4KKyAgICApIGVsc2UgaWYgIiVQWVRIT04lIj09IiIgKAorICAgICAgICBlY2hvLkZldGNoaW5nICUlZSB3aXRoIGdpdC4uLgorICAgICAgICBnaXQgY2xvbmUgLS1kZXB0aCAxIGh0dHBzOi8vZ2l0aHViLmNvbS8lT1JHJS9jcHl0aG9uLXNvdXJjZS1kZXBzIC0tYnJhbmNoICUlZSAiJUVYVEVSTkFMU19ESVIlXCUlZSIKKyAgICApIGVsc2UgKAorICAgICAgICBlY2hvLkZldGNoaW5nICUlZS4uLgorICAgICAgICAlUFlUSE9OJSAiJVBDQlVJTEQlXGdldF9leHRlcm5hbC5weSIgLU8gJU9SRyUgJSVlCisgICAgKQorKQorCitlY2hvLkZldGNoaW5nIGV4dGVybmFsIGJpbmFyaWVzLi4uCisKK3NldCBiaW5hcmllcz0KK3NldCBiaW5hcmllcz0lYmluYXJpZXMlCitpZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGJpbmFyaWVzPSViaW5hcmllcyUgICAgIG5hc20tMi4xMS4wNgorCitmb3IgJSViIGluICglYmluYXJpZXMlKSBkbyAoCisgICAgaWYgZXhpc3QgIiVFWFRFUk5BTFNfRElSJVwlJWIiICgKKyAgICAgICAgZWNoby4lJWIgYWxyZWFkeSBleGlzdHMsIHNraXBwaW5nLgorICAgICkgZWxzZSBpZiAiJVBZVEhPTiUiPT0iIiAoCisgICAgICAgIGVjaG8uRmV0Y2hpbmcgJSViIHdpdGggZ2l0Li4uCisgICAgICAgIGdpdCBjbG9uZSAtLWRlcHRoIDEgaHR0cHM6Ly9naXRodWIuY29tLyVPUkclL2NweXRob24tYmluLWRlcHMgLS1icmFuY2ggJSViICIlRVhURVJOQUxTX0RJUiVcJSViIgorICAgICkgZWxzZSAoCisgICAgICAgIGVjaG8uRmV0Y2hpbmcgJSViLi4uCisgICAgICAgICVQWVRIT04lICIlUENCVUlMRCVcZ2V0X2V4dGVybmFsLnB5IiAtYiAtTyAlT1JHJSAlJWIKKyAgICApCispCisKK2VjaG8gRmluaXNoZWQuCitnb3RvIGVuZAorCis6dXNhZ2UKK2VjaG8uVmFsaWQgb3B0aW9uczogLWMsIC0tY2xlYW4sIC0tY2xlYW4tb25seSwgLS1vcmdhbml6YXRpb24sIC0tcHl0aG9uLAorZWNoby4tLW5vLXRraW50ZXIsIC0tbm8tb3BlbnNzbAorZWNoby4KK2VjaG8uUHVsbCBhbGwgc291cmNlcyBhbmQgYmluYXJpZXMgbmVjZXNzYXJ5IGZvciBjb21waWxpbmcgb3B0aW9uYWwgZXh0ZW5zaW9uCitlY2hvLm1vZHVsZXMgdGhhdCByZWx5IG9uIGV4dGVybmFsIGxpYnJhcmllcy4KK2VjaG8uCitlY2hvLlRoZSAtLW9yZ2FuaXphdGlvbiBvcHRpb24gZGV0ZXJtaW5lcyB3aGljaCBnaXRodWIgb3JnYW5pemF0aW9uIHRvIGRvd25sb2FkCitlY2hvLmZyb20sIHRoZSAtLXB5dGhvbiBvcHRpb24gZGV0ZXJtaW5lcyB3aGljaCBQeXRob24gMy42KyBpbnRlcnByZXRlciB0byB1c2UKK2VjaG8ud2l0aCBQQ2J1aWxkXGdldF9leHRlcm5hbC5weS4KK2VjaG8uCitlY2hvLlVzZSB0aGUgLWMgb3IgLS1jbGVhbiBvcHRpb24gdG8gcmVtb3ZlIHRoZSBlbnRpcmUgZXh0ZXJuYWxzIGRpcmVjdG9yeS4KK2VjaG8uCitlY2hvLlVzZSB0aGUgLS1jbGVhbi1vbmx5IG9wdGlvbiB0byBkbyB0aGUgc2FtZSBjbGVhbmluZywgd2l0aG91dCBwdWxsaW5nIGluCitlY2hvLmFueXRoaW5nIG5ldy4KK2VjaG8uCitleGl0IC9iIC0xCisKKzplbmQKZGlmZiAtLWdpdCBhL1BDYnVpbGQvaWRsZS5iYXQgYi9QQ2J1aWxkL2lkbGUuYmF0CmluZGV4IDVhYjE1ZjUuLmRjYjA0ODUgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvaWRsZS5iYXQKKysrIGIvUENidWlsZC9pZGxlLmJhdApAQCAtMSwxNSArMSwxNSBAQAotQGVjaG8gb2ZmDQotcmVtIHN0YXJ0IGlkbGUNCi1yZW0gVXNhZ2U6ICBpZGxlIFstZF0NCi1yZW0gLWQgICBSdW4gRGVidWcgYnVpbGQgKHB5dGhvbl9kLmV4ZSkuICBFbHNlIHJlbGVhc2UgYnVpbGQuDQotDQotc2V0bG9jYWwNCi1zZXQgZXhlPXB5dGhvbg0KLVBBVEggJVBBVEglOy4uXC4uXHRjbHRrXGJpbg0KLQ0KLWlmICIlMSI9PSItZCIgKHNldCBleGU9cHl0aG9uX2QpICYgc2hpZnQNCi0NCi1zZXQgY21kPSVleGUlIC4uL0xpYi9pZGxlbGliL2lkbGUucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkNCi0NCi1lY2hvIG9uDQotJWNtZCUNCitAZWNobyBvZmYKK3JlbSBzdGFydCBpZGxlCityZW0gVXNhZ2U6ICBpZGxlIFstZF0KK3JlbSAtZCAgIFJ1biBEZWJ1ZyBidWlsZCAocHl0aG9uX2QuZXhlKS4gIEVsc2UgcmVsZWFzZSBidWlsZC4KKworc2V0bG9jYWwKK3NldCBleGU9cHl0aG9uCitQQVRIICVQQVRIJTsuLlwuLlx0Y2x0a1xiaW4KKworaWYgIiUxIj09Ii1kIiAoc2V0IGV4ZT1weXRob25fZCkgJiBzaGlmdAorCitzZXQgY21kPSVleGUlIC4uL0xpYi9pZGxlbGliL2lkbGUucHkgJTEgJTIgJTMgJTQgJTUgJTYgJTcgJTggJTkKKworZWNobyBvbgorJWNtZCUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvcGNidWlsZC5zbG4gYi9QQ2J1aWxkL3BjYnVpbGQuc2xuCmluZGV4IDFmN2ZiNzdmLi5lMDM4NjFiIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3BjYnVpbGQuc2xuCisrKyBiL1BDYnVpbGQvcGNidWlsZC5zbG4KQEAgLTEsNTM2ICsxLDUzNiBAQAotTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gU29sdXRpb24gRmlsZSwgRm9ybWF0IFZlcnNpb24gMTIuMDANCi0jIFZpc3VhbCBTdHVkaW8gMjAxMA0KLVByb2plY3QoInsyMTUwRTMzMy04RkRDLTQyQTMtOTQ3NC0xQTM5NTZENDZERTh9IikgPSAiU29sdXRpb24gSXRlbXMiLCAiU29sdXRpb24gSXRlbXMiLCAiezU1M0VDMzNFLTk4MTYtNDk5Ni1BNjYwLTVENjE4NkEwQjBCM30iDQotCVByb2plY3RTZWN0aW9uKFNvbHV0aW9uSXRlbXMpID0gcHJlUHJvamVjdA0KLQkJLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMNCi0JRW5kUHJvamVjdFNlY3Rpb24NCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjeHByb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9uY29yZSIsICJweXRob25jb3JlLnZjeHByb2oiLCAie0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAicHl0aG9udyIsICJweXRob253LnZjeHByb2oiLCAie0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmN4cHJvaiIsICJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ3aW5zb3VuZCIsICJ3aW5zb3VuZC52Y3hwcm9qIiwgInsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9ic2RkYiIsICJfYnNkZGIudmN4cHJvaiIsICJ7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmN4cHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzX3Rlc3QiLCAiX2N0eXBlc190ZXN0LnZjeHByb2oiLCAiezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2VsZW1lbnR0cmVlIiwgIl9lbGVtZW50dHJlZS52Y3hwcm9qIiwgInsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3hwcm9qIiwgInszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zb2NrZXQiLCAiX3NvY2tldC52Y3hwcm9qIiwgIns4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9zcWxpdGUzIiwgIl9zcWxpdGUzLnZjeHByb2oiLCAiezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjeHByb2oiLCAie0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3Rlc3RjYXBpIiwgIl90ZXN0Y2FwaS52Y3hwcm9qIiwgIns2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90a2ludGVyIiwgIl90a2ludGVyLnZjeHByb2oiLCAiezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYnoyIiwgImJ6Mi52Y3hwcm9qIiwgIns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNlbGVjdCIsICJzZWxlY3QudmN4cHJvaiIsICJ7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ1bmljb2RlZGF0YSIsICJ1bmljb2RlZGF0YS52Y3hwcm9qIiwgIntFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3hwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImJkaXN0X3dpbmluc3QiLCAiLi5cUENcYmRpc3Rfd2luaW5zdFxiZGlzdF93aW5pbnN0LnZjeHByb2oiLCAie0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2hhc2hsaWIiLCAiX2hhc2hsaWIudmN4cHJvaiIsICJ7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzcWxpdGUzIiwgInNxbGl0ZTMudmN4cHJvaiIsICJ7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfbXVsdGlwcm9jZXNzaW5nIiwgIl9tdWx0aXByb2Nlc3NpbmcudmN4cHJvaiIsICJ7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fSINCi1FbmRQcm9qZWN0DQotUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0Y2wiLCAidGNsLnZjeHByb2oiLCAie0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidGl4IiwgInRpeC52Y3hwcm9qIiwgIntDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInRrIiwgInRrLnZjeHByb2oiLCAiezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliZWF5IiwgImxpYmVheS52Y3hwcm9qIiwgIntFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9Ig0KLUVuZFByb2plY3QNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbGVheSIsICJzc2xlYXkudmN4cHJvaiIsICJ7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fSINCi1FbmRQcm9qZWN0DQotR2xvYmFsDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQotCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQotCQlEZWJ1Z3x4NjQgPSBEZWJ1Z3x4NjQNCi0JCVBHSW5zdHJ1bWVudHxXaW4zMiA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJUEdJbnN0cnVtZW50fHg2NCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCVBHVXBkYXRlfFdpbjMyID0gUEdVcGRhdGV8V2luMzINCi0JCVBHVXBkYXRlfHg2NCA9IFBHVXBkYXRlfHg2NA0KLQkJUmVsZWFzZXxXaW4zMiA9IFJlbGVhc2V8V2luMzINCi0JCVJlbGVhc2V8eDY0ID0gUmVsZWFzZXx4NjQNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLQlHbG9iYWxTZWN0aW9uKFByb2plY3RDb25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHBvc3RTb2x1dGlvbg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8eDY0DQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFBHVXBkYXRlfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHxXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUEdJbnN0cnVtZW50fHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzINCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBQR1VwZGF0ZXxXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFBHVXBkYXRlfHg2NA0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUEdJbnN0cnVtZW50fFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFBHVXBkYXRlfFdpbjMyDQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUEdVcGRhdGV8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQNCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUEdVcGRhdGV8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IERlYnVnfHg2NA0KLQkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uRGVidWd8eDY0LkJ1aWxkLjAgPSBEZWJ1Z3x4NjQNCi0JCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR0luc3RydW1lbnR8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR1VwZGF0ZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR1VwZGF0ZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5SZWxlYXNlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5BY3RpdmVDZmcgPSBEZWJ1Z3x4NjQNCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0DQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzINCi0JCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQotCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KLQkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQotCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQotCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KLQkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KLQkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCi0JCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCi0JCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCi0JCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KLQlFbmRHbG9iYWxTZWN0aW9uDQotCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQotCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCi0JRW5kR2xvYmFsU2VjdGlvbg0KLUVuZEdsb2JhbA0KK01pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIFNvbHV0aW9uIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDExLjAwCisjIFZpc3VhbCBTdHVkaW8gMjAxMAorUHJvamVjdCgiezIxNTBFMzMzLThGREMtNDJBMy05NDc0LTFBMzk1NkQ0NkRFOH0iKSA9ICJTb2x1dGlvbiBJdGVtcyIsICJTb2x1dGlvbiBJdGVtcyIsICJ7NTUzRUMzM0UtOTgxNi00OTk2LUE2NjAtNUQ2MTg2QTBCMEIzfSIKKwlQcm9qZWN0U2VjdGlvbihTb2x1dGlvbkl0ZW1zKSA9IHByZVByb2plY3QKKwkJLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyA9IC4uXE1vZHVsZXNcZ2V0YnVpbGRpbmZvLmMKKwlFbmRQcm9qZWN0U2VjdGlvbgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob24iLCAicHl0aG9uLnZjeHByb2oiLCAie0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5dGhvbmNvcmUiLCAicHl0aG9uY29yZS52Y3hwcm9qIiwgIntDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJweXRob253IiwgInB5dGhvbncudmN4cHJvaiIsICJ7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidzl4cG9wZW4iLCAidzl4cG9wZW4udmN4cHJvaiIsICJ7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAid2luc291bmQiLCAid2luc291bmQudmN4cHJvaiIsICJ7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2JzZGRiIiwgIl9ic2RkYi52Y3hwcm9qIiwgIntCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfY3R5cGVzIiwgIl9jdHlwZXMudmN4cHJvaiIsICJ7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX2N0eXBlc190ZXN0IiwgIl9jdHlwZXNfdGVzdC52Y3hwcm9qIiwgIns5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfZWxlbWVudHRyZWUiLCAiX2VsZW1lbnR0cmVlLnZjeHByb2oiLCAiezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl9tc2kiLCAiX21zaS52Y3hwcm9qIiwgInszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfc29ja2V0IiwgIl9zb2NrZXQudmN4cHJvaiIsICJ7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NxbGl0ZTMiLCAiX3NxbGl0ZTMudmN4cHJvaiIsICJ7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3NzbCIsICJfc3NsLnZjeHByb2oiLCAie0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y2FwaSIsICJfdGVzdGNhcGkudmN4cHJvaiIsICJ7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX3RraW50ZXIiLCAiX3RraW50ZXIudmN4cHJvaiIsICJ7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiYnoyIiwgImJ6Mi52Y3hwcm9qIiwgIns3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzZWxlY3QiLCAic2VsZWN0LnZjeHByb2oiLCAiezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInVuaWNvZGVkYXRhIiwgInVuaWNvZGVkYXRhLnZjeHByb2oiLCAie0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5ZXhwYXQiLCAicHlleHBhdC52Y3hwcm9qIiwgIntEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJiZGlzdF93aW5pbnN0IiwgIi4uXFBDXGJkaXN0X3dpbmluc3RcYmRpc3Rfd2luaW5zdC52Y3hwcm9qIiwgIntFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJfaGFzaGxpYiIsICJfaGFzaGxpYi52Y3hwcm9qIiwgIns0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJzcWxpdGUzIiwgInNxbGl0ZTMudmN4cHJvaiIsICJ7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAiX211bHRpcHJvY2Vzc2luZyIsICJfbXVsdGlwcm9jZXNzaW5nLnZjeHByb2oiLCAiezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInRjbCIsICJ0Y2wudmN4cHJvaiIsICJ7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfSIKK0VuZFByb2plY3QKK1Byb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAidGl4IiwgInRpeC52Y3hwcm9qIiwgIntDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJ0ayIsICJ0ay52Y3hwcm9qIiwgIns3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9IgorRW5kUHJvamVjdAorUHJvamVjdCgiezhCQzlDRUI4LThCNEEtMTFEMC04RDExLTAwQTBDOTFCQzk0Mn0iKSA9ICJsaWJlYXkiLCAibGliZWF5LnZjeHByb2oiLCAie0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0iCitFbmRQcm9qZWN0CitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInNzbGVheSIsICJzc2xlYXkudmN4cHJvaiIsICJ7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fSIKK0VuZFByb2plY3QKK0dsb2JhbAorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uCisJCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzIKKwkJRGVidWd8eDY0ID0gRGVidWd8eDY0CisJCVBHSW5zdHJ1bWVudHxXaW4zMiA9IFBHSW5zdHJ1bWVudHxXaW4zMgorCQlQR0luc3RydW1lbnR8eDY0ID0gUEdJbnN0cnVtZW50fHg2NAorCQlQR1VwZGF0ZXxXaW4zMiA9IFBHVXBkYXRlfFdpbjMyCisJCVBHVXBkYXRlfHg2NCA9IFBHVXBkYXRlfHg2NAorCQlSZWxlYXNlfFdpbjMyID0gUmVsZWFzZXxXaW4zMgorCQlSZWxlYXNlfHg2NCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oUHJvamVjdENvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcG9zdFNvbHV0aW9uCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QjExRDc1MEYtQ0QxRi00QTk2LTg1Q0UtRTY5QTVDNTI1OUY5fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtCMTFENzUwRi1DRDFGLTRBOTYtODVDRS1FNjlBNUM1MjU5Rjl9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0IxMUQ3NTBGLUNEMUYtNEE5Ni04NUNFLUU2OUE1QzUyNTlGOX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7Q0Y3QUMzRDEtRTJERi00MUQyLUJFQTYtMUUyNTU2Q0RFQTI2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDRjdBQzNEMS1FMkRGLTQxRDItQkVBNi0xRTI1NTZDREVBMjZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0NGN0FDM0QxLUUyREYtNDFEMi1CRUE2LTFFMjU1NkNERUEyNn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RjQyMjlDQzMtODczQy00OUFFLTk3MjktREQzMDhFRDRDRDRBfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtGNDIyOUNDMy04NzNDLTQ5QUUtOTcyOS1ERDMwOEVENENENEF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0Y0MjI5Q0MzLTg3M0MtNDlBRS05NzI5LUREMzA4RUQ0Q0Q0QX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RTlFMEExRjYtMDAwOS00RThDLUI4RjgtMUI4RjVENDlBMDU4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFOUUwQTFGNi0wMDA5LTRFOEMtQjhGOC0xQjhGNUQ0OUEwNTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0U5RTBBMUY2LTAwMDktNEU4Qy1COEY4LTFCOEY1RDQ5QTA1OH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uRGVidWd8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5QR1VwZGF0ZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M3M0YwRUMxLTM1OEItNDE3Ny05NDBGLTA4NDZBQzhCMDRDRH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzczRjBFQzEtMzU4Qi00MTc3LTk0MEYtMDg0NkFDOEIwNENEfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNzNGMEVDMS0zNThCLTQxNzctOTQwRi0wODQ2QUM4QjA0Q0R9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MjhCNUQ3NzctRERGMi00QjZCLUIzNEYtMzFEOTM4ODEzODU2fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsyOEI1RDc3Ny1EREYyLTRCNkItQjM0Ri0zMUQ5Mzg4MTM4NTZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezI4QjVENzc3LURERjItNEI2Qi1CMzRGLTMxRDkzODgxMzg1Nn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QjREMzhGM0YtNjhGQi00MkVDLUE0NUQtRTAwNjU3QkIzNjI3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtCNEQzOEYzRi02OEZCLTQyRUMtQTQ1RC1FMDA2NTdCQjM2Mjd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0I0RDM4RjNGLTY4RkItNDJFQy1BNDVELUUwMDY1N0JCMzYyN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MEU5NzkxREItNTkzQS00NjVGLTk4QkMtNjgxMDExMzExNjE4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXswRTk3OTFEQi01OTNBLTQ2NUYtOThCQy02ODEwMTEzMTE2MTh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezBFOTc5MURCLTU5M0EtNDY1Ri05OEJDLTY4MTAxMTMxMTYxOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7OUVDNzE5MEEtMjQ5Ri00MTgwLUE5MDAtNTQ4RkRDRjMwNTVGfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs5RUM3MTkwQS0yNDlGLTQxODAtQTkwMC01NDhGRENGMzA1NUZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezlFQzcxOTBBLTI0OUYtNDE4MC1BOTAwLTU0OEZEQ0YzMDU1Rn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MTdFMUUwNDktQzMwOS00RDc5LTg0M0YtQUU0ODNDMjY0QUVBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsxN0UxRTA0OS1DMzA5LTRENzktODQzRi1BRTQ4M0MyNjRBRUF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezE3RTFFMDQ5LUMzMDktNEQ3OS04NDNGLUFFNDgzQzI2NEFFQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MzFGRkM0NzgtN0I0QS00M0U4LTk5NTQtOEQwM0UyMTg3RTlDfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXszMUZGQzQ3OC03QjRBLTQzRTgtOTk1NC04RDAzRTIxODdFOUN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezMxRkZDNDc4LTdCNEEtNDNFOC05OTU0LThEMDNFMjE4N0U5Q30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7ODY5MzdGNTMtQzE4OS00MEVGLThDRTgtODc1OUQ4RTdENDgwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs4NjkzN0Y1My1DMTg5LTQwRUYtOENFOC04NzU5RDhFN0Q0ODB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezg2OTM3RjUzLUMxODktNDBFRi04Q0U4LTg3NTlEOEU3RDQ4MH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MTNDRUNCOTctNDExOS00MzE2LTlENDItODUzNDAxOUE1QTQ0fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsxM0NFQ0I5Ny00MTE5LTQzMTYtOUQ0Mi04NTM0MDE5QTVBNDR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezEzQ0VDQjk3LTQxMTktNDMxNi05RDQyLTg1MzQwMTlBNUE0NH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QzZFMjBGODQtMzI0Ny00QUQ2LUIwNTEtQjA3MzI2OEY3M0JBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNkUyMEY4NC0zMjQ3LTRBRDYtQjA1MS1CMDczMjY4RjczQkF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0M2RTIwRjg0LTMyNDctNEFENi1CMDUxLUIwNzMyNjhGNzNCQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7NjkwMUQ5MUMtNkU0OC00QkI3LTlGRUMtNzAwQzgxMzFERjFEfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs2OTAxRDkxQy02RTQ4LTRCQjctOUZFQy03MDBDODEzMURGMUR9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezY5MDFEOTFDLTZFNDgtNEJCNy05RkVDLTcwMEM4MTMxREYxRH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7NDk0NkVDQUMtMkU2OS00QkY4LUE5MEEtRjUxMzZGNTA5NERGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0OTQ2RUNBQy0yRTY5LTRCRjgtQTkwQS1GNTEzNkY1MDk0REZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezQ5NDZFQ0FDLTJFNjktNEJGOC1BOTBBLUY1MTM2RjUwOTRERn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7NzNGQ0QyQkQtRjEzMy00NkI3LThFQzEtMTQ0Q0Q4MkE1OUQ1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs3M0ZDRDJCRC1GMTMzLTQ2QjctOEVDMS0xNDRDRDgyQTU5RDV9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezczRkNEMkJELUYxMzMtNDZCNy04RUMxLTE0NENEODJBNTlENX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MThDQUUyOEMtQjQ1NC00NkMxLTg3QTAtNDkzRDkxRDk3RjAzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsxOENBRTI4Qy1CNDU0LTQ2QzEtODdBMC00OTNEOTFEOTdGMDN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezE4Q0FFMjhDLUI0NTQtNDZDMS04N0EwLTQ5M0Q5MUQ5N0YwM30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RUNDN0NFQUMtQTVFNS00NThFLUJCOUUtMjQxM0NDODQ3ODgxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFQ0M3Q0VBQy1BNUU1LTQ1OEUtQkI5RS0yNDEzQ0M4NDc4ODF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0VDQzdDRUFDLUE1RTUtNDU4RS1CQjlFLTI0MTNDQzg0Nzg4MX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RDA2QjY0MjYtNDc2Mi00NENDLThCQUQtRDc5MDUyNTA3RjJGfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtEMDZCNjQyNi00NzYyLTQ0Q0MtOEJBRC1ENzkwNTI1MDdGMkZ9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0QwNkI2NDI2LTQ3NjItNDRDQy04QkFELUQ3OTA1MjUwN0YyRn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uRGVidWd8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlBHSW5zdHJ1bWVudHx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMgorCQl7RUIxQzE5QzEtMUYxOC00MjFFLTk3MzUtQ0FFRTY5REM2QTNDfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0VCMUMxOUMxLTFGMTgtNDIxRS05NzM1LUNBRUU2OURDNkEzQ30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFQjFDMTlDMS0xRjE4LTQyMUUtOTczNS1DQUVFNjlEQzZBM0N9LlJlbGVhc2V8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7NDQ3RjA1QTgtRjU4MS00Q0FDLUE0NjYtNUFDNzkzNkUyMDdFfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs0NDdGMDVBOC1GNTgxLTRDQUMtQTQ2Ni01QUM3OTM2RTIwN0V9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezQ0N0YwNUE4LUY1ODEtNENBQy1BNDY2LTVBQzc5MzZFMjA3RX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QTFBMjk1RTUtNDYzQy00MzdGLTgxQ0EtMUYzMjM2NzY4NURBfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtBMUEyOTVFNS00NjNDLTQzN0YtODFDQS0xRjMyMzY3Njg1REF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0ExQTI5NUU1LTQ2M0MtNDM3Ri04MUNBLTFGMzIzNjc2ODVEQX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7OUU0OEIzMDAtMzdEMS0xMURELThDNDEtMDA1MDU2QzAwMDA4fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fFdpbjMyLkJ1aWxkLjAgPSBQR0luc3RydW1lbnR8V2luMzIKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBQR0luc3RydW1lbnR8eDY0CisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFBHSW5zdHJ1bWVudHx4NjQKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQWN0aXZlQ2ZnID0gUEdVcGRhdGV8V2luMzIKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFBHVXBkYXRlfFdpbjMyCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlBHVXBkYXRlfHg2NC5BY3RpdmVDZmcgPSBQR1VwZGF0ZXx4NjQKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUEdVcGRhdGV8eDY0LkJ1aWxkLjAgPSBQR1VwZGF0ZXx4NjQKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs5RTQ4QjMwMC0zN0QxLTExREQtOEM0MS0wMDUwNTZDMDAwMDh9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezlFNDhCMzAwLTM3RDEtMTFERC04QzQxLTAwNTA1NkMwMDAwOH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QjVGRDZGMUQtMTI5RS00QkZGLTkzNDAtMDM2MDZGQUM3MjgzfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtCNUZENkYxRC0xMjlFLTRCRkYtOTM0MC0wMzYwNkZBQzcyODN9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0I1RkQ2RjFELTEyOUUtNEJGRi05MzQwLTAzNjA2RkFDNzI4M30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7QzVBM0U3RkItOTY5NS00QjJFLTk2MEItMUQ5RjQzRjFFNTU1fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtDNUEzRTdGQi05Njk1LTRCMkUtOTYwQi0xRDlGNDNGMUU1NTV9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0M1QTNFN0ZCLTk2OTUtNEIyRS05NjBCLTFEOUY0M0YxRTU1NX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7N0U4NUVDQ0YtQTcyQy00REE0LTlFNTItODg0NTA4RTgwQkExfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXs3RTg1RUNDRi1BNzJDLTREQTQtOUU1Mi04ODQ1MDhFODBCQTF9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezdFODVFQ0NGLUE3MkMtNERBNC05RTUyLTg4NDUwOEU4MEJBMX0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7RTVCMDRDQzAtRUI0Qy00MkFCLUI0REMtMThFRjk1Rjg2NEIwfS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXtFNUIwNENDMC1FQjRDLTQyQUItQjREQy0xOEVGOTVGODY0QjB9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJe0U1QjA0Q0MwLUVCNEMtNDJBQi1CNERDLTE4RUY5NUY4NjRCMH0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMgorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0CisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LkRlYnVnfHg2NC5CdWlsZC4wID0gRGVidWd8eDY0CisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMgorCQl7MTA2MTVCMjQtNzNCRi00RUZBLTkzQUEtMjM2OTE2MzIxMzE3fS5QR0luc3RydW1lbnR8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHSW5zdHJ1bWVudHx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzIKKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdVcGRhdGV8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUEdVcGRhdGV8eDY0LkFjdGl2ZUNmZyA9IFJlbGVhc2V8eDY0CisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQKKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyCisJCXsxMDYxNUIyNC03M0JGLTRFRkEtOTNBQS0yMzY5MTYzMjEzMTd9LlJlbGVhc2V8V2luMzIuQnVpbGQuMCA9IFJlbGVhc2V8V2luMzIKKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQKKwkJezEwNjE1QjI0LTczQkYtNEVGQS05M0FBLTIzNjkxNjMyMTMxN30uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0CisJRW5kR2xvYmFsU2VjdGlvbgorCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uCisJCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQorCUVuZEdsb2JhbFNlY3Rpb24KK0VuZEdsb2JhbApkaWZmIC0tZ2l0IGEvUENidWlsZC9wcmVwYXJlX3NzbC5weSBiL1BDYnVpbGQvcHJlcGFyZV9zc2wucHkKaW5kZXggZDc0Njk3Ni4uNGY3NjQ3OCAxMDA2NDQKLS0tIGEvUENidWlsZC9wcmVwYXJlX3NzbC5weQorKysgYi9QQ2J1aWxkL3ByZXBhcmVfc3NsLnB5CkBAIC0xLDQgKzEsNyBAQAogIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKyMgLSotIGNvZGluZzogdXRmOCAtKi0KKyMgVGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uIGlzIHJlcXVpcmVkIGZvciBydW5uaW5nIFBDXFZTOS4wXGJ1aWxkX3NzbC5weQorCiAjIFNjcmlwdCBmb3IgcHJlcGFyaW5nIE9wZW5TU0wgZm9yIGJ1aWxkaW5nIG9uIFdpbmRvd3MuCiAjIFVzZXMgUGVybCB0byBjcmVhdGUgbm1ha2UgbWFrZWZpbGVzIGFuZCBvdGhlcndpc2UgcHJlcGFyZSB0aGUgd2F5CiAjIGZvciBidWlsZGluZyBvbiAzMiBvciA2NCBiaXQgcGxhdGZvcm1zLgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weWV4cGF0LnZjeHByb2ogYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagppbmRleCBhMzE5ZmY5Li5lOGJlMzM3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvagpAQCAtNTksNyArNTksNyBAQAogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChQeVNvdXJjZVBhdGgpTW9kdWxlc1xleHBhdDslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlBZRVhQQVRfRVhQT1JUUztIQVZFX0VYUEFUX0g7WE1MX05TO1hNTF9EVEQ7QllURU9SREVSPTEyMzQ7WE1MX0NPTlRFWFRfQllURVM9MTAyNDtYTUxfU1RBVElDO0hBVkVfTUVNTU9WRTslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CisgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X0NSVF9TRUNVUkVfTk9fV0FSTklOR1M7UFlFWFBBVF9FWFBPUlRTO1hNTF9TVEFUSUM7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgIDwvQ2xDb21waWxlPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CkBAIC02OCw2ICs2OCw3IEBACiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xweWV4cGF0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGxvYWRsaWJyYXJ5LmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHBhcnNlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XHhtbHJvbGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1sdG9rLmMiIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9weWV4cGF0LnZjeHByb2ouZmlsdGVycwppbmRleCBmOGQ0NjAyLi5jYjAyODQ3IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5ZXhwYXQudmN4cHJvai5maWx0ZXJzCisrKyBiL1BDYnVpbGQvcHlleHBhdC52Y3hwcm9qLmZpbHRlcnMKQEAgLTIwLDYgKzIwLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNccHlleHBhdC5jIj4KICAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXGV4cGF0XGxvYWRsaWJyYXJ5LmMiPgorICAgICAgPEZpbHRlcj5Tb3VyY2UgRmlsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcZXhwYXRceG1scGFyc2UuYyI+CiAgICAgICA8RmlsdGVyPlNvdXJjZSBGaWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24ucHJvcHMgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwppbmRleCAyMWVhNWZhLi5jZWJiODZmIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbi5wcm9wcworKysgYi9QQ2J1aWxkL3B5dGhvbi5wcm9wcwpAQCAtMzIsMTAgKzMyLDEwIEBACiAKICAgICA8IS0tIERpcmVjdG9yaWVzIG9mIGV4dGVybmFsIHByb2plY3RzLiB0Y2x0ayBpcyBoYW5kbGVkIGluIHRjbHRrLnByb3BzIC0tPgogICAgIDxFeHRlcm5hbHNEaXI+JChbU3lzdGVtLklPLlBhdGhdOjpHZXRGdWxsUGF0aChgJChQeVNvdXJjZVBhdGgpZXh0ZXJuYWxzXGApKTwvRXh0ZXJuYWxzRGlyPgotICAgIDxzcWxpdGUzRGlyPiQoRXh0ZXJuYWxzRGlyKXNxbGl0ZS0zLjguMTEuMFw8L3NxbGl0ZTNEaXI+CisgICAgPHNxbGl0ZTNEaXI+JChFeHRlcm5hbHNEaXIpc3FsaXRlLTMuMTQuMi4wXDwvc3FsaXRlM0Rpcj4KICAgICA8YnoyRGlyPiQoRXh0ZXJuYWxzRGlyKWJ6aXAyLTEuMC42XDwvYnoyRGlyPgotICAgIDxic2RkYkRpcj4kKEV4dGVybmFsc0RpcilkYi00LjcuMjUuMDwvYnNkZGJEaXI+Ci0gICAgPG9wZW5zc2xEaXI+JChFeHRlcm5hbHNEaXIpb3BlbnNzbC0xLjAuMmpcPC9vcGVuc3NsRGlyPgorICAgIDxic2RkYkRpcj4kKEV4dGVybmFsc0Rpcilic2RkYi00LjcuMjUuMDwvYnNkZGJEaXI+CisgICAgPG9wZW5zc2xEaXI+JChFeHRlcm5hbHNEaXIpb3BlbnNzbC0xLjAuMnBcPC9vcGVuc3NsRGlyPgogICAgIDxvcGVuc3NsSW5jbHVkZURpcj4kKG9wZW5zc2xEaXIpaW5jbHVkZTMyPC9vcGVuc3NsSW5jbHVkZURpcj4KICAgICA8b3BlbnNzbEluY2x1ZGVEaXIgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICdhbWQ2NCciPiQob3BlbnNzbERpcilpbmNsdWRlNjQ8L29wZW5zc2xJbmNsdWRlRGlyPgogICAgIDxuYXNtRGlyPiQoRXh0ZXJuYWxzRGlyKVxuYXNtLTIuMTEuMDZcPC9uYXNtRGlyPgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob24udmN4cHJvaiBiL1BDYnVpbGQvcHl0aG9uLnZjeHByb2oKaW5kZXggNDM4MGZlZC4uYzFhYjZlOSAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob24udmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbi52Y3hwcm9qCkBAIC05Myw2ICs5Myw4IEBACiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxUYXJnZXQgTmFtZT0iR2VuZXJhdGVQeXRob25CYXQiIEFmdGVyVGFyZ2V0cz0iQWZ0ZXJCdWlsZCI+CiAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8X1BHT1BhdGggQ29uZGl0aW9uPSIkKENvbmZpZ3VyYXRpb24pID09ICdQR0luc3RydW1lbnQnIGFuZCAkKFBsYXRmb3JtKSA9PSAnV2luMzInIj5Ac2V0IFBBVEg9JVBBVEglJTNCJChWQ0luc3RhbGxEaXIpYmluPC9fUEdPUGF0aD4KKyAgICAgIDxfUEdPUGF0aCBDb25kaXRpb249IiQoQ29uZmlndXJhdGlvbikgPT0gJ1BHSW5zdHJ1bWVudCcgYW5kICQoUGxhdGZvcm0pID09ICd4NjQnIj5Ac2V0IFBBVEg9JVBBVEglJTNCJChWQ0luc3RhbGxEaXIpYmluXGFtZDY0PC9fUEdPUGF0aD4KICAgICAgIDxfQ29udGVudD5AcmVtIFRoaXMgc2NyaXB0IGludm9rZXMgdGhlIG1vc3QgcmVjZW50bHkgYnVpbHQgUHl0aG9uIHdpdGggYWxsIGFyZ3VtZW50cwogQHJlbSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgaW50ZXJwcmV0ZXIuICBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkIGJ5IHRoZQogQHJlbSBidWlsZCBwcm9jZXNzIGFuZCBhbnkgY2hhbmdlcyAqd2lsbCogYmUgdGhyb3duIGF3YXkgYnkgdGhlIG5leHQKQEAgLTEwMCw2ICsxMDIsOSBAQAogQHJlbSBUaGlzIGlzIG9ubHkgbWVhbnQgYXMgYSBjb252ZW5pZW5jZSBmb3IgZGV2ZWxvcGluZyBDUHl0aG9uCiBAcmVtIGFuZCB1c2luZyBpdCBvdXRzaWRlIG9mIHRoYXQgY29udGV4dCBpcyBpbGwtYWR2aXNlZC4KIEBlY2hvIFJ1bm5pbmcgJChDb25maWd1cmF0aW9uKV58JChQbGF0Zm9ybSkgaW50ZXJwcmV0ZXIuLi4KK0BzZXRsb2NhbAorQHNldCBQWVRIT05IT01FPSQoUHlTb3VyY2VQYXRoKQorJChfUEdPUGF0aCkKIEAiJChPdXREaXIpcHl0aG9uJChQeURlYnVnRXh0KS5leGUiICUqCiA8L19Db250ZW50PgogICAgICAgPF9FeGlzdGluZ0NvbnRlbnQgQ29uZGl0aW9uPSJFeGlzdHMoJyQoUHlTb3VyY2VQYXRoKXB5dGhvbi5iYXQnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChQeVNvdXJjZVBhdGgpcHl0aG9uLmJhdCcpKTwvX0V4aXN0aW5nQ29udGVudD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKaW5kZXggZGE1ZDVkOS4uOTkyOTFlYSAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKKysrIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKQEAgLTM5MSwxNyArMzkxLDI1IEBACiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+CiAgIDxUYXJnZXQgTmFtZT0iX0dldEJ1aWxkSW5mbyIgQmVmb3JlVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIj4KLSAgICA8RXhlYyBDb21tYW5kPSJoZyBpZCAtYiAmZ3Q7ICZxdW90OyQoSW50RGlyKWhnYnJhbmNoLnR4dCZxdW90OyIgQ29udGludWVPbkVycm9yPSJ0cnVlIiAvPgotICAgIDxFeGVjIENvbW1hbmQ9ImhnIGlkIC1pICZndDsgJnF1b3Q7JChJbnREaXIpaGd2ZXJzaW9uLnR4dCZxdW90OyIgQ29udGludWVPbkVycm9yPSJ0cnVlIiAvPgotICAgIDxFeGVjIENvbW1hbmQ9ImhnIGlkIC10ICZndDsgJnF1b3Q7JChJbnREaXIpaGd0YWcudHh0JnF1b3Q7IiBDb250aW51ZU9uRXJyb3I9InRydWUiIC8+CiAgICAgPFByb3BlcnR5R3JvdXA+Ci0gICAgICA8SGdCcmFuY2ggQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWhnYnJhbmNoLnR4dCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKEludERpciloZ2JyYW5jaC50eHQnKS5UcmltKCkpPC9IZ0JyYW5jaD4KLSAgICAgIDxIZ1ZlcnNpb24gQ29uZGl0aW9uPSJFeGlzdHMoJyQoSW50RGlyKWhndmVyc2lvbi50eHQnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChJbnREaXIpaGd2ZXJzaW9uLnR4dCcpLlRyaW0oKSk8L0hnVmVyc2lvbj4KLSAgICAgIDxIZ1RhZyBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpaGd0YWcudHh0JykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoSW50RGlyKWhndGFnLnR4dCcpLlRyaW0oKSk8L0hnVGFnPgorICAgICAgPEdJVCBDb25kaXRpb249IiQoR0lUKSA9PSAnJyI+Z2l0PC9HSVQ+CisgICAgICA8X0dJVD4kKEdJVCk8L19HSVQ+CisgICAgICA8X0dJVCBDb25kaXRpb249IiQoR0lULkNvbnRhaW5zKGAgYCkpIj4iJChHSVQpIjwvX0dJVD4KICAgICA8L1Byb3BlcnR5R3JvdXA+CisgICAgPE1lc3NhZ2UgVGV4dD0iR2V0dGluZyBidWlsZCBpbmZvIGZyb20gJChfR0lUKSIgSW1wb3J0YW5jZT0iaGlnaCIgLz4KKyAgICA8TWFrZURpciBEaXJlY3Rvcmllcz0iJChJbnREaXIpIiBDb25kaXRpb249IiFFeGlzdHMoJChJbnREaXIpKSIgLz4KKyAgICA8RXhlYyBDb21tYW5kPSIkKF9HSVQpIG5hbWUtcmV2IC0tbmFtZS1vbmx5IEhFQUQgJmd0OyAmcXVvdDskKEludERpcilnaXRicmFuY2gudHh0JnF1b3Q7IiBDb250aW51ZU9uRXJyb3I9InRydWUiIC8+CisgICAgPEV4ZWMgQ29tbWFuZD0iJChfR0lUKSByZXYtcGFyc2UgLS1zaG9ydCBIRUFEICZndDsgJnF1b3Q7JChJbnREaXIpZ2l0dmVyc2lvbi50eHQmcXVvdDsiIENvbnRpbnVlT25FcnJvcj0idHJ1ZSIgLz4KKyAgICA8RXhlYyBDb21tYW5kPSIkKF9HSVQpIGRlc2NyaWJlIC0tYWxsIC0tYWx3YXlzIC0tZGlydHkgJmd0OyAmcXVvdDskKEludERpcilnaXR0YWcudHh0JnF1b3Q7IiBDb250aW51ZU9uRXJyb3I9InRydWUiIC8+CisgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICA8R2l0QnJhbmNoIENvbmRpdGlvbj0iRXhpc3RzKCckKEludERpcilnaXRicmFuY2gudHh0JykiPiQoW1N5c3RlbS5JTy5GaWxlXTo6UmVhZEFsbFRleHQoJyQoSW50RGlyKWdpdGJyYW5jaC50eHQnKS5UcmltKCkpPC9HaXRCcmFuY2g+CisgICAgICA8R2l0VmVyc2lvbiBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpZ2l0dmVyc2lvbi50eHQnKSI+JChbU3lzdGVtLklPLkZpbGVdOjpSZWFkQWxsVGV4dCgnJChJbnREaXIpZ2l0dmVyc2lvbi50eHQnKS5UcmltKCkpPC9HaXRWZXJzaW9uPgorICAgICAgPEdpdFRhZyBDb25kaXRpb249IkV4aXN0cygnJChJbnREaXIpZ2l0dGFnLnR4dCcpIj4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCckKEludERpcilnaXR0YWcudHh0JykuVHJpbSgpKTwvR2l0VGFnPgorICAgIDwvUHJvcGVydHlHcm91cD4KKyAgICA8TWVzc2FnZSBUZXh0PSJCdWlsZGluZyAkKEdpdFRhZyk6JChHaXRWZXJzaW9uKSAkKEdpdEJyYW5jaCkiIEltcG9ydGFuY2U9ImhpZ2giIC8+CiAgICAgPEl0ZW1Hcm91cD4KICAgICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xnZXRidWlsZGluZm8uYyI+Ci0gICAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5IR1ZFUlNJT049IiQoSGdWZXJzaW9uKSI7SEdUQUc9IiQoSGdUYWcpIjtIR0JSQU5DSD0iJChIZ0JyYW5jaCkiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPkdJVFZFUlNJT049IiQoR2l0VmVyc2lvbikiO0dJVFRBRz0iJChHaXRUYWcpIjtHSVRCUkFOQ0g9IiQoR2l0QnJhbmNoKSI7JShQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyk8L1ByZXByb2Nlc3NvckRlZmluaXRpb25zPgogICAgICAgPC9DbENvbXBpbGU+CiAgICAgPC9JdGVtR3JvdXA+CiAgIDwvVGFyZ2V0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9yZWFkbWUudHh0IGIvUENidWlsZC9yZWFkbWUudHh0CmluZGV4IDY3YWRiN2YuLjU1NmE4ZjIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcmVhZG1lLnR4dAorKysgYi9QQ2J1aWxkL3JlYWRtZS50eHQKQEAgLTEsMzE0ICsxLDMzMCBAQAotUXVpY2sgU3RhcnQgR3VpZGUNCi0tLS0tLS0tLS0tLS0tLS0tLQ0KLQ0KLTEuICBJbnN0YWxsIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMDgsIGFueSBlZGl0aW9uLg0KLTIuICBJbnN0YWxsIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMTAsIGFueSBlZGl0aW9uLCBvciBXaW5kb3dzIFNESyA3LjENCi0gICAgYW5kIGFueSB2ZXJzaW9uIG9mIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIG5ld2VyIHRoYW4gMjAxMC4NCi0zLiAgSW5zdGFsbCBTdWJ2ZXJzaW9uLCBhbmQgbWFrZSBzdXJlICdzdm4uZXhlJyBpcyBvbiB5b3VyIFBBVEguDQotNC4gIFJ1biAiYnVpbGQuYmF0IC1lIiB0byBidWlsZCBQeXRob24gaW4gMzItYml0IFJlbGVhc2UgY29uZmlndXJhdGlvbi4NCi01LiAgKE9wdGlvbmFsLCBidXQgcmVjb21tZW5kZWQpIFJ1biB0aGUgdGVzdCBzdWl0ZSB3aXRoICJydC5iYXQgLXEiLg0KLQ0KLQ0KLUJ1aWxkaW5nIFB5dGhvbiB1c2luZyBNU1ZDIDkuMCB2aWEgTVNCdWlsZA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLQ0KLVRoaXMgZGlyZWN0b3J5IGlzIHVzZWQgdG8gYnVpbGQgUHl0aG9uIGZvciBXaW4zMiBhbmQgeDY0IHBsYXRmb3JtcywgZS5nLg0KLVdpbmRvd3MgMjAwMCBhbmQgbGF0ZXIuICBJbiBvcmRlciB0byB1c2UgdGhlIHByb2plY3QgZmlsZXMgaW4gdGhpcw0KLWRpcmVjdG9yeSwgeW91IG11c3QgaGF2ZSBpbnN0YWxsZWQgdGhlIE1TVkMgOS4wIGNvbXBpbGVycywgdGhlIHY5MA0KLVBsYXRmb3JtVG9vbHNldCBwcm9qZWN0IGZpbGVzIGZvciBNU0J1aWxkLCBhbmQgTVNCdWlsZCB2ZXJzaW9uIDQuMCBvciBsYXRlci4NCi1UaGUgZWFzaWVzdCB3YXkgdG8gbWFrZSBzdXJlIHlvdSBoYXZlIGFsbCBvZiB0aGVzZSBjb21wb25lbnRzIGlzIHRvIGluc3RhbGwNCi1WaXN1YWwgU3R1ZGlvIDIwMDggYW5kIFZpc3VhbCBTdHVkaW8gMjAxMC4gIEFub3RoZXIgY29uZmlndXJhdGlvbiBwcm92ZW4NCi10byB3b3JrIGlzIFZpc3VhbCBTdHVkaW8gMjAwOCwgV2luZG93cyBTREsgNy4xLCBhbmQgVmlzdWFsIFN0dWRpbyAyMDEzLg0KLQ0KLUlmIHlvdSBvbmx5IGhhdmUgVmlzdWFsIFN0dWRpbyAyMDA4IGF2YWlsYWJsZSwgdXNlIHRoZSBwcm9qZWN0IGZpbGVzIGluDQotLi4vUEMvVlM5LjAgd2hpY2ggYXJlIGZ1bGx5IHN1cHBvcnRlZCBhbmQgc3BlY2lmaWNhbGx5IGZvciBWUyAyMDA4Lg0KLQ0KLUlmIHlvdSBkbyBub3QgaGF2ZSBWaXN1YWwgU3R1ZGlvIDIwMDggYXZhaWxhYmxlLCB5b3UgY2FuIHVzZSB0aGVzZSBwcm9qZWN0DQotZmlsZXMgdG8gYnVpbGQgdXNpbmcgYSBkaWZmZXJlbnQgdmVyc2lvbiBvZiBNU1ZDLiAgRm9yIGV4YW1wbGUsIHVzZQ0KLQ0KLSAgIFBDYnVpbGRcYnVpbGQuYmF0ICIvcDpQbGF0Zm9ybVRvb2xzZXQ9djEwMCINCi0NCi10byBidWlsZCB1c2luZyBNU1ZDMTAgKFZpc3VhbCBTdHVkaW8gMjAxMCkuDQotDQotKioqV0FSTklORyoqKg0KLUJ1aWxkaW5nIFB5dGhvbiAyLjcgZm9yIFdpbmRvd3MgdXNpbmcgYW55IHRvb2xjaGFpbiB0aGF0IGRvZXNuJ3QgbGluaw0KLWFnYWluc3QgTVNWQ1JUOTAuZGxsIGlzICp1bnN1cHBvcnRlZCogYXMgdGhlIHJlc3VsdGluZyBweXRob24uZXhlIHdpbGwNCi1ub3QgYmUgYWJsZSB0byB1c2UgcHJlY29tcGlsZWQgZXh0ZW5zaW9uIG1vZHVsZXMgdGhhdCBkbyBsaW5rIGFnYWluc3QNCi1NU1ZDUlQ5MC5kbGwuDQotDQotRm9yIG90aGVyIFdpbmRvd3MgcGxhdGZvcm1zIGFuZCBjb21waWxlcnMsIHNlZSAuLi9QQy9yZWFkbWUudHh0Lg0KLQ0KLUFsbCB5b3UgbmVlZCB0byBkbyB0byBidWlsZCBpcyBvcGVuIHRoZSBzb2x1dGlvbiAicGNidWlsZC5zbG4iIGluIFZpc3VhbA0KLVN0dWRpbywgc2VsZWN0IHRoZSBkZXNpcmVkIGNvbWJpbmF0aW9uIG9mIGNvbmZpZ3VyYXRpb24gYW5kIHBsYXRmb3JtLA0KLXRoZW4gYnVpbGQgd2l0aCAiQnVpbGQgU29sdXRpb24iLiAgWW91IGNhbiBhbHNvIGJ1aWxkIGZyb20gdGhlIGNvbW1hbmQNCi1saW5lIHVzaW5nIHRoZSAiYnVpbGQuYmF0IiBzY3JpcHQgaW4gdGhpcyBkaXJlY3Rvcnk7IHNlZSBiZWxvdyBmb3INCi1kZXRhaWxzLiAgVGhlIHNvbHV0aW9uIGlzIGNvbmZpZ3VyZWQgdG8gYnVpbGQgdGhlIHByb2plY3RzIGluIHRoZSBjb3JyZWN0DQotb3JkZXIuDQotDQotVGhlIHNvbHV0aW9uIGN1cnJlbnRseSBzdXBwb3J0cyB0d28gcGxhdGZvcm1zLiAgVGhlIFdpbjMyIHBsYXRmb3JtIGlzDQotdXNlZCB0byBidWlsZCBzdGFuZGFyZCB4ODYtY29tcGF0aWJsZSAzMi1iaXQgYmluYXJpZXMsIG91dHB1dCBpbnRvIHRoaXMNCi1kaXJlY3RvcnkuICBUaGUgeDY0IHBsYXRmb3JtIGlzIHVzZWQgZm9yIGJ1aWxkaW5nIDY0LWJpdCBBTUQ2NCAoYWthDQoteDg2XzY0IG9yIEVNNjRUKSBiaW5hcmllcywgb3V0cHV0IGludG8gdGhlIGFtZDY0IHN1Yi1kaXJlY3RvcnkuICBUaGUNCi1JdGFuaXVtIChJQS02NCkgcGxhdGZvcm0gaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4NCi0NCi1Gb3VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBzb2x1dGlvbjoNCi1EZWJ1Zw0KLSAgICBVc2VkIHRvIGJ1aWxkIFB5dGhvbiB3aXRoIGV4dHJhIGRlYnVnZ2luZyBjYXBhYmlsaXRpZXMsIGVxdWl2YWxlbnQNCi0gICAgdG8gdXNpbmcgLi9jb25maWd1cmUgLS13aXRoLXB5ZGVidWcgb24gVU5JWC4gIEFsbCBiaW5hcmllcyBidWlsdA0KLSAgICB1c2luZyB0aGlzIGNvbmZpZ3VyYXRpb24gaGF2ZSAiX2QiIGFkZGVkIHRvIHRoZWlyIG5hbWU6DQotICAgIHB5dGhvbjI3X2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLiAgQm90aCB0aGUNCi0gICAgYnVpbGQgYW5kIHJ0IChydW4gdGVzdCkgYmF0Y2ggZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYWNjZXB0IGEgLWQNCi0gICAgb3B0aW9uIGZvciBkZWJ1ZyBidWlsZHMuICBJZiB5b3UgYXJlIGJ1aWxkaW5nIFB5dGhvbiB0byBoZWxwIHdpdGgNCi0gICAgZGV2ZWxvcG1lbnQgb2YgQ1B5dGhvbiwgeW91IHdpbGwgbW9zdCBsaWtlbHkgdXNlIHRoaXMgY29uZmlndXJhdGlvbi4NCi1QR0luc3RydW1lbnQsIFBHVXBkYXRlDQotICAgIFVzZWQgdG8gYnVpbGQgUHl0aG9uIGluIFJlbGVhc2UgY29uZmlndXJhdGlvbiB1c2luZyBQR08sIHdoaWNoDQotICAgIHJlcXVpcmVzIFByb2Zlc3Npb25hbCBFZGl0aW9uIG9mIFZpc3VhbCBTdHVkaW8gMjAwOC4gIFNlZSB0aGUNCi0gICAgIlByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiIgc2VjdGlvbiBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4NCi0gICAgQnVpbGQgb3V0cHV0IGZyb20gZWFjaCBvZiB0aGVzZSBjb25maWd1cmF0aW9ucyBsYW5kcyBpbiBpdHMgb3duDQotICAgIHN1Yi1kaXJlY3Rvcnkgb2YgdGhpcyBkaXJlY3RvcnkuICBUaGUgb2ZmaWNpYWwgUHl0aG9uIHJlbGVhc2VzIG1heQ0KLSAgICBiZSBidWlsdCB1c2luZyB0aGVzZSBjb25maWd1cmF0aW9ucy4NCi1SZWxlYXNlDQotICAgIFVzZWQgdG8gYnVpbGQgUHl0aG9uIGFzIGl0IGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcHJvZHVjdGlvbg0KLSAgICBzZXR0aW5ncywgdGhvdWdoIHdpdGhvdXQgUEdPLg0KLQ0KLQ0KLUJ1aWxkaW5nIFB5dGhvbiB1c2luZyB0aGUgYnVpbGQuYmF0IHNjcmlwdA0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCi1JbiB0aGlzIGRpcmVjdG9yeSB5b3UgY2FuIGZpbmQgYnVpbGQuYmF0LCBhIHNjcmlwdCBkZXNpZ25lZCB0byBtYWtlDQotYnVpbGRpbmcgUHl0aG9uIG9uIFdpbmRvd3Mgc2ltcGxlci4gIFRoaXMgc2NyaXB0IHdpbGwgdXNlIHRoZSBlbnYuYmF0DQotc2NyaXB0IHRvIGRldGVjdCBvbmUgb2YgVmlzdWFsIFN0dWRpbyAyMDE1LCAyMDEzLCAyMDEyLCBvciAyMDEwLCBhbnkgb2YNCi13aGljaCBjb250YWlucyBhIHVzYWJsZSB2ZXJzaW9uIG9mIE1TQnVpbGQuDQotDQotQnkgZGVmYXVsdCwgYnVpbGQuYmF0IHdpbGwgYnVpbGQgUHl0aG9uIGluIFJlbGVhc2UgY29uZmlndXJhdGlvbiBmb3INCi10aGUgMzItYml0IFdpbjMyIHBsYXRmb3JtLiAgSXQgYWNjZXB0cyBzZXZlcmFsIGFyZ3VtZW50cyB0byBjaGFuZ2UNCi10aGlzIGJlaGF2aW9yLCB0cnkgYGJ1aWxkLmJhdCAtaGAgdG8gbGVhcm4gbW9yZS4NCi0NCi0NCi1MZWdhY3kgc3VwcG9ydA0KLS0tLS0tLS0tLS0tLS0tDQotDQotWW91IGNhbiBmaW5kIGJ1aWxkIGRpcmVjdG9yaWVzIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBWaXN1YWwgU3R1ZGlvIGFuZA0KLVZpc3VhbCBDKysgaW4gdGhlIFBDIGRpcmVjdG9yeS4gIFRoZSBwcm9qZWN0IGZpbGVzIGluIFBDL1ZTOS4wLyBhcmUNCi1zcGVjaWZpYyB0byBWaXN1YWwgU3R1ZGlvIDIwMDgsIGFuZCB3aWxsIGJlIGZ1bGx5IHN1cHBvcnRlZCBmb3IgdGhlIGxpZmUNCi1vZiBQeXRob24gMi43Lg0KLQ0KLVRoZSBmb2xsb3dpbmcgbGVnYWN5IGJ1aWxkIGRpcmVjdG9yaWVzIGFyZSBubyBsb25nZXIgbWFpbnRhaW5lZCBhbmQgbWF5DQotbm90IHdvcmsgb3V0IG9mIHRoZSBib3guDQotDQotUEMvVkM2Lw0KLSAgICBWaXN1YWwgQysrIDYuMA0KLVBDL1ZTNy4xLw0KLSAgICBWaXN1YWwgU3R1ZGlvIDIwMDMgKDcuMSkNCi1QQy9WUzguMC8NCi0gICAgVmlzdWFsIFN0dWRpbyAyMDA1ICg4LjApDQotDQotDQotQyBSdW50aW1lDQotLS0tLS0tLS0tDQotDQotVmlzdWFsIFN0dWRpbyAyMDA4IHVzZXMgdmVyc2lvbiA5IG9mIHRoZSBDIHJ1bnRpbWUgKE1TVkNSVDkpLiAgVGhlIGV4ZWN1dGFibGVzDQotYXJlIGxpbmtlZCB0byBhIENSVCAic2lkZSBieSBzaWRlIiBhc3NlbWJseSB3aGljaCBtdXN0IGJlIHByZXNlbnQgb24gdGhlIHRhcmdldA0KLW1hY2hpbmUuICBUaGlzIGlzIGF2YWlsYWJsZSB1bmRlciB0aGUgVkMvUmVkaXN0IGZvbGRlciBvZiB5b3VyIHZpc3VhbCBzdHVkaW8NCi1kaXN0cmlidXRpb24uIE9uIFhQIGFuZCBsYXRlciBvcGVyYXRpbmcgc3lzdGVtcyB0aGF0IHN1cHBvcnQNCi1zaWRlLWJ5LXNpZGUgYXNzZW1ibGllcyBpdCBpcyBub3QgZW5vdWdoIHRvIGhhdmUgdGhlIG1zdmNydDkwLmRsbCBwcmVzZW50LA0KLWl0IGhhcyB0byBiZSB0aGVyZSBhcyBhIHdob2xlIGFzc2VtYmx5LCB0aGF0IGlzLCBhIGZvbGRlciB3aXRoIHRoZSAuZGxsDQotYW5kIGEgLm1hbmlmZXN0LiAgQWxzbywgYSBjaGVjayBpcyBtYWRlIGZvciB0aGUgY29ycmVjdCB2ZXJzaW9uLg0KLVRoZXJlZm9yZSwgb25lIHNob3VsZCBkaXN0cmlidXRlIHRoaXMgYXNzZW1ibHkgd2l0aCB0aGUgZGxscywgYW5kIGtlZXANCi1pdCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuICBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZGVyIHN5c3RlbXMsIG9uZSBzaG91bGQNCi1hbHNvIHNldCB0aGUgUEFUSCB0byB0aGlzIGRpcmVjdG9yeSBzbyB0aGF0IHRoZSBkbGwgY2FuIGJlIGZvdW5kLg0KLUZvciBtb3JlIGluZm8sIHNlZSB0aGUgUmVhZG1lIGluIHRoZSBWQy9SZWRpc3QgZm9sZGVyLg0KLQ0KLQ0KLVN1Yi1Qcm9qZWN0cw0KLS0tLS0tLS0tLS0tLQ0KLQ0KLVRoZSBDUHl0aG9uIHByb2plY3QgaXMgc3BsaXQgdXAgaW50byBzZXZlcmFsIHNtYWxsZXIgc3ViLXByb2plY3RzIHdoaWNoDQotYXJlIG1hbmFnZWQgYnkgdGhlIHBjYnVpbGQuc2xuIHNvbHV0aW9uIGZpbGUuICBFYWNoIHN1Yi1wcm9qZWN0IGlzDQotcmVwcmVzZW50ZWQgYnkgYSAudmN4cHJvaiBhbmQgYSAudmN4cHJvai5maWx0ZXJzIGZpbGUgc3RhcnRpbmcgd2l0aCB0aGUNCi1uYW1lIG9mIHRoZSBzdWItcHJvamVjdC4gIFRoZXNlIHN1Yi1wcm9qZWN0cyBmYWxsIGludG8gYSBmZXcgZ2VuZXJhbA0KLWNhdGVnb3JpZXM6DQotDQotVGhlIGZvbGxvd2luZyBzdWItcHJvamVjdHMgcmVwcmVzZW50IHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gYnVpbGQNCi1hIGZ1bmN0aW9uaW5nIENQeXRob24gaW50ZXJwcmV0ZXIuICBJZiBub3RoaW5nIGVsc2UgYnVpbGRzIGJ1dCB0aGVzZSwNCi15b3UnbGwgaGF2ZSBhIHZlcnkgbGltaXRlZCBidXQgdXNhYmxlIHB5dGhvbi5leGU6DQotcHl0aG9uY29yZQ0KLSAgICAuZGxsIGFuZCAubGliDQotcHl0aG9uDQotICAgIC5leGUNCi0NCi1UaGVzZSBzdWItcHJvamVjdHMgcHJvdmlkZSBleHRyYSBleGVjdXRhYmxlcyB0aGF0IGFyZSB1c2VmdWwgZm9yIHJ1bm5pbmcNCi1DUHl0aG9uIGluIGRpZmZlcmVudCB3YXlzOg0KLXB5dGhvbncNCi0gICAgcHl0aG9udy5leGUsIGEgdmFyaWFudCBvZiBweXRob24uZXhlIHRoYXQgZG9lc24ndCBvcGVuIGEgQ29tbWFuZA0KLSAgICBQcm9tcHQgd2luZG93DQotcHlsYXVuY2hlcg0KLSAgICBweS5leGUsIHRoZSBQeXRob24gTGF1bmNoZXIgZm9yIFdpbmRvd3MsIHNlZQ0KLSAgICAgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zL3VzaW5nL3dpbmRvd3MuaHRtbCNsYXVuY2hlcg0KLXB5d2xhdW5jaGVyDQotICAgIHB5dy5leGUsIGEgdmFyaWFudCBvZiBweS5leGUgdGhhdCBkb2Vzbid0IG9wZW4gYSBDb21tYW5kIFByb21wdA0KLSAgICB3aW5kb3cNCi0NCi1UaGUgZm9sbG93aW5nIHN1Yi1wcm9qZWN0cyBhcmUgZm9yIGluZGl2aWR1YWwgbW9kdWxlcyBvZiB0aGUgc3RhbmRhcmQNCi1saWJyYXJ5IHdoaWNoIGFyZSBpbXBsZW1lbnRlZCBpbiBDOyBlYWNoIG9uZSBidWlsZHMgYSBETEwgKHJlbmFtZWQgdG8NCi0ucHlkKSBvZiB0aGUgc2FtZSBuYW1lIGFzIHRoZSBwcm9qZWN0Og0KLV9jdHlwZXMNCi1fY3R5cGVzX3Rlc3QNCi1fZWxlbWVudHRyZWUNCi1faGFzaGxpYg0KLV9tc2kNCi1fbXVsdGlwcm9jZXNzaW5nDQotX3NvY2tldA0KLV90ZXN0Y2FwaQ0KLXB5ZXhwYXQNCi1zZWxlY3QNCi11bmljb2RlZGF0YQ0KLXdpbnNvdW5kDQotDQotVGhlcmUgaXMgYWxzbyBhIHc5eHBvcGVuIHByb2plY3QgdG8gYnVpbGQgdzl4cG9wZW4uZXhlLCB3aGljaCBpcyB1c2VkDQotZm9yIHBsYXRmb3JtLnBvcGVuKCkgb24gcGxhdGZvcm1zIHdob3NlIENPTVNQRUMgcG9pbnRzIHRvICdjb21tYW5kLmNvbScuDQotDQotVGhlIGZvbGxvd2luZyBQeXRob24tY29udHJvbGxlZCBzdWItcHJvamVjdHMgd3JhcCBleHRlcm5hbCBwcm9qZWN0cy4NCi1Ob3RlIHRoYXQgdGhlc2UgZXh0ZXJuYWwgbGlicmFyaWVzIGFyZSBub3QgbmVjZXNzYXJ5IGZvciBhIHdvcmtpbmcNCi1pbnRlcnByZXRlciwgYnV0IHRoZXkgZG8gaW1wbGVtZW50IHNldmVyYWwgbWFqb3IgZmVhdHVyZXMuICBTZWUgdGhlDQotIkdldHRpbmcgRXh0ZXJuYWwgU291cmNlcyIgc2VjdGlvbiBiZWxvdyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KLWFib3V0IGdldHRpbmcgdGhlIHNvdXJjZSBmb3IgYnVpbGRpbmcgdGhlc2UgbGlicmFyaWVzLiAgVGhlIHN1Yi1wcm9qZWN0cw0KLWFyZToNCi1fYnNkZGINCi0gICAgUHl0aG9uIHdyYXBwZXIgZm9yIEJlcmtlbGV5IERCIHZlcnNpb24gNC43LjI1Lg0KLSAgICBIb21lcGFnZToNCi0gICAgICAgIGh0dHA6Ly93d3cub3JhY2xlLmNvbS91cy9wcm9kdWN0cy9kYXRhYmFzZS9iZXJrZWxleS1kYi8NCi1fYnoyDQotICAgIFB5dGhvbiB3cmFwcGVyIGZvciB2ZXJzaW9uIDEuMC42IG9mIHRoZSBsaWJiemlwMiBjb21wcmVzc2lvbiBsaWJyYXJ5DQotICAgIEhvbWVwYWdlOg0KLSAgICAgICAgaHR0cDovL3d3dy5iemlwLm9yZy8NCi1fc3NsDQotICAgIFB5dGhvbiB3cmFwcGVyIGZvciB2ZXJzaW9uIDEuMC4yaiBvZiB0aGUgT3BlblNTTCBzZWN1cmUgc29ja2V0cw0KLSAgICBsaWJyYXJ5LCB3aGljaCBpcyBidWlsdCBieSBzc2wudmN4cHJvag0KLSAgICBIb21lcGFnZToNCi0gICAgICAgIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvDQotDQotICAgIEJ1aWxkaW5nIE9wZW5TU0wgcmVxdWlyZXMgbmFzbS5leGUgKHRoZSBOZXR3aWRlIEFzc2VtYmxlciksIHZlcnNpb24NCi0gICAgMi4xMCBvciBuZXdlciBmcm9tDQotICAgICAgICBodHRwOi8vd3d3Lm5hc20udXMvDQotICAgIHRvIGJlIHNvbWV3aGVyZSBvbiB5b3VyIFBBVEguICBNb3JlIHJlY2VudCB2ZXJzaW9ucyBvZiBPcGVuU1NMIG1heQ0KLSAgICBuZWVkIGEgbGF0ZXIgdmVyc2lvbiBvZiBOQVNNLiBJZiBPcGVuU1NMJ3Mgc2VsZiB0ZXN0cyBkb24ndCBwYXNzLA0KLSAgICB5b3Ugc2hvdWxkIGZpcnN0IHRyeSB0byB1cGRhdGUgTkFTTSBhbmQgZG8gYSBmdWxsIHJlYnVpbGQgb2YNCi0gICAgT3BlblNTTC4gIElmIHlvdSB1c2UgdGhlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgbWV0aG9kDQotICAgIGZvciBnZXR0aW5nIHNvdXJjZXMsIGl0IGFsc28gZG93bmxvYWRzIGEgdmVyc2lvbiBvZiBOQVNNIHdoaWNoIHRoZQ0KLSAgICBsaWJlYXkvc3NsZWF5IHN1Yi1wcm9qZWN0cyB1c2UuDQotDQotICAgIFRoZSBsaWJlYXkvc3NsZWF5IHN1Yi1wcm9qZWN0cyBleHBlY3QgeW91ciBPcGVuU1NMIHNvdXJjZXMgdG8gaGF2ZQ0KLSAgICBhbHJlYWR5IGJlZW4gY29uZmlndXJlZCBhbmQgYmUgcmVhZHkgdG8gYnVpbGQuICBJZiB5b3UgZ2V0IHlvdXIgc291cmNlcw0KLSAgICBmcm9tIHN2bi5weXRob24ub3JnIGFzIHN1Z2dlc3RlZCBpbiB0aGUgIkdldHRpbmcgRXh0ZXJuYWwgU291cmNlcyINCi0gICAgc2VjdGlvbiBiZWxvdywgdGhlIE9wZW5TU0wgc291cmNlIHdpbGwgYWxyZWFkeSBiZSByZWFkeSB0byBnby4gIElmDQotICAgIHlvdSB3YW50IHRvIGJ1aWxkIGEgZGlmZmVyZW50IHZlcnNpb24sIHlvdSB3aWxsIG5lZWQgdG8gcnVuDQotDQotICAgICAgIFBDYnVpbGRccHJlcGFyZV9zc2wucHkgcGF0aFx0b1xvcGVuc3NsLXNvdXJjZS1kaXINCi0NCi0gICAgVGhhdCBzY3JpcHQgd2lsbCBwcmVwYXJlIHlvdXIgT3BlblNTTCBzb3VyY2VzIGluIHRoZSBzYW1lIHdheSB0aGF0DQotICAgIHRob3NlIGF2YWlsYWJsZSBvbiBzdm4ucHl0aG9uLm9yZyBoYXZlIGJlZW4gcHJlcGFyZWQuICBOb3RlIHRoYXQNCi0gICAgUGVybCBtdXN0IGJlIGluc3RhbGxlZCBhbmQgYXZhaWxhYmxlIG9uIHlvdXIgUEFUSCB0byBjb25maWd1cmUNCi0gICAgT3BlblNTTC4gIEFjdGl2ZVBlcmwgaXMgcmVjb21tZW5kZWQgYW5kIGlzIGF2YWlsYWJsZSBmcm9tDQotICAgICAgICBodHRwOi8vd3d3LmFjdGl2ZXN0YXRlLmNvbS9hY3RpdmVwZXJsLw0KLQ0KLSAgICBUaGUgbGliZWF5IGFuZCBzc2xlYXkgc3ViLXByb2plY3RzIHdpbGwgYnVpbGQgdGhlIG1vZHVsZXMgb2YgT3BlblNTTA0KLSAgICByZXF1aXJlZCBieSBfc3NsIGFuZCBfaGFzaGxpYiBhbmQgbWF5IG5lZWQgdG8gYmUgbWFudWFsbHkgdXBkYXRlZCB3aGVuDQotICAgIHVwZ3JhZGluZyB0byBhIG5ld2VyIHZlcnNpb24gb2YgT3BlblNTTCBvciB3aGVuIGFkZGluZyBuZXcNCi0gICAgZnVuY3Rpb25hbGl0eSB0byBfc3NsIG9yIF9oYXNobGliLiBUaGV5IHdpbGwgbm90IGNsZWFuIHVwIHRoZWlyIG91dHB1dA0KLSAgICB3aXRoIHRoZSBub3JtYWwgQ2xlYW4gdGFyZ2V0OyBDbGVhbkFsbCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLg0KLV9zcWxpdGUzDQotICAgIFdyYXBzIFNRTGl0ZSAzLjguMTEuMCwgd2hpY2ggaXMgaXRzZWxmIGJ1aWx0IGJ5IHNxbGl0ZTMudmN4cHJvag0KLSAgICBIb21lcGFnZToNCi0gICAgICAgIGh0dHA6Ly93d3cuc3FsaXRlLm9yZy8NCi1fdGtpbnRlcg0KLSAgICBXcmFwcyB2ZXJzaW9uIDguNS4xNSBvZiB0aGUgVGsgd2luZG93aW5nIHN5c3RlbS4NCi0gICAgSG9tZXBhZ2U6DQotICAgICAgICBodHRwOi8vd3d3LnRjbC50ay8NCi0NCi0gICAgVGtpbnRlcidzIGRlcGVuZGVuY2llcyBhcmUgYnVpbHQgYnkgdGhlIHRjbC52Y3hwcm9qIGFuZCB0ay52Y3hwcm9qDQotICAgIHByb2plY3RzLiAgVGhlIHRpeC52Y3hwcm9qIHByb2plY3QgYWxzbyBidWlsZHMgdGhlIFRpeCBleHRlbmRlZA0KLSAgICB3aWRnZXQgc2V0IGZvciB1c2Ugd2l0aCBUa2ludGVyLg0KLQ0KLSAgICBUaG9zZSB0aHJlZSBwcm9qZWN0cyBpbnN0YWxsIHRoZWlyIHJlc3BlY3RpdmUgY29tcG9uZW50cyBpbiBhDQotICAgIGRpcmVjdG9yeSBhbG9uZ3NpZGUgdGhlIHNvdXJjZSBkaXJlY3RvcmllcyBjYWxsZWQgInRjbHRrIiBvbg0KLSAgICBXaW4zMiBhbmQgInRjbHRrNjQiIG9uIHg2NC4gIFRoZXkgYWxzbyBjb3B5IHRoZSBUY2wgYW5kIFRrIERMTHMNCi0gICAgaW50byB0aGUgY3VycmVudCBvdXRwdXQgZGlyZWN0b3J5LCB3aGljaCBzaG91bGQgZW5zdXJlIHRoYXQgVGtpbnRlcg0KLSAgICBpcyBhYmxlIHRvIGxvYWQgVGNsL1RrIHdpdGhvdXQgaGF2aW5nIHRvIGNoYW5nZSB5b3VyIFBBVEguDQotDQotICAgIFRoZSB0Y2wsIHRrLCBhbmQgdGl4IHN1Yi1wcm9qZWN0cyBkbyBub3QgY2xlYW4gdGhlaXIgYnVpbGRzIHdpdGgNCi0gICAgdGhlIG5vcm1hbCBDbGVhbiB0YXJnZXQ7IGlmIHlvdSBuZWVkIHRvIHJlYnVpbGQsIHlvdSBzaG91bGQgdXNlIHRoZQ0KLSAgICBDbGVhbkFsbCB0YXJnZXQgb3IgbWFudWFsbHkgZGVsZXRlIHRoZWlyIGJ1aWxkcy4NCi0NCi0NCi1HZXR0aW5nIEV4dGVybmFsIFNvdXJjZXMNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCi1UaGUgbGFzdCBjYXRlZ29yeSBvZiBzdWItcHJvamVjdHMgbGlzdGVkIGFib3ZlIHdyYXAgZXh0ZXJuYWwgcHJvamVjdHMNCi1QeXRob24gZG9lc24ndCBjb250cm9sLCBhbmQgYXMgc3VjaCBhIGxpdHRsZSBtb3JlIHdvcmsgaXMgcmVxdWlyZWQgaW4NCi1vcmRlciB0byBkb3dubG9hZCB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIGZvciBlYWNoIHByb2plY3QgYmVmb3JlIHRoZXkNCi1jYW4gYmUgYnVpbHQuICBIb3dldmVyLCBhIHNpbXBsZSBzY3JpcHQgaXMgcHJvdmlkZWQgdG8gbWFrZSB0aGlzIGFzDQotcGFpbmxlc3MgYXMgcG9zc2libGUsIGNhbGxlZCAiZ2V0X2V4dGVybmFscy5iYXQiIGFuZCBsb2NhdGVkIGluIHRoaXMNCi1kaXJlY3RvcnkuICBUaGlzIHNjcmlwdCBleHRyYWN0cyBhbGwgdGhlIGV4dGVybmFsIHN1Yi1wcm9qZWN0cyBmcm9tDQotICAgIGh0dHA6Ly9zdm4ucHl0aG9uLm9yZy9wcm9qZWN0cy9leHRlcm5hbA0KLXZpYSBTdWJ2ZXJzaW9uIChzbyB5b3UnbGwgbmVlZCBzdm4uZXhlIG9uIHlvdXIgUEFUSCkgYW5kIHBsYWNlcyB0aGVtDQotaW4gLi5cZXh0ZXJuYWxzIChyZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeSkuDQotDQotSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBkb3dubG9hZCBzb3VyY2VzIGZyb20gZWFjaCBwcm9qZWN0J3MgaG9tZXBhZ2UsDQotdGhvdWdoIHlvdSBtYXkgaGF2ZSB0byBjaGFuZ2UgZm9sZGVyIG5hbWVzIG9yIHBhc3MgdGhlIG5hbWVzIHRvIE1TQnVpbGQNCi1hcyB0aGUgdmFsdWVzIG9mIGNlcnRhaW4gcHJvcGVydGllcyBpbiBvcmRlciBmb3IgdGhlIGJ1aWxkIHNvbHV0aW9uIHRvDQotZmluZCB0aGVtLiAgVGhpcyBpcyBhbiBhZHZhbmNlZCB0b3BpYyBhbmQgbm90IG5lY2Vzc2FyaWx5IGZ1bGx5DQotc3VwcG9ydGVkLg0KLQ0KLVRoZSBnZXRfZXh0ZXJuYWxzLmJhdCBzY3JpcHQgaXMgY2FsbGVkIGF1dG9tYXRpY2FsbHkgYnkgYnVpbGQuYmF0IHdoZW4NCi15b3UgcGFzcyB0aGUgJy1lJyBvcHRpb24gdG8gaXQuDQotDQotDQotUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uDQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotDQotVGhlIHNvbHV0aW9uIGhhcyB0d28gY29uZmlndXJhdGlvbnMgZm9yIFBHTy4gVGhlIFBHSW5zdHJ1bWVudA0KLWNvbmZpZ3VyYXRpb24gbXVzdCBiZSBidWlsdCBmaXJzdC4gVGhlIFBHSW5zdHJ1bWVudCBiaW5hcmllcyBhcmUgbGlua2VkDQotYWdhaW5zdCBhIHByb2ZpbGluZyBsaWJyYXJ5IGFuZCBjb250YWluIGV4dHJhIGRlYnVnIGluZm9ybWF0aW9uLiBUaGUNCi1QR1VwZGF0ZSBjb25maWd1cmF0aW9uIHRha2VzIHRoZSBwcm9maWxpbmcgZGF0YSBhbmQgZ2VuZXJhdGVzIG9wdGltaXplZA0KLWJpbmFyaWVzLg0KLQ0KLVRoZSBidWlsZF9wZ28uYmF0IHNjcmlwdCBhdXRvbWF0ZXMgdGhlIGNyZWF0aW9uIG9mIG9wdGltaXplZCBiaW5hcmllcy4NCi1JdCBjcmVhdGVzIHRoZSBQR0kgZmlsZXMsIHJ1bnMgdGhlIHVuaXQgdGVzdCBzdWl0ZSBvciBQeUJlbmNoIHdpdGggdGhlDQotUEdJIHB5dGhvbiwgYW5kIGZpbmFsbHkgY3JlYXRlcyB0aGUgb3B0aW1pemVkIGZpbGVzLg0KLQ0KLVNlZQ0KLSAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZTdrMzJmNGsoVlMuOTApLmFzcHgNCi1mb3IgbW9yZSBvbiB0aGlzIHRvcGljLg0KLQ0KLQ0KLVN0YXRpYyBsaWJyYXJ5DQotLS0tLS0tLS0tLS0tLS0NCi0NCi1UaGUgc29sdXRpb24gaGFzIG5vIGNvbmZpZ3VyYXRpb24gZm9yIHN0YXRpYyBsaWJyYXJpZXMuIEhvd2V2ZXIgaXQgaXMNCi1lYXN5IHRvIGJ1aWxkIGEgc3RhdGljIGxpYnJhcnkgaW5zdGVhZCBvZiBhIERMTC4gWW91IHNpbXBseSBoYXZlIHRvIHNldA0KLXRoZSAiQ29uZmlndXJhdGlvbiBUeXBlIiB0byAiU3RhdGljIExpYnJhcnkgKC5saWIpIiBhbmQgYWx0ZXIgdGhlDQotcHJlcHJvY2Vzc29yIG1hY3JvICJQeV9FTkFCTEVfU0hBUkVEIiB0byAiUHlfTk9fRU5BQkxFX1NIQVJFRCIuIFlvdSBtYXkNCi1hbHNvIGhhdmUgdG8gY2hhbmdlIHRoZSAiUnVudGltZSBMaWJyYXJ5IiBmcm9tICJNdWx0aS10aHJlYWRlZCBETEwNCi0oL01EKSIgdG8gIk11bHRpLXRocmVhZGVkICgvTVQpIi4NCi0NCi0NCi1WaXN1YWwgU3R1ZGlvIHByb3BlcnRpZXMNCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi0NCi1UaGUgUENidWlsZCBzb2x1dGlvbiBtYWtlcyB1c2Ugb2YgVmlzdWFsIFN0dWRpbyBwcm9wZXJ0eSBmaWxlcyAoKi5wcm9wcykNCi10byBzaW1wbGlmeSBlYWNoIHByb2plY3QuIFRoZSBwcm9wZXJ0aWVzIGNhbiBiZSB2aWV3ZWQgaW4gdGhlIFByb3BlcnR5DQotTWFuYWdlciAoVmlldyAtPiBPdGhlciBXaW5kb3dzIC0+IFByb3BlcnR5IE1hbmFnZXIpIGJ1dCBzaG91bGQgYmUNCi1jYXJlZnVsbHkgbW9kaWZpZWQgYnkgaGFuZC4NCi0NCi1UaGUgcHJvcGVydHkgZmlsZXMgdXNlZCBhcmU6DQotICogcHl0aG9uICh2ZXJzaW9ucywgZGlyZWN0b3JpZXMgYW5kIGJ1aWxkIG5hbWVzKQ0KLSAqIHB5cHJvamVjdCAoYmFzZSBzZXR0aW5ncyBmb3IgYWxsIHByb2plY3RzKQ0KLSAqIG9wZW5zc2wgKHVzZWQgYnkgbGliZWF5IGFuZCBzc2xlYXkgcHJvamVjdHMpDQotICogdGNsdGsgKHVzZWQgYnkgX3RraW50ZXIsIHRjbCwgdGsgYW5kIHRpeCBwcm9qZWN0cykNCi0NCi1UaGUgcHlwcm9qZWN0IHByb3BlcnR5IGZpbGUgZGVmaW5lcyBhbGwgb2YgdGhlIGJ1aWxkIHNldHRpbmdzIGZvciBlYWNoDQotcHJvamVjdCwgd2l0aCBzb21lIHByb2plY3RzIG92ZXJyaWRpbmcgY2VydGFpbiBzcGVjaWZpYyB2YWx1ZXMuIFRoZSBHVUkNCi1kb2Vzbid0IGFsd2F5cyByZWZsZWN0IHRoZSBjb3JyZWN0IHNldHRpbmdzIGFuZCBtYXkgY29uZnVzZSB0aGUgdXNlcg0KLXdpdGggZmFsc2UgaW5mb3JtYXRpb24sIGVzcGVjaWFsbHkgZm9yIHNldHRpbmdzIHRoYXQgYXV0b21hdGljYWxseSBhZGFwdA0KLWZvciBkaWZmaXJlbnQgY29uZmlndXJhdGlvbnMuDQorUXVpY2sgU3RhcnQgR3VpZGUKKy0tLS0tLS0tLS0tLS0tLS0tCisKKzEuICBJbnN0YWxsIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMDgsIGFueSBlZGl0aW9uLgorMi4gIEluc3RhbGwgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gMjAxMCwgYW55IGVkaXRpb24sIG9yIFdpbmRvd3MgU0RLIDcuMQorICAgIGFuZCBhbnkgdmVyc2lvbiBvZiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBuZXdlciB0aGFuIDIwMTAuCisyYS4gT3B0aW9uYWxseSBpbnN0YWxsIFB5dGhvbiAzLjYgb3IgbGF0ZXIuICBJZiBub3QgaW5zdGFsbGVkLAorICAgIGdldF9leHRlcm5hbHMuYmF0IChidWlsZC5iYXQgLWUpIHdpbGwgZG93bmxvYWQgYW5kIHVzZSBQeXRob24gdmlhCisgICAgTnVHZXQuCiszLiAgUnVuICJidWlsZC5iYXQgLWUiIHRvIGJ1aWxkIFB5dGhvbiBpbiAzMi1iaXQgUmVsZWFzZSBjb25maWd1cmF0aW9uLgorNC4gIChPcHRpb25hbCwgYnV0IHJlY29tbWVuZGVkKSBSdW4gdGhlIHRlc3Qgc3VpdGUgd2l0aCAicnQuYmF0IC1xIi4KKworCitCdWlsZGluZyBQeXRob24gdXNpbmcgTVNWQyA5LjAgdmlhIE1TQnVpbGQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGlzIGRpcmVjdG9yeSBpcyB1c2VkIHRvIGJ1aWxkIFB5dGhvbiBmb3IgV2luMzIgYW5kIHg2NCBwbGF0Zm9ybXMsIGUuZy4KK1dpbmRvd3MgMjAwMCBhbmQgbGF0ZXIuICBJbiBvcmRlciB0byB1c2UgdGhlIHByb2plY3QgZmlsZXMgaW4gdGhpcworZGlyZWN0b3J5LCB5b3UgbXVzdCBoYXZlIGluc3RhbGxlZCB0aGUgTVNWQyA5LjAgY29tcGlsZXJzLCB0aGUgdjkwCitQbGF0Zm9ybVRvb2xzZXQgcHJvamVjdCBmaWxlcyBmb3IgTVNCdWlsZCwgYW5kIE1TQnVpbGQgdmVyc2lvbiA0LjAgb3IgbGF0ZXIuCitUaGUgZWFzaWVzdCB3YXkgdG8gbWFrZSBzdXJlIHlvdSBoYXZlIGFsbCBvZiB0aGVzZSBjb21wb25lbnRzIGlzIHRvIGluc3RhbGwKK1Zpc3VhbCBTdHVkaW8gMjAwOCBhbmQgVmlzdWFsIFN0dWRpbyAyMDEwLiAgQW5vdGhlciBjb25maWd1cmF0aW9uIHByb3ZlbgordG8gd29yayBpcyBWaXN1YWwgU3R1ZGlvIDIwMDgsIFdpbmRvd3MgU0RLIDcuMSwgYW5kIFZpc3VhbCBTdHVkaW8gMjAxMy4KKworSWYgeW91IG9ubHkgaGF2ZSBWaXN1YWwgU3R1ZGlvIDIwMDggYXZhaWxhYmxlLCB1c2UgdGhlIHByb2plY3QgZmlsZXMgaW4KKy4uL1BDL1ZTOS4wIHdoaWNoIGFyZSBmdWxseSBzdXBwb3J0ZWQgYW5kIHNwZWNpZmljYWxseSBmb3IgVlMgMjAwOC4KKworSWYgeW91IGRvIG5vdCBoYXZlIFZpc3VhbCBTdHVkaW8gMjAwOCBhdmFpbGFibGUsIHlvdSBjYW4gdXNlIHRoZXNlIHByb2plY3QKK2ZpbGVzIHRvIGJ1aWxkIHVzaW5nIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgTVNWQy4gIEZvciBleGFtcGxlLCB1c2UKKworICAgUENidWlsZFxidWlsZC5iYXQgIi9wOlBsYXRmb3JtVG9vbHNldD12MTAwIgorCit0byBidWlsZCB1c2luZyBNU1ZDMTAgKFZpc3VhbCBTdHVkaW8gMjAxMCkuCisKKyoqKldBUk5JTkcqKioKK0J1aWxkaW5nIFB5dGhvbiAyLjcgZm9yIFdpbmRvd3MgdXNpbmcgYW55IHRvb2xjaGFpbiB0aGF0IGRvZXNuJ3QgbGluaworYWdhaW5zdCBNU1ZDUlQ5MC5kbGwgaXMgKnVuc3VwcG9ydGVkKiBhcyB0aGUgcmVzdWx0aW5nIHB5dGhvbi5leGUgd2lsbAorbm90IGJlIGFibGUgdG8gdXNlIHByZWNvbXBpbGVkIGV4dGVuc2lvbiBtb2R1bGVzIHRoYXQgZG8gbGluayBhZ2FpbnN0CitNU1ZDUlQ5MC5kbGwuCisKK0ZvciBvdGhlciBXaW5kb3dzIHBsYXRmb3JtcyBhbmQgY29tcGlsZXJzLCBzZWUgLi4vUEMvcmVhZG1lLnR4dC4KKworVG8gYnVpbGQgbW9kdWxlcyB0aGF0IGRlcGVuZCBvbiBleHRlcm5hbCBsaWJyYXJpZXMsIHlvdSBuZWVkIHRvIGRvd25sb2FkCisoYW5kLCBmb3Igc29tZSBvZiB0aGVtLCBidWlsZCkgdGhvc2UgZmlyc3QuIEl0J3MgdGh1cyByZWNvbW1lbmRlZCB0byBidWlsZAorZnJvbSB0aGUgY29tbWFuZCBsaW5lIG9uY2UgYXMgc3BlY2lmaWVkIGJlbG93IHVuZGVyICJHZXR0aW5nIEV4dGVybmFsIFNvdXJjZXMiCithcyB0aGF0IGRvZXMgdGhpcyBhdXRvbWF0aWNhbGx5LgorCitUaGVuLCB0byBjb250aW51ZSBkZXZlbG9wbWVudCwgeW91IGNhbiBvcGVuIHRoZSBzb2x1dGlvbiAicGNidWlsZC5zbG4iIGluCitWaXN1YWwgU3R1ZGlvLCBzZWxlY3QgdGhlIGRlc2lyZWQgY29tYmluYXRpb24gb2YgY29uZmlndXJhdGlvbiBhbmQgcGxhdGZvcm0sCit0aGVuIGJ1aWxkIHdpdGggIkJ1aWxkIFNvbHV0aW9uIi4gIFlvdSBjYW4gYWxzbyBidWlsZCBmcm9tIHRoZSBjb21tYW5kCitsaW5lIHVzaW5nIHRoZSAiYnVpbGQuYmF0IiBzY3JpcHQgaW4gdGhpcyBkaXJlY3Rvcnk7IHNlZSBiZWxvdyBmb3IKK2RldGFpbHMuICBUaGUgc29sdXRpb24gaXMgY29uZmlndXJlZCB0byBidWlsZCB0aGUgcHJvamVjdHMgaW4gdGhlIGNvcnJlY3QKK29yZGVyLgorCitUbyBidWlsZCBhbiBpbnN0YWxsZXIgcGFja2FnZSwgcmVmZXIgdG8gdGhlIFJFQURNRSBpbiB0aGUgVG9vbHMvbXNpIGZvbGRlci4KKworVGhlIHNvbHV0aW9uIGN1cnJlbnRseSBzdXBwb3J0cyB0d28gcGxhdGZvcm1zLiAgVGhlIFdpbjMyIHBsYXRmb3JtIGlzCit1c2VkIHRvIGJ1aWxkIHN0YW5kYXJkIHg4Ni1jb21wYXRpYmxlIDMyLWJpdCBiaW5hcmllcywgb3V0cHV0IGludG8gdGhpcworZGlyZWN0b3J5LiAgVGhlIHg2NCBwbGF0Zm9ybSBpcyB1c2VkIGZvciBidWlsZGluZyA2NC1iaXQgQU1ENjQgKGFrYQoreDg2XzY0IG9yIEVNNjRUKSBiaW5hcmllcywgb3V0cHV0IGludG8gdGhlIGFtZDY0IHN1Yi1kaXJlY3RvcnkuICBUaGUKK0l0YW5pdW0gKElBLTY0KSBwbGF0Zm9ybSBpcyBubyBsb25nZXIgc3VwcG9ydGVkLgorCitGb3VyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBzb2x1dGlvbjoKK0RlYnVnCisgICAgVXNlZCB0byBidWlsZCBQeXRob24gd2l0aCBleHRyYSBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzLCBlcXVpdmFsZW50CisgICAgdG8gdXNpbmcgLi9jb25maWd1cmUgLS13aXRoLXB5ZGVidWcgb24gVU5JWC4gIEFsbCBiaW5hcmllcyBidWlsdAorICAgIHVzaW5nIHRoaXMgY29uZmlndXJhdGlvbiBoYXZlICJfZCIgYWRkZWQgdG8gdGhlaXIgbmFtZToKKyAgICBweXRob24yN19kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlCisgICAgYnVpbGQgYW5kIHJ0IChydW4gdGVzdCkgYmF0Y2ggZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYWNjZXB0IGEgLWQKKyAgICBvcHRpb24gZm9yIGRlYnVnIGJ1aWxkcy4gIElmIHlvdSBhcmUgYnVpbGRpbmcgUHl0aG9uIHRvIGhlbHAgd2l0aAorICAgIGRldmVsb3BtZW50IG9mIENQeXRob24sIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHVzZSB0aGlzIGNvbmZpZ3VyYXRpb24uCitQR0luc3RydW1lbnQsIFBHVXBkYXRlCisgICAgVXNlZCB0byBidWlsZCBQeXRob24gaW4gUmVsZWFzZSBjb25maWd1cmF0aW9uIHVzaW5nIFBHTywgd2hpY2gKKyAgICByZXF1aXJlcyBQcm9mZXNzaW9uYWwgRWRpdGlvbiBvZiBWaXN1YWwgU3R1ZGlvIDIwMDguICBTZWUgdGhlCisgICAgIlByb2ZpbGUgR3VpZGVkIE9wdGltaXphdGlvbiIgc2VjdGlvbiBiZWxvdyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICBCdWlsZCBvdXRwdXQgZnJvbSBlYWNoIG9mIHRoZXNlIGNvbmZpZ3VyYXRpb25zIGxhbmRzIGluIGl0cyBvd24KKyAgICBzdWItZGlyZWN0b3J5IG9mIHRoaXMgZGlyZWN0b3J5LiAgVGhlIG9mZmljaWFsIFB5dGhvbiByZWxlYXNlcyBtYXkKKyAgICBiZSBidWlsdCB1c2luZyB0aGVzZSBjb25maWd1cmF0aW9ucy4KK1JlbGVhc2UKKyAgICBVc2VkIHRvIGJ1aWxkIFB5dGhvbiBhcyBpdCBpcyBtZWFudCB0byBiZSB1c2VkIGluIHByb2R1Y3Rpb24KKyAgICBzZXR0aW5ncywgdGhvdWdoIHdpdGhvdXQgUEdPLgorCisKK0J1aWxkaW5nIFB5dGhvbiB1c2luZyB0aGUgYnVpbGQuYmF0IHNjcmlwdAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitJbiB0aGlzIGRpcmVjdG9yeSB5b3UgY2FuIGZpbmQgYnVpbGQuYmF0LCBhIHNjcmlwdCBkZXNpZ25lZCB0byBtYWtlCitidWlsZGluZyBQeXRob24gb24gV2luZG93cyBzaW1wbGVyLiAgVGhpcyBzY3JpcHQgd2lsbCB1c2UgdGhlIGVudi5iYXQKK3NjcmlwdCB0byBkZXRlY3Qgb25lIG9mIFZpc3VhbCBTdHVkaW8gMjAxNSwgMjAxMywgMjAxMiwgb3IgMjAxMCwgYW55IG9mCit3aGljaCBjb250YWlucyBhIHVzYWJsZSB2ZXJzaW9uIG9mIE1TQnVpbGQuCisKK0J5IGRlZmF1bHQsIGJ1aWxkLmJhdCB3aWxsIGJ1aWxkIFB5dGhvbiBpbiBSZWxlYXNlIGNvbmZpZ3VyYXRpb24gZm9yCit0aGUgMzItYml0IFdpbjMyIHBsYXRmb3JtLiAgSXQgYWNjZXB0cyBzZXZlcmFsIGFyZ3VtZW50cyB0byBjaGFuZ2UKK3RoaXMgYmVoYXZpb3IsIHRyeSBgYnVpbGQuYmF0IC1oYCB0byBsZWFybiBtb3JlLgorCisKK0xlZ2FjeSBzdXBwb3J0CistLS0tLS0tLS0tLS0tLQorCitZb3UgY2FuIGZpbmQgYnVpbGQgZGlyZWN0b3JpZXMgZm9yIG9sZGVyIHZlcnNpb25zIG9mIFZpc3VhbCBTdHVkaW8gYW5kCitWaXN1YWwgQysrIGluIHRoZSBQQyBkaXJlY3RvcnkuICBUaGUgcHJvamVjdCBmaWxlcyBpbiBQQy9WUzkuMC8gYXJlCitzcGVjaWZpYyB0byBWaXN1YWwgU3R1ZGlvIDIwMDgsIGFuZCB3aWxsIGJlIGZ1bGx5IHN1cHBvcnRlZCBmb3IgdGhlIGxpZmUKK29mIFB5dGhvbiAyLjcuCisKK1RoZSBmb2xsb3dpbmcgbGVnYWN5IGJ1aWxkIGRpcmVjdG9yaWVzIGFyZSBubyBsb25nZXIgbWFpbnRhaW5lZCBhbmQgbWF5Citub3Qgd29yayBvdXQgb2YgdGhlIGJveC4KKworUEMvVkM2LworICAgIFZpc3VhbCBDKysgNi4wCitQQy9WUzcuMS8KKyAgICBWaXN1YWwgU3R1ZGlvIDIwMDMgKDcuMSkKK1BDL1ZTOC4wLworICAgIFZpc3VhbCBTdHVkaW8gMjAwNSAoOC4wKQorCisKK0MgUnVudGltZQorLS0tLS0tLS0tCisKK1Zpc3VhbCBTdHVkaW8gMjAwOCB1c2VzIHZlcnNpb24gOSBvZiB0aGUgQyBydW50aW1lIChNU1ZDUlQ5KS4gIFRoZSBleGVjdXRhYmxlcworYXJlIGxpbmtlZCB0byBhIENSVCAic2lkZSBieSBzaWRlIiBhc3NlbWJseSB3aGljaCBtdXN0IGJlIHByZXNlbnQgb24gdGhlIHRhcmdldAorbWFjaGluZS4gIFRoaXMgaXMgYXZhaWxhYmxlIHVuZGVyIHRoZSBWQy9SZWRpc3QgZm9sZGVyIG9mIHlvdXIgdmlzdWFsIHN0dWRpbworZGlzdHJpYnV0aW9uLiBPbiBYUCBhbmQgbGF0ZXIgb3BlcmF0aW5nIHN5c3RlbXMgdGhhdCBzdXBwb3J0CitzaWRlLWJ5LXNpZGUgYXNzZW1ibGllcyBpdCBpcyBub3QgZW5vdWdoIHRvIGhhdmUgdGhlIG1zdmNydDkwLmRsbCBwcmVzZW50LAoraXQgaGFzIHRvIGJlIHRoZXJlIGFzIGEgd2hvbGUgYXNzZW1ibHksIHRoYXQgaXMsIGEgZm9sZGVyIHdpdGggdGhlIC5kbGwKK2FuZCBhIC5tYW5pZmVzdC4gIEFsc28sIGEgY2hlY2sgaXMgbWFkZSBmb3IgdGhlIGNvcnJlY3QgdmVyc2lvbi4KK1RoZXJlZm9yZSwgb25lIHNob3VsZCBkaXN0cmlidXRlIHRoaXMgYXNzZW1ibHkgd2l0aCB0aGUgZGxscywgYW5kIGtlZXAKK2l0IGluIHRoZSBzYW1lIGRpcmVjdG9yeS4gIEZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgc3lzdGVtcywgb25lIHNob3VsZAorYWxzbyBzZXQgdGhlIFBBVEggdG8gdGhpcyBkaXJlY3Rvcnkgc28gdGhhdCB0aGUgZGxsIGNhbiBiZSBmb3VuZC4KK0ZvciBtb3JlIGluZm8sIHNlZSB0aGUgUmVhZG1lIGluIHRoZSBWQy9SZWRpc3QgZm9sZGVyLgorCisKK1N1Yi1Qcm9qZWN0cworLS0tLS0tLS0tLS0tCisKK1RoZSBDUHl0aG9uIHByb2plY3QgaXMgc3BsaXQgdXAgaW50byBzZXZlcmFsIHNtYWxsZXIgc3ViLXByb2plY3RzIHdoaWNoCithcmUgbWFuYWdlZCBieSB0aGUgcGNidWlsZC5zbG4gc29sdXRpb24gZmlsZS4gIEVhY2ggc3ViLXByb2plY3QgaXMKK3JlcHJlc2VudGVkIGJ5IGEgLnZjeHByb2ogYW5kIGEgLnZjeHByb2ouZmlsdGVycyBmaWxlIHN0YXJ0aW5nIHdpdGggdGhlCituYW1lIG9mIHRoZSBzdWItcHJvamVjdC4gIFRoZXNlIHN1Yi1wcm9qZWN0cyBmYWxsIGludG8gYSBmZXcgZ2VuZXJhbAorY2F0ZWdvcmllczoKKworVGhlIGZvbGxvd2luZyBzdWItcHJvamVjdHMgcmVwcmVzZW50IHRoZSBiYXJlIG1pbmltdW0gcmVxdWlyZWQgdG8gYnVpbGQKK2EgZnVuY3Rpb25pbmcgQ1B5dGhvbiBpbnRlcnByZXRlci4gIElmIG5vdGhpbmcgZWxzZSBidWlsZHMgYnV0IHRoZXNlLAoreW91J2xsIGhhdmUgYSB2ZXJ5IGxpbWl0ZWQgYnV0IHVzYWJsZSBweXRob24uZXhlOgorcHl0aG9uY29yZQorICAgIC5kbGwgYW5kIC5saWIKK3B5dGhvbgorICAgIC5leGUKKworVGhlc2Ugc3ViLXByb2plY3RzIHByb3ZpZGUgZXh0cmEgZXhlY3V0YWJsZXMgdGhhdCBhcmUgdXNlZnVsIGZvciBydW5uaW5nCitDUHl0aG9uIGluIGRpZmZlcmVudCB3YXlzOgorcHl0aG9udworICAgIHB5dGhvbncuZXhlLCBhIHZhcmlhbnQgb2YgcHl0aG9uLmV4ZSB0aGF0IGRvZXNuJ3Qgb3BlbiBhIENvbW1hbmQKKyAgICBQcm9tcHQgd2luZG93CitweWxhdW5jaGVyCisgICAgcHkuZXhlLCB0aGUgUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzLCBzZWUKKyAgICAgICAgaHR0cDovL2RvY3MucHl0aG9uLm9yZy8zL3VzaW5nL3dpbmRvd3MuaHRtbCNsYXVuY2hlcgorcHl3bGF1bmNoZXIKKyAgICBweXcuZXhlLCBhIHZhcmlhbnQgb2YgcHkuZXhlIHRoYXQgZG9lc24ndCBvcGVuIGEgQ29tbWFuZCBQcm9tcHQKKyAgICB3aW5kb3cKKworVGhlIGZvbGxvd2luZyBzdWItcHJvamVjdHMgYXJlIGZvciBpbmRpdmlkdWFsIG1vZHVsZXMgb2YgdGhlIHN0YW5kYXJkCitsaWJyYXJ5IHdoaWNoIGFyZSBpbXBsZW1lbnRlZCBpbiBDOyBlYWNoIG9uZSBidWlsZHMgYSBETEwgKHJlbmFtZWQgdG8KKy5weWQpIG9mIHRoZSBzYW1lIG5hbWUgYXMgdGhlIHByb2plY3Q6CitfY3R5cGVzCitfY3R5cGVzX3Rlc3QKK19lbGVtZW50dHJlZQorX2hhc2hsaWIKK19tc2kKK19tdWx0aXByb2Nlc3NpbmcKK19zb2NrZXQKK190ZXN0Y2FwaQorcHlleHBhdAorc2VsZWN0Cit1bmljb2RlZGF0YQord2luc291bmQKKworVGhlcmUgaXMgYWxzbyBhIHc5eHBvcGVuIHByb2plY3QgdG8gYnVpbGQgdzl4cG9wZW4uZXhlLCB3aGljaCBpcyB1c2VkCitmb3IgcGxhdGZvcm0ucG9wZW4oKSBvbiBwbGF0Zm9ybXMgd2hvc2UgQ09NU1BFQyBwb2ludHMgdG8gJ2NvbW1hbmQuY29tJy4KKworVGhlIGZvbGxvd2luZyBQeXRob24tY29udHJvbGxlZCBzdWItcHJvamVjdHMgd3JhcCBleHRlcm5hbCBwcm9qZWN0cy4KK05vdGUgdGhhdCB0aGVzZSBleHRlcm5hbCBsaWJyYXJpZXMgYXJlIG5vdCBuZWNlc3NhcnkgZm9yIGEgd29ya2luZworaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGRvIGltcGxlbWVudCBzZXZlcmFsIG1ham9yIGZlYXR1cmVzLiAgU2VlIHRoZQorIkdldHRpbmcgRXh0ZXJuYWwgU291cmNlcyIgc2VjdGlvbiBiZWxvdyBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorYWJvdXQgZ2V0dGluZyB0aGUgc291cmNlIGZvciBidWlsZGluZyB0aGVzZSBsaWJyYXJpZXMuICBUaGUgc3ViLXByb2plY3RzCithcmU6CitfYnNkZGIKKyAgICBQeXRob24gd3JhcHBlciBmb3IgQmVya2VsZXkgREIgdmVyc2lvbiA0LjcuMjUuCisgICAgSG9tZXBhZ2U6CisgICAgICAgIGh0dHA6Ly93d3cub3JhY2xlLmNvbS91cy9wcm9kdWN0cy9kYXRhYmFzZS9iZXJrZWxleS1kYi8KK19iejIKKyAgICBQeXRob24gd3JhcHBlciBmb3IgdmVyc2lvbiAxLjAuNiBvZiB0aGUgbGliYnppcDIgY29tcHJlc3Npb24gbGlicmFyeQorICAgIEhvbWVwYWdlOgorICAgICAgICBodHRwOi8vd3d3LmJ6aXAub3JnLworX3NzbAorICAgIFB5dGhvbiB3cmFwcGVyIGZvciB2ZXJzaW9uIDEuMC4ybyBvZiB0aGUgT3BlblNTTCBzZWN1cmUgc29ja2V0cworICAgIGxpYnJhcnksIHdoaWNoIGlzIGJ1aWx0IGJ5IHNzbC52Y3hwcm9qCisgICAgSG9tZXBhZ2U6CisgICAgICAgIGh0dHA6Ly93d3cub3BlbnNzbC5vcmcvCisKKyAgICBCdWlsZGluZyBPcGVuU1NMIHJlcXVpcmVzIG5hc20uZXhlICh0aGUgTmV0d2lkZSBBc3NlbWJsZXIpLCB2ZXJzaW9uCisgICAgMi4xMCBvciBuZXdlciBmcm9tCisgICAgICAgIGh0dHA6Ly93d3cubmFzbS51cy8KKyAgICB0byBiZSBzb21ld2hlcmUgb24geW91ciBQQVRILiAgTW9yZSByZWNlbnQgdmVyc2lvbnMgb2YgT3BlblNTTCBtYXkKKyAgICBuZWVkIGEgbGF0ZXIgdmVyc2lvbiBvZiBOQVNNLiBJZiBPcGVuU1NMJ3Mgc2VsZiB0ZXN0cyBkb24ndCBwYXNzLAorICAgIHlvdSBzaG91bGQgZmlyc3QgdHJ5IHRvIHVwZGF0ZSBOQVNNIGFuZCBkbyBhIGZ1bGwgcmVidWlsZCBvZgorICAgIE9wZW5TU0wuICBJZiB5b3UgdXNlIHRoZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IG1ldGhvZAorICAgIGZvciBnZXR0aW5nIHNvdXJjZXMsIGl0IGFsc28gZG93bmxvYWRzIGEgdmVyc2lvbiBvZiBOQVNNIHdoaWNoIHRoZQorICAgIGxpYmVheS9zc2xlYXkgc3ViLXByb2plY3RzIHVzZS4KKworICAgIFRoZSBsaWJlYXkvc3NsZWF5IHN1Yi1wcm9qZWN0cyBleHBlY3QgeW91ciBPcGVuU1NMIHNvdXJjZXMgdG8gaGF2ZQorICAgIGFscmVhZHkgYmVlbiBjb25maWd1cmVkIGFuZCBiZSByZWFkeSB0byBidWlsZC4gIElmIHlvdSBnZXQgeW91ciBzb3VyY2VzCisgICAgZnJvbSBzdm4ucHl0aG9uLm9yZyBhcyBzdWdnZXN0ZWQgaW4gdGhlICJHZXR0aW5nIEV4dGVybmFsIFNvdXJjZXMiCisgICAgc2VjdGlvbiBiZWxvdywgdGhlIE9wZW5TU0wgc291cmNlIHdpbGwgYWxyZWFkeSBiZSByZWFkeSB0byBnby4gIElmCisgICAgeW91IHdhbnQgdG8gYnVpbGQgYSBkaWZmZXJlbnQgdmVyc2lvbiwgeW91IHdpbGwgbmVlZCB0byBydW4KKworICAgICAgIFBDYnVpbGRccHJlcGFyZV9zc2wucHkgcGF0aFx0b1xvcGVuc3NsLXNvdXJjZS1kaXIKKworICAgIFRoYXQgc2NyaXB0IHdpbGwgcHJlcGFyZSB5b3VyIE9wZW5TU0wgc291cmNlcyBpbiB0aGUgc2FtZSB3YXkgdGhhdAorICAgIHRob3NlIGF2YWlsYWJsZSBvbiBzdm4ucHl0aG9uLm9yZyBoYXZlIGJlZW4gcHJlcGFyZWQuICBOb3RlIHRoYXQKKyAgICBQZXJsIG11c3QgYmUgaW5zdGFsbGVkIGFuZCBhdmFpbGFibGUgb24geW91ciBQQVRIIHRvIGNvbmZpZ3VyZQorICAgIE9wZW5TU0wuICBBY3RpdmVQZXJsIGlzIHJlY29tbWVuZGVkIGFuZCBpcyBhdmFpbGFibGUgZnJvbQorICAgICAgICBodHRwOi8vd3d3LmFjdGl2ZXN0YXRlLmNvbS9hY3RpdmVwZXJsLworCisgICAgVGhlIGxpYmVheSBhbmQgc3NsZWF5IHN1Yi1wcm9qZWN0cyB3aWxsIGJ1aWxkIHRoZSBtb2R1bGVzIG9mIE9wZW5TU0wKKyAgICByZXF1aXJlZCBieSBfc3NsIGFuZCBfaGFzaGxpYiBhbmQgbWF5IG5lZWQgdG8gYmUgbWFudWFsbHkgdXBkYXRlZCB3aGVuCisgICAgdXBncmFkaW5nIHRvIGEgbmV3ZXIgdmVyc2lvbiBvZiBPcGVuU1NMIG9yIHdoZW4gYWRkaW5nIG5ldworICAgIGZ1bmN0aW9uYWxpdHkgdG8gX3NzbCBvciBfaGFzaGxpYi4gVGhleSB3aWxsIG5vdCBjbGVhbiB1cCB0aGVpciBvdXRwdXQKKyAgICB3aXRoIHRoZSBub3JtYWwgQ2xlYW4gdGFyZ2V0OyBDbGVhbkFsbCBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkLgorX3NxbGl0ZTMKKyAgICBXcmFwcyBTUUxpdGUgMy44LjExLjAsIHdoaWNoIGlzIGl0c2VsZiBidWlsdCBieSBzcWxpdGUzLnZjeHByb2oKKyAgICBIb21lcGFnZToKKyAgICAgICAgaHR0cDovL3d3dy5zcWxpdGUub3JnLworX3RraW50ZXIKKyAgICBXcmFwcyB2ZXJzaW9uIDguNS4xOSBvZiB0aGUgVGsgd2luZG93aW5nIHN5c3RlbS4KKyAgICBIb21lcGFnZToKKyAgICAgICAgaHR0cDovL3d3dy50Y2wudGsvCisKKyAgICBUa2ludGVyJ3MgZGVwZW5kZW5jaWVzIGFyZSBidWlsdCBieSB0aGUgdGNsLnZjeHByb2ogYW5kIHRrLnZjeHByb2oKKyAgICBwcm9qZWN0cy4gIFRoZSB0aXgudmN4cHJvaiBwcm9qZWN0IGFsc28gYnVpbGRzIHRoZSBUaXggZXh0ZW5kZWQKKyAgICB3aWRnZXQgc2V0IGZvciB1c2Ugd2l0aCBUa2ludGVyLgorCisgICAgVGhvc2UgdGhyZWUgcHJvamVjdHMgaW5zdGFsbCB0aGVpciByZXNwZWN0aXZlIGNvbXBvbmVudHMgaW4gYQorICAgIGRpcmVjdG9yeSBhbG9uZ3NpZGUgdGhlIHNvdXJjZSBkaXJlY3RvcmllcyBjYWxsZWQgInRjbHRrIiBvbgorICAgIFdpbjMyIGFuZCAidGNsdGs2NCIgb24geDY0LiAgVGhleSBhbHNvIGNvcHkgdGhlIFRjbCBhbmQgVGsgRExMcworICAgIGludG8gdGhlIGN1cnJlbnQgb3V0cHV0IGRpcmVjdG9yeSwgd2hpY2ggc2hvdWxkIGVuc3VyZSB0aGF0IFRraW50ZXIKKyAgICBpcyBhYmxlIHRvIGxvYWQgVGNsL1RrIHdpdGhvdXQgaGF2aW5nIHRvIGNoYW5nZSB5b3VyIFBBVEguCisKKyAgICBUaGUgdGNsLCB0aywgYW5kIHRpeCBzdWItcHJvamVjdHMgZG8gbm90IGNsZWFuIHRoZWlyIGJ1aWxkcyB3aXRoCisgICAgdGhlIG5vcm1hbCBDbGVhbiB0YXJnZXQ7IGlmIHlvdSBuZWVkIHRvIHJlYnVpbGQsIHlvdSBzaG91bGQgdXNlIHRoZQorICAgIENsZWFuQWxsIHRhcmdldCBvciBtYW51YWxseSBkZWxldGUgdGhlaXIgYnVpbGRzLgorCisKK0dldHRpbmcgRXh0ZXJuYWwgU291cmNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSBsYXN0IGNhdGVnb3J5IG9mIHN1Yi1wcm9qZWN0cyBsaXN0ZWQgYWJvdmUgd3JhcCBleHRlcm5hbCBwcm9qZWN0cworUHl0aG9uIGRvZXNuJ3QgY29udHJvbCwgYW5kIGFzIHN1Y2ggYSBsaXR0bGUgbW9yZSB3b3JrIGlzIHJlcXVpcmVkIGluCitvcmRlciB0byBkb3dubG9hZCB0aGUgcmVsZXZhbnQgc291cmNlIGZpbGVzIGZvciBlYWNoIHByb2plY3QgYmVmb3JlIHRoZXkKK2NhbiBiZSBidWlsdC4gIEhvd2V2ZXIsIGEgc2ltcGxlIHNjcmlwdCBpcyBwcm92aWRlZCB0byBtYWtlIHRoaXMgYXMKK3BhaW5sZXNzIGFzIHBvc3NpYmxlLCBjYWxsZWQgImdldF9leHRlcm5hbHMuYmF0IiBhbmQgbG9jYXRlZCBpbiB0aGlzCitkaXJlY3RvcnkuICBUaGlzIHNjcmlwdCBleHRyYWN0cyBhbGwgdGhlIGV4dGVybmFsIHN1Yi1wcm9qZWN0cyBmcm9tCisgICAgaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uLXNvdXJjZS1kZXBzCithbmQKKyAgICBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24tYmluLWRlcHMKK3ZpYSBhIFB5dGhvbiBzY3JpcHQgY2FsbGVkICJnZXRfZXh0ZXJuYWwucHkiLCBsb2NhdGVkIGluIHRoaXMgZGlyZWN0b3J5LgorSWYgUHl0aG9uIDMuNiBvciBsYXRlciBpcyBub3QgYXZhaWxhYmxlIHZpYSB0aGUgInB5LmV4ZSIgbGF1bmNoZXIsIHRoZQorcGF0aCBvciBjb21tYW5kIHRvIHVzZSBmb3IgUHl0aG9uIGNhbiBiZSBwcm92aWRlZCBpbiB0aGUgUFlUSE9OX0ZPUl9CVUlMRAorZW52aXJvbm1lbnQgdmFyaWFibGUsIG9yIGdldF9leHRlcm5hbHMuYmF0IHdpbGwgZG93bmxvYWQgdGhlIGxhdGVzdAordmVyc2lvbiBvZiBOdUdldCBhbmQgdXNlIGl0IHRvIGRvd25sb2FkIHRoZSBsYXRlc3QgInB5dGhvbng4NiIgcGFja2FnZQorZm9yIHVzZSB3aXRoIGdldF9leHRlcm5hbC5weS4gIEV2ZXJ5dGhpbmcgZG93bmxvYWRlZCBieSB0aGVzZSBzY3JpcHRzIGlzCitzdG9yZWQgaW4gLi5cZXh0ZXJuYWxzIChyZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeSkuCisKK0l0IGlzIGFsc28gcG9zc2libGUgdG8gZG93bmxvYWQgc291cmNlcyBmcm9tIGVhY2ggcHJvamVjdCdzIGhvbWVwYWdlLAordGhvdWdoIHlvdSBtYXkgaGF2ZSB0byBjaGFuZ2UgZm9sZGVyIG5hbWVzIG9yIHBhc3MgdGhlIG5hbWVzIHRvIE1TQnVpbGQKK2FzIHRoZSB2YWx1ZXMgb2YgY2VydGFpbiBwcm9wZXJ0aWVzIGluIG9yZGVyIGZvciB0aGUgYnVpbGQgc29sdXRpb24gdG8KK2ZpbmQgdGhlbS4gIFRoaXMgaXMgYW4gYWR2YW5jZWQgdG9waWMgYW5kIG5vdCBuZWNlc3NhcmlseSBmdWxseQorc3VwcG9ydGVkLgorCitUaGUgZ2V0X2V4dGVybmFscy5iYXQgc2NyaXB0IGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGJ5IGJ1aWxkLmJhdCB3aGVuCit5b3UgcGFzcyB0aGUgJy1lJyBvcHRpb24gdG8gaXQuCisKKworUHJvZmlsZSBHdWlkZWQgT3B0aW1pemF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIHNvbHV0aW9uIGhhcyB0d28gY29uZmlndXJhdGlvbnMgZm9yIFBHTy4gVGhlIFBHSW5zdHJ1bWVudAorY29uZmlndXJhdGlvbiBtdXN0IGJlIGJ1aWx0IGZpcnN0LiBUaGUgUEdJbnN0cnVtZW50IGJpbmFyaWVzIGFyZSBsaW5rZWQKK2FnYWluc3QgYSBwcm9maWxpbmcgbGlicmFyeSBhbmQgY29udGFpbiBleHRyYSBkZWJ1ZyBpbmZvcm1hdGlvbi4gVGhlCitQR1VwZGF0ZSBjb25maWd1cmF0aW9uIHRha2VzIHRoZSBwcm9maWxpbmcgZGF0YSBhbmQgZ2VuZXJhdGVzIG9wdGltaXplZAorYmluYXJpZXMuCisKK1RoZSBidWlsZF9wZ28uYmF0IHNjcmlwdCBhdXRvbWF0ZXMgdGhlIGNyZWF0aW9uIG9mIG9wdGltaXplZCBiaW5hcmllcy4KK0l0IGNyZWF0ZXMgdGhlIFBHSSBmaWxlcywgcnVucyB0aGUgdW5pdCB0ZXN0IHN1aXRlIG9yIFB5QmVuY2ggd2l0aCB0aGUKK1BHSSBweXRob24sIGFuZCBmaW5hbGx5IGNyZWF0ZXMgdGhlIG9wdGltaXplZCBmaWxlcy4KKworU2VlCisgICAgaHR0cDovL21zZG4ubWljcm9zb2Z0LmNvbS9lbi11cy9saWJyYXJ5L2U3azMyZjRrKFZTLjkwKS5hc3B4Citmb3IgbW9yZSBvbiB0aGlzIHRvcGljLgorCisKK1N0YXRpYyBsaWJyYXJ5CistLS0tLS0tLS0tLS0tLQorCitUaGUgc29sdXRpb24gaGFzIG5vIGNvbmZpZ3VyYXRpb24gZm9yIHN0YXRpYyBsaWJyYXJpZXMuIEhvd2V2ZXIgaXQgaXMKK2Vhc3kgdG8gYnVpbGQgYSBzdGF0aWMgbGlicmFyeSBpbnN0ZWFkIG9mIGEgRExMLiBZb3Ugc2ltcGx5IGhhdmUgdG8gc2V0Cit0aGUgIkNvbmZpZ3VyYXRpb24gVHlwZSIgdG8gIlN0YXRpYyBMaWJyYXJ5ICgubGliKSIgYW5kIGFsdGVyIHRoZQorcHJlcHJvY2Vzc29yIG1hY3JvICJQeV9FTkFCTEVfU0hBUkVEIiB0byAiUHlfTk9fRU5BQkxFX1NIQVJFRCIuIFlvdSBtYXkKK2Fsc28gaGF2ZSB0byBjaGFuZ2UgdGhlICJSdW50aW1lIExpYnJhcnkiIGZyb20gIk11bHRpLXRocmVhZGVkIERMTAorKC9NRCkiIHRvICJNdWx0aS10aHJlYWRlZCAoL01UKSIuCisKKworVmlzdWFsIFN0dWRpbyBwcm9wZXJ0aWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhlIFBDYnVpbGQgc29sdXRpb24gbWFrZXMgdXNlIG9mIFZpc3VhbCBTdHVkaW8gcHJvcGVydHkgZmlsZXMgKCoucHJvcHMpCit0byBzaW1wbGlmeSBlYWNoIHByb2plY3QuIFRoZSBwcm9wZXJ0aWVzIGNhbiBiZSB2aWV3ZWQgaW4gdGhlIFByb3BlcnR5CitNYW5hZ2VyIChWaWV3IC0+IE90aGVyIFdpbmRvd3MgLT4gUHJvcGVydHkgTWFuYWdlcikgYnV0IHNob3VsZCBiZQorY2FyZWZ1bGx5IG1vZGlmaWVkIGJ5IGhhbmQuCisKK1RoZSBwcm9wZXJ0eSBmaWxlcyB1c2VkIGFyZToKKyAqIHB5dGhvbiAodmVyc2lvbnMsIGRpcmVjdG9yaWVzIGFuZCBidWlsZCBuYW1lcykKKyAqIHB5cHJvamVjdCAoYmFzZSBzZXR0aW5ncyBmb3IgYWxsIHByb2plY3RzKQorICogb3BlbnNzbCAodXNlZCBieSBsaWJlYXkgYW5kIHNzbGVheSBwcm9qZWN0cykKKyAqIHRjbHRrICh1c2VkIGJ5IF90a2ludGVyLCB0Y2wsIHRrIGFuZCB0aXggcHJvamVjdHMpCisKK1RoZSBweXByb2plY3QgcHJvcGVydHkgZmlsZSBkZWZpbmVzIGFsbCBvZiB0aGUgYnVpbGQgc2V0dGluZ3MgZm9yIGVhY2gKK3Byb2plY3QsIHdpdGggc29tZSBwcm9qZWN0cyBvdmVycmlkaW5nIGNlcnRhaW4gc3BlY2lmaWMgdmFsdWVzLiBUaGUgR1VJCitkb2Vzbid0IGFsd2F5cyByZWZsZWN0IHRoZSBjb3JyZWN0IHNldHRpbmdzIGFuZCBtYXkgY29uZnVzZSB0aGUgdXNlcgord2l0aCBmYWxzZSBpbmZvcm1hdGlvbiwgZXNwZWNpYWxseSBmb3Igc2V0dGluZ3MgdGhhdCBhdXRvbWF0aWNhbGx5IGFkYXB0Citmb3IgZGlmZmlyZW50IGNvbmZpZ3VyYXRpb25zLgpkaWZmIC0tZ2l0IGEvUENidWlsZC9ydC5iYXQgYi9QQ2J1aWxkL3J0LmJhdAppbmRleCBhNjVkODE4Li4xOTAxMmQ2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3J0LmJhdAorKysgYi9QQ2J1aWxkL3J0LmJhdApAQCAtMSw2MCArMSw2MCBAQAotQGVjaG8gb2ZmDQotcmVtIFJ1biBUZXN0cy4gIFJ1biB0aGUgcmVncmVzc2lvbiB0ZXN0IHN1aXRlLg0KLXJlbSBVc2FnZTogIHJ0IFstZF0gWy1PXSBbLXFdIFsteDY0XSByZWdydGVzdF9hcmdzDQotcmVtIC1kICAgUnVuIERlYnVnIGJ1aWxkIChweXRob25fZC5leGUpLiAgRWxzZSByZWxlYXNlIGJ1aWxkLg0KLXJlbSAtTyAgIFJ1biBweXRob24uZXhlIG9yIHB5dGhvbl9kLmV4ZSAoc2VlIC1kKSB3aXRoIC1PLg0KLXJlbSAtcSAgICJxdWljayIgLS0gbm9ybWFsbHkgdGhlIHRlc3RzIGFyZSBydW4gdHdpY2UsIHRoZSBmaXJzdCB0aW1lDQotcmVtICAgICAgYWZ0ZXIgZGVsZXRpbmcgYWxsIHRoZSAucHlbY29dIGZpbGVzIHJlYWNoYWJsZSBmcm9tIExpYi8uDQotcmVtICAgICAgLXEgcnVucyB0aGUgdGVzdHMganVzdCBvbmNlLCBhbmQgd2l0aG91dCBkZWxldGluZyAucHlbY29dIGZpbGVzLg0KLXJlbSAteDY0IFJ1biB0aGUgNjQtYml0IGJ1aWxkIG9mIHB5dGhvbiAob3IgcHl0aG9uX2QgaWYgLWQgd2FzIHNwZWNpZmllZCkNCi1yZW0gICAgICBmcm9tIHRoZSAnYW1kNjQnIGRpciBpbnN0ZWFkIG9mIHRoZSAzMi1iaXQgYnVpbGQgaW4gdGhpcyBkaXIuDQotcmVtIEFsbCBsZWFkaW5nIGluc3RhbmNlcyBvZiB0aGVzZSBzd2l0Y2hlcyBhcmUgc2hpZnRlZCBvZmYsIGFuZA0KLXJlbSB3aGF0ZXZlciByZW1haW5zICh1cCB0byA5IGFyZ3VtZW50cykgaXMgcGFzc2VkIHRvIHJlZ3J0ZXN0LnB5Lg0KLXJlbSBGb3IgZXhhbXBsZSwNCi1yZW0gICAgIHJ0IC1PIC1kIC14IHRlc3RfdGhyZWFkDQotcmVtIHJ1bnMNCi1yZW0gICAgIHB5dGhvbl9kIC1PIC4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5IC14IHRlc3RfdGhyZWFkDQotcmVtIHR3aWNlLCBhbmQNCi1yZW0gICAgIHJ0IC1xIC1nIHRlc3RfYmluYXNjaWkNCi1yZW0gcnVucw0KLXJlbSAgICAgcHl0aG9uX2QgLi4vbGliL3Rlc3QvcmVncnRlc3QucHkgLWcgdGVzdF9iaW5hc2NpaQ0KLXJlbSB0byBnZW5lcmF0ZSB0aGUgZXhwZWN0ZWQtb3V0cHV0IGZpbGUgZm9yIGJpbmFzY2lpIHF1aWNrbHkuDQotcmVtDQotcmVtIENvbmZ1c2luZzogIGlmIHlvdSB3YW50IHRvIHBhc3MgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgbGlrZQ0KLXJlbSAgICAgLXUgbmV0d29yayxsYXJnZWZpbGUNCi1yZW0gdGhlbiB5b3UgaGF2ZSB0byBxdW90ZSBpdCBvbiB0aGUgcnQgbGluZSwgbGlrZQ0KLXJlbSAgICAgcnQgLXUgIm5ldHdvcmssbGFyZ2VmaWxlIg0KLQ0KLXNldGxvY2FsDQotDQotc2V0IHBjYnVpbGQ9JX5kcDANCi1zZXQgcHJlZml4PSVwY2J1aWxkJQ0KLXNldCBzdWZmaXg9DQotc2V0IHFtb2RlPQ0KLXNldCBkYXNoTz0NCi1zZXQgcmVncnRlc3RhcmdzPQ0KLQ0KLTpDaGVja09wdHMNCi1pZiAiJTEiPT0iLU8iIChzZXQgZGFzaE89LU8pICAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLXEiIChzZXQgcW1vZGU9eWVzKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLWQiIChzZXQgc3VmZml4PV9kKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLXg2NCIgKHNldCBwcmVmaXg9JXBjYnVpbGQlYW1kNjRcKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiBOT1QgIiUxIj09IiIgKHNldCByZWdydGVzdGFyZ3M9JXJlZ3J0ZXN0YXJncyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLQ0KLXNldCBleGU9JXByZWZpeCVweXRob24lc3VmZml4JQ0KLXNldCBjbWQ9IiVleGUlIiAlZGFzaE8lIC1XZCAtMyAtRSAtdHQgIiVwY2J1aWxkJS4uXExpYlx0ZXN0XHJlZ3J0ZXN0LnB5IiAlcmVncnRlc3RhcmdzJQ0KLWlmIGRlZmluZWQgcW1vZGUgZ290byBRbW9kZQ0KLQ0KLWVjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLg0KLSIlZXhlJSIgIiVwY2J1aWxkJXJtcHljLnB5Ig0KLQ0KLWVjaG8gb24NCi0lY21kJQ0KLUBlY2hvIG9mZg0KLQ0KLWVjaG8gQWJvdXQgdG8gcnVuIGFnYWluIHdpdGhvdXQgZGVsZXRpbmcgLnB5Yy8ucHlvIGZpcnN0Og0KLXBhdXNlDQotDQotOlFtb2RlDQotZWNobyBvbg0KLSVjbWQlDQorQGVjaG8gb2ZmCityZW0gUnVuIFRlc3RzLiAgUnVuIHRoZSByZWdyZXNzaW9uIHRlc3Qgc3VpdGUuCityZW0gVXNhZ2U6ICBydCBbLWRdIFstT10gWy1xXSBbLXg2NF0gcmVncnRlc3RfYXJncworcmVtIC1kICAgUnVuIERlYnVnIGJ1aWxkIChweXRob25fZC5leGUpLiAgRWxzZSByZWxlYXNlIGJ1aWxkLgorcmVtIC1PICAgUnVuIHB5dGhvbi5leGUgb3IgcHl0aG9uX2QuZXhlIChzZWUgLWQpIHdpdGggLU8uCityZW0gLXEgICAicXVpY2siIC0tIG5vcm1hbGx5IHRoZSB0ZXN0cyBhcmUgcnVuIHR3aWNlLCB0aGUgZmlyc3QgdGltZQorcmVtICAgICAgYWZ0ZXIgZGVsZXRpbmcgYWxsIHRoZSAucHlbY29dIGZpbGVzIHJlYWNoYWJsZSBmcm9tIExpYi8uCityZW0gICAgICAtcSBydW5zIHRoZSB0ZXN0cyBqdXN0IG9uY2UsIGFuZCB3aXRob3V0IGRlbGV0aW5nIC5weVtjb10gZmlsZXMuCityZW0gLXg2NCBSdW4gdGhlIDY0LWJpdCBidWlsZCBvZiBweXRob24gKG9yIHB5dGhvbl9kIGlmIC1kIHdhcyBzcGVjaWZpZWQpCityZW0gICAgICBmcm9tIHRoZSAnYW1kNjQnIGRpciBpbnN0ZWFkIG9mIHRoZSAzMi1iaXQgYnVpbGQgaW4gdGhpcyBkaXIuCityZW0gQWxsIGxlYWRpbmcgaW5zdGFuY2VzIG9mIHRoZXNlIHN3aXRjaGVzIGFyZSBzaGlmdGVkIG9mZiwgYW5kCityZW0gd2hhdGV2ZXIgcmVtYWlucyAodXAgdG8gOSBhcmd1bWVudHMpIGlzIHBhc3NlZCB0byByZWdydGVzdC5weS4KK3JlbSBGb3IgZXhhbXBsZSwKK3JlbSAgICAgcnQgLU8gLWQgLXggdGVzdF90aHJlYWQKK3JlbSBydW5zCityZW0gICAgIHB5dGhvbl9kIC1PIC4uL2xpYi90ZXN0L3JlZ3J0ZXN0LnB5IC14IHRlc3RfdGhyZWFkCityZW0gdHdpY2UsIGFuZAorcmVtICAgICBydCAtcSAtZyB0ZXN0X2JpbmFzY2lpCityZW0gcnVucworcmVtICAgICBweXRob25fZCAuLi9saWIvdGVzdC9yZWdydGVzdC5weSAtZyB0ZXN0X2JpbmFzY2lpCityZW0gdG8gZ2VuZXJhdGUgdGhlIGV4cGVjdGVkLW91dHB1dCBmaWxlIGZvciBiaW5hc2NpaSBxdWlja2x5LgorcmVtCityZW0gQ29uZnVzaW5nOiAgaWYgeW91IHdhbnQgdG8gcGFzcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0LCBsaWtlCityZW0gICAgIC11IG5ldHdvcmssbGFyZ2VmaWxlCityZW0gdGhlbiB5b3UgaGF2ZSB0byBxdW90ZSBpdCBvbiB0aGUgcnQgbGluZSwgbGlrZQorcmVtICAgICBydCAtdSAibmV0d29yayxsYXJnZWZpbGUiCisKK3NldGxvY2FsCisKK3NldCBwY2J1aWxkPSV+ZHAwCitzZXQgcHJlZml4PSVwY2J1aWxkJQorc2V0IHN1ZmZpeD0KK3NldCBxbW9kZT0KK3NldCBkYXNoTz0KK3NldCByZWdydGVzdGFyZ3M9CisKKzpDaGVja09wdHMKK2lmICIlMSI9PSItTyIgKHNldCBkYXNoTz0tTykgICAgICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiUxIj09Ii1xIiAoc2V0IHFtb2RlPXllcykgICAgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJTEiPT0iLWQiIChzZXQgc3VmZml4PV9kKSAgICAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlMSI9PSIteDY0IiAoc2V0IHByZWZpeD0lcGNidWlsZCVhbWQ2NFwpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RhcmdzPSVyZWdydGVzdGFyZ3MlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKKworc2V0IGV4ZT0lcHJlZml4JXB5dGhvbiVzdWZmaXglCitzZXQgY21kPSIlZXhlJSIgJWRhc2hPJSAtV2QgLTMgLUUgLXR0ICIlcGNidWlsZCUuLlxMaWJcdGVzdFxyZWdydGVzdC5weSIgJXJlZ3J0ZXN0YXJncyUKK2lmIGRlZmluZWQgcW1vZGUgZ290byBRbW9kZQorCitlY2hvIERlbGV0aW5nIC5weWMvLnB5byBmaWxlcyAuLi4KKyIlZXhlJSIgIiVwY2J1aWxkJXJtcHljLnB5IgorCitlY2hvIG9uCislY21kJQorQGVjaG8gb2ZmCisKK2VjaG8gQWJvdXQgdG8gcnVuIGFnYWluIHdpdGhvdXQgZGVsZXRpbmcgLnB5Yy8ucHlvIGZpcnN0OgorcGF1c2UKKworOlFtb2RlCitlY2hvIG9uCislY21kJQpkaWZmIC0tZ2l0IGEvUENidWlsZC90Y2x0ay5wcm9wcyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKaW5kZXggOTY2MGE5Zi4uMzZjZGVmMCAxMDA2NDQKLS0tIGEvUENidWlsZC90Y2x0ay5wcm9wcworKysgYi9QQ2J1aWxkL3RjbHRrLnByb3BzCkBAIC00LDcgKzQsNyBAQAogICA8UHJvcGVydHlHcm91cD4KICAgICA8VGNsTWFqb3JWZXJzaW9uPjg8L1RjbE1ham9yVmVyc2lvbj4KICAgICA8VGNsTWlub3JWZXJzaW9uPjU8L1RjbE1pbm9yVmVyc2lvbj4KLSAgICA8VGNsUGF0Y2hMZXZlbD4xNTwvVGNsUGF0Y2hMZXZlbD4KKyAgICA8VGNsUGF0Y2hMZXZlbD4xOTwvVGNsUGF0Y2hMZXZlbD4KICAgICA8VGNsUmV2aXNpb24+MDwvVGNsUmV2aXNpb24+CiAgICAgPFRrTWFqb3JWZXJzaW9uPiQoVGNsTWFqb3JWZXJzaW9uKTwvVGtNYWpvclZlcnNpb24+CiAgICAgPFRrTWlub3JWZXJzaW9uPiQoVGNsTWlub3JWZXJzaW9uKTwvVGtNaW5vclZlcnNpb24+CmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbF9jLnB5IGIvUGFyc2VyL2FzZGxfYy5weQppbmRleCAyYmJkNWEwLi5hYzYxYzc4IDEwMDc1NQotLS0gYS9QYXJzZXIvYXNkbF9jLnB5CisrKyBiL1BhcnNlci9hc2RsX2MucHkKQEAgLTUwOSw4ICs1MDksOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuZW1pdCgiJXMgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7IiAlIGZpZWxkLm5hbWUsIGRlcHRoKzEpCiAgICAgICAgICAgICBzZWxmLmVtaXQoImlmICglcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsiICUgZmllbGQubmFtZSwgZGVwdGgrMSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgiZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7IiwgZGVwdGgrMSkKLSAgICAgICAgICAgIHNlbGYuZW1pdCgiJXMgdmFsdWU7IiAlIGN0eXBlLCBkZXB0aCsyKQotICAgICAgICAgICAgc2VsZi5lbWl0KCJyZXMgPSBvYmoyYXN0XyVzKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsiICUKKyAgICAgICAgICAgIHNlbGYuZW1pdCgiJXMgdmFsOyIgJSBjdHlwZSwgZGVwdGgrMikKKyAgICAgICAgICAgIHNlbGYuZW1pdCgicmVzID0gb2JqMmFzdF8lcyhQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOyIgJQogICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnR5cGUsIGRlcHRoKzIsIHJlZmxvdz1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgiaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsiLCBkZXB0aCsyKQogICAgICAgICAgICAgc2VsZi5lbWl0KCJpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7IiwgZGVwdGgrMikKQEAgLTUyMCw3ICs1MjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIGRlcHRoKzMsIHJlZmxvdz1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuZW1pdCgiZ290byBmYWlsZWQ7IiwgZGVwdGgrMykKICAgICAgICAgICAgIHNlbGYuZW1pdCgifSIsIGRlcHRoKzIpCi0gICAgICAgICAgICBzZWxmLmVtaXQoImFzZGxfc2VxX1NFVCglcywgaSwgdmFsdWUpOyIgJSBmaWVsZC5uYW1lLCBkZXB0aCsyKQorICAgICAgICAgICAgc2VsZi5lbWl0KCJhc2RsX3NlcV9TRVQoJXMsIGksIHZhbCk7IiAlIGZpZWxkLm5hbWUsIGRlcHRoKzIpCiAgICAgICAgICAgICBzZWxmLmVtaXQoIn0iLCBkZXB0aCsxKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5lbWl0KCJyZXMgPSBvYmoyYXN0XyVzKHRtcCwgJiVzLCBhcmVuYSk7IiAlCkBAIC04MzAsNyArODMwLDcgQEAKIHN0YXRpYyBpbnQgb2JqMmFzdF9pbnQoUHlPYmplY3QqIG9iaiwgaW50KiBvdXQsIFB5QXJlbmEqIGFyZW5hKQogewogICAgIGludCBpOwotICAgIGlmICghUHlJbnRfQ2hlY2sob2JqKSAmJiAhUHlMb25nX0NoZWNrKG9iaikpIHsKKyAgICBpZiAoIV9QeUFueUludF9DaGVjayhvYmopKSB7CiAgICAgICAgIFB5T2JqZWN0ICpzID0gUHlPYmplY3RfUmVwcihvYmopOwogICAgICAgICBpZiAocyA9PSBOVUxMKSByZXR1cm4gMTsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGludGVnZXIgdmFsdWU6ICUuNDAwcyIsCmRpZmYgLS1naXQgYS9QYXJzZXIvZ3JhbW1hci5jIGIvUGFyc2VyL2dyYW1tYXIuYwppbmRleCBmYTFkZDdjLi5mY2QyMjE5IDEwMDY0NAotLS0gYS9QYXJzZXIvZ3JhbW1hci5jCisrKyBiL1BhcnNlci9ncmFtbWFyLmMKQEAgLTMyLDYgKzMyLDI0IEBACiAgICAgcmV0dXJuIGc7CiB9CiAKK3ZvaWQKK2ZyZWVncmFtbWFyKGdyYW1tYXIgKmcpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGctPmdfbmRmYXM7IGkrKykgeworICAgICAgICBpbnQgajsKKyAgICAgICAgZnJlZShnLT5nX2RmYVtpXS5kX25hbWUpOworICAgICAgICBmb3IgKGogPSAwOyBqIDwgZy0+Z19kZmFbaV0uZF9uc3RhdGVzOyBqKyspCisgICAgICAgICAgICBQeU9iamVjdF9GUkVFKGctPmdfZGZhW2ldLmRfc3RhdGVbal0uc19hcmMpOworICAgICAgICBQeU9iamVjdF9GUkVFKGctPmdfZGZhW2ldLmRfc3RhdGUpOworICAgIH0KKyAgICBQeU9iamVjdF9GUkVFKGctPmdfZGZhKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZy0+Z19sbC5sbF9ubGFiZWxzOyBpKyspCisgICAgICAgIGZyZWUoZy0+Z19sbC5sbF9sYWJlbFtpXS5sYl9zdHIpOworICAgIFB5T2JqZWN0X0ZSRUUoZy0+Z19sbC5sbF9sYWJlbCk7CisgICAgUHlPYmplY3RfRlJFRShnKTsKK30KKwogZGZhICoKIGFkZGRmYShncmFtbWFyICpnLCBpbnQgdHlwZSwgY2hhciAqbmFtZSkKIHsKZGlmZiAtLWdpdCBhL1BhcnNlci9pbnRyY2hlY2suYyBiL1BhcnNlci9pbnRyY2hlY2suYwppbmRleCAxYzg4OGE1Li41ODQ0YTlhIDEwMDY0NAotLS0gYS9QYXJzZXIvaW50cmNoZWNrLmMKKysrIGIvUGFyc2VyL2ludHJjaGVjay5jCkBAIC0xNzIsNyArMTcyLDcgQEAKIFB5T1NfQWZ0ZXJGb3JrKHZvaWQpCiB7CiAjaWZkZWYgV0lUSF9USFJFQUQKLSAgICBQeUV2YWxfUmVJbml0VGhyZWFkcygpOwogICAgIFB5VGhyZWFkX1JlSW5pdFRMUygpOworICAgIFB5RXZhbF9SZUluaXRUaHJlYWRzKCk7CiAjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXRvay5jIGIvUGFyc2VyL3BhcnNldG9rLmMKaW5kZXggMDY5Y2M2Yi4uYTVlOTIyMiAxMDA2NDQKLS0tIGEvUGFyc2VyL3BhcnNldG9rLmMKKysrIGIvUGFyc2VyL3BhcnNldG9rLmMKQEAgLTE3Niw3ICsxNzYsNyBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHN0YXJ0ZWQgPSAxOwotICAgICAgICBsZW4gPSBiIC0gYTsgLyogWFhYIHRoaXMgbWF5IGNvbXB1dGUgTlVMTCAtIE5VTEwgKi8KKyAgICAgICAgbGVuID0gKGEgIT0gTlVMTCAmJiBiICE9IE5VTEwpID8gYiAtIGEgOiAwOwogICAgICAgICBzdHIgPSAoY2hhciAqKSBQeU9iamVjdF9NQUxMT0MobGVuICsgMSk7CiAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJubyBtZW0gZm9yIG5leHQgdG9rZW5cbiIpOwpAQCAtMTg5LDEwICsxODksMTIgQEAKIAogI2lmZGVmIFBZX1BBUlNFUl9SRVFVSVJFU19GVVRVUkVfS0VZV09SRAogI2VuZGlmCi0gICAgICAgIGlmIChhID49IHRvay0+bGluZV9zdGFydCkKKyAgICAgICAgaWYgKGEgIT0gTlVMTCAmJiBhID49IHRvay0+bGluZV9zdGFydCkgewogICAgICAgICAgICAgY29sX29mZnNldCA9IGEgLSB0b2stPmxpbmVfc3RhcnQ7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGNvbF9vZmZzZXQgPSAtMTsKKyAgICAgICAgfQogCiAgICAgICAgIGlmICgoZXJyX3JldC0+ZXJyb3IgPQogICAgICAgICAgICAgIFB5UGFyc2VyX0FkZFRva2VuKHBzLCAoaW50KXR5cGUsIHN0ciwgdG9rLT5saW5lbm8sIGNvbF9vZmZzZXQsCmRpZmYgLS1naXQgYS9QYXJzZXIvcGdlbi5jIGIvUGFyc2VyL3BnZW4uYwppbmRleCBmMzAzMWFlLi5iMjBkOTc2IDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbi5jCisrKyBiL1BhcnNlci9wZ2VuLmMKQEAgLTExNyw2ICsxMTcsMTcgQEAKICAgICByZXR1cm4gZ3I7CiB9CiAKK3N0YXRpYyB2b2lkCitmcmVlbmZhZ3JhbW1hcihuZmFncmFtbWFyICpncikKK3sKKyAgICBpbnQgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZ3ItPmdyX25uZmFzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3RfRlJFRShnci0+Z3JfbmZhW2ldLT5uZl9zdGF0ZSk7CisgICAgfQorICAgIFB5T2JqZWN0X0ZSRUUoZ3ItPmdyX25mYSk7CisgICAgUHlPYmplY3RfRlJFRShncik7Cit9CisKIHN0YXRpYyBuZmEgKgogYWRkbmZhKG5mYWdyYW1tYXIgKmdyLCBjaGFyICpuYW1lKQogewpAQCAtMzk0LDYgKzQwNSw3IEBACiAgICAgaW50IGlzdGF0ZSwganN0YXRlLCBpYXJjLCBqYXJjLCBpYml0OwogICAgIG5mYXN0YXRlICpzdDsKICAgICBuZmFhcmMgKmFyOworICAgIGludCBpLCBqOwogCiAgICAgc3MgPSBuZXdiaXRzZXQobmJpdHMpOwogICAgIGFkZGNsb3N1cmUoc3MsIG5mLCBuZi0+bmZfc3RhcnQpOwpAQCAtNDg4LDcgKzUwMCwxMSBAQAogCiAgICAgY29udmVydChkLCB4eF9uc3RhdGVzLCB4eF9zdGF0ZSk7CiAKLSAgICAvKiBYWFggY2xlYW51cCAqLworICAgIGZvciAoaSA9IDA7IGkgPCB4eF9uc3RhdGVzOyBpKyspIHsKKyAgICAgICAgZm9yIChqID0gMDsgaiA8IHh4X3N0YXRlW2ldLnNzX25hcmNzOyBqKyspCisgICAgICAgICAgICBkZWxiaXRzZXQoeHhfc3RhdGVbaV0uc3NfYXJjW2pdLnNhX2JpdHNldCk7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoeHhfc3RhdGVbaV0uc3NfYXJjKTsKKyAgICB9CiAgICAgUHlPYmplY3RfRlJFRSh4eF9zdGF0ZSk7CiB9CiAKQEAgLTY2OSw3ICs2ODUsNyBAQAogICAgIGcgPSBtYWtldGFibGVzKGdyKTsKICAgICB0cmFuc2xhdGVsYWJlbHMoZyk7CiAgICAgYWRkZmlyc3RzZXRzKGcpOwotICAgIFB5T2JqZWN0X0ZSRUUoZ3IpOworICAgIGZyZWVuZmFncmFtbWFyKGdyKTsKICAgICByZXR1cm4gZzsKIH0KIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3BnZW5tYWluLmMgYi9QYXJzZXIvcGdlbm1haW4uYwppbmRleCA4OGZhN2YxLi4wYjQ3Mjk1IDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbm1haW4uYworKysgYi9QYXJzZXIvcGdlbm1haW4uYwpAQCAtNjcsNiArNjcsNyBAQAogICAgICAgICBwcmludGYoIldyaXRpbmcgJXMgLi4uXG4iLCBncmFtaW5pdF9oKTsKICAgICBwcmludG5vbnRlcm1pbmFscyhnLCBmcCk7CiAgICAgZmNsb3NlKGZwKTsKKyAgICBmcmVlZ3JhbW1hcihnKTsKICAgICBQeV9FeGl0KDApOwogICAgIHJldHVybiAwOyAvKiBNYWtlIGdjYyAtV2FsbCBoYXBweSAqLwogfQpkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5jIGIvUGFyc2VyL3Rva2VuaXplci5jCmluZGV4IDRmZGJhZDkuLmM2ZTYxZGYgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuYworKysgYi9QYXJzZXIvdG9rZW5pemVyLmMKQEAgLTE2MzYsNiArMTYzNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8PiBub3Qgc3VwcG9ydGVkIGluIDMueDsgdXNlICE9IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rLT5maWxlbmFtZSwgdG9rLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpKSB7CisgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9FUlJPUjsKKyAgICAgICAgICAgICAgICB0b2stPmN1ciA9IHRvay0+aW5wOwogICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNjc5LDYgKzE2ODEsMTEgQEAKIFB5VG9rZW5pemVyX0dldChzdHJ1Y3QgdG9rX3N0YXRlICp0b2ssIGNoYXIgKipwX3N0YXJ0LCBjaGFyICoqcF9lbmQpCiB7CiAgICAgaW50IHJlc3VsdCA9IHRva19nZXQodG9rLCBwX3N0YXJ0LCBwX2VuZCk7CisgICAgaWYgKHRvay0+ZnAgJiYgZmVycm9yKHRvay0+ZnApKSB7CisgICAgICAgIGNsZWFyZXJyKHRvay0+ZnApOworICAgICAgICByZXN1bHQgPSBFUlJPUlRPS0VOOworICAgICAgICB0b2stPmRvbmUgPSBFX0lPOworICAgIH0KICAgICBpZiAodG9rLT5kZWNvZGluZ19lcnJlZCkgewogICAgICAgICByZXN1bHQgPSBFUlJPUlRPS0VOOwogICAgICAgICB0b2stPmRvbmUgPSBFX0RFQ09ERTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9QeXRob24tYXN0LmMgYi9QeXRob24vUHl0aG9uLWFzdC5jCmluZGV4IDI4Yzk1YjAuLjJlN2ExYWYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9QeXRob24tYXN0LmMKKysrIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwpAQCAtNjE3LDcgKzYxNyw3IEBACiBzdGF0aWMgaW50IG9iajJhc3RfaW50KFB5T2JqZWN0KiBvYmosIGludCogb3V0LCBQeUFyZW5hKiBhcmVuYSkKIHsKICAgICBpbnQgaTsKLSAgICBpZiAoIVB5SW50X0NoZWNrKG9iaikgJiYgIVB5TG9uZ19DaGVjayhvYmopKSB7CisgICAgaWYgKCFfUHlBbnlJbnRfQ2hlY2sob2JqKSkgewogICAgICAgICBQeU9iamVjdCAqcyA9IFB5T2JqZWN0X1JlcHIob2JqKTsKICAgICAgICAgaWYgKHMgPT0gTlVMTCkgcmV0dXJuIDE7CiAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBpbnRlZ2VyIHZhbHVlOiAlLjQwMHMiLApAQCAtMzM0OCwxNCArMzM0OCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJNb2R1bGUgZmllbGQgXCJib2R5XCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC0zMzg4LDE0ICszMzg4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkludGVyYWN0aXZlIGZpZWxkIFwiYm9keVwiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtMzQ1MSwxNCArMzQ1MSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJTdWl0ZSBmaWVsZCBcImJvZHlcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCBpLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKQEAgLTM1NjQsMTQgKzM1NjQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYm9keSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10X3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10X3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiRnVuY3Rpb25EZWYgZmllbGQgXCJib2R5XCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC0zNTkzLDE0ICszNTkzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvcmF0b3JfbGlzdCA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkZWNvcmF0b3JfbGlzdCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiRnVuY3Rpb25EZWYgZmllbGQgXCJkZWNvcmF0b3JfbGlzdFwiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGRlY29yYXRvcl9saXN0LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChkZWNvcmF0b3JfbGlzdCwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC0zNjQ5LDE0ICszNjQ5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlcyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYXNlcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiQ2xhc3NEZWYgZmllbGQgXCJiYXNlc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJhc2VzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChiYXNlcywgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC0zNjc4LDE0ICszNjc4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkNsYXNzRGVmIGZpZWxkIFwiYm9keVwiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtMzcwNywxNCArMzcwNywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZGVjb3JhdG9yX2xpc3QgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGVjb3JhdG9yX2xpc3QgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkNsYXNzRGVmIGZpZWxkIFwiZGVjb3JhdG9yX2xpc3RcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChkZWNvcmF0b3JfbGlzdCwgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZGVjb3JhdG9yX2xpc3QsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtMzc3MCwxNCArMzc3MCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0cyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRzID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJEZWxldGUgZmllbGQgXCJ0YXJnZXRzXCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQodGFyZ2V0cywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQodGFyZ2V0cywgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC0zODExLDE0ICszODExLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldHMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkFzc2lnbiBmaWVsZCBcInRhcmdldHNcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVCh0YXJnZXRzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVCh0YXJnZXRzLCBpLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKQEAgLTM5MjUsMTQgKzM5MjUsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZXMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlByaW50IGZpZWxkIFwidmFsdWVzXCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQodmFsdWVzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVCh2YWx1ZXMsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNDAwNCwxNCArNDAwNCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChib2R5ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJGb3IgZmllbGQgXCJib2R5XCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC00MDMzLDE0ICs0MDMzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBvcmVsc2UgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JlbHNlID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJGb3IgZmllbGQgXCJvcmVsc2VcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChvcmVsc2UsIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKG9yZWxzZSwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC00MDg4LDE0ICs0MDg4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIldoaWxlIGZpZWxkIFwiYm9keVwiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNDExNywxNCArNDExNywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgb3JlbHNlID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9yZWxzZSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10X3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10X3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiV2hpbGUgZmllbGQgXCJvcmVsc2VcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChvcmVsc2UsIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKG9yZWxzZSwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC00MTcxLDE0ICs0MTcxLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIklmIGZpZWxkIFwiYm9keVwiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGJvZHksIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNDIwMCwxNCArNDIwMCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgb3JlbHNlID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG9yZWxzZSA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10X3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG10X3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiSWYgZmllbGQgXCJvcmVsc2VcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChvcmVsc2UsIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKG9yZWxzZSwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC00MjY1LDE0ICs0MjY1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIldpdGggZmllbGQgXCJib2R5XCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC00MzU0LDE0ICs0MzU0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlRyeUV4Y2VwdCBmaWVsZCBcImJvZHlcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChib2R5LCBpLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKQEAgLTQzODMsMTQgKzQzODMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJzID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhhbmRsZXJzID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGhhbmRsZXJfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhjZXB0aGFuZGxlcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGhhbmRsZXJfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4Y2VwdGhhbmRsZXIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJUcnlFeGNlcHQgZmllbGQgXCJoYW5kbGVyc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGhhbmRsZXJzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChoYW5kbGVycywgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC00NDEyLDE0ICs0NDEyLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBvcmVsc2UgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3JlbHNlID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJUcnlFeGNlcHQgZmllbGQgXCJvcmVsc2VcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChvcmVsc2UsIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKG9yZWxzZSwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC00NDU0LDE0ICs0NDU0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlRyeUZpbmFsbHkgZmllbGQgXCJib2R5XCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC00NDgzLDE0ICs0NDgzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGJvZHkgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluYWxib2R5ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0bXRfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3N0bXQoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJUcnlGaW5hbGx5IGZpZWxkIFwiZmluYWxib2R5XCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZmluYWxib2R5LCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChmaW5hbGJvZHksIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNDU1OCwxNCArNDU1OCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXMgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmFtZXMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfYWxpYXMoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhc190eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfYWxpYXMoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJJbXBvcnQgZmllbGQgXCJuYW1lc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKG5hbWVzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChuYW1lcywgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC00NjExLDE0ICs0NjExLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGlhc190eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9hbGlhcyhQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWFzX3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9hbGlhcyhQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkltcG9ydEZyb20gZmllbGQgXCJuYW1lc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKG5hbWVzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChuYW1lcywgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC00NzEwLDE0ICs0NzEwLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2lkZW50aWZpZXIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudGlmaWVyIHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pZGVudGlmaWVyKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiR2xvYmFsIGZpZWxkIFwibmFtZXNcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChuYW1lcywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQobmFtZXMsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNDg2MiwxNCArNDg2MiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiQm9vbE9wIGZpZWxkIFwidmFsdWVzXCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQodmFsdWVzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVCh2YWx1ZXMsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNTA3MywxNCArNTA3MywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAga2V5cyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZXlzID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJEaWN0IGZpZWxkIFwia2V5c1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGtleXMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGtleXMsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNTEwMiwxNCArNTEwMiwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVzID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiRGljdCBmaWVsZCBcInZhbHVlc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKHZhbHVlcywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQodmFsdWVzLCBpLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKQEAgLTUxNDIsMTQgKzUxNDIsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGVsdHMgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWx0cyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiU2V0IGZpZWxkIFwiZWx0c1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGVsdHMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGVsdHMsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNTE5NSwxNCArNTE5NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9ycyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZW5lcmF0b3JzID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpb25fdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfY29tcHJlaGVuc2lvbihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpb25fdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2NvbXByZWhlbnNpb24oUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJMaXN0Q29tcCBmaWVsZCBcImdlbmVyYXRvcnNcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChnZW5lcmF0b3JzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChnZW5lcmF0b3JzLCBpLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKQEAgLTUyNDgsMTQgKzUyNDgsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcnMgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9ycyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uX3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2NvbXByZWhlbnNpb24oUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uX3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9jb21wcmVoZW5zaW9uKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiU2V0Q29tcCBmaWVsZCBcImdlbmVyYXRvcnNcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChnZW5lcmF0b3JzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChnZW5lcmF0b3JzLCBpLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKQEAgLTUzMTQsMTQgKzUzMTQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvcnMgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2VuZXJhdG9ycyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uX3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2NvbXByZWhlbnNpb24oUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wcmVoZW5zaW9uX3R5IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9jb21wcmVoZW5zaW9uKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiRGljdENvbXAgZmllbGQgXCJnZW5lcmF0b3JzXCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZ2VuZXJhdG9ycywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZ2VuZXJhdG9ycywgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC01MzY4LDE0ICs1MzY4LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JzID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdlbmVyYXRvcnMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2lvbl90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9jb21wcmVoZW5zaW9uKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2lvbl90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfY29tcHJlaGVuc2lvbihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkdlbmVyYXRvckV4cCBmaWVsZCBcImdlbmVyYXRvcnNcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChnZW5lcmF0b3JzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChnZW5lcmF0b3JzLCBpLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKQEAgLTU0NDQsMTQgKzU0NDQsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIG9wcyA9IGFzZGxfaW50X3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob3BzID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtcG9wX3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2NtcG9wKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY21wb3BfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2NtcG9wKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiQ29tcGFyZSBmaWVsZCBcIm9wc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKG9wcywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQob3BzLCBpLCB2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKQEAgLTU0NzMsMTQgKzU0NzMsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBhcmF0b3JzID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvbXBhcmF0b3JzID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJDb21wYXJlIGZpZWxkIFwiY29tcGFyYXRvcnNcIiBjaGFuZ2VkIHNpemUgZHVyaW5nIGl0ZXJhdGlvbiIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChjb21wYXJhdG9ycywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoY29tcGFyYXRvcnMsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNTUzMCwxNCArNTUzMCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYXJncyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbHVlLCBhcmVuYSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJDYWxsIGZpZWxkIFwiYXJnc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFyZ3MsIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFyZ3MsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNTU1OSwxNCArNTU1OSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMgPSBhc2RsX3NlcV9uZXcobGVuLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoa2V5d29yZHMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9rZXl3b3JkKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZF90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfa2V5d29yZChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkNhbGwgZmllbGQgXCJrZXl3b3Jkc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGtleXdvcmRzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChrZXl3b3JkcywgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC01ODI2LDE0ICs1ODI2LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlbHRzID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsdHMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkxpc3QgZmllbGQgXCJlbHRzXCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZWx0cywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZWx0cywgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC01ODc5LDE0ICs1ODc5LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlbHRzID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsdHMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcihQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIlR1cGxlIGZpZWxkIFwiZWx0c1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGVsdHMsIGksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGVsdHMsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHRtcCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNjA3MCwxNCArNjA3MCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZGltcyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaW1zID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNsaWNlX3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3NsaWNlKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2xpY2VfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X3NsaWNlKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiRXh0U2xpY2UgZmllbGQgXCJkaW1zXCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZGltcywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZGltcywgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC02NDUxLDE0ICs2NDUxLDE0IEBACiAgICAgICAgICAgICAgICAgaWZzID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChpZnMgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IHZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsLCBhcmVuYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbiAhPSBQeUxpc3RfR0VUX1NJWkUodG1wKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAiY29tcHJlaGVuc2lvbiBmaWVsZCBcImlmc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGlmcywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGlmcywgaSwgdmFsKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0bXApOwogICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC02NTU1LDE0ICs2NTU1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJvZHkgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9zdG10KFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RtdF90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcyA9IG9iajJhc3Rfc3RtdChQeUxpc3RfR0VUX0lURU0odG1wLCBpKSwgJnZhbCwgYXJlbmEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkV4Y2VwdEhhbmRsZXIgZmllbGQgXCJib2R5XCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYm9keSwgaSwgdmFsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHRtcCA9IE5VTEw7CkBAIC02NjA3LDE0ICs2NjA3LDE0IEBACiAgICAgICAgICAgICAgICAgYXJncyA9IGFzZGxfc2VxX25ldyhsZW4sIGFyZW5hKTsKICAgICAgICAgICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJhcmd1bWVudHMgZmllbGQgXCJhcmdzXCIgY2hhbmdlZCBzaXplIGR1cmluZyBpdGVyYXRpb24iKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoYXJncywgaSwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFyZ3MsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpAQCAtNjY1OCwxNCArNjY1OCwxNCBAQAogICAgICAgICAgICAgICAgIGRlZmF1bHRzID0gYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOwogICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0cyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSB2YWw7CisgICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIoUHlMaXN0X0dFVF9JVEVNKHRtcCwgaSksICZ2YWwsIGFyZW5hKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGVuICE9IFB5TGlzdF9HRVRfU0laRSh0bXApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsICJhcmd1bWVudHMgZmllbGQgXCJkZWZhdWx0c1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGRlZmF1bHRzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQoZGVmYXVsdHMsIGksIHZhbCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodG1wKTsKICAgICAgICAgICAgICAgICB0bXAgPSBOVUxMOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL193YXJuaW5ncy5jIGIvUHl0aG9uL193YXJuaW5ncy5jCmluZGV4IDhlOGMwY2MuLjM3ODc1ZTUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9fd2FybmluZ3MuYworKysgYi9QeXRob24vX3dhcm5pbmdzLmMKQEAgLTcyLDYgKzcyLDEyIEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgcmV0dXJuIF9vbmNlX3JlZ2lzdHJ5OwogICAgIH0KKyAgICBpZiAoIVB5RGljdF9DaGVjayhyZWdpc3RyeSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5ncy5vbmNlcmVnaXN0cnkgbXVzdCBiZSBhIGRpY3QiKTsKKyAgICAgICAgUHlfREVDUkVGKHJlZ2lzdHJ5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIFB5X0RFQ1JFRihfb25jZV9yZWdpc3RyeSk7CiAgICAgX29uY2VfcmVnaXN0cnkgPSByZWdpc3RyeTsKICAgICByZXR1cm4gcmVnaXN0cnk7CkBAIC0yOTYsNyArMzAyLDcgQEAKICAgICBpbnQgcmM7CiAKICAgICBpZiAocmVnaXN0cnkgJiYgIVB5RGljdF9DaGVjayhyZWdpc3RyeSkgJiYgKHJlZ2lzdHJ5ICE9IFB5X05vbmUpKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICIncmVnaXN0cnknIG11c3QgYmUgYSBkaWN0Iik7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICIncmVnaXN0cnknIG11c3QgYmUgYSBkaWN0IG9yIE5vbmUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCkBAIC02NzgsOCArNjg0LDkgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8qIFNwbGl0IHRoZSBzb3VyY2UgaW50byBsaW5lcy4gKi8KLSAgICAgICAgc291cmNlX2xpc3QgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhzb3VyY2UsIHNwbGl0bGluZXNfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgc291cmNlX2xpc3QgPSBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncygoUHlPYmplY3QgKikmUHlTdHJpbmdfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGxpdGxpbmVzX25hbWUsIHNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHNvdXJjZSk7CiAgICAgICAgIGlmICghc291cmNlX2xpc3QpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9hc3QuYyBiL1B5dGhvbi9hc3QuYwppbmRleCAzMThjMGJiLi45NDYwMzI1IDEwMDY0NAotLS0gYS9QeXRob24vYXN0LmMKKysrIGIvUHl0aG9uL2FzdC5jCkBAIC0yNTIwLDYgKzI1MjAsOCBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU1RBUjoKICAgICAgICAgICAgIHN0ciA9IFB5U3RyaW5nX0ludGVybkZyb21TdHJpbmcoIioiKTsKKyAgICAgICAgICAgIGlmICghc3RyKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBzdHIpOwogICAgICAgICAgICAgcmV0dXJuIGFsaWFzKHN0ciwgTlVMTCwgYy0+Y19hcmVuYSk7CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9QeXRob24vYmx0aW5tb2R1bGUuYyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCmluZGV4IGYwM2U0ODguLjRiODE5ZGEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jCisrKyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCkBAIC01NCw3ICs1NCw3IEBACiAiX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzPXt9LCBsb2NhbHM9e30sIGZyb21saXN0PVtdLCBsZXZlbD0tMSkgLT4gbW9kdWxlXG5cCiBcblwKIEltcG9ydCBhIG1vZHVsZS4gQmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG1lYW50IGZvciB1c2UgYnkgdGhlIFB5dGhvblxuXAotaW50ZXJwcmV0ZXIgYW5kIG5vdCBmb3IgZ2VuZXJhbCB1c2UgaXQgaXMgYmV0dGVyIHRvIHVzZVxuXAoraW50ZXJwcmV0ZXIgYW5kIG5vdCBmb3IgZ2VuZXJhbCB1c2UsIGl0IGlzIGJldHRlciB0byB1c2VcblwKIGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkgdG8gcHJvZ3JhbW1hdGljYWxseSBpbXBvcnQgYSBtb2R1bGUuXG5cCiBcblwKIFRoZSBnbG9iYWxzIGFyZ3VtZW50IGlzIG9ubHkgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGNvbnRleHQ7XG5cCkBAIC02Myw5ICs2Myw4IEBACiBlbXB0eSBsaXN0IHRvIGVtdWxhdGUgYGBpbXBvcnQgbmFtZScnLlxuXAogV2hlbiBpbXBvcnRpbmcgYSBtb2R1bGUgZnJvbSBhIHBhY2thZ2UsIG5vdGUgdGhhdCBfX2ltcG9ydF9fKCdBLkInLCAuLi4pXG5cCiByZXR1cm5zIHBhY2thZ2UgQSB3aGVuIGZyb21saXN0IGlzIGVtcHR5LCBidXQgaXRzIHN1Ym1vZHVsZSBCIHdoZW5cblwKLWZyb21saXN0IGlzIG5vdCBlbXB0eS4gIExldmVsIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdG8gcGVyZm9ybSBcblwKLWFic29sdXRlIG9yIHJlbGF0aXZlIGltcG9ydHMuICAtMSBpcyB0aGUgb3JpZ2luYWwgc3RyYXRlZ3kgb2YgYXR0ZW1wdGluZ1xuXAotYm90aCBhYnNvbHV0ZSBhbmQgcmVsYXRpdmUgaW1wb3J0cywgMCBpcyBhYnNvbHV0ZSwgYSBwb3NpdGl2ZSBudW1iZXJcblwKK2Zyb21saXN0IGlzIG5vdCBlbXB0eS4gIFRoZSBsZXZlbCBhcmd1bWVudCBpcyB1c2VkIHRvIGRldGVybWluZSB3aGV0aGVyIHRvXG5cCitwZXJmb3JtIGFic29sdXRlIG9yIHJlbGF0aXZlIGltcG9ydHM6IDAgaXMgYWJzb2x1dGUsIHdoaWxlIGEgcG9zaXRpdmUgbnVtYmVyXG5cCiBpcyB0aGUgbnVtYmVyIG9mIHBhcmVudCBkaXJlY3RvcmllcyB0byBzZWFyY2ggcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQgbW9kdWxlLiIpOwogCiAKQEAgLTM3NCw3ICszNzMsOSBAQAogImZvcm1hdCh2YWx1ZVssIGZvcm1hdF9zcGVjXSkgLT4gc3RyaW5nXG5cCiBcblwKIFJldHVybnMgdmFsdWUuX19mb3JtYXRfXyhmb3JtYXRfc3BlYylcblwKLWZvcm1hdF9zcGVjIGRlZmF1bHRzIHRvIFwiXCIiKTsKK2Zvcm1hdF9zcGVjIGRlZmF1bHRzIHRvIHRoZSBlbXB0eSBzdHJpbmcuXG5cCitTZWUgdGhlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2Ugc2VjdGlvbiBvZiBoZWxwKCdGT1JNQVRUSU5HJykgZm9yXG5cCitkZXRhaWxzLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnVpbHRpbl9jaHIoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQpAQCAtMTc3OSw3ICsxNzgwLDcgQEAKIHsKICAgICBQeU9iamVjdCAqdjsKICAgICBQeU51bWJlck1ldGhvZHMgKm5iOwotICAgIGlmIChQeUludF9DaGVjayhhcmcpIHx8IFB5TG9uZ19DaGVjayhhcmcpKSB7CisgICAgaWYgKF9QeUFueUludF9DaGVjayhhcmcpKSB7CiAgICAgICAgIFB5X0lOQ1JFRihhcmcpOwogICAgICAgICByZXR1cm4gYXJnOwogICAgIH0KQEAgLTE3OTQsNyArMTc5NSw3IEBACiAgICAgdiA9IG5iLT5uYl9pbnQoYXJnKTsKICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlJbnRfQ2hlY2sodikgfHwgUHlMb25nX0NoZWNrKHYpKQorICAgIGlmIChfUHlBbnlJbnRfQ2hlY2sodikpCiAgICAgICAgIHJldHVybiB2OwogICAgIFB5X0RFQ1JFRih2KTsKICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLApAQCAtMjM2Miw2ICsyMzYzLDExIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiBFaXRoZXIgb3ZlcmZsb3dlZCBvciBpcyBub3QgYW4gaW50LiBSZXN0b3JlIHJlYWwgb2JqZWN0cyBhbmQgcHJvY2VzcyBub3JtYWxseSAqLwogICAgICAgICAgICAgcmVzdWx0ID0gUHlJbnRfRnJvbUxvbmcoaV9yZXN1bHQpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRlbXAgPSBQeU51bWJlcl9BZGQocmVzdWx0LCBpdGVtKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwpAQCAtMjQwMCw2ICsyNDA2LDExIEBACiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUoZl9yZXN1bHQpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdGVyKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRlbXAgPSBQeU51bWJlcl9BZGQocmVzdWx0LCBpdGVtKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXN1bHQpOwogICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOwpAQCAtMjQ0MywxMCArMjQ1NCwxMCBAQAogfQogCiBQeURvY19TVFJWQVIoc3VtX2RvYywKLSJzdW0oc2VxdWVuY2VbLCBzdGFydF0pIC0+IHZhbHVlXG5cCisic3VtKGl0ZXJhYmxlWywgc3RhcnRdKSAtPiB2YWx1ZVxuXAogXG5cCi1SZXR1cm4gdGhlIHN1bSBvZiBhIHNlcXVlbmNlIG9mIG51bWJlcnMgKE5PVCBzdHJpbmdzKSBwbHVzIHRoZSB2YWx1ZVxuXAotb2YgcGFyYW1ldGVyICdzdGFydCcgKHdoaWNoIGRlZmF1bHRzIHRvIDApLiAgV2hlbiB0aGUgc2VxdWVuY2UgaXNcblwKK1JldHVybiB0aGUgc3VtIG9mIGFuIGl0ZXJhYmxlIG9yIHNlcXVlbmNlIG9mIG51bWJlcnMgKE5PVCBzdHJpbmdzKVxuXAorcGx1cyB0aGUgdmFsdWUgb2YgJ3N0YXJ0JyAod2hpY2ggZGVmYXVsdHMgdG8gMCkuICBXaGVuIHRoZSBzZXF1ZW5jZSBpc1xuXAogZW1wdHksIHJldHVybiBzdGFydC4iKTsKIAogCmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWwuYyBiL1B5dGhvbi9jZXZhbC5jCmluZGV4IDJhZjc4ZmYuLjIwODhhMjcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jZXZhbC5jCisrKyBiL1B5dGhvbi9jZXZhbC5jCkBAIC02ODksMTEgKzY4OSwxOSBAQAogUHlFdmFsX0V2YWxGcmFtZUV4KFB5RnJhbWVPYmplY3QgKmYsIGludCB0aHJvd2ZsYWcpCiB7CiAjaWZkZWYgRFlOQU1JQ19FWEVDVVRJT05fUFJPRklMRQotICAjdW5kZWYgVVNFX0NPTVBVVEVEX0dPVE9TCisgICAgI3VuZGVmIFVTRV9DT01QVVRFRF9HT1RPUwogI2VuZGlmCiAjaWZkZWYgSEFWRV9DT01QVVRFRF9HT1RPUwogICAgICNpZm5kZWYgVVNFX0NPTVBVVEVEX0dPVE9TCi0gICAgI2RlZmluZSBVU0VfQ09NUFVURURfR09UT1MgMQorICAgICAgICAjaWYgZGVmaW5lZChfX2NsYW5nX18pICYmIChfX2NsYW5nX21ham9yX18gPCA1KQorICAgICAgICAgICAgLyogQ29tcHV0ZWQgZ290b3MgY2F1c2VkIHNpZ25pZmljYW50IHBlcmZvcm1hbmNlIHJlZ3Jlc3Npb24KKyAgICAgICAgICAgICAqIHdpdGggY2xhbmcgPCA1LjAuCisgICAgICAgICAgICAgKiBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTMyNjE2CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICNkZWZpbmUgVVNFX0NPTVBVVEVEX0dPVE9TIDAKKyAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICNkZWZpbmUgVVNFX0NPTVBVVEVEX0dPVE9TIDEKKyAgICAgICAgI2VuZGlmCiAgICAgI2VuZGlmCiAjZWxzZQogICAgICNpZiBkZWZpbmVkKFVTRV9DT01QVVRFRF9HT1RPUykgJiYgVVNFX0NPTVBVVEVEX0dPVE9TCkBAIC0xNDQ2LDEwICsxNDU0LDE0IEBACiAgICAgICAgIHsKICAgICAgICAgICAgIHcgPSBQT1AoKTsKICAgICAgICAgICAgIHYgPSBUT1AoKTsKLSAgICAgICAgICAgIGlmIChQeVN0cmluZ19DaGVja0V4YWN0KHYpKQorICAgICAgICAgICAgaWYgKFB5U3RyaW5nX0NoZWNrRXhhY3QodikKKyAgICAgICAgICAgICAgICAmJiAoIVB5U3RyaW5nX0NoZWNrKHcpIHx8IFB5U3RyaW5nX0NoZWNrRXhhY3QodykpKSB7CisgICAgICAgICAgICAgICAgLyogZmFzdCBwYXRoOyBzdHJpbmcgZm9ybWF0dGluZywgYnV0IG5vdCBpZiB0aGUgUkhTIGlzIGEgc3RyIHN1YmNsYXNzCisgICAgICAgICAgICAgICAgICAgKHNlZSBpc3N1ZTI4NTk4KSAqLwogICAgICAgICAgICAgICAgIHggPSBQeVN0cmluZ19Gb3JtYXQodiwgdyk7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHggPSBQeU51bWJlcl9SZW1haW5kZXIodiwgdyk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICBQeV9ERUNSRUYodyk7CiAgICAgICAgICAgICBTRVRfVE9QKHgpOwpAQCAtMjU4Niw2ICsyNTk4LDcgQEAKIAogICAgICAgICBUQVJHRVQoSU1QT1JUX05BTUUpCiAgICAgICAgIHsKKyAgICAgICAgICAgIGxvbmcgcmVzOwogICAgICAgICAgICAgdyA9IEdFVElURU0obmFtZXMsIG9wYXJnKTsKICAgICAgICAgICAgIHggPSBQeURpY3RfR2V0SXRlbVN0cmluZyhmLT5mX2J1aWx0aW5zLCAiX19pbXBvcnRfXyIpOwogICAgICAgICAgICAgaWYgKHggPT0gTlVMTCkgewpAQCAtMjU5Niw3ICsyNjA5LDEyIEBACiAgICAgICAgICAgICBQeV9JTkNSRUYoeCk7CiAgICAgICAgICAgICB2ID0gUE9QKCk7CiAgICAgICAgICAgICB1ID0gVE9QKCk7Ci0gICAgICAgICAgICBpZiAoUHlJbnRfQXNMb25nKHUpICE9IC0xIHx8IFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICByZXMgPSBQeUludF9Bc0xvbmcodSk7CisgICAgICAgICAgICBpZiAocmVzICE9IC0xIHx8IFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgdyA9IFB5VHVwbGVfUGFjayg1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9nbG9iYWxzLApAQCAtMjYwNCw2ICsyNjIyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB3ID0gUHlUdXBsZV9QYWNrKDQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdywKQEAgLTI2MzcsNiArMjY1Niw3IEBACiAgICAgICAgICAgICBpZiAoKHggPSBmLT5mX2xvY2FscykgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyBmb3VuZCBkdXJpbmcgJ2ltcG9ydCAqJyIpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKQEAgLTQ2NzQsNyArNDY5NCw3IEBACiAvKiBFeHRyYWN0IGEgc2xpY2UgaW5kZXggZnJvbSBhIFB5SW50IG9yIFB5TG9uZyBvciBhbiBvYmplY3Qgd2l0aCB0aGUKICAgIG5iX2luZGV4IHNsb3QgZGVmaW5lZCwgYW5kIHN0b3JlIGluICpwaS4KICAgIFNpbGVudGx5IHJlZHVjZSB2YWx1ZXMgbGFyZ2VyIHRoYW4gUFlfU1NJWkVfVF9NQVggdG8gUFlfU1NJWkVfVF9NQVgsCi0gICBhbmQgc2lsZW50bHkgYm9vc3QgdmFsdWVzIGxlc3MgdGhhbiAtUFlfU1NJWkVfVF9NQVgtMSB0byAtUFlfU1NJWkVfVF9NQVgtMS4KKyAgIGFuZCBzaWxlbnRseSBib29zdCB2YWx1ZXMgbGVzcyB0aGFuIFBZX1NTSVpFX1RfTUlOIHRvIFBZX1NTSVpFX1RfTUlOLgogICAgUmV0dXJuIDAgb24gZXJyb3IsIDEgb24gc3VjY2Vzcy4KICovCiAvKiBOb3RlOiAgSWYgdiBpcyBOVUxMLCByZXR1cm4gc3VjY2VzcyB3aXRob3V0IHN0b3JpbmcgaW50byAqcGkuICBUaGlzCkBAIC00Njg0LDcgKzQ3MDQsNyBAQAogaW50CiBfUHlFdmFsX1NsaWNlSW5kZXgoUHlPYmplY3QgKnYsIFB5X3NzaXplX3QgKnBpKQogewotICAgIGlmICh2ICE9IE5VTEwpIHsKKyAgICBpZiAodiAhPSBOVUxMICYmIHYgIT0gUHlfTm9uZSkgewogICAgICAgICBQeV9zc2l6ZV90IHg7CiAgICAgICAgIGlmIChQeUludF9DaGVjayh2KSkgewogICAgICAgICAgICAgLyogWFhYKG5ub3J3aXR6KTogSSB0aGluayBQeUludF9BU19MT05HIGlzIGNvcnJlY3QsCkBAIC00NzA5LDkgKzQ3MjksMjggQEAKICAgICByZXR1cm4gMTsKIH0KIAoraW50CitfUHlFdmFsX1NsaWNlSW5kZXhOb3ROb25lKFB5T2JqZWN0ICp2LCBQeV9zc2l6ZV90ICpwaSkKK3sKKyAgICBQeV9zc2l6ZV90IHg7CisgICAgaWYgKFB5SW5kZXhfQ2hlY2sodikpIHsKKyAgICAgICAgeCA9IFB5TnVtYmVyX0FzU3NpemVfdCh2LCBOVUxMKTsKKyAgICAgICAgaWYgKHggPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzbGljZSBpbmRpY2VzIG11c3QgYmUgaW50ZWdlcnMgb3IgIgorICAgICAgICAgICAgICAgICAgICAgICAgImhhdmUgYW4gX19pbmRleF9fIG1ldGhvZCIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgKnBpID0geDsKKyAgICByZXR1cm4gMTsKK30KKworCiAjdW5kZWYgSVNJTkRFWAotI2RlZmluZSBJU0lOREVYKHgpICgoeCkgPT0gTlVMTCB8fCBcCi0gICAgICAgICAgICAgICAgICAgIFB5SW50X0NoZWNrKHgpIHx8IFB5TG9uZ19DaGVjayh4KSB8fCBQeUluZGV4X0NoZWNrKHgpKQorI2RlZmluZSBJU0lOREVYKHgpICgoeCkgPT0gTlVMTCB8fCBfUHlBbnlJbnRfQ2hlY2soeCkgfHwgUHlJbmRleF9DaGVjayh4KSkKIAogc3RhdGljIFB5T2JqZWN0ICoKIGFwcGx5X3NsaWNlKFB5T2JqZWN0ICp1LCBQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpIC8qIHJldHVybiB1W3Y6d10gKi8KZGlmZiAtLWdpdCBhL1B5dGhvbi9jb21waWxlLmMgYi9QeXRob24vY29tcGlsZS5jCmluZGV4IDljOWIyMzYuLjRmZTY5ZTEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb21waWxlLmMKKysrIGIvUHl0aG9uL2NvbXBpbGUuYwpAQCAtMTA3NSw2ICsxMDc1LDE1IEBACiAgICAgICAgIHJldHVybiAwOyBcCiB9CiAKKy8qIFNhbWUgYXMgQURET1BfTywgYnV0IHN0ZWFscyBhIHJlZmVyZW5jZS4gKi8KKyNkZWZpbmUgQURET1BfTihDLCBPUCwgTywgVFlQRSkgeyBcCisgICAgaWYgKCFjb21waWxlcl9hZGRvcF9vKChDKSwgKE9QKSwgKEMpLT51LT51XyAjIyBUWVBFLCAoTykpKSB7IFwKKyAgICAgICAgUHlfREVDUkVGKChPKSk7IFwKKyAgICAgICAgcmV0dXJuIDA7IFwKKyAgICB9IFwKKyAgICBQeV9ERUNSRUYoKE8pKTsgXAorfQorCiAjZGVmaW5lIEFERE9QX05BTUUoQywgT1AsIE8sIFRZUEUpIHsgXAogICAgIGlmICghY29tcGlsZXJfYWRkb3BfbmFtZSgoQyksIChPUCksIChDKS0+dS0+dV8gIyMgVFlQRSwgKE8pKSkgXAogICAgICAgICByZXR1cm4gMDsgXApAQCAtMTg5MCw4ICsxODk5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90ID8gZG90IC0gc3JjIDogc3RybGVuKHNyYykpOwogICAgICAgICAgICAgaWYgKCFhdHRyKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgQURET1BfTyhjLCBMT0FEX0FUVFIsIGF0dHIsIG5hbWVzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhdHRyKTsKKyAgICAgICAgICAgIEFERE9QX04oYywgTE9BRF9BVFRSLCBhdHRyLCBuYW1lcyk7CiAgICAgICAgICAgICBzcmMgPSBkb3QgKyAxOwogICAgICAgICB9CiAgICAgfQpAQCAtMTkyMyw4ICsxOTMxLDcgQEAKICAgICAgICAgaWYgKGxldmVsID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gMDsKIAotICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGxldmVsLCBjb25zdHMpOwotICAgICAgICBQeV9ERUNSRUYobGV2ZWwpOworICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIGxldmVsLCBjb25zdHMpOwogICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CiAgICAgICAgIEFERE9QX05BTUUoYywgSU1QT1JUX05BTUUsIGFsaWFzLT5uYW1lLCBuYW1lcyk7CiAKQEAgLTE5NTksOCArMTk2Niw3IEBACiB7CiAgICAgaW50IGksIG4gPSBhc2RsX3NlcV9MRU4ocy0+di5JbXBvcnRGcm9tLm5hbWVzKTsKIAotICAgIFB5T2JqZWN0ICpuYW1lcyA9IFB5VHVwbGVfTmV3KG4pOwotICAgIFB5T2JqZWN0ICpsZXZlbDsKKyAgICBQeU9iamVjdCAqbGV2ZWwsICpuYW1lczsKICAgICBzdGF0aWMgUHlPYmplY3QgKmVtcHR5X3N0cmluZzsKIAogICAgIGlmICghZW1wdHlfc3RyaW5nKSB7CkBAIC0xOTY5LDkgKzE5NzUsNiBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKCFuYW1lcykKLSAgICAgICAgcmV0dXJuIDA7Ci0KICAgICBpZiAocy0+di5JbXBvcnRGcm9tLmxldmVsID09IDAgJiYgYy0+Y19mbGFncyAmJgogICAgICAgICAhKGMtPmNfZmxhZ3MtPmNmX2ZsYWdzICYgQ09fRlVUVVJFX0FCU09MVVRFX0lNUE9SVCkpCiAgICAgICAgIGxldmVsID0gUHlJbnRfRnJvbUxvbmcoLTEpOwpAQCAtMTk3OSw5ICsxOTgyLDEzIEBACiAgICAgICAgIGxldmVsID0gUHlJbnRfRnJvbUxvbmcocy0+di5JbXBvcnRGcm9tLmxldmVsKTsKIAogICAgIGlmICghbGV2ZWwpIHsKLSAgICAgICAgUHlfREVDUkVGKG5hbWVzKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwgbGV2ZWwsIGNvbnN0cyk7CisKKyAgICBuYW1lcyA9IFB5VHVwbGVfTmV3KG4pOworICAgIGlmICghbmFtZXMpCisgICAgICAgIHJldHVybiAwOwogCiAgICAgLyogYnVpbGQgdXAgdGhlIG5hbWVzICovCiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewpAQCAtMTk5MiwxNiArMTk5OSwxMiBAQAogCiAgICAgaWYgKHMtPmxpbmVubyA+IGMtPmNfZnV0dXJlLT5mZl9saW5lbm8gJiYgcy0+di5JbXBvcnRGcm9tLm1vZHVsZSAmJgogICAgICAgICAhc3RyY21wKFB5U3RyaW5nX0FTX1NUUklORyhzLT52LkltcG9ydEZyb20ubW9kdWxlKSwgIl9fZnV0dXJlX18iKSkgewotICAgICAgICBQeV9ERUNSRUYobGV2ZWwpOwogICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwogICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgImZyb20gX19mdXR1cmVfXyBpbXBvcnRzIG11c3Qgb2NjdXIgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUiKTsKICAgICB9CisgICAgQURET1BfTihjLCBMT0FEX0NPTlNULCBuYW1lcywgY29uc3RzKTsKIAotICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgbGV2ZWwsIGNvbnN0cyk7Ci0gICAgUHlfREVDUkVGKGxldmVsKTsKLSAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIG5hbWVzLCBjb25zdHMpOwotICAgIFB5X0RFQ1JFRihuYW1lcyk7CiAgICAgaWYgKHMtPnYuSW1wb3J0RnJvbS5tb2R1bGUpIHsKICAgICAgICAgQURET1BfTkFNRShjLCBJTVBPUlRfTkFNRSwgcy0+di5JbXBvcnRGcm9tLm1vZHVsZSwgbmFtZXMpOwogICAgIH0KQEAgLTIwMjQsNyArMjAyNyw2IEBACiAgICAgICAgICAgICBzdG9yZV9uYW1lID0gYWxpYXMtPmFzbmFtZTsKIAogICAgICAgICBpZiAoIWNvbXBpbGVyX25hbWVvcChjLCBzdG9yZV9uYW1lLCBTdG9yZSkpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgIH0KQEAgLTIzOTEsOCArMjM5Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtIGludmFsaWQgZm9yIGxvY2FsIHZhcmlhYmxlIik7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBBRERPUF9PKGMsIG9wLCBtYW5nbGVkLCB2YXJuYW1lcyk7Ci0gICAgICAgIFB5X0RFQ1JFRihtYW5nbGVkKTsKKyAgICAgICAgQURET1BfTihjLCBvcCwgbWFuZ2xlZCwgdmFybmFtZXMpOwogICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIE9QX0dMT0JBTDoKICAgICAgICAgc3dpdGNoIChjdHgpIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9nZXRhcmdzLmMgYi9QeXRob24vZ2V0YXJncy5jCmluZGV4IDMyZmY2ZmMuLmNjMWRkZGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9nZXRhcmdzLmMKKysrIGIvUHl0aG9uL2dldGFyZ3MuYwpAQCAtMTc4MCw3ICsxNzgwLDcgQEAKICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICh2b2lkKSB2YV9hcmcoKnBfdmEsIGludCAqKTsKICAgICAgICAgICAgICAgICBmb3JtYXQrKzsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKGMgPT0gJ3MnIHx8IGMgPT0gJ3onKSAmJiAqZm9ybWF0ID09ICcqJykgeworICAgICAgICAgICAgfSBlbHNlIGlmICgoYyA9PSAncycgfHwgYyA9PSAneicgfHwgYyA9PSAndycpICYmICpmb3JtYXQgPT0gJyonKSB7CiAgICAgICAgICAgICAgICAgZm9ybWF0Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1B5dGhvbi9nZXRjb21waWxlci5jIGIvUHl0aG9uL2dldGNvbXBpbGVyLmMKaW5kZXggMGY0NDFkZS4uOWQ5YzMzYSAxMDA2NDQKLS0tIGEvUHl0aG9uL2dldGNvbXBpbGVyLmMKKysrIGIvUHl0aG9uL2dldGNvbXBpbGVyLmMKQEAgLTI0LDUgKzI0LDUgQEAKIGNvbnN0IGNoYXIgKgogUHlfR2V0Q29tcGlsZXIodm9pZCkKIHsKLQlyZXR1cm4gQ09NUElMRVI7CisgICAgcmV0dXJuIENPTVBJTEVSOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL2dldGNvcHlyaWdodC5jIGIvUHl0aG9uL2dldGNvcHlyaWdodC5jCmluZGV4IGM5N2VhZWIuLjFiNjkwMTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9nZXRjb3B5cmlnaHQuYworKysgYi9QeXRob24vZ2V0Y29weXJpZ2h0LmMKQEAgLTQsNyArNCw3IEBACiAKIHN0YXRpYyBjaGFyIGNwcnRbXSA9IAogIlwKLUNvcHlyaWdodCAoYykgMjAwMS0yMDE2IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLlxuXAorQ29weXJpZ2h0IChjKSAyMDAxLTIwMTggUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uXG5cCiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuXAogXG5cCiBDb3B5cmlnaHQgKGMpIDIwMDAgQmVPcGVuLmNvbS5cblwKZGlmZiAtLWdpdCBhL1B5dGhvbi9pbXBvcnQuYyBiL1B5dGhvbi9pbXBvcnQuYwppbmRleCAxZDc0ZmFmLi5mNDNhNDdjIDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0LmMKKysrIGIvUHl0aG9uL2ltcG9ydC5jCkBAIC00NDcsNyArNDQ3LDkgQEAKICAgICAgICAgZGljdCA9IFB5TW9kdWxlX0dldERpY3QodmFsdWUpOwogICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCiAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjbGVhciBfX2J1aWx0aW5fXy5fXG4iKTsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIl8iLCBQeV9Ob25lKTsKKyAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICJfIiwgUHlfTm9uZSkgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CiAgICAgfQogICAgIHZhbHVlID0gUHlEaWN0X0dldEl0ZW1TdHJpbmcobW9kdWxlcywgInN5cyIpOwogICAgIGlmICh2YWx1ZSAhPSBOVUxMICYmIFB5TW9kdWxlX0NoZWNrKHZhbHVlKSkgewpAQCAtNDU3LDcgKzQ1OSw5IEBACiAgICAgICAgIGZvciAocCA9IHN5c19kZWxldGVzOyAqcCAhPSBOVUxMOyBwKyspIHsKICAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKICAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjbGVhciBzeXMuJXNcbiIsICpwKTsKLSAgICAgICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICpwLCBQeV9Ob25lKTsKKyAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkaWN0LCAqcCwgUHlfTm9uZSkgPCAwKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBmb3IgKHAgPSBzeXNfZmlsZXM7ICpwICE9IE5VTEw7IHArPTIpIHsKICAgICAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKQEAgLTQ2NSw3ICs0NjksOSBAQAogICAgICAgICAgICAgdiA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKGRpY3QsICoocCsxKSk7CiAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQogICAgICAgICAgICAgICAgIHYgPSBQeV9Ob25lOwotICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgKnAsIHYpOworICAgICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGRpY3QsICpwLCB2KSA8IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCkBAIC00NzUsNyArNDgxLDkgQEAKICAgICAgICAgaWYgKFB5X1ZlcmJvc2VGbGFnKQogICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgY2xlYW51cCBfX21haW5fX1xuIik7CiAgICAgICAgIF9QeU1vZHVsZV9DbGVhcih2YWx1ZSk7Ci0gICAgICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKG1vZHVsZXMsICJfX21haW5fXyIsIFB5X05vbmUpOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgIl9fbWFpbl9fIiwgUHlfTm9uZSkgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyogVGhlIHNwZWNpYWwgdHJlYXRtZW50IG9mIF9fYnVpbHRpbl9fIGhlcmUgaXMgYmVjYXVzZSBldmVuCkBAIC01MTAsMTAgKzUxOCwxNSBAQAogICAgICAgICAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigKICAgICAgICAgICAgICAgICAgICAgICAgICIjIGNsZWFudXBbMV0gJXNcbiIsIG5hbWUpOwogICAgICAgICAgICAgICAgIF9QeU1vZHVsZV9DbGVhcih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW0obW9kdWxlcywga2V5LCBQeV9Ob25lKTsKKyAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0obW9kdWxlcywga2V5LCBQeV9Ob25lKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbmRvbmUrKzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQogICAgIH0gd2hpbGUgKG5kb25lID4gMCk7CiAKICAgICAvKiBOZXh0LCBkZWxldGUgYWxsIG1vZHVsZXMgKHN0aWxsIHNraXBwaW5nIF9fYnVpbHRpbl9fIGFuZCBzeXMpICovCkBAIC01MjgsNyArNTQxLDEyIEBACiAgICAgICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCiAgICAgICAgICAgICAgICAgUHlTeXNfV3JpdGVTdGRlcnIoIiMgY2xlYW51cFsyXSAlc1xuIiwgbmFtZSk7CiAgICAgICAgICAgICBfUHlNb2R1bGVfQ2xlYXIodmFsdWUpOwotICAgICAgICAgICAgUHlEaWN0X1NldEl0ZW0obW9kdWxlcywga2V5LCBQeV9Ob25lKTsKKyAgICAgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbShtb2R1bGVzLCBrZXksIFB5X05vbmUpIDwgMCkgeworICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUzOCwxNCArNTU2LDE4IEBACiAgICAgICAgIGlmIChQeV9WZXJib3NlRmxhZykKICAgICAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCIjIGNsZWFudXAgc3lzXG4iKTsKICAgICAgICAgX1B5TW9kdWxlX0NsZWFyKHZhbHVlKTsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgInN5cyIsIFB5X05vbmUpOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgInN5cyIsIFB5X05vbmUpIDwgMCkgeworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgfQogICAgIH0KICAgICB2YWx1ZSA9IFB5RGljdF9HZXRJdGVtU3RyaW5nKG1vZHVsZXMsICJfX2J1aWx0aW5fXyIpOwogICAgIGlmICh2YWx1ZSAhPSBOVUxMICYmIFB5TW9kdWxlX0NoZWNrKHZhbHVlKSkgewogICAgICAgICBpZiAoUHlfVmVyYm9zZUZsYWcpCiAgICAgICAgICAgICBQeVN5c19Xcml0ZVN0ZGVycigiIyBjbGVhbnVwIF9fYnVpbHRpbl9fXG4iKTsKICAgICAgICAgX1B5TW9kdWxlX0NsZWFyKHZhbHVlKTsKLSAgICAgICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcobW9kdWxlcywgIl9fYnVpbHRpbl9fIiwgUHlfTm9uZSk7CisgICAgICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhtb2R1bGVzLCAiX19idWlsdGluX18iLCBQeV9Ob25lKSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICAvKiBGaW5hbGx5LCBjbGVhciBhbmQgZGVsZXRlIHRoZSBtb2R1bGVzIGRpcmVjdG9yeSAqLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL21hcnNoYWwuYyBiL1B5dGhvbi9tYXJzaGFsLmMKaW5kZXggZTFhODRkMC4uZjU1NTk5YiAxMDA2NDQKLS0tIGEvUHl0aG9uL21hcnNoYWwuYworKysgYi9QeXRob24vbWFyc2hhbC5jCkBAIC00NjUsNiArNDY1LDkgQEAKIHsKICAgICBXRklMRSB3ZjsKICAgICB3Zi5mcCA9IGZwOworICAgIHdmLnN0ciA9IE5VTEw7CisgICAgd2YucHRyID0gTlVMTDsKKyAgICB3Zi5lbmQgPSBOVUxMOwogICAgIHdmLmVycm9yID0gV0ZFUlJfT0s7CiAgICAgd2YuZGVwdGggPSAwOwogICAgIHdmLnN0cmluZ3MgPSBOVUxMOwpAQCAtNDc3LDYgKzQ4MCw5IEBACiB7CiAgICAgV0ZJTEUgd2Y7CiAgICAgd2YuZnAgPSBmcDsKKyAgICB3Zi5zdHIgPSBOVUxMOworICAgIHdmLnB0ciA9IE5VTEw7CisgICAgd2YuZW5kID0gTlVMTDsKICAgICB3Zi5lcnJvciA9IFdGRVJSX09LOwogICAgIHdmLmRlcHRoID0gMDsKICAgICB3Zi5zdHJpbmdzID0gKHZlcnNpb24gPiAwKSA/IFB5RGljdF9OZXcoKSA6IE5VTEw7CmRpZmYgLS1naXQgYS9QeXRob24vcHlzdGF0ZS5jIGIvUHl0aG9uL3B5c3RhdGUuYwppbmRleCBlYjk5MmMxLi5mMzNmMTgyIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdGF0ZS5jCisrKyBiL1B5dGhvbi9weXN0YXRlLmMKQEAgLTU4OCw2ICs1ODgsOCBAQAogewogICAgIGludCBjdXJyZW50OwogICAgIFB5VGhyZWFkU3RhdGUgKnRjdXI7CisgICAgaW50IG5lZWRfaW5pdF90aHJlYWRzID0gMDsKKwogICAgIC8qIE5vdGUgdGhhdCB3ZSBkbyBub3QgYXV0by1pbml0IFB5dGhvbiBoZXJlIC0gYXBhcnQgZnJvbQogICAgICAgIHBvdGVudGlhbCByYWNlcyB3aXRoIDIgdGhyZWFkcyBhdXRvLWluaXRpYWxpemluZywgcGVwLTMxMQogICAgICAgIHNwZWxscyBvdXQgb3RoZXIgaXNzdWVzLiAgRW1iZWRkZXJzIGFyZSBleHBlY3RlZCB0byBoYXZlCkBAIC01OTYsNiArNTk4LDggQEAKICAgICBhc3NlcnQoYXV0b0ludGVycHJldGVyU3RhdGUpOyAvKiBQeV9Jbml0aWFsaXplKCkgaGFzbid0IGJlZW4gY2FsbGVkISAqLwogICAgIHRjdXIgPSAoUHlUaHJlYWRTdGF0ZSAqKVB5VGhyZWFkX2dldF9rZXlfdmFsdWUoYXV0b1RMU2tleSk7CiAgICAgaWYgKHRjdXIgPT0gTlVMTCkgeworICAgICAgICBuZWVkX2luaXRfdGhyZWFkcyA9IDE7CisKICAgICAgICAgLyogQ3JlYXRlIGEgbmV3IHRocmVhZCBzdGF0ZSBmb3IgdGhpcyB0aHJlYWQgKi8KICAgICAgICAgdGN1ciA9IFB5VGhyZWFkU3RhdGVfTmV3KGF1dG9JbnRlcnByZXRlclN0YXRlKTsKICAgICAgICAgaWYgKHRjdXIgPT0gTlVMTCkKQEAgLTYwNSwxNiArNjA5LDI4IEBACiAgICAgICAgIHRjdXItPmdpbHN0YXRlX2NvdW50ZXIgPSAwOwogICAgICAgICBjdXJyZW50ID0gMDsgLyogbmV3IHRocmVhZCBzdGF0ZSBpcyBuZXZlciBjdXJyZW50ICovCiAgICAgfQotICAgIGVsc2UKKyAgICBlbHNlIHsKICAgICAgICAgY3VycmVudCA9IFB5VGhyZWFkU3RhdGVfSXNDdXJyZW50KHRjdXIpOwotICAgIGlmIChjdXJyZW50ID09IDApCisgICAgfQorCisgICAgaWYgKGN1cnJlbnQgPT0gMCkgewogICAgICAgICBQeUV2YWxfUmVzdG9yZVRocmVhZCh0Y3VyKTsKKyAgICB9CisKICAgICAvKiBVcGRhdGUgb3VyIGNvdW50ZXIgaW4gdGhlIHRocmVhZC1zdGF0ZSAtIG5vIG5lZWQgZm9yIGxvY2tzOgogICAgICAgIC0gdGN1ciB3aWxsIHJlbWFpbiB2YWxpZCBhcyB3ZSBob2xkIHRoZSBHSUwuCiAgICAgICAgLSB0aGUgY291bnRlciBpcyBzYWZlIGFzIHdlIGFyZSB0aGUgb25seSB0aHJlYWQgImFsbG93ZWQiCiAgICAgICAgICB0byBtb2RpZnkgdGhpcyB2YWx1ZQogICAgICovCiAgICAgKyt0Y3VyLT5naWxzdGF0ZV9jb3VudGVyOworCisgICAgaWYgKG5lZWRfaW5pdF90aHJlYWRzKSB7CisgICAgICAgIC8qIEF0IHN0YXJ0dXAsIFB5dGhvbiBoYXMgbm8gY29uY3JldGUgR0lMLiBJZiBQeUdJTFN0YXRlX0Vuc3VyZSgpIGlzCisgICAgICAgICAgIGNhbGxlZCBmcm9tIGEgbmV3IHRocmVhZCBmb3IgdGhlIGZpcnN0IHRpbWUsIHdlIG5lZWQgdGhlIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgR0lMLiAqLworICAgICAgICBQeUV2YWxfSW5pdFRocmVhZHMoKTsKKyAgICB9CisKICAgICByZXR1cm4gY3VycmVudCA/IFB5R0lMU3RhdGVfTE9DS0VEIDogUHlHSUxTdGF0ZV9VTkxPQ0tFRDsKIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5dGhvbnJ1bi5jIGIvUHl0aG9uL3B5dGhvbnJ1bi5jCmluZGV4IDdiODUyNjguLjJjOWY1NWYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weXRob25ydW4uYworKysgYi9QeXRob24vcHl0aG9ucnVuLmMKQEAgLTM3LDE0ICszNyw2IEBACiAjaW5jbHVkZSAid2luZG93cy5oIgogI2VuZGlmCiAKLSNpZm5kZWYgUHlfUkVGX0RFQlVHCi0jZGVmaW5lIFBSSU5UX1RPVEFMX1JFRlMoKQotI2Vsc2UgLyogUHlfUkVGX0RFQlVHICovCi0jZGVmaW5lIFBSSU5UX1RPVEFMX1JFRlMoKSBmcHJpbnRmKHN0ZGVyciwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgIlslIiBQWV9GT1JNQVRfU0laRV9UICJkIHJlZnNdXG4iLCAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgX1B5X0dldFJlZlRvdGFsKCkpCi0jZW5kaWYKLQogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gIkMiIHsKICNlbmRpZgpAQCAtMTA0LDYgKzk2LDIxIEBACiAgICAgcmV0dXJuIFB5SW1wb3J0X0ltcG9ydE1vZHVsZSgid2FybmluZ3MiKTsKIH0KIAorc3RhdGljIHZvaWQKK19QeURlYnVnX1ByaW50VG90YWxSZWZzKHZvaWQpCit7CisjaWZkZWYgUHlfUkVGX0RFQlVHCisgICAgUHlfc3NpemVfdCB0b3RhbDsKKworICAgIGlmICghUHlfR0VURU5WKCJQWVRIT05TSE9XUkVGQ09VTlQiKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdG90YWwgPSBfUHlfR2V0UmVmVG90YWwoKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIlslIiBQWV9GT1JNQVRfU0laRV9UICJkIHJlZnNdXG4iLCB0b3RhbCk7CisjZW5kaWYKK30KKwogc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CiAKIC8qIEFQSSB0byBhY2Nlc3MgdGhlIGluaXRpYWxpemVkIGZsYWcgLS0gdXNlZnVsIGZvciBlc290ZXJpYyB1c2UgKi8KQEAgLTQ4MSwxMCArNDg4LDEyIEBACiAKICAgICAvKiBEZWJ1Z2dpbmcgc3R1ZmYgKi8KICNpZmRlZiBDT1VOVF9BTExPQ1MKLSAgICBkdW1wX2NvdW50cyhzdGRvdXQpOworICAgIGlmIChQeV9HRVRFTlYoIlBZVEhPTlNIT1dBTExPQ0NPVU5UIikpIHsKKyAgICAgICAgZHVtcF9jb3VudHMoc3RkZXJyKTsKKyAgICB9CiAjZW5kaWYKIAotICAgIFBSSU5UX1RPVEFMX1JFRlMoKTsKKyAgICBfUHlEZWJ1Z19QcmludFRvdGFsUmVmcygpOwogCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwogICAgIC8qIERpc3BsYXkgYWxsIG9iamVjdHMgc3RpbGwgYWxpdmUgLS0gdGhpcyBjYW4gaW52b2tlIGFyYml0cmFyeQpAQCAtNzc1LDcgKzc4NCw3IEBACiAgICAgfQogICAgIGZvciAoOzspIHsKICAgICAgICAgcmV0ID0gUHlSdW5fSW50ZXJhY3RpdmVPbmVGbGFncyhmcCwgZmlsZW5hbWUsIGZsYWdzKTsKLSAgICAgICAgUFJJTlRfVE9UQUxfUkVGUygpOworICAgICAgICBfUHlEZWJ1Z19QcmludFRvdGFsUmVmcygpOwogICAgICAgICBpZiAocmV0ID09IEVfRU9GKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIC8qCkBAIC0xMTI3LDcgKzExMzYsNyBAQAogICAgICAgICAvKiBJZiB3ZSBmYWlsZWQgdG8gZGlnIG91dCB0aGUgJ2NvZGUnIGF0dHJpYnV0ZSwKICAgICAgICAgICAganVzdCBsZXQgdGhlIGVsc2UgY2xhdXNlIGJlbG93IHByaW50IHRoZSBlcnJvci4gKi8KICAgICB9Ci0gICAgaWYgKFB5SW50X0NoZWNrKHZhbHVlKSkKKyAgICBpZiAoX1B5QW55SW50X0NoZWNrKHZhbHVlKSkKICAgICAgICAgZXhpdGNvZGUgPSAoaW50KVB5SW50X0FzTG9uZyh2YWx1ZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIFB5T2JqZWN0ICpzeXNfc3RkZXJyID0gUHlTeXNfR2V0T2JqZWN0KCJzdGRlcnIiKTsKQEAgLTE1ODEsNyArMTU5MCw3IEBACiAgICAgZXJydHlwZSA9IFB5RXhjX1N5bnRheEVycm9yOwogICAgIHN3aXRjaCAoZXJyLT5lcnJvcikgewogICAgIGNhc2UgRV9FUlJPUjoKLSAgICAgICAgcmV0dXJuOworICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgY2FzZSBFX1NZTlRBWDoKICAgICAgICAgZXJydHlwZSA9IFB5RXhjX0luZGVudGF0aW9uRXJyb3I7CiAgICAgICAgIGlmIChlcnItPmV4cGVjdGVkID09IElOREVOVCkKQEAgLTE2NDUsNiArMTY1NCw5IEBACiAgICAgICAgIFB5X1hERUNSRUYodGIpOwogICAgICAgICBicmVhazsKICAgICB9CisgICAgY2FzZSBFX0lPOgorICAgICAgICBtc2cgPSAiSS9PIGVycm9yIHdoaWxlIHJlYWRpbmciOworICAgICAgICBicmVhazsKICAgICBjYXNlIEVfTElORUNPTlQ6CiAgICAgICAgIG1zZyA9ICJ1bmV4cGVjdGVkIGNoYXJhY3RlciBhZnRlciBsaW5lIGNvbnRpbnVhdGlvbiBjaGFyYWN0ZXIiOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1B5dGhvbi9yYW5kb20uYyBiL1B5dGhvbi9yYW5kb20uYwppbmRleCAyZjgzYjVkLi4wMDBjYjM2IDEwMDY0NAotLS0gYS9QeXRob24vcmFuZG9tLmMKKysrIGIvUHl0aG9uL3JhbmRvbS5jCkBAIC0zLDcgKzMsNyBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbHNlCiAjaW5jbHVkZSA8ZmNudGwuaD4KLSNpZiBkZWZpbmVkKEhBVkVfR0VUUkFORE9NKSB8fCBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkKKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1JBTkRPTV9IKSAmJiAoZGVmaW5lZChIQVZFX0dFVFJBTkRPTSkgfHwgZGVmaW5lZChIQVZFX0dFVEVOVFJPUFkpKQogI2luY2x1ZGUgPHN5cy9yYW5kb20uaD4KICNlbmRpZgogI2VuZGlmCkBAIC05Nyw4ICs5NywxNSBAQAogfQogCiAvKiBJc3N1ZSAjMjUwMDM6IERvbid0IHVzZSBnZXRlbnRyb3B5KCkgb24gU29sYXJpcyAoYXZhaWxhYmxlIHNpbmNlCi0gKiBTb2xhcmlzIDExLjMpLCBpdCBpcyBibG9ja2luZyB3aGVyZWFzIG9zLnVyYW5kb20oKSBzaG91bGQgbm90IGJsb2NrLiAqLwotI2VsaWYgZGVmaW5lZChIQVZFX0dFVEVOVFJPUFkpICYmICFkZWZpbmVkKHN1bikKKyAgIFNvbGFyaXMgMTEuMyksIGl0IGlzIGJsb2NraW5nIHdoZXJlYXMgb3MudXJhbmRvbSgpIHNob3VsZCBub3QgYmxvY2suCisKKyAgIElzc3VlICMyOTE4ODogRG9uJ3QgdXNlIGdldGVudHJvcHkoKSBvbiBMaW51eCBzaW5jZSB0aGUgZ2xpYmMgMi4yNAorICAgaW1wbGVtZW50cyBpdCB3aXRoIHRoZSBnZXRyYW5kb20oKSBzeXNjYWxsIHdoaWNoIGNhbiBmYWlsIHdpdGggRU5PU1lTLAorICAgYW5kIHRoaXMgZXJyb3IgaXMgbm90IHN1cHBvcnRlZCBpbiBweV9nZXRlbnRyb3B5KCkgYW5kIGdldHJhbmRvbSgpIGlzIGNhbGxlZAorICAgd2l0aCBmbGFncz0wIHdoaWNoIGJsb2NrcyB1bnRpbCBzeXN0ZW0gdXJhbmRvbSBpcyBpbml0aWFsaXplZCwgd2hpY2ggaXMgbm90CisgICB0aGUgZGVzaXJlZCBiZWhhdmlvdXIgdG8gc2VlZCB0aGUgUHl0aG9uIGhhc2ggc2VjcmV0IG5vciBmb3Igb3MudXJhbmRvbSgpOgorICAgc2VlIHRoZSBQRVAgNTI0IHdoaWNoIHdhcyBvbmx5IGltcGxlbWVudGVkIGluIFB5dGhvbiAzLjYuICovCisjZWxpZiBkZWZpbmVkKEhBVkVfR0VURU5UUk9QWSkgJiYgIWRlZmluZWQoc3VuKSAmJiAhZGVmaW5lZChsaW51eCkKICNkZWZpbmUgUFlfR0VURU5UUk9QWSAxCiAKIC8qIEZpbGwgYnVmZmVyIHdpdGggc2l6ZSBwc2V1ZG8tcmFuZG9tIGJ5dGVzIGdlbmVyYXRlZCBieSBnZXRlbnRyb3B5KCkuCmRpZmYgLS1naXQgYS9QeXRob24vc3ltdGFibGUuYyBiL1B5dGhvbi9zeW10YWJsZS5jCmluZGV4IDNiNDI0N2IuLjIxNzkwYjEgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zeW10YWJsZS5jCisrKyBiL1B5dGhvbi9zeW10YWJsZS5jCkBAIC0xNjIsMTIgKzE2MiwxNCBAQAogfTsKIAogc3RhdGljIGludCBzeW10YWJsZV9hbmFseXplKHN0cnVjdCBzeW10YWJsZSAqc3QpOwotc3RhdGljIGludCBzeW10YWJsZV93YXJuKHN0cnVjdCBzeW10YWJsZSAqc3QsIGNoYXIgKm1zZywgaW50IGxpbmVubyk7CitzdGF0aWMgaW50IHN5bXRhYmxlX3dhcm4oc3RydWN0IHN5bXRhYmxlICpzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqd2FybiwgY29uc3QgY2hhciAqbXNnLCBpbnQgbGluZW5vKTsKIHN0YXRpYyBpbnQgc3ltdGFibGVfZW50ZXJfYmxvY2soc3RydWN0IHN5bXRhYmxlICpzdCwgaWRlbnRpZmllciBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfYmxvY2tfdHkgYmxvY2ssIHZvaWQgKmFzdCwgaW50IGxpbmVubyk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX2V4aXRfYmxvY2soc3RydWN0IHN5bXRhYmxlICpzdCwgdm9pZCAqYXN0KTsKIHN0YXRpYyBpbnQgc3ltdGFibGVfdmlzaXRfc3RtdChzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBzdG10X3R5IHMpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9leHByKHN0cnVjdCBzeW10YWJsZSAqc3QsIGV4cHJfdHkgcyk7CitzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X2xpc3Rjb21wKHN0cnVjdCBzeW10YWJsZSAqc3QsIGV4cHJfdHkgZSk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X2dlbmV4cChzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBleHByX3R5IHMpOwogc3RhdGljIGludCBzeW10YWJsZV92aXNpdF9zZXRjb21wKHN0cnVjdCBzeW10YWJsZSAqc3QsIGV4cHJfdHkgZSk7CiBzdGF0aWMgaW50IHN5bXRhYmxlX3Zpc2l0X2RpY3Rjb21wKHN0cnVjdCBzeW10YWJsZSAqc3QsIGV4cHJfdHkgZSk7CkBAIC03OTYsMTQgKzc5OCwxOCBAQAogCiAKIHN0YXRpYyBpbnQKLXN5bXRhYmxlX3dhcm4oc3RydWN0IHN5bXRhYmxlICpzdCwgY2hhciAqbXNnLCBpbnQgbGluZW5vKQorc3ltdGFibGVfd2FybihzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBQeU9iamVjdCAqd2FybiwgY29uc3QgY2hhciAqbXNnLCBpbnQgbGluZW5vKQogewotICAgIGlmIChQeUVycl9XYXJuRXhwbGljaXQoUHlFeGNfU3ludGF4V2FybmluZywgbXNnLCBzdC0+c3RfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIE5VTEwsIE5VTEwpIDwgMCkgICAgIHsKLSAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3ludGF4V2FybmluZykpIHsKKyAgICBpZiAobGluZW5vIDwgMCkgeworICAgICAgICBsaW5lbm8gPSBzdC0+c3RfY3VyLT5zdGVfbGluZW5vOworICAgIH0KKyAgICBpZiAoUHlFcnJfV2FybkV4cGxpY2l0KHdhcm4sIG1zZywgc3QtPnN0X2ZpbGVuYW1lLCBsaW5lbm8sIE5VTEwsIE5VTEwpIDwgMCkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyh3YXJuKSkgeworICAgICAgICAgICAgLyogUmVwbGFjZSB0aGUgd2FybmluZyBleGNlcHRpb24gd2l0aCBhIFN5bnRheEVycm9yCisgICAgICAgICAgICAgICB0byBnZXQgYSBtb3JlIGFjY3VyYXRlIGVycm9yIHJlcG9ydCAqLworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwgbXNnKTsKLSAgICAgICAgICAgIFB5RXJyX1N5bnRheExvY2F0aW9uKHN0LT5zdF9maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9saW5lbm8pOworICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb24oc3QtPnN0X2ZpbGVuYW1lLCBsaW5lbm8pOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTExNTMsNyArMTE1OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTE9CQUxfQUZURVJfVVNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzeW10YWJsZV93YXJuKHN0LCBidWYsIHMtPmxpbmVubykpCisgICAgICAgICAgICAgICAgaWYgKCFzeW10YWJsZV93YXJuKHN0LCBQeUV4Y19TeW50YXhXYXJuaW5nLCBidWYsIHMtPmxpbmVubykpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBuYW1lLCBERUZfR0xPQkFMKSkKQEAgLTEyMjEsOCArMTIyNyw4IEBACiAgICAgICAgIFZJU0lUX1NFUShzdCwgZXhwciwgZS0+di5TZXQuZWx0cyk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTGlzdENvbXBfa2luZDoKLSAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuTGlzdENvbXAuZWx0KTsKLSAgICAgICAgVklTSVRfU0VRKHN0LCBjb21wcmVoZW5zaW9uLCBlLT52Lkxpc3RDb21wLmdlbmVyYXRvcnMpOworICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2xpc3Rjb21wKHN0LCBlKSkKKyAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBicmVhazsKICAgICBjYXNlIEdlbmVyYXRvckV4cF9raW5kOgogICAgICAgICBpZiAoIXN5bXRhYmxlX3Zpc2l0X2dlbmV4cChzdCwgZSkpCkBAIC0xNDIwLDEyICsxNDI2LDExIEBACiAgICAgICAgIHJldHVybiByOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgaWYgKHN0LT5zdF9jdXItPnN0ZV90eXBlICE9IE1vZHVsZUJsb2NrKSB7Ci0gICAgICAgICAgICBpbnQgbGluZW5vID0gc3QtPnN0X2N1ci0+c3RlX2xpbmVubzsKLSAgICAgICAgICAgIGlmICghc3ltdGFibGVfd2FybihzdCwgSU1QT1JUX1NUQVJfV0FSTklORywgbGluZW5vKSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdG9yZV9uYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKHN0LT5zdF9jdXItPnN0ZV90eXBlICE9IE1vZHVsZUJsb2NrICYmCisgICAgICAgICAgICAhc3ltdGFibGVfd2FybihzdCwgUHlFeGNfU3ludGF4V2FybmluZywgSU1QT1JUX1NUQVJfV0FSTklORywgLTEpKQorICAgICAgICB7CisgICAgICAgICAgICBQeV9ERUNSRUYoc3RvcmVfbmFtZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBzdC0+c3RfY3VyLT5zdGVfdW5vcHRpbWl6ZWQgfD0gT1BUX0lNUE9SVF9TVEFSOwogICAgICAgICBQeV9ERUNSRUYoc3RvcmVfbmFtZSk7CkBAIC0xNTA5LDcgKzE1MTQsMTAgQEAKICAgICAgICAgIXN5bXRhYmxlX2VudGVyX2Jsb2NrKHN0LCBzY29wZV9uYW1lLCBGdW5jdGlvbkJsb2NrLCAodm9pZCAqKWUsIDApKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gaXNfZ2VuZXJhdG9yOworICAgIC8qIEluIG9yZGVyIHRvIGNoZWNrIGZvciB5aWVsZCBleHByZXNzaW9ucyB1bmRlciAnLTMnLCB3ZSBjbGVhcgorICAgICAgIHRoZSBnZW5lcmF0b3IgZmxhZywgYW5kIHJlc3RvcmUgaXQgYXQgdGhlIGVuZCAqLworICAgIGlzX2dlbmVyYXRvciB8PSBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yOworICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAwOwogICAgIC8qIE91dGVybW9zdCBpdGVyIGlzIHJlY2VpdmVkIGFzIGFuIGFyZ3VtZW50ICovCiAgICAgaWYgKCFzeW10YWJsZV9pbXBsaWNpdF9hcmcoc3QsIDApKSB7CiAgICAgICAgIHN5bXRhYmxlX2V4aXRfYmxvY2soc3QsICh2b2lkICopZSk7CkBAIC0xNTI3LDEwICsxNTM1LDU2IEBACiAgICAgaWYgKHZhbHVlKQogICAgICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgdmFsdWUsICh2b2lkKillKTsKICAgICBWSVNJVF9JTl9CTE9DSyhzdCwgZXhwciwgZWx0LCAodm9pZCopZSk7CisgICAgaWYgKFB5X1B5M2tXYXJuaW5nRmxhZyAmJiBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKm1zZyA9ICgKKyAgICAgICAgICAgIChlLT5raW5kID09IFNldENvbXBfa2luZCkgPyAiJ3lpZWxkJyBpbnNpZGUgc2V0IGNvbXByZWhlbnNpb24iIDoKKyAgICAgICAgICAgIChlLT5raW5kID09IERpY3RDb21wX2tpbmQpID8gIid5aWVsZCcgaW5zaWRlIGRpY3QgY29tcHJlaGVuc2lvbiIgOgorICAgICAgICAgICAgIid5aWVsZCcgaW5zaWRlIGdlbmVyYXRvciBleHByZXNzaW9uIik7CisgICAgICAgIGlmICghc3ltdGFibGVfd2FybihzdCwgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCBtc2csIC0xKSkgeworICAgICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgKHZvaWQgKillKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgfQorICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgfD0gaXNfZ2VuZXJhdG9yOwogICAgIHJldHVybiBzeW10YWJsZV9leGl0X2Jsb2NrKHN0LCAodm9pZCAqKWUpOwogfQogCiBzdGF0aWMgaW50CitzeW10YWJsZV92aXNpdF9saXN0Y29tcChzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBleHByX3R5IGUpCit7CisgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMgPSBlLT52Lkxpc3RDb21wLmdlbmVyYXRvcnM7CisgICAgaW50IGksIGlzX2dlbmVyYXRvcjsKKyAgICAvKiBJbiBvcmRlciB0byBjaGVjayBmb3IgeWllbGQgZXhwcmVzc2lvbnMgdW5kZXIgJy0zJywgd2UgY2xlYXIKKyAgICAgICB0aGUgZ2VuZXJhdG9yIGZsYWcsIGFuZCByZXN0b3JlIGl0IGF0IHRoZSBlbmQgKi8KKyAgICBpc19nZW5lcmF0b3IgPSBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yOworICAgIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IgPSAwOworICAgIFZJU0lUKHN0LCBleHByLCBlLT52Lkxpc3RDb21wLmVsdCk7CisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihnZW5lcmF0b3JzKTsgaSsrKSB7CisgICAgICAgIGNvbXByZWhlbnNpb25fdHkgbGMgPSAoY29tcHJlaGVuc2lvbl90eSlhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgaSk7CisgICAgICAgIFZJU0lUKHN0LCBleHByLCBsYy0+dGFyZ2V0KTsKKyAgICAgICAgaWYgKGkgPT0gMCAmJiAhc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvcikgeworICAgICAgICAgICAgLyogJ3lpZWxkJyBpbiB0aGUgb3V0ZXJtb3N0IGl0ZXJhdG9yIGRvZXNuJ3QgY2F1c2UgYSB3YXJuaW5nICovCisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgbGMtPml0ZXIpOworICAgICAgICAgICAgaXNfZ2VuZXJhdG9yIHw9IHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3I7CisgICAgICAgICAgICBzdC0+c3RfY3VyLT5zdGVfZ2VuZXJhdG9yID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFZJU0lUKHN0LCBleHByLCBsYy0+aXRlcik7CisgICAgICAgIH0KKyAgICAgICAgVklTSVRfU0VRKHN0LCBleHByLCBsYy0+aWZzKTsKKyAgICB9CisKKyAgICBpZiAoUHlfUHkza1dhcm5pbmdGbGFnICYmIHN0LT5zdF9jdXItPnN0ZV9nZW5lcmF0b3IpIHsKKyAgICAgICAgY29uc3QgY2hhciAqbXNnID0gIid5aWVsZCcgaW5zaWRlIGxpc3QgY29tcHJlaGVuc2lvbiI7CisgICAgICAgIGlmICghc3ltdGFibGVfd2FybihzdCwgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCBtc2csIC0xKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciB8PSBpc19nZW5lcmF0b3I7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKIHN5bXRhYmxlX3Zpc2l0X2dlbmV4cChzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBleHByX3R5IGUpCiB7CiAgICAgcmV0dXJuIHN5bXRhYmxlX2hhbmRsZV9jb21wcmVoZW5zaW9uKHN0LCBlLCBHRVRfSURFTlRJRklFUihnZW5leHByKSwKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwppbmRleCBhZWZmMzhhLi5iMTUzZWY2IDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC0xNDI2LDkgKzE0MjYsOSBAQAogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInN1YnZlcnNpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0J1aWxkVmFsdWUoIihzc3opIiwgIkNQeXRob24iLCBicmFuY2gsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN2bl9yZXZpc2lvbikpOwotICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoIl9tZXJjdXJpYWwiLAotICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHN6eikiLCAiQ1B5dGhvbiIsIF9QeV9oZ2lkZW50aWZpZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2hndmVyc2lvbigpKSk7CisgICAgU0VUX1NZU19GUk9NX1NUUklORygiX2dpdCIsCisgICAgICAgICAgICAgICAgICAgICAgICBQeV9CdWlsZFZhbHVlKCIoc3p6KSIsICJDUHl0aG9uIiwgX1B5X2dpdGlkZW50aWZpZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5X2dpdHZlcnNpb24oKSkpOwogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoImRvbnRfd3JpdGVfYnl0ZWNvZGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qm9vbF9Gcm9tTG9uZyhQeV9Eb250V3JpdGVCeXRlY29kZUZsYWcpKTsKICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJhcGlfdmVyc2lvbiIsCmRpZmYgLS1naXQgYS9QeXRob24vdGhyZWFkLmMgYi9QeXRob24vdGhyZWFkLmMKaW5kZXggM2I2OWY5Ni4uOGFjNDBmOSAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZC5jCisrKyBiL1B5dGhvbi90aHJlYWQuYwpAQCAtNjIsNiArNjIsOSBAQAogI2VuZGlmIC8qIF9QT1NJWF9USFJFQURTICovCiAKIAorI2lmZGVmIGRwcmludGYKKyN1bmRlZiBkcHJpbnRmCisjZW5kaWYKICNpZmRlZiBQeV9ERUJVRwogc3RhdGljIGludCB0aHJlYWRfZGVidWcgPSAwOwogI2RlZmluZSBkcHJpbnRmKGFyZ3MpICAgKHZvaWQpKCh0aHJlYWRfZGVidWcgJiAxKSAmJiBwcmludGYgYXJncykKZGlmZiAtLWdpdCBhL1B5dGhvbi90aHJlYWRfcHRocmVhZC5oIGIvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKaW5kZXggYzllZDc5Ni4uNzljNjZkNCAxMDA2NDQKLS0tIGEvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKKysrIGIvUHl0aG9uL3RocmVhZF9wdGhyZWFkLmgKQEAgLTQxMCwzMSArNDEwLDQxIEBACiBpbnQKIFB5VGhyZWFkX2FjcXVpcmVfbG9jayhQeVRocmVhZF90eXBlX2xvY2sgbG9jaywgaW50IHdhaXRmbGFnKQogewotICAgIGludCBzdWNjZXNzOworICAgIGludCBzdWNjZXNzID0gMDsKICAgICBwdGhyZWFkX2xvY2sgKnRoZWxvY2sgPSAocHRocmVhZF9sb2NrICopbG9jazsKICAgICBpbnQgc3RhdHVzLCBlcnJvciA9IDA7CiAKICAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgY2FsbGVkXG4iLCBsb2NrLCB3YWl0ZmxhZykpOwogCi0gICAgc3RhdHVzID0gcHRocmVhZF9tdXRleF9sb2NrKCAmdGhlbG9jay0+bXV0ICk7Ci0gICAgQ0hFQ0tfU1RBVFVTKCJwdGhyZWFkX211dGV4X2xvY2tbMV0iKTsKLSAgICBzdWNjZXNzID0gdGhlbG9jay0+bG9ja2VkID09IDA7Ci0KLSAgICBpZiAoICFzdWNjZXNzICYmIHdhaXRmbGFnICkgewotICAgICAgICAvKiBjb250aW51ZSB0cnlpbmcgdW50aWwgd2UgZ2V0IHRoZSBsb2NrICovCi0KLSAgICAgICAgLyogbXV0IG11c3QgYmUgbG9ja2VkIGJ5IG1lIC0tIHBhcnQgb2YgdGhlIGNvbmRpdGlvbgotICAgICAgICAgKiBwcm90b2NvbCAqLwotICAgICAgICB3aGlsZSAoIHRoZWxvY2stPmxvY2tlZCApIHsKLSAgICAgICAgICAgIHN0YXR1cyA9IHB0aHJlYWRfY29uZF93YWl0KCZ0aGVsb2NrLT5sb2NrX3JlbGVhc2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRoZWxvY2stPm11dCk7Ci0gICAgICAgICAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfY29uZF93YWl0Iik7Ci0gICAgICAgIH0KLSAgICAgICAgc3VjY2VzcyA9IDE7CisgICAgaWYgKHdhaXRmbGFnKSB7CisgICAgICAgIHN0YXR1cyA9IHB0aHJlYWRfbXV0ZXhfbG9jayggJnRoZWxvY2stPm11dCApOworICAgICAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfbG9ja1sxXSIpOwogICAgIH0KLSAgICBpZiAoc3VjY2VzcykgdGhlbG9jay0+bG9ja2VkID0gMTsKLSAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X3VubG9jayggJnRoZWxvY2stPm11dCApOwotICAgIENIRUNLX1NUQVRVUygicHRocmVhZF9tdXRleF91bmxvY2tbMV0iKTsKKyAgICBlbHNlIHsKKyAgICAgICAgc3RhdHVzID0gcHRocmVhZF9tdXRleF90cnlsb2NrKCAmdGhlbG9jay0+bXV0ICk7CisgICAgICAgIGlmIChzdGF0dXMgIT0gRUJVU1kpCisgICAgICAgICAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfdHJ5bG9ja1sxXSIpOworICAgIH0KKyAgICBpZiAoc3RhdHVzID09IDApIHsKKyAgICAgICAgc3VjY2VzcyA9IHRoZWxvY2stPmxvY2tlZCA9PSAwOworCisgICAgICAgIGlmICggIXN1Y2Nlc3MgJiYgd2FpdGZsYWcgKSB7CisgICAgICAgICAgICAvKiBjb250aW51ZSB0cnlpbmcgdW50aWwgd2UgZ2V0IHRoZSBsb2NrICovCisKKyAgICAgICAgICAgIC8qIG11dCBtdXN0IGJlIGxvY2tlZCBieSBtZSAtLSBwYXJ0IG9mIHRoZSBjb25kaXRpb24KKyAgICAgICAgICAgICAqIHByb3RvY29sICovCisgICAgICAgICAgICB3aGlsZSAoIHRoZWxvY2stPmxvY2tlZCApIHsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSBwdGhyZWFkX2NvbmRfd2FpdCgmdGhlbG9jay0+bG9ja19yZWxlYXNlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdGhlbG9jay0+bXV0KTsKKyAgICAgICAgICAgICAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfY29uZF93YWl0Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdWNjZXNzID0gMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdWNjZXNzKSB0aGVsb2NrLT5sb2NrZWQgPSAxOworICAgICAgICBzdGF0dXMgPSBwdGhyZWFkX211dGV4X3VubG9jayggJnRoZWxvY2stPm11dCApOworICAgICAgICBDSEVDS19TVEFUVVMoInB0aHJlYWRfbXV0ZXhfdW5sb2NrWzFdIik7CisgICAgfQogCiAgICAgaWYgKGVycm9yKSBzdWNjZXNzID0gMDsKICAgICBkcHJpbnRmKCgiUHlUaHJlYWRfYWNxdWlyZV9sb2NrKCVwLCAlZCkgLT4gJWRcbiIsIGxvY2ssIHdhaXRmbGFnLCBzdWNjZXNzKSk7CmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggMDhkNDhjMi4uOGE4ODgzNiAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw4ICsxLDkgQEAKLVRoaXMgaXMgUHl0aG9uIHZlcnNpb24gMi43LjEzCitUaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDIuNy4xNQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAogQ29weXJpZ2h0IChjKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExLAotMjAxMiwgMjAxMywgMjAxNCwgMjAxNSwgMjAxNiBQeXRob24gU29mdHdhcmUgRm91bmRhdGlvbi4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisyMDEyLCAyMDEzLCAyMDE0LCAyMDE1LCAyMDE2LCAyMDE3LCAyMDE4IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uLiAgQWxsIHJpZ2h0cworcmVzZXJ2ZWQuCiAKIENvcHlyaWdodCAoYykgMjAwMCBCZU9wZW4uY29tLgogQWxsIHJpZ2h0cyByZXNlcnZlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL1JFQURNRSBiL1Rvb2xzL1JFQURNRQppbmRleCAxZmIwMTAzLi5hMjI1MmYyIDEwMDY0NAotLS0gYS9Ub29scy9SRUFETUUKKysrIGIvVG9vbHMvUkVBRE1FCkBAIC00NywzICs0Nyw1IEBACiAJCW91dCB3aGVyZSBpbiB0aGUgd29ybGQgdGhvc2UgYWRkcmVzc2VzIG9yaWdpbmF0ZSBmcm9tLAogCQliYXNlZCBvbiB0aGUgdG9wLWxldmVsIGRvbWFpbiBjb3VudHJ5IGNvZGUgZm91bmQgaW4KIAkJdGhlIGFkZHJlc3MuIAorCitBIGdlbmVyaWMgYmVuY2htYXJrIHN1aXRlIGlzIG1haW50YWluZWQgc2VwYXJhdGVseSBhdCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3BlcmZvcm1hbmNlCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKaW5kZXggZjc3NDA3Yi4uYWI0MjMxZSAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvYnVpbGQtYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdApAQCAtMSw1ICsxLDUgQEAKLUByZW0gRm9ybWVybHkgdXNlZCBieSB0aGUgYnVpbGRib3QgImNvbXBpbGUiIHN0ZXAuDQotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gVG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIHNjcmlwdCwgdXNlDQotQGVjaG8gICAgIFBDYnVpbGRcYnVpbGQuYmF0IC1kIC1lIC1rIC1wIHg2NA0KLWNhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtcCB4NjQgJSoNCitAcmVtIEZvcm1lcmx5IHVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjb21waWxlIiBzdGVwLgorQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuCitAZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UKK0BlY2hvICAgICBQQ2J1aWxkXGJ1aWxkLmJhdCAtZCAtZSAtayAtcCB4NjQKK2NhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtcCB4NjQgJSoKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLmJhdAppbmRleCAzZDgyNWZlLi5hMDc3OTQyIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvYnVpbGQuYmF0CkBAIC0xLDE4ICsxLDE4IEBACi1AcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjb21waWxlIiBzdGVwLg0KLUBzZXRsb2NhbA0KLQ0KLUByZW0gQ2xlYW4gdXANCi1jYWxsICIlfmRwMGNsZWFuLmJhdCIgJSoNCi0NCi1AcmVtIElmIHlvdSBuZWVkIHRoZSBidWlsZGJvdHMgdG8gc3RhcnQgZnJlc2ggKHN1Y2ggYXMgd2hlbiB1cGdyYWRpbmcgdG8NCi1AcmVtIGEgbmV3IHZlcnNpb24gb2YgYW4gZXh0ZXJuYWwgbGlicmFyeSwgZXNwZWNpYWxseSBUY2wvVGspOg0KLUByZW0gMSkgdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZToNCi0NCi1AcmVtICAgIGNhbGwgIiV+ZHAwLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgLS1jbGVhbi1vbmx5DQotDQotQHJlbSAyKSBjb21taXQgYW5kIHB1c2gNCi1AcmVtIDMpIHdhaXQgZm9yIGFsbCBXaW5kb3dzIGJvdHMgdG8gc3RhcnQgYSBidWlsZCB3aXRoIHRoYXQgY2hhbmdlc2V0DQotQHJlbSA0KSByZS1jb21tZW50LCBjb21taXQgYW5kIHB1c2ggYWdhaW4NCi0NCi1AcmVtIERvIHRoZSBidWlsZA0KLWNhbGwgIiV+ZHAwLi5cLi5cUENidWlsZFxidWlsZC5iYXQiIC12IC1lIC1kIC1rICUqDQorQHJlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAiY29tcGlsZSIgc3RlcC4KK0BzZXRsb2NhbAorCitAcmVtIENsZWFuIHVwCitjYWxsICIlfmRwMGNsZWFuLmJhdCIgJSoKKworQHJlbSBJZiB5b3UgbmVlZCB0aGUgYnVpbGRib3RzIHRvIHN0YXJ0IGZyZXNoIChzdWNoIGFzIHdoZW4gdXBncmFkaW5nIHRvCitAcmVtIGEgbmV3IHZlcnNpb24gb2YgYW4gZXh0ZXJuYWwgbGlicmFyeSwgZXNwZWNpYWxseSBUY2wvVGspOgorQHJlbSAxKSB1bmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lOgorCitAcmVtICAgIGNhbGwgIiV+ZHAwLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgLS1jbGVhbi1vbmx5CisKK0ByZW0gMikgY29tbWl0IGFuZCBwdXNoCitAcmVtIDMpIHdhaXQgZm9yIGFsbCBXaW5kb3dzIGJvdHMgdG8gc3RhcnQgYSBidWlsZCB3aXRoIHRoYXQgY2hhbmdlc2V0CitAcmVtIDQpIHJlLWNvbW1lbnQsIGNvbW1pdCBhbmQgcHVzaCBhZ2FpbgorCitAcmVtIERvIHRoZSBidWlsZAorY2FsbCAiJX5kcDAuLlwuLlxQQ2J1aWxkXGJ1aWxkLmJhdCIgLXYgLWUgLWQgLWsgJSoKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkbXNpLmJhdAppbmRleCBiNGY2M2RjLi5hMGY0M2E2IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZG1zaS5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvYnVpbGRtc2kuYmF0CkBAIC0xLDIwICsxLDIwIEBACi1AcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJidWlsZG1zaSIgc3RlcC4NCi0NCi1jbWQgL2MgVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwuYmF0DQotQHJlbSBidWlsZCByZWxlYXNlIHZlcnNpb25zIG9mIHRoaW5ncw0KLWNhbGwgIiVWUzkwQ09NTlRPT0xTJXZzdmFyczMyLmJhdCINCi0NCi1AcmVtIGJ1aWxkIFB5dGhvbg0KLXZjYnVpbGQgL3VzZWVudiBQQ2J1aWxkXHBjYnVpbGQuc2xuICJSZWxlYXNlfFdpbjMyIg0KLQ0KLUByZW0gYnVpbGQgdGhlIGRvY3VtZW50YXRpb24NCi1iYXNoLmV4ZSAtYyAnY2QgRG9jO21ha2UgUFlUSE9OPXB5dGhvbjIuNSB1cGRhdGUgaHRtbGhlbHAnDQotIiVQcm9ncmFtRmlsZXMlXEhUTUwgSGVscCBXb3Jrc2hvcFxoaGMuZXhlIiBEb2NcYnVpbGRcaHRtbGhlbHBccHl0aG9uMjZhMy5oaHANCi0NCi1AcmVtIGJ1aWxkIHRoZSBNU0kgZmlsZQ0KLWNkIFBDDQotbm1ha2UgL2YgaWNvbnMubWFrDQotY2QgLi5cVG9vbHNcbXNpDQotZGVsICoubXNpDQotbm1ha2UgL2YgbXNpc3VwcG9ydC5tYWsNCi0lSE9TVF9QWVRIT04lIG1zaS5weQ0KK0ByZW0gVXNlZCBieSB0aGUgYnVpbGRib3QgImJ1aWxkbXNpIiBzdGVwLgorCitjbWQgL2MgVG9vbHNcYnVpbGRib3RcZXh0ZXJuYWwuYmF0CitAcmVtIGJ1aWxkIHJlbGVhc2UgdmVyc2lvbnMgb2YgdGhpbmdzCitjYWxsICIlVlM5MENPTU5UT09MUyV2c3ZhcnMzMi5iYXQiCisKK0ByZW0gYnVpbGQgUHl0aG9uCit2Y2J1aWxkIC91c2VlbnYgUENidWlsZFxwY2J1aWxkLnNsbiAiUmVsZWFzZXxXaW4zMiIKKworQHJlbSBidWlsZCB0aGUgZG9jdW1lbnRhdGlvbgorYmFzaC5leGUgLWMgJ2NkIERvYzttYWtlIFBZVEhPTj1weXRob24yLjUgdXBkYXRlIGh0bWxoZWxwJworIiVQcm9ncmFtRmlsZXMlXEhUTUwgSGVscCBXb3Jrc2hvcFxoaGMuZXhlIiBEb2NcYnVpbGRcaHRtbGhlbHBccHl0aG9uMjZhMy5oaHAKKworQHJlbSBidWlsZCB0aGUgTVNJIGZpbGUKK2NkIFBDCitubWFrZSAvZiBpY29ucy5tYWsKK2NkIC4uXFRvb2xzXG1zaQorZGVsICoubXNpCitubWFrZSAvZiBtc2lzdXBwb3J0Lm1haworJUhPU1RfUFlUSE9OJSBtc2kucHkKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLWFtZDY0LmJhdAppbmRleCBiNTNjN2MxLi5hMGQ0YjA3IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CkBAIC0xLDUgKzEsNSBAQAotQHJlbSBGb3JtZXJseSB1c2VkIGJ5IHRoZSBidWlsZGJvdCAiY2xlYW4iIHN0ZXAuDQotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gVG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIHNjcmlwdCwgdXNlIGBjbGVhbi5iYXRgIGZyb20gdGhpcw0KLUBlY2hvIGRpcmVjdG9yeSBhbmQgcGFzcyBgLXAgeDY0YCBhcyB0d28gYXJndW1lbnRzLg0KLWNhbGwgIiV+ZHAwY2xlYW4uYmF0IiAtcCB4NjQgJSoNCitAcmVtIEZvcm1lcmx5IHVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4KK0BlY2hvIFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLgorQGVjaG8gVG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIHNjcmlwdCwgdXNlIGBjbGVhbi5iYXRgIGZyb20gdGhpcworQGVjaG8gZGlyZWN0b3J5IGFuZCBwYXNzIGAtcCB4NjRgIGFzIHR3byBhcmd1bWVudHMuCitjYWxsICIlfmRwMGNsZWFuLmJhdCIgLXAgeDY0ICUqCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKaW5kZXggMGZjNjhmZC4uYzJlZmQ1YiAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdApAQCAtMSwxNiArMSwxNiBAQAotQGVjaG8gb2ZmDQotcmVtIFVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4NCi0NCi1zZXRsb2NhbA0KLXNldCByb290PSV+ZHAwLi5cLi4NCi1zZXQgcGNidWlsZD0lcm9vdCVcUENidWlsZA0KLQ0KLWVjaG8gRGVsZXRpbmcgYnVpbGQNCi1jYWxsICIlcGNidWlsZCVcYnVpbGQuYmF0IiAtdCBDbGVhbiAtayAlKg0KLWNhbGwgIiVwY2J1aWxkJVxidWlsZC5iYXQiIC10IENsZWFuIC1rIC1kICUqDQotDQotZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uDQotZGVsIC9zICIlcm9vdCVcTGliXCoucHljIiAiJXJvb3QlXExpYlwqLnB5byINCi0NCi1lY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLg0KLXJtZGlyIC9zIC9xICIlcm9vdCVcYnVpbGQiDQorQGVjaG8gb2ZmCityZW0gVXNlZCBieSB0aGUgYnVpbGRib3QgImNsZWFuIiBzdGVwLgorCitzZXRsb2NhbAorc2V0IHJvb3Q9JX5kcDAuLlwuLgorc2V0IHBjYnVpbGQ9JXJvb3QlXFBDYnVpbGQKKworZWNobyBEZWxldGluZyBidWlsZAorY2FsbCAiJXBjYnVpbGQlXGJ1aWxkLmJhdCIgLXQgQ2xlYW4gLWsgJSoKK2NhbGwgIiVwY2J1aWxkJVxidWlsZC5iYXQiIC10IENsZWFuIC1rIC1kICUqCisKK2VjaG8gRGVsZXRpbmcgLnB5Yy8ucHlvIGZpbGVzIC4uLgorZGVsIC9zICIlcm9vdCVcTGliXCoucHljIiAiJXJvb3QlXExpYlwqLnB5byIKKworZWNobyBEZWxldGluZyB0ZXN0IGxlZnRvdmVycyAuLi4KK3JtZGlyIC9zIC9xICIlcm9vdCVcYnVpbGQiCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9leHRlcm5hbC1hbWQ2NC5iYXQKaW5kZXggYmZhZWYwNS4uMWE2N2IwZiAxMDA2NDQKLS0tIGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdApAQCAtMSwzICsxLDMgQEAKLUBlY2hvIFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLg0KLUBlY2hvIFBsZWFzZSB1c2UgUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCBpbnN0ZWFkLg0KLUAiJX5kcDAuLlwuLlxQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IiAlKg0KK0BlY2hvIFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLgorQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuCitAIiV+ZHAwLi5cLi5cUENidWlsZFxnZXRfZXh0ZXJuYWxzLmJhdCIgJSoKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAppbmRleCBiZmFlZjA1Li4xYTY3YjBmIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9leHRlcm5hbC5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CkBAIC0xLDMgKzEsMyBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQorQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuCitAZWNobyBQbGVhc2UgdXNlIFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQgaW5zdGVhZC4KK0AiJX5kcDAuLlwuLlxQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IiAlKgpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvdGVzdC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdAppbmRleCBlNDgzMjljLi5mOTk0ZDJkIDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdAorKysgYi9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdApAQCAtMSw2ICsxLDYgQEAKLUByZW0gRm9ybWVybHkgdXNlZCBieSB0aGUgYnVpbGRib3QgInRlc3QiIHN0ZXAuDQotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gVG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIHNjcmlwdCwgdXNlDQotQGVjaG8gICAgIFBDYnVpbGRccnQuYmF0IC1xIC1kIC14NjQgLXVhbGwgLXJ3Vw0KLUBlY2hvIG9yIHVzZSBgdGVzdC5iYXRgIGluIHRoaXMgZGlyZWN0b3J5IGFuZCBwYXNzIGAteDY0YCBhcyBhbiBhcmd1bWVudC4NCi1jYWxsICIlfmRwMHRlc3QuYmF0IiAteDY0ICUqDQorQHJlbSBGb3JtZXJseSB1c2VkIGJ5IHRoZSBidWlsZGJvdCAidGVzdCIgc3RlcC4KK0BlY2hvIFRoaXMgc2NyaXB0IGlzIG5vIGxvbmdlciB1c2VkIGFuZCBtYXkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLgorQGVjaG8gVG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIHNjcmlwdCwgdXNlCitAZWNobyAgICAgUENidWlsZFxydC5iYXQgLXEgLWQgLXg2NCAtdWFsbCAtcndXCitAZWNobyBvciB1c2UgYHRlc3QuYmF0YCBpbiB0aGlzIGRpcmVjdG9yeSBhbmQgcGFzcyBgLXg2NGAgYXMgYW4gYXJndW1lbnQuCitjYWxsICIlfmRwMHRlc3QuYmF0IiAteDY0ICUqCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC90ZXN0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CmluZGV4IGI5ZGRlMDEuLmRhYTUzZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CkBAIC0xLDE5ICsxLDE5IEBACi1AZWNobyBvZmYNCi1yZW0gVXNlZCBieSB0aGUgYnVpbGRib3QgInRlc3QiIHN0ZXAuDQotc2V0bG9jYWwNCi0NCi1zZXQgaGVyZT0lfmRwMA0KLXNldCBydF9vcHRzPS1xIC1kDQotc2V0IHJlZ3J0ZXN0X2FyZ3M9DQotDQotOkNoZWNrT3B0cw0KLWlmICIlMSI9PSIteDY0IiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iLWQiIChzZXQgcnRfb3B0cz0lcnRfb3B0cyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KLWlmICIlMSI9PSItTyIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotaWYgIiUxIj09Ii1xIiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iK2QiIChzZXQgcnRfb3B0cz0lcnRfb3B0czotZD0lKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiAiJTEiPT0iK3EiIChzZXQgcnRfb3B0cz0lcnRfb3B0czotcT0lKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCi1pZiBOT1QgIiUxIj09IiIgKHNldCByZWdydGVzdF9hcmdzPSVyZWdydGVzdF9hcmdzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQotDQotZWNobyBvbg0KLWNhbGwgIiVoZXJlJS4uXC4uXFBDYnVpbGRccnQuYmF0IiAlcnRfb3B0cyUgLXVhbGwgLXJ3VyAlcmVncnRlc3RfYXJncyUNCitAZWNobyBvZmYKK3JlbSBVc2VkIGJ5IHRoZSBidWlsZGJvdCAidGVzdCIgc3RlcC4KK3NldGxvY2FsCisKK3NldCBoZXJlPSV+ZHAwCitzZXQgcnRfb3B0cz0tcSAtZAorc2V0IHJlZ3J0ZXN0X2FyZ3M9CisKKzpDaGVja09wdHMKK2lmICIlMSI9PSIteDY0IiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlMSI9PSItZCIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJTEiPT0iLU8iIChzZXQgcnRfb3B0cz0lcnRfb3B0cyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiUxIj09Ii1xIiAoc2V0IHJ0X29wdHM9JXJ0X29wdHMlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMKK2lmICIlMSI9PSIrZCIgKHNldCBydF9vcHRzPSVydF9vcHRzOi1kPSUpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cworaWYgIiUxIj09IitxIiAoc2V0IHJ0X29wdHM9JXJ0X29wdHM6LXE9JSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCitpZiBOT1QgIiUxIj09IiIgKHNldCByZWdydGVzdF9hcmdzPSVyZWdydGVzdF9hcmdzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzCisKK2VjaG8gb24KK2NhbGwgIiVoZXJlJS4uXC4uXFBDYnVpbGRccnQuYmF0IiAlcnRfb3B0cyUgLXVhbGwgLXJ3VyAtLXNsb3dlc3QgJXJlZ3J0ZXN0X2FyZ3MlCmRpZmYgLS1naXQgYS9Ub29scy9nZGIvbGlicHl0aG9uLnB5IGIvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQppbmRleCBlMjE4YTMxLi4zYWU3MDk3IDEwMDc1NQotLS0gYS9Ub29scy9nZGIvbGlicHl0aG9uLnB5CisrKyBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKQEAgLTI0MSwxMiArMjQxLDEzIEBACiAKICAgICBkZWYgc2FmZV90cF9uYW1lKHNlbGYpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi50eXBlKCkuZmllbGQoJ3RwX25hbWUnKS5zdHJpbmcoKQotICAgICAgICBleGNlcHQgTnVsbFB5T2JqZWN0UHRyOgotICAgICAgICAgICAgIyBOVUxMIHRwX25hbWU/Ci0gICAgICAgICAgICByZXR1cm4gJ3Vua25vd24nCi0gICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3I6Ci0gICAgICAgICAgICAjIENhbid0IGV2ZW4gcmVhZCB0aGUgb2JqZWN0IGF0IGFsbD8KKyAgICAgICAgICAgIG9iX3R5cGUgPSBzZWxmLnR5cGUoKQorICAgICAgICAgICAgdHBfbmFtZSA9IG9iX3R5cGUuZmllbGQoJ3RwX25hbWUnKQorICAgICAgICAgICAgcmV0dXJuIHRwX25hbWUuc3RyaW5nKCkKKyAgICAgICAgIyBOdWxsUHlPYmplY3RQdHI6IE5VTEwgdHBfbmFtZT8KKyAgICAgICAgIyBSdW50aW1lRXJyb3I6IENhbid0IGV2ZW4gcmVhZCB0aGUgb2JqZWN0IGF0IGFsbD8KKyAgICAgICAgIyBVbmljb2RlRGVjb2RlRXJyb3I6IEZhaWxlZCB0byBkZWNvZGUgdHBfbmFtZSBieXRlc3RyaW5nCisgICAgICAgIGV4Y2VwdCAoTnVsbFB5T2JqZWN0UHRyLCBSdW50aW1lRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvcik6CiAgICAgICAgICAgICByZXR1cm4gJ3Vua25vd24nCiAKICAgICBkZWYgcHJveHl2YWwoc2VsZiwgdmlzaXRlZCk6CkBAIC0zMjAsNyArMzIxLDkgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHBfbmFtZSA9IHQuZmllbGQoJ3RwX25hbWUnKS5zdHJpbmcoKQogICAgICAgICAgICAgdHBfZmxhZ3MgPSBpbnQodC5maWVsZCgndHBfZmxhZ3MnKSkKLSAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvcjoKKyAgICAgICAgIyBSdW50aW1lRXJyb3I6IE5VTEwgcG9pbnRlcnMKKyAgICAgICAgIyBVbmljb2RlRGVjb2RlRXJyb3I6IHN0cmluZygpIGZhaWxzIHRvIGRlY29kZSB0aGUgYnl0ZXN0cmluZworICAgICAgICBleGNlcHQgKFJ1bnRpbWVFcnJvciwgVW5pY29kZURlY29kZUVycm9yKToKICAgICAgICAgICAgICMgSGFuZGxlIGFueSBraW5kIG9mIGVycm9yIGUuZy4gTlVMTCBwdHJzIGJ5IHNpbXBseSB1c2luZyB0aGUgYmFzZQogICAgICAgICAgICAgIyBjbGFzcwogICAgICAgICAgICAgcmV0dXJuIGNscwpAQCAtMzM2LDYgKzMzOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICdzZXQnIDogUHlTZXRPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdmcm96ZW5zZXQnIDogUHlTZXRPYmplY3RQdHIsCiAgICAgICAgICAgICAgICAgICAgICdidWlsdGluX2Z1bmN0aW9uX29yX21ldGhvZCcgOiBQeUNGdW5jdGlvbk9iamVjdFB0ciwKKyAgICAgICAgICAgICAgICAgICAgJ21ldGhvZC13cmFwcGVyJzogd3JhcHBlcm9iamVjdCwKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICBpZiB0cF9uYW1lIGluIG5hbWVfbWFwOgogICAgICAgICAgICAgcmV0dXJuIG5hbWVfbWFwW3RwX25hbWVdCkBAIC02MDIsNyArNjA2LDEwIEBACiAKICAgICBkZWYgcHJveHl2YWwoc2VsZiwgdmlzaXRlZCk6CiAgICAgICAgIG1fbWwgPSBzZWxmLmZpZWxkKCdtX21sJykgIyBtX21sIGlzIGEgKFB5TWV0aG9kRGVmKikKLSAgICAgICAgbWxfbmFtZSA9IG1fbWxbJ21sX25hbWUnXS5zdHJpbmcoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBtbF9uYW1lID0gbV9tbFsnbWxfbmFtZSddLnN0cmluZygpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICBtbF9uYW1lID0gJzxtbF9uYW1lOlVuaWNvZGVEZWNvZGVFcnJvcj4nCiAKICAgICAgICAgcHlvcF9tX3NlbGYgPSBzZWxmLnB5b3BfZmllbGQoJ21fc2VsZicpCiAgICAgICAgIGlmIHB5b3BfbV9zZWxmLmlzX251bGwoKToKQEAgLTExMzEsNyArMTEzOCw5IEBACiAgICAgICAgICMgQ29udmVydCB0aGUgaW50IGNvZGUgcG9pbnRzIHRvIHVuaWNvZGUgY2hhcmFjdGVycywgYW5kIGdlbmVyYXRlIGEKICAgICAgICAgIyBsb2NhbCB1bmljb2RlIGluc3RhbmNlLgogICAgICAgICAjIFRoaXMgc3BsaXRzIHN1cnJvZ2F0ZSBwYWlycyBpZiBzaXplb2YoUHlfVU5JQ09ERSkgaXMgMiBoZXJlIChpbiBnZGIpLgotICAgICAgICByZXN1bHQgPSB1Jycuam9pbihbX3VuaWNocih1Y3MpIGZvciB1Y3MgaW4gUHlfVU5JQ09ERXNdKQorICAgICAgICByZXN1bHQgPSB1Jycuam9pbihbCisgICAgICAgICAgICAoX3VuaWNocih1Y3MpIGlmIHVjcyA8PSAweDEwZmZmZiBlbHNlICdcdWZmZmQnKQorICAgICAgICAgICAgZm9yIHVjcyBpbiBQeV9VTklDT0RFc10pCiAgICAgICAgIHJldHVybiByZXN1bHQKIAogICAgIGRlZiB3cml0ZV9yZXByKHNlbGYsIG91dCwgdmlzaXRlZCk6CkBAIC0xMTQ0LDYgKzExNTMsNDEgQEAKICAgICAgICAgb3V0LndyaXRlKHZhbC5sc3RyaXAoJ3UnKSkKIAogCitjbGFzcyB3cmFwcGVyb2JqZWN0KFB5T2JqZWN0UHRyKToKKyAgICBfdHlwZW5hbWUgPSAnd3JhcHBlcm9iamVjdCcKKworICAgIGRlZiBzYWZlX25hbWUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLmZpZWxkKCdkZXNjcicpWydkX2Jhc2UnXVsnbmFtZSddLnN0cmluZygpCisgICAgICAgICAgICByZXR1cm4gcmVwcihuYW1lKQorICAgICAgICBleGNlcHQgKE51bGxQeU9iamVjdFB0ciwgUnVudGltZUVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IpOgorICAgICAgICAgICAgcmV0dXJuICc8dW5rbm93biBuYW1lPicKKworICAgIGRlZiBzYWZlX3RwX25hbWUoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmZpZWxkKCdzZWxmJylbJ29iX3R5cGUnXVsndHBfbmFtZSddLnN0cmluZygpCisgICAgICAgIGV4Y2VwdCAoTnVsbFB5T2JqZWN0UHRyLCBSdW50aW1lRXJyb3IsIFVuaWNvZGVEZWNvZGVFcnJvcik6CisgICAgICAgICAgICByZXR1cm4gJzx1bmtub3duIHRwX25hbWU+JworCisgICAgZGVmIHNhZmVfc2VsZl9hZGRyZXNzcyhzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYWRkcmVzcyA9IGxvbmcoc2VsZi5maWVsZCgnc2VsZicpKQorICAgICAgICAgICAgcmV0dXJuICclI3gnICUgYWRkcmVzcworICAgICAgICBleGNlcHQgKE51bGxQeU9iamVjdFB0ciwgUnVudGltZUVycm9yKToKKyAgICAgICAgICAgIHJldHVybiAnPGZhaWxlZCB0byBnZXQgc2VsZiBhZGRyZXNzPicKKworICAgIGRlZiBwcm94eXZhbChzZWxmLCB2aXNpdGVkKToKKyAgICAgICAgbmFtZSA9IHNlbGYuc2FmZV9uYW1lKCkKKyAgICAgICAgdHBfbmFtZSA9IHNlbGYuc2FmZV90cF9uYW1lKCkKKyAgICAgICAgc2VsZl9hZGRyZXNzID0gc2VsZi5zYWZlX3NlbGZfYWRkcmVzc3MoKQorICAgICAgICByZXR1cm4gKCI8bWV0aG9kLXdyYXBwZXIgJXMgb2YgJXMgb2JqZWN0IGF0ICVzPiIKKyAgICAgICAgICAgICAgICAlIChuYW1lLCB0cF9uYW1lLCBzZWxmX2FkZHJlc3MpKQorCisgICAgZGVmIHdyaXRlX3JlcHIoc2VsZiwgb3V0LCB2aXNpdGVkKToKKyAgICAgICAgcHJveHkgPSBzZWxmLnByb3h5dmFsKHZpc2l0ZWQpCisgICAgICAgIG91dC53cml0ZShwcm94eSkKKworCiBkZWYgaW50X2Zyb21faW50KGdkYnZhbCk6CiAgICAgcmV0dXJuIGludChzdHIoZ2RidmFsKSkKIApAQCAtMTE3NiwxMSArMTIyMCwxMyBAQAogCiBkZWYgcHJldHR5X3ByaW50ZXJfbG9va3VwKGdkYnZhbCk6CiAgICAgdHlwZSA9IGdkYnZhbC50eXBlLnVucXVhbGlmaWVkKCkKLSAgICBpZiB0eXBlLmNvZGUgPT0gZ2RiLlRZUEVfQ09ERV9QVFI6Ci0gICAgICAgIHR5cGUgPSB0eXBlLnRhcmdldCgpLnVucXVhbGlmaWVkKCkKLSAgICAgICAgdCA9IHN0cih0eXBlKQotICAgICAgICBpZiB0IGluICgiUHlPYmplY3QiLCAiUHlGcmFtZU9iamVjdCIpOgotICAgICAgICAgICAgcmV0dXJuIFB5T2JqZWN0UHRyUHJpbnRlcihnZGJ2YWwpCisgICAgaWYgdHlwZS5jb2RlICE9IGdkYi5UWVBFX0NPREVfUFRSOgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgdHlwZSA9IHR5cGUudGFyZ2V0KCkudW5xdWFsaWZpZWQoKQorICAgIHQgPSBzdHIodHlwZSkKKyAgICBpZiB0IGluICgiUHlPYmplY3QiLCAiUHlGcmFtZU9iamVjdCIsICJQeVVuaWNvZGVPYmplY3QiLCAid3JhcHBlcm9iamVjdCIpOgorICAgICAgICByZXR1cm4gUHlPYmplY3RQdHJQcmludGVyKGdkYnZhbCkKIAogIiIiCiBEdXJpbmcgZGV2ZWxvcG1lbnQsIEkndmUgYmVlbiBtYW51YWxseSBpbnZva2luZyB0aGUgY29kZSBpbiB0aGlzIHdheToKQEAgLTEyMDIsNyArMTI0OCw3IEBACiAgIC91c3IvbGliL2RlYnVnL3Vzci9saWIvbGlicHl0aG9uMi42LnNvLjEuMC5kZWJ1Zy1nZGIucHkKICIiIgogZGVmIHJlZ2lzdGVyIChvYmopOgotICAgIGlmIG9iaiA9PSBOb25lOgorICAgIGlmIG9iaiBpcyBOb25lOgogICAgICAgICBvYmogPSBnZGIKIAogICAgICMgV2lyZSB1cCB0aGUgcHJldHR5LXByaW50ZXIKQEAgLTEzMDQsMjMgKzEzNTAsNDMgQEAKICAgICAgICAgICcnJwogICAgICAgICBpZiBzZWxmLmlzX3dhaXRpbmdfZm9yX2dpbCgpOgogICAgICAgICAgICAgcmV0dXJuICdXYWl0aW5nIGZvciB0aGUgR0lMJwotICAgICAgICBlbGlmIHNlbGYuaXNfZ2NfY29sbGVjdCgpOgorCisgICAgICAgIGlmIHNlbGYuaXNfZ2NfY29sbGVjdCgpOgogICAgICAgICAgICAgcmV0dXJuICdHYXJiYWdlLWNvbGxlY3RpbmcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIERldGVjdCBpbnZvY2F0aW9ucyBvZiBQeUNGdW5jdGlvbiBpbnN0YW5jZXM6Ci0gICAgICAgICAgICBvbGRlciA9IHNlbGYub2xkZXIoKQotICAgICAgICAgICAgaWYgb2xkZXIgYW5kIG9sZGVyLl9nZGJmcmFtZS5uYW1lKCkgPT0gJ1B5Q0Z1bmN0aW9uX0NhbGwnOgotICAgICAgICAgICAgICAgICMgV2l0aGluIHRoYXQgZnJhbWU6Ci0gICAgICAgICAgICAgICAgIyAgICJmdW5jIiBpcyB0aGUgbG9jYWwgY29udGFpbmluZyB0aGUgUHlPYmplY3QqIG9mIHRoZQotICAgICAgICAgICAgICAgICMgUHlDRnVuY3Rpb25PYmplY3QgaW5zdGFuY2UKLSAgICAgICAgICAgICAgICAjICAgImYiIGlzIHRoZSBzYW1lIHZhbHVlLCBidXQgY2FzdCB0byAoUHlDRnVuY3Rpb25PYmplY3QqKQotICAgICAgICAgICAgICAgICMgICAic2VsZiIgaXMgdGhlIChQeU9iamVjdCopIG9mIHRoZSAnc2VsZicKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICMgVXNlIHRoZSBwcmV0dHlwcmludGVyIGZvciB0aGUgZnVuYzoKLSAgICAgICAgICAgICAgICAgICAgZnVuYyA9IG9sZGVyLl9nZGJmcmFtZS5yZWFkX3ZhcignZnVuYycpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHIoZnVuYykKLSAgICAgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ1B5Q0Z1bmN0aW9uIGludm9jYXRpb24gKHVuYWJsZSB0byByZWFkICJmdW5jIiknCisKKyAgICAgICAgIyBEZXRlY3QgaW52b2NhdGlvbnMgb2YgUHlDRnVuY3Rpb24gaW5zdGFuY2VzOgorICAgICAgICBmcmFtZSA9IHNlbGYuX2dkYmZyYW1lCisgICAgICAgIGNhbGxlciA9IGZyYW1lLm5hbWUoKQorICAgICAgICBpZiBub3QgY2FsbGVyOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgaWYgY2FsbGVyID09ICdQeUNGdW5jdGlvbl9DYWxsJzoKKyAgICAgICAgICAgIGFyZ19uYW1lID0gJ2Z1bmMnCisgICAgICAgICAgICAjIFdpdGhpbiB0aGF0IGZyYW1lOgorICAgICAgICAgICAgIyAgICJmdW5jIiBpcyB0aGUgbG9jYWwgY29udGFpbmluZyB0aGUgUHlPYmplY3QqIG9mIHRoZQorICAgICAgICAgICAgIyBQeUNGdW5jdGlvbk9iamVjdCBpbnN0YW5jZQorICAgICAgICAgICAgIyAgICJmIiBpcyB0aGUgc2FtZSB2YWx1ZSwgYnV0IGNhc3QgdG8gKFB5Q0Z1bmN0aW9uT2JqZWN0KikKKyAgICAgICAgICAgICMgICAic2VsZiIgaXMgdGhlIChQeU9iamVjdCopIG9mIHRoZSAnc2VsZicKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAjIFVzZSB0aGUgcHJldHR5cHJpbnRlciBmb3IgdGhlIGZ1bmM6CisgICAgICAgICAgICAgICAgZnVuYyA9IGZyYW1lLnJlYWRfdmFyKGFyZ19uYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBzdHIoZnVuYykKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAoJ1B5Q0Z1bmN0aW9uIGludm9jYXRpb24gKHVuYWJsZSB0byByZWFkICVzOiAnCisgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyBkZWJ1Z2luZm9zPyknICUgYXJnX25hbWUpCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAnUHlDRnVuY3Rpb24gaW52b2NhdGlvbiAodW5hYmxlIHRvIHJlYWQgJXMpJyAlIGFyZ19uYW1lCisKKyAgICAgICAgaWYgY2FsbGVyID09ICd3cmFwcGVyX2NhbGwnOgorICAgICAgICAgICAgYXJnX25hbWUgPSAnd3AnCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZnVuYyA9IGZyYW1lLnJlYWRfdmFyKGFyZ19uYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiBzdHIoZnVuYykKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAoJzx3cmFwcGVyX2NhbGwgaW52b2NhdGlvbiAodW5hYmxlIHRvIHJlYWQgJXM6ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdtaXNzaW5nIGRlYnVnaW5mb3M/KT4nICUgYXJnX25hbWUpCisgICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yOgorICAgICAgICAgICAgICAgIHJldHVybiAnPHdyYXBwZXJfY2FsbCBpbnZvY2F0aW9uICh1bmFibGUgdG8gcmVhZCAlcyk+JyAlIGFyZ19uYW1lCiAKICAgICAgICAgIyBUaGlzIGZyYW1lIGlzbid0IHdvcnRoIHJlcG9ydGluZzoKICAgICAgICAgcmV0dXJuIEZhbHNlCkBAIC0xMzY4LDcgKzE0MzQsMTEgQEAKICAgICBkZWYgZ2V0X3NlbGVjdGVkX3B5dGhvbl9mcmFtZShjbHMpOgogICAgICAgICAnJydUcnkgdG8gb2J0YWluIHRoZSBGcmFtZSBmb3IgdGhlIHB5dGhvbi1yZWxhdGVkIGNvZGUgaW4gdGhlIHNlbGVjdGVkCiAgICAgICAgIGZyYW1lLCBvciBOb25lJycnCi0gICAgICAgIGZyYW1lID0gY2xzLmdldF9zZWxlY3RlZF9mcmFtZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZyYW1lID0gY2xzLmdldF9zZWxlY3RlZF9mcmFtZSgpCisgICAgICAgIGV4Y2VwdCBnZGIuZXJyb3I6CisgICAgICAgICAgICAjIE5vIGZyYW1lOiBQeXRob24gZGlkbid0IHN0YXJ0IHlldAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICB3aGlsZSBmcmFtZToKICAgICAgICAgICAgIGlmIGZyYW1lLmlzX3B5dGhvbl9mcmFtZSgpOgpAQCAtMTUwOSw2ICsxNTc5LDEwIEBACiBkZWYgbW92ZV9pbl9zdGFjayhtb3ZlX3VwKToKICAgICAnJydNb3ZlIHVwIG9yIGRvd24gdGhlIHN0YWNrIChmb3IgdGhlIHB5LXVwL3B5LWRvd24gY29tbWFuZCknJycKICAgICBmcmFtZSA9IEZyYW1lLmdldF9zZWxlY3RlZF9weXRob25fZnJhbWUoKQorICAgIGlmIG5vdCBmcmFtZToKKyAgICAgICAgcHJpbnQoJ1VuYWJsZSB0byBsb2NhdGUgcHl0aG9uIGZyYW1lJykKKyAgICAgICAgcmV0dXJuCisKICAgICB3aGlsZSBmcmFtZToKICAgICAgICAgaWYgbW92ZV91cDoKICAgICAgICAgICAgIGl0ZXJfZnJhbWUgPSBmcmFtZS5vbGRlcigpCkBAIC0xNTcxLDYgKzE2NDUsMTAgQEAKIAogICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJncywgZnJvbV90dHkpOgogICAgICAgICBmcmFtZSA9IEZyYW1lLmdldF9zZWxlY3RlZF9weXRob25fZnJhbWUoKQorICAgICAgICBpZiBub3QgZnJhbWU6CisgICAgICAgICAgICBwcmludCgnVW5hYmxlIHRvIGxvY2F0ZSBweXRob24gZnJhbWUnKQorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgd2hpbGUgZnJhbWU6CiAgICAgICAgICAgICBpZiBmcmFtZS5pc19weXRob25fZnJhbWUoKToKICAgICAgICAgICAgICAgICBmcmFtZS5wcmludF9zdW1tYXJ5KCkKQEAgLTE1ODgsOCArMTY2NiwxMiBAQAogCiAKICAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5KToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KTpcbicpCiAgICAgICAgIGZyYW1lID0gRnJhbWUuZ2V0X3NlbGVjdGVkX3B5dGhvbl9mcmFtZSgpCisgICAgICAgIGlmIG5vdCBmcmFtZToKKyAgICAgICAgICAgIHByaW50KCdVbmFibGUgdG8gbG9jYXRlIHB5dGhvbiBmcmFtZScpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOlxuJykKICAgICAgICAgd2hpbGUgZnJhbWU6CiAgICAgICAgICAgICBpZiBmcmFtZS5pc19weXRob25fZnJhbWUoKToKICAgICAgICAgICAgICAgICBmcmFtZS5wcmludF90cmFjZWJhY2soKQpkaWZmIC0tZ2l0IGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQppbmRleCBhNjJkMmZlLi5kZGQ3NTBlIDEwMDc1NQotLS0gYS9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQorKysgYi9Ub29scy9pMThuL3B5Z2V0dGV4dC5weQpAQCAtMjYxLDI1ICsyNjEsNiBAQAogICAgIHJldHVybiAxIGluIFtjIGluIHN0ciBmb3IgYyBpbiBzZXRdCiAKIAotZGVmIF92aXNpdF9weWZpbGVzKGxpc3QsIGRpcm5hbWUsIG5hbWVzKToKLSAgICAiIiJIZWxwZXIgZm9yIGdldEZpbGVzRm9yTmFtZSgpLiIiIgotICAgICMgZ2V0IGV4dGVuc2lvbiBmb3IgcHl0aG9uIHNvdXJjZSBmaWxlcwotICAgIGlmIG5vdCBnbG9iYWxzKCkuaGFzX2tleSgnX3B5X2V4dCcpOgotICAgICAgICBnbG9iYWwgX3B5X2V4dAotICAgICAgICBfcHlfZXh0ID0gW3RyaXBsZVswXSBmb3IgdHJpcGxlIGluIGltcC5nZXRfc3VmZml4ZXMoKQotICAgICAgICAgICAgICAgICAgIGlmIHRyaXBsZVsyXSA9PSBpbXAuUFlfU09VUkNFXVswXQotCi0gICAgIyBkb24ndCByZWN1cnNlIGludG8gQ1ZTIGRpcmVjdG9yaWVzCi0gICAgaWYgJ0NWUycgaW4gbmFtZXM6Ci0gICAgICAgIG5hbWVzLnJlbW92ZSgnQ1ZTJykKLQotICAgICMgYWRkIGFsbCAqLnB5IGZpbGVzIHRvIGxpc3QKLSAgICBsaXN0LmV4dGVuZCgKLSAgICAgICAgW29zLnBhdGguam9pbihkaXJuYW1lLCBmaWxlKSBmb3IgZmlsZSBpbiBuYW1lcwotICAgICAgICAgaWYgb3MucGF0aC5zcGxpdGV4dChmaWxlKVsxXSA9PSBfcHlfZXh0XQotICAgICAgICApCi0KLQogZGVmIF9nZXRfbW9kcGtnX3BhdGgoZG90dGVkX25hbWUsIHBhdGhsaXN0PU5vbmUpOgogICAgICIiIkdldCB0aGUgZmlsZXN5c3RlbSBwYXRoIGZvciBhIG1vZHVsZSBvciBhIHBhY2thZ2UuCiAKQEAgLTM0MCw3ICszMjEsMjAgQEAKICAgICBpZiBvcy5wYXRoLmlzZGlyKG5hbWUpOgogICAgICAgICAjIGZpbmQgYWxsIHB5dGhvbiBmaWxlcyBpbiBkaXJlY3RvcnkKICAgICAgICAgbGlzdCA9IFtdCi0gICAgICAgIG9zLnBhdGgud2FsayhuYW1lLCBfdmlzaXRfcHlmaWxlcywgbGlzdCkKKyAgICAgICAgIyBnZXQgZXh0ZW5zaW9uIGZvciBweXRob24gc291cmNlIGZpbGVzCisgICAgICAgIGlmICdfcHlfZXh0JyBub3QgaW4gZ2xvYmFscygpOgorICAgICAgICAgICAgZ2xvYmFsIF9weV9leHQKKyAgICAgICAgICAgIF9weV9leHQgPSBbdHJpcGxlWzBdIGZvciB0cmlwbGUgaW4gaW1wLmdldF9zdWZmaXhlcygpCisgICAgICAgICAgICAgICAgICAgICAgIGlmIHRyaXBsZVsyXSA9PSBpbXAuUFlfU09VUkNFXVswXQorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhuYW1lKToKKyAgICAgICAgICAgICMgZG9uJ3QgcmVjdXJzZSBpbnRvIENWUyBkaXJlY3RvcmllcworICAgICAgICAgICAgaWYgJ0NWUycgaW4gZGlyczoKKyAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykKKyAgICAgICAgICAgICMgYWRkIGFsbCAqLnB5IGZpbGVzIHRvIGxpc3QKKyAgICAgICAgICAgIGxpc3QuZXh0ZW5kKAorICAgICAgICAgICAgICAgIFtvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZSkgZm9yIGZpbGUgaW4gZmlsZXMKKyAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5zcGxpdGV4dChmaWxlKVsxXSA9PSBfcHlfZXh0XQorICAgICAgICAgICAgICAgICkKICAgICAgICAgcmV0dXJuIGxpc3QKICAgICBlbGlmIG9zLnBhdGguZXhpc3RzKG5hbWUpOgogICAgICAgICAjIGEgc2luZ2xlIGZpbGUKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9tc2kucHkgYi9Ub29scy9tc2kvbXNpLnB5CmluZGV4IDY1Y2U1YzEuLmRhNGExYzMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kucHkKKysrIGIvVG9vbHMvbXNpL21zaS5weQpAQCAtOTE3LDcgKzkxNyw3IEBACiAgICAgc2h1dGlsLmNvcHlmaWxlb2JqKG9wZW4ob3MucGF0aC5qb2luKHNyY2RpciwgIkxJQ0VOU0UiKSksIG91dCkKICAgICBzaHV0aWwuY29weWZpbGVvYmoob3BlbigiY3J0bGljZW5zZS50eHQiKSwgb3V0KQogICAgIGZvciBuYW1lLCBwYXQsIGZpbGUgaW4gKCgiYnppcDIiLCJiemlwMi0qIiwgIkxJQ0VOU0UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAoIkJlcmtlbGV5IERCIiwgImRiLSoiLCAiTElDRU5TRSIpLAorICAgICAgICAgICAgICAgICAgICAgICgiQmVya2VsZXkgREIiLCAiYnNkZGItKiIsICJMSUNFTlNFIiksCiAgICAgICAgICAgICAgICAgICAgICAgKCJvcGVuc3NsIiwgIm9wZW5zc2wtKiIsICJMSUNFTlNFIiksCiAgICAgICAgICAgICAgICAgICAgICAgKCJUY2wiLCAidGNsLTgqIiwgImxpY2Vuc2UudGVybXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAoIlRrIiwgInRrLTgqIiwgImxpY2Vuc2UudGVybXMiKSwKZGlmZiAtLWdpdCBhL1Rvb2xzL251Z2V0L2J1aWxkLmJhdCBiL1Rvb2xzL251Z2V0L2J1aWxkLmJhdAppbmRleCAzYzk1M2Y3Li5mNGUxNWM3IDEwMDY0NAotLS0gYS9Ub29scy9udWdldC9idWlsZC5iYXQKKysrIGIvVG9vbHMvbnVnZXQvYnVpbGQuYmF0CkBAIC0xLDYzICsxLDY0IEBACi1AZWNobyBvZmYNCi1zZXRsb2NhbA0KLXNldCBEPSV+ZHAwDQotc2V0IFBDQlVJTEQ9JUQlLi5cLi5cUENCdWlsZFwNCi0NCi1zZXQgQlVJTERYODY9DQotc2V0IEJVSUxEWDY0PQ0KLXNldCBSRUJVSUxEPQ0KLXNldCBPVVRQVVQ9DQotc2V0IFBBQ0tBR0VTPQ0KLQ0KLTpDaGVja09wdHMNCi1pZiAiJX4xIiBFUVUgIi1oIiBnb3RvIEhlbHANCi1pZiAiJX4xIiBFUVUgIi14ODYiIChzZXQgQlVJTERYODY9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCi1pZiAiJX4xIiBFUVUgIi14NjQiIChzZXQgQlVJTERYNjQ9MSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCi1pZiAiJX4xIiBFUVUgIi1yIiAoc2V0IFJFQlVJTEQ9LXIpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQotaWYgIiV+MSIgRVFVICItbyIgKHNldCBPVVRQVVQ9Ii9wOk91dHB1dFBhdGg9JX4yIikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCi1pZiAiJX4xIiBFUVUgIi0tb3V0IiAoc2V0IE9VVFBVVD0iL3A6T3V0cHV0UGF0aD0lfjIiKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KLWlmICIlfjEiIEVRVSAiLXAiIChzZXQgUEFDS0FHRVM9JVBBQ0tBR0VTJSAlfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQotDQotaWYgbm90IGRlZmluZWQgQlVJTERYODYgaWYgbm90IGRlZmluZWQgQlVJTERYNjQgKHNldCBCVUlMRFg4Nj0xKSAmJiAoc2V0IEJVSUxEWDY0PTEpDQotDQotaWYgbm90IGRlZmluZWQgTlVHRVQgd2hlcmUgbnVnZXQgLXEgfHwgZWNobyBDYW5ub3QgZmluZCBudWdldC5leGUgb24gUEFUSCBhbmQgTlVHRVQgaXMgbm90IHNldC4gJiYgZXhpdCAvQiAxDQotaWYgbm90IGRlZmluZWQgUFlUSE9OIHNldCBQWVRIT049cHkgLTMNCi0NCi1AJVBZVEhPTiUgLWMgIiIgPm51bCAyPm51bA0KLUBpZiBlcnJvcmxldmVsIDEgKA0KLSAgICAlTlVHRVQlIGluc3RhbGwgcHl0aG9uIC1PdXRwdXREaXJlY3RvcnkgIiVEJW9iaiIgLUV4Y2x1ZGVWZXJzaW9uIC1Ob25JbnRlcmFjdGl2ZQ0KLSAgICBzZXQgUFlUSE9OPSIlRCVvYmpccHl0aG9uXHRvb2xzXHB5dGhvbi5leGUiDQotKQ0KLQ0KLWNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Ng0KLQ0KLWlmIGRlZmluZWQgUEFDS0FHRVMgc2V0IFBBQ0tBR0VTPSIvcDpQYWNrYWdlcz0lUEFDS0FHRVMlIg0KLQ0KLWlmIGRlZmluZWQgQlVJTERYODYgKA0KLSAgICBpZiBkZWZpbmVkIFJFQlVJTEQgKCBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1lIC1yDQotICAgICkgZWxzZSBpZiBub3QgZXhpc3QgIiVQQ0JVSUxEJXB5dGhvbi5leGUiIGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLWUNCi0gICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KLQ0KLSAgICBtc2J1aWxkICIlRCVtYWtlX3BrZy5wcm9qIiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09eDg2ICVPVVRQVVQlICVQQUNLQUdFUyUNCi0gICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KLSkNCi0NCi1pZiBkZWZpbmVkIEJVSUxEWDY0ICgNCi0gICAgaWYgZGVmaW5lZCBSRUJVSUxEICggY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtcCB4NjQgLWUgLXINCi0gICAgKSBlbHNlIGlmIG5vdCBleGlzdCAiJVBDQlVJTEQlYW1kNjRccHl0aG9uLmV4ZSIgY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtcCB4NjQgLWUNCi0gICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KLQ0KLSAgICBtc2J1aWxkICIlRCVtYWtlX3BrZy5wcm9qIiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09eDY0ICVPVVRQVVQlICVQQUNLQUdFUyUNCi0gICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZg0KLSkNCi0NCi1leGl0IC9CIDANCi0NCi06SGVscA0KLWVjaG8gYnVpbGQuYmF0IFsteDg2XSBbLXg2NF0gWy0tb3V0IERJUl0gWy1yXSBbLWhdDQotZWNoby4NCi1lY2hvICAgIC14ODYgICAgICAgICAgICAgICAgQnVpbGQgeDg2IGluc3RhbGxlcnMNCi1lY2hvICAgIC14NjQgICAgICAgICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMNCi1lY2hvICAgIC1yICAgICAgICAgICAgICAgICAgUmVidWlsZCByYXRoZXIgdGhhbiBpbmNyZW1lbnRhbCBidWlsZA0KLWVjaG8gICAgLS1vdXQgW0RJUl0gICAgICAgICBPdmVycmlkZSBvdXRwdXQgZGlyZWN0b3J5DQotZWNobyAgICAtaCAgICAgICAgICAgICAgICAgIFNob3cgdXNhZ2UNCitAZWNobyBvZmYKK3NldGxvY2FsCitzZXQgRD0lfmRwMAorc2V0IFBDQlVJTEQ9JUQlLi5cLi5cUENCdWlsZFwKKworc2V0IEJVSUxEWDg2PQorc2V0IEJVSUxEWDY0PQorc2V0IFJFQlVJTEQ9CitzZXQgT1VUUFVUPQorc2V0IFBBQ0tBR0VTPQorCis6Q2hlY2tPcHRzCitpZiAiJX4xIiBFUVUgIi1oIiBnb3RvIEhlbHAKK2lmICIlfjEiIEVRVSAiLXg4NiIgKHNldCBCVUlMRFg4Nj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cworaWYgIiV+MSIgRVFVICIteDY0IiAoc2V0IEJVSUxEWDY0PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJX4xIiBFUVUgIi1yIiAoc2V0IFJFQlVJTEQ9LXIpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzCitpZiAiJX4xIiBFUVUgIi1vIiAoc2V0IE9VVFBVVD0iL3A6T3V0cHV0UGF0aD0lfjIiKSAmJiBzaGlmdCAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cworaWYgIiV+MSIgRVFVICItLW91dCIgKHNldCBPVVRQVVQ9Ii9wOk91dHB1dFBhdGg9JX4yIikgJiYgc2hpZnQgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMKK2lmICIlfjEiIEVRVSAiLXAiIChzZXQgUEFDS0FHRVM9JVBBQ0tBR0VTJSAlfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzCisKK2lmIG5vdCBkZWZpbmVkIEJVSUxEWDg2IGlmIG5vdCBkZWZpbmVkIEJVSUxEWDY0IChzZXQgQlVJTERYODY9MSkgJiYgKHNldCBCVUlMRFg2ND0xKQorCitpZiBub3QgZGVmaW5lZCBOVUdFVCB3aGVyZSBudWdldCAtcSB8fCBlY2hvIENhbm5vdCBmaW5kIG51Z2V0LmV4ZSBvbiBQQVRIIGFuZCBOVUdFVCBpcyBub3Qgc2V0LiAmJiBleGl0IC9CIDEKK2NhbGwgIiVQQ0JVSUxEJWZpbmRfbXNidWlsZC5iYXQiICVNU0JVSUxEJQoraWYgRVJST1JMRVZFTCAxIChlY2hvIENhbm5vdCBsb2NhdGUgTVNCdWlsZC5leGUgb24gUEFUSCBvciBhcyBNU0JVSUxEIHZhcmlhYmxlICYgZXhpdCAvYiAyKQoraWYgbm90IGRlZmluZWQgUFlUSE9OIHNldCBQWVRIT049cHkgLTMKKworQCVQWVRIT04lIC1jICIiID5udWwgMj5udWwKK0BpZiBlcnJvcmxldmVsIDEgKAorICAgICVOVUdFVCUgaW5zdGFsbCBweXRob24gLU91dHB1dERpcmVjdG9yeSAiJUQlb2JqIiAtRXhjbHVkZVZlcnNpb24gLU5vbkludGVyYWN0aXZlCisgICAgc2V0IFBZVEhPTj0iJUQlb2JqXHB5dGhvblx0b29sc1xweXRob24uZXhlIgorKQorCisKK2lmIGRlZmluZWQgUEFDS0FHRVMgc2V0IFBBQ0tBR0VTPSIvcDpQYWNrYWdlcz0lUEFDS0FHRVMlIgorCitpZiBkZWZpbmVkIEJVSUxEWDg2ICgKKyAgICBpZiBkZWZpbmVkIFJFQlVJTEQgKCBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1lIC1yCisgICAgKSBlbHNlIGlmIG5vdCBleGlzdCAiJVBDQlVJTEQlcHl0aG9uLmV4ZSIgY2FsbCAiJVBDQlVJTEQlYnVpbGQuYmF0IiAtZQorICAgIGlmIGVycm9ybGV2ZWwgMSBnb3RvIDplb2YKKworICAgICVNU0JVSUxEJSAiJUQlbWFrZV9wa2cucHJvaiIgL3A6Q29uZmlndXJhdGlvbj1SZWxlYXNlIC9wOlBsYXRmb3JtPXg4NiAlT1VUUFVUJSAlUEFDS0FHRVMlCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZgorKQorCitpZiBkZWZpbmVkIEJVSUxEWDY0ICgKKyAgICBpZiBkZWZpbmVkIFJFQlVJTEQgKCBjYWxsICIlUENCVUlMRCVidWlsZC5iYXQiIC1wIHg2NCAtZSAtcgorICAgICkgZWxzZSBpZiBub3QgZXhpc3QgIiVQQ0JVSUxEJWFtZDY0XHB5dGhvbi5leGUiIGNhbGwgIiVQQ0JVSUxEJWJ1aWxkLmJhdCIgLXAgeDY0IC1lCisgICAgaWYgZXJyb3JsZXZlbCAxIGdvdG8gOmVvZgorCisgICAgJU1TQlVJTEQlICIlRCVtYWtlX3BrZy5wcm9qIiAvcDpDb25maWd1cmF0aW9uPVJlbGVhc2UgL3A6UGxhdGZvcm09eDY0ICVPVVRQVVQlICVQQUNLQUdFUyUKKyAgICBpZiBlcnJvcmxldmVsIDEgZ290byA6ZW9mCispCisKK2V4aXQgL0IgMAorCis6SGVscAorZWNobyBidWlsZC5iYXQgWy14ODZdIFsteDY0XSBbLS1vdXQgRElSXSBbLXJdIFstaF0KK2VjaG8uCitlY2hvICAgIC14ODYgICAgICAgICAgICAgICAgQnVpbGQgeDg2IGluc3RhbGxlcnMKK2VjaG8gICAgLXg2NCAgICAgICAgICAgICAgICBCdWlsZCB4NjQgaW5zdGFsbGVycworZWNobyAgICAtciAgICAgICAgICAgICAgICAgIFJlYnVpbGQgcmF0aGVyIHRoYW4gaW5jcmVtZW50YWwgYnVpbGQKK2VjaG8gICAgLS1vdXQgW0RJUl0gICAgICAgICBPdmVycmlkZSBvdXRwdXQgZGlyZWN0b3J5CitlY2hvICAgIC1oICAgICAgICAgICAgICAgICAgU2hvdyB1c2FnZQpkaWZmIC0tZ2l0IGEvVG9vbHMvbnVnZXQvZGlzdHV0aWxzLmNvbW1hbmQuYmRpc3Rfd2luaW5zdC5weSBiL1Rvb2xzL251Z2V0L2Rpc3R1dGlscy5jb21tYW5kLmJkaXN0X3dpbmluc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDU4NmUzNAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL251Z2V0L2Rpc3R1dGlscy5jb21tYW5kLmJkaXN0X3dpbmluc3QucHkKQEAgLTAsMCArMSwyMCBAQAorIiIiZGlzdHV0aWxzLmNvbW1hbmQuYmRpc3Rfd2luaW5zdAorCitTdXBwcmVzc2VzIHRoZSAnYmRpc3Rfd2luaW5zdCcgY29tbWFuZCwgd2hpbGUgc3RpbGwgYWxsb3dpbmcKK3NldHVwdG9vbHMgdG8gaW1wb3J0IGl0IHdpdGhvdXQgYnJlYWtpbmcuIiIiCisKK2Zyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IENvbW1hbmQKK2Zyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgorCitjbGFzcyBiZGlzdF93aW5pbnN0KENvbW1hbmQpOgorICAgIGRlc2NyaXB0aW9uID0gImNyZWF0ZSBhbiBleGVjdXRhYmxlIGluc3RhbGxlciBmb3IgTVMgV2luZG93cyIKKworICAgIGRlZiBpbml0aWFsaXplX29wdGlvbnMoc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBmaW5hbGl6ZV9vcHRpb25zKHNlbGYpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcnVuKHNlbGYpOgorICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKCJiZGlzdF93aW5pbnN0IGlzIG5vdCBzdXBwb3J0ZWQgIgorICAgICAgICAgICAgImluIHRoaXMgUHl0aG9uIGRpc3RyaWJ1dGlvbiIpCmRpZmYgLS1naXQgYS9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qIGIvVG9vbHMvbnVnZXQvbWFrZV9wa2cucHJvagppbmRleCBjYjEyNGFiLi4wZjNmOGJkIDEwMDY0NAotLS0gYS9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qCisrKyBiL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2oKQEAgLTE0LDYgKzE0LDcgQEAKIAogICAgIDxQcm9wZXJ0eUdyb3VwPgogICAgICAgICA8TnVzcGVjVmVyc2lvbj4kKE1ham9yVmVyc2lvbk51bWJlcikuJChNaW5vclZlcnNpb25OdW1iZXIpLiQoTWljcm9WZXJzaW9uTnVtYmVyKTwvTnVzcGVjVmVyc2lvbj4KKyAgICAgICAgPE51c3BlY1ZlcnNpb24gQ29uZGl0aW9uPSIkKFJlbGVhc2VMZXZlbE5hbWUpICE9ICcnIj4kKE51c3BlY1ZlcnNpb24pLSQoUmVsZWFzZUxldmVsTmFtZSk8L051c3BlY1ZlcnNpb24+CiAgICAgICAgIDxTaWduT3V0cHV0PmZhbHNlPC9TaWduT3V0cHV0PgogICAgICAgICA8VGFyZ2V0TmFtZT4kKE91dHB1dE5hbWUpLiQoTnVzcGVjVmVyc2lvbik8L1RhcmdldE5hbWU+CiAgICAgICAgIDxUYXJnZXRFeHQ+Lm51cGtnPC9UYXJnZXRFeHQ+CmRpZmYgLS1naXQgYS9Ub29scy9udWdldC9tYWtlX3ppcC5weSBiL1Rvb2xzL251Z2V0L21ha2VfemlwLnB5CmluZGV4IGFmNjQzMjMuLjIwZmFkZjIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL251Z2V0L21ha2VfemlwLnB5CisrKyBiL1Rvb2xzL251Z2V0L21ha2VfemlwLnB5CkBAIC05LDYgKzksNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgdGVtcGZpbGUKIAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCiBmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKIGZyb20gemlwZmlsZSBpbXBvcnQgWmlwRmlsZSwgWklQX0RFRkxBVEVECiBpbXBvcnQgc3VicHJvY2VzcwpAQCAtMjAzLDggKzIwNCwxNSBAQAogCiAgICAgdHJ5OgogICAgICAgICBmb3IgdCwgcywgcCwgYyBpbiBsYXlvdXQ6Ci0gICAgICAgICAgICBzID0gc291cmNlIC8gcy5yZXBsYWNlKCIkYXJjaCIsIGFyY2gpCi0gICAgICAgICAgICBjb3BpZWQgPSBjb3B5X3RvX2xheW91dCh0ZW1wIC8gdC5yc3RyaXAoJy8nKSwgcmdsb2IocywgcCwgYykpCisgICAgICAgICAgICBmcyA9IHNvdXJjZSAvIHMucmVwbGFjZSgiJGFyY2giLCBhcmNoKQorICAgICAgICAgICAgZmlsZXMgPSByZ2xvYihmcywgcCwgYykKKyAgICAgICAgICAgIGV4dHJhX2ZpbGVzID0gW10KKyAgICAgICAgICAgIGlmIHMgPT0gJ0xpYicgYW5kIHAgPT0gJyoqLyonOgorICAgICAgICAgICAgICAgIGV4dHJhX2ZpbGVzLmFwcGVuZCgoCisgICAgICAgICAgICAgICAgICAgIHNvdXJjZSAvICd0b29scycgLyAnbnVnZXQnIC8gJ2Rpc3R1dGlscy5jb21tYW5kLmJkaXN0X3dpbmluc3QucHknLAorICAgICAgICAgICAgICAgICAgICBQYXRoKCdkaXN0dXRpbHMnKSAvICdjb21tYW5kJyAvICdiZGlzdF93aW5pbnN0LnB5JworICAgICAgICAgICAgICAgICkpCisgICAgICAgICAgICBjb3BpZWQgPSBjb3B5X3RvX2xheW91dCh0ZW1wIC8gdC5yc3RyaXAoJy8nKSwgY2hhaW4oZmlsZXMsIGV4dHJhX2ZpbGVzKSkKICAgICAgICAgICAgIHByaW50KCdDb3BpZWQge30gZmlsZXMnLmZvcm1hdChjb3BpZWQpKQogCiAgICAgICAgIGlmIG91dDoKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvZGlmZi5weSBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQppbmRleCA1MTNlMmE3Li5jNGMyZTEwIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2RpZmYucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CkBAIC0zMiw4ICszMiwxMCBAQAogCiAgICAgZnJvbWRhdGUgPSB0aW1lLmN0aW1lKG9zLnN0YXQoZnJvbWZpbGUpLnN0X210aW1lKQogICAgIHRvZGF0ZSA9IHRpbWUuY3RpbWUob3Muc3RhdCh0b2ZpbGUpLnN0X210aW1lKQotICAgIGZyb21saW5lcyA9IG9wZW4oZnJvbWZpbGUsICdVJykucmVhZGxpbmVzKCkKLSAgICB0b2xpbmVzID0gb3Blbih0b2ZpbGUsICdVJykucmVhZGxpbmVzKCkKKyAgICB3aXRoIG9wZW4oZnJvbWZpbGUsICdVJykgYXMgZjoKKyAgICAgICAgZnJvbWxpbmVzID0gZi5yZWFkbGluZXMoKQorICAgIHdpdGggb3Blbih0b2ZpbGUsICdVJykgYXMgZjoKKyAgICAgICAgdG9saW5lcyA9IGYucmVhZGxpbmVzKCkKIAogICAgIGlmIG9wdGlvbnMudToKICAgICAgICAgZGlmZiA9IGRpZmZsaWIudW5pZmllZF9kaWZmKGZyb21saW5lcywgdG9saW5lcywgZnJvbWZpbGUsIHRvZmlsZSwgZnJvbWRhdGUsIHRvZGF0ZSwgbj1uKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5IGIvVG9vbHMvc2NyaXB0cy9wYXRjaGNoZWNrLnB5CmluZGV4IGVkYTIxYjkuLjU4YWExNjggMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcGF0Y2hjaGVjay5weQorKysgYi9Ub29scy9zY3JpcHRzL3BhdGNoY2hlY2sucHkKQEAgLTEwLDYgKzEwLDEzIEBACiBpbXBvcnQgdW50YWJpZnkKIAogCisjIEV4Y2x1ZGVkIGRpcmVjdG9yaWVzIHdoaWNoIGFyZSBjb3BpZXMgb2YgZXh0ZXJuYWwgbGlicmFyaWVzOgorIyBkb24ndCBjaGVjayB0aGVpciBjb2Rpbmcgc3R5bGUKK0VYQ0xVREVfRElSUyA9IFtvcy5wYXRoLmpvaW4oJ01vZHVsZXMnLCAnX2N0eXBlcycsICdsaWJmZmknKSwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ01vZHVsZXMnLCAnX2N0eXBlcycsICdsaWJmZmlfb3N4JyksCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKCdNb2R1bGVzJywgJ19jdHlwZXMnLCAnbGliZmZpX21zdmMnKSwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ01vZHVsZXMnLCAnZXhwYXQnKSwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oJ01vZHVsZXMnLCAnemxpYicpXQogU1JDRElSID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdzcmNkaXInKQogCiAKQEAgLTM2LDQ2ICs0Myw4OCBAQAogICAgIHJldHVybiBkZWNvcmF0ZWRfZnhuCiAKIAotZGVmIG1xX3BhdGNoZXNfYXBwbGllZCgpOgotICAgICIiIkNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgYXBwbGllZCBNUSBwYXRjaGVzLiIiIgotICAgIGNtZCA9ICdoZyBxYXBwbGllZCcKLSAgICBzdCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLnNwbGl0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCitkZWYgZ2V0X2dpdF9icmFuY2goKToKKyAgICAiIiJHZXQgdGhlIHN5bWJvbGljIG5hbWUgZm9yIHRoZSBjdXJyZW50IGdpdCBicmFuY2giIiIKKyAgICBjbWQgPSAiZ2l0IHJldi1wYXJzZSAtLWFiYnJldi1yZWYgSEVBRCIuc3BsaXQoKQogICAgIHRyeToKLSAgICAgICAgYnN0ZG91dCwgXyA9IHN0LmNvbW11bmljYXRlKCkKLSAgICAgICAgcmV0dXJuIHN0LnJldHVybmNvZGUgPT0gMCBhbmQgYnN0ZG91dAotICAgIGZpbmFsbHk6Ci0gICAgICAgIHN0LnN0ZG91dC5jbG9zZSgpCi0gICAgICAgIHN0LnN0ZGVyci5jbG9zZSgpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCisgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBnZXRfZ2l0X3Vwc3RyZWFtX3JlbW90ZSgpOgorICAgICIiIkdldCB0aGUgcmVtb3RlIG5hbWUgdG8gdXNlIGZvciB1cHN0cmVhbSBicmFuY2hlcworCisgICAgVXNlcyAidXBzdHJlYW0iIGlmIGl0IGV4aXN0cywgIm9yaWdpbiIgb3RoZXJ3aXNlCisgICAgIiIiCisgICAgY21kID0gImdpdCByZW1vdGUgZ2V0LXVybCB1cHN0cmVhbSIuc3BsaXQoKQorICAgIHRyeToKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgcmV0dXJuICJvcmlnaW4iCisgICAgcmV0dXJuICJ1cHN0cmVhbSIKKworCitAc3RhdHVzKCJHZXR0aW5nIGJhc2UgYnJhbmNoIGZvciBQUiIsCisgICAgICAgIGluZm89bGFtYmRhIHg6IHggaWYgeCBpcyBub3QgTm9uZSBlbHNlICJub3QgYSBQUiBicmFuY2giKQorZGVmIGdldF9iYXNlX2JyYW5jaCgpOgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oU1JDRElSLCAnLmdpdCcpKToKKyAgICAgICAgIyBOb3QgYSBnaXQgY2hlY2tvdXQsIHNvIHRoZXJlJ3Mgbm8gYmFzZSBicmFuY2gKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb25faW5mbworICAgIGlmIHZlcnNpb24ucmVsZWFzZWxldmVsID09ICdhbHBoYSc6CisgICAgICAgIGJhc2VfYnJhbmNoID0gIm1hc3RlciIKKyAgICBlbHNlOgorICAgICAgICBiYXNlX2JyYW5jaCA9ICJ7MC5tYWpvcn0uezAubWlub3J9Ii5mb3JtYXQodmVyc2lvbikKKyAgICB0aGlzX2JyYW5jaCA9IGdldF9naXRfYnJhbmNoKCkKKyAgICBpZiB0aGlzX2JyYW5jaCBpcyBOb25lIG9yIHRoaXNfYnJhbmNoID09IGJhc2VfYnJhbmNoOgorICAgICAgICAjIE5vdCBvbiBhIGdpdCBQUiBicmFuY2gsIHNvIHRoZXJlJ3Mgbm8gYmFzZSBicmFuY2gKKyAgICAgICAgcmV0dXJuIE5vbmUKKyAgICB1cHN0cmVhbV9yZW1vdGUgPSBnZXRfZ2l0X3Vwc3RyZWFtX3JlbW90ZSgpCisgICAgcmV0dXJuIHVwc3RyZWFtX3JlbW90ZSArICIvIiArIGJhc2VfYnJhbmNoCiAKIAogQHN0YXR1cygiR2V0dGluZyB0aGUgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmUgYmVlbiBhZGRlZC9jaGFuZ2VkIiwKICAgICAgICAgaW5mbz1sYW1iZGEgeDogbl9maWxlc19zdHIobGVuKHgpKSkKLWRlZiBjaGFuZ2VkX2ZpbGVzKCk6Ci0gICAgIiIiR2V0IHRoZSBsaXN0IG9mIGNoYW5nZWQgb3IgYWRkZWQgZmlsZXMgZnJvbSB0aGUgVkNTLiIiIgotICAgIGlmIG9zLnBhdGguaXNkaXIob3MucGF0aC5qb2luKFNSQ0RJUiwgJy5oZycpKToKLSAgICAgICAgdmNzID0gJ2hnJwotICAgICAgICBjbWQgPSAnaGcgc3RhdHVzIC0tYWRkZWQgLS1tb2RpZmllZCAtLW5vLXN0YXR1cycKLSAgICAgICAgaWYgbXFfcGF0Y2hlc19hcHBsaWVkKCk6Ci0gICAgICAgICAgICBjbWQgKz0gJyAtLXJldiBxcGFyZW50JwotICAgIGVsaWYgb3MucGF0aC5pc2RpcignLnN2bicpOgotICAgICAgICB2Y3MgPSAnc3ZuJwotICAgICAgICBjbWQgPSAnc3ZuIHN0YXR1cyAtLXF1aWV0IC0tbm9uLWludGVyYWN0aXZlIC0taWdub3JlLWV4dGVybmFscycKLSAgICBlbHNlOgotICAgICAgICBzeXMuZXhpdCgnbmVlZCBhIGNoZWNrb3V0IHRvIGdldCBtb2RpZmllZCBmaWxlcycpCi0KLSAgICBzdCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLnNwbGl0KCksIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUpCi0gICAgdHJ5OgotICAgICAgICBzdC53YWl0KCkKLSAgICAgICAgaWYgdmNzID09ICdoZyc6Ci0gICAgICAgICAgICByZXR1cm4gW3guZGVjb2RlKCkucnN0cmlwKCkgZm9yIHggaW4gc3Quc3Rkb3V0XQorZGVmIGNoYW5nZWRfZmlsZXMoYmFzZV9icmFuY2g9Tm9uZSk6CisgICAgIiIiR2V0IHRoZSBsaXN0IG9mIGNoYW5nZWQgb3IgYWRkZWQgZmlsZXMgZnJvbSBnaXQuIiIiCisgICAgaWYgb3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKFNSQ0RJUiwgJy5naXQnKSk6CisgICAgICAgICMgV2UganVzdCB1c2UgYW4gZXhpc3RlbmNlIGNoZWNrIGhlcmUgYXM6CisgICAgICAgICMgIGRpcmVjdG9yeSA9IG5vcm1hbCBnaXQgY2hlY2tvdXQvY2xvbmUKKyAgICAgICAgIyAgZmlsZSA9IGdpdCB3b3JrdHJlZSBkaXJlY3RvcnkKKyAgICAgICAgaWYgYmFzZV9icmFuY2g6CisgICAgICAgICAgICBjbWQgPSAnZ2l0IGRpZmYgLS1uYW1lLXN0YXR1cyAnICsgYmFzZV9icmFuY2gKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dHB1dCA9ICh4LmRlY29kZSgpLnJzdHJpcCgpLnJzcGxpdChOb25lLCAxKVstMV0KLSAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiBzdC5zdGRvdXQgaWYgeFswXSBpbiAnQU0nKQotICAgICAgICByZXR1cm4gc2V0KHBhdGggZm9yIHBhdGggaW4gb3V0cHV0IGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpKQotICAgIGZpbmFsbHk6Ci0gICAgICAgIHN0LnN0ZG91dC5jbG9zZSgpCisgICAgICAgICAgICBjbWQgPSAnZ2l0IHN0YXR1cyAtLXBvcmNlbGFpbicKKyAgICAgICAgZmlsZW5hbWVzID0gW10KKyAgICAgICAgc3QgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZC5zcGxpdCgpLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBzdC5zdGRvdXQ6CisgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUuZGVjb2RlKCkucnN0cmlwKCkKKyAgICAgICAgICAgICAgICBzdGF0dXNfdGV4dCwgZmlsZW5hbWUgPSBsaW5lLnNwbGl0KE5vbmUsIDEpCisgICAgICAgICAgICAgICAgc3RhdHVzID0gc2V0KHN0YXR1c190ZXh0KQorICAgICAgICAgICAgICAgICMgbW9kaWZpZWQsIGFkZGVkIG9yIHVubWVyZ2VkIGZpbGVzCisgICAgICAgICAgICAgICAgaWYgbm90IHN0YXR1cy5pbnRlcnNlY3Rpb24oJ01BVScpOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmICcgLT4gJyBpbiBmaWxlbmFtZToKKyAgICAgICAgICAgICAgICAgICAgIyBmaWxlIGlzIHJlbmFtZWQKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaWxlbmFtZS5zcGxpdCgnIC0+ICcsIDIpWzFdLnN0cmlwKCkKKyAgICAgICAgICAgICAgICBmaWxlbmFtZXMuYXBwZW5kKGZpbGVuYW1lKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3Quc3Rkb3V0LmNsb3NlKCkKKyAgICBlbHNlOgorICAgICAgICBzeXMuZXhpdCgnbmVlZCBhIGdpdCBjaGVja291dCB0byBnZXQgbW9kaWZpZWQgZmlsZXMnKQorCisgICAgZmlsZW5hbWVzMiA9IFtdCisgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lczoKKyAgICAgICAgIyBOb3JtYWxpemUgdGhlIHBhdGggdG8gYmUgYWJsZSB0byBtYXRjaCB1c2luZyAuc3RhcnRzd2l0aCgpCisgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5ub3JtcGF0aChmaWxlbmFtZSkKKyAgICAgICAgaWYgYW55KGZpbGVuYW1lLnN0YXJ0c3dpdGgocGF0aCkgZm9yIHBhdGggaW4gRVhDTFVERV9ESVJTKToKKyAgICAgICAgICAgICMgRXhjbHVkZSB0aGUgZmlsZQorICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgZmlsZW5hbWVzMi5hcHBlbmQoZmlsZW5hbWUpCisKKyAgICByZXR1cm4gZmlsZW5hbWVzMgogCiAKIGRlZiByZXBvcnRfbW9kaWZpZWRfZmlsZXMoZmlsZV9wYXRocyk6CkBAIC0xNDcsMjAgKzE5NiwyMSBAQAogICAgIHJldHVybiBvcy5wYXRoLmpvaW4oJ01pc2MnLCAnQUNLUycpIGluIGZpbGVfcGF0aHMKIAogCi1Ac3RhdHVzKCJNaXNjL05FV1MgdXBkYXRlZCIsIG1vZGFsPVRydWUpCitAc3RhdHVzKCJNaXNjL05FV1MuZCB1cGRhdGVkIHdpdGggYGJsdXJiYCIsIG1vZGFsPVRydWUpCiBkZWYgcmVwb3J0ZWRfbmV3cyhmaWxlX3BhdGhzKToKLSAgICAiIiJDaGVjayBpZiBNaXNjL05FV1MgaGFzIGJlZW4gY2hhbmdlZC4iIiIKLSAgICByZXR1cm4gb3MucGF0aC5qb2luKCdNaXNjJywgJ05FV1MnKSBpbiBmaWxlX3BhdGhzCisgICAgIiIiQ2hlY2sgaWYgTWlzYy9ORVdTLmQgaGFzIGJlZW4gY2hhbmdlZC4iIiIKKyAgICByZXR1cm4gYW55KHAuc3RhcnRzd2l0aChvcy5wYXRoLmpvaW4oJ01pc2MnLCAnTkVXUy5kJywgJ25leHQnKSkKKyAgICAgICAgICAgICAgIGZvciBwIGluIGZpbGVfcGF0aHMpCiAKIAogZGVmIG1haW4oKToKLSAgICBmaWxlX3BhdGhzID0gY2hhbmdlZF9maWxlcygpCisgICAgYmFzZV9icmFuY2ggPSBnZXRfYmFzZV9icmFuY2goKQorICAgIGZpbGVfcGF0aHMgPSBjaGFuZ2VkX2ZpbGVzKGJhc2VfYnJhbmNoKQogICAgIHB5dGhvbl9maWxlcyA9IFtmbiBmb3IgZm4gaW4gZmlsZV9wYXRocyBpZiBmbi5lbmRzd2l0aCgnLnB5JyldCiAgICAgY19maWxlcyA9IFtmbiBmb3IgZm4gaW4gZmlsZV9wYXRocyBpZiBmbi5lbmRzd2l0aCgoJy5jJywgJy5oJykpXQogICAgIGRvY19maWxlcyA9IFtmbiBmb3IgZm4gaW4gZmlsZV9wYXRocyBpZiBmbi5zdGFydHN3aXRoKCdEb2MnKSBhbmQKICAgICAgICAgICAgICAgICAgZm4uZW5kc3dpdGgoKCcucnN0JywgJy5pbmMnKSldCi0gICAgbWlzY19maWxlcyA9IHtvcy5wYXRoLmpvaW4oJ01pc2MnLCAnQUNLUycpLCBvcy5wYXRoLmpvaW4oJ01pc2MnLCAnTkVXUycpfVwKLSAgICAgICAgICAgICYgc2V0KGZpbGVfcGF0aHMpCisgICAgbWlzY19maWxlcyA9IHtwIGZvciBwIGluIGZpbGVfcGF0aHMgaWYgcC5zdGFydHN3aXRoKCdNaXNjJyl9CiAgICAgIyBQRVAgOCB3aGl0ZXNwYWNlIHJ1bGVzIGVuZm9yY2VtZW50LgogICAgIG5vcm1hbGl6ZV93aGl0ZXNwYWNlKHB5dGhvbl9maWxlcykKICAgICAjIEMgcnVsZXMgZW5mb3JjZW1lbnQuCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5IGIvVG9vbHMvc2NyaXB0cy9yZWluZGVudC5weQppbmRleCBkZjE1ZWRiLi41NDA5MDFiIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL3JlaW5kZW50LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcmVpbmRlbnQucHkKQEAgLTEwOSw3ICsxMDksNyBAQAogICAgIGlmIHZlcmJvc2U6CiAgICAgICAgIHByaW50ICJjaGVja2luZyIsIGZpbGUsICIuLi4iLAogICAgIHRyeToKLSAgICAgICAgZiA9IGlvLm9wZW4oZmlsZSkKKyAgICAgICAgZiA9IG9wZW4oZmlsZSwgInJiIikKICAgICBleGNlcHQgSU9FcnJvciwgbXNnOgogICAgICAgICBlcnJwcmludCgiJXM6IEkvTyBFcnJvcjogJXMiICUgKGZpbGUsIHN0cihtc2cpKSkKICAgICAgICAgcmV0dXJuCkBAIC0xMzMsNyArMTMzLDcgQEAKICAgICAgICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoZmlsZSwgYmFrKQogICAgICAgICAgICAgICAgIGlmIHZlcmJvc2U6CiAgICAgICAgICAgICAgICAgICAgIHByaW50ICJiYWNrZWQgdXAiLCBmaWxlLCAidG8iLCBiYWsKLSAgICAgICAgICAgIGYgPSBpby5vcGVuKGZpbGUsICJ3IiwgbmV3bGluZT1uZXdsaW5lKQorICAgICAgICAgICAgZiA9IG9wZW4oZmlsZSwgIndiIikKICAgICAgICAgICAgIHIud3JpdGUoZikKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICAgICAgaWYgdmVyYm9zZToKQEAgLTE0NCw3ICsxNDQsMjEgQEAKICAgICAgICAgICAgIHByaW50ICJ1bmNoYW5nZWQuIgogICAgICAgICByZXR1cm4gRmFsc2UKIAotZGVmIF9yc3RyaXAobGluZSwgSlVOSz0nXG4gXHQnKToKK2RlZiBfZGV0ZWN0X25ld2xpbmVzKGxpbmVzKToKKyAgICBuZXdsaW5lcyA9IHsnXHJcbicgaWYgbGluZVstMjpdID09ICdcclxuJyBlbHNlCisgICAgICAgICAgICAgICAgJ1xuJyBpZiBsaW5lWy0xOl0gPT0gJ1xuJyBlbHNlCisgICAgICAgICAgICAgICAgJ1xyJyBpZiBsaW5lWy0xOl0gPT0gJ1xyJyBlbHNlCisgICAgICAgICAgICAgICAgJycKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lc30KKyAgICBuZXdsaW5lcy5kaXNjYXJkKCcnKQorICAgIG5ld2xpbmVzID0gdHVwbGUoc29ydGVkKG5ld2xpbmVzKSkKKyAgICBpZiBub3QgbmV3bGluZXM6CisgICAgICAgIHJldHVybiAnXG4nCisgICAgaWYgbGVuKG5ld2xpbmVzKSA9PSAxOgorICAgICAgICByZXR1cm4gbmV3bGluZXNbMF0KKyAgICByZXR1cm4gbmV3bGluZXMKKworZGVmIF9yc3RyaXAobGluZSwgSlVOSz0nXHJcbiBcdCcpOgogICAgICIiIlJldHVybiBsaW5lIHN0cmlwcGVkIG9mIHRyYWlsaW5nIHNwYWNlcywgdGFicywgbmV3bGluZXMuCiAKICAgICBOb3RlIHRoYXQgbGluZS5yc3RyaXAoKSBpbnN0ZWFkIGFsc28gc3RyaXBzIHN1bmRyeSBjb250cm9sIGNoYXJhY3RlcnMsCkBAIC0xNjYsMTAgKzE4MCwxOCBAQAogICAgICAgICAjIFJhdyBmaWxlIGxpbmVzLgogICAgICAgICBzZWxmLnJhdyA9IGYucmVhZGxpbmVzKCkKIAorICAgICAgICAjIFNhdmUgdGhlIG5ld2xpbmVzIGZvdW5kIGluIHRoZSBmaWxlIHNvIHRoZXkgY2FuIGJlIHVzZWQgdG8KKyAgICAgICAgIyAgY3JlYXRlIG91dHB1dCB3aXRob3V0IG11dGF0aW5nIHRoZSBuZXdsaW5lcy4KKyAgICAgICAgc2VsZi5uZXdsaW5lcyA9IF9kZXRlY3RfbmV3bGluZXMoc2VsZi5yYXcpCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5uZXdsaW5lcywgdHVwbGUpOgorICAgICAgICAgICAgc2VsZi5uZXdsaW5lID0gc2VsZi5uZXdsaW5lc1swXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5uZXdsaW5lID0gc2VsZi5uZXdsaW5lcworCiAgICAgICAgICMgRmlsZSBsaW5lcywgcnN0cmlwcGVkICYgdGFiLWV4cGFuZGVkLiAgRHVtbXkgYXQgc3RhcnQgaXMgc28KICAgICAgICAgIyB0aGF0IHdlIGNhbiB1c2UgdG9rZW5pemUncyAxLWJhc2VkIGxpbmUgbnVtYmVyaW5nIGVhc2lseS4KLSAgICAgICAgIyBOb3RlIHRoYXQgYSBsaW5lIGlzIGFsbC1ibGFuayBpZmYgaXQncyAiXG4iLgotICAgICAgICBzZWxmLmxpbmVzID0gW19yc3RyaXAobGluZSkuZXhwYW5kdGFicygpICsgIlxuIgorICAgICAgICAjIE5vdGUgdGhhdCBhIGxpbmUgaXMgYWxsLWJsYW5rIGlmZiBpdCdzIG5ld2xpbmUuCisgICAgICAgIHNlbGYubGluZXMgPSBbX3JzdHJpcChsaW5lKS5leHBhbmR0YWJzKCkgKyBzZWxmLm5ld2xpbmUKICAgICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLnJhd10KICAgICAgICAgc2VsZi5saW5lcy5pbnNlcnQoMCwgTm9uZSkKICAgICAgICAgc2VsZi5pbmRleCA9IDEgICMgaW5kZXggaW50byBzZWxmLmxpbmVzIG9mIG5leHQgbGluZQpAQCAtMTgwLDE1ICsyMDIsMTEgQEAKICAgICAgICAgIyBpbmRlZWQsIHRoZXkncmUgb3VyIGhlYWRhY2hlIQogICAgICAgICBzZWxmLnN0YXRzID0gW10KIAotICAgICAgICAjIFNhdmUgdGhlIG5ld2xpbmVzIGZvdW5kIGluIHRoZSBmaWxlIHNvIHRoZXkgY2FuIGJlIHVzZWQgdG8KLSAgICAgICAgIyAgY3JlYXRlIG91dHB1dCB3aXRob3V0IG11dGF0aW5nIHRoZSBuZXdsaW5lcy4KLSAgICAgICAgc2VsZi5uZXdsaW5lcyA9IGYubmV3bGluZXMKLQogICAgIGRlZiBydW4oc2VsZik6CiAgICAgICAgIHRva2VuaXplLnRva2VuaXplKHNlbGYuZ2V0bGluZSwgc2VsZi50b2tlbmVhdGVyKQogICAgICAgICAjIFJlbW92ZSB0cmFpbGluZyBlbXB0eSBsaW5lcy4KICAgICAgICAgbGluZXMgPSBzZWxmLmxpbmVzCi0gICAgICAgIHdoaWxlIGxpbmVzIGFuZCBsaW5lc1stMV0gPT0gIlxuIjoKKyAgICAgICAgd2hpbGUgbGluZXMgYW5kIGxpbmVzWy0xXSA9PSBzZWxmLm5ld2xpbmU6CiAgICAgICAgICAgICBsaW5lcy5wb3AoKQogICAgICAgICAjIFNlbnRpbmVsLgogICAgICAgICBzdGF0cyA9IHNlbGYuc3RhdHMKQEAgLTI0NCw3ICsyNjIsNyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBsaW5lc1t0aGlzc3RtdDpuZXh0c3RtdF06CiAgICAgICAgICAgICAgICAgICAgIGlmIGRpZmYgPiAwOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZSA9PSAiXG4iOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbGluZSA9PSBzZWxmLm5ld2xpbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWZ0ZXIuYXBwZW5kKGxpbmUpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyLmFwcGVuZCgiICIgKiBkaWZmICsgbGluZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NzbC9tdWx0aXNzbHRlc3RzLnB5IGIvVG9vbHMvc3NsL211bHRpc3NsdGVzdHMucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZmZjNTdmMAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL3NzbC9tdWx0aXNzbHRlc3RzLnB5CkBAIC0wLDAgKzEsNDMxIEBACisjIS4vcHl0aG9uCisiIiJSdW4gUHl0aG9uIHRlc3RzIGFnYWluc3QgbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBvZiBPcGVuU1NMIGFuZCBMaWJyZVNTTAorCitUaGUgc2NyaXB0CisKKyAgKDEpIGRvd25sb2FkcyBPcGVuU1NMIC8gTGlicmVTU0wgdGFyIGJ1bmRsZQorICAoMikgZXh0cmFjdHMgaXQgdG8gLi9zcmMKKyAgKDMpIGNvbXBpbGVzIE9wZW5TU0wgLyBMaWJyZVNTTAorICAoNCkgaW5zdGFsbHMgT3BlblNTTCAvIExpYnJlU1NMIGludG8gLi4vbXVsdGlzc2wvJExJQi8kVkVSU0lPTi8KKyAgKDUpIGZvcmNlcyBhIHJlY29tcGlsYXRpb24gb2YgUHl0aG9uIG1vZHVsZXMgdXNpbmcgdGhlCisgICAgICBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMgZnJvbSAuLi9tdWx0aXNzbC8kTElCLyRWRVJTSU9OLworICAoNikgcnVucyBQeXRob24ncyB0ZXN0IHN1aXRlCisKK1RoZSBzY3JpcHQgbXVzdCBiZSBydW4gd2l0aCBQeXRob24ncyBidWlsZCBkaXJlY3RvcnkgYXMgY3VycmVudCB3b3JraW5nCitkaXJlY3RvcnkuCisKK1RoZSBzY3JpcHQgdXNlcyBMRF9SVU5fUEFUSCwgTERfTElCUkFSWV9QQVRILCBDUFBGTEFHUyBhbmQgTERGTEFHUyB0byBiZW5kCitzZWFyY2ggcGF0aHMgZm9yIGhlYWRlciBmaWxlcyBhbmQgc2hhcmVkIGxpYnJhcmllcy4gSXQncyBrbm93biB0byB3b3JrIG9uCitMaW51eCB3aXRoIEdDQyBhbmQgY2xhbmcuCisKK1BsZWFzZSBrZWVwIHRoaXMgc2NyaXB0IGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi43LCBhbmQgMy40IHRvIDMuNy4KKworKGMpIDIwMTMtMjAxNyBDaHJpc3RpYW4gSGVpbWVzIDxjaHJpc3RpYW5AcHl0aG9uLm9yZz4KKyIiIgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorCitpbXBvcnQgYXJncGFyc2UKK2Zyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCit0cnk6CisgICAgZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gdXJsbGliMiBpbXBvcnQgdXJsb3BlbgoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzeXMKK2ltcG9ydCB0YXJmaWxlCisKKworbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoIm11bHRpc3NsIikKKworT1BFTlNTTF9PTERfVkVSU0lPTlMgPSBbCisgICAgICIwLjkuOHpjIiwKKyAgICAgIjAuOS44emgiLAorICAgICAiMS4wLjF1IiwKK10KKworT1BFTlNTTF9SRUNFTlRfVkVSU0lPTlMgPSBbCisgICAgICIxLjAuMiIsCisgICAgICIxLjAuMmwiLAorICAgICAiMS4xLjBmIiwKK10KKworTElCUkVTU0xfT0xEX1ZFUlNJT05TID0gWworICAgICIyLjMuMTAiLAorICAgICIyLjQuNSIsCitdCisKK0xJQlJFU1NMX1JFQ0VOVF9WRVJTSU9OUyA9IFsKKyAgICAiMi41LjUiLAorICAgICIyLjYuNCIsCisgICAgIjIuNy4xIiwKK10KKworIyBzdG9yZSBmaWxlcyBpbiAuLi9tdWx0aXNzbAorSEVSRSA9IG9zLnBhdGguYWJzcGF0aChvcy5nZXRjd2QoKSkKK01VTFRJU1NMX0RJUiA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oSEVSRSwgJy4uJywgJ211bHRpc3NsJykpCisKK3BhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgIHByb2c9J211bHRpc3NsJywKKyAgICBkZXNjcmlwdGlvbj0oCisgICAgICAgICJSdW4gQ1B5dGhvbiB0ZXN0cyB3aXRoIG11bHRpcGxlIE9wZW5TU0wgYW5kIExpYnJlU1NMICIKKyAgICAgICAgInZlcnNpb25zLiIKKyAgICApCispCitwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICctLWRlYnVnJywKKyAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgIGhlbHA9IkVuYWJsZSBkZWJ1ZyBtb2RlIiwKKykKK3BhcnNlci5hZGRfYXJndW1lbnQoCisgICAgJy0tZGlzYWJsZS1hbmNpZW50JywKKyAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgIGhlbHA9IkRvbid0IHRlc3QgT3BlblNTTCA8IDEuMC4yIGFuZCBMaWJyZVNTTCA8IDIuNS4zLiIsCispCitwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICctLW9wZW5zc2wnLAorICAgIG5hcmdzPScrJywKKyAgICBkZWZhdWx0PSgpLAorICAgIGhlbHA9KAorICAgICAgICAiT3BlblNTTCB2ZXJzaW9ucywgZGVmYXVsdHMgdG8gJ3t9JyAoYW5jaWVudDogJ3t9JykgaWYgbm8gIgorICAgICAgICAiT3BlblNTTCBhbmQgTGlicmVTU0wgdmVyc2lvbnMgYXJlIGdpdmVuLiIKKyAgICApLmZvcm1hdChPUEVOU1NMX1JFQ0VOVF9WRVJTSU9OUywgT1BFTlNTTF9PTERfVkVSU0lPTlMpCispCitwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICctLWxpYnJlc3NsJywKKyAgICBuYXJncz0nKycsCisgICAgZGVmYXVsdD0oKSwKKyAgICBoZWxwPSgKKyAgICAgICAgIkxpYnJlU1NMIHZlcnNpb25zLCBkZWZhdWx0cyB0byAne30nIChhbmNpZW50OiAne30nKSBpZiBubyAiCisgICAgICAgICJPcGVuU1NMIGFuZCBMaWJyZVNTTCB2ZXJzaW9ucyBhcmUgZ2l2ZW4uIgorICAgICkuZm9ybWF0KExJQlJFU1NMX1JFQ0VOVF9WRVJTSU9OUywgTElCUkVTU0xfT0xEX1ZFUlNJT05TKQorKQorcGFyc2VyLmFkZF9hcmd1bWVudCgKKyAgICAnLS10ZXN0cycsCisgICAgbmFyZ3M9JyonLAorICAgIGRlZmF1bHQ9KCksCisgICAgaGVscD0iUHl0aG9uIHRlc3RzIHRvIHJ1biwgZGVmYXVsdHMgdG8gYWxsIFNTTCByZWxhdGVkIHRlc3RzLiIsCispCitwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICctLWJhc2UtZGlyZWN0b3J5JywKKyAgICBkZWZhdWx0PU1VTFRJU1NMX0RJUiwKKyAgICBoZWxwPSJCYXNlIGRpcmVjdG9yeSBmb3IgT3BlblNTTCAvIExpYnJlU1NMIHNvdXJjZXMgYW5kIGJ1aWxkcy4iCispCitwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICctLW5vLW5ldHdvcmsnLAorICAgIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAorICAgIGRlc3Q9J25ldHdvcmsnLAorICAgIGhlbHA9IkRpc2FibGUgbmV0d29yayB0ZXN0cy4iCispCitwYXJzZXIuYWRkX2FyZ3VtZW50KAorICAgICctLWNvbXBpbGUtb25seScsCisgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICBoZWxwPSJEb24ndCBydW4gdGVzdHMsIG9ubHkgY29tcGlsZSBfc3NsLmMgYW5kIF9oYXNob3BlbnNzbC5jLiIKKykKKworCitjbGFzcyBBYnN0cmFjdEJ1aWxkZXIob2JqZWN0KToKKyAgICBsaWJyYXJ5ID0gTm9uZQorICAgIHVybF90ZW1wbGF0ZSA9IE5vbmUKKyAgICBzcmNfdGVtcGxhdGUgPSBOb25lCisgICAgYnVpbGRfdGVtcGxhdGUgPSBOb25lCisKKyAgICBtb2R1bGVfZmlsZXMgPSAoIk1vZHVsZXMvX3NzbC5jIiwKKyAgICAgICAgICAgICAgICAgICAgIk1vZHVsZXMvX2hhc2hvcGVuc3NsLmMiKQorICAgIG1vZHVsZV9saWJzID0gKCJfc3NsIiwgIl9oYXNobGliIikKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCB2ZXJzaW9uLCBjb21waWxlX2FyZ3M9KCksCisgICAgICAgICAgICAgICAgIGJhc2VkaXI9TVVMVElTU0xfRElSKToKKyAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgorICAgICAgICBzZWxmLmNvbXBpbGVfYXJncyA9IGNvbXBpbGVfYXJncworICAgICAgICAjIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKKyAgICAgICAgc2VsZi5pbnN0YWxsX2RpciA9IG9zLnBhdGguam9pbigKKyAgICAgICAgICAgIG9zLnBhdGguam9pbihiYXNlZGlyLCBzZWxmLmxpYnJhcnkubG93ZXIoKSksIHZlcnNpb24KKyAgICAgICAgKQorICAgICAgICAjIHNvdXJjZSBmaWxlCisgICAgICAgIHNlbGYuc3JjX2RpciA9IG9zLnBhdGguam9pbihiYXNlZGlyLCAnc3JjJykKKyAgICAgICAgc2VsZi5zcmNfZmlsZSA9IG9zLnBhdGguam9pbigKKyAgICAgICAgICAgIHNlbGYuc3JjX2Rpciwgc2VsZi5zcmNfdGVtcGxhdGUuZm9ybWF0KHZlcnNpb24pKQorICAgICAgICAjIGJ1aWxkIGRpcmVjdG9yeSAocmVtb3ZlZCBhZnRlciBpbnN0YWxsKQorICAgICAgICBzZWxmLmJ1aWxkX2RpciA9IG9zLnBhdGguam9pbigKKyAgICAgICAgICAgIHNlbGYuc3JjX2Rpciwgc2VsZi5idWlsZF90ZW1wbGF0ZS5mb3JtYXQodmVyc2lvbikpCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICI8ezAuX19jbGFzc19fLl9fbmFtZV9ffSBmb3IgezAudmVyc2lvbn0+Ii5mb3JtYXQoc2VsZikKKworICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgQWJzdHJhY3RCdWlsZGVyKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gKAorICAgICAgICAgICAgc2VsZi5saWJyYXJ5ID09IG90aGVyLmxpYnJhcnkKKyAgICAgICAgICAgIGFuZCBzZWxmLnZlcnNpb24gPT0gb3RoZXIudmVyc2lvbgorICAgICAgICApCisKKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisgICAgICAgIHJldHVybiBoYXNoKChzZWxmLmxpYnJhcnksIHNlbGYudmVyc2lvbikpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgb3BlbnNzbF9jbGkoc2VsZik6CisgICAgICAgICIiIm9wZW5zc2wgQ0xJIGJpbmFyeSIiIgorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuaW5zdGFsbF9kaXIsICJiaW4iLCAib3BlbnNzbCIpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgb3BlbnNzbF92ZXJzaW9uKHNlbGYpOgorICAgICAgICAiIiJvdXRwdXQgb2YgJ2Jpbi9vcGVuc3NsIHZlcnNpb24nIiIiCisgICAgICAgIGNtZCA9IFtzZWxmLm9wZW5zc2xfY2xpLCAidmVyc2lvbiJdCisgICAgICAgIHJldHVybiBzZWxmLl9zdWJwcm9jZXNzX291dHB1dChjbWQpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcHlzc2xfdmVyc2lvbihzZWxmKToKKyAgICAgICAgIiIiVmFsdWUgb2Ygc3NsLk9QRU5TU0xfVkVSU0lPTiIiIgorICAgICAgICBjbWQgPSBbCisgICAgICAgICAgICBzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICctYycsICdpbXBvcnQgc3NsOyBwcmludChzc2wuT1BFTlNTTF9WRVJTSU9OKScKKyAgICAgICAgXQorICAgICAgICByZXR1cm4gc2VsZi5fc3VicHJvY2Vzc19vdXRwdXQoY21kKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGluY2x1ZGVfZGlyKHNlbGYpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuaW5zdGFsbF9kaXIsICJpbmNsdWRlIikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsaWJfZGlyKHNlbGYpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuaW5zdGFsbF9kaXIsICJsaWIiKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGhhc19vcGVuc3NsKHNlbGYpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5pc2ZpbGUoc2VsZi5vcGVuc3NsX2NsaSkKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBoYXNfc3JjKHNlbGYpOgorICAgICAgICByZXR1cm4gb3MucGF0aC5pc2ZpbGUoc2VsZi5zcmNfZmlsZSkKKworICAgIGRlZiBfc3VicHJvY2Vzc19jYWxsKHNlbGYsIGNtZCwgZW52PU5vbmUsICoqa3dhcmdzKToKKyAgICAgICAgbG9nLmRlYnVnKCJDYWxsICd7fSciLmZvcm1hdCgiICIuam9pbihjbWQpKSkKKyAgICAgICAgcmV0dXJuIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjbWQsIGVudj1lbnYsICoqa3dhcmdzKQorCisgICAgZGVmIF9zdWJwcm9jZXNzX291dHB1dChzZWxmLCBjbWQsIGVudj1Ob25lLCAqKmt3YXJncyk6CisgICAgICAgIGxvZy5kZWJ1ZygiQ2FsbCAne30nIi5mb3JtYXQoIiAiLmpvaW4oY21kKSkpCisgICAgICAgIGlmIGVudiBpcyBOb25lOgorICAgICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5jb3B5KCkKKyAgICAgICAgICAgIGVudlsiTERfTElCUkFSWV9QQVRIIl0gPSBzZWxmLmxpYl9kaXIKKyAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBlbnY9ZW52LCAqKmt3YXJncykKKyAgICAgICAgcmV0dXJuIG91dC5zdHJpcCgpLmRlY29kZSgidXRmLTgiKQorCisgICAgZGVmIF9kb3dubG9hZF9zcmMoc2VsZik6CisgICAgICAgICIiIkRvd25sb2FkIHNvdXJjZXMiIiIKKyAgICAgICAgc3JjX2RpciA9IG9zLnBhdGguZGlybmFtZShzZWxmLnNyY19maWxlKQorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihzcmNfZGlyKToKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNyY19kaXIpCisgICAgICAgIHVybCA9IHNlbGYudXJsX3RlbXBsYXRlLmZvcm1hdChzZWxmLnZlcnNpb24pCisgICAgICAgIGxvZy5pbmZvKCJEb3dubG9hZGluZyBmcm9tIHt9Ii5mb3JtYXQodXJsKSkKKyAgICAgICAgcmVxID0gdXJsb3Blbih1cmwpCisgICAgICAgICMgS0lTUywgcmVhZCBhbGwsIHdyaXRlIGFsbAorICAgICAgICBkYXRhID0gcmVxLnJlYWQoKQorICAgICAgICBsb2cuaW5mbygiU3RvcmluZyB7fSIuZm9ybWF0KHNlbGYuc3JjX2ZpbGUpKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5zcmNfZmlsZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YSkKKworICAgIGRlZiBfdW5wYWNrX3NyYyhzZWxmKToKKyAgICAgICAgIiIiVW5wYWNrIHRhci5neiBidW5kbGUiIiIKKyAgICAgICAgIyBjbGVhbnVwCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc2VsZi5idWlsZF9kaXIpOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmJ1aWxkX2RpcikKKyAgICAgICAgb3MubWFrZWRpcnMoc2VsZi5idWlsZF9kaXIpCisKKyAgICAgICAgdGYgPSB0YXJmaWxlLm9wZW4oc2VsZi5zcmNfZmlsZSkKKyAgICAgICAgbmFtZSA9IHNlbGYuYnVpbGRfdGVtcGxhdGUuZm9ybWF0KHNlbGYudmVyc2lvbikKKyAgICAgICAgYmFzZSA9IG5hbWUgKyAnLycKKyAgICAgICAgIyBmb3JjZSBleHRyYWN0aW9uIGludG8gYnVpbGQgZGlyCisgICAgICAgIG1lbWJlcnMgPSB0Zi5nZXRtZW1iZXJzKCkKKyAgICAgICAgZm9yIG1lbWJlciBpbiBsaXN0KG1lbWJlcnMpOgorICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUgPT0gbmFtZToKKyAgICAgICAgICAgICAgICBtZW1iZXJzLnJlbW92ZShtZW1iZXIpCisgICAgICAgICAgICBlbGlmIG5vdCBtZW1iZXIubmFtZS5zdGFydHN3aXRoKGJhc2UpOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobWVtYmVyLm5hbWUsIGJhc2UpCisgICAgICAgICAgICBtZW1iZXIubmFtZSA9IG1lbWJlci5uYW1lW2xlbihiYXNlKTpdLmxzdHJpcCgnLycpCisgICAgICAgIGxvZy5pbmZvKCJVbnBhY2tpbmcgZmlsZXMgdG8ge30iLmZvcm1hdChzZWxmLmJ1aWxkX2RpcikpCisgICAgICAgIHRmLmV4dHJhY3RhbGwoc2VsZi5idWlsZF9kaXIsIG1lbWJlcnMpCisKKyAgICBkZWYgX2J1aWxkX3NyYyhzZWxmKToKKyAgICAgICAgIiIiTm93IGJ1aWxkIG9wZW5zc2wiIiIKKyAgICAgICAgbG9nLmluZm8oIlJ1bm5pbmcgYnVpbGQgaW4ge30iLmZvcm1hdChzZWxmLmJ1aWxkX2RpcikpCisgICAgICAgIGN3ZCA9IHNlbGYuYnVpbGRfZGlyCisgICAgICAgIGNtZCA9IFsiLi9jb25maWciLCAic2hhcmVkIiwgIi0tcHJlZml4PXt9Ii5mb3JtYXQoc2VsZi5pbnN0YWxsX2RpcildCisgICAgICAgIGNtZC5leHRlbmQoc2VsZi5jb21waWxlX2FyZ3MpCisgICAgICAgIHNlbGYuX3N1YnByb2Nlc3NfY2FsbChjbWQsIGN3ZD1jd2QpCisgICAgICAgICMgT2xkIE9wZW5TU0wgdmVyc2lvbnMgZG8gbm90IHN1cHBvcnQgcGFyYWxsZWwgYnVpbGRzLgorICAgICAgICBzZWxmLl9zdWJwcm9jZXNzX2NhbGwoWyJtYWtlIiwgIi1qMSJdLCBjd2Q9Y3dkKQorCisgICAgZGVmIF9tYWtlX2luc3RhbGwoc2VsZiwgcmVtb3ZlPVRydWUpOgorICAgICAgICBzZWxmLl9zdWJwcm9jZXNzX2NhbGwoWyJtYWtlIiwgIi1qMSIsICJpbnN0YWxsIl0sIGN3ZD1zZWxmLmJ1aWxkX2RpcikKKyAgICAgICAgaWYgcmVtb3ZlOgorICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmJ1aWxkX2RpcikKKworICAgIGRlZiBpbnN0YWxsKHNlbGYpOgorICAgICAgICBsb2cuaW5mbyhzZWxmLm9wZW5zc2xfY2xpKQorICAgICAgICBpZiBub3Qgc2VsZi5oYXNfb3BlbnNzbDoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmhhc19zcmM6CisgICAgICAgICAgICAgICAgc2VsZi5fZG93bmxvYWRfc3JjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJBbHJlYWR5IGhhcyBzcmMge30iLmZvcm1hdChzZWxmLnNyY19maWxlKSkKKyAgICAgICAgICAgIHNlbGYuX3VucGFja19zcmMoKQorICAgICAgICAgICAgc2VsZi5fYnVpbGRfc3JjKCkKKyAgICAgICAgICAgIHNlbGYuX21ha2VfaW5zdGFsbCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2cuaW5mbygiQWxyZWFkeSBoYXMgaW5zdGFsbGF0aW9uIHt9Ii5mb3JtYXQoc2VsZi5pbnN0YWxsX2RpcikpCisgICAgICAgICMgdmFsaWRhdGUgaW5zdGFsbGF0aW9uCisgICAgICAgIHZlcnNpb24gPSBzZWxmLm9wZW5zc2xfdmVyc2lvbgorICAgICAgICBpZiBzZWxmLnZlcnNpb24gbm90IGluIHZlcnNpb246CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHZlcnNpb24pCisKKyAgICBkZWYgcmVjb21waWxlX3B5bW9kcyhzZWxmKToKKyAgICAgICAgbG9nLndhcm5pbmcoIlVzaW5nIGJ1aWxkIGZyb20ge30iLmZvcm1hdChzZWxmLmJ1aWxkX2RpcikpCisgICAgICAgICMgZm9yY2UgYSByZWJ1aWxkIG9mIGFsbCBtb2R1bGVzIHRoYXQgdXNlIE9wZW5TU0wgQVBJcworICAgICAgICBmb3IgZm5hbWUgaW4gc2VsZi5tb2R1bGVfZmlsZXM6CisgICAgICAgICAgICBvcy51dGltZShmbmFtZSwgTm9uZSkKKyAgICAgICAgIyByZW1vdmUgYWxsIGJ1aWxkIGFydGVmYWN0cworICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsaygnYnVpbGQnKToKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBpZiBmaWxlbmFtZS5zdGFydHN3aXRoKHNlbGYubW9kdWxlX2xpYnMpOgorICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsob3MucGF0aC5qb2luKHJvb3QsIGZpbGVuYW1lKSkKKworICAgICAgICAjIG92ZXJ3cml0ZSBoZWFkZXIgYW5kIGxpYnJhcnkgc2VhcmNoIHBhdGhzCisgICAgICAgIGVudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgIGVudlsiQ1BQRkxBR1MiXSA9ICItSXt9Ii5mb3JtYXQoc2VsZi5pbmNsdWRlX2RpcikKKyAgICAgICAgZW52WyJMREZMQUdTIl0gPSAiLUx7fSIuZm9ybWF0KHNlbGYubGliX2RpcikKKyAgICAgICAgIyBzZXQgcnBhdGgKKyAgICAgICAgZW52WyJMRF9SVU5fUEFUSCJdID0gc2VsZi5saWJfZGlyCisKKyAgICAgICAgbG9nLmluZm8oIlJlYnVpbGRpbmcgUHl0aG9uIG1vZHVsZXMiKQorICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsICJzZXR1cC5weSIsICJidWlsZCJdCisgICAgICAgIHNlbGYuX3N1YnByb2Nlc3NfY2FsbChjbWQsIGVudj1lbnYpCisgICAgICAgIHNlbGYuY2hlY2tfaW1wb3J0cygpCisKKyAgICBkZWYgY2hlY2tfaW1wb3J0cyhzZWxmKToKKyAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAiLWMiLCAiaW1wb3J0IF9zc2w7IGltcG9ydCBfaGFzaGxpYiJdCisgICAgICAgIHNlbGYuX3N1YnByb2Nlc3NfY2FsbChjbWQpCisKKyAgICBkZWYgY2hlY2tfcHlzc2woc2VsZik6CisgICAgICAgIHZlcnNpb24gPSBzZWxmLnB5c3NsX3ZlcnNpb24KKyAgICAgICAgaWYgc2VsZi52ZXJzaW9uIG5vdCBpbiB2ZXJzaW9uOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcih2ZXJzaW9uKQorCisgICAgZGVmIHJ1bl9weXRob25fdGVzdHMoc2VsZiwgdGVzdHMsIG5ldHdvcms9VHJ1ZSk6CisgICAgICAgIGlmIG5vdCB0ZXN0czoKKyAgICAgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgJ0xpYi90ZXN0L3NzbHRlc3RzLnB5JywgJy1qMCddCisgICAgICAgIGVsaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAzKToKKyAgICAgICAgICAgIGNtZCA9IFtzeXMuZXhlY3V0YWJsZSwgJy1tJywgJ3Rlc3QucmVncnRlc3QnXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCAnLW0nLCAndGVzdCcsICctajAnXQorICAgICAgICBpZiBuZXR3b3JrOgorICAgICAgICAgICAgY21kLmV4dGVuZChbJy11JywgJ25ldHdvcmsnLCAnLXUnLCAndXJsZmV0Y2gnXSkKKyAgICAgICAgY21kLmV4dGVuZChbJy13JywgJy1yJ10pCisgICAgICAgIGNtZC5leHRlbmQodGVzdHMpCisgICAgICAgIHNlbGYuX3N1YnByb2Nlc3NfY2FsbChjbWQsIHN0ZG91dD1Ob25lKQorCisKK2NsYXNzIEJ1aWxkT3BlblNTTChBYnN0cmFjdEJ1aWxkZXIpOgorICAgIGxpYnJhcnkgPSAiT3BlblNTTCIKKyAgICB1cmxfdGVtcGxhdGUgPSAiaHR0cHM6Ly93d3cub3BlbnNzbC5vcmcvc291cmNlL29wZW5zc2wte30udGFyLmd6IgorICAgIHNyY190ZW1wbGF0ZSA9ICJvcGVuc3NsLXt9LnRhci5neiIKKyAgICBidWlsZF90ZW1wbGF0ZSA9ICJvcGVuc3NsLXt9IgorCisKK2NsYXNzIEJ1aWxkTGlicmVTU0woQWJzdHJhY3RCdWlsZGVyKToKKyAgICBsaWJyYXJ5ID0gIkxpYnJlU1NMIgorICAgIHVybF90ZW1wbGF0ZSA9ICgKKyAgICAgICAgImh0dHBzOi8vZnRwLm9wZW5ic2Qub3JnL3B1Yi9PcGVuQlNEL0xpYnJlU1NML2xpYnJlc3NsLXt9LnRhci5neiIpCisgICAgc3JjX3RlbXBsYXRlID0gImxpYnJlc3NsLXt9LnRhci5neiIKKyAgICBidWlsZF90ZW1wbGF0ZSA9ICJsaWJyZXNzbC17fSIKKworCitkZWYgY29uZmlndXJlX21ha2UoKToKKyAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoJ01ha2VmaWxlJyk6CisgICAgICAgIGxvZy5pbmZvKCdSdW5uaW5nIC4vY29uZmlndXJlJykKKyAgICAgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFsKKyAgICAgICAgICAgICcuL2NvbmZpZ3VyZScsICctLWNvbmZpZy1jYWNoZScsICctLXF1aWV0JywKKyAgICAgICAgICAgICctLXdpdGgtcHlkZWJ1ZycKKyAgICAgICAgXSkKKworICAgIGxvZy5pbmZvKCdSdW5uaW5nIG1ha2UnKQorICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbJ21ha2UnLCAnLS1xdWlldCddKQorCisKK2RlZiBtYWluKCk6CisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBpZiBub3QgYXJncy5vcGVuc3NsIGFuZCBub3QgYXJncy5saWJyZXNzbDoKKyAgICAgICAgYXJncy5vcGVuc3NsID0gbGlzdChPUEVOU1NMX1JFQ0VOVF9WRVJTSU9OUykKKyAgICAgICAgYXJncy5saWJyZXNzbCA9IGxpc3QoTElCUkVTU0xfUkVDRU5UX1ZFUlNJT05TKQorICAgICAgICBpZiBub3QgYXJncy5kaXNhYmxlX2FuY2llbnQ6CisgICAgICAgICAgICBhcmdzLm9wZW5zc2wuZXh0ZW5kKE9QRU5TU0xfT0xEX1ZFUlNJT05TKQorICAgICAgICAgICAgYXJncy5saWJyZXNzbC5leHRlbmQoTElCUkVTU0xfT0xEX1ZFUlNJT05TKQorCisgICAgbG9nZ2luZy5iYXNpY0NvbmZpZygKKyAgICAgICAgbGV2ZWw9bG9nZ2luZy5ERUJVRyBpZiBhcmdzLmRlYnVnIGVsc2UgbG9nZ2luZy5JTkZPLAorICAgICAgICBmb3JtYXQ9IioqKiAlKGxldmVsbmFtZSlzICUobWVzc2FnZSlzIgorICAgICkKKworICAgIHN0YXJ0ID0gZGF0ZXRpbWUubm93KCkKKworICAgIGZvciBuYW1lIGluIFsncHl0aG9uJywgJ3NldHVwLnB5JywgJ01vZHVsZXMvX3NzbC5jJ106CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShuYW1lKToKKyAgICAgICAgICAgIHBhcnNlci5lcnJvcigKKyAgICAgICAgICAgICAgICAiTXVzdCBiZSBleGVjdXRlZCBmcm9tIENQeXRob24gYnVpbGQgZGlyIgorICAgICAgICAgICAgKQorICAgIGlmIG5vdCBvcy5wYXRoLnNhbWVmaWxlKCdweXRob24nLCBzeXMuZXhlY3V0YWJsZSk6CisgICAgICAgIHBhcnNlci5lcnJvcigKKyAgICAgICAgICAgICJNdXN0IGJlIGV4ZWN1dGVkIHdpdGggLi9weXRob24gZnJvbSBDUHl0aG9uIGJ1aWxkIGRpciIKKyAgICAgICAgKQorCisgICAgIyBjaGVjayBmb3IgY29uZmlndXJlIGFuZCBydW4gbWFrZQorICAgIGNvbmZpZ3VyZV9tYWtlKCkKKworICAgICMgZG93bmxvYWQgYW5kIHJlZ2lzdGVyIGJ1aWxkZXIKKyAgICBidWlsZHMgPSBbXQorCisgICAgZm9yIHZlcnNpb24gaW4gYXJncy5vcGVuc3NsOgorICAgICAgICBidWlsZCA9IEJ1aWxkT3BlblNTTCh2ZXJzaW9uKQorICAgICAgICBidWlsZC5pbnN0YWxsKCkKKyAgICAgICAgYnVpbGRzLmFwcGVuZChidWlsZCkKKworICAgIGZvciB2ZXJzaW9uIGluIGFyZ3MubGlicmVzc2w6CisgICAgICAgIGJ1aWxkID0gQnVpbGRMaWJyZVNTTCh2ZXJzaW9uKQorICAgICAgICBidWlsZC5pbnN0YWxsKCkKKyAgICAgICAgYnVpbGRzLmFwcGVuZChidWlsZCkKKworICAgIGZvciBidWlsZCBpbiBidWlsZHM6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGJ1aWxkLnJlY29tcGlsZV9weW1vZHMoKQorICAgICAgICAgICAgYnVpbGQuY2hlY2tfcHlzc2woKQorICAgICAgICAgICAgaWYgbm90IGFyZ3MuY29tcGlsZV9vbmx5OgorICAgICAgICAgICAgICAgIGJ1aWxkLnJ1bl9weXRob25fdGVzdHMoCisgICAgICAgICAgICAgICAgICAgIHRlc3RzPWFyZ3MudGVzdHMsCisgICAgICAgICAgICAgICAgICAgIG5ldHdvcms9YXJncy5uZXR3b3JrLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgbG9nLmV4Y2VwdGlvbigiJXMgZmFpbGVkIiwgYnVpbGQpCisgICAgICAgICAgICBwcmludCgie30gZmFpbGVkOiB7fSIuZm9ybWF0KGJ1aWxkLCBlKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICAgICAgICAgc3lzLmV4aXQoMikKKworICAgIHByaW50KCJcbnt9IGZpbmlzaGVkIGluIHt9Ii5mb3JtYXQoCisgICAgICAgICJUZXN0cyIgaWYgbm90IGFyZ3MuY29tcGlsZV9vbmx5IGVsc2UgIkJ1aWxkcyIsCisgICAgICAgIGRhdGV0aW1lLm5vdygpIC0gc3RhcnQKKyAgICApKQorICAgIHByaW50KCdQeXRob246ICcsIHN5cy52ZXJzaW9uKQorICAgIGlmIGFyZ3MuY29tcGlsZV9vbmx5OgorICAgICAgICBwcmludCgnQnVpbGQgb25seScpCisgICAgZWxpZiBhcmdzLnRlc3RzOgorICAgICAgICBwcmludCgnRXhlY3V0ZWQgVGVzdHM6JywgJyAnLmpvaW4oYXJncy50ZXN0cykpCisgICAgZWxzZToKKyAgICAgICAgcHJpbnQoJ0V4ZWN1dGVkIGFsbCBTU0wgdGVzdHMuJykKKworICAgIHByaW50KCdPcGVuU1NMIC8gTGlicmVTU0wgdmVyc2lvbnM6JykKKyAgICBmb3IgYnVpbGQgaW4gYnVpbGRzOgorICAgICAgICBwcmludCgiICAgICogezAubGlicmFyeX0gezAudmVyc2lvbn0iLmZvcm1hdChidWlsZCkpCisKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5IGIvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjN2E5NjcuLjAwMDAwMDAKLS0tIGEvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotIy4vcHl0aG9uCi0iIiJSdW4gUHl0aG9uIHRlc3RzIHdpdGggbXVsdGlwbGUgaW5zdGFsbGF0aW9ucyBvZiBPcGVuU1NMCi0KLVRoZSBzY3JpcHQKLQotICAoMSkgZG93bmxvYWRzIE9wZW5TU0wgdGFyIGJ1bmRsZQotICAoMikgZXh0cmFjdHMgaXQgdG8gLi4vb3BlbnNzbC9zcmMvb3BlbnNzbC1WRVJTSU9OLwotICAoMykgY29tcGlsZXMgT3BlblNTTAotICAoNCkgaW5zdGFsbHMgT3BlblNTTCBpbnRvIC4uL29wZW5zc2wvVkVSU0lPTi8KLSAgKDUpIGZvcmNlcyBhIHJlY29tcGlsYXRpb24gb2YgUHl0aG9uIG1vZHVsZXMgdXNpbmcgdGhlCi0gICAgICBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMgZnJvbSAuLi9vcGVuc3NsL1ZFUlNJT04vCi0gICg2KSBydW5zIFB5dGhvbidzIHRlc3Qgc3VpdGUKLQotVGhlIHNjcmlwdCBtdXN0IGJlIHJ1biB3aXRoIFB5dGhvbidzIGJ1aWxkIGRpcmVjdG9yeSBhcyBjdXJyZW50IHdvcmtpbmcKLWRpcmVjdG9yeToKLQotICAgIC4vcHl0aG9uIFRvb2xzL3NzbC90ZXN0X211bHRpcGxlX3ZlcnNpb25zLnB5Ci0KLVRoZSBzY3JpcHQgdXNlcyBMRF9SVU5fUEFUSCwgTERfTElCUkFSWV9QQVRILCBDUFBGTEFHUyBhbmQgTERGTEFHUyB0byBiZW5kCi1zZWFyY2ggcGF0aHMgZm9yIGhlYWRlciBmaWxlcyBhbmQgc2hhcmVkIGxpYnJhcmllcy4gSXQncyBrbm93biB0byB3b3JrIG9uCi1MaW51eCB3aXRoIEdDQyA0LnguCi0KLShjKSAyMDEzIENocmlzdGlhbiBIZWltZXMgPGNocmlzdGlhbkBweXRob24ub3JnPgotIiIiCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgdGFyZmlsZQotaW1wb3J0IHNodXRpbAotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzeXMKLWZyb20gdXJsbGliIGltcG9ydCB1cmxvcGVuCi0KLWxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJtdWx0aXNzbCIpCi0KLU9QRU5TU0xfVkVSU0lPTlMgPSBbCi0gICAgIjAuOS43bSIsICIwLjkuOGkiLCAiMC45LjhsIiwgIjAuOS44bSIsICIwLjkuOHkiLCAiMS4wLjBrIiwgIjEuMC4xZSIKLV0KLUZVTExfVEVTVFMgPSBbCi0gICAgInRlc3RfYXN5bmNpbyIsICJ0ZXN0X2Z0cGxpYiIsICJ0ZXN0X2hhc2hsaWIiLCAidGVzdF9odHRwbGliIiwKLSAgICAidGVzdF9pbWFwbGliIiwgInRlc3Rfbm50cGxpYiIsICJ0ZXN0X3BvcGxpYiIsICJ0ZXN0X3NtdHBsaWIiLAotICAgICJ0ZXN0X3NtdHBuZXQiLCAidGVzdF91cmxsaWIyX2xvY2FsbmV0IiwgInRlc3RfdmVudiIKLV0KLU1JTklNQUxfVEVTVFMgPSBbInRlc3Rfc3NsIiwgInRlc3RfaGFzaGxpYiJdCi1DQURFRkFVTFQgPSBUcnVlCi1IRVJFID0gb3MucGF0aC5hYnNwYXRoKG9zLmdldGN3ZCgpKQotREVTVF9ESVIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKEhFUkUsIG9zLnBhcmRpciwgIm9wZW5zc2wiKSkKLQotCi1jbGFzcyBCdWlsZFNTTChvYmplY3QpOgotICAgIHVybF90ZW1wbGF0ZSA9ICJodHRwczovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC17fS50YXIuZ3oiCi0KLSAgICBtb2R1bGVfZmlsZXMgPSBbIk1vZHVsZXMvX3NzbC5jIiwKLSAgICAgICAgICAgICAgICAgICAgIk1vZHVsZXMvc29ja2V0bW9kdWxlLmMiLAotICAgICAgICAgICAgICAgICAgICAiTW9kdWxlcy9faGFzaG9wZW5zc2wuYyJdCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdmVyc2lvbiwgb3BlbnNzbF9jb21waWxlX2FyZ3M9KCksIGRlc3RkaXI9REVTVF9ESVIpOgotICAgICAgICBzZWxmLl9jaGVja19weXRob25fYnVpbGRkaXIoKQotICAgICAgICBzZWxmLnZlcnNpb24gPSB2ZXJzaW9uCi0gICAgICAgIHNlbGYub3BlbnNzbF9jb21waWxlX2FyZ3MgPSBvcGVuc3NsX2NvbXBpbGVfYXJncwotICAgICAgICAjIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkKLSAgICAgICAgc2VsZi5pbnN0YWxsX2RpciA9IG9zLnBhdGguam9pbihkZXN0ZGlyLCB2ZXJzaW9uKQotICAgICAgICAjIHNvdXJjZSBmaWxlCi0gICAgICAgIHNlbGYuc3JjX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZGVzdGRpciwgInNyYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wZW5zc2wte30udGFyLmd6Ii5mb3JtYXQodmVyc2lvbikpCi0gICAgICAgICMgYnVpbGQgZGlyZWN0b3J5IChyZW1vdmVkIGFmdGVyIGluc3RhbGwpCi0gICAgICAgIHNlbGYuYnVpbGRfZGlyID0gb3MucGF0aC5qb2luKGRlc3RkaXIsICJzcmMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib3BlbnNzbC17fSIuZm9ybWF0KHZlcnNpb24pKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG9wZW5zc2xfY2xpKHNlbGYpOgotICAgICAgICAiIiJvcGVuc3NsIENMSSBiaW5hcnkiIiIKLSAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihzZWxmLmluc3RhbGxfZGlyLCAiYmluIiwgIm9wZW5zc2wiKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG9wZW5zc2xfdmVyc2lvbihzZWxmKToKLSAgICAgICAgIiIib3V0cHV0IG9mICdiaW4vb3BlbnNzbCB2ZXJzaW9uJyIiIgotICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQotICAgICAgICBlbnZbIkxEX0xJQlJBUllfUEFUSCJdID0gc2VsZi5saWJfZGlyCi0gICAgICAgIGNtZCA9IFtzZWxmLm9wZW5zc2xfY2xpLCAidmVyc2lvbiJdCi0gICAgICAgIHJldHVybiBzZWxmLl9zdWJwcm9jZXNzX291dHB1dChjbWQsIGVudj1lbnYpCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgcHlzc2xfdmVyc2lvbihzZWxmKToKLSAgICAgICAgIiIiVmFsdWUgb2Ygc3NsLk9QRU5TU0xfVkVSU0lPTiIiIgotICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQotICAgICAgICBlbnZbIkxEX0xJQlJBUllfUEFUSCJdID0gc2VsZi5saWJfZGlyCi0gICAgICAgIGNtZCA9IFsiLi9weXRob24iLCAiLWMiLCAiaW1wb3J0IHNzbDsgcHJpbnQoc3NsLk9QRU5TU0xfVkVSU0lPTikiXQotICAgICAgICByZXR1cm4gc2VsZi5fc3VicHJvY2Vzc19vdXRwdXQoY21kLCBlbnY9ZW52KQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGluY2x1ZGVfZGlyKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuaW5zdGFsbF9kaXIsICJpbmNsdWRlIikKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBsaWJfZGlyKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5qb2luKHNlbGYuaW5zdGFsbF9kaXIsICJsaWIiKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGhhc19vcGVuc3NsKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5pc2ZpbGUoc2VsZi5vcGVuc3NsX2NsaSkKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBoYXNfc3JjKHNlbGYpOgotICAgICAgICByZXR1cm4gb3MucGF0aC5pc2ZpbGUoc2VsZi5zcmNfZmlsZSkKLQotICAgIGRlZiBfc3VicHJvY2Vzc19jYWxsKHNlbGYsIGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCwgZW52PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgotICAgICAgICBsb2cuZGVidWcoIkNhbGwgJ3t9JyIuZm9ybWF0KCIgIi5qb2luKGNtZCkpKQotICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19jYWxsKGNtZCwgc3Rkb3V0PXN0ZG91dCwgZW52PWVudiwgKiprd2FyZ3MpCi0KLSAgICBkZWYgX3N1YnByb2Nlc3Nfb3V0cHV0KHNlbGYsIGNtZCwgZW52PU5vbmUsICoqa3dhcmdzKToKLSAgICAgICAgbG9nLmRlYnVnKCJDYWxsICd7fSciLmZvcm1hdCgiICIuam9pbihjbWQpKSkKLSAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBlbnY9ZW52KQotICAgICAgICByZXR1cm4gb3V0LnN0cmlwKCkuZGVjb2RlKCJ1dGYtOCIpCi0KLSAgICBkZWYgX2NoZWNrX3B5dGhvbl9idWlsZGRpcihzZWxmKToKLSAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKCJweXRob24iKSBvciBub3Qgb3MucGF0aC5pc2ZpbGUoInNldHVwLnB5Iik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJTY3JpcHQgbXVzdCBiZSBydW4gaW4gUHl0aG9uIGJ1aWxkIGRpcmVjdG9yeSIpCi0KLSAgICBkZWYgX2Rvd25sb2FkX29wZW5zc2woc2VsZik6Ci0gICAgICAgICIiIkRvd25sb2FkIE9wZW5TU0wgc291cmNlIGRpc3QiIiIKLSAgICAgICAgc3JjX2RpciA9IG9zLnBhdGguZGlybmFtZShzZWxmLnNyY19maWxlKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihzcmNfZGlyKToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKHNyY19kaXIpCi0gICAgICAgIHVybCA9IHNlbGYudXJsX3RlbXBsYXRlLmZvcm1hdChzZWxmLnZlcnNpb24pCi0gICAgICAgIGxvZy5pbmZvKCJEb3dubG9hZGluZyBPcGVuU1NMIGZyb20ge30iLmZvcm1hdCh1cmwpKQotICAgICAgICByZXEgPSB1cmxvcGVuKHVybCwgY2FkZWZhdWx0PUNBREVGQVVMVCkKLSAgICAgICAgIyBLSVNTLCByZWFkIGFsbCwgd3JpdGUgYWxsCi0gICAgICAgIGRhdGEgPSByZXEucmVhZCgpCi0gICAgICAgIGxvZy5pbmZvKCJTdG9yaW5nIHt9Ii5mb3JtYXQoc2VsZi5zcmNfZmlsZSkpCi0gICAgICAgIHdpdGggb3BlbihzZWxmLnNyY19maWxlLCAid2IiKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShkYXRhKQotCi0gICAgZGVmIF91bnBhY2tfb3BlbnNzbChzZWxmKToKLSAgICAgICAgIiIiVW5wYWNrIHRhci5neiBidW5kbGUiIiIKLSAgICAgICAgIyBjbGVhbnVwCi0gICAgICAgIGlmIG9zLnBhdGguaXNkaXIoc2VsZi5idWlsZF9kaXIpOgotICAgICAgICAgICAgc2h1dGlsLnJtdHJlZShzZWxmLmJ1aWxkX2RpcikKLSAgICAgICAgb3MubWFrZWRpcnMoc2VsZi5idWlsZF9kaXIpCi0KLSAgICAgICAgdGYgPSB0YXJmaWxlLm9wZW4oc2VsZi5zcmNfZmlsZSkKLSAgICAgICAgYmFzZSA9ICJvcGVuc3NsLXt9LyIuZm9ybWF0KHNlbGYudmVyc2lvbikKLSAgICAgICAgIyBmb3JjZSBleHRyYWN0aW9uIGludG8gYnVpbGQgZGlyCi0gICAgICAgIG1lbWJlcnMgPSB0Zi5nZXRtZW1iZXJzKCkKLSAgICAgICAgZm9yIG1lbWJlciBpbiBtZW1iZXJzOgotICAgICAgICAgICAgaWYgbm90IG1lbWJlci5uYW1lLnN0YXJ0c3dpdGgoYmFzZSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtZW1iZXIubmFtZSkKLSAgICAgICAgICAgIG1lbWJlci5uYW1lID0gbWVtYmVyLm5hbWVbbGVuKGJhc2UpOl0KLSAgICAgICAgbG9nLmluZm8oIlVucGFja2luZyBmaWxlcyB0byB7fSIuZm9ybWF0KHNlbGYuYnVpbGRfZGlyKSkKLSAgICAgICAgdGYuZXh0cmFjdGFsbChzZWxmLmJ1aWxkX2RpciwgbWVtYmVycykKLQotICAgIGRlZiBfYnVpbGRfb3BlbnNzbChzZWxmKToKLSAgICAgICAgIiIiTm93IGJ1aWxkIG9wZW5zc2wiIiIKLSAgICAgICAgbG9nLmluZm8oIlJ1bm5pbmcgYnVpbGQgaW4ge30iLmZvcm1hdChzZWxmLmluc3RhbGxfZGlyKSkKLSAgICAgICAgY3dkID0gc2VsZi5idWlsZF9kaXIKLSAgICAgICAgY21kID0gWyIuL2NvbmZpZyIsICJzaGFyZWQiLCAiLS1wcmVmaXg9e30iLmZvcm1hdChzZWxmLmluc3RhbGxfZGlyKV0KLSAgICAgICAgY21kLmV4dGVuZChzZWxmLm9wZW5zc2xfY29tcGlsZV9hcmdzKQotICAgICAgICBzZWxmLl9zdWJwcm9jZXNzX2NhbGwoY21kLCBjd2Q9Y3dkKQotICAgICAgICBzZWxmLl9zdWJwcm9jZXNzX2NhbGwoWyJtYWtlIl0sIGN3ZD1jd2QpCi0KLSAgICBkZWYgX2luc3RhbGxfb3BlbnNzbChzZWxmLCByZW1vdmU9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuX3N1YnByb2Nlc3NfY2FsbChbIm1ha2UiLCAiaW5zdGFsbCJdLCBjd2Q9c2VsZi5idWlsZF9kaXIpCi0gICAgICAgIGlmIHJlbW92ZToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5idWlsZF9kaXIpCi0KLSAgICBkZWYgaW5zdGFsbF9vcGVuc3NsKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5oYXNfb3BlbnNzbDoKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmhhc19zcmM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZG93bmxvYWRfb3BlbnNzbCgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiQWxyZWFkeSBoYXMgc3JjIHt9Ii5mb3JtYXQoc2VsZi5zcmNfZmlsZSkpCi0gICAgICAgICAgICBzZWxmLl91bnBhY2tfb3BlbnNzbCgpCi0gICAgICAgICAgICBzZWxmLl9idWlsZF9vcGVuc3NsKCkKLSAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfb3BlbnNzbCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2cuaW5mbygiQWxyZWFkeSBoYXMgaW5zdGFsbGF0aW9uIHt9Ii5mb3JtYXQoc2VsZi5pbnN0YWxsX2RpcikpCi0gICAgICAgICMgdmFsaWRhdGUgaW5zdGFsbGF0aW9uCi0gICAgICAgIHZlcnNpb24gPSBzZWxmLm9wZW5zc2xfdmVyc2lvbgotICAgICAgICBpZiBzZWxmLnZlcnNpb24gbm90IGluIHZlcnNpb246Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHZlcnNpb24pCi0KLSAgICBkZWYgdG91Y2hfcHltb2RzKHNlbGYpOgotICAgICAgICAjIGZvcmNlIGEgcmVidWlsZCBvZiBhbGwgbW9kdWxlcyB0aGF0IHVzZSBPcGVuU1NMIEFQSXMKLSAgICAgICAgZm9yIGZuYW1lIGluIHNlbGYubW9kdWxlX2ZpbGVzOgotICAgICAgICAgICAgb3MudXRpbWUoZm5hbWUpCi0KLSAgICBkZWYgcmVjb21waWxlX3B5bW9kcyhzZWxmKToKLSAgICAgICAgbG9nLmluZm8oIlVzaW5nIE9wZW5TU0wgYnVpbGQgZnJvbSB7fSIuZm9ybWF0KHNlbGYuYnVpbGRfZGlyKSkKLSAgICAgICAgIyBvdmVyd3JpdGUgaGVhZGVyIGFuZCBsaWJyYXJ5IHNlYXJjaCBwYXRocwotICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQotICAgICAgICBlbnZbIkNQUEZMQUdTIl0gPSAiLUl7fSIuZm9ybWF0KHNlbGYuaW5jbHVkZV9kaXIpCi0gICAgICAgIGVudlsiTERGTEFHUyJdID0gIi1Me30iLmZvcm1hdChzZWxmLmxpYl9kaXIpCi0gICAgICAgICMgc2V0IHJwYXRoCi0gICAgICAgIGVudlsiTERfUlVOX1BBVEgiXSA9IHNlbGYubGliX2RpcgotCi0gICAgICAgIGxvZy5pbmZvKCJSZWJ1aWxkaW5nIFB5dGhvbiBtb2R1bGVzIikKLSAgICAgICAgc2VsZi50b3VjaF9weW1vZHMoKQotICAgICAgICBjbWQgPSBbIi4vcHl0aG9uIiwgInNldHVwLnB5IiwgImJ1aWxkIl0KLSAgICAgICAgc2VsZi5fc3VicHJvY2Vzc19jYWxsKGNtZCwgZW52PWVudikKLQotICAgIGRlZiBjaGVja19weXNzbChzZWxmKToKLSAgICAgICAgdmVyc2lvbiA9IHNlbGYucHlzc2xfdmVyc2lvbgotICAgICAgICBpZiBzZWxmLnZlcnNpb24gbm90IGluIHZlcnNpb246Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHZlcnNpb24pCi0KLSAgICBkZWYgcnVuX3B5dGVzdHMoc2VsZiwgKmFyZ3MpOgotICAgICAgICBjbWQgPSBbIi4vcHl0aG9uIiwgIi1tIiwgInRlc3QiXQotICAgICAgICBjbWQuZXh0ZW5kKGFyZ3MpCi0gICAgICAgIHNlbGYuX3N1YnByb2Nlc3NfY2FsbChjbWQsIHN0ZG91dD1Ob25lKQotCi0gICAgZGVmIHJ1bl9weXRob25fdGVzdHMoc2VsZiwgKmFyZ3MpOgotICAgICAgICBzZWxmLnJlY29tcGlsZV9weW1vZHMoKQotICAgICAgICBzZWxmLmNoZWNrX3B5c3NsKCkKLSAgICAgICAgc2VsZi5ydW5fcHl0ZXN0cygqYXJncykKLQotCi1kZWYgbWFpbigqYXJncyk6Ci0gICAgYnVpbGRlcnMgPSBbXQotICAgIGZvciB2ZXJzaW9uIGluIE9QRU5TU0xfVkVSU0lPTlM6Ci0gICAgICAgIGlmIHZlcnNpb24gaW4gKCIwLjkuOGkiLCAiMC45LjhsIik6Ci0gICAgICAgICAgICBvcGVuc3NsX2NvbXBpbGVfYXJncyA9ICgibm8tYXNtIiwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcGVuc3NsX2NvbXBpbGVfYXJncyA9ICgpCi0gICAgICAgIGJ1aWxkZXIgPSBCdWlsZFNTTCh2ZXJzaW9uLCBvcGVuc3NsX2NvbXBpbGVfYXJncykKLSAgICAgICAgYnVpbGRlci5pbnN0YWxsX29wZW5zc2woKQotICAgICAgICBidWlsZGVycy5hcHBlbmQoYnVpbGRlcikKLQotICAgIGZvciBidWlsZGVyIGluIGJ1aWxkZXJzOgotICAgICAgICBidWlsZGVyLnJ1bl9weXRob25fdGVzdHMoKmFyZ3MpCi0gICAgIyBmaW5hbCB0b3VjaAotICAgIGJ1aWxkZXIudG91Y2hfcHltb2RzKCkKLQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZPLAotICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PSIqKiogJShsZXZlbG5hbWUpcyAlKG1lc3NhZ2UpcyIpCi0gICAgYXJncyA9IHN5cy5hcmd2WzE6XQotICAgIGlmIG5vdCBhcmdzOgotICAgICAgICBhcmdzID0gWyItdW5ldHdvcmsiLCAiLXYiXQotICAgICAgICBhcmdzLmV4dGVuZChGVUxMX1RFU1RTKQotICAgIG1haW4oKmFyZ3MpCmRpZmYgLS1naXQgYS9Ub29scy91bmljb2RlL2dlbndpbmNvZGVjcy5iYXQgYi9Ub29scy91bmljb2RlL2dlbndpbmNvZGVjcy5iYXQKaW5kZXggNmE2YTY3MS4uMjIyOGQ4OSAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9nZW53aW5jb2RlY3MuYmF0CisrKyBiL1Rvb2xzL3VuaWNvZGUvZ2Vud2luY29kZWNzLmJhdApAQCAtMSw3ICsxLDcgQEAKLUByZW0gUmVjcmVhdGUgc29tZSBweXRob24gY2hhcm1hcCBjb2RlY3MgZnJvbSB0aGUgV2luZG93cyBmdW5jdGlvbg0KLUByZW0gTXVsdGlCeXRlVG9XaWRlQ2hhci4NCi0NCi1AY2QgL2QgJX5kcDANCi1AbWtkaXIgYnVpbGQNCi1AcmVtIEFyYWJpYyBET1MgY29kZSBwYWdlDQotYzpccHl0aG9uMjZccHl0aG9uIGdlbndpbmNvZGVjLnB5IDcyMCA+IGJ1aWxkL2NwNzIwLnB5DQorQHJlbSBSZWNyZWF0ZSBzb21lIHB5dGhvbiBjaGFybWFwIGNvZGVjcyBmcm9tIHRoZSBXaW5kb3dzIGZ1bmN0aW9uCitAcmVtIE11bHRpQnl0ZVRvV2lkZUNoYXIuCisKK0BjZCAvZCAlfmRwMAorQG1rZGlyIGJ1aWxkCitAcmVtIEFyYWJpYyBET1MgY29kZSBwYWdlCitjOlxweXRob24yNlxweXRob24gZ2Vud2luY29kZWMucHkgNzIwID4gYnVpbGQvY3A3MjAucHkKZGlmZiAtLWdpdCBhL2FjbG9jYWwubTQgYi9hY2xvY2FsLm00CmluZGV4IDJhNzQ1ZTUuLjVlMjk0NDkgMTAwNjQ0Ci0tLSBhL2FjbG9jYWwubTQKKysrIGIvYWNsb2NhbC5tNApAQCAtMSw2ICsxLDYgQEAKLSMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYWNsb2NhbCAxLjE1IC0qLSBBdXRvY29uZiAtKi0KKyMgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgYWNsb2NhbCAxLjE1LjEgLSotIEF1dG9jb25mIC0qLQogCi0jIENvcHlyaWdodCAoQykgMTk5Ni0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDE5OTYtMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgogIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LApkaWZmIC0tZ2l0IGEvYW5kcm9pZF9hcm0vcHljb25maWcvcHljb25maWcuaCBiL2FuZHJvaWRfYXJtL3B5Y29uZmlnL3B5Y29uZmlnLmgKaW5kZXggNjhiMmU0Mi4uNGEzNjU0ZiAxMDA2NDQKLS0tIGEvYW5kcm9pZF9hcm0vcHljb25maWcvcHljb25maWcuaAorKysgYi9hbmRyb2lkX2FybS9weWNvbmZpZy9weWNvbmZpZy5oCkBAIC05Miw2ICs5MiwxMiBAQAogLyogRGVmaW5lIGlmIHBvbGwoKSBzZXRzIGVycm5vIG9uIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4gKi8KIC8qICN1bmRlZiBIQVZFX0JST0tFTl9QT0xMICovCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3JhbmRvbS5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9TWVNfUkFORE9NX0ggMQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNtYWNyb3MuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1lTX1NZU01BQ1JPU19IIDEKKwogLyogRGVmaW5lIGlmIHRoZSBQb3NpeCBzZW1hcGhvcmVzIGRvIG5vdCB3b3JrIG9uIHlvdXIgc3lzdGVtICovCiAvKiAjdW5kZWYgSEFWRV9CUk9LRU5fUE9TSVhfU0VNQVBIT1JFUyAqLwogCkBAIC00NjgsNyArNDc0LDcgQEAKICNkZWZpbmUgSEFWRV9NRU1PUllfSCAxCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtmaWZvJyBmdW5jdGlvbi4gKi8KLS8qICN1bmRlZiBIQVZFX01LRklGTyAqLworI2RlZmluZSBIQVZFX01LRklGTyAgMQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rbm9kJyBmdW5jdGlvbi4gKi8KICNkZWZpbmUgSEFWRV9NS05PRCAxCmRpZmYgLS1naXQgYS9hbmRyb2lkX2FybTY0L3B5Y29uZmlnL3B5Y29uZmlnLmggYi9hbmRyb2lkX2FybTY0L3B5Y29uZmlnL3B5Y29uZmlnLmgKaW5kZXggYjc2NTljYy4uNDlhNDUwMCAxMDA2NDQKLS0tIGEvYW5kcm9pZF9hcm02NC9weWNvbmZpZy9weWNvbmZpZy5oCisrKyBiL2FuZHJvaWRfYXJtNjQvcHljb25maWcvcHljb25maWcuaApAQCAtOTIsNiArOTIsMTIgQEAKIC8qIERlZmluZSBpZiBwb2xsKCkgc2V0cyBlcnJubyBvbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuICovCiAvKiAjdW5kZWYgSEFWRV9CUk9LRU5fUE9MTCAqLwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9yYW5kb20uaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1lTX1JBTkRPTV9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3lzbWFjcm9zLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU19TWVNNQUNST1NfSCAxCisKIC8qIERlZmluZSBpZiB0aGUgUG9zaXggc2VtYXBob3JlcyBkbyBub3Qgd29yayBvbiB5b3VyIHN5c3RlbSAqLwogLyogI3VuZGVmIEhBVkVfQlJPS0VOX1BPU0lYX1NFTUFQSE9SRVMgKi8KIApAQCAtNDY4LDcgKzQ3NCw3IEBACiAjZGVmaW5lIEhBVkVfTUVNT1JZX0ggMQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rZmlmbycgZnVuY3Rpb24uICovCi0vKiAjdW5kZWYgSEFWRV9NS0ZJRk8gKi8KKyNkZWZpbmUgSEFWRV9NS0ZJRk8gMQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rbm9kJyBmdW5jdGlvbi4gKi8KICNkZWZpbmUgSEFWRV9NS05PRCAxCmRpZmYgLS1naXQgYS9hbmRyb2lkX3g4Ni9weWNvbmZpZy9weWNvbmZpZy5oIGIvYW5kcm9pZF94ODYvcHljb25maWcvcHljb25maWcuaAppbmRleCBhYzIyNDc0Li4xZWZhODU0IDEwMDY0NAotLS0gYS9hbmRyb2lkX3g4Ni9weWNvbmZpZy9weWNvbmZpZy5oCisrKyBiL2FuZHJvaWRfeDg2L3B5Y29uZmlnL3B5Y29uZmlnLmgKQEAgLTM1LDcgKzM1LDcgQEAKIC8qICN1bmRlZiBET1VCTEVfSVNfTElUVExFX0VORElBTl9JRUVFNzU0ICovCiAKIC8qIERlZmluZSBpZiAtLWVuYWJsZS1pcHY2IGlzIHNwZWNpZmllZCAqLwotLyogI3VuZGVmIEVOQUJMRV9JUFY2ICovCisjZGVmaW5lIEVOQUJMRV9JUFY2CiAKIC8qIERlZmluZSBpZiBmbG9jayBuZWVkcyB0byBiZSBsaW5rZWQgd2l0aCBic2QgbGlicmFyeS4gKi8KIC8qICN1bmRlZiBGTE9DS19ORUVEU19MSUJCU0QgKi8KQEAgLTkyLDYgKzkyLDEyIEBACiAvKiBEZWZpbmUgaWYgcG9sbCgpIHNldHMgZXJybm8gb24gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3JzLiAqLwogLyogI3VuZGVmIEhBVkVfQlJPS0VOX1BPTEwgKi8KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvcmFuZG9tLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU19SQU5ET01fSCAxCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c21hY3Jvcy5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9TWVNfU1lTTUFDUk9TX0ggMQorCiAvKiBEZWZpbmUgaWYgdGhlIFBvc2l4IHNlbWFwaG9yZXMgZG8gbm90IHdvcmsgb24geW91ciBzeXN0ZW0gKi8KIC8qICN1bmRlZiBIQVZFX0JST0tFTl9QT1NJWF9TRU1BUEhPUkVTICovCiAKQEAgLTI3Myw3ICsyNzksNyBAQAogLyogI2RlZmluZSBIQVZFX0dDQ19BU01fRk9SX1g4NyAxICovCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgZ2V0YWRkcmluZm8gZnVuY3Rpb24uICovCi0vKiAjdW5kZWYgSEFWRV9HRVRBRERSSU5GTyAqLworI2RlZmluZSBIQVZFX0dFVEFERFJJTkZPIDEKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRjd2QnIGZ1bmN0aW9uLiAqLwogI2RlZmluZSBIQVZFX0dFVENXRCAxCkBAIC00NjgsNyArNDc0LDcgQEAKICNkZWZpbmUgSEFWRV9NRU1PUllfSCAxCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtmaWZvJyBmdW5jdGlvbi4gKi8KLS8qICN1bmRlZiBIQVZFX01LRklGTyAqLworI2RlZmluZSBIQVZFX01LRklGTyAxCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWtub2QnIGZ1bmN0aW9uLiAqLwogI2RlZmluZSBIQVZFX01LTk9EIDEKZGlmZiAtLWdpdCBhL2FuZHJvaWRfeDg2XzY0L3B5Y29uZmlnL3B5Y29uZmlnLmggYi9hbmRyb2lkX3g4Nl82NC9weWNvbmZpZy9weWNvbmZpZy5oCmluZGV4IDlkNTkyMDAuLjQ5YTQ1MDAgMTAwNjQ0Ci0tLSBhL2FuZHJvaWRfeDg2XzY0L3B5Y29uZmlnL3B5Y29uZmlnLmgKKysrIGIvYW5kcm9pZF94ODZfNjQvcHljb25maWcvcHljb25maWcuaApAQCAtMzUsNyArMzUsNyBAQAogLyogI3VuZGVmIERPVUJMRV9JU19MSVRUTEVfRU5ESUFOX0lFRUU3NTQgKi8KIAogLyogRGVmaW5lIGlmIC0tZW5hYmxlLWlwdjYgaXMgc3BlY2lmaWVkICovCi0vKiAjdW5kZWYgRU5BQkxFX0lQVjYgKi8KKyNkZWZpbmUgRU5BQkxFX0lQVjYKIAogLyogRGVmaW5lIGlmIGZsb2NrIG5lZWRzIHRvIGJlIGxpbmtlZCB3aXRoIGJzZCBsaWJyYXJ5LiAqLwogLyogI3VuZGVmIEZMT0NLX05FRURTX0xJQkJTRCAqLwpAQCAtOTIsNiArOTIsMTIgQEAKIC8qIERlZmluZSBpZiBwb2xsKCkgc2V0cyBlcnJubyBvbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuICovCiAvKiAjdW5kZWYgSEFWRV9CUk9LRU5fUE9MTCAqLwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9yYW5kb20uaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1lTX1JBTkRPTV9IIDEKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3lzbWFjcm9zLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX1NZU19TWVNNQUNST1NfSCAxCisKIC8qIERlZmluZSBpZiB0aGUgUG9zaXggc2VtYXBob3JlcyBkbyBub3Qgd29yayBvbiB5b3VyIHN5c3RlbSAqLwogLyogI3VuZGVmIEhBVkVfQlJPS0VOX1BPU0lYX1NFTUFQSE9SRVMgKi8KIApAQCAtMjczLDcgKzI3OSw3IEBACiAvKiAjZGVmaW5lIEhBVkVfR0NDX0FTTV9GT1JfWDg3IDEgKi8KIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBnZXRhZGRyaW5mbyBmdW5jdGlvbi4gKi8KLS8qICN1bmRlZiBIQVZFX0dFVEFERFJJTkZPICovCisjZGVmaW5lIEhBVkVfR0VUQUREUklORk8gMQogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGN3ZCcgZnVuY3Rpb24uICovCiAjZGVmaW5lIEhBVkVfR0VUQ1dEIDEKQEAgLTQ2OCw3ICs0NzQsNyBAQAogI2RlZmluZSBIQVZFX01FTU9SWV9IIDEKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta2ZpZm8nIGZ1bmN0aW9uLiAqLwotLyogI3VuZGVmIEhBVkVfTUtGSUZPICovCisjZGVmaW5lIEhBVkVfTUtGSUZPIDEKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBta25vZCcgZnVuY3Rpb24uICovCiAjZGVmaW5lIEhBVkVfTUtOT0QgMQpkaWZmIC0tZ2l0IGEvY29uZmlnLmd1ZXNzIGIvY29uZmlnLmd1ZXNzCmluZGV4IDJlOWFkN2YuLjIxOTM3MDIgMTAwNzU1Ci0tLSBhL2NvbmZpZy5ndWVzcworKysgYi9jb25maWcuZ3Vlc3MKQEAgLTEsOCArMSw4IEBACiAjISAvYmluL3NoCiAjIEF0dGVtcHQgdG8gZ3Vlc3MgYSBjYW5vbmljYWwgc3lzdGVtIG5hbWUuCi0jICAgQ29weXJpZ2h0IDE5OTItMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgMTk5Mi0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi10aW1lc3RhbXA9JzIwMTYtMTAtMDInCit0aW1lc3RhbXA9JzIwMTctMDUtMjcnCiAKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTUwLDcgKzUwLDcgQEAKIEdOVSBjb25maWcuZ3Vlc3MgKCR0aW1lc3RhbXApCiAKIE9yaWdpbmFsbHkgd3JpdHRlbiBieSBQZXIgQm90aG5lci4KLUNvcHlyaWdodCAxOTkyLTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitDb3B5cmlnaHQgMTk5Mi0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCiBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwogd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIgpAQCAtODM3LDEwICs4MzcsMTEgQEAKIAlVTkFNRV9QUk9DRVNTT1I9YC91c3IvYmluL3VuYW1lIC1wYAogCWNhc2UgJHtVTkFNRV9QUk9DRVNTT1J9IGluCiAJICAgIGFtZDY0KQotCQllY2hvIHg4Nl82NC11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgIDs7Ci0JICAgICopCi0JCWVjaG8gJHtVTkFNRV9QUk9DRVNTT1J9LXVua25vd24tZnJlZWJzZGBlY2hvICR7VU5BTUVfUkVMRUFTRX18c2VkIC1lICdzL1stKF0uKi8vJ2AgOzsKKwkJVU5BTUVfUFJPQ0VTU09SPXg4Nl82NCA7OworCSAgICBpMzg2KQorCQlVTkFNRV9QUk9DRVNTT1I9aTU4NiA7OwogCWVzYWMKKwllY2hvICR7VU5BTUVfUFJPQ0VTU09SfS11bmtub3duLWZyZWVic2RgZWNobyAke1VOQU1FX1JFTEVBU0V9fHNlZCAtZSAncy9bLShdLiovLydgCiAJZXhpdCA7OwogICAgIGkqOkNZR1dJTio6KikKIAllY2hvICR7VU5BTUVfTUFDSElORX0tcGMtY3lnd2luCkBAIC0xMzAzLDE0ICsxMzA0LDIxIEBACiAJaWYgdGVzdCBgZWNobyAiJFVOQU1FX1JFTEVBU0UiIHwgc2VkIC1lICdzL1wuLiovLydgIC1sZSAxMCA7IHRoZW4KIAkgICAgaWYgWyAiJENDX0ZPUl9CVUlMRCIgIT0gbm9fY29tcGlsZXJfZm91bmQgXTsgdGhlbgogCQlpZiAoZWNobyAnI2lmZGVmIF9fTFA2NF9fJzsgZWNobyBJU182NEJJVF9BUkNIOyBlY2hvICcjZW5kaWYnKSB8IFwKLQkJICAgIChDQ09QVFM9IiIgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8IFwKLQkJICAgIGdyZXAgSVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCisJCSAgICAgICAoQ0NPUFRTPSIiICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCisJCSAgICAgICBncmVwIElTXzY0QklUX0FSQ0ggPi9kZXYvbnVsbAogCQl0aGVuCiAJCSAgICBjYXNlICRVTkFNRV9QUk9DRVNTT1IgaW4KIAkJCWkzODYpIFVOQU1FX1BST0NFU1NPUj14ODZfNjQgOzsKIAkJCXBvd2VycGMpIFVOQU1FX1BST0NFU1NPUj1wb3dlcnBjNjQgOzsKIAkJICAgIGVzYWMKIAkJZmkKKwkJIyBPbiAxMC40LTEwLjYgb25lIG1pZ2h0IGNvbXBpbGUgZm9yIFBvd2VyUEMgdmlhIGdjYyAtYXJjaCBwcGMKKwkJaWYgKGVjaG8gJyNpZmRlZiBfX1BPV0VSUENfXyc7IGVjaG8gSVNfUFBDOyBlY2hvICcjZW5kaWYnKSB8IFwKKwkJICAgICAgIChDQ09QVFM9IiIgJENDX0ZPUl9CVUlMRCAtRSAtIDI+L2Rldi9udWxsKSB8IFwKKwkJICAgICAgIGdyZXAgSVNfUFBDID4vZGV2L251bGwKKwkJdGhlbgorCQkgICAgVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMKKwkJZmkKIAkgICAgZmkKIAllbGlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gaTM4NiA7IHRoZW4KIAkgICAgIyBBdm9pZCBleGVjdXRpbmcgY2Mgb24gT1MgWCAxMC45LCBhcyBpdCBzaGlwcyB3aXRoIGEgc3R1YgpAQCAtMTMzNCwxNSArMTM0MiwxOCBAQAogICAgICo6UU5YOio6NCopCiAJZWNobyBpMzg2LXBjLXFueAogCWV4aXQgOzsKLSAgICBORU8tPzpOT05TVE9QX0tFUk5FTDoqOiopCisgICAgTkVPLSo6Tk9OU1RPUF9LRVJORUw6KjoqKQogCWVjaG8gbmVvLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OwogICAgIE5TRS0qOk5PTlNUT1BfS0VSTkVMOio6KikKIAllY2hvIG5zZS10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQogCWV4aXQgOzsKLSAgICBOU1ItPzpOT05TVE9QX0tFUk5FTDoqOiopCisgICAgTlNSLSo6Tk9OU1RPUF9LRVJORUw6KjoqKQogCWVjaG8gbnNyLXRhbmRlbS1uc2ske1VOQU1FX1JFTEVBU0V9CiAJZXhpdCA7OworICAgIE5TWC0qOk5PTlNUT1BfS0VSTkVMOio6KikKKwllY2hvIG5zeC10YW5kZW0tbnNrJHtVTkFNRV9SRUxFQVNFfQorCWV4aXQgOzsKICAgICAqOk5vblN0b3AtVVg6KjoqKQogCWVjaG8gbWlwcy1jb21wYXEtbm9uc3RvcHV4CiAJZXhpdCA7OwpkaWZmIC0tZ2l0IGEvY29uZmlnLnN1YiBiL2NvbmZpZy5zdWIKaW5kZXggMzQ3OGMxZi4uNDBlYTVkZiAxMDA3NTUKLS0tIGEvY29uZmlnLnN1YgorKysgYi9jb25maWcuc3ViCkBAIC0xLDggKzEsOCBAQAogIyEgL2Jpbi9zaAogIyBDb25maWd1cmF0aW9uIHZhbGlkYXRpb24gc3Vicm91dGluZSBzY3JpcHQuCi0jICAgQ29weXJpZ2h0IDE5OTItMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgMTk5Mi0yMDE3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogCi10aW1lc3RhbXA9JzIwMTYtMTEtMTknCit0aW1lc3RhbXA9JzIwMTctMDQtMDInCiAKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKICMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTY3LDcgKzY3LDcgQEAKIHZlcnNpb249IlwKIEdOVSBjb25maWcuc3ViICgkdGltZXN0YW1wKQogCi1Db3B5cmlnaHQgMTk5Mi0yMDE2IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorQ29weXJpZ2h0IDE5OTItMjAxNyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KIAogVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKQEAgLTI2Myw3ICsyNjMsNyBAQAogCXwgZmlkbyB8IGZyMzAgfCBmcnYgfCBmdDMyIFwKIAl8IGg4MzAwIHwgaDg1MDAgfCBocHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCiAJfCBoZXhhZ29uIFwKLQl8IGkzNzAgfCBpODYwIHwgaTk2MCB8IGlhNjQgXAorCXwgaTM3MCB8IGk4NjAgfCBpOTYwIHwgaWExNiB8IGlhNjQgXAogCXwgaXAyayB8IGlxMjAwMCBcCiAJfCBrMW9tIFwKIAl8IGxlMzIgfCBsZTY0IFwKQEAgLTMxNSw2ICszMTUsNyBAQAogCXwgdWJpY29tMzIgXAogCXwgdjg1MCB8IHY4NTBlIHwgdjg1MGUxIHwgdjg1MGUyIHwgdjg1MGVzIHwgdjg1MGUydjMgXAogCXwgdmlzaXVtIFwKKwl8IHdhc20zMiBcCiAJfCB3ZTMyayBcCiAJfCB4ODYgfCB4YzE2eCB8IHhzdG9ybXkxNiB8IHh0ZW5zYSBcCiAJfCB6OGsgfCB6ODApCkBAIC0zODgsNyArMzg5LDcgQEAKIAl8IGg4MzAwLSogfCBoODUwMC0qIFwKIAl8IGhwcGEtKiB8IGhwcGExLlswMV0tKiB8IGhwcGEyLjAtKiB8IGhwcGEyLjBbbnddLSogfCBocHBhNjQtKiBcCiAJfCBoZXhhZ29uLSogXAotCXwgaSo4Ni0qIHwgaTg2MC0qIHwgaTk2MC0qIHwgaWE2NC0qIFwKKwl8IGkqODYtKiB8IGk4NjAtKiB8IGk5NjAtKiB8IGlhMTYtKiB8IGlhNjQtKiBcCiAJfCBpcDJrLSogfCBpcTIwMDAtKiBcCiAJfCBrMW9tLSogXAogCXwgbGUzMi0qIHwgbGU2NC0qIFwKQEAgLTQ0Niw2ICs0NDcsNyBAQAogCXwgdjg1MC0qIHwgdjg1MGUtKiB8IHY4NTBlMS0qIHwgdjg1MGVzLSogfCB2ODUwZTItKiB8IHY4NTBlMnYzLSogXAogCXwgdmF4LSogXAogCXwgdmlzaXVtLSogXAorCXwgd2FzbTMyLSogXAogCXwgd2UzMmstKiBcCiAJfCB4ODYtKiB8IHg4Nl82NC0qIHwgeGMxNngtKiB8IHhwczEwMC0qIFwKIAl8IHhzdG9ybXkxNi0qIHwgeHRlbnNhKi0qIFwKQEAgLTk0OCw2ICs5NTAsOSBAQAogCW5zci10YW5kZW0pCiAJCWJhc2ljX21hY2hpbmU9bnNyLXRhbmRlbQogCQk7OworCW5zeC10YW5kZW0pCisJCWJhc2ljX21hY2hpbmU9bnN4LXRhbmRlbQorCQk7OwogCW9wNTBuLSogfCBvcDYwYy0qKQogCQliYXNpY19tYWNoaW5lPWhwcGExLjEtb2tpCiAJCW9zPS1wcm9lbGYKQEAgLTEyNDMsNiArMTI0OCw5IEBACiAJCWJhc2ljX21hY2hpbmU9YTI5ay13cnMKIAkJb3M9LXZ4d29ya3MKIAkJOzsKKwl3YXNtMzIpCisJCWJhc2ljX21hY2hpbmU9d2FzbTMyLXVua25vd24KKwkJOzsKIAl3NjUqKQogCQliYXNpY19tYWNoaW5lPXc2NS13ZGMKIAkJb3M9LW5vbmUKQEAgLTE0MDksNyArMTQxNyw3IEBACiAJICAgICAgfCAtbW9ycGhvcyogfCAtc3VwZXJ1eCogfCAtcnRtayogfCAtcnRtay1ub3ZhKiB8IC13aW5kaXNzKiBcCiAJICAgICAgfCAtcG93ZXJtYXgqIHwgLWRuaXgqIHwgLW54NiB8IC1ueDcgfCAtc2VpKiB8IC1kcmFnb25mbHkqIFwKIAkgICAgICB8IC1za3lvcyogfCAtaGFpa3UqIHwgLXJkb3MqIHwgLXRvcHBlcnMqIHwgLWRyb3BzKiB8IC1lcyogXAotCSAgICAgIHwgLW9uZWZzKiB8IC10aXJ0b3MqIHwgLXBob2VuaXgqIHwgLWZ1Y2hzaWEqKQorCSAgICAgIHwgLW9uZWZzKiB8IC10aXJ0b3MqIHwgLXBob2VuaXgqIHwgLWZ1Y2hzaWEqIHwgLXJlZG94KikKIAkjIFJlbWVtYmVyLCBlYWNoIGFsdGVybmF0aXZlIE1VU1QgRU5EIElOICosIHRvIG1hdGNoIGEgdmVyc2lvbiBudW1iZXIuCiAJCTs7CiAJLXFueCopCkBAIC0xNjM4LDYgKzE2NDYsOSBAQAogCXNwYXJjLSogfCAqLXN1bikKIAkJb3M9LXN1bm9zNC4xLjEKIAkJOzsKKwlwcnUtKikKKwkJb3M9LWVsZgorCQk7OwogCSotYmUpCiAJCW9zPS1iZW9zCiAJCTs7CmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggYzAxZGZlMC4uNTA1ZjhiYiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtNjgzLDExICs2ODMsMTAgQEAKIElOU1RBTExfREFUQQogSU5TVEFMTF9TQ1JJUFQKIElOU1RBTExfUFJPR1JBTQotSEFTX0hHCi1IR0JSQU5DSAotSEdUQUcKLUhHVkVSU0lPTgotU1ZOVkVSU0lPTgorSEFTX0dJVAorR0lUQlJBTkNICitHSVRUQUcKK0dJVFZFUlNJT04KIEFSRkxBR1MKIGFjX2N0X0FSCiBBUgpAQCAtNzQxLDggKzc0MCw4IEBACiBDT05GSUdfQVJHUwogU09WRVJTSU9OCiBWRVJTSU9OCi1HRU5FUkFURURfQ09NTUVOVAogUFlUSE9OX0ZPUl9CVUlMRAorUFlUSE9OX0ZPUl9SRUdFTgogaG9zdF9vcwogaG9zdF92ZW5kb3IKIGhvc3RfY3B1CkBAIC0xNDcwLDcgKzE0NjksNyBAQAogICAtLWRpc2FibGUtRkVBVFVSRSAgICAgICBkbyBub3QgaW5jbHVkZSBGRUFUVVJFIChzYW1lIGFzIC0tZW5hYmxlLUZFQVRVUkU9bm8pCiAgIC0tZW5hYmxlLUZFQVRVUkVbPUFSR10gIGluY2x1ZGUgRkVBVFVSRSBbQVJHPXllc10KICAgLS1lbmFibGUtdW5pdmVyc2Fsc2RrWz1TREtESVJdCi0gICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIGFnYWluc3QgTWFjIE9TIFggMTAuNHUgU0RLIChwcGMvaTM4NikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgQnVpbGQgZmF0IGJpbmFyeSBhZ2FpbnN0IE1hYyBPUyBYIFNESwogICAtLWVuYWJsZS1mcmFtZXdvcmtbPUlOU1RBTExESVJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1aWxkIChNYWNPU1h8RGFyd2luKSBmcmFtZXdvcmsKICAgLS1lbmFibGUtc2hhcmVkICAgICAgICAgZGlzYWJsZS9lbmFibGUgYnVpbGRpbmcgc2hhcmVkIHB5dGhvbiBsaWJyYXJ5CkBAIC0xNDkwLDcgKzE0ODksOCBAQAogICAtLXdpdGhvdXQtUEFDS0FHRSAgICAgICBkbyBub3QgdXNlIFBBQ0tBR0UgKHNhbWUgYXMgLS13aXRoLVBBQ0tBR0U9bm8pCiAgIC0td2l0aC11bml2ZXJzYWwtYXJjaHM9QVJDSAogICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3QgYXJjaGl0ZWN0dXJlcyBmb3IgdW5pdmVyc2FsIGJ1aWxkICgiMzItYml0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIjY0LWJpdCIsICIzLXdheSIsICJpbnRlbCIgb3IgImFsbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICI2NC1iaXQiLCAiMy13YXkiLCAiaW50ZWwiLCAiaW50ZWwtMzIiLCAiaW50ZWwtNjQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvciAiYWxsIikKICAgLS13aXRoLWZyYW1ld29yay1uYW1lPUZSQU1FV09SSwogICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IGFuIGFsdGVybmF0ZSBuYW1lIG9mIHRoZSBmcmFtZXdvcmsgYnVpbHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCAtLWVuYWJsZS1mcmFtZXdvcmsKQEAgLTI5MTUsNiArMjkxNSw1MSBAQAogIyBweWJ1aWxkZGlyLnR4dCB3aWxsIGJlIGNyZWF0ZWQgYnkgLS1nZW5lcmF0ZS1wb3NpeC12YXJzIGluIHRoZSBNYWtlZmlsZQogcm0gLWYgcHlidWlsZGRpci50eHQKIAorZm9yIGFjX3Byb2cgaW4gcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbgorZG8KKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wcm9nX1BZVEhPTl9GT1JfUkVHRU4rOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBpZiB0ZXN0IC1uICIkUFlUSE9OX0ZPUl9SRUdFTiI7IHRoZW4KKyAgYWNfY3ZfcHJvZ19QWVRIT05fRk9SX1JFR0VOPSIkUFlUSE9OX0ZPUl9SRUdFTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCitlbHNlCithc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKyAgICBhY19jdl9wcm9nX1BZVEhPTl9GT1JfUkVHRU49IiRhY19wcm9nIgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCitmaQorZmkKK1BZVEhPTl9GT1JfUkVHRU49JGFjX2N2X3Byb2dfUFlUSE9OX0ZPUl9SRUdFTgoraWYgdGVzdCAtbiAiJFBZVEhPTl9GT1JfUkVHRU4iOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkUFlUSE9OX0ZPUl9SRUdFTiIgPiY1CiskYXNfZWNobyAiJFBZVEhPTl9GT1JfUkVHRU4iID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKworICB0ZXN0IC1uICIkUFlUSE9OX0ZPUl9SRUdFTiIgJiYgYnJlYWsKK2RvbmUKK3Rlc3QgLW4gIiRQWVRIT05fRk9SX1JFR0VOIiB8fCBQWVRIT05fRk9SX1JFR0VOPSJweXRob24zIgorCisKKwogaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBweXRob24gaW50ZXJwcmV0ZXIgZm9yIGNyb3NzIGJ1aWxkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBweXRob24gaW50ZXJwcmV0ZXIgZm9yIGNyb3NzIGJ1aWxkLi4uICIgPiY2OyB9CkBAIC0yOTMzLDE4ICsyOTc4LDE0IEBACiAkYXNfZWNobyAiJGludGVycCIgPiY2OyB9CiAJUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKHNoZWxsIHRlc3QgLWYgcHlidWlsZGRpci50eHQgJiYgZWNobyAkKGFic19idWlsZGRpcikvYGNhdCBweWJ1aWxkZGlyLnR4dGA6KSQoc3JjZGlyKS9MaWI6JChzcmNkaXIpL0xpYi8kKFBMQVRESVIpICckaW50ZXJwCiAgICAgZmkKLSAgICAjIFVzZWQgdG8gY29tbWVudCBvdXQgc3R1ZmYgZm9yIHJlYnVpbGRpbmcgZ2VuZXJhdGVkIGZpbGVzCi0gICAgR0VORVJBVEVEX0NPTU1FTlQ9JyMnCiBlbGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0gbWF5YmU7IHRoZW4KICAgICBhc19mbl9lcnJvciAkPyAiQ3Jvc3MgY29tcGlsaW5nIHJlcXVpcmVkIC0taG9zdD1IT1NULVRVUExFIGFuZCAtLWJ1aWxkPUFSQ0giICIkTElORU5PIiA1CiBlbHNlCiAgICAgUFlUSE9OX0ZPUl9CVUlMRD0nLi8kKEJVSUxEUFlUSE9OKSAtRScKLSAgICBHRU5FUkFURURfQ09NTUVOVD0nJwogZmkKIAogCiAKLQogaWYgdGVzdCAiJHByZWZpeCIgIT0gIi8iOyB0aGVuCiAgICAgcHJlZml4PWBlY2hvICIkcHJlZml4IiB8IHNlZCAtZSAncy9cLyQvL2cnYAogZmkKQEAgLTMwMTEsMTAgKzMwNTIsMTYgQEAKICAgZW5hYmxldmFsPSRlbmFibGVfdW5pdmVyc2Fsc2RrOwogCWNhc2UgJGVuYWJsZXZhbCBpbgogCXllcykKLQkJZW5hYmxldmFsPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsKLQkJaWYgdGVzdCAhIC1kICIke2VuYWJsZXZhbH0iCisJCSMgTG9jYXRlIHRoZSBiZXN0IHVzYWJsZSBTREssIHNlZSBNYWMvUkVBRE1FLnR4dCBmb3IgbW9yZQorCQkjIGluZm9ybWF0aW9uCisJCWVuYWJsZXZhbD0iYC91c3IvYmluL3hjb2RlYnVpbGQgLXZlcnNpb24gLXNkayBtYWNvc3ggUGF0aCAyPi9kZXYvbnVsbGAiCisJCWlmICEgKCBlY2hvICRlbmFibGV2YWwgfCBncmVwIC1FICdcLnNkaycgMT4vZGV2L251bGwgKQogCQl0aGVuCi0JCQllbmFibGV2YWw9LworCQkJZW5hYmxldmFsPS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC40dS5zZGsKKwkJCWlmIHRlc3QgISAtZCAiJHtlbmFibGV2YWx9IgorCQkJdGhlbgorCQkJCWVuYWJsZXZhbD0vCisJCQlmaQogCQlmaQogCQk7OwogCWVzYWMKQEAgLTMwNTMsNyArMzEwMCwyMCBAQAogCiBBUkNIX1JVTl8zMkJJVD0iIgogCisjIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMgd2UgcHJlZmVyIHRvIHNlbGVjdCAnMzItYml0JyBpZiBhdmFpbGFibGUsCisjIG90aGVyd2lzZSB1c2UgJ2ludGVsJwogVU5JVkVSU0FMX0FSQ0hTPSIzMi1iaXQiCitpZiB0ZXN0ICJgdW5hbWUgLXNgIiA9ICJEYXJ3aW4iCit0aGVuCisJaWYgdGVzdCAtbiAiJHtVTklWRVJTQUxTREt9IgorCXRoZW4KKwkJaWYgdGVzdCAteiAiYC91c3IvYmluL2ZpbGUgLUwgIiR7VU5JVkVSU0FMU0RLfS91c3IvbGliL2xpYlN5c3RlbS5keWxpYiIgfCBncmVwIHBwY2AiCisJCXRoZW4KKwkJCVVOSVZFUlNBTF9BUkNIUz0iaW50ZWwiCisJCWZpCisJZmkKK2ZpCisKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXVuaXZlcnNhbC1hcmNocyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXVuaXZlcnNhbC1hcmNocy4uLiAiID4mNjsgfQpAQCAtMzA2MSwyNCArMzEyMSwxOCBAQAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC11bml2ZXJzYWwtYXJjaHMgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX3VuaXZlcnNhbF9hcmNocytzZXR9IiA9IHNldDsgdGhlbiA6CiAgIHdpdGh2YWw9JHdpdGhfdW5pdmVyc2FsX2FyY2hzOwotCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aHZhbCIgPiY1Ci0kYXNfZWNobyAiJHdpdGh2YWwiID4mNjsgfQogCVVOSVZFUlNBTF9BUkNIUz0iJHdpdGh2YWwiCi0gICAgICAgIGlmIHRlc3QgIiR7ZW5hYmxlX3VuaXZlcnNhbHNka30iIDsgdGhlbgotCQk6Ci0JZWxzZQotCQlhc19mbl9lcnJvciAkPyAiLS13aXRoLXVuaXZlcnNhbC1hcmNocyB3aXRob3V0IC0tZW5hYmxlLXVuaXZlcnNhbHNkay4gU2VlIE1hYy9SRUFETUUiICIkTElORU5PIiA1Ci0JZmkKLQotZWxzZQotCi0gCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAzMi1iaXQiID4mNQotJGFzX2VjaG8gIjMyLWJpdCIgPiY2OyB9CiAKIGZpCiAKLQotCitpZiB0ZXN0IC1uICIke1VOSVZFUlNBTFNES30iCit0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7VU5JVkVSU0FMX0FSQ0hTfSIgPiY1CiskYXNfZWNobyAiJHtVTklWRVJTQUxfQVJDSFN9IiA+JjY7IH0KK2Vsc2UKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCiAKIAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC1mcmFtZXdvcmstbmFtZSB3YXMgZ2l2ZW4uCkBAIC01NzAxLDE1ICs1NzU1LDIwIEBACiBmaQogCiAKLSMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAic3ZudmVyc2lvbiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgc3ZudmVyc2lvbjsgYWNfd29yZD0kMgorCisKKworaWYgdGVzdCAtZSAkc3JjZGlyLy5naXQKK3RoZW4KKyMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZ2l0Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSBnaXQ7IGFjX3dvcmQ9JDIKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX1NWTlZFUlNJT04rOn0gZmFsc2U7IHRoZW4gOgoraWYgJHthY19jdl9wcm9nX0hBU19HSVQrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICBpZiB0ZXN0IC1uICIkU1ZOVkVSU0lPTiI7IHRoZW4KLSAgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSIkU1ZOVkVSU0lPTiIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGlmIHRlc3QgLW4gIiRIQVNfR0lUIjsgdGhlbgorICBhY19jdl9wcm9nX0hBU19HSVQ9IiRIQVNfR0lUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KIGVsc2UKIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKIGZvciBhc19kaXIgaW4gJFBBVEgKQEAgLTU3MTgsNyArNTc3Nyw3IEBACiAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCiAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCiAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wcm9nX1NWTlZFUlNJT049ImZvdW5kIgorICAgIGFjX2N2X3Byb2dfSEFTX0dJVD0iZm91bmQiCiAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CiAgICAgYnJlYWsgMgogICBmaQpAQCAtNTcyNiw3NiArNTc4NSwzMSBAQAogICBkb25lCiBJRlM9JGFzX3NhdmVfSUZTCiAKLSAgdGVzdCAteiAiJGFjX2N2X3Byb2dfU1ZOVkVSU0lPTiIgJiYgYWNfY3ZfcHJvZ19TVk5WRVJTSU9OPSJub3QtZm91bmQiCisgIHRlc3QgLXogIiRhY19jdl9wcm9nX0hBU19HSVQiICYmIGFjX2N2X3Byb2dfSEFTX0dJVD0ibm90LWZvdW5kIgogZmkKIGZpCi1TVk5WRVJTSU9OPSRhY19jdl9wcm9nX1NWTlZFUlNJT04KLWlmIHRlc3QgLW4gIiRTVk5WRVJTSU9OIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFNWTlZFUlNJT04iID4mNQotJGFzX2VjaG8gIiRTVk5WRVJTSU9OIiA+JjY7IH0KK0hBU19HSVQ9JGFjX2N2X3Byb2dfSEFTX0dJVAoraWYgdGVzdCAtbiAiJEhBU19HSVQiOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSEFTX0dJVCIgPiY1CiskYXNfZWNobyAiJEhBU19HSVQiID4mNjsgfQogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQogJGFzX2VjaG8gIm5vIiA+JjY7IH0KIGZpCiAKIAotaWYgdGVzdCAkU1ZOVkVSU0lPTiA9IGZvdW5kCitlbHNlCitIQVNfR0lUPW5vLXJlcG9zaXRvcnkKK2ZpCitpZiB0ZXN0ICRIQVNfR0lUID0gZm91bmQKIHRoZW4KLQlTVk5WRVJTSU9OPSJzdm52ZXJzaW9uIFwkKHNyY2RpcikiCisgICAgR0lUVkVSU0lPTj0iZ2l0IC0tZ2l0LWRpciBcJChzcmNkaXIpLy5naXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRCIKKyAgICBHSVRUQUc9ImdpdCAtLWdpdC1kaXIgXCQoc3JjZGlyKS8uZ2l0IGRlc2NyaWJlIC0tYWxsIC0tYWx3YXlzIC0tZGlydHkiCisgICAgR0lUQlJBTkNIPSJnaXQgLS1naXQtZGlyIFwkKHNyY2RpcikvLmdpdCBuYW1lLXJldiAtLW5hbWUtb25seSBIRUFEIgogZWxzZQotCVNWTlZFUlNJT049ImVjaG8gVW52ZXJzaW9uZWQgZGlyZWN0b3J5IgotZmkKLQotCi0KLQotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJoZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgaGc7IGFjX3dvcmQ9JDIKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9wcm9nX0hBU19IRys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGlmIHRlc3QgLW4gIiRIQVNfSEciOyB0aGVuCi0gIGFjX2N2X3Byb2dfSEFTX0hHPSIkSEFTX0hHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLWVsc2UKLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3Byb2dfSEFTX0hHPSJmb3VuZCIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotICB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19IQVNfSEciICYmIGFjX2N2X3Byb2dfSEFTX0hHPSJub3QtZm91bmQiCi1maQotZmkKLUhBU19IRz0kYWNfY3ZfcHJvZ19IQVNfSEcKLWlmIHRlc3QgLW4gIiRIQVNfSEciOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkSEFTX0hHIiA+JjUKLSRhc19lY2hvICIkSEFTX0hHIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLWlmIHRlc3QgJEhBU19IRyA9IGZvdW5kCi10aGVuCi0gICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgotICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgotICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgotZWxzZQotICAgIEhHVkVSU0lPTj0iIgotICAgIEhHVEFHPSIiCi0gICAgSEdCUkFOQ0g9IiIKKyAgICBHSVRWRVJTSU9OPSIiCisgICAgR0lUVEFHPSIiCisgICAgR0lUQlJBTkNIPSIiCiBmaQogCiBjYXNlICRNQUNIREVQIGluCkBAIC02MDk2LDExOSArNjExMCwxMzcgQEAKIAlTQ09fU1YqKQogCSAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtbTQ4NiAtRFNDTzUiCiAJICAgIDs7Ci0JIyBpcyB0aGVyZSBhbnkgb3RoZXIgY29tcGlsZXIgb24gRGFyd2luIGJlc2lkZXMgZ2NjPwotCURhcndpbiopCi0JICAgICMgLVduby1sb25nLWRvdWJsZSwgLW5vLWNwcC1wcmVjb21wLCBhbmQgLW1uby1mdXNlZC1tYWRkCi0JICAgICMgdXNlZCB0byBiZSBoZXJlLCBidXQgbm9uLUFwcGxlIGdjYyBkb2Vzbid0IGFjY2VwdCB0aGVtLgotCSAgICBpZiB0ZXN0ICIke0NDfSIgPSBnY2MKLQkgICAgdGhlbgotCQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoaWNoIGNvbXBpbGVyIHNob3VsZCBiZSB1c2VkIiA+JjUKKyAgICAjIGlzIHRoZXJlIGFueSBvdGhlciBjb21waWxlciBvbiBEYXJ3aW4gYmVzaWRlcyBnY2M/CisgICAgRGFyd2luKikKKyAgICAgICAgIyAtV25vLWxvbmctZG91YmxlLCAtbm8tY3BwLXByZWNvbXAsIGFuZCAtbW5vLWZ1c2VkLW1hZGQKKyAgICAgICAgIyB1c2VkIHRvIGJlIGhlcmUsIGJ1dCBub24tQXBwbGUgZ2NjIGRvZXNuJ3QgYWNjZXB0IHRoZW0uCisgICAgICAgIGlmIHRlc3QgIiR7Q0N9IiA9IGdjYworICAgICAgICB0aGVuCisgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoaWNoIGNvbXBpbGVyIHNob3VsZCBiZSB1c2VkIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoaWNoIGNvbXBpbGVyIHNob3VsZCBiZSB1c2VkLi4uICIgPiY2OyB9Ci0JCWNhc2UgIiR7VU5JVkVSU0FMU0RLfSIgaW4KLQkJKi9NYWNPU1gxMC40dS5zZGspCi0JCQkjIEJ1aWxkIHVzaW5nIDEwLjQgU0RLLCBmb3JjZSB1c2FnZSBvZiBnY2Mgd2hlbiB0aGUKLQkJCSMgY29tcGlsZXIgaXMgZ2NjLCBvdGhlcndpc2UgdGhlIHVzZXIgd2lsbCBnZXQgdmVyeQotCQkJIyBjb25mdXNpbmcgZXJyb3IgbWVzc2FnZXMgd2hlbiBidWlsZGluZyBvbiBPU1ggMTAuNgotCQkJQ0M9Z2NjLTQuMAotCQkJQ1BQPWNwcC00LjAKLQkJCTs7Ci0JCWVzYWMKLQkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRDQyIgPiY1CisgICAgICAgICAgICBjYXNlICIke1VOSVZFUlNBTFNES30iIGluCisgICAgICAgICAgICAqL01hY09TWDEwLjR1LnNkaykKKyAgICAgICAgICAgICAgICAjIEJ1aWxkIHVzaW5nIDEwLjQgU0RLLCBmb3JjZSB1c2FnZSBvZiBnY2Mgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAjIGNvbXBpbGVyIGlzIGdjYywgb3RoZXJ3aXNlIHRoZSB1c2VyIHdpbGwgZ2V0IHZlcnkKKyAgICAgICAgICAgICAgICAjIGNvbmZ1c2luZyBlcnJvciBtZXNzYWdlcyB3aGVuIGJ1aWxkaW5nIG9uIE9TWCAxMC42CisgICAgICAgICAgICAgICAgQ0M9Z2NjLTQuMAorICAgICAgICAgICAgICAgIENQUD1jcHAtNC4wCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkQ0MiID4mNQogJGFzX2VjaG8gIiRDQyIgPiY2OyB9Ci0JICAgIGZpCisgICAgICAgIGZpCiAKLQkgICAgIyBDYWxjdWxhdGUgdGhlIHJpZ2h0IGRlcGxveW1lbnQgdGFyZ2V0IGZvciB0aGlzIGJ1aWxkLgotCSAgICAjCi0JCWN1cl90YXJnZXRfbWFqb3I9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgXAotCQkJCXNlZCAncy9cKFswLTldKlwpXC5cKFswLTldKlwpLiovXDEvJ2AKLQkJY3VyX3RhcmdldF9taW5vcj1gc3dfdmVycyAtcHJvZHVjdFZlcnNpb24gfCBcCi0JCQkJc2VkICdzL1woWzAtOV0qXClcLlwoWzAtOV0qXCkuKi9cMi8nYAotCQljdXJfdGFyZ2V0PSIke2N1cl90YXJnZXRfbWFqb3J9LiR7Y3VyX3RhcmdldF9taW5vcn0iCi0JCWlmIHRlc3QgJHtjdXJfdGFyZ2V0X21ham9yfSAtZXEgMTAgJiYgXAotCQkgICB0ZXN0ICR7Y3VyX3RhcmdldF9taW5vcn0gLWdlIDMKLQkJdGhlbgotCQkgICAgY3VyX3RhcmdldD0xMC4zCi0JCSAgICBpZiB0ZXN0ICR7ZW5hYmxlX3VuaXZlcnNhbHNka307IHRoZW4KLQkJCSAgICBpZiB0ZXN0ICIke1VOSVZFUlNBTF9BUkNIU30iID0gImFsbCI7IHRoZW4KLQkJCQkgICAgIyBFbnN1cmUgdGhhdCB0aGUgZGVmYXVsdCBwbGF0Zm9ybSBmb3IgYQotCQkJCSAgICAjIDQtd2F5IHVuaXZlcnNhbCBidWlsZCBpcyBPU1ggMTAuNSwKLQkJCQkgICAgIyB0aGF0J3MgdGhlIGZpcnN0IE9TIHJlbGVhc2Ugd2hlcmUKLQkJCQkgICAgIyA0LXdheSBidWlsZHMgbWFrZSBzZW5zZS4KLQkJCQkgICAgY3VyX3RhcmdldD0nMTAuNScKKyAgICAgICAgaWYgdGVzdCAiJHtlbmFibGVfdW5pdmVyc2Fsc2RrfSIKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgY2FzZSAiJFVOSVZFUlNBTF9BUkNIUyIgaW4KKyAgICAgICAgICAgIDMyLWJpdCkKKyAgICAgICAgICAgICAgIFVOSVZFUlNBTF9BUkNIX0ZMQUdTPSItYXJjaCBwcGMgLWFyY2ggaTM4NiIKKyAgICAgICAgICAgICAgIExJUE9fMzJCSVRfRkxBR1M9IiIKKyAgICAgICAgICAgICAgIEFSQ0hfUlVOXzMyQklUPSIiCisgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgNjQtYml0KQorICAgICAgICAgICAgICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIHBwYzY0IC1hcmNoIHg4Nl82NCIKKyAgICAgICAgICAgICAgIExJUE9fMzJCSVRfRkxBR1M9IiIKKyAgICAgICAgICAgICAgIEFSQ0hfUlVOXzMyQklUPSIiCisgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgYWxsKQorICAgICAgICAgICAgICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIGkzODYgLWFyY2ggcHBjIC1hcmNoIHBwYzY0IC1hcmNoIHg4Nl82NCIKKyAgICAgICAgICAgICAgIExJUE9fMzJCSVRfRkxBR1M9Ii1leHRyYWN0IHBwYzc0MDAgLWV4dHJhY3QgaTM4NiIKKyAgICAgICAgICAgICAgIEFSQ0hfUlVOXzMyQklUPSIvdXNyL2Jpbi9hcmNoIC1pMzg2IC1wcGMiCisgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgaW50ZWwpCisgICAgICAgICAgICAgICBVTklWRVJTQUxfQVJDSF9GTEFHUz0iLWFyY2ggaTM4NiAtYXJjaCB4ODZfNjQiCisgICAgICAgICAgICAgICBMSVBPXzMyQklUX0ZMQUdTPSItZXh0cmFjdCBpMzg2IgorICAgICAgICAgICAgICAgQVJDSF9SVU5fMzJCSVQ9Ii91c3IvYmluL2FyY2ggLWkzODYiCisgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgaW50ZWwtMzIpCisgICAgICAgICAgICAgICBVTklWRVJTQUxfQVJDSF9GTEFHUz0iLWFyY2ggaTM4NiIKKyAgICAgICAgICAgICAgIExJUE9fMzJCSVRfRkxBR1M9IiIKKyAgICAgICAgICAgICAgIEFSQ0hfUlVOXzMyQklUPSIiCisgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgaW50ZWwtNjQpCisgICAgICAgICAgICAgICBVTklWRVJTQUxfQVJDSF9GTEFHUz0iLWFyY2ggeDg2XzY0IgorICAgICAgICAgICAgICAgTElQT18zMkJJVF9GTEFHUz0iIgorICAgICAgICAgICAgICAgQVJDSF9SVU5fMzJCSVQ9IiIKKyAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAzLXdheSkKKyAgICAgICAgICAgICAgIFVOSVZFUlNBTF9BUkNIX0ZMQUdTPSItYXJjaCBpMzg2IC1hcmNoIHBwYyAtYXJjaCB4ODZfNjQiCisgICAgICAgICAgICAgICBMSVBPXzMyQklUX0ZMQUdTPSItZXh0cmFjdCBwcGM3NDAwIC1leHRyYWN0IGkzODYiCisgICAgICAgICAgICAgICBBUkNIX1JVTl8zMkJJVD0iL3Vzci9iaW4vYXJjaCAtaTM4NiAtcHBjIgorICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICBhc19mbl9lcnJvciAkPyAicHJvcGVyIHVzYWdlIGlzIC0td2l0aC11bml2ZXJzYWwtYXJjaD0zMi1iaXR8NjQtYml0fGFsbHxpbnRlbHwzLXdheSIgIiRMSU5FTk8iIDUKKyAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBlc2FjCiAKLQkJCSAgICBlbGlmIHRlc3QgIiR7VU5JVkVSU0FMX0FSQ0hTfSIgPSAiMy13YXkiOyB0aGVuCi0JCQkJICAgIGN1cl90YXJnZXQ9JzEwLjUnCisgICAgICAgICAgICBpZiB0ZXN0ICIke1VOSVZFUlNBTFNES30iICE9ICIvIgorICAgICAgICAgICAgdGhlbgorICAgICAgICAgICAgICAgIENGTEFHUz0iJHtVTklWRVJTQUxfQVJDSF9GTEFHU30gLWlzeXNyb290ICR7VU5JVkVSU0FMU0RLfSAke0NGTEFHU30iCisgICAgICAgICAgICAgICAgTERGTEFHUz0iJHtVTklWRVJTQUxfQVJDSF9GTEFHU30gLWlzeXNyb290ICR7VU5JVkVSU0FMU0RLfSAke0xERkxBR1N9IgorICAgICAgICAgICAgICAgIENQUEZMQUdTPSItaXN5c3Jvb3QgJHtVTklWRVJTQUxTREt9ICR7Q1BQRkxBR1N9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIENGTEFHUz0iJHtVTklWRVJTQUxfQVJDSF9GTEFHU30gJHtDRkxBR1N9IgorICAgICAgICAgICAgICAgIExERkxBR1M9IiR7VU5JVkVSU0FMX0FSQ0hfRkxBR1N9ICR7TERGTEFHU30iCisgICAgICAgICAgICBmaQorICAgICAgICBmaQogCi0JCQkgICAgZWxpZiB0ZXN0ICIke1VOSVZFUlNBTF9BUkNIU30iID0gImludGVsIjsgdGhlbgotCQkJCSAgICBjdXJfdGFyZ2V0PScxMC41JworICAgICAgICAjIENhbGN1bGF0ZSBhbiBhcHByb3ByaWF0ZSBkZXBsb3ltZW50IHRhcmdldCBmb3IgdGhpcyBidWlsZDoKKyAgICAgICAgIyBUaGUgZGVwbG95bWVudCB0YXJnZXQgdmFsdWUgaXMgdXNlZCBleHBsaWNpdGx5IHRvIGVuYWJsZSBjZXJ0YWluCisgICAgICAgICMgZmVhdHVyZXMgYXJlIGVuYWJsZWQgKHN1Y2ggYXMgYnVpbHRpbiBsaWJlZGl0IHN1cHBvcnQgZm9yIHJlYWRsaW5lKQorICAgICAgICAjIHRocm91Z2ggdGhlIHVzZSBvZiBBcHBsZSdzIEF2YWlsYWJpbGl0eSBNYWNyb3MgYW5kIGlzIHVzZWQgYXMgYQorICAgICAgICAjIGNvbXBvbmVudCBvZiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IGRpc3R1dGlscy5nZXRfcGxhdGZvcm0oKS4KKyAgICAgICAgIworICAgICAgICAjIFVzZSB0aGUgdmFsdWUgZnJvbToKKyAgICAgICAgIyAxLiB0aGUgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHNwZWNpZmllZAorICAgICAgICAjIDIuIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24gb2YgdGhlIGJ1aWxkIG1hY2hpbmUgaWYgPj0gMTAuNgorICAgICAgICAjIDMuIElmIHJ1bm5pbmcgb24gT1MgWCAxMC4zIHRocm91Z2ggMTAuNSwgdXNlIHRoZSBsZWdhY3kgdGVzdHMKKyAgICAgICAgIyAgICAgICBiZWxvdyB0byBwaWNrIGVpdGhlciAxMC4zLCAxMC40LCBvciAxMC41IGFzIHRoZSB0YXJnZXQuCisgICAgICAgICMgNC4gSWYgd2UgYXJlIHJ1bm5pbmcgb24gT1MgWCAxMC4yIG9yIGVhcmxpZXIsIGdvb2QgbHVjayEKIAotCQkJICAgIGVsaWYgdGVzdCAiJHtVTklWRVJTQUxfQVJDSFN9IiA9ICI2NC1iaXQiOyB0aGVuCi0JCQkJICAgIGN1cl90YXJnZXQ9JzEwLjUnCi0JCQkgICAgZmkKLQkJICAgIGVsc2UKLQkJCSAgICBpZiB0ZXN0IGAvdXNyL2Jpbi9hcmNoYCA9ICJpMzg2IjsgdGhlbgotCQkJCSAgICAjIE9uIEludGVsIG1hY3MgZGVmYXVsdCB0byBhIGRlcGxveW1lbnQKLQkJCQkgICAgIyB0YXJnZXQgb2YgMTAuNCwgdGhhdCdzIHRoZSBmaXJzdCBPU1gKLQkJCQkgICAgIyByZWxlYXNlIHdpdGggSW50ZWwgc3VwcG9ydC4KLQkJCQkgICAgY3VyX3RhcmdldD0iMTAuNCIKLQkJCSAgICBmaQotCQkgICAgZmkKLQkgICAgZmkKLQkgICAgQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0ke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0ke2N1cl90YXJnZXR9fQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoaWNoIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCB0byB1c2UiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hpY2ggTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIHRvIHVzZS4uLiAiID4mNjsgfQorICAgICAgICBjdXJfdGFyZ2V0X21ham9yPWBzd192ZXJzIC1wcm9kdWN0VmVyc2lvbiB8IFwKKyAgICAgICAgICAgICAgICBzZWQgJ3MvXChbMC05XSpcKVwuXChbMC05XSpcKS4qL1wxLydgCisgICAgICAgIGN1cl90YXJnZXRfbWlub3I9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgXAorICAgICAgICAgICAgICAgIHNlZCAncy9cKFswLTldKlwpXC5cKFswLTldKlwpLiovXDIvJ2AKKyAgICAgICAgY3VyX3RhcmdldD0iJHtjdXJfdGFyZ2V0X21ham9yfS4ke2N1cl90YXJnZXRfbWlub3J9IgorICAgICAgICBpZiB0ZXN0ICR7Y3VyX3RhcmdldF9tYWpvcn0gLWVxIDEwICYmIFwKKyAgICAgICAgICAgdGVzdCAke2N1cl90YXJnZXRfbWlub3J9IC1nZSAzICYmIFwKKyAgICAgICAgICAgdGVzdCAke2N1cl90YXJnZXRfbWlub3J9IC1sZSA1CisgICAgICAgIHRoZW4KKyAgICAgICAgICAgICMgT1MgWCAxMC4zIHRocm91Z2ggMTAuNQorICAgICAgICAgICAgY3VyX3RhcmdldD0xMC4zCisgICAgICAgICAgICBpZiB0ZXN0ICR7ZW5hYmxlX3VuaXZlcnNhbHNka30KKyAgICAgICAgICAgIHRoZW4KKyAgICAgICAgICAgICAgICBjYXNlICIkVU5JVkVSU0FMX0FSQ0hTIiBpbgorICAgICAgICAgICAgICAgIGFsbHwzLXdheXxpbnRlbHw2NC1iaXQpCisgICAgICAgICAgICAgICAgICAgICMgVGhlc2UgY29uZmlndXJhdGlvbnMgd2VyZSBmaXJzdCBzdXBwb3J0ZWQgaW4gMTAuNQorICAgICAgICAgICAgICAgICAgICBjdXJfdGFyZ2V0PScxMC41JworICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBpZiB0ZXN0IGAvdXNyL2Jpbi9hcmNoYCA9ICJpMzg2IgorICAgICAgICAgICAgICAgIHRoZW4KKyAgICAgICAgICAgICAgICAgICAgIyAxMC40IHdhcyB0aGUgZmlyc3QgcmVsZWFzZSB0byBzdXBwb3J0IEludGVsIGFyY2hzCisgICAgICAgICAgICAgICAgICAgIGN1cl90YXJnZXQ9IjEwLjQiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICAgIENPTkZJR1VSRV9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtJHtjdXJfdGFyZ2V0fX0KIAotCSAgICAjIE1ha2Ugc3VyZSB0aGF0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpcyBzZXQgaW4gdGhlCi0JICAgICMgZW52aXJvbm1lbnQgd2l0aCBhIHZhbHVlIHRoYXQgaXMgdGhlIHNhbWUgYXMgd2hhdCB3ZSdsbCB1c2UKLQkgICAgIyBpbiB0aGUgTWFrZWZpbGUgdG8gZW5zdXJlIHRoYXQgd2UnbGwgZ2V0IHRoZSBzYW1lIGNvbXBpbGVyCi0JICAgICMgZW52aXJvbm1lbnQgZHVyaW5nIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGltZS4KLQkgICAgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPSIkQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCIKLQkgICAgZXhwb3J0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAotCSAgICBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPScnCisgICAgICAgICMgTWFrZSBzdXJlIHRoYXQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGlzIHNldCBpbiB0aGUKKyAgICAgICAgIyBlbnZpcm9ubWVudCB3aXRoIGEgdmFsdWUgdGhhdCBpcyB0aGUgc2FtZSBhcyB3aGF0IHdlJ2xsIHVzZQorICAgICAgICAjIGluIHRoZSBNYWtlZmlsZSB0byBlbnN1cmUgdGhhdCB3ZSdsbCBnZXQgdGhlIHNhbWUgY29tcGlsZXIKKyAgICAgICAgIyBlbnZpcm9ubWVudCBkdXJpbmcgY29uZmlndXJlIGFuZCBidWlsZCB0aW1lLgorICAgICAgICBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9IiRDT05GSUdVUkVfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIgorICAgICAgICBleHBvcnQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCisgICAgICAgIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JycKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQiID4mNQorJGFzX2VjaG8gIiRNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQiID4mNjsgfQogCi0JICAgIGlmIHRlc3QgIiR7ZW5hYmxlX3VuaXZlcnNhbHNka30iOyB0aGVuCi0JCVVOSVZFUlNBTF9BUkNIX0ZMQUdTPSIiCi0JICAgICAgICBpZiB0ZXN0ICIkVU5JVkVSU0FMX0FSQ0hTIiA9ICIzMi1iaXQiIDsgdGhlbgotCQkgICBVTklWRVJTQUxfQVJDSF9GTEFHUz0iLWFyY2ggcHBjIC1hcmNoIGkzODYiCi0JCSAgIEFSQ0hfUlVOXzMyQklUPSIiCi0JCSAgIExJUE9fMzJCSVRfRkxBR1M9IiIKLQotCSAgICAgICAgIGVsaWYgdGVzdCAiJFVOSVZFUlNBTF9BUkNIUyIgPSAiNjQtYml0IiA7IHRoZW4KLQkJICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIHBwYzY0IC1hcmNoIHg4Nl82NCIKLQkJICAgTElQT18zMkJJVF9GTEFHUz0iIgotCQkgICBBUkNIX1JVTl8zMkJJVD0idHJ1ZSIKLQotCSAgICAgICAgIGVsaWYgdGVzdCAiJFVOSVZFUlNBTF9BUkNIUyIgPSAiYWxsIiA7IHRoZW4KLQkJICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIGkzODYgLWFyY2ggcHBjIC1hcmNoIHBwYzY0IC1hcmNoIHg4Nl82NCIKLQkJICAgTElQT18zMkJJVF9GTEFHUz0iLWV4dHJhY3QgcHBjNzQwMCAtZXh0cmFjdCBpMzg2IgotCQkgICBBUkNIX1JVTl8zMkJJVD0iL3Vzci9iaW4vYXJjaCAtaTM4NiAtcHBjIgotCi0JICAgICAgICAgZWxpZiB0ZXN0ICIkVU5JVkVSU0FMX0FSQ0hTIiA9ICJpbnRlbCIgOyB0aGVuCi0JCSAgIFVOSVZFUlNBTF9BUkNIX0ZMQUdTPSItYXJjaCBpMzg2IC1hcmNoIHg4Nl82NCIKLQkJICAgTElQT18zMkJJVF9GTEFHUz0iLWV4dHJhY3QgaTM4NiIKLQkJICAgQVJDSF9SVU5fMzJCSVQ9Ii91c3IvYmluL2FyY2ggLWkzODYiCi0KLQkgICAgICAgICBlbGlmIHRlc3QgIiRVTklWRVJTQUxfQVJDSFMiID0gIjMtd2F5IiA7IHRoZW4KLQkJICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIGkzODYgLWFyY2ggcHBjIC1hcmNoIHg4Nl82NCIKLQkJICAgTElQT18zMkJJVF9GTEFHUz0iLWV4dHJhY3QgcHBjNzQwMCAtZXh0cmFjdCBpMzg2IgotCQkgICBBUkNIX1JVTl8zMkJJVD0iL3Vzci9iaW4vYXJjaCAtaTM4NiAtcHBjIgotCi0JCSBlbHNlCi0JICAgICAgICAgICBhc19mbl9lcnJvciAkPyAicHJvcGVyIHVzYWdlIGlzIC0td2l0aC11bml2ZXJzYWwtYXJjaD0zMi1iaXR8NjQtYml0fGFsbHxpbnRlbHwzLXdheSIgIiRMSU5FTk8iIDUKLQotCQkgZmkKLQotCi0JCUNGTEFHUz0iJHtVTklWRVJTQUxfQVJDSF9GTEFHU30gJHtDRkxBR1N9IgotCQlpZiB0ZXN0ICIke1VOSVZFUlNBTFNES30iICE9ICIvIgotCQl0aGVuCi0JCQlDUFBGTEFHUz0iLWlzeXNyb290ICR7VU5JVkVSU0FMU0RLfSAke0NQUEZMQUdTfSIKLQkJCUxERkxBR1M9Ii1pc3lzcm9vdCAke1VOSVZFUlNBTFNES30gJHtMREZMQUdTfSIKLQkJCUNGTEFHUz0iLWlzeXNyb290ICR7VU5JVkVSU0FMU0RLfSAke0NGTEFHU30iCi0JCWZpCi0KLQkgICAgZmkKLQotCi0JICAgIDs7CisgICAgICAgICMgZW5kIG9mIERhcndpbiogdGVzdHMKKyAgICAgICAgOzsKIAlPU0YqKQogCSAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtbWllZWUiCiAJICAgIDs7CkBAIC02MzkxLDcgKzY0MjMsNyBAQAogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW9wdGltaXphdGlvbnMgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHtlbmFibGVfb3B0aW1pemF0aW9ucytzZXR9IiA9IHNldDsgdGhlbiA6CiAgIGVuYWJsZXZhbD0kZW5hYmxlX29wdGltaXphdGlvbnM7Ci1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KK2lmIHRlc3QgIiRlbmFibGV2YWwiICE9IG5vCiB0aGVuCiAgIFB5X09QVD0ndHJ1ZScKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CkBAIC02NDExLDcgKzY0NDMsNiBAQAogICAjIGNvbXBpbGUgd29ya2luZyBjb2RlIHVzaW5nIGl0IGFuZCBib3RoIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2dkYiBhcmUKICAgIyBicm9rZW4gd2hlbiB5b3UgZG8gbWFuYWdlZCB0byBnZXQgYSB0b29sY2hhaW4gdGhhdCB3b3JrcyB3aXRoIGl0LiAgUGVvcGxlCiAgICMgd2hvIHdhbnQgTFRPIG5lZWQgdG8gdXNlIC0td2l0aC1sdG8gdGhlbXNlbHZlcy4KLSAgUHlfTFRPPSd0cnVlJwogICBERUZfTUFLRV9BTExfUlVMRT0icHJvZmlsZS1vcHQiCiAgIFJFUVVJUkVfUEdPPSJ5ZXMiCiAgIERFRl9NQUtFX1JVTEU9ImJ1aWxkX2FsbCIKQEAgLTY0NjIsNiArNjQ5MywxMyBAQAogICAgICAgZXNhYwogICAgICAgOzsKICAgZXNhYworCisgIGlmIHRlc3QgIiRhY19jdl9wcm9nX2NjX2ciID0gInllcyIKKyAgdGhlbgorICAgICAgIyBicG8tMzAzNDU6IEFkZCAtZyB0byBMREZMQUdTIHdoZW4gY29tcGlsaW5nIHdpdGggTFRPCisgICAgICAjIHRvIGdldCBkZWJ1ZyBzeW1ib2xzLgorICAgICAgTFRPRkxBR1M9IiRMVE9GTEFHUyAtZyIKKyAgZmkKIGZpCiAKIApAQCAtNzA0NywxOCArNzA4NSwxOCBAQAogCiBmaQogCi1mb3IgYWNfaGVhZGVyIGluIGFzbS90eXBlcy5oIGNvbmlvLmggZGlyZWN0LmggZGxmY24uaCBlcnJuby5oIFwKK2ZvciBhY19oZWFkZXIgaW4gYXNtL3R5cGVzLmggY3J5cHQuaCBjb25pby5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKIGllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggcG9sbC5oIHByb2Nlc3MuaCBwdGhyZWFkLmggXAogc2hhZG93Lmggc2lnbmFsLmggc3RkaW50Lmggc3Ryb3B0cy5oIHRlcm1pb3MuaCB0aHJlYWQuaCBcCiB1bmlzdGQuaCB1dGltZS5oIFwKIHN5cy9hdWRpb2lvLmggc3lzL2JzZHR0eS5oIHN5cy9lcG9sbC5oIHN5cy9ldmVudC5oIHN5cy9maWxlLmggc3lzL2xvYWRhdmcuaCBcCiBzeXMvbG9jay5oIHN5cy9ta2Rldi5oIHN5cy9tb2RlbS5oIFwKLXN5cy9wYXJhbS5oIHN5cy9wb2xsLmggc3lzL3NlbGVjdC5oIHN5cy9zb2NrZXQuaCBzeXMvc3RhdHZmcy5oIHN5cy9zdGF0LmggXAorc3lzL3BhcmFtLmggc3lzL3BvbGwuaCBzeXMvcmFuZG9tLmggc3lzL3NlbGVjdC5oIHN5cy9zb2NrZXQuaCBzeXMvc3RhdHZmcy5oIHN5cy9zdGF0LmggXAogc3lzL3Rlcm1pby5oIHN5cy90aW1lLmggXAogc3lzL3RpbWVzLmggc3lzL3R5cGVzLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIGxpYnV0aWwuaCBcCiBzeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCi1ibHVldG9vdGgvYmx1ZXRvb3RoLmggbGludXgvdGlwYy5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oCitibHVldG9vdGgvYmx1ZXRvb3RoLmggbGludXgvdGlwYy5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIHN5cy9zeXNtYWNyb3MuaAogZG8gOgogICBhc19hY19IZWFkZXI9YCRhc19lY2hvICJhY19jdl9oZWFkZXJfJGFjX2hlYWRlciIgfCAkYXNfdHJfc2hgCiBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiJGFjX2hlYWRlciIgIiRhc19hY19IZWFkZXIiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKQEAgLTg0NTMsNyArODQ5MSw2IEBACiAgICAgCQk7OwogICAgIAllc2FjCiAKLQkjQVJDSF9SVU5fMzJCSVQ9InRydWUiCiAgICAgZmkKIAogICAgIExJQlRPT0xfQ1JVRlQ9JExJQlRPT0xfQ1JVRlQiIC1sU3lzdGVtIC1sU3lzdGVtU3R1YnMgLWFyY2hfb25seSAke01BQ09TWF9ERUZBVUxUX0FSQ0h9IgpAQCAtODYzMCw5ICs4NjY3LDYgQEAKIAkJCWZpCiAJCWVsc2UKIAkJCSMgYnVpbGRpbmcgZm9yIE9TIFggMTAuMyBhbmQgbGF0ZXIKLQkJCWlmIHRlc3QgIiR7ZW5hYmxlX3VuaXZlcnNhbHNka30iOyB0aGVuCi0JCQkJTERGTEFHUz0iJHtVTklWRVJTQUxfQVJDSF9GTEFHU30gLWlzeXNyb290ICR7VU5JVkVSU0FMU0RLfSAke0xERkxBR1N9IgotCQkJZmkKIAkJCUxEU0hBUkVEPSckKENDKSAtYnVuZGxlIC11bmRlZmluZWQgZHluYW1pY19sb29rdXAnCiAJCQlMRENYWFNIQVJFRD0nJChDWFgpIC1idW5kbGUgLXVuZGVmaW5lZCBkeW5hbWljX2xvb2t1cCcKIAkJCUJMRFNIQVJFRD0iJExEU0hBUkVEIgpAQCAtMTA1NzEsNyArMTA2MDUsNyBAQAogIGdhaV9zdHJlcnJvciBnZXRncm91cHMgZ2V0bG9naW4gZ2V0bG9hZGF2ZyBnZXRwZWVybmFtZSBnZXRwZ2lkIGdldHBpZCBcCiAgZ2V0ZW50cm9weSBcCiAgZ2V0cHJpb3JpdHkgZ2V0cmVzdWlkIGdldHJlc2dpZCBnZXRwd2VudCBnZXRzcG5hbSBnZXRzcGVudCBnZXRzaWQgZ2V0d2QgXAotIGluaXRncm91cHMga2lsbCBraWxscGcgbGNobW9kIGxjaG93biBsc3RhdCBta2ZpZm8gbWtub2QgbWt0aW1lIG1tYXAgXAorIGluaXRncm91cHMga2lsbCBraWxscGcgbGNob3duIGxzdGF0IG1rZmlmbyBta25vZCBta3RpbWUgbW1hcCBcCiAgbXJlbWFwIG5pY2UgcGF0aGNvbmYgcGF1c2UgcGxvY2sgcG9sbCBwdGhyZWFkX2luaXQgXAogIHB1dGVudiByZWFkbGluayByZWFscGF0aCBcCiAgc2VsZWN0IHNlbV9vcGVuIHNlbV90aW1lZHdhaXQgc2VtX2dldHZhbHVlIHNlbV91bmxpbmsgc2V0ZWdpZCBzZXRldWlkIFwKQEAgLTEwNTk0LDYgKzEwNjI4LDE3IEBACiBkb25lCiAKIAorIyBGb3JjZSBsY2htb2Qgb2ZmIGZvciBMaW51eC4gTGludXggZGlzYWxsb3dzIGNoYW5naW5nIHRoZSBtb2RlIG9mIHN5bWJvbGljCisjIGxpbmtzLiBTb21lIGxpYmMgaW1wbGVtZW50YXRpb25zIGhhdmUgYSBzdHViIGxjaG1vZCBpbXBsZW1lbnRhdGlvbiB0aGF0IGFsd2F5cworIyByZXR1cm5zIGFuIGVycm9yLgoraWYgdGVzdCAiJE1BQ0hERVAiICE9IGxpbnV4OyB0aGVuCisgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImxjaG1vZCIgImFjX2N2X2Z1bmNfbGNobW9kIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2xjaG1vZCIgPSB4eWVzOyB0aGVuIDoKKworZmkKKworZmkKKwogIyBGb3Igc29tZSBmdW5jdGlvbnMsIGhhdmluZyBhIGRlZmluaXRpb24gaXMgbm90IHN1ZmZpY2llbnQsIHNpbmNlCiAjIHdlIHdhbnQgdG8gdGFrZSB0aGVpciBhZGRyZXNzLgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY2hyb290IiA+JjUKQEAgLTE0NjUxLDYgKzE0Njk2LDEwIEBACiAKIGZpCiAKKyMgSXNzdWUgIzI1NzIwOiBuY3Vyc2VzIGhhcyBpbnRyb2R1Y2VkIHRoZSBOQ1VSU0VTX09QQVFVRSBzeW1ib2wgbWFraW5nIG9wYXF1ZQorIyBzdHJ1Y3RzIHNpbmNlIHZlcnNpb24gNS43LiAgSWYgdGhlIG1hY3JvIGlzIGRlZmluZWQgYXMgemVybyBiZWZvcmUgaW5jbHVkaW5nCisjIFtuXWN1cnNlcy5oLCBuY3Vyc2VzIHdpbGwgZXhwb3NlIGZpZWxkcyBvZiB0aGUgc3RydWN0cyByZWdhcmRsZXNzIG9mIHRoZQorIyBjb25maWd1cmF0aW9uLgogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIFdJTkRPVyBoYXMgX2ZsYWdzIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgV0lORE9XIGhhcyBfZmxhZ3MuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3Zfd2luZG93X2hhc19mbGFncys6fSBmYWxzZTsgdGhlbiA6CkBAIC0xNDY1OCw3ICsxNDcwNywxMCBAQAogZWxzZQogICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0jaW5jbHVkZSA8Y3Vyc2VzLmg+CisKKyAgI2RlZmluZSBOQ1VSU0VTX09QQVFVRSAwCisgICNpbmNsdWRlIDxjdXJzZXMuaD4KKwogaW50CiBtYWluICgpCiB7CkBAIC0xNDY4OSw2ICsxNDc0MSwzNiBAQAogCiBmaQogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpc19wYWQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGlzX3BhZC4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGN1cnNlcy5oPgoraW50CittYWluICgpCit7CisKKyNpZm5kZWYgaXNfcGFkCit2b2lkICp4PWlzX3BhZAorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0NVUlNFU19JU19QQUQgMSIgPj5jb25mZGVmcy5oCisKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGlzX3Rlcm1fcmVzaXplZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgaXNfdGVybV9yZXNpemVkLi4uICIgPiY2OyB9CiBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CkBAIC0xNDc2Niw2ICsxNDg0OCwyMTYgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBpbW1lZG9rIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBpbW1lZG9rLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8Y3Vyc2VzLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiBpbW1lZG9rCit2b2lkICp4PWltbWVkb2sKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DVVJTRVNfSU1NRURPSyAxIiA+PmNvbmZkZWZzLmgKKworICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3luY29rIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeW5jb2suLi4gIiA+JjY7IH0KK2NhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyNpbmNsdWRlIDxjdXJzZXMuaD4KK2ludAorbWFpbiAoKQoreworCisjaWZuZGVmIHN5bmNvawordm9pZCAqeD1zeW5jb2sKKyNlbmRpZgorCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DVVJTRVNfU1lOQ09LIDEiID4+Y29uZmRlZnMuaAorCisgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB3Y2hnYXQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHdjaGdhdC4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGN1cnNlcy5oPgoraW50CittYWluICgpCit7CisKKyNpZm5kZWYgd2NoZ2F0Cit2b2lkICp4PXdjaGdhdAorI2VuZGlmCisKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX0NVUlNFU19XQ0hHQVQgMSIgPj5jb25mZGVmcy5oCisKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGZpbHRlciIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgZmlsdGVyLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8Y3Vyc2VzLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiBmaWx0ZXIKK3ZvaWQgKng9ZmlsdGVyCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQ1VSU0VTX0ZJTFRFUiAxIiA+PmNvbmZkZWZzLmgKKworICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgaGFzX2tleSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgaGFzX2tleS4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGN1cnNlcy5oPgoraW50CittYWluICgpCit7CisKKyNpZm5kZWYgaGFzX2tleQordm9pZCAqeD1oYXNfa2V5CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQ1VSU0VTX0hBU19LRVkgMSIgPj5jb25mZGVmcy5oCisKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHR5cGVhaGVhZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdHlwZWFoZWFkLi4uICIgPiY2OyB9CitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisjaW5jbHVkZSA8Y3Vyc2VzLmg+CitpbnQKK21haW4gKCkKK3sKKworI2lmbmRlZiB0eXBlYWhlYWQKK3ZvaWQgKng9dHlwZWFoZWFkCisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQ1VSU0VTX1RZUEVBSEVBRCAxIiA+PmNvbmZkZWZzLmgKKworICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KK2Vsc2UKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdXNlX2VudiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgdXNlX2Vudi4uLiAiID4mNjsgfQorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPGN1cnNlcy5oPgoraW50CittYWluICgpCit7CisKKyNpZm5kZWYgdXNlX2Vudgordm9pZCAqeD11c2VfZW52CisjZW5kaWYKKworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfQ1VSU0VTX1VTRV9FTlYgMSIgPj5jb25mZGVmcy5oCisKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAjIGxhc3QgY3Vyc2VzIGNvbmZpZ3VyZSBjaGVjawogQ1BQRkxBR1M9JGFjX3NhdmVfY3BwZmxhZ3MKIApAQCAtMTUwNDAsNyArMTUzMzIsNyBAQAogZG9uZQogCiAKLVNSQ0RJUlM9IlBhcnNlciBHcmFtbWFyIE9iamVjdHMgUHl0aG9uIE1vZHVsZXMgTWFjIgorU1JDRElSUz0iUGFyc2VyIE9iamVjdHMgUHl0aG9uIE1vZHVsZXMiCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBidWlsZCBkaXJlY3RvcmllcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgYnVpbGQgZGlyZWN0b3JpZXMuLi4gIiA+JjY7IH0KIGZvciBkaXIgaW4gJFNSQ0RJUlM7IGRvCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggMTI3MzQ2NS4uMzM4NzA5NiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMTksNiArMTksOSBAQAogIyBweWJ1aWxkZGlyLnR4dCB3aWxsIGJlIGNyZWF0ZWQgYnkgLS1nZW5lcmF0ZS1wb3NpeC12YXJzIGluIHRoZSBNYWtlZmlsZQogcm0gLWYgcHlidWlsZGRpci50eHQKIAorQUNfQ0hFQ0tfUFJPR1MoUFlUSE9OX0ZPUl9SRUdFTiwgcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBweXRob24zIHB5dGhvbiwgcHl0aG9uMykKK0FDX1NVQlNUKFBZVEhPTl9GT1JfUkVHRU4pCisKIGlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuCiAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcHl0aG9uIGludGVycHJldGVyIGZvciBjcm9zcyBidWlsZF0pCiAgICAgaWYgdGVzdCAteiAiJFBZVEhPTl9GT1JfQlVJTEQiOyB0aGVuCkBAIC0zNSwxNiArMzgsMTIgQEAKICAgICAgICAgQUNfTVNHX1JFU1VMVCgkaW50ZXJwKQogCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAnJGludGVycAogICAgIGZpCi0gICAgIyBVc2VkIHRvIGNvbW1lbnQgb3V0IHN0dWZmIGZvciByZWJ1aWxkaW5nIGdlbmVyYXRlZCBmaWxlcwotICAgIEdFTkVSQVRFRF9DT01NRU5UPScjJwogZWxpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG1heWJlOyB0aGVuCiAgICAgQUNfTVNHX0VSUk9SKFtDcm9zcyBjb21waWxpbmcgcmVxdWlyZWQgLS1ob3N0PUhPU1QtVFVQTEUgYW5kIC0tYnVpbGQ9QVJDSF0pCiBlbHNlCiAgICAgUFlUSE9OX0ZPUl9CVUlMRD0nLi8kKEJVSUxEUFlUSE9OKSAtRScKLSAgICBHRU5FUkFURURfQ09NTUVOVD0nJwogZmkKIEFDX1NVQlNUKFBZVEhPTl9GT1JfQlVJTEQpCi1BQ19TVUJTVChHRU5FUkFURURfQ09NTUVOVCkKIAogZG5sIEVuc3VyZSB0aGF0IGlmIHByZWZpeCBpcyBzcGVjaWZpZWQsIGl0IGRvZXMgbm90IGVuZCBpbiBhIHNsYXNoLiBJZgogZG5sIGl0IGRvZXMsIHdlIGdldCBwYXRoIG5hbWVzIGNvbnRhaW5pbmcgJy8vJyB3aGljaCBpcyBib3RoIHVnbHkgYW5kCkBAIC0xMTQsMTQgKzExMywyMCBAQAogCiBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAtLWVuYWJsZS11bml2ZXJzYWxzZGtdKQogQUNfQVJHX0VOQUJMRSh1bml2ZXJzYWxzZGssCi0JQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXVuaXZlcnNhbHNka0A8OkA9U0RLRElSQDo+QF0sIFtCdWlsZCBhZ2FpbnN0IE1hYyBPUyBYIDEwLjR1IFNESyAocHBjL2kzODYpXSksCisJQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXVuaXZlcnNhbHNka0A8OkA9U0RLRElSQDo+QF0sIFtCdWlsZCBmYXQgYmluYXJ5IGFnYWluc3QgTWFjIE9TIFggU0RLXSksCiBbCiAJY2FzZSAkZW5hYmxldmFsIGluCiAJeWVzKQotCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkawotCQlpZiB0ZXN0ICEgLWQgIiR7ZW5hYmxldmFsfSIKKwkJIyBMb2NhdGUgdGhlIGJlc3QgdXNhYmxlIFNESywgc2VlIE1hYy9SRUFETUUudHh0IGZvciBtb3JlCisJCSMgaW5mb3JtYXRpb24KKwkJZW5hYmxldmFsPSJgL3Vzci9iaW4veGNvZGVidWlsZCAtdmVyc2lvbiAtc2RrIG1hY29zeCBQYXRoIDI+L2Rldi9udWxsYCIKKwkJaWYgISAoIGVjaG8gJGVuYWJsZXZhbCB8IGdyZXAgLUUgJ1wuc2RrJyAxPi9kZXYvbnVsbCApCiAJCXRoZW4KLQkJCWVuYWJsZXZhbD0vCisJCQllbmFibGV2YWw9L0RldmVsb3Blci9TREtzL01hY09TWDEwLjR1LnNkaworCQkJaWYgdGVzdCAhIC1kICIke2VuYWJsZXZhbH0iCisJCQl0aGVuCisJCQkJZW5hYmxldmFsPS8KKwkJCWZpCiAJCWZpCiAJCTs7CiAJZXNhYwpAQCAtMTM4LDcgKzE0Myw3IEBACiAJCWZpCiAJCTs7CiAJZXNhYwotCQorCiBdLFsKICAgIAlVTklWRVJTQUxTREs9CiAJZW5hYmxlX3VuaXZlcnNhbHNkaz0KQEAgLTE1NCwyNSArMTU5LDM0IEBACiBBQ19TVUJTVChBUkNIX1JVTl8zMkJJVCkKIEFSQ0hfUlVOXzMyQklUPSIiCiAKKyMgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBwcmVmZXIgdG8gc2VsZWN0ICczMi1iaXQnIGlmIGF2YWlsYWJsZSwKKyMgb3RoZXJ3aXNlIHVzZSAnaW50ZWwnCiBVTklWRVJTQUxfQVJDSFM9IjMyLWJpdCIKK2lmIHRlc3QgImB1bmFtZSAtc2AiID0gIkRhcndpbiIKK3RoZW4KKwlpZiB0ZXN0IC1uICIke1VOSVZFUlNBTFNES30iCisJdGhlbgorCQlpZiB0ZXN0IC16ICJgL3Vzci9iaW4vZmlsZSAtTCAiJHtVTklWRVJTQUxTREt9L3Vzci9saWIvbGliU3lzdGVtLmR5bGliIiB8IGdyZXAgcHBjYCIKKwkJdGhlbgorCQkJVU5JVkVSU0FMX0FSQ0hTPSJpbnRlbCIKKwkJZmkKKwlmaQorZmkKKwogQUNfU1VCU1QoTElQT18zMkJJVF9GTEFHUykKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLXVuaXZlcnNhbC1hcmNocykKIEFDX0FSR19XSVRIKHVuaXZlcnNhbC1hcmNocywKLSAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXVuaXZlcnNhbC1hcmNocz1BUkNIXSwgW3NlbGVjdCBhcmNoaXRlY3R1cmVzIGZvciB1bml2ZXJzYWwgYnVpbGQgKCIzMi1iaXQiLCAiNjQtYml0IiwgIjMtd2F5IiwgImludGVsIiBvciAiYWxsIildKSwKKyAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXVuaXZlcnNhbC1hcmNocz1BUkNIXSwgW3NlbGVjdCBhcmNoaXRlY3R1cmVzIGZvciB1bml2ZXJzYWwgYnVpbGQgKCIzMi1iaXQiLCAiNjQtYml0IiwgIjMtd2F5IiwgImludGVsIiwgImludGVsLTMyIiwgImludGVsLTY0Iiwgb3IgImFsbCIpXSksCiBbCi0JQUNfTVNHX1JFU1VMVCgkd2l0aHZhbCkKIAlVTklWRVJTQUxfQVJDSFM9IiR3aXRodmFsIgotICAgICAgICBpZiB0ZXN0ICIke2VuYWJsZV91bml2ZXJzYWxzZGt9IiA7IHRoZW4KLQkJOgotCWVsc2UKLQkJQUNfTVNHX0VSUk9SKFstLXdpdGgtdW5pdmVyc2FsLWFyY2hzIHdpdGhvdXQgLS1lbmFibGUtdW5pdmVyc2Fsc2RrLiBTZWUgTWFjL1JFQURNRV0pCi0JZmkKIF0sCi1bCi0gCUFDX01TR19SRVNVTFQoMzItYml0KQotXSkKLQotCitbXSkKK2lmIHRlc3QgLW4gIiR7VU5JVkVSU0FMU0RLfSIKK3RoZW4KKwlBQ19NU0dfUkVTVUxUKCR7VU5JVkVSU0FMX0FSQ0hTfSkKK2Vsc2UKKwlBQ19NU0dfUkVTVUxUKG5vKQorZmkKIAogQUNfQVJHX1dJVEgoZnJhbWV3b3JrLW5hbWUsCiAgICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtZnJhbWV3b3JrLW5hbWU9RlJBTUVXT1JLXSwKQEAgLTk3OSwyOCArOTkzLDI1IEBACiAgICAgICAgIEFSRkxBR1M9InJjIgogZmkKIAotQUNfU1VCU1QoU1ZOVkVSU0lPTikKLUFDX0NIRUNLX1BST0coU1ZOVkVSU0lPTiwgc3ZudmVyc2lvbiwgZm91bmQsIG5vdC1mb3VuZCkKLWlmIHRlc3QgJFNWTlZFUlNJT04gPSBmb3VuZAotdGhlbgotCVNWTlZFUlNJT049InN2bnZlcnNpb24gXCQoc3JjZGlyKSIKLWVsc2UKLQlTVk5WRVJTSU9OPSJlY2hvIFVudmVyc2lvbmVkIGRpcmVjdG9yeSIKLWZpCitBQ19TVUJTVChHSVRWRVJTSU9OKQorQUNfU1VCU1QoR0lUVEFHKQorQUNfU1VCU1QoR0lUQlJBTkNIKQogCi1BQ19TVUJTVChIR1ZFUlNJT04pCi1BQ19TVUJTVChIR1RBRykKLUFDX1NVQlNUKEhHQlJBTkNIKQotQUNfQ0hFQ0tfUFJPRyhIQVNfSEcsIGhnLCBmb3VuZCwgbm90LWZvdW5kKQotaWYgdGVzdCAkSEFTX0hHID0gZm91bmQKK2lmIHRlc3QgLWUgJHNyY2Rpci8uZ2l0CiB0aGVuCi0gICAgSEdWRVJTSU9OPSJoZyBpZCAtaSBcJChzcmNkaXIpIgotICAgIEhHVEFHPSJoZyBpZCAtdCBcJChzcmNkaXIpIgotICAgIEhHQlJBTkNIPSJoZyBpZCAtYiBcJChzcmNkaXIpIgorQUNfQ0hFQ0tfUFJPRyhIQVNfR0lULCBnaXQsIGZvdW5kLCBub3QtZm91bmQpCiBlbHNlCi0gICAgSEdWRVJTSU9OPSIiCi0gICAgSEdUQUc9IiIKLSAgICBIR0JSQU5DSD0iIgorSEFTX0dJVD1uby1yZXBvc2l0b3J5CitmaQoraWYgdGVzdCAkSEFTX0dJVCA9IGZvdW5kCit0aGVuCisgICAgR0lUVkVSU0lPTj0iZ2l0IC0tZ2l0LWRpciBcJChzcmNkaXIpLy5naXQgcmV2LXBhcnNlIC0tc2hvcnQgSEVBRCIKKyAgICBHSVRUQUc9ImdpdCAtLWdpdC1kaXIgXCQoc3JjZGlyKS8uZ2l0IGRlc2NyaWJlIC0tYWxsIC0tYWx3YXlzIC0tZGlydHkiCisgICAgR0lUQlJBTkNIPSJnaXQgLS1naXQtZGlyIFwkKHNyY2RpcikvLmdpdCBuYW1lLXJldiAtLW5hbWUtb25seSBIRUFEIgorZWxzZQorICAgIEdJVFZFUlNJT049IiIKKyAgICBHSVRUQUc9IiIKKyAgICBHSVRCUkFOQ0g9IiIKIGZpCiAKIGNhc2UgJE1BQ0hERVAgaW4KQEAgLTExNDAsMTE3ICsxMTUxLDEzMyBAQAogCVNDT19TViopCiAJICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1tNDg2IC1EU0NPNSIKIAkgICAgOzsKLQkjIGlzIHRoZXJlIGFueSBvdGhlciBjb21waWxlciBvbiBEYXJ3aW4gYmVzaWRlcyBnY2M/Ci0JRGFyd2luKikKLQkgICAgIyAtV25vLWxvbmctZG91YmxlLCAtbm8tY3BwLXByZWNvbXAsIGFuZCAtbW5vLWZ1c2VkLW1hZGQKLQkgICAgIyB1c2VkIHRvIGJlIGhlcmUsIGJ1dCBub24tQXBwbGUgZ2NjIGRvZXNuJ3QgYWNjZXB0IHRoZW0uCi0JICAgIGlmIHRlc3QgIiR7Q0N9IiA9IGdjYwotCSAgICB0aGVuCi0JCUFDX01TR19DSEVDS0lORyh3aGljaCBjb21waWxlciBzaG91bGQgYmUgdXNlZCkKLQkJY2FzZSAiJHtVTklWRVJTQUxTREt9IiBpbgotCQkqL01hY09TWDEwLjR1LnNkaykKLQkJCSMgQnVpbGQgdXNpbmcgMTAuNCBTREssIGZvcmNlIHVzYWdlIG9mIGdjYyB3aGVuIHRoZSAKLQkJCSMgY29tcGlsZXIgaXMgZ2NjLCBvdGhlcndpc2UgdGhlIHVzZXIgd2lsbCBnZXQgdmVyeQotCQkJIyBjb25mdXNpbmcgZXJyb3IgbWVzc2FnZXMgd2hlbiBidWlsZGluZyBvbiBPU1ggMTAuNgotCQkJQ0M9Z2NjLTQuMAotCQkJQ1BQPWNwcC00LjAKLQkJCTs7Ci0JCWVzYWMKLQkJQUNfTVNHX1JFU1VMVCgkQ0MpCi0JICAgIGZpCisgICAgIyBpcyB0aGVyZSBhbnkgb3RoZXIgY29tcGlsZXIgb24gRGFyd2luIGJlc2lkZXMgZ2NjPworICAgIERhcndpbiopCisgICAgICAgICMgLVduby1sb25nLWRvdWJsZSwgLW5vLWNwcC1wcmVjb21wLCBhbmQgLW1uby1mdXNlZC1tYWRkCisgICAgICAgICMgdXNlZCB0byBiZSBoZXJlLCBidXQgbm9uLUFwcGxlIGdjYyBkb2Vzbid0IGFjY2VwdCB0aGVtLgorICAgICAgICBpZiB0ZXN0ICIke0NDfSIgPSBnY2MKKyAgICAgICAgdGhlbgorICAgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKHdoaWNoIGNvbXBpbGVyIHNob3VsZCBiZSB1c2VkKQorICAgICAgICAgICAgY2FzZSAiJHtVTklWRVJTQUxTREt9IiBpbgorICAgICAgICAgICAgKi9NYWNPU1gxMC40dS5zZGspCisgICAgICAgICAgICAgICAgIyBCdWlsZCB1c2luZyAxMC40IFNESywgZm9yY2UgdXNhZ2Ugb2YgZ2NjIHdoZW4gdGhlCisgICAgICAgICAgICAgICAgIyBjb21waWxlciBpcyBnY2MsIG90aGVyd2lzZSB0aGUgdXNlciB3aWxsIGdldCB2ZXJ5CisgICAgICAgICAgICAgICAgIyBjb25mdXNpbmcgZXJyb3IgbWVzc2FnZXMgd2hlbiBidWlsZGluZyBvbiBPU1ggMTAuNgorICAgICAgICAgICAgICAgIENDPWdjYy00LjAKKyAgICAgICAgICAgICAgICBDUFA9Y3BwLTQuMAorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKCRDQykKKyAgICAgICAgZmkKIAotCSAgICAjIENhbGN1bGF0ZSB0aGUgcmlnaHQgZGVwbG95bWVudCB0YXJnZXQgZm9yIHRoaXMgYnVpbGQuCi0JICAgICMKLQkJY3VyX3RhcmdldF9tYWpvcj1gc3dfdmVycyAtcHJvZHVjdFZlcnNpb24gfCBcCi0JCQkJc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDEvJ2AKLQkJY3VyX3RhcmdldF9taW5vcj1gc3dfdmVycyAtcHJvZHVjdFZlcnNpb24gfCBcCi0JCQkJc2VkICdzL1woW1swLTldXSpcKVwuXChbWzAtOV1dKlwpLiovXDIvJ2AKLQkJY3VyX3RhcmdldD0iJHtjdXJfdGFyZ2V0X21ham9yfS4ke2N1cl90YXJnZXRfbWlub3J9IgotCQlpZiB0ZXN0ICR7Y3VyX3RhcmdldF9tYWpvcn0gLWVxIDEwICYmIFwKLQkJICAgdGVzdCAke2N1cl90YXJnZXRfbWlub3J9IC1nZSAzCi0JCXRoZW4KLQkJICAgIGN1cl90YXJnZXQ9MTAuMwotCQkgICAgaWYgdGVzdCAke2VuYWJsZV91bml2ZXJzYWxzZGt9OyB0aGVuCi0JCQkgICAgaWYgdGVzdCAiJHtVTklWRVJTQUxfQVJDSFN9IiA9ICJhbGwiOyB0aGVuCi0JCQkJICAgICMgRW5zdXJlIHRoYXQgdGhlIGRlZmF1bHQgcGxhdGZvcm0gZm9yIGEgCi0JCQkJICAgICMgNC13YXkgdW5pdmVyc2FsIGJ1aWxkIGlzIE9TWCAxMC41LCAKLQkJCQkgICAgIyB0aGF0J3MgdGhlIGZpcnN0IE9TIHJlbGVhc2Ugd2hlcmUgCi0JCQkJICAgICMgNC13YXkgYnVpbGRzIG1ha2Ugc2Vuc2UuCi0JCQkJICAgIGN1cl90YXJnZXQ9JzEwLjUnCisgICAgICAgIGlmIHRlc3QgIiR7ZW5hYmxlX3VuaXZlcnNhbHNka30iCisgICAgICAgIHRoZW4KKyAgICAgICAgICAgIGNhc2UgIiRVTklWRVJTQUxfQVJDSFMiIGluCisgICAgICAgICAgICAzMi1iaXQpCisgICAgICAgICAgICAgICBVTklWRVJTQUxfQVJDSF9GTEFHUz0iLWFyY2ggcHBjIC1hcmNoIGkzODYiCisgICAgICAgICAgICAgICBMSVBPXzMyQklUX0ZMQUdTPSIiCisgICAgICAgICAgICAgICBBUkNIX1JVTl8zMkJJVD0iIgorICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIDY0LWJpdCkKKyAgICAgICAgICAgICAgIFVOSVZFUlNBTF9BUkNIX0ZMQUdTPSItYXJjaCBwcGM2NCAtYXJjaCB4ODZfNjQiCisgICAgICAgICAgICAgICBMSVBPXzMyQklUX0ZMQUdTPSIiCisgICAgICAgICAgICAgICBBUkNIX1JVTl8zMkJJVD0iIgorICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIGFsbCkKKyAgICAgICAgICAgICAgIFVOSVZFUlNBTF9BUkNIX0ZMQUdTPSItYXJjaCBpMzg2IC1hcmNoIHBwYyAtYXJjaCBwcGM2NCAtYXJjaCB4ODZfNjQiCisgICAgICAgICAgICAgICBMSVBPXzMyQklUX0ZMQUdTPSItZXh0cmFjdCBwcGM3NDAwIC1leHRyYWN0IGkzODYiCisgICAgICAgICAgICAgICBBUkNIX1JVTl8zMkJJVD0iL3Vzci9iaW4vYXJjaCAtaTM4NiAtcHBjIgorICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIGludGVsKQorICAgICAgICAgICAgICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIGkzODYgLWFyY2ggeDg2XzY0IgorICAgICAgICAgICAgICAgTElQT18zMkJJVF9GTEFHUz0iLWV4dHJhY3QgaTM4NiIKKyAgICAgICAgICAgICAgIEFSQ0hfUlVOXzMyQklUPSIvdXNyL2Jpbi9hcmNoIC1pMzg2IgorICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIGludGVsLTMyKQorICAgICAgICAgICAgICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIGkzODYiCisgICAgICAgICAgICAgICBMSVBPXzMyQklUX0ZMQUdTPSIiCisgICAgICAgICAgICAgICBBUkNIX1JVTl8zMkJJVD0iIgorICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIGludGVsLTY0KQorICAgICAgICAgICAgICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIHg4Nl82NCIKKyAgICAgICAgICAgICAgIExJUE9fMzJCSVRfRkxBR1M9IiIKKyAgICAgICAgICAgICAgIEFSQ0hfUlVOXzMyQklUPSIiCisgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgMy13YXkpCisgICAgICAgICAgICAgICBVTklWRVJTQUxfQVJDSF9GTEFHUz0iLWFyY2ggaTM4NiAtYXJjaCBwcGMgLWFyY2ggeDg2XzY0IgorICAgICAgICAgICAgICAgTElQT18zMkJJVF9GTEFHUz0iLWV4dHJhY3QgcHBjNzQwMCAtZXh0cmFjdCBpMzg2IgorICAgICAgICAgICAgICAgQVJDSF9SVU5fMzJCSVQ9Ii91c3IvYmluL2FyY2ggLWkzODYgLXBwYyIKKyAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtwcm9wZXIgdXNhZ2UgaXMgLS13aXRoLXVuaXZlcnNhbC1hcmNoPTMyLWJpdHw2NC1iaXR8YWxsfGludGVsfDMtd2F5XSkKKyAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBlc2FjCiAKLQkJCSAgICBlbGlmIHRlc3QgIiR7VU5JVkVSU0FMX0FSQ0hTfSIgPSAiMy13YXkiOyB0aGVuCi0JCQkJICAgIGN1cl90YXJnZXQ9JzEwLjUnCisgICAgICAgICAgICBpZiB0ZXN0ICIke1VOSVZFUlNBTFNES30iICE9ICIvIgorICAgICAgICAgICAgdGhlbgorICAgICAgICAgICAgICAgIENGTEFHUz0iJHtVTklWRVJTQUxfQVJDSF9GTEFHU30gLWlzeXNyb290ICR7VU5JVkVSU0FMU0RLfSAke0NGTEFHU30iCisgICAgICAgICAgICAgICAgTERGTEFHUz0iJHtVTklWRVJTQUxfQVJDSF9GTEFHU30gLWlzeXNyb290ICR7VU5JVkVSU0FMU0RLfSAke0xERkxBR1N9IgorICAgICAgICAgICAgICAgIENQUEZMQUdTPSItaXN5c3Jvb3QgJHtVTklWRVJTQUxTREt9ICR7Q1BQRkxBR1N9IgorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIENGTEFHUz0iJHtVTklWRVJTQUxfQVJDSF9GTEFHU30gJHtDRkxBR1N9IgorICAgICAgICAgICAgICAgIExERkxBR1M9IiR7VU5JVkVSU0FMX0FSQ0hfRkxBR1N9ICR7TERGTEFHU30iCisgICAgICAgICAgICBmaQorICAgICAgICBmaQogCi0JCQkgICAgZWxpZiB0ZXN0ICIke1VOSVZFUlNBTF9BUkNIU30iID0gImludGVsIjsgdGhlbgotCQkJCSAgICBjdXJfdGFyZ2V0PScxMC41JworICAgICAgICAjIENhbGN1bGF0ZSBhbiBhcHByb3ByaWF0ZSBkZXBsb3ltZW50IHRhcmdldCBmb3IgdGhpcyBidWlsZDoKKyAgICAgICAgIyBUaGUgZGVwbG95bWVudCB0YXJnZXQgdmFsdWUgaXMgdXNlZCBleHBsaWNpdGx5IHRvIGVuYWJsZSBjZXJ0YWluCisgICAgICAgICMgZmVhdHVyZXMgYXJlIGVuYWJsZWQgKHN1Y2ggYXMgYnVpbHRpbiBsaWJlZGl0IHN1cHBvcnQgZm9yIHJlYWRsaW5lKQorICAgICAgICAjIHRocm91Z2ggdGhlIHVzZSBvZiBBcHBsZSdzIEF2YWlsYWJpbGl0eSBNYWNyb3MgYW5kIGlzIHVzZWQgYXMgYQorICAgICAgICAjIGNvbXBvbmVudCBvZiB0aGUgc3RyaW5nIHJldHVybmVkIGJ5IGRpc3R1dGlscy5nZXRfcGxhdGZvcm0oKS4KKyAgICAgICAgIworICAgICAgICAjIFVzZSB0aGUgdmFsdWUgZnJvbToKKyAgICAgICAgIyAxLiB0aGUgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHNwZWNpZmllZAorICAgICAgICAjIDIuIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHZlcnNpb24gb2YgdGhlIGJ1aWxkIG1hY2hpbmUgaWYgPj0gMTAuNgorICAgICAgICAjIDMuIElmIHJ1bm5pbmcgb24gT1MgWCAxMC4zIHRocm91Z2ggMTAuNSwgdXNlIHRoZSBsZWdhY3kgdGVzdHMKKyAgICAgICAgIyAgICAgICBiZWxvdyB0byBwaWNrIGVpdGhlciAxMC4zLCAxMC40LCBvciAxMC41IGFzIHRoZSB0YXJnZXQuCisgICAgICAgICMgNC4gSWYgd2UgYXJlIHJ1bm5pbmcgb24gT1MgWCAxMC4yIG9yIGVhcmxpZXIsIGdvb2QgbHVjayEKIAotCQkJICAgIGVsaWYgdGVzdCAiJHtVTklWRVJTQUxfQVJDSFN9IiA9ICI2NC1iaXQiOyB0aGVuCi0JCQkJICAgIGN1cl90YXJnZXQ9JzEwLjUnCi0JCQkgICAgZmkKLQkJICAgIGVsc2UKLQkJCSAgICBpZiB0ZXN0IGAvdXNyL2Jpbi9hcmNoYCA9ICJpMzg2IjsgdGhlbgotCQkJCSAgICAjIE9uIEludGVsIG1hY3MgZGVmYXVsdCB0byBhIGRlcGxveW1lbnQKLQkJCQkgICAgIyB0YXJnZXQgb2YgMTAuNCwgdGhhdCdzIHRoZSBmaXJzdCBPU1gKLQkJCQkgICAgIyByZWxlYXNlIHdpdGggSW50ZWwgc3VwcG9ydC4KLQkJCQkgICAgY3VyX3RhcmdldD0iMTAuNCIKLQkJCSAgICBmaQotCQkgICAgZmkKLQkgICAgZmkKLQkgICAgQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVD0ke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0ke2N1cl90YXJnZXR9fQotCSAgICAKLQkgICAgIyBNYWtlIHN1cmUgdGhhdCBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQgaXMgc2V0IGluIHRoZSAKLQkgICAgIyBlbnZpcm9ubWVudCB3aXRoIGEgdmFsdWUgdGhhdCBpcyB0aGUgc2FtZSBhcyB3aGF0IHdlJ2xsIHVzZQotCSAgICAjIGluIHRoZSBNYWtlZmlsZSB0byBlbnN1cmUgdGhhdCB3ZSdsbCBnZXQgdGhlIHNhbWUgY29tcGlsZXIKLQkgICAgIyBlbnZpcm9ubWVudCBkdXJpbmcgY29uZmlndXJlIGFuZCBidWlsZCB0aW1lLgotCSAgICBNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9IiRDT05GSUdVUkVfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIgotCSAgICBleHBvcnQgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCi0JICAgIEVYUE9SVF9NQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQ9JycKKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKHdoaWNoIE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCB0byB1c2UpCisgICAgICAgIGN1cl90YXJnZXRfbWFqb3I9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgXAorICAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wxLydgCisgICAgICAgIGN1cl90YXJnZXRfbWlub3I9YHN3X3ZlcnMgLXByb2R1Y3RWZXJzaW9uIHwgXAorICAgICAgICAgICAgICAgIHNlZCAncy9cKFtbMC05XV0qXClcLlwoW1swLTldXSpcKS4qL1wyLydgCisgICAgICAgIGN1cl90YXJnZXQ9IiR7Y3VyX3RhcmdldF9tYWpvcn0uJHtjdXJfdGFyZ2V0X21pbm9yfSIKKyAgICAgICAgaWYgdGVzdCAke2N1cl90YXJnZXRfbWFqb3J9IC1lcSAxMCAmJiBcCisgICAgICAgICAgIHRlc3QgJHtjdXJfdGFyZ2V0X21pbm9yfSAtZ2UgMyAmJiBcCisgICAgICAgICAgIHRlc3QgJHtjdXJfdGFyZ2V0X21pbm9yfSAtbGUgNQorICAgICAgICB0aGVuCisgICAgICAgICAgICAjIE9TIFggMTAuMyB0aHJvdWdoIDEwLjUKKyAgICAgICAgICAgIGN1cl90YXJnZXQ9MTAuMworICAgICAgICAgICAgaWYgdGVzdCAke2VuYWJsZV91bml2ZXJzYWxzZGt9CisgICAgICAgICAgICB0aGVuCisgICAgICAgICAgICAgICAgY2FzZSAiJFVOSVZFUlNBTF9BUkNIUyIgaW4KKyAgICAgICAgICAgICAgICBhbGx8My13YXl8aW50ZWx8NjQtYml0KQorICAgICAgICAgICAgICAgICAgICAjIFRoZXNlIGNvbmZpZ3VyYXRpb25zIHdlcmUgZmlyc3Qgc3VwcG9ydGVkIGluIDEwLjUKKyAgICAgICAgICAgICAgICAgICAgY3VyX3RhcmdldD0nMTAuNScKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgaWYgdGVzdCBgL3Vzci9iaW4vYXJjaGAgPSAiaTM4NiIKKyAgICAgICAgICAgICAgICB0aGVuCisgICAgICAgICAgICAgICAgICAgICMgMTAuNCB3YXMgdGhlIGZpcnN0IHJlbGVhc2UgdG8gc3VwcG9ydCBJbnRlbCBhcmNocworICAgICAgICAgICAgICAgICAgICBjdXJfdGFyZ2V0PSIxMC40IgorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgICBDT05GSUdVUkVfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPSR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULSR7Y3VyX3RhcmdldH19CiAKLQkgICAgaWYgdGVzdCAiJHtlbmFibGVfdW5pdmVyc2Fsc2RrfSI7IHRoZW4KLQkJVU5JVkVSU0FMX0FSQ0hfRkxBR1M9IiIKLQkgICAgICAgIGlmIHRlc3QgIiRVTklWRVJTQUxfQVJDSFMiID0gIjMyLWJpdCIgOyB0aGVuCi0JCSAgIFVOSVZFUlNBTF9BUkNIX0ZMQUdTPSItYXJjaCBwcGMgLWFyY2ggaTM4NiIKLQkJICAgQVJDSF9SVU5fMzJCSVQ9IiIKLQkJICAgTElQT18zMkJJVF9GTEFHUz0iIgorICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCBpcyBzZXQgaW4gdGhlCisgICAgICAgICMgZW52aXJvbm1lbnQgd2l0aCBhIHZhbHVlIHRoYXQgaXMgdGhlIHNhbWUgYXMgd2hhdCB3ZSdsbCB1c2UKKyAgICAgICAgIyBpbiB0aGUgTWFrZWZpbGUgdG8gZW5zdXJlIHRoYXQgd2UnbGwgZ2V0IHRoZSBzYW1lIGNvbXBpbGVyCisgICAgICAgICMgZW52aXJvbm1lbnQgZHVyaW5nIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGltZS4KKyAgICAgICAgTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPSIkQ09ORklHVVJFX01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCIKKyAgICAgICAgZXhwb3J0IE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVAorICAgICAgICBFWFBPUlRfTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUPScnCisgICAgICAgIEFDX01TR19SRVNVTFQoJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCkKIAotCSAgICAgICAgIGVsaWYgdGVzdCAiJFVOSVZFUlNBTF9BUkNIUyIgPSAiNjQtYml0IiA7IHRoZW4KLQkJICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIHBwYzY0IC1hcmNoIHg4Nl82NCIKLQkJICAgTElQT18zMkJJVF9GTEFHUz0iIgotCQkgICBBUkNIX1JVTl8zMkJJVD0idHJ1ZSIKLQotCSAgICAgICAgIGVsaWYgdGVzdCAiJFVOSVZFUlNBTF9BUkNIUyIgPSAiYWxsIiA7IHRoZW4KLQkJICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIGkzODYgLWFyY2ggcHBjIC1hcmNoIHBwYzY0IC1hcmNoIHg4Nl82NCIKLQkJICAgTElQT18zMkJJVF9GTEFHUz0iLWV4dHJhY3QgcHBjNzQwMCAtZXh0cmFjdCBpMzg2IgotCQkgICBBUkNIX1JVTl8zMkJJVD0iL3Vzci9iaW4vYXJjaCAtaTM4NiAtcHBjIgotCi0JICAgICAgICAgZWxpZiB0ZXN0ICIkVU5JVkVSU0FMX0FSQ0hTIiA9ICJpbnRlbCIgOyB0aGVuCi0JCSAgIFVOSVZFUlNBTF9BUkNIX0ZMQUdTPSItYXJjaCBpMzg2IC1hcmNoIHg4Nl82NCIKLQkJICAgTElQT18zMkJJVF9GTEFHUz0iLWV4dHJhY3QgaTM4NiIKLQkJICAgQVJDSF9SVU5fMzJCSVQ9Ii91c3IvYmluL2FyY2ggLWkzODYiCi0KLQkgICAgICAgICBlbGlmIHRlc3QgIiRVTklWRVJTQUxfQVJDSFMiID0gIjMtd2F5IiA7IHRoZW4KLQkJICAgVU5JVkVSU0FMX0FSQ0hfRkxBR1M9Ii1hcmNoIGkzODYgLWFyY2ggcHBjIC1hcmNoIHg4Nl82NCIKLQkJICAgTElQT18zMkJJVF9GTEFHUz0iLWV4dHJhY3QgcHBjNzQwMCAtZXh0cmFjdCBpMzg2IgotCQkgICBBUkNIX1JVTl8zMkJJVD0iL3Vzci9iaW4vYXJjaCAtaTM4NiAtcHBjIgotCi0JCSBlbHNlCi0JICAgICAgICAgICBBQ19NU0dfRVJST1IoW3Byb3BlciB1c2FnZSBpcyAtLXdpdGgtdW5pdmVyc2FsLWFyY2g9MzItYml0fDY0LWJpdHxhbGx8aW50ZWx8My13YXldKQotCi0JCSBmaQotCi0KLQkJQ0ZMQUdTPSIke1VOSVZFUlNBTF9BUkNIX0ZMQUdTfSAke0NGTEFHU30iCi0JCWlmIHRlc3QgIiR7VU5JVkVSU0FMU0RLfSIgIT0gIi8iIAotCQl0aGVuCi0JCQlDUFBGTEFHUz0iLWlzeXNyb290ICR7VU5JVkVSU0FMU0RLfSAke0NQUEZMQUdTfSIKLQkJCUxERkxBR1M9Ii1pc3lzcm9vdCAke1VOSVZFUlNBTFNES30gJHtMREZMQUdTfSIKLQkJCUNGTEFHUz0iLWlzeXNyb290ICR7VU5JVkVSU0FMU0RLfSAke0NGTEFHU30iCi0JCWZpCi0KLQkgICAgZmkKLQotCi0JICAgIDs7CisgICAgICAgICMgZW5kIG9mIERhcndpbiogdGVzdHMKKyAgICAgICAgOzsKIAlPU0YqKQogCSAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtbWllZWUiCiAJICAgIDs7CkBAIC0xMzczLDcgKzE0MDAsNyBAQAogQUNfTVNHX0NIRUNLSU5HKGZvciAtLWVuYWJsZS1vcHRpbWl6YXRpb25zKQogQUNfQVJHX0VOQUJMRShvcHRpbWl6YXRpb25zLCBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtb3B0aW1pemF0aW9uc10sIFtFbmFibGUgZXhwZW5zaXZlIG9wdGltaXphdGlvbnMgKFBHTywgbWF5YmUgTFRPLCBldGMpLiAgRGlzYWJsZWQgYnkgZGVmYXVsdC5dKSwKIFsKLWlmIHRlc3QgIiR3aXRodmFsIiAhPSBubworaWYgdGVzdCAiJGVuYWJsZXZhbCIgIT0gbm8KIHRoZW4KICAgUHlfT1BUPSd0cnVlJwogICBBQ19NU0dfUkVTVUxUKHllcyk7CkBAIC0xMzg3LDcgKzE0MTQsNiBAQAogICAjIGNvbXBpbGUgd29ya2luZyBjb2RlIHVzaW5nIGl0IGFuZCBib3RoIHRlc3RfZGlzdHV0aWxzIGFuZCB0ZXN0X2dkYiBhcmUKICAgIyBicm9rZW4gd2hlbiB5b3UgZG8gbWFuYWdlZCB0byBnZXQgYSB0b29sY2hhaW4gdGhhdCB3b3JrcyB3aXRoIGl0LiAgUGVvcGxlCiAgICMgd2hvIHdhbnQgTFRPIG5lZWQgdG8gdXNlIC0td2l0aC1sdG8gdGhlbXNlbHZlcy4KLSAgUHlfTFRPPSd0cnVlJwogICBERUZfTUFLRV9BTExfUlVMRT0icHJvZmlsZS1vcHQiCiAgIFJFUVVJUkVfUEdPPSJ5ZXMiCiAgIERFRl9NQUtFX1JVTEU9ImJ1aWxkX2FsbCIKQEAgLTE0MjksNiArMTQ1NSwxMyBAQAogICAgICAgZXNhYwogICAgICAgOzsKICAgZXNhYworCisgIGlmIHRlc3QgIiRhY19jdl9wcm9nX2NjX2ciID0gInllcyIKKyAgdGhlbgorICAgICAgIyBicG8tMzAzNDU6IEFkZCAtZyB0byBMREZMQUdTIHdoZW4gY29tcGlsaW5nIHdpdGggTFRPCisgICAgICAjIHRvIGdldCBkZWJ1ZyBzeW1ib2xzLgorICAgICAgTFRPRkxBR1M9IiRMVE9GTEFHUyAtZyIKKyAgZmkKIGZpCiAKIApAQCAtMTY5NSwxOCArMTcyOCwxOCBAQAogCiAjIGNoZWNrcyBmb3IgaGVhZGVyIGZpbGVzCiBBQ19IRUFERVJfU1REQwotQUNfQ0hFQ0tfSEVBREVSUyhhc20vdHlwZXMuaCBjb25pby5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCitBQ19DSEVDS19IRUFERVJTKGFzbS90eXBlcy5oIGNyeXB0LmggY29uaW8uaCBkaXJlY3QuaCBkbGZjbi5oIGVycm5vLmggXAogZmNudGwuaCBncnAuaCBcCiBpZWVlZnAuaCBpby5oIGxhbmdpbmZvLmggbGliaW50bC5oIHBvbGwuaCBwcm9jZXNzLmggcHRocmVhZC5oIFwKIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggdGhyZWFkLmggXAogdW5pc3RkLmggdXRpbWUuaCBcCiBzeXMvYXVkaW9pby5oIHN5cy9ic2R0dHkuaCBzeXMvZXBvbGwuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9sb2FkYXZnLmggXAogc3lzL2xvY2suaCBzeXMvbWtkZXYuaCBzeXMvbW9kZW0uaCBcCi1zeXMvcGFyYW0uaCBzeXMvcG9sbC5oIHN5cy9zZWxlY3QuaCBzeXMvc29ja2V0Lmggc3lzL3N0YXR2ZnMuaCBzeXMvc3RhdC5oIFwKK3N5cy9wYXJhbS5oIHN5cy9wb2xsLmggc3lzL3JhbmRvbS5oIHN5cy9zZWxlY3QuaCBzeXMvc29ja2V0Lmggc3lzL3N0YXR2ZnMuaCBzeXMvc3RhdC5oIFwKIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKIHN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91bi5oIHN5cy91dHNuYW1lLmggc3lzL3dhaXQuaCBwdHkuaCBsaWJ1dGlsLmggXAogc3lzL3Jlc291cmNlLmggbmV0cGFja2V0L3BhY2tldC5oIHN5c2V4aXRzLmggYmx1ZXRvb3RoLmggXAotYmx1ZXRvb3RoL2JsdWV0b290aC5oIGxpbnV4L3RpcGMuaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCkKK2JsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggc3lzL3N5c21hY3Jvcy5oKQogQUNfSEVBREVSX0RJUkVOVAogQUNfSEVBREVSX01BSk9SCiAKQEAgLTIwMzgsNyArMjA3MSw2IEBACiAgICAgCQk7OwogICAgIAllc2FjCiAKLQkjQVJDSF9SVU5fMzJCSVQ9InRydWUiCiAgICAgZmkKIAogICAgIExJQlRPT0xfQ1JVRlQ9JExJQlRPT0xfQ1JVRlQiIC1sU3lzdGVtIC1sU3lzdGVtU3R1YnMgLWFyY2hfb25seSAke01BQ09TWF9ERUZBVUxUX0FSQ0h9IgpAQCAtMjIwMyw5ICsyMjM1LDYgQEAKIAkJCWZpCiAJCWVsc2UKIAkJCSMgYnVpbGRpbmcgZm9yIE9TIFggMTAuMyBhbmQgbGF0ZXIKLQkJCWlmIHRlc3QgIiR7ZW5hYmxlX3VuaXZlcnNhbHNka30iOyB0aGVuCi0JCQkJTERGTEFHUz0iJHtVTklWRVJTQUxfQVJDSF9GTEFHU30gLWlzeXNyb290ICR7VU5JVkVSU0FMU0RLfSAke0xERkxBR1N9IgotCQkJZmkKIAkJCUxEU0hBUkVEPSckKENDKSAtYnVuZGxlIC11bmRlZmluZWQgZHluYW1pY19sb29rdXAnCiAJCQlMRENYWFNIQVJFRD0nJChDWFgpIC1idW5kbGUgLXVuZGVmaW5lZCBkeW5hbWljX2xvb2t1cCcKIAkJCUJMRFNIQVJFRD0iJExEU0hBUkVEIgpAQCAtMzA5Myw3ICszMTIyLDcgQEAKICBnYWlfc3RyZXJyb3IgZ2V0Z3JvdXBzIGdldGxvZ2luIGdldGxvYWRhdmcgZ2V0cGVlcm5hbWUgZ2V0cGdpZCBnZXRwaWQgXAogIGdldGVudHJvcHkgXAogIGdldHByaW9yaXR5IGdldHJlc3VpZCBnZXRyZXNnaWQgZ2V0cHdlbnQgZ2V0c3BuYW0gZ2V0c3BlbnQgZ2V0c2lkIGdldHdkIFwKLSBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG1vZCBsY2hvd24gbHN0YXQgbWtmaWZvIG1rbm9kIG1rdGltZSBtbWFwIFwKKyBpbml0Z3JvdXBzIGtpbGwga2lsbHBnIGxjaG93biBsc3RhdCBta2ZpZm8gbWtub2QgbWt0aW1lIG1tYXAgXAogIG1yZW1hcCBuaWNlIHBhdGhjb25mIHBhdXNlIHBsb2NrIHBvbGwgcHRocmVhZF9pbml0IFwKICBwdXRlbnYgcmVhZGxpbmsgcmVhbHBhdGggXAogIHNlbGVjdCBzZW1fb3BlbiBzZW1fdGltZWR3YWl0IHNlbV9nZXR2YWx1ZSBzZW1fdW5saW5rIHNldGVnaWQgc2V0ZXVpZCBcCkBAIC0zMTA1LDYgKzMxMzQsMTMgQEAKICBzeXNjb25mIHRjZ2V0cGdycCB0Y3NldHBncnAgdGVtcG5hbSB0aW1lZ20gdGltZXMgdG1wZmlsZSB0bXBuYW0gdG1wbmFtX3IgXAogIHRydW5jYXRlIHVuYW1lIHVuc2V0ZW52IHV0aW1lcyB3YWl0cGlkIHdhaXQzIHdhaXQ0IHdjc2NvbGwgX2dldHB0eSkKIAorIyBGb3JjZSBsY2htb2Qgb2ZmIGZvciBMaW51eC4gTGludXggZGlzYWxsb3dzIGNoYW5naW5nIHRoZSBtb2RlIG9mIHN5bWJvbGljCisjIGxpbmtzLiBTb21lIGxpYmMgaW1wbGVtZW50YXRpb25zIGhhdmUgYSBzdHViIGxjaG1vZCBpbXBsZW1lbnRhdGlvbiB0aGF0IGFsd2F5cworIyByZXR1cm5zIGFuIGVycm9yLgoraWYgdGVzdCAiJE1BQ0hERVAiICE9IGxpbnV4OyB0aGVuCisgIEFDX0NIRUNLX0ZVTkMobGNobW9kKQorZmkKKwogIyBGb3Igc29tZSBmdW5jdGlvbnMsIGhhdmluZyBhIGRlZmluaXRpb24gaXMgbm90IHN1ZmZpY2llbnQsIHNpbmNlCiAjIHdlIHdhbnQgdG8gdGFrZSB0aGVpciBhZGRyZXNzLgogQUNfTVNHX0NIRUNLSU5HKGZvciBjaHJvb3QpCkBAIC00NTIxLDkgKzQ1NTcsMTYgQEAKICAgW0RlZmluZSBpZiBtdndkZWxjaCBpbiBjdXJzZXMuaCBpcyBhbiBleHByZXNzaW9uLl0pCiBmaQogCisjIElzc3VlICMyNTcyMDogbmN1cnNlcyBoYXMgaW50cm9kdWNlZCB0aGUgTkNVUlNFU19PUEFRVUUgc3ltYm9sIG1ha2luZyBvcGFxdWUKKyMgc3RydWN0cyBzaW5jZSB2ZXJzaW9uIDUuNy4gIElmIHRoZSBtYWNybyBpcyBkZWZpbmVkIGFzIHplcm8gYmVmb3JlIGluY2x1ZGluZworIyBbbl1jdXJzZXMuaCwgbmN1cnNlcyB3aWxsIGV4cG9zZSBmaWVsZHMgb2YgdGhlIHN0cnVjdHMgcmVnYXJkbGVzcyBvZiB0aGUKKyMgY29uZmlndXJhdGlvbi4KIEFDX01TR19DSEVDS0lORyh3aGV0aGVyIFdJTkRPVyBoYXMgX2ZsYWdzKQogQUNfQ0FDSEVfVkFMKGFjX2N2X3dpbmRvd19oYXNfZmxhZ3MsCi1BQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPGN1cnNlcy5oPl1dLCBbWworQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWworICAjZGVmaW5lIE5DVVJTRVNfT1BBUVVFIDAKKyAgI2luY2x1ZGUgPGN1cnNlcy5oPgorXV0sIFtbCiAgIFdJTkRPVyAqdzsKICAgdy0+X2ZsYWdzID0gMDsKIF1dKV0sCkBAIC00NTM4LDYgKzQ1ODEsMTcgQEAKICAgW0RlZmluZSBpZiBXSU5ET1cgaW4gY3Vyc2VzLmggb2ZmZXJzIGEgZmllbGQgX2ZsYWdzLl0pCiBmaQogCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIGlzX3BhZCkKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Y3Vyc2VzLmg+XV0sIFtbCisjaWZuZGVmIGlzX3BhZAordm9pZCAqeD1pc19wYWQKKyNlbmRpZgorXV0pXSwKKyAgW0FDX0RFRklORShIQVZFX0NVUlNFU19JU19QQUQsIDEsIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2lzX3BhZCcgZnVuY3Rpb24gb3IgbWFjcm8uKQorICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKyAgW0FDX01TR19SRVNVTFQobm8pXQorKQorCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGlzX3Rlcm1fcmVzaXplZCkKIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Y3Vyc2VzLmg+XV0sIFtbdm9pZCAqeD1pc190ZXJtX3Jlc2l6ZWRdXSldLAogICBbQUNfREVGSU5FKEhBVkVfQ1VSU0VTX0lTX1RFUk1fUkVTSVpFRCwgMSwgRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnaXNfdGVybV9yZXNpemVkJyBmdW5jdGlvbi4pCkBAIC00NTU4LDYgKzQ2MTIsODMgQEAKICAgIEFDX01TR19SRVNVTFQoeWVzKV0sCiAgIFtBQ19NU0dfUkVTVUxUKG5vKV0KICkKKworQUNfTVNHX0NIRUNLSU5HKGZvciBpbW1lZG9rKQorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxjdXJzZXMuaD5dXSwgW1sKKyNpZm5kZWYgaW1tZWRvawordm9pZCAqeD1pbW1lZG9rCisjZW5kaWYKK11dKV0sCisgIFtBQ19ERUZJTkUoSEFWRV9DVVJTRVNfSU1NRURPSywgMSwgRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnaW1tZWRvaycgZnVuY3Rpb24uKQorICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKyAgW0FDX01TR19SRVNVTFQobm8pXQorKQorCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHN5bmNvaykKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Y3Vyc2VzLmg+XV0sIFtbCisjaWZuZGVmIHN5bmNvawordm9pZCAqeD1zeW5jb2sKKyNlbmRpZgorXV0pXSwKKyAgW0FDX0RFRklORShIQVZFX0NVUlNFU19TWU5DT0ssIDEsIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3N5bmNvaycgZnVuY3Rpb24uKQorICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKyAgW0FDX01TR19SRVNVTFQobm8pXQorKQorCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIHdjaGdhdCkKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Y3Vyc2VzLmg+XV0sIFtbCisjaWZuZGVmIHdjaGdhdAordm9pZCAqeD13Y2hnYXQKKyNlbmRpZgorXV0pXSwKKyAgW0FDX0RFRklORShIQVZFX0NVUlNFU19XQ0hHQVQsIDEsIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3djaGdhdCcgZnVuY3Rpb24uKQorICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKyAgW0FDX01TR19SRVNVTFQobm8pXQorKQorCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIGZpbHRlcikKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Y3Vyc2VzLmg+XV0sIFtbCisjaWZuZGVmIGZpbHRlcgordm9pZCAqeD1maWx0ZXIKKyNlbmRpZgorXV0pXSwKKyAgW0FDX0RFRklORShIQVZFX0NVUlNFU19GSUxURVIsIDEsIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2ZpbHRlcicgZnVuY3Rpb24uKQorICAgQUNfTVNHX1JFU1VMVCh5ZXMpXSwKKyAgW0FDX01TR19SRVNVTFQobm8pXQorKQorCitBQ19NU0dfQ0hFQ0tJTkcoZm9yIGhhc19rZXkpCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbI2luY2x1ZGUgPGN1cnNlcy5oPl1dLCBbWworI2lmbmRlZiBoYXNfa2V5Cit2b2lkICp4PWhhc19rZXkKKyNlbmRpZgorXV0pXSwKKyAgW0FDX0RFRklORShIQVZFX0NVUlNFU19IQVNfS0VZLCAxLCBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdoYXNfa2V5JyBmdW5jdGlvbi4pCisgICBBQ19NU0dfUkVTVUxUKHllcyldLAorICBbQUNfTVNHX1JFU1VMVChubyldCispCisKK0FDX01TR19DSEVDS0lORyhmb3IgdHlwZWFoZWFkKQorQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxjdXJzZXMuaD5dXSwgW1sKKyNpZm5kZWYgdHlwZWFoZWFkCit2b2lkICp4PXR5cGVhaGVhZAorI2VuZGlmCitdXSldLAorICBbQUNfREVGSU5FKEhBVkVfQ1VSU0VTX1RZUEVBSEVBRCwgMSwgRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAndHlwZWFoZWFkJyBmdW5jdGlvbi4pCisgICBBQ19NU0dfUkVTVUxUKHllcyldLAorICBbQUNfTVNHX1JFU1VMVChubyldCispCisKK0FDX01TR19DSEVDS0lORyhmb3IgdXNlX2VudikKK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Y3Vyc2VzLmg+XV0sIFtbCisjaWZuZGVmIHVzZV9lbnYKK3ZvaWQgKng9dXNlX2VudgorI2VuZGlmCitdXSldLAorICBbQUNfREVGSU5FKEhBVkVfQ1VSU0VTX1VTRV9FTlYsIDEsIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3VzZV9lbnYnIGZ1bmN0aW9uLikKKyAgIEFDX01TR19SRVNVTFQoeWVzKV0sCisgIFtBQ19NU0dfUkVTVUxUKG5vKV0KKykKICMgbGFzdCBjdXJzZXMgY29uZmlndXJlIGNoZWNrCiBDUFBGTEFHUz0kYWNfc2F2ZV9jcHBmbGFncwogCkBAIC00NzI5LDcgKzQ4NjAsNyBAQAogZG9uZQogCiBBQ19TVUJTVChTUkNESVJTKQotU1JDRElSUz0iUGFyc2VyIEdyYW1tYXIgT2JqZWN0cyBQeXRob24gTW9kdWxlcyBNYWMiCitTUkNESVJTPSJQYXJzZXIgT2JqZWN0cyBQeXRob24gTW9kdWxlcyIKIEFDX01TR19DSEVDS0lORyhmb3IgYnVpbGQgZGlyZWN0b3JpZXMpCiBmb3IgZGlyIGluICRTUkNESVJTOyBkbwogICAgIGlmIHRlc3QgISAtZCAkZGlyOyB0aGVuCmRpZmYgLS1naXQgYS9kYXJ3aW5feDg2XzY0L3B5Y29uZmlnL3B5Y29uZmlnLmggYi9kYXJ3aW5feDg2XzY0L3B5Y29uZmlnL3B5Y29uZmlnLmgKaW5kZXggYjhmYWVmOC4uN2Y4MzRjZSAxMDA2NDQKLS0tIGEvZGFyd2luX3g4Nl82NC9weWNvbmZpZy9weWNvbmZpZy5oCisrKyBiL2Rhcndpbl94ODZfNjQvcHljb25maWcvcHljb25maWcuaApAQCAtOTIsNiArOTIsOSBAQAogLyogRGVmaW5lIGlmIHBvbGwoKSBzZXRzIGVycm5vIG9uIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4gKi8KIC8qICN1bmRlZiBIQVZFX0JST0tFTl9QT0xMICovCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3JhbmRvbS5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9TWVNfUkFORE9NX0ggMQorCiAvKiBEZWZpbmUgaWYgdGhlIFBvc2l4IHNlbWFwaG9yZXMgZG8gbm90IHdvcmsgb24geW91ciBzeXN0ZW0gKi8KIC8qICN1bmRlZiBIQVZFX0JST0tFTl9QT1NJWF9TRU1BUEhPUkVTICovCiAKZGlmZiAtLWdpdCBhL2xpbnV4X3g4Nl82NC9weWNvbmZpZy9weWNvbmZpZy5oIGIvbGludXhfeDg2XzY0L3B5Y29uZmlnL3B5Y29uZmlnLmgKaW5kZXggMGI3Mjk0Ni4uMjEwNDg0ZCAxMDA2NDQKLS0tIGEvbGludXhfeDg2XzY0L3B5Y29uZmlnL3B5Y29uZmlnLmgKKysrIGIvbGludXhfeDg2XzY0L3B5Y29uZmlnL3B5Y29uZmlnLmgKQEAgLTkyLDYgKzkyLDkgQEAKIC8qIERlZmluZSBpZiBwb2xsKCkgc2V0cyBlcnJubyBvbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuICovCiAvKiAjdW5kZWYgSEFWRV9CUk9LRU5fUE9MTCAqLwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zeXNtYWNyb3MuaD4gaGVhZGVyIGZpbGUuICovCisjZGVmaW5lIEhBVkVfU1lTX1NZU01BQ1JPU19IIDEKKwogLyogRGVmaW5lIGlmIHRoZSBQb3NpeCBzZW1hcGhvcmVzIGRvIG5vdCB3b3JrIG9uIHlvdXIgc3lzdGVtICovCiAvKiAjdW5kZWYgSEFWRV9CUk9LRU5fUE9TSVhfU0VNQVBIT1JFUyAqLwogCmRpZmYgLS1naXQgYS9weWNvbmZpZy5oLmluIGIvcHljb25maWcuaC5pbgppbmRleCAwNjJkNDkwLi5mODI4Njc3IDEwMDY0NAotLS0gYS9weWNvbmZpZy5oLmluCisrKyBiL3B5Y29uZmlnLmguaW4KQEAgLTEzMCwxNSArMTMwLDMwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNvcHlzaWduJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0NPUFlTSUdOCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Y3J5cHQuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9DUllQVF9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY3Rlcm1pZCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DVEVSTUlECiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2N0ZXJtaWRfcicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DVEVSTUlEX1IKIAorLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnZmlsdGVyJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0NVUlNFU19GSUxURVIKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxjdXJzZXMuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9DVVJTRVNfSAogCisvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlICdoYXNfa2V5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0NVUlNFU19IQVNfS0VZCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ2ltbWVkb2snIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQ1VSU0VTX0lNTUVET0sKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnaXNfcGFkJyBmdW5jdGlvbiBvciBtYWNyby4gKi8KKyN1bmRlZiBIQVZFX0NVUlNFU19JU19QQUQKKwogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnaXNfdGVybV9yZXNpemVkJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0NVUlNFU19JU19URVJNX1JFU0laRUQKIApAQCAtMTQ4LDYgKzE2MywxOCBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAncmVzaXplX3Rlcm0nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ1VSU0VTX1JFU0laRV9URVJNCiAKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3N5bmNvaycgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DVVJTRVNfU1lOQ09LCisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3R5cGVhaGVhZCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9DVVJTRVNfVFlQRUFIRUFECisKKy8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3VzZV9lbnYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQ1VSU0VTX1VTRV9FTlYKKworLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnd2NoZ2F0JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0NVUlNFU19XQ0hHQVQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBpc2Zpbml0ZScsIGFuZCB0byAwIGlmIHlvdQogICAgZG9uJ3QuICovCiAjdW5kZWYgSEFWRV9ERUNMX0lTRklOSVRFCkBAIC00MTIsOSArNDM5LDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSAnbGNoZmxhZ3MnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTENIRkxBR1MKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsY2htb2QnIGZ1bmN0aW9uLiAqLwotI3VuZGVmIEhBVkVfTENITU9ECi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbGNob3duJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xDSE9XTgogCkBAIC03ODEsNiArODA1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3BvbGwuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfUE9MTF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3JhbmRvbS5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NZU19SQU5ET01fSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9yZXNvdXJjZS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19SRVNPVVJDRV9ICiAKQEAgLTc5Niw2ICs4MjMsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3RhdC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19TVEFUX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvc3lzbWFjcm9zLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3Rlcm1pby5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1NZU19URVJNSU9fSAogCmRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CmluZGV4IDU0MDU0YzIuLjMzY2VjYzYgMTAwNjQ0Ci0tLSBhL3NldHVwLnB5CisrKyBiL3NldHVwLnB5CkBAIC0xMzQ2LDE5ICsxMzQ2LDExIEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdyZXNvdXJjZScpCiAKLSAgICAgICAgICAgICMgU3VuIHllbGxvdyBwYWdlcy4gU29tZSBzeXN0ZW1zIGhhdmUgdGhlIGZ1bmN0aW9ucyBpbiBsaWJjLgotICAgICAgICAgICAgaWYgKGhvc3RfcGxhdGZvcm0gbm90IGluIFsnY3lnd2luJywgJ2F0aGVvcycsICdxbng2J10gYW5kCi0gICAgICAgICAgICAgICAgZmluZF9maWxlKCdycGNzdmMveXBfcHJvdC5oJywgaW5jX2RpcnMsIFtdKSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICAgICAgaWYgKHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsICduc2wnKSk6Ci0gICAgICAgICAgICAgICAgICAgIGxpYnMgPSBbJ25zbCddCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbGlicyA9IFtdCi0gICAgICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignbmlzJywgWyduaXNtb2R1bGUuYyddLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzID0gbGlicykgKQorICAgICAgICAgICAgbmlzID0gc2VsZi5fZGV0ZWN0X25pcyhpbmNfZGlycywgbGliX2RpcnMpCisgICAgICAgICAgICBpZiBuaXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgZXh0cy5hcHBlbmQobmlzKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnbmlzJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1pc3NpbmcuZXh0ZW5kKFsnbmlzJywgJ3Jlc291cmNlJywgJ3Rlcm1pb3MnXSkKIAogICAgICAgICAjIEN1cnNlcyBzdXBwb3J0LCByZXF1aXJpbmcgdGhlIFN5c3RlbSBWIHZlcnNpb24gb2YgY3Vyc2VzLCBvZnRlbgogICAgICAgICAjIHByb3ZpZGVkIGJ5IHRoZSBuY3Vyc2VzIGxpYnJhcnkuCkBAIC0xNDkyLDYgKzE0ODQsOSBAQAogICAgICAgICAgICAgZXhwYXRfaW5jID0gW29zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgc3JjZGlyLCAnTW9kdWxlcycsICdleHBhdCcpXQogICAgICAgICAgICAgZGVmaW5lX21hY3JvcyA9IFsKICAgICAgICAgICAgICAgICAoJ0hBVkVfRVhQQVRfQ09ORklHX0gnLCAnMScpLAorICAgICAgICAgICAgICAgICMgYnBvLTMwOTQ3OiBQeXRob24gdXNlcyBiZXN0IGF2YWlsYWJsZSBlbnRyb3B5IHNvdXJjZXMgdG8KKyAgICAgICAgICAgICAgICAjIGNhbGwgWE1MX1NldEhhc2hTYWx0KCksIGV4cGF0IGVudHJvcHkgc291cmNlcyBhcmUgbm90IG5lZWRlZAorICAgICAgICAgICAgICAgICgnWE1MX1BPT1JfRU5UUk9QWScsICcxJyksCiAgICAgICAgICAgICBdCiAgICAgICAgICAgICBleHBhdF9saWIgPSBbXQogICAgICAgICAgICAgZXhwYXRfc291cmNlcyA9IFsnZXhwYXQveG1scGFyc2UuYycsCkBAIC0yMTU0LDYgKzIxNDksNTUgQEAKICAgICAgICAgICAgIGV4dC5saWJyYXJpZXMuYXBwZW5kKGZmaV9saWIpCiAgICAgICAgICAgICBzZWxmLnVzZV9zeXN0ZW1fbGliZmZpID0gVHJ1ZQogCisgICAgICAgIGlmIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignSEFWRV9MSUJETCcpOgorICAgICAgICAgICAgIyBmb3IgZGxvcGVuLCBzZWUgYnBvLTMyNjQ3CisgICAgICAgICAgICBleHQubGlicmFyaWVzLmFwcGVuZCgnZGwnKQorCisgICAgZGVmIF9kZXRlY3RfbmlzKHNlbGYsIGluY19kaXJzLCBsaWJfZGlycyk6CisgICAgICAgIGlmIGhvc3RfcGxhdGZvcm0gaW4geyd3aW4zMicsICdjeWd3aW4nLCAncW54Nid9OgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBsaWJzID0gW10KKyAgICAgICAgbGlicmFyeV9kaXJzID0gW10KKyAgICAgICAgaW5jbHVkZXNfZGlycyA9IFtdCisKKyAgICAgICAgIyBicG8tMzI1MjE6IGdsaWJjIGhhcyBkZXByZWNhdGVkIFN1biBSUEMgZm9yIHNvbWUgdGltZS4gRmVkb3JhIDI4CisgICAgICAgICMgbW92ZWQgaGVhZGVycyBhbmQgbGlicmFyaWVzIHRvIGxpYnRpcnBjIGFuZCBsaWJuc2wuIFRoZSBoZWFkZXJzCisgICAgICAgICMgYXJlIGluIHRpcmNwIGFuZCBuc2wgc3ViIGRpcmVjdG9yaWVzLgorICAgICAgICBycGNzdmNfaW5jID0gZmluZF9maWxlKAorICAgICAgICAgICAgJ3JwY3N2Yy95cF9wcm90LmgnLCBpbmNfZGlycywKKyAgICAgICAgICAgIFtvcy5wYXRoLmpvaW4oaW5jX2RpciwgJ25zbCcpIGZvciBpbmNfZGlyIGluIGluY19kaXJzXQorICAgICAgICApCisgICAgICAgIHJwY19pbmMgPSBmaW5kX2ZpbGUoCisgICAgICAgICAgICAncnBjL3JwYy5oJywgaW5jX2RpcnMsCisgICAgICAgICAgICBbb3MucGF0aC5qb2luKGluY19kaXIsICd0aXJwYycpIGZvciBpbmNfZGlyIGluIGluY19kaXJzXQorICAgICAgICApCisgICAgICAgIGlmIHJwY3N2Y19pbmMgaXMgTm9uZSBvciBycGNfaW5jIGlzIE5vbmU6CisgICAgICAgICAgICAjIG5vdCBmb3VuZAorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgaW5jbHVkZXNfZGlycy5leHRlbmQocnBjc3ZjX2luYykKKyAgICAgICAgaW5jbHVkZXNfZGlycy5leHRlbmQocnBjX2luYykKKworICAgICAgICBpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAnbnNsJyk6CisgICAgICAgICAgICBsaWJzLmFwcGVuZCgnbnNsJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgbGlibnNsLWRldmVsOiBjaGVjayBmb3IgbGlibnNsIGluIG5zbC8gc3ViZGlyZWN0b3J5CisgICAgICAgICAgICBuc2xfZGlycyA9IFtvcy5wYXRoLmpvaW4obGliX2RpciwgJ25zbCcpIGZvciBsaWJfZGlyIGluIGxpYl9kaXJzXQorICAgICAgICAgICAgbGlibnNsID0gc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShuc2xfZGlycywgJ25zbCcpCisgICAgICAgICAgICBpZiBsaWJuc2wgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgbGlicmFyeV9kaXJzLmFwcGVuZChvcy5wYXRoLmRpcm5hbWUobGlibnNsKSkKKyAgICAgICAgICAgICAgICBsaWJzLmFwcGVuZCgnbnNsJykKKworICAgICAgICBpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLCAndGlycGMnKToKKyAgICAgICAgICAgIGxpYnMuYXBwZW5kKCd0aXJwYycpCisKKyAgICAgICAgcmV0dXJuIEV4dGVuc2lvbigKKyAgICAgICAgICAgICduaXMnLCBbJ25pc21vZHVsZS5jJ10sCisgICAgICAgICAgICBsaWJyYXJpZXM9bGlicywKKyAgICAgICAgICAgIGxpYnJhcnlfZGlycz1saWJyYXJ5X2RpcnMsCisgICAgICAgICAgICBpbmNsdWRlX2RpcnM9aW5jbHVkZXNfZGlycworICAgICAgICApCisKIAogY2xhc3MgUHlCdWlsZEluc3RhbGwoaW5zdGFsbCk6CiAgICAgIyBTdXBwcmVzcyB0aGUgd2FybmluZyBhYm91dCBpbnN0YWxsYXRpb24gaW50byB0aGUgbGliX2R5bmxvYWQK